/* ═══════════════════════════════════════════════════
   Fortune OS · 月下问卦 — Premium Dark Theme（20260901a）
   Inspired by moonly.app & mysticx.ai
   Chinese-aesthetic accents (ink-wash, seal-script)
   ═══════════════════════════════════════════════════ */

/* 宋徽宗瘦金书（自托管授权版）。
   线上只传 WOFF 子集；完整字体与 TTF 原稿保留在本地，不进入发布包。 */
@font-face {
  font-family: "HuiZongShouJin";
  src: local("HuiZongHeZhuShouJinShu"),
       local("徽宗鹤竹瘦金书"),
       local("HZHZSJS"),
       url("/web/assets/fonts/HuiZongShouJin-subset.woff?v=5") format("woff");
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}

/* ─── 0. Custom Properties ─── */
:root {
  /* Palette */
  --bg:            #2d3540;
  --bg-card:       rgba(12, 16, 26, 0.92);
  --bg-surface:    rgba(255, 255, 255, 0.035);
  --bg-hover:      rgba(255, 255, 255, 0.06);
  --border:        rgba(255, 255, 255, 0.07);
  --border-accent: rgba(212, 168, 83, 0.28);

  --gold:          #d4a853;
  --gold-strong:   #f0c96e;
  --gold-dim:      rgba(212, 168, 83, 0.12);
  --moon:          #78c7e8;
  --moon-dim:      rgba(120, 199, 232, 0.12);
  --ember:         #cb7334;
  --success:       #72d4a5;

  --text:          rgba(235, 232, 225, 0.94);
  --text-soft:     rgba(197, 206, 224, 0.72);
  --text-muted:    rgba(160, 168, 182, 0.56);

  /* Typography */
  --serif:         "Noto Serif SC", "Songti SC", "SimSun", serif;
  /* P5.9：真·宋徽宗瘦金书（自托管 .ttf，授权版）。仅用于大标题，body 仍走 --serif */
  --display:       "HuiZongShouJin", "ZCOOL XiaoWei", "Noto Serif SC", "Songti SC", "SimSun", serif;
  --sans:          "Manrope", "Inter", -apple-system, sans-serif;

  /* Shadows */
  --shadow-sm:     0 2px 8px rgba(0,0,0,0.18);
  --shadow-md:     0 8px 32px rgba(0,0,0,0.24);
  --shadow-deep:   0 24px 64px rgba(0,0,0,0.36);

  /* Timing */
  --ease-out:      cubic-bezier(0.16, 0.84, 0.22, 1);
  --ease-spring:   cubic-bezier(0.18, 0.9, 0.2, 1);
  --ritual-fade:   680ms;
  --ritual-fade-slow: 1200ms;
}

/* ─── 1. Reset & Base ─── */
*, *::before, *::after { box-sizing: border-box; margin: 0; }

html {
  scroll-behavior: smooth;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

body {
  font-family: var(--sans);
  font-size: 15px;
  line-height: 1.72;
  color: var(--text);
  background: var(--bg);
  overflow-x: hidden;
}

/* Starfield background */
body::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -2;
  background:
    linear-gradient(180deg, rgba(24, 29, 38, 0.18), rgba(18, 23, 31, 0.42)),
    url("/web/assets/theme/bg-night-moon-wide-v1.webp") center top / cover no-repeat;
  pointer-events: none;
}

body::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -1;
  background:
    radial-gradient(ellipse 76% 52% at 50% 8%, rgba(219, 208, 180, 0.05), transparent 72%),
    linear-gradient(180deg, rgba(26, 31, 40, 0.04), rgba(14, 18, 25, 0.36));
  pointer-events: none;
}

/* Each workspace keeps its own visual identity.  These are regenerated from
 * the five authored paintings, with quieter UI-safe centres and sharper lines. */
.hero-art {
  content: url("/web/assets/scenes/ask-night-wide-v20260724a.webp");
}
.dl-scene {
  content: url("/web/assets/scenes/today-night-wide-v20260724a.webp");
}
:is(.cx-scene, .cx-hero-bg) {
  content: url("/web/assets/scenes/canon-night-wide-v20260724a.webp");
}
.wy-scene {
  content: url("/web/assets/scenes/journal-night-wide-v20260724a.webp");
}
.dx-scene {
  content: url("/web/assets/scenes/destiny-night-wide-v20260724a.webp");
}

@media (max-width: 700px) {
  body::before {
    background:
      linear-gradient(180deg, rgba(24, 29, 38, 0.16), rgba(18, 23, 31, 0.42)),
      url("/web/assets/theme/bg-night-moon-tall-v1.webp") center top / cover no-repeat;
  }

  .hero-art {
    content: url("/web/assets/scenes/ask-night-tall-v20260724a.webp");
  }
  .dl-scene {
    content: url("/web/assets/scenes/today-night-tall-v20260724a.webp");
  }
  :is(.cx-scene, .cx-hero-bg) {
    content: url("/web/assets/scenes/canon-night-tall-v20260724a.webp");
  }
  .wy-scene {
    content: url("/web/assets/scenes/journal-night-tall-v20260724a.webp");
  }
  .dx-scene {
    content: url("/web/assets/scenes/destiny-night-tall-v20260724a.webp");
  }
}

img { display: block; max-width: 100%; }
a { color: var(--gold); text-decoration: none; }
a:hover { text-decoration: underline; }

button, input, select, textarea {
  font: inherit;
  color: inherit;
  border: 0;
  background: none;
  outline: none;
}

button { cursor: pointer; }
button:disabled { opacity: 0.45; cursor: not-allowed; }

h1, h2, h3, h4, h5, h6 {
  font-family: var(--serif);
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: -0.02em;
}

input, select, textarea {
  display: block;
  width: 100%;
  margin-top: 8px;
  padding: 14px 18px;
  border-radius: 14px;
  border: 1px solid var(--border);
  background: rgba(255,255,255,0.04);
  color: var(--text);
  transition: border-color 200ms ease, background 200ms ease;
}

input:focus, select:focus, textarea:focus {
  border-color: var(--border-accent);
  background: rgba(255,255,255,0.06);
}

textarea { resize: vertical; }
select { -webkit-appearance: none; appearance: none; }

label {
  display: block;
  margin-top: 16px;
}

label > span {
  display: block;
  color: var(--text-muted);
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

/* ─── 2. Utility ─── */
.hidden { display: none !important; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }

.eyebrow {
  margin: 0;
  color: var(--gold);
  font-family: var(--sans);
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.24em;
  text-transform: uppercase;
}

.meta-line, .meta-pill {
  margin: 0;
  color: var(--text-soft);
  font-size: 0.92rem;
}

.meta-pill {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 16px;
  border-radius: 999px;
  background: rgba(255,255,255,0.04);
  border: 1px solid var(--border);
  font-size: 0.88rem;
}

.status-line {
  margin: 0;
  color: var(--text-muted);
  font-size: 0.88rem;
}

.summary-label {
  margin: 0;
  color: var(--gold);
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}

.chip-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.chip, .tag {
  display: inline-flex;
  align-items: center;
  padding: 5px 12px;
  border-radius: 999px;
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.04em;
}

.chip {
  background: var(--gold-dim);
  border: 1px solid rgba(212,168,83,0.18);
  color: var(--gold);
}

.tag {
  background: var(--moon-dim);
  border: 1px solid rgba(120,199,232,0.18);
  color: var(--moon);
}

.online-dot {
  display: inline-block;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--success);
  box-shadow: 0 0 12px rgba(114,212,165,0.5);
  animation: pulse-dot 2.4s ease-in-out infinite;
}

.stack { display: grid; gap: 12px; }
.empty-state, .empty-mini {
  padding: 32px;
  border-radius: 20px;
  border: 1px dashed var(--border);
  background: rgba(255,255,255,0.02);
  color: var(--text-soft);
  text-align: center;
}

.section-copy { margin: 0; color: var(--text-soft); font-size: 0.98rem; }

/* ─── 3. Buttons ─── */
.primary-cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 14px 32px;
  border-radius: 14px;
  background: linear-gradient(135deg, var(--gold) 0%, #c49540 100%);
  color: #0a0c14;
  font-weight: 700;
  font-size: 0.94rem;
  letter-spacing: 0.02em;
  box-shadow: 0 8px 24px rgba(212,168,83,0.25), inset 0 1px 0 rgba(255,255,255,0.18);
  transition: transform 260ms var(--ease-out), box-shadow 260ms ease;
}

.primary-cta:hover { transform: translateY(-2px); box-shadow: 0 12px 32px rgba(212,168,83,0.35), inset 0 1px 0 rgba(255,255,255,0.22); }
.primary-cta:active { transform: translateY(0) scale(0.98); }

.ghost-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 13px 28px;
  border-radius: 14px;
  border: 1px solid var(--border);
  background: rgba(255,255,255,0.04);
  color: var(--text);
  font-weight: 600;
  font-size: 0.92rem;
  transition: transform 200ms ease, border-color 200ms ease, background 200ms ease;
}

.ghost-button:hover { border-color: var(--border-accent); background: rgba(255,255,255,0.06); transform: translateY(-1px); }

/* Zero-specificity fallback. Component classes can override this base without
   joining an ever-growing :not() exception list. */
:where(button[type="submit"], button[type="button"]) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 12px 24px;
  border-radius: 12px;
  border: 1px solid var(--border);
  background: rgba(255,255,255,0.05);
  font-weight: 600;
  font-size: 0.88rem;
  transition: transform 180ms ease, border-color 180ms ease, background 180ms ease;
}

:where(button[type="submit"]) {
  border-color: var(--border-accent);
  background: linear-gradient(135deg, rgba(212,168,83,0.14), rgba(212,168,83,0.06));
  color: var(--gold-strong);
}

:where(button[type="submit"]:hover:not(:disabled), button[type="button"]:hover:not(:disabled)) {
  transform: translateY(-1px);
  border-color: rgba(212,168,83,0.38);
  background: rgba(255,255,255,0.08);
}

/* ─── 4. Top Bar ─── */
.top-bar {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 60;
  backdrop-filter: blur(24px) saturate(1.2);
  -webkit-backdrop-filter: blur(24px) saturate(1.2);
  background: rgba(7,9,15,0.72);
  border-bottom: 1px solid rgba(255,255,255,0.05);
}

.top-bar-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  max-width: 1320px;
  margin: 0 auto;
  padding: 0 28px;
  height: 64px;
}

.brand {
  display: flex;
  align-items: center;
  gap: 10px;
  text-decoration: none;
  color: var(--text);
}

.brand-mark {
  font-size: 1.6rem;
  color: var(--gold);
  filter: drop-shadow(0 0 10px rgba(212,168,83,0.35));
}

.brand-copy strong {
  font-family: var(--sans);
  font-size: 0.92rem;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.top-nav {
  display: flex;
  align-items: center;
  gap: 4px;
}

.nav-tab {
  padding: 8px 18px;
  border-radius: 10px;
  color: var(--text-soft);
  font-weight: 600;
  font-size: 0.86rem;
  letter-spacing: 0.04em;
  transition: color 180ms ease, background 180ms ease;
}

.nav-tab:hover { color: var(--text); background: rgba(255,255,255,0.05); }
.nav-tab.active { color: var(--gold); background: var(--gold-dim); }

.admin-link {
  padding: 8px 16px;
  border-radius: 10px;
  color: var(--text-muted);
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: 0.06em;
}

.admin-link:hover { color: var(--text-soft); text-decoration: none; background: rgba(255,255,255,0.04); }

/* ─── 5. BGM Dock ─── */
.bgm-dock {
  position: fixed;
  bottom: 28px;
  right: 28px;
  z-index: 70;
}

.bgm-toggle {
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  padding: 0;
  border-radius: 50%;
  background: rgba(12,16,26,0.88);
  border: 1px solid var(--border);
  backdrop-filter: blur(16px);
  color: var(--gold);
  font-size: 1.1rem;
  box-shadow: var(--shadow-md);
  transition: transform 260ms var(--ease-out), box-shadow 260ms ease;
}

.bgm-toggle:hover { transform: scale(1.08); box-shadow: var(--shadow-deep); }

.bgm-bars {
  display: none;
  align-items: flex-end;
  gap: 2px;
  height: 16px;
}

.bgm-bars i {
  display: block;
  width: 3px;
  background: var(--gold);
  border-radius: 2px;
  animation: bgm-bar 0.8s ease-in-out infinite;
}

.bgm-bars i:nth-child(1) { height: 40%; animation-delay: 0s; }
.bgm-bars i:nth-child(2) { height: 70%; animation-delay: 0.15s; }
.bgm-bars i:nth-child(3) { height: 50%; animation-delay: 0.3s; }
.bgm-bars i:nth-child(4) { height: 60%; animation-delay: 0.45s; }

.bgm-dock.playing .bgm-icon { display: none; }
.bgm-dock.playing .bgm-bars { display: flex; }

.theme-mode-dock {
  position: fixed;
  right: 28px;
  bottom: 88px;
  z-index: 70;
}

.theme-mode-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-width: 88px;
  height: 42px;
  padding: 0 15px;
  border: 1px solid rgba(212, 168, 83, 0.28);
  border-radius: 999px;
  color: var(--gold);
  background: rgba(12, 16, 26, 0.88);
  box-shadow: var(--shadow-md);
  backdrop-filter: blur(16px) saturate(1.1);
  -webkit-backdrop-filter: blur(16px) saturate(1.1);
  font-family: var(--serif);
  font-size: 0.76rem;
  font-weight: 600;
  letter-spacing: 0.10em;
  transition: transform 180ms ease, color 180ms ease, border-color 180ms ease,
    background 180ms ease, box-shadow 180ms ease;
}

.theme-mode-toggle:hover {
  transform: translateY(-1px);
  color: var(--gold-strong);
  border-color: rgba(212, 168, 83, 0.52);
  background: rgba(20, 22, 31, 0.94);
  box-shadow: var(--shadow-deep);
}

.theme-mode-toggle:focus-visible {
  outline: 2px solid var(--gold-strong);
  outline-offset: 3px;
}

.theme-mode-icon {
  width: 1.15em;
  font-family: system-ui, sans-serif;
  font-size: 1rem;
  line-height: 1;
}

.theme-mode-toggle[data-mode="auto"] .theme-mode-icon {
  color: #d9bd76;
}

.theme-mode-toggle[data-mode="day"] .theme-mode-icon {
  color: #e5b84c;
}

.theme-mode-toggle[data-mode="night"] .theme-mode-icon {
  color: #b9c8ed;
}

/* ─── 6. Hero ─── */
.hero {
  position: relative;
  display: grid;
  place-items: center;
  min-height: 100vh;
  padding: 120px 28px 80px;
  text-align: center;
  overflow: hidden;
  isolation: isolate;
}

.hero-veil {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse 60% 50% at 50% 40%, rgba(212,168,83,0.06), transparent),
    radial-gradient(ellipse 50% 45% at 50% 55%, rgba(184,155,94,0.03), transparent);
  pointer-events: none;
}

.hero-content {
  position: relative;
  display: grid;
  gap: 24px;
  width: min(100%, 820px);
  margin-inline: auto;
  justify-items: center;
  justify-self: center;
  text-align: center;
  animation: hero-enter 1.8s var(--ease-spring) both;
  z-index: 2;
  pointer-events: none;
}

.hero-axis {
  position: relative;
  display: grid;
  gap: 24px;
  width: min(100%, 31rem);
  max-width: 100%;
  justify-items: center;
  margin-inline: auto;
  z-index: 3;
  pointer-events: none;
}

.hero-verse {
  display: grid;
  gap: 20px;
  width: 100%;
  max-width: 100%;
  justify-items: center;
  margin-inline: auto;
}

.supplemental-stage {
  display: none;
}

body:not(.landing-home) .landing-only-stage {
  display: none;
}

body.landing-home .app-workspace-stage {
  display: none;
}

body:not(.landing-home) .hero {
  display: none;
}

body:not(.landing-home) .app-shell {
  padding-top: clamp(80px, 10vw, 96px);
}

.hero-seal {
  width: 100%;
  display: flex;
  justify-content: center;
  font-size: 3.2rem;
  color: var(--gold);
  filter: drop-shadow(0 0 28px rgba(212,168,83,0.3));
  animation: ritual-breathe 5s ease-in-out infinite;
}

/* P5.12：月亮 + 词牌 绑成一组（hero-title-block），居中且垂直贴近 */
.hero-title-block {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  width: 100%;
}

/* SVG 月牙：精确居中无 unicode 边距偏差 */
.hero-seal-svg {
  width: 56px;
  height: 56px;
  color: var(--gold);
  filter: drop-shadow(0 0 24px rgba(212, 168, 83, 0.32));
  animation: ritual-breathe 5s ease-in-out infinite;
}

.hero-eyebrow {
  width: 100%;
  letter-spacing: 0.32em;
  text-align: center;
  font-family: var(--display);
  font-size: 1rem;
  font-weight: 500;
}

.hero-poem {
  display: grid;
  gap: 10px;
  margin: 0;
  width: fit-content;
  max-width: 100%;
  justify-items: start;
  justify-self: center;
  /* P5.12：诗词用真·瘦金体（宋徽宗笔体），细瘦劲挺。
     瘦金体笔画偏细，所以 weight 调回 400 + size 略放大 + 字距更宽 */
  font-family: var(--display);
  font-size: clamp(1.5rem, 3.4vw, 2.4rem);
  font-weight: 400;
  line-height: 1.85;
  letter-spacing: 0.12em;
  color: rgba(235,232,225,0.92);
}

.hero-poem > span {
  display: block;
  width: max-content;
  max-width: 100%;
  text-align: left;
  white-space: nowrap;
}

.hero-poem-lower {
  color: rgba(235,232,225,0.62);
}

.hero-rule {
  display: flex;
  justify-content: center;
  padding: 10px 0;
}

.hero-rule span {
  display: block;
  width: 56px;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--gold), transparent);
  opacity: 0.5;
}

.hero-actions {
  position: relative;
  display: flex;
  gap: 14px;
  margin-top: 12px;
  justify-content: center;
  width: auto;
  z-index: 4;
  pointer-events: auto;
}

.hero-actions > * {
  position: relative;
  z-index: 5;
  pointer-events: auto;
  cursor: pointer;
}

.hero-status {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 8px;
  justify-content: center;
  width: auto;
}

.hero-status-label {
  color: var(--text-muted);
  font-family: var(--display);
  font-size: 0.95rem;
  letter-spacing: 0.32em;
  /* 中文不需要 uppercase，去掉以免破坏字形 */
}

/* P5.12：hero 两个按钮也走瘦金，跟诗呼应 */
#hero-start,
#hero-destiny {
  font-family: var(--display);
  font-size: 1.05rem;
  letter-spacing: 0.32em;
  font-weight: 500;
}

/* ─── 7. Section Layout ─── */
.app-shell {
  max-width: 1320px;
  margin: 0 auto;
  padding: 0 28px;
}

.section-head {
  display: grid;
  gap: 8px;
  margin-bottom: 28px;
  text-align: center;
}

.section-head h2 {
  margin: 0;
  font-size: clamp(1.6rem, 3vw, 2.4rem);
}

.section-head-row {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 24px;
}

.section-head-row h2 { margin: 0; font-size: 1.6rem; }

.section-systems,
.section-quick,
.section-recent {
  padding: 80px 0;
}

.section-systems { border-bottom: 1px solid rgba(255,255,255,0.04); }

/* ─── 8. System Gallery ─── */
.system-tabs {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 32px;
}

.system-tab {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  border-radius: 16px;
  border: 1px solid var(--border);
  background: var(--bg-surface);
  color: var(--text-soft);
  font-size: 0.88rem;
  text-align: left;
  transition: transform 220ms var(--ease-out), border-color 220ms ease, background 220ms ease, box-shadow 220ms ease;
}

.system-tab:hover {
  transform: translateY(-2px);
  border-color: rgba(255,255,255,0.12);
  background: var(--bg-hover);
}

.system-tab.active {
  border-color: var(--border-accent);
  background: linear-gradient(135deg, rgba(212,168,83,0.08), rgba(212,168,83,0.03));
  color: var(--text);
  box-shadow: 0 8px 24px rgba(212,168,83,0.12);
}

.system-icon {
  font-size: 1.4rem;
  flex-shrink: 0;
}

.system-meta { display: grid; gap: 2px; min-width: 0; }
.system-meta strong { font-family: var(--sans); font-size: 0.88rem; font-weight: 700; }
.system-meta small { color: var(--text-muted); font-size: 0.74rem; }

.panel {
  padding: 28px;
  border-radius: 24px;
  border: 1px solid var(--border);
  background:
    radial-gradient(circle at top right, rgba(212,168,83,0.04), transparent 30%),
    var(--bg-surface);
}

.system-spotlight { margin-bottom: 0; }

.system-spotlight-stage {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 28px;
  align-items: center;
}

.system-figure-slot { min-height: 200px; }

.system-figure-card {
  overflow: hidden;
  border-radius: 24px;
  border: 1px solid var(--border);
  background: rgba(6,9,15,0.8);
}

.system-figure-image-shell,
.system-figure-placeholder-shell {
  min-height: 240px;
  display: grid;
  place-items: center;
}

.system-figure-image-shell img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.system-figure-placeholder-shell {
  font-size: 4rem;
  color: rgba(255,255,255,0.08);
}

.spotlight-badge {
  color: var(--text-muted);
  font-family: var(--sans);
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.spotlight-description { margin: 6px 0 0; color: var(--text-soft); line-height: 1.8; }

.system-note {
  margin: 8px 0 0;
  padding: 10px 14px;
  border-radius: 10px;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.05);
  color: var(--text-muted);
  font-size: 0.82rem;
  line-height: 1.6;
}

.system-spotlight-copy { display: grid; gap: 10px; }
.system-spotlight-copy h2 { margin: 0; font-size: 1.8rem; }

/* ─── 9. Quick Entries ─── */
.section-quick { border-bottom: 1px solid rgba(255,255,255,0.04); }

.home-entry-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
}

.home-entry-card {
  display: flex;
  align-items: flex-start;
  gap: 16px;
  padding: 22px;
  border-radius: 20px;
  border: 1px solid var(--border);
  background: var(--bg-surface);
  color: var(--text);
  text-align: left;
  transition: transform 260ms var(--ease-out), border-color 260ms ease, box-shadow 260ms ease;
}

.home-entry-card:hover {
  transform: translateY(-4px);
  border-color: var(--border-accent);
  box-shadow: 0 16px 40px rgba(0,0,0,0.24);
}

.home-entry-icon {
  flex-shrink: 0;
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  border-radius: 14px;
  background: var(--gold-dim);
  border: 1px solid rgba(212,168,83,0.14);
  font-size: 1.3rem;
}

.home-entry-copy { display: grid; gap: 4px; }
.home-entry-copy strong { font-family: var(--sans); font-size: 0.96rem; }
.home-entry-copy p { margin: 0; color: var(--text-muted); font-size: 0.82rem; line-height: 1.5; }

/* ─── 10. Recent Section ─── */
.home-report-list {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
}

.home-report-list .consultation-item {
  height: 100%;
  text-align: left;
}

.home-report-list .empty-mini {
  grid-column: 1 / -1;
}

/* ─── 11. Destiny Hub ─── */
.destiny-hub-panel {
  display: grid;
  gap: 28px;
  background:
    radial-gradient(circle at top right, rgba(212,168,83,0.08), transparent 28%),
    linear-gradient(180deg, rgba(255,255,255,0.02), transparent 36%),
    var(--bg-surface);
}

.destiny-hub-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 20px;
}

.destiny-hub-head h2 {
  margin: 0;
  font-size: clamp(1.8rem, 3vw, 2.6rem);
}

.destiny-hub-status {
  min-height: 1.2em;
  margin: -8px 0 0;
}

/* Humanized First-Screen v1 · Stage 1.5 · 今日一页（命途总览顶区） */
.today-page {
  display: grid;
  gap: 18px;
  padding: 26px 28px 24px;
  border-radius: 24px;
  border: 1px solid rgba(214,189,132,0.16);
  background:
    linear-gradient(180deg, rgba(214,189,132,0.05), transparent 75%),
    rgba(10,14,22,0.78);
  margin-bottom: 12px;
}

.today-page[hidden] { display: none; }

.today-page-head { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; }

.today-page-anchor {
  margin: 0;
  font-family: var(--serif);
  font-size: 0.95rem;
  letter-spacing: 0.14em;
  color: var(--text-soft);
}

.today-page-day-master {
  margin: 4px 0 0;
  font-family: var(--serif);
  font-size: 0.92rem;
  letter-spacing: 0.08em;
  color: var(--text-soft);
  opacity: 0.86;
}

.today-page-middle {
  display: grid;
  gap: 6px;
  padding: 6px 0 10px;
  border-top: 1px solid rgba(214,189,132,0.12);
  border-bottom: 1px solid rgba(214,189,132,0.08);
}

.today-page-line {
  margin: 4px 0 0;
  font-family: var(--serif);
  font-size: 1.45rem;
  line-height: 1.5;
  color: var(--text);
}

.today-page-line-empty { color: var(--text-muted); }

.today-page-plain {
  margin: 0;
  color: var(--text-soft);
  line-height: 1.7;
}

.today-page-action {
  margin: 6px 0 2px;
  font-family: var(--serif);
  color: var(--text);
  letter-spacing: 0.04em;
}

.today-page-cells {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}

.today-page-cell {
  position: relative;
  display: grid;
  gap: 8px;
  padding: 16px 18px;
  border-radius: 18px;
  border: 1px solid rgba(255,255,255,0.06);
  background: rgba(14,18,26,0.8);
  min-height: 120px;
}

