/* ============================================================
   AETHERWATCH — design tokens
   void #05070c · panel #0b101a · ink #c7d3e0 · dim #66788c
   phosphor #f5a83c (amber CRT) · spectral #48d6c8 (teal data)
   alert #ff5f56
   display: Chakra Petch · body: Space Grotesk · data: IBM Plex Mono
============================================================ */
:root{
  --void:#05070c;
  --panel:#0b101a;
  --panel-2:#0e1522;
  --line:rgba(140,170,210,.10);
  --line-soft:rgba(140,170,210,.05);
  --ink:#c7d3e0;
  --dim:#66788c;
  --phosphor:#f5a83c;
  --phosphor-glow:rgba(245,168,60,.35);
  --spectral:#48d6c8;
  --spectral-glow:rgba(72,214,200,.30);
  --alert:#ff5f56;
  --r:6px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  background:var(--void);
  color:var(--ink);
  font-family:'Space Grotesk',system-ui,sans-serif;
  font-size:15.5px;line-height:1.55;
  min-height:100vh;
  overflow-x:hidden;
}
.mono{font-family:'IBM Plex Mono',monospace}
a{color:var(--spectral)}

/* ---------- atmosphere layers ---------- */
#starfield{position:fixed;inset:0;z-index:-3;display:block}
.grain{
  position:fixed;inset:-50%;z-index:40;pointer-events:none;opacity:.5;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05 0'/%3E%3C/filter%3E%3Crect width='300' height='300' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:grain 8s steps(10) infinite;
}
@keyframes grain{
  0%,100%{transform:translate(0,0)}
  20%{transform:translate(-3%,2%)}40%{transform:translate(2%,-3%)}
  60%{transform:translate(-2%,-2%)}80%{transform:translate(3%,3%)}
}
.vignette{
  position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:
    radial-gradient(ellipse 120% 80% at 50% -10%, rgba(72,214,200,.05), transparent 50%),
    radial-gradient(ellipse 140% 100% at 50% 115%, rgba(245,168,60,.045), transparent 55%),
    radial-gradient(ellipse 100% 100% at 50% 50%, transparent 55%, rgba(0,0,0,.55) 100%);
}
/* faint blueprint grid on panels */
.panel::before{
  content:"";position:absolute;inset:0;z-index:-1;border-radius:var(--r);
  background:
    repeating-linear-gradient(0deg, var(--line-soft) 0 1px, transparent 1px 44px),
    repeating-linear-gradient(90deg, var(--line-soft) 0 1px, transparent 1px 44px);
  mask-image:linear-gradient(180deg,rgba(0,0,0,.7),rgba(0,0,0,.15));
}

/* ---------- top bar ---------- */
.topbar{
  position:sticky;top:0;z-index:30;
  display:flex;justify-content:space-between;align-items:center;gap:16px;
  padding:14px 22px;
  background:linear-gradient(180deg, rgba(11,16,26,.96), rgba(11,16,26,.82));
  backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);
}
.brand{display:flex;align-items:center;gap:14px}
.brand-text h1{
  font-family:'Chakra Petch',sans-serif;font-weight:700;font-size:1.35rem;
  letter-spacing:.28em;color:#e9eef4;
  text-shadow:0 0 18px var(--phosphor-glow);
}
.brand-text .sub{
  display:block;font-family:'IBM Plex Mono',monospace;
  font-size:.6rem;letter-spacing:.3em;color:var(--dim);margin-top:2px;
}
/* signature: radar sweep dial */
.dial{
  position:relative;width:44px;height:44px;border-radius:50%;
  border:1px solid rgba(245,168,60,.5);
  box-shadow:0 0 14px var(--phosphor-glow), inset 0 0 10px rgba(245,168,60,.12);
  background:
    radial-gradient(circle, rgba(245,168,60,.09) 0 30%, transparent 31%),
    repeating-radial-gradient(circle, transparent 0 9px, rgba(245,168,60,.16) 9px 10px);
  overflow:hidden;flex-shrink:0;
}
.dial-sweep{
  position:absolute;inset:0;border-radius:50%;
  background:conic-gradient(from 0deg, rgba(245,168,60,.55), transparent 70deg, transparent 360deg);
  animation:sweep 4s linear infinite;
}
@keyframes sweep{to{transform:rotate(360deg)}}
.dial-blip{position:absolute;width:4px;height:4px;border-radius:50%;background:var(--spectral);box-shadow:0 0 6px var(--spectral)}
.dial-blip.b1{top:11px;left:27px;animation:blip 4s linear infinite}
.dial-blip.b2{top:29px;left:13px;animation:blip 4s linear infinite 2.1s}
@keyframes blip{0%,10%{opacity:1}40%,100%{opacity:.12}}

