:root{--bg:#04070d;--cy:#0ff;--red:#ff2a4d;--amb:#ffb020;--grn:#3dff9a;--tx:#cfeeee;--mut:#7ccaca;--line:#0ff3;--panel:#07121b}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:56px}
body{margin:0;background:radial-gradient(ellipse at top,#0a1a24,var(--bg) 60%) fixed;color:var(--tx);font:16px/1.6 "Consolas","SF Mono","Menlo",monospace;min-height:100vh}
a{color:var(--cy)}
h2{color:var(--cy);letter-spacing:.2em;font-size:15px;margin:0 0 16px}
h3{color:var(--amb);letter-spacing:.15em;font-size:12px;margin:0 0 12px}
.sub-h{margin-top:32px}
.small{font-size:12px;color:var(--mut)}
.scan{position:fixed;inset:0;pointer-events:none;background:repeating-linear-gradient(0deg,#0000 0 2px,#0ff1 3px);z-index:50;mix-blend-mode:overlay}

.ticker{background:#200;border-bottom:1px solid var(--red);overflow:hidden;white-space:nowrap;color:var(--red);font-size:13px;padding:6px 0}
.ticker-track{display:inline-block;padding-left:100%;animation:tick 60s linear infinite}
@keyframes tick{to{transform:translateX(-100%)}}

.nav{position:sticky;top:0;z-index:40;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:10px 20px;background:#04070dee;backdrop-filter:blur(6px);border-bottom:1px solid var(--line)}
.brand{color:var(--tx);text-decoration:none;letter-spacing:.2em;font-weight:700}
.brand b{color:var(--red)}
.links{display:flex;gap:16px;overflow-x:auto;white-space:nowrap}
.links a{text-decoration:none;font-size:12px;letter-spacing:.15em;text-transform:uppercase;color:var(--mut)}
.links a:hover{color:var(--cy)}

.hero{text-align:center;padding:64px 16px 32px}
.tag{color:var(--red);letter-spacing:.3em;font-size:12px}
.blink{animation:bl 1.2s steps(2) infinite}
@keyframes bl{50%{opacity:.2}}
h1{font-size:clamp(44px,12vw,120px);margin:12px 0;letter-spacing:.08em;color:var(--cy);text-shadow:0 0 20px var(--cy),0 0 60px #0ff6;line-height:1}
.glitch{position:relative}
.glitch::before,.glitch::after{content:attr(data-text);position:absolute;inset:0;overflow:hidden}
.glitch::before{color:var(--red);text-shadow:none;animation:g1 3s infinite;clip-path:inset(0 0 60% 0)}
.glitch::after{color:#08f;text-shadow:none;animation:g2 2.5s infinite;clip-path:inset(60% 0 0 0)}
@keyframes g1{0%,90%,100%{transform:none}92%{transform:translate(-4px,1px)}96%{transform:translate(4px,-1px)}}
@keyframes g2{0%,85%,100%{transform:none}88%{transform:translate(4px)}94%{transform:translate(-3px)}}
.sub{color:var(--red);letter-spacing:.2em;text-transform:uppercase}
.hero-meta{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 28px;color:var(--mut);font-size:12px;letter-spacing:.1em}
.hero-meta b{color:var(--tx)}

main{max-width:1060px;margin:auto;padding:0 16px 48px}
.block{margin-top:56px}
.panel-box{border:1px solid var(--line);background:var(--panel);padding:20px;position:relative}
.panel-box::before{content:"";position:absolute;top:-1px;left:-1px;width:16px;height:16px;border-top:2px solid var(--cy);border-left:2px solid var(--cy)}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}
.card{border:1px solid var(--cy);background:#0ff08;padding:24px 16px;text-align:center;box-shadow:0 0 24px #0ff2 inset}
.card.red{border-color:var(--red);box-shadow:0 0 24px #f236 inset}
.card.red .num{color:var(--red);text-shadow:0 0 16px var(--red)}
.card.amber{border-color:var(--amb)}
.card.amber .num{color:var(--amb);text-shadow:0 0 16px var(--amb)}
.num{font-size:64px;font-weight:700;color:var(--cy);text-shadow:0 0 16px var(--cy);line-height:1.1}
.lbl{text-transform:uppercase;letter-spacing:.2em;font-size:12px;color:var(--mut)}
.conf{margin-top:8px;font-size:10px;letter-spacing:.2em;color:var(--mut);opacity:.7}
.threat{margin-top:16px}
.meter{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin:10px 0}
.meter i{height:14px;background:#0ff1;border:1px solid var(--line)}
.meter i.on{background:var(--c);border-color:var(--c);box-shadow:0 0 12px var(--c)}
.threat-label{font-size:18px;letter-spacing:.1em}
.threat-label b{color:var(--amb)}

.map-box{position:relative;border:1px solid var(--line)}
#leaflet{height:460px;background:#000}
.map-ctl{position:absolute;top:10px;right:10px;z-index:500;display:flex;gap:6px}
.map-ctl button,.filters button{background:#04070dcc;color:var(--cy);border:1px solid var(--cy);font:inherit;font-size:11px;letter-spacing:.15em;padding:6px 10px;cursor:pointer}
.map-ctl button:hover,.filters button:hover,.filters button.on{background:var(--cy);color:#000}
.leaflet-container{font-family:inherit}
.dark-tiles{filter:invert(1) hue-rotate(180deg) brightness(.75) contrast(1.1) saturate(.4)}
.leaflet-control-attribution{background:#04070dcc!important;color:var(--mut)!important}
.leaflet-control-attribution a{color:var(--cy)!important}
.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#07121b;color:var(--tx);border:1px solid var(--red);border-radius:0}
.pin{position:relative;width:16px;height:16px}
.pin::before,.pin::after,.pin i{content:"";position:absolute;inset:0;border-radius:50%}
.pin i{background:var(--red);box-shadow:0 0 14px var(--red)}
.pin::before,.pin::after{border:2px solid var(--red);animation:ping 2.2s ease-out infinite}
.pin::after{animation-delay:1.1s}
@keyframes ping{from{transform:scale(1);opacity:1}to{transform:scale(5);opacity:0}}

#chart{width:100%;height:auto}
#chart text{fill:var(--mut);font-size:11px;font-family:inherit}

.timeline{list-style:none;padding:0;margin:0;border-left:2px solid var(--red)}
.timeline li{margin:0 0 20px;padding-left:22px;position:relative}
.timeline li::before{content:"";position:absolute;left:-7px;top:6px;width:12px;height:12px;background:var(--red);border-radius:50%;box-shadow:0 0 10px var(--red)}
.timeline time{color:var(--red);font-weight:700;margin-right:10px}
.timeline .t{font-size:10px;letter-spacing:.2em;border:1px solid var(--red);color:var(--red);padding:1px 6px}

.three,.two{display:grid;gap:16px}
.three{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
.two{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}
.ok h3{color:var(--grn)}.bad h3{color:var(--red)}
ul{padding-left:18px;margin:0}
li{margin-bottom:8px}

.filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.news{list-style:none;padding:0;margin:0}
.news li{display:grid;grid-template-columns:130px 1fr;gap:16px;padding:12px 0;border-bottom:1px solid var(--line)}
.news .src{color:var(--amb);font-size:12px;letter-spacing:.1em}
.news time{display:block;color:var(--mut);font-size:11px}
.news a{text-decoration:none;color:var(--tx)}
.news a:hover{color:var(--cy)}
.live{font-size:11px;color:var(--grn);letter-spacing:.1em;margin-left:8px}
.srcs{columns:2 300px}

.spec{margin:0;display:grid;grid-template-columns:auto 1fr;gap:6px 18px}
.spec dt{color:var(--mut);font-size:12px;text-transform:uppercase;letter-spacing:.1em}
.spec dd{margin:0}
.table-wrap{overflow-x:auto}
.tbl{width:100%;border-collapse:collapse;font-size:14px}
.tbl th{color:var(--mut);text-align:left;font-size:11px;letter-spacing:.15em;text-transform:uppercase}
.tbl th,.tbl td{padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top}

details{border:1px solid var(--line);background:var(--panel);margin-bottom:8px}
summary{cursor:pointer;padding:14px 18px;color:var(--cy);list-style:none}
summary::before{content:"+ ";color:var(--red)}
details[open] summary::before{content:"- "}
details p{margin:0;padding:0 18px 16px}

footer{border-top:1px solid var(--line);padding:32px 16px;text-align:center;color:var(--mut);font-size:12px;max-width:820px;margin:auto}

@media (max-width:640px){.news li{grid-template-columns:1fr;gap:4px}.num{font-size:52px}#leaflet{height:340px}}
@media (prefers-reduced-motion:reduce){*{animation:none!important}html{scroll-behavior:auto}}

.article{max-width:760px;padding-top:40px}
.art-h1{color:var(--cy);font-size:clamp(28px,6vw,44px);line-height:1.15;text-shadow:0 0 18px #0ff6;letter-spacing:.04em}
.article h2{margin-top:32px}