.today-page-cell small {
  color: var(--text-muted);
  font-size: 0.74rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.today-page-cell strong {
  font-family: var(--serif);
  font-size: 1.05rem;
  line-height: 1.4;
  color: var(--text);
}

.today-page-cell p {
  margin: 0;
  color: var(--text-soft);
  font-size: 0.88rem;
  line-height: 1.6;
}

.today-page-cell-icon {
  position: absolute;
  top: 14px;
  right: 14px;
  width: 22px;
  height: 22px;
  opacity: 0.55;
}
.today-page-cell-icon img { width: 100%; height: 100%; display: block; }

/* §Retention Shell — Daily Oracle Card */
.daily-oracle-card {
  display: grid;
  gap: 8px;
  padding: 16px 18px;
  margin-bottom: 12px;
  border-radius: 18px;
  border: 1px solid rgba(212,168,83,0.22);
  background: rgba(10,14,22,0.9);
}
.daily-oracle-head {
  display: flex;
  align-items: center;
  gap: 10px;
}
.daily-oracle-grade {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 2px 10px;
  border-radius: 20px;
  font-size: 0.8rem;
  font-family: var(--serif);
  letter-spacing: 0.12em;
  background: rgba(212,168,83,0.12);
  color: var(--gold, #d4a853);
  border: 1px solid rgba(212,168,83,0.3);
  flex-shrink: 0;
}
.daily-oracle-grade.grade-daji { color: #e2b96f; border-color: rgba(226,185,111,0.4); }
.daily-oracle-grade.grade-ji { color: #a6c57a; border-color: rgba(166,197,122,0.4); }
.daily-oracle-grade.grade-ping { color: var(--text-soft); border-color: rgba(255,255,255,0.15); }
.daily-oracle-grade.grade-xiong { color: #d07a7a; border-color: rgba(208,122,122,0.35); }
.daily-oracle-grade.grade-daxiong { color: #b84a4a; border-color: rgba(184,74,74,0.4); }
.daily-oracle-headline {
  margin: 0;
  font-family: var(--serif);
  font-size: 1.05rem;
  color: var(--text);
  letter-spacing: 0.06em;
}
.daily-oracle-plain {
  margin: 0;
  color: var(--text-soft);
  line-height: 1.7;
  font-size: 0.9rem;
}
.daily-oracle-action {
  margin: 2px 0 0;
  font-family: var(--serif);
  font-size: 0.88rem;
  color: var(--text-soft);
  letter-spacing: 0.04em;
}
.daily-oracle-bars {
  display: grid;
  gap: 5px;
  margin-top: 4px;
}
.daily-metric-bar {
  display: flex;
  align-items: center;
  gap: 8px;
}
.daily-metric-label {
  flex: 0 0 2.2em;
  font-size: 0.72rem;
  color: var(--text-muted);
  letter-spacing: 0.08em;
  text-align: right;
}
.daily-metric-track {
  flex: 1;
  height: 4px;
  border-radius: 4px;
  background: rgba(255,255,255,0.07);
  overflow: hidden;
}
.daily-metric-fill {
  height: 100%;
  border-radius: 4px;
  background: linear-gradient(90deg, rgba(212,168,83,0.55), rgba(212,168,83,0.9));
  transition: width 0.5s ease;
}
.daily-metric-val {
  flex: 0 0 2.2em;
  font-size: 0.7rem;
  color: var(--text-muted);
  text-align: left;
}

.today-page-empty {
  display: grid;
  gap: 6px;
  padding: 18px 2px 6px;
}
.today-page-empty-title {
  margin: 0;
  font-family: var(--serif);
  font-size: 1.1rem;
  color: var(--text);
}
.today-page-empty-copy {
  margin: 0;
  color: var(--text-soft);
  line-height: 1.7;
}

@media (max-width: 720px) {
  .today-page { padding: 20px; }
  .today-page-cells { grid-template-columns: 1fr; }
  .today-page-line { font-size: 1.25rem; }
}

/* §Stage D.1 · Subject 子页骨架 */
.subject-panel {
  display: grid;
  gap: 24px;
  padding: 28px;
  border-radius: 24px;
  border: 1px solid rgba(255,255,255,0.06);
  background:
    linear-gradient(180deg, rgba(255,255,255,0.025), transparent 70%),
    rgba(14,18,26,0.9);
}

.subject-panel-head {
  display: grid;
  gap: 6px;
}

.subject-panel-head h2 {
  font-family: var(--font-serif, "Songti SC", serif);
  font-weight: 500;
  letter-spacing: 0.02em;
}

.subject-tab-bar {
  display: flex;
  gap: 4px;
  padding: 4px;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,0.05);
  background: rgba(8,11,16,0.7);
}

.subject-tab {
  flex: 1;
  padding: 10px 14px;
  border: none;
  border-radius: 10px;
  background: transparent;
  color: var(--text-muted, rgba(255,255,255,0.55));
  font-family: var(--font-serif, "Songti SC", serif);
  font-size: 0.95rem;
  letter-spacing: 0.04em;
  cursor: pointer;
  transition: background-color 160ms ease, color 160ms ease;
}

.subject-tab:hover { color: var(--text-primary, #f4f1ea); }

.subject-tab.is-active {
  background: rgba(255,255,255,0.06);
  color: var(--text-primary, #f4f1ea);
}

.subject-tab-content {
  min-height: 180px;
  padding: 22px;
  border-radius: 18px;
  border: 1px dashed rgba(255,255,255,0.06);
  background: rgba(10,13,19,0.6);
}

.subject-tab-stub {
  display: grid;
  gap: 8px;
}

.subject-tab-stub-copy {
  font-family: var(--font-serif, "Songti SC", serif);
  font-size: 1.05rem;
  line-height: 1.7;
  color: var(--text-primary, #f4f1ea);
}

/* §Stage D.2b · Subject 证据卡 */
.subject-tab-evidence {
  display: grid;
  gap: 16px;
}

.subject-tab-evidence-head {
  display: grid;
  gap: 6px;
}

.subject-tab-evidence-question {
  font-family: var(--font-serif, "Songti SC", serif);
  font-size: 1.15rem;
  line-height: 1.65;
  color: var(--text-primary, #f4f1ea);
}

.subject-tab-evidence-actions {
  display: flex;
  gap: 10px;
}

@media (max-width: 720px) {
  .subject-panel { padding: 20px; gap: 18px; }
  .subject-tab-bar { flex-wrap: wrap; }
  .subject-tab { flex: 1 0 40%; }
}

/* §Subject 分幕 — Act bar (断/盘/运) */
.subject-act-bar {
  display: flex;
  gap: 6px;
  margin-bottom: 14px;
}
.subject-act-btn {
  padding: 4px 14px;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,0.1);
  background: transparent;
  color: var(--text-muted, rgba(255,255,255,0.5));
  font-family: var(--font-serif, "Songti SC", serif);
  font-size: 0.85rem;
  letter-spacing: 0.1em;
  cursor: pointer;
  transition: background 160ms ease, color 160ms ease, border-color 160ms ease;
}
.subject-act-btn:hover { color: var(--text-primary, #f4f1ea); border-color: rgba(212,168,83,0.35); }
.subject-act-btn.is-active {
  background: rgba(212,168,83,0.1);
  color: var(--gold, #d4a853);
  border-color: rgba(212,168,83,0.4);
}

/* §Subject 分幕 — Act panels */
.subject-act {
  display: grid;
  gap: 12px;
  padding: 16px 0;
  border-top: 1px solid rgba(255,255,255,0.05);
}
.subject-act:first-of-type { border-top: none; }
.subject-act-collapsed { display: none; }

.subject-act-head {
  display: flex;
  align-items: baseline;
  gap: 10px;
  flex-wrap: wrap;
}
.subject-act-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  border: 1px solid rgba(212,168,83,0.4);
  font-family: var(--font-serif, "Songti SC", serif);
  font-size: 0.78rem;
  color: var(--gold, #d4a853);
  flex-shrink: 0;
}
.subject-act-question {
  font-family: var(--font-serif, "Songti SC", serif);
  font-size: 1.05rem;
  line-height: 1.65;
  color: var(--text-primary, #f4f1ea);
  margin: 0;
}
.subject-act-verdict {
  font-family: var(--font-serif, "Songti SC", serif);
  font-size: 0.95rem;
  line-height: 1.7;
  color: var(--text-soft);
  margin: 0;
}

/* §Stage D.2a · destiny hub Subject 入口卡 */
.destiny-subject-entry {
  margin-top: 18px;
}

.destiny-subject-entry[hidden] { display: none; }

.destiny-subject-entry-card {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 18px;
  padding: 20px 22px;
  border-radius: 18px;
  border: 1px solid rgba(255,255,255,0.06);
  background:
    linear-gradient(180deg, rgba(255,255,255,0.025), transparent 80%),
    rgba(12,15,22,0.85);
}

.destiny-subject-entry-copy h3 {
  font-family: var(--font-serif, "Songti SC", serif);
  font-weight: 500;
  letter-spacing: 0.02em;
  margin: 4px 0 2px;
}

@media (max-width: 720px) {
  .destiny-subject-entry-card {
    flex-direction: column;
    align-items: flex-start;
    gap: 12px;
  }
}

.destiny-summary-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
}

/* P6.0.1 · Plan 6 §4.1：hero「今日」公共断语 — 按节气候静态查表 */
.destiny-today-hero {
  display: grid;
  gap: 8px;
  padding: 22px 28px;
  margin: 12px 0 20px;
  border-radius: 18px;
  border: 1px solid rgba(212, 168, 83, 0.22);
  background:
    radial-gradient(ellipse at top right, rgba(212, 168, 83, 0.05), transparent 70%),
    rgba(14, 18, 26, 0.62);
}
.destiny-today-hero[hidden] { display: none; }

.destiny-today-hero-anchor {
  margin: 0;
  color: rgba(212, 168, 83, 0.85);
  font-family: var(--serif);
  font-size: 0.92rem;
  letter-spacing: 0.18em;
}

.destiny-today-hero-phenomena {
  margin: 0;
  color: var(--text-muted);
  font-size: 0.84rem;
  letter-spacing: 0.12em;
}

.destiny-today-hero-oracle {
  margin: 4px 0 0;
  font-family: var(--serif);
  font-size: 1.18rem;
  line-height: 1.65;
  letter-spacing: 0.04em;
  color: var(--text);
}

@media (max-width: 720px) {
  .destiny-today-hero { padding: 18px 22px; }
  .destiny-today-hero-oracle { font-size: 1.05rem; }
}

/* P6.0.2 · Plan 6 §2.2：此身判帖最小版（archetype 占位"待应"） */
/* ════════════════════════════════════════════════════════════════════════
 * P6.UI-5 · 近三章（编年迁回命途页）+ 今日已验闭环
 * 命途页尾部 inline，line-clamp:2 + 渐变 fade
 * ════════════════════════════════════════════════════════════════════════ */
.destiny-chronicle-recent {
  margin: 24px 0 32px;
  padding: 26px 30px 24px;
  border-radius: 18px;
  border: 1px solid rgba(212, 168, 83, 0.24);
  background: rgba(14, 18, 26, 0.55);
  display: grid;
  gap: 16px;
}
.destiny-chronicle-recent[hidden] { display: none; }
.recent-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}
.recent-head .eyebrow {
  margin: 0;
  letter-spacing: 0.32em;
  font-size: 0.72rem;
  color: rgba(212, 168, 83, 0.7);
}
.see-full-chronicle {
  padding: 6px 14px;
  font-size: 0.78rem;
  letter-spacing: 0.06em;
}

.chronicle-recent-chapters {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 14px;
}
.chronicle-chapter-card {
  padding: 16px 20px;
  border-radius: 12px;
  border: 1px solid rgba(212, 168, 83, 0.18);
  background: rgba(255, 255, 255, 0.02);
  display: grid;
  gap: 10px;
}
.chapter-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
}
.chapter-name {
  margin: 0;
  font-family: var(--serif);
  font-size: 1rem;
  letter-spacing: 0.16em;
  color: rgba(228, 214, 178, 0.94);
  font-weight: 500;
}
.chapter-date {
  font-size: 0.72rem;
  letter-spacing: 0.06em;
  color: var(--text-muted);
  font-style: italic;
}
.chapter-entries {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 8px;
}
.chapter-entry {
  display: grid;
  gap: 4px;
  padding: 8px 0;
  border-top: 1px dashed rgba(255, 255, 255, 0.06);
}
.chapter-entry:first-child { border-top: none; }
.chapter-entry .entry-tag {
  display: inline-block;
  padding: 2px 8px;
  font-size: 0.66rem;
  letter-spacing: 0.18em;
  color: rgba(212, 168, 83, 0.62);
  border: 1px solid rgba(212, 168, 83, 0.22);
  border-radius: 4px;
  width: max-content;
}
.chapter-entry-verify .entry-label {
  font-family: var(--serif);
  font-size: 0.96rem;
  letter-spacing: 0.16em;
  color: rgba(228, 214, 178, 0.92);
  margin-top: 2px;
}
.entry-note, .entry-question {
  margin: 0;
  font-size: 0.84rem;
  line-height: 1.65;
  color: var(--text-soft);
  letter-spacing: 0.02em;
  font-style: italic;
}
/* line-clamp + 渐变 fade（用户要的极简体感） */
.line-clamp-2 {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  position: relative;
}
.line-clamp-2::after {
  content: "";
  position: absolute;
  right: 0;
  bottom: 0;
  width: 50%;
  height: 1.2em;
  background: linear-gradient(to right, transparent, rgba(14, 18, 26, 0.92));
  pointer-events: none;
}
.chapter-more {
  margin: 4px 0 0;
  font-size: 0.72rem;
  color: var(--text-muted);
  letter-spacing: 0.06em;
  font-style: italic;
}

.chronicle-recent-empty {
  margin: 0;
  padding: 12px 0;
  font-size: 0.86rem;
  color: var(--text-muted);
  font-style: italic;
  letter-spacing: 0.04em;
  text-align: center;
}

/* 今日已验（闭环 mini-line） */
.jian-verified-today {
  padding: 12px 16px;
  border-radius: 10px;
  border: 1px dashed rgba(212, 168, 83, 0.28);
  background: rgba(212, 168, 83, 0.04);
  display: grid;
  gap: 6px;
}
.jian-verified-today[hidden] { display: none; }
.jian-verified-row {
  display: flex;
  align-items: baseline;
  gap: 12px;
  flex-wrap: wrap;
}
.jian-verified-today .verified-label {
  font-family: var(--serif);
  font-size: 1rem;
  letter-spacing: 0.16em;
  color: rgba(232, 218, 188, 0.96);
}
.jian-verified-today .verified-note {
  font-size: 0.84rem;
  line-height: 1.6;
  color: var(--text-soft);
  font-style: italic;
}
.jian-verified-today .verified-note:empty { display: none; }

/* ════════════════════════════════════════════════════════════════════════
 * P6.Product-6 · 验应 Bottom Sheet
 * 极简私密 / Apple 风淡入 / 不做朱砂印动画（CSS 凑印章看着假）
 * ════════════════════════════════════════════════════════════════════════ */
.verify-sheet {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  pointer-events: auto;
}
.verify-sheet[hidden] { display: none; }
.verify-sheet-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.55);
  backdrop-filter: blur(4px);
  animation: verify-backdrop-in 0.25s ease;
}
@keyframes verify-backdrop-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}
.verify-sheet-panel {
  position: relative;
  width: min(560px, 92vw);
  margin-bottom: 28px;
  padding: 28px 32px 26px;
  border-radius: 18px;
  background:
    linear-gradient(180deg, rgba(212, 168, 83, 0.06), transparent 50%),
    rgba(20, 24, 32, 0.96);
  border: 1px solid rgba(212, 168, 83, 0.32);
  box-shadow: 0 -20px 60px rgba(0, 0, 0, 0.6), 0 0 0 1px rgba(212, 168, 83, 0.08);
  display: grid;
  gap: 18px;
  animation: verify-panel-in 0.32s cubic-bezier(0.2, 0.9, 0.3, 1);
}
@keyframes verify-panel-in {
  from { transform: translateY(40px); opacity: 0; }
  to   { transform: translateY(0);    opacity: 1; }
}
.verify-sheet-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.verify-sheet-head .eyebrow {
  margin: 0;
  letter-spacing: 0.32em;
  font-size: 0.72rem;
  color: rgba(212, 168, 83, 0.7);
}
.verify-sheet-close {
  background: none;
  border: none;
  font-size: 1.4rem;
  color: var(--text-muted);
  cursor: pointer;
  padding: 0 8px;
  line-height: 1;
}
.verify-sheet-question {
  margin: 0;
  padding: 14px 16px;
  border-left: 2px solid rgba(212, 168, 83, 0.5);
  background: rgba(212, 168, 83, 0.04);
  font-family: var(--serif);
  font-size: 1.06rem;
  line-height: 1.75;
  color: rgba(232, 218, 188, 0.96);
  letter-spacing: 0.04em;
}
.verify-sheet-input { display: grid; }
.verify-note {
  width: 100%;
  padding: 12px 14px;
  border-radius: 10px;
  border: 1px solid rgba(212, 168, 83, 0.22);
  background: rgba(255, 255, 255, 0.03);
  color: rgba(228, 214, 178, 0.94);
  font-family: var(--serif);
  font-size: 0.96rem;
  line-height: 1.7;
  resize: vertical;
  min-height: 70px;
}
.verify-note::placeholder {
  color: rgba(212, 168, 83, 0.42);
  font-style: italic;
}
.verify-note:focus {
  outline: none;
  border-color: rgba(212, 168, 83, 0.5);
  background: rgba(255, 255, 255, 0.05);
}
.verify-sheet-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
/* P6.Product-6 升级 v2：弃红绿配色（股票/Duolingo 既视感），改用统一暗金 + 明暗对比
   两按钮共用暗金边，靠 font-weight + hover 透明度 + active state 区分 */
.verify-pick-yes, .verify-pick-no {
  padding: 12px 18px;
  font-family: var(--serif);
  font-size: 1rem;
  letter-spacing: 0.16em;
  border-color: rgba(212, 168, 83, 0.32);
  background: rgba(20, 24, 32, 0.6);
  color: rgba(228, 214, 178, 0.92);
  transition: background 0.15s, border-color 0.15s, color 0.15s;
}
.verify-pick-yes {
  font-weight: 500;       /* 稍重，作为主选 */
}
.verify-pick-no {
  font-weight: 400;
  color: rgba(228, 214, 178, 0.74);  /* 字色稍弱 */
}
.verify-pick-yes:hover {
  background: rgba(212, 168, 83, 0.10);
  border-color: rgba(212, 168, 83, 0.55);
  color: rgba(232, 218, 188, 0.98);
}
.verify-pick-no:hover {
  background: rgba(255, 255, 255, 0.04);
  border-color: rgba(212, 168, 83, 0.42);
  color: rgba(228, 214, 178, 0.92);
}
.verify-pick-yes:active {
  background: rgba(212, 168, 83, 0.18);
}
.verify-pick-no:active {
  background: rgba(255, 255, 255, 0.08);
}
.verify-pick-skip {
  margin: 0 auto;
  background: none;
  border: none;
  color: var(--text-muted);
  font-size: 0.84rem;
  letter-spacing: 0.08em;
  cursor: pointer;
  padding: 4px 8px;
}
.verify-pick-skip:hover { color: rgba(212, 168, 83, 0.7); }

.verify-sheet-success {
  display: none;
  text-align: center;
  padding: 32px 20px;
  color: rgba(212, 168, 83, 0.82);
  letter-spacing: 0.18em;
}
.verify-sheet-success:not([hidden]) { display: block; }
.verify-sheet-success .verify-success-mark {
  display: block;
  font-size: 2.4rem;
  margin-bottom: 8px;
  font-weight: 300;
  color: rgba(212, 168, 83, 0.9);
}
.verify-sheet-success .verify-success-text {
  font-family: var(--serif);
  font-size: 0.96rem;
}

.verify-sheet.is-success .verify-sheet-question,
.verify-sheet.is-success .verify-sheet-input,
.verify-sheet.is-success .verify-sheet-actions,
.verify-sheet.is-success .verify-pick-skip {
  display: none;
}

/* 关闭动画（当 .closing 添加时淡出） */
.verify-sheet.is-closing .verify-sheet-backdrop { animation: verify-backdrop-out 0.3s forwards; }
.verify-sheet.is-closing .verify-sheet-panel { animation: verify-panel-out 0.3s forwards; }
@keyframes verify-backdrop-out {
  from { opacity: 1; }
  to   { opacity: 0; }
}
@keyframes verify-panel-out {
  from { transform: translateY(0);    opacity: 1; }
  to   { transform: translateY(40px); opacity: 0; }
}

/* ════════════════════════════════════════════════════════════════════════
 * P6.UI-4 + P6.Product-1.8 · 今日笺（建议层 voice）
 * 数据：product_hook.today_bias_pool 按 day-of-year 轮转
 * ════════════════════════════════════════════════════════════════════════ */
.destiny-today-jian {
  margin: 16px 0 24px;
  padding: 26px 30px 22px;
  border-radius: 18px;
  border: 1px solid rgba(212, 168, 83, 0.32);
  background:
    linear-gradient(180deg, rgba(212, 168, 83, 0.05), transparent 80%),
    rgba(14, 18, 26, 0.7);
  display: grid;
  gap: 16px;
}
.destiny-today-jian[hidden] { display: none; }
.jian-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
}
.jian-head .eyebrow {
  margin: 0;
  letter-spacing: 0.32em;
  font-size: 0.72rem;
  color: rgba(212, 168, 83, 0.7);
}
.jian-date {
  margin: 0;
  font-size: 0.72rem;
  letter-spacing: 0.08em;
  color: var(--text-muted);
  font-style: italic;
}
.jian-yi-ji {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}
.jian-block {
  padding: 14px 18px;
  border-radius: 12px;
  border: 1px solid rgba(212, 168, 83, 0.22);
  background: rgba(255, 255, 255, 0.02);
  display: grid;
  gap: 6px;
}
.jian-yi-block { border-left: 2px solid rgba(140, 180, 120, 0.4); }
.jian-ji-block { border-left: 2px solid rgba(180, 100, 90, 0.4); }
.jian-label {
  margin: 0;
  font-size: 0.7rem;
  letter-spacing: 0.32em;
  color: rgba(212, 168, 83, 0.7);
}
.jian-yi, .jian-ji {
  margin: 0;
  font-family: var(--serif);
  font-size: 1.18rem;
  letter-spacing: 0.18em;
  color: rgba(232, 218, 188, 0.96);
  font-weight: 500;
}
.jian-action {
  padding: 16px 20px;
  border-radius: 12px;
  border: 1px solid rgba(212, 168, 83, 0.22);
  background: rgba(255, 255, 255, 0.02);
  display: grid;
  gap: 8px;
}
.jian-action-text {
  margin: 0;
  font-family: var(--serif);
  font-size: 1.05rem;
  line-height: 1.75;
  color: rgba(228, 214, 178, 0.96);
  letter-spacing: 0.04em;
}
.jian-verify {
  padding: 16px 20px;
  border-radius: 12px;
  border: 1px dashed rgba(212, 168, 83, 0.32);
  background: rgba(212, 168, 83, 0.03);
  display: grid;
  gap: 10px;
}
.jian-verify-text {
  margin: 0;
  font-size: 0.94rem;
  line-height: 1.7;
  color: var(--text-soft);
  letter-spacing: 0.02em;
  font-style: italic;
}
.jian-verify-btn {
  justify-self: start;
  padding: 8px 18px;
  font-size: 0.84rem;
  letter-spacing: 0.12em;
}

@media (max-width: 720px) {
  .jian-yi-ji { grid-template-columns: 1fr; }
}

/* ════════════════════════════════════════════════════════════════════════
 * P6.UI Sprint · 此身殿 5 物件
 *   ① 主判帖 (.zhu-panti)
 *   ② 风骨片 (.feng-gu-pian)
 *   ③ 四相长卷 (.si-xiang-juan)
 *   ④ 今日笺 / ⑤ 编年卷 在另外节点（destiny-today-hero / chronicle-panel）
 * ════════════════════════════════════════════════════════════════════════ */

.destiny-self-tablet {
  display: flex;
  flex-direction: column;
  gap: 24px;
  margin: 16px 0 20px;
}
.destiny-self-tablet[hidden] { display: none; }

/* 出生资料未全 → CTA 引导（保持 P6.0.6 行为，独立态） */
.destiny-self-tablet-cta {
  display: grid;
  gap: 12px;
  padding: 22px 26px;
  border: 1px dashed rgba(212, 168, 83, 0.42);
  border-radius: 16px;
  background: rgba(212, 168, 83, 0.04);
  max-width: 520px;
}
.destiny-self-tablet-cta[hidden] { display: none; }
.destiny-self-tablet-cta-text {
  margin: 0;
  font-size: 14px;
  line-height: 1.7;
  color: rgba(214, 200, 168, 0.86);
}
.destiny-self-tablet-cta-btn {
  justify-self: start;
  padding: 8px 18px;
  font-size: 13px;
  letter-spacing: 0.08em;
}

.destiny-self-tablet-body {
  display: flex;
  flex-direction: column;
  gap: 24px;
}
.destiny-self-tablet-body[hidden] { display: none; }

.destiny-self-tablet .eyebrow {
  margin: 0;
  letter-spacing: 0.32em;
  font-size: 0.72rem;
  color: rgba(212, 168, 83, 0.7);
}

/* ───────────────────────────────────────────────────────
 * ① 主判帖（.zhu-panti）
 *   左：朱砂印位（暂留白：朱砂金边 + 大号瘦金体首字）
 *   右：第 N 象大字 / 雅号 / 公历日 / 一句判语 / 分享按钮
 * ─────────────────────────────────────────────────────── */
.zhu-panti {
  position: relative;
  display: grid;
  grid-template-columns: 200px 1fr;
  gap: 32px;
  padding: 32px 36px 30px;
  border-radius: 22px;
  border: 1px solid rgba(212, 168, 83, 0.5);
  background:
    radial-gradient(ellipse at top right, rgba(212, 168, 83, 0.10), transparent 60%),
    linear-gradient(180deg, rgba(255, 255, 255, 0.025), transparent 80%),
    rgba(14, 18, 26, 0.82);
  box-shadow: 0 22px 64px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(212, 168, 83, 0.08);
}

/* 朱砂印位（第一版留白处理：朱砂金边 + 内嵌大字 + 微旋转 + 噪点） */
.zhu-panti-seal {
  width: 160px;
  height: 160px;
  align-self: center;
  justify-self: center;
  display: grid;
  place-items: center;
  border: 3px double rgba(176, 38, 32, 0.62);
  border-radius: 6px;
  background:
    radial-gradient(circle at 30% 30%, rgba(176, 38, 32, 0.18), rgba(176, 38, 32, 0.04) 70%),
    rgba(176, 38, 32, 0.06);
  transform: rotate(-2deg);
  position: relative;
  /* "未盖完"质感 */
  box-shadow: inset 0 0 32px rgba(176, 38, 32, 0.12);
}
.zhu-panti-seal::before,
.zhu-panti-seal::after {
  content: "";
  position: absolute;
  inset: 6px;
  border: 1px solid rgba(176, 38, 32, 0.32);
  border-radius: 4px;
  pointer-events: none;
}
.zhu-panti-seal::after {
  inset: 14px;
  border-style: dashed;
  border-color: rgba(176, 38, 32, 0.18);
}
.zhu-panti-seal-char {
  font-family: var(--serif);
  font-size: 5rem;
  font-weight: 600;
  color: rgba(176, 38, 32, 0.78);
  letter-spacing: 0;
  text-shadow: 0 0 12px rgba(176, 38, 32, 0.2);
}

.zhu-panti-text {
  display: grid;
  gap: 8px;
  align-content: center;
}
.zhu-panti-xiang {
  margin: 4px 0 0;
  display: flex;
  align-items: baseline;
  gap: 16px;
  font-family: var(--serif);
}
.zhu-panti-xiang .xiang-order {
  font-size: 1rem;
  letter-spacing: 0.18em;
  color: rgba(212, 168, 83, 0.7);
}
.zhu-panti-xiang .xiang-name {
  font-size: 2.6rem;
  letter-spacing: 0.18em;
  font-weight: 600;
  color: rgba(238, 220, 175, 0.96);
  text-shadow: 0 0 24px rgba(212, 168, 83, 0.18);
}
.zhu-panti-yahao-line {
  margin: 4px 0 0;
  color: var(--text-soft);
  letter-spacing: 0.14em;
  font-size: 0.9rem;
}
.zhu-panti-yahao-line em {
  font-style: normal;
  font-family: var(--serif);
  font-size: 1.15rem;
  letter-spacing: 0.18em;
  color: rgba(232, 218, 188, 0.92);
  margin-left: 4px;
}
.zhu-panti-bazi {
  margin: 0;
  color: var(--text-muted);
  font-size: 0.84rem;
  letter-spacing: 0.16em;
}
.zhu-panti-late-zi {
  margin: 0;
  color: #888;
  font-size: 0.7rem;
  letter-spacing: 0.1em;
  font-style: italic;
}
.zhu-panti-late-zi[hidden] { display: none; }
/* P6.Product-1 断层主断：古韵 + 人话双层 */
.zhu-panti-verdict {
  margin: 14px 0 4px;
  padding: 16px 20px;
  border-left: 2px solid rgba(212, 168, 83, 0.5);
  background: rgba(212, 168, 83, 0.04);
  display: grid;
  gap: 10px;
}
.verdict-guyun {
  font-family: var(--serif);
  font-size: 1.08rem;
  line-height: 1.75;
  letter-spacing: 0.06em;
  color: rgba(228, 214, 178, 0.96);
}
.verdict-renhua {
  font-size: 0.88rem;
  line-height: 1.65;
  color: var(--text-muted);
  letter-spacing: 0.04em;
  font-style: italic;
}
.verdict-renhua:empty { display: none; }

/* ───────────────────────────────────────────────────────
 * P6.Product-1 ② 传层 · 命盘反差（古韵 tag + 人话 share）
 * ─────────────────────────────────────────────────────── */
.ming-pan-fancha {
  position: relative;
  padding: 22px 28px 22px;
  border-radius: 16px;
  border: 1px solid rgba(176, 38, 32, 0.32);
  background:
    radial-gradient(ellipse at top left, rgba(176, 38, 32, 0.08), transparent 60%),
    rgba(20, 14, 14, 0.62);
  display: grid;
  gap: 10px;
}
.ming-pan-fancha[hidden] { display: none; }
.fancha-tag {
  margin: 6px 0 0;
  font-family: var(--serif);
  font-size: 2rem;
  font-weight: 600;
  letter-spacing: 0.6em;
  color: rgba(232, 200, 168, 0.96);
  text-shadow: 0 0 24px rgba(176, 38, 32, 0.24);
  text-indent: 0.6em; /* 视觉补偿 letter-spacing 偏左 */
}
.fancha-guyun {
  margin: 0;
  font-family: var(--serif);
  font-size: 0.94rem;
  letter-spacing: 0.08em;
  color: var(--text-muted);
}
.fancha-guyun:empty { display: none; }
.fancha-share-line {
  margin: 4px 0 0;
  padding: 10px 14px;
  border-left: 2px solid rgba(176, 38, 32, 0.4);
  background: rgba(255, 255, 255, 0.02);
  font-size: 1.02rem;
  line-height: 1.7;
  color: rgba(228, 214, 178, 0.94);
  font-style: italic;
}
.fancha-actions {
  display: flex;
  gap: 10px;
  margin-top: 6px;
}
.fancha-copy, .fancha-share {
  padding: 8px 18px;
  font-size: 0.84rem;
  letter-spacing: 0.12em;
}

/* ───────────────────────────────────────────────────────
 * P6.Product-1 ③ 用层 · 此身所宜 / 所忌
 * ─────────────────────────────────────────────────────── */
.ci-shen-suoyi-suoji {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}
.ci-shen-suoyi-suoji[hidden] { display: none; }
.suoyi-block, .suoji-block {
  padding: 18px 22px;
  border-radius: 14px;
  border: 1px solid rgba(212, 168, 83, 0.22);
  background: rgba(14, 18, 26, 0.55);
  display: grid;
  gap: 8px;
}
.suoyi-block { border-left: 3px solid rgba(140, 180, 120, 0.4); }
.suoji-block { border-left: 3px solid rgba(180, 100, 90, 0.4); }
.suoyi-headline, .suoji-headline {
  margin: 0;
  font-family: var(--serif);
  font-size: 1.18rem;
  letter-spacing: 0.18em;
  color: rgba(232, 218, 188, 0.96);
  font-weight: 500;
}
.suoyi-explanation, .suoji-explanation {
  margin: 4px 0 0;
  font-size: 0.84rem;
  line-height: 1.75;
  color: var(--text-muted);
  letter-spacing: 0.04em;
  font-style: italic;
}

/* ───────────────────────────────────────────────────────
 * P6.Product-1 ④ 何以断我（折叠区，术语层）
 * ─────────────────────────────────────────────────────── */
.he-yi-duan-wo {
  border: 1px dashed rgba(212, 168, 83, 0.32);
  border-radius: 14px;
  background: rgba(14, 18, 26, 0.4);
  padding: 0;
}
.he-yi-duan-wo[hidden] { display: none; }
.he-yi-duan-wo summary {
  cursor: pointer;
  padding: 16px 22px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  list-style: none;
  user-select: none;
}
.he-yi-duan-wo summary::-webkit-details-marker { display: none; }
.he-yi-duan-wo summary::after {
  content: "▸";
  font-size: 0.9rem;
  color: rgba(212, 168, 83, 0.7);
  margin-left: 12px;
  transition: transform 0.2s;
}
.he-yi-duan-wo[open] summary::after {
  transform: rotate(90deg);
}
.he-yi-duan-wo-hint {
  font-size: 0.74rem;
  letter-spacing: 0.08em;
  color: var(--text-muted);
  font-style: italic;
}
.evidence-chain {
  list-style: none;
  margin: 0;
  padding: 0 26px 16px;
  display: grid;
  gap: 14px;
}
.evidence-chain li {
  padding: 10px 0 12px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}
.evidence-chain li:last-child { border-bottom: none; }
.evidence-chain h5 {
  margin: 0 0 4px;
  font-family: var(--serif);
  font-size: 0.94rem;
  letter-spacing: 0.18em;
  color: rgba(212, 168, 83, 0.86);
}
.evidence-chain p {
  margin: 0;
  font-size: 0.84rem;
  line-height: 1.7;
  color: var(--text-soft);
}
.evidence-disclaimer {
  margin: 0 26px 18px;
  padding-top: 10px;
  border-top: 1px dashed rgba(255, 255, 255, 0.08);
  font-size: 0.7rem;
  font-style: italic;
  color: var(--text-muted);
  letter-spacing: 0.04em;
}

/* P6.Product-1 ⑦ 以此身可问（推荐问法 prompt 区） */
.yi-ci-shen-ke-wen {
  padding: 22px 26px 24px;
  border-radius: 16px;
  border: 1px solid rgba(212, 168, 83, 0.22);
  background: rgba(14, 18, 26, 0.55);
  display: grid;
  gap: 12px;
}
.yi-ci-shen-ke-wen[hidden] { display: none; }
.prompt-leadin {
  margin: 0;
  font-size: 0.84rem;
  color: var(--text-muted);
  letter-spacing: 0.04em;
  font-style: italic;
}
.prompt-chips {
  list-style: none;
  margin: 4px 0 0;
  padding: 0;
  display: grid;
  gap: 10px;
}
.prompt-chip button {
  width: 100%;
  text-align: left;
  padding: 14px 18px;
  border-radius: 12px;
  border: 1px solid rgba(212, 168, 83, 0.32);
  background: rgba(212, 168, 83, 0.04);
  color: rgba(228, 214, 178, 0.94);
  font-family: var(--serif);
  font-size: 0.96rem;
  letter-spacing: 0.06em;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s;
}
.prompt-chip button::before {
  content: "「 ";
  color: rgba(212, 168, 83, 0.6);
}
.prompt-chip button::after {
  content: " 」";
  color: rgba(212, 168, 83, 0.6);
}
.prompt-chip button:hover {
  background: rgba(212, 168, 83, 0.1);
  border-color: rgba(212, 168, 83, 0.5);
}

/* 四相长卷"用处"行 */
.si-xiang-juan-sign .sign-use {
  margin: 10px 0 0;
  padding-top: 10px;
  border-top: 1px dashed rgba(255, 255, 255, 0.08);
  font-size: 0.74rem;
  line-height: 1.6;
  color: var(--text-soft);
  text-align: left;
  letter-spacing: 0.02em;
}
.si-xiang-juan-sign .sign-use-label {
  color: rgba(212, 168, 83, 0.7);
  font-family: var(--serif);
  letter-spacing: 0.18em;
  margin-right: 4px;
}

@media (max-width: 720px) {
  .ci-shen-suoyi-suoji { grid-template-columns: 1fr; }
}

/* ───────────────────────────────────────────────────────
 * ② 风骨片（.feng-gu-pian） — 雷达 + 一句人话
 * ─────────────────────────────────────────────────────── */
.feng-gu-pian {
  padding: 22px 28px 20px;
  border-radius: 18px;
  border: 1px solid rgba(212, 168, 83, 0.24);
  background: rgba(14, 18, 26, 0.55);
  display: grid;
  gap: 14px;
}
.feng-gu-pian-grid {
  display: grid;
  grid-template-columns: 150px 1fr;
  gap: 24px;
  align-items: center;
}
.feng-gu-pian-radar svg {
  width: 140px;
  height: 140px;
  opacity: 0.92;
}
.feng-gu-pian-text {
  display: grid;
  gap: 8px;
}
.feng-gu-pian-headline {
  margin: 0;
  font-family: var(--serif);
  font-size: 1.12rem;
  letter-spacing: 0.18em;
  color: rgba(212, 168, 83, 0.92);
}
/* P6.Product-1.1：古韵主导（识别度），白话补刀（命中感） */
.feng-gu-pian-guyun {
  margin: 4px 0 0;
  font-family: var(--serif);
  font-size: 1.04rem;
  line-height: 1.7;
  letter-spacing: 0.1em;
  color: rgba(228, 214, 178, 0.94);
}
.feng-gu-pian-guyun:empty { display: none; }
.feng-gu-pian-gloss {
  margin: 2px 0 0;
  color: var(--text-muted);
  font-size: 0.86rem;
  line-height: 1.7;
  letter-spacing: 0.04em;
  max-width: 60ch;
  font-style: italic;
}
.feng-gu-pian-gloss:empty { display: none; }

/* ───────────────────────────────────────────────────────
 * ③ 四相长卷（.si-xiang-juan） — 4 张签
 * ─────────────────────────────────────────────────────── */
.si-xiang-juan {
  display: grid;
  gap: 14px;
}
.si-xiang-juan-signs {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
}
.si-xiang-juan-sign {
  position: relative;
  display: grid;
  gap: 8px;
  padding: 18px 16px 20px;
  border-radius: 12px;
  border: 1px solid rgba(212, 168, 83, 0.32);
  background:
    linear-gradient(180deg, rgba(212, 168, 83, 0.04), transparent 80%),
    rgba(14, 18, 26, 0.65);
  text-align: center;
  min-height: 220px;
}
.si-xiang-juan-sign::before,
.si-xiang-juan-sign::after {
  /* 签头 / 签底两条横线，强调"签纸"质感 */
  content: "";
  position: absolute;
  left: 18px;
  right: 18px;
  height: 1px;
  background: rgba(212, 168, 83, 0.22);
}
.si-xiang-juan-sign::before { top: 8px; }
.si-xiang-juan-sign::after  { bottom: 8px; }
.si-xiang-juan-sign .sign-head {
  display: grid;
  gap: 2px;
}
.si-xiang-juan-sign .sign-volume {
  font-family: var(--serif);
  font-size: 0.96rem;
  letter-spacing: 0.32em;
  color: rgba(212, 168, 83, 0.86);
}
.si-xiang-juan-sign .sign-volume-hint {
  font-size: 0.62rem;
  letter-spacing: 0.18em;
  color: rgba(212, 168, 83, 0.46);
}
.si-xiang-juan-sign .sign-name {
  margin: 8px 0 0;
  font-family: var(--serif);
  font-size: 1.5rem;
  letter-spacing: 0.16em;
  font-weight: 600;
  color: rgba(232, 218, 188, 0.96);
}
.si-xiang-juan-sign .sign-dynasty {
  margin: 0;
  font-size: 0.72rem;
  letter-spacing: 0.14em;
  color: var(--text-muted);
}
.si-xiang-juan-sign .sign-quwei {
  margin: 0;
  font-size: 0.84rem;
  letter-spacing: 0.06em;
  color: rgba(212, 168, 83, 0.78);
  font-family: var(--serif);
}
.si-xiang-juan-sign .sign-signature {
  margin: 6px 0 0;
  padding: 0;
  font-family: var(--serif);
  font-style: italic;
  font-size: 0.78rem;
  line-height: 1.6;
  color: var(--text-soft);
}
/* void 态：签面骨架仍在，仅人名空，副文字给原因 */
.si-xiang-juan-sign[data-state="void"] {
  border-style: dashed;
  opacity: 0.78;
}
.si-xiang-juan-sign[data-state="void"] .sign-name {
  color: var(--text-muted);
  letter-spacing: 0.36em;
  font-size: 1.1rem;
}
.si-xiang-juan-sign[data-state="pending"] .sign-name {
  color: var(--text-muted);
  letter-spacing: 0.36em;
}

/* 移动端折叠 */
@media (max-width: 820px) {
  .zhu-panti {
    grid-template-columns: 1fr;
    padding: 24px 22px 22px;
    gap: 18px;
  }
  .zhu-panti-seal { width: 130px; height: 130px; justify-self: center; }
  .zhu-panti-seal-char { font-size: 3.6rem; }
  .zhu-panti-xiang .xiang-name { font-size: 2rem; }
  .feng-gu-pian-grid { grid-template-columns: 110px 1fr; gap: 14px; }
  .feng-gu-pian-radar svg { width: 100px; height: 100px; }
  .si-xiang-juan-signs { grid-template-columns: repeat(2, 1fr); }
}

/* P6.0.4 · Plan 6 §2.1：未登录态 — 示例判帖 + 单一 CTA「立你之身」 */
.destiny-empty-state {
  display: grid;
  justify-items: center;
  gap: 22px;
  padding: 48px 24px 36px;
  text-align: center;
}
.destiny-empty-state[hidden] { display: none; }

.destiny-example-tablet {
  position: relative;
  width: min(560px, 100%);
  display: grid;
  gap: 12px;
  padding: 32px 36px 28px;
  border-radius: 22px;
  border: 1px solid rgba(212, 168, 83, 0.32);
  background:
    radial-gradient(ellipse at top, rgba(212, 168, 83, 0.05), transparent 65%),
    linear-gradient(180deg, rgba(255, 255, 255, 0.02), transparent 80%),
    rgba(14, 18, 26, 0.7);
  box-shadow: 0 18px 48px rgba(0, 0, 0, 0.42);
  /* 半透明锁感：不可点击不可交互的"示例" */
  opacity: 0.78;
  filter: saturate(0.85);
  pointer-events: none;
}

.destiny-example-lock {
  position: absolute;
  top: 14px;
  right: 18px;
  font-size: 1.4rem;
  color: rgba(212, 168, 83, 0.55);
  pointer-events: none;
}

.destiny-example-head {
  display: grid;
  gap: 4px;
}

.destiny-example-head .eyebrow {
  margin: 0;
  font-size: 0.74rem;
  letter-spacing: 0.32em;
  color: rgba(212, 168, 83, 0.7);
}

.destiny-example-yahao {
  margin: 0;
  font-family: var(--serif);
  font-size: 1.6rem;
  letter-spacing: 0.04em;
  color: var(--text);
}

.destiny-example-bazi {
  margin: 0;
  color: var(--text-soft);
  letter-spacing: 0.18em;
  font-size: 0.92rem;
}

.destiny-example-xiang {
  margin: 4px 0 0;
  font-family: var(--serif);
  color: rgba(212, 168, 83, 0.92);
  font-size: 1rem;
  letter-spacing: 0.06em;
}

.destiny-example-panyu {
  margin: 0;
  color: var(--text-soft);
  font-style: italic;
  line-height: 1.7;
}

.destiny-example-incarnations {
  list-style: none;
  margin: 8px 0 0;
  padding: 14px 0 0;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  border-top: 1px dashed rgba(255, 255, 255, 0.08);
}

.destiny-example-incarnations li {
  display: grid;
  gap: 4px;
  text-align: center;
}

.destiny-example-incarnations small {
  color: var(--text-muted);
  font-size: 0.7rem;
  letter-spacing: 0.18em;
}

.destiny-example-incarnations strong {
  font-family: var(--serif);
  color: var(--text);
  font-size: 0.96rem;
}

.destiny-example-incarnations em.void {
  font-style: normal;
  font-family: var(--serif);
  color: var(--text-muted);
  font-size: 0.84rem;
  opacity: 0.7;
}

.destiny-empty-tagline {
  margin: 0;
  font-family: var(--serif);
  color: var(--text-soft);
  font-size: 1rem;
  letter-spacing: 0.08em;
}

#destiny-establish-self-cta {
  margin-top: 4px;
}

@media (max-width: 720px) {
  .destiny-example-tablet { padding: 24px 22px 22px; }
  .destiny-example-incarnations { grid-template-columns: repeat(2, 1fr); }
}

/* P6.1B.4 · viral 入口桥 + 测试 modal + 结果分享卡 */
.archetype-viral-bridge {
  margin-top: 20px;
  display: grid;
  gap: 8px;
  justify-items: center;
}

.archetype-viral-bridge-or {
  margin: 4px 0 0;
  color: var(--text-muted);
  font-size: 0.78rem;
  letter-spacing: 0.32em;
}

.archetype-open-test {
  font-family: var(--serif);
  font-size: 0.96rem;
  letter-spacing: 0.06em;
  padding: 10px 22px;
  border: 1px dashed rgba(212, 168, 83, 0.5);
  background: transparent;
  color: rgba(212, 168, 83, 0.95);
  border-radius: 999px;
  cursor: pointer;
  transition: border-color 180ms ease, color 180ms ease;
}
.archetype-open-test:hover {
  border-color: rgba(212, 168, 83, 0.95);
  color: #efd590;
}

.archetype-viral-bridge-hint {
  margin: 0;
  color: var(--text-muted);
  font-size: 0.78rem;
}

/* ─── modal ─── */
.archetype-test-modal {
  position: fixed;
  inset: 0;
  z-index: 80;
  background: rgba(8, 10, 14, 0.78);
  backdrop-filter: blur(8px);
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 24px;
  overflow-y: auto;
}
.archetype-test-modal[hidden] { display: none; }

.archetype-test-shell {
  position: relative;
  width: min(720px, 100%);
  background: rgba(14, 18, 26, 0.96);
  border: 1px solid rgba(212, 168, 83, 0.42);
  border-radius: 24px;
  padding: 32px 36px 28px;
  box-shadow: 0 24px 72px rgba(0, 0, 0, 0.62);
  display: grid;
  gap: 22px;
}

.archetype-test-head {
  display: grid;
  gap: 4px;
  padding-right: 32px;
}
.archetype-test-head .eyebrow {
  margin: 0;
  letter-spacing: 0.32em;
  color: rgba(212, 168, 83, 0.7);
  font-size: 0.74rem;
}
.archetype-test-title {
  margin: 0;
  font-family: var(--serif);
  font-size: 1.5rem;
  letter-spacing: 0.04em;
  color: var(--text);
}

.archetype-test-close {
  position: absolute;
  top: 18px;
  right: 22px;
  background: transparent;
  border: none;
  color: var(--text-muted);
  font-size: 1.6rem;
  cursor: pointer;
  line-height: 1;
}
.archetype-test-close:hover { color: var(--text); }

.archetype-test-form .field-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px;
  margin-bottom: 12px;
}

/* ─── 结果分享卡（1080×1920 友好比例 — 9:16 纵卡风格） ─── */
.archetype-test-result {
  margin-top: 8px;
  padding: 24px 26px 22px;
  border-radius: 18px;
  border: 1px solid rgba(212, 168, 83, 0.38);
  background:
    radial-gradient(ellipse at top, rgba(212, 168, 83, 0.08), transparent 65%),
    rgba(8, 10, 14, 0.92);
  display: grid;
  gap: 14px;
}
.archetype-test-result[hidden] { display: none; }

.archetype-result-yahao {
  margin: 0;
  font-family: var(--serif);
  font-size: 1.4rem;
  letter-spacing: 0.06em;
  color: rgba(212, 168, 83, 0.95);
  text-align: center;
}

.archetype-result-xiang {
  margin: 0;
  text-align: center;
  font-family: var(--serif);
  font-size: 1.7rem;
  color: var(--text);
  letter-spacing: 0.08em;
}

.archetype-result-candidates {
  margin: 0;
  text-align: center;
  color: var(--text-soft);
  font-style: italic;
  line-height: 1.7;
}

.archetype-result-panyu {
  margin: 4px 0 0;
  padding: 12px 0 0;
  border-top: 1px dashed rgba(255, 255, 255, 0.08);
  font-family: var(--serif);
  font-style: italic;
  text-align: center;
  line-height: 1.7;
  color: var(--text-soft);
}

.archetype-result-incarnations {
  list-style: none;
  margin: 8px 0 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
}

.archetype-result-card {
  position: relative;
  display: grid;
  grid-template-columns: minmax(118px, 0.72fr) minmax(0, 1.25fr);
  gap: 20px;
  align-items: end;
  margin: 2px 0 24px;
  padding: 14px;
  border: 1px solid rgba(184, 155, 94, 0.28);
  border-radius: 20px;
  overflow: hidden;
  background:
    radial-gradient(circle at 18% 12%, rgba(227, 190, 108, 0.14), transparent 44%),
    rgba(10, 12, 19, 0.82);
}

.archetype-result-card img {
  width: 100%;
  aspect-ratio: 9 / 16;
  object-fit: cover;
  border-radius: 14px;
  box-shadow: 0 18px 42px rgba(0, 0, 0, 0.42);
}

.archetype-result-card figcaption {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 0 8px 8px 0;
}

.archetype-result-card figcaption small {
  color: var(--gold, #e2b154);
  font-size: 0.68rem;
  letter-spacing: 0.24em;
}

.archetype-result-card figcaption strong {
  color: var(--ivory, #f0eadf);
  font-family: var(--display-font, "Songti SC", serif);
  font-size: clamp(1.35rem, 3vw, 2.25rem);
  line-height: 1.45;
  font-weight: 500;
}

.archetype-result-card figcaption span {
  color: var(--muted, #9ba4bc);
  line-height: 1.85;
}

@media (max-width: 620px) {
  .archetype-result-card {
    grid-template-columns: 108px minmax(0, 1fr);
    gap: 14px;
    padding: 10px;
  }
}
.archetype-result-incarnations li {
  display: grid;
  gap: 4px;
  text-align: center;
  padding: 12px 6px;
  border-radius: 10px;
  border: 1px dashed rgba(212, 168, 83, 0.28);
  background: rgba(255, 255, 255, 0.02);
}
.archetype-result-incarnations small {
  color: var(--text-muted);
  font-size: 0.7rem;
  letter-spacing: 0.2em;
}
.archetype-result-incarnations strong {
  font-family: var(--serif);
  color: var(--text);
  font-size: 0.96rem;
}
.archetype-result-incarnations em.pending,
.archetype-result-incarnations em.void {
  font-style: normal;
  font-family: var(--serif);
  color: var(--text-muted);
  font-size: 0.84rem;
  letter-spacing: 0.18em;
}

/* P6.2.7 · 4 相 化身额外信息（朝代 / 气味 / 美学 tag） */
.archetype-result-incarnations .archetype-dynasty {
  display: block;
  font-family: var(--serif);
  font-size: 0.7rem;
  letter-spacing: 0.14em;
  color: var(--text-muted);
  margin-top: 2px;
}
.archetype-result-incarnations .archetype-quwei,
.archetype-result-incarnations .archetype-aesthetic {
  display: block;
  font-size: 0.7rem;
  letter-spacing: 0.06em;
  color: rgba(212, 168, 83, 0.78);
  margin-top: 4px;
  line-height: 1.4;
  font-style: italic;
}

.archetype-result-cta {
  margin-top: 8px;
  display: grid;
  gap: 8px;
  justify-items: center;
}

.archetype-result-tagline {
  color: var(--text-muted);
  font-size: 0.86rem;
  letter-spacing: 0.06em;
}

@media (max-width: 720px) {
  .archetype-test-shell { padding: 24px 22px 22px; }
  .archetype-test-form .field-grid { grid-template-columns: 1fr; }
  .archetype-result-incarnations { grid-template-columns: repeat(2, 1fr); }
}

/* P6.3A · 编年（章回）panel */
.chronicle-panel {
  margin-top: 24px;
}
.chronicle-controls {
  display: flex;
  gap: 8px;
  align-items: center;
}
.chronicle-controls input[type="number"] {
  width: 88px;
  padding: 6px 10px;
  border: 1px solid rgba(212, 168, 83, 0.32);
  border-radius: 8px;
  background: rgba(0, 0, 0, 0.32);
  color: var(--text);
  font-family: var(--serif);
}
.chronicle-body {
  display: grid;
  gap: 14px;
  margin-top: 14px;
}
.chronicle-season-group {
  display: grid;
  gap: 8px;
}
.chronicle-season-head {
  margin: 6px 0 0;
  color: rgba(212, 168, 83, 0.85);
  font-family: var(--serif);
  letter-spacing: 0.18em;
  font-size: 0.92rem;
}
.chronicle-chapter {
  padding: 14px 16px;
  border-radius: 12px;
  border: 1px dashed rgba(255, 255, 255, 0.06);
  background: rgba(0, 0, 0, 0.18);
}
.chronicle-chapter.is-empty { opacity: 0.42; }
.chronicle-chapter-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 12px;
  margin-bottom: 6px;
}
.chronicle-chapter-name {
  font-family: var(--serif);
  font-size: 1.05rem;
  letter-spacing: 0.06em;
  color: var(--text);
}
.chronicle-chapter-phenomena {
  color: var(--text-muted);
  font-size: 0.78rem;
  letter-spacing: 0.1em;
}
.chronicle-chapter-list {
  list-style: none;
  margin: 6px 0 0;
  padding: 0;
  display: grid;
  gap: 4px;
}
.chronicle-chapter-list li {
  color: var(--text-soft);
  font-size: 0.84rem;
  display: flex;
  gap: 10px;
}
.chronicle-chapter-list .meta {
  color: var(--text-muted);
  letter-spacing: 0.08em;
  min-width: 96px;
}
.chronicle-season-end-marker {
  margin-top: 4px;
  font-style: italic;
  font-size: 0.78rem;
  color: rgba(212, 168, 83, 0.7);
}

/* P6.1.5.6 · 五问校影 modal 区块 */
.songyun-block {
  margin-top: 18px;
  padding: 22px 24px 18px;
  border-radius: 16px;
  border: 1px dashed rgba(212, 168, 83, 0.34);
  background: rgba(255, 255, 255, 0.02);
  display: grid;
  gap: 16px;
}
.songyun-block[hidden] { display: none; }

.songyun-head { display: grid; gap: 4px; }
.songyun-head .eyebrow {
  margin: 0;
  letter-spacing: 0.32em;
  color: rgba(212, 168, 83, 0.72);
  font-size: 0.74rem;
}
.songyun-title {
  margin: 0;
  font-family: var(--serif);
  font-size: 1.1rem;
  letter-spacing: 0.05em;
  color: var(--text);
}
.songyun-hint {
  margin: 0;
  color: var(--text-muted);
  font-size: 0.86rem;
  line-height: 1.6;
}

.songyun-form { display: grid; gap: 18px; }

.songyun-q {
  display: grid;
  gap: 10px;
  padding: 14px 16px;
  border-radius: 12px;
  background: rgba(0, 0, 0, 0.25);
  border: 1px solid rgba(255, 255, 255, 0.04);
}
.songyun-q-scene {
  margin: 0;
  font-family: var(--serif);
  color: var(--text-soft);
  font-size: 0.96rem;
  letter-spacing: 0.04em;
  line-height: 1.6;
}
.songyun-q-prompt {
  margin: 0;
  color: var(--text-muted);
  font-size: 0.84rem;
}
.songyun-options {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
}
.songyun-options label {
  cursor: pointer;
  text-align: center;
  padding: 10px 6px;
  border-radius: 8px;
  border: 1px solid rgba(212, 168, 83, 0.2);
  background: rgba(255, 255, 255, 0.02);
  font-family: var(--serif);
  color: var(--text-soft);
  font-size: 0.92rem;
  transition: border-color 160ms, background 160ms, color 160ms;
}
.songyun-options label:hover {
  border-color: rgba(212, 168, 83, 0.55);
  color: var(--text);
}
.songyun-options input[type="radio"] {
  display: none;
}
.songyun-options input[type="radio"]:checked + .songyun-opt-label {
  /* placeholder for checked styling via attribute selector below */
}
.songyun-options label.is-selected {
  background: rgba(212, 168, 83, 0.12);
  border-color: rgba(212, 168, 83, 0.85);
  color: rgba(212, 168, 83, 0.95);
}

@media (max-width: 720px) {
  .songyun-options { grid-template-columns: repeat(2, 1fr); }
}

.destiny-summary-card {
  display: grid;
  gap: 10px;
  padding: 20px 22px;
  border-radius: 22px;
  border: 1px solid rgba(255,255,255,0.06);
  background:
    linear-gradient(180deg, rgba(255,255,255,0.03), transparent 75%),
    rgba(14,18,26,0.88);
  min-height: 172px;
}

.destiny-summary-card span {
  color: var(--text-muted);
  font-size: 0.78rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.destiny-summary-card strong {
  font-family: var(--serif);
  font-size: 1.3rem;
  line-height: 1.4;
  color: var(--text);
}

.destiny-summary-card p {
  margin: 0;
  color: var(--text-soft);
  line-height: 1.7;
}

p.copy-gloss,
.copy-gloss {
  margin: 0;
  color: var(--text-muted);
  font-size: 0.86rem;
  line-height: 1.68;
  letter-spacing: 0.01em;
}

.destiny-summary-card p.copy-gloss,
.story-summary-card p.copy-gloss,
.story-overview-card p.copy-gloss,
.display-chapter-copy .copy-gloss,
.star-section-head .copy-gloss {
  color: rgba(160, 168, 184, 0.78);
  font-size: 0.84rem;
  line-height: 1.66;
}

.destiny-line-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
}

.destiny-last-viewed {
  min-height: 1.4em;
  margin: -4px 0 2px;
  color: rgba(235,232,225,0.58);
}

.destiny-line-card {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: flex-start;
  gap: 18px;
  width: 100%;
  padding: 24px;
  border-radius: 24px;
  border: 1px solid rgba(255,255,255,0.08);
  background:
    linear-gradient(145deg, rgba(255,255,255,0.04), transparent 42%),
    rgba(13,17,24,0.9);
  text-align: left;
  color: var(--text);
  transition: transform 240ms var(--ease-out), border-color 240ms ease, box-shadow 240ms ease, background 240ms ease;
}

.destiny-line-card:hover {
  transform: translateY(-4px);
  border-color: rgba(212,168,83,0.3);
  box-shadow: 0 20px 40px rgba(0,0,0,0.26);
  background:
    linear-gradient(145deg, rgba(212,168,83,0.08), transparent 42%),
    rgba(13,17,24,0.92);
}

.destiny-line-card.is-coming-soon {
  opacity: 0.88;
}

.destiny-line-card.is-coming-soon:hover {
  transform: translateY(-2px);
  border-color: rgba(255,255,255,0.08);
  box-shadow: none;
}

.destiny-line-icon {
  display: grid;
  place-items: center;
  width: 86px;
  height: 86px;
  border-radius: 999px;
  background:
    radial-gradient(circle at center, rgba(255,255,255,0.015), transparent 72%),
    rgba(9,13,21,0.92);
  border: 1px solid rgba(255,255,255,0.06);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.02);
  overflow: hidden;
}

.destiny-line-icon img {
  display: block;
  width: 68px;
  height: 68px;
  object-fit: contain;
  filter: drop-shadow(0 0 18px rgba(212,168,83,0.08));
}

.destiny-line-copy {
  display: grid;
  gap: 8px;
}

.destiny-line-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
}

.destiny-line-kicker {
  margin: 0;
  color: var(--text-muted);
  font-size: 0.8rem;
  letter-spacing: 0.08em;
}

.destiny-line-copy h3 {
  margin: 0;
  font-size: 1.3rem;
}

.destiny-line-meta {
  display: grid;
  gap: 6px;
}

.story-status-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 68px;
  padding: 5px 10px;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,0.08);
  background: rgba(255,255,255,0.03);
  color: var(--text-muted);
  font-size: 0.72rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.story-status-badge.open {
  border-color: rgba(212,168,83,0.26);
  background: rgba(212,168,83,0.08);
  color: var(--gold);
}

.destiny-line-copy p {
  margin: 0;
  color: var(--text-soft);
  line-height: 1.7;
}

/* ─── 12. Storyline ─── */
.story-panel {
  background:
    radial-gradient(circle at top right, rgba(212,168,83,0.07), transparent 26%),
    linear-gradient(180deg, rgba(255,255,255,0.025), transparent 34%),
    var(--bg-surface);
}

.story-shell {
  display: grid;
  gap: 28px;
}

.story-hero {
  display: grid;
  gap: 12px;
}

.story-title-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
}

.story-title-copy {
  display: grid;
  gap: 8px;
}

.story-kicker {
  margin: 0;
  color: var(--text-muted);
  font-size: 0.86rem;
  letter-spacing: 0.08em;
}

.story-title {
  margin: 0;
  font-family: var(--serif);
  font-size: clamp(2rem, 3.6vw, 3rem);
  line-height: 1.2;
}

.story-title span {
  display: block;
  margin-top: 6px;
  font-family: var(--sans);
  font-size: 0.92rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  color: var(--text-muted);
}

.story-summary-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
}

.story-summary-card,
.story-overview-card,
.story-evidence-card {
  display: grid;
  gap: 10px;
  padding: 22px;
  border-radius: 22px;
  border: 1px solid rgba(255,255,255,0.06);
  background:
    linear-gradient(180deg, rgba(255,255,255,0.03), transparent 78%),
    rgba(14,18,26,0.9);
}

.story-summary-card span,
.story-overview-card span,
.story-evidence-card span {
  color: var(--text-muted);
  font-size: 0.76rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.story-summary-card strong,
.story-overview-card h3,
.story-evidence-card h3 {
  margin: 0;
  font-family: var(--serif);
  font-size: 1.24rem;
  line-height: 1.4;
  color: var(--text);
}

.story-summary-card p,
.story-overview-card p,
.story-evidence-card p {
  margin: 0;
  color: var(--text-soft);
  line-height: 1.75;
}

.story-card-lead {
  display: block;
  margin: 0;
  font-family: var(--serif);
  font-size: 1.02rem;
  line-height: 1.5;
  color: var(--text);
}

.story-overview-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
}

.story-retention-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 14px;
}

