:root{--color-bg:#0f1117;--color-surface:#1a1d27;--color-surface-2:#22263a;--color-border:#2d3147;--color-text:#e2e8f0;--color-text-muted:#8892a4;--color-primary:#3b82f6;--color-primary-hover:#2563eb;--color-success:#22c55e;--color-warning:#f59e0b;--color-danger:#ef4444;--color-score-good:#22c55e;--color-score-warn:#f59e0b;--color-score-bad:#ef4444;--sidebar-width:220px;--radius:6px;--font-mono:"JetBrains Mono","Fira Code",monospace}*,:after,:before{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--color-bg)}.sidebar{background:var(--color-surface);padding:1rem;flex-shrink:0;overflow-y:auto}.sidebar-logo{font-weight:700;font-size:1rem;color:var(--color-primary);padding:.5rem 0 1.5rem}.nav-links{list-style:none}.nav-links li+li{margin-top:2px}.nav-links a{display:block;padding:.5rem .75rem;border-radius:var(--radius);text-decoration:none;font-size:.875rem;transition:background .1s,color .1s}.nav-links a:hover{background:var(--color-surface-2)}.app-shell{flex:1 1;display:flex;flex-direction:column;min-height:100vh}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:50;display:flex;align-items:center;justify-content:flex-end;padding:0 1.5rem;height:52px;background:var(--color-surface);flex-shrink:0}.main-content,.topbar-spacer{flex:1 1}.page{max-width:1200px}.page-title{font-size:1.5rem;font-weight:600;margin-bottom:1.5rem}.page-header{display:flex;justify-content:space-between;align-items:center}.card,.page-header{margin-bottom:1.5rem}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.5rem}.card-title{font-size:1rem;font-weight:600;margin-bottom:1rem}.stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));grid-gap:1rem;gap:1rem;margin-bottom:2rem}.stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius)}.stat-label{font-size:.75rem;letter-spacing:.05em}.stat-value{font-size:2rem;font-weight:700;margin-top:.25rem}.data-table{width:100%;border-collapse:collapse}.data-table th{text-align:left;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted)}.data-table td,.data-table th{padding:.75rem 1rem;border-bottom:1px solid var(--color-border)}.data-table td{font-size:.875rem}.data-table tr:hover td{background:var(--color-surface)}.data-table a{color:var(--color-primary);text-decoration:none}.data-table a:hover{text-decoration:underline}.data-count{font-size:.875rem;margin-bottom:1rem}.badge{display:inline-flex;align-items:center;padding:.125rem .5rem;border-radius:9999px;font-size:.75rem;font-weight:500}.badge-success{background:color-mix(in srgb,var(--color-success) 15%,transparent);color:var(--color-success)}.badge-warning{background:color-mix(in srgb,var(--color-warning) 15%,transparent);color:var(--color-warning)}.form-group{margin-bottom:1rem}.form-group label{display:block;font-size:.875rem;color:var(--color-text-muted);margin-bottom:.25rem}.input{width:100%;padding:.5rem .75rem;background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text);font-size:.875rem}.input:focus{outline:none}.btn{padding:.5rem 1rem;border-radius:var(--radius);border:none;cursor:pointer;font-size:.875rem;font-weight:500;transition:background .1s}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:white}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-secondary{background:var(--color-surface-2);color:var(--color-text);border:1px solid var(--color-border)}.btn-secondary:hover:not(:disabled){background:var(--color-border)}.alert{padding:.75rem 1rem;border-radius:var(--radius);font-size:.875rem;margin-top:1rem}.alert-success{background:color-mix(in srgb,var(--color-success) 10%,transparent);border:1px solid var(--color-success);color:var(--color-success)}.alert-error{background:color-mix(in srgb,var(--color-danger) 10%,transparent);border:1px solid var(--color-danger);color:var(--color-danger)}.job-progress{margin-top:1rem}.progress-bar{height:6px;background:var(--color-surface-2);border-radius:3px;overflow:hidden}.progress-fill{height:100%;background:var(--color-primary);transition:width .3s ease}.progress-message{font-size:.75rem;color:var(--color-text-muted);margin-top:.5rem}.pagination{display:flex;align-items:center;gap:1rem;margin-top:1rem;font-size:.875rem}.loading{color:var(--color-text-muted);padding:2rem;text-align:center}.error{color:var(--color-danger);padding:1rem;background:color-mix(in srgb,var(--color-danger) 10%,transparent);border-radius:var(--radius)}.import-status{font-size:.875rem;color:var(--color-text-muted);margin-bottom:1rem}:root{--score-good:#0b6f63;--score-warn:#e0a62f;--score-bad:#b73535;--severity-crit:#7b1818;--progress-track:#d7ddd3;--progress-fill:#0b6f63}.score-good{color:var(--score-good)}.score-warn{color:var(--score-warn)}.score-bad{color:var(--score-bad)}.badge-high{background:color-mix(in srgb,var(--color-success) 15%,transparent);color:var(--color-success)}.badge-medium{background:color-mix(in srgb,var(--color-warning) 15%,transparent);color:var(--color-warning)}.badge-low{background:color-mix(in srgb,var(--color-danger) 15%,transparent);color:var(--color-danger)}.badge-normalized{background:color-mix(in srgb,var(--color-success) 15%,transparent);color:var(--color-success)}.badge-review{background:color-mix(in srgb,#e0a62f 15%,transparent);color:#e0a62f}.badge-pending{background:color-mix(in srgb,var(--color-text-muted) 15%,transparent);color:var(--color-text-muted)}.badge-secondary{background:var(--color-surface-2);color:var(--color-text-muted);border:1px solid var(--color-border)}.badge-buildops{background:color-mix(in srgb,#f97316 15%,transparent);color:#f97316;border:1px solid color-mix(in srgb,#f97316 30%,transparent);font-size:.6875rem;font-weight:600;letter-spacing:.02em}.address-autocomplete{position:relative}.address-autocomplete__input{width:100%}.address-autocomplete__dropdown{position:absolute;top:100%;left:0;right:0;background:var(--color-surface-1);border:1px solid var(--color-border);border-top:none;border-radius:0 0 var(--radius) var(--radius);max-height:260px;overflow-y:auto;z-index:200;box-shadow:0 8px 24px rgba(0,0,0,.25)}.address-autocomplete__item{padding:.625rem .75rem;cursor:pointer;border-bottom:1px solid var(--color-border);transition:background .1s}.address-autocomplete__item:last-child{border-bottom:none}.address-autocomplete__item--active,.address-autocomplete__item:hover{background:var(--color-surface-2)}.address-autocomplete__item-main{font-size:.9rem;font-weight:500;color:var(--color-text)}.address-autocomplete__item-sub{font-size:.8rem;color:var(--color-text-muted);margin-top:.125rem}.address-autocomplete__loading{padding:.75rem;text-align:center;color:var(--color-text-muted);font-size:.85rem}.address-autocomplete__input--open{border-bottom-left-radius:0;border-bottom-right-radius:0}.address-map{border-radius:var(--radius);overflow:hidden;border:1px solid var(--color-border);margin-top:1rem}.address-map img{width:100%;height:200px;object-fit:cover;display:block}.address-map__link{display:block;font-size:.75rem;color:var(--color-text-muted);padding:.375rem .5rem;background:var(--color-surface-2);text-align:center;border-top:1px solid var(--color-border)}.address-map__link:hover{color:var(--color-primary)}.empty-state{padding:3rem 1rem;text-align:center;color:var(--color-text-muted);font-size:.875rem}.code-cell{font-family:var(--font-mono);font-size:.8125rem}.breadcrumb,.text-muted{color:var(--color-text-muted)}.breadcrumb{display:flex;align-items:center;gap:.375rem;font-size:.8125rem;margin-bottom:.375rem}.breadcrumb a{color:var(--color-primary);text-decoration:none}.breadcrumb a:hover{text-decoration:underline}.breadcrumb-sep{color:var(--color-text-muted)}.success{color:var(--color-success);font-size:.875rem}.badge-danger{background:color-mix(in srgb,var(--color-danger) 15%,transparent);color:var(--color-danger)}.filter-tabs{display:flex;gap:.5rem;margin-bottom:1rem;flex-wrap:wrap}.filter-tab{padding:.375rem .875rem;border-radius:9999px;border:1px solid var(--color-border);background:transparent;color:var(--color-text-muted);font-size:.8125rem;cursor:pointer;transition:background .1s,color .1s}.filter-tab:hover{background:var(--color-surface-2);color:var(--color-text)}.filter-tab-active{background:var(--color-primary);color:white;border-color:var(--color-primary)}.points-table{font-size:.875rem}.point-row:hover td{background:var(--color-surface-2)}.install-tabs{display:flex;gap:0;border-bottom:1px solid var(--color-border);margin-bottom:1.5rem}.install-tab{display:inline-block;padding:.625rem 1.125rem;font-size:.875rem;color:var(--color-text-muted);text-decoration:none;border-bottom:2px solid transparent;transition:color .1s,border-color .1s;position:relative}.install-tab:hover{color:var(--color-text)}.graphics-studio{margin-bottom:1.5rem}.graphics-studio,.graphics-studio__footer,.graphics-studio__hero,.graphics-studio__layout{display:grid;grid-gap:1rem;gap:1rem}.graphics-studio__hero{grid-template-columns:minmax(0,1fr) auto;align-items:end}.graphics-studio__eyebrow,.page-eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:.72rem;color:#8ad8cb;margin-bottom:.45rem}.graphics-studio__title{font-size:2rem;line-height:1;margin-bottom:.5rem}.graphics-studio__subtitle{color:var(--color-text-muted);max-width:70ch}.graphics-status{display:inline-flex;align-items:center;gap:.625rem;padding:.75rem 1rem;border-radius:999px;border:1px solid rgba(255,255,255,.1);background:rgba(16,23,37,.72);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);font-size:.82rem}.graphics-status__dot{width:.65rem;height:.65rem;border-radius:999px;background:#8ad8cb;box-shadow:0 0 16px rgba(138,216,203,.6)}.graphics-status--alarm .graphics-status__dot{background:#ff7b72;box-shadow:0 0 16px rgba(255,123,114,.7)}.graphics-status--offline .graphics-status__dot{background:#94a3b8;box-shadow:none}.graphics-status--manual .graphics-status__dot{background:#f6c453;box-shadow:0 0 14px rgba(246,196,83,.6)}.graphics-studio__layout{grid-template-columns:minmax(0,1.8fr) minmax(320px,.95fr);align-items:start}.graphics-card,.graphics-controls,.graphics-scene{border:1px solid rgba(148,163,184,.18);border-radius:24px;overflow:hidden}.graphics-scene{position:relative;padding:1rem;background:radial-gradient(circle at top left,rgba(138,216,203,.2),transparent 36%),radial-gradient(circle at bottom right,rgba(59,130,246,.18),transparent 32%),linear-gradient(160deg,#09111f,#101a2e 55%,#09111f);box-shadow:inset 0 1px 0 rgba(255,255,255,.05),0 18px 48px rgba(0,0,0,.25)}.graphics-scene--alarm{background:radial-gradient(circle at top left,rgba(255,123,114,.24),transparent 36%),radial-gradient(circle at bottom right,rgba(245,158,11,.16),transparent 28%),linear-gradient(160deg,#140d11,#1d1520 55%,#12131b)}.graphics-scene--offline{filter:saturate(.55)}.graphics-scene__banner{position:absolute;top:1rem;left:1rem;right:1rem;z-index:3;display:flex;justify-content:space-between;gap:.75rem;padding:.75rem 1rem;border-radius:16px;background:linear-gradient(90deg,rgba(127,29,29,.9),rgba(185,28,28,.82));border:1px solid rgba(255,255,255,.1);box-shadow:0 10px 30px rgba(127,29,29,.45)}.graphics-gap,.graphics-readiness,.graphics-scene__chips,.graphics-scene__header,.graphics-state{display:flex;justify-content:space-between;gap:1rem}.graphics-scene__header{position:relative;z-index:2;align-items:start;margin-bottom:1rem}.graphics-scene__label{text-transform:uppercase;letter-spacing:.12em;font-size:.72rem;color:rgba(226,232,240,.64)}.graphics-scene__context{font-size:1rem;margin-top:.35rem}.graphics-scene__readiness{text-align:right}.graphics-scene__readiness span{display:block;color:rgba(226,232,240,.64);font-size:.75rem;text-transform:uppercase;letter-spacing:.08em}.graphics-scene__readiness strong{font-size:1.8rem}.graphics-scene__svg{width:100%;height:auto;display:block}.graphics-scene__caption{margin-top:.75rem;color:rgba(226,232,240,.64);font-size:.82rem}.graphics-metric-panel,.graphics-scene__duct,.graphics-zone{fill:rgba(15,23,42,.58);stroke:rgba(148,163,184,.22);stroke-width:2}.graphics-scene__branch{fill:none;stroke:rgba(110,231,255,.72);stroke-width:20;stroke-linecap:round;opacity:.9}.graphics-scene__branch--return{stroke:rgba(56,189,248,.34)}.graphics-scene__branch--hot{stroke:rgba(251,146,60,.72)}.graphics-scene__branch--return-hot{stroke:rgba(248,113,113,.36)}.graphics-flow-arrow path{fill:rgba(173,247,236,.94);animation:graphics-flow linear infinite}.graphics-flow-arrow--pipe path{fill:rgba(191,219,254,.9)}.graphics-damper__ring{fill:rgba(15,23,42,.72);stroke:rgba(165,243,252,.55);stroke-width:3}.graphics-damper__axis{stroke:rgba(255,255,255,.28);stroke-width:4}.graphics-damper__blade{stroke:#6ee7f0;stroke-width:11;stroke-linecap:round;transform-origin:center;transition:transform .6s cubic-bezier(.2,.8,.2,1)}.graphics-damper__text,.graphics-metric-panel__label,.graphics-zone__eyebrow,.graphics-zone__mode,.graphics-zone__setpoints{fill:rgba(226,232,240,.72);font-size:16px}.graphics-metric-panel__value,.graphics-zone__temp{fill:#f8fafc;font-size:42px;font-weight:700}.graphics-sparkline{fill:none;stroke:#8ad8cb;stroke-width:5;stroke-linecap:round;stroke-linejoin:round}.graphics-sparkline__baseline{stroke:rgba(226,232,240,.18);stroke-width:2}.graphics-coil,.graphics-fan,.graphics-plant-module,.graphics-pump-body{fill:rgba(15,23,42,.58);stroke:rgba(148,163,184,.24);stroke-width:2}.graphics-pump-body{fill:rgba(12,22,38,.92);stroke:rgba(96,165,250,.34)}.graphics-fan__blades{fill:rgba(103,232,249,.88);transform-origin:center}.graphics-fan__blades--running{animation:graphics-rotate linear infinite}.graphics-fan__blades--paused{animation-play-state:paused}.graphics-coil--cool{fill:rgba(59,130,246,.22);stroke:rgba(125,211,252,.42)}.graphics-coil--heat{fill:rgba(251,146,60,.3);stroke:rgba(253,186,116,.5)}.graphics-plant-module--active{fill:rgba(8,145,178,.18);stroke:rgba(103,232,249,.42);box-shadow:0 0 0 1px rgba(103,232,249,.15)}.graphics-plant-module__core{fill:rgba(15,118,110,.4);stroke:rgba(153,246,228,.48);stroke-width:2}.graphics-plant-module__stage{fill:rgba(15,23,42,.7);stroke:rgba(148,163,184,.25);stroke-width:2}.graphics-scene__chips{flex-wrap:wrap;margin-top:.75rem}.graphics-chip{min-width:140px;padding:.8rem 1rem;border-radius:18px;background:rgba(15,23,42,.55);border:1px solid rgba(148,163,184,.18)}.graphics-chip span{display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:rgba(226,232,240,.6);margin-bottom:.3rem}.graphics-chip strong{font-size:1rem}.graphics-package-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));grid-gap:1rem;gap:1rem}.graphics-package-card{display:grid;grid-gap:.85rem;gap:.85rem;padding:1.2rem;border-radius:22px;text-decoration:none;color:inherit;border:1px solid rgba(148,163,184,.16);background:radial-gradient(circle at top left,rgba(138,216,203,.12),transparent 38%),linear-gradient(160deg,rgba(15,23,42,.92),rgba(15,23,42,.72));transition:transform .12s ease,border-color .12s ease,box-shadow .12s ease}.graphics-package-card:hover{transform:translateY(-2px);border-color:rgba(125,211,252,.34);box-shadow:0 16px 36px rgba(0,0,0,.24)}.graphics-package-card__eyebrow{text-transform:uppercase;letter-spacing:.1em;font-size:.72rem;color:#8ad8cb}.graphics-package-card__footer,.graphics-package-card__header,.graphics-package-card__stats{display:flex;justify-content:space-between;gap:.75rem}.graphics-package-card__header{align-items:start}.graphics-package-card__header h3{font-size:1.05rem;line-height:1.2}.graphics-package-card__copy{color:var(--color-text-muted);font-size:.88rem}.graphics-package-card__stats{flex-wrap:wrap}.graphics-package-card__stats div{min-width:88px}.graphics-package-card__stats span{display:block;text-transform:uppercase;letter-spacing:.08em;font-size:.68rem;color:var(--color-text-muted);margin-bottom:.2rem}.graphics-package-card__stats strong{font-size:.98rem}.graphics-package-card__score{color:#8ad8cb}.graphics-controls{padding:1rem;background:linear-gradient(180deg,rgba(17,24,39,.96),rgba(8,13,24,.96))}.graphics-controls__section+.graphics-controls__section{margin-top:1rem;padding-top:1rem;border-top:1px solid rgba(148,163,184,.14)}.graphics-card h3,.graphics-controls h3{font-size:.95rem;margin-bottom:.8rem}.graphics-toggle-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:.6rem;gap:.6rem}.graphics-toggle{padding:.7rem .9rem;border-radius:14px;border:1px solid rgba(148,163,184,.18);background:rgba(15,23,42,.58);color:var(--color-text);cursor:pointer}.graphics-toggle--active{background:rgba(56,189,248,.18);border-color:rgba(125,211,252,.45)}.graphics-toggle--alarm.graphics-toggle--active{background:rgba(239,68,68,.18);border-color:rgba(248,113,113,.4)}.graphics-toggle--offline.graphics-toggle--active{background:rgba(100,116,139,.24);border-color:rgba(148,163,184,.34)}.graphics-slider{display:grid;grid-template-columns:1fr auto;grid-gap:.35rem .75rem;gap:.35rem .75rem;margin-bottom:.9rem}.graphics-slider span,.graphics-slider strong{font-size:.86rem}.graphics-slider input{grid-column:1/-1;accent-color:#8ad8cb}.graphics-gap-list,.graphics-state-list{display:grid;grid-gap:.7rem;gap:.7rem}.graphics-gap,.graphics-state{align-items:center;padding:.8rem .9rem;border-radius:16px;background:rgba(15,23,42,.5);border:1px solid rgba(148,163,184,.14)}.graphics-state--active{border-color:rgba(248,113,113,.35);box-shadow:inset 0 0 0 1px rgba(248,113,113,.12)}.graphics-studio__footer{grid-template-columns:repeat(2,minmax(0,1fr))}.graphics-card{padding:1rem;background:linear-gradient(180deg,rgba(15,23,42,.84),rgba(15,23,42,.68))}.graphics-readiness__score{font-size:2.4rem;line-height:1;font-weight:700;color:#8ad8cb}.graphics-readiness__meta{display:grid;grid-gap:.3rem;gap:.3rem;color:var(--color-text-muted);font-size:.86rem}@keyframes graphics-flow{0%{opacity:.2;transform:translateX(-10px)}50%{opacity:1}to{opacity:.2;transform:translateX(18px)}}@keyframes graphics-rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@media (max-width:1080px){.graphics-studio__footer,.graphics-studio__hero,.graphics-studio__layout{grid-template-columns:1fr}}@media (max-width:720px){.graphics-studio__title{font-size:1.5rem}.graphics-toggle-grid{grid-template-columns:1fr}.graphics-scene{padding:.75rem}.graphics-metric-panel__value,.graphics-zone__temp{font-size:32px}}.install-tab-active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.tab-badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;height:1.25rem;padding:0 .3rem;border-radius:9999px;background:var(--color-primary);color:white;font-size:.6875rem;font-weight:600;margin-left:.375rem}.score-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:2rem;margin-bottom:1.5rem;display:flex;flex-direction:column;align-items:flex-start;gap:.5rem}.score-card-label{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted)}.score-card-value{font-size:3.5rem;font-weight:700;line-height:1}.score-card-meta{font-size:.8125rem;color:var(--color-text-muted);display:flex;align-items:center;gap:.5rem}.findings-list{display:flex;flex-direction:column;gap:.25rem}.findings-group{margin-bottom:1rem}.findings-group-label{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:.25rem 0;margin-bottom:.25rem}.finding-row{padding:.625rem .75rem;border-radius:var(--radius);border-left:3px solid transparent;background:var(--color-surface-2);margin-bottom:.25rem}.finding-code{font-family:var(--font-mono);font-size:.75rem;color:var(--color-text-muted);margin-bottom:.125rem}.finding-title{font-size:.875rem;color:var(--color-text)}.finding-recommendation{font-size:.8125rem;color:var(--color-text-muted);margin-top:.25rem;font-style:italic}.finding-severity-critical{border-left-color:var(--severity-crit)}.finding-severity-critical.findings-group-label{color:var(--severity-crit)}.finding-severity-high{border-left-color:var(--color-danger)}.finding-severity-high.findings-group-label{color:var(--color-danger)}.finding-severity-medium{border-left-color:var(--color-warning)}.finding-severity-medium.findings-group-label{color:var(--color-warning)}.finding-severity-low{border-left-color:var(--color-success)}.finding-severity-low.findings-group-label{color:var(--color-success)}.finding-severity-info{border-left-color:var(--color-border)}.finding-severity-info.findings-group-label{color:var(--color-text-muted)}.compliance-hero{display:grid;grid-template-columns:auto 1fr;grid-gap:1.5rem;gap:1.5rem;align-items:start;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.75rem;margin-bottom:1.25rem}@media (max-width:680px){.compliance-hero{grid-template-columns:1fr}}.compliance-score-block{display:flex;flex-direction:column;align-items:center;min-width:120px;padding-right:1.5rem;border-right:1px solid var(--color-border)}@media (max-width:680px){.compliance-score-block{border-right:none;border-bottom:1px solid var(--color-border);padding-right:0;padding-bottom:1rem;align-items:flex-start}}.compliance-score-number{font-size:4rem;font-weight:700;line-height:1;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.compliance-score-label{font-size:.875rem;font-weight:600;margin-top:.375rem;color:var(--color-text)}.compliance-score-sub{font-size:.8125rem;color:var(--color-text-muted);margin-top:.25rem;text-align:center}@media (max-width:680px){.compliance-score-sub{text-align:left}}.compliance-formula{padding-left:.25rem}.compliance-formula-title{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);margin-bottom:.75rem}.compliance-formula-rows{display:flex;flex-direction:column;gap:.5rem}.compliance-formula-row{display:grid;grid-template-columns:9rem 3.5rem 1fr;grid-gap:.5rem;gap:.5rem;font-size:.8125rem;align-items:start}.compliance-formula-weight{font-weight:700;color:var(--color-primary);text-align:right}.compliance-formula-desc{color:var(--color-text-muted)}.compliance-ai-cta{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.25rem;margin-bottom:1.25rem;background:color-mix(in srgb,var(--color-primary) 8%,var(--color-surface));border:1px solid var(--color-border);border-left:3px solid var(--color-primary);border-radius:var(--radius)}@media (max-width:600px){.compliance-ai-cta{flex-direction:column;align-items:flex-start}}.compliance-ai-cta-title{font-weight:600;font-size:.9375rem;margin-bottom:.25rem}.compliance-ai-cta-desc{font-size:.8125rem;color:var(--color-text-muted);line-height:1.5}.compliance-onboarding{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.5rem;margin-bottom:1.25rem}.compliance-onboarding-title{font-size:.875rem;font-weight:600;margin-bottom:1rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}.compliance-steps{display:flex;flex-direction:column;gap:.875rem}.compliance-step{display:flex;gap:.875rem;align-items:flex-start}.compliance-step-n{width:24px;height:24px;border-radius:50%;background:var(--color-primary);color:#fff;font-size:.75rem;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:.1rem}.compliance-step-label{font-size:.875rem;font-weight:600;margin-bottom:.125rem}.compliance-step-desc{font-size:.8125rem;color:var(--color-text-muted);line-height:1.5}.findings-equip-list{display:flex;flex-direction:column;gap:.5rem}.findings-equip-row{display:flex;align-items:center;gap:.75rem;padding:.625rem .875rem;background:var(--color-surface-2);border-radius:var(--radius);border-left:3px solid var(--color-danger);flex-wrap:wrap}.findings-equip-name{font-size:.875rem;font-weight:600;min-width:120px}.findings-equip-tags{display:flex;flex-wrap:wrap;gap:.375rem;flex:1 1}.findings-equip-fixable{font-size:.75rem;color:var(--color-primary);font-weight:600;white-space:nowrap}.missing-tag-chip{display:inline-flex;align-items:center;padding:.125rem .5rem;border-radius:99px;background:color-mix(in srgb,var(--color-danger) 12%,var(--color-surface));border:1px solid color-mix(in srgb,var(--color-danger) 30%,transparent);color:var(--color-danger);font-size:.75rem;font-family:var(--font-mono);font-weight:500}.compliance-context-banner{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.875rem 1rem;margin-bottom:1.25rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);font-size:.875rem}@media (max-width:600px){.compliance-context-banner{flex-direction:column;align-items:flex-start}}.equipment-proposal-group{margin-bottom:2rem}.equipment-proposal-header{display:flex;align-items:center;gap:.625rem;margin-bottom:.75rem;flex-wrap:wrap}.equipment-name{font-weight:600;font-size:.9375rem}.equipment-code{font-family:var(--font-mono);font-size:.75rem}.equipment-type{font-size:.8125rem;color:var(--color-text-muted)}.proposal-cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));grid-gap:.75rem;gap:.75rem}.tag-proposal-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1rem;display:flex;flex-direction:column;gap:.5rem;transition:border-color .15s}.tag-proposal-card:hover{border-color:var(--color-primary)}.tag-proposal-header{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.tag-proposal-card .tag-name{font-family:var(--font-mono);font-size:.875rem;font-weight:600;color:var(--color-primary)}.tag-proposal-card .tag-value{font-family:var(--font-mono);font-size:.875rem;color:var(--color-text-muted)}.tag-proposal-card .rationale{font-size:.8125rem;color:var(--color-text-muted);font-style:italic;flex:1 1}.tag-proposal-actions{display:flex;gap:.5rem;margin-top:.25rem}.btn-approve{background:color-mix(in srgb,var(--color-success) 15%,transparent);color:var(--color-success);border:1px solid var(--color-success);padding:.25rem .75rem;border-radius:var(--radius);font-size:.8125rem;font-weight:500;cursor:pointer;transition:background .1s}.btn-approve:hover:not(:disabled){background:color-mix(in srgb,var(--color-success) 30%,transparent)}.btn-approve:disabled{opacity:.5;cursor:not-allowed}.btn-reject{background:color-mix(in srgb,var(--color-danger) 15%,transparent);color:var(--color-danger);border:1px solid var(--color-danger);padding:.25rem .75rem;border-radius:var(--radius);font-size:.8125rem;font-weight:500;cursor:pointer;transition:background .1s}.btn-reject:hover:not(:disabled){background:color-mix(in srgb,var(--color-danger) 30%,transparent)}.btn-reject:disabled{opacity:.5;cursor:not-allowed}.install-meta{display:flex;align-items:center;gap:1rem;font-size:.875rem;color:var(--color-text-muted);flex-wrap:wrap}.install-meta-item{display:inline-flex;align-items:center;gap:.25rem}.install-meta a{color:var(--color-primary);text-decoration:none}.install-meta a:hover{text-decoration:underline}.detail-list{display:grid;grid-template-columns:max-content 1fr;grid-gap:.5rem 1.5rem;gap:.5rem 1.5rem;font-size:.875rem}.detail-list dt{color:var(--color-text-muted)}.detail-list dd{color:var(--color-text)}.state-ok{background:color-mix(in srgb,var(--score-good) 18%,transparent);color:var(--score-good)}.state-alerting{background:color-mix(in srgb,var(--severity-crit) 18%,transparent);color:#e05555}.rollout-draft,.state-no-data,.state-unknown{background:var(--color-surface-2);color:var(--color-text-muted)}.rollout-draft{border:1px solid var(--color-border)}.rollout-pending{background:color-mix(in srgb,var(--color-warning) 15%,transparent);color:var(--color-warning)}.rollout-approved{background:color-mix(in srgb,var(--color-primary) 15%,transparent);color:var(--color-primary)}.rollout-executing{background:color-mix(in srgb,var(--color-warning) 15%,transparent);color:var(--color-warning)}.rollout-executed{background:color-mix(in srgb,var(--color-success) 15%,transparent);color:var(--color-success)}.rollout-failed{background:color-mix(in srgb,var(--color-danger) 15%,transparent);color:var(--color-danger)}.rollout-rolled-back{background:var(--color-surface-2);color:var(--color-text-muted);border:1px solid var(--color-border)}.monitor-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));grid-gap:1rem;gap:1rem;margin-bottom:1.5rem}.monitor-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.25rem;display:flex;flex-direction:column;gap:.5rem}.monitor-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.5rem}.monitor-card-name{font-weight:600;font-size:.9375rem}.monitor-card-type{text-transform:uppercase;letter-spacing:.04em}.monitor-card-meta,.monitor-card-type{font-size:.75rem;color:var(--color-text-muted)}.monitor-card-actions{margin-top:.25rem}.rollout-state-bar{display:flex;align-items:center;gap:.25rem;font-size:.75rem;color:var(--color-text-muted);margin-bottom:.5rem;flex-wrap:wrap}.rollout-state-step{padding:.125rem .5rem;border-radius:9999px;border:1px solid var(--color-border);background:var(--color-surface-2);color:var(--color-text-muted)}.rollout-state-step-active{border-color:var(--color-primary);background:color-mix(in srgb,var(--color-primary) 15%,transparent);color:var(--color-primary);font-weight:600}.rollout-state-step-done{border-color:var(--score-good);background:color-mix(in srgb,var(--score-good) 12%,transparent);color:var(--score-good)}.rollout-state-arrow{color:var(--color-border)}.rollout-detail{background:var(--color-surface-2);border-top:1px solid var(--color-border);padding:1rem 1.25rem}.rollout-detail-section{margin-bottom:1rem}.rollout-detail-label{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);margin-bottom:.375rem}.rollout-detail-pre{font-family:var(--font-mono);font-size:.8125rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:.75rem 1rem;overflow-x:auto;white-space:pre-wrap;word-break:break-word;color:var(--color-text);max-height:280px}.four-eyes-warning{font-size:.75rem;color:var(--color-warning);background:color-mix(in srgb,var(--color-warning) 10%,transparent);border:1px solid var(--color-warning);border-radius:var(--radius);padding:.25rem .625rem;display:inline-block}.monitor-summary-row{display:flex;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap}.monitor-summary-stat{display:flex;align-items:center;gap:.5rem;font-size:.875rem;padding:.5rem 1rem;border-radius:var(--radius);border:1px solid var(--color-border);background:var(--color-surface)}.monitor-summary-count{font-weight:700;font-size:1.125rem}.site-group{margin-bottom:2rem}.site-group-header{margin-bottom:.75rem;padding-bottom:.5rem;display:flex;align-items:center;gap:.5rem}.report-section-header,.site-group-header{font-size:.9375rem;font-weight:600;border-bottom:1px solid var(--color-border)}.report-section-header{margin:1.5rem 0 .75rem;padding-bottom:.375rem}.inline-form{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.25rem;margin-bottom:1.5rem}.btn-danger{background:color-mix(in srgb,var(--color-danger) 20%,transparent);color:var(--color-danger);border:1px solid var(--color-danger)}.btn-danger:hover:not(:disabled){background:color-mix(in srgb,var(--color-danger) 35%,transparent)}.btn-danger:disabled{opacity:.5;cursor:not-allowed}:root{--surface-1:var(--color-surface);--surface-2:var(--color-surface-2);--border:var(--color-border);--text-muted:var(--color-text-muted);--accent:var(--color-primary)}.stat-grid-4{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:1rem;gap:1rem;margin-bottom:1rem}.stat-grid-2{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:1rem;gap:1rem;margin-bottom:1.5rem}.stat-card-lg{background:var(--surface-1);border:1px solid var(--border);border-radius:8px;padding:1.5rem}.stat-value-lg{font-size:2.5rem;font-weight:700;line-height:1}.stat-label-lg{font-size:.875rem;color:var(--text-muted);margin-top:.25rem}.chat-window{display:flex;flex-direction:column;height:500px;overflow-y:auto;gap:1rem;padding:1rem;background:var(--surface-2);border:1px solid var(--border);border-radius:8px;margin-bottom:1rem}.chat-message{max-width:80%;padding:.75rem 1rem;border-radius:8px;font-size:.9rem;line-height:1.5;white-space:pre-wrap;word-break:break-word}.chat-message-user{align-self:flex-end;background:var(--accent);color:white}.chat-message-assistant{color:var(--color-text)}.chat-message-assistant,.chat-message-thinking{align-self:flex-start;background:var(--surface-1);border:1px solid var(--border)}.chat-message-thinking{color:var(--text-muted);font-style:italic}.chat-input-row{display:flex;gap:.5rem}.chat-textarea{flex:1 1;resize:vertical;min-height:60px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);color:var(--color-text);padding:.5rem .75rem;font-size:.875rem;font-family:inherit}.chat-textarea:focus{outline:none;border-color:var(--accent)}.risk-read{color:var(--score-good);font-weight:600}.risk-write{color:var(--score-warn);font-weight:600}.risk-privileged{color:var(--severity-crit);font-weight:600}.toggle-switch{position:relative;display:inline-block;width:40px;height:22px;flex-shrink:0}.toggle-switch input{opacity:0;width:0;height:0;position:absolute}.toggle-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background:var(--color-border);border-radius:11px;transition:background .2s}.toggle-slider:before{content:"";position:absolute;height:16px;width:16px;left:3px;bottom:3px;background:white;border-radius:50%;transition:transform .2s}.toggle-switch input:checked+.toggle-slider{background:var(--color-primary)}.toggle-switch input:checked+.toggle-slider:before{transform:translateX(18px)}.tool-call-expand{background:var(--surface-2);border-top:1px solid var(--border);padding:1rem}.tool-call-row{display:flex;gap:1rem;align-items:flex-start;padding:.5rem 0;border-bottom:1px solid var(--border);font-size:.8125rem}.tool-call-row:last-child{border-bottom:none}.tool-call-name{font-family:var(--font-mono);font-weight:600;min-width:180px}.tool-call-json-toggle{cursor:pointer;color:var(--color-primary);font-size:.75rem;margin-top:.25rem}.tool-call-json{font-family:var(--font-mono);font-size:.75rem;background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);padding:.5rem .75rem;margin-top:.25rem;overflow-x:auto;white-space:pre-wrap;max-height:200px;overflow-y:auto}.badge-running{background:color-mix(in srgb,var(--color-primary) 15%,transparent);color:var(--color-primary)}.badge-completed{background:color-mix(in srgb,var(--color-success) 15%,transparent);color:var(--color-success)}.badge-failed{background:color-mix(in srgb,var(--color-danger) 15%,transparent);color:var(--color-danger)}.chat-actions{display:flex;gap:.5rem;margin-top:.5rem;flex-wrap:wrap}.activity-list{display:flex;flex-direction:column;gap:.5rem}.activity-row{display:flex;align-items:center;gap:.75rem;padding:.5rem .75rem;border-radius:var(--radius);background:var(--surface-2);font-size:.8125rem}.activity-action{font-family:var(--font-mono);font-weight:600;color:var(--color-primary);flex-shrink:0}.activity-entity{color:var(--color-text)}.activity-time{color:var(--text-muted);margin-left:auto;flex-shrink:0}.page-tabs{display:flex;gap:0;border-bottom:1px solid var(--border);margin-bottom:1.5rem}.page-tab{padding:.625rem 1.25rem;font-size:.875rem;color:var(--text-muted);cursor:pointer;background:none;border:none;border-bottom:2px solid transparent;transition:color .1s,border-color .1s}.page-tab:hover{color:var(--color-text)}.page-tab-active{color:var(--accent);border-bottom-color:var(--accent);font-weight:500}.context-selector-row{display:flex;gap:.75rem;align-items:center;margin-bottom:1rem;flex-wrap:wrap}.context-select{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);color:var(--color-text);padding:.375rem .625rem;font-size:.875rem}:root{--hw-online:#0b6f63;--hw-offline:#b73535;--hw-stale:#e0a62f}.station-status-badge{display:inline-flex;align-items:center;gap:.375rem;padding:.25rem .75rem;border-radius:9999px;font-size:.75rem;font-weight:600}.status-online{background:color-mix(in srgb,var(--hw-online) 15%,transparent);color:var(--hw-online)}.status-offline{background:color-mix(in srgb,var(--hw-offline) 15%,transparent);color:var(--hw-offline)}.status-stale{background:color-mix(in srgb,var(--hw-stale) 15%,transparent);color:var(--hw-stale)}.status-unknown{background:var(--color-surface-2);color:var(--color-text-muted)}.health-dot{display:inline-block;width:12px;height:12px;border-radius:50%;flex-shrink:0}.health-dot-online{background:var(--hw-online)}.health-dot-offline{background:var(--hw-offline)}.health-dot-stale{background:var(--hw-stale)}.health-dot-unknown{background:var(--color-text-muted)}.connectivity-mode-badge{display:inline-flex;align-items:center;padding:.25rem .625rem;border-radius:var(--radius);font-size:.75rem;font-weight:600;font-family:var(--font-mono)}.mode-direct{background:color-mix(in srgb,var(--color-primary) 15%,transparent);color:var(--color-primary)}.mode-relay{background:color-mix(in srgb,var(--hw-online) 15%,transparent);color:var(--hw-online)}.mode-tailscale{background:color-mix(in srgb,#6366f1 15%,transparent);color:#818cf8}.mode-vpn{background:color-mix(in srgb,var(--hw-stale) 15%,transparent);color:var(--hw-stale)}.connectivity-status-bar{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);margin-bottom:1.5rem;flex-wrap:wrap}.connectivity-last-seen{font-size:.8125rem;color:var(--color-text-muted);margin-left:auto}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:currentColor;flex-shrink:0}.mode-selector{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.25rem}.mode-option{display:flex;align-items:center;padding:.5rem 1rem;border-radius:var(--radius);border:1px solid var(--color-border);background:var(--color-surface-2);font-size:.875rem;cursor:pointer;transition:border-color .1s,background .1s;-webkit-user-select:none;-moz-user-select:none;user-select:none}.mode-option-active,.mode-option:hover{border-color:var(--color-primary)}.mode-option-active{background:color-mix(in srgb,var(--color-primary) 10%,transparent);color:var(--color-primary);font-weight:500}.mode-fields{padding:1rem;background:var(--color-surface-2);border-radius:var(--radius);border:1px solid var(--color-border);margin-bottom:.5rem;display:flex;flex-direction:column;gap:.75rem}.mode-fields .form-group{margin-bottom:0}:root{--color-bg:#09111f;--color-surface:rgba(14,23,38,0.84);--color-surface-2:rgba(21,33,53,0.92);--color-border:rgba(140,179,255,0.16);--color-text:#e6eefc;--color-text-muted:#93a6c7;--color-primary:#56b6ff;--color-primary-hover:#7fc8ff;--color-success:#51d0a1;--color-warning:#f5bb62;--color-danger:#ff7d78;--color-score-good:#51d0a1;--color-score-warn:#f5bb62;--color-score-bad:#ff7d78;--sidebar-width:272px;--radius:18px}html{background:radial-gradient(circle at top left,rgba(50,123,255,.18),transparent 26%),radial-gradient(circle at top right,rgba(53,208,161,.12),transparent 24%),linear-gradient(180deg,#09111f,#08101b 46%,#071018)}body{font-family:var(--font-sans),sans-serif;color:var(--color-text);background:transparent;min-height:100vh;display:flex}a{color:inherit}.sidebar{width:var(--sidebar-width);padding:1.25rem 1rem 1rem;background:linear-gradient(180deg,rgba(11,18,30,.96),rgba(9,15,27,.92)),rgba(10,16,29,.9);border-right:1px solid var(--color-border);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.sidebar-brand{margin-bottom:1rem}.sidebar-logo{display:flex;align-items:center;color:var(--color-text);text-decoration:none;padding:.25rem .25rem .75rem}.sidebar-logo strong{display:block;font-size:.95rem;letter-spacing:-.02em}.sidebar-logo small{display:block;margin-top:.125rem;color:var(--color-text-muted);font-size:.74rem;letter-spacing:.04em;text-transform:uppercase}.sidebar-logo-mark{width:2.5rem;height:2.5rem;border-radius:.9rem;display:grid;place-items:center;background:linear-gradient(135deg,rgba(86,182,255,.95),rgba(81,208,161,.9));color:#05111c;font-size:1rem;font-weight:800;box-shadow:0 14px 28px rgba(47,131,212,.25)}.nav-links{display:flex;flex-direction:column;gap:.2rem;margin-top:.9rem}.nav-links a{display:flex;align-items:center;gap:.75rem;padding:.8rem .9rem;color:var(--color-text-muted);border:1px solid transparent;border-radius:14px;font-size:.9rem;font-weight:600;letter-spacing:-.01em}.nav-links a:hover{color:var(--color-text);background:rgba(89,135,224,.08);border-color:rgba(125,162,232,.12)}.nav-link-active{color:var(--color-text)!important;background:linear-gradient(135deg,rgba(86,182,255,.18),rgba(81,208,161,.08));border-color:rgba(86,182,255,.22)!important;box-shadow:inset 0 0 0 1px rgba(86,182,255,.08)}.sidebar-footer{margin-top:auto;padding:1rem .9rem .25rem}.sidebar-footer-label{font-size:.68rem;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted);margin-bottom:.35rem}.sidebar-footer-value{display:inline-flex;align-items:center;gap:.45rem;color:var(--color-text);font-size:.83rem}.sidebar-footer-value .status-dot{background:var(--color-success);box-shadow:0 0 0 6px rgba(81,208,161,.12)}.app-shell{margin-left:var(--sidebar-width);width:calc(100% - var(--sidebar-width));background:linear-gradient(180deg,rgba(7,14,25,.28),rgba(7,14,25,0))}.topbar{height:auto;min-height:78px;justify-content:space-between;padding:1.1rem 1.75rem;background:rgba(8,14,25,.68);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-bottom:1px solid var(--color-border)}.topbar-spacer{display:flex;flex-direction:column;gap:.25rem}.topbar-title{font-size:.92rem;font-weight:700;letter-spacing:-.02em}.topbar-subtitle{color:var(--color-text-muted);font-size:.78rem}.main-content{padding:2rem}.page{max-width:1380px;margin:0 auto}.page-header{gap:1rem;margin-bottom:1.4rem}.page-eyebrow{color:var(--color-primary);font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;font-weight:700;margin-bottom:.45rem}.page-title{font-size:clamp(1.9rem,3vw,2.65rem);line-height:1.02;letter-spacing:-.05em;margin-bottom:.4rem}.page-title-compact{font-size:1.4rem}.page-subtitle{max-width:72ch;color:var(--color-text-muted);font-size:.98rem;line-height:1.65}.card,.connectivity-status-bar,.inline-form,.mode-fields,.monitor-summary-stat,.score-card,.stat-card{background:linear-gradient(180deg,rgba(22,34,56,.84),rgba(13,22,37,.9));border:1px solid var(--color-border);box-shadow:0 12px 40px rgba(4,10,20,.28),inset 0 1px 0 rgba(255,255,255,.03);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.card{padding:1.35rem;border-radius:22px}.card-title{font-size:.98rem;letter-spacing:-.02em;margin-bottom:.95rem}.dashboard-stats-grid,.feature-grid,.stats-grid{display:grid;grid-gap:1rem;gap:1rem}.dashboard-stats-grid,.feature-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));margin-bottom:1rem}.stat-card{border-radius:20px;padding:1.25rem}.stat-card-featured{min-height:142px;display:flex;flex-direction:column;justify-content:space-between}.stat-label{color:var(--color-text-muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.1em}.stat-value{font-size:clamp(2rem,3vw,2.8rem);font-weight:800;line-height:1;color:var(--color-primary);letter-spacing:-.05em}.data-count{color:var(--color-text-muted);margin-bottom:.8rem}.data-table{border-collapse:separate;border-spacing:0;overflow:hidden;border-radius:16px}.data-table th{background:rgba(255,255,255,.02);color:#8fa3c5;font-size:.7rem;letter-spacing:.12em}.data-table td,.data-table th{border-bottom:1px solid rgba(140,179,255,.1)}.data-table tr:hover td{background:rgba(86,182,255,.045)}.data-table a{color:#9ed4ff;font-weight:600}.badge{border:1px solid rgba(255,255,255,.06);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.chat-textarea,.context-select,.input{min-height:44px;background:rgba(7,16,28,.78);border:1px solid rgba(136,177,255,.16);border-radius:14px;color:var(--color-text);padding:.7rem .9rem}.chat-textarea:focus,.context-select:focus,.input:focus{box-shadow:0 0 0 4px rgba(86,182,255,.14)}.btn{min-height:42px;padding:.65rem 1rem;border-radius:14px;font-weight:700;letter-spacing:-.01em}.btn-primary{background:linear-gradient(135deg,var(--color-primary),#4595ff);color:#06111d;box-shadow:0 14px 26px rgba(58,142,233,.22)}.btn-primary:hover:not(:disabled){background:linear-gradient(135deg,var(--color-primary-hover),#67a9ff)}.btn-secondary{background:rgba(255,255,255,.03);border:1px solid rgba(136,177,255,.14)}.button-row{display:flex;gap:.75rem;margin-top:1rem;flex-wrap:wrap}.search-shell{position:relative;margin-bottom:.9rem}.search-input-wrap{display:flex;align-items:center;gap:.55rem;padding:0 .75rem;min-height:44px;background:rgba(255,255,255,.04);border:1px solid rgba(136,177,255,.12);border-radius:14px;color:var(--color-text-muted)}.search-input-wrap:focus-within{border-color:rgba(86,182,255,.38);box-shadow:0 0 0 4px rgba(86,182,255,.08)}.search-input{width:100%;background:transparent;border:none;color:var(--color-text);font-size:.84rem;outline:none}.search-results-panel{position:absolute;top:calc(100% + .35rem);left:0;right:0;z-index:100;background:rgba(10,18,30,.98);border:1px solid rgba(136,177,255,.16);border-radius:16px;box-shadow:0 22px 44px rgba(0,0,0,.34);max-height:320px;overflow-y:auto}.search-empty-state,.search-group-label,.search-item{padding:.6rem .8rem}.search-group-label{font-size:.67rem;text-transform:uppercase;letter-spacing:.1em;color:var(--color-text-muted);font-weight:700}.search-item{display:block;text-decoration:none;font-size:.84rem;color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-item:hover{background:rgba(86,182,255,.08)}.user-menu{position:relative}.user-menu-trigger{display:flex;align-items:center;gap:.7rem;background:rgba(255,255,255,.03);border:1px solid rgba(136,177,255,.12);border-radius:999px;padding:.35rem .5rem .35rem .35rem;color:var(--color-text);cursor:pointer}.user-menu-trigger:hover{background:rgba(255,255,255,.05)}.user-avatar{width:2.15rem;height:2.15rem;border-radius:999px;overflow:hidden;display:grid;place-items:center;background:linear-gradient(135deg,var(--color-primary),#4d8fff);color:#07111b;font-size:.78rem;font-weight:800}.user-avatar-image{width:100%;height:100%;object-fit:cover}.user-meta{text-align:left;line-height:1.1}.user-name{max-width:10rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.82rem;font-weight:700}.user-menu-panel-email,.user-role{color:var(--color-text-muted);font-size:.7rem}.user-menu-chevron{color:var(--color-text-muted);transition:transform .15s ease}.user-menu-chevron-open{transform:rotate(180deg)}.user-menu-panel{position:absolute;top:calc(100% + .5rem);right:0;min-width:220px;overflow:hidden;z-index:200;background:rgba(10,18,30,.98);border:1px solid rgba(136,177,255,.16);border-radius:18px;box-shadow:0 22px 44px rgba(0,0,0,.34)}.user-menu-panel-header{padding:.9rem 1rem;border-bottom:1px solid rgba(136,177,255,.12)}.user-menu-panel-name{font-weight:700;font-size:.86rem}.user-menu-action{width:100%;display:flex;align-items:center;gap:.55rem;padding:.85rem 1rem;background:transparent;border:none;color:var(--color-text-muted);text-align:left;cursor:pointer}.user-menu-action:hover{color:var(--color-text);background:rgba(86,182,255,.08)}.hero-panel,.login-card,.login-sidecopy{border-radius:28px;border:1px solid var(--color-border);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.hero-panel{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(260px,.8fr);grid-gap:1rem;gap:1rem;padding:1.4rem;background:radial-gradient(circle at top right,rgba(86,182,255,.18),transparent 30%),linear-gradient(135deg,rgba(17,28,46,.95),rgba(10,19,34,.92))}.hero-copy{padding:1rem}.hero-title{font-size:clamp(2.2rem,4vw,4rem);line-height:.98;letter-spacing:-.06em;margin-bottom:.85rem}.hero-actions{display:flex;gap:.75rem;margin-top:1.2rem;flex-wrap:wrap}.hero-metrics{display:grid;grid-gap:.8rem;gap:.8rem}.hero-metric-card{padding:1.1rem;border-radius:22px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08)}.hero-metric-card span{display:block;color:var(--color-text-muted);font-size:.73rem;text-transform:uppercase;letter-spacing:.09em;margin-bottom:.4rem}.hero-metric-card strong{display:block;font-size:1.05rem;letter-spacing:-.03em}.feature-card{display:flex;flex-direction:column;gap:.6rem;min-height:220px}.feature-card-title{margin:0;font-size:1.05rem;letter-spacing:-.03em}.feature-card-copy{margin:0;flex:1 1;line-height:1.6}.auth-layout{min-height:100vh;display:grid;place-items:center;padding:2rem;background:radial-gradient(circle at top left,rgba(86,182,255,.2),transparent 28%),radial-gradient(circle at bottom right,rgba(81,208,161,.18),transparent 22%),linear-gradient(180deg,#08101b,#09111f)}.login-shell{width:min(1120px,100%);display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,420px);grid-gap:1rem;gap:1rem;align-items:stretch}.login-sidecopy{padding:2rem;background:radial-gradient(circle at top right,rgba(86,182,255,.18),transparent 32%),linear-gradient(135deg,rgba(16,27,44,.96),rgba(10,18,31,.9))}.login-sidecopy-badge{display:inline-flex;align-items:center;min-height:32px;padding:0 .8rem;border-radius:999px;background:rgba(86,182,255,.1);color:var(--color-primary);font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.login-sidecopy h1{margin:1.25rem 0 .9rem;font-size:clamp(2.5rem,4vw,4.2rem);line-height:.96;letter-spacing:-.08em}.login-sidecopy p{max-width:34rem;color:var(--color-text-muted);font-size:1rem;line-height:1.75}.login-feature-list{display:grid;grid-gap:.8rem;gap:.8rem;margin-top:1.8rem}.login-feature-list div{padding:.95rem 1rem;border-radius:18px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);font-weight:600}.login-card{padding:1.5rem;background:rgba(9,17,30,.92);box-shadow:0 24px 60px rgba(0,0,0,.34)}.login-card-header{margin-bottom:1.5rem}.login-brand{margin-bottom:.5rem}.login-card-header p{margin-top:.35rem;color:var(--color-text-muted)}.login-input,.login-provider-button,.login-submit{width:100%}.login-provider-button{justify-content:center;gap:.7rem}.login-divider{display:flex;align-items:center;gap:.75rem;margin:1.25rem 0}.login-divider div{flex:1 1;height:1px;background:rgba(136,177,255,.12)}.login-divider span,.login-footnote{color:var(--color-text-muted);font-size:.76rem}.login-footnote{text-align:center;margin-top:1rem}@media (max-width:1080px){.hero-panel,.login-shell{grid-template-columns:1fr}}@media (max-width:840px){body{display:block}.sidebar{position:static;width:100%;border-right:none;border-bottom:1px solid var(--color-border)}.app-shell{margin-left:0;width:100%}.topbar{padding:1rem 1.1rem}.main-content{padding:1.1rem}.page-title{font-size:2rem}}.relay-agent-id{padding:.375rem .75rem;background:var(--color-surface);color:var(--color-text);word-break:break-all}.sidebar-sections{flex:1 1;gap:1rem;min-height:0;overflow-y:auto;padding-right:.15rem}.nav-section,.sidebar-sections{display:flex;flex-direction:column}.nav-section{gap:.45rem}.nav-section-label{padding:0 .85rem;font-size:.68rem}.nav-section-label,.topbar-eyebrow{font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--color-text-muted)}.topbar-eyebrow{font-size:.7rem}.ops-hero{align-items:stretch}.ops-hero-metrics .hero-metric-card strong{max-width:16ch}.ops-section-card{margin-bottom:1rem}.section-title{font-size:1rem;font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;margin:2rem 0 1rem}.ops-lane-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.ops-lane-card{display:flex;flex-direction:column;justify-content:space-between;min-height:220px}.ops-link-card,.ops-queue-link{text-decoration:none}.ops-link-card{transition:transform .16s ease,border-color .16s ease,background .16s ease}.ops-link-card:hover,.ops-queue-link:hover .stat-card{transform:translateY(-2px);border-color:rgba(86,182,255,.24)}.ops-two-column{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);grid-gap:1rem;gap:1rem;margin-bottom:1rem}.stat-caption{color:var(--color-text-muted);font-size:.84rem;line-height:1.5}@media (max-width:980px){.ops-two-column{grid-template-columns:1fr}}.badge-blue{background:color-mix(in srgb,var(--color-primary) 15%,transparent);color:var(--color-primary)}.badge-yellow{background:color-mix(in srgb,var(--color-warning) 15%,transparent);color:var(--color-warning)}.badge-green{background:color-mix(in srgb,var(--color-success) 15%,transparent);color:var(--color-success)}.badge-red{background:color-mix(in srgb,var(--color-danger) 15%,transparent);color:var(--color-danger)}.badge-orange{background:color-mix(in srgb,#f97316 15%,transparent);color:#f97316}.badge-gray{background:var(--color-surface-2);color:var(--color-text-muted);border:1px solid var(--color-border)}.badge-purple{background:color-mix(in srgb,#a855f7 15%,transparent);color:#a855f7}.btn-success{background:color-mix(in srgb,var(--color-success) 20%,transparent);color:var(--color-success);border:1px solid var(--color-success)}.btn-success:hover:not(:disabled){background:color-mix(in srgb,var(--color-success) 35%,transparent)}.btn-success:disabled{opacity:.5;cursor:not-allowed}.program-detail-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:2rem;gap:2rem;margin-top:1.5rem}@media (max-width:900px){.program-detail-grid{grid-template-columns:1fr}}.bxml-preview{background:rgba(7,16,28,.78);border:1px solid var(--color-border);border-radius:var(--radius);padding:1rem;overflow-x:auto;font-size:.8rem;max-height:400px;overflow-y:auto;white-space:pre-wrap;word-break:break-word;color:var(--color-text)}.bxml-preview,.param-key{font-family:var(--font-mono)}.param-key{font-weight:500;color:var(--color-text-muted);width:40%;font-size:.8125rem}.approval-panel{background:linear-gradient(180deg,rgba(22,34,56,.84),rgba(13,22,37,.9));border:1px solid var(--color-border);border-radius:var(--radius);padding:1.5rem}.approval-pending-note{color:var(--color-text-muted);margin-bottom:.75rem;font-size:.875rem}.approval-approved-note{color:var(--color-success);margin-bottom:.75rem;font-size:.875rem}.approval-status-note{color:var(--color-text-muted);font-size:.875rem}.approval-verified{color:var(--color-success)}.approval-warning{color:var(--color-warning)}.approval-actions{display:flex;flex-direction:column;gap:.5rem}.error-text{color:var(--color-danger);font-size:.8125rem;margin-top:.5rem}.commissioning-progress-bar-wrap{position:relative;background:var(--color-surface-2);border-radius:9999px;height:1.25rem;overflow:hidden;margin-bottom:.5rem}.commissioning-progress-bar{height:100%;background:var(--color-success);border-radius:9999px;transition:width .4s ease}.commissioning-progress-label{font-size:.8rem;color:var(--color-text-muted)}.mini-progress-wrap{width:80px;height:6px;background:var(--color-surface-2);border-radius:9999px;overflow:hidden;display:inline-block;vertical-align:middle;margin-right:4px}.mini-progress-bar{height:100%;background:var(--color-success);border-radius:9999px}.commissioning-steps{display:flex;flex-direction:column;gap:.75rem}.step-card{display:flex;gap:1rem;align-items:flex-start;padding:1rem 1.25rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius)}.step-card-done{border-color:rgba(81,208,161,.35);background:rgba(81,208,161,.05)}.step-card-failed{border-color:rgba(255,125,120,.35);background:rgba(255,125,120,.05)}.step-number{width:2rem;height:2rem;border-radius:9999px;background:var(--color-surface-2);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.875rem;flex-shrink:0;border:1px solid var(--color-border)}.step-card-done .step-number{background:var(--color-success);color:#06111d;border-color:var(--color-success)}.step-card-failed .step-number{background:var(--color-danger);color:white;border-color:var(--color-danger)}.step-body{flex:1 1}.step-title{font-weight:600;margin-bottom:.25rem}.step-status{margin-bottom:.125rem}.step-detail{margin-top:.25rem;font-size:.875rem}.next-step-banner{background:rgba(86,182,255,.06);border:1px solid rgba(86,182,255,.22);border-radius:var(--radius);padding:1.25rem 1.5rem;margin-top:1rem}.next-step-label{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--color-primary);margin-bottom:.25rem}.next-step-message{color:var(--color-text);margin-bottom:0}.btn-sm{padding:.25rem .75rem;font-size:.8rem}.toast-container{position:fixed;bottom:1.5rem;right:1.5rem;display:flex;flex-direction:column;gap:.5rem;z-index:9999;pointer-events:none}.toast{display:flex;align-items:center;gap:.75rem;padding:.875rem 1.25rem;border-radius:.5rem;box-shadow:0 4px 12px rgba(0,0,0,.15);font-size:.9rem;pointer-events:all;animation:toast-in .2s ease;max-width:380px}.toast-success{background:#166534;color:#f0fdf4}.toast-error{background:#991b1b;color:#fef2f2}.toast-warning{background:#92400e;color:#fffbeb}.toast-info{background:#1e3a5f;color:#eff6ff}.toast-icon{font-size:1rem;flex-shrink:0}.toast-message{flex:1 1}.toast-close{background:none;border:none;color:inherit;cursor:pointer;opacity:.7;font-size:1.1rem;padding:0;line-height:1}.toast-close:hover{opacity:1}@keyframes toast-in{0%{transform:translateY(1rem);opacity:0}to{transform:translateY(0);opacity:1}}.confirm-dialog{border:none;border-radius:.75rem;box-shadow:0 20px 60px rgba(0,0,0,.3);padding:0;max-width:440px;width:90%;background:#0d1726;color:var(--color-text)}.confirm-dialog::-webkit-backdrop{background:rgba(0,0,0,.5)}.confirm-dialog::backdrop{background:rgba(0,0,0,.5)}.confirm-dialog-inner{padding:1.75rem}.confirm-title{font-size:1.1rem;font-weight:700;margin-bottom:.75rem}.confirm-message{color:var(--color-text-muted);font-size:.9rem;margin-bottom:1.5rem;line-height:1.5}.confirm-actions{display:flex;justify-content:flex-end;gap:.75rem}.nav-badge{display:inline-flex;align-items:center;justify-content:center;background:#dc2626;color:white;border-radius:9999px;font-size:.65rem;font-weight:700;min-width:1.1rem;height:1.1rem;padding:0 .25rem;margin-left:.35rem;vertical-align:middle;line-height:1}.skeleton{background:linear-gradient(90deg,rgba(255,255,255,.04) 25%,rgba(255,255,255,.08) 50%,rgba(255,255,255,.04) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:.25rem;display:block}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.approval-list{gap:.75rem;margin-top:1rem}.approval-card,.approval-list{display:flex;flex-direction:column}.approval-card{background:linear-gradient(180deg,rgba(22,34,56,.84),rgba(13,22,37,.9));border:1px solid var(--color-border);border-radius:.5rem;padding:1.25rem;gap:.5rem}.approval-card-meta{display:flex;align-items:center;gap:.75rem}.approval-type{font-size:.85rem;color:var(--color-text-muted);text-transform:capitalize}.approval-card-detail{font-size:.9rem}.approval-card-actions{margin-top:.25rem}.empty-state-card{text-align:center;padding:3rem 2rem;color:var(--color-text-muted)}.empty-state-icon{font-size:2rem;margin-bottom:.75rem}.loading-text{color:var(--color-text-muted);padding:1rem 0;font-size:.875rem}.btn-danger-outline{background:transparent;color:var(--color-danger);border:1px solid var(--color-danger)}.btn-danger-outline:hover:not(:disabled){background:rgba(255,125,120,.08)}.btn-danger-outline:disabled{opacity:.5;cursor:not-allowed}.fox-status-online{background:color-mix(in srgb,var(--hw-online) 15%,transparent);color:var(--hw-online)}.fox-status-offline,.fox-status-online{display:inline-flex;align-items:center;gap:.375rem;padding:.25rem .75rem;border-radius:9999px;font-size:.75rem;font-weight:600}.fox-status-offline{background:color-mix(in srgb,var(--hw-offline) 15%,transparent);color:var(--hw-offline)}.relay-status{background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:var(--radius);padding:1rem 1.25rem;display:flex;align-items:center;gap:1rem;flex-wrap:wrap;margin-bottom:.5rem}.relay-status-info{flex:1 1;display:flex;flex-direction:column;gap:.25rem}.relay-status-label{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted)}.relay-status-ts{font-size:.8125rem;color:var(--color-text-muted)}.fox-ping-result{padding:.75rem 1rem;border-radius:var(--radius);border:1px solid var(--color-border);background:var(--color-surface-2);font-size:.875rem;gap:.75rem;margin-top:.75rem}.fox-ping-result,.wizard-nav{display:flex;align-items:center}.wizard-nav{gap:0;margin-bottom:2rem;overflow-x:auto}.provision-wizard-step{display:flex;align-items:center;gap:.5rem;padding:.625rem 1.25rem;font-size:.875rem;color:var(--color-text-muted);border-bottom:2px solid var(--color-border);white-space:nowrap}.provision-wizard-step-num{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;border-radius:50%;border:1.5px solid var(--color-border);font-size:.75rem;font-weight:700;flex-shrink:0}.provision-step-active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.provision-step-active .provision-wizard-step-num{border-color:var(--color-primary);background:color-mix(in srgb,var(--color-primary) 15%,transparent);color:var(--color-primary)}.provision-step-done{color:var(--color-success);border-bottom-color:var(--color-success)}.provision-step-done .provision-wizard-step-num{border-color:var(--color-success);background:color-mix(in srgb,var(--color-success) 15%,transparent);color:var(--color-success)}.provision-step-arrow{color:var(--color-border);padding:0 .25rem;font-size:.75rem;border-bottom:2px solid var(--color-border);align-self:stretch;display:flex;align-items:center}.provision-status-panel{padding:2rem;border-radius:var(--radius);border:1px solid var(--color-border);background:var(--color-surface-2);text-align:center;display:flex;flex-direction:column;align-items:center;gap:1rem}.provision-status-icon{font-size:2.5rem}.provision-status-title{font-size:1.125rem;font-weight:600}.provision-status-sub{font-size:.875rem;color:var(--color-text-muted);max-width:40ch}.spec-review-table{width:100%;font-size:.875rem;border-collapse:collapse}.spec-review-table th{text-align:left;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted)}.spec-review-table td,.spec-review-table th{padding:.5rem .75rem;border-bottom:1px solid var(--color-border)}.spec-review-table td{vertical-align:top}.snapshot-reason-badge{display:inline-flex;align-items:center;padding:.125rem .5rem;border-radius:9999px;font-size:.6875rem;font-weight:600;background:var(--color-surface-2);color:var(--color-text-muted);border:1px solid var(--color-border);text-transform:uppercase;letter-spacing:.04em}.relay-agent-id-row{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;margin-top:.25rem}.relay-agent-id{background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:var(--radius);padding:.25rem .625rem;font-size:.8125rem}.install-header{margin-bottom:1.5rem}.install-breadcrumb{font-size:.8125rem;color:var(--color-text-muted);margin-bottom:.375rem}.install-breadcrumb a{color:var(--color-text-muted);text-decoration:none}.install-breadcrumb a:hover{color:var(--color-text)}.install-breadcrumb-sep{margin:0 .375rem}.install-header-row{display:flex;align-items:baseline;gap:.75rem;flex-wrap:wrap;margin-bottom:.75rem}.install-stats-row{display:flex;gap:1.5rem;margin-bottom:1.25rem;flex-wrap:wrap}.install-stat-item{font-size:.8125rem;color:var(--color-text-muted)}.install-stat-item strong{color:var(--color-text);font-weight:600}.portfolio-section{margin-bottom:2rem}.portfolio-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.portfolio-sites{display:flex;flex-direction:column;gap:.75rem}.portfolio-site{border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden;background:var(--color-surface)}.portfolio-site-header{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:var(--color-surface-2);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-wrap:wrap}.portfolio-site-header:hover{background:var(--color-border)}.portfolio-site-toggle{font-size:.75rem;color:var(--color-text-muted);flex-shrink:0;width:1rem;text-align:center}.portfolio-site-name{font-weight:600;font-size:.9375rem;color:var(--color-text);text-decoration:none;flex:1 1;min-width:0}.portfolio-site-name:hover{color:var(--color-primary)}.portfolio-site-location{font-size:.8125rem;color:var(--color-text-muted)}.portfolio-site-actions{display:flex;align-items:center;gap:.5rem;margin-left:auto;flex-shrink:0}.portfolio-installations{border-top:1px solid var(--color-border)}.portfolio-install-row{display:flex;align-items:center;gap:.75rem;padding:.625rem 1rem .625rem 2.5rem;border-bottom:1px solid var(--color-border);flex-wrap:wrap}.portfolio-install-row:last-child{border-bottom:none}.portfolio-install-row:hover{background:color-mix(in srgb,var(--color-primary) 4%,transparent)}.portfolio-install-name{font-size:.875rem;color:var(--color-primary);text-decoration:none;flex:1 1;min-width:0}.portfolio-install-name:hover{text-decoration:underline}.portfolio-install-meta{display:flex;align-items:center;gap:.5rem;margin-left:auto}.portfolio-empty-row{padding:.75rem 1rem .75rem 2.5rem;font-size:.875rem;color:var(--color-text-muted)}.portfolio-hero{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(280px,.95fr);grid-gap:1rem;gap:1rem;padding:1.5rem;margin-bottom:1.5rem;border:1px solid rgba(138,216,203,.14);border-radius:24px;background:radial-gradient(circle at top left,rgba(138,216,203,.16),transparent 34%),radial-gradient(circle at bottom right,rgba(59,130,246,.12),transparent 28%),linear-gradient(160deg,rgba(9,17,31,.96),rgba(19,28,45,.96));box-shadow:0 22px 48px rgba(0,0,0,.2)}.portfolio-hero__copy{min-width:0}.portfolio-hero__title{font-size:clamp(2rem,5vw,3.25rem);line-height:.95;margin-bottom:.85rem}.portfolio-hero__description{max-width:62ch;color:var(--color-text-muted);font-size:.98rem;line-height:1.65}.portfolio-hero__actions{display:flex;gap:.75rem;flex-wrap:wrap;margin-top:1.2rem}.portfolio-hero__stats{display:grid;grid-gap:.75rem;gap:.75rem;align-content:start}.portfolio-stat{padding:1rem 1.1rem;border-radius:18px;border:1px solid rgba(148,163,184,.16);background:rgba(15,23,42,.48);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.portfolio-stat small,.portfolio-stat span{display:block}.portfolio-stat span{font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;color:#8ad8cb}.portfolio-stat strong{display:block;font-size:1.6rem;margin:.3rem 0 .2rem}.portfolio-stat small{color:var(--color-text-muted);font-size:.8rem}.portfolio-split{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(280px,.85fr);grid-gap:1rem;gap:1rem;align-items:start}.portfolio-main,.portfolio-rail{min-width:0}.portfolio-panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:22px;padding:1.35rem;margin-bottom:1rem}.portfolio-panel--compact{padding:1.1rem}.portfolio-panel__header{display:flex;align-items:start;justify-content:space-between;gap:1rem;margin-bottom:1rem}.portfolio-panel__title{font-size:1.02rem;margin-bottom:.3rem}.portfolio-panel__subtitle{color:var(--color-text-muted);font-size:.9rem;line-height:1.55;max-width:60ch}.portfolio-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}.portfolio-card-list{display:grid;grid-gap:.9rem;gap:.9rem}.portfolio-entity-card{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(220px,.9fr) auto;grid-gap:1rem;gap:1rem;align-items:start;padding:1.15rem;border-radius:18px;border:1px solid rgba(148,163,184,.12);background:radial-gradient(circle at top left,rgba(138,216,203,.07),transparent 32%),linear-gradient(160deg,rgba(17,24,39,.94),rgba(15,23,42,.78))}.portfolio-action-card__eyebrow,.portfolio-entity-card__eyebrow,.portfolio-install-eyebrow,.portfolio-site-header__eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:.7rem;color:#8ad8cb;margin-bottom:.35rem}.portfolio-entity-card__title{font-size:1.05rem;margin-bottom:.4rem}.portfolio-entity-card__title a{color:var(--color-text);text-decoration:none}.portfolio-entity-card__title a:hover{color:var(--color-primary)}.portfolio-entity-card__description{color:var(--color-text-muted);font-size:.9rem;line-height:1.55}.portfolio-entity-card__description a{color:var(--color-primary);text-decoration:none}.portfolio-entity-card__description a:hover{text-decoration:underline}.portfolio-entity-card__meta{display:grid;grid-gap:.7rem;gap:.7rem}.portfolio-entity-card__meta span{display:block;color:var(--color-text-muted);font-size:.74rem;text-transform:uppercase;letter-spacing:.08em;margin-bottom:.18rem}.portfolio-entity-card__meta strong{font-size:.92rem}.portfolio-entity-card__actions{display:flex;flex-direction:column;align-items:flex-end;gap:.75rem}.portfolio-action-card{display:grid;grid-gap:.7rem;gap:.7rem;padding:1.15rem;border-radius:20px;border:1px solid rgba(148,163,184,.12);background:radial-gradient(circle at top left,rgba(59,130,246,.12),transparent 34%),linear-gradient(160deg,rgba(17,24,39,.95),rgba(8,13,24,.95))}.portfolio-action-card h3{font-size:1rem}.portfolio-action-card p{color:var(--color-text-muted);line-height:1.55;font-size:.9rem}.portfolio-key-value{display:grid;grid-template-columns:max-content minmax(0,1fr);grid-gap:.7rem 1rem;gap:.7rem 1rem;margin:0}.portfolio-key-value dt{color:var(--color-text-muted);font-size:.82rem}.portfolio-key-value dd{margin:0;min-width:0}.portfolio-key-value dd a{color:var(--color-primary);text-decoration:none}.portfolio-key-value dd a:hover{text-decoration:underline}.portfolio-pill-grid{display:flex;gap:.6rem;flex-wrap:wrap}.portfolio-pill{display:inline-flex;align-items:center;padding:.45rem .75rem;border-radius:999px;border:1px solid var(--color-border);background:rgba(15,23,42,.55);color:var(--color-text-muted);font-size:.82rem}.portfolio-pill--good{color:var(--color-success);border-color:rgba(34,197,94,.28);background:color-mix(in srgb,var(--color-success) 11%,transparent)}.portfolio-rail-links{display:grid;grid-gap:.75rem;gap:.75rem}.portfolio-rail-links a{color:var(--color-primary);text-decoration:none;font-size:.92rem}.portfolio-rail-links a:hover{text-decoration:underline}.portfolio-site--expanded{border-radius:18px}.portfolio-site-header{justify-content:space-between}.portfolio-install-main,.portfolio-site-header__main,.portfolio-site-header__summary{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.portfolio-site-header__main{min-width:0}.portfolio-site-header__summary{margin-left:auto;justify-content:flex-end}.portfolio-explorer{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:1rem;gap:1rem}.portfolio-explorer-toolbar{display:grid;grid-template-columns:auto minmax(280px,1fr);grid-gap:1rem;gap:1rem;align-items:center}.portfolio-focus-toggle{display:inline-flex;gap:.45rem;padding:.3rem;border-radius:999px;background:rgba(15,23,42,.66);border:1px solid var(--color-border)}.portfolio-focus-toggle__button{border:0;background:transparent;color:var(--color-text-muted);padding:.55rem .9rem;border-radius:999px;cursor:pointer;text-transform:capitalize;font-size:.82rem}.portfolio-focus-toggle__button--active{color:white;background:linear-gradient(135deg,#0ea5e9,#2563eb)}.portfolio-column-count{color:var(--color-text-muted);font-size:.8rem;margin-bottom:.75rem}.portfolio-explorer-list{display:grid;grid-gap:.65rem;gap:.65rem;min-height:420px}.portfolio-explorer-item{display:grid;grid-gap:.2rem;gap:.2rem;width:100%;padding:.9rem .95rem;text-align:left;border-radius:16px;border:1px solid rgba(148,163,184,.14);background:rgba(15,23,42,.38);color:var(--color-text);cursor:pointer;text-decoration:none}.portfolio-explorer-item:hover{border-color:rgba(125,211,252,.36);background:rgba(15,23,42,.62)}.portfolio-explorer-item--active{border-color:rgba(96,165,250,.5);background:radial-gradient(circle at top left,rgba(59,130,246,.14),transparent 34%),rgba(15,23,42,.74);box-shadow:inset 0 0 0 1px rgba(96,165,250,.15)}.portfolio-explorer-item--link{cursor:pointer}.portfolio-explorer-item span{font-size:.92rem;font-weight:600}.portfolio-explorer-item small{color:var(--color-text-muted);line-height:1.45}@media (max-width:1080px){.portfolio-entity-card,.portfolio-explorer,.portfolio-explorer-toolbar,.portfolio-hero,.portfolio-split{grid-template-columns:1fr}.portfolio-entity-card__actions{align-items:start}.portfolio-focus-toggle{width:-moz-fit-content;width:fit-content;flex-wrap:wrap}}@media (max-width:720px){.portfolio-hero{padding:1.1rem;border-radius:20px}.portfolio-hero__title{font-size:1.9rem}.portfolio-action-card,.portfolio-entity-card,.portfolio-panel{padding:1rem;border-radius:18px}.portfolio-install-row,.portfolio-site-header{padding-left:1rem}}.ptree{display:flex;flex-direction:column;gap:1.25rem;padding:1.5rem;min-height:calc(100vh - 40px)}.ptree-header{display:flex;align-items:center;gap:1.5rem;flex-wrap:wrap}.ptree-search-wrap{position:relative;flex:1 1;min-width:240px;max-width:480px}.ptree-search-icon{position:absolute;left:.85rem;top:50%;transform:translateY(-50%);color:var(--color-text-muted);pointer-events:none}.ptree-search{width:100%;background:var(--color-surface);border:1px solid var(--color-border);border-radius:999px;padding:.6rem 1rem .6rem 2.4rem;color:var(--color-text);font-size:.875rem;outline:none;transition:border-color .15s,box-shadow .15s}.ptree-search::placeholder{color:var(--color-text-muted)}.ptree-search:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--color-primary) 18%,transparent)}.ptree-kpi-row{display:flex;gap:2rem}.ptree-kpi{display:flex;flex-direction:column;align-items:center;gap:.1rem}.ptree-kpi-num{font-size:1.4rem;font-weight:700;color:var(--color-primary);line-height:1;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.ptree-kpi-label{font-size:.68rem;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted)}.ptree-header-actions{display:flex;gap:.5rem;margin-left:auto}.ptree-layout{display:grid;grid-template-columns:1fr 288px;grid-gap:1.25rem;gap:1.25rem;align-items:start}.ptree-canvas{position:relative;background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;overflow:hidden;height:580px}.ptree-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:2}.ptree-cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));height:100%;position:relative;z-index:1}.ptree-col{display:flex;flex-direction:column;border-right:1px solid var(--color-border);overflow:hidden}.ptree-col:last-child{border-right:none}.ptree-col-hd{display:flex;align-items:center;gap:.45rem;padding:.65rem .85rem;background:var(--color-surface-2);border-bottom:1px solid var(--color-border);font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--color-text-muted);flex-shrink:0}.ptree-col-badge{margin-left:auto;background:color-mix(in srgb,var(--color-border) 60%,transparent);border-radius:999px;padding:.1rem .5rem;font-size:.68rem;color:var(--color-text-muted)}.ptree-scroll{flex:1 1;overflow-y:auto;padding:.5rem;display:flex;flex-direction:column;gap:.3rem;scrollbar-width:thin;scrollbar-color:var(--color-border) transparent}.ptree-node{display:flex;align-items:center;gap:0;border:1px solid var(--color-border);border-radius:7px;background:var(--color-bg);cursor:pointer;text-align:left;transition:border-color .12s,background .12s,box-shadow .12s;overflow:hidden;width:100%;flex-shrink:0;position:relative}.ptree-node:hover{border-color:color-mix(in srgb,var(--color-primary) 50%,transparent);background:color-mix(in srgb,var(--color-primary) 5%,var(--color-bg))}.ptree-node--on{border-color:var(--color-primary);background:color-mix(in srgb,var(--color-primary) 9%,var(--color-bg));box-shadow:0 0 0 1px color-mix(in srgb,var(--color-primary) 30%,transparent),0 2px 10px color-mix(in srgb,var(--color-primary) 18%,transparent)}.ptree-node-bar{display:block;width:3px;align-self:stretch;flex-shrink:0;background:var(--color-border);transition:background .12s}.ptree-node--cust .ptree-node-bar{background:#8b5cf6}.ptree-node--site .ptree-node-bar{background:#0ea5e9}.ptree-node--station .ptree-node-bar{background:#22c55e}.ptree-node--on .ptree-node-bar{background:var(--color-primary)}.ptree-node-body{display:flex;flex-direction:column;gap:.12rem;padding:.55rem .65rem;min-width:0;flex:1 1}.ptree-node-name{font-size:.82rem;font-weight:500;color:var(--color-text);line-height:1.3}.ptree-node-name,.ptree-node-sub{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ptree-node-sub{font-size:.7rem;color:var(--color-text-muted)}.ptree-node-zap{color:var(--color-text-muted);flex-shrink:0;margin-right:.5rem;opacity:.5}.ptree-node--on .ptree-node-zap{color:var(--color-primary);opacity:1}.ptree-hint{text-align:center;color:var(--color-text-muted);font-size:.78rem;padding:1.5rem 1rem}.ptree-hint--idle{align-items:center;gap:.65rem;padding:3rem 1rem;opacity:.5}.ptree-detail,.ptree-hint--idle{display:flex;flex-direction:column}.ptree-detail{background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;padding:1.25rem;gap:1rem;position:-webkit-sticky;position:sticky;top:1rem;min-height:300px}.ptree-detail-idle{flex:1 1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;text-align:center;padding:1rem}.ptree-detail-idle-icon{color:var(--color-text-muted);opacity:.35}.ptree-detail-idle p{font-size:.8rem;color:var(--color-text-muted);line-height:1.6}.ptree-detail-type{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--color-primary)}.ptree-detail-name{font-size:1.1rem;font-weight:700;color:var(--color-text);line-height:1.25}.ptree-detail-crumb{display:flex;align-items:center;gap:.3rem;flex-wrap:wrap}.ptree-crumb-item{font-size:.72rem;color:var(--color-text-muted)}.ptree-crumb-sep{font-size:.72rem;color:var(--color-border)}.ptree-detail-dl{display:grid;grid-template-columns:auto 1fr;grid-gap:.45rem .9rem;gap:.45rem .9rem;font-size:.8rem;border-top:1px solid var(--color-border);padding-top:.9rem}.ptree-detail-dl dt{color:var(--color-text-muted);white-space:nowrap;font-size:.72rem}.ptree-detail-dl dd{color:var(--color-text);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ptree-detail-mono{font-family:var(--font-mono);font-size:.68rem!important}.ptree-detail-acts{display:flex;gap:.45rem;flex-wrap:wrap}.ptree-detail-acts .btn{display:inline-flex;align-items:center;gap:.35rem;min-height:unset;padding:.45rem .9rem;font-size:.82rem}.ptree-detail-doc-hint{display:flex;align-items:flex-start;gap:.45rem;font-size:.7rem;color:var(--color-text-muted);border-top:1px solid var(--color-border);padding-top:.9rem;line-height:1.5}.ptree-detail-doc-hint svg{flex-shrink:0;margin-top:1px}.btn-sm{gap:.3rem;padding:.35rem .75rem;min-height:unset;border-radius:8px}@media (max-width:1100px){.ptree-layout{grid-template-columns:1fr}.ptree-detail{position:static}}@media (max-width:700px){.ptree-canvas{height:auto;min-height:400px}.ptree-cols{grid-template-columns:1fr;height:auto}.ptree-col{border-right:none;border-bottom:1px solid var(--color-border);height:200px}.ptree-kpi-row,.ptree-svg{display:none}}:root{--graph-customer:#a78bfa;--graph-site:#38bdf8;--graph-install:#4ade80;--graph-doc:#fb923c;--graph-edge-start:#818cf8;--graph-edge-end:#4ade80;--graph-health-good:#22c55e;--graph-health-warn:#f59e0b;--graph-health-bad:#ef4444}.portfolio-shell{display:flex;flex-direction:column;gap:0;overflow:hidden}.portfolio-search-row{display:flex;align-items:center;gap:.75rem;padding:.5rem 1rem;border-bottom:1px solid var(--color-border);flex-shrink:0;background:var(--surface-1)}.portfolio-search-row .search-shell{flex:1 1;max-width:720px;margin-bottom:0}.portfolio-customer-chip{display:flex;align-items:center;gap:.375rem;padding:.25rem .625rem;background:rgba(167,139,250,.12);border:1px solid rgba(167,139,250,.4);border-radius:6px;font-size:.8rem;color:var(--graph-customer);white-space:nowrap}.portfolio-chip-clear{background:none;border:none;cursor:pointer;color:var(--graph-customer);font-size:1rem;line-height:1;padding:0 0 0 2px;opacity:.7;transition:opacity .15s}.portfolio-chip-clear:hover{opacity:1}.portfolio-graph-area{height:72vh;flex-shrink:0;position:relative;overflow:hidden;background:var(--surface-0,#0f1117)}.portfolio-graph-area:before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.025) 1px,transparent 0),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 0);background-size:40px 40px;pointer-events:none}.portfolio-graph-svg{width:100%;height:100%;cursor:-webkit-grab;cursor:grab;display:block;-webkit-user-select:none;-moz-user-select:none;user-select:none}.portfolio-graph-svg:active{cursor:-webkit-grabbing;cursor:grabbing}.graph-edge{transition:opacity .2s}.graph-node{transition:filter .15s}.graph-node:hover>circle:first-of-type{fill-opacity:.3;filter:drop-shadow(0 0 8px currentColor)}.graph-node-selected>circle:first-of-type{fill-opacity:.25}.graph-node-ring{animation:graph-ring-pulse 2s ease-in-out infinite}@keyframes graph-ring-pulse{0%,to{opacity:.35;r:calc(var(--r, 36px) + 8px)}50%{opacity:.6;r:calc(var(--r, 36px) + 14px)}}.graph-node-label{fill:var(--color-text-default,#e2e8f0);pointer-events:none;font-family:var(--font-sans,sans-serif);font-weight:500;letter-spacing:.01em}.graph-node-icon{dominant-baseline:middle;pointer-events:none}.graph-detail-panel{position:absolute;top:1rem;right:1rem;width:280px;background:var(--surface-2,#1a1f2e);border:1px solid var(--color-border);border-radius:10px;box-shadow:0 8px 32px rgba(0,0,0,.4);overflow:hidden;z-index:10}.graph-detail-header{display:flex;align-items:center;justify-content:space-between;padding:.625rem .875rem;background:var(--surface-3,#222840);border-bottom:1px solid var(--color-border)}.graph-detail-type{font-size:.7rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted)}.graph-detail-close{background:none;border:none;cursor:pointer;color:var(--color-text-muted);display:flex;align-items:center;padding:2px;border-radius:4px;transition:color .15s,background .15s}.graph-detail-close:hover{color:var(--color-text-default);background:rgba(255,255,255,.06)}.graph-detail-body{padding:.875rem;display:flex;flex-direction:column;gap:.5rem;max-height:calc(100vh - 200px);overflow-y:auto}.graph-detail-title{gap:.5rem;font-size:.9rem;color:var(--color-text-default);margin-bottom:.375rem}.graph-detail-health,.graph-detail-title{display:flex;align-items:center;font-weight:600}.graph-detail-health{gap:.375rem;font-size:.75rem;padding:.25rem .625rem;border-radius:6px;width:-moz-fit-content;width:fit-content}.graph-detail-health-online{background:rgba(34,197,94,.12);color:var(--graph-health-good)}.graph-detail-health-offline{background:rgba(239,68,68,.12);color:var(--graph-health-bad)}.graph-detail-alarm-badge{background:rgba(239,68,68,.2);color:var(--graph-health-bad);padding:.05rem .375rem;border-radius:4px;font-size:.7rem;margin-left:.25rem}.graph-detail-row{display:grid;grid-template-columns:80px 1fr;grid-gap:.25rem;gap:.25rem;align-items:start;font-size:.8rem}.graph-detail-label{color:var(--color-text-muted);font-size:.72rem;padding-top:1px}.graph-detail-value{color:var(--color-text-default);word-break:break-all}.graph-detail-editable{display:flex;align-items:center;gap:.25rem;cursor:pointer;border-radius:3px;padding:1px 3px;transition:background .15s}.graph-detail-editable:hover{background:rgba(255,255,255,.06)}.graph-detail-edit-icon{opacity:0;transition:opacity .15s}.graph-detail-editable:hover .graph-detail-edit-icon{opacity:.5}.graph-detail-empty{color:var(--color-text-muted)}.graph-detail-edit-inline{display:flex;align-items:center;gap:.25rem}.graph-detail-input{flex:1 1;background:var(--surface-0);border:1px solid var(--color-border);border-radius:4px;color:var(--color-text-default);font-size:.8rem;padding:.2rem .375rem;outline:none;min-width:0}.graph-detail-input:focus{border-color:var(--color-accent)}.graph-detail-icon-btn{background:none;border:none;cursor:pointer;color:var(--color-text-muted);display:flex;align-items:center;padding:3px;border-radius:3px;transition:color .15s,background .15s;flex-shrink:0}.graph-detail-icon-btn:hover{color:var(--color-text-default);background:rgba(255,255,255,.06)}.graph-detail-actions{margin-top:.5rem;padding-top:.5rem;border-top:1px solid var(--color-border);display:flex;flex-direction:column;gap:.375rem}.graph-detail-link{display:flex;align-items:center;gap:.25rem;font-size:.78rem;color:var(--color-accent,#818cf8);text-decoration:none;transition:opacity .15s}.graph-detail-link:hover{opacity:.75}.graph-detail-note{font-size:.75rem;color:var(--color-text-muted);font-style:italic;margin-top:.5rem}.portfolio-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:.75rem;color:var(--color-text-muted);text-align:center;padding:2rem}.portfolio-empty-icon{opacity:.3}.portfolio-empty-title{font-size:1rem;font-weight:600;color:var(--color-text-default);margin:0}.portfolio-empty-sub{font-size:.85rem;margin:0}.portfolio-quick-picks{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center;margin-top:.5rem;max-width:600px}.portfolio-quick-chip{display:flex;align-items:center;gap:.375rem;padding:.4rem .75rem;background:var(--surface-2);border:1px solid var(--color-border);border-radius:8px;font-size:.82rem;color:var(--color-text-default);cursor:pointer;transition:background .15s,border-color .15s}.portfolio-quick-chip:hover{background:var(--surface-3);border-color:var(--graph-site)}.portfolio-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:1rem;color:var(--color-text-muted);font-size:.875rem}.portfolio-loading-spinner{width:28px;height:28px;border:2px solid var(--color-border);border-top-color:var(--graph-install);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.graph-legend-overlay{position:absolute;top:.75rem;left:.75rem;z-index:10;background:var(--surface-2);border:1px solid var(--color-border);border-radius:8px;padding:.6rem .85rem;display:flex;flex-direction:column;gap:.3rem;pointer-events:none;min-width:130px}.graph-legend-row{display:flex;align-items:center;gap:.45rem}.graph-legend-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;opacity:.85}.graph-legend-label{font-size:.72rem;color:var(--color-text-muted);font-weight:500}.graph-legend-hint{font-size:.65rem;color:var(--color-text-muted);opacity:.6;margin-top:.15rem;line-height:1.3}.page-shell{padding:1.25rem;display:flex;flex-direction:column;gap:1rem}.page-toolbar{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.page-count{font-size:.8rem;color:var(--color-text-muted)}.table-link{color:var(--color-text-default);text-decoration:none;font-weight:500}.table-link:hover{color:var(--color-accent,#818cf8)}.table-link-sub{font-size:.85em;color:var(--color-text-muted);font-weight:400}.table-link-sub:hover{color:var(--color-accent,#818cf8)}.search-item-btn{width:100%;text-align:left;background:none;border:none;padding:0;cursor:pointer;font:inherit}.badge{display:inline-block;font-size:.7rem;font-weight:600;padding:.1rem .45rem;border-radius:4px;letter-spacing:.04em;text-transform:uppercase;background:var(--surface-3);color:var(--color-text-muted)}.badge-relay_agent{background:rgba(56,189,248,.12);color:var(--graph-site)}.badge-direct_ip{background:rgba(74,222,128,.12);color:var(--graph-install)}.badge-tailscale{background:rgba(167,139,250,.12);color:var(--graph-customer)}.badge-vpn_openvpn,.badge-vpn_wireguard{background:rgba(251,146,60,.12);color:var(--graph-doc)}.btn-sm{font-size:.78rem;padding:.3rem .65rem;display:inline-flex;align-items:center;gap:.35rem}:root{--scada-bg:#0f1923;--scada-panel:#152232;--scada-panel-alt:#1a2a3e;--scada-border:#1e3a52;--scada-border-bright:#2a5070;--scada-cooling:#00b4ff;--scada-cooling-dim:#006a99;--scada-heating:#ff6b35;--scada-heating-dim:#994020;--scada-condenser:#ffaa00;--scada-neutral:#40a0c0;--scada-pipe:#00b4ff;--scada-pipe-off:#162535;--scada-active:#00e676;--scada-warn:#ffb74d;--scada-alarm:#ff3d3d;--scada-off:#253545;--scada-disabled:#1a2535;--scada-value:#e8f4fd;--scada-label:#6a90aa;--scada-setpoint:#79c0ff;--scada-unit:#4a7090;--scada-heading:#c0ddf0;--scada-shadow:#08111a}@keyframes scada-flow{0%{stroke-dashoffset:24}to{stroke-dashoffset:0}}@keyframes scada-flow-reverse{0%{stroke-dashoffset:0}to{stroke-dashoffset:24}}@keyframes scada-spin{to{transform:rotate(1turn)}}@keyframes scada-pulse{0%,to{opacity:1}50%{opacity:.3}}@keyframes scada-breathe{0%,to{opacity:.7}50%{opacity:1}}.schematic-gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));grid-gap:1rem;gap:1rem;margin-bottom:1rem}.schematic-gallery-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden;cursor:pointer;padding:0;text-align:left;transition:border-color .18s,transform .18s,box-shadow .18s;display:flex;flex-direction:column}.schematic-gallery-card:hover{border-color:rgba(86,182,255,.4);transform:translateY(-3px);box-shadow:0 12px 36px rgba(0,0,0,.28)}.schematic-gallery-preview{width:100%;overflow:hidden;pointer-events:none;display:block;background:#0d1117}.schematic-gallery-preview>*{width:100%;height:100%}.schematic-gallery-label{padding:.7rem 1rem;border-top:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between;gap:.5rem;background:var(--color-surface)}.schematic-gallery-label strong{font-family:var(--font-mono),monospace;font-size:.875rem;color:var(--color-text)}.schematic-gallery-label span{font-size:.75rem;color:var(--color-text-muted);background:rgba(86,182,255,.08);border:1px solid rgba(86,182,255,.14);border-radius:6px;padding:.1rem .5rem}.schematic-lightbox{position:fixed;inset:0;z-index:999;background:rgba(5,9,18,.94);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;padding:1.5rem;animation:overlay-in .15s ease}.schematic-lightbox-inner{width:min(1200px,96vw);max-height:95vh;display:flex;flex-direction:column;gap:.75rem;overflow-y:auto}.schematic-lightbox-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem .25rem}.schematic-lightbox-viewer{width:100%;border-radius:var(--radius);overflow:hidden;background:#0d1117;flex-shrink:0}.schematic-lightbox-viewer>*{width:100%;height:100%}.schematic-lightbox-points{display:flex;flex-wrap:wrap;gap:.5rem;padding:.5rem .25rem}.schematic-point-pill{display:inline-flex;align-items:center;gap:.4rem;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);border-radius:8px;padding:.25rem .6rem;font-size:.78rem}.schematic-point-key{color:var(--color-text-muted);font-family:var(--font-mono),monospace}.schematic-point-val{color:var(--color-primary);font-family:var(--font-mono),monospace;font-weight:600}.sidebar{position:fixed;top:0;left:0;bottom:0;display:flex;flex-direction:column;overflow:hidden;transition:width .22s cubic-bezier(.4,0,.2,1);z-index:60}.sidebar-collapsed{width:64px!important}.sidebar-collapsed .nav-link-text,.sidebar-collapsed .nav-section-label,.sidebar-collapsed .sidebar-footer-label,.sidebar-collapsed .sidebar-footer-text,.sidebar-collapsed .sidebar-logo-text,.sidebar-collapsed .sidebar-search{display:none}.sidebar-collapsed .sidebar-logo{justify-content:center;padding:.5rem;gap:0}.sidebar-collapsed .sidebar-logo-mark{margin:0 auto}.sidebar-collapsed .nav-links a{justify-content:center;padding:.8rem 0;gap:0}.sidebar-collapsed .sidebar-footer{align-items:center}.sidebar-collapsed .sidebar-footer-value{justify-content:center}.sidebar-collapsed .sidebar-sections{padding-right:0}.sidebar-collapse-btn{position:absolute;right:-12px;top:50%;transform:translateY(-50%);width:24px;height:24px;border-radius:50%;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-muted);display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:61;transition:color .15s,background .15s,transform .22s cubic-bezier(.4,0,.2,1);flex-shrink:0}.sidebar-collapse-btn:hover{color:var(--color-text);background:var(--color-surface-2);border-color:var(--color-primary)}.sidebar-collapsed .sidebar-collapse-btn{transform:translateY(-50%) rotate(180deg)}.mobile-menu-btn{display:none;align-items:center;justify-content:center;width:36px;height:36px;border:none;background:rgba(86,182,255,.06);color:var(--color-text-muted);cursor:pointer;border-radius:10px;transition:background .15s,color .15s;flex-shrink:0;margin-right:.75rem}.mobile-menu-btn:hover{background:rgba(86,182,255,.14);color:var(--color-text)}.sidebar-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:59;animation:overlay-in .2s ease}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}@media (max-width:840px){.mobile-menu-btn{display:flex}.sidebar-collapse-btn{display:none}.sidebar{transform:translateX(-100%);transition:transform .25s cubic-bezier(.4,0,.2,1);z-index:200;width:var(--sidebar-width)!important}.sidebar.sidebar-mobile-open{transform:translateX(0)}.app-shell{margin-left:0!important;width:100%!important;transition:none!important}}@keyframes orb-drift-1{0%,to{transform:translate(0) scale(1);opacity:.6}33%{transform:translate(40px,-30px) scale(1.08);opacity:.8}66%{transform:translate(-20px,20px) scale(.95);opacity:.5}}@keyframes orb-drift-2{0%,to{transform:translate(0) scale(1);opacity:.5}40%{transform:translate(-50px,40px) scale(1.12);opacity:.7}70%{transform:translate(30px,-20px) scale(.92);opacity:.6}}@keyframes orb-drift-3{0%,to{transform:translate(0) scale(1);opacity:.4}50%{transform:translate(35px,25px) scale(1.05);opacity:.65}}.login-orb{position:absolute;border-radius:50%;filter:blur(80px);pointer-events:none}.login-orb-1{width:480px;height:480px;top:-120px;left:-80px;background:radial-gradient(circle,rgba(86,182,255,.22),transparent 70%);animation:orb-drift-1 18s ease-in-out infinite}.login-orb-2{width:420px;height:420px;bottom:-100px;right:-60px;background:radial-gradient(circle,rgba(81,208,161,.18),transparent 70%);animation:orb-drift-2 22s ease-in-out infinite}.login-orb-3{width:300px;height:300px;top:50%;right:30%;background:radial-gradient(circle,rgba(139,92,246,.12),transparent 70%);animation:orb-drift-3 28s ease-in-out infinite}.password-field-wrap{position:relative}.password-field-wrap .input{padding-right:2.75rem}.password-toggle-btn{position:absolute;right:.75rem;top:50%;transform:translateY(-50%);background:none;border:none;color:var(--color-text-muted);cursor:pointer;padding:.15rem;display:flex;align-items:center;border-radius:4px;transition:color .15s}.password-toggle-btn:hover{color:var(--color-text)}.login-feature-list div{display:flex;align-items:center;gap:.75rem}.login-feature-icon{flex-shrink:0;width:28px;height:28px;border-radius:8px;display:flex;align-items:center;justify-content:center;background:rgba(86,182,255,.1);color:var(--color-primary)}.input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(59,130,246,.12)}.floor-plan-page{display:flex;flex-direction:column;gap:1.5rem}.floor-plan-dropzone{border:2px dashed var(--color-border);border-radius:var(--radius);padding:3rem 2rem;text-align:center;background:rgba(86,182,255,.02);transition:border-color .2s,background .2s;cursor:pointer;position:relative}.floor-plan-dropzone--drag-over,.floor-plan-dropzone:hover{border-color:var(--color-primary);background:rgba(86,182,255,.06)}.floor-plan-dropzone input[type=file]{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%}.floor-plan-dropzone-icon{width:56px;height:56px;border-radius:16px;background:rgba(86,182,255,.1);display:flex;align-items:center;justify-content:center;margin:0 auto 1rem;color:var(--color-primary)}.floor-plan-dropzone-title{font-size:1rem;font-weight:600;margin-bottom:.35rem}.floor-plan-dropzone-sub{color:var(--color-text-muted);font-size:.85rem}.floor-plan-dropzone-meta{margin-top:.75rem;font-size:.78rem;color:var(--color-text-muted)}.floor-plan-upload-form{display:grid;grid-gap:1rem;gap:1rem}.floor-plan-upload-row{display:grid;grid-template-columns:1fr 1fr;grid-gap:1rem;gap:1rem}@media (max-width:640px){.floor-plan-upload-row{grid-template-columns:1fr}}.floor-plan-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));grid-gap:1rem;gap:1rem}.floor-plan-card{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);overflow:hidden;transition:border-color .15s,transform .15s;display:flex;flex-direction:column}.floor-plan-card:hover{border-color:rgba(86,182,255,.3);transform:translateY(-2px)}.floor-plan-thumbnail{aspect-ratio:4/3;background:var(--color-surface-2);display:flex;align-items:center;justify-content:center;overflow:hidden;cursor:pointer;position:relative}.floor-plan-thumbnail img{width:100%;height:100%;object-fit:cover;transition:transform .2s}.floor-plan-thumbnail:hover img{transform:scale(1.04)}.floor-plan-thumbnail-icon{color:var(--color-text-muted);opacity:.5}.floor-plan-card-body{padding:.75rem;display:flex;flex-direction:column;gap:.25rem;flex:1 1}.floor-plan-card-name{font-weight:600;font-size:.875rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.floor-plan-card-meta{font-size:.75rem;color:var(--color-text-muted)}.floor-plan-card-actions{display:flex;gap:.5rem;padding:.5rem .75rem .75rem}.floor-plan-lightbox{position:fixed;inset:0;z-index:999;background:rgba(0,0,0,.88);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:1.5rem;animation:overlay-in .15s ease}.floor-plan-lightbox-inner{position:relative;max-width:min(1100px,96vw);max-height:90vh;display:flex;flex-direction:column;gap:.75rem}.floor-plan-lightbox-img{max-width:100%;max-height:calc(90vh - 80px);border-radius:var(--radius);object-fit:contain;background:var(--color-surface)}.floor-plan-lightbox-close{position:absolute;top:-2.5rem;right:0;background:rgba(255,255,255,.08);border:none;color:white;border-radius:8px;padding:.35rem .6rem;cursor:pointer;font-size:.85rem;display:flex;align-items:center;gap:.35rem}.floor-plan-lightbox-close:hover{background:rgba(255,255,255,.16)}.floor-plan-lightbox-label{color:rgba(255,255,255,.7);font-size:.85rem;text-align:center}.upload-progress-bar{height:4px;border-radius:2px;background:var(--color-surface-2);overflow:hidden;margin-top:.5rem}.upload-progress-fill{height:100%;background:linear-gradient(90deg,var(--color-primary),#51d0a1);border-radius:2px;transition:width .3s ease;animation:progress-shimmer 1.5s ease-in-out infinite}@keyframes progress-shimmer{0%{opacity:.8}50%{opacity:1}to{opacity:.8}}.floor-plan-empty{padding:4rem 2rem;text-align:center;color:var(--color-text-muted);display:flex;flex-direction:column;align-items:center;gap:.75rem}.floor-plan-empty-icon{width:72px;height:72px;border-radius:20px;background:rgba(86,182,255,.06);border:1px solid rgba(86,182,255,.12);display:flex;align-items:center;justify-content:center;color:var(--color-primary);opacity:.7}.overview-metrics{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:1rem;gap:1rem;margin-bottom:1.5rem}@media (max-width:900px){.overview-metrics{grid-template-columns:repeat(2,1fr)}}@media (max-width:520px){.overview-metrics{grid-template-columns:1fr}}.overview-metric-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.25rem 1.25rem 1rem;display:flex;flex-direction:column;gap:.25rem;position:relative}.overview-metric-card .stat-label{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--color-text-muted)}.overview-metric-card .stat-value{font-size:1.75rem;font-weight:700;line-height:1;margin-top:.25rem}.overview-metric-card .metric-subtitle{font-size:.75rem;color:var(--color-text-muted);margin-top:.125rem}.overview-metric-card .metric-link{display:inline-block;margin-top:.75rem;font-size:.75rem;color:var(--color-primary);text-decoration:none}.overview-metric-card .metric-link:hover{text-decoration:underline}.metric-progress{height:3px;background:var(--color-border);border-radius:2px;overflow:hidden;margin-top:.5rem}.metric-progress-fill{height:100%;background:var(--color-primary);border-radius:2px;transition:width .4s ease}.detail-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:.75rem 2rem;gap:.75rem 2rem}.detail-grid-full{grid-column:1/-1}.detail-item dt{font-size:.75rem;color:var(--color-text-muted);margin-bottom:.2rem;font-weight:500}.detail-item dd{font-size:.875rem;color:var(--color-text)}.detail-item dd a{color:var(--color-primary);text-decoration:none}.detail-item dd a:hover{text-decoration:underline}