/* ═══════════════════════════════════════════════════════════
   P1 · 法餐模式 — index.html 主站入口重设计
   Header Sigil + Profile Modal + Marginalia + Portal Gateway + Footer
   ═══════════════════════════════════════════════════════════ */

/* ── 顶栏：暗灰玻璃 + 香槟金 hairline ── */
.kairos-header {
  position: sticky;
  top: 0;
  width: 100%; height: 56px;
  display: flex;
  justify-content: center;
  align-items: center;
  background: rgba(11, 12, 16, 0.85);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  box-shadow: 0 1px 0 rgba(197, 160, 89, 0.06);
  z-index: 90;
}

.site-sigil {
  background: transparent;
  border: none;
  cursor: pointer;
  width: 42px; height: 42px;
  padding: 0;
  transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.6s ease;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0.5;
  animation: sigil-idle 5s ease-in-out infinite;
}

@keyframes sigil-idle {
  0%, 100% { opacity: 0.45; }
  50%      { opacity: 0.6;  }
}

.site-sigil:hover {
  transform: scale(1.08);
  opacity: 0.9;
  animation: none;
}

.site-sigil:active {
  transform: scale(0.95);
  transition: transform 80ms var(--ease-out);
}

/* ═══════════════════════════════════════════
   时空通行凭证 · Temporal Pass Card
   个人中心内容注入 #auth-modal-body 时使用
   CSS 以 class 预装于此（不依赖 style.css）
   ═══════════════════════════════════════════ */

