/* ═══ QDF HUD shared tokens + chrome (rail, bg, scanlines) ═══ */
:root{
  --bg:#0a0e14; --bg-2:#0f141c; --bg-3:#141a24;
  --grid: rgba(0,255,209,0.06);
  --line: rgba(255,255,255,0.08);
  --line-2: rgba(255,255,255,0.14);
  --txt:#e8edf2; --dim:#7a8693; --dim-2:#4a5562;
  --cyan:#00ffd1; --cyan-glow:rgba(0,255,209,.55);
  --red:#ff3860; --red-glow:rgba(255,56,96,.55);
  --green:#2bd07d; --green-glow:rgba(43,208,125,.5);
  --amber:#ffb86c; --amber-glow:rgba(255,184,108,.55);
  --mono:'JetBrains Mono', ui-monospace, Menlo, monospace;
  --sans:'Space Grotesk', -apple-system, sans-serif;
  --rail-w:56px; --rail-w-open:260px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{ font-family:var(--sans); background:var(--bg); color:var(--txt);
  min-height:100vh; overflow-x:hidden; -webkit-font-smoothing:antialiased; position:relative;
  padding-left:var(--rail-w); transition:padding-left .28s cubic-bezier(.2,.8,.2,1); }
body.rail-open{ padding-left:var(--rail-w-open); }

body::before{content:''; position:fixed; inset:0;
  background-image:linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px);
  background-size:48px 48px; pointer-events:none; z-index:0;
  mask-image: radial-gradient(ellipse at center, black 30%, transparent 90%);}
body::after{content:''; position:fixed; inset:0;
  background: repeating-linear-gradient(0deg, rgba(255,255,255,0.012) 0, rgba(255,255,255,0.012) 1px, transparent 1px, transparent 3px);
  pointer-events:none; z-index:1; animation: scanline 8s linear infinite;}
@keyframes scanline{0%{transform:translateY(0)}100%{transform:translateY(3px)}}
@keyframes pulse{0%,100%{opacity:1; transform:scale(1)} 50%{opacity:.45; transform:scale(0.85)}}
@keyframes blip{0%,100%{opacity:.4} 50%{opacity:1}}

/* ─── RAIL ─── */
.rail{position:fixed; top:0; left:0; bottom:0; width:var(--rail-w); z-index:80;
  background:linear-gradient(180deg, rgba(10,14,20,.98), rgba(10,14,20,.94));
  backdrop-filter: blur(12px); border-right:1px solid var(--line);
  display:flex; flex-direction:column; overflow:hidden;
  transition: width .28s cubic-bezier(.2,.8,.2,1); font-family:var(--mono);}
.rail::before{content:''; position:absolute; top:0; right:0; bottom:0; width:1px;
  background:linear-gradient(180deg, transparent, var(--cyan) 30%, var(--cyan) 70%, transparent);
  opacity:.25; transition:opacity .28s;}
.rail:hover, .rail.open{width:var(--rail-w-open);}
.rail:hover::before, .rail.open::before{opacity:.5;}
.rail-brand{display:flex; align-items:center; gap:10px; padding:18px 16px; border-bottom:1px solid var(--line); min-height:60px; white-space:nowrap;}
.rail-brand .logo{width:34px; height:34px; flex-shrink:0; position:relative; display:flex; align-items:center; justify-content:center;}
.rail-brand .logo img{width:100%; height:100%; object-fit:contain; filter: drop-shadow(0 0 6px var(--cyan-glow));}
.rail-brand .txt{color:var(--cyan); font-size:11px; font-weight:700; letter-spacing:.22em; text-transform:uppercase; opacity:0; transition:opacity .2s .05s;}
.rail:hover .rail-brand .txt, .rail.open .rail-brand .txt{opacity:1;}
.rail-nav{flex:1; padding:10px 0; overflow-y:auto; overflow-x:hidden;}
.rail-nav::-webkit-scrollbar{width:4px} .rail-nav::-webkit-scrollbar-thumb{background:var(--line-2)}
.rail-item{position:relative;}
.rail-link{display:flex; align-items:center; gap:14px; padding:11px 16px; color:var(--dim); text-decoration:none;
  font-size:11px; letter-spacing:.14em; text-transform:uppercase; font-weight:500; white-space:nowrap;
  border-left:2px solid transparent; transition: color .15s, background .15s, border-color .15s;}
