:root { color-scheme: dark; --bg: oklch(0.12 0.01 250); --bg-elevated: oklch(0.15 0.012 250); --bg-pane: oklch(0.18 0.013 250); --bg-pane-2: oklch(0.16 0.012 250); --bg-soft: oklch(0.97 0.008 250 / 0.035); --border: oklch(0.72 0.012 250 / 0.16); --border-strong: oklch(0.78 0.09 74 / 0.28); --text: oklch(0.93 0.014 250); --text-dim: oklch(0.74 0.018 250); --text-faint: oklch(0.59 0.016 250); --accent: oklch(0.78 0.12 74); --accent-soft: oklch(0.78 0.12 74 / 0.1); --green: oklch(0.74 0.13 151); --green-soft: oklch(0.74 0.13 151 / 0.1); --red: oklch(0.68 0.16 28); --red-soft: oklch(0.68 0.16 28 / 0.12); --blue: oklch(0.72 0.13 247); --blue-soft: oklch(0.72 0.13 247 / 0.11); --drawer-width: min(320px, calc(100vw - 28px)); --topbar-height: 64px; } * { box-sizing: border-box; } html, body { margin: 0; min-height: 100%; } body { min-height: 100vh; font-family: var(--font-sans), sans-serif; color: var(--text); background: radial-gradient(circle at top left, oklch(0.78 0.12 74 / 0.08), transparent 30%), linear-gradient(180deg, oklch(0.15 0.012 250) 0%, oklch(0.11 0.01 250) 100%); } a { color: inherit; text-decoration: none; } .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } .skip-link { position: absolute; top: 12px; left: 12px; z-index: 40; padding: 8px 10px; border: 1px solid rgba(255, 216, 154, 0.44); border-radius: 8px; background: rgba(7, 10, 14, 0.98); color: #ffe2aa; font-family: var(--font-mono), monospace; font-size: 0.72rem; letter-spacing: 0.12em; text-transform: uppercase; transform: translateY(-160%); transition: transform 160ms ease; } .skip-link:focus-visible { transform: translateY(0); } button, input { font: inherit; } .terminal-shell { position: relative; min-height: 100vh; background: linear-gradient(180deg, oklch(0.14 0.011 250) 0%, oklch(0.11 0.01 250) 100%); } .terminal-nav-drawer { position: fixed; inset: 0 auto 0 0; z-index: 45; width: var(--drawer-width); padding: 20px 18px 18px; display: flex; flex-direction: column; gap: 20px; background: linear-gradient(180deg, oklch(0.16 0.012 250 / 0.98), oklch(0.13 0.011 250 / 0.98)); border-right: 1px solid var(--border); box-shadow: 0 28px 72px rgba(0, 0, 0, 0.48); } .terminal-drawer-backdrop { position: fixed; inset: 0; z-index: 40; border: 0; background: rgba(3, 5, 8, 0.62); cursor: pointer; } .terminal-drawer-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; } .terminal-drawer-close { flex: 0 0 auto; } .terminal-brand { display: grid; gap: 4px; } .terminal-brand-kicker { font-family: var(--font-display), sans-serif; font-size: 0.72rem; letter-spacing: 0.22em; color: oklch(0.78 0.11 74 / 0.8); } .terminal-brand-name { min-width: 0; font-family: var(--font-display), sans-serif; font-size: 1.56rem; letter-spacing: 0.07em; text-transform: uppercase; overflow-wrap: anywhere; } .terminal-nav { display: grid; gap: 8px; } .terminal-nav-link { min-width: 0; min-height: 44px; padding: 12px 14px; border: 1px solid transparent; border-radius: 10px; color: var(--text-faint); text-transform: uppercase; letter-spacing: 0.14em; font-size: 0.76rem; transition: border-color 0.15s ease, background-color 0.15s ease, color 0.15s ease; } .terminal-nav-link:hover { border-color: var(--border); color: var(--text); background: var(--bg-soft); } .terminal-nav-link:focus-visible, .terminal-button:focus-visible, .instrument-focus-chip button:focus-visible { outline: 2px solid oklch(0.83 0.08 74 / 0.82); outline-offset: 2px; } .terminal-nav-link-active { border-color: var(--border-strong); color: var(--text); background: var(--accent-soft); } .shell-metrics { margin-top: auto; display: grid; gap: 8px; } .shell-metric { padding: 11px 13px; border-radius: 10px; border: 1px solid var(--border); background: var(--bg-soft); } .shell-metric-label, .overview-label, .focus-label, .terminal-filter-label, .summary-title, .filter-label { display: block; margin-bottom: 6px; color: var(--text-faint); text-transform: uppercase; letter-spacing: 0.16em; font-size: 0.68rem; } .shell-metric-value, .overview-cell strong, .focus-value { font-family: var(--font-mono), monospace; font-size: 0.92rem; } .terminal-frame { min-width: 0; min-height: 100vh; display: grid; grid-template-rows: minmax(var(--topbar-height), auto) minmax(0, 1fr); } .terminal-topbar { position: sticky; top: 0; z-index: 20; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 10px 20px; background: oklch(0.15 0.012 250 / 0.96); border-bottom: 1px solid var(--border); backdrop-filter: blur(12px); } .terminal-topbar-leading { display: flex; align-items: center; gap: 12px; flex: 0 0 auto; } .terminal-menu-trigger { display: inline-flex; align-items: center; gap: 10px; min-width: 104px; } .terminal-menu-trigger-icon { display: inline-grid; gap: 4px; } .terminal-menu-trigger-icon span { display: block; width: 14px; height: 1px; border-radius: 999px; background: currentColor; } .status-dot, .chart-dot { width: 8px; height: 8px; border-radius: 999px; background: var(--text-faint); } .status-connected .status-dot, .chart-status-connected .chart-dot { background: var(--green); box-shadow: 0 0 0 4px rgba(37, 193, 122, 0.14); } .chart-status-connecting .chart-dot { background: var(--accent); box-shadow: 0 0 0 4px rgba(245, 166, 35, 0.12); animation: pulse 1.3s ease-in-out infinite; } .status-stale .status-dot, .chart-status-stale .chart-dot { background: var(--accent); box-shadow: 0 0 0 4px rgba(245, 166, 35, 0.18); } .status-disconnected .status-dot, .chart-status-disconnected .chart-dot { background: var(--red); box-shadow: 0 0 0 4px rgba(255, 107, 95, 0.12); } .terminal-topbar-actions { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 12px; min-width: 0; width: auto; margin-left: auto; } .terminal-topbar-controls { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 10px; min-width: 0; flex: 0 1 auto; } .terminal-topbar-mode { display: flex; align-items: center; justify-content: flex-end; flex: 0 0 auto; margin-left: auto; } .terminal-filter { display: flex; flex-direction: column; gap: 4px; min-width: clamp(220px, 24vw, 360px); flex: 0 1 clamp(220px, 24vw, 360px); } .terminal-filter-label { margin-bottom: 0; line-height: 1; } .terminal-filter-field { position: relative; display: flex; align-items: center; min-height: 32px; } .terminal-filter-field::before, .terminal-filter-field::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; transition: opacity 160ms ease, transform 160ms ease, box-shadow 160ms ease, background 160ms ease; } .terminal-filter-field::before { height: 1px; background: var(--border); opacity: 1; } .terminal-filter-field::after { height: 2px; background: var(--accent); transform: scaleX(0.12); transform-origin: left center; opacity: 0; } .terminal-input { min-width: 0; width: 100%; padding: 0 0 6px; border: none; border-radius: 0; background: transparent; color: var(--text); font-family: var(--font-mono), monospace; font-size: 0.9rem; font-weight: 500; letter-spacing: 0.01em; } .terminal-input::placeholder { color: oklch(0.7 0.014 250 / 0.72); font-size: 0.84rem; } .terminal-filter:focus-within .terminal-filter-label { color: var(--text-dim); } .terminal-filter:focus-within .terminal-filter-field::before { background: oklch(0.74 0.02 250 / 0.32); } .terminal-filter:focus-within .terminal-filter-field::after { transform: scaleX(1); opacity: 1; } .terminal-filter:focus-within .terminal-input { color: var(--text); } .terminal-input:focus-visible, .filter-input:focus-visible { outline: none; } .terminal-button, .mode-button, .filter-clear, .jump-button, .pause-button, .interval-button, .overlay-toggle, .drawer-close { min-height: 36px; border: 1px solid var(--border); border-radius: 8px; padding: 8px 10px; background: var(--bg-soft); color: var(--text); cursor: pointer; text-transform: uppercase; letter-spacing: 0.12em; font-size: 0.72rem; } .terminal-button:disabled, .filter-clear:disabled, .jump-button:disabled { opacity: 0.45; cursor: default; } .terminal-button-primary, .interval-button.active, .overlay-toggle.overlay-toggle-on, .mode-button { border-color: var(--border-strong); background: var(--accent-soft); color: var(--text); } .instrument-focus-chip { display: inline-flex; align-items: center; gap: 8px; min-width: 0; min-height: 32px; max-width: min(360px, 32vw); padding: 5px 8px 5px 10px; border: 1px solid var(--border-strong); border-radius: 8px; background: oklch(0.78 0.12 74 / 0.07); color: var(--text); font-family: var(--font-mono), monospace; font-size: 0.72rem; font-weight: 600; } .instrument-focus-chip span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .instrument-focus-chip button, .instrument-cell-button { border: 0; background: transparent; color: inherit; font: inherit; cursor: pointer; } .instrument-focus-chip button { padding: 4px 6px; color: var(--text-faint); text-transform: uppercase; letter-spacing: 0.08em; font-size: 0.62rem; } .instrument-cell-button { padding: 0; text-align: inherit; text-decoration: underline; text-decoration-color: var(--border-strong); text-underline-offset: 3px; } .instrument-cell-button:hover, .instrument-cell-button:focus-visible { color: var(--text); outline: none; } .pause-button { padding: 7px 10px; font-size: 0.66rem; } .terminal-content { min-width: 0; padding: 24px clamp(16px, 2vw, 28px) 24px; } .page-shell { display: grid; gap: 18px; } .page-header { display: flex; align-items: center; justify-content: space-between; gap: 16px; } .page-title, h1, h2, h3 { margin: 0; font-family: var(--font-display), sans-serif; text-transform: uppercase; letter-spacing: 0.08em; } .page-title { font-size: clamp(1.75rem, 2.4vw, 2.3rem); letter-spacing: 0.06em; } .page-actions { display: flex; align-items: center; gap: 10px; position: relative; } .contract-filter-button { display: inline-flex; align-items: center; justify-content: center; min-height: 32px; min-width: 0; max-width: min(440px, 42vw); } .contract-filter-button-label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .contract-filter-button.is-active { border-color: var(--border-strong); background: var(--accent-soft); color: var(--text); } .flow-filter-popover { position: relative; } .flow-filter-trigger { display: inline-flex; align-items: center; gap: 8px; } .flow-filter-trigger.is-active { border-color: var(--border-strong); background: var(--accent-soft); } .flow-filter-badge { min-width: 22px; padding: 2px 6px; border-radius: 999px; background: oklch(0.78 0.12 74 / 0.16); color: var(--text); font-family: var(--font-mono), monospace; font-size: 0.7rem; text-align: center; } .flow-filter-popover-panel { position: absolute; top: calc(100% + 12px); right: 0; z-index: 30; width: min(420px, calc(100vw - 72px)); max-height: min(70vh, 560px); overflow: auto; border: 1px solid var(--border); border-radius: 16px; background: oklch(0.16 0.012 250 / 0.98); box-shadow: 0 24px 54px rgba(0, 0, 0, 0.32); } .flow-filter-popover-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 16px 16px 14px; border-bottom: 1px solid var(--border); } .flow-filter-popover-title { font-family: var(--font-sans), sans-serif; font-size: 0.84rem; font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; } .flow-filter-popover-copy { margin-top: 6px; color: var(--text-dim); font-size: 0.78rem; } .flow-filter-popover-body { display: grid; gap: 12px; padding: 14px; } .flow-filter-section { display: grid; gap: 10px; padding: 12px; border: 1px solid var(--border); border-radius: 14px; background: var(--bg-soft); } .flow-filter-section-title { color: var(--text-dim); font-size: 0.7rem; letter-spacing: 0.18em; text-transform: uppercase; } .flow-filter-section-copy { margin: -2px 0 0; color: var(--text-muted); font-size: 0.78rem; line-height: 1.35; } .flow-filter-checkbox-grid, .flow-filter-chip-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; } .flow-filter-checkbox-grid-wide { grid-template-columns: repeat(3, minmax(0, 1fr)); } .flow-filter-chip-grid-two { grid-template-columns: repeat(2, minmax(0, 1fr)); } .flow-filter-check { display: inline-flex; align-items: center; gap: 8px; min-height: 42px; padding: 10px 12px; border: 1px solid var(--border); border-radius: 12px; background: var(--bg-soft); font-size: 0.82rem; text-transform: uppercase; cursor: pointer; } .flow-filter-check input { margin: 0; accent-color: var(--accent); } .filter-chip { border: 1px solid var(--border); border-radius: 12px; background: var(--bg-soft); color: var(--text); min-height: 42px; padding: 8px 12px; font: inherit; cursor: pointer; text-transform: uppercase; } .filter-chip.is-active { border-color: var(--border-strong); background: var(--accent-soft); color: var(--text); } .replay-matrix { display: grid; gap: 12px; grid-template-columns: repeat(4, minmax(0, 1fr)); } .overview-cell { min-width: 0; padding: 14px 16px; border: 1px solid var(--border); border-radius: 12px; background: var(--bg-soft); } .page-grid { display: grid; gap: 16px; align-items: stretch; } .page-grid-home { grid-template-columns: minmax(0, 2fr) minmax(320px, 1fr); } .page-grid-options { grid-template-columns: minmax(0, 1fr); } .page-grid-signals { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); grid-template-rows: minmax(0, 2fr) minmax(0, 1fr); height: calc(100vh - var(--topbar-height) - 172px); min-height: 620px; } .page-grid-charts { grid-template-columns: minmax(0, 1.7fr) minmax(320px, 1fr); } .page-grid-replay { grid-template-columns: repeat(3, minmax(0, 1fr)); } .page-grid-news { grid-template-columns: minmax(0, 1fr); } .page-grid-home > :nth-child(3), .page-grid-home > :nth-child(4), .page-grid-options > :nth-child(1), .page-grid-replay > :nth-child(1) { grid-column: 1 / -1; } .command-deck-shell { display: grid; gap: 12px; } .command-deck-header { min-width: 0; display: grid; grid-template-columns: minmax(220px, 0.8fr) minmax(260px, 1fr) auto; gap: 14px; align-items: center; padding: 13px 14px; border: 1px solid var(--border); border-radius: 12px; background: linear-gradient(180deg, oklch(0.18 0.013 250 / 0.96), oklch(0.145 0.012 250 / 0.96)); } .command-deck-brand { min-width: 0; display: flex; align-items: center; gap: 11px; } .command-deck-mark { width: 34px; height: 34px; flex: 0 0 auto; border: 1px solid var(--border-strong); border-radius: 8px; background: linear-gradient(135deg, oklch(0.78 0.12 74 / 0.7), oklch(0.28 0.035 250)), var(--accent-soft); } .command-deck-kicker, .command-pane-meta, .command-health-row, .command-replay-strip, .command-ticker-card { font-family: var(--font-mono), monospace; } .command-deck-kicker { display: block; color: var(--text-faint); font-size: 0.68rem; letter-spacing: 0.12em; text-transform: lowercase; } .command-deck-brand h2 { margin: 1px 0 0; font-family: var(--font-display), sans-serif; font-size: 1.2rem; line-height: 1.05; letter-spacing: 0; } .command-deck-brief { min-width: 0; display: flex; align-items: center; gap: 9px; flex-wrap: wrap; color: var(--text-dim); font-size: 0.82rem; } .command-deck-brief strong { color: var(--text); font-family: var(--font-mono), monospace; font-size: 0.86rem; } .command-deck-controls { display: flex; align-items: center; justify-content: flex-end; gap: 8px; flex-wrap: wrap; } .command-chip { min-height: 32px; display: inline-flex; align-items: center; border: 1px solid var(--border); border-radius: 999px; padding: 5px 9px; background: var(--bg-soft); color: var(--text-dim); font-family: var(--font-mono), monospace; font-size: 0.68rem; text-transform: uppercase; } .command-chip-connected { color: var(--green); background: var(--green-soft); } .command-chip-stale, .command-chip-connecting { color: var(--accent); background: var(--accent-soft); } .command-chip-disconnected { color: var(--red); background: var(--red-soft); } .command-ticker-rail { min-width: 0; overflow: hidden; border: 1px solid var(--border); border-radius: 10px; background: oklch(0.13 0.012 250 / 0.98); } .command-ticker-track { display: grid; grid-auto-columns: minmax(176px, 1fr); grid-auto-flow: column; gap: 8px; overflow-x: auto; padding: 7px; } .command-ticker-card { min-width: 176px; min-height: 64px; display: grid; grid-template-columns: 1fr auto; gap: 4px 9px; align-items: center; border: 1px solid var(--border); border-radius: 8px; padding: 8px 10px; background: oklch(0.17 0.013 250); color: inherit; text-align: left; cursor: pointer; } .command-ticker-card:hover, .command-ticker-card:focus-visible { border-color: var(--border-strong); outline: none; } .command-ticker-symbol { color: var(--text); font-weight: 700; } .command-ticker-price, .command-ticker-meta { color: var(--text-dim); font-size: 0.72rem; } .command-ticker-move { justify-self: end; color: var(--text-faint); font-size: 0.68rem; } .command-ticker-card.is-up .command-ticker-move { color: var(--green); } .command-ticker-card.is-down .command-ticker-move { color: var(--red); } .command-ticker-meta { grid-column: 1 / -1; } .command-deck-grid { display: grid; grid-template-columns: minmax(360px, 1.12fr) minmax(420px, 1.38fr) minmax(300px, 0.9fr); grid-template-areas: "tape chart signals" "feed dark context" "replay replay replay"; gap: 10px; align-items: stretch; } .command-deck-grid > .terminal-pane { border-radius: 10px; } .command-deck-grid > :nth-child(1) { grid-area: tape; min-height: 386px; } .command-deck-grid > :nth-child(2) { grid-area: chart; min-height: 386px; } .command-deck-grid > :nth-child(3) { grid-area: signals; min-height: 386px; } .command-deck-grid > :nth-child(4) { grid-area: feed; min-height: 278px; } .command-deck-grid > :nth-child(5) { grid-area: dark; min-height: 278px; } .command-deck-grid > :nth-child(6) { grid-area: context; min-height: 278px; } .command-deck-grid > :nth-child(7) { grid-area: replay; min-height: 116px; } .command-deck-grid .terminal-pane-head { min-height: 42px; padding: 10px 12px; } .command-deck-grid .terminal-pane-body { padding: 10px 12px 12px; } .command-deck-grid .terminal-pane-title { font-family: var(--font-mono), monospace; font-size: 0.72rem; letter-spacing: 0.12em; text-transform: uppercase; } .command-deck-grid .chart-surface { height: 300px; } .command-pane-meta { color: var(--text-faint); font-size: 0.68rem; text-transform: uppercase; } .command-health-list, .command-context-list, .command-replay-strip { display: grid; gap: 8px; } .command-health-row { min-height: 34px; display: grid; grid-template-columns: minmax(96px, 1fr) 92px 76px 92px; gap: 8px; align-items: center; border-bottom: 1px solid oklch(0.72 0.012 250 / 0.09); color: var(--text-dim); font-size: 0.72rem; } .command-health-row:last-child { border-bottom: 0; } .command-health-status { width: fit-content; max-width: 100%; display: inline-flex; align-items: center; min-height: 22px; border: 1px solid var(--border); border-radius: 999px; padding: 3px 7px; font-size: 0.64rem; } .command-health-connected { color: var(--green); background: var(--green-soft); } .command-health-stale, .command-health-connecting { color: var(--accent); background: var(--accent-soft); } .command-health-disconnected { color: var(--red); background: var(--red-soft); } .command-context-row { min-width: 0; min-height: 42px; display: grid; grid-template-columns: 62px 52px minmax(0, 1fr); gap: 4px 8px; align-items: center; border: 0; border-bottom: 1px solid oklch(0.72 0.012 250 / 0.09); padding: 6px 0; background: transparent; color: inherit; text-align: left; cursor: pointer; } .command-context-row:last-child { border-bottom: 0; } .command-context-row time, .command-context-row span { color: var(--text-dim); font-family: var(--font-mono), monospace; font-size: 0.68rem; } .command-context-row strong { min-width: 0; overflow: hidden; color: var(--text); font-size: 0.78rem; text-overflow: ellipsis; white-space: nowrap; } .command-context-row > span:last-child { grid-column: 3; overflow: hidden; color: var(--text-faint); text-overflow: ellipsis; white-space: nowrap; } .command-context-kind { width: fit-content; border: 1px solid var(--border); border-radius: 999px; padding: 2px 6px; background: var(--bg-soft); text-transform: uppercase; } .command-replay-strip { grid-template-columns: repeat(4, minmax(0, 1fr)); } .command-replay-strip div { min-width: 0; display: grid; gap: 3px; border: 1px solid var(--border); border-radius: 8px; padding: 8px 10px; background: var(--bg-soft); } .command-replay-strip span { color: var(--text-faint); font-size: 0.66rem; text-transform: uppercase; } .command-replay-strip strong { min-width: 0; overflow: hidden; color: var(--text); font-size: 0.78rem; text-overflow: ellipsis; white-space: nowrap; } .terminal-pane { min-width: 0; height: 100%; display: flex; flex-direction: column; border: 1px solid var(--border); border-radius: 14px; background: var(--bg-pane); overflow: hidden; } .terminal-pane-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 15px 18px; border-bottom: 1px solid var(--border); background: oklch(0.2 0.012 250 / 0.38); } .terminal-pane-title-row { display: flex; align-items: center; gap: 14px; min-width: 0; } .terminal-pane-title { font-family: var(--font-sans), sans-serif; font-size: 0.94rem; font-weight: 600; letter-spacing: 0.08em; } .terminal-pane-status { min-width: 0; } .terminal-pane-actions, .card-controls, .chart-controls { display: flex; align-items: center; justify-content: flex-end; gap: 8px; flex-wrap: nowrap; } .terminal-pane-body, .card-body { display: flex; flex: 1 1 auto; min-height: 0; flex-direction: column; gap: 14px; padding: 16px 18px 18px; } .chart-panel { display: grid; gap: 12px; } .chart-meta { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; font-size: 0.8rem; color: var(--text-dim); } .chart-status { display: inline-flex; align-items: center; gap: 8px; } .chart-meta-time, .chart-hint, .overlay-legend, .timestamp, .drawer-subtitle, .drawer-note, .drawer-empty, .note, .time { color: var(--text-dim); } .chart-surface { width: 100%; height: 460px; border-radius: 12px; border: 1px solid var(--border); background: var(--bg-pane-2); overflow: hidden; } .chart-empty { margin-top: -2px; } .chart-intervals { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; } .status span, .timestamp, .missed-count, .chart-hint, .meta, .note, .drawer-note, .drawer-row-meta { font-family: var(--font-mono), monospace; } .status-replay .status-dot { background: var(--blue); box-shadow: 0 0 0 4px rgba(77, 163, 255, 0.14); } .status-inline { display: inline-flex; align-items: center; gap: 8px; min-height: 32px; min-width: 0; font-family: var(--font-mono), monospace; } .status-inline-label { color: var(--text); font-size: 0.82rem; } .status-inline-meta { color: var(--text-dim); font-size: 0.72rem; } .status-inline-counter { min-width: 82px; color: var(--accent); font-size: 0.72rem; opacity: 0; transition: opacity 0.15s ease; } .status-inline-counter-visible { opacity: 1; } .tape-controls { display: flex; align-items: center; justify-content: flex-end; gap: 6px; flex-wrap: nowrap; } .tape-controls button { white-space: nowrap; } .missed-count { display: inline-flex; align-items: center; justify-content: flex-start; max-width: 0; overflow: hidden; white-space: nowrap; font-size: 0.72rem; color: var(--accent); opacity: 0; transform: translateX(6px); transition: max-width 180ms ease, opacity 140ms ease, transform 180ms ease; } .missed-count-visible { max-width: 92px; opacity: 1; transform: translateX(0); } .list { display: flex; flex: 1 1 auto; min-height: 0; flex-direction: column; gap: 10px; overflow: auto; padding: 12px; padding-right: 8px; border: 1px solid var(--border); border-radius: 12px; background: var(--bg-pane-2); align-self: stretch; } .terminal-list-compact { flex: 0 0 auto; max-height: 260px; } .page-grid-home > :nth-child(1), .page-grid-home > :nth-child(2) { height: clamp(430px, 56vh, 760px); } .page-grid-home > :nth-child(3), .page-grid-home > :nth-child(4), .page-grid-replay > :not(:first-child) { height: clamp(430px, 58vh, 760px); } .page-grid-signals > .terminal-pane { height: 100%; min-height: 0; } .page-grid-signals > .signals-pane-alerts { grid-column: 1; grid-row: 1; } .page-grid-signals > .signals-pane-rules { grid-column: 2; grid-row: 1; } .page-grid-signals > .signals-pane-dark { grid-column: 1 / -1; grid-row: 2; } .page-grid-options > :first-child { height: clamp(460px, 64vh, 880px); } .page-grid-options > :not(:first-child) { height: clamp(400px, 50vh, 680px); } .page-grid-charts > :first-child { height: auto; } .page-grid-charts > :last-child { height: clamp(430px, 58vh, 760px); } .row { display: flex; justify-content: space-between; gap: 14px; padding: 14px 16px; border-radius: 12px; border: 1px solid var(--border); background: var(--bg-soft); } .row-button { width: 100%; text-align: left; color: inherit; } .row-button:hover { border-color: var(--border-strong); background: oklch(0.78 0.12 74 / 0.05); } .data-table-shell, .options-table-wrap { display: flex; flex: 1 1 auto; min-height: 0; flex-direction: column; overflow: hidden; } .history-load-warning { flex: 0 0 auto; padding: 8px 12px; border-top: 1px solid oklch(0.72 0.13 58 / 0.45); border-bottom: 1px solid oklch(0.72 0.13 58 / 0.45); background: oklch(0.24 0.05 58 / 0.72); color: oklch(0.91 0.08 72); font-size: 0.78rem; line-height: 1.35; } .data-table-wrap { display: flex; flex: 1 1 auto; min-height: 0; overflow-x: auto; overflow-y: hidden; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); background: oklch(0.14 0.01 250 / 0.72); } .data-table { display: flex; flex: 1 1 auto; flex-direction: column; height: 100%; min-height: 0; min-width: 980px; } .data-table-scroll { flex: 1 1 auto; min-height: 0; overflow-y: auto; overflow-x: hidden; background-color: oklch(0.12 0.01 250); } .data-table-body { position: relative; min-width: 100%; --tape-row-height: 36px; --tape-row-double-height: 72px; background: repeating-linear-gradient( to bottom, oklch(0.98 0.008 250 / 0.01) 0, oklch(0.98 0.008 250 / 0.01) calc(var(--tape-row-height) - 1px), oklch(0.72 0.012 250 / 0.08) calc(var(--tape-row-height) - 1px), oklch(0.72 0.012 250 / 0.08) var(--tape-row-height), oklch(0.98 0.008 250 / 0.018) var(--tape-row-height), oklch(0.98 0.008 250 / 0.018) calc(var(--tape-row-double-height) - 1px), oklch(0.72 0.012 250 / 0.08) calc(var(--tape-row-double-height) - 1px), oklch(0.72 0.012 250 / 0.08) var(--tape-row-double-height) ), oklch(0.12 0.01 250); } .data-table-options { min-width: 1280px; } .data-table-equities { min-width: 660px; } .data-table-flow { min-width: 1260px; } .data-table-alerts { min-width: 900px; } .data-table-classifier { min-width: 760px; } .data-table-dark { min-width: 820px; } .data-table-head, .data-table-row { display: grid; align-items: center; column-gap: 8px; } .data-table-head { flex: 0 0 auto; height: 30px; padding: 0 10px; border-bottom: 1px solid oklch(0.72 0.012 250 / 0.12); background: oklch(0.15 0.012 250 / 0.96); color: var(--text-faint); font-size: 0.64rem; font-weight: 700; letter-spacing: 0.08em; } .data-table-row { width: 100%; height: 40px; padding: 0 10px; border: 0; border-bottom: 1px solid oklch(0.72 0.012 250 / 0.08); background: oklch(0.98 0.008 250 / 0.008); color: inherit; font: inherit; text-align: left; } .data-table-row.is-even { background: oklch(0.98 0.008 250 / 0.018); } .data-table-virtual-row { position: absolute; top: 0; left: 0; width: 100%; } .data-table-row:hover, .data-table-row:focus-visible { outline: none; background: oklch(0.78 0.12 74 / 0.05); } .data-table-row-button { cursor: pointer; } .data-table-row-options { height: 36px; } .data-table-row-equities { height: 36px; } .data-table-row-flow, .data-table-row-alerts, .data-table-row-classifier, .data-table-row-dark { height: 44px; } .data-table-flow .data-table-body, .data-table-alerts .data-table-body, .data-table-classifier .data-table-body, .data-table-dark .data-table-body { --tape-row-height: 44px; --tape-row-double-height: 88px; } .data-table-row-classified { background: linear-gradient(90deg, rgba(var(--classifier-rgb, 192, 200, 210), calc(0.012 + var(--classifier-intensity, 0) * 0.06)), transparent 62%), oklch(0.98 0.008 250 / 0.008); } .data-table-row-classified:hover, .data-table-row-classified:focus-visible { background: linear-gradient(90deg, rgba(var(--classifier-rgb, 192, 200, 210), calc(0.02 + var(--classifier-intensity, 0) * 0.1)), transparent 68%), oklch(0.78 0.12 74 / 0.035); } .data-table-row-classified.is-classified { box-shadow: inset 0 0 0 1px rgba(var(--classifier-rgb), calc(0.16 + var(--classifier-intensity) * 0.12)); } .data-table-row-warn, .data-table-row-severity-high, .data-table-row-direction-bearish { box-shadow: inset 0 0 0 1px oklch(0.68 0.16 28 / 0.32); } .data-table-row-severity-medium, .data-table-row-direction-neutral { box-shadow: inset 0 0 0 1px oklch(0.72 0.13 247 / 0.24); } .data-table-row-severity-low, .data-table-row-direction-bullish { box-shadow: inset 0 0 0 1px oklch(0.74 0.13 151 / 0.26); } .data-table-options .data-table-head, .data-table-options .data-table-row { grid-template-columns: minmax(72px, 0.8fr) minmax(50px, 0.55fr) minmax(64px, 0.7fr) minmax(58px, 0.6fr) minmax(34px, 0.35fr) minmax(62px, 0.65fr) minmax(104px, 1fr) minmax(54px, 0.55fr) minmax(66px, 0.7fr) minmax(48px, 0.5fr) minmax(42px, 0.45fr) minmax(92px, 0.9fr); } .data-table-equities .data-table-head, .data-table-equities .data-table-row { grid-template-columns: minmax(76px, 0.9fr) minmax(70px, 0.8fr) minmax(76px, 0.8fr) minmax(70px, 0.75fr) minmax(80px, 0.8fr) minmax(76px, 0.75fr); } .data-table-flow .data-table-head, .data-table-flow .data-table-row { grid-template-columns: minmax(148px, 1.1fr) minmax(180px, 1.4fr) minmax(62px, 0.45fr) minmax(70px, 0.5fr) minmax(88px, 0.7fr) minmax(74px, 0.55fr) minmax(132px, 1fr) minmax(110px, 0.8fr) minmax(210px, 1.6fr); } .data-table-alerts .data-table-head, .data-table-alerts .data-table-row { grid-template-columns: minmax(76px, 0.75fr) minmax(170px, 1.4fr) minmax(52px, 0.45fr) minmax(58px, 0.45fr) minmax(52px, 0.4fr) minmax(66px, 0.55fr) minmax(260px, 2fr); } .data-table-classifier .data-table-head, .data-table-classifier .data-table-row { grid-template-columns: minmax(76px, 0.75fr) minmax(180px, 1.45fr) minmax(70px, 0.6fr) minmax(74px, 0.65fr) minmax(300px, 2.2fr); } .data-table-dark .data-table-head, .data-table-dark .data-table-row { grid-template-columns: minmax(76px, 0.75fr) minmax(170px, 1.35fr) minmax(76px, 0.65fr) minmax(74px, 0.65fr) minmax(74px, 0.65fr) minmax(260px, 2fr); } .data-table-cell { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 0.72rem; unicode-bidi: plaintext; } .data-table-cell-number { font-family: var(--font-mono), monospace; font-variant-numeric: tabular-nums; } .data-table-spacer { min-width: 100%; pointer-events: none; } .options-table { display: flex; min-height: 0; flex: 1 1 auto; flex-direction: column; overflow: hidden; } .options-table-head, .options-table-row { display: grid; grid-template-columns: minmax(72px, 0.8fr) minmax(50px, 0.55fr) minmax(64px, 0.7fr) minmax(58px, 0.6fr) minmax(34px, 0.35fr) minmax(62px, 0.65fr) minmax(104px, 1fr) minmax(54px, 0.55fr) minmax(66px, 0.7fr) minmax(48px, 0.5fr) minmax(42px, 0.45fr) minmax(92px, 0.9fr); align-items: center; column-gap: 8px; } .options-table-head { flex: 0 0 auto; height: 30px; padding: 0 8px; border-bottom: 1px solid var(--border); background: oklch(0.15 0.012 250 / 0.96); color: var(--text-faint); font-size: 0.64rem; font-weight: 700; letter-spacing: 0.08em; } .options-table-body { flex: 1 1 auto; min-height: 0; overflow-y: auto; overflow-x: hidden; } .options-table-row { width: 100%; min-height: 34px; padding: 0 8px; border: 0; border-bottom: 1px solid oklch(0.72 0.012 250 / 0.08); background: linear-gradient(90deg, rgba(var(--classifier-rgb, 192, 200, 210), calc(0.012 + var(--classifier-intensity, 0) * 0.06)), transparent 62%), oklch(0.98 0.008 250 / 0.012); color: inherit; font: inherit; text-align: left; } .options-table-row:hover, .options-table-row:focus-visible { outline: none; background: linear-gradient(90deg, rgba(var(--classifier-rgb, 192, 200, 210), calc(0.02 + var(--classifier-intensity, 0) * 0.1)), transparent 68%), oklch(0.78 0.12 74 / 0.03); } .options-table-row.is-classified { cursor: pointer; box-shadow: inset 0 0 0 1px rgba(var(--classifier-rgb), calc(0.16 + var(--classifier-intensity) * 0.12)); } .options-table-row > span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 0.72rem; } .mono { font-variant-numeric: tabular-nums; } .classifier-green { --classifier-rgb: 37, 193, 122; } .classifier-red { --classifier-rgb: 255, 107, 95; } .classifier-amber { --classifier-rgb: 245, 166, 35; } .classifier-copper { --classifier-rgb: 198, 122, 75; } .classifier-blue { --classifier-rgb: 77, 163, 255; } .classifier-teal { --classifier-rgb: 64, 210, 190; } .classifier-yellowgreen { --classifier-rgb: 174, 210, 78; } .classifier-violet { --classifier-rgb: 170, 130, 255; } .classifier-cyan { --classifier-rgb: 94, 214, 255; } .classifier-magenta { --classifier-rgb: 255, 92, 205; } .classifier-neutral { --classifier-rgb: 192, 200, 210; } .contract, .drawer-row-title { margin-bottom: 6px; font-size: 0.92rem; font-weight: 600; } .option-contract { display: inline-flex; flex-wrap: wrap; gap: 8px; } .meta, .drawer-row-meta, .flow-meta { display: flex; flex-wrap: wrap; gap: 10px; font-size: 0.76rem; } .notional-emphasis { font-weight: 700; letter-spacing: 0.01em; color: var(--accent); } .condition-chip { display: inline-flex; align-items: center; padding: 3px 8px; border-radius: 999px; border: 1px solid var(--border); font-size: 0.68rem; letter-spacing: 0.08em; text-transform: uppercase; } .condition-sweep { border-color: rgba(37, 193, 122, 0.34); color: #98f0c0; background: var(--green-soft); } .condition-iso { border-color: rgba(77, 163, 255, 0.34); color: #bddcff; background: var(--blue-soft); } .condition-neutral { border-color: rgba(192, 200, 210, 0.28); color: #d4dbe3; background: rgba(192, 200, 210, 0.08); } .pill, .drawer-chip, .flag { display: inline-flex; align-items: center; padding: 3px 8px; border-radius: 999px; border: 1px solid var(--border); font-size: 0.68rem; letter-spacing: 0.08em; text-transform: uppercase; } .structure-tag { border-color: rgba(77, 163, 255, 0.36); color: #9bcbff; background: var(--blue-soft); } .aggressor-tag, .direction-bullish, .severity-low, .flag { border-color: rgba(37, 193, 122, 0.34); color: #98f0c0; background: var(--green-soft); } .direction-bearish, .severity-high, .nbbo-missing { border-color: rgba(255, 107, 95, 0.34); color: #ffc3bd; background: var(--red-soft); } .direction-neutral, .severity-medium, .flag-muted, .nbbo-stale { border-color: rgba(77, 163, 255, 0.26); color: #bddcff; background: var(--blue-soft); } .nbbo-meta { margin-top: 8px; } .nbbo-side { position: relative; display: inline-flex; align-items: center; } .nbbo-tag { padding: 2px 6px; border-radius: 999px; border: 1px solid var(--border); font-size: 0.68rem; text-transform: uppercase; } .nbbo-tag-a, .nbbo-tag-aa { border-color: rgba(37, 193, 122, 0.34); color: #98f0c0; background: var(--green-soft); } .nbbo-tag-b, .nbbo-tag-bb { border-color: rgba(255, 107, 95, 0.34); color: #ffc3bd; background: var(--red-soft); } .nbbo-tooltip { position: absolute; right: 0; bottom: calc(100% + 10px); display: grid; gap: 4px; padding: 10px; border-radius: 10px; border: 1px solid var(--border); background: rgba(7, 10, 14, 0.96); box-shadow: 0 16px 40px rgba(0, 0, 0, 0.45); opacity: 0; pointer-events: none; transform: translateY(8px); transition: opacity 0.15s ease, transform 0.15s ease; z-index: 5; } .nbbo-tooltip-row { display: inline-flex; align-items: center; gap: 6px; font-size: 0.68rem; } .nbbo-side:hover .nbbo-tooltip, .nbbo-side:focus-within .nbbo-tooltip { opacity: 1; transform: translateY(0); } .alert-strips { display: grid; gap: 12px; } .alert-strip-section { display: grid; gap: 6px; } .alert-strip-header { display: flex; justify-content: space-between; gap: 12px; color: var(--text-faint); text-transform: uppercase; letter-spacing: 0.12em; font-size: 0.68rem; } .alert-strip-bar { display: flex; height: 24px; overflow: hidden; border-radius: 999px; border: 1px solid var(--border); background: var(--bg-soft); } .strip-segment { display: flex; align-items: center; justify-content: center; font-size: 0.64rem; text-transform: uppercase; letter-spacing: 0.08em; color: #03130a; } .alert-strip-bar .severity-high, .alert-strip-bar .direction-bearish { background: rgba(255, 107, 95, 0.9); color: #230705; } .alert-strip-bar .severity-medium, .alert-strip-bar .direction-neutral { background: rgba(77, 163, 255, 0.9); color: #04111f; } .alert-strip-bar .severity-low, .alert-strip-bar .direction-bullish { background: rgba(37, 193, 122, 0.92); color: #03130a; } .focus-stack { display: grid; gap: 14px; } .focus-block { display: grid; gap: 8px; } .focus-value { font-size: 1.4rem; } .empty { display: flex; align-items: center; min-height: 76px; padding: 18px; border-radius: 12px; border: 1px dashed var(--border); background: var(--bg-soft); color: var(--text-dim); line-height: 1.4; overflow-wrap: anywhere; } .drawer { position: fixed; top: 24px; right: 24px; width: min(420px, calc(100vw - 32px)); max-height: calc(100vh - 48px); overflow: auto; padding: 18px; border-radius: 14px; border: 1px solid var(--border); background: oklch(0.16 0.012 250 / 0.98); box-shadow: 0 22px 56px rgba(0, 0, 0, 0.38); z-index: 40; } .synthetic-control-gear { position: fixed; right: 22px; bottom: 22px; width: 42px; height: 42px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--border); border-radius: 12px; background: oklch(0.16 0.012 250 / 0.96); color: var(--text-dim); box-shadow: 0 10px 28px rgba(0, 0, 0, 0.28); z-index: 45; transition: border-color 0.16s ease, background-color 0.16s ease, color 0.16s ease; } .synthetic-control-gear:hover, .synthetic-control-gear.is-open { border-color: var(--border-strong); background: var(--bg-elevated); color: var(--text); } .synthetic-control-gear-mark { display: inline-flex; font-size: 1.05rem; line-height: 1; transform: rotate(45deg); } .synthetic-control-drawer { position: fixed; top: 84px; right: 0; bottom: 0; width: min(388px, calc(100vw - 20px)); padding: 18px 18px 24px; display: grid; align-content: start; gap: 16px; overflow: auto; border-left: 1px solid var(--border); background: oklch(0.15 0.012 250 / 0.98); box-shadow: -16px 0 42px rgba(0, 0, 0, 0.26); z-index: 42; } .synthetic-control-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; } .synthetic-control-header h3 { margin: 0; font-family: var(--font-sans), sans-serif; font-size: 0.94rem; font-weight: 600; letter-spacing: 0.08em; } .synthetic-control-kicker { margin: 0 0 6px; color: var(--text-dim); text-transform: uppercase; letter-spacing: 0.16em; font-size: 0.64rem; } .synthetic-control-section { display: grid; gap: 10px; padding: 14px 14px 0; border-top: 1px solid var(--border); } .synthetic-control-section-head { display: flex; justify-content: space-between; gap: 12px; color: var(--text-faint); text-transform: uppercase; letter-spacing: 0.14em; font-size: 0.68rem; } .synthetic-control-select select, .synthetic-segment, .synthetic-control-toggle { font: inherit; } .synthetic-control-select select { width: 100%; padding: 10px 12px; border: 1px solid var(--border); border-radius: 10px; background: var(--bg-soft); color: var(--text); } .synthetic-control-toggle { display: inline-flex; align-items: center; gap: 10px; color: var(--text-dim); } .synthetic-control-toggle input { accent-color: var(--accent); } .synthetic-segment-row { display: flex; flex-wrap: wrap; gap: 8px; } .synthetic-segment { padding: 8px 10px; border: 1px solid var(--border); border-radius: 999px; background: var(--bg-soft); color: var(--text-dim); } .synthetic-segment.is-active { border-color: var(--border-strong); background: var(--accent-soft); color: var(--text); } .synthetic-profile-grid, .synthetic-hit-list { display: grid; gap: 12px; } .synthetic-profile-row, .synthetic-hit-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; } .synthetic-profile-row > span, .synthetic-hit-row > span, .synthetic-status-grid span { color: var(--text-dim); font-size: 0.84rem; } .synthetic-status-grid { display: grid; gap: 10px; } .terminal-link-button { text-decoration: none; } .news-list { display: flex; flex-direction: column; gap: 10px; } .news-row { width: 100%; display: flex; flex-direction: column; gap: 8px; padding: 14px 16px; border: 1px solid var(--border); border-radius: 12px; background: oklch(0.18 0.012 250 / 0.6); color: var(--text); text-align: left; transition: border-color 150ms ease, background 150ms ease; } .news-row:hover { border-color: var(--accent-soft); background: oklch(0.2 0.015 250 / 0.75); } .news-row-head, .news-row-meta { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; } .news-row h3 { margin: 0; font-size: 0.96rem; font-weight: 600; } .news-row-time { color: var(--text-dim); font-family: var(--font-mono), monospace; font-size: 0.78rem; } .news-row-meta { color: var(--text-dim); font-size: 0.78rem; } .news-drawer-body a { color: var(--accent); } .news-drawer-body p, .news-drawer-body ul, .news-drawer-body ol, .news-drawer-body blockquote { margin: 0 0 12px; } .synthetic-status-grid strong, .synthetic-hit-row strong { font-family: var(--font-mono), monospace; font-size: 0.86rem; } .synthetic-control-disabled { display: grid; gap: 8px; padding: 14px 14px 0; border-top: 1px solid var(--border); } .synthetic-control-disabled p, .synthetic-control-disabled span { margin: 0; } .synthetic-control-disabled-label { color: var(--text-dim); text-transform: uppercase; letter-spacing: 0.14em; font-size: 0.68rem; } .synthetic-control-error { color: var(--red); } .drawer-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 12px; } .drawer-eyebrow { margin: 0 0 6px; font-size: 0.68rem; color: var(--text-dim); text-transform: uppercase; letter-spacing: 0.14em; } .drawer-meta { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; } .drawer-section { display: grid; gap: 10px; margin-bottom: 18px; } .drawer-section h4 { margin: 0; color: var(--text-faint); text-transform: uppercase; letter-spacing: 0.12em; font-size: 0.72rem; } .drawer-list { display: grid; gap: 10px; } .drawer-context-loading { padding: 12px 0 2px; } .drawer-skeleton { width: 64%; height: 12px; border-radius: 999px; background: linear-gradient(90deg, var(--bg-soft), rgba(245, 166, 35, 0.14), var(--bg-soft)); background-size: 180% 100%; animation: drawer-skeleton 1.2s ease-out infinite; } .drawer-skeleton-wide { width: 100%; } .drawer-evidence-context { margin-top: 8px; color: var(--text-faint); } .drawer-row { padding: 12px 14px; border-radius: 12px; border: 1px solid var(--border); background: var(--bg-soft); } @keyframes drawer-skeleton { 0% { background-position: 100% 0; } 100% { background-position: -100% 0; } } @keyframes pulse { 0% { transform: scale(1); } 50% { transform: scale(1.18); } 100% { transform: scale(1); } } @media (prefers-reduced-motion: reduce) { .skip-link, .terminal-nav-link, .terminal-filter-field::before, .terminal-filter-field::after, .terminal-button, .mode-button, .filter-clear, .jump-button, .pause-button, .interval-button, .overlay-toggle, .drawer-close, .status-inline-counter, .missed-count, .synthetic-control-gear { transition: none; } .chart-status-connecting .chart-dot { animation: none; } } @media (max-width: 1180px) { .terminal-nav-drawer { width: min(300px, calc(100vw - 24px)); } .terminal-brand-name { font-size: 1.25rem; } .shell-metric { min-width: 136px; padding: 10px 12px; } .command-deck-header { grid-template-columns: minmax(220px, 0.8fr) minmax(240px, 1fr); } .command-deck-controls { grid-column: 1 / -1; justify-content: flex-start; } .command-deck-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); grid-template-areas: "signals chart" "tape chart" "feed context" "dark dark" "replay replay"; } } @media (max-width: 980px) { .page-grid-home, .page-grid-options, .page-grid-signals, .page-grid-charts, .page-grid-replay, .replay-matrix, .shell-metrics { grid-template-columns: minmax(0, 1fr); } .page-grid-home > :nth-child(3), .page-grid-home > :nth-child(4), .page-grid-options > :nth-child(1), .page-grid-replay > :nth-child(1) { grid-column: auto; grid-row: auto; } .page-grid-home > :nth-child(1), .page-grid-home > :nth-child(2), .page-grid-home > :nth-child(3), .page-grid-home > :nth-child(4), .page-grid-signals > .terminal-pane, .page-grid-replay > :not(:first-child), .page-grid-options > :first-child, .page-grid-options > :not(:first-child), .page-grid-charts > :last-child { height: auto; } .page-grid-signals { grid-template-rows: auto; min-height: 0; } .command-deck-grid { grid-template-columns: minmax(0, 1fr); grid-template-areas: "signals" "chart" "tape" "context" "replay" "feed" "dark"; } .command-deck-grid > .terminal-pane { min-height: 0; } .command-deck-grid > :nth-child(1), .command-deck-grid > :nth-child(2), .command-deck-grid > :nth-child(3), .command-deck-grid > :nth-child(4), .command-deck-grid > :nth-child(5), .command-deck-grid > :nth-child(6), .command-deck-grid > :nth-child(7) { min-height: 0; } .terminal-topbar { align-items: center; justify-content: space-between; padding: 10px 16px; } .terminal-topbar-actions { justify-content: flex-end; } .terminal-topbar-controls { flex: 0 1 auto; } .flow-filter-popover-panel { width: min(420px, calc(100vw - 56px)); } } @media (max-width: 720px) { .terminal-shell { background-size: 24px 24px, 24px 24px, 100% 100%, auto; } .terminal-nav-drawer { width: min(340px, calc(100vw - 12px)); padding: 16px 12px 12px; } .terminal-brand { grid-template-columns: auto minmax(0, 1fr); align-items: baseline; gap: 10px; } .terminal-brand-kicker { font-size: 0.7rem; } .terminal-brand-name { font-size: 1rem; } .terminal-nav { padding-bottom: 2px; } .terminal-content { padding: 16px 10px 22px; } .page-shell { gap: 14px; } .page-title { font-size: 1.55rem; line-height: 1.06; } .page-header, .terminal-pane-head, .chart-controls, .card-controls, .terminal-pane-actions, .command-deck-header { flex-direction: column; align-items: flex-start; } .command-deck-header { display: flex; } .command-deck-brief, .command-deck-controls { width: 100%; justify-content: flex-start; } .command-deck-controls .terminal-button, .command-chip { width: 100%; justify-content: center; } .command-ticker-track { grid-auto-columns: minmax(164px, 78vw); } .terminal-pane-title-row { flex-direction: column; align-items: flex-start; gap: 8px; } .terminal-topbar { position: sticky; top: 0; z-index: 30; padding: 12px 10px; } .terminal-topbar-leading { width: 100%; } .terminal-button, .mode-button, .filter-clear, .jump-button, .pause-button, .interval-button, .overlay-toggle, .drawer-close, .contract-filter-button, .filter-chip { min-height: 44px; } .terminal-topbar-actions, .terminal-topbar-controls, .terminal-topbar-mode { width: 100%; justify-content: flex-start; } .terminal-topbar-actions, .terminal-topbar-controls { flex-direction: column; align-items: stretch; } .terminal-menu-trigger { width: 100%; justify-content: center; } .terminal-topbar-mode .terminal-button, .terminal-topbar-controls > .terminal-button, .terminal-topbar-leading > .terminal-button, .page-actions > .terminal-button, .page-actions > .flow-filter-popover { width: 100%; } .instrument-focus-chip { max-width: none; min-height: 44px; justify-content: space-between; } .terminal-filter { width: 100%; min-width: 0; flex-basis: auto; flex: 1 1 auto; } .terminal-input { width: 100%; min-height: 38px; padding-bottom: 8px; font-size: 1rem; } .terminal-pane { border-radius: 12px; } .terminal-pane-head, .terminal-pane-body { padding: 14px 12px; } .terminal-pane-actions, .card-controls, .chart-controls, .tape-controls { width: 100%; flex-wrap: wrap; justify-content: flex-start; } .tape-controls button { flex: 1 1 112px; } .status-inline { flex-wrap: wrap; row-gap: 4px; } .status-inline-counter { min-width: 0; } .page-actions { width: 100%; flex-direction: column; align-items: stretch; } .flow-filter-popover { width: 100%; } .flow-filter-trigger { width: 100%; justify-content: space-between; } .flow-filter-popover-panel { position: fixed; top: auto; bottom: calc(10px + env(safe-area-inset-bottom)); left: 10px; right: 10px; width: auto; max-height: min(72vh, 560px); border-radius: 16px; } .flow-filter-checkbox-grid, .flow-filter-checkbox-grid-wide, .flow-filter-chip-grid { grid-template-columns: minmax(0, 1fr); } .row { flex-direction: column; align-items: flex-start; } .data-table-wrap { margin-inline: -12px; border-radius: 0; scroll-snap-type: x proximity; } .data-table { min-width: 860px; scroll-snap-align: start; } .data-table-options, .data-table-flow { min-width: 1080px; } .data-table-head, .data-table-row { padding-inline: 8px; } .data-table-row-options, .data-table-row-equities { height: 40px; } .data-table-row-flow, .data-table-row-alerts, .data-table-row-classifier, .data-table-row-dark { height: 48px; } .command-deck-grid .chart-surface { height: 320px; } .command-health-row { grid-template-columns: minmax(94px, 1fr) 92px; } .command-health-row span:nth-child(3), .command-health-row span:nth-child(4) { font-size: 0.68rem; } .command-context-row { grid-template-columns: 58px minmax(0, 1fr); } .command-context-kind { grid-column: 2; grid-row: 1; } .command-context-row strong, .command-context-row > span:last-child { grid-column: 2; } .command-replay-strip { grid-template-columns: minmax(0, 1fr); } .time { text-align: left; } .chart-surface { height: 320px; } .drawer { position: fixed; inset: auto 10px calc(10px + env(safe-area-inset-bottom)); width: auto; max-height: min(78vh, 640px); margin-top: 0; border-radius: 16px; } } @media (max-width: 420px) { .terminal-content { padding-inline: 8px; } .terminal-pane-head, .terminal-pane-body { padding-inline: 10px; } .shell-metric { flex-basis: 142px; } .data-table-wrap { margin-inline: -10px; } .synthetic-control-gear { right: 14px; bottom: 14px; } .synthetic-control-drawer { top: auto; left: 14px; right: 14px; bottom: 68px; width: auto; border: 1px solid var(--border); border-radius: 14px; } } .mock-terminal { min-height: calc(100vh - var(--topbar-height)); padding: 18px; color: var(--text); background: linear-gradient(180deg, oklch(0.18 0.018 238 / 0.8), transparent 220px), linear-gradient(135deg, oklch(0.12 0.015 230), oklch(0.1 0.012 255)); } .mock-header { display: grid; grid-template-columns: minmax(220px, 0.8fr) minmax(280px, 1.2fr) auto; gap: 14px; align-items: center; margin-bottom: 12px; } .mock-brand-lockup { min-width: 0; display: flex; align-items: center; gap: 11px; } .mock-mark { width: 34px; height: 34px; border-radius: 9px; background: linear-gradient(135deg, oklch(0.68 0.14 246), oklch(0.68 0.12 164)), var(--blue-soft); box-shadow: inset 0 0 0 1px oklch(0.94 0.02 240 / 0.24); } .mock-brand { display: block; color: var(--text-dim); font-family: var(--font-mono), monospace; font-size: 0.74rem; letter-spacing: 0.12em; text-transform: lowercase; } .mock-header h1 { margin: 2px 0 0; font-family: var(--font-display), sans-serif; font-size: 1.28rem; line-height: 1.08; letter-spacing: 0; } .mock-header p { max-width: 72ch; margin: 0; color: var(--text-dim); font-size: 0.9rem; } .mock-header-tools, .mock-switcher { display: flex; align-items: center; justify-content: flex-end; gap: 8px; flex-wrap: wrap; } .mock-header-tools span, .mock-switcher a { min-height: 30px; display: inline-flex; align-items: center; border: 1px solid var(--border); border-radius: 8px; padding: 6px 9px; background: oklch(0.97 0.008 250 / 0.035); color: var(--text-dim); font-family: var(--font-mono), monospace; font-size: 0.68rem; letter-spacing: 0.08em; text-transform: uppercase; } .mock-live-dot { color: var(--green) !important; background: var(--green-soft) !important; } .mock-mode, .mock-switcher a.is-active { color: var(--accent) !important; border-color: var(--border-strong) !important; background: var(--accent-soft) !important; } .mock-switcher { grid-column: 1 / -1; justify-content: flex-start; } .mock-ticker-rail { overflow: hidden; margin-bottom: 10px; border: 1px solid var(--border); border-radius: 10px; background: oklch(0.13 0.015 245 / 0.94); } .mock-ticker-track { display: flex; width: max-content; gap: 8px; padding: 7px; animation: mockTicker 42s linear infinite; } .mock-ticker-card { width: 176px; min-height: 48px; display: grid; grid-template-columns: 1fr auto; gap: 7px; align-items: center; padding: 8px 10px; border: 1px solid var(--border); border-radius: 8px; background: linear-gradient(180deg, oklch(0.18 0.017 244), oklch(0.14 0.014 244)); } .mock-ticker-card div { display: grid; gap: 2px; } .mock-ticker-card strong, .mock-table strong { font-family: var(--font-mono), monospace; } .mock-ticker-card span { color: var(--text-dim); font-size: 0.75rem; } .mock-sparkline { grid-column: 1 / -1; width: 100%; height: 22px; } .mock-sparkline polyline { stroke: var(--green); stroke-width: 2; } .mock-ticker-card:has(.is-down) .mock-sparkline polyline { stroke: var(--red); } .mock-dashboard-grid { display: grid; gap: 10px; } .mock-grid-classic { grid-template-columns: minmax(420px, 1.18fr) minmax(420px, 1.48fr) minmax(320px, 0.95fr); grid-template-areas: "tape chart signals" "feed dark context" "replay replay replay"; } .mock-grid-focus { grid-template-columns: minmax(280px, 0.78fr) minmax(480px, 1.45fr) minmax(360px, 0.95fr); grid-template-areas: "brief chart context" "tape chart context" "signals dark context"; } .mock-grid-signals { grid-template-columns: minmax(360px, 0.92fr) minmax(440px, 1.15fr) minmax(360px, 0.9fr); grid-template-areas: "signals tape chart" "signals tape feed" "context context context"; } .mock-grid-replay { grid-template-columns: minmax(340px, 0.95fr) minmax(460px, 1.25fr) minmax(360px, 0.9fr); grid-template-areas: "replay replay replay" "tape chart context" "signals dark context"; } .mock-panel { min-width: 0; overflow: hidden; border: 1px solid var(--border); border-radius: 10px; background: linear-gradient(180deg, oklch(0.18 0.016 246 / 0.98), oklch(0.135 0.014 246 / 0.98)); } .mock-panel-head { min-height: 40px; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 12px; border-bottom: 1px solid var(--border); } .mock-panel-head h2 { margin: 0; font-family: var(--font-mono), monospace; font-size: 0.72rem; letter-spacing: 0.14em; text-transform: uppercase; } .mock-panel-head span { color: var(--text-faint); font-family: var(--font-mono), monospace; font-size: 0.68rem; } .mock-option-tape { grid-area: tape; } .mock-chart { grid-area: chart; } .mock-signals { grid-area: signals; } .mock-feed { grid-area: feed; } .mock-dark-flow { grid-area: dark; } .mock-context { grid-area: context; } .mock-replay { grid-area: replay; } .mock-symbol-brief { grid-area: brief; } .mock-table { display: grid; padding: 6px 10px 10px; } .mock-table-row { min-height: 36px; display: grid; gap: 10px; align-items: center; border-bottom: 1px solid oklch(0.72 0.012 250 / 0.09); color: var(--text-dim); font-size: 0.76rem; } .mock-table-row:last-child { border-bottom: 0; } .mock-table-head { min-height: 30px; color: var(--text-faint); font-family: var(--font-mono), monospace; font-size: 0.64rem; letter-spacing: 0.1em; text-transform: uppercase; } .mock-table-options .mock-table-row { grid-template-columns: 42px 58px 70px 64px 68px 72px 68px 76px; } .mock-table-feed .mock-table-row { grid-template-columns: minmax(110px, 1fr) 86px 58px 70px; } .mock-table-dark .mock-table-row { grid-template-columns: 72px 56px 64px 74px 78px 64px; } .mock-pill { width: fit-content; max-width: 100%; display: inline-flex; align-items: center; min-height: 22px; padding: 3px 7px; border: 1px solid var(--border); border-radius: 999px; color: var(--text-dim); font-family: var(--font-mono), monospace; font-size: 0.64rem; letter-spacing: 0.02em; } .mock-pill.is-bullish { color: var(--green); background: var(--green-soft); } .mock-pill.is-bearish { color: var(--red); background: var(--red-soft); } .mock-pill.is-info, .mock-pill.is-news { color: var(--blue); background: var(--blue-soft); } .mock-pill.is-warning { color: var(--accent); background: var(--accent-soft); } .mock-move { font-family: var(--font-mono), monospace; font-size: 0.72rem; } .mock-move.is-up { color: var(--green); } .mock-move.is-down { color: var(--red); } .mock-chart { min-height: 326px; } .mock-chart.is-compact { min-height: 240px; } .mock-chart-meta { display: flex; align-items: baseline; gap: 10px; padding: 10px 12px 0; } .mock-chart-meta strong, .mock-brief-price strong { font-family: var(--font-mono), monospace; font-size: 1rem; } .mock-candle-field { position: relative; height: 190px; margin: 8px 12px 0; display: flex; align-items: end; gap: 4px; padding: 12px 0; border-top: 1px solid oklch(0.72 0.012 250 / 0.08); border-bottom: 1px solid oklch(0.72 0.012 250 / 0.08); background: repeating-linear-gradient(0deg, transparent 0 38px, oklch(0.72 0.012 250 / 0.08) 39px 40px), linear-gradient(180deg, oklch(0.16 0.018 246), oklch(0.12 0.014 246)); } .mock-chart.is-compact .mock-candle-field { height: 126px; } .mock-candle-field span { width: 5px; height: var(--height); min-height: 18px; border-radius: 4px; } .mock-candle-field .is-green, .mock-volume-field .is-green { background: var(--green); } .mock-candle-field .is-red, .mock-volume-field .is-red { background: var(--red); } .mock-volume-field { height: 70px; display: flex; align-items: end; gap: 5px; padding: 9px 12px 12px; } .mock-chart.is-compact .mock-volume-field { height: 54px; } .mock-volume-field span { width: 7px; height: var(--height); min-height: 8px; opacity: 0.85; } .mock-signal-list { display: grid; padding: 6px 10px 10px; } .mock-signal-item { min-height: 58px; display: grid; grid-template-columns: 70px minmax(0, 1fr) auto; gap: 10px; align-items: center; border-bottom: 1px solid oklch(0.72 0.012 250 / 0.09); } .mock-signal-item:last-child { border-bottom: 0; } .mock-signal-item time, .mock-timeline time { color: var(--text-faint); font-family: var(--font-mono), monospace; font-size: 0.72rem; } .mock-signal-item div { min-width: 0; display: grid; gap: 3px; } .mock-signal-item strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 0.82rem; } .mock-signal-item span:not(.mock-pill) { color: var(--text-dim); font-size: 0.75rem; } .mock-signals.is-hero .mock-signal-item { min-height: 74px; } .mock-event-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(220px, 0.75fr); gap: 10px; padding: 10px; } .mock-timeline { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; } .mock-timeline li { display: grid; gap: 4px; padding: 9px; border: 1px solid oklch(0.72 0.012 250 / 0.1); border-radius: 8px; background: oklch(0.97 0.008 250 / 0.028); } .mock-timeline strong { font-size: 0.8rem; } .mock-timeline span, .mock-detail dd, .mock-symbol-brief p { color: var(--text-dim); font-size: 0.78rem; } .mock-detail { padding: 10px; border: 1px solid var(--border); border-radius: 8px; background: oklch(0.12 0.014 246 / 0.72); } .mock-detail h3 { margin: 0 0 10px; font-size: 0.86rem; } .mock-detail dl { display: grid; gap: 9px; margin: 0; } .mock-detail div { display: flex; justify-content: space-between; gap: 10px; } .mock-detail dt { color: var(--text-faint); font-family: var(--font-mono), monospace; font-size: 0.65rem; text-transform: uppercase; } .mock-detail dd { margin: 0; text-align: right; } .mock-replay { min-height: 112px; } .mock-replay-controls { display: flex; align-items: center; gap: 8px; padding: 10px 12px 0; } .mock-replay-controls button { min-height: 30px; border: 1px solid var(--border); border-radius: 8px; background: var(--bg-soft); color: var(--text); cursor: pointer; } .mock-replay-controls span { color: var(--text-faint); font-family: var(--font-mono), monospace; font-size: 0.72rem; } .mock-replay-track { position: relative; height: 26px; margin: 12px; border: 1px solid var(--border); border-radius: 8px; background: repeating-linear-gradient(90deg, transparent 0 22px, oklch(0.72 0.012 250 / 0.18) 23px 24px), oklch(0.11 0.014 246); } .mock-replay-window { position: absolute; inset: 6px 28% 6px 42%; border-radius: 999px; background: var(--blue); } .mock-replay-now { position: absolute; top: 2px; bottom: 2px; left: 62%; width: 3px; border-radius: 999px; background: var(--green); } .mock-replay-times { display: flex; justify-content: space-between; padding: 0 12px 12px; color: var(--text-faint); font-family: var(--font-mono), monospace; font-size: 0.68rem; } .mock-replay-times strong { color: var(--green); } .mock-symbol-brief { padding-bottom: 12px; } .mock-brief-price, .mock-brief-tags { display: flex; align-items: center; gap: 8px; padding: 12px 12px 0; flex-wrap: wrap; } .mock-symbol-brief p { margin: 12px 12px 0; } @keyframes mockTicker { from { transform: translateX(0); } to { transform: translateX(-50%); } } @media (prefers-reduced-motion: reduce) { .mock-ticker-track { animation: none; } } @media (max-width: 1180px) { .mock-header { grid-template-columns: 1fr; } .mock-header-tools, .mock-switcher { justify-content: flex-start; } .mock-grid-classic, .mock-grid-focus, .mock-grid-signals, .mock-grid-replay { grid-template-columns: 1fr; grid-template-areas: "replay" "brief" "signals" "chart" "tape" "context" "feed" "dark"; } .mock-grid-classic { grid-template-areas: "tape" "chart" "signals" "feed" "dark" "context" "replay"; } } @media (max-width: 720px) { .mock-terminal { padding: 12px; } .mock-table { overflow-x: auto; } .mock-table-row { width: max-content; min-width: 100%; } .mock-event-layout { grid-template-columns: 1fr; } .mock-signal-item { grid-template-columns: 62px minmax(0, 1fr); } .mock-signal-item .mock-pill { grid-column: 2; } }