
    .watch-groups-card { margin-top:12px; padding:10px; border:1px solid var(--line); border-radius:10px; background:var(--panel2); }
    .watch-groups-heading { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:8px; color:var(--text); font-size:13px; }
    .watch-groups-heading button { padding:4px 7px; border:1px dashed var(--line); border-radius:6px; background:transparent; color:var(--accent); font-size:11px; }
    .watch-groups-heading button:hover { border-color:var(--accent); background:rgba(37,99,235,.08); }
    .watch-groups-list { display:grid; gap:6px; }
    .watch-group { overflow:hidden; border:1px solid var(--line); border-radius:7px; background:var(--panel); }
    .watch-group-heading { display:flex; align-items:center; gap:4px; min-height:32px; padding:3px 5px; background:rgba(37,99,235,.05); }
    .watch-group-toggle { flex:0 0 auto; width:22px; height:24px; padding:0; border:0; background:transparent; color:var(--accent); font-size:12px; }
    .watch-group-name { min-width:0; flex:1 1 auto; width:80px; padding:4px 5px; border:1px solid transparent; border-radius:4px; background:transparent; color:var(--text); font-size:11px; font-weight:700; }
    .watch-group-name:focus { border-color:var(--accent); background:var(--panel2); outline:none; }
    .watch-group-count { flex:0 0 auto; color:var(--muted); font-size:10px; }
    .watch-group-action { flex:0 0 auto; width:23px; height:23px; padding:0; border:0; border-radius:4px; background:transparent; color:var(--muted); font-size:15px; line-height:1; }
    .watch-group-action:hover { background:rgba(37,99,235,.1); color:var(--accent); }
    .watch-group-action.remove:hover { color:var(--up); }
    .watch-group-items { display:grid; gap:3px; padding:4px; border-top:1px solid var(--line); }
    .watch-group-item { display:flex; align-items:center; gap:6px; min-width:0; padding:5px 6px; border-radius:5px; cursor:grab; user-select:none; }
    .watch-group-item:active { cursor:grabbing; }
    .watch-group-item.is-dragging { opacity:.42; }
    .watch-group-item.drop-before { box-shadow:inset 0 2px var(--accent); }
    .watch-group-item.drop-after { box-shadow:inset 0 -2px var(--accent); }
    .watch-group-item button { cursor:pointer; user-select:auto; }
    .watch-group-picker-menu { position:fixed; z-index:1200; width:210px; padding:6px; border:1px solid var(--line); border-radius:8px; background:var(--panel); box-shadow:0 12px 30px rgba(15,23,42,.3); }
    .watch-group-picker-menu.hidden { display:none !important; }
    .watch-group-picker-title { display:flex; align-items:center; justify-content:space-between; padding:6px 8px; color:var(--muted); font-size:11px; }
    .watch-group-picker-close { width:22px; height:22px; border:0; border-radius:4px; background:transparent; color:var(--muted); cursor:pointer; }
    .watch-group-picker-option { display:flex; align-items:center; justify-content:space-between; width:100%; min-height:34px; padding:6px 8px; border:0; border-radius:5px; background:transparent; color:var(--text); text-align:left; cursor:pointer; }
    .watch-group-picker-option:hover,.watch-group-picker-option[aria-pressed="true"] { background:var(--panel2); }
    .watch-group-picker-option[aria-pressed="true"]::after { content:'✓'; color:var(--accent); font-weight:700; }
    .watch-group-item:hover { background:rgba(37,99,235,.08); }
    .watch-group-item-main { min-width:0; flex:1 1 auto; }
    .watch-group-item-main b,.watch-group-item-main small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    .watch-group-item-main b { color:var(--text); font-size:11px; }
    .watch-group-item-main small { color:var(--accent); font-size:10px; }
    .watch-group-item-alert, .watch-price-alert { display:inline-flex; align-items:center; justify-content:center; flex:0 0 auto; width:19px; height:19px; color:var(--muted); }
    .watch-group-item-alert svg, .watch-price-alert svg { width:14px; height:14px; fill:none; stroke:currentColor; stroke-linecap:round; stroke-linejoin:round; stroke-width:1.8; }
    .watch-group-item-alert.configured, .watch-price-alert.configured { color:var(--accent); }
    .watch-group-item-alert.triggered, .watch-price-alert.triggered { color:#d49c00; }
    .watch-group-item-meta { flex:0 0 auto; text-align:right; font-size:10px; font-variant-numeric:tabular-nums; }
    .watch-group-item-meta strong { display:block; color:var(--text); font-size:11px; }
    .watch-group-item-meta em { font-style:normal; }
    .watch-group-item-remove { flex:0 0 auto; width:18px; height:18px; padding:0; border:0; background:transparent; color:var(--muted); font-size:13px; line-height:1; }
    .watch-group-item-remove:hover { color:var(--up); }
    .watch-group-empty { padding:8px 6px; color:var(--muted); font-size:10px; text-align:center; }
    :root:is([data-theme="dark"],[data-theme="gray"]) .watch-group-heading { background:var(--theme-group-bg,rgba(105,167,255,.08)); }
    .popup-drag-handle { cursor:grab; user-select:none; touch-action:none; }
    .popup-drag-handle::after { content:'⋮⋮'; float:right; margin-left:8px; color:var(--muted); letter-spacing:-2px; opacity:.7; }
    .popup-drag-grip { display:flex; align-items:center; justify-content:center; width:100%; height:8px; margin:0; cursor:grab; user-select:none; touch-action:none; }
    .popup-drag-grip::before { content:''; width:26px; height:3px; border-radius:3px; background:var(--muted); opacity:.42; }
    .popup-drag-grip::after { content:none; }
    .movable-popup > header { margin:0; flex-shrink:0; }
    .movable-popup > header.popup-drag-handle::after { content:none; }
    .movable-popup.is-floating { position:fixed !important; right:auto !important; bottom:auto !important; height:auto !important; transform:none !important; }
    .movable-popup.is-floating.dragging { cursor:grabbing; }
    .movable-popup.is-floating.dragging .popup-drag-handle,.movable-popup.is-floating.dragging .popup-drag-grip { cursor:grabbing; }
    .indicator-menu.is-floating { position:fixed; z-index:40; right:auto; }
    .indicator-menu.is-floating.dragging { cursor:grabbing; box-shadow:0 14px 34px rgba(15,23,42,.28); }
    .indicator-menu.is-floating.dragging .popup-drag-handle { cursor:grabbing; }
    :root:is([data-theme="dark"],[data-theme="gray"]) .indicator-menu.is-floating.dragging { box-shadow:0 14px 34px rgba(0,0,0,.55); }
    .price-alert-dialog.is-floating { position:fixed; z-index:70; right:auto; }
    .price-alert-dialog.is-floating.dragging { cursor:grabbing; box-shadow:0 14px 34px rgba(15,23,42,.28); }
    .price-alert-dialog.is-floating.dragging .popup-drag-handle { cursor:grabbing; }
    :root:is([data-theme="dark"],[data-theme="gray"]) .price-alert-dialog.is-floating.dragging { box-shadow:0 16px 42px rgba(0,0,0,.55); }
    :root { --bg:#f7f8fa; --panel:#ffffff; --panel2:#ffffff; --line:#e2e6ec; --text:#1f2937; --muted:#6b7280; --up:#ef3340; --down:#00ad83; --accent:#2563eb; }
    * { box-sizing:border-box; } body { margin:0; background:var(--bg); color:var(--text); font:14px/1.5 "Microsoft YaHei",system-ui,sans-serif; }
    .wrap { max-width:1360px; margin:0 auto; padding:28px; } header { display:flex; justify-content:space-between; gap:20px; align-items:flex-start; margin-bottom:22px; }
    h1 { margin:0 0 6px; font-size:26px; letter-spacing:.5px; } h2 { margin:0; font-size:20px; } .sub { color:var(--muted); }
    .status { display:flex; align-items:center; gap:9px; color:var(--muted); } .dot { width:10px; height:10px; border-radius:50%; background:#e3a84d; box-shadow:0 0 12px #e3a84d; } .dot.ok { background:var(--down); box-shadow:0 0 12px var(--down); } .dot.bad { background:var(--up); box-shadow:0 0 12px var(--up); }
    .toolbar,.panel { background:var(--panel); border:1px solid var(--line); border-radius:14px; } .toolbar { padding:14px 16px; display:flex; justify-content:space-between; gap:14px; align-items:center; margin-bottom:16px; }
    .toolbar-left { display:flex; gap:18px; align-items:center; flex-wrap:wrap; } button, select { border:1px solid var(--line); border-radius:8px; padding:8px 13px; background:#ffffff; color:var(--text); font-weight:600; cursor:pointer; } button.primary { background:var(--accent); color:#ffffff; border:0; } button:hover { filter:brightness(1.04); }
    .watchlist-panel { margin-bottom:18px; padding:10px 12px; background:var(--panel); border:1px solid var(--line); border-radius:12px; } .watchlist-heading { display:flex; align-items:center; gap:9px; color:var(--text); font-size:13px; font-weight:700; } .watchlist-count { color:var(--muted); font-size:11px; font-weight:400; } .watchlist-toggle { margin-left:auto; border:0; padding:4px 8px; background:transparent; color:var(--muted); font-size:12px; cursor:pointer; } .watchlist-toggle:hover { color:var(--accent); } .watchlist-items { display:flex; gap:6px; flex-wrap:wrap; max-height:74px; overflow:auto; margin-top:8px; } .watchlist-panel.collapsed .watchlist-items { display:none; } .watch-chip { display:inline-flex; align-items:center; gap:7px; padding:5px 8px; border:1px solid var(--line); border-radius:7px; background:#fff; color:var(--text); cursor:pointer; font-size:12px; } .watch-chip:hover,.watch-chip.selected { border-color:var(--accent); background:#f5f8ff; } .watch-chip b { color:var(--accent); font-size:11px; } .watch-chip em { color:var(--muted); font-style:normal; font-variant-numeric:tabular-nums; } .watch-remove { border:0; padding:0; background:transparent; color:#9aa2ad; cursor:pointer; font-size:14px; line-height:1; } .watch-remove:hover { color:var(--up); } .watch-add { border:1px dashed #b8c0ca; border-radius:7px; padding:4px 8px; background:transparent; color:var(--muted); font-size:12px; cursor:pointer; } .watch-add:hover { border-color:var(--accent); color:var(--accent); } .cards { display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin-bottom:16px; } .contract-card { padding:16px; min-height:142px; cursor:pointer; transition:.18s; } .contract-card:hover { transform:translateY(-2px); border-color:var(--accent); box-shadow:0 8px 24px rgba(0,0,0,.2); }
    .card-head { display:flex; justify-content:space-between; align-items:center; } .card-name { font-size:16px; font-weight:700; } .code { color:var(--accent); font-weight:700; } .star-btn,.mini-star { border:0; padding:0; background:transparent; color:#9aa2ad; cursor:pointer; font-size:16px; line-height:1; } .star-btn:hover,.star-btn.selected,.mini-star:hover,.mini-star.selected { color:#e0a900; } .card-price { font-size:26px; font-weight:700; margin:15px 0 4px; font-variant-numeric:tabular-nums; } .card-meta { color:var(--muted); display:flex; justify-content:space-between; gap:10px; }
    .up { color:var(--up); } .down { color:var(--down); } .panel { overflow:hidden; } .panel-title { padding:14px 16px; border-bottom:1px solid var(--line); display:flex; justify-content:space-between; align-items:center; gap:12px; color:var(--muted); } .table-wrap { overflow:auto; }
    table { width:100%; border-collapse:collapse; min-width:1000px; } th,td { padding:12px 14px; border-bottom:1px solid rgba(39,51,66,.75); text-align:right; white-space:nowrap; } th:first-child,td:first-child { text-align:left; } th { color:var(--muted); font-size:12px; font-weight:500; } td { font-variant-numeric:tabular-nums; } tbody tr.quote-row { cursor:pointer; } tbody tr.quote-row:hover { background:rgba(106,167,255,.08); } td.contract { color:var(--accent); font-weight:700; } td.contract small { display:block; color:var(--muted); font-weight:400; }
    .error { color:var(--up); padding:18px; display:none; white-space:pre-wrap; } .empty { color:var(--muted); text-align:center; padding:30px; } footer { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; color:var(--muted); margin-top:16px; font-size:12px; }
    .hidden { display:none !important; } .history-tools { display:flex; gap:8px; align-items:center; flex-wrap:wrap; } .history-title { display:flex; align-items:center; gap:12px; } .periods { display:flex; gap:2px; padding:3px; background:var(--panel2); border:1px solid var(--line); border-radius:8px; } .period-btn { border:0; border-radius:5px; padding:6px 10px; background:transparent; color:var(--muted); font-size:12px; } .period-btn.active { background:#edf1f6; color:var(--text); } .chart { padding:0; background:var(--panel2); border-bottom:1px solid var(--line); } .chart-command { display:flex; align-items:center; gap:4px; min-height:42px; padding:6px 10px; border-bottom:1px solid var(--line); color:var(--muted); font-size:12px; } .chart-command button { border:0; padding:6px 9px; background:transparent; color:var(--muted); font-size:12px; font-weight:500; } .chart-command button:hover,.chart-command button.active { color:var(--text); background:#edf1f6; } .chart-command .command-spacer { flex:1; } .chart-layout { display:grid; grid-template-columns:38px minmax(0,1fr); min-height:550px; } .chart-tools { display:flex; flex-direction:column; align-items:center; gap:4px; padding:10px 4px; border-right:1px solid var(--line); background:#fbfcfd; } .chart-tools button { width:28px; height:28px; padding:0; border:0; border-radius:5px; background:transparent; color:#7b8490; font-size:15px; } .chart-tools button:hover,.chart-tools button.active { color:var(--accent); background:#edf1f6; } .chart-stage { position:relative; height:550px; min-width:0; } #priceChart { display:block; width:100%; height:100%; cursor:crosshair; } .time-share-close-label { position:absolute; z-index:3; bottom:0; pointer-events:none; padding:0 3px; color:var(--muted); background:var(--panel2); font-size:11px; line-height:16px; white-space:nowrap; font-variant-numeric:tabular-nums; } #drawingsLayer { position:absolute; inset:0; width:100%; height:100%; pointer-events:none; overflow:visible; z-index:1; } .drawing-line { stroke:#2563eb; stroke-width:1.5; stroke-dasharray:6 4; vector-effect:non-scaling-stroke; } .drawing-horizontal { stroke:#f0a000; stroke-width:1.2; stroke-dasharray:4 4; vector-effect:non-scaling-stroke; } .chart-tooltip { position:absolute; pointer-events:none; display:none; z-index:2; padding:7px 9px; border:1px solid var(--line); border-radius:6px; background:rgba(255,255,255,.96); color:var(--text); font-size:12px; line-height:1.55; white-space:nowrap; box-shadow:0 6px 20px rgba(17,24,39,.12); } #tv-attr-logo { display:none !important; } .history-table table { min-width:760px; }
    .app-nav { display:flex; align-items:center; gap:4px; min-height:52px; padding:0 14px; margin-bottom:18px; background:var(--panel); border:1px solid var(--line); border-radius:12px; overflow-x:auto; } .brand { display:flex; align-items:center; gap:8px; flex:0 0 auto; margin-right:16px; color:var(--text); font-size:18px; font-weight:700; white-space:nowrap; } .brand-mark { display:grid; place-items:center; width:38px; height:28px; padding:0; overflow:hidden; border-radius:8px; background:#0b3b91; color:#ffffff; box-shadow:0 3px 9px rgba(37,99,235,.24); } .brand-mark img { display:block; width:100%; height:100%; object-fit:cover; } .nav-link { flex:0 0 auto; padding:9px 12px; color:var(--muted); border-radius:7px; font-weight:600; white-space:nowrap; } .nav-link.active { color:var(--text); background:#edf1f6; } .nav-link.disabled { opacity:.55; } .nav-spacer { flex:1 0 16px; } .nav-source { flex:0 0 auto; color:var(--muted); font-size:12px; white-space:nowrap; }
    @media(max-width:900px){ .wrap{padding:16px;} header{display:block;} .status{margin-top:14px;} .cards{grid-template-columns:repeat(2,1fr);} .toolbar{align-items:flex-start; flex-direction:column;} .chart-layout{min-height:480px;} .chart-stage{height:480px;} }
    @media(max-width:540px){ .cards{grid-template-columns:1fr;} h1{font-size:22px;} }
    html,body { min-height:100%; } .wrap { width:100%; max-width:none; min-height:100vh; padding:clamp(14px,2vw,28px); } #historyView { min-height:calc(100vh - 90px); } .history-view-panel { min-width:0; }
    .chart-layout { grid-template-columns:38px minmax(0,1fr) 320px; min-height:0; height:clamp(560px,calc(100vh - 155px),900px); } .chart-stage { height:100%; min-height:0; } .market-side { min-width:0; overflow:auto; padding:12px; border-left:1px solid var(--line); background:#fbfcfd; } .side-card { padding:14px; margin-bottom:12px; border:1px solid var(--line); border-radius:10px; background:#ffffff; } .side-card:last-child { margin-bottom:0; } .side-heading { display:flex; align-items:center; justify-content:space-between; margin-bottom:12px; color:var(--text); font-size:14px; font-weight:700; } .side-status { color:var(--down); font-size:11px; font-weight:500; } .side-contract { display:flex; align-items:baseline; justify-content:space-between; gap:8px; margin-bottom:6px; } .side-contract span { overflow:hidden; color:var(--text); font-size:13px; font-weight:700; text-overflow:ellipsis; white-space:nowrap; } .side-contract b { color:var(--accent); font-size:12px; } .side-price-row { display:flex; align-items:baseline; justify-content:space-between; gap:8px; padding:4px 0 13px; border-bottom:1px solid #edf0f3; } .side-price-row strong { color:var(--text); font-size:24px; line-height:1; font-variant-numeric:tabular-nums; } .side-price-row span { font-size:12px; font-variant-numeric:tabular-nums; } .order-grid { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin:12px 0 10px; } .order-box { padding:10px; border-radius:8px; background:#f5f8fb; } .order-box span,.side-row span,.side-note,.info-list dt { color:var(--muted); font-size:11px; } .order-box b { display:block; margin-top:4px; color:var(--text); font-size:17px; font-variant-numeric:tabular-nums; } .side-row { display:flex; justify-content:space-between; gap:10px; padding:8px 0; border-bottom:1px solid #f0f2f5; } .side-row:last-of-type { border-bottom:0; } .side-row b,.side-row strong,.side-row em { color:var(--text); font-style:normal; font-variant-numeric:tabular-nums; } .side-note { margin-top:10px; line-height:1.5; } .info-list { display:grid; grid-template-columns:78px minmax(0,1fr); gap:10px 8px; margin:0; } .info-list dt,.info-list dd { margin:0; } .info-list dd { overflow:hidden; color:var(--text); font-size:12px; font-variant-numeric:tabular-nums; text-overflow:ellipsis; white-space:nowrap; }
    .panel:fullscreen,.panel.chart-fullscreen { width:100vw; height:100vh; margin:0; border:0; border-radius:0; } .panel:fullscreen .chart,.panel.chart-fullscreen .chart { height:100vh; } .panel:fullscreen .chart-layout,.panel.chart-fullscreen .chart-layout { height:calc(100vh - 82px); } .panel:fullscreen .chart-stage,.panel.chart-fullscreen .chart-stage { height:100%; } .panel.chart-fullscreen { position:fixed; inset:0; z-index:100; overflow:auto; } .chart-scale-badge { color:var(--accent); font-size:11px; font-weight:700; white-space:nowrap; } .chart-command .scale-toggle { color:var(--accent); font-weight:700; }
    @media(max-width:1100px){ .chart-layout { grid-template-columns:38px minmax(0,1fr) 280px; } }
    @media(max-width:820px){ .chart-layout { grid-template-columns:38px minmax(0,1fr); height:auto; } .chart-stage { height:clamp(460px,70vh,620px); } .market-side { grid-column:1 / -1; border-top:1px solid var(--line); border-left:0; display:grid; grid-template-columns:1fr 1fr; gap:12px; } .side-card { margin-bottom:0; } }
    @media(max-width:540px){ .market-side { grid-template-columns:1fr; } }
    .theme-switch { display:flex; align-items:center; flex:0 0 auto; margin-left:12px; white-space:nowrap; } .theme-toggle { display:grid; place-items:center; width:32px; height:30px; padding:0; border:1px solid var(--line); border-radius:8px; background:var(--panel2); color:var(--text); font-size:19px; line-height:1; cursor:pointer; } .theme-toggle:hover { border-color:var(--accent); background:#edf1f6; } .theme-toggle .theme-icon { display:block; transform:translateY(-1px); } :root:is([data-theme="dark"],[data-theme="gray"]) .theme-toggle:hover { background:var(--theme-hover-bg,#1c2b42); } .nav-data { display:flex; align-items:center; gap:8px; flex:0 1 360px; min-width:180px; margin-left:10px; padding:5px 9px; border:1px solid var(--line); border-radius:8px; background:#f8fafc; } .nav-data-label { color:var(--text); font-size:12px; font-weight:700; } .nav-data-source { min-width:0; overflow:hidden; color:var(--muted); font-size:11px; text-overflow:ellipsis; white-space:nowrap; } .nav-data .connection-metric { margin-left:auto; } .nav-data .connection-status { font-size:11px; } .nav-data-message { display:none; }
    :root[data-theme="dark"] { --bg:#0b1220; --panel:#111a2b; --panel2:#0f1727; --line:#29374c; --text:#e7edf7; --muted:#93a4bd; --up:#ff6974; --down:#32d4ad; --accent:#69a7ff; }
    :root:is([data-theme="dark"],[data-theme="gray"]) .toolbar, :root:is([data-theme="dark"],[data-theme="gray"]) .panel, :root:is([data-theme="dark"],[data-theme="gray"]) .watchlist-panel, :root:is([data-theme="dark"],[data-theme="gray"]) .app-nav, :root:is([data-theme="dark"],[data-theme="gray"]) .side-card { background:var(--panel); } :root:is([data-theme="dark"],[data-theme="gray"]) button, :root:is([data-theme="dark"],[data-theme="gray"]) select, :root:is([data-theme="dark"],[data-theme="gray"]) .watch-chip { background:var(--theme-control-bg,#172237); color:var(--text); border-color:var(--line); } :root:is([data-theme="dark"],[data-theme="gray"]) .watch-chip:hover, :root:is([data-theme="dark"],[data-theme="gray"]) .watch-chip.selected, :root:is([data-theme="dark"],[data-theme="gray"]) .watch-add:hover { background:var(--theme-selected-bg,#1a3157); } :root:is([data-theme="dark"],[data-theme="gray"]) .chart-tools, :root:is([data-theme="dark"],[data-theme="gray"]) .market-side { background:var(--theme-inset-bg,#0d1626); } :root:is([data-theme="dark"],[data-theme="gray"]) .chart-command button:hover, :root:is([data-theme="dark"],[data-theme="gray"]) .chart-command button.active, :root:is([data-theme="dark"],[data-theme="gray"]) .chart-tools button:hover, :root:is([data-theme="dark"],[data-theme="gray"]) .chart-tools button.active, :root:is([data-theme="dark"],[data-theme="gray"]) .nav-link.active { background:var(--theme-hover-bg,#1c2b42); color:var(--text); } :root:is([data-theme="dark"],[data-theme="gray"]) .order-box { background:var(--theme-control-bg,#172237); } :root:is([data-theme="dark"],[data-theme="gray"]) .side-row, :root:is([data-theme="dark"],[data-theme="gray"]) .side-price-row { border-color:var(--theme-border,#29374c); } :root:is([data-theme="dark"],[data-theme="gray"]) .chart-tooltip { background:var(--theme-tooltip-bg,rgba(17,26,43,.96)); border-color:var(--theme-border-strong,#3b4b64); color:var(--text); } :root:is([data-theme="dark"],[data-theme="gray"]) .nav-source { color:var(--muted); }
    .data-panel { display:grid; grid-template-columns:78px minmax(0,1fr); gap:14px; align-items:center; margin-bottom:18px; padding:12px 16px; border:1px solid var(--line); border-radius:12px; background:var(--panel); } .data-panel-title { display:flex; flex-direction:column; gap:2px; } .data-panel-title strong { color:var(--text); font-size:15px; } .data-panel-title small { color:var(--muted); font-size:11px; } .connection-list { display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:8px; min-width:0; } .connection-item { display:flex; align-items:center; gap:12px; min-width:0; padding:8px 10px; border:1px solid var(--line); border-radius:8px; background:#f8fafc; } .connection-source { min-width:0; overflow:hidden; color:var(--text); font-size:12px; font-weight:600; text-overflow:ellipsis; white-space:nowrap; } .connection-metric { display:flex; align-items:baseline; gap:4px; margin-left:auto; white-space:nowrap; } .connection-metric span { color:var(--muted); font-size:11px; } .connection-metric strong { color:var(--text); font-size:12px; font-variant-numeric:tabular-nums; } .connection-status { display:flex; align-items:center; gap:5px; flex:0 0 auto; color:var(--down); font-size:11px; white-space:nowrap; } .connection-status.bad { color:var(--up); } .connection-status.pending { color:#c58a14; } .connection-status i { width:7px; height:7px; border-radius:50%; background:currentColor; box-shadow:0 0 8px currentColor; } .connection-message { overflow:hidden; color:var(--muted); font-size:11px; text-overflow:ellipsis; white-space:nowrap; }
    :root:is([data-theme="dark"],[data-theme="gray"]) .data-panel { background:var(--panel); } :root:is([data-theme="dark"],[data-theme="gray"]) .connection-item, :root:is([data-theme="dark"],[data-theme="gray"]) .nav-data { background:var(--theme-control-bg,#172237); }
    @media(max-width:700px){ .data-panel { grid-template-columns:1fr; gap:8px; } .connection-list { grid-template-columns:1fr; } .connection-item { flex-wrap:wrap; } .connection-source { flex:1 1 100%; } .connection-metric { margin-left:0; } .app-nav .nav-source { display:none; } .nav-data { flex-basis:auto; min-width:92px; margin-left:4px; padding:4px 6px; gap:5px; } .nav-data-source { display:none; } .nav-data .connection-metric { margin-left:0; } .theme-switch { margin-left:4px; } }
    .app-nav .nav-link { border:0; background:transparent; font:inherit; cursor:pointer; } .app-nav .nav-link:hover { color:var(--text); background:#edf1f6; } .nav-data-wrap { position:static; flex:0 0 auto; } .nav-data { min-width:92px; flex:0 0 auto; margin-left:8px; padding:5px 8px; border:1px solid var(--line); border-radius:8px; background:#f8fafc; color:var(--text); } .nav-data-summary { display:flex; align-items:center; gap:5px; color:var(--muted); font-size:11px; white-space:nowrap; } .nav-data-summary i { width:7px; height:7px; border-radius:50%; background:var(--down); box-shadow:0 0 8px var(--down); } .nav-data-summary strong { color:var(--text); font-size:11px; font-weight:600; font-variant-numeric:tabular-nums; } .nav-data-summary.bad i { background:var(--up); box-shadow:0 0 8px var(--up); } .nav-data-summary.bad strong { color:var(--up); } .connection-popover { position:fixed; top:68px; right:24px; z-index:20; width:min(410px,calc(100vw - 24px)); padding:8px; border:1px solid var(--line); border-radius:10px; background:var(--panel); box-shadow:0 12px 32px rgba(15,23,42,.18); } .connection-popover.hidden { display:none !important; } .connection-popover .connection-item { display:grid; grid-template-columns:minmax(0,1fr) auto auto; gap:12px; align-items:center; background:transparent; border:0; } .connection-popover .connection-message { grid-column:1 / -1; } .section-toast { position:fixed; left:50%; bottom:24px; z-index:30; transform:translate(-50%,10px); opacity:0; pointer-events:none; padding:9px 14px; border:1px solid var(--line); border-radius:8px; background:var(--panel); color:var(--text); box-shadow:0 8px 24px rgba(15,23,42,.18); transition:.18s; } .section-toast.show { transform:translate(-50%,0); opacity:1; } :root:is([data-theme="dark"],[data-theme="gray"]) .app-nav .nav-link:hover, :root:is([data-theme="dark"],[data-theme="gray"]) .nav-data { background:var(--theme-hover-bg,#1c2b42); } :root:is([data-theme="dark"],[data-theme="gray"]) .connection-popover { box-shadow:0 12px 32px rgba(0,0,0,.4); } @media(max-width:700px){ .nav-data { min-width:92px; flex-basis:auto; } .connection-popover { top:62px; right:12px; } }
    .app-nav .nav-link { border:0; background:transparent; font:inherit; cursor:pointer; } .app-nav .nav-link:hover { color:var(--text); background:#edf1f6; } .nav-data-wrap { position:static; flex:0 0 auto; } .nav-data { min-width:92px; flex:0 0 auto; margin-left:8px; padding:5px 8px; border:1px solid var(--line); border-radius:8px; background:#f8fafc; color:var(--text); } .nav-data-summary { display:flex; align-items:center; gap:5px; color:var(--muted); font-size:11px; white-space:nowrap; } .nav-data-summary i { width:7px; height:7px; border-radius:50%; background:var(--down); box-shadow:0 0 8px var(--down); } .nav-data-summary strong { color:var(--text); font-size:11px; font-weight:600; font-variant-numeric:tabular-nums; } .nav-data-summary.bad i { background:var(--up); box-shadow:0 0 8px var(--up); } .nav-data-summary.bad strong { color:var(--up); } .connection-popover { position:fixed; top:68px; right:24px; z-index:20; width:min(410px,calc(100vw - 24px)); padding:8px; border:1px solid var(--line); border-radius:10px; background:var(--panel); box-shadow:0 12px 32px rgba(15,23,42,.18); } .connection-popover.hidden { display:none !important; } .connection-popover .connection-item { display:grid; grid-template-columns:minmax(0,1fr) auto auto; gap:12px; align-items:center; background:transparent; border:0; } .connection-popover .connection-message { grid-column:1 / -1; } .section-toast { position:fixed; left:50%; bottom:24px; z-index:30; transform:translate(-50%,10px); opacity:0; pointer-events:none; padding:9px 14px; border:1px solid var(--line); border-radius:8px; background:var(--panel); color:var(--text); box-shadow:0 8px 24px rgba(15,23,42,.18); transition:.18s; } .section-toast.show { transform:translate(-50%,0); opacity:1; } .ma-legend { display:inline-flex; align-items:center; gap:9px; margin-left:8px; font-size:11px; white-space:nowrap; } .ma-legend span { font-weight:700; } .ma-legend .ma5 { color:#f59e0b; } .ma-legend .ma10 { color:#a855f7; } .ma-legend .ma20 { color:#06b6d4; } .market-workspace.chart-open { display:grid; grid-template-columns:minmax(270px,340px) minmax(0,1fr); gap:14px; align-items:start; } .market-workspace.chart-open #liveView,.market-workspace.chart-open #historyView { min-width:0; } .workspace-contract-list { display:none; } .market-workspace.chart-open #mainCards,.market-workspace.chart-open #allContractsPanel { display:none; } .market-workspace.chart-open #contractListPanel { display:block; } .contract-list { max-height:calc(100vh - 180px); overflow:auto; } .contract-list-row { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:10px 12px; border-bottom:1px solid var(--line); cursor:pointer; } .contract-list-row:last-child { border-bottom:0; } .contract-list-row:hover,.contract-list-row.selected { background:#f1f6ff; } .contract-list-row > span:first-child { min-width:0; } .contract-list-row b,.contract-list-row small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; } .contract-list-row b { color:var(--text); font-size:12px; } .contract-list-row small { color:var(--muted); font-size:11px; } .contract-list-price { flex:0 0 auto; text-align:right; font-variant-numeric:tabular-nums; } .contract-list-price strong { display:block; color:var(--text); font-size:13px; } .contract-list-price span { font-size:11px; } :root:is([data-theme="dark"],[data-theme="gray"]) .app-nav .nav-link:hover, :root:is([data-theme="dark"],[data-theme="gray"]) .nav-data { background:var(--theme-hover-bg,#1c2b42); } :root:is([data-theme="dark"],[data-theme="gray"]) .connection-popover { box-shadow:0 12px 32px rgba(0,0,0,.4); } :root:is([data-theme="dark"],[data-theme="gray"]) .contract-list-row:hover, :root:is([data-theme="dark"],[data-theme="gray"]) .contract-list-row.selected { background:var(--theme-selected-bg,#1b2e4c); } @media(max-width:700px){ .nav-data { min-width:92px; flex-basis:auto; } .connection-popover { top:62px; right:12px; } .ma-legend { gap:5px; margin-left:4px; } } @media(max-width:900px){ .market-workspace.chart-open { grid-template-columns:1fr; } .market-workspace.chart-open #contractListPanel { order:0; } .market-workspace.chart-open #historyView { order:1; } .contract-list { max-height:280px; } }
    :root:is([data-theme="dark"],[data-theme="gray"]) { color-scheme:dark; } :root[data-theme="light"] { color-scheme:light; } :root:is([data-theme="dark"],[data-theme="gray"]) .contract-list, :root:is([data-theme="dark"],[data-theme="gray"]) .watchlist-items { scrollbar-color:var(--theme-scroll-thumb,#50647f) var(--theme-inset-bg,#0d1626); } :root:is([data-theme="dark"],[data-theme="gray"]) .contract-list::-webkit-scrollbar, :root:is([data-theme="dark"],[data-theme="gray"]) .watchlist-items::-webkit-scrollbar, :root:is([data-theme="dark"],[data-theme="gray"]) body::-webkit-scrollbar { width:10px; height:10px; } :root:is([data-theme="dark"],[data-theme="gray"]) .contract-list::-webkit-scrollbar-track, :root:is([data-theme="dark"],[data-theme="gray"]) .watchlist-items::-webkit-scrollbar-track, :root:is([data-theme="dark"],[data-theme="gray"]) body::-webkit-scrollbar-track { background:var(--theme-inset-bg,#0d1626); } :root:is([data-theme="dark"],[data-theme="gray"]) .contract-list::-webkit-scrollbar-thumb, :root:is([data-theme="dark"],[data-theme="gray"]) .watchlist-items::-webkit-scrollbar-thumb, :root:is([data-theme="dark"],[data-theme="gray"]) body::-webkit-scrollbar-thumb { background:var(--theme-scroll-thumb,#50647f); border:2px solid var(--theme-inset-bg,#0d1626); border-radius:8px; } :root:is([data-theme="dark"],[data-theme="gray"]) .contract-list::-webkit-scrollbar-thumb:hover, :root:is([data-theme="dark"],[data-theme="gray"]) .watchlist-items::-webkit-scrollbar-thumb:hover, :root:is([data-theme="dark"],[data-theme="gray"]) body::-webkit-scrollbar-thumb:hover { background:var(--theme-scroll-hover,#6e86a7); }
    .indicator-menu-wrap { position:relative; flex:0 0 auto; } .indicator-menu { position:absolute; top:calc(100% + 6px); left:0; z-index:8; width:270px; min-width:0; max-width:calc(100vw - 24px); box-sizing:border-box; padding:8px; border:1px solid var(--line); border-radius:8px; background:var(--panel); box-shadow:0 10px 28px rgba(15,23,42,.18); } .indicator-menu.hidden { display:none !important; } .indicator-menu-title { padding:3px 7px 7px; color:var(--muted); font-size:11px; } .indicator-option { display:flex; align-items:center; gap:7px; width:100%; padding:7px; border:0; border-radius:6px; background:transparent; color:var(--text); font-size:12px; text-align:left; } .indicator-option:hover { background:#edf1f6; } .indicator-option input { accent-color:var(--accent); } .indicator-option small { margin-left:auto; color:var(--muted); font-size:10px; } .indicator-note { padding:7px 7px 2px; color:var(--muted); font-size:10px; line-height:1.4; } .indicator-menu-wrap > #indicatorToggle { min-width:54px; } :root:is([data-theme="dark"],[data-theme="gray"]) .indicator-menu { box-shadow:0 10px 28px rgba(0,0,0,.42); } :root:is([data-theme="dark"],[data-theme="gray"]) .indicator-option:hover { background:var(--theme-hover-bg,#1c2b42); }
    .ma-params { display:grid; grid-template-columns:repeat(3,1fr); gap:5px; padding:2px 7px 5px; } .ma-param { display:flex; flex-direction:column; gap:2px; color:var(--muted); font-size:10px; } .ma-param input { width:100%; min-width:0; padding:4px 5px; border:1px solid var(--line); border-radius:5px; background:var(--panel2); color:var(--text); font-size:11px; font-variant-numeric:tabular-nums; } .ma-param input:disabled { opacity:.55; cursor:not-allowed; }
    .contract-list-main { display:flex; align-items:center; gap:5px; min-width:0; } .list-star { flex:0 0 auto; border:0; padding:0; background:transparent; color:#9aa2ad; cursor:pointer; font-size:16px; line-height:1; } .list-star:hover,.list-star.selected { color:#e0a900; }
    .chart-command { flex-wrap:wrap; row-gap:4px; } .chart-symbol { display:flex; align-items:baseline; gap:7px; flex:0 0 auto; min-width:0; margin-right:2px; } .chart-symbol strong { max-width:210px; overflow:hidden; color:var(--text); font-size:13px; text-overflow:ellipsis; white-space:nowrap; } .chart-symbol span { color:var(--accent); font-size:11px; font-weight:700; } .command-divider { width:1px; height:20px; margin:0 3px; background:var(--line); } .chart-action { padding:6px 9px; font-size:12px; } @media(max-width:700px){ .chart-symbol strong { max-width:150px; } .command-divider { display:none; } }
    .market-workspace.chart-open #liveView > .toolbar { display:none; } .market-workspace.chart-open #contractListPanel { margin:0; } .chart-command button:disabled { opacity:.5; cursor:not-allowed; }
    body { background:radial-gradient(circle at 10% -10%,rgba(37,99,235,.06),transparent 34%),var(--bg); } .app-nav { box-shadow:0 5px 18px rgba(15,23,42,.05); } .watchlist-panel,.toolbar,.panel { box-shadow:0 4px 16px rgba(15,23,42,.035); } .market-workspace.chart-open #contractListPanel { position:sticky; top:14px; box-shadow:0 8px 24px rgba(15,23,42,.06); } .market-workspace.chart-open #historyView > .panel { box-shadow:0 8px 24px rgba(15,23,42,.06); } .chart-command { background:var(--panel2); } .chart-command .periods { flex:0 0 auto; } :root:is([data-theme="dark"],[data-theme="gray"]) body { background:radial-gradient(circle at 10% -10%,var(--theme-page-glow,rgba(41,103,210,.2)),transparent 34%),var(--bg); } :root:is([data-theme="dark"],[data-theme="gray"]) .app-nav,:root:is([data-theme="dark"],[data-theme="gray"]) .watchlist-panel,:root:is([data-theme="dark"],[data-theme="gray"]) .toolbar,:root:is([data-theme="dark"],[data-theme="gray"]) .panel { box-shadow:0 8px 24px rgba(0,0,0,.16); } @media(max-width:900px){ .market-workspace.chart-open #contractListPanel { position:static; } }
    .watchlist-panel .watchlist-items { display:grid; gap:0; max-height:min(520px,calc(100vh - 180px)); overflow:auto; margin-top:10px; } .watch-list-row { display:flex; align-items:center; justify-content:space-between; gap:14px; min-height:54px; padding:9px 10px; border-bottom:1px solid var(--line); cursor:pointer; transition:background .16s; } .watch-list-row:last-child { border-bottom:0; } .watch-list-row:hover,.watch-list-row.selected { background:#f1f6ff; } .watch-list-main { display:flex; align-items:center; gap:10px; min-width:0; } .watch-list-main > span { min-width:0; } .watch-list-main b,.watch-list-main small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; } .watch-list-main b { color:var(--text); font-size:13px; } .watch-list-main small { color:var(--muted); font-size:11px; } .watch-list-star { flex:0 0 auto; width:25px; padding:0; border:0; background:transparent; color:#d49c00; font-size:18px; line-height:1; } .watch-list-quote { display:flex; align-items:baseline; gap:12px; flex:0 0 auto; font-variant-numeric:tabular-nums; } .watch-list-quote strong { color:var(--text); font-size:14px; } .watch-list-quote em { font-style:normal; font-size:12px; } .watch-list-row .watch-remove { flex:0 0 auto; } :root:is([data-theme="dark"],[data-theme="gray"]) .watch-list-row:hover, :root:is([data-theme="dark"],[data-theme="gray"]) .watch-list-row.selected { background:var(--theme-selected-bg,#1b2e4c); }
    .connection-popover-title { padding:2px 4px 7px; color:var(--text); font-size:12px; font-weight:700; } .connection-popover .connection-item + .connection-item { margin-top:7px; padding-top:9px; border-top:1px solid var(--line); } .connection-popover .connection-label { min-width:0; } .connection-popover .connection-label b,.connection-popover .connection-label small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; } .connection-popover .connection-label b { color:var(--text); font-size:12px; } .connection-popover .connection-label small { margin-top:2px; color:var(--muted); font-size:10px; } .connection-popover .connection-message { max-width:100%; }
    .stock-view { padding:clamp(18px,3vw,30px); } .stock-module-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; padding-bottom:18px; border-bottom:1px solid var(--line); } .stock-kicker { color:var(--accent); font-size:12px; font-weight:700; } .stock-module-heading h2 { margin-top:4px; color:var(--text); } .stock-module-heading h2 small { margin-left:8px; color:var(--muted); font-size:13px; font-weight:500; } .stock-status { color:var(--down); font-size:12px; } .stock-status.bad { color:var(--up); } .stock-quote { display:flex; align-items:baseline; gap:14px; padding:26px 0 22px; } .stock-quote strong { color:var(--text); font-size:36px; line-height:1; font-variant-numeric:tabular-nums; } .stock-quote span { font-size:15px; font-variant-numeric:tabular-nums; } .stock-grid { display:grid; grid-template-columns:repeat(4,minmax(120px,1fr)); gap:10px; } .stock-grid > div { padding:13px 14px; border:1px solid var(--line); border-radius:9px; background:var(--panel2); } .stock-grid span,.stock-grid b { display:block; } .stock-grid span { color:var(--muted); font-size:11px; } .stock-grid b { margin-top:5px; overflow:hidden; color:var(--text); font-size:13px; font-variant-numeric:tabular-nums; text-overflow:ellipsis; white-space:nowrap; } .stock-note { margin:18px 0 0; color:var(--muted); font-size:12px; } @media(max-width:700px){ .stock-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
    .stock-index-list { margin-top:22px; border:1px solid var(--line); border-radius:10px; overflow:hidden; } .stock-index-list-title { padding:12px 14px; border-bottom:1px solid var(--line); color:var(--text); font-size:13px; font-weight:700; } .stock-index-row { display:grid; grid-template-columns:minmax(150px,1fr) minmax(90px,auto) minmax(78px,auto) 18px; align-items:center; gap:14px; min-height:54px; padding:8px 14px; border-bottom:1px solid var(--line); cursor:pointer; transition:background .16s; } .stock-index-row:last-child { border-bottom:0; } .stock-index-row:hover,.stock-index-row.selected { background:#f1f6ff; } .stock-index-name { min-width:0; } .stock-index-name b,.stock-index-name small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; } .stock-index-name b { color:var(--text); font-size:13px; } .stock-index-name small { color:var(--muted); font-size:11px; } .stock-asset-kind { margin-left:4px; padding:1px 4px; border:1px solid var(--line); border-radius:4px; color:var(--muted); font-size:10px; font-style:normal; font-weight:500; } .stock-index-value,.stock-index-change { text-align:right; font-variant-numeric:tabular-nums; } .stock-index-value { color:var(--text); font-size:13px; font-weight:700; } .stock-index-change { font-size:12px; } .stock-index-arrow { color:var(--muted); font-size:18px; text-align:right; } :root:is([data-theme="dark"],[data-theme="gray"]) .stock-index-row:hover, :root:is([data-theme="dark"],[data-theme="gray"]) .stock-index-row.selected { background:var(--theme-selected-bg,#1b2e4c); } @media(max-width:540px){ .stock-index-row { grid-template-columns:minmax(110px,1fr) minmax(72px,auto) minmax(68px,auto) 12px; gap:7px; padding-inline:10px; } }
    .window-menu-wrap { position:relative; flex:0 0 auto; } .window-menu { position:absolute; top:calc(100% + 5px); left:0; z-index:9; min-width:150px; padding:6px; border:1px solid var(--line); border-radius:8px; background:var(--panel); box-shadow:0 10px 24px rgba(15,23,42,.18); } .window-menu.hidden { display:none !important; } .window-menu-title { padding:3px 7px 6px; color:var(--muted); font-size:11px; } .window-menu button { display:block; width:100%; border:0; border-radius:5px; padding:7px; background:transparent; color:var(--text); font-size:12px; text-align:left; } .window-menu button:hover,.window-menu button.active { background:#edf1f6; } .window-menu-note { padding:7px 7px 2px; color:var(--muted); font-size:10px; line-height:1.4; } :root:is([data-theme="dark"],[data-theme="gray"]) .window-menu { box-shadow:0 10px 24px rgba(0,0,0,.42); } :root:is([data-theme="dark"],[data-theme="gray"]) .window-menu button:hover, :root:is([data-theme="dark"],[data-theme="gray"]) .window-menu button.active { background:var(--theme-hover-bg,#1c2b42); } .chart-stage.multi-window { display:grid; grid-template-rows:minmax(280px,1fr) minmax(96px,auto); gap:1px; background:var(--line); } .chart-stage.multi-window #priceChart { height:auto; min-height:0; } .chart-stage.multi-window #subChartWindows { grid-row:2; display:grid; grid-template-columns:1fr; grid-template-rows:repeat(var(--sub-window-count),minmax(112px,1fr)); gap:1px; min-height:max(190px,calc(var(--sub-window-count) * 112px)); } .sub-chart-windows { display:none; } .chart-stage.multi-window .sub-chart-windows { display:grid; } .sub-chart-placeholder { display:flex; flex-direction:column; justify-content:center; gap:4px; padding:12px 16px; background:var(--panel2); } .sub-chart-placeholder b { color:var(--accent); font-size:12px; } .sub-chart-placeholder span { color:var(--muted); font-size:11px; }
    .chart-stage.multi-window { display:flex; flex-direction:column; gap:1px; background:var(--line); } .chart-stage.multi-window #priceChart { flex:0 0 var(--main-chart-height,58%); height:auto; min-height:220px; } .chart-window-resizer { display:none; flex:0 0 14px; align-items:center; justify-content:center; background:var(--panel); cursor:row-resize; touch-action:none; user-select:none; } .chart-stage.multi-window .chart-window-resizer { display:flex; } .chart-window-resizer::after { content:""; width:50px; height:4px; border-radius:3px; background:var(--muted); opacity:.8; } .sub-chart-windows { display:none; } .chart-stage.multi-window .sub-chart-windows { display:grid; grid-template-columns:1fr; grid-template-rows:repeat(var(--sub-window-count),minmax(112px,1fr)); flex:1 1 auto; min-height:max(190px,calc(var(--sub-window-count) * 112px)); gap:1px; } .chart-stage.multi-window .sub-chart-placeholder { min-height:112px; } .subchart-header { display:flex; align-items:center; justify-content:flex-end; gap:8px; min-height:28px; padding:5px 8px 5px 10px; border-bottom:1px solid var(--line); color:var(--muted); font-size:11px; } .subchart-header b { display:none; } .subchart-header span { margin-left:auto; color:var(--muted); font-variant-numeric:tabular-nums; } .subchart-close { width:22px; height:22px; padding:0; border:0; border-radius:5px; background:transparent; color:var(--muted); font-size:17px; font-weight:500; line-height:20px; cursor:pointer; } .subchart-close:hover { background:#edf1f6; color:var(--up); } .sub-chart-canvas { min-height:0; flex:1 1 auto; } :root:is([data-theme="dark"],[data-theme="gray"]) .chart-window-resizer { background:var(--theme-control-bg,#172237); } :root:is([data-theme="dark"],[data-theme="gray"]) .chart-window-resizer::after { background:var(--theme-scroll-hover,#6e86a7); } :root:is([data-theme="dark"],[data-theme="gray"]) .subchart-close:hover { background:var(--theme-hover-bg,#1c2b42); }
    .draw-more-wrap { position:relative; flex:0 0 auto; } .draw-more-menu { position:absolute; top:0; left:34px; z-index:10; min-width:150px; padding:6px; border:1px solid var(--line); border-radius:8px; background:var(--panel); box-shadow:0 10px 24px rgba(15,23,42,.18); } .draw-more-menu.hidden { display:none !important; } .draw-more-menu button { display:block; width:100%; border:0; border-radius:5px; padding:7px 8px; background:transparent; color:var(--text); font-size:12px; text-align:left; } .draw-more-menu button:hover { background:#edf1f6; } .drawing-vertical,.drawing-ray,.drawing-parallel { fill:none; stroke-width:1.5; stroke-dasharray:6 4; vector-effect:non-scaling-stroke; } .drawing-vertical { stroke:#a855f7; } .drawing-ray { stroke:#22c55e; } .drawing-parallel { stroke:#06b6d4; } .drawing-rectangle { fill:rgba(37,99,235,.08); stroke:#2563eb; stroke-width:1.5; stroke-dasharray:5 3; vector-effect:non-scaling-stroke; } .drawing-label { fill:var(--text); font-size:12px; font-family:"Microsoft YaHei",system-ui,sans-serif; paint-order:stroke; stroke:var(--panel2); stroke-width:3px; stroke-linejoin:round; } .drawing-anchor { fill:#2563eb; stroke:var(--panel2); stroke-width:1.5; vector-effect:non-scaling-stroke; } :root:is([data-theme="dark"],[data-theme="gray"]) .draw-more-menu { box-shadow:0 10px 24px rgba(0,0,0,.42); } :root:is([data-theme="dark"],[data-theme="gray"]) .draw-more-menu button:hover { background:var(--theme-hover-bg,#1c2b42); }
    .chart-stage.multi-window { min-height:620px; } .chart-stage.multi-window #priceChart { flex-basis:var(--main-chart-height,54%); } .chart-stage.multi-window #subChartWindows { grid-template-columns:1fr; grid-template-rows:repeat(var(--sub-window-count),minmax(140px,1fr)); min-height:max(220px,calc(var(--sub-window-count) * 140px)); } .chart-stage.multi-window .sub-chart-placeholder { min-height:140px; }
    .sub-indicator-context-menu { position:fixed; z-index:60; min-width:150px; padding:6px; border:1px solid var(--line); border-radius:8px; background:var(--panel); box-shadow:0 12px 28px rgba(15,23,42,.22); } .sub-indicator-context-menu.hidden { display:none !important; } .sub-indicator-context-title { padding:3px 8px 6px; color:var(--muted); font-size:11px; } .sub-indicator-context-menu button { display:block; width:100%; padding:7px 8px; border:0; border-radius:5px; background:transparent; color:var(--text); font-size:12px; text-align:left; } .sub-indicator-context-menu button:hover,.sub-indicator-context-menu button.active { background:#edf1f6; color:var(--accent); } :root:is([data-theme="dark"],[data-theme="gray"]) .sub-indicator-context-menu { box-shadow:0 12px 28px rgba(0,0,0,.46); } :root:is([data-theme="dark"],[data-theme="gray"]) .sub-indicator-context-menu button:hover,:root:is([data-theme="dark"],[data-theme="gray"]) .sub-indicator-context-menu button.active { background:var(--theme-hover-bg,#1c2b42); }
  
#dataInterfacesView{max-width:1380px;margin:0 auto;padding:20px;box-sizing:border-box}
.data-interface-list{grid-template-columns:repeat(auto-fit,minmax(min(100%,360px),1fr));gap:16px;align-items:start}
.data-interface-row{grid-template-columns:minmax(0,1fr) auto;gap:10px;padding:16px;min-width:0}
.data-interface-name{grid-column:1}.data-interface-metric{grid-column:2;grid-row:1;flex-wrap:wrap}
.data-interface-type,.data-interface-endpoint,.data-interface-message,.interface-settings{grid-column:1/-1;min-width:0;overflow-wrap:anywhere}
.data-interface-message{max-height:64px;overflow:auto;font-size:11px}
.interface-settings{border-top:1px solid var(--line);padding-top:10px}
.interface-settings summary{cursor:pointer;color:var(--accent);font-size:12px}
.interface-settings .data-interface-login{margin-top:12px}
.data-interface-login-grid{grid-template-columns:1fr!important}
.ranking-scroll{overflow:auto}.ranking-scroll tr[data-ranking-code]{cursor:pointer}.ranking-scroll tr[data-ranking-code]:hover{background:var(--panel2)}
#futuresRankingSort{background:var(--panel2);color:var(--text);border:1px solid var(--line);padding:8px;border-radius:6px}



    .draw-more-menu { min-width:330px; max-height:min(520px,calc(100vh - 24px)); overflow:auto; }
    .draw-menu-grid { display:grid; grid-template-columns:1fr 1fr; gap:6px 10px; }
    .draw-menu-group { min-width:0; }
    .draw-menu-group-title { padding:4px 8px 3px; color:var(--muted); font-size:11px; font-weight:700; }
    .draw-menu-item { display:flex !important; align-items:center; gap:8px; white-space:nowrap; }
    .draw-menu-item .draw-menu-icon { display:grid; place-items:center; flex:0 0 18px; width:18px; height:18px; color:var(--accent); }
    .draw-menu-item .draw-menu-icon .chart-tool-icon { width:16px; height:16px; }
    .draw-menu-clear { display:flex !important; align-items:center; gap:8px; }
    .draw-menu-clear .chart-tool-icon { width:16px; height:16px; color:var(--muted); }
    .draw-menu-item.active { background:#edf1f6; color:var(--accent); }
    .draw-menu-clear { margin-top:6px; border-top:1px solid var(--line) !important; color:var(--muted) !important; }
    .drawing-arrow,.drawing-channel,.drawing-polyline,.drawing-freehand,.drawing-ellipse,.drawing-circle,.drawing-arc,.drawing-regression { fill:none; stroke-width:1.5; vector-effect:non-scaling-stroke; }
    .drawing-arrow { stroke:#ef7d22; }
    .drawing-channel { stroke:#06b6d4; }
    .drawing-polyline,.drawing-freehand { stroke:#2563eb; }
    .drawing-ellipse,.drawing-circle,.drawing-arc { stroke:#a855f7; stroke-dasharray:5 3; }
    .drawing-regression { stroke:#22c55e; stroke-dasharray:6 4; }
    :root:is([data-theme="dark"],[data-theme="gray"]) .draw-menu-item.active { background:var(--theme-hover-bg,#1c2b42); }
    @media(max-width:560px){ .draw-more-menu { min-width:270px; } .draw-menu-grid { grid-template-columns:1fr; } }
  

.formula-legend{display:none !important;}


  .indicator-option .indicator-help-button { flex:0 0 auto; width:16px; height:16px; margin-left:-2px; padding:0; border:1px solid var(--muted); border-radius:50%; background:transparent; color:var(--muted); font-size:11px; font-weight:700; line-height:14px; text-align:center; cursor:pointer; }
  .indicator-option .indicator-help-button:hover { border-color:var(--accent); color:var(--accent); }
  .indicator-help-popup { position:fixed; z-index:1600; width:270px; max-width:calc(100vw - 24px); max-height:calc(100vh - 16px); overflow:auto; box-sizing:border-box; padding:10px 11px; border:1px solid var(--line); border-radius:8px; background:var(--panel); color:var(--text); box-shadow:0 12px 30px rgba(15,23,42,.24); }
  .indicator-help-popup.hidden { display:none !important; }
  .indicator-help-heading { display:flex; align-items:center; gap:8px; margin-bottom:7px; color:var(--text); font-size:12px; font-weight:700; }
  .indicator-help-heading strong { flex:1 1 auto; }
  .indicator-help-close { width:20px; height:20px; padding:0; border:0; border-radius:5px; background:transparent; color:var(--muted); font-size:18px; line-height:18px; cursor:pointer; }
  .indicator-help-close:hover { background:var(--panel2); color:var(--text); }
  .indicator-help-body { color:var(--muted); font-size:11px; line-height:1.55; white-space:pre-line; }
  .wyckoff-diagnostics { position:absolute; z-index:12; min-width:185px; max-width:250px; padding:8px 10px; border:1px solid var(--line); border-radius:7px; background:color-mix(in srgb,var(--panel) 92%,transparent); color:var(--text); box-shadow:0 8px 22px rgba(15,23,42,.22); font-size:11px; line-height:1.45; pointer-events:none; backdrop-filter:blur(4px); }
  .wyckoff-diagnostics.hidden { display:none !important; }
  .wyckoff-diagnostics[data-size="Small"] { font-size:12px; }
  .wyckoff-diagnostics[data-size="Normal"] { font-size:13px; }
  .wyckoff-diagnostics[data-size="Large"] { font-size:14px; }
  .wyckoff-diagnostics[data-size="Huge"] { font-size:15px; }
  .wyckoff-diagnostics-head { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:4px; font-weight:700; }
  .wyckoff-diagnostics-grid { display:grid; grid-template-columns:auto 1fr; gap:2px 8px; }
  .wyckoff-diagnostics-grid span:nth-child(odd) { color:var(--muted); }
  .wyckoff-diagnostics-up { color:var(--up); }
  .wyckoff-diagnostics-down { color:var(--down); }
  .wyckoff-params { max-height:420px; overflow:auto; padding:3px 5px 6px; }
  .wyckoff-params .formula-param { display:flex; align-items:center; justify-content:space-between; gap:8px; min-height:27px; }
  .wyckoff-params .formula-param > span { white-space:nowrap; font-size:11px; }
  .wyckoff-params .formula-param input, .wyckoff-params .formula-param select { width:118px; min-width:0; box-sizing:border-box; }
  .wyckoff-params .indicator-option { padding:5px 2px; font-size:11px; }
  .wyckoff-schematic-label { font-family:Microsoft YaHei,system-ui,sans-serif; font-size:10px; fill:var(--text); paint-order:stroke; stroke:var(--panel); stroke-width:3px; }
  .wyckoff-schematic-title { font-family:Microsoft YaHei,system-ui,sans-serif; font-size:11px; font-weight:700; fill:var(--text); paint-order:stroke; stroke:var(--panel); stroke-width:3px; }
  .wyckoff-schematic-line { fill:none; stroke-width:1.3; vector-effect:non-scaling-stroke; }
  .wyckoff-schematic-range { fill:rgba(148,163,184,.05); stroke:rgba(148,163,184,.6); stroke-width:1; stroke-dasharray:4 3; vector-effect:non-scaling-stroke; }


.rsi-params { display:grid; grid-template-columns:repeat(2,minmax(88px,1fr)); gap:5px; padding:2px 7px 5px; } .rsi-params .formula-param select { width:100%; min-width:0; box-sizing:border-box; padding:4px 5px; border:1px solid var(--line); border-radius:5px; background:var(--panel2); color:var(--text); font-size:11px; } .rsi-params .indicator-option { grid-column:1 / -1; padding:4px 0 0; font-size:10px; } @media(max-width:300px){ .rsi-params { grid-template-columns:1fr; } }


  .chart-settings-wrap { position:relative; flex:0 0 auto; }
  .chart-settings-menu { left:auto; right:0; min-width:220px; }
  .chart-settings-menu .indicator-note { white-space:normal; }
  #chartSettingsToggle { width:32px; min-width:32px; height:30px; padding:0 !important; font-size:17px; line-height:1; }
  #chartSettingsToggle span { display:inline-flex; align-items:center; justify-content:center; }
  #historyRefresh { width:32px; min-width:32px; height:30px; padding:0 !important; font-size:17px; line-height:1; }
  #historyRefresh.is-refreshing { opacity:.65; animation:chart-refresh-spin .8s linear infinite; }
  @keyframes chart-refresh-spin { from { transform:rotate(0deg); } to { transform:rotate(360deg); } }
  .ma-legend { display:none !important; }
  .chart-type-button > span:not(.chart-type-icon) { display:none !important; }
  .indicator-menu-wrap > #indicatorToggle { width:32px; min-width:32px; padding:0 !important; font-size:0; }
  .indicator-menu-wrap > #indicatorToggle::before { content:'∿'; font-size:18px; line-height:1; }
  .window-menu { min-width:0; width:auto; display:flex; gap:5px; padding:6px; border-radius:11px; }
  .window-menu button { width:30px; min-width:30px; height:30px; padding:0; border-radius:50%; text-align:center; }
  .window-menu-title, .window-menu-note { display:none !important; }
  #volumeProfileCanvas { position:absolute; inset:0; width:100%; height:100%; pointer-events:none; z-index:1; }
  #drawingsLayer { z-index:2; }
  #crosshairLinkLayer { position:absolute; inset:0; pointer-events:none; z-index:4; display:none; }
  #crosshairLinkLayer .crosshair-link-line { position:absolute; top:0; bottom:0; width:1px; background:rgba(37,99,235,.78); box-shadow:0 0 0 1px rgba(255,255,255,.22); }
  :root:is([data-theme="dark"],[data-theme="gray"]) #crosshairLinkLayer .crosshair-link-line { background:rgba(105,167,255,.9); box-shadow:0 0 0 1px var(--theme-overlay-soft,rgba(15,23,39,.48)); }
  .chart-tooltip { z-index:5; }
  .exchange-group-row { cursor:pointer; user-select:none; }
  .exchange-group-row:focus-visible, .contract-list-group:focus-visible { outline:2px solid var(--accent); outline-offset:-2px; }
  .exchange-group-row td { padding:9px 14px; border-bottom:1px solid var(--line); background:rgba(37,99,235,.055); color:var(--text); text-align:left; font-size:12px; font-weight:700; }
  .exchange-group-row:hover td, .contract-list-group:hover { background:rgba(37,99,235,.11); }
  .exchange-group-row .exchange-toggle-icon { display:inline-block; width:14px; color:var(--accent); font-size:12px; }
  .exchange-group-row .exchange-count { margin-left:8px; color:var(--muted); font-size:11px; font-weight:500; }
  .contract-list-group { padding:8px 12px 5px; border-bottom:1px solid var(--line); background:rgba(37,99,235,.055); color:var(--text); font-size:11px; font-weight:700; cursor:pointer; user-select:none; }
  .contract-list-group .exchange-toggle-icon { display:inline-block; width:13px; color:var(--accent); font-size:11px; }
  .contract-list-group span.exchange-count { margin-left:6px; color:var(--muted); font-weight:500; }
  :root:is([data-theme="dark"],[data-theme="gray"]) .exchange-group-row td, :root:is([data-theme="dark"],[data-theme="gray"]) .contract-list-group { background:var(--theme-group-bg,rgba(105,167,255,.1)); }
  :root:is([data-theme="dark"],[data-theme="gray"]) .exchange-group-row:hover td, :root:is([data-theme="dark"],[data-theme="gray"]) .contract-list-group:hover { background:var(--theme-group-hover-bg,rgba(105,167,255,.17)); }
  .chart-layout-menu-wrap { position:relative; display:inline-flex; flex:0 0 auto; }
  .chart-layout-menu { position:absolute; top:calc(100% + 6px); right:0; z-index:40; min-width:210px; max-height:min(72vh,520px); overflow:auto; padding:6px; border:1px solid var(--line); border-radius:8px; background:var(--panel); box-shadow:0 12px 28px rgba(15,23,42,.22); }
  .chart-layout-menu.hidden { display:none !important; }
  .chart-layout-menu-title { padding:3px 8px 6px; color:var(--muted); font-size:11px; }
  .chart-layout-menu button { display:block; width:100%; padding:8px 9px; border:0; border-radius:5px; background:transparent; color:var(--text); text-align:left; cursor:pointer; }
  .chart-layout-menu button:hover, .chart-layout-menu button.active { background:rgba(37,99,235,.12); }
  .chart-layout-menu button small { display:block; margin-top:2px; color:var(--muted); font-size:10px; }
  .chart-layout-menu hr { margin:5px 4px; border:0; border-top:1px solid var(--line); }
  .chart-layout-menu .chart-layout-scheme-list { max-height:230px; overflow:auto; }
  .chart-layout-menu .chart-layout-scheme-list.hidden { display:none !important; }
  .chart-layout-menu .chart-layout-scheme { padding:7px 9px; }
  .chart-layout-menu .chart-layout-scheme-name { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:12px; }
  .chart-layout-menu .chart-layout-scheme-meta { display:block; margin-top:3px; color:var(--muted); font-size:10px; }
  .chart-layout-scheme-empty { padding:9px; color:var(--muted); font-size:11px; }
  .chart-layout-save-overlay { position:fixed; inset:0; z-index:1200; display:grid; place-items:center; padding:16px; background:rgba(3,8,18,.48); }
  .chart-layout-save-overlay.hidden { display:none !important; }
  .chart-layout-save-dialog { width:min(360px,100%); padding:12px; border:1px solid var(--line); border-radius:10px; background:var(--panel); color:var(--text); box-shadow:0 18px 55px rgba(0,0,0,.3); }
  .chart-layout-save-dialog h3 { margin:0 0 14px; font-size:15px; }
  .chart-layout-save-dialog label { display:block; margin-bottom:6px; color:var(--muted); font-size:12px; }
  .chart-layout-save-dialog input { width:100%; height:36px; box-sizing:border-box; padding:7px 10px; border:1px solid var(--line); border-radius:7px; outline:none; background:var(--panel2); color:var(--text); }
  .chart-layout-save-dialog input:focus { border-color:var(--accent); }
  .chart-layout-save-dialog small { display:block; margin-top:8px; color:var(--muted); font-size:11px; line-height:1.5; }
  .chart-layout-save-actions { display:flex; justify-content:flex-end; gap:8px; margin-top:16px; }
  .chart-layout-save-actions button { padding:7px 13px; border:1px solid var(--line); border-radius:7px; background:var(--panel); color:var(--text); cursor:pointer; }
  .chart-layout-save-actions button[type="submit"] { border-color:var(--accent); background:var(--accent); color:#fff; }
  .multi-chart-grid { position:absolute; inset:0; z-index:3; display:grid; gap:1px; padding:1px; background:var(--line); }
  .multi-chart-grid.hidden { display:none !important; }
  .multi-chart-grid[data-layout="2"] { grid-template-columns:repeat(2,minmax(0,1fr)); grid-template-rows:minmax(0,1fr); }
  .multi-chart-grid[data-layout="4"] { grid-template-columns:repeat(2,minmax(0,1fr)); grid-template-rows:repeat(2,minmax(0,1fr)); }
  .multi-chart-grid[data-layout="3"] { grid-template-columns:repeat(2,minmax(0,1fr)); grid-template-rows:repeat(2,minmax(0,1fr)); }
  .multi-chart-grid[data-layout="3"] .multi-chart-pane:last-child { grid-column:1 / -1; }
  .multi-chart-grid[data-layout="custom"] { display:block; padding:0; }
  .custom-chart-split { display:flex; width:100%; height:100%; min-width:0; min-height:0; gap:0; background:var(--line); }
  .multi-chart-grid[data-layout="custom"] > .multi-chart-pane { width:100%; height:100%; }
  .custom-chart-divider { flex:0 0 6px; position:relative; touch-action:none; background:var(--line); outline:none; }
  .custom-chart-split.lr > .custom-chart-divider { cursor:col-resize; }
  .custom-chart-split.tb > .custom-chart-divider { cursor:row-resize; }
  .custom-chart-divider:hover, .custom-chart-divider:focus-visible, .custom-chart-divider.dragging { background:var(--accent); }
  .multi-chart-grid[data-layout="custom"] .multi-chart-pane.is-active::after { content:''; position:absolute; inset:0; border:1px solid var(--accent); pointer-events:none; z-index:6; }
  .custom-chart-context-menu { max-height:calc(100vh - 12px); overflow-y:auto; }
  .custom-chart-split.lr { flex-direction:row; }
  .custom-chart-split.tb { flex-direction:column; }
  .custom-chart-split-child { position:relative; flex:1 1 0; min-width:0; min-height:0; overflow:hidden; }
  .custom-chart-split-child > .multi-chart-pane { width:100%; height:100%; }
  .multi-chart-pane { position:relative; display:flex; min-width:0; min-height:0; flex-direction:column; overflow:hidden; background:var(--panel2); }
  .multi-chart-pane.is-active { box-shadow:inset 0 0 0 1px var(--accent); }
  /* Inactive panes retain their canvas; a first click only activates the pane. */
  .multi-chart-grid[data-selection-only="true"] .multi-chart-pane:not(.is-active) .multi-chart-pane-canvas,
  .multi-chart-grid[data-selection-only="true"] .multi-chart-pane:not(.is-active) .multi-chart-pane-sub-canvas { pointer-events:none; }
  .multi-chart-pane-main { position:relative; flex:1 1 auto; min-height:0; }
  .multi-chart-pane-canvas { position:absolute; inset:0; }
  .multi-chart-pane-sub-windows { display:flex; flex:0 0 28%; min-height:0; flex-direction:column; }
  .multi-chart-pane-sub-windows:empty { display:none; }
  .multi-indicator-close { position:absolute; top:4px; right:4px; z-index:8; display:flex; align-items:center; justify-content:center; width:22px; height:22px; padding:0; border:1px solid var(--line); border-radius:5px; background:var(--panel); color:var(--text); font-size:18px; line-height:1; cursor:pointer; }
  .multi-indicator-close:hover { color:#ef3340; border-color:#ef3340; }
  .multi-chart-pane-sub-slot { position:relative; flex:1 1 0; min-height:0; overflow:hidden; border-top:1px solid var(--line); }
  .multi-chart-pane-sub-canvas { position:absolute; inset:0; }
  .multi-chart-market-card { display:flex; min-width:0; height:100%; flex-direction:column; justify-content:center; gap:9px; padding:clamp(10px,2vw,22px); color:var(--text); }
  .multi-chart-market-title { display:flex; align-items:baseline; justify-content:space-between; gap:12px; color:var(--muted); font-size:12px; }
  .multi-chart-market-title strong { color:var(--text); font-size:clamp(13px,1.5vw,18px); }
  .multi-chart-market-price { font-size:clamp(22px,3vw,38px); font-weight:700; font-variant-numeric:tabular-nums; }
  .multi-chart-market-change { font-size:13px; font-variant-numeric:tabular-nums; }
  .multi-chart-market-change.up { color:var(--up); }
  .multi-chart-market-change.down { color:var(--down); }
  .multi-chart-market-details { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; margin-top:5px; }
  .multi-chart-market-details span { display:block; color:var(--muted); font-size:10px; }
  .multi-chart-market-details b { display:block; margin-top:3px; color:var(--text); font-size:12px; font-weight:600; font-variant-numeric:tabular-nums; }
  .multi-chart-market-depth { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin-top:5px; }
  .multi-chart-market-depth-title { margin-bottom:4px; color:var(--muted); font-size:10px; }
  .multi-chart-market-depth-row { display:flex; justify-content:space-between; gap:8px; padding:3px 0; border-bottom:1px solid var(--line); color:var(--text); font-size:10px; font-variant-numeric:tabular-nums; }
  .multi-chart-market-depth-row.ask { color:var(--up); }
  .multi-chart-market-depth-row.bid { color:var(--down); }
  .multi-chart-market-depth-empty { grid-column:1/-1; color:var(--muted); font-size:10px; }
  .custom-chart-context-menu { position:fixed; z-index:110; width:178px; padding:6px; border:1px solid var(--line); border-radius:8px; background:var(--panel); box-shadow:0 12px 30px rgba(15,23,42,.32); }
  .custom-chart-context-menu.hidden { display:none !important; }
  .custom-chart-context-menu .custom-chart-menu-title { padding:5px 8px 6px; color:var(--muted); font-size:10px; }
  .custom-chart-context-menu button { display:flex; width:100%; align-items:center; justify-content:space-between; padding:7px 8px; border:0; border-radius:5px; background:transparent; color:var(--text); font-size:11px; text-align:left; cursor:pointer; }
  .custom-chart-context-menu button:hover, .custom-chart-context-menu button.active { background:rgba(37,99,235,.13); }
  .custom-chart-context-menu hr { height:1px; margin:5px 2px; border:0; background:var(--line); }
  .chart-stage.multi-chart-active #priceChart, .chart-stage.multi-chart-active #volumeProfileCanvas, .chart-stage.multi-chart-active #crosshairLinkLayer, .chart-stage.multi-chart-active #chartTooltip, .chart-stage.multi-chart-active #subChartWindows, .chart-stage.multi-chart-active #chartWindowResizer { visibility:hidden; pointer-events:none; }
  :root:is([data-theme="dark"],[data-theme="gray"]) .chart-layout-menu { box-shadow:0 12px 28px rgba(0,0,0,.42); }
  :root:is([data-theme="dark"],[data-theme="gray"]) .chart-layout-menu button:hover, :root:is([data-theme="dark"],[data-theme="gray"]) .chart-layout-menu button.active { background:var(--theme-hover-bg,#1c2b42); }



  .contract-list-heading-actions { display:flex; align-items:center; gap:9px; min-width:0; white-space:nowrap; }
  .contract-list-card > .panel-title > span:first-child { color:var(--text); font-size:13px; font-weight:700; }
  .collapse-all-contract-groups { flex:0 0 auto; padding:2px 0; border:0; border-radius:0; background:transparent; color:var(--muted); font-size:11px; font-weight:500; white-space:nowrap; }
  .collapse-all-contract-groups:hover { color:var(--accent); filter:none; }



  body, button, select, input, textarea { font-family:var(--app-font-family,"Microsoft YaHei",system-ui,sans-serif); }
  body { font-size:var(--app-font-size,14px); }
  .chart-settings-menu { width:min(360px,calc(100vw - 24px)); max-height:min(78vh,680px); overflow:auto; padding:10px; }
  .chart-settings-section { padding:9px 2px; border-top:1px solid var(--line); }
  .chart-settings-section:first-of-type { border-top:0; padding-top:2px; }
  .chart-settings-section-title { margin-bottom:7px; color:var(--text); font-size:11px; font-weight:700; }
  .chart-setting-row { display:flex; align-items:center; justify-content:space-between; gap:10px; min-height:30px; color:var(--muted); font-size:11px; }
  .chart-setting-row > span:first-child { min-width:0; }
  .chart-setting-row select { min-width:128px; padding:4px 7px; border-radius:6px; font-size:11px; font-weight:500; }
  .chart-setting-row input[type="color"] { width:40px; height:24px; padding:2px; border:1px solid var(--line); border-radius:5px; background:var(--panel2); cursor:pointer; }
  .chart-setting-row input[type="checkbox"] { accent-color:var(--accent); }
  .chart-setting-row.time-share-plot-mode-row { flex-wrap:wrap; }
  .chart-setting-hint { flex-basis:100%; color:var(--muted); font-size:10px; line-height:1.35; }
  .chart-setting-inline { display:flex; align-items:center; gap:5px; }
  .chart-setting-inline input[type="number"] { width:108px; min-width:0; padding:5px 7px; border:1px solid var(--line); border-radius:6px; background:var(--panel2); color:var(--text); font-size:11px; font-variant-numeric:tabular-nums; }
  .chart-setting-inline button, .chart-settings-actions button { padding:5px 8px; border:1px solid var(--line); border-radius:6px; background:var(--panel2); color:var(--text); font-size:11px; font-weight:500; }
  .chart-setting-inline button:hover, .chart-settings-actions button:hover { border-color:var(--accent); color:var(--accent); }
  .chart-settings-actions { display:flex; gap:6px; padding-top:8px; }
  .chart-settings-actions button.primary { border-color:var(--accent); background:var(--accent); color:#fff; }
  .chart-settings-status { display:block; min-height:17px; margin-top:5px; color:var(--muted); font-size:10px; line-height:1.4; }
  .chart-settings-status.ok { color:var(--down); }
  .chart-settings-status.bad { color:var(--up); }
  .price-alert-dialog { position:fixed; top:58px; right:24px; z-index:70; width:min(320px,calc(100vw - 24px)); padding:12px; border:1px solid var(--line); border-radius:10px; background:var(--panel); box-shadow:0 14px 34px rgba(15,23,42,.25); opacity:0; transform:translateY(-8px); pointer-events:none; transition:.16s; }
  .price-alert-dialog.show { opacity:1; transform:translateY(0); pointer-events:auto; }
  .price-alert-heading { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:10px; color:var(--text); font-size:13px; font-weight:700; }
  .price-alert-close { width:24px; height:24px; padding:0; border:0; border-radius:5px; background:transparent; color:var(--muted); font-size:18px; line-height:1; }
  .price-alert-close:hover { background:rgba(127,143,166,.15); color:var(--text); }
  .price-alert-dialog .chart-setting-row { min-height:32px; }
  .price-alert-dialog .chart-setting-inline { width:100%; }
  .price-alert-dialog .chart-setting-inline select { flex:0 0 88px; min-width:88px; }
  .price-alert-dialog .chart-setting-inline input[type="number"] { flex:1 1 auto; width:auto; }
  .price-alert-dialog .chart-settings-actions { margin-top:5px; }
  .price-alert-current-symbol { margin:-2px 0 9px; color:var(--text); font-size:12px; font-weight:700; }
  .price-alert-current-symbol small { margin-left:5px; color:var(--accent); font-size:10px; font-weight:600; }
  .price-alert-hint { margin:2px 0 8px; color:var(--muted); font-size:10px; line-height:1.4; }
  .price-alert-list { max-height:250px; margin-top:11px; padding-top:9px; border-top:1px solid var(--line); overflow:auto; }
  .price-alert-list-title { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:5px; color:var(--text); font-size:11px; font-weight:700; }
  .price-alert-list-title small { color:var(--muted); font-size:10px; font-weight:500; }
  .price-alert-list-empty { padding:10px 2px 3px; color:var(--muted); font-size:10px; text-align:center; }
  .price-alert-list-item { padding:8px 0; border-bottom:1px solid var(--line); }
  .price-alert-list-item:last-child { border-bottom:0; }
  .price-alert-list-main { display:flex; align-items:center; justify-content:space-between; gap:8px; }
  .price-alert-list-name { min-width:0; overflow:hidden; color:var(--text); font-size:11px; font-weight:700; text-overflow:ellipsis; white-space:nowrap; }
  .price-alert-list-code { margin-left:4px; color:var(--accent); font-size:10px; font-weight:600; }
  .price-alert-list-badge { flex:0 0 auto; padding:2px 5px; border-radius:4px; background:rgba(239,68,68,.12); color:var(--up); font-size:10px; }
  .price-alert-list-badge.read { background:rgba(127,143,166,.14); color:var(--muted); }
  .price-alert-list-meta { margin-top:3px; color:var(--muted); font-size:10px; font-variant-numeric:tabular-nums; }
  .price-alert-list-actions { display:flex; gap:5px; margin-top:5px; }
  .price-alert-list-actions button { padding:3px 6px; border:1px solid var(--line); border-radius:5px; background:var(--panel2); color:var(--muted); font-size:10px; cursor:pointer; }
  .price-alert-list-actions button:hover { border-color:var(--accent); color:var(--accent); }
  .price-alert-list-actions button[data-alert-delete]:hover { border-color:var(--up); color:var(--up); }
  .legacy-alert-settings { display:none !important; }
  .price-alert-notification { position:fixed; top:50%; left:50%; z-index:80; width:min(390px,calc(100vw - 30px)); padding:20px; border:1px solid var(--up); border-radius:12px; background:var(--panel); box-shadow:0 20px 60px rgba(15,23,42,.35); text-align:center; opacity:0; transform:translate(-50%,-46%); pointer-events:none; transition:.16s; }
  .price-alert-notification.show { opacity:1; transform:translate(-50%,-50%); pointer-events:auto; }
  .price-alert-notification-close { position:absolute; top:7px; right:8px; width:25px; height:25px; padding:0; border:0; border-radius:5px; background:transparent; color:var(--muted); font-size:19px; line-height:1; cursor:pointer; }
  .price-alert-notification-close:hover { background:rgba(127,143,166,.15); color:var(--text); }
  .price-alert-notification strong { display:block; color:var(--up); font-size:16px; }
  .price-alert-notification p { margin:8px 0 14px; color:var(--text); font-size:13px; line-height:1.55; white-space:pre-line; }
  .price-alert-notification button { padding:6px 18px; border:0; border-radius:6px; background:var(--accent); color:#fff; font-size:12px; }
  :root:is([data-theme="dark"],[data-theme="gray"]) .price-alert-dialog, :root:is([data-theme="dark"],[data-theme="gray"]) .price-alert-notification { box-shadow:0 16px 42px rgba(0,0,0,.48); }
  :root:is([data-theme="dark"],[data-theme="gray"]) .chart-setting-row select, :root:is([data-theme="dark"],[data-theme="gray"]) .chart-setting-inline input[type="number"], :root:is([data-theme="dark"],[data-theme="gray"]) .chart-setting-inline button, :root:is([data-theme="dark"],[data-theme="gray"]) .chart-settings-actions button { background:var(--theme-control-bg,#172237); color:var(--text); border-color:var(--line); }
  @media(max-width:540px){ .chart-settings-menu { position:fixed; top:58px; right:10px; left:10px; width:auto; max-height:calc(100vh - 72px); } .price-alert-dialog { top:58px; right:10px; left:10px; width:auto; } }
  .order-grid { display:none !important; }



  .data-interface-view { margin-bottom:18px; padding:18px; }
  .data-interface-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin-bottom:14px; }
  .data-interface-heading h2 { margin:0 0 4px; font-size:20px; }
  .data-interface-heading p { margin:0; color:var(--muted); font-size:12px; }
  .data-interface-badge { display:inline-flex; align-items:center; min-height:26px; padding:4px 9px; border:1px solid rgba(0,173,131,.28); border-radius:999px; color:var(--down); background:rgba(0,173,131,.08); font-size:12px; white-space:nowrap; }
  .data-interface-badge.bad { border-color:rgba(239,51,64,.28); color:var(--up); background:rgba(239,51,64,.08); }
  .data-interface-list { display:grid; gap:10px; }
  :root:not([data-theme="dark"],[data-theme="gray"]) .data-interface-view { --data-interface-panel-bg:#f6f8fb; --data-interface-card-bg:#fff; --data-interface-border:#dfe6ef; }
  :root:is([data-theme="dark"],[data-theme="gray"]) .data-interface-view { --data-interface-panel-bg:var(--panel); --data-interface-card-bg:var(--panel2); --data-interface-border:var(--line); }
  .data-interface-row { display:grid; grid-template-columns:minmax(210px,1.1fr) minmax(170px,.9fr) minmax(180px,1fr) minmax(190px,auto) minmax(200px,1fr); gap:12px; align-items:center; padding:12px; border:1px solid var(--line); border-radius:10px; background:#f8fafc; }
  .data-interface-message { grid-column:1 / -1; color:var(--muted); font-size:11px; line-height:1.45; }
  .data-interface-message.bad { color:var(--up); }
  .data-interface-errors { margin:4px 0 0; padding-left:18px; color:var(--up); font-size:11px; line-height:1.45; }
  .data-interface-name { display:flex; flex-direction:column; gap:3px; min-width:0; }
  .data-interface-name strong { overflow:hidden; color:var(--text); font-size:13px; text-overflow:ellipsis; white-space:nowrap; }
  .data-interface-name small, .data-interface-type, .data-interface-endpoint { overflow:hidden; color:var(--muted); font-size:12px; text-overflow:ellipsis; white-space:nowrap; }
  .data-interface-endpoint { min-width:0; }
  .data-interface-metric { display:flex; align-items:center; justify-content:flex-end; gap:10px; white-space:nowrap; }
  .data-interface-metric span { color:var(--muted); font-size:12px; }
  .data-interface-metric b { color:var(--text); font-size:13px; font-variant-numeric:tabular-nums; }
  .data-interface-status { display:flex; align-items:center; gap:6px; color:var(--down) !important; font-size:12px !important; white-space:nowrap; }
  .data-interface-status.bad { color:var(--up) !important; }
  .data-interface-status.pending { color:#c58a14 !important; }
  .data-interface-status i { width:8px; height:8px; border-radius:50%; background:currentColor; box-shadow:0 0 8px currentColor; }
  .data-interface-account { display:flex; align-items:center; gap:6px; min-width:0; }
  .data-interface-account input { width:100%; min-width:0; padding:7px 8px; border:1px solid var(--line); border-radius:7px; background:var(--panel2); color:var(--text); font-size:12px; }
  .data-interface-account button { flex:0 0 auto; padding:7px 9px; font-size:12px; }
  .data-interface-note { margin:13px 0 0; color:var(--muted); font-size:11px; line-height:1.5; }
  :root:is([data-theme="dark"],[data-theme="gray"]) .data-interface-row { background:var(--theme-control-bg,#172237); }
  @media(max-width:1100px){ .data-interface-row { grid-template-columns:repeat(2,minmax(0,1fr)); } .data-interface-metric { justify-content:flex-start; } }
  @media(max-width:560px){ .data-interface-heading { flex-direction:column; } .data-interface-row { grid-template-columns:1fr; } .data-interface-account { width:100%; } }
  .data-interface-login { grid-column:1 / -1; padding-top:10px; border-top:1px solid var(--line); }
  .data-interface-login-head { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:8px; }
  .data-interface-login-head strong { color:var(--text); font-size:12px; }
  .data-interface-login-head small { color:#c58a14; font-size:11px; }
  .data-interface-login-grid { display:grid; grid-template-columns:minmax(220px,1.25fr) minmax(180px,1fr) minmax(180px,1fr) auto; gap:8px; align-items:end; }
  .data-interface-login-field { display:flex; flex-direction:column; gap:4px; min-width:0; }
  .data-interface-login-field span { color:var(--muted); font-size:11px; }
  .data-interface-login-field input { width:100%; min-width:0; box-sizing:border-box; padding:7px 8px; border:1px solid var(--line); border-radius:7px; outline:none; background:var(--panel2); color:var(--text); font:inherit; font-size:12px; }
  .data-interface-login-field input:focus { border-color:var(--accent); box-shadow:0 0 0 2px rgba(37,99,235,.14); }
  .data-interface-login-actions { display:flex; gap:6px; align-items:center; }
  .data-interface-login-actions button { padding:7px 10px; border:1px solid var(--line); border-radius:7px; background:var(--panel2); color:var(--text); font:inherit; font-size:12px; cursor:pointer; white-space:nowrap; }
  .data-interface-login-actions button.primary { border-color:var(--accent); background:var(--accent); color:#fff; }
  .data-interface-login-actions button:hover { border-color:var(--accent); }
  @media(max-width:760px){ .data-interface-login-grid { grid-template-columns:1fr 1fr; } .data-interface-login-actions { grid-column:1 / -1; } }
  @media(max-width:560px){ .data-interface-login-grid { grid-template-columns:1fr; } .data-interface-login-actions { grid-column:auto; } }
  .data-routing { display:grid; gap:12px; margin-top:16px; padding-top:16px; border-top:1px solid var(--line); }
  .data-routing-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
  .data-routing-heading h3 { margin:0 0 4px; font-size:15px; }
  .data-routing-heading p { margin:0; color:var(--muted); font-size:11px; line-height:1.5; }
  .data-routing-actions { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
  .data-routing-actions button { padding:7px 10px; border:1px solid var(--line); border-radius:7px; background:var(--panel2); color:var(--text); font:inherit; font-size:12px; cursor:pointer; }
  .data-routing-actions button.primary { border-color:var(--accent); background:var(--accent); color:#fff; }
  .data-routing-actions button:hover { border-color:var(--accent); }
  .data-routing-status { color:var(--muted); font-size:11px; }
  .data-routing-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
  .data-routing-card { min-width:0; padding:12px; border:1px solid var(--line); border-radius:10px; background:#f8fafc; }
  .data-routing-card h4 { margin:0 0 4px; color:var(--text); font-size:13px; }
  .data-routing-card > p { margin:0 0 9px; color:var(--muted); font-size:11px; line-height:1.45; }
  .data-priority-list { display:grid; gap:7px; }
  .data-priority-row { display:grid; grid-template-columns:42px minmax(0,1fr); gap:7px; align-items:center; }
  .data-priority-row span { color:var(--muted); font-size:11px; }
  .data-priority-row select { width:100%; min-width:0; padding:6px 7px; border:1px solid var(--line); border-radius:6px; background:var(--panel2); color:var(--text); font:inherit; font-size:11px; }
  .data-source-health { display:grid; gap:6px; margin-top:9px; }
  .data-source-health-row { display:flex; align-items:center; justify-content:space-between; gap:8px; color:var(--muted); font-size:11px; }
  .data-source-health-row strong { overflow:hidden; color:var(--text); font-size:11px; text-overflow:ellipsis; white-space:nowrap; }
  .data-source-health-row em { flex:0 0 auto; color:var(--down); font-style:normal; }
  .data-source-health-row em.bad { color:var(--up); }
  :root:is([data-theme="dark"],[data-theme="gray"]) .data-routing-card { background:var(--theme-control-bg,#172237); }
  @media(max-width:1000px){ .data-routing-grid { grid-template-columns:1fr 1fr; } }
  @media(max-width:640px){ .data-routing-heading { flex-direction:column; } .data-routing-grid { grid-template-columns:1fr; } }
  .main-contract-mark { display:inline-block; margin-left:4px; color:var(--accent); font-size:10px; font-style:normal; font-weight:800; line-height:1; vertical-align:super; }
  .contract-card.empty-contract-card { cursor:default; }
  .contract-card.empty-contract-card:hover { transform:none; border-color:var(--line); box-shadow:0 4px 16px rgba(15,23,42,.035); }
  .order-book { margin-top:12px; padding-top:10px; border-top:1px solid var(--line); }
  .order-book-title { display:flex; align-items:center; justify-content:space-between; gap:6px; margin-bottom:7px; color:var(--text); font-size:12px; font-weight:700; }
  .order-book-title small { display:inline-flex; align-items:center; min-width:0; max-width:calc(100% - 80px); overflow:hidden; margin-left:auto; color:var(--muted); font-size:10px; font-weight:500; line-height:1.2; text-overflow:ellipsis; white-space:nowrap; font-variant-numeric:tabular-nums; }
  .order-book-level-controls { display:inline-flex; align-items:center; gap:3px; margin-left:2px; }
  .order-book-level-controls button { width:23px; height:21px; padding:0; border:1px solid var(--line); border-radius:5px; background:var(--panel2); color:var(--muted); font-size:11px; line-height:19px; }
  .order-book-level-controls button:hover { border-color:var(--accent); color:var(--text); }
  .order-book-level-controls button.active { border-color:var(--accent); background:rgba(37,99,235,.18); color:var(--accent); box-shadow:inset 0 0 0 1px rgba(37,99,235,.12); }
  .order-book-head, .order-book-row { display:grid; grid-template-columns:minmax(52px,.82fr) minmax(76px,1.24fr) minmax(48px,.8fr); gap:4px; align-items:center; }
  .order-book-head { padding:0 5px 4px; color:var(--muted); font-size:10px; text-align:right; }
  .order-book-head > span:first-child { text-align:left; }
  .order-book-head > span:nth-child(2), .order-book-row > span:nth-child(2) { padding-right:6px; text-align:right; }
  .order-book-row > span:nth-child(3) { text-align:right; }
  .order-book-row { min-height:22px; padding:2px 5px; border-radius:4px; color:var(--text); font-size:11px; text-align:right; font-variant-numeric:tabular-nums; }
  .order-book-row:nth-child(odd) { background:rgba(148,163,184,.055); }
  .order-book-row span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .order-book-row .depth-ask, .order-book-row .depth-ask-label { color:var(--down); }
  .order-book-row .depth-bid, .order-book-row .depth-bid-label { color:var(--up); }
  .order-volume-bar { position:relative; display:block; align-self:stretch; min-height:18px; overflow:hidden; border-radius:3px; background:rgba(148,163,184,.08); }
  .order-volume-bar::after { content:""; position:absolute; top:2px; bottom:2px; width:var(--bar-width,0%); border-radius:2px; }
  .order-volume-bar.buy::after { right:0; background:var(--up); opacity:.8; }
  .order-volume-bar.sell::after { right:0; background:var(--down); opacity:.8; }
  .order-volume-bar.latest::after { right:0; background:linear-gradient(90deg,var(--up) 0 50%,var(--down) 50%); opacity:.7; }
  .order-book-row.depth-last { margin:3px 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line); background:rgba(37,99,235,.08); font-weight:700; }
  .order-book-row.depth-last span:first-child { color:var(--accent); }
  .order-book-empty { padding:10px 5px; color:var(--muted); font-size:11px; text-align:center; }
  .market-data-panel { position:relative; margin-top:12px; padding-top:10px; border-top:1px solid var(--line); }
  .market-data-heading { position:relative; display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:6px; color:var(--text); font-size:12px; font-weight:700; }
  .market-data-settings-toggle { display:inline-flex; align-items:center; justify-content:center; width:22px; height:21px; padding:0; border:1px solid var(--line); border-radius:5px; background:var(--panel2); color:var(--muted); font-size:12px; line-height:1; }
  .market-data-settings-toggle:hover { border-color:var(--accent); color:var(--accent); }
  .market-data-settings-menu { position:absolute; top:calc(100% + 5px); right:0; z-index:15; width:min(270px,calc(100vw - 32px)); max-height:360px; overflow:auto; padding:8px; border:1px solid var(--line); border-radius:8px; background:var(--panel); box-shadow:0 12px 28px rgba(15,23,42,.24); }
  .market-data-settings-menu.hidden { display:none !important; }
  .market-data-settings-title { padding:2px 4px 7px; color:var(--text); font-size:11px; font-weight:700; }
  .market-data-settings-list { display:grid; grid-template-columns:1fr 1fr; gap:3px 8px; }
  .market-data-settings-item { display:flex; align-items:center; gap:5px; min-width:0; padding:4px; border-radius:4px; color:var(--text); font-size:11px; font-weight:500; }
  .market-data-settings-item:hover { background:rgba(37,99,235,.1); }
  .market-data-settings-item input { margin:0; accent-color:var(--accent); }
  .market-data-settings-actions { display:flex; justify-content:flex-end; padding-top:7px; margin-top:5px; border-top:1px solid var(--line); }
  .market-data-settings-actions button { padding:4px 7px; border:1px solid var(--line); border-radius:5px; background:var(--panel2); color:var(--muted); font-size:10px; }
  .market-data-settings-actions button:hover { border-color:var(--accent); color:var(--accent); }
  .market-data-grid { display:grid; grid-template-columns:1fr 1fr; gap:0 12px; }
  .market-data-item { display:flex; align-items:center; justify-content:space-between; gap:7px; min-width:0; min-height:23px; border-bottom:1px solid rgba(148,163,184,.08); font-size:11px; font-variant-numeric:tabular-nums; }
  .market-data-label { overflow:hidden; color:var(--muted); text-overflow:ellipsis; white-space:nowrap; }
  .market-data-value { overflow:hidden; color:var(--text); text-align:right; text-overflow:ellipsis; white-space:nowrap; }
  .market-data-value.up { color:var(--up); }
  .market-data-value.down { color:var(--down); }
  .market-data-empty { grid-column:1 / -1; padding:8px 2px; color:var(--muted); font-size:10px; text-align:center; }
  .order-balance { display:block; margin-top:10px; padding:8px 0 2px; border-top:1px solid var(--line); }
  .order-balance-head, .order-balance-legend { display:flex; align-items:center; justify-content:space-between; gap:8px; }
  .order-balance-head { margin-bottom:6px; color:var(--muted); font-size:11px; }
  .order-balance-head b { color:var(--text); font-size:11px; font-variant-numeric:tabular-nums; }
  .order-balance-track { display:flex; width:100%; height:8px; overflow:hidden; border-radius:99px; background:rgba(148,163,184,.12); }
  .order-balance-track span { display:block; height:100%; min-width:0; transition:width .22s ease; }
  .order-balance-track .sell { background:var(--down); }
  .order-balance-track .buy { background:var(--up); }
  .order-balance-legend { margin-top:4px; color:var(--muted); font-size:10px; font-variant-numeric:tabular-nums; }
  .order-balance-legend .sell { color:var(--down); }
  .order-balance-legend .buy { color:var(--up); }
  .trade-detail-panel { position:relative; min-width:0; max-width:100%; overflow:hidden; margin-top:10px; padding-top:9px; border-top:1px solid var(--line); }
  .trade-detail-card { overflow:hidden; }
  .trade-detail-card .trade-detail-panel { margin-top:0; padding-top:0; border-top:0; }
  .trade-detail-body { height:320px; min-height:320px; overflow:auto; contain:layout paint; }
  .trade-detail-body, .trade-detail-panel [data-trade-detail-body] { scrollbar-width:none; -ms-overflow-style:none; }
  .trade-detail-body::-webkit-scrollbar, .trade-detail-panel [data-trade-detail-body]::-webkit-scrollbar { width:0; height:0; display:none; }
  .trade-detail-heading { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:5px; color:var(--text); font-size:12px; font-weight:700; }
  .trade-detail-source { margin-left:5px; color:var(--muted); font-size:9px; font-weight:500; }
  .trade-detail-live-status { margin-left:auto; color:var(--up); font-size:10px; font-weight:500; white-space:nowrap; }
  .trade-detail-controls { display:flex; align-items:center; gap:4px; min-width:0; }
  .trade-detail-heading select { max-width:92px; height:21px; padding:1px 18px 1px 4px; border:1px solid var(--line); border-radius:4px; background:var(--panel2); color:var(--muted); font-size:10px; outline:none; }
  .trade-detail-heading input { width:38px; height:21px; box-sizing:border-box; padding:1px 3px; border:1px solid var(--line); border-radius:4px; background:var(--panel2); color:var(--muted); font-size:10px; text-align:center; outline:none; }
  .trade-detail-heading input:focus, .trade-detail-heading select:focus { border-color:var(--accent); color:var(--text); }
  .trade-detail-table { width:100%; min-width:0 !important; max-width:100%; border-collapse:collapse; table-layout:fixed; font-size:10px; font-variant-numeric:tabular-nums; }
  .trade-detail-table th { padding:0 3px 4px; border-bottom:1px solid rgba(148,163,184,.16); color:var(--muted); font-size:10px; font-weight:500; text-align:right; }
  .trade-detail-table th:first-child, .trade-detail-table td:first-child { text-align:left; }
  .trade-detail-table th:nth-child(1) { width:22%; }
  .trade-detail-table th:nth-child(2) { width:23%; }
  .trade-detail-table th:nth-child(3) { width:15%; }
  .trade-detail-table th:nth-child(4) { width:17%; }
  .trade-detail-table th:nth-child(5) { width:23%; }
  .trade-detail-table td { overflow:hidden; padding:3px; border-top:1px solid rgba(148,163,184,.16); border-bottom:0; color:var(--text); text-align:right; text-overflow:ellipsis; white-space:nowrap; }
  .trade-detail-table tbody tr:nth-child(odd) { background:rgba(148,163,184,.045); }
  .trade-detail-table td.trade-up, .trade-detail-table td.trade-buy { color:var(--up); }
  .trade-detail-table td.trade-down, .trade-detail-table td.trade-sell { color:var(--down); }
  .trade-detail-table td.trade-neutral { color:var(--muted); }
  .trade-detail-etf-table th:nth-child(1) { width:25%; }
  .trade-detail-etf-table th:nth-child(2) { width:22%; }
  .trade-detail-etf-table th:nth-child(3) { width:20%; }
  .trade-detail-etf-table th:nth-child(4) { width:33%; }
  .trade-detail-empty { padding:9px 3px; color:var(--muted); font-size:10px; text-align:center; }
  .market-side .side-row:has(#sidePreClose), .market-side .side-note { display:none; }
  :root:is([data-theme="dark"],[data-theme="gray"]) .market-data-settings-menu { box-shadow:0 12px 28px rgba(0,0,0,.46); }
  :root:is([data-theme="dark"],[data-theme="gray"]) .order-book-row:nth-child(odd) { background:rgba(148,163,184,.09); }
  :root:is([data-theme="dark"],[data-theme="gray"]) .order-book-row.depth-last { background:var(--theme-selection-soft,rgba(105,167,255,.12)); }
  .contract-info-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:7px; margin-top:2px; }
  .contract-info-entry { min-width:0; padding:6px 7px; border:1px solid rgba(148,163,184,.12); border-radius:6px; background:rgba(148,163,184,.045); }
  .contract-info-entry.wide { grid-column:1 / -1; }
  .contract-info-entry dt { margin:0 0 2px; color:var(--muted); font-size:10px; line-height:1.3; }
  .contract-info-entry dd { overflow:hidden; margin:0; color:var(--text); font-size:11px; line-height:1.4; font-variant-numeric:tabular-nums; text-overflow:ellipsis; white-space:nowrap; }
  .contract-info-entry.wide dd { white-space:normal; }
  .contract-info-entry dd.contract-info-accent { color:var(--accent); font-weight:700; }
  .contract-info-entry dd.contract-info-muted { color:var(--muted); }
  :root:is([data-theme="dark"],[data-theme="gray"]) .contract-info-entry { background:rgba(148,163,184,.06); border-color:rgba(148,163,184,.14); }
  .etf-timeshare-panel { min-width:0; }
  .etf-timeshare-heading { display:flex; align-items:center; color:var(--text); font-size:12px; font-weight:700; }
  .etf-timeshare-body { margin-top:5px; overflow:visible; }
  .etf-timeshare-tape { display:grid; gap:0; min-width:0; }
  .etf-timeshare-tape-row { display:grid; grid-template-columns:44px 78px minmax(52px,1fr) 22px; align-items:center; gap:6px; min-height:24px; padding:2px 3px; border-top:1px solid rgba(148,163,184,.1); font-size:11px; font-variant-numeric:tabular-nums; }
  .etf-timeshare-tape-row:first-child { border-top:0; }
  .etf-timeshare-tape-row:nth-child(odd) { background:rgba(148,163,184,.045); }
  .etf-timeshare-tape-time { color:var(--muted); text-align:left; white-space:nowrap; }
  .etf-timeshare-tape-price { color:var(--text); text-align:left; white-space:nowrap; }
  .etf-timeshare-tape-price.up { color:var(--up); }
  .etf-timeshare-tape-price.down { color:var(--down); }
  .etf-timeshare-tape-price i { display:inline-block; width:10px; margin-left:2px; font-style:normal; }
  .etf-timeshare-tape-volume { color:var(--text); text-align:right; white-space:nowrap; }
  .etf-timeshare-tape-count { color:var(--muted); text-align:right; white-space:nowrap; }
  .etf-timeshare-table { width:100%; border-collapse:collapse; table-layout:fixed; font-size:10px; font-variant-numeric:tabular-nums; }
  .etf-timeshare-table th { padding:3px 4px; color:var(--muted); font-weight:500; text-align:right; }
  .etf-timeshare-table th:first-child,.etf-timeshare-table td:first-child { text-align:left; }
  .etf-timeshare-table td { overflow:hidden; padding:4px; border-top:1px solid rgba(148,163,184,.1); color:var(--text); text-align:right; text-overflow:ellipsis; white-space:nowrap; }
  .etf-timeshare-table tbody tr:nth-child(odd) { background:rgba(148,163,184,.045); }
  .etf-timeshare-empty { padding:10px 3px; color:var(--muted); font-size:10px; text-align:center; }
  @media(max-width:420px){ .contract-info-list { grid-template-columns:1fr; } .contract-info-entry.wide { grid-column:auto; } }



  /* K线工具栏：采用交易终端式的紧凑分组布局 */
  .chart-command { min-height:48px; padding:7px 12px; gap:6px; background:var(--panel2); }
  .chart-symbol { padding-right:6px; }
  .chart-symbol strong { font-size:14px; }
  .chart-symbol span { font-size:11px; }
  .chart-command .periods { gap:2px; padding:2px; border-radius:7px; }
  .chart-command .period-btn { min-width:36px; padding:6px 8px; border-radius:5px; }
  .chart-command .period-btn.active { background:var(--accent); color:#fff; }
  .chart-command #fitChart { display:inline-flex !important; align-items:center; justify-content:center; width:32px !important; min-width:32px !important; max-width:32px; height:30px; padding:0 !important; border:1px solid var(--line); border-radius:6px; background:var(--panel2); color:var(--muted); cursor:pointer; }
  .chart-command #fitChart:hover { background:rgba(105,167,255,.12); color:var(--text); }
  .chart-command #fullscreenChart { display:none !important; }
  #chart { position:relative; }
  #chart > #fullscreenChart { display:inline-flex !important; position:absolute; top:8px; right:8px; z-index:20; align-items:center; justify-content:center; width:30px; height:30px; padding:0; border:1px solid var(--line); border-radius:6px; background:var(--theme-overlay-bg,rgba(15,23,39,.72)); color:var(--text); font-size:18px; line-height:1; cursor:pointer; }
  #chart > #fullscreenChart:hover { border-color:var(--accent); background:var(--panel); color:var(--accent); }
  #chart > .chart-layout-menu-wrap { position:absolute; top:8px; right:82px; z-index:20; display:inline-flex; }
  #chart > .chart-layout-menu-wrap > #chartLayoutToggle { display:inline-flex; align-items:center; justify-content:center; width:30px; min-width:30px; height:30px; padding:0 !important; border:1px solid var(--line) !important; border-radius:6px; background:var(--theme-overlay-bg,rgba(15,23,39,.72)); color:var(--text); line-height:1; cursor:pointer; }
  #chart > .chart-layout-menu-wrap > #chartLayoutToggle:hover, #chart > .chart-layout-menu-wrap > #chartLayoutToggle[aria-expanded="true"] { border-color:var(--accent) !important; background:var(--panel); color:var(--accent); }
  #chart > .chart-layout-menu-wrap .chart-layout-menu { top:calc(100% + 6px); right:0; }
  #chartLayoutMenu [data-chart-layout="2"], #chartLayoutMenu [data-chart-layout="3"], #chartLayoutMenu [data-chart-layout="4"] { display:none !important; }
  .chart-layout-four-grid { display:grid; grid-template-columns:repeat(2,6px); grid-template-rows:repeat(2,6px); gap:2px; width:14px; height:14px; }
  .chart-layout-four-grid i { display:block; border:1px solid currentColor; border-radius:1px; }
  #chart > .chart-market-side-toggle { position:absolute; top:8px; right:46px; z-index:20; display:inline-flex; align-items:center; justify-content:center; width:30px; min-width:30px; height:30px; padding:0 !important; border:1px solid var(--line) !important; border-radius:6px; background:var(--theme-overlay-bg,rgba(15,23,39,.72)); color:var(--text); font-size:0; line-height:1; cursor:pointer; }
  #chart > .chart-market-side-toggle::before { content:'◧'; font-size:17px; line-height:1; }
  #chart > .chart-market-side-toggle:hover, #chart > .chart-market-side-toggle.active { border-color:var(--accent) !important; background:var(--panel); color:var(--accent); }
  :root:not([data-theme="dark"],[data-theme="gray"]) #chart > #fullscreenChart { background:#ffffff; border-color:#cbd5e1; color:#1f2937; box-shadow:0 2px 8px rgba(15,23,42,.1); }
  :root:not([data-theme="dark"],[data-theme="gray"]) #chart > .chart-layout-menu-wrap > #chartLayoutToggle { background:#ffffff; border-color:#cbd5e1 !important; color:#1f2937; box-shadow:0 2px 8px rgba(15,23,42,.1); }
  :root:not([data-theme="dark"],[data-theme="gray"]) #chart > .chart-market-side-toggle { background:#ffffff; border-color:#cbd5e1 !important; color:#1f2937; box-shadow:0 2px 8px rgba(15,23,42,.1); }
  .chart-command #scaleModeToggle { font-size:0 !important; }
  .chart-command #scaleModeToggle::before { content:'%'; font-size:15px; line-height:1; }
  .chart-command #scaleModeToggle[data-scale-icon="¥"]::before { content:'¥'; }
  .chart-fit-icon { display:block; width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
  .chart-type-button,.chart-icon-button { display:inline-flex; align-items:center; justify-content:center; min-width:30px; height:30px; padding:0 8px !important; border:1px solid transparent !important; border-radius:6px; color:var(--muted) !important; }
  .chart-type-button .chart-type-icon { margin-right:5px; color:currentColor; font-size:15px; }
  .chart-type-button .chart-window-icon { display:grid; grid-template-columns:repeat(2,7px); grid-template-rows:8px 5px; row-gap:2px; column-gap:0; width:14px; height:15px; margin-right:0; }
  .chart-type-button .chart-window-icon i { display:block; width:auto; height:auto; min-width:0; box-sizing:border-box; border:1px solid currentColor; border-radius:1px; background:transparent; }
  .chart-type-button .chart-window-icon i:nth-child(1) { grid-column:1 / -1; grid-row:1; }
  .chart-type-button .chart-window-icon i:nth-child(2) { grid-column:1; grid-row:2; }
  .chart-type-button .chart-window-icon i:nth-child(3) { grid-column:2; grid-row:2; }
  .chart-type-button:hover,.chart-icon-button:hover { border-color:var(--line) !important; background:rgba(105,167,255,.12) !important; color:var(--text) !important; }
  .chart-stage.multi-chart-active .chart-stage-info { display:none; }
  .chart-ohlc { min-width:0; overflow:hidden; color:var(--muted); font-size:11px; font-variant-numeric:tabular-nums; text-overflow:ellipsis; white-space:nowrap; }
  .chart-ohlc .ohlc-open,.chart-ohlc .ohlc-high,.chart-ohlc .ohlc-close { color:var(--text); }
  .chart-ohlc .ohlc-low { color:var(--down); }
  .chart-command .chart-info { max-width:330px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .chart-stage-info { position:absolute; top:8px; left:10px; z-index:6; display:flex; align-items:center; gap:10px; max-width:calc(100% - 88px); min-height:22px; padding:2px 7px; border-radius:4px; background:var(--theme-overlay-soft,rgba(15,23,39,.48)); pointer-events:auto; cursor:grab; touch-action:none; user-select:none; }
  .chart-stage-info.is-dragging { cursor:grabbing; opacity:.92; }
  .chart-stage-info .chart-info { max-width:360px; overflow:hidden; color:var(--muted); font-size:11px; font-variant-numeric:tabular-nums; text-overflow:ellipsis; white-space:nowrap; }
  :root:not([data-theme="dark"],[data-theme="gray"]) .chart-stage-info { background:rgba(255,255,255,.94); border:1px solid #d8e0eb; box-shadow:0 2px 8px rgba(15,23,42,.08); }
  :root:not([data-theme="dark"],[data-theme="gray"]) .chart-stage-info .chart-info { color:#334155; }
  .chart-stage-info .chart-ohlc { display:inline-flex; align-items:center; gap:9px; max-width:calc(100vw - 120px); }
  .chart-stage-info .chart-ohlc > span { white-space:nowrap; }
  .chart-stage-info .metric-up { color:var(--up) !important; }
  .chart-stage-info .metric-down { color:var(--down) !important; }
  .chart-stage-info .metric-flat { color:var(--muted) !important; }
  .chart-extra-tools { display:inline-flex; align-items:center; gap:2px; padding-left:0; border-left:0; }
  .chart-command .command-divider { display:none !important; }
  .chart-command .chart-icon-button,
  .chart-command .chart-type-button,
  .chart-command .scale-toggle,
  .chart-extra-tools .chart-icon-button { width:32px !important; min-width:32px !important; max-width:32px; height:30px; padding:0 !important; font-size:16px; font-weight:400; }
  /* 顶部工具栏图标统一规格，避免不同按钮各自覆盖尺寸和间距。 */
  .chart-command > .chart-icon-button,
  .chart-command > .chart-type-button,
  .chart-command > .scale-toggle,
  .chart-command > #historyRefresh,
  .chart-command > #chartSettingsToggle,
  .chart-command > .chart-settings-wrap > #chartSettingsToggle,
  .chart-command > #fitChart,
  .chart-command > .indicator-menu-wrap > #indicatorToggle,
  .chart-command > .chart-extra-tools > .chart-icon-button,
  .chart-command > .chart-extra-tools > .chart-layout-menu-wrap > #chartLayoutToggle,
  .chart-command > .window-menu-wrap > #windowToggle {
    display:inline-flex;
    align-items:center;
    justify-content:center;
    box-sizing:border-box;
    flex:0 0 32px;
    width:32px !important;
    min-width:32px !important;
    max-width:32px;
    height:30px;
    padding:0 !important;
    border-radius:6px;
    line-height:1;
  }
  .chart-command > .indicator-menu-wrap,
  .chart-command > .chart-settings-wrap,
  .chart-command > .chart-extra-tools,
  .chart-command > .chart-extra-tools > .chart-layout-menu-wrap,
  .chart-command > .window-menu-wrap {
    display:inline-flex;
    align-items:center;
    flex:0 0 auto;
  }
  .chart-command > .chart-extra-tools { gap:6px; }
  .chart-command > .chart-extra-tools > .chart-layout-menu-wrap > #chartLayoutToggle { flex:0 0 32px; }
  .chart-command > .indicator-menu-wrap > #indicatorToggle::before { line-height:1; }
  .chart-command .chart-icon-button svg,
  .chart-command .chart-type-button svg,
  .chart-command #fitChart svg { display:block; width:16px; height:16px; }
  .chart-symbol-search { position:relative; display:flex; align-items:center; gap:6px; width:min(280px,28vw); min-width:170px; padding-right:0; }
  .chart-symbol-search input { width:100%; min-width:0; height:30px; padding:0 9px; border:1px solid var(--line); border-radius:6px; outline:0; background:var(--panel); color:var(--text); font-size:13px; font-weight:700; }
  .chart-symbol-search input::placeholder { color:var(--muted); font-weight:500; }
  .chart-symbol-search input:focus { border-color:var(--accent); box-shadow:0 0 0 2px rgba(37,99,235,.15); }
  .chart-symbol-search > span { flex:0 0 auto; color:var(--accent); font-size:11px; font-weight:700; }
  .chart-symbol-menu { position:absolute; top:calc(100% + 6px); left:0; z-index:30; display:flex; flex-direction:column; width:320px; max-height:360px; overflow:auto; padding:5px; border:1px solid var(--line); border-radius:8px; background:var(--panel); box-shadow:0 12px 28px rgba(15,23,42,.28); }
  .chart-symbol-option { display:flex; align-items:center; justify-content:space-between; gap:12px; width:100%; min-height:38px; padding:6px 8px; border:0; border-radius:5px; background:transparent; color:var(--text); text-align:left; cursor:pointer; }
  .chart-symbol-option:hover { background:rgba(37,99,235,.12); }
  .chart-symbol-option.active { background:rgba(37,99,235,.14); outline:1px solid var(--accent); outline-offset:-1px; }
  .chart-symbol-status { padding:9px 8px; color:var(--muted); font-size:12px; }
  .chart-symbol-option > span { display:flex; min-width:0; flex-direction:column; gap:2px; }
  .chart-symbol-option b { overflow:hidden; font-size:12px; text-overflow:ellipsis; white-space:nowrap; }
  .chart-symbol-option small { color:var(--accent); font-size:10px; font-variant-numeric:tabular-nums; }
  .chart-symbol-option > strong { flex:0 0 auto; font-size:12px; font-variant-numeric:tabular-nums; }
  :root:is([data-theme="dark"],[data-theme="gray"]) .chart-symbol-search input { background:var(--theme-control-bg,#172237); border-color:var(--theme-border-strong,#33445d); }
  :root:is([data-theme="dark"],[data-theme="gray"]) .chart-symbol-menu { background:var(--theme-popover-bg,#111c2f); border-color:var(--theme-border-strong,#33445d); box-shadow:0 12px 28px rgba(0,0,0,.42); }
  @media(max-width:620px){ .chart-symbol-search { width:190px; min-width:145px; } .chart-symbol-menu { width:260px; } }
  .side-quote-card { padding:12px 14px; }
  .side-quote-card .side-heading { display:none; }
  .side-quote-card .side-contract { justify-content:flex-start; gap:8px; margin-bottom:7px; }
  .side-quote-card .side-contract #sideCode { order:-1; color:var(--muted); font-size:12px; }
  .side-quote-card .side-contract #sideName { color:#f59e0b; font-size:14px; }
  .side-quote-card .side-contract .side-quote-favorite { flex:0 0 auto; align-self:center; width:25px; height:25px; margin-left:auto; padding:0; border:0; border-radius:5px; background:transparent; color:var(--muted); font-size:18px; line-height:1; cursor:pointer; }
  #sideQuoteFavorite.selected { color:#d49c00 !important; background:transparent !important; border:0 !important; box-shadow:none !important; }
  .side-quote-card .side-contract .side-quote-favorite:hover { background:var(--panel2); }
  .side-quote-card .side-contract .side-quote-favorite:focus-visible { outline:2px solid var(--accent); outline-offset:1px; }
  .side-quote-card .side-contract .side-quote-favorite:disabled { opacity:.45; cursor:default; }
  .side-quote-card .side-price-row { justify-content:flex-start; gap:8px; padding:1px 0 8px; border-bottom:0; }
  .side-quote-card .side-price-row strong { font-size:25px; }
  .side-quote-card .side-price-row .side-quote-arrow { font-size:17px; font-weight:800; }
  .side-quote-card .side-price-row .side-quote-change { font-size:13px; font-weight:700; }
  .side-quote-card .side-price-row #sideChange { margin-left:2px; font-size:13px; font-weight:700; }
  .side-quote-meta { display:flex; align-items:center; gap:6px; min-height:22px; margin-bottom:10px; }
  .side-quote-meta > span { display:inline-flex; align-items:center; min-height:20px; padding:2px 6px; border-radius:3px; background:#263b57; color:#dbe7f7; font-size:10px; line-height:1.2; }
  .side-quote-meta #sideExchange { background:#946617; color:#fff4d1; }
  .side-quote-meta #sideMainTag { background:#135c91; color:#dff2ff; }
  .side-quote-meta #sideStatus { margin-left:auto; padding-right:0; background:transparent; color:var(--muted); font-size:11px; }
  :root[data-theme="light"] .side-quote-meta > span { background:#e8eef7; color:#42546b; }
  :root[data-theme="light"] .side-quote-meta #sideExchange { background:#fff0c9; color:#8a5b00; }
  :root[data-theme="light"] .side-quote-meta #sideMainTag { background:#dff1ff; color:#14618e; }
  .side-quote-card #sidePrice.up, .side-quote-card #sideQuoteArrow.up, .side-quote-card #sideChangeValue.up, .side-quote-card #sideChange.up { color:var(--up); }
  .side-quote-card #sidePrice.down, .side-quote-card #sideQuoteArrow.down, .side-quote-card #sideChangeValue.down, .side-quote-card #sideChange.down { color:var(--down); }
  .side-quote-card #sidePrice.flat, .side-quote-card #sideQuoteArrow.flat, .side-quote-card #sideChangeValue.flat, .side-quote-card #sideChange.flat { color:var(--muted); }
  .chart-extra-tools .chart-icon-button.active { color:var(--accent) !important; background:rgba(105,167,255,.12) !important; }
  .chart-extra-tools [data-chart-action="replay"] svg { width:17px; height:17px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
  .chart-extra-tools [data-chart-action="comparison"] svg { width:17px; height:17px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
  .comparison-backdrop { position:fixed; inset:0; z-index:1400; display:flex; align-items:center; justify-content:center; padding:10px; box-sizing:border-box; background:rgba(4,10,20,.62); }
  .comparison-backdrop.hidden { display:none !important; }
  .comparison-dialog { display:flex; flex-direction:column; gap:8px; width:min(760px,calc(100vw - 24px)); max-height:min(82vh,720px); overflow:auto; padding:12px; box-sizing:border-box; border:1px solid var(--line); border-radius:10px; background:var(--panel); color:var(--text); box-shadow:0 16px 42px rgba(0,0,0,.38); }
  .comparison-heading,.comparison-heading > div { display:flex; align-items:center; }
  .comparison-heading { justify-content:space-between; gap:12px; }
  .comparison-heading > div { min-width:0; flex-wrap:wrap; gap:10px; }
  .comparison-heading strong { font-size:15px; }
  .comparison-heading small,.comparison-selection-heading small { color:var(--muted); font-size:11px; font-weight:400; }
  .comparison-heading [data-comparison-close] { flex:0 0 auto; width:30px; height:30px; border:1px solid var(--line); border-radius:6px; background:var(--panel2); color:var(--muted); font-size:20px; line-height:1; cursor:pointer; }
  .comparison-controls { display:flex; flex-wrap:wrap; align-items:end; gap:7px; }
  .comparison-controls label { display:flex; min-width:118px; flex-direction:column; gap:3px; color:var(--muted); font-size:11px; }
  .comparison-controls select,.comparison-controls input,.comparison-saved-row select,.comparison-saved-row input { height:30px; min-width:0; padding:0 8px; border:1px solid var(--line); border-radius:5px; background:var(--panel2); color:var(--text); font:inherit; }
  .comparison-controls select { min-width:128px; }
  .comparison-controls .comparison-date-field { min-width:138px; }
  .comparison-controls .comparison-date-field input { width:100%; box-sizing:border-box; }
  .comparison-presets { display:flex; flex-wrap:wrap; align-items:center; gap:7px; }
  .comparison-presets > span { margin-right:2px; color:var(--muted); font-size:11px; }
  .comparison-presets button,.comparison-saved-row button,.comparison-run { min-height:30px; padding:0 10px; border:1px solid var(--line); border-radius:6px; background:var(--panel2); color:var(--text); font-size:11px; cursor:pointer; }
  .comparison-presets button:hover,.comparison-saved-row button:hover { border-color:var(--accent); color:var(--accent); }
  .comparison-selection { min-height:90px; padding:8px; border:1px solid var(--line); border-radius:7px; background:var(--panel2); }
  .comparison-selection-heading { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:6px; }
  .comparison-selection-heading strong { display:flex; flex-wrap:wrap; align-items:baseline; gap:8px; font-size:12px; }
  .comparison-selection-heading input { width:min(250px,48%); height:29px; padding:0 8px; border:1px solid var(--line); border-radius:5px; outline:0; background:var(--panel); color:var(--text); font-size:11px; }
  .comparison-selection-heading input:focus { border-color:var(--accent); }
  .comparison-instrument-list { display:grid; grid-template-columns:repeat(auto-fill,minmax(140px,1fr)); gap:4px; max-height:96px; overflow:auto; }
  .comparison-slot-list { grid-template-columns:repeat(2,minmax(0,1fr)); max-height:none; gap:8px; overflow:visible; }
  .comparison-slot { display:flex; min-width:0; flex-direction:column; gap:4px; color:var(--muted); font-size:11px; }
  .comparison-slot input { box-sizing:border-box; width:100%; min-width:0; height:30px; padding:0 8px; border:1px solid var(--line); border-radius:5px; background:var(--panel); color:var(--text); font:inherit; }
  .comparison-slot input:focus { outline:1px solid var(--accent); }
  .comparison-instrument { display:flex; min-width:0; align-items:center; gap:6px; padding:6px; border:1px solid transparent; border-radius:5px; cursor:pointer; }
  .comparison-instrument.selected { border-color:rgba(37,99,235,.48); background:rgba(37,99,235,.09); }
  .comparison-instrument input { flex:0 0 auto; accent-color:var(--accent); }
  .comparison-instrument > span { display:flex; min-width:0; flex-direction:column; gap:2px; }
  .comparison-instrument b,.comparison-instrument small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .comparison-instrument b { font-size:11px; }
  .comparison-instrument small,.comparison-empty { color:var(--muted); font-size:10px; }
  .comparison-empty { grid-column:1/-1; padding:16px 8px; text-align:center; }
  .comparison-saved-row { display:grid; grid-template-columns:minmax(120px,1fr) auto minmax(110px,.8fr) auto auto; gap:5px; }
  .comparison-saved-row button { white-space:nowrap; display:inline-flex; align-items:center; justify-content:center; box-sizing:border-box; }
  .comparison-heading [data-comparison-close] { display:inline-flex; align-items:center; justify-content:center; padding:0; box-sizing:border-box; }
  .comparison-actions { display:flex; align-items:center; justify-content:space-between; gap:12px; min-height:30px; }
  .comparison-actions [data-comparison-status] { min-width:0; color:var(--muted); font-size:11px; }
  .comparison-actions [data-comparison-status].error { color:var(--down); }
  .comparison-run { flex:0 0 auto; min-width:92px; border-color:var(--accent); background:var(--accent); color:#fff; font-weight:700; }
  .comparison-run:disabled { opacity:.6; cursor:wait; }
  .comparison-legend { display:flex; flex-wrap:wrap; gap:12px; }
  .comparison-legend-item { display:inline-flex; align-items:center; gap:6px; min-width:0; color:var(--muted); font-size:10px; cursor:pointer; }
  .comparison-legend-item i { width:14px; height:3px; border-radius:2px; background:var(--series-color); }
  .comparison-chart { width:100%; height:clamp(260px,42vh,480px); min-height:240px; }
  :root[data-theme="light"] .comparison-backdrop { background:rgba(15,23,42,.42); }
  :root[data-theme="light"] .comparison-dialog { box-shadow:0 20px 60px rgba(15,23,42,.24); }
  @media(max-width:700px) { .comparison-dialog { gap:10px; padding:12px; } .comparison-controls label { flex:1 1 calc(50% - 8px); min-width:125px; } .comparison-controls select { width:100%; } .comparison-saved-row { grid-template-columns:minmax(0,1fr) auto; } .comparison-saved-row [data-comparison-save-name] { grid-column:1; } .comparison-saved-row [data-comparison-save] { grid-column:2; grid-row:2; } .comparison-saved-row [data-comparison-delete] { grid-column:1/-1; } .comparison-actions { align-items:flex-start; } }
  @media(max-width:430px) { .comparison-selection-heading { align-items:flex-start; flex-direction:column; } .comparison-selection-heading input { width:100%; box-sizing:border-box; } .comparison-actions { flex-direction:column; } .comparison-run { width:100%; } }
  .market-module-tabs { display:flex; align-items:center; gap:6px; margin:0 0 12px; padding:4px; width:max-content; max-width:100%; border:1px solid var(--line); border-radius:8px; background:var(--panel2); }
  .market-module-tabs button { min-height:30px; padding:0 12px; border:1px solid transparent; border-radius:5px; background:transparent; color:var(--muted); font-size:12px; cursor:pointer; }
  .market-module-tabs button.active { border-color:var(--line); background:var(--panel); color:var(--text); font-weight:700; }
  .market-workspace.chart-open #marketModuleTabs { display:none; }
  .market-workspace.chart-open > [data-market-panel]:not(#liveView) { display:none; }
  .correlation-view { min-width:0; padding:16px; }
  .correlation-heading { display:flex; align-items:center; justify-content:space-between; gap:14px; margin-bottom:14px; }
  .correlation-heading h2 { margin:3px 0; color:var(--text); font-size:20px; }
  .correlation-heading p { margin:4px 0 0; color:var(--muted); font-size:12px; }
  .correlation-updated { flex:0 0 auto; color:var(--muted); font-size:11px; }
  .correlation-controls { display:flex; flex-wrap:wrap; align-items:end; gap:9px; margin-bottom:12px; }
  .correlation-controls label { display:flex; min-width:130px; flex-direction:column; gap:4px; color:var(--muted); font-size:11px; }
  .correlation-controls select { height:32px; min-width:136px; padding:0 9px; border:1px solid var(--line); border-radius:6px; background:var(--panel2); color:var(--text); }
  .correlation-controls button { min-height:32px; padding:0 12px; }
  .correlation-controls [data-correlation-status] { flex:1 1 260px; min-width:180px; padding:7px 0; color:var(--muted); font-size:11px; }
  .correlation-controls [data-correlation-status].error { color:var(--down); }
  .correlation-controls button:disabled { opacity:.6; cursor:wait; }
  .correlation-instrument-picker { margin-bottom:13px; padding:10px; border:1px solid var(--line); border-radius:8px; background:var(--panel2); }
  .correlation-picker-heading { display:flex; align-items:baseline; justify-content:space-between; gap:8px; margin-bottom:7px; }
  .correlation-picker-heading strong { font-size:12px; }
  .correlation-picker-heading small,.correlation-picker-heading > span { color:var(--muted); font-size:10px; font-weight:400; }
  .correlation-instrument-list { display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:5px; max-height:126px; overflow:auto; }
  .correlation-instrument-option { display:flex; min-width:0; align-items:center; gap:7px; padding:6px 7px; border:1px solid transparent; border-radius:5px; cursor:pointer; }
  .correlation-instrument-option.selected { border-color:rgba(37,99,235,.42); background:rgba(37,99,235,.08); }
  .correlation-instrument-option input { flex:0 0 auto; accent-color:var(--accent); }
  .correlation-instrument-option > span { display:flex; min-width:0; flex-direction:column; gap:2px; }
  .correlation-instrument-option b,.correlation-instrument-option small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .correlation-instrument-option b { color:var(--text); font-size:11px; }
  .correlation-instrument-option small { color:var(--muted); font-size:10px; }
  .correlation-heatmap-wrap { min-width:0; padding:10px; border:1px solid var(--line); border-radius:8px; background:var(--panel); }
  .correlation-heatmap-scroll { max-width:100%; overflow:auto; }
  .correlation-table { width:100%; min-width:max-content; border-collapse:separate; border-spacing:3px; table-layout:fixed; }
  .correlation-table th { min-width:74px; max-width:140px; overflow:hidden; padding:4px; color:var(--muted); font-size:10px; font-weight:600; text-overflow:ellipsis; white-space:nowrap; }
  .correlation-table th:first-child { position:sticky; left:0; z-index:1; min-width:120px; max-width:160px; background:var(--panel); text-align:left; }
  .correlation-table td { min-width:56px; padding:0; }
  .correlation-cell { width:100%; min-width:56px; height:38px; border:1px solid rgba(127,145,170,.22); border-radius:4px; font-size:11px; font-variant-numeric:tabular-nums; cursor:pointer; transition:filter .12s,border-color .12s; }
  .correlation-cell:hover:not(:disabled) { filter:brightness(1.12); border-color:var(--accent); }
  .correlation-cell.selected { outline:2px solid var(--accent); outline-offset:-2px; }
  .correlation-cell:disabled { cursor:default; font-weight:700; }
  .correlation-scale { display:flex; align-items:center; justify-content:center; gap:8px; margin-top:8px; color:var(--muted); font-size:10px; }
  .correlation-scale i { width:90px; height:9px; border-radius:5px; }
  .correlation-scale i:first-of-type { background:linear-gradient(90deg,#2563eb,#fff); }
  .correlation-scale i:last-of-type { background:linear-gradient(90deg,#fff,#d22e3a); }
  :root:is([data-theme="dark"],[data-theme="gray"]) .correlation-scale i:first-of-type { background:linear-gradient(90deg,#2563eb,var(--theme-control-bg,#172237)); }
  :root:is([data-theme="dark"],[data-theme="gray"]) .correlation-scale i:last-of-type { background:linear-gradient(90deg,var(--theme-control-bg,#172237),#d22e3a); }
  .correlation-empty { padding:32px 12px; color:var(--muted); font-size:12px; text-align:center; }
  .correlation-pair-analysis { margin-top:13px; padding:12px; border:1px solid var(--line); border-radius:8px; background:var(--panel); }
  .correlation-pair-heading { display:flex; flex-wrap:wrap; align-items:baseline; justify-content:space-between; gap:7px; margin-bottom:10px; }
  .correlation-pair-heading strong { color:var(--text); font-size:12px; }
  .correlation-pair-heading span { color:var(--muted); font-size:10px; }
  .correlation-detail-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
  .correlation-detail-grid > div { min-width:0; }
  .correlation-detail-grid h3 { margin:0 0 5px; color:var(--muted); font-size:11px; font-weight:600; }
  .correlation-detail-chart { width:100%; height:220px; min-height:180px; }
  @media(max-width:760px) { .correlation-view { padding:12px; } .correlation-detail-grid { grid-template-columns:1fr; } .correlation-heading { align-items:flex-start; flex-direction:column; gap:4px; } .correlation-scale i { width:42px; } }
  .chart-replay-panel { position:absolute; left:50%; bottom:16px; z-index:80; width:min(760px,calc(100% - 28px)); box-sizing:border-box; padding:9px 12px 10px; transform:translateX(-50%); border:1px solid var(--line); border-radius:9px; background:var(--panel); color:var(--text); box-shadow:0 12px 32px rgba(0,0,0,.28); font-size:12px; }
  .chart-replay-panel.hidden { display:none !important; }
  .chart-replay-heading { display:flex; align-items:center; gap:8px; min-height:24px; margin-bottom:7px; }
  .chart-replay-heading strong { color:var(--text); font-size:12px; }
  .chart-replay-heading > span { min-width:0; overflow:hidden; color:var(--muted); text-overflow:ellipsis; white-space:nowrap; }
  .chart-replay-heading [data-replay-close] { width:24px; height:24px; margin-left:auto; border:0; border-radius:5px; background:transparent; color:var(--muted); font-size:18px; cursor:pointer; }
  .chart-replay-heading [data-replay-close]:hover { background:var(--panel2); color:var(--text); }
  .chart-replay-controls { display:grid; grid-template-columns:30px 30px 30px minmax(90px,1fr) minmax(150px,auto) 62px; align-items:center; gap:7px; }
  .chart-replay-controls > button,.chart-replay-download > button { min-width:30px; height:28px; border:1px solid var(--line); border-radius:5px; background:var(--panel2); color:var(--text); cursor:pointer; }
  .chart-replay-controls > button:hover,.chart-replay-download > button:hover:not(:disabled) { border-color:var(--accent); color:var(--accent); }
  .chart-replay-controls .replay-play-button { color:var(--accent); }
  .chart-replay-controls input[type="range"] { width:100%; min-width:70px; accent-color:var(--accent); }
  .chart-replay-time { overflow:hidden; color:var(--muted); font-size:11px; font-variant-numeric:tabular-nums; text-align:right; text-overflow:ellipsis; white-space:nowrap; }
  .chart-replay-controls select,.chart-replay-download input { height:27px; min-width:0; box-sizing:border-box; border:1px solid var(--line); border-radius:5px; background:var(--panel2); color:var(--text); font-size:11px; }
  .chart-replay-controls select { padding:0 4px; }
  .chart-replay-download { display:flex; align-items:center; gap:8px; margin-top:8px; padding-top:7px; border-top:1px solid var(--line); }
  .chart-replay-download label { display:flex; align-items:center; gap:5px; color:var(--muted); white-space:nowrap; }
  .chart-replay-download input { width:132px; padding:0 5px; }
  .chart-replay-download > button { flex:0 0 auto; padding:0 9px; }
  .chart-replay-download > button:disabled { opacity:.55; cursor:wait; }
  .chart-replay-download [data-replay-status] { min-width:0; overflow:hidden; margin-left:auto; color:var(--muted); font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
  :root[data-theme="light"] .chart-replay-panel { box-shadow:0 12px 32px rgba(15,23,42,.18); }
  @media(max-width:720px) { .chart-replay-controls { grid-template-columns:28px 28px 28px minmax(50px,1fr) 104px 54px; gap:4px; } .chart-replay-download { flex-wrap:wrap; } .chart-replay-download [data-replay-status] { flex-basis:100%; margin-left:0; } .chart-replay-download input { width:115px; } }
  .ohlc-change { color:var(--up); }
  :root:is([data-theme="dark"],[data-theme="gray"]) .chart-command { background:var(--theme-toolbar-bg,#111722); border-color:var(--theme-border,#273348); }
  :root:is([data-theme="dark"],[data-theme="gray"]) .chart-command .periods { background:var(--theme-inset-bg,#0d1420); border-color:var(--theme-border,#273348); }
  :root:is([data-theme="dark"],[data-theme="gray"]) .chart-command .period-btn.active { background:#2563eb; }
  @media(max-width:900px){ .chart-stage-info .chart-info { display:none; } .chart-stage-info .chart-ohlc { max-width:240px; } .chart-extra-tools .chart-icon-button:nth-child(3) { display:none; } }
  @media(max-width:620px){ .chart-stage-info .chart-ohlc { display:none; } .chart-symbol { max-width:145px; } .chart-command .period-btn { min-width:31px; padding-left:5px; padding-right:5px; } }



  /* 图表控件和所有副图统一使用同一套终端配色。 */
  .chart-command .chart-icon-button,
  .chart-command .chart-type-button,
  .chart-command #scaleModeToggle,
  .chart-command #historyRefresh,
  .chart-command #chartSettingsToggle,
  .chart-command #fitChart,
  .chart-command #indicatorToggle,
  .chart-command #windowToggle {
    background:var(--panel2);
    border:1px solid var(--line) !important;
    color:var(--muted) !important;
    box-shadow:0 1px 0 rgba(255,255,255,.03) inset;
  }
  .chart-command .chart-icon-button:hover,
  .chart-command .chart-type-button:hover,
  .chart-command #scaleModeToggle:hover,
  .chart-command #historyRefresh:hover,
  .chart-command #chartSettingsToggle:hover,
  .chart-command #fitChart:hover,
  .chart-command #indicatorToggle:hover,
  .chart-command #windowToggle:hover {
    border-color:var(--line) !important;
    background:var(--panel2) !important;
    color:var(--muted) !important;
  }
  .chart-command .chart-icon-button.active,
  .chart-command .chart-type-button.active,
  .chart-command #scaleModeToggle.active,
  .chart-command .chart-icon-button[aria-expanded="true"],
  .chart-command .chart-icon-button[aria-pressed="true"] {
    border-color:var(--line) !important;
    background:var(--panel2) !important;
    color:var(--muted) !important;
  }
  .chart-command #historyRefresh { color:var(--muted) !important; }
  .chart-command .chart-extra-tools { border-left-color:var(--line); }
  .chart-extra-tools [data-chart-action="undo"], .chart-extra-tools [data-chart-action="redo"] { display:none !important; }
  .chart-stage, #priceChart, #subChartWindows, #subChartWindows .sub-chart-placeholder { background:var(--panel2); }
  .chart-stage.order-book-dragging #priceChart { cursor:ew-resize !important; }
  #subChartWindows .sub-chart-placeholder { border-color:var(--line); }
  :root:is([data-theme="dark"],[data-theme="gray"]) .chart-command .chart-icon-button,
  :root:is([data-theme="dark"],[data-theme="gray"]) .chart-command .chart-type-button,
  :root:is([data-theme="dark"],[data-theme="gray"]) .chart-command #scaleModeToggle,
  :root:is([data-theme="dark"],[data-theme="gray"]) .chart-command #historyRefresh,
  :root:is([data-theme="dark"],[data-theme="gray"]) .chart-command #chartSettingsToggle,
  :root:is([data-theme="dark"],[data-theme="gray"]) .chart-command #fitChart,
  :root:is([data-theme="dark"],[data-theme="gray"]) .chart-command #indicatorToggle,
  :root:is([data-theme="dark"],[data-theme="gray"]) .chart-command #windowToggle { background:var(--theme-control-bg,#172237); }
  :root:is([data-theme="dark"],[data-theme="gray"]) .chart-stage, :root:is([data-theme="dark"],[data-theme="gray"]) #priceChart,
  :root:is([data-theme="dark"],[data-theme="gray"]) #subChartWindows,
  :root:is([data-theme="dark"],[data-theme="gray"]) #subChartWindows .sub-chart-placeholder { background:var(--theme-chart-bg,#0f1727); }



  /* 主图与副图共用同一绘图区边界，时间刻度才能垂直对齐 */
  #subChartWindows .sub-chart-placeholder { padding-left:0; padding-right:0; }
  #subChartWindows .sub-chart-canvas { width:100%; }
  /* 拖动分隔条时锁定图表总高度，副图在剩余空间内压缩，不把页面撑长。 */
  .chart-stage.multi-window { min-height:0; height:100%; overflow:hidden; }
  .chart-stage.multi-window #priceChart { min-height:0; }
  .chart-stage.multi-window #subChartWindows { min-height:0; height:auto; overflow:hidden; grid-template-rows:repeat(var(--sub-window-count),minmax(0,1fr)); }
  .chart-stage.multi-window .sub-chart-placeholder { min-height:0; overflow:hidden; }
  .chart-stage.multi-window .sub-chart-canvas { min-height:0; overflow:hidden; }
  /* 使用绝对定位把副图底边锚定在图表容器底部，拖动时只改变上下边界。 */
  .chart-stage.multi-window { display:block; }
  .chart-stage.multi-window #priceChart { position:absolute; inset:0 0 auto; width:100%; height:var(--main-chart-height,54%); flex:none; }
  .chart-stage.multi-window .chart-window-resizer { position:absolute; inset:var(--main-chart-height,54%) 0 auto; z-index:4; height:8px; }
  .chart-stage.multi-window #subChartWindows { position:absolute; inset:calc(var(--main-chart-height,54%) + 9px) 0 0; width:auto; height:auto; flex:none; }
  .chart-stage.multi-window .sub-chart-placeholder { position:relative; display:block; padding:0; }
  .chart-stage.multi-window .subchart-header { position:absolute; inset:2px 4px auto auto; z-index:3; min-height:0; height:22px; padding:0; border-bottom:0; pointer-events:none; }
  .chart-stage.multi-window .subchart-header .subchart-close { pointer-events:auto; }
  .chart-stage.multi-window .sub-chart-canvas { position:absolute; inset:0; width:100%; height:100%; }
  /* 两个副图之间的独立拖动分隔条 */
  .chart-stage.multi-window #subChartWindows { display:flex; flex-direction:column; grid-template-rows:none; }
  .chart-stage.multi-window .sub-chart-placeholder { flex:1 1 0; }
  .chart-stage.multi-window .sub-chart-resizer { display:flex; flex:0 0 8px; align-items:center; justify-content:center; background:var(--panel); cursor:row-resize; touch-action:none; user-select:none; z-index:4; }
  .chart-stage.multi-window .sub-chart-resizer::after { content:""; width:50px; height:3px; border-radius:3px; background:var(--muted); opacity:.8; }
  :root:is([data-theme="dark"],[data-theme="gray"]) .chart-stage.multi-window .sub-chart-resizer { background:var(--theme-control-bg,#172237); }
  :root:is([data-theme="dark"],[data-theme="gray"]) .chart-stage.multi-window .sub-chart-resizer::after { background:var(--theme-scroll-hover,#6e86a7); }
  @media(max-width:820px){
    .chart-layout { min-height:0; }
    .chart-stage.multi-window { height:clamp(460px,70vh,620px); }
  }



  .drawing-toolbar { position:absolute; z-index:8; display:flex; align-items:center; gap:4px; min-height:38px; padding:5px 7px; border:1px solid #cfd5df; border-radius:9px; background:rgba(255,255,255,.98); box-shadow:0 7px 22px rgba(15,23,42,.2); color:#243044; }
  .drawing-toolbar.hidden { display:none !important; }
  .drawing-toolbar button { display:inline-flex; align-items:center; justify-content:center; min-width:28px; height:27px; padding:0 7px; border:0; border-radius:5px; background:transparent; color:#465268; font-size:12px; font-weight:600; cursor:pointer; }
  .drawing-toolbar button:hover, .drawing-toolbar button.active { background:#e9f0ff; color:#1557c0; }
  .drawing-toolbar .drawing-toolbar-separator { width:1px; height:22px; margin:0 3px; background:#e1e5eb; }
  .drawing-toolbar .drawing-color-control { position:relative; width:30px; min-width:30px; padding:0; }
  .drawing-toolbar .drawing-color-swatch { display:block; width:18px; height:18px; border:2px solid #fff; border-radius:50%; box-shadow:0 0 0 1px #aeb7c5; }
  .drawing-toolbar input[type="color"] { position:absolute; inset:0; width:100%; height:100%; opacity:0; cursor:pointer; }
  .drawing-toolbar .drawing-toolbar-delete { color:#b42318; font-size:17px; }
  .drawing-toolbar .drawing-toolbar-delete:hover { background:#fff0ef; color:#b42318; }
  .drawing-toolbar .drawing-toolbar-close { min-width:22px; padding:0 4px; color:#8a94a6; font-size:18px; font-weight:400; }
  .drawing-toolbar [data-drawing-width][hidden] { display:none !important; }
  #drawingsLayer .drawing-hit { fill:none; stroke:transparent; stroke-width:14; pointer-events:stroke; cursor:grab; vector-effect:non-scaling-stroke; }
  #drawingsLayer .drawing-hit:active, #priceChart.drawing-dragging { cursor:grabbing; }
  #drawingsLayer .drawing-hit.drawing-hit-shape { fill:transparent; pointer-events:all; }
  #drawingsLayer .drawing-selectable { pointer-events:none; }
  #drawingsLayer .drawing-group { pointer-events:none; }
  #drawingsLayer .order-bubble-layer { pointer-events:none; }
  #drawingsLayer .drawing-selected .drawing-selectable { filter:none; }
  #drawingsLayer .drawing-selected .drawing-hit { stroke:transparent; }
  .chart-tools button[data-draw-icon-ready="true"] { display:grid; place-items:center; line-height:0; }
  .chart-tool-icon { display:block; width:17px; height:17px; overflow:visible; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
  .text-annotation-backdrop { position:fixed; inset:0; z-index:300; display:grid; place-items:center; padding:16px; background:rgba(5,12,24,.48); }
  .text-annotation-backdrop.hidden { display:none !important; }
  .text-annotation-dialog { width:min(420px,100%); padding:18px; border:1px solid var(--line); border-radius:12px; background:var(--panel); color:var(--text); box-shadow:0 18px 55px rgba(0,0,0,.34); }
  .text-annotation-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:14px; font-size:15px; font-weight:700; }
  .text-annotation-close { width:28px; height:28px; border:0; border-radius:6px; background:transparent; color:var(--muted); font-size:20px; cursor:pointer; }
  .text-annotation-close:hover { background:var(--panel2); color:var(--text); }
  .text-annotation-field { display:grid; gap:6px; color:var(--muted); font-size:12px; }
  .text-annotation-field input:not([type="color"]), .text-annotation-field select { width:100%; min-height:36px; padding:6px 9px; border:1px solid var(--line); border-radius:7px; background:var(--panel2); color:var(--text); font:inherit; }
  .text-annotation-style-row { display:grid; grid-template-columns:minmax(0,1fr) minmax(76px,.55fr) 58px; gap:10px; margin-top:12px; }
  .text-annotation-field input[type="color"] { width:38px; height:34px; padding:3px; border:1px solid var(--line); border-radius:7px; background:var(--panel2); cursor:pointer; }
  .text-annotation-actions { display:flex; justify-content:flex-end; gap:8px; margin-top:18px; }
  .text-annotation-actions button { min-width:76px; min-height:34px; padding:6px 12px; border:1px solid var(--line); border-radius:7px; background:var(--panel2); color:var(--text); cursor:pointer; }
  .text-annotation-actions button.primary { border-color:#2563eb; background:#2563eb; color:#fff; }
  @media(max-width:480px){ .text-annotation-style-row { grid-template-columns:1fr 1fr; } .text-annotation-field-color { grid-column:1 / -1; grid-template-columns:1fr auto; align-items:center; } }
  :root:is([data-theme="dark"],[data-theme="gray"]) .drawing-toolbar { border-color:var(--theme-border-strong,#3b4b64); background:var(--theme-tooltip-bg,rgba(17,26,43,.98)); color:var(--text); box-shadow:0 9px 28px rgba(0,0,0,.45); }
  :root:is([data-theme="dark"],[data-theme="gray"]) .drawing-toolbar button { color:var(--theme-tool-text,#c4d0e4); }
  :root:is([data-theme="dark"],[data-theme="gray"]) .drawing-toolbar button:hover, :root:is([data-theme="dark"],[data-theme="gray"]) .drawing-toolbar button.active { background:var(--theme-selected-bg,#1f3a64); color:var(--theme-tool-accent,#9cc2ff); }
  :root:is([data-theme="dark"],[data-theme="gray"]) .drawing-toolbar .drawing-toolbar-separator { background:var(--theme-border-strong,#3b4b64); }
  :root:is([data-theme="dark"],[data-theme="gray"]) .drawing-toolbar .drawing-toolbar-delete:hover { background:#4b2028; }
  .market-workspace.chart-open { grid-template-columns:minmax(220px,var(--contract-list-width,320px)) 14px minmax(0,1fr); column-gap:0; }
  .market-workspace.chart-open #contractListPanel { min-width:0; }
  .workspace-side-resizer { position:relative; align-self:stretch; width:14px; min-width:14px; cursor:col-resize; touch-action:none; user-select:none; }
  .workspace-side-resizer::after { content:""; position:absolute; top:0; bottom:0; left:6px; width:2px; border-radius:2px; background:var(--line); opacity:.9; }
  .workspace-side-resizer:hover::after, .workspace-side-resizer:focus-visible::after { width:4px; left:5px; background:var(--accent); }
  .chart-layout { grid-template-columns:38px minmax(0,1fr) 14px var(--market-side-width,320px); column-gap:0; }
  .market-workspace.chart-open.market-side-hidden .chart-side-resizer,
  .market-workspace.chart-open.market-side-hidden .market-side { display:none !important; }
  .market-workspace.chart-open.market-side-hidden .chart-layout { grid-template-columns:38px minmax(0,1fr); }
  .chart-side-resizer { position:relative; align-self:stretch; width:14px; min-width:14px; cursor:col-resize; touch-action:none; user-select:none; }
  .chart-side-resizer::after { content:""; position:absolute; top:0; bottom:0; left:6px; width:2px; border-radius:2px; background:var(--line); opacity:.9; }
  .chart-side-resizer:hover::after, .chart-side-resizer:focus-visible::after { width:4px; left:5px; background:var(--accent); }
  .market-side { min-width:0; }
  .market-side .side-heading, .market-side .side-contract, .market-side .side-price-row { min-width:0; }
  .market-side .side-heading > span:first-child, .market-side .side-contract > span { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .market-side .order-book { min-width:0; overflow:hidden; }
  .market-side .order-book-head, .market-side .order-book-row { min-width:0; grid-template-columns:minmax(52px,.82fr) minmax(76px,1.24fr) minmax(48px,.8fr); }
  .market-side .order-book-head > *, .market-side .order-book-row > * { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .market-workspace.chart-open #contractListPanel > .panel-title, #historyView > .panel > .panel-title { display:none !important; }
  .period-custom-wrap { position:relative; flex:0 0 auto; }
  .period-select-wrap { position:relative; flex:0 0 auto; }
  .period-select-toggle { min-width:48px !important; padding:6px 8px !important; }
  .period-select-menu { position:absolute; top:calc(100% + 6px); left:0; z-index:20; min-width:92px; padding:5px; border:1px solid var(--line); border-radius:8px; background:var(--panel); box-shadow:0 12px 28px rgba(15,23,42,.22); }
  .period-select-menu.hidden { display:none !important; }
  .period-select-option { display:block; width:100%; min-height:29px; padding:5px 9px; border:0; border-radius:5px; background:transparent; color:var(--text); font-size:12px; text-align:left; white-space:nowrap; }
  .period-select-option:hover { background:#edf1f6; color:var(--text); }
  .period-select-option.active { background:var(--accent); color:#fff; font-weight:700; }
  :root:is([data-theme="dark"],[data-theme="gray"]) .period-select-menu { box-shadow:0 12px 28px rgba(0,0,0,.45); }
  :root:is([data-theme="dark"],[data-theme="gray"]) .period-select-option:hover { background:var(--theme-hover-bg,#1c2b42); }
  :root:is([data-theme="dark"],[data-theme="gray"]) .period-select-option.active { background:#2563eb; color:#fff; }
  .period-custom-toggle { min-width:30px !important; width:30px; padding:6px 5px !important; font-size:15px !important; line-height:1; }
  .period-custom-current { min-width:38px !important; padding:6px 7px !important; color:var(--accent) !important; background:rgba(37,99,235,.1) !important; font-weight:700 !important; }
  .period-custom-menu { position:absolute; top:calc(100% + 6px); left:0; z-index:20; width:218px; max-height:min(72vh,480px); overflow:auto; padding:7px; border:1px solid var(--line); border-radius:9px; background:var(--panel); box-shadow:0 12px 30px rgba(15,23,42,.22); }
  .period-custom-menu.hidden { display:none !important; }
  .period-custom-group + .period-custom-group { margin-top:5px; padding-top:5px; border-top:1px solid var(--line); }
  .period-custom-group-title { padding:2px 7px 4px; color:var(--muted); font-size:11px; line-height:1.3; }
  .period-custom-option { display:flex; align-items:center; justify-content:space-between; width:100%; min-height:30px; padding:5px 8px; border:0; border-radius:6px; background:transparent; color:var(--text); font-size:12px; font-weight:500; text-align:left; }
  .period-custom-option:hover, .period-custom-option.active { background:#edf1f6; color:var(--text); }
  .period-custom-option.active { font-weight:700; }
  .period-custom-option:disabled { color:var(--muted); opacity:.55; cursor:not-allowed; }
  .period-custom-option:disabled:hover { background:transparent; }
  .period-custom-option-mark { color:var(--accent); font-size:11px; }
  .period-custom-note { padding:7px 7px 3px; border-top:1px solid var(--line); color:var(--muted); font-size:10px; line-height:1.45; }
  :root:is([data-theme="dark"],[data-theme="gray"]) .period-custom-menu { box-shadow:0 12px 30px rgba(0,0,0,.45); }
  :root:is([data-theme="dark"],[data-theme="gray"]) .period-custom-option:hover, :root:is([data-theme="dark"],[data-theme="gray"]) .period-custom-option.active { background:var(--theme-hover-bg,#1c2b42); }
  @media(max-width:1100px){ .chart-layout { grid-template-columns:38px minmax(0,1fr) 14px var(--market-side-width,280px); } }
  @media(max-width:900px){ .market-workspace.chart-open { grid-template-columns:1fr; } .workspace-side-resizer, .chart-side-resizer { display:none; } .chart-layout { grid-template-columns:38px minmax(0,1fr); } }
  .chart-symbol-search { width:min(220px,24vw); min-width:160px; }
  .chart-symbol-search input { padding-right:56px; }
  .chart-symbol-search > span { position:absolute; top:50%; right:9px; transform:translateY(-50%); padding-left:7px; border-left:1px solid var(--line); background:var(--panel); }
  @media(max-width:620px){ .chart-symbol-search { width:180px; min-width:150px; } }



    .watchlist-columns { display:grid; grid-template-columns:minmax(210px,2fr) 95px 82px 82px 92px 94px 88px 130px 112px 22px; align-items:center; gap:12px; padding:6px 10px 4px; color:var(--muted); font-size:11px; font-variant-numeric:tabular-nums; text-align:right; }
    .watchlist-columns span:first-child { text-align:left; }
    .watchlist-columns span:last-child { min-width:24px; }
    .watch-list-row { display:grid; grid-template-columns:minmax(210px,2fr) 95px 82px 82px 92px 94px 88px 130px 112px 22px; align-items:center; gap:12px; min-height:60px; padding:9px 10px; }
    .watch-list-main { min-width:0; }
    .watch-list-metric { min-width:0; overflow:hidden; text-align:right; font-variant-numeric:tabular-nums; text-overflow:ellipsis; white-space:nowrap; }
    .watch-list-metric strong,.watch-list-metric em { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    .watch-list-metric strong { color:var(--text); font-size:13px; font-weight:700; }
    .watch-list-metric em { font-style:normal; font-size:12px; }
    .watch-list-row .watch-remove { justify-self:end; }
    .watchlist-panel.collapsed .watchlist-columns { display:none; }
    /* GodView 品牌图标：使用主题色承接图片边缘，避免切换主题时出现突兀底色。 */
    .brand-mark { width:54px; height:40px; background:var(--panel2); border:0; border-radius:6px; box-shadow:none; }
    .brand-mark img { object-fit:contain; object-position:center; image-rendering:auto; mix-blend-mode:normal; filter:none; transform:none; transform-origin:center; }
    :root:is([data-theme="dark"],[data-theme="gray"]) .brand-mark { background:var(--panel2); }
    :root[data-theme="light"] .brand-mark { background:var(--panel2); }
    :root[data-theme="light"] .brand-mark img { mix-blend-mode:normal; }
    @media(max-width:900px){ .watchlist-panel { overflow-x:auto; } .watchlist-columns,.watch-list-row { min-width:960px; } }
  


    .watch-search-dialog { position:fixed; top:50%; left:50%; z-index:75; width:min(520px,calc(100vw - 28px)); max-height:calc(100vh - 40px); padding:14px; border:1px solid var(--line); border-radius:12px; background:var(--panel); box-shadow:0 18px 48px rgba(15,23,42,.28); transform:translate(-50%,-50%); }
    .watch-search-dialog.hidden { display:none !important; }
    .watch-search-dialog.is-floating { transform:none; right:auto; }
    .watch-search-dialog.dragging { cursor:grabbing; box-shadow:0 20px 52px rgba(15,23,42,.35); }
    .watch-search-heading { position:relative; display:flex; align-items:center; gap:10px; margin-bottom:10px; padding-right:32px; color:var(--text); font-size:15px; font-weight:700; cursor:grab; user-select:none; }
    .watch-search-dialog.dragging .watch-search-heading { cursor:grabbing; }
    .watch-search-close { position:absolute; top:-5px; right:-4px; width:26px; height:26px; padding:0; border:0; border-radius:6px; background:transparent; color:var(--muted); font-size:18px; line-height:1; }
    .watch-search-close:hover { background:rgba(127,143,166,.14); color:var(--text); }
    .watch-search-hint { margin:-4px 0 8px; color:var(--muted); font-size:11px; }
    .watch-search-input { width:100%; min-height:36px; padding:8px 10px; border:1px solid var(--line); border-radius:7px; background:var(--panel2); color:var(--text); font-size:13px; outline:none; }
    .watch-search-input:focus { border-color:var(--accent); box-shadow:0 0 0 2px rgba(37,99,235,.12); }
    .watch-search-results { display:grid; gap:4px; max-height:min(430px,calc(100vh - 190px)); overflow:auto; margin-top:10px; padding-right:2px; }
    .watch-search-option { display:flex; align-items:center; justify-content:space-between; gap:12px; width:100%; min-height:48px; padding:7px 9px; border:1px solid transparent; border-radius:7px; background:var(--panel2); color:var(--text); text-align:left; cursor:pointer; }
    .watch-search-option:hover { border-color:var(--accent); background:rgba(37,99,235,.08); }
    .watch-search-option:disabled { cursor:default; opacity:.68; }
    .watch-search-option:disabled:hover { border-color:transparent; background:var(--panel2); }
    .watch-search-option-main { min-width:0; }
    .watch-search-option-main b,.watch-search-option-main small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    .watch-search-option-main b { color:var(--text); font-size:12px; }
    .watch-search-option-main small { margin-top:2px; color:var(--accent); font-size:11px; }
    .watch-search-option-meta { flex:0 0 auto; text-align:right; font-size:11px; font-variant-numeric:tabular-nums; }
    .watch-search-option-meta strong { display:block; color:var(--text); font-size:12px; }
    .watch-search-option-meta em { display:block; font-style:normal; }
    .watch-search-empty { padding:22px 10px; color:var(--muted); font-size:12px; text-align:center; }
    :root:is([data-theme="dark"],[data-theme="gray"]) .watch-search-dialog { box-shadow:0 20px 52px rgba(0,0,0,.5); }
    :root:is([data-theme="dark"],[data-theme="gray"]) .watch-search-option:hover { background:var(--theme-selection-soft,rgba(105,167,255,.12)); }
    @media(max-width:540px){ .watch-search-dialog { width:calc(100vw - 20px); } }
  


    .market-workspace.chart-open #contractListPanel { display:grid; gap:12px; align-content:start; min-width:0; background:transparent; border:0; box-shadow:none; }
    .market-workspace.chart-open #contractListPanel > .panel { min-width:0; margin:0; }
    .market-workspace.chart-open #contractListPanel > .panel-title { display:none !important; }
    .watch-groups-card { margin:0; box-sizing:border-box; }
    .watch-group-heading { cursor:pointer; }
    .watch-group-name-editor { min-width:0; flex:1 1 auto; width:80px; padding:4px 5px; border:1px solid var(--accent); border-radius:4px; background:var(--panel2); color:var(--text); font:inherit; font-size:11px; font-weight:700; outline:none; }
    .contract-list-card { overflow:hidden; }
    .contract-list-card .contract-list { max-height:calc(100vh - 180px); }
    .price-alert-heading.popup-drag-handle::after { float:none; order:2; margin-left:auto; }
    .price-alert-heading .price-alert-close { order:3; margin-left:4px; }
    .action-confirm-heading.popup-drag-handle::after { float:none; order:2; margin-left:auto; }
    .action-confirm-heading .action-confirm-close { order:3; margin-left:4px; }
    .action-confirm-dialog { position:fixed; top:50%; left:50%; z-index:90; width:min(360px,calc(100vw - 30px)); padding:14px; border:1px solid var(--line); border-radius:10px; background:var(--panel); box-shadow:0 16px 42px rgba(15,23,42,.28); opacity:0; transform:translate(-50%,-46%); pointer-events:none; transition:.16s; }
    .action-confirm-dialog.show { opacity:1; transform:translate(-50%,-50%); pointer-events:auto; }
    .action-confirm-dialog.is-floating.show { transform:none; }
    .action-confirm-heading { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:10px; color:var(--text); font-size:13px; font-weight:700; }
    .action-confirm-close { width:24px; height:24px; padding:0; border:0; border-radius:5px; background:transparent; color:var(--muted); font-size:18px; line-height:1; }
    .action-confirm-close:hover { background:rgba(127,143,166,.15); color:var(--text); }
    .action-confirm-message { margin:0; color:var(--muted); font-size:12px; line-height:1.6; }
    .action-confirm-actions { display:flex; justify-content:flex-end; gap:7px; margin-top:16px; }
    .action-confirm-actions button { min-width:62px; padding:6px 12px; border:1px solid var(--line); border-radius:6px; background:var(--panel2); color:var(--text); font-size:12px; cursor:pointer; }
    .action-confirm-actions button:hover { border-color:var(--accent); color:var(--accent); }
    .action-confirm-actions button.danger { border-color:var(--up); background:var(--up); color:#fff; }
    .action-confirm-actions button.danger:hover { filter:brightness(.94); }
    :root:is([data-theme="dark"],[data-theme="gray"]) .action-confirm-dialog { box-shadow:0 18px 48px rgba(0,0,0,.58); }
    .contract-list-variety { display:flex; align-items:center; gap:4px; min-height:27px; padding:5px 12px 4px 25px; border-bottom:1px solid var(--line); background:rgba(37,99,235,.025); color:var(--text); font-size:11px; font-weight:700; cursor:pointer; user-select:none; }
    .contract-list-variety:hover { background:rgba(37,99,235,.08); }
    .contract-list-variety .exchange-toggle-icon { display:inline-block; width:12px; color:var(--accent); font-size:10px; }
    .variety-label { display:inline-flex; align-items:baseline; gap:8px; }
    .variety-name { color:var(--muted); font-weight:500; }
    .contract-list-variety .variety-count { margin-left:5px; color:var(--muted); font-weight:500; }
    .variety-group-row td { padding:7px 14px 7px 28px; border-bottom:1px solid var(--line); background:rgba(37,99,235,.025); color:var(--text); text-align:left; font-size:11px; font-weight:700; cursor:pointer; user-select:none; }
    .variety-group-row:hover td { background:rgba(37,99,235,.08); }
    .variety-group-row .exchange-toggle-icon { display:inline-block; width:13px; color:var(--accent); font-size:10px; }
    .variety-group-row .variety-count { margin-left:6px; color:var(--muted); font-weight:500; }
    :root:is([data-theme="dark"],[data-theme="gray"]) .contract-list-variety, :root:is([data-theme="dark"],[data-theme="gray"]) .variety-group-row td { background:var(--theme-subgroup-bg,rgba(105,167,255,.045)); }
    :root:is([data-theme="dark"],[data-theme="gray"]) .contract-list-variety:hover, :root:is([data-theme="dark"],[data-theme="gray"]) .variety-group-row:hover td { background:var(--theme-selection-soft,rgba(105,167,255,.12)); }
    .volatility-view { min-height:calc(100vh - 112px); padding:18px; box-sizing:border-box; }
    .volatility-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin-bottom:16px; }
    .volatility-heading h2 { margin:4px 0 5px; color:var(--text); font-size:18px; }
    .volatility-heading p { margin:0; color:var(--muted); font-size:12px; }
    .volatility-kicker { color:var(--accent); font-size:11px; font-weight:700; }
    .volatility-badge { flex:0 0 auto; padding:5px 9px; border:1px solid var(--line); border-radius:6px; color:var(--muted); background:var(--panel2); font-size:11px; }
    .volatility-grid { display:grid; grid-template-columns:minmax(440px,1.15fr) minmax(360px,.85fr); gap:14px; align-items:start; }
    .volatility-card { min-width:0; padding:16px; border:1px solid var(--line); border-radius:10px; background:var(--panel); box-shadow:0 7px 20px rgba(15,23,42,.06); }
    .volatility-card h3 { margin:0 0 13px; color:var(--text); font-size:13px; }
    .volatility-form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px 12px; }
    .volatility-field { display:grid; gap:5px; min-width:0; }
    .volatility-field span { color:var(--muted); font-size:11px; }
    .volatility-field input, .volatility-field select { width:100%; min-width:0; box-sizing:border-box; padding:8px 9px; border:1px solid var(--line); border-radius:6px; outline:none; background:var(--panel2); color:var(--text); font:inherit; font-size:12px; }
    .volatility-field input:focus, .volatility-field select:focus { border-color:var(--accent); box-shadow:0 0 0 2px rgba(37,99,235,.14); }
    .volatility-actions { display:flex; align-items:center; gap:8px; margin-top:15px; }
    .volatility-actions button { padding:8px 14px; border:1px solid var(--line); border-radius:6px; background:var(--panel2); color:var(--text); font:inherit; font-size:12px; cursor:pointer; }
    .volatility-actions button.primary { border-color:var(--accent); background:var(--accent); color:#fff; }
    .volatility-actions button:hover { border-color:var(--accent); }
    .volatility-hint { margin:12px 0 0; color:var(--muted); font-size:11px; line-height:1.6; }
    .volatility-result-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; }
    .volatility-result { min-width:0; padding:10px; border:1px solid var(--line); border-radius:7px; background:var(--panel2); }
    .volatility-result span { display:block; margin-bottom:4px; color:var(--muted); font-size:11px; }
    .volatility-result strong { display:block; overflow:hidden; color:var(--text); font-size:16px; text-overflow:ellipsis; white-space:nowrap; }
    .volatility-result strong.accent { color:var(--accent); }
    .volatility-result strong.up { color:var(--up); }
    .volatility-result strong.down { color:var(--down); }
    .volatility-formula { margin-top:12px; padding:9px 10px; border-left:3px solid var(--accent); border-radius:4px; background:rgba(37,99,235,.06); color:var(--muted); font-size:11px; line-height:1.7; }
    .volatility-table-card { margin-top:14px; }
    .volatility-table { width:100%; border-collapse:collapse; font-size:11px; }
    .volatility-table th, .volatility-table td { padding:9px 10px; border-bottom:1px solid var(--line); text-align:left; white-space:nowrap; }
    .option-market-card { margin-top:14px; }
    .option-market-toolbar { display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin:-3px 0 12px; }
    .option-market-toolbar input, .option-market-toolbar select, .option-market-toolbar button { min-width:150px; padding:7px 9px; border:1px solid var(--line); border-radius:6px; outline:none; background:var(--panel2); color:var(--text); font:inherit; font-size:11px; }
    .option-market-toolbar button { min-width:90px; cursor:pointer; }
    .option-market-toolbar input:focus, .option-market-toolbar select:focus { border-color:var(--accent); }
    .option-market-status { margin-left:auto; color:var(--muted); font-size:11px; }
    .tdx-minute-controls { margin-top:10px; padding-top:8px; border-top:1px solid var(--line); color:var(--muted); font-size:12px; }
    .tdx-minute-controls button { margin:0 6px 4px 0; border:1px solid var(--line); border-radius:5px; background:var(--panel2); color:var(--text); padding:6px 9px; cursor:pointer; }
    .tdx-minute-controls button:disabled { opacity:.5; cursor:default; }
    .option-market-scroll { max-height:430px; overflow:auto; border:1px solid var(--line); border-radius:7px; }
    .option-market-table { width:100%; border-collapse:collapse; font-size:11px; }
    .option-market-table th { position:sticky; top:0; z-index:1; background:var(--panel2); color:var(--muted); font-weight:600; }
    .option-market-table th, .option-market-table td { padding:8px 9px; border-bottom:1px solid var(--line); text-align:left; white-space:nowrap; }
    .option-market-table tbody tr { cursor:pointer; }
    .option-market-table tbody tr:hover { background:rgba(37,99,235,.08); }
    .option-market-table td strong { color:var(--text); }
    .option-market-table td small { display:block; margin-top:2px; color:var(--muted); }
    .option-market-empty { padding:18px; color:var(--muted); text-align:center; }
    .volatility-atm-table tbody tr:not(.volatility-exchange-group-row) { cursor:default; }
    .volatility-atm-card .volatility-atm-scroll { overflow-x:hidden; }
    .volatility-atm-table { width:100%; min-width:0; table-layout:fixed; }
    .volatility-atm-table th:first-child,.volatility-atm-table td:first-child { width:auto; overflow:hidden; }
    .volatility-atm-table th:nth-child(2),.volatility-atm-table td:nth-child(2) { width:68px; text-align:right; white-space:nowrap; }
    .volatility-atm-table th:nth-child(3),.volatility-atm-table td:nth-child(3) { width:48px; text-align:right; white-space:nowrap; }
    #volatilityAtmPanel .volatility-atm-table th,#volatilityAtmPanel .volatility-atm-table td { box-sizing:border-box; padding:8px 6px; }
    .volatility-atm-table td:first-child strong { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    .volatility-atm-table td:first-child .volatility-favorite-toggle { float:left; width:16px; margin:0 3px 0 0; padding:0; }
    .volatility-atm-table td:first-child small { max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    .volatility-exchange-group-row td { padding:0!important; background:var(--panel2); }
    .volatility-exchange-toggle { display:flex; width:100%; align-items:center; gap:8px; padding:8px 10px; border:0; border-bottom:1px solid var(--line); background:transparent; color:var(--text); font:inherit; text-align:left; cursor:pointer; user-select:none; }
    .volatility-exchange-toggle:hover { background:rgba(37,99,235,.08); }
    .volatility-exchange-caret { width:10px; color:var(--accent); }
    .volatility-exchange-count { margin-left:auto; color:var(--muted); font-size:10px; }
    .volatility-atm-table tbody tr.volatility-exchange-item[hidden] { display:none!important; }
    .option-market-card[data-tboard="1"] .option-market-toolbar input { flex:1 1 190px; }
    .option-market-card[data-tboard="1"] .option-market-toolbar select { min-width:132px; }
    .option-market-card[data-tboard="1"] .option-market-scroll { max-height:560px; }
    .option-market-card[data-tboard="1"] .option-market-table { min-width:2700px; table-layout:fixed; font-variant-numeric:tabular-nums; }
    .option-market-card[data-tboard="1"] .option-market-table th,
    .option-market-card[data-tboard="1"] .option-market-table td { box-sizing:border-box; padding:7px 8px; text-align:right; vertical-align:middle; overflow:hidden; text-overflow:ellipsis; }
    .option-market-card[data-tboard="1"] .option-market-table th { box-sizing:border-box; padding:7px 8px; vertical-align:middle; }
    .option-market-card[data-tboard="1"] .option-market-table thead tr:first-child th { position:sticky; top:0; z-index:3; height:30px; text-align:center; }
    .option-market-card[data-tboard="1"] .option-market-table thead tr:nth-child(2) th { position:sticky; top:30px; z-index:2; text-align:center; }
    .option-market-card[data-tboard="1"] .option-market-table th.call-group { color:#55c9b4; }
    .option-market-card[data-tboard="1"] .option-market-table th.put-group { color:#f27883; }
    .option-market-card[data-tboard="1"] .option-market-table th.strike-head,
    .option-market-card[data-tboard="1"] .option-market-table td.strike-cell { text-align:center; background:var(--panel2); font-weight:700; color:var(--text); }
    .option-market-card[data-tboard="1"] .option-market-table th.strike-head,
    .option-market-card[data-tboard="1"] .option-market-table td.strike-cell { width:86px; min-width:86px; white-space:nowrap; }
    .option-market-card[data-tboard="1"] .option-market-table td.quote-cell { cursor:default; }
    .option-market-card[data-tboard="1"] .option-market-table td.quote-cell:hover { background:rgba(37,99,235,.15); }
    .option-market-card[data-tboard="1"] .option-market-table td.call-cell { color:#55c9b4; }
    .option-market-card[data-tboard="1"] .option-market-table td.put-cell { color:#f27883; }
    .option-market-card[data-tboard="1"] .option-market-table td.last-cell { font-weight:700; color:var(--text); }
    .option-market-card[data-tboard="1"] .option-market-table td.selected-option { outline:1px solid var(--accent); outline-offset:-1px; background:rgba(37,99,235,.16); }
    .option-market-card[data-tboard="1"] .option-market-table td.change-up { color:#ef626d; }
    .option-market-card[data-tboard="1"] .option-market-table td.change-down { color:#25bd91; }
    .option-market-card[data-tboard="1"] .option-market-table tbody tr:hover td.strike-cell { background:rgba(37,99,235,.16); }
    .option-market-card[data-tboard="1"] .option-market-table td.quote-cell.moneyness-itm { background:var(--option-itm-bg,transparent)!important; }
    .option-market-card[data-tboard="1"] .option-market-table td.quote-cell.moneyness-otm { background:var(--option-otm-bg,transparent)!important; }
    .option-market-card[data-tboard="1"] .option-market-table td.quote-cell.max-position-contract { background:var(--option-max_position-bg,rgba(168,85,247,.28))!important; font-weight:700; }
    .option-market-card[data-tboard="1"] .option-market-table tbody tr.last-option-quote td.quote-cell { opacity:.66; }
    .option-market-card[data-tboard="1"] .option-market-table td.strike-cell.atm-strike { background:var(--option-atm-bg,#facc15)!important; color:#493500!important; }
    .option-market-card[data-tboard="1"] .option-market-table td.strike-cell { display:table-cell; }
    .option-expiry-reference-controls { display:none !important; }
    .option-expiry-reference-controls label { display:inline-flex; align-items:center; gap:6px; color:var(--muted); font-size:11px; }
    .option-expiry-reference-controls select,.option-expiry-reference-controls button { min-width:76px; padding:6px 9px; border:1px solid var(--line); border-radius:5px; background:var(--panel); color:var(--text); font:inherit; font-size:11px; cursor:pointer; }
    .option-expiry-reference-controls button:hover { border-color:var(--accent); color:var(--accent); }
    .option-expiry-tabs { display:flex; align-items:stretch; gap:8px; overflow-x:auto; margin:0 0 10px; padding:0 2px; border-bottom:1px solid var(--line); scrollbar-width:thin; }
    .option-expiry-tab { flex:0 0 auto; display:inline-flex; align-items:center; gap:7px; padding:8px 10px 9px; border:0; border-bottom:2px solid transparent; background:transparent; color:var(--muted); font:inherit; font-size:11px; white-space:nowrap; cursor:pointer; }
    .option-expiry-tab:hover,.option-expiry-tab.active { color:var(--accent); border-bottom-color:var(--accent); }
    .option-expiry-tab-count { padding:2px 6px; border-radius:10px; background:var(--panel2); color:var(--muted); font-size:10px; font-variant-numeric:tabular-nums; }
    .option-expiry-tab.active .option-expiry-tab-count { background:rgba(37,99,235,.14); color:var(--accent); }
    .option-market-card[data-tboard="1"] #optionMarketExpiry { display:none; }
    .option-market-card[data-tboard="1"] .option-market-toolbar { display:none; }
    .option-market-card[data-tboard="1"] { position:relative; }
    .option-tboard-actions { display:flex; justify-content:flex-end; align-items:center; gap:6px; min-height:34px; padding:3px 11px 3px 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line); background:var(--panel2); }
    .option-tboard-actions #optionMarketStatus { flex:1; min-width:0; padding-left:10px; color:var(--muted); font-size:11px; }
    .option-tboard-collapse-toggle,.option-tboard-columns-toggle,.volatility-atm-toggle { display:inline-flex; align-items:center; justify-content:center; min-width:44px; height:26px; box-sizing:border-box; border:1px solid var(--line); border-radius:5px; background:var(--panel2); color:var(--muted); padding:4px 10px; font:inherit; font-size:11px; font-weight:500; line-height:1.2; white-space:nowrap; cursor:pointer; }
    .option-tboard-collapse-toggle:hover,.option-tboard-columns-toggle:hover,.option-tboard-columns-toggle[aria-expanded="true"],.volatility-atm-toggle:hover { color:var(--accent); border-color:var(--accent); }
    .option-market-card.option-tboard-collapsed .option-market-scroll { display:none; }
    .option-expiry-refresh-icon { position:static; display:inline-flex; flex:0 0 30px; align-items:center; justify-content:center; width:30px; height:30px; padding:0; border:1px solid var(--line); border-radius:6px; background:var(--panel2); color:var(--muted); font:inherit; font-size:18px; line-height:1; cursor:pointer; }
    .option-expiry-refresh-icon:hover { border-color:var(--accent); color:var(--accent); }
    .option-expiry-refresh-icon:disabled { cursor:wait; opacity:.72; }
    .option-expiry-refresh-icon.is-refreshing { animation:option-expiry-refresh-spin .8s linear infinite; color:var(--accent); }
    @keyframes option-expiry-refresh-spin { from { transform:rotate(0deg); } to { transform:rotate(360deg); } }
    .option-expiry-settings-icon { position:static; display:inline-flex; flex:0 0 30px; align-items:center; justify-content:center; width:30px; height:30px; padding:0; border:1px solid var(--line); border-radius:6px; background:var(--panel2); color:var(--muted); font:inherit; font-size:16px; line-height:1; cursor:pointer; }
    .option-expiry-settings-icon:hover,.option-expiry-settings-icon[aria-expanded="true"] { border-color:var(--accent); color:var(--accent); }
    .option-expiry-reference { margin:0 0 10px; overflow:hidden; border:1px solid var(--line); border-radius:7px; background:var(--panel2); }
    .option-expiry-reference-heading { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:6px 10px; border-bottom:1px solid var(--line); color:var(--text); font-size:11px; font-weight:700; }
    .option-expiry-reference-heading-actions { display:flex; flex:0 0 auto; align-items:center; gap:8px; }
    .option-expiry-reference-heading strong { color:var(--text); font-size:12px; }
    .option-expiry-reference-heading small { color:var(--muted); font-size:10px; font-weight:400; }
    .option-expiry-reference-body { display:flex; flex-wrap:wrap; align-items:stretch; }
    .option-expiry-reference-body > div { flex:1 1 auto; min-width:0; max-width:100%; padding:8px 9px; border-right:1px solid var(--line); }
    .option-expiry-reference-body > div:last-child { border-right:0; }
    .option-expiry-reference-body span,.option-expiry-reference-body strong { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    .option-expiry-reference-body span { color:var(--muted); font-size:10px; }
    .option-expiry-reference-body strong { margin-top:3px; color:var(--text); font-size:12px; font-variant-numeric:tabular-nums; }
    .option-expiry-reference-body strong.accent { color:var(--accent); }
    .option-expiry-reference-body strong.up { color:var(--up); }
    .option-expiry-reference-body strong.down { color:var(--down); }
    .option-reference-collapsed .option-expiry-reference-body { display:none; }
    @media(max-width:900px){ .option-expiry-reference-body > div { flex:1 1 106px; min-width:106px; } .option-expiry-reference-body > div:nth-child(4n) { border-right:0; } }
    @media(max-width:560px){ .option-expiry-reference-body > div { flex-basis:110px; } .option-expiry-reference-body > div:nth-child(4n) { border-right:1px solid var(--line); } .option-expiry-reference-body > div:nth-child(2n) { border-right:0; } }
    .option-strike-heading-button { border:0; padding:3px 5px; border-radius:4px; background:transparent; color:inherit; font:inherit; font-weight:inherit; cursor:pointer; }
    .option-strike-heading-button:hover,.option-strike-heading-button[aria-expanded="true"] { background:rgba(37,99,235,.16); }
    .option-moneyness-settings,.option-strike-range-popover,.option-tboard-columns-popover { position:fixed; z-index:1500; width:300px; min-width:260px; max-width:calc(100vw - 20px); box-sizing:border-box; padding:11px; border:1px solid var(--line); border-radius:8px; background:var(--panel); color:var(--text); box-shadow:0 12px 34px rgba(0,0,0,.35); font-size:11px; }
    .option-moneyness-settings[hidden],.option-strike-range-popover[hidden],.option-tboard-columns-popover[hidden] { display:none!important; }
    .option-moneyness-settings h4,.option-strike-range-popover h4,.option-tboard-columns-popover h4 { margin:0 0 9px; font-size:12px; }
    .option-tboard-columns-hint { margin:0 0 9px; color:var(--muted); line-height:1.5; }
    .option-tboard-columns-actions { display:flex; gap:6px; margin-bottom:8px; }
    .option-tboard-columns-actions button { flex:1; padding:6px 7px; border:1px solid var(--line); border-radius:5px; background:var(--panel2); color:var(--text); font:inherit; cursor:pointer; }
    .option-tboard-columns-actions button:hover { border-color:var(--accent); color:var(--accent); }
    .option-tboard-columns-list { display:grid; gap:4px; max-height:430px; overflow:auto; padding-right:2px; }
    .option-tboard-column-item { display:flex; align-items:center; justify-content:space-between; gap:6px; padding:4px 5px; border:1px solid transparent; border-radius:5px; }
    .option-tboard-column-item:hover { border-color:var(--line); background:var(--panel2); }
    .option-tboard-column-item label { display:flex; min-width:0; flex:1; align-items:center; gap:7px; color:var(--text); cursor:pointer; }
    .option-tboard-column-item label span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    .option-tboard-column-item input { accent-color:var(--accent); }
    .option-tboard-column-moves { display:flex; gap:2px; }
    .option-tboard-column-moves button { width:24px; height:23px; padding:0; border:1px solid var(--line); border-radius:4px; background:var(--panel); color:var(--muted); font:inherit; line-height:1; cursor:pointer; }
    .option-tboard-column-moves button:hover { border-color:var(--accent); color:var(--accent); }
    .option-color-setting { display:grid; grid-template-columns:54px 35px minmax(70px,1fr) 35px; align-items:center; gap:7px; margin:7px 0; }
    .option-color-setting input[type="color"] { width:32px; height:23px; padding:1px; border:1px solid var(--line); border-radius:4px; background:var(--panel2); }
    .option-color-setting input[type="range"],.option-strike-range-popover input[type="range"] { min-width:0; width:100%; accent-color:var(--accent); }
    .option-opacity-value { color:var(--muted); text-align:right; font-variant-numeric:tabular-nums; }
    .option-strike-range-presets { display:flex; gap:6px; margin:8px 0; }
    .option-strike-range-presets button { flex:1; padding:6px; border:1px solid var(--line); border-radius:5px; background:var(--panel2); color:var(--text); cursor:pointer; }
    .option-strike-range-presets button.active { border-color:var(--accent); color:var(--accent); }
    .option-strike-range-caption { display:flex; justify-content:space-between; color:var(--muted); }
    .option-module-layout { display:grid; grid-template-columns:minmax(220px,var(--option-favorites-width,280px)) 8px minmax(0,1fr); gap:14px; align-items:start; margin-top:14px; }
    .option-left-stack { grid-column:1; grid-row:1; display:grid; gap:14px; align-content:start; min-width:0; max-width:100%; position:sticky; top:12px; overflow:hidden; }
    .option-left-stack > .option-favorites-card,.option-left-stack > .option-contract-directory-card { min-width:0; margin:0; }
    .option-left-stack > .volatility-atm-card { min-width:0; width:100%; margin:0; box-sizing:border-box; }
    .option-contract-directory-card { box-sizing:border-box; overflow:hidden; max-width:100%; }
    .option-contract-directory-heading { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:8px; }
    .option-contract-directory-heading strong { color:var(--text); font-size:12px; }
    .option-contract-directory-heading small { color:var(--muted); font-size:10px; }
    .option-directory-expiry-filter { display:inline-flex; align-items:center; gap:5px; margin-left:auto; color:var(--muted); font-size:10px; white-space:nowrap; }
    .option-directory-expiry-filter select { min-width:72px; padding:3px 5px; border:1px solid var(--line); border-radius:5px; background:var(--panel2); color:var(--text); font:inherit; font-size:10px; }
    .option-contract-directory-list { display:grid; gap:5px; width:100%; max-width:100%; max-height:calc(100vh - 250px); overflow:auto; padding-right:2px; box-sizing:border-box; }
    .option-contract-directory-group { border:1px solid var(--line); border-radius:6px; background:var(--panel2); overflow:hidden; }
    .option-contract-directory-exchange { display:flex; align-items:center; gap:7px; width:100%; padding:8px 9px; border:0; background:transparent; color:var(--text); font:inherit; font-size:11px; text-align:left; cursor:pointer; }
    .option-contract-directory-exchange:hover { background:rgba(37,99,235,.08); }
    .option-contract-directory-exchange > span:first-child { flex:1; font-weight:700; }
    .option-contract-directory-exchange small { color:var(--muted); font-size:10px; }
    .option-contract-directory-caret { color:var(--accent); font-size:12px; }
    .option-contract-directory-items { display:grid; gap:3px; padding:0 5px 5px; }
    .option-contract-directory-group.is-collapsed .option-contract-directory-items { display:none; }
    .option-contract-directory-contract { display:flex; align-items:center; gap:7px; width:100%; padding:7px 8px; border:1px solid transparent; border-radius:5px; background:transparent; color:var(--text); font:inherit; font-size:10px; text-align:left; cursor:pointer; }
    .option-contract-directory-contract:hover,.option-contract-directory-contract.is-active { border-color:var(--accent); background:rgba(37,99,235,.12); }
    .option-contract-directory-contract > span:first-child { min-width:0; flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    .option-contract-directory-contract small { color:var(--muted); white-space:nowrap; }
    .option-contract-directory-empty { padding:10px 4px; color:var(--muted); font-size:11px; }
    .option-module-layout > .option-market-card { min-width:0; margin:0; }
    #optionResearchRight { grid-column:3; grid-row:1; min-width:0; display:flex; flex-direction:column; gap:16px; }
    #optionResearchRight > .option-market-card { margin:0; min-width:0; }
    #optionVolatilityWorkspace { margin:0; min-width:0; padding:16px; }
    .option-vol-chart-toolbar { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
    .option-vol-chart-controls { display:flex; gap:6px; flex-wrap:wrap; align-items:center; }
    .option-vol-compare-label { display:flex; align-items:center; gap:4px; font-size:12px; white-space:nowrap; color:var(--text); }
    .option-vol-chart-controls button,.option-vol-chart-controls select { background:var(--panel2); color:var(--text); border:1px solid var(--line); border-radius:5px; padding:5px 9px; }
    #optionVolChartStatus { color:var(--muted); font-size:12px; margin:10px 0; }
    #optionVolChartCanvas { width:100%; height:clamp(420px,58vh,760px); }
    .saved-volatility-favorites { margin-top:12px; border-top:1px solid var(--line); padding-top:8px; }
    .saved-volatility-favorites h4 { margin:0 0 8px; font-size:12px; color:var(--text); }
    .saved-volatility-favorites h4 small { float:right; color:var(--muted); font-weight:normal; }
    .saved-volatility-favorites .watch-group-item { cursor:pointer; }
    #optionVolatilityWorkspace.is-collapsed #optionVolChartCanvas,
    #optionVolatilityWorkspace.is-collapsed #optionVolChartStatus,
    #optionVolatilityWorkspace.is-collapsed .option-vol-chart-controls > :not(#optionVolChartCollapse) { display:none; }
    @media(max-width:900px){ #optionResearchRight { grid-column:1; grid-row:auto; } }
    .option-module-layout .instrument-favorites-columns { grid-template-columns:1fr; }
    .option-favorites-resizer { grid-column:2; grid-row:1; position:relative; z-index:4; align-self:stretch; min-height:160px; margin:0 -7px; cursor:col-resize; touch-action:none; }
    .option-favorites-resizer::before { content:""; position:absolute; top:0; bottom:0; left:50%; width:1px; background:var(--line); transition:background .15s,width .15s; }
    .option-favorites-resizer:hover::before,.option-favorites-resizer:focus-visible::before,.option-favorites-resizer.is-dragging::before { width:3px; background:var(--accent); }
    body.option-favorites-resizing { cursor:col-resize; user-select:none; }
    @media(max-width:900px){ .option-module-layout { grid-template-columns:1fr; } .option-left-stack { grid-column:1; grid-row:auto; position:static; } .option-module-layout .instrument-favorites-columns { grid-template-columns:repeat(2,minmax(0,1fr)); } .option-favorites-resizer { display:none; } }
    @media(max-width:560px){ .option-module-layout .instrument-favorites-columns { grid-template-columns:1fr; } }
    .instrument-chart-popup { resize:both; min-width:min(360px,calc(100vw - 20px)); min-height:min(300px,calc(100vh - 20px)); max-width:calc(100vw - 20px); max-height:calc(100vh - 20px); }
    @media (max-width:900px) { .volatility-grid { grid-template-columns:1fr; } .option-market-status { margin-left:0; width:100%; } }
    .volatility-table th { color:var(--muted); font-weight:600; }
    .volatility-table td { color:var(--text); }
    .volatility-empty { padding:18px 0; color:var(--muted); text-align:center; }
    @media(max-width:900px){ .volatility-view { padding:12px; } .volatility-grid { grid-template-columns:1fr; } }
    @media(max-width:900px){ .market-workspace.chart-open #contractListPanel { display:grid; gap:10px; } }



  .logs-toggle { display:grid; place-items:center; flex:0 0 auto; width:32px; height:30px; margin-left:4px; padding:0; border:1px solid var(--line); border-radius:8px; background:var(--panel2); color:var(--text); cursor:pointer; }
  .logs-toggle svg { width:17px; height:17px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
  .logs-toggle:hover { border-color:var(--accent); background:#edf1f6; }
  :root:is([data-theme="dark"],[data-theme="gray"]) .logs-toggle:hover { background:var(--theme-hover-bg,#1c2b42); }
  .app-nav .theme-switch { flex:0 0 32px; width:32px; height:32px; margin-left:8px; }
  .app-nav .theme-toggle, .app-nav #pageRefresh, .app-nav #logsToggle { display:grid; place-items:center; box-sizing:border-box; flex:0 0 32px; width:32px; height:32px; margin:0; padding:0; border:1px solid var(--line); border-radius:8px; background:var(--panel2); color:var(--text); line-height:1; cursor:pointer; }
  .app-nav .theme-toggle { font-size:19px; }
  .app-nav #pageRefresh { font-size:16px; }
  .app-nav #logsToggle svg { width:16px; height:16px; }
  .app-nav #pageRefresh:hover { border-color:var(--accent); background:#edf1f6; }
  :root:is([data-theme="dark"],[data-theme="gray"]) .app-nav #pageRefresh:hover { background:var(--theme-hover-bg,#1c2b42); }
  .logs-dialog-backdrop { position:fixed; inset:0; z-index:80; display:grid; place-items:center; padding:18px; background:rgba(5,12,24,.48); }
  .logs-dialog-backdrop.hidden { display:none !important; }
  .logs-dialog { display:flex; flex-direction:column; width:min(960px,calc(100vw - 30px)); height:min(680px,calc(100vh - 36px)); overflow:hidden; border:1px solid var(--line); border-radius:12px; background:var(--panel); color:var(--text); box-shadow:0 18px 54px rgba(15,23,42,.3); }
  .logs-dialog-head { display:flex; align-items:center; gap:10px; min-height:44px; padding:0 12px; border-bottom:1px solid var(--line); }
  .logs-dialog-head strong { font-size:13px; }
  .logs-dialog-head small { color:var(--muted); font-size:11px; }
  .logs-dialog-spacer { flex:1; }
  .logs-dialog-head button { min-width:30px; height:28px; padding:3px 8px; border:1px solid var(--line); border-radius:6px; background:var(--panel2); color:var(--text); cursor:pointer; }
  .logs-dialog-head button:hover { border-color:var(--accent); }
  .logs-dialog-body { flex:1; min-height:0; margin:0; padding:10px; overflow:auto; background:#0b1220; color:#d6e2f1; font:11px/1.55 Consolas,'Cascadia Mono',monospace; white-space:pre-wrap; word-break:break-word; }
  :root[data-theme="light"] .logs-dialog-body { background:#f7f9fc; color:#25334a; }
  .site-footer { margin:0; padding:0 clamp(14px,2vw,28px) 16px; }
  html[data-view-restoring="true"] .site-footer { visibility:hidden; }
  .footer-about { position:static; flex:0 0 auto; margin-left:auto; padding:4px 8px; border:1px solid var(--line); border-radius:8px; background:var(--panel); color:var(--muted); font:inherit; cursor:pointer; }
  .footer-about:hover { border-color:var(--line); color:var(--text); background:var(--panel2); }
  .about-dialog-backdrop { position:fixed; inset:0; z-index:81; display:grid; place-items:center; padding:18px; background:rgba(5,12,24,.48); }
  .about-dialog-backdrop.hidden { display:none !important; }
  .about-dialog { width:min(520px,calc(100vw - 30px)); overflow:hidden; border:1px solid var(--line); border-radius:12px; background:var(--panel); color:var(--text); box-shadow:0 18px 54px rgba(15,23,42,.3); }
  .about-dialog-head { display:flex; align-items:center; min-height:46px; padding:0 12px; border-bottom:1px solid var(--line); }
  .about-dialog-head strong { font-size:13px; }
  .about-dialog-head button { min-width:30px; height:28px; margin-left:auto; padding:3px 8px; border:1px solid var(--line); border-radius:6px; background:var(--panel2); color:var(--text); font-size:18px; cursor:pointer; }
  .about-dialog-head button:hover { border-color:var(--accent); }
  .about-dialog-body { padding:16px; color:var(--muted); font-size:13px; line-height:1.65; }
  .about-dialog-body p { margin:0 0 12px; }
  .about-library-credit { padding:12px; border:1px solid var(--line); border-radius:8px; background:var(--panel2); }
  .about-library-credit strong { display:block; margin-bottom:4px; color:var(--text); }
  .about-library-credit p { margin:0 0 6px; }
  .about-library-credit a { color:var(--accent); }



#dataInterfacesView .data-interface-row{display:grid;grid-template-columns:minmax(0,1fr);padding:16px;gap:10px;overflow:hidden}
#dataInterfacesView .data-interface-row>*{grid-column:1;grid-row:auto;min-width:0;max-width:100%}
#dataInterfacesView .data-interface-metric{justify-content:flex-start;flex-wrap:wrap}
#dataInterfacesView .data-interface-message{white-space:normal;overflow-wrap:anywhere;max-height:64px;overflow:auto}
#dataInterfacesView .data-interface-endpoint{white-space:normal;overflow-wrap:anywhere}
#dataInterfacesView .data-interface-login{width:100%}
.ths-interface-config{display:grid;grid-template-columns:minmax(180px,1fr) minmax(180px,1fr) auto minmax(160px,auto);align-items:end;gap:8px;width:100%;padding:10px 0;border-top:1px solid var(--line)}
.ths-interface-config label{display:flex;flex-direction:column;gap:5px;color:var(--muted);font-size:11px}
.ths-interface-config input{box-sizing:border-box;width:100%;min-width:0;padding:8px 9px;border:1px solid var(--line);border-radius:7px;background:var(--panel2);color:var(--text);font:inherit;font-size:12px}
.ths-interface-config input:focus{outline:2px solid color-mix(in srgb,var(--accent) 24%,transparent);border-color:var(--accent)}
.ths-interface-config button{min-height:34px;padding:7px 11px;border:1px solid var(--accent);border-radius:7px;background:var(--accent);color:#fff;font:inherit;font-size:12px;cursor:pointer;white-space:nowrap}
.ths-interface-config button:disabled{opacity:.65;cursor:wait}
.ths-interface-config small{align-self:center;color:var(--muted);font-size:11px}
@media(max-width:760px){.ths-interface-config{grid-template-columns:1fr 1fr}.ths-interface-config small{grid-column:1/-1}}
@media(max-width:560px){.ths-interface-config{grid-template-columns:1fr}.ths-interface-config small{grid-column:auto}}
.trade-detail-panel [data-trade-detail-body]{height:340px;overflow:auto;contain:layout paint}
.ranking-scroll td.up{color:var(--up)}.ranking-scroll td.down{color:var(--down)}



  .draw-utility-wrap { position:relative; flex:0 0 auto; }
  .chart-tools .draw-utility-toggle { display:grid; place-items:center; width:28px; height:28px; padding:0; border:0; border-radius:5px; background:transparent; color:#7b8490; cursor:pointer; }
  #drawMagnetToggle svg { width:19px; height:19px; }
  .chart-tools .draw-utility-toggle:hover,.chart-tools .draw-utility-toggle.active { background:rgba(105,167,255,.1); color:var(--text); }
  .draw-utility-toggle svg,.draw-utility-option svg { width:17px; height:17px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
  .draw-utility-menu { position:absolute; top:0; left:34px; z-index:30; width:200px; min-width:200px; padding:6px; border:1px solid var(--line); border-radius:8px; background:var(--panel); box-shadow:0 10px 24px rgba(15,23,42,.22); }
  .draw-utility-menu.hidden { display:none !important; }
  .draw-utility-menu-title { padding:3px 8px 6px; color:var(--muted); font-size:11px; }
  .draw-history-wrap { position:relative; flex:0 0 auto; }
  .draw-history-menu { top:auto; bottom:0; width:228px; min-width:228px; }
  .draw-history-option { display:flex; align-items:center; gap:9px; width:100%; min-height:40px; padding:6px 8px; border:0; border-radius:5px; background:transparent; color:var(--text); text-align:left; cursor:pointer; }
  .chart-tools .draw-history-option { display:flex !important; width:100% !important; height:auto !important; min-height:40px; padding:6px 8px !important; font-size:12px; white-space:nowrap; }
  .draw-history-option:hover { background:rgba(105,167,255,.1); }
  .draw-history-option > svg { flex:0 0 17px; width:17px; height:17px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
  .draw-history-copy { display:flex; flex:1; flex-direction:column; gap:1px; min-width:0; }
  .draw-history-copy small { color:var(--muted); font-size:10px; font-weight:400; }
  .draw-history-option:disabled { opacity:.42; cursor:default; }
  .draw-history-option:disabled:hover { background:transparent; }
  .draw-history-clear { margin-top:5px; border-top:1px solid var(--line) !important; color:var(--up) !important; }
  .draw-utility-option { display:flex; align-items:center; gap:9px; width:100%; min-height:34px; padding:6px 8px; border:0; border-radius:5px; background:transparent; color:var(--text); font-size:12px; text-align:left; cursor:pointer; }
  .chart-tools .draw-utility-option { display:flex !important; width:100% !important; min-width:0; max-width:none; height:auto !important; min-height:34px; padding:6px 8px !important; box-sizing:border-box; font-size:12px; line-height:1.35; white-space:nowrap; }
  .draw-utility-option > svg { flex:0 0 17px; }
  .chart-tools .draw-utility-option:hover,.chart-tools .draw-utility-option.active { background:rgba(105,167,255,.1); color:var(--text); }
  .draw-utility-option > span:nth-child(2) { flex:1; min-width:0; white-space:nowrap; }
  .draw-utility-option .utility-check { display:inline-flex; flex:0 0 16px; align-items:center; justify-content:center; width:16px; height:16px; border:1px solid var(--line); border-radius:3px; background:transparent; color:transparent; font-size:11px; font-weight:800; line-height:1; }
  .draw-utility-option.active .utility-check { border-color:var(--accent); background:var(--accent); color:#fff; }
  .draw-utility-divider { height:1px; margin:5px 2px; background:var(--line); }
  .draw-utility-switch { position:relative; flex:0 0 30px; width:30px; height:17px; border-radius:10px; background:#64748b; transition:background .16s; }
  .draw-utility-switch::after { content:""; position:absolute; top:2px; left:2px; width:13px; height:13px; border-radius:50%; background:#fff; transition:transform .16s; }
  .draw-utility-option[aria-pressed="true"] .draw-utility-switch { background:var(--accent); }
  .draw-utility-option[aria-pressed="true"] .draw-utility-switch::after { transform:translateX(13px); }
  .chart-stage.indicators-hidden #chartWindowResizer,.chart-stage.indicators-hidden #subChartWindows { display:none !important; }
  .chart-stage.indicators-hidden #volumeProfileCanvas { visibility:hidden !important; }
  .chart-stage.drawings-hidden #drawingToolbar { display:none !important; }
  #chart.indicators-hidden #maLegend,#chart.indicators-hidden .formula-legend { display:none !important; }
  .chart-stage.multi-window.indicators-hidden { display:block; }
  .chart-stage.multi-window.indicators-hidden #priceChart { width:100%; height:100%; min-height:0; flex:none; }
  :root:is([data-theme="dark"],[data-theme="gray"]) .draw-utility-menu { box-shadow:0 10px 24px rgba(0,0,0,.42); }
  :root:is([data-theme="dark"],[data-theme="gray"]) .draw-utility-option:hover,:root:is([data-theme="dark"],[data-theme="gray"]) .draw-utility-option.active { background:var(--theme-hover-bg,#1c2b42); }
  :root:is([data-theme="dark"],[data-theme="gray"]) .draw-history-option:hover { background:var(--theme-hover-bg,#1c2b42); }
  :root:is([data-theme="dark"],[data-theme="gray"]) .draw-history-clear { border-top-color:var(--line) !important; }



  .market-clock { display:inline-flex; flex:0 0 70px; align-items:center; justify-content:center; margin-left:7px; color:var(--text); font-size:13px; font-weight:700; font-variant-numeric:tabular-nums; letter-spacing:.15px; white-space:nowrap; }
  .chart-stage-info .chart-info-dismiss { flex:0 0 auto; margin:-3px -3px -3px -7px; padding:0 3px; border:0; border-radius:3px; background:transparent; color:var(--up); font-size:14px; font-weight:700; line-height:1; cursor:pointer; }
  .chart-stage-info .chart-info-dismiss:hover { background:rgba(239,68,68,.1); color:var(--up); }



  .strategy-view { min-height:calc(100vh - 112px); padding:18px; box-sizing:border-box; }
  .strategy-view .strategy-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin-bottom:16px; }
  .strategy-view .strategy-heading h2 { margin:4px 0 5px; color:var(--text); font-size:18px; }
  .strategy-view .strategy-heading p,.strategy-muted { margin:0; color:var(--muted); font-size:12px; }
  .strategy-grid { display:grid; grid-template-columns:minmax(350px,.86fr) minmax(440px,1.14fr); gap:14px; align-items:stretch; }
  .strategy-card { min-width:0; padding:15px; border:1px solid var(--line); border-radius:10px; background:var(--panel); box-shadow:0 7px 20px rgba(15,23,42,.06); }
  .strategy-card h3 { margin:0 0 13px; color:var(--text); font-size:13px; }
  .strategy-field-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
  .strategy-field { display:flex; min-width:0; flex-direction:column; gap:5px; color:var(--muted); font-size:11px; }
  .strategy-field input,.strategy-field select,.strategy-saved-select { width:100%; min-width:0; box-sizing:border-box; padding:8px 9px; border:1px solid var(--line); border-radius:7px; background:var(--panel2); color:var(--text); font:inherit; font-size:12px; }
  .strategy-span-2 { grid-column:1 / -1; }
  .strategy-saved-row { display:flex; align-items:center; gap:7px; }
  .strategy-saved-row { margin-bottom:12px; }
  .strategy-saved-row button { padding:7px 10px; font-size:11px; white-space:nowrap; }
  .strategy-backtest-history { margin:0 0 13px; padding:10px; border:1px solid var(--line); border-radius:8px; background:var(--panel2); }
  .strategy-backtest-history-head,.strategy-backtest-history-row,.strategy-backtest-snapshot-head { display:flex; align-items:center; justify-content:space-between; gap:8px; }
  .strategy-backtest-history-head { margin-bottom:8px; color:var(--text); font-size:11px; }
  .strategy-backtest-history-head span { color:var(--muted); font-size:10px; }
  .strategy-backtest-history-list { display:grid; grid-template-columns:minmax(0,1fr); gap:9px; max-height:min(72vh,780px); overflow:auto; padding:1px 5px 2px 1px; }
  .strategy-backtest-record { min-width:0; padding:11px 12px; border:1px solid var(--line); border-radius:8px; background:var(--panel); }
  .strategy-backtest-record-head { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
  .strategy-backtest-record-actions { display:flex; flex:0 0 auto; align-items:center; gap:6px; }
  .strategy-backtest-record-actions button { flex:0 0 auto; padding:6px 9px; font-size:10px; white-space:nowrap; }
  .strategy-backtest-record-open-code { color:var(--accent); }
  .strategy-backtest-record-title { display:flex; min-width:0; align-items:center; flex-wrap:wrap; gap:7px; }
  .strategy-backtest-record-title strong { min-width:0; overflow:hidden; color:var(--text); font-size:12px; text-overflow:ellipsis; white-space:nowrap; }
  .strategy-backtest-record-time,.strategy-backtest-record-meta { color:var(--muted); font-size:10px; font-variant-numeric:tabular-nums; }
  .strategy-backtest-record-badge { padding:2px 6px; border-radius:10px; background:rgba(59,130,246,.14); color:var(--accent); font-size:9px; white-space:nowrap; }
  .strategy-backtest-record-open { flex:0 0 auto; }
  .strategy-backtest-record-meta { display:flex; flex-wrap:wrap; gap:5px 13px; margin:7px 0 9px; }
  .strategy-backtest-record-metrics { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:6px; }
  .strategy-backtest-record-metric { min-width:0; padding:6px 7px; border:1px solid var(--line); border-radius:6px; background:var(--panel2); }
  .strategy-backtest-record-metric span { display:block; color:var(--muted); font-size:9px; }
  .strategy-backtest-record-metric strong { display:block; margin-top:3px; overflow:hidden; color:var(--text); font-size:11px; text-overflow:ellipsis; white-space:nowrap; font-variant-numeric:tabular-nums; }
  .strategy-backtest-history-empty { padding:22px 12px; border:1px dashed var(--line); border-radius:8px; color:var(--muted); font-size:11px; text-align:center; }
  .strategy-backtest-history-row select { flex:1; }
  .strategy-backtest-history-row button,.strategy-backtest-snapshot-head button { padding:7px 9px; font-size:11px; white-space:nowrap; }
  .strategy-backtest-snapshot { margin-top:9px; padding-top:9px; border-top:1px solid var(--line); }
  .strategy-backtest-snapshot-head strong { min-width:0; overflow:hidden; color:var(--text); text-overflow:ellipsis; white-space:nowrap; }
  .strategy-backtest-snapshot .strategy-inline-note { margin:5px 0 8px; }
  .strategy-backtest-metrics { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:6px; margin-bottom:8px; }
  .strategy-backtest-metric { min-width:0; padding:7px; border:1px solid var(--line); border-radius:6px; background:var(--panel); }
  .strategy-backtest-metric span { display:block; color:var(--muted); font-size:9px; }
  .strategy-backtest-metric strong { display:block; margin-top:3px; overflow:hidden; color:var(--text); font-size:11px; text-overflow:ellipsis; white-space:nowrap; font-variant-numeric:tabular-nums; }
  .strategy-backtest-code { width:100%; min-height:180px; box-sizing:border-box; resize:vertical; padding:9px; border:1px solid var(--line); border-radius:6px; background:#0d1525; color:#d8e4f4; font:10px/1.5 Consolas,"Cascadia Code",monospace; white-space:pre; }
  .strategy-backtest-config { margin-top:7px; color:var(--muted); font-size:10px; }
  .strategy-backtest-config summary { cursor:pointer; }
  .strategy-backtest-config pre { max-height:180px; margin:7px 0 0; padding:8px; overflow:auto; border:1px solid var(--line); border-radius:6px; background:var(--panel); color:var(--text); font:10px/1.45 Consolas,"Cascadia Code",monospace; white-space:pre-wrap; word-break:break-word; }
  .strategy-backtest-code-panel { margin-top:13px; padding-top:11px; border-top:1px solid var(--line); }
  .strategy-backtest-code-panel .strategy-backtest-snapshot-head { margin-bottom:6px; }
  .strategy-backtest-code-panel .strategy-backtest-code { min-height:220px; }
  .strategy-inline-note { margin:10px 0 0; color:var(--muted); font-size:10px; line-height:1.55; }
  .strategy-code-card { display:flex; flex-direction:column; }
  .strategy-code-head { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:10px; }
  .strategy-code-head h3 { margin:0; }
  #strategyCodeOutput { flex:1; width:100%; min-height:390px; box-sizing:border-box; resize:vertical; padding:13px; border:1px solid var(--line); border-radius:8px; outline:none; background:#0d1525; color:#d8e4f4; font:12px/1.65 Consolas,"Cascadia Code",monospace; tab-size:4; white-space:pre; overflow:auto; }
  #strategyCodeOutput::-webkit-scrollbar { width:0 !important; }
  #strategyCodeOutput::-webkit-scrollbar:horizontal { height:10px; }
  .strategy-result-head { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-bottom:12px; }
  .strategy-result-head h3 { margin:0; }
  .strategy-metrics { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:9px; margin-bottom:12px; }
  .strategy-metric { min-width:0; padding:10px; border:1px solid var(--line); border-radius:7px; background:var(--panel2); }
  .strategy-metric span { display:block; color:var(--muted); font-size:10px; }
  .strategy-metric strong { display:block; overflow:hidden; margin-top:5px; color:var(--text); font-size:15px; text-overflow:ellipsis; white-space:nowrap; font-variant-numeric:tabular-nums; }
  #strategyEquityChart { display:block; width:100%; height:220px; border:1px solid var(--line); border-radius:8px; background:var(--panel2); }
  #strategyPriceChart { display:block; width:100%; height:240px; border:1px solid var(--line); border-radius:8px; background:var(--panel2); }
  .strategy-chart-title { margin:14px 0 7px; color:var(--muted); font-size:11px; font-weight:600; }
  .strategy-trades-wrap { max-height:290px; margin-top:12px; overflow:auto; border:1px solid var(--line); border-radius:8px; }
  .strategy-trades { width:100%; border-collapse:collapse; font-size:11px; }
  .strategy-trades th,.strategy-trades td { padding:8px 9px; border-bottom:1px solid var(--line); text-align:left; white-space:nowrap; }
  .strategy-trades th { position:sticky; top:0; background:var(--panel2); color:var(--muted); }
  .strategy-trades td:last-child,.strategy-trades th:last-child { text-align:right; }
  .strategy-positive { color:var(--down) !important; }
  .strategy-negative { color:var(--up) !important; }
  .strategy-empty { padding:26px 12px; color:var(--muted); text-align:center; font-size:12px; }
  @media(max-width:950px){.strategy-grid{grid-template-columns:1fr}.strategy-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}#strategyCodeOutput{min-height:300px}}
  @media(max-width:560px){.strategy-view{padding:10px}.strategy-field-grid{grid-template-columns:1fr}.strategy-span-2{grid-column:auto}.strategy-metrics,.strategy-backtest-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.strategy-heading{flex-direction:column}}



    .indicator-library-menu { position:fixed; inset:auto auto auto 50%; top:50%; left:50%; transform:translate(-50%,-50%); width:min(820px,calc(100vw - 32px)); height:min(680px,calc(100vh - 64px)); max-width:none; max-height:none; padding:0; overflow:hidden; z-index:80; border-radius:14px; background:var(--panel); box-shadow:0 22px 70px rgba(15,23,42,.3); }
    .indicator-library-menu.is-floating { transform:none; }
    .indicator-library-menu.hidden { display:none !important; }
    .indicator-library-header { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:18px 22px 12px; color:var(--text); font-size:19px; font-weight:800; cursor:grab; user-select:none; }
    .indicator-library-header.popup-drag-handle::after { content:none; }
    .indicator-library-menu.dragging .indicator-library-header { cursor:grabbing; }
    .indicator-library-header .indicator-library-close { flex:0 0 auto; width:28px; height:28px; padding:0; border:0; border-radius:6px; background:transparent; color:var(--text); font-size:24px; line-height:26px; cursor:pointer; }
    .indicator-library-header .indicator-library-close:hover { background:var(--panel2); }
    .indicator-library-search-wrap { display:flex; align-items:center; gap:9px; margin:0 20px 10px; padding:0 12px; height:40px; border:1px solid var(--line); border-radius:9px; background:var(--panel2); }
    .indicator-library-search-wrap > span { color:var(--muted); font-size:23px; line-height:1; transform:rotate(-20deg); }
    .indicator-library-search { width:100%; min-width:0; border:0; outline:0; background:transparent; color:var(--text); font-size:14px; }
    .indicator-library-search::placeholder { color:var(--muted); }
    .indicator-library-body { display:grid; grid-template-columns:190px minmax(0,1fr); min-height:0; height:calc(100% - 122px); border-top:1px solid var(--line); }
    .indicator-library-sidebar { min-width:0; padding:13px 10px 18px 20px; border-right:1px solid var(--line); overflow:auto; }
    .indicator-library-sidebar-title { padding:5px 10px 7px; color:var(--muted); font-size:11px; }
    .indicator-library-sidebar button { display:flex; align-items:center; gap:9px; width:100%; margin:2px 0; padding:9px 10px; border:0; border-radius:7px; background:transparent; color:var(--text); font-size:13px; text-align:left; cursor:pointer; }
    .indicator-library-sidebar button:hover,.indicator-library-sidebar button.active { background:var(--panel2); color:var(--accent); }
    .indicator-library-main { min-width:0; display:flex; flex-direction:column; overflow:hidden; }
    .indicator-library-tabs { display:flex; align-items:center; gap:8px; padding:14px 20px 9px; overflow:auto; }
    .indicator-library-tabs button { flex:0 0 auto; padding:6px 13px; border:0; border-radius:999px; background:var(--panel2); color:var(--text); font-size:12px; cursor:pointer; }
    .indicator-library-tabs button:hover,.indicator-library-tabs button.active { background:var(--accent); color:#fff; }
    .indicator-library-caption { padding:2px 20px 8px; color:var(--muted); font-size:11px; }
    .indicator-library-list { min-height:0; padding:0 20px 20px; overflow:auto; }
    .indicator-library-item { margin:0 0 8px; padding:6px 8px; border:1px solid transparent; border-radius:9px; background:transparent; }
    .indicator-library-item:hover { border-color:var(--line); background:var(--panel2); }
    .indicator-library-item.is-hidden { display:none !important; }
    .indicator-library-item > .indicator-option,.indicator-library-item > .indicator-control-row { margin:0; }
    .indicator-library-item > .indicator-subgroup { padding:0; border:0; background:transparent; }
    .indicator-library-item .indicator-menu-section { margin:5px 0 4px; color:var(--muted); font-size:11px; }
    .indicator-library-item .indicator-note { display:none; }
    .indicator-library-item .indicator-option { padding:7px 4px; }
    .indicator-library-item .indicator-option:hover { background:transparent; }
    .indicator-library-item .indicator-favorite { flex:0 0 auto; width:25px; height:25px; margin-left:auto; padding:0; border:0; border-radius:5px; background:transparent; color:var(--muted); font-size:19px; line-height:23px; cursor:pointer; }
    .indicator-library-item .indicator-favorite:hover,.indicator-library-item .indicator-favorite.active { color:#facc15; background:rgba(250,204,21,.16); }
    .indicator-library-item .indicator-favorite.active { font-size:17px; text-shadow:0 0 8px rgba(250,204,21,.45); }
    .indicator-library-option-row { display:flex; align-items:center; gap:4px; width:100%; }
    .indicator-library-option-row > .indicator-option { flex:1 1 auto; min-width:0; }
    .indicator-library-menu .indicator-control-row { display:flex; align-items:center; gap:5px; }
    .indicator-library-menu .indicator-control-row > .indicator-option { flex:1 1 auto; min-width:0; }
    .indicator-library-menu .indicator-param-toggle { flex:0 0 auto; }
    .indicator-library-menu .formula-params,.indicator-library-menu .ma-params,.indicator-library-menu .rsi-params,.indicator-library-menu .macd-params,.indicator-library-menu .trend-atr-params,.indicator-library-menu .wyckoff-params,.indicator-library-menu .amd-po3-params { margin:2px 4px 5px; border-radius:7px; background:var(--panel2); }
    .indicator-library-empty { padding:34px 12px; color:var(--muted); font-size:13px; text-align:center; }
    :root:is([data-theme="dark"],[data-theme="gray"]) .indicator-library-menu { box-shadow:0 22px 70px rgba(0,0,0,.52); }
  @media(max-width:680px){ .indicator-library-menu { width:calc(100vw - 18px); height:calc(100vh - 28px); } .indicator-library-body { grid-template-columns:128px minmax(0,1fr); } .indicator-library-sidebar { padding-left:8px; } .indicator-library-tabs,.indicator-library-list { padding-left:12px; padding-right:12px; } }
  @media(max-width:900px){ .market-workspace.chart-open #historyView { order:0; } .market-workspace.chart-open #liveView { order:1; } }
  
.history-empty-state {
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin: 8px 10px;
  padding: 9px 12px;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: var(--panel2);
  color: var(--muted);
  font-size: 12px;
  line-height: 1.5;
}
.history-empty-state button {
  flex: 0 0 auto;
  padding: 5px 12px;
  border: 1px solid var(--accent);
  border-radius: 5px;
  background: var(--accent);
  color: #fff;
  cursor: pointer;
}
.history-empty-state button:disabled { opacity: .65; cursor: wait; }

.market-module-tabs { width:100%; overflow-x:auto; scrollbar-width:thin; }
.market-module-tabs button { flex:0 0 auto; }
.market-analysis-view { min-width:0; padding:16px; }
.market-analysis-heading { display:flex; align-items:center; justify-content:space-between; gap:14px; margin-bottom:14px; }
.market-analysis-heading h2 { margin:3px 0; color:var(--text); font-size:20px; }
.market-analysis-heading p { max-width:850px; margin:4px 0 0; color:var(--muted); font-size:12px; line-height:1.6; }
.market-analysis-heading > span { flex:0 0 auto; color:var(--muted); font-size:11px; }
.market-analysis-controls { display:flex; flex-wrap:wrap; align-items:end; gap:9px; margin-bottom:13px; }
.market-analysis-controls label:not(.market-check) { display:flex; min-width:132px; flex-direction:column; gap:4px; color:var(--muted); font-size:11px; }
.market-analysis-controls select,.market-analysis-controls input:not([type="checkbox"]) { box-sizing:border-box; min-width:140px; height:32px; padding:0 9px; border:1px solid var(--line); border-radius:6px; background:var(--panel2); color:var(--text); }
.market-analysis-controls button,.market-analysis-heading > button { min-height:32px; padding:0 12px; }
.market-analysis-controls [aria-live="polite"] { flex:1 1 240px; min-width:180px; padding:7px 0; color:var(--muted); font-size:11px; }
.market-analysis-controls [aria-live="polite"].error { color:var(--down); }
.market-analysis-controls [aria-live="polite"].success { color:var(--accent); }
.market-analysis-controls .market-check { display:inline-flex; min-height:32px; align-items:center; gap:7px; padding:0 5px; color:var(--muted); font-size:11px; }
.market-analysis-controls .market-check input { accent-color:var(--accent); }
.market-metric-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; margin:8px 0 13px; }
.market-metric { min-width:0; padding:10px 12px; border:1px solid var(--line); border-radius:7px; background:var(--panel2); }
.market-metric span { display:block; color:var(--muted); font-size:10px; }
.market-metric strong { display:block; overflow:hidden; margin-top:5px; color:var(--text); font-size:15px; text-overflow:ellipsis; white-space:nowrap; font-variant-numeric:tabular-nums; }
.market-table-wrap { max-width:100%; max-height:480px; overflow:auto; border:1px solid var(--line); border-radius:8px; }
.market-data-table { width:100%; border-collapse:collapse; font-size:11px; }
.market-data-table th,.market-data-table td { padding:8px 10px; border-bottom:1px solid var(--line); text-align:left; white-space:nowrap; }
.market-data-table th { position:sticky; top:0; z-index:1; background:var(--panel2); color:var(--muted); font-weight:600; }
.market-data-table td.numeric { text-align:right; font-variant-numeric:tabular-nums; }
.market-data-table .positive { color:#ef4444; }
.market-data-table .negative { color:#10b981; }
.market-empty { padding:25px 12px !important; color:var(--muted); text-align:center !important; white-space:normal !important; }
.market-analysis-chart { width:100%; min-height:260px; overflow:hidden; border:1px solid var(--line); border-radius:8px; background:var(--panel); }
.market-analysis-chart svg { display:block; width:100%; height:260px; }
.market-chart-legend { display:flex; flex-wrap:wrap; gap:10px 16px; margin-top:10px; }
.market-chart-legend span { display:inline-flex; align-items:center; gap:6px; color:var(--muted); font-size:11px; }
.market-chart-legend i { width:14px; height:3px; border-radius:2px; background:var(--series-color); }
.market-source-status { display:flex; flex-wrap:wrap; gap:8px; margin:2px 0 10px; }
.market-source-pill { padding:5px 8px; border:1px solid var(--line); border-radius:6px; color:var(--muted); font-size:10px; }
.market-source-pill.bad { color:var(--down); }
.market-news-list { display:grid; gap:8px; }
.market-news-item { padding:11px 12px; border:1px solid var(--line); border-radius:8px; background:var(--panel); }
.market-news-title { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.market-news-title strong { color:var(--text); font-size:13px; line-height:1.5; }
.market-news-meta { display:flex; flex:0 0 auto; flex-wrap:wrap; justify-content:flex-end; gap:6px; color:var(--muted); font-size:10px; }
.market-news-summary { margin:7px 0; color:var(--muted); font-size:11px; line-height:1.6; white-space:pre-line; }
.market-news-tags { display:flex; flex-wrap:wrap; gap:5px; }
.market-news-tag { padding:3px 6px; border-radius:99px; background:var(--panel2); color:var(--muted); font-size:10px; }
.market-news-tag.bullish { color:#ef4444; }
.market-news-tag.bearish { color:#10b981; }
.market-news-tag.neutral { color:var(--muted); }
.market-impact-high { color:#f97316 !important; font-weight:700; }
@media(max-width:700px){ .market-analysis-view { padding:11px; } .market-analysis-heading { align-items:flex-start; flex-direction:column; } .market-metric-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .market-news-title { flex-direction:column; } .market-news-meta { justify-content:flex-start; } }

/* Local-first trading journal */
.trade-journal-view { padding:20px; }
.journal-heading,.journal-day-toolbar,.journal-calendar-toolbar,.journal-subhead,.journal-form-title,.journal-form-actions,.journal-heading-actions,.journal-day-actions,.journal-month-controls,.journal-date-range { display:flex; align-items:center; gap:10px; }
.journal-heading,.journal-day-toolbar,.journal-calendar-toolbar,.journal-subhead { justify-content:space-between; }
.journal-heading { margin-bottom:15px; }
.journal-heading h1,.journal-day-toolbar h2,.journal-subhead h2 { margin:3px 0; color:var(--text); }
.journal-heading h1 { font-size:22px; }
.journal-heading p,.journal-subhead p { margin:4px 0 0; color:var(--muted); font-size:11px; }
.journal-kicker { color:var(--accent); font-size:10px; font-weight:700; letter-spacing:.04em; }
.journal-muted { color:var(--muted); font-size:10px; }
.journal-tabs { display:flex; gap:7px; margin-bottom:12px; }
.journal-tabs button,.journal-heading-actions button,.journal-calendar-toolbar button,.journal-day-actions button,.journal-subhead button,.journal-form-actions button,.journal-position-form button,.journal-event-form button,.journal-date-range button { padding:7px 10px; border:1px solid var(--line); border-radius:7px; background:var(--panel2); color:var(--text); cursor:pointer; font-size:11px; }
.journal-tabs button.active { border-color:var(--accent); background:var(--accent); color:#fff; }
.journal-card { margin-bottom:12px; padding:14px; border:1px solid var(--line); border-radius:10px; background:var(--panel); }
.journal-calendar-card { width:100%; max-width:960px; min-width:0; padding:10px; }
.journal-calendar-toolbar { margin-bottom:8px; flex-wrap:wrap; }
.journal-month-controls { gap:7px; }
.journal-month-controls strong { min-width:90px; text-align:center; font-size:14px; }
.journal-calendar-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:4px; }
.journal-weekdays { margin-bottom:5px; color:var(--muted); font-size:10px; text-align:center; }
.journal-calendar-day,.journal-calendar-empty { min-width:0; min-height:56px; padding:5px; border:1px solid var(--line); border-radius:7px; background:var(--panel2); }
.journal-calendar-day { display:flex; flex-direction:column; align-items:stretch; gap:2px; color:var(--text); cursor:pointer; text-align:left; }
.journal-calendar-day:hover { border-color:var(--accent); }
.journal-calendar-day.selected { outline:2px solid var(--accent); outline-offset:-2px; }
.journal-calendar-day.is-today .journal-calendar-day-number { color:var(--accent); }
.journal-calendar-day.reviewed { background:color-mix(in srgb,var(--panel2) 88%,#22c55e 12%); }
.journal-calendar-day-number { display:flex; justify-content:space-between; gap:4px; font-size:11px; font-weight:700; }
.journal-calendar-day-number i { color:var(--muted); font-size:9px; font-style:normal; font-weight:400; }
.journal-calendar-day strong { overflow:hidden; min-height:13px; font-size:11px; text-overflow:ellipsis; }
.journal-calendar-day small { overflow:hidden; min-height:12px; color:var(--muted); font-size:9px; text-overflow:ellipsis; white-space:nowrap; }
.journal-day-toolbar { align-items:flex-start; padding-bottom:12px; border-bottom:1px solid var(--line); }
.journal-day-toolbar h2 { font-size:18px; }
.journal-day-actions { justify-content:flex-end; flex-wrap:wrap; }
.journal-upload-button { padding:7px 10px; border:1px solid var(--line); border-radius:7px; background:var(--panel2); color:var(--text); cursor:pointer; font-size:11px; }
.journal-detail-grid { display:grid; grid-template-columns:minmax(0,1.75fr) minmax(270px,.8fr); gap:12px; padding-top:12px; }
.journal-detail-main,.journal-review-column { display:grid; align-content:start; gap:12px; min-width:0; }
.journal-subcard { min-width:0; padding:12px; border:1px solid var(--line); border-radius:9px; background:var(--panel2); }
.journal-subhead { margin-bottom:10px; }
.journal-subhead h3 { margin:0; font-size:13px; }
.journal-table-scroll { max-width:100%; overflow:auto; }
.journal-table { width:100%; border-collapse:collapse; font-size:10px; }
.journal-table th,.journal-table td { padding:7px 8px; border-bottom:1px solid var(--line); text-align:left; white-space:nowrap; }
.journal-table th { color:var(--muted); font-weight:600; }
.journal-table td small { display:block; color:var(--muted); font-size:9px; }
.journal-table .positive,.journal-position .positive,.journal-calendar-day .positive { color:#ef4444; }
.journal-table .negative,.journal-position .negative,.journal-calendar-day .negative { color:#10b981; }
.journal-link { padding:0; border:0; background:none; color:var(--text); cursor:pointer; text-align:left; }
.journal-empty { padding:17px 9px; color:var(--muted); font-size:11px; text-align:center; }
.journal-position-list,.journal-event-list { display:grid; gap:8px; }
.journal-position,.journal-event { padding:9px; border:1px solid var(--line); border-radius:7px; background:var(--panel); }
.journal-position-main { display:flex; align-items:center; flex-wrap:wrap; gap:8px 12px; font-size:10px; }
.journal-position-main strong { font-size:11px; }
.journal-position-main strong small { color:var(--muted); font-size:9px; }
.journal-side { padding:2px 6px; border-radius:4px; font-size:9px; }
.journal-side.long { background:color-mix(in srgb,#ef4444 15%,transparent); color:#ef4444; }
.journal-side.short { background:color-mix(in srgb,#10b981 15%,transparent); color:#10b981; }
.journal-position details { margin-top:7px; color:var(--muted); font-size:10px; }
.journal-position details p { margin:5px 0; white-space:pre-wrap; }
.journal-row-actions { display:flex; justify-content:flex-end; gap:6px; }
.journal-row-actions button,.journal-attachment button { padding:4px 7px; border:1px solid var(--line); border-radius:5px; background:var(--panel2); color:var(--text); cursor:pointer; font-size:9px; }
.journal-row-actions .danger,.journal-event .danger,.journal-attachment .danger { color:var(--down); }
.journal-position-form,.journal-event-form { margin:10px 0; padding:11px; border:1px solid var(--line); border-radius:8px; background:var(--panel); }
.journal-form-title { justify-content:space-between; margin-bottom:9px; font-size:12px; }
.journal-form-title button { padding:2px 8px; font-size:16px; }
.journal-form-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; }
.journal-form-grid label,.journal-event-form label,.journal-prompt,.journal-date-range label { display:grid; gap:4px; color:var(--muted); font-size:10px; }
.journal-form-grid input,.journal-form-grid select,.journal-form-grid textarea,.journal-event-form input,.journal-event-form textarea,.journal-prompt textarea,.journal-prompt input,.journal-date-range input { width:100%; min-width:0; padding:7px 8px; border:1px solid var(--line); border-radius:6px; background:var(--panel2); color:var(--text); font:inherit; }
.journal-form-wide { grid-column:1/-1; }
.journal-reason-templates { display:flex; flex-wrap:wrap; gap:5px; }
.journal-reason-templates button { padding:4px 7px; font-size:9px; }
.journal-form-actions { justify-content:space-between; flex-wrap:wrap; margin-top:9px; }
.journal-form-actions .primary,.journal-save-review,.journal-date-range .primary { border-color:var(--accent); background:var(--accent); color:#fff; }
.journal-form-error { min-height:15px; margin-top:6px; color:var(--down); font-size:10px; }
.journal-event-form { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
.journal-event { display:grid; grid-template-columns:45px auto minmax(0,1fr) auto; align-items:start; gap:8px; }
.journal-event time { color:var(--muted); font-size:10px; }
.journal-event-type { padding:2px 5px; border-radius:4px; background:var(--panel2); color:var(--muted); font-size:9px; }
.journal-event-type.news { color:#8b5cf6; }.journal-event-type.macro { color:#f59e0b; }.journal-event-type.alert { color:#ef4444; }
.journal-event strong { font-size:11px; }.journal-event p { margin:4px 0; color:var(--muted); font-size:10px; white-space:pre-wrap; }.journal-event small { color:var(--muted); font-size:9px; }
.journal-attachments { display:flex; flex-wrap:wrap; gap:10px; }
.journal-attachment { width:min(220px,100%); margin:0; overflow:hidden; border:1px solid var(--line); border-radius:7px; background:var(--panel); }
.journal-attachment img { display:block; width:100%; max-height:150px; object-fit:contain; background:#0b1220; }
.journal-attachment figcaption { display:flex; align-items:center; justify-content:space-between; gap:5px; padding:6px; color:var(--muted); font-size:9px; }
.journal-prompt { margin-bottom:9px; color:var(--text); font-weight:600; }
.journal-prompt textarea,.journal-prompt input { color:var(--text); font-size:10px; font-weight:400; resize:vertical; }
.journal-save-review { width:100%; padding:8px; }
.journal-tip { padding:12px; border:1px dashed var(--line); border-radius:8px; color:var(--muted); font-size:10px; }
.journal-tip strong { color:var(--text); }.journal-tip p { margin:6px 0 0; line-height:1.6; }.journal-tip code { color:var(--accent); }
.journal-date-range { flex-wrap:wrap; justify-content:flex-end; }.journal-stats-metrics { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:8px; margin:12px 0; }.journal-stats-metrics article { padding:11px; border:1px solid var(--line); border-radius:7px; background:var(--panel2); }.journal-stats-metrics span,.journal-stats-metrics strong { display:block; }.journal-stats-metrics span { color:var(--muted); font-size:9px; }.journal-stats-metrics strong { margin-top:5px; font-size:15px; font-variant-numeric:tabular-nums; }
.journal-stat-groups { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }.journal-stat-group { min-width:0; padding:10px; border:1px solid var(--line); border-radius:8px; background:var(--panel2); }.journal-stat-group h3 { margin:2px 0 7px; font-size:12px; }
@media(max-width:900px) { .journal-detail-grid { grid-template-columns:1fr; }.journal-review-column { grid-template-columns:1fr; }.journal-stats-metrics { grid-template-columns:repeat(3,minmax(0,1fr)); } }
@media(max-width:600px) { .trade-journal-view { padding:10px; }.journal-heading,.journal-day-toolbar,.journal-calendar-toolbar { align-items:flex-start; flex-direction:column; }.journal-heading-actions { flex-wrap:wrap; }.journal-calendar-day,.journal-calendar-empty { min-height:52px; padding:4px; }.journal-calendar-day small { font-size:8px; }.journal-form-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }.journal-form-wide { grid-column:1/-1; }.journal-event-form { grid-template-columns:1fr 1fr; }.journal-stats-metrics { grid-template-columns:repeat(2,minmax(0,1fr)); }.journal-stat-groups { grid-template-columns:1fr; }.journal-event { grid-template-columns:36px auto minmax(0,1fr) auto; gap:5px; }.journal-date-range { justify-content:flex-start; } }
.custom-pane-controls { display:flex; flex:0 0 28px; align-items:center; gap:4px; padding:2px 6px; border-bottom:1px solid var(--line); background:var(--panel2); color:var(--muted); font-size:11px; }
.custom-pane-controls > span { margin-right:auto; white-space:nowrap; }
.custom-pane-controls button { border:1px solid var(--line); border-radius:4px; background:var(--panel); color:var(--text); font:inherit; padding:2px 5px; cursor:pointer; }
.custom-pane-controls button:hover { border-color:var(--accent); }
.custom-pane-controls button:disabled { opacity:.35; cursor:default; }
.history-catalog{margin-top:24px;padding-top:20px;border-top:1px solid var(--line)}
.history-catalog-heading,.history-catalog-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.history-catalog-heading h2{margin:0;font-size:18px}.history-catalog-heading p,.history-catalog-note{color:var(--muted);font-size:12px;line-height:1.6}
.history-catalog-toolbar{justify-content:flex-start;margin:16px 0 10px}.history-catalog-toolbar input{min-width:220px}.history-catalog-toolbar span{margin-left:auto;color:var(--muted);font-size:12px}
.history-catalog input,.history-catalog select,.history-catalog button{border:1px solid var(--line);background:var(--panel2);color:var(--text);border-radius:6px;padding:8px 10px;font:inherit;font-size:12px}
.history-catalog button{cursor:pointer}.history-catalog button:disabled{opacity:.5;cursor:wait}.history-catalog .cache-danger{color:var(--up);border-color:var(--up)}
.history-catalog-scroll{overflow:auto;max-height:560px;border:1px solid var(--line);border-radius:8px}.history-catalog table{width:100%;border-collapse:collapse;min-width:950px;font-size:12px}
.history-catalog th{position:sticky;top:0;background:var(--panel2);z-index:1;text-align:left;padding:12px}.history-catalog td{border-top:1px solid var(--line);padding:12px;vertical-align:top}.history-catalog td>small{display:block;color:var(--muted);margin-top:5px}
.history-catalog summary{cursor:pointer;color:var(--accent);white-space:nowrap}.history-cache-period{display:grid;gap:4px;padding:8px 0;border-bottom:1px solid var(--line)}.history-cache-period span,.history-cache-period small{font-size:11px;color:var(--muted)}
.history-cache-dialog{max-width:480px;border:1px solid var(--line);border-radius:12px;background:var(--panel);color:var(--text);padding:24px}.history-cache-dialog::backdrop{background:rgba(0,0,0,.5)}.history-cache-dialog p{line-height:1.7;font-size:13px}.history-cache-dialog>div{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}
.option-full-chart-workspace{min-width:0;padding:12px}
.option-full-chart-workspace #optionFullChart{display:block;width:100%;height:850px;min-height:550px;border:0;border-radius:8px;background:var(--panel);resize:vertical}
.option-full-chart-workspace.is-collapsed #optionFullChart,.option-full-chart-workspace.is-collapsed #optionVolChartStatus{display:none}
.option-full-chart-workspace #optionVolChartStatus{margin:8px 0;color:var(--muted);font-size:11px}
.option-chart-document,.option-chart-document body{height:100%;min-height:0;background:var(--panel)}
.option-chart-document .wrap{max-width:none;width:100%;margin:0;padding:0}
.option-chart-document #strategyView,.option-chart-document #futuresRankingView,.option-chart-document #futuresWorkspaceNav,.option-chart-document #conditionalStrategyView,.option-chart-document #tradingWorkspaceView,.option-chart-document #tradingCommunityView,.option-chart-document #tradeJournalView,.option-chart-document #agentView,.option-chart-document #marketWorkspace>:not(#historyView){display:none!important}
.option-chart-document #marketWorkspace:not(.chart-open){visibility:hidden}
.option-chart-document .app-nav,.option-chart-document footer,.option-chart-document #liveView,.option-chart-document #watchlistPanel,.option-chart-document #stockView,.option-chart-document #dataInterfacesView,.option-chart-document #volatilityView,.option-chart-document .workspace-side-resizer{display:none!important}
.option-chart-document #marketWorkspace.chart-open{display:block!important;margin:0}
.option-chart-document #historyView{width:100%;margin:0}
.option-chart-document #historyView>.panel{border:0;border-radius:0;box-shadow:none}
.option-chart-document #historyView>.panel>.panel-title{display:none}
.option-chart-document #historyView .chart-layout{min-height:500px}
@media(max-width:900px){.history-catalog-scroll{max-height:620px}.history-catalog table{min-width:0;display:block}.history-catalog thead{display:none}.history-catalog tbody{display:block}.history-catalog tr{display:grid;grid-template-columns:1fr 1fr;border-bottom:1px solid var(--line);padding:10px}.history-catalog td{display:block;border:0;padding:6px;min-width:0}.history-catalog td:nth-child(3),.history-catalog td:nth-child(5){grid-column:1/-1}.history-catalog td:nth-child(4)::before{content:'跨度：';color:var(--muted)}.history-catalog td:nth-child(6)::before{content:'占用：';color:var(--muted)}.history-catalog td:nth-child(7){text-align:right}.history-catalog-toolbar input{min-width:0;flex:1}.history-catalog-toolbar span{width:100%;margin:0}.history-catalog-heading h2{font-size:17px}}
/* Restore the saved module before revealing the initial default market content. */
html[data-view-restoring="true"] main { visibility:hidden; }
/* Keep a saved strategy workspace isolated from the quotes markup while the
   late strategy module finishes restoring. This prevents a market flash on
   refresh without affecting later in-page navigation. */
html[data-initial-view="strategy"] #marketWorkspace,
html[data-initial-view="strategy"] #stockView,
html[data-initial-view="strategy"] #dataInterfacesView,
html[data-initial-view="strategy"] #volatilityView { display:none !important; }
html[data-initial-view="strategy"] #strategyView { display:block !important; }
.stock-index-chart{padding:4px 7px;border:1px solid var(--line);border-radius:5px;background:var(--panel2);color:var(--muted);font:inherit;font-size:10px;cursor:pointer}.stock-index-chart:hover{border-color:var(--accent);color:var(--accent)}

/* Day theme: unify the header status and icon controls with the workspace buttons. */
:root[data-theme="light"] .app-nav #dataToggle,
:root[data-theme="light"] .app-nav #siteSettingsToggle,
:root[data-theme="light"] .app-nav #pageRefresh,
:root[data-theme="light"] .app-nav #logsToggle {
  border-color:#d9e2ed;
  background:#fff;
  color:#52647b;
  box-shadow:0 1px 3px rgba(23,42,69,.07);
  transition:background-color .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease;
}
:root[data-theme="light"] .app-nav #siteSettingsToggle { color:var(--text); }
:root[data-theme="light"] .app-nav #dataToggle[aria-expanded="true"],
:root[data-theme="light"] .app-nav #siteSettingsToggle:hover,
:root[data-theme="light"] .app-nav #pageRefresh:hover,
:root[data-theme="light"] .app-nav #logsToggle:hover {
  border-color:#9dbde1;
  background:#f1f7ff;
  color:#245f9e;
  box-shadow:0 2px 6px rgba(47,111,194,.12);
}
:root[data-theme="light"] .app-nav #siteSettingsToggle:focus-visible,
:root[data-theme="light"] .app-nav #pageRefresh:focus-visible,
:root[data-theme="light"] .app-nav #logsToggle:focus-visible,
:root[data-theme="light"] .app-nav #dataToggle:focus-visible {
  outline:2px solid rgba(47,111,194,.42);
  outline-offset:2px;
}
.nav-data-summary .nav-data-latency-label{margin-left:3px;color:var(--muted);font-size:10px}
.nav-data-summary strong{font-variant-numeric:tabular-nums}
/* The header is a compact status indicator; diagnostics go to the log. */
#navDataSummaryLatencyLabel,#navDataSummaryLatency,.connection-popover{display:none!important}
.app-nav #dataToggle:disabled{cursor:default;opacity:1;min-width:0}

.chart-adjustment-control{position:absolute;z-index:12;right:16px;bottom:8px;pointer-events:none}
.chart-stage.multi-window .chart-adjustment-control{bottom:calc(100% - var(--main-chart-height,54%) + 3px)}
.chart-stage.multi-chart-active .chart-adjustment-control,.chart-adjustment-control.hidden{display:none!important}
.chart-adjustment-button{min-width:54px;height:24px;padding:0 10px;border:1px solid var(--line);border-radius:6px;background:var(--theme-tooltip-bg,rgba(15,25,42,.94));color:var(--muted);font:inherit;font-size:11px;font-weight:600;line-height:1;box-shadow:0 2px 8px rgba(0,0,0,.18);cursor:pointer;pointer-events:auto;transition:background .15s,border-color .15s,color .15s}
.chart-adjustment-button:hover,.chart-adjustment-button.active{border-color:#4b91f1;background:rgba(35,89,157,.94);color:#fff}
.chart-adjustment-button:focus-visible{outline:2px solid rgba(75,145,241,.55);outline-offset:2px}
:root:not([data-theme="dark"],[data-theme="gray"]) .chart-adjustment-button{background:rgba(255,255,255,.96);color:#526176;box-shadow:0 2px 8px rgba(15,23,42,.14)}
:root:not([data-theme="dark"],[data-theme="gray"]) .chart-adjustment-button:hover,:root:not([data-theme="dark"],[data-theme="gray"]) .chart-adjustment-button.active{border-color:#3274ca;background:#eaf3ff;color:#174f97}

/* Neutral charcoal palette. Shared dark-surface rules keep their original fallback colors. */
:root[data-theme="gray"] {
  color-scheme:dark;
  --bg:#252628; --panel:#303234; --panel2:#292b2d; --line:#484b4f;
  --text:#f0f1f2; --muted:#b0b3b8; --up:#ff7c86; --down:#46d5ae; --accent:#8cb8ec;
  --theme-control-bg:#383b3e; --theme-hover-bg:#44484c; --theme-selected-bg:#3b4857;
  --theme-inset-bg:#292b2d; --theme-chart-bg:#292b2d; --theme-toolbar-bg:#303234; --theme-popover-bg:#34373a;
  --theme-border:#484b4f; --theme-border-strong:#61666c; --theme-scroll-thumb:#6a7076; --theme-scroll-hover:#899098;
  --theme-tool-text:#d8dde3; --theme-tool-accent:#aacdf5; --theme-tooltip-bg:rgba(48,50,52,.98); --theme-overlay-soft:rgba(48,50,52,.75); --theme-overlay-bg:rgba(48,50,52,.92);
  --theme-page-glow:rgba(255,255,255,.025); --theme-group-bg:rgba(255,255,255,.035);
  --theme-group-hover-bg:rgba(255,255,255,.07); --theme-subgroup-bg:rgba(255,255,255,.018); --theme-selection-soft:rgba(140,184,236,.12);
}
:root[data-theme="gray"] .logs-dialog-body,
:root[data-theme="gray"] .journal-attachment img,
:root[data-theme="gray"] .strategy-backtest-code,
:root[data-theme="gray"] #strategyCodeOutput { background:var(--panel2); color:var(--text); }
:root[data-theme="gray"] .side-quote-meta > span { background:var(--theme-control-bg); color:var(--text); }
:root[data-theme="gray"] .side-quote-meta #sideMainTag { background:var(--theme-selected-bg); color:var(--theme-tool-accent); }

/* Website appearance: the same controls apply to every module and embedded chart. */
html { font-size:calc(16px * var(--app-font-scale,1)); }
.site-settings-toggle svg { display:block; width:20px; height:20px; fill:none; stroke:currentColor; stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; }
.site-settings-dialog { width:min(440px,calc(100vw - 28px)); max-height:calc(100dvh - 32px); margin:auto; padding:0; overflow:auto; border:1px solid var(--line); border-radius:12px; background:var(--panel); color:var(--text); box-shadow:0 22px 70px rgba(0,0,0,.3); font-size:14px; }
.site-settings-dialog::backdrop { background:rgba(3,10,23,.48); backdrop-filter:blur(3px); }
.site-settings-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:17px 20px; border-bottom:1px solid var(--line); }
.site-settings-heading h2 { margin:0; font-size:17px; }
.site-settings-heading button { display:grid; place-items:center; width:30px; height:30px; padding:0; border:0; border-radius:6px; background:transparent; color:var(--muted); font-size:24px; line-height:1; }
.site-settings-heading button:hover { background:var(--panel2); color:var(--text); }
.site-settings-body { display:grid; gap:19px; padding:20px; }
.site-settings-themes { margin:0; padding:0; border:0; min-width:0; }
.site-settings-themes legend { margin-bottom:10px; padding:0; font-size:13px; color:var(--muted); }
.site-theme-options { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.site-theme-options label { position:relative; display:flex; align-items:center; flex-direction:column; gap:8px; padding:10px; border:1px solid var(--line); border-radius:8px; font-size:13px; cursor:pointer; }
.site-theme-options label:has(input:checked) { border-color:var(--accent); box-shadow:0 0 0 1px var(--accent); background:color-mix(in srgb,var(--accent) 8%,var(--panel)); }
.site-theme-options input { position:absolute; width:1px; height:1px; opacity:0; }
.site-theme-options label:has(input:focus-visible) { outline:2px solid var(--accent); outline-offset:3px; }
.site-theme-swatch { display:block; width:100%; height:37px; border:1px solid rgba(128,128,128,.3); border-radius:5px; background:linear-gradient(90deg,#eef1f6 25%,#fff 25%); }
.site-theme-swatch[data-palette="dark"] { background:linear-gradient(90deg,#0b1323 25%,#172237 25%); }
.site-theme-swatch[data-palette="gray"] { background:linear-gradient(90deg,#242628 25%,#3b3e41 25%); }
.site-settings-field { display:grid; grid-template-columns:minmax(85px,1fr) minmax(0,1.5fr); align-items:center; gap:12px; font-size:13px; }
.site-settings-field > span { color:var(--muted); }
.site-settings-field select { width:100%; min-width:0; padding:9px 10px; border:1px solid var(--line); border-radius:7px; background:var(--panel2); color:var(--text); font-size:13px; }
.site-settings-field select:focus-visible,.site-settings-actions button:focus-visible { outline:2px solid var(--accent); outline-offset:2px; }
.site-font-preview { display:grid; gap:7px; padding:14px; border:1px solid var(--line); border-radius:8px; background:var(--panel2); overflow-wrap:anywhere; }
.site-font-preview > span { color:var(--muted); font-size:11px; }
.site-font-preview strong { font-size:14px; }
.site-font-preview b { color:var(--up); font-size:23px; font-variant-numeric:tabular-nums; }
.site-font-preview em { font-size:13px; font-style:normal; }
.site-font-preview small { color:var(--muted); font-size:11px; }
.site-settings-hint { margin:0; color:var(--muted); font-size:11px; }
.site-settings-actions { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:14px 20px; border-top:1px solid var(--line); }
.site-settings-actions button { padding:8px 14px; border:1px solid var(--line); border-radius:7px; background:var(--panel2); color:var(--text); font-size:13px; }
.site-settings-actions button.primary { border-color:var(--accent); background:var(--accent); color:#fff; }
@media(max-width:420px) { .site-settings-body { padding:15px; } .site-settings-heading,.site-settings-actions { padding:14px 15px; } .site-settings-field { grid-template-columns:1fr; gap:7px; } }
.chart-news-dialog { width:min(1000px,calc(100vw - 28px)); max-height:85dvh; padding:0; border:1px solid var(--line); border-radius:12px; color:var(--text); background:var(--panel); box-shadow:0 18px 65px #0005; box-sizing:border-box; overflow:hidden; }
.chart-news-dialog[open] { display:flex; flex-direction:column; }
.chart-news-dialog::backdrop { background:#02061780; }
.chart-news-heading { display:flex; flex:none; justify-content:space-between; gap:12px; align-items:center; padding:14px 16px; border-bottom:1px solid var(--line); }
.chart-news-heading strong { display:block; font-size:15px; }.chart-news-heading small { display:block; margin-top:5px; font-size:11px; color:var(--muted); }
.chart-news-heading button { width:30px; height:30px; padding:0; border:1px solid var(--line); border-radius:7px; background:var(--panel2); color:var(--text); font-size:20px; cursor:pointer; }
.chart-news-body { max-height:calc(85dvh - 90px); min-height:0; overflow:auto; padding:12px; display:grid; grid-auto-rows:max-content; align-content:start; gap:10px; overscroll-behavior:contain; box-sizing:border-box; }
.chart-news-body .market-news-split { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); padding:0; overflow:hidden; align-items:stretch; }
.chart-news-body .market-news-meta { font-size:12px; line-height:1.6; }
.chart-news-body .market-news-summary { font-size:13px; line-height:1.85; }
@media(max-width:800px) { .chart-news-body .market-news-split { grid-template-columns:minmax(0,1fr); } }
.chart-news-body h3 { margin:0; font-size:14px; line-height:1.6; }.chart-news-body .market-news-meta { justify-content:flex-start; margin-top:6px; }.chart-news-body .market-news-summary { color:var(--text); overflow-wrap:anywhere; }

/* Compact navigation menu and shared conditional-strategy workspace. */
.strategy-nav,.trade-nav{display:flex;flex:0 0 auto;align-items:center}.strategy-nav>#strategyNavToggle,.trade-nav>#tradeNavToggle{display:inline-flex;align-items:center;gap:0}
.strategy-nav-menu,.trade-nav-menu{position:fixed;z-index:1200;box-sizing:border-box;padding:5px;border:1px solid color-mix(in srgb,var(--accent) 18%,var(--line));border-radius:11px;background:color-mix(in srgb,var(--panel) 94%,var(--bg));backdrop-filter:blur(14px) saturate(1.15);color:var(--text);box-shadow:0 18px 38px rgba(5,18,38,.24),0 4px 12px rgba(5,18,38,.12),inset 0 1px 0 rgba(255,255,255,.24);transform-origin:top left}.strategy-nav-menu[hidden],.trade-nav-menu[hidden]{display:none!important}.strategy-nav-menu>button,.trade-nav-menu>button{display:flex;align-items:center;gap:8px;width:100%;min-height:37px;padding:7px 9px;text-align:left;font-family:inherit;font-size:12px;font-weight:600;line-height:1.35;border:1px solid transparent;border-radius:7px;color:var(--text);cursor:pointer}.strategy-nav-menu>button>svg,.trade-nav-menu>button>svg{width:17px;height:17px;flex:0 0 auto;stroke:currentColor;stroke-width:1.6;fill:none;stroke-linecap:round;stroke-linejoin:round}.strategy-nav-menu>button+button,.trade-nav-menu>button+button{margin-top:2px}
@layer godview-controls{:root body .strategy-nav-menu>button,:root body .trade-nav-menu>button{background:transparent!important;box-shadow:none!important;border-color:transparent!important;color:var(--text)!important;transform:none!important}:root body .strategy-nav-menu>button:is(:hover,:focus-visible,[aria-current=page]),:root body .trade-nav-menu>button:is(:hover,:focus-visible,[aria-current=page]){background:color-mix(in srgb,var(--accent) 12%,var(--panel))!important;border-color:color-mix(in srgb,var(--accent) 30%,var(--line))!important;color:var(--accent)!important}}
.conditional-strategy-view{min-width:0;padding:14px}.conditional-strategy-heading{display:flex;align-items:center;gap:0;padding:0 0 4px;border-bottom:1px solid var(--line);margin-bottom:4px}.conditional-strategy-heading h2{font-size:17px;margin:0;white-space:nowrap}.conditional-strategy-heading nav{display:flex;gap:7px}.conditional-strategy-heading button{min-height:32px;padding:6px 13px;font-size:12px}.conditional-strategy-view [role=tabpanel][hidden]{display:none!important}.conditional-strategy-view #volatilityView{margin:0;padding:0;border:0;box-shadow:none;background:transparent}.conditional-strategy-view .os-toolbar>strong,.conditional-strategy-view .os-toolbar>[data-os=list]{display:none}.conditional-strategy-view .os-toolbar{display:none;padding-top:0;padding-bottom:0;margin-bottom:0}.conditional-strategy-view .os-filters{display:none}.conditional-strategy-view #conditionalEtfPanel{min-width:0}
@media(max-width:600px){.conditional-strategy-heading{gap:14px;flex-wrap:wrap}.conditional-strategy-heading h2{font-size:15px}.conditional-strategy-heading button{padding:5px 10px}.conditional-strategy-view .os-filters{margin-left:0}}

/* Keep the chart information rail scrollable without a visible scrollbar. */
.market-side{scrollbar-width:none;-ms-overflow-style:none}.market-side::-webkit-scrollbar{display:none;width:0;height:0}

/* The chart is mounted while history loads; this grid contains no price data. */
#priceChart.chart-awaiting-data { position:relative; }
#priceChart.chart-awaiting-data::before { content:""; position:absolute; inset:0 64px 26px 0; z-index:2; pointer-events:none; border-right:1px solid var(--line); border-bottom:1px solid var(--line); background-image:linear-gradient(to right,var(--line) 1px,transparent 1px),linear-gradient(to bottom,var(--line) 1px,transparent 1px); background-size:96px 64px; opacity:.5; }
#priceChart.chart-awaiting-data::after { content:"等待行情数据"; position:absolute; left:calc(50% - 32px); top:46%; z-index:2; transform:translate(-50%,-50%); pointer-events:none; padding:7px 12px; border:1px solid var(--line); border-radius:8px; background:var(--panel); color:var(--muted); font-size:13px; }

/* Paused providers remain configurable in the data page. */
#dataInterfacesView .data-interface-paused{border-style:dashed}
.data-interface-status.disabled{color:var(--muted)!important}
.data-interface-status.disabled i{background:var(--muted)}
