/* ============================================================
   页面层：首页 · 命名 · 呼吸 · 转译 · 行动 · 场景 · 奖励 ·
   行动页 · 专注 · 树洞 · 光场 · 我的 · 日志
   ============================================================ */

/* ---------- 首页：一屏一件事 ---------- */
#home{justify-content:space-between}
.home-top{display:flex;justify-content:center;padding-top:var(--sp-3)}
.home-top .wordmark{font-size:30px}
.home-value{
  text-align:center;
  font-family:var(--font-display);
  font-size:var(--fs-lead);
  color:var(--mist);
  letter-spacing:.06em;
  margin-top:var(--sp-2);
}
.home-center{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:var(--sp-3);padding:var(--sp-3) 0}
.big-break{
  position:relative;
  width:190px;height:190px;
  border-radius:50%;
  border:1px solid var(--water);
  background:radial-gradient(circle at 38% 32%, #16324a 0%, var(--tank) 55%, #081119 100%);
  box-shadow:0 0 60px rgba(28,58,82,.45), inset 0 0 40px rgba(4,8,13,.8);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
  transition:transform var(--t-tap) var(--ease-out);
}
.big-break:active{transform:scale(.96)}
.big-break .zh{font-family:var(--font-display);font-size:24px;letter-spacing:.15em}
.big-break .en{font-family:var(--font-num);font-size:11px;color:var(--mist);letter-spacing:.25em}
.big-break::after{
  content:"";position:absolute;inset:-14px;border-radius:50%;
  border:1px solid rgba(143,179,199,.18);
  animation:ripple 3.2s ease-out infinite;
}
@keyframes ripple{
  0%{transform:scale(.92);opacity:0}
  30%{opacity:1}
  100%{transform:scale(1.12);opacity:0}
}
.rm .big-break::after{animation:none;opacity:.3}
.start-hint{font-size:var(--fs-cap);color:var(--mist-dim);letter-spacing:.12em}
.home-gentle{
  text-align:center;
  font-size:var(--fs-cap);
  color:var(--mist);
  letter-spacing:.08em;
  min-height:22px;
}
.home-gentle em{color:var(--spark);font-style:normal;font-family:var(--font-num)}
.next-card{
  margin:var(--sp-3) 0 var(--sp-2);
  border:1px solid var(--spark-dim);
  border-radius:var(--r-s);
  background:var(--glow-1);
  padding:14px 16px;
  animation:cardIn var(--t-card) var(--ease-out);
}
@keyframes cardIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.next-card .nc-label{font-size:var(--fs-micro);color:var(--spark);letter-spacing:var(--ls-label);margin-bottom:4px}
.next-card .nc-text{font-size:var(--fs-body);line-height:1.7}
.next-card .nc-meta{font-size:var(--fs-micro);color:var(--mist);margin-top:6px}
.next-card .nc-btns{display:flex;gap:10px;margin-top:12px}
.next-card .nc-btns .btn-primary{padding:11px;font-size:15px}
.next-card .nc-btns .btn-ghost{width:auto;padding:11px 14px;flex:none}

/* ---------- 命名情绪 ---------- */
.recent-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.recent-label{font-size:var(--fs-micro);color:var(--mist);letter-spacing:var(--ls-label);margin-bottom:8px}
.emo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.emo{
  padding:16px 4px 13px;
  border:1px solid var(--water);border-radius:var(--r-s);
  background:var(--tank);text-align:center;
  transition:border-color var(--t-tap),background var(--t-tap);
}
.emo .n{font-family:var(--font-display);font-size:17px;display:block;line-height:1.4}
.emo .f{display:block;font-size:10px;color:var(--mist);margin-top:2px}
.emo[aria-pressed="true"]{border-color:var(--spark);background:var(--tank-2)}
.emo[aria-pressed="true"] .f{color:var(--spark)}
.emo{animation:emoIn .35s var(--ease-out) backwards}
.emo:nth-child(1){animation-delay:.02s}.emo:nth-child(2){animation-delay:.06s}
.emo:nth-child(3){animation-delay:.1s}.emo:nth-child(4){animation-delay:.14s}
.emo:nth-child(5){animation-delay:.18s}.emo:nth-child(6){animation-delay:.22s}
@keyframes emoIn{from{opacity:0;transform:translateY(10px) scale(.97)}to{opacity:1;transform:none}}
.rm .emo{animation:none}
.more-toggle{
  display:block;width:100%;margin-top:12px;padding:11px;
  font-size:14px;color:var(--mist);letter-spacing:.15em;
  border:1px dashed var(--water);border-radius:var(--r-s);
}
.more-panel{display:none;margin-top:14px}
.more-panel.open{display:block}
.emo-cat{margin-bottom:14px}
.emo-cat h4{font-family:var(--font-ui);font-weight:400;font-size:12px;color:var(--mist);letter-spacing:var(--ls-label);margin-bottom:8px}
.intensity-wrap{margin-top:var(--sp-4)}
.intensity-label{display:flex;justify-content:space-between;align-items:baseline;font-size:13px;color:var(--mist);letter-spacing:.1em}
.intensity-label .val{font-family:var(--font-num);font-size:25px;color:var(--foam);font-variant-numeric:tabular-nums}
.water-hint{font-size:12px;color:var(--mist);text-align:right}

/* ---------- 呼吸准备 ---------- */
#bprep .prep-body{flex:1;display:flex;flex-direction:column;justify-content:center;gap:var(--sp-3)}
#bprep h2{font-size:var(--fs-h1);line-height:var(--lh-h1)}
.prep-text{color:var(--mist);font-size:var(--fs-body);line-height:var(--lh-loose)}
.prep-note{
  border-left:2px solid var(--water);
  padding:4px 0 4px 14px;
  color:var(--mist-dim);font-size:var(--fs-cap);line-height:var(--lh-body);
}

/* ---------- 呼吸进行 ---------- */
#breathe{align-items:center;text-align:center}
.breath-stage{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;width:100%}
.breath-wrap{position:relative;width:210px;height:210px;display:flex;align-items:center;justify-content:center}
.breath-ring{
  width:160px;height:160px;border-radius:50%;
  border:1px solid var(--water);
  background:radial-gradient(circle at 40% 35%, #16324a, var(--tank) 60%);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  transition:transform 3.9s var(--ease-in-out), box-shadow 3.9s ease;
  box-shadow:0 0 30px rgba(28,58,82,.4);
}
.breath-ring.in{transform:scale(1.24);box-shadow:0 0 70px rgba(143,179,199,.35)}
.breath-ring.hold{transform:scale(1.24);box-shadow:0 0 70px var(--glow-2)}
.rm .breath-ring{transition:box-shadow 1s ease}
.rm .breath-ring.in,.rm .breath-ring.hold{transform:none}
.breath-word{font-family:var(--font-display);font-weight:500;font-size:var(--fs-core);letter-spacing:.28em;padding-left:.28em}
.breath-sec{font-family:var(--font-num);font-size:34px;color:var(--spark);font-variant-numeric:tabular-nums;line-height:1.1;min-height:38px}
.breath-prog{position:absolute;inset:0;transform:rotate(-90deg);pointer-events:none}
.breath-prog circle{fill:none;stroke-width:2}
.breath-prog .track{stroke:var(--water-soft)}
.breath-prog .bar{stroke:var(--spark);stroke-linecap:round;transition:stroke-dashoffset 1s linear}
.breath-count{font-family:var(--font-num);font-size:13px;color:var(--mist);letter-spacing:var(--ls-label)}
.breath-comfort{font-size:var(--fs-micro);color:var(--mist-dim);letter-spacing:.06em}
.breath-after{
  display:none;flex-direction:column;align-items:center;gap:var(--sp-4);
}
.breath-after.show{display:flex;animation:cardIn var(--t-card) var(--ease-out)}
.breath-after p{font-family:var(--font-display);font-weight:700;font-size:var(--fs-h1);line-height:var(--lh-h1)}
.breath-controls{display:flex;gap:18px;align-items:center;justify-content:center}
.breath-controls button{font-size:12px;color:var(--mist);letter-spacing:.1em;padding:8px 10px}

/* ---------- 转译（三步） ---------- */
.tr-intro{
  font-family:var(--font-display);
  font-size:var(--fs-lead);line-height:var(--lh-loose);
  color:var(--foam);margin-bottom:var(--sp-3);
}
.tr-intro em{color:var(--spark);font-style:normal}
.tr-q{font-family:var(--font-display);font-weight:700;font-size:var(--fs-h1);line-height:var(--lh-h1);margin-bottom:var(--flow-title-gap)}
.tr-step{display:none}
.tr-step.on{display:block;animation:cardIn var(--t-card) var(--ease-out)}
.tr-example{
  margin-top:var(--sp-3);
  border-left:2px solid var(--spark-dim);
  padding:6px 0 6px 14px;
  font-size:var(--fs-cap);color:var(--mist);line-height:var(--lh-body);
}
.tr-example b{color:var(--mist);font-weight:400;display:block;font-size:var(--fs-micro);letter-spacing:var(--ls-label);margin-bottom:4px}
.tr-template{
  font-family:var(--font-display);font-weight:500;font-size:var(--fs-core);color:var(--mist);
  margin-bottom:var(--flow-title-gap);
}
.tr-template em{color:var(--spark);font-style:normal}

/* ---------- 行动生成器 ---------- */
.ag-criteria{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 18px}
.ag-criteria span{
  font-size:var(--fs-micro);color:var(--mist);
  border:1px solid var(--water);border-radius:var(--r-pill);
  padding:4px 12px;letter-spacing:.06em;
}
.ag-lead{font-family:var(--font-display);font-size:18px;margin:6px 0 10px}
.ag-field{margin-bottom:14px}
.ag-field label{display:block;font-size:var(--fs-micro);color:var(--mist);letter-spacing:var(--ls-label);margin-bottom:8px}
.ag-preview{
  margin-top:4px;
  border:1px solid var(--water);border-radius:var(--r-s);
  background:var(--tank-2);padding:12px 14px;
  font-size:var(--fs-body);line-height:1.7;
}
.ag-preview em{color:var(--spark);font-style:normal}
.ag-warn{
  display:none;
  margin-top:10px;font-size:var(--fs-cap);color:var(--spark);
  line-height:var(--lh-body);
}
.ag-warn.show{display:block;animation:cardIn var(--t-card) var(--ease-out)}
.ag-example{
  margin-top:var(--sp-3);
  border-left:2px solid var(--water);
  padding:6px 0 6px 14px;
  font-size:var(--fs-cap);color:var(--mist-dim);line-height:var(--lh-body);
}
.ag-example i{font-style:normal;color:var(--mist)}

/* ---------- 场景选择 ---------- */
.ss-card{
  border:1px solid var(--water);border-radius:var(--r-s);
  background:var(--tank);padding:18px 16px;margin-bottom:12px;
  text-align:left;width:100%;
  transition:border-color var(--t-tap);
}
.ss-card[aria-pressed="true"],.ss-card:active{border-color:var(--spark)}
.ss-card .sn{font-family:var(--font-display);font-size:19px}
.ss-card .sd{font-size:var(--fs-cap);color:var(--mist);margin-top:4px;line-height:1.7}
.ss-card .st{font-size:var(--fs-micro);color:var(--spark);letter-spacing:var(--ls-label);margin-bottom:6px}

/* ---------- 场景舞台 ---------- */
#scene{padding:0}
#scene-canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:pointer}
.scene-line{
  position:absolute;left:24px;right:24px;top:18%;
  text-align:center;font-family:var(--font-display);font-weight:500;
  font-size:var(--fs-core);line-height:var(--lh-loose);
  pointer-events:none;transition:opacity .5s;
}
.scene-hint{
  position:absolute;left:0;right:0;
  bottom:calc(110px + var(--safe-bottom));
  text-align:center;color:var(--mist);
  font-size:14px;letter-spacing:.25em;
  pointer-events:none;
  animation:hintPulse 2.4s ease-in-out infinite;
}
@keyframes hintPulse{0%,100%{opacity:.45}50%{opacity:1}}
.rm .scene-hint{animation:none;opacity:.8}
.scene-count{
  position:absolute;top:max(16px,var(--safe-top));left:20px;
  font-family:var(--font-num);font-size:12px;color:var(--mist);letter-spacing:.15em;
}
#scene-bar{
  position:absolute;left:22px;right:22px;
  bottom:calc(16px + var(--safe-bottom));
  display:none;flex-direction:column;gap:8px;
}
#scene-bar.show{display:flex;animation:cardIn var(--t-card) var(--ease-out)}
#flash{
  position:absolute;inset:0;
  background:radial-gradient(circle at 50% 50%, rgba(255,215,106,.9), rgba(255,215,106,0) 70%);
  opacity:0;pointer-events:none;
}
#flash.go{animation:flashGo .55s ease-out}
@keyframes flashGo{0%{opacity:0}18%{opacity:1}100%{opacity:0}}
.scene-depth{
  position:absolute;right:20px;top:50%;transform:translateY(-50%);
  font-family:var(--font-num);font-size:12px;color:var(--mist);
  writing-mode:vertical-rl;letter-spacing:.3em;
  pointer-events:none;
}

