/* base.css —— 结构骨架（皮肤无关）。皮肤在 skins.css 用 [data-skin] 覆盖 token 与形态。 */
*{box-sizing:border-box;margin:0;padding:0}
html,body{overflow-x:clip}
body{
  font-family:var(--f-body,-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif);
  background:var(--page,#eee);color:var(--ink,#222);font-size:15px;line-height:1.75;
  -webkit-tap-highlight-color:transparent;
}
button{font-family:inherit;cursor:pointer;border:0;background:none;color:inherit;transition:transform .14s ease,box-shadow .18s ease,background .18s ease,border-color .18s ease,opacity .18s ease}
button:active:not(:disabled){transform:scale(.965)}
button:disabled{cursor:default}
a{color:var(--pri,#333)}
#frame{max-width:440px;margin:0 auto;min-height:100vh;background:var(--bg,#fff);display:flex;flex-direction:column;position:relative}
/* 顶部署名条（与 pension / mind 同格式） */
.site-credit{position:sticky;top:0;z-index:30;height:26px;margin-top:env(safe-area-inset-top,0px);display:flex;align-items:center;justify-content:center;gap:7px;font-size:11px;font-weight:600;color:var(--sub);letter-spacing:.01em;user-select:none;background:var(--bg)}
.site-credit .cd-sep{opacity:.55}
.cd-author{display:inline-flex;align-items:center;gap:5px}
.rednote-badge{display:inline-flex;align-items:center;height:15px;padding:0 6px;border-radius:8px;background:#FF2442;color:#fff;font-size:9.5px;font-weight:800;letter-spacing:.06em}
.cd-author b{font-weight:800;color:var(--ink)}
#app{flex:1}
.screen{padding:16px 18px 30px;display:flex;flex-direction:column;gap:14px;animation:scIn .38s ease both}
@keyframes scIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes popIn{from{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:none}}
@keyframes rowIn{from{opacity:0;transform:translateX(-5px)}to{opacity:1;transform:none}}
#beian{padding:14px 0 20px;text-align:center;font-size:10.5px;opacity:.45}
#beian a{color:inherit;text-decoration:none}
/* 顶栏与数值 */
.topbar{display:flex;justify-content:space-between;align-items:baseline}
.tb-l b{font-size:19px;font-weight:900}
.tb-l span{font-size:11px;color:var(--sub);margin-left:7px}
.tb-r{font-size:11.5px;color:var(--sub)}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.st{background:var(--card,#fff);border:1px solid var(--line);border-radius:var(--r-m,10px);padding:8px 6px 9px;text-align:center}
.st i{font-style:normal;display:block;font-size:9.5px;color:var(--sub);letter-spacing:.12em}
.st b{display:block;font-size:17px;font-weight:800;font-variant-numeric:tabular-nums;margin-top:1px;color:var(--stc,var(--ink))}
.st u{display:block;height:3.5px;border-radius:2px;background:var(--track,#eee);margin:6px 5px 0;text-decoration:none;overflow:hidden}
.st u s{display:block;height:100%;background:var(--stc,var(--pri));text-decoration:none;border-radius:2px}
.st-money{--stc:var(--c-money)}.st-health{--stc:var(--c-health)}.st-mood{--stc:var(--c-mood)}.st-skill{--stc:var(--c-skill)}
.tags{display:flex;gap:6px;flex-wrap:wrap}
.tag{font-size:10.5px;padding:3px 9px;border-radius:999px;background:var(--tagbg,#f0f0f0);color:var(--tagc,#555);border-bottom:1.5px dotted currentColor}
.tag-bad{background:var(--badbg,#fbe9e7);color:var(--bad,#c0392b)}
.tag-good{background:var(--goodbg,var(--tagbg));color:var(--good,#2e7d4f)}
.tag-mid{background:var(--tagbg);color:var(--tagc)}
/* 账目（默认展开，3 秒自动折叠，可点开） */
.ledger{background:var(--card);border:1px solid var(--line);border-radius:var(--r-m);padding:10px 15px 12px;animation:popIn .4s .08s ease both}
.lg-head{display:flex;width:100%;align-items:center;gap:9px;font-size:10.5px;letter-spacing:.2em;color:var(--sub);padding:2px 0}
.lg-head b{margin-left:auto;font-size:12.5px;letter-spacing:0;font-variant-numeric:tabular-nums}
.lg-arr{width:8px;height:8px;border-right:1.5px solid var(--sub);border-bottom:1.5px solid var(--sub);transform:rotate(45deg) translateY(-2px);transition:transform .3s ease;flex:none}
.folded .lg-arr{transform:rotate(-45deg)}
.lg-body{max-height:420px;overflow:hidden;transition:max-height .45s ease,opacity .4s ease;opacity:1;margin-top:5px}
.folded .lg-body{max-height:0;opacity:0;margin-top:0}
.lg-row{display:flex;justify-content:space-between;font-size:12.5px;padding:2.5px 0;animation:rowIn .3s ease both;animation-delay:calc(var(--i,0)*.045s)}
.lg-row b{font-variant-numeric:tabular-nums;font-weight:600}
.up{color:var(--good,#2e7d4f)}.down{color:var(--bad,#c0392b)}
/* 事件卡 */
.ev-card{background:var(--card);border:1.5px solid var(--evline,var(--ink));border-radius:var(--r-l,14px);padding:16px 17px;display:flex;flex-direction:column;gap:9px;animation:popIn .45s .12s ease both}
.ev-ins{font-size:12px;font-weight:700;color:var(--good)}
.ev-card.ev-lite{border-style:dashed;border-width:1.5px}
.ev-type{align-self:flex-start;font-size:10px;font-weight:800;letter-spacing:.2em;padding:2px 9px;border-radius:var(--r-s);background:var(--pri);color:var(--pri-ink,#fff)}
.t-scam{background:var(--bad)}.t-crisis{background:var(--warn,#c05621)}.t-chance{background:var(--good)}
.ev-title{font-family:var(--f-title,inherit);font-weight:900;font-size:24px;line-height:1.3}
.ev-body{font-size:13.5px;line-height:1.95;color:var(--body,var(--ink))}
.opts{display:flex;flex-direction:column;gap:8px;margin-top:4px}
.opt{
  text-align:left;font-size:14px;font-weight:700;padding:12px 14px;line-height:1.5;
  border:1.5px solid var(--optline,var(--line2));border-radius:var(--r-m);background:var(--optbg,transparent);color:var(--ink);
}
.opt i{display:block;font-style:normal;font-size:10.5px;font-weight:500;color:var(--sub);margin-top:2px}
.opt:active{transform:translateY(1px)}
.opt-dim{opacity:.65;border-style:dashed}
.ev-done .ev-choice{font-size:12.5px;color:var(--sub)}
.ev-result{font-size:14px;line-height:1.95;padding:10px 13px;border-left:3px solid var(--pri);background:var(--soft,#f7f7f7);border-radius:0 var(--r-s) var(--r-s) 0}
.scard{font-size:12.5px;line-height:1.9;border:1.5px solid var(--pri);border-radius:var(--r-m);padding:11px 13px;background:var(--soft)}
.scard b{display:block;margin-bottom:4px}
/* 轻事件 */
.lite-card{background:var(--card);border:1px dashed var(--line2);border-radius:var(--r-m);padding:13px 15px;font-size:13.5px;line-height:1.95}
.lite-tag{display:inline-block;font-size:10px;letter-spacing:.18em;color:var(--sub);margin-right:8px}
/* 业余时间：多选弹窗 */
.ap-pill{font-size:12px;font-weight:800;padding:3px 11px;border-radius:999px;background:var(--pri);color:var(--pri-ink)}
.am-head{display:flex;justify-content:space-between;align-items:center;gap:10px}
.am-head b{font-family:var(--f-title);font-size:17px;font-weight:900}
.am-list{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;overflow-y:auto;max-height:56vh;margin:2px -4px;padding:2px 4px}
.am-item{
  position:relative;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:2px;
  text-align:center;border:1.5px solid var(--line);border-radius:var(--r-m);padding:12px 5px 9px;background:var(--optbg);
  min-height:96px;
}
.am-item.on{border-color:var(--pri);background:var(--soft);box-shadow:0 0 0 1px var(--pri) inset}
.am-item.on::after{
  content:"";position:absolute;top:5px;left:7px;width:5px;height:9px;
  border-right:2px solid var(--pri);border-bottom:2px solid var(--pri);transform:rotate(40deg);
}
.am-item.off{opacity:.35}
.am-ico{font-size:25px;line-height:1.2;filter:saturate(.92)}
.am-item.on .am-ico{transform:scale(1.12);transition:transform .18s cubic-bezier(.34,1.56,.64,1)}
.am-name{font-size:12px;font-weight:700;line-height:1.3}
.am-chips{display:flex;flex-wrap:wrap;gap:3px;justify-content:center;margin-top:1px}
.am-chip{
  font-style:normal;font-size:8.5px;font-weight:700;line-height:1;letter-spacing:.02em;
  padding:3px 5.5px;border-radius:4px;font-variant-numeric:tabular-nums;
  background:var(--tagbg);color:var(--tagc);
}
.amc-money{background:var(--c-money);color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.22)}
.amc-health{background:var(--c-health);color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.22)}
.amc-mood{background:var(--c-mood);color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.22)}
.amc-skill{background:var(--c-skill);color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.22)}
.amc-bad{background:var(--bad);color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.22)}
.am-ap{position:absolute;top:4px;right:5px;font-size:9px;font-weight:800;color:var(--pri-em,var(--pri));font-variant-numeric:tabular-nums;background:var(--soft);border-radius:999px;padding:1px 6px}
.am-item.on .am-ap{background:var(--pri);color:var(--pri-ink)}
.am-late{grid-column:1/-1;font-size:10px;letter-spacing:.15em;color:var(--sub);padding:5px 2px 0}
.ar-ico{margin-right:6px;font-size:14px}
.am-foot{margin-top:2px}
.am-item.cur{opacity:.55}
/* 业余时间：结果清单 */
.ar-list{display:flex;flex-direction:column;gap:8px;overflow-y:auto;max-height:56vh}
.ar-row{border:1px solid var(--line);border-radius:var(--r-m);padding:9px 12px;background:var(--optbg);animation:rowIn .35s ease both}
.ar-list .ar-row:nth-child(1){animation-delay:.05s}.ar-list .ar-row:nth-child(2){animation-delay:.13s}.ar-list .ar-row:nth-child(3){animation-delay:.21s}.ar-list .ar-row:nth-child(4){animation-delay:.29s}.ar-list .ar-row:nth-child(5){animation-delay:.37s}.ar-list .ar-row:nth-child(6){animation-delay:.45s}
.ar-top{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.ar-top>b{font-size:13px;font-weight:800}
.ar-diff{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.ar-diff b{font-size:11.5px;font-weight:700;font-variant-numeric:tabular-nums}
.ar-log{font-size:11.5px;color:var(--sub);line-height:1.7;margin-top:3px}
/* 按钮 */
.btn-pri{display:block;width:100%;padding:14px;font-size:15px;font-weight:800;letter-spacing:.2em;border-radius:var(--r-m);background:var(--pri);color:var(--pri-ink);box-shadow:0 3px 10px rgba(0,0,0,.12)}
.btn-pri:not(:disabled):hover{filter:brightness(1.12)}
.btn-pri:not(:disabled):active{box-shadow:0 1px 4px rgba(0,0,0,.15)}
.btn-pri:disabled{opacity:.4;box-shadow:none;letter-spacing:.1em}
.btn-sec{display:block;width:100%;padding:12px;font-size:13.5px;border:1.5px solid var(--line2);border-radius:var(--r-m);color:var(--sub)}
.btn-sec:hover{border-color:var(--sub)}
.btn-endyear{margin-top:0}
/* 主按钮吸底：随内容滚动到底部前贴住视口下沿，上方渐变遮住滚过的内容 */
.stick-bar{position:sticky;bottom:0;z-index:5;margin:2px -18px -30px;padding:12px 18px 16px;background:linear-gradient(to bottom,transparent,var(--bg) 42%)}
.ev-hop{font-size:12.5px;font-weight:700;color:var(--pri-em,var(--pri));line-height:1.7}
/* 沿用去年安排 / 重新安排：两键并排，角标挂在按钮右上 */
.stick-bar.two-btn{display:flex;gap:8px}
.two-btn .btn-pri{flex:1;padding:13px 4px;letter-spacing:.02em;font-size:13.5px;position:relative;overflow:visible}
.btn-replan{background:var(--card)!important;color:var(--pri-em,var(--pri))!important;border:1.5px solid var(--pri);box-shadow:none!important}
.btn-replan.is-main{background:var(--pri)!important;color:var(--pri-ink)!important;border-color:var(--pri)}
.corner{position:absolute;top:-9px;right:-2px;font-style:normal;font-size:10px;font-weight:800;line-height:1;padding:4px 8px;border-radius:999px;color:#fff;letter-spacing:.04em;box-shadow:0 2px 6px rgba(0,0,0,.18)}
.c-adj{background:var(--warn,#D98E2E)}
.c-new{background:var(--good,#2BA381)}
.btn-block{margin-top:8px}
/* 主页 */
.sc-home{min-height:78vh;justify-content:center;text-align:center;gap:18px}
.home-kicker{font-size:11px;letter-spacing:.4em;color:var(--sub)}
.home-title{font-family:var(--f-title);font-weight:900;font-size:46px;line-height:1.25}
.home-title em{font-style:normal;color:var(--pri-em,var(--pri))}
.home-sub{font-size:13.5px;color:var(--body);line-height:2.1;max-width:270px;margin:0 auto}
.home-facts{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
.home-facts span{font-size:11px;border:1px solid var(--line2);border-radius:999px;padding:4px 12px;color:var(--sub)}
.home-btns{display:flex;flex-direction:column;gap:10px;max-width:280px;width:100%;margin:6px auto 0}
.home-foot{font-size:10.5px;color:var(--sub);opacity:.7}
/* 选身份/选公司 */
.sec-kicker{font-size:10.5px;letter-spacing:.3em;color:var(--pri-em,var(--pri))}
.sec-title{font-family:var(--f-title);font-weight:900;font-size:28px}
.sec-sub{font-size:12.5px;color:var(--sub);line-height:1.9}
.id-cards,.job-cards{display:flex;flex-direction:column;gap:10px}
.id-card,.job-card{
  text-align:left;background:var(--card);border:1.5px solid var(--line2);border-radius:var(--r-l);
  padding:14px 16px;display:flex;flex-direction:column;gap:4px;
}
.id-card b,.job-card b{font-size:16px;font-weight:800}
.id-card span,.job-card span{font-size:11.5px;color:var(--sub)}
.job-card em{font-style:normal;font-size:11.5px;font-weight:700;color:var(--pri-em,var(--pri))}
.jc-apmod{font-style:normal;font-weight:800;color:var(--bad)}
.id-card:hover,.job-card:hover{border-color:var(--pri)}
.id-desc{line-height:1.7}
/* 面试多选 / 放榜 */
.job-card{position:relative}
.job-card.jsel{border-color:var(--pri);background:var(--soft);box-shadow:0 0 0 1.5px var(--pri) inset}
.jc-pick{position:absolute;top:10px;right:12px;font-size:10px;font-weight:800;letter-spacing:.15em;text-decoration:none;color:var(--pri-em,var(--pri))}
.jc-ok{background:var(--pri);color:var(--pri-ink);padding:2px 8px;border-radius:999px}
.jc-offer{border-color:var(--pri)}
.jc-dead{opacity:.45;border-style:dashed}
/* 选形象 */
.look-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.look-card{aspect-ratio:1;border:2px solid var(--line2);border-radius:var(--r-l);background:var(--card);overflow:hidden;padding:0;display:flex;align-items:flex-start;justify-content:center}
.look-card svg{flex:none;width:112%;height:auto;margin-top:-2%;display:block}
.look-card:hover{border-color:var(--pri);transform:translateY(-2px)}
.look-card.on{border-color:var(--pri);box-shadow:0 0 0 2px var(--pri),0 6px 16px rgba(0,0,0,.12);transform:translateY(-2px)}
.look-name{display:flex;align-items:center;gap:10px;background:var(--card);border:1.5px solid var(--line2);border-radius:var(--r-m);padding:4px 6px 4px 14px}
.look-name span{font-size:11px;letter-spacing:.2em;color:var(--sub);flex:none}
.look-name input{flex:1;min-width:0;font:inherit;font-size:16px;font-weight:700;padding:9px 6px;border:0;background:transparent;color:var(--ink);outline:none}
.look-name input::placeholder{color:var(--sub);font-weight:400}
.look-name:focus-within{border-color:var(--pri)}
/* 结局 */
.sc-end{text-align:center;gap:16px}
.end-kicker{font-size:11px;letter-spacing:.3em;color:var(--sub);margin-top:12px}
.end-title{font-family:var(--f-title);font-weight:900;font-size:44px;color:var(--pri-em,var(--ink))}
.end-badges{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
.end-badges span{font-size:11.5px;border:1.5px solid var(--pri);color:var(--pri-em,var(--pri));border-radius:999px;padding:4px 13px;font-weight:700}
/* 徽章墙：全集展示，拿到的点亮 */
.badge-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px}
.bd{display:flex;flex-direction:column;gap:1px;padding:7px 9px;border:1px dashed var(--line2);border-radius:var(--r-s);opacity:.55}
.bd b{font-size:12px;font-weight:800;color:var(--sub)}
.bd i{font-style:normal;font-size:10px;color:var(--sub);line-height:1.4}
.bd-on{opacity:1;border-style:solid;border-color:var(--pri);background:var(--soft)}
.bd-on b{color:var(--pri-em,var(--pri))}
.bd-on i{color:var(--body)}
.end-tl,.end-shadow{background:var(--card);border:1px solid var(--line);border-radius:var(--r-m);padding:13px 15px;text-align:left}
.end-tl-head{font-size:15.5px;font-weight:900;color:var(--ink);letter-spacing:.02em;margin-bottom:10px;padding-left:10px;border-left:4px solid var(--pri)}
.tl-row{display:flex;gap:10px;font-size:12.5px;padding:3.5px 0;line-height:1.7}
.tl-row b{flex:none;color:var(--pri-em,var(--pri));font-variant-numeric:tabular-nums}
.shadow-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.sh{font-size:10.5px;text-align:center;padding:8px 2px;border:1px dashed var(--line2);border-radius:var(--r-s);color:var(--sub);opacity:.6}
.sh-on{opacity:1;border-style:solid;border-color:var(--pri);background:var(--pri);color:var(--pri-ink);font-weight:800}
.end-pension{font-size:12.5px;color:var(--sub)}
.end-pension a{color:var(--pri-em,var(--pri));font-weight:700}
/* 结局：这一生的四条曲线（双轴 SVG，见 js/curve.js） */
.end-curve{background:var(--card);border:1px solid var(--line);border-radius:var(--r-m);padding:13px 12px 6px;text-align:left}
.cv{display:block;width:100%;height:auto}
.cv-grid{stroke:var(--line);stroke-width:1}
.cv-tick{font-size:9px;fill:var(--sub)}
.cv-money{fill:var(--c-money);font-weight:700}
.cv-mark{stroke:var(--line2);stroke-width:1;stroke-dasharray:3 3}
.cv-label{font-size:10px;font-weight:700;fill:var(--body)}
.cv-line{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.cv-legend{display:flex;flex-wrap:wrap;justify-content:center;gap:5px 14px;font-size:11px;color:var(--sub);margin:4px 0 4px}
.cv-legend span{display:inline-flex;align-items:center;gap:5px}
.cv-legend i{display:inline-block;width:10px;height:10px;border-radius:2px}
.cv-legend i.cv-dash{height:0;width:12px;border-top:3px dashed;border-radius:0}
/* 弹层 */
#modal .mask{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:90;animation:maskIn .22s ease both}
#modal .mbox{
  position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:91;width:min(88vw,360px);
  background:var(--card);border:1.5px solid var(--evline,var(--ink));border-radius:var(--r-l);padding:20px;
  display:flex;flex-direction:column;gap:10px;
  animation:mbIn .32s cubic-bezier(.34,1.4,.64,1) both;
}
#modal .mb-acts{width:min(94vw,420px);max-height:86vh;padding:16px 15px}
#modal h3{font-family:var(--f-title);font-size:20px;font-weight:900}
#modal p{font-size:13.5px;line-height:1.95;color:var(--body)}
@keyframes maskIn{from{opacity:0}}
@keyframes mbIn{from{opacity:0;transform:translate(-50%,-46%) scale(.96)}to{opacity:1;transform:translate(-50%,-50%)}}
/* dev */
#dev{position:fixed;right:10px;bottom:10px;z-index:80;background:#111;color:#eee;border-radius:10px;padding:10px 12px;font-size:12px;max-width:320px;box-shadow:0 8px 30px rgba(0,0,0,.4)}
.dev-head{font-weight:700;margin-bottom:7px;display:flex;justify-content:space-between;gap:20px}
.dev-head a{color:#8cf}
.dev-row{display:flex;gap:6px;margin-top:6px;flex-wrap:wrap}
#dev select{max-width:200px;font-size:11px;background:#222;color:#eee;border:1px solid #444;border-radius:5px;padding:3px}
#dev button{background:#2d2d2d;border:1px solid #555;color:#eee;border-radius:6px;padding:4px 9px;font-size:11px}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
