:root {
  /* 背景层级 */
  --bg: #0a0c10;
  --bg-1: #0d0f14;
  --bg-2: #13161d;
  --bg-3: #181c26;
  --bg-4: #1e232e;

  /* 边框 */
  --border: #242b38;
  --border-2: #2d3545;
  --border-3: #3a4456;

  /* 文字 */
  --text: #f0f2f5;
  --text-2: #a9b2c3;
  --text-3: #6e7a8f;

  /* 涨跌与强调 */
  --up: #ff5b5b;
  --up-2: #ff8585;
  --down: #00c853;
  --down-2: #4dd47d;
  --accent: #5b8cff;
  --accent-2: #8bb2ff;
  --warning: #ffb020;
  --danger: #ff5b5b;

  /* 间距 */
  --pad-page: 14px;
  --pad-card: 14px;
  --gap-sm: 8px;
  --gap-md: 12px;
  --gap-lg: 16px;

  /* 圆角 */
  --radius-sm: 8px;
  --radius-md: 12px;
  --radius-lg: 16px;
  --radius-xl: 20px;

  --mono: "JetBrains Mono", "SF Mono", Consolas, monospace;
}

* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
html, body { margin: 0; height: 100%; background: var(--bg); color: var(--text);
  font: 14px/1.45 -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
  overscroll-behavior: none; }

/* A股绿涨红跌：仅通过 .up/.down 颜色反转实现 */
body.cn-green-up .up { color: var(--down); }
body.cn-green-up .down { color: var(--up); }

button, input, select { font-family: inherit; }
button { cursor: pointer; border: none; }
.mono { font-family: var(--mono); }
.muted { color: var(--text-3); }
.up { color: var(--up); } .down { color: var(--down); }

#app { padding-bottom: calc(62px + env(safe-area-inset-bottom, 0px)); min-height: 100vh; }

/* ========== 顶栏 ========== */
.topbar { position: sticky; top: 0; z-index: 10; display: flex; align-items: center; justify-content: space-between;
  padding: calc(10px + env(safe-area-inset-top, 0px)) var(--pad-page) 10px;
  background: rgba(10,12,16,.92); backdrop-filter: blur(12px); border-bottom: 1px solid var(--border); }
.topbar .brand { font-weight: 700; font-size: 16px; display: flex; align-items: center; gap: 8px; letter-spacing: -.2px; }
.topbar .status { font-size: 11px; color: var(--text-3); padding: 3px 8px; border-radius: 10px; background: var(--bg-3); border: 1px solid var(--border); }
.topbar .status.ok { color: var(--down-2); border-color: rgba(0,200,83,.35); background: rgba(0,200,83,.10); }
.topbar .status.err { color: var(--up-2); border-color: rgba(255,91,91,.35); background: rgba(255,91,91,.10); }

/* 章节标题 */
.sec-title { padding: var(--gap-lg) var(--pad-page) var(--gap-sm); font-size: 12px; color: var(--text-2);
  display: flex; justify-content: space-between; align-items: center; font-weight: 600; letter-spacing: .3px; text-transform: uppercase; }
.sec-title span:first-child { font-size: 13px; }

/* ========== 基础组件：卡片 / 按钮 / 输入 ========== */
.card { background: var(--bg-2); border: 1px solid var(--border); border-radius: var(--radius-md); overflow: hidden; }
.card + .card { margin-top: var(--gap-md); }
.row-card { display: flex; align-items: center; gap: var(--gap-sm); padding: var(--pad-card); background: var(--bg-2);
  border-bottom: 1px solid var(--border); }
.row-card:last-child { border-bottom: none; }
.row-card:active, .row-card.active-press { background: var(--bg-3); }

input, select { background: var(--bg-1); color: var(--text); border: 1px solid var(--border-2); border-radius: var(--radius-sm);
  padding: 9px 11px; font-size: 14px; outline: none; width: 100%; }
input:focus, select:focus { border-color: var(--accent); }

.btn { background: var(--accent); color: #fff; border-radius: var(--radius-sm); padding: 9px 14px; font-size: 14px; font-weight: 500; }
.btn:active { filter: brightness(.92); }
.btn.ghost { background: transparent; color: var(--text-2); border: 1px solid var(--border-2); }
.btn.ghost:hover { color: var(--text); border-color: var(--border-3); }
.btn.ghost.sm { padding: 5px 10px; font-size: 12px; }
.btn.ghost.xs { padding: 3px 9px; font-size: 11px; }
.btn.block { display: block; width: 100%; }

.empty { padding: 38px 20px; text-align: center; color: var(--text-3); font-size: 13px; }
.empty.sm { padding: 18px 14px; }

/* ========== 底部导航 ========== */
.tabbar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 40; display: flex; justify-content: space-around;
  background: rgba(10,12,16,.95); backdrop-filter: blur(16px); border-top: 1px solid var(--border);
  padding-bottom: env(safe-area-inset-bottom,0); }
.tabbar .tab { flex: 1; background: transparent; border: none; color: var(--text-3); display: flex; flex-direction: column;
  align-items: center; justify-content: center; gap: 3px; padding: 7px 0 9px; position: relative; }
.tabbar .tab.tab-active { color: var(--accent); }
.tabbar .tab::before { content: ""; position: absolute; top: 0; left: 25%; right: 25%; height: 2px; background: var(--accent); border-radius: 0 0 2px 2px;
  opacity: 0; transition: opacity .15s; }
.tabbar .tab.tab-active::before { opacity: 1; }
.tab-ico { width: 22px; height: 22px; display: flex; align-items: center; justify-content: center; }
.tab-ico svg { width: 100%; height: 100%; fill: currentColor; }
.tab-lbl { font-size: 10px; font-weight: 500; }

/* ========== 自选页 ========== */
.wl-search { padding: var(--gap-md) var(--pad-page); }
.wl-search .card { padding: var(--gap-sm); display: flex; gap: var(--gap-sm); align-items: stretch; }
.wl-search input { flex: 1; min-width: 0; }
.wl-search select { width: auto; flex: 0 0 88px; padding-left: 8px; padding-right: 6px; }
.wl-search .btn { flex: 0 0 auto; }

.wl-hint { padding: 0 var(--pad-page) var(--gap-sm); font-size: 11px; color: var(--text-3); }

