/* AQS Terminal — design tokens (generated from the AQS Terminal design system, tokens.json) */
:root, :root[data-theme="dark"] { color-scheme: dark; --bg:#0b0f14;--surface:#121821;--surface-raised:#18202b;--surface-sunken:#080b0f;--border:#243040;--border-strong:#5a6d86;--ink:#e6edf5;--ink-muted:#93a1b3;--ink-faint:#7b8a9e;--accent:#f2b134;--on-accent:#1a1200;--accent-ink:#f2b134;--accent-soft:#3a2c0c;--focus-ring:#ffd166;--gain:#3ddc97;--loss:#ff7a6b;--gain-bg:#0f2e22;--loss-bg:#3a1517;--pass-bg:#12352a;--pass-fg:#7ce8b8;--fail-bg:#431b1d;--fail-fg:#ffaaa5;--warn-bg:#3d3010;--warn-fg:#f5d27a;--run-bg:#10304f;--run-fg:#8cc4ff;--idle-bg:#222b37;--idle-fg:#b3bfcd;--cat-1:#56b4e9;--cat-2:#e69f00;--cat-3:#2ec4a6;--cat-4:#e8d84a;--cat-5:#8aa8ff;--cat-6:#ff8a5c;--cat-7:#d68fd0;--cat-8:#a3b1c2;--family-a:var(--cat-1);--family-b:var(--cat-7);--dir-long:var(--gain);--dir-short:var(--loss);--dir-both:var(--cat-5);--interval-1d:var(--cat-5);--interval-1h:var(--cat-3);--interval-30min:var(--cat-2);--asset-tech:var(--cat-1);--asset-financial:var(--cat-5);--asset-healthcare:var(--cat-3);--asset-energy:var(--cat-2);--asset-commodity:var(--cat-4);--asset-leveraged:var(--cat-6);--asset-crypto:var(--cat-7);--asset-other:var(--cat-8);--heat-n2:#6a2427;--heat-n1:#3d1f22;--heat-0:#1b222c;--heat-p1:#123a2c;--heat-p2:#185c41;--heat-p3:#1b7050;--shadow-pop:0 8px 24px rgba(0,0,0,0.5); --space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--space-8:32px;--radius-sm:4px;--radius-md:6px;--radius-lg:8px;--radius-pill:999px;--font-sans:"IBM Plex Sans", "Segoe UI", system-ui, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, Consolas, monospace; }
@media (prefers-color-scheme: light) { :root:not([data-theme="dark"]) { color-scheme: light; --bg:#f4f6f9;--surface:#ffffff;--surface-raised:#f8fafc;--surface-sunken:#eef1f5;--border:#d6dce4;--border-strong:#7c8899;--ink:#111826;--ink-muted:#4f5d70;--ink-faint:#647184;--accent:#f2b134;--on-accent:#1a1200;--accent-ink:#8a5a00;--accent-soft:#fdf1d6;--focus-ring:#8a5a00;--gain:#0b7a4b;--loss:#c62f2f;--gain-bg:#dcf5e9;--loss-bg:#fde4e4;--pass-bg:#dff4e4;--pass-fg:#14532d;--fail-bg:#fde2e2;--fail-fg:#7f1d1d;--warn-bg:#fdf0cf;--warn-fg:#6b4a00;--run-bg:#dbe8fb;--run-fg:#17407f;--idle-bg:#e8eaee;--idle-fg:#3b4350;--cat-1:#0072b2;--cat-2:#a35f00;--cat-3:#00796b;--cat-4:#7a6c00;--cat-5:#3b5bdb;--cat-6:#c4461b;--cat-7:#9c4f96;--cat-8:#5f6b7a;--family-a:var(--cat-1);--family-b:var(--cat-7);--dir-long:var(--gain);--dir-short:var(--loss);--dir-both:var(--cat-5);--interval-1d:var(--cat-5);--interval-1h:var(--cat-3);--interval-30min:var(--cat-2);--asset-tech:var(--cat-1);--asset-financial:var(--cat-5);--asset-healthcare:var(--cat-3);--asset-energy:var(--cat-2);--asset-commodity:var(--cat-4);--asset-leveraged:var(--cat-6);--asset-crypto:var(--cat-7);--asset-other:var(--cat-8);--heat-n2:#f6c1c1;--heat-n1:#fbe1e1;--heat-0:#eef1f5;--heat-p1:#d7f2e3;--heat-p2:#a9e3c4;--heat-p3:#76d1a6;--shadow-pop:0 8px 24px rgba(17,24,38,0.12); } }
:root[data-theme="light"] { color-scheme: light; --bg:#f4f6f9;--surface:#ffffff;--surface-raised:#f8fafc;--surface-sunken:#eef1f5;--border:#d6dce4;--border-strong:#7c8899;--ink:#111826;--ink-muted:#4f5d70;--ink-faint:#647184;--accent:#f2b134;--on-accent:#1a1200;--accent-ink:#8a5a00;--accent-soft:#fdf1d6;--focus-ring:#8a5a00;--gain:#0b7a4b;--loss:#c62f2f;--gain-bg:#dcf5e9;--loss-bg:#fde4e4;--pass-bg:#dff4e4;--pass-fg:#14532d;--fail-bg:#fde2e2;--fail-fg:#7f1d1d;--warn-bg:#fdf0cf;--warn-fg:#6b4a00;--run-bg:#dbe8fb;--run-fg:#17407f;--idle-bg:#e8eaee;--idle-fg:#3b4350;--cat-1:#0072b2;--cat-2:#a35f00;--cat-3:#00796b;--cat-4:#7a6c00;--cat-5:#3b5bdb;--cat-6:#c4461b;--cat-7:#9c4f96;--cat-8:#5f6b7a;--family-a:var(--cat-1);--family-b:var(--cat-7);--dir-long:var(--gain);--dir-short:var(--loss);--dir-both:var(--cat-5);--interval-1d:var(--cat-5);--interval-1h:var(--cat-3);--interval-30min:var(--cat-2);--asset-tech:var(--cat-1);--asset-financial:var(--cat-5);--asset-healthcare:var(--cat-3);--asset-energy:var(--cat-2);--asset-commodity:var(--cat-4);--asset-leveraged:var(--cat-6);--asset-crypto:var(--cat-7);--asset-other:var(--cat-8);--heat-n2:#f6c1c1;--heat-n1:#fbe1e1;--heat-0:#eef1f5;--heat-p1:#d7f2e3;--heat-p2:#a9e3c4;--heat-p3:#76d1a6;--shadow-pop:0 8px 24px rgba(17,24,38,0.12); }

/* ===== Components (AQS Terminal) ===== */

/* AQS Terminal — component styles. Every value comes from tokens.css custom properties. */
.aq, .aq * { box-sizing: border-box; }
.aq { font-family: var(--font-sans); font-size: 14px; line-height: 20px; color: var(--ink); background: var(--bg); }
body { margin: 0; background: var(--bg); color: var(--ink); font-family: var(--font-sans); font-size: 14px; line-height: 20px; }
.aq-row { display: flex; flex-wrap: wrap; gap: var(--space-2); align-items: center; padding: var(--space-4); }
.aq-stack { display: flex; flex-direction: column; gap: var(--space-3); padding: var(--space-4); }
.aq-muted { color: var(--ink-muted); }
.aq-faint { color: var(--ink-faint); }
.aq-mono, .aq-num { font-family: var(--font-mono); font-variant-numeric: tabular-nums; }
.aq-label { font-size: 11px; line-height: 16px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-muted); }
:where(.aq) :focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 2px; }

/* ---------- Panel ---------- */
.aq-panel { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); }
.aq-panel-head { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3);
  padding: var(--space-3) var(--space-4); border-bottom: 1px solid var(--border); }