.rail-link i{font-size:18px; flex-shrink:0; width:22px; text-align:center; color:var(--dim); transition: color .15s, text-shadow .15s;}
.rail-link .label{opacity:0; transition: opacity .18s .04s;}
.rail:hover .rail-link .label, .rail.open .rail-link .label{opacity:1;}
.rail-link:hover{color:var(--txt); background:rgba(255,255,255,.02);}
.rail-link:hover i{color:var(--cyan); text-shadow:0 0 8px var(--cyan-glow);}
.rail-link.active{color:var(--cyan); border-left-color:var(--cyan); background:rgba(0,255,209,.06); text-shadow:0 0 8px var(--cyan-glow);}
.rail-link.active i{color:var(--cyan); text-shadow:0 0 10px var(--cyan-glow);}
.rail-link .caret{margin-left:auto; font-size:10px; opacity:0; transition: transform .2s, opacity .18s;}
.rail:hover .rail-link .caret, .rail.open .rail-link .caret{opacity:.6;}
.rail-item.expanded > .rail-link .caret{transform: rotate(180deg);}
.rail-sub{max-height:0; overflow:hidden; transition: max-height .25s cubic-bezier(.2,.8,.2,1);
  background:rgba(0,0,0,.25); border-left:2px solid rgba(0,255,209,.15);}
.rail-item.expanded .rail-sub{max-height:500px;}
.rail-sub a{display:flex; align-items:center; gap:10px; padding:8px 16px 8px 52px;
  color:var(--dim); text-decoration:none; font-size:10px; letter-spacing:.1em;
  text-transform:uppercase; font-weight:500; white-space:nowrap; transition: color .15s, background .15s;}
.rail-sub a i{font-size:12px; color:var(--cyan); opacity:.7; width:14px; flex-shrink:0;}
.rail-sub a:hover{color:var(--cyan); background:rgba(0,255,209,.06);}
.rail-sub a.active{color:var(--cyan); background:rgba(0,255,209,.08);}
.rail-foot{border-top:1px solid var(--line); padding:12px 16px 14px; white-space:nowrap;}
.rail-foot .clock{color:var(--cyan); font-size:11px; font-weight:600; letter-spacing:.1em; display:flex; align-items:center; gap:8px;}
.rail-foot .clock::before{content:''; width:6px; height:6px; border-radius:50%; background:var(--cyan); box-shadow:0 0 8px var(--cyan-glow); animation: pulse 1s ease-in-out infinite; flex-shrink:0;}
.rail-foot .clock .t{opacity:0; transition:opacity .2s .05s;}
.rail:hover .rail-foot .clock .t, .rail.open .rail-foot .clock .t{opacity:1;}
.rail-foot .user{margin-top:10px; display:flex; align-items:center; gap:8px; color:var(--dim); font-size:10px; letter-spacing:.1em; text-transform:uppercase;}
.rail-foot .user i{color:var(--cyan); flex-shrink:0; font-size:14px;}
.rail-foot .user .n{opacity:0; transition:opacity .2s .05s; flex:1; overflow:hidden; text-overflow:ellipsis;}
.rail:hover .rail-foot .user .n, .rail.open .rail-foot .user .n{opacity:1;}
.rail-foot .logout{display:flex; align-items:center; gap:8px; margin-top:10px; padding:6px 8px; color:var(--dim); text-decoration:none; font-size:10px; letter-spacing:.12em; text-transform:uppercase; border:1px solid transparent; transition:all .15s;}
.rail-foot .logout i{color:var(--dim); flex-shrink:0; font-size:14px; transition:color .15s;}
.rail-foot .logout .l{opacity:0; transition:opacity .2s .05s;}
.rail:hover .rail-foot .logout .l, .rail.open .rail-foot .logout .l{opacity:1;}
.rail-foot .logout:hover{color:var(--red); border-color:var(--red);}
.rail-foot .logout:hover i{color:var(--red);}
.rail-pin{position:absolute; top:18px; right:-12px; width:24px; height:24px; border-radius:50%;
  background:var(--bg-2); border:1px solid var(--line-2); color:var(--dim); cursor:pointer;
  display:flex; align-items:center; justify-content:center; font-size:10px; opacity:0;
  transition:opacity .2s .1s, color .15s, border-color .15s, transform .2s; z-index:85;}
