:root{--font-ui:"Segoe UI Variable Text", "Segoe UI", system-ui, -apple-system, "Helvetica Neue", sans-serif;--font-display:"Segoe UI Variable Display", "Segoe UI", system-ui, sans-serif;--font-mono:"Cascadia Mono", "Cascadia Code", Consolas, ui-monospace, monospace;--radius-s:4px;--radius-m:6px;--radius-l:10px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--topbar-h:46px;--statusbar-h:26px;--rail-w:48px;--left-w:272px;--right-w:296px;--ui-bg:#f4f2ee;--ui-surface:#fbfaf8;--ui-surface-2:#fff;--ui-sunken:#ebe8e2;--ui-border:#d9d5cc;--ui-border-strong:#bdb8ad;--ui-text:#1d2126;--ui-text-2:#555c66;--ui-text-3:#868d97;--ui-accent:#2f5fe0;--ui-accent-hover:#244fc4;--ui-accent-soft:#e2e9fb;--ui-accent-text:#fff;--ui-danger:#c93a2b;--ui-warn:#b86e00;--ui-ok:#24845c;--ui-hover:#1e22280f;--ui-active:#1e22281a;--ui-shadow:0 1px 2px #14161a0f, 0 8px 24px #14161a1a;--ui-shadow-pop:0 2px 6px #14161a1a, 0 16px 48px #14161a2e;--ui-focus:0 0 0 2px var(--ui-surface-2), 0 0 0 4px var(--ui-accent);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-ui-theme=dark]{--ui-bg:#16181b;--ui-surface:#1e2125;--ui-surface-2:#262a2f;--ui-sunken:#131517;--ui-border:#33383f;--ui-border-strong:#4a515a;--ui-text:#e8eaed;--ui-text-2:#aab1bb;--ui-text-3:#78808b;--ui-accent:#6c93ff;--ui-accent-hover:#85a5ff;--ui-accent-soft:#26335a;--ui-accent-text:#0d1220;--ui-danger:#f0705f;--ui-warn:#e0a341;--ui-ok:#58c492;--ui-hover:#ffffff12;--ui-active:#ffffff1f;--ui-shadow:0 1px 2px #0000004d, 0 8px 24px #00000059;--ui-shadow-pop:0 2px 6px #00000059, 0 16px 48px #00000080;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}.editor-canvas,[data-canvas-theme=paper]{--cv-bg:#fdfcf9;--cv-grid:#3c465a12;--cv-grid-major:#3c465a29;--cv-axis:#3c465a4d;--cv-wall:#2b3038;--cv-wall-stroke:#14171b;--cv-wall-interior:#4a515c;--cv-wall-partition:#7c838d;--cv-room:#f1ece1;--cv-room-text:#2b3038;--cv-room-text-2:#6b7280;--cv-opening:#fff;--cv-opening-stroke:#2b3038;--cv-glass:#6fb4d8;--cv-dim:#5a6472;--cv-dim-text:#2b3038;--cv-item-stroke:#3d434c;--cv-item-text:#22262b;--cv-stair:#f6f3ec;--cv-stair-stroke:#4b525c;--cv-label:#1d2126;--cv-select:#2f5fe0;--cv-select-fill:#2f5fe01f;--cv-hover:#5f86ee;--cv-preview:#e2622b;--cv-guide:#e2622b;--cv-collision:#d93a2b;--cv-ghost:#8b93a0}[data-canvas-theme=blueprint]{--cv-bg:#17406e;--cv-grid:#ffffff0f;--cv-grid-major:#ffffff24;--cv-axis:#ffffff4d;--cv-wall:#eaf2fb;--cv-wall-stroke:#fff;--cv-wall-interior:#c5d8ee;--cv-wall-partition:#9bb9da;--cv-room:#1c4a7e;--cv-room-text:#f2f7fd;--cv-room-text-2:#a9c5e3;--cv-opening:#17406e;--cv-opening-stroke:#eaf2fb;--cv-glass:#9fdcff;--cv-dim:#b9d2ec;--cv-dim-text:#f2f7fd;--cv-item-stroke:#dbe8f6;--cv-item-text:#0f2a48;--cv-stair:#1f5390;--cv-stair-stroke:#dbe8f6;--cv-label:#f2f7fd;--cv-select:#ffd166;--cv-select-fill:#ffd16629;--cv-hover:#ffe199;--cv-preview:#ff9f6b;--cv-guide:#ff9f6b;--cv-collision:#ff7b6b;--cv-ghost:#7da3cc}[data-canvas-theme=dark]{--cv-bg:#1a1c1f;--cv-grid:#ffffff0b;--cv-grid-major:#ffffff1a;--cv-axis:#ffffff38;--cv-wall:#d9dde3;--cv-wall-stroke:#f3f5f7;--cv-wall-interior:#aeb5bf;--cv-wall-partition:#868e99;--cv-room:#24272c;--cv-room-text:#e8eaed;--cv-room-text-2:#9aa2ad;--cv-opening:#1a1c1f;--cv-opening-stroke:#d9dde3;--cv-glass:#6fc3ea;--cv-dim:#9aa2ad;--cv-dim-text:#e8eaed;--cv-item-stroke:#c9ced6;--cv-item-text:#14171a;--cv-stair:#2b2f35;--cv-stair-stroke:#c9ced6;--cv-label:#e8eaed;--cv-select:#6c93ff;--cv-select-fill:#6c93ff29;--cv-hover:#9db7ff;--cv-preview:#ff9455;--cv-guide:#ff9455;--cv-collision:#ff6b5b;--cv-ghost:#5e6672}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font-ui);color:var(--ui-text);background:var(--ui-bg);-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none;font-size:13px;line-height:1.4;overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{box-shadow:var(--ui-focus);outline:none}::selection{background:var(--ui-accent-soft)}.num{font-variant-numeric:tabular-nums}*{scrollbar-width:thin;scrollbar-color:var(--ui-border-strong) transparent}.btn{border:1px solid var(--ui-border);border-radius:var(--radius-m);background:var(--ui-surface-2);height:28px;color:var(--ui-text);cursor:pointer;white-space:nowrap;justify-content:center;align-items:center;gap:6px;padding:0 10px;transition:background .12s,border-color .12s;display:inline-flex}.btn:hover{background:var(--ui-hover);border-color:var(--ui-border-strong)}.btn:active{background:var(--ui-active)}.btn:disabled{opacity:.45;cursor:default;pointer-events:none}.btn svg{flex:none;width:15px;height:15px}.btn-primary{background:var(--ui-accent);border-color:var(--ui-accent);color:var(--ui-accent-text);font-weight:600}.btn-primary:hover{background:var(--ui-accent-hover);border-color:var(--ui-accent-hover)}.btn-ghost{background:0 0;border-color:#0000}.btn-danger{color:var(--ui-danger)}.btn-sm{height:24px;padding:0 8px;font-size:12px}.btn-block{width:100%}.icon-btn{border-radius:var(--radius-m);width:28px;height:28px;color:var(--ui-text-2);cursor:pointer;background:0 0;border:1px solid #0000;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.icon-btn:hover{background:var(--ui-hover);color:var(--ui-text)}.icon-btn:disabled{opacity:.35;pointer-events:none}.icon-btn.is-active,.icon-btn[aria-pressed=true]{background:var(--ui-accent-soft);color:var(--ui-accent)}.icon-btn svg{width:16px;height:16px}.icon-btn-sm{width:22px;height:22px}.icon-btn-sm svg{width:14px;height:14px}.field{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);align-items:center;gap:8px;min-height:28px;display:grid}.field>label,.field>.field-label{color:var(--ui-text-2);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.field-stack{flex-direction:column;gap:4px;display:flex}.field-row{align-items:center;gap:6px;display:flex}.field-grid-2{grid-template-columns:1fr 1fr;gap:6px;display:grid}.input,.select{border:1px solid var(--ui-border);border-radius:var(--radius-s);background:var(--ui-surface-2);width:100%;min-width:0;height:26px;color:var(--ui-text);-webkit-user-select:text;user-select:text;padding:0 7px}.input:hover,.select:hover{border-color:var(--ui-border-strong)}.input:focus,.select:focus{border-color:var(--ui-accent);box-shadow:0 0 0 2px var(--ui-accent-soft);outline:none}.input.is-invalid{border-color:var(--ui-danger)}.input.num{text-align:right}textarea.input{resize:vertical;height:auto;min-height:56px;padding:6px 7px}.input-wrap{align-items:center;width:100%;min-width:0;display:flex;position:relative}.input-wrap .input{padding-right:26px}.input-wrap .input-suffix{color:var(--ui-text-3);pointer-events:none;font-size:11px;position:absolute;right:7px}.input-wrap.has-prefix .input{padding-left:22px}.input-wrap .input-prefix{color:var(--ui-text-3);pointer-events:none;font-size:11px;font-weight:600;position:absolute;left:7px}.switch{cursor:pointer;align-items:center;gap:8px;display:inline-flex;position:relative}.switch input{opacity:0;pointer-events:none;position:absolute}.switch-track{background:var(--ui-border-strong);border-radius:10px;flex:none;width:30px;height:17px;transition:background .15s;position:relative}.switch-track:after{content:"";background:#fff;border-radius:50%;width:13px;height:13px;transition:transform .15s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #00000040}.switch input:checked+.switch-track{background:var(--ui-accent)}.switch input:checked+.switch-track:after{transform:translate(13px)}.switch input:focus-visible+.switch-track{box-shadow:var(--ui-focus)}.segmented{border-radius:var(--radius-m);background:var(--ui-sunken);gap:2px;width:100%;padding:2px;display:inline-flex}.segmented button{min-width:0;height:22px;color:var(--ui-text-2);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:4px;flex:1;justify-content:center;align-items:center;gap:4px;padding:0 6px;font-size:12px;display:inline-flex}.segmented button:hover{color:var(--ui-text)}.segmented button[aria-pressed=true]{background:var(--ui-surface-2);color:var(--ui-text);font-weight:600;box-shadow:0 1px 2px #0000001f}.segmented svg{width:14px;height:14px}.color-input{align-items:center;gap:6px;display:flex}.color-swatch{border:1px solid var(--ui-border-strong);border-radius:var(--radius-s);cursor:pointer;flex:none;width:26px;height:26px;padding:0;position:relative;overflow:hidden}.color-swatch input[type=color]{cursor:pointer;opacity:0;border:0;width:200%;height:200%;padding:0;position:absolute;inset:-6px}.color-dots{flex-wrap:wrap;gap:4px;display:flex}.color-dot{cursor:pointer;border:1px solid #0000002e;border-radius:50%;width:18px;height:18px;padding:0}.color-dot[aria-pressed=true]{box-shadow:0 0 0 2px var(--ui-surface), 0 0 0 4px var(--ui-accent)}.panel{background:var(--ui-surface);flex-direction:column;min-height:0;display:flex}.panel-header{border-bottom:1px solid var(--ui-border);flex:none;align-items:center;gap:8px;height:36px;padding:0 10px 0 12px;font-weight:600;display:flex}.panel-body{flex:1;min-height:0;overflow:hidden auto}.section{border-bottom:1px solid var(--ui-border);flex-direction:column;gap:6px;padding:10px 12px 12px;display:flex}.section-title{letter-spacing:.06em;text-transform:uppercase;color:var(--ui-text-3);justify-content:space-between;align-items:center;gap:8px;margin:0 0 2px;font-size:11px;font-weight:700;display:flex}.muted{color:var(--ui-text-3)}.hint-text{color:var(--ui-text-3);font-size:12px;line-height:1.45}.badge{background:var(--ui-sunken);height:18px;color:var(--ui-text-2);border-radius:9px;align-items:center;padding:0 6px;font-size:11px;font-weight:600;display:inline-flex}.badge-warn{background:color-mix(in srgb, var(--ui-warn) 18%, transparent);color:var(--ui-warn)}.badge-danger{background:color-mix(in srgb, var(--ui-danger) 16%, transparent);color:var(--ui-danger)}.kbd{border:1px solid var(--ui-border);background:var(--ui-surface-2);min-width:18px;height:18px;color:var(--ui-text-2);font-family:var(--font-mono);border-bottom-width:2px;border-radius:4px;justify-content:center;align-items:center;padding:0 5px;font-size:10.5px;display:inline-flex}.divider-v{background:var(--ui-border);flex:none;align-self:stretch;width:1px;margin:8px 4px}.spacer{flex:1}.tabs{border-bottom:1px solid var(--ui-border);flex:none;display:flex}.tabs button{height:34px;color:var(--ui-text-2);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;flex:1;font-weight:600}.tabs button:hover{color:var(--ui-text)}.tabs button[aria-selected=true]{color:var(--ui-accent);border-bottom-color:var(--ui-accent)}.dialog-backdrop{z-index:100;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0f111473;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.dialog{border:1px solid var(--ui-border);border-radius:var(--radius-l);background:var(--ui-surface);width:min(100%,560px);max-height:100%;box-shadow:var(--ui-shadow-pop);flex-direction:column;display:flex;overflow:hidden}.dialog-wide{width:min(100%,860px)}.dialog-xl{width:min(100%,1180px);height:min(100%,820px)}.dialog-header{border-bottom:1px solid var(--ui-border);flex:none;align-items:center;gap:10px;padding:14px 14px 12px 18px;display:flex}.dialog-title{font-family:var(--font-display);flex:1;margin:0;font-size:16px;font-weight:650}.dialog-body{-webkit-user-select:text;user-select:text;flex:1;min-height:0;padding:16px 18px;overflow:auto}.dialog-footer{border-top:1px solid var(--ui-border);background:var(--ui-surface);flex:none;justify-content:flex-end;align-items:center;gap:8px;padding:12px 18px;display:flex}.menu{z-index:200;border:1px solid var(--ui-border);border-radius:var(--radius-m);background:var(--ui-surface-2);min-width:190px;box-shadow:var(--ui-shadow-pop);padding:4px;position:fixed}.menu-item{border-radius:var(--radius-s);width:100%;height:28px;color:var(--ui-text);text-align:left;cursor:pointer;white-space:nowrap;background:0 0;border:0;align-items:center;gap:8px;padding:0 8px;display:flex}.menu-item:hover,.menu-item:focus-visible{background:var(--ui-accent-soft);box-shadow:none}.menu-item:disabled{opacity:.4;pointer-events:none}.menu-item svg{width:15px;height:15px;color:var(--ui-text-2);flex:none}.menu-item .menu-shortcut{color:var(--ui-text-3);margin-left:auto;padding-left:16px;font-size:11px}.menu-sep{background:var(--ui-border);height:1px;margin:4px 2px}.menu-label{letter-spacing:.05em;text-transform:uppercase;color:var(--ui-text-3);padding:6px 8px 2px;font-size:11px;font-weight:700}.toasts{z-index:300;pointer-events:none;flex-direction:column;align-items:center;gap:6px;display:flex;position:fixed;bottom:44px;left:50%;transform:translate(-50%)}.toast{border-radius:var(--radius-m);background:var(--ui-text);color:var(--ui-surface);box-shadow:var(--ui-shadow);padding:8px 14px;font-weight:500;animation:.18s ease-out toast-in}.toast.is-error{background:var(--ui-danger);color:#fff}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}}@media (prefers-reduced-motion:reduce){*{transition-duration:1ms!important;animation-duration:1ms!important}}.editor-svg .layer-rooms .room-fill{cursor:default}.editor-svg .layer-rooms .room-name{letter-spacing:.01em;font-weight:650}.editor-svg .layer-rooms .room-area{font-variant-numeric:tabular-nums}.editor-svg .layer-walls.is-ghost path{fill:var(--cv-ghost);stroke:none}.editor-svg .layer-openings .opening-label{font-weight:600}.editor-svg .tool-overlay .preview-fill{fill:var(--cv-preview);fill-opacity:.22;stroke:var(--cv-preview)}.editor-svg .tool-overlay .preview-invalid{fill:var(--cv-collision);fill-opacity:.25;stroke:var(--cv-collision)}.editor-svg .tool-overlay .snap-guide{stroke:var(--cv-guide);stroke-dasharray:4 4;opacity:.85}.editor-svg .tool-overlay .snap-marker{fill:var(--cv-bg);stroke:var(--cv-guide)}.editor-svg .tool-overlay .typed-badge rect{fill:var(--cv-preview)}.editor-svg .tool-overlay .typed-badge text{fill:#fff;font-variant-numeric:tabular-nums;font-weight:700}.editor-svg .tool-overlay .preview-text{fill:var(--cv-preview);stroke:var(--cv-bg);paint-order:stroke;stroke-linejoin:round;font-variant-numeric:tabular-nums;font-weight:700}.editor-svg .layer-items text,.editor-svg .layer-pipes text,.editor-svg .layer-labels text{font-family:var(--font-ui);-webkit-user-select:none;user-select:none}.editor-svg .item-label{letter-spacing:.01em}.editor-svg .label-text{white-space:pre}.editor-svg .tool-preview text{font-family:var(--font-ui);font-variant-numeric:tabular-nums}.editor-svg .layer-selection{pointer-events:none}.layer-selection .sel-outline{fill:var(--cv-select-fill);stroke:var(--cv-select);stroke-width:1.5px;stroke-linejoin:round;vector-effect:non-scaling-stroke}.layer-selection .sel-outline.is-line{fill:none;stroke-width:2.5px;stroke-linecap:round;stroke-opacity:.75}.layer-selection .sel-outline.is-room{stroke-width:1.25px;stroke-dasharray:7 4}.layer-selection .sel-outline.is-frame{fill:none;stroke-width:1px;stroke-dasharray:3 3}.layer-selection .sel-outline.is-locked{fill:none;stroke-dasharray:2 4;stroke-opacity:.8}.layer-selection .sel-hover{fill:none;stroke:var(--cv-hover);stroke-width:1.5px;stroke-linejoin:round;vector-effect:non-scaling-stroke}.layer-selection .sel-hover.is-line{stroke-width:3px;stroke-linecap:round;stroke-opacity:.55}.layer-selection .sel-hover.is-room{stroke-width:1px;stroke-opacity:.45}.layer-selection .sel-handle,.layer-selection .sel-handle-hit{pointer-events:all}.layer-selection .sel-handle-hit{fill:#0000;stroke:none}.layer-selection .sel-handle{fill:var(--cv-bg);stroke:var(--cv-select);stroke-width:1.5px;vector-effect:non-scaling-stroke}.layer-selection .sel-handle.is-node{fill:var(--cv-select);stroke:var(--cv-bg)}.layer-selection .sel-handle.is-mid{fill-opacity:.85;stroke-opacity:.7}.layer-selection .sel-handle.is-rotate{fill:var(--cv-select);stroke:var(--cv-bg)}.layer-selection [data-handle]:hover .sel-handle{stroke-width:2.5px}.layer-selection .sel-stem{stroke:var(--cv-select);stroke-width:1px;vector-effect:non-scaling-stroke}.layer-selection .sel-marquee{fill:var(--cv-select-fill);stroke:var(--cv-select);stroke-width:1px;vector-effect:non-scaling-stroke}.layer-selection .sel-marquee.is-touch{stroke-dasharray:5 4}.layer-selection .sel-guide{fill:none;stroke:var(--cv-guide);stroke-width:1px;stroke-dasharray:5 4;vector-effect:non-scaling-stroke}.layer-selection .sel-snap{fill:none;stroke:var(--cv-guide);stroke-width:1.5px;vector-effect:non-scaling-stroke}.editor-canvas[data-tool=select] .editor-svg [data-id]:not([data-kind=room]):not([data-kind=underlay]){cursor:move}.editor-canvas[data-drag-cursor],.editor-canvas[data-drag-cursor] *{cursor:move!important}.editor-canvas[data-drag-cursor=copy],.editor-canvas[data-drag-cursor=copy] *{cursor:copy!important}.editor-canvas[data-drag-cursor=crosshair],.editor-canvas[data-drag-cursor=crosshair] *{cursor:crosshair!important}.editor-canvas[data-drag-cursor=grabbing],.editor-canvas[data-drag-cursor=grabbing] *{cursor:grabbing!important}.editor-canvas[data-drag-cursor=ew-resize],.editor-canvas[data-drag-cursor=ew-resize] *{cursor:ew-resize!important}.editor-canvas[data-drag-cursor=ns-resize],.editor-canvas[data-drag-cursor=ns-resize] *{cursor:ns-resize!important}.editor-canvas[data-drag-cursor=nwse-resize],.editor-canvas[data-drag-cursor=nwse-resize] *{cursor:nwse-resize!important}.editor-canvas[data-drag-cursor=nesw-resize],.editor-canvas[data-drag-cursor=nesw-resize] *{cursor:nesw-resize!important}.editor-canvas{background:var(--cv-bg);touch-action:none;outline:none;width:100%;height:100%;position:relative;overflow:hidden}.editor-svg{font-family:var(--font-ui);-webkit-user-select:none;user-select:none;display:block;position:absolute;inset:0}.editor-svg .layer-locked{pointer-events:none}.editor-svg .ghost-floor{opacity:.42}.editor-svg .hairline{vector-effect:non-scaling-stroke}.editor-svg text{pointer-events:none}.menu{max-height:calc(100vh - 12px);overflow-y:auto}.menu-check{flex:none;place-items:center;width:15px;height:15px;display:inline-grid}.menu-item .menu-check svg{color:var(--ui-accent)}.menu-item.is-danger{color:var(--ui-danger)}.icon-btn.is-danger{background:color-mix(in srgb, var(--ui-danger) 14%, transparent);color:var(--ui-danger)}.topbar{overflow:hidden}.topbar .btn,.topbar .icon-btn{flex:none}.topbar .chev{opacity:.55;width:13px;height:13px;margin:0 -3px 0 -2px}.topbar .divider-v{margin:12px 4px}.topbar-brand{flex:none;align-items:center;gap:8px;padding:0 8px 0 4px;display:flex}.topbar-mark{color:var(--ui-text);flex:none}.topbar-wordmark{font-family:var(--font-display);letter-spacing:-.01em;font-size:15px;font-weight:700}.topbar-menu-btn{padding:0 8px}.topbar-project{border-radius:var(--radius-m);text-overflow:ellipsis;-webkit-user-select:text;user-select:text;background:0 0;border:1px solid #0000;flex:0 auto;min-width:56px;max-width:260px;height:28px;padding:0 8px;font-weight:600}.topbar-project:hover{background:var(--ui-hover)}.topbar-project:focus{border-color:var(--ui-accent);background:var(--ui-surface-2);box-shadow:0 0 0 2px var(--ui-accent-soft);outline:none}.topbar-group{flex:none;align-items:center;gap:2px;display:flex}.topbar-floor-btn{max-width:210px;padding:0 8px}.topbar-floor-btn>svg:first-child{color:var(--ui-text-2)}.topbar-floor-name{text-overflow:ellipsis;max-width:140px;font-weight:600;overflow:hidden}.topbar-viewmode{flex:none;margin-right:4px}.topbar-viewmode .segmented{width:auto}.topbar-viewmode .segmented button{height:24px;padding:0 11px}.topbar-lock.is-locked{border-color:color-mix(in srgb, var(--ui-warn) 45%, transparent);background:color-mix(in srgb, var(--ui-warn) 14%, transparent);color:var(--ui-warn);font-weight:600}.topbar-lock.is-locked:hover{background:color-mix(in srgb, var(--ui-warn) 22%, transparent)}.topbar-ai{background:var(--ui-accent-soft);color:var(--ui-accent);border-color:#0000;font-weight:600}.topbar-ai:hover{border-color:var(--ui-accent);background:var(--ui-accent-soft)}@media (width<=1480px){.topbar-lock:not(.is-locked) .topbar-label,.topbar-hide-l .topbar-label{display:none}}@media (width<=1280px){.topbar-hide-l,.topbar-wordmark{display:none}.topbar-project{max-width:180px}}@media (width<=1100px){.topbar-label{display:none}.topbar-floor-name{max-width:96px}}@media (width<=960px){.topbar-hide-m{display:none}}@media (width<=820px){.topbar-hide-s,.topbar-floor-name{display:none}.topbar-project{max-width:120px}}.tool-rail-group{flex-direction:column;align-items:center;gap:2px;display:flex}.tool-rail-sep{background:var(--ui-border);flex:none;width:24px;height:1px;margin:5px 0}.tool-btn{border-radius:var(--radius-m);width:38px;height:36px;color:var(--ui-text-2);cursor:pointer;background:0 0;border:1px solid #0000;flex:none;place-items:center;padding:0;transition:background .1s,color .1s;display:grid;position:relative}.tool-btn svg{width:19px;height:19px}.tool-btn:hover{background:var(--ui-hover);color:var(--ui-text)}.tool-btn.is-active{background:var(--ui-accent);color:var(--ui-accent-text)}.tool-btn.is-blocked{opacity:.36}.tool-btn.is-blocked:hover{cursor:not-allowed;background:0 0}.tool-key{font-family:var(--font-mono);color:var(--ui-text-3);font-size:8.5px;font-weight:600;line-height:1;position:absolute;bottom:2px;right:3px}.tool-btn.is-active .tool-key{color:inherit;opacity:.75}.left-pane{flex-direction:column;flex:1;min-height:0;display:flex}.left-pane[hidden]{display:none}.lib{flex-direction:column;flex:1;min-height:0;display:flex}.lib-search{border-bottom:1px solid var(--ui-border);flex:none;padding:8px 10px;position:relative}.lib-search .input{height:28px;padding-left:28px;padding-right:26px}.lib-search input[type=search]::-webkit-search-cancel-button{display:none}.lib-search-icon{width:14px;height:14px;color:var(--ui-text-3);pointer-events:none;position:absolute;top:50%;left:18px;transform:translateY(-50%)}.lib-search-clear{position:absolute;top:50%;right:13px;transform:translateY(-50%)}.lib-group{border-bottom:1px solid var(--ui-border)}.lib-group-row{z-index:1;background:var(--ui-surface);align-items:center;padding-right:8px;display:flex;position:sticky;top:0}.lib-group-header{min-width:0;height:32px;color:var(--ui-text);text-align:left;cursor:pointer;background:0 0;border:0;flex:1;align-items:center;gap:6px;padding:0 6px 0 10px;font-weight:600;display:flex}.lib-group-header:hover{color:var(--ui-accent)}.lib-group-header svg{width:14px;height:14px;color:var(--ui-text-3);flex:none}.lib-group-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.lib-group-count{color:var(--ui-text-3);margin-left:auto;padding-left:8px;font-size:11px;font-weight:500}.lib-group-body{padding:2px 10px 12px}.lib-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:6px;display:grid}.lib-tile-wrap{min-width:0;display:flex;position:relative}.lib-tile{border:1px solid var(--ui-border);border-radius:var(--radius-m);background:var(--ui-surface-2);text-align:left;cursor:pointer;flex-direction:column;flex:1;gap:2px;min-width:0;padding:5px 6px 7px;transition:border-color .1s,box-shadow .1s;display:flex}.lib-tile:hover{border-color:var(--ui-border-strong)}.lib-tile:hover .lib-preview{background-color:var(--ui-hover)}.lib-tile[aria-pressed=true]{border-color:var(--ui-accent);background:var(--ui-accent-soft);box-shadow:inset 0 0 0 1px var(--ui-accent)}.lib-preview{background-color:var(--ui-sunken);background-image:linear-gradient(color-mix(in srgb, var(--ui-border) 55%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in srgb, var(--ui-border) 55%, transparent) 1px, transparent 1px);background-position:50%;background-size:12px 12px;border-radius:4px;place-items:center;height:46px;margin-bottom:3px;display:grid}.lib-name{-webkit-line-clamp:2;line-clamp:2;overflow-wrap:anywhere;-webkit-box-orient:vertical;font-size:12px;font-weight:600;line-height:1.25;display:-webkit-box;overflow:hidden}.lib-dims{color:var(--ui-text-3);text-overflow:ellipsis;white-space:nowrap;margin-top:auto;font-size:10.5px;overflow:hidden}.lib-tile-actions{background:var(--ui-surface-2);box-shadow:0 0 0 1px var(--ui-border);opacity:0;border-radius:5px;gap:1px;transition:opacity .12s;display:flex;position:absolute;top:4px;right:4px}.lib-tile-wrap:hover .lib-tile-actions,.lib-tile-wrap:focus-within .lib-tile-actions{opacity:1}.lib-form{border:1px solid var(--ui-border);border-radius:var(--radius-m);background:var(--ui-surface-2);flex-direction:column;gap:6px;margin-bottom:10px;padding:10px;display:flex}.lib-form-preview{align-items:center;gap:10px;padding-top:2px;display:flex}.lib-form-preview svg{background:var(--ui-sunken);border-radius:4px;flex:none}.lib-form-actions{justify-content:flex-end;gap:6px;margin-top:2px;display:flex}.lib-empty{flex-direction:column;align-items:flex-start;gap:8px;padding:2px 0;display:flex}.lib-empty p{margin:0}.lib-empty .btn{text-overflow:ellipsis;max-width:100%;overflow:hidden}.lib-empty-search{padding:16px 12px}.floor-list,.layer-list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.floor-row{border-radius:var(--radius-m);border:1px solid #0000}.floor-row.is-active{border-color:var(--ui-border);background:var(--ui-surface-2)}.floor-head{align-items:center;gap:2px;padding-right:4px;display:flex}.floor-select{border-radius:var(--radius-m);text-align:left;cursor:pointer;background:0 0;border:0;flex:1;grid-template-columns:auto minmax(0,1fr);align-items:center;column-gap:8px;min-width:0;padding:6px 4px 6px 8px;display:grid}.floor-row:not(.is-active) .floor-select:hover{background:var(--ui-hover)}.floor-dot{border:1.5px solid var(--ui-border-strong);border-radius:50%;grid-row:1/span 2;width:9px;height:9px}.floor-row.is-active .floor-dot{border-color:var(--ui-accent);background:var(--ui-accent)}.floor-name{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.floor-meta{color:var(--ui-text-3);grid-column:2;font-size:11px}.floor-fields{flex-direction:column;gap:4px;padding:2px 8px 8px 25px;display:flex}.floor-confirm{color:var(--ui-danger);margin:0;padding:0 8px 6px 25px;font-size:12px;line-height:1.4}.layer-row{border-radius:var(--radius-s);align-items:center;gap:6px;height:28px;padding:0 2px;display:flex}.layer-row:hover{background:var(--ui-hover)}.layer-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.layer-row.is-hidden .layer-name{color:var(--ui-text-3)}.layer-row .icon-btn[aria-pressed=true]{color:var(--ui-text-2);background:0 0}.layer-row .icon-btn.is-off{color:var(--ui-text-3)}.layer-row .icon-btn.is-idle{opacity:.3}.layer-row:hover .icon-btn.is-idle,.layer-row .icon-btn.is-idle:focus-visible{opacity:.85}.layer-row .icon-btn.is-locked,.layer-row .icon-btn.is-locked[aria-pressed=true]{color:var(--ui-warn)}.layer-reset{letter-spacing:0;text-transform:none;height:18px;padding:0 4px;font-size:11px;font-weight:500}.structure-panel .hint-text{margin:0}.structure-panel .switch{flex-direction:row-reverse;justify-content:space-between;min-height:24px;font-weight:500}.statusbar{gap:8px}.status-hint{text-overflow:ellipsis;flex:0 auto;min-width:40px;overflow:hidden}.status-readout{background:var(--ui-accent-soft);color:var(--ui-accent);border-radius:9px;flex:none;padding:1px 8px;font-weight:600}.status-selection{color:var(--ui-text);flex:none;font-weight:600}.status-coords{flex:none;align-items:baseline;gap:4px;display:inline-flex}.status-axis{color:var(--ui-text-3);font-size:10.5px;font-weight:700}.status-value{min-width:46px;color:var(--ui-text);text-align:right;display:inline-block}.status-sep{background:var(--ui-border);flex:none;width:1px;height:14px}.status-toggles{flex:none;gap:2px;display:inline-flex}.status-toggle,.status-unit,.status-zoom-value{cursor:pointer;background:0 0;border:0;border-radius:4px;height:20px;font-size:11.5px}.status-toggle{color:var(--ui-text-3);align-items:center;gap:4px;padding:0 6px;display:inline-flex}.status-toggle svg{width:12px;height:12px}.status-toggle:hover,.status-unit:hover,.status-zoom-value:hover{background:var(--ui-hover);color:var(--ui-text)}.status-toggle[aria-pressed=true]{background:var(--ui-accent-soft);color:var(--ui-accent);font-weight:600}.status-unit{color:var(--ui-text);flex:none;padding:0 7px;font-weight:600}.status-zoom{flex:none;align-items:center;gap:1px;display:inline-flex}.status-zoom .icon-btn-sm{width:20px;height:20px}.status-zoom-value{min-width:50px;color:var(--ui-text);text-align:center;padding:0 4px}.status-save{flex:none;align-items:center;gap:5px;display:inline-flex}.status-save svg{width:12px;height:12px}.status-save.is-saved{color:var(--ui-text-3)}.status-save.is-saved svg{color:var(--ui-ok)}.status-save.is-unsaved{color:var(--ui-warn)}.status-save.is-error{color:var(--ui-danger);font-weight:600}.status-dot{background:currentColor;border-radius:50%;width:7px;height:7px}.spin{animation:.9s linear infinite chrome-spin}@keyframes chrome-spin{to{transform:rotate(360deg)}}@media (width<=1100px){.status-toggle span,.status-save-text{display:none}}@media (width<=820px){.status-coords,.status-coords+.status-sep{display:none}}.tool-options-layer{z-index:5;pointer-events:none;justify-content:center;padding:0 12px;display:flex;position:absolute;top:10px;left:0;right:0}.tool-options{border:1px solid var(--ui-border);border-radius:var(--radius-l);background:color-mix(in srgb, var(--ui-surface) 94%, transparent);max-width:100%;min-height:40px;box-shadow:var(--ui-shadow);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);cursor:default;pointer-events:auto;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:5px 10px;display:flex}.tool-options-title{border-right:1px solid var(--ui-border);white-space:nowrap;align-self:stretch;align-items:center;gap:6px;padding-right:12px;font-weight:650;display:inline-flex}.tool-options-title svg{width:16px;height:16px;color:var(--ui-accent)}.opt{white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.opt-label{color:var(--ui-text-2);font-size:12px}.opt .input-wrap{width:88px}.opt-wide .select{width:190px}.opt-seg .segmented{width:auto}.opt-seg .segmented button{padding:0 9px}.opt-override{align-items:center;gap:2px;display:inline-flex}.opt-override:not(.is-overridden) .input{color:var(--ui-text-2)}.opt-override.is-overridden .input{border-color:var(--ui-accent)}.opt-note{color:var(--ui-text-3);align-items:center;gap:5px;font-size:12px;display:inline-flex}.opt-item{align-items:baseline;gap:8px;display:inline-flex}.opt-pipe{align-items:center;gap:6px;display:inline-flex}.opt-swatch{border-radius:50%;flex:none;width:10px;height:10px;box-shadow:0 0 0 1px #0003}.settings{-webkit-user-select:none;user-select:none;grid-template-columns:184px minmax(0,1fr);gap:20px;min-height:430px;display:grid}.settings-nav{flex-direction:column;align-self:start;gap:2px;display:flex;position:sticky;top:0}.settings-nav-item{border-radius:var(--radius-m);height:32px;color:var(--ui-text-2);text-align:left;white-space:nowrap;cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:0 10px;font-weight:500;display:flex}.settings-nav-item svg{flex:none;width:15px;height:15px}.settings-nav-item:hover{background:var(--ui-hover);color:var(--ui-text)}.settings-nav-item[aria-current=page]{background:var(--ui-accent-soft);color:var(--ui-accent);font-weight:650}.settings-content{flex-direction:column;gap:18px;min-width:0;max-width:540px;display:flex}.settings-group-title{margin:0 0 6px;font-size:13px;font-weight:650}.settings-group-hint{margin:-2px 0 8px}.settings-intro{margin:0}.settings-fields{border:1px solid var(--ui-border);border-radius:var(--radius-m);background:var(--ui-surface-2);flex-direction:column;gap:6px;padding:10px 12px;display:flex}.settings-toggle{justify-content:space-between;align-items:center;gap:16px;min-height:28px;display:flex}.settings-toggle-label{font-weight:500}.settings-example{color:var(--ui-text-2);padding-top:2px;font-size:12px}.theme-cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:6px;display:grid}.theme-card{border:1px solid var(--ui-border);border-radius:var(--radius-m);background:var(--ui-surface);cursor:pointer;flex-direction:column;align-items:stretch;gap:6px;padding:6px;display:flex}.theme-card:hover{border-color:var(--ui-border-strong)}.theme-card[aria-checked=true]{border-color:var(--ui-accent);box-shadow:0 0 0 1px var(--ui-accent)}.theme-preview{border-radius:4px;line-height:0;display:block;overflow:hidden}.theme-preview svg{width:100%;height:auto;display:block}.theme-card-label{text-align:center;font-size:12px;font-weight:600}.dialog-footer-hint{text-overflow:ellipsis;white-space:nowrap;min-width:0;margin-right:4px;overflow:hidden}@media (width<=640px){.dialog-footer-hint{display:none}}@media (width<=720px){.settings{grid-template-columns:minmax(0,1fr)}.settings-nav{flex-flow:wrap;position:static}}.shortcuts{columns:2;-webkit-user-select:none;user-select:none;column-gap:28px}.shortcuts-group{break-inside:avoid;margin-bottom:18px}.shortcuts-list{flex-direction:column;margin:0;display:flex}.shortcuts-row{border-bottom:1px solid var(--ui-border);justify-content:space-between;align-items:center;gap:12px;min-height:28px;padding:3px 0;display:flex}.shortcuts-row:last-child{border-bottom:0}.shortcuts-row dd{margin:0}.shortcut-keys{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:5px;display:inline-flex}.shortcut-combo{align-items:center;gap:3px;display:inline-flex}.shortcut-plus,.shortcut-or{color:var(--ui-text-3);font-size:11px}@media (width<=720px){.shortcuts{columns:1}}.inspector .panel-header{gap:8px}.insp-floor-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:500;overflow:hidden}.insp-root,.insp-form{flex-direction:column;min-width:0;display:flex}.insp-head{z-index:2;border-bottom:1px solid var(--ui-border);background:var(--ui-surface-2);align-items:center;gap:6px;min-height:48px;padding:8px 8px 8px 12px;display:flex;position:sticky;top:0}.insp-head-icon{border-radius:var(--radius-m);background:var(--ui-accent-soft);width:30px;height:30px;color:var(--ui-accent);flex:none;place-items:center;margin-right:4px;display:grid}.insp-head-icon svg{width:17px;height:17px}.insp-head-text{flex-direction:column;flex:1;min-width:0;line-height:1.25;display:flex}.insp-kind{letter-spacing:.07em;text-transform:uppercase;color:var(--ui-text-3);text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;font-weight:700;overflow:hidden}.insp-name{font-family:var(--font-display);text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:650;overflow:hidden}.icon-btn.insp-danger:hover{color:var(--ui-danger);background:color-mix(in srgb, var(--ui-danger) 12%, transparent)}.insp-fieldset{border:0;min-width:0;margin:0;padding:0}.insp-fieldset:disabled>.section{opacity:.62}.insp-fieldset:disabled .switch,.insp-fieldset:disabled button,.insp-fieldset:disabled .color-swatch{cursor:default;pointer-events:none}.insp-form>.insp-note{margin:8px 12px 0}.insp-info{min-height:24px}.insp-value{text-align:right;min-width:0;color:var(--ui-text);text-overflow:ellipsis;white-space:nowrap;-webkit-user-select:text;user-select:text;font-weight:550;overflow:hidden}.insp-pair{flex-direction:column;gap:4px;display:flex}.insp-pair>.field-label{color:var(--ui-text-2)}.insp-grid-3{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;display:grid}.insp-actions{flex-wrap:wrap;gap:6px;display:flex}.inspector .section>.btn{text-overflow:ellipsis;align-self:flex-start;max-width:100%;overflow:hidden}.inspector .field .segmented button{padding:0 4px}.insp-note{border-left:3px solid var(--ui-border-strong);border-radius:var(--radius-s);background:var(--ui-sunken);color:var(--ui-text-2);align-items:center;gap:8px;padding:7px 9px;font-size:12px;line-height:1.4;display:flex}.insp-note-text{-webkit-user-select:text;user-select:text;flex:1;min-width:0}.insp-note .btn{flex:none}.insp-note-warn{border-left-color:var(--ui-warn);background:color-mix(in srgb, var(--ui-warn) 12%, transparent);color:var(--ui-text)}.insp-note-danger{border-left-color:var(--ui-danger);background:color-mix(in srgb, var(--ui-danger) 11%, transparent);color:var(--ui-text)}.insp-note-ok{border-left-color:var(--ui-ok);background:color-mix(in srgb, var(--ui-ok) 11%, transparent);color:var(--ui-text)}.insp-badge-ok{background:color-mix(in srgb, var(--ui-ok) 16%, transparent);color:var(--ui-ok)}.insp-list{flex-direction:column;gap:1px;margin:0 -6px;display:flex}.insp-row{border-radius:var(--radius-s);width:100%;min-height:26px;color:var(--ui-text);text-align:left;background:0 0;border:0;align-items:center;gap:8px;padding:2px 6px;display:flex}.section>.insp-row{width:auto;margin:0 -6px}button.insp-row{cursor:pointer}button.insp-row:hover{background:var(--ui-hover)}button.insp-row:active{background:var(--ui-active)}.insp-row-icon{color:var(--ui-text-3);flex:none;display:inline-flex}.insp-row-icon svg{width:14px;height:14px}.insp-row-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.insp-row-value{max-width:60%;color:var(--ui-text-2);text-overflow:ellipsis;white-space:nowrap;flex:none;overflow:hidden}.insp-row-danger .insp-row-icon{color:var(--ui-danger)}.insp-row-warn .insp-row-icon{color:var(--ui-warn)}.insp-swatch{border:1px solid #0003;border-radius:3px;flex:none;width:12px;height:12px}.insp-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;display:grid}.insp-stat{border-radius:var(--radius-m);background:var(--ui-sunken);flex-direction:column;gap:1px;min-width:0;padding:8px 10px;display:flex}.insp-stat-value{font-family:var(--font-display);text-overflow:ellipsis;white-space:nowrap;font-size:17px;font-weight:650;line-height:1.2;overflow:hidden}.insp-stat-label{color:var(--ui-text-3);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.insp-chips{flex-wrap:wrap;gap:4px;display:flex}.insp-chip{border:1px solid var(--ui-border);background:var(--ui-surface-2);height:22px;color:var(--ui-text-2);cursor:pointer;border-radius:11px;padding:0 8px;font-size:12px}.insp-chip:hover{border-color:var(--ui-accent);color:var(--ui-accent)}.insp-chip[aria-pressed=true]{border-color:var(--ui-accent);background:var(--ui-accent-soft);color:var(--ui-accent);font-weight:600}.insp-points{flex-direction:column;gap:4px;display:flex}.insp-point{grid-template-columns:14px minmax(0,1fr) minmax(0,1fr) auto auto;align-items:center;gap:4px;display:grid}.insp-point-index{color:var(--ui-text-3);text-align:right;font-size:11px}.insp-range{min-width:0;height:26px;accent-color:var(--ui-accent);flex:1;margin:0}.insp-range-value{flex:none;width:62px}.inspector textarea.input{width:100%;font-family:inherit}.inspector .kbd{margin-left:2px}.io-projects{flex-direction:column;gap:12px;min-height:260px;display:flex;position:relative}.io-toolbar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.io-footer-note{text-align:left;flex:1;min-width:0}.io-empty{text-align:center;padding:32px 0}.io-project-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.io-project{border:1px solid var(--ui-border);border-radius:var(--radius-m);background:var(--ui-surface-2);grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;padding:8px 10px 8px 8px;display:grid}.io-project.is-current{border-color:var(--ui-accent);box-shadow:inset 3px 0 0 var(--ui-accent)}.io-project-open{border-radius:var(--radius-s);cursor:pointer;background:0 0;border:0;padding:0;display:block}.io-thumb{border:1px solid var(--ui-border);border-radius:var(--radius-s);background:var(--ui-surface);width:84px;height:62px;color:var(--ui-text-2);place-items:center;display:grid}.io-project-open:hover .io-thumb{border-color:var(--ui-accent);color:var(--ui-accent)}.io-thumb-empty svg{width:22px;height:22px;color:var(--ui-text-3)}.io-project-info{flex-direction:column;gap:2px;min-width:0;display:flex}.io-project-name{align-items:center;gap:8px;font-size:14px;font-weight:650;display:flex}.io-project-name>span:first-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.io-project-meta{color:var(--ui-text-3);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.io-project-actions{align-items:center;gap:2px;display:flex}.io-project-actions .btn{margin-right:4px}.io-confirm-text{color:var(--ui-danger);margin-right:6px;font-weight:600}.icon-btn.io-danger:hover{color:var(--ui-danger)}.io-drop-hint{border:2px dashed var(--ui-accent);border-radius:var(--radius-l);background:color-mix(in srgb, var(--ui-accent-soft) 88%, transparent);color:var(--ui-accent);pointer-events:none;justify-content:center;align-items:center;gap:10px;font-size:15px;font-weight:650;display:none;position:absolute;inset:-6px}.io-projects.is-dragover .io-drop-hint{display:flex}.io-welcome{flex-direction:column;gap:16px;display:flex}.io-lead{max-width:68ch;color:var(--ui-text);margin:0;font-size:14.5px;line-height:1.5}.io-points{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 20px;margin:0;padding:0;list-style:none;display:grid}.io-points li{align-items:flex-start;gap:10px;display:flex}.io-points strong{display:block}.io-point-icon{border-radius:var(--radius-m);background:var(--ui-sunken);width:30px;height:30px;color:var(--ui-text-2);flex:none;place-items:center;display:grid}.io-point-icon svg{width:16px;height:16px}.io-point-text{color:var(--ui-text-2);font-size:12.5px;line-height:1.45;display:block}.io-heading{font-family:var(--font-display);margin:4px 0 -6px;font-size:14px;font-weight:650}.io-cards{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;display:grid}.io-card{border:1px solid var(--ui-border);border-radius:var(--radius-l);background:var(--ui-surface-2);min-height:148px;color:var(--ui-text);text-align:left;cursor:pointer;flex-direction:column;align-items:flex-start;gap:6px;padding:14px;transition:border-color .12s,transform .12s,box-shadow .12s;display:flex}.io-card:hover{border-color:var(--ui-accent);box-shadow:var(--ui-shadow);transform:translateY(-1px)}.io-card:disabled{opacity:.55;cursor:default;pointer-events:none}.io-card[aria-busy=true]{opacity:1;border-color:var(--ui-accent)}.io-card-icon{border-radius:var(--radius-m);background:var(--ui-sunken);width:36px;height:36px;color:var(--ui-text-2);place-items:center;margin-bottom:4px;display:grid}.io-card-icon svg{width:19px;height:19px}.io-card-title{font-size:14px;font-weight:650}.io-card-text{color:var(--ui-text-2);font-size:12.5px;line-height:1.45}.io-card-accent{border-color:color-mix(in srgb, var(--ui-accent) 45%, var(--ui-border));background:var(--ui-accent-soft)}.io-card-accent .io-card-icon{background:var(--ui-accent);color:var(--ui-accent-text)}.io-export{-webkit-user-select:none;user-select:none;grid-template-columns:320px minmax(0,1fr);height:calc(100% + 32px);min-height:420px;margin:-16px -18px;display:grid}.io-export-options{border-right:1px solid var(--ui-border);min-height:0;overflow-y:auto}.io-export-options .section{gap:8px}.io-export-options .switch{width:100%}.io-export-preview{background:var(--ui-sunken);flex-direction:column;min-width:0;min-height:0;display:flex}.io-preview-stage{flex:1;justify-content:center;align-items:center;min-height:0;padding:22px;display:flex;position:relative;container-type:size}.io-preview-image{object-fit:contain;max-width:100%;max-height:100%;box-shadow:var(--ui-shadow);border-radius:2px}.io-preview-stage.is-transparent .io-preview-image{background-color:#fff;background-image:linear-gradient(45deg,#d9d9d9 25%,#0000 25% 75%,#d9d9d9 75%),linear-gradient(45deg,#d9d9d9 25%,#0000 25% 75%,#d9d9d9 75%);background-position:0 0,8px 8px;background-size:16px 16px}.io-sheet{width:min(100cqw, calc(100cqh * var(--sheet-ratio,1.414)));box-shadow:var(--ui-shadow);background:#fff;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.io-sheet img{flex:none;display:block}.io-sheet-margin{pointer-events:none;border:1px dashed #283c5a38;position:absolute}.io-preview-message{color:var(--ui-text-3);align-items:center;gap:8px;display:flex}.io-preview-message svg{width:16px;height:16px;color:var(--ui-warn)}.io-preview-busy{background:var(--ui-surface-2);color:var(--ui-text-2);box-shadow:var(--ui-shadow);border-radius:10px;padding:2px 8px;font-size:11px;position:absolute;top:10px;right:12px}.io-preview-info{border-top:1px solid var(--ui-border);background:var(--ui-surface);min-height:58px;color:var(--ui-text-2);flex-direction:column;gap:4px;padding:10px 16px 12px;font-size:12.5px;display:flex}.io-preview-info strong{color:var(--ui-text)}.io-warning{color:var(--ui-warn);align-items:flex-start;gap:6px;font-weight:600;display:flex}.io-warning svg{flex:none;width:15px;height:15px;margin-top:1px}@media (width<=860px){.io-export{grid-template-columns:1fr;height:auto}.io-export-options{border-right:0;border-bottom:1px solid var(--ui-border)}.io-preview-stage{min-height:320px}.io-points{grid-template-columns:1fr}}.ai-import{flex-direction:column;gap:12px;height:100%;min-height:420px;display:flex}.ai-steps{flex:none;gap:6px;margin:0;padding:0;list-style:none;display:flex}.ai-steps li{height:28px;color:var(--ui-text-3);white-space:nowrap;border-radius:14px;align-items:center;gap:8px;padding:0 14px 0 4px;font-weight:600;display:flex}.ai-steps li.is-current{background:var(--ui-accent-soft);color:var(--ui-accent)}.ai-steps li.is-done{color:var(--ui-text-2)}.ai-step-no{background:var(--ui-sunken);font-variant-numeric:tabular-nums;border-radius:50%;place-items:center;width:20px;height:20px;font-size:11px;display:grid}.ai-steps li.is-current .ai-step-no{background:var(--ui-accent);color:var(--ui-accent-text)}.ai-step-no svg{width:12px;height:12px}.ai-alert{border:1px solid color-mix(in srgb, var(--ui-danger) 40%, transparent);border-radius:var(--radius-m);background:color-mix(in srgb, var(--ui-danger) 9%, transparent);color:var(--ui-text);flex:none;align-items:flex-start;gap:10px;padding:10px 12px;line-height:1.45;display:flex}.ai-alert svg{width:16px;height:16px;color:var(--ui-danger);flex:none;margin-top:1px}.ai-pick{flex:1;grid-template-columns:minmax(0,1.25fr) minmax(280px,1fr);gap:20px;min-height:0;display:grid}.ai-drop{border:2px dashed var(--ui-border-strong);border-radius:var(--radius-l);background:var(--ui-sunken);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:32px 24px;transition:border-color .12s,background .12s;display:flex}.ai-drop.is-over{border-color:var(--ui-accent);background:var(--ui-accent-soft)}.ai-drop>svg{width:36px;height:36px;color:var(--ui-text-3)}.ai-drop strong{font-family:var(--font-display);font-size:17px}.ai-drop .btn{height:32px;margin-top:6px;padding:0 14px}.ai-pick-side{flex-direction:column;gap:10px;min-height:0;padding-right:4px;display:flex;overflow-y:auto}.ai-tips{flex-direction:column;gap:6px;margin:0;padding-left:18px;line-height:1.45;display:flex}.ai-underlays{border-top:1px solid var(--ui-border);flex-direction:column;gap:6px;margin-top:8px;padding-top:12px;display:flex}.ai-underlay-row{border:1px solid var(--ui-border);border-radius:var(--radius-m);background:var(--ui-surface-2);align-items:center;gap:6px;padding:6px;display:flex}.ai-underlay-row img{object-fit:cover;border-radius:var(--radius-s);border:1px solid var(--ui-border);background:#fff;flex:none;width:44px;height:44px}.ai-underlay-main{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.ai-underlay-name{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.ai-underlay-controls{align-items:center;gap:8px;display:flex}.ai-underlay-controls label{flex:1;align-items:center;gap:6px;min-width:0;font-size:11px;display:flex}.ai-underlay-controls input[type=range]{min-width:40px;accent-color:var(--ui-accent);flex:1}.ai-underlay-width{flex:none;width:104px}.ai-work{flex:1;grid-template-columns:minmax(0,1fr) 336px;gap:14px;min-height:0;display:grid}.ai-preview{border:1px solid var(--ui-border);border-radius:var(--radius-m);background:repeating-conic-gradient(var(--ui-sunken) 0% 25%, transparent 0% 50%) 0 0 / 20px 20px, var(--ui-surface-2);touch-action:none;-webkit-user-select:none;user-select:none;min-height:0;position:relative;overflow:hidden}.ai-preview svg{display:block;position:absolute;inset:0}.ai-preview-image{transition:opacity .2s}.ai-preview.is-dimmed .ai-preview-image{opacity:.45}.ai-preview-tools{border:1px solid var(--ui-border);border-radius:var(--radius-m);background:var(--ui-surface);box-shadow:var(--ui-shadow);cursor:default;gap:2px;padding:2px;display:flex;position:absolute;bottom:8px;right:8px}.ai-side{border:1px solid var(--ui-border);border-radius:var(--radius-m);background:var(--ui-surface);min-height:0;overflow-y:auto}.ai-side .section:last-child{border-bottom:0}.ai-side .segmented svg{width:13px;height:13px}.ai-action{border:1px solid var(--ui-border);border-radius:var(--radius-m);background:var(--ui-surface-2);width:100%;color:var(--ui-text);text-align:left;cursor:pointer;align-items:flex-start;gap:10px;padding:10px 12px;transition:border-color .12s,background .12s;display:flex}.ai-action:hover{border-color:var(--ui-border-strong);background:var(--ui-hover)}.ai-action:disabled{opacity:.5;cursor:default;pointer-events:none}.ai-action>svg{width:18px;height:18px;color:var(--ui-text-2);flex:none;margin-top:1px}.ai-action span{flex-direction:column;gap:2px;min-width:0;display:flex}.ai-action small{color:var(--ui-text-3);font-size:11.5px;line-height:1.4}.ai-action.is-primary{border-color:var(--ui-accent);background:var(--ui-accent);color:var(--ui-accent-text)}.ai-action.is-primary:hover{background:var(--ui-accent-hover);border-color:var(--ui-accent-hover)}.ai-action.is-primary>svg,.ai-action.is-primary small{color:inherit}.ai-action.is-primary small{opacity:.85}.ai-setup-hint{border:1px solid color-mix(in srgb, var(--ui-warn) 45%, transparent);border-radius:var(--radius-m);background:color-mix(in srgb, var(--ui-warn) 10%, transparent);-webkit-user-select:text;user-select:text;padding:8px 10px;font-size:12px;line-height:1.45}.ai-setup-hint p{margin:4px 0 0}.ai-setup-hint code{background:var(--ui-sunken);font-family:var(--font-mono);border-radius:3px;padding:1px 4px;font-size:11px}.ai-ok,.ai-warn{align-items:center;gap:6px;margin:0;display:flex}.ai-ok{color:var(--ui-ok)}.ai-ok svg{width:14px;height:14px}.ai-warn{color:var(--ui-warn)}.ai-progress{flex-direction:column;gap:10px;margin:4px 0;padding:0;list-style:none;display:flex}.ai-progress li{color:var(--ui-text-3);align-items:center;gap:10px;display:flex}.ai-progress li.is-current{color:var(--ui-text);font-weight:600}.ai-progress li.is-done{color:var(--ui-text-2)}.ai-progress svg{flex:none;width:16px;height:16px}.ai-progress li.is-done svg{color:var(--ui-ok)}.ai-progress li.is-current svg{color:var(--ui-accent)}.ai-dot{background:var(--ui-border-strong);border-radius:50%;flex:none;width:6px;height:6px;margin:5px}.ai-spin{animation:.9s linear infinite ai-spin}@keyframes ai-spin{to{transform:rotate(360deg)}}.ai-stats{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.ai-stats div{border-radius:var(--radius-m);background:var(--ui-sunken);flex-direction:column;align-items:center;padding:8px 4px;display:flex}.ai-stats b{font-family:var(--font-display);font-size:20px;line-height:1.1}.ai-stats span{color:var(--ui-text-2);font-size:11px}.ai-scale{justify-content:space-between;align-items:center;gap:8px;font-weight:600;display:flex}.ai-notes{color:var(--ui-text-2);-webkit-user-select:text;user-select:text;flex-direction:column;gap:4px;margin:0;padding-left:16px;font-size:12px;line-height:1.45;display:flex}.ai-legend{color:var(--ui-text-2);flex-wrap:wrap;gap:4px 12px;font-size:11px;display:flex}.ai-key{align-items:center;gap:5px;display:inline-flex}.ai-key:before{content:"";background:var(--ai-c);border-radius:2px;width:14px;height:5px}.ai-import{--ai-exterior:#2f5fe0;--ai-interior:#0e9488;--ai-partition:#c27a0a;--ai-door:#e0452f;--ai-window:#19a7d8;--ai-passage:#9b5de5}.ai-key-exterior{--ai-c:var(--ai-exterior)}.ai-key-interior{--ai-c:var(--ai-interior)}.ai-key-partition{--ai-c:var(--ai-partition)}.ai-key-door{--ai-c:var(--ai-door)}.ai-key-window{--ai-c:var(--ai-window)}.ai-overlay .ai-wall{stroke-linecap:butt;opacity:.55}.ai-overlay .ai-wall-exterior{stroke:var(--ai-exterior)}.ai-overlay .ai-wall-interior{stroke:var(--ai-interior)}.ai-overlay .ai-wall-partition{stroke:var(--ai-partition)}.ai-overlay .ai-opening{opacity:.9}.ai-overlay .ai-opening-door{stroke:var(--ai-door)}.ai-overlay .ai-opening-window{stroke:var(--ai-window)}.ai-overlay .ai-opening-passage{stroke:var(--ai-passage)}.ai-overlay .ai-axis{stroke:#10203f;opacity:.8}.ai-overlay .ai-node{fill:#fff;stroke:#10203f}.ai-overlay .ai-fixture{fill:#9b5de51f;stroke:var(--ai-passage)}.ai-overlay .ai-room,.ai-calibration text{fill:#10203f;stroke:#fff;paint-order:stroke;stroke-linejoin:round;pointer-events:none;font-weight:700}.ai-calibration line{stroke:#e0452f}.ai-calibration circle{fill:#e0452f33;stroke:#e0452f}@media (width<=900px){.ai-pick,.ai-work{grid-template-columns:1fr;grid-auto-rows:minmax(260px,1fr) auto}}.app{grid-template-columns:var(--rail-w) auto minmax(0, 1fr) auto;grid-template-rows:var(--topbar-h) minmax(0, 1fr) var(--statusbar-h);background:var(--ui-bg);grid-template-areas:"top top top top""rail left stage right""status status status status";height:100%;display:grid}.topbar{border-bottom:1px solid var(--ui-border);background:var(--ui-surface);grid-area:top;align-items:center;gap:4px;min-width:0;padding:0 8px;display:flex}.tool-rail{border-right:1px solid var(--ui-border);background:var(--ui-surface);scrollbar-width:none;flex-direction:column;grid-area:rail;align-items:center;gap:2px;padding:6px 0;display:flex;overflow-y:auto}.left-panel{width:var(--left-w);border-right:1px solid var(--ui-border);grid-area:left;min-height:0}.inspector{width:var(--right-w);border-left:1px solid var(--ui-border);grid-area:right;min-height:0}.left-panel.is-collapsed,.inspector.is-collapsed{border:0;width:0}.stage{grid-area:stage;min-width:0;min-height:0;display:flex;position:relative}.stage-pane{flex:1 1 0;min-width:0;min-height:0;position:relative;overflow:hidden}.stage-pane+.stage-pane{border-left:1px solid var(--ui-border)}.stage-loading{height:100%;color:var(--ui-text-3);place-items:center;display:grid}.statusbar{border-top:1px solid var(--ui-border);background:var(--ui-surface);min-width:0;color:var(--ui-text-2);white-space:nowrap;grid-area:status;align-items:center;gap:12px;padding:0 10px;font-size:12px;display:flex}.view3d{position:absolute;inset:0}
