.ctl-console{background:transparent;border:1px solid var(--line);height:100%;overflow-y:auto;text-align:left}.inspector{height:100%;display:grid;grid-template-rows:auto 1fr;border:1px solid var(--line);text-align:left;min-height:0}.inspector-body{overflow-y:auto;min-height:0}.unit-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3)}.unit-id{font-size:var(--text-xl);font-weight:var(--font-weight-bold);letter-spacing:-.02em}.unit-ids{max-width:55%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.safety-header{display:grid;padding:var(--space-3);border-bottom:1px solid var(--line-strong)}.safety-btn{width:100%;padding:var(--space-3) var(--space-2);font-size:var(--text-sm);letter-spacing:.14em;text-transform:uppercase;font-weight:var(--font-weight-bold);background:transparent;color:var(--sig-alert);border:1px solid var(--sig-alarm);transition:background var(--transition-fast),color var(--transition-fast)}.safety-btn:hover:not(:disabled),.safety-btn:focus-visible:not(:disabled),.safety-btn:active:not(:disabled){background:var(--sig-alarm);border-color:var(--sig-alarm);color:var(--ui-on-alarm)}.safety-btn:focus-visible{box-shadow:none;outline:1px solid var(--ui-on-alarm);outline-offset:-3px}.field-rows{display:grid;gap:var(--space-2)}.field-row{display:grid;grid-template-columns:16px 1fr auto 64px;gap:var(--space-2);align-items:center;color:var(--ui-muted)}.field-row-name{font-size:var(--text-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.field-row-count{font-size:var(--text-sm);color:var(--ui-text)}.field-row-bar{height:3px;background:var(--ui-surface-strong);display:block}.field-row-bar>i{display:block;height:100%;background:var(--marker-ink)}.field-reach{display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-3)}.field-hint{border-top:1px solid var(--line);padding-top:var(--space-2)}.mode-switch{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line)}.mode-btn{display:flex;align-items:center;gap:var(--space-2);width:100%;border:0;padding:var(--space-2) var(--space-3);text-align:left;color:var(--ui-muted)}.mode-btn:hover:not(:disabled){border:0;color:var(--ui-text);background:var(--ui-surface-strong)}.mode-btn-active,.mode-btn-active:hover:not(:disabled){background:var(--ui-text);color:var(--r-blue)}.mode-cell-full{grid-column:1 / -1}.mode-btn-danger{justify-content:center;color:var(--sig-alert)}.mode-btn-danger:hover:not(:disabled){color:var(--sig-alert);background:var(--sig-alarm-soft)}.mode-btn-danger.mode-btn-active,.mode-btn-danger.mode-btn-active:hover:not(:disabled){background:var(--sig-alarm);color:var(--ui-on-alarm)}.mode-btn.mode-btn-sleep{justify-content:center;color:var(--state-night)}.mode-btn.mode-btn-sleep:hover:not(:disabled){color:var(--ui-text);background:var(--state-night)}.mode-sleep-result{display:grid;gap:3px}.mode-btn-glyph,.mode-inline-glyph{flex-shrink:0}.mode-btn-name{font-size:var(--text-xs);letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cmd-state-line{display:flex;align-items:center;gap:var(--space-2)}.cmd-state-detail{margin-top:2px}.mode-confirm-target{display:inline-flex;align-items:center;gap:5px;vertical-align:middle}.axis-row{display:grid;grid-template-columns:24px auto 1fr;gap:var(--space-2);align-items:center}.axis-row-name{color:var(--ui-faint)}.axis-row-steps{display:flex;gap:1px;background:var(--line)}.axis-row-step{width:30px;height:30px;min-width:30px;padding:0;border:0}.axis-row-step:hover:not(:disabled){border:0;background:var(--ui-surface-strong)}.axis-row-values{display:flex;align-items:baseline;justify-content:flex-end;gap:5px;font-size:var(--text-xs);white-space:nowrap}.axis-row-applied{color:var(--ui-muted)}.axis-row-arrow{color:var(--ui-faint);font-size:10px}.axis-row-pending{color:var(--sig-action)}.offset-actions{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2);margin-top:var(--space-1)}.offset-toggle{display:flex;align-items:center;gap:var(--space-2);width:100%;border:0;border-top:1px solid var(--line);padding:var(--space-2) 0;font-family:var(--font-mono);font-size:var(--text-mk);letter-spacing:var(--track-mk);text-transform:uppercase;color:var(--ui-faint);text-align:left}.offset-toggle:hover{border:0;border-top:1px solid var(--line);background:transparent;color:var(--ui-text)}.offset-toggle-open{color:var(--ui-text)}.offset-toggle-flag{color:var(--sig-action);margin-left:auto}.offset-toggle .ctl-chevron{margin-left:auto}.offset-toggle-flag~.ctl-chevron{margin-left:var(--space-2)}.offset-body{display:grid;gap:var(--space-2);padding-bottom:var(--space-2)}.manual-section{gap:var(--space-3)}.manual-block{display:grid;gap:5px}.manual-steps{display:flex;gap:1px;background:var(--line)}.manual-step{border:0;flex:1}.manual-step:hover:not(:disabled){border:0;background:var(--ui-surface-strong)}.manual-step-active,.manual-step-active:hover:not(:disabled){background:var(--ui-text);color:var(--r-blue)}.manual-stat{text-align:left}.manual-stat-armed{border-color:var(--sig-action)}.manual-stat-values{display:flex;align-items:baseline;gap:var(--space-1);font-size:var(--text-sm)}.manual-stat-arrow{font-size:10px;color:var(--ui-faint)}.manual-stat-target{color:var(--sig-action)}.manual-jogs{display:grid;gap:7px}.manual-jog-row{display:grid;grid-template-columns:28px 1fr 44px;gap:var(--space-2);align-items:center}.manual-jog-name{color:var(--ui-faint)}.manual-jog-buttons{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line)}.manual-jog-buttons button{border:0}.manual-jog-buttons button:hover:not(:disabled){border:0;background:var(--ui-surface-strong)}.manual-armed,.manual-armed:hover:not(:disabled){background:var(--sig-action-soft);box-shadow:none;color:var(--sig-action)}.manual-jog-delta{font-size:var(--text-xs);color:var(--sig-action);text-align:right}.manual-apply{margin-top:2px}.manual-goto{gap:var(--space-2)}.manual-position{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2)}.manual-card{display:grid;gap:6px;border-top:1px solid var(--line);padding-top:10px}.manual-card-head{font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--ui-text);cursor:help;text-decoration:underline dotted var(--line-strong);text-underline-offset:3px;justify-self:start}.ctl-section{padding:12px 14px;display:grid;gap:10px;text-align:left}.ctl-console .ctl-section{border-top:1px solid var(--line)}.ctl-emergency{padding:12px 14px;display:grid;gap:10px;background:var(--sig-alarm-soft);border-bottom:1px solid var(--line)}.ctl-emergency .ctl-section-head{color:var(--sig-alert)}.ctl-section-head{display:flex;justify-content:space-between;align-items:center;font-family:var(--font-mono);font-size:var(--text-mk);font-weight:var(--font-weight-regular);text-transform:uppercase;letter-spacing:var(--track-mk);color:var(--ui-faint);-webkit-user-select:none;user-select:none}.ctl-section-head.collapsible{cursor:pointer}.ctl-section-head.collapsible:hover{color:var(--ui-text)}.ctl-banner-danger,.ctl-banner-warn,.ctl-banner-sleep{padding:8px 14px;border-bottom:1px solid var(--line);border-left:3px solid var(--line);display:grid;gap:3px}.ctl-banner-danger{background:var(--sig-alarm-soft);border-left-color:var(--sig-alarm)}.ctl-banner-warn{background:var(--sig-action-soft);border-left-color:var(--sig-action)}.ctl-banner-sleep{background:transparent;border-left-color:var(--line-strong)}.ctl-chevron{display:inline-block;font-size:10px;color:var(--ui-faint);transition:transform .2s}.ctl-chevron.open{transform:rotate(180deg)}.ctl-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2)}.ctl-grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:var(--space-2)}.ctl-stack-sm{display:grid;gap:var(--space-2)}.ctl-inline{display:flex;align-items:center;gap:var(--space-1)}.ctl-bold{font-weight:var(--font-weight-bold)}.ctl-subhead{font-family:var(--font-mono);font-size:var(--text-mk);letter-spacing:var(--track-mk);text-transform:uppercase;color:var(--ui-faint)}.ctl-axis-row{display:grid;grid-template-columns:22px repeat(4,30px) 1fr;gap:var(--space-2);align-items:center}.ctl-btn-square{padding:0;width:30px;height:30px;min-width:30px}.ctl-stat{background:transparent;border:1px solid var(--line);padding:var(--space-1) var(--space-2);text-align:center;transition:border-color var(--transition-fast)}.ctl-stat-label{font-family:var(--font-mono);font-size:var(--text-mk);letter-spacing:.1em;text-transform:uppercase;color:var(--ui-faint)}.ctl-stat-value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:-.01em;color:var(--ui-text)}.ctl-stat-value.text-info{color:var(--sig-setpoint)}.ctl-modal{max-width:320px;text-align:center}.input.ctl-input-num{width:62px;padding:var(--space-1) 6px;font-size:var(--text-xs);font-family:var(--font-mono);font-variant-numeric:tabular-nums;text-align:right}.ctl-tip-cell>*{flex:1 1 auto;min-width:0}.ctl-tile{padding:var(--space-3);cursor:pointer;-webkit-user-select:none;user-select:none}.ctl-tile.selected{outline:2px solid var(--sig-action);background:var(--sig-action-soft)}.map-toolbar{position:absolute;top:10px;right:10px;display:flex;gap:6px;z-index:var(--z-map-tools)}.map-tool-btn{width:34px;height:34px;padding:0;font-size:17px;line-height:1;display:inline-flex;align-items:center;justify-content:center;background:var(--ui-elevated);border:1px solid var(--line-strong)}.map-tool-btn:hover:not(:disabled){border-color:var(--sig-action);background:var(--ui-elevated)}.map-tool-btn.active{border-color:var(--sig-action);background:var(--sig-action-soft);color:var(--sig-action)}.map-toolbar-sep{width:1px;align-self:stretch;margin:4px 2px;background:var(--line-strong)}.map-legend{position:absolute;bottom:var(--space-4);right:var(--space-4);z-index:var(--z-map-tools);background:var(--ui-elevated);border:1px solid var(--line-strong);padding:10px 14px;display:grid;gap:5px;pointer-events:none}.map-legend-optics{right:auto;left:var(--space-4)}.map-legend-title{margin-bottom:2px}.map-legend-title-2{margin-top:var(--space-3)}.map-legend-row{display:flex;align-items:center;gap:10px}.map-legend-label{font-size:var(--text-xs);color:var(--ui-muted);white-space:nowrap}.map-legend-ray,.map-legend-row>svg{flex-shrink:0}@media(max-width:720px){.map-legend{position:static;margin:var(--space-2)}}.map-tool-btn.spinning{animation:mapToolSpin .9s linear infinite}@keyframes mapToolSpin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.mon-table{width:100%;border-collapse:collapse}.mon-table th{padding:var(--space-1) 10px;text-align:left;font-family:var(--font-mono);font-size:var(--text-mk);font-weight:var(--font-weight-regular);letter-spacing:var(--track-mk);text-transform:uppercase;color:var(--ui-faint);white-space:nowrap;border-bottom:1px solid var(--line-strong)}.mon-table td{padding:3px 10px;font-size:var(--text-xs);font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ui-text);white-space:nowrap}.mon-table thead tr{position:sticky;top:0;background:var(--ui-elevated);z-index:var(--z-table-head)}.mon-table tbody tr{border-bottom:1px solid var(--line)}.alerts-panel{padding:var(--space-4)}.alerts-summary-grid{display:grid;gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.alerts-summary-title{margin-bottom:var(--space-2)}.alerts-summary-value{font-size:var(--text-xl);font-weight:var(--font-weight-bold)}.input.alerts-search{min-width:220px;max-width:280px}.alerts-table-wrap{overflow-x:auto}.settings-panel{padding:var(--space-4)}.settings-field-card{border:1px solid var(--line);padding:var(--space-3) var(--space-4)}.settings-grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--space-2)}.settings-narrow{max-width:420px}.settings-subsection{border-top:1px solid var(--line);padding-top:var(--space-3)}.logs-page{height:calc(100vh - 70px);box-sizing:border-box;padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-3)}.logs-tabs{display:flex;gap:var(--space-2)}.logs-tab{background:transparent;border-color:var(--line);color:var(--ui-muted);padding:var(--space-2) var(--space-4)}.logs-active,.logs-active:hover{background:var(--sig-action-soft);border-color:var(--sig-action);color:var(--sig-action)}.logs-content{flex:1;overflow:hidden;display:flex;flex-direction:column}.logs-view{display:flex;flex-direction:column;height:100%}.logs-toolbar{padding:10px var(--space-3);border-bottom:1px solid var(--line)}.logs-toolbar .input{width:180px}.logs-toolbar .select{width:auto}.logs-count{margin-left:auto}.logs-list{flex:1;overflow-y:auto;padding:var(--space-2) 0}.logs-empty{padding:var(--space-6)}.log-line{display:grid;grid-template-columns:24ch 72px 120px 1fr;gap:0 10px;padding:3px 10px;font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:.78rem;line-height:1.5;border-left:3px solid var(--line);margin-bottom:1px}.log-line.log-error{border-left-color:var(--sig-alarm);background:var(--sig-alarm-soft)}.log-line.log-warning{border-left-color:var(--sig-action);background:var(--sig-action-soft)}.log-line.log-info{border-left-color:var(--line-strong)}.log-line.log-debug{border-left-color:var(--line)}.log-ts{color:var(--ui-faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.log-level{font-weight:var(--font-weight-bold)}.log-error .log-level{color:var(--sig-alert)}.log-warning .log-level{color:var(--sig-action)}.log-info .log-level{color:var(--ui-muted)}.log-debug .log-level{color:var(--ui-faint)}.log-logger{color:var(--ui-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.log-msg{color:var(--ui-text);word-break:break-word}@media(max-width:1024px){.logs-page{height:auto}.logs-list{flex:none;height:60vh}}@media(max-width:720px){.log-line{grid-template-columns:13ch 8ch 1fr}.log-logger{display:none}.logs-toolbar .input{width:120px}}.helio-panel{padding:var(--space-4);display:grid;gap:var(--space-3);align-content:start}.helio-form{display:grid;gap:var(--space-3);max-width:420px}.helio-grid{display:grid;gap:var(--space-4);grid-template-columns:360px 1fr;align-items:start}@media(max-width:1024px){.helio-grid{grid-template-columns:1fr}.helio-form{max-width:none}}.helio-actions{display:flex;gap:var(--space-2);justify-content:flex-end}.helio-coord{padding:var(--space-1) var(--space-2)}.login-page{min-height:100vh;background:var(--ui-bg);display:flex;align-items:center;justify-content:center;padding:var(--space-4)}.login-card{border:1px solid var(--line);padding:var(--space-10) var(--space-8);width:340px;max-width:100%;display:flex;flex-direction:column;gap:var(--space-5)}.login-title{margin:0;text-align:center;font-size:var(--text-xl)}.login-submit{padding:var(--space-3);font-size:var(--text-base);margin-top:var(--space-1)}.admin-panel{padding:var(--space-4);display:grid;gap:var(--space-3);align-content:start}.admin-form{display:grid;gap:var(--space-3);max-width:420px}@font-face{font-family:DM Sans;src:url(/assets/DMSans-Regular-91xP8ydH.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:DM Sans;src:url(/assets/DMSans-Medium-CNHSAIvd.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:DM Sans;src:url(/assets/DMSans-Bold-DmSSdsvw.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}:root{--r-blue: #000e38;--r-red: #f82818;--r-orange: #fd9e11;--font-sans: "DM Sans", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;--font-mono: ui-monospace, "Cascadia Mono", "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-bold: 700;--text-mk: .6875rem;--text-xs: clamp(.69rem, .66rem + .15vw, .78rem);--text-sm: clamp(.8rem, .77rem + .17vw, .9rem);--text-base: clamp(.92rem, .88rem + .2vw, 1.05rem);--text-lg: clamp(1.08rem, 1.02rem + .28vw, 1.25rem);--text-xl: clamp(1.28rem, 1.19rem + .42vw, 1.55rem);--text-2xl: clamp(1.55rem, 1.42rem + .65vw, 1.95rem);--line-tight: 1.25;--line-base: 1.5;--track-mk: .18em;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--radius-full: 999px;--z-table-head: 1;--z-map-overlay: 5;--z-map-tools: 6;--z-topbar: 30;--z-dropdown: 40;--z-modal: 100;--z-tooltip: 1000;--transition-fast: .12s ease;--transition-base: .2s ease;--focus-ring: 0 0 0 2px var(--sig-action);--ui-bg: var(--r-blue);--ui-text: #ffffff;--ui-muted: rgba(255, 255, 255, .72);--ui-faint: rgba(255, 255, 255, .6);--line: rgba(255, 255, 255, .18);--line-strong: rgba(255, 255, 255, .32);--ui-border: var(--line);--ui-divider: var(--line);--ui-surface: rgba(255, 255, 255, .05);--ui-surface-strong: rgba(255, 255, 255, .1);--ui-elevated: #0d1d52;--ui-scrim: rgba(0, 4, 20, .6);--ui-selection: rgba(253, 158, 17, .35);--sig-action: var(--r-orange);--sig-alert: #ff6b5e;--sig-alarm: var(--r-red);--sig-confirm: #3ddc84;--sig-setpoint: #35d0ff;--ui-on-alarm: #ffffff;--sig-action-soft: rgba(253, 158, 17, .18);--sig-alarm-soft: rgba(248, 40, 24, .18);--sig-confirm-soft: rgba(61, 220, 132, .16);--sig-setpoint-soft: rgba(53, 208, 255, .15);--sig-sleep-soft: rgba(157, 148, 245, .18);--ui-accent: var(--sig-action);--ui-accent-soft: var(--sig-action-soft);--ui-warn: var(--sig-action);--ui-stale: var(--sig-action);--ui-danger: var(--sig-alarm);--ui-danger-soft: var(--sig-alarm-soft);--ui-lost: var(--sig-alert);--ui-ok: var(--sig-confirm);--ui-ok-soft: var(--sig-confirm-soft);--ui-info: var(--sig-setpoint);--ui-info-soft: var(--sig-setpoint-soft);--state-real: var(--sig-confirm);--state-virtual: var(--sig-action);--state-day: #ffc94d;--state-night: #9d94f5;--ui-map-bg: rgba(255, 255, 255, .03);--ui-topbar-bg: rgba(0, 14, 56, .92);--ui-topbar-border: var(--line);--ui-tab-text: var(--ui-muted);--ui-tab-text-active: var(--r-blue);--ui-tab-bg-active: var(--sig-action);--ui-tab-bg-hover: var(--sig-action-soft);--marker-ink: rgba(255, 255, 255, .82);--marker-hollow: rgba(0, 14, 56, .55);--marker-label-halo: rgba(0, 4, 20, .55);--mode-tracking: #35d0ff;--mode-manual: #e879f9;--mode-maintenance: #fff235;--mode-veille: #ffffff;--mode-stop: #ff6b5e;--mode-unknown: rgba(255, 255, 255, .45);--ray-incident: rgba(250, 204, 21, .85);--ray-normal: rgba(74, 222, 128, .9);--ray-reflected: rgba(248, 40, 24, .95);--ray-receiver: rgba(53, 208, 255, .85);--stop-halo: rgba(248, 40, 24, .45)}#root{color:var(--ui-text)}html,body{height:100%;color:var(--ui-text);background:var(--ui-bg)}body{margin:0;background:var(--ui-bg);color:var(--ui-text);font-family:var(--font-sans);font-weight:var(--font-weight-regular);font-size:var(--text-base);line-height:var(--line-base);-webkit-font-smoothing:antialiased}h1,h2,h3,h4{font-weight:var(--font-weight-bold);line-height:var(--line-tight);letter-spacing:-.015em}h1{font-size:var(--text-2xl);letter-spacing:-.025em}h2{font-size:var(--text-xl)}h3{font-size:var(--text-lg)}h4{font-size:var(--text-base);letter-spacing:-.005em}button{font-family:var(--font-sans);font-weight:var(--font-weight-medium);font-size:var(--text-sm);background:transparent;color:var(--ui-text);border:1px solid var(--line);padding:var(--space-2) var(--space-3);cursor:pointer;transition:border-color var(--transition-fast),background var(--transition-fast)}button:hover{border-color:var(--sig-action);background:var(--ui-surface-strong)}button:disabled{opacity:.55;cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:none;box-shadow:var(--focus-ring)}input,select,textarea{font-family:var(--font-sans);font-size:var(--text-sm);color:var(--ui-text)}@keyframes stopPulse{0%{opacity:.15;stroke-width:2px}50%{opacity:.6;stroke-width:5px}to{opacity:.15;stroke-width:2px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.stopPulse{animation:none!important;opacity:.6;stroke-width:3px}}*{box-sizing:border-box}html,body{height:100%}body{margin:0}::selection{background:var(--ui-selection)}a{color:inherit}.panel,.card{background:transparent;border:1px solid var(--line);color:var(--ui-text)}.muted{color:var(--ui-muted)}.small{font-size:var(--text-xs)}.bold{font-weight:var(--font-weight-bold);color:var(--ui-text)}button:active{transform:translateY(1px)}option{background-color:var(--ui-bg);color:var(--ui-text)}.stopPulse{animation:stopPulse 1.05s ease-in-out infinite;transform:fill-box;transform-origin:center}.mapViewport,.mapViewport *{user-select:none;-webkit-user-select:none}.hairgrid{display:grid;gap:1px;background:var(--line);border-block:1px solid var(--line)}.hairgrid>*{background:var(--ui-bg)}.hairgrid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.hairgrid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.hairgrid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.hairrow{display:flex;align-items:stretch;gap:1px;background:var(--line);border-block:1px solid var(--line)}.hairrow>*{background:var(--ui-bg)}@media(max-width:860px){.hairgrid-2,.hairgrid-3,.hairgrid-4{grid-template-columns:minmax(0,1fr)}.hairrow{display:grid;grid-template-columns:minmax(0,1fr)}}.page{padding:var(--space-4);max-width:1400px;margin:0 auto;display:grid;gap:var(--space-4);align-content:start}.page-fill{height:calc(100vh - 70px);padding:var(--space-3);box-sizing:border-box;display:grid;grid-template-rows:auto 1fr;gap:var(--space-3)}.page-fill-body{min-height:0}.row{display:flex;align-items:center;gap:var(--space-3)}.row-between{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4)}.stack{display:grid;gap:var(--space-3);align-content:start}.wrap{flex-wrap:wrap}.page-title{font-size:var(--text-xl);font-weight:var(--font-weight-bold);margin:0}.section-title{font-size:var(--text-base);font-weight:var(--font-weight-bold);margin:0}.text-ok{color:var(--sig-confirm)}.text-warn{color:var(--sig-action)}.text-danger{color:var(--sig-alert)}.text-accent{color:var(--sig-action)}.text-info,.text-setpoint{color:var(--sig-setpoint)}.mono,.datum{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.datum{letter-spacing:-.01em}.mk{font-family:var(--font-mono);font-size:var(--text-mk);font-weight:var(--font-weight-regular);letter-spacing:var(--track-mk);text-transform:uppercase;color:var(--ui-faint)}.btn-primary{background:var(--ui-accent);color:var(--r-blue);border-color:transparent;font-weight:var(--font-weight-bold)}.btn-primary:hover:not(:disabled){background:var(--ui-accent);border-color:transparent;filter:brightness(1.1)}.btn-danger{background:var(--sig-alarm);color:var(--ui-on-alarm);border-color:transparent;font-weight:var(--font-weight-bold)}.btn-danger:hover:not(:disabled){background:var(--sig-alarm);border-color:transparent;filter:brightness(1.1)}.btn-ghost{background:transparent}.btn-sm{padding:var(--space-1) var(--space-2);font-size:var(--text-xs)}.input,.select,.textarea{background:var(--ui-surface);border:1px solid var(--line);color:var(--ui-text);padding:var(--space-2) var(--space-3);width:100%;box-sizing:border-box;transition:border-color var(--transition-fast)}.input:hover,.select:hover,.textarea:hover{border-color:var(--line-strong)}.input.datum,.input[type=number]{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.field{display:grid;gap:var(--space-1)}.label{color:var(--ui-muted);font-size:var(--text-sm)}.badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:1px var(--space-2);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--font-weight-medium);background:transparent;color:var(--ui-muted);border:1px solid var(--line)}.badge-ok{background:var(--sig-confirm-soft);color:var(--sig-confirm);border-color:var(--sig-confirm)}.badge-warn{background:var(--sig-action-soft);color:var(--sig-action);border-color:var(--sig-action)}.badge-danger{background:var(--sig-alarm-soft);color:var(--sig-alert);border-color:var(--sig-alert)}.badge-accent{background:var(--sig-action-soft);color:var(--sig-action);border-color:var(--sig-action)}.badge-count{min-width:22px;height:22px;padding:0 var(--space-2);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--font-weight-bold);display:inline-flex;align-items:center;justify-content:center;background:transparent;color:var(--ui-muted);border:1px solid var(--line);font-family:var(--font-mono);font-variant-numeric:tabular-nums}.badge-count.badge-danger{background:var(--sig-alarm-soft);color:var(--sig-alert);border-color:var(--sig-alert)}.dot{display:inline-block;width:8px;height:8px;border-radius:var(--radius-full);background:var(--ui-muted);flex-shrink:0}.table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.table th{text-align:left;color:var(--ui-faint);font-family:var(--font-mono);font-size:var(--text-mk);font-weight:var(--font-weight-regular);letter-spacing:var(--track-mk);text-transform:uppercase;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--line-strong);white-space:nowrap}.table td{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--line)}.table td.datum,.table td.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;text-align:right}.table tbody tr:hover{background:var(--ui-surface)}.alert-danger,.alert-ok{color:var(--ui-text);padding:var(--space-2) var(--space-3);font-size:var(--text-sm);border:1px solid var(--line);border-left-width:3px}.alert-danger{background:var(--sig-alarm-soft);border-left-color:var(--sig-alarm)}.alert-ok{background:var(--sig-confirm-soft);border-left-color:var(--sig-confirm)}.topbar{position:sticky;top:0;z-index:var(--z-topbar);background:var(--ui-topbar-bg);border-bottom:1px solid var(--ui-topbar-border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.topbar-inner{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-2) var(--space-4);width:100%}.topbar-nav{display:flex;align-items:center;gap:var(--space-4);flex:1 1 auto;min-width:0}.topbar-account{display:flex;align-items:center;gap:var(--space-3);flex:0 0 auto}.topbar-home{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ui-text);transition:opacity var(--transition-fast)}.topbar-home:hover{opacity:.85}.topbar-logo{height:24px;width:auto;display:block}.topbar-brand{font-size:var(--text-lg);font-weight:var(--font-weight-bold);letter-spacing:.02em;color:var(--ui-text)}.topbar-tabs{display:flex;gap:var(--space-2);min-width:0;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.topbar-tabs::-webkit-scrollbar{display:none}.topbar-tab{white-space:nowrap}.topbar-tab{padding:10px 14px;text-decoration:none;color:var(--ui-tab-text);font-weight:var(--font-weight-bold);transition:background var(--transition-base),color var(--transition-base)}.topbar-tab:hover{background:var(--ui-tab-bg-hover)}.topbar-tab.active{color:var(--ui-tab-text-active);background:var(--ui-tab-bg-active)}.topbar-user{color:var(--ui-muted);font-size:var(--text-sm)}.user-menu{position:relative}.user-menu-trigger{display:inline-flex;align-items:center;gap:var(--space-2);background:transparent;color:var(--ui-muted);font-size:var(--text-sm)}.user-menu-trigger:hover{color:var(--ui-text)}.user-menu-name{font-weight:var(--font-weight-medium)}.user-menu-panel{position:absolute;top:calc(100% + 6px);right:0;min-width:230px;background:var(--ui-elevated);border:1px solid var(--line-strong);z-index:var(--z-dropdown);overflow:hidden}.user-menu-profile{padding:var(--space-3) var(--space-4)}.user-menu-username{font-weight:var(--font-weight-bold);font-size:var(--text-base)}.user-menu-email{color:var(--ui-text)}.user-menu-divider{height:1px;background:var(--line)}.user-menu-item{display:block;width:100%;text-align:left;background:transparent;border:none;border-radius:0;padding:var(--space-3) var(--space-4);font-size:var(--text-sm);color:var(--ui-text)}.user-menu-item:hover{background:var(--ui-surface-strong);border:none}.statusbar{flex-wrap:nowrap}.status-cell{display:flex;flex-direction:column;gap:3px;padding:8px 14px;min-width:0;height:100%;border-left:3px solid transparent}.status-cell-grow{flex:1}.status-cell-value{font-size:var(--text-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.status-cell-warn{border-left-color:var(--sig-action)}.status-cell-warn .status-cell-value{color:var(--sig-action)}.status-cell-alarm{border-left-color:var(--sig-alert)}.status-cell-alarm .status-cell-value{color:var(--sig-alert)}.status-cell-real .status-cell-value{color:var(--state-real)}.status-cell-virtual .status-cell-value{color:var(--state-virtual)}.status-cell-day .status-cell-value{color:var(--state-day)}.status-cell-night .status-cell-value{color:var(--state-night)}.statusbar>.tooltip-wrap{display:flex;min-width:0}.statusbar>.tooltip-wrap:last-child{flex:1}.status-item{display:flex;gap:var(--space-2);align-items:center}.lockout-banner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-2) var(--space-4);background:var(--sig-alarm-soft);border-bottom:1px solid var(--sig-alarm)}.lockout-body{display:grid;gap:2px;min-width:0}.lockout-title{font-weight:var(--font-weight-bold);font-size:var(--text-sm);color:var(--sig-alert)}.lockout-progress{margin-top:var(--space-1);height:5px;width:240px;max-width:60vw;background:var(--ui-surface-strong);overflow:hidden}.lockout-progress>i{display:block;height:100%;background:var(--sig-alarm);transition:width .3s ease}.lockout-manage{font-size:var(--text-xs);font-weight:var(--font-weight-bold);color:var(--sig-alert);border:1px solid var(--sig-alert);padding:5px 10px;text-decoration:none;white-space:nowrap}.lockout-manage:hover{background:var(--sig-alarm-soft)}.table-wrap{overflow-x:auto}.modal-backdrop{position:fixed;inset:0;background:var(--ui-scrim);display:flex;align-items:center;justify-content:center;z-index:var(--z-modal)}.modal{background:var(--ui-elevated);border:1px solid var(--line-strong);padding:var(--space-6);max-width:480px;width:90%}@media(max-width:1024px){.topbar-inner{flex-wrap:wrap;row-gap:var(--space-2)}.topbar-nav{flex:1 1 100%}.statusbar{flex-wrap:wrap}.statusbar>.tooltip-wrap:last-child{flex:1 1 auto}.page-fill{height:auto;min-height:calc(100vh - 70px);grid-template-rows:none}}@media(max-width:720px){.page{padding:var(--space-3);gap:var(--space-3)}.page-fill{padding:var(--space-2)}.topbar-inner,.topbar-tab{padding:var(--space-2) var(--space-3)}.row-between{flex-wrap:wrap}.modal{padding:var(--space-4)}}.tooltip-wrap{display:inline-flex;min-width:0}.tooltip-wrap-block{display:block}.tooltip-pop{position:fixed;z-index:var(--z-tooltip);max-width:280px;padding:6px 10px;background:var(--ui-elevated);border:1px solid var(--line-strong);color:var(--ui-text);font-size:var(--text-xs);line-height:1.45;pointer-events:none;white-space:normal;text-align:left}