.aq-panel-title { margin: 0; font-size: 15px; line-height: 22px; font-weight: 600; }
.aq-panel-body { padding: var(--space-4); }

/* ---------- Button ---------- */
.aq-btn { display: inline-flex; align-items: center; gap: var(--space-2); height: 32px; padding: 0 var(--space-3);
  font: 500 13px/1 var(--font-sans); border-radius: var(--radius-md); border: 1px solid var(--border-strong);
  background: var(--surface); color: var(--ink); cursor: pointer; white-space: nowrap; }
.aq-btn:hover { background: var(--surface-raised); }
.aq-btn-primary { background: var(--accent); border-color: var(--accent); color: var(--on-accent); font-weight: 600; }
.aq-btn-primary:hover { background: var(--accent); filter: brightness(1.08); }
.aq-btn-ghost { border-color: transparent; background: transparent; color: var(--ink-muted); }
.aq-btn-ghost:hover { color: var(--ink); background: var(--surface-raised); }
.aq-btn-danger { background: var(--fail-bg); border-color: var(--fail-bg); color: var(--fail-fg); }
.aq-btn-sm { height: 26px; padding: 0 var(--space-2); font-size: 12px; }
.aq-btn:disabled { opacity: .45; cursor: not-allowed; filter: none; }
.aq-kbd { font: 500 11px/1 var(--font-mono); padding: 2px 5px; border-radius: var(--radius-sm); background: var(--surface-sunken); color: var(--ink-muted); }