.destiny-retention-grid {
  margin-top: -4px;
}

.story-retention-card {
  display: grid;
  gap: 10px;
  padding: 18px 20px;
  border-radius: 20px;
  border: 1px solid rgba(255,255,255,0.06);
  background:
    linear-gradient(180deg, rgba(255,255,255,0.03), transparent 78%),
    rgba(14,18,26,0.88);
}

.story-retention-card span {
  color: var(--text-muted);
  font-size: 0.74rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.story-retention-card strong {
  font-family: var(--serif);
  font-size: 1.15rem;
  line-height: 1.45;
  color: var(--text);
}

.story-retention-card p {
  margin: 0;
  color: var(--text-soft);
  line-height: 1.72;
}

/* ─── 12A. Destiny Symbolic Visual Kit ─── */
.destiny-symbolic-stack {
  display: grid;
  gap: 18px;
}

.fos-visual-shell {
  color: var(--text);
  background:
    radial-gradient(circle at 18% 12%, rgba(120,199,232,0.08), transparent 32%),
    radial-gradient(circle at 78% 18%, rgba(212,168,83,0.07), transparent 28%),
    linear-gradient(180deg, rgba(14,18,27,0.96), rgba(7,10,15,0.98));
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 30px;
  box-shadow: 0 30px 90px rgba(0,0,0,0.42);
  overflow: hidden;
}

.fos-destiny-mirror {
  position: relative;
  display: grid;
  grid-template-columns: minmax(280px, 1fr) 340px;
  gap: 28px;
  min-height: 270px;
  padding: 34px;
}

/* P6.0.3 · Plan 6 §2.2：砍掉右侧星球后的精简版 — 单列居左铺满 */
.fos-destiny-mirror.fos-destiny-mirror--lean {
  grid-template-columns: 1fr;
  min-height: 200px;
}

.fos-destiny-mirror::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(235,232,225,0.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(235,232,225,0.028) 1px, transparent 1px);
  background-size: 48px 48px;
  mask-image: radial-gradient(circle at 50% 50%, #000, transparent 78%);
  pointer-events: none;
}

.fos-destiny-mirror.is-medium {
  border-color: rgba(212,168,83,0.2);
}

.fos-destiny-mirror.is-strong {
  border-color: rgba(212,168,83,0.34);
  box-shadow: 0 34px 100px rgba(0,0,0,0.48), 0 0 0 1px rgba(212,168,83,0.08);
}

.fos-destiny-mirror.phase-opening .fos-mirror-visual img {
  opacity: 0.72;
}

.fos-destiny-mirror.phase-threshold .fos-mirror-visual {
  background:
    linear-gradient(90deg, rgba(7,10,16,0.22), transparent 44%),
    radial-gradient(circle at 50% 48%, rgba(235,232,225,0.05), transparent 44%),
    radial-gradient(circle at 50% 50%, rgba(212,168,83,0.05), transparent 63%);
}

.fos-destiny-mirror.phase-trial .fos-mirror-visual img {
  filter: drop-shadow(0 20px 46px rgba(0,0,0,0.42)) drop-shadow(0 0 10px rgba(212,168,83,0.16)) contrast(1.08);
}

.fos-destiny-mirror.phase-turning .fos-mirror-visual::after,
.fos-destiny-mirror.phase-manifesting .fos-mirror-visual::after {
  opacity: 0.84;
}

.fos-destiny-mirror.phase-manifesting .fos-mirror-visual img {
  transform: scale(1.035);
}

.fos-mirror-copy,
.fos-mirror-visual {
  position: relative;
  z-index: 1;
}

.fos-kicker {
  color: var(--gold);
  font-size: 0.76rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
}

.fos-mirror-title {
  margin: 18px 0 14px;
  font-family: var(--serif);
  font-size: clamp(2.4rem, 5vw, 4.6rem);
  line-height: 1.08;
  letter-spacing: 0.04em;
  color: rgba(235,232,225,0.92);
}

.fos-mirror-oracle {
  max-width: 720px;
  margin: 0;
  color: rgba(235,232,225,0.68);
  font-size: 1.05rem;
  line-height: 1.9;
}

.fos-mirror-tags {
  margin-top: 20px;
}

.fos-mirror-visual {
  position: relative;
  display: grid;
  place-items: center;
  min-height: 230px;
  border-radius: 28px;
  background:
    radial-gradient(circle at 50% 48%, rgba(235,232,225,0.05), transparent 44%),
    radial-gradient(circle at 50% 50%, rgba(212,168,83,0.05), transparent 63%);
}

.fos-mirror-visual::after {
  content: "";
  position: absolute;
  inset: 16%;
  border-radius: 999px;
  border: 1px solid rgba(212,168,83,0.18);
  opacity: 0;
  pointer-events: none;
  transition: opacity 900ms ease;
}

.fos-mirror-visual img {
  width: min(280px, 100%);
  height: auto;
  filter: drop-shadow(0 20px 46px rgba(0,0,0,0.42));
  opacity: 0.9;
  transition: opacity 700ms ease, transform 900ms ease, filter 900ms ease;
}

.fos-focus-card {
  display: grid;
  grid-template-columns: 86px minmax(0, 1fr) auto;
  align-items: center;
  gap: 24px;
  padding: 24px 26px;
  border-radius: 24px;
  background:
    linear-gradient(135deg, rgba(235,232,225,0.075), rgba(120,199,232,0.035)),
    rgba(13,18,25,0.82);
  border: 1px solid rgba(212,168,83,0.22);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.018), 0 18px 48px rgba(0,0,0,0.24);
}

.fos-question-card {
  border-color: rgba(120,199,232,0.16);
  background:
    linear-gradient(135deg, rgba(120,199,232,0.06), rgba(212,168,83,0.035)),
    rgba(12,17,24,0.84);
}

.fos-focus-icon {
  width: 86px;
  height: 86px;
  border-radius: 999px;
  background:
    radial-gradient(circle at 45% 42%, rgba(212,168,83,0.14), transparent 54%),
    #070b11;
  display: grid;
  place-items: center;
  border: 1px solid rgba(212,168,83,0.22);
}

.fos-focus-icon img {
  width: 60px;
  height: 60px;
}

.fos-focus-copy {
  display: grid;
  gap: 8px;
}

.fos-focus-copy small,
.fos-mini-card small,
.fos-line-card small,
.fos-repeat-head small {
  display: block;
  color: var(--text-muted);
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.fos-focus-copy strong {
  display: block;
  font-family: var(--serif);
  font-size: clamp(1.35rem, 2.4vw, 1.75rem);
  line-height: 1.35;
  color: rgba(235,232,225,0.9);
}

.fos-focus-copy p {
  margin: 0;
  color: rgba(235,232,225,0.66);
  line-height: 1.75;
}

.fos-question-input {
  width: 100%;
  min-height: 88px;
  resize: vertical;
  border-radius: 18px;
  border: 1px solid rgba(255,255,255,0.08);
  background: rgba(5,8,13,0.62);
  color: var(--text);
  padding: 14px 16px;
  font: inherit;
  line-height: 1.7;
  outline: none;
}

.fos-question-input:focus {
  border-color: rgba(212,168,83,0.32);
  box-shadow: 0 0 0 3px rgba(212,168,83,0.08);
}

.fos-mini-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
}

.fos-mini-card {
  min-height: 166px;
  padding: 20px;
  border-radius: 22px;
  background: rgba(17,24,33,0.72);
  border: 1px solid rgba(255,255,255,0.08);
  display: grid;
  grid-template-columns: minmax(0, 1fr) 76px;
  gap: 14px;
  align-items: end;
}

.fos-mini-card strong {
  display: block;
  margin-top: 8px;
  font-family: var(--serif);
  font-size: 1.12rem;
  line-height: 1.45;
  color: var(--text);
}

.fos-mini-card p {
  margin: 8px 0 0;
  color: var(--text-soft);
  line-height: 1.65;
  font-size: 0.9rem;
}

.fos-mini-card img {
  width: 76px;
  height: 76px;
  opacity: 0.92;
  align-self: start;
}

.fos-repeat-band {
  padding: 22px 24px;
  border-radius: 24px;
  border: 1px solid rgba(255,255,255,0.08);
  background:
    radial-gradient(circle at 10% 20%, rgba(120,199,232,0.06), transparent 34%),
    rgba(11,16,23,0.82);
}

.fos-repeat-head {
  display: grid;
  grid-template-columns: 68px minmax(0, 1fr);
  align-items: center;
  gap: 16px;
}

.fos-repeat-head img {
  width: 68px;
  height: 68px;
}

.fos-repeat-head strong {
  display: block;
  margin-top: 6px;
  font-family: var(--serif);
  font-size: 1.25rem;
  color: var(--text);
}

.fos-repeat-head p {
  margin: 8px 0 0;
  color: var(--text-soft);
  line-height: 1.7;
}

.fos-repeat-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 18px;
}

.fos-repeat-tags span {
  padding: 8px 12px;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,0.1);
  background: rgba(255,255,255,0.035);
  color: rgba(235,232,225,0.68);
  font-size: 0.82rem;
}

.fos-line-grid,
.destiny-line-grid {
  gap: 18px;
}

.fos-line-card.destiny-line-card {
  min-height: 176px;
  display: grid;
  grid-template-columns: 112px minmax(0, 1fr) auto;
  gap: 22px;
  align-items: center;
  padding: 24px;
  border-radius: 28px;
  background:
    radial-gradient(circle at 18% 50%, rgba(212,168,83,0.07), transparent 30%),
    rgba(10,15,22,0.72);
  border: 1px solid rgba(255,255,255,0.1);
}

.fos-line-card.destiny-line-card:hover {
  transform: translateY(-2px);
  border-color: rgba(212,168,83,0.32);
  background:
    radial-gradient(circle at 18% 50%, rgba(212,168,83,0.1), transparent 32%),
    rgba(13,19,27,0.82);
}

.fos-line-emblem {
  width: 108px;
  height: 108px;
  border-radius: 50%;
  background: #060a10;
  display: grid;
  place-items: center;
  border: 1px solid rgba(255,255,255,0.08);
}

.fos-line-emblem img {
  width: 82px;
  height: 82px;
}

.fos-line-card h3 {
  margin: 6px 0 8px;
  font-family: var(--serif);
  font-size: 1.55rem;
  letter-spacing: 0.08em;
  color: var(--text);
}

.fos-line-card p {
  margin: 0;
  color: var(--text-soft);
  line-height: 1.7;
}

.fos-status-pill {
  align-self: start;
  white-space: nowrap;
  padding: 7px 12px;
  border-radius: 999px;
  border: 1px solid rgba(212,168,83,0.26);
  color: var(--gold);
  background: rgba(212,168,83,0.06);
  font-size: 0.76rem;
  letter-spacing: 0.1em;
}

.fos-status-pill.coming-soon {
  border-color: rgba(255,255,255,0.1);
  color: var(--text-muted);
  background: rgba(255,255,255,0.035);
}

.story-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}

.story-actions .ghost-button[disabled],
.story-actions .primary-cta[disabled] {
  opacity: 0.55;
  cursor: not-allowed;
}

.story-detail-body {
  display: grid;
  gap: 18px;
  padding: 4px 2px;
}

.story-detail-body p {
  margin: 0;
  color: rgba(235,232,225,0.84);
  font-size: 1rem;
  line-height: 1.95;
}

.story-detail-meta {
  display: grid;
  gap: 16px;
}

/* ─── 11. Workspace ─── */
.workspace-stage {
  padding: 40px 0 120px;
  scroll-margin-top: 88px;
}

.workspace-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(380px, 0.85fr);
  gap: 24px;
  align-items: start;
}

.workspace-main { min-width: 0; }

.workspace-panel { display: none; }
.workspace-panel.active { display: block; }

.workspace-scene-panel { display: none; }

.form-panel { animation: fade-up 600ms var(--ease-spring) both; }

.panel-header {
  display: grid;
  gap: 6px;
  margin-bottom: 24px;
}

.panel-header h2 { margin: 0; font-size: 1.6rem; }

.panel-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 20px;
}

.panel-head > div { display: grid; gap: 6px; }
.panel-head h2 { margin: 0; font-size: 1.4rem; }

.form-actions {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-top: 20px;
  flex-wrap: wrap;
}

.action-cluster {
  display: flex;
  gap: 8px;
}

.dynamic-fields { display: grid; gap: 4px; }

.field-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
  margin-top: 4px;
}

.inline-form { display: grid; gap: 4px; }

.compact-summary {
  display: grid;
  gap: 8px;
  margin-bottom: 18px;
}

/* Account shell */
.account-shell {
  display: grid;
  gap: 24px;
}

.account-hero-panel {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1.08fr) minmax(320px, 0.92fr);
  gap: 28px;
  overflow: hidden;
  padding: 32px;
  background:
    radial-gradient(circle at top left, rgba(212,168,83,0.14), transparent 32%),
    radial-gradient(circle at bottom right, rgba(120,199,232,0.1), transparent 34%),
    linear-gradient(180deg, rgba(8,11,19,0.98), rgba(6,9,16,0.96));
  box-shadow: var(--shadow-deep);
}

.account-hero-panel::after {
  content: "";
  position: absolute;
  inset: auto 32px 20px;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.14), transparent);
}

.account-hero-copy {
  display: grid;
  gap: 18px;
  align-content: start;
}

.account-hero-copy h2 {
  margin: 0;
  max-width: 11ch;
  font-size: clamp(2.5rem, 4vw, 4.25rem);
  line-height: 1.08;
}

.account-hero-copy .meta-line {
  margin: 0;
  max-width: 52ch;
  font-size: 1rem;
  line-height: 1.9;
}

.account-status-strip {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}

.account-status-card {
  display: grid;
  gap: 8px;
  padding: 18px;
  border-radius: 20px;
  border: 1px solid rgba(255,255,255,0.08);
  background: rgba(255,255,255,0.028);
  backdrop-filter: blur(12px);
}

.account-status-card span {
  color: var(--text-muted);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.account-status-card strong {
  font-size: 1rem;
  line-height: 1.5;
}

.account-hero-rail {
  display: grid;
  gap: 14px;
  align-content: start;
}

.account-hero-tools {
  display: flex;
  justify-content: flex-end;
}

.account-state-card,
.account-auth-form,
.account-session-shell {
  padding: 22px;
  border-radius: 24px;
  border: 1px solid var(--border);
  background:
    radial-gradient(circle at top left, rgba(212,168,83,0.06), transparent 28%),
    linear-gradient(180deg, rgba(255,255,255,0.038), rgba(255,255,255,0.022));
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.04);
}

.account-state-card {
  color: var(--text-soft);
  line-height: 1.85;
}

.account-auth-form,
.account-session-shell {
  display: grid;
  gap: 16px;
}

.account-auth-head,
.account-session-head {
  display: grid;
  gap: 6px;
}

.account-auth-head h3,
.account-session-head h3 {
  margin: 0;
  font-size: 1.34rem;
}

.account-auth-form label,
.account-settings-form label {
  margin-top: 0;
}

.account-auth-form .field-grid,
.account-settings-form .field-grid {
  margin-top: 0;
}

.account-settings-form {
  gap: 14px;
}

.account-status-line {
  min-height: 22px;
  padding-inline: 4px;
}

.account-stage-grid {
  display: grid;
  grid-template-columns: minmax(280px, 0.82fr) minmax(0, 1.18fr);
  gap: 24px;
  align-items: start;
}

.account-directory-panel {
  position: sticky;
  top: 96px;
  display: grid;
  gap: 18px;
}

.account-profile-list {
  display: grid;
  gap: 14px;
}

.account-profile-list .consultation-item {
  padding: 20px 22px;
  border-radius: 22px;
  background:
    radial-gradient(circle at top left, rgba(120,199,232,0.06), transparent 30%),
    linear-gradient(180deg, rgba(255,255,255,0.035), rgba(255,255,255,0.018));
}

.account-profile-list .consultation-item strong {
  font-size: 1rem;
}

.account-profile-list .consultation-question {
  color: var(--text);
  font-size: 0.92rem;
}

.account-profile-list .consultation-meta {
  color: var(--text-soft);
  font-size: 0.84rem;
  line-height: 1.8;
}

.account-profile-list .chip-row.compact {
  margin-top: 2px;
}

.account-profile-list .empty-mini {
  padding: 28px;
  border-radius: 22px;
  border: 1px dashed rgba(255,255,255,0.1);
  background: rgba(255,255,255,0.018);
}

.account-editor-panel {
  display: grid;
  gap: 22px;
}

.account-editor-banner {
  display: grid;
  grid-template-columns: minmax(0, 0.92fr) minmax(0, 1.08fr);
  gap: 18px;
  padding: 18px 22px;
  border-radius: 22px;
  border: 1px solid rgba(255,255,255,0.08);
  background:
    radial-gradient(circle at top right, rgba(212,168,83,0.08), transparent 28%),
    rgba(255,255,255,0.02);
}

.account-editor-banner span {
  display: block;
  color: var(--text-muted);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.account-editor-banner strong {
  display: block;
  margin-top: 6px;
  font-size: 1.16rem;
}

.account-editor-banner p {
  margin: 0;
  color: var(--text-soft);
  line-height: 1.82;
}

.account-editor-banner-actions {
  display: grid;
  gap: 12px;
  justify-items: start;
}

.account-editor-banner-actions .ghost-button[disabled] {
  opacity: 0.48;
  cursor: not-allowed;
  transform: none;
}

.account-editor-form {
  display: grid;
  gap: 16px;
}

.account-editor-form .field-grid {
  margin-top: 0;
  gap: 16px;
}

.account-editor-form .field-card {
  gap: 10px;
  padding: 22px;
  border-radius: 24px;
  background:
    radial-gradient(circle at top left, rgba(212,168,83,0.06), transparent 26%),
    linear-gradient(180deg, rgba(255,255,255,0.034), rgba(255,255,255,0.02));
}

.account-editor-form .field-card::before {
  top: 18px;
  left: 18px;
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border-radius: 999px;
  border: 1px solid rgba(212,168,83,0.2);
  background: rgba(255,255,255,0.03);
  font-size: 0.8rem;
}

.account-editor-form .field-card > span {
  padding-left: 48px;
  color: var(--text-muted);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.account-editor-form .field-card input,
.account-editor-form .field-card select,
.account-editor-form .field-card textarea,
.account-editor-form .field-card .meta-pill {
  min-height: 56px;
  margin-top: 12px;
  padding-left: 18px;
  border-radius: 16px;
  background: rgba(255,255,255,0.028);
}

.account-editor-form .field-card .meta-pill {
  display: flex;
  justify-content: flex-start;
}

.account-editor-form .checkbox-pill {
  justify-content: flex-start;
}

.account-editor-form .field-card.is-disabled {
  opacity: 0.7;
}

.account-editor-form .field-card.is-disabled input {
  color: var(--text-muted);
}

.account-editor-form .form-actions {
  margin-top: 6px;
}

/* ─── 12. Field Cards (premium input styling) ─── */
.field-card {
  position: relative;
  display: grid;
  gap: 10px;
  margin-top: 0;
  padding: 18px;
  border-radius: 20px;
  border: 1px solid var(--border);
  background:
    radial-gradient(circle at top left, rgba(120,199,232,0.05), transparent 32%),
    var(--bg-surface);
}

.field-card::before {
  content: attr(data-icon);
  position: absolute;
  top: 55px;
  left: 18px;
  color: var(--gold);
  font-size: 1.05rem;
  opacity: 0.85;
}

.field-card > span { padding-left: 36px; }

.field-card input,
.field-card select,
.field-card textarea,
.field-card .meta-pill {
  margin-top: 0;
  padding-left: 50px;
}

.field-card .meta-pill { min-height: 54px; align-items: center; }

.checkbox-pill { display: flex; align-items: center; gap: 12px; }
.checkbox-pill input[type="checkbox"] { width: 18px; height: 18px; margin: 0; accent-color: var(--gold); }

/* ─── 13. Passport Panel ─── */
.passport-panel {
  margin-top: 20px;
  animation: fade-up 500ms var(--ease-spring) both;
}

/* ─── 14. Entry Gate (Full-Page Standalone) ─── */
body.entry-gate-open { overflow: hidden; }
body.entry-gate-open .top-bar,
body.entry-gate-open .bgm-dock { opacity: 0; pointer-events: none; }
body.entry-gate-open .shell {
  display: none;
}

.entry-gate {
  position: fixed;
  inset: 0;
  z-index: 80;
  display: flex;
  flex-direction: column;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity var(--ritual-fade-slow), visibility var(--ritual-fade-slow);
  overflow-y: auto;
}

.entry-gate.active { opacity: 1; visibility: visible; pointer-events: auto; }

.entry-gate-backdrop {
  position: fixed;
  inset: 0;
  z-index: -1;
  background:
    radial-gradient(ellipse 60% 40% at 30% 20%, rgba(120,199,232,0.07), transparent),
    radial-gradient(ellipse 50% 40% at 75% 15%, rgba(212,168,83,0.09), transparent),
    radial-gradient(ellipse 40% 30% at 50% 90%, rgba(200,110,48,0.05), transparent),
    var(--bg);
}

/* Starfield in gate page */
.entry-gate-backdrop::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(1.2px 1.2px at 15% 25%, rgba(255,255,255,0.14), transparent),
    radial-gradient(0.8px 0.8px at 82% 18%, rgba(255,255,255,0.10), transparent),
    radial-gradient(1px 1px at 45% 68%, rgba(255,255,255,0.08), transparent),
    radial-gradient(0.6px 0.6px at 70% 82%, rgba(255,255,255,0.06), transparent);
  pointer-events: none;
}

.entry-gate-panel {
  position: relative;
  width: min(1080px, 100%);
  margin: 0 auto;
  padding: 100px 40px 80px;
  animation: hero-enter 1.2s var(--ease-spring) both;
}

.entry-gate-copy {
  display: grid;
  gap: 16px;
  margin-bottom: 48px;
  text-align: center;
}

.entry-gate-copy h1 {
  margin: 0 auto;
  max-width: 13ch;
  font-size: clamp(2.8rem, 6vw, 5rem);
  line-height: 1.1;
  letter-spacing: -0.02em;
}

.entry-gate-copy .eyebrow {
  letter-spacing: 0.4em;
}

.entry-gate-copy p:last-child {
  max-width: 48ch;
  margin: 0 auto;
  color: var(--text-soft);
  font-size: 1.02rem;
  line-height: 1.7;
}

.entry-gate-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(320px, 0.8fr);
  gap: 24px;
  align-items: start;
}

