:root{--bg:#f4f5f7;--surface:#fff;--panel:#ffffffc7;--border:#0f172a1f;--border-strong:#0f172a38;--text:#1f2937;--muted:#6b7280;--accent:#2f6fed;--accent-soft:#2f6fed1f;--danger:#dc2626;--danger-soft:#dc26261f;--ok:#16a34a;--radius:10px;--radius-sm:6px;--shadow:0 8px 24px #0f172a1f, 0 1px 3px #0f172a14;--header-h:52px;--font:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono:ui-monospace, "Cascadia Mono", Consolas, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;interpolate-size:allow-keywords}*,:before,:after{box-sizing:border-box}[hidden]{display:none!important}html,body{height:100%;margin:0}body{grid-template-rows:var(--header-h) 1fr;background:var(--bg);color:var(--text);font:14px/1.4 var(--font);-webkit-font-smoothing:antialiased;display:grid;overflow:hidden}.app-header{background:var(--surface);border-bottom:1px solid var(--border);z-index:10;align-items:center;gap:10px;min-width:0;padding:0 12px;display:flex}.app-header .spacer{flex:1}.status{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.app-header .group{gap:4px;display:flex}.project-name{background:0 0;border-color:#0000;width:200px;font-size:15px;font-weight:600}.project-name:hover{border-color:var(--border)}.tabs{background:var(--bg);border-radius:var(--radius);border:1px solid var(--border);gap:2px;padding:3px;display:flex}.tabs button{color:var(--muted);background:0 0;border:none;padding:5px 16px;font-weight:500}.tabs button[aria-selected=true]{background:var(--surface);color:var(--text);box-shadow:0 1px 3px #0f172a26}.app-main{min-height:0;position:relative}.tab-panel{position:absolute;inset:0;overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}button{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer;white-space:nowrap;justify-content:center;align-items:center;gap:6px;padding:5px 12px;transition:background .12s,border-color .12s,box-shadow .12s,scale .1s;display:inline-flex}button:hover:not(:disabled){border-color:var(--border-strong);background:#f9fafb}button:active:not(:disabled){background:#f1f3f6;scale:.97}button:disabled{opacity:.45;cursor:default}button.icon{width:32px;padding:5px 0;font-size:16px}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.primary:hover:not(:disabled){background:#2560d6;border-color:#2560d6}button.danger{color:var(--danger)}button.danger:hover:not(:disabled){background:var(--danger-soft);border-color:var(--danger)}button.active,.app-header button[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}input,select,textarea{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);min-width:0;padding:5px 8px}input[type=number]{font-variant-numeric:tabular-nums;width:80px}input[type=color]{width:36px;height:30px;padding:2px}input[type=range]{accent-color:var(--accent);border:none;padding:0}input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:2px;box-shadow:0 0 0 6px var(--accent-soft)}:focus:not(:focus-visible){outline:none}.panel{background:var(--panel);-webkit-backdrop-filter:blur(14px)saturate(1.4);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);z-index:5;flex-direction:column;gap:8px;max-height:calc(100% - 24px);padding:12px;display:flex;position:absolute;overflow:auto}.panel h3{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0;font-size:12px;font-weight:600}.field{justify-content:space-between;align-items:center;gap:8px;display:flex}.field>span:first-child{color:var(--muted)}.row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.muted{color:var(--muted)}.error{color:var(--danger)}kbd{border:1px solid var(--border-strong);background:var(--surface);font:12px/1.5 var(--mono);border-bottom-width:2px;border-radius:4px;padding:0 5px;display:inline-block}dialog{border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);background:var(--surface);color:var(--text);opacity:0;max-width:min(900px,100vw - 32px);max-height:calc(100vh - 32px);transition:opacity .18s ease-out, scale .18s ease-out, display .18s allow-discrete, overlay .18s allow-discrete;padding:20px;scale:.96}dialog[open]{opacity:1;scale:none}dialog::backdrop{-webkit-backdrop-filter:none;backdrop-filter:none;transition:background-color .18s ease-out, backdrop-filter .18s ease-out, display .18s allow-discrete, overlay .18s allow-discrete;background-color:#0f172a00}dialog[open]::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background-color:#0f172a4d}@starting-style{dialog[open]{opacity:0;scale:.96}dialog[open]::backdrop{-webkit-backdrop-filter:none;backdrop-filter:none;background-color:#0f172a00}}dialog:not([open]),dialog:not([open])::backdrop{pointer-events:none}dialog:has(.pe){scale:none!important}dialog h2{margin:0 0 12px;font-size:18px}dialog form[method=dialog]{justify-content:flex-end;margin-top:16px;display:flex}.help-cols{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:24px;display:grid}.help h3{color:var(--accent);margin:12px 0 6px;font-size:13px}.help dl{grid-template-columns:auto 1fr;gap:4px 12px;margin:0;display:grid}.help dt{max-width:240px}.help dd{color:var(--muted);margin:0}@media (width<=760px){.app-header{overflow-x:auto}.project-name{width:120px}}.notice{top:calc(var(--header-h) + 8px);border-radius:var(--radius);width:max-content;max-width:calc(100vw - 24px);box-shadow:var(--shadow);z-index:20;background:#fffbeb;border:1px solid #f59e0b;align-items:center;gap:10px;padding:6px 6px 6px 14px;font-size:13px;animation:.2s ease-out notice-in;display:flex;position:fixed;left:50%;transform:translate(-50%)}@keyframes notice-in{0%{opacity:0;translate:0 -8px}}.notice .icon{background:0 0;border-color:#0000;flex:none}.status.dirty{color:#b45309}.help-note{margin:12px 0 0;font-size:12px}.app-version{-webkit-user-select:text;user-select:text;align-self:center;margin-right:auto;font-size:11px}.new-project,.print-dlg{width:min(380px,100vw - 32px)}.new-project form[method=dialog],.print-dlg form[method=dialog]{flex-direction:column;gap:10px;margin:0;display:flex}.new-project .field input{flex:1;max-width:240px}.np-keep,.print-dlg label{cursor:pointer;align-items:center;gap:8px;display:flex}.np-keep input,.print-dlg input{accent-color:var(--accent);margin:0}.np-actions{justify-content:flex-end;gap:8px;margin-top:6px;display:flex}.print-dlg p{margin:0;font-size:12px}.pr-quick{flex-wrap:wrap;gap:6px;margin:6px 0;display:flex}.pr-pick{gap:6px;max-height:40vh;margin-bottom:8px;display:grid;overflow:auto}.pr-pick fieldset{border:1px solid var(--border);border-radius:8px;margin:0;padding:4px 10px 6px}.pr-pick legend{padding:0 4px;font-weight:600}.pr-pick label{align-items:center;gap:6px;padding:2px 0;display:flex}::view-transition{pointer-events:none}::view-transition-old(root){animation-duration:.2s}::view-transition-new(root){animation-duration:.2s}@keyframes toast-in{0%{opacity:0;translate:0 8px}}@keyframes toast-out{to{opacity:0;translate:0 4px}}.ctx-menu{z-index:50;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);min-width:200px;max-width:min(340px,100vw - 8px);max-height:calc(100vh - 8px);box-shadow:var(--shadow);flex-direction:column;padding:4px;font-size:13px;animation:.1s ease-out ctx-in;display:flex;position:fixed;overflow-y:auto}@keyframes ctx-in{0%{opacity:0}}.ctx-menu button{text-align:left;background:0 0;border:none;justify-content:flex-start;gap:24px;padding:6px 10px}.ctx-menu button:is(:hover,:focus,:active):not(:disabled){background:var(--accent-soft);box-shadow:none;outline:none;scale:none}.ctx-menu button.danger{color:var(--danger)}.ctx-menu button.danger:is(:hover,:focus,:active):not(:disabled){background:var(--danger-soft)}.ctx-menu kbd{color:var(--muted);font:12px/1.4 var(--font);background:0 0;border:none;margin-left:auto;padding:0}.ctx-title{color:var(--muted);padding:5px 10px 4px;font-size:12px;font-weight:600}.ctx-sep{background:var(--border);flex:none;height:1px;margin:4px 6px}dialog.cmdk{width:min(620px,100vw - 32px);margin:12vh auto auto;padding:0;overflow:hidden}.cmdk-input{border:none;border-bottom:1px solid var(--border);border-radius:0;width:100%;padding:14px 16px;font-size:16px;display:block}.cmdk-input:focus-visible{box-shadow:none;outline:none}.cmdk-list{scrollbar-width:thin;max-height:min(420px,88vh - 120px);padding:4px 6px 6px;scroll-padding:28px 0 4px;overflow-y:auto}.cmdk-head{background:var(--surface);text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:8px 10px 4px;font-size:11px;font-weight:600;position:sticky;top:-4px}.cmdk-item{border-radius:var(--radius-sm);cursor:pointer;align-items:center;gap:10px;padding:7px 10px;display:flex}.cmdk-item[aria-selected=true]{background:var(--accent-soft)}.cmdk-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.cmdk-item[aria-selected=true] .cmdk-label{color:var(--accent)}.cmdk-hint{text-overflow:ellipsis;white-space:nowrap;max-width:45%;color:var(--muted);flex:none;font-size:12px;overflow:hidden}.cmdk-empty{text-align:center;color:var(--muted);padding:18px 10px;display:block}@media (prefers-reduced-motion:reduce){*,:before,:after,::backdrop{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}::view-transition-group(*){animation:none!important}::view-transition-old(*){animation:none!important}::view-transition-new(*){animation:none!important}}.splash{color:#e8ecf5;background:#0b1020;border:0;width:min(1100px,100vw - 32px,177.778vh - 56.8889px);max-width:none;padding:0;overflow:hidden}.splash img{aspect-ratio:16/9;object-fit:cover;width:100%;display:block}.splash form[method=dialog]{background:linear-gradient(#080c1800,#080c18e6 55%);justify-content:space-between;align-items:flex-end;gap:16px;margin:0;padding:72px 28px 24px;position:absolute;inset:auto 0 0}.splash h1{letter-spacing:-.01em;align-items:flex-end;gap:12px;margin:0;font-size:34px;font-weight:600;line-height:1;display:flex}.splash h1 b{color:#8fb3ff;font-weight:inherit}.splash h1 img{aspect-ratio:auto;width:40px;height:40px}.app-header .logo{background:0 0;border-color:#0000;flex:none;padding:2px}.splash p{margin:4px 0 0}.splash a{color:#9cc0ff}.sp-tagline{color:#f2f5fb;font-size:18px}.sp-line{color:#aab4cc;font-size:13px;font-style:italic}.sp-credits{color:#c3cbe0;font-size:13px;margin-top:10px!important}.sp-note{color:#8f9ab5;font-size:12px}.splash button.primary{padding:8px 22px;font-size:15px}@media (width<=640px){.splash form[method=dialog]{background:0 0;flex-direction:column;align-items:stretch;padding:16px;position:static}}.report-dlg{width:min(460px,100vw - 32px)}.report-dlg form[method=dialog]{flex-direction:column;align-items:stretch;gap:10px;margin:0}.report-dlg p{margin:0}.report-dlg .muted{font-size:12px}#report-capture{align-self:flex-start}.rp-shot img{object-fit:contain;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);width:100%;max-height:240px;margin-bottom:6px;display:block}.rp-msg:empty{display:none}.rp-msg{color:var(--danger);font-size:12px}@page{margin:10mm}@page pp-a4{size:A4 landscape}@page pp-a3{size:A3 landscape}.pp-root{display:none}@media print{:is(html:has(>body>.pp-root),body:has(>.pp-root)){height:auto;overflow:visible}body:has(>.pp-root){background:#fff;display:block}body:has(>.pp-root)>:not(.pp-root){display:none!important}.pp-root{color:#000;font:9pt/1.3 var(--font);display:block}}.pp-page{page:pp-a4}.pp-page.pp-a3{page:pp-a3}.pp-page+.pp-page{break-before:page}.pp-head{border-bottom:.3mm solid #000;justify-content:space-between;align-items:flex-start;gap:6mm;height:12mm;display:flex}.pp-head strong{font-size:12pt;display:block}.pp-scale{white-space:nowrap;align-items:center;gap:2mm;display:flex}.pp-bar{display:block}.pp-plan{margin:1mm auto 0;display:block}.pp-note{color:#333;height:5mm;margin:0;padding-top:1mm;font-size:7pt}.pp-list{border-collapse:collapse;width:100%;font-size:8pt}.pp-list tr{break-inside:avoid}.pp-list th,.pp-list td{text-align:left;border-bottom:.2mm solid #999;padding:.6mm 2mm}.pp-list .num{text-align:right;font-variant-numeric:tabular-nums}.pp-list tfoot td{border-top:.4mm solid #000;border-bottom:none;font-weight:600}.pp-fixtures{margin-top:3mm}.pp-fixtures caption{text-align:left;padding:0 2mm .6mm;font-weight:600}.pp-plan text{text-anchor:middle;dominant-baseline:central;font-family:var(--font)}.pp-grid{stroke:#c8c8c8}.pp-wall{fill:#444}.pp-gap{fill:#fff}.pp-jamb,.pp-glass,.pp-leaf,.pp-dim,.pp-plate{stroke:#000}.pp-swing{fill:none;stroke:#000}.pp-item{fill-opacity:.25;stroke:#222}.pp-item.high{fill-opacity:.12}.pp-fixture{fill:#e4e4e4;stroke:#555}.pp-clear{stroke:#aaa}.pp-hatch{stroke:#999}.pp-ceil-low{stroke:none}.pp-ceil-200{stroke:#333}.pp-ridge{stroke:#777}.pp-label{fill:#000;stroke:#fff;stroke-linejoin:round;paint-order:stroke}.pp-name{font-weight:600}.pp-shots{gap:4mm;margin-top:4mm;display:flex}.pp-shots figure{flex:1 1 0;min-width:0;margin:0}.pp-shots img{border:.2mm solid #999;width:100%;height:auto;display:block}.pp-shots figcaption{padding-top:1mm;font-size:8pt}.pe{--pe-bg:#fbfbfc;width:100%;height:100%;position:relative;overflow:hidden}.pe-svg{background:var(--pe-bg);touch-action:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block}.pe.space .pe-svg{cursor:grab}.pe.panning .pe-svg,.pe.panning .pe-svg *{cursor:grabbing!important}.pe-grid0{fill:none;stroke:#0f172a0d}.pe-grid1{fill:none;stroke:#0f172a21}.pe-ctx{fill:#64748b12;stroke:#64748b80;stroke-width:1.5px;stroke-dasharray:5 4;pointer-events:none}.pe-poly{fill:#2f6fed0d;stroke:var(--text);stroke-width:3px;stroke-linejoin:round;pointer-events:none}.pe-poly[data-poly]{pointer-events:fill;cursor:move}.pe-poly.invalid{stroke:var(--danger);fill:var(--danger-soft)}.pe-poly.faded{opacity:.35}.pe-wall-sel{stroke:var(--accent);stroke-width:6px;stroke-linecap:round;pointer-events:none}.pe-hit{stroke:#0000;stroke-width:14px}.pe-hit:hover{stroke:var(--accent-soft)}.pe-vxhit{fill:#0000;cursor:move}.pe-vx{fill:#fff;stroke:var(--text);stroke-width:2px;pointer-events:none}.pe-vxhit:hover+.pe-vx{stroke:var(--accent);r:6px}.pe-vx.sel{fill:var(--accent);stroke:var(--accent)}.pe-dim,.pe-ang,.pe-live,.pe-live-ang{font:12px var(--font);font-variant-numeric:tabular-nums;text-anchor:middle;dominant-baseline:central;paint-order:stroke;stroke:var(--pe-bg);stroke-width:4px;stroke-linejoin:round;fill:var(--text)}.pe-dim,.pe-ang{cursor:text;pointer-events:bounding-box}.pe-dim:hover,.pe-ang:hover{fill:var(--accent)}.pe-badge{fill:#e5e7eb;stroke:#d1d5db;pointer-events:none}.pe-num{font:700 10px var(--font);font-variant-numeric:tabular-nums;text-anchor:middle;dominant-baseline:central;fill:#4b5563;pointer-events:none}.pe-ang{fill:#b45309;font-size:11px}.pe-ang.concave{fill:var(--muted)}.pe-guide{stroke:#e11d48;stroke-width:1px;stroke-dasharray:5 4;pointer-events:none}.pe-draw{fill:none;stroke:var(--accent);stroke-width:3px;stroke-linejoin:round;pointer-events:none}.pe-rubber{stroke:var(--accent);stroke-width:2px;stroke-dasharray:6 4;pointer-events:none}.pe-dpt{fill:#fff;stroke:var(--accent);stroke-width:2px;pointer-events:none}.pe-dpt.first{fill:var(--accent-soft)}.pe-dpt.closing{fill:var(--accent);r:9px}.pe-dcur{fill:var(--accent);pointer-events:none}.pe-live{fill:var(--accent);pointer-events:none;font-weight:600}.pe-live-ang{fill:#b45309;pointer-events:none;font-size:11px}.pe-ask{background:var(--surface);border:1px solid var(--accent);border-radius:var(--radius-sm);box-shadow:var(--shadow);z-index:20;align-items:center;gap:4px;padding:4px 8px 4px 4px;display:flex;position:absolute;transform:translate(-50%,-50%)}.pe-ask input{text-align:right;font-variant-numeric:tabular-nums;width:80px;padding:2px 6px}.pe-ask span{color:var(--muted);font-size:12px}.rt{grid-template-columns:minmax(0,1fr) 320px;display:grid;position:absolute;inset:0}.rt-canvas{min-width:0;min-height:0;position:relative}.rt-stage{position:absolute;inset:0}.rt-ico{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:16px;height:16px}.rt-toolbar{flex-flow:wrap;align-items:center;gap:6px;max-width:calc(100% - 24px);padding:6px;top:12px;left:12px}.rt-group{align-items:center;gap:4px;display:flex}.rt-group+.rt-group{border-left:1px solid var(--border);padding-left:6px}.rt-step{color:var(--muted);align-items:center;gap:4px;display:inline-flex}.rt-step select,.rt-group>select{padding:4px 6px}.rt-hint{color:#fff;text-align:center;pointer-events:none;z-index:6;background:#1f2937db;border-radius:999px;width:max-content;max-width:calc(100% - 24px);padding:6px 14px;font-size:12.5px;transition:background .15s;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.rt-hint:empty{display:none}.rt-hint.flash{background:var(--accent);animation:.2s ease-out toast-in}.rt-hint.flash-out{animation:.2s ease-in forwards toast-out}.rt-side{background:var(--surface);border-left:1px solid var(--border);flex-direction:column;gap:12px;padding:14px;display:flex;overflow:auto}.rt-sec{flex-direction:column;gap:8px;display:flex}.rt-sec:empty{display:none}.rt-sec+.rt-sec:not([data-sec=room]){border-top:1px solid var(--border);padding-top:12px}.rt-sec h3{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0;font-size:12px;font-weight:600}.rt-fold{width:100%;font:inherit;letter-spacing:inherit;text-transform:inherit;color:inherit;text-align:left;background:0 0;border:0;justify-content:flex-start;align-items:center;gap:6px;margin:-3px 0;padding:3px 2px;display:flex}.rt-fold:hover{color:var(--text);background:0 0}.rt-fold .rt-ico{width:14px;height:14px;transition:rotate .15s ease-out}.rt-fold[aria-expanded=false] .rt-ico{rotate:-90deg}.rt-sum{text-overflow:ellipsis;white-space:nowrap;text-transform:none;letter-spacing:0;margin-left:auto;font-weight:400;overflow:hidden}.rt-sec[data-sec=sel]{z-index:2;background:var(--surface);border-bottom:2px solid var(--accent);margin:-14px -14px 0;padding:12px 14px;position:sticky;top:-14px;box-shadow:0 6px 12px -10px #0f172a59}.rt-sel-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.rt-sel-head h3{color:var(--accent);letter-spacing:.02em;font-size:13px}.rt-sel-head button.icon,.rt-slopes button.icon{width:28px;padding:3px 0}.rt-sec .field>span:last-child,.rt-new .field>span:last-child{color:var(--muted);align-items:center;gap:4px;display:inline-flex}.rt-sec .field input:not([type=range]),.rt-sec .field select{color:var(--text)}.rt-sec .field input:not([type]){flex:1;max-width:190px}.rt-sec .field select{max-width:190px}.rt-small{margin:0;font-size:12px}.rt-sub{color:var(--muted);margin-top:4px;font-size:12px;font-weight:600}.rt-row2{grid-template-columns:1fr 1fr;gap:6px 10px;display:grid}.rt-row2 input[type=number]{width:64px}.rt-walls{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:13px}.rt-walls th{text-align:left;color:var(--muted);padding:2px 4px;font-size:12px;font-weight:500}.rt-walls td{color:var(--muted);white-space:nowrap;padding:2px 4px}.rt-walls td:first-child{width:24px;font-weight:700}.rt-walls tbody tr{cursor:pointer}.rt-walls tbody tr:hover{background:#0f172a08}.rt-walls tr.sel{background:var(--accent-soft)!important}.rt-walls tr.sel td:first-child{color:var(--accent)}.rt-walls input{width:74px;color:var(--text)}.rt-walls td:last-child input{width:62px}.rt-walls-box{border:1px solid var(--border);border-radius:var(--radius-sm);max-height:300px;overflow:auto}.rt-walls-box thead th{z-index:1;background:var(--surface);box-shadow:0 1px 0 var(--border);position:sticky;top:0}.rt-item{fill:var(--c);fill-opacity:.16;stroke:var(--c);stroke-opacity:.55;stroke-width:1.5px;pointer-events:none}.rt-use{fill:#64748b0d;stroke:#64748b73;stroke-width:1px;stroke-dasharray:4 3;pointer-events:none}.rt-use.warn{fill:#f59e0b24;stroke:#f59e0b}.rt-new,.rt-pdf{width:min(440px,100vw - 32px)}.rt-new form[method=dialog],.rt-pdf form[method=dialog]{flex-direction:column;justify-content:normal;gap:10px;margin:0;display:flex}.rt-new .field input:not([type=number]){flex:1;max-width:240px}.rt-presets{grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:4px;display:grid}.rt-presets label{border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;text-align:center;flex-direction:column;align-items:center;gap:6px;padding:10px 6px;font-weight:500;display:flex}.rt-presets label:has(input:checked){border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.rt-presets input{opacity:0;pointer-events:none;position:absolute}.rt-presets label:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:2px;box-shadow:0 0 0 6px var(--accent-soft)}.rt-presets .rt-ico{stroke-width:1.5px;width:32px;height:32px}.rt-pre{flex-direction:column;gap:8px;display:none}:is(.rt-new:has(input[value=rect]:checked) .rt-pre[data-pre=rect],.rt-new:has(input[value=l]:checked) .rt-pre[data-pre=l],.rt-new:has(input[value=draw]:checked) .rt-pre[data-pre=draw]){display:flex}.rt-lfig{align-self:center;width:160px}.rt-lfig path{fill:var(--accent-soft);stroke:var(--accent);stroke-width:2px}.rt-lfig .notch{fill:none;stroke:var(--muted);stroke-width:1px;stroke-dasharray:3 3}.rt-lfig text{font:600 11px var(--font);fill:var(--text);text-anchor:middle;dominant-baseline:central}.rt-actions{justify-content:flex-end;gap:8px;margin-top:6px;display:flex}.rt-err{min-height:1em;margin:0;font-size:12px}@media (width<=760px){.rt{grid-template-rows:minmax(0,1fr) 42%;grid-template-columns:1fr}.rt-side{border-left:0;border-top:1px solid var(--border)}}.rt-op-gap{stroke:var(--pe-bg);stroke-width:6px;pointer-events:none}.rt-op-jamb,.rt-op-leaf{stroke:var(--text);stroke-width:2px;stroke-linecap:round;pointer-events:none}.rt-op-glass{stroke:#0ea5e9;stroke-width:1.5px;pointer-events:none}.rt-op-swing{fill:#2f6fed0f;stroke:var(--muted);stroke-width:1px;stroke-dasharray:3 3;pointer-events:none}.rt-op-swing.win{fill:none;stroke-dasharray:1.5 3}.rt-op-hit{stroke:#0000;stroke-width:16px;cursor:grab}.rt-op-hit:hover{stroke:var(--accent-soft)}.rt-op.sel .rt-op-jamb,.rt-op.sel .rt-op-leaf,.rt-op.sel .rt-op-glass{stroke:var(--accent)}.rt-op.sel .rt-op-swing{stroke:var(--accent);fill:var(--accent-soft)}.rt-op-dim{font:600 11px var(--font);font-variant-numeric:tabular-nums;fill:var(--accent);text-anchor:middle;dominant-baseline:central;paint-order:stroke;stroke:var(--pe-bg);stroke-width:3px;stroke-linejoin:round;pointer-events:none}.rt-op-start{fill:var(--accent);pointer-events:none}.rt-stage image{pointer-events:none}.rt-calib{stroke:#e11d48;stroke-width:2px;stroke-dasharray:6 4;pointer-events:none}.rt-calib-pt{fill:#e11d48;stroke:#fff;stroke-width:2px;pointer-events:none}.rt-calib-mode .pe-svg,.rt-calib-mode .pe-svg *,.rt-straight-mode .pe-svg,.rt-straight-mode .pe-svg *,.rt-measure-mode .pe-svg,.rt-measure-mode .pe-svg *,.rt-points-mode .pe-svg,.rt-points-mode .pe-svg *{cursor:crosshair!important}.rt-meas{stroke:var(--accent);stroke-width:2px;stroke-linecap:round;pointer-events:none}.rt-meas.live{stroke-dasharray:6 4}.rt-meas-pt{fill:var(--accent);stroke:#fff;stroke-width:2px;pointer-events:none}.rt-meas-cur{fill:var(--accent);pointer-events:none}.rt-meas-cur.snap{fill:none;stroke:var(--accent);stroke-width:2px}.rt-bgmove-mode .pe-svg,.rt-bgmove-mode .pe-svg *{cursor:move!important}.rt-sec input[type=range]{width:160px}.rt-pt{--pt:#7c3aed}.rt-pt.sel{--pt:var(--accent)}.rt-pt-plate{stroke:var(--pt);stroke-width:3px;pointer-events:none}.rt-pt-lead{stroke:var(--pt);stroke-width:1px;stroke-opacity:.6;pointer-events:none}.rt-pt-bg{fill:#fff;stroke:var(--pt);stroke-width:1.5px;cursor:grab}.rt-pt [data-pt]:hover .rt-pt-bg,.rt-pt.sel .rt-pt-bg{fill:#f5f3ff}.rt-pt-ico{fill:none;stroke:var(--pt);stroke-width:2.2px;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.rt-fx polygon{fill:#64748b24;stroke:#475569;stroke-width:1.5px;stroke-dasharray:5 3;cursor:grab}.rt-fx.flat polygon{fill:#e2e8f0}.rt-fx polygon:hover,.rt-fx.sel polygon{stroke:var(--accent);fill:var(--accent-soft)}.rt-fx.flat polygon:hover,.rt-fx.flat.sel polygon{fill:#dbe7fd}.rt-fx-name{font:500 11px var(--font);fill:#475569;text-anchor:middle;dominant-baseline:central;paint-order:stroke;stroke:var(--pe-bg);stroke-width:3px;stroke-linejoin:round;pointer-events:none}.rt-fx.sel .rt-fx-name{fill:var(--accent)}.rt-points-mode .pe-svg [data-pt] *{cursor:grab!important}.rt-rose{width:40px;height:40px;display:block}.rt-rose circle{fill:var(--surface);stroke:var(--border)}.rt-rose path{fill:var(--muted)}.rt-rose path.n{fill:var(--danger)}.rt-rose text{font:700 7px var(--font);fill:var(--text);text-anchor:middle;dominant-baseline:central}.rt-north{width:48px;height:48px;box-shadow:var(--shadow);pointer-events:none;z-index:4;border-radius:50%;position:absolute;top:96px;right:12px}.rt-north .rt-rose{width:100%;height:100%}.rt-slopes th small{font-size:10.5px;font-weight:400;display:block}.rt-slopes tbody tr{cursor:default}.rt-slopes input{width:64px}.rt-slopes td:first-child{width:auto}.rt-slopes td:last-child{text-align:right;width:1%}.rt-slopes .rt-warn-row td{text-align:left;white-space:normal;width:auto;padding-top:0;font-weight:400}.rt-warn{color:#b45309}.rt-ceil-low{stroke:none;pointer-events:none}.rt-ceil-hatch{stroke:#64748b66;stroke-width:1px}.rt-ceil-iso,.rt-ridge{stroke:#64748b;pointer-events:none}.rt-ceil-iso{stroke-width:1.25px;stroke-dasharray:6 4}.rt-ridge{stroke-width:1px;stroke-opacity:.7}.rt-ceil-lab{font:600 10px var(--font);font-variant-numeric:tabular-nums;fill:#64748b;text-anchor:middle;dominant-baseline:central;paint-order:stroke;stroke:var(--pe-bg);stroke-width:3px;stroke-linejoin:round;pointer-events:none}.ft{--ft-w:290px;--ft-warn:#b45309;position:absolute;inset:0}.ft-stage{position:absolute;inset:0}.ft-panel{width:var(--ft-w);padding:10px}.ft-left{max-height:calc(100% - 112px);top:12px;left:12px;overflow:hidden}.ft-right{width:var(--ft-w);z-index:5;pointer-events:none;flex-direction:column;gap:10px;max-height:calc(100% - 112px);display:flex;position:absolute;top:12px;right:12px}.ft-right>.panel{pointer-events:auto;flex:0 auto;min-height:0;max-height:none;transition:opacity .2s,translate .2s,visibility .2s;position:static}.ft-nopanels .ft-right>.panel{opacity:0;visibility:hidden;pointer-events:none;translate:24px}.ft-nopanels .ft-left{padding:6px}.ft-left,.ft-left>.ft-head,.ft-body{transition:opacity .2s,translate .2s,visibility .2s}@supports (interpolate-size:allow-keywords){.ft-left,.ft-left>.ft-head,.ft-body{transition:opacity .2s,translate .2s,visibility .2s,height .2s,padding .2s,margin .2s}}.ft-nopanels .ft-left>.ft-head{height:0;margin-block:0 -8px;padding-block:0}.ft-nopanels .ft-left>.ft-body,.ft-panel.folded .ft-body{height:0;margin-block:-8px 0;padding-block:0}.ft-nopanels .ft-left>.ft-head,.ft-nopanels .ft-left>.ft-body,.ft-panel.folded .ft-body{opacity:0;visibility:hidden;pointer-events:none}.ft-nopanels .ft-left>.ft-head,.ft-nopanels .ft-left>.ft-body{translate:-24px}.ft-head{justify-content:space-between;align-items:center;margin:-4px -4px -2px 0;display:flex}.ft-left>.ft-head{margin:-10px -10px -8px -6px;padding:6px;overflow:clip}.ft-fold{background:0 0;border-color:#0000;width:26px;height:26px;padding:0}.ft-fold .rt-ico{transition:transform .15s}.ft-panel.folded .ft-fold .rt-ico{transform:rotate(-90deg)}.ft-body{flex-direction:column;gap:8px;min-height:0;margin:-6px;padding:6px;display:flex;overflow:clip}.ft-left .ft-body{flex:auto}.ft-right .ft-body{flex-shrink:0}.ft-small{margin:0;font-size:12px}.ft-panel .field>span:last-child,.ft-dlg .field>span:last-child{color:var(--muted);align-items:center;gap:4px;display:inline-flex}.ft-panel .field input:not([type]){flex:1;min-width:0;max-width:200px}.ft-panel .field input[type=number]{width:64px}.ft-row2,.ft-row3{grid-template-columns:1fr 1fr;gap:6px 10px;display:grid}.ft-row3{grid-template-columns:repeat(3,1fr)}.ft-row3 .field input[type=number]{width:52px}.ft-btns button{padding:4px 8px;font-size:13px}.ft-quick{border-color:var(--accent);width:100%;box-shadow:0 0 0 3px var(--accent-soft);flex:none;padding:7px 10px}.ft-quick[aria-invalid=true]{border-color:var(--danger);box-shadow:0 0 0 3px var(--danger-soft)}.ft-search{flex:none;width:100%}.ft-group{z-index:1;background:var(--surface);position:sticky;top:0}.ft-group:not(:first-child){margin-top:4px}.ft-group-head{width:100%;color:var(--muted);text-align:left;background:0 0;border:1px solid #0000;align-items:center;gap:4px;padding:4px 6px 4px 2px;font-size:12px;font-weight:600;display:flex}.ft-group-head:hover{color:var(--text);background:#0f172a0d}.ft-group-head .rt-ico{flex:none;transition:transform .15s}.ft-group-head[aria-expanded=false] .rt-ico{transform:rotate(-90deg)}.ft-group-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.ft-group-n{font-variant-numeric:tabular-nums;font-weight:500}.ft-group-head.drop{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.ft-cat-list{flex-direction:column;flex:auto;gap:2px;min-height:0;margin:0 -4px;padding:0;list-style:none;display:flex;overflow:auto}.ft-cat{border-radius:var(--radius-sm);cursor:grab;border:1px solid #0000;align-items:center;gap:8px;padding:5px 4px 5px 8px;display:flex}.ft-cat:hover{background:#0f172a0d}.ft-cat.sel{border-color:var(--accent);background:var(--accent-soft)}.ft-swatch{border:1px solid #0f172a40;border-radius:4px;flex:none;width:14px;height:14px}.ft-cat-main{flex-direction:column;flex:1;min-width:0;display:flex}.ft-cat-name{text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.ft-cat-meta{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}.ft-status.own{color:var(--ok)}.ft-status.buy{color:#b45309}.ft-count{color:var(--accent);font-size:11px;font-weight:600}.ft-cat-acts{opacity:.45;transition:opacity .12s;display:flex}.ft-cat:hover .ft-cat-acts,.ft-cat:focus-within .ft-cat-acts{opacity:1}.ft-cat-acts .icon{background:0 0;border-color:#0000;width:26px;height:26px;padding:0}.ft-none{color:var(--muted);padding:6px 4px;font-size:12.5px}.ft-layouts{flex-wrap:wrap;gap:4px;display:flex}.ft-layout{padding:4px 10px}.ft-layout span{color:var(--muted);font-size:11px}.ft-layout.sel{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.ft-sum{grid-template-columns:auto 1fr;gap:2px 12px;margin:0;font-size:13px;display:grid}.ft-sum dt{color:var(--muted)}.ft-sum dd{text-align:right;font-variant-numeric:tabular-nums;margin:0}.ft-why{color:var(--danger);margin:0;padding-left:16px;font-size:12px}.ft-warn{color:var(--ft-warn)}.ft-link{color:inherit;background:0 0;border:0;padding:0;font-weight:600;text-decoration:underline}.ft-link:hover:not(:disabled){background:0 0}.ft-prop-name{align-items:center;gap:8px;display:flex}.ft-prop-name input{flex:1;min-width:0;font-weight:600}.ft-multi{margin:0;font-weight:600}.ft-sel-list{flex-direction:column;gap:3px;max-height:160px;margin:0;padding:0;font-size:13px;list-style:none;display:flex;overflow:auto}.ft-sel-list li{align-items:center;gap:8px;display:flex}.ft-empty{background:var(--panel);-webkit-backdrop-filter:blur(14px);border:1px solid var(--border);border-radius:var(--radius);width:max-content;max-width:min(380px,100% - 24px);box-shadow:var(--shadow);text-align:center;color:var(--muted);pointer-events:none;z-index:4;flex-direction:column;gap:4px;padding:12px 16px;font-size:13px;display:flex;position:absolute;top:12px;left:50%;transform:translate(-50%)}.ft-empty strong{color:var(--text)}.ft-hint{color:#fff;text-align:center;pointer-events:none;z-index:6;background:#1f2937db;border-radius:999px;width:max-content;max-width:calc(100% - 24px);padding:6px 14px;font-size:12.5px;transition:background .15s,opacity .2s,visibility .2s;position:absolute;bottom:64px;left:50%;transform:translate(-50%)}.ft-hint:empty{display:none}.ft-hint.flash{background:var(--accent)}.ft-hint.flash,.ft-pe-hint.flash{animation:.2s ease-out toast-in}.ft-hint.flash-out,.ft-pe-hint.flash-out{animation:.2s ease-in forwards toast-out}.ft-hud,.ft-present{flex-flow:wrap;justify-content:center;align-items:center;gap:4px;width:max-content;max-width:calc(100% - 24px);padding:6px;bottom:12px;left:50%;transform:translate(-50%)}.ft-hud-label{color:var(--muted);padding:0 4px;font-size:12px}.ft-sep{background:var(--border);align-self:stretch;width:1px;margin:0 4px}.ft-chip{padding:4px 10px;font-size:13px}.ft-chip kbd,.ft-present kbd{padding:0 4px;font-size:10.5px}.ft-chip[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.ft-chip[aria-pressed=false],.ft-hud .icon[aria-pressed=false]{color:var(--muted)}.ft-right,.ft-hud,.ft-empty,.ft-present{transition:opacity .2s,translate .2s,visibility .2s}.ft-presenting .ft-left,.ft-presenting .ft-right,.ft-presenting .ft-hud,.ft-presenting .ft-empty,.ft-presenting .ft-hint:not(.flash,.flash-out){opacity:0;visibility:hidden;pointer-events:none}.ft-presenting .ft-right>.panel{pointer-events:none}.ft-presenting .ft-left{translate:-16px}.ft-presenting .ft-right{translate:16px}.ft-presenting .ft-hud{translate:0 16px}.ft-present{opacity:0;visibility:hidden;pointer-events:none;padding:6px 8px;translate:0 16px}.ft-presenting .ft-present{opacity:1;visibility:visible;pointer-events:auto;translate:0}.ft-present>button:not(.icon){padding:4px 10px;font-size:13px}.ft-present select{max-width:170px;padding:4px 6px;font-size:13px}.ft-pr-hour,.ft-pr-north{color:var(--muted);align-items:center;gap:6px;padding:0 4px;font-size:13px;display:inline-flex}.ft-pr-hour input{width:120px}.ft-pr-hour output{min-width:6.5ch;color:var(--text);font-variant-numeric:tabular-nums}.ft-pr-north input{width:58px;padding:4px 6px}.ft-seasons,.ft-cmpmode{gap:2px;display:inline-flex}.ft-rose{flex:none;width:22px;height:22px;transition:rotate .2s}.ft-rose circle{fill:#ffffffb3;stroke:var(--border-strong)}.ft-rose-n{fill:var(--danger)}.ft-rose-s{fill:var(--muted);opacity:.45}.ft-rec-dot{background:var(--danger);border-radius:50%;flex:none;width:9px;height:9px}.ft-rec-status{border:1px solid var(--danger-soft);border-radius:var(--radius-sm);background:linear-gradient(to right, var(--danger-soft) var(--p,0%), transparent var(--p,0%));font-variant-numeric:tabular-nums;align-items:center;gap:6px;min-width:17ch;padding:4px 10px;font-size:13px;display:inline-flex}.ft-rec-status .ft-rec-dot{animation:.8s ease-in-out infinite alternate ft-rec}@keyframes ft-rec{to{opacity:.25}}@media (width<=900px){.ft{--ft-w:240px}}.ft-dlg{width:min(1040px,100vw - 32px);max-width:min(1040px,100vw - 32px)}.ft-dlg form[method=dialog]{margin:0;display:block}.ft-dlg-grid{grid-template-columns:300px minmax(0,1fr);gap:28px;display:grid}.ft-dlg-info,.ft-dlg-parts{flex-direction:column;gap:18px;min-width:0;display:flex}.ft-grp,.ft-pfields{flex-direction:column;gap:8px;min-width:0;display:flex}.ft-grp>h3{border-bottom:1px solid var(--border);text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0;padding-bottom:5px;font-size:12px;font-weight:600}.ft-dlg-info .field input:not([type=number]):not([type=color]),.ft-dlg-info select{flex:1;min-width:0;max-width:200px}.ft-dlg .field input[type=number]{width:72px}.ft-dlg-info .ft-linkf>span:last-child{flex:1;min-width:0;max-width:200px}.ft-dlg-info .ft-linkf input{max-width:none}.ft-open-link{border-radius:var(--radius-sm);color:var(--accent);flex:none;padding:4px;display:inline-flex}.ft-open-link:hover{background:var(--accent-soft)}.ft-dlg-parts .field{justify-content:flex-start}.ft-dlg-parts .ft-row3 .field>span:first-child{min-width:3.4em}.ft-src{width:min(520px,100vw - 32px)}.ft-src .field{margin-bottom:8px}.ft-src .field input{flex:1;min-width:0;max-width:340px}.ft-src .rt-presets{margin-bottom:12px}:is(.ft-src:has(input[value=file]:checked) .rt-pre[data-pre=file],.ft-src:has(input[value=sketchfab]:checked) .rt-pre[data-pre=sketchfab],.ft-src:has(input[value=ikea]:checked) .rt-pre[data-pre=ikea]){display:flex}.ft-orient{width:min(640px,100vw - 32px)}.ft-orient-view{border:1px solid var(--border);border-radius:var(--radius);touch-action:none;height:min(360px,50vh);margin:10px 0;overflow:hidden}.ft-orient-turns{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.ft-secret{-webkit-text-security:disc}.ft-model{flex-direction:column;gap:4px;display:flex}.ft-model p{overflow-wrap:anywhere;margin:0}.ft-paint{align-items:center;gap:6px;display:flex}.ft-notes textarea{resize:vertical;min-height:96px}.ft-ptabs{flex-wrap:wrap;gap:4px;display:flex}.ft-ptab{flex-direction:column;align-items:flex-start;gap:0;padding:3px 10px;line-height:1.25}.ft-ptab small{color:var(--muted);font-size:11px}.ft-ptab.sel{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.ft-pe-wrap{border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.ft-pe{height:clamp(220px,38vh,340px);position:relative;overflow:hidden}.ft-pe-hint{border-top:1px solid var(--border);background:var(--bg);min-height:2.7em;color:var(--muted);margin:0;padding:4px 8px;font-size:11.5px}.ft-pe-hint.flash{color:var(--accent)}.ft-shape{gap:8px}.ft-ptools{gap:4px;margin-left:auto;display:inline-flex}.ft-origin{stroke:var(--danger);stroke-width:1.5px;pointer-events:none}.ft-front{stroke:var(--accent);stroke-width:1.5px;fill:none;pointer-events:none}.ft-front-txt{fill:var(--accent);font:600 11px var(--font);pointer-events:none}.ft-use{flex-wrap:wrap;gap:4px;display:flex}.ft-use button{padding:2px 8px;font-size:12px}.ft-usebar{flex-wrap:wrap;align-items:center;gap:8px 16px;display:flex}.ft-dlg-err{min-height:1em;margin:10px 0 0;font-size:12px}.ft-actions{justify-content:flex-end;align-items:center;gap:8px;margin-top:8px;display:flex}.ft-foot{min-width:0;margin-right:auto}.ft-foot .ft-dlg-err{margin:0}.ft-foot .ft-dlg-err:empty{display:none}.ft-dlg>form>.ft-actions{border-top:1px solid var(--border);margin-top:18px;padding-top:12px}@media (width<=760px){.ft-dlg-grid{grid-template-columns:1fr}}.ft-cat-lamp .rt-ico,.ft-lamp-info .rt-ico{vertical-align:-2px;color:#b45309;width:14px;height:14px;margin-right:4px}.ft-lightf{flex-direction:column;gap:6px;display:flex}.ft-lightf input[type=color]{vertical-align:middle;width:36px;padding:0 2px}.ft-light>h3{justify-content:space-between;align-items:center;display:flex}.ft-light-on{text-transform:none;letter-spacing:0;color:var(--text);cursor:pointer;align-items:center;gap:6px;font-size:12px;font-weight:400;display:inline-flex}.ft-lightf .field>span:last-child{flex:1;justify-content:flex-end;min-width:0;max-width:200px}.ft-lightf .field select{min-width:0}.ft-lightf [data-lk=mount]{flex:0 auto}.ft-lamps{flex-direction:column;gap:2px;max-height:min(60vh,420px);margin:0;padding:8px 10px;font-size:13px;display:none;position:fixed;inset:auto;overflow:auto}.ft-lamps:popover-open{display:flex}.ft-lamps .ft-btns{margin-bottom:4px}.ft-lamp-row{white-space:nowrap;cursor:pointer;align-items:center;gap:8px;padding:2px 0;display:flex}