.rail:hover .rail-pin{opacity:1;}
.rail-pin:hover{color:var(--cyan); border-color:var(--cyan);}
.rail.open .rail-pin{opacity:1; color:var(--cyan); border-color:var(--cyan); transform:rotate(180deg);}
.rail:not(:hover):not(.open) .rail-item.has-sub:hover .rail-sub{
  max-height:500px; position:absolute; left:100%; top:0; min-width:240px;
  background:rgba(10,14,20,.99); border:1px solid var(--cyan); border-left:none;
  box-shadow: 0 0 24px rgba(0,255,209,.18), inset 0 0 18px rgba(0,0,0,.5); padding:6px 0;}
.rail:not(:hover):not(.open) .rail-item.has-sub:hover .rail-sub a{padding:8px 14px;}

/* ─── PAGE HEADER (mono/cyan hairline) ─── */
.page-head{ position:relative; z-index:2; padding:26px 32px 14px; display:flex; align-items:flex-end; gap:24px; border-bottom:1px solid var(--line); }
.page-head .crumbs{ font-family:var(--mono); font-size:10px; letter-spacing:.22em; text-transform:uppercase; color:var(--dim-2); margin-bottom:6px; }
.page-head h1{ margin:0; font-family:var(--mono); font-weight:700; font-size:26px; letter-spacing:.12em; text-transform:uppercase; color:var(--txt); }
.page-head h1 .accent{ color:var(--cyan); text-shadow:0 0 12px var(--cyan-glow); }
.page-head .sub{ margin-top:6px; font-family:var(--mono); font-size:11px; letter-spacing:.1em; color:var(--dim); }
.page-head .spacer{flex:1}
.page-head .status{ display:flex; gap:14px; font-family:var(--mono); font-size:10px; letter-spacing:.16em; text-transform:uppercase; color:var(--dim); align-items:center; padding-bottom:4px; }
.page-head .status .live{ color:var(--cyan); display:flex; align-items:center; gap:6px; }
.page-head .status .live::before{content:''; width:6px; height:6px; border-radius:50%; background:var(--cyan); box-shadow:0 0 8px var(--cyan-glow); animation: pulse 1.1s ease-in-out infinite;}
.page-head .corner{position:absolute; width:14px; height:14px; border:1px solid var(--cyan); opacity:.5}
.page-head .corner.tl{top:8px; left:20px; border-right:none; border-bottom:none}
.page-head .corner.br{bottom:-1px; right:20px; border-left:none; border-top:none}

/* ─── HUD STAT TILES ─── */
.stats{ position:relative; z-index:2; padding:24px 32px 0; display:grid; grid-template-columns: repeat(4, 1fr); gap:16px; }
.tile{ position:relative; background:linear-gradient(180deg, var(--bg-2), var(--bg)); border:1px solid var(--line-2); padding:18px 20px; overflow:hidden;}
.tile::before{content:''; position:absolute; top:0; left:0; right:0; height:1px; background:linear-gradient(90deg, transparent, var(--cyan), transparent); opacity:.6;}
.tile .k{ font-family:var(--mono); font-size:10px; letter-spacing:.2em; color:var(--dim); text-transform:uppercase; display:flex; align-items:center; gap:8px;}
.tile .k i{color:var(--cyan); font-size:12px;}
.tile .v{ font-family:var(--mono); font-weight:700; font-size:32px; letter-spacing:.04em; margin-top:10px; color:var(--txt);}
.tile .v.accent{color:var(--cyan); text-shadow:0 0 14px var(--cyan-glow);}
.tile .v.pos{color:var(--green); text-shadow:0 0 12px var(--green-glow);}
.tile .v.neg{color:var(--red); text-shadow:0 0 12px var(--red-glow);}
.tile .spark{position:absolute; right:16px; bottom:14px; opacity:.6}
.tile .corner-br{position:absolute; bottom:6px; right:6px; width:10px; height:10px; border-right:1px solid var(--cyan); border-bottom:1px solid var(--cyan); opacity:.4}