/* ---------- StatusBadge ---------- */
.aq-status { display: inline-flex; align-items: center; gap: 6px; height: 22px; padding: 0 var(--space-2);
  border-radius: var(--radius-sm); font: 600 11px/1 var(--font-mono); letter-spacing: .04em; white-space: nowrap; }
.aq-status::before { content: ""; width: 7px; height: 7px; border-radius: var(--radius-pill); background: currentColor; }
.aq-status-pass { background: var(--pass-bg); color: var(--pass-fg); }
.aq-status-fail { background: var(--fail-bg); color: var(--fail-fg); }
.aq-status-warn { background: var(--warn-bg); color: var(--warn-fg); }
.aq-status-running { background: var(--run-bg); color: var(--run-fg); }
.aq-status-running::before { animation: aq-pulse 1.2s ease-in-out infinite; }
.aq-status-queued, .aq-status-skipped, .aq-status-cancelled { background: var(--idle-bg); color: var(--idle-fg); }
.aq-status-skipped::before, .aq-status-cancelled::before { background: transparent; border: 1.5px solid currentColor; }
@keyframes aq-pulse { 50% { opacity: .3; } }
@media (prefers-reduced-motion: reduce) { .aq-status-running::before { animation: none; } }

/* ---------- SymbolChip ---------- */
.aq-sym { display: inline-flex; align-items: center; gap: 6px; height: 24px; padding: 0 var(--space-2);
  border: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--surface-raised);
  font: 600 12px/1 var(--font-mono); color: var(--ink); white-space: nowrap; }
.aq-sym-dot { width: 8px; height: 8px; border-radius: 2px; background: var(--asset-other); flex: none; }
.aq-sym[data-asset="tech"] .aq-sym-dot { background: var(--asset-tech); }
.aq-sym[data-asset="financial"] .aq-sym-dot { background: var(--asset-financial); }
.aq-sym[data-asset="healthcare"] .aq-sym-dot { background: var(--asset-healthcare); }
.aq-sym[data-asset="energy"] .aq-sym-dot { background: var(--asset-energy); }
.aq-sym[data-asset="commodity"] .aq-sym-dot { background: var(--asset-commodity); }
.aq-sym[data-asset="leveraged"] .aq-sym-dot { background: var(--asset-leveraged); }
.aq-sym[data-asset="crypto"] .aq-sym-dot { background: var(--asset-crypto); }

/* ---------- IntervalTag ---------- */
.aq-iv { display: inline-flex; align-items: center; height: 20px; padding: 0 6px; border-radius: var(--radius-sm);
  font: 600 11px/1 var(--font-mono); border: 1px solid currentColor; color: var(--ink-muted); }
.aq-iv[data-iv="1d"] { color: var(--interval-1d); }
.aq-iv[data-iv="1h"] { color: var(--interval-1h); }
.aq-iv[data-iv="30min"] { color: var(--interval-30min); }

/* ---------- ModelTag ---------- */
.aq-model { display: inline-flex; align-items: center; gap: 6px; font: 500 12px/1 var(--font-mono); color: var(--ink); white-space: nowrap; }
.aq-model::before { content: ""; width: 8px; height: 8px; border-radius: var(--radius-pill); background: var(--family-a); }
.aq-model[data-family="b"]::before { background: var(--family-b); border-radius: 1px; transform: rotate(45deg) scale(.85); }
.aq-buy { display: inline-flex; align-items: center; gap: 4px; font: 500 12px/1 var(--font-mono); color: var(--ink-muted); white-space: nowrap; }
.aq-buy::before { font-size: 10px; }
.aq-buy[data-dir="long"]::before { content: "▲"; color: var(--dir-long); }
.aq-buy[data-dir="short"]::before { content: "▼"; color: var(--dir-short); }
.aq-buy[data-dir="both"]::before { content: "◆"; color: var(--dir-both); }