/* ---------- 奖励 ---------- */
#reward{text-align:center;justify-content:center}
#reward .inner{position:relative;z-index:2}
#reward .inner > *{opacity:0}
#reward .inner > .lit{opacity:1;transition:opacity .6s var(--ease-out)}
#reward.all-lit .inner > *{opacity:1;transition:none}
.reward-energy{font-family:var(--font-num);font-size:56px;color:var(--spark);font-variant-numeric:tabular-nums;line-height:1.15}
.reward-energy small{display:block;font-size:14px;color:var(--mist);font-family:var(--font-ui);letter-spacing:.25em;margin-top:2px}
.reward-main{font-family:var(--font-display);font-weight:500;font-size:var(--fs-core);line-height:var(--lh-loose);margin:14px 0 0}
.reward-main.gold{font-weight:700;color:var(--spark);font-size:var(--fs-h1);margin-top:6px}
.reward-plus{font-family:var(--font-num);font-size:16px;color:var(--spark);letter-spacing:.12em;margin-top:2px;font-variant-numeric:tabular-nums}
.reward-sub{color:var(--mist);font-size:var(--fs-aid);line-height:var(--lh-body)}
.reward-contrib{
  display:inline-block;margin-top:16px;
  padding:8px 20px;border:1px solid var(--water);border-radius:var(--r-pill);
  font-family:var(--font-num);font-size:13px;color:var(--mist);letter-spacing:.1em;
}
.reward-contrib em{color:var(--spark);font-style:normal}
.reward-global{margin-top:12px;font-size:11px;color:var(--mist-faint);letter-spacing:.12em}
.reward-global .rg-label{font-family:var(--font-num);font-size:12px;color:var(--mist);letter-spacing:var(--ls-label);margin-bottom:2px}
.reward-medal{
  margin:12px auto 0;max-width:320px;
  padding:10px 18px;
  border:1px solid var(--spark-dim);border-radius:var(--r-s);
  background:var(--glow-1);
  font-size:13px;color:var(--spark);
}
.skip-btn{
  position:absolute;top:max(14px,var(--safe-top));right:18px;
  padding:8px 14px;color:var(--mist);font-size:13px;letter-spacing:.15em;z-index:5;
}

