@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-vietnamese-400-normal-B8B3d_DU.woff2) format("woff2"),url(/assets/barlow-vietnamese-400-normal-Dcxa7Lg7.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-latin-ext-400-normal-DsA6LmuC.woff2) format("woff2"),url(/assets/barlow-latin-ext-400-normal-DGsTVCL_.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-latin-400-normal-CtwdMZP0.woff2) format("woff2"),url(/assets/barlow-latin-400-normal-Gqj0RTbC.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-vietnamese-500-normal-Ds--_AhX.woff2) format("woff2"),url(/assets/barlow-vietnamese-500-normal-OcIDFxwj.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-latin-ext-500-normal-D9Q9nrG3.woff2) format("woff2"),url(/assets/barlow-latin-ext-500-normal-B8S-Wk_i.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-latin-500-normal-BRhHB0xN.woff2) format("woff2"),url(/assets/barlow-latin-500-normal-BAaAwKGi.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-vietnamese-600-normal-gKnznvH6.woff2) format("woff2"),url(/assets/barlow-vietnamese-600-normal--rM-LJkj.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-latin-ext-600-normal-Brs4HSvV.woff2) format("woff2"),url(/assets/barlow-latin-ext-600-normal-DxfNEZIW.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-latin-600-normal-DMnFtVx9.woff2) format("woff2"),url(/assets/barlow-latin-600-normal-DznpAvW9.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow Semi Condensed;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-semi-condensed-vietnamese-400-normal-BjC3Z287.woff2) format("woff2"),url(/assets/barlow-semi-condensed-vietnamese-400-normal-BeI6Rmzb.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow Semi Condensed;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-semi-condensed-latin-ext-400-normal-G-nJV0eY.woff2) format("woff2"),url(/assets/barlow-semi-condensed-latin-ext-400-normal-BeG6GSzp.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Semi Condensed;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-semi-condensed-latin-400-normal-BUEby1WS.woff2) format("woff2"),url(/assets/barlow-semi-condensed-latin-400-normal-D_MFigGm.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow Semi Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-semi-condensed-vietnamese-600-normal-yHNu2BMg.woff2) format("woff2"),url(/assets/barlow-semi-condensed-vietnamese-600-normal-COnzl65y.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow Semi Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-semi-condensed-latin-ext-600-normal-DlcFr6iZ.woff2) format("woff2"),url(/assets/barlow-semi-condensed-latin-ext-600-normal-BPIGxrat.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Semi Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-semi-condensed-latin-600-normal-CzIuwFFH.woff2) format("woff2"),url(/assets/barlow-semi-condensed-latin-600-normal-BwIbj3EF.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-B3hZxag_.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-ZyMXPjaT.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-400-normal-DvQQgHTq.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-400-normal-CJUKFyLa.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-vietnamese-400-normal-BFiUPp6R.woff2) format("woff2"),url(/assets/ibm-plex-mono-vietnamese-400-normal-DLynVohM.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-ext-400-normal-DxDDqVQb.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-ext-400-normal-uwM7KshN.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-Dm_PoFIZ.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-O6-GRVqx.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg-app: #f3f4f5;--bg-canvas: #ffffff;--bg-chrome: #fafafa;--bg-chrome-2: #f0f1f2;--line: #d6d8db;--line-strong: #a9adb3;--text: #16181b;--text-2: #4b5057;--text-3: #7d838b;--selection: #0a84ff;--snap: #ff9f0a;--warn: #d97706;--danger: #dc2626;--ok: #059669;--layer-network: #2563eb;--layer-cameras: #dc2626;--layer-security: #b45309;--layer-audio: #7c3aed;--layer-tv: #0891b2;--layer-automation: #059669;--layer-lighting: #ca8a04;--surface: var(--bg-chrome-2);--font-ui: "Barlow", system-ui, sans-serif;--font-dense: "Barlow Semi Condensed", "Barlow", sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, monospace}*{box-sizing:border-box}html,body,#root{block-size:100%;inline-size:100%;margin:0}body{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;background:var(--bg-app);color:var(--text);font-family:var(--font-ui);overflow:hidden;overscroll-behavior:none;touch-action:manipulation}button{color:inherit;font:inherit}button:disabled{cursor:not-allowed}.app-shell{background:var(--bg-app);block-size:100dvh;display:grid;grid-template-rows:48px minmax(0,1fr) calc(56px + env(safe-area-inset-bottom));min-block-size:500px}.top-chrome,.tool-tray{align-items:center;background:var(--bg-chrome);display:flex;padding-inline:12px}.top-chrome{border-bottom:1px solid var(--line);justify-content:space-between}.brand-lockup,.project-status,.inspector-heading,.inspector-section{display:grid;gap:2px}.brand-lockup{min-inline-size:0}.brand-name{font-family:var(--font-dense);font-size:17px;font-weight:600;letter-spacing:.01em}.brand-context,.project-status,.inspector-type,.inspector-section{color:var(--text-2);font-size:12px}.brand-context{font-weight:500;margin:0}.project-status{align-items:center;display:flex;font-family:var(--font-mono)}.status-dot{background:var(--ok);border-radius:50%;block-size:7px;inline-size:7px}.chrome-end{align-items:center;display:flex;gap:12px}.route-link{align-items:center;border:1px solid var(--line);border-radius:4px;color:var(--text-2);display:inline-flex;font-family:var(--font-dense);font-size:13px;min-block-size:44px;min-inline-size:44px;padding-inline:10px;text-decoration:none}.route-link:hover{border-color:var(--line-strong);color:var(--text)}.projects-shell{background:var(--bg-app);block-size:100dvh;display:grid;grid-template-rows:48px minmax(0,1fr);min-block-size:500px}.projects-frame{align-content:start;display:grid;gap:12px;margin-inline:auto;max-inline-size:520px;min-block-size:0;overflow-y:auto;overscroll-behavior-y:contain;padding:24px;-webkit-overflow-scrolling:touch}.projects-frame h1{font-family:var(--font-dense);font-size:20px;font-weight:600;margin:0}.projects-frame p{color:var(--text-2);font-size:15px;line-height:1.45;margin:0}.projects-detail{color:var(--text-3)!important;font-size:13px!important}.projects-open{align-items:center;background:var(--bg-chrome-2);border:1px solid var(--line-strong);border-radius:4px;color:var(--text);display:inline-flex;font-family:var(--font-dense);justify-content:center;margin-block-start:8px;min-block-size:48px;padding-inline:16px;text-decoration:none}.project-list{display:grid;gap:8px;list-style:none;margin:0;padding:0}.project-list li{background:var(--bg-chrome);border:1px solid var(--line);border-radius:4px;display:grid;gap:4px;padding:10px}.project-list a{color:var(--text);font-family:var(--font-dense);min-block-size:44px;text-decoration:none}.project-list span{color:var(--text-2);font-family:var(--font-mono);font-size:11px}.projects-open:focus-visible,.route-link:focus-visible{outline:2px solid var(--selection);outline-offset:2px}.catalog-frame{align-content:start;display:grid;gap:16px;margin-inline:auto;max-inline-size:960px;min-block-size:0;overflow-y:auto;overscroll-behavior-y:contain;padding:24px;-webkit-overflow-scrolling:touch}.catalog-frame h1,.catalog-frame h2{font-family:var(--font-dense);margin:0}.catalog-frame h1{font-size:24px}.catalog-frame h2{font-size:18px}.catalog-frame>p,.catalog-review p,.catalog-preview p,.catalog-saved p{color:var(--text-2);line-height:1.45;margin:0}.catalog-link-entry{align-items:end;display:grid;gap:8px;grid-template-columns:minmax(0,1fr) auto auto}.catalog-link-entry label,.catalog-review label{color:var(--text-2);display:grid;font-family:var(--font-mono);font-size:11px;gap:5px}.catalog-link-entry input,.catalog-review input,.catalog-review select{background:var(--bg-canvas);border:1px solid var(--line-strong);border-radius:4px;color:var(--text);font:14px var(--font-ui);min-block-size:44px;padding-inline:9px}.catalog-link-entry button,.catalog-actions button{background:var(--bg-chrome-2);border:1px solid var(--line-strong);border-radius:4px;min-block-size:44px;padding-inline:14px}.catalog-auth-link{color:var(--selection);font-size:13px;grid-column:1 / -1;justify-self:start;min-block-size:32px}.catalog-message{padding:0}.catalog-notice{background:#05966914;border:1px solid var(--ok);border-radius:4px;color:var(--text)!important;padding:10px}.catalog-preview{background:var(--bg-chrome);border:1px solid var(--line);border-radius:4px;display:grid;gap:8px;padding:14px}.catalog-preview ul{margin:0;padding-inline-start:20px}.catalog-preview details p{font:10px/1.4 var(--font-mono);overflow-wrap:anywhere}.catalog-review{background:var(--bg-canvas);border:1px solid var(--line-strong);border-radius:6px;display:grid;gap:16px;padding:16px}.catalog-review fieldset{border:1px solid var(--line);display:grid;gap:10px;grid-template-columns:repeat(2,minmax(0,1fr));margin:0;padding:12px}.catalog-review legend{color:var(--text);font-family:var(--font-dense);font-weight:600;padding-inline:5px}.catalog-review .catalog-check,.catalog-review .catalog-confirm{align-items:center;display:flex;font:14px var(--font-ui);gap:8px;min-block-size:44px}.catalog-review .catalog-check input,.catalog-review .catalog-confirm input{min-block-size:20px;inline-size:20px}.catalog-confirm{background:var(--bg-chrome-2);border:1px solid var(--line);border-radius:4px;padding:10px}.catalog-actions{display:flex;gap:8px;justify-content:end}.catalog-actions button:last-child{background:var(--selection);border-color:var(--selection);color:#fff}.catalog-saved{border-top:1px solid var(--line);display:grid;gap:10px;padding-block-start:16px}.catalog-saved ul{display:grid;gap:6px;list-style:none;margin:0;padding:0}.catalog-saved li button{background:var(--bg-chrome);border:1px solid var(--line);border-radius:4px;display:grid;gap:3px;inline-size:100%;min-block-size:48px;padding:8px 10px;text-align:start}.catalog-saved li span,.catalog-saved-detail span{color:var(--text-2);font:11px var(--font-mono)}.catalog-saved-detail{background:var(--bg-canvas);border:1px solid var(--selection);border-radius:4px;display:grid;gap:5px;padding:10px}.catalog-saved-detail a{color:var(--selection);min-block-size:32px}.update-notice{align-items:center;background:var(--bg-chrome-2);border:1px solid var(--line);border-radius:4px;color:var(--text-2);display:flex;font-size:12px;gap:8px;padding-inline:8px 4px}.update-notice button{background:transparent;border:1px solid var(--line-strong);border-radius:3px;color:var(--text);font-family:var(--font-dense);font-size:12px;min-block-size:44px;min-inline-size:60px}.editor-frame{display:grid;grid-template-columns:minmax(0,1fr) 320px;min-block-size:0;position:relative}.editor-frame-inspector-collapsed{grid-template-columns:minmax(0,1fr)}.plan-canvas{background:var(--bg-app);min-inline-size:0;overflow:hidden;position:relative;touch-action:none}.drawing-canvas{block-size:100%;inline-size:100%;position:relative}.drawing-canvas>.canvas-spike-svg{block-size:100%;inline-size:100%;max-block-size:none;max-inline-size:none}.plan-svg{block-size:100%;cursor:default;display:block;inline-size:100%;touch-action:none;user-select:none;-webkit-user-select:none}.plan-svg-tool-pan{cursor:grab}.plan-svg-tool-pan:active{cursor:grabbing}.plan-svg-tool-place,.plan-svg-tool-calibrate,.plan-svg-tool-measure,.plan-svg-tool-cable{cursor:crosshair}.canvas-spike{background:var(--bg-app);box-sizing:border-box;display:grid;gap:12px;margin:0;min-block-size:100vh;min-block-size:100dvh;padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}.canvas-spike-header{align-items:end;display:flex;gap:16px;justify-content:space-between}.canvas-spike-header div{display:grid;gap:2px}.canvas-spike-header span{color:var(--text-3);font-family:var(--font-mono);font-size:11px;letter-spacing:.04em}.canvas-spike-header h1{font-family:var(--font-dense);font-size:24px;margin:0}.canvas-spike-header p,.canvas-spike-detail,.canvas-spike-status{color:var(--text-2);font-size:13px;margin:0}.canvas-spike-header p{max-inline-size:480px;text-align:end}.canvas-spike-tools{display:flex;flex-wrap:wrap;gap:8px}.canvas-spike-tools button{background:var(--bg-chrome);border:1px solid var(--line-strong);border-radius:4px;color:var(--text);font-family:var(--font-dense);min-block-size:44px;padding-inline:14px}.canvas-spike-tools .spike-tool-active{border-color:var(--selection);box-shadow:inset 0 -3px var(--selection)}.canvas-spike-svg{background:var(--bg-canvas);border:1px solid var(--line-strong);block-size:min(68dvh,620px,calc(var(--canvas-visual-viewport-height, 100dvh) - 220px));display:block;inline-size:min(100%,1100px,var(--canvas-visual-viewport-width, 100vw));justify-self:center;touch-action:none;user-select:none;-webkit-user-select:none}.canvas-spike-paper{fill:var(--bg-canvas)}.canvas-spike-preview{fill:none;stroke:var(--snap);stroke-dasharray:8 5;stroke-width:3}.canvas-spike-handle{stroke:var(--selection);stroke-width:2;vector-effect:non-scaling-stroke}.canvas-spike-drag-ghost{fill:none;stroke:var(--snap);stroke-dasharray:6 4;stroke-width:2;vector-effect:non-scaling-stroke}.canvas-spike-status{min-block-size:20px}.scene-background{opacity:.72}.scene-label{font-family:var(--font-dense);paint-order:stroke fill;stroke:var(--bg-canvas);stroke-linejoin:round;stroke-width:3px}.scene-labels{pointer-events:none}.canvas-empty-state{color:var(--text-2);display:grid;gap:8px;max-inline-size:300px;text-align:center}.drawing-canvas>.canvas-empty-state{inset:50% auto auto 50%;pointer-events:none;position:absolute;translate:-50% -50%}.plan-canvas-no-drawing{overflow-y:auto;padding-block:24px}.plan-canvas-no-drawing .canvas-empty-state{margin-inline:auto}.canvas-empty-state strong{color:var(--text);font-family:var(--font-dense);font-size:20px;font-weight:600}.canvas-empty-state span:last-child{font-size:13px;line-height:1.35}.canvas-eyebrow,.inspector-id{color:var(--text-3);font-family:var(--font-mono);font-size:11px;letter-spacing:.04em}.inspector{background:var(--bg-chrome);border-left:1px solid var(--line);overflow:auto}.inspector-heading{align-items:center;border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto;padding:6px 8px 6px 12px}.inspector-heading>div{display:grid;gap:2px;min-inline-size:0}.inspector-rail-close,.inspector-rail-reopen{background:var(--bg-chrome-2);border:1px solid var(--line-strong);border-radius:4px;min-block-size:44px;padding-inline:10px}.inspector-rail-close{font-size:12px}.inspector-rail-reopen{inset:12px 12px auto auto;position:absolute;z-index:4}.project-form{display:grid;gap:8px;padding:12px}.project-form label,.calibration-panel label{color:var(--text-2);font-family:var(--font-mono);font-size:11px}.project-form input,.calibration-panel input{background:var(--bg-canvas);border:1px solid var(--line-strong);border-radius:4px;color:var(--text);min-block-size:44px;padding-inline:8px}.project-form button,.calibration-panel>button{background:var(--bg-chrome-2);border:1px solid var(--line);border-radius:4px;min-block-size:44px}.project-error{color:var(--danger);font-size:12px;margin:0;padding:0 12px 12px}.plan-import-entry,.plan-import-sheet{border-top:1px solid var(--line);display:grid;gap:8px;padding:12px}.plan-import-entry{grid-template-columns:repeat(2,minmax(0,1fr))}.plan-import-entry p{grid-column:1 / -1;margin:0}.plan-import-entry button,.plan-import-sheet button{background:var(--bg-chrome-2);border:1px solid var(--line-strong);border-radius:4px;min-block-size:44px;padding-inline:10px}.plan-import-sheet input[type=text],.plan-import-sheet input:not([type]){background:var(--bg-canvas);border:1px solid var(--line-strong);border-radius:4px;color:var(--text);min-block-size:44px;padding-inline:8px}.plan-import-pages{display:grid;gap:10px;list-style:none;margin:0;padding:0}.plan-import-pages li{align-items:center;border:1px solid var(--line);display:grid;gap:8px;grid-template-columns:88px minmax(0,1fr) auto auto;padding:8px}.plan-import-pages img{background:var(--surface);height:64px;object-fit:contain;width:88px}.inspector-section{align-items:center;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;min-block-size:44px;padding-inline:12px}.inspector-numbering>div{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end;padding-block:6px}.compact-label-sheet{background:var(--bg-canvas);border:1px solid var(--line-strong);border-radius:8px;box-shadow:0 6px 18px #16181b24;display:grid;gap:12px;inline-size:min(680px,calc(100% - 24px));max-block-size:min(760px,calc(100dvh - 24px));overflow-y:auto;padding:16px}.compact-label-sheet h2,.compact-label-sheet h3,.compact-label-sheet p{margin:0}.compact-label-summary{display:grid;gap:6px;grid-template-columns:repeat(3,minmax(0,1fr));margin:0}.compact-label-summary div{border:1px solid var(--line);display:grid;gap:4px;padding:8px}.compact-label-summary dt{color:var(--text-2);font-size:12px}.compact-label-summary dd{font-family:var(--font-mono);font-weight:600;margin:0}.compact-label-preview{border-top:1px solid var(--line);display:grid;gap:8px;padding-block-start:10px}.compact-label-preview ul{display:grid;gap:4px;list-style:none;margin:0;padding:0}.compact-label-preview li{align-items:center;display:grid;gap:8px;grid-template-columns:72px minmax(0,1fr) auto minmax(0,1fr);min-block-size:32px}.compact-label-preview code{font-family:var(--font-mono);overflow-wrap:anywhere}.inspector-section strong{color:var(--text);font-family:var(--font-mono);font-size:11px;font-weight:400}.inspector-selection{border-bottom:1px solid var(--line);color:var(--text-2);display:grid;font-size:12px;gap:8px;padding:12px}.inspector-selection p{margin:0}.inspector-selection strong{color:var(--text);font-family:var(--font-mono);font-size:11px;font-weight:400}.inspector-selection-detail{display:grid;gap:8px}.inspector-selection-detail>label{color:var(--text-2);display:grid;font-family:var(--font-mono);font-size:11px;gap:4px}.inspector-selection-detail input,.inspector-selection-detail select,.inspector-selection-detail textarea{background:var(--bg-canvas);border:1px solid var(--line-strong);border-radius:4px;color:var(--text);min-block-size:44px;padding:8px}.inspector-selection-detail textarea{min-block-size:72px;resize:vertical}.inspector-selection-detail .project-error{padding:0}.inspector-selection-actions{display:flex;gap:8px}.inspector-selection-actions button{background:var(--bg-chrome-2);border:1px solid var(--line);border-radius:4px;flex:1;min-block-size:44px}.canvas-marquee{fill:color-mix(in srgb,var(--selection) 14%,transparent);stroke:var(--selection);stroke-dasharray:5 4;stroke-width:1.5;vector-effect:non-scaling-stroke}.calibration-panel{border-bottom:1px solid var(--line);display:grid;gap:8px;padding-bottom:12px}.calibration-panel>button{margin-inline:12px}.calibration-panel fieldset{border:0;display:grid;gap:8px;margin:0;padding:4px 12px}.calibration-panel legend{color:var(--text-3);font-family:var(--font-mono);font-size:10px;padding:0}.calibration-panel label{display:grid;gap:4px}.calibrate-flow{display:grid;gap:8px;padding:0 12px}.calibrate-prompt{color:var(--text-2);font-size:12px;margin:0}.calibrate-distance-label{color:var(--text-2);font-family:var(--font-mono);font-size:11px}.calibrate-distance-fields{display:flex;gap:12px}.calibrate-distance-fields label{align-items:center;color:var(--text-2);display:flex;font-family:var(--font-mono);font-size:11px;gap:6px}.calibrate-distance-fields input{inline-size:64px}.calibrate-actions{display:flex;gap:8px}.calibrate-actions button{background:var(--bg-chrome-2);border:1px solid var(--line);border-radius:4px;flex:1;min-block-size:44px}.cable-panel{border-bottom:1px solid var(--line);display:grid;gap:8px;padding-bottom:12px}.cable-panel>button{background:var(--bg-chrome-2);border:1px solid var(--line);border-radius:4px;margin-inline:12px;min-block-size:44px}.cable-list{display:grid;gap:4px;list-style:none;margin:0;padding:0 12px}.cable-row{align-items:center;display:grid;gap:6px;grid-template-columns:auto auto 1fr 1fr}.cable-row-label{color:var(--text);font-family:var(--font-mono);font-size:12px}.cable-row-length{color:var(--text-2);font-family:var(--font-mono);font-size:11px}.cable-row button{background:transparent;border:1px solid var(--line);border-radius:4px;font-size:11px;min-block-size:36px}.cable-flow{display:grid;gap:8px;padding:0 12px}.cable-prompt{color:var(--text-2);font-size:12px;margin:0}.cable-actions{display:flex;gap:8px}.cable-actions button{background:var(--bg-chrome-2);border:1px solid var(--line);border-radius:4px;flex:1;min-block-size:44px}.estimate-panel{border-bottom:1px solid var(--line);display:grid;gap:8px;padding-bottom:12px}.estimate-catalog-label{color:var(--text-3);font-size:11px;margin:0;padding:0 12px}.estimate-blocked{color:var(--danger);font-size:12px;line-height:1.35;margin:0;padding:0 12px}.estimate-empty{color:var(--text-2);font-size:12px;margin:0;padding:0 12px}.estimate-list{display:grid;gap:4px;list-style:none;margin:0;padding:0 12px}.estimate-row{align-items:center;display:grid;gap:6px;grid-template-columns:1fr auto auto auto}.estimate-row-desc{color:var(--text);font-size:12px}.estimate-row-qty,.estimate-row-unit{color:var(--text-2);font-family:var(--font-mono);font-size:11px;text-align:right}.estimate-row-ext{color:var(--text);font-family:var(--font-mono);font-size:12px;text-align:right}.estimate-totals{border-top:1px solid var(--line);display:grid;gap:4px;margin:4px 0 0;padding:8px 12px 0}.estimate-total-row{display:flex;font-family:var(--font-mono);font-size:12px;justify-content:space-between}.estimate-total-row-grand strong{font-size:13px}.estimate-coverage-panel{gap:12px}.estimate-coverage-status{background:color-mix(in srgb,var(--danger) 8%,var(--surface));border:1px solid color-mix(in srgb,var(--danger) 28%,var(--line));display:grid;gap:3px;margin:0 12px;padding:10px 12px}.estimate-coverage-status strong{color:var(--danger);font-size:13px}.estimate-coverage-status span{color:var(--text-2);font-size:11px;line-height:1.4}.estimate-coverage-section{display:grid;gap:7px}.estimate-coverage-section h3{align-items:baseline;color:var(--text);display:flex;font-size:12px;gap:6px;margin:0;padding:0 12px}.estimate-coverage-section h3 small{color:var(--text-3);font-size:10px;font-weight:400}.estimate-coverage-list,.estimate-finding-list{display:grid;gap:5px;list-style:none;margin:0;padding:0 12px}.estimate-coverage-list li{align-items:center;border-bottom:1px solid var(--line);display:grid;gap:8px;grid-template-columns:minmax(0,1fr) auto;padding:5px 0 7px}.estimate-coverage-list li>span:first-child{display:grid;min-width:0}.estimate-coverage-list strong{font-size:12px;overflow-wrap:anywhere}.estimate-coverage-list small{color:var(--text-3);font-family:var(--font-mono);font-size:10px;overflow-wrap:anywhere}.estimate-coverage-quantity{color:var(--text-2);font-family:var(--font-mono);font-size:11px}.estimate-coverage-state{font-size:10px;grid-column:1 / -1;overflow-wrap:anywhere}.estimate-coverage-state-mapped{color:var(--ok)}.estimate-coverage-state-blocked{color:var(--danger);font-family:var(--font-mono)}.estimate-coverage-lines{padding-bottom:3px}.estimate-finding-list li{background:var(--bg-chrome-2);display:grid;gap:4px;padding:9px 10px}.estimate-finding-list strong{color:var(--danger);font-family:var(--font-mono);font-size:10px;overflow-wrap:anywhere}.estimate-finding-list span{color:var(--text);font-size:11px;line-height:1.4}.estimate-finding-list small{color:var(--text-2);font-size:10px;line-height:1.4}.estimate-finding-list button{background:var(--bg-chrome);border:1px solid var(--line-strong);border-radius:4px;justify-self:start;min-block-size:44px;padding-inline:10px}.estimate-finding-list button:focus-visible,.drawing-canvas svg:focus-visible{outline:2px solid var(--selection);outline-offset:2px}.tool-tray{border-top:1px solid var(--line);gap:8px;min-block-size:calc(56px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);position:relative}.history-tool,.primary-action,.tool-button,.view-tool{background:transparent;border:0;min-block-size:48px}.history-tool,.view-tool{color:var(--text-3);font-size:11px;min-inline-size:48px}.view-tool:disabled{opacity:.4}.tool-list{align-items:stretch;display:flex;flex:1;gap:4px;justify-content:center}.tool-button{align-items:center;color:var(--text-2);display:grid;font-family:var(--font-dense);font-size:11px;gap:2px;min-inline-size:56px;padding-inline:6px}.tool-button-active{border-bottom:3px solid var(--selection);color:var(--text)}.tool-glyph{block-size:20px;fill:none;inline-size:20px;margin-inline:auto;stroke:currentcolor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px}.primary-action{background:var(--bg-chrome-2);border:1px solid var(--line);border-radius:4px;color:var(--text-3);font-size:13px;min-inline-size:96px}.primary-action input{block-size:1px;clip:rect(0 0 0 0);clip-path:inset(50%);inline-size:1px;overflow:hidden;position:absolute;white-space:nowrap}.plan-summary{border-bottom:1px solid var(--line);color:var(--text-2);font-size:12px;line-height:1.35;padding:10px 12px}.device-palette{background:var(--bg-chrome);border:1px solid var(--line);border-radius:8px;bottom:12px;box-shadow:0 6px 18px #16181b24,0 1px 2px #16181b14;display:flex;flex-direction:column;inline-size:min(680px,calc(100% - 24px));left:50%;max-block-size:45%;padding:8px;position:absolute;translate:-50% 0;z-index:2}.palette-heading{align-items:center;display:flex;justify-content:space-between;min-block-size:44px;padding:0 4px 8px}.palette-heading>div{display:grid;gap:1px}.palette-heading strong{font-family:var(--font-dense);font-size:15px;font-weight:600}.palette-heading span{color:var(--text-2);font-size:12px}.palette-done{background:transparent;border:1px solid var(--line-strong);border-radius:4px;min-block-size:44px;min-inline-size:64px}.palette-search{display:block;padding-block-end:8px}.palette-search input{background:var(--bg-canvas);border:1px solid var(--line-strong);border-radius:4px;inline-size:100%;min-block-size:44px;padding:8px 12px}.palette-list{display:grid;gap:10px;min-block-size:0;overflow-y:auto;overscroll-behavior:contain}.palette-section{min-inline-size:0}.palette-section h2{color:var(--text-2);font:600 11px var(--font-dense);letter-spacing:.08em;margin:0 0 4px;text-transform:uppercase}.palette-grid{display:grid;gap:4px;grid-template-columns:repeat(6,minmax(0,1fr))}.palette-tile{min-inline-size:0;position:relative}.palette-device{align-items:center;background:transparent;border:1px solid transparent;border-radius:4px;display:grid;inline-size:100%;min-block-size:76px;min-inline-size:44px;padding:5px 3px 12px}.palette-device span{font-family:var(--font-dense);font-size:11px;line-height:1.05;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.palette-device small{color:var(--text-3);font-family:var(--font-mono);font-size:9px}.palette-device-selected{background:#0a84ff14;border-color:var(--selection)}.palette-favorite{background:var(--bg-canvas);border:1px solid var(--line);border-radius:50%;bottom:0;color:var(--warning);font-size:18px;inline-size:44px;min-block-size:44px;padding:0;position:absolute;right:0}.palette-empty{color:var(--text-2);margin:8px 0 12px}.palette-symbol-fallback{align-items:center;border:1px solid currentColor;border-radius:3px;display:flex;font:600 9px var(--font-mono)!important;block-size:30px;inline-size:30px;justify-content:center;justify-self:center}.palette-symbol{block-size:30px;inline-size:30px;justify-self:center;stroke-linecap:round;stroke-linejoin:round}.palette-symbol-network{color:var(--layer-network)}.palette-symbol-cameras{color:var(--layer-cameras)}.palette-symbol-security{color:var(--layer-security)}.palette-symbol-audio{color:var(--layer-audio)}.palette-symbol-tv{color:var(--layer-tv)}.palette-symbol-automation{color:var(--layer-automation)}.palette-symbol-lighting{color:var(--layer-lighting)}.zoom-readout{color:var(--text-2);font-family:var(--font-mono);font-size:11px;margin-inline-start:auto;min-inline-size:56px;text-align:right}button:focus-visible,input:focus-visible,.primary-action:focus-within{outline:2px solid var(--selection);outline-offset:2px}.visually-hidden{block-size:1px;clip:rect(0 0 0 0);clip-path:inset(50%);inline-size:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap}@media(hover:hover)and (pointer:fine){.palette-device:hover,.palette-favorite:hover,.palette-done:hover,.project-form button:hover,.calibration-panel>button:hover,.cable-panel>button:hover,.primary-action:hover{border-color:var(--line-strong);color:var(--text)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important}}.floor-picker-label{align-items:center;color:var(--text-2);display:flex;font-family:var(--font-dense);font-size:13px;gap:6px}.floor-picker-select{background:var(--bg-canvas);border:1px solid var(--line-strong);border-radius:4px;color:var(--text);font:500 13px var(--font-dense);min-block-size:44px;padding-inline:8px}.armed-strip{align-items:center;background:var(--bg-canvas);block-size:48px;border:2px solid var(--selection);border-radius:6px;bottom:max(12px,env(safe-area-inset-bottom));box-shadow:0 6px 18px #16181b24;display:flex;gap:8px;inset-inline:12px;padding-inline:10px;position:absolute;z-index:3}.armed-strip-label{background:transparent;border:0;color:var(--text);flex:1;font:600 13px var(--font-dense);min-block-size:44px;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap}.armed-strip-done{background:var(--bg-chrome-2);border:1px solid var(--line);border-radius:4px;min-block-size:44px;min-inline-size:64px}.canvas-cable-hover,.canvas-calibration-preview{fill:none;stroke:var(--selection);stroke-dasharray:6 4;stroke-linecap:round;stroke-width:2px;vector-effect:non-scaling-stroke}.canvas-cable-hover--snap{stroke:var(--ok);stroke-dasharray:none}.canvas-calibration-point{fill:var(--bg-canvas);stroke:var(--selection);stroke-width:2px;vector-effect:non-scaling-stroke}.canvas-measurement-preview{fill:none;stroke:var(--selection);stroke-linecap:round;stroke-width:2px;vector-effect:non-scaling-stroke}.canvas-measurement-point{fill:var(--selection);stroke:var(--bg-canvas);stroke-width:2px;vector-effect:non-scaling-stroke}.canvas-real-unit-grid{opacity:.42}.canvas-real-unit-grid-line{fill:none;stroke:var(--line-strong);stroke-width:.75px;vector-effect:non-scaling-stroke}.scale-source-badge{background:#fafafaf0;border:1px solid var(--line-strong);border-radius:4px;box-shadow:0 1px 2px #16181b14;display:grid;gap:1px;inset:12px auto auto 12px;padding:6px 8px;pointer-events:none;position:absolute;z-index:2}.scale-source-badge strong{font:600 12px var(--font-dense)}.scale-source-badge span{color:var(--text-2);font:10px var(--font-mono)}.scale-source-badge-unscaled{border-style:dashed}.canvas-cable-endpoint-handle{stroke:var(--selection);stroke-width:2px;vector-effect:non-scaling-stroke}.canvas-cable-endpoint-preview{fill:#0a84ff2e;stroke:var(--selection);stroke-width:2px;vector-effect:non-scaling-stroke}.canvas-cable-vertex-handle{fill:var(--bg-canvas);stroke:var(--selection);stroke-width:2px;vector-effect:non-scaling-stroke}.canvas-cable-vertex-handle[data-active=true]{fill:#0a84ff2e;stroke-width:3px}.canvas-cable-midpoint-handle{fill:none;stroke:var(--selection);stroke-width:1.5px;stroke-dasharray:3 3;vector-effect:non-scaling-stroke}.canvas-cable-route-preview{fill:none;stroke:var(--selection);stroke-dasharray:8 5;stroke-width:2px;vector-effect:non-scaling-stroke}.calibration-panel{background:var(--bg-canvas);border:2px solid var(--selection);border-radius:6px;bottom:max(12px,env(safe-area-inset-bottom));box-shadow:0 6px 18px #16181b24,0 1px 2px #16181b14;display:grid;gap:8px;grid-template-columns:minmax(0,1fr);inset-inline:12px;max-block-size:calc(100% - 24px);max-inline-size:520px;overflow-y:auto;padding:10px;position:absolute;z-index:3}.calibration-panel .calibrate-prompt,.calibration-panel .calibration-preview,.calibration-panel .project-error,.calibration-panel-actions{grid-column:1 / -1;margin:0}.calibration-panel label{color:var(--text-2);display:grid;font-family:var(--font-mono);font-size:11px;gap:4px}.calibration-panel input,.cable-attach-controls select{background:var(--bg-canvas);border:1px solid var(--line-strong);border-radius:4px;color:var(--text);font:17px var(--font-ui);min-block-size:44px;padding-inline:8px}.calibration-distance-label>span{color:var(--text-2);font:12px var(--font-ui)}.calibration-quick-distances{align-items:center;border:0!important;display:flex!important;flex-wrap:wrap;gap:6px!important;margin:0;padding:0!important}.calibration-quick-distances legend{color:var(--text-2);font:11px var(--font-mono);inline-size:100%}.calibration-quick-distances button{background:var(--bg-chrome-2);border:1px solid var(--line-strong);border-radius:4px;min-block-size:44px;min-inline-size:64px;padding-inline:12px}.calibration-panel-actions{display:flex;gap:8px}.calibration-panel-actions button{background:var(--bg-chrome-2);border:1px solid var(--line);border-radius:4px;flex:1;min-block-size:44px}.calibration-panel-actions button[type=submit]{background:var(--selection);border-color:var(--selection);color:#fff}.measurement-panel,.measurement-offer{background:var(--bg-canvas);border:2px solid var(--selection);border-radius:6px;bottom:max(12px,env(safe-area-inset-bottom));box-shadow:0 6px 18px #16181b24,0 1px 2px #16181b14;display:grid;gap:8px;inset-inline:12px;max-inline-size:520px;padding:10px;position:absolute;z-index:3}.measure-prompt{color:var(--text-2);font-size:13px;margin:0}.measurement-result{align-items:baseline;background:var(--bg-chrome-2);border:1px solid var(--line);border-radius:4px;display:grid;gap:2px;padding:8px 10px}.measurement-result span,.measurement-result small{color:var(--text-2);font-size:12px}.measurement-result strong{font:600 20px var(--font-mono);font-variant-numeric:tabular-nums}.grid-toggle{align-items:center;display:flex;font-size:13px;gap:8px;min-block-size:44px}.grid-toggle input{block-size:22px;inline-size:22px;margin:0}.grid-unavailable{color:var(--text-3);font-size:12px;margin:0}.measurement-panel-actions{display:flex;gap:8px}.measurement-panel-actions button,.measurement-offer button{background:var(--bg-chrome-2);border:1px solid var(--line-strong);border-radius:4px;min-block-size:44px;padding-inline:12px}.measurement-panel-actions button:first-child,.measurement-offer button:first-of-type{background:var(--selection);border-color:var(--selection);color:#fff}.measurement-offer{align-items:center;grid-template-columns:minmax(0,1fr) auto auto}.measurement-offer>div{display:grid;gap:1px}.measurement-offer strong{font:600 14px var(--font-dense)}.measurement-offer span{color:var(--text-2);font-size:12px}.cable-native-details{display:grid;gap:4px;margin:0}.cable-native-details div{display:flex;gap:8px;justify-content:space-between}.cable-native-details dt{color:var(--text-3)}.cable-native-details dd{margin:0;text-align:end}.cable-legacy-flag{color:var(--warn)}.cable-attach-controls{display:grid;gap:8px}.cable-attach-controls label{display:grid;gap:4px}.cable-native-list{border-bottom:1px solid var(--line);display:grid;gap:4px;padding:12px}.cable-native-list h2{font:600 13px var(--font-dense);margin:0}.cable-native-list>p{color:var(--text-3);font-size:12px;margin:0}.cable-native-row{background:transparent;border:1px solid var(--line);border-radius:4px;color:var(--text-2);display:grid;font-size:11px;gap:2px;min-block-size:44px;padding:6px 8px;text-align:start}.cable-native-row strong{color:var(--text);font-family:var(--font-mono)}.cable-native-row-selected{border-color:var(--selection)}.drawing-legend{border-bottom:1px solid var(--line);display:grid;gap:6px;padding:12px}.drawing-legend h2{font:600 13px var(--font-dense);margin:0}.drawing-legend>p{color:var(--text-3);font-size:12px;margin:0}.drawing-legend ul{display:grid;gap:4px;list-style:none;margin:0;padding:0}.drawing-legend li{align-items:center;display:grid;gap:8px;grid-template-columns:10px minmax(0,1fr) auto;min-block-size:28px}.drawing-legend li>span:not(.legend-swatch){color:var(--text);font-size:12px}.drawing-legend small{color:var(--text-3);font:10px var(--font-mono)}.legend-swatch{block-size:8px;border-radius:50%;inline-size:8px}.compact-fit-action,.compact-inspector-action{display:none}.selection-action-strip{align-items:center;background:var(--bg-chrome);border-top:1px solid var(--line);display:flex;gap:6px;min-block-size:calc(56px + env(safe-area-inset-bottom));min-inline-size:0;padding:5px max(8px,env(safe-area-inset-right)) max(5px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left));position:relative;z-index:5}.selection-history-actions,.selection-action-list{align-items:center;display:flex;gap:4px;min-inline-size:0}.selection-action-list{overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:thin}.selection-action-strip button{background:transparent;border:1px solid var(--line-strong);border-radius:4px;flex:none;font:500 12px var(--font-ui);min-block-size:44px;padding-inline:9px}.selection-action-strip button:hover,.selection-action-strip button:focus-visible{background:var(--bg-chrome-2)}.selection-action-strip button[aria-pressed=true]{border-color:var(--selection);box-shadow:inset 0 -3px var(--selection)}.selection-action-strip button:focus-visible,.inspector-rail-close:focus-visible,.inspector-rail-reopen:focus-visible,.attributes-sheet button:focus-visible,.attributes-sheet input:focus-visible,.attributes-sheet select:focus-visible,.attributes-sheet textarea:focus-visible,.catalog-mapping-control button:focus-visible,.catalog-mapping-control select:focus-visible{outline:2px solid var(--selection);outline-offset:2px}.selection-context-label{color:var(--text-2);flex:0 1 96px;font:11px var(--font-mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.selection-context-label-guidance{flex-basis:220px;white-space:normal}.selection-more-wrap{flex:none;position:relative}.selection-more-popover{background:var(--bg-canvas);border:1px solid var(--line-strong);border-radius:6px;bottom:calc(100% + 6px);box-shadow:0 6px 18px #16181b24;display:grid;inline-size:190px;padding:4px;position:absolute;right:0;z-index:6}.selection-more-popover button{border:0;inline-size:100%;text-align:start}.selection-action-error{color:var(--danger);flex:1 1 180px;font-size:11px;line-height:1.25;min-inline-size:140px}.selection-delete-action{border-color:var(--danger)!important;color:var(--danger);margin-inline-start:auto}.editor-frame-inspector-collapsed .workspace-alert{inset-inline-end:12px}.more-menu-wrap{position:relative}.more-menu{background:var(--bg-canvas);border:1px solid var(--line-strong);border-radius:6px;bottom:calc(100% + 6px);box-shadow:0 6px 18px #16181b24;display:grid;inline-size:max-content;min-inline-size:180px;padding:4px;position:absolute;right:0;z-index:4}.more-menu button{background:transparent;border:0;border-radius:4px;color:var(--text);font:500 14px var(--font-ui);min-block-size:44px;padding-inline:12px;text-align:start}.more-menu button:hover,.more-menu button:focus-visible{background:var(--bg-chrome-2)}.layers-popover{background:var(--bg-canvas);border:1px solid var(--line-strong);border-radius:6px;bottom:calc(100% + 6px);box-shadow:0 6px 18px #16181b24;display:grid;inline-size:min(420px,calc(100vw - 24px));max-block-size:min(70dvh,560px);overflow-y:auto;padding:8px;position:absolute;right:0;z-index:4}.layers-popover-heading{align-items:center;display:flex;justify-content:space-between}.layers-popover-heading strong{font:600 15px var(--font-dense)}.layers-popover-heading button{background:transparent;border:1px solid var(--line-strong);border-radius:4px;min-block-size:44px;min-inline-size:64px}.layers-popover-columns,.layers-popover li{align-items:center;display:grid;gap:4px;grid-template-columns:minmax(120px,1fr) repeat(3,52px)}.layers-popover-columns{color:var(--text-3);font:10px var(--font-mono);text-align:center}.layers-popover-columns span:first-child{text-align:start}.layers-popover ul{display:grid;list-style:none;margin:0;padding:0}.layers-popover li{border-top:1px solid var(--line);min-block-size:48px}.layer-name{align-items:center;display:flex;font-size:13px;gap:7px;min-inline-size:0}.layer-name i{block-size:9px;border-radius:50%;flex:none;inline-size:9px}.layers-popover label{align-items:center;display:flex;justify-content:center;min-block-size:44px;min-inline-size:44px}.layers-popover input{block-size:22px;inline-size:22px;margin:0}.confirm-sheet-backdrop{align-items:flex-end;background:#16181b52;display:flex;inset:0;justify-content:center;position:fixed;z-index:10}.confirm-sheet{background:var(--bg-canvas);border-radius:8px 8px 0 0;box-shadow:0 -6px 18px #16181b2e;display:grid;gap:10px;inline-size:min(520px,100%);max-block-size:80dvh;overflow-y:auto;padding:16px}.confirm-sheet h2{font:600 17px var(--font-dense);margin:0}.confirm-sheet p{color:var(--text-2);font-size:14px;line-height:1.4;margin:0}.confirm-sheet-actions{display:flex;gap:8px;justify-content:flex-end}.confirm-sheet-actions button{background:var(--bg-chrome-2);border:1px solid var(--line);border-radius:4px;min-block-size:44px;min-inline-size:88px}.confirm-sheet-confirm-destructive{background:var(--danger)!important;border-color:var(--danger)!important;color:#fff!important}.details-sheet-backdrop{align-items:flex-end;background:#16181b52;display:flex;inset:0;justify-content:center;position:fixed;z-index:10}.details-sheet{background:var(--bg-canvas);border-radius:8px 8px 0 0;box-shadow:0 -6px 18px #16181b2e;display:grid;gap:8px;inline-size:min(520px,100%);max-block-size:80dvh;overflow-y:auto;padding:16px}.details-sheet h2{font:600 17px var(--font-dense);margin:0 0 4px}.details-sheet>label{color:var(--text-2);display:grid;font-family:var(--font-mono);font-size:11px;gap:4px}.details-sheet>label input{background:var(--bg-canvas);border:1px solid var(--line-strong);border-radius:4px;color:var(--text);font:17px var(--font-ui);min-block-size:44px;padding-inline:8px}.details-sheet-close{background:transparent;border:1px solid var(--line-strong);border-radius:4px;justify-self:end;min-block-size:44px;min-inline-size:64px}.attributes-sheet{background:var(--bg-canvas);border-radius:8px 8px 0 0;box-shadow:0 -6px 18px #16181b2e;display:grid;gap:10px;inline-size:min(640px,100%);max-block-size:88dvh;overflow-y:auto;padding:16px}.attributes-sheet h2{font:600 17px var(--font-dense);margin:0}.attributes-sheet>label,.attributes-two-column label{color:var(--text-2);display:grid;font:11px var(--font-mono);gap:4px}.attributes-sheet input,.attributes-sheet select,.attributes-sheet textarea{background:var(--bg-canvas);border:1px solid var(--line-strong);border-radius:4px;color:var(--text);font:17px var(--font-ui);min-block-size:44px;padding:8px}.attributes-sheet textarea{min-block-size:88px;resize:vertical}.attributes-two-column{display:grid;gap:10px;grid-template-columns:repeat(2,minmax(0,1fr))}.attributes-sheet-actions{display:flex;gap:8px;justify-content:end}.attributes-sheet-actions button{background:var(--bg-chrome-2);border:1px solid var(--line-strong);border-radius:4px;min-block-size:44px;min-inline-size:96px}.attributes-sheet-actions button:last-child{background:var(--selection);border-color:var(--selection);color:#fff}.cabling-effective-values{display:grid;gap:6px}.cabling-effective-row{border-block-start:1px solid var(--line);display:grid;gap:6px;padding-block:10px}.cabling-effective-row>div{align-items:baseline;display:grid;gap:3px;grid-template-columns:minmax(120px,1fr) auto auto}.cabling-effective-row>div strong{font:600 13px var(--font-dense)}.cabling-effective-row>div span{font-family:var(--font-mono);overflow-wrap:anywhere}.cabling-effective-row>div small{background:var(--bg-chrome-2);border-radius:4px;color:var(--text-2);padding:3px 5px}.cabling-effective-row button,.cabling-repair-controls button,.cabling-repair-grid button,.finish-cabling-actions button,.cabling-deferral-editor button{background:var(--bg-chrome);border:1px solid var(--line-strong);border-radius:4px;min-block-size:44px;padding-inline:10px}.cabling-effective-row details{color:var(--text-2);font-size:11px}.cabling-effective-row details p{margin:4px 0}.cabling-effective-row details ul{margin:4px 0;padding-inline-start:20px}.cabling-fingerprint{font-family:var(--font-mono);overflow-wrap:anywhere}.cabling-repair-controls{border-block-start:1px solid var(--line);padding-block:10px}.cabling-repair-controls>summary,.cabling-effective-row summary{cursor:pointer;font-weight:600;min-block-size:44px;padding-block:12px}.cabling-repair-grid{display:grid;gap:8px;grid-template-columns:minmax(0,1fr) auto}.cabling-repair-grid label,.cabling-repair-controls label,.cabling-deferral-editor label{color:var(--text-2);display:grid;font:11px var(--font-mono);gap:4px}.cabling-repair-grid input,.cabling-repair-grid select,.cabling-repair-controls input,.cabling-repair-controls select,.cabling-deferral-editor textarea{background:var(--bg-canvas);border:1px solid var(--line-strong);border-radius:4px;color:var(--text);font:17px var(--font-ui);min-block-size:44px;padding:8px}.cabling-repair-grid fieldset{border:1px solid var(--line);display:grid;gap:8px;grid-column:1 / -1}.finish-cabling-sheet{background:var(--bg-canvas);border-radius:8px 8px 0 0;box-shadow:0 -6px 18px #16181b2e;display:grid;gap:10px;inline-size:min(720px,100%);max-block-size:88dvh;overflow-y:auto;padding:16px}.finish-cabling-list{display:grid;gap:8px;list-style-position:inside;margin:0;padding:0}.finish-cabling-list>li{background:var(--bg-chrome-2);border-inline-start:3px solid var(--danger);display:grid;gap:5px;padding:10px}.finish-cabling-list>li.finish-cabling-finding-warning{border-inline-start-color:var(--warn)}.finish-cabling-list>li>div:first-child{display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between}.finish-cabling-severity{border:1px solid currentColor;border-radius:4px;font-size:13px;font-weight:600;line-height:1.3;padding:1px 5px}.finish-cabling-severity-blocker{color:var(--danger)}.finish-cabling-severity-warning{color:var(--warn)}.finish-cabling-list p,.finish-cabling-list small{margin:0}.finish-cabling-list small{color:var(--text-2)}.finish-cabling-actions{display:flex;flex-wrap:wrap;gap:8px}.cabling-deferral{border-inline-start:2px solid var(--warn);padding-inline-start:8px}.cabling-deferral-editor{border:1px solid var(--line-strong);display:grid;gap:8px;padding:10px}.cabling-bulk-table{border-collapse:collapse;inline-size:100%}.cabling-bulk-table th,.cabling-bulk-table td{border-block-end:1px solid var(--line);padding:8px;text-align:start}@media(max-width:760px){.cabling-effective-row>div{grid-template-columns:1fr}.cabling-repair-grid{grid-template-columns:1fr}}.catalog-mapping-control{background:var(--bg-chrome);border:1px solid var(--line);border-radius:4px;display:grid;gap:8px;padding:12px}.catalog-mapping-control label{color:var(--text-2);display:grid;font:11px var(--font-mono);gap:4px}.catalog-mapping-control select{background:var(--bg-canvas);border:1px solid var(--line-strong);border-radius:4px;color:var(--text);font:17px var(--font-ui);inline-size:100%;min-block-size:44px;padding:8px}.catalog-mapping-control p{color:var(--text-2);font:13px/1.35 var(--font-ui);margin:0}.catalog-mapping-control button{background:var(--bg-chrome-2);border:1px solid var(--line-strong);border-radius:4px;min-block-size:44px;padding:8px 16px}.catalog-mapping-control button:disabled{color:var(--text-3)}.catalog-mapping-control .catalog-mapping-status{color:var(--text)}.catalog-binding-editor,.allowance-review-control{background:var(--bg-chrome);border:1px solid var(--line);border-radius:4px;display:grid;gap:8px;padding:12px}.catalog-binding-editor h3,.allowance-review-control h3{font:600 15px var(--font-dense);margin:0}.catalog-binding-editor>p,.allowance-review-control>p{color:var(--text-2);font:13px/1.4 var(--font-ui);margin:0}.catalog-binding-editor>label,.allowance-review-control>label:not(.allowance-confirmation){color:var(--text-2);display:grid;font:11px var(--font-mono);gap:4px}.catalog-binding-editor select,.allowance-review-control input{background:var(--bg-canvas);border:1px solid var(--line-strong);border-radius:4px;color:var(--text);font:17px var(--font-ui);min-block-size:44px;padding:8px}.catalog-binding-editor>button,.allowance-review-control>button,.catalog-binding-editor p button{background:var(--bg-chrome-2);border:1px solid var(--line-strong);border-radius:4px;min-block-size:44px;padding:8px 16px}.catalog-binding-editor>button:disabled{color:var(--text-3)}.catalog-task-picker{border-block:1px solid var(--line);padding-block:4px}.catalog-task-picker summary{align-items:center;cursor:pointer;display:flex;font:500 13px var(--font-ui);min-block-size:44px}.catalog-task-picker ul,.catalog-source-list{display:grid;gap:2px;list-style:none;margin:0;max-block-size:260px;overflow-y:auto;padding:0}.catalog-task-picker li label{align-items:center;display:grid;font:13px/1.3 var(--font-ui);gap:8px;grid-template-columns:44px minmax(0,1fr);min-block-size:44px}.catalog-task-picker input,.allowance-confirmation input{inline-size:22px;min-block-size:22px}.allowance-confirmation{align-items:start;display:grid;font:13px/1.4 var(--font-ui);gap:8px;grid-template-columns:28px minmax(0,1fr)}.catalog-source-list{max-block-size:none;padding:0 12px}.catalog-source-list li{border-bottom:1px solid var(--line);display:grid;gap:4px;padding:6px 0 8px}.catalog-source-list li>span{display:grid;font:11px/1.35 var(--font-mono)}.catalog-source-list li>span:last-child{color:var(--text-2)}.catalog-source-list strong{font:600 12px var(--font-ui)}.catalog-source-list small{color:var(--text-3);font:10px/1.35 var(--font-mono)}.capture-sheet{background:var(--bg-canvas);border-radius:8px 8px 0 0;box-shadow:0 -6px 18px #16181b2e;display:grid;gap:12px;inline-size:min(720px,100%);max-block-size:88dvh;overflow-y:auto;padding:16px}.capture-sheet h2,.capture-sheet h3{font-family:var(--font-dense);margin:0}.capture-sheet h2{font-size:17px}.capture-sheet h3{font-size:15px}.capture-intro,.capture-hint,.capture-message{color:var(--text-2);font-size:13px;line-height:1.4;margin:0}.capture-choice-group,.capture-classification fieldset,.label-position-controls{border:1px solid var(--line);display:flex;flex-wrap:wrap;gap:4px 12px;margin:0;padding:8px}.capture-choice-group legend,.capture-classification legend,.label-position-controls legend{color:var(--text-2);font:11px var(--font-mono);padding-inline:4px}.capture-choice-group label,.capture-classification label{align-items:center;display:flex;font-size:13px;gap:7px;min-block-size:44px}.capture-choice-group input,.capture-classification input{block-size:22px;inline-size:22px;margin:0}.capture-compose{border-top:1px solid var(--line);display:grid;gap:7px;padding-block-start:12px}.capture-compose>label{color:var(--text-2);font:11px var(--font-mono)}.capture-compose>label span{color:var(--text-3)}.capture-compose textarea,.capture-compose>input{background:var(--bg-canvas);border:1px solid var(--line-strong);border-radius:4px;color:var(--text);font:17px var(--font-ui);min-block-size:44px;padding:8px}.capture-compose textarea{min-block-size:88px;resize:vertical}.capture-compose>button,.capture-source-actions button,.capture-linked-list button,.capture-classification button,.overlap-device-list button{background:var(--bg-chrome-2);border:1px solid var(--line-strong);border-radius:4px;min-block-size:44px;padding-inline:12px}.capture-compose>button{justify-self:start}.capture-source-actions{display:grid;gap:8px;grid-template-columns:repeat(3,minmax(0,1fr))}.capture-cancel{border-color:var(--line-strong)!important}.capture-retry{background:var(--selection)!important;border-color:var(--selection)!important;color:#fff}.capture-error{padding:0}.capture-linked-list{border-top:1px solid var(--line);display:grid;gap:8px;padding-block-start:12px}.capture-linked-list>p{color:var(--text-3);font-size:13px;margin:0}.capture-linked-list ul{display:grid;gap:8px;list-style:none;margin:0;padding:0}.capture-linked-list li{align-items:center;border:1px solid var(--line);border-radius:4px;display:grid;gap:8px;grid-template-columns:auto minmax(0,1fr) auto;padding:8px}.capture-list-content{display:grid;gap:2px;min-inline-size:0}.capture-list-content strong{font:600 13px var(--font-dense)}.capture-list-content>span{font-size:13px;overflow-wrap:anywhere}.capture-list-content small{color:var(--text-2);font:10px/1.4 var(--font-mono)}.capture-thumb,.capture-thumb-placeholder{block-size:48px;inline-size:64px}.capture-thumb{object-fit:cover}.capture-thumb-placeholder{align-items:center;background:var(--bg-chrome-2);color:var(--text-3);display:flex;font:10px var(--font-mono);justify-content:center}.capture-classify,.capture-classification{grid-column:1 / -1}.capture-classification{background:var(--bg-chrome);border-top:1px solid var(--line);display:grid;gap:8px;padding-block-start:8px}.capture-classification>div{display:flex;gap:8px;justify-content:end}.label-position-controls{display:grid;gap:6px}.label-position-controls>span{color:var(--text-2);font:11px var(--font-mono)}.label-position-controls>div{display:grid;gap:4px;grid-template-columns:repeat(5,minmax(44px,1fr))}.label-position-controls button{background:var(--bg-chrome-2);border:1px solid var(--line-strong);border-radius:4px;min-block-size:44px}.overlap-device-list{display:grid;gap:8px}.overlap-device-list button{display:grid;gap:2px;padding-block:7px;text-align:start}.overlap-device-list strong{font:600 13px var(--font-mono)}.overlap-device-list span{color:var(--text-2);font-size:12px}.compact-capture-action{display:none}.recovery-banner{background:#fff4f4;border:1px solid var(--danger);border-radius:4px;display:grid;gap:6px;padding:10px 12px}.recovery-banner strong{color:var(--text);font-family:var(--font-dense);font-size:14px}.recovery-banner p{color:var(--text-2);font-size:12px;margin:0}.recovery-banner button{background:var(--bg-chrome-2);border:1px solid var(--line-strong);border-radius:4px;justify-self:start;min-block-size:44px;min-inline-size:80px}.workspace-alert{align-items:center;background:#fff4f4;border:1px solid var(--danger);border-radius:4px;box-shadow:0 2px 8px #16181b1f;color:var(--text);display:flex;font-size:12px;gap:8px;inset:8px 332px auto 12px;line-height:1.35;padding:8px;position:absolute;z-index:5}.workspace-alert span{flex:1}.workspace-alert button{background:var(--bg-canvas);border:1px solid var(--line-strong);border-radius:4px;flex:none;min-block-size:44px;padding-inline:10px}.project-row-summary{align-items:center;color:var(--text-2);display:flex;flex-wrap:wrap;font-size:12px;gap:4px 10px}.save-chip{border-radius:3px;font-family:var(--font-mono);font-size:11px;padding:2px 6px}.save-chip-saved{background:#0596691f;color:var(--ok)}.save-chip-dirty{background:#d9770624;color:var(--warn)}.save-chip-error{background:#dc26261f;color:var(--danger)}.project-row-details{color:var(--text-3);font-family:var(--font-mono);font-size:11px}.archived-group{border-top:1px solid var(--line);display:grid;gap:8px;margin-block-start:8px;padding-block-start:8px}.archived-group-heading{color:var(--text-3);font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;margin:0}@media(max-width:760px){.app-shell{grid-template-rows:48px minmax(0,1fr) calc(56px + env(safe-area-inset-bottom))}.projects-shell{grid-template-rows:48px minmax(0,1fr) 64px}.editor-frame{grid-template-columns:minmax(0,1fr)}.inspector{display:none}.inspector.inspector-sheet-open{block-size:auto;border-inline-start:0;border-top:1px solid var(--line);box-shadow:0 -6px 18px #16181b24;display:block;inset:auto 0 64px;max-block-size:60dvh;position:absolute;z-index:4}.inspector-toggle{display:inline-flex!important}.inspector-rail-close,.inspector-rail-reopen{display:none}.tool-list{gap:0;justify-content:space-between}.tool-button{min-inline-size:48px}.device-palette{bottom:8px;inline-size:calc(100% - 16px);max-block-size:45%}.palette-heading span{display:none}.palette-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.projects-frame{align-content:start;padding-block-start:64px}.zoom-readout{min-inline-size:40px}.workspace-alert{inset-inline-end:12px}}@media(max-width:960px){.selection-context-label{display:none}.selection-action-strip{gap:4px}.selection-action-strip button{padding-inline:8px}}.inspector-toggle{display:none}@media(max-width:592px){.tool-tray{gap:0;padding-inline:6px}.history-tool,.view-tool,.tool-button,.primary-action{inline-size:44px;min-inline-size:44px;padding-inline:0}.tool-list{flex:none}.tool-button>span{block-size:1px;clip:rect(0 0 0 0);clip-path:inset(50%);inline-size:1px;overflow:hidden;position:absolute;white-space:nowrap}.inspector-toggle{display:none!important}.compact-inspector-action{display:block}.primary-action{font-size:11px}.zoom-readout{background:#fafafae6;inset:-18px 48px auto auto;margin:0;min-inline-size:40px;padding-inline:3px;position:absolute}.more-menu{max-inline-size:calc(100vw - 12px)}.tray-fit{display:none}.compact-fit-action{display:block}.capture-tool{display:none}.compact-capture-action{display:block}}@media(max-width:420px){.top-chrome{gap:4px;padding-inline:6px}.top-chrome .brand-name,.floor-picker-text{display:none}.brand-lockup{flex:1;overflow:hidden}.brand-context{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.floor-picker-select{inline-size:76px;max-inline-size:76px;padding-inline:4px}.chrome-end{gap:4px}.project-status{font-size:9px;gap:3px}.route-link{padding-inline:6px}.workspace-alert{align-items:stretch;flex-direction:column}.workspace-alert button{align-self:start}.measurement-offer{align-items:stretch;grid-template-columns:1fr 1fr}.measurement-offer>div{grid-column:1 / -1}.plan-import-pages li{grid-template-columns:repeat(2,minmax(0,1fr))}.plan-import-pages img{grid-column:1 / -1;inline-size:100%}.plan-import-pages li label{align-items:center;display:flex;min-block-size:44px;min-inline-size:0}.plan-import-pages li label:last-of-type{align-items:stretch;display:grid;grid-column:1 / -1}.catalog-frame{padding:16px 10px}.catalog-link-entry{align-items:stretch;grid-template-columns:1fr}.catalog-review{padding:10px}.catalog-review fieldset{grid-template-columns:1fr;padding:9px}.catalog-actions{display:grid;grid-template-columns:1fr 1fr}.capture-source-actions{grid-template-columns:1fr}.capture-linked-list li{align-items:stretch;grid-template-columns:1fr auto}.capture-thumb,.capture-thumb-placeholder{grid-row:1}.capture-list-content{grid-column:1 / -1;grid-row:2}.attributes-two-column{grid-template-columns:1fr}}
