/* Shared multi-station workspace. The same controls dock and float without remounting. */
.open-office #openOfficePanel{display:grid;grid-template-columns:246px minmax(0,1fr);gap:16px;align-items:start}
.open-office #openOfficePanel[hidden]{display:none!important}
.open-office #openOfficePanel>.office-heading{grid-column:1/-1;margin:0}
.open-office .office-heading .eyebrow{color:#617568;letter-spacing:1.8px;margin:0 0 6px}
.open-office .office-heading input{font-size:24px}
.open-office .office-heading .office-actions{gap:5px;align-items:center}
.open-office .office-heading .office-actions button{padding:9px 13px;font-size:13px}
.open-office #officeExpand{border-color:#c6bda8;background:#f8f4eb}
.office-control-dock{position:sticky;top:16px;grid-column:1;grid-row:2;min-width:0;border:1px solid #cfdbd1;border-radius:14px;background:#f8faf6;box-shadow:0 6px 24px #213c2e08;overflow:hidden;transition:box-shadow .22s,background .22s}
.office-dock-title{display:flex;justify-content:space-between;align-items:center;padding:12px 13px;border-bottom:1px solid #d8e2d8;background:#eaf0e8;gap:8px}
.office-dock-title>span{font-size:12px;font-weight:750;letter-spacing:2px;color:#264238}
.office-dock-title>.office-dock-brand{min-width:0;line-height:1.15;letter-spacing:.8px}
.office-dock-brand small{display:block;font-size:8px;letter-spacing:0;text-transform:none;margin-top:4px;line-height:1.3}
.office-dock-title button{background:transparent;border:0;font:inherit;color:#53665b;font-size:11px;cursor:pointer;min-height:32px}
#officeDockBody{max-height:calc(100dvh - 145px);overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;padding:12px}
#officeDockBody[hidden]{display:none!important}
.office-workflow{display:grid;grid-template-columns:1fr;gap:6px;margin-bottom:14px}
.office-control-dock button{font:inherit;cursor:pointer;touch-action:manipulation}
.office-workflow button{border:1px solid #d5dfd2;background:white;border-radius:7px;padding:10px 12px;text-align:left;font-size:13px;font-weight:600;color:#324b3b;min-height:40px}
.office-workflow button:hover{background:#e9f0e5;border-color:#9cad95}
.office-control-group{border-top:1px solid #dbe3d7;padding-top:12px;margin:12px 0}
.office-control-group h3{font-size:13px;margin:0 0 10px;letter-spacing:.1px;color:#203f31}
.office-control-group label{font-size:11px;color:#65775f;margin:0 0 5px}
.office-control-group select{font-size:12px;padding:9px 7px;min-height:38px;margin-bottom:10px;background:white}
.office-navigation-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;margin-bottom:10px}
.office-navigation-grid button,.office-button-grid button,.office-edit-modes button{border:1px solid #cad6c7;background:#fff;color:#334c3b;border-radius:7px;font-size:12px;padding:9px 5px;min-height:38px;line-height:1.2}
.office-navigation-grid button{font-size:20px}
.office-navigation-grid button[data-office-action=fit]{font-size:12px;font-weight:700;background:#e6eee2}
.office-button-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}
.office-button-grid button:hover,.office-navigation-grid button:hover{background:#edf3e8;border-color:#94aa8c}
.office-control-dock button:disabled{opacity:.4;cursor:default}
.office-edit-modes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:3px;padding:3px;background:#e9eee4;border-radius:8px}
.office-edit-modes button{padding:8px 3px;background:transparent;border-color:transparent}
.office-edit-modes button.active{background:#2c4c3a;color:white;border-color:#2c4c3a;box-shadow:0 2px 5px #122e1c12}
.office-selection-summary{font-size:11px;line-height:1.4;color:#68795f;min-height:30px;margin:9px 0}
.office-snap-controls{display:flex;align-items:center;gap:8px;margin-top:10px}
.office-snap-controls label{flex:1;margin:0}
.office-snap-controls select{width:83px;margin:0}
.office-shortcut-guide{border-top:1px solid #d9e3d3;padding-top:12px}
.office-shortcut-guide summary,.office-layout-tools summary{font-size:12px;font-weight:650;line-height:1.5;color:#415c40}
.office-shortcut-guide dl{margin:12px 0 0;font-size:11px;line-height:1.5}
.office-shortcut-guide dt{font-weight:650;color:#304d38;margin-top:10px}
.office-shortcut-guide dd{margin:2px 0 0;color:#708067}
.office-layout-tools{margin-top:12px}
.office-layout-tools .office-toolbar{display:flex;flex-direction:column;align-items:stretch;padding:8px 0;background:transparent}
.office-layout-tools .office-toolbar button{font-size:12px;text-align:left;min-height:36px;padding:8px}
.office-layout-tools .office-toolbar label{font-size:12px;justify-content:space-between;margin:6px 0}
.office-layout-tools .office-toolbar select{width:118px;font-size:12px}
.office-layout-tools .office-element-picker{display:block}
.office-layout-tools .office-element-picker label{font-size:11px}
.office-layout-tools .office-element-picker select{min-width:0;font-size:12px}
.office-layout-tools #officeHint{font-size:11px;line-height:1.6;margin-bottom:0}
.office-stage{grid-column:2;grid-row:2;position:relative;min-width:0;min-height:580px;border:1px solid #cbd7cb;border-radius:14px;overflow:hidden;background:radial-gradient(ellipse at 50% 38%,#f5f7f0,#e9eee3)}
.open-office #officeStage #viewport{width:100%;height:clamp(580px,calc(100dvh - 230px),850px);margin:0;border:0;border-radius:0;background:transparent}
.open-office #officeStage #officePlanWrap{margin:0;border:0;border-radius:0;background:#f7faf3}
.open-office #officeStage #officePlan{height:clamp(580px,calc(100dvh - 230px),850px);background:#f6faf3;cursor:grab}
#officeStage [hidden]{display:none!important}
.open-office #officeStage #expandViewer{display:none}
.office-interaction-hint{position:absolute;bottom:10px;left:10px;right:10px;pointer-events:none;width:fit-content;max-width:calc(100% - 20px);margin:0;padding:8px 11px;border:1px solid #d4dfcc;border-radius:8px;background:#f9fcf1ed;color:#586e50;font-size:11px;line-height:1.4;box-shadow:0 2px 8px #30452c08}
#officeStage:has(#officePlanWrap:not([hidden])) .office-interaction-hint{bottom:43px}
#officeStage canvas{outline:none}
#officeStage canvas:focus-visible{outline:2px solid #8ba57b;outline-offset:-3px}
#officeStage .office-dragging{cursor:grabbing!important}
#officePlan .office-selected>rect,#officePlan .office-selected>polygon,#officePlan .office-selected>ellipse{stroke:#ed7135!important;stroke-width:2.5!important;fill:#ffd2ae!important}
.open-office #openOfficePanel>.office-inspector{grid-column:1/-1;margin:0;padding:0}
.open-office #openOfficePanel>.office-inspector>form,.open-office .office-add{background:#eff4e9;border-color:#d5dfce}
.open-office .office-inspector input,.open-office .office-inspector select{background:#fffefa}
#officeInspectorClose{display:none}
.open-office .workspace>.viewer-tools{margin-top:16px;background:#f6f9f0;border:1px solid #d5dfcf;border-radius:12px;padding:12px}
.office-context-menu{position:fixed;z-index:150;width:224px;max-width:calc(100vw - 16px);max-height:calc(100dvh - 16px);overflow:auto;padding:7px;border:1px solid #bdcfb7;border-radius:12px;background:#fbfdf8;box-shadow:0 15px 55px #213d2d40}
.office-context-menu[hidden]{display:none!important}
.office-context-menu strong{display:block;padding:8px 9px;font-size:11px;letter-spacing:.5px;color:#6b7d61;border-bottom:1px solid #e1e8da;margin-bottom:5px}
.office-context-menu button{display:block;width:100%;text-align:left;border:0;background:transparent;border-radius:5px;font:inherit;font-size:13px;padding:8px 10px;color:#294830;cursor:pointer;min-height:34px}
.office-context-menu button:hover,.office-context-menu button:focus-visible{background:#e8f1df;outline:0}
.office-context-menu button:disabled{opacity:.35;cursor:default}
.office-control-dock button:focus-visible,.office-heading button:focus-visible{outline:3px solid #ed8a48;outline-offset:2px}
@media(min-width:981px){
 .open-office.presentation .workspace{position:static;inset:auto;padding:0}
 .open-office.presentation .workspace>#openOfficePanel{display:grid!important;position:fixed;inset:0;z-index:3;padding:0;background:#e9eee3;pointer-events:none}
 .open-office.presentation #openOfficePanel>.office-heading{position:fixed;left:16px;right:16px;top:12px;z-index:10;pointer-events:auto;align-items:center;background:#f7faefed;backdrop-filter:blur(10px);border:1px solid #ccd9c5;border-radius:11px;padding:9px 13px;min-height:42px;box-sizing:border-box;gap:8px}
 .open-office.presentation .office-heading .eyebrow{display:none}
 .open-office.presentation .office-heading input{font-size:18px;width:250px}
 .open-office.presentation .office-heading .office-actions button{min-height:34px;padding:7px 11px}
 .open-office.presentation #officeStage{position:fixed;inset:0;grid-area:auto;border:0;border-radius:0;pointer-events:auto;min-height:0}
 .open-office.presentation #officeStage #viewport{position:absolute;inset:0;width:100%;height:100dvh;max-height:none;margin:0;z-index:0}
 .open-office.presentation #officeStage #officePlanWrap{position:absolute;inset:0;z-index:0}
 .open-office.presentation #officeStage #officePlan{height:100dvh}
 .open-office.presentation #officeStage .office-legend{position:absolute;bottom:0;left:272px;right:16px;background:#edf3e7db;border:0}
 .open-office.presentation #officeControlDock{position:fixed;top:78px;left:16px;width:240px;bottom:auto;max-height:calc(100dvh - 94px);grid-area:auto;pointer-events:auto;z-index:9;background:#f8fbf1f2;box-shadow:0 8px 32px #213f2a1c;backdrop-filter:blur(12px)}
 .open-office.presentation #officeDockBody{max-height:calc(100dvh - 160px)}
 .open-office.presentation .office-interaction-hint{left:272px;bottom:16px;right:16px;max-width:calc(100% - 290px)}
 .open-office.presentation #officeStage:has(#officePlanWrap:not([hidden])) .office-interaction-hint{bottom:48px}
 .open-office.presentation #openOfficePanel>.office-inspector,.open-office.presentation #configuratorPanel,.open-office.presentation .workspace>.viewer-tools{display:none!important}
 .open-office.presentation.office-inspector-open #openOfficePanel>.office-inspector{display:block!important;position:fixed;right:16px;top:78px;bottom:16px;width:310px;max-width:calc(100vw - 320px);z-index:10;overflow:auto;overscroll-behavior:contain;pointer-events:auto;background:#f7faefef;backdrop-filter:blur(12px);padding:14px;box-sizing:border-box;border:1px solid #cedbc6;border-radius:12px;box-shadow:0 6px 30px #213f2a1c}
 .open-office.presentation.office-inspector-open #officeInspectorClose{display:block;position:sticky;top:0;z-index:2;background:#2b4c35;color:white;margin:0 0 12px;width:100%}
 /* The shared launcher owns disclosure state in both workspaces. Do not gate
    this panel on the office inspector's independent navigation class. */
 .open-office.presentation:not(.configurator-collapsed) #configuratorPanel:not([hidden]){display:block!important;top:78px;right:16px;bottom:16px;z-index:11;pointer-events:auto}
 .open-office.presentation .render-quality{left:auto;right:16px;top:83px}
}
@media(max-width:1100px) and (min-width:981px){
 .open-office #openOfficePanel{grid-template-columns:214px minmax(0,1fr);gap:10px}
 .open-office .office-heading input{font-size:20px;max-width:260px}
 .open-office .office-heading .office-actions button{font-size:12px;padding:8px}
 #officeDockBody{padding:9px}
}
@media(max-width:980px){
 .open-office #openOfficePanel{grid-template-columns:1fr;gap:12px}
 .open-office #openOfficePanel>.office-heading{grid-column:1;gap:10px}
 .office-control-dock{grid-column:1;grid-row:3;position:relative;top:0}
 .office-stage{grid-column:1;grid-row:2;min-height:460px}
 .open-office #officeStage #viewport,.open-office #officeStage #officePlan{height:460px}
 #officeDockBody{max-height:none;display:grid;grid-template-columns:1fr 1fr;gap:12px}
 .office-workflow{grid-column:1/-1;grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:0}
 .office-workflow button{text-align:center;font-size:12px;padding:9px 5px}
 .office-control-group{margin:0}
 .office-shortcut-guide,.office-layout-tools{grid-column:1/-1}
 .open-office #officeExpand{display:none}
}
@media(max-width:600px){
 .open-office .office-heading{align-items:stretch}
 .open-office .office-heading .office-actions{width:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
 .open-office .office-heading input{width:100%;font-size:21px}
 .office-stage{min-height:390px}
 .open-office #officeStage #viewport,.open-office #officeStage #officePlan{height:390px}
 .office-control-dock{border-radius:11px}
 .office-button-grid button,.office-navigation-grid button,.office-edit-modes button{min-height:42px}
 .office-interaction-hint{font-size:10px;padding:7px}
 .office-context-menu button{min-height:40px}
}
@media(prefers-reduced-motion:reduce){.office-control-dock{transition:none}}

/* Keep one scrollport inside the visible ribbon, with room to bring the last
   option above floating tools and the browser edge. */
@media(min-width:981px){
 .office-control-dock,.open-office.presentation #officeControlDock{display:flex;flex-direction:column;box-sizing:border-box;height:var(--control-rail-available,calc(100dvh - 110px));max-height:var(--control-rail-available,calc(100dvh - 110px))}
 .office-dock-title{flex:none}
 #officeDockBody,.open-office.presentation #officeDockBody{flex:1;min-height:0;max-height:none;padding-bottom:clamp(140px,22dvh,220px);scroll-padding-bottom:24px}
 .office-control-dock:has(#officeDockBody[hidden]),.open-office.presentation #officeControlDock:has(#officeDockBody[hidden]){height:auto}
}
@media(max-width:980px){#officeDockBody{padding-bottom:100px}}

.office-control-group .office-graphics-label{margin:12px 0 5px}.office-control-group #officeGraphics{margin-bottom:3px}.office-graphics-status{font-size:11px;color:#6c7d61}

/* Direct room editing: dimensions remain clickable in either canvas view. */
.office-room-dimensions{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:9;user-select:none;-webkit-user-select:none}
.office-room-dimension{position:absolute;transform:translate(-50%,-50%);pointer-events:auto;min-height:30px;padding:4px 9px;border:1px solid #abc7cf;border-radius:8px;background:#f6fcfff0;color:#204650;box-shadow:0 2px 9px #162d3a20;font:600 12px/1.25 system-ui,sans-serif;white-space:nowrap;cursor:pointer;touch-action:manipulation}
.office-room-dimension:hover,.office-room-dimension:focus-visible,.office-room-dimension.active{background:#fff5e8;border-color:#e18544;color:#703c18;outline:2px solid #efad6659;outline-offset:2px}
.office-room-dimension[hidden],.office-room-dimensions[hidden]{display:none!important}
.office-plan-dimension{cursor:pointer;user-select:none;-webkit-user-select:none}
.office-plan-dimension:hover rect,.office-plan-dimension:focus-visible rect{fill:#fff2db;stroke:#df9b51;stroke-width:1.5}
.office-plan-dimension:focus-visible{outline:none}
.office-wall-dragging{cursor:move!important;touch-action:none;user-select:none!important;-webkit-user-select:none!important}
.office-dimension-dialog{max-width:min(440px,calc(100vw - 32px));padding:25px;border:1px solid #acc4c9;border-radius:18px;background:#fbfdfb;color:#18383d;box-shadow:0 24px 90px #001c3755}
.office-dimension-dialog::backdrop{background:#10293285;backdrop-filter:blur(3px)}
.office-dimension-dialog select{width:100%;min-width:0;padding:12px;border:1px solid #a7c4ca;border-radius:8px;background:#fff;color:inherit;font:inherit;font-size:15px}.office-dimension-dialog [data-wall-thickness-scope][hidden]{display:none}
.office-dimension-dialog form{display:grid;gap:13px}.office-dimension-dialog h2{font-size:21px;margin:0}.office-dimension-dialog p{margin:0}.office-dimension-dialog label{display:grid;gap:7px;font-weight:600}.office-dimension-dialog input{padding:12px;border:1px solid #a7c4ca;border-radius:8px;font-size:17px;user-select:text;-webkit-user-select:text}.office-dimension-dialog .small{font-size:12px;line-height:1.5;color:#527075}.office-dimension-close{justify-self:end;min-width:32px;min-height:32px;padding:2px 8px;font-size:22px}.office-dimension-error{min-height:1em;font-size:13px;color:#ac3c18}.office-dimension-dialog .eyebrow{color:#648084;font-size:10px;letter-spacing:.12em}

/* The office has its own navigation rail. Keep its panel out of the private
   viewer's 220px grid cell, and align browsing and exact placement with the
   exposed canvas column below it. */
@media(min-width:981px){
 .open-office{--office-rail-width:246px;--office-rail-gap:16px}
 .open-office:not(.presentation) .workspace{grid-template-columns:var(--office-rail-width) minmax(0,1fr);gap:var(--office-rail-gap)}
 .open-office:not(.presentation) .workspace>#openOfficePanel{grid-column:1/-1;grid-row:1;min-width:0}
 .open-office:not(.presentation) #openOfficePanel{grid-template-columns:var(--office-rail-width) minmax(0,1fr);gap:var(--office-rail-gap)}
 .open-office:not(.presentation) #openOfficePanel>.office-inspector{grid-column:2;min-width:0;padding-bottom:12px}
 .open-office:not(.presentation) .workspace>.viewer-tools{grid-column:2;grid-row:2;min-width:0;margin-top:0;max-height:none;overflow:visible}
 .open-office:not(.presentation) #officeSelection{min-width:0}
}
@media(max-width:1100px) and (min-width:981px){
 .open-office{--office-rail-width:214px;--office-rail-gap:10px}
}

/* A bounded furniture card keeps the selector and its photographs on one
   edge. Only the photographs scroll; the selector and Add button stay put. */
.open-office .office-add{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:9px;width:min(100%,420px);max-width:100%;min-width:0}
.open-office .office-add #officeAddDesk,.open-office .office-add #officeProduct,.open-office .office-add #officeAddProduct,.open-office .office-add .product-thumbnails{grid-column:1/-1;min-width:0;width:100%;max-width:none;margin:0}
.open-office .office-add #officeProduct{min-height:42px;text-overflow:ellipsis}
.open-office .office-add .product-thumbnails{grid-template-columns:repeat(2,minmax(0,1fr));height:clamp(220px,30dvh,310px);max-height:310px;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;padding:3px;scroll-padding:6px;align-content:start}
.open-office.presentation .office-inspector .office-add .product-thumbnails{grid-template-columns:1fr}
.open-office .office-add .product-thumbnail{min-width:0;max-width:100%;padding:7px;gap:6px;border-radius:7px;overflow-wrap:anywhere}
.open-office .office-add .product-thumbnail[aria-pressed=true]{padding:6px}
.open-office .office-add .product-thumbnail img{width:48px;height:58px}
.open-office .office-add .product-thumbnail span{min-width:0}
.open-office .office-selection-fields{min-width:0;max-width:100%}
.open-office .office-selection-fields label{flex:1 1 100px;min-width:0;max-width:160px}
.open-office #officePrivacyPanels,.open-office #officeAssemblyPositions{min-width:0;max-width:100%}
@media(max-width:980px){
 .open-office #openOfficePanel>.office-inspector{min-width:0}
 .open-office .office-add{width:min(100%,480px)}
}
@media(max-width:360px){
 .open-office .office-add .product-thumbnails{grid-template-columns:1fr}
}

/* The drawing hotspot is the exact intersection, rather than the navigation
   hand. Descendants inherit it, including existing room walls and dimensions. */
.open-office #officeStage #officePlan.office-room-drawing,.open-office #officeStage #officePlan.office-room-drawing *{cursor:crosshair!important}

/* Architectural handles remain independent of furniture and camera controls. */
.office-room-corners{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:10}.office-room-corners[hidden],.office-wall-height[hidden]{display:none!important}.office-corner-handle{cursor:nwse-resize}.office-room-corners .office-corner-handle{position:absolute;width:13px;height:13px;min-width:0;padding:0;transform:translate(-50%,-50%);border:2px solid #16866b;border-radius:3px;background:#f5fffb;pointer-events:auto;touch-action:none;box-shadow:0 1px 4px #102c3c66}.office-wall-height{position:absolute;top:auto;bottom:64px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:5px;padding:7px 9px;border:1px solid #62b5e4;border-radius:9px;background:#effafff5;color:#1d5068;z-index:12;box-shadow:0 4px 18px #183c4e22;font-size:12px;max-width:calc(100% - 24px)}.office-wall-height button{padding:4px 9px;min-height:28px}.office-wall-height span{white-space:nowrap}@media(max-width:600px){.office-wall-height{top:auto;bottom:64px;flex-wrap:wrap;justify-content:center}.office-wall-height span{white-space:normal}}

/* Deliberate, latched architecture manipulation. */
#officeMoveWalls[aria-pressed="true"]{background:#f57b32;color:#132f29;border-color:#ffb36c;box-shadow:inset 0 2px 4px #78380566,0 0 13px #f57b3255;transform:translateY(1px)}
.office-wall-transform{position:absolute;left:50%;bottom:22px;transform:translateX(-50%);z-index:18;max-width:calc(100% - 32px);display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:7px;background:#183e35f5;color:#e6fff4;padding:9px 12px;border:1px solid #85c6ad;border-radius:10px;box-shadow:0 8px 20px #001d2555;font-size:12px}
.office-wall-transform[hidden]{display:none}.office-wall-transform span{flex-basis:100%;text-align:center;color:#bbd8ce}.office-wall-transform label{display:flex;align-items:center;gap:4px}.office-wall-transform input{width:75px;min-width:0}.office-wall-transform button{min-height:32px;padding:5px 8px;font-size:12px}.office-wall-transform strong{color:#ffa96f}
.office-wall-precision{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:7px;flex-basis:100%;padding:6px 0;border-bottom:1px solid #85c6ad55}.office-wall-precision small{flex-basis:100%;text-align:center;color:#d3e7e0}.office-wall-precision select{width:auto;min-width:86px;min-height:32px;padding:3px 5px}.office-wall-arrow-pad{display:flex;gap:4px}.office-wall-arrow-pad button{width:34px;min-height:34px;font-size:19px;line-height:1}.office-wall-arrow-pad button:active{transform:translateY(1px)}
#officePlanWrap{position:relative}