/* ---------- Pnl / Delta ---------- */
.aq-pnl { font: 500 13px/18px var(--font-mono); font-variant-numeric: tabular-nums; white-space: nowrap; color: var(--ink-muted); }
.aq-pnl-up { color: var(--gain); }
.aq-pnl-down { color: var(--loss); }
.aq-pnl-up::before { content: "▲ "; font-size: 9px; vertical-align: 1px; }
.aq-pnl-down::before { content: "▼ "; font-size: 9px; vertical-align: 1px; }
.aq-pnl-pill { padding: 2px 6px; border-radius: var(--radius-sm); }
.aq-pnl-pill.aq-pnl-up { background: var(--gain-bg); }
.aq-pnl-pill.aq-pnl-down { background: var(--loss-bg); }

/* ---------- KpiTile ---------- */
.aq-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: var(--space-3); }
.aq-kpi { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: var(--space-3) var(--space-4);
  display: flex; flex-direction: column; gap: var(--space-1); min-width: 0; }
.aq-kpi-value { font: 600 26px/32px var(--font-mono); letter-spacing: -.01em; font-variant-numeric: tabular-nums; }
.aq-kpi-foot { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); font-size: 12px; color: var(--ink-faint); }
.aq-spark { width: 72px; height: 20px; flex: none; }
.aq-spark path { fill: none; stroke-width: 1.5; stroke: var(--ink-muted); }
.aq-spark.up path { stroke: var(--gain); }
.aq-spark.down path { stroke: var(--loss); }

/* ---------- FilterBar ---------- */
.aq-filters { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); padding: var(--space-3) var(--space-4); border-bottom: 1px solid var(--border); }
.aq-search { position: relative; flex: 1 1 200px; max-width: 280px; }
.aq-search input, .aq .aq-search input[type=text] { padding-left: 28px; width: 100%; }
.aq-search::before { content: "⌕"; position: absolute; left: 9px; top: 50%; transform: translateY(-52%); color: var(--ink-faint); font-size: 15px; }
.aq-chip { display: inline-flex; align-items: center; gap: 6px; height: 28px; padding: 0 var(--space-3); border-radius: var(--radius-pill);
  border: 1px solid var(--border-strong); background: transparent; color: var(--ink-muted); font: 500 12px/1 var(--font-sans); cursor: pointer; }
.aq-chip:hover { color: var(--ink); }
.aq-chip[aria-pressed="true"] { background: var(--accent-soft); border-color: var(--accent); color: var(--ink); }
.aq-chip-count { font: 600 11px/1 var(--font-mono); color: var(--ink-faint); }
.aq-chip[aria-pressed="true"] .aq-chip-count { color: var(--accent-ink); }
.aq-divider-v { width: 1px; align-self: stretch; background: var(--border); margin: 0 var(--space-1); }