/* ── 凭证头部 ── */
.profile-header-stamp { text-align: center; margin-bottom: 2rem; }
.profile-sigil-tag { font-family: "Cinzel", serif; font-size: .65rem; letter-spacing: .3em; color: #8c7853; text-transform: uppercase; margin-bottom: .4rem; }
.profile-username { font-family: "Cinzel", "Noto Serif SC", serif; font-size: 1.6rem; color: #f5e8d0; letter-spacing: .12em; margin: 0 0 .8rem 0; text-shadow: 0 0 12px rgba(201,160,139,.3); }
.profile-balance-badge { display: inline-block; padding: .3rem 1.2rem; background: rgba(201,160,139,.12); border: 1px solid #c9a08b; color: #c9a08b; font-family: "Cinzel", serif; font-size: .85rem; letter-spacing: .15em; border-radius: 20px; box-shadow: 0 0 12px rgba(201,160,139,.25); margin-bottom: .6rem; }
.profile-email-text { font-size: .75rem; color: rgba(212,197,169,.45); letter-spacing: .05em; margin-top: .4rem; }

/* ── 核心充值主通道 ── */
.profile-primary-action { margin-bottom: 1.8rem; }
.recharge-seal-btn { width: 100%; padding: .9rem; background: linear-gradient(135deg,rgba(201,160,139,.22) 0%,rgba(201,160,139,.08) 100%); border: 1px solid #c9a08b; color: #f5e8d0; font-family: "Cinzel","Noto Serif SC",serif; font-size: .95rem; letter-spacing: .2em; border-radius: 30px; cursor: pointer; transition: all .3s ease; box-shadow: 0 0 15px rgba(201,160,139,.2); margin-bottom: 0; }
.recharge-seal-btn:hover { background: #c9a08b; color: #0b0c10; box-shadow: 0 0 25px rgba(201,160,139,.5); }

/* ── 2×2 功能网格 ── */
.profile-func-grid { display: grid; grid-template-columns: repeat(2,1fr); gap: .8rem; margin-bottom: 2rem; }
.func-grid-btn { background: rgba(13,14,18,.6); border: 1px solid rgba(201,160,139,.2); color: rgba(212,197,169,.8); font-family: "Noto Serif SC",serif; font-size: .8rem; letter-spacing: .08em; padding: .7rem .5rem; border-radius: 4px; cursor: pointer; transition: all .25s ease; text-align: center; }
.func-grid-btn:hover { border-color: rgba(201,160,139,.6); color: #f5e8d0; background: rgba(201,160,139,.1); }

/* ── 底部危险区下沉 ── */
.profile-footer-links { text-align: center; margin-top: 1.5rem; }
.profile-divider { font-size: .65rem; color: rgba(201,160,139,.3); letter-spacing: .2em; margin-bottom: 1rem; }
.danger-link { background: none; border: none; color: rgba(212,197,169,.4); font-size: .75rem; cursor: pointer; margin: 0 .6rem; padding: 0; transition: color .2s ease; }
.danger-link:hover { color: #e57373; }

.sigil-links button {
  background: none;
  border: none;
  color: rgba(197, 160, 89, 0.3);
  font-size: 0.7rem;
  cursor: pointer;
  letter-spacing: 0.04em;
  padding: 0.2rem;
  transition: color 0.25s;
  font-family: inherit;
}

.sigil-links button:hover {
  color: #f1d592;
}

.sigil-sep {
  color: rgba(197, 160, 89, 0.15);
  font-size: 0.6rem;
  user-select: none;
}

/* ── 错误提示 ── */
.sigil-err {
  color: #e74c3c;
  font-size: 0.7rem;
  text-align: center;
  min-height: 1.2em;
  margin-top: 0.5rem;
  letter-spacing: 0.03em;
}

/* ── 已登录区 ── */
.sigil-greeting {
  color: rgba(197, 160, 89, 0.55);
  font-size: 0.9rem;
  letter-spacing: 0.06em;
  margin: 0 0 0.6rem;
  font-family: "Cinzel", serif;
}

.sigil-balance-text {
  color: rgba(180, 170, 160, 0.35);
  font-size: 0.72rem;
  margin: 0;
  letter-spacing: 0.04em;
}

.sigil-balance-text strong {
  color: #c9a08b;
  font-weight: 600;
}

/* ── Hero 主文案 + Marginalia 边注 ── */
.hero-section {
  text-align: center;
  padding: 0 1.5rem;
  max-width: 760px;
  margin: 0 auto;
}

/* 垂直几何中心：Hero + Portal 一体化居中 */
.hero-central-stage {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: calc(100vh - 56px);
  z-index: 10;
}

/* 中央微光晕 — 环抱 Hero + Portal */
.hero-central-stage::before {
  content: '';
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: min(600px, 80vw);
  height: min(600px, 80vw);
  background: radial-gradient(circle, rgba(197, 160, 89, 0.04) 0%, transparent 70%);
  pointer-events: none;
  z-index: -1;
  animation: ambient-breathe 6s ease-in-out infinite;
}

@keyframes ambient-breathe {
  0%, 100% { opacity: 0.25; transform: translate(-50%, -50%) scale(0.97); }
  50%      { opacity: 0.5;  transform: translate(-50%, -50%) scale(1.03); }
}

/* ═══ 入场动画序列 ═══ */
@keyframes hero-reveal {
  from { opacity: 0; transform: translateY(36px); filter: blur(4px); }
  to   { opacity: 1; transform: translateY(0);    filter: blur(0);   }
}
@keyframes hero-reveal{from{opacity:0;transform:translateY(32px);filter:blur(6px)}to{opacity:1;transform:translateY(0);filter:blur(0)}}
@keyframes subtitle-glow-in{from{opacity:0}to{opacity:1}}
@keyframes simple-fade-in{from{opacity:0}to{opacity:1}}
@keyframes intro-rise{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}
@keyframes hinge-bloom{from{opacity:0;transform:scale(0.3)}to{opacity:1;transform:scale(1)}}
@keyframes portal-stagger-in{from{opacity:0;transform:translateY(48px) scale(0.92)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes drawer-item-in{from{opacity:0;transform:translateX(-20px)}to{opacity:1;transform:translateX(0)}}
@keyframes drawer-in{from{transform:translateX(-100%)}to{transform:translateX(0)}}
@keyframes drawer-out{from{transform:translateX(0)}to{transform:translateX(-100%)}}
@keyframes overlay-in{from{opacity:0}to{opacity:1}}
@keyframes overlay-out{from{opacity:1}to{opacity:0}}
@keyframes content-in{from{opacity:0;transform:translateY(16px);filter:blur(4px)}to{opacity:1;transform:translateY(0);filter:blur(0)}}

/* ── KAIRÓS 主标题 ── */
.hero-title {
  font-family: "Cinzel", "Cormorant Garamond", serif;
  font-size: clamp(3.2rem, 6vw, 5.5rem);
  font-weight: 700;
  font-style: italic;
  letter-spacing: 0.22em;
  text-align: center;
  line-height: 1;
  margin: 0 0 0.6rem;
  /* 烫金渐变质感 */
  color: #c9a08b;
  
  /* 渐变即光源，不加外发光 */
  /* 入场动画 */
  opacity: 0;
  animation: hero-reveal 0.9s cubic-bezier(0.16,1,0.3,1) 0.15s forwards;
}

/* ── 中文副标题 ── */
.hero-subtitle {
  font-family: "Noto Serif SC", "Source Han Serif SC", "Songti SC", serif;
  font-size: clamp(1rem, 1.8vw, 1.35rem);
  color: rgba(200, 185, 155, 0.7);
  letter-spacing: 0.12em;
  line-height: 1.7;
  margin: 0 0 0.8rem;
  font-weight: 400;
  opacity: 0;
  animation: subtitle-glow-in 0.8s cubic-bezier(0.16,1,0.3,1) 0.5s forwards;
}

.keep-phrase {
  display: inline-block;
  white-space: nowrap;
}

/* ── 第三行小字 ── */
.hero-subtext {
  font-size: 0.85rem;
  color: rgba(180, 170, 160, 0.4);
  letter-spacing: 0.06em;
  line-height: 1.8;
  margin: 0;
  opacity: 0;
  animation: simple-fade-in 0.5s ease 0.75s forwards;
}

/* ── 双系统介绍（轻量双栏）── */
.hero-intro {
  display: flex;
  gap: 2.5rem;
  max-width: 780px;
  margin: 2rem auto 0;
  padding: 0 1rem;
  opacity: 0;
  animation: intro-rise 0.7s cubic-bezier(0.16,1,0.3,1) 0.85s forwards;
}

.intro-col {
  flex: 1;
  min-width: 0;
}

.intro-col strong {
  color: rgba(197, 160, 89, 0.55);
  font-weight: 600;
  font-size: 0.82rem;
  letter-spacing: 0.06em;
}

.intro-col p {
  font-size: 0.82rem;
  color: rgba(210, 195, 175, 0.65);
  letter-spacing: 0.04em;
  line-height: 1.9;
  margin: 0 0 0.5rem;
}

.intro-col p:last-child {
  margin-bottom: 0;
}

@media(max-width:600px){
  .hero-intro {
    flex-direction: column;
    gap: 1.2rem;
    margin: 1.5rem auto 0;
  }
}

/* ── Portal 卡片 stagger 入场 ── */
.portal-card-v2 {
  opacity: 0;
  animation: portal-stagger-in 0.7s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}
.portal-card-v2:nth-child(1) { animation-delay: 0.9s; }
.portal-card-v2:nth-child(2) { animation-delay: 1.05s; }

.marginalia-trigger {
  color: #c9a08b;
  border-bottom: 1px dotted rgba(197, 160, 89, 0.5);
  cursor: pointer;
  transition: color 0.2s ease, border-color 0.2s ease;
}

.marginalia-trigger:hover {
  color: #f1d592;
  border-bottom-color: #f1d592;
}

/* 桌面 Tooltip */
.tooltip-box {
  position: fixed;
  background: #14161d;
  border: 1px solid rgba(197, 160, 89, 0.3);
  color: #d4c5a9;
  padding: 0.8rem 1.2rem;
  font-size: 0.8rem;
  line-height: 1.6;
  max-width: 260px;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.2s ease;
  z-index: 200;
  box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
  border-radius: 4px;
}

.tooltip-box.visible {
  opacity: 1;
}

.tooltip-box strong {
  display: block;
  color: #c9a08b;
  font-size: 0.82rem;
  letter-spacing: 0.04em;
  margin-bottom: 0.3rem;
}

/* 移动端 Bottom Sheet */
.mobile-sheet {
  position: fixed;
  bottom: 0; left: 0;
  width: 100%;
  height: 30vh;
  background: #0d0e12;
  border-top: 1px solid rgba(197, 160, 89, 0.25);
  z-index: 300;
  transform: translateY(100%);
  transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1);
  padding: 1.5rem 1.2rem;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
}

.mobile-sheet.open {
  transform: translateY(0);
}

.sheet-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 0.8rem;
}

.sheet-title {
  font-family: "Cinzel", "Noto Serif SC", serif;
  font-size: 0.9rem;
  color: #c9a08b;
  letter-spacing: 0.06em;
}

.sheet-body {
  font-size: 0.82rem;
  color: #a09080;
  line-height: 1.75;
  overflow-y: auto;
  flex: 1;
}

.sheet-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.6);
  z-index: 299;
  display: none;
}

.sheet-overlay.visible {
  display: block;
}

/* ── 金箔阻尼线：介绍 → 入口的视觉铰链 ── */
.gold-hinge {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  max-width: 400px;
  margin: 2.5rem auto 1.5rem;
  opacity: 0;
  animation: hinge-bloom 0.7s cubic-bezier(0.16,1,0.3,1) 1s forwards;
}

.gold-hinge::before,
.gold-hinge::after {
  content: "";
  flex: 1;
  height: 1px;
  background: linear-gradient(
    90deg,
    transparent,
    rgba(197, 160, 89, 0.25),
    transparent
  );
}

.gold-hinge::before {
  background: linear-gradient(
    90deg,
    transparent,
    rgba(197, 160, 89, 0.25)
  );
}

.gold-hinge::after {
  background: linear-gradient(
    90deg,
    rgba(197, 160, 89, 0.25),
    transparent
  );
}

.hinge-dot {
  display: block;
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: #c9a08b;
  margin: 0 1rem;
  flex-shrink: 0;
  animation: hinge-breathe 3s ease-in-out infinite;
  animation-delay: 1.8s;
}

@keyframes hinge-breathe {
  0%, 100% { box-shadow: 0 0 6px rgba(197, 160, 89, 0.1); }
  50%      { box-shadow: 0 0 16px rgba(197, 160, 89, 0.2); }
}

/* ── 双生入口门楼（增强版 Portal Gateway）── */
.portal-grid {
  display: grid;
  grid-template-columns: repeat(2, 320px);
  gap: 2.5rem;
  margin: 3rem 0;
}

.portal-card-v2 {
  position: relative;
  background: rgba(13, 14, 18, 0.75);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border: 1px solid rgba(197, 160, 89, 0.25);
  padding: 2.5rem 2rem;
  text-decoration: none;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  cursor: pointer;
  transition: border-color 0.4s ease, transform 0.4s var(--ease-out), box-shadow 0.4s ease;
}

.portal-card-v2:hover {
  background: rgba(22, 24, 34, 0.9);
  border-color: rgba(197, 160, 89, 0.45);
  transform: translateY(-4px);
}

.portal-card-v2:active {
  transform: translateY(-1px) scale(0.98);
  transition: transform 80ms var(--ease-out);
}

.portal-bg-effect {
  position: absolute;
  inset: 0;
  opacity: 0;
  transition: opacity 0.6s ease;
  pointer-events: none;
}

.portal-card-v2.tarot-portal .portal-bg-effect {
  background: radial-gradient(ellipse at center, rgba(197, 160, 89, 0.1) 0%, transparent 70%);
}

.portal-card-v2.leno-portal .portal-bg-effect {
  background: radial-gradient(ellipse at center, rgba(180, 190, 210, 0.08) 0%, transparent 70%);
}

.portal-card-v2:hover .portal-bg-effect {
  opacity: 1;
}

.portal-content {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.6rem;
}

.portal-tag {
  font-size: 0.65rem;
  letter-spacing: 0.18em;
  color: rgba(197, 160, 89, 0.45);
  text-transform: uppercase;
  margin-bottom: 0.3rem;
}

.portal-card-v2 .portal-title {
  font-family: "Cinzel", "Cormorant Garamond", "Noto Serif SC", serif;
  font-size: 1.25rem;
  color: #e5d8c0;
  letter-spacing: 0.08em;
  font-weight: 600;
  margin: 0;
}

.portal-card-v2 .portal-sub-title {
  font-size: 0.65rem;
  letter-spacing: 0.08em;
  color: rgba(212, 197, 169, 0.4);
  font-weight: 300;
  margin: 0;
  text-align: center;
}

/* ── 汉堡菜单去边框极简化 ── */
.hb-btn {
  background: transparent !important;
  border: none !important;
  opacity: 0.45;
  transition: opacity 0.35s ease, transform 0.35s var(--ease-out);
}
.hb-btn:hover,
.hb-btn.active {
  opacity: 0.8;
  background: transparent !important;
}
.hb-btn span {
  background: rgba(220, 205, 180, 0.7);
}

/* ── 沉浸式页脚 ── */
.kairos-footer {
  position: fixed; bottom: 0; left: 0; width: 100%;
  padding: 1.2rem 0;
  border-top: 1px solid rgba(197, 160, 89, 0.08);
  background: rgba(7,7,9,.92);
  backdrop-filter: blur(8px);
  z-index: 50;
}

.footer-meta {
  max-width: 1000px;
  margin: 0 auto;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0 1.5rem;
  font-size: 0.7rem;
  color: rgba(180, 165, 140, 0.35);
  letter-spacing: 0.05em;
}

.footer-links {
  display: flex;
  align-items: center;
  gap: 0.3rem;
}

.footer-links a,
.footer-links .lang-btn {
  color: rgba(180, 165, 140, 0.35);
  text-decoration: none;
  background: none;
  border: none;
  cursor: pointer;
  font-size: 0.68rem;
  letter-spacing: 0.04em;
  transition: color 0.25s;
  padding: 0;
}

.footer-links a:hover,
.footer-links .lang-btn:hover {
  color: #c9a08b;
}

.footer-sep {
  color: rgba(180, 165, 140, 0.2);
  margin: 0 0.3rem;
  user-select: none;
}

.footer-copyright {
  color: rgba(180, 165, 140, 0.25);
}

/* ── 旧版兼容：新 header 下 landing-header 隐藏 ── */
.kairos-header ~ #main-wrapper .landing-header {
  /* 保留旧的 landing-header DOM（JS 可能引用），视觉上让 hero-section 接管 */
}

/* ── 响应式：平板 ≤800px ── */
@media(max-width:800px){
  .hero-central-stage {
    min-height: 60vh;
  }
  .portal-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 1.5rem;
    padding: 0 1rem;
  }
  .portal-card-v2 {
    padding: 2rem 1.2rem 1.8rem;
  }
  .hero-section {
    padding: 2rem 1.2rem 1rem;
  }
  .footer-meta {
    flex-direction: column;
    gap: 0.8rem;
    text-align: center;
  }
}

/* ── 响应式：手机 ≤600px ── */
@media(max-width:600px){
  .kairos-header {
    height: 52px;
  }
  .hero-central-stage {
    min-height: 70vh;
  }
  .site-sigil {
    width: 34px; height: 34px;
  }
  .hero-section {
    padding: 1.5rem 1rem 0.5rem;
  }
  .hero-title {
    font-size: clamp(1.2rem, 6vw, 1.8rem);
    letter-spacing: 0.08em;
  }
  .hero-subtext {
    font-size: 0.78rem;
  }
  .portal-grid {
    grid-template-columns: 1fr;
    gap: 1rem;
    margin: 2rem auto 3rem;
  }
  .portal-card-v2 {
    padding: 2rem 1rem 1.5rem;
  }
  .portal-card-v2 .portal-title {
    font-size: 1.1rem;
  }
  .footer-meta {
    flex-direction: column;
    gap: 0.6rem;
    text-align: center;
    font-size: 0.65rem;
  }
  .footer-links {
    flex-wrap: wrap;
    justify-content: center;
  }
  /* S4 阅读报告: 手机端全宽 + 舒适字号（!important 全线防层叠覆盖） */
  .reading-report-paper {
    max-width:100%!important;
    padding:1rem .5rem!important;
    margin:0!important;
    font-size:.9rem!important;
    line-height:1.8!important;
    letter-spacing:.015em!important;
  }
  .reading-report-paper h2 { font-size:1.1rem!important; }
  .reading-report-paper h3 { font-size:.95rem!important; }
  .report-paragraph { margin-bottom:1.3rem!important; }
  /* 修复Safari/Blink: backface-visibility 导致文本被GPU层裁剪 */
  #result{backface-visibility:visible!important;-webkit-backface-visibility:visible!important}
}
/* ═══════════════════════════════════════════════════════════
   Tarot · 四步仪式 + 扇形牌圈
   ═══════════════════════════════════════════════════════════ */

/* 步骤系统 */
.ritual-stage{position:relative;width:100%;margin:0 auto;padding:1.5rem 0;min-height:50vh}
.step-dots{display:flex;justify-content:center;gap:12px;margin-bottom:2rem}
.step-dot{width:6px;height:6px;border-radius:50%;background:rgba(201,160,139,.12);transition:all .5s}
.step-dot.done{background:rgba(201,160,139,.3)}
.step-dot.current{background:#c9a08b;box-shadow:0 0 10px rgba(201,160,139,.3);transform:scale(1.4)}
.ritual-step{display:none}
.ritual-step.active{display:block;animation:step-in .5s cubic-bezier(0.16,1,0.3,1) forwards}
@keyframes step-in{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
@keyframes step-out{from{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-12px)}}
/* ── 页面入场: 类名驱动, Double-RAF 激活 ── */
@keyframes page-enter{from{opacity:0;transform:translateY(36px);filter:blur(12px)}to{opacity:1;transform:translateY(0);filter:blur(0)}}
/* 静态防闪烁预遮蔽 */
#app:not(.landing){opacity:0;animation:page-enter .6s var(--ease-out) .1s forwards;will-change:opacity,transform}
/* 显式类名触发入场动画 */
#app:not(.landing).page-entering{animation:page-enter .9s cubic-bezier(0.16,1,0.3,1) forwards}
/* 动画完成清理 */
#app:not(.landing).page-entered{opacity:1;transform:none;filter:none;will-change:auto}
/* reduced-motion 兜底 */
@media(prefers-reduced-motion:reduce){#app:not(.landing){opacity:1!important;transform:none!important;filter:none!important}#app:not(.landing).page-entering{animation:none!important}}

/* 横幅 */
.ritual-qbanner{display:none;text-align:center;padding:0 1rem 1.2rem;opacity:0;transform:translateY(-8px);transition:all .5s}
.ritual-qbanner.on{display:block;opacity:1;transform:translateY(0)}
.ritual-qbanner .qbl{font-size:.6rem;color:rgba(201,160,139,.2);letter-spacing:.14em;text-transform:uppercase}
.ritual-qbanner .qbt{font-size:.88rem;color:rgba(210,200,185,.4);font-family:'Noto Serif SC',serif;font-style:italic}

/* S1 */
.ritual-s1{text-align:center;padding-top:8vh}
.ritual-s1 .rp{font-family:'Noto Serif SC',serif;font-size:1.1rem;color:rgba(210,200,185,.45);letter-spacing:.06em;margin-bottom:2.5rem}
.ritual-s1 textarea{width:100%;max-width:460px;background:rgba(13,14,18,.65);border:1px solid rgba(201,160,139,.25);border-radius:4px;color:#e8d0c4;font-size:1.05rem;padding:.9rem 1rem;text-align:center;resize:none;outline:none;font-family:'Noto Serif SC','Songti SC',serif;caret-color:#c9a08b;transition:border-color .5s,box-shadow .5s;display:block;margin:0 auto;letter-spacing:.03em}
.ritual-s1 textarea:focus{border-color:rgba(201,160,139,.5);box-shadow:0 0 20px rgba(201,160,139,.08)}
.ritual-s1 textarea::placeholder{color:rgba(201,160,139,.1);font-style:italic;letter-spacing:.06em}
.ritual-begin{display:inline-block;margin-top:2rem;padding:.65rem 2.5rem;background:rgba(201,160,139,.06);border:1px solid rgba(201,160,139,.25);border-radius:30px;color:rgba(201,160,139,.35);font-size:.85rem;letter-spacing:.12em;cursor:pointer;font-family:inherit;transition:all .4s;opacity:0;transform:translateY(8px)}
.ritual-begin.on{opacity:1;transform:translateY(0)}
.ritual-begin:hover:not(:disabled){background:rgba(201,160,139,.14);border-color:#c9a08b;color:#f1d592;box-shadow:0 0 24px rgba(201,160,139,.15)}
.ritual-begin:disabled{opacity:0;pointer-events:none}
.ritual-begin:active{transform:scale(.95);transition:transform 80ms ease-out}

/* S2 */
.ritual-s2{text-align:center;padding-top:4vh}
.ritual-row{display:flex;align-items:center;justify-content:center;gap:.4rem;margin-bottom:.9rem;flex-wrap:wrap}
.ritual-row .rl{font-size:.62rem;color:rgba(201,160,139,.22);letter-spacing:.14em;text-transform:uppercase;min-width:2.5em;text-align:right}
.ritual-cap{padding:.4rem .85rem;background:transparent;border:1px solid rgba(212,197,169,.12);color:rgba(190,180,170,.25);font-size:.78rem;cursor:pointer;letter-spacing:.03em;font-family:inherit;transition:all .25s}
.ritual-cap:active{transform:scale(.94);transition:transform 80ms ease-out}
.ritual-cap:hover{border-color:rgba(201,160,139,.3);color:rgba(200,190,180,.55)}
.ritual-cap.on,.ritual-cap.active{background:rgba(201,160,139,.15);border-color:#c9a08b;color:#c9a08b}
.ritual-cap.mode-tab:not(.on):not(.active){border:1px solid rgba(212,197,169,.12);color:rgba(190,180,170,.25);font-weight:400}

/* ── S2 逐行仪式展开 ── */
.ritual-s2 .ritual-row.staged{opacity:0;visibility:hidden;transform:translateY(14px);pointer-events:none}
.ritual-s2 .ritual-row.staged.revealed{opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto;transition:opacity .35s var(--ease-out),transform .35s var(--ease-out)}.ritual-s2 .ritual-row.staged.revealed:nth-child(2){transition-delay:.06s}.ritual-s2 .ritual-row.staged.revealed:nth-child(3){transition-delay:.12s}
#s2-go{opacity:0;visibility:hidden;transform:translateY(12px);pointer-events:none}
#s2-go.revealed{opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto;transition:opacity .35s var(--ease-out),transform .35s var(--ease-out);transition-delay:.18s}

.ritual-go{display:inline-block;margin-top:2rem;padding:.6rem 2rem;background:rgba(201,160,139,.08);border:1px solid rgba(201,160,139,.2);color:rgba(201,160,139,.5);font-size:.82rem;letter-spacing:.1em;cursor:pointer;font-family:inherit;transition:all .35s}
.ritual-go:hover{background:rgba(201,160,139,.16);border-color:#c9a08b;color:#f1d592}
.ritual-go:active{transform:scale(.95);transition:transform 80ms ease-out}
.ritual-back{display:block;margin:1rem auto 0;background:transparent;border:none;color:rgba(201,160,139,.18);font-size:.7rem;cursor:pointer;letter-spacing:.06em;font-family:inherit;padding:.3rem .8rem;transition:color .3s}
.ritual-back:hover{color:rgba(201,160,139,.5)}

/* 翻牌 */
@keyframes card-flip-in{0%{transform:rotateY(90deg) scale(.85);opacity:.2}60%{transform:rotateY(-4deg) scale(1.02);opacity:1}100%{transform:rotateY(0) scale(1);opacity:1}}
.slot-img-wrap.flip-in{animation:card-flip-in .6s cubic-bezier(0.16,1,0.3,1) both}
@keyframes card-flip-in-rev{0%{transform:rotateY(90deg) rotate(180deg) scale(.85);opacity:.2}60%{transform:rotateY(-4deg) rotate(180deg) scale(1.02);opacity:1}100%{transform:rotateY(0) rotate(180deg) scale(1);opacity:1}}
.slot-img-wrap.reversed.flip-in{animation:card-flip-in-rev .6s cubic-bezier(0.16,1,0.3,1) both}

/* ── S3 无界舞台 — 牌悬浮于玄黑场域 ── */
/* 击败 style.css body:not() 全局规则（更高特异性） */
body[data-system="tarot"] .ritual-s3 #deck-grid{background:transparent!important;border:none!important;box-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
body[data-system="tarot"] .ritual-s3 .card-back{background:#0d0914!important;border:1px solid rgba(201,160,139,.35)!important}
body[data-system="lenormand"] .ritual-s3 #deck-grid,
body[data-system="lenormand"] .ritual-s3 .deck-grid,
body[data-system="lenormand"] .ritual-s3 .deck-area,
body[data-system="lenormand"] .ritual-s3 .manual-area,
body[data-system="lenormand"] .ritual-s3 #selection-area{background:transparent!important;border:none!important;box-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
.ritual-s3 .deck-grid{position:relative!important;width:100%!important;max-width:960px!important;height:500px!important;margin:2rem auto!important;overflow:visible!important;display:block!important;background:transparent!important;border:none!important;box-shadow:none!important;padding:0!important;touch-action:pan-x}
.ritual-s3 .card-back{will-change:transform,left,top;position:absolute!important;width:70px!important;height:98px!important;left:0;top:0;margin:0!important;cursor:default!important;user-select:none;touch-action:manipulation;z-index:1;border-radius:2px;box-sizing:border-box!important;background:#0d0914!important;border:1px solid rgba(201,160,139,.35)!important;transform-origin:50% 50%!important;opacity:0}
.ritual-s3 .card-back::after{content:'◆';position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:.65rem;color:rgba(201,160,139,.28);pointer-events:none}
.ritual-s3 .card-back.drawn{opacity:.03!important;border-color:transparent!important;filter:grayscale(1)!important;pointer-events:none!important}
.ritual-s3 .card-back:not([style*="left:"]){display:none!important}
.ritual-s3 #card-glow-proxy{position:absolute;width:70px;height:98px;left:-200px;top:-200px;box-sizing:border-box;transform-origin:50% 50%!important;background:transparent!important;border:2px solid #d4a843!important;box-shadow:0 0 16px rgba(212,168,67,.5),0 0 32px rgba(212,168,67,.2),0 0 48px rgba(212,168,67,.08)!important;border-radius:2px;pointer-events:none!important;opacity:0;transition:opacity .1s ease;will-change:transform,opacity,left,top;z-index:999}

/* ── 免费额度徽章 · 金色 ── */
.free-quota-badge{color:#c9a08b!important;font-weight:600}

/* ── ARCANA 计数器 ── */
.arcana-counter{font-family:"Cinzel","Noto Serif SC",serif;font-size:.7rem;color:rgba(201,160,139,.4);letter-spacing:.15em;text-align:left;margin-bottom:.6rem;padding-left:.3rem}

/* ── 洗牌金环印章 ── */
@keyframes seal-pulse{0%,100%{box-shadow:0 0 6px rgba(201,160,139,.15)}50%{box-shadow:0 0 18px rgba(201,160,139,.3)}}
.shuffle-btn{display:inline-block;background:rgba(201,160,139,.08);border:1px solid rgba(201,160,139,.4);color:#c9a08b;font-family:"Cinzel","Noto Serif SC",serif;font-size:.8rem;letter-spacing:.2em;padding:.6rem 2rem;border-radius:30px;backdrop-filter:blur(8px);cursor:pointer;transition:all .3s ease;animation:seal-pulse 3s infinite}
.shuffle-btn:hover{background:rgba(201,160,139,.2);box-shadow:0 0 15px rgba(201,160,139,.3);color:#f1d592}
.shuffle-btn:active{transform:scale(.95);transition:transform 80ms ease-out}

/* ── 提交烫金圆环 ── */
.ritual-go{display:inline-block;padding:.6rem 2rem;background:transparent;border:1px solid rgba(201,160,139,.25);color:rgba(201,160,139,.4);font-family:"Cinzel","Noto Serif SC",serif;font-size:.78rem;letter-spacing:.12em;cursor:pointer;border-radius:30px;transition:all .35s;opacity:0;pointer-events:none;visibility:hidden}
.ritual-go:not(#s2-go):not(:disabled){opacity:1!important;visibility:visible!important;pointer-events:auto!important;cursor:pointer!important;border-color:rgba(201,160,139,.5);color:#c9a08b;animation:seal-pulse 3s infinite;position:relative!important;z-index:10000!important}
.ritual-go:not(#s2-go):not(:disabled):hover{background:rgba(201,160,139,.12);box-shadow:0 0 24px rgba(201,160,139,.25);color:#f1d592}

/* 洗牌闪烁 */
@keyframes shuffle-flash{0%{opacity:1}50%{opacity:.3}100%{opacity:1}}

/* ── 六芒星法阵 ── */
.hexagram-stage{position:absolute;top:55%;left:50%;transform:translate(-50%,-45%);width:clamp(720px,55vw,920px);height:clamp(720px,55vw,920px);pointer-events:none;z-index:0;opacity:.1}
.hexagram-svg{width:100%;height:100%;overflow:visible}
.hexagram-group{transform-origin:500px 500px}

/* ═══════════════════════════════════════════
   暗金浑天仪加载器 (Act 1)
   ═══════════════════════════════════════════ */
.kairos-loader-wrap{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem 0}
.celestial-astrolabe{width:120px;height:120px;position:relative}
.astrolabe-ring-outer{position:absolute;inset:0;border:1px dashed rgba(201,160,139,.45);border-radius:50%;animation:spin-cw 25s linear infinite}
.astrolabe-ring-inner{position:absolute;inset:18px;border:1px solid rgba(201,160,139,.25);border-top-color:#c9a08b;border-radius:50%;animation:spin-ccw 12s linear infinite}
.astrolabe-core{position:absolute;inset:50px;background:#c9a08b;border-radius:50%;box-shadow:0 0 15px #c9a08b;animation:pulse-core 2s ease-in-out infinite alternate}
@keyframes spin-cw{to{transform:rotate(360deg)}}
@keyframes spin-ccw{to{transform:rotate(-360deg)}}
@keyframes pulse-core{from{opacity:.3;transform:scale(.8)}to{opacity:.9;transform:scale(1.1)}}
.loader-status-text{margin-top:1.6rem;font-family:"Cinzel","Noto Serif SC",serif;font-size:.82rem;color:#c9a08b;letter-spacing:.18em;min-height:1.4rem}

/* ═══════════════════════════════════════════
   3D 揭牌 (Act 2) · anime.js 驱动
   ═══════════════════════════════════════════ */
.slot-card-3d{width:70px;height:98px;position:relative;transform-style:preserve-3d}
.slot-card-3d .card-face-front{opacity:0}
.slot-card-3d.flipped .card-face-front{opacity:1}
.card-face-front,.card-face-back{position:absolute;inset:0;backface-visibility:hidden;border-radius:4px;width:70px;height:98px}
.card-face-back{background:linear-gradient(135deg,#0f0c14 0%,#1a1520 50%,#0f0c14 100%);border:1.5px solid rgba(201,160,139,.45);box-shadow:inset 0 0 30px rgba(201,160,139,.06)}
.card-face-back::after{content:'◆';position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:1.2rem;color:rgba(201,160,139,.3)}
.card-face-front{transform:rotateY(180deg);border:1.5px solid #c9a08b;background-size:cover;background-position:center;background-color:#0d0914;box-shadow:0 0 20px rgba(201,160,139,.3)}
.card-face-front.reversed{transform:rotateY(180deg) rotate(180deg)}
.card-reversed-tag{position:absolute;bottom:-22px;left:50%;transform:translateX(-50%);font-size:.62rem;color:#c9a08b;letter-spacing:.12em;opacity:0;transition:opacity .5s}
.slot-card-3d.flipped .card-reversed-tag{opacity:1}

/* ═══════════════════════════════════════════
   羊皮纸解读报告 (Act 3)
   ═══════════════════════════════════════════ */
/* ══════ S4 阅读报告 · Apple Typography 调校 ══════ */
/* 原则: inverse leading — 标题紧/正文松; text-wrap:pretty 减孤字;
   letter-spacing 为中文阅读舒适度微调; 禁用 justify 防河流效应 */

.reading-report-paper{
  max-width:720px;
  margin:0 auto;
  padding:2rem 2rem 1rem;
  color:#d4c5a9;
  font-family:"Noto Serif SC","Source Han Serif SC","Songti SC",serif;
  font-size:.95rem;
  line-height:1.85;
  letter-spacing:.025em;
  text-wrap:pretty;
  font-optical-sizing:auto;
}

/* 报告内标题: inverse leading — 大标题紧行距 */
.reading-report-paper h2,.reading-report-paper h3{
  font-family:"Cinzel","Noto Serif SC",serif;
  color:#c9a08b;
  letter-spacing:-.01em;
  line-height:1.25;          /* Apple: 标题紧于正文 */
  text-align:center;
  margin:2rem 0 1.2rem 0;
  text-wrap:balance;         /* Apple: 标题均匀折行 */
}
.reading-report-paper h2{font-size:1.2rem}
.reading-report-paper h3{font-size:1.05rem}

/* 段落: 左对齐 + 舒适间距 */
.report-paragraph{
  margin-bottom:1.8rem;
  text-align:start;
  text-wrap:pretty;
}
/* 粗体强调 · Apple: weight-based hierarchy */
.report-strong{color:rgba(212,197,169,.9);font-weight:600}

/* Apple: 正文不用 drop cap，用 weight+color 建立层级 */
.report-paragraph::first-letter{}

/* 分隔线 · Apple: 安静呼吸间距，低对比度金线 */
.report-divider{
  display:flex;align-items:center;justify-content:center;
  margin:2.5rem 0;color:rgba(201,160,139,.18);font-size:.68rem;letter-spacing:.15em;white-space:nowrap;
}
.report-divider::before,.report-divider::after{
  content:"";flex:1;height:1px;
  background:linear-gradient(90deg,transparent,rgba(201,160,139,.12),transparent);
}
.report-divider span{margin:0 .8rem}
/* 追问区 · Apple: 安静一致的色调，不抢正文风头 */
.followup-container{max-width:800px;margin:3rem auto 2rem;padding:2rem 2.5rem;background:rgba(13,14,18,.4);border:1px solid rgba(201,160,139,.2);border-radius:4px;box-shadow:0 0 0 1px rgba(201,160,139,.06)}
.followup-title{font-family:"Cinzel","Noto Serif SC",serif;font-size:1rem;color:rgba(201,160,139,.5);letter-spacing:.14em;margin-bottom:1.2rem;text-align:center;font-weight:400}
.followup-input-group{display:flex;gap:1rem;align-items:flex-end;border-bottom:1px solid rgba(201,160,139,.3);padding-bottom:.5rem}
.followup-textarea{flex:1;background:transparent!important;border:none!important;outline:none!important;color:rgba(212,197,169,.78);font-family:inherit;font-size:.9rem;resize:none;min-height:48px;letter-spacing:.015em}
.followup-send-btn{background:rgba(201,160,139,.08)!important;border:1px solid rgba(201,160,139,.35)!important;color:rgba(201,160,139,.6)!important;font-family:"Cinzel","Noto Serif SC",serif;letter-spacing:.1em;padding:.6rem 1.6rem;cursor:pointer;transition:all .25s;border-radius:2px;font-weight:400}
.followup-send-btn:hover{background:rgba(201,160,139,.16)!important;border-color:rgba(201,160,139,.5)!important;color:#e8d5a3!important;box-shadow:0 0 14px rgba(201,160,139,.15)}
.action-row{display:flex;justify-content:center;gap:2rem;margin:3rem 0}
.action-row button{background:transparent!important;border:1px solid rgba(212,197,169,.1)!important;color:rgba(201,160,139,.28)!important;font-family:"Cinzel","Noto Serif SC",serif;letter-spacing:.12em;padding:.8rem 2.2rem;border-radius:30px;cursor:pointer;transition:all .25s;font-weight:400}
.action-row button:hover{background:rgba(201,160,139,.06)!important;border-color:rgba(201,160,139,.22)!important;color:rgba(201,160,139,.55)!important}
@keyframes para-enter{to{opacity:1;transform:translateY(0)}}



/* ═══════════════════════════════════════════
   黄铜星轨推演仪 — 高密五重同心 Astrolabe
   ═══════════════════════════════════════════ */
.astrolabe-engine-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;user-select:none;background:transparent!important}
.astrolabe-stage{position:relative;width:clamp(360px,45vw,540px);height:clamp(360px,45vw,540px);display:flex;align-items:center;justify-content:center;background:transparent!important}
.astrolabe-stardust{display:none!important}
.astrolabe-track-outer{position:absolute;inset:0;border:1px dashed rgba(201,160,139,.4);border-radius:50%;box-shadow:0 0 30px rgba(201,160,139,.1),0 0 60px rgba(201,160,139,.04);pointer-events:none}
.astrolabe-mark-12{position:absolute;top:50%;left:50%;font-family:"Times New Roman",serif;font-size:.7rem;color:#c9a08b;opacity:.75;transform:rotate(var(--deg)) translateY(-230px) rotate(calc(-1 * var(--deg)));margin-top:-.4rem;margin-left:-.4rem;width:.8rem;text-align:center;line-height:1}
.astrolabe-track-mid{position:absolute;inset:60px;border:1px solid rgba(201,160,139,.2);border-radius:50%;box-shadow:0 0 16px rgba(201,160,139,.06);pointer-events:none}
.astrolabe-track-inner{position:absolute;inset:120px;border:1px dashed rgba(201,160,139,.3);border-radius:50%;box-shadow:0 0 12px rgba(201,160,139,.05);pointer-events:none}
.planet-orbit{position:absolute;inset:0;border-radius:50%}
.planet-node{position:absolute;top:50%;left:50%;border-radius:50%;transform:translateY(var(--r))}
.planet-node i{display:block;width:100%;height:100%;border-radius:50%}
/* ☿ Mercury */
.p-mercury{width:26px;height:26px;margin-top:-13px;margin-left:-13px;background:radial-gradient(circle at 38% 35%,#f0ece8 0%,#c8c0b8 40%,#888078 100%);box-shadow:0 0 12px rgba(200,195,185,.5),0 0 22px rgba(180,175,165,.2)}
/* ♀ Venus */
.p-venus{width:34px;height:34px;margin-top:-17px;margin-left:-17px;background:radial-gradient(circle at 35% 35%,#faf5e8 0%,#f0e0b0 30%,#d4b868 60%,#b09848 100%);box-shadow:0 0 18px rgba(210,190,140,.7),0 0 34px rgba(190,170,120,.3)}
/* ☽ Moon */
.p-moon{width:30px;height:30px;margin-top:-15px;margin-left:-15px;background:radial-gradient(circle at 40% 35%,#f5f0e8 0%,#e0d8c8 30%,#c0b898 60%,#807868 100%);box-shadow:0 0 14px rgba(220,215,200,.6),0 0 28px rgba(200,190,180,.25)}
/* ♂ Mars */
.p-mars{width:34px;height:34px;margin-top:-17px;margin-left:-17px;background:radial-gradient(circle at 40% 35%,#f0c8b8 0%,#d45040 40%,#802018 100%);box-shadow:0 0 16px rgba(210,80,50,.7),0 0 32px rgba(200,70,40,.3)}
/* ♃ Jupiter */
.p-jupiter{width:48px;height:48px;margin-top:-24px;margin-left:-24px;background:linear-gradient(180deg,#e8dcc0 0%,#d4b878 15%,#e8dcc0 30%,#b89058 45%,#e8dcc0 55%,#d4b878 70%,#e8dcc0 85%,#b89058 100%);box-shadow:0 0 22px rgba(201,160,139,.6),0 0 44px rgba(180,150,100,.25);overflow:hidden}
.p-jupiter i{background:radial-gradient(ellipse at 45% 55%,rgba(255,220,160,.4) 0%,transparent 60%)}
/* ♄ Saturn */
.p-saturn{width:42px;height:42px;margin-top:-21px;margin-left:-21px;background:radial-gradient(circle at 40% 35%,#f0e8d0 0%,#d4c898 30%,#b8a068 60%,#887040 100%);box-shadow:0 0 20px rgba(200,180,140,.6),0 0 40px rgba(180,160,120,.25);position:relative}
.p-saturn::after{content:'';position:absolute;top:44%;left:-10px;width:62px;height:7px;border-radius:50%;border:2px solid rgba(200,180,140,.45);transform:rotate(-15deg);pointer-events:none}
/* ♄ Saturn — 光环 */
.core-starburst-flare{position:absolute;width:130px;height:130px;background:radial-gradient(circle,rgba(255,255,255,.85) 0%,rgba(245,225,180,.5) 30%,rgba(201,160,139,.3) 55%,transparent 75%);clip-path:polygon(50% 0%,54% 44%,100% 50%,54% 56%,50% 100%,46% 56%,0% 50%,46% 44%);animation:astro-spin-cw 15s linear infinite,astro-core-pulse 4s ease-in-out infinite alternate;pointer-events:none}
.astrolabe-sunburst-rays{animation:astro-spin-cw 120s linear infinite}


/* ═══════════════════════════════════════════
   暗金星轨推演仪 — Centered Astrolabe
   ═══════════════════════════════════════════ */
.astrolabe-stage{position:relative;width:clamp(360px,45vw,540px);height:clamp(360px,45vw,540px);margin:0 auto;display:flex;align-items:center;justify-content:center;background:transparent!important;user-select:none}
.astrolabe-sunburst-rays{position:absolute!important;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important;width:100%!important;height:100%!important;border-radius:50%!important;background:repeating-conic-gradient(from 0deg,rgba(201,160,139,.08) 0deg 1.5deg,transparent 1.5deg 15deg)!important;pointer-events:none!important;z-index:1!important;mask-image:radial-gradient(circle at 50% 50%,#000 25%,transparent 70%)!important;-webkit-mask-image:radial-gradient(circle at 50% 50%,#000 25%,transparent 70%)!important}
.orbit-ring{position:absolute;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important;border:1px solid rgba(201,160,139,.22)!important;border-radius:50%!important;box-sizing:border-box!important;pointer-events:none!important;z-index:2}
.orbit-ring-outer{border-style:dashed!important;border-color:rgba(201,160,139,.35)!important}
.astrolabe-mark-12{position:absolute;top:50%;left:50%;font-family:"Cinzel","Times New Roman",serif;font-size:.62rem;color:#c9a08b;opacity:.75;transform:rotate(var(--deg)) translateY(-252px) rotate(calc(-1 * var(--deg)));margin-top:-.4rem;margin-left:-.4rem;width:.8rem;text-align:center;line-height:1;pointer-events:none}
.octagram-a,.octagram-b{position:absolute;top:50%!important;left:50%!important;width:185px!important;height:185px!important;border:1px solid rgba(201,160,139,.35)!important;box-sizing:border-box!important;pointer-events:none!important;z-index:4}
.octagram-a{transform:translate(-50%,-50%) rotate(0deg)!important}
.octagram-b{transform:translate(-50%,-50%) rotate(45deg)!important}
.core-halo{position:absolute;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important;width:140px!important;height:140px!important;border:1px dashed rgba(255,220,140,.25)!important;border-radius:50%!important;box-sizing:border-box!important;pointer-events:none!important;z-index:8;animation:core-halo-spin 30s linear infinite}
.core-star{position:absolute;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important;width:80px!important;height:80px!important;border-radius:50%!important;background:radial-gradient(circle at 48% 46%,#fff 0%,#fffef8 8%,#fff4d0 22%,#ffe088 38%,#f5c050 55%,#e89820 72%,#d07010 85%,rgba(160,60,8,.35) 95%,transparent 100%)!important;pointer-events:none!important;z-index:9;animation:sun-breathe 4s cubic-bezier(.16,1,.3,1) infinite alternate;box-shadow:0 0 25px rgba(255,248,230,.9),0 0 55px rgba(255,210,100,.5),0 0 100px rgba(240,160,40,.25),0 0 160px rgba(200,100,20,.1),0 0 220px rgba(180,80,10,.04)}
.planet-node{position:absolute;top:50%;left:50%;border-radius:50%;transform:translateY(var(--r));pointer-events:none;z-index:10}
.planet-node i{display:block;width:100%;height:100%;border-radius:50%}
@keyframes core-halo-spin{from{transform:translate(-50%,-50%) rotate(0deg)}to{transform:translate(-50%,-50%) rotate(360deg)}}
@keyframes sun-breathe{0%{transform:translate(-50%,-50%) scale(.94);box-shadow:0 0 25px rgba(255,248,230,.9),0 0 55px rgba(255,210,100,.5),0 0 100px rgba(240,160,40,.25),0 0 160px rgba(200,100,20,.1),0 0 220px rgba(180,80,10,.04)}100%{transform:translate(-50%,-50%) scale(1.06);box-shadow:0 0 35px rgba(255,248,230,1),0 0 75px rgba(255,210,100,.7),0 0 130px rgba(240,160,40,.35),0 0 200px rgba(200,100,20,.15),0 0 280px rgba(180,80,10,.06)}}

/* Planet sizes (centered via .planet-node base) */
.p-mercury{width:8px;height:8px;margin-left:-4px;margin-top:-4px;background:radial-gradient(circle at 38% 35%,#e8e4e0 0%,#b0a8a0 50%,#706860 100%);box-shadow:0 0 6px rgba(200,195,185,.6)}
.p-venus{width:12px;height:12px;margin-left:-6px;margin-top:-6px;background:radial-gradient(circle at 35% 35%,#faf5e8 0%,#e8d098 40%,#c0a060 100%);box-shadow:0 0 8px rgba(210,190,140,.7)}
.p-moon{width:11px;height:11px;margin-left:-5px;margin-top:-5px;background:radial-gradient(circle at 38% 35%,#e8f0f8 0%,#a0c8d8 40%,#487888 100%);box-shadow:0 0 10px rgba(150,200,220,.7),0 0 18px rgba(120,180,200,.3)}
.p-mars{width:10px;height:10px;margin-left:-5px;margin-top:-5px;background:radial-gradient(circle at 40% 35%,#e89878 0%,#c04028 50%,#701810 100%);box-shadow:0 0 8px rgba(210,80,50,.7)}
.p-jupiter{width:24px;height:24px;margin-left:-12px;margin-top:-12px;background:linear-gradient(180deg,#e8dcc0 0%,#d4b878 25%,#e8dcc0 50%,#b89058 75%,#e8dcc0 100%);box-shadow:0 0 14px rgba(201,160,139,.6),0 0 28px rgba(180,150,100,.25);overflow:hidden}
.p-jupiter i{background:radial-gradient(ellipse at 45% 55%,rgba(255,220,160,.4) 0%,transparent 60%)}
.p-saturn{width:20px;height:20px;margin-left:-10px;margin-top:-10px;background:radial-gradient(circle at 40% 35%,#f0e8d0 0%,#d4c898 50%,#a08860 100%);box-shadow:0 0 12px rgba(200,180,140,.6),0 0 24px rgba(180,160,120,.25)}
.p-saturn::after{content:'';position:absolute;top:44%;left:-8px;width:36px;height:5px;border-radius:50%;border:1.5px solid rgba(200,180,140,.45);transform:rotate(-15deg);pointer-events:none}

/* Console text */
.astrolabe-engine-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;user-select:none;background:transparent!important}
.astrolabe-console{margin-top:2.8rem;text-align:center}
.astrolabe-main-phrase{font-family:"Cinzel","Noto Serif SC",serif;font-size:1.3rem;color:#c9a08b;letter-spacing:.22em;text-transform:uppercase;min-height:2rem;text-shadow:0 0 16px rgba(201,160,139,.5)}
.astrolabe-divider{font-size:.65rem;color:rgba(201,160,139,.4);letter-spacing:.3em;margin:.4rem 0;white-space:nowrap}
.astrolabe-sub-phrase{font-family:"Noto Serif SC",serif;font-size:.85rem;color:rgba(212,197,169,.55);letter-spacing:.16em;font-style:italic}

/* ═══════════════════════════════════════════
   所罗门炼金日轮 — Solomon Alchemical Sun
   ═══════════════════════════════════════════ */
.solomon-sun-core{position:absolute;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important;width:120px;height:120px;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:10}
.sun-rays-ring{position:absolute;inset:0;border-radius:50%}
.sun-ray-needle{position:absolute;top:50%;left:50%;width:2px;height:110px;background:linear-gradient(to bottom,#c9a08b 0%,transparent 20%,transparent 80%,#c9a08b 100%);transform:translate(-50%,-50%) rotate(var(--deg));opacity:.75}
.sun-ray-flame{position:absolute;top:50%;left:50%;width:6px;height:96px;background:radial-gradient(ellipse at center,rgba(201,160,139,.4) 0%,transparent 70%);clip-path:polygon(50% 0%,100% 50%,50% 100%,0% 50%);transform:translate(-50%,-50%) rotate(var(--deg));opacity:.6}
.sun-corona-outer{position:absolute;width:76px;height:76px;border:1px dashed rgba(201,160,139,.5);border-radius:50%}
.sun-corona-inner{position:absolute;width:56px;height:56px;border:1px solid rgba(201,160,139,.35);border-radius:50%}
.sun-lens-disc{position:absolute;width:44px;height:44px;border-radius:50%;background:radial-gradient(circle,rgba(245,232,208,.95) 0%,rgba(201,160,139,.8) 45%,rgba(13,14,18,.9) 100%);box-shadow:0 0 20px rgba(201,160,139,.6),inset 0 0 10px rgba(255,255,255,.8);display:flex;align-items:center;justify-content:center;animation:solomon-pulse 3s ease-in-out infinite alternate}
.sun-alchemical-dot{width:6px;height:6px;background:#0d0e12;border-radius:50%;box-shadow:0 0 4px #c9a08b}
@keyframes solomon-pulse{0%{transform:scale(.92);filter:drop-shadow(0 0 10px rgba(201,160,139,.4));opacity:.8}100%{transform:scale(1.08);filter:drop-shadow(0 0 25px rgba(201,160,139,.9));opacity:1}}

/* ── 移动端：等比缩放 + 无极滑动 ── */
@media(max-width:768px){
  .ritual-s3{overflow:hidden}
  .ritual-s3 .deck-grid{max-width:100vw!important;width:100%!important;height:420px!important;overflow:hidden!important;touch-action:none}
  .ritual-s3 .deck-grid::-webkit-scrollbar{display:none}
  .ritual-s3 .card-back,.ritual-s3 #card-glow-proxy{width:58px!important;height:81px!important}
  .ritual-s2 .ritual-row{overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .ritual-s2 .ritual-row::-webkit-scrollbar{display:none}
  .hexagram-stage{width:480px!important;height:480px!important;opacity:1!important}
}

/* ═══════════════════════════════════════════════════════════
   S4 移动端全宽铺满 · 高特异性终结规则（必须位于文件最底部）
   解决: Flex shrink-wrap + 源顺序倒置 + CJK 锯齿留白
   ═══════════════════════════════════════════════════════════ */
@media screen and (max-width:600px){
  /* 顶层容器: 外边距收紧 */
  #app{padding:.5rem .25rem!important;max-width:100vw!important;overflow-x:hidden!important}

  /* result 容器: 阻绝玻璃壳吃掉宽度 */
  body[data-system="tarot"] #result,
  #result{width:100%!important;box-sizing:border-box!important;padding:.8rem .25rem!important;border-radius:6px!important}

  body[data-system="tarot"] #result-content,
  #result-content{width:100%!important;box-sizing:border-box!important}

  /* 报告卷轴: width:100% 阻断 Flex shrink-wrap（max-width 不够） */
  body[data-system="tarot"] .reading-report-paper,
  .ritual-s4 .reading-report-paper,
  .reading-report-paper{
    width:100%!important;max-width:100%!important;min-width:100%!important;
    margin:0!important;padding:1rem .5rem!important;
    box-sizing:border-box!important;display:block!important;float:none!important
  }

  /* CJK 两端对齐 + 强制断行 → 消灭右侧锯齿留白 */
  .reading-report-paper p,
  .reading-report-paper .report-paragraph{
    font-size:.88rem!important;line-height:1.8!important;
    letter-spacing:.02em!important;
    text-align:justify!important;text-justify:inter-ideograph!important;
    word-break:break-all!important;word-wrap:break-word!important;
    margin-bottom:1.2rem!important
  }

  .reading-report-paper h2,
  .reading-report-paper h3{font-size:1.1rem!important;margin:1.2rem 0 .8rem!important;text-align:center!important}
  .report-divider{margin:1.8rem 0!important;font-size:.65rem!important}
}
