:root{
  --bg:#0d1117;--surface:#161b22;--s2:#1c2128;--border:#30363d;
  --text:#e6edf3;--muted:#8b949e;--red:#f85149;--green:#3fb950;--blue:#58a6ff;
}
*{box-sizing:border-box;margin:0;padding:0}
body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;font-size:14px}

header{
  display:flex;align-items:center;justify-content:space-between;
  padding:10px 20px;border-bottom:1px solid var(--border);
  background:var(--surface);flex-wrap:wrap;gap:8px;
}
.h-title{font-size:15px;font-weight:700;letter-spacing:.5px}
.h-meta{font-size:12px;color:var(--muted);margin-top:2px}
.h-ctrl{display:flex;align-items:center;gap:10px}

/* ── Tab nav ── */
.tab-nav{display:flex;gap:0;border-bottom:1px solid var(--border);background:var(--surface);padding:0 20px}
.tab-btn{
  background:none;border:none;color:var(--muted);
  padding:8px 16px;font-size:13px;cursor:pointer;
  border-bottom:2px solid transparent;margin-bottom:-1px;
  transition:color .15s,border-color .15s;
}
.tab-btn:hover{color:var(--text)}
.tab-btn.active{color:var(--blue);border-bottom-color:var(--blue);font-weight:600}

/* ── Tab panels ── */
.tab-panel{display:none}
.tab-panel.active{display:block}

