/* ===== 元炁修行 · 空灵视觉体系 ===== */
/* P-A/B：把元炁球色相登记为可过渡的自定义属性，颜色变化缓变而非跳变 */
@property --qi-c0{ syntax:'<color>'; inherits:true; initial-value:#d8f3e8; }
@property --qi-c1{ syntax:'<color>'; inherits:true; initial-value:#7fd1b0; }
@property --qi-c2{ syntax:'<color>'; inherits:true; initial-value:#3f8f73; }
@property --qi-glow{ syntax:'<color>'; inherits:true; initial-value:rgba(127,209,176,.45); }
@property --qi-mist{ syntax:'<number>'; inherits:true; initial-value:0.08; }
/* Phase C：八卦线条 motif 描边色 + 全屏底纹强度（均随内境/时令缓变） */
@property --qi-line{ syntax:'<color>'; inherits:true; initial-value:rgba(127,209,176,.35); }
@property --qi-grain{ syntax:'<number>'; inherits:true; initial-value:0.07; }
:root{
  --ink:#1c2024; --ink-soft:#3a4248; --mist:#aeb8bd; --paper:#f4f1ea;
  --jade:#6fb39a; --jade-deep:#3f8f73; --gold:#c9a86a; --lotus:#d98a7a;
  --bg-top:#161e23; --bg-bottom:#283533;
  --glass:rgba(244,241,234,.06); --line:rgba(174,184,189,.18);
  --t-sm:13px; --t:15px; --t-lg:18px; --t-xl:26px;
  --s1:6px;--s2:10px;--s3:16px;--s4:22px;--s5:30px;
  /* 统一内容列：顶部横条 / 视图 / 各横条卡片共用，保证左右对齐一致 */
  --content-max:460px; --pad-x:22px; --card-radius:18px;
  /* P-A/B 元炁球色相变量（默认青碧），与下方 transition 配合实现平滑过渡 */
  --qi-c0:#d8f3e8; --qi-c1:#7fd1b0; --qi-c2:#3f8f73; --qi-glow:rgba(127,209,176,.45); --qi-mist:0.08;
  --qi-line:rgba(127,209,176,.35); --qi-grain:0.07;
  --breath-amp:0.12;
  transition:--qi-c0 1.6s ease,--qi-c1 1.6s ease,--qi-c2 1.6s ease,--qi-glow 1.6s ease,--qi-mist 1.6s ease,--qi-line 1.6s ease,--qi-grain 1.6s ease;
  --sans:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC",sans-serif;
  --serif:"Noto Serif SC","Songti SC","STSong",serif;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%}
body{
  font-family:var(--sans);
  color:var(--mist);
  background:linear-gradient(180deg,var(--bg-top) 0%,var(--bg-bottom) 100%);
  background-attachment:fixed;
  letter-spacing:.04em; line-height:1.72;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
#bg{position:fixed;inset:0;width:100%;height:100%;z-index:-1;display:block;pointer-events:none}

/* ---------- 通用 ---------- */
h2{font-weight:500;font-size:var(--t-xl);color:var(--paper);letter-spacing:.12em;margin:0 0 var(--s3);text-align:center}
h3.sub{font-weight:500;color:var(--mist);letter-spacing:.1em;margin:var(--s5) 0 var(--s2);font-size:var(--t)}
.muted{color:var(--mist);opacity:.7;font-size:var(--t-sm);text-align:left}
label{display:block;font-size:var(--t-sm);color:var(--mist);opacity:.85;margin:var(--s3) 0 var(--s1)}
label input,label select{
  display:block;width:100%;margin-top:var(--s1);padding:12px 14px;
  background:var(--glass);border:1px solid var(--line);border-radius:14px;
  color:var(--paper);font-family:var(--sans);font-size:var(--t);letter-spacing:.02em;
  outline:none;transition:.3s;
}
label input:focus,label select:focus{border-color:var(--jade);box-shadow:0 0 0 3px rgba(111,179,154,.15)}
input[type=time].time-short{max-width:160px}
button{font-family:var(--sans);cursor:pointer;border:none;letter-spacing:.05em}
[hidden]{display:none!important}
.primary{
  display:block;width:100%;margin-top:var(--s4);padding:15px;border-radius:30px;
  background:linear-gradient(135deg,var(--jade),var(--jade-deep));color:#0c1410;
  font-size:var(--t);font-weight:600;box-shadow:0 8px 28px rgba(63,143,115,.3);transition:.3s;
}
.primary:active{transform:translateY(1px)}
.primary:disabled{opacity:.5;box-shadow:none}
.ghost{
  display:block;width:100%;margin-top:var(--s2);padding:12px;border-radius:28px;
  background:transparent;color:var(--mist);border:1px solid var(--line);font-size:var(--t-sm);transition:.3s;
}
.ghost:active{background:var(--glass)}
.ghost.danger{color:var(--lotus);border-color:rgba(217,138,122,.3)}
.toast{position:fixed;left:50%;bottom:90px;transform:translateX(-50%) translateY(20px);
  background:rgba(28,32,36,.92);color:var(--paper);padding:10px 18px;border-radius:20px;
  font-size:var(--t-sm);opacity:0;pointer-events:none;transition:.35s;z-index:50;border:1px solid var(--line)}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ---------- 浮层 / 引导 ---------- */
.overlay{position:fixed;inset:0;z-index:40;display:flex;align-items:center;justify-content:center;
  padding:24px;background:radial-gradient(120% 80% at 50% 0%,rgba(22,30,35,.6),rgba(22,30,35,.94));
  backdrop-filter:blur(6px);animation:veil .5s ease both}
.overlay.hidden{display:none}
.sheet{width:100%;max-width:380px;max-height:90vh;overflow-y:auto;padding:var(--s5) var(--s4);
  background:linear-gradient(180deg,rgba(40,53,51,.55),rgba(22,30,35,.55));
  border:1px solid var(--line);border-radius:26px;text-align:center;
  box-shadow:0 20px 60px rgba(0,0,0,.4)}
.overlay .sheet .muted{text-align:center}

/* ---------- 玄微光球 ---------- */
.xuanwei{position:relative;width:130px;height:130px;margin:0 auto var(--s3);animation:float 6s ease-in-out infinite}
.xuanwei.small{width:84px;height:84px}
.xuanwei.tiny{width:64px;height:64px}
.xuanwei .glow{position:absolute;inset:-30%;border-radius:50%;
  background:radial-gradient(circle,var(--qi-glow),transparent 66%);
  filter:blur(6px);animation:breathe 7s ease-in-out infinite}
.orb{display:block;width:100%;height:100%;position:relative;filter:drop-shadow(0 6px 20px rgba(63,143,115,.4));animation:breathe 7s ease-in-out infinite;cursor:pointer}
/* P-A/B：元炁球三色渐变接 CSS 变量（与 :root 过渡协同，缓变不跳变） */
.qsc0{stop-color:var(--qi-c0)}
.qsc1{stop-color:var(--qi-c1)}
.qsc2{stop-color:var(--qi-c2)}
/* 内境调和度 → 清澈度，用平滑光晕表达（柔和晕开、无硬边圆盘，仅视觉，不作诊断） */
.qi-mist{position:absolute;inset:-14%;border-radius:50%;pointer-events:none;z-index:2;
  background:radial-gradient(circle at 50% 50%,var(--qi-glow) 0%,transparent 60%);
  mix-blend-mode:screen;opacity:var(--qi-mist);transition:opacity 1.6s ease}
.orb:active{transform:scale(.96)}
/* 悬停：辉光微微提亮，给"可互动"的暗示 */
.xuanwei:hover .glow{filter:blur(9px) brightness(1.18)}
/* 环绕炁珠：4 颗小光点沿轨道缓行，让元炁球明显"活着" */
.xuanwei .motes{position:absolute;inset:0;pointer-events:none}
.orb-mote{position:absolute;left:50%;top:50%;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;
  background:radial-gradient(circle,#f4f1ea 0%,var(--qi-c1) 52%,transparent 80%);
  box-shadow:0 0 9px var(--qi-glow);animation:orbit 11s linear infinite}
.orb-mote:nth-child(2){animation-duration:15s;animation-direction:reverse;width:5px;height:5px;margin:-2.5px 0 0 -2.5px}
.orb-mote:nth-child(3){animation-duration:19s;width:7px;height:7px;margin:-3.5px 0 0 -3.5px}
.orb-mote:nth-child(4){animation-duration:13s;animation-direction:reverse}
@keyframes orbit{from{transform:rotate(0deg) translateX(82px) rotate(0deg)}to{transform:rotate(360deg) translateX(82px) rotate(-360deg)}}
/* 点击涟漪：从球心向外扩散一圈，给"球在回应你"的反馈 */
.orb-ripple{position:absolute;left:50%;top:50%;width:120px;height:120px;margin:-60px 0 0 -60px;border-radius:50%;
  border:1.5px solid rgba(127,209,176,.55);opacity:0;pointer-events:none}
.orb-ripple.go{animation:ripple 1.05s ease-out}
@keyframes ripple{0%{transform:scale(.62);opacity:.65}100%{transform:scale(2.3);opacity:0}}
/* Phase C：八卦线条 motif（极淡描边，随当日卦象呈现不同气韵，克制不喧宾夺主） */
.orb-motif{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;z-index:1;opacity:.5;transition:opacity 1.6s ease}
.motif-path{fill:none;stroke:var(--qi-line);stroke-width:1.4;stroke-opacity:.55;
  stroke-linecap:round;transition:stroke 1.6s ease, d 1.6s ease;
  filter:drop-shadow(0 0 4px var(--qi-glow))}
/* Phase D：修行进度 → 同心涟漪（层数随连续天数/境界，给成长以视觉重量） */
.orb-rings{position:absolute;left:50%;top:50%;width:0;height:0;pointer-events:none;z-index:0}
.orb-rings .ring{position:absolute;left:0;top:0;transform:translate(-50%,-50%);border-radius:50%;
  border:1px solid var(--qi-line);opacity:.32;box-shadow:0 0 10px var(--qi-glow)}
/* Phase D：境界破茧（一次性光爆 + 缓息，仅作成长的重量感，非判定） */
.xuanwei.breakthrough .orb{animation:breakthrough 1.5s ease-out}
.xuanwei.breakthrough .glow{animation:breakthroughGlow 1.5s ease-out}
@keyframes breakthrough{0%{transform:scale(1);filter:brightness(1)}28%{transform:scale(1.16);filter:brightness(1.9) saturate(1.2)}100%{transform:scale(1);filter:brightness(1)}}
@keyframes breakthroughGlow{0%{filter:blur(6px) brightness(1);opacity:.6}28%{filter:blur(14px) brightness(1.8);opacity:1}100%{filter:blur(6px) brightness(1);opacity:.6}}
/* Phase C：全屏底纹（feTurbulence 噪声，soft-light 叠加，强度随节气湿度/内境，静止不耗性能） */
.qi-grain{position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:var(--qi-grain);
  mix-blend-mode:soft-light;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background-size:200px 200px}
.avatar{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font-size:34px;color:#0c1410;font-weight:600;opacity:.85}
.figure{width:130px;height:130px;position:relative;filter:drop-shadow(0 6px 18px rgba(63,143,115,.35))}
.xuanwei.small .figure{width:80px;height:80px}

/* ---------- 引导步骤 ---------- */
.step-dots{display:flex;gap:7px;justify-content:center;margin-bottom:var(--s4)}
.step-dots span{width:7px;height:7px;border-radius:50%;background:var(--line);transition:.3s}
.step-dots span.on{background:var(--jade);box-shadow:0 0 8px var(--jade)}
.ostep{animation:fade .5s ease both}
.confirm{text-align:left;margin:var(--s3) 0}
.crow{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--line)}
.crow span{color:var(--mist);opacity:.7;font-size:var(--t-sm)}
.crow b{color:var(--paper);font-weight:500}
.ob-actions{display:flex;gap:10px;margin-top:var(--s4)}
.ob-actions .primary,.ob-actions .ghost{margin-top:0}

/* ---------- 建档仪式 ---------- */
.forming-sheet .xuanwei{width:160px;height:160px;margin:var(--s5) auto var(--s4)}
.color-tag{display:inline-flex;align-items:center;gap:8px;margin:var(--s2) 0;color:var(--paper);font-size:var(--t-sm)}
.color-tag .dot,.dot{width:12px;height:12px;border-radius:50%;display:inline-block}
.persona-intro{color:var(--mist);font-size:var(--t);line-height:1.72;margin:var(--s2) 0 var(--s4)}

/* ---------- 应用框架 ---------- */
#app{display:none;min-height:100vh;padding:0 0 90px}
#app.active-app{display:block}
.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;
  max-width:var(--content-max);margin:0 auto;padding:16px var(--pad-x);
  background:linear-gradient(180deg,rgba(22,30,35,.85),rgba(22,30,35,0));backdrop-filter:blur(4px)}
.brand{font-size:var(--t-lg);color:var(--paper);letter-spacing:.3em}
.realm{font-size:var(--t-sm);color:var(--mist);text-align:center;line-height:1.4}
.realm-sub{display:block;opacity:.6;font-size:11px}
.points{color:var(--gold);font-size:var(--t-sm);letter-spacing:.05em}

/* ---------- 视图切换（雾起雾散） ---------- */
.view{display:none;padding:var(--s5) var(--pad-x);max-width:var(--content-max);margin:0 auto;min-height:70vh}
.view.active{display:block;animation:veil .65s ease both}
.view[hidden]{display:none}

/* ---------- 首页 ---------- */
.view-home{text-align:center;display:flex;flex-direction:column;min-height:calc(100vh - 90px);padding-top:6px}
.view-home .home-level{margin-bottom:10px;flex:none}
.view-home .xuanwei{width:200px;height:200px;margin:0 auto;flex:none}
.view-home .xw-line{font-size:var(--t-lg);color:var(--paper);letter-spacing:.14em;margin:var(--s3) 0 var(--s2);flex:none}
.today-hint{color:var(--mist);opacity:.6;font-size:var(--t-sm);margin-bottom:var(--s3);flex:none}
.time-card{background:var(--glass);border:1px solid var(--line);border-radius:var(--card-radius);padding:var(--s3);margin:var(--s3) 0 var(--s4);max-width:none}
.time-title{color:var(--gold);font-size:var(--t-lg);letter-spacing:.18em;margin-bottom:6px}
.time-hint{color:var(--mist);font-size:var(--t-sm);line-height:1.6}
.home-actions{margin-top:auto;padding-bottom:var(--s5);flex:none}
.home-actions .primary:first-of-type{margin-top:0}
.home-actions .ghost{margin-top:var(--s2)}
.streak{color:var(--gold);font-size:var(--t-sm);margin-top:var(--s2);opacity:.85}
.guest-hint{color:var(--gold);font-size:var(--t-sm);margin:6px 0 var(--s3);opacity:.9;flex:none}
.auth-alt{display:flex;justify-content:space-between;align-items:center;margin-top:16px;font-size:var(--t-sm)}
.auth-alt a{color:var(--jade);text-decoration:none;opacity:.9}
.auth-alt a:last-child{margin-left:auto}
.auth-alt a:hover{opacity:1;text-decoration:underline}
.orb-bubble{position:absolute;left:50%;top:-30px;transform:translateX(-50%);padding:10px 16px;
  background:rgba(28,32,36,.9);border:1px solid var(--line);border-radius:16px;color:var(--paper);
  font-size:var(--t-sm);line-height:1.55;text-align:center;pointer-events:none;z-index:5;
  box-shadow:0 8px 24px rgba(0,0,0,.35);width:max-content;min-width:170px;max-width:min(300px,86vw)}
.orb-bubble::after{content:"";position:absolute;left:50%;bottom:-6px;transform:translateX(-50%);
  border-width:6px 6px 0;border-style:solid;border-color:var(--line) transparent transparent transparent}
.orb-bubble.in{animation:bubbleIn .35s ease both}
.orb-bubble.out{animation:bubbleOut .3s ease both}
/* 元炁球陪伴气泡：带 CTA，可点击 */
.orb-bubble.companion{pointer-events:auto;white-space:normal;display:flex;flex-direction:column;align-items:center;gap:8px}
.orb-bubble .ob-line{display:block;line-height:1.55}
.orb-bubble .ob-cta{margin-top:2px;padding:6px 18px;border:1px solid var(--jade);background:rgba(127,209,176,.16);color:var(--paper);
  border-radius:12px;font-size:var(--t-sm);cursor:pointer;letter-spacing:.04em}
.orb-bubble .ob-cta:active{background:rgba(127,209,176,.32)}
/* 首次欢迎：orb 轻脉冲提示可点击 */
.xuanwei.pulse{animation:orbPulse 1.6s ease-in-out 2}
@keyframes orbPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}

/* ---------- 信笺 ---------- */
.letter-head{display:flex;align-items:center;gap:12px;margin-bottom:var(--s3)}
.energy-dot{width:16px;height:16px;border-radius:50%;background:var(--jade);box-shadow:0 0 12px var(--jade);flex:none}
.kicker{color:var(--gold);font-size:var(--t-sm);letter-spacing:.18em}
.letter-date{color:var(--mist);opacity:.6;font-size:11px}
.card{background:var(--glass);border:1px solid var(--line);border-radius:20px;padding:var(--s4);
  backdrop-filter:blur(3px);margin:var(--s3) 0}
.letter-card .letter-body{color:var(--paper);font-size:var(--t);line-height:1.8;letter-spacing:.04em;
  animation:reveal 1.6s ease both}
.bazi-note-wrap{margin-top:var(--s3);padding-top:var(--s3);border-top:1px dashed var(--line)}
.task-label{color:var(--gold);font-size:11px;letter-spacing:.2em;margin-bottom:8px}
.bazi-note{color:var(--mist);font-size:var(--t);line-height:1.7;font-style:normal}
.divider{height:1px;background:var(--line);margin:var(--s4) 0}
.task{color:var(--paper);font-size:var(--t);line-height:1.72}
.energy-bar{display:flex;justify-content:space-between;align-items:center;margin:var(--s3) 0;
  padding:10px 14px;border-radius:14px;background:rgba(111,179,154,.08);border:1px solid var(--line);
  color:var(--paper);font-size:var(--t);letter-spacing:.1em}
.letter-theme{color:var(--gold);font-size:var(--t-lg);text-align:center;letter-spacing:.12em;margin:var(--s2) 0 var(--s3);line-height:1.6}
.ltr-section{margin:var(--s3) 0}
.ltr-section p{color:var(--paper);font-size:var(--t);line-height:1.75;margin:0}
.ltr-key p{color:var(--gold);font-size:var(--t);text-align:center;letter-spacing:.08em;opacity:.95}
.ltr-play{position:relative;padding-bottom:6px}
.mini-play{position:absolute;right:0;bottom:-10px;font-size:12px;color:var(--jade);
  background:rgba(127,209,176,.12);border:1px solid rgba(127,209,176,.4);border-radius:18px;padding:5px 12px;cursor:pointer;transition:.2s}
.mini-play:hover{background:rgba(127,209,176,.22)}

/* ---------- 修行板块：调理法 / 冥想法 引导练习 ---------- */
.practice-block .task-label{margin-bottom:12px}
.practice-row{padding:12px 0;border-top:1px solid var(--line)}
.practice-row:first-of-type{border-top:none}
.practice-row-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.practice-row-head b{color:var(--paper);font-size:var(--t);font-weight:500;letter-spacing:.06em}
.practice-row-head .mini-play{position:static;bottom:auto;padding:5px 12px}
.practice-row p{margin:0;color:var(--paper);font-size:var(--t);line-height:1.75}
.energy-tag{display:flex;align-items:center;gap:8px;margin:var(--s3) 0 0;color:var(--mist);font-size:var(--t-sm);letter-spacing:.12em;opacity:.8}
.energy-tag .dot{width:9px;height:9px;border-radius:50%}
.quote{color:var(--mist);font-size:var(--t);line-height:1.7;text-align:center;font-style:normal;opacity:.85}
.quote.big{font-size:var(--t-lg);color:var(--paper);letter-spacing:.1em;margin:var(--s4) 0}
.gain{color:var(--gold);font-size:var(--t-xl);text-align:center;margin:var(--s2) 0;letter-spacing:.1em}
.see{color:var(--mist);text-align:center;font-size:var(--t-sm);opacity:.8}

/* ---------- 我的旅程 ---------- */
/* ===== 等级标签（首页光球上方 / 修行旅程核心球上方共用） ===== */
.home-level{font-size:12px;letter-spacing:.14em;color:var(--paper);opacity:.9;text-align:center;
  padding:4px 14px;border:1px solid var(--line);border-radius:20px;background:var(--glass);margin-bottom:10px}
.qi-level{margin-bottom:14px}

/* ===== 今日外环境卡（P0：内外环境调节主线） ===== */
.env-card{flex:none;width:auto;max-width:none;margin:0 0 10px;padding:14px 18px;border:1px solid var(--line);
  border-radius:var(--card-radius);background:var(--glass);text-align:left;backdrop-filter:blur(6px)}
.env-head{display:flex;align-items:baseline;gap:8px;margin-bottom:6px}
.env-term{font-size:var(--t-md);color:var(--paper);letter-spacing:.1em;font-weight:600}
.env-theme{font-size:var(--t-sm);color:var(--jade)}
.env-climate{margin:0 0 6px;font-size:var(--t-sm);color:var(--mist);opacity:.92;line-height:1.6}
.env-advice{margin:0;font-size:var(--t-sm);color:var(--paper);opacity:.9;line-height:1.7}
/* 内境标注 */
.home-internal{flex:none;font-size:11px;letter-spacing:.12em;color:var(--jade);opacity:.85;margin:-4px 0 2px}
/* 信笺内外同调因果句 */
.context-note{flex:none;margin:var(--s2) 0 0;padding:10px 14px;border-left:2px solid var(--jade);
  border-radius:0 10px 10px 0;background:rgba(127,209,176,.08);color:var(--paper);opacity:.92;
  font-size:var(--t-sm);line-height:1.8;max-width:420px}

/* ===== 修行旅程 · 核心球 + 横向两侧漂浮小炁珠 ===== */
.qi-hero{position:relative;display:flex;flex-direction:column;align-items:center;margin:var(--s3) 0 var(--s2);padding:14px 0 4px}
.qi-orbit{position:relative;width:100%;max-width:420px;height:160px;margin:10px auto 6px}
.qi-core{position:absolute;left:50%;top:50%;width:96px;height:96px;transform:translate(-50%,-50%);
  display:flex;align-items:center;justify-content:center}
.qi-core .orb{width:96px;height:96px;display:block;animation:breathe 7s ease-in-out infinite}
.qi-core .glow{position:absolute;width:150px;height:150px;border-radius:50%;left:50%;top:50%;transform:translate(-50%,-50%);
  background:radial-gradient(circle,rgba(127,209,176,.35),transparent 66%);z-index:-1}
.qi-bead{position:absolute;width:18px;height:18px;border-radius:50%;
  background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16);
  animation:floatBead 5s ease-in-out infinite}
.qi-bead.on{animation:floatBead 5s ease-in-out infinite, glowPulse 4s ease-in-out infinite}
.qi-bead.partial{animation:floatBead 5s ease-in-out infinite}
.qi-remain{font-size:11px;color:var(--gold);margin-top:10px;opacity:.85;letter-spacing:.04em}
.qi-tag{margin-top:6px}

@keyframes floatBead{
  0%,100%{transform:translateY(0) scale(1)}
  50%{transform:translateY(-8px) scale(1.12)}
}
@keyframes glowPulse{0%,100%{filter:brightness(1)}50%{filter:brightness(1.35)}}

/* ===== 互动修行 · 调理法/冥想法 引导练习 ===== */
.practice-card{position:relative;width:100%;max-width:380px;max-height:90vh;overflow-y:auto;padding:var(--s5) var(--s4) var(--s4);
  background:linear-gradient(180deg,rgba(40,53,51,.6),rgba(22,30,35,.62));
  border:1px solid var(--line);border-radius:26px;text-align:center;
  box-shadow:0 20px 60px rgba(0,0,0,.45)}
.practice-close{position:absolute;top:12px;right:14px;width:30px;height:30px;border:none;background:transparent;
  color:var(--mist);font-size:22px;line-height:1;cursor:pointer;opacity:.7}
.practice-close:hover{opacity:1}
.practice-kind{display:inline-block;font-size:11px;letter-spacing:.2em;color:var(--gold);
  border:1px solid rgba(201,168,106,.4);border-radius:16px;padding:3px 12px;margin-bottom:10px}
.practice-card h3{margin:0 0 10px;color:var(--paper);font-weight:500;font-size:var(--t-lg)}
.practice-text{color:var(--mist);font-size:var(--t-sm);line-height:1.8;text-align:left;margin:0 0 14px;
  background:var(--glass);border:1px solid var(--line);border-radius:14px;padding:12px}
#readText{font-size:var(--t);line-height:2;letter-spacing:.04em;text-align:justify;text-justify:inter-character;color:var(--paper)}
.read-explain{margin:0 0 14px}
.read-interpret{margin:0;color:var(--paper);font-size:var(--t);line-height:1.85;text-align:justify;text-justify:inter-character;
  background:rgba(127,209,176,.08);border:1px solid var(--line);border-radius:12px;padding:12px;font-family:var(--serif)}
.read-recite{margin:0;color:var(--mist);font-size:var(--t-sm);line-height:1.8;text-align:left;
  background:rgba(201,168,106,.06);border:1px solid var(--line);border-radius:12px;padding:12px}
.breath-wrap{display:flex;flex-direction:column;align-items:center;gap:12px;margin:6px 0 10px}
.breath-circle{position:relative;width:120px;height:120px;border-radius:50%;
  background:radial-gradient(circle at 50% 42%,#d8f3e8,#7fd1b0 55%,#3f8f73);
  box-shadow:0 0 30px rgba(127,209,176,.4);transition:transform .2s}
.breath-circle.on{animation:breathe 4s ease-in-out infinite}
.breath-ring{position:absolute;inset:-10px;border-radius:50%;border:1px solid rgba(127,209,176,.35);animation:ringPulse 4s ease-in-out infinite}
@keyframes ringPulse{0%,100%{transform:scale(1);opacity:.5}50%{transform:scale(1.18);opacity:.15}}
.breath-step{font-size:var(--t);color:var(--paper);letter-spacing:.08em;min-height:22px}
.practice-timer{font-size:var(--t-xl);color:var(--gold);letter-spacing:.18em;font-variant-numeric:tabular-nums;margin:6px 0 12px}

/* ---------- 互动修行弹窗（文字引导 + 呼吸） ---------- */

/* ---------- 每日修行打卡清单 ---------- */
.ritual-list{display:flex;flex-direction:column;gap:8px}
.ritual-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border:1px solid var(--line);border-radius:12px;cursor:pointer;transition:.2s}
.ritual-item:hover{border-color:rgba(111,179,154,.5)}
.ritual-item.done{opacity:.5}
.ritual-item.done .ritual-title{text-decoration:line-through}
.ritual-check{width:18px;height:18px;border-radius:50%;border:1.5px solid var(--mist);flex:none;position:relative;transition:.2s}
.ritual-item.done .ritual-check{background:var(--jade);border-color:var(--jade)}
.ritual-item.done .ritual-check::after{content:"✓";color:#0c1410;font-size:12px;font-weight:700;position:absolute;inset:0;display:flex;align-items:center;justify-content:center}
.ritual-body{flex:1;min-width:0}
.ritual-title{color:var(--paper);font-size:var(--t);line-height:1.4}
.ritual-cue{color:var(--mist);font-size:var(--t-sm);opacity:.75;margin-top:2px}
.ritual-empty{color:var(--mist);font-size:var(--t-sm);opacity:.7}
.min-tag{display:none}
.practice-controls{display:flex;flex-direction:column;gap:10px}
.practice-controls .primary,.practice-controls .ghost{width:100%}

/* ===== 三项统计 ===== */
.stat-chips{display:flex;gap:10px;margin:4px 0 var(--s4)}
.chip{flex:1;background:var(--glass);border:1px solid var(--line);border-radius:16px;padding:12px 8px;text-align:center}
.chip span{display:block;font-size:11px;color:var(--mist);opacity:.7;letter-spacing:.06em}
.chip b{display:block;font-size:22px;color:var(--paper);margin-top:5px;font-weight:600}
.chip i{font-style:normal;font-size:11px;color:var(--mist);opacity:.6}

/* ===== 通用分区卡片 ===== */
.g-section{margin:var(--s4) 0}
.g-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.g-head span{font-size:var(--t);color:var(--paper);letter-spacing:.1em;font-weight:500}
.g-head i{font-style:normal;font-size:11px;color:var(--mist);opacity:.6;letter-spacing:.04em}

/* ===== 五行修为 · 元素小炁珠 ===== */
.wx-orbs{display:flex;justify-content:space-between;gap:6px;background:var(--glass);border:1px solid var(--line);border-radius:16px;padding:14px 8px}
.wx-orb{flex:1;display:flex;flex-direction:column;align-items:center;gap:7px}
.wx-dot{width:22px;height:22px;border-radius:50%;display:block;transition:.4s}
.wx-orb b{font-size:var(--t-sm);color:var(--paper)}
.wx-orb i{font-style:normal;font-size:11px;color:var(--mist);opacity:.7}

/* ===== 连续突破 · 横向轨 ===== */
.bt-track{display:flex;gap:8px;overflow-x:auto;padding:4px 2px 8px}
.bt-node{flex:1;min-width:76px;background:var(--glass);border:1px solid var(--line);border-radius:14px;padding:12px 8px;text-align:center;position:relative;opacity:.55;transition:.3s}
.bt-node .bt-dot{width:10px;height:10px;border-radius:50%;background:var(--line);display:block;margin:0 auto 8px}
.bt-node b{display:block;color:var(--paper);font-size:var(--t-sm);font-weight:500}
.bt-node i{font-style:normal;font-size:10px;color:var(--mist);opacity:.6}
.bt-node.done{border-color:var(--jade);opacity:1;background:rgba(127,209,176,.12)}
.bt-node.done .bt-dot{background:var(--jade);box-shadow:0 0 10px var(--jade)}
.bt-node.done em{position:absolute;top:8px;right:10px;font-style:normal;color:var(--jade);font-size:12px}
.bt-node.next{border-color:var(--gold);opacity:1}
.bt-node.next .bt-dot{background:var(--gold);box-shadow:0 0 10px var(--gold)}

/* ===== 近七日 · 横向日卡 ===== */
.trail-row{display:flex;gap:8px;overflow-x:auto;padding-bottom:6px}
.trail-card{flex:1;min-width:82px;background:var(--glass);border:1px solid var(--line);border-radius:14px;padding:12px 8px;text-align:center;cursor:pointer;transition:.25s;opacity:.6}
.trail-card.on{border-color:var(--jade);opacity:1;background:rgba(127,209,176,.1)}
.trail-card:hover{border-color:var(--jade)}
.trail-date{display:block;font-size:11px;color:var(--mist);opacity:.7}
.trail-theme{display:block;color:var(--paper);font-size:var(--t-sm);margin:6px 0}
.trail-tick{display:inline-block;width:22px;height:22px;line-height:22px;border-radius:50%;background:rgba(255,255,255,.06);color:var(--mist);font-size:12px}
.trail-card.on .trail-tick{background:var(--jade);color:#08110d;box-shadow:0 0 10px var(--jade)}

/* ===== 打卡记录 ===== */
.history{margin-top:6px;display:flex;flex-direction:column;gap:6px}
.history .h{display:flex;justify-content:space-between;font-size:var(--t-sm);color:var(--mist);padding:8px 10px;background:var(--glass);border:1px solid var(--line);border-radius:10px}

/* ===== 保留：pcard / pitem / past ===== */
.persona-box{margin:var(--s4) 0}
.pcard{background:var(--glass);border:1px solid var(--line);border-radius:18px;padding:var(--s3);margin-bottom:var(--s2)}
.pcard .plabel{color:var(--gold);font-size:11px;letter-spacing:.18em;margin-bottom:8px;display:flex;align-items:center;gap:8px}
.pcard .plabel .tag{color:var(--mist);opacity:.6;font-size:10px;letter-spacing:.05em;border:1px solid var(--line);border-radius:10px;padding:2px 8px}
.pcard b{color:var(--paper);font-weight:500;font-size:var(--t-lg)}
.pcard p{margin:8px 0 0;color:var(--mist);font-size:var(--t-sm);line-height:1.6}
.pcard.today-card{border-color:rgba(201,168,106,.35)}
.today-past .pitem.today-open{border-color:rgba(111,179,154,.35)}
.today-past .pitem.today-open.done{border-color:rgba(201,168,106,.25)}
.past{display:flex;flex-direction:column;gap:8px}
.pitem{padding:12px 14px;background:var(--glass);border:1px solid var(--line);border-radius:14px;
  display:flex;align-items:center;gap:10px;font-size:var(--t-sm)}
.trail-item{cursor:pointer;transition:.25s}
.trail-item:hover{border-color:var(--jade);background:rgba(111,179,154,.1)}
.ptheme{color:var(--paper);flex:1}
.tick{color:var(--jade)} .x{color:var(--mist);opacity:.5}

/* ---------- 命盘 / 八字（篆刻印 + 光痕条） ---------- */
.bazi-card{background:var(--glass);border:1px solid var(--line);border-radius:22px;padding:var(--s4);
  backdrop-filter:blur(3px);margin-bottom:var(--s3)}
.bazi-pillars{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:var(--s4)}
.bazi-pillars.small{gap:8px;margin-bottom:0}
.bazi-pillars>div{position:relative;text-align:center;padding:14px 4px;border-radius:14px;
  background:radial-gradient(circle at 50% 35%,rgba(201,168,106,.12),rgba(28,32,36,.4));
  border:1px solid rgba(201,168,106,.25)}
.bazi-pillars.small>div{padding:8px 2px}
.bazi-pillars span{display:block;color:var(--mist);opacity:.6;font-size:11px;letter-spacing:.1em;margin-bottom:6px}
.bazi-pillars b{display:block;color:var(--paper);font-size:var(--t-lg);letter-spacing:.06em;
  font-family:var(--sans);font-weight:600;text-shadow:0 0 14px rgba(201,168,106,.25)}
.bazi-pillars.small b{font-size:var(--t)}
.bazi-rows{display:flex;justify-content:space-around;margin-bottom:var(--s3);gap:8px}
.bazi-rows>div{text-align:center;flex:1}
.bazi-rows span{display:block;color:var(--mist);opacity:.6;font-size:11px;letter-spacing:.1em;margin-bottom:5px}
.bazi-rows b{color:var(--jade);font-weight:500;font-size:var(--t)}
.wx-bar{display:flex;gap:5px;height:8px;border-radius:6px;overflow:hidden;margin:var(--s3) 0;
  background:rgba(28,32,36,.5)}
.wx-bar span{height:100%;border-radius:6px;transition:flex .8s ease;min-width:3px;
  box-shadow:0 0 10px currentColor;opacity:.85}
.bazi-summary{color:var(--mist);font-size:var(--t);line-height:1.7;margin:var(--s2) 0 0;text-align:left}
/* ---------- 我的命盘：M5–M7 命理深度 ---------- */
.bazi-deep{margin-top:var(--s3);display:flex;flex-direction:column;gap:var(--s3);border-top:1px solid var(--line);padding-top:var(--s3)}
.bd-block{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
.bd-label{flex:0 0 36px;color:var(--gold);font-size:var(--t-sm);text-align:right;font-weight:600;letter-spacing:.05em}
.bd-ten{display:flex;flex-wrap:wrap;gap:8px}
.tg-item{color:var(--mist);font-size:var(--t-sm)}
.tg-item b{color:var(--paper);font-weight:600;margin-left:3px}
.bd-dayun{color:var(--paper);font-size:var(--t-sm);line-height:1.7}
.bd-dayun b{color:var(--jade)}
.bd-sub{display:block;color:var(--mist);font-size:var(--t-xs);margin-top:2px}
.bd-sha{display:flex;flex-wrap:wrap;gap:6px}
.sha-item{color:var(--mist);font-size:var(--t-sm);padding:0 4px}
.sha-item:not(:last-child)::after{content:"·";margin-left:8px;color:var(--line)}
.bd-liu{color:var(--paper);font-size:var(--t-sm);letter-spacing:.5px}
/* ---------- 我的命盘：M8 紫微盘 ---------- */
.bd-ziwei{flex-direction:column;gap:8px}
.zw-head{color:var(--paper);font-size:var(--t-sm);letter-spacing:.5px;flex-wrap:wrap}
.zw-sihua{color:var(--mist);font-size:var(--t-xs);display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.zw-hua{color:var(--gold);border:1px solid rgba(201,168,106,.35);border-radius:20px;padding:2px 9px;background:rgba(201,168,106,.06)}
.zw-hua i{font-style:normal;color:var(--mist);margin-left:3px;font-size:10px}
.zw-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:4px}
.zw-cell{background:rgba(255,255,255,.04);border:1px solid var(--line);border-radius:10px;padding:6px 4px;min-height:46px;display:flex;flex-direction:column;gap:3px;text-align:center}
.zw-cell.ming{border-color:var(--gold);box-shadow:0 0 10px rgba(212,184,122,.25)}
.zw-cell.shen{border-color:var(--jade)}
.zw-gname{color:var(--paper);font-size:11px;letter-spacing:.05em}
.zw-gname small{color:var(--mist);margin-left:2px;font-size:10px}
.zw-stars{display:flex;flex-direction:column;gap:2px;align-items:center}
.zw-star{color:var(--mist);font-size:11px;line-height:1.2}
.zw-star.hua{color:var(--gold)}
.zw-star i{font-style:normal;color:var(--jade);font-size:9px;margin-left:2px}
.zw-empty{color:rgba(255,255,255,.2)}
.zw-note{color:rgba(255,255,255,.4);font-size:10px;line-height:1.5;margin-top:4px}

/* ---------- 我的信息 / 折叠 ---------- */
.base-info{margin-top:var(--s4);border:1px solid var(--line);border-radius:18px;padding:0 var(--s3);background:var(--glass)}
.base-info summary{padding:14px 0;color:var(--paper);font-size:var(--t-sm);letter-spacing:.1em;cursor:pointer;list-style:none}
.base-info summary::-webkit-details-marker{display:none}
.base-info summary::before{content:"❖ ";color:var(--gold)}
.base-info[open] summary::before{content:"❋ "}
.base-info label:first-of-type{margin-top:var(--s2)}

/* ---------- 浮现式导航 ---------- */
.tabbar{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:30;
  width:calc(100% - 2*var(--pad-x));max-width:var(--content-max);
  display:flex;gap:4px;padding:6px;background:rgba(28,32,36,.6);border:1px solid var(--line);
  border-radius:30px;backdrop-filter:blur(10px);box-shadow:0 10px 30px rgba(0,0,0,.35)}
.tabbar button{background:transparent;color:var(--mist);font-size:var(--t-sm);padding:10px 14px;
  border-radius:24px;letter-spacing:.02em;transition:.3s;opacity:.7;white-space:nowrap;
  flex:1;text-align:center;line-height:1.2}
.tabbar button.active{background:linear-gradient(135deg,var(--jade),var(--jade-deep));color:#0c1410;opacity:1;
  box-shadow:0 4px 16px rgba(63,143,115,.4)}

/* ---------- 仪式化输入：卷轴日期 ---------- */
.scroll-date{display:flex;gap:6px;justify-content:center;height:170px;margin:var(--s3) 0;
  -webkit-mask-image:linear-gradient(180deg,transparent,#000 28%,#000 72%,transparent);
  mask-image:linear-gradient(180deg,transparent,#000 28%,#000 72%,transparent)}
.wheel{flex:1;max-width:84px;height:100%;overflow-y:scroll;scroll-snap-type:y mandatory;
  border-radius:14px;background:var(--glass);border:1px solid var(--line);scrollbar-width:none}
.wheel::-webkit-scrollbar{display:none}
.witem{height:38px;display:flex;align-items:center;justify-content:center;scroll-snap-align:center;
  color:var(--mist);font-size:var(--t);transition:.2s}
.witem.sel{color:var(--paper);font-size:var(--t-lg);text-shadow:0 0 12px rgba(201,168,106,.3)}
.scroll-date-hint{text-align:center;color:var(--gold);font-size:11px;letter-spacing:.2em;margin-top:4px}

/* ---------- 仪式化输入：十二地支环 ---------- */
.branch-ring{position:relative;width:230px;height:230px;margin:var(--s4) auto var(--s2)}
.branch-ring svg{width:100%;height:100%;overflow:visible}
.branch{cursor:pointer;transition:.3s}
.branch circle{fill:var(--glass);stroke:var(--line);stroke-width:1.5;transition:.3s}
.branch text{fill:var(--mist);font-size:15px;text-anchor:middle;dominant-baseline:central;font-family:var(--sans);transition:.3s}
.branch:hover circle{stroke:var(--jade)}
.branch.sel circle{fill:var(--jade);stroke:var(--jade-deep);filter:drop-shadow(0 0 10px var(--jade))}
.branch.sel text{fill:#0c1410;font-weight:600}
.branch-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none}
.branch-center b{color:var(--paper);font-size:var(--t-xl);letter-spacing:.1em}
.branch-center span{color:var(--mist);opacity:.7;font-size:11px;margin-top:4px}
.branch-time-hint{text-align:center;color:var(--mist);opacity:.6;font-size:11px;margin-top:8px;letter-spacing:.03em}
.branch-empty{display:block;width:100%;margin-top:var(--s2);text-align:center;color:var(--mist);
  font-size:var(--t-sm);opacity:.7;background:transparent;border:1px solid var(--line);border-radius:20px;padding:10px}

/* ---------- 动画 ---------- */
@keyframes breathe{0%,100%{transform:scale(1);opacity:.74}50%{transform:scale(calc(1 + var(--breath-amp,.12)));opacity:1}}
/* 减弱动态偏好下保留的温和呼吸：仅透明度变化，无位移/缩放，兼顾可达性与生命感 */
@keyframes breatheSafe{0%,100%{opacity:.8}50%{opacity:1}}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
@keyframes veil{0%{opacity:0;filter:blur(8px);transform:translateY(14px) scale(.99)}100%{opacity:1;filter:blur(0);transform:none}}
@keyframes fade{0%{opacity:0}100%{opacity:1}}
@keyframes reveal{0%{opacity:0;letter-spacing:.3em;filter:blur(4px)}100%{opacity:1;letter-spacing:.04em;filter:blur(0)}}
@keyframes bubbleIn{0%{opacity:0;transform:translate(-50%,6px) scale(.95)}100%{opacity:1;transform:translate(-50%,0) scale(1)}}
@keyframes bubbleOut{0%{opacity:1;transform:translate(-50%,0) scale(1)}100%{opacity:0;transform:translate(-50%,-4px) scale(.97)}}

/* ---------- D 闭环 UI：今日天时徽章 ---------- */
.heaven-badge{display:flex;gap:8px;margin:14px 0 6px;flex-wrap:wrap}
.hb-item{flex:1;min-width:62px;background:var(--glass);border:1px solid var(--line);
  border-radius:14px;padding:10px 8px;text-align:center}
.hb-k{display:block;color:var(--mist);font-size:11px;letter-spacing:.12em;margin-bottom:4px}
.hb-item b{color:var(--paper);font-size:var(--t);font-weight:600;font-family:var(--sans)}

/* ---------- D 闭环 UI：今日方案 ---------- */
.plan-block{margin:6px 0 2px}
.plan-focus{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:var(--t);color:var(--paper);margin:8px 0}
.plan-focus-label{color:var(--mist);font-size:var(--t-sm)}
.plan-chip{display:inline-flex;align-items:center;gap:7px;background:rgba(255,255,255,.06);border:1px solid var(--line);border-radius:20px;padding:5px 12px}
.plan-chip-dot{width:10px;height:10px;border-radius:50%;background:var(--jade);box-shadow:0 0 8px currentColor}
.plan-chip b{color:var(--paper);font-weight:600}
.plan-dirs{font-size:11px;color:var(--mist)}
.plan-rationale{color:var(--mist);font-size:var(--t-sm);line-height:1.7;margin:6px 0 0;
  background:var(--glass);border:1px solid var(--line);border-radius:12px;padding:10px 12px}
.plan-rationale:empty{display:none}
.carry-hint{color:var(--jade);font-size:var(--t-xs);line-height:1.6;background:rgba(127,209,176,.08);border:1px solid var(--line);border-radius:10px;padding:8px 10px;margin:8px 0}

/* ---------- D 闭环 UI：可勾选任务卡片 ---------- */
.tasks{display:flex;flex-direction:column;gap:10px;margin:8px 0 4px}
.task-card{position:relative;background:var(--glass);border:1px solid var(--line);border-radius:16px;
  padding:12px 14px;transition:.2s}
.task-card.done{border-color:var(--jade);background:rgba(127,209,176,.12)}
.task-main{display:flex;align-items:flex-start;gap:10px;cursor:pointer}
.task-check{flex:none;width:22px;height:22px;border-radius:7px;border:1.5px solid var(--line);
  display:flex;align-items:center;justify-content:center;color:var(--jade);font-size:14px;margin-top:2px;transition:.2s}
.task-card.done .task-check{background:var(--jade);border-color:var(--jade);color:#0c1410}
.task-title{color:var(--paper);font-size:var(--t);font-weight:500;line-height:1.4}
.task-tags{display:flex;gap:6px;margin-top:6px;flex-wrap:wrap}
.tag-wx,.tag-dir{font-size:11px;padding:2px 9px;border-radius:20px;border:1px solid var(--line);color:var(--mist)}
.tag-wx{color:var(--gold);border-color:rgba(201,168,106,.4)}
.task-time{font-size:11px;color:var(--mist);opacity:.7;margin-left:auto;white-space:nowrap}
.task-steps{margin-top:8px;padding-top:8px;border-top:1px dashed var(--line);color:var(--mist);
  font-size:var(--t-sm);line-height:1.7;display:none}
.task-card.open .task-steps{display:block}
.task-cue{margin-top:8px;color:var(--jade);font-size:var(--t-sm);display:none}
.task-card.done .task-cue{display:block}
.tasks-cue{color:var(--mist);font-size:11px;margin:2px 0 6px}

/* ---------- 读经定课（道教/国学经典 · 命×时×信笺 三联选经） ---------- */
.reading-block .task-label{margin-bottom:12px}
.reading-src{display:flex;align-items:baseline;gap:8px;margin-bottom:10px}
.reading-src #rdSource{color:var(--gold);font-size:var(--t);letter-spacing:.1em}
.reading-chapter{color:var(--mist);font-size:var(--t-sm);opacity:.8}
.reading-passage,.reading-lines{color:var(--paper);font-size:var(--t);line-height:2;letter-spacing:.04em;text-align:justify;text-justify:inter-character;
  background:rgba(201,168,106,.06);border:1px solid var(--line);border-radius:14px;padding:14px;margin:0 0 10px;
  font-family:var(--serif);max-height:38vh;overflow-y:auto}
.reading-tip{color:var(--jade);font-size:var(--t-sm);opacity:.85;margin:0 0 14px}
.reading-actions{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.reading-actions .mini-play{position:static;padding:5px 14px;vertical-align:middle}
.reading-steps{display:flex;flex-direction:column;gap:14px}
.rd-step{position:relative;padding-top:10px;border-top:1px dashed var(--line)}
.rd-step:first-of-type{border-top:none;padding-top:0}
.rd-step-k{display:block;color:var(--gold);font-size:11px;letter-spacing:.2em;margin-bottom:6px}
.rd-step p{margin:0;color:var(--paper);font-size:var(--t);line-height:1.75}
.rd-done{display:inline-block;color:var(--jade);font-size:var(--t-sm);opacity:.9}
.rd-done.on{opacity:1}
.reading-dedication{color:var(--mist)!important;opacity:.85;font-style:italic}
.reading-note{display:block;width:100%;margin-top:10px;min-height:58px;padding:10px 12px;resize:vertical;
  background:var(--glass);border:1px solid var(--line);border-radius:12px;color:var(--paper);
  font-family:var(--sans);font-size:var(--t-sm);line-height:1.6;outline:none;transition:.3s}
.reading-note:focus{border-color:var(--jade);box-shadow:0 0 0 3px rgba(111,179,154,.15)}
.reading-reason{margin-top:14px;color:var(--mist);font-size:11px;line-height:1.6;opacity:.7;
  background:rgba(127,209,176,.06);border:1px solid var(--line);border-radius:10px;padding:8px 10px}
.reading-hint{color:var(--mist);font-size:11px;opacity:.7;margin:10px 0 0;line-height:1.6}

/* ---------- D 闭环 UI：收功反馈 ---------- */
.done-tasks{margin:14px 0}
.done-task-item{display:flex;align-items:center;gap:8px;padding:8px 0;color:var(--paper);font-size:var(--t-sm);border-bottom:1px solid var(--line)}
.done-task-item:last-child{border-bottom:none}
.done-task-item .tick{color:var(--jade);font-weight:600}
.done-task-empty{color:var(--mist);font-size:var(--t-sm)}

/* ---------- C 修为五行境界：五行修为条 & 连续突破 ---------- */
.cult-summary{margin:2px 0 0}

@media (prefers-reduced-motion:reduce){
  /* 不再一刀切关闭所有动画：仅禁用位移/视差类动效，保留无位移的温和呼吸，避免元炁球彻底变死 */
  .xuanwei{animation:none}
  .orb, .xuanwei .glow{animation:breatheSafe 6s ease-in-out infinite}
  .orb-mote, .orb-ripple, .xuanwei.pulse{animation:none!important;display:none}
  .view{animation:none}
  .orb-bubble{animation:none!important}
  /* Phase C/D：底纹/八卦线条/同心涟漪均为静止层，保留；破茧改为仅亮度闪动、无位移 */
  .orb-motif, .orb-rings, .qi-grain{display:block;animation:none!important}
  .xuanwei.breakthrough .orb{animation:breakthroughSafe 1.3s ease-out}
  .xuanwei.breakthrough .glow{animation:breakthroughSafe 1.3s ease-out}
}
@keyframes breakthroughSafe{0%,100%{filter:brightness(1)}40%{filter:brightness(1.7)}}

/* ===== 每日信笺 · 线性三步流（P0 改版） ===== */
.level-hero{text-align:center;margin-bottom:var(--s2)}
.level-theme{color:var(--gold);font-size:var(--t-lg);letter-spacing:.12em;margin:var(--s2) 0;line-height:1.6}
.level-meta{display:flex;align-items:center;justify-content:center;gap:14px;flex-wrap:wrap;margin:6px 0 2px}
.level-total{display:inline-block;padding:4px 12px;border:1px solid rgba(201,168,106,.4);border-radius:16px;
  color:var(--gold);font-size:var(--t-sm);letter-spacing:.06em}
.level-focus{color:var(--mist);font-size:var(--t-sm);letter-spacing:.04em}
.level-focus b{color:var(--paper);font-weight:600}
.level-focus i{font-style:normal;color:var(--mist);opacity:.8}
.level-key{color:var(--paper);font-size:var(--t);line-height:1.8;text-align:center;margin:10px auto 0;max-width:300px}
.carry-hint{color:var(--jade);font-size:var(--t-sm);opacity:.9;text-align:center;margin:8px 0 0}
.level-tian{margin:var(--s3) 0 0;max-width:none;text-align:left;background:var(--glass);border:1px solid var(--line);border-radius:var(--card-radius);padding:0 18px}
.level-tian summary{padding:12px 0;color:var(--paper);font-size:var(--t-sm);letter-spacing:.1em;cursor:pointer;list-style:none}
.level-tian summary::-webkit-details-marker{display:none}
.level-tian summary::before{content:"◷ ";color:var(--gold)}
.level-tian[open] summary::before{content:"◴ "}
.level-tian .heaven-badge{margin:0 0 12px}
.step-head{display:flex;align-items:center;gap:10px;margin:var(--s4) 0 var(--s2);color:var(--paper);
  font-size:var(--t);letter-spacing:.12em;font-weight:500}
.step-head .step-no{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;
  background:rgba(127,209,176,.16);border:1px solid var(--jade);color:var(--jade);font-size:13px}
.min-tag{color:var(--gold);font-size:11px;letter-spacing:.08em;margin-right:8px;opacity:.9}
.reading-passage.preview{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden;
  color:var(--paper);font-size:var(--t);line-height:2;letter-spacing:.04em;text-align:justify;text-justify:inter-character;
  background:rgba(201,168,106,.06);border:1px solid var(--line);border-radius:14px;padding:14px;margin:0 0 12px;font-family:var(--serif)}
.read-prompt{margin:0;color:var(--paper);font-size:var(--t);line-height:1.85;text-align:justify;text-justify:inter-character}
.reading-reason-wrap .reading-reason{margin:0;color:var(--mist);font-size:var(--t-sm);line-height:1.7}

/* ===== 本轮改版：首页语境 / 读经主体 / 小球动画 / 去重 ===== */
.home-context{color:var(--mist);opacity:.85;font-size:var(--t-sm);line-height:1.7;margin:0 0 var(--s3);flex:none;max-width:320px}
.home-after-actions{display:flex;flex-direction:column;gap:10px}

/* 读经块：展示完整经文（可滚动），去除「每日一言」感 */
.reading-passage.preview{display:block;-webkit-line-clamp:unset;max-height:30vh;overflow-y:auto;margin:0 0 10px}
.reading-interpretpreview{color:var(--jade);font-size:var(--t-sm);opacity:.9;margin:0 0 12px;line-height:1.7;text-align:left}

/* 读经弹层：经文为视觉主体，全程可见 */
.read-card{text-align:left}
#readText{font-size:var(--t-lg);line-height:2.05;letter-spacing:.05em;text-align:justify;text-justify:inter-character;color:var(--paper);
  font-family:var(--serif);margin:0 0 var(--s3);padding:16px;background:rgba(201,168,106,.07);border:1px solid var(--line);border-radius:14px;max-height:46vh;overflow-y:auto}
.read-session{display:flex;align-items:center;justify-content:center;gap:18px;margin-bottom:var(--s2)}
.read-breath{margin:0}
.breath-ring-only{width:60px;height:60px;border-radius:50%;border:2px solid rgba(127,209,176,.5);position:relative;transition:transform .2s;flex:none}
.breath-ring-only::after{content:"";position:absolute;inset:7px;border-radius:50%;border:1px solid rgba(127,209,176,.22)}
.breath-ring-only.on{animation:breatheRing 4s ease-in-out infinite}
@keyframes breatheRing{0%,100%{transform:scale(1);opacity:.55}50%{transform:scale(1.16);opacity:1}}
.read-timer{font-size:var(--t-xl);color:var(--gold);letter-spacing:.18em;font-variant-numeric:tabular-nums}
.read-explain{margin:var(--s3) 0 0;border-top:1px solid var(--line);padding-top:12px}
.read-explain summary{list-style:none;cursor:pointer;display:flex;align-items:center;padding:2px 0}
.read-explain summary::-webkit-details-marker{display:none}
.read-explain summary::before{content:"▸";color:var(--gold);margin-right:8px;font-size:12px;transition:.2s}
.read-explain[open] summary::before{content:"▾"}
.read-explain .task-label{margin:0;color:var(--gold)}
.read-explain[open] .read-interpret,.read-explain[open] .read-recite,.read-explain[open] .read-prompt,.read-explain[open] .reading-dedication,.read-explain[open] .reading-reason{margin-top:10px}

/* 修行旅程·小炁珠充盈动画（由暗变明、由弱变强） */
.qi-bead{transition:background .9s ease, box-shadow .9s ease, opacity .9s ease, transform .9s ease}
.qi-bead.on{background:var(--qi,#8fd6c4);box-shadow:0 0 14px var(--qi-glow,rgba(143,214,196,.5));border-color:transparent}
.qi-bead.lit{background:var(--qi,#8fd6c4);box-shadow:0 0 14px var(--qi-glow,rgba(143,214,196,.5));border-color:transparent}
.qi-bead.partial{opacity:.6;background:var(--qi,#8fd6c4);box-shadow:0 0 10px var(--qi-glow,rgba(143,214,196,.4));border-color:transparent}
.qi-bead.filling{animation:floatBead 5s ease-in-out infinite, beadFill 1.1s ease-out both}
.qi-bead.filling-part{animation:floatBead 5s ease-in-out infinite, beadFillPart 1.1s ease-out both}
.qi-core.pulse{animation:orbPulse 1.4s ease-in-out 1}
@keyframes beadFill{
  0%{opacity:0;transform:scale(.3);box-shadow:0 0 0 transparent;filter:brightness(.4)}
  45%{opacity:1;transform:scale(1.55);box-shadow:0 0 24px var(--qi-glow,rgba(143,214,196,.75));filter:brightness(1.7)}
  100%{opacity:1;transform:scale(1);box-shadow:0 0 14px var(--qi-glow,rgba(143,214,196,.5));filter:brightness(1)}
}
@keyframes beadFillPart{
  0%{opacity:0;transform:scale(.3);box-shadow:0 0 0 transparent;filter:brightness(.4)}
  100%{opacity:.6;transform:scale(1);box-shadow:0 0 10px var(--qi-glow,rgba(143,214,196,.4));filter:brightness(.9)}
}
.wx-rule{margin-top:8px;line-height:1.6}
.trail-pts{display:block;color:var(--gold);font-size:11px;margin:4px 0;opacity:.85}
.today-summary{color:var(--paper);font-size:var(--t);line-height:1.8;margin:8px 0 0}

/* ===== 本轮改版：M-B 修行方向抉择 ===== */
.choice-row{display:flex;gap:10px;flex-wrap:wrap}
.choice-chip{flex:1;min-width:96px;display:flex;align-items:center;justify-content:center;gap:8px;
  padding:12px 10px;border-radius:16px;background:var(--glass);border:1.5px solid var(--line);
  color:var(--paper);font-size:var(--t-sm);font-family:var(--sans);letter-spacing:.04em;transition:.25s}
.choice-chip:active{transform:translateY(1px)}
.choice-chip.chosen{background:rgba(127,209,176,.14);box-shadow:0 0 14px rgba(127,209,176,.25)}
.choice-dot{width:11px;height:11px;border-radius:50%;flex:none;box-shadow:0 0 8px currentColor}

/* ===== 本轮改版：M-C 节气章节化 ===== */
.chapter-card{margin:10px 0 0;max-width:none;text-align:center;padding:12px 18px;border-radius:var(--card-radius);
  background:var(--glass);border:1px solid var(--line);transition:.3s}
.chapter-card .chapter-inner{display:flex;align-items:baseline;justify-content:center;gap:8px}
.chapter-term{color:var(--gold);font-size:var(--t);letter-spacing:.16em}
.chapter-theme{color:var(--paper);font-size:var(--t-sm);opacity:.9}
.chapter-tip{display:block;margin-top:4px;color:var(--mist);font-size:11px;opacity:.75}
.chapter-card.turning{border-color:rgba(201,168,106,.55);background:rgba(201,168,106,.1);
  box-shadow:0 0 18px rgba(201,168,106,.18);animation:chapterTurn .9s ease both}
.chapter-card.turning .chapter-term{text-shadow:0 0 12px rgba(201,168,106,.4)}
@keyframes chapterTurn{0%{opacity:0;transform:translateY(8px) scale(.98)}100%{opacity:1;transform:none}}

/* ===== 本轮改版：M-E 里程碑仪式化 ===== */
.milestone-card{border-color:rgba(201,168,106,.5);background:rgba(201,168,106,.08)}
.milestone-card #doneRitual{color:var(--paper);font-size:var(--t);line-height:1.85;text-align:left;margin:0}

/* ===== P1·内外环境调节：外境微行动卡 / 今日觉察 / 收功内境小结 / 近七日觉察脉络 ===== */
/* 外境微行动卡（复用 task 内部元素的视觉，但独立于 .task-card 以免与内境任务混淆） */
.ext-action-card{margin:var(--s3) 0}
.ext-action-card .task-main{display:flex;align-items:flex-start;gap:10px;cursor:pointer}
.ext-action-card .task-check{flex:none;width:22px;height:22px;border-radius:7px;border:1.5px solid var(--line);
  display:flex;align-items:center;justify-content:center;color:var(--jade);font-size:14px;margin-top:2px;transition:.2s}
.ext-action-card.done .task-check{background:var(--jade);border-color:var(--jade);color:#0c1410}
.ext-action-card .task-body{flex:1}
.ext-action-card .task-title{color:var(--paper);font-size:var(--t);font-weight:500;line-height:1.4}
.ext-action-card .task-tags{display:flex;gap:6px;margin-top:6px}
.ext-action-card .task-cue{margin-top:8px;color:var(--jade);font-size:var(--t-sm);display:none}
.ext-action-card.done .task-cue{display:block}
/* 今日觉察：情绪词 chips + 自述 */
.awareness-card{margin:var(--s3) 0}
.mood-chips{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 12px}
.mood-chip{padding:7px 14px;border-radius:20px;background:rgba(255,255,255,.06);border:1px solid var(--line);
  color:var(--mist);font-size:var(--t-sm);font-family:var(--sans);transition:.2s}
.mood-chip:active{transform:translateY(1px)}
.mood-chip.on{background:rgba(127,209,176,.16);border-color:var(--jade);color:var(--paper);box-shadow:0 0 12px rgba(127,209,176,.2)}
/* 收功内境小结 */
.inner-card #doneInner{margin:0;color:var(--paper);font-size:var(--t);line-height:1.85;text-align:left}
/* 近七日觉察脉络：情绪词时间线，温和回看不评判 */
.aw-trail{display:flex;gap:8px;overflow-x:auto;padding-bottom:6px}
.aw-card{flex:1;min-width:78px;background:var(--glass);border:1px solid var(--line);border-radius:14px;padding:10px 8px;
  text-align:center;cursor:pointer;transition:.25s;display:flex;flex-direction:column;gap:5px;align-items:center}
.aw-card:hover{border-color:var(--jade)}
.aw-date{font-size:11px;color:var(--mist);opacity:.7}
.aw-mood{color:var(--paper);font-size:var(--t-sm);font-weight:500}
.aw-note{font-size:10px;color:var(--mist);opacity:.78;line-height:1.45;word-break:break-word;max-width:100%}
.aw-hint{margin:8px 0 0;color:var(--lotus);opacity:.92;font-size:var(--t-sm);line-height:1.75;
  background:rgba(217,138,122,.08);border:1px solid rgba(217,138,122,.25);border-radius:12px;padding:10px 12px}
/* P2-A 内境调和度：分数环 + 四维度细条（仅作自我觉察的镜子，非诊断、非命运判定） */
.ii-wrap{display:flex;align-items:center;gap:18px;margin-top:6px}
.ii-ring{flex:none;width:104px;height:104px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:conic-gradient(var(--jade) 0deg, rgba(255,255,255,.08) 0deg);transition:background .9s ease}
.ii-ring-inner{width:80px;height:80px;border-radius:50%;background:var(--glass);display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:2px;backdrop-filter:blur(2px)}
.ii-score{font-size:30px;font-weight:600;color:var(--paper);line-height:1;font-family:var(--serif)}
.ii-label{font-size:var(--t-sm);color:var(--jade);font-weight:500}
.ii-facets{flex:1;display:flex;flex-direction:column;gap:9px;min-width:0}
.ii-facet{display:flex;align-items:center;gap:10px}
.ii-fk{flex:none;width:34px;font-size:var(--t-sm);color:var(--mist)}
.ii-bar{flex:1;height:7px;border-radius:6px;background:rgba(255,255,255,.08);overflow:hidden}
.ii-bar i{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,var(--jade),var(--ink));transition:width .9s ease}
.ii-note{margin:12px 0 0;color:var(--mist);font-size:var(--t-sm);line-height:1.7;opacity:.86}
/* P2-B 每周同调回顾：同调回看句 + 留白提问（温和，不诊断、不判定命运） */
.wt-summary{margin:8px 0 0;color:var(--paper);font-size:var(--t);line-height:1.85;text-align:left}
.wt-question{margin:10px 0 0;color:var(--jade);font-size:var(--t-sm);font-style:italic;line-height:1.7}

/* ===== AI 对话（元炁深聊） ===== */
/* 注意：.view.active 已固定 display:block，须用 .view-ai.active 提特异性覆盖为弹性列 */
.view-ai{ padding:var(--s5) var(--pad-x) 86px; }
.view-ai.active{ display:flex; flex-direction:column; min-height:78vh; }
.ai-sub{ margin:-4px 0 14px; color:var(--mist); font-size:var(--t-sm); text-align:center; letter-spacing:.04em; opacity:.9 }
.ai-thread{ flex:1; overflow-y:auto; display:flex; flex-direction:column; gap:14px; padding:4px 2px; min-height:0 }
.ai-row{ display:flex; gap:10px; align-items:flex-end; }
.ai-row.ai-me{ justify-content:flex-end; flex-direction:row-reverse }
.ai-avatar{ flex:none; width:30px; height:30px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  font-size:14px; color:#0c1410; font-weight:600; background:linear-gradient(135deg,var(--jade),var(--jade-deep));
  box-shadow:0 2px 10px rgba(63,143,115,.35) }
.ai-bubble{ max-width:74%; padding:11px 15px; border-radius:18px; font-size:var(--t); line-height:1.6; word-break:break-word; white-space:pre-wrap }
.ai-orb .ai-bubble{ background:var(--glass); border:1px solid var(--line); color:var(--paper); border-bottom-left-radius:6px }
.ai-me .ai-bubble{ background:linear-gradient(135deg,var(--jade),var(--jade-deep)); color:#0c1410; border-bottom-right-radius:6px }
.ai-in{ animation:aiIn .4s ease both }
@keyframes aiIn{ 0%{opacity:0;transform:translateY(10px)} 100%{opacity:1;transform:none} }
.ai-inputbar{ position:sticky; bottom:0; display:flex; gap:8px; align-items:flex-end; margin-top:12px;
  padding:10px; background:rgba(20,24,27,.72); border:1px solid var(--line); border-radius:20px; backdrop-filter:blur(10px) }
.ai-input{ flex:1; resize:none; border:none; outline:none; background:transparent; color:var(--paper);
  font-size:var(--t); line-height:1.5; font-family:inherit; max-height:120px; padding:6px 4px }
.ai-input::placeholder{ color:var(--mist); opacity:.7 }
.ai-send{ flex:none; padding:9px 18px; border:none; border-radius:14px;
  background:linear-gradient(135deg,var(--jade),var(--jade-deep)); color:#0c1410; font-size:var(--t-sm); font-weight:600;
  letter-spacing:.04em; cursor:pointer; transition:.2s }
.ai-send:active{ transform:scale(.96) }
.ai-send:disabled{ opacity:.55; cursor:default }