.entry-gate-column { min-width: 0; }

.entry-gate-card {
  display: grid;
  gap: 16px;
  min-height: 100%;
  padding: 28px 24px;
  border-radius: 24px;
  border: 1px solid var(--border);
  background:
    radial-gradient(circle at top right, rgba(212,168,83,0.06), transparent 40%),
    var(--bg-surface);
  box-shadow: 0 8px 40px rgba(0,0,0,0.18);
}

.entry-gate-card-head {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: 14px;
}

.entry-gate-card-head h3, .entry-gate-guide h3 { margin: 6px 0 0; font-size: 1.3rem; }

.entry-gate-list {
  display: grid;
  gap: 12px;
  max-height: 46vh;
  overflow: auto;
  padding-right: 4px;
}

.entry-profile-card {
  display: grid;
  gap: 10px;
  width: 100%;
  padding: 20px 22px;
  text-align: left;
  border-radius: 20px;
  border: 1px solid var(--border);
  background: rgba(12,16,28,0.85);
  color: var(--text);
  transition: transform 260ms var(--ease-out), border-color 260ms ease, box-shadow 260ms ease;
}

.entry-profile-card:hover {
  transform: translateY(-3px);
  border-color: var(--border-accent);
  box-shadow: 0 8px 28px rgba(0,0,0,0.18);
}

.entry-profile-card.active {
  border-color: rgba(212,168,83,0.45);
  background: linear-gradient(135deg, rgba(212,168,83,0.10), rgba(12,16,28,0.95));
  box-shadow: 0 14px 44px rgba(0,0,0,0.28), inset 0 0 0 1px rgba(212,168,83,0.12);
}

.entry-profile-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.entry-profile-head strong { font-size: 1.06rem; }
.entry-profile-head span, .entry-profile-card p, .entry-profile-card small { color: var(--text-soft); margin: 0; }

.entry-empty-state {
  display: grid;
  gap: 10px;
  padding: 32px;
  border-radius: 20px;
  border: 1px dashed var(--border);
  background: rgba(255,255,255,0.015);
  text-align: center;
}

.entry-empty-state strong { font-size: 1.06rem; }
.entry-empty-state p { margin: 0; color: var(--text-soft); }

.entry-gate-guide .meta-line { margin: 0; }

.entry-gate-actions { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 4px; }
.entry-gate-actions .primary-cta, .entry-gate-actions .ghost-button { min-width: 180px; }

/* ─── 15. Consultation items ─── */
.consultation-item {
  display: grid;
  gap: 8px;
  padding: 18px 20px;
  border-radius: 18px;
  border: 1px solid var(--border);
  background: var(--bg-surface);
  cursor: pointer;
  transition: transform 200ms var(--ease-out), border-color 200ms ease, background 200ms ease;
}

.consultation-item:hover { transform: translateY(-2px); border-color: rgba(255,255,255,0.12); }

.consultation-item.active {
  border-color: var(--border-accent);
  background: linear-gradient(135deg, rgba(212,168,83,0.06), transparent);
}

.consultation-item strong { font-size: 0.96rem; }
.consultation-item span, .consultation-item small, .consultation-item p { color: var(--text-soft); margin: 0; font-size: 0.86rem; }

/* ─── 16. Result Column ─── */
.result-column {
  position: sticky;
  top: 88px;
}

.result-panel { min-height: 400px; }

.result-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 20px;
}

.result-head > div { display: grid; gap: 6px; }
.result-head h2 { margin: 0; font-size: 1.4rem; }

.result-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin-bottom: 20px;
  padding: 4px;
  border-radius: 12px;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.04);
}

.result-tab {
  padding: 8px 16px;
  border-radius: 10px;
  color: var(--text-soft);
  font-weight: 600;
  font-size: 0.82rem;
  letter-spacing: 0.04em;
  transition: color 180ms ease, background 180ms ease;
}

.result-tab:hover { color: var(--text); background: rgba(255,255,255,0.05); }
.result-tab.active { color: var(--gold); background: var(--gold-dim); }

.result-surface { display: none; }
.result-surface.active { display: block; animation: fade-up 400ms var(--ease-spring) both; }

.result-summary {
  margin-bottom: 20px;
}

.result-summary h3 { margin: 8px 0 0; font-size: 1.2rem; }

.summary-card {
  display: grid;
  gap: 8px;
  padding: 20px;
  border-radius: 18px;
  border: 1px solid var(--border);
  background:
    radial-gradient(circle at top left, rgba(212,168,83,0.06), transparent 28%),
    var(--bg-surface);
}

/* ─── 17. Reading Views ─── */
.reading-view { display: grid; gap: 18px; }
.reading-panel { min-height: 200px; }
.reading-panel .panel-head h4 { margin: 0; font-size: 1.2rem; }

.reading-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

.reading-card {
  display: grid;
  gap: 10px;
  padding: 18px;
  border-radius: 18px;
  border: 1px solid var(--border);
  background: var(--bg-surface);
}

.reading-card h5 { margin: 0; font-size: 1.04rem; }
.reading-card .card-body { color: var(--text-soft); font-size: 0.92rem; line-height: 1.82; }
.reading-card .card-body p { margin: 0 0 8px; }

.reading-meta-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin-top: 12px;
}

.metric-card {
  display: grid;
  gap: 6px;
  padding: 14px 16px;
  border-radius: 14px;
  border: 1px solid var(--border);
  background: var(--bg-surface);
}

.metric-card span { color: var(--text-muted); font-size: 0.74rem; letter-spacing: 0.08em; text-transform: uppercase; }
.metric-card strong { font-size: 1rem; }

/* Warning list */
.warning-list { display: grid; gap: 8px; margin-bottom: 14px; }
.warning-item {
  padding: 12px 16px;
  border-radius: 12px;
  border: 1px solid rgba(243,183,90,0.18);
  background: rgba(243,183,90,0.06);
  color: var(--gold);
  font-size: 0.88rem;
}

/* Narration */
.narration-panel { display: grid; gap: 16px; }
.narration-panel .panel-head { margin-bottom: 0; }
.narration-panel .panel-head h4 { margin: 0; font-size: 1.1rem; }
.narration-controls { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.narration-text { color: var(--text-soft); line-height: 1.92; font-size: 0.96rem; }
.narration-text p { margin: 0 0 12px; }

/* Followup */
.followup-panel { display: grid; gap: 14px; }
.followup-panel .panel-head { margin-bottom: 0; }
.followup-panel .panel-head h4 { margin: 0; font-size: 1.1rem; }

.message-list { display: grid; gap: 10px; }
.message-item {
  padding: 14px 16px;
  border-radius: 14px;
  border: 1px solid var(--border);
  background: var(--bg-surface);
  font-size: 0.92rem;
}

.message-item.user { border-color: var(--border-accent); background: rgba(212,168,83,0.04); }
.message-item .card-body { color: var(--text-soft); }
.message-item .card-body p { margin: 0 0 6px; }

/* Evidence & comparison */
.columns {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

.evidence-columns .card-list, .timeline-columns .card-list {
  padding: 18px;
  border-radius: 18px;
  border: 1px solid var(--border);
  background: var(--bg-surface);
}

.card-list { display: grid; gap: 12px; }
.card-list h4 { margin: 0; font-size: 1.1rem; }

pre, #structured-output, #compare-output {
  padding: 16px;
  border-radius: 12px;
  border: 1px solid var(--border);
  background: rgba(6,9,15,0.7);
  color: var(--text-soft);
  font-family: "JetBrains Mono", "SF Mono", monospace;
  font-size: 0.82rem;
  line-height: 1.7;
  overflow-x: auto;
  white-space: pre-wrap;
  word-break: break-word;
}

/* Run items */
.run-item {
  display: grid;
  gap: 6px;
  padding: 14px 16px;
  border-radius: 14px;
  border: 1px solid var(--border);
  background: var(--bg-surface);
  cursor: pointer;
  transition: border-color 180ms ease, background 180ms ease;
}

.run-item:hover { border-color: rgba(255,255,255,0.12); }
.run-item.active { border-color: var(--border-accent); background: rgba(212,168,83,0.04); }
.run-item span { color: var(--text-muted); font-size: 0.82rem; }

/* Report sections */
.report-sections { display: grid; gap: 16px; }


/* ─── 18. Tarot Composer ─── */
.tarot-composer { display: grid; gap: 24px; }

.tarot-stage-shell {
  position: relative;
  overflow: hidden;
  padding: 28px;
  border-radius: 28px;
  border: 1px solid var(--border);
  background:
    radial-gradient(circle at top, rgba(212,168,83,0.06), transparent 24%),
    radial-gradient(circle at bottom left, rgba(120,199,232,0.05), transparent 32%),
    linear-gradient(180deg, rgba(12,16,28,0.98), rgba(7,9,17,0.98));
  box-shadow: var(--shadow-deep);
}

.oracle-stage-shell {
  background:
    radial-gradient(circle at top, rgba(120,199,232,0.06), transparent 22%),
    radial-gradient(circle at bottom right, rgba(212,168,83,0.05), transparent 26%),
    linear-gradient(180deg, rgba(12,16,28,0.98), rgba(7,9,17,0.98));
}

.tarot-stage-shell::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(circle at 50% 20%, rgba(255,255,255,0.03), transparent 20%),
    repeating-linear-gradient(90deg, transparent 0, transparent 42px, rgba(120,199,232,0.03) 43px, transparent 44px);
  opacity: 0.3;
}

.tarot-stage-progress {
  position: relative;
  z-index: 1;
  display: flex;
  justify-content: center;
  gap: 12px;
  margin-bottom: 24px;
}

.progress-dot {
  width: 10px; height: 10px;
  border-radius: 999px;
  background: rgba(255,255,255,0.14);
  transition: transform 400ms ease, background 400ms ease, box-shadow 400ms ease;
}

.progress-dot.active { background: var(--gold); transform: scale(1.24); box-shadow: 0 0 16px rgba(212,168,83,0.4); }
.progress-dot.passed { background: var(--success); box-shadow: 0 0 12px rgba(114,212,165,0.28); }

.tarot-stage-page {
  position: relative;
  z-index: 1;
  min-height: 600px;
  display: grid;
  align-content: start;
  gap: 28px;
  animation: ritual-page-fade 900ms var(--ease-spring) both;
}

.tarot-stage-hero {
  grid-template-columns: minmax(260px, 0.44fr) minmax(0, 1fr);
  align-items: center;
  gap: 32px;
}

.oracle-stage-hero {
  grid-template-columns: minmax(240px, 0.42fr) minmax(0, 1fr);
}

.oracle-stage-figure-wrap { display: grid; align-items: stretch; }
.oracle-stage-figure-wrap .system-figure-card { min-height: 100%; }
.oracle-stage-figure-wrap .system-figure-image-shell,
.oracle-stage-figure-wrap .system-figure-placeholder-shell { min-height: 300px; }

.tarot-stage-figure { position: relative; max-width: 300px; margin: 0 auto; }

.tarot-stage-figure img {
  display: block; width: 100%; aspect-ratio: 4 / 5;
  object-fit: cover; border-radius: 28px;
  border: 1px solid rgba(255,255,255,0.08);
  box-shadow: 0 28px 80px rgba(0,0,0,0.36);
}

.tarot-vision-glow {
  position: absolute; inset: 8%; border-radius: 32px;
  background: radial-gradient(circle, rgba(212,168,83,0.18), transparent 66%);
  filter: blur(20px);
  animation: ritual-breathe 4.2s ease-in-out infinite;
}

.ritual-label {
  color: var(--gold);
  font-size: 0.74rem; font-weight: 800;
  letter-spacing: 0.22em; text-transform: uppercase;
}

.tarot-stage-copy { display: grid; gap: 12px; align-content: start; }

.tarot-stage-copy.centered,
.tarot-invocation-center { justify-items: center; text-align: center; margin: auto; }

.tarot-stage-copy h3,
.tarot-invocation-center h3 {
  margin: 0;
  font-family: var(--serif);
  font-size: clamp(2rem, 4.2vw, 3.6rem);
  line-height: 1.18; font-weight: 600;
}

.tarot-stage-copy p,
.tarot-invocation-center p,
.ritual-copy p,
.guidance-copy p { margin: 0; color: var(--text-soft); font-size: 1rem; line-height: 1.88; }

.tarot-stage-meta { display: flex; flex-wrap: wrap; gap: 10px; }
.oracle-stage-page .tarot-stage-meta .meta-pill { background: rgba(255,255,255,0.04); }

.tarot-stage-invocation { min-height: 600px; place-items: center; }

.tarot-invocation-center {
  display: grid; gap: 18px; max-width: 780px;
  animation: ritual-breathe 4.8s ease-in-out infinite;
}

.tarot-stage-intent,
.tarot-stage-question,
.tarot-stage-draw { gap: 22px; }

.tarot-workbench-page { min-height: auto; }

.tarot-workbench-grid {
  display: grid;
  grid-template-columns: minmax(280px, 0.78fr) minmax(0, 1.22fr) minmax(260px, 0.72fr);
  gap: 18px; align-items: start;
}

.tarot-workbench-main,
.tarot-workbench-sidebar,
.tarot-workbench-intake,
.tarot-workbench-board-panel,
.tarot-workbench-summary-panel,
.tarot-workbench-summary-stack,
.tarot-spread-choices { display: grid; gap: 16px; }

.tarot-workbench-sidebar { position: sticky; top: 18px; }

.tarot-workbench-intake,
.tarot-workbench-board-panel,
.tarot-workbench-summary-panel {
  background:
    radial-gradient(circle at top right, rgba(212,168,83,0.07), transparent 28%),
    radial-gradient(circle at bottom left, rgba(120,199,232,0.07), transparent 24%),
    var(--bg-surface);
}

.tarot-workbench-panel-head {
  display: flex; align-items: start; justify-content: space-between; gap: 16px;
}

.tarot-workbench-panel-head > div { display: grid; gap: 8px; }

.tarot-workbench-divider {
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.1), transparent);
}

.tarot-workbench-intent-row {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px;
}

.tarot-workbench-spread-choices { grid-template-columns: 1fr; }

.tarot-workbench-question-field textarea { min-height: 160px; }

.tarot-workbench-board-copy h3 { font-size: clamp(1.6rem, 3vw, 2.8rem); }

.tarot-workbench-placeholder {
  display: grid; gap: 10px; padding: 18px;
  border-radius: 20px; border: 1px dashed var(--border);
  background: rgba(255,255,255,0.02);
}

.tarot-live-reading-workbench {
  gap: 16px; padding: 0; border: 0; background: transparent;
}

.tarot-live-reading-workbench .reading-meta-grid { margin-top: 0; }

.tarot-workbench-action-row { display: flex; flex-wrap: wrap; gap: 10px; }
.tarot-workbench-action-row .primary-cta { width: 100%; justify-content: center; }

/* ─── 19. Intent / Spread Chips ─── */
.intent-chip-row.large {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px;
}

.intent-chip, .spread-choice, .ghost-chip, .fan-card,
.tarot-reveal-trigger, .ritual-deck { box-shadow: none; }

.intent-chip, .spread-choice {
  display: flex; align-items: center; gap: 14px;
  width: 100%; padding: 16px 18px;
  border-radius: 18px; border: 1px solid var(--border);
  background: linear-gradient(180deg, rgba(255,255,255,0.05), transparent 26%), var(--bg-surface);
  color: var(--text);
}

.intent-chip:hover, .spread-choice:hover, .ghost-chip:hover, .ritual-deck:hover {
  transform: translateY(-2px);
}

.intent-chip.active, .spread-choice.active {
  border-color: var(--border-accent);
  background: radial-gradient(circle at top right, rgba(212,168,83,0.1), transparent 30%), rgba(255,255,255,0.05);
  box-shadow: 0 14px 32px rgba(0,0,0,0.22);
}

.intent-icon, .spread-glyph {
  display: grid; place-items: center;
  width: 44px; height: 44px; border-radius: 14px;
  background: rgba(255,255,255,0.04); border: 1px solid var(--border);
  font-size: 1.3rem;
}

.spread-copy, .guidance-copy { display: grid; gap: 4px; text-align: left; }
.spread-copy small, .tarot-companion small, .guidance-copy small { color: var(--text-muted); }

.ritual-question-field textarea { min-height: 200px; font-size: 1rem; }

.tarot-companion, .tarot-guidance {
  display: flex; align-items: center; justify-content: space-between; gap: 18px; flex-wrap: wrap;
}

.tarot-companion, .tarot-guidance, .tarot-oracle-note, .tarot-side-card {
  padding: 16px; border-radius: 20px; border: 1px solid var(--border);
  background: linear-gradient(180deg, rgba(255,255,255,0.04), transparent 24%), var(--bg-surface);
}

.tarot-companion.subdued { border-style: dashed; }

.ghost-chip {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  padding: 9px 14px; border-radius: 999px;
  background: rgba(255,255,255,0.04); border: 1px solid var(--border);
  color: var(--text); font-weight: 600;
}

.tarot-stage-footer {
  position: relative; z-index: 1;
  display: grid; grid-template-columns: auto auto;
  align-items: center; justify-content: space-between;
  gap: 16px; margin-top: 24px;
}

.tarot-stage-actions { display: flex; justify-content: flex-end; gap: 12px; }

/* ─── 20. Ritual Board ─── */
.tarot-ritual-board {
  position: relative; overflow: hidden;
  display: grid; gap: 20px; padding: 26px;
  border-radius: 26px;
  border: 1px solid rgba(212,168,83,0.12);
  background:
    radial-gradient(circle at top, rgba(212,168,83,0.1), transparent 20%),
    radial-gradient(circle at bottom, rgba(120,199,232,0.08), transparent 26%),
    linear-gradient(180deg, rgba(16,12,16,0.94), rgba(10,15,26,0.98));
}

.tarot-ritual-board::before {
  content: ""; position: absolute; inset: 14px;
  border-radius: 22px; border: 1px solid rgba(255,255,255,0.04);
  background:
    radial-gradient(circle at center, rgba(212,168,83,0.04), transparent 58%),
    repeating-linear-gradient(0deg, transparent 0, transparent 34px, rgba(255,255,255,0.018) 35px),
    repeating-linear-gradient(90deg, transparent 0, transparent 34px, rgba(255,255,255,0.014) 35px);
  pointer-events: none;
}

.ritual-fan-wrap, .ritual-copy { display: grid; gap: 14px; }

.ritual-fan-wrap {
  width: min(940px, 100%);
  min-height: 344px;
  padding: 22px 20px 18px;
  margin: 0 auto;
  border-radius: 28px;
  border: 1px solid rgba(255,255,255,0.05);
  background:
    radial-gradient(circle at top, rgba(120,199,232,0.10), transparent 30%),
    linear-gradient(180deg, rgba(255,255,255,0.03), transparent 24%),
    rgba(10, 14, 24, 0.82);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.015);
}

.ritual-fan { position: relative; width: 100%; height: 100%; min-height: 300px; }

.fan-card {
  position: absolute; left: 50%; bottom: 18px;
  width: var(--fan-width, 118px); aspect-ratio: 5 / 8; padding: 0;
  background: transparent;
  transform: translateX(calc(-50% + var(--fan-shift, 0px))) translateY(var(--fan-drop, 0px)) rotate(var(--fan-tilt, 0deg));
  transform-origin: center bottom;
  transition: transform 320ms var(--ease-out), opacity 360ms ease, filter 320ms ease;
  cursor: pointer;
  touch-action: manipulation;
  will-change: transform;
}

/* P5.17：悬浮收敛——只稍稍上抬 + 一圈金光，保留原 tilt 不旋转，避免"乱飞"感 */
.fan-card.is-hovered,
.fan-card:focus-visible {
  z-index: 18 !important;
  transform: translateX(calc(-50% + var(--fan-shift, 0px))) translateY(calc(var(--fan-drop, 0px) - 14px)) rotate(var(--fan-tilt, 0deg)) scale(1.03);
  filter: drop-shadow(0 0 10px rgba(212,168,83,0.42)) drop-shadow(0 12px 22px rgba(0,0,0,0.3));
  transition: transform 220ms var(--ease-out), filter 220ms ease;
}

.fan-card.just-picked { z-index: 3; animation: fan-picked 900ms var(--ease-out); }
.fan-card.picked { opacity: 0.08; filter: blur(1px); pointer-events: none; }
/* Inner card visuals must not intercept pointer events — clicks/hovers go to the <button> */
.fan-card > * { pointer-events: none; }

.fan-card-back, .ritual-card-back, .ritual-flight-card, .reveal-back {
  position: relative; display: grid; place-items: center;
  width: 100%; height: 100%; border-radius: 20px;
  border: 1px solid rgba(120,199,232,0.16);
  background: radial-gradient(circle at top, rgba(120,199,232,0.12), transparent 28%),
    linear-gradient(180deg, #11203a 0%, #0a1324 100%);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.03), 0 12px 24px rgba(0,0,0,0.26);
  overflow: hidden;
}

.card-back-glow {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 50% 32%, rgba(212,168,83,0.22), transparent 32%),
    radial-gradient(circle at center, rgba(255,255,255,0.04), transparent 68%);
}

.card-back-frame {
  position: absolute;
  inset: 9%;
  border-radius: 18px;
  border: 1px solid rgba(212,168,83,0.16);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.025);
}

.card-back-orbit {
  position: absolute;
  left: 50%;
  top: 50%;
  border-radius: 999px;
  border: 1px solid rgba(212,168,83,0.14);
  transform: translate(-50%, -50%);
}

.card-back-orbit--outer {
  width: 64%;
  height: 64%;
}

.card-back-orbit--inner {
  width: 38%;
  height: 38%;
  opacity: 0.82;
}

.card-back-star {
  position: absolute;
  color: rgba(212,168,83,0.58);
  font-size: 0.82rem;
  line-height: 1;
  text-shadow: 0 0 14px rgba(212,168,83,0.24);
}

.card-back-star--top {
  top: 18%;
  right: 24%;
}

.card-back-star--bottom {
  bottom: 18%;
  left: 24%;
}

.card-back-mark {
  position: relative;
  z-index: 1;
  color: var(--gold);
  font-size: 2rem;
  text-shadow: 0 0 20px rgba(212,168,83,0.22);
}

.fan-actions { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; }

.ritual-table {
  position: relative;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 20px;
}

.ritual-seat {
  position: relative; display: grid; justify-items: center; gap: 12px;
  min-height: 300px; padding: 16px 14px;
  border-radius: 24px; border: 1px solid rgba(255,255,255,0.05);
  background: rgba(255,255,255,0.02);
}

.ritual-seat small { color: var(--text-muted); letter-spacing: 0.1em; text-transform: uppercase; }
.seat-card { width: min(156px, 100%); aspect-ratio: 5 / 8; }
.ritual-seat.just-filled .seat-card, .ritual-seat.is-pulsing .seat-card { animation: ritual-seat-glow 1.1s var(--ease-out); }

.ritual-flight-card {
  position: absolute;
  z-index: 4;
  pointer-events: none;
  width: 96px;
  aspect-ratio: 5 / 8;
  will-change: transform, opacity;
  transform-origin: center center;
  filter: drop-shadow(0 24px 40px rgba(0,0,0,0.28));
}
.ritual-flight-card.is-flying { animation: ritual-flight 1.4s var(--ease-out) forwards; }

.ritual-deck {
  position: relative; width: 170px; min-height: 144px;
  padding: 22px 20px; border-radius: 26px;
  border: 1px solid var(--border); background: radial-gradient(circle at top, rgba(212,168,83,0.08), transparent 30%), rgba(255,255,255,0.03);
  color: var(--text);
}

.deck-stack {
  position: absolute; inset: 26px 40px 32px;
  border-radius: 18px; border: 1px solid var(--border);
  background: rgba(10,16,28,0.92); transform: rotate(-4deg);
}

.deck-stack.second { transform: rotate(4deg); opacity: 0.8; }
.deck-stack.third { transform: rotate(-1deg); opacity: 0.6; }

.deck-core, .deck-caption { position: relative; z-index: 1; }

.deck-core {
  display: grid; place-items: center; width: 60px; height: 60px;
  margin: 0 auto 40px; border-radius: 999px;
  background: radial-gradient(circle, rgba(212,168,83,0.2), transparent 68%);
  font-size: 1.5rem;
}

.deck-caption { display: block; color: var(--text-soft); text-align: center; font-size: 0.9rem; }

/* ─── 21. Tarot Live Reading & Reveal ─── */
.tarot-live-reading {
  display: grid; gap: 20px; padding: 22px;
  border-radius: 26px; border: 1px solid var(--border);
  background: radial-gradient(circle at top left, rgba(120,199,232,0.06), transparent 24%),
    linear-gradient(180deg, rgba(9,13,23,0.98), rgba(7,10,18,0.98));
}

.tarot-reading-stage { display: grid; gap: 20px; }

.tarot-oracle-note {
  display: grid; grid-template-columns: 90px minmax(0, 1fr);
  gap: 16px; align-items: center;
}

.tarot-oracle-note img {
  width: 90px; height: 90px; border-radius: 22px;
  object-fit: cover; border: 1px solid var(--border);
}

.tarot-reveal-layout {
  display: grid; gap: 20px;
  grid-template-columns: minmax(0, 1.24fr) minmax(300px, 0.76fr);
  align-items: start;
}

.tarot-reveal-layout.prelude { grid-template-columns: 1fr; }

.tarot-reveal-grid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 18px;
}

.tarot-reveal-card {
  position: relative; overflow: hidden;
  display: grid; align-content: start; gap: 16px;
  padding: 20px; border-radius: 24px;
  border: 1px solid var(--border);
  background: radial-gradient(circle at top, rgba(212,168,83,0.05), transparent 24%), rgba(255,255,255,0.025);
}

.tarot-reveal-trigger {
  position: relative; display: block;
  width: min(200px, 100%); aspect-ratio: 5 / 8;
  margin: 0 auto; padding: 0; background: transparent; border: 0;
  perspective: 1500px; cursor: default;
}

.tarot-reveal-trigger:disabled { opacity: 1; }
.tarot-reveal-card.ready .tarot-reveal-trigger { cursor: pointer; }
.tarot-reveal-card.ready .reveal-face-shell { animation: ritual-breathe 3.2s ease-in-out infinite; }

.reveal-face-shell, .revealed-card-face {
  position: absolute; inset: 0; border-radius: 20px; overflow: hidden;
}

.reveal-face-shell {
  transform-style: preserve-3d;
  transition: transform 1.1s var(--ease-out);
  will-change: transform;
}

.tarot-reveal-trigger.is-flipping .reveal-face-shell { transform: rotateY(180deg); animation: none; }

.reveal-face {
  position: absolute; inset: 0; backface-visibility: hidden;
  border-radius: 20px; overflow: hidden;
}

.reveal-front { transform: rotateY(180deg); background: rgba(6,8,14,0.98); }

.reveal-front img, .revealed-card-face img {
  display: block; width: 100%; height: 100%; object-fit: contain;
  background: linear-gradient(180deg, rgba(6,9,16,0.98), rgba(4,6,11,0.98));
}

.revealed-card-face {
  position: relative; display: block;
  border: 1px solid var(--border);
  animation: reveal-pulse 900ms ease;
  background: linear-gradient(180deg, rgba(6,9,16,0.98), rgba(4,6,11,0.98));
}

.reveal-hint {
  position: absolute; left: 50%; bottom: 14px; transform: translateX(-50%);
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 108px; padding: 6px 12px;
  border-radius: 999px; border: 1px solid rgba(212,168,83,0.22);
  background: rgba(6,9,16,0.74); color: rgba(255,230,190,0.9);
  font-size: 0.74rem; letter-spacing: 0.08em; text-transform: uppercase;
  box-shadow: 0 8px 24px rgba(0,0,0,0.22);
}

.reveal-hint.waiting { border-color: var(--border); color: var(--text-muted); }

.tarot-reveal-card.ready {
  box-shadow: 0 0 0 1px rgba(212,168,83,0.06), 0 14px 36px rgba(0,0,0,0.16);
}

.tarot-reveal-card.ready .reveal-back { box-shadow: inset 0 0 0 1px rgba(212,168,83,0.16); }

.tarot-reading-copy { display: grid; gap: 10px; }
.tarot-reading-copy h5 { margin: 0; font-size: 1.18rem; line-height: 1.34; }
.tarot-reading-copy .card-body { font-size: 0.96rem; line-height: 1.82; }

.tarot-side-column { display: grid; gap: 16px; }

.tarot-side-card { display: grid; gap: 12px; }

.tarot-side-card.overall {
  background: radial-gradient(circle at top right, rgba(212,168,83,0.1), transparent 30%), var(--bg-surface);
}

.overall-prose { display: grid; gap: 12px; color: var(--text-soft); font-size: 0.98rem; line-height: 1.9; }
.overall-prose p { margin: 0; }

/* ─── 22. Immersive Modes ─── */
.workspace-grid.tarot-immersive { grid-template-columns: minmax(0, 1fr); }
.workspace-grid.tarot-immersive .result-column { display: none; }
.workspace-grid.tarot-immersive .workspace-main { min-width: 0; }

.workspace-grid.bazi-display-immersive { grid-template-columns: minmax(0, 1fr); }
.workspace-grid.bazi-display-immersive .result-column { display: none; }
.workspace-grid.bazi-display-immersive .workspace-main { min-width: 0; }

.workspace-grid.star-display-immersive { grid-template-columns: minmax(0, 1fr); }
.workspace-grid.star-display-immersive .result-column { display: none; }
.workspace-grid.star-display-immersive .workspace-main { min-width: 0; }

.workspace-grid.account-immersive { grid-template-columns: minmax(0, 1fr); }
.workspace-grid.account-immersive .result-column { display: none; }
.workspace-grid.account-immersive .workspace-main { min-width: 0; }

.workspace-grid.destiny-immersive { grid-template-columns: minmax(0, 1fr); }
.workspace-grid.destiny-immersive .result-column { display: none; }
.workspace-grid.destiny-immersive .workspace-main { min-width: 0; }

.workspace-grid.story-immersive { grid-template-columns: minmax(0, 1fr); }
.workspace-grid.story-immersive .result-column { display: none; }
.workspace-grid.story-immersive .workspace-main { min-width: 0; }

.workspace-grid.profile-display-immersive { grid-template-columns: minmax(0, 1fr); }
.workspace-grid.profile-display-immersive .result-column { display: none; }
.workspace-grid.profile-display-immersive .workspace-main { min-width: 0; }

.result-column.forced-hidden { display: none !important; }

#consultation-actions.tarot-status-only { justify-content: flex-end; }
#consultation-actions.tarot-status-only .status-line { margin-left: auto; }
.bazi-question-field textarea { min-height: 180px; }

/* ─── 23. Display / Atlas Pages ─── */
.bazi-stage, .astro-stage { display: grid; gap: 22px; }

.display-atlas-page { gap: 26px; }

.display-atlas-hero {
  position: relative; display: grid;
  grid-template-columns: minmax(0, 1.08fr) minmax(260px, 0.92fr);
  gap: 20px; overflow: hidden; padding: 28px;
  border-radius: 28px; border: 1px solid var(--border);
  background:
    radial-gradient(circle at top left, rgba(212,168,83,0.14), transparent 30%),
    radial-gradient(circle at bottom right, rgba(120,199,232,0.12), transparent 34%),
    linear-gradient(180deg, rgba(7,10,18,0.98), rgba(4,7,14,0.96));
  box-shadow: var(--shadow-deep);
}

.display-atlas-hero::after {
  content: ""; position: absolute; inset: auto 22px 16px; height: 1px;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.12), transparent);
}

.display-atlas-hero.tone-moon {
  background: radial-gradient(circle at top left, rgba(120,199,232,0.18), transparent 30%),
    radial-gradient(circle at bottom right, rgba(212,168,83,0.08), transparent 34%),
    linear-gradient(180deg, rgba(6,10,20,0.98), rgba(4,7,14,0.96));
}

.display-atlas-hero.tone-ember {
  background: radial-gradient(circle at top left, rgba(212,168,83,0.2), transparent 30%),
    radial-gradient(circle at bottom right, rgba(200,110,48,0.1), transparent 34%),
    linear-gradient(180deg, rgba(12,9,18,0.98), rgba(6,7,13,0.96));
}

.display-atlas-copy { display: grid; align-content: start; gap: 12px; }

.display-atlas-copy h4 {
  margin: 0; max-width: 10ch;
  font-size: clamp(2.2rem, 3.8vw, 4.2rem);
  line-height: 0.96; letter-spacing: -0.04em;
}

.display-atlas-copy .card-body { max-width: 54ch; color: var(--text-soft); }

.display-atlas-figure { display: grid; align-items: end; justify-items: end; }
.display-atlas-figure .figure-slot { min-height: 100%; }

.display-mode-tabs { display: inline-flex; flex-wrap: wrap; gap: 8px; margin-top: 4px; }

.display-mode-tab {
  padding: 10px 16px; border-radius: 999px;
  border: 1px solid var(--border); background: rgba(255,255,255,0.04);
  color: var(--text-soft); font: inherit; font-weight: 650; letter-spacing: 0.02em;
  cursor: pointer;
  transition: transform 180ms ease, border-color 180ms ease, background 180ms ease, color 180ms ease, box-shadow 180ms ease;
}

.display-mode-tab:hover { transform: translateY(-1px); border-color: var(--border-accent); color: var(--text); }

.display-mode-tab.active {
  border-color: rgba(212,168,83,0.3);
  background: radial-gradient(circle at top center, rgba(212,168,83,0.14), transparent 75%), rgba(255,255,255,0.05);
  color: var(--text); box-shadow: 0 12px 28px rgba(212,168,83,0.12);
}

.display-metric-strip { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }

.display-metric-card {
  display: grid; gap: 8px; padding: 16px 18px;
  border-radius: 20px; border: 1px solid var(--border);
  background: radial-gradient(circle at top left, rgba(255,255,255,0.06), transparent 40%), var(--bg-surface);
}

.display-metric-card span { color: var(--text-muted); font-size: 0.76rem; letter-spacing: 0.08em; text-transform: uppercase; }
.display-metric-card strong { font-size: 1.04rem; line-height: 1.35; }

.display-story-grid { display: grid; gap: 14px; grid-template-columns: repeat(4, minmax(0, 1fr)); }

.display-panel-grid { display: grid; gap: 14px; grid-template-columns: repeat(4, minmax(0, 1fr)); }

.display-panel-card {
  position: relative; overflow: hidden; display: grid; gap: 10px;
  min-height: 220px; padding: 20px;
  border-radius: 24px; border: 1px solid var(--border);
  background: radial-gradient(circle at top right, rgba(255,255,255,0.06), transparent 34%),
    linear-gradient(180deg, rgba(255,255,255,0.04), transparent 24%), rgba(255,255,255,0.025);
  box-shadow: var(--shadow-md);
}

.display-panel-grid.tone-moon .display-panel-card {
  background: radial-gradient(circle at top right, rgba(120,199,232,0.12), transparent 34%),
    linear-gradient(180deg, rgba(255,255,255,0.04), transparent 24%), rgba(255,255,255,0.025);
}

.display-panel-grid.tone-ember .display-panel-card {
  background: radial-gradient(circle at top right, rgba(212,168,83,0.14), transparent 34%),
    linear-gradient(180deg, rgba(255,255,255,0.04), transparent 24%), rgba(255,255,255,0.025);
}

.display-panel-card::after {
  content: ""; position: absolute; inset: auto 16px 16px; height: 1px;
  background: linear-gradient(90deg, rgba(255,255,255,0.06), transparent);
}

.display-panel-icon {
  display: grid; place-items: center; width: 50px; height: 50px;
  border-radius: 16px;
  background: radial-gradient(circle at top, rgba(255,255,255,0.14), transparent 30%), rgba(212,168,83,0.1);
  color: var(--gold-strong); font-size: 1.2rem;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.06);
}

.display-panel-grid.tone-moon .display-panel-icon {
  background: radial-gradient(circle at top, rgba(255,255,255,0.14), transparent 30%), var(--moon-dim);
  color: var(--moon);
}

.display-panel-meta { color: var(--text-muted); font-size: 0.88rem; }
.display-panel-card h6 { margin: 0; font-size: 1.2rem; line-height: 1.08; }

.display-story-card {
  position: relative; overflow: hidden; display: grid; gap: 10px;
  min-height: 230px; padding: 20px;
  border-radius: 24px; border: 1px solid var(--border);
  background: radial-gradient(circle at top right, rgba(255,255,255,0.06), transparent 32%),
    linear-gradient(180deg, rgba(255,255,255,0.035), transparent 26%), rgba(255,255,255,0.025);
  box-shadow: var(--shadow-md);
}

