/* app/ritual.css — 推演仪式样式（架构契约 §42）
 * 色板与 style.css :root 同源（--gold / --gold-soft / --ink-*）。
 * 全部动画包在 prefers-reduced-motion 媒体查询内：reduce 用户由 motionEnabled()
 * 挡在 JS 层（仪式不挂载），此处 CSS 仍守规矩、终态兜底。 */

.ritual {
  position: relative;
  padding: 48px 16px 40px;
  min-height: 320px;
  text-align: center;
}

/* ---------- 跳过仪式：右上角小字，全程可见 ---------- */

.ritual-skip {
  position: absolute;
  top: 10px;
  right: 12px;
  padding: 6px 8px;
  background: none;
  border: none;
  font-size: var(--fs-aux);
  color: var(--text-dim);
  text-decoration: underline;
  text-underline-offset: 3px;
  cursor: pointer;
}

.ritual-skip:hover,
.ritual-skip:focus-visible {
  color: var(--gold-soft);
}

.ritual-skip:focus-visible {
  outline: 2px solid var(--gold);
  outline-offset: 2px;
  border-radius: 4px;
}

/* ---------- ① 排盘：柱升起 ---------- */

.ritual-board {
  position: relative;
  overflow: hidden;
  padding: 8px 0 16px;
}

.ritual-pillars {
  display: flex;
  justify-content: center;
  gap: 22px;
  min-height: 140px;
}

.ritual-pillar {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
}

.ritual-pillar-name {
  font-size: var(--fs-aux);
  letter-spacing: 0.2em;
  color: var(--text-dim);
}

.ritual-glyph {
  font-size: 34px;
  line-height: 1.25;
  color: var(--gold-soft);
  text-shadow: 0 0 6px rgba(212, 175, 55, 0.45);
}

/* ---------- ② 五行流光：横向光带 ---------- */

.ritual-shimmer {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(
    100deg,
    transparent 25%,
    rgba(232, 207, 122, 0.3) 50%,
    transparent 75%
  );
}

/* ---------- ③ 翻牌：星纹牌背 + 3D 翻转 ---------- */

.ritual-hint {
  margin: 18px 0 0;
  font-size: 15px;
  letter-spacing: 0.12em;
  color: var(--gold);
}

.ritual-card-row {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 14px;
  margin-top: 16px;
}

.ritual-card {
  width: 88px;
  height: 132px;
  padding: 0;
  background: none;
  border: none;
  perspective: 640px;
  cursor: pointer;
}

.ritual-card:focus-visible {
  outline: 2px solid var(--gold);
  outline-offset: 3px;
  border-radius: 10px;
}

.ritual-card-inner {
  position: relative;
  display: block;
  width: 100%;
  height: 100%;
  transform-style: preserve-3d;
}

.ritual-card.is-flipped .ritual-card-inner {
  transform: rotateY(180deg);
}

.ritual-card-back,
.ritual-card-face {
  position: absolute;
  inset: 0;
  border-radius: 10px;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
}

/* 星纹背面：纯 CSS 渐变绘制，不用图片 */
.ritual-card-back {
  border: 1px solid rgba(212, 175, 55, 0.55);
  background:
    radial-gradient(1px 1px at 22% 22%, rgba(232, 207, 122, 0.85) 50%, transparent 51%),
    radial-gradient(1px 1px at 70% 16%, rgba(255, 255, 255, 0.6) 50%, transparent 51%),
    radial-gradient(1.5px 1.5px at 46% 50%, rgba(232, 207, 122, 0.75) 50%, transparent 51%),
    radial-gradient(1px 1px at 28% 76%, rgba(255, 255, 255, 0.5) 50%, transparent 51%),
    radial-gradient(1px 1px at 74% 68%, rgba(232, 207, 122, 0.6) 50%, transparent 51%),
    radial-gradient(1px 1px at 56% 88%, rgba(255, 255, 255, 0.45) 50%, transparent 51%),
    radial-gradient(circle at 50% 38%, #202a52 0%, var(--ink-card) 72%);
}

.ritual-card-face {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 8px;
  transform: rotateY(180deg);
  border: 1px solid var(--gold);
  background: var(--ink-card);
  color: var(--text-main);
}

.ritual-card-name {
  font-size: 15px;
  line-height: 1.4;
}

.ritual-card-pos {
  font-size: var(--fs-aux);
  color: var(--gold-soft);
}

/* ---------- 动效：只在允许动效的环境跑 ---------- */

@media (prefers-reduced-motion: no-preference) {
  .ritual-pillar {
    opacity: 0;
    transform: translateY(26px);
  }

  .ritual-pillar.is-up {
    animation: ritual-rise 0.6s ease-out forwards;
  }

  .ritual-pillar.is-up .ritual-glyph {
    animation: ritual-gold-in 0.9s ease-out both;
  }

  .ritual-shimmer {
    animation: ritual-sweep 0.6s ease-in-out both;
  }

  .ritual-hint {
    animation: ritual-fade-in 0.5s ease-out both;
  }

  .ritual-card-inner {
    transition: transform 0.6s cubic-bezier(0.2, 0.7, 0.3, 1);
  }

  @keyframes ritual-rise {
    from {
      opacity: 0;
      transform: translateY(26px);
    }
    to {
      opacity: 1;
      transform: none;
    }
  }

  @keyframes ritual-gold-in {
    from {
      opacity: 0.2;
      text-shadow: 0 0 0 rgba(212, 175, 55, 0);
    }
    60% {
      text-shadow: 0 0 18px rgba(232, 207, 122, 0.9);
    }
    to {
      opacity: 1;
      text-shadow: 0 0 6px rgba(212, 175, 55, 0.45);
    }
  }

  @keyframes ritual-sweep {
    from {
      transform: translateX(-100%);
    }
    to {
      transform: translateX(100%);
    }
  }

  @keyframes ritual-fade-in {
    from {
      opacity: 0;
    }
    to {
      opacity: 1;
    }
  }
}

/* reduce 兜底：即使仪式被意外挂载，也一律终态呈现、零动画 */
@media (prefers-reduced-motion: reduce) {
  .ritual-pillar,
  .ritual-pillar.is-up {
    opacity: 1;
    transform: none;
    animation: none;
  }

  .ritual-shimmer {
    display: none;
  }

  .ritual-hint {
    animation: none;
  }

  .ritual-card-inner {
    transition: none;
  }
}
