.canvas-host{width:100%;height:100%;min-height:0;position:relative;overflow:hidden}.canvas-mount{position:absolute;inset:0}.canvas-mount canvas{touch-action:none;display:block}.viewcube{z-index:5;width:56px;height:56px;position:absolute;top:12px;right:12px}.viewcube-scene{perspective:240px;pointer-events:none;width:56px;height:56px}.viewcube-cube{--half:28px;width:56px;height:56px;transform-style:preserve-3d;position:relative}.viewcube-face{color:var(--text-muted);border:1px solid var(--border);backface-visibility:hidden;cursor:pointer;pointer-events:auto;background:#ffffffeb;place-items:center;padding:0;font-size:10px;font-weight:700;display:grid;position:absolute;inset:0}.viewcube-face:hover{background:var(--accent-soft);color:var(--accent)}.viewcube-home{z-index:1;background:var(--surface);border:1px solid var(--border);width:22px;height:22px;box-shadow:var(--shadow);position:absolute;bottom:-6px;left:-36px}.axes{z-index:5;pointer-events:none;position:absolute;bottom:12px;left:12px}.nav-controls{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);z-index:5;border-radius:10px;align-items:center;gap:2px;padding:4px;display:flex;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.canvas-host[data-tool=boxSelect] .canvas-mount,.canvas-host[data-tool=clip] .canvas-mount,.canvas-host[data-tool=measure] .canvas-mount{cursor:crosshair}.measure-hint{z-index:6;background:var(--surface);border:1px solid var(--border);width:fit-content;box-shadow:var(--shadow);border-radius:10px;align-items:center;gap:8px;margin-inline:auto;padding:6px 8px 6px 12px;font-size:13px;display:flex;position:absolute;top:12px;left:12px;right:116px}.measure-hint .btn{padding:4px 10px}.box-select-rect{z-index:6;pointer-events:none;border:1px dashed var(--accent);background:#2f80ed1f;position:absolute}.palette-backdrop{z-index:70;background:#0f172a40;justify-content:center;align-items:flex-start;padding:10vh 16px 16px;display:flex;position:fixed;inset:0}.palette{background:var(--surface);width:min(640px,100%);max-height:70vh;box-shadow:var(--shadow);border-radius:12px;flex-direction:column;display:flex;overflow:hidden}.palette-input{border:0;border-bottom:1px solid var(--border);outline:none;height:48px;padding:0 16px;font-size:16px}.palette-list{margin:0;padding:6px;list-style:none;overflow-y:auto}.palette-item{cursor:pointer;border-radius:6px;align-items:center;gap:8px;padding:8px 10px;display:flex}.palette-item[aria-selected=true]{background:var(--accent-soft)}.palette-label{text-overflow:ellipsis;white-space:pre;flex:1;min-width:0;overflow:hidden}.palette-meta{color:var(--text-muted);white-space:nowrap;font-size:12px}.palette-empty{color:var(--text-muted);padding:12px}.panel-pad{padding:12px}.panel-empty{color:var(--text-muted);padding:16px}.panel-error{color:var(--danger);padding:16px}.field-label{margin-bottom:6px;font-weight:600;display:block}.field-help{color:var(--text-muted);font-size:12px}.settings-field{margin-top:18px}.panel-pad input[type=number]{border:1px solid var(--border);border-radius:6px;width:100px;height:30px;padding:0 8px}.props-head{border-bottom:1px solid var(--border);padding:12px}.props-name{color:var(--accent);word-break:break-word;margin:0;font-size:15px}.props-class{color:var(--text-muted);white-space:pre-wrap;margin-top:2px;font-size:12px}.props-guid-row{align-items:center;gap:4px;margin-top:6px;display:flex}.props-guid-row code{font:12px var(--mono);background:var(--surface-2);border-radius:4px;padding:2px 6px}.props-tools{border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:8px 12px;display:flex}.props-tools input[type=search]{border:1px solid var(--border);border-radius:6px;flex:1;min-width:0;height:30px;padding:0 8px}.props-sort{white-space:nowrap;align-items:center;gap:4px;font-size:12px;display:flex}.props-group{border-bottom:1px solid var(--border)}.props-group summary{cursor:pointer;color:var(--accent);padding:8px 12px;font-weight:600}.props-group dl,.props-breakdown{margin:0;padding:0 12px 8px}.props-row{grid-template-columns:minmax(90px,45%) 1fr;gap:8px;padding:3px 0;display:grid}.props-row dt{color:var(--text-muted);overflow-wrap:anywhere;white-space:pre-wrap}.props-row dd{overflow-wrap:anywhere;margin:0}.props-value{text-align:left;cursor:copy;white-space:pre-wrap;background:0 0;border:0;padding:0}.props-value:hover{color:var(--accent)}.props-type-title{margin:12px 12px 0;font-size:13px}.props-multi{margin:0 0 8px;font-weight:600}.models-list{margin:0;padding:4px 0;list-style:none}.models-row{border-bottom:1px solid var(--border);align-items:center;gap:4px;padding:6px 8px 6px 12px;display:flex}.models-info{flex-direction:column;flex:1;min-width:0;display:flex}.models-name{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.models-meta{color:var(--text-muted);font-size:12px}.tree-scroll{height:100%;overflow:auto}.tree{margin:0;padding:4px 0;list-style:none}.tree-row{align-items:center;gap:2px;padding-right:8px;display:flex}.tree-row[aria-selected=true]{background:var(--accent-soft)}.tree-toggle,.tree-label{cursor:pointer;background:0 0;border:0}.tree-toggle{border-radius:4px;justify-content:center;align-items:center;width:20px;height:20px;padding:0;display:inline-flex}.tree-toggle-spacer{width:20px;display:inline-block}.tree-label{text-align:left;border-radius:4px;flex:1;align-items:center;gap:6px;min-width:0;padding:2px 4px;display:flex}.tree-label:hover{background:var(--surface-2)}.tree-text{text-overflow:ellipsis;white-space:pre;overflow:hidden}.tree-count{color:var(--text-muted);margin-left:auto;font-size:11px}.classes-toggle{border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:10px 12px;display:flex}.classes-list{margin:0;padding:4px 0;list-style:none}.classes-row{align-items:center;gap:4px;padding:2px 8px;display:flex}.classes-row--hidden .classes-name{color:var(--text-muted);text-decoration:line-through}.classes-swatch{border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:4px;width:22px;height:22px;padding:0}.classes-label{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:4px;flex:1;align-items:center;gap:6px;min-width:0;padding:4px;display:flex}.classes-label:hover{background:var(--surface-2)}.classes-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tree-eye{opacity:.5}.tree-row:hover .tree-eye,.tree-eye[data-vis=hidden],.tree-eye:focus-visible{opacity:1}.tree-eye[data-vis=mixed]{opacity:.8;color:var(--text-muted)}.tree-tag{color:var(--text-muted);border:1px solid var(--border);border-radius:4px;flex:none;padding:0 4px;font-size:10px}.props-tag{color:var(--text-muted);border:1px solid var(--border);border-radius:4px;margin-left:6px;padding:0 4px;font-size:11px;display:inline-block}.sections-fills{margin:-12px -12px 12px}.sections-gap{margin-top:16px}.sections-list{margin:0 0 8px;padding:0;list-style:none}.sections-row{align-items:center;gap:6px;padding:2px 0;display:flex}.sections-name{font-weight:600}.sections-row .field-help{flex:1;margin:0}.sections-box{grid-template-columns:1fr 1fr;gap:6px 10px;margin-bottom:8px;display:grid}.sections-face{color:var(--text-muted);flex-direction:column;gap:2px;font-size:12px;display:flex}.sections-face input{border:1px solid var(--border);border-radius:6px;width:100%;height:28px;padding:0 6px}.name-input{min-width:0;height:28px;font:inherit;background:0 0;border:1px solid #0000;border-radius:6px;flex:1;padding:0 6px}.name-input:hover,.name-input:focus{border-color:var(--border);background:var(--surface)}.measures-list,.views-list{margin:8px 0;padding:0;list-style:none}.measures-row,.views-row{align-items:center;gap:6px;padding:2px 0;display:flex}.measures-row>svg{color:var(--text-muted);flex:none}.measures-value{font-variant-numeric:tabular-nums;flex:none;font-weight:600}.views-save,.views-io .btn{align-items:center;gap:6px;display:inline-flex}.views-io{gap:8px;margin-top:8px;display:flex}.storey-rail{background:var(--surface);border-right:1px solid var(--border);flex:none;width:168px;overflow-y:auto}.storey-rail ul{margin:0;padding:6px 0;list-style:none}.level{align-items:center;padding-right:4px;display:flex}.level--hidden .level-main{opacity:.45}.level-main{cursor:pointer;text-align:left;background:0 0;border:0;border-left:3px solid #0000;flex-direction:column;flex:1;align-items:flex-start;gap:0;min-width:0;padding:6px 8px 6px 12px;display:flex}.level-main:hover{background:var(--surface-2)}.level-main[aria-pressed=true]{border-left-color:var(--accent);background:var(--accent-soft)}.level-name{white-space:pre;text-overflow:ellipsis;max-width:100%;font-weight:600;overflow:hidden}.level-elev{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:11px}.level-eye{width:28px;height:28px}.level-chip{border:1px solid var(--border);background:var(--surface);border-radius:6px;flex:0 auto;min-width:0;max-width:46vw;height:30px;padding:0 6px}.level-cut{color:var(--accent);vertical-align:-1px;margin-left:6px}.bottom-toolbar{height:calc(52px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--surface);border-top:1px solid var(--border);justify-content:space-around;align-items:center;display:flex}.bottom-toolbar .icon-btn{width:44px;height:44px}.sheet{left:0;right:0;bottom:calc(52px + env(safe-area-inset-bottom));z-index:30;background:var(--surface);border-radius:14px 14px 0 0;flex-direction:column;transition:height .18s;display:flex;position:fixed;box-shadow:0 -6px 24px #0f172a2e}.sheet-handle{cursor:grab;touch-action:none;place-items:center;height:22px;display:grid}.sheet-handle span{background:var(--border);border-radius:2px;width:40px;height:4px}.sheet-tabs{border-bottom:1px solid var(--border);gap:4px;padding:0 8px 6px;display:flex;overflow-x:auto}.sheet-tabs [role=tab]{white-space:nowrap;background:0 0;border:0;border-radius:6px;padding:6px 10px;font-size:13px}.sheet-tabs [aria-selected=true]{background:var(--accent-soft);color:var(--accent)}.sheet-body{flex:1;min-height:0;overflow:auto}.app{grid-template-columns:minmax(0,1fr);grid-template-rows:var(--topbar-h) auto minmax(0, 1fr);height:100dvh;display:grid;overflow:hidden}.app--phone{grid-template-rows:var(--topbar-h) minmax(0, 1fr) auto}.topbar{background:var(--surface);border-bottom:1px solid var(--border);align-items:center;gap:12px;min-width:0;padding:0 12px;display:flex}.brand{white-space:nowrap;align-items:center;gap:6px;font-weight:600;display:flex}.topbar-files{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text-muted);flex:1;overflow:hidden}.topbar-actions{flex:none;gap:8px;display:flex}kbd{font:11px var(--mono);border:1px solid var(--border);color:var(--text-muted);border-radius:4px;padding:1px 4px}.toolbar{background:var(--surface);border-bottom:1px solid var(--border);align-items:center;gap:4px;padding:4px 8px;display:flex;overflow-x:auto}.toolbar-group{gap:2px;display:flex}.toolbar-sep{background:var(--border);flex:none;width:1px;height:24px;margin:0 6px}.toolbar-text-btn{width:auto;padding:0 8px;font-size:12px}.workspace{min-width:0;min-height:0;display:flex;position:relative}.viewport{flex:1;min-width:0;position:relative;overflow:hidden}.side-panel{background:var(--surface);border-left:1px solid var(--border);flex-direction:column;display:flex;position:relative}.side-panel--drawer{top:0;bottom:0;right:var(--rail-w);z-index:20;box-shadow:var(--shadow);max-width:calc(100% - var(--rail-w));position:absolute}.side-panel-resize{cursor:col-resize;z-index:1;width:6px;position:absolute;top:0;bottom:0;left:-3px}.side-panel-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:6px 8px 6px 12px;display:flex}.side-panel-header h2{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin:0;font-size:12px}.side-panel-body{flex:1;min-height:0;overflow:auto}.rail{width:var(--rail-w);background:var(--surface);border-left:1px solid var(--border);flex-direction:column;gap:4px;padding:6px 5px;display:flex}.overlay-center{pointer-events:none;place-items:center;padding:16px;display:grid;position:absolute;inset:0}.empty-state{pointer-events:auto;text-align:center;background:var(--surface);border:1px solid var(--border);max-width:380px;box-shadow:var(--shadow);border-radius:12px;padding:24px}.empty-state h1{margin:0 0 8px;font-size:18px}.empty-state p{color:var(--text-muted)}.load-progress{z-index:10;flex-direction:column;gap:8px;width:min(420px,100% - 32px);display:flex;position:absolute;top:12px;left:50%;transform:translate(-50%)}.load-job{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:10px 12px}.load-job-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.load-job progress{width:100%;height:6px;margin-top:6px}.load-job-stage{color:var(--text-muted);font-size:12px}.toasts{z-index:50;flex-direction:column;gap:8px;width:min(480px,100% - 32px);display:flex;position:fixed;bottom:16px;left:50%;transform:translate(-50%)}.toast{border-radius:var(--radius);color:#fff;box-shadow:var(--shadow);background:#0f172a;justify-content:space-between;align-items:center;gap:8px;padding:8px 8px 8px 12px;display:flex}.toast .icon-btn:hover{background:#ffffff1f}.toast--error{background:var(--danger)}.drop-overlay{z-index:60;border:3px dashed var(--accent);color:var(--accent);pointer-events:none;background:#2f80ed1f;place-items:center;font-size:18px;font-weight:600;display:grid;position:fixed;inset:0}.context-lost{z-index:40;background:#f3f4f6eb;place-items:center;display:grid;position:absolute;inset:0}.context-menu{z-index:55;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;padding:4px;display:flex;position:fixed}.context-menu-item{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;padding:8px 10px}.context-menu-item:hover,.context-menu-item:focus-visible{background:var(--accent-soft)}.context-menu-item[aria-checked=true]:after{content:" ✓";color:var(--accent)}.locale-switch{border:1px solid var(--border);border-radius:6px;flex:none;display:inline-flex;overflow:hidden}.locale-switch button{background:var(--surface);height:30px;color:var(--text-muted);font:inherit;cursor:pointer;border:0;padding:0 8px;font-size:12px;font-weight:600}.locale-switch button+button{border-left:1px solid var(--border)}.locale-switch button:hover{background:var(--surface-2)}.locale-switch button[aria-pressed=true]{background:var(--accent-soft);color:var(--accent)}.locale-switch--full button{height:32px;padding:0 14px;font-size:13px}.user-menu{flex:none;display:flex;position:relative}.user-menu-button{border:1px solid var(--border);background:var(--accent-soft);width:32px;height:32px;color:var(--accent);cursor:pointer;border-radius:50%;flex:none;justify-content:center;align-items:center;padding:0;font-size:12px;font-weight:600;display:inline-flex}button.user-menu-button:hover,.user-menu-button[aria-expanded=true]{border-color:var(--accent)}.user-menu-popover{min-width:200px;max-width:min(280px,100vw - 16px);position:absolute;top:calc(100% + 6px);right:0}.user-menu-who{border-bottom:1px solid var(--border);min-width:0;margin-bottom:4px;padding:6px 10px 8px}.user-menu-name{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.user-menu-email{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}a.context-menu-item{color:inherit;text-decoration:none}.account-section{border-bottom:1px solid var(--border);margin-bottom:16px;padding-bottom:12px}.account-who{align-items:center;gap:10px;min-width:0;margin:4px 0 10px;display:flex}.account-who-text{min-width:0}.account-actions{flex-wrap:wrap;gap:8px;display:flex}a.btn{color:inherit;text-decoration:none}.password-dialog-backdrop{z-index:80;background:#0f172a59;justify-content:center;align-items:flex-start;padding:12vh 16px 16px;display:flex;position:fixed;inset:0}.password-dialog{background:var(--surface);width:min(380px,100%);color:var(--text);box-shadow:var(--shadow);border-radius:12px;flex-direction:column;gap:12px;padding:20px;display:flex}.password-dialog h2{margin:0 0 4px;font-size:16px}.password-dialog-field{flex-direction:column;gap:4px;font-size:13px;font-weight:500;display:flex}.password-dialog-field input{border:1px solid var(--border);background:var(--surface);height:36px;color:var(--text);font:inherit;border-radius:6px;padding:0 10px;font-weight:400}.password-dialog-hint{color:var(--text-muted);font-size:12px;font-weight:400}.password-dialog-error{color:var(--danger,#b91c1c);margin:0;font-size:13px}.password-dialog-done,.password-dialog-checking,.password-dialog-none{margin:0}.password-dialog-actions{justify-content:flex-end;gap:8px;margin-top:4px;display:flex}
