/* ========== 一致 flowone · 设计系统 ========== */
:root{
  --paper:#f5f1e8;
  --paper-2:#faf7f0;
  --card:#fffdf8;
  --ink:#2b2620;
  --ink-2:#5a5347;
  --ink-3:#8a8170;
  --line:#e7e0d0;
  --line-2:#efe9da;
  --celadon:#5b8c7e;      /* 青瓷 · 主色 */
  --celadon-d:#3f6f61;
  --cinnabar:#b5482f;     /* 朱砂 · 强调 */
  --cinnabar-d:#93371f;
  --gold:#b89b6e;
  --jade-soft:#e7f0ec;
  --cinnabar-soft:#f7e7e1;
  --shadow:0 6px 24px rgba(60,48,30,.10);
  --shadow-sm:0 2px 10px rgba(60,48,30,.08);
  --r:18px;
  --r-sm:12px;
  --serif:"Songti SC","SimSun","STSong",serif;
  --sans:"PingFang SC","Microsoft YaHei","Hiragino Sans GB",system-ui,sans-serif;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  font-family:var(--sans);
  color:var(--ink);
  background:#e9e3d6;
  -webkit-font-smoothing:antialiased;
  line-height:1.6;
}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
ul{margin:0;padding:0;list-style:none}

/* 应用外壳：移动端优先，桌面居中 */
#app{
  max-width:480px;margin:0 auto;min-height:100vh;
  background:var(--paper);
  position:relative;display:flex;flex-direction:column;
  box-shadow:0 0 60px rgba(0,0,0,.12);
}
@media(min-width:540px){#app{margin-top:18px;margin-bottom:18px;min-height:calc(100vh - 36px);border-radius:22px;overflow:hidden}}

/* ---- 顶栏 ---- */
.topbar{
  position:sticky;top:0;z-index:20;
  display:flex;align-items:center;justify-content:space-between;
  padding:14px 18px 12px;
  background:rgba(245,241,232,.92);
  backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line-2);
}
.brand{display:flex;align-items:center;gap:10px}
.seal{
  width:34px;height:34px;border-radius:9px;
  background:linear-gradient(145deg,var(--cinnabar),var(--cinnabar-d));
  color:#fff;font-family:var(--serif);font-size:20px;font-weight:700;
  display:grid;place-items:center;box-shadow:0 3px 10px rgba(181,72,47,.35);
}
.brand-txt{display:flex;flex-direction:column;line-height:1.1}
.brand-txt strong{font-family:var(--serif);font-size:18px;letter-spacing:2px}
.brand-txt em{font-style:normal;font-size:10.5px;color:var(--ink-3);letter-spacing:.5px}
.energy-chip{
  display:flex;align-items:center;gap:6px;font-size:13px;font-weight:700;
  background:var(--jade-soft);color:var(--celadon-d);
  padding:5px 11px;border-radius:20px;
}
.energy-chip .dot{width:7px;height:7px;border-radius:50%;background:var(--celadon);box-shadow:0 0 0 3px rgba(91,140,126,.25)}

/* ---- 视图容器 ---- */
.view{flex:1;padding:16px 16px 96px;overflow-y:auto;animation:fadeUp .35s ease}
@keyframes fadeUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

/* ---- 底部导航 ---- */
.tabbar{
  position:fixed;bottom:0;left:50%;transform:translateX(-50%);
  width:100%;max-width:480px;z-index:30;
  display:flex;background:var(--paper-2);
  border-top:1px solid var(--line);
  padding:6px 0 calc(6px + env(safe-area-inset-bottom));
}
.tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 0;color:var(--ink-3);transition:.2s}
.tab i{font-size:18px;font-style:normal;line-height:1}
.tab span{font-size:11px;letter-spacing:1px}
.tab.active{color:var(--cinnabar)}
.tab.active i{transform:translateY(-1px) scale(1.12)}

/* ---- 通用卡片 ---- */
.card{background:var(--card);border:1px solid var(--line-2);border-radius:var(--r);padding:16px;box-shadow:var(--shadow-sm);margin-bottom:14px}
.card.tight{padding:13px}
.card-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.card-title h3{margin:0;font-family:var(--serif);font-size:16px;letter-spacing:1px;font-weight:600}
.card-title .sub{font-size:11.5px;color:var(--ink-3)}
.section-label{font-family:var(--serif);font-size:13px;letter-spacing:3px;color:var(--ink-3);margin:4px 2px 10px}

/* ---- 文案/标题 ---- */
.h-hero{font-family:var(--serif);font-size:23px;letter-spacing:2px;margin:2px 0 4px;font-weight:600}
.muted{color:var(--ink-3);font-size:13px}
.center{text-align:center}

/* ---- 按钮 ---- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;
  padding:11px 16px;border-radius:14px;font-size:14.5px;font-weight:600;transition:.18s;width:100%}
.btn:active{transform:scale(.97)}
.btn-primary{background:var(--celadon);color:#fff;box-shadow:0 4px 14px rgba(91,140,126,.35)}
.btn-accent{background:var(--cinnabar);color:#fff;box-shadow:0 4px 14px rgba(181,72,47,.3)}
.btn-ghost{background:transparent;border:1px solid var(--line);color:var(--ink-2)}
.btn-sm{padding:8px 13px;font-size:13px;border-radius:11px;width:auto}

/* ---- 一致性六边形 ---- */
.hex-wrap{display:flex;justify-content:center;padding:6px 0 2px}
.hex-legend{display:flex;justify-content:center;gap:18px;font-size:12px;color:var(--ink-2);margin-top:2px}
.hex-legend i{display:inline-block;width:18px;height:4px;border-radius:2px;vertical-align:middle;margin-right:5px}