/* ---------- Fields ---------- */
.aq-field { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.aq-field-hint { font-size: 12px; color: var(--ink-faint); }
.aq-input, .aq-select, .aq input[type=text], .aq input[type=number], .aq input[type=date], .aq select {
  height: 32px; padding: 0 var(--space-3); font: 400 13px/1 var(--font-sans); color: var(--ink);
  background: var(--surface-sunken); border: 1px solid var(--border-strong); border-radius: var(--radius-md); min-width: 0; }
.aq input[type=number], .aq-input.num { font-family: var(--font-mono); text-align: right; }
.aq input::placeholder { color: var(--ink-faint); }
.aq-field.changed .aq-input, .aq-field.changed input { border-color: var(--accent); }
.aq-field.changed .aq-label::after { content: "\00a0●"; color: var(--accent-ink); font-size: 9px; letter-spacing: 0; vertical-align: 1px; }
.aq-toggle { display: inline-flex; align-items: center; gap: var(--space-2); cursor: pointer; font-size: 13px; }
.aq .aq-toggle input[type=checkbox] { appearance: none; width: 32px; height: 18px; border-radius: var(--radius-pill); background: var(--surface-sunken);
  border: 1px solid var(--border-strong); position: relative; margin: 0; cursor: pointer; }
.aq .aq-toggle input[type=checkbox]::after { content: ""; position: absolute; top: 2px; left: 2px; width: 12px; height: 12px; border-radius: var(--radius-pill); background: var(--ink-muted); transition: transform .15s; }
.aq .aq-toggle input[type=checkbox]:checked { background: var(--accent); border-color: var(--accent); }
.aq .aq-toggle input[type=checkbox]:checked::after { transform: translateX(14px); background: var(--on-accent); }
.aq-settings { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: var(--space-4) var(--space-3); align-items: end; }
.aq-section-title { margin: 0 0 var(--space-3); display: flex; align-items: center; gap: var(--space-2); font: 600 13px/18px var(--font-sans); }
.aq-stage-id { font: 600 11px/1 var(--font-mono); padding: 3px 6px; border-radius: var(--radius-sm); background: var(--surface-sunken); color: var(--accent-ink); }

/* ---------- DataTable ---------- */
.aq-table-wrap { overflow: auto; max-height: var(--aq-table-max, none); }
.aq-table { width: 100%; border-collapse: separate; border-spacing: 0; font-size: 13px; line-height: 18px; }
.aq-table th { position: sticky; top: 0; z-index: 1; background: var(--surface-raised); text-align: left;
  padding: var(--space-2) var(--space-3); border-bottom: 1px solid var(--border);
  font: 600 11px/16px var(--font-sans); letter-spacing: .06em; text-transform: uppercase; color: var(--ink-muted); white-space: nowrap; }
.aq-table th[aria-sort] { cursor: pointer; user-select: none; }
.aq-table th[aria-sort]::after { content: " ↕"; color: var(--ink-faint); }
.aq-table th[aria-sort="ascending"]::after { content: " ↑"; color: var(--accent-ink); }
.aq-table th[aria-sort="descending"]::after { content: " ↓"; color: var(--accent-ink); }
.aq-table td { padding: 7px var(--space-3); border-bottom: 1px solid var(--border); vertical-align: middle; white-space: nowrap; }
.aq-table .r, .aq-table td.num { text-align: right; font-family: var(--font-mono); font-variant-numeric: tabular-nums; }
.aq-table tbody tr:hover td { background: var(--surface-raised); }
.aq-table tbody tr[aria-selected="true"] td { background: var(--accent-soft); }
.aq-table tbody tr.is-fail td:first-child { box-shadow: inset 3px 0 0 var(--fail-fg); }
.aq-table-compact td { padding: 4px var(--space-2); }
.aq-table-foot { display: flex; justify-content: space-between; align-items: center; padding: var(--space-2) var(--space-4); font-size: 12px; color: var(--ink-faint); }
.aq-rank { font: 600 11px/1 var(--font-mono); color: var(--ink-faint); }
.aq-bar { display: inline-block; width: 56px; height: 6px; border-radius: var(--radius-pill); background: var(--surface-sunken); vertical-align: middle; margin-right: 6px; overflow: hidden; }
.aq-bar > i { display: block; height: 100%; background: var(--gain); border-radius: inherit; }
.aq-bar.neg > i { background: var(--loss); }

/* ---------- StageTrack ---------- */
.aq-track { display: flex; gap: 2px; align-items: stretch; overflow-x: auto; }
.aq-step { flex: 1 1 0; min-width: 64px; padding: var(--space-2); border-radius: var(--radius-sm); background: var(--idle-bg); color: var(--idle-fg);
  display: flex; flex-direction: column; gap: 2px; }
.aq-step b { font: 600 12px/16px var(--font-mono); }
.aq-step span { font: 400 11px/14px var(--font-mono); opacity: .9; }
.aq-step.pass { background: var(--pass-bg); color: var(--pass-fg); }
.aq-step.fail { background: var(--fail-bg); color: var(--fail-fg); }
.aq-step.warn { background: var(--warn-bg); color: var(--warn-fg); }
.aq-step.running { background: var(--run-bg); color: var(--run-fg); }
.aq-step.skipped { background: transparent; border: 1px dashed var(--border-strong); color: var(--ink-faint); }
.aq-track-mini { display: inline-flex; gap: 2px; vertical-align: middle; }
.aq-track-mini i { width: 9px; height: 14px; border-radius: 2px; background: var(--idle-bg); }
.aq-track-mini i.pass { background: var(--pass-fg); }
.aq-track-mini i.fail { background: var(--fail-fg); }
.aq-track-mini i.warn { background: var(--warn-fg); }
.aq-track-mini i.running { background: var(--run-fg); }
.aq-track-mini i.skipped { background: transparent; border: 1px solid var(--border-strong); }

/* ---------- Heatmap ---------- */
.aq-heat { border-collapse: separate; border-spacing: 2px; font: 500 12px/1 var(--font-mono); }
.aq-heat th { font: 600 11px/14px var(--font-mono); color: var(--ink-muted); padding: 4px 6px; text-align: center; white-space: nowrap; }
.aq-heat th.row { text-align: left; }
.aq-heat td { width: 52px; height: 30px; text-align: center; border-radius: var(--radius-sm); color: var(--ink); background: var(--heat-0); font-variant-numeric: tabular-nums; }
.aq-heat td.n2 { background: var(--heat-n2); } .aq-heat td.n1 { background: var(--heat-n1); }
.aq-heat td.p1 { background: var(--heat-p1); } .aq-heat td.p2 { background: var(--heat-p2); } .aq-heat td.p3 { background: var(--heat-p3); font-weight: 700; }
.aq-heat td.none { background: var(--surface-sunken); color: var(--ink-faint); }
.aq-legend { display: flex; align-items: center; gap: var(--space-1); font: 500 11px/1 var(--font-mono); color: var(--ink-muted); }
.aq-legend i { width: 22px; height: 10px; border-radius: 2px; }

/* ---------- LogViewer ---------- */
.aq-log { margin: 0; background: var(--surface-sunken); border: 1px solid var(--border); border-radius: var(--radius-md);
  padding: var(--space-3); font: 400 12px/18px var(--font-mono); color: var(--ink-muted); overflow: auto; max-height: 260px; white-space: pre-wrap; }
.aq-log .ts { color: var(--ink-faint); }
.aq-log .ok { color: var(--gain); }
.aq-log .err { color: var(--loss); font-weight: 600; }
.aq-log .wrn { color: var(--warn-fg); }
.aq-log .hi { color: var(--ink); }

/* ---------- Tabs ---------- */
.aq-tabs { display: flex; gap: var(--space-1); border-bottom: 1px solid var(--border); padding: 0 var(--space-4); }
.aq-tab { background: none; border: 0; border-bottom: 2px solid transparent; padding: var(--space-3) var(--space-2); margin-bottom: -1px;
  font: 500 13px/1 var(--font-sans); color: var(--ink-muted); cursor: pointer; display: inline-flex; gap: 6px; align-items: center; }
.aq-tab:hover { color: var(--ink); }
.aq-tab[aria-selected="true"] { color: var(--accent-ink); border-bottom-color: var(--accent); font-weight: 600; }

/* ---------- AppShell ---------- */
.aq-shell { display: grid; grid-template-columns: 208px 1fr; min-height: 100vh; background: var(--bg); }
.aq-side { background: var(--surface); border-right: 1px solid var(--border); padding: var(--space-4) var(--space-3); display: flex; flex-direction: column; gap: var(--space-1); }
.aq-brand { display: flex; align-items: center; gap: var(--space-2); padding: 0 var(--space-2) var(--space-4); font: 700 14px/1 var(--font-mono); letter-spacing: .04em; }
.aq-brand-mark { width: 18px; height: 18px; border-radius: var(--radius-sm); background: var(--accent); }
.aq-nav { display: flex; align-items: center; gap: var(--space-2); padding: var(--space-2); border-radius: var(--radius-md); color: var(--ink-muted); text-decoration: none; font-size: 13px; font-weight: 500; }
.aq-nav:hover { background: var(--surface-raised); color: var(--ink); }
.aq-nav[aria-current="page"] { background: var(--accent-soft); color: var(--ink); }
.aq-nav[aria-current="page"] .aq-nav-ico { color: var(--accent-ink); }
.aq-nav-ico { width: 16px; text-align: center; font-family: var(--font-mono); }
.aq-nav-count { margin-left: auto; font: 600 11px/1 var(--font-mono); color: var(--ink-faint); }
.aq-main { min-width: 0; display: flex; flex-direction: column; }
.aq-top { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); padding: var(--space-3) var(--space-6);
  border-bottom: 1px solid var(--border); background: var(--surface); }