/* ---------- 行动页 / 行动卡 ---------- */
.action-zone{
  position:relative;
  border:1px solid #2a4a66;border-radius:var(--r-s);
  background:var(--tank-2);
  padding:14px;
  touch-action:pan-y;
  user-select:none;-webkit-user-select:none;
  margin-bottom:12px;
}
.action-zone .az-label{font-size:11px;color:var(--mist);letter-spacing:var(--ls-label);margin-bottom:4px}
.action-zone .az-text{font-size:15px;line-height:1.7;position:relative}
.action-zone .az-crit{font-size:var(--fs-micro);color:var(--mist-dim);margin-top:4px}
.action-zone .strike-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}
.action-zone .strike-svg path,.action-zone .strike-svg line{stroke:var(--spark);stroke-width:3.2;stroke-linecap:round;fill:none}
.action-zone.done{border-color:var(--spark-dim);background:var(--glow-1)}
.action-zone.done .az-text{color:var(--mist)}
.action-zone.done-anim{animation:cardShake .4s ease}
@keyframes cardShake{
  0%,100%{transform:translateX(0)}
  25%{transform:translateX(-4px) rotate(-.4deg)}
  60%{transform:translateX(3px) rotate(.3deg)}
}
.az-hint{font-size:11px;color:var(--mist-faint);letter-spacing:.1em;margin-top:8px}
.az-actions{display:flex;gap:14px;margin-top:8px;align-items:center;flex-wrap:wrap}
.az-done-badge{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-display);font-size:15px;color:var(--spark)}
.az-btns{display:flex;gap:10px;margin-top:12px}
.az-btns .btn-primary{padding:11px;font-size:15px}
.az-btns .btn-outline{padding:11px;font-size:14px}
.empty{text-align:center;color:var(--mist);font-family:var(--font-display);font-size:16px;line-height:2.2;padding:60px 20px}

