@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-wght-normal-BgDaEnEv.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--ease-in-out:cubic-bezier(.4, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.block{display:block}.flex{display:flex}.hidden{display:none}.inline-block{display:inline-block}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.border{border-style:var(--tw-border-style);border-width:1px}.uppercase{text-transform:uppercase}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}}:root{--font-geist-sans:"Geist Variable";--bg-primary:#1b1b1b;--bg-secondary:#0f1520;--bg-card:#0006;--bg-glass:#0006;--border-glass:#ffee001f;--border-glow:#ff000040;--text-primary:#e2e8f0;--text-secondary:#aab6c7;--text-muted:#7d8da3;--accent-cyan:#38bdf8;--accent-green:#34d399;--accent-red:#f87171;--accent-amber:#fbbf24;--accent-purple:#a78bfa;--accent-blue:#60a5fa;--glow-cyan:0 0 20px #38bdf84d;--glow-green:0 0 15px #34d3994d;--glow-red:0 0 15px #f871714d;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-xl:20px;--dot-offset:14px}*{box-sizing:border-box;margin:0;padding:0}html{font-size:111.75%}html,body,#root{background:var(--bg-primary);height:100%;color:var(--text-primary);font-family:var(--font-geist-sans), "Inter", system-ui, -apple-system, sans-serif;overflow:hidden}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#38bdf833;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#38bdf866}.glass-card{background:var(--bg-glass);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border-glass);border-radius:var(--radius-lg);transition:border-color .3s,box-shadow .3s}.glass-card:hover{border-color:var(--border-glow);box-shadow:var(--glow-cyan)}.glass-card-static{background:var(--bg-glass);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border-glass);border-radius:var(--radius-lg)}.widget-card{min-width:0;overflow:hidden}.widget-card--panel{padding:14px 16px}.widget-card-header{flex:none;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;display:flex}.widget-card-heading{flex-direction:column;min-width:0;display:flex}.widget-card-title{color:#e2e8f0;letter-spacing:.025em;margin:0;font-size:1rem;font-weight:750;line-height:1.3}.widget-card-action{flex:none;display:flex}.widget-card--inset{background:linear-gradient(145deg,#0f192da8,#050a1485);border:1px solid #38bdf829;border-radius:12px}.widget-card--inset>.widget-card-header{border-bottom:1px solid #94a3b81c;min-height:38px;margin-bottom:0;padding:7px 10px}.widget-card--inset>.widget-card-header .widget-card-title{font-size:.92rem}.widget-card-eyebrow{color:#f7f7f7;letter-spacing:.1em;margin-bottom:2px;font-size:.92rem;font-weight:800}.status-badge{text-transform:uppercase;letter-spacing:.05em;border-radius:999px;align-items:center;gap:6px;padding:4px 12px;font-size:.7rem;font-weight:600;display:inline-flex}.status-ok{color:var(--accent-green);background:#34d39926;border:1px solid #34d39940}.status-warning{color:var(--accent-amber);background:#fbbf2426;border:1px solid #fbbf2440}.status-critical{color:var(--accent-red);background:#f8717126;border:1px solid #f8717140}@keyframes pulse-green{0%,to{box-shadow:0 0 #34d39966}50%{box-shadow:0 0 0 6px #34d39900}}@keyframes pulse-red{0%,to{box-shadow:0 0 #f8717166}50%{box-shadow:0 0 0 6px #f8717100}}@keyframes pulse-amber{0%,to{box-shadow:0 0 #fbbf2466}50%{box-shadow:0 0 0 6px #fbbf2400}}.pulse-dot{border-radius:50%;width:8px;height:8px;display:inline-block}.pulse-dot-green{background:var(--accent-green);animation:2s infinite pulse-green}.pulse-dot-red{background:var(--accent-red);animation:1.5s infinite pulse-red}.pulse-dot-amber{background:var(--accent-amber);animation:2s infinite pulse-amber}.grid-bg{background-image:linear-gradient(#38bdf808 1px,#0000 1px),linear-gradient(90deg,#38bdf808 1px,#0000 1px);background-size:40px 40px}.gradient-text{background:linear-gradient(135deg, var(--accent-cyan), var(--accent-blue));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.fade-in-up{animation:.6s forwards fadeInUp}.fade-in-up-delay-1{opacity:0;animation-delay:.1s}.fade-in-up-delay-2{opacity:0;animation-delay:.2s}.fade-in-up-delay-3{opacity:0;animation-delay:.3s}.fade-in-up-delay-4{opacity:0;animation-delay:.4s}@keyframes sweepGlow{0%{transform:translate(-100%)}to{transform:translate(200%)}}.glow-line{position:relative;overflow:hidden}.glow-line:after{content:"";background:linear-gradient(90deg,#0000,#38bdf826,#0000);width:50%;height:100%;animation:3s ease-in-out infinite sweepGlow;position:absolute;top:0;left:0}.sensor-tooltip{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid var(--border-glow);border-radius:var(--radius-md);pointer-events:none;z-index:100;min-width:200px;box-shadow:var(--glow-cyan), 0 8px 32px #00000080;background:#0a0e17f2;padding:12px 16px;position:absolute}.dashboard-layout{grid-template-rows:auto minmax(0,1fr);grid-template-columns:480px minmax(0,1fr) 650px;gap:16px;height:100vh;padding:12px 16px;display:grid;position:relative;background-image:none!important}.panel-aside{z-index:5;flex-direction:column;min-width:0;min-height:0;display:flex;position:relative;overflow:hidden}.main-content{border-radius:var(--radius-lg);pointer-events:none;overflow:hidden}.app-header{grid-column:1/-1;justify-content:space-between;align-items:center;width:100%;height:48px;padding:0 4px;display:flex;position:relative}.header-top-row{z-index:60;justify-content:space-between;align-items:center;width:100%;display:flex;position:relative}.header-status-container{z-index:50;align-items:center;display:flex;position:absolute;left:46%;transform:translate(-50%)}.header-menu{position:relative}.header-menu-trigger{color:var(--text-secondary);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:7px;justify-content:center;align-items:center;width:34px;height:34px;padding:4px;font-size:1.2rem;transition:background .2s,border-color .2s,color .2s;display:flex}.header-menu-trigger:hover,.header-menu-trigger[aria-expanded=true]{color:var(--text-primary);background:#38bdf817;border-color:#38bdf838}.header-menu-popup{z-index:200;background:#080f1af7;border:1px solid #38bdf833;border-radius:9px;min-width:150px;padding:6px;position:absolute;top:calc(100% + 8px);left:0;box-shadow:0 14px 38px #00000080}.header-logout-button{color:#fca5a5;cursor:pointer;font:inherit;text-align:left;background:0 0;border:0;border-radius:6px;align-items:center;gap:9px;width:100%;padding:9px 10px;font-size:.78rem;font-weight:700;transition:background .2s,color .2s;display:flex}.header-logout-button:hover:not(:disabled){color:#fecaca;background:#f871711f}.header-logout-button:disabled{cursor:wait;opacity:.65}.header-logout-button svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;width:17px;height:17px}.header-last-message{color:#34d399;font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.68rem;font-weight:700;transform:translate(-7vw)}.header-last-message--warning{color:#fbbf24}.header-last-message--critical{color:#f87171}.header-last-message--waiting{color:#60a5fa}.left-panel,.right-panel{flex-direction:column;gap:12px;height:100%;display:flex;overflow:hidden}.floor-list-card{flex-direction:column;flex:auto;min-height:0;display:flex}.response-actions-card{flex:none}.response-actions-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.sprinkler-system-card{flex:auto;min-height:0;overflow-y:auto}.sprinkler-status-section-title{justify-content:space-between;align-items:center;gap:10px;display:flex}.sprinkler-overall-badge{letter-spacing:.08em;border:1px solid;border-radius:999px;flex:none;align-items:center;gap:5px;padding:4px 8px;font-size:.82rem;font-weight:800;display:inline-flex}.sprinkler-overall-badge--normal{color:#34d399;background:#34d39914}.sprinkler-overall-badge--warning{color:#fbbf24;background:#fbbf2414}.sprinkler-overall-badge--critical,.sprinkler-overall-badge--fire{color:#f87171;background:#f8717117}.sprinkler-status-dot{background:#64748b;border-radius:50%;flex:none;width:7px;height:7px;display:inline-block;box-shadow:0 0 8px}.sprinkler-status-dot--normal{color:#34d399;background:#34d399}.sprinkler-status-dot--warning{color:#fbbf24;background:#fbbf24;animation:2s infinite pulse-amber}.sprinkler-status-dot--critical,.sprinkler-status-dot--fire{color:#f87171;background:#f87171;animation:1.5s infinite pulse-red}.sprinkler-status-dot--neutral{color:#60a5fa;background:#60a5fa}.sprinkler-metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:8px;display:grid}.sprinkler-metrics--single{grid-template-columns:1fr}.sprinkler-telemetry-row{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;width:100%;margin-bottom:8px;display:grid}.sprinkler-telemetry-row .sprinkler-metrics{margin-bottom:0}.sprinkler-telemetry-row>.sprinkler-metric{width:100%}.sprinkler-global-status-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;display:grid}.sprinkler-global-status{background:#0f192d7a;border:1px solid #34d39933;border-radius:8px;align-content:center;gap:4px;min-width:0;padding:10px 7px;display:grid}.sprinkler-global-status--warning{background:#fbbf2412;border-color:#fbbf247a}.sprinkler-global-status--critical,.sprinkler-global-status--fire{background:#f8717114;border-color:#f8717194}.sprinkler-global-status-label{color:var(--text-muted);letter-spacing:.035em;text-align:center;text-overflow:ellipsis;white-space:nowrap;font-size:.68rem;font-weight:800;overflow:hidden}.sprinkler-global-status-value{color:#34d399;text-overflow:ellipsis;white-space:nowrap;justify-content:center;align-items:center;gap:4px;font-size:.66rem;font-weight:800;display:flex;overflow:hidden}.sprinkler-global-status--warning .sprinkler-global-status-value{color:#fbbf24}.sprinkler-global-status--critical .sprinkler-global-status-value,.sprinkler-global-status--fire .sprinkler-global-status-value{color:#f87171}.sprinkler-metric{text-align:center;background:#0f192d7a;border:1px solid #34d39938;border-radius:9px;flex-direction:column;justify-content:center;align-items:center;gap:5px;min-width:0;min-height:76px;padding:7px 5px;display:flex}@keyframes sprinkler-metric-glow-yellow{0%,to{box-shadow:0 0 8px #fbbf244d,inset 0 0 8px #fbbf240d}50%{box-shadow:0 0 22px #fbbf24bf,inset 0 0 14px #fbbf2424}}@keyframes sprinkler-metric-glow-red{0%,to{box-shadow:0 0 9px #f8717159,inset 0 0 8px #f871710f}50%{box-shadow:0 0 24px #f87171d1,inset 0 0 16px #f8717129}}.sprinkler-metric--warning{background:#fbbf241a;border-color:#fbbf24d9;animation:1.6s ease-in-out infinite sprinkler-metric-glow-yellow}.sprinkler-metric--critical{background:#f8717112;border-color:#f871719e}.sprinkler-metric--fire{background:#f8717121;border-color:#f87171e6;animation:1.25s ease-in-out infinite sprinkler-metric-glow-red}.sprinkler-metric--neutral{background:#60a5fa0f;border-color:#60a5fa61}.sprinkler-metric-icon{color:#f8fafc;border:1px solid #94a3b852;border-radius:50%;flex:none;justify-content:center;align-items:center;width:32px;height:32px;font-size:.92rem;display:flex}.sprinkler-metric-icon svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;width:20px;height:20px}.sprinkler-metric-copy{flex-direction:column;align-items:center;width:100%;min-width:0;display:flex}.sprinkler-metric-copy small{color:#fff;font-size:.87rem;font-weight:700;line-height:1.15}.sprinkler-metric-copy strong{color:#fff;font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;max-width:100%;margin-top:2px;font-size:.72rem;overflow:hidden}.sprinkler-metric--normal .sprinkler-metric-copy strong{color:#34d399}.sprinkler-metric--warning .sprinkler-metric-copy strong{color:#fbbf24}.sprinkler-metric--critical .sprinkler-metric-copy strong,.sprinkler-metric--fire .sprinkler-metric-copy strong{color:#f87171}.sprinkler-metric--neutral .sprinkler-metric-copy strong{color:#60a5fa}.sprinkler-metric-hint{color:#ffffffc7;text-overflow:ellipsis;white-space:nowrap;grid-area:hint;font-size:.56rem;overflow:hidden}.sprinkler-metric--warning .sprinkler-metric-hint,.sprinkler-metric--critical .sprinkler-metric-hint{color:#fff}.sprinkler-operations-grid{grid-template-columns:minmax(0,1.12fr) minmax(0,.88fr);gap:8px;display:grid}.sprinkler-operations-grid--pump-only{grid-template-columns:1fr}.sprinkler-operation-module--fire,.sprinkler-operation-module--critical{border-color:#f871718c;box-shadow:inset 0 0 24px #f871710b,0 0 16px #f8717114}.sprinkler-operation-state{color:#34d399;background:#34d39914;border:1px solid #34d39938;border-radius:999px;flex:none;align-items:center;gap:5px;padding:4px 7px;font-size:.68rem;font-weight:800;display:flex}.sprinkler-operation-state--fire,.sprinkler-operation-state--critical{color:#f87171;background:#f8717114;border-color:#f8717159}.sprinkler-operation-body{min-height:146px;display:grid}.sprinkler-operation-body--pump{grid-template-columns:minmax(0,1.45fr) minmax(210px,.55fr)}.sprinkler-operation-body--control{grid-template-columns:minmax(0,.68fr) minmax(0,1.32fr)}.sprinkler-operation-image-wrap{justify-content:center;align-items:center;min-width:0;display:flex;position:relative;overflow:hidden}.sprinkler-operation-image-wrap:after{content:"";pointer-events:none;background:linear-gradient(#0000 45%,#050a14eb);position:absolute;inset:0}.sprinkler-operation-image-wrap--pump,.sprinkler-operation-image-wrap--control{border-right:1px solid #94a3b81a}.sprinkler-operation-image{filter:drop-shadow(0 9px 12px #000000a6);object-fit:contain;width:100%;height:142px;padding:4px 8px 18px}.sprinkler-operation-image-wrap--control .sprinkler-operation-image{height:146px;padding-inline:7px}.sprinkler-operation-module--pump-station .sprinkler-operation-body{min-height:205px}.sprinkler-operation-module--pump-station .sprinkler-operation-image{height:200px;padding:4px 10px 20px}.sprinkler-operation-image-wrap--pump{min-height:205px}.sprinkler-pump-equipment-image{opacity:1;visibility:visible;z-index:1;display:block;position:relative}.sprinkler-operation-module--pump-station .sprinkler-pump-live-list{padding:10px}.sprinkler-operation-module--pump-station .sprinkler-pump-live{padding:9px 10px}.sprinkler-pressure-chart{grid-template-rows:auto 1fr;grid-template-columns:minmax(0,1fr) 104px;min-height:145px;margin-top:8px;display:grid}.sprinkler-pressure-chart>.widget-card-header,.sprinkler-pressure-chart>.sprinkler-pressure-chart-canvas{grid-column:1;min-width:0}.sprinkler-pressure-chart>.sprinkler-pressure-current{grid-area:1/2/3}.sprinkler-pressure-return-button{color:#7dd3fc;cursor:pointer;font:inherit;background:#38bdf817;border:1px solid #38bdf857;border-radius:6px;padding:3px 7px;font-size:.62rem;font-weight:750;transition:background .2s,border-color .2s,color .2s}.sprinkler-pressure-return-button:hover:not(:disabled){color:#e0f2fe;background:#38bdf82b;border-color:#7dd3fcb3}.sprinkler-pressure-return-button:disabled{cursor:default;opacity:.38}.sprinkler-pressure-current{text-align:center;background:#34d39914;border-left:1px solid #34d39947;flex-direction:column;justify-content:center;align-items:center;gap:3px;min-width:0;padding:10px 7px;display:flex;letter-spacing:normal!important}.sprinkler-pressure-current small{color:#fff;font-size:.83rem;font-weight:750;line-height:1.25}.sprinkler-pressure-current strong{color:#34d399;font-size:1.55rem;font-weight:850;line-height:1}.sprinkler-pressure-current-unit{color:#fff;font-size:.7rem;font-weight:750}.sprinkler-pressure-current--critical{background:#f8717114;border-left-color:#f871717a}.sprinkler-pressure-current--critical strong{color:#f87171}.sprinkler-pressure-chart-canvas{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;height:108px;padding:3px 3px 1px}.sprinkler-pressure-chart-canvas--dragging{cursor:grabbing}.sprinkler-pressure-chart-canvas .recharts-text{fill:var(--text-muted)}.sprinkler-pressure-chart-empty{color:var(--text-muted);justify-content:center;align-items:center;height:100%;font-size:.76rem;display:flex}.sprinkler-control-unit-card{background:radial-gradient(circle at 24% 58%,#f871711a,#0000 34%),radial-gradient(circle at 75% 20%,#38bdf814,#0000 40%),#00000047;flex:auto;min-height:0;padding:10px;overflow:hidden}.sprinkler-control-unit-card .sprinkler-operation-module{flex-direction:column;height:100%;display:flex}.sprinkler-control-unit-card .sprinkler-operation-header{min-height:50px;padding:9px 11px}.sprinkler-control-unit-card .sprinkler-operation-kicker{font-size:.6rem}.sprinkler-control-unit-card .sprinkler-operation-header strong{font-size:.8rem}.sprinkler-control-unit-card .sprinkler-operation-state{padding:5px 8px;font-size:.6rem}.sprinkler-control-unit-card .sprinkler-operation-body{flex:auto;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);min-height:220px}.sprinkler-control-unit-card .sprinkler-operation-body--control-cells{grid-template-columns:1fr}.sprinkler-control-unit-card .sprinkler-operation-image-wrap{background:radial-gradient(#f871711a,#0000 58%),linear-gradient(#0f192d33,#050a1480)}.sprinkler-control-unit-card .sprinkler-operation-image{height:100%;min-height:210px;max-height:290px;padding:10px 8px 24px}.sprinkler-control-unit-card .sprinkler-image-label{color:var(--text-secondary);font-size:.55rem;bottom:8px}.sprinkler-control-unit-card .sprinkler-control-grid--diagram{align-content:stretch;gap:8px;padding:10px}.sprinkler-control-unit-card .sprinkler-control-unit{padding:8px}.sprinkler-control-unit-card .sprinkler-control-number{font-size:.74rem}.sprinkler-control-unit-card .sprinkler-control-copy strong{font-size:.69rem}.sprinkler-control-unit-card .sprinkler-control-copy small{font-size:.58rem}.sprinkler-control-unit-card .sprinkler-control-check{width:20px;height:20px;font-size:.62rem}.sprinkler-control-unit-card .sprinkler-inline-valves{padding:8px 10px 10px}.sprinkler-control-unit-card .sprinkler-inline-valves-title{margin-bottom:6px}.sprinkler-control-unit-card .sprinkler-inline-valves-title span,.sprinkler-control-unit-card .sprinkler-inline-valves-title small{font-size:.58rem}.sprinkler-control-unit-card .sprinkler-unit-chip{justify-content:center;padding:7px 6px}.sprinkler-image-label{color:var(--text-muted);letter-spacing:.075em;text-align:center;z-index:1;font-size:.49rem;font-weight:750;position:absolute;bottom:5px;left:8px;right:8px}.sprinkler-pump-live-list{gap:5px;padding:7px;display:grid}.sprinkler-pump-live{background:#070e1a75;border:1px solid #34d39924;border-radius:8px;grid-template-columns:auto 1fr auto;align-items:center;gap:5px;min-width:0;padding:5px 6px;display:grid}.sprinkler-pump-live--fire{background:#f8717114;border-color:#f8717180}.sprinkler-pump-live--neutral{border-color:#60a5fa38}.sprinkler-pump-index{color:var(--text-muted);font-size:.58rem;font-weight:800}.sprinkler-pump-copy{flex-direction:column;min-width:0;display:flex}.sprinkler-pump-copy strong{color:#e2e8f0;text-overflow:ellipsis;white-space:nowrap;font-size:.67rem;overflow:hidden}.sprinkler-pump-copy small{color:var(--text-muted);margin-top:2px;font-size:.54rem;line-height:1.25}.sprinkler-pump-live--fire .sprinkler-pump-copy small{color:#f87171;font-weight:750}.sprinkler-status-section{border-top:1px solid #94a3b81f;padding-top:8px}.sprinkler-status-section+.sprinkler-status-section{margin-top:8px}.sprinkler-status-section-title{margin-bottom:6px}.sprinkler-status-section-title span{color:#d5dde8;letter-spacing:.055em;font-size:.68rem;font-weight:750}.sprinkler-status-section-title small{color:var(--text-muted);font-size:.54rem}.sprinkler-unit-row{gap:4px;padding-bottom:1px;display:flex;overflow:hidden}.sprinkler-unit-chip{background:#0f192d6b;border:1px solid #34d39933;border-radius:7px;flex:1 1 0;align-items:center;gap:5px;min-width:38px;padding:5px 6px;display:flex}.sprinkler-unit-chip--critical{background:#f8717114;border-color:#f87171a6}.sprinkler-unit-chip span:not(.sprinkler-status-dot){color:#e2e8f0;font-size:.62rem;font-weight:700}.sprinkler-unit-chip small{color:var(--text-muted);margin-left:auto;font-size:.52rem}.sprinkler-unit-chip--critical small{color:#f87171}.sprinkler-empty-state{color:var(--text-muted);font-size:.52rem}.sprinkler-control-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;display:grid}.sprinkler-control-grid--diagram{align-content:center;padding:6px}@keyframes sprinkler-unit-working-pulse{0%,to{border-color:#f871718c;box-shadow:inset 0 0 14px #ef44440f,0 0 #ef444400}50%{border-color:#f87171;box-shadow:inset 0 0 22px #ef444424,0 0 14px #ef444461}}.sprinkler-zone-unit{background:linear-gradient(145deg,#0f192db8,#050a14bd);border:1px solid #60a5fa38;border-radius:9px;grid-template-rows:auto 1fr auto;min-height:0;display:grid;position:relative;overflow:hidden}.sprinkler-zone-unit--working{background:radial-gradient(circle at 50% 56%,#ef44442e,#0000 52%),linear-gradient(145deg,#320f18e0,#12070de6);animation:1.45s ease-in-out infinite sprinkler-unit-working-pulse}.sprinkler-zone-unit-title{border-bottom:1px solid #94a3b81a;justify-content:space-between;align-items:center;padding:5px 6px;display:flex}.sprinkler-zone-unit-title span{color:var(--text-muted);letter-spacing:.04em;font-size:.43rem;font-weight:800}.sprinkler-zone-unit-title strong{color:var(--text-secondary);font-size:.67rem}.sprinkler-zone-unit--working .sprinkler-zone-unit-title span,.sprinkler-zone-unit--working .sprinkler-zone-unit-title strong{color:#fca5a5}.sprinkler-zone-diagram{justify-content:center;align-items:center;min-height:70px;display:flex;position:relative;overflow:hidden}.sprinkler-zone-equipment-image{filter:drop-shadow(0 7px 8px #000000a6);object-fit:contain;width:100%;height:68px;padding:3px 4px;transition:filter .25s,transform .25s}.sprinkler-control-unit-card .sprinkler-zone-equipment-image{height:clamp(82px,12vh,120px)}.sprinkler-zone-unit--working .sprinkler-zone-equipment-image{filter:drop-shadow(0 0 10px #f87171a6);transform:scale(1.04)}.sprinkler-zone-status-bar{color:#86efac;letter-spacing:.04em;background:#34d39914;border-top:1px solid #34d3992e;justify-content:center;align-items:center;gap:5px;padding:5px 4px;font-size:.46rem;font-weight:800;display:flex}.sprinkler-zone-unit--working .sprinkler-zone-status-bar{color:#fecaca;background:#ef444429;border-top-color:#f8717161}.sprinkler-control-side{grid-template-rows:1fr auto;min-width:0;display:grid}.sprinkler-inline-valves{border-top:1px solid #94a3b81a;padding:5px 6px 6px}.sprinkler-inline-valves-title{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.sprinkler-inline-valves-title span{color:var(--text-secondary);letter-spacing:.07em;font-size:.53rem;font-weight:800}.sprinkler-inline-valves-title small{color:#34d399;font-size:.48rem;font-weight:750}.sprinkler-operation-module--critical .sprinkler-inline-valves-title small{color:#f87171}.sprinkler-control-unit{background:#0f192d73;border:1px solid #34d39933;border-radius:8px;align-items:center;gap:5px;min-width:0;padding:5px 6px;display:flex}.sprinkler-control-unit--critical{background:#f8717114;border-color:#f87171a6}.sprinkler-control-number{color:var(--text-secondary);font-size:.68rem;font-weight:800}.sprinkler-control-copy{flex-direction:column;flex:1;min-width:0;display:flex}.sprinkler-control-copy strong{color:#e2e8f0;text-overflow:ellipsis;white-space:nowrap;font-size:.61rem;overflow:hidden}.sprinkler-control-copy small{color:#34d399;margin-top:1px;font-size:.52rem}.sprinkler-control-unit--critical .sprinkler-control-copy small{color:#f87171}.sprinkler-control-check{color:#06121a;background:#34d399;border-radius:50%;flex:none;justify-content:center;align-items:center;width:17px;height:17px;font-size:.54rem;font-weight:900;display:flex}.sprinkler-control-unit--critical .sprinkler-control-check{color:#21090b;background:#f87171}.sprinkler-container{justify-content:center;align-items:center;width:38px;height:35px;display:flex}@media (width<=1700px){.dashboard-layout{grid-template-columns:400px minmax(0,1fr) 520px;gap:12px;padding:8px 12px}.sprinkler-operation-module--pump-station .sprinkler-operation-body,.sprinkler-operation-image-wrap--pump{min-height:155px}.sprinkler-operation-module--pump-station .sprinkler-operation-image{height:153px}.sprinkler-operation-module--pump-station .sprinkler-pump-live-list{padding:7px}.sprinkler-operation-module--pump-station .sprinkler-pump-live{padding:6px 7px}.sprinkler-pressure-chart-canvas{height:64px}}@media (width<=1150px) and (width>=769px){.dashboard-layout{grid-template-columns:minmax(240px,320px) minmax(0,1fr) minmax(360px,440px)}}@media (width<=768px){:root{--dot-offset:11px}.dashboard-layout{background-image:none;flex-direction:column;gap:16px;height:100vh;padding:12px 10px;display:flex;overflow-y:auto}.panel-aside{height:auto;display:block;overflow:visible}.main-content{border-radius:var(--radius-md);height:35vh;min-height:320px;pointer-events:auto!important;position:relative!important}.app-header{flex-direction:column;align-items:center;gap:8px;height:auto;padding:8px 4px}.header-status-container{justify-content:center;width:100%;margin-top:4px;position:static;transform:none}.header-status-badge{gap:8px!important;padding:6px 14px!important}.header-status-badge-icon{width:30px!important;height:30px!important;font-size:1rem!important}.header-status-badge-value{font-size:.85rem!important}.header-status-badge-detail{font-size:.65rem!important}.left-panel,.right-panel{height:auto!important;overflow:visible!important}.left-panel .glass-card,.right-panel .glass-card{height:auto!important;padding:12px 14px!important;overflow:visible!important}.sprinkler-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.sprinkler-telemetry-row{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.response-actions-grid,.sprinkler-operations-grid,.sprinkler-operation-body--pump,.sprinkler-operation-body--control{grid-template-columns:1fr}.sprinkler-operation-image-wrap--pump,.sprinkler-operation-image-wrap--control{border-bottom:1px solid #94a3b81a;border-right:0}.sprinkler-operation-image{height:190px}.sprinkler-operation-image-wrap--control .sprinkler-operation-image{height:220px}.sprinkler-pressure-chart-canvas{height:150px}.floor-list-container{padding-right:4px;max-height:none!important;overflow-y:visible!important}.sensor-dot{width:17px!important;height:17px!important}.sprinkler-container{height:28px!important}}.alert-card{border-radius:var(--radius-md);background:#0f192d33;border:1px solid #38bdf814;padding:10px 12px;transition:all .2s}.alert-card:hover{background:#0f192d66;border-color:#38bdf833}.recharts-cartesian-grid-horizontal line,.recharts-cartesian-grid-vertical line{stroke:#38bdf80f!important}.stat-value{font-variant-numeric:tabular-nums;letter-spacing:-.02em;font-size:1.5rem;font-weight:700}.floor-row{color:var(--text-secondary);align-items:center;gap:8px;padding:3px 0;font-size:.72rem;display:flex}.floor-row .floor-num{text-align:right;width:24px;color:var(--text-primary);font-weight:600}.sensor-dot{border-radius:50%;width:20px;height:20px;display:inline-block}.sensor-dot-ok{background:var(--accent-green)}.sensor-dot-warn{background:var(--accent-amber)}.sensor-dot-error{background:var(--accent-red)}.sensor-dot-off{background:var(--text-muted);opacity:.55}.floor-list-header{color:var(--text-primary);letter-spacing:.07em;text-align:center;grid-template-columns:52px 1fr 68px;padding:0 4px 5px;font-size:.66rem;font-weight:800;display:grid}.floor-list-container{flex-direction:column;flex:auto;min-height:0;display:flex;overflow:hidden}.floor-list-container .floor-row{border-bottom:1px solid #fff1;min-height:0;flex:1 1 0!important;padding:0 10px!important}.floor-list-container .floor-row:last-child{border-bottom:0}.floor-list-container .floor-num{text-align:center;width:32px}.floor-list-container .sensor-dot{width:18px;height:18px}.floor-list-container .sprinkler-container{height:20px}.response-actions-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.response-action{background:#0f192d59;border:1px solid #38bdf81f;border-radius:9px;align-items:center;gap:10px;min-height:48px;padding:7px 10px;display:flex}.response-action--active{background:var(--response-color)}@supports (color:color-mix(in lab, red, red)){.response-action--active{background:color-mix(in srgb, var(--response-color) 8%, transparent)}}.response-action--active{border-color:var(--response-color);box-shadow:0 0 14px var(--response-color)}@supports (color:color-mix(in lab, red, red)){.response-action--active{box-shadow:0 0 14px color-mix(in srgb, var(--response-color) 18%, transparent)}}.response-action-icon{background:#0a0f1ed9;border:1px solid #ffffff59;border-radius:50%;flex:0 0 34px;justify-content:center;align-items:center;height:34px;display:flex}.response-action-icon img{filter:brightness(0)invert();object-fit:contain;width:20px;height:20px}.response-action-copy{flex-direction:column;min-width:0;display:flex}.response-action-copy strong{color:#e2e8f0;font-size:.84rem}.response-action-copy small{color:var(--response-color,var(--text-secondary));margin-top:2px;font-size:.75rem;font-weight:750}.sprinkler-operations-grid--combined{grid-template-columns:1fr}.sprinkler-combined-equipment{flex-direction:column;min-height:0;display:flex}.sprinkler-pump-stage{background:radial-gradient(#38bdf81a,#0000 65%);border-bottom:1px solid #94a3b81f;justify-content:center;align-items:center;min-width:0;min-height:320px;padding:8px;display:flex;position:relative;overflow:visible}.sprinkler-pump-layout{grid-template-columns:34% 66%;align-items:stretch;width:100%;max-width:560px;display:grid;position:relative}.sprinkler-pump-diagram{aspect-ratio:1449/1086;grid-column:2;width:92%;margin-bottom:10%;margin-left:-5%;line-height:normal;position:relative}.sprinkler-pump-stage .sprinkler-pump-equipment-image{filter:drop-shadow(0 12px 14px #000000b8);object-fit:contain;width:100%;height:auto;padding:0;display:block}.sprinkler-pump-callout-lines{fill:none;pointer-events:none;z-index:2;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.sprinkler-pump-callout-line{fill:none;stroke:url(#sprinkler-callout-flow);stroke-linecap:round;stroke-width:1.5px;vector-effect:non-scaling-stroke}.sprinkler-pump-callout-line circle{fill:#4ade80;stroke:none}.sprinkler-pump-callout-list{z-index:3;position:absolute;inset:0 66% 0 0}.sprinkler-pump-callout{pointer-events:auto;background:#050a14eb;border:1px solid #34d39980;border-radius:8px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:6px;padding:8px 9px;display:grid;position:absolute;left:12%;right:6px;transform:translateY(-50%)}.sprinkler-pump-callout--neutral{border-color:#60a5fa94}.sprinkler-pump-callout--critical,.sprinkler-pump-callout--fire{border-color:#f87171c2}.sprinkler-pump-callout-copy{flex-direction:column;min-width:0;display:flex}.sprinkler-pump-callout-copy>span{color:#fff;font-size:.74rem;font-weight:800;line-height:1.2}.sprinkler-pump-callout-copy strong{color:#34d399;margin-top:2px;font-size:.65rem;font-weight:850;line-height:1.25}.sprinkler-pump-callout-copy small{color:#60a5fa;margin-top:2px;font-size:.59rem;font-weight:800}.sprinkler-pump-callout--critical .sprinkler-pump-callout-copy strong,.sprinkler-pump-callout--fire .sprinkler-pump-callout-copy strong,.sprinkler-pump-callout-copy .sprinkler-jokey-runtime--critical{color:#f87171}.sprinkler-equipment-statuses{pointer-events:none;z-index:3;position:absolute;inset:0}.sprinkler-valve-callout{color:#34d399;pointer-events:none;width:0;height:0;position:absolute}.sprinkler-valve-callout--neutral{color:#60a5fa}.sprinkler-valve-callout--critical{color:#f87171}.sprinkler-valve-callout-lines{fill:none;pointer-events:none;z-index:1;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.sprinkler-valve-callout-line{fill:none;stroke:#2563eb;stroke-linecap:round;stroke-width:1px;vector-effect:non-scaling-stroke}.sprinkler-valve-callout-card{pointer-events:auto;white-space:nowrap;z-index:3;background:#050a14f7;border:1px solid;border-radius:6px;flex-direction:column;min-width:92px;padding:5px 6px;display:flex;position:absolute}.sprinkler-valve-callout-card>span{color:#fff;font-size:.66rem;font-weight:800}.sprinkler-valve-callout-card strong{color:currentColor;margin-top:2px;font-size:.59rem;font-weight:850}.sprinkler-valve-callout--right .sprinkler-valve-callout-card{top:0;left:28px;transform:translateY(-50%)}.sprinkler-valve-callout--left .sprinkler-valve-callout-card{top:0;right:28px;transform:translateY(-50%)}.sprinkler-valve-callout--down .sprinkler-valve-callout-card{top:29px;left:0;transform:translate(-50%)}.sprinkler-equipment-marker{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#d5dde8;pointer-events:auto;white-space:nowrap;background:#050a14db;border:1px solid #34d3996b;border-radius:6px;grid-template-columns:auto 1fr;align-items:center;gap:4px;padding:4px 5px;display:grid;position:absolute;transform:translate(-50%,-50%)}.sprinkler-equipment-marker-copy{flex-direction:column;gap:1px;min-width:0;display:flex}.sprinkler-equipment-marker-copy>span{color:#d5dde8;font-size:.5rem;font-weight:750}.sprinkler-equipment-marker-copy strong{color:#34d399;font-size:.43rem;font-weight:850}.sprinkler-equipment-marker-copy small{color:#60a5fa;font-size:.39rem;font-style:normal;font-weight:800}.sprinkler-equipment-marker-copy .sprinkler-jokey-runtime--critical{color:#f87171}.sprinkler-equipment-marker--pump{grid-template-columns:auto 1fr auto}.sprinkler-pump-mode-icon{color:#34d399;background:#34d3991f;border:1px solid #34d39973;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;display:flex}.sprinkler-pump-mode-icon svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;width:16px;height:16px}.sprinkler-pump-mode-icon--manual{color:#fbbf24;background:#fbbf241f;border-color:#fbbf2480}.sprinkler-equipment-marker--pump .sprinkler-equipment-marker-copy>span{font-size:.54rem}.sprinkler-equipment-marker--pump .sprinkler-equipment-marker-copy strong{font-size:.46rem}.sprinkler-equipment-marker--fire,.sprinkler-equipment-marker--critical{border-color:#f87171b8}.sprinkler-equipment-marker--fire .sprinkler-equipment-marker-copy strong,.sprinkler-equipment-marker--critical .sprinkler-equipment-marker-copy strong{color:#f87171}.sprinkler-equipment-marker--neutral{border-color:#60a5fa8c}.sprinkler-equipment-marker--neutral .sprinkler-equipment-marker-copy strong{color:#60a5fa}.sprinkler-node-column{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:10px;display:grid}.sprinkler-node{background:#070e1a94;border:1px solid #34d39933;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:6px;min-height:252px;padding:8px 6px;display:flex;overflow:hidden}.sprinkler-node--working{border-color:#f87171b8;box-shadow:inset 0 0 14px #f871711f}.sprinkler-node>img{filter:drop-shadow(0 4px 5px #000000b3);object-fit:contain;width:100px;height:110px}.sprinkler-node-copy{text-align:center;flex-direction:column;align-items:center;gap:4px;display:flex}.sprinkler-node strong{color:#fff;font-size:.7rem}.sprinkler-node small{color:#34d399;align-items:center;gap:5px;font-size:.62rem;font-weight:800;display:flex}.sprinkler-node--working small{color:#f87171}@media (width<=1700px){.sprinkler-pump-stage{min-height:210px;padding:6px}.sprinkler-pump-layout{max-width:460px}.sprinkler-pump-callout{gap:4px;padding:6px 7px;right:6px}.sprinkler-pump-callout-copy>span{font-size:.68rem}.sprinkler-pump-callout-copy strong{font-size:.6rem}.sprinkler-pump-callout-copy small{font-size:.55rem}.sprinkler-valve-callout-card{min-width:86px;padding:5px 6px}.sprinkler-valve-callout-card>span{font-size:.6rem}.sprinkler-valve-callout-card strong{font-size:.54rem}.sprinkler-node{min-height:150px;padding:6px}.sprinkler-node>img{width:100px;max-width:100%;height:100px}.sprinkler-node strong{font-size:.62rem}.sprinkler-node small{font-size:.55rem}.sprinkler-pressure-chart{grid-template-columns:minmax(0,1fr) 90px;min-height:124px}.sprinkler-pressure-chart-canvas{height:88px}.sprinkler-pressure-current strong{font-size:1.3rem}}@media (width<=768px){.sprinkler-pump-stage{min-height:250px}.sprinkler-telemetry-row{grid-template-columns:repeat(2,minmax(0,1fr))}.sprinkler-pump-layout{grid-template-columns:38% 62%}.sprinkler-pump-callout-list{right:62%}.floor-list-container .floor-row{flex:0 0 31px!important}.floor-list-container .sprinkler-container{height:24px}}@media (width<=520px){.sprinkler-node-column{grid-template-columns:repeat(2,minmax(0,1fr))}.sprinkler-pump-callout{right:4px}.sprinkler-pump-callout-copy>span{font-size:.6rem}.sprinkler-pump-callout-copy strong{font-size:.53rem}.sprinkler-pump-mode-icon{width:19px;height:19px}.sprinkler-valve-callout-card{min-width:72px}.sprinkler-valve-callout-card>span{font-size:.47rem}.sprinkler-valve-callout-card strong{font-size:.43rem}}.building-overlay-container{z-index:0;pointer-events:none;background-color:#000;width:100%;height:100%;position:absolute;inset:0;overflow:hidden}.building-image-wrapper{pointer-events:none;width:100%;height:100%;margin-left:-4%;position:relative}.building-overlay-img{object-fit:contain;object-position:center center;-webkit-user-select:none;user-select:none;pointer-events:none;width:100%;height:100%}.building-overlay-svg{z-index:10;width:100%;height:100%;position:absolute;top:0;left:0}.floor-rect{pointer-events:auto;transition:all .2s}@keyframes pulse-fire-rect{0%{fill-opacity:.15;stroke-opacity:.4}50%{fill-opacity:.35;stroke-opacity:.8}to{fill-opacity:.15;stroke-opacity:.4}}.floor-rect-fire{animation:2s ease-in-out infinite pulse-fire-rect}.building-tooltip{border:1.5px solid var(--border-glow);border-radius:var(--radius-md);z-index:50;pointer-events:none;box-shadow:var(--glow-cyan), 0 8px 32px #00000080;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0a0f1ef2;min-width:150px;padding:8px 12px;transition:opacity .15s;position:absolute}.building-tooltip-title{color:var(--text-primary);margin-bottom:4px;font-size:.85rem;font-weight:700}.building-tooltip-status{font-size:.75rem;font-weight:500}.fire-badge{z-index:30;border-radius:var(--radius-sm);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);pointer-events:none;background:#ef4444e6;border:1px solid #ef444480;align-items:center;gap:8px;padding:4px 8px;animation:.3s ease-out slide-in-badge;display:flex;position:absolute;box-shadow:0 0 15px #ef444466}@keyframes slide-in-badge{0%{opacity:0;transform:translate(-90%,-50%)}to{opacity:1;transform:translate(-100%,-50%)}}.fire-badge-dot{background:#fff;border-radius:50%;width:6px;height:6px;animation:1.5s infinite ping-white}@keyframes ping-white{0%{opacity:1;transform:scale(1)}70%{opacity:0;transform:scale(2.5)}to{opacity:0;transform:scale(1)}}.fire-badge-content{color:#fff;white-space:nowrap;align-items:center;gap:6px;font-size:.72rem;font-weight:700;display:flex}.fire-glow-dot{z-index:25;pointer-events:none;background:#ef4444;border-radius:50%;width:12px;height:12px;animation:1.5s infinite pulse-glow;position:absolute;box-shadow:0 0 20px 8px #ef4444}@keyframes pulse-glow{0%{opacity:.7;transform:translate(-50%,-50%)scale(.8)}50%{opacity:1;transform:translate(-50%,-50%)scale(1.2)}to{opacity:.7;transform:translate(-50%,-50%)scale(.8)}}.login-page{background:radial-gradient(circle at 50% 18%,#38bdf821,#0000 34%),linear-gradient(145deg,#080d16 0%,#111a28 54%,#070b12 100%);justify-content:center;align-items:center;height:100vh;padding:24px;display:flex;position:relative;overflow:hidden}.login-page:before{content:"";pointer-events:none;background-image:linear-gradient(#38bdf809 1px,#0000 1px),linear-gradient(90deg,#38bdf809 1px,#0000 1px);background-size:42px 42px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000,#0000 88%);mask-image:linear-gradient(#000,#0000 88%)}.login-card{-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);z-index:1;background:#080f1adb;border:1px solid #38bdf838;border-radius:18px;width:100%;max-width:430px;padding:34px;position:relative;box-shadow:0 28px 80px #00000085,0 0 38px #38bdf814}.login-brand{letter-spacing:.02em;align-items:center;gap:10px;font-size:1.15rem;font-weight:800;display:flex}.login-brand-icon{background:linear-gradient(135deg,#38bdf8,#1e40af);border-radius:10px;justify-content:center;align-items:center;width:38px;height:38px;display:flex}.login-heading{margin:28px 0 24px}.login-heading p{color:var(--text-muted);letter-spacing:.06em;text-transform:uppercase;margin-bottom:6px;font-size:.78rem}.login-heading h1{color:#f8fafc;font-size:1.65rem;line-height:1.2}.login-form{gap:18px;display:grid}.login-field{color:var(--text-secondary);gap:8px;font-size:.78rem;font-weight:650;display:grid}.login-field input{color:var(--text-primary);font:inherit;background:#020812b8;border:1px solid #7dd3fc2e;border-radius:9px;outline:none;padding:12px 13px;font-size:.95rem;transition:border-color .2s,box-shadow .2s}.login-field input:focus{border-color:#38bdf8b8;box-shadow:0 0 0 3px #38bdf81c}.login-error{color:#fca5a5;background:#f871711a;border:1px solid #f8717147;border-radius:8px;padding:10px 12px;font-size:.76rem;line-height:1.45}.login-submit{color:#fff;cursor:pointer;font:inherit;background:linear-gradient(135deg,#0ea5e9,#2563eb);border:0;border-radius:9px;min-height:45px;margin-top:2px;padding:11px 16px;font-size:.9rem;font-weight:750;transition:filter .2s,transform .2s}.login-submit:hover:not(:disabled){filter:brightness(1.1);transform:translateY(-1px)}.login-submit:disabled{cursor:wait;opacity:.68}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
