*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
:root{
  --bg:#08090c; --card:#12161c; --card2:#1a2029; --line:rgba(255,255,255,.07);
  --tx:#f2f5f9; --mut:#7c8798; --dim:#4a5563;
  --ac:#ff7d1a; --ac2:#ffc247; --ok:#38d996; --bad:#ff5b5b;
}
html,body{margin:0;height:100%}
body{
  background:
    radial-gradient(120% 55% at 50% -10%,#1b2430 0%,rgba(8,9,12,0) 60%),
    radial-gradient(80% 40% at 90% 8%,rgba(255,125,26,.10) 0%,rgba(8,9,12,0) 55%),
    var(--bg);
  background-attachment:fixed;
  color:var(--tx);
  font:15px/1.5 -apple-system,BlinkMacSystemFont,"PingFang SC","HarmonyOS Sans SC","Microsoft YaHei",sans-serif;
  -webkit-font-smoothing:antialiased;overscroll-behavior:none;
}
.off{display:none!important}
input,button{font-family:inherit;font-size:15px;outline:none;color:inherit}
input{
  width:100%;background:#0d1116;border:1px solid var(--line);border-radius:13px;
  padding:13px 14px;transition:border-color .18s,background .18s;
}
input:focus{border-color:rgba(255,125,26,.55);background:#10151b}
.err{color:var(--bad);font-size:13px;min-height:18px;margin-top:10px;text-align:center}
.btn{width:100%;border:none;border-radius:14px;padding:14px;background:var(--card2);
  color:var(--tx);font-weight:600;letter-spacing:.3px;transition:transform .12s,filter .18s}
.btn.primary{background:linear-gradient(135deg,#ff8a2b,#ffc247);color:#1b1105;
  box-shadow:0 6px 16px -10px rgba(255,140,40,.75)}
.btn:active{transform:scale(.985);filter:brightness(1.05)}
.btn-ghost{background:rgba(255,255,255,.05);border:1px solid var(--line);color:var(--tx);
  border-radius:11px;padding:11px 14px;font-size:13px;font-weight:600;white-space:nowrap}
.btn-ghost.small{padding:7px 12px;font-size:12px}
.btn-ghost:disabled{color:var(--dim)}

/* ---------- 登录 ---------- */
.auth{
  min-height:100%;display:flex;flex-direction:column;justify-content:center;
  padding:34px 26px calc(34px + env(safe-area-inset-bottom));gap:14px;max-width:480px;margin:0 auto;
}
.auth-top{text-align:center;margin-bottom:26px}
.brand{
  font-size:76px;font-weight:900;line-height:.95;letter-spacing:-4px;
  background:linear-gradient(150deg,#ff7d1a 0%,#ffc247 55%,#fff0c9 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
  filter:drop-shadow(0 6px 32px rgba(255,140,40,.42));
}
.slogan{color:var(--mut);font-size:13px;margin-top:10px;letter-spacing:2px}
.seg{display:flex;background:#0d1116;border:1px solid var(--line);border-radius:14px;padding:4px;gap:4px}
.sg{flex:1;background:none;border:none;color:var(--mut);padding:10px;border-radius:11px;
  font-size:14px;font-weight:600;transition:.18s}
.sg.active{background:var(--card2);color:var(--tx);box-shadow:0 2px 10px rgba(0,0,0,.35)}
.field{margin-bottom:4px}
.field label{display:block;color:var(--mut);font-size:12px;margin-bottom:7px;padding-left:2px}
.ro{background:rgba(255,255,255,.03);border:1px solid var(--line);border-radius:13px;
  padding:13px 14px;color:#ffb877;font-variant-numeric:tabular-nums;font-weight:600}
.code-row{display:grid;grid-template-columns:1fr 112px;gap:10px;align-items:end}
.code-row label{grid-column:1/-1}
.code-row .btn-ghost{align-self:stretch;border-radius:13px;padding:13px 0;text-align:center}
.agree{display:flex;gap:9px;align-items:flex-start;color:var(--mut);font-size:12.5px;
  margin:8px 0 6px;line-height:1.6}
.agree b{color:#cfd8e4;font-weight:500}
.ck{width:18px;height:18px;border-radius:6px;border:1.5px solid #3b4655;flex:none;margin-top:1px;
  position:relative;transition:.16s}
.ck.on{background:linear-gradient(135deg,#ff8a2b,#ffc247);border-color:transparent}
.ck.on:after{content:"";position:absolute;left:5.5px;top:2px;width:5px;height:9px;
  border:2px solid #1b1105;border-top:0;border-left:0;transform:rotate(42deg)}

/* ---------- 壳 ---------- */
.app{min-height:100%;padding-bottom:calc(108px + env(safe-area-inset-bottom))}
main{padding:calc(10px + env(safe-area-inset-top)) 15px 8px;max-width:560px;margin:0 auto}
.view{display:flex;flex-direction:column;gap:12px;animation:in .26s cubic-bezier(.2,.7,.3,1)}
@keyframes in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.page-hd{display:flex;justify-content:space-between;align-items:flex-end;padding:6px 2px 2px}
.page-hd.tight{padding-bottom:0}
.page-hd h1{margin:0;font-size:26px;font-weight:800;letter-spacing:-.5px}
.page-hd p{margin:3px 0 0;color:var(--mut);font-size:12.5px}
.streak{display:flex;align-items:baseline;gap:3px;background:rgba(255,125,26,.10);
  border:1px solid rgba(255,125,26,.28);border-radius:14px;padding:7px 12px;color:#ffb266;font-size:13px}
.streak i{font-style:normal;font-size:13px}
.streak span{font-weight:800;font-size:16px;color:#ffd08a}
.streak em{font-style:normal;color:var(--mut);font-size:11px}

.card{background:linear-gradient(180deg,rgba(255,255,255,.045),rgba(255,255,255,.015));
  border:1px solid var(--line);border-radius:20px;padding:16px;backdrop-filter:blur(8px)}
.card.sm{padding:13px 8px;text-align:center;border-radius:16px}
.k{color:var(--mut);font-size:11.5px;letter-spacing:.3px}
.v{font-size:22px;font-weight:750;margin-top:4px;font-variant-numeric:tabular-nums;letter-spacing:-.5px}
.v.ok{color:var(--ok)}
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.big{font-size:32px;font-weight:800;letter-spacing:-1px;font-variant-numeric:tabular-nums}
.row{display:flex;justify-content:space-between;padding:11px 0;font-size:14px;
  border-bottom:1px solid rgba(255,255,255,.05)}
.row:last-child{border:0;padding-bottom:0}
.row b{font-variant-numeric:tabular-nums;font-weight:650}

/* ---------- 环 ---------- */
.ring-wrap{position:relative;display:flex;justify-content:center;align-items:center;margin:2px 0 -4px}
#ring{width:min(76vw,300px);height:min(76vw,300px);filter:drop-shadow(0 10px 34px rgba(255,120,30,.18))}
.ring-mid{position:absolute;text-align:center}
.rm-num{font-size:44px;font-weight:800;line-height:1;letter-spacing:-2px;font-variant-numeric:tabular-nums;
  background:linear-gradient(160deg,#fff 20%,#ffcf8a 100%);-webkit-background-clip:text;background-clip:text;color:transparent}
.rm-lab{color:var(--mut);font-size:12px;margin-top:7px}
.rm-sub{color:var(--dim);font-size:11px;margin-top:4px;font-variant-numeric:tabular-nums}

/* ---------- 燃脂 ---------- */
.burn{position:relative;overflow:hidden}
.burn:before{content:"";position:absolute;inset:-40% -20% auto -20%;height:80%;
  background:radial-gradient(60% 100% at 50% 0%,rgba(255,125,26,.15),transparent 70%);pointer-events:none}
.burn-hd{display:flex;justify-content:space-between;align-items:center}
.badge{background:rgba(255,125,26,.12);color:#ffb877;border:1px solid rgba(255,125,26,.28);
  padding:5px 11px;border-radius:20px;font-size:11.5px;font-weight:600}
.burn-main{display:flex;justify-content:space-between;align-items:flex-end;margin-top:12px}
.bm-l .big{font-size:30px}
.bm-r{text-align:right}
.fat-num{font-size:40px;font-weight:800;line-height:1;color:#ffa04d;font-variant-numeric:tabular-nums;letter-spacing:-1.5px}
.fat-num i{font-size:17px;font-style:normal;margin-left:3px;color:#ffbd7a}
.bar{height:5px;background:#0c1015;border-radius:5px;overflow:hidden;margin-top:15px}
.bar i{display:block;height:100%;width:0;border-radius:5px;
  background:linear-gradient(90deg,#ff7d1a,#ffc247);transition:width .8s cubic-bezier(.2,.8,.2,1)}
.bar-lab{display:flex;justify-content:space-between;color:var(--dim);font-size:11px;margin-top:7px}

/* ---------- 列表 ---------- */
.lh{display:flex;justify-content:space-between;font-size:13px;color:var(--mut);margin-bottom:10px}
.lh b{color:var(--tx);font-weight:650}
.lh.mt{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
.rows{display:flex;flex-direction:column;gap:7px}
.it{display:flex;justify-content:space-between;align-items:center;background:rgba(255,255,255,.03);
  border-radius:13px;padding:11px 13px;font-size:14px}
.it em{font-style:normal;color:var(--mut);font-size:11.5px;margin-left:7px;
  background:rgba(255,255,255,.05);padding:2px 7px;border-radius:6px}
.it>b{color:#ffb266;font-variant-numeric:tabular-nums;font-weight:650}
.it .x{color:var(--dim);margin-left:10px;font-size:16px;padding:2px 3px}
.empty{color:var(--dim);font-size:13px;padding:10px 2px;text-align:center}

/* ---------- 身形 ---------- */
.stage-wrap{position:relative;border-radius:22px;overflow:hidden;border:1px solid var(--line);
  background:radial-gradient(70% 55% at 50% 32%,#1c2531 0%,#0b0e13 72%)}
#stage{width:100%;height:min(56vh,412px);display:block}
.stage-tip{position:absolute;left:0;right:0;bottom:10px;text-align:center;color:#6b788a;font-size:11px}
.st{font-size:10.5px;margin-top:5px;color:var(--dim)}
.st.warn{color:#ffb266}
.st.bad{color:#ff7a7a}
.st.good{color:var(--ok)}
.hl{position:absolute;left:0;right:0;bottom:34px;text-align:center;pointer-events:none}
.hl span{display:inline-block;background:rgba(12,16,21,.86);border:1px solid rgba(255,125,26,.32);
  color:#ffd7a8;font-size:12px;padding:6px 13px;border-radius:20px;backdrop-filter:blur(6px)}
.seg.small .sg{padding:8px;font-size:13px}

/* ---------- chips ---------- */
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.chip{background:rgba(255,255,255,.035);border:1px solid var(--line);color:var(--mut);
  border-radius:22px;padding:8px 15px;font-size:13px;font-weight:600;transition:.15s}
.chip.active{background:rgba(255,125,26,.13);border-color:rgba(255,125,26,.45);color:#ffb877}

/* ---------- 表单 ---------- */
.duo{display:flex;gap:10px;align-items:flex-end}
.duo .field{flex:1}
.duo .btn{width:auto;padding:13px 20px;margin-bottom:4px;white-space:nowrap}
.sug{display:flex;flex-direction:column;gap:5px;margin:-6px 0 12px}
.sug div{background:rgba(255,255,255,.035);border:1px solid var(--line);border-radius:12px;
  padding:10px 13px;font-size:13px;display:flex;justify-content:space-between;color:#cfd8e4}
.sug div b{color:#ffb266;font-weight:600}

/* ---------- 预测 ---------- */
.hero{background:linear-gradient(150deg,rgba(255,125,26,.16),rgba(255,194,71,.05) 55%,rgba(255,255,255,.02));
  text-align:center;padding:20px 16px}
.hero .big{margin:9px 0 5px;font-size:36px}
.progress{height:4px;background:rgba(255,255,255,.08);border-radius:4px;margin-top:16px;overflow:hidden}
.progress i{display:block;height:100%;width:0;background:linear-gradient(90deg,#ff7d1a,#ffc247);
  transition:width .9s cubic-bezier(.2,.8,.2,1)}
#chart{width:100%;display:block;margin-top:4px}
.aitext{margin-top:13px;font-size:13.5px;line-height:1.75;color:#ccd6e2;white-space:pre-wrap}

/* ---------- 我的 ---------- */
.av-sw{width:36px;height:36px;border-radius:50%;border:2px solid transparent;padding:0}
.av-sw.active{border-color:#fff;box-shadow:0 0 0 3px rgba(255,255,255,.14)}
.av-sw.a0{background:linear-gradient(140deg,#ff8a2b,#ff5f6d)}
.av-sw.a1{background:linear-gradient(140deg,#4facfe,#00f2fe)}
.av-sw.a2{background:linear-gradient(140deg,#43e97b,#38f9d7)}
.av-sw.a3{background:linear-gradient(140deg,#a18cd1,#fbc2eb)}
.av-sw.a4{background:linear-gradient(140deg,#ff9a44,#fc6076)}
.av-sw.a5{background:linear-gradient(140deg,#667eea,#764ba2)}
.me-head{display:flex;align-items:center;gap:14px;padding:14px 4px 6px}
.avatar{width:58px;height:58px;border-radius:20px;display:flex;align-items:center;justify-content:center;
  font-size:22px;font-weight:800;color:#fff;flex:none;
  background:linear-gradient(140deg,#ff8a2b,#ff5f6d);box-shadow:0 8px 22px -10px rgba(255,120,40,.9)}
.avatar.a1{background:linear-gradient(140deg,#4facfe,#00f2fe)}
.avatar.a2{background:linear-gradient(140deg,#43e97b,#38f9d7)}
.avatar.a3{background:linear-gradient(140deg,#a18cd1,#fbc2eb)}
.avatar.a4{background:linear-gradient(140deg,#ff9a44,#fc6076)}
.avatar.a5{background:linear-gradient(140deg,#667eea,#764ba2)}
.me-id{flex:1;min-width:0}
.nick{font-size:19px;font-weight:750;letter-spacing:-.3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.phone{color:var(--mut);font-size:12.5px;margin-top:4px;font-variant-numeric:tabular-nums}
.stat3{display:grid;grid-template-columns:repeat(3,1fr);text-align:center}
.stat3 .v{font-size:19px;margin-top:2px}
.stat3 .k{font-size:11px;margin-top:3px}
.stat3>div+div{border-left:1px solid var(--line)}
.menu{padding:4px 16px}
.mi{display:flex;justify-content:space-between;align-items:center;padding:15px 0;
  border-bottom:1px solid rgba(255,255,255,.05);font-size:14.5px}
.mi:last-child{border:0}
.mi i{font-style:normal;color:var(--dim);font-size:18px}
.mi.danger span{color:#ff7a7a}
.ver{text-align:center;color:#39434f;font-size:11.5px;padding:6px 0 10px}

/* ---------- tabbar ---------- */
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:30;display:flex;gap:2px;
  padding:9px 10px calc(9px + env(safe-area-inset-bottom));
  background:rgba(10,13,17,.92);backdrop-filter:blur(22px) saturate(1.2);
  border-top:1px solid rgba(255,255,255,.06)}
.tb{flex:1;background:none;border:none;color:#5a6675;display:flex;flex-direction:column;
  align-items:center;gap:3px;padding:4px 0;border-radius:14px;transition:color .18s}
.tb svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7;
  stroke-linecap:round;stroke-linejoin:round}
.tb span{font-size:10.5px;font-weight:600;letter-spacing:.2px}
.tb.active{color:var(--ac)}
.tb.active svg{stroke-width:2}

/* ---------- 弹层 ---------- */
.sheet{position:fixed;inset:0;z-index:60;background:rgba(4,6,9,.6);backdrop-filter:blur(4px);
  display:flex;align-items:flex-end;animation:fade .2s}
@keyframes fade{from{opacity:0}to{opacity:1}}
.sheet-box{width:100%;max-width:560px;margin:0 auto;background:#0f141a;
  border-radius:22px 22px 0 0;border-top:1px solid var(--line);
  max-height:82vh;display:flex;flex-direction:column;animation:up .26s cubic-bezier(.2,.8,.2,1)}
@keyframes up{from{transform:translateY(40px);opacity:.6}to{transform:none;opacity:1}}
.sheet-hd{display:flex;justify-content:space-between;align-items:center;padding:16px 18px 10px;font-size:16px}
.sheet-hd button{background:none;border:none;color:var(--mut);font-size:13px}
.sheet-body{padding:4px 18px calc(24px + env(safe-area-inset-bottom));overflow:auto;
  color:#b9c4d2;font-size:13.5px;line-height:1.8;white-space:pre-wrap}
.toast{position:fixed;left:50%;bottom:104px;transform:translateX(-50%) translateY(8px);
  background:rgba(30,38,50,.96);border:1px solid var(--line);color:#eef2f7;
  padding:11px 20px;border-radius:22px;font-size:13px;z-index:99;opacity:0;transition:.22s;pointer-events:none}
.toast.on{opacity:1;transform:translateX(-50%)}
