/* ═══ 章节进度 ═══ */
.chapter-progress {
  position: fixed;
  bottom: calc(24px + var(--safe-bottom));
  right: 20px;
  z-index: 100;
  font-size: 10px;
  letter-spacing: 2px;
  color: var(--text-dim);
  font-variant-numeric: tabular-nums;
  opacity: 0;
  transform: translateY(8px);
  transition: opacity 0.6s ease, transform 0.6s ease;
  pointer-events: none;
}
.chapter-progress.show {
  opacity: 1;
  transform: translateY(0);
}
.chapter-progress .cp-num { color: var(--glow-warm); opacity: 0.7; }

/* ═══ 首屏 ═══ */
.hero {
  position: relative;
  width: 100vw;
  max-width: 100vw;
  height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 40px 24px;
  overflow: hidden;
}
.hero-bg { position: absolute; inset: 0; z-index: 0; }
.hero-bg img {
  width: 100%; height: 100%;
  object-fit: cover;
  opacity: 0;
  filter: brightness(0.55) contrast(1.1) saturate(0.8);
  transition: opacity 3s cubic-bezier(0.25,0.46,0.45,0.94);
}
.hero.revealed .hero-bg img { opacity: 0.8; }
.hero-bg::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(10,14,26,0.15) 0%, rgba(10,14,26,0.05) 40%, rgba(10,14,26,0.3) 80%, rgba(10,14,26,0.85) 100%);
  transition: opacity 3s ease;
}
.hero.revealed .hero-bg::after { opacity: 0.5; }

.hero-veil {
  position: absolute;
  inset: 0;
  background: rgba(10,14,26,0.92);
  z-index: 1;
  pointer-events: none;
  transform-origin: top center;
  transition: transform 2s cubic-bezier(0.65,0,0.35,1), opacity 2s ease;
}
.hero.revealed .hero-veil { transform: translateY(-100%); opacity: 0; }

.lamp-glow {
  position: fixed;
  width: 60px; height: 60px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(245,200,122,0.6) 0%, rgba(245,200,122,0.15) 40%, transparent 70%);
  z-index: 5;
  opacity: 0.15;
  animation: breathe 4s ease-in-out infinite;
  pointer-events: none;
  transform: translate(-50%,-50%);
}
.lamp-glow.active {
  width: 200px; height: 200px;
  opacity: 0.6;
  animation: breathe-active 3s ease-in-out infinite;
  transition: width 2.5s cubic-bezier(0.25,0.46,0.45,0.94), height 2.5s cubic-bezier(0.25,0.46,0.45,0.94), opacity 1.5s ease;
}
@keyframes breathe {
  0%,100%{opacity:0.15;transform:translate(-50%,-50%) scale(1)}
  50%{opacity:0.22;transform:translate(-50%,-50%) scale(1.04)}
}
@keyframes breathe-active {
  0%,100%{opacity:0.6;transform:translate(-50%,-50%) scale(1)}
  50%{opacity:0.7;transform:translate(-50%,-50%) scale(1.05)}
}

.hero-content {
  position: relative;
  z-index: 2;
  text-align: center;
  max-width: 420px;
  padding: 0 12px;
  transition: transform 1.5s cubic-bezier(0.16,1,0.3,1);
}
.hero-content.lifted { transform: translateY(-20px); }

.hero-logo {
  position: absolute;
  top: 28px; left: 24px;
  width: 80px; height: 80px;
  z-index: 10;
  opacity: 0;
  filter: drop-shadow(0 0 12px rgba(245,200,122,0));
  transition: opacity 2s ease, filter 2s ease;
}
.hero.revealed .hero-logo {
  opacity: 0.85;
  filter: drop-shadow(0 0 16px var(--glow-warm-40));
}
.hero-logo img { width: 100%; height: 100%; object-fit: contain; }

.hero-en {
  font-size: 11px;
  letter-spacing: 6px;
  text-transform: uppercase;
  color: var(--text-dim);
  margin-bottom: 8px;
  font-weight: 300;
}
.hero-origin {
  font-size: 11px;
  letter-spacing: 4px;
  color: var(--glow-warm);
  opacity: 0.5;
  margin-bottom: 20px;
  font-weight: 300;
}
.hero-title {
  font-size: 32px;
  font-weight: 600;
  letter-spacing: 2px;
  line-height: 1.4;
  margin-bottom: 20px;
  color: #fff;
  text-shadow:
    0 0 7px rgba(245,200,122,0.8),
    0 0 15px var(--glow-warm-50),
    0 0 30px var(--glow-warm-30),
    0 0 50px rgba(245,200,122,0.15);
  animation: neon-glow 3s ease-in-out infinite;
}
@keyframes neon-glow {
  0%,100% { text-shadow: 0 0 7px rgba(245,200,122,0.8), 0 0 15px var(--glow-warm-50), 0 0 30px var(--glow-warm-30), 0 0 50px rgba(245,200,122,0.15); }
  50% { text-shadow: 0 0 10px rgba(245,200,122,0.9), 0 0 20px rgba(245,200,122,0.6), 0 0 40px var(--glow-warm-40), 0 0 60px var(--glow-warm-20); }
}
@keyframes neon-flicker {
  0% { opacity: 1; }
  5% { opacity: 0.4; }
  6% { opacity: 1; }
  10% { opacity: 0.7; }
  11% { opacity: 1; }
  30% { opacity: 1; }
  31% { opacity: 0.5; }
  32% { opacity: 1; }
  33% { opacity: 0.6; }
  34% { opacity: 1; }
  100% { opacity: 1; }
}
.hero-title.flicker {
  animation: neon-flicker 0.8s ease-in-out;
}
.hero-subtitle {
  font-size: 14px;
  color: var(--text-secondary);
  line-height: 1.9;
  margin-bottom: 48px;
  font-weight: 300;
}

.btn-light {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 14px 36px;
  background: rgba(245,200,122,0.12);
  border: 1px solid rgba(245,200,122,0.4);
  border-radius: 100px;
  color: var(--glow-warm);
  font-size: 15px;
  font-family: inherit;
  cursor: pointer;
  transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1),
              background 0.3s ease,
              border-color 0.3s ease,
              box-shadow 0.3s ease;
  letter-spacing: 2px;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  box-shadow: 0 0 20px rgba(245,200,122,0.08);
  animation: btnPulse 3s ease-in-out infinite;
}
@keyframes btnPulse {
  0%, 100% { box-shadow: 0 0 20px rgba(245,200,122,0.08); }
  50% { box-shadow: 0 0 30px rgba(245,200,122,0.15); }
}
.btn-light:hover {
  background: rgba(245,200,122,0.2);
  border-color: rgba(245,200,122,0.6);
  box-shadow: 0 0 40px rgba(245,200,122,0.2);
  transform: scale(1.06);
}
.btn-light:active {
  transform: scale(0.95);
  transition-duration: 0.1s;
}
.btn-light:focus-visible {
  outline: 2px solid var(--focus-ring);
  outline-offset: 4px;
  background: var(--glow-warm-20);
  border-color: var(--glow-warm-50);
}
.btn-light .dot {
  width: 8px; height: 8px;
  border-radius: 50%;
  background: var(--glow-warm);
  box-shadow: 0 0 8px var(--glow-warm);
  transition: box-shadow 0.6s ease;
}
.btn-light.active .dot {
  box-shadow: 0 0 16px var(--glow-warm), 0 0 32px var(--glow-warm-40);
}

