/* 可验证预测 · 冷静结算台账 */
:root{
  --bg:#f1f5f9;
  --card:#ffffff;
  --line:#e2e8f0;
  --line-soft:#f1f5f9;
  --text:#0f172a;
  --muted:#64748b;
  --muted-2:#94a3b8;
  --accent:#5B5CDE;
  --accent-soft:#eef0ff;
  --accent-mid:#c7c9f5;
  --up:#dc2626;
  --up-soft:#fef2f2;
  --down:#16a34a;
  --down-soft:#f0fdf4;
  --warn:#b45309;
  --warn-soft:#fffbeb;
  --warn-line:#fcd34d;
  --chip:#f8fafc;
  --shadow:0 1px 2px rgba(15,23,42,.04), 0 4px 14px rgba(15,23,42,.04);
  --shadow-sm:0 1px 2px rgba(15,23,42,.05);
  --radius:14px;
  --radius-sm:10px;
  --safe-b:env(safe-area-inset-bottom,0px);
  --safe-t:env(safe-area-inset-top,0px);
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{
  margin:0;padding:0;background:var(--bg);color:var(--text);
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased;
}
body{padding-bottom:calc(64px + var(--safe-b))}
.wrap{max-width:520px;margin:0 auto;padding:0 14px 20px}

/* —— 顶栏 —— */
.top{
  position:sticky;top:0;z-index:20;margin:0 -14px;
  padding:calc(10px + var(--safe-t)) 14px 8px;
  background:linear-gradient(180deg,#eef0ff 0%,rgba(241,245,249,.95) 70%,rgba(241,245,249,.88) 100%);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid rgba(226,232,240,.85);
}
.top h1{margin:0;font-size:18px;font-weight:720;letter-spacing:-.02em}
.top .sub{color:var(--muted);font-size:11.5px;margin-top:3px;font-variant-numeric:tabular-nums}
.hint{
  font-size:12px;color:#4338ca;margin:8px 0 0;padding:7px 10px;
  background:rgba(255,255,255,.85);border:1px solid var(--accent-mid);
  border-radius:var(--radius-sm);line-height:1.4;
}
.badge-row{
  display:flex;flex-wrap:nowrap;gap:5px;margin-top:8px;
  overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;
}
.badge-row::-webkit-scrollbar{display:none}
.chip{
  display:inline-flex;align-items:center;flex:0 0 auto;white-space:nowrap;
  background:rgba(255,255,255,.92);border:1px solid var(--line);
  border-radius:999px;padding:4px 8px;font-size:11px;color:var(--muted);font-weight:500;
}
.chip.warn{
  color:var(--warn);border-color:var(--warn-line);background:var(--warn-soft);font-weight:500;
}

/* —— 顶部分段 Tab（矮、权重低于底栏） —— */
.tabs{
  display:flex;gap:3px;margin:10px 0 2px;padding:2px;
  background:rgba(255,255,255,.65);border:1px solid var(--line);border-radius:999px;
}
.tab{
  flex:1;border:0;background:transparent;color:var(--muted);
  border-radius:999px;height:32px;padding:0 10px;
  font-size:13px;font-weight:600;cursor:pointer;
}
.tab.active{background:var(--accent);color:#fff;box-shadow:0 1px 4px rgba(91,92,222,.25)}

.panel{display:none}
.panel.active{display:block}

/* —— 卡片 —— */
.card{
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:12px 13px;margin:10px 0;box-shadow:var(--shadow-sm);
}
.card h2{margin:0 0 8px;font-size:14px;font-weight:700;display:flex;align-items:center;gap:8px;flex-wrap:wrap}

/* 统计三格 */
.card.intro{padding:10px}
.card.intro .intro-row{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.card.intro .stat{
  background:var(--chip);border:1px solid var(--line-soft);border-radius:12px;
  padding:10px 6px;text-align:center;
}
.card.intro .k{font-size:11px;color:var(--muted);font-weight:500}
.card.intro .v{
  font-size:15px;font-weight:720;margin-top:4px;
  font-variant-numeric:tabular-nums;letter-spacing:-.02em;color:var(--text);
}
.intro-foot{margin:8px 2px 0;font-size:11px;color:var(--muted-2);line-height:1.4}

.sec-title{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:14px 0 6px}
.sec-title h3{margin:0;font-size:13.5px;font-weight:700}
.tag{font-size:11px;color:var(--muted-2);font-weight:500}

.seg{
  display:flex;gap:0;border:1px solid var(--line);border-radius:10px;
  overflow:hidden;margin-top:8px;background:var(--chip);padding:3px;
}
.seg button{
  flex:1;border:0;background:transparent;padding:8px;font-size:13px;
  font-weight:650;color:var(--muted);border-radius:8px;cursor:pointer;
}
.seg button.active{background:var(--accent);color:#fff}

/* —— 股票卡 —— */
.stock{
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:12px 13px;margin:7px 0;box-shadow:var(--shadow-sm);position:relative;
}
/* —— 规则组左侧色条（共鸣保持原蓝；命中/失败条见后文覆盖） —— */
.stock.g-resonance,.stock.resonance{
  border-color:var(--accent-mid);
  background:linear-gradient(90deg,var(--accent-soft) 0%,#fff 32%);
}
.stock.g-resonance::before,.stock.resonance::before{
  content:"";position:absolute;left:0;top:10px;bottom:10px;width:3.5px;
  border-radius:0 3px 3px 0;background:var(--accent);
  box-shadow:1px 0 4px rgba(91,92,222,.28);
}
.stock.g-fundamentals{
  border-color:#f5d0a9;
  background:linear-gradient(90deg,#fff7ed 0%,#fff 32%);
}
.stock.g-fundamentals::before{
  content:"";position:absolute;left:0;top:10px;bottom:10px;width:3.5px;
  border-radius:0 3px 3px 0;background:#d97706;
  box-shadow:1px 0 4px rgba(217,119,6,.25);
}
.stock.g-rel_strength{
  border-color:#99f6e4;
  background:linear-gradient(90deg,#f0fdfa 0%,#fff 32%);
}
.stock.g-rel_strength::before{
  content:"";position:absolute;left:0;top:10px;bottom:10px;width:3.5px;
  border-radius:0 3px 3px 0;background:#0d9488;
  box-shadow:1px 0 4px rgba(13,148,136,.25);
}
.stock.g-earnings{
  border-color:#ddd6fe;
  background:linear-gradient(90deg,#f5f3ff 0%,#fff 32%);
}
.stock.g-earnings::before{
  content:"";position:absolute;left:0;top:10px;bottom:10px;width:3.5px;
  border-radius:0 3px 3px 0;background:#7c3aed;
  box-shadow:1px 0 4px rgba(124,58,237,.25);
}
.stock.g-rule_a{
  border-color:#fde68a;
  background:linear-gradient(90deg,#fffbeb 0%,#fff 32%);
}
.stock.g-rule_a::before{
  content:"";position:absolute;left:0;top:10px;bottom:10px;width:3.5px;
  border-radius:0 3px 3px 0;background:#b45309;
  box-shadow:1px 0 4px rgba(180,83,9,.22);
}
.stock.g-limitup_match{
  border-color:#fbcfe8;
  background:linear-gradient(90deg,#fdf2f8 0%,#fff 32%);
}
.stock.g-limitup_match::before{
  content:"";position:absolute;left:0;top:10px;bottom:10px;width:3.5px;
  border-radius:0 3px 3px 0;background:#db2777;
  box-shadow:1px 0 4px rgba(219,39,119,.22);
}
.stock.g-rule_c{
  border-color:#bae6fd;
  background:linear-gradient(90deg,#f0f9ff 0%,#fff 32%);
}
.stock.g-rule_c::before{
  content:"";position:absolute;left:0;top:10px;bottom:10px;width:3.5px;
  border-radius:0 3px 3px 0;background:#0284c7;
  box-shadow:1px 0 4px rgba(2,132,199,.22);
}
.stock.g-rule_b{
  border-color:#e2e8f0;
  background:linear-gradient(90deg,#f8fafc 0%,#fff 32%);
}
.stock.g-rule_b::before{
  content:"";position:absolute;left:0;top:10px;bottom:10px;width:3.5px;
  border-radius:0 3px 3px 0;background:#64748b;
  box-shadow:1px 0 4px rgba(100,116,139,.2);
}
.stock .head{display:flex;justify-content:space-between;gap:10px;align-items:baseline}
.stock .title-line{min-width:0;display:flex;align-items:center;gap:6px;flex-wrap:nowrap}
.stock .rec-day{white-space:nowrap;color:var(--muted-2)}
.stock .name{font-weight:720;font-size:15px;letter-spacing:-.01em}
.stock .code{color:var(--muted-2);font-size:12px;margin-left:6px;font-weight:500;font-variant-numeric:tabular-nums}
.stock .chg{
  font-weight:720;font-variant-numeric:tabular-nums;font-size:16px;
  letter-spacing:-.02em;white-space:nowrap;line-height:1.2;
}
.stock .chg.up{color:var(--up)}
.stock .chg.down{color:var(--down)}
.stock .chg.flat{color:var(--muted)}
.stock .price-line{
  margin-top:6px;font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.stock .price-line b{color:var(--text);font-weight:650}
.stock .meta-line{
  margin-top:3px;font-size:11.5px;color:var(--muted-2);font-variant-numeric:tabular-nums;
}
.flags{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}
.flag{
  font-size:11px;padding:3px 8px;border-radius:999px;
  background:var(--chip);border:1px solid var(--line);color:var(--muted);font-weight:550;
}
.flag.warn{color:var(--warn);border-color:var(--warn-line);background:var(--warn-soft);font-weight:600}
.flag.hit{color:#b91c1c;border-color:#fecaca;background:var(--up-soft);font-weight:650}
.flag.fail{color:#15803d;border-color:#bbf7d0;background:var(--down-soft);font-weight:650}
.flag.suspend,.flag.r1,.flag.r2,.flag.r3{
  color:#3730a3;border-color:var(--accent-mid);background:var(--accent-soft);font-weight:650;
}
.flag.r1{background:#e0e7ff;border-color:#a5b4fc}
.flag.more{color:var(--muted-2);background:transparent;border-style:dashed}
.rule-line{
  margin-top:7px;font-size:11.5px;color:var(--muted-2);line-height:1.4;
}
.stock .note{
  margin-top:6px;font-size:11.5px;color:var(--muted);
  padding:0;background:transparent;border:0;
}

/* —— 分组 —— */
.group-block{margin-bottom:14px}
.group-block .gh{
  display:flex;align-items:center;justify-content:space-between;margin:4px 0 6px;gap:8px;
}
.group-block .gh h4{margin:0;font-size:13px;font-weight:700}
.group-block .gh-right{display:flex;align-items:center;gap:6px}
.group-block .stock{border-color:#e8ecf1} /* 单规则淡灰边 */

/* —— 规则说明 —— */
.card.rules{padding:0;border-color:var(--accent-mid);background:#fff}
.card.rules>summary{
  list-style:none;cursor:pointer;padding:11px 13px;
  display:flex;justify-content:space-between;align-items:center;gap:8px;
  font-weight:650;font-size:13px;color:#3730a3;
}
.card.rules>summary::-webkit-details-marker{display:none}
.rules-sum{display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-width:0}
.rules-brief{font-style:normal;font-weight:500;font-size:11px;color:var(--muted-2)}
.info-i{font-style:normal;opacity:.85}
.card.rules .arrow{font-size:11px;color:var(--muted-2);transition:transform .15s;flex:0 0 auto}
.card.rules[open] .arrow{transform:rotate(90deg);color:var(--accent)}
.card.rules[open] .rules-brief{display:none}
.rules-body{padding:0 13px 13px;border-top:1px solid var(--accent-mid)}
.rules-body h4{margin:12px 0 6px;font-size:13px}
.rules-body dl{margin:0}
.rules-body dt{font-size:12.5px;font-weight:700;margin-top:8px}
.rules-body dt small{font-weight:500;color:var(--muted-2);font-size:11px;margin-left:4px}
.rules-body dd{margin:2px 0 0;font-size:12px;color:var(--muted);line-height:1.5}
.rules-body b.w{color:var(--warn)}

/* —— 历史 —— */
.batch{
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  margin:7px 0;overflow:hidden;box-shadow:var(--shadow-sm);
}
.batch > summary{
  list-style:none;cursor:pointer;padding:12px 13px;
  display:flex;justify-content:space-between;gap:10px;align-items:flex-start;
}
.batch > summary::-webkit-details-marker{display:none}
.batch > summary .bd{font-weight:720;font-size:14.5px}
.batch > summary .bm{font-size:11.5px;color:var(--muted);margin-top:3px;font-variant-numeric:tabular-nums;line-height:1.4}
.batch > summary .arrow{color:var(--muted-2);font-size:11px;padding-top:4px;transition:transform .15s}
.batch[open] > summary .arrow{transform:rotate(90deg);color:var(--accent)}
.batch .body{padding:0 13px 12px;border-top:1px solid var(--line-soft)}

.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:10px 0}
.metric{
  background:var(--chip);border-radius:10px;padding:8px 4px;text-align:center;
  border:1px solid var(--line-soft);
}
.metric .v{font-size:17px;font-weight:720;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.metric .l{font-size:10.5px;color:var(--muted);margin-top:2px}
.metric.hit .v{color:var(--up)}.metric.fail .v{color:var(--down)}.metric.watch .v{color:var(--accent)}

.summary-row{
  display:flex;justify-content:space-between;align-items:center;
  padding:10px 0;border-bottom:1px solid var(--line-soft);gap:10px;
}
.summary-row:last-child{border-bottom:0;padding-bottom:2px}
.summary-row .name{font-size:13px;font-weight:700;font-variant-numeric:tabular-nums}
.summary-row .meta{font-size:11px;color:var(--muted);margin-top:2px}
.summary-row .num{font-weight:700;font-variant-numeric:tabular-nums;font-size:12.5px;text-align:right;line-height:1.4}
.summary-row .num-sub{color:var(--muted);font-weight:500}

.disclaimer{
  font-size:11.5px;color:var(--muted);line-height:1.5;
  background:var(--warn-soft);border:1px solid var(--warn-line);
  border-radius:var(--radius);padding:10px 12px;margin-top:12px;
}
.legend{font-size:12px;color:var(--muted);line-height:1.45}
.empty{
  color:var(--muted-2);text-align:center;padding:22px 12px;font-size:13px;
  background:var(--card);border:1px dashed var(--line);border-radius:var(--radius);margin:6px 0;
}

/* —— 底栏（主导航，石板蓝选中） —— */
.nav{
  position:fixed;left:0;right:0;bottom:0;z-index:30;display:flex;
  background:rgba(255,255,255,.96);
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  border-top:1px solid var(--line);
  padding:4px 6px calc(5px + var(--safe-b));
  max-width:520px;margin:0 auto;
}
.nav button{
  flex:1;background:transparent;border:0;color:var(--muted-2);
  padding:6px 4px 5px;font-size:10.5px;font-weight:650;cursor:pointer;
  border-radius:12px;display:flex;flex-direction:column;align-items:center;gap:1px;
}
.nav button.active{color:var(--accent);background:var(--accent-soft)}
.nav .nav-ic{display:flex;align-items:center;justify-content:center;height:22px;color:inherit}
.nav .nav-ic svg{display:block}

/* —— 封面 / 邀请码（对齐算了么：上 hero cover 动画，下 sheet 登录段） —— */
/* 对齐算了么 lsheet：底 padding 紧凑；靠 100dvh/svh 避开浏览器底栏，仅留小幅兜底 */
body.is-gate{padding-bottom:0;background:#F7F5F2;overflow:auto}
body.is-gate .nav{display:none}
.gate{
  height:100%;
  height:100dvh;height:100vh;
  min-height:100dvh;min-height:100vh;
  min-height:100svh;
  max-height:none;
  display:flex;flex-direction:column;
  padding:0;position:relative;
  overflow-x:hidden;overflow-y:auto;
  background:#F7F5F2;
  box-sizing:border-box;
}
@supports (height:100svh){
  .gate{height:var(--vh,100svh);min-height:var(--vh,100svh)}
}
.gate-hero{
  flex:1 1 0;
  min-height:120px;
  position:relative;
  overflow:hidden;
  background:#5B5CDE;
}
.gate-pitch{
  position:absolute;inset:0;z-index:0;
  pointer-events:none;
  /* 无 video / video 失败时的 GIF 回退 */
  background:url("assets/login-bg-minis-v5.gif?v=79") 50% 35% / cover no-repeat;
  background-color:#5B5CDE;
}
.gate-pitch-vid{
  position:absolute;inset:0;z-index:1;
  width:100%;height:100%;
  object-fit:cover;
  object-position:50% 35%;
  pointer-events:none;
  background:#5B5CDE;
}
.gate.is-pitch-gif .gate-pitch-vid,
.gate-pitch-vid.is-fallback{display:none!important}
.gate-vig{
  pointer-events:none;z-index:2;
  position:absolute;left:0;right:0;bottom:0;height:min(38%,160px);
  background:linear-gradient(180deg,rgba(247,245,242,0) 0%,rgba(247,245,242,.55) 55%,rgba(247,245,242,.92) 100%);
}
.gate-hero-img{display:none!important} /* 旧 img 结构废弃 */
.gate-panel{
  flex:0 0 auto; /* 不压缩，保证按钮区完整露出 */
  margin-top:-18px;
  position:relative;z-index:3;
  width:100%;
  max-width:none;
  background:#fff;
  border-radius:22px 22px 0 0;
  /* 贴底：约 10px + safe-area；靠 100svh/--vh，不再叠 16+12+16 兜底 */
  padding:14px 20px calc(10px + env(safe-area-inset-bottom, 0px));
  text-align:center;
  box-shadow:0 -10px 28px rgba(15,23,42,.10);
  margin-left:0;margin-right:0;
  box-sizing:border-box;
}
.gate-brand{
  display:flex;align-items:center;justify-content:center;
  margin:0 auto;min-height:36px;
}
.gate-title{
  position:relative;display:inline-block;
  margin:0;font-size:30px;font-weight:700;letter-spacing:.02em;color:var(--text);line-height:1.1;
}
.gate-logo{
  position:absolute;right:100%;top:50%;transform:translateY(-50%);
  margin-right:12px;
  width:34px;height:34px;border-radius:9px;display:block;
  box-shadow:0 2px 8px rgba(91,92,222,.18);
  object-fit:contain;background:transparent;
}
.gate-tag{margin:8px 0 0;font-size:16px;color:#8B8B9A;font-weight:500}
.gate-label{
  display:block;text-align:left;margin:20px 0 6px;font-size:12px;
  color:var(--muted);font-weight:650;
}
.gate-input{
  width:100%;height:44px;border:1px solid var(--line);border-radius:12px;
  padding:0 14px;font-size:16px;font-weight:500;letter-spacing:.08em;
  font-variant-numeric:tabular-nums;
  background:#fff;color:var(--text);outline:none;
  text-transform:none;box-sizing:border-box;
}
.gate-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(91,92,222,.18)}
.gate-input.invalid{border-color:#f59e0b;background:#fffbeb}
.gate-input::placeholder{color:#A1A1B2;font-weight:450;letter-spacing:0;text-transform:none}
.gate-err{margin:8px 0 0;font-size:12.5px;color:#b45309;font-weight:600}
.gate-btn{
  width:100%;height:48px;margin-top:16px;border:0;border-radius:12px;
  background:var(--accent);color:#fff;font-size:16px;font-weight:700;cursor:pointer;
  box-shadow:0 4px 12px rgba(91,92,222,.22);
}
.gate-btn:active{transform:translateY(1px)}
.gate-panel p{margin:0}.gate-panel .gate-disc{display:block;margin:6px 0 0;padding:0;font-size:11px;line-height:1.25;color:var(--muted-2)}

.top-row{display:flex;align-items:center;justify-content:space-between;gap:10px}
.top-row h1{margin:0}
.btn-text{
  border:1px solid var(--line);background:rgba(255,255,255,.85);color:var(--muted);
  border-radius:999px;padding:5px 10px;font-size:11.5px;font-weight:600;cursor:pointer;
  flex:0 0 auto;
}
.btn-text:active{background:var(--chip)}
.app[hidden],.gate[hidden],.tabs-top-dup[hidden],[hidden].tabs,.today-strip[hidden],.hist-strip[hidden],.hist-alert[hidden],#cap-note[hidden],#rules-help[hidden],#data-src-note[hidden]{display:none !important}

.gate-input{letter-spacing:.08em}

.brand{display:flex;align-items:center;gap:8px;min-width:0}
.top-logo{
  width:28px;height:28px;border-radius:8px;flex:0 0 auto;
  object-fit:contain;background:transparent;
  box-shadow:0 1px 3px rgba(15,23,42,.08);
}

/* 矮屏/键盘：sheet 优先，hero 仍 cover 铺满剩余高度 */
@media (max-height:600px){
  .gate-panel{padding-top:12px;padding-left:18px;padding-right:18px}
  .gate-tag{margin-top:4px;font-size:14px}
  .gate-label{margin-top:12px}
  .gate-btn{margin-top:12px}
  .gate-hero{min-height:80px}
}
body.kb-open .gate{height:auto;max-height:none;overflow:visible;min-height:var(--vh,100svh)}
body.kb-open .gate-hero{flex-basis:120px;max-height:160px;min-height:0}
body.is-app{padding-bottom:calc(72px + env(safe-area-inset-bottom,0px))}

/* —— 今日摘要一行 + 规则分组 chips —— */
.today-meta{display:none!important;
  margin:8px 2px 0;font-size:12.5px;color:var(--muted);font-weight:550;
  letter-spacing:.01em;line-height:1.35;
}
.group-tabs-wrap{position:relative;margin:8px 0 6px}
/* 遮罩由文末 .can-left/.can-right 控制，此处不再常显 */
.group-tabs{
  display:flex;flex-wrap:nowrap;gap:8px;padding:2px 20px 6px 0;
  overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;
  scroll-snap-type:x proximity;
}
.group-tabs::-webkit-scrollbar{display:none}
.gchip{
  flex:0 0 auto;scroll-snap-align:start;
  display:inline-flex;align-items:center;gap:6px;
  height:36px;padding:0 14px;border-radius:999px;cursor:pointer;
  border:1px solid var(--line);background:#fff;color:var(--text);
  font-size:13px;font-weight:650;white-space:nowrap;
  -webkit-tap-highlight-color:transparent;
}
.gchip-n{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:18px;height:18px;padding:0 5px;border-radius:999px;
  background:var(--chip);color:var(--muted);font-size:11px;font-weight:700;
  font-variant-numeric:tabular-nums;
}
.gchip.active{
  background:var(--accent);border-color:var(--accent);color:#fff;
  box-shadow:0 4px 12px rgba(91,92,222,.22);
}
.gchip.active .gchip-n{background:rgba(255,255,255,.22);color:#fff}
.gchip:active{transform:scale(.98)}
#today-list{min-height:40px}

/* —— 股票卡可点 —— */
article.stock{cursor:pointer;-webkit-tap-highlight-color:transparent}
article.stock:active{transform:scale(.995)}
.stock .head-right{display:flex;align-items:center;gap:4px}
.stock .sd-chev{color:var(--muted-2);font-size:20px;line-height:1;font-weight:400;opacity:.7}

/* —— 股票详情二级页 —— */
.stock-detail{
  position:fixed;inset:0;z-index:40;display:flex;flex-direction:column;
  background:var(--bg,#F7F5F2);overflow:auto;-webkit-overflow-scrolling:touch;
}
.stock-detail[hidden]{display:none !important}
body.is-detail .nav{display:none}
body.is-detail{padding-bottom:0;overflow:hidden}
.sd-top{
  position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:10px;
  padding:calc(10px + env(safe-area-inset-top,0px)) 14px 10px;
  background:rgba(247,245,242,.92);backdrop-filter:blur(8px);
  border-bottom:1px solid rgba(226,232,240,.85);
}
.sd-back{
  border:1px solid var(--line);background:#fff;color:var(--text);
  border-radius:999px;height:34px;padding:0 12px;font-size:13px;font-weight:650;cursor:pointer;
}
.sd-top-title{font-size:14px;font-weight:700;color:var(--muted)}
.sd-body{padding:14px 16px calc(28px + env(safe-area-inset-bottom,0px));max-width:560px;margin:0 auto;width:100%;box-sizing:border-box}
.sd-hero{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:4px 0 10px}
.sd-name{font-size:24px;font-weight:780;letter-spacing:-.02em}
.sd-code{margin-left:8px;font-size:14px;color:var(--muted-2);font-weight:560;font-variant-numeric:tabular-nums}
.sd-chg{font-size:22px;font-weight:760;font-variant-numeric:tabular-nums}
.sd-chg.up{color:var(--up)}.sd-chg.down{color:var(--down)}.sd-chg.flat{color:var(--muted)}
.sd-flags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.sd-flags .chip.accent{background:var(--accent-soft);border-color:var(--accent-mid);color:var(--accent);font-weight:650}
.sd-card{
  background:#fff;border:1px solid var(--line);border-radius:14px;
  padding:14px 14px 12px;margin:0 0 12px;box-shadow:var(--shadow-sm);
}
.sd-card h3{margin:0 0 10px;font-size:13px;font-weight:720;color:var(--muted)}
.sd-rules{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 10px}
.sd-rule{
  display:inline-flex;align-items:center;height:28px;padding:0 10px;border-radius:999px;
  background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent-mid);
  font-size:12.5px;font-weight:650;
}
.sd-why{margin:0;padding-left:18px;color:var(--text);font-size:13.5px;line-height:1.55}
.sd-why li{margin:0 0 6px}
.sd-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px}
.sd-kv{display:flex;flex-direction:column;gap:2px;min-width:0}
.sd-kv .k{font-size:11px;color:var(--muted-2);font-weight:550}
.sd-kv .v{font-size:14px;font-weight:680;font-variant-numeric:tabular-nums;word-break:break-all}
.sd-foot{text-align:center;font-size:11px;color:var(--muted-2);margin:8px 0 0}

/* 详情：总市值 + 观测期走势图 */
.sd-mkt{
  display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;
  margin:0 0 10px;padding:10px 12px;
  background:linear-gradient(135deg,#eef0ff 0%,#fff 70%);
  border:1px solid var(--accent-mid);border-radius:var(--radius-sm);
}
.sd-mkt-k{font-size:12px;color:var(--muted);font-weight:600}
.sd-mkt-v{font-size:20px;font-weight:780;color:var(--accent);font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.sd-mkt-sub{font-size:11px;color:var(--muted-2);margin-left:auto}
.sd-mkt-miss .sd-mkt-v{font-size:14px;font-weight:650;color:var(--muted)}
.sd-chart-card{padding-bottom:10px}
.sd-chart-sub{margin:-4px 0 8px;font-size:11.5px;color:var(--muted-2)}
.sd-chart{
  display:block;width:100%;height:168px;
  background:#fafbff;border:1px solid var(--line-soft);border-radius:10px;
}
.sd-chart-note{margin:6px 0 0;font-size:11px;color:var(--warn)}
@media (max-width:360px){.sd-grid{grid-template-columns:1fr}}

/* 历史状态筛选 metrics */
.metrics.metrics-filter{grid-template-columns:repeat(auto-fit,minmax(64px,1fr));gap:6px}
.metrics-filter .metric{
  cursor:pointer;-webkit-tap-highlight-color:transparent;
  background:#fff;border:1px solid var(--line);padding:10px 4px;min-height:52px;
}
.metrics-filter .metric.active{
  background:var(--accent);border-color:var(--accent);color:#fff;
  box-shadow:0 4px 12px rgba(91,92,222,.22);
}
.metrics-filter .metric.active .v,
.metrics-filter .metric.active .l{color:#fff}
.metrics-filter .metric.hit.active{background:#dc2626;border-color:#dc2626;box-shadow:0 4px 12px rgba(220,38,38,.22)}
.metrics-filter .metric.fail.active{background:#16a34a;border-color:#16a34a;box-shadow:0 4px 12px rgba(22,163,74,.22)}
.metrics-filter .metric:active{transform:scale(.98)}


/* 裁定轨迹：主状态锁定后的另一侧触线 */
.trail-line,.sd-trail{
  margin-top:4px;font-size:11px;line-height:1.35;color:#94a3b8;font-weight:500;
}
.sd-trail{margin:6px 12px 0}

/* —— 6l 主状态徽章 —— */
.st-pill{display:inline-flex;align-items:center;margin-left:8px;padding:2px 9px;border-radius:999px;
  font-size:12px;font-weight:750;line-height:1.5;vertical-align:2px;white-space:nowrap;border:1px solid transparent}
.st-pill.st-hit{background:#dc2626;color:#fff;box-shadow:0 2px 6px rgba(220,38,38,.3)}
.st-pill.st-fail{background:#16a34a;color:#fff;box-shadow:0 2px 6px rgba(22,163,74,.28)}
.st-pill.st-watch{background:#fff;color:#64748b;border-color:#cbd5e1;font-weight:600}
.st-pill.st-neutral{background:#e5e7eb;color:#4b5563;font-weight:600}
/* 命中/失败条覆盖组色条，保持醒目 */
.stock.st-hit-card{border-color:#fecaca;background:linear-gradient(90deg,#fff1f2 0%,#fff 45%)}
.stock.st-hit-card::before{content:"";position:absolute;left:0;top:10px;bottom:10px;width:3.5px;border-radius:0 3px 3px 0;background:#dc2626;box-shadow:1px 0 4px rgba(220,38,38,.28)}
.stock.st-fail-card{border-color:#bbf7d0;background:linear-gradient(90deg,#f0fdf4 0%,#fff 45%)}
.stock.st-fail-card::before{content:"";position:absolute;left:0;top:10px;bottom:10px;width:3.5px;border-radius:0 3px 3px 0;background:#16a34a;box-shadow:1px 0 4px rgba(22,163,74,.25)}
.flags .flag{font-size:11px;padding:1px 7px;font-weight:500}
.trail-warn{margin-top:5px;font-size:11.5px;color:#c2410c;background:#fff7ed;border:1px solid #fed7aa;
  border-radius:6px;padding:3px 8px;display:inline-block;font-weight:600}
.sd-trail.trail-warn{margin:6px 12px 0}
.sd-name .st-pill{font-size:13px;vertical-align:3px}
.demo-tag{display:inline-block;margin:4px 0 2px;font-size:10.5px;color:#7c3aed;background:#f5f3ff;border:1px dashed #c4b5fd;border-radius:4px;padding:0 6px}
.demo-banner{font-size:12px;color:#7c3aed;background:#f5f3ff;border:1px dashed #c4b5fd;border-radius:8px;padding:6px 10px;font-weight:650}

/* —— 6m 观察区 / 降级 / 命中释义 —— */
.observe-zone{margin-top:14px;padding-top:8px;border-top:1px dashed #e2e8f0;opacity:.88}
.observe-zone-h{font-size:12px;font-weight:700;color:#94a3b8;margin:4px 2px 8px;letter-spacing:.02em}
.observe-zone .stock{background:#fafbfc;box-shadow:none}
.stale-banner{background:#fef2f2;color:#b91c1c;border:1px solid #fecaca;border-radius:8px;padding:8px 10px;font-size:12.5px;font-weight:700;margin:6px 0 10px}
.degrade-banner{background:#fff7ed;color:#c2410c;border:1px solid #fed7aa;border-radius:8px;padding:6px 10px;font-size:11.5px;font-weight:600;margin:6px 0 8px}
.hit-def{font-size:11px;color:#64748b;margin:0 2px 8px}


/* ===== v6o compact history / today ===== */
.hist-strip,.today-strip{
  display:flex;gap:0;margin:6px 0 8px;padding:8px 4px;
  background:var(--card);border:1px solid var(--line);border-radius:10px;
  box-shadow:var(--shadow-sm);
}
.hist-stat{
  flex:1;text-align:center;min-width:0;
  border-right:1px solid var(--line-soft);
  padding:0 2px;
}
.hist-stat:last-child{border-right:0}
.hs-k{display:block;font-size:10px;color:var(--muted-2);font-weight:550;letter-spacing:.02em}
.hs-v{display:block;font-size:15px;font-weight:720;font-variant-numeric:tabular-nums;margin-top:2px;line-height:1.2}
.hs-v.ok{color:var(--up)}
.hs-v.bad{color:var(--down)}
.hs-v.muted{color:var(--muted);font-size:13px;font-weight:600}

.hist-alert{
  font-size:11.5px;font-weight:600;padding:6px 10px;border-radius:8px;margin:0 0 8px;
  background:#f8fafc;color:#64748b;border:1px solid var(--line);
}
.hist-alert.warn{background:#fff7ed;color:#c2410c;border-color:#fed7aa}
.hist-alert.bad{background:#fef2f2;color:#b91c1c;border-color:#fecaca}
.hist-alert.soft{background:#f8fafc;color:#64748b;border-color:#e2e8f0}

.hist-sec{margin:4px 0 6px}
.card.caliber{padding:0;margin:10px 0 6px;border-color:var(--line)}
.card.caliber>summary{
  list-style:none;cursor:pointer;padding:10px 12px;
  display:flex;justify-content:space-between;align-items:center;gap:8px;
  font-weight:650;font-size:12.5px;color:var(--muted);
}
.card.caliber>summary::-webkit-details-marker{display:none}
.card.caliber .arrow{font-size:11px;color:var(--muted-2);transition:transform .15s}
.card.caliber[open] .arrow{transform:rotate(90deg);color:var(--accent)}
.card.caliber[open] .rules-brief{display:none}
.card.caliber .rules-body{padding:0 12px 12px;border-top:1px solid var(--line-soft)}
.card.caliber .rules-body p{margin:8px 0 0;font-size:12px;color:var(--muted);line-height:1.5}
.pill-local{
  display:inline-block;font-size:10px;padding:1px 6px;border-radius:999px;
  background:#eef2ff;color:#3730a3;border:1px solid #c7d2fe;font-weight:650;margin-left:4px;
}
.batch-extra{
  font-size:11.5px;color:var(--muted);padding:8px 0 4px;font-variant-numeric:tabular-nums;line-height:1.45;
}
.batch-extra .ok{color:var(--up);font-weight:700}
.batch-extra .muted{color:var(--muted-2);font-weight:600}

.disc-one{
  margin:8px 2px 12px;font-size:11px;color:var(--muted-2);line-height:1.4;
  display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;
  overflow:hidden;white-space:normal;
}

/* 紧凑股票卡：约 3 行，首屏挤出 ≥3 张 */
.stock.compact{padding:9px 11px;margin:5px 0}
.stock.compact .head{align-items:center}
.stock.compact .name{font-size:14.5px}
.stock.compact .price-line{margin-top:4px;font-size:12.5px}
.stock.compact .chg-inline{display:none} /* 涨跌已在右侧 */
.stock.compact .flags{margin-top:5px;gap:4px;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.stock.compact .flag{padding:2px 7px;font-size:10.5px;white-space:nowrap}
.stock.compact .meta-line,.stock.compact .rule-line,.stock.compact .note,.stock.compact .trail-line{display:none}

/* 规则 chip 单行横滑 + 可滑提示（右/左淡入遮罩，不占行） */
.group-tabs-wrap{
  position:relative;margin:4px 0 4px;
}
.group-tabs-wrap::before,
.group-tabs-wrap::after{
  content:"";pointer-events:none;position:absolute;top:0;bottom:4px;z-index:2;
  opacity:0;transition:opacity .15s ease;
}
.group-tabs-wrap::before{
  left:0;width:28px;
  background:linear-gradient(90deg,var(--bg,#F7F5F2) 40%,rgba(247,245,242,0));
}
.group-tabs-wrap::after{
  right:0;width:36px;
  background:linear-gradient(90deg,rgba(247,245,242,0),var(--bg,#F7F5F2) 55%);
}
/* 右侧小箭头：不占行，仅 can-right 时显 */
.group-tabs-wrap.can-right > .gtabs-hint{
  display:flex;
}
.gtabs-hint{
  display:none;pointer-events:none;position:absolute;right:2px;top:50%;transform:translateY(-60%);
  z-index:3;width:18px;height:18px;align-items:center;justify-content:center;
  border-radius:999px;background:rgba(255,255,255,.92);border:1px solid var(--line);
  color:var(--accent);font-size:12px;font-weight:800;line-height:1;
  box-shadow:0 1px 4px rgba(15,23,42,.08);
}
.group-tabs-wrap.can-left::before{opacity:1}
.group-tabs-wrap.can-right::after{opacity:1}
.group-tabs{
  display:flex;flex-wrap:nowrap;gap:6px;overflow-x:auto;-webkit-overflow-scrolling:touch;
  scrollbar-width:none;padding:2px 22px 4px 0; /* 右侧露出半个下一标签 */
  scroll-snap-type:x proximity;
}
.group-tabs::-webkit-scrollbar{display:none}
.gchip{flex:0 0 auto;white-space:nowrap;scroll-snap-align:start}

.badge-row{display:none!important} /* 顶区「观察·非建议」已删，防残留占行 */
.baseline-note{font-size:12px;opacity:.9}

#src-chip{display:none!important}

.hs-sub{display:block;font-size:9.5px;font-weight:550;color:var(--muted-2);margin-top:1px;letter-spacing:0;line-height:1.1}
.hs-v .hs-sub{font-size:9.5px}
.today-strip .hist-stat{padding:0 1px}
.today-strip .hs-v{font-size:14.5px}
/* 今日顶栏：单行「今日推荐 N」，去掉多格数字条 */
.today-strip.today-n-only{
  display:block;margin:2px 2px 8px;padding:2px 2px 0;
  background:transparent;border:0;box-shadow:none;
  font-size:13px;font-weight:550;color:var(--muted);letter-spacing:.01em;
}
.today-strip.today-n-only b{
  color:var(--text);font-weight:720;font-variant-numeric:tabular-nums;margin-left:2px;
}

/* 列表按规则组分段标题 */
.group-sec{margin:10px 0 4px}
.group-sec:first-child{margin-top:2px}
.group-sec-h{
  display:flex;align-items:baseline;justify-content:space-between;gap:8px;
  font-size:12.5px;font-weight:720;color:var(--muted);letter-spacing:.01em;
  padding:2px 2px 6px;border-bottom:1px solid rgba(226,232,240,.9);
}
.group-sec-h .gs-n{font-size:11px;font-weight:650;color:var(--muted-2);font-variant-numeric:tabular-nums}
.group-sec.observe .group-sec-h{color:#94a3b8}

/* 今日页：新入池配额一行小字 */
.cap-note{
  margin:-2px 2px 8px;padding:0 2px;
  font-size:10.5px;line-height:1.35;color:var(--muted-2);
  font-weight:500;letter-spacing:.01em;
}

/* today-strip 已并入顶栏 #sub：hidden 时彻底不占位（防 display:flex 盖过 [hidden]） */
.today-strip[hidden],.hist-strip[hidden],.hist-alert[hidden],#cap-note[hidden],#data-src-note[hidden]{
  display:none !important;margin:0 !important;padding:0 !important;
  border:0 !important;height:0 !important;min-height:0 !important;overflow:hidden;box-shadow:none !important;
}
