/* 紧凑卡片总览：5列小块 + 顶部色条 + 左对齐 + 点卡弹窗看详情 */
:root{
  --paper:#faf7f1; --card:#fffdf8; --ink:#1b2434; --muted:#71768a;
  --brass:#9a6b1e; --line:#e7dfcf; --hair:#ece4d2;
  --go:#0f766e; --go-bg:#e3f2ef;
  --tight:#b45309; --tight-bg:#fbeed9;
  --past:#9f1239; --past-bg:#fbe7ec;
  --future:#64748b; --future-bg:#e9edf2;
  --radius:10px;
}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--paper);color:var(--ink);font:14px/1.65 -apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif}
.wrap{max-width:1440px;margin:0 auto;padding:0 24px}
.wrap.wide{max-width:1440px}
.bar{position:sticky;top:0;z-index:20;background:#141b2d;color:#f3efe4;border-bottom:3px solid var(--brass)}
.bar-in{display:flex;align-items:center;gap:14px;padding:8px 16px;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:8px;white-space:nowrap}
.brand strong{font-family:"Songti SC","Noto Serif SC",serif;font-size:17px}
.brand em{font-style:normal;font-size:11px;color:#c9a45c;border:1px solid #4a3d22;border-radius:99px;padding:1px 8px}
.mark{font-size:10px;letter-spacing:.2em;color:#c9a45c}
.age-ctl{display:flex;align-items:center;gap:8px;flex:1;min-width:240px}
.age-ctl label{white-space:nowrap;color:#d8d3c4}
.age-ctl strong{font-size:20px;font-family:Georgia,serif;color:#fff}
#ageRange{flex:1;accent-color:#c9a45c}
#ageNumber{width:58px;background:#10182b;color:#fff;border:1px solid #33405e;border-radius:6px;padding:4px 6px}
.gender{display:flex;background:#10182b;border:1px solid #33405e;border-radius:99px;overflow:hidden}
.g{border:0;background:transparent;color:#d8d3c4;padding:6px 14px;cursor:pointer;font-size:12px}
.g.active{background:#e9dfc6;color:#141b2d;font-weight:700}
.share{background:transparent;color:#e9dfc6;border:1px solid #6b5a33;border-radius:99px;padding:6px 12px;cursor:pointer;font-size:12px}
.lede{margin:12px 0 8px;color:var(--muted);font-size:13px}
.lede span{color:var(--ink);font-weight:700}
.stats{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 12px}
.stat{background:var(--card);border:1px solid var(--line);border-radius:99px;padding:5px 14px;font-size:13px;white-space:nowrap;box-shadow:0 1px 2px rgba(27,36,52,.05)}
.stat b{font-family:Georgia,serif;font-size:20px;margin-right:5px}
.stat.go b{color:var(--go)} .stat.tight b{color:var(--tight)} .stat.past b{color:var(--past)} .stat.future b{color:var(--future)}
.toolbar{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;margin:0 0 10px}
.t-group{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.t{border:1px solid var(--line);background:var(--card);border-radius:7px;padding:5px 11px;cursor:pointer;font-size:12px}
.t.active{background:var(--ink);color:#f6f1e3;border-color:var(--ink)}
select{background:var(--card);border:1px solid var(--line);border-radius:7px;padding:5px 8px;font-size:12px}
/* 卡片：小块，顶部色条，左对齐 */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px;align-items:stretch}
.gsec-h{grid-column:1/-1;display:flex;align-items:baseline;gap:8px;margin:8px 0 -2px;padding-top:10px;border-top:2px solid var(--ink)}
.gsec-h:first-child{border-top:0;padding-top:0;margin-top:0}
.gsec-h h2{margin:0;font-size:18px;font-family:"Songti SC","Noto Serif SC",serif}
.gsec-h small{color:var(--muted);font-size:12px}
.card{position:relative;background:var(--card);border:1px solid var(--line);border-top:4px solid var(--future);
  border-radius:var(--radius);padding:9px 11px 10px;cursor:pointer;min-height:178px;display:flex;flex-direction:column;gap:5px;
  transition:transform .08s ease, box-shadow .08s ease}
.card:hover{transform:translateY(-1px);box-shadow:0 4px 14px rgba(27,36,52,.1)}
.card.st-open{border-top-color:var(--go)} .card.st-narrowing{border-top-color:var(--tight)}
.card.st-missed{border-top-color:var(--past)} .card.st-upcoming{border-top-color:var(--future)}
.chead{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:11px}
.dom{background:var(--ink);color:#f6f1e3;border-radius:5px;padding:1px 7px;white-space:nowrap}
.st{font-weight:700;white-space:nowrap}
.st-open .st{color:var(--go)} .st-narrowing .st{color:var(--tight)}
.st-missed .st{color:var(--past)} .st-upcoming .st{color:var(--future)}
.st i{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:5px;vertical-align:1px}
.st-open .st i{background:var(--go)} .st-narrowing .st i{background:var(--tight)}
.st-missed .st i{background:var(--past)} .st-upcoming .st i{background:var(--future)}
.card h3{margin:0;font-size:17px;line-height:1.4;font-family:"Songti SC","Noto Serif SC",serif}
.iv{font-size:12px;color:var(--muted);white-space:nowrap}
.mini{position:relative;height:4px;background:var(--hair);border-radius:99px}
.mini .sp{position:absolute;top:0;bottom:0;border-radius:99px}
.st-open .sp{background:var(--go)} .st-narrowing .sp{background:var(--tight)}
.st-missed .sp{background:var(--past);opacity:.75} .st-upcoming .sp{background:var(--future);opacity:.7}
.mini .me{position:absolute;top:-2px;bottom:-2px;width:2px;background:var(--ink)}
.ds{margin:2px 0 0;font-size:13px;color:#3a4152}
/* 补救框固定高度：文案长短不一会导致同行粉框底边参差，定高 + 溢出裁切保证全站等高。
   132px = 标签(11px/1.65+边框) + 引导行(1行) + 正文(最多3行) + 内边距的最坏组合，改动字号需重算 */
.fx{margin:auto 0 0;font-size:13px;background:#f6f0df;border-radius:6px;padding:7px 9px;height:132px;overflow:hidden}
.st-missed .fx{background:var(--past-bg)}
.fx b{font-size:11px}
.diff{display:inline-block;font-size:11px;font-weight:700;border-radius:5px;padding:1px 7px;background:#e9dfc6;margin-bottom:4px;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.diff.doom{background:var(--past);color:#fff}
.st-missed .diff{background:#fff;border:1px solid currentColor}
.st-missed .diff.doom{background:var(--past);color:#fff;border-color:var(--past)}
/* 随错过年数升档后的补救标签：标红提示已比刚错过时更难 */
.diff.worse:not(.doom){color:var(--past)}
.st-missed .diff.worse:not(.doom){border-color:var(--past)}
.fx p{margin:4px 0 0}
.fx .rlead{margin:4px 0 0;font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 正文兜底限3行：现有文案最长两行内，超出才会省略；防止未来长文案把行高撑乱 */
.fx p:last-child{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}
/* 弹窗 */
.scrim{position:fixed;inset:0;background:rgba(20,27,45,.55);display:flex;align-items:center;justify-content:center;padding:18px;z-index:50}
.scrim[hidden]{display:none}
.sheet{position:relative;background:var(--card);border-radius:14px;max-width:560px;width:100%;max-height:86vh;overflow:auto;
  padding:20px 20px 16px;border-top:5px solid var(--brass)}
.x{position:absolute;top:8px;right:10px;border:0;background:transparent;font-size:22px;cursor:pointer;color:var(--muted)}
.kicker{display:flex;gap:8px;align-items:center;font-size:11px;color:var(--muted);flex-wrap:wrap}
.sheet h2{margin:8px 0 4px;font-family:"Songti SC","Noto Serif SC",serif;font-size:22px}
.track{position:relative;height:8px;background:var(--hair);border-radius:99px;margin:10px 0 2px}
.track .sp{position:absolute;top:0;bottom:0;border-radius:99px;background:var(--ink)}
.track .me{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--past)}
.scale{display:flex;justify-content:space-between;font-size:10px;color:var(--muted)}
.fix{background:#fff;border:1px solid var(--line);border-left:3px solid var(--brass);border-radius:8px;padding:8px 10px;font-size:13px;margin-top:8px}
.basis{font-size:12px;color:var(--muted)}
.empty{grid-column:1/-1;background:var(--card);border:1px dashed var(--line);border-radius:10px;padding:26px;text-align:center;color:var(--muted)}
.foot{margin:12px 0 30px;color:var(--muted);font-size:11px}
.foot summary{cursor:pointer}
/* Tabs：工具切换 */
.tabs{display:flex;gap:6px;flex-wrap:wrap;flex:1}
.tab{border:1px solid #33405e;background:#10182b;color:#d8d3c4;border-radius:99px;padding:8px 17px;cursor:pointer;font-size:13px;white-space:nowrap;transition:background .15s ease,color .15s ease,border-color .15s ease}
.tab:hover{border-color:#c9a45c;color:#fff}
.tab.active{background:#e9dfc6;color:#141b2d;border-color:#e9dfc6;font-weight:700;box-shadow:0 2px 8px rgba(0,0,0,.25)}
.sub-bar{display:flex;align-items:center;gap:14px;padding:8px 16px 10px;flex-wrap:wrap;border-top:1px solid #2a3550}
.sub-bar[hidden]{display:none}
.coming{background:var(--card);border:1px dashed var(--line);border-radius:12px;padding:28px 22px;margin-top:12px;color:var(--muted)}
.coming h2{margin:0 0 8px;color:var(--ink);font-family:"Songti SC","Noto Serif SC",serif}
.coming small{font-size:11px;background:var(--future-bg);border-radius:99px;padding:2px 10px;vertical-align:2px}
.coming code{background:#f1ead8;border-radius:5px;padding:1px 6px;font-size:12px}
@media (max-width:720px){ .tabs{order:3;width:100%} .tab{flex:1;text-align:center;padding:6px 8px;font-size:11px} }
/* 人生财富计算器 */
.calc{display:grid;grid-template-columns:360px 1fr;gap:12px;margin-top:10px}
.panel{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px}
.panel h2{margin:0 0 10px;font-size:15px;display:flex;justify-content:space-between;align-items:center}
.linkbtn{border:0;background:none;color:var(--brass);cursor:pointer;font-size:12px;text-decoration:underline}
.frow{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:7px 0;border-bottom:1px dashed var(--hair)}
.frow label{font-size:12px;color:#3a4152}
.frow label small{color:var(--muted)}
.frow select,.fin input{width:150px;background:#fff;border:1px solid var(--line);border-radius:7px;padding:7px 10px;font-size:14px;text-align:right}
.fin{display:flex;align-items:center;gap:6px}
.fin span{color:var(--muted);font-size:12px}
.frow.btns{border:0;padding-top:12px}
.t.primary{background:var(--ink);color:#f6f1e3;border-color:var(--ink);text-decoration:none}
.panel.dark{background:#141b2d;color:#e9e4d4;border-color:#141b2d;border-top:3px solid var(--brass);box-shadow:0 10px 26px rgba(20,27,45,.16)}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.kpi{background:#1a2438;border:1px solid #33405e;border-radius:10px;padding:10px 12px}
.kpi small{display:block;color:#9aa3b8;font-size:12px;margin-bottom:3px}
.kpi b{font-family:Georgia,serif;font-size:30px;line-height:1.1;display:block}
.stage{display:flex;gap:8px;align-items:center;margin:12px 0;font-size:12px;color:#c9cfdd}
.badge{border-radius:99px;padding:3px 12px;font-weight:700;white-space:nowrap}
.badge.go{background:#0f766e;color:#fff} .badge.tight{background:#b45309;color:#fff} .badge.past{background:#9f1239;color:#fff}
.sbar{display:flex;height:10px;border-radius:99px;overflow:hidden;background:#2a3550}
.slegend{font-size:11px;color:#9aa3b8;margin-top:4px}
.advice{margin:14px 0 0;padding-left:20px;font-size:14px;line-height:1.85}
.advice li{margin-bottom:4px}
.advice b{color:#fff;font-family:Georgia,serif;font-size:16px}
.bench{margin-top:10px;font-size:11px;color:#9aa3b8}
@media (max-width:900px){ .calc{grid-template-columns:1fr} .kpis{grid-template-columns:repeat(2,1fr)} }
/* 财富累计 */
.frow.presets{justify-content:flex-start}
.frow.presets .t{font-size:11px;padding:4px 10px}
.chart{background:#1e2942;border:1px solid #33405e;border-radius:10px;padding:10px;margin-top:12px}
.chart svg{width:100%;height:auto;display:block}
.miles{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.mile{background:#1a2438;border:1px solid #c9a45c;border-radius:99px;padding:6px 15px;font-size:13px}
.mile b{font-family:Georgia,serif;font-size:17px} .mile.dim{opacity:.55;border-color:#33405e}
/* 贷款结论区 */
.verdict{background:#1a2438;border:1px solid #33405e;border-left:4px solid var(--brass);border-radius:10px;padding:16px 18px;margin-bottom:12px}
.verdict small{color:#9aa3b8;font-size:12px;letter-spacing:.04em}
.probs{display:flex;gap:26px;margin:6px 0 4px}
.probs div{display:flex;flex-direction:column}
.probs span{color:#9aa3b8;font-size:12px}
.verdict b{font-family:Georgia,serif;font-size:54px;line-height:1;display:block}
.probs b{font-size:40px}
.vprob{display:flex;align-items:baseline}
.vprob b{font-size:58px}
.verdict b.go{color:#5eead4} .verdict b.tight{color:#fbbf24} .verdict b.past{color:#fda4af}
.verdict p{margin:10px 0 0;font-size:14px;line-height:1.7;color:#dfe4ee}
.verdict p b{color:#fff;font-family:Georgia,serif;font-size:17px}
.wtable{margin-top:10px;font-size:12px;color:#c9cfdd}
.wtable summary{cursor:pointer}
.wtable table{width:100%;border-collapse:collapse;margin-top:8px;font-size:12px}
.wtable th,.wtable td{text-align:right;padding:5px 8px;border-bottom:1px solid #2a3550}
.wtable th:first-child,.wtable td:first-child{text-align:left}
/* 错过还有下一个吗：单页全宽滑杆 + 选项片（解决旧表单输入列过窄问题） */
.pwrap{margin-top:0}
.calc-2{grid-template-columns:minmax(430px,560px) minmax(0,1fr);align-items:start}
.stack{display:flex;flex-direction:column;gap:12px;min-width:0}
@media (max-width:1024px){ .calc-2{grid-template-columns:1fr} .calc-2 .panel.dark{grid-column:auto} .panel.sticky{position:static} }
@media (min-width:1025px){ .panel.sticky{position:sticky;top:132px} }
.res-title{color:#e9e4d4 !important}
.kpis-2{grid-template-columns:repeat(2,1fr)}
.prow{padding:10px 0;border-bottom:1px dashed var(--hair)}
#view-partner .prow{padding:12px 0}
#view-partner .prow>label{margin-bottom:8px}
#view-partner .chips{gap:8px}
#view-partner .chip{padding:8px 16px;font-size:13px}
#view-partner input[type="range"]{margin:6px 0 2px}
#view-partner select{width:100%;background:#fff;border:1px solid var(--line);border-radius:8px;padding:9px 10px;font-size:13px;color:var(--ink)}
#view-partner input[type="text"]{width:100%;background:#fff;border:1px solid var(--line);border-radius:8px;padding:9px 10px;font-size:13px;color:var(--ink)}
.citywrap{position:relative}
.suggest{position:absolute;top:100%;left:0;right:0;z-index:30;background:#fff;border:1px solid var(--line);border-radius:10px;margin-top:4px;max-height:230px;overflow:auto;box-shadow:0 8px 24px rgba(27,36,52,.15)}
.suggest[hidden]{display:none}
.suggest button{display:flex;justify-content:space-between;align-items:center;gap:8px;width:100%;border:0;border-bottom:1px dashed var(--hair);background:none;padding:9px 12px;font-size:13px;color:var(--ink);cursor:pointer;text-align:left}
.suggest button:last-child{border-bottom:0}
.suggest button:hover,.suggest button.hot{background:#f6f0df}
.suggest small{color:var(--muted);font-size:11px;white-space:nowrap}
.dual small{display:block;text-align:center;color:var(--muted);font-size:11px;margin-top:2px}
.more{margin-top:8px}
.more summary{cursor:pointer;font-size:12px;color:#c9cfdd}
.more ul{margin:6px 0 0;padding-left:18px;font-size:13px;line-height:1.7}
.more b{color:#fff}
.panel.dark .linkbtn{color:#e8c97a}
/* 计算漏斗 */
.how{margin-top:10px;background:#1e2942;border:1px solid #33405e;border-radius:10px;padding:10px 12px}
.how summary{cursor:pointer;font-size:12px;font-weight:700;color:#e9e4d4}
.howrow{display:flex;justify-content:space-between;gap:10px;font-size:12px;padding:5px 0;border-bottom:1px dashed #2a3550;color:#c9cfdd}
.howrow:last-child{border-bottom:0}
.howrow.final{color:#fff;font-weight:700}
.howrow .pc{color:#c9a45c;white-space:nowrap}
.prow:last-of-type{border-bottom:0}
.prow>label{display:flex;justify-content:space-between;align-items:baseline;font-size:13px;color:var(--ink);margin-bottom:6px}
.prow>label b{font-family:Georgia,serif;font-size:16px}
.prow>label small{color:var(--muted);font-size:11px;margin-left:auto;padding-left:8px}
.prow input[type="range"]{width:100%;accent-color:var(--brass);margin:0}
.dual{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.radios{display:flex;gap:8px;flex-wrap:wrap}
.radio{position:relative}
.radio input{position:absolute;inset:0;opacity:0;margin:0;cursor:pointer}
.radio span{display:inline-block;border:1px solid var(--line);background:#fff;border-radius:99px;padding:8px 16px;font-size:13px;color:#3a4152;cursor:pointer;white-space:nowrap}
.radio input:checked+span{background:var(--ink);color:#f6f1e3;border-color:var(--ink);font-weight:700}
.radio input:focus-visible+span{outline:2px solid var(--brass);outline-offset:2px}
.chip{border:1px solid var(--line);background:#fff;border-radius:99px;padding:6px 14px;cursor:pointer;font-size:12px;color:#3a4152}
.chip.active{background:var(--ink);color:#f6f1e3;border-color:var(--ink);font-weight:700}
/* ===== 首屏巨幕（紧凑版）：数字条 + 生命格子 + 单行脚注 ===== */
.hero{position:relative;background:#141b2d;border-radius:14px;padding:14px 20px 12px;margin:12px 0;color:#e9e4d4;box-shadow:0 10px 26px rgba(20,27,45,.2);overflow:hidden}
.hero::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:var(--brass)}
.hero-nums{display:flex;align-items:baseline;gap:26px;flex-wrap:wrap}
.hero-num{display:flex;align-items:baseline;gap:7px}
.hero-num small{font-size:11px;color:#9aa3b8;letter-spacing:.04em}
.hero-num b{font-family:Georgia,serif;font-size:32px;line-height:1.05;color:#fff;font-weight:400}
.hero-num.alt b{color:#c9a45c}
.hero-num span{font-size:12px;color:#9aa3b8}
.hero-num.pct{margin-left:auto}
.hero-gridwrap{margin-top:12px;overflow-x:auto;scrollbar-width:none}
.hero-gridwrap::-webkit-scrollbar{display:none}
.hero-grid{display:grid;grid-template-columns:repeat(90,1fr);gap:2px;min-width:560px}
.hcell{aspect-ratio:1/1;border-radius:1px;background:#2a3550}
.hcell.on{background:#c9a45c}
.hcell.now{background:#e24b4a}
.hero-foot{display:flex;justify-content:space-between;align-items:center;gap:8px 18px;flex-wrap:wrap;margin-top:10px}
.hero-legend{display:flex;gap:12px;flex-wrap:wrap;font-size:11px;color:#9aa3b8;align-items:center;white-space:nowrap}
.hero-legend i{display:inline-block;width:9px;height:9px;border-radius:2px;background:#2a3550;margin-right:5px;vertical-align:-1px}
.hero-legend i.on{background:#c9a45c}
.hero-legend i.now{background:#e24b4a}
.hero-legend em{font-style:normal;color:#6f7a94}
.hero-kicker{margin:0;font-size:13px;line-height:1.6;color:#dfe4ee;flex:1 1 360px;min-width:0;text-align:right}
.hk-main b{font-family:Georgia,serif;font-size:19px;margin:0 2px;vertical-align:-1px}
.hero-kicker b.go{color:#5eead4}
.hero-kicker b.past{color:#fda4af}
.hero-kicker b.dead{color:#fda4af}
.hero-kicker b.tight{color:#fbbf24}
.hero-kicker small{font-size:12px;color:#9aa3b8;margin-left:8px}
@media (max-width:900px){
  .hero{padding:12px 14px 10px}
  .hero-nums{gap:14px 18px}
  .hero-num b{font-size:24px}
  .hero-num.pct{margin-left:0}
  .hero-kicker{text-align:left}
}
/* 卡片错峰入场（无 JS 时不加 .reveal，卡片照常显示） */
.card.reveal{opacity:0}
.card.reveal.in{animation:cardIn .5s cubic-bezier(.2,.7,.3,1) both}
@keyframes cardIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){ .card.reveal{opacity:1} .card.reveal.in{animation:none} }

/* 页面主标题：唯一 h1，随 tab 切换改写，给爬虫和用户同一个主题信号 */
.page-title{font-family:"Songti SC","Noto Serif SC",serif;font-size:21px;line-height:1.45;
  color:var(--ink);margin:16px 0 0;letter-spacing:.01em}
/* 工具说明正文：补足可被索引的描述性文字，同时不抢视觉 */
.intro-sub{margin:6px 0 10px;color:var(--muted);font-size:13px;line-height:1.75;max-width:100ch}

/* 常见问题（对应 head 里的 FAQPage 结构化数据） */
.faq{margin:28px 0 44px;border-top:2px solid var(--ink);padding-top:14px}
.faq h2{font-size:18px;font-family:"Songti SC","Noto Serif SC",serif;margin:0 0 6px}
.faq details{border-bottom:1px solid var(--hair);padding:9px 0}
.faq summary{cursor:pointer;font-size:14px;font-weight:700;color:var(--ink)}
.faq summary::marker{color:var(--brass)}
.faq p{margin:8px 0 2px;color:var(--muted);font-size:13px;line-height:1.8}
@media (max-width:900px){
  .page-title{font-size:18px}
  .intro-sub{font-size:12.5px}
}
