.anchored-scene {
  display: block;
  overflow: hidden;
  isolation: isolate;
  pointer-events: auto;
  background: transparent;
  animation: none;
}
.scene-source-hidden { visibility: hidden; }
.scene-actor {
  position: absolute;
  z-index: 3;
  top: 54%;
  left: 50%;
  width: min(58vw, 620px);
  height: min(55vh, 560px);
  object-fit: contain;
  translate: -50% -50%;
  transform-origin: center;
  filter: drop-shadow(0 24px 20px #08121944);
  will-change: transform, opacity;
}
.scene-backdrop, .scene-cover, .scene-particles {
  position: absolute;
  inset: 0;
  pointer-events: none;
}
.scene-backdrop {
  z-index: 1;
  background: linear-gradient(#101c24aa,#101c24cc), var(--destination) center / cover no-repeat;
  animation: destination-appear 2.15s both;
}
.scene-cover { z-index: 9; }
@keyframes destination-appear { 0%,62% { opacity: 0; } 89%,100% { opacity: 1; } }

.action-trench {
  --effect-x: 54vw;
  --effect-y: 40vh;
}
.action-trench .scene-actor { animation: anchored-recoil 2.15s both; }
.shot-track {
  position: absolute;
  z-index: 5;
  left: var(--effect-x);
  top: var(--effect-y);
  width: 42vmax;
  height: 12px;
  transform: rotate(-15deg);
  transform-origin: 0 50%;
}
.shot-glow {
  display: block;
  width: 44px;
  height: 8px;
  background: linear-gradient(90deg,transparent,#ffbe6c,#fff1bb);
  border-radius: 80%;
  box-shadow: 0 0 25px #f5a755;
  animation: streak-out 2.15s both;
}
.impact-cloud {
  position: absolute;
  z-index: 6;
  left: clamp(12vw, calc(var(--effect-x) + 28vw), 90vw);
  top: calc(var(--effect-y) - 8vh);
  width: 18vmin;
  aspect-ratio: 1;
  border-radius: 50%;
  background: radial-gradient(circle,#fff3b7 0 11%,#e9a65e 29%,#ad7858 52%,transparent 73%);
  animation: impact-bloom 2.15s both;
}
.action-trench .scene-cover {
  background: radial-gradient(ellipse at 75% 35%,#edc389,#7c6a5f 63%,#453b3c);
  animation: smoky-cover 2.15s both;
}
@keyframes anchored-recoil {
  0%,19%,47% { transform: none; }
  25% { transform: translate(-3.5%,2%) rotate(-3deg); }
  70%,100% { opacity: 0; }
}
@keyframes streak-out {
  0%,20%,43%,100% { opacity: 0; }
  22% { opacity: 1; transform: translateX(0); }
  40% { opacity: .95; transform: translateX(30vw); }
}
@keyframes impact-bloom {
  0%,34% { opacity: 0; scale: .15; }
  43% { opacity: 1; scale: 1.4; }
  71%,100% { opacity: 0; scale: 13; }
}
@keyframes smoky-cover { 0%,39%,100% { opacity: 0; } 59%,79% { opacity: 1; } }

.scene-particles { z-index: 7; }
.scene-particles i {
  position: absolute;
  left: var(--x);
  top: var(--y);
  width: var(--size);
  height: var(--size);
  border-radius: 50%;
  background: #fff7dd;
}
.snow i {
  box-shadow: 0 0 9px #fff9e9bb;
  animation: local-snow 1.48s var(--delay) linear both;
}
.action-christmas .scene-cover { background: #fffdfa; animation: whiteout 2.15s both; }
@keyframes local-snow {
  0% { opacity: 0; transform: translate(10vw,-35vh); }
  18%,80% { opacity: 1; }
  100% { opacity: .4; transform: translate(-11vw,48vh); }
}
@keyframes whiteout { 0%,44%,100% { opacity: 0; } 70%,84% { opacity: 1; } }

.wave-sweep {
  position: absolute;
  inset: 0;
  z-index: 7;
  animation: ocean-sweep 2.15s cubic-bezier(.45,.05,.38,1) both;
}
.wave-sweep i {
  position: absolute;
  inset: 8% -22% -45% -12%;
  border-radius: 46% 58% 0 0;
  background: linear-gradient(165deg,#f0e9c9 0 3%,#8ab9ba 6% 11%,#36768c 24%,#164659 64%);
  transform: rotate(-13deg);
  box-shadow: inset 0 14px 20px #f3eed896;
}
.wave-sweep i:nth-child(2) { inset: 32% -25% -48% -8%; opacity: .9; transform: rotate(-7deg); }
.wave-sweep i:nth-child(3) { inset: 55% -15% -55% -20%; opacity: .75; transform: rotate(7deg); }
.action-pirate .scene-actor { animation: ship-from-card 2.15s both; }
@keyframes ship-from-card {
  0% { transform: none; }
  29% { transform: translate(-5vw,-2vh) rotate(5deg) scale(1.17); }
  54% { opacity: 1; }
  68%,100% { transform: translate(-51vw,3vh) rotate(-8deg) scale(1.65); opacity: 0; }
}
@keyframes ocean-sweep {
  0%,27% { transform: translate(56%,110%); }
  68%,80% { transform: translate(-4%,-24%); }
  100% { transform: translate(-92%,-77%); opacity: 0; }
}

.action-flight .scene-actor { animation: flight-from-card 2.15s cubic-bezier(.54,.03,.48,1) both; }
.cloud-bank {
  position: absolute;
  inset: -45%;
  z-index: 7;
  background: radial-gradient(ellipse at 44% 49%,#f0efe4 0 12%,#d3e5e5e0 30%,transparent 49%),
              radial-gradient(ellipse at 66% 63%,#ecf1e8 0 12%,transparent 35%);
  animation: cloud-curtain 2.15s both;
}
@keyframes flight-from-card {
  0% { transform: none; }
  25% { transform: translate(-3vw,-9vh) scale(1.08); }
  72%,100% { transform: translate(-27vw,-115vh) scale(1.48); }
}
@keyframes cloud-curtain {
  0%,28% { opacity: 0; transform: translate(20%,36%); }
  69%,79% { opacity: 1; transform: scale(2.1); }
  100% { opacity: 0; transform: translate(-23%,-20%) scale(2.35); }
}

.action-space .scene-actor { animation: rocket-from-card 2.15s cubic-bezier(.6,.02,.32,1) both; }
.star-stream {
  position: absolute;
  z-index: 6;
  inset: -40%;
  background: repeating-conic-gradient(from 0deg at 50% 50%,transparent 0 13deg,#e1ecfa76 13.3deg 13.6deg,transparent 14deg 22deg);
  mask-image: radial-gradient(circle,transparent 10%,#000 62%);
  animation: hyperspace 2.15s both;
}
.rocket-trail {
  position: absolute;
  inset: 0;
  z-index: 2;
  background: radial-gradient(ellipse at 46% 74%,#e89a5d60,transparent 56%);
  animation: engine-bloom 2.15s both;
}
@keyframes rocket-from-card {
  0%,14% { transform: none; }
  20% { transform: translate(-2px,2px); }
  29% { transform: translate(3px,-3px) scale(1.04); }
  70%,100% { transform: translate(42vw,-106vh) scale(1.55); }
}
@keyframes hyperspace {
  0%,28%,100% { opacity: 0; }
  58%,76% { opacity: 1; transform: scale(1.5); }
}
@keyframes engine-bloom { 0%,12%,100% { opacity: 0; } 28%,60% { opacity: 1; } }

.action-toys .scene-actor { animation: bear-greeting 2.15s both; }
.confetti i {
  background: #e8c475;
  border-radius: 2px;
  animation: confetti-drop 1.4s var(--delay) ease-out both;
}
.confetti i:nth-child(3n) { background: #99c2ad; }
.confetti i:nth-child(3n + 1) { background: #cf879e; }
@keyframes bear-greeting {
  0%,67% { transform: none; }
  100% { transform: translateY(92vh); }
}
@keyframes confetti-drop {
  0% { opacity: 0; transform: translateY(-38vh); }
  24%,80% { opacity: 1; }
  100% { opacity: 0; transform: translateY(42vh) rotate(270deg); }
}

.action-inferno .scene-actor { animation: gate-reveal 2.15s linear both; filter: none; }
.embers i {
  background: #ffbd6b;
  box-shadow: 0 0 12px #eb7f56;
  animation: ember-rise 1.45s var(--delay) ease-out both;
}
.action-inferno .scene-actor { transform-origin: 50% 62%; }
@keyframes gate-reveal {
  0%,29% { transform: none; }
  48% { transform: translate(calc(var(--to-center-x,0px) * .14),calc(var(--to-center-y,0px) * .14)) scale(1.15); }
  66% { transform: translate(calc(var(--to-center-x,0px) * .5),calc(var(--to-center-y,0px) * .5)) scale(1.85); }
  84% { transform: translate(var(--to-center-x,0px),var(--to-center-y,0px)) scale(3.9); opacity: 1; }
  100% { transform: translate(var(--to-center-x,0px),var(--to-center-y,0px)) scale(7.2); opacity: 0; }
}
@keyframes ember-rise {
  0% { opacity: 0; transform: translateY(36vh); }
  20%,64% { opacity: 1; }
  100% { opacity: 0; transform: translateY(-56vh); }
}
.action-cat .scene-actor { animation: cat-walk-in 2.15s linear both; }
.maze-garden {
  position: absolute;
  left: var(--maze-left, 2vw);
  top: var(--maze-top, 23vh);
  width: var(--maze-width, min(84vw,625px));
  z-index: 2;
  transform-origin: 78% 83%;
  animation: garden-arrival 2.15s both;
}
.maze-entry-light {
  position: absolute;
  z-index: 4;
  left: var(--maze-gate-x, 63vw);
  top: var(--maze-gate-y, 55vh);
  width: 11vmin;
  aspect-ratio: 1;
  translate: -50% -50%;
  background: radial-gradient(circle,#fff1b2a0,transparent 68%);
  animation: lantern-bloom 2.15s both;
}
.action-cat .scene-cover { background: #132824; animation: maze-cover 2.15s both; }
@keyframes cat-walk-in {
  0%,15% { transform: none; }
  30% { transform: translate(calc(var(--maze-travel,-25vw) * .19),calc(var(--maze-rise,8vh) * .2)) scale(.88); }
  48% { transform: translate(calc(var(--maze-travel,-25vw) * .49),calc(var(--maze-rise,8vh) * .5)) scale(.62); }
  62% { transform: translate(calc(var(--maze-travel,-25vw) * .76),calc(var(--maze-rise,8vh) * .76)) scale(.42); }
  76% { transform: translate(var(--maze-travel,-25vw),var(--maze-rise,8vh)) scale(.25); opacity: 1; }
  88%,100% { transform: translate(calc(var(--maze-travel,-25vw) - 14px),calc(var(--maze-rise,8vh) - 22px)) scale(.13); opacity: 0; }
}
@keyframes garden-arrival {
  0%,8% { transform: translateY(7vh) scale(.92); opacity: 0; }
  38%,76% { transform: none; opacity: 1; }
  100% { transform: scale(1.8); opacity: .85; }
}
@keyframes lantern-bloom { 0%,23%,100% { opacity: 0; } 45%,69% { opacity: .75; } 86% { opacity: 1; transform: scale(1.6); } }
@keyframes maze-cover { 0%,78% { opacity: 0; } 94%,100% { opacity: 1; } }

.action-outdoor .scene-actor { animation: lift-map 2.15s cubic-bezier(.35,.12,.18,1) both; }
@keyframes lift-map {
  0%,8% { transform: none; }
  36% { transform: translate(calc(var(--to-center-x, 0px) * .48),-5vh) perspective(800px) rotateX(19deg) scale(1.18); }
  61%,76% { transform: translate(var(--to-center-x,0px),var(--to-center-y,0px)) scale(1.55); opacity: 1; }
  100% { transform: translate(var(--to-center-x,0px),calc(var(--to-center-y,0px) - 23vh)) scale(2.3); opacity: 0; }
}
@media (prefers-reduced-motion: reduce) { .anchored-scene { display: none; } }

/* The moving effects remain composited over the real scenario during the reveal. */
.anchored-scene[data-handoff="revealing"] { pointer-events: none; }
.anchored-scene[data-handoff="revealing"] .scene-backdrop { visibility: hidden; }
body.in-tour header, body.in-tour .journey-nav, body.in-tour .tour-bookbar {
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}
body.in-tour header { background: linear-gradient(#08171def,#0c1b21ed); }
body.in-tour .journey-nav { background: #101e24eb; }
body.in-tour .tour-bookbar { background: #102b24f5; }
.atmosphere:not(.layer-active) { visibility: hidden; }
.scene-detail { position: absolute; z-index: 5; pointer-events: none; }
.action-trench .scene-detail {
  width: 12vmin; aspect-ratio: 1; left: var(--effect-x); top: var(--effect-y);
  translate: -50% -50%;
  background: radial-gradient(circle,#fff0bd 0 9%,#ffb85f 13%,#cf633c60 39%,transparent 66%);
  animation: muzzle-flash 2.15s both;
}
@keyframes muzzle-flash { 0%,19%,38%,100% { opacity: 0; } 23% { opacity: 1; transform: scale(.75); } 30% { opacity: .4; transform: scale(1.4); } }
.action-flight .scene-detail, .action-space .scene-detail {
  inset: 0;
  background: radial-gradient(ellipse at 22% 18%,#ffe6b76b,transparent 38%);
  animation: departure-light 2.15s both;
}
.action-space .scene-detail { background: radial-gradient(ellipse at 77% 12%,#86b4d867,transparent 40%); }
@keyframes departure-light { 0%,29%,100% { opacity: 0; } 58%,75% { opacity: 1; } }
.action-outdoor .scene-detail {
  z-index: 2; inset: 0;
  background: radial-gradient(ellipse at center,#e2bd783b,transparent 52%);
  animation: departure-light 2.15s both;
}

/* The actor travels as a whole while each leg or prop keeps its own timing. */
.articulated-actor { overflow: visible; }
.cat-actor { filter: none; }
.cat-leg { animation: cat-step .34s ease-in-out .31s 4 both; }
.cat-leg.far-front, .cat-leg.near-back {
  animation-name: cat-step-opposite;
}
@keyframes cat-step {
  0%,100% { transform: none; }
  25% { transform: translate(-8px,-15px) rotate(12deg); }
  65% { transform: translate(7px,2px) rotate(-9deg); }
}
@keyframes cat-step-opposite {
  0%,100% { transform: none; }
  28% { transform: translate(6px,2px) rotate(-9deg); }
  70% { transform: translate(-9px,-14px) rotate(12deg); }
}
.bear-paw {
  transform-origin: 401px 294px;
  animation: bear-paw-wave 1.51s cubic-bezier(.48,.02,.27,1) both;
}
@keyframes bear-paw-wave {
  0%,9%,100% { transform: none; }
  32%,62% { transform: rotate(-147deg); }
  46%,76% { transform: rotate(-112deg); }
}
.action-detective .scene-actor { animation: detective-hold 2.15s both; filter: none; }
.travel-lens {
  transform-origin: 475px 351px;
  animation: sherlock-scan 2.15s linear both; will-change: transform;
}
@keyframes detective-hold { 0%,74% { opacity: 1; } 100% { opacity: .25; } }
@keyframes sherlock-scan {
  0%,9% { transform: none; }
  24% { transform: translate(-66px,-57px) rotate(11deg) scale(1.12); }
  39% { transform: translate(-162px,-75px) rotate(9deg) scale(1.32); }
  52% { transform: translate(-211px,-41px) rotate(-4deg) scale(1.5); }
  74% { transform: translate(var(--lens-target-x,-155px),var(--lens-target-y,-81px)) rotate(-14deg) scale(2.35); }
  100% { transform: translate(var(--lens-target-x,-155px),var(--lens-target-y,-81px)) rotate(-14deg) scale(7); }
}
.lens-light {
  position: absolute;
  z-index: 5;
  inset: 0;
  pointer-events: none;
  background: radial-gradient(circle at center,#f3e3b36b,transparent 59%);
  animation: lens-shine 2.15s both;
}
@keyframes lens-shine {
  0%,67% { opacity: 0; }
  86% { opacity: .75; }
  100% { opacity: .38; }
}