/* ---------- 专注模式 ---------- */
#focus{justify-content:center;text-align:center}
.focus-label{font-size:var(--fs-micro);color:var(--mist);letter-spacing:var(--ls-wide)}
.focus-text{font-family:var(--font-display);font-weight:700;font-size:var(--fs-h1);line-height:var(--lh-h1);margin:var(--flow-title-gap) 0 8px}
.focus-crit{font-size:var(--fs-cap);color:var(--mist)}
.focus-timer{font-family:var(--font-num);font-size:44px;color:var(--spark);margin:26px 0 6px;font-variant-numeric:tabular-nums;min-height:52px}
.focus-timer-row{display:flex;gap:10px;justify-content:center;margin-bottom:8px}

/* ---------- 树洞 ---------- */
.th-private-badge{
  display:inline-flex;align-items:center;gap:6px;
  font-size:var(--fs-micro);color:var(--ok);
  border:1px solid rgba(126,201,163,.35);border-radius:var(--r-pill);
  padding:4px 12px;letter-spacing:.1em;
}
.th-entry{margin-bottom:12px}
.th-entry .te-text{font-size:var(--fs-body);line-height:var(--lh-body);white-space:pre-wrap}
.th-entry .te-meta{display:flex;gap:10px;align-items:center;font-size:var(--fs-micro);color:var(--mist);margin-top:8px;flex-wrap:wrap}
.th-entry .te-tag{color:var(--spark)}
.th-entry .te-ops{display:flex;gap:12px;margin-top:8px;flex-wrap:wrap}
.th-compose textarea{min-height:80px}
.th-tags{margin:10px 0}