/* ---- 维度小卡（首页维度条） ---- */
.dim-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px dashed var(--line-2)}
.dim-row:last-child{border-bottom:none}
.dim-ic{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;font-size:16px;background:var(--jade-soft);color:var(--celadon-d);flex:none}
.dim-meta{flex:1;min-width:0}
.dim-name{font-size:14px;font-weight:600}
.dim-stat{font-size:11.5px;color:var(--ink-3)}
.bar{flex:1;height:7px;border-radius:4px;background:var(--line-2);overflow:hidden;margin-top:5px}
.bar > i{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,var(--celadon),var(--celadon-d));transition:width .8s cubic-bezier(.2,.8,.2,1)}
.bar.low > i{background:linear-gradient(90deg,#d9a441,var(--cinnabar))}

/* ---- 行为/打卡条目 ---- */
.beh{border:1px solid var(--line-2);border-radius:14px;padding:12px 13px;display:flex;align-items:center;gap:11px;background:var(--card);transition:.18s}
.beh:active{transform:scale(.985)}
.beh.done{background:var(--jade-soft);border-color:#cfe3dc}
.beh-ic{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;font-size:19px;background:var(--paper);flex:none}
.beh-main{flex:1;min-width:0}
.beh-name{font-size:14.5px;font-weight:600}
.beh-cat{font-size:11px;color:var(--ink-3)}
.beh-check{width:26px;height:26px;border-radius:50%;border:2px solid var(--line);display:grid;place-items:center;color:transparent;flex:none;font-size:14px}
.beh.done .beh-check{background:var(--celadon);border-color:var(--celadon);color:#fff}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:11px}
.cat-pill{font-size:11px;padding:3px 9px;border-radius:20px;background:var(--paper);color:var(--ink-2);border:1px solid var(--line-2)}

/* ---- 等级进阶 ---- */
.tier{display:flex;align-items:center;gap:12px;background:linear-gradient(135deg,#fbf6ea,#f3ece0);border:1px solid var(--line);border-radius:var(--r);padding:14px}
.tier-badge{width:54px;height:54px;border-radius:50%;display:grid;place-items:center;font-family:var(--serif);font-size:22px;color:#fff;background:linear-gradient(145deg,var(--gold),#9a7e4f);flex:none;box-shadow:0 4px 12px rgba(184,155,110,.4)}
.tier-info{flex:1}
.tier-name{font-family:var(--serif);font-size:17px;letter-spacing:2px}
.tier-next{font-size:12px;color:var(--ink-3);margin-top:2px}

/* ---- 共修动态 ---- */
.post{border:1px solid var(--line-2);border-radius:14px;padding:13px;background:var(--card);margin-bottom:11px}
.post-head{display:flex;align-items:center;gap:9px;margin-bottom:7px}
.avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;color:#fff;font-weight:700;font-size:14px;flex:none}
.post-name{font-size:13.5px;font-weight:600}
.post-time{font-size:11px;color:var(--ink-3)}
.post-text{font-size:14px;line-height:1.7;color:var(--ink)}
.post-actions{display:flex;gap:18px;margin-top:9px;font-size:12.5px;color:var(--ink-3)}
.post-actions span{display:flex;align-items:center;gap:4px}
.group-chip{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border-radius:20px;border:1px solid var(--line);font-size:13px;color:var(--ink-2);margin:0 8px 10px 0}
.group-chip.on{background:var(--celadon);color:#fff;border-color:var(--celadon)}

/* ---- 表单 ---- */
.field{margin-bottom:14px}
.field label{display:block;font-size:13px;color:var(--ink-2);margin-bottom:6px;font-weight:600}
.input,textarea.input,select.input{width:100%;padding:11px 13px;border:1px solid var(--line);border-radius:12px;font-size:14.5px;background:var(--paper-2);color:var(--ink);font-family:inherit}
.input:focus{outline:none;border-color:var(--celadon)}
textarea.input{resize:vertical;min-height:84px}
.seg{display:flex;gap:8px;flex-wrap:wrap}
.seg button{flex:1;min-width:84px;padding:9px;border-radius:11px;border:1px solid var(--line);font-size:13px;color:var(--ink-2);background:var(--paper-2)}
.seg button.on{background:var(--celadon);color:#fff;border-color:var(--celadon)}

/* ---- 简报信纸 ---- */
.letter{background:linear-gradient(180deg,#fffdf8,#faf6ec);border:1px solid var(--line);border-radius:var(--r);padding:20px 18px;font-family:var(--serif);line-height:2;color:#3a342c;box-shadow:var(--shadow-sm);position:relative}
.letter::before{content:"";position:absolute;left:18px;right:18px;top:14px;border-top:1px solid var(--line)}
.letter h4{font-size:16px;letter-spacing:2px;margin:6px 0 14px;text-align:center;color:var(--cinnabar-d)}
.letter p{margin:0 0 12px;text-indent:2em;font-size:14.5px}
.letter .sign{text-align:right;color:var(--ink-3);font-size:13px;text-indent:0;margin-top:8px}

/* ---- Toast & Modal ---- */
#toast-root{position:fixed;left:50%;bottom:90px;transform:translateX(-50%);z-index:90;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}
.toast{background:rgba(43,38,32,.92);color:#fff;font-size:13px;padding:9px 16px;border-radius:22px;box-shadow:var(--shadow);animation:fadeUp .25s}
#modal-root{position:fixed;inset:0;z-index:80;display:none}
#modal-root.show{display:block}
.modal-mask{position:absolute;inset:0;background:rgba(30,25,18,.45);backdrop-filter:blur(2px)}
.modal{position:absolute;left:50%;bottom:0;transform:translateX(-50%);width:100%;max-width:480px;
  background:var(--paper);border-radius:22px 22px 0 0;padding:20px 18px calc(20px + env(safe-area-inset-bottom));
  animation:slideUp .3s ease;max-height:88vh;overflow-y:auto}
@keyframes slideUp{from{transform:translate(-50%,100%)}to{transform:translate(-50%,0)}}
.modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.modal-head h3{margin:0;font-family:var(--serif);font-size:18px;letter-spacing:1px}
.modal-x{font-size:22px;color:var(--ink-3);padding:0 4px}

/* ---- 空态 ---- */
.empty{text-align:center;color:var(--ink-3);padding:34px 10px;font-size:13.5px}
.empty .big{font-size:34px;opacity:.5;margin-bottom:8px}

/* ---- 浮动新增 ---- */
.fab{position:fixed;right:max(18px,calc(50% - 222px));bottom:78px;z-index:40;width:52px;height:52px;border-radius:50%;
  background:var(--cinnabar);color:#fff;font-size:26px;display:grid;place-items:center;box-shadow:0 6px 18px rgba(181,72,47,.4);transition:.2s}
.fab:active{transform:scale(.92)}

/* 进度环 */
.ring{position:relative;width:64px;height:64px}
.ring svg{transform:rotate(-90deg)}
.ring .val{position:absolute;inset:0;display:grid;place-items:center;font-weight:700;font-size:15px;color:var(--celadon-d)}

.hidden{display:none!important}
.fade-in{animation:fadeUp .3s ease}

/* ---- 登录/注册 ---- */
.auth-wrap{min-height:calc(100vh - 150px);display:flex;align-items:center;justify-content:center;padding:10px}
.auth-card{max-width:340px;width:100%;text-align:center}
.auth-card .brand{display:flex;align-items:center;gap:10px}
.auth-card .input{text-align:center;font-size:15px}

/* ========== 修身之身 · 数字孪生人形 ========== */
.av-stage-wrap{position:relative;margin:2px 0 4px}
.avatar-stage{position:relative;width:100%;max-width:248px;margin:0 auto;aspect-ratio:5/6;display:flex;align-items:flex-end;justify-content:center}
.av-aura{position:absolute;left:50%;top:46%;width:180%;height:180%;transform:translate(-50%,-50%);
  background:radial-gradient(circle, rgba(91,140,126,.5) 0%, rgba(91,140,126,.12) 38%, rgba(245,241,232,0) 72%);
  opacity:calc(var(--glow,0)/100);filter:blur(5px);pointer-events:none;transition:opacity .9s ease}
.t-shen .av-aura{background:radial-gradient(circle, rgba(184,155,110,.58) 0%, rgba(184,155,110,.16) 42%, rgba(245,241,232,0) 74%)}
.t-shen .av-aura{opacity:calc(.25 + var(--glow,0)/100*.7)}
.av-platform{position:absolute;bottom:6px;left:50%;transform:translateX(-50%);width:60%;height:16px;border-radius:50%;
  background:radial-gradient(ellipse, rgba(43,38,32,.18), rgba(43,38,32,0) 70%);filter:blur(2px);transition:background .8s}
.t-zhi .av-platform{background:radial-gradient(ellipse, rgba(91,140,126,.38), rgba(91,140,126,0) 70%)}
.t-shen .av-platform{background:radial-gradient(ellipse, rgba(184,155,110,.55), rgba(184,155,110,0) 70%)}
.av-figure{position:relative;width:80%;height:auto;z-index:2;animation:breathe 5.5s ease-in-out infinite;
  filter:drop-shadow(0 8px 10px rgba(40,30,18,.18));cursor:pointer}
@keyframes breathe{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-3px) scale(1.012)}}
.av-halo{fill:url(#haloGrad);opacity:calc(var(--glow,0)/100);transition:opacity .9s ease}
.t-zhi .av-halo{opacity:calc(.2 + var(--glow,0)/100*.7)}
.t-shen .av-halo{opacity:calc(.5 + var(--glow,0)/100*.45)}
.av-head{fill:#ead4bc;stroke:#2b2620;stroke-width:1.4;transition:fill .6s,stroke .6s}
.t-zhi .av-head{fill:#e6d6c3}
.t-shen .av-head{fill:#f7ebcf;stroke:#9a7e4f}
.av-hair{fill:#3f372d;transition:fill .6s}
.t-shen .av-hair{fill:#7a612d}
.av-neck{fill:#d9c3a8;stroke:#2b2620;stroke-width:1.4;transition:fill .6s,stroke .6s}
.t-zhi .av-neck{fill:#cfc0ad}
.t-shen .av-neck{fill:#f4e4c0;stroke:#9a7e4f}
.av-collar{stroke:#2b2620;stroke-width:1.2;opacity:.6;transition:stroke .6s}
.t-shen .av-collar{stroke:#9a7e4f}
.av-robe{fill:#5b5347;stroke:#2b2620;stroke-width:1.4;transition:fill .6s,stroke .6s}
.t-yong .av-robe{fill:#6f6657}
.t-zhi .av-robe{fill:#4f6f64}
.t-shen .av-robe{fill:url(#goldGrad);stroke:#9a7e4f}
.av-arm{fill:none;stroke:#2b2620;stroke-width:1.4;opacity:.5;transition:stroke .6s}
.t-shen .av-arm{stroke:#9a7e4f}
.av-heart{fill:var(--cinnabar);opacity:calc(.38 + var(--glow,0)/100*.55);transition:opacity .9s}
.t-shen .av-heart{fill:#e8c46a}
.av-particles{position:absolute;inset:0;z-index:1;pointer-events:none;opacity:0;transition:opacity .8s}
.t-shen .av-particles{opacity:1}
.av-particles .pt{position:absolute;bottom:20%;width:6px;height:6px;border-radius:50%;background:#e8c46a;box-shadow:0 0 8px #e8c46a;animation:floatUp 4.2s ease-in infinite}
@keyframes floatUp{0%{transform:translateY(0) scale(.6);opacity:0}18%{opacity:.95}100%{transform:translateY(-160px) scale(1);opacity:0}}
.av-pulse{position:absolute;left:50%;top:48%;transform:translate(-50%,-50%);z-index:1;pointer-events:none}
.av-pulse .ring2{position:absolute;left:0;top:0;width:54px;height:54px;margin:-27px 0 0 -27px;border-radius:50%;border:2px solid rgba(91,140,126,.55);animation:pulseOut 1.7s ease-out forwards}
.t-shen .av-pulse .ring2{border-color:rgba(184,155,110,.7)}
@keyframes pulseOut{0%{transform:scale(.35);opacity:.85}100%{transform:scale(3.6);opacity:0}}
.av-tag{position:relative;z-index:3;text-align:center;margin-top:2px;pointer-events:none}
.av-tier{font-family:var(--serif);font-size:18px;letter-spacing:3px;display:block;color:var(--ink)}
.t-shen .av-tier{color:var(--gold)}
.av-sub{font-size:11px;color:var(--ink-3)}
.av-stats{display:flex;justify-content:center;gap:20px;margin:2px 0 14px}
.av-stats .st{text-align:center}
.av-stats .st b{font-family:var(--serif);font-size:20px;display:block;line-height:1.3}
.av-stats .st span{font-size:11px;color:var(--ink-3)}

/* 进阶突破仪式 */
.ceremony{position:fixed;inset:0;z-index:120;display:flex;flex-direction:column;align-items:center;justify-content:center;
  background:radial-gradient(circle at 50% 42%, rgba(40,32,18,.88), rgba(18,14,9,.97));animation:fadeUp .4s}
.ceremony .cer-fig{width:150px;height:190px;animation:cerRise 1s cubic-bezier(.2,.8,.2,1)}
.ceremony .cer-fig .av-robe{fill:url(#goldGrad)}
.ceremony .cer-fig .av-head{fill:#fbf3df}
.ceremony .cer-fig .av-halo{fill:url(#haloGrad);opacity:.9}
.ceremony .cer-fig .av-arm{stroke:#9a7e4f}
.ceremony .cer-fig .av-heart{fill:#e8c46a}
@keyframes cerRise{from{transform:translateY(34px) scale(.85);opacity:0}to{transform:none;opacity:1}}
.ceremony .cer-burst{position:absolute;left:50%;top:40%;width:12px;height:12px;border-radius:50%;background:#f4d98a;animation:cerBurst 1.5s ease-out infinite}
@keyframes cerBurst{0%{box-shadow:0 0 0 0 rgba(244,217,138,.6)}100%{box-shadow:0 0 0 130px rgba(244,217,138,0)}}
.ceremony .cer-title{font-family:var(--serif);font-size:28px;letter-spacing:8px;color:#f4d98a;margin-top:18px;text-shadow:0 0 22px rgba(244,217,138,.6)}
.ceremony .cer-sub{color:#ecdfc2;font-size:13.5px;margin-top:10px;letter-spacing:1px}
.ceremony .cer-hint{position:absolute;bottom:38px;color:rgba(236,223,194,.55);font-size:11px;letter-spacing:1px}

/* ========== 首页 · 日课 ========== */
.energy-hero{text-align:center;margin:6px 0 16px}
.energy-hero .eh-num{font-family:var(--serif);font-size:54px;line-height:1;font-weight:600}
.energy-hero .eh-label{font-size:12px;color:var(--ink-3);letter-spacing:2px;margin-top:2px}
.rk-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.rk{background:var(--card);border:1px solid var(--line-2);border-radius:16px;padding:14px 8px;text-align:center;transition:.18s;cursor:pointer}
.rk:active{transform:scale(.96)}
.rk-ic{font-size:26px;line-height:1}
.rk-name{font-size:13px;font-weight:600;margin-top:6px}
.rk-check{margin-top:6px;font-size:15px;color:var(--ink-3);font-weight:700}
.rk.done{background:var(--jade-soft);border-color:#cfe3dc}
.rk.done .rk-check{color:var(--celadon);font-size:17px}
.rk-progress{text-align:center;font-size:12px;color:var(--ink-3);margin-top:12px}
.read-cta{display:flex;align-items:center;gap:12px;background:linear-gradient(135deg,#fbf6ea,#f1e9d8);border:1px solid var(--line);border-radius:18px;padding:15px 16px;margin-top:16px;cursor:pointer;transition:.18s}
.read-cta:active{transform:scale(.985)}
.rc-ic{font-size:30px}
.rc-main{flex:1}
.rc-title{font-family:var(--serif);font-size:16px;letter-spacing:1px}
.rc-sub{font-size:12px;color:var(--ink-3);margin-top:2px}
.rc-arrow{font-size:22px;color:var(--celadon-d)}

/* ========== 我的 · 修身之身角色 ========== */
.char-card{background:linear-gradient(180deg,#fbf6ea,#f4ede0);border:1px solid var(--line);border-radius:var(--r);padding:14px 10px 16px;margin-bottom:14px}
.char-energy{display:flex;justify-content:center;gap:16px;margin-top:4px}
.ce-item{text-align:center;min-width:64px}
.ce-item b{font-family:var(--serif);font-size:22px;display:block;line-height:1.2}
.ce-item span{font-size:11px;color:var(--ink-3)}
.char-title{text-align:center;font-size:12.5px;color:var(--ink-2);margin-top:12px;letter-spacing:1px}
.det-toggle{width:100%;text-align:center;font-size:13px;color:var(--celadon-d);background:var(--jade-soft);border:1px solid #cfe3dc;border-radius:12px;padding:11px;cursor:pointer;letter-spacing:1px}
.det-box{margin-top:10px}

/* ========== 读书 · 书库 / 阅读器 ========== */
.bk{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line-2);border-radius:16px;padding:14px;cursor:pointer;transition:.18s}
.bk:active{transform:scale(.985)}
.bk-ic{font-size:24px;width:40px;height:40px;display:grid;place-items:center;background:var(--paper);border-radius:12px;flex:none}
.bk-main{flex:1;min-width:0}
.bk-title{font-family:var(--serif);font-size:16px;letter-spacing:.5px}
.bk-sub{font-size:11.5px;color:var(--ink-3);margin-top:3px}
.bk-arrow{color:var(--ink-3);font-size:18px;flex:none}
.reader-head{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.reader-head .rb{font-size:14px;color:var(--celadon-d);background:none;border:none;padding:4px 0;flex:none}
.reader-title{flex:1;text-align:center;font-family:var(--serif);font-size:18px;letter-spacing:1px}
.reader-intro{font-size:13px;color:var(--ink-2);line-height:1.8;background:var(--paper-2);border-radius:12px;padding:12px 13px;margin:0 0 12px}
.reader-tools{display:flex;gap:8px;margin-bottom:14px}
.tool{flex:1;padding:9px;border-radius:11px;border:1px solid var(--line);font-size:13px;color:var(--ink-2);background:var(--paper-2);transition:.15s}
.tool.on{background:var(--celadon);color:#fff;border-color:var(--celadon)}
.reader-body{display:flex;flex-direction:column;gap:4px}
.ln{background:var(--card);border:1px solid var(--line-2);border-radius:14px;padding:14px 15px;cursor:pointer;transition:.15s}
.ln:active{transform:scale(.99)}
.ln.fav{border-color:var(--gold);background:linear-gradient(180deg,#fffdf6,#fbf3e0)}
.ln-t{font-family:var(--serif);font-size:18px;line-height:2;color:var(--ink);letter-spacing:.5px}
.ln-py{font-size:12px;color:var(--cinnabar);line-height:1.6;margin:2px 0 4px}
.ln-py ruby rt{color:var(--cinnabar);font-size:11px}
.ln-note{font-size:13px;color:var(--ink-2);background:var(--paper-2);border-left:3px solid var(--celadon);border-radius:6px;padding:8px 10px;margin-top:6px;line-height:1.7}
.ln-fav{font-size:12px;color:var(--gold);margin-top:8px;text-align:right}
.reader-foot{margin-top:16px}
.rf-stat{text-align:center;font-size:12px;color:var(--ink-3);margin-bottom:10px}

/* ========== 日课 · 独立模块页 ========== */
/* 首页日课板：改为可点入模块的列表 */
.rk-grid{grid-template-columns:1fr;gap:9px}
.rk{display:flex;align-items:center;gap:13px;text-align:left;padding:13px 14px}
.rk:active{transform:scale(.99)}
.rk-ic{font-size:25px;line-height:1;flex:none;width:34px;text-align:center}
.rk-main{flex:1;min-width:0;text-align:left}
.rk-name{font-size:15px;font-weight:600;margin-top:0}
.rk-sub{font-size:11.5px;color:var(--ink-3);margin-top:2px}
.rk-check{font-size:17px;color:var(--ink-3);font-weight:700;flex:none;margin-left:4px}

/* 模块页头 */
.module-page{--mc:#6b8fb5}
.module-head{margin:-2px 0 14px}
.module-head .rb{font-size:14px;color:var(--ink-3);background:none;border:none;padding:2px 0;margin-bottom:8px;display:inline-block}
.mod-hero{display:flex;align-items:center;gap:13px;background:linear-gradient(135deg, color-mix(in srgb, var(--mc) 12%, #fffdf8), #fffdf8);
  border:1px solid var(--line-2);border-left:4px solid var(--mc);border-radius:16px;padding:14px}
.mod-ic{font-size:30px;width:50px;height:50px;flex:none;display:grid;place-items:center;background:color-mix(in srgb, var(--mc) 16%, #fff);border-radius:14px}
.mod-id{flex:1;min-width:0}
.mod-name{font-family:var(--serif);font-size:19px;letter-spacing:1px;font-weight:600}
.mod-tag{font-size:12px;color:var(--ink-2);margin-top:3px}
.mod-status{flex:none;font-size:11.5px;font-weight:600;padding:5px 10px;border-radius:20px;color:var(--ink-3);background:var(--paper-2);border:1px solid var(--line)}
.mod-status.on{color:#fff;background:var(--celadon);border-color:var(--celadon)}

.mod-stats{display:flex;gap:10px;margin-bottom:12px}
.mod-stats .ms{flex:1;text-align:center;background:var(--card);border:1px solid var(--line-2);border-radius:14px;padding:11px 6px}
.mod-stats .ms b{font-family:var(--serif);font-size:22px;display:block;line-height:1.2;color:var(--mc)}
.mod-stats .ms span{font-size:11px;color:var(--ink-3)}

.mod-goal{font-size:12.5px;color:var(--ink-2);background:color-mix(in srgb, var(--mc) 8%, #faf7f0);border:1px dashed color-mix(in srgb, var(--mc) 40%, var(--line));border-radius:12px;padding:10px 12px;margin:0 0 14px;line-height:1.7}

/* 计时器（静坐 / 深度工作） */
.mod-timer{display:flex;flex-direction:column;align-items:center;gap:12px;margin:4px 0 16px}
.breath-ring{width:158px;height:158px;border-radius:50%;display:grid;place-items:center;
  background:radial-gradient(circle, color-mix(in srgb, var(--mc) 18%, #fffdf8) 0%, rgba(245,241,232,0) 70%);
  border:2px solid var(--mc);box-shadow:0 0 0 0 color-mix(in srgb, var(--mc) 45%, transparent);transition:box-shadow .4s ease}
.breath-ring.breathing{animation:breath 5s ease-in-out infinite}
@keyframes breath{0%,100%{transform:scale(1);box-shadow:0 0 0 0 color-mix(in srgb, var(--mc) 40%, transparent)}50%{transform:scale(1.07);box-shadow:0 0 0 14px color-mix(in srgb, var(--mc) 0%, transparent)}}
.breath-num{font-family:var(--serif);font-size:32px;color:var(--mc);font-weight:600}
.breath-hint{font-size:12px;color:var(--ink-3);text-align:center;max-width:220px;line-height:1.6}

/* 表单增强：数字带单位、情绪、强度 */
.num-wrap{display:flex;align-items:center;gap:8px}
.num-wrap .input{flex:1}
.num-wrap .unit{font-size:13px;color:var(--ink-3);flex:none}
.mood-chips{display:flex;flex-wrap:wrap;gap:8px}
.mood-chips button{padding:8px 14px;border-radius:20px;border:1px solid var(--line);font-size:13px;color:var(--ink-2);background:var(--paper-2)}
.mood-chips button.on{background:var(--mc);color:#fff;border-color:var(--mc)}
input.slider{width:100%;accent-color:var(--mc);padding:0;height:24px}

/* 践行记录列表 */
.mod-history{display:flex;flex-direction:column;gap:9px}
.entry-row{display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line-2);border-radius:13px;padding:11px 13px}
.entry-main{flex:1;min-width:0}
.entry-sum{font-size:14px;line-height:1.5;color:var(--ink)}
.entry-date{font-size:11px;color:var(--ink-3);margin-top:3px}
.entry-del{flex:none;font-size:12px;color:var(--ink-3);background:var(--paper-2);border:1px solid var(--line);border-radius:9px;padding:5px 9px}
.entry-del:active{transform:scale(.94)}
.empty.small{padding:26px 10px;font-size:13px}

/* ========== 睡眠引导 · 沉浸式睡前放松 ========== */
.sleep-guide-btn{display:flex;align-items:center;gap:13px;width:100%;text-align:left;background:linear-gradient(135deg,#2a3358,#3a4470);
  border:1px solid rgba(180,200,255,.3);border-radius:16px;padding:14px 15px;color:#e8ebf5;cursor:pointer;transition:.18s;margin-bottom:4px}
.sleep-guide-btn:active{transform:scale(.985)}
.sgb-ic{font-size:26px;flex:none}
.sgb-txt{flex:1;display:flex;flex-direction:column}
.sgb-txt b{font-size:15px;font-weight:600}
.sgb-txt i{font-style:normal;font-size:11.5px;color:#aab2d0;margin-top:2px}
.sgb-arrow{font-size:20px;color:#aab2d0;flex:none}

.sleep-guide{position:fixed;inset:0;z-index:110;display:flex;flex-direction:column;align-items:center;justify-content:center;
  background:radial-gradient(circle at 50% 28%, #2a3358 0%, #161a2e 55%, #0c0e1a 100%);
  color:#e8ebf5;opacity:0;transition:opacity .35s ease;padding:24px;text-align:center}
.sleep-guide.show{opacity:1}
.sg-inner{width:100%;max-width:380px;display:flex;flex-direction:column;align-items:center;gap:18px}
.sg-head{text-align:center}
.sg-title{font-family:var(--serif);font-size:24px;letter-spacing:4px}
.sg-sub{font-size:13px;color:#aab2d0;margin-top:4px}
.sg-breath{position:relative;width:210px;height:210px;display:grid;place-items:center;margin:4px 0}
.sg-ring{position:absolute;inset:20px;border-radius:50%;border:2px solid rgba(180,200,255,.5);
  background:radial-gradient(circle, rgba(120,150,230,.28), rgba(120,150,230,0) 70%);
  animation:sgBreathe 11s ease-in-out infinite}
@keyframes sgBreathe{0%{transform:scale(.8)}36%{transform:scale(1.14)}64%{transform:scale(1.14)}100%{transform:scale(.8)}}
.sg-breath-txt{position:relative;font-size:17px;letter-spacing:2px;color:#dfe5f7;font-family:var(--serif)}
.sg-steps{display:flex;flex-wrap:wrap;gap:9px;justify-content:center}
.sg-step{padding:9px 15px;border-radius:20px;border:1px solid rgba(180,200,255,.35);font-size:13px;color:#cfd6ee;background:rgba(255,255,255,.04);transition:.15s}
.sg-step.on{background:#6b8fb5;color:#fff;border-color:#6b8fb5}
.sg-sound{font-size:13px;color:#aab2d0;background:rgba(255,255,255,.06);border:1px solid rgba(180,200,255,.25);border-radius:12px;padding:9px 16px;transition:.15s}
.sg-sound:active{transform:scale(.96)}
.sg-done{margin-top:4px}
.sg-close{font-size:12.5px;color:#8a91b0;background:none;border:none;margin-top:2px}

/* ============ 熟读（读经典深度模块） ============ */
.bk-mastery{font-size:11px;color:var(--cinnabar-d);background:rgba(154,91,79,.1);border:1px solid rgba(154,91,79,.25);border-radius:10px;padding:1px 7px;margin-left:6px;font-weight:600}
.mastery-mini{font-size:13px;color:var(--muted);background:rgba(107,143,181,.08);border-radius:10px;padding:8px 12px;margin-bottom:14px}
.mastery-mini b{color:var(--ink);font-size:15px}
.mastery{display:flex;gap:14px;align-items:center;background:linear-gradient(135deg,rgba(107,143,181,.1),rgba(154,91,79,.08));border:1px solid rgba(107,143,181,.2);border-radius:14px;padding:12px 14px;margin-bottom:10px}
.gauge{position:relative;width:62px;height:62px;flex:0 0 62px}
.gauge svg{transform:rotate(-90deg);width:100%;height:100%}
.gauge .g-bg{fill:none;stroke:rgba(107,143,181,.18);stroke-width:3.2}
.gauge .g-fg{fill:none;stroke:var(--cinnabar-d);stroke-width:3.2;stroke-linecap:round;transition:stroke-dasharray .5s}
.gauge b{position:absolute;inset:0;display:grid;place-items:center;font-size:15px;font-weight:700;color:var(--ink)}
.mastery-stats{flex:1;display:flex;flex-wrap:wrap;gap:6px 12px;font-size:12px;color:var(--muted)}
.mastery-stats span{background:rgba(255,255,255,.5);border-radius:8px;padding:2px 8px}
.ln{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 13px;margin-bottom:10px;transition:.15s}
.ln.hl{border-left:4px solid var(--gold-d);background:linear-gradient(90deg,rgba(196,164,92,.1),#fff 40%)}
.ln.fav{border-color:rgba(154,91,79,.4)}
.ln-t{font-family:var(--serif);font-size:17px;line-height:1.85;color:var(--ink);letter-spacing:.5px}
.ln-py{margin:6px 0 2px;font-size:13px;color:var(--muted);line-height:1.9}
.ln-py ruby{margin:0 1px}
.ln-note{margin-top:7px;font-size:13px;color:var(--cinnabar-d);background:rgba(154,91,79,.07);border-radius:8px;padding:7px 10px;line-height:1.7}
.ln-acts{display:flex;gap:7px;margin-top:9px}
.lac{flex:1;font-size:12px;padding:6px 0;border:1px solid var(--line);border-radius:9px;background:#faf7f1;color:var(--muted);transition:.12s}
.lac:active{transform:scale(.95);background:var(--cinnabar-d);color:#fff;border-color:var(--cinnabar-d)}
.reader-tools{display:flex;flex-wrap:wrap;gap:7px;margin:8px 0 12px}
.reader-tools .tool{flex:1;min-width:54px;font-size:12.5px;padding:8px 4px;border:1px solid var(--line);border-radius:10px;background:#faf7f1;color:var(--ink)}
.reader-tools .tool.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.recorder{background:rgba(107,143,181,.07);border:1px solid rgba(107,143,181,.2);border-radius:14px;padding:13px;margin:14px 0}
.rec-head{font-size:13px;color:var(--muted);margin-bottom:9px}
.rec-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:9px;padding:13px;border:none;border-radius:12px;background:var(--cinnabar-d);color:#fff;font-size:15px;font-weight:600}
.rec-btn.recording{background:#b5402f;animation:pulse 1.1s infinite}
.rec-dot{width:11px;height:11px;border-radius:50%;background:#fff}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.55}}
.rec-list{margin-top:10px;display:flex;flex-direction:column;gap:7px}
.rec-row{display:flex;align-items:center;gap:9px;font-size:13px;color:var(--muted)}
.rec-play{width:30px;height:30px;border-radius:50%;border:1px solid var(--line);background:#fff;color:var(--cinnabar-d);font-size:12px}
.rec-meta{flex:1}
.rec-del{border:none;background:none;color:var(--muted);font-size:12px}
.vocab-add label{display:block;font-size:12px;color:var(--muted);margin:10px 0 4px}
.vocab-add input,.vocab-add textarea{width:100%;border:1px solid var(--line);border-radius:9px;padding:9px;font-size:14px;font-family:var(--serif);box-sizing:border-box}
.vocab-btns{display:flex;gap:8px;margin-top:12px}
.vocab-btns .btn{flex:1}
.vocab-book{text-align:center}
.vb-count{font-size:12px;color:var(--muted);margin-bottom:12px}
.vb-card{background:rgba(107,143,181,.08);border-radius:14px;padding:20px;margin-bottom:14px}
.vb-char{font-family:var(--serif);font-size:46px;color:var(--ink)}
.vb-py{font-size:15px;color:var(--cinnabar-d);margin-top:4px}
.vb-mean{font-size:14px;color:var(--muted);margin-top:10px;line-height:1.7}
.vb-btns{display:flex;gap:8px}
.vb-btns .btn{flex:1}
.notes-panel .note-item{background:#faf7f1;border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:8px;font-size:14px;line-height:1.7;color:var(--ink)}
.ai-sheet .ai-ctx{font-family:var(--serif);font-size:14px;color:var(--cinnabar-d);background:rgba(154,91,79,.07);border-radius:10px;padding:9px 12px;margin-bottom:12px;line-height:1.7}
.ai-tabs{display:flex;gap:8px;margin-bottom:12px}
.atab{flex:1;font-size:13px;padding:9px;border:1px solid var(--line);border-radius:10px;background:#faf7f1;color:var(--muted)}
.atab.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.ai-out{min-height:90px;font-size:14px;line-height:1.85;color:var(--ink);background:#faf7f1;border-radius:12px;padding:12px;margin-bottom:12px}
.ai-out .letter{background:none;border:none;padding:0}
.ai-out textarea{width:100%;min-height:70px;border:1px solid var(--line);border-radius:10px;padding:10px;font-size:14px;box-sizing:border-box;font-family:inherit}
.ai-btns{display:flex;gap:8px;margin-top:10px}
.ai-btns .btn{flex:1}

/* ========== 听诵读（原文音频 · 逐句跟随） ========== */
.reader-tools .tl-ic{font-size:11px;margin-right:2px;color:var(--cinnabar)}
.reader-tools .tool.on .tl-ic{color:var(--cinnabar-d)}

/* 当前诵读句：暖金衬底（inline span，跨行时逐行克隆背景） */
.bl.playing{
  background:rgba(230,200,140,.30);
  -webkit-box-decoration-break:clone;box-decoration-break:clone;
}
.bl.playing::after{
  content:'♪';display:inline-block;font-size:12px;color:var(--cinnabar);
  margin-left:3px;vertical-align:2px;
  animation:apPulse 1.1s ease-in-out infinite;
}
@keyframes apPulse{0%,100%{opacity:.35;transform:translateY(0)}50%{opacity:1;transform:translateY(-2px)}}

/* 全局迷你播放条（挂 body，切页不断） */
.aplayer{
  position:fixed;left:50%;transform:translateX(-50%);
  bottom:calc(64px + env(safe-area-inset-bottom));
  width:calc(100% - 24px);max-width:456px;z-index:40;
  display:flex;align-items:center;gap:8px;
  background:rgba(250,247,240,.97);backdrop-filter:blur(10px);
  border:1px solid var(--line);border-radius:16px;
  box-shadow:0 8px 28px rgba(60,48,30,.18);
  padding:9px 10px;animation:fadeUp .3s ease;
}
.ap-btn{
  flex:none;width:34px;height:34px;border-radius:10px;font-size:15px;
  color:var(--ink-2);display:flex;align-items:center;justify-content:center;transition:.15s;
}
.ap-btn:active{background:var(--paper);transform:scale(.92)}
.ap-btn.on{color:var(--cinnabar);background:var(--cinnabar-soft)}
.ap-play{
  flex:none;width:44px;height:44px;border-radius:50%;font-size:17px;color:#fff;
  background:var(--celadon);box-shadow:0 4px 12px rgba(91,140,126,.4);transition:.15s;
}
.ap-play:active{transform:scale(.92)}
.ap-mid{flex:1;min-width:0;padding:0 2px}
.ap-title{
  font-family:var(--serif);font-size:13px;font-weight:600;letter-spacing:.5px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.ap-bar{height:4px;border-radius:2px;background:var(--line);margin:5px 0 4px;cursor:pointer}
.ap-bar-in{height:100%;width:0;border-radius:2px;background:linear-gradient(90deg,var(--celadon),var(--celadon-d));transition:width .25s linear}
.ap-time{font-size:10.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}
#apRate{font-size:12px;font-weight:600}
#apLoop{font-size:14px}
/* 播放条避让：激活时给滚动区让出底部空间 */
body.aplayer-open .view{padding-bottom:180px}

/* ========== 阅读器 · 连续书页（v2 重排） ========== */
/* 旧 .ln 逐句卡片已废弃，正文连缀成篇；reader-body 覆盖为普通块级 */
.reader-body{display:block}
.bookflow{
  font-family:var(--serif);font-size:18px;line-height:2.35;
  color:var(--ink);letter-spacing:.5px;text-align:justify;word-break:break-word;
  background:var(--card);border:1px solid var(--line-2);border-radius:16px;
  padding:22px 18px 26px;
}
/* 句子：行内可点，跨行时背景逐行克隆（微信读书式连贯正文） */
.bl{
  cursor:pointer;border-radius:5px;padding:1px 2px;margin:0 -2px;
  transition:background .2s;
  -webkit-box-decoration-break:clone;box-decoration-break:clone;
}
.bl:active{background:rgba(154,91,79,.06)}
/* 划线：淡青衬底 + 青色底线 */
.bl.hl{background:rgba(126,169,156,.18);box-shadow:inset 0 -1px 0 rgba(126,169,156,.6)}
/* 收藏：右上金色小星 */
.bl.fav::after{content:'★';font-size:10px;color:var(--gold);margin-left:2px;vertical-align:6px}
/* 选中：朱砂衬底 + 朱砂底线 */
.bl.sel{background:rgba(154,91,79,.14);box-shadow:inset 0 -2px 0 var(--cinnabar)}
/* 行内夹注（开关注释时） */
.bl-note{
  font-size:13px;color:var(--ink-3);letter-spacing:0;line-height:1.9;
  margin:0 2px 0 1px;font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Helvetica Neue',sans-serif;
}
/* 行内拼音（ruby）：朱砂小字贴字头 */
.bookflow ruby rt{
  color:var(--cinnabar);font-size:11px;letter-spacing:0;
  font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Helvetica Neue',sans-serif;
}

/* 底部固定操作栏：选中句后浮现（tabbar 上方，播放条再上方） */
.readbar{
  position:fixed;left:50%;transform:translateX(-50%);
  bottom:calc(64px + env(safe-area-inset-bottom) + 10px);
  width:calc(100% - 24px);max-width:456px;z-index:39;
  background:rgba(252,249,242,.98);backdrop-filter:blur(10px);
  border:1px solid var(--line);border-radius:16px;
  box-shadow:0 8px 28px rgba(60,48,30,.22);
  padding:10px 12px 11px;animation:fadeUp .25s ease;
}
/* 播放条打开时，操作栏抬到播放条上方（播放条实测高约 87px + 10px 间隙） */
body.aplayer-open .readbar{bottom:calc(64px + env(safe-area-inset-bottom) + 97px)}
.rb-ctx{
  font-family:var(--serif);font-size:13.5px;color:var(--ink-2);line-height:1.6;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  border-left:3px solid var(--cinnabar);padding-left:8px;margin-bottom:8px;
}
.rb-btns{display:flex;flex-wrap:wrap;gap:6px}
.rb-btn{
  flex:1 1 calc(25% - 6px);min-width:0;padding:8px 2px;border-radius:10px;font-size:12.5px;
  border:1px solid var(--line);background:var(--paper-2);color:var(--ink-2);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:.15s;
}
.rb-btn:active{transform:scale(.94)}
.rb-btn.on{background:var(--celadon);color:#fff;border-color:var(--celadon)}
.rb-btn.rb-off{flex:0 0 38px;color:var(--ink-3)}

/* ============ 运动智能录入 ============ */
.exi-launch{background:var(--paper-2,#f4f1e8);border:1px dashed var(--celadon,#5b8c7e);border-radius:14px;padding:12px;margin:12px 0 4px}
.exi-launch-title{font-size:12.5px;color:var(--ink-2);margin-bottom:8px;text-align:center}
.exi-launch-btns{display:flex;gap:8px}
.exi-launch-btns .btn{flex:1;font-size:13px;padding:9px 4px}
.exi-or{text-align:center;font-size:11px;color:var(--ink-3);margin-top:8px}

.exi-tabs{display:flex;gap:8px;margin-bottom:12px}
.exi-tabs button{flex:1;padding:9px 0;border:1px solid var(--line,#e3e0d6);background:#fff;border-radius:10px;color:var(--ink-2);cursor:pointer;font-size:13px}
.exi-tabs button.on{background:var(--celadon,#5b8c7e);color:#fff;border-color:transparent}
.exi-text{width:100%;min-height:74px;resize:vertical;margin-bottom:10px;font-size:14px}
.exi-go,.exi-mic{width:100%}
.exi-file{width:100%;margin-bottom:8px}
.exi-hint{font-size:12px;color:var(--ink-3);text-align:center;margin-top:6px;line-height:1.5}
.exi-result{margin-top:14px}
.exi-err{color:var(--cinnabar,#b5482f);font-size:13px;text-align:center;padding:10px}
.exi-prev{background:var(--paper-2,#f4f1e8);border:1px solid var(--line,#e3e0d6);border-radius:12px;padding:12px}
.exi-prev-title{font-size:12px;color:var(--ink-3);margin-bottom:8px}
.exi-prev-row{display:grid;grid-template-columns:1.1fr 0.9fr 0.9fr 0.9fr;gap:8px;align-items:end}
.exi-prev-row label{font-size:11px;color:var(--ink-2);display:flex;flex-direction:column;gap:3px}
.exi-prev-row .input{padding:6px 8px;font-size:13px;width:100%}
.exi-energy{margin:10px 0 4px;color:var(--celadon-d,#5b8c7e);font-weight:600;font-size:13px}
.exi-actions{display:flex;align-items:center;gap:12px;margin-top:8px;flex-wrap:wrap}
.exi-src{font-size:11px;color:var(--ink-3)}

/* ===== 五源能量面板（P1） ===== */
.src-head{display:flex;align-items:baseline;gap:14px;padding-bottom:12px;border-bottom:1px solid var(--line);margin-bottom:12px}
.src-total{font-size:34px;font-weight:800;color:var(--celadon-d);line-height:1;font-variant-numeric:tabular-nums}
.src-total em{font-size:14px;font-style:normal;color:var(--ink-3);font-weight:500}
.src-band{display:flex;flex-direction:column;gap:2px}
.src-band b{font-size:14px;color:var(--ink-1)}
.src-band span{font-size:11.5px;color:var(--ink-3);line-height:1.5}

.src-list{display:flex;flex-direction:column;gap:11px}
.src-row{display:flex;align-items:center;gap:11px}
.src-row.weak .src-g{background:var(--cinnabar-soft);color:var(--cinnabar-d);border-color:var(--cinnabar)}
.src-g{width:32px;height:32px;flex:none;display:grid;place-items:center;border-radius:8px;
  background:var(--jade-soft);border:1px solid var(--celadon);color:var(--celadon-d);
  font-family:var(--serif,serif);font-size:17px;font-weight:700}
.src-meta{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}
.src-name{font-size:11.5px;color:var(--ink-3);line-height:1.3}
.src-val{font-size:15px;font-weight:700;color:var(--ink-1);min-width:44px;text-align:right;font-variant-numeric:tabular-nums}
.src-val em{font-size:10.5px;font-style:normal;color:var(--ink-3);font-weight:400}
.src-foot{font-size:12px;color:var(--ink-2);margin:12px 0 0;line-height:1.7}

.coh{display:flex;align-items:center;gap:14px;background:var(--paper-2);border:1px solid var(--line);
  border-radius:12px;padding:14px 16px;margin-top:12px}
.coh-num{font-size:30px;font-weight:800;color:var(--gold);line-height:1;font-variant-numeric:tabular-nums}
.coh-txt{display:flex;flex-direction:column;gap:3px}
.coh-txt b{font-size:13.5px;color:var(--ink-1)}
.coh-txt span{font-size:11.5px;color:var(--ink-3);line-height:1.5}
.coh-empty{opacity:.72}

.diverge{margin-top:10px;padding:13px 15px;border-radius:12px;font-size:13px;line-height:1.85}
.diverge.selfcritical{background:var(--jade-soft);border:1px solid var(--celadon);color:var(--celadon-d)}
.diverge.overconfident{background:var(--cinnabar-soft);border:1px solid var(--cinnabar);color:var(--cinnabar-d)}

/* ===== 每日自测 · 觉察（P2） ===== */
.eh-max{font-size:15px;font-style:normal;color:var(--ink-3);font-weight:500;margin-left:2px}

.awa-card{display:flex;align-items:center;gap:13px;background:var(--paper-2);
  border:1px solid var(--celadon);border-radius:14px;padding:15px 16px;margin:14px 0 4px;cursor:pointer;
  transition:transform .12s,box-shadow .12s}
.awa-card:active{transform:scale(.985)}
.awa-card.done{border-color:var(--line);background:var(--paper-1)}
.awa-ic{width:38px;height:38px;flex:none;display:grid;place-items:center;border-radius:11px;
  background:var(--jade-soft);color:var(--celadon-d);font-size:19px}
.awa-card.done .awa-ic{background:var(--celadon);color:#fff}
.awa-main{flex:1;min-width:0}
.awa-t{font-size:14.5px;font-weight:600;color:var(--ink-1);line-height:1.4}
.awa-t em{font-size:11.5px;font-style:normal;color:var(--ink-3);font-weight:400}
.awa-s{font-size:11.5px;color:var(--ink-3);margin-top:3px;line-height:1.5}
.awa-arrow{color:var(--ink-3);font-size:15px}

/* 引导页 */
.lvi-intro{text-align:center;padding:44px 20px 20px}
.lvi-badge{font-size:11px;letter-spacing:.34em;color:var(--celadon-d);margin-bottom:16px}
.lvi-h{font-size:21px;font-weight:700;color:var(--ink-1);margin:0 0 14px;line-height:1.5}
.lvi-p{font-size:13.5px;color:var(--ink-2);line-height:2;margin:0 0 12px}
.lvi-p.muted{color:var(--ink-3);font-size:12.5px}
.lvi-intro .btn{margin-top:18px;min-width:150px}

/* 问卷 */
.lvi-prog{display:flex;gap:5px;margin-bottom:16px}
.lvi-prog i{flex:1;height:3px;border-radius:2px;background:var(--line)}
.lvi-prog i.done{background:var(--celadon)}
.lvi-prog i.now{background:var(--cinnabar)}
.lvi-dim{display:flex;align-items:baseline;gap:9px;margin-bottom:5px}
.lvi-dim b{font-family:var(--serif,serif);font-size:25px;color:var(--celadon-d)}
.lvi-dim span{font-size:13px;color:var(--ink-2)}
.lvi-lead{font-size:12px;color:var(--ink-3);line-height:1.8;margin:0 0 18px;padding-bottom:14px;
  border-bottom:1px solid var(--line)}
.lvi-q{margin-bottom:20px}
.lvi-qt{font-size:14px;color:var(--ink-1);line-height:1.6;margin-bottom:8px}
.lvi-scale{display:flex;justify-content:space-between;font-size:10.5px;color:var(--ink-3);margin-bottom:6px}
.lvi-opts{display:flex;gap:7px}
.lvi-o{flex:1;height:42px;border-radius:10px;border:1px solid var(--line);background:var(--paper-1);
  color:var(--ink-3);font-size:15px;font-weight:600;cursor:pointer;transition:all .12s}
.lvi-o:active{transform:scale(.95)}
.lvi-o.on{background:var(--celadon);border-color:var(--celadon);color:#fff}
.lvi-nav{display:flex;gap:10px;margin-top:22px}
.lvi-nav .btn{flex:1}
.lvi-nav .btn[disabled]{opacity:.4;pointer-events:none}

/* 结果页 */
.lvi-done{text-align:center;padding:26px 0 18px}
.lvi-total{font-size:48px;font-weight:800;color:var(--celadon-d);line-height:1;font-variant-numeric:tabular-nums}
.lvi-total em{font-size:17px;font-style:normal;color:var(--ink-3);font-weight:500}
.lvi-band{margin-top:9px}
.lvi-band b{display:block;font-size:15px;color:var(--ink-1)}
.lvi-band span{display:block;font-size:12px;color:var(--ink-3);margin-top:3px}

.coh-big{display:flex;align-items:center;gap:18px}
.coh-big .coh-num{font-size:42px;font-weight:800;color:var(--gold);line-height:1;font-variant-numeric:tabular-nums}
.coh-side{display:flex;flex-direction:column;gap:2px}
.coh-side b{font-size:12.5px;color:var(--ink-2);font-weight:500}
.coh-side span{font-size:11px;color:var(--ink-3);margin-top:2px}
.coh-exp{font-size:12.5px;color:var(--ink-2);line-height:1.8;margin:12px 0 0;
  padding-top:12px;border-top:1px solid var(--line)}

.lvi-care{padding:8px 4px 4px;font-size:14px;line-height:2.1;color:var(--ink-1)}
