:root {
  --bg:#000; --panel:rgba(8,10,12,.92); --line:#1d2329; --line2:#2a323a; --fg:#d8dee4; --dim:#6b7580;
  --green:#39ff6a; --amber:#ffb000; --red:#ff3b4d; --cyan:#3fd0ff;
  --mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, "Liberation Mono", monospace;
}
* { box-sizing:border-box; }
[hidden] { display:none !important; }
* { scrollbar-width:thin; scrollbar-color:#2a323a transparent; }
::-webkit-scrollbar { width:6px; height:6px; } ::-webkit-scrollbar-thumb { background:#2a323a; } ::-webkit-scrollbar-track { background:transparent; }
html, body { height:100%; }
body {
  margin:0; color:var(--fg); font:12px/1.35 var(--mono); font-variant-numeric:tabular-nums;
  background-color:var(--bg);
  background-image:repeating-linear-gradient(135deg, rgba(255,255,255,.022) 0 1px, transparent 1px 7px);
}
.dim { color:var(--dim); } .green { color:var(--green); } .red { color:var(--red); } .amber { color:var(--amber); } .cyan { color:var(--cyan); }
a { color:var(--cyan); text-decoration:none; } a:hover { text-decoration:underline; }
label { color:var(--dim); font-size:10px; text-transform:uppercase; letter-spacing:.14em; }
h1, h2 { margin:0; font-weight:700; text-transform:uppercase; letter-spacing:.18em; }
h2 { font-size:11px; color:#c3cad1; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
h2 .g { margin-right:4px; }

/* buttons, pills, tabs */
.btn {
  background:#0c0f12; color:var(--fg); border:1px solid var(--line2); padding:4px 9px; font:inherit; font-size:11px;
  cursor:pointer; text-transform:uppercase; letter-spacing:.1em; border-radius:0;
}
.btn:hover { border-color:var(--fg); } .btn:disabled { opacity:.5; cursor:default; }
.btn.warn { color:var(--amber); border-color:#5a4210; } .btn.bad { color:var(--red); border-color:#5a1d24; }
.btn.ghost { color:var(--dim); } .btn.gear { color:var(--amber); }
.btn.armed { background:var(--red); color:#000; border-color:var(--red); animation:pulse 1s infinite; }
.pill { display:inline-block; padding:1px 7px; border:1px solid currentColor; font-size:10px; font-weight:700; letter-spacing:.12em; text-transform:uppercase; line-height:1.4; white-space:nowrap; }
.pill.fill-green { background:var(--green); color:#000; border-color:var(--green); }
.pill.fill-red { background:var(--red); color:#000; border-color:var(--red); }
.tabs, .dtabs { display:flex; gap:2px; }
.tab { background:none; border:1px solid var(--line2); color:var(--dim); font:inherit; font-size:10px; text-transform:uppercase; letter-spacing:.12em; padding:2px 8px; cursor:pointer; }
.tab.on { color:#000; background:var(--amber); border-color:var(--amber); }
@keyframes pulse { 50% { opacity:.55; } }

/* header */
.dash { display:flex; flex-direction:column; height:100vh; overflow:hidden; }
.hdr { display:flex; align-items:center; gap:18px; padding:8px 12px; border-bottom:1px solid var(--line2); background:rgba(0,0,0,.85); flex:none; }
.brand { display:flex; align-items:center; gap:10px; }
.logo { width:34px; height:34px; border:2px solid var(--amber); color:var(--amber); display:grid; place-items:center; font-size:20px; font-weight:900; text-shadow:0 0 10px rgba(255,176,0,.7); box-shadow:0 0 12px rgba(255,176,0,.25) inset; }
.brand-t { font-weight:800; font-size:15px; letter-spacing:.22em; }
.brand-t .x { color:var(--amber); }
.brand-s { color:var(--dim); font-size:10px; letter-spacing:.16em; }
.hc { flex:1; min-width:0; text-align:center; color:var(--dim); letter-spacing:.2em; font-size:11px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.hr { display:flex; align-items:center; gap:6px; justify-content:flex-end; white-space:nowrap; }
.ph > span { white-space:nowrap; }
.clock { margin-right:6px; } .clock b { font-size:16px; color:var(--fg); }
.badge { font-weight:900; font-size:13px; padding:3px 12px; letter-spacing:.2em; }
.badge.sim { background:var(--amber); color:#000; }
.badge.live { background:var(--red); color:#fff; animation:pulse 1.2s infinite; box-shadow:0 0 14px var(--red); }
.state { font-weight:700; letter-spacing:.14em; margin-right:8px; }

/* ticker */
.ticker { flex:none; height:24px; overflow:hidden; border-bottom:1px solid var(--line); background:#030405; white-space:nowrap; position:relative; }
.ticker-track { display:inline-block; line-height:24px; padding-left:12px; animation:tick 60s linear infinite; }
.ticker:hover .ticker-track { animation-play-state:paused; }
.ticker-track span { margin-right:28px; letter-spacing:.06em; }
@keyframes tick { to { transform:translateX(-50%); } }

/* grid */
.grid {
  flex:1; min-height:0; display:grid; gap:6px; padding:6px;
  grid-template-columns:repeat(12, minmax(0,1fr));
  grid-template-rows:minmax(0,1.3fr) minmax(0,1.15fr) minmax(0,.95fr) minmax(0,.75fr);
  grid-template-areas:
    "w w w w b b b c c c c c"
    "y y y y y y y y y y y y"
    "l l l m m m p p p k k k"
    "t t t t t t t t f f f f";
}
.wallet { grid-area:w; } .bigwin { grid-area:b; } .chart { grid-area:c; } .cycle { grid-area:y; }
.lat { grid-area:l; } .matrix { grid-area:m; } .pos { grid-area:p; } .costs { grid-area:k; } .tape { grid-area:t; } .feeds { grid-area:f; }
.panel { background:var(--panel); border:1px solid var(--line2); padding:8px 10px; display:flex; flex-direction:column; gap:5px; min-height:0; min-width:0; position:relative; }
.panel::before { content:""; position:absolute; top:-1px; left:-1px; width:10px; height:10px; border-top:1px solid var(--amber); border-left:1px solid var(--amber); }
.ph { display:flex; align-items:center; justify-content:space-between; gap:8px; flex:none; }
.sub, .cap { color:var(--dim); font-size:10px; letter-spacing:.14em; text-transform:uppercase; }
.scroll { flex:1; min-height:0; overflow:auto; }
.empty { color:var(--dim); padding:10px 0; letter-spacing:.1em; }
.cv { position:relative; min-height:0; }
.cv.grow { flex:1; min-height:50px; }
.cv canvas { position:absolute; inset:0; width:100%; height:100%; display:block; }
.hero { font-size:58px; font-weight:800; line-height:1; color:var(--amber); text-shadow:0 0 18px rgba(255,176,0,.45); letter-spacing:-.01em; }
.hero.green { color:var(--green); text-shadow:0 0 18px rgba(57,255,106,.45); }
.hero.red { color:var(--red); text-shadow:0 0 18px rgba(255,59,77,.45); }
.stats4 { display:grid; grid-template-columns:repeat(4,1fr); gap:6px; border-top:1px solid var(--line); border-bottom:1px solid var(--line); padding:4px 0; }
.stats4 b, .ctot b { display:block; font-size:16px; }
.bar { height:6px; background:#11161a; border:1px solid var(--line); flex:1; }
.bar-in { height:100%; width:0; background:var(--amber); box-shadow:0 0 8px currentColor; }
.bar-in.green { background:var(--green); } .bar-in.red { background:var(--red); }
.liq { display:flex; align-items:center; gap:8px; }
.liq b { font-size:14px; }

/* biggest win */
.bigwin { overflow:auto; }
.kv.wr .bar { margin:0 4px; align-self:center; }
.bigwin .hero { font-size:56px; margin:0 0 2px; }
.kv { display:flex; justify-content:space-between; gap:10px; border-bottom:1px dashed var(--line); padding:1px 0; align-items:baseline; }
#bw-body { display:flex; flex-direction:column; gap:5px; }
.kv .ell, .ell { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; min-width:0; }
.kv .ell { text-align:right; }

/* chart */
.chart-body { flex:1; min-height:0; display:grid; grid-template-columns:minmax(0,1fr) 150px; gap:8px; }
.ladder { display:flex; flex-direction:column; justify-content:center; font-size:11px; overflow:hidden; }
.lrow { display:flex; justify-content:space-between; position:relative; padding:0 4px; line-height:15px; }
.lrow i { position:absolute; right:0; top:1px; bottom:1px; opacity:.18; }
.lrow.ask { color:var(--red); } .lrow.ask i { background:var(--red); }
.lrow.bid { color:var(--green); } .lrow.bid i { background:var(--green); }
.lmid { text-align:center; color:var(--amber); border-top:1px solid var(--line); border-bottom:1px solid var(--line); margin:2px 0; font-weight:700; }

/* execution cycle */
.fill-ms { letter-spacing:.14em; } .fill-ms b { font-size:20px; text-shadow:0 0 10px rgba(255,176,0,.5); }
.stages { display:grid; grid-template-columns:repeat(6,1fr); gap:6px; flex:none; }
.stage { border:1px solid var(--line2); padding:5px 8px; color:#3d454d; min-width:0; }
.stage .sn { font-size:10px; letter-spacing:.14em; }
.stage .st { font-size:15px; font-weight:800; text-transform:uppercase; letter-spacing:.12em; }
.stage .sm { font-size:18px; font-weight:700; }
.stage .sx { font-size:10px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.stage.done { border-color:rgba(57,255,106,.45); color:rgba(57,255,106,.8); background:rgba(57,255,106,.04); }
.stage.active { border-color:var(--amber); color:var(--amber); background:rgba(255,176,0,.07); box-shadow:0 0 12px rgba(255,176,0,.25) inset; }
.stage.stop { border-color:var(--red); color:var(--red); background:rgba(255,59,77,.06); }

/* tables */
.tbl { width:100%; border-collapse:collapse; font-size:11px; }
.tbl th { white-space:nowrap; position:sticky; top:0; background:#07090b; color:var(--dim); font-weight:400; text-transform:uppercase; letter-spacing:.1em; font-size:10px; text-align:left; padding:2px 5px; border-bottom:1px solid var(--line2); }
.tbl td { padding:2px 5px; border-bottom:1px solid #0f1316; white-space:nowrap; }
.tbl tbody tr:hover { background:rgba(255,176,0,.05); }
.tbl tr.sel { background:rgba(255,176,0,.1); }
.tbl tr.click { cursor:pointer; }
/* only the free-text columns shrink and ellipsize; numbers never truncate */
#cycles td:nth-child(3), #cycles td:nth-child(4), #news td:nth-child(5), #open td:first-child, #closed td:nth-child(2), #models td:first-child, #models td:nth-child(2), .tbl td[colspan] { max-width:0; overflow:hidden; text-overflow:ellipsis; }
#cycles td:nth-child(3) { width:30%; } #cycles td:nth-child(4) { width:24%; }
#news td:nth-child(5) { width:70%; }
#open td:first-child, #closed td:nth-child(2) { width:40%; }
#models td:first-child { width:40%; }
.pos .tbl td, .pos .tbl th, .costs .tbl td, .costs .tbl th { padding:2px 3px; }

/* latency path */
.path { flex:1; display:flex; align-items:center; }
.node { display:flex; flex-direction:column; align-items:center; flex:none; }
.node .nd { width:10px; height:10px; border:1px solid var(--green); background:rgba(57,255,106,.25); box-shadow:0 0 8px rgba(57,255,106,.6); }
.node.slow .nd { border-color:var(--amber); background:rgba(255,176,0,.3); box-shadow:0 0 8px rgba(255,176,0,.7); }
.node.none .nd { border-color:var(--line2); background:none; box-shadow:none; }
.node .nl { font-size:9px; letter-spacing:.02em; color:var(--dim); margin-top:3px; }
.node .np { font-size:9px; color:#4a535c; }
.node .nm { font-size:12px; font-weight:700; }
.link { flex:1; min-width:3px; height:1px; background:linear-gradient(90deg, var(--line2), var(--green), var(--line2)); margin-bottom:12px; }

/* matrix */
.heat { display:grid; gap:2px; font-size:11px; }
.heat > div { padding:2px 4px; text-align:right; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.heat .hd { color:var(--dim); font-size:10px; letter-spacing:.1em; }
.heat .gl { text-align:left; }

/* costs */
.ctot { display:grid; grid-template-columns:repeat(3,1fr); gap:6px; }
.mix { margin-top:6px; display:flex; flex-direction:column; gap:3px; }
.mrow { display:grid; grid-template-columns:90px 1fr 42px; gap:6px; align-items:center; font-size:10px; letter-spacing:.08em; }

/* feeds */
.chips { display:flex; flex-wrap:wrap; gap:4px; align-content:flex-start; }
.chip { display:flex; align-items:center; gap:5px; border:1px solid var(--line2); padding:2px 4px 2px 6px; font-size:11px; }
.chip.off { opacity:.5; }
.dot { width:7px; height:7px; border-radius:50%; background:var(--dim); flex:none; }
.dot.up { background:var(--green); box-shadow:0 0 6px var(--green); } .dot.down { background:var(--red); box-shadow:0 0 6px var(--red); }
.tog { background:none; border:1px solid var(--line2); color:var(--green); font:inherit; font-size:10px; cursor:pointer; padding:0 5px; text-transform:uppercase; }
.chip.off .tog, .tog.offv { color:var(--dim); }

/* drawer */
.scrim { position:fixed; inset:0; background:rgba(0,0,0,.55); z-index:10; }
.drawer { position:fixed; top:0; right:0; bottom:0; width:520px; max-width:100vw; z-index:11; background:#050607; border-left:1px solid var(--amber); box-shadow:-10px 0 40px rgba(0,0,0,.8); display:flex; flex-direction:column; animation:slide .18s ease-out; }
@keyframes slide { from { transform:translateX(40px); opacity:0; } }
.dh { display:flex; align-items:center; gap:10px; padding:10px 12px; border-bottom:1px solid var(--line2); }
.dh h2 { flex:1; font-size:13px; }
.dh .btn { font-size:16px; padding:0 9px; }
.dtabs { padding:8px 12px; border-bottom:1px solid var(--line); flex-wrap:wrap; }
.dbody { flex:1; overflow:auto; padding:8px 12px; }
.dfoot { display:flex; justify-content:space-between; gap:8px; padding:10px 12px; border-top:1px solid var(--line2); }
.note { color:var(--amber); font-size:11px; margin:2px 0 8px; }
.srow { display:grid; grid-template-columns:minmax(0,1fr) 140px; gap:2px 10px; padding:6px 0; border-bottom:1px solid var(--line); }
.srow .sl { font-weight:700; }
.srow .sl .mod { color:var(--amber); margin-left:5px; }
.srow .sh { color:var(--dim); font-size:10px; grid-column:1; }
.srow .sd { color:var(--dim); font-size:10px; display:flex; justify-content:space-between; gap:6px; }
.srow .se { color:var(--red); font-size:10px; grid-column:1 / -1; }
.srow input { width:100%; background:#0b0e11; color:var(--fg); border:1px solid var(--line2); font:inherit; padding:3px 5px; }
.srow input:focus { outline:none; border-color:var(--amber); }
.srow input.changed { border-color:var(--amber); color:var(--amber); }
.srow input.bad { border-color:var(--red); }
.lnk { background:none; border:none; color:var(--cyan); font:inherit; font-size:10px; cursor:pointer; padding:0; }
.frow { display:grid; grid-template-columns:12px minmax(0,1fr) auto; gap:2px 8px; align-items:center; padding:5px 0; border-bottom:1px solid var(--line); }
.frow .fm { grid-column:2; color:var(--dim); font-size:10px; }
.frow .fe { grid-column:2 / -1; color:var(--red); font-size:10px; overflow-wrap:anywhere; }
.xrow { display:flex; justify-content:space-between; padding:5px 0; border-bottom:1px solid var(--line); }
.xrow span { display:flex; gap:14px; }

#toast { position:fixed; bottom:14px; left:50%; transform:translateX(-50%); z-index:20; background:#0b0e11; border:1px solid var(--amber); color:var(--amber); padding:7px 14px; letter-spacing:.08em; }

/* login */
.login { display:grid; place-items:center; height:100vh; margin:0; }
.login-box { width:340px; gap:12px; padding:22px; }
.login-box h1 { font-size:18px; letter-spacing:.22em; display:flex; align-items:center; gap:10px; }
.login-box label { display:flex; flex-direction:column; gap:4px; }
.login-box input { background:#0b0e11; color:var(--fg); border:1px solid var(--line2); padding:7px; font:inherit; font-size:13px; }
.login-box input:focus { outline:none; border-color:var(--amber); }
.login-box .btn { padding:8px; color:#000; background:var(--amber); border-color:var(--amber); font-weight:800; }
#msg { min-height:16px; }

/* under 1100 px: stack and scroll */
@media (max-width:1100px) {
  .dash { height:auto; overflow:auto; }
  .hdr, .hr { flex-wrap:wrap; }
  .grid { grid-template-columns:minmax(0,1fr); grid-template-rows:none; grid-auto-rows:minmax(260px,auto);
    grid-template-areas:"w" "b" "c" "y" "l" "m" "p" "k" "t" "f"; }
  .cycle, .tape { min-height:380px; }
  .stages { grid-template-columns:repeat(3,1fr); }
}
@media (max-height:900px) and (min-width:1101px) {
  .hero { font-size:44px; } .bigwin .hero { font-size:48px; }
  .stage .sm { font-size:15px; } .stage .st { font-size:13px; }
}
/* cycle modal (click a cycle row) */
.modal { position:fixed; inset:0; z-index:30; background:rgba(0,0,0,.72); display:flex; align-items:flex-start; justify-content:center; padding:4vh 12px; overflow:auto; }
.mbox { width:min(1180px, 100%); background:#050607; border:1px solid var(--amber); box-shadow:0 0 40px rgba(0,0,0,.9), 0 0 16px rgba(255,176,0,.18); padding:12px 14px; font-size:11px; }
.mbox h3 { font-size:10px; color:var(--dim); text-transform:uppercase; letter-spacing:.14em; margin:12px 0 5px; border-bottom:1px solid var(--line); padding-bottom:3px; }
.mbox .tbl td { white-space:normal; }
.mh { display:flex; gap:10px; align-items:center; letter-spacing:.06em; } .mh .m-x { margin-left:auto; }
.m-head { font-size:15px; font-weight:800; margin:6px 0 3px; }
.m-body { max-height:7.5em; overflow:auto; white-space:pre-wrap; margin-bottom:3px; }
.m-why { margin-top:6px; border:1px solid var(--amber); background:rgba(255,176,0,.07); color:var(--amber); padding:6px 8px; }
.m-why .dim { margin-top:2px; }
.mgrid { display:grid; grid-template-columns:repeat(4, minmax(0, 1fr)); gap:6px 14px; }
.mgrid .mf > div { overflow:hidden; text-overflow:ellipsis; }
.m-raw pre { max-height:40vh; overflow:auto; font-size:10px; color:var(--dim); white-space:pre-wrap; word-break:break-all; }
@media (max-width: 760px) { .mgrid { grid-template-columns:repeat(2, minmax(0, 1fr)); } }
