/* GoldBot command center v2: base, application shell and shared primitives. Page compositions live in pages.css.
   No inline style attributes (CSP style-src 'self'); dynamic geometry is set through CSSOM from JS. */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
html, body { margin: 0; }
body {
  min-height: 100vh;
  background: var(--bg);
  color: var(--text);
  font: var(--fs-md)/var(--lh) var(--font-sans);
  -webkit-font-smoothing: antialiased;
  font-feature-settings: "tnum" 1, "cv11" 1, "ss01" 1;
  font-variant-numeric: tabular-nums;
}
a { color: inherit; }
button, input, select { font: inherit; color: inherit; }
button { -webkit-tap-highlight-color: transparent; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: var(--radius-sm); }
.num { font-variant-numeric: tabular-nums; font-feature-settings: "tnum" 1; white-space: nowrap; }
.mono, .code { font-family: var(--font-mono); }
.muted { color: var(--text-2); }
.faint { color: var(--text-3); }
.nowrap { white-space: nowrap; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.eyebrow { font-size: var(--fs-xs); font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-3); }
.skip-link { position: absolute; left: 8px; top: -60px; z-index: 100; background: var(--surface); padding: 8px 12px; border: 1px solid var(--accent); border-radius: var(--radius); }
.skip-link:focus { top: 8px; }

/* ================================================================ application shell */
.sidebar {
  position: fixed; inset: 0 auto 0 0; width: var(--sidebar-w); height: 100vh; z-index: 30;
  display: flex; flex-direction: column;
  background: var(--bg-rail); border-right: 1px solid var(--line-soft);
  overflow: hidden;
  transition: width var(--dur) var(--ease), transform var(--dur) var(--ease);
}
.sidebar-scroll { flex: 1; min-height: 0; overflow-y: auto; display: flex; flex-direction: column; }
.brand { display: flex; align-items: center; gap: 10px; height: var(--topbar-h); padding: 0 18px; border-bottom: 1px solid var(--line-soft); flex: none; }
.brand-mark { width: 26px; height: 26px; border-radius: 7px; display: grid; place-items: center; flex: none;
  background: linear-gradient(145deg, rgba(216, 180, 99, 0.26), rgba(216, 180, 99, 0.06)); border: 1px solid var(--accent-line); }
.brand-mark svg { width: 15px; height: 15px; color: var(--accent); }
.brand-name { font-weight: 700; letter-spacing: 0.14em; font-size: 13px; white-space: nowrap; }
.brand-name b { color: var(--accent); font-weight: 700; }
.nav { display: flex; flex-direction: column; gap: 2px; padding: 14px 10px; }
.nav a {
  position: relative; display: flex; align-items: center; gap: 12px; height: 38px; padding: 0 10px;
  border-radius: var(--radius); color: var(--text-2); text-decoration: none; white-space: nowrap; font-size: var(--fs-md);
  transition: background var(--dur) var(--ease), color var(--dur) var(--ease);
}
.nav a:hover { background: var(--surface-hover); color: var(--text); }
.nav a[aria-current="page"] { color: var(--text); background: var(--surface-2); }
.nav a[aria-current="page"]::before { content: ""; position: absolute; left: -10px; top: 9px; bottom: 9px; width: 3px; border-radius: 0 3px 3px 0; background: var(--accent); }
.nav-num { font-family: var(--font-mono); font-size: var(--fs-xs); color: var(--text-3); width: 18px; flex: none; }
.nav a[aria-current="page"] .nav-num { color: var(--accent); }
.nav-icon { width: 18px; height: 18px; flex: none; color: currentColor; opacity: 0.9; display: none; }
.nav-label { overflow: hidden; text-overflow: ellipsis; }
.nav-badge { margin-left: auto; min-width: 8px; height: 8px; border-radius: 50%; background: transparent; }
.nav-badge.warn { background: var(--warn); }
.nav-badge.crit { background: var(--crit); }
.nav-badge.ok { background: var(--ok); }

