:root {
            --bg: #050608; --card: #0f1115; --border: #1c1f26;
            --call: #00ffc3; --put: #ff0055; --flip: #f2ff00; --spot: #ffffff;
            --up-color: var(--call); --down-color: var(--put);
            --htf-border: rgba(255,255,255,0.85); --htf-wick: rgba(255,255,255,0.85);
            --htf-label: #e0e6ed; --htf-timer: #8b949e;
            --htf-fvg: rgba(128,128,128,0.20); --htf-vi: rgba(220,60,60,0.50); --htf-trace: rgba(160,160,160,0.50);
            --warn: #ff9f00; --mp: #a3aab5;
            --header-height: 70px; --bottom-height: 160px; --right-width: 300px; --tab-bar-height: 0px;
            --mobile-panel-min-height: auto;
        }
        body { background-color: var(--bg); color: #e0e6ed; font-family: 'Inter', sans-serif; margin: 0; overflow: hidden; }
        .mono { font-family: 'JetBrains Mono', monospace; }
        html[data-layout-mode="desktop"] { --header-height: 70px; --bottom-height: 300px; --right-width: 300px; --tab-bar-height: 0px; }
        html[data-layout-mode="tablet"] { --header-height: 56px; --bottom-height: 220px; --right-width: 260px; --tab-bar-height: 0px; }
        html[data-layout-mode="mobile"] {
            /* 仅作 --mobile-panel-min-height / premarket-banner 等派生计算的「天花板估值」；
               真正的 header 高度在移动端由内容撑开（.dashboard-header flex:0 0 auto），
               2 行时约 105px、3 行时约 149px —— 见 @media 里的规则。 */
            --header-height: 150px;
            --bottom-height: 0px;
            --right-width: 0px;
            --tab-bar-height: 48px;
            --replay-mobile-controls-height: 0px;
            --mobile-panel-min-height: calc(100dvh - var(--header-height) - var(--tab-bar-height) - env(safe-area-inset-bottom, 0px));
        }
        html[data-layout-mode="mobile"] body.replay-page { --replay-mobile-controls-height: 0px; }
        html[data-layout-mode="mobile"] body.replay-page[data-replay-controls="expanded"] { --replay-mobile-controls-height: 0px; }
        html[data-layout-mode="mobile"] #multichart-link { display: none; }
        
        @keyframes flash-green { 0% { color: var(--call); text-shadow: 0 0 20px var(--call); } 100% { color: #fff; } }
        @keyframes flash-red { 0% { color: var(--put); text-shadow: 0 0 20px var(--put); } 100% { color: #fff; } }
        .up-flash { animation: flash-green 0.8s ease-out; }
        .down-flash { animation: flash-red 0.8s ease-out; }

        .app-grid {
            --left-width: 280px;
            position: relative;
            display: grid; grid-template-columns: var(--left-width) 1fr var(--right-width); grid-template-rows: var(--header-height) minmax(0, 1fr) var(--bottom-height);
            gap: 12px; height: 100vh; padding: 12px; box-sizing: border-box;
            transition: grid-template-columns 0.28s ease, grid-template-rows 0.28s ease;
        }
        .card { background: var(--card); border: 1px solid var(--border); border-radius: 12px; padding: 16px; display: flex; flex-direction: column; overflow: hidden; }
        .label { font-size: 10px; font-weight: 900; color: #636e7b; letter-spacing: 1.5px; text-transform: uppercase; margin-bottom: 10px; border-bottom: 1px solid #161b22; padding-bottom: 4px; }
        
        .ticker-switcher { display: flex; gap: 8px; background: #000; padding: 4px; border-radius: 8px; border: 1px solid #1c1f26; }
        .ticker-tab { padding: 4px 16px; font-family: 'JetBrains Mono'; font-weight: 900; font-size: 14px; border-radius: 6px; cursor: pointer; transition: 0.3s; color: #636e7b; }
        .ticker-tab.active { background: #1c1f26; color: #fff; box-shadow: 0 2px 8px rgba(0,0,0,0.5); }
        .logout-link {
            display: inline-flex; align-items: center; justify-content: center;
            padding: 8px 12px; border-radius: 8px; border: 1px solid rgba(255, 255, 255, 0.08);
            color: #e0e6ed; background: #0b0d11; text-decoration: none;
            font-family: 'JetBrains Mono', monospace; font-size: 11px; font-weight: 800;
            letter-spacing: 0.08em; text-transform: uppercase; transition: 0.2s;
        }
        .logout-link:hover { border-color: rgba(255, 0, 85, 0.45); color: #fff; background: rgba(255, 0, 85, 0.08); }
        .mobile-account-link {
            display: none;
        }
        .mobile-account-icon {
            display: none;
        }
        .dashboard-header {
            position: relative;
            z-index: 40;
            gap: 16px;
            overflow: hidden;
        }
        .dashboard-header-left {
            flex: 1 1 auto;
        }
        .dashboard-header-center {
            flex: 0 1 auto;
        }
        .dashboard-header-right {
            flex: 0 0 auto;
            margin-left: auto;
        }
        .dashboard-header-left,
        .dashboard-header-center,
        .dashboard-header-right {
            min-width: 0;
        }
        .dashboard-header-brand {
            flex: 1 1 auto;
            min-width: 0;
        }
        .dashboard-header-brand > div:first-child,
        .clock-shell {
            min-width: 0;
        }
        .brand-title {
            display: flex;
            align-items: center;
            min-height: 20px;
            max-width: 100%;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }
        .brand-short {
            display: none !important;
        }
        .dashboard-header-brand .logout-link,
        .lang-switcher,
        .lang-switcher > * {
            flex: 0 0 auto;
        }
        .lang-switcher {
            display: inline-flex;
            align-items: center;
            min-width: 0;
            white-space: nowrap;
        }
        .live-clock {
            display: inline-flex;
            align-items: center;
            gap: 4px;
            white-space: nowrap;
        }
        .clock-zone:empty {
            display: none;
        }
        .layout-nav-toggle {
            display: none;
            position: relative;
            width: 40px;
            height: 40px;
            padding: 0;
            border: 1px solid rgba(255,255,255,0.08);
            border-radius: 10px;
            background: rgba(8, 10, 14, 0.92);
            color: #e6edf3;
            cursor: pointer;
            flex: 0 0 auto;
        }
        .layout-nav-toggle span {
            position: absolute;
            left: 10px;
            right: 10px;
            height: 2px;
            border-radius: 999px;
            background: currentColor;
            transition: transform 0.22s ease, opacity 0.22s ease, top 0.22s ease;
        }
        .layout-nav-toggle span:nth-child(1) { top: 12px; }
        .layout-nav-toggle span:nth-child(2) { top: 19px; }
        .layout-nav-toggle span:nth-child(3) { top: 26px; }
        .layout-nav-toggle[aria-expanded="true"] span:nth-child(1) { top: 19px; transform: rotate(45deg); }
        .layout-nav-toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
        .layout-nav-toggle[aria-expanded="true"] span:nth-child(3) { top: 19px; transform: rotate(-45deg); }
        .ticker-select-mobile {
            display: none;
            min-width: 92px;
            height: 36px;
            padding: 0 30px 0 12px;
            border-radius: 10px;
            border: 1px solid rgba(255,255,255,0.08);
            background: rgba(6,8,12,0.96);
            color: #e6edf3;
            font-family: 'JetBrains Mono', monospace;
            font-size: 12px;
            font-weight: 800;
        }
        .header-link::before {
            display: none;
            content: attr(data-short-label);
        }
        .left-drawer-backdrop {
            position: fixed;
            inset: 0;
            z-index: 190;
            display: none;
            background: rgba(2, 4, 7, 0.58);
            backdrop-filter: blur(4px);
        }
        .left-drawer-backdrop.open {
            display: block;
        }
        .overlay-gear-btn {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            width: 36px;
            height: 36px;
            border: 1px solid rgba(255,255,255,0.1);
            border-radius: 10px;
            background: rgba(8, 10, 14, 0.88);
            color: #e6edf3;
            cursor: pointer;
            font-size: 16px;
            line-height: 1;
            backdrop-filter: blur(10px);
            transition: border-color 0.2s, color 0.2s, box-shadow 0.2s, transform 0.2s;
        }
        .overlay-gear-btn:hover {
            border-color: rgba(255,255,255,0.22);
            color: #fff;
            transform: rotate(30deg);
        }
        .overlay-gear-btn.is-active {
            color: #ffd58c;
            border-color: rgba(255,181,71,0.35);
            box-shadow: 0 0 14px rgba(255,181,71,0.18);
        }
        .chart-hud-actions {
            display: inline-flex;
            align-items: center;
            gap: 8px;
        }
        .chart-hud-btn {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            width: 36px;
            height: 36px;
            border: 1px solid rgba(255,255,255,0.1);
            border-radius: 8px;
            background: rgba(8, 10, 14, 0.88);
            color: #e6edf3;
            cursor: pointer;
            backdrop-filter: blur(10px);
            transition: border-color 0.2s, color 0.2s, box-shadow 0.2s, transform 0.2s;
        }
        .chart-hud-btn:hover,
        .chart-hud-btn.is-active {
            border-color: rgba(255,255,255,0.22);
            color: #fff;
            box-shadow: 0 0 18px rgba(255,255,255,0.08);
        }
        .chart-hud-btn svg {
            width: 16px;
            height: 16px;
            fill: none;
            stroke: currentColor;
            stroke-width: 1.8;
            stroke-linecap: round;
            stroke-linejoin: round;
        }
        .panel-collapse-btn {
            position: absolute;
            z-index: 50;
            background: var(--card);
            border: 1px solid var(--border);
            color: #636e7b;
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: center;
            transition: border-color 0.2s, color 0.2s, transform 0.2s;
            padding: 0;
        }
        .panel-collapse-btn:hover {
            border-color: rgba(255, 255, 255, 0.25);
            color: #e0e6ed;
        }
        .panel-collapse-btn svg {
            width: 10px;
            height: 10px;
            fill: none;
            stroke: currentColor;
            stroke-width: 2;
            stroke-linecap: round;
            stroke-linejoin: round;
            transition: transform 0.2s ease;
        }
        .panel-collapse-left {
            width: 16px;
            height: 32px;
            border-radius: 0 6px 6px 0;
            left: calc(var(--left-width) + 12px);
            top: 50%;
            transform: translateY(-50%);
        }
        .panel-collapse-left:hover {
            transform: translateY(-50%) scale(1.08);
        }
        .panel-collapse-right {
            width: 16px;
            height: 32px;
            border-radius: 6px 0 0 6px;
            right: calc(var(--right-width) + 12px);
            top: 50%;
            transform: translateY(-50%);
        }
        .panel-collapse-right:hover {
            transform: translateY(-50%) scale(1.08);
        }
        .panel-collapse-bottom {
            width: 32px;
            height: 16px;
            border-radius: 6px 6px 0 0;
            bottom: calc(var(--bottom-height) + 12px);
            left: 50%;
            transform: translateX(-50%);
        }
        .panel-collapse-bottom:hover {
            transform: translateX(-50%) scale(1.08);
        }
        html[data-layout-mode="desktop"] .app-grid.left-collapsed {
            --left-width: 0px;
        }
        html[data-layout-mode="desktop"] .app-grid.left-collapsed .left-briefing-card,
        html:not([data-layout-mode="mobile"]) .app-grid.right-collapsed .right-panel-card,
        html:not([data-layout-mode="mobile"]) .app-grid.bottom-collapsed .syslog-card-shell {
            overflow: hidden;
            opacity: 0;
            pointer-events: none;
            padding: 0;
            border: none;
            transition: opacity 0.15s ease;
        }
        html:not([data-layout-mode="mobile"]) .app-grid.right-collapsed {
            --right-width: 0px;
        }
        html:not([data-layout-mode="mobile"]) .app-grid.bottom-collapsed {
            --bottom-height: 0px;
        }
        html:not([data-layout-mode="mobile"]) .app-grid.chart-fullscreen {
            --left-width: 0px;
            --right-width: 0px;
            --bottom-height: 0px;
            grid-template-columns: minmax(0, 1fr) !important;
            grid-template-rows: var(--header-height) minmax(0, 1fr) !important;
            gap: 0;
            padding: 0;
            transition: none;
        }
        body.replay-page .app-grid.chart-fullscreen {
            grid-template-rows: var(--header-height) 58px minmax(0, 1fr) !important;
        }
        html[data-layout-mode="tablet"] body.replay-page .app-grid.chart-fullscreen {
            grid-template-rows: var(--header-height) 52px minmax(0, 1fr) !important;
        }
        html:not([data-layout-mode="mobile"]) .app-grid.chart-fullscreen > :not(.chart-card):not(.dashboard-header):not(.replay-bar-shell) {
            display: none !important;
        }
        html:not([data-layout-mode="mobile"]) .app-grid.chart-fullscreen .dashboard-header,
        html:not([data-layout-mode="mobile"]) .app-grid.chart-fullscreen .replay-bar-shell {
            grid-column: 1 / -1;
            opacity: 1;
            pointer-events: auto;
        }
        html:not([data-layout-mode="mobile"]) .app-grid.chart-fullscreen .chart-card {
            grid-column: 1 / -1;
            grid-row: 2 / -1;
            width: 100%;
            height: 100%;
            min-height: 0;
            border: none;
            border-radius: 0;
        }
        body.replay-page .app-grid.chart-fullscreen .chart-card {
            grid-row: 3 / -1;
        }
        html:not([data-layout-mode="mobile"]) .app-grid.chart-fullscreen .premarket-banner {
            display: none !important;
        }
        html:not([data-layout-mode="mobile"]) .app-grid.chart-fullscreen .panel-collapse-btn:not(.fullscreen-btn) {
            display: none;
        }
        .app-grid.left-collapsed .panel-collapse-left {
            left: 0;
        }
        .app-grid.right-collapsed .panel-collapse-right {
            right: 0;
        }
        .app-grid.bottom-collapsed .panel-collapse-bottom {
            bottom: 0;
        }
        .app-grid.left-collapsed .panel-collapse-left svg,
        .app-grid.right-collapsed .panel-collapse-right svg,
        .app-grid.bottom-collapsed .panel-collapse-bottom svg {
            transform: rotate(180deg);
        }
        html[data-layout-mode="mobile"] .panel-collapse-btn,
        html[data-layout-mode="mobile"] .fullscreen-btn,
        html[data-layout-mode="tablet"] .panel-collapse-left {
            display: none;
        }
        .mobile-tab-bar {
            position: fixed;
            left: 0;
            right: 0;
            bottom: 0;
            z-index: 300;
            display: none;
            align-items: stretch;
            height: calc(48px + env(safe-area-inset-bottom, 0px));
            padding-bottom: env(safe-area-inset-bottom, 0px);
            background: rgba(15, 17, 21, 0.97);
            border-top: 1px solid rgba(255,255,255,0.08);
            backdrop-filter: blur(14px);
        }
        .mobile-tab {
            flex: 1 1 0;
            border: 0;
            background: transparent;
            color: #7d8590;
            font-family: 'JetBrains Mono', monospace;
            font-size: 11px;
            font-weight: 900;
            letter-spacing: 0.04em;
            cursor: pointer;
            position: relative;
        }
        .mobile-tab.active {
            color: #ffffff;
        }
        .mobile-tab.active::after {
            content: "";
            position: absolute;
            left: 16px;
            right: 16px;
            bottom: 6px;
            height: 2px;
            border-radius: 999px;
            background: var(--call);
        }
        .mobile-tab-hidden {
            display: none !important;
        }
        .log-collapse-toggle {
            display: none;
            min-width: 54px;
            height: 28px;
            padding: 0 10px;
            border-radius: 999px;
            border: 1px solid rgba(255,255,255,0.08);
            background: rgba(255,255,255,0.03);
            color: #c9d1d9;
            cursor: pointer;
            font-family: 'JetBrains Mono', monospace;
            font-size: 10px;
            font-weight: 900;
            letter-spacing: 0.08em;
            text-transform: uppercase;
        }
        /* ── GEX 磁吸回测 bottom-tab bar ─────────────────────────── */
        .bottom-tab {
            height: 26px;
            padding: 0 10px;
            border-radius: 999px;
            border: 1px solid rgba(255,255,255,0.08);
            background: transparent;
            color: rgba(255,255,255,0.4);
            cursor: pointer;
            font-family: 'JetBrains Mono', monospace;
            font-size: 10px;
            font-weight: 700;
            letter-spacing: 0.08em;
            text-transform: uppercase;
            transition: color 0.15s, background 0.15s, border-color 0.15s;
            white-space: nowrap;
        }
        .bottom-tab.active {
            background: rgba(0,255,195,0.1);
            border-color: rgba(0,255,195,0.3);
            color: #00ffc3;
        }
        .bottom-tab:hover:not(.active) {
            color: rgba(255,255,255,0.7);
            background: rgba(255,255,255,0.04);
        }
        /* 6 个 tab 在窄屏/移动端横向滚动，不挤压右侧「展开/关闭」按钮（隐藏滚动条）。 */
        #bottom-tabs {
            min-width: 0;
            flex-wrap: nowrap;
            overflow-x: auto;
            scrollbar-width: none;
        }
        #bottom-tabs::-webkit-scrollbar { display: none; }
        /* ── B-1：指数机危雷达 tab 按钮脉冲彩色态（最新有效信号驱动）──────────
         * 脉冲点用 ::before 伪元素，不占 textContent（避免被 i18n 重写擦掉）；
         * 绿=机会 / 红=风险 / 铜=观望；等级越高脉冲越快越亮，铜色静止不脉冲。 */
        #index-radar-tab-btn[class*="idx-tone-"]::before {
            content: '';
            display: inline-block;
            width: 7px;
            height: 7px;
            border-radius: 50%;
            margin-right: 6px;
            vertical-align: middle;
            background: #b87333;
            box-shadow: 0 0 4px rgba(184, 115, 51, 0.7);
        }
        #index-radar-tab-btn.idx-tone-buy::before {
            background: #2ec27e;
            box-shadow: 0 0 5px rgba(46, 194, 126, 0.85);
            animation: idxBtnPulse 2s ease-in-out infinite;
        }
        #index-radar-tab-btn.idx-tone-sell::before {
            background: #f85149;
            box-shadow: 0 0 5px rgba(248, 81, 73, 0.85);
            animation: idxBtnPulse 2s ease-in-out infinite;
        }
        #index-radar-tab-btn.idx-g-low::before { animation-duration: 2.4s; opacity: 0.7; }
        #index-radar-tab-btn.idx-g-mid::before { animation-duration: 1.8s; opacity: 0.82; }
        #index-radar-tab-btn.idx-g-high::before { animation-duration: 1.3s; opacity: 0.92; }
        #index-radar-tab-btn.idx-g-very_high::before { animation-duration: 0.85s; opacity: 1; }
        #index-radar-tab-btn.idx-tone-buy:not(.active) {
            color: rgba(46, 194, 126, 0.85);
            border-color: rgba(46, 194, 126, 0.3);
        }
        #index-radar-tab-btn.idx-tone-sell:not(.active) {
            color: rgba(248, 81, 73, 0.85);
            border-color: rgba(248, 81, 73, 0.3);
        }
        #index-radar-tab-btn.idx-tone-neutral:not(.active) {
            color: rgba(184, 115, 51, 0.8);
            border-color: rgba(184, 115, 51, 0.25);
        }
        @keyframes idxBtnPulse {
            0%, 100% { transform: scale(1); }
            50% { transform: scale(1.5); }
        }
        @media (prefers-reduced-motion: reduce) {
            #index-radar-tab-btn[class*="idx-tone-"]::before { animation: none; }
        }
        /* GBT close button */
        #gbt-close-btn {
            height: 26px;
            padding: 0 10px;
            border-radius: 999px;
            border: 1px solid rgba(255,255,255,0.12);
            background: rgba(255,255,255,0.04);
            color: rgba(255,255,255,0.6);
            cursor: pointer;
            font-family: 'JetBrains Mono', monospace;
            font-size: 10px;
            font-weight: 700;
            letter-spacing: 0.04em;
            transition: color 0.15s, background 0.15s;
        }
        #gbt-close-btn:hover { color: #fff; background: rgba(255,255,255,0.08); }
        /* ── GBT full-screen overlay animation ───────────────────── */
        @keyframes gbt-slide-up {
            from { transform: translateY(100%); opacity: 0; }
            to   { transform: translateY(0);    opacity: 1; }
        }
        @keyframes gbt-slide-down {
            from { transform: translateY(0);    opacity: 1; }
            to   { transform: translateY(100%); opacity: 0; }
        }
        .syslog-card-shell.gbt-expanded {
            position: fixed !important;
            bottom: 0; left: 0; right: 0;
            height: calc(100vh - var(--header-height)) !important;
            z-index: 150;
            border-radius: 8px 8px 0 0;
            background: #080a0d !important;
            border-top: 1px solid #1a2030;
            animation: gbt-slide-up 0.35s cubic-bezier(0.4, 0, 0.2, 1) forwards;
            display: flex !important;
            flex-direction: column;
            padding: 16px !important;
            overflow: hidden;
        }
        .syslog-card-shell.gbt-closing {
            position: fixed !important;
            bottom: 0; left: 0; right: 0;
            height: calc(100vh - var(--header-height)) !important;
            z-index: 150;
            border-radius: 8px 8px 0 0;
            background: #080a0d !important;
            border-top: 1px solid #1a2030;
            animation: gbt-slide-down 0.35s cubic-bezier(0.4, 0, 0.2, 1) forwards;
            display: flex !important;
            flex-direction: column;
            padding: 16px !important;
            overflow: hidden;
        }
        /* hide log toggle while GBT is expanded */
        .syslog-card-shell.gbt-expanded #sys-log-toggle,
        .syslog-card-shell.gbt-closing #sys-log-toggle { display: none !important; }
        .logout-link.is-disabled {
            opacity: 0.4; pointer-events: none; cursor: not-allowed;
            border-color: rgba(255,255,255,0.04); color: #6b7280; background: rgba(255,255,255,0.02);
        }
        .replay-page .app-grid {
            grid-template-rows: var(--header-height) 58px minmax(0, 1fr) 420px;
        }
        .replay-bar-shell {
            grid-column: 1 / -1; grid-row: 2;
        }
        .syslog-card-shell {
            grid-column: 1 / 3;
        }
        .replay-bar {
            display: flex; align-items: center;
            padding: 8px 14px; border-radius: 14px; border: 1px solid rgba(255,255,255,0.07);
            background:
                linear-gradient(180deg, rgba(16,18,24,0.96), rgba(8,10,14,0.98)),
                radial-gradient(circle at top left, rgba(92, 255, 211, 0.08), transparent 36%);
            box-shadow:
                inset 0 0 0 1px rgba(255,255,255,0.02),
                0 16px 42px rgba(0,0,0,0.22);
        }
        .replay-bar-main {
            display: flex; align-items: center; gap: 10px; width: 100%; min-width: 0;
        }
        .replay-bar-primary,
        .replay-bar-secondary {
            display: flex; align-items: center; gap: 10px; min-width: 0;
        }
        .replay-bar-secondary {
            flex: 1 1 auto;
        }
        .replay-controls-toggle {
            display: none;
            align-items: center;
            justify-content: center;
            min-width: 54px;
            height: 30px;
            padding: 0 10px;
            border-radius: 10px;
            border: 1px solid rgba(255,255,255,0.08);
            background: rgba(255,255,255,0.03);
            color: #c9d1d9;
            cursor: pointer;
            font-family: 'JetBrains Mono', monospace;
            font-size: 10px;
            font-weight: 900;
            letter-spacing: 0.08em;
            text-transform: uppercase;
            flex: 0 0 auto;
        }
        .replay-fab-toggle {
            display: none;
            position: fixed;
            left: 14px;
            bottom: calc(58px + env(safe-area-inset-bottom, 0px));
            z-index: 118;
            width: 56px;
            height: 56px;
            border: 1px solid rgba(255,255,255,0.08);
            border-radius: 999px;
            background:
                radial-gradient(circle at 30% 28%, rgba(120, 255, 220, 0.16), transparent 34%),
                linear-gradient(180deg, rgba(17,21,27,0.96), rgba(8,10,14,0.98));
            box-shadow:
                0 16px 34px rgba(0,0,0,0.42),
                inset 0 1px 0 rgba(255,255,255,0.06),
                inset 0 0 0 1px rgba(255,255,255,0.02);
            cursor: pointer;
            align-items: center;
            justify-content: center;
            transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
        }
        .replay-fab-toggle:hover,
        .replay-fab-toggle:focus-visible {
            transform: translateY(-1px) scale(1.02);
            border-color: rgba(0,255,195,0.22);
            box-shadow:
                0 20px 40px rgba(0,0,0,0.46),
                inset 0 1px 0 rgba(255,255,255,0.08),
                0 0 0 4px rgba(0,255,195,0.08);
            outline: none;
        }
        .replay-fab-icon {
            position: relative;
            width: 22px;
            height: 22px;
            display: block;
        }
        .replay-fab-icon::before {
            content: "";
            position: absolute;
            left: 6px;
            top: 4px;
            width: 0;
            height: 0;
            border-top: 7px solid transparent;
            border-bottom: 7px solid transparent;
            border-left: 11px solid #d9fff4;
            filter: drop-shadow(0 0 10px rgba(0,255,195,0.18));
        }
        .replay-fab-icon::after {
            content: "";
            position: absolute;
            inset: 0;
            border-radius: 999px;
            border: 1px solid rgba(0,255,195,0.12);
            background: radial-gradient(circle, rgba(0,255,195,0.08), transparent 72%);
        }
        .replay-fab-dot {
            position: absolute;
            top: 11px;
            right: 11px;
            width: 8px;
            height: 8px;
            border-radius: 999px;
            background: #00ffc3;
            box-shadow: 0 0 12px rgba(0,255,195,0.55);
        }
        .replay-badge {
            display: inline-flex; align-items: center; justify-content: center;
            min-width: 82px; height: 28px; padding: 0 10px; border-radius: 999px;
            background: rgba(255,255,255,0.04); color: #d8e1ea; border: 1px solid rgba(255,255,255,0.08);
            font-family: 'JetBrains Mono', monospace; font-size: 10px; font-weight: 900; letter-spacing: 0.12em; text-transform: uppercase;
        }
        .replay-select {
            min-width: 110px; height: 30px; padding: 0 10px; border-radius: 10px;
            border: 1px solid rgba(255,255,255,0.08); background: rgba(6,8,12,0.96); color: #e6edf3;
            font-family: 'JetBrains Mono', monospace; font-size: 11px; font-weight: 800;
            box-shadow: inset 0 1px 0 rgba(255,255,255,0.03);
        }
        .replay-select:hover {
            border-color: rgba(255,255,255,0.14);
        }
        .replay-select:focus-visible {
            outline: none; border-color: rgba(0,255,195,0.26);
            box-shadow: 0 0 0 3px rgba(0,255,195,0.08);
        }
        .replay-bar-secondary #replay-date-select {
            display: none;
        }
        .replay-picker-trigger {
            display: inline-flex;
            min-width: 110px;
            min-height: 30px;
            padding: 8px 12px;
            border-radius: 12px;
            border: 1px solid rgba(255,255,255,0.08);
            background:
                linear-gradient(180deg, rgba(15,19,25,0.98), rgba(7,9,13,0.98)),
                radial-gradient(circle at top left, rgba(92, 255, 211, 0.08), transparent 42%);
            color: #e6edf3;
            box-shadow:
                inset 0 1px 0 rgba(255,255,255,0.03),
                0 8px 24px rgba(0,0,0,0.18);
            cursor: pointer;
            align-items: center;
            justify-content: space-between;
            gap: 10px;
            text-align: left;
        }
        .replay-picker-trigger:focus-visible {
            outline: none;
            border-color: rgba(0,255,195,0.26);
            box-shadow:
                0 0 0 3px rgba(0,255,195,0.08),
                0 8px 24px rgba(0,0,0,0.18);
        }
        .replay-picker-trigger:disabled {
            opacity: 0.48;
            cursor: not-allowed;
        }
        .replay-picker-trigger-copy {
            display: flex;
            flex-direction: column;
            min-width: 0;
        }
        .replay-picker-trigger-label {
            font-family: 'JetBrains Mono', monospace;
            font-size: 9px;
            font-weight: 900;
            letter-spacing: 0.12em;
            text-transform: uppercase;
            color: #7d8590;
        }
        .replay-picker-trigger-value {
            font-family: 'JetBrains Mono', monospace;
            font-size: 12px;
            font-weight: 800;
            color: #f0f6fc;
            line-height: 1.2;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }
        .replay-picker-trigger-caret {
            width: 10px;
            height: 10px;
            border-right: 2px solid rgba(214, 226, 241, 0.72);
            border-bottom: 2px solid rgba(214, 226, 241, 0.72);
            transform: rotate(45deg) translateY(-2px);
            flex: 0 0 auto;
        }
        .replay-wheel-backdrop {
            position: fixed;
            inset: 0;
            z-index: 132;
            display: flex;
            align-items: flex-end;
            justify-content: center;
            padding-top: 32px;
            background: rgba(4, 6, 9, 0.56);
            opacity: 0;
            pointer-events: none;
            transition: opacity 0.22s ease;
        }
        body[data-replay-date-wheel="open"] .replay-wheel-backdrop {
            opacity: 1;
            pointer-events: auto;
        }
        .replay-wheel-sheet {
            width: min(100%, 440px);
            border-radius: 20px 20px 0 0;
            border: 1px solid rgba(255,255,255,0.08);
            border-bottom: 0;
            padding: 14px 14px calc(20px + env(safe-area-inset-bottom, 0px));
            background:
                linear-gradient(180deg, rgba(17,21,27,0.985), rgba(8,10,14,0.995)),
                radial-gradient(circle at top left, rgba(92, 255, 211, 0.1), transparent 40%);
            box-shadow:
                0 -24px 64px rgba(0,0,0,0.44),
                inset 0 1px 0 rgba(255,255,255,0.04);
            transform: translateY(24px);
            transition: transform 0.22s ease;
        }
        body[data-replay-date-wheel="open"] .replay-wheel-sheet {
            transform: translateY(0);
        }
        .replay-wheel-header {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 12px;
            margin-bottom: 12px;
        }
        .replay-wheel-title {
            font-family: 'JetBrains Mono', monospace;
            font-size: 12px;
            font-weight: 900;
            letter-spacing: 0.12em;
            text-transform: uppercase;
            color: #f0f6fc;
        }
        .replay-wheel-action {
            min-width: 58px;
            height: 36px;
            padding: 0 12px;
            border-radius: 10px;
            border: 1px solid rgba(0,255,195,0.16);
            background: rgba(0,255,195,0.08);
            color: #8af7d8;
            font-family: 'JetBrains Mono', monospace;
            font-size: 11px;
            font-weight: 900;
            letter-spacing: 0.08em;
            cursor: pointer;
        }
        .replay-wheel-action-muted {
            border-color: rgba(255,255,255,0.08);
            background: rgba(255,255,255,0.03);
            color: #8b949e;
        }
        .replay-wheel-frame {
            --replay-wheel-item-height: 48px;
            --replay-wheel-frame-height: 216px;
            position: relative;
            height: var(--replay-wheel-frame-height);
            overflow: hidden;
            border-radius: 18px;
            border: 1px solid rgba(255,255,255,0.06);
            background: rgba(3, 5, 8, 0.92);
        }
        .replay-wheel-frame::before,
        .replay-wheel-frame::after {
            content: "";
            position: absolute;
            left: 0;
            right: 0;
            height: calc((var(--replay-wheel-frame-height) - var(--replay-wheel-item-height)) / 2);
            z-index: 2;
            pointer-events: none;
        }
        .replay-wheel-frame::before {
            top: 0;
            background: linear-gradient(180deg, rgba(3,5,8,0.98), rgba(3,5,8,0.14));
        }
        .replay-wheel-frame::after {
            bottom: 0;
            background: linear-gradient(0deg, rgba(3,5,8,0.98), rgba(3,5,8,0.14));
        }
        .replay-wheel-highlight {
            position: absolute;
            left: 8px;
            right: 8px;
            top: 50%;
            height: var(--replay-wheel-item-height);
            transform: translateY(-50%);
            border-radius: 14px;
            border: 1px solid rgba(0,255,195,0.16);
            background: linear-gradient(180deg, rgba(10,44,37,0.6), rgba(5,20,17,0.72));
            box-shadow:
                inset 0 1px 0 rgba(255,255,255,0.04),
                0 0 0 1px rgba(255,255,255,0.02);
            z-index: 1;
            pointer-events: none;
        }
        .replay-wheel-list {
            position: relative;
            z-index: 0;
            height: 100%;
            overflow-y: auto;
            padding: calc((var(--replay-wheel-frame-height) - var(--replay-wheel-item-height)) / 2) 0;
            scroll-snap-type: y mandatory;
            overscroll-behavior: contain;
            -webkit-overflow-scrolling: touch;
            scrollbar-width: none;
        }
        .replay-wheel-list::-webkit-scrollbar {
            display: none;
        }
        .replay-wheel-option {
            display: flex;
            align-items: center;
            justify-content: center;
            width: 100%;
            height: var(--replay-wheel-item-height);
            padding: 0 18px;
            border: 0;
            background: transparent;
            color: rgba(214, 226, 241, 0.44);
            font-family: 'JetBrains Mono', monospace;
            font-size: 14px;
            font-weight: 800;
            letter-spacing: 0.02em;
            scroll-snap-align: center;
            transition: color 0.18s ease, transform 0.18s ease;
            cursor: pointer;
        }
        .replay-wheel-option.is-selected {
            color: #f0f6fc;
            transform: scale(1.02);
        }
        .replay-speed-select { min-width: 78px; flex: 0 0 auto; }
        .replay-mode-switch {
            display: inline-flex; align-items: center; gap: 6px;
            padding: 4px; border-radius: 12px; background: rgba(4,6,10,0.88); border: 1px solid rgba(255,255,255,0.06);
            flex: 0 0 auto;
        }
        .replay-mode-btn {
            height: 28px; padding: 0 10px; border: 0; border-radius: 8px; cursor: pointer;
            background: transparent; color: #7d8590; font-family: 'JetBrains Mono', monospace; font-size: 10px; font-weight: 900;
            letter-spacing: 0.08em; text-transform: uppercase; transition: 0.2s;
        }
        .replay-mode-btn:hover {
            color: #d0d7de; background: rgba(255,255,255,0.04);
        }
        .replay-mode-btn.active {
            background: linear-gradient(180deg, rgba(9,42,35,0.96), rgba(5,22,18,0.96));
            color: #8af7d8; box-shadow: inset 0 0 0 1px rgba(0,255,195,0.16);
        }
        .replay-play-btn {
            width: 32px; height: 32px; border-radius: 10px; border: 1px solid rgba(0,255,195,0.18);
            background: rgba(0,255,195,0.08); color: #8af7d8; cursor: pointer; flex: 0 0 auto;
            font-size: 14px; font-weight: 900; box-shadow: 0 10px 24px rgba(0,0,0,0.22);
        }
        .replay-play-btn:hover {
            border-color: rgba(0,255,195,0.28); background: rgba(0,255,195,0.14); color: #c6fff0;
        }
        .replay-play-btn.is-playing {
            background: linear-gradient(180deg, rgba(11,54,45,0.98), rgba(6,30,25,0.98));
            border-color: rgba(0,255,195,0.28); color: #00ffc3;
        }
        .replay-time, .replay-loading-status {
            font-family: 'JetBrains Mono', monospace; font-size: 11px; font-weight: 800; white-space: nowrap;
        }
        .replay-time { color: #e6edf3; margin-left: auto; }
        .replay-loading-status { color: #7f8a98; flex: 0 1 auto; overflow: hidden; text-overflow: ellipsis; }
        .replay-page #sys-log {
            font-size: 9px;
            line-height: 1.45;
        }
        .news-item {
            display: grid;
            grid-template-columns: auto auto minmax(0, 1fr);
            align-items: start;
            column-gap: 7px;
            row-gap: 2px;
            min-height: 28px;
            padding: 2px 0 4px;
            font-size: 10px;
            line-height: 1.4;
            color: #d7e1ea;
        }
        .news-prefix {
            color: #00ffc3;
            font-family: 'JetBrains Mono', monospace;
            font-weight: 900;
            grid-row: 1 / span 2;
            padding-top: 2px;
        }
        .news-category {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            border-radius: 6px;
            border: 1px solid currentColor;
            padding: 2px 6px;
            font-family: 'JetBrains Mono', monospace;
            font-size: 9px;
            font-weight: 900;
            white-space: nowrap;
            background: rgba(255,255,255,0.04);
            grid-row: 1 / span 2;
        }
        .news-title {
            display: block;
            min-width: 0;
            overflow: visible;
            text-overflow: clip;
            white-space: normal;
            overflow-wrap: anywhere;
            color: #e6edf3;
        }
        .news-title:hover { color: #ffffff; }
        .news-time {
            font-family: 'JetBrains Mono', monospace;
            font-size: 9px;
            color: #7d8590;
            white-space: nowrap;
            grid-column: 3;
            grid-row: 2;
        }
        .news-cat-央行 { color: #ffd700; }
        .news-cat-就业 { color: #4a9eff; }
        .news-cat-通胀 { color: #ff4757; }
        .news-cat-地缘 { color: #ff8c00; }
        .news-cat-关税 { color: #a855f7; }
        .news-cat-数据 { color: #00d4ff; }
        .news-cat-能源 { color: #00c853; }
        .news-cat-其他 { color: #888888; }
        .replay-disabled-overlay {
            position: fixed; inset: 0; z-index: 130; display: none; align-items: center; justify-content: center;
            background: rgba(4,5,7,0.78); backdrop-filter: blur(10px);
        }
        .replay-disabled-panel {
            width: min(460px, calc(100vw - 32px)); padding: 26px 24px; border-radius: 18px;
            border: 1px solid rgba(242,255,0,0.18); background: linear-gradient(180deg, rgba(15,17,21,0.98), rgba(7,8,11,0.98));
            box-shadow: 0 20px 60px rgba(0,0,0,0.48);
        }
        .replay-disabled-title {
            font-size: 18px; font-weight: 900; letter-spacing: 0.08em; text-transform: uppercase; color: #f2ff00;
        }
        .replay-disabled-copy {
            margin-top: 10px; font-size: 13px; line-height: 1.7; color: #c9d1d9;
        }
        .replay-disabled-actions {
            display: flex; align-items: center; gap: 10px; margin-top: 18px;
        }
        .replay-page .premarket-banner {
            position: absolute; top: 12px; left: 50%; transform: translateX(-50%);
            z-index: 56; max-width: min(420px, calc(100% - 240px));
            border-radius: 999px; padding: 5px 10px;
            text-align: left; font-size: 9px; line-height: 1.35;
            box-shadow: 0 8px 24px rgba(0,0,0,0.28);
        }
        .info-chip {
            display: inline-flex; align-items: center; justify-content: center;
            width: 16px; height: 16px; border-radius: 999px;
            border: 1px solid rgba(255, 159, 0, 0.45); color: var(--warn);
            background: rgba(255, 159, 0, 0.08); cursor: pointer;
            font-family: 'JetBrains Mono', monospace; font-size: 11px; font-weight: 900;
            transition: 0.2s;
        }
        .info-chip:hover { background: rgba(255, 159, 0, 0.18); box-shadow: 0 0 12px rgba(255, 159, 0, 0.22); }

        @keyframes glow { 0%, 100% { box-shadow: 0 0 5px rgba(242,255,0,0.1); } 50% { box-shadow: 0 0 20px rgba(242,255,0,0.2); } }
        @keyframes glow-warn { 0%, 100% { box-shadow: 0 0 5px rgba(255,159,0,0.1); } 50% { box-shadow: 0 0 20px rgba(255,159,0,0.3); } }
        
        .active-play { border: 2px solid var(--flip) !important; background: rgba(242,255,0,0.05); animation: glow 3s infinite; }
        .active-warn { border: 2px solid var(--warn) !important; background: rgba(255,159,0,0.05); animation: glow-warn 2s infinite; }
        
        /* 全局错误横幅：fixed 浮层，绝不参与文档流，避免出现时把整页内容顶下去。 */
        #err-msg {
            position: fixed; top: 12px; left: 50%; transform: translateX(-50%);
            z-index: 10010; display: none; align-items: flex-start; gap: 10px;
            max-width: min(560px, calc(100vw - 32px)); max-height: 40vh; overflow-y: auto;
            padding: 10px 12px; border-radius: 12px; backdrop-filter: blur(12px);
            border: 1px solid rgba(255, 181, 71, 0.32); background: rgba(58, 36, 8, 0.92);
            box-shadow: 0 16px 38px rgba(0,0,0,0.45); color: #ffe1a6;
            font-size: 11px; line-height: 1.5; font-weight: 700;
            word-break: break-word;
        }
        #err-msg.is-visible { display: inline-flex; }
        #err-msg .err-msg-text { flex: 1 1 auto; min-width: 0; }
        #err-msg .err-msg-close {
            flex: 0 0 auto; width: 20px; height: 20px; padding: 0;
            border: none; border-radius: 6px; background: rgba(255,255,255,0.08);
            color: #ffe1a6; font-size: 14px; line-height: 1; cursor: pointer;
        }
        #err-msg .err-msg-close:hover { background: rgba(255,255,255,0.16); }

        .connection-toast {
            position: fixed; right: 18px; bottom: 18px; z-index: 9999;
            display: none; align-items: center; gap: 10px; max-width: 340px;
            padding: 10px 14px; border-radius: 12px; backdrop-filter: blur(12px);
            border: 1px solid rgba(255, 181, 71, 0.32); background: rgba(58, 36, 8, 0.86);
            box-shadow: 0 16px 38px rgba(0,0,0,0.35); color: #ffe1a6;
            font-size: 11px; line-height: 1.5; font-weight: 800;
        }
        .connection-toast.is-visible { display: inline-flex; }
        .connection-toast::before {
            content: ""; width: 9px; height: 9px; border-radius: 999px; flex: 0 0 auto;
            background: #ffb547; box-shadow: 0 0 14px rgba(255, 181, 71, 0.45);
        }
        .connection-toast.is-recovered {
            border-color: rgba(0, 255, 195, 0.28); background: rgba(6, 42, 33, 0.86); color: #aafbe7;
        }
        .connection-toast.is-recovered::before {
            background: #00ffc3; box-shadow: 0 0 14px rgba(0, 255, 195, 0.45);
        }

        .session-control-overlay {
            position: fixed; inset: 0; z-index: 10020;
            display: none; align-items: center; justify-content: center;
            padding: 24px; background: rgba(3, 5, 8, 0.78); backdrop-filter: blur(12px);
        }
        .session-control-overlay.open {
            display: flex;
        }
        .session-control-panel {
            width: min(420px, calc(100vw - 48px));
            border: 1px solid rgba(255, 181, 71, 0.32); border-radius: 8px;
            background: rgba(9, 12, 17, 0.96);
            box-shadow: 0 24px 70px rgba(0,0,0,0.55);
            padding: 24px; text-align: center;
        }
        .session-control-title {
            color: #fff; font-size: 18px; font-weight: 900; letter-spacing: 0;
        }
        .session-control-copy,
        .session-control-subcopy {
            margin-top: 12px; color: #c9d1d9; font-size: 13px; line-height: 1.7;
        }
        .session-control-subcopy {
            margin-top: 6px; color: #8b949e;
        }
        .session-control-action {
            margin-top: 18px; min-height: 40px; padding: 0 16px; border-radius: 8px;
            border: 1px solid rgba(0, 255, 195, 0.38); background: rgba(0, 255, 195, 0.12);
            color: #dffdf6; font-size: 12px; font-weight: 900; cursor: pointer;
        }
        .session-control-action:hover {
            background: rgba(0, 255, 195, 0.2);
        }
        
        .center-stage { position: relative; flex: 1; width: 100%; height: 100%; background: #000; overflow: hidden; }
        #tv-canvas { position: absolute; inset: 0; z-index: 1; }
        .vol-segments-overlay {
            position: absolute;
            top: 48px;
            right: 12px;
            z-index: 20;
            display: none;
            max-width: min(560px, calc(100% - 24px));
            padding: 8px 10px;
            border: 1px solid rgba(255,255,255,0.08);
            border-radius: 8px;
            background: rgba(10, 12, 16, 0.9);
            backdrop-filter: blur(6px);
            box-shadow: 0 12px 30px rgba(0,0,0,0.28);
            pointer-events: auto;
        }
        .vol-segments-overlay .vs-title {
            display: flex;
            align-items: center;
            gap: 6px;
            margin-bottom: 6px;
            font-size: 10px;
            font-weight: 800;
            color: #ffd58c;
            letter-spacing: 0.04em;
            text-transform: uppercase;
        }
        .vol-segments-overlay .vs-meta {
            color: rgba(255,255,255,0.42);
            font-weight: 600;
        }
        .vol-segments-overlay .vs-empty {
            color: rgba(255,255,255,0.38);
            font-size: 10px;
            line-height: 1.5;
        }
        .vol-segments-overlay .vs-stale {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            padding: 1px 5px;
            border-radius: 999px;
            border: 1px solid rgba(255,159,0,0.24);
            background: rgba(255,159,0,0.12);
            color: #ffb066;
            font-size: 9px;
            font-weight: 800;
            letter-spacing: 0.08em;
        }
        .vol-segments-overlay table {
            width: 100%;
            border-collapse: collapse;
            font-family: 'JetBrains Mono', 'Fira Code', monospace;
            font-size: 10px;
        }
        .vol-segments-overlay th,
        .vol-segments-overlay td {
            padding: 2px 6px;
            white-space: nowrap;
            text-align: right;
        }
        .vol-segments-overlay th {
            color: rgba(255,255,255,0.5);
            font-weight: 500;
            border-bottom: 1px solid rgba(255,255,255,0.06);
        }
        .vol-segments-overlay td {
            color: rgba(255,255,255,0.86);
        }
        .vol-segments-overlay th:first-child,
        .vol-segments-overlay td:first-child {
            text-align: left;
        }
        .vol-segments-overlay td:first-child {
            color: rgba(255,255,255,0.62);
        }
        .vol-segments-overlay tr.vs-active {
            background: rgba(255, 196, 92, 0.08);
        }
        .vol-segments-overlay tr.vs-active td:first-child {
            color: #ffd58c;
        }
        .vs-live-dot {
            display: inline-block;
            width: 5px;
            height: 5px;
            border-radius: 50%;
            background: #ffd700;
            margin-right: 4px;
            vertical-align: middle;
            animation: vs-blink 1.2s ease-in-out infinite;
        }
        @keyframes vs-blink {
            0%, 100% { opacity: 1; }
            50% { opacity: 0.25; }
        }

        /* 阿祖日内交易信号 rollup + hover 浮层（spec azu-intraday-signal-gammaframe-2026-09-09 §6.3/§6.2）*/
        .azu-signal-rollup {
            position: absolute;
            top: 116px;
            left: 8px;
            z-index: 20;
            max-width: min(560px, calc(100% - 16px));
            padding: 5px 9px;
            border: 1px solid rgba(50, 205, 118, 0.18);
            border-radius: 7px;
            background: rgba(10, 12, 16, 0.86);
            backdrop-filter: blur(5px);
            box-shadow: 0 8px 22px rgba(0,0,0,0.3);
            font-size: 10.5px;
            line-height: 1.5;
            color: rgba(255,255,255,0.8);
            pointer-events: auto;
            cursor: help;
        }
        .azu-signal-rollup .azu-rollup-title {
            font-weight: 700;
            color: rgba(182, 240, 207, 0.95);
        }
        .azu-signal-rollup .azu-rollup-stats { color: rgba(255,255,255,0.64); }
        .azu-signal-rollup .azu-rollup-note {
            margin-top: 1px;
            font-size: 9.5px;
            color: rgba(255,255,255,0.4);
        }
        .azu-signal-tooltip {
            position: absolute;
            z-index: 40;
            padding: 6px 9px;
            border: 1px solid rgba(255,255,255,0.1);
            border-radius: 6px;
            background: rgba(8, 10, 14, 0.95);
            box-shadow: 0 10px 24px rgba(0,0,0,0.35);
            font-size: 11px;
            line-height: 1.55;
            color: rgba(255,255,255,0.88);
            pointer-events: none;
            white-space: nowrap;
        }

        .radar-capsule {
            display: grid; grid-template-columns: 75px 1fr 65px; align-items: center;
            padding: 10px 14px; margin-bottom: 8px; border-radius: 10px;
            background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.05);
            transition: all 0.3s;
        }
        .right-stack { display: flex; flex-direction: column; gap: 12px; height: 100%; min-height: 0; }
        .subcard {
            border: 1px solid rgba(255,255,255,0.06); border-radius: 12px;
            background: linear-gradient(180deg, rgba(255,255,255,0.03), rgba(255,255,255,0.015));
            padding: 12px; display: flex; flex-direction: column; min-height: 0;
        }
        .subcard-label {
            font-size: 10px; font-weight: 900; color: #636e7b; letter-spacing: 1.4px;
            text-transform: uppercase; margin-bottom: 10px; border-bottom: 1px solid #161b22; padding-bottom: 4px;
        }
        .vix-shell { gap: 14px; }
        .vix-headline { display:flex; align-items:center; justify-content:space-between; gap:10px; }
        .vix-title-wrap { display:flex; align-items:center; gap:8px; min-width:0; }
        .vix-topline { display:flex; align-items:flex-start; justify-content:space-between; gap:14px; margin-bottom: 2px; }
        .vix-primary { flex: 1; min-width: 0; }
        .vix-side { width: 92px; display:flex; flex-direction:column; align-items:stretch; gap:10px; }
        .vix-price { font-family:'JetBrains Mono', monospace; font-size: 28px; font-weight: 900; color:#fff; line-height:1; }
        .vix-change { font-size: 11px; font-weight: 800; }
        .vix-regime {
            display:inline-flex; align-items:center; justify-content:center; width: 100%; min-height: 42px; padding: 5px 10px; border-radius: 999px;
            font-size: 10px; font-weight: 900; letter-spacing: .12em; text-transform: uppercase; border: 1px solid transparent;
        }
        .vix-feed-tag {
            display:inline-flex; align-items:center; justify-content:center; width: 100%; padding: 4px 8px; border-radius: 999px;
            font-size: 9px; font-weight: 900; letter-spacing: .12em; text-transform: uppercase;
            color:#a3aab5; background:rgba(163,170,181,0.10); border:1px solid rgba(163,170,181,0.18);
        }
        .vix-regime-teal { color:#80ffe0; background:rgba(0,255,195,0.10); border-color: rgba(0,255,195,0.22); }
        .vix-regime-amber { color:#ffd166; background:rgba(255,209,102,0.10); border-color: rgba(255,209,102,0.22); }
        .vix-regime-orange { color:#ffb066; background:rgba(255,159,0,0.12); border-color: rgba(255,159,0,0.24); }
        .vix-regime-magenta { color:#ff7ab6; background:rgba(255,0,85,0.12); border-color: rgba(255,0,85,0.26); }
        .vix-grid { display:grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap:8px; }
        .vix-metric {
            border: 1px solid rgba(255,255,255,0.06); border-radius: 10px; background: rgba(255,255,255,0.025);
            padding: 9px 10px;
        }
        .vix-metric-label { font-size: 10px; color:#7d8590; font-weight:900; letter-spacing:.08em; text-transform:uppercase; }
        .vix-metric-value { margin-top:4px; font-family:'JetBrains Mono', monospace; font-size:14px; font-weight:900; }
        .vix-up { color:#ff8b9d; }
        .vix-down { color:#7bf7d6; }
        .vix-flat { color:#a3aab5; }
        .vix-summary {
            border-top: 1px solid rgba(255,255,255,0.06); padding-top: 10px;
            font-size: 11px; line-height: 1.6; color:#c9d1d9;
        }
        .vix-empty {
            border: 1px dashed rgba(255,255,255,0.10); border-radius: 10px; padding: 12px;
            font-size: 11px; line-height: 1.6; color:#8b949e;
        }
        .market-breadth-shell { gap: 12px; }
        .mobile-radar-card { display: none; }
        .breadth-market-row,
        .breadth-thermometer-row {
            border: 1px solid rgba(255,255,255,0.06);
            border-radius: 10px;
            background: rgba(255,255,255,0.025);
            padding: 10px 12px;
        }
        .breadth-row-head {
            font-size: 10px;
            color: #8b949e;
            font-weight: 900;
            letter-spacing: 0.14em;
            text-transform: uppercase;
            margin-bottom: 8px;
        }
        .breadth-row-head-inline {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 12px;
        }
        .breadth-chip-grid {
            display: grid;
            grid-template-columns: repeat(3, minmax(0, 1fr));
            gap: 8px;
        }
        .breadth-chip {
            display: flex;
            flex-direction: column;
            gap: 4px;
            min-width: 0;
            border-radius: 8px;
            background: rgba(255,255,255,0.03);
            padding: 9px 10px;
        }
        .breadth-chip-value {
            font-family: 'JetBrains Mono', monospace;
            font-size: 16px;
            font-weight: 900;
            color: #fff;
        }
        .breadth-chip-label {
            font-size: 10px;
            line-height: 1.35;
            color: #8b949e;
            font-weight: 800;
        }
        .breadth-thermometer-main {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 12px;
        }
        .breadth-thermometer-value {
            font-family: 'JetBrains Mono', monospace;
            font-size: 28px;
            line-height: 1;
            font-weight: 900;
            color: #7bf7d6;
        }
        .breadth-thermometer-formula {
            margin-top: 6px;
            font-family: 'JetBrains Mono', monospace;
            font-size: 11px;
            color: #a3aab5;
        }
        .breadth-status-note {
            margin-top: 6px;
            font-size: 10px;
            line-height: 1.4;
            color: #8b949e;
        }
        .breadth-status-note.stale { color: #ffd166; }
        .breadth-status-note.stale-hard { color: #ff8b9d; }
        .breadth-history-row {
            display: block;
            width: 100%;
            text-align: left;
            cursor: pointer;
            transition: border-color 0.2s ease, background 0.2s ease, transform 0.2s ease;
        }
        .breadth-history-row:hover {
            border-color: rgba(123,247,214,0.24);
            background: rgba(123,247,214,0.04);
            transform: translateY(-1px);
        }
        .breadth-history-open {
            font-size: 10px;
            color: #7bf7d6;
            font-weight: 900;
            letter-spacing: 0.08em;
        }
        .breadth-history-link {
            appearance: none;
            border: 0;
            background: transparent;
            padding: 0;
            cursor: pointer;
            font-size: 10px;
            color: #7bf7d6;
            font-weight: 900;
            letter-spacing: 0.08em;
            text-transform: none;
        }
        .breadth-history-link:hover { color: #a8ffea; }
        .breadth-history-preview-wrap {
            display: flex;
            flex-direction: column;
            gap: 8px;
        }
        .breadth-history-preview-svg {
            display: block;
            width: 100%;
            height: 40px;
        }
        .breadth-history-midline {
            stroke: rgba(255,255,255,0.12);
            stroke-dasharray: 3 3;
        }
        .breadth-history-preview-meta {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 12px;
            font-size: 10px;
            color: #8b949e;
            letter-spacing: 0.08em;
            text-transform: uppercase;
        }
        .breadth-history-preview-meta strong {
            font-family: 'JetBrains Mono', monospace;
            font-size: 12px;
            color: #fff;
        }
        .breadth-history-empty {
            min-height: 40px;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 11px;
            color: #8b949e;
        }
        .breadth-footnote {
            font-size: 10px;
            line-height: 1.5;
            color: #8b949e;
            margin-top: 2px;
        }
        .breadth-history-modal-backdrop { z-index: 380; }
        .breadth-history-modal-panel {
            width: min(1080px, calc(100vw - 32px));
            max-height: min(86vh, 860px);
            border-color: rgba(123,247,214,0.18);
        }
        .breadth-history-modal-status {
            min-height: 18px;
            margin-top: 10px;
            font-size: 11px;
            color: #8b949e;
        }
        .breadth-history-modal-status.loading { color: #ffd166; }
        .breadth-history-modal-status.error { color: #ff8b9d; }
        .breadth-history-modal-status.ready { color: #7bf7d6; }
        .breadth-history-chart {
            margin-top: 12px;
            width: 100%;
            height: min(62vh, 560px);
            border-radius: 12px;
            background: rgba(255,255,255,0.02);
        }
        @media (max-width: 640px) {
            .market-breadth-shell { gap: 8px; }
            .breadth-market-row,
            .breadth-thermometer-row { padding: 8px 10px; }
            .breadth-row-head { font-size: 9px; margin-bottom: 6px; }
            .breadth-chip-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
            .breadth-chip { padding: 8px; }
            .breadth-chip-value { font-size: 13px; }
            .breadth-chip-label { font-size: 9px; line-height: 1.25; }
            .breadth-thermometer-main { align-items: flex-end; }
            .breadth-thermometer-value { font-size: 24px; }
            .breadth-thermometer-formula { margin-top: 4px; font-size: 10px; }
            .breadth-status-note { margin-top: 4px; font-size: 9px; }
            .breadth-history-link { font-size: 9px; }
            .breadth-history-modal-panel { width: calc(100vw - 18px); }
            .breadth-history-chart { height: min(58vh, 460px); }
        }
        .capsule-strike { font-family: 'JetBrains Mono'; font-weight: 800; font-size: 14px; color: #fff; }
        .capsule-ratio { font-family: 'JetBrains Mono'; font-weight: 900; font-size: 13px; text-align: right; }
        .radar-section-head {
            display: flex;
            align-items: center;
            flex-wrap: wrap;
            gap: 6px;
            margin: 8px 0 6px;
        }
        .radar-section-title {
            font-size: 10px;
            font-weight: 900;
            letter-spacing: 2px;
            text-transform: uppercase;
            line-height: 1;
        }
        .mine-dominance-pill {
            display: inline-flex;
            align-items: center;
            gap: 8px;
            min-height: 22px;
            padding: 0 8px;
            border-radius: 999px;
            border: 1px solid transparent;
            font-family: 'JetBrains Mono', monospace;
            backdrop-filter: blur(10px);
        }
        .mine-dominance-pill-label {
            font-size: 9px;
            font-weight: 900;
            letter-spacing: 0.06em;
            text-transform: uppercase;
            line-height: 1;
            white-space: nowrap;
        }
        .mine-dominance-pill-values {
            font-size: 8px;
            font-weight: 800;
            letter-spacing: 0.02em;
            line-height: 1;
            white-space: nowrap;
            opacity: 0.9;
        }
        .mine-dominance-pill.side-call {
            color: #84ffe2;
            background: linear-gradient(180deg, rgba(0, 255, 195, 0.16), rgba(0, 255, 195, 0.06));
            border-color: rgba(0, 255, 195, 0.26);
            box-shadow: 0 0 16px rgba(0, 255, 195, 0.08);
        }
        .mine-dominance-pill.side-put {
            color: #ff8fb1;
            background: linear-gradient(180deg, rgba(255, 0, 85, 0.16), rgba(255, 0, 85, 0.06));
            border-color: rgba(255, 0, 85, 0.26);
            box-shadow: 0 0 16px rgba(255, 0, 85, 0.08);
        }
        .mine-dominance-pill.side-balance {
            color: #c1c9d3;
            background: linear-gradient(180deg, rgba(139, 148, 158, 0.18), rgba(139, 148, 158, 0.08));
            border-color: rgba(139, 148, 158, 0.24);
        }
        .radar-sort-bar {
            display: flex; gap: 4px; padding: 4px 0 6px;
        }
        .radar-sort-btn {
            flex: 1; padding: 3px 0; border: 1px solid rgba(255,255,255,0.08); border-radius: 6px;
            background: transparent; color: #636e7b; font-size: 9px; font-weight: 800;
            letter-spacing: 0.04em; cursor: pointer; transition: all 0.2s;
            font-family: 'JetBrains Mono', monospace; text-align: center;
        }
        .radar-sort-btn:hover { color: #8b949e; border-color: rgba(255,255,255,0.14); }
        .radar-sort-btn.active {
            color: #e6edf3; background: rgba(255,255,255,0.06); border-color: rgba(255,255,255,0.18);
        }
        .radar-filter-bar {
            display: flex; gap: 6px; padding: 4px 0 6px;
            border-top: 1px solid rgba(255,255,255,0.06); margin-top: 2px;
        }
        .radar-filter-bar--hidden { display: none; }
        .radar-filter-btn {
            flex: 1; padding: 3px 0; border-radius: 6px;
            border: 1px solid rgba(255,255,255,0.08);
            background: transparent; color: #636e7b; font-size: 9px; font-weight: 800;
            letter-spacing: 0.04em; cursor: pointer; transition: all 0.2s;
            font-family: 'JetBrains Mono', monospace; text-align: center;
        }
        .radar-filter-btn:hover:not(.active) { color: #8b949e; border-color: rgba(255,255,255,0.14); }
        .radar-filter-btn[data-filter="killed"].active {
            color: #9CA3AF; background: rgba(107,114,128,0.15); border-color: rgba(107,114,128,0.35);
        }
        .radar-filter-btn[data-filter="survived"].active {
            color: #22C55E; background: rgba(34,197,94,0.12); border-color: rgba(34,197,94,0.3);
        }
        .radar-title-actions {
            display: inline-flex;
            align-items: center;
            gap: 6px;
            flex: 0 0 auto;
        }
        .mine-winrate-open-btn {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            height: 20px;
            padding: 0 7px;
            border-radius: 5px;
            border: 1px solid rgba(34,197,94,0.35);
            background: rgba(34,197,94,0.10);
            color: #22C55E;
            font-size: 10px;
            font-weight: 800;
            line-height: 1;
            cursor: pointer;
        }
        .mine-winrate-open-btn:hover {
            border-color: rgba(34,197,94,0.55);
            background: rgba(34,197,94,0.16);
        }
        .mine-winrate-open-btn.is-hidden { display: none; }
        .lv-high { border-color: rgba(255, 0, 85, 0.4); background: rgba(255, 0, 85, 0.08); }
        .lv-high .capsule-ratio { color: #ff0055; }
        .lv-mid { border-color: rgba(210, 153, 34, 0.4); background: rgba(210, 153, 34, 0.08); }
        .lv-mid .capsule-ratio { color: #f2ff00; }
        .lv-normal .capsule-ratio { color: #58a6ff; }

        .subcard-label .overlay-inline-info.overlay-mines,
        .subcard-label .info-chip.overlay-inline-info.overlay-mines {
            border-color: rgba(255, 159, 0, 0.28);
            background: rgba(255, 159, 0, 0.08);
            color: rgba(255, 159, 0, 0.92);
        }
        .subcard-label .overlay-inline-info.overlay-mines:hover,
        .subcard-label .info-chip.overlay-inline-info.overlay-mines:hover {
            border-color: rgba(255, 159, 0, 0.34);
            background: rgba(255, 159, 0, 0.16);
            color: #fff;
            box-shadow: 0 0 8px rgba(255, 159, 0, 0.12);
        }
        .subcard-label .overlay-inline-info.overlay-mines:focus,
        .subcard-label .overlay-inline-info.overlay-mines:focus-visible,
        .subcard-label .info-chip.overlay-inline-info.overlay-mines:focus,
        .subcard-label .info-chip.overlay-inline-info.overlay-mines:focus-visible {
            outline: none;
            border-color: rgba(255, 159, 0, 0.34);
            background: rgba(255, 159, 0, 0.16);
            color: #fff;
            box-shadow: 0 0 0 2px rgba(8, 10, 15, 0.92), 0 0 0 3px rgba(255, 159, 0, 0.18);
        }
        .modal-backdrop {
            position: fixed; inset: 0; z-index: 360;
            display: none; align-items: center; justify-content: center;
            background: rgba(0, 0, 0, 0.68); backdrop-filter: blur(6px);
        }
        .modal-backdrop.open { display: flex; }
        .modal-panel {
            width: min(720px, calc(100vw - 32px)); max-height: min(80vh, 720px);
            overflow-y: auto; border-radius: 14px; border: 1px solid rgba(255, 159, 0, 0.22);
            background: linear-gradient(180deg, rgba(15,17,21,0.98), rgba(5,6,8,0.98));
            box-shadow: 0 20px 60px rgba(0,0,0,0.55); padding: 18px 18px 16px;
        }
        .modal-title { font-size: 14px; font-weight: 900; letter-spacing: 0.12em; text-transform: uppercase; color: var(--warn); }
        .modal-close {
            border: 1px solid rgba(255,255,255,0.08); background: #0b0d11; color: #e0e6ed;
            width: 28px; height: 28px; border-radius: 8px; cursor: pointer; font-size: 16px;
        }
        .modal-metric-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin: 14px 0; }
        .modal-metric {
            border: 1px solid rgba(255,255,255,0.06); border-radius: 10px; background: rgba(255,255,255,0.03);
            padding: 10px 12px;
        }
        .modal-metric-label { font-size: 10px; color: #636e7b; font-weight: 900; letter-spacing: 0.12em; text-transform: uppercase; }
        .modal-metric-value { margin-top: 4px; font-family: 'JetBrains Mono', monospace; font-size: 17px; font-weight: 900; color: #fff; }
        .modal-section {
            margin-top: 12px; border: 1px solid rgba(255,255,255,0.06); border-radius: 10px;
            background: rgba(255,255,255,0.02); padding: 12px;
        }
        .modal-section-title { font-size: 10px; color: #8b949e; font-weight: 900; letter-spacing: 0.16em; text-transform: uppercase; margin-bottom: 8px; }
        .modal-copy { font-size: 12px; line-height: 1.7; color: #c9d1d9; }
        .modal-copy strong { color: #fff; }
        .modal-copy .warn { color: var(--warn); font-weight: 800; }

        .smc-sub-toggles { display: flex; flex-direction: column; gap: 8px; }
        .smc-sub-toggle {
            display: flex; align-items: center; gap: 8px;
            font-size: 12px; color: #c9d1d9; cursor: pointer;
            user-select: none;
        }
        .smc-sub-toggle input[type="checkbox"] {
            width: 14px; height: 14px; accent-color: #2157f3;
            cursor: pointer; flex-shrink: 0;
        }
        .smc-sub-toggle span { line-height: 1.4; display: flex; flex-direction: column; gap: 2px; }
        .smc-sub-toggle-desc {
            font-size: 11px; color: #6e7a8a; line-height: 1.45;
            font-weight: 400;
        }

        .delta-badge {
            font-size: 9px; padding: 1px 5px; border-radius: 4px; margin-left: 6px;
            font-family: 'JetBrains Mono', monospace; font-weight: 600; display: inline-block;
        }
        .delta-up { background: rgba(0,255,195,0.12); color: #00ffc3; }
        .delta-down { background: rgba(255,0,85,0.12); color: #ff0055; }
        .dex-badge {
            display: inline-flex; align-items: center; justify-content: center;
            margin-left: 6px; padding: 1px 6px; border-radius: 999px;
            font-size: 9px; line-height: 1.4; font-family: 'JetBrains Mono', monospace; font-weight: 800;
            border: 1px solid transparent; letter-spacing: 0.02em; transition: 0.22s ease;
        }
        .dex-bull { color: #00ffc3; background: rgba(0,255,195,0.12); border-color: rgba(0,255,195,0.22); }
        .dex-bear { color: #ff8b9d; background: rgba(255,0,85,0.12); border-color: rgba(255,0,85,0.22); }
        .dex-neutral { color: #a3aab5; background: rgba(163,170,181,0.1); border-color: rgba(163,170,181,0.18); }
        .dex-note {
            margin-top: 4px; font-size: 10px; line-height: 1.38; color: #7d8590; transition: 0.22s ease;
        }
        .dex-note strong { color: #c9d1d9; font-weight: 800; }
        .dex-emphasis-low { opacity: 0.42; filter: saturate(0.8); }
        .dex-emphasis-high { opacity: 1; box-shadow: 0 0 14px rgba(255,255,255,0.08); }
        .dex-note-low { color: #58606c; }
        .dex-note-high { color: #aeb7c2; }
        .level-row {
            padding: 5px 0; border-bottom: 1px solid rgba(255,255,255,0.05);
        }
        .level-row:last-child { border-bottom: 0; }
        .level-row-head {
            display: flex; align-items: flex-start; justify-content: space-between; gap: 10px;
        }
        .level-row-meta { flex: 1; min-width: 0; }
        .level-row-label {
            display: flex; align-items: center; gap: 6px; line-height: 1.15;
        }
        .level-inline-info {
            width: 14px; height: 14px; flex: 0 0 auto;
            border-radius: 999px; border: 1px solid rgba(255, 159, 0, 0.28);
            background: rgba(255, 159, 0, 0.08); color: rgba(255, 159, 0, 0.92);
            cursor: pointer; display: inline-flex; align-items: center; justify-content: center;
            font-family: 'JetBrains Mono', monospace; font-size: 9px; font-weight: 900; transition: 0.2s;
        }
        .level-inline-info:hover {
            background: rgba(255, 159, 0, 0.16);
            box-shadow: 0 0 12px rgba(255, 159, 0, 0.18);
        }
        .level-row-value {
            display: inline-flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 4px;
            text-align: right;
        }
        .level-row-body {
            margin-top: 4px;
        }
        .level-detail-toggle {
            width: 18px; height: 18px; border-radius: 6px; border: 1px solid rgba(255,255,255,0.08);
            background: rgba(255,255,255,0.03); color: #8b949e; cursor: pointer;
            display: inline-flex; align-items: center; justify-content: center;
            font-family: 'JetBrains Mono', monospace; font-size: 10px; font-weight: 900;
            transition: 0.2s;
        }
        .level-detail-toggle:hover { color: #fff; border-color: rgba(0,191,255,0.35); background: rgba(0,191,255,0.08); }
        .level-detail-toggle.open { color: #7dd9ff; border-color: rgba(0,191,255,0.32); background: rgba(0,191,255,0.12); }
        .level-detail {
            margin-top: 8px; padding: 9px 10px; border-radius: 10px;
            border: 1px solid rgba(255,255,255,0.06); background: rgba(255,255,255,0.025);
        }
        .level-detail-grid {
            display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-top: 8px;
        }
        .level-detail-metric {
            border: 1px solid rgba(255,255,255,0.05); border-radius: 8px; background: rgba(255,255,255,0.02);
            padding: 8px 9px;
        }
        .level-detail-label {
            font-size: 9px; color: #7d8590; font-weight: 900; letter-spacing: 0.1em; text-transform: uppercase;
        }
        .level-detail-value {
            margin-top: 4px; font-family: 'JetBrains Mono', monospace; font-size: 12px; font-weight: 900; color: #e6edf3;
        }
        .level-detail-note {
            margin-top: 8px; font-size: 10px; line-height: 1.6; color: #9aa4b2;
        }
        .dex-tooltip {
            position: absolute; z-index: 70; min-width: 240px; max-width: 320px;
            pointer-events: none; display: none; padding: 12px 13px;
            border-radius: 12px; border: 1px solid rgba(0,191,255,0.22);
            background: linear-gradient(180deg, rgba(12,15,20,0.96), rgba(5,7,10,0.96));
            box-shadow: 0 18px 40px rgba(0,0,0,0.42);
            backdrop-filter: blur(12px);
        }
        .dex-tooltip-title {
            display: flex; align-items: center; justify-content: space-between; gap: 10px;
            font-size: 11px; font-weight: 900; letter-spacing: 0.08em; text-transform: uppercase; color: #7dd9ff;
        }
        .dex-tooltip-price {
            margin-top: 4px; font-family: 'JetBrains Mono', monospace; font-size: 18px; font-weight: 900; color: #fff;
        }
        .dex-tooltip-grid {
            display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-top: 10px;
        }
        .dex-tooltip-metric {
            border: 1px solid rgba(255,255,255,0.05); border-radius: 8px; background: rgba(255,255,255,0.03);
            padding: 8px 9px;
        }
        .dex-tooltip-metric-label {
            font-size: 9px; color: #7d8590; font-weight: 900; letter-spacing: 0.1em; text-transform: uppercase;
        }
        .dex-tooltip-metric-value {
            margin-top: 4px; font-family: 'JetBrains Mono', monospace; font-size: 12px; font-weight: 900; color: #e6edf3;
        }
        .dex-tooltip-note {
            margin-top: 9px; font-size: 10px; line-height: 1.6; color: #aeb7c2;
        }
        .order-flow-tooltip {
            position: absolute; z-index: 36; display: none;
            min-width: 176px; max-width: 240px; padding: 8px 10px;
            border: 1px solid rgba(255,255,255,0.12); border-radius: 8px;
            background: rgba(4, 8, 14, 0.92); color: #dfe7f3;
            box-shadow: 0 16px 32px rgba(0,0,0,0.34);
            pointer-events: none; font-size: 11px; line-height: 1.45;
        }
        .order-flow-tooltip-title {
            display: flex; align-items: center; justify-content: space-between; gap: 10px;
            margin-bottom: 6px; color: #fff; font-weight: 800;
        }
        .order-flow-tooltip-chip {
            padding: 1px 6px; border-radius: 999px; font-size: 10px; font-weight: 800;
            background: rgba(255,255,255,0.08); color: #b9c8d8;
        }
        .order-flow-tooltip-grid {
            display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px 10px;
        }
        .order-flow-tooltip-label { color: #7d8b9c; }
        .order-flow-tooltip-value { color: #f6fbff; font-weight: 800; text-align: right; }
        .modal-color-samples {
            display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px;
        }
        .modal-color-sample {
            display: inline-flex; align-items: center; gap: 6px;
            padding: 5px 8px; border-radius: 8px;
            background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.08);
            color: #d8e0ea; font-size: 11px; font-weight: 800;
        }
        .modal-color-dot {
            width: 10px; height: 10px; border-radius: 999px;
            background: var(--dot-color); box-shadow: 0 0 12px var(--dot-color);
        }
        .mine-new-badge {
            font-size: 8px; padding: 0 4px; border-radius: 3px; margin-left: 4px;
            background: rgba(0,255,195,0.15); color: #00ffc3; font-weight: 800;
        }
        .mine-gone { opacity: 0.35; }
        .mine-gone .capsule-strike { text-decoration: line-through; }

        /* Mine kill prediction state classes */
        .radar-capsule.mine-pred-kill { border-color: rgba(239,68,68,0.5); background: rgba(239,68,68,0.08); }
        .radar-capsule.mine-pred-safe { border-color: rgba(34,197,94,0.4); background: rgba(34,197,94,0.06); }
        .radar-capsule.mine-pred-contested { border-color: rgba(245,158,11,0.4); background: rgba(245,158,11,0.06); }
        .radar-capsule.mine-killed { border-color: rgba(107,114,128,0.3); background: rgba(107,114,128,0.05); opacity: 0.65; }
        .radar-capsule.mine-survived { border-color: rgba(34,197,94,0.4); background: rgba(34,197,94,0.06); }
        .mine-kill-badge {
            display: inline-block; font-size: 8px; padding: 0 4px; border-radius: 3px;
            margin-left: 5px; font-weight: 800; font-family: 'JetBrains Mono', monospace;
            vertical-align: middle;
        }
        .mine-kill-badge--kill { background: rgba(239,68,68,0.18); color: #EF4444; }
        .mine-kill-badge--safe { background: rgba(34,197,94,0.18); color: #22C55E; }
        .mine-kill-badge--contested { background: rgba(245,158,11,0.18); color: #F59E0B; }
        .mine-kill-badge--killed { background: rgba(107,114,128,0.18); color: #9CA3AF; }
        .mine-kill-badge--survived { background: rgba(34,197,94,0.18); color: #22C55E; }
        .mine-kill-badge--no-pred { background: rgba(107,114,128,0.1); color: #636e7b; cursor: help; }
        .mine-kill-gex-tag {
            display: inline-block; font-size: 7px; padding: 0 3px; border-radius: 2px;
            margin-left: 4px; font-weight: 900; font-family: 'JetBrains Mono', monospace;
            background: rgba(251,191,36,0.2); color: #FBBF24;
            vertical-align: middle; cursor: help; letter-spacing: 0.02em;
        }

        /* Mine-kill countdown bar */
        .mine-kill-countdown {
            margin-bottom: 8px; padding: 7px 10px;
            background: rgba(239,68,68,0.06); border: 1px solid rgba(239,68,68,0.2);
            border-radius: 6px;
        }
        .mine-kill-countdown--closed {
            background: rgba(34,197,94,0.06); border-color: rgba(34,197,94,0.2);
        }
        .mine-kill-countdown-top {
            display: flex; justify-content: space-between; align-items: center;
            margin-bottom: 5px;
        }
        .mine-kill-window-title {
            font-size: 10px; font-weight: 700; color: #EF4444;
            font-family: 'JetBrains Mono', monospace;
        }
        .mine-kill-timer {
            font-size: 12px; font-weight: 900; color: #EF4444;
            font-family: 'JetBrains Mono', monospace;
        }
        .mine-kill-progress-wrap {
            height: 4px; background: rgba(255,255,255,0.08); border-radius: 2px; overflow: hidden;
        }
        .mine-kill-progress-bar {
            height: 100%; border-radius: 2px; transition: width 0.5s ease, background 0.3s ease;
            background: #22C55E;
        }
        .mine-kill-broadcast-label {
            font-size: 9px; color: #636e7b; margin-top: 4px; font-family: 'JetBrains Mono', monospace;
        }
        .mine-kill-closed-badge {
            font-size: 10px; color: #22C55E; font-weight: 700; font-family: 'JetBrains Mono', monospace;
        }

        /* Mine-kill win rate panel */
        .mine-kill-winrate {
            margin-top: 10px; padding: 8px 10px;
            background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.08);
            border-radius: 6px;
        }
        .mine-wr-title {
            font-size: 9px; color: #636e7b; font-weight: 700;
            font-family: 'JetBrains Mono', monospace; margin-bottom: 6px;
        }
        .mine-wr-date {
            font-size: 10px; color: #8b949e; font-weight: 700;
            font-family: 'JetBrains Mono', monospace; margin-bottom: 8px;
        }
        .mine-wr-row {
            display: flex; align-items: center; gap: 6px; margin-bottom: 4px;
        }
        .mine-wr-row--avg { margin-top: 6px; padding-top: 5px; border-top: 1px solid rgba(255,255,255,0.06); }
        .mine-wr-label {
            width: 68px; font-size: 9px; color: #8b949e; font-family: 'JetBrains Mono', monospace;
            flex-shrink: 0;
        }
        .mine-wr-bar { flex: 1 1 auto; }
        .mine-wr-bar-track {
            height: 4px; background: rgba(255,255,255,0.08); border-radius: 2px; overflow: hidden;
        }
        .mine-wr-bar-fill { height: 100%; border-radius: 2px; }
        .mine-wr-val {
            width: 60px; font-size: 10px; font-weight: 700; color: #e4e8ef;
            font-family: 'JetBrains Mono', monospace; text-align: right; flex-shrink: 0;
        }
        .mine-wr-avg-val { font-size: 11px; }
        .mine-wr-count { font-size: 8px; color: #636e7b; font-weight: 400; }
        .mine-wr-note {
            margin-top: 10px; padding-top: 8px; border-top: 1px solid rgba(255,255,255,0.06);
            font-size: 9px; color: #636e7b; line-height: 1.5;
            font-family: 'JetBrains Mono', monospace;
        }
        .mine-wr-history-section { margin-top: 12px; }
        .mine-wr-history-chart {
            width: 100%;
            height: 260px;
            min-height: 260px;
            margin-top: 8px;
        }
        .mine-wr-history-status,
        .mine-wr-history-empty {
            min-height: 18px;
            margin-top: 6px;
            color: #636e7b;
            font-size: 10px;
            font-family: 'JetBrains Mono', monospace;
        }
        .premarket-banner {
            background: rgba(242,255,0,0.08); border: 1px solid rgba(242,255,0,0.18);
            color: #f2ff00; text-align: center; padding: 4px 12px;
            font-size: 11px; font-family: 'JetBrains Mono', monospace; font-weight: 700;
            display: none; grid-column: 1 / -1; grid-row: 2;
        }
        .phase-badge {
            font-size: 9px; padding: 2px 8px; border-radius: 4px;
            font-family: 'JetBrains Mono', monospace; font-weight: 800;
            letter-spacing: 0.08em; text-transform: uppercase;
        }
        .date-picker-group {
            display: inline-flex;
            align-items: center;
            gap: 2px;
            background: #000;
            padding: 3px;
            border-radius: 8px;
            border: 1px solid #1c1f26;
            flex: 0 0 auto;
        }
        .date-nav-btn {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            width: 28px;
            height: 28px;
            border: none;
            background: transparent;
            color: #636e7b;
            border-radius: 6px;
            cursor: pointer;
            transition: 0.2s;
        }
        .date-nav-btn:hover { background: #1c1f26; color: #fff; }
        .date-nav-btn:disabled { opacity: 0.3; cursor: default; }
        .date-nav-btn:disabled:hover { background: transparent; color: #636e7b; }
        .date-display-btn {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            padding: 4px 10px;
            height: 28px;
            border: none;
            background: transparent;
            color: #e0e6ed;
            font-family: 'JetBrains Mono', monospace;
            font-size: 11px;
            font-weight: 700;
            border-radius: 6px;
            cursor: pointer;
            transition: 0.2s;
            white-space: nowrap;
            letter-spacing: 0;
        }
        .date-display-btn:hover { background: #1c1f26; }
        .date-display-btn.is-today { color: #4ade80; }
        .date-calendar-backdrop {
            position: fixed;
            inset: 0;
            background: rgba(0,0,0,0.6);
            z-index: 9998;
        }
        .date-calendar-panel {
            position: fixed;
            top: 50%;
            left: 50%;
            width: min(360px, calc(100vw - 24px));
            background: #0b0d11;
            border: 1px solid rgba(255,255,255,0.08);
            border-radius: 8px;
            z-index: 9999;
            padding: 12px;
            transform: translate(-50%, -50%);
            box-shadow: 0 24px 80px rgba(0,0,0,0.5);
        }
        .date-calendar-header {
            display: grid;
            grid-template-columns: 36px 1fr 36px 36px;
            gap: 6px;
            align-items: center;
            padding: 0 0 10px;
            font-family: 'JetBrains Mono', monospace;
            font-size: 12px;
            font-weight: 700;
            color: #e0e6ed;
            border-bottom: 1px solid rgba(255,255,255,0.06);
        }
        .date-calendar-header button {
            height: 34px;
            background: #111820;
            border: none;
            color: #c9d1d9;
            font-size: 16px;
            font-weight: 700;
            border-radius: 6px;
            cursor: pointer;
            padding: 0 8px;
        }
        .date-calendar-header button:hover {
            background: #1c2834;
            color: #fff;
        }
        #dash-date-calendar-title,
        #replay-date-calendar-title {
            text-align: center;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }
        .date-calendar-weekdays,
        .date-calendar-grid {
            display: grid;
            grid-template-columns: repeat(7, minmax(0, 1fr));
            gap: 4px;
        }
        .date-calendar-weekdays {
            padding: 10px 0 6px;
            color: #7d8590;
            font-family: 'JetBrains Mono', monospace;
            font-size: 10px;
            font-weight: 800;
            text-align: center;
        }
        .date-calendar-day {
            height: 36px;
            background: none;
            border: 1px solid transparent;
            border-radius: 6px;
            color: #404852;
            font-family: 'JetBrains Mono', monospace;
            font-size: 12px;
            font-weight: 800;
            cursor: default;
        }
        .date-calendar-day.is-in-month {
            color: #687280;
        }
        .date-calendar-day.is-available {
            color: #e6edf3;
            background: rgba(88,166,255,0.12);
            border-color: rgba(88,166,255,0.22);
            cursor: pointer;
        }
        .date-calendar-day.is-available:hover {
            background: rgba(88,166,255,0.24);
            border-color: rgba(88,166,255,0.38);
        }
        .date-calendar-day.selected {
            color: #04130d;
            background: #4ade80;
            border-color: rgba(74,222,128,0.8);
        }
        .date-calendar-day.is-today:not(.selected) {
            color: #4ade80;
            border-color: rgba(74,222,128,0.35);
        }
        .date-calendar-day.is-early-close {
            position: relative;
        }
        .date-calendar-day.is-early-close::after {
            content: "";
            position: absolute;
            right: 4px;
            top: 4px;
            width: 5px;
            height: 5px;
            border-radius: 50%;
            background: #ffb13d;
            box-shadow: 0 0 4px rgba(255,177,61,0.8);
        }
        .date-calendar-day.is-closed {
            color: #5a4444;
            background: rgba(239,68,68,0.08);
            border-color: rgba(239,68,68,0.22);
            text-decoration: line-through;
            cursor: not-allowed;
        }
        .date-calendar-day.is-closed::after {
            content: "";
            position: absolute;
            right: 4px;
            top: 4px;
            width: 5px;
            height: 5px;
            border-radius: 50%;
            background: #ef4444;
        }
        .date-calendar-legend {
            display: flex;
            flex-wrap: wrap;
            gap: 10px;
            padding: 8px 12px;
            font-size: 10px;
            color: #8b949e;
            font-family: 'JetBrains Mono', monospace;
        }
        .date-calendar-legend-item {
            display: inline-flex;
            align-items: center;
            gap: 4px;
        }
        .date-calendar-legend-dot {
            width: 6px;
            height: 6px;
            border-radius: 50%;
            display: inline-block;
        }
        .date-calendar-legend-dot.is-early { background: #ffb13d; }
        .date-calendar-legend-dot.is-closed { background: #ef4444; }
        .chart-hud {
            position: absolute; top: 14px; left: 14px; z-index: 55;
            display: flex; flex-direction: column; align-items: flex-start; gap: 8px;
            pointer-events: none;
            max-width: calc(100% - 28px);
        }
        .chart-hud > * { pointer-events: auto; }
        .chart-hud-controls { position: relative; display: inline-block; }
        .heatmap-status-tag {
            align-items: center;
            gap: 6px;
            max-width: min(320px, calc(100vw - 48px));
            padding: 5px 8px;
            border: 1px solid rgba(242,255,0,0.22);
            border-radius: 8px;
            background: rgba(8, 10, 14, 0.82);
            color: #f2ff00;
            font-size: 10px;
            font-weight: 800;
            line-height: 1.25;
            backdrop-filter: blur(8px);
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }
        .heatmap-status-tag.stale-hard {
            border-color: rgba(255,0,85,0.26);
            color: #ff668e;
        }
        .heatmap-status-dot {
            width: 6px;
            height: 6px;
            border-radius: 50%;
            background: currentColor;
            flex: 0 0 auto;
        }
        .kline-info-panel {
            display: inline-flex; flex-direction: column; gap: 4px;
            padding: 6px 10px;
            border: 1px solid rgba(255,255,255,0.08);
            border-radius: 10px;
            background: rgba(8, 10, 14, 0.85);
            backdrop-filter: blur(10px);
            font-family: 'JetBrains Mono', monospace;
            color: #d0d7de;
            line-height: 1.3;
            min-width: 260px;
        }
        .kline-info-meta {
            display: flex; align-items: center; gap: 10px;
            font-size: 9px; letter-spacing: 0.04em;
        }
        .kline-info-time { color: #9aa4b2; font-weight: 700; }
        .kline-info-chg { font-weight: 900; letter-spacing: 0.02em; }
        .kline-info-chg.up { color: #00ffc3; }
        .kline-info-chg.down { color: #ff0055; }
        .kline-info-chg.flat { color: #636e7b; }
        .kline-info-ohlc {
            display: flex; flex-wrap: wrap; gap: 4px 10px;
            font-size: 10px;
        }
        .kline-info-ohlc span { display: inline-flex; align-items: baseline; gap: 3px; }
        .kline-info-ohlc em {
            color: #636e7b; font-style: normal; font-weight: 700; font-size: 9px;
        }
        .kline-info-ohlc b {
            color: #e6edf3; font-weight: 800;
            font-variant-numeric: tabular-nums;
        }
        .chart-overlay-controls {
            position: absolute; top: calc(100% + 6px); left: 0; z-index: 56;
            display: none;
            flex-direction: column; align-items: stretch; gap: 6px;
            padding: 10px;
            border: 1px solid rgba(255,255,255,0.08);
            border-radius: 12px;
            background: rgba(8, 10, 14, 0.96);
            backdrop-filter: blur(14px);
            box-shadow: 0 18px 40px rgba(0,0,0,0.45);
            max-height: min(60vh, 420px);
            overflow-y: auto;
            overscroll-behavior: contain;
            min-width: 180px;
        }
        .chart-overlay-controls.is-open { display: flex; }
        .overlay-toggle {
            display: inline-flex; align-items: center; gap: 10px;
            padding: 5px 8px 5px 10px; border-radius: 999px;
            border: 1px solid rgba(255,255,255,0.08);
            background: rgba(8, 10, 14, 0.88); color: #9aa4b2; cursor: pointer;
            backdrop-filter: blur(10px);
            font-family: 'JetBrains Mono', monospace; font-size: 9px; font-weight: 800;
            letter-spacing: 0.08em; text-transform: uppercase; transition: 0.2s;
            min-width: 126px; justify-content: space-between;
            --overlay-accent-rgb: 255, 181, 71;
            --overlay-accent-start: #ff8a00;
            --overlay-accent-end: #ffc45c;
            --overlay-text-active: #ffd58c;
        }
        .overlay-toggle:hover { border-color: rgba(var(--overlay-accent-rgb), 0.28); color: #d0d7de; }
        .overlay-toggle.active {
            color: var(--overlay-text-active);
            border-color: rgba(var(--overlay-accent-rgb), 0.32);
            box-shadow: inset 0 0 0 1px rgba(var(--overlay-accent-rgb), 0.08), 0 0 22px rgba(var(--overlay-accent-rgb), 0.12);
        }
        .overlay-toggle-text { line-height: 1; }
        .overlay-switch-track {
            position: relative; width: 30px; height: 16px; border-radius: 999px;
            background: rgba(78, 85, 96, 0.55); border: 1px solid rgba(255,255,255,0.08);
            transition: 0.2s;
            flex: 0 0 auto;
        }
        .overlay-switch-thumb {
            position: absolute; top: 1px; left: 1px; width: 12px; height: 12px; border-radius: 999px;
            background: linear-gradient(180deg, #c7d0da, #8d98a7);
            box-shadow: 0 1px 6px rgba(0,0,0,0.35); transition: 0.2s;
        }
        .overlay-toggle.active .overlay-switch-track {
            background: linear-gradient(90deg, var(--overlay-accent-start), var(--overlay-accent-end));
            border-color: rgba(var(--overlay-accent-rgb), 0.18);
        }
        .overlay-toggle.active .overlay-switch-thumb {
            transform: translateX(14px);
            background: linear-gradient(180deg, #fff0c4, var(--overlay-accent-end));
            box-shadow: 0 0 14px rgba(var(--overlay-accent-rgb), 0.28);
        }
        .overlay-toggle.overlay-heatmap {
            --overlay-accent-rgb: 255, 181, 71;
            --overlay-accent-start: #ff8a00;
            --overlay-accent-end: #ffc45c;
            --overlay-text-active: #ffd58c;
        }
        .overlay-toggle.overlay-levels {
            --overlay-accent-rgb: 0, 255, 195;
            --overlay-accent-start: #008e73;
            --overlay-accent-end: #00ffc3;
            --overlay-text-active: #9effe9;
        }
        .overlay-toggle.overlay-leveltrace {
            --overlay-accent-rgb: 140, 160, 255;
            --overlay-accent-start: #3b3f8a;
            --overlay-accent-end: #8fa3ff;
            --overlay-text-active: #c4ccff;
        }
        .overlay-toggle.overlay-strikebar {
            --overlay-accent-rgb: 120, 200, 255;
            --overlay-accent-start: #1e4f7a;
            --overlay-accent-end: #78c8ff;
            --overlay-text-active: #b6e3ff;
        }
        .overlay-toggle.overlay-mines {
            --overlay-accent-rgb: 255, 0, 111;
            --overlay-accent-start: #6c0031;
            --overlay-accent-end: #ff4f9a;
            --overlay-text-active: #ffb4d2;
        }
        .overlay-toggle.overlay-turnover {
            --overlay-accent-rgb: 92, 170, 255;
            --overlay-accent-start: #0a3f7a;
            --overlay-accent-end: #53c7ff;
            --overlay-text-active: #b6e8ff;
        }
        .overlay-toggle.overlay-tradeflow {
            --overlay-accent-rgb: 42, 255, 198;
            --overlay-accent-start: #007a5e;
            --overlay-accent-end: #2affc6;
            --overlay-text-active: #cafff1;
        }
        .overlay-toggle.overlay-bookflow {
            --overlay-accent-rgb: 203, 213, 225;
            --overlay-accent-start: #475569;
            --overlay-accent-end: #e2e8f0;
            --overlay-text-active: #f8fafc;
        }
        .overlay-toggle.overlay-dexprobe {
            --overlay-accent-rgb: 214, 226, 241;
            --overlay-accent-start: #5c6775;
            --overlay-accent-end: #dfe8f3;
            --overlay-text-active: #f2f7fc;
        }
        .overlay-toggle.overlay-spymapping {
            --overlay-accent-rgb: 242, 255, 0;
            --overlay-accent-start: #6c7000;
            --overlay-accent-end: #f2ff00;
            --overlay-text-active: #fcffb3;
        }
        .overlay-toggle.overlay-spyvolume {
            --overlay-accent-rgb: 122, 162, 255;
            --overlay-accent-start: #23458f;
            --overlay-accent-end: #7aa2ff;
            --overlay-text-active: #c9d8ff;
        }
        .overlay-toggle.overlay-smc {
            --overlay-accent-rgb: 33, 87, 243;
            --overlay-accent-start: #0d3399;
            --overlay-accent-end: #2157f3;
            --overlay-text-active: #b3ccff;
        }
        .overlay-toggle.overlay-htf {
            --overlay-accent-rgb: 8, 153, 129;
            --overlay-accent-start: #07594d;
            --overlay-accent-end: #089981;
            --overlay-text-active: #a6f4dc;
        }
        .overlay-toggle.overlay-azusignal {
            --overlay-accent-rgb: 50, 205, 118;
            --overlay-accent-start: #14663a;
            --overlay-accent-end: #32cd76;
            --overlay-text-active: #b6f0cf;
        }
        .overlay-toggle.overlay-volseg {
            --overlay-accent-rgb: 255, 196, 92;
            --overlay-accent-start: #7a4b00;
            --overlay-accent-end: #ffc45c;
            --overlay-text-active: #ffe1ab;
        }
        .overlay-toggle.overlay-volprofile {
            --overlay-accent-rgb: 167, 100, 255;
            --overlay-accent-start: #3d0a80;
            --overlay-accent-end: #a764ff;
            --overlay-text-active: #dfc4ff;
        }
        .overlay-toggle.overlay-deltaflow {
            --overlay-accent-rgb: 0, 212, 255;
            --overlay-accent-start: #003850;
            --overlay-accent-end: #00d4ff;
            --overlay-text-active: #a8f0ff;
        }
        .overlay-toggle.overlay-ivheat {
            --overlay-accent-rgb: 255, 88, 44;
            --overlay-accent-start: #7a1a00;
            --overlay-accent-end: #ff5c2c;
            --overlay-text-active: #ffcab8;
        }
        .overlay-toggle.overlay-econ {
            --overlay-accent-rgb: 245, 158, 11;
            --overlay-accent-start: #7c4a03;
            --overlay-accent-end: #f59e0b;
            --overlay-text-active: #ffd68a;
        }
        .overlay-inline-info {
            width: 14px; height: 14px; flex: 0 0 auto;
            border-radius: 999px; border: 1px solid rgba(var(--overlay-accent-rgb), 0.22);
            background: rgba(var(--overlay-accent-rgb), 0.1);
            color: rgba(var(--overlay-accent-rgb), 0.9); cursor: pointer;
            display: inline-flex; align-items: center; justify-content: center;
            font-family: 'JetBrains Mono', monospace; font-size: 9px; font-weight: 900;
            transition: 0.2s;
            padding: 0;
            margin: 0;
            appearance: none;
            -webkit-appearance: none;
            outline: none;
            box-shadow: inset 0 0 0 1px rgba(255,255,255,0.02);
        }
        .info-chip.overlay-inline-info {
            width: 14px;
            height: 14px;
            padding: 0;
            border-color: rgba(var(--overlay-accent-rgb), 0.22);
            background: rgba(var(--overlay-accent-rgb), 0.1);
            color: rgba(var(--overlay-accent-rgb), 0.9);
            font-size: 9px;
        }
        .overlay-inline-info.overlay-heatmap {
            --overlay-accent-rgb: 255, 181, 71;
        }
        .overlay-inline-info.overlay-levels {
            --overlay-accent-rgb: 0, 255, 195;
        }
        .overlay-inline-info.overlay-mines {
            --overlay-accent-rgb: 255, 0, 111;
        }
        .overlay-inline-info.overlay-turnover {
            --overlay-accent-rgb: 92, 170, 255;
        }
        .overlay-inline-info.overlay-tradeflow {
            --overlay-accent-rgb: 42, 255, 198;
        }
        .overlay-inline-info.overlay-bookflow {
            --overlay-accent-rgb: 203, 213, 225;
        }
        .overlay-inline-info.overlay-dexprobe {
            --overlay-accent-rgb: 214, 226, 241;
        }
        .overlay-inline-info.overlay-spymapping {
            --overlay-accent-rgb: 242, 255, 0;
        }
        .overlay-inline-info.overlay-spyvolume {
            --overlay-accent-rgb: 122, 162, 255;
        }
        .overlay-inline-info.overlay-smc {
            --overlay-accent-rgb: 33, 87, 243;
        }
        .overlay-inline-info.overlay-htf {
            --overlay-accent-rgb: 8, 153, 129;
        }
        .overlay-inline-info.overlay-volseg {
            --overlay-accent-rgb: 255, 196, 92;
        }
        .overlay-inline-info.overlay-volprofile {
            --overlay-accent-rgb: 167, 100, 255;
        }
        .overlay-inline-info.overlay-econ {
            --overlay-accent-rgb: 245, 158, 11;
        }
        .overlay-inline-info:hover {
            color: #fff; border-color: rgba(var(--overlay-accent-rgb), 0.34);
            background: rgba(var(--overlay-accent-rgb), 0.16);
            box-shadow: 0 0 8px rgba(var(--overlay-accent-rgb), 0.1);
        }
        .info-chip.overlay-inline-info:hover {
            color: #fff;
            border-color: rgba(var(--overlay-accent-rgb), 0.34);
            background: rgba(var(--overlay-accent-rgb), 0.16);
            box-shadow: 0 0 8px rgba(var(--overlay-accent-rgb), 0.1);
        }
        .overlay-inline-info:focus,
        .overlay-inline-info:focus-visible,
        .info-chip.overlay-inline-info:focus,
        .info-chip.overlay-inline-info:focus-visible {
            outline: none;
            color: #fff;
            border-color: rgba(var(--overlay-accent-rgb), 0.34);
            background: rgba(var(--overlay-accent-rgb), 0.16);
            box-shadow: 0 0 0 2px rgba(8, 10, 15, 0.92), 0 0 0 3px rgba(var(--overlay-accent-rgb), 0.18);
        }
        .overlay-inline-info.overlay-heatmap:hover {
            border-color: rgba(255, 181, 71, 0.3); color: #ffd58c;
            box-shadow: 0 0 8px rgba(255, 181, 71, 0.12);
        }
        .overlay-inline-info.overlay-levels:hover {
            border-color: rgba(0, 255, 195, 0.3); color: #9effe9;
            box-shadow: 0 0 8px rgba(0, 255, 195, 0.12);
        }
        .overlay-inline-info.overlay-mines:hover {
            border-color: rgba(255, 0, 111, 0.3); color: #ffb4d2;
            box-shadow: 0 0 8px rgba(255, 0, 111, 0.12);
        }
        .overlay-inline-info.overlay-turnover:hover {
            border-color: rgba(92, 170, 255, 0.3); color: #b6e8ff;
            box-shadow: 0 0 8px rgba(92, 170, 255, 0.12);
        }
        .overlay-inline-info.overlay-tradeflow:hover {
            border-color: rgba(42, 255, 198, 0.34); color: #cafff1;
            box-shadow: 0 0 8px rgba(42, 255, 198, 0.12);
        }
        .overlay-inline-info.overlay-bookflow:hover {
            border-color: rgba(203, 213, 225, 0.34); color: #f8fafc;
            box-shadow: 0 0 8px rgba(203, 213, 225, 0.12);
        }
        .overlay-inline-info.overlay-dexprobe:hover {
            border-color: rgba(214, 226, 241, 0.34); color: #f2f7fc;
            box-shadow: 0 0 8px rgba(214, 226, 241, 0.1);
        }
        .overlay-inline-info.overlay-volseg:hover {
            border-color: rgba(255, 196, 92, 0.36); color: #ffe1ab;
            box-shadow: 0 0 8px rgba(255, 196, 92, 0.12);
        }
        .overlay-sub-group {
            display: flex;
            flex-wrap: wrap;
            gap: 6px;
            align-items: center;
            padding: 2px 0 4px 4px;
            max-width: 180px;
        }
        .overlay-sub-label {
            font-size: 10px;
            color: rgba(255,255,255,0.42);
            margin-right: 2px;
        }
        .overlay-modal-sublayers {
            display: flex;
            flex-wrap: wrap;
            gap: 6px;
            margin-top: 8px;
        }
        .overlay-modal-sublayers .overlay-toggle-small {
            cursor: pointer;
        }
        .overlay-toggle-small {
            min-width: 28px;
            height: 24px;
            padding: 0 8px;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            border-radius: 999px;
            border: 1px solid rgba(255,255,255,0.08);
            background: rgba(8, 10, 14, 0.74);
            color: #8b949e;
            font-family: 'JetBrains Mono', monospace;
            font-size: 10px;
            font-weight: 800;
            cursor: pointer;
            transition: 0.18s;
        }
        .overlay-toggle-small:hover,
        .overlay-toggle-small.active {
            color: #ffd68a;
            border-color: rgba(245, 158, 11, 0.36);
            background: rgba(245, 158, 11, 0.13);
            box-shadow: 0 0 10px rgba(245, 158, 11, 0.08);
        }
        .econ-calendar-canvas {
            position: absolute;
            inset: 0;
            z-index: 2;
            pointer-events: none;
        }
        .econ-table-overlay {
            position: absolute;
            right: 8px;
            bottom: 40px;
            z-index: 24;
            min-width: 420px;
            max-width: min(520px, calc(100% - 16px));
            max-height: min(240px, calc(100% - 84px));
            overflow: auto;
            pointer-events: auto;
            background: rgba(12, 15, 22, 0.93);
            border: 1px solid rgba(255,255,255,0.09);
            border-radius: 6px;
            box-shadow: 0 16px 36px rgba(0,0,0,0.38);
            font-family: 'JetBrains Mono', monospace;
            font-size: 11px;
            scrollbar-width: thin;
        }
        .econ-table {
            width: 100%;
            border-collapse: collapse;
        }
        .econ-table th {
            position: sticky;
            top: 0;
            z-index: 1;
            padding: 5px 7px;
            background: rgba(30, 58, 110, 0.96);
            color: #dee1e9;
            text-align: left;
            font-size: 10px;
            font-weight: 900;
            text-transform: uppercase;
            letter-spacing: 0.04em;
            white-space: nowrap;
        }
        .econ-table td {
            padding: 4px 7px;
            border-bottom: 1px solid rgba(255,255,255,0.055);
            color: #d1d4dc;
            vertical-align: top;
        }
        .econ-table td:nth-child(3) {
            min-width: 150px;
            white-space: normal;
        }
        .econ-row-past td { color: #636e7b; }
        .econ-row-future td { color: #d1d4dc; }
        .econ-row-active td { background: rgba(245, 158, 11, 0.11); }
        .econ-row-empty td {
            padding: 12px;
            text-align: center;
            color: #636e7b;
        }
        .econ-impact-High { color: #f23645 !important; }
        .econ-impact-Medium { color: #ff9f00 !important; }
        .econ-impact-Low { color: #f0e630 !important; }
        .econ-impact-Holiday { color: #8b949e !important; }
        .econ-actual-value {
            color: #26a69a !important;
            font-weight: 900;
        }
        @media (max-width: 767px) {
            .econ-table-overlay {
                left: 6px;
                right: 6px;
                bottom: 34px;
                min-width: 0;
                max-width: none;
                font-size: 10px;
            }
            .econ-table th,
            .econ-table td {
                padding: 4px 5px;
            }
        }
        .cross-confirm-card {
            margin-top: 10px;
            padding: 7px 8px;
            border-radius: 12px;
            border: 1px solid rgba(108, 152, 255, 0.18);
            background: linear-gradient(180deg, rgba(7, 10, 18, 0.96), rgba(6, 9, 15, 0.88));
            box-shadow: inset 0 0 0 1px rgba(255,255,255,0.02), 0 12px 26px rgba(0,0,0,0.18);
            flex: 0 0 auto;
        }
        .cross-confirm-mini {
            display: flex;
            flex-direction: column;
            gap: 5px;
        }
        .cross-confirm-mini-head {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 8px;
        }
        .cross-confirm-mini-meta {
            display: flex;
            align-items: center;
            gap: 6px;
            flex-wrap: wrap;
            font-size: 9px;
            color: #8b949e;
        }
        .cross-confirm-mini-note {
            font-size: 10px;
            line-height: 1.45;
            color: #c4ccd7;
        }
        .cross-confirm-mini-badges {
            display: flex;
            flex-wrap: wrap;
            gap: 5px;
        }
        .cross-confirm-mini-badge {
            display: inline-flex;
            align-items: center;
            gap: 4px;
            padding: 2px 5px;
            border-radius: 999px;
            font-size: 8px;
            font-weight: 900;
            letter-spacing: 0.08em;
            text-transform: uppercase;
            color: #aeb7c2;
            background: rgba(255,255,255,0.04);
            border: 1px solid rgba(255,255,255,0.06);
        }
        .cross-confirm-mini-summary {
            display: flex;
            align-items: center;
            flex-wrap: wrap;
            gap: 6px;
            font-size: 10px;
            line-height: 1.4;
            color: #c4ccd7;
        }
        .cross-confirm-mini-summary .headline {
            color: #ffffff;
            font-weight: 900;
        }
        .cross-confirm-mini-summary .sep {
            color: #5f6a78;
        }
        .put-call-card {
            margin-top: 0;
            padding: 8px 9px;
            border-radius: 12px;
            border: 1px solid rgba(255,255,255,0.06);
            background: linear-gradient(180deg, rgba(11, 13, 19, 0.96), rgba(8, 11, 17, 0.9));
            box-shadow: inset 0 0 0 1px rgba(255,255,255,0.02), 0 12px 24px rgba(0,0,0,0.16);
            overflow-y: auto;
        }
        .put-call-header {
            display: flex;
            align-items: flex-start;
            justify-content: space-between;
            flex-wrap: wrap;
            gap: 8px 10px;
        }
        .put-call-header-meta {
            display: flex;
            align-items: center;
            flex-wrap: wrap;
            gap: 6px;
            min-width: 0;
            flex: 1 1 220px;
        }
        .put-call-headline {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            gap: 6px;
            padding: 4px 10px;
            border-radius: 999px;
            font-size: 9px;
            line-height: 1.2;
            font-family: 'JetBrains Mono', monospace;
            font-weight: 900;
            letter-spacing: 0.06em;
            text-transform: uppercase;
            flex: 0 0 auto;
            max-width: 100%;
            text-align: center;
        }
        .put-call-headline.bias-put {
            color: #ffb4d2;
            background: rgba(255, 0, 85, 0.14);
            border: 1px solid rgba(255, 0, 85, 0.22);
        }
        .put-call-headline.bias-call {
            color: #9effe9;
            background: rgba(0, 255, 195, 0.14);
            border: 1px solid rgba(0, 255, 195, 0.2);
        }
        .put-call-headline.bias-neutral {
            color: #c5ced8;
            background: rgba(163, 170, 181, 0.14);
            border: 1px solid rgba(163, 170, 181, 0.18);
        }
        .put-call-mode-tag {
            display: inline-flex;
            align-items: center;
            padding: 1px 6px;
            border-radius: 7px;
            font-size: 8px;
            line-height: 1.4;
            font-family: 'JetBrains Mono', monospace;
            font-weight: 900;
            letter-spacing: 0.08em;
            text-transform: uppercase;
            color: #7d8590;
            background: rgba(255,255,255,0.03);
            border: 1px solid rgba(255,255,255,0.06);
        }
        .put-call-balance {
            position: relative;
            margin-top: 6px;
            height: 8px;
            border-radius: 999px;
            overflow: hidden;
            background: rgba(255,255,255,0.05);
            border: 1px solid rgba(255,255,255,0.05);
        }
        .put-call-balance-fill {
            position: absolute;
            inset: 0;
            background: linear-gradient(90deg, rgba(255,0,85,0.92), rgba(255,159,0,0.78), rgba(0,255,195,0.9));
        }
        .put-call-balance-marker {
            position: absolute;
            top: -2px;
            bottom: -2px;
            width: 2px;
            border-radius: 999px;
            background: rgba(255,255,255,0.92);
            box-shadow: 0 0 10px rgba(255,255,255,0.28);
        }
        .put-call-scale {
            display: flex;
            justify-content: space-between;
            margin-top: 3px;
            font-size: 8px;
            font-family: 'JetBrains Mono', monospace;
            color: #636e7b;
        }
        .put-call-grid {
            display: grid;
            grid-template-columns: repeat(2, minmax(0, 1fr));
            gap: 5px;
            margin-top: 6px;
        }
        .put-call-metric {
            padding: 6px 7px;
            border-radius: 9px;
            border: 1px solid rgba(255,255,255,0.05);
            background: rgba(255,255,255,0.02);
        }
        .put-call-metric-label {
            font-size: 8px;
            color: #7d8590;
            letter-spacing: 0.08em;
            text-transform: uppercase;
            font-weight: 900;
        }
        .put-call-metric-value {
            margin-top: 2px;
            font-family: 'JetBrains Mono', monospace;
            font-size: 13px;
            font-weight: 900;
            color: #fff;
        }
        .put-call-note {
            margin-top: 6px;
            font-size: 9px;
            line-height: 1.4;
            color: #9aa4b2;
        }
        .put-call-note strong {
            color: #fff;
        }
        .put-call-delta-row {
            display: grid;
            grid-template-columns: repeat(2, minmax(0, 1fr));
            gap: 5px;
            margin-top: 6px;
        }
        .put-call-delta-pill {
            padding: 6px 7px;
            border-radius: 9px;
            border: 1px solid rgba(255,255,255,0.05);
            background: rgba(255,255,255,0.02);
        }
        .put-call-delta-label {
            font-size: 8px;
            color: #7d8590;
            letter-spacing: 0.08em;
            text-transform: uppercase;
            font-weight: 900;
        }
        .put-call-delta-value {
            margin-top: 2px;
            font-family: 'JetBrains Mono', monospace;
            font-size: 13px;
            font-weight: 900;
            color: #fff;
        }
        .put-call-sparkline-wrap {
            margin-top: 6px;
            padding: 6px 7px;
            border-radius: 9px;
            border: 1px solid rgba(255,255,255,0.05);
            background: rgba(255,255,255,0.02);
        }
        .put-call-sparkline-head {
            display: flex;
            justify-content: space-between;
            align-items: center;
            gap: 8px;
            margin-bottom: 4px;
            font-size: 8px;
            color: #7d8590;
            letter-spacing: 0.08em;
            text-transform: uppercase;
            font-weight: 900;
        }
        .put-call-sparkline-svg {
            width: 100%;
            height: 34px;
            display: block;
        }
        .left-briefing-card {
            display: flex;
            flex-direction: column;
            gap: 10px;
            min-height: 0;
            overflow: hidden;
        }
        .left-briefing-card.no-cross-confirm {
            gap: 8px;
        }
        .left-briefing-card.has-cross-confirm {
            gap: 10px;
        }
        .left-stack-card {
            overflow: hidden;
        }
        .left-stack-card .core-levels-shell {
            flex: 1 1 0;
            min-height: 80px;
            overflow-y: scroll;
            display: flex;
            flex-direction: column;
            scrollbar-width: thin;
            scrollbar-color: rgba(255,255,255,0.18) transparent;
        }
        .left-stack-card .core-levels-shell::-webkit-scrollbar {
            width: 4px;
        }
        .left-stack-card .core-levels-shell::-webkit-scrollbar-track {
            background: transparent;
        }
        .left-stack-card .core-levels-shell::-webkit-scrollbar-thumb {
            background: rgba(255,255,255,0.18);
            border-radius: 2px;
        }
        .left-stack-card .core-levels-shell::-webkit-scrollbar-thumb:hover {
            background: rgba(255,255,255,0.35);
        }
        html[data-layout-mode="desktop"] #radar,
        html[data-layout-mode="desktop"] #radar-mobile {
            scrollbar-width: thin;
            scrollbar-color: rgba(255,255,255,0.18) transparent;
        }
        html[data-layout-mode="desktop"] #radar::-webkit-scrollbar,
        html[data-layout-mode="desktop"] #radar-mobile::-webkit-scrollbar { width: 4px; }
        html[data-layout-mode="desktop"] #radar::-webkit-scrollbar-track,
        html[data-layout-mode="desktop"] #radar-mobile::-webkit-scrollbar-track { background: transparent; }
        html[data-layout-mode="desktop"] #radar::-webkit-scrollbar-thumb,
        html[data-layout-mode="desktop"] #radar-mobile::-webkit-scrollbar-thumb {
            background: rgba(255,255,255,0.18);
            border-radius: 2px;
        }
        html[data-layout-mode="desktop"] #radar::-webkit-scrollbar-thumb:hover,
        html[data-layout-mode="desktop"] #radar-mobile::-webkit-scrollbar-thumb:hover {
            background: rgba(255,255,255,0.35);
        }
        html[data-layout-mode="desktop"] #sys-log {
            scrollbar-width: thin;
            scrollbar-color: rgba(255,255,255,0.18) transparent;
        }
        html[data-layout-mode="desktop"] #sys-log::-webkit-scrollbar { width: 4px; }
        html[data-layout-mode="desktop"] #sys-log::-webkit-scrollbar-track { background: transparent; }
        html[data-layout-mode="desktop"] #sys-log::-webkit-scrollbar-thumb {
            background: rgba(255,255,255,0.18);
            border-radius: 2px;
        }
        html[data-layout-mode="desktop"] #sys-log::-webkit-scrollbar-thumb:hover {
            background: rgba(255,255,255,0.35);
        }
        .left-stack-card .vix-shell,
        .left-stack-card .market-breadth-shell {
            flex: 0 0 auto;
        }
        html[data-layout-mode="desktop"] .left-stack-card .core-levels-shell,
        html[data-layout-mode="desktop"] .left-stack-card .vix-shell,
        html[data-layout-mode="desktop"] .left-stack-card .market-breadth-shell {
            position: relative;
        }
        .left-stack-card .panel-measure {
            position: absolute;
            visibility: hidden;
            pointer-events: none;
            width: 100%;
            top: 0;
            left: 0;
            z-index: -1;
        }
        html[data-layout-mode="desktop"] .left-stack-card .panel-detail-content {
            overflow: hidden;
            transition: max-height 0.15s ease, opacity 0.15s ease;
            max-height: 999px;
            opacity: 1;
            flex-shrink: 0;
        }
        html[data-layout-mode="desktop"] .left-stack-card .core-levels-shell > * {
            flex-shrink: 0;
        }
        html[data-layout-mode="desktop"] .left-stack-card .panel-compact .panel-detail-content {
            max-height: 0;
            opacity: 0;
            pointer-events: none;
        }
        html[data-layout-mode="desktop"] .left-stack-card .panel-summary-row {
            display: none;
            align-items: center;
            gap: 6px;
            flex-shrink: 0;
            min-height: 28px;
            font-size: 12px;
        }
        html[data-layout-mode="desktop"] .left-stack-card .panel-compact .panel-summary-row {
            display: flex;
        }
        .left-stack-card .panel-compact-price {
            font-weight: 700;
            font-size: 14px;
            color: var(--text-primary, #e4e8ef);
        }
        .left-stack-card .panel-compact-label {
            font-size: 11px;
            color: var(--text-muted, #636e7b);
        }
        .option-price-rail-shell {
            position: absolute;
            left: 0;
            top: 0;
            bottom: 0;
            z-index: 42;
            width: 116px;
            border-right: 1px solid rgba(255,255,255,0.08);
            background: linear-gradient(90deg, rgba(5,6,8,0.94), rgba(5,6,8,0.62));
            pointer-events: auto;
            display: flex;
            flex-direction: column;
            padding: 130px 6px 54px;
            box-sizing: border-box;
        }
        .replay-page .chart-card #tv-canvas {
            margin-left: 116px;
        }
        body[data-paper-trade-mode="combo"] .option-price-rail-shell {
            display: none !important;
        }
        body[data-paper-trade-mode="combo"] .replay-page .chart-card #tv-canvas {
            margin-left: 0 !important;
        }
        .option-price-rail-head {
            display: flex;
            flex-direction: column;
            gap: 6px;
            margin-bottom: 8px;
        }
        .option-rail-expiry-label {
            text-align: center;
            color: #f0f6fc;
            font-family: 'JetBrains Mono', monospace;
            font-size: 10px;
            font-weight: 900;
            letter-spacing: 0.5px;
            padding: 4px 0;
            border: 1px solid rgba(255,255,255,0.08);
            border-radius: 6px;
            background: rgba(255,255,255,0.03);
        }
        .option-price-rail-cp-row {
            display: grid;
            grid-template-columns: 1fr 34px 1fr;
            gap: 3px;
            align-items: center;
            text-align: center;
            color: #8b949e;
            font-family: 'JetBrains Mono', monospace;
            font-size: 9px;
            font-weight: 900;
        }
        .option-rail-expiry {
            min-width: 0;
            height: 24px;
            border: 1px solid rgba(255,255,255,0.08);
            border-radius: 7px;
            background: #050608;
            color: #f0f6fc;
            font-family: 'JetBrains Mono', monospace;
            font-size: 9px;
            font-weight: 800;
            padding: 0 4px;
        }
        .option-price-rail {
            flex: 1 1 auto;
            min-height: 0;
            overflow-y: auto;
            display: flex;
            flex-direction: column;
            gap: 5px;
            scrollbar-width: none;
        }
        .option-price-rail::-webkit-scrollbar {
            display: none;
        }
        .option-rail-row {
            display: grid;
            grid-template-columns: 1fr 34px 1fr;
            align-items: center;
            gap: 3px;
            min-height: 32px;
            border: 1px solid rgba(255,255,255,0.06);
            border-radius: 7px;
            background: rgba(255,255,255,0.025);
            color: #c9d1d9;
            padding: 3px;
        }
        .option-rail-price {
            border: 0;
            background: transparent;
            font-family: 'JetBrains Mono', monospace;
            font-size: 9px;
            font-weight: 900;
            overflow: hidden;
            white-space: nowrap;
            text-overflow: ellipsis;
            cursor: pointer;
        }
        .option-rail-price.call {
            color: #00ffc3;
            text-align: left;
        }
        .option-rail-price.put {
            color: #ff5d8f;
            text-align: right;
        }
        .option-rail-strike {
            color: #f0f6fc;
            font-family: 'JetBrains Mono', monospace;
            font-size: 10px;
            font-weight: 900;
            text-align: center;
        }
        .option-rail-price.active {
            color: #050608;
            border-radius: 5px;
            background: currentColor;
        }
        .option-rail-price.active.call { color: #00ffc3; }
        .option-rail-price.active.put { color: #ff5d8f; }
        .option-rail-price.active span {
            color: #050608;
        }
        .paper-panel-open {
            position: absolute;
            left: 6px;
            bottom: 8px;
            z-index: 43;
            width: 104px;
            height: 38px;
            border-radius: 8px;
            border: 1px solid rgba(0,255,195,0.42);
            background:
                linear-gradient(180deg, rgba(0,255,195,0.16), rgba(0,255,195,0.06)),
                rgba(8, 18, 17, 0.94);
            color: #f0f6fc;
            font-family: 'JetBrains Mono', monospace;
            font-size: 11px;
            font-weight: 900;
            padding: 0 8px;
            box-shadow: inset 0 1px 0 rgba(255,255,255,0.08), 0 12px 26px rgba(0,0,0,0.34), 0 0 18px rgba(0,255,195,0.08);
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            cursor: pointer;
            transition: transform 0.12s ease, border-color 0.12s ease, background 0.12s ease, box-shadow 0.12s ease;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            gap: 6px;
        }
        .paper-panel-open::before {
            content: "";
            width: 12px;
            height: 12px;
            border: 2px solid currentColor;
            border-radius: 3px;
            box-shadow: inset 0 -3px 0 rgba(255,255,255,0.28);
            opacity: 0.9;
            flex: 0 0 auto;
        }
        .paper-panel-open:hover {
            border-color: rgba(0,255,195,0.72);
            background:
                linear-gradient(180deg, rgba(0,255,195,0.24), rgba(0,255,195,0.09)),
                rgba(8, 22, 20, 0.98);
            box-shadow: inset 0 1px 0 rgba(255,255,255,0.12), 0 14px 30px rgba(0,0,0,0.38), 0 0 22px rgba(0,255,195,0.16);
            transform: translateY(-1px);
        }
        .paper-panel-open:active {
            transform: translateY(1px);
            box-shadow: inset 0 1px 2px rgba(0,0,0,0.35), 0 8px 18px rgba(0,0,0,0.28);
        }
        .paper-panel-open:focus-visible {
            outline: 2px solid rgba(0,255,195,0.7);
            outline-offset: 2px;
        }
        .paper-options-card {
            position: fixed;
            right: 18px;
            top: 96px;
            z-index: 220;
            width: min(480px, calc(100vw - 36px));
            height: 430px;
            gap: 10px;
            box-shadow: 0 22px 70px rgba(0,0,0,0.42);
            resize: both;
            min-width: 360px;
            min-height: 320px;
        }

        .paper-options-card.is-combo-mode {
            width: min(1180px, calc(100vw - 36px));
            height: min(760px, calc(100vh - 116px));
            min-width: min(760px, calc(100vw - 36px));
            min-height: 520px;
        }
        .paper-options-card.is-hidden {
            display: none;
        }
        .paper-options-head {
            display: flex;
            align-items: flex-start;
            justify-content: space-between;
            gap: 10px;
            border-bottom: 1px solid #161b22;
            padding-bottom: 8px;
            cursor: move;
        }
        .paper-options-title {
            color: #f0f6fc;
            font-family: 'JetBrains Mono', monospace;
            font-size: 12px;
            font-weight: 900;
            letter-spacing: 0.08em;
            text-transform: uppercase;
        }
        .paper-options-meta,
        .paper-options-source {
            color: #636e7b;
            font-family: 'JetBrains Mono', monospace;
            font-size: 9px;
            font-weight: 800;
        }
        .paper-options-source {
            padding: 4px 7px;
            border: 1px solid rgba(255,255,255,0.08);
            border-radius: 7px;
            color: #9aa4b2;
            background: rgba(255,255,255,0.03);
        }
        .paper-panel-actions {
            display: flex;
            align-items: center;
            gap: 6px;
        }
        .paper-panel-close {
            width: 26px;
            height: 26px;
            border: 1px solid rgba(255,255,255,0.08);
            border-radius: 7px;
            background: rgba(255,255,255,0.03);
            color: #9aa4b2;
            font-size: 16px;
            font-weight: 900;
            line-height: 1;
        }
        .paper-options-body {
            display: flex;
            min-height: 0;
            flex: 1 1 auto;
        }

        .paper-options-card.is-combo-mode .paper-options-body {
            overflow: hidden;
        }
        .paper-order-shell {
            min-height: 0;
            display: flex;
            flex-direction: column;
            gap: 8px;
            flex: 1 1 auto;
        }
        .paper-select,
        .paper-input {
            width: 100%;
            min-width: 0;
            height: 30px;
            border: 1px solid #1c1f26;
            border-radius: 7px;
            background: #050608;
            color: #e6edf3;
            font-family: 'JetBrains Mono', monospace;
            font-size: 11px;
            font-weight: 800;
            padding: 0 8px;
        }
        .paper-input:disabled {
            color: #4b5563;
            background: rgba(255,255,255,0.02);
        }
        .strike-rail-empty,
        .paper-trade-empty {
            color: #636e7b;
            font-size: 11px;
            font-weight: 800;
            padding: 12px 0;
            text-align: center;
        }
        .paper-selected-contract {
            min-height: 32px;
            border: 1px solid rgba(255,255,255,0.07);
            border-radius: 7px;
            background: #050608;
            color: #e6edf3;
            font-family: 'JetBrains Mono', monospace;
            font-size: 10px;
            font-weight: 800;
            line-height: 1.35;
            padding: 6px 8px;
            overflow: hidden;
        }
        .paper-order-grid {
            display: grid;
            grid-template-columns: 54px 72px 1fr;
            gap: 6px;
        }
        .paper-field {
            display: flex;
            flex-direction: column;
            gap: 4px;
            min-width: 0;
        }
        .paper-field span {
            color: #636e7b;
            font-size: 8px;
            font-weight: 900;
            text-transform: uppercase;
        }
        .paper-order-actions {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 8px;
        }
        .paper-management-actions {
            display: flex;
            gap: 6px;
            justify-content: flex-end;
            min-height: 22px;
        }
        .paper-link-action,
        .paper-row-action {
            border: 1px solid rgba(255,255,255,0.08);
            border-radius: 6px;
            background: rgba(255,255,255,0.03);
            color: #9aa4b2;
            font-family: 'JetBrains Mono', monospace;
            font-size: 9px;
            font-weight: 900;
            padding: 4px 7px;
            white-space: nowrap;
        }
        .paper-row-action:hover,
        .paper-link-action:hover {
            color: #fff;
            border-color: rgba(0,255,195,0.28);
        }
        .paper-action {
            height: 32px;
            border-radius: 7px;
            border: 1px solid rgba(255,255,255,0.08);
            color: #fff;
            font-family: 'JetBrains Mono', monospace;
            font-size: 10px;
            font-weight: 900;
            text-transform: uppercase;
        }
        .paper-action-buy {
            background: rgba(0,255,195,0.12);
            border-color: rgba(0,255,195,0.32);
        }
        .paper-action-sell {
            background: rgba(255,0,85,0.12);
            border-color: rgba(255,0,85,0.32);
        }
        .paper-trade-status {
            min-height: 20px;
            color: #8b949e;
            font-size: 10px;
            font-weight: 800;
        }
        .paper-trade-status[data-tone="good"] { color: #00ffc3; }
        .paper-trade-status[data-tone="bad"] { color: #ff5d8f; }
        .paper-position-summary {
            display: flex;
            flex-wrap: wrap;
            gap: 6px;
            color: #8b949e;
            font-family: 'JetBrains Mono', monospace;
            font-size: 9px;
            font-weight: 800;
        }
        .paper-pnl-good { color: #00ffc3; }
        .paper-pnl-bad { color: #ff5d8f; }

        .azu-confirm-overlay {
            position: fixed;
            inset: 0;
            z-index: 9999;
            background: rgba(0, 0, 0, 0.62);
            backdrop-filter: blur(6px);
            -webkit-backdrop-filter: blur(6px);
            display: flex;
            align-items: center;
            justify-content: center;
            opacity: 0;
            transition: opacity 120ms ease;
        }
        .azu-confirm-overlay.open { opacity: 1; }
        .azu-confirm-overlay.leaving { opacity: 0; }
        .azu-confirm-card {
            min-width: 340px;
            max-width: 440px;
            padding: 22px 22px 18px;
            background: linear-gradient(180deg, rgba(15,17,21,0.98), rgba(8,9,12,0.98));
            border: 1px solid rgba(255,255,255,0.10);
            border-radius: 12px;
            box-shadow: 0 20px 60px rgba(0,0,0,0.55), 0 0 0 1px rgba(0,255,195,0.04) inset;
            color: #f0f6fc;
            font-family: 'JetBrains Mono', monospace;
            transform: translateY(6px) scale(0.98);
            transition: transform 140ms cubic-bezier(0.2, 0.8, 0.2, 1);
        }
        .azu-confirm-overlay.open .azu-confirm-card { transform: translateY(0) scale(1); }
        .azu-confirm-title {
            font-size: 11px;
            font-weight: 900;
            letter-spacing: 1.6px;
            text-transform: uppercase;
            color: #00ffc3;
            margin-bottom: 12px;
        }
        .azu-confirm-body {
            font-size: 13px;
            line-height: 1.55;
            color: #c9d1d9;
            margin-bottom: 20px;
        }
        .azu-confirm-actions {
            display: flex;
            justify-content: flex-end;
            gap: 8px;
        }
        .azu-confirm-btn {
            min-width: 88px;
            height: 34px;
            padding: 0 16px;
            border-radius: 8px;
            font-family: 'JetBrains Mono', monospace;
            font-size: 12px;
            font-weight: 900;
            letter-spacing: 0.6px;
            cursor: pointer;
            transition: border-color 120ms ease, color 120ms ease, background 120ms ease, transform 80ms ease;
        }
        .azu-confirm-btn.cancel {
            background: rgba(255,255,255,0.03);
            border: 1px solid rgba(255,255,255,0.10);
            color: #9aa4b2;
        }
        .azu-confirm-btn.cancel:hover {
            color: #f0f6fc;
            border-color: rgba(255,255,255,0.22);
        }
        .azu-confirm-btn.ok {
            background: rgba(255, 93, 143, 0.10);
            border: 1px solid rgba(255, 93, 143, 0.55);
            color: #ff5d8f;
        }
        .azu-confirm-btn.ok:hover {
            background: rgba(255, 93, 143, 0.18);
            color: #fff;
        }
        .azu-confirm-btn:active { transform: translateY(1px); }
        .azu-confirm-btn:focus-visible {
            outline: 2px solid rgba(0,255,195,0.55);
            outline-offset: 2px;
        }

        /* Hide all option paper-trade UI on mobile web (<=767px) */
        @media (max-width: 767px) {
            .option-price-rail-shell,
            .paper-panel-open,
            .paper-options-card,
            .paper-trade-panel-shell {
                display: none !important;
            }
            .replay-page .chart-card #tv-canvas {
                margin-left: 0 !important;
            }
        }
        .paper-trade-list {
            flex: 1 1 auto;
            min-height: 0;
            overflow-y: auto;
            display: flex;
            flex-direction: column;
            gap: 5px;
        }
        .paper-trade-row {
            display: grid;
            grid-template-columns: minmax(0, 1fr) 64px 58px 92px;
            gap: 6px;
            align-items: center;
            min-height: 30px;
            padding: 0 6px;
            border-radius: 6px;
            background: rgba(255,255,255,0.025);
            color: #c9d1d9;
            font-family: 'JetBrains Mono', monospace;
            font-size: 9px;
            font-weight: 800;
        }
        .paper-trade-main {
            overflow: hidden;
            white-space: nowrap;
            text-overflow: ellipsis;
        }
        .paper-trade-status-pill {
            text-align: center;
            color: #8b949e;
        }
        .paper-trade-status-pill.filled { color: #00ffc3; }
        .paper-trade-status-pill.pending { color: #f2ff00; }
        .paper-trade-status-pill.canceled { color: #636e7b; }
        .paper-trade-price {
            text-align: right;
            color: #f0f6fc;
        }
        .paper-trade-buttons {
            display: flex;
            gap: 4px;
            justify-content: flex-end;
        }
        .chart-trade-line-overlay {
            position: absolute;
            inset: 0;
            z-index: 28;
            pointer-events: none;
            overflow: hidden;
            font-family: 'JetBrains Mono', monospace;
        }
        .trade-line {
            position: absolute;
            left: 0;
            right: 0;
            top: calc(var(--line-y) - 12px);
            height: 24px;
            pointer-events: none;
        }
        .trade-line-hit {
            position: absolute;
            inset: 0;
            pointer-events: auto;
            cursor: ns-resize;
        }
        .trade-line.cost .trade-line-hit {
            cursor: default;
            pointer-events: none;
        }
        .trade-line-rule {
            position: absolute;
            left: 0;
            right: 0;
            top: 11px;
            height: 1px;
            background: var(--line-color);
            opacity: 0.9;
        }
        .trade-line-connector {
            position: absolute;
            right: 150px;
            top: var(--connector-top);
            height: var(--connector-height);
            width: 1px;
            background: repeating-linear-gradient(
                to bottom,
                var(--line-color) 0,
                var(--line-color) 5px,
                transparent 5px,
                transparent 10px
            );
            opacity: 0.85;
            pointer-events: none;
        }
        .trade-line.trigger .trade-line-rule,
        .trade-line.tp .trade-line-rule,
        .trade-line.sl .trade-line-rule {
            background: repeating-linear-gradient(
                to right,
                var(--line-color) 0,
                var(--line-color) 7px,
                transparent 7px,
                transparent 12px
            );
        }
        .trade-line-label {
            position: absolute;
            right: 132px;
            top: 0;
            display: flex;
            align-items: center;
            gap: 4px;
            pointer-events: auto;
        }
        .trade-line-pill,
        .trade-line-branch,
        .trade-line-cancel {
            height: 24px;
            border: 1px solid var(--line-color);
            background: rgba(5, 8, 14, 0.92);
            color: #f0f6fc;
            font-family: 'JetBrains Mono', monospace;
            font-size: 10px;
            font-weight: 900;
            line-height: 22px;
            white-space: nowrap;
        }
        .trade-line-pill {
            display: flex;
            align-items: center;
            gap: 10px;
            min-width: 156px;
            justify-content: space-between;
            padding: 0 10px;
            border-radius: 6px;
            color: var(--line-color);
        }
        .trade-line-pill.cost {
            min-width: 260px;
            color: #7aa2ff;
            border-color: #2f6bff;
        }
        .trade-line-pnl.good { color: #00ffc3; }
        .trade-line-pnl.bad { color: #ff0055; }
        .trade-line-branch {
            min-width: 38px;
            padding: 0 8px;
            border-radius: 6px;
            cursor: pointer;
        }
        .trade-line-branch.tp {
            color: #00ffc3;
            border-color: #00ffc3;
        }
        .trade-line-branch.sl {
            color: #ff9f0a;
            border-color: #ff9f0a;
        }
        .trade-line-cancel {
            position: absolute;
            right: 96px;
            top: 0;
            width: 24px;
            border-radius: 6px;
            color: var(--line-color);
            pointer-events: auto;
            cursor: pointer;
        }
        .trade-line-branch:hover,
        .trade-line-cancel:hover {
            background: rgba(255,255,255,0.08);
        }
        #playbook-status {
            display: flex;
            flex-direction: column;
            gap: 8px;
        }
        .playbook-badge {
            display: flex;
            flex-direction: column;
            gap: 4px;
            padding: 10px 12px;
            border-radius: 12px;
            border: 1px solid rgba(255,255,255,0.08);
            font-size: 11px;
            font-weight: 900;
            letter-spacing: 0.08em;
            text-transform: uppercase;
        }
        .playbook-a {
            color: #f2ff00;
            background: linear-gradient(180deg, rgba(242,255,0,0.12), rgba(242,255,0,0.04));
            border-color: rgba(242,255,0,0.22);
        }
        .playbook-b {
            color: #ff7b97;
            background: linear-gradient(180deg, rgba(255,0,85,0.14), rgba(255,0,85,0.05));
            border-color: rgba(255,0,85,0.22);
        }
        .playbook-hint {
            font-size: 9px;
            font-weight: 700;
            letter-spacing: 0.04em;
            text-transform: none;
            color: #c9d1d9;
        }
        .structure-warn {
            padding: 10px 12px;
            border-radius: 12px;
            border: 1px solid rgba(255, 159, 0, 0.24);
            background: rgba(255, 159, 0, 0.08);
            color: #ffd58a;
            font-size: 10px;
            line-height: 1.55;
        }
        .warn-vacuum {
            border-color: rgba(255, 159, 0, 0.28);
            background: rgba(255, 159, 0, 0.08);
        }
        .warn-inverted {
            border-color: rgba(255, 0, 85, 0.26);
            background: rgba(255, 0, 85, 0.09);
            color: #ffb4c8;
        }
        #levels {
            min-height: 0;
            overflow-y: auto;
        }
        .cross-confirm-row {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 8px;
            padding: 4px 0;
            border-bottom: 1px solid rgba(255,255,255,0.04);
        }
        .cross-confirm-row:last-child {
            border-bottom: 0;
            padding-bottom: 0;
        }
        .cross-confirm-state {
            display: inline-flex;
            align-items: center;
            gap: 4px;
            padding: 3px 7px;
            border-radius: 999px;
            font-size: 9px;
            font-weight: 800;
            letter-spacing: 0.08em;
            text-transform: uppercase;
            white-space: nowrap;
        }
        .cross-confirm-confirmed {
            color: #8ef7e0;
            background: rgba(0, 255, 195, 0.12);
            border: 1px solid rgba(0, 255, 195, 0.22);
        }
        .cross-confirm-pending {
            color: #ffe087;
            background: rgba(255, 189, 61, 0.12);
            border: 1px solid rgba(255, 189, 61, 0.22);
        }
        .cross-confirm-reject {
            color: #ff94bc;
            background: rgba(255, 0, 85, 0.12);
            border: 1px solid rgba(255, 0, 85, 0.2);
        }
        .cross-inline {
            display: block;
            margin-top: 4px;
            color: #7ca6ff;
            font-size: 9px;
            line-height: 1.3;
        }
        .cross-inline strong {
            color: #dfe9ff;
        }

        /* ============================================
           Responsive: Tablet (768px - 1023px)
           ============================================ */
        @media (max-width: 1320px) and (min-width: 1024px) {
            html[data-layout-mode="desktop"] {
                --header-height: 118px;
            }
            .dashboard-header {
                min-height: var(--header-height);
                flex-wrap: wrap;
                align-content: center;
                row-gap: 12px;
            }
            .dashboard-header-left {
                flex: 1 1 auto;
            }
            .dashboard-header-brand {
                gap: 10px;
            }
            .brand-title {
                font-size: 14px;
                letter-spacing: -0.01em;
            }
            .brand-full {
                display: inline-flex;
            }
            .dashboard-header-brand .logout-link {
                padding-left: 10px;
                padding-right: 10px;
                font-size: 10px;
            }
            .dashboard-header-brand > .header-link:last-of-type {
                display: none;
            }
            .lang-switcher button,
            .lang-switcher select {
                min-height: 36px;
            }
            .dashboard-header-center {
                order: 3;
                flex: 1 0 100%;
                width: 100%;
                justify-content: flex-start;
                overflow-x: auto;
                padding-bottom: 2px;
                scrollbar-width: none;
            }
            .dashboard-header-center::-webkit-scrollbar {
                display: none;
            }
            .mobile-account-link {
                display: inline-flex;
                align-items: center;
                justify-content: center;
                gap: 4px;
                height: 38px;
                padding: 0 12px;
                margin-left: auto;
                border-radius: 10px;
                font-size: 10px;
                letter-spacing: 0.08em;
                flex: 0 0 auto;
                white-space: nowrap;
            }
            .mobile-account-link .mobile-account-icon {
                display: none;
            }
            .mobile-account-link .mobile-account-text {
                display: inline;
            }
            .dashboard-header-right .text-3xl {
                font-size: 1.9rem;
            }
        }

        @media (max-width: 1023px) {
            .app-grid {
                grid-template-columns: minmax(0, 1fr) var(--right-width);
                grid-template-rows: var(--header-height) minmax(0, 1fr) var(--bottom-height);
                gap: 10px;
                padding: 10px;
            }
            .replay-page .app-grid {
                grid-template-rows: var(--header-height) 52px minmax(0, 1fr) var(--bottom-height);
            }
            .dashboard-header {
                grid-column: 1 / -1;
                min-height: var(--header-height);
                padding-left: 14px;
                padding-right: 14px;
                border-radius: 14px;
                flex-wrap: wrap;
                align-content: center;
                row-gap: 10px;
            }
            .dashboard-header-left {
                gap: 12px;
                flex: 1 1 auto;
            }
            .dashboard-header-brand {
                gap: 12px;
            }
            .brand-title {
                font-size: 13px;
                letter-spacing: -0.01em;
            }
            .brand-full {
                display: inline-flex;
            }
            .dashboard-header-center {
                order: 3;
                flex: 1 0 100%;
                width: 100%;
                justify-content: flex-start;
                overflow-x: auto;
                padding-bottom: 2px;
                scrollbar-width: none;
            }
            .dashboard-header-center::-webkit-scrollbar {
                display: none;
            }
            .date-picker-group {
                padding: 2px;
                gap: 1px;
            }
            .date-nav-btn {
                width: 36px;
                height: 36px;
                min-width: 36px;
            }
            .date-display-btn {
                height: 36px;
                padding: 0 8px;
                font-size: 11px;
            }
            .dashboard-header-right {
                margin-left: auto;
            }
            .dashboard-header-right .text-3xl {
                font-size: 1.6rem;
            }
            .layout-nav-toggle {
                display: inline-flex;
                align-items: center;
                justify-content: center;
            }
            .left-briefing-card {
                position: fixed;
                top: calc(var(--header-height) + 10px);
                left: 10px;
                bottom: 10px;
                width: min(280px, calc(100vw - 32px));
                z-index: 200;
                transform: translateX(calc(-100% - 24px));
                transition: transform 0.28s ease;
                box-shadow: 0 26px 60px rgba(0,0,0,0.4);
            }
            .left-briefing-card.drawer-open {
                transform: translateX(0);
            }
            .chart-card,
            .right-panel-card,
            .paper-options-card,
            .syslog-card-shell {
                min-width: 0;
            }
            .chart-card {
                grid-column: 1 / 2;
            }
            .right-panel-card {
                grid-column: 2 / 3;
                grid-row: 2 / 4;
            }
            .paper-options-card {
                width: min(460px, calc(100vw - 20px));
                height: 390px;
            }
            .syslog-card-shell {
                grid-column: 2 / 3;
                grid-row: 3 / 4;
            }
            .chart-hud {
                top: 10px;
                left: 10px;
                gap: 6px;
            }
            .kline-info-panel {
                min-width: 220px;
                padding: 5px 8px;
            }
            .kline-info-ohlc {
                font-size: 9px;
                gap: 3px 8px;
            }
            .chart-overlay-controls {
                gap: 5px;
            }
            .overlay-toggle {
                min-width: 112px;
                padding: 4px 7px 4px 9px;
                font-size: 8px;
            }
            .overlay-switch-track {
                width: 26px;
                height: 14px;
            }
            .overlay-switch-thumb {
                width: 10px;
                height: 10px;
            }
            .overlay-toggle.active .overlay-switch-thumb {
                transform: translateX(12px);
            }
            .premarket-banner {
                position: fixed;
                top: calc(var(--header-height) + 8px);
                left: 50%;
                transform: translateX(-50%);
                z-index: 150;
                width: min(460px, calc(100vw - 36px));
                border-radius: 999px;
                box-shadow: 0 12px 28px rgba(0,0,0,0.3);
            }
            .replay-page .premarket-banner {
                top: 10px;
            }
            .info-chip,
            .level-inline-info,
            .overlay-inline-info,
            .subcard-label .info-chip.overlay-inline-info.overlay-mines {
                width: 20px;
                height: 20px;
                font-size: 11px;
            }
        }

        /* ============================================
           Responsive: Mobile (< 768px)
           ============================================ */
        @media (max-width: 767px) {
            body {
                overflow: hidden;
            }
            .app-grid {
                display: flex;
                flex-direction: column;
                gap: 0;
                height: calc(100dvh - var(--tab-bar-height) - env(safe-area-inset-bottom, 0px));
                padding: 0;
                box-sizing: border-box;
            }
            .dashboard-header {
                /* 高度完全由内容撑开：2 行内容就 ~105px、3 行 ~149px，K 线图紧贴其下。
                   曾用固定 var(--header-height) + align-content:center —— 内容比它高时
                   上下对半溢出（上半截被 z-9000 冻结常驻条盖住、下半截压 K 线图）；
                   固定值调大又会在 2 行时留一条难看的空带。见 memory verify-both-render-forms。 */
                flex: 0 0 auto;
                min-height: 0;
                height: auto;
                border-radius: 0;
                border-left: 0;
                border-right: 0;
                padding: 10px 10px 8px;
                flex-wrap: wrap;
                align-content: flex-start;
                row-gap: 4px;
                /* 列间距收窄 16→6：给品牌行右侧腾出位置，让报价（尤其 SPX 的长数字）
                   能挤上第一行、不再单独占一行留大空白。 */
                column-gap: 6px;
                overflow: visible;
            }
            .dashboard-header-left {
                order: 1;
                /* !important：元素带 Tailwind `gap-4`(16px) 工具类，同优先级会压过这里 */
                gap: 4px !important;
                /* 0 1 auto：收缩到内容宽度，别把整行撑满 —— 否则报价永远挤不上第一行。 */
                flex: 0 1 auto;
                min-width: 0;
                padding-top: 3px;
            }
            .dashboard-header-brand {
                gap: 4px !important;   /* 同上，压过 Tailwind gap-4 */
                flex: 0 1 auto;
                min-width: 0;
                overflow: visible;
            }
            .dashboard-header-brand > div,
            .clock-shell {
                min-width: 0;
            }
            .dashboard-header-center {
                order: 3;
                flex: 1 0 100%;
                width: 100%;
                gap: 6px;
                align-items: center;
                justify-content: flex-start;
                overflow-x: auto;
                padding-bottom: 0;
            }
            /* 账户图标：inline 在标的切换行内，margin-left:auto 顶到最右（同原布局），
               align-self:center 与标的切换 / 日期导航垂直居中对齐（之前 absolute 钉
               bottom:12px 会比日期框低一截，产品所有者反馈没对齐）。 */
            .dashboard-header-center .mobile-account-link {
                margin-left: auto;
                align-self: center;
                flex: 0 0 auto;
            }
            .date-picker-group {
                padding: 2px;
                gap: 0;
            }
            .date-nav-btn {
                width: 40px;
                height: 40px;
                min-width: 40px;
            }
            .date-display-btn {
                height: 40px;
                padding: 0 8px;
                font-size: 11px;
            }
            .dashboard-header-right {
                order: 2;
                gap: 0;
                flex: 0 0 auto;
                margin-left: auto;
                min-width: 0;
            }
            .dashboard-header-right .price-caption {
                display: none;
            }
            .dashboard-header-right > div {
                min-width: 0;
            }
            /* 字号收一档，保证 SPX 的 $7747.80 也能跟品牌行挤在第一行、不再单独占一行 */
            .dashboard-header-right .text-3xl {
                font-size: 0.75rem;
                gap: 2px;
                white-space: nowrap;
            }
            #price-ticker {
                font-size: 0.52rem;
            }
            .dashboard-header-left > .w-10.h-10 {
                width: 40px;
                height: 40px;
                flex: 0 0 40px;
                padding: 2px;
                margin-top: 2px;
                border-radius: 12px;
                overflow: visible;
            }
            .dashboard-header-left > .w-10.h-10 svg {
                width: 20px;
                height: 20px;
            }
            .layout-nav-toggle {
                display: none;
            }
            .brand-title {
                display: block;
                font-size: 10px;
                line-height: 1;
                letter-spacing: 0.01em;
                white-space: nowrap;
            }
            .clock-date {
                display: none;
            }
            .brand-full {
                display: inline-flex;
            }
            .clock-shell {
                gap: 6px;
            }
            .live-clock {
                gap: 3px;
                font-size: 8px;
                letter-spacing: 0.04em;
            }
            .dashboard-header-brand .logout-link {
                padding-left: 6px;
                padding-right: 6px;
                min-width: auto;
                height: 36px;
                border-radius: 10px;
                flex: 0 0 auto;
            }
            /* 语言选择器字号收小 → 更窄，给品牌行报价再挤一点空间 */
            .dashboard-header-brand .lang-switcher,
            .dashboard-header-brand .lang-switcher select {
                font-size: 10px;
            }
            .dashboard-header-brand > .header-link:last-of-type {
                display: none;
            }
            .dashboard-header-left {
                overflow: hidden;
            }
            .dashboard-header-brand {
                flex-wrap: nowrap;
                overflow: hidden;
            }
            .header-link .link-label {
                display: none;
            }
            .header-link::before {
                display: inline;
                font-size: 9px;
                letter-spacing: 0.08em;
                text-transform: uppercase;
            }
            #ticker-switcher {
                display: inline-flex;
                gap: 4px;
                padding: 3px;
                border-radius: 12px;
                background: rgba(5, 7, 10, 0.96);
                border-color: rgba(255,255,255,0.08);
                box-shadow: inset 0 1px 0 rgba(255,255,255,0.03);
            }
            #ticker-switcher .ticker-tab {
                min-width: 56px;
                min-height: 44px;
                padding: 0 12px;
                display: inline-flex;
                align-items: center;
                justify-content: center;
                border-radius: 10px;
                font-size: 12px;
                letter-spacing: 0.04em;
            }
            #ticker-switcher .ticker-tab.active {
                background: linear-gradient(180deg, rgba(20, 26, 34, 0.98), rgba(12, 16, 22, 0.98));
                box-shadow:
                    inset 0 0 0 1px rgba(255,255,255,0.04),
                    0 8px 18px rgba(0,0,0,0.24);
            }
            .ticker-select-mobile {
                display: none;
            }
            #view-switcher {
                gap: 4px;
                padding: 3px;
                flex: 1 1 auto;
                min-width: 0;
            }
            #view-switcher .ticker-tab {
                min-height: 44px;
                padding: 0 8px;
                display: inline-flex;
                align-items: center;
                justify-content: center;
                font-size: 10px;
                white-space: nowrap;
            }
            .phase-badge {
                display: none !important;
            }
            .mobile-account-link {
                display: inline-flex;
                align-items: center;
                justify-content: center;
                height: 40px;
                width: 40px;
                min-width: 40px;
                padding: 0;
                margin-left: auto;
                border-radius: 10px;
                flex: 0 0 auto;
                background: rgba(255,255,255,0.04);
                border: 1px solid rgba(255,255,255,0.08);
                color: #8b949e;
            }
            .mobile-account-link:hover {
                color: #e0e6ed;
                background: rgba(255,255,255,0.08);
            }
            .mobile-account-link .mobile-account-text {
                display: none;
            }
            .mobile-account-link .mobile-account-icon {
                display: block;
            }
            .left-drawer-backdrop {
                display: none !important;
            }
            .premarket-banner {
                position: fixed;
                top: calc(var(--header-height) + 8px);
                left: 12px;
                right: 12px;
                z-index: 90;
                width: auto;
                border-radius: 12px;
                text-align: left;
                padding: 7px 10px;
                box-shadow: 0 10px 28px rgba(0,0,0,0.26);
            }
            .chart-card,
            .left-briefing-card,
            .right-panel-card,
            .mobile-radar-card,
            .paper-options-card,
            .syslog-card-shell {
                flex: 1 1 auto;
                min-height: var(--mobile-panel-min-height);
                position: relative;
                right: auto;
                top: auto;
                left: auto;
                bottom: auto;
                z-index: auto;
                width: auto;
                height: auto;
                border-radius: 0;
                border-left: 0;
                border-right: 0;
                border-bottom: 0;
                padding-left: 14px;
                padding-right: 14px;
            }
            .left-stack-card {
                display: contents;
            }
            .left-stack-card .core-levels-shell,
            .left-stack-card .vix-shell,
            .left-stack-card .market-breadth-shell {
                flex: 1 1 auto;
                min-height: var(--mobile-panel-min-height);
                position: relative;
                overflow-y: auto;
                padding: 14px 14px calc(14px + env(safe-area-inset-bottom, 0px));
                background: var(--card);
                border-bottom: 1px solid var(--border);
            }
            .left-briefing-card {
                position: relative;
                top: auto;
                left: auto;
                bottom: auto;
                width: auto;
                z-index: auto;
                transform: none;
                box-shadow: none;
            }
            .chart-card {
                padding: 0;
            }
            .left-briefing-card,
            .right-panel-card,
            .mobile-radar-card,
            .paper-options-card,
            .syslog-card-shell {
                overflow-y: auto;
                padding-top: 14px;
                padding-bottom: calc(14px + env(safe-area-inset-bottom, 0px));
            }
            .left-briefing-card,
            .right-panel-card,
            .mobile-radar-card,
            .paper-options-card,
            .paper-options-body {
                display: flex;
            }
            .left-stack-card {
                display: contents !important;
            }
            .right-panel-card {
                display: none !important;
            }
            .option-price-rail-shell {
                width: 104px;
                padding-top: 78px;
            }
            .paper-panel-open {
                width: 92px;
            }
            .replay-page .chart-card #tv-canvas {
                margin-left: 104px;
            }
            .mobile-radar-card {
                display: flex;
            }
            .right-panel-card .desktop-radar-shell {
                display: none;
            }
            .mobile-radar-card #radar-mobile {
                min-height: 280px;
            }
            .right-panel-card .right-stack {
                min-height: 100%;
            }
            .right-panel-card .market-breadth-shell {
                gap: 8px;
            }
            .right-panel-card .market-breadth-shell .breadth-market-row,
            .right-panel-card .market-breadth-shell .breadth-thermometer-row {
                padding: 8px 10px;
            }
            .right-panel-card .market-breadth-shell .breadth-row-head {
                font-size: 9px;
                margin-bottom: 6px;
            }
            .right-panel-card .market-breadth-shell .breadth-chip-grid {
                gap: 6px;
            }
            .right-panel-card .market-breadth-shell .breadth-chip {
                padding: 8px;
            }
            .right-panel-card .market-breadth-shell .breadth-chip-value {
                font-size: 14px;
            }
            .right-panel-card .market-breadth-shell .breadth-chip-label {
                font-size: 9px;
                line-height: 1.2;
            }
            .right-panel-card .market-breadth-shell .breadth-thermometer-value {
                font-size: 24px;
            }
            .right-panel-card .market-breadth-shell .breadth-thermometer-formula {
                margin-top: 4px;
                font-size: 10px;
            }
            .right-panel-card .market-breadth-shell .breadth-status-note {
                margin-top: 4px;
                font-size: 9px;
            }
            .right-panel-card .market-breadth-shell .breadth-history-link {
                font-size: 9px;
            }
            .right-panel-card .right-stack > .subcard:last-child {
                flex: 1 1 280px;
                min-height: 280px;
            }
            .right-panel-card #radar {
                min-height: 220px;
            }
            .syslog-card-shell {
                flex: 1 1 auto;
            }
            .syslog-card-shell.gbt-expanded {
                display: flex;
                flex-direction: column;
                top: var(--header-height) !important;
                bottom: calc(var(--tab-bar-height) + env(safe-area-inset-bottom, 0px)) !important;
                height: auto !important;
                min-height: var(--mobile-panel-min-height);
                max-height: calc(100dvh - var(--header-height) - var(--tab-bar-height) - env(safe-area-inset-bottom, 0px));
                overflow: hidden;
                padding-bottom: 0 !important;
            }
            .syslog-card-shell.gbt-expanded #syslog-label-bar {
                flex: 0 0 auto;
                min-height: 0;
            }
            .syslog-card-shell.gbt-expanded #bottom-tabs {
                padding-bottom: 2px;
            }
            .syslog-card-shell.gbt-expanded #twitter-kol-panel {
                flex: 1 1 auto;
                min-height: 0;
                height: 100%;
            }
            .log-collapse-toggle {
                display: none;
            }
            .syslog-card-shell #sys-log {
                max-height: none;
                overflow-y: auto;
            }
            .chart-hud {
                top: 10px;
                left: 10px;
                max-width: calc(100% - 20px);
            }
            .kline-info-panel {
                min-width: 0;
                width: 100%;
                max-width: min(320px, calc(100vw - 20px));
                padding: 5px 8px;
            }
            .kline-info-meta { font-size: 9px; }
            .kline-info-ohlc {
                font-size: 10px;
                gap: 3px 10px;
            }
            .chart-overlay-controls {
                width: min(220px, calc(100vw - 20px));
                padding: 10px;
                border-radius: 14px;
                background: rgba(8, 10, 14, 0.96);
                box-shadow: 0 18px 40px rgba(0,0,0,0.34);
            }
            .overlay-gear-btn {
                width: 44px;
                height: 44px;
            }
            .overlay-toggle {
                min-width: 100%;
                min-height: 44px;
                font-size: 10px;
                padding: 8px 10px 8px 12px;
            }
            .overlay-switch-track {
                width: 32px;
                height: 18px;
            }
            .overlay-switch-thumb {
                width: 12px;
                height: 12px;
                top: 2px;
                left: 2px;
            }
            .overlay-toggle.active .overlay-switch-thumb {
                transform: translateX(14px);
            }
            .dex-tooltip {
                left: 12px !important;
                right: 12px;
                bottom: 12px;
                top: auto !important;
                max-width: none;
                min-width: 0;
                width: auto;
                border-radius: 16px;
            }
            .vix-price {
                font-size: 22px;
            }
            .vix-grid {
                grid-auto-flow: column;
                grid-template-columns: repeat(4, minmax(126px, 1fr));
                overflow-x: auto;
                padding-bottom: 2px;
            }
            .put-call-grid,
            .put-call-delta-row {
                grid-template-columns: minmax(0, 1fr);
            }
            .put-call-metric-label,
            .put-call-delta-label {
                font-size: 9px;
            }
            .put-call-note {
                font-size: 10px;
            }
            .modal-backdrop {
                align-items: flex-end;
                padding-top: 0;
                overflow-y: auto;
                -webkit-overflow-scrolling: touch;
                overscroll-behavior: contain;
            }
            .modal-panel {
                width: 100vw;
                max-height: calc(100dvh - 8px);
                border-radius: 18px 18px 0 0;
                border-left: 0;
                border-right: 0;
                border-bottom: 0;
                padding: 16px 16px calc(18px + env(safe-area-inset-bottom, 0px));
                overflow-y: auto;
                -webkit-overflow-scrolling: touch;
                overscroll-behavior: contain;
                touch-action: pan-y;
            }
            .modal-close {
                width: 40px;
                height: 40px;
                min-width: 40px;
                min-height: 40px;
                font-size: 14px;
            }
            .info-chip,
            .level-inline-info,
            .overlay-inline-info,
            .subcard-label .info-chip.overlay-inline-info.overlay-mines {
                width: 28px;
                height: 28px;
                min-width: 28px;
                min-height: 28px;
                font-size: 11px;
            }
            .level-row-value {
                font-size: 12px;
            }
            .mobile-tab-bar {
                display: flex;
            }
            .replay-bar-shell {
                display: none;
            }
            body.replay-page[data-mobile-tab="chart"][data-replay-controls="expanded"] .replay-bar-shell {
                display: block;
                position: fixed;
                left: 12px;
                right: 12px;
                bottom: calc(var(--tab-bar-height) + 8px + env(safe-area-inset-bottom, 0px));
                z-index: 110;
            }
            body.replay-page[data-mobile-tab="chart"]:not([data-replay-controls="expanded"]) .replay-fab-toggle {
                display: inline-flex;
            }
            .replay-bar {
                padding: 10px 12px;
                border-radius: 16px;
                min-height: 132px;
                box-sizing: border-box;
                border: 1px solid rgba(255,255,255,0.08);
                background:
                    linear-gradient(180deg, rgba(16,18,24,0.98), rgba(8,10,14,0.98)),
                    radial-gradient(circle at top left, rgba(92, 255, 211, 0.08), transparent 36%);
                box-shadow: 0 20px 48px rgba(0,0,0,0.34);
            }
            .replay-bar-main {
                display: grid;
                grid-template-columns: minmax(0, 1fr) auto;
                gap: 8px;
                align-items: center;
            }
            .replay-bar-primary {
                grid-column: 1 / 2;
                gap: 8px;
                min-width: 0;
            }
            .replay-bar-primary .replay-badge {
                display: none;
            }
            .replay-bar-secondary {
                display: none;
                grid-column: 1 / -1;
                width: 100%;
                flex-wrap: wrap;
                gap: 8px;
            }
            body.replay-page[data-replay-controls="expanded"] .replay-bar-secondary {
                display: flex;
            }
            .replay-controls-toggle {
                display: inline-flex;
                grid-column: 2 / 3;
                min-width: 50px;
                height: 44px;
                font-size: 0;
                position: relative;
            }
            .replay-controls-toggle::before {
                content: "×";
                font-size: 18px;
                line-height: 1;
            }
            .replay-play-btn,
            .replay-select,
            .replay-mode-btn {
                min-height: 44px;
            }
            .replay-play-btn {
                width: 44px;
                height: 44px;
                border-radius: 12px;
            }
            .replay-select {
                min-width: 98px;
            }
            .replay-bar-primary .replay-select {
                min-width: 86px;
            }
            .replay-picker-trigger {
                display: inline-flex;
                flex: 1 1 100%;
                min-width: 0;
                min-height: 52px;
            }
            .replay-bar-secondary #replay-date-select {
                display: none;
            }
            .replay-mode-switch {
                width: 100%;
                justify-content: space-between;
            }
            .replay-mode-btn {
                flex: 1 1 0;
            }
            .replay-time {
                margin-left: 0;
                min-width: 0;
                overflow: hidden;
                text-overflow: ellipsis;
            }
            .replay-loading-status {
                flex: 1 1 100%;
                min-width: 0;
                white-space: normal;
            }
            .connection-toast {
                left: 12px;
                right: 12px;
                bottom: calc(var(--tab-bar-height) + 12px + env(safe-area-inset-bottom, 0px));
                max-width: none;
            }
            #err-msg {
                left: 12px;
                right: 12px;
                transform: none;
                top: calc(8px + env(safe-area-inset-top, 0px));
                max-width: none;
            }
            .replay-wheel-sheet {
                width: 100%;
            }
            .date-calendar-panel {
                top: auto;
                bottom: 0;
                left: 0;
                width: 100%;
                border-left: 0;
                border-right: 0;
                border-bottom: 0;
                border-radius: 8px 8px 0 0;
                transform: none;
                padding-bottom: calc(12px + env(safe-area-inset-bottom, 0px));
            }
            .date-calendar-day {
                height: 42px;
            }
        }

        /* ============================================
           Mobile landscape: phones rotated sideways
           (width > 767px but height <= 500px)
           ============================================ */
        @media (orientation: landscape) and (max-height: 500px) and (min-width: 768px) {
            body {
                overflow: hidden;
            }
            .app-grid {
                display: flex;
                flex-direction: column;
                gap: 0;
                height: calc(100dvh - var(--tab-bar-height) - env(safe-area-inset-bottom, 0px));
                padding: 0;
                box-sizing: border-box;
            }
            /* Compact single-row header for landscape */
            .dashboard-header {
                flex: 0 0 56px;
                min-height: 56px;
                border-radius: 0;
                border-left: 0;
                border-right: 0;
                padding: 4px 10px;
                flex-wrap: nowrap;
                align-content: center;
                overflow: visible;
            }
            .dashboard-header-left {
                order: 1;
                gap: 8px;
                flex: 0 1 auto;
                min-width: 0;
                overflow: hidden;
            }
            .dashboard-header-brand {
                gap: 6px;
                min-width: 0;
                overflow: hidden;
                flex-wrap: nowrap;
            }
            .dashboard-header-brand > div,
            .clock-shell {
                min-width: 0;
            }
            .dashboard-header-center {
                order: 2;
                flex: 0 1 auto;
                width: auto;
                gap: 6px;
                align-items: center;
                overflow-x: auto;
                padding-bottom: 0;
            }
            .date-picker-group {
                padding: 2px;
                gap: 0;
            }
            .date-nav-btn {
                width: 36px;
                height: 36px;
                min-width: 36px;
            }
            .date-display-btn {
                height: 36px;
                padding: 0 6px;
                font-size: 10px;
            }
            .dashboard-header-right {
                order: 3;
                gap: 0;
                flex: 0 1 auto;
                margin-left: auto;
                min-width: 0;
            }
            .dashboard-header-right .price-caption {
                display: none;
            }
            .dashboard-header-right > div {
                min-width: 0;
            }
            .dashboard-header-right .text-3xl {
                font-size: 1rem;
                gap: 2px;
                white-space: nowrap;
            }
            #price-ticker {
                font-size: 0.65rem;
            }
            .dashboard-header-left > .w-10.h-10 {
                width: 36px;
                height: 36px;
                flex: 0 0 36px;
                padding: 2px;
                border-radius: 10px;
                overflow: visible;
            }
            .dashboard-header-left > .w-10.h-10 svg {
                width: 18px;
                height: 18px;
            }
            .layout-nav-toggle {
                display: none;
            }
            .brand-title {
                display: block;
                font-size: 9px;
                line-height: 1;
                letter-spacing: 0.01em;
                white-space: nowrap;
            }
            .clock-date {
                display: none;
            }
            .brand-full {
                display: inline-flex;
            }
            .clock-shell {
                gap: 4px;
            }
            .live-clock {
                gap: 3px;
                font-size: 8px;
                letter-spacing: 0.04em;
            }
            .dashboard-header-brand .logout-link {
                padding-left: 6px;
                padding-right: 6px;
                min-width: auto;
                height: 32px;
                border-radius: 8px;
                flex: 0 0 auto;
            }
            .dashboard-header-brand > .header-link:last-of-type {
                display: none;
            }
            .header-link .link-label {
                display: none;
            }
            .header-link::before {
                display: inline;
                font-size: 9px;
                letter-spacing: 0.08em;
                text-transform: uppercase;
            }
            #ticker-switcher {
                display: inline-flex;
                gap: 3px;
                padding: 2px;
                border-radius: 10px;
                background: rgba(5, 7, 10, 0.96);
                border-color: rgba(255,255,255,0.08);
            }
            #ticker-switcher .ticker-tab {
                min-width: 48px;
                min-height: 36px;
                padding: 0 8px;
                display: inline-flex;
                align-items: center;
                justify-content: center;
                border-radius: 8px;
                font-size: 11px;
            }
            #ticker-switcher .ticker-tab.active {
                background: linear-gradient(180deg, rgba(20, 26, 34, 0.98), rgba(12, 16, 22, 0.98));
                box-shadow: inset 0 0 0 1px rgba(255,255,255,0.04), 0 8px 18px rgba(0,0,0,0.24);
            }
            .ticker-select-mobile {
                display: none;
            }
            #view-switcher {
                gap: 3px;
                padding: 2px;
                flex: 0 1 auto;
                min-width: 0;
            }
            #view-switcher .ticker-tab {
                min-height: 36px;
                padding: 0 6px;
                display: inline-flex;
                align-items: center;
                justify-content: center;
                font-size: 9px;
                white-space: nowrap;
            }
            .phase-badge {
                display: none !important;
            }
            .mobile-account-link {
                display: inline-flex;
                align-items: center;
                justify-content: center;
                height: 36px;
                width: 36px;
                min-width: 36px;
                padding: 0;
                margin-left: auto;
                border-radius: 8px;
                flex: 0 0 auto;
                background: rgba(255,255,255,0.04);
                border: 1px solid rgba(255,255,255,0.08);
                color: #8b949e;
            }
            .mobile-account-link:hover {
                color: #e0e6ed;
                background: rgba(255,255,255,0.08);
            }
            .mobile-account-link .mobile-account-text {
                display: none;
            }
            .mobile-account-link .mobile-account-icon {
                display: block;
            }
            .left-drawer-backdrop {
                display: none !important;
            }
            .premarket-banner {
                position: fixed;
                top: 64px;
                left: 12px;
                right: 12px;
                z-index: 90;
                width: auto;
                border-radius: 12px;
                text-align: left;
                padding: 7px 10px;
                box-shadow: 0 10px 28px rgba(0,0,0,0.26);
            }
            .chart-card,
            .left-briefing-card,
            .right-panel-card,
            .mobile-radar-card,
            .paper-options-card,
            .syslog-card-shell {
                flex: 1 1 auto;
                min-height: var(--mobile-panel-min-height);
                position: relative;
                right: auto;
                top: auto;
                left: auto;
                bottom: auto;
                z-index: auto;
                width: auto;
                height: auto;
                border-radius: 0;
                border-left: 0;
                border-right: 0;
                border-bottom: 0;
                padding-left: 14px;
                padding-right: 14px;
            }
            .left-stack-card {
                display: contents;
            }
            .left-stack-card .core-levels-shell,
            .left-stack-card .vix-shell,
            .left-stack-card .market-breadth-shell {
                flex: 1 1 auto;
                min-height: var(--mobile-panel-min-height);
                position: relative;
                overflow-y: auto;
                padding: 14px 14px calc(14px + env(safe-area-inset-bottom, 0px));
                background: var(--card);
                border-bottom: 1px solid var(--border);
            }
            .left-briefing-card {
                position: relative;
                top: auto;
                left: auto;
                bottom: auto;
                width: auto;
                z-index: auto;
                transform: none;
                box-shadow: none;
            }
            .chart-card {
                padding: 0;
            }
            .left-briefing-card,
            .right-panel-card,
            .mobile-radar-card,
            .paper-options-card,
            .syslog-card-shell {
                overflow-y: auto;
                padding-top: 14px;
                padding-bottom: calc(14px + env(safe-area-inset-bottom, 0px));
            }
            .left-briefing-card,
            .right-panel-card,
            .mobile-radar-card,
            .paper-options-card,
            .paper-options-body {
                display: flex;
            }
            .left-stack-card {
                display: contents !important;
            }
            .right-panel-card {
                display: none !important;
            }
            .option-price-rail-shell {
                width: 104px;
                padding-top: 78px;
            }
            .paper-panel-open {
                width: 92px;
            }
            .replay-page .chart-card #tv-canvas {
                margin-left: 104px;
            }
            .right-panel-card .right-stack {
                min-height: 100%;
            }
            .syslog-card-shell {
                flex: 1 1 auto;
            }
            .log-collapse-toggle {
                display: inline-flex;
                align-items: center;
                justify-content: center;
            }
            .syslog-card-shell:not(.is-expanded) #sys-log {
                max-height: 38px;
                overflow: hidden;
            }
            .syslog-card-shell.is-expanded #sys-log {
                max-height: none;
            }
            .chart-hud {
                top: 6px;
                left: 6px;
                max-width: calc(100% - 12px);
            }
            .kline-info-panel {
                min-width: 0;
                width: 100%;
                max-width: min(320px, calc(100vw - 20px));
                padding: 4px 6px;
            }
            .kline-info-meta { font-size: 8px; }
            .kline-info-ohlc {
                font-size: 9px;
                gap: 2px 8px;
            }
            .chart-overlay-controls {
                width: min(200px, calc(100vw - 20px));
                padding: 8px;
                border-radius: 12px;
                background: rgba(8, 10, 14, 0.96);
                box-shadow: 0 18px 40px rgba(0,0,0,0.34);
            }
            .overlay-gear-btn {
                width: 40px;
                height: 40px;
            }
            .overlay-toggle {
                min-width: 100%;
                min-height: 36px;
                font-size: 10px;
                padding: 6px 8px 6px 10px;
            }
            .overlay-switch-track {
                width: 32px;
                height: 18px;
            }
            .overlay-switch-thumb {
                width: 12px;
                height: 12px;
                top: 2px;
                left: 2px;
            }
            .overlay-toggle.active .overlay-switch-thumb {
                transform: translateX(14px);
            }
            .dex-tooltip {
                left: 12px !important;
                right: 12px;
                bottom: 12px;
                top: auto !important;
                max-width: none;
                min-width: 0;
                width: auto;
                border-radius: 16px;
            }
            .vix-price {
                font-size: 22px;
            }
            .vix-grid {
                grid-auto-flow: column;
                grid-template-columns: repeat(4, minmax(126px, 1fr));
                overflow-x: auto;
                padding-bottom: 2px;
            }
            .put-call-grid,
            .put-call-delta-row {
                grid-template-columns: minmax(0, 1fr);
            }
            .put-call-metric-label,
            .put-call-delta-label {
                font-size: 9px;
            }
            .put-call-note {
                font-size: 10px;
            }
            .modal-backdrop {
                align-items: flex-end;
                padding-top: 0;
                overflow-y: auto;
                -webkit-overflow-scrolling: touch;
                overscroll-behavior: contain;
            }
            .modal-panel {
                width: 100vw;
                max-height: calc(100dvh - 8px);
                border-radius: 18px 18px 0 0;
                border-left: 0;
                border-right: 0;
                border-bottom: 0;
                padding: 16px 16px calc(18px + env(safe-area-inset-bottom, 0px));
                overflow-y: auto;
                -webkit-overflow-scrolling: touch;
                overscroll-behavior: contain;
                touch-action: pan-y;
            }
            .modal-close {
                width: 36px;
                height: 36px;
                min-width: 36px;
                min-height: 36px;
                font-size: 14px;
            }
            .info-chip,
            .level-inline-info,
            .overlay-inline-info,
            .subcard-label .info-chip.overlay-inline-info.overlay-mines {
                width: 28px;
                height: 28px;
                min-width: 28px;
                min-height: 28px;
                font-size: 11px;
            }
            .level-row-value {
                font-size: 12px;
            }
            .mobile-tab-bar {
                display: flex;
            }
            .mobile-radar-card {
                display: flex;
            }
            .right-panel-card .desktop-radar-shell {
                display: none;
            }
            .mobile-tab {
                font-size: 11px;
            }
            .replay-bar-shell {
                display: none;
            }
            body.replay-page[data-mobile-tab="chart"][data-replay-controls="expanded"] .replay-bar-shell {
                display: block;
                position: fixed;
                left: 12px;
                right: 12px;
                bottom: calc(var(--tab-bar-height) + 8px + env(safe-area-inset-bottom, 0px));
                z-index: 110;
            }
            body.replay-page[data-mobile-tab="chart"]:not([data-replay-controls="expanded"]) .replay-fab-toggle {
                display: inline-flex;
            }
            .replay-bar {
                padding: 8px 10px;
                border-radius: 14px;
                min-height: 100px;
                box-sizing: border-box;
                border: 1px solid rgba(255,255,255,0.08);
                background:
                    linear-gradient(180deg, rgba(16,18,24,0.98), rgba(8,10,14,0.98)),
                    radial-gradient(circle at top left, rgba(92, 255, 211, 0.08), transparent 36%);
                box-shadow: 0 20px 48px rgba(0,0,0,0.34);
            }
            .replay-bar-main {
                display: grid;
                grid-template-columns: minmax(0, 1fr) auto;
                gap: 6px;
                align-items: center;
            }
            .replay-bar-primary {
                grid-column: 1 / 2;
                gap: 6px;
                min-width: 0;
            }
            .replay-bar-primary .replay-badge {
                display: none;
            }
            .replay-bar-secondary {
                display: none;
                grid-column: 1 / -1;
                width: 100%;
                flex-wrap: wrap;
                gap: 6px;
            }
            body.replay-page[data-replay-controls="expanded"] .replay-bar-secondary {
                display: flex;
            }
            .replay-controls-toggle {
                display: inline-flex;
                grid-column: 2 / 3;
                min-width: 44px;
                height: 36px;
                font-size: 0;
                position: relative;
            }
            .replay-controls-toggle::before {
                content: "×";
                font-size: 16px;
                line-height: 1;
            }
            .replay-play-btn,
            .replay-select,
            .replay-mode-btn {
                min-height: 36px;
            }
            .replay-play-btn {
                width: 36px;
                height: 36px;
                border-radius: 10px;
            }
            .replay-select {
                min-width: 86px;
            }
            .replay-bar-primary .replay-select {
                min-width: 76px;
            }
            .replay-picker-trigger {
                display: inline-flex;
                flex: 1 1 100%;
                min-width: 0;
                min-height: 44px;
            }
            .replay-bar-secondary #replay-date-select {
                display: none;
            }
            .replay-mode-switch {
                width: 100%;
                justify-content: space-between;
            }
            .replay-mode-btn {
                flex: 1 1 0;
            }
            .replay-time {
                margin-left: 0;
                min-width: 0;
                overflow: hidden;
                text-overflow: ellipsis;
            }
            .replay-loading-status {
                flex: 1 1 100%;
                min-width: 0;
                white-space: normal;
            }
            .connection-toast {
                left: 12px;
                right: 12px;
                bottom: calc(var(--tab-bar-height) + 12px + env(safe-area-inset-bottom, 0px));
                max-width: none;
            }
            .replay-wheel-sheet {
                width: 100%;
            }
            .date-calendar-panel {
                top: auto;
                bottom: 0;
                left: 0;
                width: 100%;
                border-left: 0;
                border-right: 0;
                border-bottom: 0;
                border-radius: 8px 8px 0 0;
                transform: none;
                padding-bottom: calc(12px + env(safe-area-inset-bottom, 0px));
            }
            .date-calendar-day {
                height: 36px;
            }
        }

        /* Mobile landscape header compression override */
        @media (orientation: landscape) and (max-height: 500px) {
            html[data-layout-mode="mobile"] {
                --header-height: 56px;
                --mobile-panel-min-height: calc(100dvh - 56px - var(--tab-bar-height) - env(safe-area-inset-bottom, 0px));
            }
        }

        @media (min-width: 1024px) and (max-width: 1366px)
               and (min-height: 700px) and (max-height: 1100px) {
            .date-picker-group {
                padding: 3px;
            }
            .date-nav-btn {
                width: 32px;
                height: 32px;
            }
            .date-display-btn {
                height: 32px;
                font-size: 11px;
            }
        }

        @media (max-width: 767px) {
            .vol-segments-overlay {
                top: 118px;
                left: 8px;
                right: 8px;
                max-width: none;
                padding: 7px 8px;
                border-radius: 10px;
                overflow-x: auto;
                -webkit-overflow-scrolling: touch;
                box-shadow: 0 10px 24px rgba(0,0,0,0.3);
            }
            .vol-segments-overlay .vs-title {
                margin-bottom: 5px;
                font-size: 9px;
                gap: 5px;
            }
            .vol-segments-overlay .vs-meta,
            .vol-segments-overlay .vs-stale {
                font-size: 8px;
            }
            .vol-segments-overlay table {
                min-width: 100%;
                font-size: 8px;
            }
            .vol-segments-overlay th,
            .vol-segments-overlay td {
                padding: 2px 3px;
            }
        }

        .replay-locked-banner {
            position: absolute;
            top: 58px;
            left: 0;
            right: 0;
            z-index: 24;
            background: rgba(242, 255, 0, 0.08);
            border-bottom: 1px solid rgba(242, 255, 0, 0.4);
            color: #f2ff00;
            font-size: 12px;
            padding: 4px 12px;
            text-align: center;
            letter-spacing: 0.5px;
            pointer-events: none;
        }

        .locked-badge {
            display: inline-flex;
            align-items: center;
            margin-left: 6px;
            color: #f2ff00;
            vertical-align: middle;
        }

        .locked-badge svg {
            width: 12px;
            height: 12px;
        }

        .replay-mode-btn[disabled] {
            opacity: 0.4;
            cursor: not-allowed;
            pointer-events: auto;
        }

        .paper-mode-tabs {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 4px;
            margin: 8px 0;
            padding: 3px;
            border: 1px solid rgba(255,255,255,0.08);
            background: rgba(255,255,255,0.03);
            border-radius: 8px;
        }

        .paper-mode-tab {
            height: 28px;
            border: 0;
            border-radius: 6px;
            background: transparent;
            color: #8b949e;
            font-size: 12px;
            cursor: pointer;
        }

        .paper-mode-tab.active {
            background: rgba(242,255,0,0.14);
            color: #f2ff00;
        }

        .combo-builder {
            display: flex;
            flex-direction: column;
            gap: 8px;
            width: 100%;
            height: 100%;
            min-width: 0;
            min-height: 0;
        }

        .combo-builder-root {
            width: 100%;
            min-width: 0;
            min-height: 0;
        }

        .combo-toolbar,
        .combo-submit-row,
        .combo-position-row {
            display: flex;
            align-items: center;
            gap: 8px;
        }

        .combo-strategy-picker {
            position: relative;
            flex: 1;
            min-width: 0;
        }

        .combo-strategy-button {
            width: 100%;
            height: 34px;
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 10px;
            border: 1px solid rgba(255,255,255,0.13);
            border-radius: 7px;
            background: #050608;
            color: #e6edf3;
            font-size: 13px;
            font-weight: 800;
            padding: 0 10px;
            cursor: pointer;
            text-align: left;
        }

        .combo-strategy-button:hover,
        .combo-strategy-button.open {
            border-color: rgba(242,255,0,0.42);
            background: rgba(255,255,255,0.04);
        }

        .combo-strategy-button span:first-child {
            min-width: 0;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }

        .combo-strategy-caret {
            color: #9aa4ad;
            font-size: 13px;
        }

        .combo-strategy-menu {
            position: absolute;
            z-index: 5;
            left: 0;
            right: 0;
            top: calc(100% + 6px);
            max-height: 280px;
            overflow: auto;
            border: 1px solid rgba(255,255,255,0.12);
            border-radius: 8px;
            background: #0b0f14;
            box-shadow: 0 16px 38px rgba(0,0,0,0.45);
            padding: 5px;
        }

        .combo-strategy-option {
            width: 100%;
            height: 34px;
            border: 0;
            border-radius: 6px;
            background: transparent;
            color: #d8dee9;
            font-size: 13px;
            font-weight: 700;
            text-align: left;
            padding: 0 10px;
            cursor: pointer;
        }

        .combo-strategy-option:hover {
            background: rgba(255,255,255,0.07);
            color: #fff;
        }

        .combo-strategy-option.active {
            background: rgba(242,255,0,0.14);
            color: #f2ff00;
        }

        .combo-strategy-select,
        .combo-qty-input,
        .combo-strike-select,
        .combo-order-type,
        .combo-limit-kind,
        .combo-limit-input {
            min-width: 0;
            height: 28px;
            border: 1px solid rgba(255,255,255,0.12);
            border-radius: 6px;
            background: rgba(0,0,0,0.35);
            color: #e6edf3;
            font-size: 12px;
            padding: 0 8px;
        }

        .combo-strategy-select { flex: 1; }
        .combo-qty-input { width: 56px; }
        .combo-limit-input { width: 72px; }

        .combo-leg-list,
        .combo-preview-card,
        .combo-position-list {
            display: flex;
            flex-direction: column;
            gap: 6px;
        }

        .combo-leg-row,
        .combo-position-row {
            min-height: 34px;
            padding: 6px;
            border: 1px solid rgba(255,255,255,0.08);
            border-radius: 8px;
            background: rgba(255,255,255,0.03);
        }

        .combo-leg-row {
            display: grid;
            grid-template-columns: 42px 44px 1fr 72px;
            align-items: center;
            gap: 6px;
            cursor: pointer;
        }

        .combo-leg-row.focused {
            border-color: rgba(242,255,0,0.45);
        }

        .combo-leg-side {
            font-size: 11px;
            font-weight: 700;
        }

        .combo-leg-side.buy { color: #00ffc3; }
        .combo-leg-side.sell { color: #ffbd5a; }
        .combo-leg-right,
        .combo-quote {
            color: #8b949e;
            font-size: 11px;
        }

        .combo-preview-card {
            min-height: 420px;
            padding: 10px;
            border: 1px solid rgba(255,255,255,0.08);
            border-radius: 8px;
            background:
                linear-gradient(180deg, rgba(13,17,23,0.96), rgba(6,10,15,0.98));
            font-size: 12px;
            overflow: hidden;
        }

        .paper-options-card.is-combo-mode .combo-builder-root {
            display: flex;
            flex: 1 1 auto;
        }

        .paper-options-card.is-combo-mode .combo-preview-card {
            min-height: 0;
            height: 100%;
        }

        .combo-preview-heading {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 10px;
            color: #e6edf3;
            font-size: 14px;
            font-weight: 700;
            margin-bottom: 10px;
        }

        .combo-preview-heading span {
            min-width: 0;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }

        .combo-preview-heading strong {
            color: #f2ff00;
            font-variant-numeric: tabular-nums;
        }

        .combo-metric-grid {
            display: grid;
            grid-template-columns: minmax(0, 1fr) minmax(0, 1.18fr) minmax(0, 1fr);
            gap: 10px 12px;
            align-items: center;
        }

        .combo-metric,
        .combo-target-wheel {
            min-width: 0;
        }

        .combo-metric span,
        .combo-target-wheel span {
            display: block;
            color: #89929d;
            font-size: 11px;
            line-height: 1.2;
            margin-bottom: 3px;
        }

        .combo-metric strong,
        .combo-target-wheel strong {
            display: block;
            color: #e6edf3;
            font-size: 17px;
            line-height: 1.18;
            font-weight: 650;
            font-variant-numeric: tabular-nums;
            overflow-wrap: anywhere;
        }

        .combo-metric.align-right {
            text-align: right;
        }

        .combo-target-wheel {
            position: relative;
            text-align: center;
            padding: 2px 32px;
            outline: none;
        }

        .combo-target-wheel:focus-visible {
            border-radius: 8px;
            box-shadow: 0 0 0 2px rgba(242,255,0,0.35);
        }

        .combo-target-wheel strong {
            font-size: 20px;
            color: #f3f6fb;
        }

        .combo-target-wheel em {
            display: block;
            font-style: normal;
            font-size: 11px;
            font-weight: 700;
            margin-top: 2px;
            font-variant-numeric: tabular-nums;
        }

        .combo-target-step {
            position: absolute;
            top: 50%;
            width: 24px;
            height: 24px;
            transform: translateY(-50%);
            border: 1px solid rgba(255,255,255,0.14);
            border-radius: 6px;
            background: rgba(255,255,255,0.06);
            color: #e6edf3;
            font-size: 15px;
            font-weight: 700;
            line-height: 1;
            cursor: pointer;
        }

        .combo-target-step:hover {
            border-color: rgba(242,255,0,0.45);
            color: #f2ff00;
        }

        .combo-target-step[data-target-step="1"] {
            right: 2px;
        }

        .combo-target-step[data-target-step="-1"] {
            left: 2px;
        }

        .combo-payoff-chart {
            height: 260px;
            min-width: 0;
            margin-top: 10px;
            cursor: ns-resize;
            border-top: 1px solid rgba(255,255,255,0.06);
        }

        .paper-options-card.is-combo-mode .combo-payoff-chart {
            height: min(320px, calc(100vh - 440px));
            min-height: 220px;
        }

        .combo-payoff-svg {
            display: block;
            width: 100%;
            height: 100%;
        }

        .combo-submit-btn,
        .combo-close-btn,
        .combo-cancel-btn {
            height: 28px;
            border: 0;
            border-radius: 6px;
            background: #f2ff00;
            color: #111;
            font-size: 12px;
            font-weight: 700;
            padding: 0 10px;
            cursor: pointer;
        }

        .combo-cancel-btn {
            background: rgba(255,255,255,0.12);
            color: #e6edf3;
        }

        .combo-warning {
            color: #ff5d8f;
            font-size: 11px;
        }

        .combo-position-row {
            justify-content: space-between;
            font-size: 12px;
            flex-wrap: wrap;
        }

        .combo-position-row span {
            display: block;
            color: #8b949e;
            font-size: 10px;
            margin-top: 2px;
        }

        .combo-close-type,
        .combo-close-kind,
        .combo-close-limit {
            height: 26px;
            border: 1px solid rgba(255,255,255,0.12);
            border-radius: 6px;
            background: rgba(0,0,0,0.35);
            color: #e6edf3;
            font-size: 11px;
            padding: 0 6px;
        }

        .combo-close-limit {
            width: 64px;
        }

        ::-webkit-scrollbar { width: 0px; }

        @media (max-width: 767px), (orientation: landscape) and (max-height: 500px) and (min-width: 768px) {
            html[data-layout-mode="mobile"] body[data-mobile-tab="vix"] .left-stack-card .vix-shell {
                flex: 0 0 auto;
                min-height: 0;
                max-height: min(38vh, 330px);
                overflow-y: auto;
                padding-bottom: 10px;
                gap: 10px;
            }
            html[data-layout-mode="mobile"] body[data-mobile-tab="vix"] .left-stack-card .market-breadth-shell {
                flex: 1 1 auto;
                min-height: 0;
                overflow-y: auto;
                padding-top: 12px;
            }
            html[data-layout-mode="mobile"] body[data-mobile-tab="vix"] .left-stack-card .vix-shell .panel-summary-row,
            html[data-layout-mode="mobile"] body[data-mobile-tab="vix"] .left-stack-card .market-breadth-shell .panel-summary-row {
                display: none !important;
            }
            html[data-layout-mode="mobile"] body[data-mobile-tab="vix"] .left-stack-card .vix-topline {
                align-items: center;
                margin-bottom: 0;
            }
            html[data-layout-mode="mobile"] body[data-mobile-tab="vix"] .left-stack-card .vix-price {
                font-size: 26px;
            }
            html[data-layout-mode="mobile"] body[data-mobile-tab="vix"] .left-stack-card .vix-side {
                width: 96px;
            }
            html[data-layout-mode="mobile"] body[data-mobile-tab="vix"] .left-stack-card .vix-grid {
                grid-template-columns: repeat(3, minmax(0, 1fr));
                gap: 7px;
            }
            html[data-layout-mode="mobile"] body[data-mobile-tab="vix"] .left-stack-card .vix-metric {
                padding: 8px 9px;
            }
            html[data-layout-mode="mobile"] body[data-mobile-tab="vix"] .left-stack-card .vix-metric:last-child {
                display: none;
            }
            html[data-layout-mode="mobile"] body[data-mobile-tab="vix"] .left-stack-card .vix-summary {
                padding-top: 8px;
                line-height: 1.45;
            }
        }

        /* ══════════════════════════════════════════════════════════════
           GEX Backtest Panel (user-facing)
           ══════════════════════════════════════════════════════════════ */
        .gbt-controls-bar {
            display: flex;
            align-items: center;
            gap: 8px;
            margin-bottom: 10px;
            flex-shrink: 0;
            flex-wrap: wrap;
        }
        .gbt-btn-group {
            display: flex;
            gap: 3px;
        }
        .gbt-pill {
            height: 24px;
            padding: 0 9px;
            border-radius: 999px;
            border: 1px solid rgba(255,255,255,0.08);
            background: transparent;
            color: rgba(255,255,255,0.42);
            cursor: pointer;
            font-family: 'JetBrains Mono', monospace;
            font-size: 10px;
            font-weight: 700;
            letter-spacing: 0.06em;
            text-transform: uppercase;
            transition: color 0.12s, background 0.12s, border-color 0.12s;
            white-space: nowrap;
        }
        .gbt-pill.active {
            background: rgba(0,255,195,0.1);
            border-color: rgba(0,255,195,0.3);
            color: #00ffc3;
        }
        .gbt-pill:hover:not(.active) {
            color: rgba(255,255,255,0.7);
            background: rgba(255,255,255,0.04);
        }
        .gbt-note {
            font-family: 'JetBrains Mono', monospace;
            font-size: 9px;
            color: rgba(255,255,255,0.28);
        }
        .gbt-algo-toggle-bar {
            display: flex;
            align-items: center;
            gap: 8px;
            padding: 6px 0 8px;
            border-top: 1px solid rgba(255,255,255,0.05);
            margin-bottom: 4px;
            flex-shrink: 0;
        }
        .gbt-algo-toggle-label {
            font-family: 'JetBrains Mono', monospace;
            font-size: 9px;
            font-weight: 700;
            letter-spacing: 0.08em;
            color: rgba(255,255,255,0.35);
            text-transform: uppercase;
            white-space: nowrap;
        }
        .gbt-algo-info-btn {
            width: 22px;
            height: 22px;
            border-radius: 999px;
            border: 1px solid rgba(255,255,255,0.16);
            background: rgba(255,255,255,0.04);
            color: rgba(255,255,255,0.58);
            font-family: 'JetBrains Mono', monospace;
            font-size: 11px;
            font-weight: 900;
            line-height: 1;
            cursor: pointer;
        }
        .gbt-algo-info-btn:hover {
            border-color: rgba(77,166,255,0.45);
            color: #d7ecff;
            background: rgba(77,166,255,0.10);
        }
        #gbt-content {
            flex: 1;
            overflow-y: auto;
            min-height: 0;
            padding-right: 4px;
        }
        #gbt-content::-webkit-scrollbar { width: 4px; }
        #gbt-content::-webkit-scrollbar-track { background: transparent; }
        #gbt-content::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.12); border-radius: 2px; }
        /* Stats card container — 4-column grid */
        #gbt-horse-racing {
            display: grid;
            grid-template-columns: repeat(4, 1fr);
            gap: 8px;
            margin-bottom: 14px;
        }
        .gbt-stat-card {
            background: rgba(255,255,255,0.04);
            border: 1px solid rgba(255,255,255,0.07);
            border-radius: 14px;
            padding: 12px 14px;
        }
        .gbt-stat-kicker {
            font-family: 'JetBrains Mono', monospace;
            font-size: 8px;
            font-weight: 700;
            letter-spacing: 0.12em;
            text-transform: uppercase;
            color: rgba(255,255,255,0.38);
        }
        .gbt-stat-value {
            font-family: 'JetBrains Mono', monospace;
            font-size: 22px;
            font-weight: 700;
            letter-spacing: -0.01em;
            color: #fff;
            margin-top: 8px;
            line-height: 1;
        }
        .gbt-stat-sub {
            font-family: 'JetBrains Mono', monospace;
            font-size: 9px;
            color: rgba(255,255,255,0.45);
            margin-top: 5px;
        }
        .gbt-stat-sub2 {
            font-family: 'JetBrains Mono', monospace;
            font-size: 8px;
            color: rgba(255,255,255,0.28);
            margin-top: 3px;
        }
        /* Section labels */
        .gbt-section-label {
            font-family: 'JetBrains Mono', monospace;
            font-size: 9px;
            font-weight: 700;
            letter-spacing: 0.14em;
            text-transform: uppercase;
            color: rgba(255,255,255,0.3);
            margin-bottom: 6px;
            margin-top: 2px;
        }
        /* Heatmap */
        #gbt-heatmap-section {
            margin-bottom: 14px;
        }
        /* Calendar scroll wrapper */
        .gbt-cal-scroll {
            overflow-x: auto;
        }
        .gbt-cal-scroll::-webkit-scrollbar { height: 3px; }
        .gbt-cal-scroll::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.1); border-radius: 2px; }
        /* Multi-ticker calendar (全部 mode) */
        .gbt-multi-cal-block {
            margin-bottom: 14px;
        }
        .gbt-multi-cal-label {
            font-family: 'JetBrains Mono', monospace;
            font-size: 11px;
            font-weight: 700;
            color: rgba(255,255,255,0.55);
            letter-spacing: 0.06em;
            margin-bottom: 4px;
        }
        /* Legend */
        .gbt-legend {
            display: flex;
            align-items: center;
            gap: 10px;
            flex-wrap: wrap;
            margin-top: 5px;
        }
        .gbt-legend-item {
            display: flex;
            align-items: center;
            gap: 4px;
            font-family: 'JetBrains Mono', monospace;
            font-size: 9px;
            color: rgba(255,255,255,0.4);
        }
        .gbt-legend-dot {
            width: 10px;
            height: 10px;
            border-radius: 2px;
            flex-shrink: 0;
        }
        /* Structure bars */
        #gbt-structure-section {
            margin-bottom: 14px;
        }
        .gbt-struct-row {
            display: flex;
            align-items: center;
            gap: 6px;
            margin-bottom: 4px;
        }
        .gbt-struct-name {
            font-family: 'JetBrains Mono', monospace;
            font-size: 9px;
            color: rgba(255,255,255,0.5);
            width: 70px;
            flex-shrink: 0;
        }
        .gbt-struct-bar-wrap {
            flex: 1;
            height: 6px;
            border-radius: 999px;
            background: rgba(255,255,255,0.08);
            overflow: hidden;
        }
        .gbt-struct-bar { height: 100%; border-radius: 999px; }
        .gbt-struct-pct {
            font-family: 'JetBrains Mono', monospace;
            font-size: 9px;
            font-weight: 700;
            color: rgba(255,255,255,0.6);
            width: 34px;
            text-align: right;
            flex-shrink: 0;
        }
        .gbt-struct-days {
            font-family: 'JetBrains Mono', monospace;
            font-size: 9px;
            color: rgba(255,255,255,0.3);
            width: 30px;
            text-align: right;
            flex-shrink: 0;
        }
        .gbt-struct-q {
            font-family: 'JetBrains Mono', monospace;
            font-size: 9px;
            font-weight: 600;
            width: 56px;
            text-align: right;
            flex-shrink: 0;
            opacity: 0.8;
        }
        /* Horse Racing - extra stats */
        /* Q3 Concentration */
        #gbt-concentration-section { margin-bottom: 14px; }
        .gbt-conc-grid {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 8px;
        }
        .gbt-conc-card {
            background: rgba(255,255,255,0.03);
            border: 1px solid rgba(255,255,255,0.06);
            border-radius: 10px;
            padding: 10px 12px;
            text-align: center;
        }
        .gbt-conc-label {
            font-family: 'JetBrains Mono', monospace;
            font-size: 8px;
            text-transform: uppercase;
            letter-spacing: 0.1em;
            margin-bottom: 4px;
        }
        .gbt-conc-q {
            font-family: 'JetBrains Mono', monospace;
            font-size: 22px;
            font-weight: 700;
            color: rgba(255,255,255,0.88);
            line-height: 1.1;
        }
        .gbt-conc-meta {
            font-family: 'JetBrains Mono', monospace;
            font-size: 8px;
            color: rgba(255,255,255,0.35);
            margin-top: 3px;
        }
        #gbt-v3-imbalance-section { margin: -4px 0 14px; }
        .gbt-v3-imbalance-card {
            background: rgba(77,166,255,0.055);
            border: 1px solid rgba(77,166,255,0.14);
            border-radius: 8px;
            padding: 10px 12px;
        }
        .gbt-v3-imbalance-title {
            font-family: 'JetBrains Mono', monospace;
            font-size: 8px;
            font-weight: 800;
            letter-spacing: 0.12em;
            text-transform: uppercase;
            color: rgba(190,225,255,0.72);
            margin-bottom: 8px;
        }
        .gbt-v3-imbalance-grid {
            display: grid;
            grid-template-columns: repeat(4, minmax(0, 1fr));
            gap: 8px;
        }
        .gbt-v3-imbalance-grid div {
            background: rgba(255,255,255,0.035);
            border-radius: 8px;
            padding: 8px;
            text-align: center;
        }
        .gbt-v3-imbalance-grid span {
            display: block;
            font-family: 'JetBrains Mono', monospace;
            font-size: 8px;
            color: rgba(255,255,255,0.38);
            margin-bottom: 3px;
        }
        .gbt-v3-imbalance-grid b {
            font-family: 'JetBrains Mono', monospace;
            font-size: 15px;
            color: rgba(255,255,255,0.88);
        }
        .gbt-v3-insufficient {
            font-family: 'JetBrains Mono', monospace;
            font-size: 10px;
            color: rgba(255,255,255,0.48);
        }
        /* Q4 Intermediate */
        #gbt-intermediate-section { margin-bottom: 14px; }
        .gbt-inter-grid {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 8px;
        }
        .gbt-inter-card {
            background: rgba(255,255,255,0.03);
            border: 1px solid rgba(255,255,255,0.06);
            border-radius: 10px;
            padding: 10px 8px;
            text-align: center;
        }
        .gbt-inter-label {
            font-family: 'JetBrains Mono', monospace;
            font-size: 7px;
            text-transform: uppercase;
            letter-spacing: 0.08em;
            color: rgba(255,255,255,0.3);
            margin-bottom: 4px;
        }
        .gbt-inter-val {
            font-family: 'JetBrains Mono', monospace;
            font-size: 20px;
            font-weight: 700;
            color: rgba(255,255,255,0.85);
            line-height: 1.1;
        }
        .gbt-inter-sub {
            font-family: 'JetBrains Mono', monospace;
            font-size: 9px;
            color: rgba(255,255,255,0.4);
            margin-top: 2px;
        }
        /* Data Quality */
        #gbt-data-quality-section { margin-bottom: 14px; }
        .gbt-dq-row {
            display: flex;
            align-items: center;
            gap: 12px;
            flex-wrap: wrap;
            background: rgba(255,255,255,0.025);
            border-radius: 8px;
            padding: 8px 10px;
        }
        .gbt-dq-label {
            font-family: 'JetBrains Mono', monospace;
            font-size: 8px;
            text-transform: uppercase;
            letter-spacing: 0.1em;
            color: rgba(255,255,255,0.3);
        }
        .gbt-dq-item {
            font-family: 'JetBrains Mono', monospace;
            font-size: 9px;
            color: rgba(255,255,255,0.55);
        }
        .gbt-dq-item b { color: rgba(255,255,255,0.85); }
        /* Playbook section */
        #gbt-playbook-section { margin-bottom: 14px; }
        /* Detail table */
        #gbt-detail-section {
            margin-bottom: 8px;
        }
        .gbt-detail-toggle {
            display: flex;
            align-items: center;
            gap: 6px;
            background: none;
            border: none;
            cursor: pointer;
            font-family: 'JetBrains Mono', monospace;
            font-size: 10px;
            font-weight: 700;
            color: rgba(255,255,255,0.5);
            padding: 4px 0;
            transition: color 0.15s;
            margin-bottom: 6px;
        }
        .gbt-detail-toggle:hover { color: rgba(255,255,255,0.85); }
        .gbt-detail-wrap {
            background: rgba(255,255,255,0.03);
            border: 1px solid rgba(255,255,255,0.07);
            border-radius: 14px;
            padding: 10px 10px 6px;
        }
        .gbt-pagination-bar {
            display: flex;
            align-items: center;
            justify-content: space-between;
            margin-bottom: 8px;
            flex-shrink: 0;
            padding: 0 2px;
        }
        .gbt-page-btn {
            height: 28px;
            padding: 0 12px;
            border-radius: 8px;
            border: 1px solid rgba(255,255,255,0.12);
            background: rgba(255,255,255,0.04);
            color: rgba(255,255,255,0.65);
            cursor: pointer;
            font-family: 'JetBrains Mono', monospace;
            font-size: 9px;
            font-weight: 700;
            transition: background 0.12s, color 0.12s;
        }
        .gbt-page-btn:hover:not(:disabled) { background: rgba(255,255,255,0.08); color: #fff; border-color: rgba(255,255,255,0.2); }
        .gbt-page-btn:disabled { opacity: 0.3; cursor: not-allowed; }
        .gbt-table-wrap { overflow-x: auto; }
        .gbt-table {
            width: 100%;
            border-collapse: collapse;
            font-family: 'JetBrains Mono', monospace;
            font-size: 10px;
            white-space: nowrap;
        }
        .gbt-table th {
            text-align: left;
            padding: 5px 8px;
            font-size: 9px;
            font-weight: 700;
            letter-spacing: 0.08em;
            text-transform: uppercase;
            color: rgba(255,255,255,0.3);
            border-bottom: 1px solid rgba(255,255,255,0.06);
        }
        .gbt-table td {
            padding: 5px 8px;
            border-bottom: 1px solid rgba(255,255,255,0.04);
            color: rgba(255,255,255,0.72);
        }
        .gbt-table tbody tr:hover td { background: rgba(255,255,255,0.02); }
        .gbt-signal-strong { color: #00ffc3; }
        .gbt-signal-medium { color: #f2c94c; }
        .gbt-signal-weak   { color: rgba(255,255,255,0.35); }
        .gbt-algo-modal-backdrop {
            position: fixed;
            inset: 0;
            z-index: 360;
            display: none;
            align-items: center;
            justify-content: center;
            padding: 20px;
            background: rgba(0,0,0,0.62);
            backdrop-filter: blur(10px);
        }
        .gbt-algo-modal-backdrop.open { display: flex; }
        .gbt-algo-modal-panel {
            width: min(940px, calc(100vw - 28px));
            max-height: min(760px, calc(100vh - 40px));
            overflow-y: auto;
            background: #070a0f;
            border: 1px solid rgba(255,255,255,0.12);
            border-radius: 8px;
            box-shadow: 0 24px 80px rgba(0,0,0,0.55);
            padding: 18px;
        }
        .gbt-algo-modal-head {
            display: flex;
            justify-content: space-between;
            gap: 18px;
            align-items: flex-start;
            margin-bottom: 16px;
        }
        .gbt-algo-modal-title {
            font-family: 'JetBrains Mono', monospace;
            font-size: 15px;
            font-weight: 900;
            color: #fff;
        }
        .gbt-algo-modal-subtitle {
            margin-top: 5px;
            font-size: 12px;
            line-height: 1.55;
            color: rgba(255,255,255,0.52);
        }
        .gbt-algo-modal-close {
            width: 28px;
            height: 28px;
            border-radius: 8px;
            border: 1px solid rgba(255,255,255,0.12);
            background: rgba(255,255,255,0.05);
            color: rgba(255,255,255,0.72);
            cursor: pointer;
            font-size: 18px;
            line-height: 1;
        }
        .gbt-algo-modal-cards {
            display: grid;
            grid-template-columns: repeat(3, minmax(0, 1fr));
            gap: 10px;
        }
        .gbt-algo-modal-card {
            border: 1px solid rgba(255,255,255,0.10);
            border-radius: 8px;
            background: rgba(255,255,255,0.035);
            padding: 13px;
        }
        .gbt-algo-modal-card.is-default {
            border-color: rgba(0,255,195,0.38);
            background: rgba(0,255,195,0.055);
        }
        .gbt-algo-modal-card.is-v3 {
            border-color: rgba(77,166,255,0.30);
            background: rgba(77,166,255,0.055);
        }
        .gbt-algo-card-top {
            display: flex;
            justify-content: space-between;
            gap: 8px;
            align-items: center;
            margin-bottom: 12px;
            font-family: 'JetBrains Mono', monospace;
        }
        .gbt-algo-card-top span {
            font-size: 14px;
            font-weight: 900;
            color: #fff;
        }
        .gbt-algo-card-top b {
            font-size: 9px;
            color: rgba(255,255,255,0.52);
            text-align: right;
        }
        .gbt-algo-modal-card dl { margin: 0; }
        .gbt-algo-modal-card dt {
            margin-top: 10px;
            font-family: 'JetBrains Mono', monospace;
            font-size: 8px;
            font-weight: 800;
            letter-spacing: 0.10em;
            text-transform: uppercase;
            color: rgba(255,255,255,0.38);
        }
        .gbt-algo-modal-card dd {
            margin: 3px 0 0;
            font-size: 12px;
            line-height: 1.55;
            color: rgba(255,255,255,0.72);
        }
        .gbt-algo-shared {
            margin-top: 12px;
            border: 1px solid rgba(255,255,255,0.08);
            border-radius: 8px;
            padding: 12px;
            background: rgba(255,255,255,0.025);
        }
        .gbt-algo-shared-title {
            font-family: 'JetBrains Mono', monospace;
            font-size: 9px;
            font-weight: 900;
            letter-spacing: 0.12em;
            text-transform: uppercase;
            color: rgba(255,255,255,0.46);
            margin-bottom: 8px;
        }
        .gbt-algo-shared-row {
            display: grid;
            grid-template-columns: 90px 1fr;
            gap: 10px;
            padding: 6px 0;
            border-top: 1px solid rgba(255,255,255,0.05);
            font-size: 12px;
        }
        .gbt-algo-shared-row span {
            color: rgba(255,255,255,0.38);
            font-family: 'JetBrains Mono', monospace;
            font-size: 9px;
            font-weight: 800;
        }
        .gbt-algo-shared-row b {
            color: rgba(255,255,255,0.72);
            font-weight: 500;
        }
        /* Mobile: hide detail section */
        @media (max-width: 767px) {
            #gbt-horse-racing { grid-template-columns: repeat(2, 1fr); }
            #gbt-detail-section { display: none; }
            .gbt-algo-modal-cards { grid-template-columns: 1fr; }
            .gbt-v3-imbalance-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
            .gbt-algo-shared-row { grid-template-columns: 1fr; gap: 4px; }
        }

/* ============ UOA Panel — neon terminal refresh ============ */
#uoa-panel { animation: uoa-fade-in 0.4s ease both; }
@keyframes uoa-fade-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }

.uoa-head {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 18px;
    padding: 2px 2px 14px;
    border-bottom: 1px solid rgba(0, 255, 195, 0.16);
    position: relative;
}
.uoa-head::after {
    content: '';
    position: absolute; left: 0; bottom: -1px; height: 1px; width: 230px;
    background: linear-gradient(90deg, #00ffc3, rgba(0, 255, 195, 0));
    box-shadow: 0 0 12px rgba(0, 255, 195, 0.55);
}
.uoa-head-main { min-width: 0; }
.uoa-kicker {
    font-family: 'JetBrains Mono', monospace;
    font-size: 9px; font-weight: 700; letter-spacing: 0.24em;
    text-transform: uppercase; color: rgba(0, 255, 195, 0.55); margin-bottom: 7px;
}
.uoa-title {
    font-size: 20px; font-weight: 800; letter-spacing: -0.01em;
    color: #f2ff00; display: flex; align-items: center; gap: 10px;
    text-shadow: 0 0 18px rgba(242, 255, 0, 0.28);
}
.uoa-title::before {
    content: ''; width: 8px; height: 8px; border-radius: 50%;
    background: #00ffc3; box-shadow: 0 0 8px #00ffc3, 0 0 16px rgba(0, 255, 195, 0.6);
    animation: uoa-pulse 2s ease-in-out infinite;
}
@keyframes uoa-pulse { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: 0.4; transform: scale(0.7); } }
.uoa-meta { color: #8b949e; font-size: 11.5px; margin-top: 7px; font-family: 'JetBrains Mono', monospace; letter-spacing: 0.02em; }
.uoa-disclaimer { color: #6f7d8c; font-size: 11px; line-height: 1.65; margin: 14px 0 4px; padding-left: 11px; border-left: 2px solid rgba(255, 209, 102, 0.45); }
.uoa-state { color: #8b949e; font-size: 13px; padding: 26px; text-align: center; }
.uoa-error { color: #ff6b6b; }
.uoa-scroll { flex: 1; min-height: 0; overflow: auto; padding: 14px 2px 26px; }
.uoa-scroll::-webkit-scrollbar { width: 6px; }
.uoa-scroll::-webkit-scrollbar-thumb { background: rgba(0, 255, 195, 0.16); border-radius: 3px; }

/* Calendar — compact date-picker + dropdown popover */
.uoa-calendar { position: relative; flex: none; }
.uoa-cal-trigger {
    display: inline-flex; align-items: center; gap: 8px;
    border: 1px solid rgba(0, 255, 195, 0.22); background: rgba(0, 255, 195, 0.05);
    color: #d7fff5; border-radius: 9px; padding: 8px 12px;
    font-family: 'JetBrains Mono', monospace; font-size: 12px; font-weight: 600;
    cursor: pointer; transition: all 0.15s ease; white-space: nowrap;
}
.uoa-cal-trigger:hover, .uoa-cal-trigger.open {
    border-color: rgba(0, 255, 195, 0.5); background: rgba(0, 255, 195, 0.1); color: #00ffc3;
    box-shadow: 0 0 12px rgba(0, 255, 195, 0.25);
}
.uoa-cal-ico { width: 13px; height: 13px; border: 1.5px solid currentColor; border-radius: 3px; position: relative; flex: none; }
.uoa-cal-ico::before { content: ''; position: absolute; left: 1px; right: 1px; top: 3px; height: 1.5px; background: currentColor; }
.uoa-cal-caret { font-size: 10px; opacity: 0.7; transition: transform 0.15s ease; }
.uoa-cal-trigger.open .uoa-cal-caret { transform: rotate(180deg); }
.uoa-cal-pop {
    position: absolute; right: 0; top: calc(100% + 8px); z-index: 60;
    width: 248px; max-width: calc(100vw - 40px); padding: 12px;
    background: #0c1014; border: 1px solid rgba(0, 255, 195, 0.2);
    border-radius: 12px; box-shadow: 0 12px 32px rgba(0, 0, 0, 0.5);
    display: none; animation: uoa-cal-pop-in 0.16s ease;
}
.uoa-cal-pop.open { display: block; }
@keyframes uoa-cal-pop-in { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
.uoa-cal-head, .uoa-cal-week, .uoa-cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.uoa-cal-head { grid-template-columns: 30px 1fr 30px; align-items: center; margin-bottom: 8px; color: #e6edf3; }
.uoa-cal-head strong { text-align: center; font-family: 'JetBrains Mono', monospace; font-size: 12px; letter-spacing: 0.05em; }
.uoa-cal-week { color: #5c6773; font-size: 9px; text-align: center; margin-bottom: 4px; font-weight: 700; }
.uoa-cal-head button, .uoa-cal-grid button {
    border: 1px solid rgba(0, 255, 195, 0.14);
    background: rgba(0, 255, 195, 0.04);
    color: #d7fff5;
    border-radius: 7px;
    min-height: 27px;
    font-size: 11px;
    font-family: 'JetBrains Mono', monospace;
    cursor: pointer;
    transition: all 0.15s ease;
}
.uoa-cal-head button:hover, .uoa-cal-grid button:not(:disabled):hover {
    background: rgba(0, 255, 195, 0.14); border-color: rgba(0, 255, 195, 0.45); color: #00ffc3;
}
.uoa-cal-grid button:disabled { opacity: 0.16; cursor: default; border-color: transparent; background: transparent; }
.uoa-cal-grid button.active {
    border-color: #f2ff00; color: #08110a; font-weight: 700;
    background: linear-gradient(135deg, #f2ff00, #b8ff4a);
    box-shadow: 0 0 14px rgba(242, 255, 0, 0.5);
}

/* Hero stat band */
.uoa-hero { display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; margin: 16px 0 14px; }
.uoa-stat {
    position: relative; border-radius: 13px; padding: 13px 15px;
    background: linear-gradient(160deg, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.012));
    border: 1px solid rgba(255, 255, 255, 0.07); overflow: hidden;
}
.uoa-stat::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; }
.uoa-stat-call::before { background: linear-gradient(#2bd97c, #00ffc3); box-shadow: 0 0 10px rgba(0, 255, 195, 0.55); }
.uoa-stat-put::before { background: linear-gradient(#ff5d7a, #ff9a3d); box-shadow: 0 0 10px rgba(255, 93, 122, 0.55); }
.uoa-stat-ratio::before { background: linear-gradient(#f2ff00, #b8ff4a); box-shadow: 0 0 10px rgba(242, 255, 0, 0.55); }
.uoa-stat-k { display: block; font-family: 'JetBrains Mono', monospace; font-size: 9px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: rgba(255, 255, 255, 0.4); }
.uoa-stat-v { display: block; font-family: 'JetBrains Mono', monospace; font-size: 21px; font-weight: 700; line-height: 1; margin-top: 10px; color: #fff; }
.uoa-stat-call .uoa-stat-v { color: #5cffb0; }
.uoa-stat-put .uoa-stat-v { color: #ff8aa0; }
.uoa-stat-ratio .uoa-stat-v { color: #f2ff00; text-shadow: 0 0 14px rgba(242, 255, 0, 0.35); }

/* Flow balance bar */
.uoa-balance { margin: 8px 0 4px; }
.uoa-balance-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 7px; font-family: 'JetBrains Mono', monospace; }
.uoa-balance-head > span:first-child { font-size: 9px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: rgba(255, 255, 255, 0.38); }
.uoa-balance-nums { font-size: 12px; }
.uoa-balance-nums .c { color: #5cffb0; }
.uoa-balance-nums .p { color: #ff8aa0; }
.uoa-balance-bar { display: flex; height: 10px; border-radius: 6px; overflow: hidden; background: rgba(255, 255, 255, 0.05); box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.6); }
.uoa-balance-call { background: linear-gradient(90deg, #00ffc3, #2bd97c); box-shadow: 0 0 12px rgba(0, 255, 195, 0.5); transition: width 0.6s cubic-bezier(0.4, 0, 0.2, 1); }
.uoa-balance-put { background: linear-gradient(90deg, #ff9a3d, #ff5d7a); box-shadow: 0 0 12px rgba(255, 93, 122, 0.45); transition: width 0.6s cubic-bezier(0.4, 0, 0.2, 1); }

/* Sections */
.uoa-section { margin-top: 22px; }
.uoa-section-head { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }
.uoa-section h3 { color: #00ffc3; font-size: 13px; font-weight: 700; margin: 0; letter-spacing: 0.02em; position: relative; padding-left: 12px; }
.uoa-section h3::before { content: ''; position: absolute; left: 0; top: 1px; bottom: 1px; width: 3px; border-radius: 2px; background: #00ffc3; box-shadow: 0 0 8px rgba(0, 255, 195, 0.7); }
.uoa-count { font-family: 'JetBrains Mono', monospace; font-size: 9px; font-weight: 700; letter-spacing: 0.1em; color: rgba(255, 255, 255, 0.4); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 999px; padding: 2px 9px; }

/* Tables */
.uoa-table-wrap { overflow: auto; border: 1px solid rgba(255, 255, 255, 0.06); border-radius: 12px; background: rgba(255, 255, 255, 0.012); }
.uoa-table-wrap::-webkit-scrollbar { height: 6px; }
.uoa-table-wrap::-webkit-scrollbar-thumb { background: rgba(0, 255, 195, 0.16); border-radius: 3px; }
.uoa-table { width: 100%; border-collapse: collapse; min-width: 820px; font-size: 11px; font-family: 'JetBrains Mono', monospace; }
.uoa-table thead th { position: sticky; top: 0; z-index: 1; background: #0c1014; color: #6f7d8c; font-weight: 700; font-size: 9px; letter-spacing: 0.08em; text-transform: uppercase; padding: 9px 10px; border-bottom: 1px solid rgba(0, 255, 195, 0.18); white-space: nowrap; text-align: right; }
.uoa-table td { padding: 8px 10px; border-bottom: 1px solid rgba(255, 255, 255, 0.05); text-align: right; white-space: nowrap; color: #c9d4de; }
.uoa-table tbody tr { transition: background 0.12s ease; }
.uoa-table tbody tr:hover { background: rgba(0, 255, 195, 0.06); }
.uoa-table th:nth-child(2), .uoa-table td:nth-child(2),
.uoa-table th:nth-child(5), .uoa-table td:nth-child(5) { text-align: left; }
.uoa-table th:nth-child(3), .uoa-table td:nth-child(3) { text-align: center; }
.uoa-table th.uoa-rank, .uoa-table td.uoa-rank { text-align: center; width: 36px; }
.uoa-table td.uoa-sym { font-weight: 700; color: #e6edf3; }
.uoa-kline-link { background: none; border: none; padding: 0; margin: 0; font: inherit; font-weight: 700; color: #5b9cff; cursor: pointer; display: inline-flex; align-items: center; gap: 4px; line-height: 1; }
.uoa-kline-link:hover { color: #8fbfff; text-decoration: underline; }
.uoa-kline-ic { flex: none; opacity: 0.8; }

.uoa-rank-badge { display: inline-block; min-width: 18px; font-size: 11px; font-weight: 700; color: rgba(255, 255, 255, 0.38); }
.uoa-rank-badge.rank-1 { color: #ffd700; text-shadow: 0 0 8px rgba(255, 215, 0, 0.6); }
.uoa-rank-badge.rank-2 { color: #cfd8e3; text-shadow: 0 0 6px rgba(207, 216, 227, 0.5); }
.uoa-rank-badge.rank-3 { color: #e8985e; text-shadow: 0 0 6px rgba(232, 152, 94, 0.5); }

.uoa-pill { display: inline-block; padding: 2px 9px; border-radius: 999px; font-size: 9px; font-weight: 700; letter-spacing: 0.05em; }
.uoa-pill-call { color: #5cffb0; background: rgba(0, 255, 195, 0.12); border: 1px solid rgba(0, 255, 195, 0.35); }
.uoa-pill-put { color: #ff8aa0; background: rgba(255, 93, 122, 0.12); border: 1px solid rgba(255, 93, 122, 0.35); }
.uoa-voi { color: #f2ff00; font-weight: 700; }

.uoa-notional { position: relative; }
.uoa-notional .uoa-bar { position: absolute; right: 0; top: 50%; transform: translateY(-50%); height: 18px; border-radius: 4px; background: linear-gradient(90deg, rgba(0, 255, 195, 0), rgba(0, 255, 195, 0.22)); pointer-events: none; }
.uoa-notional b { position: relative; color: #e6edf3; font-weight: 700; }

.uoa-low-liq td { color: #ffd166; }
.uoa-warn { color: #ffb454; cursor: help; }

/* Symbol / CALL-PUT mix cards */
.uoa-bias-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(192px, 1fr)); gap: 10px; }
.uoa-bias-item { border: 1px solid rgba(255, 255, 255, 0.08); border-radius: 12px; padding: 12px; background: linear-gradient(160deg, rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0.01)); transition: transform 0.15s ease, box-shadow 0.15s ease; }
.uoa-bias-item:hover { transform: translateY(-2px); box-shadow: 0 6px 18px rgba(0, 0, 0, 0.35); }
.uoa-bias-call_heavy { border-color: rgba(0, 255, 195, 0.3); }
.uoa-bias-put_heavy { border-color: rgba(255, 93, 122, 0.3); }
.uoa-bias-top { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.uoa-bias-top strong { color: #e6edf3; font-size: 14px; font-weight: 700; }
.uoa-bias-badge { font-size: 8.5px; font-weight: 700; letter-spacing: 0.05em; padding: 2px 8px; border-radius: 999px; text-transform: uppercase; font-family: 'JetBrains Mono', monospace; white-space: nowrap; }
.uoa-bias-call_heavy .uoa-bias-badge { color: #5cffb0; background: rgba(0, 255, 195, 0.12); }
.uoa-bias-put_heavy .uoa-bias-badge { color: #ff8aa0; background: rgba(255, 93, 122, 0.12); }
.uoa-bias-mixed .uoa-bias-badge { color: #aab4c0; background: rgba(255, 255, 255, 0.07); }
.uoa-bias-notional { font-family: 'JetBrains Mono', monospace; font-size: 16px; font-weight: 700; color: #f2ff00; margin: 9px 0; }
.uoa-bias-bar { display: flex; height: 6px; border-radius: 4px; overflow: hidden; background: rgba(255, 93, 122, 0.4); }
.uoa-bias-bar span { background: linear-gradient(90deg, #00ffc3, #2bd97c); box-shadow: 0 0 8px rgba(0, 255, 195, 0.4); }
.uoa-bias-pct { display: flex; justify-content: space-between; margin-top: 6px; font-family: 'JetBrains Mono', monospace; font-size: 9px; }
.uoa-bias-pct .c { color: #5cffb0; }
.uoa-bias-pct .p { color: #ff8aa0; }

/* NXTT TitanFlow scanner */
.scanner-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 0 8px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}
.scanner-title {
    color: #e6edf3;
    font-size: 14px;
    font-weight: 900;
}
.scanner-sub {
    color: rgba(255, 255, 255, 0.42);
    font-family: 'JetBrains Mono', monospace;
    font-size: 10px;
}
.scanner-actions {
    display: flex;
    align-items: center;
    gap: 8px;
}
.scanner-search,
.scanner-select {
    height: 28px;
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 6px;
    background: rgba(255, 255, 255, 0.04);
    color: #d7e1ea;
    font-size: 11px;
    padding: 0 8px;
}
.scanner-search {
    width: 132px;
}
.scanner-refresh,
.scanner-pill,
.scanner-detail-btn,
.scanner-index-btn,
.scanner-close {
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 6px;
    background: rgba(255, 255, 255, 0.04);
    color: #d7e1ea;
    font-size: 11px;
    font-weight: 800;
    height: 28px;
    padding: 0 10px;
}
.scanner-index-btn {
    border-color: rgba(248, 81, 73, 0.4);
    color: #f0a39a;
    cursor: pointer;
    white-space: nowrap;
}
a.scanner-index-btn {
    display: inline-flex;
    align-items: center;
    text-decoration: none;
    border-color: rgba(34, 211, 238, 0.4);
    color: #7dd3e8;
}
.scanner-refresh:hover,
.scanner-pill:hover,
.scanner-detail-btn:hover,
.scanner-index-btn:hover,
.scanner-close:hover {
    border-color: rgba(0, 255, 195, 0.32);
    color: #00ffc3;
}
.scanner-filterbar {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    padding: 9px 0;
}
/* 桌面默认隐藏「筛选」按钮 + 抽屉外壳；仅 <768 移动端启用 */
.scanner-filter-btn,
.scanner-drawer-head,
.scanner-drawer-close,
.scanner-drawer-mask { display: none; }
.scanner-stale-badge {
    display: inline-flex;
    align-items: center;
    margin-left: 6px;
    padding: 1px 6px;
    border-radius: 4px;
    background: rgba(242, 201, 76, 0.12);
    color: #f2c94c;
    font-size: 9px;
    font-weight: 800;
    white-space: nowrap;
}
.scanner-skel-col { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.scanner-skel-card {
    border: 1px solid rgba(255, 255, 255, 0.06);
    border-radius: 8px;
    padding: 12px;
    background: rgba(5, 6, 8, 0.6);
}
.scanner-skel-line {
    height: 10px;
    border-radius: 4px;
    margin-bottom: 8px;
    background: linear-gradient(90deg, rgba(255,255,255,0.05) 25%, rgba(255,255,255,0.12) 37%, rgba(255,255,255,0.05) 63%);
    background-size: 400% 100%;
    animation: scanner-skel 1.4s ease infinite;
}
.scanner-skel-line.w40 { width: 40%; }
.scanner-skel-line.w70 { width: 70%; }
.scanner-skel-line.w90 { width: 90%; }
.scanner-skel-line:last-child { margin-bottom: 0; }
@keyframes scanner-skel { 0% { background-position: 100% 50%; } 100% { background-position: 0 50%; } }
.scanner-empty .scanner-refresh { margin-top: 10px; }
.scanner-pill-row {
    display: flex;
    gap: 5px;
    flex-wrap: wrap;
}
.scanner-pill.active {
    border-color: rgba(0, 255, 195, 0.42);
    background: rgba(0, 255, 195, 0.12);
    color: #00ffc3;
}
.scanner-check {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    color: rgba(255, 255, 255, 0.55);
    font-size: 11px;
    user-select: none;
}
.scanner-body {
    min-height: 0;
    overflow: auto;
    padding-right: 2px;
}
.scanner-resonance {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin-bottom: 10px;
    padding: 8px 10px;
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.022);
}
/* spec B 决策层：grade 徽章 / 板块优先级 chip / 大盘指数态 strip */
.scanner-grade {
    background: rgba(0, 255, 195, 0.12);
    border-color: rgba(0, 255, 195, 0.32) !important;
    color: #00ffc3;
    font-weight: 900;
}
.scanner-board-prio { font-weight: 800; }
.scanner-board-prio.prio-p1 { background: rgba(0, 255, 140, 0.14); border-color: rgba(0, 255, 140, 0.3); color: #5dffb0; }
.scanner-board-prio.prio-p2 { background: rgba(120, 200, 255, 0.12); border-color: rgba(120, 200, 255, 0.28); color: #9bd2ff; }
.scanner-board-prio.prio-p3 { background: rgba(255, 210, 120, 0.12); border-color: rgba(255, 210, 120, 0.26); color: #ffd27a; }
.scanner-board-prio.prio-p4 { background: rgba(255, 255, 255, 0.06); border-color: rgba(255, 255, 255, 0.16); color: rgba(255, 255, 255, 0.6); }
.scanner-mkt-status {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 10px;
    padding: 7px 10px;
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.022);
}
.scanner-mkt-label {
    flex: 0 0 auto;
    color: rgba(255, 255, 255, 0.62);
    font-family: 'JetBrains Mono', monospace;
    font-size: 10px;
    font-weight: 900;
}
.scanner-mkt-chips { display: flex; flex-wrap: wrap; gap: 6px; min-width: 0; }
.scanner-mkt-chip {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 2px 8px;
    border-radius: 5px;
    cursor: pointer;
    font-family: 'JetBrains Mono', monospace;
    font-size: 10px;
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid rgba(255, 255, 255, 0.1);
    color: rgba(255, 255, 255, 0.55);
}
.scanner-mkt-chip.on { background: rgba(0, 255, 195, 0.1); border-color: rgba(0, 255, 195, 0.3); color: #00ffc3; }
.scanner-mkt-chip.on i { opacity: 0.85; font-style: normal; }
.scanner-mkt-chip:hover { border-color: rgba(0, 255, 195, 0.4); }
.scanner-reso-row {
    display: flex;
    align-items: flex-start;
    gap: 8px;
}
.scanner-reso-label {
    flex: 0 0 auto;
    min-width: 56px;
    padding-top: 2px;
    color: rgba(255, 255, 255, 0.62);
    font-family: 'JetBrains Mono', monospace;
    font-size: 10px;
    font-weight: 900;
}
.scanner-reso-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    min-width: 0;
}
.scanner-reso-chip {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 2px 7px;
    border-radius: 5px;
    background: rgba(0, 255, 195, 0.08);
    border: 1px solid rgba(0, 255, 195, 0.16);
    font-family: 'JetBrains Mono', monospace;
    font-size: 9px;
    line-height: 1.4;
    cursor: pointer;
    transition: border-color 0.12s ease, background 0.12s ease, box-shadow 0.12s ease;
}
.scanner-reso-chip:hover { border-color: rgba(0, 255, 195, 0.45); background: rgba(0, 255, 195, 0.13); }
.scanner-reso-chip:focus-visible { outline: none; border-color: rgba(0, 255, 195, 0.6); }
.scanner-reso-chip.on {
    background: rgba(0, 255, 195, 0.2);
    border-color: rgba(0, 255, 195, 0.65);
    box-shadow: 0 0 0 1px rgba(0, 255, 195, 0.35) inset;
}
.scanner-reso-chip.on b { color: #d6fff4; }
.scanner-reso-chip b { color: #e6edf3; font-weight: 900; }
.scanner-reso-chip i { color: rgba(255, 255, 255, 0.5); font-style: normal; }
.scanner-reso-chip em { color: #00ffc3; font-style: normal; font-weight: 900; }
/* ── 排行榜卡片条（回测胜率排序 / 信号强度排序，对标竞品 top_cards 底部条）── */
.scanner-leaderboard {
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.018);
    padding: 8px;
    margin-bottom: 10px;
    min-width: 0;
}
.scanner-lb-bar {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    margin-bottom: 8px;
}
.scanner-rank-tabs {
    display: inline-flex;
    gap: 4px;
    padding: 3px;
    border-radius: 7px;
    background: rgba(0, 0, 0, 0.3);
}
.scanner-rank-tab {
    padding: 5px 12px;
    border: 0;
    border-radius: 5px;
    background: transparent;
    color: rgba(255, 255, 255, 0.55);
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    font-weight: 800;
    cursor: pointer;
    transition: background 0.16s ease, color 0.16s ease;
}
.scanner-rank-tab.on {
    background: rgba(0, 255, 195, 0.14);
    color: #00ffc3;
}
/* 趋势视图（spec trend-signal-scanner §6）：视图切换 + 趋势卡 score-less */
.scanner-view-tabs {
    display: inline-flex;
    gap: 4px;
    padding: 3px;
    margin: 0 0 8px;
    border-radius: 7px;
    background: rgba(0, 0, 0, 0.3);
}
.scanner-view-tab {
    padding: 5px 14px;
    border: 0;
    border-radius: 5px;
    background: transparent;
    color: rgba(255, 255, 255, 0.55);
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    font-weight: 800;
    cursor: pointer;
    transition: background 0.16s ease, color 0.16s ease;
}
.scanner-view-tab.on {
    background: rgba(0, 255, 195, 0.14);
    color: #00ffc3;
}
.scanner-trend-filters {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    padding: 8px 0;
}
.scanner-kind-row {
    display: inline-flex;
    flex-wrap: wrap;
    gap: 6px;
}
.scanner-kind-chip {
    cursor: pointer;
    min-height: 22px;
    padding: 0 9px;
    font-size: 10px;
    opacity: 0.5;
}
.scanner-kind-chip.on { opacity: 1; }
.scanner-trend-tag {
    background: rgba(120, 170, 255, 0.14);
    color: #9ec1ff;
}
.scanner-invalid-tag {
    background: rgba(255, 255, 255, 0.08);
    color: rgba(255, 255, 255, 0.5);
}
.scanner-near-tag {
    background: rgba(0, 255, 195, 0.12);
    color: #00ffc3;
}
.scanner-date-btn {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid rgba(255, 255, 255, 0.14);
    border-radius: 5px;
    color: rgba(255, 255, 255, 0.82);
    font-family: 'JetBrains Mono', monospace;
    font-size: 10px;
    font-weight: 700;
    padding: 4px 9px;
    cursor: pointer;
    transition: border-color 0.16s ease, color 0.16s ease;
}
.scanner-date-btn:hover {
    border-color: rgba(0, 255, 195, 0.4);
    color: #00ffc3;
}
.scanner-date-clear {
    cursor: pointer;
    background: rgba(120, 170, 255, 0.14);
    color: #9ec1ff;
}
.scanner-trend-row.scanner-invalidated { opacity: 0.5; }
/* 趋势卡响应式多列网格：宽屏自动铺多列，避免右侧大片留白 */
.scanner-trend-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(min(380px, 100%), 1fr));
    gap: 10px;
    align-content: start;
}
/* 趋势卡指标改 2×2，容纳 价格/偏离/失效位/失效距离 四项不挤 */
.scanner-row-metrics.scanner-trend-metrics {
    grid-template-columns: repeat(2, auto);
    row-gap: 6px;
}
/* 13D/G 机构监控事件流 */
.institutional-head { margin-top: 2px; }
.institutional-filters { align-items: flex-start; }
.institutional-type-row { flex: 1 1 100%; }
.institutional-type-row .scanner-kind-chip { border: 1px solid transparent; }
.institutional-type-row .scanner-kind-chip.on { border-color: currentColor; }
.institutional-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(min(340px, 100%), 1fr));
    gap: 10px;
    align-content: start;
}
.institutional-card {
    min-width: 0;
    padding: 13px;
    border: 1px solid rgba(255, 255, 255, 0.09);
    border-radius: 9px;
    background: linear-gradient(145deg, rgba(20, 27, 38, 0.94), rgba(8, 12, 18, 0.96));
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.025);
}
.institutional-card-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 10px;
}
.institutional-holder {
    margin-top: 11px;
    min-height: 32px;
    color: rgba(255, 255, 255, 0.9);
    font-size: 12px;
    font-weight: 700;
    line-height: 1.35;
    overflow-wrap: anywhere;
}
.institutional-holder span { color: #9ec1ff; font-size: 10px; }
.institutional-metrics {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 7px;
    margin-top: 10px;
}
.institutional-metrics > div {
    min-width: 0;
    padding: 7px 8px;
    border-radius: 6px;
    background: rgba(255, 255, 255, 0.035);
}
.institutional-metrics span {
    display: block;
    color: rgba(255, 255, 255, 0.42);
    font-size: 9px;
    line-height: 1.25;
}
.institutional-metrics b {
    display: block;
    margin-top: 3px;
    color: rgba(255, 255, 255, 0.9);
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    overflow-wrap: anywhere;
}
.institutional-card-foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 7px;
    min-height: 22px;
    margin-top: 9px;
    color: rgba(255, 255, 255, 0.42);
    font-size: 9px;
}
.institutional-sec-link { color: #9ec1ff; text-decoration: none; }
.institutional-sec-link:hover { color: #d5e3ff; text-decoration: underline; }
.institutional-kline {
    flex: 0 0 auto;
    width: 30px;
    height: 30px;
    border: 1px solid rgba(0, 255, 195, 0.28);
    border-radius: 6px;
    background: rgba(0, 255, 195, 0.08);
    color: #00ffc3;
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    font-weight: 900;
    cursor: pointer;
}
.institutional-kline:hover { background: rgba(0, 255, 195, 0.16); }
.institutional-more-wrap { display: flex; justify-content: center; padding: 14px 0 4px; }
.institutional-disclaimer {
    margin: 12px 0 2px;
    padding: 9px 11px;
    border-left: 2px solid rgba(158, 193, 255, 0.45);
    background: rgba(158, 193, 255, 0.055);
    color: rgba(255, 255, 255, 0.48);
    font-size: 9px;
    line-height: 1.55;
}
.scanner-chip.inst-active { background: rgba(255, 128, 92, 0.14); color: #ff9f7f; }
.scanner-chip.inst-passive { background: rgba(158, 193, 255, 0.13); color: #9ec1ff; }
.scanner-chip.inst-up { background: rgba(0, 255, 195, 0.12); color: #00ffc3; }
.scanner-chip.inst-down { background: rgba(255, 99, 110, 0.13); color: #ff7b85; }
.scanner-chip.inst-muted { background: rgba(255, 255, 255, 0.07); color: rgba(255, 255, 255, 0.55); }
.scanner-chip.inst-quality { background: rgba(250, 204, 21, 0.1); color: #facc15; }
@media (max-width: 700px) {
    .institutional-grid { grid-template-columns: 1fr; }
    .institutional-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .institutional-metrics > div:last-child { grid-column: 1 / -1; }
}
/* 跨周期背离卡：独立竖排 flex 布局（不复用 .scanner-row 的 2 列网格，
   避免「大/小周期起于」长日期撑爆 auto 指标列、把主列挤到逐字换行）。 */
.scanner-mtf-card {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 10px;
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: 8px;
    background: rgba(5, 6, 8, 0.82);
    min-width: 0;
}
.scanner-mtf-head {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}
.scanner-mtf-head strong {
    color: #e6edf3;
    font-size: 13px;
    font-weight: 900;
}
.scanner-mtf-name {
    color: rgba(255, 255, 255, 0.58);
    font-size: 10px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.scanner-mtf-metrics {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 6px;
}
.scanner-mtf-metrics > div { min-width: 0; }
.scanner-mtf-metrics span {
    display: block;
    color: rgba(255, 255, 255, 0.36);
    font-size: 9px;
}
.scanner-mtf-metrics b {
    display: block;
    color: #f2ff00;
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
}
.scanner-mtf-times {
    display: flex;
    flex-wrap: wrap;
    gap: 2px 12px;
    color: rgba(255, 255, 255, 0.44);
    font-family: 'JetBrains Mono', monospace;
    font-size: 9px;
    line-height: 1.5;
}
.scanner-mtf-actions {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}
/* MTF 卡的大/小周期 K 线缩略入口：改内联自适应（默认 .scanner-kline-thumb 是
   absolute，依赖 .scanner-row 定位；本卡是 flex 流，两个缩略图须 static 并排）。 */
.scanner-mtf-actions .scanner-kline-thumb {
    position: static;
    flex: 1 1 0;
    width: auto;
    min-width: 0;
    height: 42px;
}
.scanner-mtf-actions .scanner-kline-spark { width: 100%; }
.scanner-trend-note {
    flex: 1 1 100%;
    color: rgba(255, 255, 255, 0.4);
    font-size: 10px;
    line-height: 1.4;
}
.scanner-lb-hint {
    flex: 1 1 240px;
    min-width: 0;
    color: rgba(255, 255, 255, 0.42);
    font-size: 10px;
}
.scanner-lb-strip {
    display: flex;
    gap: 8px;
    overflow-x: auto;
    overflow-y: hidden;
    padding-bottom: 4px;
    scrollbar-width: thin;
}
.scanner-lb-card {
    flex: 0 0 200px;
    width: 200px;
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 9px;
    border: 1px solid rgba(255, 255, 255, 0.09);
    border-radius: 8px;
    background: rgba(5, 6, 8, 0.82);
}
.scanner-lb-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 6px;
}
.scanner-lb-id { min-width: 0; }
.scanner-lb-id strong {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: #e6edf3;
    font-size: 12px;
    font-weight: 900;
}
.scanner-lb-id span {
    color: rgba(255, 255, 255, 0.5);
    font-family: 'JetBrains Mono', monospace;
    font-size: 9px;
    font-weight: 800;
}
.scanner-lb-badges {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 3px;
    flex-shrink: 0;
}
.scanner-lb-metrics {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 6px;
    padding: 6px;
    border-radius: 6px;
    background: rgba(255, 255, 255, 0.03);
}
.scanner-lb-metrics > div { min-width: 0; }
.scanner-lb-metrics span {
    display: block;
    color: rgba(255, 255, 255, 0.36);
    font-size: 9px;
}
.scanner-lb-metrics b {
    display: block;
    color: #f2ff00;
    font-family: 'JetBrains Mono', monospace;
    font-size: 12px;
    font-weight: 900;
}
.scanner-lb-metrics b.scanner-wr-high { color: #00ffc3; }
.scanner-lb-metrics b.scanner-wr-low { color: #ff8aa0; }
.scanner-lb-metrics b.scanner-drift-warn { color: #f2c94c; }
.scanner-lb-tags {
    display: flex;
    gap: 4px;
    flex-wrap: wrap;
}
.scanner-lb-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 3px 8px;
    color: rgba(255, 255, 255, 0.46);
    font-family: 'JetBrains Mono', monospace;
    font-size: 9px;
}
.scanner-lb-grid b { color: rgba(255, 255, 255, 0.82); font-weight: 800; }
.scanner-lb-foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 6px;
    margin-top: auto;
}
.scanner-lb-date {
    flex: 0 0 auto;
    color: rgba(255, 255, 255, 0.4);
    font-family: 'JetBrains Mono', monospace;
    font-size: 9px;
    font-weight: 700;
}
.scanner-lb-foot .scanner-detail-btn { flex: 0 0 auto; height: 28px; cursor: pointer; }
/* 排行榜卡内：K 线缩略图改为 foot 中段内联自适应，点击开对应周期 K 线图 */
.scanner-lb-foot .scanner-kline-thumb {
    position: static;
    flex: 1 1 auto;
    width: auto;
    min-width: 0;
    height: 28px;
    grid-template-rows: 1fr;
    gap: 0;
    padding: 2px 4px;
    margin: 0;
}
.scanner-lb-foot .scanner-kline-code { display: none; }
.scanner-lb-foot .scanner-kline-spark { width: 100%; height: 100%; }
.scanner-groups {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
    min-height: 0;
}
.scanner-group {
    min-width: 0;
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.018);
    /* overflow visible 让评分 breakdown 弹层不被裁；head 自带圆角补顶部 */
    overflow: visible;
}
.scanner-group-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 8px 10px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.07);
    border-radius: 8px 8px 0 0;
    color: rgba(255, 255, 255, 0.72);
    font-family: 'JetBrains Mono', monospace;
    font-size: 10px;
    font-weight: 900;
}
.scanner-p1 .scanner-group-head { color: #00ffc3; }
.scanner-p2 .scanner-group-head { color: #f2c94c; }
.scanner-p3 .scanner-group-head { color: #8ab4ff; }
.scanner-group-head[data-action='toggle-group'] { cursor: pointer; user-select: none; }
.scanner-caret { font-style: normal; opacity: 0.7; margin-right: 1px; }
.scanner-group-list {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 8px;
}
.scanner-row {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 8px;
    padding: 9px 112px 9px 9px;
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: 8px;
    background: rgba(5, 6, 8, 0.82);
}
.scanner-symbol-line {
    display: flex;
    align-items: center;
    gap: 5px;
    flex-wrap: wrap;
}
.scanner-symbol-line strong {
    color: #e6edf3;
    font-size: 13px;
    font-weight: 900;
}
.scanner-chip {
    display: inline-flex;
    align-items: center;
    min-height: 18px;
    padding: 0 6px;
    border-radius: 5px;
    background: rgba(255, 255, 255, 0.07);
    color: rgba(255, 255, 255, 0.64);
    font-family: 'JetBrains Mono', monospace;
    font-size: 9px;
    font-weight: 900;
}
.scanner-bull {
    background: rgba(0, 255, 195, 0.12);
    color: #00ffc3;
}
.scanner-bear {
    background: rgba(255, 93, 122, 0.12);
    color: #ff8aa0;
}
.scanner-tag-line {
    display: flex;
    align-items: center;
    gap: 5px;
    flex-wrap: wrap;
    margin-top: 2px;
}
.scanner-name {
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: rgba(255, 255, 255, 0.58);
    font-size: 10px;
}
.scanner-sector {
    background: rgba(138, 180, 255, 0.12);
    color: #8ab4ff;
}
.scanner-theme {
    background: rgba(242, 201, 76, 0.12);
    color: #f2c94c;
}
.scanner-meta-line,
.scanner-stat-line,
.scanner-channel {
    color: rgba(255, 255, 255, 0.44);
    font-family: 'JetBrains Mono', monospace;
    font-size: 9px;
    line-height: 1.5;
}
.scanner-row-metrics {
    display: grid;
    grid-template-columns: repeat(3, auto);
    gap: 8px;
    text-align: right;
}
.scanner-row-metrics span {
    display: block;
    color: rgba(255, 255, 255, 0.36);
    font-size: 9px;
}
.scanner-row-metrics b {
    display: block;
    color: #f2ff00;
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
}
/* 评分 breakdown 弹层（桌面 hover/focus，移动长按 .show-pop） */
.scanner-score {
    position: relative;
    cursor: help;
    user-select: none;
    -webkit-touch-callout: none;
}
.scanner-score-pop {
    display: none;
    position: absolute;
    top: calc(100% + 6px);
    right: 0;
    z-index: 60;
    width: 192px;
    padding: 8px 10px;
    border: 1px solid rgba(255, 255, 255, 0.16);
    border-radius: 8px;
    background: #0a0d12;
    box-shadow: 0 12px 30px rgba(0, 0, 0, 0.55);
    text-align: left;
    cursor: default;
}
.scanner-score:hover .scanner-score-pop,
.scanner-score:focus-within .scanner-score-pop,
.scanner-score.show-pop .scanner-score-pop {
    display: block;
}
.scanner-score-row {
    display: flex;
    justify-content: space-between;
    gap: 10px;
    font-family: 'JetBrains Mono', monospace;
    font-size: 10px;
    line-height: 1.7;
    color: rgba(255, 255, 255, 0.58);
}
.scanner-score-row b { color: #d7e1ea; font-weight: 800; }
.scanner-score-row b.pos { color: #00ffc3; }
.scanner-score-row b.neg { color: #ff8aa0; }
.scanner-score-row.total {
    margin-top: 4px;
    padding-top: 4px;
    border-top: 1px solid rgba(255, 255, 255, 0.12);
    color: #e6edf3;
}
.scanner-score-row.total b { color: #f2ff00; }
.scanner-score-note {
    margin-top: 5px;
    color: rgba(255, 255, 255, 0.34);
    font-size: 8px;
    line-height: 1.4;
}
.scanner-channel {
    grid-column: 1 / -1;
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}
.scanner-tags {
    grid-column: 1 / -1;
    display: flex;
    gap: 5px;
    flex-wrap: wrap;
}
.scanner-tag {
    display: inline-flex;
    align-items: center;
    padding: 1px 6px;
    border-radius: 4px;
    font-family: 'JetBrains Mono', monospace;
    font-size: 9px;
    font-weight: 800;
    background: rgba(255, 255, 255, 0.06);
    color: rgba(255, 255, 255, 0.6);
}
.scanner-tag.ok { background: rgba(0, 255, 195, 0.12); color: #00ffc3; }
.scanner-tag.warn { background: rgba(242, 201, 76, 0.12); color: #f2c94c; }
.scanner-tag.bad { background: rgba(255, 93, 122, 0.14); color: #ff8aa0; }
.scanner-tag.info { background: rgba(138, 180, 255, 0.12); color: #8ab4ff; }
.scanner-tag.muted { background: rgba(255, 255, 255, 0.05); color: rgba(255, 255, 255, 0.45); }
.scanner-detail-btn {
    grid-column: 1 / -1;
    justify-self: start;
    height: 24px;
    font-size: 10px;
}
/* 行内动作区仅保留回测；K 线入口改为右下角缩略图。 */
.scanner-row-actions {
    grid-column: 1 / -1;
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}
.scanner-row-actions .scanner-detail-btn {
    grid-column: auto;
    cursor: pointer;
}
.scanner-kline-thumb {
    position: absolute;
    right: 10px;
    bottom: 10px;
    width: 92px;
    height: 44px;
    display: grid;
    grid-template-rows: 16px 22px;
    align-items: center;
    justify-items: start;
    gap: 1px;
    padding: 3px 8px;
    border: 1px solid rgba(88, 166, 255, 0.34);
    border-radius: 7px;
    background: rgba(9, 14, 22, 0.82);
    color: #45d987;
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.025);
    cursor: pointer;
    transition: border-color 0.16s ease, background 0.16s ease, box-shadow 0.16s ease, transform 0.16s ease;
}
.scanner-kline-thumb:hover,
.scanner-kline-thumb:focus-visible {
    border-color: rgba(88, 166, 255, 0.72);
    background: rgba(13, 24, 39, 0.94);
    box-shadow: 0 0 0 1px rgba(88, 166, 255, 0.18), 0 8px 18px rgba(0, 0, 0, 0.28);
    outline: none;
    transform: translateY(-1px);
}
.scanner-kline-code {
    color: #eef4fb;
    font-size: 11px;
    font-weight: 900;
    line-height: 1;
}
.scanner-kline-spark {
    display: block;
    width: 80px;
    height: 22px;
    color: #45d987;
}
.scanner-kline-spark.neg {
    color: #ff7676;
}
.scanner-empty,
.scanner-empty-small {
    padding: 20px;
    color: rgba(255, 255, 255, 0.42);
    text-align: center;
    font-size: 12px;
}
.scanner-empty-small {
    padding: 14px 8px;
    font-size: 11px;
}
.scanner-modal {
    position: fixed;
    inset: 0;
    z-index: 170;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    background: rgba(5, 6, 8, 0.78);
    backdrop-filter: blur(10px);
}
.scanner-modal-card {
    width: min(680px, 100%);
    max-height: min(620px, calc(100vh - 48px));
    overflow: auto;
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 8px;
    background: #0b0d12;
    padding: 14px;
    box-shadow: 0 18px 50px rgba(0, 0, 0, 0.45);
}
.scanner-modal-head {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 12px;
}
.scanner-modal-title {
    color: #e6edf3;
    font-size: 16px;
    font-weight: 900;
}
.scanner-close {
    width: 28px;
    padding: 0;
}
.scanner-stat-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 8px;
    margin: 12px 0;
}
.scanner-stat-grid > div {
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.03);
    padding: 10px;
}
.scanner-stat-grid span,
.scanner-stat-grid small {
    display: block;
    color: rgba(255, 255, 255, 0.42);
    font-family: 'JetBrains Mono', monospace;
    font-size: 9px;
}
.scanner-stat-grid b {
    display: block;
    color: #00ffc3;
    font-family: 'JetBrains Mono', monospace;
    font-size: 17px;
}
.scanner-backtest-guide {
    margin: 0 0 12px;
    padding: 10px 12px;
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.025);
}
.scanner-backtest-guide-title {
    margin-bottom: 6px;
    color: rgba(255, 255, 255, 0.78);
    font-size: 11px;
    font-weight: 800;
}
.scanner-backtest-guide ul {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 5px 14px;
    margin: 0;
    padding: 0 0 0 16px;
    color: rgba(255, 255, 255, 0.58);
    font-size: 10.5px;
    line-height: 1.55;
}
.scanner-backtest-guide li {
    padding-left: 2px;
}
.scanner-table {
    width: 100%;
    border-collapse: collapse;
    color: rgba(255, 255, 255, 0.72);
    font-family: 'JetBrains Mono', monospace;
    font-size: 10px;
}
.scanner-table th,
.scanner-table td {
    border-bottom: 1px solid rgba(255, 255, 255, 0.07);
    padding: 7px 6px;
    text-align: left;
}
.scanner-table th {
    color: rgba(255, 255, 255, 0.42);
}

/* 指数机危雷达 (Spec B) */
.scanner-idx-card { width: min(880px, 100%); }
.scanner-idx-filters { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 10px 0; }
.scanner-idx-filters .scanner-chip { cursor: pointer; opacity: 0.62; }
.scanner-idx-filters .scanner-chip.on { opacity: 1; border-color: rgba(255, 255, 255, 0.4); background: rgba(255, 255, 255, 0.08); }
.scanner-idx-sep { width: 1px; height: 16px; background: rgba(255, 255, 255, 0.14); margin: 0 4px; }
.scanner-idx-table td b { color: #e6edf3; }
.scanner-idx-table td small { color: rgba(255, 255, 255, 0.42); }
.scanner-idx-table tr.idx-buy td.idx-buy { color: #3fb950; font-weight: 700; }
.scanner-idx-table tr.idx-sell td.idx-sell { color: #f85149; font-weight: 700; }
.scanner-idx-table tr.idx-dead { opacity: 0.4; text-decoration: line-through; }
.scanner-idx-table .idx-up { color: #f85149; }
.scanner-idx-table .idx-down { color: #3fb950; }
.scanner-chip.grade-low { color: rgba(255,255,255,0.55); }
.scanner-chip.grade-mid { color: #d29922; border-color: rgba(210,153,34,0.4); }
.scanner-chip.grade-high { color: #db8c2a; border-color: rgba(219,140,42,0.5); }
.scanner-chip.grade-very_high { color: #f85149; border-color: rgba(248,81,73,0.5); }
.scanner-idx-legend { margin-top: 12px; padding: 10px 12px; border: 1px solid rgba(255,255,255,0.08); border-radius: 8px; background: rgba(255,255,255,0.02); color: rgba(255,255,255,0.6); font-size: 10.5px; line-height: 1.7; }
.scanner-idx-legend b { color: rgba(255,255,255,0.8); }
.scanner-idx-note { margin-top: 6px; color: rgba(255,255,255,0.42); }
/* B-3/B-4：分等级图例 + 读表指引（可折叠 <details>） */
.scanner-idx-legend-grp { margin-bottom: 4px; }
.scanner-idx-legend-grp > summary { cursor: pointer; list-style: none; }
.scanner-idx-legend-grp > summary::-webkit-details-marker { display: none; }
.scanner-idx-legend-grp > summary::before { content: '▸'; display: inline-block; width: 12px; color: rgba(255,255,255,0.35); transition: transform 0.15s; }
.scanner-idx-legend-grp[open] > summary::before { transform: rotate(90deg); }
.scanner-idx-gradelist { margin: 4px 0 2px; padding-left: 16px; list-style: none; }
.scanner-idx-gradelist li { margin: 3px 0; color: rgba(255,255,255,0.55); }
.scanner-idx-gradelist .scanner-chip { margin-right: 4px; }
/* 指数机危雷达内联 panel 卡片：原 modal(.scanner-modal fixed 遮罩)抽离为底部平级 tab，
   渲染进 #index-radar-panel(自带 overflow:auto)；卡片改为满宽、无 fixed/无 vh 上限。 */
#index-radar-panel { padding: 2px; }

/* Opening 90 Scanner bottom tab */
#opening-radar-panel {
    padding: 2px;
    gap: 10px;
    color: #d6e2f1;
}
.opening-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 4px 2px 0;
}
.opening-title {
    font-size: 13px;
    font-weight: 900;
    color: #f3f8ff;
}
.opening-sub,
.opening-meta,
.opening-disclaimer {
    font-size: 10px;
    color: rgba(214, 226, 241, 0.62);
}
.opening-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    padding: 0 2px;
}
.opening-actions {
    display: flex;
    gap: 8px;
    align-items: center;
}
.opening-select,
.opening-refresh {
    height: 28px;
    border: 1px solid rgba(255,255,255,0.12);
    background: rgba(255,255,255,0.05);
    color: #d6e2f1;
    border-radius: 6px;
    font-size: 11px;
    padding: 0 8px;
}
.opening-refresh:hover,
.opening-symbol:hover {
    border-color: rgba(0,255,195,0.35);
    color: #00ffc3;
}
.opening-table-wrap {
    min-height: 0;
    overflow: auto;
    border: 1px solid rgba(255,255,255,0.08);
    border-radius: 8px;
}
.opening-table {
    width: 100%;
    min-width: 1180px;
    border-collapse: collapse;
    font-size: 11px;
}
.opening-table th {
    position: sticky;
    top: 0;
    z-index: 1;
    background: #080a0f;
    color: rgba(214,226,241,0.68);
    text-align: left;
    font-weight: 800;
    padding: 8px 10px;
    border-bottom: 1px solid rgba(255,255,255,0.08);
}
.opening-table td {
    padding: 8px 10px;
    border-bottom: 1px solid rgba(255,255,255,0.05);
    vertical-align: middle;
    white-space: nowrap;
}
.opening-table td.opening-news-cell {
    width: 280px;
    min-width: 220px;
    max-width: 340px;
    white-space: normal;
}
.opening-news-content {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 3px;
    line-height: 1.35;
}
/* 列表只展示标题：最多两行，点开浮层看全文 */
.opening-news-title {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    padding: 0;
    border: 0;
    background: none;
    text-align: left;
    cursor: pointer;
    color: rgba(255, 238, 189, 0.94);
    font-size: 10px;
    font-weight: 800;
    line-height: 1.35;
}
.opening-news-title:hover {
    color: #ffe9b0;
    text-decoration: underline;
}
.opening-news-content small {
    margin-top: 0 !important;
    color: rgba(251, 191, 36, 0.55) !important;
}
.opening-news-modal-title {
    color: rgba(255, 238, 189, 0.94);
    font-size: 14px;
    font-weight: 800;
    line-height: 1.5;
    margin-bottom: 8px;
}
.opening-news-modal-meta {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
    color: rgba(251, 191, 36, 0.62);
    font-size: 11px;
}
.opening-machine-badge {
    color: rgba(214,226,241,0.58);
    font-style: normal;
    border: 1px solid rgba(214,226,241,0.18);
    border-radius: 999px;
    padding: 1px 5px;
}
.opening-table td small {
    display: block;
    margin-top: 2px;
    color: rgba(214,226,241,0.42);
    font-size: 9px;
}
.opening-symbol {
    border: 1px solid rgba(0,255,195,0.18);
    background: rgba(0,255,195,0.06);
    color: #dffff7;
    border-radius: 6px;
    padding: 4px 8px;
    font-weight: 900;
}
.opening-symbol-wrap {
    display: inline-flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 3px;
}
.opening-symbol.disabled {
    cursor: not-allowed;
    opacity: 0.55;
    border-color: rgba(214,226,241,0.16);
    background: rgba(214,226,241,0.04);
    color: rgba(214,226,241,0.7);
}
.opening-outside-chip {
    color: rgba(251,191,36,0.75);
    font-size: 8px;
    white-space: nowrap;
}
.opening-dir {
    display: inline-block;
    min-width: 64px;
    margin-right: 6px;
    color: rgba(214,226,241,0.7);
}
.opening-dir.up { color: #7bf7d6; }
.opening-dir.down { color: #ff9aa8; }
.opening-dir.neutral { color: rgba(214,226,241,0.58); }
.opening-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
    max-width: 260px;
}
.opening-chip {
    border: 1px solid rgba(255,255,255,0.12);
    background: rgba(255,255,255,0.05);
    color: rgba(214,226,241,0.84);
    border-radius: 999px;
    padding: 2px 6px;
    font-size: 10px;
}
.opening-muted { color: rgba(214,226,241,0.36); }
.opening-empty {
    flex: 1;
    min-height: 120px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    gap: 10px;
    color: rgba(214,226,241,0.58);
    font-size: 12px;
}
.opening-empty strong { color: rgba(214,226,241,0.88); }
.opening-empty div { max-width: 560px; text-align: center; line-height: 1.55; }
.opening-empty-error strong { color: #ff9aa8; }
.opening-disclaimer {
    padding: 0 2px 4px;
}
.opening-disclaimer div { margin-top: 2px; }
.opening-viewtabs {
    display: inline-flex;
    border: 1px solid rgba(255,255,255,0.12);
    border-radius: 8px;
    overflow: hidden;
}
.opening-viewtab {
    border: 0;
    background: transparent;
    color: rgba(214,226,241,0.6);
    padding: 4px 12px;
    font-size: 11px;
    cursor: pointer;
}
.opening-viewtab.active {
    background: rgba(123,247,214,0.14);
    color: #a9f7e2;
}
.opening-chip.flow {
    border-color: rgba(123,169,247,0.45);
    background: rgba(123,169,247,0.14);
    color: #b9d0ff;
}
.opening-signal-table td { vertical-align: middle; }
.opening-sig.invalid { opacity: 0.45; }
.opening-sig.invalid td:nth-child(5) { text-decoration: line-through; }
.opening-src {
    display: inline-block;
    border: 1px solid rgba(214,226,241,0.22);
    border-radius: 999px;
    padding: 1px 8px;
    font-size: 10px;
    color: rgba(214,226,241,0.7);
    white-space: nowrap;
}
.opening-src.flow {
    border-color: rgba(123,169,247,0.45);
    background: rgba(123,169,247,0.14);
    color: #b9d0ff;
}
.opening-src.both {
    border-color: rgba(123,247,214,0.45);
    background: rgba(123,247,214,0.12);
    color: #a9f7e2;
}
.opening-source-stack {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    white-space: nowrap;
}
.opening-src.news,
.opening-src-note.news {
    border-color: rgba(251,191,36,0.48);
    background: rgba(251,191,36,0.12);
    color: #fbd779;
}
.opening-src.social,
.opening-src-note.social {
    border-color: rgba(192,132,252,0.48);
    background: rgba(192,132,252,0.12);
    color: #d8b4fe;
}
.opening-src.unknown {
    opacity: 0.65;
}
.opening-src-note {
    display: inline-block;
    border: 1px solid rgba(214,226,241,0.18);
    border-radius: 999px;
    padding: 0 5px;
    font-size: 8px;
    line-height: 16px;
    white-space: nowrap;
}
.opening-invalid-badge {
    border: 1px solid rgba(255,154,168,0.5);
    color: #ff9aa8;
    border-radius: 999px;
    padding: 1px 6px;
    font-size: 9px;
    margin-left: 4px;
}
.opening-backfilled-badge {
    border: 1px solid rgba(148,163,184,0.5);
    color: #94a3b8;
    border-radius: 999px;
    padding: 1px 6px;
    font-size: 9px;
    margin-left: 4px;
}
.opening-help-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 13px;
    height: 13px;
    margin-left: 4px;
    padding: 0;
    border: 1px solid rgba(214,226,241,0.35);
    border-radius: 50%;
    background: transparent;
    color: rgba(214,226,241,0.55);
    font-size: 9px;
    font-weight: 700;
    line-height: 1;
    cursor: pointer;
    vertical-align: middle;
    flex: none;
}
.opening-help-btn:hover {
    color: #a9f7e2;
    border-color: rgba(123,247,214,0.6);
}
.opening-title .opening-help-btn { margin-left: 6px; }
/* 浮层本体复用 dashboard 的 modal-backdrop/panel/title/close + modal-section/copy 设计系统 */
.opening-help-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}
.opening-help-content .modal-section:first-child { margin-top: 0; }
.opening-help-content { margin-top: 12px; }
.opening-sigbar {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 4px 2px 6px;
    font-size: 11px;
}

@media (max-width: 767px) {
    .opening-head {
        align-items: flex-start;
        flex-direction: column;
    }
    .opening-actions {
        width: 100%;
    }
    .opening-select {
        flex: 1;
        min-width: 0;
    }
}
.scanner-idx-panel-card {
    width: 100%;
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: 8px;
    background: #0b0d12;
    padding: 12px;
}

/* Noise collapsible */
.uoa-noise { margin-top: 22px; border: 1px solid rgba(255, 255, 255, 0.07); border-radius: 12px; padding: 0 14px; background: rgba(255, 255, 255, 0.012); }
.uoa-noise summary { color: #8b949e; cursor: pointer; padding: 11px 0; font-size: 12px; font-weight: 600; list-style: none; user-select: none; }
.uoa-noise summary::-webkit-details-marker { display: none; }
.uoa-noise summary::before { content: '▸'; display: inline-block; margin-right: 8px; color: #00ffc3; transition: transform 0.15s ease; }
        .uoa-noise[open] summary::before { transform: rotate(90deg); }
        .uoa-noise .uoa-section { margin-top: 4px; padding-bottom: 12px; }

/* Multichart parent page */
body.multichart-page .multichart-grid {
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: var(--header-height) minmax(0, 1fr);
}
body.multichart-page .dashboard-header {
    grid-column: 1 / -1;
    grid-row: 1;
}
body.multichart-page .multichart-stack-card {
    grid-column: 1 / -1;
    grid-row: 2;
    min-height: 0;
    padding: 0;
    display: grid;
    /* Default = horizontal (3 charts side by side); fallback if data-orientation missing. */
    grid-template-rows: minmax(0, 1fr);
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
    background: #050608;
    transition: grid-template-columns 0.2s ease, grid-template-rows 0.2s ease;
}
/* Horizontal (default): 3 charts left-to-right, each 1/3 width. */
body.multichart-page .multichart-stack-card[data-orientation="horizontal"] {
    grid-template-rows: minmax(0, 1fr);
    grid-template-columns: repeat(3, minmax(0, 1fr));
}
/* Vertical: 3 charts top-to-bottom, time axes aligned. */
body.multichart-page .multichart-stack-card[data-orientation="vertical"] {
    grid-template-rows: repeat(3, minmax(0, 1fr));
    grid-template-columns: minmax(0, 1fr);
}
/* ---- splitview：左侧三标的逐档 GEX 阶梯 + 右侧三图纵向堆叠 ---- */
body.multichart-page .multichart-ladder-rail { display: none; }
body.multichart-page .multichart-grid[data-layout="split"] {
    grid-template-columns: clamp(360px, 34vw, 660px) minmax(0, 1fr);
}
body.multichart-page .multichart-grid[data-layout="split"] .multichart-ladder-rail {
    display: grid;
    grid-column: 1;
    grid-row: 2;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 6px;
    min-height: 0;
    padding: 0;
    background: #050608;
}
body.multichart-page .multichart-grid[data-layout="split"] .multichart-stack-card {
    grid-column: 2;
    grid-row: 2;
}
/* 🔴 分屏阶梯 = 全站「逐档 GEX 面板」(.gex-strikes-*) 的另一种排布，
   所以外壳/表头/行分隔/文字色全部沿用那一套 token，不另起炉灶。 */
.mc-ladder {
    display: flex;
    flex-direction: column;
    min-width: 0;
    min-height: 0;
    border: 1px solid rgba(255, 255, 255, 0.09);
    border-radius: 6px;
    background: rgba(12, 15, 22, 0.93);
    overflow: hidden;
    font-family: 'JetBrains Mono', monospace;
}
.mc-ladder-head {
    display: flex;
    align-items: baseline;
    gap: 6px;
    padding: 6px 8px;
    background: rgba(30, 58, 110, 0.96);
    color: #dee1e9;
    font-family: 'JetBrains Mono', monospace;
}
.mc-ladder-ticker {
    color: #dee1e9;
    font-size: 10px;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0.06em;
}
.mc-ladder-meta {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: #8b949e;
    font-size: 9px;
    font-weight: 600;
    letter-spacing: 0.04em;
}
/* 现价 = 回到现价行的按钮（跟随被用户滚开后唯一的逃生口）。
   button 需要显式清掉 UA 默认样式，否则表头里会多出一个原生按钮外观。 */
.mc-ladder-spot {
    appearance: none;
    -webkit-appearance: none;
    background: none;
    border: 0;
    padding: 0 2px;
    margin: 0;
    cursor: pointer;
    font-family: inherit;
    color: #00ffc3;
    font-size: 11px;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    line-height: 1.2;
    border-radius: 3px;
}
.mc-ladder-spot:hover {
    background: rgba(0, 255, 195, 0.14);
}
.mc-ladder-spot:focus-visible {
    outline: 1px solid rgba(0, 255, 195, 0.7);
    outline-offset: 1px;
}
.mc-ladder-body {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    scrollbar-width: thin;
}
.mc-ladder-row {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 0 8px;
    height: 18px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.04);
    font-family: 'JetBrains Mono', monospace;
    font-size: 10px;
    font-variant-numeric: tabular-nums;
}
.mc-ladder-strike {
    color: #d3dae3;
    font-weight: 700;
    white-space: nowrap;
}
.mc-ladder-net {
    margin-left: auto;
    color: rgba(230, 237, 243, 0.86);
    white-space: nowrap;
}
/* 与 .gex-strikes-net 完全同色：全站表达「逐档净 GEX 正负」只有这两个 token */
.mc-ladder-net.pos { color: #00ffc3; }
.mc-ladder-net.neg { color: #ff5a5a; }
/* 换手模式：色相沿用全站换手热力图的 Call/Put 偏向语言（dashboard.js getBiasColor）。 */
.mc-ladder-net.is-call { color: #50f2de; }
.mc-ladder-net.is-put { color: #c88cff; }
.mc-ladder-net.is-flat { color: #d7dde4; }
/* 双极配色 flag（spec gex-king-gatekeeper-nodes-and-color-unification-2026-09-10）：
   GEX 阶梯与热力图辉光同套（黄正/紫负）；换手阶梯 Put 从紫改玫红（让紫给负 GEX）。 */
body.gex-keynodes .mc-ladder-net.pos { color: #ffe23a; }
body.gex-keynodes .mc-ladder-net.neg { color: #b487ea; }
body.gex-keynodes .mc-ladder-net.is-put { color: #ff5f91; }
.mc-ladder-level-tag {
    padding: 0 4px;
    border-radius: 3px;
    border: 1px solid rgba(0, 255, 195, 0.45);
    color: #00ffc3;
    font-size: 8px;
    font-weight: 900;
    letter-spacing: 0.06em;
    line-height: 12px;
}
.mc-ladder-spot-tag {
    padding: 0 4px;
    border-radius: 3px;
    background: #00ffc3;
    color: #04120d;
    font-size: 8px;
    font-weight: 900;
    letter-spacing: 0.06em;
    line-height: 12px;
}
.mc-ladder-row.is-spot {
    box-shadow: inset 0 0 0 1px rgba(0, 255, 195, 0.55);
}
.mc-ladder-row.is-level .mc-ladder-strike {
    color: #00ffc3;
}
.mc-ladder-empty {
    padding: 14px 10px;
    color: #636e7b;
    font-family: 'JetBrains Mono', monospace;
    font-size: 10px;
    text-align: center;
}
html[data-layout-mode="tablet"] body.multichart-page .multichart-grid[data-layout="split"] {
    grid-template-columns: minmax(260px, 40vw) minmax(0, 1fr);
}
/* 移动端整页走不支持遮罩、iframe 也不加载 ⇒ 阶梯栏没有数据，别让它挤在遮罩后面。 */
html[data-layout-mode="mobile"] body.multichart-page .multichart-grid[data-layout="split"] {
    grid-template-columns: minmax(0, 1fr);
}
html[data-layout-mode="mobile"] body.multichart-page .multichart-grid[data-layout="split"] .multichart-ladder-rail {
    display: none;
}

/* ---- splitview：关掉右侧 K 线图，左侧阶梯铺满整行 ---- */
/* 🔴 这里**有意不用** display:none / visibility:hidden。阶梯的数据链是 iframe 自己按
   可视区间取 /api/gex-heatmap 再 postMessage 推上来的；把 stack card 从布局里拿掉会让
   图宽变 0、可视区间退化 ⇒ 取数停摆 ⇒ 阶梯冻结在关闭那一刻且毫无报错。
   所以改成「移出画面、但保留一份固定尺寸的正常布局」：iframe 照常渲染取数。 */
body.multichart-page .multichart-grid[data-layout="split"][data-split-charts="off"],
html[data-layout-mode="tablet"] body.multichart-page .multichart-grid[data-layout="split"][data-split-charts="off"] {
    grid-template-columns: minmax(0, 1fr);
}
body.multichart-page .multichart-grid[data-layout="split"][data-split-charts="off"] .multichart-ladder-rail {
    grid-column: 1 / -1;
}
body.multichart-page .multichart-grid[data-layout="split"][data-split-charts="off"] .multichart-stack-card {
    position: fixed;
    top: 0;
    left: -20000px;
    width: 900px;
    height: 720px;
    opacity: 0;
    pointer-events: none;
    z-index: -1;
}

/* Header split-charts toggle (mirrors .orientation-switcher's pill styling). */
.mc-charts-toggle {
    display: inline-flex;
    align-items: center;
    padding: 3px 9px;
    border: 1px solid #1c1f26;
    border-radius: 4px;
    background: transparent;
    color: #636e7b;
    font-family: 'JetBrains Mono', monospace;
    font-size: 10px;
    letter-spacing: 0.06em;
    white-space: nowrap;
    cursor: pointer;
    transition: color 0.15s ease, background 0.15s ease;
}
.mc-charts-toggle:hover { color: #fff; }
.mc-charts-toggle.active { background: #1c1f26; color: #fff; }
.mc-charts-toggle:focus-visible { outline: 1px solid rgba(0, 255, 195, 0.6); outline-offset: 1px; }

/* Header orientation toggle (mirrors the lang-switcher pill). */
.orientation-switcher {
    display: inline-flex;
    align-items: center;
    border: 1px solid #1c1f26;
    border-radius: 4px;
    overflow: hidden;
}
.orientation-switcher button {
    padding: 2px 8px;
    font-family: 'JetBrains Mono', monospace;
    font-size: 10px;
    letter-spacing: 0.06em;
    color: #636e7b;
    background: transparent;
    transition: color 0.15s ease, background 0.15s ease;
}
.orientation-switcher button:hover { color: #fff; }
.orientation-switcher button.active { background: #1c1f26; color: #fff; }
.multichart-frame-shell {
    position: relative;
    min-height: 0;
    min-width: 0;
    overflow: hidden;
    border-radius: 8px;
    border: 1px solid rgba(255, 255, 255, 0.08);
    background: #050608;
}
.multichart-frame-shell iframe {
    display: block;
    width: 100%;
    height: 100%;
    min-height: 0;
    border: 0;
    background: #050608;
}
.multichart-frame-label {
    position: absolute;
    top: 8px;
    left: 10px;
    z-index: 5;
    pointer-events: none;
    padding: 2px 7px;
    border-radius: 6px;
    border: 1px solid rgba(255, 255, 255, 0.12);
    background: rgba(5, 6, 8, 0.74);
    color: #d7e1ea;
    font-family: 'JetBrains Mono', monospace;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: 0.08em;
}
.multichart-header-right {
    width: 1px;
}
.multichart-mobile-overlay {
    position: fixed;
    inset: 0;
    z-index: 180;
    display: none;
    align-items: center;
    justify-content: center;
    background: rgba(5, 6, 8, 0.92);
    backdrop-filter: blur(12px);
    padding: 20px;
}
.multichart-mobile-panel {
    width: min(360px, 100%);
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 8px;
    background: #0f1115;
    padding: 18px;
    text-align: center;
}
.multichart-mobile-title {
    margin-bottom: 14px;
    color: #e6edf3;
    font-size: 15px;
    font-weight: 800;
}
html[data-layout-mode="tablet"] body.multichart-page .multichart-grid {
    gap: 8px;
    padding: 8px;
}
html[data-layout-mode="mobile"] body.multichart-page {
    overflow: hidden;
}
html[data-layout-mode="mobile"] body.multichart-page .multichart-mobile-overlay {
    display: flex;
}

/* Dashboard iframe embed mode */
body.embed-chart {
    background: #050608;
}
body.embed-chart .app-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: minmax(0, 1fr);
    gap: 0;
    height: 100vh;
    padding: 0;
}
body.embed-chart .app-grid > :not(.chart-card) {
    display: none !important;
}
body.embed-chart .chart-card {
    grid-column: 1 / -1 !important;
    grid-row: 1 / -1 !important;
    border: 0;
    border-radius: 0;
    min-height: 0;
}
body.embed-chart .premarket-banner,
body.embed-chart .panel-collapse-btn,
body.embed-chart .mobile-tab-bar,
body.embed-chart #bottom-tabs,
body.embed-chart #session-kicked-overlay,
body.embed-chart #tab-paused-overlay {
    display: none !important;
}
body.embed-chart #azu-user-watermark {
    display: block !important;
}

/* 平板：P1/P2/P3 三列改竖排单列（卡片宽度更可读） */
@media (max-width: 1023px) {
    .scanner-groups {
        grid-template-columns: minmax(0, 1fr);
    }
    .scanner-reso-row {
        flex-wrap: wrap;
    }
}
@media (max-width: 768px) {
    .uoa-head { flex-direction: column; }
    .uoa-calendar { min-width: 0; width: 100%; }
    .uoa-hero { grid-template-columns: repeat(2, 1fr); }
    .scanner-head {
        align-items: stretch;
        flex-direction: column;
    }
    .scanner-actions {
        flex-wrap: wrap;
        align-items: stretch;
    }
    .scanner-search { flex: 1 1 100%; }
    .scanner-filter-btn { display: inline-flex; align-items: center; justify-content: center; flex: 1 1 0; }
    .scanner-refresh { flex: 1 1 0; }
    .scanner-row {
        grid-template-columns: minmax(0, 1fr);
        padding: 9px;
    }
    .scanner-row-metrics {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        text-align: left;
    }
    .scanner-kline-thumb {
        position: static;
        width: 118px;
        height: 44px;
        justify-self: end;
        grid-column: 1 / -1;
    }
    .scanner-stat-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .scanner-backtest-guide ul {
        grid-template-columns: minmax(0, 1fr);
    }
    /* 触摸目标 ≥44px */
    .scanner-pill,
    .scanner-select,
    .scanner-refresh,
    .scanner-filter-btn,
    .scanner-detail-btn,
    .scanner-close,
    .scanner-drawer-close { min-height: 44px; }
    .scanner-check { min-height: 44px; }
    /* 筛选条 → 底部抽屉 */
    .scanner-filterbar {
        position: fixed;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 200;
        flex-direction: column;
        align-items: stretch;
        gap: 12px;
        margin: 0;
        padding: 14px 16px calc(16px + env(safe-area-inset-bottom));
        background: #0a0d12;
        border-top: 1px solid rgba(255, 255, 255, 0.14);
        border-radius: 14px 14px 0 0;
        box-shadow: 0 -12px 32px rgba(0, 0, 0, 0.5);
        max-height: 72vh;
        overflow: auto;
        transform: translateY(110%);
        transition: transform 0.25s ease;
    }
    .scanner-filterbar.open { transform: translateY(0); }
    .scanner-filterbar .scanner-select { width: 100%; }
    .scanner-pill-row { gap: 8px; }
    .scanner-drawer-head {
        display: flex;
        justify-content: space-between;
        align-items: center;
        color: rgba(255, 255, 255, 0.7);
        font-size: 12px;
        font-weight: 900;
    }
    .scanner-drawer-close {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 44px;
        padding: 0;
    }
    .scanner-drawer-mask.open {
        display: block;
        position: fixed;
        inset: 0;
        z-index: 190;
        background: rgba(0, 0, 0, 0.55);
    }
}

/* ===================================================================
   韩国散户杠杆监控面板（spec kr-retail-leverage-monitor-2026-07-30 §5）
   面板 DOM 在 JS 里拼，Tailwind 不扫 JS，所以全部是自有 .krl-* 类。
   配色取竞品深色模式的同一组值，与 dashboard 深色底一致。
   =================================================================== */
#kr-leverage-panel {
  --krl-card: #1c1c1e;
  --krl-ink: #f5f5f7;
  --krl-sub: #a1a1a6;
  --krl-ter: #98989d;
  --krl-sep: rgba(255,255,255,.14);
  --krl-fill: rgba(120,120,128,.28);
  --krl-fill2: rgba(120,120,128,.14);
  --krl-red: #ff453a;
  --krl-green: #30d158;
  --krl-orange: #ff9f0a;
  --krl-accent: #0a84ff;
  --krl-red-tint: rgba(255,69,58,.16);
  --krl-green-tint: rgba(48,209,88,.16);
  --krl-orange-tint: rgba(255,159,10,.16);
  --krl-grey-tint: rgba(120,120,128,.26);
  --krl-seg-shadow: 0 1px 4px rgba(0,0,0,.5);
  --krl-mono: "SF Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  --krl-sans: -apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display",
              "Helvetica Neue", "PingFang SC", "Noto Sans SC", sans-serif;
  color: var(--krl-ink);
  font-family: var(--krl-sans);
  line-height: 1.47;
  -webkit-font-smoothing: antialiased;
}
.krl-page { max-width: 1120px; margin: 0 auto 56px; padding: 14px 22px 0; }

.krl-head { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.krl-sub { color: var(--krl-sub); font-family: var(--krl-mono); font-size: 12px; margin: 0; }
.krl-guard {
  display: inline-block; padding: 4px 12px; border-radius: 999px;
  background: var(--krl-fill2); border: 1px solid var(--krl-sep);
  color: var(--krl-sub); font-family: var(--krl-mono); font-size: 10.5px; letter-spacing: .14em;
}
.krl-load { color: var(--krl-ter); font-family: var(--krl-mono); font-size: 12px; padding: 48px 0; text-align: center; }
.krl-err { color: var(--krl-red); }

/* 杠杆温度计告警横幅（spec kr-leverage-competitor-parity-2026-08-02 §4.1）。
   排在 .krl-alerts 之上：横幅是「一句结论」，下面的 alerts 是分项明细。 */
.krl-banner {
  display: flex; gap: 12px; align-items: baseline; border-radius: 14px;
  font-size: 13.5px; line-height: 1.6; padding: 12px 16px; margin: 16px 0 0;
  border: 1px solid transparent;
}
.krl-banner .tag {
  flex: none; font-family: var(--krl-mono); font-size: 10.5px;
  font-weight: 700; letter-spacing: .1em;
}
.krl-banner .txt { font-variant-numeric: tabular-nums; }
.krl-banner.critical {
  background: var(--krl-red-tint); border-color: rgba(255,69,58,.34); color: var(--krl-ink);
}
.krl-banner.critical .tag { color: var(--krl-red); }
.krl-banner.warning {
  background: var(--krl-orange-tint); border-color: rgba(255,159,10,.30); color: var(--krl-ink);
}
.krl-banner.warning .tag { color: var(--krl-orange); }

/* 单一个股杠杆去化卡（§4.5，2026-08-02 按竞品 1:1 重排）。
   结构：标题 + 右侧状态胶囊 / 渐变进度条 / 条下左右端点 / 单行统计 / 页脚 */
.krl-ss {
  background: var(--krl-card); border: 1px solid var(--krl-sep); border-radius: 16px;
  padding: 15px 18px 14px; margin: 14px 0 0;
}
.krl-ss-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.krl-ss-title { font-size: 14px; font-weight: 600; color: var(--krl-ink); }
.krl-ss-pill {
  flex: none; padding: 3px 11px; border-radius: 999px;
  background: var(--krl-green-tint); color: var(--krl-green);
  font-family: var(--krl-mono); font-size: 11.5px; font-variant-numeric: tabular-nums;
}
.krl-ss-pill b { font-weight: 600; }
.krl-ss-bar {
  height: 7px; border-radius: 999px; background: var(--krl-fill2); overflow: hidden; margin: 11px 0 6px;
}
/* 橙→绿渐变：左端是「刚开始去化」，右端是「接近目标」 */
.krl-ss-bar i {
  display: block; height: 100%; border-radius: 999px;
  background: linear-gradient(90deg, #c2410c 0%, #b45309 38%, #4d7c0f 72%, var(--krl-green) 100%);
}
.krl-ss-ends {
  display: flex; justify-content: space-between; gap: 12px;
  font-family: var(--krl-mono); font-size: 11px; color: var(--krl-ter);
}
.krl-ss-stats {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 8px; margin-top: 11px;
  font-size: 13px; color: var(--krl-sub);
}
.krl-ss-stats .sep { color: var(--krl-ter); }
.krl-ss-stat { display: inline-flex; align-items: baseline; gap: 6px; }
.krl-ss-stat .l { color: var(--krl-sub); }
.krl-ss-stat b {
  font-family: var(--krl-mono); font-variant-numeric: tabular-nums;
  font-weight: 700; color: var(--krl-ink);
}
.krl-ss-stat b.neg { color: var(--krl-green); }
.krl-ss-stat b.hot { color: var(--krl-red); }
.krl-ss-froth { font-size: 12px; color: var(--krl-ter); }
.krl-ss-foot {
  margin-top: 9px; font-family: var(--krl-mono); font-size: 11px;
  color: var(--krl-ter); line-height: 1.55;
}

/* ETF 快照条形图的说明标签 */
.krl-tag {
  display: inline-block; padding: 5px 12px; margin: 2px 0 10px; border-radius: 10px;
  background: var(--krl-fill2); color: var(--krl-ter);
  font-family: var(--krl-mono); font-size: 11px;
}
.krl-chart-cumflow { height: 420px; }
/* 17 根条（16 只 + 其他），每根约 26px */
.krl-chart-etf { height: 480px; }

.krl-alerts { margin: 16px 0 0; }
.krl-alert {
  display: flex; gap: 12px; align-items: flex-start; border-radius: 14px;
  background: var(--krl-red-tint); border: 1px solid rgba(255,69,58,.30);
  color: var(--krl-ink); font-size: 13.5px; line-height: 1.65; padding: 12px 16px; margin-bottom: 10px;
}
.krl-alert b { font-family: var(--krl-mono); font-variant-numeric: tabular-nums; }
.krl-alert .tag {
  flex: none; margin-top: 1px; font-family: var(--krl-mono); font-size: 10.5px;
  font-weight: 700; letter-spacing: .1em; color: var(--krl-red);
}

.krl-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(168px, 1fr)); gap: 12px; margin: 16px 0 8px; }
.krl-kpi { background: var(--krl-card); border: 1px solid var(--krl-sep); border-radius: 14px; padding: 13px 15px 12px; }
.krl-kpi .k { font-size: 12px; font-weight: 500; color: var(--krl-sub); }
.krl-kpi.hot .k::before { content: "●"; color: var(--krl-red); font-size: 8px; vertical-align: 2px; margin-right: 5px; }
.krl-kpi .v {
  font-size: 24px; font-weight: 700; font-family: var(--krl-mono);
  font-variant-numeric: tabular-nums; letter-spacing: -.03em; margin-top: 4px; color: var(--krl-ink);
}
.krl-kpi.hot .v { color: var(--krl-red); }
.krl-kpi .v .u { font-size: 12px; font-weight: 500; color: var(--krl-ter); letter-spacing: 0; }
.krl-kpi .s { font-size: 11px; color: var(--krl-ter); font-family: var(--krl-mono); margin-top: 4px; line-height: 1.5; }

.krl-chip {
  display: inline-block; padding: 1px 8px; border-radius: 999px; font-family: var(--krl-mono);
  font-size: 10.5px; font-weight: 600; line-height: 16px; vertical-align: 1px;
}
.krl-chip.lo { background: var(--krl-green-tint); color: var(--krl-green); }
.krl-chip.mid { background: var(--krl-grey-tint); color: var(--krl-sub); }
.krl-chip.hi { background: var(--krl-orange-tint); color: var(--krl-orange); }
.krl-chip.top { background: var(--krl-red-tint); color: var(--krl-red); }

.krl-sec { margin-top: 46px; }
.krl-sec h2 { font-family: var(--krl-sans); font-size: 21px; font-weight: 700; letter-spacing: -.02em; margin: 0 0 4px; color: var(--krl-ink); }
.krl-sec .cap { color: var(--krl-sub); font-size: 13px; margin: 0 0 14px; line-height: 1.6; }

.krl-panel { background: var(--krl-card); border: 1px solid var(--krl-sep); border-radius: 18px; padding: 14px 12px 8px; }
.krl-panel-gap { margin-top: 14px; }

.krl-toolbar {
  display: inline-flex; flex-wrap: wrap; gap: 2px; align-items: center; margin: 0 0 10px;
  background: var(--krl-fill); border-radius: 10px; padding: 3px;
}
.krl-toolbar .lbl { color: var(--krl-ter); font-family: var(--krl-mono); font-size: 11px; padding: 0 8px 0 10px; }
.krl-btn {
  border: 0; background: transparent; color: var(--krl-sub); border-radius: 8px;
  font-family: var(--krl-mono); font-size: 12px; padding: 5px 12px; cursor: pointer; transition: color .15s;
}
.krl-btn:hover { color: var(--krl-ink); }
.krl-btn.on { background: var(--krl-card); color: var(--krl-ink); font-weight: 600; box-shadow: var(--krl-seg-shadow); }
.krl-btn.off { opacity: .42; }

.krl-chart { width: 100%; position: relative; }
/* 图内左上角常驻信息框（对齐竞品）。默认 pointer-events:none 让十字线不被挡住，
   只有可点击的序列行放开事件 —— 点行=切换该序列显隐。 */
.krl-tip {
  position: absolute; top: 7px; left: 9px; z-index: 4; white-space: nowrap;
  background: color-mix(in srgb, var(--krl-card) 88%, transparent);
  border: 1px solid var(--krl-sep); border-radius: 10px; padding: 6px 11px;
  backdrop-filter: blur(6px);
  font-family: "SF Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 11px; line-height: 1.7; color: var(--krl-sub); pointer-events: none;
}
.krl-tip .d { color: var(--krl-ink); font-weight: 600; }
.krl-tip b { color: var(--krl-ink); font-variant-numeric: tabular-nums; }
.krl-tip .sw {
  display: inline-block; width: 11px; height: 2.5px; border-radius: 2px;
  vertical-align: 3px; margin-right: 6px;
}
.krl-tip .lg { cursor: pointer; pointer-events: auto; }
.krl-tip .lg.off { opacity: .36; }
.krl-chart-thermo { height: 560px; }
.krl-chart-liq { height: 460px; }
.krl-chart-main { height: 640px; }
.krl-chart-micro { height: 320px; }
.krl-chart-dep { height: 460px; }

.krl-note {
  background: var(--krl-fill2); border-radius: 14px; color: var(--krl-sub);
  font-size: 12.5px; line-height: 1.75; padding: 12px 16px; margin: 14px 0 0;
}

.krl-details { background: var(--krl-card); border: 1px solid var(--krl-sep); border-radius: 18px; margin-top: 14px; padding: 0 16px; }
.krl-details summary {
  list-style: none; cursor: pointer; padding: 14px 2px; color: var(--krl-sub);
  font-size: 13px; font-weight: 600; display: flex; align-items: center; gap: 9px;
}
.krl-details summary::-webkit-details-marker { display: none; }
.krl-details summary:hover { color: var(--krl-ink); }
.krl-details summary .chev { display: inline-block; transition: transform .18s ease; color: var(--krl-ter); font-size: 11px; }
.krl-details[open] summary .chev { transform: rotate(90deg); }
.krl-details .body { padding: 2px 2px 16px; }

.krl-tablewrap { overflow: auto; max-height: 520px; border: 1px solid var(--krl-sep); border-radius: 12px; }
table.krl-tab {
  border-collapse: collapse; width: 100%; font-family: var(--krl-mono); font-size: 11.5px;
  white-space: nowrap; font-variant-numeric: tabular-nums;
}
.krl-tab th {
  background: #050608; color: var(--krl-sub); font-weight: 500; text-align: right;
  padding: 8px 12px; border-bottom: 1px solid var(--krl-sep); position: sticky; top: 0; z-index: 1;
}
.krl-tab td { text-align: right; padding: 5px 12px; border-bottom: 1px solid var(--krl-fill2); color: var(--krl-ink); }
.krl-tab th:first-child, .krl-tab td:first-child { text-align: left; }
.krl-tab tr:hover td { background: var(--krl-fill2); }
.krl-tab tr.blow td { background: var(--krl-red-tint); }
.krl-tab td.rd { color: var(--krl-red); font-weight: 700; }
/* ETF 快照表的产品名列：名字比数字长得多，给它足够宽度且不换行挤压数字列 */
.krl-tab td.nm { font-family: inherit; white-space: nowrap; max-width: 320px; overflow: hidden; text-overflow: ellipsis; }

.krl-empty {
  display: flex; align-items: center; justify-content: center; min-height: 150px;
  border: 1px dashed var(--krl-sep); border-radius: 12px; padding: 20px; margin-bottom: 6px;
}
.krl-empty-text { font-size: 12.5px; color: var(--krl-ter); text-align: center; max-width: 480px; line-height: 1.7; }

.krl-foot {
  margin-top: 48px; padding-top: 18px; border-top: 1px solid var(--krl-sep);
  color: var(--krl-ter); font-size: 11px; font-family: var(--krl-mono); line-height: 1.9;
}

@media (max-width: 900px) {
  .krl-page { padding: 14px 14px 0; }
  .krl-chart-thermo { height: 460px; }
  .krl-chart-liq, .krl-chart-dep { height: 400px; }
  .krl-chart-main { height: 520px; }
  .krl-kpi .v { font-size: 20px; }
  .krl-tip { font-size: 10px; line-height: 1.55; padding: 5px 8px; top: 5px; left: 6px; }
}

/* 第 9 个中文 tab 会撑破单行 flex 并顶坏 160px 底部面板高度 → 横向滚动兜住 */
.bottom-tabs-scroll { overflow-x: auto; overflow-y: hidden; scrollbar-width: none; -ms-overflow-style: none; min-width: 0; }
.bottom-tabs-scroll::-webkit-scrollbar { display: none; }
.bottom-tabs-scroll > .bottom-tab { flex: 0 0 auto; white-space: nowrap; }

/* ── A-3 水位清单表 + A-4 max change（specs/gex-level-trace-and-volume-gex-2026-08-14.md §6.2/§6.3）── */
.gex-levels-block {
  margin-top: 10px;
  padding-top: 8px;
  border-top: 1px solid rgba(99, 110, 123, 0.22);
}
.gex-levels-head {
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #8b949e;
  margin-bottom: 5px;
}
.gex-levels-col,
.gex-levels-row {
  display: grid;
  grid-template-columns: 52px 44px 1fr;
  gap: 6px;
  align-items: center;
  font-size: 10px;
  line-height: 1.5;
}
.gex-levels-col {
  color: #636e7b;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-size: 8px;
  margin-bottom: 2px;
}
.gex-levels-price { font-family: "SF Mono", ui-monospace, monospace; color: #d3dae3; text-align: right; }
.gex-levels-dist { font-family: "SF Mono", ui-monospace, monospace; color: #8b949e; text-align: right; }
.gex-levels-id { color: #a3aab5; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gex-max-change {
  margin-bottom: 6px;
  font-size: 10px;
  font-family: "SF Mono", ui-monospace, monospace;
  color: #8fa3ff;
}
.gex-max-change.unavailable { color: #636e7b; }

/* A-3 水位清单：ID 按语义着色（自有类，不依赖 Tailwind 对 JS 字符串的扫描） */
.gex-levels-id.gex-levels-pos { color: #00ffc3; }
.gex-levels-id.gex-levels-neg { color: #ff5a5a; }
.gex-levels-id.gex-levels-flip { color: #ffd871; }
.gex-levels-id.gex-levels-large { color: #8fa3ff; }
/* 关键节点 King / Gatekeeper（spec gex-king-gatekeeper-nodes-and-color-unification-2026-09-10）。
   橙色 —— 双极 GEX 辉光（黄正/紫负）下唯一空色槽，与图上 King/Gatekeeper 线同色。 */
.gex-levels-id.gex-levels-king { color: #ff8c1a; }
.gex-levels-id.gex-levels-gatekeeper { color: #ff8c1a; }
/* 双极配色 flag：水位清单表分组标题 + pos/neg/flip 与图上核心水位线同色（青→亮青、粉→玫红、金 flip→白）。 */
.gex-levels-group {
  margin: 8px 0 2px;
  font-size: 9px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #6b7684;
}
.gex-levels-group:first-child { margin-top: 2px; }
body.gex-keynodes .gex-levels-id.gex-levels-pos { color: #22d3ee; }
body.gex-keynodes .gex-levels-id.gex-levels-neg { color: #fb7185; }
body.gex-keynodes .gex-levels-id.gex-levels-flip { color: #f0f0f0; }
body.gex-keynodes .gex-levels-id.gex-levels-large { color: #b487ea; }
/* Nightwatch 英文命名 + 多 ID 合并比中文长，flag 开时让 ID 列换行不省略（分组视图本就更高，可接受）。 */
body.gex-keynodes .gex-levels-id { white-space: normal; overflow: visible; text-overflow: clip; }
body.gex-keynodes .gex-levels-row { align-items: start; }
.gex-levels-kgnote {
  margin-top: 6px;
  padding-top: 5px;
  border-top: 1px solid rgba(255, 255, 255, 0.06);
  font-size: 10px;
  line-height: 1.4;
  color: #8b949e;
}

/* ── A-2 逐档 GEX 覆盖面板（econ 式，2026-08-15 从画布侧栏改为 DOM 面板）── */
.gex-strikes-overlay {
  position: absolute;
  left: 8px;
  bottom: 40px;
  z-index: 24;
  width: min(360px, calc(100% - 16px));
  height: min(320px, calc(100% - 84px));
  max-height: min(320px, calc(100% - 84px));
  overflow: hidden;
  display: flex;
  flex-direction: column;
  pointer-events: auto;
  background: rgba(12, 15, 22, 0.93);
  border: 1px solid rgba(255, 255, 255, 0.09);
  border-radius: 6px;
  box-shadow: 0 16px 36px rgba(0, 0, 0, 0.38);
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px;
}
.gex-strikes-head {
  cursor: grab;
  user-select: none;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 6px 8px;
  background: rgba(30, 58, 110, 0.96);
  color: #dee1e9;
  font-size: 10px;
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
.gex-strikes-head-note { color: #8b949e; font-weight: 600; }
.gex-strikes-col,
.gex-strikes-row {
  display: grid;
  grid-template-columns: 62px 1fr 64px 74px;
  gap: 6px;
  align-items: center;
  padding: 3px 8px;
}
.gex-strikes-col {
  color: #636e7b;
  font-size: 8px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}
.gex-strikes-body { flex: 1 1 0; min-height: 0; max-height: calc(100% - 48px); overflow-y: auto; scrollbar-width: thin; position: relative; }
.gex-strikes-row { border-bottom: 1px solid rgba(255, 255, 255, 0.04); }
.gex-strikes-strike { color: #d3dae3; text-align: right; }
.gex-strikes-net.pos { color: #00ffc3; text-align: right; }
.gex-strikes-net.neg { color: #ff5a5a; text-align: right; }
.gex-strikes-range { color: #8b949e; text-align: right; font-size: 10px; }
.gex-strikes-bar {
  position: relative;
  height: 12px;
  background: rgba(255, 255, 255, 0.04);
  overflow: hidden;
}
.gex-strikes-bar::before {
  content: '';
  position: absolute;
  left: 50%;
  top: 0;
  bottom: 0;
  width: 1px;
  background: rgba(255, 255, 255, 0.25);
}
.gex-strikes-bar-fill { position: absolute; top: 1px; bottom: 1px; min-width: 1px; }
.gex-strikes-bar-fill.pos { background: rgba(0, 255, 195, 0.55); }
.gex-strikes-bar-fill.neg { background: rgba(255, 0, 85, 0.55); }
.gex-strikes-empty { padding: 14px; text-align: center; color: #636e7b; }
/* 双极配色（spec gex-king-gatekeeper-nodes-and-color-unification-2026-09-10）：flag 开时
   逐档 GEX 面板与 GEX 热力图辉光同一套 —— 正 GEX 黄 / 负 GEX 紫罗兰。body.gex-keynodes 由 dashboard.js 按 flag 挂。 */
body.gex-keynodes .gex-strikes-net.pos { color: #ffe23a; }
body.gex-keynodes .gex-strikes-net.neg { color: #b487ea; }
body.gex-keynodes .gex-strikes-bar-fill.pos { background: rgba(255, 235, 50, 0.55); }
body.gex-keynodes .gex-strikes-bar-fill.neg { background: rgba(150, 95, 225, 0.55); }
body.gex-keynodes .gex-strikes-row.is-peak { background: rgba(255, 235, 50, 0.10); }
body.gex-keynodes .gex-strikes-row.is-peak .gex-strikes-strike { color: #ffe97a; }
@media (max-width: 767px) {
  .gex-strikes-overlay { left: 6px; right: 6px; bottom: 34px; width: auto; font-size: 10px; }
}

/* 最大净 GEX 峰值行高亮（2026-08-15 产品要求默认定位到峰值） */
.gex-strikes-row.is-peak { background: rgba(255, 181, 71, 0.10); }
.gex-strikes-row.is-peak .gex-strikes-strike { color: #ffd58c; font-weight: 700; }

/* ============================================================= */
/* 公开冻结首页（spec public-frozen-dashboard-homepage-2026-09-03） */
/* ============================================================= */
/* 🔴 常驻条是 position:fixed 顶部条 —— .app-grid 是 100vh 网格，body padding 不管用，
   必须把网格往下推 --frozen-strip-h 且同时把高度减掉，否则底部会溢出一屏
   （放底部时曾盖住 tab 栏，2026-09-03 踩；产品所有者改放顶部更醒目、引导登录更合适）。 */
body.has-frozen-strip { --frozen-strip-h: 36px; padding-top: var(--frozen-strip-h); }
body.has-frozen-strip .app-grid { height: calc(100vh - var(--frozen-strip-h)); }
#frozen-strip {
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  z-index: 9000;
  height: var(--frozen-strip-h, 34px);
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: nowrap;
  gap: 14px;
  padding: 0 16px;
  white-space: nowrap;
  overflow: hidden;
  /* 深空玻璃 + 一层极淡的青色辉光从左侧渗出 */
  background:
    radial-gradient(120% 180% at 0% 50%, rgba(0, 255, 195, 0.10), transparent 55%),
    linear-gradient(180deg, rgba(9, 13, 17, 0.98), rgba(5, 7, 9, 0.98));
  border-bottom: 1px solid rgba(0, 255, 195, 0.22);
  box-shadow: 0 6px 30px rgba(0, 0, 0, 0.55), inset 0 -1px 0 rgba(0, 255, 195, 0.06);
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 11px;
  color: #aeb9c7;
  backdrop-filter: blur(10px) saturate(1.2);
  -webkit-backdrop-filter: blur(10px) saturate(1.2);
}
/* 底边缘一道缓慢扫过的高光线 —— 交易终端 HUD 感 */
#frozen-strip::after {
  content: '';
  position: absolute;
  left: 0;
  bottom: 0;
  height: 1px;
  width: 40%;
  background: linear-gradient(90deg, transparent, rgba(0, 255, 195, 0.9), rgba(0, 217, 255, 0.6), transparent);
  filter: blur(0.4px);
  animation: frozen-strip-sweep 5.5s linear infinite;
}
@keyframes frozen-strip-sweep {
  0%   { transform: translateX(-120%); }
  100% { transform: translateX(320%); }
}
.frozen-strip-main {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}
.frozen-strip-dot {
  flex: none;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #00ffc3;
  box-shadow: 0 0 0 0 rgba(0, 255, 195, 0.55), 0 0 10px rgba(0, 255, 195, 0.9);
  animation: frozen-strip-pulse 2.4s ease-out infinite;
}
@keyframes frozen-strip-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(0, 255, 195, 0.5), 0 0 10px rgba(0, 255, 195, 0.9); }
  70%  { box-shadow: 0 0 0 7px rgba(0, 255, 195, 0), 0 0 10px rgba(0, 255, 195, 0.4); }
  100% { box-shadow: 0 0 0 0 rgba(0, 255, 195, 0), 0 0 10px rgba(0, 255, 195, 0.9); }
}
.frozen-strip-chip {
  flex: none;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #7cffe4;
  padding: 3px 8px 2px;
  border: 1px solid rgba(0, 255, 195, 0.35);
  border-radius: 3px;
  background: linear-gradient(180deg, rgba(0, 255, 195, 0.12), rgba(0, 255, 195, 0.04));
  text-shadow: 0 0 8px rgba(0, 255, 195, 0.45);
}
.frozen-strip-lead {
  letter-spacing: 0.03em;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  color: #8b95a5;
}
.frozen-strip-actions { display: inline-flex; align-items: center; gap: 10px; flex: none; }
.frozen-strip-cta {
  position: relative;
  display: inline-flex;
  align-items: center;
  padding: 4px 14px;
  border-radius: 5px;
  background: linear-gradient(135deg, #00ffc3 0%, #12e0e8 55%, #21c9ff 100%);
  color: #04140f;
  font-weight: 800;
  letter-spacing: 0.01em;
  text-decoration: none;
  white-space: nowrap;
  overflow: hidden;
  box-shadow: 0 0 18px rgba(0, 255, 195, 0.28), inset 0 1px 0 rgba(255, 255, 255, 0.35);
  transition: transform 0.15s ease, box-shadow 0.15s ease, filter 0.15s ease;
}
/* hover 时一道高光横扫过按钮 */
.frozen-strip-cta::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(115deg, transparent 30%, rgba(255, 255, 255, 0.55) 50%, transparent 70%);
  transform: translateX(-120%);
  transition: transform 0.55s ease;
}
.frozen-strip-cta:hover {
  transform: translateY(-1px);
  box-shadow: 0 0 26px rgba(0, 255, 195, 0.45), inset 0 1px 0 rgba(255, 255, 255, 0.4);
  filter: brightness(1.04);
}
.frozen-strip-cta:hover::before { transform: translateX(120%); }
.frozen-strip-cta--subtle {
  background: rgba(174, 185, 199, 0.06);
  color: #c9d3e0;
  border: 1px solid rgba(0, 255, 195, 0.28);
  box-shadow: none;
  font-weight: 700;
}
.frozen-strip-cta--subtle:hover {
  border-color: rgba(0, 255, 195, 0.55);
  color: #eef4f9;
  box-shadow: 0 0 14px rgba(0, 255, 195, 0.18);
}
@media (prefers-reduced-motion: reduce) {
  #frozen-strip::after,
  .frozen-strip-dot { animation: none; }
  .frozen-strip-cta::before { display: none; }
}
.bottom-tab[data-locked="1"] { opacity: 0.82; }
.bottom-tab[data-locked="1"]:hover { opacity: 1; }
/* 🔒 用 ::after 画 —— i18n applyDOM 会重写按钮 textContent，append 的子节点会被抹掉 */
.bottom-tab[data-locked="1"]::after {
  content: " \1F512";
  font-size: 0.82em;
  opacity: 0.7;
  margin-left: 3px;
}
#frozen-placeholder {
  position: fixed;
  inset: 0;
  z-index: 8500;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 24px;
  text-align: center;
  background: rgba(5, 6, 8, 0.82);
  color: #8b949e;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 13px;
  backdrop-filter: blur(3px);
  pointer-events: none;
}
.frozen-strip-cta { flex: none; }
/* 复盘模式头部链接锁定后同款 🔒（i18n 会重写 .link-label，锁画在 <a> 上） */
#replay-link[data-locked="1"]::after {
  content: " \1F512";
  font-size: 0.82em;
  opacity: 0.7;
  margin-left: 3px;
}
#replay-link[data-locked="1"] { cursor: pointer; }
/* 冻结首页：日期选择器锁定 —— 显示出来（与登录态 header 布局一致）但整组点击跳订阅
   （前后箭头也一样，engine 在捕获阶段整组拦截）。🔒 画在日期文字后面
   （date-display-btn 只有 data-i18n-title，textContent 不被 i18n 重写）。 */
#date-picker-group[data-locked="1"],
#date-picker-group[data-locked="1"] .date-nav-btn,
#date-picker-group[data-locked="1"] .date-display-btn { cursor: pointer; }
#date-picker-group[data-locked="1"] .date-nav-btn { opacity: 0.55; }
#date-picker-group[data-locked="1"] .date-display-btn::after {
  content: " \1F512";
  font-size: 0.82em;
  opacity: 0.7;
  margin-left: 4px;
}

@media (max-width: 767px) {
  /* 顶部条 —— 顶部没有其它 fixed 元素，直接贴顶（留刘海安全区）；
     移动网格（flex column，高度已减 tab-bar-height）再减一次条高并下推。 */
  body.has-frozen-strip {
    --frozen-strip-h: 44px;
    padding-top: calc(var(--frozen-strip-h) + env(safe-area-inset-top, 0px));
  }
  #frozen-strip {
    top: 0;
    padding-top: env(safe-area-inset-top, 0px);
    height: calc(var(--frozen-strip-h) + env(safe-area-inset-top, 0px));
    font-size: 10px;
    gap: 8px;
  }
  /* 窄屏下 lead 正文（"最近一个已收盘交易日的完整结构…"）会被 ellipsis 压成孤零零
     一个 "2"（截自日期），像坏掉的序号 —— 直接隐藏，chip + CTA 已够表达。 */
  .frozen-strip-lead { display: none; }
  /* CTA 点击区：条内只有 40-44px，尽量给到 ~32px 高、留足内边距。 */
  .frozen-strip-cta {
    min-height: 32px;
    padding: 6px 14px;
  }
  body.has-frozen-strip .app-grid {
    height: calc(100dvh - var(--tab-bar-height, 48px) - var(--frozen-strip-h) - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px)) !important;
  }
}