.topbar-right{display:flex;align-items:center;gap:18px}
.clock{display:flex;align-items:baseline;gap:8px;font-size:.85rem}
.clock-label{font-size:.58rem;letter-spacing:.25em;color:var(--dim);font-family:'IBM Plex Mono',monospace}
.clock .mono{color:var(--phosphor);text-shadow:0 0 10px var(--phosphor-glow)}
.net-chip{
  display:flex;align-items:center;gap:7px;
  font-family:'IBM Plex Mono',monospace;font-size:.62rem;letter-spacing:.22em;
  color:var(--spectral);border:1px solid rgba(72,214,200,.35);
  padding:5px 11px;border-radius:99px;background:rgba(72,214,200,.06);
}
.pulse-dot{width:6px;height:6px;border-radius:50%;background:var(--spectral);box-shadow:0 0 8px var(--spectral);animation:pulse 2.2s ease infinite}
@keyframes pulse{50%{opacity:.35}}
.net-chip.down{color:var(--alert);border-color:rgba(255,95,86,.4);background:rgba(255,95,86,.06)}
.net-chip.down .pulse-dot{background:var(--alert);box-shadow:0 0 8px var(--alert)}

/* ---------- module nav ---------- */
.modnav{
  position:sticky;top:73px;z-index:29;
  display:flex;gap:4px;padding:10px 22px;
  background:linear-gradient(180deg, rgba(5,7,12,.9), rgba(5,7,12,.75));
  backdrop-filter:blur(8px);
  border-bottom:1px solid var(--line-soft);
  overflow-x:auto;
}
.modtab{
  font-family:'Chakra Petch',sans-serif;font-weight:600;font-size:.72rem;letter-spacing:.22em;
  color:var(--dim);background:transparent;border:1px solid transparent;
  padding:8px 16px;border-radius:var(--r);cursor:pointer;white-space:nowrap;
  transition:color .2s,border-color .2s,box-shadow .2s;
}
.modtab:hover{color:var(--ink)}
.modtab.active{
  color:var(--phosphor);border-color:rgba(245,168,60,.4);
  background:rgba(245,168,60,.06);
  box-shadow:0 0 16px rgba(245,168,60,.12), inset 0 0 12px rgba(245,168,60,.05);
  text-shadow:0 0 10px var(--phosphor-glow);
}
.modtab:focus-visible,button:focus-visible,a:focus-visible{outline:2px solid var(--spectral);outline-offset:2px}