.display-story-grid.tone-moon .display-story-card {
  background: radial-gradient(circle at top right, rgba(120,199,232,0.1), transparent 32%),
    linear-gradient(180deg, rgba(255,255,255,0.035), transparent 26%), rgba(255,255,255,0.025);
}

.display-story-grid.tone-ember .display-story-card {
  background: radial-gradient(circle at top right, rgba(212,168,83,0.12), transparent 32%),
    linear-gradient(180deg, rgba(255,255,255,0.035), transparent 26%), rgba(255,255,255,0.025);
}

.display-story-card::after {
  content: ""; position: absolute; inset: auto 16px 16px; height: 1px;
  background: linear-gradient(90deg, rgba(255,255,255,0.06), transparent);
}

.story-icon-orb {
  display: grid; place-items: center; width: 54px; height: 54px;
  border-radius: 18px;
  background: radial-gradient(circle at top, rgba(255,255,255,0.14), transparent 32%), rgba(212,168,83,0.1);
  color: var(--gold-strong); font-size: 1.35rem;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.06);
}

.display-story-grid.tone-moon .story-icon-orb {
  background: radial-gradient(circle at top, rgba(255,255,255,0.14), transparent 32%), var(--moon-dim);
  color: var(--moon);
}

.story-meta { color: var(--text-muted); font-size: 0.88rem; }

.atlas-display-shell { display: grid; gap: 18px; }

.display-chapter { display: grid; gap: 16px; padding-top: 6px; }

.display-chapter-head {
  position: relative; display: flex; align-items: end; justify-content: space-between; gap: 16px;
}

.display-chapter-head::after {
  content: ""; position: absolute; inset: auto 0 -2px; height: 1px;
  background: linear-gradient(90deg, rgba(255,255,255,0.1), transparent 70%);
}

.display-chapter-copy { display: grid; gap: 8px; max-width: 58ch; }
.display-chapter-copy h5 { margin: 0; font-size: clamp(1.6rem, 2.8vw, 2.8rem); line-height: 1; letter-spacing: -0.04em; }
.display-chapter-copy .card-body { color: var(--text-soft); }

.display-chapter-body { display: grid; gap: 16px; }
.display-chapter.accent-wide .display-chapter-body { gap: 18px; }
.display-chapter-panel { margin-top: 0; }
.atlas-display-shell-empty { margin-top: 10px; }

/* Atlas Composer / Profile Ribbon */
.atlas-composer { display: grid; gap: 20px; }
.atlas-profile-ribbon { display: grid; }
.atlas-composer-workbench { gap: 16px; }
.atlas-profile-ribbon-card { gap: 16px; }

.atlas-profile-ribbon-compact .atlas-profile-ribbon-card {
  background: radial-gradient(circle at top right, rgba(120,199,232,0.08), transparent 28%),
    linear-gradient(180deg, rgba(255,255,255,0.04), transparent 24%), rgba(255,255,255,0.025);
}

.atlas-profile-ribbon-copy { display: grid; gap: 10px; }
.atlas-profile-ribbon-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }

.atlas-awaiting-stage {
  gap: 14px; min-height: 260px; align-content: center; justify-items: start;
}

.atlas-awaiting-stage h4 { margin: 0; font-size: clamp(1.6rem, 2.8vw, 2.6rem); line-height: 1.02; letter-spacing: -0.03em; }

.atlas-scene-shell {
  position: relative; overflow: hidden;
  display: grid; grid-template-columns: minmax(0, 1.06fr) minmax(260px, 0.94fr);
  gap: 20px; align-items: center; padding: 26px;
  border-radius: 26px; border: 1px solid var(--border);
  background: radial-gradient(circle at top right, rgba(212,168,83,0.08), transparent 22%),
    radial-gradient(circle at bottom left, rgba(120,199,232,0.07), transparent 28%),
    linear-gradient(180deg, rgba(10,14,26,0.98), rgba(7,9,17,0.98));
}

.atlas-scene-shell::after {
  content: ""; position: absolute; inset: 14px;
  border-radius: 20px; border: 1px solid rgba(255,255,255,0.03);
  pointer-events: none; opacity: 0.5;
}

.atlas-scene-copy { display: grid; gap: 10px; min-width: 0; }
.atlas-scene-copy h3 { margin: 0; font-family: var(--serif); font-size: clamp(1.8rem, 3.2vw, 2.8rem); line-height: 1.18; }
.atlas-scene-copy p { margin: 0; color: var(--text-soft); line-height: 1.84; }

.atlas-scene-figure { display: grid; }
.atlas-scene-figure .system-figure-slot { min-height: 240px; }

.atlas-config-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.atlas-footer { align-items: center; }

/* ─── 24. Star Wheel / Bazi / Astro ─── */
.deepseek-card { display: grid; gap: 12px; box-shadow: var(--shadow-md); }

.deepseek-card, .bazi-board, .star-wheel-card, .moon-calendar-panel {
  background: radial-gradient(circle at top right, rgba(212,168,83,0.07), transparent 26%),
    radial-gradient(circle at bottom left, rgba(120,199,232,0.06), transparent 24%), var(--bg-surface);
}

.deepseek-card.loading .card-body, .deepseek-card.error .card-body { color: var(--text-soft); }
.deepseek-meta { color: var(--text-muted); font-size: 0.82rem; letter-spacing: 0.06em; text-transform: uppercase; }

.astro-hero-grid, .astro-stage-grid, .astro-detail-grid, .cycle-panel { display: grid; gap: 18px; }
.astro-hero-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }

.star-workbench-shell { display: grid; gap: 20px; }

.star-workbench-grid {
  display: grid; grid-template-columns: minmax(360px, 0.98fr) minmax(0, 1.02fr);
  gap: 18px; align-items: start;
}

.star-workbench-sidebar { display: grid; gap: 16px; }

.star-workbench-chart-panel, .star-workbench-summary-card,
.star-workbench-theme-panel, .star-workbench-question-panel {
  background: radial-gradient(circle at top right, rgba(212,168,83,0.07), transparent 26%),
    radial-gradient(circle at bottom left, rgba(120,199,232,0.07), transparent 24%), var(--bg-surface);
}

.star-workbench-chart-panel { display: grid; gap: 16px; }

.star-workbench-chart-head, .star-workbench-summary-head,
.star-workbench-theme-head, .star-workbench-question-head {
  display: flex; align-items: start; justify-content: space-between; gap: 14px;
}

.star-workbench-chart-head, .star-workbench-summary-head { flex-wrap: wrap; }
.star-workbench-summary-head .display-mode-tabs { margin-top: 0; }

.star-workbench-chart-panel .star-wheel-shell { min-height: 0; padding: 8px 0 0; }
.star-workbench-chart-panel .star-wheel { width: min(100%, 380px); }

.star-workbench-kpi-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.star-workbench-kpi { text-align: left; }
.star-workbench-kpi small { display: block; margin-top: 8px; color: var(--text-soft); line-height: 1.6; }

.star-workbench-theme-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }

.star-workbench-theme-card {
  display: grid; gap: 10px; min-height: 170px; padding: 16px;
  border-radius: 20px; border: 1px solid var(--border);
  background: radial-gradient(circle at top right, rgba(120,199,232,0.08), transparent 34%),
    linear-gradient(180deg, rgba(255,255,255,0.04), transparent 24%), rgba(255,255,255,0.025);
}

.star-workbench-theme-card h5 { margin: 0; font-size: 1rem; line-height: 1.35; }
.star-workbench-question-panel { display: grid; gap: 14px; }
.star-workbench-question-row { display: flex; flex-wrap: wrap; gap: 10px; }
.star-workbench-question-chip { justify-content: flex-start; text-align: left; }
.star-workbench-deepseek { display: grid; }
.star-workbench-deepseek .deepseek-card { min-height: 0; }

.astro-stage-grid { grid-template-columns: minmax(0, 1.35fr) minmax(300px, 0.65fr); }
.astro-detail-grid, .cycle-panel { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.astro-sidebar { align-content: start; }

/* Bazi table */
.bazi-table-wrap {
  overflow-x: auto; border-radius: 20px;
  border: 1px solid var(--border); background: rgba(6,9,16,0.5);
}

.bazi-matrix { width: 100%; min-width: 760px; border-collapse: collapse; }

.bazi-matrix th, .bazi-matrix td {
  padding: 12px 14px; border-bottom: 1px solid rgba(255,255,255,0.04);
  text-align: left; vertical-align: top;
}

.bazi-matrix th { color: var(--gold); font-size: 0.84rem; font-weight: 700; letter-spacing: 0.08em; }
.bazi-matrix td { color: var(--text-soft); line-height: 1.7; }

.cycle-strip { display: grid; gap: 10px; margin-top: 12px; }

.cycle-card {
  display: grid; gap: 6px; padding: 14px 16px;
  border-radius: 18px; border: 1px solid var(--border); background: rgba(255,255,255,0.025);
}

.cycle-card span { color: var(--text-muted); font-size: 0.74rem; letter-spacing: 0.08em; text-transform: uppercase; }
.cycle-card strong { font-size: 1.04rem; }
.cycle-card small { color: var(--text-soft); }

/* Bazi atlas */
.bazi-atlas-panel { display: grid; gap: 18px; margin-top: 20px; }
.bazi-atlas-shell { display: grid; gap: 20px; }

.star-atlas-panel { display: grid; gap: 18px; margin-top: 20px; }
.star-atlas-shell { display: grid; gap: 20px; }

.star-time-tab-bar {
  display: flex;
  gap: 10px;
  padding: 8px;
  border: 1px solid rgba(212, 168, 83, 0.18);
  border-radius: 12px;
  background: linear-gradient(180deg, rgba(10, 14, 23, 0.9), rgba(7, 10, 18, 0.9));
  overflow-x: auto;
}

.star-time-tab {
  flex: 1 1 auto;
  min-width: 96px;
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  padding: 10px 14px;
  border: 1px solid transparent;
  border-radius: 8px;
  background: transparent;
  color: var(--text-soft, rgba(230, 222, 206, 0.62));
  font-family: var(--font-serif, "Noto Serif SC", serif);
  font-size: 15px;
  letter-spacing: 0.08em;
  cursor: pointer;
  transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}

.star-time-tab small {
  font-size: 10.5px;
  letter-spacing: 0.16em;
  color: var(--text-soft, rgba(230, 222, 206, 0.45));
}

.star-time-tab:hover {
  color: var(--text-main, rgba(230, 222, 206, 0.9));
}

.star-time-tab.is-active {
  border-color: rgba(212, 168, 83, 0.55);
  background: rgba(212, 168, 83, 0.08);
  color: var(--text-main, rgba(230, 222, 206, 0.95));
}

.star-time-tab.is-upcoming:not(.is-active) {
  color: var(--text-soft, rgba(230, 222, 206, 0.42));
}

.star-time-tab-stub {
  display: grid;
  gap: 12px;
  padding: 48px 32px;
  min-height: 260px;
  justify-items: start;
  align-content: center;
  background: linear-gradient(180deg, rgba(10, 14, 23, 0.92), rgba(7, 10, 18, 0.92));
}

.star-time-tab-stub h4 {
  margin: 0;
  font-family: var(--font-serif, "Noto Serif SC", serif);
  font-size: clamp(1.6rem, 2.5vw, 2rem);
  letter-spacing: 0.02em;
}

.star-time-tab-stub .ghost-button {
  justify-self: start;
}

.star-atlas-placeholder {
  display: grid;
  gap: 12px;
  min-height: 220px;
  align-content: center;
  background:
    radial-gradient(circle at top left, rgba(120,199,232,0.12), transparent 30%),
    radial-gradient(circle at bottom right, rgba(212,168,83,0.08), transparent 34%),
    linear-gradient(180deg, rgba(8,11,19,0.98), rgba(6,9,16,0.96));
  box-shadow: var(--shadow-md);
}

.star-atlas-placeholder h3 {
  margin: 0;
  font-size: clamp(1.9rem, 3vw, 2.8rem);
  line-height: 1.08;
}

.star-atlas-hero {
  align-items: stretch;
}

.star-atlas-summary {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.star-observatory-panel,
.star-detail-hero,
.star-identity-band,
.star-support-panel {
  overflow: hidden;
  border-radius: 32px;
  border: 1px solid rgba(255,255,255,0.08);
  background:
    radial-gradient(circle at top left, rgba(120,199,232,0.12), transparent 24%),
    radial-gradient(circle at bottom right, rgba(212,168,83,0.08), transparent 30%),
    linear-gradient(180deg, rgba(7,10,18,0.98), rgba(4,7,14,0.98));
  box-shadow: var(--shadow-deep);
}

.star-observatory-shell,
.star-identity-band,
.star-support-panel,
.star-detail-hero {
  display: grid;
  gap: 20px;
}

.star-observatory-panel {
  padding: 28px;
}

.star-observatory-crest {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.star-observatory-kicker {
  color: var(--text-muted);
  font-size: 0.84rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.star-observatory-heading,
.star-detail-hero-head {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(300px, 0.9fr);
  gap: 18px;
  align-items: start;
}

.star-observatory-copy,
.star-detail-hero-copy {
  display: grid;
  gap: 12px;
  min-width: 0;
}

.star-observatory-copy h4,
.star-detail-hero-copy h4 {
  margin: 0;
  max-width: 13ch;
  font-size: clamp(2.2rem, 3.4vw, 4rem);
  line-height: 0.96;
  letter-spacing: -0.045em;
}

.star-observatory-copy h5 {
  margin: 0;
  font-size: clamp(1.5rem, 2.2vw, 2.2rem);
  line-height: 1.02;
  letter-spacing: -0.04em;
}

.star-observatory-chipbar {
  justify-content: flex-end;
  align-content: start;
}

.star-observatory-stage {
  display: grid;
  grid-template-columns: minmax(0, 1.16fr) minmax(280px, 0.84fr);
  gap: 18px;
  align-items: start;
}

.star-observatory-wheel-frame {
  position: relative;
  display: grid;
  gap: 18px;
  min-height: 100%;
  padding: 24px;
  border-radius: 30px;
  border: 1px solid rgba(255,255,255,0.07);
  background:
    radial-gradient(circle at top, rgba(255,255,255,0.06), transparent 24%),
    radial-gradient(circle at center, rgba(120,199,232,0.07), transparent 40%),
    linear-gradient(180deg, rgba(9,13,23,0.96), rgba(5,8,15,0.98));
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.025);
}

.star-observatory-wheel-frame::after {
  content: "";
  position: absolute;
  inset: 14px;
  border-radius: 24px;
  border: 1px solid rgba(255,255,255,0.035);
  pointer-events: none;
}

.star-observatory-wheel-copy {
  display: grid;
  gap: 8px;
  max-width: 46ch;
}

.star-observatory-wheel-copy h5 {
  margin: 0;
  font-size: clamp(1.4rem, 2vw, 2rem);
  line-height: 1.06;
}

.star-observatory-sidecar {
  display: grid;
  gap: 12px;
}

.star-observatory-note {
  position: relative;
  display: grid;
  gap: 10px;
  min-height: 184px;
  padding: 18px;
  border-radius: 24px;
  border: 1px solid rgba(255,255,255,0.08);
  background:
    radial-gradient(circle at top right, rgba(120,199,232,0.1), transparent 34%),
    linear-gradient(180deg, rgba(255,255,255,0.04), transparent 22%),
    rgba(255,255,255,0.025);
}

.star-observatory-note::after {
  content: "";
  position: absolute;
  inset: auto 18px 18px;
  height: 1px;
  background: linear-gradient(90deg, rgba(255,255,255,0.08), transparent);
}

.star-observatory-note h6 {
  margin: 0;
  font-size: 1.18rem;
  line-height: 1.1;
}

.star-observatory-note-icon {
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border-radius: 14px;
  background:
    radial-gradient(circle at top, rgba(255,255,255,0.12), transparent 32%),
    rgba(120,199,232,0.12);
  border: 1px solid rgba(120,199,232,0.2);
  color: var(--moon);
  font-size: 1.05rem;
  box-shadow: 0 12px 26px rgba(0,0,0,0.18);
}

.star-observatory-balance {
  display: grid;
  gap: 16px;
  padding-top: 18px;
  border-top: 1px solid rgba(255,255,255,0.08);
}

.star-observatory-balance-head,
.star-section-head {
  display: flex;
  flex-wrap: wrap;
  align-items: end;
  justify-content: space-between;
  gap: 14px;
}

.star-observatory-balance-head h5,
.star-section-head h5 {
  margin: 0;
  font-size: clamp(1.35rem, 2vw, 1.9rem);
  line-height: 1.06;
  letter-spacing: -0.03em;
}

.star-observatory-balance .balance-donut-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
}

.star-observatory-balance .balance-donut-section {
  padding: 18px;
  border-radius: 26px;
  border: 1px solid rgba(255,255,255,0.07);
  background:
    radial-gradient(circle at top right, rgba(255,255,255,0.05), transparent 30%),
    linear-gradient(180deg, rgba(255,255,255,0.035), transparent 20%),
    rgba(255,255,255,0.02);
}

.star-observatory-balance .balance-donut {
  width: min(100%, 280px);
}

.star-identity-band {
  padding: 24px;
}

.star-identity-band .identity-card {
  min-height: 210px;
  padding: 18px;
  border-radius: 22px;
  background:
    radial-gradient(circle at top right, rgba(120,199,232,0.1), transparent 34%),
    linear-gradient(180deg, rgba(255,255,255,0.035), transparent 26%),
    rgba(255,255,255,0.024);
}

.star-identity-band .identity-icon {
  width: 46px;
  height: 46px;
  border-radius: 16px;
  background: rgba(120,199,232,0.12);
  color: var(--moon);
}

.star-identity-band .pillar-core strong {
  font-size: 1.22rem;
}

.star-support-grid {
  display: grid;
  grid-template-columns: minmax(0, 0.92fr) minmax(0, 1.08fr);
  gap: 18px;
}

.star-support-panel {
  padding: 24px;
}

.star-support-focus .focus-card-grid,
.star-support-focus .house-grid {
  margin-top: 0;
}

.star-support-translation .star-workbench-theme-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.star-support-translation .star-workbench-theme-card {
  min-height: 188px;
  border-radius: 22px;
  padding: 18px;
  background:
    radial-gradient(circle at top right, rgba(120,199,232,0.08), transparent 32%),
    linear-gradient(180deg, rgba(255,255,255,0.04), transparent 24%),
    rgba(255,255,255,0.024);
}

.star-time-layer-panel,
.star-career-evidence-panel {
  position: relative;
  overflow: hidden;
  display: grid;
  gap: 18px;
  padding: 24px;
  border-radius: 30px;
  border: 1px solid rgba(255,255,255,0.08);
  background:
    radial-gradient(circle at 14% 0%, rgba(120,199,232,0.14), transparent 26%),
    radial-gradient(circle at 82% 16%, rgba(212,168,83,0.11), transparent 24%),
    linear-gradient(180deg, rgba(8,12,22,0.98), rgba(4,7,14,0.98));
  box-shadow: var(--shadow-deep);
}

.star-time-layer-panel::before,
.star-career-evidence-panel::before {
  content: "";
  position: absolute;
  inset: 14px;
  border-radius: 24px;
  border: 1px solid rgba(255,255,255,0.035);
  pointer-events: none;
}

.star-atlas-boundary-pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 38px;
  padding: 0 14px;
  border-radius: 999px;
  border: 1px solid rgba(120,199,232,0.22);
  color: var(--moon);
  background: rgba(120,199,232,0.08);
  font-size: 0.74rem;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  white-space: nowrap;
}

.star-time-layer-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) repeat(3, minmax(0, 0.96fr));
  gap: 14px;
}

.star-time-card,
.star-career-evidence-card {
  position: relative;
  display: grid;
  gap: 10px;
  min-height: 210px;
  padding: 18px;
  border-radius: 24px;
  border: 1px solid rgba(255,255,255,0.075);
  background:
    linear-gradient(180deg, rgba(255,255,255,0.045), transparent 28%),
    rgba(255,255,255,0.025);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.02);
}

.star-time-card:first-child {
  background:
    radial-gradient(circle at top left, rgba(120,199,232,0.16), transparent 36%),
    linear-gradient(180deg, rgba(255,255,255,0.052), transparent 30%),
    rgba(255,255,255,0.028);
}

.star-time-card h6,
.star-career-evidence-card h6 {
  margin: 0;
  color: var(--text-main);
  font-size: clamp(1.1rem, 1.5vw, 1.38rem);
  line-height: 1.12;
}

.star-time-card > span,
.star-career-evidence-card > span {
  align-self: end;
  width: fit-content;
  padding: 7px 10px;
  border-radius: 999px;
  color: var(--accent);
  background: rgba(212,168,83,0.08);
  border: 1px solid rgba(212,168,83,0.18);
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.08em;
}

.star-time-card-index {
  display: grid;
  place-items: center;
  width: 42px;
  height: 42px;
  border-radius: 14px;
  color: var(--text-main);
  background:
    radial-gradient(circle at top, rgba(255,255,255,0.16), transparent 34%),
    rgba(120,199,232,0.1);
  border: 1px solid rgba(120,199,232,0.2);
  font-family: var(--font-display);
  letter-spacing: 0.02em;
}

.star-career-evidence-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
}

.star-career-evidence-card {
  min-height: 224px;
}

.star-career-evidence-card::after {
  content: "";
  position: absolute;
  inset: auto 18px 18px;
  height: 1px;
  background: linear-gradient(90deg, rgba(212,168,83,0.34), transparent);
  opacity: 0.7;
}

.star-detail-hero {
  padding: 24px 26px;
}

.star-detail-hero-actions {
  display: grid;
  gap: 14px;
  align-content: start;
}

.star-observatory-heading-detail {
  grid-template-columns: 1fr;
}

.star-observatory-panel-detail {
  padding: 28px;
}

.star-detail-observatory {
  display: grid;
  grid-template-columns: minmax(360px, 0.98fr) minmax(0, 1.02fr);
  gap: 18px;
  align-items: start;
}

.star-observatory-wheel-frame-detail {
  min-height: 100%;
}

.star-detail-structure-rail {
  display: grid;
  gap: 16px;
}

.star-observatory-balance-detail {
  margin-top: 4px;
}

.star-detail-grid {
  display: grid;
  grid-template-columns: minmax(340px, 0.94fr) minmax(0, 1.06fr);
  gap: 16px;
}

.star-report-grid,
.star-evidence-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.star-workbench-summary-card {
  display: grid;
  gap: 16px;
}

.star-workbench-theme-panel {
  display: grid;
  gap: 16px;
}

.bazi-atlas-placeholder {
  display: grid;
  gap: 12px;
  min-height: 220px;
  align-content: center;
  background:
    radial-gradient(circle at top left, rgba(212,168,83,0.12), transparent 30%),
    radial-gradient(circle at bottom right, rgba(120,199,232,0.08), transparent 34%),
    linear-gradient(180deg, rgba(8,11,19,0.98), rgba(6,9,16,0.96));
  box-shadow: var(--shadow-md);
}

.bazi-atlas-placeholder h3 {
  margin: 0;
  font-size: clamp(1.9rem, 3vw, 2.8rem);
  line-height: 1.08;
}

.bazi-atlas-hero { align-items: stretch; }

.bazi-reading-map {
  display: grid;
  gap: 14px;
  align-content: start;
}

.bazi-reading-map-card {
  display: grid;
  gap: 14px;
  padding: 20px;
  border-radius: 24px;
  border: 1px solid rgba(255,255,255,0.08);
  background:
    radial-gradient(circle at top left, rgba(255,255,255,0.08), transparent 36%),
    linear-gradient(180deg, rgba(255,255,255,0.04), transparent 24%),
    rgba(255,255,255,0.025);
}

.bazi-reading-map-card h5 {
  margin: 0;
  font-size: clamp(1.35rem, 2vw, 2rem);
  line-height: 1.08;
}

.bazi-reading-map-list {
  display: grid;
  gap: 10px;
}

.bazi-reading-map-item {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr);
  gap: 12px;
  align-items: start;
}

.bazi-reading-map-item span {
  display: inline-grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  border: 1px solid rgba(212,168,83,0.22);
  color: var(--gold);
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.1em;
}

.bazi-reading-map-item p {
  margin: 0;
  color: var(--text-soft);
  line-height: 1.7;
}

.bazi-summary-band {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}

.bazi-judgment-band {
  grid-template-columns: minmax(0, 1.45fr) minmax(240px, 0.82fr) minmax(220px, 0.78fr);
}

.bazi-summary-card {
  display: grid;
  gap: 10px;
  min-height: 170px;
  padding: 20px;
  border-radius: 24px;
  border: 1px solid rgba(255,255,255,0.08);
  background:
    linear-gradient(180deg, rgba(255,255,255,0.04), transparent 22%),
    rgba(9, 12, 20, 0.94);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.03);
}

.bazi-summary-card.tone-ember {
  background:
    radial-gradient(circle at top left, rgba(212,168,83,0.12), transparent 34%),
    linear-gradient(180deg, rgba(255,255,255,0.04), transparent 22%),
    rgba(9, 12, 20, 0.94);
}

.bazi-summary-card.tone-moon {
  background:
    radial-gradient(circle at top left, rgba(120,199,232,0.12), transparent 34%),
    linear-gradient(180deg, rgba(255,255,255,0.04), transparent 22%),
    rgba(9, 12, 20, 0.94);
}

.bazi-summary-card.tone-night {
  background:
    radial-gradient(circle at top left, rgba(255,255,255,0.08), transparent 34%),
    linear-gradient(180deg, rgba(255,255,255,0.04), transparent 22%),
    rgba(9, 12, 20, 0.94);
}

.bazi-summary-card h6 {
  margin: 0;
  font-size: 1.42rem;
  line-height: 1.12;
}

.bazi-summary-card p:last-child {
  margin: 0;
  color: var(--text-soft);
  line-height: 1.8;
}

.bazi-judgment-frame {
  display: grid;
  gap: 12px;
}

.bazi-judgment-label {
  width: fit-content;
  padding: 7px 10px;
  border-radius: 999px;
  color: var(--gold);
  background: rgba(212,168,83,0.08);
  border: 1px solid rgba(212,168,83,0.16);
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.1em;
}

.bazi-summary-card .bazi-judgment-verdict {
  margin: 0;
  max-width: 18ch;
  font-size: clamp(1.58rem, 2.4vw, 2.55rem);
  line-height: 1.08;
  letter-spacing: -0.04em;
}

.bazi-judgment-reasons {
  display: grid;
  gap: 8px;
}

.bazi-judgment-reasons p {
  margin: 0;
  color: var(--text-soft);
  line-height: 1.78;
}

.bazi-judgment-gloss {
  max-width: 54ch;
}

.bazi-judgment-action {
  margin: 0;
  padding: 12px 14px;
  border-radius: 16px;
  color: var(--text);
  line-height: 1.72;
  background: rgba(212,168,83,0.075);
  border: 1px solid rgba(212,168,83,0.15);
}

.bazi-judgment-evidence {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.bazi-judgment-evidence span {
  padding: 6px 10px;
  border-radius: 999px;
  color: var(--text-soft);
  background: rgba(255,255,255,0.034);
  border: 1px solid rgba(255,255,255,0.075);
  font-size: 0.72rem;
  font-weight: 720;
}

.bazi-detail-anchor-bar {
  position: sticky;
  top: 84px;
  z-index: 12;
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  padding: 14px;
  border-radius: 22px;
  border: 1px solid rgba(255,255,255,0.08);
  background:
    linear-gradient(180deg, rgba(8,11,18,0.92), rgba(7,10,17,0.92));
  backdrop-filter: blur(14px);
  box-shadow: 0 16px 40px rgba(0,0,0,0.18);
}

.bazi-detail-anchor {
  padding: 10px 14px;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,0.08);
  background: rgba(255,255,255,0.03);
  color: var(--text-soft);
  font: inherit;
  font-weight: 650;
  letter-spacing: 0.02em;
  transition: transform 180ms ease, border-color 180ms ease, background 180ms ease, color 180ms ease;
}

.bazi-detail-anchor:hover {
  transform: translateY(-1px);
  border-color: rgba(212,168,83,0.22);
  background: rgba(212,168,83,0.08);
  color: var(--text);
}

/* Plan 4 §A：tab 选中态，用金箔描边 + 暖底色区分当前面板。 */
.bazi-detail-anchor.active,
.bazi-detail-anchor[aria-selected="true"] {
  border-color: rgba(212,168,83,0.48);
  background: linear-gradient(180deg, rgba(212,168,83,0.18), rgba(212,168,83,0.08));
  color: var(--text);
  box-shadow: inset 0 0 0 1px rgba(212,168,83,0.28), 0 8px 18px rgba(0,0,0,0.22);
}

.bazi-detail-anchor[aria-selected="true"]:hover {
  transform: none;
}

.bazi-pillar-hero-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

.bazi-pillar-hero-card {
  display: grid;
  gap: 10px;
  padding: 18px;
  border-radius: 22px;
  border: 1px solid rgba(255,255,255,0.08);
  background:
    radial-gradient(circle at top, rgba(255,255,255,0.08), transparent 36%),
    linear-gradient(180deg, rgba(255,255,255,0.04), transparent 22%),
    rgba(255,255,255,0.025);
}