.aq-top h1 { margin: 0; font-size: 20px; line-height: 28px; font-weight: 600; }
.aq-content { padding: var(--space-6); display: flex; flex-direction: column; gap: var(--space-6); }
.aq-grid-2 { display: grid; grid-template-columns: 2fr 1fr; gap: var(--space-6); }
@media (max-width: 900px) {
  .aq-shell { grid-template-columns: 1fr; }
  .aq-side { flex-direction: row; overflow-x: auto; border-right: 0; border-bottom: 1px solid var(--border); padding: var(--space-2) var(--space-4); }
  .aq-brand { padding: 0 var(--space-2) 0 0; }
  .aq-nav-count { display: none; }
  .aq-top, .aq-content { padding-left: var(--space-4); padding-right: var(--space-4); }
  .aq-grid-2 { grid-template-columns: 1fr; }
}

/* ======================================================================
   Webapp layer — maps the page structure and JS-generated classes onto AQS Terminal
   ====================================================================== */
[hidden] { display: none !important; }
a { color: var(--accent-ink); }
code { font-family: var(--font-mono); font-size: 12px; background: var(--surface-sunken); padding: 1px 5px; border-radius: var(--radius-sm); }
.muted { color: var(--ink-muted); }
.aq-side-foot { margin-top: auto; display: flex; flex-direction: column; gap: var(--space-1); padding-top: var(--space-4); }
.aq-side-foot form { margin: 0; }
.aq-side-foot .aq-btn { width: 100%; justify-content: flex-start; }
@media (max-width: 900px) { .aq-side-foot { margin: 0 0 0 auto; flex-direction: row; padding: 0; } .aq-side-foot .aq-btn { width: auto; } }
.aq-top-actions { display: flex; align-items: center; gap: var(--space-2); }
a.aq-btn { text-decoration: none; }
.aq-back { font-size: 13px; text-decoration: none; }