/* ---------- panels ---------- */
main{max-width:1280px;margin:0 auto;padding:28px 22px 60px}
.panel{display:none;position:relative;animation:reveal .45s ease}
.panel.active{display:block}
@keyframes reveal{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.panel-head{display:flex;justify-content:space-between;align-items:flex-end;gap:18px;margin-bottom:22px;flex-wrap:wrap}
.eyebrow{
  font-family:'IBM Plex Mono',monospace;font-size:.62rem;letter-spacing:.3em;
  color:var(--spectral);margin-bottom:6px;
}
.eyebrow::before{content:"▮ ";color:var(--phosphor)}
h2{
  font-family:'Chakra Petch',sans-serif;font-weight:600;font-size:2rem;letter-spacing:.06em;
  color:#e9eef4;
}
.lede{color:var(--dim);max-width:640px;margin-top:6px;font-size:.95rem}
.btn-ghost{
  font-family:'Chakra Petch',sans-serif;font-weight:600;font-size:.68rem;letter-spacing:.2em;
  color:var(--spectral);background:rgba(72,214,200,.05);
  border:1px solid rgba(72,214,200,.35);border-radius:var(--r);
  padding:10px 16px;cursor:pointer;transition:all .2s;white-space:nowrap;
}
.btn-ghost:hover{background:rgba(72,214,200,.12);box-shadow:0 0 18px var(--spectral-glow)}
.btn-ghost:disabled{opacity:.45;cursor:wait}
.btn-row{display:flex;gap:8px}
.footnote{margin-top:18px;font-size:.75rem;color:var(--dim);opacity:.8}
.footnote .mono{color:var(--spectral)}

/* ---------- live wall ---------- */
.station-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:16px}
.station{
  position:relative;border:1px solid var(--line);border-radius:var(--r);
  background:linear-gradient(180deg,var(--panel),var(--panel-2));
  overflow:hidden;
  transition:border-color .25s, box-shadow .25s;
}
.station:hover{border-color:rgba(245,168,60,.35);box-shadow:0 0 24px rgba(245,168,60,.08)}
.station-plate{
  display:flex;justify-content:space-between;align-items:center;gap:8px;
  padding:10px 14px;border-bottom:1px solid var(--line-soft);
}
.station-code{font-family:'Chakra Petch',sans-serif;font-weight:700;font-size:.78rem;letter-spacing:.18em;color:var(--phosphor)}
.station-loc{font-family:'IBM Plex Mono',monospace;font-size:.62rem;color:var(--dim);letter-spacing:.08em;text-align:right}
.station-view{position:relative;aspect-ratio:16/9;background:#000}
.station-view iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.station-poster{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  filter:saturate(.7) brightness(.75);
}
.station-acquire{
  position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;
  background:linear-gradient(180deg, rgba(5,7,12,.25), rgba(5,7,12,.72));
  border:0;cursor:pointer;color:var(--ink);width:100%;
}
.station-acquire .ring{
  width:52px;height:52px;border-radius:50%;
  border:1px solid rgba(72,214,200,.6);
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 0 20px var(--spectral-glow);
  transition:transform .2s;
}
.station-acquire:hover .ring{transform:scale(1.1)}
.station-acquire .ring::after{content:"";width:0;height:0;border-left:14px solid var(--spectral);border-top:9px solid transparent;border-bottom:9px solid transparent;margin-left:4px}
.station-acquire span{font-family:'IBM Plex Mono',monospace;font-size:.62rem;letter-spacing:.28em;color:var(--spectral)}
.station-meta{
  display:flex;justify-content:space-between;padding:9px 14px;
  font-family:'IBM Plex Mono',monospace;font-size:.6rem;color:var(--dim);letter-spacing:.1em;
}
.live-tag{color:var(--alert)}
.live-tag::before{content:"● ";animation:pulse 1.6s infinite}

/* ---------- map ---------- */
.map-wrap{position:relative;border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
#map{height:560px;background:#05070c}
.leaflet-container{font-family:'IBM Plex Mono',monospace}
.map-legend{
  position:absolute;bottom:12px;left:12px;z-index:500;
  display:flex;gap:14px;padding:8px 12px;font-size:.6rem;letter-spacing:.12em;color:var(--dim);
  background:rgba(5,7,12,.82);border:1px solid var(--line);border-radius:var(--r);backdrop-filter:blur(6px);
}
.lg{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:5px;vertical-align:-1px}
.lg-fireball{background:var(--phosphor);box-shadow:0 0 7px var(--phosphor)}
.lg-station{background:var(--spectral);box-shadow:0 0 7px var(--spectral)}
.lg-aircraft{background:#8fa3bd}
.lg-iss{background:#fff;box-shadow:0 0 7px #fff}
.ticker{
  margin-top:12px;padding:10px 14px;font-size:.68rem;letter-spacing:.06em;color:var(--phosphor);
  border:1px solid rgba(245,168,60,.25);border-radius:var(--r);
  background:rgba(245,168,60,.04);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.fireball-popup b{color:var(--phosphor)}

/* ---------- signals ---------- */
.signals-cols{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.sig-col{
  border:1px solid var(--line);border-radius:var(--r);
  background:linear-gradient(180deg,var(--panel),var(--panel-2));
  padding:16px;min-height:300px;
}
.sig-title{
  font-family:'Chakra Petch',sans-serif;font-weight:600;font-size:.78rem;letter-spacing:.24em;
  color:var(--ink);margin-bottom:14px;display:flex;align-items:center;gap:8px;
}
.tick{width:8px;height:8px;background:var(--phosphor);box-shadow:0 0 8px var(--phosphor)}
.tick.spectral{background:var(--spectral);box-shadow:0 0 8px var(--spectral)}
.sig-list{display:flex;flex-direction:column}
.sig-item{
  padding:11px 4px;border-bottom:1px solid var(--line-soft);
  display:block;color:var(--ink);text-decoration:none;transition:background .15s;
}
.sig-item:hover{background:rgba(72,214,200,.04)}
.sig-item .t{font-size:.9rem;line-height:1.35}
.sig-item .m{font-family:'IBM Plex Mono',monospace;font-size:.6rem;color:var(--dim);letter-spacing:.1em;margin-top:4px;display:flex;gap:10px;flex-wrap:wrap}
.sig-item .m .src{color:var(--spectral)}
.sig-empty{color:var(--dim);font-size:.85rem;padding:20px 4px}
.sig-empty.err{color:var(--alert)}

/* ---------- sky ops ---------- */
.moon-card{
  display:flex;align-items:center;gap:18px;flex-wrap:wrap;
  border:1px solid var(--line);border-radius:var(--r);
  background:linear-gradient(180deg,var(--panel),var(--panel-2));
  padding:16px 20px;margin-bottom:16px;
}
.moon-vis{width:56px;height:56px;border-radius:50%;flex-shrink:0;box-shadow:0 0 24px rgba(230,238,246,.15)}
.moon-info .big{font-family:'Chakra Petch',sans-serif;font-size:1.05rem;letter-spacing:.08em;color:#e9eef4}
.moon-info .small{font-family:'IBM Plex Mono',monospace;font-size:.65rem;color:var(--dim);letter-spacing:.12em;margin-top:3px}
.skyops-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.ops-card{
  border:1px solid var(--line);border-radius:var(--r);
  background:linear-gradient(180deg,var(--panel),var(--panel-2));
  padding:18px;
}
.ops-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;gap:10px;flex-wrap:wrap}
.ops-name{font-family:'Chakra Petch',sans-serif;font-weight:600;letter-spacing:.14em;font-size:.9rem}
.ops-coord{font-family:'IBM Plex Mono',monospace;font-size:.6rem;color:var(--dim);letter-spacing:.1em}
.verdict{
  font-family:'Chakra Petch',sans-serif;font-weight:700;font-size:.8rem;letter-spacing:.24em;
  padding:7px 16px;border-radius:var(--r);
}
.verdict.go{color:#0a1410;background:var(--spectral);box-shadow:0 0 22px var(--spectral-glow)}
.verdict.nogo{color:var(--alert);border:1px solid rgba(255,95,86,.45);background:rgba(255,95,86,.06)}
.verdict.marginal{color:var(--phosphor);border:1px solid rgba(245,168,60,.45);background:rgba(245,168,60,.06)}
.ops-summary{font-size:.85rem;color:var(--dim);margin-bottom:14px}
.ops-summary b{color:var(--ink);font-weight:500}
.bars{display:grid;grid-template-columns:repeat(auto-fill,minmax(30px,1fr));gap:5px}
.bar{
  position:relative;height:76px;border-radius:3px;overflow:hidden;
  background:rgba(140,170,210,.06);border:1px solid var(--line-soft);
}
.bar .fill{position:absolute;bottom:0;left:0;right:0;transition:height .4s}
.bar .hh{position:absolute;top:4px;left:0;right:0;text-align:center;font-family:'IBM Plex Mono',monospace;font-size:.52rem;color:var(--dim)}
.bar.night{box-shadow:inset 0 0 0 1px rgba(72,214,200,.2)}
.bar-caption{display:flex;justify-content:space-between;font-family:'IBM Plex Mono',monospace;font-size:.55rem;color:var(--dim);letter-spacing:.1em;margin-top:6px}

.site-footer{
  max-width:1280px;margin:0 auto;padding:18px 22px 34px;
  font-size:.58rem;letter-spacing:.18em;color:var(--dim);opacity:.7;line-height:2;
}

@media (max-width:900px){
  .signals-cols,.skyops-grid{grid-template-columns:1fr}
  .topbar{flex-wrap:wrap}
  h2{font-size:1.5rem}
  #map{height:420px}
}
@media (prefers-reduced-motion: reduce){
  .grain,.dial-sweep,.dial-blip,.pulse-dot{animation:none}
  html{scroll-behavior:auto}
}

/* ---------- archive ---------- */
.arch-stats{font-size:.62rem;letter-spacing:.18em;color:var(--spectral);text-align:right;line-height:1.9}
.arch-stats b{color:var(--phosphor);font-weight:500}
.arch-controls{display:flex;flex-direction:column;gap:10px;margin-bottom:18px}
.arch-search{
  width:100%;padding:14px 18px;font-family:'IBM Plex Mono',monospace;font-size:.85rem;letter-spacing:.06em;
  color:var(--ink);background:linear-gradient(180deg,var(--panel),var(--panel-2));
  border:1px solid rgba(72,214,200,.3);border-radius:var(--r);outline:none;
  transition:border-color .2s, box-shadow .2s;
}
.arch-search:focus{border-color:var(--spectral);box-shadow:0 0 22px var(--spectral-glow)}
.arch-search::placeholder{color:var(--dim);opacity:.7}
.arch-filters{display:flex;gap:8px;flex-wrap:wrap}
.arch-select{
  font-family:'Chakra Petch',sans-serif;font-weight:600;font-size:.66rem;letter-spacing:.14em;
  color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:var(--r);
  padding:9px 12px;cursor:pointer;
}
.arch-select:focus{outline:none;border-color:rgba(245,168,60,.5)}
.arch-results{display:flex;flex-direction:column;gap:10px}
.arch-item{
  display:block;text-decoration:none;color:var(--ink);
  border:1px solid var(--line);border-radius:var(--r);
  background:linear-gradient(180deg,var(--panel),var(--panel-2));
  padding:14px 16px;transition:border-color .2s, box-shadow .2s, transform .15s;
  position:relative;overflow:hidden;
}
.arch-item::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--dim);opacity:.5}
.arch-item.t-PDF::before{background:var(--phosphor)}
.arch-item.t-VID::before{background:var(--alert)}
.arch-item.t-IMG::before{background:#8fa3bd}
.arch-item.t-BUNDLE::before{background:var(--spectral)}
.arch-item:hover{border-color:rgba(245,168,60,.4);box-shadow:0 0 20px rgba(245,168,60,.08);transform:translateX(2px)}
.arch-title{font-family:'Chakra Petch',sans-serif;font-weight:600;font-size:.95rem;letter-spacing:.03em;color:#e9eef4;line-height:1.35}
.arch-blurb{font-size:.82rem;color:var(--dim);margin-top:6px;line-height:1.5}
.arch-meta{display:flex;gap:12px;flex-wrap:wrap;margin-top:9px;font-family:'IBM Plex Mono',monospace;font-size:.58rem;letter-spacing:.14em;color:var(--dim)}
.arch-meta .chip{padding:3px 9px;border-radius:99px;border:1px solid var(--line)}
.arch-meta .chip.agency{color:var(--spectral);border-color:rgba(72,214,200,.35)}
.arch-meta .chip.rel{color:var(--phosphor);border-color:rgba(245,168,60,.35)}
.arch-more{
  margin-top:6px;text-align:center;font-family:'Chakra Petch',sans-serif;font-weight:600;
  font-size:.68rem;letter-spacing:.2em;color:var(--spectral);background:rgba(72,214,200,.05);
  border:1px solid rgba(72,214,200,.35);border-radius:var(--r);padding:11px;cursor:pointer;width:100%;
}
.arch-more:hover{background:rgba(72,214,200,.12)}
mark.arch-hl{background:rgba(245,168,60,.3);color:#ffe9c8;border-radius:2px;padding:0 1px}

/* ---------- ask the archive ---------- */
.ask-box{
  border:1px solid rgba(72,214,200,.28);border-radius:var(--r);
  background:linear-gradient(180deg, rgba(72,214,200,.05), rgba(11,16,26,.6));
  padding:16px;margin-bottom:16px;
}
.ask-head{font-family:'Chakra Petch',sans-serif;font-weight:600;font-size:.72rem;letter-spacing:.24em;color:var(--spectral);display:flex;align-items:center;gap:8px;margin-bottom:10px}
.ask-row{display:flex;gap:8px}
.ask-row .arch-search{flex:1}
.ask-out{
  margin-top:12px;padding:14px 16px;border-radius:var(--r);
  border:1px solid var(--line);background:rgba(5,7,12,.5);
  font-size:.9rem;line-height:1.65;color:var(--ink);white-space:pre-wrap;
}
.ask-out .cite{color:var(--phosphor);text-decoration:none;font-family:'IBM Plex Mono',monospace;font-size:.75rem}
.ask-out .cite:hover{text-decoration:underline}
.ask-out.thinking{color:var(--dim);font-family:'IBM Plex Mono',monospace;font-size:.75rem;letter-spacing:.14em}
.ask-src{margin-top:10px;padding-top:10px;border-top:1px solid var(--line-soft);font-size:.72rem;color:var(--dim)}
.ask-src a{color:var(--spectral);text-decoration:none}
.ask-src a:hover{text-decoration:underline}
@media (max-width:700px){.ask-row{flex-direction:column}}

/* ---------- full-text hits ---------- */
.ft-results{margin-bottom:16px}
.ft-head{font-family:'Chakra Petch',sans-serif;font-weight:600;font-size:.7rem;letter-spacing:.22em;color:var(--phosphor);margin-bottom:10px}
.ft-head .n{color:var(--spectral)}
.ft-item{display:block;text-decoration:none;color:var(--ink);border:1px solid rgba(245,168,60,.22);border-left:3px solid var(--phosphor);border-radius:var(--r);background:linear-gradient(180deg, rgba(245,168,60,.04), var(--panel-2));padding:12px 14px;margin-bottom:8px;transition:border-color .2s, box-shadow .2s}
.ft-item:hover{border-color:rgba(245,168,60,.5);box-shadow:0 0 18px rgba(245,168,60,.1)}
.ft-doc{font-family:'Chakra Petch',sans-serif;font-weight:600;font-size:.82rem;color:#e9eef4}
.ft-snip{font-size:.83rem;color:var(--dim);line-height:1.6;margin-top:5px}
.ft-snip b{color:#ffe9c8;background:rgba(245,168,60,.25);border-radius:2px;padding:0 2px;font-weight:500}
.ft-meta{margin-top:7px;font-family:'IBM Plex Mono',monospace;font-size:.56rem;letter-spacing:.14em;color:var(--dim)}
.ft-meta .pg{color:var(--phosphor)}
