/* ==========================================================================
   Correlia — instrument panel stylesheet
   Chassis: brushed graphite. Readout: phosphor CRT. Channels: A teal / B amber / C magenta.
   ========================================================================== */

:root{
  /* chassis */
  --case-hi:#4b5058;
  --case:#33373d;
  --case-lo:#22252a;
  --case-deep:#171a1e;
  --bevel-light:rgba(255,255,255,.14);
  --bevel-dark:rgba(0,0,0,.55);
  --engrave:#aab2bd;
  --engrave-dim:#7c848f;

  /* phosphor screen */
  --crt-bg:#07110d;
  --crt-bg2:#0b1a14;
  --crt-line:#12362a;
  --crt-text:#cfeedd;
  --crt-dim:#7ba892;

  /* channels */
  --ch1:#35d0c9;
  --ch2:#f2a23c;
  --ch3:#e8558f;

  /* status */
  --led-high:#4ade8a;
  --led-mid:#f2c14e;
  --led-low:#8a94a1;
  --led-off:#1d2b25;
  --danger:#e05a4e;

  --radius:6px;
  --f-display:'Barlow Condensed','Oswald','Arial Narrow',sans-serif;
  --f-body:'Inter',-apple-system,'Segoe UI',Roboto,sans-serif;
  --f-data:'Share Tech Mono','Consolas','Courier New',monospace;
}

