html,body,#root{min-height:100%}:root,[data-theme=dark]{--la-teal:#1a7a8a;--bg:#062f38;--surface:#0e4f5b;--surface-2:#145a68;--fg:#f7fafb;--muted:#9bb4bb;--border:#e6f2f424;--accent:#e8b44f;--err:#ef4444;--good:#4ade80;--red-dim:#ef44441f;--font:Inter, -apple-system, BlinkMacSystemFont, system-ui, sans-serif;--mono:ui-monospace, Menlo, Consolas, monospace}[data-theme=light]{--bg:#f7fafb;--surface:#fff;--surface-2:#e6f2f4;--fg:#1d2d35;--muted:#5c6b73;--border:#d9e2e5;--accent:#1a7a8a;--err:#b23b3b;--good:#15803d;--red-dim:#b23b3b14}*{box-sizing:border-box}body{font-family:var(--font);background:var(--bg);color:var(--fg);-webkit-font-smoothing:antialiased;min-height:100vh;margin:0}.app{max-width:960px;margin:0 auto;padding-bottom:48px}.app-wide{max-width:1280px}.appbar{z-index:10;background:color-mix(in srgb, var(--bg) 92%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:10px 16px;display:flex;position:sticky;top:0}.brand{letter-spacing:-.02em;color:var(--accent);white-space:nowrap;font-weight:900}.appbar-menu{flex-shrink:0;position:relative}.menu-toggle{width:44px;height:44px;color:var(--fg);cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;background:0 0;border:none;border-radius:10px;justify-content:center;align-items:center;margin:-6px;padding:0;display:inline-flex}.menu-toggle:hover,.menu-toggle.open{background:color-mix(in srgb, var(--fg) 8%, transparent)}.menu-toggle-bars,.menu-toggle-bars:before,.menu-toggle-bars:after{background:currentColor;border-radius:1px;width:18px;height:2px;transition:transform .15s,opacity .15s;display:block}.menu-toggle-bars{position:relative}.menu-toggle-bars:before,.menu-toggle-bars:after{content:"";position:absolute;left:0}.menu-toggle-bars:before{top:-6px}.menu-toggle-bars:after{top:6px}.menu-toggle.open .menu-toggle-bars{background:0 0}.menu-toggle.open .menu-toggle-bars:before{top:0;transform:rotate(45deg)}.menu-toggle.open .menu-toggle-bars:after{top:0;transform:rotate(-45deg)}.app-menu{z-index:30;border:1px solid var(--border);background:var(--surface);border-radius:14px;min-width:200px;padding:10px;position:absolute;top:calc(100% + 6px);left:0;box-shadow:0 12px 32px #00000047}.app-menu-brand{letter-spacing:-.02em;color:var(--accent);padding:8px 10px 2px;font-weight:900}.app-menu-user{color:var(--muted);border-bottom:1px solid var(--border);margin-bottom:6px;padding:0 10px 10px;font-size:13px;font-weight:600}.app-menu-item{text-align:left;width:100%;color:var(--fg);font:inherit;cursor:pointer;touch-action:manipulation;background:0 0;border:none;border-radius:10px;padding:12px 10px;font-size:15px;font-weight:600;display:block}.app-menu-item:hover,.app-menu-item:focus-visible{background:color-mix(in srgb, var(--fg) 8%, transparent);outline:none}.app-menu-item-danger{color:var(--err)}.app-menu-sep{background:var(--border);height:1px;margin:6px 4px}.backup-section{margin-top:28px}.backup-section h2{margin:0 0 10px;font-size:1.05rem}.backup-note{margin:10px 0 0;font-size:14px;line-height:1.4}.backup-actions{flex-direction:column;gap:10px;max-width:28rem;display:flex}.backup-auto-list{margin:0;padding:0;list-style:none}.backup-auto-list li{border-top:1px solid var(--border);flex-direction:column;gap:2px;padding:10px 0;font-size:15px;display:flex}.backup-auto-list li:first-child{border-top:none;padding-top:0}.crumb{min-width:0;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;z-index:1;flex:1;font-size:14px;line-height:1.35;position:relative;overflow:hidden}.crumb strong{color:var(--fg)}.spacer{flex:1}.user-pill{color:var(--muted);border:1px solid var(--border);border-radius:999px;padding:6px 12px;font-size:12px;font-weight:700}.sync-chip{letter-spacing:.03em;text-transform:uppercase;border:1px solid var(--border);white-space:nowrap;color:var(--muted);border-radius:999px;align-items:center;gap:6px;padding:6px 10px;font-size:11px;font-weight:700;display:inline-flex}.sync-chip-dot{background:var(--muted);border-radius:50%;flex-shrink:0;width:7px;height:7px}.sync-chip-ok{color:var(--good);border-color:color-mix(in srgb, var(--good) 35%, var(--border))}.sync-chip-ok .sync-chip-dot{background:var(--good)}.sync-chip-warn{color:var(--accent);border-color:color-mix(in srgb, var(--accent) 40%, var(--border))}.sync-chip-warn .sync-chip-dot{background:var(--accent)}.sync-chip-err{color:var(--err);border-color:color-mix(in srgb, var(--err) 40%, var(--border))}.sync-chip-err .sync-chip-dot{background:var(--err)}.sync-chip-muted .sync-chip-dot{background:var(--muted);animation:1.2s ease-in-out infinite sync-pulse}@keyframes sync-pulse{0%,to{opacity:.35}50%{opacity:1}}.theme-toggle,.btn{border:1px solid var(--border);background:var(--surface);color:var(--muted);text-transform:uppercase;letter-spacing:.04em;cursor:pointer;border-radius:999px;padding:8px 14px;font-size:12px;font-weight:700}.btn.primary{background:var(--accent);color:#062f38;border-color:#0000}[data-theme=light] .btn.primary{color:#fff}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.pass-room{border-radius:16px;min-height:56px;padding:14px 28px;font-size:16px}.btn.pass-room.done{background:color-mix(in srgb, var(--good) 20%, var(--surface));color:var(--good);border-color:color-mix(in srgb, var(--good) 45%, transparent)}main{padding:28px 20px}h1{letter-spacing:-.02em;margin:0 0 10px;font-size:32px;font-weight:900}.lede{color:var(--muted);margin:0 0 28px;line-height:1.5}.card{background:var(--surface);border:1px solid var(--border);border-radius:16px;margin-bottom:16px;padding:20px 22px}.card h2,.rooms-block h2,.zone-panel h2{letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin:0 0 12px;font-size:13px}.rooms-block h2{color:var(--muted)}.muted{color:var(--muted);font-size:14px}.err{color:var(--err);font-size:14px;line-height:1.45}.toast{color:var(--good);margin:0 0 12px;font-size:14px}.linkish{appearance:none;color:var(--accent);font:inherit;cursor:pointer;text-underline-offset:2px;touch-action:manipulation;-webkit-tap-highlight-color:#1a7a8a33;z-index:2;background:0 0;border:none;margin:-10px -4px;padding:10px 4px;text-decoration:underline;position:relative}.hierarchy-section{margin-bottom:20px}.hierarchy-wing{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0 0 10px;font-size:13px;font-weight:800}.zone-list{flex-direction:column;gap:10px;display:flex}.zone-row-wrap{position:relative}.zone-row{text-align:left;border:1px solid var(--border);background:var(--surface);width:100%;color:var(--fg);cursor:pointer;border-radius:14px;justify-content:space-between;align-items:center;gap:12px;padding:16px 18px;display:flex}.zone-row.done{opacity:.72;border-color:color-mix(in srgb, var(--good) 30%, var(--border));background:color-mix(in srgb, var(--good) 6%, var(--surface))}.zone-row.done.has-fail{border-color:color-mix(in srgb, var(--err) 35%, var(--border));background:color-mix(in srgb, var(--err) 6%, var(--surface))}.zone-row .chev{color:var(--muted);font-size:22px}.zone-row-check{z-index:2;color:#166534;pointer-events:none;background:#bbf7d0;border:2px solid #86efac;border-radius:999px;justify-content:center;align-items:center;width:28px;height:28px;font-size:15px;font-weight:900;line-height:1;display:inline-flex;position:absolute;top:-9px;right:-7px;box-shadow:0 1px 4px #0003}.zone-row-check.fail{color:#991b1b;background:#fecaca;border-color:#fca5a5}[data-theme=dark] .zone-row-check{color:#14532d;background:#86efac;border-color:#bbf7d0}[data-theme=dark] .zone-row-check.fail{color:#7f1d1d;background:#fca5a5;border-color:#fecaca}.zone-head .path{font-family:var(--mono);font-size:14px}.zone-grid{grid-template-columns:1fr 1fr;align-items:stretch;gap:16px;margin-top:20px;display:grid}@media (width<=800px){.zone-grid{grid-template-columns:1fr}.appbar{gap:8px;padding:8px 12px}.crumb{white-space:normal;overflow:visible}.sync-chip{text-overflow:ellipsis;max-width:42vw;padding:6px 8px;font-size:10px;overflow:hidden}}.zone-panel{background:var(--surface);border:1px solid var(--border);width:100%;height:100%;color:var(--fg);text-align:left;cursor:pointer;border-radius:18px;flex-direction:column;min-height:160px;padding:20px 22px;display:flex;position:relative}.zone-panel .zv-bank,.zone-panel .aa-panel{flex:auto}.zone-panel .zv-bank{align-content:center}.zone-panel .aa-panel{flex-direction:column;justify-content:center;display:flex}.zone-panel .aa-panel-bezel{flex-direction:column;flex:1;justify-content:center;display:flex}.zone-panel .zv-bank+.line,.zone-panel .aa-panel+.line{margin-top:auto}.zone-panel.done{opacity:.72;border-color:color-mix(in srgb, var(--good) 30%, var(--border));background:color-mix(in srgb, var(--good) 6%, var(--surface))}.zone-panel.done.has-fail{border-color:color-mix(in srgb, var(--err) 35%, var(--border));background:color-mix(in srgb, var(--err) 6%, var(--surface))}.zone-panel-check{z-index:2;color:#166534;pointer-events:none;background:#bbf7d0;border:2px solid #86efac;border-radius:999px;justify-content:center;align-items:center;width:28px;height:28px;font-size:15px;font-weight:900;line-height:1;display:inline-flex;position:absolute;top:-9px;right:-7px;box-shadow:0 1px 4px #0003}.zone-panel.has-fail .zone-panel-check{color:#991b1b;background:#fecaca;border-color:#fca5a5}[data-theme=dark] .zone-panel-check{color:#14532d;background:#86efac;border-color:#bbf7d0}[data-theme=dark] .zone-panel.has-fail .zone-panel-check{color:#7f1d1d;background:#fca5a5;border-color:#fecaca}.zone-panel .line{color:var(--muted);margin-bottom:6px;font-size:15px}.zone-panel .line b{color:var(--fg);font-weight:600}.rooms-block{background:var(--surface);border:1px solid var(--border);border-radius:18px;margin-top:16px;padding:20px 22px}.room-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.room-chip-wrap{position:relative}.room-chip{background:var(--surface-2);border:1px solid var(--border);width:100%;min-height:56px;color:var(--fg);cursor:pointer;border-radius:14px;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;font-weight:700;display:flex}.room-chip .cnt{font-family:var(--mono);color:var(--muted);font-size:14px}.room-chip.done{opacity:.5;filter:grayscale(.65);border-color:color-mix(in srgb, var(--good) 30%, var(--border));background:color-mix(in srgb, var(--good) 6%, var(--surface-2));color:var(--muted)}.room-check{z-index:2;color:#166534;pointer-events:none;background:#bbf7d0;border:2px solid #86efac;border-radius:999px;justify-content:center;align-items:center;width:28px;height:28px;font-size:15px;font-weight:900;line-height:1;display:inline-flex;position:absolute;top:-9px;right:-7px;box-shadow:0 1px 4px #0003}[data-theme=dark] .room-check{color:#14532d;background:#86efac;border-color:#bbf7d0}.room-head{z-index:8;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:12px;display:flex;position:relative}.room-head h1{margin-bottom:4px}.plan-sketch{--west-col:64px;--east-col:64px;grid-template-columns:var(--west-col) minmax(0, 1fr) var(--east-col);background:var(--surface);border:1px solid var(--border);box-sizing:border-box;border-radius:16px;grid-template-rows:auto minmax(0,1fr) auto;gap:10px 12px;width:100%;height:min(78vh,820px);min-height:480px;margin:0 0 20px;padding:14px 28px 80px;display:grid;position:relative;overflow:visible}.plan-sketch.dense-west-2{--west-col:112px}.plan-sketch.dense-west-3{--west-col:160px}.plan-sketch.dense-east-2{--east-col:112px}.plan-sketch.dense-east-3{--east-col:160px}.door{pointer-events:none;z-index:3;width:72px;height:72px;position:absolute;bottom:-1px;left:50%;transform:translate(-50%)}.door-gap{background:var(--surface);height:1px;position:absolute;bottom:0;left:0;right:0}.door-swing{border:1px solid var(--border);border-bottom:none;border-left:none;border-radius:0 100% 0 0;width:70px;height:70px;position:absolute;bottom:.5px;left:0}.door-leaf{background:var(--border);transform-origin:0;width:70px;height:1px;position:absolute;bottom:0;left:0;transform:rotate(-52deg)}.wall-strip{background:var(--surface-2);border:1px dashed var(--border);z-index:2;box-sizing:border-box;border-radius:8px;flex-direction:column;align-items:stretch;gap:4px;min-width:0;padding:6px 8px 8px;display:flex;position:relative}.wall-strip.north{grid-area:1/2;width:100%;min-height:56px}.wall-strip.west{grid-area:2/1;width:100%;height:100%;min-height:0;overflow:visible}.wall-strip.east{grid-area:2/3;width:100%;height:100%;min-height:0;overflow:visible}.wall-strip.south{grid-area:3/2;width:100%;min-height:56px}.wall-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;background:0 0;border:none;padding:0 2px;font-family:inherit;font-size:10px;font-weight:800;line-height:1.2;display:block;position:static}.wall-label.side-west,.wall-label.side-east,button.wall-label.side-west,button.wall-label.side-east{z-index:5;white-space:nowrap;background:var(--surface);width:max-content;max-width:none;color:var(--muted);cursor:default;box-shadow:0 0 0 1px var(--border);border-radius:4px;padding:2px 6px;position:absolute;top:50%}button.wall-label.side-west,button.wall-label.side-east{cursor:pointer}.wall-label.side-west,button.wall-label.side-west{left:-13px;translate:-50% -50%;rotate:-90deg}.wall-label.side-east,button.wall-label.side-east{left:calc(100% + 13px);right:auto;translate:-50% -50%;rotate:90deg}.fixture-label-side{position:static}.fixture-label-popover{z-index:6;background:var(--surface);border:1px solid var(--border);border-radius:8px;align-items:center;gap:4px;padding:6px;display:flex;position:absolute;top:50%;transform:translateY(-50%);box-shadow:0 4px 16px #0000001f}.fixture-label-side.side-west .fixture-label-popover{left:8px}.fixture-label-side.side-east .fixture-label-popover{left:auto;right:8px}.fixture-label-popover input{border:1px solid var(--border);background:var(--bg);width:8rem;color:var(--fg);font:inherit;border-radius:8px;padding:6px 8px;font-size:12px;font-weight:700}.wall-rows{flex-direction:column;flex:1;justify-content:center;align-items:center;gap:4px;min-height:0;display:flex}.wall-strip.east .wall-rows,.wall-strip.west .wall-rows{flex-flow:wrap;align-content:center}.wall-row{flex-wrap:wrap;justify-content:center;align-items:center;gap:4px;display:flex}.wall-strip.east .wall-row,.wall-strip.west .wall-row{flex-direction:column}.wall-strip.east.wall-dense,.wall-strip.west.wall-dense{padding:4px 4px 6px;overflow:hidden}.wall-strip.east.wall-dense .wall-rows,.wall-strip.west.wall-dense .wall-rows{flex-flow:row;flex:1;justify-content:center;align-items:stretch;height:100%;min-height:0}.wall-strip.east.wall-dense .wall-row,.wall-strip.west.wall-dense .wall-row{flex-flow:column wrap;flex:1;place-content:center flex-start;align-items:center;gap:3px 4px;height:100%;max-height:100%;overflow:hidden}.wall-strip.wall-dense .gas-chip{border-radius:5px;min-width:24px;height:24px;font-size:9px}.wall-strip.wall-dense-3 .gas-chip{min-width:22px;height:22px;padding:0 2px;font-size:8px}.gas-btn{cursor:pointer;background:0 0;border:none;border-radius:8px;padding:0;position:relative}.gas-btn.done .gas-chip{outline:2px solid var(--good)}.gas-btn.failed .gas-chip{outline:2px solid var(--err)}.gas-btn.utt .gas-chip{outline:2px solid var(--accent);outline-style:dashed}.gas-btn.failed:after,.gas-btn.utt:after{content:"!";background:var(--err);color:#fff;text-align:center;pointer-events:none;width:14px;height:14px;box-shadow:0 0 0 1px var(--bg);border-radius:999px;font-size:10px;font-weight:900;line-height:14px;position:absolute;top:-6px;right:-6px}.gas-btn.utt:after{content:"?";background:var(--accent);color:#062f38}.status-banner{border-radius:12px;margin:0 0 16px;padding:10px 14px;font-size:14px}.status-banner.ok{background:color-mix(in srgb, var(--good) 16%, var(--surface));color:var(--good)}.status-banner.bad{background:color-mix(in srgb, var(--err) 14%, var(--surface));color:var(--err)}.gas-chip{letter-spacing:-.02em;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;min-width:28px;height:28px;padding:0 4px;font-size:10px;font-weight:900;display:inline-flex}.gas-chip.gas-o2{color:#052e16;background:#22c55e;border-color:#15803d}.gas-chip.gas-co2{color:#111827;background:#9ca3af;border-color:#6b7280}.gas-chip.gas-vac{color:#111827;background:#fff;border-color:#9ca3af}.gas-chip.gas-n2{color:#f9fafb;background:#111827;border-color:#374151}.gas-chip.gas-air{color:#422006;background:#eab308;border-color:#a16207}.gas-chip.gas-n2o{color:#eff6ff;background:#2563eb;border-color:#1d4ed8}.gas-chip.gas-ia{color:#fef2f2;background:#dc2626;border-color:#b91c1c}.gas-chip.gas-wagd{color:#faf5ff;background:#9333ea;border-color:#7e22ce}.gas-chip.gas-unknown{background:var(--surface);color:var(--muted);border-color:var(--border)}[data-theme=dark] .gas-chip.gas-vac{box-shadow:inset 0 0 0 1px #0003}.boom-cross{width:100%;min-width:180px;height:100%;min-height:180px;position:relative}.boom-cross.floating{width:220px;height:220px;position:absolute;top:58%;left:50%;transform:translate(-50%,-50%)}.boom-cross .core{border:1px solid var(--accent);color:var(--accent);text-align:center;background:var(--surface);z-index:1;border-radius:8px;justify-content:center;align-items:center;font-size:12px;font-weight:800;display:flex;position:absolute;inset:70px}.boom-cross .face{background:var(--surface-2);border:1px solid var(--border);border-radius:8px;justify-content:center;align-items:center;gap:3px;padding:4px;display:flex;position:absolute}.boom-cross .face-a{height:56px;top:8px;left:70px;right:70px}.boom-cross .face-b{flex-direction:column;width:56px;top:70px;bottom:70px;right:8px}.boom-cross .face-c{height:56px;bottom:8px;left:70px;right:70px}.boom-cross .face-d{flex-direction:column;width:56px;top:70px;bottom:70px;left:8px}.face-tag{color:var(--muted);font-size:10px;font-weight:800;position:absolute}.face-a .face-tag{top:-14px;left:50%;transform:translate(-50%)}.face-b .face-tag{top:50%;right:-14px;transform:translateY(-50%)}.face-c .face-tag{bottom:-14px;left:50%;transform:translate(-50%)}.face-d .face-tag{top:50%;left:-14px;transform:translateY(-50%)}.fixture-row{border-top:1px solid var(--border);justify-content:space-between;gap:12px;padding:10px 0;display:flex}.fixture-row:first-of-type{border-top:none;padding-top:0}.login-main{max-width:420px}.login-card{flex-direction:column;gap:16px;display:flex}.field{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);flex-direction:column;gap:8px;font-size:13px;font-weight:700;display:flex}.field input,.field textarea{font:inherit;text-transform:none;letter-spacing:normal;color:var(--fg);background:var(--bg);border:1px solid var(--border);border-radius:12px;padding:12px 14px;font-weight:500}.choices{flex-wrap:wrap;gap:10px;display:flex}.choice{border:1px solid var(--border);background:var(--surface-2);color:var(--fg);cursor:pointer;border-radius:999px;padding:10px 16px;font-size:14px;font-weight:700}.choice.sel-good{border-color:var(--good);color:var(--good)}.choice.sel-bad{border-color:var(--err);color:var(--err)}.choice.sel-neutral{border-color:var(--accent);color:var(--accent)}.chip-grid{flex-wrap:wrap;gap:10px;display:flex}.hint{text-transform:none;letter-spacing:normal;color:var(--muted);font-size:13px;font-weight:500}.fail-panel{background:linear-gradient(0deg, var(--red-dim), var(--red-dim)), var(--surface);border:1px solid #ef444473;border-radius:18px;flex-direction:column;gap:18px;margin-top:8px;padding:20px 22px;display:flex}.pass-panel{border:1px solid color-mix(in srgb, var(--good) 40%, var(--border));background:color-mix(in srgb, var(--good) 8%, var(--surface));border-radius:18px;flex-direction:column;gap:18px;margin-top:8px;padding:20px 22px;display:flex}.photo-grid{flex-wrap:wrap;gap:10px;display:flex}.photo-thumb{border:1px solid var(--border);background:var(--surface-2);border-radius:12px;width:88px;height:88px;position:relative;overflow:hidden}.photo-thumb img{object-fit:cover;width:100%;height:100%;display:block}.photo-remove{color:#fff;cursor:pointer;background:#000000a6;border:none;border-radius:999px;width:24px;height:24px;padding:0;font-size:16px;line-height:1;position:absolute;top:4px;right:4px}.photo-add{border:1px dashed var(--border);background:var(--surface);width:88px;height:88px;color:var(--muted);letter-spacing:.04em;text-transform:uppercase;cursor:pointer;border-radius:12px;font-size:12px;font-weight:700}.photo-add:disabled{opacity:.5;cursor:not-allowed}.photo-thumb-saved{text-decoration:none;display:block}.saved-photos .hint{margin-top:0}.asset-ident h1{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.gas-pill{border:1px solid #0000;border-radius:999px;align-items:center;padding:4px 12px;font-size:16px;font-weight:800;display:inline-flex}.gas-pill.gas-o2{color:#052e16;background:#22c55e;border-color:#15803d}.gas-pill.gas-co2{color:#111827;background:#9ca3af;border-color:#6b7280}.gas-pill.gas-vac{color:#111827;background:#fff;border-color:#9ca3af}.gas-pill.gas-n2{color:#f9fafb;background:#111827;border-color:#374151}.gas-pill.gas-air{color:#422006;background:#eab308;border-color:#a16207}.gas-pill.gas-n2o{color:#eff6ff;background:#2563eb;border-color:#1d4ed8}.gas-pill.gas-ia{color:#fef2f2;background:#dc2626;border-color:#b91c1c}.gas-pill.gas-wagd{color:#faf5ff;background:#9333ea;border-color:#7e22ce}.gas-pill.gas-unknown{background:var(--surface-2);color:var(--fg);border-color:var(--border)}.meta{font-family:var(--mono);margin-top:6px;font-size:14px}.kv{border-top:1px solid var(--border);justify-content:space-between;gap:16px;padding:10px 0;font-size:15px;display:flex}.kv:first-of-type{border-top:none;padding-top:0}.kv span{color:var(--muted)}.room-head-actions,.room-meta-edit{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.room-number-input,.room-name-input,.room-meta-edit select,.defaults-bar input,.fixture-label-edit input{border:1px solid var(--border);background:var(--surface);color:var(--fg);font:inherit;border-radius:8px;padding:8px 10px}.room-number-input{letter-spacing:-.02em;width:8rem;font-size:28px;font-weight:900}.room-name-input{min-width:10rem}.defaults-bar{flex-wrap:wrap;align-items:center;gap:10px 14px;margin-bottom:12px;padding:12px 16px;display:flex}.defaults-bar .field.inline{align-items:center;gap:6px;margin:0;display:flex}.defaults-bar .field.inline span{text-transform:uppercase;color:var(--muted);font-size:11px;font-weight:700}.defaults-bar .field.inline input{width:7rem}.defaults-bar .conn-field{flex:100%;align-items:flex-start}.conn-chips{flex-wrap:wrap;gap:6px;display:flex}.conn-chip{border:1px solid var(--border);background:var(--surface);color:var(--muted);letter-spacing:.02em;cursor:pointer;border-radius:999px;padding:6px 12px;font-size:11px;font-weight:800}.conn-chip.selected{background:var(--accent);color:#062f38;border-color:#0000}[data-theme=light] .conn-chip.selected{color:#fff}.plan-sketch.editing{outline:1px dashed color-mix(in srgb, var(--accent) 45%, transparent);outline-offset:2px}.plan-sketch.drop-active .drop-ready{box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--accent) 40%, transparent)}.plan-sketch.drop-active .drop-ready.drop-hover,.plan-sketch.drop-active .face.drop-hover{box-shadow:inset 0 0 0 2px var(--accent);background:color-mix(in srgb, var(--accent) 10%, var(--surface-2))}.plan-sketch.drop-active .mid-cell.empty.no-drop{opacity:.4;cursor:not-allowed}.mid-grid{z-index:1;pointer-events:none;grid-area:2/2;grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(3,1fr);gap:8px;width:100%;height:100%;min-height:140px;display:grid;position:relative}.mid-grid.mid-plain{flex-wrap:wrap;place-content:center;align-items:center;gap:12px;display:flex}.plan-sketch.editing .mid-grid{pointer-events:auto}.mid-cell{border:1px dashed var(--border);background:color-mix(in srgb, var(--surface-2) 55%, transparent);pointer-events:auto;border-radius:10px;justify-content:center;align-items:center;min-height:0;display:flex;position:relative}.mid-cell.empty{color:var(--muted);font-size:22px;font-weight:800}.mid-cell-hit{color:inherit;font:inherit;cursor:pointer;background:0 0;border:none;border-radius:10px;font-size:22px;font-weight:800;position:absolute;inset:0}.mid-cell.empty.idle{opacity:0;pointer-events:none;background:0 0;border-color:#0000}.mid-cell.empty.active,.slot-plus.active,.slot-gap.active{border-color:var(--accent);color:var(--accent);background:color-mix(in srgb, var(--accent) 12%, var(--surface));z-index:6}.mid-cell.filled{background:0 0;border-style:solid;padding:4px;overflow:auto}.mid-type-popover{z-index:8;background:var(--surface);border:1px solid var(--border);border-radius:12px;min-width:168px;padding:10px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 8px 24px #0000002e}.mid-type-popover-head{justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;font-size:12px;display:flex}.mid-type-popover .mid-type-actions{grid-template-columns:1fr 1fr;gap:6px;display:grid}.mid-type-popover .mid-type-actions .btn{text-transform:capitalize;width:100%}.simple-mid{flex-direction:column;justify-content:center;align-items:stretch;gap:6px;width:100%;height:100%;padding:6px;display:flex}.simple-mid.floating{background:var(--surface-2);border:1px dashed var(--border);border-radius:8px;width:200px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.fixture-label-edit{align-items:center;gap:4px;display:flex}.fixture-label-edit input{text-transform:uppercase;letter-spacing:.04em;flex:1;min-width:0;padding:4px 6px;font-size:11px;font-weight:800}.outlet-slot{align-items:center;gap:2px;display:inline-flex;position:relative}.wall-row.editing{align-items:center;gap:2px}.slot-gap{cursor:pointer;background:0 0;border:1px dashed #0000;border-radius:4px;width:10px;height:28px;padding:0}.slot-gap:hover{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 10%, transparent)}.slot-plus{border:1px dashed var(--border);background:var(--surface);min-width:28px;height:28px;color:var(--muted);cursor:pointer;border-radius:6px;font-weight:800}.archive-chip{background:color-mix(in srgb, var(--err) 16%, var(--surface));color:var(--err);cursor:pointer;border:none;border-radius:999px;width:18px;height:18px;padding:0;font-size:12px;font-weight:800;line-height:1}.gas-btn.dragging{opacity:.45}.add-row-btn{white-space:nowrap;flex-shrink:0;align-self:center;max-width:100%;margin-top:4px;padding:4px 10px;font-size:10px}.face .wall-row{flex-wrap:wrap;justify-content:center}.face-b .wall-row,.face-d .wall-row{flex-direction:column}.face-b .slot-gap,.face-d .slot-gap{width:28px;height:10px}.gas-palette{z-index:20;background:var(--surface);border:1px solid var(--border);border-radius:16px;margin:0 0 16px;padding:14px 16px;position:sticky;bottom:12px;box-shadow:0 8px 28px #0000002e}.gas-palette-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.gas-palette-status{text-align:right;font-size:12px;font-weight:600}.gas-palette-grid{flex-wrap:wrap;gap:8px;display:flex}.palette-gas{border:1px solid var(--border);background:var(--surface-2);border-radius:10px;flex-direction:column;align-items:center;gap:4px;padding:6px;display:inline-flex}.palette-gas-label{color:var(--muted);font-size:10px;font-weight:800}.rooms-block-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.rooms-block-head h2{margin:0}.modal-backdrop{z-index:40;background:#00000073;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal-card{width:min(420px,100%);margin:0}.modal-card h2{margin-bottom:16px}.room-class-field{border:none;margin:0 0 12px;padding:0}.room-class-field legend{text-transform:uppercase;color:var(--muted);margin-bottom:8px;font-size:12px;font-weight:700}.radio-row{color:var(--fg);align-items:flex-start;gap:8px;margin-bottom:8px;font-size:14px;display:flex}.modal-actions{justify-content:flex-end;gap:8px;margin-top:8px;display:flex}.zv-stage,.zv-edit-hint{margin-bottom:16px}.zv-meta-fields{flex-direction:column;gap:4px;display:flex}.zv-meta-fields .hint{margin-top:4px}.zv-rooms-label{margin:0 0 8px;font-size:18px;font-weight:700}.zv-bank{border:1px solid var(--border);background:color-mix(in srgb, var(--surface-2) 55%, transparent);border-radius:12px;flex-wrap:wrap;justify-content:center;align-items:stretch;gap:20px 28px;padding:12px 8px 8px;display:flex}.zv-bank.editing{border-style:dashed;border-color:color-mix(in srgb, var(--accent) 45%, var(--border))}.zv-unit{-webkit-user-select:none;user-select:none;flex-direction:column;align-items:center;gap:6px;width:72px;display:flex}.zv-bank.editing .zv-unit{cursor:grab}.zv-unit.dragging{opacity:.45;cursor:grabbing}.zv-unit.drag-over{outline:2px dashed var(--accent);outline-offset:4px;border-radius:8px}.zv-unit-tools{justify-content:center;align-items:center;gap:6px;min-height:22px;display:flex}.zv-grip{grid-template-rows:repeat(2,5px);grid-template-columns:repeat(3,5px);gap:3px;padding:4px;display:grid}.zv-unit.zv-add{color:inherit;cursor:pointer;background:0 0;border:none;padding:0}.zv-unit.zv-add.active .zv-body-add,.zv-unit.zv-add:hover .zv-body-add{border-color:var(--accent);color:var(--accent)}.zv-body-add{background:var(--surface)!important;color:var(--muted)!important;border-style:dashed!important}.zv-add-label{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-size:10px;font-weight:800}.zv-grip span{background:var(--muted);opacity:.7;border-radius:50%;width:5px;height:5px}.zv-pipe{flex-direction:column;align-items:center;width:100%;display:flex}.zv-cut{border-left:2px solid var(--fg);border-right:2px solid var(--fg);opacity:.55;width:28px;height:8px;position:relative}.zv-cut:before,.zv-cut:after{content:"";background:var(--fg);opacity:.45;height:2px;position:absolute;left:-1px;right:-1px}.zv-cut.top:before{top:0;transform:skew(-18deg)}.zv-cut.top:after{top:3px;transform:skew(18deg)}.zv-cut.bottom:before{bottom:3px;transform:skew(18deg)}.zv-cut.bottom:after{bottom:0;transform:skew(-18deg)}.zv-stem{border-left:2px solid var(--fg);border-right:2px solid var(--fg);opacity:.7;width:10px;height:28px}.zv-body{border:2px solid var(--fg);background:var(--surface);width:52px;height:52px;box-shadow:inset 0 0 0 1px var(--border);border-radius:50%;justify-content:center;align-items:center;display:flex}.zv-gas{letter-spacing:-.02em;color:var(--fg);font-size:13px;font-weight:900}.zv-unit.gas-o2 .zv-body{background:#22c55e;border-color:#15803d}.zv-unit.gas-o2 .zv-gas{color:#052e16}.zv-unit.gas-air .zv-body{background:#eab308;border-color:#a16207}.zv-unit.gas-air .zv-gas{color:#422006}.zv-unit.gas-vac .zv-body{background:#fff;border-color:#9ca3af}.zv-unit.gas-vac .zv-gas{color:#111827}.zv-unit.gas-n2o .zv-body{background:#2563eb;border-color:#1d4ed8}.zv-unit.gas-n2o .zv-gas{color:#eff6ff}.zv-unit.gas-n2 .zv-body{background:#111827;border-color:#374151}.zv-unit.gas-n2 .zv-gas{color:#f9fafb}.zv-unit.gas-co2 .zv-body{background:#9ca3af;border-color:#6b7280}.zv-unit.gas-co2 .zv-gas{color:#111827}.zv-unit.gas-ia .zv-body{background:#dc2626;border-color:#b91c1c}.zv-unit.gas-ia .zv-gas{color:#fef2f2}.zv-unit.gas-wagd .zv-body{background:#9333ea;border-color:#7e22ce}.zv-unit.gas-wagd .zv-gas{color:#faf5ff}.zone-panel.zv-panel .zv-bank{pointer-events:none;gap:10px 14px;margin:8px 0 12px;padding:8px 6px}.zone-panel.zv-panel .zv-unit{width:48px}.zone-panel.zv-panel .zv-body{width:36px;height:36px}.zone-panel.zv-panel .zv-gas{font-size:10px}.zone-panel.zv-panel .zv-stem{width:8px;height:16px}.zone-panel.zv-panel .zv-cut{width:20px;height:6px}.zv-fail-group{margin-bottom:8px}.zv-fail-group>span{margin-bottom:8px;display:block}.zv-fail-group .choice{text-align:left;white-space:normal;max-width:100%;line-height:1.35}.aa-stage{margin-bottom:16px}.aa-panel{margin-top:10px}.aa-panel-bezel{color:#111827;background:linear-gradient(#d1d5db 0%,#9ca3af 48%,#6b7280 100%);border:2px solid #4b5563;border-radius:10px;padding:8px 12px 10px;box-shadow:inset 0 1px #ffffff59,inset 0 -1px #0003,0 4px 14px #0000002e}[data-theme=dark] .aa-panel-bezel{color:#f3f4f6;background:linear-gradient(#6b7280 0%,#4b5563 48%,#374151 100%);border-color:#1f2937}.aa-panel-foot{border-top:1px solid #0000002e;justify-content:flex-start;align-items:center;gap:10px;margin-top:8px;padding-top:8px;display:flex}.aa-panel-alarm{text-transform:uppercase;letter-spacing:.06em;opacity:.9;align-items:center;gap:6px;font-size:10px;font-weight:800;display:inline-flex}.aa-panel-foot .aa-panel-alarm{margin-left:auto}.aa-btn-mock{letter-spacing:.06em;text-transform:uppercase;color:#111827;background:linear-gradient(#f3f4f6,#d1d5db);border:1px solid #00000059;border-radius:4px;justify-content:center;align-items:center;min-width:64px;padding:5px 10px;font-size:10px;font-weight:800;display:inline-flex;box-shadow:inset 0 1px #ffffff8c}[data-theme=dark] .aa-btn-mock{color:#111827;background:linear-gradient(#9ca3af,#6b7280)}.aa-modules{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.aa-module{background:#1f2937;border:1px solid #00000059;border-radius:6px;width:78px;padding:5px 5px 6px;box-shadow:inset 0 0 0 1px #ffffff0f}.aa-module-label{text-align:center;letter-spacing:.02em;color:#f9fafb;background:#374151;border-radius:3px;margin-bottom:5px;padding:3px 2px;font-size:12px;font-weight:900}.aa-module-lcd{font-variant-numeric:tabular-nums;background:#052e16;border:1px solid #14532d;border-radius:3px;flex-direction:column;justify-content:center;align-items:flex-end;min-height:44px;margin-bottom:5px;padding:4px 6px;display:flex}.aa-module-value{color:#4ade80;letter-spacing:-.02em;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:18px;font-weight:800;line-height:1}.aa-module-unit{color:#86efac;opacity:.85;margin-top:2px;font-size:9px;font-weight:700}.aa-module-lamps{justify-content:space-between;gap:4px;display:flex}.aa-lamp{text-transform:uppercase;letter-spacing:.04em;color:#d1d5db;align-items:center;gap:3px;font-size:8px;font-weight:800;display:inline-flex}.aa-led{background:#4b5563;border-radius:50%;width:8px;height:8px;box-shadow:inset 0 0 0 1px #0006}.aa-led.on{background:#22c55e;box-shadow:0 0 6px #22c55ebf,inset 0 0 0 1px #00000040}.aa-module.gas-o2 .aa-module-label{color:#052e16;background:#22c55e}.aa-module.gas-air .aa-module-label{color:#422006;background:#eab308}.aa-module.gas-vac .aa-module-label{color:#111827;background:#fff}.aa-module.gas-n2o .aa-module-label{color:#eff6ff;background:#2563eb}.aa-module.gas-n2 .aa-module-label{color:#f9fafb;background:#111827;box-shadow:inset 0 0 0 1px #9ca3af}.aa-module.gas-co2 .aa-module-label{color:#111827;background:#9ca3af}.aa-module.gas-ia .aa-module-label{color:#fef2f2;background:#dc2626}.aa-module.gas-wagd .aa-module-label{color:#faf5ff;background:#9333ea}.aa-panel.compact .aa-panel-bezel{padding:6px 8px 8px}.aa-panel.compact .aa-module{width:56px;padding:3px}.aa-panel.compact .aa-module-label{margin-bottom:3px;padding:2px;font-size:10px}.aa-panel.compact .aa-module-lcd{min-height:30px;margin-bottom:3px;padding:2px 4px}.aa-panel.compact .aa-module-value{font-size:12px}.aa-panel.compact .aa-module-unit,.aa-panel.compact .aa-lamp{font-size:7px}.aa-panel.compact .aa-led{width:6px;height:6px}.aa-panel.compact .aa-btn-mock{min-width:48px;padding:3px 6px;font-size:8px}.zone-panel.aa-zone-panel .aa-panel{pointer-events:none;margin:8px 0 10px}
