:root{color:#17212f;font-synthesis:none;text-rendering:optimizelegibility;--panel:#fff;--line:#d8e1ec;--muted:#64748b;--primary:#334155;--success:#087f5b;--danger:#b42318;--warning:#b54708;--dtp-bg:#fff;--shadow:0 1px 2px #0f172a0d, 0 10px 30px #0f172a0f;background:#f3f6fa;font-family:Inter,Segoe UI,Roboto,Arial,sans-serif}*{box-sizing:border-box}body{background:linear-gradient(#080f1bd1,#080f1be0),url(/assets/sokol-background-Bp8qdOeR.png) 50%/min(72vw,920px) no-repeat fixed,#080f1b;min-width:320px;min-height:100vh;margin:0}button,input,select,textarea{font:inherit}button,select{cursor:pointer}button:focus-visible,a:focus-visible{outline-offset:2px;outline:3px solid #3341553d}h1,h2,h3,p{margin-top:0}h1{margin-bottom:5px;font-size:23px}h2{margin-bottom:5px;font-size:19px}h3{margin-bottom:10px;font-size:16px}a{color:var(--primary)}.table-wrap{width:100%;overflow-x:auto}.data-table{border-collapse:collapse;width:100%}.data-table th,.data-table td{border-bottom:1px solid var(--line);text-align:left;padding:11px 12px}.data-table th{color:var(--muted);text-transform:uppercase;font-size:12px}.users-table select{min-width:110px}.user-actions{flex-wrap:wrap;gap:7px;display:flex}.user-approval-notice{color:#f8fafc;background:#7f1d1dd6;border:1px solid #f871718c;border-radius:11px;justify-content:space-between;align-items:center;gap:16px;margin:12px 0;padding:13px 16px;display:flex;box-shadow:0 12px 32px #0000003d}.user-approval-notice>div{align-items:center;gap:11px;display:flex}.user-approval-notice small{color:#fecaca;margin-top:3px;display:block}.user-approval-icon{color:#f87171;font-size:20px}.nav-notification-count{color:#fff;text-align:center;background:#dc2626;border-radius:999px;min-width:22px;margin-left:auto;padding:2px 6px;font-size:11px;font-weight:800}.loading-screen,.auth-page{place-items:center;min-height:100vh;padding:24px;display:grid}.loading-screen{color:var(--muted)}.auth-page{background:0 0}.auth-card{background:var(--panel);border:1px solid var(--line);width:min(430px,100%);box-shadow:var(--shadow);border-radius:14px;padding:28px}.sokol-brand{color:#fff;background:#111827;border-radius:10px;flex:none;align-items:center;gap:9px;padding:7px 11px;display:inline-flex;box-shadow:inset 0 0 0 1px #ffffff1a}.sokol-brand img{object-fit:contain;width:54px;height:40px}.sokol-brand span{letter-spacing:.12em;white-space:nowrap;font-size:14px;font-weight:900}.auth-brand{margin-bottom:22px}.auth-card label,.station-controls label{color:#475569;gap:6px;margin-top:14px;font-size:13px;font-weight:700;display:grid}input,select,textarea{color:#17212f;background:#fff;border:1px solid #cbd6e2;border-radius:8px;width:100%;padding:10px 12px}input:focus,select:focus,textarea:focus{border-color:var(--primary);outline:3px solid #33415529}input:disabled,select:disabled,textarea:disabled{cursor:not-allowed;color:#64748b;background:#f1f5f9}.check-row{align-items:center;grid-template-columns:auto 1fr!important;font-weight:500!important}.check-row input{width:auto}.auth-actions{gap:10px;margin-top:20px;display:flex}.auth-actions .button{flex:1}.form-message{min-height:20px;color:var(--danger);margin:12px 0 0}.eyebrow{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;margin-bottom:5px;font-size:12px;font-weight:800}.muted{color:var(--muted)}.app-shell{width:min(1500px,100% - 32px);margin:16px auto 36px}.topbar,.sidebar,.content{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow)}.topbar{border-radius:12px;justify-content:space-between;align-items:center;gap:18px;padding:16px 18px;display:flex}.topbar-title{align-items:center;gap:12px;min-width:0;display:flex}.mobile-menu-button,.sidebar-close{color:#334155;background:0 0;border:0;display:none}.mobile-menu-button{border-radius:7px;flex:none;padding:7px 9px;font-size:22px}.mobile-menu-button:hover,.sidebar-close:hover{background:#eef2f7}.button{border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;gap:6px;min-height:38px;padding:8px 13px;font-weight:750;text-decoration:none;display:inline-flex}.button:disabled{cursor:not-allowed;opacity:.6}.button.primary,.button.success,.button.danger{color:#fff;background:var(--primary)}.button.secondary{color:#334155;background:#f8fafc;border-color:#b9c6d4}.button.small{min-height:31px;padding:5px 8px;font-size:12px}.service-pill,.badge{border-radius:999px;align-items:center;padding:5px 9px;font-size:12px;font-weight:800;display:inline-flex}.service-pill.running,.badge.success{color:#066b4c;background:#d8f5e9}.badge.warning{color:#8a4b08;background:#fef3c7}.service-pill.stopped,.badge.danger{color:#9f1d15;background:#fee2e2}.dashboard-layout{grid-template-columns:232px minmax(0,1fr);align-items:start;gap:12px;margin-top:12px;display:grid}.dashboard-main{min-width:0}.sidebar{border-radius:12px;max-height:calc(100vh - 32px);padding:13px;position:sticky;top:16px;overflow-y:auto}.sidebar-header{justify-content:space-between;align-items:center;padding:3px 5px 13px;display:flex}.sidebar-header span{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;margin-bottom:2px;font-size:12px;font-weight:800;display:block}.sidebar-service{border:1px solid var(--line);background:#f8fafc;border-radius:9px;align-items:center;gap:10px;margin-bottom:14px;padding:10px;display:flex}.sidebar-service .lamp{width:10px;height:10px}.sidebar-service.running .lamp{background:#15b87a;box-shadow:0 0 0 4px #15b87a1f}.sidebar-service.stopped .lamp{background:#dc4b45;box-shadow:0 0 0 4px #dc4b451f}.sidebar-service strong,.sidebar-service small{display:block}.sidebar-service strong{font-size:12px}.sidebar-service small{color:var(--muted);margin-top:2px;font-size:12px}.sidebar-nav{gap:15px;display:grid}.nav-group{gap:4px;display:grid}.nav-group-label{color:#94a3b8;letter-spacing:.07em;text-transform:uppercase;padding:0 9px 4px;font-size:12px;font-weight:850}.sidebar-nav button{color:#475569;text-align:left;background:0 0;border:1px solid #0000;border-radius:8px;grid-template-columns:26px 1fr;align-items:center;width:100%;padding:9px 10px;font-weight:750;display:grid}.nav-icon{place-items:center;width:20px;height:20px;font-family:SFMono-Regular,Consolas,monospace;font-size:13px;font-weight:900;display:grid}.sidebar-footer{border-top:1px solid var(--line);color:var(--muted);gap:8px;margin-top:16px;padding:12px 8px 3px;font-size:12px;display:grid}.sidebar-user-row{justify-content:space-between;align-items:center;gap:8px;display:flex}.sidebar-logout{width:100%}.sidebar-footer strong{color:#334155;text-transform:uppercase}.sidebar-backdrop{display:none}.warning-banner,.error-banner,.notice{border-radius:8px;margin-top:10px;margin-bottom:14px;padding:11px 14px}.page-navigation+.warning-banner{margin-top:0}.warning-banner{color:#78350f;background:#fef3c7;border:1px solid #f5d98a}.error-banner{color:#991b1b;background:#fee2e2;border:1px solid #fecaca}.notice{color:#334155;background:#f1f3f5;border:1px solid #cbd5e1}.content{border-radius:10px;min-height:440px;margin-top:10px;padding:20px}.section-heading{justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px;display:flex}.section-heading p{margin-bottom:0}.section-heading select{min-width:230px}.overview-strip{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px;display:grid}.overview-stat{border:1px solid var(--line);background:linear-gradient(145deg,#fff,#f8fafc);border-radius:10px;min-width:0;padding:15px 16px;position:relative;overflow:hidden}.overview-stat:before{content:"";background:#94a3b8;width:4px;position:absolute;inset:0 auto 0 0}.overview-stat.success:before{background:var(--success)}.overview-stat.warning:before{background:#e59717}.overview-stat span,.overview-stat small{color:var(--muted);display:block}.overview-stat span{letter-spacing:.03em;text-transform:uppercase;font-size:12px;font-weight:800}.overview-stat strong{margin:6px 0 3px;font-size:24px;line-height:1;display:block}.overview-stat small{font-size:12px}.station-grid{grid-template-columns:repeat(auto-fit,minmax(255px,1fr));gap:12px;display:grid}.station-card{border:1px solid var(--line);cursor:default;background:#fff;border-radius:11px;padding:13px 13px 9px;transition:border-color .16s,box-shadow .16s,transform .16s;position:relative;box-shadow:0 5px 18px #0f172a0e}.station-card:hover{border-color:#94a3b8;transform:translateY(-1px);box-shadow:0 10px 28px #0f172a17}.station-card:focus-visible{outline-offset:2px;outline:3px solid #33415533}.station-card.selected{border-color:var(--primary);box-shadow:0 0 0 3px #3341551f,0 10px 28px #0f172a14}.station-card.dragging{opacity:.5;transform:scale(.985)}.station-card.drop-target{border-color:#38bdf8;box-shadow:0 0 0 3px #38bdf833}.station-card-header{grid-template-columns:minmax(0,1fr) auto;align-items:flex-start;gap:8px;display:grid}.station-identity{align-items:flex-start;gap:10px;min-width:0;display:flex}.station-identity>.lamp{margin-top:5px}.station-name-block{min-width:0}.station-name-row{align-items:flex-start;gap:4px;min-width:0;display:flex}.station-identity h3{overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical;min-width:0;margin:0;font-size:16px;line-height:1.15;display:-webkit-box;overflow:hidden}.station-identity small{color:var(--muted);margin-top:2px;font-size:12px;display:block}.station-status-row{flex-wrap:wrap;align-items:center;gap:4px 8px;margin-top:5px;display:flex}.station-status-row small{margin:0;line-height:1.2}.station-status-row .badge{text-align:center;white-space:normal;max-width:100%;padding:3px 8px;font-size:11px;line-height:1.15}.station-technical-name{opacity:.72}.station-name-edit,.station-name-action{color:var(--muted);background:0 0;border:0;border-radius:5px;flex:none;padding:1px 4px}.station-name-edit:hover,.station-name-action:hover{color:#f8fbff;background:#94a3b82e}.station-name-action.save{color:#34d399}.station-name-form{grid-template-columns:minmax(90px,1fr) auto auto;align-items:center;gap:3px;min-width:0;display:grid}.station-name-form input{min-width:0;padding:4px 7px;font-weight:800}.station-card-tools{align-items:flex-start;gap:5px;display:flex}.station-drag-handle{color:var(--muted);cursor:grab;letter-spacing:-4px;-webkit-user-select:none;user-select:none;border-radius:5px;flex:none;padding:4px 2px;line-height:1}.station-drag-handle:hover{color:#f8fbff;background:#94a3b829}.station-drag-handle:active{cursor:grabbing}.station-drag-handle:focus-visible{outline-offset:2px;outline:2px solid #38bdf8}.lamp{background:#94a3b8;border-radius:50%;flex:none;width:12px;height:12px;display:inline-block;box-shadow:0 0 0 4px #94a3b81f}.lamp.ok{background:#15b87a;box-shadow:0 0 0 4px #15b87a1f}.lamp.sleeping{background:#e59717;box-shadow:0 0 0 4px #e5971724}.lamp.bad{background:#dc4b45;box-shadow:0 0 0 4px #dc4b451f}.device-status-grid{grid-template-columns:repeat(3,1fr);gap:5px;margin:11px 0;display:grid}.device-status-grid>div{background:#f8fafc;border:1px solid #e1e8f0;border-radius:8px;grid-template-columns:auto 1fr;align-items:center;gap:1px 7px;min-width:0;padding:6px 7px;display:grid}.device-status-grid .lamp{width:8px;height:8px;box-shadow:none;grid-row:1/3}.device-status-grid span{color:#475569;text-overflow:ellipsis;font-size:12px;font-weight:750;overflow:hidden}.device-status-grid strong{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:600;overflow:hidden}.station-metrics{border:1px solid #e1e8f0;border-radius:8px;grid-template-columns:repeat(2,minmax(0,1fr));display:grid;overflow:hidden}.station-metrics>div{background:#fbfdff;min-width:0;padding:8px}.station-metrics>div:nth-child(odd){border-right:1px solid #e1e8f0}.station-metrics>div:nth-child(-n+2){border-bottom:1px solid #e1e8f0}.station-metrics span,.station-metrics strong{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.station-metrics span{color:var(--muted);text-transform:uppercase;margin-bottom:3px;font-size:12px}.station-metrics strong{font-size:12px}.station-meta{color:var(--muted);flex-wrap:wrap;gap:4px 9px;padding:8px 2px 2px;font-size:12px;display:flex}.station-meta span{white-space:nowrap}.station-controls{border-top:1px solid var(--line);margin-top:11px;padding-top:10px}.station-controls summary{color:#475569;cursor:pointer;font-size:12px;font-weight:800}.station-control-fields{padding-top:4px}.station-controls label{grid-template-columns:1fr 72px auto;align-items:center;margin-top:8px}.station-controls input{padding:6px 8px}.save-message{min-height:15px;color:var(--muted);margin-top:7px;display:block}.station-card-footer{border-top:1px solid var(--line);color:var(--muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-top:7px;padding-top:8px;font-size:12px;display:flex}.station-card-actions{flex-wrap:wrap;gap:7px;display:flex}.page-navigation{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:18px;display:flex}.empty{text-align:center;color:var(--muted);background:#fbfdff;border:1px dashed #b7c5d5;border-radius:10px;justify-items:center;gap:8px;padding:40px;display:grid}.empty-icon{color:#334155;background:#e9edf1;border-radius:50%;place-items:center;width:34px;height:34px;font-size:20px;display:grid}.empty.compact .empty-icon{display:none}.summary-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-bottom:14px;display:grid}.summary-card{border:1px solid var(--line);background:linear-gradient(145deg,#fff,#f8fafc);border-radius:10px;min-width:0;padding:15px 16px;position:relative;overflow:hidden}.summary-card:after{content:"";background:#cbd5e1;height:3px;position:absolute;inset:0 0 auto}.summary-card.positive:after{background:var(--success)}.summary-card.negative:after{background:var(--danger)}.summary-card span{color:var(--muted);margin-bottom:6px;font-size:12px;display:block}.summary-card strong{align-items:center;gap:8px;min-height:24px;font-size:18px;display:flex}.summary-card small{color:#64748b;margin-top:4px;font-size:12px;display:block}.chart-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:14px;display:grid}.chart-card{border:1px solid var(--line);background:#fff;border-radius:10px;min-width:0;padding:15px;box-shadow:0 4px 14px #0f172a09}.chart-card.expanded{z-index:60;margin:0;padding:20px;position:fixed;inset:18px;overflow:auto;box-shadow:0 25px 80px #0f172a4d}.chart-card.expanded .line-chart{height:calc(100vh - 210px);min-height:420px}.chart-header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:4px;display:flex}.chart-header h3{margin:0}.chart-header-right{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:9px;display:flex}.chart-legend{color:var(--muted);flex-wrap:wrap;justify-content:flex-end;gap:8px 14px;font-size:12px;display:flex}.chart-legend span,.chart-legend button{color:var(--muted);background:0 0;border:0;border-radius:5px;align-items:center;gap:5px;padding:3px 5px;font-size:12px;display:inline-flex}.chart-legend button:hover{background:#f1f5f9}.chart-legend button.hidden{opacity:.42;text-decoration:line-through}.chart-legend i{border-radius:2px;width:12px;height:3px}.chart-zoom-controls{background:#f8fafc;border:1px solid #d8e1ec;border-radius:7px;align-items:center;gap:3px;padding:3px;display:inline-flex}.chart-zoom-controls span{color:#64748b;padding:0 4px;font-size:12px;font-weight:800}.chart-zoom-controls button{color:#334155;background:#fff;border:1px solid #c8d4e0;border-radius:5px;place-items:center;min-width:25px;height:25px;padding:0 6px;font-size:13px;font-weight:850;display:grid}.chart-zoom-controls button:hover:not(:disabled){color:#111827;background:#edf0f3;border-color:#94a3b8}.chart-zoom-controls button:disabled{cursor:not-allowed;opacity:.38}.chart-zoom-controls button.reset{padding:0 8px;font-size:12px}.chart-zoom-controls button.expand{min-width:92px;font-size:12px}.chart-stats{color:var(--muted);background:#f7f8f9;border:1px solid #e1e6eb;border-radius:7px;flex-wrap:wrap;gap:6px 14px;margin:9px 0 2px;padding:8px 10px;font-size:12px;display:flex}.chart-stats strong{color:#1f2937;font-variant-numeric:tabular-nums}.chart-interaction-hint{color:#64748b;text-align:right;margin:2px 0 -4px;font-size:12px}.line-chart{touch-action:none;cursor:crosshair;width:100%;height:auto;min-height:220px;display:block}.line-chart text{fill:#475569;font:12px Inter,Segoe UI,sans-serif}.chart-grid-line{stroke:#e3eaf2;stroke-width:1px}.chart-axis{stroke:#9aabba;stroke-width:1.2px}.chart-tooltip{pointer-events:none}.chart-crosshair{stroke:#64748b;stroke-width:1px;stroke-dasharray:4 4}.chart-tooltip-box{fill:#fffffff5;stroke:#b9c6d4;stroke-width:1px;filter:drop-shadow(0 5px 8px #0f172a29)}.line-chart .chart-tooltip-title{fill:#17212f;font-size:12px;font-weight:800}.line-chart .chart-tooltip-value{fill:#334155;font-size:12px}.line-chart .chart-axis-title{fill:#334155;font-size:12px;font-weight:750}.chart-empty{min-height:220px;color:var(--muted);background:#fbfdff;border:1px dashed #cbd5e1;border-radius:8px;place-items:center;display:grid}.chart-action{color:#334155;background:#f7f8f9;border:1px solid #b9c3ce;border-radius:7px;padding:5px 9px;font-size:12px;font-weight:800}.toolbar-row{flex-wrap:wrap;align-items:center;gap:9px;margin:10px 0;display:flex}.batch-export-fields{grid-template-columns:minmax(150px,.65fr) minmax(240px,1.35fr);gap:10px;display:grid}.batch-export-fields label{margin:0}.batch-export-footer{justify-content:space-between;align-items:end;gap:12px;margin-top:12px;display:flex}.batch-export-footer span,.batch-export-footer strong{display:block}.batch-export-footer span{color:var(--muted);margin-bottom:4px;font-size:12px}.panel-card,.status-card,.form-section{border:1px solid var(--line);background:#fff;border-radius:9px;margin-bottom:14px;padding:15px}.panel-heading{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px;display:flex}.panel-heading h3,.panel-heading p{margin-bottom:0}.panel-heading .toolbar-row{margin:0}.service-control-panel .panel-heading{align-items:center;margin-bottom:0}.health-panel{border:1px solid var(--line);background:#fff;border-radius:10px;margin-bottom:14px;padding:15px}.health-panel-heading,.data-section-heading{justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:13px;display:flex}.health-panel-heading h3,.data-section-heading h3{margin-bottom:3px}.health-panel-heading p,.data-section-heading p{margin:0;font-size:12px}.health-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.health-grid>div{background:#f8fafc;border:1px solid #e1e8f0;border-radius:8px;grid-template-columns:auto 1fr;align-items:center;gap:2px 9px;min-width:0;padding:11px;display:grid}.health-grid .lamp,.health-symbol{grid-row:1/3}.health-symbol{color:#334155;background:#e5e9ed;border-radius:50%;place-items:center;width:21px;height:21px;font-size:14px;font-weight:800;display:grid}.health-grid span:not(.lamp):not(.health-symbol){color:var(--muted);font-size:12px}.health-grid strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.technical-details{margin-top:11px}.technical-details summary{color:#475569;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:12px;font-weight:800}.technical-details[open] summary{margin-bottom:11px}.technical-details dl{border:1px solid var(--line);border-radius:8px;grid-template-columns:repeat(4,minmax(120px,1fr));gap:0;margin:0;display:grid;overflow:hidden}.technical-details dt,.technical-details dd{border-bottom:1px solid var(--line);margin:0;padding:8px 10px;font-size:12px}.technical-details dt{color:var(--muted);background:#f8fafc}.technical-details dd{font-weight:650}.data-section{margin:15px 0}.data-section-heading{align-items:center;margin-bottom:9px;padding:0 2px}.status-card ul{columns:2;margin:0;padding-left:20px}.status-card li{break-inside:avoid;margin-bottom:6px}.live-grid{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:12px;margin-bottom:14px;display:grid}.live-card{border:1px solid var(--line);background:#fff;border-radius:10px;min-width:0;padding:14px;position:relative;box-shadow:0 4px 14px #0f172a09}.live-card h3{border-bottom:1px solid #e8edf3;align-items:center;gap:8px;padding-bottom:10px;display:flex}.device-state{flex-wrap:wrap;gap:7px;margin-bottom:12px;display:flex}.device-data{border:1px solid var(--line);background:#fbfdff;border-radius:8px;overflow:hidden}.device-row{border-bottom:1px solid var(--line);grid-template-columns:minmax(120px,.8fr) minmax(110px,1fr);gap:10px;padding:7px 9px;font-size:13px;display:grid}.device-row:last-child{border-bottom:0}.device-row span{color:var(--muted)}.device-row strong{overflow-wrap:anywhere;min-width:0;font-weight:650}.target-list{gap:7px;margin-top:10px;display:grid}.target-row{border:1px solid var(--line);background:#fff;border-radius:8px;grid-template-columns:minmax(100px,1fr) auto auto;align-items:center;gap:12px;padding:10px;display:grid}.target-row span,.target-row small{display:block}.target-row small{color:var(--muted);margin-top:3px}.empty.compact{min-height:auto;padding:15px}.two-column{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:14px;display:grid}.two-column>*{min-width:0}.single-column{margin-bottom:14px}.single-column>*{width:100%}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.form-grid.compact{grid-template-columns:repeat(2,minmax(220px,1fr))}.form-section>label,.form-section .form-grid label,.panel-card label{color:#475569;gap:6px;margin-top:10px;font-size:13px;font-weight:700;display:grid}.form-section textarea{min-height:150px;font:13px/1.5 SFMono-Regular,Consolas,monospace}.formula-block{border:1px solid var(--line);color:#17212f;white-space:pre-wrap;background:#fff;border-radius:8px;margin:0;padding:12px}.calculation-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.calculation-grid section{border:1px solid var(--line);border-radius:9px;min-width:0;padding:12px}.nmea-preview{margin-top:14px}.time-filter{border:1px solid var(--line);background:#f7f8f9;border-radius:10px;grid-template-columns:minmax(170px,.8fr) auto minmax(370px,1.4fr);align-items:end;gap:14px;margin-bottom:16px;padding:14px;display:grid}.time-filter-title{justify-content:space-between;align-items:center;gap:10px;display:flex}.time-filter-title strong,.time-filter-title span{display:block}.time-filter-title>div>span{color:var(--muted);margin-top:3px;font-size:12px}.result-count{color:#334155;white-space:nowrap;background:#e5e9ed;border-radius:999px;padding:5px 8px;font-size:12px;font-weight:800}.preset-buttons{flex-wrap:wrap;gap:5px;display:flex}.preset-buttons button{color:#475569;background:#fff;border:1px solid #b8c8d8;border-radius:7px;padding:7px 9px;font-size:12px;font-weight:750}.preset-buttons button.active{color:#fff;border-color:var(--primary);background:var(--primary)}.time-inputs{grid-template-columns:repeat(2,1fr);gap:8px;display:grid}.time-inputs label{color:#475569;gap:4px;font-size:12px;font-weight:750;display:grid}.time-inputs input{padding:7px 8px;font-size:13px}.time-input-field{color:#475569;gap:4px;font-size:12px;font-weight:750;display:grid}.dtp{position:relative}.dtp-field{color:#17212f;text-align:left;background:#fff;border:1px solid #cbd6e2;border-radius:8px;justify-content:space-between;align-items:center;gap:8px;width:100%;padding:7px 8px;font-size:13px;font-weight:600;display:flex}.dtp-field.open,.dtp-field:focus-visible{border-color:var(--primary)}.dtp-placeholder{color:var(--muted);font-weight:500}.dtp-icon{opacity:.7}.dtp-popup{z-index:40;border:1px solid var(--line);background:var(--dtp-bg);box-shadow:var(--shadow);border-radius:10px;grid-template-columns:auto auto;gap:12px;padding:12px;font-weight:500;display:grid;position:absolute;top:calc(100% + 6px);left:0}.time-input-field:last-child .dtp-popup{left:auto;right:0}.dtp-calendar{width:224px}.dtp-header{justify-content:space-between;align-items:center;gap:6px;margin-bottom:8px;font-size:13px;display:flex}.dtp-header button{border:1px solid var(--line);width:26px;height:26px;color:inherit;background:0 0;border-radius:7px;padding:0;line-height:1}.dtp-header button:hover{background:#94a3b838}.dtp-weekdays,.dtp-days{grid-template-columns:repeat(7,1fr);gap:2px;display:grid}.dtp-weekdays{color:var(--muted);text-align:center;margin-bottom:4px;font-size:11px;font-weight:700}.dtp-days button{height:28px;color:inherit;font-variant-numeric:tabular-nums;background:0 0;border:1px solid #0000;border-radius:7px;padding:0;font-size:12px}.dtp-days button:hover{background:#94a3b838}.dtp-days button.today{border-color:var(--line)}.dtp-days button.selected,.dtp-time-column button.selected{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:750}.dtp-time{align-content:start;gap:6px;display:grid}.dtp-time-title{color:var(--muted);text-transform:uppercase;font-size:11px;font-weight:700}.dtp-time-columns{gap:6px;display:flex}.dtp-time-column{scrollbar-width:thin;gap:2px;max-height:178px;padding-right:4px;display:grid;overflow-y:auto}.dtp-time-column button{color:inherit;font-variant-numeric:tabular-nums;background:0 0;border:1px solid #0000;border-radius:7px;padding:4px 10px;font-size:12px}.dtp-time-column button:hover{background:#94a3b838}.dtp-time-exact{padding:5px 7px;font-size:12px}.dtp-footer{grid-column:1/-1;justify-content:flex-end;gap:8px;display:flex}.dtp-action{border:1px solid var(--line);color:inherit;background:0 0;border-radius:8px;padding:6px 12px;font-size:12px;font-weight:700}.dtp-action:hover{background:#94a3b838}.dtp-action.primary{background:var(--primary);border-color:var(--primary);color:#fff}.table-card{border:1px solid var(--line);background:#fff;border-radius:9px;max-height:640px;position:relative;overflow:auto}table{border-collapse:separate;border-spacing:0;font-variant-numeric:tabular-nums;width:100%;min-width:max-content;font-size:14px}th,td{text-align:left;border-bottom:1px solid var(--line);white-space:nowrap;padding:11px 13px}th{z-index:1;color:#475569;letter-spacing:.02em;text-transform:uppercase;background:#eceff2;font-size:12px;position:sticky;top:0;box-shadow:inset 0 -1px #d8e1ec}tbody tr:last-child td{border-bottom:0}th:first-child,td:first-child{position:sticky;left:0}th:first-child{z-index:3;background:#e5e9ed}tbody td:first-child{z-index:1;background:#fff;font-weight:650}.download-links{gap:10px;display:flex}.log-grid{grid-template-columns:repeat(2,1fr);gap:12px;display:grid}.log-panel{border:1px solid var(--line);background:#fff;border-radius:9px;min-width:0;overflow:hidden}.log-panel-header{background:#f1f5f9;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;display:flex}.log-panel-header h3{margin:0}.log-panel-header span{color:var(--muted);font-size:12px;font-weight:750}.log-panel pre,.code-block{color:#17212f;border:1px solid var(--line);background:#fff;margin:0;padding:13px;font:13px/1.5 SFMono-Regular,Consolas,monospace;overflow:auto}.log-panel pre{white-space:pre-wrap;height:310px}.code-block{white-space:pre-wrap;border-radius:8px;max-height:520px}.config-editor{resize:vertical;min-height:580px;font:13px/1.5 SFMono-Regular,Consolas,monospace}.json-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.json-grid section{border:1px solid var(--line);border-radius:9px;min-width:0;padding:13px}.json-grid .wide{grid-column:1/-1}.chart-legend small{color:#64748b;font-size:12px}.modal-backdrop{z-index:20;background:#0f172a8c;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal{background:#fff;border-radius:12px;width:min(520px,100%);padding:24px;position:relative;box-shadow:0 25px 70px #0f172a40}.station-profile-modal{width:min(760px,100%);max-height:calc(100vh - 40px);overflow:auto}.modal.station-profile-modal{background:var(--dtp-bg)}.station-profile-modal h4{margin:18px 0 2px;font-size:14px}.station-profile-modal .code-block{-webkit-user-select:all;user-select:all;word-break:break-all;margin:12px 0}.modal-close{background:0 0;border:0;font-size:25px;position:absolute;top:10px;right:12px}@media (width<=1100px){.station-grid{grid-template-columns:repeat(2,minmax(280px,1fr))}.overview-strip,.summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.summary-grid .summary-card:last-child{grid-column:1/-1}.health-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.technical-details dl{grid-template-columns:repeat(2,minmax(120px,1fr))}.time-filter{grid-template-columns:1fr;align-items:stretch}}@media (width<=900px){.dashboard-layout{grid-template-columns:1fr}.mobile-menu-button,.sidebar-close{place-items:center;display:inline-grid}.sidebar{z-index:40;border-radius:0 12px 12px 0;width:min(310px,88vw);max-height:none;transition:transform .2s;position:fixed;inset:0 auto 0 0;transform:translate(-105%)}.sidebar.open{transform:translate(0)}.sidebar-close{border-radius:7px;width:34px;height:34px;font-size:25px}.sidebar-backdrop{z-index:35;background:#0f172a7a;border:0;width:100%;height:100%;display:block;position:fixed;inset:0}}@media (width<=720px){.app-shell{width:min(100% - 16px,1500px);margin-top:8px}.topbar,.section-heading{flex-direction:column;align-items:stretch}.topbar-title{flex-wrap:wrap;align-items:flex-start}.topbar-title>div:last-child{flex-basis:100%}.sokol-brand img{width:45px;height:34px}.station-grid,.overview-strip,.summary-grid,.log-grid,.json-grid,.live-grid,.two-column,.form-grid,.form-grid.compact,.calculation-grid{grid-template-columns:1fr}.summary-grid .summary-card:last-child{grid-column:auto}.health-grid,.technical-details dl,.chart-grid,.time-inputs,.dtp-popup{grid-template-columns:1fr}.dtp-calendar{width:100%}.dtp-time-column{max-height:120px}.json-grid .wide{grid-column:auto}.content{padding:13px}.station-controls label{grid-template-columns:1fr}.health-panel-heading,.data-section-heading,.panel-heading{flex-direction:column;align-items:stretch}.batch-export-fields{grid-template-columns:1fr}.batch-export-footer{flex-direction:column;align-items:stretch}.batch-export-footer .button{width:100%}.table-card{max-height:520px}}:root{color:#edf4ff;--panel:#050a12b8;--line:#94a3b845;--muted:#aebdd0;--primary:#27364b;--dtp-bg:#0d1726;--shadow:0 14px 40px #00000047;background:#050a12}.time-input-field{color:#aebdd0}.dtp-field{color:#edf4ff;background:#03080fb3;border-color:#adbed385}.dtp-days button.selected,.dtp-time-column button.selected,.dtp-action.primary{background:#4d6078f2;border-color:#d2deec94}body{background:#050a12}#root{isolation:isolate;min-height:100vh;position:relative}#root:before{content:"";z-index:-1;pointer-events:none;background:linear-gradient(#03080f47,#03080f61),url(/assets/sokol-background-wide-CwoErXl4.png) 50%/cover no-repeat,#050a12;position:fixed;inset:0}.topbar,.sidebar,.content,.auth-card{color:#edf4ff;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#050a12b8;border-color:#94a3b84d}.content{-webkit-backdrop-filter:none;backdrop-filter:none}.chart-card.expanded{z-index:100;color:#edf4ff;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#03080ff7;border-color:#94a3b86b;width:auto;height:auto;box-shadow:0 28px 100px #000000b8}.overview-stat,.station-card,.summary-card,.panel-card,.chart-card,.health-panel,.live-card,.data-section,.form-section,.technical-details,.device-data,.time-filter,.table-card,.log-panel,.json-grid section,.modal,.station-metrics>div,.target-row,.empty,.sidebar-service{color:#edf4ff;background:#080f1a9e;border-color:#94a3b840}h1,h2,h3,strong,.station-identity,.station-card-header,.panel-heading,.data-section-heading{color:#f8fbff}.muted,.eyebrow,.overview-stat span,.summary-card span,.station-meta,.station-metrics span,.technical-details dt,.device-row span,.time-filter-title span{color:#aebdd0}input,select,textarea,.preset-buttons button{color:#edf4ff;background:#03080fb3;border-color:#94a3b85c}input:disabled,select:disabled,textarea:disabled{color:#91a2b7;background:#1e293bb8}.button.secondary,.result-count{color:#e8f0fa;background:#1e293bb8;border-color:#94a3b859}.sidebar-nav button:hover{color:#fff;background:#33415599}.sidebar-nav button.active{color:#fff;background:#475569b3;border-color:#cbd5e173}.mobile-menu-button,.sidebar-close,.modal-close{color:#edf4ff}.log-panel-header,.technical-details dt{background:#1e293bad}.log-panel pre,.code-block{color:#dce8f6;background:#01050ac7;border-color:#94a3b83d}th,th:first-child{color:#c7d4e4;background:#192332f0}tbody tr:nth-child(2n){background:#1e293b57}tbody tr:hover{background:#33415580}tbody td:first-child{background:#080f1af0}tbody tr:nth-child(2n) td:first-child{background:#17212ff0}tbody tr:hover td:first-child{background:#2a3748f5}.notice{color:#d8e5f3;background:#3341558c;border-color:#94a3b859}.warning-banner{color:#ffe8a3;background:#5c3908ad;border-color:#f5be4680}.error-banner{color:#fecaca;background:#641414ad;border-color:#f8717173}.chart-empty{color:#91a4ba;background:#03080f7a;border-color:#94a3b847}.chart-zoom-controls{background:#03080f9e;border-color:#94a3b84d}.chart-zoom-controls span{color:#aebdd0}.chart-zoom-controls button,.chart-action{color:#dce7f5;background:#1e293bb8;border-color:#94a3b857}.chart-zoom-controls button:hover:not(:disabled),.chart-action:hover{color:#fff;background:#334155db;border-color:#cbd5e185}.chart-stats{color:#91a4ba;background:#03080f8c;border-color:#94a3b842}.chart-stats strong{color:#e7eff9}.chart-interaction-hint{color:#8294aa}.line-chart text{fill:#91a4ba}.chart-grid-line{stroke:#94a3b833}.chart-axis{stroke:#cbd5e194}.chart-crosshair{stroke:#94a3b8}.chart-tooltip-box{fill:#050a12f5;stroke:#94a3b88c}.line-chart .chart-tooltip-title,.line-chart .chart-tooltip-value,.line-chart .chart-axis-title{fill:#dce7f5}.device-status-grid>div,.health-grid>div{color:#edf4ff;background:#03080f8c;border-color:#94a3b845}.device-status-grid span,.device-status-grid strong,.health-grid span:not(.lamp):not(.health-symbol){color:#b6c5d8}.health-symbol{color:#dce7f5;background:#475569ad}.formula-block{color:#dce7f5;background:#01050ab3;border-color:#94a3b847}.auth-page{align-items:start;padding-top:clamp(46px,9vh,90px)}.auth-shell{width:min(480px,100%)}.auth-identity{color:#f8fafc;justify-content:center;align-items:center;gap:12px;display:flex}.auth-identity img{object-fit:contain;width:56px;height:42px}.auth-identity span{letter-spacing:.025em;font-size:clamp(28px,4vw,38px);font-weight:850}.auth-intro{color:#aeb8c6;text-align:center;margin:12px 0 28px;font-size:14px}.auth-tabs{border-bottom:2px solid #94a3b838;gap:22px;margin-bottom:16px;display:flex}.auth-tabs button{color:#c3ccd8;background:0 0;border:0;padding:0 0 10px;font-weight:650;position:relative}.auth-tabs button.active{color:#ef4444}.auth-tabs button.active:after{content:"";background:#ef4444;border-radius:3px;height:3px;position:absolute;bottom:-2px;left:0;right:0}.auth-shell .auth-card{-webkit-backdrop-filter:none;backdrop-filter:none;background:#090d16eb;border-color:#94a3b847;border-radius:14px;width:100%;padding:22px 24px 18px}.auth-shell .auth-card label{color:#e5e7eb;margin-top:0;margin-bottom:16px;font-size:14px;font-weight:550}.auth-shell .auth-card input:not([type=checkbox]){background:#2b2e39f0;border:1px solid #0000;border-radius:11px;min-height:44px;margin-top:5px}.auth-shell .auth-card input:not([type=checkbox]):focus{border-color:#ef4444;outline:2px solid #ef444440}.auth-shell .check-row{color:#aeb8c6;margin-top:-2px;margin-bottom:20px}.auth-submit{border-radius:11px;width:100%;min-height:44px;background:#ef4444!important}.auth-submit:hover:not(:disabled){background:#dc2626!important}.auth-shell .form-message{text-align:center;margin-bottom:0}.auth-shell .form-message.success{color:#34d399}@media (width<=640px){.auth-page{padding:48px 18px 24px}.auth-intro{margin-bottom:30px}.auth-shell .auth-card{padding:24px 20px 20px}}:root{--panel:#0a111ce6;--line:#adbed37a;--muted:#bdcada}.topbar,.sidebar,.content,.auth-card{background:#09101be6;border-color:#adbed380;box-shadow:0 16px 44px #00000052,inset 0 1px #ffffff09}.overview-stat,.station-card,.summary-card,.panel-card,.chart-card,.health-panel,.live-card,.data-section,.form-section,.technical-details,.device-data,.time-filter,.table-card,.log-panel,.json-grid section,.modal,.station-metrics>div,.target-row,.empty,.sidebar-service{background:#0c1522d6;border-color:#a2b5cc75;box-shadow:inset 0 1px #ffffff06}.station-card{outline-offset:-1px;outline:1px solid #b9cade3d}.device-status-grid>div,.health-grid>div,.chart-stats,.chart-empty,.chart-zoom-controls,.formula-block{background:#080f19e0;border-color:#a2b5cc70}.muted,.eyebrow,.overview-stat span,.summary-card span,.summary-card small,.station-meta,.station-identity small,.station-controls summary,.station-metrics span,.technical-details dt,.device-row span,.time-filter-title span,.chart-interaction-hint,.sidebar-service small,.sidebar-footer span{color:#bdcada}.sidebar-footer strong,.device-status-grid strong,.health-grid strong,.chart-stats strong{color:#f2f7fd}.sidebar-footer{border-top-color:#adbed36b}.sidebar-nav button{color:#cad6e5}.nav-group-label{color:#aebdd0}.sidebar-nav button.active{color:#fff;background:#4d6078d1;border-color:#d2deec94;box-shadow:inset 0 0 0 1px #ffffff0a}input,select,textarea{border-color:#adbed385}