.bazi-pillar-slot,
.bazi-pillar-topline {
  color: var(--text-muted);
  font-size: 0.74rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.bazi-pillar-topline { color: var(--gold); }

.bazi-pillar-hero-core {
  display: flex;
  align-items: baseline;
  gap: 10px;
}

.bazi-pillar-meta {
  margin: 0;
  color: var(--text-soft);
  font-size: 0.9rem;
}

.bazi-glyph {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.4em;
  font-family: var(--serif);
  font-weight: 650;
  line-height: 1;
}

.bazi-glyph.primary { font-size: clamp(2.4rem, 4vw, 4rem); }
.bazi-glyph.secondary { font-size: clamp(2rem, 3.2vw, 3.2rem); }
.bazi-glyph.tertiary { font-size: 1.25rem; }

.tone-wood { color: #72d39d; }
.tone-fire { color: #ff8d6b; }
.tone-earth { color: #d0a56c; }
.tone-metal { color: #f0d48a; }
.tone-water { color: #73b8ff; }
.tone-neutral { color: var(--text); }

.bazi-life-panel,
.bazi-element-panel,
.bazi-insight-panel {
  background:
    radial-gradient(circle at top right, rgba(212,168,83,0.08), transparent 24%),
    radial-gradient(circle at bottom left, rgba(120,199,232,0.08), transparent 24%),
    linear-gradient(180deg, rgba(10,14,23,0.96), rgba(7,10,18,0.96));
}

.bazi-ten-god-panel {
  grid-column: 1 / -1;
  display: grid;
  gap: 14px;
  background:
    radial-gradient(circle at top left, rgba(212,168,83,0.08), transparent 28%),
    linear-gradient(180deg, rgba(10,14,23,0.96), rgba(7,10,18,0.96));
}

.bazi-ten-god-head {
  display: grid;
  gap: 6px;
}

.bazi-ten-god-head h6 {
  margin: 0;
  font-family: var(--font-serif, "Noto Serif SC", serif);
  font-size: 18px;
  letter-spacing: 0.02em;
}

.bazi-ten-god-bars {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 8px;
}

.bazi-ten-god-bar-row {
  display: grid;
  grid-template-columns: 64px 1fr 32px;
  align-items: center;
  gap: 12px;
  font-size: 13px;
  color: var(--text-soft, rgba(230, 222, 206, 0.78));
}

.bazi-ten-god-bar-name {
  font-family: var(--font-serif, "Noto Serif SC", serif);
  letter-spacing: 0.08em;
  color: var(--text, #e6dece);
}

.bazi-ten-god-bar {
  height: 6px;
  border-radius: 3px;
  background: rgba(230, 222, 206, 0.08);
  overflow: hidden;
}

.bazi-ten-god-bar-fill {
  display: block;
  height: 100%;
  background: linear-gradient(90deg, rgba(212,168,83,0.72), rgba(212,168,83,0.35));
  border-radius: 3px;
}

.bazi-ten-god-bar-count {
  text-align: right;
  font-variant-numeric: tabular-nums;
  color: var(--text-soft, rgba(230, 222, 206, 0.78));
}

.bazi-reading-cues-panel {
  grid-column: 1 / -1;
  display: grid;
  gap: 14px;
  background:
    radial-gradient(circle at top right, rgba(212,168,83,0.06), transparent 32%),
    linear-gradient(180deg, rgba(10,14,23,0.96), rgba(7,10,18,0.96));
}

.bazi-reading-cues-head {
  display: grid;
  gap: 6px;
}

.bazi-reading-cues-head h6 {
  margin: 0;
  font-family: var(--font-serif, "Noto Serif SC", serif);
  font-size: 18px;
  letter-spacing: 0.02em;
}

.bazi-reading-cues-grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 10px;
}

.bazi-reading-cue-cell {
  display: grid;
  gap: 4px;
  padding: 12px 14px;
  border-radius: 10px;
  background: rgba(230, 222, 206, 0.04);
  border: 1px solid rgba(230, 222, 206, 0.06);
}

.bazi-reading-cue-label {
  font-size: 11px;
  letter-spacing: 0.24em;
  color: var(--text-soft, rgba(230, 222, 206, 0.68));
}

.bazi-reading-cue-value {
  font-family: var(--font-serif, "Noto Serif SC", serif);
  font-size: 18px;
  letter-spacing: 0.04em;
  color: var(--text, #e6dece);
}

.bazi-reading-cue-note {
  margin: 0;
  font-size: 12px;
  line-height: 1.55;
  color: var(--text-soft, rgba(230, 222, 206, 0.62));
}

.bazi-shen-sha-panel {
  grid-column: 1 / -1;
  display: grid;
  gap: 14px;
  background:
    radial-gradient(circle at bottom left, rgba(212,168,83,0.05), transparent 30%),
    linear-gradient(180deg, rgba(10,14,23,0.96), rgba(7,10,18,0.96));
}

.bazi-month-command-panel {
  display: grid;
  gap: 10px;
  padding: 20px 22px;
  border: 1px solid rgba(212, 168, 83, 0.18);
  border-radius: 12px;
  background: linear-gradient(180deg, rgba(10, 14, 23, 0.92), rgba(7, 10, 18, 0.92));
}

.bazi-month-command-panel .card-body {
  font-family: var(--font-serif, "Noto Serif SC", serif);
  font-size: 15.5px;
  line-height: 1.9;
  color: var(--text-main, rgba(230, 222, 206, 0.88));
  letter-spacing: 0.01em;
  margin: 0;
}

.bazi-month-command-panel .evidence-key {
  margin: 0;
  font-size: 11.5px;
  letter-spacing: 0.08em;
  color: var(--text-soft, rgba(230, 222, 206, 0.5));
}

.bazi-shen-sha-head {
  display: grid;
  gap: 6px;
}

.bazi-shen-sha-head h6 {
  margin: 0;
  font-family: var(--font-serif, "Noto Serif SC", serif);
  font-size: 18px;
  letter-spacing: 0.02em;
}

.bazi-shen-sha-group {
  display: grid;
  gap: 8px;
  padding: 12px 14px;
  border-radius: 10px;
  background: rgba(230, 222, 206, 0.04);
  border: 1px solid rgba(230, 222, 206, 0.06);
}

.bazi-shen-sha-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 8px;
}

.bazi-shen-sha-item-head {
  display: flex;
  align-items: baseline;
  gap: 12px;
  flex-wrap: wrap;
}

.bazi-shen-sha-name {
  font-family: var(--font-serif, "Noto Serif SC", serif);
  font-size: 16px;
  letter-spacing: 0.06em;
  color: var(--text, #e6dece);
}

.bazi-shen-sha-pillars {
  font-size: 11px;
  letter-spacing: 0.18em;
  color: var(--text-soft, rgba(230, 222, 206, 0.64));
}

.bazi-shen-sha-blurb {
  margin: 0;
  font-size: 12px;
  line-height: 1.55;
  color: var(--text-soft, rgba(230, 222, 206, 0.72));
}

.bazi-solar-term-strip {
  margin-top: 10px;
}

.bazi-solar-term-strip ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.bazi-solar-term-badge {
  display: grid;
  gap: 2px;
  padding: 6px 10px;
  border-radius: 999px;
  border: 1px solid rgba(230, 222, 206, 0.12);
  background: rgba(230, 222, 206, 0.03);
  min-width: 64px;
  justify-items: center;
}

.bazi-solar-term-badge.bazi-solar-term-current {
  border-color: rgba(212, 168, 83, 0.55);
  background: rgba(212, 168, 83, 0.08);
}

.bazi-solar-term-badge.bazi-solar-term-past {
  opacity: 0.55;
}

.bazi-solar-term-name {
  font-family: var(--font-serif, "Noto Serif SC", serif);
  font-size: 13px;
  letter-spacing: 0.08em;
  color: var(--text, #e6dece);
}

.bazi-solar-term-meta {
  font-size: 10px;
  letter-spacing: 0.14em;
  color: var(--text-soft, rgba(230, 222, 206, 0.58));
}

.bazi-decadal-ribbon-panel {
  display: grid;
  gap: 14px;
  margin: 18px 0;
  padding: 18px 20px;
  border-radius: 12px;
  background:
    radial-gradient(circle at top left, rgba(120,199,232,0.06), transparent 30%),
    linear-gradient(180deg, rgba(10,14,23,0.92), rgba(7,10,18,0.94));
  border: 1px solid rgba(230, 222, 206, 0.06);
}

.bazi-decadal-ribbon-head {
  display: grid;
  gap: 6px;
}

.bazi-decadal-ribbon-head h6 {
  margin: 0;
  font-family: var(--font-serif, "Noto Serif SC", serif);
  font-size: 18px;
  letter-spacing: 0.02em;
}

.bazi-decadal-ribbon {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(84px, 1fr);
  gap: 6px;
  overflow-x: auto;
}

.bazi-decadal-ribbon-seg {
  position: relative;
  display: grid;
  gap: 4px;
  padding: 10px 12px;
  border-radius: 8px;
  border: 1px solid rgba(230, 222, 206, 0.08);
  background: rgba(230, 222, 206, 0.03);
  color: var(--text-soft, rgba(230, 222, 206, 0.6));
  font-size: 12px;
  text-align: center;
}

.bazi-decadal-ribbon-seg.state-past {
  opacity: 0.48;
}

.bazi-decadal-ribbon-seg.state-current {
  background: linear-gradient(180deg, rgba(212,168,83,0.16), rgba(212,168,83,0.04));
  border-color: rgba(212, 168, 83, 0.5);
  color: var(--text, #e6dece);
  box-shadow: 0 0 0 1px rgba(212, 168, 83, 0.25) inset;
}

.bazi-decadal-ribbon-age {
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.02em;
}

.bazi-decadal-ribbon-pillar {
  font-family: var(--font-serif, "Noto Serif SC", serif);
  font-size: 16px;
  letter-spacing: 0.06em;
  color: inherit;
}

.bazi-decadal-ribbon-ten-god {
  font-size: 11px;
  letter-spacing: 0.08em;
}

.bazi-decadal-ribbon-epithet {
  margin-top: 2px;
  font-family: var(--font-serif, "Noto Serif SC", serif);
  font-size: 12px;
  letter-spacing: 0.12em;
  color: rgba(230, 222, 206, 0.72);
}

.bazi-decadal-ribbon-seg.state-current .bazi-decadal-ribbon-epithet {
  color: rgba(255, 236, 192, 0.92);
}

.bazi-decadal-ribbon-marker {
  position: absolute;
  top: -10px;
  left: 50%;
  transform: translateX(-50%);
  padding: 2px 8px;
  border-radius: 999px;
  background: rgba(212, 168, 83, 0.85);
  color: #0a0e17;
  font-size: 10px;
  letter-spacing: 0.12em;
}

.atlas-question-dock {
  margin-top: 28px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 14px 20px;
  border-radius: 10px;
  border: 1px solid rgba(230, 222, 206, 0.1);
  background:
    radial-gradient(circle at right, rgba(212,168,83,0.08), transparent 50%),
    linear-gradient(180deg, rgba(10,14,23,0.92), rgba(7,10,18,0.94));
}

.atlas-question-dock-body {
  display: grid;
  gap: 4px;
  min-width: 0;
}

.atlas-question-dock-eyebrow {
  font-size: 11px;
  letter-spacing: 0.28em;
  color: rgba(230, 222, 206, 0.6);
}

.atlas-question-dock-text {
  font-family: var(--font-serif, "Noto Serif SC", serif);
  font-size: 16px;
  line-height: 1.45;
  color: var(--text, #e6dece);
  letter-spacing: 0.02em;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.atlas-question-dock-text.atlas-question-dock-empty {
  color: rgba(230, 222, 206, 0.5);
  font-style: italic;
  white-space: normal;
}

.atlas-question-dock-action {
  flex-shrink: 0;
  padding: 8px 16px;
  border-radius: 999px;
  border: 1px solid rgba(212, 168, 83, 0.4);
  background: rgba(212, 168, 83, 0.08);
  color: var(--text, #e6dece);
  font-family: var(--font-serif, "Noto Serif SC", serif);
  font-size: 13px;
  letter-spacing: 0.08em;
  cursor: pointer;
  transition: background 160ms ease, transform 160ms ease;
}

.atlas-question-dock-action:hover {
  background: rgba(212, 168, 83, 0.16);
  transform: translateY(-1px);
}

@media (max-width: 720px) {
  .atlas-question-dock {
    flex-direction: column;
    align-items: flex-start;
  }
  .atlas-question-dock-text {
    white-space: normal;
  }
}

.bazi-life-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
  margin-bottom: 18px;
}

.bazi-life-copy {
  display: grid;
  gap: 8px;
  max-width: 62ch;
}

.bazi-life-copy h3 {
  margin: 0;
  font-size: clamp(1.8rem, 3vw, 2.8rem);
  line-height: 1.04;
}

.bazi-life-table-wrap {
  overflow-x: auto;
  border-radius: 24px;
  border: 1px solid rgba(255,255,255,0.08);
  background:
    linear-gradient(180deg, rgba(255,255,255,0.03), transparent 24%),
    rgba(7,10,18,0.88);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.02);
}

.bazi-life-table {
  width: 100%;
  min-width: 760px;
  border-collapse: collapse;
}

.bazi-life-table thead th {
  padding: 18px 16px;
  color: var(--text);
  font-size: 0.96rem;
  font-weight: 700;
  text-align: center;
  border-bottom: 1px solid rgba(255,255,255,0.08);
  background: rgba(255,255,255,0.035);
}

.bazi-life-table tbody th,
.bazi-life-table tbody td {
  padding: 16px 14px;
  border-bottom: 1px solid rgba(255,255,255,0.05);
  text-align: center;
  vertical-align: middle;
}

.bazi-life-table tbody th {
  width: 108px;
  color: var(--text-muted);
  font-size: 0.86rem;
  font-weight: 650;
  letter-spacing: 0.06em;
  background: rgba(255,255,255,0.018);
}

.bazi-life-table tbody td { color: var(--text-soft); }

.bazi-pillar-reality-section {
  display: grid;
  gap: 16px;
  margin-top: 18px;
}

.bazi-pillar-reality-title {
  margin-bottom: 0;
}

.bazi-pillar-reality-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
}

.bazi-pillar-reality-card {
  position: relative;
  overflow: hidden;
  display: grid;
  gap: 12px;
  min-height: 306px;
  padding: 18px;
  border-radius: 24px;
  border: 1px solid rgba(255,255,255,0.08);
  background:
    radial-gradient(circle at top left, rgba(212,168,83,0.11), transparent 34%),
    radial-gradient(circle at bottom right, rgba(120,199,232,0.075), transparent 32%),
    linear-gradient(180deg, rgba(255,255,255,0.04), transparent 24%),
    rgba(8, 12, 20, 0.94);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.018);
}

.bazi-pillar-reality-card::after {
  content: "";
  position: absolute;
  inset: auto 18px 18px;
  height: 1px;
  background: linear-gradient(90deg, rgba(212,168,83,0.28), transparent);
  pointer-events: none;
}

.bazi-pillar-reality-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
}

.bazi-pillar-reality-head h6 {
  margin: 4px 0 0;
  font-size: 1.28rem;
  line-height: 1.08;
}

.bazi-pillar-reality-core {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 8px 10px;
  border-radius: 16px;
  border: 1px solid rgba(255,255,255,0.07);
  background: rgba(255,255,255,0.028);
}

.bazi-pillar-reality-action {
  margin: 0;
  padding: 12px 14px;
  border-radius: 16px;
  color: var(--text);
  line-height: 1.75;
  background: rgba(212,168,83,0.07);
  border: 1px solid rgba(212,168,83,0.14);
}

.bazi-pillar-reality-evidence {
  align-self: end;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  padding-top: 2px;
}

.bazi-pillar-reality-evidence span {
  padding: 6px 10px;
  border-radius: 999px;
  color: var(--gold);
  background: rgba(212,168,83,0.075);
  border: 1px solid rgba(212,168,83,0.16);
  font-size: 0.72rem;
  font-weight: 760;
}

.bazi-timeline-now-panel {
  display: grid;
  gap: 16px;
  padding: 22px;
  border-radius: 28px;
  border: 1px solid rgba(255,255,255,0.08);
  background:
    radial-gradient(circle at 12% 0%, rgba(212,168,83,0.12), transparent 28%),
    radial-gradient(circle at 88% 18%, rgba(120,199,232,0.1), transparent 30%),
    linear-gradient(180deg, rgba(10,14,23,0.96), rgba(6,9,17,0.96));
  box-shadow: var(--shadow-deep);
}

.bazi-timeline-now-head {
  margin-bottom: 0;
}

.bazi-timeline-now-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
}

.bazi-timeline-now-card {
  position: relative;
  overflow: hidden;
  display: grid;
  gap: 10px;
  min-height: 230px;
  padding: 18px;
  border-radius: 24px;
  border: 1px solid rgba(255,255,255,0.08);
  background:
    linear-gradient(180deg, rgba(255,255,255,0.042), transparent 26%),
    rgba(255,255,255,0.024);
}

.bazi-timeline-now-card:nth-child(1) {
  background:
    radial-gradient(circle at top left, rgba(212,168,83,0.13), transparent 36%),
    linear-gradient(180deg, rgba(255,255,255,0.045), transparent 26%),
    rgba(255,255,255,0.026);
}

.bazi-timeline-now-card h6 {
  margin: 0;
  font-size: clamp(1.1rem, 1.55vw, 1.38rem);
  line-height: 1.12;
}

.bazi-timeline-now-index {
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  border-radius: 14px;
  color: var(--gold);
  background: rgba(212,168,83,0.08);
  border: 1px solid rgba(212,168,83,0.16);
  font-family: var(--font-display);
}

.bazi-timeline-now-foot {
  align-self: end;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  justify-content: space-between;
}

.bazi-timeline-now-foot span,
.bazi-timeline-now-foot strong {
  padding: 6px 10px;
  border-radius: 999px;
  font-size: 0.72rem;
  font-weight: 760;
}

.bazi-timeline-now-foot span {
  color: var(--text-soft);
  background: rgba(255,255,255,0.034);
  border: 1px solid rgba(255,255,255,0.075);
}

.bazi-timeline-now-foot strong {
  color: var(--gold);
  background: rgba(212,168,83,0.075);
  border: 1px solid rgba(212,168,83,0.15);
}

.bazi-evidence-ledger {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
  margin-top: 16px;
}

.bazi-evidence-ledger-card {
  display: grid;
  gap: 12px;
  min-height: 268px;
  padding: 18px;
  border-radius: 24px;
  border: 1px solid rgba(255,255,255,0.08);
  background:
    radial-gradient(circle at top left, rgba(212,168,83,0.09), transparent 34%),
    linear-gradient(180deg, rgba(255,255,255,0.04), transparent 24%),
    rgba(8, 12, 20, 0.94);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.018);
}

.bazi-evidence-ledger-head {
  display: grid;
  gap: 4px;
}

.bazi-evidence-ledger-head h6 {
  margin: 0;
  font-size: 1.24rem;
  line-height: 1.1;
}

.bazi-evidence-row-list {
  display: grid;
  gap: 8px;
}

.bazi-evidence-row {
  display: grid;
  grid-template-columns: minmax(92px, 0.34fr) minmax(0, 0.66fr);
  gap: 10px;
  align-items: start;
  padding: 9px 10px;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,0.06);
  background: rgba(255,255,255,0.024);
}

.bazi-evidence-row span {
  color: var(--text-muted);
  font-size: 0.74rem;
  letter-spacing: 0.06em;
}

.bazi-evidence-row strong {
  color: var(--text);
  font-size: 0.84rem;
  line-height: 1.45;
  overflow-wrap: anywhere;
}

.bazi-evidence-warning-list {
  display: grid;
  gap: 8px;
  padding-top: 2px;
}

.bazi-evidence-warning-list span {
  padding: 9px 10px;
  border-radius: 14px;
  color: var(--gold);
  line-height: 1.55;
  background: rgba(212,168,83,0.075);
  border: 1px solid rgba(212,168,83,0.15);
  font-size: 0.78rem;
}

.bazi-cell-copy {
  display: grid;
  justify-items: center;
  gap: 4px;
  line-height: 1.6;
}

.bazi-stack {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
}

.bazi-stack-token {
  padding: 4px 10px;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,0.06);
  background: rgba(255,255,255,0.03);
  font-size: 0.82rem;
}

.bazi-stack-token.tone-wood { background: rgba(114,211,157,0.12); border-color: rgba(114,211,157,0.18); }
.bazi-stack-token.tone-fire { background: rgba(255,141,107,0.12); border-color: rgba(255,141,107,0.18); }
.bazi-stack-token.tone-earth { background: rgba(208,165,108,0.12); border-color: rgba(208,165,108,0.18); }
.bazi-stack-token.tone-metal { background: rgba(240,212,138,0.12); border-color: rgba(240,212,138,0.18); }
.bazi-stack-token.tone-water { background: rgba(115,184,255,0.12); border-color: rgba(115,184,255,0.18); }

.bazi-stack-empty { color: var(--text-muted); }

.chip-row.compact {
  gap: 8px;
}

.chip-row.compact .chip {
  padding: 7px 11px;
  font-size: 0.74rem;
}

.bazi-life-foot {
  display: grid;
  gap: 14px;
  margin-top: 18px;
}

.bazi-detail-hero-actions {
  display: grid;
  gap: 12px;
  align-content: start;
  justify-items: end;
}

.bazi-detail-stamp {
  display: grid;
  gap: 4px;
  width: min(220px, 100%);
  padding: 16px 18px;
  border-radius: 20px;
  border: 1px solid rgba(255,255,255,0.08);
  background: rgba(255,255,255,0.03);
}

.bazi-detail-stamp span {
  color: var(--text-muted);
  font-size: 0.74rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.bazi-detail-stamp strong { font-size: 1.02rem; }

.bazi-detail-grid {
  display: grid;
  grid-template-columns: minmax(320px, 0.9fr) minmax(0, 1.1fr);
  gap: 16px;
}

.bazi-pillar-story-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}

.bazi-pillar-story-card {
  display: grid;
  gap: 12px;
  min-height: 220px;
  padding: 20px;
  border-radius: 24px;
  border: 1px solid rgba(255,255,255,0.08);
  background:
    radial-gradient(circle at top left, rgba(212,168,83,0.1), transparent 34%),
    linear-gradient(180deg, rgba(255,255,255,0.04), transparent 24%),
    rgba(10, 14, 23, 0.96);
}

.bazi-pillar-story-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
}

.bazi-pillar-story-head h6 {
  margin: 4px 0 0;
  font-size: 1.5rem;
  line-height: 1;
}

.bazi-pillar-story-core {
  display: flex;
  align-items: center;
  gap: 6px;
}

.bazi-pillar-story-card .card-body {
  margin: 0;
  color: var(--text-soft);
  line-height: 1.82;
}

.bazi-element-orbit-shell { display: grid; gap: 18px; }

.bazi-element-orbit {
  position: relative;
  width: min(100%, 320px);
  aspect-ratio: 1;
  margin: 0 auto;
  border-radius: 50%;
  background: radial-gradient(circle at center, rgba(255,255,255,0.035), transparent 68%);
}

.bazi-element-web {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.bazi-element-web polygon,
.bazi-element-web line {
  fill: none;
  stroke: rgba(255,255,255,0.12);
  stroke-width: 1.4;
}

.bazi-element-node {
  position: absolute;
  top: 50%;
  left: 50%;
  display: grid;
  place-items: center;
  gap: 4px;
  width: 74px;
  height: 74px;
  border-radius: 22px;
  border: 1px solid rgba(255,255,255,0.08);
  background: rgba(7,10,17,0.92);
  transform: translate(-50%, -50%) rotate(var(--node-angle)) translateY(-118px) rotate(calc(var(--node-angle) * -1));
  box-shadow: 0 14px 28px rgba(0,0,0,0.2);
}

.bazi-element-node strong {
  font-size: 1.15rem;
  line-height: 1;
}

.bazi-element-node span {
  color: var(--text-muted);
  font-size: 0.76rem;
}

.bazi-element-core {
  position: absolute;
  inset: 33%;
  display: grid;
  place-items: center;
  gap: 4px;
  border-radius: 50%;
  border: 1px solid rgba(212,168,83,0.16);
  background: radial-gradient(circle at top, rgba(212,168,83,0.12), transparent 34%), rgba(8,12,20,0.95);
  text-align: center;
}

.bazi-element-core span {
  color: var(--text-muted);
  font-size: 0.74rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.bazi-element-core strong {
  font-size: 1.36rem;
  color: var(--gold-strong);
}

.bazi-element-core small { color: var(--text-soft); }

.bazi-element-legend { display: grid; gap: 10px; }

.bazi-element-legend-item {
  display: grid;
  gap: 8px;
}

.bazi-element-legend-copy {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.bazi-element-legend-copy span {
  color: var(--text-muted);
  font-size: 0.84rem;
}

.bazi-element-bar {
  height: 10px;
  overflow: hidden;
  border-radius: 999px;
  background: rgba(255,255,255,0.06);
}

.bazi-element-bar-fill {
  display: block;
  height: 100%;
  border-radius: inherit;
}

.bazi-element-bar-fill.tone-wood { background: linear-gradient(90deg, rgba(114,211,157,0.94), rgba(114,211,157,0.36)); }
.bazi-element-bar-fill.tone-fire { background: linear-gradient(90deg, rgba(255,141,107,0.94), rgba(255,141,107,0.36)); }
.bazi-element-bar-fill.tone-earth { background: linear-gradient(90deg, rgba(208,165,108,0.94), rgba(208,165,108,0.36)); }
.bazi-element-bar-fill.tone-metal { background: linear-gradient(90deg, rgba(240,212,138,0.94), rgba(240,212,138,0.36)); }
.bazi-element-bar-fill.tone-water { background: linear-gradient(90deg, rgba(115,184,255,0.94), rgba(115,184,255,0.36)); }

.bazi-insight-grid,
.bazi-section-grid,
.bazi-signal-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.bazi-insight-grid .display-panel-card,
.bazi-section-grid .display-panel-card,
.bazi-signal-grid .display-panel-card {
  min-height: 0;
}

.bazi-section-card .card-body { color: var(--text-soft); }
.bazi-section-card .card-body p { line-height: 1.8; }

.bazi-timeline-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

.bazi-timeline-panel {
  display: grid;
  gap: 16px;
  background:
    radial-gradient(circle at top right, rgba(212,168,83,0.08), transparent 24%),
    radial-gradient(circle at bottom left, rgba(120,199,232,0.06), transparent 24%),
    linear-gradient(180deg, rgba(10,14,23,0.96), rgba(7,10,18,0.96));
}

.bazi-timeline-head {
  display: grid;
  gap: 6px;
}

.bazi-timeline-head h6 {
  margin: 0;
  font-size: 1.3rem;
  font-family: var(--serif);
}

.bazi-luck-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

.bazi-luck-card,
.bazi-trend-card {
  display: grid;
  gap: 8px;
  padding: 18px 16px;
  border-radius: 20px;
  border: 1px solid var(--border);
  background:
    radial-gradient(circle at top, rgba(212,168,83,0.1), transparent 34%),
    linear-gradient(180deg, rgba(255,255,255,0.04), transparent 26%),
    rgba(255,255,255,0.025);
}

.bazi-luck-card span,
.bazi-trend-card span {
  color: var(--text-muted);
  font-size: 0.74rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.bazi-luck-card strong,
.bazi-trend-card strong {
  font-family: var(--serif);
  font-size: 1.4rem;
}

.bazi-luck-card p,
.bazi-luck-card small,
.bazi-trend-card p,
.bazi-trend-card small {
  margin: 0;
  color: var(--text-soft);
}

.bazi-trend-head {
  display: grid;
  gap: 4px;
}

.bazi-trend-card .chip-row {
  margin: 2px 0 2px;
}

.bazi-annual-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.bazi-annual-chip {
  display: grid;
  gap: 6px;
  min-width: 120px;
  padding: 12px 14px;
  border-radius: 18px;
  border: 1px solid rgba(255,255,255,0.08);
  background: rgba(255,255,255,0.025);
}

.bazi-annual-chip span {
  color: var(--text-muted);
  font-size: 0.76rem;
}

.bazi-signal-card .card-body {
  line-height: 1.82;
}

.bazi-annual-chip strong { font-size: 1rem; }

/* Star wheel */
.star-wheel-shell { display: grid; place-items: center; min-height: 560px; padding: 12px 0; }

/* §Plan 2 §13 — SVG star wheel */
.star-wheel-svg {
  display: block;
  width: 100%;
  max-width: 560px;
  height: auto;
  aspect-ratio: 1 / 1;
  border-radius: 50%;
  background:
    radial-gradient(circle at center, rgba(120,199,232,0.08), transparent 44%),
    radial-gradient(circle at top, rgba(255,255,255,0.08), transparent 20%),
    linear-gradient(180deg, rgba(8,11,19,0.98), rgba(4,7,13,0.98));
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,0.05),
    0 26px 72px rgba(0,0,0,0.34);
  overflow: visible;
}

/* Keep legacy .star-wheel class for any remaining uses */
.star-wheel {
  position: relative; width: min(100%, 560px); aspect-ratio: 1;
  border-radius: 999px;
  background:
    radial-gradient(circle at center, rgba(120,199,232,0.08), transparent 44%),
    radial-gradient(circle at top, rgba(255,255,255,0.08), transparent 20%),
    linear-gradient(180deg, rgba(8,11,19,0.98), rgba(4,7,13,0.98));
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,0.05),
    inset 0 28px 56px rgba(255,255,255,0.02),
    0 26px 72px rgba(0,0,0,0.34);
}

.star-wheel::before, .star-wheel::after {
  content: ""; position: absolute; inset: 0; border-radius: 999px; pointer-events: none;
}

.star-wheel::before {
  background: conic-gradient(
    from 0deg,
    rgba(255,255,255,0.02) 0deg 28deg, transparent 28deg 30deg,
    rgba(255,255,255,0.02) 30deg 58deg, transparent 58deg 60deg,
    rgba(255,255,255,0.02) 60deg 88deg, transparent 88deg 90deg,
    rgba(255,255,255,0.02) 90deg 118deg, transparent 118deg 120deg,
    rgba(255,255,255,0.02) 120deg 148deg, transparent 148deg 150deg,
    rgba(255,255,255,0.02) 150deg 178deg, transparent 178deg 180deg,
    rgba(255,255,255,0.02) 180deg 208deg, transparent 208deg 210deg,
    rgba(255,255,255,0.02) 210deg 238deg, transparent 238deg 240deg,
    rgba(255,255,255,0.02) 240deg 268deg, transparent 268deg 270deg,
    rgba(255,255,255,0.02) 270deg 298deg, transparent 298deg 300deg,
    rgba(255,255,255,0.02) 300deg 328deg, transparent 328deg 330deg,
    rgba(255,255,255,0.02) 330deg 358deg, transparent 358deg 360deg
  );
}

.star-wheel::after { inset: 16%; border: 1px solid rgba(255,255,255,0.07); }

.wheel-ring { position: absolute; inset: 6%; border-radius: 999px; border: 1px solid rgba(255,255,255,0.08); }
.wheel-ring.inner { inset: 26%; }

.wheel-house-label, .wheel-planet, .wheel-angle-marker {
  position: absolute; top: 50%; left: 50%; transform-origin: center center;
}

.wheel-house-label {
  transform: rotate(calc(var(--house-angle) * 1deg)) translateY(-248px) rotate(calc(var(--house-angle) * -1deg));
  display: grid; justify-items: center; gap: 6px; min-width: 60px;
}

.wheel-house-label span {
  font-size: 0.98rem;
  color: var(--gold);
  font-weight: 800;
  text-shadow: 0 0 18px rgba(212,168,83,0.18);
}

.wheel-house-label small {
  display: inline-grid;
  place-items: center;
  min-width: 24px;
  height: 24px;
  padding: 0 6px;
  border-radius: 8px;
  background: rgba(114, 58, 146, 0.44);
  border: 1px solid rgba(182,115,226,0.28);
  color: #d7b2ff;
  font-size: 0.7rem;
  line-height: 1;
}

.wheel-planet {
  transform: rotate(calc(var(--planet-angle) * 1deg)) translateY(calc(var(--planet-orbit) * -1px)) rotate(calc(var(--planet-angle) * -1deg));
  display: grid; justify-items: center; gap: 4px; min-width: 52px;
}

.wheel-planet span, .wheel-angle-marker span {
  display: grid; place-items: center; width: 46px; height: 46px;
  border-radius: 999px; background: rgba(7,11,22,0.92);
  border: 1px solid rgba(120,199,232,0.18); color: var(--gold);
  box-shadow: 0 10px 26px rgba(0,0,0,0.26), inset 0 0 0 1px rgba(255,255,255,0.03);
}

.wheel-planet small {
  color: var(--text-soft);
  font-size: 0.82rem;
  text-shadow: 0 0 14px rgba(0,0,0,0.42);
}

.wheel-angle-marker {
  transform: rotate(calc(var(--planet-angle) * 1deg)) translateY(-284px) rotate(calc(var(--planet-angle) * -1deg));
}

.wheel-angle-marker span { width: 30px; height: 30px; font-size: 0.76rem; color: var(--success); }

.wheel-core {
  position: absolute; inset: 33%;
  display: grid; place-items: center; gap: 4px;
  border-radius: 999px;
  background:
    radial-gradient(circle at top, rgba(255,255,255,0.08), transparent 24%),
    radial-gradient(circle, rgba(212,168,83,0.08), transparent 62%),
    rgba(7,10,18,0.94);
  border: 1px solid var(--border);
  text-align: center;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.03);
}

.wheel-core strong { font-size: 1.4rem; }
.wheel-core small { font-size: 0.96rem; color: var(--text-soft); }
.wheel-core span { color: var(--text-muted); font-size: 0.76rem; letter-spacing: 0.08em; text-transform: uppercase; }

/* Focus / Placement / House cards */
.focus-card-grid { display: grid; gap: 12px; }

.focus-card {
  display: grid; gap: 6px; padding: 14px 16px;
  border-radius: 18px; border: 1px solid var(--border); background: rgba(255,255,255,0.025);
}

.focus-icon {
  display: grid; place-items: center; width: 36px; height: 36px;
  border-radius: 12px; background: rgba(212,168,83,0.08); color: var(--gold);
}

.focus-card small { color: var(--text-soft); line-height: 1.6; }

.placement-grid, .highlight-grid {
  display: grid; gap: 12px; margin-top: 12px;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
}

.placement-card, .highlight-card, .house-card {
  display: grid; gap: 8px; padding: 14px 16px;
  border-radius: 20px; border: 1px solid var(--border);
  background: radial-gradient(circle at top right, rgba(212,168,83,0.06), transparent 38%), rgba(255,255,255,0.025);
}

.placement-head, .placement-meta { display: flex; align-items: center; justify-content: space-between; gap: 14px; }
.placement-head span, .placement-meta span, .highlight-card span, .house-card span, .house-card small, .highlight-card small { color: var(--text-muted); }
.placement-head strong, .highlight-card strong, .house-card strong { font-size: 0.98rem; }

.house-grid { display: grid; gap: 10px; margin-top: 12px; grid-template-columns: repeat(auto-fit, minmax(126px, 1fr)); }

.balance-stack { display: grid; gap: 12px; margin-top: 10px; }
.balance-row { display: grid; gap: 8px; }
.balance-copy { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.balance-copy span { color: var(--text-muted); }

.balance-bar { height: 8px; overflow: hidden; border-radius: 999px; background: rgba(255,255,255,0.05); }
.balance-bar-fill { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, rgba(212,168,83,0.88), rgba(120,199,232,0.88)); }

/* Balance donuts */
.balance-donut-grid, .astro-identity-grid, .astro-theme-grid, .astro-question-grid, .pillar-card-grid, .bazi-archetype-grid {
  display: grid; gap: 14px;
}

.balance-donut-grid { grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); }
.balance-donut-section { display: grid; gap: 14px; align-content: start; }

.balance-donut {
  position: relative; display: grid; place-items: center;
  width: min(100%, 210px); aspect-ratio: 1; margin: 0 auto;
  border-radius: 50%;
  background: radial-gradient(circle at center, rgba(7,10,17,0.98) 0 40%, transparent 41%), conic-gradient(var(--donut-gradient));
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.05), 0 14px 36px rgba(0,0,0,0.22);
}

.balance-donut::after {
  content: ""; position: absolute; inset: 16px; border-radius: 50%;
  background: radial-gradient(circle at top, rgba(255,255,255,0.1), transparent 28%),
    linear-gradient(180deg, rgba(12,16,28,0.98), rgba(6,9,15,0.98));
  border: 1px solid rgba(255,255,255,0.05);
}

.balance-donut-core { position: relative; z-index: 1; display: grid; gap: 4px; text-align: center; }
.balance-donut-core strong { font-size: 1.06rem; }
.balance-donut-core span { color: var(--text-muted); font-size: 0.78rem; }

.balance-donut-legend { display: grid; gap: 8px; }

.donut-legend-item {
  display: grid; grid-template-columns: auto 1fr auto; gap: 10px; align-items: center;
  padding: 8px 10px; border-radius: 14px; border: 1px solid rgba(255,255,255,0.05); background: rgba(255,255,255,0.025);
}

.donut-legend-item strong, .donut-legend-item small { margin: 0; }
.donut-legend-item small { color: var(--text-muted); }

.legend-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--legend-color, var(--gold)); box-shadow: 0 0 14px rgba(212,168,83,0.28); }

.astro-identity-grid, .bazi-archetype-grid { grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); }
.astro-theme-grid { grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); }
.astro-question-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.pillar-card-grid { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); }

.identity-card, .theme-card, .pillar-card {
  position: relative; overflow: hidden; display: grid; gap: 10px;
  padding: 16px; border-radius: 20px; border: 1px solid var(--border);
  background: linear-gradient(180deg, rgba(255,255,255,0.035), transparent 28%), rgba(255,255,255,0.02);
}

.identity-icon, .theme-card-icon {
  display: grid; place-items: center; width: 40px; height: 40px;
  border-radius: 14px; background: rgba(212,168,83,0.1); color: var(--gold-strong); font-size: 1.1rem;
}

.theme-card-icon { background: var(--moon-dim); color: var(--moon); }

.pillar-core, .pillar-body, .element-field { display: grid; gap: 10px; }
.pillar-core strong { font-size: 1.06rem; }
.pillar-core span, .pillar-body span, .element-copy span { color: var(--text-muted); }

.pillar-body p {
  display: flex; align-items: start; justify-content: space-between;
  gap: 12px; margin: 0; color: var(--text-soft);
}

.pillar-body strong, .element-copy strong { text-align: right; }
.bazi-identity-card { align-content: start; }

.element-row { display: grid; gap: 10px; }
.element-copy { display: flex; align-items: center; justify-content: space-between; gap: 12px; }

.aspect-list { display: grid; gap: 10px; margin-top: 12px; }

.aspect-item {
  display: flex; align-items: baseline; justify-content: space-between; gap: 16px;
  padding: 12px 14px; border-radius: 16px; border: 1px solid var(--border); background: rgba(255,255,255,0.025);
}

.aspect-item span { color: var(--text-muted); white-space: nowrap; }

.house-chip-row { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }

/* Moon calendar */
.moon-calendar-panel { display: grid; gap: 16px; }
.moon-calendar-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.moon-calendar-head span { color: var(--text-muted); }

.moon-weekday-row, .moon-calendar-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 8px; }
.moon-weekday-row span { color: var(--text-muted); text-align: center; font-size: 0.76rem; letter-spacing: 0.08em; }

.moon-day {
  display: grid; justify-items: center; gap: 6px;
  min-height: 108px; padding: 10px 8px;
  border-radius: 18px; border: 1px solid var(--border); background: rgba(255,255,255,0.025);
  text-align: center;
}

.moon-day.empty { min-height: 0; padding: 0; border: 0; background: transparent; }
.moon-phase-emoji { font-size: 1.6rem; }
.moon-day-number { font-size: 1.08rem; }
.moon-day small { color: var(--text-muted); }

.moon-day-tags { display: flex; flex-wrap: wrap; justify-content: center; gap: 5px; }
.moon-day-tags span { padding: 3px 7px; border-radius: 999px; background: var(--gold-dim); color: var(--gold); font-size: 0.66rem; }

/* ─── 25. Tarot Card Faces & Symbols ─── */
.tarot-face {
  position: relative;
  display: grid; place-items: center;
  width: 100%; height: 100%;
  border-radius: 20px; overflow: hidden;
  background: radial-gradient(circle at top, rgba(120,199,232,0.12), transparent 28%),
    linear-gradient(180deg, #11203a 0%, #0a1324 100%);
  border: 1px solid rgba(120,199,232,0.14);
}

.tarot-face img {
  display: block; width: 100%; height: 100%;
  object-fit: contain;
  background: linear-gradient(180deg, rgba(6,9,16,0.98), rgba(4,6,11,0.98));
}

.tarot-face img.is-reversed {
  transform: rotate(180deg);
}

.tarot-face-fallback {
  position: relative;
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
}

.tarot-symbol, .tarot-numeral, .tarot-suit-icon { position: relative; z-index: 1; }
.tarot-symbol { font-size: 3.2rem; }
.tarot-numeral { position: absolute; top: 12px; font-size: 0.84rem; color: rgba(255,255,255,0.6); }
.tarot-suit-icon { position: absolute; bottom: 12px; font-size: 0.98rem; }

/* ─── 26. Lot, Hexagram, Jiaobei ─── */
.lot-hero, .hexagram-card.primary, .pillar-card {
  background: radial-gradient(circle at top right, rgba(212,168,83,0.12), transparent 28%), rgba(255,255,255,0.04);
}

.lot-hero {
  padding: 24px; border-radius: 22px;
  border: 1px solid rgba(212,168,83,0.18);
}

.lot-badge, .lot-level {
  display: inline-flex; padding: 6px 11px; margin-right: 8px; margin-bottom: 10px;
  border-radius: 999px; background: var(--gold-dim);
  border: 1px solid rgba(212,168,83,0.16); color: var(--gold); font-size: 0.8rem;
}

.jiaobei-grid, .hexagram-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.attempt-card, .pillar-card { text-align: center; }

/* I Ching specific */
.hexagram-card {
  display: grid; gap: 10px; padding: 18px;
  border-radius: 20px; border: 1px solid var(--border); background: var(--bg-surface);
}

.hexagram-card h5 { margin: 0; font-size: 1.08rem; }

.line-row {
  display: flex; align-items: center; gap: 8px;
  padding: 6px 0;
}

.line-row span { color: var(--text-muted); font-size: 0.82rem; }

/* §Plan 2 §8 — 大六爻柱 + 文辞层 layout */
.iching-header {
  display: flex; align-items: baseline; gap: 14px; flex-wrap: wrap;
  margin-bottom: 18px;
}
.iching-primary-name {
  margin: 0; font-size: 1.24rem; font-weight: 600;
  display: flex; align-items: baseline; gap: 10px;
}
.iching-primary-en { font-size: 0.82rem; color: var(--text-muted); font-weight: 400; }
.iching-meihua-badge {
  display: inline-flex; align-items: center;
  padding: 2px 9px; border-radius: 999px;
  background: rgba(212,168,83,0.15); border: 1px solid rgba(212,168,83,0.3);
  color: var(--gold); font-size: 0.78rem; font-weight: 500;
}
.iching-moving-badge {
  display: inline-flex; align-items: center;
  padding: 3px 11px; border-radius: 999px;
  background: rgba(212,168,83,0.1); border: 1px solid rgba(212,168,83,0.2);
  color: var(--gold); font-size: 0.8rem;
}
.iching-moving-none { opacity: 0.45; }

/* Two-column layout: column | text panel */
.iching-layout {
  display: grid;
  grid-template-columns: 130px 1fr;
  gap: 24px;
  align-items: start;
  margin-bottom: 22px;
}
@media (max-width: 520px) {
  .iching-layout { grid-template-columns: 1fr; }
}

/* 大六爻柱 */
.iching-col-wrap { display: flex; flex-direction: column; gap: 10px; }
.iching-hex-col { display: flex; flex-direction: column; gap: 7px; padding: 14px 12px; border-radius: 16px; background: var(--bg-surface); border: 1px solid var(--border); }
.iching-line { display: flex; align-items: center; gap: 6px; height: 18px; }
.iching-line-no { font-size: 0.7rem; color: var(--text-muted); width: 14px; text-align: right; flex-shrink: 0; }
.iching-line-bars { flex: 1; display: flex; align-items: center; gap: 0; }
.iching-bar { height: 8px; border-radius: 2px; background: rgba(244,241,234,0.7); }
.iching-bar-yang { flex: 1; }
.iching-bar-pair { flex: 1; display: flex; gap: 6px; }
.iching-bar-pair .iching-bar-yin { flex: 1; }
.iching-bar-moving { background: var(--gold); box-shadow: 0 0 6px rgba(212,168,83,0.55); }
.iching-line-moving .iching-line-no { color: var(--gold); }
.iching-line-type { font-size: 0.65rem; color: var(--text-muted); width: 22px; text-align: left; flex-shrink: 0; }
.iching-moving-dot { font-size: 0.7rem; color: var(--gold); flex-shrink: 0; animation: iching-pulse 1.6s ease-in-out infinite; }
@keyframes iching-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.35; } }
.iching-trigrams { margin: 0; font-size: 0.75rem; color: var(--text-muted); text-align: center; }
.iching-trigram-labels { display: flex; flex-direction: column; gap: 4px; }
.iching-trigram-label { font-size: 0.72rem; color: var(--text-muted); text-align: center; }
.iching-trigram-lower { margin-top: 2px; }