/* ─── PANEL ─── */
.panel{ position:relative; z-index:2; margin:24px 32px; background:linear-gradient(180deg, var(--bg-2), var(--bg)); border:1px solid var(--line-2); }
.panel-head{ display:flex; align-items:center; gap:12px; padding:14px 20px; border-bottom:1px solid var(--line); font-family:var(--mono); font-size:11px; letter-spacing:.18em; text-transform:uppercase; color:var(--txt);}
.panel-head i{ color:var(--cyan); text-shadow:0 0 8px var(--cyan-glow); font-size:14px; }
.panel-head .count{ margin-left:auto; display:inline-flex; align-items:center; gap:6px; padding:3px 10px; font-size:10px; color:var(--cyan); border:1px solid rgba(0,255,209,.3); background:rgba(0,255,209,.05);}
.panel-head .count.amber{color:var(--amber); border-color:rgba(255,184,108,.3); background:rgba(255,184,108,.05);}
.panel-head .count.dim{color:var(--dim); border-color:var(--line-2); background:transparent;}
.panel-sub{ padding:10px 20px 0; font-family:var(--mono); font-size:10px; letter-spacing:.08em; color:var(--dim-2); text-transform:uppercase; }
.panel-body{ padding:18px 20px 20px; }

/* ─── FILTER GRID ─── */
.filters{ display:grid; grid-template-columns: repeat(4, 1fr); gap:14px 18px; }
.filters .field{ display:flex; flex-direction:column; gap:6px; }
.filters label{ font-family:var(--mono); font-size:9px; letter-spacing:.2em; color:var(--dim); text-transform:uppercase; }
.filters .ctrl{ background:var(--bg); border:1px solid var(--line-2); color:var(--txt); padding:8px 10px; font-family:var(--mono); font-size:12px; letter-spacing:.04em; outline:none; transition:border-color .15s, box-shadow .15s;}
.filters .ctrl:focus{ border-color:var(--cyan); box-shadow:0 0 0 1px rgba(0,255,209,.2); }
.filters select.ctrl{ appearance:none; background-image:linear-gradient(45deg, transparent 50%, var(--cyan) 50%), linear-gradient(135deg, var(--cyan) 50%, transparent 50%); background-position: calc(100% - 14px) 50%, calc(100% - 9px) 50%; background-size: 5px 5px; background-repeat: no-repeat; padding-right:28px;}
.filter-actions{ grid-column: 1 / -1; display:flex; gap:10px; justify-content:flex-end; padding-top:4px; }
.btn{ font-family:var(--mono); font-size:10px; letter-spacing:.2em; text-transform:uppercase; padding:9px 16px; border:1px solid var(--line-2); background:transparent; color:var(--dim); cursor:pointer; transition:all .15s; display:inline-flex; align-items:center; gap:8px;}
.btn:hover{ color:var(--txt); border-color:var(--txt); }
.btn.primary{ color:var(--cyan); border-color:var(--cyan); box-shadow: inset 0 0 14px rgba(0,255,209,.06); }
.btn.primary:hover{ background:rgba(0,255,209,.1); text-shadow:0 0 8px var(--cyan-glow); }

/* ─── TABS ─── */
.tabs{ display:flex; gap:2px; padding:0 20px; border-bottom:1px solid var(--line); background:rgba(0,0,0,.25);}
.tab{ font-family:var(--mono); font-size:10px; letter-spacing:.2em; text-transform:uppercase; padding:14px 18px; color:var(--dim); background:transparent; border:none; border-bottom:2px solid transparent; cursor:pointer; transition:all .15s; display:inline-flex; align-items:center; gap:8px;}
.tab:hover{color:var(--txt)}
.tab.active{ color:var(--cyan); border-bottom-color:var(--cyan); text-shadow:0 0 8px var(--cyan-glow);}
.tab .badge{ font-size:9px; padding:2px 8px; border:1px solid currentColor; opacity:.7;}
.tab-pane{display:none; padding:0} .tab-pane.active{display:block}