/* forms */
.aq input[type=password], .aq input[type=file] { height: 32px; padding: 0 var(--space-3); font: 400 13px/1 var(--font-sans); color: var(--ink);
  background: var(--surface-sunken); border: 1px solid var(--border-strong); border-radius: var(--radius-md); min-width: 0; }
.aq input[type=file] { height: auto; padding: 4px var(--space-2); }
.aq input[type=file]::file-selector-button { font: 500 12px var(--font-sans); margin-right: var(--space-2); padding: 4px 10px; border-radius: var(--radius-sm);
  border: 1px solid var(--border-strong); background: var(--surface); color: var(--ink); cursor: pointer; }
.aq input[type=checkbox], .aq input[type=radio] { accent-color: var(--accent); width: 15px; height: 15px; margin: 0; }
.aq-form-row { display: flex; flex-wrap: wrap; gap: var(--space-3); align-items: flex-end; }
.aq-form-actions { display: flex; flex-wrap: wrap; gap: var(--space-3); align-items: center; margin-top: var(--space-4); }
.aq label.chk, .chk { display: inline-flex; flex-direction: row; align-items: center; gap: 6px; font-size: 13px; color: var(--ink); cursor: pointer; }
.aq-fieldset { border: 1px solid var(--border); border-radius: var(--radius-md); margin: var(--space-4) 0 0; padding: var(--space-3) var(--space-4); min-width: 0; }
.aq-fieldset > legend { padding: 0 var(--space-2); }
.symbols { display: flex; flex-wrap: wrap; gap: 6px var(--space-4); max-height: 160px; overflow: auto; margin-top: var(--space-2); font-family: var(--font-mono); font-size: 12px; }
.symbols .chk { font-family: var(--font-mono); font-size: 12px; }
.bulk { display: flex; flex-wrap: wrap; gap: var(--space-2); align-items: center; margin: var(--space-1) 0 var(--space-2); }
.aq-adv { margin: var(--space-4) 0; border: 1px solid var(--border); border-radius: var(--radius-md); background: var(--surface); }
.aq-adv > summary { cursor: pointer; padding: var(--space-3) var(--space-4); font-weight: 600; font-size: 13px; color: var(--ink); }
.aq-adv[open] > summary { border-bottom: 1px solid var(--border); }
.aq-adv-body { padding: var(--space-4); }
.aq-adv-body .aq-section-title { margin-top: var(--space-6); }
.aq-adv-body .aq-section-title:first-of-type { margin-top: var(--space-4); }
.aq-adv-body .aq-settings { margin-bottom: var(--space-3); }
.conflicts { border: 1px solid var(--warn-fg); background: var(--warn-bg); color: var(--warn-fg); border-radius: var(--radius-md);
  padding: var(--space-3); margin: var(--space-3) 0; font-size: 13px; display: flex; flex-direction: column; gap: var(--space-2); }
