:root{--bg:#edf3f1;--panel:#fffefa;--text:#172635;--muted:#5d6d7d;--up:#b52f2f;--down:#16714b;--warn:#9f6500;--error:#9e2a2b;--line:#cfdee3;--brand:#0b5f78}
*{box-sizing:border-box}html,body{width:100%;min-height:100%}body{margin:0;font-family:"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:var(--text);background:var(--bg);overflow-x:hidden}
.wrap{width:100%;max-width:none;min-height:100vh;margin:0;padding:12px clamp(10px,2vw,24px)}body.auth-checking .wrap{visibility:hidden}.layout{display:grid;grid-template-columns:var(--sidebar-width, 320px) 12px minmax(0,1fr);gap:12px;align-items:start}.sidebar{position:sticky;top:12px;max-height:calc(100vh - 24px);overflow:auto}.sidebar-resize{position:sticky;top:12px;min-height:calc(100vh - 24px);cursor:col-resize;border-radius:8px;border:1px solid var(--line);background:var(--line);box-shadow:none}.sidebar-resize::before{content:"";display:block;width:100%;height:100%;border-left:1px solid rgba(13,79,135,.2);border-right:1px solid rgba(13,79,135,.2)}.sidebar-resize:hover{background:var(--bg)}.main{min-width:0}.header{display:flex;justify-content:space-between;align-items:end;gap:8px;flex-wrap:wrap}
.brand-block{display:flex;align-items:center;gap:14px}
.brand-logo{width:56px;height:56px;object-fit:contain;border-radius:8px;box-shadow:none;background:var(--panel);border:1px solid var(--line)}
h1{margin:0;font-size:22px;color:var(--brand)}.meta{font-size:12px;color:var(--muted);margin-top:4px}
.login-page{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;padding:24px;background:var(--bg);backdrop-filter:none}
.login-page[hidden]{display:none}.login-shell{width:min(420px,100%)}.login-card{border:1px solid var(--line);border-radius:8px;background:var(--panel);box-shadow:0 12px 28px rgba(21,55,83,.08);backdrop-filter:none;padding:24px;display:grid;gap:10px}.login-card-head{display:flex;align-items:center;gap:12px;margin-bottom:10px}.login-logo{width:48px;height:48px;object-fit:contain;border-radius:8px;background:var(--panel);border:1px solid var(--line);box-shadow:none}.login-card h2{margin:0;color:#153a5e;font-size:22px;line-height:1.15}.login-card label{font-size:12px;font-weight:850;color:#34516a}.login-card input{height:42px;border-radius:8px}.login-card button{height:42px;border-radius:8px;margin-top:4px}.login-status{min-height:20px;color:var(--muted);font-size:12px;line-height:1.5}.controls{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.panel{background:var(--panel);border:1px solid var(--line);border-radius:8px;margin-top:10px;overflow:hidden;box-shadow:0 1px 0 rgba(19,48,64,.04)}
.account-panel{margin-top:10px;border:1px solid var(--line);border-radius:8px;background:var(--panel);box-shadow:none;overflow:hidden}
.account-panel-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding:12px 14px;border-bottom:1px solid var(--line)}
.account-panel-title{font-size:14px;font-weight:850;color:#173a5f}
.account-panel-meta{margin-top:3px;font-size:12px;color:var(--muted)}
.account-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:12px;padding:12px}
.account-card{min-width:0;border:1px solid #d9e4ee;border-radius:8px;background:#fff;padding:12px}
.account-card-title{font-size:13px;font-weight:850;color:#25384a;margin-bottom:10px}
.account-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;align-items:center}
.account-form input,.account-form select,.account-form button{min-width:0;width:100%}
.account-ai-form{grid-template-columns:repeat(2,minmax(0,1fr))}
.account-ai-form button{grid-column:auto}
.account-check{display:flex;gap:6px;align-items:center;font-size:12px;color:var(--muted);font-weight:700}
.account-list{display:grid;gap:8px;margin-top:10px}
.account-user-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;border:1px solid #e1e9f1;border-radius:10px;padding:8px}
.account-user-name{font-weight:800;color:#1d3348;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.account-user-meta,.account-ai-status{font-size:12px;color:var(--muted);margin-top:5px}
.account-user-row.active{border-color:var(--brand);background:#f3f8fd}
.account-user-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.account-user-actions button{padding:5px 9px;font-size:12px}
.account-reset-password{width:118px;padding:5px 8px;font-size:12px}
.about-backdrop{position:fixed;inset:0;z-index:118;background:rgba(7,18,28,.42)}
.about-backdrop[hidden],.about-panel[hidden]{display:none!important}
.about-panel{position:fixed;z-index:119;top:clamp(16px,5vh,48px);left:50%;transform:translateX(-50%);width:min(980px,calc(100vw - 28px));max-height:calc(100vh - 36px);display:grid;grid-template-rows:auto minmax(0,1fr);border:1px solid var(--line);border-radius:10px;background:var(--panel);box-shadow:0 18px 48px rgba(13,31,45,.22);overflow:hidden}
.about-panel-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding:14px 16px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--brand) 4%,var(--panel))}
.about-panel-title{font-size:18px;font-weight:950;color:#173a5f}
.about-panel-subtitle{margin-top:3px;color:var(--muted);font-size:12px;line-height:1.45}
.about-body{min-height:0;overflow:auto;padding:14px 16px 18px;display:grid;gap:14px}
.about-hero{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(260px,.85fr);gap:12px;align-items:stretch}
.about-kicker{color:var(--brand);font-size:12px;font-weight:950;letter-spacing:.02em}
.about-hero p,.about-note p{margin:5px 0 0;color:#304255;font-size:13px;line-height:1.65}
.about-version-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.about-version-item,.about-feature-card,.about-release,.about-note{min-width:0;border:1px solid var(--line);border-radius:8px;background:color-mix(in srgb,var(--brand) 3%,var(--panel));padding:10px}
.about-version-item span{display:block;color:var(--muted);font-size:11px;font-weight:850}
.about-version-item strong{display:block;margin-top:4px;color:#173a5f;font-size:14px;overflow-wrap:anywhere}
.about-section{display:grid;gap:9px}
.about-section-title{font-size:14px;font-weight:950;color:#173a5f}
.about-feature-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}
.about-feature-card strong,.about-note strong{display:block;color:#173a5f;font-size:13px;font-weight:950}
.about-feature-card ul,.about-release ul{display:grid;gap:5px;margin:8px 0 0;padding:0;list-style:none}
.about-feature-card li,.about-release li{position:relative;padding-left:10px;color:#34475a;font-size:12px;line-height:1.5;overflow-wrap:anywhere}
.about-feature-card li::before,.about-release li::before{content:"";position:absolute;left:0;top:.72em;width:4px;height:4px;border-radius:999px;background:var(--brand)}
.about-release-list{display:grid;gap:8px}
.about-release{display:grid;grid-template-columns:150px minmax(0,1fr);gap:8px 12px}
.about-release-meta{display:grid;align-content:start;gap:3px}
.about-release-meta span{color:var(--brand);font-size:13px;font-weight:950}
.about-release-meta time{color:var(--muted);font-size:11px;font-weight:800}
.about-release-title{color:#173a5f;font-size:13px;font-weight:950}
.about-release ul{grid-column:2}
body.about-panel-active{overflow:hidden}
.tabs{position:sticky;top:0;z-index:60;display:flex;gap:8px;align-items:center;margin-top:10px;padding:8px 0;flex-wrap:wrap;background:color-mix(in srgb,var(--bg) 92%,var(--panel));backdrop-filter:none;border-bottom:1px solid var(--line);box-shadow:0 1px 0 rgba(19,48,64,.04);scroll-margin-top:8px}
.tab-btn{background:color-mix(in srgb,var(--brand) 9%,var(--panel));color:color-mix(in srgb,var(--brand) 68%,var(--text));border:1px solid color-mix(in srgb,var(--brand) 16%,var(--line))}
.tab-btn.active{background:var(--brand);color:#fff}
.trader-workbench{margin-top:8px;padding:10px;border:1px solid var(--line);border-radius:8px;background:var(--panel);box-shadow:none}
.trader-workbench:empty{display:none}
.trader-workbench .tw-title{color:#153a5e}
.trader-workbench .tw-focus-card,.trader-workbench .tw-anomaly-card{transition:border-color .16s ease}
.trader-workbench .tw-focus-card:hover,.trader-workbench .tw-anomaly-card:hover{transform:none;box-shadow:none}
.trader-workbench .tw-card-headline{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.section{padding:8px 12px;background:color-mix(in srgb,var(--brand) 7%,var(--panel));border-bottom:1px solid color-mix(in srgb,var(--brand) 16%,var(--line));color:color-mix(in srgb,var(--brand) 64%,var(--text));font-size:13px;font-weight:750}.row{display:grid;grid-template-columns:100px 150px 150px 140px auto auto;gap:8px;padding:10px}
.market-strip{display:flex;flex-direction:column;gap:10px;margin-top:10px}
.market-group{background:#fff;border:1px solid var(--line);border-radius:8px;padding:10px}
.mg-title{font-size:12px;color:var(--muted);margin-bottom:8px}
.mg-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}
.m-item{background:#fff;border:1px solid var(--line);border-radius:8px;padding:10px;min-height:140px}
.m-name{font-size:12px;color:var(--muted)}
.m-clock{font-size:11px;color:#8a99a8;margin-top:2px;min-height:14px}
.m-price{font-size:18px;font-weight:700}
.m-change{font-size:12px}
.m-spark{width:100%;height:52px;display:block;margin-top:8px}
input,select,button{border-radius:8px;font-size:13px;padding:7px 10px;border:1px solid color-mix(in srgb,var(--brand) 14%,var(--line));background:var(--panel);transition:border-color .16s ease,background-color .16s ease,color .16s ease,box-shadow .16s ease}button{border:0;background:var(--brand);color:#fff;font-weight:650;cursor:pointer}
input:focus-visible,select:focus-visible,button:focus-visible{outline:2px solid color-mix(in srgb,var(--brand) 55%,var(--panel));outline-offset:2px}
button:hover:not(:disabled){background:color-mix(in srgb,var(--brand) 88%,var(--text))}
button.secondary{background:color-mix(in srgb,var(--brand) 38%,var(--text))}button.secondary:hover:not(:disabled){background:color-mix(in srgb,var(--brand) 24%,var(--text))}button.danger{background:var(--error)}button.danger:hover:not(:disabled){background:color-mix(in srgb,var(--error) 86%,var(--text))}
.table-wrap{max-width:100%;min-width:0;overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}table{width:100%;border-collapse:collapse;font-size:13px;min-width:1280px}th,td{padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap;text-align:left}
th{background:color-mix(in srgb,var(--brand) 7%,var(--panel));color:color-mix(in srgb,var(--brand) 48%,var(--text))}th button{all:unset;cursor:pointer;font-weight:650}.code-btn{all:unset;color:var(--brand);text-decoration:underline;cursor:pointer;font-weight:750}
.list-toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:10px 12px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--brand) 3%,var(--panel))}
.list-search-input{min-width:min(360px,100%);height:34px;border:1px solid color-mix(in srgb,var(--brand) 18%,var(--line));background:var(--panel);box-shadow:inset 0 1px 0 rgba(255,255,255,.75)}
.view-presets{display:flex;gap:7px;align-items:center;flex-wrap:wrap}
.view-presets button{height:34px;padding:6px 11px;border:1px solid #c9d5e3;background:#fff;color:#30475b}
.view-presets button.active{border-color:var(--brand);background:var(--brand);color:#fff;box-shadow:none}
.table-tool-toolbar{padding-top:8px;padding-bottom:8px}
.sortable-th{cursor:pointer;user-select:none;transition:background .15s ease,color .15s ease}
.sortable-th:hover{background:#eef5fb;color:var(--brand)}
tr[hidden]{display:none!important}
.editor{display:grid;grid-template-columns:100px 160px 160px 140px 220px 120px 120px 120px;gap:8px;padding:10px}.hint{padding:0 10px 10px;color:var(--muted);font-size:12px}#editFundThemes{grid-column:span 2;min-width:0}#saveFundThemesBtn,#resetFundThemesBtn{white-space:nowrap}
.chart-head{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:10px 12px;border-bottom:1px solid var(--line);font-size:12px;color:var(--muted);flex-wrap:wrap}
.chart-wrap{position:relative}
#chart,.flow-chart{width:100%;height:330px;min-height:240px;max-height:min(78vh,1180px);display:block;background:var(--panel)}#chart text,.flow-chart text{font-family:"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;font-stretch:normal;font-kerning:normal;text-rendering:geometricPrecision;letter-spacing:0}.chart-resize-handle{height:14px;cursor:ns-resize;border-top:1px solid rgba(141,160,175,.35);background:var(--bg);position:relative;touch-action:none}.chart-resize-handle::before{content:"";position:absolute;left:50%;top:4px;width:54px;height:4px;transform:translateX(-50%);border-radius:99px;background:var(--brand);box-shadow:none}.chart-resize-handle:hover{background:var(--line)}.legend{padding:8px 12px;display:flex;gap:8px;flex-wrap:wrap}.legend-item{display:inline-flex;gap:6px;align-items:center;border:1px solid var(--line);border-radius:12px;padding:2px 8px;cursor:pointer;font-size:12px}
.legend-item.off{opacity:.4;text-decoration:line-through}.dot{width:10px;height:10px;border-radius:50%;display:inline-block}
.chart-tooltip{position:absolute;display:none;pointer-events:none;z-index:10;max-width:240px;padding:6px 8px;border-radius:8px;background:rgba(27,39,51,.92);color:#fff;font-size:12px;line-height:1.4;box-shadow:0 6px 18px rgba(0,0,0,.18)}.flow-empty-html{height:100%;display:flex;align-items:flex-start;padding:28px 24px;color:var(--muted);font-size:14px}.echart-tip{line-height:1.55}.echart-tip strong{font-weight:800}
.trading-lw-chart{width:100%;height:100%;min-height:inherit;background:var(--panel)}.trading-lw-legend{display:grid;gap:7px;width:100%}.trading-lw-meta{display:flex;justify-content:space-between;gap:8px;color:var(--muted);font-size:11px;font-weight:800}.trading-lw-items{display:flex;flex-wrap:wrap;gap:7px}.trading-lw-legend-item{display:inline-flex;align-items:center;gap:6px;min-height:28px;max-width:220px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--text);font:inherit;font-size:12px;cursor:pointer}.trading-lw-legend-item b,.trading-lw-legend-item em{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trading-lw-legend-item b{font-weight:800}.trading-lw-legend-item em{color:var(--muted);font-style:normal;font-size:11px}.trading-lw-legend-item.off{opacity:.42;text-decoration:line-through}
.flow-tools{display:inline-flex;gap:6px;align-items:center;flex-wrap:wrap}.flow-tools input{height:28px;border:1px solid var(--line);border-radius:8px;padding:0 8px;color:var(--text);background:#fff}.flow-grid{stroke:#dce6ed;stroke-width:1}.flow-grid.soft{stroke:#edf2f5}.flow-axis{stroke:#bccbd7;stroke-width:1.2}.flow-axis.strong{stroke:#8da0af;stroke-width:1.5;stroke-dasharray:4 4}.flow-axis-label{font-size:11px;fill:#708090}.flow-line{fill:none;stroke-width:2.15;stroke-linejoin:round;stroke-linecap:round;filter:none}.flow-point{stroke:#fff;stroke-width:1.4;cursor:crosshair}.flow-end-label{font-size:11.5px;font-weight:700;paint-order:stroke;stroke:#fff;stroke-width:3px;stroke-linejoin:round}.flow-empty{fill:#6c7a89;font-size:14px}.flow-zone{opacity:.42}.flow-zone.up{fill:#fff0ed}.flow-zone.down{fill:#edf8f2}.flow-row-bg{fill:transparent;transition:fill .16s ease}.flow-row:hover .flow-row-bg{fill:rgba(22,35,49,.045)}.flow-section-label{font-size:12px;font-weight:700;letter-spacing:.1px;fill:#435466}.flow-section-label.up{fill:#9e2f2f}.flow-section-label.down{fill:#1f6f4c}.flow-rank-badge{font-size:10.5px;font-weight:800;fill:#fff;text-anchor:middle;paint-order:stroke;stroke:#26364a;stroke-width:5px}.flow-rank-badge.positive{stroke:#b43a34}.flow-rank-badge.negative{stroke:#167a50}.flow-bar{cursor:crosshair;filter:none;transition:opacity .16s ease,filter .16s ease}.flow-row:hover .flow-bar{opacity:1!important;filter:none}.flow-bar-name{font-size:12px;font-weight:700;fill:#243442}.flow-bar-name.total,.flow-bar-value.total{font-size:12.5px;font-weight:800;fill:#142033}.flow-bar-value{font-size:12px;font-weight:700;fill:#1b2733}.bar-summary{width:100%;display:grid;grid-template-columns:1.25fr repeat(3,minmax(150px,1fr));gap:10px}.bar-summary.muted{display:flex;color:var(--muted);font-size:12px}.bar-summary-card{min-width:0;border:1px solid var(--line);border-radius:8px;padding:9px 11px;background:var(--panel);box-shadow:none}.bar-summary-card.total{background:var(--panel)}.bar-summary-card span{display:block;color:var(--muted);font-size:11px;font-weight:700}.bar-summary-card strong{display:block;margin-top:3px;font-size:16px;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bar-summary-card em{display:block;margin-top:2px;color:#6c7a89;font-style:normal;font-size:11px}.bar-legend-strip{width:100%;display:flex;gap:8px;flex-wrap:wrap}
.treemap-panel{padding:12px}
.treemap-wrap{position:relative;width:100%;overflow:hidden}
.treemap-echarts-wrap{border-radius:8px;background:var(--panel)}
.treemap-chart{width:100%;height:100%}
.treemap-inner{position:relative;width:100%;height:100%}
.treemap-tile{position:absolute;display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;gap:6px;border:1px solid rgba(255,255,255,.82);border-radius:8px;padding:12px;color:#12202c;text-align:left;overflow:hidden;box-shadow:none}
.treemap-tile.small{padding:6px;gap:3px}
.treemap-tile.medium{padding:9px;gap:4px}
.treemap-title{font-size:var(--tm-title,18px);font-weight:800;line-height:1.15;max-width:100%;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;text-shadow:0 1px 0 rgba(255,255,255,.18)}
.treemap-sub,.treemap-meta{font-size:var(--tm-sub,13px);line-height:1.2;opacity:.95;font-weight:600}
.treemap-extra{font-size:var(--tm-sub,13px);line-height:1.2;font-weight:700;opacity:.95}
.treemap-accent{margin-top:auto;font-size:var(--tm-accent,20px);font-weight:800;line-height:1.05;letter-spacing:.2px}
.treemap-tile.medium .treemap-title{-webkit-line-clamp:2}
.treemap-tile.large .treemap-title{-webkit-line-clamp:3}
.treemap-tile.tiny{padding:4px;justify-content:center;align-items:center}
.treemap-tile.tiny .treemap-title{font-size:max(11px,var(--tm-sub,11px));-webkit-line-clamp:1;text-align:center}
.treemap-tile.tiny .treemap-sub,.treemap-tile.tiny .treemap-meta,.treemap-tile.tiny .treemap-extra,.treemap-tile.tiny .treemap-accent{display:none}
.treemap-tile.small .treemap-meta,.treemap-tile.small .treemap-accent{display:none}
.treemap-tile.small .treemap-extra{display:none}
.treemap-tile.medium .treemap-extra{display:none}
.treemap-empty{padding:18px 4px;color:var(--muted);font-size:13px}
.treemap-tooltip{max-width:260px}
.calendar-head{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.calendar-nav{display:flex;gap:8px;align-items:center}
.calendar-month-total{display:inline-flex;gap:6px;align-items:center;border:1px solid #dde5ed;border-radius:999px;padding:5px 10px;background:#f8fbff;color:var(--muted);font-size:12px}.calendar-month-total strong{font-size:13px}
.calendar-toggles{display:flex;gap:12px;align-items:center;font-size:12px;color:var(--muted)}
.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;padding:10px}
.cal-w{font-size:12px;color:var(--muted);text-align:center}
.cal-day{border:1px solid var(--line);border-radius:10px;min-height:86px;padding:6px;background:#fff}
.cal-day.off{opacity:.35}
.cal-date{font-size:12px;color:var(--muted)}
.cal-pnl{font-size:13px;font-weight:700;margin-top:6px}
.cal-rate{font-size:12px;margin-top:4px}
.up{color:var(--up);font-weight:700}.down{color:var(--down);font-weight:700}.warn{color:var(--warn)}.error{color:var(--error)}
@media (max-width:1300px){.layout{grid-template-columns:var(--sidebar-width, 320px) 12px minmax(0,1fr)}.row,.editor{grid-template-columns:repeat(3,minmax(130px,1fr))}.mg-grid{grid-template-columns:repeat(3,minmax(180px,1fr))}}
@media (max-width:1000px){.layout{grid-template-columns:1fr}.sidebar{position:static;max-height:none}.sidebar-resize{display:none}}
@media (max-width:800px){.login-page{padding:14px}.login-card{padding:22px}.row,.editor{grid-template-columns:repeat(2,minmax(120px,1fr))}.mg-grid{grid-template-columns:repeat(2,minmax(160px,1fr))}.account-grid{grid-template-columns:1fr}.account-form,.account-ai-form{grid-template-columns:1fr}.list-toolbar,.etf-toolbar{align-items:stretch}.list-search-input,.etf-toolbar input{width:100%;min-width:0}#chart,.flow-chart{min-height:220px}.chart-resize-handle{height:18px}.bar-summary{grid-template-columns:1fr 1fr}.bar-summary-card strong{font-size:14px}.flow-bar-name{font-size:11px}.flow-bar-value{font-size:11px}}
@media (max-width:800px){.about-panel{top:10px;width:calc(100vw - 16px);max-height:calc(100vh - 20px)}.about-panel-head{padding:12px}.about-body{padding:12px}.about-hero{grid-template-columns:1fr}.about-version-grid,.about-feature-grid{grid-template-columns:1fr}.about-release{grid-template-columns:1fr}.about-release ul{grid-column:auto}}

.vol-history-line{fill:none;stroke-width:2.5}
.volatility-chart{width:100%;height:300px;display:block;background:var(--panel)}
.vol-history-axis{stroke:#b8c6d7;stroke-width:1}.vol-history-grid{stroke:#e7eef6;stroke-width:1}
.vol-history-label{fill:#60758d;font-size:11px}
.vol-history-dot{cursor:pointer}

.vol-band-low{fill:rgba(31,125,77,.08)}
.vol-band-med{fill:rgba(166,107,0,.08)}
.vol-band-high{fill:rgba(179,39,39,.08)}
.vol-band-extreme{fill:rgba(122,0,26,.10)}
.vol-history-band-label{fill:#6a7c91;font-size:10px;font-weight:700}
.vol-range-summary{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px;padding-top:8px;border-top:1px solid #e3ebf3}.vol-range-block{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;padding:6px 10px;border:1px solid #dde5ed;border-radius:10px;background:#f8fbff;color:#4b6178;font-size:12px}.vol-range-block strong{color:#183b63}.vol-range-block span{white-space:nowrap}

.related-panel{margin-top:10px}
.related-panel:empty{display:none}
.related-panel-shell,.related-panel-empty{border:1px solid var(--line);border-radius:8px;background:var(--panel);box-shadow:none;padding:14px;display:grid;gap:10px}
.related-panel-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.related-panel-eyebrow,.related-panel-empty-title{font-size:13px;font-weight:850;color:#153a5e;letter-spacing:.06em;text-transform:uppercase}
.related-panel-subtitle,.related-panel-empty small{color:var(--muted);font-size:12px;line-height:1.45}
.related-panel-card{border:1px solid var(--line);border-radius:8px;background:var(--panel);padding:10px;display:grid;gap:8px}
.related-panel-card-title{font-size:12px;font-weight:850;color:#475467;letter-spacing:.04em}
.related-panel-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.related-panel-field{min-width:0;border-radius:10px;background:#fff;border:1px solid rgba(221,229,237,.72);padding:8px}
.related-panel-label{display:block;color:var(--muted);font-size:11px;font-weight:750}
.related-panel-value{display:block;margin-top:3px;font-size:13px;color:var(--text);word-break:break-word}
.related-panel-empty{color:var(--muted)}
@media (max-width:900px){.related-panel-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.related-panel-grid{grid-template-columns:1fr}.related-panel-shell,.related-panel-empty{padding:12px}}
.legacy-detail-panel{display:none}
.asset-drawer-backdrop{position:fixed;inset:0;background:rgba(17,36,56,.34);backdrop-filter:none;z-index:80;opacity:0;transition:opacity .18s ease}
.asset-drawer-backdrop:not([hidden]){opacity:1}
.asset-drawer{position:fixed;top:0;right:0;width:min(1280px,86vw);height:100vh;background:var(--bg);border-left:1px solid var(--line);box-shadow:-10px 0 28px rgba(21,55,83,.12);z-index:81;display:grid;grid-template-rows:auto auto 1fr;transform:translateX(104%);transition:transform .22s cubic-bezier(.2,.8,.2,1);overflow:hidden}
.asset-drawer.open{transform:translateX(0)}
.asset-drawer-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:18px 20px 14px;border-bottom:1px solid var(--line);background:var(--panel)}
.asset-drawer-eyebrow{font-size:12px;font-weight:900;letter-spacing:.08em;color:#607487;text-transform:uppercase}
.asset-drawer h2{margin:4px 0 4px;font-size:22px;line-height:1.2;color:#173b5c}
.asset-drawer-meta{color:#607487;font-size:12px;font-weight:750}
.asset-drawer-close{white-space:nowrap}
.asset-drawer-tabs{display:flex;gap:8px;padding:10px 20px;border-bottom:1px solid #dbe6ef;background:#fff;overflow-x:auto;overscroll-behavior-x:contain}
.asset-drawer-tabs button{flex:0 0 auto;padding:7px 11px;border:0;border-radius:999px;background:#eef5fb;color:#173b5c;text-decoration:none;font-size:12px;font-weight:900;cursor:pointer}
.asset-drawer-tabs button:focus-visible{outline:2px solid #0e5ba8;outline-offset:2px}
.asset-drawer-body{min-height:0;overflow-y:auto;overflow-x:hidden;padding:16px 20px 22px;display:grid;gap:14px}
.asset-drawer-section{display:grid;gap:10px}
.asset-drawer-section-title{font-size:13px;font-weight:950;color:#173b5c;letter-spacing:.03em}
.asset-detail-body{display:grid;gap:12px}
.asset-drawer .related-panel{margin-top:0}
.asset-drawer .related-panel-shell,.asset-drawer .related-panel-empty,.asset-drawer .observation-shell{box-shadow:none;background:#fff}
.asset-drawer .table-wrap{max-width:100%;overflow-x:visible}
.asset-drawer table{width:100%;min-width:0;table-layout:fixed}
.asset-drawer th,.asset-drawer td{white-space:normal;overflow-wrap:anywhere;word-break:break-word;vertical-align:top}
.asset-drawer .fund-holdings-table th,.asset-drawer .fund-holdings-table td,.asset-drawer .etf-holdings-table th,.asset-drawer .etf-holdings-table td{padding:7px 8px;font-size:12px;line-height:1.45}
.asset-drawer .fund-detail-grid,.asset-drawer .etf-detail-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));min-width:0}
.asset-drawer .fund-detail-card,.asset-drawer .etf-detail-card{min-width:0;overflow:hidden}
.asset-drawer .fund-detail-value,.asset-drawer .etf-detail-value,.asset-drawer .fund-detail-link,.asset-drawer .code-btn{white-space:normal;overflow-wrap:anywhere;word-break:break-word}
.asset-drawer .fund-detail-toolbar,.asset-drawer .etf-detail-toolbar,.asset-drawer .table-tool-toolbar{flex-wrap:wrap}
.asset-drawer .table-tool-toolbar .list-search-input{width:min(420px,100%);min-width:0}
.asset-drawer .fund-history-chart,.asset-drawer .fund-history-kline,.asset-drawer .etf-flow-chart,.asset-drawer .etf-price-kline{max-width:100%;min-height:210px}
.asset-drawer .fund-history-chart,.asset-drawer .etf-flow-chart{height:auto}
body.asset-drawer-active{overflow:hidden}
@media (max-width:1200px){.asset-drawer{width:min(1040px,90vw)}}
@media (max-width:760px){.asset-drawer{width:100vw}.asset-drawer-head{padding:14px}.asset-drawer-tabs{padding:9px 14px;overflow-x:visible;flex-wrap:wrap}.asset-drawer-tabs button{min-width:0}.asset-drawer-body{padding:12px 14px 18px}.asset-drawer h2{font-size:19px}.asset-drawer .fund-detail-grid,.asset-drawer .etf-detail-grid{grid-template-columns:1fr}.asset-drawer .fund-holdings-table th,.asset-drawer .fund-holdings-table td,.asset-drawer .etf-holdings-table th,.asset-drawer .etf-holdings-table td{padding:6px 7px;font-size:11px}}
.observation-panel{margin-top:10px}
.observation-panel:empty{display:none}.observation-shell{border:1px solid var(--line);border-radius:8px;background:var(--panel);box-shadow:none;padding:14px;display:grid;gap:12px;overflow:hidden}.observation-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.observation-title{font-size:14px;font-weight:900;color:#173a5d;letter-spacing:.04em}.observation-subtitle{margin-top:3px;color:var(--muted);font-size:12px;line-height:1.45}.observation-target{min-width:180px;max-width:42%;border:1px solid var(--line);border-radius:8px;background:var(--panel);padding:9px 10px;display:grid;gap:3px}.observation-target span{color:var(--muted);font-size:11px;font-weight:800}.observation-target strong{font-size:13px;color:#1b2733;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.observation-target em{font-style:normal;color:#6c7a89;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.observation-form{display:grid;gap:10px}.observation-form label{display:grid;gap:5px;color:#475467;font-size:12px;font-weight:800}.observation-form textarea,.observation-form input,.observation-form select{width:100%;min-width:0;border:1px solid #c9d5e3;border-radius:8px;background:#fff;color:var(--text);font:inherit}.observation-form textarea{resize:vertical;min-height:76px;line-height:1.45}.observation-form-row{display:grid;grid-template-columns:minmax(0,1fr) 150px;gap:10px}.observation-form-actions,.observation-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.observation-form-actions button[disabled]{opacity:.72;cursor:wait}.observation-alert{border-radius:8px;padding:8px 10px;font-size:12px}.observation-alert.error{border:1px solid #efb6b6;background:#fff1f1;color:#9e2a2b}.observation-alert.ok{border:1px solid #b8dbc8;background:#f0fbf4;color:#1f6f4c}.observation-list{display:grid;gap:8px}.observation-empty{border:1px dashed var(--line);border-radius:8px;padding:12px;color:var(--muted);font-size:13px;background:var(--panel);display:grid;gap:4px}.observation-item{border:1px solid var(--line);border-radius:8px;background:var(--panel);padding:10px;display:grid;gap:8px;min-width:0}.observation-item-head{display:flex;justify-content:space-between;gap:8px;align-items:center}.observation-item-head strong{font-size:12px;color:#153a5e}.observation-item-head time{font-size:11px;color:var(--muted)}.observation-item p{margin:0;color:#223241;font-size:13px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere}.observation-tags{display:flex;gap:6px;flex-wrap:wrap}.observation-tags span{border:1px solid #d6e1eb;border-radius:999px;background:#f8fbff;color:#4a5c6f;font-size:11px;padding:2px 7px}.observation-actions button{padding:5px 9px;font-size:12px}
@media (max-width:560px){.observation-shell{padding:12px}.observation-head{display:grid}.observation-target{max-width:none;min-width:0}.observation-form-row{grid-template-columns:1fr}.observation-form-actions button{width:100%}.observation-item-head{align-items:flex-start;flex-direction:column}.observation-actions button{flex:1 1 120px}}

/* Product UI contract pass */
body{font-variant-numeric:tabular-nums}
.related-panel-field,.vol-range-block,.cal-day,.asset-drawer-tabs button{border-radius:8px}
.related-panel-field{background:var(--panel)}

/* UI restructure v1 */
.header{display:grid;grid-template-columns:minmax(190px,220px) minmax(0,1fr);align-items:flex-start;padding:2px 0 0}
.brand-block{min-width:0}
.brand-block > div{min-width:0}
.brand-block .meta{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.workspace-controls{justify-self:end;display:flex;justify-content:flex-end;align-items:flex-start;gap:8px;flex-wrap:wrap;min-width:0;width:min(100%,680px)}
.control-group{display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-width:0;padding:4px 5px;border:1px solid var(--line);border-radius:8px;background:color-mix(in srgb,var(--brand) 3%,var(--panel))}
.control-group-label{display:inline-flex;align-items:center;align-self:stretch;padding:0 7px;border-right:1px solid var(--line);color:color-mix(in srgb,var(--brand) 58%,var(--text));font-size:11px;font-weight:900;letter-spacing:0}
.control-group label{color:var(--muted);font-size:12px;font-weight:800}
.control-group select,.control-group input{height:30px;min-width:0}
.control-group button{height:30px;padding:5px 9px;white-space:nowrap}
.control-group-account select{width:116px}
.control-group-refresh select{width:86px}
.control-group-maintenance{display:block;position:relative;padding:0;background:var(--panel);border-color:var(--line);overflow:visible}
.control-group-maintenance summary{display:flex;align-items:center;gap:6px;height:38px;padding:4px 7px 4px 0;cursor:pointer;list-style:none}
.control-group-maintenance summary::-webkit-details-marker{display:none}
.control-group-maintenance .control-group-summary{color:#5c6f80;font-size:12px;font-weight:850}
.control-group-maintenance[open]{background:#fff8f8;border-color:#ead4d4}
.control-group-maintenance .control-group-label{border-right-color:#ead4d4;color:#8c3d3d}
.maintenance-fields{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:0 6px 6px}
.tabs.workspace-nav{gap:10px 18px;align-items:center;padding:10px 0 12px}
.nav-group{display:flex;align-items:center;gap:8px;min-width:0;padding:0;border:0;border-radius:0;background:transparent}
.nav-group-label{display:inline-flex;align-items:center;align-self:center;height:32px;padding:0 2px;border-right:0;color:#263d54;font-size:14px;font-weight:950;letter-spacing:0;white-space:nowrap}
.nav-group.active .nav-group-label,.nav-group:has(.tab-btn.active) .nav-group-label{color:#0e5ba8}
.workspace-nav .control-group-refresh{margin-left:auto;background:color-mix(in srgb,var(--brand) 4%,var(--panel))}
.workspace-nav .tab-btn{height:32px;padding:6px 12px;border:0;background:transparent;color:#263d54;font-weight:900;white-space:nowrap}
.workspace-nav .tab-btn:hover{background:#eef5fb;color:#0e5ba8}
.workspace-nav .tab-btn.active{background:#0e5ba8;color:#fff;box-shadow:0 1px 3px rgba(14,91,168,.18)}
.main > [id$="Board"]:not([hidden]){display:grid;gap:10px}
.main > [id$="Board"] > .panel{margin-top:0}
.main > [id$="Board"] > .summary{margin-top:0}
@media (max-width:960px){.header{grid-template-columns:1fr}.workspace-controls{justify-self:stretch;justify-content:flex-start;width:100%}.control-group{width:100%}.control-group-account select{width:140px}}
@media (max-width:800px){.nav-group{width:100%;overflow-x:auto}.workspace-nav .tab-btn{flex:0 0 auto}.workspace-nav .control-group-refresh{width:100%;margin-left:0}.control-group-label,.nav-group-label{min-width:48px}.control-group{align-items:stretch}.control-group button,.control-group select,.control-group input{flex:1 1 120px}.control-group-maintenance summary{width:100%}.maintenance-fields{align-items:stretch}.maintenance-fields label{flex:1 1 100%}}