/* ── Forex table ── */
.fx-table{width:100%;border-collapse:collapse;font-size:13px}
.fx-table th{color:var(--muted);font-weight:600;text-align:left;padding:5px 8px;border-bottom:1px solid var(--border);font-size:11px;text-transform:uppercase;letter-spacing:.5px}
.fx-table td{padding:6px 8px;border-bottom:1px solid var(--border)}
.fx-table tr:last-child td{border-bottom:none}
.fx-table tr:hover td{background:var(--s2)}
/* ── Overview / Index ── */
.ov-more{float:right;color:var(--blue);font-size:11px;cursor:pointer;text-transform:none;letter-spacing:0}
.ov-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px 16px;font-size:13px}
.ov-k{color:var(--muted);font-size:12px}
.ov-v{font-weight:700}
.ov-row2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.ov-board3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px;font-size:13px}
.idx-row{cursor:pointer}
.idx-row:hover td{background:var(--s2)}
.idx-spark{width:100%;height:120px;display:block}
#idxWrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.idx-table{table-layout:fixed;min-width:680px}
.idx-table th,.idx-table td{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.idx-table col:nth-child(1){width:28%}
.idx-table col:nth-child(2){width:16%}
.idx-table col:nth-child(3){width:14%}
.idx-table col:nth-child(4){width:14%}
.idx-table col:nth-child(5){width:18%}
.idx-table col:nth-child(6){width:10%}
@media(max-width:680px){.ov-grid{grid-template-columns:repeat(2,1fr)}.ov-row2,.ov-board3{grid-template-columns:1fr}}
/* ── Board ── */
.board-toggle{float:right;font-size:12px;display:inline-flex;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:2px;vertical-align:middle;gap:0}
.board-toggle .board-sort{border:none;background:none;color:var(--muted);padding:5px 12px;margin:0;border-radius:6px}
.board-toggle .board-sort.active{background:var(--s2);color:var(--blue);border-color:transparent}
.board-toggle .board-sort:hover:not(.active){color:var(--text)}
.board-toggle.primary .board-sort{font-weight:600;padding:5px 16px}
.board-toggle.primary .board-sort.active{background:#1f6feb;color:#fff}
.seg-label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;margin-right:8px;align-self:center}
.board-table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.board-table-scroll table{min-width:560px}
.board-table-scroll td,.board-table-scroll th{white-space:nowrap}
.board-sort{background:none;border:1px solid var(--border);color:var(--muted);padding:2px 10px;cursor:pointer;border-radius:4px;margin-left:6px}
.board-sort.active{color:var(--blue);border-color:var(--blue)}
.board-sort,.tab-btn,#boardFilterFab{-webkit-tap-highlight-color:transparent}
.board-rank-row{cursor:pointer}
.board-rank-row.sel td{background:var(--s2)}
.bf-bars{width:150px;display:inline-block;vertical-align:middle}
.bf-bar{display:flex;height:9px;border-radius:2px;overflow:hidden;margin:2px 0;background:transparent}
.bf-bar span{display:block;height:100%}
.bf-div{flex:0 0 1px;width:1px;background:#fff}
.bf-sub{font-size:.82em;color:#9aa7b6;margin-left:3px}
.bf-main{display:inline-flex;flex-direction:column;align-items:flex-end;line-height:1.1;font-size:11px;font-variant-numeric:tabular-nums;margin-right:6px;vertical-align:middle}
.bf-main .in{color:#ff8c33;font-weight:600}
.bf-main .out{color:#3388ff;font-weight:600}
.bf-cell{display:inline-flex;align-items:center;justify-content:flex-end}
/* 控制条：标签 + 分段外壳同行 */
#boardSecondaryControls{clear:both;margin:6px 0}
.board-ctl-row{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:6px 0}
.board-ctl-row .board-toggle{float:none}
.board-win-row{display:inline-flex;align-items:center;gap:6px;margin-left:14px}
#boardSortBar .board-sort{min-width:88px;justify-content:center}
.board-sort .sort-arrow{font-size:.72em;margin-left:4px;opacity:.9}
/* 纳入暗盘:药丸开关(隐藏原生 checkbox,label 自身即按钮 + 内嵌滑动小圆) */
.board-dark-toggle{display:inline-flex;align-items:center;gap:8px;cursor:pointer;
  font-size:12px;color:var(--muted);user-select:none;
  padding:5px 12px 5px 10px;border:1px solid var(--border);border-radius:999px;
  background:var(--surface);transition:color .15s,border-color .15s,background .15s}
.board-dark-toggle:hover{color:var(--text);border-color:var(--muted)}
.board-dark-toggle #boardDarkChk{appearance:none;-webkit-appearance:none;margin:0;
  position:relative;width:30px;height:16px;flex:none;border-radius:999px;
  background:var(--s2);border:1px solid var(--border);cursor:pointer;
  transition:background .18s,border-color .18s}
.board-dark-toggle #boardDarkChk::after{content:'';position:absolute;top:1px;left:1px;
  width:12px;height:12px;border-radius:50%;background:var(--muted);
  transition:transform .18s,background .18s}
.board-dark-toggle:has(#boardDarkChk:checked){color:var(--blue);border-color:var(--blue);
  background:color-mix(in srgb,var(--blue) 14%,transparent)}
.board-dark-toggle #boardDarkChk:checked{background:var(--blue);border-color:var(--blue)}
.board-dark-toggle #boardDarkChk:checked::after{transform:translateX(14px);background:#fff}
#boardTableWrap,#boardHeatWrap,#boardQuadWrap{clear:both}
.board-flow-summary{display:flex;flex-direction:column;gap:6px;margin:8px 0;}
.board-flow-summary:empty{display:none;}
.bfs-row{display:flex;flex-wrap:wrap;align-items:flex-end;gap:14px;}
.bfs-row-dark{padding-top:6px;border-top:1px dashed var(--border,#2a2f3a);}
.bfs-cell{display:flex;flex-direction:column;min-width:96px;}
.bfs-cell>span{color:var(--muted);font-size:11px;line-height:1.4;}
.bfs-cell>b{font-size:14px;}
/* 两行并存时改用 6 列等宽栅格,列宽锁死 → 右侧列不因明盘单元格内容变宽而错位。
   占位空格只作栅格占位,宽度由列决定。*/
.bfs-row.bfs-grid{display:grid;grid-template-columns:repeat(6,132px);justify-content:start;gap:14px;align-items:end;}
.bfs-cell-spacer{visibility:hidden;}
/* 窄屏放不下 6 列:降成 2 列(明盘 6 格→3 行),占位空格撤除,暗盘行直接排它的 3 格 */
@media(max-width:680px){
  .bfs-row.bfs-grid{grid-template-columns:repeat(2,1fr);gap:10px 14px;}
  .bfs-row.bfs-grid .bfs-cell-spacer{display:none;}
}
.bfs-pct{font-size:11px;color:var(--muted);font-weight:normal;}
.board-spark{width:100%;height:120px;display:block}
.fx-del{background:none;border:1px solid var(--border);color:var(--muted);padding:2px 8px;border-radius:4px;font-size:11px;cursor:pointer}
.fx-del:hover{border-color:var(--red);color:var(--red)}

/* ── Forex add form ── */
.fx-form{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px;align-items:center}
.fx-form input,.fx-form select{
  background:var(--bg);border:1px solid var(--border);color:var(--text);
  padding:5px 9px;border-radius:6px;font-size:12px;outline:none;
}
.fx-form input:focus,.fx-form select:focus{border-color:var(--blue)}
.fx-form input[name=value]{width:90px}
.fx-form input[name=symbol]{width:90px}
.fx-form input[name=note]{flex:1;min-width:100px}
.fx-form input[name=fxtoken]{width:110px}
.fx-add-btn{
  background:var(--blue);border:none;color:#fff;
  padding:5px 14px;border-radius:6px;font-size:12px;cursor:pointer;font-weight:600;white-space:nowrap;
}
.fx-add-btn:hover{opacity:.85}
.fx-msg{font-size:12px;margin-top:6px}
select{
  background:var(--bg);border:1px solid var(--border);color:var(--text);
  padding:4px 8px;border-radius:6px;font-size:12px;cursor:pointer;outline:none;
}
.feat-date{float:right;font-weight:400;margin-left:8px}
.dp-wrap{position:relative;display:inline-block;float:right;margin-left:8px}
.dp-trigger{background:var(--bg);border:1px solid var(--border);color:var(--text);
  padding:4px 10px;border-radius:6px;font-size:12px;font-weight:400;cursor:pointer;outline:none}
.dp-trigger:hover{border-color:var(--blue)}
.dp-pop{position:absolute;right:0;top:calc(100% + 6px);z-index:50;width:250px;
  background:var(--surface);border:1px solid var(--border);border-radius:10px;
  padding:12px;box-shadow:0 8px 28px rgba(0,0,0,.45)}
.dp-hdr{display:flex;justify-content:space-between;align-items:center;
  font-weight:600;font-size:13px;color:var(--text);margin-bottom:8px}
.dp-nav{border:none;background:var(--s2);color:var(--text);border-radius:6px;
  width:24px;height:24px;cursor:pointer}
.dp-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.dp-dow{font-size:10px;color:var(--muted);text-align:center;padding:2px 0;font-style:normal}
.dp-dow.wk{color:#4b5563}
.dp-cell{text-align:center;font-size:12px;padding:6px 0;border-radius:6px;
  color:#3d444d;font-weight:400}
.dp-cell.out{visibility:hidden}
.dp-cell.has{color:var(--text);background:var(--s2);font-weight:600;cursor:pointer}
.dp-cell.has:hover{background:#22303c}
.dp-cell.pre{color:var(--text);cursor:pointer;font-weight:600;border:1px dashed #3d444d}
.dp-cell.pre:hover{background:var(--s2)}
.dp-cell.today{box-shadow:inset 0 0 0 2px #d29922;color:#e3b341}
.dp-cell.recent{background:var(--blue);color:#0d1117}
.dp-cell.sel{background:#2563eb;color:#fff;box-shadow:0 0 0 2px rgba(88,166,255,.45)}
@media (max-width:640px){
  .dp-pop{width:300px}
  .dp-cell{padding:11px 0;font-size:14px}
  .dp-dow{font-size:12px}
}
.badge{
  background:var(--s2);border:1px solid var(--border);color:var(--muted);
  padding:3px 9px;border-radius:12px;font-size:12px;min-width:72px;text-align:center;
}
.key-btn{
  background:none;border:1px solid var(--border);color:var(--muted);
  padding:3px 9px;border-radius:12px;font-size:13px;cursor:pointer;
}
.key-btn:hover{border-color:var(--blue);color:var(--blue)}

/* ── Token modal ── */
#tokenModal{display:none;position:fixed;inset:0;background:rgba(0,0,0,.75);z-index:999;align-items:center;justify-content:center}
#tokenModal.show{display:flex}
.mbox{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:24px;width:340px}
.mbox h3{margin-bottom:8px;font-size:15px}
.mbox p{color:var(--muted);font-size:12px;margin-bottom:14px}
.mbox input{width:100%;background:var(--bg);border:1px solid var(--border);color:var(--text);padding:7px 10px;border-radius:6px;font-size:13px;outline:none}
.mbox input:focus{border-color:var(--blue)}
.mrow{display:flex;gap:8px;margin-top:12px}
.mrow button{flex:1;padding:8px;border:none;border-radius:6px;font-size:13px;cursor:pointer;font-weight:600}
.bok{background:var(--blue);color:#fff}
.bskip{background:var(--s2);color:var(--muted);border:1px solid var(--border)!important}

/* ── Layout ── */
main{padding:16px 20px;display:flex;flex-direction:column;gap:16px}
section{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:14px 16px}
.s-title{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:1px;margin-bottom:12px}

.cards{display:flex;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.card{background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:9px 14px;flex:1;min-width:90px}
.card-label{font-size:11px;color:var(--muted);margin-bottom:3px}
.card-val{font-size:22px;font-weight:700;line-height:1}
.red{color:var(--red)}.green{color:var(--green)}.gray{color:var(--muted)}.pos{color:var(--red)}.neg{color:var(--green)}

.chart-wrap{position:relative;height:280px;overflow:hidden}
.chart-wrap.tall{height:360px}
canvas{display:block;width:100%;height:100%;cursor:default}

/* ── Tooltip ── */
.tip{
  position:absolute;background:rgba(22,27,34,.97);border:1px solid var(--border);
  border-radius:6px;padding:8px 12px;font-size:12px;line-height:1.7;
  pointer-events:none;z-index:20;white-space:nowrap;display:none;
}
.tip-hd{font-weight:700;color:var(--text);margin-bottom:2px;font-size:12px}
.tip-row{display:flex;justify-content:space-between;gap:16px}

.data-time{font-size:11px;color:var(--muted);margin-top:8px;text-align:right}
.legend{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:10px}
.leg-item{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--muted)}
.leg-dot{width:10px;height:10px;border-radius:2px;flex-shrink:0}

.anom-bar{display:none;align-items:center;gap:8px;background:#161b22;border:1px solid #30363d;border-radius:8px;padding:6px 12px;margin:8px 20px;cursor:pointer;overflow:hidden;white-space:nowrap}
.anom-bar.show{display:flex}
.anom-bar .anom-label{color:var(--muted);font-size:12px;flex-shrink:0}
.anom-bar .anom-track{overflow:hidden;flex:1}
.anom-bar .anom-item{display:inline-block;margin-right:24px;font-size:13px;transition:opacity .4s}
.anom-up{color:var(--red)} .anom-down{color:var(--green)}
.anom-modal{display:none;position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:50;align-items:center;justify-content:center}
.anom-modal.show{display:flex}
.anom-card{background:#0d1117;border:1px solid #30363d;border-radius:10px;max-width:680px;width:92%;max-height:80vh;overflow:auto;padding:16px}
.anom-card--wide{max-width:850px;max-height:90vh}
.anom-card h3{margin:0 0 8px;font-size:15px}
.anom-row{display:grid;grid-template-columns:1fr auto auto;gap:8px;padding:6px 0;border-bottom:1px solid #21262d;font-size:13px}
.anom-empty{color:var(--muted);padding:12px 0}
.bd-summary{display:flex;gap:8px;margin:8px 0 10px}
.bd-summary > div{flex:1;border:1px solid var(--border);border-radius:6px;padding:5px;text-align:center;font-size:11px;color:var(--muted)}
.bd-summary b{display:block;font-size:14px;margin-top:2px}
.bd-tabs{display:flex;gap:6px;margin-bottom:8px}
.bd-tab{padding:3px 12px;border-radius:14px;font-size:12px;border:1px solid var(--border);background:transparent;color:var(--muted);cursor:pointer}
.bd-tab.active{background:#2d4b8e;border-color:#2d4b8e;color:#fff} /* 选中页签:刻意用比 --blue 更沉的蓝,贴合 pill 按钮 */
#boardDetailChart,#boardZscoreChart{position:relative;min-height:150px}
.bd-tip{position:absolute;display:none;pointer-events:none;background:rgba(13,17,23,.92);border:1px solid var(--border);border-radius:6px;padding:6px 8px;font-size:11px;color:var(--text);white-space:nowrap;line-height:1.5;z-index:5}
.heat-tm{border-radius:4px;overflow:hidden;background:#0d1117}
.heat-tile{box-sizing:border-box;border:1px solid #0d1117;color:#fff;cursor:pointer;
  padding:4px 6px;display:flex;flex-direction:column;justify-content:center;line-height:1.2;overflow:hidden}
.heat-tile b{font-size:11px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;color:#0d1117;text-shadow:0 0 2px rgba(255,255,255,.55)}
.heat-tile .heat-pct{font-size:10px;color:#0d1117;opacity:.8}
.heat-tile .heat-chg{font-size:11px;font-weight:700}
.heat-tile.heat-sm b{font-size:10px}
.heat-tile.heat-sm .heat-pct,.heat-tile.heat-sm .heat-chg{font-size:9px}
.heat-tile .heat-up{color:#7a0e08}
.heat-tile .heat-down{color:#0a4a23}
.heat-legend{font-size:11px;color:var(--muted);display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.heat-legend i{display:inline-block;width:90px;height:8px;border-radius:4px}
.heat-legend i.lg-pct{background:linear-gradient(90deg,#2f6fed,#e4eaf2,#f0962a)}
.heat-legend i.lg-chg{background:linear-gradient(90deg,#1e9646,#e4e7ec,#c82d28)}
/* ── 移动端适配(置于全部基础规则之后以确保覆盖) ── */
/* FAB 默认隐藏（桌面） */
#boardFilterFab,#boardFilterBackdrop{display:none}
@media(max-width:680px){
  main{padding:12px 10px}
  .board-toggle{float:none}
  /* 板块页：二级筛选收进浮层卡片 */
  #boardSecondaryControls{position:fixed;left:12px;right:12px;bottom:84px;z-index:41;
    background:var(--surface);border:1px solid var(--border);border-radius:12px;
    padding:14px;box-shadow:0 8px 24px rgba(0,0,0,.5);
    transform:translateY(20px);opacity:0;pointer-events:none;transition:.18s;max-height:70vh;overflow:auto}
  body.board-filter-open #boardSecondaryControls{transform:none;opacity:1;pointer-events:auto}
  #boardSecondaryControls .board-ctl-row{flex-direction:column;align-items:stretch;gap:5px}
  /* 窗口组嵌在「视图」行内，不是 ctl-row，需单独按同样规则竖排铺满 */
  #boardSecondaryControls .board-win-row{flex-direction:column;align-items:stretch;gap:5px;margin-left:0}
  #boardSecondaryControls .board-toggle{display:flex}
  #boardSecondaryControls .board-toggle .board-sort{flex:1;text-align:center;justify-content:center;padding:8px 4px}
  #boardSortBar .board-sort{min-width:0}
  #boardFilterFab{display:flex;position:fixed;left:16px;bottom:16px;width:52px;height:52px;border-radius:50%;
    background:#1f6feb;color:#fff;border:none;font-size:22px;line-height:1;
    align-items:center;justify-content:center;box-shadow:0 6px 18px rgba(31,111,235,.5);z-index:42}
  body.board-filter-open #boardFilterBackdrop{display:block;position:fixed;inset:0;
    background:rgba(0,0,0,.4);z-index:40}
  /* 指数/期货页：宽分段组横向滚动降级 */
  #idxSegBar,#idxRangeBar,.board-toggle{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
}
.ov-pulse{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:8px}
.ov-pulse .ov-pulse-val{font-size:20px;font-weight:600}
.ov-pulse .ov-pulse-sub{font-size:12px;font-weight:400;color:var(--muted)}
.ov-boards2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.ov-distbar{display:flex;height:12px;border-radius:6px;overflow:hidden;margin:10px 0 2px}
/* 开票式动画:三组(跌左/平中/涨右)。首次冲入用 scaleX(.intro),之后仅补间 width。 */
.ov-distbar .ov-dg{display:flex;height:100%;transition:width 1.1s cubic-bezier(.16,1,.3,1),transform 1.1s cubic-bezier(.16,1,.3,1)}
.ov-distbar .ov-dg.left{transform-origin:left center}
.ov-distbar .ov-dg.right{transform-origin:right center}
.ov-distbar .ov-dg.mid{transform-origin:center;transition:width 1.1s cubic-bezier(.16,1,.3,1),transform .34s ease .8s,opacity .34s ease .8s}
.ov-distbar .ov-dg>span{display:block;height:100%;transition:width 1.1s cubic-bezier(.16,1,.3,1)}
.ov-distbar.intro .ov-dg.left,.ov-distbar.intro .ov-dg.right{transform:scaleX(0)}
.ov-distbar.intro .ov-dg.mid{transform:scaleY(0);opacity:0}
@media(prefers-reduced-motion:reduce){.ov-distbar .ov-dg,.ov-distbar .ov-dg.mid,.ov-distbar .ov-dg>span{transition:none}}
@media(max-width:640px){.ov-pulse,.ov-boards2{grid-template-columns:1fr}}
/* 刷新数字动效：Odometer 逐位滚动 + 方向脉冲(辉光,不覆盖持久字色) */
.ov-num{border-radius:3px;font-variant-numeric:tabular-nums}
/* 逐位滚动条:数字位为定高溢出裁剪的槽,内含 0-9 纵向条,仅变化位滚动 */
.odo-digit{display:inline-block;overflow:hidden;height:1.15em;line-height:1.15em;vertical-align:bottom;font-variant-numeric:tabular-nums}
.odo-strip{display:flex;flex-direction:column;transition:transform .55s cubic-bezier(.16,1,.3,1);will-change:transform}
.odo-strip>span{display:block;height:1.15em;line-height:1.15em;text-align:center}
.odo-sep{display:inline-block;line-height:1.15em;vertical-align:bottom;font-variant-numeric:tabular-nums}
/* 方向脉冲:亮度+短暂辉光,红涨绿跌;表格弱、总览(.ov-strong)强 */
.anim-pulse-up{animation:odoPulseUp .6s ease-out}
.anim-pulse-down{animation:odoPulseDown .6s ease-out}
.ov-strong.anim-pulse-up{animation:odoPulseUpStrong .6s ease-out}
.ov-strong.anim-pulse-down{animation:odoPulseDownStrong .6s ease-out}
@keyframes odoPulseUp{0%{filter:brightness(1.55);text-shadow:0 0 6px rgba(248,81,73,.85)}100%{filter:brightness(1);text-shadow:none}}
@keyframes odoPulseDown{0%{filter:brightness(1.55);text-shadow:0 0 6px rgba(63,185,80,.85)}100%{filter:brightness(1);text-shadow:none}}
@keyframes odoPulseUpStrong{0%{filter:brightness(2);text-shadow:0 0 12px rgba(248,81,73,1)}100%{filter:brightness(1);text-shadow:none}}
@keyframes odoPulseDownStrong{0%{filter:brightness(2);text-shadow:0 0 12px rgba(63,185,80,1)}100%{filter:brightness(1);text-shadow:none}}

/* 总览·股指期货基差区块 */
.ov-fut-tbl{width:100%;border-collapse:collapse}
.ov-fut-tbl th,.ov-fut-tbl td{padding:6px 6px;border-bottom:1px solid var(--border);vertical-align:middle;text-align:right}
.ov-fut-tbl th{color:var(--muted);font-weight:500;font-size:10px;text-transform:uppercase}
.ov-fut-tbl th:first-child,.ov-fut-tbl th:nth-child(2),
.ov-fut-tbl td:first-child,.ov-fut-tbl td:nth-child(2){text-align:left}
.ov-fut-nm b{font-size:13px}
.ov-fut-sym{color:var(--muted);font-size:10px;margin-left:3px}
.ov-fut-px{font-size:15px;font-weight:700}
.ov-fut-chg{display:block;font-size:11px}
.ov-fut-fut{color:var(--muted);font-size:11px}
.ov-fut-spark{width:88px}

.dark-stale{ font-size:10px; color:var(--muted,#999); background:rgba(150,150,150,.15); padding:0 4px; border-radius:3px; cursor:help; }

/* 风格轮动 */
/* 注意:不要复用 .card —— 那是总览页的小统计卡(flex:1),会把本页的内容面板
   拉满整行;字号调大(zoom 1.15/1.3)时两张卡放不下还会各占一行。这里的面板
   必须按内容自适应宽度。 */
.style-blocks{display:flex;gap:14px;align-items:flex-start;flex-wrap:wrap}
.style-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;
  padding:12px 14px;flex:0 1 auto;max-width:100%;overflow-x:auto}
.style-card h3{font-size:13px;font-weight:600;margin-bottom:2px}
.style-sub{font-size:11px;color:var(--muted);margin-bottom:10px}
.style-note{font-size:11px;color:var(--muted);margin-top:8px;line-height:1.6}
/* 散点需要横向铺开,但要封上限:viewBox 是 720x300,不封的话在宽屏上被等比拉到
   1400px+,点变稀、字被放大、卡片高度翻倍。 */
.style-card-quad{flex:1 1 560px;min-width:0;max-width:860px}
.style-grid{border-collapse:collapse}
.style-grid th{font-size:11px;color:var(--muted);font-weight:500;padding:4px 6px}
.style-grid td{padding:0}
.style-grid .rowhead{font-size:12px;color:var(--muted);padding-right:8px;text-align:right;white-space:nowrap}
.style-grid .sep td{border-top:2px dashed #444;padding-top:4px}
#tab-style .cell{border:1px solid var(--bg);border-radius:4px;padding:9px 10px;text-align:center;min-width:86px}
#tab-style .cell .v{font-size:15px;font-weight:700;line-height:1.25}
#tab-style .cell .q{font-size:11.5px;font-weight:600;line-height:1.3;color:rgba(255,255,255,.88)}
#tab-style .cell .p{font-size:10px;color:var(--muted)}
#tab-style .cell .cap{font-size:10px;color:var(--muted);margin-top:3px}
#tab-style .cell .tilt{font-size:15px;font-weight:700}
#tab-style .thin{outline:1px dashed #d29922;outline-offset:-3px}
#tab-style .idxhead{text-align:left;padding:5px 8px 5px 2px}
#tab-style .idxhead .n{font-size:12px;font-weight:600}
