/* ============================================================
   MILITECH COMMON  —  shared web-ecosystem foundation
   Derived from militech.html DNA, scaled up + live.
   ============================================================ */
:root{
  --black:#000; --bg:#050a05; --bg2:#030603; --panel:#0a120a; --panel2:#0c160c;
  --border:#1a2e1a; --line:#16281600; --green:#0f1f0f; --green2:#1a3a1a; --green3:#2a5a2a; --green4:#3f7a3f;
  --acid:#4aff4a; --acid2:#2acc2a; --acid3:#1a8a1a; --dim:#4a6a4a; --dim2:#3a5239;
  --white:#e8f0e8; --off:#b0c0b0; --faint:#6a806a;
  --red:#cc2200; --red2:#ff3a1e; --redbg:#1a0603; --amber:#c8780a; --amber2:#ffae3a; --amberbg:#1a1203;
  --ice:#8fdcff; --ice2:#bfeaff; --ice3:#2b6e8c; --icebg:#04141c;
  --mono:'Share Tech Mono',monospace; --bebas:'Bebas Neue',sans-serif; --bar:'Barlow',sans-serif;
}
*{box-sizing:border-box;}
html,body{width:100%;min-height:100%;margin:0;background:var(--bg);}
body{color:var(--white);font-family:var(--bar);font-weight:300;font-size:16px;line-height:1.7;
  overflow-x:hidden;cursor:crosshair;-webkit-font-smoothing:antialiased;}
body::before{content:'';position:fixed;inset:0;z-index:9996;pointer-events:none;opacity:.5;
  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");}
body::after{content:'';position:fixed;inset:0;z-index:9997;pointer-events:none;
  background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,0,0,0.13) 2px,rgba(0,0,0,0.13) 3px);}