/* ─── HUD DATA GRID (table) ─── */
.grid-wrap{ overflow-x:auto; }
.grid-wrap::-webkit-scrollbar{height:8px}
.grid-wrap::-webkit-scrollbar-thumb{background:var(--line-2)}
table.hud{ width:100%; border-collapse:separate; border-spacing:0; font-family:var(--mono); font-size:11px; letter-spacing:.04em; }
table.hud thead th{ position:sticky; top:0; background:rgba(10,14,20,.96); color:var(--dim); font-size:9px; letter-spacing:.2em; text-transform:uppercase; padding:12px 14px; text-align:left; font-weight:500; border-bottom:1px solid var(--cyan); box-shadow: 0 1px 0 rgba(0,255,209,.2); white-space:nowrap;}
table.hud thead th.sortable{cursor:pointer; transition:color .15s;}
table.hud thead th.sortable:hover{color:var(--cyan);}
table.hud thead th .bi{font-size:8px; opacity:.4; margin-left:4px;}
table.hud tbody tr{ border-bottom:1px solid var(--line); transition: background .12s, box-shadow .12s; }
table.hud tbody td{ padding:14px 14px; color:var(--txt); border-bottom:1px solid var(--line); vertical-align:middle; white-space:nowrap;}
table.hud tbody tr:hover td{background:rgba(0,255,209,.03); box-shadow: inset 2px 0 0 var(--cyan);}
table.hud .id{ color:var(--cyan); font-weight:700; letter-spacing:.06em; }
table.hud .strat{ color:var(--dim); letter-spacing:.1em; text-transform:uppercase; font-size:10px; }
table.hud .tick{ color:var(--txt); font-weight:700; letter-spacing:.1em; }
table.hud .num{ font-variant-numeric: tabular-nums; }

/* sentiment pills */
.pill{ display:inline-flex; align-items:center; gap:6px; padding:3px 10px; font-size:9px; letter-spacing:.2em; text-transform:uppercase; border:1px solid; font-weight:600;}
.pill::before{content:''; width:5px; height:5px; border-radius:50%; background:currentColor;}
.pill.long, .pill.bullish, .pill.buy{ color:var(--green); border-color:rgba(43,208,125,.4); background:rgba(43,208,125,.06);}
.pill.short, .pill.bearish, .pill.sell{ color:var(--red); border-color:rgba(255,56,96,.4); background:rgba(255,56,96,.06);}
.pill.neutral{ color:var(--dim); border-color:var(--line-2);}
.pill.win{color:var(--cyan); border-color:rgba(0,255,209,.4); background:rgba(0,255,209,.08);}
.pill.loss{color:var(--red); border-color:rgba(255,56,96,.4); background:rgba(255,56,96,.06);}
.pnl.pos{color:var(--green); text-shadow:0 0 8px var(--green-glow);}
.pnl.neg{color:var(--red); text-shadow:0 0 8px var(--red-glow);}

/* open-row pulse */
table.hud tbody tr.open-row td:first-child{ position:relative; }
table.hud tbody tr.open-row td:first-child::before{content:''; position:absolute; left:0; top:8px; bottom:8px; width:2px; background:var(--amber); box-shadow:0 0 8px var(--amber-glow); animation: blip 1.6s ease-in-out infinite;}

.empty{ padding:48px 20px; text-align:center; color:var(--dim); font-family:var(--mono); font-size:11px; letter-spacing:.15em; text-transform:uppercase;}
.empty i{font-size:28px; color:var(--cyan); opacity:.4; display:block; margin-bottom:10px;}
.spinner{ display:inline-block; width:18px; height:18px; border:2px solid var(--line-2); border-top-color:var(--cyan); border-radius:50%; animation: spin .8s linear infinite;}
@keyframes spin{to{transform:rotate(360deg)}}

/* confidence meter inline */
.meter{ display:inline-flex; align-items:center; gap:8px; }
.meter .bar{ width:64px; height:4px; background:var(--bg-3); border:1px solid var(--line); position:relative; overflow:hidden;}
.meter .bar span{ position:absolute; inset:0 auto 0 0; background:linear-gradient(90deg, var(--cyan), var(--cyan)); box-shadow: 0 0 8px var(--cyan-glow);}
.meter .pct{ color:var(--cyan); font-size:10px; letter-spacing:.1em;}

/* mobile */
@media (max-width: 980px){
  .stats{grid-template-columns: repeat(2,1fr)}
  .filters{grid-template-columns: repeat(2,1fr)}
  .page-head{padding:20px 18px 10px}
  .panel{margin:18px 14px}
  .stats{padding:18px 14px 0}
}