.side-foot { flex: none; border-top: 1px solid var(--line-soft); padding: 12px 14px 14px; display: flex; flex-direction: column; gap: 8px; }
.side-status { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 7px 10px; font-size: var(--fs-xs); align-items: center; }
.side-status dt { color: var(--text-3); letter-spacing: 0.04em; text-transform: uppercase; font-weight: 600; font-size: 11.5px; }
.side-status dd { margin: 0; display: flex; align-items: center; gap: 6px; justify-content: flex-end; font-weight: 600; white-space: nowrap; }
.side-meta { display: flex; align-items: center; justify-content: space-between; gap: 8px; font-size: var(--fs-xs); color: var(--text-3); }
.side-meta .build { font-family: var(--font-mono); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.icon-btn { display: inline-grid; place-items: center; width: 32px; height: 32px; border-radius: var(--radius); border: 1px solid transparent; background: transparent; color: var(--text-2); cursor: pointer; flex: none; }
.icon-btn:hover { background: var(--surface-hover); color: var(--text); }
.icon-btn svg { width: 17px; height: 17px; }

.main { margin-left: var(--sidebar-w); min-width: 0; min-height: 100vh; display: flex; flex-direction: column; transition: margin-left var(--dur) var(--ease); }

/* collapsed icon rail */
.app.rail .sidebar { width: var(--rail-w); }
.app.rail .main { margin-left: var(--rail-w); }
.app.rail .brand { padding: 0; justify-content: center; }
.app.rail .brand-name, .app.rail .nav-label, .app.rail .nav-num, .app.rail .side-status, .app.rail .side-meta .build { display: none; }
.app.rail .nav a { justify-content: center; padding: 0; }
.app.rail .nav-icon { display: block; }
.app.rail .nav-badge { position: absolute; top: 7px; right: 9px; margin: 0; }
.app.rail .side-meta { justify-content: center; }
.app.rail .side-compact { display: flex; }
.side-compact { display: none; flex-direction: column; align-items: center; gap: 6px; }

/* ================================================================ top context bar */
.topbar {
  position: sticky; top: 0; z-index: 20; height: var(--topbar-h);
  display: flex; align-items: center; gap: 18px; padding: 0 20px;
  background: var(--bg);
  border-bottom: 1px solid var(--line-soft);
  min-width: 0;
}
.menu-btn { display: none; }
.tb-instrument { display: flex; align-items: baseline; gap: 12px; min-width: 0; }
.tb-symbol { font-weight: 700; letter-spacing: 0.06em; font-size: var(--fs-md); }
.tb-price { font-size: 22px; font-weight: 600; letter-spacing: -0.01em; }
.tb-price.stale { color: var(--text-3); text-decoration: line-through; text-decoration-thickness: 1px; text-decoration-color: var(--text-3); }
.tb-change { font-size: var(--fs-sm); color: var(--text-2); }
.tb-quote-label { font-size: var(--fs-xs); color: var(--text-3); letter-spacing: 0.06em; }
.tb-sep { width: 1px; height: 24px; background: var(--line); flex: none; }
.tb-items { display: flex; align-items: center; gap: 16px; min-width: 0; overflow: hidden; }
.tb-item { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.tb-item .k { font-size: 11.5px; color: var(--text-3); letter-spacing: 0.05em; text-transform: uppercase; font-weight: 600; white-space: nowrap; }
.tb-item .v { font-size: var(--fs-sm); font-weight: 600; white-space: nowrap; display: flex; align-items: center; gap: 6px; }
.tb-right { margin-left: auto; display: flex; align-items: center; gap: 10px; flex: none; }

/* freshness pill: FRESH/LIVE, DELAYED, STALE, DISCONNECTED, NO DATA */
.fresh { display: inline-flex; align-items: center; gap: 7px; height: 26px; padding: 0 10px; border-radius: 999px; font-size: var(--fs-xs); font-weight: 700; letter-spacing: 0.05em; white-space: nowrap; border: 1px solid var(--line); color: var(--text-2); }
.fresh .age { font-weight: 500; letter-spacing: 0; color: var(--text-2); font-variant-numeric: tabular-nums; }
.fresh.live { border-color: color-mix(in srgb, var(--ok) 40%, transparent); color: var(--ok); background: var(--ok-soft); }
.fresh.delayed { border-color: color-mix(in srgb, var(--warn) 40%, transparent); color: var(--warn); background: var(--warn-soft); }
.fresh.stale, .fresh.disconnected { border-color: color-mix(in srgb, var(--crit) 45%, transparent); color: var(--crit); background: var(--crit-soft); }
.fresh.nodata { color: var(--text-3); }
.pulse { position: relative; width: 7px; height: 7px; border-radius: 50%; background: currentColor; flex: none; }
/* compositor-only (transform + opacity): no repaint per frame */
.fresh.live .pulse::after { content: ""; position: absolute; inset: 0; border-radius: 50%; background: currentColor; animation: pulse 2.4s ease-out infinite; will-change: transform, opacity; }
@keyframes pulse { 0% { transform: scale(1); opacity: 0.55; } 70% { transform: scale(2.6); opacity: 0; } 100% { transform: scale(2.6); opacity: 0; } }

/* the two safety badges */
.badge-demo, .badge-live { display: inline-flex; align-items: center; gap: 6px; height: 26px; padding: 0 10px; border-radius: var(--radius); font-size: var(--fs-xs); font-weight: 700; letter-spacing: 0.08em; white-space: nowrap; }
.badge-demo { color: var(--accent); border: 1px solid var(--accent-line); background: var(--accent-soft); }
.badge-live { color: var(--text-2); border: 1px solid var(--line-strong); background: var(--surface-2); }
.badge-live svg { width: 13px; height: 13px; }
.badge-live.failed { color: #fff; background: var(--crit); border-color: var(--crit); }

.alerts { display: flex; flex-direction: column; gap: 6px; padding: 12px 24px 0; }
.alerts:empty { display: none; }
.alert { display: flex; gap: 12px; align-items: baseline; padding: 8px 12px; border-radius: var(--radius); border: 1px solid; font-size: var(--fs-sm); line-height: 1.4; }
.alert-code { font-family: var(--font-mono); font-size: var(--fs-xs); letter-spacing: 0.02em; font-weight: 700; white-space: nowrap; }
.alert.crit { border-color: color-mix(in srgb, var(--crit) 45%, transparent); background: var(--crit-soft); }
.alert.crit .alert-code { color: var(--crit); }
.alert.warn { border-color: color-mix(in srgb, var(--warn) 32%, transparent); background: var(--warn-soft); }
.alert.warn .alert-code { color: var(--warn); }
.alert.info { border-color: var(--line); background: var(--surface-2); }

.view { padding: 20px 24px 40px; display: flex; flex-direction: column; gap: 16px; min-width: 0; outline: none; }
.view.enter { animation: view-in 180ms var(--ease); }
@keyframes view-in { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }
.page-head { display: flex; align-items: flex-end; gap: 12px 24px; flex-wrap: wrap; }
.page-title { margin: 0; font-size: var(--fs-xl); font-weight: 650; letter-spacing: -0.01em; }
.page-sub { margin: 2px 0 0; color: var(--text-2); font-size: var(--fs-sm); max-width: 90ch; }
.page-tools { margin-left: auto; display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; }

/* ================================================================ panel */
.panel { position: relative; background: var(--surface); border: 1px solid var(--line-soft); border-radius: var(--radius-lg); min-width: 0; display: flex; flex-direction: column; box-shadow: var(--shadow-sm); }
.panel-head { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; padding: 12px 16px; border-bottom: 1px solid var(--line-soft); min-height: 48px; }
.panel-title { margin: 0; font-size: var(--fs-xs); font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-2); }
.panel-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.panel-actions { margin-left: auto; display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.panel-body { padding: 14px 16px 16px; min-width: 0; }
.panel-body.flush { padding: 0; }
.panel-foot { margin-top: auto; padding: 9px 16px; border-top: 1px solid var(--line-soft); display: flex; align-items: center; gap: 6px 14px; font-size: var(--fs-xs); color: var(--text-3); flex-wrap: wrap; }
.panel.is-stale .panel-body { opacity: 0.55; }
.panel.is-stale::after { content: "STALE"; position: absolute; top: 12px; right: 14px; font-size: 11px; font-weight: 700; letter-spacing: 0.08em; color: var(--crit); background: var(--crit-soft); border-radius: 3px; padding: 1px 6px; pointer-events: none; }
.panel.is-stale .panel-actions { margin-right: 58px; }

/* ================================================================ chips, badges, decisions */
.chip { display: inline-flex; align-items: center; gap: 4px; height: 20px; padding: 0 7px; border-radius: 4px; font-size: var(--fs-xs); font-weight: 500; letter-spacing: 0.01em; background: var(--neutral-soft); color: var(--text-2); white-space: nowrap; max-width: 100%; overflow: hidden; text-overflow: ellipsis; }
.chip.view-research { background: var(--info-soft); color: var(--info); }
.chip.view-broker { background: var(--accent-soft); color: var(--accent); }
.chip.ok { background: var(--ok-soft); color: var(--ok); }
.chip.warn { background: var(--warn-soft); color: var(--warn); }
.chip.crit { background: var(--crit-soft); color: var(--crit); }
.chip.info { background: var(--info-soft); color: var(--info); }
.chip.outline { background: transparent; border: 1px solid var(--line); }
.chip.strong { font-weight: 700; letter-spacing: 0.06em; }
/* Dataset labels: three distinct neutral treatments; never status colours. */
.chip.ds-backtest { background: transparent; border: 1px dashed var(--text-3); color: var(--text-2); letter-spacing: 0.04em; font-weight: 600; }
.chip.ds-shadow { background: var(--neutral-soft); border: 1px solid var(--line-strong); color: var(--text); letter-spacing: 0.04em; font-weight: 600; }
.chip.ds-demo { background: transparent; border: 1px solid var(--accent); color: var(--accent); letter-spacing: 0.04em; font-weight: 600; }
.chip.ds-locked { background: transparent; border: 1px solid var(--line-strong); color: var(--text-3); letter-spacing: 0.04em; font-weight: 600; }

.final { font-family: var(--font-mono); font-size: var(--fs-xs); font-weight: 700; letter-spacing: 0.05em; display: inline-flex; align-items: center; gap: 5px; }
.final::before { content: ""; width: 7px; height: 7px; border-radius: 2px; background: currentColor; flex: none; }
.final-ACCEPT { color: var(--accept); }
.final-REJECT { color: var(--reject); }
.final-REJECT::before { border-radius: 50%; }
.final-WAIT { color: var(--wait); }
.final-WAIT::before { background: transparent; border: 1.5px solid currentColor; }
.final-OBSERVE { color: var(--info); }

.status { display: inline-flex; align-items: center; gap: 6px; font-size: var(--fs-xs); font-weight: 700; letter-spacing: 0.05em; white-space: nowrap; }
.status .dot { width: 8px; height: 8px; }
.dot { width: 7px; height: 7px; border-radius: 50%; background: var(--text-3); flex: none; display: inline-block; }
.tone-ok .dot, .dot.ok { background: var(--ok); }
.tone-warn .dot, .dot.warn { background: var(--warn); }
.tone-crit .dot, .dot.crit { background: var(--crit); }
.tone-info .dot, .dot.info { background: var(--info); }
.tone-ok { color: var(--ok); }
.tone-warn { color: var(--warn); }
.tone-crit { color: var(--crit); }
.tone-info { color: var(--info); }
.tone-neutral { color: var(--text-2); }

/* ================================================================ states */
.state { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; padding: 18px 16px; color: var(--text-2); }
.state-title { color: var(--text); font-size: var(--fs-md); font-weight: 600; }
.state-text { font-size: var(--fs-sm); color: var(--text-3); max-width: 70ch; }
.state.compact { padding: 10px 0; }
.state.error .state-title { color: var(--crit); }
.empty-hero { display: flex; align-items: center; gap: 14px; padding: 18px 18px; }
.empty-hero .glyph { width: 40px; height: 40px; border-radius: 10px; display: grid; place-items: center; flex: none; border: 1px dashed var(--line-strong); color: var(--text-3); }
.empty-hero .glyph svg { width: 18px; height: 18px; }
.empty-hero .t { font-size: var(--fs-sm); font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text); }
.empty-hero .d { font-size: var(--fs-sm); color: var(--text-3); margin-top: 2px; }
.skeleton { height: 12px; border-radius: 3px; margin: 6px 0; background: linear-gradient(90deg, var(--line-soft), var(--surface-hover), var(--line-soft)); background-size: 200% 100%; animation: shimmer 1.4s linear infinite; }
@keyframes shimmer { from { background-position: 200% 0; } to { background-position: -200% 0; } }

/* ================================================================ key/value, figures, meters */
.kv { display: grid; grid-template-columns: minmax(90px, max-content) minmax(0, 1fr); gap: 7px 18px; align-items: baseline; margin: 0; }
.kv dt { color: var(--text-2); font-size: var(--fs-sm); }
.kv dd { margin: 0; text-align: right; font-variant-numeric: tabular-nums; font-size: var(--fs-sm); white-space: normal; overflow-wrap: anywhere; min-width: 0; }
.kv-compact { gap: 4px 18px; }
.kv .sep { grid-column: 1 / -1; height: 1px; background: var(--line-soft); margin: 4px 0; }
.figures { display: grid; grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); gap: 16px 20px; }
.figure { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.figure-label { font-size: 11.5px; color: var(--text-3); font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; white-space: nowrap; }
.figure-value { font-size: 20px; font-weight: 600; letter-spacing: -0.01em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.figure-value small { font-size: var(--fs-xs); color: var(--text-3); margin-left: 4px; font-weight: 500; letter-spacing: 0; }
.figure-sub { font-size: var(--fs-xs); color: var(--text-3); }
.meter { height: 6px; background: var(--line-soft); border-radius: 3px; overflow: hidden; }
.meter > span { display: block; height: 100%; background: var(--text-2); border-radius: 3px; }
.meter.accent > span { background: var(--accent); }
.meter.ok > span { background: var(--ok); }
.meter.warn > span { background: var(--warn); }
.meter.crit > span { background: var(--crit); }
.meter-head { display: flex; justify-content: space-between; gap: 12px; font-size: var(--fs-sm); margin-bottom: 6px; }

/* ================================================================ controls */
.control { display: flex; align-items: center; gap: 8px; font-size: var(--fs-sm); color: var(--text-3); }
.select, .btn, .input { height: 32px; border: 1px solid var(--line); background: var(--surface-2); border-radius: var(--radius); padding: 0 10px; color: var(--text); font-size: var(--fs-sm); }
.select { padding-right: 26px; appearance: none; max-width: 360px; text-overflow: ellipsis;
  background-image: linear-gradient(45deg, transparent 50%, var(--text-3) 50%), linear-gradient(135deg, var(--text-3) 50%, transparent 50%);
  background-position: calc(100% - 13px) 14px, calc(100% - 9px) 14px; background-size: 4px 4px; background-repeat: no-repeat; }
.btn { cursor: pointer; display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; font-weight: 500; transition: background var(--dur) var(--ease), border-color var(--dur) var(--ease); }
.btn:hover { background: var(--surface-hover); border-color: var(--line-strong); }
.btn[disabled] { opacity: 0.45; cursor: default; }
.btn-quiet { border-color: transparent; background: transparent; color: var(--text-2); }
.btn-accent { border-color: var(--accent-line); color: var(--accent); background: var(--accent-soft); }
.btn-accent:hover { border-color: var(--accent); background: color-mix(in srgb, var(--accent) 18%, transparent); }
.btn svg { width: 14px; height: 14px; }
.segmented { display: inline-flex; border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; background: var(--surface-2); }
.segmented button { border: 0; background: transparent; color: var(--text-2); cursor: pointer; height: 30px; padding: 0 12px; font-size: var(--fs-sm); font-weight: 500; }
.segmented button + button { border-left: 1px solid var(--line); }
.segmented button[aria-pressed="true"] { background: var(--surface-3); color: var(--text); box-shadow: inset 0 -2px 0 var(--accent); }
.segmented button:hover { color: var(--text); }
.input { font-family: var(--font-mono); font-size: var(--fs-xs); min-width: 0; }
.input::placeholder { color: var(--text-3); }
.input[aria-invalid="true"] { border-color: var(--crit); }
.input-date { width: 140px; }
.tabs { display: flex; gap: 2px; border-bottom: 1px solid var(--line-soft); overflow-x: auto; }
.tabs button { background: none; border: 0; border-bottom: 2px solid transparent; padding: 10px 14px; color: var(--text-2); cursor: pointer; font-size: var(--fs-sm); font-weight: 600; white-space: nowrap; }
.tabs button[aria-selected="true"] { color: var(--text); border-bottom-color: var(--accent); }
.tabs button:hover { color: var(--text); }
.tabs .count { margin-left: 6px; font-weight: 500; color: var(--text-3); }

/* ================================================================ tables */
.table-wrap { overflow-x: auto; max-width: 100%; }
.table { width: 100%; border-collapse: collapse; font-size: var(--fs-sm); }
.table th { text-align: left; font-weight: 600; color: var(--text-3); font-size: 11.5px; letter-spacing: 0.05em; text-transform: uppercase; padding: 9px 12px; border-bottom: 1px solid var(--line); white-space: nowrap; background: var(--surface); position: sticky; top: 0; z-index: 1; }
.table td { padding: 0 12px; height: var(--row-h); border-bottom: 1px solid var(--line-soft); white-space: nowrap; }
.table.dense th { padding: 8px 10px; }
.table.dense td { padding: 0 10px; height: var(--row-h-dense); }
.table .id { display: inline-block; max-width: 140px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: bottom; }
.table .reason { display: inline-block; max-width: 230px; font-family: var(--font-mono); font-size: var(--fs-xs); vertical-align: bottom; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.table tr:last-child td { border-bottom: 0; }
.table td.r, .table th.r { text-align: right; }
.table td.wrap { white-space: normal; min-width: 220px; padding-top: 7px; padding-bottom: 7px; line-height: 1.4; }
.table tbody tr.clickable { cursor: pointer; }
.table tbody tr.clickable:hover { background: var(--surface-hover); }
.table tbody tr.clickable:focus-visible { outline-offset: -2px; }
.table tbody tr[aria-selected="true"] { background: var(--surface-2); box-shadow: inset 3px 0 0 var(--accent); }
.table .truncate { max-width: 280px; overflow: hidden; text-overflow: ellipsis; }
.pager { display: flex; align-items: center; gap: 8px; margin-left: auto; }
.pager .btn { height: 28px; min-width: 28px; justify-content: center; padding: 0 8px; }

.filter-bar { display: flex; flex-wrap: wrap; gap: 8px 14px; align-items: center; padding: 12px 16px; border-bottom: 1px solid var(--line-soft); background: var(--surface-2); }
.filter-bar .control { font-size: var(--fs-xs); gap: 6px; font-weight: 600; letter-spacing: 0.03em; }
.filter-bar .select { max-width: 200px; height: 30px; }
.filter-bar .select-source { max-width: 300px; }
.filter-bar .input { height: 30px; }
.cat-strip { display: flex; flex-wrap: wrap; gap: 6px; padding: 12px 16px; border-bottom: 1px solid var(--line-soft); }
.cat { display: inline-flex; gap: 8px; align-items: baseline; padding: 3px 9px; border: 1px solid var(--line); border-radius: 4px; font-size: var(--fs-xs); }
.cat-name { color: var(--text-2); }
.share { display: inline-flex; align-items: center; gap: 8px; justify-content: flex-end; }
.share-bar { width: 72px; height: 5px; background: var(--line-soft); border-radius: 3px; overflow: hidden; }
.share-bar > span { display: block; height: 100%; background: var(--text-3); }
.note { margin-top: 10px; font-size: var(--fs-sm); color: var(--text-2); padding: 8px 10px; border-left: 2px solid var(--line-strong); background: var(--surface-2); border-radius: 0 var(--radius-sm) var(--radius-sm) 0; }
.pre { white-space: pre-wrap; }
.code { font-size: var(--fs-xs); color: var(--text-2); word-break: break-all; }
.linklike, .link { background: none; border: 0; padding: 0; color: var(--info); cursor: pointer; font-size: inherit; text-decoration: underline; text-decoration-color: color-mix(in srgb, var(--info) 40%, transparent); text-underline-offset: 3px; }
.linklike-plain { background: none; border: 0; padding: 0; cursor: pointer; color: var(--text); text-decoration: underline; text-decoration-color: var(--line-strong); text-underline-offset: 3px; }
.linklike-plain:hover { text-decoration-color: var(--accent); }

/* ================================================================ legacy panel content (reused components) */
.verdict { display: flex; flex-direction: column; gap: 4px; margin-bottom: 12px; }
.verdict-main { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.verdict-final .final { font-size: var(--fs-lg); }
.verdict-code { font-size: var(--fs-sm); color: var(--text); }
.verdict-text { color: var(--text-2); font-size: var(--fs-md); }
.verdict-sub { font-size: var(--fs-xs); }
.facts { display: grid; grid-template-columns: repeat(auto-fill, minmax(112px, 1fr)); gap: 10px 16px; padding: 12px 0; border-top: 1px solid var(--line-soft); border-bottom: 1px solid var(--line-soft); margin-bottom: 12px; }
.fact { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.fact-label { font-size: 11.5px; color: var(--text-3); font-weight: 600; letter-spacing: 0.05em; text-transform: uppercase; }
.fact-value { font-size: var(--fs-sm); font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.strategy-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.strategy { padding: 16px; display: flex; flex-direction: column; gap: 12px; text-align: left; border-right: 1px solid var(--line-soft); min-width: 0; }
.strategy:last-child { border-right: 0; }
.strategy-top { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.strategy-name { font-weight: 650; font-size: var(--fs-md); }
.strategy-scope { font-size: var(--fs-xs); color: var(--text-3); }
.strategy-block { display: flex; flex-direction: column; gap: 5px; min-width: 0; font-size: var(--fs-sm); color: var(--text-2); }
.strategy-label { font-size: 11.5px; color: var(--text-3); letter-spacing: 0.06em; text-transform: uppercase; font-weight: 600; }
.strategy-row { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; min-width: 0; }
.strategy-line { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; background: none; border: 0; padding: 2px 0; cursor: pointer; text-align: left; color: inherit; font-size: var(--fs-xs); }
.strategy-line:hover .code { color: var(--text); }
.metric-groups { display: flex; flex-direction: column; gap: 14px; }
.metric-group + .metric-group { padding-top: 12px; border-top: 1px solid var(--line-soft); }
.metric-title { margin: 0 0 8px; font-size: 11.5px; color: var(--text-3); letter-spacing: 0.08em; font-weight: 700; }
.limits { margin: 0; padding-left: 16px; font-size: var(--fs-sm); color: var(--text-2); display: flex; flex-direction: column; gap: 4px; }
.ladder { display: flex; flex-direction: column; }
.ladder-row { display: grid; grid-template-columns: 170px minmax(0, 1fr) auto; gap: 12px; align-items: center; padding: 11px 16px; border-bottom: 1px solid var(--line-soft); }
.ladder-row:last-child { border-bottom: 0; }
.ladder-stage { font-family: var(--font-mono); font-size: var(--fs-xs); font-weight: 600; letter-spacing: 0.03em; }
.ladder-detail { font-size: var(--fs-sm); color: var(--text-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pilot-state { display: flex; flex-direction: column; gap: 2px; padding: 9px 12px; margin-bottom: 12px; border-radius: var(--radius); background: var(--surface-2); box-shadow: inset 3px 0 0 var(--info); font-size: var(--fs-sm); }
.pilot-state.tone-warn { box-shadow: inset 3px 0 0 var(--warn); background: var(--warn-soft); color: inherit; }
.pilot-state.tone-crit { box-shadow: inset 3px 0 0 var(--crit); background: var(--crit-soft); color: inherit; }
.pilot-state.tone-info { color: inherit; }
.pilot-state-name { font-weight: 700; letter-spacing: 0.02em; }
.panel-body .alert { margin-bottom: 12px; }
.preflight { margin-top: 12px; font-size: var(--fs-sm); }
.preflight summary, .trace-details summary { cursor: pointer; color: var(--text-2); font-size: var(--fs-sm); margin-bottom: 6px; }
.checks { display: flex; flex-direction: column; }
.check { display: grid; grid-template-columns: 18px 70px minmax(0, 1fr) auto; gap: 8px; align-items: baseline; padding: 5px 0; font-size: var(--fs-sm); border-bottom: 1px dashed var(--line-soft); }
.preflight .check { grid-template-columns: 18px 104px minmax(0, 1fr); }
.check:last-child { border-bottom: 0; }
.check-mark { font-family: var(--font-mono); }
.check.pass .check-mark { color: var(--ok); }
.check.fail .check-mark { color: var(--crit); }
.check-stage { font-family: var(--font-mono); font-size: var(--fs-xs); color: var(--text-3); }
.check-result { font-family: var(--font-mono); font-size: var(--fs-xs); font-weight: 700; }
.check-result.pass { color: var(--ok); }
.check-result.fail { color: var(--crit); }
.check-result.na { color: var(--text-3); }
.check-val { display: inline-block; max-width: 180px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: bottom; }

/* ================================================================ line chart (equity / drawdown) */
.chart { width: 100%; position: relative; }
.chart svg { display: block; width: 100%; height: auto; overflow: visible; }
.chart .grid-line { stroke: var(--chart-grid); stroke-width: 1; }
.chart .axis-label { fill: var(--text-3); font-size: var(--fs-axis); font-family: var(--font-sans); }
.chart .series { fill: none; stroke: var(--chart-line); stroke-width: 1.6; vector-effect: non-scaling-stroke; }
.chart .series-area { fill: var(--chart-area); stroke: none; }
.chart .dd-area { fill: var(--chart-dd); stroke: none; }
.chart .dd-line { fill: none; stroke: var(--text-3); stroke-width: 1; }
.chart .baseline { stroke: var(--text-3); stroke-dasharray: 3 3; stroke-width: 1; }
.chart .zero { stroke: var(--line-strong); stroke-width: 1; }
.chart .cursor { stroke: var(--chart-cross); stroke-width: 1; stroke-dasharray: 3 3; }
.chart .cursor-dot { fill: var(--text); }
.chart .marker circle { stroke: var(--surface); stroke-width: 1.5; }
.chart .marker-start circle { fill: var(--text-3); }
.chart .marker-end circle { fill: var(--text); }
.chart .marker-dd path { fill: var(--text-2); }
.chart .bar-pos { fill: var(--chart-line); }
.chart .bar-neg { fill: var(--candle-down); }
.chart-caption { display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: center; font-size: var(--fs-xs); color: var(--text-3); margin-bottom: 6px; }
.chart-tip { font-size: var(--fs-xs); color: var(--text-2); min-height: 18px; margin-top: 4px; }
.chart svg:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.chart-head { display: flex; flex-wrap: wrap; gap: 4px 18px; font-size: var(--fs-xs); color: var(--text); margin-bottom: 10px; }
.legend { display: inline-flex; align-items: center; gap: 5px; }
.lg { display: inline-block; width: 8px; height: 8px; border-radius: 50%; }
.lg-start { background: var(--text-3); }
.lg-end { background: var(--text); }
.lg-dd { width: 0; height: 0; border-radius: 0; border-left: 4px solid transparent; border-right: 4px solid transparent; border-bottom: 7px solid var(--text-2); }

/* ================================================================ drawer / inspector */
.drawer-backdrop { position: fixed; inset: 0; background: rgba(3, 4, 6, 0.55); z-index: 40; animation: fade-in var(--dur) var(--ease); }
.drawer { position: fixed; top: 0; right: 0; bottom: 0; width: min(var(--drawer-w), 100vw); z-index: 41; background: var(--surface); border-left: 1px solid var(--line); box-shadow: var(--shadow); display: flex; flex-direction: column; animation: drawer-in 200ms var(--ease); }
@keyframes drawer-in { from { transform: translateX(24px); opacity: 0; } to { transform: none; opacity: 1; } }
@keyframes fade-in { from { opacity: 0; } to { opacity: 1; } }
.drawer-head { display: flex; align-items: flex-start; gap: 12px; padding: 16px 20px; border-bottom: 1px solid var(--line-soft); background: var(--surface-2); }
.drawer-title { margin: 0; font-size: var(--fs-lg); font-weight: 650; }
.drawer-sub { margin-top: 6px; display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.drawer-body { overflow-y: auto; padding: 4px 20px 28px; overscroll-behavior: contain; }
.drawer .table-wrap { margin: 0 -2px; }
.drawer .table td.wrap { min-width: 140px; }
.trace-section { padding: 16px 0; border-bottom: 1px solid var(--line-soft); }
.trace-section:last-child { border-bottom: 0; }
.trace-title { margin: 0 0 10px; font-size: var(--fs-xs); color: var(--accent); letter-spacing: 0.1em; font-weight: 700; display: flex; align-items: center; gap: 8px; }
.trace-title::after { content: ""; flex: 1; height: 1px; background: var(--line-soft); }
.trace-summary { padding: 16px 0; border-bottom: 1px solid var(--line); display: flex; flex-direction: column; gap: 10px; }
.trace-verdict { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.trace-verdict .final { font-size: var(--fs-lg); }
.trace-meta { display: flex; gap: 6px; margin-bottom: 10px; flex-wrap: wrap; }
.trace-details { margin-top: 10px; font-size: var(--fs-sm); }
.feature-list { columns: 2; column-gap: 20px; }

/* ================================================================ auth */
.auth { position: fixed; inset: 0; display: grid; place-items: center; background: var(--bg); z-index: 60; padding: 16px; }
.auth-card { width: min(440px, 100%); background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-lg); padding: 28px; display: flex; flex-direction: column; gap: 12px; }
.auth-card input { height: 38px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--bg); padding: 0 12px; font-family: var(--font-mono); font-size: var(--fs-sm); }
.auth-card .brand { border: 0; padding: 0; height: auto; margin-bottom: 8px; }

/* ================================================================ reduced motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; }
}
.alert > span:last-child { min-width: 0; overflow-wrap: anywhere; }
@media (max-width: 560px) { .alert { flex-wrap: wrap; gap: 4px 10px; } }

/* Intelligence and Market State (v2.3) */
.state-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: var(--gap, 12px); }
.state-value { font-size: 1.25rem; font-weight: 600; letter-spacing: .02em; margin-bottom: 6px; }
.state-card.is-stale .state-value { opacity: .6; }
.intel-grid { display: grid; gap: 8px; }
.src-row { padding: 6px 0; border-bottom: 1px solid var(--line, rgba(127,127,127,.2)); }
.src-row p { margin: 4px 0 0; }
.feed { list-style: none; margin: 0; padding: 0; }
.feed li { padding: 6px 0; border-bottom: 1px solid var(--line, rgba(127,127,127,.2)); }
.toolbar { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-bottom: 10px; }
.btn.is-on { outline: 1px solid currentColor; }
pre.wrap { white-space: pre-wrap; word-break: break-word; max-height: 360px; overflow: auto; }
.chip.tier-A { border-color: var(--ok, #2e7d32); } .chip.tier-B { border-color: var(--info, #1565c0); }
.chip.tier-C { border-color: var(--warn, #b26a00); } .chip.tier-D { border-color: var(--crit, #c62828); }
@media (max-width: 600px) { .state-grid { grid-template-columns: 1fr; } }

/* ================================================================ Trading City (v2.4) */
.city-banner { display: flex; gap: 10px; align-items: baseline; padding: 10px 14px; border: 1px solid var(--accent-line); background: var(--accent-soft); border-radius: var(--radius-lg); font-size: var(--fs-sm); color: var(--text); }
.city-banner strong { color: var(--accent); letter-spacing: 0.08em; font-size: var(--fs-xs); flex: none; }
.city-banner span { min-width: 0; overflow-wrap: anywhere; }
.city-header { display: grid; grid-template-columns: repeat(auto-fill, minmax(168px, 1fr)); gap: 8px; }
.city-tile { min-width: 0; background: var(--surface); border: 1px solid var(--line-soft); border-radius: var(--radius); padding: 8px 10px; }
.city-tile-k { font-size: 11px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-3); }
.city-tile-v { margin-top: 2px; font-size: var(--fs-sm); font-weight: 600; color: var(--text); overflow-wrap: anywhere; font-variant-numeric: tabular-nums; }
.city-tile-s { margin-top: 2px; font-size: var(--fs-xs); color: var(--text-3); overflow-wrap: anywhere; }
.city-tile.tone-ok { border-color: color-mix(in srgb, var(--ok) 45%, transparent); }
.city-tile.tone-ok .city-tile-v { color: var(--ok); }
.city-tile.tone-crit { border-color: var(--crit); }
.city-tile.tone-crit .city-tile-v { color: var(--crit); }
.city-tile.tone-warn .city-tile-v { color: var(--warn); }
.city-tile.tone-info .city-tile-v { color: var(--info); }
.city-controls { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 16px; padding: 10px 12px; background: var(--surface); border: 1px solid var(--line-soft); border-radius: var(--radius-lg); }
.city-controls .select { max-width: min(320px, calc(100vw - 150px)); }
.city-transport { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.city-scrub-wrap { flex: 1 1 260px; display: flex; align-items: center; gap: 10px; min-width: 0; }
.city-scrub { flex: 1 1 auto; min-width: 0; accent-color: var(--accent); }
.city-time { font-size: var(--fs-xs); color: var(--text-2); white-space: nowrap; }
.city-main { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; min-width: 0; }
@media (min-width: 1100px) { .city-main { grid-template-columns: minmax(0, 1.75fr) minmax(340px, 1fr); } }
.city-stage-wrap { min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.city-stage { position: relative; height: clamp(420px, 64vh, 760px); border-radius: var(--radius-lg); overflow: hidden; border: 1px solid var(--line); background: radial-gradient(ellipse at 50% 30%, #0d1a33 0%, #05070d 70%); }
.city-stage.is-list { height: auto; overflow: visible; background: transparent; border: 0; }
.city-canvas { display: block; width: 100%; height: 100%; cursor: grab; touch-action: none; outline: none; }
.city-canvas:focus-visible { box-shadow: inset 0 0 0 2px var(--accent); }
.city-stage-note { font-size: var(--fs-xs); }
.city-side { min-width: 0; display: flex; flex-direction: column; gap: 16px; }
.city-log { list-style: none; margin: 0; padding: 0; max-height: 340px; overflow-y: auto; font-size: var(--fs-xs); }
.city-log li { display: grid; grid-template-columns: 64px minmax(0, 118px) minmax(0, 1fr); gap: 8px; padding: 5px 0; border-bottom: 1px solid var(--line-soft); align-items: baseline; }
.city-log li > span { min-width: 0; overflow-wrap: anywhere; }
.city-log-who { color: var(--text-2); }
.city-log .k-RISK_REJECTED, .city-log .k-LOSS_BREAK { color: var(--crit); }
.city-log .k-ORDER_FILLED, .city-log .k-ORDER_SUBMITTED, .city-log .k-RISK_APPROVED { color: var(--ok); }
.city-log .k-REGIME_CHANGED { color: var(--info); }
.city-chart { display: flex; flex-direction: column; gap: 6px; }
.city-chart-canvas { width: 100%; height: 230px; display: block; }
.city-chart-legend { display: flex; flex-wrap: wrap; gap: 6px 14px; font-size: var(--fs-xs); color: var(--text-2); }
.city-legend-item { display: inline-flex; align-items: center; gap: 6px; }
.city-legend-item i { width: 14px; height: 2px; display: inline-block; }
.city-note { display: block; font-size: 11px; }
.city-heat td.heat { font-size: var(--fs-xs); font-weight: 600; }
.city-heat td.na { color: var(--text-3); }
.city-heat td.rg-up { background: var(--ok-soft); }
.city-heat td.rg-down { background: var(--crit-soft); }
.city-heat td.rg-flat { background: var(--neutral-soft); }
.city-heat td.st-ok { background: var(--ok-soft); color: var(--ok); }
.city-heat td.st-info { background: var(--info-soft); color: var(--info); }
.city-heat td.st-warn { background: var(--warn-soft); color: var(--warn); }
.city-heat td.st-crit { background: var(--crit-soft); color: var(--crit); }
.city-heat td.st-neutral { color: var(--text-3); }
.city-heat td.cp-0 { background: transparent; }
.city-heat td.cp-1 { background: color-mix(in srgb, var(--info) 8%, transparent); }
.city-heat td.cp-2 { background: color-mix(in srgb, var(--info) 15%, transparent); }
.city-heat td.cp-3 { background: color-mix(in srgb, var(--info) 22%, transparent); }
.city-heat td.cp-4 { background: color-mix(in srgb, var(--info) 30%, transparent); }
.city-heat td.hpos { color: var(--ok); }
.city-heat td.hneg { color: var(--crit); }
.city-heat td.rej { color: var(--crit); background: var(--crit-soft); }
.city-heat td { vertical-align: middle; }
.city-verdict { margin: 0 0 8px; font-size: var(--fs-md); font-weight: 600; }
.city-research-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); gap: 16px; margin: 8px 0; }
.city-h4 { margin: 0 0 6px; font-size: var(--fs-xs); font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--text-2); }
.city-survivors { margin: 0; padding-left: 18px; font-size: var(--fs-sm); }
.city-survivors li { padding: 3px 0; }
.city-search .input { width: min(280px, calc(100vw - 180px)); }
.city-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 240px), 1fr)); gap: 10px; }
.city-card { text-align: left; font: inherit; color: var(--text); min-width: 0; display: flex; flex-direction: column; gap: 4px; padding: 12px; background: var(--surface); border: 1px solid var(--line); border-left: 3px solid var(--line-strong); border-radius: var(--radius); }
button.city-card { cursor: pointer; }
button.city-card:hover { background: var(--surface-hover); }
.city-card.tone-ok { border-left-color: var(--ok); }
.city-card.tone-info { border-left-color: var(--info); }
.city-card.tone-warn { border-left-color: var(--warn); }
.city-card.tone-crit { border-left-color: var(--crit); }
.city-card.is-dim { opacity: 0.72; border-style: dashed; }
.city-card-d { font-size: 11px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-3); }
.city-card-t { font-weight: 650; font-size: var(--fs-sm); overflow-wrap: anywhere; }
.city-card-l { font-size: var(--fs-xs); color: var(--text-2); overflow-wrap: anywhere; }
@media (max-width: 760px) {
  .city-banner { flex-direction: column; gap: 4px; }
  .city-header { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .city-scrub-wrap { flex-basis: 100%; }
  .city-log li { grid-template-columns: 58px minmax(0, 1fr); }
  .city-log li > span:last-child { grid-column: 1 / -1; }
}

/* ================================================================ Trading City V4 (landing view)
   An immersive dark "city" surface whatever the theme: the page redefines the colour tokens inside .cv so tables and
   panels stay legible on the night-city background. Modes and data statuses each have a distinct colour AND shape:
   REPLAY violet + diagonal stripes, SHADOW sky outline, PAPER amber fill, LIVE red fill (locked), BACKTEST grey dashed;
   data LIVE green + pulse, DELAYED amber, REPLAY violet stripes, SIMULATED pink, UNAVAILABLE grey hazard stripes. */
.cv, .cv-view, .city-cta {
  --bg: #050a14; --surface: rgba(11, 20, 36, 0.86); --surface-2: rgba(16, 28, 48, 0.9); --surface-3: #16233a; --surface-hover: rgba(56, 225, 255, 0.07);
  --line: rgba(120, 180, 255, 0.16); --line-soft: rgba(120, 180, 255, 0.1); --line-strong: rgba(120, 180, 255, 0.28);
  --text: #eaf4ff; --text-2: #a9bed6; --text-3: #7f93ad; --accent: #38e1ff; --accent-soft: rgba(56, 225, 255, 0.12); --accent-line: rgba(56, 225, 255, 0.4);
  --info: #38e1ff; --info-soft: rgba(56, 225, 255, 0.12); --ok: #3dffa8; --ok-soft: rgba(61, 255, 168, 0.12); --warn: #ffb347; --warn-soft: rgba(255, 179, 71, 0.13);
  --crit: #ff5d6c; --crit-soft: rgba(255, 93, 108, 0.14); --neutral-soft: rgba(169, 190, 214, 0.1); --chart-grid: rgba(120, 180, 255, 0.1);
  --candle-up: #cfe3f7; --candle-down: #5f7894; --vwap-line: #ffd36b;
  --cv-replay: #b69cff; --cv-shadow: #4cc3ff; --cv-paper: #ffbf3c; --cv-live: #ff3b4e; --cv-sim: #ff6fc1; --cv-na: #8a94a3;
  --cv-exp: #c6f432; --cv-exp-soft: rgba(198, 244, 50, 0.13); --cv-exp-line: rgba(198, 244, 50, 0.55);
  color: var(--text);
}
.app.is-city .view.cv-view { padding: 0; gap: 0; background: radial-gradient(ellipse at 50% -10%, #12284a 0%, #070e1c 45%, #04070e 100%); min-height: 100vh; }
@media (min-width: 901px) { .app.is-city .topbar { display: none; } }
.cv { display: flex; flex-direction: column; gap: 14px; padding: 14px 18px 48px; min-width: 0; }
.cv-k { font-size: 11px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--text-3); }
.cv-s { font-size: var(--fs-xs); color: var(--text-2); }
.cv-v { font-size: var(--fs-sm); font-weight: 650; }
.cv-row { display: flex; align-items: center; gap: 8px; min-width: 0; }
.cv-row.wrap { flex-wrap: wrap; }
.cv-na { color: var(--text-3); font-size: 11px; font-weight: 700; letter-spacing: 0.06em; }

/* header */
.cv-head { display: flex; flex-wrap: wrap; align-items: stretch; gap: 10px 26px; padding: 14px 18px; border: 1px solid var(--line-strong); border-radius: 14px;
  background: linear-gradient(110deg, rgba(56, 225, 255, 0.12), rgba(10, 20, 36, 0.9) 35%, rgba(167, 139, 250, 0.1)); box-shadow: 0 0 0 1px rgba(56, 225, 255, 0.06), 0 18px 50px rgba(0, 0, 0, 0.45), inset 0 1px 0 rgba(255, 255, 255, 0.05); }
.cv-brand { display: flex; align-items: center; gap: 12px; margin-right: 6px; }
.cv-brand-mark { width: 46px; height: 46px; display: grid; place-items: center; border-radius: 12px; color: #38e1ff; border: 1px solid rgba(56, 225, 255, 0.5);
  background: radial-gradient(circle at 30% 20%, rgba(56, 225, 255, 0.35), rgba(56, 225, 255, 0.05)); box-shadow: 0 0 24px rgba(56, 225, 255, 0.35); }
.cv-brand-mark svg { width: 26px; height: 26px; }
.cv-title { margin: 0; font-size: 26px; line-height: 1.05; font-weight: 800; letter-spacing: 0.16em; color: #fff; text-shadow: 0 0 18px rgba(56, 225, 255, 0.55); }
.cv-title-sub { margin-top: 3px; font-size: 11.5px; font-weight: 700; letter-spacing: 0.18em; color: #38e1ff; }
.cv-head-block { display: flex; flex-direction: column; gap: 4px; min-width: 0; justify-content: center; }
.cv-clock-v { font-size: 26px; font-weight: 700; line-height: 1.05; color: #fff; letter-spacing: 0.02em; }
.cv-mkt { display: inline-flex; align-items: center; gap: 8px; font-size: 15px; font-weight: 800; letter-spacing: 0.08em; }
.cv-mkt i { width: 10px; height: 10px; border-radius: 50%; background: currentColor; box-shadow: 0 0 12px currentColor; }
.cv-mkt.t-ok { color: var(--ok); } .cv-mkt.t-warn { color: var(--warn); } .cv-mkt.t-crit { color: var(--crit); } .cv-mkt.t-night { color: #9fb4ff; }
.cv-lock { display: inline-flex; align-items: center; gap: 6px; height: 30px; padding: 0 11px; border-radius: 8px; font-size: 12px; font-weight: 800; letter-spacing: 0.1em;
  color: #c7d6ea; border: 1px solid rgba(169, 190, 214, 0.45); background: rgba(169, 190, 214, 0.08); white-space: nowrap; }
.cv-lock svg { width: 14px; height: 14px; }
.cv-lock.failed { color: #fff; background: var(--cv-live); border-color: var(--cv-live); }
.cv-phase { display: inline-flex; align-items: center; height: 24px; padding: 0 9px; border-radius: 6px; font-size: 12px; font-weight: 800; letter-spacing: 0.08em;
  border: 1px solid var(--line-strong); color: var(--text-2); background: rgba(169, 190, 214, 0.08); }
.cv-phase.p-SESSION { color: var(--ok); border-color: rgba(61, 255, 168, 0.5); background: var(--ok-soft); }
.cv-phase.p-PREMARKET, .cv-phase.p-INIT, .cv-phase.p-POST { color: var(--warn); border-color: rgba(255, 179, 71, 0.5); background: var(--warn-soft); }
.cv-phase.p-STAND_DOWN { color: var(--crit); border-color: rgba(255, 93, 108, 0.5); background: var(--crit-soft); }

/* mode badges */
.cv-mode { display: inline-flex; align-items: center; gap: 6px; height: 24px; padding: 0 10px; border-radius: 6px; font-size: 12px; font-weight: 800; letter-spacing: 0.12em; white-space: nowrap; border: 1px solid; }
.cv-mode.big { height: 34px; padding: 0 16px; font-size: 16px; border-radius: 8px; border-width: 2px; }
.cv-mode.small { height: 20px; padding: 0 7px; font-size: 10.5px; letter-spacing: 0.1em; border-radius: 4px; }
.cv-mode.m-REPLAY { color: #f1ebff; border-color: var(--cv-replay); border-style: dashed;
  background: repeating-linear-gradient(135deg, rgba(182, 156, 255, 0.38) 0 6px, rgba(182, 156, 255, 0.12) 6px 12px); }
.cv-mode.m-SHADOW { color: var(--cv-shadow); border-color: var(--cv-shadow); background: rgba(76, 195, 255, 0.08); }
.cv-mode.m-PAPER { color: #1b1300; border-color: var(--cv-paper); background: var(--cv-paper); }
.cv-mode.m-LIVE { color: #fff; border-color: var(--cv-live); background: var(--cv-live); }
.cv-mode.m-BACKTEST { color: var(--text-2); border-color: var(--text-3); border-style: dashed; background: transparent; }
.cv-mode.m-OFFLINE { color: var(--text-3); border-color: var(--line-strong); background: rgba(127, 147, 173, 0.08); }
.cv-mode.m-DISABLED, .cv-mode.m-EXECUTION_BLOCKED { color: var(--text-2); border-color: var(--line-strong); border-style: dashed; background: rgba(127, 147, 173, 0.06); }
.cv-mode.m-EXECUTION_BLOCKED { color: #ffb4a8; border-color: rgba(255, 120, 100, 0.6); }

/* data status badges */
.cv-data { display: inline-flex; align-items: center; gap: 6px; height: 24px; padding: 0 9px; border-radius: 999px; font-size: 11.5px; font-weight: 800; letter-spacing: 0.08em; white-space: nowrap; border: 1px solid; }
.cv-data b { color: #fff; font-weight: 800; letter-spacing: 0.04em; }
.cv-data i { width: 8px; height: 8px; border-radius: 50%; background: currentColor; flex: none; }
.cv-data.big { height: 30px; padding: 0 12px; font-size: 13px; }
.cv-data.d-LIVE { color: var(--ok); border-color: rgba(61, 255, 168, 0.6); background: var(--ok-soft); }
.cv-data.d-LIVE i { box-shadow: 0 0 0 0 rgba(61, 255, 168, 0.7); animation: cv-ping 1.8s ease-out infinite; }
.cv-data.d-DELAYED { color: var(--warn); border-color: rgba(255, 179, 71, 0.6); background: var(--warn-soft); }
.cv-data.d-REPLAY { color: #e8deff; border-color: var(--cv-replay); border-style: dashed; background: repeating-linear-gradient(135deg, rgba(182, 156, 255, 0.3) 0 5px, rgba(182, 156, 255, 0.08) 5px 10px); }
.cv-data.d-SIMULATED { color: var(--cv-sim); border-color: var(--cv-sim); background: rgba(255, 111, 193, 0.12); }
.cv-data.d-UNAVAILABLE { color: #c4ccd8; border-color: rgba(138, 148, 163, 0.7); background: repeating-linear-gradient(135deg, rgba(138, 148, 163, 0.28) 0 5px, rgba(20, 25, 34, 0.6) 5px 10px); }
.cv-data.d-UNAVAILABLE i { background: transparent; border: 2px solid currentColor; width: 9px; height: 9px; }
@keyframes cv-ping { 0% { box-shadow: 0 0 0 0 rgba(61, 255, 168, 0.7); } 80%, 100% { box-shadow: 0 0 0 7px rgba(61, 255, 168, 0); } }

/* banner + section nav */
.cv-banner { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; padding: 9px 14px; border-radius: 10px; font-size: var(--fs-sm); border: 1px solid var(--line-strong); background: rgba(11, 20, 36, 0.8); }
.cv-banner.b-REPLAY { border-color: rgba(182, 156, 255, 0.55); background: linear-gradient(90deg, rgba(182, 156, 255, 0.2), rgba(11, 20, 36, 0.85) 60%); }
.cv-banner.b-SHADOW { border-color: rgba(76, 195, 255, 0.55); background: linear-gradient(90deg, rgba(76, 195, 255, 0.16), rgba(11, 20, 36, 0.85) 60%); }
.cv-banner.b-PAPER { border-color: rgba(255, 191, 60, 0.6); background: linear-gradient(90deg, rgba(255, 191, 60, 0.18), rgba(11, 20, 36, 0.85) 60%); }
.cv-banner > span { min-width: 0; overflow-wrap: anywhere; }
.cv-banner-t { flex: 1 1 320px; min-width: 0; }
.cv-banner-src { color: var(--text-2); font-size: var(--fs-xs); }
.cv-feeds { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-left: auto; }
.cv-subnav { display: flex; gap: 6px; overflow-x: auto; scrollbar-width: none; padding-bottom: 2px; }
.cv-subnav button { flex: none; height: 30px; padding: 0 13px; border-radius: 999px; border: 1px solid var(--line); background: rgba(11, 20, 36, 0.7); color: var(--text-2);
  font-size: 12px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; cursor: pointer; }
.cv-subnav button:hover { color: #fff; border-color: rgba(56, 225, 255, 0.55); background: rgba(56, 225, 255, 0.1); }

/* main grid: left panels | 3D stage | event stream */
.cv-grid { display: grid; grid-template-columns: 300px minmax(0, 1fr) 360px; gap: 14px; min-width: 0; --stage-h: clamp(440px, calc(100vh - 290px), 940px); }
.cv-left, .cv-right { min-width: 0; display: flex; flex-direction: column; gap: 12px; max-height: var(--stage-h); overflow-y: auto; scrollbar-width: thin; }
.cv-center { min-width: 0; }
.cv-card { min-width: 0; padding: 12px 14px; border-radius: 12px; border: 1px solid var(--line); background: var(--surface); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04); }
.cv-card-head { display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 10px; margin-bottom: 10px; }
.cv-card-head h3 { margin: 0; font-size: 12px; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; color: #dff6ff; }
.cv-card-sub { font-size: 11px; color: var(--text-3); }
.cv-seg { margin-bottom: 8px; }
.cv-sb { display: flex; flex-direction: column; gap: 6px; }
.cv-sb-row { display: grid; grid-template-columns: 74px minmax(0, 1fr); grid-template-rows: auto auto; gap: 1px 10px; align-items: center; padding: 7px 8px; border-radius: 8px; background: rgba(4, 10, 20, 0.5); border: 1px solid var(--line-soft); }
.cv-sb-row .cv-mode { grid-row: 1 / 3; justify-self: start; }
.cv-sb-pnl { font-size: 18px; font-weight: 800; font-variant-numeric: tabular-nums; }
.cv-sb-sub { font-size: 11.5px; color: var(--text-2); }
.cv-sb-recon { grid-column: 1 / -1; font-size: 11px; color: var(--warn, #b7791f); }
.cv-recon { margin-top: 8px; padding: 6px 8px; border: 1px solid var(--warn, #b7791f); border-radius: 6px; font-size: 11.5px; max-height: 150px; overflow: auto; overflow-wrap: anywhere; }
.cv-recon ul { margin: 4px 0 0; padding-left: 16px; }
.cv-pnl { font-variant-numeric: tabular-nums; font-weight: 700; white-space: nowrap; }
.cv-pnl.is-pos { color: var(--ok); } .cv-pnl.is-neg { color: var(--crit); } .cv-pnl.is-flat { color: var(--text-2); } .cv-pnl.na { color: var(--text-3); font-size: 11px; letter-spacing: 0.06em; }
.cv-counts { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; margin-top: 10px; }
.cv-count { display: flex; flex-direction: column; align-items: center; padding: 6px 2px; border-radius: 8px; background: rgba(4, 10, 20, 0.5); border: 1px solid var(--line-soft); text-align: center; }
.cv-count b { font-size: 18px; color: #fff; }
.cv-count span { font-size: 10px; color: var(--text-3); text-transform: uppercase; letter-spacing: 0.05em; line-height: 1.15; }
.cv-count.warn b { color: var(--warn); } .cv-count.crit b { color: var(--crit); }
.cv-breakers { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.cv-breaker { font-size: 11px; font-weight: 800; color: #fff; background: var(--crit); padding: 2px 8px; border-radius: 4px; }
.cv-lights { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 5px; }
.cv-lights li { display: grid; grid-template-columns: 14px minmax(0, 1fr) auto; gap: 2px 8px; align-items: center; font-size: 12px; }
.cv-light { width: 11px; height: 11px; border-radius: 50%; background: #3a4558; }
.cv-light.l-GREEN { background: #3dffa8; box-shadow: 0 0 10px #3dffa8; } .cv-light.l-YELLOW { background: #ffb347; box-shadow: 0 0 10px #ffb347; } .cv-light.l-RED { background: #ff4f5e; box-shadow: 0 0 12px #ff4f5e; }
.cv-light-n { font-weight: 800; letter-spacing: 0.06em; color: #e6f2ff; }
.cv-light-c { font-size: 10.5px; font-weight: 800; letter-spacing: 0.08em; }
.cv-light-d { grid-column: 2 / -1; color: var(--text-3); font-size: 11px; overflow-wrap: anywhere; }
.cv-meter { margin-bottom: 7px; }
.cv-meter-k { display: flex; justify-content: space-between; gap: 8px; font-size: 11px; color: var(--text-2); font-weight: 700; letter-spacing: 0.06em; }
.cv-meter-k b { color: #fff; font-weight: 600; letter-spacing: 0; }
.cv-meter-bar { height: 6px; margin-top: 3px; border-radius: 3px; background: rgba(120, 180, 255, 0.12); overflow: hidden; }
.cv-meter-bar i { display: block; height: 100%; width: 0; background: linear-gradient(90deg, #1fb6ff, #38e1ff); box-shadow: 0 0 8px #38e1ff; }
.cv-meter.warm .cv-meter-bar i { background: #ffb347; } .cv-meter.hot .cv-meter-bar i { background: #ff4f5e; }
.cv-mini-kv { display: grid; grid-template-columns: minmax(0, max-content) minmax(0, 1fr); gap: 4px 12px; margin: 6px 0 0; font-size: 12px; }
.cv-mini-kv dt { color: var(--text-3); }
.cv-mini-kv dd { margin: 0; text-align: right; overflow-wrap: anywhere; }

/* 3D stage + HUD */
.cv-stage-wrap { position: relative; height: var(--stage-h); border-radius: 16px; overflow: hidden; border: 1px solid rgba(56, 225, 255, 0.35);
  box-shadow: 0 0 0 1px rgba(56, 225, 255, 0.08), 0 0 60px rgba(56, 225, 255, 0.12), 0 24px 60px rgba(0, 0, 0, 0.5); background: radial-gradient(ellipse at 50% 35%, #173866 0%, #08142a 60%, #040810 100%); }
.cv-stage-wrap .city-stage { height: 100%; border: 0; border-radius: 0; background: transparent; }
.cv-stage-wrap.is-list { height: auto; overflow: visible; border: 0; box-shadow: none; background: transparent; }
.cv-stage-wrap.is-list .cv-hud, .cv-stage-wrap.is-list .cv-tip { display: none; }
.cv-hud { position: absolute; inset: 0; pointer-events: none; }
.cv-hud > div { position: absolute; pointer-events: auto; }
.cv-hud-tl { top: 12px; left: 12px; }
.cv-hud-tr { top: 12px; right: 12px; }
.cv-hud-tl { display: none; }
.cv-hud-bl { left: 12px; right: 12px; bottom: 10px; display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 8px; font-size: 11.5px; color: #b9cde4; text-shadow: 0 1px 3px #000; pointer-events: none !important; }
.cv-hud-fx { display: inline-flex; align-items: center; gap: 8px; pointer-events: auto; }
.cv-hud-fx .cv-seg { margin: 0; }
.cv-legend { display: flex; flex-wrap: wrap; gap: 3px 12px; padding: 6px 10px; max-width: 100%; border-radius: 10px; background: rgba(4, 10, 20, 0.62); border: 1px solid var(--line); backdrop-filter: blur(6px); }
.cv-lg { display: inline-flex; align-items: center; gap: 7px; font-size: 10.5px; font-weight: 700; letter-spacing: 0.06em; color: #cfe0f3; }
.cv-lg i { width: 9px; height: 9px; border-radius: 2px; }
.cv-views { display: flex; flex-direction: column; gap: 4px; margin-top: 4px; }
.cv-viewmenu > summary { list-style: none; display: flex; align-items: center; gap: 6px; }
.cv-viewmenu > summary::-webkit-details-marker { display: none; }
.cv-viewmenu > summary::after { content: ""; width: 0; height: 0; border-left: 4px solid transparent; border-right: 4px solid transparent; border-top: 5px solid #38e1ff; }
.cv-viewmenu[open] > summary::after { border-top: 0; border-bottom: 5px solid #38e1ff; }
.cv-viewbtn { height: 28px; padding: 0 11px; border-radius: 7px; border: 1px solid var(--line-strong); background: rgba(4, 10, 20, 0.66); color: #d5e8fb; font-size: 11.5px; font-weight: 700; letter-spacing: 0.04em; cursor: pointer; text-align: left; backdrop-filter: blur(6px); }
.cv-viewbtn:hover { border-color: #38e1ff; color: #fff; background: rgba(56, 225, 255, 0.16); }
.cv-tip { position: absolute; z-index: 3; pointer-events: none; padding: 5px 9px; border-radius: 6px; font-size: 12px; font-weight: 700; color: #fff; background: rgba(4, 10, 20, 0.9); border: 1px solid #38e1ff; white-space: nowrap; }

/* state colours shared by legend, pills, desks and cards */
.s-info { --st: #38e1ff; } .s-warn { --st: #ffb347; } .s-ok { --st: #3dffa8; } .s-crit { --st: #ff4f5e; } .s-hazard { --st: #a3acb9; } .s-off { --st: #56637a; } .s-night { --st: #9fb4ff; } .s-dim { --st: #8fa3bd; }
.cv-lg i { background: var(--st); box-shadow: 0 0 8px var(--st); }
.cv-lg.s-hazard i { background: repeating-linear-gradient(135deg, #a3acb9 0 2px, #222a36 2px 4px); }
.cv-state { display: inline-flex; align-items: center; gap: 6px; height: 22px; padding: 0 8px; border-radius: 5px; font-size: 11px; font-weight: 800; letter-spacing: 0.06em; white-space: nowrap;
  color: var(--st, #8fa3bd); border: 1px solid color-mix(in srgb, var(--st, #8fa3bd) 55%, transparent); background: color-mix(in srgb, var(--st, #8fa3bd) 12%, transparent); }
.cv-state i { width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.cv-state.s-hazard { background: repeating-linear-gradient(135deg, rgba(163, 172, 185, 0.22) 0 4px, transparent 4px 8px); }
.cv-dir { font-weight: 800; letter-spacing: 0.04em; white-space: nowrap; }
.cv-dir.up { color: var(--ok); } .cv-dir.down { color: var(--crit); } .cv-dir.flat { color: var(--text-2); }
.cv-bar { display: inline-block; width: 90px; height: 7px; border-radius: 4px; background: rgba(120, 180, 255, 0.14); overflow: hidden; vertical-align: middle; flex: none; }
.cv-bar-fill { display: block; height: 100%; width: 0; background: linear-gradient(90deg, #1fb6ff, #38e1ff); box-shadow: 0 0 8px rgba(56, 225, 255, 0.8); }
.cv-bar.na { opacity: 0.4; }

/* event stream */
.cv-events { display: flex; flex-direction: column; min-height: 0; flex: 1; }
.cv-ev-note { margin: -6px 0 8px; font-size: 11px; color: var(--text-3); font-style: italic; }
.cv-ev-status { font-size: 10.5px; font-weight: 700; letter-spacing: 0.05em; }
.cv-evlist { list-style: none; margin: 0; padding: 0; overflow-y: auto; min-height: 0; flex: 1; scrollbar-width: thin; }
.cv-ev { display: grid; grid-template-columns: 58px minmax(0, 1fr); gap: 8px; padding: 6px 4px 6px 8px; border-left: 3px solid var(--kc, #4a5a72); border-bottom: 1px solid var(--line-soft); font-size: 12px; }
.cv-ev.is-new { animation: cv-flash 1.6s ease-out; }
@keyframes cv-flash { from { background: rgba(56, 225, 255, 0.22); } to { background: transparent; } }
.cv-ev-t { color: var(--text-3); font-size: 11.5px; }
.cv-ev-empty { padding: 14px 8px; font-size: 12px; color: var(--text-2); border: 1px dashed var(--line-strong); border-radius: 8px; }
.cv-ev-body { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.cv-ev-tags { display: flex; flex-wrap: wrap; align-items: center; gap: 5px; }
.cv-ev-sym { font-size: 10.5px; color: #fff; background: rgba(120, 180, 255, 0.18); padding: 0 5px; border-radius: 3px; letter-spacing: 0.06em; }
.cv-ev-bot { font: inherit; font-size: 10.5px; font-weight: 700; color: #bfefff; background: none; border: 0; padding: 0; cursor: pointer; text-decoration: underline dotted; }
.cv-ev-kind { font-size: 10px; font-weight: 800; letter-spacing: 0.06em; color: var(--kc, var(--text-3)); }
.cv-ev-text { color: #e3eefb; overflow-wrap: anywhere; }
.cv-ev.k-crit { --kc: #ff4f5e; } .cv-ev.k-warn { --kc: #ffb347; } .cv-ev.k-exec { --kc: #3dffa8; } .cv-ev.k-setup { --kc: #38e1ff; } .cv-ev.k-pos { --kc: #c4a7ff; } .cv-ev.k-info { --kc: #6f8dff; }

/* sections */
.cv-sec { display: flex; flex-direction: column; gap: 10px; min-width: 0; scroll-margin-top: 12px; }
.cv-sec-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 16px; padding-top: 10px; border-top: 1px solid var(--line-soft); }
.cv-sec-head h2 { margin: 0; font-size: 18px; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; color: #fff; text-shadow: 0 0 14px rgba(56, 225, 255, 0.35); }
.cv-sec-head p { margin: 0; font-size: var(--fs-xs); color: var(--text-2); max-width: 110ch; }
.cv-sec-link { margin: 0; }
.cv-cta-link { color: #38e1ff; font-weight: 700; font-size: var(--fs-sm); text-decoration: none; }
.cv-cta-link:hover { text-decoration: underline; }
.cv-foot { margin: 6px 0 0; font-size: 11.5px; color: var(--text-3); }
.cv-empty { display: flex; flex-direction: column; gap: 4px; padding: 18px; border-radius: 10px; border: 1px dashed var(--line-strong); color: var(--text-2); font-size: 12px; }
.cv-empty b { color: #fff; letter-spacing: 0.1em; }
.cv-tag { display: inline-flex; padding: 1px 7px; border-radius: 4px; font-size: 11px; font-weight: 800; letter-spacing: 0.05em; white-space: nowrap; border: 1px solid var(--line-strong); color: var(--text-2); }
.cv-tag.t-ok { color: var(--ok); border-color: rgba(61, 255, 168, 0.5); background: var(--ok-soft); }
.cv-tag.t-crit { color: var(--crit); border-color: rgba(255, 93, 108, 0.5); background: var(--crit-soft); }
/* money-basis-1.0.0: simulator money is visibly not money (the -$112.33 incident). */
.cv-tag.cv-sim-tag { color: var(--warn); border-color: rgba(255, 196, 61, 0.55); background: var(--warn-soft, transparent); font-size: 10px; padding: 0 5px; }
.cv-sim-money { display: inline-flex; align-items: center; gap: 4px; opacity: 0.85; }
.cv-tag.t-warn { color: var(--warn); border-color: rgba(255, 179, 71, 0.5); background: var(--warn-soft); }

/* scanner */
.cv-scan-wrap { border-radius: 12px; border: 1px solid var(--line); background: var(--surface); }
.cv-scan th { font-size: 10.5px; letter-spacing: 0.08em; white-space: nowrap; color: #9fd8ff; background: rgba(56, 225, 255, 0.06); }
.cv-scan td { white-space: nowrap; font-size: 12.5px; }
.cv-scan tr.is-sel td { background: rgba(56, 225, 255, 0.1); }
.cv-scan .r { text-align: right; }
.cv-sym { font-size: 14px; letter-spacing: 0.06em; color: #fff; }
.cv-wide { min-width: 270px; white-space: normal !important; }
.cv-scan td { vertical-align: middle; }
.cv-compl { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 2px 8px; align-items: center; }
.cv-compl .cv-bar { width: 70px; }
.cv-compl-t { font-weight: 800; font-size: 11.5px; letter-spacing: 0.04em; color: #dff6ff; }
.cv-compl-n { grid-column: 1 / -1; font-size: 10.5px; color: var(--text-3); }
.cv-opt-st { font-size: 11px; color: var(--text-3); font-weight: 700; letter-spacing: 0.04em; }

/* trading hall */
.cv-hall { position: relative; display: flex; flex-direction: column; gap: 12px; padding: 16px; border-radius: 16px; border: 1px solid rgba(56, 225, 255, 0.3); overflow: hidden;
  background: linear-gradient(180deg, #0c1b33 0%, #08111f 55%, #060c17 100%); box-shadow: inset 0 0 80px rgba(56, 225, 255, 0.06); }
.cv-hall::after { content: ""; position: absolute; left: -10%; right: -10%; bottom: -40%; height: 75%; pointer-events: none; transform: perspective(500px) rotateX(62deg); opacity: 0.55;
  background-image: linear-gradient(rgba(56, 225, 255, 0.22) 1px, transparent 1px), linear-gradient(90deg, rgba(56, 225, 255, 0.22) 1px, transparent 1px); background-size: 46px 46px; }
.cv-hall > * { position: relative; z-index: 1; }
.cv-hall.is-closed { filter: saturate(0.8) brightness(0.92); }
.cv-hall-wall { display: flex; flex-direction: column; gap: 10px; }
.cv-hall-sign { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.cv-hall-sign b { font-size: 20px; letter-spacing: 0.24em; color: #fff; text-shadow: 0 0 16px rgba(56, 225, 255, 0.8); }
.cv-hall-sign span:last-child { font-size: 11.5px; font-weight: 700; letter-spacing: 0.1em; color: var(--text-2); }
.cv-tapes { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 230px), 1fr)); gap: 10px; }
.cv-tape { padding: 10px 12px; border-radius: 10px; background: #02060d; border: 1px solid rgba(56, 225, 255, 0.35); box-shadow: inset 0 0 22px rgba(56, 225, 255, 0.1); min-width: 0; }
.cv-tape.d-UNAVAILABLE { border-color: rgba(138, 148, 163, 0.5); box-shadow: none; background: repeating-linear-gradient(135deg, rgba(138, 148, 163, 0.08) 0 8px, #02060d 8px 16px); }
.cv-tape-sym { font-size: 13px; font-weight: 900; letter-spacing: 0.2em; color: #38e1ff; }
.cv-tape-px { font-size: 26px; font-weight: 800; color: #fff; text-shadow: 0 0 12px rgba(56, 225, 255, 0.55); line-height: 1.15; }
.cv-tape.d-UNAVAILABLE .cv-tape-px { font-size: 16px; color: #c4ccd8; text-shadow: none; letter-spacing: 0.08em; padding: 6px 0 3px; }
.cv-tape-sub { font-size: 11px; color: var(--text-3); min-height: 16px; overflow-wrap: anywhere; }
.cv-tape-row { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; align-items: center; }
.cv-tape-tr { font-size: 10.5px; font-weight: 800; letter-spacing: 0.06em; color: #cfe0f3; padding: 1px 6px; border-radius: 4px; background: rgba(120, 180, 255, 0.12); }
.cv-boards { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 250px), 1fr)); gap: 10px; }
.cv-board { padding: 9px 11px; border-radius: 10px; background: rgba(2, 6, 13, 0.85); border: 1px solid var(--line-strong); min-width: 0; }
.cv-board header { display: flex; justify-content: space-between; gap: 8px; margin-bottom: 6px; }
.cv-board h4 { margin: 0; font-size: 11px; font-weight: 900; letter-spacing: 0.14em; color: #38e1ff; }
.cv-board header span { font-size: 10.5px; color: var(--text-3); }
.cv-b-risk h4 { color: #ffb347; } .cv-b-exec h4 { color: #3dffa8; }
.cv-bl { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; font-size: 11.5px; }
.cv-bl li { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 4px 8px; padding: 3px 0; border-bottom: 1px dashed var(--line-soft); }
.cv-bl-ev li { display: grid; grid-template-columns: 56px minmax(0, 1fr); justify-content: stretch; }
.cv-bl-ev li.k-exec span:last-child { color: #b6ffd9; } .cv-bl-ev li.k-crit span:last-child { color: #ffb3ba; }
.cv-board-empty { font-size: 12px; font-weight: 800; letter-spacing: 0.1em; color: var(--text-3); padding: 10px 0; }
.cv-hall-floor { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 250px), 1fr)); gap: 12px; padding-top: 6px; }
.cv-desk { position: relative; text-align: left; font: inherit; color: var(--text); cursor: pointer; display: flex; flex-direction: column; gap: 6px; padding: 10px 12px 12px; border-radius: 12px;
  background: linear-gradient(180deg, rgba(16, 30, 52, 0.95), rgba(7, 14, 26, 0.95)); border: 1px solid color-mix(in srgb, var(--st, #8fa3bd) 45%, transparent);
  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.3), 0 10px 30px rgba(0, 0, 0, 0.35), 0 0 24px color-mix(in srgb, var(--st, #8fa3bd) 18%, transparent); min-width: 0; }
.cv-desk:hover { border-color: var(--st, #8fa3bd); }
.cv-desk.is-sel { outline: 2px solid #fff; outline-offset: 2px; }
.cv-desk.s-off, .cv-desk.s-hazard { opacity: 0.82; }
.cv-desk-top { display: flex; align-items: center; gap: 8px; }
.cv-desk-sym { font-size: 18px; font-weight: 900; letter-spacing: 0.1em; color: #fff; }
.cv-desk-name { font-size: 11px; font-weight: 800; letter-spacing: 0.08em; color: var(--text-2); flex: 1; min-width: 0; }
.cv-desk-state { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.cv-desk-compl { display: flex; align-items: center; gap: 8px; font-size: 10.5px; font-weight: 800; letter-spacing: 0.04em; color: #dff6ff; min-width: 0; }
.cv-desk-compl span { min-width: 0; overflow-wrap: anywhere; }
.cv-desk-kv { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 3px 10px; margin: 0; font-size: 11.5px; }
.cv-desk-kv dt { color: var(--text-3); font-size: 10px; font-weight: 800; letter-spacing: 0.08em; padding-top: 2px; }
.cv-desk-kv dd { margin: 0; display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 4px; }
.cv-worker { width: 100%; height: 86px; display: block; }
.cv-worker .w-shadow { fill: rgba(0, 0, 0, 0.45); }
.cv-worker .w-screen { fill: #0b1526; stroke: var(--st, #8fa3bd); stroke-width: 1.4; }
.cv-worker .w-glass { fill: color-mix(in srgb, var(--st, #8fa3bd) 22%, #02060d); }
.cv-worker .w-line { fill: none; stroke: var(--st, #8fa3bd); stroke-width: 1.8; stroke-linejoin: round; stroke-linecap: round; }
.cv-worker .w-stand, .cv-worker .w-leg { fill: #24324a; }
.cv-worker .w-desk { fill: #2b3c58; }
.cv-worker .w-body { fill: #31445f; }
.cv-worker .w-head { fill: #cfdcea; }
.cv-worker .w-lamp { fill: var(--st, #8fa3bd); }
.cv-worker.w-info { --st: #38e1ff; } .cv-worker.w-warn { --st: #ffb347; } .cv-worker.w-ok { --st: #3dffa8; } .cv-worker.w-crit { --st: #ff4f5e; } .cv-worker.w-hazard { --st: #a3acb9; } .cv-worker.w-off { --st: #56637a; } .cv-worker.w-night { --st: #9fb4ff; } .cv-worker.w-dim { --st: #8fa3bd; }
.cv-worker.w-off .w-head, .cv-worker.w-hazard .w-head { fill: #7c8794; }
.cv-worker.w-off .w-person { transform: translateY(3px); }
.cv-worker.busy .w-person { animation: cv-work 1.6s ease-in-out infinite; transform-box: fill-box; }
.cv-worker.busy .w-glass { animation: cv-glow 2.4s ease-in-out infinite; }
.cv-worker.busy .w-lamp { animation: cv-blink 1.2s steps(2) infinite; }
@keyframes cv-work { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-1.5px); } }
@keyframes cv-glow { 0%, 100% { opacity: 0.75; } 50% { opacity: 1; } }
@keyframes cv-blink { 50% { opacity: 0.25; } }

/* market state cards */
.cv-mgrid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); gap: 12px; }
.cv-mcard { padding: 12px 14px; border-radius: 12px; border: 1px solid var(--line); background: var(--surface); min-width: 0; }
.cv-mcard.d-UNAVAILABLE { border-style: dashed; background: repeating-linear-gradient(135deg, rgba(138, 148, 163, 0.05) 0 10px, rgba(11, 20, 36, 0.86) 10px 20px); }
.cv-mcard header { display: flex; justify-content: space-between; align-items: flex-start; gap: 8px; }
.cv-msym { font-size: 24px; font-weight: 900; letter-spacing: 0.12em; color: #fff; }
.cv-mname { font-size: 11px; color: var(--text-3); }
.cv-mprice { margin: 8px 0 2px; display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.cv-mprice b { font-size: 24px; color: #fff; }
.cv-mprice span { font-size: 11px; color: var(--text-3); }
.cv-na-big { font-size: 15px; font-weight: 900; letter-spacing: 0.12em; color: #c4ccd8; }
.cv-msrc { font-size: 11px; color: var(--text-3); margin-bottom: 8px; overflow-wrap: anywhere; }
.cv-mkv { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 4px 12px; margin: 0; font-size: 12px; }
.cv-mkv dt { color: var(--text-3); font-size: 10.5px; font-weight: 800; letter-spacing: 0.08em; padding-top: 2px; }
.cv-mkv dd { margin: 0; text-align: right; font-weight: 700; }
.cv-mbots { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.cv-chipbtn { font: inherit; font-size: 11.5px; font-weight: 700; color: #bfefff; background: rgba(56, 225, 255, 0.08); border: 1px solid rgba(56, 225, 255, 0.35); border-radius: 999px; padding: 3px 10px; cursor: pointer; text-decoration: none; }
.cv-chipbtn:hover { background: rgba(56, 225, 255, 0.18); }
.cv-watch { margin-top: 10px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface); padding: 8px 12px; }
.cv-watch summary { cursor: pointer; font-size: 12px; font-weight: 800; letter-spacing: 0.08em; color: var(--text-2); }
.cv-watch ul { list-style: none; margin: 8px 0 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr)); gap: 6px 14px; }
.cv-watch li { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; font-size: 12px; }

/* options exchange */
.cv-options { display: flex; flex-direction: column; gap: 10px; padding: 12px 14px; border-radius: 12px; border: 1px solid var(--line); background: var(--surface); min-width: 0; }
.cv-opt-top { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; }
.cv-opt-top .cv-seg { margin: 0; }
.cv-opt-status { display: inline-flex; align-items: center; gap: 7px; font-size: 12px; font-weight: 800; letter-spacing: 0.08em; color: var(--ok); }
.cv-opt-status i { width: 9px; height: 9px; border-radius: 50%; background: currentColor; }
.cv-opt-status.na { color: #c4ccd8; }
.cv-opt-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 520px), 1fr)); gap: 12px; }
.cv-opt-side { min-width: 0; }
.cv-opt-h { margin: 0 0 6px; display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 900; letter-spacing: 0.18em; }
.cv-opt-side.s-CALLS .cv-opt-h { color: var(--ok); } .cv-opt-side.s-PUTS .cv-opt-h { color: var(--crit); }
.cv-opt-wrap { border: 1px solid var(--line); border-radius: 10px; }
.cv-opt th { font-size: 10px; letter-spacing: 0.06em; white-space: nowrap; color: #9fd8ff; }
.cv-opt th.r, .cv-opt td.r { text-align: right; }
.cv-opt tr.is-sim td { background: rgba(255, 111, 193, 0.08); }
.cv-opt tr.is-sel td { background: rgba(56, 225, 255, 0.12); }
.cv-opt-frame { border: 1px solid var(--line); border-radius: 10px; overflow: hidden; }
.cv-opt-frame .cv-opt-wrap { border: 0; border-radius: 0; }
.cv-opt-wait { min-height: 170px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; text-align: center; padding: 16px;
  background: repeating-linear-gradient(135deg, rgba(138, 148, 163, 0.07) 0 12px, transparent 12px 24px); }
.cv-opt-wait b { font-size: clamp(14px, 2.2vw, 20px); font-weight: 900; letter-spacing: 0.16em; color: #dfe6ef; }
.cv-opt-wait span { font-size: 11.5px; font-weight: 800; letter-spacing: 0.1em; color: #a3acb9; }
.cv-opt-wait span.faint { font-weight: 500; letter-spacing: 0; }
.cv-sim { font-size: 10.5px; font-weight: 900; letter-spacing: 0.1em; color: #fff; background: var(--cv-sim); padding: 1px 6px; border-radius: 3px; }
.cv-opt-meta { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); gap: 10px; font-size: 12px; }
.cv-rules { margin: 4px 0 0; padding-left: 16px; font-size: 11px; color: var(--text-2); }

/* results */
.cv-results { display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.cv-res-top { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.3fr); gap: 12px; }
.cv-strip { display: flex; gap: 8px; overflow-x: auto; padding-bottom: 4px; scrollbar-width: thin; }
.cv-day { flex: none; display: flex; flex-direction: column; align-items: flex-start; gap: 4px; width: 128px; padding: 8px 10px; border-radius: 10px; cursor: pointer; font: inherit; color: var(--text);
  border: 1px solid var(--line-strong); border-top: 3px solid var(--text-3); background: rgba(4, 10, 20, 0.6); text-align: left; }
.cv-day.win { border-top-color: var(--ok); } .cv-day.loss { border-top-color: var(--crit); background: linear-gradient(180deg, rgba(255, 79, 94, 0.12), rgba(4, 10, 20, 0.6)); }
.cv-day.live { box-shadow: inset 0 0 0 1px rgba(56, 225, 255, 0.5); }
.cv-day.is-sel { outline: 2px solid #38e1ff; outline-offset: 1px; }
.cv-day-d { font-size: 15px; font-weight: 800; }
.cv-day-s { font-size: 10.5px; color: var(--text-3); }
.cv-eq-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.cv-eq { min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.cv-eq-h { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; font-size: 11px; color: var(--text-2); }
.cv-eq-h b { margin-left: auto; color: #fff; }
.cv-eq-canvas { width: 100%; height: 130px; display: block; border-radius: 8px; background: rgba(2, 6, 13, 0.6); border: 1px solid var(--line-soft); }
.cv-eq.e-REPLAY .cv-eq-canvas { border-color: rgba(182, 156, 255, 0.4); }
.cv-res-wrap { border: 1px solid var(--line-soft); border-radius: 10px; }
.cv-res-table th { font-size: 10px; letter-spacing: 0.06em; white-space: nowrap; color: #9fd8ff; }
.cv-res-table td { white-space: nowrap; font-size: 12px; vertical-align: middle; }
.cv-res-table tr.is-loss td:first-child { box-shadow: inset 3px 0 0 var(--crit); }
.cv-res-table tr.is-win td:first-child { box-shadow: inset 3px 0 0 var(--ok); }
.cv-res-table tr.is-sel td { background: rgba(56, 225, 255, 0.1); }
.cv-stats { display: grid; grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); gap: 8px; margin-bottom: 10px; }
.cv-stat { display: flex; flex-direction: column; gap: 2px; padding: 7px 9px; border-radius: 8px; background: rgba(4, 10, 20, 0.55); border: 1px solid var(--line-soft); }
.cv-stat span { font-size: 10px; font-weight: 800; letter-spacing: 0.08em; color: var(--text-3); }
.cv-stat b { font-size: 15px; }
.cv-daybots { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 8px; }
.cv-daybot { display: flex; gap: 8px; align-items: baseline; padding: 5px 9px; border-radius: 8px; border: 1px solid var(--line-soft); font-size: 12px; }
.cv-h4 { margin: 12px 0 6px; font-size: 11px; font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase; color: var(--text-2); }
.cv-evlist-day { max-height: 320px; }
.cv-trade-grid { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 14px; }
.cv-trade-ctl { margin-bottom: 8px; }
.cv-trade-side .cv-evlist { max-height: 300px; }
.cv-paths { display: flex; flex-direction: column; gap: 6px; margin-top: 8px; }
.cv-path { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; font-size: 11.5px; }
.cv-path-step { display: inline-flex; gap: 5px; padding: 2px 7px; border-radius: 5px; background: rgba(120, 180, 255, 0.1); border: 1px solid var(--line-soft); }

/* replay + 2D city + misc */
.cv-replay-stats { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 8px; }
.cv-replay-grid { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 14px; }
.cv .city-tile, .cv .city-controls { background: var(--surface); border-color: var(--line); }
.cv-list-wrap { display: flex; flex-direction: column; gap: 8px; }
.cv-list-note { margin: 0; font-size: 12px; color: var(--text-2); }
.cv-bcard { border-left-color: var(--st, #8fa3bd) !important; background: linear-gradient(180deg, rgba(16, 30, 52, 0.95), rgba(7, 14, 26, 0.95)) !important; }
.cv-gold-links { display: flex; flex-wrap: wrap; gap: 8px; }
.city-heat td.bs-info { color: #38e1ff; background: rgba(56, 225, 255, 0.1); } .city-heat td.bs-warn { color: #ffb347; background: rgba(255, 179, 71, 0.1); }
.city-heat td.bs-ok { color: #3dffa8; background: rgba(61, 255, 168, 0.1); } .city-heat td.bs-crit { color: #ff4f5e; background: rgba(255, 79, 94, 0.12); }
.city-heat td.bs-hazard { color: #c4ccd8; background: repeating-linear-gradient(135deg, rgba(163, 172, 185, 0.16) 0 4px, transparent 4px 8px); }
.city-heat td.bs-off, .city-heat td.bs-night, .city-heat td.bs-dim { color: var(--text-3); }
.city-heat td.md-REPLAY { color: #e2d8ff; background: repeating-linear-gradient(135deg, rgba(182, 156, 255, 0.18) 0 4px, transparent 4px 8px); }
.city-heat td.md-SHADOW { color: var(--cv-shadow); } .city-heat td.md-PAPER { color: var(--cv-paper); }

/* nav + Command Center call to action */
.nav-sep { margin: 8px 6px 4px; padding-top: 8px; border-top: 1px solid var(--line-soft); font-size: 10.5px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text-3); }
.app.rail .nav-sep span { display: none; }
.nav a.nav-city { height: 46px; font-weight: 800; letter-spacing: 0.04em; font-size: 13px; color: #38e1ff; border: 1px solid rgba(56, 225, 255, 0.4); background: linear-gradient(90deg, rgba(56, 225, 255, 0.16), rgba(56, 225, 255, 0.03)); box-shadow: 0 0 18px rgba(56, 225, 255, 0.15); }
.nav a.nav-city .nav-icon { display: block; }
.nav a.nav-city[aria-current="page"] { color: #fff; }
.city-cta { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-rows: auto auto auto; gap: 2px 16px; padding: 16px 20px; border-radius: 14px; text-decoration: none;
  border: 1px solid rgba(56, 225, 255, 0.5); background: linear-gradient(110deg, rgba(56, 225, 255, 0.2), #08142a 45%, rgba(167, 139, 250, 0.16)); box-shadow: 0 0 40px rgba(56, 225, 255, 0.14); }
.city-cta:hover { border-color: #38e1ff; box-shadow: 0 0 50px rgba(56, 225, 255, 0.3); }
.city-cta-k { font-size: 11px; font-weight: 800; letter-spacing: 0.18em; color: #38e1ff; }
.city-cta-t { font-size: 24px; font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase; color: #fff; text-shadow: 0 0 16px rgba(56, 225, 255, 0.6); }
.city-cta-s { font-size: 13px; color: #a9bed6; }
.city-cta-go { grid-column: 2; grid-row: 1 / 4; align-self: center; font-size: 34px; color: #38e1ff; }

/* ---------------------------------------------------------------- Trading City V5: experiment, rules, brokers, options desk,
   WHY TRADE, sample size, trade story. Same night-city tokens; every status keeps its word next to its colour. */
.cv-expb { display: inline-flex; align-items: center; gap: 4px; height: 26px; padding: 0 10px; border-radius: 6px; font-size: 12.5px; font-weight: 700; white-space: nowrap;
  color: #e9fbff; border: 1px solid rgba(76, 195, 255, 0.6); background: linear-gradient(90deg, rgba(76, 195, 255, 0.22), rgba(76, 195, 255, 0.06)); }
.cv-expb b { color: #fff; letter-spacing: 0.06em; }
.cv-expb.off { border-style: dashed; color: var(--text-2); }
.cv-hbtn { display: inline-flex; align-items: center; gap: 6px; height: 26px; padding: 0 10px; border-radius: 6px; font: inherit; font-size: 12.5px; font-weight: 800; letter-spacing: 0.06em;
  color: #dff6ff; border: 1px solid var(--line-strong); background: rgba(4, 10, 20, 0.55); cursor: pointer; white-space: nowrap; }
.cv-hbtn svg { width: 13px; height: 13px; }
.cv-hbtn:hover { border-color: #38e1ff; background: rgba(56, 225, 255, 0.12); }
.cv-pf i { width: 9px; height: 9px; border-radius: 50%; background: currentColor; box-shadow: 0 0 8px currentColor; }
.cv-pf.t-ok { color: var(--ok); border-color: rgba(61, 255, 168, 0.55); } .cv-pf.t-crit { color: #fff; background: var(--crit); border-color: var(--crit); } .cv-pf.t-warn { color: var(--warn); border-color: rgba(255, 179, 71, 0.55); }
.cv-head .tone-warn { color: var(--warn); }
.cv-hash { overflow-wrap: anywhere; font-size: 11.5px; }
.cv-head-x { flex: 1 1 100%; display: flex; flex-wrap: wrap; align-items: center; gap: 6px 26px; padding-top: 9px; margin-top: -2px; border-top: 1px solid var(--line-soft); }
.cv-hx { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 9px; min-width: 0; }
.cv-hx .cv-k { margin-right: 2px; }

/* sample size */
.cv-n { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 2px 6px; font-size: 11px; font-weight: 700; color: var(--text-2); }
.cv-n b { padding: 0 6px; border-radius: 4px; font-size: 11px; letter-spacing: 0.04em; border: 1px solid var(--line-strong); color: #fff; white-space: nowrap; }
.cv-n.n-low b { border-color: rgba(255, 179, 71, 0.65); color: var(--warn); background: repeating-linear-gradient(135deg, rgba(255, 179, 71, 0.16) 0 4px, transparent 4px 8px); }
.cv-n.n-na b { color: var(--text-3); border-style: dashed; }
.cv-n.n-mid b { border-color: rgba(76, 195, 255, 0.6); color: var(--cv-shadow); } .cv-n.n-ok b { border-color: rgba(61, 255, 168, 0.6); color: var(--ok); }
.cv-n span { color: var(--text-3); font-weight: 600; }

/* WHY TRADE / WHY NO TRADE */
.cv-why { border-radius: 9px; border: 1px solid var(--line); border-left: 3px solid var(--wc, #8fa3bd); background: rgba(2, 6, 13, 0.55); padding: 7px 9px; min-width: 0; }
.cv-why.t-ok { --wc: #3dffa8; } .cv-why.t-warn { --wc: #ffb347; } .cv-why.t-info { --wc: #38e1ff; } .cv-why.t-dim { --wc: #8fa3bd; }
.cv-why-h { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 10px; margin-bottom: 4px; }
.cv-why-h b { font-size: 11px; font-weight: 900; letter-spacing: 0.12em; color: var(--wc, #cfe0f3); }
.cv-why-h span { font-size: 10.5px; color: var(--text-3); font-style: italic; }
.cv-why-l { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 3px 10px; margin: 0; font-size: 12px; }
.cv-why-l dt { color: var(--text-3); font-size: 10px; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; padding-top: 2px; }
.cv-why-l dd { margin: 0; overflow-wrap: anywhere; color: #dbe9f8; }
.cv-why.compact .cv-why-l { font-size: 11px; }
.cv-why.compact .cv-why-l dd { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.cv-why-l dd.tone-crit { color: #ffb3ba; } .cv-why-l dd.tone-ok { color: #b6ffd9; } .cv-why-l dd.tone-warn { color: #ffd59a; }

/* brokers */
.cv-brokers { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); gap: 12px; }
.cv-hall-brokers { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 10px; }
.cv-brk { min-width: 0; padding: 12px 14px; border-radius: 12px; border: 1px solid var(--line); background: var(--surface); display: flex; flex-direction: column; gap: 8px; }
.cv-brk.s-alpaca { border-color: rgba(250, 204, 21, 0.35); box-shadow: inset 3px 0 0 #facc15; }
.cv-brk.s-axi { border-color: rgba(233, 196, 106, 0.3); box-shadow: inset 3px 0 0 #e9c46a; }
.cv-brk.compact { padding: 9px 11px; background: rgba(2, 6, 13, 0.85); }
.cv-brk-head { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; }
.cv-brk-head h4 { margin: 0 4px 0 0; font-size: 12px; font-weight: 900; letter-spacing: 0.16em; color: #fff; }
.cv-brk-money { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.cv-brk-box { min-width: 0; display: flex; flex-direction: column; gap: 3px; padding: 8px 10px; border-radius: 9px; }
.cv-brk-box b { font-size: 20px; line-height: 1.15; }
.cv-brk-box.gb { border: 2px solid rgba(61, 255, 168, 0.55); background: linear-gradient(180deg, rgba(61, 255, 168, 0.12), rgba(4, 10, 20, 0.6)); }
.cv-brk-box.gb b { color: var(--ok); }
.cv-brk-box.br { border: 1px dashed rgba(169, 190, 214, 0.45); background: rgba(4, 10, 20, 0.5); }
.cv-brk-box.br b { color: #c7d6ea; font-weight: 600; }
.cv-brk-box .cv-s { overflow-wrap: anywhere; }
.cv-brk-rule { margin: 0; padding: 6px 9px; border-radius: 7px; font-size: 12px; font-weight: 700; color: #e9fbff; background: rgba(61, 255, 168, 0.08); border: 1px solid rgba(61, 255, 168, 0.3); }
.cv-brk-kv { grid-template-columns: repeat(2, minmax(0, max-content) minmax(0, 1fr)); }
.cv-h5 { margin: 4px 0 0; font-size: 10.5px; font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase; color: var(--text-3); }
.cv-brk-tw { border: 1px solid var(--line-soft); border-radius: 8px; }
.cv-brk-t th { font-size: 10px; letter-spacing: 0.06em; color: #9fd8ff; white-space: nowrap; }
.cv-brk-t td { font-size: 12px; white-space: nowrap; }
.cv-axi { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.cv-axi li { padding: 6px 9px; border-radius: 8px; border: 1px solid var(--line-soft); background: rgba(4, 10, 20, 0.5); display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.cv-axi li.a-RUNTIME { border-color: rgba(233, 196, 106, 0.5); }
.cv-axi-top { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; }
.cv-axi-top b { font-size: 14px; color: #fff; letter-spacing: 0.06em; }
.cv-axi-kind { font-size: 11px; color: #e9c46a; font-weight: 700; }
.cv-axi-why { font-size: 11px; color: var(--text-3); overflow-wrap: anywhere; }
.cv-brk.compact .cv-axi li { padding: 4px 8px; flex-direction: row; flex-wrap: wrap; align-items: center; gap: 2px 10px; }

/* event kinds (V5) */
.cv-ev.k-sys { --kc: #dff3ff; } .cv-ev.k-opt { --kc: #f472b6; } .cv-ev.k-optrej { --kc: #ff8a65; }
.cv-ev-sys, .cv-ev-opt { font-size: 9.5px; font-weight: 900; letter-spacing: 0.1em; padding: 0 5px; border-radius: 3px; }
.cv-ev-sys { color: #04101e; background: #dff3ff; } .cv-ev-opt { color: #fff; background: #b8457f; }
.cv-ev.k-sys .cv-ev-text { color: #f4fbff; font-weight: 600; }
.cv-bl-ev li.k-optrej span:last-child { color: #ffc2ad; } .cv-bl-ev li.k-sys span:last-child { color: #f4fbff; }

/* options desk (V5) */
.cv-indic { display: inline-flex; align-items: center; height: 26px; padding: 0 11px; border-radius: 6px; font-size: 12.5px; font-weight: 900; letter-spacing: 0.12em; color: #2b1100;
  background: repeating-linear-gradient(135deg, #ffbf3c 0 10px, #ffd36b 10px 20px); border: 1px solid #ffbf3c; }
.cv-opt-facts { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 18px; font-size: 12px; }
.cv-opt-facts b { color: #fff; }
.cv-opt-feed { flex-basis: 100%; font-size: 11px; color: var(--text-3); }
.cv-exp { margin: 0; flex-wrap: wrap; }
.cv-opt-x { font-size: 11px; font-weight: 700; letter-spacing: 0.06em; color: var(--text-2); }
.cv-options .cv-opt-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 1180px), 1fr)); }
.cv-opt-n { margin-left: auto; font-size: 10.5px; font-weight: 700; letter-spacing: 0.04em; color: var(--text-3); }
.cv-opt-wrap { max-height: 380px; overflow: auto; }
.cv-opt thead th { position: sticky; top: 0; z-index: 1; background: #0b1628; }
.cv-opt td { font-size: 11.5px; white-space: nowrap; }
.cv-opt tr.is-itm td { background: rgba(120, 180, 255, 0.05); }
.cv-opt tr.is-atm td { background: rgba(255, 211, 107, 0.14); box-shadow: inset 0 1px 0 rgba(255, 211, 107, 0.6), inset 0 -1px 0 rgba(255, 211, 107, 0.6); }
.cv-opt tr.is-sel td { background: rgba(244, 114, 182, 0.18); }
.cv-atm { color: #ffd36b; }
.cv-prevs { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr)); gap: 10px; }
.cv-prev { min-width: 0; display: flex; flex-direction: column; gap: 6px; padding: 10px 12px; border-radius: 10px; border: 1px solid var(--line-strong); background: rgba(2, 6, 13, 0.7); }
.cv-prev.k-CALL { box-shadow: inset 3px 0 0 var(--ok); } .cv-prev.k-PUT { box-shadow: inset 3px 0 0 var(--crit); }
.cv-prev header { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; }
.cv-prev header b { font-size: 12px; font-weight: 900; letter-spacing: 0.14em; color: #fff; }
.cv-prev-c { display: flex; flex-direction: column; gap: 2px; font-size: 12px; color: #dbe9f8; overflow-wrap: anywhere; }
.cv-prev-c .mono { font-size: 13px; color: #fff; }
.cv-prev-v { display: flex; flex-direction: column; gap: 2px; }
.cv-prev-v b { font-size: 14px; }
.cv-why-list { margin: 0; padding-left: 18px; font-size: 11.5px; color: var(--text-2); columns: 2 220px; }
.cv-prev-rej { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 6px; font-size: 11px; color: var(--text-3); }
.cv-opt-ev { max-height: 260px; }
.cv-kiosks { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); gap: 10px; }
.cv-kiosk { display: flex; flex-direction: column; align-items: flex-start; gap: 3px; padding: 10px 12px; border-radius: 10px; font: inherit; color: var(--text); text-align: left; cursor: pointer;
  border: 1px solid rgba(244, 114, 182, 0.45); background: linear-gradient(180deg, rgba(244, 114, 182, 0.12), rgba(4, 10, 20, 0.7)); min-width: 0; }
.cv-kiosk.na { border-color: rgba(138, 148, 163, 0.5); background: repeating-linear-gradient(135deg, rgba(138, 148, 163, 0.08) 0 8px, rgba(4, 10, 20, 0.7) 8px 16px); }
.cv-kiosk:hover { border-color: #f472b6; }
.cv-kiosk-t { font-size: 14px; font-weight: 900; letter-spacing: 0.12em; color: #fff; }
.cv-kiosk-s { font-size: 11px; color: var(--text-2); }
.cv-kiosk-e { font-size: 11px; color: var(--text-3); overflow-wrap: anywhere; }
.cv-kiosk-e.k-optrej { color: #ffc2ad; } .cv-kiosk-e.k-opt { color: #ffc7e4; }

/* scanner (V5 columns) */
.cv-scan .cv-stick { position: sticky; z-index: 1; background: #0b1628; }
.cv-scan .cv-stick.s0 { left: 0; min-width: 56px; } .cv-scan .cv-stick.s1 { left: 56px; box-shadow: 1px 0 0 var(--line); }
.cv-scan tr.is-sel td.cv-stick { background: #10263d; }
.cv-optc { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; }
.cv-optc .mono { font-size: 11px; color: #fff; }
.cv-optc-s { font-size: 10.5px; color: var(--text-3); }
.cv-mkt-src { font-size: 11px; font-weight: 700; color: var(--cv-shadow); }
.cv-ver { font-size: 11px; color: var(--text-2); }

/* Daily Results V5: forward ledger + trade story */
.cv-ledger.l-SHADOW { border-color: rgba(76, 195, 255, 0.45); }
.cv-ledger.l-REPLAY { border-color: rgba(182, 156, 255, 0.45); }
.cv-stat em { font-style: normal; font-size: 10.5px; color: var(--text-3); overflow-wrap: anywhere; }
.cv-story { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 250px), 1fr)); gap: 8px; }
.cv-story-s { display: grid; grid-template-columns: 22px minmax(0, 1fr); gap: 8px; padding: 8px 10px; border-radius: 9px; border: 1px solid var(--line-soft); background: rgba(4, 10, 20, 0.55); min-width: 0; }
.cv-story-s.is-ahead { opacity: 0.38; }
.cv-story-s.t-ok { border-left: 3px solid var(--ok); } .cv-story-s.t-crit { border-left: 3px solid var(--crit); } .cv-story-s.t-warn { border-left: 3px solid var(--warn); } .cv-story-s.t-info { border-left: 3px solid var(--info); }
.cv-story-n { width: 22px; height: 22px; display: grid; place-items: center; border-radius: 50%; font-size: 11px; font-weight: 900; color: #04101e; background: #9fd8ff; }
.cv-story-h { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 2px 8px; font-size: 12px; }
.cv-story-h b { color: #fff; letter-spacing: 0.04em; }
.cv-story-h span { color: var(--text-3); font-size: 11px; }
.cv-story-l { font-size: 11.5px; color: var(--text-2); overflow-wrap: anywhere; }

/* ---------------------------------------------------------------- Trading City V5.1: EXPERIMENTAL_PAPER (real Alpaca PAPER orders)
   Lime = paper execution (never LIVE red, never PAPER-qualified amber, never SHADOW sky). Research verdict and execution
   permission are two chips that always appear together. Connectivity tests read as SYSTEM (white, dotted); EVENT_RISK orange. */
:root { --cv-replay: #b69cff; --cv-shadow: #4cc3ff; --cv-paper: #ffbf3c; --cv-live: #ff3b4e; --cv-sim: #ff6fc1; --cv-na: #8a94a3;
  --cv-exp: #c6f432; --cv-exp-soft: rgba(198, 244, 50, 0.13); --cv-exp-line: rgba(198, 244, 50, 0.55); }     /* badges also render in the inspector drawer */
.cv-mode.m-EXPERIMENTAL_PAPER { color: #102000; border-color: var(--cv-exp); background: var(--cv-exp); box-shadow: 0 0 0 2px rgba(198, 244, 50, 0.22), 0 0 12px rgba(198, 244, 50, 0.3); }
.cv-mode.m-SYSTEM_CONNECTIVITY_TEST { color: #f4fbff; border-color: rgba(223, 243, 255, 0.8); border-style: dotted; background: rgba(223, 243, 255, 0.08); }
.cv-mode.m-AXI_DEMO { color: #e9c46a; border-color: #e9c46a; border-style: double; border-width: 3px; background: rgba(233, 196, 106, 0.08); }
.cv-mode.small.m-AXI_DEMO { border-width: 3px; }
.tone-pexec { color: var(--cv-exp); }

/* research / execution chips */
.cv-dims { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 4px; min-width: 0; }
.cv-dims.stack { flex-direction: column; align-items: flex-start; }
.cv-dim { display: inline-flex; align-items: stretch; height: 22px; border-radius: 5px; overflow: hidden; font-size: 11px; font-weight: 800; letter-spacing: 0.06em; white-space: nowrap; border: 1px solid var(--dc, var(--line-strong)); }
.cv-dim i { display: inline-flex; align-items: center; padding: 0 6px; font-style: normal; font-size: 9.5px; letter-spacing: 0.1em; color: var(--text-3); background: rgba(4, 10, 20, 0.7); }
.cv-dim b { display: inline-flex; align-items: center; padding: 0 7px; color: var(--dt, #dbe9f8); background: var(--db, transparent); }
.cv-dim.small { height: 19px; font-size: 10px; }
.cv-dim.small i { padding: 0 5px; font-size: 9px; } .cv-dim.small b { padding: 0 6px; }
.cv-dim.r-REJECTED { --dc: rgba(255, 93, 108, 0.55); --dt: #ffb3ba; --db: rgba(255, 93, 108, 0.12); }
.cv-dim.r-UNPROVEN, .cv-dim.r-RESEARCH_ONLY { --dc: rgba(169, 190, 214, 0.5); --dt: #cfdbea; --db: rgba(169, 190, 214, 0.08); }
.cv-dim.r-SURVIVED { --dc: rgba(61, 255, 168, 0.5); --dt: var(--ok); --db: var(--ok-soft); }
.cv-dim.x-EXPERIMENTAL_PAPER { --dc: var(--cv-exp); --dt: #102000; --db: var(--cv-exp); }
.cv-dim.x-PAPER { --dc: var(--cv-paper); --dt: #1b1300; --db: var(--cv-paper); }
.cv-dim.x-SHADOW { --dc: rgba(76, 195, 255, 0.6); --dt: var(--cv-shadow); --db: rgba(76, 195, 255, 0.08); }
.cv-dim.x-OFFLINE { --dc: var(--line-strong); --dt: var(--text-3); }
.cv-dims-big { margin-bottom: 8px; }
.cv-dims-big .cv-dim { height: 28px; font-size: 13px; }

/* header + banner */
.cv-pexec { padding: 2px 0; align-items: flex-start; }
.cv-sb-row.r-EXPERIMENTAL_PAPER { grid-template-columns: 92px minmax(0, 1fr); }
.cv-sb-row.r-EXPERIMENTAL_PAPER .cv-mode { white-space: normal; height: auto; max-width: 92px; padding: 3px 5px; line-height: 1.15; text-align: center; letter-spacing: 0.04em; }
.cv-pexec-b { display: inline-flex; align-items: center; gap: 8px; height: 34px; padding: 0 14px; border-radius: 8px; font-size: 15px; font-weight: 900; letter-spacing: 0.12em; white-space: nowrap;
  color: #102000; background: var(--cv-exp); border: 2px solid #e6ff8a; box-shadow: 0 0 0 3px rgba(198, 244, 50, 0.18), 0 0 22px rgba(198, 244, 50, 0.45); }
.cv-pexec-b i { width: 10px; height: 10px; border-radius: 50%; background: #102000; box-shadow: 0 0 0 0 rgba(16, 32, 0, 0.6); animation: cv-pe 1.6s ease-out infinite; }
.cv-pexec-b.small { height: 22px; padding: 0 8px; font-size: 10.5px; border-width: 1px; gap: 5px; }
.cv-pexec-b.small i { width: 7px; height: 7px; }
@keyframes cv-pe { 0% { box-shadow: 0 0 0 0 rgba(16, 32, 0, 0.6); } 80%, 100% { box-shadow: 0 0 0 6px rgba(16, 32, 0, 0); } }
.cv-pexec-off { display: inline-flex; align-items: center; height: 26px; padding: 0 10px; border-radius: 6px; font-size: 12px; font-weight: 800; letter-spacing: 0.08em; color: var(--text-2); border: 1px dashed var(--line-strong); white-space: nowrap; }
.cv-pexec.on .cv-pexec-s { color: #e6ff8a; font-weight: 700; }
.cv-banner.b-PEXEC { border-color: var(--cv-exp-line); background: linear-gradient(90deg, rgba(198, 244, 50, 0.2), rgba(11, 20, 36, 0.85) 62%); }
.cv-banner-pe { display: inline-flex; flex-wrap: wrap; gap: 6px; }
.cv-lg.s-pexec { --st: #c6f432; }
.cv-lg.s-pexec i { border-radius: 50%; background: transparent; border: 2px solid #c6f432; }

/* desks, scanner, heatmap */
.cv-desk.is-pexec { box-shadow: inset 3px 0 0 var(--cv-exp), 0 0 0 1px rgba(0, 0, 0, 0.3), 0 10px 30px rgba(0, 0, 0, 0.35), 0 0 22px rgba(198, 244, 50, 0.16); }
.cv-scan tr.is-pexec td.cv-stick.s0 { box-shadow: inset 3px 0 0 var(--cv-exp); }
.city-heat td.pexec { background: var(--cv-exp-soft); }
.cv-why-l dd.tone-pexec { color: #e6ff8a; }
.cv-sub-h { margin: 12px 0 6px; font-size: 13px; font-weight: 900; letter-spacing: 0.14em; text-transform: uppercase; color: #e6ff8a; }

/* events */
.cv-ev.k-broker { --kc: #c6f432; } .cv-ev.k-conn { --kc: #dff3ff; } .cv-ev.k-evrisk { --kc: #ff9f43; }
.cv-ev.k-conn { border-left-style: dotted; background: rgba(223, 243, 255, 0.03); }
.cv-ev-brk, .cv-ev-conn, .cv-ev-evr { font-size: 9.5px; font-weight: 900; letter-spacing: 0.1em; padding: 0 5px; border-radius: 3px; white-space: nowrap; }
.cv-ev-brk { color: #102000; background: #c6f432; } .cv-ev-conn { color: #dff3ff; border: 1px dotted #dff3ff; } .cv-ev-evr { color: #1f0f00; background: #ff9f43; }
.cv-ev.k-broker .cv-ev-text { color: #f1ffd0; }
.cv-bl-ev li.k-broker span:last-child { color: #e6ff8a; } .cv-bl-ev li.k-evrisk span:last-child { color: #ffc58a; }

/* open positions: ALPACA PAPER vs SHADOW */
.cv-brokers-wrap { display: flex; flex-direction: column; gap: 12px; }
.cv-pos2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.cv-pos2.compact { grid-template-columns: minmax(0, 1fr); gap: 8px; }
.cv-pos-col { min-width: 0; padding: 9px 11px; border-radius: 10px; border: 1px solid var(--line); background: rgba(2, 6, 13, 0.6); display: flex; flex-direction: column; gap: 6px; }
.cv-pos-col.s-paper { border-color: var(--cv-exp-line); box-shadow: inset 3px 0 0 var(--cv-exp); }
.cv-pos-col.s-shadow { border-color: rgba(76, 195, 255, 0.4); box-shadow: inset 3px 0 0 var(--cv-shadow); }
.cv-pos-col header { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; }
.cv-pos-col h4 { margin: 0; font-size: 11.5px; font-weight: 900; letter-spacing: 0.14em; color: #fff; }
.cv-pp-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.cv-pp { min-width: 0; padding: 6px 8px; border-radius: 8px; border: 1px solid var(--line-soft); background: rgba(4, 10, 20, 0.6); display: flex; flex-direction: column; gap: 3px; }
.cv-pp.k-OPTION { border-color: rgba(244, 114, 182, 0.4); }
.cv-pp.unrouted { border-style: dashed; }
.cv-pp-top { display: flex; flex-wrap: wrap; align-items: center; gap: 3px 8px; font-size: 12px; min-width: 0; }
.cv-occ { color: #ffd1ea; overflow-wrap: anywhere; }
.cv-pp-kv { font-size: 11px; }
.cv-pp-kv dd { overflow-wrap: anywhere; }
.cv-tag.t-pexec { color: #102000; background: var(--cv-exp); border-color: var(--cv-exp); }
.cv-tag.t-shadow { color: var(--cv-shadow); border-color: rgba(76, 195, 255, 0.55); background: rgba(76, 195, 255, 0.08); }
.cv-tag.t-opt { color: #ffd1ea; border-color: rgba(244, 114, 182, 0.55); background: rgba(244, 114, 182, 0.1); }
.cv-tag.t-info { color: var(--info); border-color: rgba(56, 225, 255, 0.45); background: var(--info-soft); }
.cv-tag.t-conn { color: #dff3ff; border-style: dotted; border-color: rgba(223, 243, 255, 0.7); }
.cv-boards .cv-b-pos { grid-column: span 2; }
@media (max-width: 760px) { .cv-pos2 { grid-template-columns: minmax(0, 1fr); } .cv-boards .cv-b-pos { grid-column: auto; } }

/* option expression records + markers */
.cv-optrecs { display: flex; flex-direction: column; gap: 8px; margin-bottom: 12px; }
.cv-recs { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.cv-recs-top { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 6px 12px; }
.cv-recs-top .cv-opt-h { margin: 0; }
.cv-recs-facts { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 16px; font-size: 12px; }
.cv-expopt { display: inline-flex; flex-wrap: wrap; align-items: baseline; gap: 2px 6px; padding: 4px 9px; border-radius: 7px; border: 1px solid var(--cv-exp-line); background: var(--cv-exp-soft); color: #e9f7c9; }
.cv-expopt b { color: #fff; }
.cv-recs-wrap { max-height: 360px; overflow: auto; border: 1px solid var(--line-soft); border-radius: 8px; }
.cv-recs-t thead th { position: sticky; top: 0; z-index: 1; background: #0b1628; font-size: 10px; letter-spacing: 0.06em; white-space: nowrap; }
.cv-recs-t td { font-size: 11.5px; white-space: nowrap; vertical-align: top; }
.cv-recs-t tr.mk-row-pexec td { background: rgba(198, 244, 50, 0.07); }
.cv-rec-why { display: flex; flex-direction: column; gap: 1px; white-space: normal; min-width: 230px; max-width: 320px; font-size: 11px; }
.cv-rec-why b { color: #fff; font-size: 11px; }
.cv-rec-why details summary { cursor: pointer; color: var(--text-3); font-size: 10.5px; }
.cv-rec-why details[open] { display: flex; flex-direction: column; gap: 2px; }
.cv-mk { display: inline-flex; align-items: center; height: 20px; padding: 0 7px; border-radius: 4px; font-size: 10.5px; font-weight: 900; letter-spacing: 0.06em; white-space: nowrap; border: 1px solid; }
.cv-mk.mk-sel { color: var(--info); border-color: rgba(56, 225, 255, 0.6); background: var(--info-soft); }
.cv-mk.mk-pexec { color: #102000; border-color: var(--cv-exp); background: var(--cv-exp); }
.cv-mk.mk-prem { color: #ffd59a; border-color: rgba(255, 179, 71, 0.6); background: rgba(255, 179, 71, 0.12); }
.cv-mk.mk-rej { color: #ffb3ba; border-color: rgba(255, 93, 108, 0.55); background: transparent; border-style: dashed; }
.cv-mk.mk-crit { color: #fff; border-color: var(--crit); background: rgba(255, 93, 108, 0.45); }
.cv-mk.derived { opacity: 0.8; }
.cv-kiosk-x { font-size: 10.5px; font-weight: 800; letter-spacing: 0.04em; color: var(--text-3); }
.cv-kiosk-x.on { color: #e6ff8a; }

/* Daily Results V5.1: result-family tabs, experimental block, connectivity test */
.cv-ltabs { flex-wrap: wrap; height: auto; }
.cv-ltabs button { white-space: nowrap; }
.cv-ltabs button.lt-EXPERIMENTAL_PAPER[aria-pressed="true"] { background: var(--cv-exp); color: #102000; }
.cv-ledger.l-EXPERIMENTAL_PAPER { border-color: var(--cv-exp-line); box-shadow: inset 0 3px 0 var(--cv-exp); }
.cv-ledger.l-PAPER { border-color: rgba(255, 191, 60, 0.45); }
.cv-ledger.l-SYSTEM_CONNECTIVITY_TEST { border-color: rgba(223, 243, 255, 0.45); border-style: dotted; }
.cv-ledger.l-AXI_DEMO { border-color: rgba(233, 196, 106, 0.45); }
.cv-exp-note { margin: 8px 0; padding: 7px 10px; border-radius: 8px; font-size: 12px; font-weight: 650; color: #f1ffd0; border: 1px solid var(--cv-exp-line); background: var(--cv-exp-soft); }
.cv-ledger.l-AXI_DEMO .cv-exp-note { color: #f6e7bd; border-color: rgba(233, 196, 106, 0.45); background: rgba(233, 196, 106, 0.08); }
.cv-exp-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 380px), 1fr)); gap: 10px; }
.cv-block { margin: 10px 0; padding: 10px 12px; border-radius: 10px; border: 1px solid var(--line); background: rgba(2, 6, 13, 0.45); min-width: 0; }
.cv-block.l-EXPERIMENTAL_PAPER { border-color: var(--cv-exp-line); box-shadow: inset 3px 0 0 var(--cv-exp); }
.cv-block.l-PAPER { border-color: rgba(255, 191, 60, 0.45); box-shadow: inset 3px 0 0 var(--cv-paper); }
.cv-block.l-SHADOW { border-color: rgba(76, 195, 255, 0.35); box-shadow: inset 3px 0 0 var(--cv-shadow); }
.cv-block.l-REPLAY { border-color: rgba(182, 156, 255, 0.35); box-shadow: inset 3px 0 0 var(--cv-replay); }
.cv-block .cv-card-head .cv-h4 { margin: 0; }
.cv-day.m-EXPERIMENTAL_PAPER { box-shadow: inset 0 -3px 0 var(--cv-exp); }
.cv-day .cv-mode { max-width: 100%; white-space: normal; height: auto; min-height: 20px; line-height: 1.15; padding: 2px 6px; }
.cv-day-opts { margin: 10px 0; }
.cv-story-s.t-pexec { border-left: 3px solid var(--cv-exp); }
.cv-story-s.k-contract .cv-story-n, .cv-story-s.k-order .cv-story-n, .cv-story-s.k-fill .cv-story-n { background: #c6f432; }
.cv-conn-list { display: flex; flex-direction: column; gap: 10px; }
.cv-conn { padding: 10px 12px; border-radius: 10px; border: 1px dotted rgba(223, 243, 255, 0.5); background: rgba(4, 10, 20, 0.55); display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.cv-conn header { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; }
.cv-conn header b { font-size: 15px; color: #fff; }
.cv-conn-steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 170px), 1fr)); gap: 6px; }
.cv-conn-steps li { display: grid; grid-template-columns: 20px minmax(0, 1fr) auto; gap: 2px 6px; align-items: center; align-content: start; padding: 6px 8px; border-radius: 8px; border: 1px solid rgba(61, 255, 168, 0.35); background: rgba(61, 255, 168, 0.06); min-width: 0; }
.cv-conn-steps li.fail { border-color: rgba(255, 93, 108, 0.6); background: var(--crit-soft); }
.cv-conn-n { width: 20px; height: 20px; display: grid; place-items: center; border-radius: 50%; font-size: 10.5px; font-weight: 900; color: #04101e; background: #dff3ff; }
.cv-conn-steps b { font-size: 11px; letter-spacing: 0.06em; color: #fff; }
.cv-conn-ok { font-size: 10px; font-weight: 900; color: var(--ok); } .cv-conn-steps li.fail .cv-conn-ok { color: var(--crit); }
.cv-conn-d { grid-column: 2 / -1; font-size: 11px; color: var(--text-2); overflow-wrap: anywhere; }
.cv-conn-x { margin: 0; font-size: 12px; color: var(--text-2); }
.cv-eq-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); }
.cv-eq-grid:has(> :nth-child(4)) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (max-width: 760px) { .cv-eq-grid:has(> :nth-child(4)) { grid-template-columns: minmax(0, 1fr); } }

@media (max-width: 1180px) { .cv-brokers, .cv-hall-brokers { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 760px) { .cv-brk-money { grid-template-columns: minmax(0, 1fr); } .cv-brk-kv { grid-template-columns: minmax(0, max-content) minmax(0, 1fr); } .cv-scan .cv-stick { position: static; box-shadow: none; } }

@media (max-width: 1500px) { .cv-grid { grid-template-columns: 270px minmax(0, 1fr) 320px; } }
@media (max-width: 1500px) { .cv-head { gap: 8px 20px; padding: 10px 14px; } .cv-title { font-size: 21px; } .cv-title-sub { font-size: 10px; letter-spacing: 0.12em; } .cv-clock-v { font-size: 21px; } .cv-brand-mark { width: 38px; height: 38px; } .cv-mode.big { height: 30px; font-size: 14px; padding: 0 12px; } }
@media (max-width: 1380px) { .cv-hud-hint { display: none; } .cv-grid { grid-template-columns: 250px minmax(0, 1fr) 290px; } .cv-head { gap: 8px 16px; } .cv-count span { font-size: 9px; } .cv-head .cv-s { font-size: 11px; } }
@media (max-width: 1180px) {
  .cv-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); --stage-h: clamp(460px, 62vh, 760px); }
  .cv-center { grid-column: 1 / -1; order: -1; }
  .cv-left, .cv-right { max-height: none; }
  .cv-events .cv-evlist { max-height: 520px; }
  .cv-res-top, .cv-trade-grid, .cv-replay-grid { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 760px) {
  .cv { padding: 10px 10px 32px; gap: 10px; }
  .cv-head { padding: 12px; gap: 10px 16px; }
  .cv-brand { width: 100%; }
  .cv-grid { grid-template-columns: minmax(0, 1fr); }
  .cv-eq-grid { grid-template-columns: minmax(0, 1fr); }
  .cv-hud-tl, .cv-hud-tr { display: none; }
  .cv-hall { padding: 10px; }
  .city-cta { grid-template-columns: minmax(0, 1fr); }
  .city-cta-go { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .cv-worker.busy .w-person, .cv-worker.busy .w-glass, .cv-worker.busy .w-lamp, .cv-data.d-LIVE i, .cv-ev.is-new { animation: none; }
}

/* ---------------------------------------------------------------- Trading City V5.3: visibility (state details, economics, trade
   history + inspector, tool health, rejection breakdown, market-closed hero). Local styles only; no url(). */
.cv-dim.x-PAPER_QUALIFIED { --dc: var(--cv-paper); --dt: #1b1300; --db: var(--cv-paper); }
.cv-dim.x-RESEARCH_ONLY, .cv-dim.x-DISABLED { --dc: var(--line-strong); --dt: var(--text-3); --db: transparent; border-style: dashed; }
.cv-dim em { display: inline-flex; align-items: center; padding: 0 6px; font-style: normal; font-size: 9px; letter-spacing: 0.08em; color: var(--cv-exp); background: rgba(4, 10, 20, 0.85); }
.cv-dim.is-next b { background: var(--cv-exp-soft); color: var(--cv-exp); }
.cv-state.cv-detail { height: auto; min-height: 22px; white-space: normal; text-align: left; line-height: 1.25; padding: 3px 8px; overflow-wrap: anywhere; }
.cv-state.cv-detail.small { font-size: 10.5px; letter-spacing: 0.03em; }
.cv-role { display: inline-flex; margin-left: 6px; padding: 0 5px; border-radius: 4px; font-size: 9.5px; font-weight: 900; letter-spacing: 0.08em; color: #ffd1ea; border: 1px solid rgba(244, 114, 182, 0.6); background: rgba(244, 114, 182, 0.1); vertical-align: middle; }
.cv-subnav button.cv-sn-key { border-color: rgba(198, 244, 50, 0.5); color: #e7ffad; }
.cv-derived { white-space: nowrap; font-size: inherit; font-weight: inherit; } .cv-derived sup, sup.cv-derived { margin-left: 2px; font-size: 9px; font-weight: 900; color: var(--warn); }
.cv-insp-now { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-bottom: 6px; }
.cv-insp-now .cv-state.cv-detail { font-size: 12.5px; padding: 5px 10px; }

/* checklist PASS / WAIT */
.cv-check { display: flex; flex-direction: column; gap: 6px; }
.cv-check-head { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; font-size: 12px; }
.cv-check-head b { letter-spacing: 0.06em; }
.cv-check-head > span:last-child { color: var(--text-3); font-size: 11px; }
.cv-check-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 3px; }
.cv-check-list li { display: grid; grid-template-columns: minmax(0, 1fr) 52px minmax(0, max-content); gap: 8px; align-items: center; padding: 4px 8px; border-radius: 6px; font-size: 12px; background: rgba(127, 147, 173, 0.07); }
.cv-check-n { font-weight: 700; letter-spacing: 0.04em; overflow-wrap: anywhere; }
.cv-check-r { font-size: 10.5px; font-weight: 900; letter-spacing: 0.1em; text-align: center; border-radius: 4px; padding: 1px 0; }
.cv-check-list li.is-pass .cv-check-r { color: #04101e; background: var(--ok, #3dffa8); }
.cv-check-list li.is-wait .cv-check-r { color: var(--warn, #ffb347); border: 1px dashed var(--warn, #ffb347); }
.cv-check-v { color: var(--text-3); font-size: 11.5px; text-align: right; overflow-wrap: anywhere; }
.cv-check-empty { font-size: 11.5px; font-weight: 700; letter-spacing: 0.05em; color: var(--text-3); padding: 6px 0; }
.cv-check.compact .cv-check-list li { padding: 2px 6px; font-size: 11px; }

/* economics tiles */
.cv-econ { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.cv-econ-tiles { grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); margin-bottom: 0; }
.cv-econ .cv-stat, .drawer .cv-stat { background: rgba(127, 147, 173, 0.08); border-color: rgba(127, 147, 173, 0.2); min-width: 0; }
.cv-stat.wide { grid-column: 1 / -1; }
.cv-stat.risk { border-left: 3px solid var(--crit, #ff5d6c); } .cv-stat.reward { border-left: 3px solid var(--ok, #3dffa8); }
.cv-stat.bad b { color: var(--crit, #ff5d6c); } .cv-stat.good b { color: var(--ok, #3dffa8); }
.cv-stat b { overflow-wrap: anywhere; }
.cv-econ-trig { font-size: 12.5px; font-weight: 650; }
.cv-econ-notes { margin: 0; padding-left: 18px; font-size: 12px; display: grid; gap: 3px; color: var(--text-2); }
.cv-econ-cap { margin: 4px 0 0; font-size: 12px; font-weight: 700; }
.cv-pot { display: flex; flex-direction: column; gap: 8px; }
.cv-pot-head { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; }
.cv-pot-head > b { letter-spacing: 0.1em; }
.cv-pot.none { gap: 3px; padding: 8px 10px; border-radius: 8px; border: 1px dashed rgba(127, 147, 173, 0.4); font-size: 12px; }
.cv-pot.none b { letter-spacing: 0.1em; font-size: 11.5px; }
.cv-evid-src { font-size: 12px; font-weight: 650; }
.cv-stats-t td, .cv-stats-t th { white-space: nowrap; }
.cv-desk-pot { display: flex; flex-direction: column; gap: 1px; padding: 4px 6px; border-radius: 6px; border: 1px solid rgba(255, 179, 71, 0.35); background: rgba(255, 179, 71, 0.07); font-size: 11px; min-width: 0; }
.cv-desk-pot .mono { overflow-wrap: anywhere; }

/* tool health */
.cv-tools-ind .cv-tools-b { gap: 10px; }
.cv-tc { display: inline-flex; align-items: center; gap: 4px; font-variant-numeric: tabular-nums; }
.cv-tc .cv-light { width: 9px; height: 9px; }
.cv-tools-sum { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 14px; margin-bottom: 10px; font-size: 12.5px; font-weight: 800; letter-spacing: 0.05em; }
.cv-tools-sum .faint { font-weight: 500; letter-spacing: 0; }
.cv-tools-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); gap: 8px; align-items: start; }
.cv-tool { border-radius: 9px; border: 1px solid var(--line); background: rgba(4, 10, 20, 0.55); min-width: 0; }
.cv-tool.c-YELLOW { border-color: rgba(255, 179, 71, 0.45); } .cv-tool.c-RED { border-color: rgba(255, 79, 94, 0.6); background: rgba(255, 79, 94, 0.08); }
.cv-tool summary { display: grid; grid-template-columns: 12px minmax(0, 1fr) max-content; align-items: center; gap: 8px; padding: 8px 10px; cursor: pointer; list-style: none; }
.cv-tool summary::-webkit-details-marker { display: none; }
.cv-tool-n { font-size: 12px; font-weight: 800; letter-spacing: 0.05em; color: #e6f2ff; overflow-wrap: anywhere; }
.cv-tool-c { font-size: 10.5px; font-weight: 900; letter-spacing: 0.1em; }
.cv-tool-b { display: grid; gap: 4px; padding: 0 10px 9px 30px; font-size: 12px; color: var(--text-2); overflow-wrap: anywhere; }

/* rejection breakdown + missed trades */
.cv-rej-pick { margin-bottom: 8px; max-width: 220px; }
.cv-rej-list { list-style: none; margin: 0 0 10px; padding: 0; display: grid; gap: 7px; }
.cv-rej-row { display: grid; gap: 3px; min-width: 0; }
.cv-rej-top { display: flex; justify-content: space-between; gap: 10px; font-size: 12.5px; }
.cv-rej-top b { overflow-wrap: anywhere; letter-spacing: 0.04em; }
.cv-rej-bar { height: 8px; border-radius: 4px; background: rgba(127, 147, 173, 0.14); overflow: hidden; }
.cv-rej-bar i { display: block; height: 100%; border-radius: 4px; background: linear-gradient(90deg, #38e1ff, #6f8dff); }
.cv-rej-row.k-risk .cv-rej-bar i { background: linear-gradient(90deg, #ff8a65, #ff4f5e); }
.cv-rej-row.k-opt .cv-rej-bar i { background: linear-gradient(90deg, #f472b6, #a78bfa); }
.cv-rej-why { font-size: 11.5px; color: var(--text-3); }
.cv-missed { margin-top: 6px; padding: 10px 12px; border-radius: 10px; border: 1px dashed rgba(255, 179, 71, 0.5); background: repeating-linear-gradient(135deg, rgba(255, 179, 71, 0.05) 0 8px, transparent 8px 16px); }
.cv-missed header { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 4px; }
.cv-missed header b { letter-spacing: 0.1em; }
.cv-hyp { font-style: italic; color: var(--warn); white-space: nowrap; }

/* trade history */
.cv-hist-card { padding-top: 10px; }
.cv-hist-top { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 16px; margin-bottom: 8px; }
.cv-htabs { flex-wrap: wrap; max-width: 100%; }
.cv-hist-sum { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; font-size: 12.5px; }
.cv-hist-wrap { max-height: 520px; }
.cv-hist th { font-size: 10.5px; letter-spacing: 0.07em; white-space: nowrap; color: #9fd8ff; background: rgba(56, 225, 255, 0.06); position: sticky; top: 0; z-index: 1; }
.cv-hist td { white-space: nowrap; font-size: 12.5px; vertical-align: middle; }
.cv-hist .r { text-align: right; }
.cv-hist tr.is-loss td:first-child { box-shadow: inset 3px 0 0 var(--crit); } .cv-hist tr.is-win td:first-child { box-shadow: inset 3px 0 0 var(--ok); }
.cv-hstat { display: inline-flex; flex-direction: column; gap: 0; }
.cv-hstat em { font-style: normal; font-size: 10.5px; color: var(--text-3); white-space: normal; max-width: 260px; }
.cv-brk-tag { display: inline-flex; padding: 0 6px; border-radius: 4px; font-size: 10.5px; font-weight: 800; letter-spacing: 0.05em; border: 1px solid var(--line-strong); color: var(--text-2); white-space: nowrap; }
.cv-brk-tag.b-ALPACA_PAPER { color: #102000; background: var(--cv-exp, #c6f432); border-color: var(--cv-exp, #c6f432); }
.cv-brk-tag.b-SIMULATOR, .cv-brk-tag.b-SIMULATOR__SHADOW_ { color: var(--cv-shadow, #4cc3ff); border-color: rgba(76, 195, 255, 0.55); }
.cv-n.cv-sbadge b { white-space: nowrap; }

/* trade inspector (drawer) */
.cv-tinsp { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.cv-tinsp-strip { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; padding-bottom: 6px; border-bottom: 1px solid var(--line, rgba(127, 147, 173, 0.25)); }
.cv-oc { display: inline-flex; padding: 1px 8px; border-radius: 5px; font-size: 11px; font-weight: 800; letter-spacing: 0.04em; border: 1px solid; }
.cv-oc.pos { color: var(--ok); border-color: rgba(61, 255, 168, 0.5); background: var(--ok-soft); } .cv-oc.neg { color: var(--crit); border-color: rgba(255, 93, 108, 0.5); background: var(--crit-soft); }
.cv-tinsp-chart .city-chart { border-radius: 10px; }
.cv-tinsp .city-chart-canvas { height: 300px; }
.cv-story-full { grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr)); }
.drawer .cv-story-s { background: rgba(127, 147, 173, 0.07); border-color: rgba(127, 147, 173, 0.22); }
.drawer .cv-story-h b { color: inherit; }
.cv-tinsp-ev summary { cursor: pointer; font-size: 12px; font-weight: 700; color: var(--text-2); }
.cv-opt-econ { margin-top: 6px; }

/* options: why no contract passes; option economics */
.cv-nopass { border-radius: 8px; border: 1px dashed rgba(255, 179, 71, 0.5); padding: 4px 8px; font-size: 12px; min-width: 0; }
.cv-nopass summary { cursor: pointer; }
.cv-nopass summary b { letter-spacing: 0.08em; color: var(--warn); }
.cv-nopass-l { display: grid; grid-template-columns: max-content max-content; gap: 2px 14px; margin: 6px 0; }
.cv-nopass-l dt { color: var(--text-3); } .cv-nopass-l dd { margin: 0; text-align: right; }
.cv-oecon { display: flex; flex-wrap: wrap; gap: 2px 10px; font-size: 11.5px; white-space: nowrap; }
.cv-oecon i { font-style: normal; color: var(--text-3); }

/* actionable scanner */
.cv-act-wrap { border-radius: 12px; border: 1px solid var(--line); background: var(--surface); }
.cv-act th { font-size: 10.5px; letter-spacing: 0.07em; white-space: nowrap; color: #9fd8ff; background: rgba(56, 225, 255, 0.06); }
.cv-act td { white-space: nowrap; font-size: 12.5px; vertical-align: middle; }
.cv-act .r { text-align: right; }
.cv-act tr.is-sel td { background: rgba(56, 225, 255, 0.1); }
.cv-act .cv-stick { position: sticky; z-index: 1; background: #0b1628; }
.cv-act .cv-stick.s0 { left: 0; min-width: 56px; } .cv-act .cv-stick.s1 { left: 56px; box-shadow: 1px 0 0 var(--line); }
.cv-act-state { white-space: normal !important; min-width: 220px; max-width: 320px; }
.cv-act-detail { font-size: 11.5px; font-weight: 700; letter-spacing: 0.02em; color: #dbe9f8; }
.cv-dec { white-space: normal; max-width: 260px; }
.cv-tag.t-dim { color: var(--text-3); }
.cv-scan-more { margin-top: 6px; }
.cv-scan-more > summary { cursor: pointer; font-size: 12px; font-weight: 700; color: var(--text-2); padding: 4px 0; }

/* daily results: why this result */
.cv-explain { margin: 8px 0; padding: 10px 12px; border-radius: 10px; border: 1px solid var(--line); background: rgba(4, 10, 20, 0.45); }
.cv-explain-sum { margin: 0 0 6px; font-size: 13px; overflow-wrap: anywhere; }
.cv-explain-l { margin: 6px 0 0; padding-left: 18px; font-size: 12px; display: grid; gap: 3px; color: var(--text-2); }
.cv-econ-stats .cv-foot { grid-column: 1 / -1; }

/* market-closed hero */
.cv-hero { display: flex; flex-direction: column; gap: 10px; padding: 12px 16px; border-radius: 14px; border: 1px solid rgba(167, 139, 250, 0.4);
  background: linear-gradient(120deg, rgba(167, 139, 250, 0.14), rgba(10, 20, 36, 0.92) 40%, rgba(56, 225, 255, 0.1)); }
.cv-hero-head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 4px 16px; }
.cv-hero-head b { font-size: 15px; letter-spacing: 0.1em; color: #fff; }
.cv-hero-head span { font-size: 12px; color: var(--text-3); }
.cv-hero-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: 10px; }
.cv-hero-c { display: flex; flex-direction: column; gap: 5px; min-width: 0; padding: 10px 12px; border-radius: 10px; border: 1px solid var(--line); background: rgba(4, 10, 20, 0.55); }
.cv-hero-c h3 { margin: 0 0 2px; font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; color: #c7b8ff; }
.cv-hero-t { display: grid; grid-template-columns: minmax(0, 1fr) max-content; gap: 0 10px; align-items: baseline; }
.cv-hero-t .cv-k { grid-column: 1 / -1; font-size: 10px; }
.cv-hero-t b { font-size: 15px; color: #fff; }
.cv-hero-u { font-size: 12px; font-weight: 800; color: var(--cv-exp); font-variant-numeric: tabular-nums; }
.cv-hero-row { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; font-size: 13px; }
.cv-hero-list { margin: 0; padding-left: 16px; font-size: 11.5px; color: var(--text-2); display: grid; gap: 2px; }
.cv-hero-list li { overflow-wrap: anywhere; }
.cv-hero-links { display: flex; flex-wrap: wrap; gap: 6px; }
.city-heat td.cv-heat-st { white-space: normal; overflow: visible; text-overflow: clip; font-size: 11px; min-width: 190px; }

@media (max-width: 760px) {
  .cv-hero { padding: 10px 12px; }
  .cv-act .cv-stick { position: static; box-shadow: none; }
  .cv-check-list li { grid-template-columns: minmax(0, 1fr) 46px; }
  .cv-check-v { grid-column: 1 / -1; text-align: left; }
  .cv-econ-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cv-hist-top { flex-direction: column; align-items: stretch; }
  .cv-tools-ind { min-width: 0; }
}

/* ---------------------------------------------------------------- Trading City V6: vault, session chart, bot trade view, network,
   opportunities, ETF matrix, post-trade study, smart stop. Local styles only; no url(). */
.cv, .cv-view, .drawer { --cv-or: #f472b6; }
.drawer:has(.cv6-wide), .drawer:has(.cv6-btv) { width: min(1180px, 100vw); }
.cv-life { display: inline-flex; align-items: stretch; height: 22px; border-radius: 5px; overflow: hidden; font-size: 11px; font-weight: 800; letter-spacing: 0.05em; white-space: nowrap; border: 1px solid var(--line-strong); max-width: 100%; }
.cv-life i { display: inline-flex; align-items: center; padding: 0 6px; font-style: normal; font-size: 9.5px; letter-spacing: 0.1em; color: var(--text-3); background: rgba(4, 10, 20, 0.7); }
.cv-life b { display: inline-flex; align-items: center; padding: 0 7px; color: #dbe9f8; overflow: hidden; text-overflow: ellipsis; }
.cv-life.small { height: 19px; font-size: 10px; }
.cv-life.t-info { border-color: rgba(56, 225, 255, 0.5); } .cv-life.t-info b { color: #9fe9ff; }
.cv-life.t-warn { border-color: rgba(255, 179, 71, 0.6); } .cv-life.t-warn b { color: #ffd59a; background: rgba(255, 179, 71, 0.1); }
.cv-life.t-crit { border-color: rgba(255, 93, 108, 0.6); } .cv-life.t-crit b { color: #ffb3ba; }
.cv-dim.r-IDEA, .cv-dim.r-RESEARCHED, .cv-dim.r-TESTED { --dc: rgba(169, 190, 214, 0.5); --dt: #cfdbea; --db: rgba(169, 190, 214, 0.08); }
.cv-dim.r-SUPPORTED_EXPLORATORY, .cv-dim.r-ROBUST_EXPLORATORY { --dc: rgba(56, 225, 255, 0.55); --dt: #9fe9ff; --db: rgba(56, 225, 255, 0.08); }
.cv-dim.r-PAPER_CANDIDATE, .cv-dim.r-PAPER_PROVEN, .cv-dim.r-LIVE_CANDIDATE { --dc: rgba(61, 255, 168, 0.5); --dt: var(--ok); --db: var(--ok-soft); }
.cv6-desk-today, .cv6-card-today { font-variant-numeric: tabular-nums; }

/* today strip + similar setups */
.cv6-today { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 12px; padding: 7px 10px; border-radius: 9px; border: 1px solid var(--line); background: rgba(4, 10, 20, 0.5); font-size: 12.5px; margin-bottom: 8px; }
.cv6-today-v i { font-style: normal; font-size: 10px; letter-spacing: 0.1em; color: var(--text-3); }
.cv6-today-st { flex-basis: 100%; font-size: 11.5px; overflow-wrap: anywhere; }
.cv6-today.compact { padding: 4px 8px; font-size: 11.5px; }
.cv6-notprob { font-weight: 700; color: var(--warn); }

/* daily vault */
.cv6-vault { border-color: rgba(198, 244, 50, 0.35); background: linear-gradient(110deg, rgba(198, 244, 50, 0.07), rgba(11, 20, 36, 0.92) 45%); }
.cv6-vault.l-SHADOW { border-color: rgba(76, 195, 255, 0.45); background: linear-gradient(110deg, rgba(76, 195, 255, 0.08), rgba(11, 20, 36, 0.92) 45%); }
.cv6-vault.l-PAPER_QUALIFIED { border-color: rgba(255, 191, 60, 0.45); background: linear-gradient(110deg, rgba(255, 191, 60, 0.08), rgba(11, 20, 36, 0.92) 45%); }
.cv6-vault-head { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; margin-bottom: 8px; }
.cv6-vault-head h3 { margin: 0; font-size: 15px; font-weight: 900; letter-spacing: 0.16em; color: #fff; }
.cv6-never { font-size: 11px; font-weight: 800; letter-spacing: 0.08em; color: var(--warn); text-transform: uppercase; }
.cv6-vtabs { margin-left: auto; flex-wrap: wrap; max-width: 100%; }
.cv6-vtabs button { display: inline-flex; flex-direction: column; align-items: flex-start; gap: 0; line-height: 1.15; }
.cv6-vtabs button small { font-size: 10.5px; font-variant-numeric: tabular-nums; opacity: 0.85; }
.cv6-vtabs button.vt-EXPERIMENTAL_PAPER[aria-pressed="true"] { background: var(--cv-exp); color: #102000; }
.cv6-vtabs button.vt-SHADOW[aria-pressed="true"] { background: rgba(76, 195, 255, 0.25); color: #dff3ff; }
.cv6-vtabs button.vt-PAPER_QUALIFIED[aria-pressed="true"] { background: var(--cv-paper); color: #1b1300; }
.cv6-vault-tiles { grid-template-columns: repeat(auto-fill, minmax(112px, 1fr)); margin-bottom: 0; }
.cv6-vault-tiles .cv-stat em { font-size: 10px; }
.cv6-cta { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.cv6-cta-b { color: #102000; background: var(--cv-exp, #c6f432); border-color: var(--cv-exp, #c6f432); font-weight: 900; letter-spacing: 0.06em; }
.cv6-cta-b:hover { background: #dcff6a; }

/* session chart + bot trade view */
.cv6-chart { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.cv6-canvas { width: 100%; height: 340px; display: block; border-radius: 8px; background: rgba(4, 10, 20, 0.45); }
.cv6-legend { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 6px; font-size: 11px; }
.cv6-lg { display: inline-flex; align-items: center; gap: 5px; font: inherit; font-size: 11px; font-weight: 700; color: var(--text-2); background: transparent; border: 1px solid var(--line); border-radius: 999px; padding: 1px 8px; cursor: pointer; }
.cv6-lg i { width: 14px; height: 3px; display: inline-block; border-radius: 2px; }
.cv6-lg[aria-pressed="false"] { opacity: 0.45; text-decoration: line-through; }
.cv6-lg-k { color: var(--text-3); font-weight: 700; }
.cv6-k-in { color: var(--info); } .cv6-k-dia { display: inline-block; width: 8px; height: 8px; margin: 0 2px; transform: rotate(45deg); background: linear-gradient(135deg, var(--ok) 50%, var(--crit) 50%); } .cv6-k-st { color: var(--crit); } .cv6-k-tg { color: var(--ok); }
.cv6-sv { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.cv6-sv-bar { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 8px 12px; }
.cv6-sv-bar .segmented { flex-wrap: wrap; max-width: 100%; }
.cv6-sv-bar .control { min-width: 0; }
.cv6-sv-bar .select { max-width: 210px; }
.cv6-sv-body { display: flex; flex-direction: column; gap: 10px; min-width: 0; }
.cv6-sv-sums { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 12px; font-size: 12px; }
.cv6-sv-sum { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 4px; }
.cv6-sv-panel { display: flex; flex-direction: column; gap: 4px; padding: 8px; border-radius: 10px; border: 1px solid var(--line); background: rgba(4, 10, 20, 0.35); min-width: 0; }
.cv6-sv-ph { display: flex; flex-wrap: wrap; gap: 4px 12px; align-items: baseline; font-size: 12px; }
.cv6-sv.compact .cv6-canvas { height: 300px; }
.cv6-marks { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 360px), 1fr)); gap: 5px; }
.cv6-mark { width: 100%; display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; font: inherit; font-size: 12px; text-align: left; color: var(--text); cursor: pointer; padding: 5px 8px; border-radius: 8px; border: 1px solid var(--line); background: rgba(4, 10, 20, 0.5); }
.cv6-mark:hover { background: rgba(56, 225, 255, 0.08); }
.cv6-mark.r-WIN { box-shadow: inset 3px 0 0 var(--ok); } .cv6-mark.r-LOSS { box-shadow: inset 3px 0 0 var(--crit); }
.cv6-mark-pnl { font-weight: 900; font-variant-numeric: tabular-nums; } .cv6-mark-pnl.pos { color: var(--ok); } .cv6-mark-pnl.neg { color: var(--crit); }
.cv6-mark-c { font-size: 10.5px; font-weight: 800; letter-spacing: 0.04em; color: var(--text-3); }
.cv6-btv { min-width: 0; }

/* options dual chart */
.cv6-dual-top { height: 230px; } .cv6-dual-bot { height: 160px; }
.cv6-dual-sec { display: flex; flex-direction: column; gap: 6px; }

/* ETF market network */
.cv6-net { display: flex; flex-direction: column; gap: 8px; }
.cv6-net-labels { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.cv6-chip { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 2px 6px; padding: 3px 9px; border-radius: 8px; border: 1px solid var(--line); background: rgba(4, 10, 20, 0.55); font-size: 12px; max-width: 100%; }
.cv6-chip i { font-style: normal; font-size: 9.5px; font-weight: 800; letter-spacing: 0.1em; color: var(--text-3); }
.cv6-chip.gv-GROWTH_LEADING b { color: #9fe9ff; } .cv6-chip.gv-VALUE_LEADING b { color: #ffd59a; } .cv6-chip.gv-ROTATION b { color: var(--cv-or); }
.cv6-net-wrap { overflow-x: auto; border-radius: 12px; border: 1px solid var(--line-soft); background: radial-gradient(ellipse at 50% 40%, rgba(18, 40, 74, 0.6), rgba(4, 7, 14, 0.4)); }
.cv6-net-svg { display: block; width: 100%; max-width: 1080px; min-width: 640px; height: auto; margin: 0 auto; }
.cv6-ng-box { fill: rgba(120, 180, 255, 0.04); stroke: rgba(120, 180, 255, 0.16); stroke-dasharray: 4 4; }
.cv6-ng-t { fill: #7f93ad; font: 800 12px ui-monospace, monospace; letter-spacing: 0.12em; }
.cv6-ng.g-PRIMARY .cv6-ng-box { stroke: rgba(56, 225, 255, 0.35); fill: rgba(56, 225, 255, 0.05); }
.cv6-ne-l { stroke: #7f93ad; stroke-width: 3; }
.cv6-ne.e-CONFIRMING .cv6-ne-l { stroke: #3dffa8; } .cv6-ne.e-DIVERGING .cv6-ne-l { stroke: #ff5d6c; stroke-dasharray: 9 5; } .cv6-ne.e-UNKNOWN .cv6-ne-l { stroke: #4b5a6e; stroke-dasharray: 2 6; }
.cv6-ne-bg { fill: rgba(4, 10, 20, 0.88); stroke: rgba(120, 180, 255, 0.25); }
.cv6-ne-t { fill: #dbe9f8; font: 800 12px ui-monospace, monospace; }
.cv6-ne.e-CONFIRMING .cv6-ne-t { fill: #3dffa8; } .cv6-ne.e-DIVERGING .cv6-ne-t { fill: #ff8a95; }
.cv6-ne-s { fill: #ffd59a; font: 700 11px ui-monospace, monospace; }
.cv6-nn-c { fill: #0b1628; stroke: #7f93ad; stroke-width: 3; }
.cv6-nn.n-pos .cv6-nn-c { stroke: #3dffa8; fill: #0e2a2a; } .cv6-nn.n-neg .cv6-nn-c { stroke: #ff5d6c; fill: #2a1320; }
.cv6-nn.n-na .cv6-nn-c { stroke: #4b5a6e; stroke-dasharray: 4 4; }
.cv6-nn-s { fill: #fff; font: 900 15px ui-monospace, monospace; }
.cv6-nn-r { fill: #a9bed6; font: 700 11px ui-monospace, monospace; }
.cv6-nn.n-pos .cv6-nn-r { fill: #3dffa8; } .cv6-nn.n-neg .cv6-nn-r { fill: #ff8a95; }
.cv6-nn-v { fill: #7f93ad; font: 700 10.5px ui-monospace, monospace; }
.cv6-net-legend { display: flex; flex-wrap: wrap; gap: 4px 14px; font-size: 11.5px; align-items: center; }
.cv6-nl { display: inline-flex; align-items: center; gap: 5px; font-weight: 800; letter-spacing: 0.05em; }
.cv6-nl i { width: 18px; height: 3px; background: #7f93ad; }
.cv6-nl.e-CONFIRMING i { background: #3dffa8; } .cv6-nl.e-DIVERGING i { background: #ff5d6c; } .cv6-nl.e-UNKNOWN i { background: #4b5a6e; }
.cv6-net-row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 12px; }
.cv6-rs-t td, .cv6-rs-t th { white-space: nowrap; font-size: 12px; }
.cv6-stocks { display: flex; flex-direction: column; gap: 6px; }
.cv6-stock-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 6px; }
.cv6-stock { display: flex; flex-direction: column; gap: 2px; padding: 6px 9px; border-radius: 9px; border: 1px solid var(--line); background: rgba(4, 10, 20, 0.55); font-size: 11.5px; min-width: 0; }
.cv6-stock.up { box-shadow: inset 0 3px 0 rgba(61, 255, 168, 0.7); } .cv6-stock.down { box-shadow: inset 0 3px 0 rgba(255, 93, 108, 0.7); } .cv6-stock.na { opacity: 0.6; border-style: dashed; }
.cv6-stock-h { display: flex; justify-content: space-between; gap: 6px; } .cv6-stock-h b { font-size: 13px; }
.cv6-stock-r { display: flex; justify-content: space-between; align-items: center; gap: 6px; }
.cv6-stock-r i { font-style: normal; color: var(--text-3); }
.cv6-stock-r .cv-tag { font-size: 10px; padding: 0 5px; }

/* opportunity engine */
.cv6-opp-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.cv6-opp { display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: 8px; padding: 8px 10px; border-radius: 10px; border: 1px solid var(--line); background: rgba(4, 10, 20, 0.5); cursor: pointer; }
.cv6-opp:hover, .cv6-opp:focus-visible { background: rgba(56, 225, 255, 0.07); }
.cv6-opp.is-top { border-color: rgba(61, 255, 168, 0.55); box-shadow: inset 3px 0 0 var(--ok); }
.cv6-opp.is-blocked { opacity: 0.8; border-style: dashed; }
.cv6-opp-rank { font-size: 18px; font-weight: 900; color: #9fe9ff; }
.cv6-opp-main { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.cv6-opp-top { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; font-size: 12.5px; }
.cv6-opp-nums { display: flex; flex-wrap: wrap; gap: 2px 12px; font-size: 11.5px; color: var(--text-2); }
.cv6-opp-note { font-size: 11.5px; color: var(--text-3); overflow-wrap: anywhere; }

/* ETF performance matrix */
.cv6-mtabs { flex-wrap: wrap; max-width: 100%; margin-bottom: 8px; }
.cv6-matrix-t td, .cv6-matrix-t th { white-space: nowrap; font-size: 12px; }
.cv6-matrix-t tr.is-empty td { color: var(--text-3); }
.cv6-noyet { font-style: italic; }
.cv6-matrix-t tr.is-loss td:first-child { box-shadow: inset 3px 0 0 var(--crit); } .cv6-matrix-t tr.is-win td:first-child { box-shadow: inset 3px 0 0 var(--ok); }

/* post-trade study */
.cv6-pts { display: flex; flex-direction: column; gap: 8px; }
.cv6-pts-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: 8px; }
.cv6-pts-c { padding: 8px 10px; border-radius: 9px; border: 1px solid var(--line); background: rgba(4, 10, 20, 0.5); min-width: 0; }
.cv6-pts-c ul { margin: 0; padding-left: 16px; display: grid; gap: 3px; font-size: 12px; color: var(--text-2); overflow-wrap: anywhere; }
.cv6-pts-c.ok { box-shadow: inset 0 3px 0 var(--ok); } .cv6-pts-c.crit { box-shadow: inset 0 3px 0 var(--crit); } .cv6-pts-c.warn { box-shadow: inset 0 3px 0 var(--warn); }
.cv6-stopsum { display: flex; flex-direction: column; gap: 5px; }
.cv6-stopsum-row { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; }
.cv6-cf { font-size: 11.5px; padding: 1px 7px; border-radius: 5px; border: 1px dashed rgba(255, 179, 71, 0.5); color: #ffd59a; }

/* trade inspector V6 */
.cv6-ids .cv-stat.wide { grid-column: span 2; }
.cv6-id { font-size: 11.5px; overflow-wrap: anywhere; }
.cv6-class { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; padding: 7px 10px; border-radius: 9px; border: 1px solid var(--line); background: rgba(127, 147, 173, 0.07); font-size: 12px; }
.cv6-clabel, .cv6-slabel { font-size: 13px; font-weight: 900; letter-spacing: 0.06em; padding: 1px 8px; border-radius: 5px; border: 1px solid var(--line-strong); }
.cv6-clabel.t-ok, .cv6-slabel.t-ok { color: var(--ok); border-color: rgba(61, 255, 168, 0.5); background: var(--ok-soft); }
.cv6-clabel.t-warn, .cv6-slabel.t-warn { color: var(--warn); border-color: rgba(255, 179, 71, 0.5); background: var(--warn-soft); }
.cv6-clabel.t-crit, .cv6-slabel.t-crit { color: var(--crit); border-color: rgba(255, 93, 108, 0.5); background: var(--crit-soft); }
.cv6-class-r { color: var(--text-2); overflow-wrap: anywhere; }
.cv6-stop { display: flex; flex-direction: column; gap: 8px; padding: 8px 10px; border-radius: 10px; border: 1px solid rgba(255, 93, 108, 0.3); background: rgba(255, 93, 108, 0.04); }
.cv6-stop.is-empty { border-style: dashed; background: transparent; }
.cv6-stop-head { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; font-size: 12px; }
.cv6-stop-rule { color: var(--text-2); overflow-wrap: anywhere; }
.cv6-after { display: flex; flex-direction: column; gap: 4px; }
.cv6-after-l { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; }
.cv6-after-l li { display: flex; flex-direction: column; gap: 1px; padding: 5px 8px; border-radius: 8px; border: 1px solid var(--line); background: rgba(4, 10, 20, 0.45); font-size: 12px; }
.cv6-after-l li i { font-style: normal; font-size: 10px; font-weight: 800; color: var(--text-3); }
.cv6-after-l li.up b { color: var(--ok); } .cv6-after-l li.down b { color: var(--crit); } .cv6-after-l li.na b { color: var(--text-3); font-weight: 600; font-size: 11px; }
.cv6-cf-h { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; font-size: 11.5px; }
.cv6-cf-t td, .cv6-cf-t th { white-space: nowrap; font-size: 12px; }
.cv6-cf-t td.faint { white-space: normal; min-width: 180px; }
.cv6-cf-t tr.is-base td { background: rgba(127, 147, 173, 0.08); }
.cv6-fails { display: flex; flex-wrap: wrap; gap: 1px 8px; font-size: 11px; min-width: 260px; max-width: 360px; white-space: normal; }
.cv6-fail { white-space: nowrap; }
.cv6-fail { color: var(--text-3); } .cv6-fail.has { color: #ffb3ba; }

@media (max-width: 760px) {
  .cv6-net-row { grid-template-columns: minmax(0, 1fr); }
  .cv6-vtabs { margin-left: 0; }
  .cv6-canvas { height: 280px; } .cv6-sv.compact .cv6-canvas { height: 260px; }
  .cv6-after-l { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cv6-ids .cv-stat.wide { grid-column: 1 / -1; }
  .cv6-sv-bar .control { max-width: 100%; }
}

/* V6 stock district + research-tested labels + verified roles */
.cv6-tested { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 2px 5px; margin-left: 4px; padding: 0 6px; border-radius: 5px; border: 1px dashed rgba(255, 179, 71, 0.55); background: rgba(255, 179, 71, 0.06); font-size: 11px; }
.cv6-tested i { font-style: normal; font-size: 9px; font-weight: 800; letter-spacing: 0.08em; color: var(--text-3); }
.cv6-tested em { font-style: normal; font-size: 10px; font-weight: 800; color: var(--warn); }
.cv6-nn-role { fill: #c7b8ff; font: 800 10px ui-monospace, monospace; letter-spacing: 0.04em; }
.cv6-nn-role.r-PRIMARY { fill: #9fe9ff; } .cv6-nn-role.r-NOT { fill: #ff8a95; } .cv6-nn-role.r-REFERENCE { fill: #7f93ad; }
.cv6-roles summary { cursor: pointer; font-size: 12px; font-weight: 700; color: var(--text-2); }
.cv6-roles-l { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 2px 12px; margin: 6px 0 0; font-size: 12px; }
.cv6-roles-l dd { margin: 0; color: var(--text-2); overflow-wrap: anywhere; }
.cv6-stock-role { font-size: 10px; font-weight: 800; letter-spacing: 0.05em; color: #c7b8ff; }
.cv6-stock-bot { display: flex; flex-direction: column; gap: 1px; margin-top: 4px; padding: 4px 6px; font: inherit; font-size: 11px; text-align: left; color: var(--text); cursor: pointer; border-radius: 7px; border: 1px solid rgba(167, 139, 250, 0.5); background: rgba(167, 139, 250, 0.08); min-width: 0; }
.cv6-stock-bot:hover { background: rgba(167, 139, 250, 0.16); }
.cv6-stock-bn { font-weight: 800; letter-spacing: 0.04em; }
.cv6-stock-bs { color: var(--text-3); font-size: 10.5px; overflow-wrap: anywhere; }
.cv6-stock-floor { margin-top: 10px; padding: 8px; border-radius: 12px; border: 1px dashed rgba(167, 139, 250, 0.5); background: rgba(167, 139, 250, 0.04); }
.cv6-stock-floor-h { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; margin-bottom: 6px; font-size: 12px; color: var(--text-2); }
.cv6-stock-floor-h b { letter-spacing: 0.14em; color: #c7b8ff; }

/* ---------------------------------------------------------------- Trading City V6.1: professional status strip, MASTER LIVE
   (read-only status display), strategy professional view, session rules + observation, restriction audit, grades, process
   quality, daily professional review. Local styles only; no url(). */
.cv, .cv-view, .drawer { --cv61-gold: #ffd36b; --cv61-halt: #ff3b4e; }
/* status strip */
.cv61-strip { display: flex; flex-wrap: wrap; align-items: stretch; gap: 6px; padding: 8px; border-radius: 12px; border: 1px solid var(--line-strong); background: rgba(4, 10, 20, 0.78); }
.cv61-si { display: inline-flex; flex-direction: column; justify-content: center; gap: 1px; min-width: 0; padding: 4px 10px; border-radius: 8px; border: 1px solid var(--line); background: rgba(11, 20, 36, 0.8); font-size: 12.5px; max-width: 100%; }
.cv61-si i { font-style: normal; font-size: 9.5px; font-weight: 800; letter-spacing: 0.12em; color: var(--text-3); }
.cv61-si b { font-weight: 800; letter-spacing: 0.03em; color: #eaf4ff; overflow-wrap: anywhere; font-variant-numeric: tabular-nums; }
.cv61-si.si-live { border-width: 2px; }
.cv61-si.si-live b { font-size: 14px; letter-spacing: 0.1em; }
.cv61-si.l-LIVE_OFF { border-color: rgba(169, 190, 214, 0.55); } .cv61-si.l-LIVE_OFF b { color: #dbe9f8; }
.cv61-si.l-LIVE_ARMED { border-color: rgba(255, 179, 71, 0.8); background: rgba(255, 179, 71, 0.1); } .cv61-si.l-LIVE_ARMED b { color: #ffd59a; }
.cv61-si.l-LIVE_HALTED, .cv61-si.l-LIVE_ERROR, .cv61-si.l-LIVE_ACTIVE { border-color: var(--cv61-halt); background: rgba(255, 59, 78, 0.12); } .cv61-si.l-LIVE_HALTED b, .cv61-si.l-LIVE_ERROR b, .cv61-si.l-LIVE_ACTIVE b { color: #ffb3ba; }
.cv61-si.si-paper.is-on { border-color: var(--cv-exp-line); } .cv61-si.si-paper.is-on b { color: var(--cv-exp); }
.cv61-si.si-top b { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 4px; }
/* MASTER LIVE */
.cv61-live { --lc: rgba(169, 190, 214, 0.55); border: 2px solid var(--lc); background: linear-gradient(110deg, rgba(169, 190, 214, 0.07), rgba(11, 20, 36, 0.94) 40%); display: flex; flex-direction: column; gap: 10px; scroll-margin-top: 12px; }
.cv61-live.l-LIVE_ARMED { --lc: rgba(255, 179, 71, 0.75); background: linear-gradient(110deg, rgba(255, 179, 71, 0.1), rgba(11, 20, 36, 0.94) 40%); }
.cv61-live.l-LIVE_HALTED, .cv61-live.l-LIVE_ERROR, .cv61-live.l-LIVE_ACTIVE { --lc: rgba(255, 59, 78, 0.8); background: linear-gradient(110deg, rgba(255, 59, 78, 0.12), rgba(11, 20, 36, 0.94) 40%); }
.cv61-live-head { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; }
.cv61-live-head h3 { margin: 0; font-size: 15px; font-weight: 900; letter-spacing: 0.18em; color: #fff; }
.cv61-ro { font-size: 11px; font-weight: 900; letter-spacing: 0.12em; padding: 2px 8px; border-radius: 4px; color: #dff3ff; border: 1px dashed rgba(223, 243, 255, 0.6); }
.cv61-live-ver { font-size: 11px; color: var(--text-3); } .cv61-live-upd { margin-left: auto; font-size: 11.5px; color: var(--text-2); }
.cv61-live-grid { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr) minmax(0, 0.9fr); gap: 12px; }
.cv61-live-grid > div { min-width: 0; }
.cv61-live-grid > div > .cv-h4:first-child { margin-top: 0; }
.cv61-badge { display: inline-flex; align-items: stretch; border-radius: 8px; overflow: hidden; border: 2px solid var(--lc); max-width: 100%; }
.cv61-badge i { display: inline-flex; align-items: center; padding: 0 9px; font-style: normal; font-size: 10px; font-weight: 800; letter-spacing: 0.14em; color: var(--text-3); background: rgba(4, 10, 20, 0.8); }
.cv61-badge b { padding: 6px 12px; font-size: 22px; font-weight: 900; letter-spacing: 0.08em; color: #fff; overflow-wrap: anywhere; }
.cv61-badge.l-LIVE_OFF b { background: rgba(169, 190, 214, 0.12); } .cv61-badge.l-LIVE_ARMED b { background: rgba(255, 179, 71, 0.18); color: #ffd59a; }
.cv61-badge.l-LIVE_HALTED b, .cv61-badge.l-LIVE_ERROR b, .cv61-badge.l-LIVE_ACTIVE b { background: rgba(255, 59, 78, 0.22); color: #ffd0d4; }
.cv61-live-msg { margin: 8px 0; font-size: 14px; font-weight: 800; letter-spacing: 0.02em; color: #fff; overflow-wrap: anywhere; }
.cv61-facts { display: flex; flex-wrap: wrap; gap: 5px; }
.cv61-fact { display: inline-flex; flex-wrap: wrap; align-items: baseline; gap: 2px 6px; padding: 2px 8px; border-radius: 6px; border: 1px solid var(--line); background: rgba(4, 10, 20, 0.6); font-size: 12px; max-width: 100%; }
.cv61-fact i { font-style: normal; font-size: 9.5px; font-weight: 800; letter-spacing: 0.1em; color: var(--text-3); }
.cv61-fact.t-ok b { color: var(--cv-exp); } .cv61-fact.t-warn b { color: var(--warn); } .cv61-fact.t-crit b { color: var(--crit); }
.cv61-live-err { margin: 6px 0 0; font-size: 12px; color: var(--crit); overflow-wrap: anywhere; }
.cv61-owner { margin: 8px 0 0; padding: 6px 9px; border-radius: 7px; border: 1px dashed var(--line-strong); background: rgba(4, 10, 20, 0.6); font-size: 12px; color: var(--text-2); overflow-wrap: anywhere; }
.cv61-owner code { color: #e7ffad; font-size: 12px; }
.cv61-bl, .cv61-brk { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; }
.cv61-bl li { display: flex; flex-direction: column; gap: 1px; padding: 4px 8px; border-radius: 7px; border-left: 3px solid var(--warn); background: rgba(255, 179, 71, 0.06); font-size: 12px; overflow-wrap: anywhere; }
.cv61-bl li b { font-size: 11.5px; letter-spacing: 0.06em; color: #ffd59a; } .cv61-bl li span { color: var(--text-2); }
.cv61-brk li { display: flex; flex-wrap: wrap; align-items: center; gap: 2px 8px; padding: 4px 8px; border-radius: 7px; border: 1px solid var(--line); background: rgba(4, 10, 20, 0.5); font-size: 12px; }
.cv61-brk-why { flex-basis: 100%; color: var(--text-2); font-size: 11.5px; overflow-wrap: anywhere; }
.cv61-brk em { flex-basis: 100%; font-style: normal; font-size: 11px; color: var(--text-3); }
.cv61-live-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); margin-bottom: 0; }
.cv61-live-tiles .cv-stat em { font-size: 10px; }
.cv61-cfg-tiles { grid-template-columns: repeat(auto-fill, minmax(128px, 1fr)); margin-bottom: 6px; }
.cv61-cfg-tiles .cv-stat b { font-size: 13px; overflow-wrap: anywhere; }
.cv61-hash, .cv61-last { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 8px; font-size: 12px; color: var(--text-2); }
.cv61-hash i, .cv61-last i { font-style: normal; font-size: 10px; font-weight: 800; letter-spacing: 0.1em; color: var(--text-3); }
.cv61-hash code { font-size: 11px; overflow-wrap: anywhere; min-width: 0; }
.cv61-hist-wrap { max-height: 260px; overflow-y: auto; }
.cv61-hist td, .cv61-hist th { font-size: 12px; white-space: nowrap; }
.cv61-hist td.cv61-hist-r { white-space: normal; min-width: 200px; }
.cv61-hist tr.a-LIVE_ON td:nth-child(2) b { color: var(--warn); } .cv61-hist tr.a-KILL_SWITCH_ON td:nth-child(2) b { color: var(--crit); }
/* grades + chase */
.cv61-grade { display: inline-flex; align-items: stretch; height: 21px; border-radius: 5px; overflow: hidden; border: 1px solid var(--line-strong); font-size: 11px; font-weight: 900; white-space: nowrap; }
.cv61-grade i { display: inline-flex; align-items: center; padding: 0 5px; font-style: normal; font-size: 9px; letter-spacing: 0.1em; color: var(--text-3); background: rgba(4, 10, 20, 0.75); }
.cv61-grade b { display: inline-flex; align-items: center; padding: 0 7px; letter-spacing: 0.04em; }
.cv61-grade.g-Aplus { border-color: var(--cv61-gold); box-shadow: 0 0 10px rgba(255, 211, 107, 0.45); } .cv61-grade.g-Aplus b { background: var(--cv61-gold); color: #1d1400; font-size: 12.5px; }
.cv61-grade.g-A { border-color: rgba(61, 255, 168, 0.6); } .cv61-grade.g-A b { color: var(--ok); background: var(--ok-soft); }
.cv61-grade.g-B { border-color: rgba(56, 225, 255, 0.5); } .cv61-grade.g-B b { color: var(--info); }
.cv61-grade.g-C b { color: var(--text-3); }
.cv61-chase { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 0 5px; padding: 1px 7px; border-radius: 4px; border: 1px dashed rgba(255, 93, 108, 0.75); background: var(--crit-soft); color: #ffb3ba; font-size: 11px; font-weight: 900; letter-spacing: 0.05em; max-width: 100%; }
.cv61-chase em { font-style: normal; font-weight: 600; font-size: 10.5px; color: var(--text-2); letter-spacing: 0; }
.cv6-opp.is-aplus { border-color: rgba(255, 211, 107, 0.7); box-shadow: inset 3px 0 0 var(--cv61-gold), 0 0 18px rgba(255, 211, 107, 0.12); }
.cv61-grules { margin-top: 6px; font-size: 12px; }
.cv61-grules summary { cursor: pointer; font-weight: 700; color: var(--text-2); }
.cv61-grules-l { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 4px 12px; margin: 6px 0 0; align-items: baseline; }
.cv61-grules-l dt b { font-size: 10.5px; letter-spacing: 0.08em; color: var(--text-2); } .cv61-grules-l dd { margin: 0; color: var(--text-2); overflow-wrap: anywhere; }
/* strategy professional view */
.cv61-pro-t td, .cv61-pro-t th { font-size: 12px; white-space: nowrap; vertical-align: top; }
.cv61-pro-t td.cv61-why-td { white-space: normal; min-width: 210px; max-width: 380px; }
.cv61-why summary { cursor: pointer; font-size: 11.5px; list-style-position: inside; }
.cv61-why.t-crit summary b { color: var(--crit); } .cv61-why.t-warn summary b { color: var(--warn); }
.cv61-why-l { margin: 4px 0 0; padding-left: 18px; display: grid; gap: 2px; font-size: 11.5px; color: var(--text-2); white-space: normal; overflow-wrap: anywhere; }
.cv61-sess { display: inline-flex; flex-wrap: nowrap; gap: 3px; }
.cv61-last-t em { font-style: normal; font-size: 11px; color: var(--text-3); }
.cv61-fam { color: var(--text-2); }
.cv61-botlive { display: flex; flex-direction: column; gap: 6px; }
/* session rules timeline */
.cv61-rules { display: flex; flex-direction: column; gap: 8px; }
.cv61-rules-top { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.cv61-cur { color: var(--cv61-gold); }
.cv61-tl-wrap { overflow-x: auto; max-width: 100%; }
.cv61-tl { display: grid; gap: 3px; min-width: 760px; }
.cv61-tl-row { display: grid; gap: 3px; }
.cv61-tl-k { display: flex; align-items: center; padding: 3px 6px; font-size: 11px; font-weight: 800; letter-spacing: 0.04em; color: var(--text-2); }
.cv61-tl-p { display: flex; flex-direction: column; align-items: center; gap: 0; padding: 4px 2px; border-radius: 6px; background: rgba(4, 10, 20, 0.6); border: 1px solid var(--line-soft); font-size: 10.5px; text-align: center; }
.cv61-tl-p b { font-size: 10.5px; letter-spacing: 0.06em; } .cv61-tl-p em { font-style: normal; font-size: 10px; color: var(--text-3); }
.cv61-tl-p i { font-style: normal; font-size: 9px; font-weight: 900; letter-spacing: 0.12em; color: #1d1400; background: var(--cv61-gold); border-radius: 3px; padding: 0 4px; }
.cv61-tl-p.is-cur { border-color: var(--cv61-gold); box-shadow: 0 0 10px rgba(255, 211, 107, 0.3); }
.cv61-tl-c { display: flex; align-items: center; justify-content: center; min-height: 24px; border-radius: 5px; font-size: 10px; font-weight: 800; letter-spacing: 0.06em; }
.cv61-tl-c.is-val { color: #0b2a1d; background: rgba(61, 255, 168, 0.75); }
.cv61-tl-c.is-obs { color: var(--text-3); border: 1px dashed var(--line-strong); background: rgba(4, 10, 20, 0.4); font-weight: 600; }
.cv61-tl-c.is-cur { outline: 2px solid var(--cv61-gold); outline-offset: -2px; }
/* session observation */
.cv61-obsp { display: flex; flex-direction: column; gap: 8px; }
.cv61-obs-list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 430px), 1fr)); gap: 6px; max-height: 560px; overflow-y: auto; }
.cv61-obs { display: flex; flex-direction: column; gap: 3px; padding: 7px 10px; border-radius: 10px; border: 1px solid var(--line); background: rgba(4, 10, 20, 0.55); min-width: 0; }
.cv61-obs.g-Aplus { border-color: rgba(255, 211, 107, 0.75); box-shadow: inset 3px 0 0 var(--cv61-gold); } .cv61-obs.g-A { border-color: rgba(61, 255, 168, 0.5); box-shadow: inset 3px 0 0 var(--ok); }
.cv61-obs.is-chase { border-style: dashed; }
.cv61-obs-label { font-size: 11px; font-weight: 900; letter-spacing: 0.05em; color: var(--text-2); overflow-wrap: anywhere; }
.cv61-obs.g-Aplus .cv61-obs-label, .cv61-obs.g-A .cv61-obs-label { color: var(--cv61-gold); }
.cv61-obs-top { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 7px; font-size: 12px; }
.cv61-obs-t { font-weight: 800; color: #9fe9ff; }
.cv61-obs-nums { display: flex; flex-wrap: wrap; gap: 1px 12px; font-size: 11.5px; color: var(--text-2); }
.cv61-obs-why { font-size: 11.5px; color: var(--text-3); overflow-wrap: anywhere; }
.cv61-hyp-t td, .cv61-hyp-t th { font-size: 12px; white-space: nowrap; }
.cv61-hyp { font-style: normal; font-size: 10px; font-weight: 800; letter-spacing: 0.06em; color: var(--warn); }
.cv61-hyp-trades summary { cursor: pointer; font-size: 12px; font-weight: 700; color: var(--text-2); margin: 4px 0; }
/* restriction audit */
.cv61-restr-sum { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 8px; }
.cv61-rk { font-size: 12px; font-weight: 800; letter-spacing: 0.08em; padding: 2px 9px; border-radius: 6px; border: 1px solid var(--line); }
.cv61-rk b { font-size: 15px; }
.cv61-rk.k-KEEP, .cv61-rchip.k-KEEP { color: var(--ok); border-color: rgba(61, 255, 168, 0.5); }
.cv61-rk.k-MODIFIED, .cv61-rchip.k-MODIFIED { color: var(--warn); border-color: rgba(255, 179, 71, 0.55); }
.cv61-rk.k-REMOVED, .cv61-rchip.k-REMOVED { color: var(--info); border-color: rgba(56, 225, 255, 0.5); }
.cv61-rchip { display: inline-flex; padding: 1px 7px; border-radius: 4px; border: 1px solid var(--line-strong); font-size: 11px; font-weight: 900; letter-spacing: 0.06em; }
.cv61-rsub { display: block; font-style: normal; font-size: 10.5px; color: var(--text-3); margin-top: 2px; }
.cv61-restr-t td, .cv61-restr-t th { font-size: 12px; vertical-align: top; }
.cv61-restr-t td:first-child { min-width: 170px; } .cv61-restr-t td:nth-child(2) { white-space: nowrap; }
.cv61-restr-t td.cv61-rtext { min-width: 260px; white-space: normal; overflow-wrap: anywhere; }
.cv61-restr-t td:first-child { white-space: normal; }
/* process quality + exit quality */
.cv61-proc-sec { display: flex; flex-direction: column; gap: 6px; }
.cv61-proc { display: flex; flex-direction: column; gap: 6px; padding: 8px 10px; border-radius: 10px; border: 1px solid rgba(56, 225, 255, 0.35); background: rgba(56, 225, 255, 0.04); }
.cv61-proc.is-empty { border-style: dashed; background: transparent; }
.cv61-proc-head { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; }
.cv61-proc-score { font-size: 18px; font-weight: 900; }
.cv61-plabel { font-size: 13px; font-weight: 900; letter-spacing: 0.06em; padding: 1px 8px; border-radius: 5px; border: 1px solid var(--line-strong); }
.cv61-plabel.small { font-size: 10.5px; padding: 0 5px; }
.cv61-plabel.t-ok { color: var(--ok); border-color: rgba(61, 255, 168, 0.5); background: var(--ok-soft); }
.cv61-plabel.t-warn { color: var(--warn); border-color: rgba(255, 179, 71, 0.5); background: var(--warn-soft); }
.cv61-plabel.t-crit { color: var(--crit); border-color: rgba(255, 93, 108, 0.5); background: var(--crit-soft); }
.cv61-parts { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 230px), 1fr)); gap: 4px 12px; }
.cv61-parts li { display: grid; grid-template-columns: minmax(0, 1fr) 70px max-content; align-items: center; gap: 6px; font-size: 11.5px; }
.cv61-parts li span:first-child { color: var(--text-2); overflow-wrap: anywhere; }
.cv61-part-b { height: 6px; border-radius: 3px; background: rgba(127, 147, 173, 0.2); overflow: hidden; }
.cv61-part-f { display: block; height: 100%; background: var(--info); }
.cv61-parts li.full .cv61-part-f { background: var(--ok); } .cv61-parts li.zero b { color: var(--crit); }
.cv61-exitq { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; font-size: 12px; }
.cv61-xflag { display: inline-flex; flex-wrap: wrap; align-items: baseline; padding: 1px 7px; border-radius: 4px; border: 1px solid rgba(255, 179, 71, 0.6); background: var(--warn-soft); color: #ffd59a; font-size: 11px; max-width: 100%; }
.cv61-xflag b { font-weight: 900; letter-spacing: 0.04em; } .cv61-xflag em { font-style: normal; color: var(--text-2); overflow-wrap: anywhere; }
.cv61-xflag.small { font-size: 10px; padding: 0 5px; }
.cv61-xok { font-size: 11px; font-weight: 800; letter-spacing: 0.05em; color: var(--ok); }
.cv61-pcell { display: inline-flex; flex-wrap: wrap; gap: 3px; }
/* daily professional review */
.cv61-review { display: flex; flex-direction: column; gap: 8px; }
.cv61-rv-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); gap: 6px; }
.cv61-rv-c { display: flex; flex-direction: column; gap: 3px; padding: 7px 10px; border-radius: 9px; border: 1px solid var(--line); background: rgba(4, 10, 20, 0.5); font-size: 12.5px; min-width: 0; }
.cv61-rv-c.ok { box-shadow: inset 0 3px 0 var(--ok); } .cv61-rv-c.crit { box-shadow: inset 0 3px 0 var(--crit); } .cv61-rv-c.hyp { box-shadow: inset 0 3px 0 var(--warn); border-style: dashed; }
.cv61-brief { overflow-wrap: anywhere; }
.cv61-rv-tiles { margin-bottom: 0; }
.cv61-rv-row { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; }

@media (max-width: 1100px) {
  .cv61-live-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .cv61-live-exp { grid-column: 1 / -1; }
  .cv61-live-tiles { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); }
}
@media (max-width: 760px) {
  .cv61-live-grid { grid-template-columns: minmax(0, 1fr); }
  .cv61-live-upd { margin-left: 0; }
  .cv61-badge b { font-size: 18px; }
  .cv61-si { flex: 1 1 140px; }
  .cv61-live-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cv61-cfg-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cv61-obs-list { max-height: 640px; }
  .cv61-grules-l { grid-template-columns: minmax(0, 1fr); }
}
.cv61-restr-t td, .cv61-pro-t td.cv61-why-td, .cv61-hist td.cv61-hist-r { padding-top: 6px; padding-bottom: 6px; line-height: 1.4; }
.cv61-pro-t td { padding-top: 4px; padding-bottom: 4px; }
.cv61-obs-bot { font-size: 12px; font-weight: 800; }
.cv-daybot { flex-wrap: wrap; max-width: 100%; min-width: 0; }      /* V6.1 verify: a day-view bot chip never widens the phone page */

/* ================================================================ Trading City V6.2: terminal (bar, hover card, trade view, MASTER LIVE) */
.v62-term, .v62-tip-scope { --cv-or: #f472b6; }
.v62-bar { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: 10px; padding: 8px 0 10px; }
.v62-bar-l { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.v62-today-btn { font-weight: 800; letter-spacing: 0.04em; }
.v62-pm { font: 700 11px/1.2 var(--font-mono); padding: 5px 9px; border-radius: 999px; border: 1px solid var(--line); color: var(--text-2); }
.v62-pm.on { color: var(--ok); border-color: var(--ok); }
.v62-pm.wait { color: var(--warn); border-color: var(--warn); }
.v62-pm.carried { color: var(--info); border-color: var(--info); }
.v62-conn { font: 700 11px/1.2 var(--font-mono); padding: 5px 9px; border-radius: 999px; border: 1px solid var(--line); }
.v62-conn.c-ok { color: var(--ok); } .v62-conn.c-down { color: var(--crit); border-color: var(--crit); }
.v62-disc { margin: 6px 0; padding: 8px 12px; border: 1px solid var(--crit); border-radius: 8px; background: color-mix(in srgb, var(--crit) 12%, transparent); color: var(--text); }
.v62-ml { min-width: 280px; max-width: 420px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-2); display: grid; gap: 6px; }
.v62-ml-top { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.v62-ml-title { font: 800 12px/1 var(--font-mono); letter-spacing: 0.08em; }
.v62-ml-state { font: 800 12px/1 var(--font-mono); padding: 4px 8px; border-radius: 6px; border: 1px solid var(--line); }
.v62-ml-state.t-neutral { color: var(--text-2); } .v62-ml-state.t-warn { color: var(--warn); border-color: var(--warn); } .v62-ml-state.t-crit { color: var(--crit); border-color: var(--crit); }
.v62-ml-facts { display: flex; flex-wrap: wrap; gap: 4px 10px; font: 600 11px/1.3 var(--font-mono); color: var(--text-2); }
.v62-ml-owner, .v62-ml-login, .v62-row { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }
.v62-ml-msg { margin: 0; font-size: 12px; color: var(--warn); }
.v62-in { min-width: 0; flex: 1 1 140px; padding: 6px 8px; border-radius: 6px; border: 1px solid var(--line); background: var(--surface); color: var(--text); font: 13px var(--font-mono); }
.v62-danger { border-color: var(--crit); color: var(--crit); }
.v62-faint { color: var(--text-3); font-size: 12px; margin: 2px 0; }
.v62-ready { padding: 10px; border: 1px solid var(--line); border-radius: 10px; margin-bottom: 10px; background: var(--surface); }
.v62-verdict { font: 800 13px/1.3 var(--font-mono); margin-bottom: 6px; }
.v62-verdict.v-ready { color: var(--ok); } .v62-verdict.v-not-ready { color: var(--crit); } .v62-verdict.v-waiting { color: var(--warn); }
.v62-lights { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 4px 12px; }
.v62-lights li { display: flex; gap: 6px; align-items: baseline; flex-wrap: wrap; font-size: 12px; }
.v62-lights i { width: 9px; height: 9px; border-radius: 50%; display: inline-block; background: var(--text-3); }
.v62-lights .l-green i { background: var(--ok); } .v62-lights .l-yellow i { background: var(--warn); } .v62-lights .l-red i { background: var(--crit); }
.v62-lights em { font-size: 10px; color: var(--text-3); }
/* hover card (inside the scene tooltip) */
.cv-tip:has(.v62-card) { white-space: normal; width: 300px; font-weight: 500; padding: 8px 10px; }
.v62-card { display: grid; gap: 4px; font-size: 12px; }
.v62-card-head { display: flex; justify-content: space-between; gap: 8px; }
.v62-card-sub, .v62-card-foot, .v62-card-dims { color: #9fb3c8; font-size: 11px; }
.v62-state { font: 700 11px/1.3 var(--font-mono); }
.v62-chip { font: 700 10px/1 var(--font-mono); padding: 3px 6px; border-radius: 5px; border: 1px solid currentColor; opacity: 0.9; }
.v62-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); gap: 3px 10px; }
.v62-kv { display: flex; flex-direction: column; min-width: 0; }
.v62-k { font: 600 9px/1.2 var(--font-mono); letter-spacing: 0.06em; opacity: 0.7; }
.v62-v { font: 700 12px/1.3 var(--font-mono); overflow-wrap: anywhere; }
.v62-pos { border-top: 1px solid rgba(255, 255, 255, 0.15); padding-top: 4px; display: grid; gap: 3px; }
.v62-pos-head { display: flex; justify-content: space-between; gap: 6px; }
.tone-ok { color: var(--ok); } .tone-crit { color: var(--crit); }
/* terminal dialog */
.v62-term-root { position: fixed; inset: 0; z-index: 60; }
.v62-term-backdrop { position: absolute; inset: 0; background: rgba(3, 4, 6, 0.6); }
.v62-term { position: absolute; inset: 2vh 2vw; display: flex; flex-direction: column; background: var(--surface); color: var(--text); border: 1px solid var(--line); border-radius: 12px; box-shadow: var(--shadow); overflow: hidden; }
.v62-term-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; padding: 10px 14px; border-bottom: 1px solid var(--line-soft); background: var(--surface-2); }
.v62-term-head h2 { margin: 0; font-size: 16px; }
.v62-term-body { overflow: auto; padding: 12px 14px; flex: 1; }
.v62-tv { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 14px; }
.v62-tv-side { display: grid; gap: 6px; align-content: start; }
.v62-tv-side .v62-card { padding: 8px; border: 1px solid var(--line); border-radius: 8px; }
.v62-tv-side .v62-card-sub, .v62-tv-side .v62-card-foot { color: var(--text-3); }
.v62-tv-head { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-bottom: 6px; }
.v62-h3 { font-size: 12px; letter-spacing: 0.06em; text-transform: uppercase; color: var(--text-2); margin: 10px 0 4px; }
.v62-q { font: 800 11px/1 var(--font-mono); padding: 4px 7px; border-radius: 5px; border: 1px solid currentColor; }
.v62-q.q-ok { color: var(--ok); } .v62-q.q-info { color: var(--info); } .v62-q.q-warn { color: var(--warn); } .v62-q.q-crit { color: var(--crit); } .v62-q.q-neutral { color: var(--text-2); }
.v62-live { border: 1px solid var(--line); border-radius: 8px; padding: 8px; display: grid; gap: 6px; }
.v62-live-head { display: flex; justify-content: space-between; gap: 6px; font-size: 12px; }
.v62-big { font: 800 22px/1.1 var(--font-mono); }
.v62-tbl { width: 100%; border-collapse: collapse; font: 12px var(--font-mono); }
.v62-tbl th, .v62-tbl td { text-align: left; padding: 3px 5px; border-bottom: 1px solid var(--line-soft); }
.v62-tbl tr.v62-moved td { color: var(--warn); }
.v62-tape { list-style: none; margin: 0; padding: 0; max-height: 280px; overflow: auto; }
.v62-tape-btn { all: unset; cursor: pointer; display: grid; grid-template-columns: 48px 130px 1fr; gap: 6px; width: 100%; font: 11px/1.4 var(--font-mono); padding: 2px 0; border-bottom: 1px solid var(--line-soft); }
.v62-tape-btn:focus-visible { outline: 2px solid var(--accent); }
.v62-tape-k { font-weight: 700; }
.v62-tape-row.k-order_submitted .v62-tape-k, .v62-tape-row.k-order_filled .v62-tape-k { color: var(--warn); }
.v62-tape-row.k-position_closed .v62-tape-k { color: var(--ok); } .v62-tape-row.k-stop_updated .v62-tape-k { color: var(--crit); }
.v62-cards { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.v62-tcard { display: flex; gap: 6px; align-items: stretch; border: 1px solid var(--line); border-left: 4px solid var(--text-3); border-radius: 8px; }
.v62-tcard.is-win { border-left-color: var(--ok); } .v62-tcard.is-loss { border-left-color: var(--crit); } .v62-tcard.is-open { border-left-color: var(--accent); }
.v62-tcard-main { all: unset; cursor: pointer; flex: 1; padding: 6px 8px; display: grid; gap: 2px; }
.v62-tcard-main:focus-visible { outline: 2px solid var(--accent); }
.v62-tcard-l1 { display: flex; justify-content: space-between; gap: 6px; font-size: 13px; }
.v62-tcard-l2 { font: 11px/1.3 var(--font-mono); color: var(--text-2); }
.v62-res { font: 800 13px var(--font-mono); }
.v62-replay { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; margin: 6px 0; }
.v62-today-top { display: flex; justify-content: space-between; gap: 10px; flex-wrap: wrap; margin-bottom: 6px; }
.v62-totals { display: flex; gap: 6px; flex-wrap: wrap; }
.v62-today-row { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 14px; }
.v62-confirm { display: grid; gap: 10px; max-width: 640px; }
.v62-q-big { font: 800 20px/1.2 var(--font-mono); margin: 0; }
.v62-block { border: 1px solid var(--warn); border-radius: 8px; padding: 8px; font-size: 12px; }
/* chart */
.lc { display: grid; gap: 6px; }
.lc-toggles { display: flex; gap: 4px; flex-wrap: wrap; }
.lc-tog { font: 700 11px var(--font-mono); padding: 3px 7px; border-radius: 5px; border: 1px solid var(--line); background: var(--surface-2); color: var(--text-2); cursor: pointer; }
.lc-tog[aria-pressed="true"] { color: var(--text); border-color: var(--accent); }
.lc-frame { position: relative; }
.lc-host { width: 100%; height: 420px; }
.lc-legend { position: absolute; left: 8px; top: 6px; z-index: 2; font: 11px var(--font-mono); color: var(--text-2); pointer-events: none; }
.lc-empty { position: absolute; inset: 40% 10% auto; text-align: center; font-size: 13px; color: var(--text-2); }
@media (max-width: 900px) {
  .v62-tv, .v62-today-row { grid-template-columns: 1fr; }
  .v62-term { inset: 0; border-radius: 0; }
  .lc-host { height: 320px; }
  .v62-ml { max-width: none; width: 100%; }
}
@media (prefers-reduced-motion: reduce) { .v62-term-root * { animation: none !important; transition: none !important; } }
.v62-pm-strip { display: flex; flex-wrap: wrap; gap: 6px 14px; padding: 6px 10px; margin: 0 0 8px; border: 1px dashed var(--line); border-radius: 8px; font: 11px/1.4 var(--font-mono); color: var(--text-2); }
.v62-pm-cell strong { color: var(--text); margin-right: 2px; }
.v62-ml-avail { display: flex; flex-wrap: wrap; gap: 4px 8px; align-items: center; }
.v62-av { font: 800 10px/1 var(--font-mono); padding: 3px 6px; border-radius: 5px; border: 1px solid currentColor; }
.v62-av.ok { color: var(--ok); } .v62-av.no { color: var(--crit); }
.v62-zero { color: var(--warn); }
.v62-rej { border: 1px solid var(--line); border-radius: 8px; padding: 6px 10px; margin-bottom: 6px; font-size: 12px; }
.v62-rej ul { margin: 4px 0 0; padding-left: 18px; }

/* ================================================================ V6.2.1 LIVE MARKET WATCH */
.v62-status { display: flex; flex-wrap: wrap; gap: 4px 16px; padding: 6px 0 0; font: 11px/1.4 var(--font-mono); color: var(--text-2); }
.v62-status b { color: var(--text-3); font-weight: 700; }
.mw { border: 1px solid var(--line); border-radius: 12px; background: var(--surface); padding: 10px 12px; margin: 0 0 12px; }
.mw-top { display: flex; flex-wrap: wrap; gap: 8px 14px; align-items: center; }
.mw-top h2 { margin: 0; font-size: 14px; letter-spacing: 0.08em; }
.mw-tabs button[aria-selected="true"] { color: var(--text); border-color: var(--accent); }
.mw-watch { display: flex; gap: 6px; overflow-x: auto; padding: 8px 0; scrollbar-width: thin; }
.mw-wl { all: unset; cursor: pointer; display: grid; grid-template-columns: auto auto; gap: 0 8px; min-width: 112px; padding: 4px 8px; border: 1px solid var(--line-soft); border-radius: 8px; font: 11px/1.3 var(--font-mono); }
.mw-wl.prim { border-color: var(--line); }
.mw-wl small { grid-column: 1 / -1; color: var(--text-3); font-size: 10px; }
.mw-wl:focus-visible { outline: 2px solid var(--accent); }
.mw-head { margin: 4px 0 6px; }
.mw-title { display: flex; flex-wrap: wrap; gap: 6px 12px; align-items: baseline; }
.mw-title strong { font-size: 18px; }
.mw-price { font: 800 20px var(--font-mono); }
.mw-chg { font: 700 14px var(--font-mono); }
.mw-sess { font: 800 11px var(--font-mono); padding: 3px 7px; border-radius: 5px; border: 1px solid currentColor; }
.mw-sess.t-ok { color: var(--ok); } .mw-sess.t-info { color: var(--info); } .mw-sess.t-warn { color: var(--warn); } .mw-sess.t-neutral { color: var(--text-2); }
.mw-main { display: grid; grid-template-columns: minmax(0, 1fr) 330px; gap: 12px; }
.mw-tfs { margin-bottom: 4px; }
.mw-side { display: grid; gap: 6px; align-content: start; max-height: 470px; overflow: auto; }
.mw-bottom { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) minmax(0, 1fr); gap: 12px; margin-top: 8px; }
.mw-agent-list, .mw-check-list, .mw-trade-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; font: 12px/1.35 var(--font-mono); }
.mw-agent { display: grid; grid-template-columns: 1fr auto auto; gap: 6px; padding: 2px 0; border-bottom: 1px solid var(--line-soft); }
.mw-agent-s { font-weight: 800; } .mw-agent-m { color: var(--text-3); font-size: 10px; }
.mw-agent.t-ok .mw-agent-s { color: var(--ok); } .mw-agent.t-warn .mw-agent-s { color: var(--warn); } .mw-agent.t-info .mw-agent-s { color: var(--info); }
.mw-agent-opt { font: 11px var(--font-mono); color: var(--text-2); margin: 4px 0 0; }
.mw-eyes-dl { display: grid; grid-template-columns: auto 1fr; gap: 1px 10px; margin: 0; font: 11px/1.4 var(--font-mono); }
.mw-eyes-dl dt { color: var(--text-3); } .mw-eyes-dl dd { margin: 0; overflow-wrap: anywhere; }
.mw-check-list li { display: flex; gap: 6px; } .mw-check-list li.ok { color: var(--ok); } .mw-check-list li.wait { color: var(--text-2); }
.mw-box { display: inline-block; min-width: 34px; text-align: center; border: 1px solid currentColor; border-radius: 3px; font: 800 9px/13px var(--font-mono); }
.mw-check-sum { font: 800 12px var(--font-mono); margin: 4px 0 0; }
.mw-scroll { overflow-x: auto; }
.mw-opt-tbl td, .mw-opt-tbl th { white-space: nowrap; font-size: 11px; }
.mw-opt-tbl tr.mw-pass td { color: var(--ok); }
.mw-opt-head { font: 700 12px var(--font-mono); margin: 2px 0 6px; }
.tone-warn { color: var(--warn); }
.mw-open { font: 700 12px var(--font-mono); margin: 2px 0; }
.mw-spark polyline { stroke: var(--info); } .mw-spark.up polyline { stroke: var(--ok); } .mw-spark.down polyline { stroke: var(--crit); }
.v62-mini { display: flex; flex-wrap: wrap; gap: 4px 8px; align-items: center; padding-bottom: 4px; margin-bottom: 4px; border-bottom: 1px solid rgba(255, 255, 255, 0.15); font: 700 12px var(--font-mono); }
.mw-ws .mw-view { min-height: 70vh; }
@media (max-width: 900px) {
  .mw-main, .mw-bottom { grid-template-columns: minmax(0, 1fr); }
  .mw-side { max-height: none; }
}
/* V6.2.1 option live chart */
.opt-today { border: 1px solid var(--line); border-radius: 12px; background: var(--surface); padding: 10px 12px; margin: 0 0 12px; }
.opt-cols { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.opt-row { all: unset; cursor: pointer; display: grid; gap: 2px; padding: 5px 8px; margin: 3px 0; border: 1px solid var(--line-soft); border-radius: 8px; font: 11px/1.35 var(--font-mono); width: calc(100% - 18px); }
.opt-row:focus-visible { outline: 2px solid var(--accent); }
.opt-row.act { border-left: 3px solid var(--accent); } .opt-row.closed { border-left: 3px solid var(--text-3); }
.opt-spark { display: flex; gap: 6px; align-items: center; }
.opt-detail { display: grid; gap: 6px; }
.v62-optprev { display: grid; gap: 2px; border-top: 1px solid rgba(255, 255, 255, 0.15); padding-top: 4px; margin-top: 4px; font-size: 11px; }
.mw-optbar { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-bottom: 6px; }
@media (max-width: 900px) { .opt-cols { grid-template-columns: 1fr; } }
.mw-cands { display: grid; gap: 4px; margin-top: 6px; }
.mw-cand { font: 11px/1.4 var(--font-mono); border-left: 2px solid var(--line); padding-left: 6px; }
.mw-agent-wait, .mw-agent-oe { grid-column: 1 / -1; font-size: 10px; }
.mw-agent-oe { color: var(--text-3); }
/* V6.2 bar: MASTER LIVE always in the upper-right column (the left content wraps inside its own column) */
.v62-bar { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: start; }
@media (max-width: 900px) { .v62-bar { grid-template-columns: 1fr; } }
/* V6.6 AUTOPILOT (upper right, beside MASTER LIVE) */
.v62-ctl { display: flex; flex-wrap: wrap; gap: 8px; justify-content: flex-end; align-items: flex-start; }
.ap { min-width: 280px; max-width: 460px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-2); display: grid; gap: 6px; }
.ap-top { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.ap-title { font: 800 12px/1 var(--font-mono); letter-spacing: 0.08em; }
.ap-sw { font: 800 14px/1 var(--font-mono); padding: 6px 12px; border-radius: 999px; border: 2px solid currentColor; background: transparent; cursor: pointer; }
.ap-sw.on { color: var(--ok); } .ap-sw.off { color: var(--crit); } .ap-sw:disabled { cursor: not-allowed; opacity: 0.85; }
.ap-mode { font: 700 10px var(--font-mono); color: var(--text-2); }
.ap-mk { display: flex; flex-wrap: wrap; gap: 4px 8px; }
.ap-m { display: flex; gap: 4px; align-items: center; font: 10px var(--font-mono); padding: 2px 6px; border: 1px solid var(--line-soft); border-radius: 6px; }
.ap-m.open b { color: var(--ok); } .ap-m.closed b { color: var(--text-3); }
@media (max-width: 900px) { .v62-ctl { justify-content: stretch; } .ap { max-width: none; width: 100%; } }

/* recovery screen (boot-guard.js, ui-build-1.0.0): never a black main panel */
.recovery { max-width: 720px; margin: 48px auto; padding: 24px; border: 1px solid var(--crit); border-radius: 10px; background: var(--surface, #111); display: grid; gap: 10px; }
.recovery .rec-brand { font-weight: 700; letter-spacing: .12em; color: var(--accent, #d4a640); }
.recovery .rec-title { font-size: var(--fs-md); font-weight: 700; color: var(--crit); }
.recovery .rec-row { display: grid; grid-template-columns: 90px 1fr; gap: 12px; font-family: var(--mono, monospace); font-size: 12px; word-break: break-word; }
.recovery .rec-k { color: var(--muted, #888); }
.recovery .rec-v.ok { color: var(--ok); }
.recovery .rec-v.crit { color: var(--crit); }
.recovery .btn { justify-self: start; }
.tb-build { font-family: var(--mono, monospace); font-size: 10px; letter-spacing: .04em; color: var(--muted, #8a93a0); white-space: nowrap; }
@media (max-width: 700px) { .tb-build { display: none; } }

/* GLOBAL HEADER (V6.9 §1, §41-42): AUTOPILOT on every page, sticky, never hidden (also on the City and on phones) */
.gbar { position: sticky; top: 0; z-index: 40; background: var(--surface); border-bottom: 1px solid var(--line); }
.gb { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; padding: 8px 16px; font-size: 12px; }
.gb-brand { font-weight: 700; letter-spacing: .12em; color: var(--text); }
.gb-brand b { color: var(--accent); }
.gb-ap { display: inline-flex; align-items: center; gap: 8px; padding: 4px 8px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface-2); }
.gb-ap-k { font-weight: 700; letter-spacing: .08em; }
.gb-sw { min-width: 92px; padding: 5px 12px; border-radius: 999px; border: 1px solid var(--line); font: inherit; font-weight: 700; cursor: pointer; color: var(--text); background: var(--surface-3); }
.gb-sw.on { color: var(--ok); border-color: var(--ok); }
.gb-sw.off { color: var(--warn); border-color: var(--warn); }
.gb-sw.unknown { color: var(--crit); border-color: var(--crit); }
.gb-sw:disabled { cursor: default; opacity: .8; }
.gb-off { color: var(--warn); font-weight: 600; }
.gb-chip { display: inline-flex; gap: 6px; align-items: baseline; white-space: nowrap; }
.gb-chip i { font-style: normal; color: var(--text-2); letter-spacing: .06em; font-size: 11px; }
.gb-chip b { font-weight: 600; }
.gb-chip.tone-ok b { color: var(--ok); }
.gb-chip.tone-warn b { color: var(--warn); }
.gb-chip.tone-crit b { color: var(--crit); }
.gb-chip.tone-info b { color: var(--info); }
.gb-msg { font-weight: 600; }
.gb-msg.tone-crit { color: var(--crit); }
.gb-login { flex-basis: 100%; display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
@media (max-width: 700px) { .gb { padding: 6px 10px; gap: 6px 10px; } .gb-chip { font-size: 11px; } .gb-chip:not(:nth-of-type(1)) i { display: none; } }
.gb-ap { order: 10; margin-left: auto; }          /* top-right (owner V6.9 §1) */
.gb-msg { order: 11; }
.gb-login { order: 12; }
/* chart provenance (V6.8 §51-53): what the candles are, always above the chart */
.lc-prov { font-family: var(--font-mono, monospace); font-size: 11px; letter-spacing: .03em; color: var(--text-2); padding: 2px 0 6px; }
.lc-prov b { color: var(--text); font-weight: 600; }
.lc-gap { color: var(--warn); }
.lc-forming { color: var(--info); }
.cv-desk-q { font-size: 11px; display: flex; flex-wrap: wrap; gap: 4px; align-items: baseline; }
.cv-desk-q b { color: var(--accent); }
.dk-activity { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; font-size: 12px; }
.dk-activity li { border-bottom: 1px solid var(--line-soft, var(--line)); padding: 3px 0; }
.gb-active { order: 20; flex-basis: 100%; display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: center; padding: 6px 10px; border: 1px solid var(--accent); border-radius: 8px; background: var(--surface-2); }
.gb-active-k { color: var(--accent); letter-spacing: .08em; }
.gb-trade { font-family: var(--font-mono, monospace); font-size: 11.5px; }
.gb-trade.pos b { color: var(--ok); }
.gb-trade.neg b { color: var(--crit); }
.gb-view { margin-left: 6px; padding: 2px 8px; font-size: 11px; }
.cv-sec-fold > summary { cursor: pointer; list-style: none; display: flex; align-items: baseline; gap: 6px; }
.cv-sec-fold > summary::-webkit-details-marker { display: none; }
.cv-sec-fold > summary::before { content: "▸"; color: var(--text-2); }
.cv-sec-fold[open] > summary::before { content: "▾"; }
.cv-fold-hint { color: var(--text-2); font-size: 11px; }
/* manual close (V11.1 §C) */
.cp { display: inline-flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.cp-btn { padding: 3px 10px; font-size: 11px; font-weight: 700; letter-spacing: .04em; border-color: var(--crit); color: var(--crit); }
.cp-state { font-size: 11px; font-weight: 600; }
.cp-state.tone-crit { color: var(--crit); } .cp-state.tone-ok { color: var(--ok); } .cp-state.tone-warn { color: var(--warn); }
.cp-confirm p { margin: 4px 0; }
.cp-actions { display: flex; gap: 8px; margin-top: 10px; }
.cp-confirm-btn { border-color: var(--crit); }
.hp-close { margin-top: 6px; }
/* ===================================================================== V11.4 TRADING FLOOR: HOME + TEAM WORKSPACES (floor-1.0.0) */
.fl-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; flex-wrap: wrap; }
.fl-conn { align-self: center; }
.fl-sec { margin: 0 0 18px; padding: 14px 16px; border: 1px solid var(--line); border-radius: var(--radius-lg); background: var(--surface); }
.fl-sec-h { display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: baseline; margin-bottom: 10px; }
.fl-sec-h h2 { margin: 0; font-size: var(--fs-md); letter-spacing: .1em; }
.fl-sec-h span { color: var(--text-3); font-size: var(--fs-xs); }
.fl-faint { color: var(--text-3); font-size: var(--fs-sm); }
.fl-pill { display: inline-block; padding: 2px 8px; border-radius: 999px; border: 1px solid var(--line); font-size: 11px; font-weight: 600; letter-spacing: .04em; white-space: nowrap; }
.fl-pill.ok { color: var(--ok); border-color: var(--ok); } .fl-pill.crit { color: var(--crit); border-color: var(--crit); }
.fl-pill.warn { color: var(--warn); border-color: var(--warn); } .fl-pill.info { color: var(--info); border-color: var(--info); }
.fl-v { font-family: var(--font-mono); font-weight: 600; transition: background-color .9s; border-radius: 4px; padding: 0 2px; }
.fl-big { font-size: var(--fs-lg); }
.fl-flash { background: var(--accent-soft); }
.fl-clock.fl-flash { background: transparent; }
.tone-ok { color: var(--ok); } .tone-crit { color: var(--crit); } .tone-warn { color: var(--warn); } .tone-info { color: var(--info); }
/* A. account */
.fl-acct { display: grid; gap: 10px; }
.fl-acct-row { display: grid; grid-template-columns: 150px repeat(7, minmax(0, 1fr)); gap: 8px; align-items: stretch; }
.fl-acct-cad { grid-template-columns: 150px repeat(5, minmax(0, 1fr)) 2fr; }
.fl-acct-h { align-self: center; font-weight: 700; font-size: var(--fs-xs); letter-spacing: .08em; color: var(--text-2); }
.fl-tile { display: flex; flex-direction: column; gap: 2px; padding: 8px 10px; border: 1px solid var(--line-soft); border-radius: var(--radius); background: var(--surface-2); min-width: 0; }
.fl-tile small { color: var(--text-3); font-size: 11px; overflow-wrap: anywhere; }
.fl-k { font-size: 10.5px; letter-spacing: .08em; color: var(--text-2); }
.fl-note { align-self: center; color: var(--text-3); font-size: 11px; }
/* B. positions */
.fl-pos-list { display: grid; gap: 12px; }
.fl-empty { display: flex; gap: 12px; align-items: baseline; padding: 14px; border: 1px dashed var(--line); border-radius: var(--radius); color: var(--text-2); }
.fl-pos { border: 1px solid var(--line); border-left: 4px solid var(--info); border-radius: var(--radius); padding: 10px 12px; background: var(--surface-2); }
.fl-pos.ok { border-left-color: var(--ok); } .fl-pos.crit { border-left-color: var(--crit); }
.fl-pos-h { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-bottom: 8px; }
.fl-sym { font-size: var(--fs-lg); letter-spacing: .04em; }
.fl-bot { color: var(--text-2); font-size: var(--fs-sm); }
.fl-grow { flex: 1; }
.fl-pos-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 8px; }
.fl-mgmt { display: grid; gap: 2px; margin-top: 8px; padding: 8px 10px; border-radius: var(--radius); background: var(--surface-3); font-size: var(--fs-sm); }
.fl-mgmt small { color: var(--text-3); }
.fl-mgmt.tone-crit { outline: 1px solid var(--crit); } .fl-mgmt.tone-warn { outline: 1px solid var(--warn); }
.fl-mgmt b { color: var(--text); }
.fl-pos-f { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-top: 8px; }
/* C. teams */
.fl-teams { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.fl-team { display: flex; flex-direction: column; gap: 6px; padding: 12px; border: 1px solid var(--line); border-radius: var(--radius-lg); background: var(--surface-2);
  color: var(--text); text-decoration: none; transition: border-color var(--dur, .15s); }
.fl-team:hover, .fl-team:focus-visible { border-color: var(--accent); }
.fl-team header { display: flex; justify-content: space-between; gap: 8px; align-items: center; }
.fl-team header strong { letter-spacing: .08em; }
.fl-team-px { display: flex; gap: 10px; align-items: baseline; }
.fl-team-dl { display: grid; grid-template-columns: max-content 1fr; gap: 3px 10px; margin: 0; font-size: var(--fs-sm); }
.fl-team-dl dt { color: var(--text-3); font-size: 11px; letter-spacing: .06em; }
.fl-team-dl dd { margin: 0; overflow-wrap: anywhere; }
.fl-team-wait { margin: 0; font-size: 11.5px; color: var(--text-2); overflow-wrap: anywhere; }
.fl-team-open { margin-top: auto; color: var(--accent); font-weight: 700; font-size: var(--fs-sm); }
/* D / E */
.fl-opps { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 10px; }
.fl-opp { display: flex; flex-direction: column; gap: 4px; padding: 10px; border: 1px solid var(--line-soft); border-radius: var(--radius); background: var(--surface-2); color: var(--text); text-decoration: none; font-size: var(--fs-sm); overflow-wrap: anywhere; }
.fl-opp small { color: var(--text-3); }
.fl-today-sum { font-weight: 600; }
.fl-tbl-wrap, .fl-table-wrap { overflow-x: auto; max-width: 100%; }
.fl-tbl { width: 100%; border-collapse: collapse; font-size: var(--fs-sm); }
.fl-tbl th { text-align: left; font-size: 10.5px; letter-spacing: .06em; color: var(--text-2); border-bottom: 1px solid var(--line); padding: 4px 6px; white-space: nowrap; }
.fl-tbl td { padding: 5px 6px; border-bottom: 1px solid var(--line-soft); white-space: nowrap; }
.fl-tbl tr.dim td { opacity: .55; }
.fl-adv { display: flex; flex-wrap: wrap; gap: 6px 16px; padding: 10px 2px; font-size: var(--fs-sm); color: var(--text-3); }
.fl-adv a { color: var(--text-2); }
/* team workspace */
.fl-tabs { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 10px; }
.fl-tabs a { padding: 6px 12px; border: 1px solid var(--line); border-radius: 999px; color: var(--text-2); text-decoration: none; font-weight: 600; font-size: var(--fs-sm); letter-spacing: .05em; }
.fl-tabs a.on { color: var(--accent); border-color: var(--accent); }
.fl-team-status { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-bottom: 12px; }
.fl-team-ctx { color: var(--text-3); font-size: var(--fs-sm); }
.fl-chart { position: relative; }
.fl-chart-host { height: 440px; }
.fl-badge { display: flex; flex-wrap: wrap; gap: 6px 12px; align-items: center; margin-bottom: 6px; font-size: var(--fs-sm); }
.fl-badge-age { color: var(--text-2); font-family: var(--font-mono); }
.fl-legend { min-height: 18px; font-size: 11.5px; color: var(--text-2); }
.fl-chart-ctl { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
.fl-exec-line { font-size: var(--fs-md); }
.fl-bots { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 10px; }
.fl-bot-card { padding: 10px; border: 1px solid var(--line-soft); border-radius: var(--radius); background: var(--surface-2); font-size: var(--fs-sm); min-width: 0; }
.fl-bot-card header { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.fl-bot-card p { overflow-wrap: anywhere; }
.fl-fwd-bar { height: 6px; margin: 6px 0; border-radius: 3px; background: var(--line-soft); overflow: hidden; }
.fl-fwd-bar i { display: block; height: 100%; background: var(--accent); }
.fl-fwd-list { display: grid; gap: 10px; }
.fl-fwd-list > *, .fl-coord { min-width: 0; max-width: 100%; overflow-wrap: anywhere; }
.fl-check { list-style: none; margin: 4px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 3px 10px; font-size: 11.5px; }
.fl-check li.ok { color: var(--ok); } .fl-check li.miss { color: var(--warn); }
.fl-desk h3 { font-size: var(--fs-sm); color: var(--text-2); letter-spacing: .04em; margin: 8px 0; }
.fl-an-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 8px; }
.fl-an { padding: 8px 10px; border: 1px solid var(--line-soft); border-radius: var(--radius); background: var(--surface-2); font-size: 12px; min-width: 0; }
.fl-an.dim { opacity: .6; }
.fl-an header { display: flex; flex-wrap: wrap; gap: 4px 6px; align-items: center; }
.fl-an-state { display: block; margin: 4px 0; }
.fl-an p { margin: 0 0 4px; color: var(--text-2); overflow-wrap: anywhere; }
.fl-an small { color: var(--text-3); }
.fl-hb { display: flex; flex-wrap: wrap; gap: 6px 18px; margin-bottom: 8px; font-size: var(--fs-sm); }
.fl-hb i { font-style: normal; color: var(--text-3); font-size: 11px; letter-spacing: .06em; }
.fl-advanced summary { cursor: pointer; color: var(--text-2); padding: 8px 0; }
.fl-pre { max-height: 360px; overflow: auto; font-size: 11px; background: var(--surface-2); padding: 8px; border-radius: var(--radius); }
@media (max-width: 1400px) { .fl-acct-row { grid-template-columns: repeat(4, minmax(0, 1fr)); } .fl-acct-h { grid-column: 1 / -1; }
  .fl-acct-cad { grid-template-columns: repeat(3, minmax(0, 1fr)); } .fl-pos-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (max-width: 1100px) { .fl-teams { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 700px) { .fl-acct-row, .fl-acct-cad { grid-template-columns: repeat(2, minmax(0, 1fr)); } .fl-pos-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .fl-teams { grid-template-columns: 1fr; } .fl-sec { padding: 10px; } .fl-chart-host { height: 320px; } .fl-bots, .fl-an-grid { grid-template-columns: 1fr; } }
/* V11.4 mobile: wide desk tables scroll inside their own box, never the page (Command Center at 390 px overflowed by 5 px) */
@media (max-width: 900px) { .dk-tbl { display: block; max-width: 100%; overflow-x: auto; } }
/* V11.4: top-bar items never shrink below their text (they overlapped at 1366 px); the row clips instead */
.tb-items .tb-item { flex-shrink: 0; }
/* ===================================================================== V11.5: the floor reads CONTROL CENTER -> TEAMS -> WORKSPACES */
.floor-view #topbar { display: none; }                               /* gold is TEAM XAU on the floor; its legacy bar stays elsewhere */
.nav a.nav-sub { padding-top: 3px; padding-bottom: 3px; font-size: 12.5px; opacity: .85; padding-left: 28px; }
.nav a.nav-sub[aria-current="page"] { color: var(--accent); opacity: 1; }
.app.rail .nav a.nav-sub { display: none; }
.fl-teams .fl-team { min-height: 300px; border-width: 2px; }
.fl-team header strong { font-size: var(--fs-lg); }
.fl-team-open.btn { align-self: flex-start; margin-top: auto; }
.fl-cc-teams .fl-sec-h .btn { margin-left: auto; }
.fl-health { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 8px; }
.fl-hc { display: flex; flex-direction: column; gap: 2px; padding: 8px 10px; border: 1px solid var(--line-soft); border-left: 4px solid var(--line); border-radius: var(--radius); background: var(--surface-2); font-size: 12px; min-width: 0; }
.fl-hc.tone-ok { border-left-color: var(--ok); } .fl-hc.tone-warn { border-left-color: var(--warn); } .fl-hc.tone-crit { border-left-color: var(--crit); }
.fl-hc small { color: var(--text-3); overflow-wrap: anywhere; }
.gb-ap { padding: 6px 12px; border: 2px solid var(--accent); }
.gb-ap .gb-ap-k { font-size: 13px; }
.gb-sw { min-width: 110px; font-size: 13px; }
.gb-build b { font-family: var(--font-mono); font-weight: 500; font-size: 11px; }
.fl-coord { border: 2px solid var(--accent); border-radius: var(--radius-lg); padding: 12px; margin-bottom: 12px; background: var(--surface-2); }
.fl-coord header { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-bottom: 8px; }
.fl-coord header strong { letter-spacing: .1em; color: var(--accent); }
.fl-coord header small { color: var(--text-3); }
.fl-coord-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.fl-kv { display: flex; flex-direction: column; gap: 2px; padding: 6px 8px; border: 1px solid var(--line-soft); border-radius: var(--radius); min-width: 0; }
.fl-kv span { font-size: 10.5px; letter-spacing: .08em; color: var(--text-2); }
.fl-kv b { font-size: 12.5px; overflow-wrap: anywhere; }
@media (max-width: 1100px) { .fl-coord-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.fl-fusion { font-size: 11.5px; margin: 4px 0 0; overflow-wrap: anywhere; }
/* ===================================================================== V11.6 TRADING CITY (the old city restored as HOME) */
.tc { display: flex; flex-direction: column; gap: 14px; min-width: 0;
  --tc-neon: #38e1ff; --tc-panel: linear-gradient(160deg, rgba(56, 225, 255, 0.08), rgba(8, 18, 34, 0.92) 40%, rgba(167, 139, 250, 0.06)); }
.floor-view .view { background: radial-gradient(ellipse at 50% -10%, rgba(23, 56, 102, 0.55) 0%, rgba(8, 20, 42, 0.25) 45%, transparent 75%); }
.tc .fl-sec { background: var(--tc-panel); border-color: rgba(56, 225, 255, 0.22); box-shadow: 0 12px 40px rgba(0, 0, 0, 0.35); }
.tc .fl-sec-h h2 { color: #fff; text-shadow: 0 0 14px rgba(56, 225, 255, 0.45); }
/* TODAY hero */
.tc-hero { display: grid; grid-template-columns: auto minmax(220px, auto) 1fr auto; align-items: center; gap: 14px 30px; padding: 16px 22px; border-radius: 16px;
  border: 1px solid rgba(56, 225, 255, 0.4); background: linear-gradient(110deg, rgba(56, 225, 255, 0.14), rgba(10, 20, 36, 0.92) 35%, rgba(167, 139, 250, 0.12));
  box-shadow: 0 0 0 1px rgba(56, 225, 255, 0.08), 0 18px 50px rgba(0, 0, 0, 0.45), inset 0 1px 0 rgba(255, 255, 255, 0.06); position: relative; }
.tc-hero.ok { border-color: rgba(61, 255, 168, 0.55); } .tc-hero.crit { border-color: rgba(255, 79, 94, 0.55); }
.tc-hero-brand { display: flex; align-items: center; gap: 12px; }
.tc-today, .tc-gold { display: flex; flex-direction: column; gap: 2px; }
.tc-today-k { font-size: 11px; font-weight: 800; letter-spacing: 0.16em; color: var(--tc-neon); }
.tc-today-v { font-size: clamp(34px, 3.6vw, 54px); line-height: 1.05; font-weight: 800; letter-spacing: -0.01em; font-family: var(--font-mono); }
.tc-today-v.tone-ok { color: #3dffa8; text-shadow: 0 0 22px rgba(61, 255, 168, 0.45); }
.tc-today-v.tone-crit { color: #ff4f5e; text-shadow: 0 0 22px rgba(255, 79, 94, 0.45); }
.tc-today small, .tc-gold small { color: var(--text-2); font-size: 11.5px; }
.tc-gold-v { font-size: 24px; font-family: var(--font-mono); font-weight: 800; }
.tc-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px 14px; }
.tc-stat { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.tc-stat > span { font-size: 10.5px; letter-spacing: 0.1em; color: var(--text-3); font-weight: 700; }
.tc-stat .fl-v { font-size: 17px; }
.tc-conn { position: absolute; right: 14px; bottom: 6px; font-size: 10.5px; color: var(--text-3); letter-spacing: 0.08em; }
/* city + side */
.tc-main { display: grid; grid-template-columns: minmax(0, 1fr) 390px; gap: 14px; min-width: 0; --stage-h: clamp(520px, calc(100vh - 330px), 820px); }
.tc-stage { height: var(--stage-h); }
.tc-stage.tc-no3d { height: auto; min-height: 60px; }
.tc-stage-note { position: absolute; inset: 12px; color: var(--text-2); font-size: 13px; }
.tc-views { display: flex; flex-direction: column; gap: 4px; }
.tc-views .btn { background: rgba(4, 10, 20, 0.72); border-color: rgba(56, 225, 255, 0.35); font-size: 12px; padding: 4px 10px; }
.tc-side { display: flex; flex-direction: column; gap: 10px; min-width: 0; max-height: var(--stage-h); overflow-y: auto; padding: 12px; border-radius: 16px;
  border: 1px solid rgba(56, 225, 255, 0.3); background: var(--tc-panel); }
.tc-h { margin: 0; font-size: var(--fs-md); letter-spacing: 0.12em; color: #fff; display: flex; flex-direction: column; gap: 2px; }
.tc-h small { font-size: 11px; color: var(--text-3); letter-spacing: 0.04em; font-weight: 500; }
.tc-trades { display: flex; flex-direction: column; gap: 10px; }
.tc-empty { display: flex; flex-direction: column; gap: 4px; padding: 14px; border: 1px dashed var(--line); border-radius: 12px; color: var(--text-2); }
.tc-trade { border: 1px solid var(--line); border-left: 4px solid var(--info); border-radius: 12px; padding: 10px 12px; background: rgba(4, 10, 20, 0.55); }
.tc-trade.ok { border-left-color: var(--ok); } .tc-trade.crit { border-left-color: var(--crit); }
.tc-trade header { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.tc-trade header strong { font-size: var(--fs-lg); letter-spacing: 0.04em; }
.tc-trade-dl { display: grid; grid-template-columns: repeat(4, max-content minmax(0, 1fr)); gap: 3px 8px; margin: 8px 0 6px; font-size: 12px; }
.tc-trade-dl dt { color: var(--text-3); font-size: 10.5px; letter-spacing: 0.06em; align-self: center; }
.tc-trade-dl dd { margin: 0; font-family: var(--font-mono); overflow-wrap: anywhere; }
.tc-why { margin: 0 0 6px; font-size: 11.5px; padding: 6px 8px; border-radius: 8px; background: rgba(56, 225, 255, 0.06); }
.tc-trade footer { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.tc-faint { color: var(--text-3); font-size: 12px; }
/* team buildings */
.tc-blds { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 10px; }
.tc-bld { position: relative; display: flex; flex-direction: column; gap: 6px; padding: 12px 12px 10px; min-height: 210px; border-radius: 12px 12px 6px 6px; text-decoration: none; color: var(--text);
  border: 1px solid rgba(124, 135, 148, 0.45); border-top: 3px solid #8a94a3;
  background: linear-gradient(180deg, rgba(56, 225, 255, 0.07), rgba(6, 14, 28, 0.95) 55%),
    repeating-linear-gradient(90deg, transparent 0 14px, rgba(207, 230, 255, 0.05) 14px 16px); transition: transform .15s, box-shadow .15s; }
.tc-bld:hover, .tc-bld:focus-visible { transform: translateY(-3px); box-shadow: 0 10px 30px rgba(56, 225, 255, 0.18); }
.tc-up { border-top-color: #3dffa8; box-shadow: 0 0 22px rgba(61, 255, 168, 0.14); }
.tc-down { border-top-color: #ff4f5e; box-shadow: 0 0 22px rgba(255, 79, 94, 0.14); }
.tc-warn { border-color: rgba(255, 179, 71, 0.6); }
.tc-active::after { content: ""; position: absolute; top: 10px; right: 10px; width: 9px; height: 9px; border-radius: 50%; background: #c6f432; box-shadow: 0 0 10px #c6f432; animation: tc-pulse 1.8s ease-in-out infinite; }
@keyframes tc-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.35; } }
@media (prefers-reduced-motion: reduce) { .tc-active::after { animation: none; } }
.tc-bld-roof { display: flex; justify-content: space-between; gap: 6px; align-items: center; padding-right: 14px; }
.tc-bld-roof strong { letter-spacing: 0.1em; font-size: 13px; }
.tc-bld-pnl { display: flex; flex-direction: column; }
.tc-bld-pnl small { color: var(--text-3); font-size: 10.5px; }
.tc-bld-rows { display: flex; flex-direction: column; gap: 3px; font-size: 12px; }
.tc-bld-go { margin-top: auto; font-weight: 800; font-size: 12px; color: var(--tc-neon); letter-spacing: 0.08em; }
@media (max-width: 1400px) { .tc-blds { grid-template-columns: repeat(3, minmax(0, 1fr)); } .tc-stats { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (max-width: 1250px) { .tc-main { grid-template-columns: 1fr; } .tc-side { max-height: none; }
  .tc-hero { grid-template-columns: auto 1fr; } .tc-stats { grid-column: 1 / -1; } }
@media (max-width: 700px) {
  .tc-main { --stage-h: 360px; }
  .tc-hero { grid-template-columns: 1fr; padding: 14px; gap: 10px; } .tc-hero-brand .cv-brand-mark { display: none; } .tc-hero-brand .cv-title { font-size: 20px; }
  .tc-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .tc-blds { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: 6px; }
  .tc-bld { flex: 0 0 72%; scroll-snap-align: start; }
  .tc-trade-dl { grid-template-columns: repeat(2, max-content minmax(0, 1fr)); }
  .tc-stage .cv-legend, .tc-stage .cv-hud-fx > span:first-child { display: none; }
  .tc-views { flex-direction: row; flex-wrap: wrap; max-width: 60vw; justify-content: flex-end; }
}
.tc-side .tc-trade-dl { grid-template-columns: repeat(2, max-content minmax(0, 1fr)); }
.tc-stat .fl-v { white-space: nowrap; }
.tc-stats { grid-template-columns: repeat(4, minmax(84px, 1fr)); }
@media (max-width: 700px) { .tc-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); } .tc-today-v { font-size: 38px; } }
/* V11.6 layout: below 1500 px the city takes the full width and ACTIVE TRADES sits directly under it */
@media (max-width: 1500px) { .tc-main { grid-template-columns: 1fr; } .tc-side { max-height: none; } }
/* phones: the sticky header keeps AUTOPILOT + the day's numbers; on the floor pages the trades are in the page itself */
@media (max-width: 700px) { .floor-view .gb-active { display: none; } .gb-chip.gb-build { display: none; } }
/* the UNVERIFIED_RUNTIME alarm is never hidden; it wraps instead of widening the page at phone width (recovery 2026-10-17: +40 px at 390) */
.gb-chip.gb-unverified, .gb-chip.gb-build { white-space: normal; min-width: 0; max-width: 100%; flex-wrap: wrap; }   /* +5 px at 1440 in production (long BUILD text) */
.gb-chip.gb-unverified b { overflow-wrap: anywhere; }   /* parts of the header only; the header itself is never hidden */

/* BOT OFFICE (V7.1 §4, §10): per-bot mode, execution readiness, quality and the sizing the governor would apply. */
.fl-office { margin: 8px 0; padding: 8px; border: 1px dashed var(--line-soft); border-radius: var(--radius); background: var(--surface-1, transparent); }
.fl-office-head { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-bottom: 8px; }
.fl-office .fl-coord-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
@media (max-width: 1100px) { .fl-office .fl-coord-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .fl-office .fl-coord-grid { grid-template-columns: minmax(0, 1fr); } }

/* V11.5 Monday board */
.bd-runs { display: flex; flex-direction: column; gap: 8px; }
.bd-row, .bd-grades { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 6px; }
.bd-kv { display: flex; flex-direction: column; gap: 2px; padding: 6px 8px; border: 1px solid var(--line-soft); border-radius: var(--radius); background: var(--surface-2); min-width: 0; }
.bd-kv small { color: var(--text-3); font-size: var(--fs-xs, 11px); letter-spacing: .04em; }
.bd-kv b { overflow-wrap: anywhere; font-weight: 600; }
.bd-money { display: flex; flex-direction: column; gap: 4px; padding: 6px; border: 1px solid var(--line); border-radius: var(--radius); }
.bd-money-why { color: var(--text-2); overflow-wrap: anywhere; }
.bd-kv.tone-ok b { color: var(--ok); }
.bd-kv.tone-warn b { color: var(--warn); }
.bd-kv.tone-crit b { color: var(--crit); }
.bd-opp { gap: 8px; }
.bd-opp-h { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.bd-cap { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 6px; }
.bd-acct { display: flex; flex-direction: column; gap: 2px; padding: 6px 8px; border-left: 3px solid var(--accent, #4a8); background: var(--surface-1, transparent); }
.bd-acct:last-child { border-left-color: var(--warn, #c93); }


/* ---------------------------------------------------------------- trade notifications (trade-events-1.0.0) */
.gbar { display: flex; align-items: flex-start; }
.gbar > .gb { flex: 1 1 auto; min-width: 0; }
.nt { position: relative; flex: 0 0 auto; padding: 6px 12px 6px 0; display: flex; gap: 6px; align-items: center; }
/* the always-visible trade-sound control (owner 2026-10-13): loud when locked, quiet when on */
.nt-snd { height: 34px; padding: 0 10px; border-radius: 8px; border: 1px solid var(--line); background: var(--surface-2); color: var(--text-2);
  font: 700 12px/1 var(--font-sans); letter-spacing: .02em; cursor: pointer; white-space: nowrap; }
.nt-snd.on { color: var(--ok); border-color: var(--ok); background: var(--ok-soft); }
.nt-snd.off { color: var(--text-2); }
.nt-snd.locked { color: #111; background: var(--warn); border-color: var(--warn); animation: nt-snd-pulse 1.6s ease-in-out infinite; }
@keyframes nt-snd-pulse { 50% { opacity: .72; } }
@media (prefers-reduced-motion: reduce) { .nt-snd.locked { animation: none; } }
@media (max-width: 640px) { .nt-snd { max-width: 46vw; overflow: hidden; text-overflow: ellipsis; font-size: 11px; padding: 0 8px; } }
.nt-diag { display: grid; grid-template-columns: auto 1fr; gap: 2px 10px; margin: 0; padding: 8px 14px; border-top: 1px solid var(--line);
  font: 12px/1.4 var(--font-sans); color: var(--text-2); }
.nt-diag dt { color: var(--text-3, var(--text-2)); }
.nt-diag dd { margin: 0; color: var(--text); overflow-wrap: anywhere; }
.nt-bell { position: relative; display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: 8px;
  border: 1px solid var(--line); background: var(--surface-2); color: var(--text-2); cursor: pointer; }
.nt-bell svg { width: 18px; height: 18px; }
.nt-bell:hover, .nt-bell[aria-expanded="true"] { color: var(--text); border-color: var(--line-strong); }
.nt-bell.has { color: var(--accent); border-color: var(--accent-line); }
.nt-badge { position: absolute; top: -6px; right: -6px; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 999px; background: var(--accent);
  color: #111; font: 700 11px/18px var(--font-sans); text-align: center; }
.nt-panel { position: absolute; top: calc(100% + 2px); right: 8px; z-index: 60; width: min(400px, calc(100vw - 24px)); max-height: min(78vh, 680px);
  display: flex; flex-direction: column; border: 1px solid var(--line-strong); border-radius: var(--radius-lg); background: var(--surface); box-shadow: var(--shadow);
  font-size: var(--fs-sm); }
.nt-panel[hidden] { display: none; }
.nt-head { display: flex; justify-content: space-between; align-items: center; padding: 12px 14px; border-bottom: 1px solid var(--line); }
.nt-conn { font-size: var(--fs-xs); color: var(--text-3); }
.nt-conn.live { color: var(--ok); }
.nt-set { padding: 8px 14px 10px; border-bottom: 1px solid var(--line); display: grid; gap: 6px; }
.nt-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.nt-sub { color: var(--text-2); font-size: var(--fs-xs); justify-content: flex-start; }
.nt-sw { min-width: 54px; padding: 3px 10px; border-radius: 999px; border: 1px solid var(--line); background: var(--surface-3); color: var(--text-2);
  font: 700 var(--fs-xs) var(--font-sans); cursor: pointer; }
.nt-sw.on { color: var(--ok); border-color: var(--ok); }
.nt-perm.tone-ok { color: var(--ok); } .nt-perm.tone-warn { color: var(--warn); } .nt-perm.tone-crit { color: var(--crit); }
.nt-select { max-width: 100%; font: inherit; color: var(--text); background: var(--surface-2); border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 2px 4px; }
.nt-sub input[type="range"] { flex: 1 1 140px; accent-color: var(--accent); }
.nt-vol-v { min-width: 3.5em; text-align: right; font-family: var(--font-mono); }
.nt-small { padding: 4px 10px; font-size: var(--fs-xs); }
.nt-hint { margin: 0; color: var(--warn); font-size: var(--fs-xs); }
.nt-list { overflow-y: auto; padding: 6px; display: grid; gap: 4px; }
.nt-empty { margin: 10px; color: var(--text-3); font-size: var(--fs-xs); }
.nt-item { display: grid; gap: 2px; width: 100%; text-align: left; padding: 8px 10px 8px 12px; border: 1px solid transparent; border-left: 3px solid var(--line-strong);
  border-radius: var(--radius); background: var(--surface-2); color: var(--text); font: inherit; cursor: pointer; }
.nt-item:hover, .nt-item:focus-visible { border-color: var(--line-strong); }
.nt-item.k-open { border-left-color: var(--info); } .nt-item.k-tp { border-left-color: var(--accent); }
.nt-item.k-sl { border-left-color: var(--text-3); } .nt-item.k-closed { border-left-color: var(--line-strong); }
.nt-item.missed { opacity: .85; }
.nt-item-top { display: flex; align-items: center; gap: 8px; }
.nt-item-top time { margin-left: auto; color: var(--text-3); font-size: var(--fs-xs); white-space: nowrap; }
.nt-item-line { color: var(--text-2); font-family: var(--font-mono); font-size: 11.5px; overflow-wrap: anywhere; }
.nt-acct { padding: 0 6px; border-radius: 4px; font: 700 10.5px/16px var(--font-sans); letter-spacing: .06em; }
.nt-acct.demo { color: var(--info); background: var(--info-soft); }
.nt-acct.live { color: #fff; background: var(--crit); }
.nt-tag { padding: 0 6px; border-radius: 4px; font: 700 10.5px/16px var(--font-sans); color: var(--warn); background: var(--warn-soft); }
/* the toast: top-right under the header on desktop, full width at the top on a phone */
.nt-toasts { position: fixed; top: 64px; right: 16px; z-index: 1000; display: grid; gap: 10px; width: min(380px, calc(100vw - 32px)); pointer-events: none; }
.nt-toast { position: relative; overflow: hidden; pointer-events: auto; cursor: pointer; padding: 12px 14px 14px 16px; border: 1px solid var(--line-strong);
  border-left: 4px solid var(--info); border-radius: var(--radius-lg); background: color-mix(in srgb, var(--surface) 94%, transparent);
  backdrop-filter: blur(8px); box-shadow: var(--shadow); color: var(--text); animation: nt-in 260ms var(--ease); }
.nt-toast.k-tp { border-left-color: var(--accent); } .nt-toast.k-sl { border-left-color: var(--text-3); } .nt-toast.k-closed { border-left-color: var(--line-strong); }
.nt-toast:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.nt-toast.out { opacity: 0; transform: translateX(16px); transition: opacity 200ms var(--ease), transform 200ms var(--ease); }
.nt-toast-head { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; }
.nt-toast-title { font-size: var(--fs-md); letter-spacing: .01em; }
.nt-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--info); box-shadow: 0 0 0 4px var(--info-soft); flex: 0 0 auto; }
.nt-toast.k-tp .nt-dot { background: var(--accent); box-shadow: 0 0 0 4px var(--accent-soft); }
.nt-toast.k-sl .nt-dot, .nt-toast.k-closed .nt-dot { background: var(--text-3); box-shadow: 0 0 0 4px var(--neutral-soft); }
.nt-x { margin-left: auto; border: 0; background: transparent; color: var(--text-3); font-size: 18px; line-height: 1; cursor: pointer; padding: 0 2px; }
.nt-x:hover { color: var(--text); }
.nt-toast-main { font-weight: 600; font-size: var(--fs-md); }
.nt-toast-line { font-family: var(--font-mono); font-size: var(--fs-xs); color: var(--text-2); margin-top: 2px; }
.nt-toast-foot { margin-top: 6px; color: var(--text-3); font-size: 11.5px; }
.nt-toast-warn { margin-top: 6px; color: var(--warn); font-size: 11.5px; }
.nt-progress { position: absolute; left: 0; bottom: 0; height: 2px; width: 100%; background: var(--accent); transform-origin: left; animation: nt-life 6s linear forwards; opacity: .7; }
@keyframes nt-in { from { opacity: 0; transform: translateY(-8px) scale(.98); } to { opacity: 1; transform: none; } }
@keyframes nt-life { from { transform: scaleX(1); } to { transform: scaleX(0); } }
@media (max-width: 700px) {
  .nt { padding: 4px 8px 4px 0; }
  .nt-toasts { top: 8px; right: 8px; left: 8px; width: auto; }
  .nt-panel { position: fixed; top: 52px; left: 8px; right: 8px; width: auto; max-height: calc(100vh - 64px); }
}
@media (prefers-reduced-motion: reduce) { .nt-toast { animation: none; } .nt-toast.out { transition: none; } .nt-progress { animation: none; } }

/* EVIDENCE TIERS (evidence-tiers-1.0.0): PROVEN vs EXPERIMENTAL badges, never the same look */
.tier-badge { display: inline-block; padding: 1px 8px; border-radius: 6px; font-size: 11px; font-weight: 800; letter-spacing: 0.08em; border: 1px solid; white-space: nowrap; }
.tier-badge.tier-proven { color: #7ee2a8; border-color: rgba(126, 226, 168, 0.6); background: rgba(126, 226, 168, 0.12); }
.tier-badge.tier-exp { color: #f5b942; border-color: rgba(245, 185, 66, 0.6); background: rgba(245, 185, 66, 0.12); }
.tier-badge.tier-off { color: #9aa4b2; border-color: rgba(154, 164, 178, 0.45); background: transparent; }
.tier-status.st-failed { color: #f0857d; } .tier-status.st-unproven { color: #f5b942; } .tier-status.st-proven { color: #7ee2a8; }
.tier-head { margin: 0 0 8px; }

/* TEAM AGENTS (agents-1.0.0, components/agentsPanel.js): supervisor line + team captain cards */
.ag-sup { margin: 0 0 10px; padding: 10px 12px; border: 1px solid var(--line-strong); border-radius: var(--radius-lg); background: var(--surface-2); }
.ag-sup-h { display: flex; flex-wrap: wrap; gap: 6px 10px; align-items: center; }
.ag-sup-h small, .ag-auth { color: var(--text-3); font-size: var(--fs-xs); }
.ag-sup p { margin: 6px 0 0; font-size: var(--fs-sm); line-height: 1.45; }
.ag-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 340px), 1fr)); gap: 10px; }
.ag-card { padding: 10px 12px; border: 1px solid var(--line); border-radius: var(--radius-lg); background: var(--surface); min-width: 0; }
.ag-card.ag-h-warn { border-color: var(--warn); }
.ag-card.ag-h-abnormal { border-color: var(--crit); }
.ag-card-h { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-bottom: 6px; }
.ag-answer { margin: 0 0 8px; font-size: var(--fs-sm); line-height: 1.4; }
.ag-grid { display: grid; gap: 3px; }
.ag-kv { display: grid; grid-template-columns: 130px 1fr; gap: 8px; font-size: var(--fs-xs); }
.ag-kv span { color: var(--text-3); letter-spacing: .04em; }
.ag-kv b { font-weight: 500; overflow-wrap: anywhere; }
.ag-recs { margin: 6px 0 0; padding-left: 18px; font-size: var(--fs-xs); color: var(--text-2); }

/* RESEARCH SCANNER cards (scan-1.0.0, team pages): analysis only, one card per scanner strategy */
.scan-head { display: flex; flex-wrap: wrap; gap: 6px 12px; align-items: center; margin-bottom: 10px; }
.scan-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 440px), 1fr)); gap: 12px; }
.scan-card { border: 1px solid var(--line); border-radius: var(--radius); padding: 10px 12px; display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.scan-card[data-status="FAILED"] { border-color: var(--crit); }
.scan-card-h { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 6px 10px; align-items: flex-start; }
.scan-card-h h3 { margin: 0; font-size: 13px; letter-spacing: .06em; overflow-wrap: anywhere; }
.scan-card-pills { display: flex; flex-wrap: wrap; gap: 4px; }
.scan-exec-off { margin: 0; padding: 6px 8px; border-left: 3px solid var(--warn); font-size: 12px; font-weight: 600; color: var(--warn); overflow-wrap: anywhere; }
.scan-states { display: flex; flex-direction: column; gap: 8px; }
.scan-state { border-top: 1px dashed var(--line-soft); padding-top: 6px; display: flex; flex-direction: column; gap: 6px; }
.scan-state-head { display: flex; flex-wrap: wrap; gap: 4px 8px; align-items: center; }
.scan-gates { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 2px; font-size: 12px; }
.scan-gates li { overflow-wrap: anywhere; }
.scan-recent { margin: 6px 0 0; padding-left: 18px; font-size: 12px; }
.scan-card .fl-coord-grid { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); }