.wl-row { display: flex; align-items: center; gap: var(--gap-sm); padding: var(--pad-card) var(--pad-page); border-bottom: 1px solid var(--border); }
.wl-row:active, .wl-row.rm-press { background: rgba(255,91,91,.08); }
.wl-row.rm-press .wl-code, .wl-row.rm-press .wl-price, .wl-row.rm-press .wl-chg { opacity: .55; }
.wl-code { flex: 1 1 auto; min-width: 0; }
.wl-code b { font-size: 16px; font-weight: 700; letter-spacing: -.3px; }
.wl-code .nm { font-size: 12px; color: var(--text-2); display: block; margin-top: 2px; }
.wl-price { flex: 0 0 92px; text-align: right; font-family: var(--mono); font-size: 17px; font-weight: 600; padding-right: var(--gap-sm); }
.wl-chg { flex: 0 0 76px; text-align: center; font-family: var(--mono); font-size: 13px; font-weight: 700;
  padding: 6px 0; border-radius: var(--radius-sm); color: #fff; }
.wl-chg.up { background: var(--up); } .wl-chg.down { background: var(--down); } .wl-chg.flat { background: var(--border-2); color: var(--text-2); }

.chips { display: flex; flex-wrap: wrap; gap: 7px; padding: 0 var(--pad-page) var(--gap-md); }
.chip { background: var(--bg-2); border: 1px solid var(--border); color: var(--text-2); border-radius: 14px; padding: 5px 12px; font-size: 12px; font-weight: 500; }
.chip:active { background: var(--bg-3); border-color: var(--accent); color: var(--accent); }

/* 多股对比 */
#cmpWrap { padding: 0 var(--pad-page) var(--gap-lg); }
.cmp-head, .cmp-row { display: flex; align-items: center; font-size: 13px; border-bottom: 1px solid var(--border); }
.cmp-head { color: var(--text-3); font-size: 12px; padding: 8px var(--pad-card); background: var(--bg-3); border-top: 1px solid var(--border); }
.cmp-row { cursor: pointer; padding: 10px var(--pad-card); background: var(--bg-2); }
.cmp-row:last-child { border-bottom: none; }
.cmp-row:active { background: var(--bg-3); }
.cmp-head .col, .cmp-row .col { padding: 0 6px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cmp-head .col:first-child, .cmp-row .col:first-child { padding-left: 0; }
.cmp-head .col:last-child, .cmp-row .col:last-child { padding-right: 0; }
.cmp-head .col.code, .cmp-row .col.code { flex: 1 1 35%; min-width: 0; }
.cmp-head .col:nth-child(2), .cmp-row .col:nth-child(2),
.cmp-head .col:nth-child(3), .cmp-row .col:nth-child(3) { flex: 0 0 72px; text-align: right; }
.cmp-head .col:nth-child(4), .cmp-row .col:nth-child(4) { flex: 0 0 84px; text-align: right; }
.cmp-row .code b { font-weight: 700; }
.cmp-row .nm { margin-left: 6px; font-size: 12px; color: var(--text-3); }
.cmp-row .pp { font-family: var(--mono); font-weight: 600; }
.cmp-row .cg { font-weight: 700; }
.cmp-spark { width: 120px; height: 26px; display: inline-block; vertical-align: middle; }
@media (max-width: 640px) {
  .cmp-head .col:nth-child(4), .cmp-row .col:nth-child(4) { flex: 0 0 72px; }
  .cmp-row .nm { display: none; }
  .cmp-spark { width: 72px; height: 22px; }
}

/* 成交额排行（5 列：# / 代码名称 / 现价 / 涨跌 / 成交额）——仅在 #rkBody 内生效，不影响自选对比 */
.chip.chip-active { background: var(--bg-3); border-color: var(--accent); color: var(--accent); }
.rk-head .col.rk-rank { flex: 0 0 28px; text-align: center; }
#rkBody .cmp-row .col.rk-rank { flex: 0 0 28px; text-align: center; font-weight: 600; color: var(--text-3); }
.rk-head .col:nth-child(2), #rkBody .cmp-row .col:nth-child(2),
.rk-head .col:nth-child(3), #rkBody .cmp-row .col:nth-child(3) { flex: 0 0 64px; }
.rk-head .col:nth-child(4), #rkBody .cmp-row .col:nth-child(4),
.rk-head .col:nth-child(5), #rkBody .cmp-row .col:nth-child(5) { flex: 0 0 78px; }
.rk-head .col.code, #rkBody .cmp-row .col.code { flex: 1 1 auto; min-width: 0; }
.rk-foot { padding: 8px var(--pad-page) var(--gap-lg); font-size: 12px; color: var(--text-3); }
@media (max-width: 640px) {
  .rk-head .col:nth-child(2), #rkBody .cmp-row .col:nth-child(2),
  .rk-head .col:nth-child(3), #rkBody .cmp-row .col:nth-child(3) { flex: 0 0 56px; }
  .rk-head .col:nth-child(4), #rkBody .cmp-row .col:nth-child(4),
  .rk-head .col:nth-child(5), #rkBody .cmp-row .col:nth-child(5) { flex: 0 0 66px; }
  #rkBody .cmp-row .col.rk-rank { flex: 0 0 20px; }
}

/* 告警 */
.al-list { padding: 0 var(--pad-page) var(--gap-md); }
.al-row { display: flex; align-items: center; gap: var(--gap-sm); padding: 11px var(--pad-card); background: var(--bg-2);
  border: 1px solid var(--border); border-radius: var(--radius-md); margin-bottom: var(--gap-sm); font-size: 13px; }
.al-row .al-code { cursor: pointer; color: var(--text); }
.al-row .al-code:hover { color: var(--accent-2); text-decoration: underline; }
.al-row .del { margin-left: auto; background: transparent; color: var(--text-3); border: 1px solid var(--border-2); padding: 5px 12px; font-size: 12px; border-radius: var(--radius-sm); }
.al-fired { color: var(--warning); font-size: 11px; font-weight: 600; margin-left: 4px; }

.al-form { padding: 0 var(--pad-page) var(--gap-lg); }
.al-form .card { display: flex; gap: var(--gap-sm); padding: var(--gap-sm); align-items: stretch; }
.al-form input, .al-form select { flex: 1; min-width: 0; }
.al-form input[type="number"] { flex: 0 0 96px; }

/* ========== 个股详情 ========== */
.detail { position: fixed; inset: 0; z-index: 60; background: var(--bg); overflow-y: auto; padding-bottom: 64px; }
.detail-top { position: sticky; top: 0; z-index: 5; display: flex; align-items: center; gap: 10px;
  padding: calc(10px + env(safe-area-inset-top, 0px)) 12px 10px; background: rgba(10,12,16,.95);
  backdrop-filter: blur(12px); border-bottom: 1px solid var(--border); }
.detail-top .back { background: transparent; border: none; color: var(--text); width: 34px; height: 34px; border-radius: 50%; display: flex; align-items: center; justify-content: center; }
.detail-top .back svg { width: 22px; height: 22px; fill: currentColor; }
.detail-top .back:active { background: var(--bg-3); }
.detail-top .dq-name { flex: 1; font-size: 16px; font-weight: 700; }
.detail-top .dq-name small { font-size: 11px; color: var(--text-3); font-weight: 500; display: block; margin-top: 1px; }
.detail-top .icon-btn { background: transparent; border: 1px solid var(--border-2); color: var(--text); border-radius: 50%; width: 32px; height: 32px; padding: 0; display: flex; align-items: center; justify-content: center; }
.detail-top .icon-btn svg { width: 18px; height: 18px; }
.detail-top .icon-btn:active { background: var(--bg-3); }

/* 报价头 */
.dq-quote { padding: var(--gap-md) var(--pad-page) var(--gap-sm); }
.dq-quote .lp { font-family: var(--mono); font-size: 34px; font-weight: 700; letter-spacing: -.5px; line-height: 1.1; }
.dq-quote .meta { display: flex; align-items: center; gap: var(--gap-sm); margin-top: 6px; flex-wrap: wrap; }
.dq-quote .chg { font-family: var(--mono); font-size: 15px; font-weight: 600; }
.dq-quote .chg-box { font-size: 13px; font-weight: 700; padding: 4px 9px; border-radius: var(--radius-sm); color: #fff; }
.dq-quote .chg-box.up { background: var(--up); } .dq-quote .chg-box.down { background: var(--down); } .dq-quote .chg-box.flat { background: var(--border-2); color: var(--text-2); }
.dq-quote .extra { font-size: 12px; color: var(--text-3); }

/* 统计网格：移动端 2 列，桌面 4 列 */
.dq-stats { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1px; background: var(--border); margin: 0 var(--pad-page);
  border: 1px solid var(--border); border-radius: var(--radius-md); overflow: hidden; }
.dq-stats.placeholder { display: block; background: transparent; border: none; color: var(--text-3); padding: 14px; text-align: center; }
.dq-stats .s { background: var(--bg-2); padding: 10px 12px; }
.dq-stats .s .l { font-size: 11px; color: var(--text-3); margin-bottom: 3px; } .dq-stats .s .v { font-family: var(--mono); font-size: 13px; font-weight: 600; }

/* 周期 + 指标控件 */
.period-tabs { display: flex; padding: var(--gap-md) var(--pad-page) var(--gap-sm); gap: 6px; flex-wrap: wrap; }
.period-tabs button { background: var(--bg-2); border: 1px solid var(--border); color: var(--text-2); padding: 5px 12px; border-radius: var(--radius-sm); font-size: 12px; font-weight: 500; }
.period-tabs button.active { color: var(--accent); border-color: var(--accent); background: rgba(91,140,255,.12); }
.chart-opts { display: flex; align-items: center; gap: var(--gap-md); padding: 2px var(--pad-page) var(--gap-sm); flex-wrap: wrap; font-size: 12px; color: var(--text-2); }
.chart-opts .autype { display: inline-flex; gap: 4px; }
.chart-opts .autype button { background: transparent; border: 1px solid var(--border-2); color: var(--text-3); padding: 3px 9px; border-radius: 10px; font-size: 11px; }
.chart-opts .autype button.active { color: var(--accent); border-color: var(--accent); }
.chart-opts .ov-toggles { display: inline-flex; gap: var(--gap-md); }
.chart-opts .ov-toggles label { display: inline-flex; align-items: center; gap: 4px; }
.chart-opts .ov-toggles input { accent-color: var(--accent); width: auto; }
.chart-opts select { width: auto; padding: 3px 8px; font-size: 12px; }

/* 图表容器 */
.chart-box { padding: 4px var(--pad-page); }
#chartMain { width: 100%; height: 260px; border-radius: var(--radius-md); }
#chartSub { width: 100%; height: 130px; margin-top: 4px; border-radius: var(--radius-md); }
@media (min-width: 769px) { #chartMain { height: 420px; } #chartSub { height: 160px; } }

/* 详情内 Tab */
.detail-tabs { display: flex; padding: var(--gap-sm) var(--pad-page); gap: 4px; }
.detail-tabs button { background: transparent; border: 1px solid transparent; color: var(--text-3); padding: 8px 12px; font-size: 13px;
  border-radius: var(--radius-sm); font-weight: 500; }
.detail-tabs button.active { color: var(--text); background: var(--bg-2); border-color: var(--border); }
.detail-body { padding: var(--gap-sm) var(--pad-page) var(--gap-lg); }

/* RSI 分析面板 */
.rsi-panel { padding: var(--gap-sm) var(--pad-page) var(--gap-md); }
.mp-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: var(--border);
  border: 1px solid var(--border); border-radius: var(--radius-md); overflow: hidden; margin-bottom: 10px; }
.mp-cell { background: var(--bg-2); padding: 9px 8px; text-align: center; cursor: pointer; transition: background .12s; }
.mp-cell:active { background: var(--bg-3); }
.mp-cell.up { background: rgba(255,91,91,.08); } .mp-cell.down { background: rgba(0,200,83,.08); }
.mp-cell.rsi-ob { background: rgba(255,176,32,.09); } .mp-cell.rsi-os { background: rgba(0,200,83,.10); }
.mp-l { font-size: 11px; color: var(--text-3); margin-bottom: 3px; }
.mp-v { font-family: var(--mono); font-size: 17px; font-weight: 700; }
.mp-cell.up .mp-v { color: var(--up); } .mp-cell.down .mp-v { color: var(--down); }
.mp-cell.rsi-ob .mp-v { color: var(--warning); } .mp-cell.rsi-os .mp-v { color: var(--down); }
.mp-z { font-size: 11px; margin-top: 2px; font-weight: 600; }
.mp-cell.up .mp-z { color: var(--up-2); } .mp-cell.down .mp-z { color: var(--down-2); }
.mp-cell.rsi-ob .mp-z { color: var(--warning); } .mp-cell.rsi-os .mp-z { color: var(--down-2); }
.rsi-empty { background: var(--bg-2); border: 1px solid var(--border); border-radius: var(--radius-md);
  padding: 16px; text-align: center; color: var(--text-3); font-size: 12px; }
.rsi-loading { background: var(--bg-2); border: 1px solid var(--border); border-radius: var(--radius-md);
  padding: 16px; text-align: center; color: var(--text-3); font-size: 12px; }
.rsi-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 8px; }
.rsi-title { font-size: 13px; font-weight: 600; letter-spacing: .3px; }
.rsi-head .muted { font-size: 11px; }
.rsi-vals { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: var(--border);
  border: 1px solid var(--border); border-radius: var(--radius-md); overflow: hidden; margin-bottom: 8px; }
.rsi-val { background: var(--bg-2); padding: 10px 8px; text-align: center; }
.rsi-val.ob { background: rgba(255,176,32,.08); } .rsi-val.os { background: rgba(0,200,83,.08); }
.rsi-vl { font-size: 11px; color: var(--text-3); margin-bottom: 4px; }
.rsi-vv { font-family: var(--mono); font-size: 18px; font-weight: 700; color: var(--text); }
.rsi-vz { font-size: 11px; margin-top: 3px; font-weight: 600; }
.rsi-ob { color: var(--warning); } .rsi-os { color: var(--down); }
.rsi-verdict { display: flex; align-items: center; gap: 8px; background: var(--bg-2); border: 1px solid var(--border);
  border-radius: var(--radius-md); padding: 10px 12px; font-size: 13px; font-weight: 600; }
.rsi-verdict.ob { border-color: rgba(255,176,32,.4); } .rsi-verdict.os { border-color: rgba(0,200,83,.4); }
.rsi-verdict.up { border-color: rgba(255,91,91,.3); color: var(--up-2); }
.rsi-verdict.down { border-color: rgba(0,200,83,.3); color: var(--down-2); }
.rsi-vtag { font-size: 10px; color: var(--text-3); background: var(--bg-3); border: 1px solid var(--border-2);
  padding: 2px 7px; border-radius: 8px; font-weight: 600; flex: 0 0 auto; }
.rsi-sigs { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0; }
.rsi-sig { font-size: 11px; padding: 3px 9px; border-radius: 10px; border: 1px solid var(--border-2); background: var(--bg-2); }
.rsi-sig.up { color: var(--up-2); border-color: rgba(255,91,91,.35); background: rgba(255,91,91,.08); }
.rsi-sig.down { color: var(--down-2); border-color: rgba(0,200,83,.35); background: rgba(0,200,83,.08); }
.rsi-sig.rsi-ob { color: var(--warning); border-color: rgba(255,176,32,.35); background: rgba(255,176,32,.08); }
.rsi-sig.rsi-os { color: var(--down-2); border-color: rgba(0,200,83,.35); background: rgba(0,200,83,.08); }
.rsi-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: var(--border);
  border: 1px solid var(--border); border-radius: var(--radius-md); overflow: hidden; }
.rsi-cell { background: var(--bg-2); padding: 9px 10px; display: flex; flex-direction: column; gap: 3px; }
.rsi-cell .k { font-size: 11px; color: var(--text-3); } .rsi-cell .v { font-family: var(--mono); font-size: 13px; font-weight: 600; }

/* 盘口 */
.ob5 { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; background: var(--border); border: 1px solid var(--border); border-radius: var(--radius-md); overflow: hidden; }
.ob5 .lvl { background: var(--bg-2); padding: 8px 12px; display: flex; justify-content: space-between; font-family: var(--mono); font-size: 13px; }
.ob5 .lvl.ask .p { color: var(--down); } .ob5 .lvl.bid .p { color: var(--up); }
.ob5 .p { font-weight: 700; } .ob5 .v { color: var(--text-3); font-size: 12px; }
.ob-mid { text-align: center; font-family: var(--mono); font-size: 12px; padding: 8px; color: var(--text-3); background: var(--bg-2); border-bottom: 1px solid var(--border); }

/* 波动率面板 */
.vol-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 8px; }
.vol-title { font-size: 13px; font-weight: 600; letter-spacing: .3px; }
.vol-head .muted { font-size: 11px; }
.vol-hero { background: var(--bg-2); border: 1px solid var(--border); border-radius: var(--radius-md); padding: 14px; }
.vol-hero-top { display: flex; align-items: flex-start; justify-content: space-between; }
.vol-hero-l { font-size: 11px; color: var(--text-3); }
.vol-hero-v { font-family: var(--mono); font-size: 30px; font-weight: 700; line-height: 1.05; margin-top: 4px; }
.vol-hero-v.low { color: var(--down-2); } .vol-hero-v.mid { color: var(--accent-2); }
.vol-hero-v.high { color: var(--warning); } .vol-hero-v.extreme { color: var(--up-2); }
.vol-tier { font-size: 12px; font-weight: 700; padding: 4px 11px; border-radius: 12px; margin-top: 4px; }
.vol-tier.low { color: var(--down-2); background: rgba(0,200,83,.14); border: 1px solid rgba(0,200,83,.35); }
.vol-tier.mid { color: var(--accent-2); background: rgba(91,140,255,.14); border: 1px solid rgba(91,140,255,.35); }
.vol-tier.high { color: var(--warning); background: rgba(255,176,32,.14); border: 1px solid rgba(255,176,32,.35); }
.vol-tier.extreme { color: var(--up-2); background: rgba(255,91,91,.14); border: 1px solid rgba(255,91,91,.35); }
.vol-meter { position: relative; height: 8px; border-radius: 4px; overflow: hidden; display: flex; margin-top: 14px; }
.vol-zone { height: 100%; flex: 1; }
.vol-zone.low { background: rgba(0,200,83,.45); } .vol-zone.mid { background: rgba(91,140,255,.45); }
.vol-zone.high { background: rgba(255,176,32,.5); } .vol-zone.extreme { background: rgba(255,91,91,.55); }
.vol-marker { position: absolute; top: -3px; bottom: -3px; width: 2px; background: var(--text);
  box-shadow: 0 0 0 2px rgba(10,12,16,.85); transform: translateX(-1px); }
