:root{font-family:"Microsoft YaHei UI","Segoe UI",sans-serif;color:#e7edf4;background:#101820;font-synthesis:none}*{box-sizing:border-box}html,body{height:100%;margin:0}button,input,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.42;cursor:not-allowed}.topbar{height:68px;display:flex;align-items:center;gap:22px;padding:0 18px;background:#17232d;border-bottom:1px solid #334451}.brand{display:flex;align-items:center;gap:10px;min-width:205px}.brand-mark{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:#26ad91;color:#0b3029;font-weight:900;font-size:24px}.brand strong{display:block;font-size:15px;letter-spacing:.3px}.brand small{display:block;color:#8ca2ae;font-size:11px}.case-title{display:flex;align-items:center;gap:12px;min-width:180px;overflow:hidden;white-space:nowrap}.case-title>span:first-child{overflow:hidden;text-overflow:ellipsis;font-weight:600}.badge{padding:4px 7px;border-radius:5px;color:#94b3bd;background:#263a44;font-size:11px}.top-actions{margin-left:auto;display:flex;align-items:center;gap:7px}.cloud-state{font-size:11px;color:#9bb0b9;margin-right:8px;white-space:nowrap}.button,.tool{border:1px solid #49606b;color:#d5e2e8;background:#263943;border-radius:7px;padding:8px 11px;transition:.15s}.button:hover,.tool:hover{border-color:#7bb7b0;background:#314e54}.button.primary{background:#27aa8b;border-color:#27aa8b;color:#062922;font-weight:700}.button.primary:hover{background:#48c4a7}.button.ghost{background:transparent}.button.danger{color:#ffaaa4;border-color:#89524d;background:transparent}.button.full{display:block;width:100%;margin-top:8px}.button-row{display:flex;gap:7px;margin-top:10px}.button-row .button{flex:1}.layout{display:grid;grid-template-columns:244px minmax(490px,1fr) 304px;height:calc(100vh - 68px);min-height:600px}.case-panel{background:#16212a;border-right:1px solid #334451;display:flex;flex-direction:column;min-height:0;padding:14px 11px 0}.panel-heading,.section-title{display:flex;align-items:center;justify-content:space-between}.panel-heading h2,.section-title h2{font-size:13px;margin:0;color:#c7d6dd}.panel-heading span,.section-title span{font-size:11px;color:#86a2ab}.field,.size-grid input,.inline-field select{width:100%;outline:none;color:#e5eef2;background:#0e1a22;border:1px solid #38505c;border-radius:6px;padding:8px 9px}.field:focus,.size-grid input:focus{border-color:#4ec6aa}.case-panel>.field{margin-top:10px}.case-list{overflow:auto;margin:10px -11px 0;padding:0 6px 15px}.case-item{display:block;width:100%;text-align:left;padding:9px 10px;border:1px solid transparent;border-radius:7px;background:transparent;color:#c9d8df;margin:2px 0}.case-item:hover{background:#213540}.case-item.active{background:#1f4d4c;border-color:#278c7a}.case-item strong{display:block;font-size:12px}.case-item small{display:block;margin-top:3px;color:#8ba3ad;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.workspace{display:flex;flex-direction:column;min-height:0;background:#0e161d}.workspace-toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:48px;padding:6px 10px;border-bottom:1px solid #2b3d47}.mode-group,.toolbar-right{display:flex;align-items:center;gap:5px;flex-wrap:wrap}.tool{font-size:11px;padding:7px 9px;white-space:nowrap}.tool.active{background:#2aa98d;color:#09271f;border-color:#2aa98d;font-weight:700}.inline-field{display:flex;align-items:center;gap:4px;font-size:11px;color:#92a9b2}.inline-field select{width:100px;padding:6px;font-size:11px}.plans{display:grid;grid-template-rows:1fr 1fr;gap:7px;min-height:0;flex:1;padding:8px}.plan-card{min-height:0;display:flex;flex-direction:column;border:1px solid #324651;border-radius:8px;background:#f1f3f0;overflow:hidden}.plan-card[data-floor="1"]{border-color:#267b6d}.plan-label{height:35px;display:flex;align-items:center;gap:8px;padding:3px 11px;background:#edf1ef;color:#263940;border-bottom:1px solid #c5d3d4}.floor-number{background:#334b54;color:#fff;border-radius:4px;padding:3px 5px;font-size:12px;font-weight:700}.plan-card[data-floor="1"] .floor-number{background:#208c76}.plan-label strong{display:block;font-size:11px}.plan-label small{display:block;max-width:400px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:9px;color:#687e82}.plan-hint{margin-left:auto;font-size:10px;color:#829597}.plan-card canvas{width:100%;height:calc(100% - 35px);display:block;touch-action:none;cursor:crosshair}.bottom-status{height:32px;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 12px;border-top:1px solid #32434c;color:#a9bac1;font-size:11px}.bottom-status span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.inspector{background:#18252e;border-left:1px solid #334451;overflow:auto}.section{padding:13px;border-bottom:1px solid #334451}.section-title{margin-bottom:10px}.preview-section{padding-bottom:8px}#preview-3d{display:block;width:100%;height:220px;background:radial-gradient(ellipse at center,#33434b,#17242b);border-radius:7px;cursor:grab}.legend{display:flex;align-items:center;gap:5px;margin-top:7px;color:#99afb7;font-size:10px}.legend-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-left:5px}.legend-dot.wall{background:#248ed9}.legend-dot.virtual{background:#e2963b}.legend-dot.room{background:#29af8d}.size-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.size-grid label,.section label{display:block;font-size:11px;color:#9db1bb}.size-grid input{margin-top:4px}.unit-hint{font-size:11px;color:#95aeb8;line-height:1.5;margin:7px 0}.check-row{display:flex!important;align-items:center;gap:5px;margin-top:8px}#room-editor .field,#axis-editor .field{margin-top:4px}.muted{color:#839aa4;font-size:11px;line-height:1.5}.qc-list{max-height:240px;overflow:auto}.qc-item{font-size:11px;line-height:1.45;padding:6px 8px;margin:5px 0;border-radius:5px;background:#254039;color:#aee8ce}.qc-item.error{background:#4b2d30;color:#ffbab5}.qc-item.warning{background:#4d412d;color:#f3d193}@media(max-width:1250px){.layout{grid-template-columns:190px minmax(460px,1fr) 260px}.topbar{gap:9px}.brand{min-width:160px}.cloud-state{display:none}.plan-hint{display:none}}@media(max-width:950px){.layout{grid-template-columns:160px minmax(420px,1fr)}.inspector{position:absolute;right:0;top:68px;bottom:0;width:255px;z-index:4;opacity:.96}.workspace{margin-right:255px}.case-title{display:none}}
.compact-toggle{display:none}
@media(max-width:950px){
  .layout{grid-template-columns:minmax(0,1fr) 220px}
  .case-panel{display:none;position:absolute;left:0;top:68px;bottom:0;width:220px;z-index:10;box-shadow:12px 0 30px #0008}
  body.queue-open .case-panel{display:flex}
  .compact-toggle{display:block}
  .case-title{display:none}
  .brand{min-width:120px}
  .brand small{display:none}
  .top-actions{gap:3px}
  .top-actions .button{font-size:11px;padding:7px 6px}
  .inspector{position:static;width:auto;opacity:1;min-width:0}
  .workspace{margin-right:0;min-width:0}
  .workspace-toolbar{overflow-y:auto;max-height:100px}
  .plan-card{min-height:200px}
}
@media(max-width:650px){
  .layout{grid-template-columns:minmax(0,1fr);height:auto;min-height:0}
  .workspace{height:calc(100vh - 90px);min-height:620px}
  .inspector{border-left:0;border-top:1px solid #334451}
  .topbar{height:90px;flex-wrap:wrap;gap:4px;padding:5px 8px}
  .top-actions{width:100%;justify-content:flex-end}
  .case-panel{top:90px}
}
.provider-select{font:inherit;font-size:11px;color:#d5e2e8;background:#263943;border:1px solid #49606b;border-radius:7px;padding:8px 6px;max-width:172px}
@media(max-width:950px){.provider-select{max-width:145px;font-size:10px;padding:6px 3px}}

/* Both floors share one viewport, pan, zoom, and 300 mm coordinate grid. */
.plans{display:block;position:relative;flex:1;min-height:0;margin:8px;padding:0;overflow:hidden;border:1px solid #40545a;border-radius:9px;background:#d8e2de}
#plan-canvas{display:block;width:100%;height:100%;touch-action:none;cursor:crosshair}
.canvas-help{position:absolute;left:12px;bottom:12px;pointer-events:none;padding:6px 10px;border-radius:5px;background:rgba(21,43,45,.83);color:#e9f5f1;font-size:11px}
@media(max-width:950px){.plans{min-height:0}}
body.canvas-focus .layout{grid-template-columns:minmax(0,1fr)}
body.canvas-focus .case-panel,body.canvas-focus .inspector{display:none!important}
body.canvas-focus .workspace{margin-right:0;min-width:0}
.zoom-level{min-width:38px;text-align:right;color:#9fc4c3;font-size:11px;font-variant-numeric:tabular-nums}

/* SpaceModal studio theme and canvas-first drawers. */
:root{--paper:#f5f4ef;--white:#fffefa;--ink:#24271f;--muted:#7e8276;--line:#dcded3;--orange:#bd623d;--green:#5c6c4b;--mono:'Cascadia Code',Consolas,monospace;font-family:Arial,'Microsoft YaHei','PingFang SC',sans-serif;color:var(--ink);background:var(--paper)}
body{background:var(--paper);color:var(--ink)}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--orange);outline-offset:2px}
.topbar{height:62px;padding:0 16px;gap:14px;background:var(--paper);border-bottom:1px solid var(--line)}.brand{min-width:0;flex-shrink:0;gap:11px}.brand-mark{display:block;position:relative;width:29px;height:30px;border-radius:0;background:transparent;color:transparent;flex-shrink:0}.brand-mark i{position:absolute;width:18px;height:18px;border:1.5px solid var(--ink);transform:skewY(-27deg)}.brand-mark i:nth-child(1){left:0;top:10px}.brand-mark i:nth-child(2){left:7px;top:6px;background:var(--paper)}.brand-mark i:nth-child(3){left:14px;top:2px;background:var(--paper)}.brand strong{font-size:18px;letter-spacing:-.7px;color:var(--ink)}.brand small{font-size:9px;letter-spacing:.04em;color:var(--muted)}
.case-title{color:var(--ink);font-size:12px}.badge{border:1px solid var(--line);border-radius:0;background:transparent;color:var(--muted)}.top-actions{min-width:0;gap:5px}.cloud-state{color:var(--muted)}
.button,.tool,.provider-select{border:1px solid #c9ccbf;border-radius:0;background:var(--white);color:var(--ink);transition:background .15s,border-color .15s}.button:hover,.tool:hover{border-color:var(--orange);background:#f4ede4}.button.primary{background:var(--ink);border-color:var(--ink);color:var(--paper)}.button.primary:hover{background:var(--orange);border-color:var(--orange)}.button.ghost{background:transparent}.button.danger{background:transparent;border-color:#cfa99c;color:#a34732}.tool.active{background:#e8ebdf;border-color:#8a9876;color:#36462e}.provider-select{max-width:160px}
.layout{display:grid;grid-template-columns:minmax(0,1fr);height:calc(100vh - 62px);min-height:0}.workspace{height:100%;min-width:0;min-height:0;margin:0;background:var(--paper)}.workspace-toolbar{min-height:43px;padding:5px 9px;background:var(--white);border-bottom:1px solid var(--line)}.inline-field{color:#60685a}.inline-field select,.field,.size-grid input{border:1px solid #cdd1c4;border-radius:0;background:var(--white);color:var(--ink)}.field:focus,.size-grid input:focus{border-color:var(--orange)}.plans{margin:5px;border:1px solid #d6dacd;border-radius:0;background:#e8ebe2}.bottom-status{height:29px;border-top:1px solid var(--line);background:var(--paper);color:var(--muted)}.canvas-help{background:rgba(36,39,31,.82);border-radius:0}.zoom-level{color:var(--orange);font-family:var(--mono)}
.case-panel,.inspector{position:fixed;top:62px;bottom:0;z-index:22;box-shadow:0 16px 35px #24271f24;transition:transform .2s ease;background:var(--paper);border-color:var(--line);opacity:1;margin:0}.case-panel{display:flex!important;left:0;width:min(320px,90vw);padding:15px 13px 0;transform:translateX(-105%);flex-direction:column}.inspector{display:block!important;right:0;width:min(330px,90vw);transform:translateX(105%);overflow:auto}body.queue-open .case-panel{transform:translateX(0)}body.inspector-open .inspector{transform:translateX(0)}.drawer-backdrop{display:none;position:fixed;inset:62px 0 0;z-index:21;border:0;background:#24271f37;cursor:default}body.queue-open .drawer-backdrop,body.inspector-open .drawer-backdrop{display:block}
.panel-heading h2,.section-title h2{color:var(--ink);font-size:13px}.panel-heading span,.section-title span,.muted,.unit-hint,.section label{color:var(--muted)}.case-list{margin:10px -13px 0;padding:0 7px 15px}.case-item{color:var(--ink);border-radius:0;border-bottom:1px solid var(--line)}.case-item:hover{background:#eaede3}.case-item.active{background:#e8ebdf;border-color:#8a9876}.case-item small{color:var(--muted)}.section{border-bottom:1px solid var(--line)}.inspector .section{background:var(--paper)}#preview-3d{background:radial-gradient(ellipse at center,#d7ddd1,#e9ebe2);border:1px solid var(--line);border-radius:0}.legend{color:var(--muted)}.qc-item{border-radius:0}
.panel-heading{gap:8px}.pin-drawer-btn{margin-left:auto;padding:5px 8px;border:1px solid var(--line);background:var(--white);color:var(--ink);font-size:10px;white-space:nowrap}.pin-drawer-btn[aria-pressed="true"]{background:#e8ebdf;border-color:#8a9876;color:#36462e}.resize-step-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 12px;color:var(--ink);font-size:11px}.resize-step-row select{min-width:130px;padding:7px;border:1px solid var(--line);background:var(--white);color:var(--ink)}.combined-list-heading{display:flex;align-items:center;justify-content:space-between;margin-top:12px;padding:7px 0;border-top:1px solid var(--line);color:var(--ink);font-size:11px}.combined-list-heading span{color:var(--muted);font-size:10px}.guide-menu-item{display:block;width:100%;padding:8px 9px;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--ink);text-align:left;font-size:12px}.guide-menu-item:hover:not(:disabled){background:#e8ebdf}.guide-menu-item.danger{color:#a34732}.guide-menu-item:disabled{opacity:.5;cursor:not-allowed}
body.queue-pinned .layout{grid-template-columns:260px minmax(0,1fr)}
body.inspector-pinned .layout{grid-template-columns:minmax(0,1fr) 310px}
body.queue-pinned.inspector-pinned .layout{grid-template-columns:260px minmax(0,1fr) 310px}
body.queue-pinned .case-panel,body.inspector-pinned .inspector{position:relative!important;inset:auto!important;z-index:1;width:auto!important;height:100%;min-width:0;transform:none!important;box-shadow:none;opacity:1}
body.queue-pinned .case-panel{display:flex!important;border-right:1px solid var(--line)}
body.inspector-pinned .inspector{display:block!important;border-left:1px solid var(--line)}
body.queue-open:not(.queue-pinned) .drawer-backdrop,body.inspector-open:not(.inspector-pinned) .drawer-backdrop{display:block}
body.queue-pinned.queue-open .drawer-backdrop,body.inspector-pinned.inspector-open .drawer-backdrop{display:none!important}
@media(max-width:950px){body.queue-pinned .layout{grid-template-columns:220px minmax(0,1fr)}body.inspector-pinned .layout{grid-template-columns:minmax(0,1fr) 255px}body.queue-pinned.inspector-pinned .layout{grid-template-columns:205px minmax(0,1fr) 245px}}
@media(max-width:700px){body.queue-pinned .layout{grid-template-columns:190px minmax(0,1fr)}body.inspector-pinned .layout{grid-template-columns:minmax(0,1fr) 220px}body.queue-pinned.inspector-pinned .layout{grid-template-columns:165px minmax(0,1fr) 205px}body.queue-pinned .case-panel,body.inspector-pinned .inspector{height:calc(100vh - 80px)}}
@media(max-width:1100px){.case-title{display:none}.brand small{display:none}.topbar{gap:8px}.top-actions .button{padding:7px 6px;font-size:10px}.provider-select{max-width:135px}}
@media(max-width:700px){.topbar{height:80px;flex-wrap:wrap;align-content:center;gap:5px;padding:4px 7px}.brand strong{font-size:15px}.top-actions{width:100%;justify-content:flex-end}.layout{height:calc(100vh - 80px)}.workspace{height:100%;min-height:0}.case-panel,.inspector{top:80px}.drawer-backdrop{inset:80px 0 0}.workspace-toolbar{max-height:105px;overflow-y:auto}}
.room-batch-controls{display:grid;grid-template-columns:1fr 1fr;gap:6px}.room-batch-controls>.field,.room-batch-controls>.button{min-width:0;margin:0;padding:7px 6px;font-size:11px}.room-batch-controls>#room-list-filter{grid-column:1/-1}.room-batch-shortcuts{grid-column:1/-1;display:flex;gap:6px}.room-batch-shortcuts .button{flex:1;padding:6px;font-size:10px}.room-list{max-height:280px;overflow:auto;margin-top:8px;border-top:1px solid var(--line)}.room-list-row{display:grid;grid-template-columns:18px minmax(65px,.75fr) minmax(105px,1.25fr);align-items:center;gap:5px;padding:5px 0;border-bottom:1px solid var(--line)}.room-list-row>input{margin:0;accent-color:var(--green)}.room-list-pick{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border:0;padding:5px 2px;text-align:left;background:transparent;color:var(--ink);font-size:10px}.room-list-pick:hover,.room-list-pick.active{color:var(--orange);text-decoration:underline}.room-list-type{min-width:0;width:100%;padding:5px 3px;border:1px solid var(--line);border-radius:0;background:var(--white);color:var(--ink);font-size:10px}
.function-layers{max-height:280px;overflow:auto;border-top:1px solid var(--line)}.function-layer{display:grid;grid-template-columns:17px 12px minmax(0,1fr) 24px 17px;align-items:center;gap:7px;min-height:31px;padding:4px 2px;border-bottom:1px solid var(--line);color:var(--ink)}.function-layer.active{background:#eceee5}.function-layer input{margin:0;accent-color:var(--orange)}.layer-swatch{width:12px;height:12px;border:1px solid #25271f88}.layer-name{font-size:11px;font-weight:700}.layer-count{color:var(--muted);font-size:10px;text-align:right;font-family:var(--mono)}.layer-hint{margin:0 0 7px}.room-resize-controls{display:grid;gap:5px;margin-top:10px}.room-resize-controls>div{display:grid;grid-template-columns:minmax(0,1fr) 54px 54px;align-items:center;gap:5px}.room-resize-controls strong{font-size:11px;color:var(--ink)}.room-resize-controls button{padding:5px 3px;border:1px solid var(--line);background:var(--white);color:var(--ink);font-size:10px}.room-resize-controls button:hover{border-color:var(--orange);color:var(--orange)}.resize-hint{margin:4px 0 0;font-size:10px}
#apply-batch-room-type{grid-column:1/-1}.function-layer{cursor:pointer}.function-layer:hover{background:#f0ede4}.function-layer input[type=radio],.function-layer input[type=checkbox]{width:14px;height:14px}
#apply-batch-room-type{grid-column:1/-1}.side-dock{position:fixed;top:50%;z-index:30;transform:translateY(-50%);writing-mode:vertical-rl;border:1px solid #c9ccbf;background:var(--paper);color:var(--ink);padding:12px 8px;font-size:11px;letter-spacing:.08em;box-shadow:0 5px 18px #24271f18;transition:left .18s,right .18s,background .15s}.side-dock:hover{background:#f4ede4;border-color:var(--orange)}.side-dock-left{left:0;border-left:0}.side-dock-right{right:0;border-right:0}body.queue-open .side-dock-left{left:min(320px,90vw)}body.inspector-open .side-dock-right{right:min(330px,90vw)}
.resize-dialog-backdrop{position:fixed;inset:0;z-index:60;display:grid;place-items:center;padding:16px;background:#24271f66}.resize-dialog-backdrop[hidden]{display:none}.resize-dialog{width:min(440px,calc(100vw - 32px));padding:18px;background:var(--paper);border:1px solid var(--line);box-shadow:0 20px 70px #12150f55;color:var(--ink)}.resize-dialog-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.resize-dialog-heading h2{margin:0;font-size:17px}.resize-dialog-heading p{margin:5px 0 0;color:var(--muted);font-size:11px}.resize-dialog-heading #close-resize-dialog{font-size:18px;line-height:1;padding:4px 8px}.resize-current-size{margin:16px 0;padding:10px;background:#ebece4;font-size:12px}.resize-current-size strong{font-family:var(--mono);font-size:14px}.resize-current-size span{padding:0 8px;color:var(--muted)}.resize-edge-list{display:grid;gap:7px}.resize-edge-list>div{display:grid;grid-template-columns:56px 1fr 1fr;align-items:center;gap:7px}.resize-edge-list>div>strong{font-size:12px}.resize-edge-list button{padding:9px 6px;border:1px solid var(--line);background:var(--white);color:var(--ink);font-size:11px}.resize-edge-list button:hover{border-color:var(--orange);color:var(--orange);background:#f4ede4}.resize-dialog>.muted{margin:14px 0 0}.room-context-menu{position:fixed;z-index:80;width:190px;max-height:min(460px,calc(100vh - 16px));overflow:auto;padding:5px;background:var(--paper);border:1px solid var(--line);box-shadow:0 12px 35px #24271f38;color:var(--ink)}.room-context-title{padding:7px 9px;border-bottom:1px solid var(--line);font-size:11px;font-weight:700;color:var(--muted)}.room-context-item{display:grid;grid-template-columns:13px 1fr 16px;align-items:center;gap:8px;width:100%;padding:8px 9px;border:0;background:transparent;color:var(--ink);text-align:left;font-size:12px}.room-context-item:hover{background:#e8ebdf}.room-context-current{color:var(--green);font-weight:700;text-align:right}.room-size-summary{margin:7px 0;color:var(--ink);font-size:11px}.room-size-summary strong{font-family:var(--mono);font-size:12px}

/* Keep recovery controls reachable on narrow screens. */
#save-state{font-size:11px;color:var(--muted);white-space:nowrap;max-width:190px;overflow:hidden;text-overflow:ellipsis;flex-shrink:0}
.top-actions{overflow-x:auto}.top-actions>.button,.top-actions>.provider-select{flex-shrink:0}
@media(max-width:700px){.top-actions{justify-content:flex-start}#save-state{max-width:130px}}

.upload-dialog{width:min(520px,92vw);border:1px solid var(--line);padding:24px;background:var(--paper);color:var(--ink)}.upload-dialog::backdrop{background:#24271f88}.upload-dialog h2{margin-top:0}.upload-dialog p{font-size:12px;line-height:1.6;color:var(--muted)}.upload-dialog label{display:block;font-size:12px;margin:12px 0}.upload-dialog input{display:block;width:100%;margin-top:6px;padding:8px;border:1px solid var(--line);background:var(--white);color:var(--ink)}.upload-sizes{display:grid;grid-template-columns:1fr 1fr;gap:14px}#upload-error{color:#b33}#vision-provider[hidden],#wall-review-btn[hidden]{display:none!important}
