:root{--tlo:#0e1116;--karta:#161b22;--karta2:#1c232d;--ramka:#2a313c;--tekst:#e6edf3;--szary:#8b949e;
--ok:#3fb950;--uwaga:#d29922;--zle:#f85149;--trwa:#58a6ff;--fiolet:#bc8cff;--r:10px}
*{box-sizing:border-box}
body{margin:0;background:var(--tlo);color:var(--tekst);font:14px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
.ukryte{display:none!important}.szary{color:var(--szary)}
button{background:var(--karta2);color:var(--tekst);border:1px solid var(--ramka);border-radius:8px;padding:7px 12px;cursor:pointer;font:inherit}
button:hover{border-color:var(--trwa)}button.maly{padding:4px 9px;font-size:12px}
input{background:var(--tlo);color:var(--tekst);border:1px solid var(--ramka);border-radius:8px;padding:9px;font-size:22px;letter-spacing:6px;width:9em;text-align:center}
header{display:flex;gap:16px;align-items:center;padding:10px 18px;border-bottom:1px solid var(--ramka);position:sticky;top:0;background:var(--tlo);z-index:5;flex-wrap:wrap}
.logo{font-weight:700;font-size:16px}.logo .szary{font-weight:400;font-size:12px;margin-left:8px}
nav{display:flex;gap:6px;flex-wrap:wrap;flex:1}nav button.aktywna{background:#1f6feb33;border-color:var(--trwa)}
main{padding:16px 18px;max-width:1500px}
.pasek{display:flex;gap:10px;padding:8px 18px;flex-wrap:wrap;border-bottom:1px solid var(--ramka);background:#0b0e13}
.chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--ramka);border-radius:99px;padding:3px 10px;font-size:12px;background:var(--karta)}
.chip.trwa{border-color:var(--trwa)}.chip.zle{border-color:var(--zle)}.chip.uwaga{border-color:var(--uwaga)}
.kropka{width:9px;height:9px;border-radius:50%;display:inline-block;background:var(--szary);flex:none}
.kropka.ok{background:var(--ok)}.kropka.uwaga,.kropka.alarm{background:var(--uwaga)}.kropka.blad,.kropka.awaria{background:var(--zle)}
.kropka.trwa{background:var(--trwa);animation:puls 1.2s infinite}
.kropka.wstrzymany,.kropka.sesyjny,.kropka.na\ żądanie,.kropka.czuwa{background:#6e7681}
@keyframes puls{0%{box-shadow:0 0 0 0 #58a6ffaa}70%{box-shadow:0 0 0 8px #58a6ff00}100%{box-shadow:0 0 0 0 #58a6ff00}}
.siatka{display:grid;grid-template-columns:repeat(auto-fill,minmax(420px,1fr));gap:14px}
.karta{background:var(--karta);border:1px solid var(--ramka);border-radius:var(--r);padding:14px 16px}
.karta h2{margin:0 0 2px;font-size:17px;display:flex;align-items:center;gap:8px}
.karta h3{margin:14px 0 6px;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--szary)}
.karta.klik{cursor:pointer}.karta.klik:hover{border-color:#3d4654}
.karta.pracuje{border-color:var(--trwa);box-shadow:0 0 0 1px #58a6ff55,0 0 18px #1f6feb33}
.wiersz{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.znacznik{font-size:11px;border-radius:6px;padding:1px 7px;background:var(--karta2);border:1px solid var(--ramka);white-space:nowrap}
.znacznik.ok{color:var(--ok);border-color:#238636}.znacznik.uwaga{color:var(--uwaga);border-color:#9e6a03}.znacznik.zle{color:var(--zle);border-color:#da3633}
.znacznik.trwa{color:var(--trwa);border-color:#1f6feb}.znacznik.fiolet{color:var(--fiolet);border-color:#8957e5}
.liczby{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:8px}
.liczba{background:var(--karta2);border-radius:8px;padding:6px 8px}.liczba b{font-size:18px;display:block}.liczba span{font-size:11px;color:var(--szary)}
.postep{height:8px;background:var(--karta2);border-radius:99px;overflow:hidden;display:flex}
.postep i{display:block;height:100%}
.lista{margin:0;padding:0;list-style:none}.lista li{padding:5px 0;border-top:1px solid #21262d;font-size:13px}
.lista li:first-child{border-top:0}
.agenci-mini{display:flex;gap:6px;flex-wrap:wrap}
.kampania{background:linear-gradient(90deg,#1f6feb22,transparent);border:1px solid #1f6feb55;border-radius:8px;padding:8px 10px;margin-top:6px}
.kampania.brak{background:none;border-style:dashed}
table{border-collapse:collapse;width:100%}th,td{text-align:left;padding:6px 8px;border-bottom:1px solid #21262d;font-size:13px;vertical-align:top}
th{color:var(--szary);font-weight:500;font-size:12px}td.num{text-align:right;font-variant-numeric:tabular-nums}
.pasek-proc{height:10px;background:var(--karta2);border-radius:99px;overflow:hidden;min-width:120px}
.pasek-proc i{display:block;height:100%;background:var(--ok)}
.pasek-proc i.uwaga{background:var(--uwaga)}.pasek-proc i.zle{background:var(--zle)}
.os{position:relative;margin-top:10px}
.os-wiersz{display:grid;grid-template-columns:220px 1fr;align-items:center;min-height:30px;border-bottom:1px solid #21262d}
.os-tor{position:relative;height:30px}
.os-zd{position:absolute;top:7px;width:12px;height:16px;border-radius:3px;transform:translateX(-50%)}
.os-zd.plan{background:transparent;border:2px dashed var(--fiolet)}
.os-zd.ok{background:var(--ok)}.os-zd.blad,.os-zd.alarm{background:var(--zle)}.os-zd.trwa{background:var(--trwa);animation:puls 1.2s infinite}
.os-teraz{position:absolute;top:0;bottom:0;width:2px;background:var(--trwa);z-index:2}
.os-skala{position:relative;height:20px;font-size:11px;color:var(--szary)}
.os-skala span{position:absolute;transform:translateX(-50%)}
svg text{fill:var(--tekst);font-size:12px}
.mapa-wezel-proj rect{fill:var(--karta2);stroke:var(--ramka)}
.mapa-krawedz{stroke:#30363d;stroke-width:1.5;fill:none}
.mapa-krawedz.aktywna{stroke:var(--trwa);stroke-width:2.5;stroke-dasharray:6 5;animation:plyn 0.8s linear infinite}
@keyframes plyn{to{stroke-dashoffset:-11}}
.szuflada{position:fixed;right:0;top:0;bottom:0;width:min(640px,100%);background:var(--karta);border-left:1px solid var(--ramka);z-index:20;overflow:auto;padding:18px}
.szuflada .zamknij{position:absolute;right:14px;top:12px}
.login{max-width:380px;margin:14vh auto;text-align:center}.login button{margin-top:8px}
.login form{display:flex;gap:8px;justify-content:center;margin-top:12px}
.dzien-wykres{display:flex;align-items:flex-end;gap:2px;height:60px}
.dzien-wykres i{flex:1;background:#1f6feb;min-height:1px;border-radius:2px 2px 0 0}
.blad-box{border:1px solid var(--zle);color:#ffa198;border-radius:8px;padding:8px;margin-bottom:10px;font-size:12px;white-space:pre-wrap}
@media(max-width:700px){.siatka{grid-template-columns:1fr}.os-wiersz{grid-template-columns:120px 1fr}.liczby{grid-template-columns:repeat(2,1fr)}}