.vol-scale { display: flex; font-size: 10px; color: var(--text-3); margin-top: 4px; }
.vol-scale span { flex: 1; text-align: center; }

.vol-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; background: var(--border);
  border: 1px solid var(--border); border-radius: var(--radius-md); overflow: hidden; margin-top: var(--gap-md); }
.vol-card { background: var(--bg-2); padding: 12px 12px; }
.vol-card .l { font-size: 11px; color: var(--text-3); margin-bottom: 5px; }
.vol-card .v { font-family: var(--mono); font-size: 20px; font-weight: 700; line-height: 1; }
.vol-card .t { font-size: 11px; margin-top: 4px; font-weight: 600; color: var(--text-3); }
.vol-card.low .v { color: var(--down-2); } .vol-card.low .t { color: var(--down-2); }
.vol-card.mid .v { color: var(--accent-2); } .vol-card.mid .t { color: var(--accent-2); }
.vol-card.high .v { color: var(--warning); } .vol-card.high .t { color: var(--warning); }
.vol-card.extreme .v { color: var(--up-2); } .vol-card.extreme .t { color: var(--up-2); }

.vol-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; background: var(--border);
  border: 1px solid var(--border); border-radius: var(--radius-md); overflow: hidden; margin-top: var(--gap-md); }
.vol-cell { background: var(--bg-2); padding: 10px 12px; }
.vol-cell .l { font-size: 11px; color: var(--text-3); margin-bottom: 5px; display: flex; justify-content: space-between; align-items: center; gap: 6px; }
.vol-cell .v { font-family: var(--mono); font-size: 15px; font-weight: 700; }
.vol-sig { font-size: 9px; padding: 1px 6px; border-radius: 8px; font-weight: 700; line-height: 1.5; }
.vol-sig.bull { color: var(--up-2); background: rgba(255,91,91,.12); }
.vol-sig.bear { color: var(--down-2); background: rgba(0,200,83,.12); }