/* 大六爻柱 — mini version for related cards */
.iching-mini-col { display: flex; flex-direction: column; gap: 3px; padding: 8px 6px; }
.iching-mini-pair { display: flex; gap: 3px; }
.iching-mini-bar { height: 5px; border-radius: 1px; background: rgba(244,241,234,0.55); }
.iching-mini-yang { width: 28px; }
.iching-mini-pair .iching-mini-yin { flex: 1; }

/* 文辞层 */
.iching-text-panel { display: flex; flex-direction: column; gap: 14px; }
.iching-text-block { display: grid; gap: 4px; }
.iching-text-label { font-size: 0.72rem; letter-spacing: 0.08em; color: var(--gold); text-transform: uppercase; }
.iching-text-body { margin: 0; font-size: 0.88rem; color: var(--text-soft); line-height: 1.65; }
.iching-meta-row { display: flex; align-items: baseline; gap: 8px; }
.iching-meta-row .iching-text-label { min-width: 32px; }

/* 动爻爻辞 */
.iching-yao-block { padding: 10px 12px; border-radius: 12px; background: rgba(212,168,83,0.06); border: 1px solid rgba(212,168,83,0.15); display: grid; gap: 4px; }
.iching-yao-label { font-size: 0.75rem; color: var(--gold); }
.iching-yao-text { margin: 0; font-size: 0.86rem; color: var(--text-soft); line-height: 1.6; }

/* 变卦提示 */
.iching-transformed-hint { padding: 9px 12px; border-radius: 10px; border-left: 2px solid var(--gold); background: rgba(212,168,83,0.04); display: grid; gap: 3px; }

/* 关系卦横排 (互/综/错) */
.iching-related-row {
  display: flex; gap: 12px; flex-wrap: wrap;
  margin-bottom: 18px;
}
.iching-related-card {
  display: flex; align-items: center; gap: 8px;
  padding: 10px 14px; border-radius: 14px;
  border: 1px solid var(--border); background: var(--bg-surface);
  flex: 1; min-width: 120px;
}
.iching-related-info { display: flex; flex-direction: column; gap: 2px; }
.iching-related-label { font-size: 0.7rem; color: var(--text-muted); }
.iching-related-name { font-size: 0.9rem; font-weight: 600; }
.iching-related-num { font-size: 0.72rem; color: var(--text-muted); }

/* §Plan 2 §10 — Lot 签柜 */
.lot-cabinet {
  display: grid; gap: 18px; padding: 22px;
  border-radius: 22px; border: 1px solid rgba(212,168,83,0.22);
  background: radial-gradient(circle at top right, rgba(212,168,83,0.1), transparent 40%), var(--bg-surface);
}
.lot-cabinet-header { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.lot-no-badge {
  display: inline-flex; padding: 5px 14px; border-radius: 999px;
  background: rgba(212,168,83,0.18); border: 1px solid rgba(212,168,83,0.28);
  color: var(--gold); font-size: 1rem; font-weight: 600;
}
.lot-system-chip {
  display: inline-flex; padding: 3px 10px; border-radius: 999px;
  background: var(--bg-deep); border: 1px solid var(--border);
  font-size: 0.78rem; color: var(--text-muted);
}
.lot-fortune-banner {
  display: flex; align-items: center; justify-content: center;
  padding: 10px 18px; border-radius: 14px; border: 1px solid transparent;
}
.lot-fortune-text { font-size: 1.14rem; font-weight: 700; letter-spacing: 0.1em; }
.lot-fortune-daji   { background: rgba(212,168,83,0.15); border-color: rgba(212,168,83,0.3);  color: var(--gold); }
.lot-fortune-ji     { background: rgba(212,168,83,0.08); border-color: rgba(212,168,83,0.18); color: rgba(212,168,83,0.75); }
.lot-fortune-ping   { background: rgba(255,255,255,0.04); border-color: rgba(255,255,255,0.1); color: var(--text-muted); }
.lot-fortune-xiong  { background: rgba(255,255,255,0.03); border-color: rgba(255,255,255,0.08); color: var(--text-muted); opacity: 0.7; }
.lot-fortune-daxiong{ background: rgba(255,255,255,0.02); border-color: rgba(255,255,255,0.06); color: var(--text-muted); opacity: 0.5; }
.lot-title { margin: 0; font-size: 1.1rem; font-weight: 600; }
.lot-poem-block {
  display: flex; flex-direction: column; gap: 5px;
  padding: 14px 18px; border-radius: 12px;
  background: rgba(255,255,255,0.03); border-left: 2px solid var(--gold);
}
.lot-poem-line { font-size: 0.9rem; color: var(--text-soft); line-height: 1.7; }
.lot-oracle-block { display: grid; gap: 4px; }
.lot-oracle-label { font-size: 0.72rem; letter-spacing: 0.08em; color: var(--gold); text-transform: uppercase; }
.lot-oracle-text { margin: 0; font-size: 0.88rem; color: var(--text-soft); line-height: 1.65; }

/* §Plan 2 §11 — Jiaobei 仪式流 */
.jiaobei-ritual { display: grid; gap: 18px; }
.jiaobei-final-banner {
  display: flex; align-items: center; justify-content: center; gap: 14px;
  padding: 16px 20px; border-radius: 18px; border: 1px solid transparent;
}
.jiaobei-yes { background: rgba(212,168,83,0.12); border-color: rgba(212,168,83,0.28); }
.jiaobei-no  { background: rgba(160,160,200,0.1); border-color: rgba(160,160,200,0.25); }
.jiaobei-laugh { background: rgba(130,180,220,0.1); border-color: rgba(130,180,220,0.22); }
.jiaobei-final-icon { font-size: 1.6rem; }
.jiaobei-final-label { font-size: 1.22rem; font-weight: 700; letter-spacing: 0.06em; }
.jiaobei-yes .jiaobei-final-label { color: var(--gold); }
.jiaobei-no  .jiaobei-final-label { color: var(--text-muted); }
.jiaobei-laugh .jiaobei-final-label { color: var(--text-muted); }
.jiaobei-attempts-flow { display: flex; flex-direction: column; align-items: center; gap: 0; }
.jiaobei-attempt {
  display: flex; align-items: center; gap: 16px;
  padding: 10px 16px; border-radius: 14px;
  border: 1px solid var(--border); background: var(--bg-surface);
  width: 100%;
}
.jiaobei-attempt-final { border-color: rgba(212,168,83,0.3); background: rgba(212,168,83,0.06); }
.jiaobei-attempt-arrow { color: var(--text-muted); font-size: 1rem; padding: 2px 0; }
.jiaobei-attempt-no { font-size: 0.8rem; color: var(--text-muted); min-width: 36px; }
.jiaobei-coin-pair { display: flex; gap: 8px; flex: 1; justify-content: center; }
.jiaobei-coin {
  width: 32px; height: 32px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 0.7rem; font-weight: 600; border: 1.5px solid;
}
.jiaobei-coin-round { background: rgba(212,168,83,0.15); border-color: var(--gold); color: var(--gold); }
.jiaobei-coin-round::after { content: "陽"; font-size: 0.64rem; }
.jiaobei-coin-flat  { background: rgba(180,180,200,0.12); border-color: var(--border-accent); color: var(--text-muted); }
.jiaobei-coin-flat::after  { content: "陰"; font-size: 0.64rem; }
.jiaobei-attempt-label { font-size: 0.88rem; font-weight: 600; min-width: 42px; text-align: right; }
.jiaobei-attempt-shengjiao { color: var(--gold); }
.jiaobei-attempt-yinjiao   { color: var(--text-muted); }
.jiaobei-attempt-xiaojiao  { color: #7ab8d8; }
.jiaobei-retry-hint { margin: 0; font-size: 0.84rem; color: var(--text-muted); text-align: center; }

/* §Plan 2 §12 — Bazi 深化 */
.bazi-verdict-banner {
  padding: 16px 18px; margin-bottom: 18px;
  border-radius: 16px; border: 1px solid rgba(212,168,83,0.2);
  background: rgba(212,168,83,0.05); display: grid; gap: 10px;
}
.bazi-verdict-headline { margin: 0; font-size: 0.96rem; color: var(--text-soft); line-height: 1.6; }
.bazi-verdict-meta { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.bazi-verdict-label { font-size: 0.72rem; color: var(--text-muted); }
.bazi-strength-badge {
  display: inline-flex; padding: 2px 10px; border-radius: 999px;
  font-size: 0.8rem; font-weight: 600; border: 1px solid;
}
.bazi-strength-pos2 { background: rgba(212,168,83,0.18); border-color: rgba(212,168,83,0.3);  color: var(--gold); }
.bazi-strength-pos1 { background: rgba(212,168,83,0.10); border-color: rgba(212,168,83,0.2);  color: rgba(212,168,83,0.8); }
.bazi-strength-mid  { background: rgba(255,255,255,0.04); border-color: rgba(255,255,255,0.1); color: var(--text-muted); }
.bazi-strength-neg1 { background: rgba(255,255,255,0.04); border-color: rgba(255,255,255,0.08); color: var(--text-muted); opacity: 0.75; }
.bazi-strength-neg2 { background: rgba(255,255,255,0.02); border-color: rgba(255,255,255,0.06); color: var(--text-muted); opacity: 0.55; }
.bazi-pattern-badge {
  display: inline-flex; padding: 2px 10px; border-radius: 999px;
  font-size: 0.8rem; border: 1px solid var(--border-accent); color: var(--text-soft); background: var(--bg-surface);
}
.bazi-elem-tag {
  display: inline-flex; align-items: center; justify-content: center;
  width: 26px; height: 26px; border-radius: 50%; font-size: 0.82rem; font-weight: 600; border: 1.5px solid;
}
.bazi-elem-tag.bazi-elem-unf { opacity: 0.55; filter: saturate(0.6); }
.bazi-elem-wood  { background: rgba(212,168,83,0.07); border-color: rgba(212,168,83,0.18); color: rgba(212,168,83,0.9); }
.bazi-elem-fire  { background: rgba(212,168,83,0.07); border-color: rgba(212,168,83,0.18); color: var(--gold); }
.bazi-elem-earth { background: rgba(212,168,83,0.12); border-color: rgba(212,168,83,0.28); color: var(--gold); }
.bazi-elem-metal { background: rgba(255,255,255,0.06); border-color: rgba(255,255,255,0.18); color: var(--text-soft); }
.bazi-elem-water { background: rgba(255,255,255,0.04); border-color: rgba(255,255,255,0.12); color: var(--text-muted); }
.bazi-verdict-notes { margin: 0; padding-left: 18px; display: grid; gap: 4px; }
.bazi-verdict-hi { color: rgba(212,168,83,0.85); font-size: 0.84rem; }
.bazi-verdict-ri { color: var(--text-muted); font-size: 0.84rem; opacity: 0.65; }

/* Four pillars table */
.bazi-pillars-table {
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: 8px; margin-bottom: 18px;
}
.bazi-pillar-col {
  display: flex; flex-direction: column; align-items: center; gap: 6px;
  padding: 12px 8px; border-radius: 16px;
  border: 1px solid var(--border); background: var(--bg-surface);
}
.bazi-pillar-day { border-color: rgba(212,168,83,0.3); background: rgba(212,168,83,0.04); }
.bazi-pillar-header { font-size: 0.68rem; color: var(--text-muted); letter-spacing: 0.1em; }
.bazi-ten-god-badge { font-size: 0.72rem; padding: 1px 7px; border-radius: 999px; background: var(--bg-deep); border: 1px solid var(--border); color: var(--text-soft); text-align: center; }
.bazi-tg-self { color: var(--gold); border-color: rgba(212,168,83,0.3); background: rgba(212,168,83,0.08); }
.bazi-stem-cell, .bazi-branch-cell { display: flex; flex-direction: column; align-items: center; gap: 2px; }
.bazi-stem-cell strong, .bazi-branch-cell strong { font-size: 1.2rem; }
.bazi-stem-elem, .bazi-branch-phase { font-size: 0.68rem; color: var(--text-muted); }
.bazi-hidden-block { display: flex; flex-direction: column; align-items: center; gap: 2px; margin-top: 4px; border-top: 1px solid var(--border); padding-top: 4px; width: 100%; }
.bazi-hidden-stem { font-size: 0.78rem; font-weight: 600; }
.bazi-hidden-tg { font-size: 0.66rem; color: var(--text-muted); }

/* Element bars */
.bazi-elem-bars { display: grid; gap: 7px; margin-bottom: 18px; }
.bazi-elem-bar-row { display: flex; align-items: center; gap: 8px; }
.bazi-elem-bar-label { width: 20px; font-size: 0.82rem; font-weight: 600; text-align: center; }
.bazi-elem-bar-track { flex: 1; height: 7px; border-radius: 4px; background: rgba(255,255,255,0.06); overflow: hidden; }
.bazi-elem-bar-fill { height: 100%; border-radius: 4px; background: rgba(212,168,83,0.55); }
.bazi-elem-bar-fill.bazi-elem-wood  { background: rgba(244,241,234,0.5); }
.bazi-elem-bar-fill.bazi-elem-fire  { background: rgba(212,168,83,0.7); }
.bazi-elem-bar-fill.bazi-elem-earth { background: var(--gold); }
.bazi-elem-bar-fill.bazi-elem-metal { background: rgba(244,241,234,0.35); }
.bazi-elem-bar-fill.bazi-elem-water { background: rgba(244,241,234,0.22); }
.bazi-elem-bar-val { font-size: 0.72rem; color: var(--text-muted); width: 14px; text-align: right; }

/* Luck timeline sections */
.bazi-section { display: grid; gap: 8px; margin-bottom: 18px; }
.bazi-section-label { font-size: 0.72rem; letter-spacing: 0.08em; color: var(--gold); text-transform: uppercase; }
.bazi-luck-row, .bazi-annual-row { display: flex; gap: 8px; overflow-x: auto; padding-bottom: 4px; }
.bazi-luck-card, .bazi-annual-card {
  display: flex; flex-direction: column; align-items: center; gap: 3px;
  padding: 8px 12px; border-radius: 12px; min-width: 72px;
  border: 1px solid var(--border); background: var(--bg-surface); flex-shrink: 0;
}
.bazi-luck-ages, .bazi-annual-year { font-size: 0.7rem; color: var(--text-muted); }
.bazi-luck-pillar, .bazi-annual-pillar { font-size: 0.9rem; }
.bazi-luck-tg, .bazi-annual-tg { font-size: 0.72rem; color: var(--gold); }
.bazi-shensha-row { display: flex; gap: 8px; flex-wrap: wrap; }
.bazi-shensha-card {
  display: flex; flex-direction: column; gap: 2px;
  padding: 8px 12px; border-radius: 10px;
  border: 1px solid var(--border); background: var(--bg-surface);
}
.bazi-shensha-card strong { font-size: 0.86rem; }
.bazi-shensha-pillars { font-size: 0.72rem; color: var(--text-muted); }

/* §Plan 2 §14 — Ziwei Dou Shu */
.ziwei-header {
  display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; margin-bottom: 14px;
}
.ziwei-title { margin: 0; font-size: 1.16rem; font-weight: 600; display: flex; align-items: baseline; gap: 10px; }
.ziwei-ju-badge {
  display: inline-flex; padding: 2px 10px; border-radius: 999px;
  background: rgba(212,168,83,0.12); border: 1px solid rgba(212,168,83,0.25);
  color: var(--gold); font-size: 0.8rem; font-weight: 500;
}
.ziwei-direction-badge {
  display: inline-flex; padding: 2px 9px; border-radius: 999px;
  background: var(--bg-surface); border: 1px solid var(--border);
  color: var(--text-muted); font-size: 0.78rem;
}
.ziwei-sanfang-hint { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 18px; }
.ziwei-sanfang-label { font-size: 0.72rem; color: var(--gold); letter-spacing: 0.08em; }
.ziwei-sanfang-tag {
  display: inline-flex; padding: 2px 9px; border-radius: 999px;
  background: rgba(212,168,83,0.08); border: 1px solid rgba(212,168,83,0.2);
  color: var(--text-soft); font-size: 0.8rem;
}

/* 4×4 Palace Grid */
.ziwei-palace-grid {
  display: grid; gap: 5px; margin-bottom: 20px;
}
.ziwei-grid-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 5px; }
.ziwei-palace, .ziwei-palace-empty {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px;
  padding: 10px 6px; border-radius: 12px; min-height: 68px;
  border: 1px solid var(--border); background: var(--bg-surface);
  text-align: center; position: relative;
}
.ziwei-palace-empty { background: transparent; border-color: transparent; }
.ziwei-palace-mingong { border-color: rgba(212,168,83,0.4); background: rgba(212,168,83,0.07); }
.ziwei-palace-sanfang { border-color: rgba(120,160,220,0.3); }
.ziwei-palace-decade { border-color: rgba(130,200,130,0.35); }
.ziwei-palace-name { font-size: 0.82rem; font-weight: 600; }
.ziwei-palace-branch { font-size: 0.72rem; color: var(--text-muted); }
.ziwei-decade-dot { position: absolute; top: 6px; right: 8px; color: rgba(130,200,130,0.8); font-size: 0.7rem; }

/* Decade / Annual rows */
.ziwei-section { display: grid; gap: 8px; margin-bottom: 18px; }
.ziwei-section-label { font-size: 0.72rem; letter-spacing: 0.08em; color: var(--gold); text-transform: uppercase; }
.ziwei-decade-row, .ziwei-annual-row { display: flex; gap: 8px; overflow-x: auto; padding-bottom: 4px; }
.ziwei-decade-card, .ziwei-annual-card {
  display: flex; flex-direction: column; align-items: center; gap: 3px;
  padding: 8px 12px; border-radius: 12px; min-width: 72px; flex-shrink: 0;
  border: 1px solid var(--border); background: var(--bg-surface);
}
.ziwei-decade-active, .ziwei-annual-active { border-color: rgba(130,200,130,0.35); background: rgba(130,200,130,0.06); }
.ziwei-decade-ages, .ziwei-annual-year { font-size: 0.7rem; color: var(--text-muted); }
.ziwei-decade-palace, .ziwei-annual-palace { font-size: 0.88rem; }
.ziwei-decade-branch, .ziwei-annual-branch { font-size: 0.72rem; color: var(--gold); }
.ziwei-stars-note { margin: 0; font-size: 0.8rem; color: var(--text-muted); font-style: italic; }

/* ─── 27. Report (Overview / Topic) ─── */
.report-overview, .report-topic-detail { display: grid; gap: 18px; }

.report-overview-head, .report-topic-head {
  display: flex; align-items: start; justify-content: space-between; gap: 16px; flex-wrap: wrap;
}

.report-overview-head > div, .report-topic-head > div { display: grid; gap: 6px; }

.report-overview-section, .report-topic-section { display: grid; gap: 14px; }

.report-overview-section-head, .report-topic-section-head {
  display: flex; align-items: center; justify-content: space-between; gap: 14px;
}

.report-overview-section-head h4, .report-topic-section-head h4 { margin: 0; font-size: 1.2rem; }

.report-overview-card-grid, .report-topic-card-grid {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px;
}

.report-overview-card, .report-topic-card {
  display: grid; gap: 8px; padding: 16px;
  border-radius: 18px; border: 1px solid var(--border); background: var(--bg-surface);
  cursor: pointer; transition: transform 200ms var(--ease-out), border-color 200ms ease;
}

.report-overview-card:hover, .report-topic-card:hover {
  transform: translateY(-2px); border-color: var(--border-accent);
}

.report-overview-card.active, .report-topic-card.active {
  border-color: var(--border-accent); background: rgba(212,168,83,0.04);
}

.report-overview-card h5, .report-topic-card h5 { margin: 0; font-size: 1rem; }
.report-overview-card p, .report-topic-card p { margin: 0; color: var(--text-soft); font-size: 0.88rem; }

.report-overview-actions, .report-topic-actions {
  display: flex; flex-wrap: wrap; gap: 10px;
}

.report-overview-structure-grid, .report-overview-mini-grid {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px;
}

.report-overview-quick-row { display: flex; flex-wrap: wrap; gap: 10px; }

.report-topic-layout {
  display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(280px, 0.7fr); gap: 20px; align-items: start;
}

.report-topic-sidebar { position: sticky; top: 88px; display: grid; gap: 16px; }
.report-topic-main { display: grid; gap: 18px; }

.report-topic-prose { color: var(--text-soft); line-height: 1.9; font-size: 0.96rem; }
.report-topic-prose p { margin: 0 0 12px; }

.report-topic-check-list { display: grid; gap: 10px; }

.report-topic-check-item {
  display: grid; grid-template-columns: auto 1fr; gap: 12px; align-items: start;
  padding: 12px 14px; border-radius: 14px; border: 1px solid var(--border); background: var(--bg-surface);
}

.report-topic-check-icon { width: 24px; height: 24px; border-radius: 8px; background: var(--gold-dim); color: var(--gold); display: grid; place-items: center; font-size: 0.78rem; }

/* ─── 28. Suggestion Strip ─── */
.suggestion-strip { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }

.suggestion-strip button {
  padding: 5px 10px; border-radius: 999px;
  background: rgba(255,255,255,0.04); border: 1px solid var(--border);
  color: var(--text-soft); font-size: 0.78rem;
  transition: border-color 180ms ease, background 180ms ease;
}

.suggestion-strip button:hover { border-color: var(--border-accent); background: rgba(255,255,255,0.06); }

/* ─── 29. Scrollbar & Selection ─── */
::-webkit-scrollbar { width: 7px; height: 7px; }
::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.1); border-radius: 999px; }
::selection { background: rgba(212,168,83,0.24); color: white; }

/* ═══════════════════════════════════════════════════════
   RITUAL FLOW — Full-page staged overlay
   ═══════════════════════════════════════════════════════ */

/* ─── Container ─── */
.ritual-flow {
  position: fixed;
  inset: 0;
  z-index: 100;
  background: var(--bg);
  overflow: hidden;
  opacity: 0;
  visibility: hidden;
  transition: opacity 700ms ease, visibility 0s 700ms;
}

.ritual-flow.active {
  opacity: 1;
  visibility: visible;
  transition: opacity 700ms ease, visibility 0s;
}

body.ritual-flow-open .top-bar,
body.ritual-flow-open .bgm-dock,
body.ritual-flow-open .app-shell {
  opacity: 0;
  pointer-events: none;
}

/* ─── Flow Page (each stage) ─── */
.flow-page {
  position: absolute;
  inset: 0;
  min-height: 100dvh;
  max-height: 100dvh;
  overflow-y: auto;
  overflow-x: hidden;
  overscroll-behavior-y: contain;
  -webkit-overflow-scrolling: touch;
  scrollbar-gutter: stable;
  display: flex;
  align-items: stretch;
  justify-content: center;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateY(28px) scale(1.01);
  filter: blur(16px);
  transition:
    opacity 760ms cubic-bezier(0.22, 1, 0.36, 1),
    transform 760ms cubic-bezier(0.22, 1, 0.36, 1),
    filter 760ms ease,
    visibility 0s linear 760ms;
}

.flow-page.active {
  visibility: visible;
  transition:
    opacity 760ms cubic-bezier(0.22, 1, 0.36, 1),
    transform 760ms cubic-bezier(0.22, 1, 0.36, 1),
    filter 760ms ease,
    visibility 0s;
}

.flow-page.active:not(.is-pre-enter):not(.is-leaving) {
  opacity: 1;
  pointer-events: auto;
  transform: none;
  filter: none;
}

.flow-page.active.is-pre-enter {
  opacity: 0;
  pointer-events: none;
  transform: translateY(42px) scale(1.02);
  filter: blur(18px);
}

.flow-page.active.is-leaving {
  opacity: 0;
  pointer-events: none;
  transform: translateY(-26px) scale(0.985);
  filter: blur(18px);
}

.flow-page[data-flow-page="systems"] {
  transform: none;
}

.flow-page[data-flow-page="systems"].active {
  transition:
    opacity 760ms cubic-bezier(0.22, 1, 0.36, 1),
    transform 760ms cubic-bezier(0.22, 1, 0.36, 1),
    filter 760ms ease,
    visibility 0s;
}

.flow-page[data-flow-page="systems"].active:not(.is-pre-enter):not(.is-leaving) {
  filter: none;
}

.flow-page[data-flow-page="systems"].active.is-pre-enter,
.flow-page[data-flow-page="systems"].active.is-leaving {
  transform: translateY(12px);
  filter: blur(6px);
}

/* ─── Background Veil ─── */
.flow-veil {
  position: absolute;
  inset: 0;
  z-index: 0;
  background:
    radial-gradient(ellipse 60% 40% at 30% 20%, rgba(120,199,232,0.06), transparent),
    radial-gradient(ellipse 50% 40% at 75% 15%, rgba(212,168,83,0.08), transparent),
    var(--bg);
}

.flow-veil::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(1.2px 1.2px at 12% 28%, rgba(255,255,255,0.12), transparent),
    radial-gradient(0.8px 0.8px at 78% 15%, rgba(255,255,255,0.08), transparent),
    radial-gradient(1px 1px at 42% 72%, rgba(255,255,255,0.06), transparent),
    radial-gradient(0.6px 0.6px at 65% 88%, rgba(255,255,255,0.05), transparent),
    radial-gradient(1.4px 1.4px at 88% 42%, rgba(255,255,255,0.07), transparent);
  pointer-events: none;
}

.flow-veil--tarot {
  background:
    radial-gradient(ellipse 42% 28% at 50% 8%, rgba(212,168,83,0.12), transparent),
    radial-gradient(ellipse 44% 42% at 16% 78%, rgba(120,199,232,0.08), transparent),
    radial-gradient(ellipse 32% 34% at 82% 68%, rgba(200,110,48,0.06), transparent),
    linear-gradient(180deg, rgba(5, 8, 18, 0.92), rgba(7, 10, 20, 0.98)),
    var(--bg);
}

/* ─── Content Layout ─── */
.flow-inner {
  position: relative;
  z-index: 1;
  width: min(1200px, 100%);
  min-height: 100svh;
  padding: 80px 40px 60px;
  display: grid;
  gap: 24px;
  align-content: start;
}

.flow-inner--center {
  justify-items: center;
  text-align: center;
}

.flow-inner--narrow {
  max-width: 680px;
  margin: 0 auto;
}

.flow-inner--wide {
  max-width: 1180px;
  margin: 0 auto;
}

/* ─── Typography ─── */
.flow-heading {
  margin: 0;
  font-size: clamp(2rem, 4vw, 3.2rem);
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: -0.01em;
}

.flow-heading--serif {
  font-family: var(--serif);
  font-size: clamp(2.4rem, 5.5vw, 4.4rem);
  font-weight: 600;
  letter-spacing: -0.02em;
}

.flow-heading--medium {
  font-size: clamp(1.7rem, 3.4vw, 2.6rem);
  line-height: 1.26;
}

.flow-body {
  margin: 0;
  max-width: 52ch;
  color: var(--text-soft);
  font-size: 1.06rem;
  line-height: 1.8;
}

.flow-body--muted {
  color: var(--text-muted);
  font-size: 0.95rem;
}

/* ─── System Select Grid ─── */
.flow-system-stage,
.flow-system-intro,
.flow-system-note,
.flow-system-scene,
.flow-system-scene-note {
  display: grid;
  gap: 16px;
}

.flow-system-stage {
  align-content: center;
}

.flow-system-intro {
  grid-template-columns: minmax(0, 1.08fr) minmax(280px, 0.92fr);
  align-items: end;
}

/* P5.1：术数馆 eyebrow 字号放大，与下方标题节奏更平衡 */
.flow-system-eyebrow {
  font-size: 1.1rem;
  letter-spacing: 0.32em;
  margin-bottom: 14px;
}

.flow-system-note,
.flow-system-scene-note {
  padding: 22px 24px;
  border-radius: 26px;
  border: 1px solid rgba(255,255,255,0.08);
  background:
    radial-gradient(circle at top right, rgba(212,168,83,0.08), transparent 34%),
    linear-gradient(180deg, rgba(255,255,255,0.04), transparent 24%),
    rgba(16, 20, 32, 0.82);
}

.flow-system-note span,
.flow-system-scene-note span {
  color: var(--gold);
  font-size: 0.76rem;
  font-weight: 800;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}

.flow-system-note p,
.flow-system-scene-note p {
  margin: 0;
  color: var(--text-soft);
  line-height: 1.8;
}

.flow-system-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
  gap: 14px;
  margin: 20px 0 12px;
  width: min(1180px, 100%);
}

.flow-system-card {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 18px 22px;
  min-width: 160px;
  border-radius: 20px;
  border: 1px solid var(--border);
  background: linear-gradient(180deg, rgba(255,255,255,0.04), transparent 30%), var(--bg-surface);
  color: var(--text);
  text-align: left;
  transition: transform 300ms var(--ease-out), border-color 300ms ease, box-shadow 300ms ease;
}

.flow-system-card:hover {
  transform: translateY(-3px);
  border-color: var(--border-accent);
  box-shadow: 0 12px 36px rgba(0,0,0,0.22);
}

/* P5.34：未上线占位（易经 / 梅花）—— 暗，不可点，不抬，不发光 */
.flow-system-card.is-coming-soon {
  opacity: 0.42;
  cursor: not-allowed;
  pointer-events: none;
  filter: grayscale(0.4);
}
.flow-system-card.is-coming-soon small {
  color: var(--gold);
  opacity: 0.72;
}

.flow-system-icon {
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  border-radius: 16px;
  background: rgba(255,255,255,0.04);
  border: 1px solid var(--border);
  font-size: 1.4rem;
}

.flow-system-card strong {
  display: block;
  font-size: 1.06rem;
}

.flow-system-card small {
  display: block;
  color: var(--text-muted);
  font-size: 0.82rem;
}

.flow-system-scene {
  justify-items: center;
  text-align: center;
  align-content: center;
}

.flow-system-scene-mark {
  display: grid;
  place-items: center;
  width: 120px;
  height: 120px;
  border-radius: 32px;
  border: 1px solid rgba(212,168,83,0.24);
  background:
    radial-gradient(circle at center, rgba(212,168,83,0.18), transparent 60%),
    linear-gradient(180deg, rgba(255,255,255,0.04), transparent 26%),
    rgba(10, 13, 22, 0.94);
  color: var(--gold);
  font-family: var(--serif);
  font-size: 3rem;
  box-shadow: 0 28px 72px rgba(0,0,0,0.34);
}

/* ─── Tarot Opening ─── */
.flow-tarot-opening {
  grid-template-columns: minmax(320px, 0.64fr) minmax(0, 1fr);
  gap: 42px;
  align-items: center;
}

.flow-tarot-opening-visual,
.flow-tarot-opening-copy,
.flow-question-side,
.flow-question-sheet,
.flow-question-selections,
.flow-intent-hero,
.flow-spread-hero,
.flow-tarot-drawing,
.flow-result-head,
.flow-result-reading,
.flow-card,
.flow-card-copy {
  display: grid;
  gap: 16px;
}

/* P5.5：换宋画仕女执镜，绢底自带气韵——容器去金光晕、改竖比、轻裱框 */
.flow-oracle-frame {
  position: relative;
  padding: 14px;
  border-radius: 14px;
  border: 1px solid rgba(180, 154, 108, 0.18);
  background:
    linear-gradient(180deg, rgba(28, 24, 18, 0.55), rgba(14, 12, 10, 0.78));
  box-shadow:
    0 20px 60px rgba(0,0,0,0.42),
    inset 0 0 0 1px rgba(212,168,83,0.08);
}

.flow-oracle-halo {
  /* 绢本设色不需要金光晕——保留节点但不显示，避免影响仕女背景 */
  display: none;
}

.flow-oracle-image {
  position: relative;
  display: block;
  width: 100%;
  aspect-ratio: 1055 / 1491;
  object-fit: cover;
  border-radius: 6px;
  border: 1px solid rgba(180, 154, 108, 0.22);
}

.flow-oracle-caption {
  display: flex;
  align-items: center;
  gap: 12px;
  color: var(--text-muted);
  font-size: 0.92rem;
}

.flow-oracle-caption-line {
  flex: 0 0 68px;
  height: 1px;
  background: linear-gradient(90deg, rgba(212,168,83,0), rgba(212,168,83,0.8), rgba(212,168,83,0));
}

.flow-tarot-opening-copy {
  align-content: center;
}

/* P5.4：塔罗启牌页 eyebrow / vow / caption 字号上调，避免淹没在大标题之下 */
.flow-tarot-eyebrow {
  font-size: 1.05rem;
  letter-spacing: 0.32em;
  margin-bottom: 14px;
}

.flow-tarot-opening-copy .flow-opening-vow span {
  font-size: 0.98rem;
  letter-spacing: 0.22em;
}

.flow-tarot-opening-copy .flow-opening-vow p {
  font-size: 1.08rem;
  line-height: 1.85;
}

.flow-tarot-opening-copy .flow-body {
  font-size: 1.05rem;
  line-height: 1.95;
}

.flow-tarot-opening-visual .flow-oracle-caption {
  font-size: 1.02rem;
}

/* P5.6：塔罗·立意 页字号上调（沿用启牌页节奏） */
.flow-tarot-intent .flow-intent-hero .flow-body {
  font-size: 1.05rem;
  line-height: 1.95;
}

.flow-tarot-aside span {
  font-size: 0.98rem;
  letter-spacing: 0.22em;
}

.flow-tarot-aside p {
  font-size: 1.05rem;
  line-height: 1.85;
}

.flow-tarot-intent .flow-intent-card small {
  font-size: 1rem;
  line-height: 1.78;
  color: var(--text-soft);
}

/* P5.7：塔罗·择阵 页字号上调 + 中文 eyebrow 排版 */
.flow-tarot-spread .flow-spread-hero .flow-body {
  font-size: 1.05rem;
  line-height: 1.95;
}

.flow-tarot-spread .flow-spread-card p {
  font-size: 1.02rem;
  line-height: 1.85;
}

.flow-tarot-spread .flow-spread-card .card-eyebrow {
  margin: 0 0 4px;
  color: var(--gold);
  font-size: 0.95rem;
  font-weight: 700;
  letter-spacing: 0.28em;
}

.flow-opening-vow,
.flow-intent-aside,
.flow-spread-aside,
.flow-question-sheet,
.flow-selection-card,
.flow-result-reading {
  padding: 20px 22px;
  border-radius: 26px;
  border: 1px solid rgba(255,255,255,0.08);
  background:
    linear-gradient(180deg, rgba(255,255,255,0.04), transparent 26%),
    rgba(16, 20, 32, 0.82);
}

.flow-opening-vow span,
.flow-spread-aside span,
.flow-selection-card span {
  color: var(--gold);
  font-size: 0.76rem;
  font-weight: 800;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}

.flow-opening-vow p,
.flow-intent-aside p,
.flow-spread-aside p,
.flow-selection-card small {
  margin: 0;
  color: var(--text-soft);
  line-height: 1.8;
}

/* ─── Intent ─── */
.flow-intent-hero {
  grid-template-columns: minmax(0, 1.15fr) minmax(260px, 0.85fr);
  align-items: end;
}

.flow-intent-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
  width: 100%;
  margin: 8px 0 0;
}

.flow-intent-chip {
  display: grid;
  grid-template-columns: 62px minmax(0, 1fr);
  align-items: start;
  gap: 16px;
  min-height: 156px;
  padding: 22px;
  border-radius: 26px;
  border: 1px solid var(--border);
  background:
    radial-gradient(circle at top right, rgba(120,199,232,0.08), transparent 32%),
    linear-gradient(180deg, rgba(255,255,255,0.04), transparent 28%),
    rgba(15, 19, 30, 0.9);
  color: var(--text);
  text-align: left;
  transition: transform 300ms var(--ease-out), border-color 300ms ease, box-shadow 300ms ease, background 300ms ease;
}

