:root{--color-bg:#121816;--color-card:#1d2623;--color-card-subtle:#242e2a;--color-text:#f2f6f4;--color-muted:#93a39d;--color-accent:#54cfa9;--color-warning:#e8ad4b;--color-error:#e56855;--color-border:#ffffff14;--shadow-card:0 18px 48px #00000047;--radius-card:18px;--radius-control:12px;color:var(--color-text);background:var(--color-bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html{background:var(--color-bg);min-width:0}body{background:radial-gradient(circle at 0 0,#54cfa91f,#0000 30rem),linear-gradient(135deg,#101513 0%,#121816 42%,#0d1210 100%);min-width:0;min-height:100vh;margin:0;overflow-x:hidden}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible{outline-offset:2px;outline:2px solid #54cfa9f2}#root{min-height:100vh}.page-container{width:min(1440px,100vw - 48px);margin:0 auto;padding:28px 0 40px}.dashboard-stack{flex-direction:column;gap:18px;width:100%;display:flex}.panel{box-sizing:border-box;width:100%;min-width:0;box-shadow:var(--shadow-card);background:linear-gradient(#ffffff08,#ffffff02),#1b2521;border:1px solid #ffffff12;border-radius:14px;overflow:hidden}.panel__header,.panel__footer{justify-content:space-between;align-items:center;gap:16px;min-width:0;padding:18px 20px;display:flex}.panel__header{border-bottom:1px solid var(--color-border)}.panel__footer{border-top:1px solid var(--color-border);color:var(--color-muted);font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:.78rem}.panel__header h2,.section-heading h3{color:var(--color-text);letter-spacing:0;margin:0}.panel__header h2{font-size:clamp(1.18rem,1.45vw,1.46rem)}.panel__header p,.section-heading span{color:var(--color-muted);margin:6px 0 0;font-size:.86rem;line-height:1.5}.panel__body{gap:16px;padding:18px;display:grid}.header-panel{gap:20px;margin-bottom:18px;padding:24px;display:grid}.header-panel__copy{gap:10px;min-width:0;display:grid}.header-panel__copy h1{color:var(--color-text);letter-spacing:0;margin:0;font-size:clamp(2.2rem,3.8vw,4rem);line-height:1.04}.header-panel__copy p{color:var(--color-muted);margin:0;font-size:clamp(1rem,1.4vw,1.18rem);line-height:1.6}.address-panel{gap:16px;width:100%;min-width:0;display:grid}.address-panel__fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.field{gap:8px;min-width:0;display:grid}.field__label{color:var(--color-muted);font-size:.88rem;font-weight:650}.field input{border:1px solid var(--color-border);border-radius:var(--radius-control);width:100%;min-width:0;color:var(--color-text);background:#0d1210d1;padding:13px 14px;transition:border-color .16s,background .16s,box-shadow .16s}.field input::placeholder{color:#93a39d94}.field input:focus{background:#101815f2;border-color:#54cfa9b8;box-shadow:0 0 0 4px #54cfa91a}.address-panel__actions,.address-panel__statuses{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.button{border:1px solid var(--color-border);border-radius:var(--radius-control);min-height:42px;color:var(--color-text);cursor:pointer;background:#242e2a;justify-content:center;align-items:center;gap:8px;padding:10px 16px;font-weight:700;line-height:1;text-decoration:none;transition:transform .16s,border-color .16s,background .16s,color .16s;display:inline-flex}.button:hover:not(:disabled):not(.is-disabled){background:#2c3934;border-color:#54cfa98a;transform:translateY(-1px)}.button:disabled,.button.is-disabled{cursor:not-allowed;opacity:.48;pointer-events:none}.button--primary{color:#071210;background:var(--color-accent);border-color:#54cfa994}.button--primary:hover:not(:disabled){color:#071210;background:#68dbb8}.button--ghost{color:var(--color-muted);background:0 0}.button--compact{white-space:nowrap;min-height:36px;padding:8px 12px;font-size:.86rem}.connection-status{border:1px solid var(--color-border);min-height:30px;color:var(--color-muted);background:#090e0c6b;border-radius:999px;align-items:center;gap:8px;padding:6px 11px;font-size:.82rem;font-weight:750;display:inline-flex}.connection-status__dot{background:currentColor;border-radius:999px;width:8px;height:8px}.connection-status--connecting{color:var(--color-warning)}.connection-status--online{color:var(--color-accent)}.connection-status--error{color:var(--color-error)}.camera-panel{width:100%;min-width:0}.camera-stage{aspect-ratio:16/7;background-color:#0b1210;background-image:linear-gradient(#ffffff09 1px,#0000 1px),linear-gradient(90deg,#ffffff09 1px,#0000 1px),none;background-position:0 0,0 0,0 0;background-repeat:repeat,repeat,repeat;background-size:28px 28px;background-attachment:scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box;place-items:center;width:100%;min-height:360px;max-height:620px;display:grid;position:relative;overflow:hidden}.camera-stage img{object-fit:contain;background:#070b0a;width:100%;height:100%;display:block}.camera-panel__footer span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.empty-state,.panel-overlay{color:var(--color-muted);text-align:center;background:#0d1210d1;border:1px dashed #93a39d47;border-radius:14px;place-content:center;justify-items:center;gap:8px;padding:22px;display:grid;position:absolute;inset:22px}.empty-state strong{color:var(--color-text);font-size:1.02rem}.panel-overlay{z-index:2;pointer-events:none}.panel-overlay--error{color:var(--color-error);background:#27120fe6;border-color:#e5685580}.sensor-overview-panel,.sensor-charts-section,.alerts-panel{width:100%;min-width:0}.sensor-overview-panel__body{gap:14px}.sensor-summary{border:1px solid var(--color-border);background:#1016149e;border-radius:14px;grid-template-columns:repeat(3,minmax(0,1fr));display:grid;overflow:hidden}.sensor-summary>div{gap:6px;min-width:0;padding:15px 16px;display:grid}.sensor-summary>div+div{border-left:1px solid var(--color-border)}.sensor-summary span{color:var(--color-muted);font-size:.78rem}.sensor-summary strong{min-width:0;color:var(--color-text);overflow-wrap:anywhere;font-size:.98rem}.sensor-message{border-top:1px solid var(--color-border);color:var(--color-muted);grid-column:1/-1}.sensor-message strong{color:var(--color-text)}.sensor-message--warning{background:#36281275;border-color:#e8ad4b5c}.sensor-message--error{background:#36191485;border-color:#e5685566}.led-risk-card{border:1px solid var(--color-border);border-left:4px solid var(--risk-color,#7c8782);background:#1016149e;border-radius:14px;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:16px;padding:16px;display:grid}.led-risk-card__indicator{background:#0d1210b8;border-radius:12px;place-items:center;width:52px;height:52px;display:grid}.led-emblem{width:38px;height:38px;color:var(--led-color);filter:drop-shadow(0 0 8px #ffffff1f);overflow:visible}.led-emblem__bulb{fill:color-mix(in srgb, var(--led-color) 34%, transparent);stroke:currentColor;stroke-width:2.4px;stroke-linejoin:round}.led-emblem__beam,.led-emblem__base,.led-emblem__core{fill:none;stroke:currentColor;stroke-width:2.8px;stroke-linecap:round;stroke-linejoin:round}.led-emblem__core{opacity:.92}.led-emblem--unknown{filter:none}.led-emblem--unknown .led-emblem__bulb{fill:#0000}.led-emblem--unknown .led-emblem__beam,.led-emblem--unknown .led-emblem__core{opacity:.35}.led-risk-card__content{gap:12px;min-width:0;display:grid}.led-risk-card__header{justify-content:space-between;align-items:center;gap:12px;min-width:0;display:flex}.led-risk-card__header div{gap:4px;min-width:0;display:grid}.led-risk-card__header span,.led-risk-card__details dt,.led-risk-card__note{color:var(--color-muted);font-size:.78rem}.led-risk-card__header strong{color:var(--color-text);font-size:1.18rem}.led-risk-card__details{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0;display:grid}.led-risk-card__details div{gap:4px;min-width:0;display:grid}.led-risk-card__details dd{min-width:0;color:var(--color-text);overflow-wrap:anywhere;margin:0;font-size:.88rem}.led-risk-card__note{margin:0}.led-slow-blink{animation:1s infinite ledBlink}.led-fast-blink{animation:.3s infinite ledBlink}@keyframes ledBlink{0%,to{opacity:1}50%{opacity:.25}}.sensor-card-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;display:grid}.metric-card{border:1px solid var(--color-border);background:var(--color-card-subtle);border-radius:14px;align-content:space-between;gap:14px;min-width:0;min-height:168px;padding:16px;display:grid}.metric-card__topline,.metric-card__value-row,.metric-card__meta{justify-content:space-between;align-items:center;gap:10px;min-width:0;display:flex}.metric-card__name{color:var(--color-muted);font-size:.83rem;font-weight:750}.metric-card__state{border:1px solid;border-radius:999px;flex:none;padding:4px 8px;font-size:.72rem;font-weight:800}.metric-card__value-row{justify-content:flex-start;gap:8px}.metric-card__value-row strong{color:var(--color-text);font-size:clamp(1.55rem,2vw,2.12rem);line-height:1}.metric-card__value-row span{color:var(--color-muted);font-size:.9rem}.metric-card__meta{color:var(--color-muted);align-items:flex-start;font-size:.76rem;line-height:1.45}.metric-card__meta span:first-child{overflow-wrap:anywhere;min-width:0}.metric-card__direction{flex:none;font-weight:800}.metric-card__direction--up{color:var(--color-warning)}.metric-card__direction--down{color:var(--color-accent)}.metric-card__direction--flat{color:var(--color-muted)}.level-normal{border-color:#54cfa947}.level-normal .metric-card__state{color:var(--color-accent)}.level-attention,.level-warning{border-color:#e8ad4b57}.level-attention .metric-card__state,.level-warning .metric-card__state{color:var(--color-warning)}.level-danger{border-color:#e568556b}.level-danger .metric-card__state{color:var(--color-error)}.level-unknown .metric-card__state{color:var(--color-muted)}.sensor-charts-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.trend-loading{min-height:180px;color:var(--color-muted);background:#10161485;border:1px dashed #93a39d40;border-radius:14px;place-items:center;display:grid}.chart-panel{border:1px solid var(--color-border);background:#1016149e;border-radius:14px;gap:12px;min-width:0;min-height:320px;padding:16px;display:grid}.chart-panel__header{justify-content:space-between;align-items:flex-start;gap:12px;min-width:0;display:flex}.chart-panel h3{color:var(--color-text);letter-spacing:0;margin:0;font-size:1rem}.chart-panel__header span{color:var(--color-muted);margin-top:5px;font-size:.78rem;display:block}.segmented-control,.chart-panel__range{flex-wrap:wrap;gap:6px;display:inline-flex}.segmented-control button,.chart-panel__range button{border:1px solid var(--color-border);min-height:30px;color:var(--color-muted);cursor:pointer;background:#0d1210b8;border-radius:999px;padding:6px 10px;font-size:.78rem;font-weight:800}.segmented-control button.is-active,.chart-panel__range button.is-active{color:#071210;background:var(--color-accent);border-color:#54cfa985}.chart-container{width:100%;min-width:0;height:240px}.chart-panel__empty{height:100%;color:var(--color-muted);background:#0d12107a;border:1px dashed #93a39d40;border-radius:12px;place-items:center;display:grid}.alerts-panel{width:100%;min-width:0}.alerts-panel__header{align-items:flex-start}.alerts-panel__count{color:var(--color-accent);background:#54cfa914;border:1px solid #54cfa95c;border-radius:999px;flex:none;padding:7px 11px;font-size:.8rem;font-weight:800}.alerts-panel__body{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.alerts-panel__empty{color:var(--color-muted);grid-column:1/-1;margin:0;font-size:.9rem}.alert-list{border:1px solid var(--color-border);background:#1016149e;border-radius:14px;gap:12px;min-width:0;padding:16px;display:grid}.section-heading{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.section-heading h3{font-size:1rem}.alert-list ul{gap:10px;margin:0;padding:0;list-style:none;display:grid}.alert-list li{border-left:3px solid var(--color-warning);gap:4px;padding-left:10px;display:grid}.alert-list strong{color:var(--color-text);font-size:.9rem}.alert-list span,.alert-list p{color:var(--color-muted);margin:0;font-size:.8rem;line-height:1.5}@media (width<=1200px){.sensor-card-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width<=1050px){.sensor-charts-grid,.alerts-panel__body{grid-template-columns:1fr}}@media (width<=720px){.panel__header,.panel__footer,.led-risk-card,.chart-panel__header,.section-heading{flex-direction:column;align-items:flex-start}.led-risk-card{grid-template-columns:1fr}.camera-panel__footer span{white-space:normal;overflow-wrap:anywhere;width:100%}.sensor-summary,.led-risk-card__details{grid-template-columns:repeat(2,minmax(0,1fr))}.sensor-summary>div:nth-child(odd){border-left:0}.sensor-summary>div:nth-child(n+3){border-top:1px solid var(--color-border)}}@media (width<=640px){.page-container{width:calc(100vw - 28px);padding:14px 0 28px}.dashboard-stack,.header-panel{gap:14px}.header-panel{margin-bottom:14px;padding:18px}.header-panel__copy h1{overflow-wrap:anywhere;font-size:clamp(1.9rem,10vw,2.35rem)}.address-panel__fields,.address-panel__actions{grid-template-columns:1fr}.address-panel__actions{display:grid}.button{width:100%}.address-panel__statuses{align-items:stretch}.connection-status{justify-content:center}.panel__body{padding:14px}.camera-stage{aspect-ratio:4/3;min-height:260px;max-height:none}.sensor-card-grid,.sensor-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.led-risk-card__details{grid-template-columns:1fr}.metric-card{min-height:156px;padding:14px}.metric-card__topline,.metric-card__meta{flex-direction:column;align-items:flex-start}.chart-container{height:240px}.empty-state,.panel-overlay{padding:18px;inset:14px}}