.vol-notes { margin-top: var(--gap-md); }
.vol-note { font-size: 11px; color: var(--text-3); padding: 6px 0; border-bottom: 1px solid var(--border); line-height: 1.5; }
.vol-note:last-child { border-bottom: none; }
.vol-note b { color: var(--text-2); font-weight: 600; }

/* 逐笔 */
.ticks { background: var(--bg-2); border: 1px solid var(--border); border-radius: var(--radius-md); overflow: hidden; }
.ticks .th, .tk { display: flex; gap: 10px; padding: 9px 12px; font-family: var(--mono); font-size: 12px; border-bottom: 1px solid var(--border); }
.ticks .th { color: var(--text-3); font-size: 11px; background: var(--bg-3); }
.tk:last-child { border-bottom: none; }
.tk .t { flex: 0 0 56px; color: var(--text-3); } .tk .p { flex: 1; text-align: right; } .tk .v { flex: 0 0 72px; text-align: right; color: var(--text-3); } .tk .d { flex: 0 0 42px; text-align: right; }
.tk.big .p, .tk.big .v { font-weight: 700; } .tk.big { background: rgba(255,91,91,.10); }

/* 资金流 */
.mf-total { font-size: 15px; padding: 8px 0 12px; font-weight: 600; }
.mf-row { display: flex; align-items: center; gap: var(--gap-sm); padding: 6px 0; font-size: 13px; }
.mf-l { flex: 0 0 54px; color: var(--text-3); }
.mf-bar { flex: 1; height: 10px; background: var(--bg-1); border-radius: 4px; display: flex; overflow: hidden; }
.mf-in { background: var(--up); } .mf-out { background: var(--down); }
.mf-net { flex: 0 0 92px; text-align: right; font-family: var(--mono); font-weight: 600; }