.flow-intent-card strong,
.flow-spread-card h3,
.flow-selection-card strong,
.flow-card h4 {
  font-family: var(--serif);
  font-weight: 600;
}

.flow-intent-card strong {
  display: block;
  font-size: 1.42rem;
}

.flow-intent-card small {
  display: block;
  margin-top: 6px;
  color: var(--text-muted);
  font-size: 0.88rem;
  line-height: 1.7;
}

.flow-intent-chip:hover {
  transform: translateY(-3px);
  border-color: var(--border-accent);
  box-shadow: 0 18px 40px rgba(0,0,0,0.24);
}

.flow-intent-chip.active {
  border-color: rgba(212,168,83,0.5);
  background:
    radial-gradient(circle at top right, rgba(212,168,83,0.12), transparent 40%),
    rgba(18, 22, 34, 0.94);
  box-shadow: 0 14px 40px rgba(0,0,0,0.24), inset 0 0 0 1px rgba(212,168,83,0.1);
}

.flow-intent-icon {
  display: grid;
  place-items: center;
  width: 56px;
  height: 56px;
  border-radius: 18px;
  background: rgba(255,255,255,0.05);
  border: 1px solid var(--border);
  font-size: 1.4rem;
}

/* ─── Spread ─── */
.flow-spread-hero {
  grid-template-columns: minmax(0, 1.14fr) minmax(260px, 0.86fr);
  align-items: end;
}

.flow-spread-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
}

.flow-spread-card {
  display: grid;
  gap: 14px;
  padding: 24px 24px 22px;
  border-radius: 28px;
  border: 1px solid var(--border);
  background:
    radial-gradient(circle at top right, rgba(212,168,83,0.08), transparent 34%),
    linear-gradient(180deg, rgba(255,255,255,0.04), transparent 24%),
    rgba(15, 19, 30, 0.92);
  color: var(--text);
  text-align: left;
  transition: transform 300ms var(--ease-out), border-color 300ms ease, box-shadow 300ms ease, background 300ms ease;
}

.flow-spread-card h3 {
  margin: 0;
  font-size: 1.82rem;
}

.flow-spread-card p {
  margin: 0;
  color: var(--text-soft);
  line-height: 1.8;
}

.flow-spread-card:hover,
.flow-spread-card.active {
  transform: translateY(-3px);
  border-color: var(--border-accent);
  box-shadow: 0 20px 44px rgba(0,0,0,0.26);
}

.flow-spread-card.active {
  background:
    radial-gradient(circle at top right, rgba(212,168,83,0.12), transparent 34%),
    linear-gradient(180deg, rgba(255,255,255,0.05), transparent 24%),
    rgba(18, 22, 34, 0.96);
}

.flow-spread-diagram {
  display: grid;
  align-items: center;
  gap: 12px;
  min-height: 120px;
  padding: 20px;
  border-radius: 22px;
  border: 1px solid rgba(255,255,255,0.06);
  background:
    radial-gradient(circle at center, rgba(212,168,83,0.08), transparent 52%),
    rgba(255,255,255,0.02);
}

.flow-spread-diagram span {
  position: relative;
  display: block;
  width: 84px;
  height: 120px;
  border-radius: 18px;
  border: 1px solid rgba(120,199,232,0.16);
  background:
    radial-gradient(circle at 50% 18%, rgba(255,255,255,0.16) 0 1px, transparent 2px),
    radial-gradient(circle at 22% 72%, rgba(255,255,255,0.1) 0 1px, transparent 2px),
    radial-gradient(circle at 76% 78%, rgba(255,255,255,0.08) 0 1px, transparent 2px),
    radial-gradient(circle at top, rgba(120,199,232,0.14), transparent 28%),
    linear-gradient(180deg, #11203a 0%, #0a1324 100%);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.03), 0 14px 28px rgba(0,0,0,0.28);
  overflow: hidden;
}

.flow-spread-diagram span::before {
  content: "";
  position: absolute;
  inset: 10px;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,0.08);
  background:
    radial-gradient(circle, rgba(212,168,83,0.12), transparent 54%),
    linear-gradient(180deg, rgba(255,255,255,0.03), transparent 34%);
  box-shadow: inset 0 0 0 1px rgba(212,168,83,0.06);
}

.flow-spread-diagram span::after {
  content: "☾";
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  color: var(--gold);
  font-size: 1.55rem;
  text-shadow: 0 0 18px rgba(212,168,83,0.22);
}

.flow-spread-diagram--single {
  justify-content: center;
}

.flow-spread-diagram--single span {
  transform: rotate(4deg);
}

.flow-spread-diagram--triple {
  grid-template-columns: repeat(3, auto);
  justify-content: center;
}

.flow-spread-diagram--triple span:nth-child(1) {
  transform: rotate(-8deg) translateY(8px);
}

.flow-spread-diagram--triple span:nth-child(2) {
  transform: translateY(-4px);
}

.flow-spread-diagram--triple span:nth-child(3) {
  transform: rotate(8deg) translateY(8px);
}

/* ─── Actions Row ─── */
.flow-actions {
  display: flex;
  gap: 16px;
  align-items: center;
  margin-top: 8px;
}

.flow-actions--spread {
  justify-content: center;
  gap: 20px;
}

/* ─── Question ─── */
.flow-tarot-question {
  grid-template-columns: minmax(300px, 0.72fr) minmax(0, 1.28fr);
  gap: 28px;
  align-items: start;
}

.flow-question-selections {
  gap: 14px;
}

.flow-selection-card strong {
  font-size: 1.46rem;
}

.flow-question-sheet {
  gap: 18px;
  background:
    radial-gradient(circle at top right, rgba(212,168,83,0.08), transparent 34%),
    linear-gradient(180deg, rgba(255,255,255,0.04), transparent 26%),
    rgba(16, 20, 30, 0.92);
}

.flow-question-field {
  display: grid;
  gap: 12px;
}

.flow-question-label {
  color: var(--gold);
  font-size: 0.86rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.flow-textarea {
  width: 100%;
  min-height: 220px;
  padding: 22px 24px;
  border-radius: 24px;
  border: 1px solid rgba(255,255,255,0.08);
  background:
    linear-gradient(180deg, rgba(255,255,255,0.03), transparent 26%),
    rgba(7, 10, 18, 0.94);
  color: var(--text);
  font-family: var(--serif);
  font-size: 1.14rem;
  line-height: 1.88;
  resize: vertical;
  transition: border-color 300ms ease, box-shadow 300ms ease;
}

.flow-textarea:focus {
  outline: none;
  border-color: var(--border-accent);
  box-shadow: 0 0 0 1px rgba(212,168,83,0.18);
}

.flow-textarea::placeholder {
  color: var(--text-muted);
}

.flow-question-presets {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.flow-question-footer {
  display: grid;
  gap: 14px;
}

/* ─── Drawing ─── */
.flow-tarot-drawing {
  min-height: 100vh;
  justify-items: stretch;
  align-content: center;
  gap: 28px;
}

.flow-drawing-hero {
  display: grid;
  gap: 18px;
  justify-items: center;
  text-align: center;
}

.flow-drawing-disc {
  position: relative;
  display: grid;
  place-items: center;
  width: 220px;
  height: 220px;
}

/* P5.17：disc 简化——单圈细金线 + 中心 SVG 月牙，去蓝圈 + 去金色径向 */
.flow-drawing-ring {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  border: 1px solid rgba(212, 168, 83, 0.28);
  box-shadow: 0 0 56px rgba(212, 168, 83, 0.1);
  /* 不旋转，做呼吸感 */
  animation: ritual-breathe 6s ease-in-out infinite;
}

.flow-drawing-core {
  position: relative;
  z-index: 1;
  display: grid;
  place-items: center;
  width: 96px;
  height: 96px;
  color: var(--gold);
  filter: drop-shadow(0 0 18px rgba(212, 168, 83, 0.32));
  animation: ritual-breathe 5.2s ease-in-out infinite;
}

.flow-drawing-core svg {
  width: 100%;
  height: 100%;
}

.flow-drawing-meta,
.flow-result-ribbon {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  justify-content: center;
}

.flow-drawing-board {
  width: min(1080px, 100%);
  margin: 0 auto;
  scroll-margin-top: 24px;
}

.flow-tarot-drawing.has-board {
  align-content: start;
  gap: 18px;
}

.flow-tarot-drawing.has-board .flow-drawing-hero {
  gap: 12px;
}

.flow-tarot-drawing.has-board .flow-drawing-disc {
  width: 156px;
  height: 156px;
}

.flow-tarot-drawing.has-board .flow-drawing-core {
  width: 78px;
  height: 78px;
  font-size: 1.85rem;
}

.flow-tarot-drawing.has-board .flow-drawing-copy .flow-heading--serif {
  font-size: clamp(1.9rem, 3.8vw, 3rem);
  max-width: 14ch;
}

.flow-drawing-board .ritual-fan-wrap {
  justify-items: stretch;
}

.flow-drawing-board .ritual-fan {
  width: 100%;
}

.flow-drawing-board .ritual-table {
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
}

.flow-drawing-board .ritual-seat .reveal-hint {
  position: static;
  left: auto;
  bottom: auto;
  transform: none;
  margin-top: 2px;
}

.ritual-card-back--muted {
  opacity: 0.45;
  filter: saturate(0.7);
}

/* ─── Result Page ─── */
.flow-tarot-result,
.flow-result-hero,
.flow-result-question,
.flow-result-atmosphere,
.flow-result-stage,
.flow-result-summary {
  display: grid;
  gap: 18px;
}

.flow-tarot-result {
  gap: 26px;
  min-height: auto;
  padding-bottom: max(96px, env(safe-area-inset-bottom));
}

.flow-result-hero {
  justify-items: center;
  text-align: center;
}

.flow-result-head {
  align-items: start;
  justify-items: center;
  text-align: center;
}

.flow-result-question {
  width: min(820px, 100%);
  padding: 26px 30px;
  border-radius: 30px;
  border: 1px solid rgba(255,255,255,0.08);
  background:
    radial-gradient(circle at top, rgba(212,168,83,0.10), transparent 36%),
    linear-gradient(180deg, rgba(255,255,255,0.04), transparent 24%),
    rgba(12, 16, 27, 0.92);
  box-shadow: 0 22px 60px rgba(0,0,0,0.24);
}

.flow-result-question-label {
  color: var(--gold);
  font-size: 0.76rem;
  font-weight: 800;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}

.flow-result-question-text {
  margin: 0;
  font-family: var(--serif);
  font-size: clamp(1.24rem, 2.7vw, 1.92rem);
  line-height: 1.82;
  color: rgba(236,232,223,0.92);
}

.flow-result-atmosphere {
  width: min(920px, 100%);
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}

.flow-result-stat {
  display: grid;
  gap: 10px;
  padding: 18px 20px;
  border-radius: 22px;
  border: 1px solid rgba(255,255,255,0.08);
  background:
    linear-gradient(180deg, rgba(255,255,255,0.04), transparent 24%),
    rgba(14, 18, 28, 0.82);
  text-align: left;
}

.flow-result-stat span {
  color: var(--text-muted);
  font-size: 0.74rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.flow-result-stat strong {
  color: var(--text);
  font-family: var(--serif);
  font-size: 1.12rem;
  font-weight: 600;
}

.flow-result-stage {
  padding: 28px;
  border-radius: 34px;
  border: 1px solid rgba(255,255,255,0.08);
  background:
    radial-gradient(circle at top, rgba(212,168,83,0.08), transparent 32%),
    linear-gradient(180deg, rgba(255,255,255,0.04), transparent 26%),
    rgba(10, 14, 23, 0.92);
  box-shadow: 0 28px 84px rgba(0,0,0,0.28);
}

.flow-result-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 20px;
  width: 100%;
}

.flow-result-cards--single {
  max-width: 320px;
  margin: 0 auto;
  grid-template-columns: 1fr;
}

.flow-result-cards--triple {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.flow-card {
  display: grid;
  gap: 16px;
  align-content: start;
  padding: 24px 22px;
  border-radius: 30px;
  border: 1px solid rgba(255,255,255,0.08);
  background:
    radial-gradient(circle at top, rgba(212,168,83,0.10), transparent 38%),
    linear-gradient(180deg, rgba(255,255,255,0.04), transparent 24%),
    rgba(13, 16, 26, 0.94);
  animation: fade-up 800ms var(--ease-spring) both;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.015);
}

.flow-card.is-veiled {
  align-content: center;
  min-height: 390px;
}

.flow-card.revealed {
  border-color: rgba(212,168,83,0.22);
  box-shadow: inset 0 0 0 1px rgba(212,168,83,0.05), 0 20px 54px rgba(0,0,0,0.22);
}

.flow-card-trigger {
  position: relative;
  display: block;
  width: min(240px, 100%);
  aspect-ratio: 5 / 8;
  margin: 0 auto;
  padding: 0;
  border: 0;
  background: transparent;
  perspective: 1500px;
  transition: transform 320ms var(--ease-out), filter 320ms ease;
}

.flow-card-trigger.is-flipping {
  transform: translateY(-8px) scale(1.018);
  filter: drop-shadow(0 22px 38px rgba(212,168,83,0.16));
}

.flow-card-trigger.is-flipping .flow-card-face--back {
  animation: flow-card-turn 1100ms var(--ease-out) both;
  transform-origin: center center;
}

.flow-card-trigger.is-flipping .reveal-hint {
  opacity: 0;
}

.flow-card-display {
  position: relative;
  width: min(240px, 100%);
  aspect-ratio: 5 / 8;
  margin: 0 auto;
  filter: drop-shadow(0 26px 36px rgba(0,0,0,0.24));
}

.flow-card-face {
  position: absolute;
  inset: 0;
  display: block;
  border-radius: 26px;
  overflow: hidden;
  background:
    radial-gradient(circle at top, rgba(120,199,232,0.12), transparent 28%),
    linear-gradient(180deg, #11203a 0%, #0a1324 100%);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.03), 0 12px 24px rgba(0,0,0,0.26);
}

.flow-card-face--back {
  position: relative;
}

.flow-card-image {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  background: rgba(6,9,16,0.98);
}

.flow-card-image.is-reversed {
  transform: rotate(180deg);
}

.flow-card-image-fallback {
  position: relative;
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  border-radius: 26px;
  background:
    radial-gradient(circle at center, rgba(212,168,83,0.18), transparent 52%),
    linear-gradient(180deg, rgba(255,255,255,0.03), transparent 24%),
    rgba(7, 10, 18, 0.92);
  box-shadow: inset 0 0 42px rgba(212,168,83,0.06);
}

.flow-card-image-fallback .flow-card-symbol {
  font-size: 3rem;
}

.flow-card-numeral {
  position: absolute;
  top: 14px;
  left: 16px;
  color: rgba(255,255,255,0.5);
  font-size: 0.9rem;
  letter-spacing: 0.18em;
}

.flow-card-symbol {
  font-size: 3rem;
  line-height: 1;
}

.flow-card-suit {
  position: absolute;
  right: 16px;
  bottom: 14px;
  color: rgba(255,255,255,0.44);
  font-size: 1.1rem;
}

.flow-card h4 {
  margin: 0;
  font-family: var(--serif);
  font-size: 1.34rem;
  font-weight: 600;
}

.flow-card .card-position {
  margin: 0;
  color: var(--gold);
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}

.flow-card .card-note {
  margin: -4px 0 0;
  color: rgba(255,255,255,0.48);
  font-size: 0.8rem;
  letter-spacing: 0.06em;
}

.flow-card-copy {
  display: grid;
  gap: 10px;
  position: relative;
  z-index: 1;
  padding-top: 2px;
}

.flow-card .card-meaning {
  margin: 0;
  color: var(--text-soft);
  font-size: 0.92rem;
  line-height: 1.7;
}

.flow-divider {
  width: 112px;
  height: 1px;
  margin: 0 auto;
  background: linear-gradient(90deg, transparent, var(--border-accent), transparent);
}

.flow-result-summary {
  width: min(860px, 100%);
  margin: 0 auto;
  justify-items: center;
  text-align: center;
  padding: 28px 32px;
  border-radius: 30px;
  border: 1px solid rgba(255,255,255,0.08);
  background:
    radial-gradient(circle at top, rgba(120,199,232,0.08), transparent 34%),
    linear-gradient(180deg, rgba(255,255,255,0.04), transparent 26%),
    rgba(11, 15, 25, 0.9);
}

.flow-result-lead {
  margin: 0;
  max-width: 18ch;
  font-family: var(--serif);
  font-size: clamp(1.56rem, 3vw, 2.32rem);
  line-height: 1.45;
  color: rgba(238,233,226,0.94);
}

.flow-result-lead-copy {
  margin: 0;
  max-width: 58ch;
  color: var(--text-soft);
  font-size: 1rem;
  line-height: 1.9;
}

.flow-result-reading {
  width: min(900px, 100%);
  margin: 0 auto;
  padding: 30px 34px;
  border-radius: 32px;
  border: 1px solid rgba(255,255,255,0.08);
  background:
    linear-gradient(180deg, rgba(255,255,255,0.04), transparent 22%),
    rgba(10, 14, 24, 0.92);
  box-shadow: 0 24px 80px rgba(0,0,0,0.22);
}

.flow-result-answer {
  display: grid;
  gap: 16px;
  width: 100%;
}

.flow-result-answer p {
  margin: 0;
  color: var(--text-soft);
  font-size: 1.02rem;
  line-height: 1.96;
}

.flow-result-answer-label {
  margin: 0;
  color: var(--gold);
  font-size: 0.78rem;
  font-weight: 800;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}

.flow-result-answer .narrating-hint {
  text-align: center;
  color: var(--text-muted);
  font-style: italic;
}

@keyframes flow-ring-spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

/* ─── Flow Responsive ─── */
@media (max-width: 1120px) {
  .flow-system-intro,
  .flow-tarot-opening,
  .flow-intent-hero,
  .flow-spread-hero,
  .flow-tarot-question {
    grid-template-columns: 1fr;
  }

  .flow-result-atmosphere,
  .flow-intent-grid,
  .flow-spread-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .flow-result-cards--triple {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .bazi-pillar-hero-grid,
  .bazi-summary-band,
  .bazi-luck-grid,
  .bazi-annual-grid,
  .bazi-timeline-grid,
  .bazi-insight-grid,
  .bazi-signal-grid,
  .bazi-section-grid,
  .bazi-detail-grid,
  .bazi-pillar-story-grid,
  .bazi-pillar-reality-grid,
  .bazi-timeline-now-grid,
  .bazi-evidence-ledger {
    grid-template-columns: 1fr 1fr;
  }
}

@media (max-width: 780px) {
  .flow-inner { padding: 60px 20px 40px; }
  .flow-heading--serif { font-size: clamp(1.8rem, 6vw, 2.8rem); }
  .flow-result-atmosphere,
  .flow-intent-grid,
  .flow-spread-grid,
  .flow-system-grid,
  .flow-result-cards { grid-template-columns: 1fr; }
  .flow-system-card { min-width: 0; }
  .flow-actions { flex-direction: column; width: 100%; }
  .flow-actions > * { width: 100%; }
  .flow-intent-chip { grid-template-columns: 52px minmax(0, 1fr); min-height: auto; }
  .flow-question-presets { flex-direction: column; }
  .flow-question-presets > * { width: 100%; justify-content: flex-start; }
  .flow-drawing-disc { width: 180px; height: 180px; }
  .flow-drawing-core { width: 88px; height: 88px; }
  .flow-result-stage,
  .flow-result-summary,
  .flow-result-reading,
  .flow-result-question { padding: 22px 20px; }
  .flow-card-trigger,
  .flow-card-display { width: min(220px, 100%); }

  .bazi-atlas-hero,
  .bazi-summary-band,
  .bazi-detail-grid,
  .bazi-insight-grid,
  .bazi-signal-grid,
  .bazi-section-grid,
  .bazi-luck-grid,
  .bazi-annual-grid,
  .bazi-timeline-grid,
  .bazi-pillar-story-grid,
  .bazi-pillar-reality-grid,
  .bazi-timeline-now-grid,
  .bazi-evidence-ledger {
    grid-template-columns: 1fr;
  }

  .bazi-detail-anchor-bar {
    position: static;
  }

  .bazi-life-head {
    flex-direction: column;
    align-items: stretch;
  }

  .bazi-life-head,
  .bazi-detail-hero-actions {
    justify-items: stretch;
  }

  .bazi-life-head .primary-cta,
  .bazi-detail-hero-actions .ghost-button {
    width: 100%;
  }

  .bazi-pillar-hero-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .bazi-life-table { min-width: 640px; }
}

/* ─── 30. Animations ─── */
@keyframes hero-enter {
  from { opacity: 0; transform: translateY(32px) scale(0.97); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

@keyframes fade-up {
  from { opacity: 0; transform: translateY(16px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes ritual-page-fade {
  from { opacity: 0; transform: translateY(20px) scale(0.98); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

@keyframes ritual-breathe {
  0%, 100% { opacity: 0.85; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.02); }
}

@keyframes pulse-dot {
  0%, 100% { opacity: 1; box-shadow: 0 0 12px rgba(114,212,165,0.5); }
  50% { opacity: 0.6; box-shadow: 0 0 6px rgba(114,212,165,0.2); }
}

@keyframes bgm-bar {
  0%, 100% { height: 30%; }
  50% { height: 100%; }
}

@keyframes fan-picked {
  0% { transform: translateX(calc((var(--fan-index) - 5.5) * 52px)) translateY(0) rotate(calc((var(--fan-index) - 5.5) * 5deg)) scale(1); }
  30% { transform: translateX(calc((var(--fan-index) - 5.5) * 52px)) translateY(-40px) rotate(0deg) scale(1.06); opacity: 1; }
  100% { transform: translateX(0) translateY(-80px) rotate(0deg) scale(0.8); opacity: 0; }
}

@keyframes ritual-seat-glow {
  0% { box-shadow: 0 0 0 rgba(212,168,83,0); }
  40% { box-shadow: 0 0 40px rgba(212,168,83,0.2); }
  100% { box-shadow: 0 0 0 rgba(212,168,83,0); }
}

@keyframes ritual-flight {
  0% { opacity: 0.96; transform: translate3d(0,0,0) rotate(-5deg) scale(1); }
  48% { opacity: 1; transform: translate3d(var(--flight-mid-x), var(--flight-mid-y), 0) rotate(7deg) scale(1.05); }
  100% { opacity: 0.12; transform: translate3d(var(--flight-x), var(--flight-y), 0) rotate(0deg) scale(var(--flight-scale, 1)); }
}

@keyframes reveal-pulse {
  0% { box-shadow: 0 0 0 rgba(120,199,232,0); }
  50% { box-shadow: 0 0 44px rgba(120,199,232,0.16); }
  100% { box-shadow: 0 0 0 rgba(120,199,232,0); }
}

@keyframes flow-card-turn {
  0% {
    opacity: 1;
    transform: rotateY(0deg) scale(1);
  }
  42% {
    opacity: 1;
    transform: rotateY(88deg) scale(1.04);
    box-shadow: 0 0 42px rgba(212,168,83,0.22);
  }
  72% {
    opacity: 0.18;
    transform: rotateY(156deg) scale(1.02);
  }
  100% {
    opacity: 0;
    transform: rotateY(180deg) scale(0.98);
  }
}

/* ─── 31. Responsive ─── */
@media (max-width: 1180px) {
  .home-entry-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .home-report-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .system-tabs { grid-template-columns: repeat(3, minmax(0, 1fr)); }

  .workspace-grid,
  .entry-gate-grid,
  .atlas-scene-shell,
  .atlas-config-grid,
  .astro-question-grid,
  .display-atlas-hero,
  .star-observatory-heading,
  .star-detail-hero-head,
  .star-observatory-stage,
  .star-time-layer-grid,
  .star-career-evidence-grid,
  .star-support-grid,
  .star-detail-observatory,
  .display-metric-strip,
  .display-panel-grid,
  .display-story-grid,
  .atlas-profile-ribbon-fields,
  .reading-grid,
  .reading-meta-grid,
  .jiaobei-grid,
  .hexagram-grid,
  .astro-stage-grid,
  .astro-detail-grid,
  .astro-hero-grid,
  .cycle-panel,
  .star-workbench-grid,
  .star-detail-grid,
  .star-workbench-kpi-grid,
  .columns { grid-template-columns: 1fr; }

  .account-hero-panel,
  .account-status-strip,
  .account-stage-grid,
  .account-editor-banner { grid-template-columns: 1fr; }

  .account-directory-panel { position: static; top: auto; }

  .result-column { position: static; top: auto; }

  .system-spotlight-stage,
  .tarot-stage-hero,
  .oracle-stage-hero,
  .tarot-workbench-grid,
  .tarot-reveal-layout,
  .report-topic-layout { grid-template-columns: 1fr; }

  .tarot-workbench-sidebar, .report-topic-sidebar { position: static; }

  .intent-chip-row.large { grid-template-columns: repeat(2, minmax(0, 1fr)); }

  .moon-weekday-row, .moon-calendar-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

@media (max-width: 780px) {
  .app-shell, .top-bar-inner { padding: 0 16px; }
  .top-bar-inner { height: 56px; }

  .hero-axis { width: 100%; }
  .hero-verse { transform: none; }
  .hero { min-height: 90vh; padding: 100px 16px 60px; }
  .hero-poem { font-size: 1.2rem; }
  .hero-actions { flex-direction: column; width: 100%; }
  .hero-actions > * { width: 100%; }

  .section-systems, .section-quick, .section-recent { padding: 48px 0; }

  .top-bar-inner, .panel-head, .result-head, .form-actions, .action-cluster, .narration-controls, .destiny-hub-head, .story-title-row,
  .tarot-workbench-panel-head, .tarot-workbench-action-row,
  .report-overview-head, .report-overview-section-head, .report-overview-actions,
  .report-overview-quick-row, .report-topic-head, .report-topic-section-head, .report-topic-actions {
    flex-direction: column; align-items: stretch;
  }

	  .home-entry-grid, .home-report-list, .star-workbench-theme-grid,
	  .destiny-summary-grid, .destiny-line-grid, .story-summary-grid, .story-overview-grid,
	  .fos-destiny-mirror, .fos-focus-card, .fos-mini-grid,
	  .report-overview-card-grid, .report-overview-structure-grid, .report-overview-mini-grid,
	  .report-topic-card-grid, .ritual-table, .tarot-reveal-grid,
	  .balance-donut-grid, .astro-identity-grid, .astro-theme-grid, .pillar-card-grid, .bazi-archetype-grid,
	  .display-panel-grid, .display-story-grid {
	    grid-template-columns: 1fr;
  }

  .system-tabs { grid-template-columns: repeat(2, minmax(0, 1fr)); }

	  .home-entry-card { flex-direction: column; }
	  .destiny-line-card,
	  .fos-line-card.destiny-line-card,
	  .fos-repeat-head { grid-template-columns: 1fr; }
	  .destiny-line-head { flex-direction: column; }
	  .fos-destiny-mirror,
	  .fos-focus-card,
	  .fos-repeat-band { padding: 20px; }
	  .fos-mirror-title { font-size: clamp(2.2rem, 12vw, 3.3rem); }
	  .fos-mirror-visual { min-height: 190px; }
	  .fos-focus-icon,
	  .fos-line-emblem { width: 76px; height: 76px; }
	  .fos-focus-icon img { width: 52px; height: 52px; }
	  .fos-line-emblem img { width: 58px; height: 58px; }
	  .fos-mini-card { grid-template-columns: 1fr; }
	  .story-actions { flex-direction: column; }
  .story-actions > * { width: 100%; }
  .field-grid { grid-template-columns: 1fr; }

  .panel, .system-spotlight, .form-panel, .account-panel, .profile-panel,
  .queue-panel, .order-panel, .result-panel, .reading-panel,
  .card-list, .narration-panel, .followup-panel, .summary-card { padding: 18px; }

  .entry-gate-panel { width: 100%; padding: 80px 20px 48px; }
  .entry-gate-copy h1 { max-width: 9ch; font-size: 2rem; }
  .entry-gate-copy { margin-bottom: 32px; }
  .entry-gate-actions .primary-cta, .entry-gate-actions .ghost-button { width: 100%; }

  .tarot-stage-shell, .tarot-live-reading, .tarot-ritual-board { padding: 16px; }
  .tarot-stage-page { min-height: auto; gap: 18px; }
  .tarot-stage-copy h3, .tarot-invocation-center h3 { font-size: 1.8rem; }

  .tarot-stage-footer { grid-template-columns: 1fr; }
  .tarot-stage-actions { justify-content: stretch; }
  .tarot-stage-actions > * { width: 100%; }

  .intent-chip-row.large, .tarot-workbench-intent-row, .tarot-spread-choices,
  .report-topic-check-item { grid-template-columns: 1fr; }

  .tarot-oracle-note { grid-template-columns: 1fr; justify-items: start; }

  .ritual-fan-wrap {
    min-height: 272px;
    padding: 18px 10px 14px;
  }
  .ritual-fan { height: 100%; min-height: 238px; }
  .fan-card {
    width: var(--fan-width, 86px);
  }
  .fan-card.is-hovered,
  .fan-card:focus-visible {
    transform: translateX(calc(-50% + var(--fan-shift, 0px))) translateY(calc(var(--fan-drop, 0px) - 22px)) rotate(calc(var(--fan-tilt, 0deg) * 0.25)) scale(1.03);
  }

  .oracle-stage-figure-wrap .system-figure-image-shell,
  .oracle-stage-figure-wrap .system-figure-placeholder-shell { min-height: 200px; }

  .star-observatory-panel,
  .star-observatory-panel-detail,
  .star-identity-band,
  .star-support-panel,
  .star-time-layer-panel,
  .star-career-evidence-panel,
  .star-detail-hero { padding: 20px; }

  .star-atlas-boundary-pill { white-space: normal; text-align: center; }

  .star-observatory-chipbar { justify-content: flex-start; }
  .star-observatory-copy h4,
  .star-detail-hero-copy h4 { max-width: none; font-size: 2.3rem; }

  .star-observatory-balance .balance-donut-grid { grid-template-columns: 1fr; }
  .star-observatory-balance .balance-donut { width: min(100%, 240px); }

  .star-wheel-shell { min-height: 0; padding-inline: 0; }
  .star-wheel { width: min(100%, 360px); }
  .wheel-house-label { transform: rotate(calc(var(--house-angle) * 1deg)) translateY(-164px) rotate(calc(var(--house-angle) * -1deg)); }
  .wheel-angle-marker { transform: rotate(calc(var(--planet-angle) * 1deg)) translateY(-196px) rotate(calc(var(--planet-angle) * -1deg)); }
  .wheel-core { inset: 31%; }

  .moon-weekday-row, .moon-calendar-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }

  .display-atlas-hero { padding: 20px; }
  .display-atlas-copy h4 { max-width: none; font-size: 2rem; }
  .display-chapter-copy h5 { font-size: 1.5rem; }

  .display-mode-tabs { width: 100%; }
  .display-mode-tab { flex: 1 1 auto; justify-content: center; }

  .workspace-scene-copy h2 { max-width: none; }
  .system-figure-slot { min-height: 0; }
  .system-figure-image-shell, .system-figure-placeholder-shell { min-height: 140px; }

  .account-hero-panel { padding: 24px; }
  .account-state-card,
  .account-auth-form,
  .account-session-shell { padding: 18px; }
  .account-hero-copy h2 { max-width: none; font-size: 2.3rem; }
  .account-profile-list .consultation-item { padding: 18px; }
  .account-editor-banner { padding: 16px 18px; }

  .nav-tab, button, .primary-cta, .ghost-button { width: 100%; justify-content: center; text-align: center; }
}

@media (max-width: 640px) {
  .display-story-grid, .display-panel-grid { grid-template-columns: 1fr; }
  .display-chapter-copy h5 { font-size: 1.3rem; }
}

/* ══════════ 生成等待态 · 呼吸墨点 + 计时 + 取消（2026-07 体验修复） ══════════ */
.dx-batch-loading{position:relative;animation:foBreath 2.4s ease-in-out infinite;}
.dx-batch-loading::after{content:"…";display:inline-block;animation:foInkDots 1.8s steps(4,end) infinite;
  width:1.4em;text-align:left;}
@keyframes foBreath{0%,100%{opacity:.5;}50%{opacity:1;}}
@keyframes foInkDots{0%{content:"";}25%{content:"·";}50%{content:"··";}75%{content:"···";}100%{content:"";}}
.dx-genwait-meta{margin-top:12px;font-size:.8rem;color:rgba(230,217,180,.4);font-family:var(--dx-serif,serif);}
.dx-gw-cancel{background:none;border:1px solid rgba(184,155,94,.25);border-radius:999px;
  padding:3px 14px;margin-left:6px;color:rgba(230,217,180,.6);font-size:.78rem;cursor:pointer;
  transition:border-color .25s,color .25s;}
.dx-gw-cancel:hover{border-color:rgba(184,155,94,.5);color:rgba(230,217,180,.9);}

/* 页内轻提示 toast（替代系统 alert） */
#fo-toast-host{position:fixed;left:50%;bottom:34px;transform:translateX(-50%);z-index:10000;
  display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none;}
.fo-toast{background:rgba(11,11,15,.92);border:1px solid rgba(184,155,94,.35);border-radius:10px;
  padding:10px 18px;color:rgba(230,217,180,.92);font-size:.86rem;max-width:min(80vw,480px);
  box-shadow:0 12px 32px rgba(0,0,0,.5);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  animation:foToastIn .3s ease;transition:opacity .5s ease,transform .5s ease;}
.fo-toast-out{opacity:0;transform:translateY(8px);}
@keyframes foToastIn{from{opacity:0;transform:translateY(10px);}to{opacity:1;transform:none;}}
.reg-q-note{margin:2px 0 10px;font-size:.8rem;color:rgba(230,217,180,.45);}

/* ══════════ 读物阁 · 一阁五签（2026-07 今日页收纳） ══════════ */
.daily-grid.dl-shelf{display:block;}
.dl-shelf [data-shelf-panel]{display:none;}
.dl-shelf [data-shelf-panel].shelf-on{display:block;animation:dxFade .3s ease;}
.dl-shelf-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:20px 0 12px;position:relative;z-index:1;}
.dl-shelf-tab{font-family:"Noto Serif SC",serif;font-size:.86rem;letter-spacing:.12em;
  color:rgba(230,217,180,.55);background:rgba(11,11,15,.62);border:1px solid rgba(184,155,94,.18);
  border-radius:999px;padding:8px 18px;cursor:pointer;
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  transition:color .25s,border-color .25s,background .25s;}
.dl-shelf-tab:hover{color:rgba(230,217,180,.85);border-color:rgba(184,155,94,.4);}
.dl-shelf-tab.on{color:#EFE3C0;border-color:rgba(184,155,94,.55);background:rgba(184,155,94,.14);}

/* ══════════ 合参总象（2026-07 合盘补结论） ══════════ */
.hepan-overall{margin:18px 0 6px;padding:22px 26px;border:1px solid rgba(184,155,94,.3);border-radius:16px;
  background:linear-gradient(120deg,rgba(27,22,32,.92),rgba(18,16,22,.92));
  box-shadow:0 18px 44px rgba(0,0,0,.35);}
.hepan-overall-eyebrow{display:block;font-size:.68rem;letter-spacing:.3em;color:rgba(184,155,94,.85);margin-bottom:8px;}
.hepan-overall-label{display:block;font-family:"HuiZongShouJin","Noto Serif SC",serif;font-size:1.9rem;
  color:#EFE3C0;letter-spacing:.14em;margin-bottom:6px;}
.hepan-overall-seal{font-family:"Noto Serif SC",serif;font-size:1.06rem;color:rgba(230,217,180,.92);margin:0 0 6px;}
.hepan-overall-plain{font-size:.92rem;color:rgba(230,217,180,.62);line-height:1.7;margin:0;}
.hepan-overall-cells{display:flex;gap:14px;flex-wrap:wrap;margin-top:14px;}
.hepan-overall-cells > div{border:1px solid rgba(184,155,94,.18);border-radius:10px;padding:8px 14px;background:rgba(11,11,15,.5);}
.hepan-overall-cells i{display:block;font-style:normal;font-size:.68rem;letter-spacing:.2em;color:rgba(230,217,180,.45);margin-bottom:3px;}
.hepan-overall-cells b{font-size:.88rem;color:rgba(230,217,180,.88);font-weight:600;}
.hepan-overall-note{margin:12px 0 0;font-size:.74rem;color:rgba(230,217,180,.35);}

/* ══════════ 星象总印 · 结论主句（2026-07 星盘收纳） ══════════ */
.star-detail-hero-copy .star-verdict{font-family:"Noto Serif SC",serif;font-size:1.22rem;line-height:1.75;
  color:rgba(230,217,180,.94);font-weight:500;letter-spacing:.02em;margin:8px 0 10px;}