/* ---------- 光场（概念预览） ---------- */
.lf-banner{
  border:1px dashed var(--spark-dim);border-radius:var(--r-s);
  background:var(--glow-1);
  padding:10px 14px;
  font-size:var(--fs-cap);color:var(--spark);
  letter-spacing:.08em;text-align:center;
  margin-bottom:16px;
}
.lf-field{
  position:relative;
  border:1px solid var(--water);border-radius:var(--r-s);
  background:radial-gradient(120% 100% at 50% 0%, #0a1620 0%, var(--abyss) 70%);
  min-height:120px;margin-bottom:16px;overflow:hidden;
}
.lf-dot{position:absolute;border-radius:50%;background:var(--spark);opacity:.5;animation:lfFloat 6s ease-in-out infinite}
@keyframes lfFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
.rm .lf-dot{animation:none}
.lf-card{margin-bottom:10px;position:relative}
.lf-card .demo-tag{
  position:absolute;top:10px;right:10px;
  font-family:var(--font-num);font-size:9px;letter-spacing:.15em;
  color:var(--mist-dim);border:1px solid var(--water);border-radius:3px;padding:1px 5px;
}
.lf-card .lc-emo{font-size:var(--fs-micro);color:var(--spark);letter-spacing:var(--ls-label);margin-bottom:4px}
.lf-card .lc-text{font-size:var(--fs-body);line-height:var(--lh-body);color:var(--mist)}
.lf-tiers{font-size:var(--fs-cap);color:var(--mist);line-height:var(--lh-loose)}

/* ---------- 我的 ---------- */
.me-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:9px;margin-bottom:22px}
.me-tile{padding:12px 10px 9px;border:1px solid var(--water);border-radius:var(--r-s);background:var(--tank)}
.me-tile .v{font-family:var(--font-num);font-size:21px;font-variant-numeric:tabular-nums}
.me-tile .k{font-size:10px;color:var(--mist);letter-spacing:.06em}
.me-tile.gold .v{color:var(--spark)}
.sect{margin-bottom:24px}
.sect h3{font-size:15px;letter-spacing:.1em;margin-bottom:10px}
.pro-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.pro-card{
  position:relative;padding:14px 12px;
  border:1px solid var(--water);border-radius:var(--r-s);background:var(--tank);
  text-align:left;
}
.pro-card .pn{font-size:14px}
.pro-card .pd{font-size:11px;color:var(--mist);margin-top:3px;line-height:1.5}
.pro-tag{
  position:absolute;top:10px;right:10px;
  font-family:var(--font-num);font-size:9px;letter-spacing:.15em;
  color:var(--spark);border:1px solid var(--spark-dim);border-radius:3px;padding:1px 5px;
}
.about-box{border:1px solid var(--water);border-radius:var(--r-s);background:var(--tank);padding:16px;margin-bottom:20px}
.about-box .slogan{font-family:var(--font-display);font-size:16px;line-height:1.9}
.about-box .byline{font-size:12px;color:var(--mist);letter-spacing:.12em;margin:8px 0 14px}
.about-row{
  display:flex;justify-content:space-between;align-items:center;
  padding:10px 0;border-top:1px solid var(--water-soft);
  font-size:14px;width:100%;text-align:left;
}
.about-row .ar-v{font-family:var(--font-num);font-size:12px;color:var(--mist)}
.about-row.danger{color:var(--danger)}