/* 资料 */
.kv-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; background: var(--border); border: 1px solid var(--border); border-radius: var(--radius-md); overflow: hidden; }
.kv-grid .kv { background: var(--bg-2); padding: 10px 12px; display: flex; justify-content: space-between; font-size: 13px; }
.kv .k { color: var(--text-3); } .kv .v { font-family: var(--mono); font-weight: 500; }
.plates { display: flex; flex-wrap: wrap; gap: 6px; margin-top: var(--gap-md); }
.plate { background: var(--bg-1); border: 1px solid var(--border); border-radius: 14px; padding: 3px 11px; font-size: 12px; color: var(--text-2); }
.plate.concept { color: #c9a8ff; border-color: #3f335e; background: rgba(201,168,255,.08); }
.plate.ind { color: #6fe0ff; border-color: #274b66; background: rgba(111,224,255,.08); }

/* 底部操作栏 */
.action-bar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 6; display: flex; gap: var(--gap-sm);
  padding: 8px 12px calc(8px + env(safe-area-inset-bottom,0)); background: rgba(19,22,29,.98); border-top: 1px solid var(--border); }
.action-bar button { flex: 1; height: 42px; font-size: 15px; border-radius: var(--radius-sm); font-weight: 600; color: #fff; }
.act-buy { background: var(--up); } .act-sell { background: var(--down); }
.act-alert { flex: 0 0 72px; background: transparent; border: 1px solid var(--border-2); color: var(--text-2); font-weight: 500; }
.act-alert:active { background: var(--bg-3); }
.act-ai { flex: 0 0 84px; background: linear-gradient(135deg, #6d5cff, #4a3df0); font-weight: 600; }
.act-ai:active { filter: brightness(1.15); }

/* ========== AI 买卖建议面板 ========== */
.advice-panel {
  position: fixed; inset: 0; z-index: 70; display: flex; flex-direction: column;
  background: var(--bg-1); color: var(--text);
}
.adv-top {
  display: flex; align-items: center; gap: 10px; padding: 12px 14px; flex-wrap: wrap;
  border-bottom: 1px solid var(--border); background: var(--bg-2);
}
.adv-back { width: 32px; height: 32px; border-radius: 8px; border: 1px solid var(--border-2);
  background: transparent; color: var(--text); font-size: 18px; cursor: pointer; }
.adv-title { font-size: 16px; font-weight: 600; flex: 1; }
.adv-stock { font-size: 13px; color: var(--text-2); white-space: nowrap; }
.adv-stock .adv-stock-nm { font-weight: 600; color: var(--text); margin-right: 6px; }
.adv-stock .adv-stock-code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12px; color: var(--text-3); }
.adv-action { display: flex; align-items: center; gap: 10px; min-height: 30px; flex-wrap: wrap; justify-content: flex-end; }
.adv-action-grp { display: inline-flex; align-items: center; gap: 6px; }
.adv-action-lbl { font-size: 11px; color: var(--text-3); font-weight: 600; }
.adv-action-tag { padding: 4px 12px; border-radius: 14px; font-size: 13px; font-weight: 700; color: #fff; }
.adv-action-tag.up { background: var(--up); } .adv-action-tag.down { background: var(--down); }
.adv-action-tag.muted { background: var(--bg-3); color: var(--text-2); }
.adv-conf { display: inline-flex; align-items: center; width: 64px; height: 6px; border-radius: 3px;
  background: var(--bg-3); overflow: hidden; }
.adv-conf-bar { display: block; height: 100%; background: linear-gradient(90deg, #f5a623, #ff5b5b); }
.adv-action b { font-size: 13px; }
.adv-meta { display: flex; gap: 14px; flex-wrap: wrap; padding: 8px 14px;
  font-size: 12px; color: var(--text-2); border-bottom: 1px solid var(--border); }
.adv-meta-item b { color: var(--text); font-weight: 600; }
.adv-meta-item.warn { color: var(--warning); }

/* 大结论卡：短线 / 长线 两个并列大标签，视线焦点位置 */
.adv-verdict { display: flex; align-items: stretch; padding: 14px 14px 6px; gap: 0; }
.adv-vd-cell { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 6px;
  padding: 12px 6px; background: var(--bg-2); border-radius: var(--radius-md); border: 1px solid var(--border); }
.adv-vd-sep { width: 8px; flex: 0 0 8px; }
.adv-vd-l { font-size: 11px; color: var(--text-3); font-weight: 600; letter-spacing: .5px; }
.adv-vd-tag { font-size: 22px; font-weight: 800; padding: 6px 18px; border-radius: var(--radius-sm); color: #fff;
  letter-spacing: -.5px; min-width: 96px; text-align: center; }
.adv-vd-tag.up { background: var(--up); }
.adv-vd-tag.down { background: var(--down); }
.adv-vd-tag.muted { background: var(--bg-3); color: var(--text-2); }
.adv-vd-tag.pending { background: var(--bg-3); color: var(--text-3); font-size: 14px; font-weight: 500; }
.adv-vd-conf { font-size: 12px; color: var(--text-3); }
.adv-vd-cell[data-term="short"] .adv-vd-tag.up ~ .adv-vd-conf { color: var(--up); }
.adv-vd-cell[data-term="short"] .adv-vd-tag.down ~ .adv-vd-conf { color: var(--down); }

/* 阶段进度提示：聚合数据 / AI 思考中 / 生成结论中 */
.adv-stage { padding: 14px 16px; font-size: 13px; color: var(--text-2); display: flex; align-items: center; gap: 8px; }
.adv-stage .adv-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--accent); flex: 0 0 auto; }
.adv-stage .adv-dot.pulse { animation: adv-pulse 1s ease-in-out infinite; }
@keyframes adv-pulse { 0%,100% { opacity: .35; transform: scale(.85); } 50% { opacity: 1; transform: scale(1.2); } }

/* 思考过程折叠区 */
.adv-think { margin: 0 14px; border: 1px solid var(--border); border-radius: var(--radius-sm); overflow: hidden; background: var(--bg-2); }
.adv-think-head { display: flex; align-items: center; justify-content: space-between; padding: 9px 12px; cursor: pointer; user-select: none; }
.adv-think-head:active { background: var(--bg-3); }
.adv-think-head.open .adv-think-toggle { transform: rotate(180deg); }
.adv-think-toggle { font-size: 11px; color: var(--text-3); transition: transform .15s; }
.adv-think-badge { font-size: 11px; font-weight: 600; padding: 2px 9px; border-radius: 10px; }
.adv-think-badge.live { color: var(--accent); background: rgba(91,140,255,.14); }
.adv-think-badge.live::before { content: ""; display: inline-block; width: 6px; height: 6px; border-radius: 50%;
  background: var(--accent); margin-right: 5px; vertical-align: middle; animation: adv-pulse 1s infinite; }
.adv-think-badge.done { color: var(--text-3); background: var(--bg-3); }
.adv-think-body { padding: 10px 12px; font-size: 12px; line-height: 1.6; color: var(--text-3);
  max-height: 40vh; overflow-y: auto; border-top: 1px solid var(--border); }

.adv-text { flex: 1; overflow-y: auto; padding: 14px 16px 20px; font-size: 14px; line-height: 1.75; }
.adv-text:empty { display: none; }
.adv-text .md-h2 { font-size: 15px; font-weight: 700; margin: 14px 0 4px; color: var(--text); }
.adv-text .md-h3 { font-size: 14px; font-weight: 700; margin: 12px 0 4px; color: var(--text); }
.adv-text .md-li { padding-left: 14px; position: relative; margin: 2px 0; }
.adv-text .md-li::before { content: "·"; position: absolute; left: 2px; color: var(--text-2); }
.adv-text .md-li.md-ord::before { content: ""; }
.adv-text code { background: var(--bg-3); padding: 1px 5px; border-radius: 4px; font-size: 12px; }

.adv-err { padding: 14px 16px; }
.adv-loading { color: var(--text-2); padding: 24px 4px; }
.adv-error { color: var(--up); padding: 12px 4px; }

/* 等待结论占位（推理模型 thinking 阶段，文案未到） */
.adv-pending { text-align: center; padding: 36px 16px 40px; color: var(--text-2); }
.adv-pending-spinner { width: 36px; height: 36px; border: 3px solid var(--border-2);
  border-top-color: var(--accent); border-radius: 50%; margin: 0 auto 14px;
  animation: adv-spin .8s linear infinite; }
@keyframes adv-spin { to { transform: rotate(360deg); } }
.adv-pending-t { font-size: 15px; color: var(--text); font-weight: 600; margin-bottom: 6px; }
.adv-pending-h { font-size: 12px; color: var(--text-3); }
/* 思考过程已在下方流出后，正文区改静态提示（无 spinner），避免长转圈读作"卡死" */
.adv-pending-calm .adv-pending-t::before {
  content: ""; display: inline-block; width: 6px; height: 6px; border-radius: 50%;
  background: var(--accent); margin-right: 8px; vertical-align: middle;
  animation: adv-pulse 1.2s ease-in-out infinite; }
@keyframes adv-pulse { 0%,100%{opacity:.35} 50%{opacity:1} }

/* 完成后工具条：重新生成 / 复制 */
.adv-toolbar { display: flex; gap: 8px; padding: 8px 14px; }
.adv-tool { flex: 1; height: 34px; border-radius: var(--radius-sm); font-size: 13px; font-weight: 600;
  background: var(--bg-3); color: var(--text-2); border: 1px solid var(--border-2); cursor: pointer; }
.adv-tool:active { background: var(--bg-2); color: var(--text); }
.adv-action-tag.ghost { background: var(--bg-3); color: var(--text-3); }

.adv-actions { padding: 10px 14px; border-top: 1px solid var(--border); }
.adv-stop { width: 100%; height: 40px; border-radius: var(--radius-sm); font-size: 14px; font-weight: 600;
  background: var(--bg-3); color: var(--text); border: 1px solid var(--border-2); cursor: pointer; }
.adv-stop:active { background: var(--bg-2); }
.adv-disclaimer { padding: 8px 14px calc(8px + env(safe-area-inset-bottom,0)); font-size: 11px;
  color: var(--text-3); text-align: center; border-top: 1px solid var(--border); }

/* ========== AI 建议：历史 + 命中率回测 ========== */
.adv-history { margin: 6px 14px 0; border: 1px solid var(--border-2); border-radius: var(--radius-sm);
  background: var(--bg-2); }
.adv-hist-head { display: flex; align-items: center; gap: 8px; padding: 8px 10px; cursor: pointer; user-select: none; }
.adv-hist-head.open .adv-hist-toggle { transform: rotate(0); }
.adv-hist-badge { font-size: 10px; font-weight: 700; padding: 2px 8px; border-radius: 10px;
  background: var(--bg-3); color: var(--text-2); letter-spacing: .5px; }
.adv-hist-summary { flex: 1; font-size: 12px; color: var(--text-2); min-width: 0; overflow: hidden;
  text-overflow: ellipsis; white-space: nowrap; }
.adv-hist-summary b { font-weight: 700; }
.adv-hist-toggle { font-size: 11px; color: var(--text-3); }
.adv-hist-head.open .adv-hist-toggle::after { content: " ▴"; }
.adv-hist-body { padding: 0 10px 10px; }
.adv-hist-cur { font-size: 12px; color: var(--text-2); padding: 4px 0 6px; border-bottom: 1px solid var(--border); margin-bottom: 4px; }
.adv-hist-row { display: flex; align-items: center; gap: 7px; padding: 5px 0; font-size: 12px;
  border-bottom: 1px dashed var(--border); }
.adv-hist-row:last-of-type { border-bottom: none; }
.adv-hist-age { color: var(--text-3); font-size: 11px; flex: 0 0 auto; width: 54px; }
.adv-hist-tag { font-size: 11px !important; padding: 2px 8px !important; flex: 0 0 auto; }
.adv-hist-conf { color: var(--text-3); font-size: 11px; flex: 0 0 auto; }
.adv-hist-price { color: var(--text-3); font-size: 11px; flex: 0 0 auto; }
.adv-hist-delta { flex: 1; color: var(--text-2); min-width: 0; overflow: hidden;
  text-overflow: ellipsis; white-space: nowrap; }
.adv-hist-mark { flex: 0 0 auto; width: 16px; text-align: center; font-weight: 800; }
.adv-hist-mark.up { color: var(--up); }
.adv-hist-mark.down { color: var(--down); }
.adv-hist-mark.muted { color: var(--text-3); }
.adv-hist-note { font-size: 10px; color: var(--text-3); padding: 6px 0 2px; line-height: 1.5; }

/* ========== 交易 ========== */
.env-badge { font-size: 10px; padding: 3px 9px; border-radius: 10px; font-weight: 600; margin-left: 8px; }
.env-real { background: rgba(255,91,91,.14); color: var(--up-2); border: 1px solid rgba(255,91,91,.35); }
.env-sim { background: rgba(0,200,83,.14); color: var(--down-2); border: 1px solid rgba(0,200,83,.35); }

.order-card { padding: var(--gap-md) var(--pad-page); }
.order-card .card { padding: var(--gap-md); }
.order-card .row { display: flex; align-items: center; gap: var(--gap-sm); padding: 7px 0; }
.order-card .row .lbl { width: 42px; color: var(--text-3); font-size: 13px; }
.order-card .row:first-child { padding-top: 0; }
.order-card .row:last-child { padding-bottom: 0; }
.stepper { flex: 1; display: flex; gap: var(--gap-sm); }
.stepper input { flex: 1; text-align: center; }
.stepper .step { background: var(--bg-3); border: 1px solid var(--border); color: var(--text-2); padding: 0 14px; font-size: 18px; border-radius: var(--radius-sm); line-height: 36px; }
.stepper .step:active { background: var(--border-2); }
.qty-quick { display: flex; gap: 7px; flex-wrap: wrap; margin: 4px 0 8px 54px; }
.qty-quick .qq { background: var(--bg-3); border: 1px solid var(--border); color: var(--text); border-radius: var(--radius-sm); padding: 5px 12px; font-size: 12px; font-weight: 500; }
.qty-quick .qq:active { background: var(--border-2); }
.trade-btns { display: flex; gap: var(--gap-md); margin-top: var(--gap-md); }
.trade-btns button { flex: 1; height: 44px; font-size: 16px; border: none; color: #fff; border-radius: var(--radius-sm); font-weight: 600; }
.tb-buy { background: var(--up); } .tb-sell { background: var(--down); }
.order-msg { padding: 8px 0 0; font-size: 13px; min-height: 20px; }
.order-msg.ok { color: var(--down); } .order-msg.err { color: var(--up); }

/* 数据卡片列表（替代移动端表格） */
.data-list { padding: 0 var(--pad-page) var(--gap-lg); }
.data-card { background: var(--bg-2); border: 1px solid var(--border); border-radius: var(--radius-md); padding: var(--pad-card); margin-bottom: var(--gap-sm); }
.data-card[data-code] { cursor: pointer; }
.data-card[data-code]:active { background: var(--bg-3); }
.data-card .dc-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
.data-card .dc-code { font-family: var(--mono); font-size: 14px; font-weight: 600; color: var(--text); }
.data-card .dc-side { font-size: 12px; font-weight: 700; }
.data-card .dc-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px 16px; font-size: 12px; }
.data-card .dc-grid .k { color: var(--text-3); } .data-card .dc-grid .v { font-family: var(--mono); font-weight: 500; }
.data-card .dc-op { margin-top: 10px; text-align: right; }
.data-card .dc-op button { padding: 5px 12px; font-size: 12px; }

/* 持仓汇总 */
.pos-sum { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--gap-sm); padding: 0 var(--pad-page) var(--gap-md); }
.ps { background: var(--bg-2); border: 1px solid var(--border); border-radius: var(--radius-md); padding: 10px 12px; }
.ps .l { font-size: 11px; color: var(--text-3); margin-bottom: 3px; } .ps .v { font-family: var(--mono); font-size: 16px; font-weight: 700; }

/* 资金卡片 */
.funds-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--gap-sm); padding: 0 var(--pad-page) var(--gap-md); }
.fund { background: var(--bg-2); border: 1px solid var(--border); border-radius: var(--radius-md); padding: 10px 12px; }
.fund .l { font-size: 11px; color: var(--text-3); margin-bottom: 3px; } .fund .v { font-family: var(--mono); font-size: 15px; font-weight: 700; }
.fund.primary { background: rgba(91,140,255,.10); border-color: rgba(91,140,255,.35); }

/* Toast */
.toast { position: fixed; left: 50%; transform: translateX(-50%); bottom: 72px; z-index: 80; background: var(--bg-3); border: 1px solid var(--border-2);
  border-radius: var(--radius-md); padding: 10px 16px; font-size: 13px; max-width: 88vw; opacity: 0; transition: opacity .25s; pointer-events: none; box-shadow: 0 6px 24px rgba(0,0,0,.5); }
.toast.show { opacity: 1; } .toast.warn { border-color: var(--up); color: var(--up-2); }

/* 桌面端表格 */
.tbl-wrap { overflow-x: auto; padding: 0 var(--pad-page) var(--gap-lg); }
table { width: 100%; border-collapse: collapse; }
th, td { padding: 9px 12px; text-align: left; white-space: nowrap; border-bottom: 1px solid var(--border); font-size: 13px; }
th { color: var(--text-3); font-weight: 500; font-size: 11px; background: var(--bg-3); }
td.num { font-family: var(--mono); text-align: right; }
td.code { font-family: var(--mono); color: var(--text-2); }
tbody tr { cursor: pointer; } tbody tr:active { background: var(--bg-3); }

/* ========== 自选删除（长按） ========== */
.wl-row.rm-press { background: rgba(255,91,91,.12); }

/* ========== 底部确认弹层 ========== */
.modal-mask { position: fixed; inset: 0; z-index: 90; background: rgba(0,0,0,.6);
  display: flex; align-items: flex-end; justify-content: center; opacity: 0; transition: opacity .18s; }
.modal-mask.show { opacity: 1; }
.sheet { width: 100%; max-width: 480px; background: var(--bg-3); border: 1px solid var(--border-2); border-bottom: none;
  border-radius: var(--radius-lg) var(--radius-lg) 0 0; padding: 18px 18px calc(18px + env(safe-area-inset-bottom, 0px));
  transform: translateY(100%); transition: transform .22s ease-out; box-shadow: 0 -8px 30px rgba(0,0,0,.5); }
.modal-mask.show .sheet { transform: translateY(0); }
.sheet .s-title { font-size: 16px; font-weight: 700; margin-bottom: 4px; }
.sheet .s-body { font-size: 14px; color: var(--text); line-height: 1.5; margin-bottom: 6px; }
.sheet .s-body .s-sub { color: var(--text-3); font-size: 12px; margin-top: 4px; }
.sheet .s-row { display: flex; gap: var(--gap-sm); margin-top: var(--gap-lg); }
.sheet .s-row button { flex: 1; height: 46px; font-size: 15px; border-radius: var(--radius-sm); font-weight: 600; }
.sheet .s-cancel { background: transparent; border: 1px solid var(--border-2); color: var(--text); }
.sheet .s-ok { border: none; color: #fff; }
.sheet .s-ok.buy { background: var(--up); }
.sheet .s-ok.sell { background: var(--down); }
.sheet .s-ok.danger { background: var(--danger); }
.sheet .s-ok.primary { background: var(--accent); }

/* ========== 响应式切换 ========== */
@media (max-width: 768px) {
  .data-list { display: block; }
  .tbl-wrap { display: none; }
}

@media (min-width: 769px) {
  :root { --pad-page: 20px; }
  #app { max-width: 1000px; margin: 0 auto; padding-bottom: 30px; }
  .tabbar { display: none; }
  .detail { max-width: 1000px; left: 50%; transform: translateX(-50%); width: 1000px; }
  .dq-stats { grid-template-columns: repeat(4, 1fr); }
  .pos-sum { grid-template-columns: repeat(4, 1fr); }
  .funds-grid { grid-template-columns: repeat(4, 1fr); }
  .data-list { display: none; }
  .tbl-wrap { display: block; }
}

/* 窄屏：更紧凑 */
@media (max-width: 480px) {
  :root { --pad-page: 12px; --pad-card: 12px; }
  .c-sm-hide { display: none !important; }
  th, td { padding: 7px 8px; font-size: 12px; }
  .dq-stats .s { padding: 8px 10px; }
  .dq-quote .lp { font-size: 30px; }
}