*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:var(--f-body);
  color:#dfe4ea;
  background:
    radial-gradient(1200px 600px at 50% -10%, #43484f 0%, transparent 60%),
    repeating-linear-gradient(90deg, rgba(255,255,255,.020) 0 1px, transparent 1px 3px),
    linear-gradient(180deg,#2c3036 0%,#1b1e22 100%);
  background-attachment:fixed;
  min-height:100vh;
  font-size:15px;
  line-height:1.55;
}
a{color:var(--ch1);text-decoration:none}
a:hover{text-decoration:underline}
:focus-visible{outline:2px solid var(--ch1);outline-offset:2px}

.wrap{max-width:1240px;margin:0 auto;padding:0 18px 70px}

/* ---------- brushed metal panel ---------- */
.panel{
  position:relative;
  background:
    repeating-linear-gradient(90deg, rgba(255,255,255,.025) 0 1px, transparent 1px 4px),
    linear-gradient(180deg,var(--case-hi) 0%,var(--case) 14%,var(--case-lo) 100%);
  border-radius:10px;
  border:1px solid #14171a;
  box-shadow:
    inset 0 1px 0 var(--bevel-light),
    inset 0 -2px 6px rgba(0,0,0,.5),
    0 10px 26px rgba(0,0,0,.45);
  padding:20px 22px;
  margin:18px 0;
}
.panel::before,.panel::after,
.panel > .screw{pointer-events:none}
.screw{
  position:absolute;width:13px;height:13px;border-radius:50%;
  background:radial-gradient(circle at 35% 30%,#8b929c 0%,#565c66 45%,#2b2f35 100%);
  box-shadow:inset 0 1px 1px rgba(255,255,255,.4),0 1px 2px rgba(0,0,0,.6);
}
.screw::after{
  content:"";position:absolute;left:2px;right:2px;top:50%;height:2px;
  background:#1b1e22;transform:translateY(-50%) rotate(28deg);border-radius:2px;
}
.screw.tl{top:9px;left:9px}.screw.tr{top:9px;right:9px}
.screw.bl{bottom:9px;left:9px}.screw.br{bottom:9px;right:9px}

/* ---------- engraved typography ---------- */
.engraved,.panel-title,.field-label,.nav a,.btn,.tab{
  font-family:var(--f-display);
  text-transform:uppercase;
  letter-spacing:.14em;
  font-weight:600;
}
.panel-title{
  font-size:15px;color:var(--engrave);
  text-shadow:0 1px 0 rgba(0,0,0,.85),0 -1px 0 rgba(255,255,255,.06);
  display:flex;align-items:center;gap:10px;margin:0 0 14px;
}
.panel-title::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,#14171a,transparent);
  box-shadow:0 1px 0 rgba(255,255,255,.07)}
.field-label{font-size:12px;color:var(--engrave-dim);text-shadow:0 1px 0 rgba(0,0,0,.8)}
.hint{font-size:12.5px;color:#8b939e;letter-spacing:0}

/* ---------- masthead ---------- */
.masthead{
  display:flex;align-items:center;gap:16px;flex-wrap:wrap;
  padding:14px 20px;margin:16px 0 0;
  background:linear-gradient(180deg,#4a4f57,#2a2e33 60%,#212429);
  border:1px solid #131619;border-radius:10px 10px 0 0;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.16),0 6px 18px rgba(0,0,0,.4);
}
.brand{display:flex;align-items:center;gap:12px}
.brand-mark{
  width:42px;height:42px;border-radius:50%;flex:none;
  background:radial-gradient(circle at 32% 28%,#5e646d,#2a2e33 70%);
  border:2px solid #15181b;
  box-shadow:inset 0 2px 4px rgba(255,255,255,.18),0 2px 5px rgba(0,0,0,.6);
  display:grid;place-items:center;
}
.brand-mark span{
  width:14px;height:14px;border-radius:50%;
  background:radial-gradient(circle at 35% 30%,#7ef7ea,var(--ch1));
  box-shadow:0 0 10px var(--ch1),0 0 22px rgba(53,208,201,.5);
  animation:pulse 3.4s ease-in-out infinite;
}
@keyframes pulse{0%,100%{opacity:.75}50%{opacity:1}}
.brand h1{
  margin:0;font-family:var(--f-display);font-size:26px;letter-spacing:.3em;
  text-transform:uppercase;color:#e8edf3;
  text-shadow:0 1px 0 rgba(0,0,0,.9),0 -1px 0 rgba(255,255,255,.08);
}
.brand small{display:block;font-family:var(--f-data);font-size:10.5px;letter-spacing:.16em;
  color:var(--engrave-dim);text-transform:uppercase}
.nav{margin-left:auto;display:flex;gap:6px;flex-wrap:wrap}
.nav a{
  font-size:12px;padding:8px 13px;border-radius:5px;color:var(--engrave);
  background:linear-gradient(180deg,#4a4f57,#2d3137);
  border:1px solid #15181b;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.16),0 2px 4px rgba(0,0,0,.5);
}
.nav a:hover{color:#fff;text-decoration:none;background:linear-gradient(180deg,#565c66,#343941)}
.nav a.on{color:var(--crt-bg);background:linear-gradient(180deg,#7ef7ea,#35d0c9);
  border-color:#0f5f5b;box-shadow:inset 0 1px 0 rgba(255,255,255,.5),0 0 12px rgba(53,208,201,.4)}

/* ---------- patch bay (the three keyword channels) ---------- */
.bay{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
@media(max-width:860px){.bay{grid-template-columns:1fr}}

.channel{
  position:relative;padding:14px 14px 16px;border-radius:8px;
  background:linear-gradient(180deg,#31353b,#25282d);
  border:1px solid #14171a;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.10),inset 0 -3px 8px rgba(0,0,0,.45);
}
.channel-head{display:flex;align-items:center;gap:10px;margin-bottom:9px}
.jack{
  width:30px;height:30px;border-radius:50%;flex:none;display:grid;place-items:center;
  background:radial-gradient(circle at 34% 30%,#6b727c,#2b2f35 72%);
  border:2px solid #15181b;
  box-shadow:inset 0 2px 3px rgba(255,255,255,.2),0 2px 4px rgba(0,0,0,.6);
}
.jack i{
  width:12px;height:12px;border-radius:50%;font-style:normal;display:block;
  background:#0a0d10;box-shadow:inset 0 2px 4px #000;
}
.channel[data-ch="1"] .jack i{background:radial-gradient(circle at 35% 30%,#8ffff6,var(--ch1));box-shadow:0 0 9px var(--ch1)}
.channel[data-ch="2"] .jack i{background:radial-gradient(circle at 35% 30%,#ffd28a,var(--ch2));box-shadow:0 0 9px var(--ch2)}
.channel[data-ch="3"] .jack i{background:radial-gradient(circle at 35% 30%,#ffa3c6,var(--ch3));box-shadow:0 0 9px var(--ch3)}
.channel-head b{font-family:var(--f-display);letter-spacing:.18em;text-transform:uppercase;
  font-size:13px;color:var(--engrave);text-shadow:0 1px 0 rgba(0,0,0,.8)}
.channel-head em{margin-left:auto;font-style:normal;font-family:var(--f-data);font-size:10px;
  color:var(--engrave-dim);letter-spacing:.1em}

input[type=text],input[type=email],input[type=password],input[type=number],select,textarea{
  width:100%;font-family:var(--f-data);font-size:14px;color:var(--crt-text);
  background:linear-gradient(180deg,var(--crt-bg) 0%,var(--crt-bg2) 100%);
  border:1px solid #0a0f0c;border-radius:4px;padding:11px 12px;
  box-shadow:inset 0 2px 6px rgba(0,0,0,.75),inset 0 0 0 1px rgba(53,208,201,.06);
}
input::placeholder{color:#4d6b5e}
input:focus,select:focus,textarea:focus{outline:none;box-shadow:inset 0 2px 6px rgba(0,0,0,.75),0 0 0 2px rgba(53,208,201,.45)}
.channel[data-ch="2"] input:focus{box-shadow:inset 0 2px 6px rgba(0,0,0,.75),0 0 0 2px rgba(242,162,60,.45)}
.channel[data-ch="3"] input:focus{box-shadow:inset 0 2px 6px rgba(0,0,0,.75),0 0 0 2px rgba(232,85,143,.45)}
select{appearance:none;background-image:linear-gradient(180deg,var(--crt-bg),var(--crt-bg2))}

.chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px;min-height:20px}
.chip{
  font-family:var(--f-data);font-size:11px;padding:2px 8px;border-radius:10px;
  background:rgba(53,208,201,.12);border:1px solid rgba(53,208,201,.4);color:#9ff0ea;
}
.channel[data-ch="2"] .chip{background:rgba(242,162,60,.12);border-color:rgba(242,162,60,.4);color:#ffce90}
.channel[data-ch="3"] .chip{background:rgba(232,85,143,.12);border-color:rgba(232,85,143,.4);color:#ffa8c9}

/* ---------- controls ---------- */
.controls{display:flex;flex-wrap:wrap;gap:18px;align-items:flex-end;margin-top:18px}
.ctl{display:flex;flex-direction:column;gap:6px}
.ctl select,.ctl input{min-width:130px}

.rocker{display:flex;align-items:center;gap:9px;cursor:pointer;user-select:none}
.rocker input{position:absolute;opacity:0;width:0;height:0}
.rocker .body{
  width:52px;height:26px;border-radius:4px;position:relative;flex:none;
  background:linear-gradient(180deg,#1b1e22,#2b2f35);
  border:1px solid #101315;box-shadow:inset 0 2px 5px rgba(0,0,0,.8);
}
.rocker .body::before{
  content:"";position:absolute;top:2px;left:2px;width:24px;height:20px;border-radius:3px;
  background:linear-gradient(180deg,#6a707a,#3a3f47);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.35),0 2px 3px rgba(0,0,0,.6);
  transition:transform .16s cubic-bezier(.4,1.6,.6,1);
}
.rocker input:checked + .body::before{transform:translateX(24px)}
.rocker input:checked + .body{background:linear-gradient(180deg,#0f3d38,#14514a);
  box-shadow:inset 0 2px 5px rgba(0,0,0,.6),0 0 10px rgba(53,208,201,.28)}
.rocker span{font-family:var(--f-display);text-transform:uppercase;letter-spacing:.13em;
  font-size:12px;color:var(--engrave-dim)}
.rocker input:checked ~ span{color:var(--ch1)}

.btn{
  display:inline-flex;align-items:center;gap:8px;cursor:pointer;
  font-size:13px;padding:12px 22px;border-radius:6px;color:#e7ecf2;
  background:linear-gradient(180deg,#565c66,#33383f 55%,#2a2e34);
  border:1px solid #121517;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.24),0 3px 0 #191c20,0 6px 12px rgba(0,0,0,.5);
  transition:transform .06s,box-shadow .06s;
}
.btn:hover{text-decoration:none;color:#fff}
.btn:active{transform:translateY(3px);box-shadow:inset 0 2px 6px rgba(0,0,0,.6),0 0 0 #191c20}
.btn-run{
  background:linear-gradient(180deg,#7ef7ea,#35d0c9 55%,#1ba7a1);
  color:#04231f;border-color:#0b4d49;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.6),0 3px 0 #0d6360,0 0 20px rgba(53,208,201,.35);
  font-size:15px;padding:14px 34px;letter-spacing:.2em;
}
.btn-run:active{box-shadow:inset 0 3px 8px rgba(0,0,0,.35),0 0 0 #0d6360}
.btn-sm{padding:7px 13px;font-size:11.5px;box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 2px 0 #191c20}
.btn-danger{background:linear-gradient(180deg,#e2796d,#b8382b);color:#fff;border-color:#5c1a13}

/* ---------- CRT readout ---------- */
.crt{
  position:relative;border-radius:8px;padding:18px;
  background:
    repeating-linear-gradient(180deg, rgba(0,0,0,.22) 0 1px, transparent 1px 3px),
    radial-gradient(120% 90% at 50% 0%, #0f2a20 0%, var(--crt-bg) 70%);
  border:1px solid #050a08;
  box-shadow:inset 0 0 40px rgba(0,0,0,.9),inset 0 0 0 2px rgba(53,208,201,.07),0 2px 0 rgba(255,255,255,.05);
  color:var(--crt-text);
}
.crt::after{
  content:"";position:absolute;inset:0;border-radius:8px;pointer-events:none;
  background:radial-gradient(70% 50% at 50% 0%, rgba(120,255,220,.05), transparent 70%);
}

/* ---------- readout strip / stats ---------- */
.readout{display:grid;grid-template-columns:repeat(auto-fit,minmax(122px,1fr));gap:10px}
.gauge{
  background:linear-gradient(180deg,var(--crt-bg2),var(--crt-bg));
  border:1px solid #04100b;border-radius:5px;padding:10px 12px;
  box-shadow:inset 0 2px 8px rgba(0,0,0,.8);
}
.gauge b{display:block;font-family:var(--f-data);font-size:26px;line-height:1.1;color:#8ff0d0;
  text-shadow:0 0 10px rgba(120,240,200,.45)}
.gauge span{font-family:var(--f-display);text-transform:uppercase;letter-spacing:.14em;
  font-size:10.5px;color:var(--crt-dim)}
.gauge.c1 b{color:var(--ch1);text-shadow:0 0 10px rgba(53,208,201,.5)}
.gauge.c2 b{color:var(--ch2);text-shadow:0 0 10px rgba(242,162,60,.5)}
.gauge.c3 b{color:var(--ch3);text-shadow:0 0 10px rgba(232,85,143,.5)}

/* ---------- result cards ---------- */
.results{display:flex;flex-direction:column;gap:14px;margin-top:16px}
.card{
  position:relative;border-radius:8px;padding:16px 18px 14px;
  background:linear-gradient(180deg,#2e3238,#24272c);
  border:1px solid #14171a;border-left:4px solid var(--led-low);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 5px 14px rgba(0,0,0,.4);
}
.card.high{border-left-color:var(--led-high)}
.card.moderate{border-left-color:var(--led-mid)}
.card.low{border-left-color:var(--led-low)}

.card-top{display:flex;gap:14px;align-items:flex-start;flex-wrap:wrap}
.card h3{margin:0 0 5px;font-size:16.5px;line-height:1.35;font-weight:600;color:#eef2f6;flex:1 1 400px}
.card h3 a{color:inherit}
.meta{font-family:var(--f-data);font-size:11.5px;color:#96a0ab;display:flex;flex-wrap:wrap;gap:5px 12px;margin-bottom:9px}
.meta .doi{color:var(--ch1)}

.pill{
  display:inline-block;font-family:var(--f-data);font-size:10px;letter-spacing:.06em;
  padding:2px 7px;border-radius:3px;background:#1b1e22;border:1px solid #101315;color:#9fb0be;
  text-transform:uppercase;
}
.pill.oa{color:#7ee0a8;border-color:#1d4030}
.pill.pre{color:#f2c14e;border-color:#453a17}
.pill.src{color:#a9d8ff;border-color:#17293a}

/* LED confidence meter */
.meter{flex:none;width:168px;text-align:right}
.meter .val{font-family:var(--f-data);font-size:20px;color:#cfeedd;text-shadow:0 0 8px rgba(120,240,200,.35)}
.meter .lbl{font-family:var(--f-display);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--engrave-dim)}
.leds{display:flex;gap:2px;justify-content:flex-end;margin:5px 0 3px;padding:4px;border-radius:3px;
  background:#101315;box-shadow:inset 0 2px 5px rgba(0,0,0,.8)}
.leds i{width:9px;height:13px;border-radius:1.5px;background:var(--led-off);display:block}
.leds i.on{background:var(--led-mid);box-shadow:0 0 6px var(--led-mid)}
.leds i.on.g{background:var(--led-high);box-shadow:0 0 6px var(--led-high)}
.leds i.on.r{background:var(--led-low);box-shadow:0 0 5px var(--led-low)}

/* signature: coincidence track */
.track{
  display:flex;gap:2px;align-items:flex-end;height:26px;padding:4px 6px;margin:10px 0 0;
  background:linear-gradient(180deg,var(--crt-bg),#04100b);border:1px solid #050a08;border-radius:4px;
  box-shadow:inset 0 2px 6px rgba(0,0,0,.85);
}
.track u{flex:1;display:flex;flex-direction:column-reverse;gap:1px;height:100%;text-decoration:none}
.track u b{display:block;height:5px;border-radius:1px;opacity:.9}
.track u b.g1{background:var(--ch1);box-shadow:0 0 5px var(--ch1)}
.track u b.g2{background:var(--ch2);box-shadow:0 0 5px var(--ch2)}
.track u b.g3{background:var(--ch3);box-shadow:0 0 5px var(--ch3)}
.track u.hit{background:rgba(120,255,220,.07);border-radius:2px}
.track-key{font-family:var(--f-data);font-size:10.5px;color:var(--crt-dim);margin-top:4px}

/* snippet */
.snippet{
  margin:12px 0 0;padding:12px 14px;border-radius:5px;font-size:14.2px;line-height:1.62;
  background:linear-gradient(180deg,var(--crt-bg2),var(--crt-bg));
  border:1px solid #04100b;color:#d7ecdf;
  box-shadow:inset 0 2px 8px rgba(0,0,0,.7);
}
mark.ch{background:transparent;padding:0 2px;border-radius:2px;font-weight:600}
mark.ch1{color:var(--ch1);background:rgba(53,208,201,.14);box-shadow:0 0 0 1px rgba(53,208,201,.35)}
mark.ch2{color:var(--ch2);background:rgba(242,162,60,.14);box-shadow:0 0 0 1px rgba(242,162,60,.35)}
mark.ch3{color:var(--ch3);background:rgba(232,85,143,.14);box-shadow:0 0 0 1px rgba(232,85,143,.35)}

/* relation strip */
.rels{display:flex;flex-wrap:wrap;gap:7px;margin-top:11px}
.rel{
  font-family:var(--f-data);font-size:11.5px;padding:4px 9px;border-radius:3px;
  background:#1c2126;border:1px solid #101315;color:#c2ccd6;
}
.rel .a{color:var(--ch1)}.rel .b{color:var(--ch2)}.rel .c{color:var(--ch3)}
.rel .p{color:#8ff0d0}
.rel.pos{border-color:#1d4030}.rel.neg{border-color:#4a2320}
.rel.negated{opacity:.72;text-decoration:line-through wavy rgba(224,90,78,.6)}

/* expandable score breakdown */
details.why{margin-top:11px}
details.why > summary{
  cursor:pointer;font-family:var(--f-display);text-transform:uppercase;letter-spacing:.13em;
  font-size:11px;color:var(--engrave-dim);list-style:none;display:inline-flex;gap:7px;align-items:center;
}
details.why > summary::-webkit-details-marker{display:none}
details.why > summary::before{content:"▸";color:var(--ch1)}
details.why[open] > summary::before{content:"▾"}
.why table{width:100%;border-collapse:collapse;margin-top:9px;font-size:12.5px}
.why td{padding:5px 8px;border-bottom:1px solid #1b1e22;color:#b6c0ca}
.why td.w{width:74px;text-align:right;font-family:var(--f-data);color:#8ff0d0}
.why td.w.neg{color:#e0857a}
.why tr.total td{border-top:1px solid #3a3f47;border-bottom:none;font-weight:700;color:#e8edf3}

.card-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:12px}

/* ---------- tables ---------- */
table.grid{width:100%;border-collapse:collapse;font-size:13.5px}
table.grid th{
  font-family:var(--f-display);text-transform:uppercase;letter-spacing:.13em;font-size:11px;
  color:var(--engrave-dim);text-align:left;padding:9px 10px;border-bottom:1px solid #14171a;
  background:linear-gradient(180deg,#3a3f47,#2c3036);
}
table.grid td{padding:9px 10px;border-bottom:1px solid #23262b;color:#cbd3db}
table.grid tr:hover td{background:rgba(53,208,201,.05)}

/* ---------- matrix ---------- */
.matrix{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.mx{
  padding:13px 15px;border-radius:6px;
  background:linear-gradient(180deg,#2e3238,#24272c);border:1px solid #14171a;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.07);
}
.mx .pair{font-family:var(--f-display);letter-spacing:.14em;text-transform:uppercase;font-size:12px;margin-bottom:6px}
.mx .big{font-family:var(--f-data);font-size:24px;color:#8ff0d0}
.mx .sub{font-size:12px;color:#8b939e}

/* ---------- map ---------- */
.scope{
  position:relative;border-radius:50% / 8%;padding:0;
}
#mapwrap{
  position:relative;border-radius:8px;overflow:hidden;
  background:
    repeating-linear-gradient(180deg, rgba(0,0,0,.2) 0 1px, transparent 1px 3px),
    radial-gradient(90% 80% at 50% 40%, #103127 0%, var(--crt-bg) 72%);
  border:1px solid #050a08;box-shadow:inset 0 0 50px rgba(0,0,0,.9);
  height:520px;
}
#mapwrap svg{width:100%;height:100%;display:block;cursor:grab}
#mapwrap svg:active{cursor:grabbing}
.map-tools{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px;align-items:center}

/* ---------- news ---------- */
.news-item{padding:11px 0;border-bottom:1px solid #23262b}
.news-item:last-child{border-bottom:none}
.news-item h4{margin:0 0 3px;font-size:14.5px;font-weight:600}
.news-item .meta{margin:0}

/* ---------- flash / empty ---------- */
.flash{padding:11px 15px;border-radius:5px;margin:12px 0;font-size:13.5px;
  background:linear-gradient(180deg,#1d3b33,#16302a);border:1px solid #0d5049;color:#a8e8d8}
.flash.err{background:linear-gradient(180deg,#3d211e,#2e1a17);border-color:#6b2a22;color:#f0b4ac}
.empty{padding:34px 20px;text-align:center;color:var(--crt-dim);font-family:var(--f-data)}
.empty b{display:block;font-size:17px;color:var(--crt-text);margin-bottom:6px}

/* ---------- tabs ---------- */
.tabs{display:flex;gap:4px;margin-bottom:14px;flex-wrap:wrap}
.tab{
  font-size:12px;padding:9px 16px;border-radius:5px 5px 0 0;cursor:pointer;color:var(--engrave-dim);
  background:linear-gradient(180deg,#3a3f47,#2a2e33);border:1px solid #14171a;border-bottom:none;
}
.tab.on{color:#04231f;background:linear-gradient(180deg,#7ef7ea,#35d0c9)}
.tabpane{display:none}
.tabpane.on{display:block}

/* ---------- footer ---------- */
.foot{
  margin-top:26px;padding:16px 20px;border-radius:0 0 10px 10px;
  background:linear-gradient(180deg,#26292e,#1c1f23);border:1px solid #131619;border-top:none;
  font-family:var(--f-data);font-size:11.5px;color:#7d858f;display:flex;gap:14px;flex-wrap:wrap;
}
.foot .lamp{width:8px;height:8px;border-radius:50%;background:var(--led-high);
  box-shadow:0 0 8px var(--led-high);display:inline-block;margin-right:6px}

/* ---------- login ---------- */
.login-shell{max-width:400px;margin:8vh auto}

/* ---------- utility ---------- */
.row{display:flex;gap:14px;flex-wrap:wrap;align-items:center}
.spacer{flex:1}
.mono{font-family:var(--f-data)}
.dim{color:#8b939e}
.small{font-size:12.5px}
.nowrap{white-space:nowrap}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