.conflicts label { display: flex; flex-direction: row; gap: 6px; color: inherit; font-size: 13px; }
details > summary { cursor: pointer; color: var(--accent-ink); font-size: 12px; }
details > pre.aq-log { margin-top: var(--space-2); white-space: pre-wrap; }
.results-list { list-style: none; padding: 0; margin: var(--space-3) 0 0; font-size: 13px; }
.results-list li { padding: 6px 0; border-bottom: 1px solid var(--border); }
.results-list button { margin-left: var(--space-2); }
.aq-hint { margin: var(--space-3) 0 0; font-size: 12px; color: var(--ink-faint); }

/* filters inside a results panel */
.aq-filters .aq-field { gap: 4px; }
.aq-filters .aq-field select, .aq-filters .aq-field input[type=date], .aq-filters .aq-field input[type=text] { height: 30px; }
.aq-filters .aq-search { align-self: flex-end; }
.aq-filters .aq-toggle { align-self: flex-end; height: 30px; }
.aq-filters .aq-btn { align-self: flex-end; }
.aq-table td.wrap { white-space: normal; min-width: 180px; }
.aq-table td.mono { font-family: var(--font-mono); font-variant-numeric: tabular-nums; font-size: 12px; }
.aq-table td.empty { color: var(--ink-muted); padding: var(--space-6) var(--space-4); text-align: center; }
.aq-table a { text-decoration: none; font-weight: 600; }
.aq-table a:hover { text-decoration: underline; }
.aq-more { display: flex; justify-content: center; padding: var(--space-3); border-top: 1px solid var(--border); }
.aq-syms { display: inline-flex; flex-wrap: wrap; gap: 4px; max-width: 360px; }
.aq-sym-more { font: 500 11px/24px var(--font-mono); color: var(--ink-muted); }
.aq-sym[data-asset="other"] .aq-sym-dot { background: var(--asset-other); }
button.aq-step { border: 0; font: inherit; text-align: left; cursor: pointer; }
button.aq-step:hover { filter: brightness(1.12); }
button.aq-step[aria-pressed="true"] { outline: 2px solid var(--accent); outline-offset: -2px; }
.aq-status-resuming { background: var(--run-bg); color: var(--run-fg); }
.aq-run-meta { margin: var(--space-2) 0 var(--space-4); font-size: 13px; color: var(--ink-muted); }
.aq-pre-log { max-height: 460px; }

/* model coverage matrix (coverage.js) — heat tokens */
.cov-table { border-collapse: separate; border-spacing: 2px; font: 500 12px/1 var(--font-mono); width: auto; min-width: 0; }
.cov-table th { font: 600 11px/14px var(--font-mono); color: var(--ink-muted); padding: 4px 6px; text-align: center; background: transparent; position: static; text-transform: none; letter-spacing: 0; border: 0; }
.cov-table th.cov-sym { text-align: left; white-space: nowrap; color: var(--ink); }
.cov-table th.cov-model { max-width: 88px; word-break: break-word; vertical-align: bottom; }
.cov-table td { border: 0; padding: 0; }
.cov-cell { min-width: 40px; height: 28px; text-align: center; border-radius: var(--radius-sm); font-weight: 700; }
.cov-done { background: var(--heat-p2); color: var(--ink); }
.cov-partial { background: var(--warn-bg); color: var(--warn-fg); }
.cov-none { background: var(--surface-sunken); color: var(--ink-faint); font-weight: 400; }

/* login */
.login-wrap { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: var(--space-4); }
.login-card { width: 100%; max-width: 380px; padding: var(--space-6); display: flex; flex-direction: column; gap: var(--space-4); margin: 0; }
.login-card .aq-brand { padding: 0; }
.login-card h1 { margin: 0; font-size: 20px; line-height: 28px; font-weight: 600; }
.login-error { margin: 0; padding: var(--space-2) var(--space-3); border-radius: var(--radius-md); background: var(--fail-bg); color: var(--fail-fg); font-size: 13px; }
