:root{--bg:#08111f;--panel:#101d2d;--panel2:#162638;--line:#26394e;--text:#edf4fb;--muted:#9fb0c3;--blue:#57a0ff;--green:#39d27d;--amber:#ffbf47;--red:#ff5a64}*{box-sizing:border-box}body{margin:0;background:linear-gradient(180deg,#07101d,#0a1422);color:var(--text);font:14px/1.45 system-ui,Segoe UI,Arial}header{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:18px 24px;border-bottom:1px solid var(--line);background:#081321f2;position:sticky;top:0;z-index:1000}h1{margin:0;font-size:25px}header p{margin:3px 0 0;color:var(--muted)}button,select,input{font:inherit}button{background:#098844;border:0;color:white;border-radius:8px;padding:10px 15px;font-weight:700;cursor:pointer}button:hover{filter:brightness(1.12)}button:disabled{opacity:.6;cursor:wait}select,input{background:#0a1625;color:var(--text);border:1px solid var(--line);border-radius:7px;padding:8px}.header-actions{display:flex;gap:10px;align-items:center;color:var(--muted);flex-wrap:wrap}.switch-label{display:flex;align-items:center;gap:6px}.switch-label input{accent-color:#20bd69}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;padding:10px 12px;background:#0c1928;border:1px solid var(--line);border-radius:9px}.toolbar input{min-width:300px}.status{color:var(--muted);display:flex;align-items:center;gap:8px}.live-dot{width:9px;height:9px;border-radius:50%;background:var(--green);box-shadow:0 0 10px var(--green)}main{padding:16px;max-width:1800px;margin:auto}.kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:12px}.kpis article,.panel{background:linear-gradient(145deg,var(--panel),#0d1927);border:1px solid var(--line);border-radius:10px;box-shadow:0 10px 30px #0003}.kpis article{padding:16px;cursor:pointer;transition:.2s}.kpis article:hover{transform:translateY(-2px);border-color:var(--blue)}.kpis span{color:var(--muted);display:block}.kpis strong{font-size:26px;color:var(--blue)}.kpis small{color:#71859b}.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.panel{padding:14px;min-width:0;scroll-margin-top:100px}.span-2{grid-column:span 2}.panel-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:10px}.panel h2{margin:0;font-size:17px}.panel small{color:var(--muted)}.panel-actions,.filter-row,.table-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.icon-btn{background:#162638;padding:6px 10px;border:1px solid var(--line)}.panel.collapsed .panel-body{display:none}.panel.collapsed{align-self:start}.panel-body{animation:fade .2s}@keyframes fade{from{opacity:.5}to{opacity:1}}#map{height:420px;border-radius:8px;background:#07111e}#airMap{height:330px;border-radius:8px;background:#07111e}.map-fullscreen{position:fixed!important;inset:12px!important;width:auto!important;height:auto!important;z-index:3000;border:3px solid var(--blue);border-radius:12px}.no-scroll{overflow:hidden}.selection-card{display:flex;gap:18px;align-items:center;flex-wrap:wrap;margin-top:10px;padding:10px 12px;border:1px solid var(--line);background:#0b1725;border-radius:8px}.selection-card strong{font-size:16px;color:var(--blue)}.table-tools{justify-content:space-between;margin-top:10px}.table-wrap{max-height:285px;overflow:auto;margin-top:8px}table{width:100%;border-collapse:collapse}th,td{padding:8px;border-bottom:1px solid var(--line);text-align:right}th:first-child,td:first-child{text-align:left}th{cursor:pointer;position:sticky;top:0;background:#101d2d;z-index:1}tbody tr{cursor:pointer}tbody tr:hover,tbody tr.selected{background:#1b3550}.gas-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.gas-card{background:var(--panel2);padding:13px;border-radius:8px;text-align:center;border:1px solid transparent}.gas-card.active{border-color:var(--blue);box-shadow:0 0 0 1px #57a0ff44}.gas-card b{display:block;color:var(--blue);font-size:22px}.stack{display:grid;gap:8px;max-height:520px;overflow:auto}.item{padding:10px;background:var(--panel2);border-radius:8px;border-left:4px solid var(--blue)}details.item summary{cursor:pointer;list-style:none}details.item summary::-webkit-details-marker{display:none}.item strong{display:block}.item small{color:var(--muted)}.item p{color:#c8d5e3;margin:10px 0 0}.badge{float:right;padding:2px 7px;border-radius:5px;font-weight:800;background:var(--green);color:#03140b}.badge.warn{background:var(--amber);color:#251600}.badge.danger{background:var(--red);color:white}.raw{font:11px/1.4 ui-monospace,monospace;color:#b8c6d5;margin-top:8px;white-space:normal}.summary-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}.summary-row span{background:var(--panel2);padding:8px 12px;border-radius:7px}canvas{margin-top:15px;max-height:280px}a{color:#7db7ff}.global-hidden{display:none!important}footer{text-align:center;color:var(--muted);padding:18px}.empty{color:var(--muted);padding:14px}.leaflet-container{background:#091525}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#122235;color:white}@media(max-width:1200px){.grid{grid-template-columns:repeat(2,1fr)}.kpis{grid-template-columns:repeat(3,1fr)}}@media(max-width:760px){header{align-items:flex-start;flex-direction:column}.grid,.kpis{grid-template-columns:1fr}.span-2{grid-column:span 1}.toolbar{align-items:stretch;flex-direction:column}.toolbar input{min-width:0;width:100%}.header-actions{width:100%}#map{height:360px}}

.snapshot-time{display:grid;grid-template-columns:auto auto;column-gap:10px;align-items:baseline;margin-top:5px;padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:#0a1625;cursor:pointer;transition:.2s;max-width:max-content}.snapshot-time:hover,.snapshot-time:focus{border-color:var(--blue);outline:none;box-shadow:0 0 0 2px #57a0ff22}.snapshot-label{grid-column:1/-1;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.06em}.snapshot-time strong{font-size:18px;color:var(--green)}.snapshot-time #snapshotDate{color:#c5d3e2;font-size:12px}.snapshot-age{grid-column:1/-1;color:var(--amber)!important;font-weight:700}.snapshot-time.compact{display:flex;gap:8px;align-items:center}.snapshot-time.compact .snapshot-label,.snapshot-time.compact #snapshotDate{display:none}
