/* The Crystal Heart — show page. A cinematic night-mountain world. */
.crystal-page main {
  background:
    radial-gradient(1200px 500px at 80% -5%, rgba(64, 224, 255, 0.20), transparent 60%),
    radial-gradient(1000px 600px at 10% 10%, rgba(255, 93, 162, 0.12), transparent 55%),
    linear-gradient(180deg, #060d24 0%, #0a1836 34%, #0d2148 62%, #081226 100%);
  color: #eaf4ff;
  position: relative;
  overflow: hidden;
}
#snow-canvas {
  position: fixed; inset: 0; width: 100%; height: 100%;
  pointer-events: none; z-index: 3;
}
.fog {
  position: absolute; width: 140%; height: 260px; left: -20%;
  background: radial-gradient(closest-side, rgba(210, 235, 255, 0.16), transparent 70%);
  filter: blur(28px); pointer-events: none; z-index: 1;
}
.fog-a { top: 340px; animation: fog-drift 26s ease-in-out infinite alternate; }
.fog-b { top: 1180px; animation: fog-drift 34s ease-in-out infinite alternate-reverse; }
@keyframes fog-drift { from { transform: translateX(-4%); } to { transform: translateX(4%); } }
#cursor-glow {
  position: fixed; width: 340px; height: 340px; left: 0; top: 0;
  margin: -170px 0 0 -170px; border-radius: 50%;
  background: radial-gradient(closest-side, rgba(140, 225, 255, 0.20), transparent 70%);
  pointer-events: none; z-index: 4; mix-blend-mode: screen;
}
.crystal-inner { position: relative; z-index: 5; }
.ch-hero { text-align: center; padding: 64px 20px 10px; }
.ch-hero small { letter-spacing: 0.3em; font-weight: 800; color: #8ce0ff; }
.ch-title {
  font-size: clamp(2.6rem, 8.5vw, 5.2rem);
  line-height: 1.02; margin: 14px 0 6px; font-weight: 900;
  background: linear-gradient(100deg, #bfe9ff 5%, #5ec8ff 30%, #ff7ac0 62%, #ffd7ec 90%);
  background-size: 220% 100%;
  -webkit-background-clip: text; background-clip: text; color: transparent;
  animation: aurora-slide 9s ease-in-out infinite alternate;
  text-shadow: none;
  filter: drop-shadow(0 6px 26px rgba(94, 200, 255, 0.35));
}
@keyframes aurora-slide { from { background-position: 0% 0; } to { background-position: 100% 0; } }
.ch-sub { font-size: clamp(1.05rem, 3vw, 1.45rem); letter-spacing: 0.14em; font-weight: 700; color: #cfeaff; margin: 0 0 10px; }
.ch-tag { font-style: italic; color: #a9c8e8; margin: 0 auto 26px; max-width: 560px; }
.begin-btn {
  display: inline-block; border: none; cursor: pointer;
  font: inherit; font-weight: 900; letter-spacing: 0.06em; font-size: 1.05rem;
  color: #06263f; background: linear-gradient(135deg, #aee6ff, #5ec8ff 55%, #8ce0ff);
  padding: 16px 34px; border-radius: 999px;
  box-shadow: 0 0 0 0 rgba(94, 200, 255, 0.55), 0 14px 34px rgba(0, 0, 0, 0.45);
  animation: begin-pulse 2.2s ease-out infinite;
}
@keyframes begin-pulse {
  0% { box-shadow: 0 0 0 0 rgba(94, 200, 255, 0.55), 0 14px 34px rgba(0,0,0,0.45); }
  70% { box-shadow: 0 0 0 20px rgba(94, 200, 255, 0), 0 14px 34px rgba(0,0,0,0.45); }
  100% { box-shadow: 0 0 0 0 rgba(94, 200, 255, 0), 0 14px 34px rgba(0,0,0,0.45); }
}
.ch-watch { max-width: 920px; margin: 40px auto 6px; padding: 0 18px; }
.ch-watch video {
  width: 100%; border-radius: 18px; display: block;
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.55), 0 0 0 1px rgba(140, 224, 255, 0.35), 0 0 44px rgba(94, 200, 255, 0.22);
  background: #000;
}
.ch-watch .runtime { text-align: center; color: #a9c8e8; font-size: 0.9rem; margin: 10px 0 0; }
.ch-section { text-align: center; padding: 46px 20px 2px; }
.ch-section small { letter-spacing: 0.26em; font-weight: 800; color: #8ce0ff; }
.ch-section h2 { margin: 8px 0 8px; color: #ffffff; }
.ch-section p { max-width: 640px; margin: 0 auto; color: #d5e9ff; }
.chapter-grid, .character-grid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: 22px; max-width: 1120px; margin: 28px auto 6px; padding: 0 20px;
}
.chapter-card, .character-card {
  background: rgba(10, 26, 54, 0.72); border: 1px solid rgba(140, 224, 255, 0.35);
  border-radius: 18px; overflow: hidden; text-align: left;
  box-shadow: 0 16px 36px rgba(0, 0, 0, 0.4);
}
.chapter-card { cursor: pointer; font: inherit; color: inherit; width: 100%; padding: 0; transition: transform 0.18s ease, box-shadow 0.18s ease; }
.chapter-card:hover, .chapter-card:focus-visible { transform: translateY(-4px); box-shadow: 0 22px 44px rgba(0,0,0,0.5), 0 0 24px rgba(94,200,255,0.35); }
.chapter-card img, .character-card img { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; display: block; }
.card-pad { padding: 15px 17px 18px; }
.card-pad h3 { margin: 0 0 5px; color: #ffffff; font-size: 1.12rem; }
.card-pad p { margin: 0; color: #c4dcf5; font-size: 0.95rem; }
.card-pad .play-hint { display: inline-block; margin-top: 10px; font-weight: 800; color: #8ce0ff; font-size: 0.85rem; letter-spacing: 0.05em; }
.character-card { text-align: center; padding-bottom: 6px; }
.character-card .card-pad { text-align: center; }
.heart-zone { text-align: center; padding: 54px 20px 8px; }
.big-heart {
  font-size: clamp(4.5rem, 14vw, 7.5rem); line-height: 1; cursor: pointer; border: none; background: none;
  background-image: linear-gradient(140deg, #ff5da2, #ff9ecb 45%, #c44dff);
  -webkit-background-clip: text; background-clip: text; color: transparent;
  filter: drop-shadow(0 0 26px rgba(255, 93, 162, 0.55));
  animation: heartbeat 1.6s ease-in-out infinite;
}
@keyframes heartbeat { 0%, 100% { transform: scale(1); } 12% { transform: scale(1.1); } 24% { transform: scale(1); } 36% { transform: scale(1.07); } 48% { transform: scale(1); } }
.heart-line { color: #ffd7ec; font-weight: 700; margin: 8px 0 2px; }
.heart-secret { color: #a9c8e8; min-height: 1.4em; margin: 2px auto 0; max-width: 520px; }
.sparkle {
  position: fixed; z-index: 60; pointer-events: none; font-size: 18px;
  animation: sparkle-fly 0.95s ease-out forwards;
}
@keyframes sparkle-fly {
  from { transform: translate(0, 0) scale(1); opacity: 1; }
  to { transform: translate(var(--dx), var(--dy)) scale(0.4); opacity: 0; }
}
.crystal-page .podcast-cta .cta-band {
  background: rgba(10, 26, 54, 0.78); border-color: rgba(140, 224, 255, 0.35); color: #eaf4ff;
}
.crystal-page .podcast-cta h2 { color: #ffffff; }
.crystal-page .cta-shop { background: rgba(255,255,255,0.08); color: #bfe9ff; border-color: #5ec8ff; }
.crystal-page .made-line { color: #d5e9ff; }
.crystal-page .ref-line { color: #a9c8e8; opacity: 1; }
.crystal-page .ref-line a { color: #8ce0ff; }
.crystal-page .destination-return a { color: #8ce0ff; }
@media (prefers-reduced-motion: reduce) {
  .ch-title, .begin-btn, .big-heart, .fog-a, .fog-b { animation: none !important; }
}
