:root{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:#35382f;background:#efede6;font-synthesis:none;--green:#40574a;--line:#deded3;--muted:#7d8175;--panel:#faf9f4}
*{box-sizing:border-box}body{margin:0;display:grid;grid-template-columns:278px minmax(0,1fr);height:100dvh;overflow:hidden}button,input,summary{font:inherit}button,summary{cursor:pointer}button{color:inherit}button:focus-visible,summary:focus-visible,input:focus-visible{outline:2px solid #668b6c;outline-offset:3px}.sidebar{background:var(--panel);border-right:1px solid var(--line);padding:28px 22px 18px;overflow:auto;display:flex;flex-direction:column;gap:21px;z-index:2}.brand{display:flex;gap:12px;align-items:center}.brand-mark{display:grid;place-items:center;width:37px;height:43px;background:var(--green);color:#f8f4e8;border-radius:3px;font-family:serif;font-size:23px}.brand h1{font-size:17px;letter-spacing:.4px;font-weight:600;margin:0 0 6px}.brand p{font-size:11px;letter-spacing:1px;color:var(--muted);margin:0}.version{font-size:11px;letter-spacing:1px;color:#888d7c;border-bottom:1px solid var(--line);padding-bottom:17px;display:flex;justify-content:space-between}.version span{letter-spacing:0}section h2{margin:0 0 11px;font-size:11px;font-weight:500;color:#7a806f;letter-spacing:2px}#floors{display:flex;flex-direction:column;gap:5px}.floor-button{border:0;background:transparent;display:flex;align-items:center;width:100%;gap:13px;text-align:left;padding:11px 12px;border-radius:6px}.floor-button.selected{background:#e6ebe1}.floor-code{font-family:Georgia,serif;font-size:19px;width:28px;color:#6e7a65}.floor-button b{font-weight:500;font-size:13px;display:block;margin-bottom:3px}.floor-button small{font-size:10px;color:var(--muted);display:block}.floor-button:hover{background:#eef0e8}.scheme{border:1px solid var(--line);border-radius:7px;background:transparent;display:flex;text-align:left;align-items:center;gap:9px;padding:12px 9px;width:100%;margin-bottom:8px}.scheme.selected{border-color:#798b72;background:#f1f3ea}.scheme b{display:block;font-size:12px;font-weight:500;white-space:nowrap}.scheme small{display:block;font-size:10px;color:var(--muted);margin-top:5px}.swatches{display:flex;flex-shrink:0}.swatches i{display:block;width:15px;height:30px}.swatches i:first-child{border-radius:3px 0 0 3px}.swatches i:last-child{border-radius:0 3px 3px 0}.check{margin-left:auto;font-size:12px;color:#65805c;visibility:hidden}.selected .check{visibility:visible}.small-note{font-size:10px;line-height:1.8;color:#858a7c;margin:9px 1px 0}.room-list{display:flex;flex-wrap:wrap;gap:6px}.room-list button{border:1px solid var(--line);background:transparent;border-radius:30px;font-size:11px;padding:7px 10px}.room-list button:hover,.room-list button.active{border-color:#71886a;background:#e8eddf}.display-options{display:grid;gap:11px}.display-options label{font-size:11px;display:flex;align-items:center;gap:7px}.display-options input{accent-color:#526e4f}.basis{font-size:11px;color:#7c8275;border-top:1px solid var(--line);padding-top:14px}.basis summary{font-weight:500}.basis ul{padding-left:17px;line-height:1.8}.sidebar-footer{margin-top:auto;font-size:9px;color:#8a907f;display:flex;align-items:center;gap:6px;padding-top:6px}.status-dot{width:5px;height:5px;background:#789768;border-radius:50%}.stage{position:relative;min-width:0;min-height:0;background:#eae7de}.stage-top{position:absolute;left:34px;right:30px;top:28px;display:flex;justify-content:space-between;align-items:flex-start;z-index:1;pointer-events:none}.stage-top>div{pointer-events:auto}.eyebrow{display:block;font-size:10px;letter-spacing:1.8px;color:#7f8675;margin-bottom:11px}.stage-top h2{font-family:"Songti SC","SimSun",serif;font-size:30px;font-weight:400;letter-spacing:4px;margin:0 0 7px}.stage-top p{font-size:12px;color:#747e69;letter-spacing:1px;margin:0}.top-actions{display:flex;gap:7px}.top-actions button{background:#faf9f2e8;border:1px solid #dbddcf;border-radius:5px;padding:9px 12px;font-size:11px}.top-actions button:hover{background:#fffdf5}#viewport{position:absolute;inset:0}#viewport canvas{display:block;width:100%;height:100%;touch-action:none}#loading{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:13px;color:#7a826c;line-height:1.8;text-align:center}.stage-bottom{position:absolute;bottom:20px;left:30px;right:30px;display:flex;justify-content:space-between;gap:12px;pointer-events:none;font-size:10px;color:#7d8572}.model-note{color:#939985}#walk-pad{position:absolute;right:28px;bottom:55px;text-align:center}#walk-pad[hidden]{display:none}#walk-pad button{width:40px;height:40px;border:1px solid #d8dccd;background:#faf9f1e8;border-radius:5px;margin:2px;color:#506247;font-size:18px;touch-action:none}#toast{position:absolute;bottom:72px;left:50%;transform:translateX(-50%);background:#3b4c3eea;color:#fffdf4;border-radius:5px;padding:10px 16px;font-size:12px;max-width:90%;text-align:center}
@media(max-width:950px){body{grid-template-columns:228px minmax(0,1fr)}.sidebar{padding:22px 15px;gap:18px}.stage-top{left:22px;right:18px}.top-actions{gap:4px}.top-actions button{padding:8px}.stage-top h2{font-size:25px}.model-note{display:none}}
@media(max-width:640px){body{display:flex;flex-direction:column;height:100dvh}.sidebar{order:2;height:240px;flex-shrink:0;border-right:0;border-top:1px solid var(--line);display:grid;grid-template-columns:1fr 1fr;gap:13px;padding:14px 16px;overflow:auto}.brand,.version,.sidebar-footer,.basis,.small-note{display:none}.sidebar section{min-width:0}.sidebar section h2{font-size:10px;margin-bottom:7px}.floor-button{padding:7px 9px;gap:8px}.floor-code{font-size:16px}.floor-button b{font-size:11px}.floor-button small{font-size:9px}.scheme{padding:10px 6px;gap:6px}.scheme b{font-size:11px}.swatches i{width:10px;height:24px}.stage{order:1;flex:1;min-height:300px}.stage-top{top:17px;left:18px;right:12px}.eyebrow{font-size:9px;margin-bottom:7px}.stage-top h2{font-size:22px}.stage-top p{font-size:10px}.top-actions button{font-size:10px;padding:7px}.top-actions{flex-wrap:wrap;max-width:155px;justify-content:flex-end}.stage-bottom{bottom:11px;left:18px;font-size:9px}.room-section,.display-options{padding-bottom:8px}#walk-pad{right:12px;bottom:40px}}
.design-notes{border-top:1px solid var(--line);padding-top:15px}.note-toggle{font-size:11px;display:flex;align-items:center;gap:5px}.note-toggle input{accent-color:var(--green)}#note-count{float:right;letter-spacing:0;color:#6d8066}#notes-hint{font-size:11px;line-height:1.8;color:#737d6c;margin:9px 0}.design-notes summary{font-size:11px;color:#52644c;padding:5px 0}#design-note-list{display:grid;gap:5px;margin-top:8px}#design-note-list button{display:flex;text-align:left;gap:7px;border:1px solid #dee3d5;background:#fffef8;border-radius:5px;padding:8px;font-size:11px;line-height:1.6}#design-note-list button span:first-child{font-size:10px;color:#657960;white-space:nowrap}#design-note-list button[aria-pressed=true]{border-color:#69815d;background:#eef2e7}
#design-note[data-pinned=false]{pointer-events:none}#design-note[data-pinned=false] .note-actions,#design-note[data-pinned=false] #close-note{pointer-events:auto}
#note-markers{position:absolute;inset:0;pointer-events:none;z-index:2;overflow:hidden}#note-markers[hidden]{display:none}.note-marker{position:absolute;left:0;top:0;pointer-events:auto;border:1px solid #8c9c7c;background:#fafcf3ef;color:#3d5739;border-radius:20px;padding:5px 8px;font-size:10px;letter-spacing:.3px;box-shadow:0 2px 7px #273c2520;white-space:nowrap;cursor:help}.note-marker[hidden]{display:none}.note-marker:hover,.note-marker.active,.note-marker:focus-visible{background:#405b41;color:white;border-color:#405b41}.note-marker.active{box-shadow:0 0 0 4px #405b4125}
#design-note{position:absolute;z-index:4;left:22px;bottom:47px;width:min(335px,calc(100% - 44px));max-height:calc(100% - 172px);overflow:auto;background:#fffef7f5;border:1px solid #cdd7c2;border-radius:11px;box-shadow:0 12px 40px #22321d25;padding:17px 18px;color:#36432e;backdrop-filter:blur(10px)}#design-note[hidden]{display:none}.note-card-top{display:flex;align-items:center;gap:8px;font-size:10px;color:#6b7b61}#note-id{font-weight:600;letter-spacing:.4px}#note-status{padding:3px 6px;background:#edf1e5;border-radius:3px}#note-status[data-status=fixed]{background:#e1edda;color:#44613b}#note-status[data-status=check]{background:#f3ecd9;color:#886b39}#close-note{margin-left:auto;border:0;background:transparent;font-size:20px;padding:0 1px;color:#7e8d74}#note-title{font-size:17px;font-weight:500;line-height:1.5;margin:10px 0 4px}#note-mode{font-size:10px;color:#8a927e;margin:0 0 14px}#design-note dl{margin:0}#design-note dt{font-size:10px;letter-spacing:1px;color:#7c886e;margin:12px 0 4px}#design-note dd{margin:0;font-size:12px;line-height:1.85}.note-actions{display:flex;gap:8px;border-top:1px solid #e2e7d9;margin-top:15px;padding-top:13px}.note-actions button{border:1px solid #c7d2bc;background:#f5f7ee;border-radius:5px;font-size:11px;padding:8px 10px}.note-actions #copy-note{background:#445f43;color:#fffef4;border-color:#445f43}#feedback-template{margin-top:12px;width:100%;min-height:160px;resize:vertical;border:1px solid #d2dcc6;border-radius:5px;background:#fbfcf4;color:#45523c;padding:9px;font-size:11px;line-height:1.6}#walk-pad{z-index:3}#toast{z-index:5}
@media(max-width:640px){.design-notes{grid-column:1/-1}.note-marker{font-size:9px;padding:4px 6px}#design-note{left:10px;bottom:36px;width:calc(100% - 20px);max-height:calc(100% - 135px);padding:12px 14px}#note-title{font-size:15px}#design-note dd{font-size:11px}#design-note dt{margin-top:8px}.note-actions{margin-top:10px;padding-top:10px}}

/* v0.4: mobile viewer with an on-demand settings sheet. */
.mobile-toolbar,.mobile-panel-heading,#settings-backdrop{display:none}
@media(max-width:760px), (max-width:1000px) and (max-height:500px){
 body{display:block;height:100dvh;overflow:hidden}
 .stage{position:absolute;inset:0 0 calc(68px + env(safe-area-inset-bottom)) 0;min-height:0}
 .mobile-toolbar{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));position:fixed;bottom:0;left:0;right:0;z-index:8;background:#faf9f4;border-top:1px solid #d5dbcc;padding:6px max(8px,env(safe-area-inset-right)) calc(6px + env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left));gap:4px}
 .mobile-toolbar button{min-height:55px;border:0;border-radius:10px;background:transparent;padding:6px 2px;font-size:12px}
 .mobile-toolbar small{display:block;font-size:10px;margin-top:5px;color:#7a8470}
 .mobile-toolbar button[aria-expanded=true]{background:#e5ecdf;color:#355537}
 .sidebar{display:none;position:fixed;left:0;right:0;bottom:calc(68px + env(safe-area-inset-bottom));height:auto;max-height:min(62dvh,530px);z-index:7;overflow:auto;overscroll-behavior:contain;border:1px solid #d4dccb;border-radius:20px 20px 0 0;padding:0 max(18px,env(safe-area-inset-right)) 20px max(18px,env(safe-area-inset-left));box-shadow:0 -8px 30px #263c241a}
 body[data-mobile-panel] .sidebar{display:block}
 .mobile-panel-heading{display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:1;background:var(--panel);padding:12px 0 8px}
 .mobile-panel-heading h2{font-size:17px;font-weight:500;margin:0}
 #close-settings{border:0;border-radius:9px;background:#e7eddf;color:#405b3b;min-height:44px;padding:9px 16px;font-size:13px}
 .sidebar .brand,.sidebar .version,.sidebar .sidebar-footer,.sidebar .basis,.sidebar .small-note,.sidebar>[data-panel]{display:none}
 body[data-mobile-panel=floors] [data-panel=floors],body[data-mobile-panel=rooms] [data-panel=rooms],body[data-mobile-panel=appearance] [data-panel=appearance],body[data-mobile-panel=notes] [data-panel=notes]{display:block}
 .sidebar section h2{font-size:12px;margin:14px 0 10px;letter-spacing:1px}
 body[data-mobile-panel] #settings-backdrop{display:block;position:fixed;inset:0;border:0;background:#27332418;z-index:6;width:100%;height:100%}
 #settings-backdrop[hidden]{display:none!important}
 #floors{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
 .floor-button{padding:12px;min-height:66px;border:1px solid var(--line);gap:10px}
 .floor-code{font-size:21px}.floor-button b{font-size:14px}.floor-button small{font-size:11px;line-height:1.5}
 .scheme{padding:13px;min-height:65px}.scheme b{font-size:14px}.scheme small{font-size:11px}.swatches i{width:16px;height:30px}
 .room-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.room-list button{font-size:14px;min-height:48px;border-radius:12px}
 .display-options label,.note-toggle{min-height:48px;font-size:13px}.display-options input,.note-toggle input{width:19px;height:19px;flex-shrink:0}
 .design-notes{border:0;padding-top:0}#notes-hint{font-size:12px}.design-notes summary{min-height:44px;padding:12px 0;font-size:13px}
 #design-note-list button{min-height:48px;font-size:13px;padding:10px}#design-note-list button span:first-child{font-size:12px}
 .stage-top{top:calc(12px + env(safe-area-inset-top));left:max(16px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));gap:8px}
 .stage-top h2{font-size:25px}.eyebrow{font-size:10px;margin-bottom:7px}.stage-top p{font-size:11px}.top-actions{display:flex;flex-wrap:wrap;gap:5px;max-width:158px;justify-content:flex-end}
 .top-actions button{font-size:12px;min-height:44px;padding:8px 10px;border-radius:9px}
 .stage-bottom{left:max(16px,env(safe-area-inset-left));right:16px;bottom:13px;font-size:11px;line-height:1.5}.model-note{display:none}
 #walk-pad{right:max(12px,env(safe-area-inset-right));bottom:44px}#walk-pad button{width:48px;height:48px;border-radius:10px;font-size:22px;margin:3px}
 .note-marker{min-width:48px;min-height:36px;font-size:11px;padding:7px 8px}
 #design-note{left:8px;bottom:8px;width:calc(100% - 16px);max-height:min(54dvh,430px);padding:12px 16px;border-radius:16px;overscroll-behavior:contain}
 #note-title{font-size:17px}#design-note dd{font-size:13px;line-height:1.75}#design-note dt{font-size:11px}#close-note{min-width:44px;min-height:44px}.note-actions{position:sticky;bottom:-12px;background:#fffef7;padding:10px 0;margin-top:12px}.note-actions button{min-height:44px;font-size:12px}#toast{bottom:70px}
}
@media(max-width:1000px) and (max-height:500px){
 .stage-top p,.eyebrow{display:none}.stage-top h2{font-size:22px}.top-actions{max-width:none}.sidebar{max-height:calc(100dvh - 88px)}
 #design-note{left:8px;bottom:8px;width:min(370px,calc(100% - 16px));max-height:calc(100% - 72px)}
 #walk-pad{bottom:30px}#walk-pad button{width:44px;height:44px}.stage-bottom{font-size:10px;bottom:8px}
}
