/* ============ HEAVEN OF SEMROY — cinematic scroll tour ============ */

.tour-body {
  background: #04060c;
  --lux-gold: #e7c476;
  --lux-champagne: #f3e3bd;
}

.gold {
  background: linear-gradient(92deg, #e7c476, #f3e3bd 55%, #9adfe8);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

/* ============ STAGE ============ */
.stage {
  position: fixed;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  background: #04060c;
}
.layer {
  position: absolute;
  inset: -4%;
  background-size: cover;
  background-position: center;
  will-change: transform, opacity;
  opacity: 0;
}
.vignette {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse 120% 90% at 50% 45%, transparent 55%, rgba(2, 4, 10, 0.55) 100%),
    linear-gradient(to bottom, rgba(2, 4, 10, 0.5), transparent 22%, transparent 72%, rgba(2, 4, 10, 0.72));
  pointer-events: none;
}
.bar {
  position: absolute;
  left: 0; right: 0;
  height: 3.2vh;
  background: #02040a;
  pointer-events: none;
}
.bar-top { top: 0; }
.bar-bottom { bottom: 0; }

/* ============ PROGRESS ============ */
.tour-progress {
  position: fixed;
  top: 0; left: 0; right: 0;
  height: 3px;
  z-index: 120;
  background: rgba(255, 255, 255, 0.07);
}
.tour-progress i {
  display: block;
  height: 100%;
  width: 0%;
  background: linear-gradient(90deg, #e7c476, #f3e3bd);
  box-shadow: 0 0 12px rgba(231, 196, 118, 0.8);
}

.dots {
  position: fixed;
  right: 22px;
  top: 50%;
  transform: translateY(-50%);
  z-index: 110;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.dots button {
  width: 9px; height: 9px;
  border-radius: 50%;
  border: 1px solid rgba(243, 227, 189, 0.5);
  background: transparent;
  cursor: pointer;
  padding: 0;
  transition: background 0.3s, transform 0.3s, box-shadow 0.3s;
}
.dots button.active {
  background: var(--lux-gold);
  transform: scale(1.35);
  box-shadow: 0 0 10px rgba(231, 196, 118, 0.9);
}

/* ============ CAPTIONS ============ */
.captions {
  position: fixed;
  inset: 0;
  z-index: 10;
  pointer-events: none;
}
.caption {
  position: absolute;
  max-width: 560px;
  opacity: 0;
  transform: translateY(26px);
  will-change: transform, opacity;
}
.caption h1, .caption h2 {
  font-family: var(--font-head);
  font-size: clamp(2.6rem, 6vw, 4.6rem);
  font-weight: 700;
  letter-spacing: -1.5px;
  line-height: 1.05;
  color: #fff;
  text-shadow: 0 4px 40px rgba(0, 0, 0, 0.65);
  margin-bottom: 14px;
}
.cap-eyebrow {
  font-family: var(--font-head);
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: var(--lux-gold);
  text-shadow: 0 2px 18px rgba(0, 0, 0, 0.8);
  margin-bottom: 14px;
}
.cap-sub {
  color: rgba(255, 255, 255, 0.85);
  font-size: 1.08rem;
  line-height: 1.6;
  text-shadow: 0 2px 24px rgba(0, 0, 0, 0.8);
}
.cap-left { left: max(5vw, calc((100vw - 1160px) / 2)); bottom: 14vh; }
.cap-right { right: max(5vw, calc((100vw - 1160px) / 2)); bottom: 14vh; text-align: right; }
.cap-center {
  left: 50%;
  top: 50%;
  transform: translate(-50%, -42%);
  text-align: center;
  max-width: 760px;
  width: 92%;
}
.cap-badges {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 26px;
}
.cap-badges span {
  font-family: var(--font-head);
  font-size: 0.85rem;
  color: var(--lux-champagne);
  border: 1px solid rgba(231, 196, 118, 0.45);
  background: rgba(4, 6, 12, 0.45);
  backdrop-filter: blur(6px);
  padding: 8px 18px;
  border-radius: 999px;
}
.cap-cta {
  display: flex;
  justify-content: center;
  gap: 14px;
  flex-wrap: wrap;
  margin-top: 30px;
  pointer-events: auto;
}
.cap-note {
  margin-top: 34px;
  font-size: 0.75rem;
  color: rgba(255, 255, 255, 0.45);
  text-shadow: 0 2px 12px rgba(0, 0, 0, 0.8);
}

/* scroll room */
.scroll-space { position: relative; z-index: -1; }

/* scroll hint on first scene */
.caption[data-scene="0"]::after {
  content: "Scroll ↓";
  display: block;
  margin-top: 34px;
  font-family: var(--font-head);
  font-size: 0.8rem;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.65);
  animation: hintPulse 2s ease-in-out infinite;
}
@keyframes hintPulse {
  0%, 100% { opacity: 0.4; }
  50% { opacity: 1; }
}

@media (max-width: 900px) {
  .cap-left, .cap-right {
    left: 6vw; right: 6vw;
    bottom: 12vh;
    text-align: left;
    max-width: none;
  }
  .dots { right: 12px; gap: 11px; }
  .caption h1, .caption h2 { font-size: clamp(2.1rem, 9vw, 3rem); }
}

@media (prefers-reduced-motion: reduce) {
  .caption[data-scene="0"]::after { animation: none; }
}