/* ---------- 日志 ---------- */
.stats-row{display:flex;gap:10px;margin-bottom:20px}
.stat-tile{flex:1;padding:13px 12px 10px;border:1px solid var(--water);border-radius:var(--r-s);background:var(--tank)}
.stat-tile .v{font-family:var(--font-num);font-size:23px;font-variant-numeric:tabular-nums}
.stat-tile .k{font-size:11px;color:var(--mist);letter-spacing:.1em}
.stat-tile.gold .v{color:var(--spark)}
.rec{border:1px solid var(--water);border-radius:var(--r-s);background:var(--tank);padding:14px 16px;margin-bottom:12px}
.rec-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px}
.rec-emo{font-family:var(--font-display);font-size:17px}
.rec-emo .arr{color:var(--spark);font-family:var(--font-num);font-size:14px;margin:0 6px}
.rec-emo .to{color:var(--spark)}
.rec-date{font-family:var(--font-num);font-size:11px;color:var(--mist)}
.rec-field{font-size:14px;color:var(--mist);margin-top:5px;line-height:1.8}
.rec-field b{display:inline-block;min-width:3.5em;color:#6f93a8;font-weight:400;font-size:12px;letter-spacing:.1em}
.rec-field span{color:var(--foam)}
.rec-meta{font-family:var(--font-num);font-size:11px;color:var(--mist);margin-top:8px;letter-spacing:.05em}
.rec-meta em{color:var(--spark);font-style:normal}
.export-row{padding:8px 0 10px}

/* ---------- v0.3.1 · 呼吸准备（身体模式切换） ---------- */
.prep-strong{
  font-family:var(--font-display);font-weight:500;
  font-size:var(--fs-core);color:var(--spark);
  letter-spacing:.06em;line-height:var(--lh-loose);
}
.why-toggle{
  align-self:flex-start;
  padding:9px 16px;
  border:1px dashed var(--water);border-radius:var(--r-pill);
  color:var(--mist);font-size:13px;letter-spacing:.08em;
}
.why-card{
  display:none;
  border-left:2px solid var(--water);
  padding:6px 0 6px 14px;
}
.why-card.open{display:block;animation:cardIn var(--t-card) var(--ease-out)}
.why-card p{color:var(--mist);font-size:var(--fs-cap);line-height:var(--lh-loose);margin-bottom:10px}
.why-card .prep-note{border-left:none;padding-left:0;margin-bottom:0}

/* ---------- v0.3.1 · 转译方法卡与转译卡 ---------- */
.method-card{
  border:1px solid var(--spark-dim);
  border-radius:var(--r-s);
  background:linear-gradient(135deg, rgba(255,215,106,.09), rgba(255,215,106,.02));
  padding:14px 16px;
  margin-bottom:12px;
}
.method-card .mc-title{font-family:var(--font-display);font-size:18px;color:var(--spark)}
.method-card .mc-sub{font-size:var(--fs-cap);color:var(--mist);margin-top:4px;line-height:1.7}
.tcard-row{
  display:flex;gap:10px;
  overflow-x:auto;
  scroll-snap-type:x mandatory;
  -webkit-overflow-scrolling:touch;
  padding:2px 2px 10px;
  margin:0 -2px 6px;
  scrollbar-width:none;
}
.tcard-row::-webkit-scrollbar{display:none}
.tcard{
  flex:0 0 82%;
  scroll-snap-align:start;
  border:1px solid var(--water);
  border-radius:var(--r-s);
  background:var(--tank);
  padding:13px 15px;
}
.tcard .tc-map{font-family:var(--font-display);font-size:17px}
.tcard .tc-map em{color:var(--spark);font-style:normal;font-family:var(--font-num);font-size:14px;margin:0 6px}
.tcard .tc-line{font-size:var(--fs-cap);color:var(--mist);margin-top:5px;line-height:1.7}
.tcard.core{border-color:var(--spark-dim);background:var(--glow-1)}
.tcard .tc-tag{font-size:9px;font-family:var(--font-num);color:var(--spark);letter-spacing:.15em;float:right;margin-top:4px}

/* ---------- v0.3.1 · 一句话行动页 ---------- */
.ag-body{flex:1;display:flex;flex-direction:column;justify-content:center;gap:var(--flow-title-gap)}
.ag-body textarea{margin-top:var(--flow-block-gap)}
.ag-lead{font-family:var(--font-display);font-weight:700;font-size:var(--fs-h1);line-height:var(--lh-h1)}
.ag-rule{font-size:var(--fs-aid);color:var(--mist-dim);letter-spacing:.05em}
.ag-warn{
  display:none;
  font-size:var(--fs-cap);color:var(--spark);line-height:var(--lh-body);
}
.ag-warn.show{display:block;animation:cardIn var(--t-card) var(--ease-out)}

/* ---------- v0.3.1 · 勋章墙大卡入口 ---------- */
.medal-cta{
  display:flex;align-items:center;gap:14px;
  width:100%;text-align:left;
  border:1px solid var(--spark-dim);
  border-radius:var(--r-s);
  background:linear-gradient(135deg, rgba(255,215,106,.08), rgba(13,27,40,.4));
  padding:16px;
  margin-bottom:24px;
}
.medal-cta .mc-icon{font-size:26px;flex:none}
.medal-cta .mc-body{flex:1}
.medal-cta .mc-name{font-family:var(--font-display);font-size:17px}
.medal-cta .mc-line{font-size:var(--fs-micro);color:var(--mist);margin-top:2px}
.medal-cta .mc-count{font-family:var(--font-num);font-size:13px;color:var(--spark);letter-spacing:.08em}

/* ---------- v0.3.2 · 核心认知卡（独立成页） ---------- */
#tcore{justify-content:center}
.tcore-stage{flex:1;display:flex;align-items:center;justify-content:center;padding:20px 0}
.tcore-card{
  width:100%;
  border:1px solid var(--spark-dim);
  border-radius:var(--r-m);
  background:
    radial-gradient(120% 100% at 50% 0%, rgba(255,215,106,.07), transparent 55%),
    linear-gradient(165deg, var(--tank-2), var(--tank) 60%, #0a1520);
  box-shadow:var(--shadow-card), 0 0 60px rgba(255,215,106,.05);
  padding:38px 26px 34px;
}
.tcore-card .tk-from{
  font-family:var(--font-num);font-size:12px;color:var(--spark);
  letter-spacing:var(--ls-label);margin-bottom:18px;
}
.tcore-card .tk-t1{font-size:var(--fs-h1);line-height:var(--lh-h1)}
.tcore-card .tk-t2{
  font-family:var(--font-display);font-weight:500;font-size:var(--fs-core);color:var(--spark);
  line-height:var(--lh-loose);margin-top:var(--flow-title-gap);
}
.tcore-card .tk-aux{font-size:var(--fs-aid);color:var(--mist);line-height:var(--lh-loose);margin-top:var(--flow-block-gap)}
/* 四种入场：不同情绪不同动势 */
.tcore-card.enter-rise{animation:tkRise .7s var(--ease-out)}
@keyframes tkRise{from{opacity:0;transform:translateY(90px) scale(.86)}60%{opacity:1}to{opacity:1;transform:none}}
.tcore-card.enter-surface{animation:tkSurface .8s var(--ease-out)}
@keyframes tkSurface{from{opacity:0;transform:translateY(40px);filter:blur(6px)}to{opacity:1;transform:none;filter:blur(0)}}
.tcore-card.enter-emerge{animation:tkEmerge .7s var(--ease-out)}
@keyframes tkEmerge{from{opacity:0;transform:scale(.92)}to{opacity:1;transform:none}}
.tcore-card.enter-tilt{animation:tkTilt .7s var(--ease-out)}
@keyframes tkTilt{from{opacity:0;transform:perspective(600px) rotateX(14deg) translateY(30px)}to{opacity:1;transform:none}}
.rm .tcore-card{animation:none!important}

/* ---------- v0.3.2 · 转译薄卡 ---------- */
.tr-thin{flex:1;display:flex;flex-direction:column;justify-content:center;gap:var(--flow-title-gap);min-height:46dvh}
.tr-thin .chips{margin-top:var(--flow-title-gap)}
.tr-hint{font-size:var(--fs-aid);color:var(--mist);letter-spacing:.04em;margin-bottom:var(--flow-block-gap)}
.tr-step.on{display:flex;flex-direction:column;flex:1}

/* ---------- v0.3.2 · 释放页（爆破后，安静） ---------- */
#release{justify-content:center;text-align:center}
.release-body{flex:1;display:flex;flex-direction:column;justify-content:center;gap:14px;animation:cardIn .6s var(--ease-out)}
.rl-main{font-family:var(--font-display);font-weight:700;font-size:var(--fs-h1);line-height:var(--lh-h1)}
.rl-sub{color:var(--mist);font-size:var(--fs-body)}
.rl-cta{font-family:var(--font-display);font-weight:500;font-size:var(--fs-core);color:var(--spark);margin-top:var(--flow-block-gap);line-height:var(--lh-loose)}

/* ---------- v0.3.2 · 弹性按钮与勋章提示 ---------- */
.btn-primary{transition:transform .18s cubic-bezier(.34,1.56,.64,1),opacity var(--t-tap)}
.btn-primary:active{transform:scale(.94)}
.medal-hint{font-size:var(--fs-cap);color:var(--mist);letter-spacing:.05em;margin:-8px 0 14px}
.medal-hint em{color:var(--spark);font-style:normal;font-family:var(--font-num)}

/* ---------- v0.3.3 · 点亮时刻：两拍庆祝 ---------- */
.cheer{
  position:absolute;inset:0;
  display:none;flex-direction:column;align-items:center;justify-content:center;gap:10px;
  z-index:3;text-align:center;
}
.cheer.show{display:flex}
.cheer-thumb{
  font-size:64px;line-height:1;
  animation:thumbPop .5s cubic-bezier(.34,1.56,.64,1);
}
.cheer-text{
  font-family:var(--font-display);font-weight:700;
  font-size:var(--fs-h1);line-height:var(--lh-h1);
  animation:cheerIn .4s var(--ease-out) .12s backwards;
}
.cheer-sub{
  font-size:var(--fs-aid);color:var(--mist);
  animation:cheerIn .4s var(--ease-out) .26s backwards;
}
@keyframes thumbPop{
  0%{transform:scale(.2) rotate(-14deg);opacity:0}
  60%{transform:scale(1.18) rotate(4deg)}
  100%{transform:scale(1) rotate(0);opacity:1}
}
@keyframes cheerIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.cheer.leave{animation:cheerLeave .35s var(--ease-out) forwards}
@keyframes cheerLeave{to{opacity:0;transform:scale(.94)}}
.rm .cheer-thumb,.rm .cheer-text,.rm .cheer-sub{animation:none}
.reward-energy{
  font-family:var(--font-num);font-size:var(--fs-aid);color:var(--spark-dim);
  letter-spacing:.1em;margin-top:8px;font-variant-numeric:tabular-nums;
}
#reward .foot{opacity:0;pointer-events:none;transition:opacity .5s var(--ease-out)}
#reward .foot.show{opacity:1;pointer-events:auto}