body.theme-ice{--accentbg:var(--icebg);}
a{color:inherit;text-decoration:none;}
::selection{background:var(--acid3);color:#000;}
::-webkit-scrollbar{width:12px;height:12px;}
::-webkit-scrollbar-track{background:var(--bg2);}
::-webkit-scrollbar-thumb{background:var(--green2);border:2px solid var(--bg2);}
::-webkit-scrollbar-thumb:hover{background:var(--green3);}

/* faint global grid overlay */
.gridbg{position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.5;
  background-image:linear-gradient(var(--border) 1px,transparent 1px),linear-gradient(90deg,var(--border) 1px,transparent 1px);
  background-size:64px 64px;mask-image:radial-gradient(circle at 50% 30%,#000,transparent 90%);}

/* ── HEADER / MASTHEAD ── */
.mhead{position:sticky;top:0;z-index:600;background:var(--black);border-bottom:3px solid var(--green3);box-shadow:0 6px 30px rgba(0,0,0,.6);}
.mticker{background:var(--green2);border-bottom:1px solid var(--green3);overflow:hidden;white-space:nowrap;
  font-family:var(--mono);font-size:10px;color:var(--dim);letter-spacing:.3em;padding:5px 0;}
.mticker b{color:var(--acid);}
.mticker .warn{color:var(--amber2);} .mticker .crit{color:var(--red2);}
.mticker-row{display:inline-block;animation:ticker 42s linear infinite;padding-left:100%;}
.mhead-main{display:flex;align-items:center;justify-content:space-between;gap:24px;
  max-width:1640px;margin:0 auto;padding:14px 30px;}
.brand{display:flex;align-items:center;gap:16px;min-width:0;}
.brand-mark{width:42px;height:42px;border:2px solid var(--acid);display:flex;align-items:center;justify-content:center;
  font-family:var(--bebas);font-size:26px;color:var(--acid);box-shadow:0 0 18px rgba(74,255,74,.25);flex:0 0 auto;}
.brand-tx .bt-1{font-family:var(--bebas);font-size:24px;letter-spacing:.14em;color:var(--white);line-height:1;}
.brand-tx .bt-2{font-family:var(--mono);font-size:9px;letter-spacing:.28em;color:var(--dim);margin-top:3px;}
.mnav{display:flex;gap:6px;flex-wrap:wrap;}
.mnav a{font-family:var(--mono);font-size:11px;letter-spacing:.16em;color:var(--off);padding:9px 13px;border:1px solid transparent;position:relative;text-transform:uppercase;}
.mnav a:hover{color:var(--acid);border-color:var(--green3);background:#04140422;}
.mnav a.on{color:var(--acid);border-color:var(--green3);}
.mclock{font-family:var(--mono);font-size:11px;letter-spacing:.12em;color:var(--acid2);text-align:right;flex:0 0 auto;}
.mclock .lab{color:var(--dim);font-size:8px;letter-spacing:.24em;display:block;}

/* ── SYSTEM STATUS STRIP (live) ── */
.sysstrip{background:linear-gradient(180deg,#04100422,#0a120a);border-bottom:1px solid var(--border);
  font-family:var(--mono);font-size:10px;letter-spacing:.14em;color:var(--dim);}
.sysstrip-in{max-width:1640px;margin:0 auto;padding:8px 30px;display:flex;gap:26px;flex-wrap:wrap;align-items:center;}
.sysstrip .si{display:flex;align-items:center;gap:7px;}
.sysstrip .si .k{color:var(--faint);} .sysstrip .si .v{color:var(--acid2);}
.sysstrip .si .v.warn{color:var(--amber2);} .sysstrip .si .v.crit{color:var(--red2);} .sysstrip .si .v.ice{color:var(--ice);}
.recdot{width:9px;height:9px;border-radius:50%;background:var(--red2);box-shadow:0 0 10px var(--red2);animation:pulse 1.1s infinite;}
.livedot{width:8px;height:8px;border-radius:50%;background:var(--acid);box-shadow:0 0 9px var(--acid);animation:pulse 1.4s infinite;}

/* ── LAYOUT ── */
.shell{max-width:1500px;margin:0 auto;padding:34px 30px 90px;position:relative;z-index:1;}
.shell.wide{max-width:1680px;}
.cols{display:grid;gap:26px;}
.cols-2{grid-template-columns:1.55fr 1fr;}
.cols-3{grid-template-columns:repeat(3,1fr);}
.cols-side{grid-template-columns:300px 1fr;}
.sticky{position:sticky;top:128px;align-self:start;}
@media(max-width:1080px){.cols-2,.cols-3,.cols-side{grid-template-columns:1fr;}.sticky{position:static;}}

/* ── SECTION LABELS ── */
.seclabel{margin:38px 0 18px;}
.seclabel:first-child{margin-top:6px;}
.sl-tag{font-family:var(--mono);font-size:10px;color:var(--dim);letter-spacing:.4em;display:block;margin-bottom:6px;}
.sl-title{font-family:var(--bebas);font-size:clamp(30px,4vw,50px);color:var(--white);letter-spacing:.07em;line-height:1;}
.sl-title .g{color:var(--acid);} .sl-title .i{color:var(--ice);} .sl-title .r{color:var(--red2);}
.sl-sub{font-family:var(--mono);font-size:11px;color:var(--faint);letter-spacing:.16em;margin-top:8px;}
.sysrule{height:1px;background:linear-gradient(90deg,var(--green3),transparent);margin:6px 0 0;}

/* ── PANELS ── */
.panel{background:var(--panel);border:1px solid var(--border);position:relative;}
.panel.raise{box-shadow:0 0 40px rgba(74,255,74,.06);}
.panel.warnp{border-color:var(--amber);background:linear-gradient(180deg,var(--amberbg),var(--panel));}
.panel.critp{border-color:var(--red);background:linear-gradient(180deg,var(--redbg),var(--panel));}
.panel.icep{border-color:var(--ice3);background:linear-gradient(180deg,var(--icebg),var(--panel));}
.panel-h{display:flex;align-items:center;justify-content:space-between;gap:14px;
  background:#04100488;border-bottom:1px solid var(--border);padding:12px 18px;}
.panel-h .ph-t{font-family:var(--mono);font-size:11px;letter-spacing:.22em;color:var(--acid2);}
.panel-h .ph-t.warn{color:var(--amber2);} .panel-h .ph-t.crit{color:var(--red2);} .panel-h .ph-t.ice{color:var(--ice);}
.panel-h .ph-r{font-family:var(--mono);font-size:9px;letter-spacing:.2em;color:var(--faint);}
.panel-b{padding:20px 20px;}
.panel-b.lg{padding:28px 26px;}
.corner{position:absolute;width:12px;height:12px;border:2px solid var(--green3);}
.corner.tl{top:-1px;left:-1px;border-right:0;border-bottom:0;} .corner.tr{top:-1px;right:-1px;border-left:0;border-bottom:0;}
.corner.bl{bottom:-1px;left:-1px;border-right:0;border-top:0;} .corner.br{bottom:-1px;right:-1px;border-left:0;border-top:0;}

.prose{color:var(--off);line-height:1.9;}
.prose p{margin:0 0 14px;} .prose p:last-child{margin-bottom:0;}
.prose strong,.prose b{color:var(--white);font-weight:600;}
.prose.big{font-size:17px;}
.note{font-family:var(--mono);font-size:12px;letter-spacing:.04em;color:var(--faint);line-height:1.8;}

/* ── HERO / STAT GRID ── */
.hero{border:1px solid var(--green3);background:linear-gradient(135deg,#06120699,var(--panel));position:relative;overflow:hidden;padding:30px 32px;}
.hero::after{content:'';position:absolute;inset:0;pointer-events:none;
  background:repeating-linear-gradient(90deg,transparent 0 38px,rgba(74,255,74,.03) 38px 39px);}
.hero-eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.34em;color:var(--acid2);}
.hero-title{font-family:var(--bebas);font-size:clamp(38px,6vw,76px);letter-spacing:.05em;line-height:.96;margin:10px 0 8px;}
.hero-sub{font-family:var(--mono);font-size:12px;letter-spacing:.14em;color:var(--off);}
.chips{display:flex;flex-wrap:wrap;gap:9px;margin-top:18px;}
.statgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;}
.stat{border:1px solid var(--border);background:#06100688;padding:16px 16px;position:relative;}
.stat .sv{font-family:var(--bebas);font-size:42px;line-height:1;color:var(--acid);letter-spacing:.03em;}
.stat .sv.am{color:var(--amber2);} .stat .sv.rd{color:var(--red2);} .stat .sv.ic{color:var(--ice);} .stat .sv.wt{color:var(--white);}
.stat .sl{font-family:var(--mono);font-size:9px;letter-spacing:.2em;color:var(--faint);margin-top:8px;}

/* ── CHIPS / BADGES ── */
.badge{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:10px;letter-spacing:.16em;
  padding:5px 10px;border:1px solid var(--green3);color:var(--acid2);background:#04140433;text-transform:uppercase;}
.badge.am{border-color:var(--amber);color:var(--amber2);background:var(--amberbg);}
.badge.rd{border-color:var(--red);color:var(--red2);background:var(--redbg);}
.badge.ic{border-color:var(--ice3);color:var(--ice);background:var(--icebg);}
.badge.gr{border-color:var(--dim2);color:var(--faint);background:transparent;}
.badge.live::before{content:'';width:7px;height:7px;border-radius:50%;background:currentColor;box-shadow:0 0 8px currentColor;animation:pulse 1.3s infinite;}

/* ── KEY/VALUE ── */
.kv{display:grid;gap:0;}
.kv .r{display:grid;grid-template-columns:200px 1fr;gap:16px;padding:11px 0;border-bottom:1px solid var(--border);}
.kv .r:last-child{border-bottom:0;}
.kv .k{font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:var(--faint);}
.kv .v{font-family:var(--bar);font-size:15px;color:var(--off);}
.kv .v.b{color:var(--white);font-weight:600;} .kv .v.g{color:var(--acid2);} .kv .v.am{color:var(--amber2);}
.kv .v.rd{color:var(--red2);} .kv .v.ic{color:var(--ice);} .kv .v.dim{color:var(--faint);}
@media(max-width:680px){.kv .r{grid-template-columns:1fr;gap:3px;}}

/* ── WARNING STRIP ── */
.warn-strip{display:flex;align-items:center;gap:14px;padding:13px 20px;font-family:var(--mono);font-size:12px;
  letter-spacing:.1em;line-height:1.6;border:1px solid var(--amber);color:var(--amber2);
  background:repeating-linear-gradient(45deg,var(--amberbg) 0 14px,#160f02 14px 28px);}
.warn-strip.crit{border-color:var(--red);color:var(--red2);background:repeating-linear-gradient(45deg,var(--redbg) 0 14px,#170502 14px 28px);}
.warn-strip.ice{border-color:var(--ice3);color:var(--ice2);background:repeating-linear-gradient(45deg,var(--icebg) 0 14px,#06121a 14px 28px);}
.warn-strip .bang{font-size:18px;animation:blink 1.2s steps(2) infinite;}

/* ── STAMP ── */
.stamp{display:inline-block;font-family:var(--mono);font-size:11px;letter-spacing:.22em;color:var(--red2);
  border:2px solid var(--red2);padding:6px 12px;transform:rotate(-4deg);opacity:.85;text-transform:uppercase;}
.stamp.am{color:var(--amber2);border-color:var(--amber2);} .stamp.gr{color:var(--acid2);border-color:var(--acid3);}

/* ── DATABASE TABLES ── */
.db{border:1px solid var(--border);background:var(--panel);overflow:auto;max-height:none;}
.db.scroll{max-height:560px;}
.db table{width:100%;border-collapse:collapse;font-size:14px;min-width:760px;}
.db thead th{position:sticky;top:0;z-index:3;background:#06110699;backdrop-filter:blur(2px);
  font-family:var(--mono);font-size:10px;letter-spacing:.18em;color:var(--dim);text-align:left;
  padding:13px 15px;border-bottom:2px solid var(--green3);white-space:nowrap;}
.db tbody td{padding:13px 15px;border-bottom:1px solid var(--border);color:var(--off);vertical-align:top;}
.db tbody tr{transition:background .12s;}
.db tbody tr:nth-child(odd){background:#040a0422;}
.db tbody tr:hover{background:#0a1a0a55;}
.db tbody tr.hot td{color:var(--white);}
.db .mono{font-family:var(--mono);font-size:12px;letter-spacing:.04em;color:var(--off);}
.db .em{color:var(--white);font-weight:600;}
.db .ice{color:var(--ice);} .db .amb{color:var(--amber2);} .db .rdc{color:var(--red2);} .db .dimc{color:var(--faint);}
/* status chip in cells */
.st{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:10px;letter-spacing:.12em;
  padding:4px 9px;border:1px solid var(--green3);color:var(--acid2);background:#04140433;white-space:nowrap;}
.st.ok{border-color:var(--green3);color:var(--acid2);} .st.warn{border-color:var(--amber);color:var(--amber2);background:var(--amberbg);}
.st.crit{border-color:var(--red);color:var(--red2);background:var(--redbg);} .st.dead{border-color:var(--dim2);color:var(--faint);}
.st.ice{border-color:var(--ice3);color:var(--ice);background:var(--icebg);}
.st.live::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor;box-shadow:0 0 7px currentColor;animation:pulse 1.2s infinite;}
/* expandable rows */
.db tr.x{cursor:pointer;}
.db tr.x .twist{display:inline-block;transition:transform .18s;color:var(--dim);} .db tr.x.open .twist{transform:rotate(90deg);color:var(--acid);}
.db tr.xrow{display:none;} .db tr.xrow.show{display:table-row;}
.db tr.xrow td{background:#03080388;border-bottom:2px solid var(--green2);padding:0;}
.xpand{padding:20px 22px;}

/* row action (route concealment — looks like a record affordance, not a NEXT button) */
.recact{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:11px;letter-spacing:.12em;
  color:var(--ice);border-bottom:1px dotted var(--ice3);padding-bottom:1px;cursor:pointer;transition:color .15s;}
.recact:hover{color:var(--ice2);border-bottom-style:solid;}
.recact .arr{transition:transform .15s;} .recact:hover .arr{transform:translateX(3px);}
.recact.g{color:var(--acid2);border-color:var(--acid3);} .recact.g:hover{color:var(--acid);}
.recact.am{color:var(--amber2);border-color:var(--amber);}
.rowbtn{font-family:var(--mono);font-size:10px;letter-spacing:.1em;color:var(--off);background:#04120499;
  border:1px solid var(--green3);padding:7px 11px;cursor:pointer;white-space:nowrap;transition:all .14s;}
.rowbtn:hover{color:var(--acid);border-color:var(--acid3);background:#06180699;}
.rowbtn.dead{color:var(--faint);border-color:var(--dim2);cursor:not-allowed;}
.rowbtn.dead:hover{color:var(--faint);border-color:var(--dim2);background:#04120499;}

/* ── CARDS ── */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:18px;}
.card{position:relative;border:1px solid var(--border);background:linear-gradient(160deg,#06110699,var(--panel));
  padding:0;cursor:pointer;text-align:left;transition:transform .16s,border-color .16s,box-shadow .16s;overflow:hidden;}
.card:hover{transform:translateY(-3px);border-color:var(--green3);box-shadow:0 10px 30px rgba(0,0,0,.5),0 0 24px rgba(74,255,74,.08);}
.card .card-top{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 17px;border-bottom:1px solid var(--border);background:#04100455;}
.card .c-code{font-family:var(--mono);font-size:10px;letter-spacing:.16em;color:var(--dim);}
.card .card-body{padding:17px 18px 20px;}
.card .c-name{font-family:var(--bebas);font-size:30px;letter-spacing:.05em;color:var(--white);line-height:1;}
.card .c-desc{font-size:14px;color:var(--off);line-height:1.7;margin-top:10px;min-height:62px;}
.card .c-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px;padding-top:13px;border-top:1px solid var(--border);}
.card .c-site{font-family:var(--mono);font-size:9px;letter-spacing:.1em;color:var(--faint);}
.card .scanbar{position:absolute;left:0;top:0;height:2px;width:100%;background:linear-gradient(90deg,transparent,var(--acid),transparent);opacity:0;}
.card:hover .scanbar,.card:hover .scanbar{opacity:1;animation:sweepx 1.2s linear infinite;}

/* ── MODAL (big) ── */
.ov{position:fixed;inset:0;z-index:900;display:none;background:rgba(0,4,0,.82);backdrop-filter:blur(3px);
  padding:40px 24px;overflow-y:auto;}
.ov.show{display:flex;align-items:flex-start;justify-content:center;}
.win{width:min(1040px,96vw);background:var(--panel);border:1px solid var(--green3);position:relative;
  box-shadow:0 0 80px rgba(0,0,0,.8),0 0 50px rgba(74,255,74,.07);animation:winin .2s ease-out;margin:auto;}
.win-h{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:20px 24px;
  border-bottom:1px solid var(--border);background:#04100455;}
.win-h .wh-code{font-family:var(--mono);font-size:11px;letter-spacing:.18em;color:var(--dim);}
.win-h .wh-name{font-family:var(--bebas);font-size:38px;letter-spacing:.05em;color:var(--white);line-height:1;margin-top:4px;}
.win-h .wh-cls{font-family:var(--mono);font-size:10px;letter-spacing:.14em;color:var(--red2);margin-top:6px;}
.win-x{flex:0 0 auto;width:38px;height:38px;border:1px solid var(--green3);background:#04120499;color:var(--off);
  font-size:18px;cursor:pointer;line-height:1;}
.win-x:hover{color:var(--red2);border-color:var(--red);}
.win-b{padding:24px 26px 28px;max-height:74vh;overflow-y:auto;}
.msec{margin-bottom:22px;} .msec:last-child{margin-bottom:0;}
.msec-h{font-family:var(--mono);font-size:11px;letter-spacing:.2em;color:var(--acid2);margin-bottom:10px;padding-bottom:7px;border-bottom:1px solid var(--border);}
.msec p{color:var(--off);line-height:1.85;margin:0 0 10px;}
.related{display:flex;flex-direction:column;gap:8px;}
.rel{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 15px;border:1px solid var(--border);background:#040c0455;font-family:var(--mono);font-size:12px;letter-spacing:.06em;}
.rel.live{cursor:pointer;border-color:var(--ice3);color:var(--ice);} .rel.live:hover{background:var(--icebg);}
.rel.dead{color:var(--faint);} .rel .rs{font-size:10px;letter-spacing:.16em;color:var(--faint);}
.rel.live .rs{color:var(--ice);}

/* buttons (generic, used sparingly — never as the giant NEXT) */
.btn{font-family:var(--mono);font-size:12px;letter-spacing:.14em;color:var(--off);background:#04120499;
  border:1px solid var(--green3);padding:12px 18px;cursor:pointer;text-transform:uppercase;transition:all .14s;}
.btn:hover{color:var(--acid);border-color:var(--acid3);background:#06180699;}
.btn.dead{color:var(--faint);border-color:var(--dim2);}
.btnrow{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px;}

/* utility */
.rlist{list-style:none;margin:6px 0;padding:0;}
.rlist li{font-family:var(--mono);font-size:13px;color:var(--off);letter-spacing:.02em;padding:9px 0 9px 20px;border-bottom:1px solid var(--border);position:relative;}
.rlist li:before{content:"\25B8";position:absolute;left:2px;color:var(--ice3);}
.rlist li:last-child{border-bottom:0;}
.mut{color:var(--faint);} .acc{color:var(--acid2);} .icc{color:var(--ice);}
.spacer{height:30px;}

/* ── LIVE LOG FEED (streaming) ── */
.feed{border:1px solid var(--border);background:var(--bg2);font-family:var(--mono);font-size:11px;line-height:1.75;
  height:240px;overflow:hidden;position:relative;}
.feed::before{content:'';position:absolute;top:0;left:0;right:0;height:34px;z-index:2;pointer-events:none;
  background:linear-gradient(180deg,var(--bg2),transparent);}
.feed-h{display:flex;align-items:center;justify-content:space-between;padding:9px 14px;border-bottom:1px solid var(--border);background:#04100488;}
.feed-h .fh-t{font-size:10px;letter-spacing:.2em;color:var(--acid2);}
.feed-list{padding:8px 14px;}
.feed-l{color:var(--dim);letter-spacing:.03em;opacity:0;animation:feedin .35s forwards;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.feed-l .t{color:var(--green4);} .feed-l .ok{color:var(--acid2);} .feed-l .w{color:var(--amber2);} .feed-l .c{color:var(--red2);} .feed-l .i{color:var(--ice);}
.feed.tall{height:340px;}

/* ── TRANSIT BOARD (live movement) ── */
.tboard{display:flex;flex-direction:column;gap:0;border:1px solid var(--border);background:var(--panel);}
.tb-row{display:grid;grid-template-columns:1.5fr 1.6fr 90px 1fr 120px;gap:14px;align-items:center;padding:13px 16px;border-bottom:1px solid var(--border);font-family:var(--mono);font-size:12px;}
.tb-row:last-child{border-bottom:0;}
.tb-row .v{color:var(--white);} .tb-row .rt{color:var(--off);font-size:11px;letter-spacing:.04em;}
.tb-prog{height:6px;background:#0a160a;border:1px solid var(--green2);overflow:hidden;position:relative;}
.tb-prog i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--acid3),var(--acid));box-shadow:0 0 8px rgba(74,255,74,.5);transition:width 1s linear;}
.tb-eta{color:var(--ice);font-size:11px;letter-spacing:.08em;text-align:right;}
@media(max-width:760px){.tb-row{grid-template-columns:1fr 1fr;gap:6px;}.tb-prog,.tb-eta{display:none;}}

/* ── TICKING COUNTER ── */
.tick{font-family:var(--bebas);letter-spacing:.04em;color:var(--acid);}
.tick .up{font-family:var(--mono);font-size:.5em;color:var(--acid2);margin-left:6px;}

/* mini sparkline-ish bars */
.bars{display:flex;align-items:flex-end;gap:3px;height:34px;}
.bars i{width:6px;background:var(--green3);animation:barpulse 1.2s ease-in-out infinite;}

/* ── DOCUMENT VIEWER (big archive) ── */
.doc{border:1px solid var(--green3);background:#04080455;}
.doc-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:13px 18px;background:#03080388;border-bottom:1px solid var(--border);}
.doc-bar .db-id{font-family:var(--mono);font-size:10px;letter-spacing:.16em;color:var(--ice);}
.doc-bar .db-cls{font-family:var(--mono);font-size:10px;letter-spacing:.18em;color:var(--red2);}
.doc-view{display:grid;grid-template-columns:230px 1fr;min-height:520px;}
.doc-nav{border-right:1px solid var(--border);background:#03070388;padding:12px;}
.doc-tab{display:block;width:100%;text-align:left;background:none;border:1px solid transparent;border-left:2px solid var(--green2);
  color:var(--dim);font-family:var(--mono);font-size:11px;letter-spacing:.08em;padding:11px 13px;margin-bottom:5px;cursor:pointer;}
.doc-tab:hover{color:var(--white);border-left-color:var(--ice3);background:#06120655;}
.doc-tab.on{color:var(--acid);border-left-color:var(--acid);background:#04140a;}
.doc-tab .pg{float:right;color:var(--faint);}
.doc-pane{position:relative;padding:30px 34px;background:repeating-linear-gradient(0deg,transparent 0 31px,rgba(255,255,255,.014) 31px 32px);}
.doc-pg{display:none;animation:mfade .25s;}
.doc-pg.on{display:block;}
.doc-ph{font-family:var(--bebas);font-size:34px;letter-spacing:.04em;color:var(--white);margin-bottom:4px;}
.doc-pe{font-family:var(--mono);font-size:10px;letter-spacing:.18em;color:var(--dim);margin-bottom:20px;padding-bottom:12px;border-bottom:1px solid var(--border);}
.doc-stamp{position:absolute;top:18px;right:22px;font-family:var(--mono);font-size:10px;letter-spacing:.2em;color:var(--red2);border:2px solid var(--red2);padding:5px 9px;transform:rotate(6deg);opacity:.8;}
.doc-no{position:absolute;bottom:14px;right:22px;font-family:var(--mono);font-size:9px;letter-spacing:.18em;color:var(--faint);}
.dfield{display:flex;gap:18px;align-items:center;font-family:var(--mono);font-size:13px;letter-spacing:.03em;padding:11px 0;border-bottom:1px solid var(--border);}
.dfield .df-k{color:var(--ice2);min-width:190px;} .dfield .df-v{color:var(--off);}
@media(max-width:760px){.doc-view{grid-template-columns:1fr;}.doc-nav{display:flex;flex-wrap:wrap;gap:5px;border-right:0;border-bottom:1px solid var(--border);}.doc-tab{width:auto;margin:0;}}

/* ── REDACTION / HOSTILE SEAL ── */
.seal{border:2px solid var(--red);background:linear-gradient(180deg,var(--redbg),#040402);}
.seal-h{background:repeating-linear-gradient(45deg,#1a0603 0 16px,#220804 16px 32px);border-bottom:2px solid var(--red);
  padding:16px 22px;display:flex;align-items:center;gap:14px;}
.seal-h .sh-t{font-family:var(--bebas);font-size:30px;letter-spacing:.08em;color:var(--red2);}
/* removed orphaned .rd redaction-bar rule: it collided with the rd color modifier on .sv.rd/.kv .v.rd/.badge.rd. Redaction bars use .rdblk/.rdline/.rdfield/.rdc. */
.rdline{display:block;height:15px;background:repeating-linear-gradient(90deg,#0c0c0c 0 26px,#0a0a0a 26px 28px);border:1px solid #181818;margin:9px 0;}
.rdfield{display:flex;gap:18px;align-items:center;font-family:var(--mono);font-size:13px;padding:12px 0;border-bottom:1px solid #1a0603;}
.rdfield .rf-k{color:#7a2a1a;min-width:200px;letter-spacing:.06em;} .rdfield .rf-v{flex:1;}
.rdblk{display:inline-block;color:#0c0c0c;letter-spacing:2px;background:#0c0c0c;}

/* ── HACKING TERMINAL ── */
.term{border:1px solid var(--green3);background:radial-gradient(circle at 50% -20%,#06160644,#04080455);}
.term-stage{border:1px solid var(--border);background:var(--panel);margin-bottom:18px;opacity:.5;transition:opacity .3s,border-color .3s;}
.term-stage.active{opacity:1;border-color:var(--ice3);}
.term-stage.done{opacity:1;border-color:var(--green3);}
.term-stage.lock{filter:grayscale(.7);opacity:.4;pointer-events:none;}
.ts-h{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#03090388;border-bottom:1px solid var(--border);padding:13px 18px;}
.ts-n{font-family:var(--mono);font-size:11px;letter-spacing:.18em;color:var(--ice2);}
.ts-s{font-family:var(--mono);font-size:9px;letter-spacing:.18em;color:var(--faint);}
.term-stage.done .ts-s{color:var(--acid2);}
.ts-b{padding:18px 20px;}
.hint{font-family:var(--mono);font-size:12px;color:var(--faint);letter-spacing:.03em;line-height:1.7;margin-bottom:14px;}
.hint b{color:var(--ice);}
.grid-acct{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;}
.acct{font-family:var(--mono);font-size:13px;letter-spacing:.06em;color:var(--off);background:#03090399;border:1px solid var(--border);padding:14px 14px;cursor:crosshair;text-align:left;transition:all .14s;position:relative;}
.acct:hover{border-color:var(--ice3);color:var(--ice);}
.acct.pick{border-color:var(--acid);color:var(--acid);background:#04140a;}
.acct.bad{border-color:var(--red);color:var(--red2);animation:shake .3s;}
.acct .am{display:block;font-size:9px;color:var(--faint);margin-top:5px;letter-spacing:.1em;}
.fragpool{display:flex;flex-wrap:wrap;gap:9px;}
.frag{font-family:var(--mono);font-size:13px;letter-spacing:.08em;color:var(--off);background:#03090399;border:1px solid var(--border);padding:11px 14px;cursor:crosshair;transition:all .14s;}
.frag:hover{border-color:var(--ice3);color:var(--ice);}
.frag.pick{border-color:var(--acid);color:var(--acid);background:#04140a;}
.frag.dead{color:var(--faint);}
.asm{font-family:var(--mono);font-size:17px;letter-spacing:.12em;color:var(--acid);background:#02060299;border:1px dashed var(--green3);padding:14px 16px;margin-top:12px;min-height:24px;}
.noise{display:grid;grid-template-columns:repeat(8,1fr);gap:5px;}
.ncell{aspect-ratio:1;background:#0a0a0a;border:1px solid #151515;cursor:crosshair;position:relative;overflow:hidden;
  font-family:var(--mono);font-size:9px;color:transparent;display:flex;align-items:center;justify-content:center;text-align:center;letter-spacing:.03em;}
.ncell .co{position:absolute;top:1px;left:3px;font-size:7px;color:#2a2a2a;}
.ncell::before{content:'';position:absolute;inset:0;opacity:.85;background-size:54px 54px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'%3E%3Cfilter id='m'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23m)' opacity='0.7'/%3E%3C/svg%3E");animation:noiseflick .2s steps(2) infinite;}
.ncell:hover::before{opacity:.45;}
.ncell.clean{background:#0a0e0a;border-color:#1a2e1a;cursor:default;} .ncell.clean::before{opacity:0;}
.ncell.tok{background:#04140a;border-color:var(--acid3);color:var(--acid);} .ncell.bad{background:#160404;border-color:var(--red);color:var(--red2);}
.assoc{display:flex;flex-direction:column;gap:10px;}
.assoc .ar{display:grid;grid-template-columns:170px 1fr;gap:14px;align-items:center;}
.assoc .al{font-family:var(--mono);font-size:13px;letter-spacing:.08em;color:var(--white);}
.assoc select{background:#03090399;border:1px solid var(--border);color:var(--off);font-family:var(--mono);font-size:12px;padding:10px 12px;cursor:pointer;}
.assoc select.ok{border-color:var(--acid3);color:var(--acid);} .assoc select.bad{border-color:var(--red);}
.meter{border:1px solid var(--border);background:#02060299;padding:18px 20px;}
.meter-bar{height:18px;background:#0a0f0a;border:1px solid var(--green2);overflow:hidden;margin-top:10px;position:relative;}
.meter-bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--ice3),var(--acid));box-shadow:0 0 14px rgba(74,255,74,.5);transition:width .6s;}
.meter-pct{font-family:var(--bebas);font-size:48px;color:var(--acid);letter-spacing:.03em;line-height:1;}
.cred{display:flex;flex-direction:column;gap:13px;}
.cred .cf label{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.16em;color:var(--ice2);margin-bottom:6px;}
.cred .cf input{width:100%;background:#02060299;border:1px solid var(--border);color:var(--white);font-family:var(--mono);font-size:15px;padding:13px 15px;letter-spacing:.06em;outline:none;}
.cred .cf input:focus{border-color:var(--ice3);box-shadow:0 0 0 1px var(--ice3);}
.cred .cf.ok input{border-color:var(--acid3);} .cred .cf.bad input{border-color:var(--red);}
.fb{font-family:var(--mono);font-size:12px;letter-spacing:.04em;padding:12px 15px;border:1px solid var(--border);background:#03090355;color:var(--faint);line-height:1.6;}
.fb.ok{border-color:var(--acid3);color:var(--acid2);background:#04140a55;} .fb.err{border-color:var(--red);color:var(--red2);background:var(--redbg);}

/* auth (login 1) */
.auth{max-width:620px;margin:0 auto;}
.qrow{margin-bottom:16px;}
.qrow label{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:var(--off);margin-bottom:7px;line-height:1.6;}
.qrow label .qn{color:var(--ice2);}
.qrow input{width:100%;background:#02060299;border:1px solid var(--border);color:var(--white);font-family:var(--mono);font-size:15px;padding:13px 15px;outline:none;}
.qrow input:focus{border-color:var(--ice3);box-shadow:0 0 0 1px var(--ice3);}
.qrow.ok input{border-color:var(--acid3);} .qrow.bad input{border-color:var(--red);}
.qs{font-family:var(--mono);font-size:9px;letter-spacing:.14em;margin-top:5px;min-height:11px;}
.qs.ok{color:var(--acid2);} .qs.bad{color:var(--red2);}
.reveal{max-height:0;overflow:hidden;opacity:0;transition:max-height .5s ease,opacity .5s ease;border-left:2px solid var(--acid3);margin-top:0;}
.reveal.show{max-height:600px;opacity:1;margin-top:18px;padding:16px 18px;background:#04120433;}
.reveal .rv-h{font-family:var(--mono);font-size:11px;letter-spacing:.2em;color:var(--acid);margin-bottom:8px;}
.reveal .rv-b{font-family:var(--mono);font-size:12px;color:var(--acid2);line-height:1.9;white-space:pre-line;}

/* ── FOOTER ── */
.mfoot{border-top:3px solid var(--green3);background:var(--black);margin-top:60px;}
.mfoot-in{max-width:1640px;margin:0 auto;padding:34px 30px;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:30px;}
.mfoot .fc{font-family:var(--mono);font-size:11px;line-height:1.9;color:var(--dim);letter-spacing:.04em;}
.mfoot .fc b{color:var(--off);}
.mfoot-bar{border-top:1px solid var(--border);font-family:var(--mono);font-size:9px;letter-spacing:.2em;color:var(--dim2);
  text-align:center;padding:12px;}

/* ── CINEMATIC GLITCH OVERLAY (shared in-page + arrival) ── */
#gx{position:fixed;inset:0;z-index:99990;display:none;overflow:hidden;background:rgba(2,6,2,.0);}
#gx.on{display:block;}
#gx .gx-noise{position:absolute;inset:-20%;opacity:0;mix-blend-mode:screen;background-size:240px 240px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 140 140'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23g)' opacity='0.6'/%3E%3C/svg%3E");}
#gx .gx-scan{position:absolute;inset:0;opacity:0;background:repeating-linear-gradient(0deg,transparent 0 2px,rgba(0,0,0,.5) 2px 3px);}
#gx .gx-msg{position:absolute;left:0;right:0;bottom:11%;text-align:center;font-family:var(--mono);font-size:11px;letter-spacing:.34em;color:var(--acid);opacity:0;text-shadow:0 0 12px rgba(74,255,74,.7);padding:0 6vw;}
@keyframes gxIn{0%{opacity:1}55%{opacity:.5}100%{opacity:0}}
@keyframes gxInN{0%{opacity:.9}45%{opacity:.5}100%{opacity:0}}
@keyframes gxOut{0%{opacity:0}35%{opacity:.55}100%{opacity:1}}
@keyframes gxOutN{0%{opacity:0}100%{opacity:.9}}
#gx.gin{animation:gxIn .72s ease-out forwards;background:#000;}
#gx.gin .gx-noise{animation:gxInN .72s ease-out forwards;} #gx.gin .gx-scan{animation:gxInN .72s ease-out forwards;}
#gx.gout{animation:gxOut .42s ease-in forwards;background:#000;}
#gx.gout .gx-noise{animation:gxOutN .42s ease-in forwards;} #gx.gout .gx-scan{opacity:.5;} #gx.gout .gx-msg{opacity:1;}
@keyframes gxShear{0%{transform:translate(0,0) skewX(0)}20%{transform:translate(-6px,0) skewX(-1.1deg)}40%{transform:translate(5px,0) skewX(1deg)}60%{transform:translate(-3px,1px)}80%{transform:translate(4px,-1px) skewX(.6deg)}100%{transform:translate(0,0)}}
body.gx-shear{animation:gxShear .42s steps(3);}

/* ── ANIMATIONS ── */
@keyframes ticker{0%{transform:translateX(0)}100%{transform:translateX(-100%)}}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.82)}}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.2}}
@keyframes flick{0%,100%{opacity:1}48%{opacity:.5}52%{opacity:.9}}
@keyframes sweepx{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}
@keyframes feedin{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes winin{from{opacity:0;transform:translateY(14px) scale(.99)}to{opacity:1;transform:none}}
@keyframes mfade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes barpulse{0%,100%{height:30%}50%{height:100%}}
@keyframes noiseflick{0%{transform:translate(0,0)}50%{transform:translate(-2%,1%)}100%{transform:translate(1%,-1%)}}
@keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}
@keyframes scanmove{0%{transform:translateY(-100%)}100%{transform:translateY(100%)}}

@media(prefers-reduced-motion:reduce){
  *{animation-duration:.001s !important;animation-iteration-count:1 !important;}
  .mticker-row{animation:none;padding-left:0;} .feed-l{opacity:1;animation:none;}
}

/* feed: fixed header, newest-at-bottom streaming */
.feed{display:flex;flex-direction:column;}
.feed-list{flex:1;display:flex;flex-direction:column;justify-content:flex-end;overflow:hidden;padding:8px 14px;}

/* ── TABS + FILTER ── */
.tabbar{display:flex;flex-wrap:wrap;gap:4px;border-bottom:2px solid var(--green3);}
.tabbtn{font-family:var(--mono);font-size:11px;letter-spacing:.13em;color:var(--dim);background:#04100455;border:1px solid var(--border);border-bottom:0;padding:12px 17px;cursor:pointer;text-transform:uppercase;}
.tabbtn:hover{color:var(--white);background:#06140655;}
.tabbtn.on{color:var(--acid);background:var(--panel);border-color:var(--green3);position:relative;top:2px;}
.tabbtn .ct{color:var(--faint);margin-left:7px;font-size:9px;}
[data-tabpane]{display:none;animation:mfade .22s;} [data-tabpane].on{display:block;}
.filterbar{display:flex;gap:12px;align-items:center;padding:16px 0;flex-wrap:wrap;}
.filterbar input{background:#02060299;border:1px solid var(--border);color:var(--white);font-family:var(--mono);font-size:13px;padding:12px 15px;min-width:300px;outline:none;letter-spacing:.04em;}
.filterbar input:focus{border-color:var(--ice3);box-shadow:0 0 0 1px var(--ice3);}
.filterbar .fl{font-family:var(--mono);font-size:10px;letter-spacing:.16em;color:var(--faint);}

/* ============================================================
   BOX / CHIP FIT + LEGIBILITY PASS (v4.1)
   Roomier padding, tighter tracking, nowrap, brighter red.
   ============================================================ */
.badge{font-size:11px;letter-spacing:.09em;padding:7px 14px;line-height:1.1;white-space:nowrap;}
.badge.rd{color:#ff7a5e;}
.badge.am{color:#ffbf5e;}
.badge.ic{color:#aee4ff;}
.st{font-size:11px;letter-spacing:.06em;padding:6px 12px;line-height:1.1;white-space:nowrap;}
.st.crit{color:#ff7a5e;}
.st.warn{color:#ffbf5e;}
.st.ice{color:#aee4ff;}
.stamp{display:inline-block;letter-spacing:.16em;padding:8px 16px;line-height:1.15;white-space:nowrap;}
.doc-stamp{letter-spacing:.15em;padding:6px 12px;white-space:nowrap;}
.tabbtn,.doc-tab{white-space:nowrap;}
.chips{gap:10px;}
.warn-strip.crit{color:#ff8a6e;}
.kv .v.rd,.dfield .df-v,.rel.dead .rs{}
.sl-title .r{color:#ff6a4a;}

/* chips/pills must NOT shrink in a flex row — shrinking squeezed the box
   below the (nowrap) text width, pushing long labels onto the borders.
   flex:0 0 auto keeps each at its natural size and lets the row wrap. */
.chips{flex-wrap:wrap;align-items:flex-start;}
.badge{flex:0 0 auto;}
.st{flex:0 0 auto;}
.chips>.badge{flex:0 0 auto;}

/* ============================================================
   CHIP SIZING — DEFINITIVE FIX (v2)
   Earlier this was switched to inline-block, which collapsed the
   box HEIGHT: the text overflowed the bottom and the box's bottom
   border cut across it (read as a strikethrough on red chips).
   Correct approach: inline-flex + align-items:center sizes the
   cross-axis to the content and centres it (correct height), and
   flex:0 0 auto stops the box shrinking below its nowrap text
   width inside the .chips flex row (correct width). Generous
   line-height guarantees the glyph is contained at any size/font.
   ============================================================ */
.badge,.st{display:inline-flex !important;align-items:center !important;justify-content:center !important;
  flex:0 0 auto !important;width:auto !important;max-width:100% !important;white-space:nowrap !important;
  vertical-align:middle !important;box-sizing:border-box !important;}
.badge{gap:7px !important;line-height:1.6 !important;padding:7px 13px !important;}
.st{gap:6px !important;line-height:1.55 !important;padding:6px 11px !important;}
.badge.live::before,.st.live::before{display:block !important;flex:none !important;margin:0 !important;position:static !important;top:auto !important;}
.kv .v{overflow-wrap:break-word;}
.cols-side .sticky .kv .r{grid-template-columns:1fr;gap:4px;}
.stat .sv{line-height:1;margin:0 0 14px 0;border:none;box-shadow:none;}
.stat .sl{margin-top:0;}
.stat .sv.rd,.kv .v.rd{height:auto;background:transparent;border:none;display:block;vertical-align:baseline;}
