/* Three-panel workspace. The WebGL canvas retains its own coordinate space. */
.workspaceApp{height:100dvh;display:flex;flex-direction:column;overflow:hidden;font-size:13px}
.workspaceApp>header{flex:0 0 68px;position:relative;z-index:7500;padding:8px 18px}
.workspaceApp header .brand-row{display:flex;flex-direction:column;align-items:flex-start;gap:0;min-width:0}
.workspaceApp #brandLogo{display:block;height:30px;max-width:210px;object-fit:contain}
.workspaceApp #appTitle{font-size:12px;font-weight:600;line-height:1.3}
.workspaceApp #main{flex:1;min-height:0;height:auto;display:flex;gap:8px;padding:0 8px;position:relative}
.workspaceApp #main.appLocked{display:none}
.workspaceApp #sidebar,.workspaceApp #aiSidebar{position:relative;flex:0 0 clamp(240px,21vw,330px);width:clamp(240px,21vw,330px);min-height:0;padding:0;background:#fff;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.workspaceApp #sidebar{display:flex;flex-direction:column}
.workspaceApp #sidebarTop{flex:0 0 var(--tree-pane-height,62%);min-height:140px;height:auto;overflow:auto;padding:12px 10px 5px;border:0}
.workspaceApp #aiSidebar{display:flex}
.workspaceApp #aiChatPanel{width:100%;flex:1;height:auto;min-height:0;border:0;border-radius:0;background:#fff}
.workspaceApp .aiHeader{background:#fff;border-color:var(--line);padding:15px 12px;font-size:15px}
.workspaceApp #aiMessages{padding:14px 12px;gap:14px}
.workspaceApp .aiMsg{padding:12px;line-height:1.55}
.workspaceApp .aiMsg.assistant{background:#f0f4fa;color:var(--text);border-color:transparent}
.workspaceApp .aiMsg.user{background:#e5efff;color:#17428c}
.workspaceApp .aiMsg.error{background:#fff1f2;color:#ad2638;border-color:#e6acb3}
.workspaceApp .aiInputBox{background:#fff;border-color:var(--line);padding:12px}
.workspaceApp #aiQuestion{background:#fff;color:var(--text);border-color:var(--line);font-size:13px;max-height:25vh}
.workspaceApp .aiInputActions{flex-wrap:wrap}.workspaceApp #aiAskBtn{background:var(--accent);color:white;border-color:var(--accent);margin-left:auto}
.workspaceApp #aiRetentionDisclosure,.workspaceApp [data-ai-rating-prompt],.workspaceApp [data-ai-rating-controls] [aria-live]{color:var(--muted)!important}
.workspaceApp [data-ai-rating-controls]{border-color:var(--line)!important;flex-wrap:wrap}
.workspaceApp [data-ai-rating]{background:#fff!important;border-color:var(--line)!important}
.workspaceApp [data-ai-rating][aria-pressed=true]{background:#eaf2ff!important;border-color:var(--accent)!important}
.workspaceApp .aiMsg[data-kind=warning]{background:#fff7e6;color:#85520c!important;border-color:#efd298!important}
.workspaceApp .cloudBar{gap:6px}.workspaceApp #projectSelect{min-width:0;max-width:none;flex:1;width:100%;padding:8px;border:1px solid var(--line);border-radius:8px;font-size:12px}
.sidebarHeading{display:flex;align-items:center;justify-content:space-between;gap:6px;width:100%}
.sidebarHeading label{margin:0;color:var(--muted);font-size:12px}.sidebarHeading h3{margin:0;font-size:14px}
.workspaceApp #cloudStatus{background:#f3f6fc;border-color:var(--line);padding:6px 8px;max-width:100%;overflow-wrap:anywhere}
.workspaceApp #cloudStatus.ok{background:#dcf8e9;color:#14734e;border-color:#b6e9cf}
.workspaceApp #cloudStatus.err{background:#fff0f2;color:#ba273b;border-color:#e8b2bb}
.workspaceApp #cloudStatus.saving{color:#85500b;background:#fff6de;border-color:#efd99b}
.workspaceApp #btnAddBuilding{background:var(--accent);color:#fff;border-color:var(--accent);margin-top:6px}
.workspaceApp .block{background:#fff;border-color:var(--line)}
.workspaceApp .tree{font-size:12px;line-height:1.3}.workspaceApp .tree h4{color:var(--text);margin:6px 0 12px}
.workspaceApp .tree .node-header{min-height:32px;gap:3px;flex-wrap:wrap}
.workspaceApp .tree .treeName{min-width:55px;white-space:normal;overflow-wrap:anywhere}
.workspaceApp .tree .treeName.isEditing{background:#f3f7ff;border-color:var(--accent)}
.workspaceApp .tree .editBtn{background:#f7faff;color:var(--accent);border-color:#cbddfa;margin-left:0}
.workspaceApp .tree .deleteBtn{background:#fff;color:#c13144;border-color:#edbbc3;margin-left:0}
.workspaceApp .tree .roomLeaf{padding:5px 4px;border-radius:8px}
.workspaceApp .tree .roomLeaf:hover{background:#f6f9ff;border-color:#c0d5f7}
.workspaceApp .tree .roomActive{background:#eaf2ff;border-color:#80adff;box-shadow:inset 3px 0 var(--accent)}
.workspaceApp .tree .roomDragHandle{color:#8092ae}.workspaceApp .tree .roomDragHandle:hover{background:#eaf2ff;color:var(--accent);border-color:#c0d5f7}
.workspaceApp .indent{margin-left:8px}
.workspaceApp .roomDragGhost{background:#fff;color:var(--text);border-color:var(--accent);box-shadow:0 10px 30px #19366525}
.workspaceApp .tree .roomLeaf.roomDropBefore::before,.workspaceApp .tree .roomLeaf.roomDropAfter::after{background:var(--accent);box-shadow:none}
.workspaceApp .tree .levelNode.roomDropInside>.node-header,.workspaceApp .tree .buildingNode.roomDropInside>.node-header{background:#eaf2ff;box-shadow:0 0 0 1px var(--accent) inset}
.workspaceApp #sidebarResizeHandle{margin:0;flex:0 0 12px}
.workspaceApp #sidebarResizeHandle::before{background:var(--line);box-shadow:none}
.workspaceApp #sidebarResizeHandle span{background:#eef3fa;border-color:#cbd8e8}
.workspaceApp #sidebarResizeHandle:hover::before,.workspaceApp #sidebarResizeHandle:focus-visible::before{background:var(--accent)}
#floorPlanPanel{flex:1;min-height:110px;overflow:auto;border:0;border-top:1px solid var(--line);padding:12px;margin:0;background:#fff}
.comingSoon{font-size:10px;white-space:nowrap;background:#eaf2ff;color:#1859bc;padding:4px 7px;border-radius:6px;font-weight:700}
#floorPlanPanel .small{font-size:11px;line-height:1.45;margin:8px 0}
.samplePlan{display:block;width:100%;height:calc(100% - 76px);max-height:220px;min-height:70px;color:#6b7d91;opacity:.7}
.workspaceApp #viewer{display:flex;flex-direction:column;position:relative;flex:1;min-width:0;min-height:0;overflow:visible;border:1px solid var(--line);border-radius:9px;background:#fff;touch-action:auto}
.workspaceApp #canvasWrap{position:relative;inset:auto;flex:1;min-height:0;width:100%;overflow:hidden;border-radius:8px 8px 0 0}
.workspaceApp canvas{background:radial-gradient(ellipse at center,#e9eff7,#dbe4f0)}
.workspaceApp .divider{background:var(--accent);width:2px;margin-left:-1px;opacity:1}
.workspaceApp .wipeSlider::before{width:2px;margin-left:-1px;background:var(--accent);box-shadow:none}
.workspaceApp .wipeSlider::after{content:'‹ ›';position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:grid;place-items:center;width:34px;height:34px;border-radius:50%;border:2px solid #fff;background:var(--accent);color:#fff;font-weight:700;box-shadow:0 2px 9px #153c7d25}
#viewerDock{flex:0 0 auto;background:#fff;border-radius:0 0 9px 9px;position:relative;z-index:6200}
.imageSelectors{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line)}
.workspaceApp .imageBottomBar{position:relative;inset:auto;bottom:auto;width:auto;transform:none;display:flex;flex-direction:row;align-items:center;padding:9px;gap:7px;z-index:auto!important;pointer-events:auto}
.workspaceApp .imageBottomBarRight{border-left:1px solid var(--line)}
.workspaceApp .imagePill{flex:1;min-width:0;width:0;border:1px solid #cfddf1;background:#fff;color:var(--text);border-radius:8px;padding:9px 27px 9px 10px;font-size:12px;box-shadow:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left;position:relative}
.workspaceApp .imagePill{padding-right:36px!important}
.workspaceApp .imagePill::after{content:'';position:absolute;right:10px;top:50%;width:20px;height:20px;transform:translateY(-50%);background:url('../icons/chevron-down.svg') center/20px no-repeat}
.workspaceApp .imageDeleteBtn{min-width:0;background:#fff;color:#c13144;border:1px solid #efabb8;border-radius:8px;padding:9px;font-size:12px;box-shadow:none}
.viewerToolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:6px;min-height:58px;padding:8px;border-top:1px solid var(--line)}
.iconButton{display:inline-grid;place-items:center;min-width:32px;min-height:32px;padding:5px!important;font-size:18px!important;line-height:1}
.viewSegments{display:flex}.viewSegments button{border-radius:0;min-height:34px}.viewSegments button:first-child{border-radius:8px 0 0 8px}.viewSegments button:last-child{border-radius:0 8px 8px 0}
.viewSegments button[aria-pressed=true]{background:var(--accent);color:#fff;border-color:var(--accent)}
.alignmentBox{position:relative}.alignmentBox>button{min-height:34px}
#alignmentToggle.isAligning{color:#1251c2;background:#eaf2ff;border-color:#80aaff}
.appPopover{background:#fff;border:1px solid var(--line);border-radius:12px;padding:8px;box-shadow:0 12px 40px #152d5529}
#alignmentPopover{position:absolute;bottom:calc(100% + 12px);right:0;width:320px;max-height:min(620px,70dvh);overflow:auto;display:grid;gap:8px;z-index:7000}
#alignmentPopover .alignmentHelp{font-size:12px;line-height:1.45;color:var(--muted);margin:2px 0}
#alignmentStatus{font-size:13px;line-height:1.5;padding:10px;border-radius:10px;background:#edf4fc;color:#213c60;border:1px solid #d6e5f6}
#alignmentProgress{width:100%;height:8px;accent-color:#1769ba}
#alignmentApply{background:#155fb5;color:white;border-color:#155fb5}
#alignmentCancel,#alignmentUndo{border-color:#9bb8d9}
#alignmentPopover label{display:flex;align-items:center;gap:6px;padding:6px;color:var(--text)}.alignTargets{display:flex;gap:18px}
.userMenuBox{position:relative;min-width:0;margin-left:auto}
#userMenuToggle{display:flex;align-items:center;gap:8px;max-width:320px;min-height:38px;border-radius:30px}
#userInfo{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#userMenu{position:absolute;top:calc(100% + 8px);right:0;width:260px;max-width:calc(100vw - 24px);display:grid;gap:4px}
#userMenu>a,#userMenu>button{display:flex;align-items:center;justify-content:flex-start;width:100%;border:0;padding:11px 12px;text-align:left;font-size:13px}
.workspaceApp .languageBox{margin:4px 0;padding:6px 0;border-block:1px solid var(--line);z-index:auto}
.workspaceApp .languageBtn{width:100%;min-width:0;border:0;background:#fff;color:var(--text);border-radius:8px}
.workspaceApp .languageMenu{position:static;box-shadow:none;border:0;background:#f3f7fe;border-radius:8px;margin-top:4px}
.workspaceApp .languageMenu button{background:transparent;color:var(--text);font-size:13px;padding:10px 14px}
.workspaceApp .languageMenu button.active{background:#eaf2ff;color:#1455cc}
.panelRecall{position:absolute;top:8px;left:8px;right:8px;display:flex;justify-content:space-between;z-index:6100;pointer-events:none}
.panelRecall button{pointer-events:auto;background:#fffffff2;box-shadow:0 2px 8px #16376518}
#expandRight{margin-left:auto}
.workspaceApp #main.leftCollapsed #sidebar,.workspaceApp #main.rightCollapsed #aiSidebar{display:none}
.workspaceApp .footerbar{position:static;flex:0 0 26px;background:none;color:var(--muted);font-size:11px}
.workspaceApp .footerbar a{color:var(--muted)}
.workspaceApp .pickerMenu{background:#fff;color:var(--text);border-color:var(--line);box-shadow:0 16px 45px #14294c33}
.workspaceApp .pickerMenu button{background:#fff;color:var(--text)}
.workspaceApp .pickerMenu button:hover,.workspaceApp .pickerMenu .imagePickerCard.isSelected{background:#eaf2ff;border-color:#96bcff;box-shadow:none}
.workspaceApp .pickerMenu .newUpload{background:#1261ee;color:#fff;border-color:#1261ee;box-shadow:0 3px 8px #154ccc15}
.workspaceApp .imagePickerDate{color:var(--text)}.workspaceApp .imagePickerUploader,.workspaceApp .pickerMenu .emptyHint{color:var(--muted)}
.workspaceApp .imagePickerThumb{background:#eef3fb;border-color:var(--line)}.workspaceApp .imagePickerSelectedMark{background:var(--accent);color:#fff}
.workspaceApp #authScreen{background:#f5f7fb;top:68px;z-index:7400}
.workspaceApp #authBox{background:#fff;border-color:var(--line);box-shadow:0 15px 60px #19386514;padding:28px}
.workspaceApp #authBox input{padding:10px;border:1px solid var(--line);border-radius:8px;margin:4px 0}
.workspaceApp #authBox a{color:#1859bc!important}
.workspaceApp #loginBtn{background:var(--accent);color:#fff}
.workspaceApp #authMsg{color:#bc293d}
.workspaceApp .modalOverlay{background:#14294c66;backdrop-filter:blur(3px);z-index:8000}
.workspaceApp .modalBox{background:#fff;border-color:var(--line);color:var(--text);max-height:92dvh;overflow:auto;box-shadow:0 20px 80px #14294c25}
.workspaceApp .feedbackModalBox select,.workspaceApp .feedbackModalBox textarea,.workspaceApp .dropZone,.workspaceApp .feedbackPreview{background:#f6f9ff;color:var(--text);border-color:var(--line)}
.workspaceApp .dropZone.dragover{border-color:var(--accent);background:#eaf2ff}
.workspaceApp #feedbackSubmit{background:var(--accent);border-color:var(--accent);color:#fff}
.workspaceApp .feedbackCaptureAgain{background:#fff;border-color:var(--line)}
.workspaceApp .feedbackStatus,.workspaceApp .modalFileName{color:#14734e}.workspaceApp .feedbackStatus.isError{color:#b82a3b}
.workspaceApp #loadingOverlay{z-index:10000;background:#14294c66}
.workspaceApp #loadingOverlay .box{background:#fff;border-color:var(--line);box-shadow:0 15px 60px #14294c30;max-width:95vw;min-width:0}
.workspaceApp .spinner{border-color:#dce6f4;border-top-color:var(--accent)}
.workspaceApp #loadProgressBar{background:var(--accent)}
.workspaceApp #loadProgressWrap{background:#eaf0fa;border-color:var(--line)}
.workspaceApp .paneLoadRing{background:conic-gradient(var(--accent) var(--pane-progress),#dce6f4 0);box-shadow:none}
.workspaceApp .paneLoadRing::before{background:#fff;border:0}.workspaceApp .paneLoadRing span{color:var(--text);text-shadow:none}
.workspaceApp .paneLoadCard{background:#fffffff0;border-color:var(--line);box-shadow:0 8px 25px #14294c20}.workspaceApp .paneLoadLabel{color:var(--muted)}
/* Single view always expands the left canvas, without changing comparison state. */
.workspaceApp #viewer.singleImageView .half.left{width:100%}
.workspaceApp #viewer.singleImageView .half.right,
.workspaceApp #viewer.singleImageView .imageBottomBarRight,
.workspaceApp #viewer.singleImageView #rightImageLoadIndicator,
.workspaceApp #viewer.singleImageView .comparisonTools,
.workspaceApp #viewer.singleImageView .alignmentBox{display:none}
.workspaceApp #viewer.singleImageView .imageSelectors{grid-template-columns:minmax(0,1fr)}
.workspaceApp #viewer.singleImageView #leftImageLoadIndicator{left:50%}
.imageViewSegments{flex-shrink:0}
@media(max-width:1000px) and (max-height:520px){
 .workspaceApp #main #aiChatPanel{display:grid!important;grid-template-columns:minmax(180px,40%) minmax(0,1fr);grid-template-rows:auto auto minmax(0,1fr) auto}
 .workspaceApp #main .aiHeader{grid-column:1;grid-row:1;padding:6px 10px;font-size:13px}
 .workspaceApp #main .aiRoomTools{grid-column:1;grid-row:2;padding:4px 10px}
 .workspaceApp #main .aiQuickQuestions{grid-column:1;grid-row:3;align-content:start;overflow:auto;padding:4px 10px}
 .workspaceApp #main .aiQuickQuestions button{font-size:10px;min-height:28px;padding:4px 6px}
 .workspaceApp #main #aiMessages{grid-column:2;grid-row:1/4;min-height:0;border-left:1px solid var(--line);padding:8px}
 .workspaceApp #main .aiInputBox{grid-column:1/-1;grid-row:4;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px;padding:6px 10px}
 .workspaceApp #main #aiRetentionDisclosure{grid-column:1/-1;font-size:9px!important}
 .workspaceApp #main #aiQuestion{min-height:44px;height:44px;margin:0}
 .workspaceApp #main .aiInputActions{display:flex;flex-direction:column;gap:3px;max-width:180px}
 .workspaceApp #main #aiStatus{font-size:10px;line-height:1.2}
 .workspaceApp #main #aiAskBtn{margin:0;padding:5px 10px}
}
.workspaceApp.viewerFocus>header,.workspaceApp.viewerFocus>.footerbar,.workspaceApp.viewerFocus #sidebar,.workspaceApp.viewerFocus #aiSidebar,.workspaceApp.viewerFocus #mobileNav,.workspaceApp.viewerFocus .panelRecall{display:none!important}
.workspaceApp.viewerFocus #main{padding:0;gap:0}.workspaceApp.viewerFocus #viewer{display:flex!important;position:relative;inset:auto;border:0;border-radius:0;width:100%}
@media(max-width:1100px) and (min-width:761px){.workspaceApp #sidebar,.workspaceApp #aiSidebar{flex-basis:235px;width:235px}.workspaceApp .aiInputActions{display:block}.workspaceApp #aiAskBtn{margin-top:6px}.workspaceApp .imageBottomBar{gap:3px;padding:5px}.workspaceApp .imageDeleteBtn{padding:8px 5px;font-size:11px}.viewerToolbar{gap:3px;padding:6px 2px}.viewerToolbar button{font-size:11px;padding:6px}}
@media(max-width:760px),(max-width:1000px) and (max-height:520px){
 .workspaceApp>header{flex-basis:60px;padding:8px 10px}.workspaceApp #brandLogo{display:block;height:auto;width:160px;max-width:36vw}.workspaceApp #appTitle{font-size:10px;white-space:normal}
 #userMenuToggle{max-width:44vw;padding:7px 10px;font-size:11px}
 .workspaceApp #main{display:block;padding:0 6px}
 .workspaceApp #viewer,.workspaceApp #sidebar,.workspaceApp #aiSidebar{position:absolute;inset:0 6px 54px;width:auto;min-height:0;max-width:none;display:flex;flex-direction:column}
 .workspaceApp #main[data-mobile-view=viewer] #sidebar,.workspaceApp #main[data-mobile-view=viewer] #aiSidebar,.workspaceApp #main[data-mobile-view=tree] #viewer,.workspaceApp #main[data-mobile-view=tree] #aiSidebar,.workspaceApp #main[data-mobile-view=ai] #viewer,.workspaceApp #main[data-mobile-view=ai] #sidebar{display:none!important}
 .workspaceApp #main[data-mobile-view=tree] #sidebar{display:flex}.workspaceApp #main[data-mobile-view=ai] #aiSidebar{display:flex}
 .workspaceApp #main[data-mobile-view=tree] #sidebarTop{display:block;flex:0 0 var(--tree-pane-height,62%);min-height:120px;padding:12px}
 .workspaceApp #main[data-mobile-view=tree] #sidebarResizeHandle{display:block}
 .workspaceApp #aiChatPanel{display:flex!important;min-height:0;height:auto}
 .workspaceApp #mobileNav{position:absolute;left:6px;right:6px;bottom:4px;height:46px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;padding:4px;z-index:1800;border:1px solid var(--line);border-radius:10px;background:#fff;box-shadow:none;backdrop-filter:none}
 .workspaceApp #mobileNav button{display:flex;align-items:center;justify-content:center;gap:6px;min-width:0;padding:4px;border:0;background:transparent;font-size:12px;color:var(--muted)}.workspaceApp #mobileNav button.active{background:#eaf2ff;color:#1555be;box-shadow:none}
 .workspaceApp #collapseLeft,.workspaceApp #collapseRight,.workspaceApp .panelRecall{display:none}
 .workspaceApp .imageBottomBar{display:flex;inset:auto;width:auto;bottom:auto;padding:5px;gap:4px;flex-direction:row}
 .workspaceApp .imageBottomBar .imagePill,.workspaceApp .imageBottomBar .imageDeleteBtn{display:block}
 .workspaceApp .imagePill{font-size:11px;padding:8px 20px 8px 6px;width:0;min-width:0}
 .workspaceApp .imageDeleteBtn{font-size:10px;padding:8px 5px;align-self:auto}
 .viewerToolbar{min-height:46px;padding:5px;gap:4px}.viewerToolbar button{font-size:11px;padding:7px}.viewerToolbar .iconButton{min-width:30px}
 #alignmentPopover{position:fixed;bottom:140px;right:12px;max-width:calc(100vw - 24px);max-height:calc(100dvh - 164px)}
 .workspaceApp .footerbar{height:22px;flex-basis:22px;font-size:9px}
 .workspaceApp #authScreen{top:60px}.workspaceApp.viewerFocus #viewer{position:absolute;inset:0}.workspaceApp.viewerFocus #alignmentPopover{bottom:100px}
}
