/* style.css -- merged from per-tier scene CSS by wizard2.stages.build_deploy */
/* Scene root must fill its positioning container. */
.scn { position: absolute; inset: 0; }

/* ============ tier U ============ */
/* per-scene blocks (EXP step_scenes) */
/* scene: loss-of-bottles (funny, dim‑interior) */
.scn-loss-of-bottles {
  background: 
    linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 50%, #1a0e08 100%),
    radial-gradient(ellipse at 50% 80%, #6a5a3a 0%, transparent 60%);
}
.scn-loss-of-bottles .bg-wall { position:absolute; inset:0; background: linear-gradient(135deg, #5a4a3a 0%, #3a2a1a 100%); }
.scn-loss-of-bottles .pool { position:absolute; bottom:10%; left:5%; right:5%; height:35%; background: linear-gradient(180deg, #1a2a3a 0%, #0a1a2a 100%); border-radius: 50% 50% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,.6); animation: lb-pool 6s ease-in-out infinite alternate; }
.scn-loss-of-bottles .bottle { position:absolute; width:14px; height:30px; background: linear-gradient(180deg, #c8a878 0%, #a08050 100%); border-radius: 30% 30% 10% 10%; box-shadow: 0 0 6px rgba(200,168,120,.5); }
.scn-loss-of-bottles .bottle-1 { bottom:30%; left:20%; animation: lb-bottle1 4s ease-in-out infinite; }
.scn-loss-of-bottles .bottle-2 { bottom:32%; left:45%; transform: rotate(15deg); animation: lb-bottle2 5s ease-in-out infinite; }
.scn-loss-of-bottles .bottle-3 { bottom:28%; right:25%; transform: rotate(-10deg); animation: lb-bottle3 3.5s ease-in-out infinite; }
.scn-loss-of-bottles .bubble { position:absolute; width:6px; height:6px; background: radial-gradient(circle, rgba(200,220,255,.6) 0%, transparent 100%); border-radius:50%; }
.scn-loss-of-bottles .bubble-a { bottom:15%; left:30%; animation: lb-bubble 2s ease-out infinite; }
.scn-loss-of-bottles .bubble-b { bottom:18%; left:55%; animation: lb-bubble 2.5s ease-out infinite; animation-delay: 1s; }
@keyframes lb-pool { 0% { transform: translateY(0); opacity: .7; } 50% { transform: translateY(-4px); opacity: .9; } 100% { transform: translateY(0); opacity: .7; } }
@keyframes lb-bottle1 { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-8px) rotate(20deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes lb-bottle2 { 0% { transform: translateY(0) rotate(15deg); } 30% { transform: translateY(-6px) rotate(35deg); } 70% { transform: translateY(2px) rotate(5deg); } 100% { transform: translateY(0) rotate(15deg); } }
@keyframes lb-bottle3 { 0% { transform: translateY(0) rotate(-10deg); } 40% { transform: translateY(-10px) rotate(-25deg); } 80% { transform: translateY(3px) rotate(-5deg); } 100% { transform: translateY(0) rotate(-10deg); } }
@keyframes lb-bubble { 0% { transform: translateY(0) scale(1); opacity: .6; } 50% { transform: translateY(-30px) scale(1.3); opacity: .8; } 100% { transform: translateY(-60px) scale(0.8); opacity: 0; } }

/* scene: stealing-garments (funny, dim‑interior) */
.scn-stealing-garments {
  background: 
    linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 60%, #1a0e08 100%),
    radial-gradient(ellipse at 40% 20%, #8a7050 0%, #2a1a0a 80%);
}
.scn-stealing-garments .bg-room { position:absolute; inset:0; background: linear-gradient(135deg, #3a2a1a 0%, #1a0e08 100%); }
.scn-stealing-garments .wardrobe { position:absolute; bottom:10%; left:20%; width:120px; height:180px; background: linear-gradient(180deg, #6a4a3a 0%, #4a2a1a 100%); border-radius: 4% 4% 2% 2%; box-shadow: 0 8px 16px rgba(0,0,0,.7); animation: sg-wardrobe 10s ease-in-out infinite alternate; }
.scn-stealing-garments .gown { position:absolute; width:20px; height:40px; border-radius: 20% 20% 10% 10%; animation: sg-gown 3s ease-in-out infinite; }
.scn-stealing-garments .gown-1 { bottom:20%; left:25%; background: linear-gradient(180deg, #c8553d 0%, #a03020 100%); animation-delay: 0s; }
.scn-stealing-garments .gown-2 { bottom:22%; left:40%; background: linear-gradient(180deg, #b87878 0%, #805050 100%); transform: rotate(10deg); animation-delay: 0.5s; }
.scn-stealing-garments .gown-3 { bottom:18%; left:55%; background: linear-gradient(180deg, #a0461a 0%, #702210 100%); transform: rotate(-5deg); animation-delay: 1s; }
.scn-stealing-garments .hand { position:absolute; width:14px; height:14px; background: radial-gradient(circle, #c8a878 0%, #a08050 100%); border-radius: 50% 50% 0 0; }
.scn-stealing-garments .hand-a { bottom:28%; left:30%; animation: sg-hand 2.4s ease-in-out infinite; }
.scn-stealing-garments .hand-b { bottom:30%; left:48%; animation: sg-hand 2.4s ease-in-out infinite; animation-delay: 0.6s; }
.scn-stealing-garments .sparkle { position:absolute; top:15%; right:20%; width:8px; height:8px; background: radial-gradient(circle, #ffd060 0%, transparent 100%); border-radius:50%; box-shadow: 0 0 12px 4px #ffd060; animation: sg-sparkle 2s ease-in-out infinite; }
@keyframes sg-wardrobe { 0% { transform: scale(1); } 50% { transform: scale(1.02); } 100% { transform: scale(1); } }
@keyframes sg-gown { 0% { transform: translateY(0) rotate(0deg); opacity: .6; } 50% { transform: translateY(-10px) rotate(15deg); opacity: 1; } 100% { transform: translateY(0) rotate(0deg); opacity: .6; } }
@keyframes sg-hand { 0% { transform: translateY(0) scale(1); } 50% { transform: translateY(-8px) scale(1.2); } 100% { transform: translateY(0) scale(1); } }
@keyframes sg-sparkle { 0% { opacity: 0; transform: scale(0.5); } 50% { opacity: 1; transform: scale(1.5); } 100% { opacity: 0; transform: scale(0.5); } }

/* scene: caliban-warns (tense, dim‑interior) */
.scn-caliban-warns {
  background: 
    linear-gradient(180deg, #1a1a2a 0%, #2a1a1a 50%, #0a0a1a 100%),
    radial-gradient(ellipse at 60% 30%, #4a2a2a 0%, transparent 70%);
}
.scn-caliban-warns .bg-cave { position:absolute; inset:0; background: linear-gradient(135deg, #1a1a2a 0%, #0a0a1a 100%); }
.scn-caliban-warns .stalactite { position:absolute; top:0; left:20%; width:30px; height:60px; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 10% 10% 50% 50%; box-shadow: inset 0 -4px 8px rgba(0,0,0,.5); animation: cw-stalactite 8s ease-in-out infinite alternate; }
.scn-caliban-warns .figure-caliban { position:absolute; bottom:15%; left:30%; width:40px; height:60px; background: linear-gradient(180deg, #3a2a1a 0%, #1a0a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: cw-figure 5s ease-in-out infinite; }
.scn-caliban-warns .garment { position:absolute; bottom:20%; left:45%; width:30px; height:50px; background: linear-gradient(180deg, #5e1a1d 0%, #3a0a0a 100%); border-radius: 10% 10% 30% 30%; transform: rotate(15deg); box-shadow: 0 4px 8px rgba(0,0,0,.6); animation: cw-garment 4s ease-in-out infinite; }
.scn-caliban-warns .glow-eye { position:absolute; bottom:40%; left:32%; width:6px; height:6px; background: radial-gradient(circle, #ffa040 0%, #cc6020 50%, transparent 100%); border-radius:50%; box-shadow: 0 0 16px 6px #ffa040; animation: cw-eye 2s ease-in-out infinite alternate; }
.scn-caliban-warns .shadow-hand { position:absolute; bottom:30%; left:55%; width:20px; height:30px; background: linear-gradient(180deg, #0a0a1a 0%, #1a0a0a 100%); border-radius: 50% 50% 20% 20%; transform: rotate(-20deg); animation: cw-hand 3s ease-in-out infinite; }
.scn-caliban-warns .mist { position:absolute; bottom:5%; left:0; right:0; height:20%; background: linear-gradient(180deg, rgba(30,20,30,.4) 0%, transparent 100%); border-radius:50%; filter: blur(8px); animation: cw-mist 10s ease-in-out infinite alternate; }
@keyframes cw-stalactite { 0% { transform: translateY(0) scaleY(1); } 50% { transform: translateY(4px) scaleY(1.1); } 100% { transform: translateY(0) scaleY(1); } }
@keyframes cw-figure { 0% { transform: translateY(0) rotate(-3deg); } 30% { transform: translateY(-3px) rotate(2deg); } 60% { transform: translateY(0) rotate(-2deg); } 100% { transform: translateY(0) rotate(-3deg); } }
@keyframes cw-garment { 0% { transform: rotate(15deg) translateY(0); } 50% { transform: rotate(25deg) translateY(-5px); } 100% { transform: rotate(15deg) translateY(0); } }
@keyframes cw-eye { 0% { opacity: .6; transform: scale(1); } 50% { opacity: 1; transform: scale(1.3); } 100% { opacity: .7; transform: scale(1.1); } }
@keyframes cw-hand { 0% { transform: translateX(0) rotate(-20deg); } 50% { transform: translateX(8px) rotate(0deg); } 100% { transform: translateX(0) rotate(-20deg); } }
@keyframes cw-mist { 0% { opacity: .3; transform: translateY(0); } 50% { opacity: .6; transform: translateY(-5px); } 100% { opacity: .3; transform: translateY(0); } }

/* scene: spirits-hunt-miscreants (tense, sunlit) */
.scn-spirits-hunt-miscreants {
  background: 
    linear-gradient(180deg, #ffeedd 0%, #ffccaa 40%, #cc8844 100%),
    radial-gradient(ellipse at 50% 0%, #ffffee 0%, #ffccaa 60%);
}
.scn-spirits-hunt-miscreants .sky-sunlit { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #ffeedd 0%, #ffccaa 100%); }
.scn-spirits-hunt-miscreants .ground { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #8a6a3a 0%, #5a3a1a 100%); border-radius: 40% 60% 0 0 / 80% 70% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,.3); }
.scn-spirits-hunt-miscreants .spirit { position:absolute; width:30px; height:60px; background: linear-gradient(180deg, rgba(255,255,200,.7) 0%, rgba(255,200,100,.3) 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; filter: blur(2px); }
.scn-spirits-hunt-miscreants .spirit-1 { bottom:25%; left:10%; animation: sh-spirit1 3s ease-in-out infinite; }
.scn-spirits-hunt-miscreants .spirit-2 { bottom:28%; left:40%; animation: sh-spirit2 2.5s ease-in-out infinite; animation-delay: 0.8s; }
.scn-spirits-hunt-miscreants .spirit-3 { bottom:22%; left:70%; animation: sh-spirit3 3.2s ease-in-out infinite; animation-delay: 1.5s; }
.scn-spirits-hunt-miscreants .fugitive { position:absolute; width:20px; height:40px; background: linear-gradient(180deg, #2a1a0a 0%, #1a0a0a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%; }
.scn-spirits-hunt-miscreants .fugitive-a { bottom:20%; left:30%; animation: sh-fugitive 4s ease-in-out infinite; }
.scn-spirits-hunt-miscreants .fugitive-b { bottom:18%; left:60%; transform: scaleX(-1); animation: sh-fugitive 4.5s ease-in-out infinite; animation-delay: 0.5s; }
.scn-spirits-hunt-miscreants .dust { position:absolute; bottom:5%; left:0; right:0; height:15%; background: linear-gradient(180deg, rgba(200,180,150,.3) 0%, transparent 100%); border-radius:50%; filter: blur(6px); animation: sh-dust 6s ease-in-out infinite alternate; }
@keyframes sh-spirit1 { 0% { transform: translateY(0) scale(1); opacity: .6; } 50% { transform: translateY(-20px) scale(1.2); opacity: 1; } 100% { transform: translateY(0) scale(1); opacity: .6; } }
@keyframes sh-spirit2 { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-15px) rotate(10deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes sh-spirit3 { 0% { transform: translateY(0) scaleX(1); } 50% { transform: translateY(-25px) scaleX(-1); } 100% { transform: translateY(0) scaleX(1); } }
@keyframes sh-fugitive { 0% { transform: translateX(0) rotate(0deg); } 30% { transform: translateX(10px) rotate(5deg); } 60% { transform: translateX(20px) rotate(-3deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes sh-dust { 0% { opacity: .2; transform: translateY(0); } 50% { opacity: .5; transform: translateY(-4px); } 100% { opacity: .2; transform: translateY(0); } }

/* prospero-remembers-plot */
.scn-prospero-remembers-plot {
  background:
    linear-gradient(180deg, #f8e4c4 0%, #d4b080 40%, #a08050 80%, #503020 100%),
    radial-gradient(ellipse at 60% 20%, #fff0d0 0%, transparent 60%);
}
.scn-prospero-remembers-plot .sky {
  position:absolute; inset:0 0 50% 0;
  background: linear-gradient(180deg, #b8d4f0 0%, #e0f0ff 40%, #fce8b0 100%);
  animation: prp-sky 10s ease-in-out infinite alternate;
}
.scn-prospero-remembers-plot .sun {
  position:absolute; top:10%; left:60%; width:80px; height:80px;
  background: radial-gradient(circle, #fff8d0 0%, #fdd070 40%, transparent 70%);
  border-radius:50%;
  box-shadow: 0 0 60px 30px rgba(253,208,112,0.5);
  animation: prp-sun 15s ease-in-out infinite alternate;
}
.scn-prospero-remembers-plot .island {
  position:absolute; bottom:0; left:0; right:0; height:50%;
  background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%);
  border-radius: 30% 70% 0 0 / 50% 80% 0 0;
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.6);
}
.scn-prospero-remembers-plot .prospero {
  position:absolute; bottom:32%; left:30%; width:40px; height:100px;
  background: linear-gradient(180deg, #2a1a0a 0%, #1a0a00 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: prp-figure 3s ease-in-out infinite alternate;
}
.scn-prospero-remembers-plot .shadow-conspirators {
  position:absolute; bottom:25%; left:55%; width:90px; height:60px;
  background: radial-gradient(ellipse at 50% 50%, rgba(0,0,0,0.4) 0%, transparent 70%);
  filter: blur(4px);
  animation: prp-shadows 8s ease-in-out infinite alternate;
}
.scn-prospero-remembers-plot .glint {
  position:absolute; top:15%; left:50%; width:12px; height:12px;
  background: radial-gradient(circle, #fff 0%, #ffe080 40%, transparent 70%);
  border-radius:50%;
  box-shadow: 0 0 20px 8px #ffe080;
  animation: prp-glint 2s ease-in-out infinite;
}
@keyframes prp-sky { 0% { opacity:0.7; } 50% { opacity:1; } 100% { opacity:0.6; } }
@keyframes prp-sun { 0% { transform: scale(1); opacity:0.9; } 50% { transform: scale(1.05); opacity:1; } 100% { transform: scale(0.95); opacity:0.8; } }
@keyframes prp-figure { 0% { transform: translateX(0) rotate(-2deg); } 50% { transform: translateX(4px) rotate(2deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes prp-shadows { 0% { transform: translateY(0) scaleX(1); opacity:0.3; } 50% { transform: translateY(-3px) scaleX(1.2); opacity:0.6; } 100% { transform: translateY(0) scaleX(1); opacity:0.3; } }
@keyframes prp-glint { 0% { opacity:0; transform: scale(0.5); } 50% { opacity:1; transform: scale(1); } 100% { opacity:0; transform: scale(0.5); } }

/* ariel-reports-caliban */
.scn-ariel-reports-caliban {
  background:
    linear-gradient(180deg, #e8d8b8 0%, #c0a880 40%, #806040 100%),
    radial-gradient(ellipse at 30% 20%, #fff8e0 0%, transparent 50%);
}
.scn-ariel-reports-caliban .sky-light {
  position:absolute; inset:0 0 40% 0;
  background: linear-gradient(180deg, #b8c8e8 0%, #e0e8f0 40%, #f0e0b0 100%);
  animation: arc-sky 12s ease-in-out infinite alternate;
}
.scn-ariel-reports-caliban .cliff {
  position:absolute; bottom:0; left:0; right:0; height:60%;
  background: linear-gradient(180deg, #6a5a4a 0%, #3a2a1a 100%);
  border-radius: 40% 50% 0 0 / 60% 70% 0 0;
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.5);
}
.scn-ariel-reports-caliban .prospero-seated {
  position:absolute; bottom:25%; left:25%; width:50px; height:80px;
  background: linear-gradient(180deg, #2a1a0a 0%, #1a0a00 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: arc-prospero 6s ease-in-out infinite alternate;
}
.scn-ariel-reports-caliban .ariel-hover {
  position:absolute; bottom:45%; right:28%; width:30px; height:50px;
  background: linear-gradient(180deg, #e8d8b0 0%, #c0a880 100%);
  border-radius: 50% 50% 30% 30% / 70% 70% 40% 40%;
  box-shadow: 0 0 20px 10px rgba(220,200,160,0.6);
  animation: arc-ariel 4s ease-in-out infinite alternate;
}
.scn-ariel-reports-caliban .ariel-trail {
  position:absolute; bottom:48%; right:26%; width:60px; height:10px;
  background: linear-gradient(90deg, transparent, rgba(220,200,160,0.5), transparent);
  filter: blur(3px);
  animation: arc-trail 3s ease-in-out infinite alternate;
}
.scn-ariel-reports-caliban .dust-motes {
  position:absolute; top:30%; left:20%; width:100%; height:100px;
  background: radial-gradient(circle at 10% 30%, rgba(255,240,200,0.2) 0%, transparent 50%);
  filter: blur(8px);
  animation: arc-dust 20s linear infinite;
}
@keyframes arc-sky { 0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.7; } }
@keyframes arc-prospero { 0% { transform: translateY(0) rotate(-1deg); } 50% { transform: translateY(-2px) rotate(1deg); } 100% { transform: translateY(0) rotate(0); } }
@keyframes arc-ariel { 0% { transform: translateY(0) scale(1); opacity:0.8; } 50% { transform: translateY(-8px) scale(1.05); opacity:1; } 100% { transform: translateY(0) scale(1); opacity:0.8; } }
@keyframes arc-trail { 0% { width:40px; opacity:0.3; } 50% { width:80px; opacity:0.6; } 100% { width:40px; opacity:0.3; } }
@keyframes arc-dust { 0% { transform: translateX(0); } 100% { transform: translateX(-100px); } }

/* item-glistering-apparel */
.scn-item-glistering-apparel {
  background:
    linear-gradient(180deg, #d4c0a0 0%, #b09878 40%, #706050 100%),
    radial-gradient(ellipse at 50% 30%, #f0e8c0 0%, transparent 60%);
}
.scn-item-glistering-apparel .bg-bush {
  position:absolute; bottom:0; left:0; right:0; height:40%;
  background: linear-gradient(180deg, #4a5a3a 0%, #2a3a1a 100%);
  border-radius: 60% 40% 0 0 / 50% 30% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.4);
}
.scn-item-glistering-apparel .line {
  position:absolute; top:40%; left:10%; right:10%; height:2px;
  background: linear-gradient(90deg, transparent, #8a7a6a, transparent);
  animation: iga-line 5s ease-in-out infinite;
}
.scn-item-glistering-apparel .apparel-1 {
  position:absolute; top:38%; left:25%; width:40px; height:30px;
  background: linear-gradient(180deg, #c8a060 0%, #a08040 100%);
  border-radius: 10% 10% 20% 20%;
  box-shadow: 0 0 20px 6px rgba(200,160,96,0.7);
  animation: iga-glisten 2s ease-in-out infinite alternate;
}
.scn-item-glistering-apparel .apparel-2 {
  position:absolute; top:38%; left:45%; width:30px; height:35px;
  background: linear-gradient(180deg, #d0b870 0%, #b09850 100%);
  border-radius: 10% 10% 20% 20%;
  box-shadow: 0 0 20px 6px rgba(208,184,112,0.7);
  animation: iga-glisten 2.5s ease-in-out infinite alternate 0.5s;
}
.scn-item-glistering-apparel .thief-1 {
  position:absolute; bottom:20%; left:55%; width:35px; height:70px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: iga-thief 4s ease-in-out infinite;
}
.scn-item-glistering-apparel .thief-2 {
  position:absolute; bottom:22%; left:42%; width:30px; height:60px;
  background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: iga-thief 4.5s ease-in-out infinite 0.3s;
}
.scn-item-glistering-apparel .thief-3 {
  position:absolute; bottom:18%; left:68%; width:30px; height:65px;
  background: linear-gradient(180deg, #3a2a2a 0%, #2a1a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: iga-thief 5s ease-in-out infinite 0.6s;
}
.scn-item-glistering-apparel .shadow-pool {
  position:absolute; bottom:0; left:40%; right:40%; height:30%;
  background: radial-gradient(ellipse at 50% 100%, rgba(0,0,0,0.4) 0%, transparent 70%);
  filter: blur(6px);
}
@keyframes iga-line { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes iga-glisten { 0% { opacity:0.8; box-shadow: 0 0 10px 2px rgba(200,160,96,0.5); } 50% { opacity:1; box-shadow: 0 0 30px 12px rgba(200,160,96,0.9); } 100% { opacity:0.8; box-shadow: 0 0 10px 2px rgba(200,160,96,0.5); } }
@keyframes iga-thief { 0% { transform: translateX(0) translateY(0) rotate(-1deg); } 25% { transform: translateX(-5px) translateY(-2px) rotate(1deg); } 50% { transform: translateX(0) translateY(0) rotate(-1deg); } 75% { transform: translateX(5px) translateY(-2px) rotate(1deg); } 100% { transform: translateX(0) translateY(0) rotate(0); } }

/* caliban-wet-approach */
.scn-caliban-wet-approach {
  background:
    linear-gradient(180deg, #1a1a2a 0%, #2a2a3a 30%, #1a1a2a 100%),
    radial-gradient(ellipse at 50% 100%, #3a3a4a 0%, transparent 80%);
}
.scn-caliban-wet-approach .cave-wall {
  position:absolute; inset:0 0 30% 0;
  background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 50%, #1a1a2a 100%);
  border-radius: 0 0 30% 30% / 0 0 20% 20%;
  box-shadow: inset 0 10px 40px rgba(0,0,0,0.8);
}
.scn-caliban-wet-approach .floor {
  position:absolute; bottom:0; left:0; right:0; height:30%;
  background: linear-gradient(180deg, #4a4a5a 0%, #2a2a3a 100%);
  border-radius: 40% 60% 0 0 / 30% 40% 0 0;
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.6);
}
.scn-caliban-wet-approach .cell-door {
  position:absolute; bottom:35%; left:45%; width:30px; height:50px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 5%;
  box-shadow: inset 0 0 10px rgba(0,0,0,0.5), 0 0 20px 5px rgba(0,0,0,0.3);
  animation: cwa-door 8s ease-in-out infinite alternate;
}
.scn-caliban-wet-approach .caliban-figure {
  position:absolute; bottom:16%; left:30%; width:45px; height:90px;
  background: linear-gradient(180deg, #2a3a2a 0%, #1a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  box-shadow: 0 0 15px 5px rgba(0,0,0,0.5);
  animation: cwa-figures 3s ease-in-out infinite alternate;
}
.scn-caliban-wet-approach .stephano {
  position:absolute; bottom:18%; left:42%; width:35px; height:70px;
  background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  box-shadow: 0 0 12px 4px rgba(0,0,0,0.4);
  animation: cwa-figures 3.5s ease-in-out infinite alternate 0.3s;
}
.scn-caliban-wet-approach .trinculo {
  position:absolute; bottom:20%; left:54%; width:30px; height:65px;
  background: linear-gradient(180deg, #3a3a2a 0%, #2a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  box-shadow: 0 0 12px 4px rgba(0,0,0,0.4);
  animation: cwa-figures 4s ease-in-out infinite alternate 0.6s;
}
.scn-caliban-wet-approach .drip {
  position:absolute; top:30%; left:60%; width:4px; height:20px;
  background: linear-gradient(180deg, transparent 0%, #8a8aaa 100%);
  border-radius: 50%;
  animation: cwa-drip 2s ease-in-out infinite;
}
.scn-caliban-wet-approach .pool-water {
  position:absolute; bottom:15%; left:20%; right:40%; height:15%;
  background: radial-gradient(ellipse at 50% 100%, #4a6a8a 0%, transparent 70%);
  filter: blur(4px);
  animation: cwa-pool 5s ease-in-out infinite alternate;
}
@keyframes cwa-door { 0% { transform: translateY(0); opacity:0.6; } 50% { transform: translateY(-3px); opacity:0.8; } 100% { transform: translateY(0); opacity:0.6; } }
@keyframes cwa-figures { 0% { transform: translateY(0) rotate(-2deg); } 50% { transform: translateY(-4px) rotate(2deg); } 100% { transform: translateY(0) rotate(0); } }
@keyframes cwa-drip { 0% { transform: translateY(0) scaleY(1); opacity:0.3; } 50% { transform: translateY(15px) scaleY(0.5); opacity:1; } 100% { transform: translateY(30px) scaleY(0); opacity:0; } }
@keyframes cwa-pool { 0% { transform: scaleY(1); opacity:0.4; } 50% { transform: scaleY(1.2); opacity:0.7; } 100% { transform: scaleY(1); opacity:0.4; } }

.scn-sc-ii-caliban-drink {
  background: linear-gradient(180deg, #6b7b7b 0%, #8a9a8a 40%, #5a6a5a 100%),
              radial-gradient(ellipse at 50% 100%, #4a5a4a 0%, transparent 70%);
}
.scn-sc-ii-caliban-drink .sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #8b9b9b 0%, transparent 100%);
  animation: cd-sky 12s ease-in-out infinite alternate;
}
.scn-sc-ii-caliban-drink .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #3a4a3a 0%, #2a3a2a 100%);
  border-radius: 30% 70% 0 0 / 50% 50% 0 0;
  animation: cd-ground 10s ease-in-out infinite;
}
.scn-sc-ii-caliban-drink .barrel {
  position: absolute; bottom: 30%; left: 45%; width: 50px; height: 60px;
  background: linear-gradient(90deg, #6a4a3a 0%, #5a3a2a 50%, #4a2a1a 100%);
  border-radius: 20% 20% 15% 15%; box-shadow: 0 4px 10px rgba(0,0,0,.4);
  transform: rotate(5deg); animation: cd-barrel 8s ease-in-out infinite;
}
.scn-sc-ii-caliban-drink .cup1 {
  position: absolute; bottom: 32%; left: 42%; width: 14px; height: 18px;
  background: linear-gradient(180deg, #9a8a6a 0%, #8a7a5a 100%);
  border-radius: 10% 10% 20% 20%; animation: cd-cup 4s ease-in-out infinite;
}
.scn-sc-ii-caliban-drink .cup2 {
  position: absolute; bottom: 32%; left: 52%; width: 14px; height: 18px;
  background: linear-gradient(180deg, #9a8a6a 0%, #8a7a5a 100%);
  border-radius: 10% 10% 20% 20%; animation: cd-cup 4s ease-in-out infinite reverse; animation-delay: -2s;
}
.scn-sc-ii-caliban-drink .caliban {
  position: absolute; bottom: 25%; left: 30%; width: 28px; height: 50px;
  background: radial-gradient(ellipse at 50% 40%, #5a6a4a 0%, #3a4a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cd-figure 6s ease-in-out infinite;
}
.scn-sc-ii-caliban-drink .stephano {
  position: absolute; bottom: 25%; left: 50%; width: 24px; height: 52px;
  background: linear-gradient(180deg, #7a6a5a 0%, #5a4a3a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: cd-figure 6s ease-in-out infinite -2s;
}
.scn-sc-ii-caliban-drink .trinculo {
  position: absolute; bottom: 25%; left: 68%; width: 22px; height: 48px;
  background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%);
  border-radius: 50% 50% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: cd-figure 6s ease-in-out infinite -4s;
}
@keyframes cd-sky { 0% { opacity: .7 } 50% { opacity: 1 } 100% { opacity: .8 } }
@keyframes cd-ground { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-2px) } }
@keyframes cd-barrel { 0%,100% { transform: rotate(5deg) } 50% { transform: rotate(-2deg) } }
@keyframes cd-cup { 0%,100% { transform: translateY(0) translateX(0) rotate(0) } 50% { transform: translateY(-4px) translateX(2px) rotate(8deg) } }
@keyframes cd-figure { 0%,100% { transform: rotate(0) } 25% { transform: rotate(-3deg) } 50% { transform: rotate(2deg) } 75% { transform: rotate(-1deg) } }

.scn-trinculo-beaten {
  background: linear-gradient(180deg, #e0d0b0 0%, #c0b090 40%, #a09070 100%),
              radial-gradient(ellipse at 70% 20%, #fff0d0 0%, transparent 60%);
}
.scn-trinculo-beaten .sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #f0e0c0 0%, #e0d0b0 100%);
  animation: tb-sky 6s ease-in-out infinite alternate;
}
.scn-trinculo-beaten .sun {
  position: absolute; top: 8%; right: 20%; width: 60px; height: 60px;
  background: radial-gradient(circle, #fff0d0 0%, #e0c080 40%, #d0b070 70%);
  border-radius: 50%; box-shadow: 0 0 60px 30px rgba(224,192,128,.5);
  animation: tb-sun 10s ease-in-out infinite alternate;
}
.scn-trinculo-beaten .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #8a7a5a 0%, #6a5a3a 100%);
  border-radius: 50% 50% 0 0 / 30% 30% 0 0;
}
.scn-trinculo-beaten .stephano {
  position: absolute; bottom: 20%; left: 35%; width: 28px; height: 60px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%;
  box-shadow: 4px 0 8px rgba(0,0,0,.4); transform-origin: bottom center;
  animation: tb-stephano 3s ease-in-out infinite;
}
.scn-trinculo-beaten .trinculo {
  position: absolute; bottom: 18%; left: 55%; width: 24px; height: 50px;
  background: linear-gradient(180deg, #7a6a5a 0%, #5a4a3a 100%);
  border-radius: 50% 50% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: tb-trinculo 2s ease-in-out infinite;
}
.scn-trinculo-beaten .shadow-stephano {
  position: absolute; bottom: 5%; left: 30%; width: 30px; height: 6px;
  background: rgba(0,0,0,.2); border-radius: 50%;
  animation: tb-shadow 3s ease-in-out infinite;
}
.scn-trinculo-beaten .shadow-trinculo {
  position: absolute; bottom: 5%; left: 52%; width: 26px; height: 5px;
  background: rgba(0,0,0,.15); border-radius: 50%;
  animation: tb-shadow 2s ease-in-out infinite reverse;
}
.scn-trinculo-beaten .stick {
  position: absolute; bottom: 30%; left: 30%; width: 3px; height: 40px;
  background: linear-gradient(180deg, #8a7a5a 0%, #5a4a2a 100%);
  transform: rotate(-20deg); transform-origin: bottom center;
  animation: tb-stick 2s ease-in-out infinite;
}
@keyframes tb-sky { 0% { opacity: .8 } 100% { opacity: .9 } }
@keyframes tb-sun { 0% { transform: scale(1) } 50% { transform: scale(1.05) } 100% { transform: scale(0.95) } }
@keyframes tb-stephano { 0%,100% { transform: rotate(0) translateY(0) } 50% { transform: rotate(-5deg) translateY(-3px) } }
@keyframes tb-trinculo { 0%,100% { transform: translateX(0) rotate(0) } 25% { transform: translateX(-6px) rotate(-6deg) } 75% { transform: translateX(-2px) rotate(4deg) } }
@keyframes tb-shadow { 0%,100% { transform: scaleX(1) } 50% { transform: scaleX(0.8) } }
@keyframes tb-stick { 0%,100% { transform: rotate(-20deg) } 50% { transform: rotate(-10deg) } }

.scn-caliban-plot {
  background: linear-gradient(180deg, #c0a070 0%, #b09060 40%, #a08050 100%),
              radial-gradient(ellipse at 50% 100%, #d0b070 0%, transparent 70%);
}
.scn-caliban-plot .sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #d0b080 0%, transparent 100%);
  animation: cp-sky 15s ease-in-out infinite alternate;
}
.scn-caliban-plot .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #8a6a3a 0%, #6a4a2a 100%);
  border-radius: 40% 60% 0 0 / 30% 40% 0 0;
  animation: cp-ground 8s ease-in-out infinite;
}
.scn-caliban-plot .caliban {
  position: absolute; bottom: 22%; left: 25%; width: 34px; height: 60px;
  background: radial-gradient(ellipse at 50% 40%, #5a6a3a 0%, #3a4a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cp-plot-fig 6s ease-in-out infinite;
}
.scn-caliban-plot .stephano {
  position: absolute; bottom: 20%; left: 45%; width: 28px; height: 62px;
  background: linear-gradient(180deg, #6a5a3a 0%, #4a3a2a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: cp-plot-fig 6s ease-in-out infinite -2s;
}
.scn-caliban-plot .trinculo {
  position: absolute; bottom: 22%; left: 65%; width: 24px; height: 54px;
  background: linear-gradient(180deg, #7a6a4a 0%, #5a4a2a 100%);
  border-radius: 50% 50% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: cp-plot-fig 6s ease-in-out infinite -4s;
}
.scn-caliban-plot .glint {
  position: absolute; top: 30%; left: 38%; width: 8px; height: 8px;
  background: radial-gradient(circle, #ffd080 0%, transparent 70%);
  border-radius: 50%; box-shadow: 0 0 20px 6px rgba(255,208,128,.3);
  animation: cp-glint 4s ease-in-out infinite alternate;
}
@keyframes cp-sky { 0% { opacity: .8 } 50% { opacity: 1 } 100% { opacity: .85 } }
@keyframes cp-ground { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-2px) } }
@keyframes cp-plot-fig { 0%,100% { transform: rotate(0) translateY(0) } 25% { transform: rotate(-2deg) translateY(-1px) } 50% { transform: rotate(1deg) translateY(0) } 75% { transform: rotate(-1deg) translateY(-2px) } }
@keyframes cp-glint { 0% { opacity: .3; transform: scale(1) } 100% { opacity: .8; transform: scale(1.3) } }

.scn-singing-plot {
  background: linear-gradient(180deg, #d0c090 0%, #c0b080 40%, #b0a070 100%),
              radial-gradient(ellipse at 60% 30%, #e0d0a0 0%, transparent 60%);
}
.scn-singing-plot .sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #e0d0a0 0%, transparent 100%);
  animation: sp-sky 12s ease-in-out infinite alternate;
}
.scn-singing-plot .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #8a7a4a 0%, #6a5a3a 100%);
  border-radius: 40% 60% 0 0 / 30% 30% 0 0;
}
.scn-singing-plot .singer1 {
  position: absolute; bottom: 22%; left: 30%; width: 28px; height: 56px;
  background: linear-gradient(180deg, #6a5a3a 0%, #4a3a2a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: sp-singer 3s ease-in-out infinite;
}
.scn-singing-plot .singer2 {
  position: absolute; bottom: 22%; left: 55%; width: 26px; height: 54px;
  background: linear-gradient(180deg, #7a6a4a 0%, #5a4a2a 100%);
  border-radius: 50% 50% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: sp-singer 3s ease-in-out infinite -1.5s;
}
.scn-singing-plot .note-a {
  position: absolute; bottom: 50%; left: 20%; width: 12px; height: 12px;
  background: radial-gradient(circle, #ffc080 0%, transparent 70%);
  border-radius: 50%; box-shadow: 0 0 10px 4px rgba(255,192,128,.4);
  animation: sp-note 5s ease-in-out infinite;
}
.scn-singing-plot .note-b {
  position: absolute; bottom: 55%; left: 45%; width: 10px; height: 10px;
  background: radial-gradient(circle, #ffd090 0%, transparent 70%);
  border-radius: 50%; box-shadow: 0 0 8px 3px rgba(255,208,144,.4);
  animation: sp-note 5s ease-in-out infinite -2s;
}
.scn-singing-plot .note-c {
  position: absolute; bottom: 48%; left: 70%; width: 8px; height: 8px;
  background: radial-gradient(circle, #ffe0a0 0%, transparent 70%);
  border-radius: 50%; box-shadow: 0 0 6px 2px rgba(255,224,160,.4);
  animation: sp-note 5s ease-in-out infinite -4s;
}
.scn-singing-plot .pipe {
  position: absolute; bottom: 30%; left: 20%; width: 4px; height: 20px;
  background: linear-gradient(180deg, #a08050 0%, #806030 100%);
  border-radius: 10% 10% 20% 20%;
  transform: rotate(30deg); transform-origin: bottom center;
  animation: sp-pipe 4s ease-in-out infinite;
}
@keyframes sp-sky { 0% { opacity: .85 } 50% { opacity: 1 } 100% { opacity: .9 } }
@keyframes sp-singer { 0%,100% { transform: rotate(0) translateY(0) } 25% { transform: rotate(-4deg) translateY(-2px) } 50% { transform: rotate(2deg) translateY(0) } 75% { transform: rotate(-2deg) translateY(-1px) } }
@keyframes sp-note { 0%,100% { transform: translateY(0) scale(1); opacity: .6 } 50% { transform: translateY(-20px) scale(1.4); opacity: 1 } }
@keyframes sp-pipe { 0%,100% { transform: rotate(30deg) } 50% { transform: rotate(35deg) } }

.scn-caliban-repentance {
  background: 
    linear-gradient(135deg, #3b2f1f 0%, #5a4530 40%, #3b2f1f 100%),
    radial-gradient(ellipse at 40% 30%, #7a6035 0%, transparent 70%);
}
.scn-caliban-repentance .cave-bg {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(135deg, #45331a 0%, #2d1f0e 100%);
  border-radius: 0 0 40% 40% / 0 0 30% 30%;
  animation: ca-cave 12s ease-in-out infinite alternate;
}
.scn-caliban-repentance .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #5a4a35 0%, #3a2a1a 100%);
  border-radius: 30% 70% 0 0 / 50% 50% 0 0;
}
.scn-caliban-repentance .caliban-figure {
  position: absolute; bottom: 25%; left: 30%; width: 60px; height: 90px;
  background: linear-gradient(180deg, #6a5030 0%, #4a3820 50%, #3a2a1a 100%);
  border-radius: 60% 40% 50% 50% / 70% 60% 40% 30%;
  transform-origin: bottom center;
  box-shadow: 8px 0 12px rgba(0,0,0,0.4);
  animation: ca-wobble 3s ease-in-out infinite;
}
.scn-caliban-repentance .lantern {
  position: absolute; bottom: 40%; left: 55%; width: 10px; height: 14px;
  background: radial-gradient(circle, #f0b060 0%, #a07030 100%);
  border-radius: 30% 30% 20% 20%;
  box-shadow: 0 0 20px 6px #d09040, 0 0 40px 12px rgba(200,140,60,0.4);
  animation: ca-lantern 2s ease-in-out infinite alternate;
}
.scn-caliban-repentance .rock {
  position: absolute; bottom: 20%; left: 60%; width: 40px; height: 25px;
  background: linear-gradient(135deg, #6a5a40 0%, #4a3a20 100%);
  border-radius: 40% 60% 30% 70% / 50% 50% 50% 50%;
  transform: rotate(15deg);
}
.scn-caliban-repentance .shadow {
  position: absolute; bottom: 10%; left: 20%; width: 80px; height: 40px;
  background: radial-gradient(ellipse, rgba(0,0,0,0.3) 0%, transparent 80%);
  filter: blur(8px);
  animation: ca-shadow 6s ease-in-out infinite alternate;
}
@keyframes ca-cave { 0% { opacity: 0.7; } 50% { opacity: 0.9; } 100% { opacity: 0.8; } }
@keyframes ca-wobble { 0% { transform: translateX(0) rotate(-1deg); } 25% { transform: translateX(4px) rotate(2deg); } 50% { transform: translateX(-2px) rotate(-2deg); } 75% { transform: translateX(3px) rotate(1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes ca-lantern { 0% { box-shadow: 0 0 15px 4px #d09040, 0 0 30px 8px rgba(200,140,60,0.3); opacity: 0.8; } 50% { box-shadow: 0 0 25px 8px #f0b060, 0 0 50px 15px rgba(240,176,96,0.5); opacity: 1; } 100% { box-shadow: 0 0 18px 5px #d09040, 0 0 35px 10px rgba(200,140,60,0.35); opacity: 0.85; } }
@keyframes ca-shadow { 0% { transform: scaleY(0.8); opacity: 0.4; } 50% { transform: scaleY(1.1); opacity: 0.6; } 100% { transform: scaleY(0.9); opacity: 0.5; } }

.scn-invitation-cell {
  background: 
    linear-gradient(180deg, #2a2040 0%, #4a3860 40%, #6a5880 100%),
    radial-gradient(ellipse at 70% 80%, #8a7a9a 0%, transparent 60%);
}
.scn-invitation-cell .sky-dusk {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #6a5880 0%, #3a2860 60%, #1a1040 100%);
  animation: in-sky 15s ease-in-out infinite alternate;
}
.scn-invitation-cell .window-glow {
  position: absolute; top: 10%; left: 8%; width: 40px; height: 50px;
  background: radial-gradient(ellipse, #c0a8e0 0%, #8a70b0 80%);
  border-radius: 10% 10% 20% 20%;
  box-shadow: 0 0 30px 8px #b098d0, 0 0 60px 15px rgba(160,128,200,0.3);
  animation: in-glow 4s ease-in-out infinite alternate;
}
.scn-invitation-cell .table {
  position: absolute; bottom: 15%; left: 30%; width: 120px; height: 20px;
  background: linear-gradient(90deg, #4a3a2a 0%, #5a4a3a 50%, #4a3a2a 100%);
  border-radius: 20% 20% 0 0;
  box-shadow: 0 4px 6px rgba(0,0,0,0.4);
}
.scn-invitation-cell .bookshelf {
  position: absolute; bottom: 25%; right: 5%; width: 70px; height: 80px;
  background: linear-gradient(90deg, #3a2a1a 0%, #5a4a3a 100%);
  border-radius: 4px;
  border: 2px solid #6a5a4a;
}
.scn-invitation-cell .candle {
  position: absolute; bottom: 35%; left: 48%; width: 8px; height: 16px;
  background: linear-gradient(0deg, #b09070 0%, #d0b090 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 0 0 12px 4px #e0c080;
  animation: in-candle 5s ease-in-out infinite;
}
.scn-invitation-cell .prospero-figure {
  position: absolute; bottom: 20%; left: 35%; width: 30px; height: 60px;
  background: linear-gradient(180deg, #4a3a6a 0%, #2a1a4a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: in-prospero 9s ease-in-out infinite alternate;
}
.scn-invitation-cell .chair {
  position: absolute; bottom: 16%; left: 34%; width: 40px; height: 30px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 10% 10% 30% 30% / 20% 20% 60% 60%;
}
@keyframes in-sky { 0% { opacity: 0.6; } 50% { opacity: 0.9; } 100% { opacity: 0.7; } }
@keyframes in-glow { 0% { box-shadow: 0 0 20px 5px #b098d0; opacity: 0.8; } 50% { box-shadow: 0 0 40px 12px #d0b8f0; opacity: 1; } 100% { box-shadow: 0 0 25px 6px #b098d0; opacity: 0.85; } }
@keyframes in-candle { 0% { transform: scaleY(1); } 25% { transform: scaleY(1.1); } 50% { transform: scaleY(0.95); } 75% { transform: scaleY(1.05); } 100% { transform: scaleY(1); } }
@keyframes in-prospero { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-2px) rotate(1deg); } 100% { transform: translateY(0) rotate(-1deg); } }

.scn-epilogue-begin {
  background: 
    linear-gradient(180deg, #050510 0%, #0a0a30 40%, #101050 70%, #202070 100%),
    radial-gradient(ellipse at 50% 20%, #202080 0%, transparent 60%);
}
.scn-epilogue-begin .night-sky {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #0a0a40 0%, #101060 50%, #1a1a80 100%);
  animation: epb-sky 20s ease-in-out infinite alternate;
}
.scn-epilogue-begin .sea {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #0a0a30 0%, #151555 50%, #202080 100%);
  border-radius: 60% 40% 0 0 / 50% 50% 0 0;
  animation: epb-sea 10s ease-in-out infinite alternate;
}
.scn-epilogue-begin .moon {
  position: absolute; top: 12%; right: 20%; width: 50px; height: 50px;
  background: radial-gradient(circle, #d0e0f0 0%, #8090b0 80%);
  border-radius: 50%;
  box-shadow: 0 0 40px 15px #a0b0d0, 0 0 80px 25px rgba(100,120,160,0.4);
  animation: epb-moon 8s ease-in-out infinite;
}
.scn-epilogue-begin .ship {
  position: absolute; bottom: 28%; left: 40%; width: 80px; height: 60px;
  background: linear-gradient(90deg, #2a2a40 0%, #3a3a5a 100%);
  border-radius: 0 0 40% 40% / 0 0 30% 30%;
  clip-path: polygon(10% 100%, 90% 100%, 85% 20%, 15% 20%);
  animation: epb-ship 15s ease-in-out infinite;
}
.scn-epilogue-begin .sail-main {
  position: absolute; bottom: 50%; left: 45%; width: 10px; height: 50px;
  background: linear-gradient(180deg, #8090a0 0%, #506080 100%);
  border-radius: 10% 10% 5% 5%;
  transform-origin: bottom center;
  animation: epb-sail 12s ease-in-out infinite alternate;
}
.scn-epilogue-begin .sail-fore {
  position: absolute; bottom: 48%; left: 35%; width: 8px; height: 35px;
  background: linear-gradient(180deg, #7080a0 0%, #405070 100%);
  border-radius: 10% 10% 5% 5%;
  transform: rotate(20deg);
  transform-origin: bottom center;
  animation: epb-sail-fore 14s ease-in-out infinite alternate;
}
.scn-epilogue-begin .star-1,
.scn-epilogue-begin .star-2,
.scn-epilogue-begin .star-3 {
  position: absolute; width: 4px; height: 4px;
  background: radial-gradient(circle, #ffffff 0%, rgba(255,255,255,0.2) 100%);
  border-radius: 50%;
  animation: epb-star 3s ease-in-out infinite alternate;
}
.scn-epilogue-begin .star-1 { top: 25%; left: 15%; animation-delay: 0s; }
.scn-epilogue-begin .star-2 { top: 35%; left: 80%; animation-delay: 0.8s; }
.scn-epilogue-begin .star-3 { top: 18%; left: 55%; animation-delay: 1.6s; }
@keyframes epb-sky { 0% { opacity: 0.7; } 50% { opacity: 0.9; } 100% { opacity: 0.8; } }
@keyframes epb-sea { 0% { transform: translateY(0); } 50% { transform: translateY(-4px); } 100% { transform: translateY(0); } }
@keyframes epb-moon { 0% { transform: scale(0.9); opacity: 0.8; } 50% { transform: scale(1.05); opacity: 1; } 100% { transform: scale(0.95); opacity: 0.85; } }
@keyframes epb-ship { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(8px) rotate(1deg); } 100% { transform: translateX(-4px) rotate(-1deg); } }
@keyframes epb-sail { 0% { transform: scaleY(1); } 50% { transform: scaleY(1.2) translateX(2px); } 100% { transform: scaleY(0.9); } }
@keyframes epb-sail-fore { 0% { transform: rotate(15deg) scaleY(1); } 50% { transform: rotate(25deg) scaleY(1.15); } 100% { transform: rotate(20deg) scaleY(0.95); } }
@keyframes epb-star { 0% { opacity: 0.2; transform: scale(0.5); } 50% { opacity: 1; transform: scale(1.2); } 100% { opacity: 0.5; transform: scale(0.8); } }

.scn-epilogue-end {
  background: 
    linear-gradient(180deg, #0a0a10 0%, #1a1a30 40%, #2a2a50 100%),
    radial-gradient(ellipse at 50% 70%, #3a3a60 0%, transparent 70%);
}
.scn-epilogue-end .dark-bg {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, #050510 0%, #151530 100%);
}
.scn-epilogue-end .figure-rising {
  position: absolute; bottom: 20%; left: 45%; width: 50px; height: 80px;
  background: linear-gradient(180deg, #303050 0%, #202040 50%, #101030 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: epe-figure 6s ease-in-out infinite alternate;
}
.scn-epilogue-end .hands {
  position: absolute; bottom: 65%; left: 40%; width: 30px; height: 20px;
  background: radial-gradient(ellipse at 50% 100%, #404060 0%, transparent 100%);
  border-radius: 40% 40% 30% 30%;
  filter: blur(2px);
  animation: epe-hands 4s ease-in-out infinite;
}
.scn-epilogue-end .wind-line {
  position: absolute; bottom: 50%; left: 10%; width: 200px; height: 2px;
  background: linear-gradient(90deg, transparent 0%, #6080a0 50%, transparent 100%);
  filter: blur(1px);
  animation: epe-wind 8s linear infinite;
}
.scn-epilogue-end .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 0 0 / 30% 30% 0 0;
}
.scn-epilogue-end .sparkle {
  position: absolute; top: 15%; left: 20%; width: 6px; height: 6px;
  background: radial-gradient(circle, #a0b0d0 0%, rgba(160,176,208,0) 100%);
  border-radius: 50%;
  box-shadow: 0 0 8px 2px #8090b0;
  animation: epe-spark 5s ease-in-out infinite;
}
@keyframes epe-figure { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-6px) rotate(3deg); } 100% { transform: translateY(-2px) rotate(-1deg); } }
@keyframes epe-hands { 0% { transform: translateY(0) rotate(-2deg); opacity: 0.6; } 50% { transform: translateY(-4px) rotate(2deg); opacity: 1; } 100% { transform: translateY(0) rotate(-1deg); opacity: 0.7; } }
@keyframes epe-wind { 0% { transform: translateX(-100px) scaleX(0.3); opacity: 0; } 30% { opacity: 0.5; } 60% { opacity: 0.8; } 100% { transform: translateX(300px) scaleX(1); opacity: 0; } }
@keyframes epe-spark { 0% { transform: scale(0.5); opacity: 0.2; } 50% { transform: scale(1.5); opacity: 1; } 100% { transform: scale(0.8); opacity: 0.4; } }

/* item-gallows – funny, dim interior */
.scn-item-gallows {
  background: linear-gradient(180deg, #3a2a1a 0%, #1f1408 40%, #2a1e0e 100%),
              radial-gradient(ellipse at 50% 80%, #4a3a2a 0%, transparent 70%);
}
.scn-item-gallows .wall { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #4a3a2a 0%, #2a1e0e 100%); }
.scn-item-gallows .floor { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%); border-radius: 20% 20% 0 0 / 40% 40% 0 0; }
.scn-item-gallows .gallows-beam { position:absolute; top:20%; left:20%; width:60%; height:6px; background: #5a4a3a; border-radius: 2px; box-shadow: 0 2px 6px rgba(0,0,0,.6); }
.scn-item-gallows .gallows-post { position:absolute; top:20%; left:30%; width:8px; height:50%; background: linear-gradient(90deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 2px; box-shadow: 2px 0 4px rgba(0,0,0,.4); }
.scn-item-gallows .noose { position:absolute; top:28%; left:60%; width:12px; height:20px; border: 3px solid #7a6a5a; border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; border-bottom: none; transform: rotate(5deg); animation: ig-noose 3s ease-in-out infinite; }
.scn-item-gallows .figure-dangle { position:absolute; top:38%; left:58%; width:22px; height:40px; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%; transform-origin: 50% 0; animation: ig-dangle 4s ease-in-out infinite; }
.scn-item-gallows .lantern-swing { position:absolute; top:15%; left:72%; width:8px; height:10px; background: radial-gradient(circle, #ffdd88 0%, #ddaa55 70%); border-radius: 30% 30% 20% 20%; box-shadow: 0 0 20px 6px #ffcc66, 0 0 40px 12px rgba(255,204,102,.4); animation: ig-lantern 5s ease-in-out infinite; }
.scn-item-gallows .rat { position:absolute; bottom:20%; left:45%; width:16px; height:8px; background: #3a2a1a; border-radius: 50% 40% 40% 50%; animation: ig-rat 6s linear infinite; }
@keyframes ig-noose { 0%,100% { transform: rotate(5deg) scaleY(1); } 50% { transform: rotate(-5deg) scaleY(0.95); } }
@keyframes ig-dangle { 0%,100% { transform-origin: 50% 0; transform: rotate(2deg); } 25% { transform: rotate(-3deg); } 50% { transform: rotate(4deg); } 75% { transform: rotate(-2deg); } }
@keyframes ig-lantern { 0%,100% { transform: translate(0, 0) rotate(2deg); box-shadow: 0 0 20px 6px #ffcc66, 0 0 40px 12px rgba(255,204,102,.4); } 50% { transform: translate(4px, -3px) rotate(-3deg); box-shadow: 0 0 30px 12px #ffcc66, 0 0 60px 20px rgba(255,204,102,.6); } }
@keyframes ig-rat { 0% { transform: translateX(-60px) scaleX(-1); } 50% { transform: translateX(80px) scaleX(1); } 100% { transform: translateX(-60px) scaleX(-1); } }

/* ship-report – tense, dim interior */
.scn-ship-report {
  background: linear-gradient(180deg, #1a2530 0%, #101820 40%, #080e14 100%),
              radial-gradient(ellipse at 50% 30%, #2a3a4a 0%, transparent 70%);
}
.scn-ship-report .cabin-wall { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #2a3a4a 0%, #1a2530 100%); }
.scn-ship-report .cabin-floor { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #1a2530 0%, #080e14 100%); border-radius: 10% 10% 0 0 / 30% 30% 0 0; }
.scn-ship-report .porthole { position:absolute; top:25%; left:10%; width:30px; height:30px; background: radial-gradient(circle, #4a6a8a 0%, #203040 80%); border-radius: 50%; border: 4px solid #3a4a5a; box-shadow: inset 0 0 8px #0a1a2a; animation: sr-porthole 8s ease-in-out infinite alternate; }
.scn-ship-report .table { position:absolute; bottom:35%; left:35%; width:50px; height:8px; background: linear-gradient(90deg, #3a4a5a 0%, #2a3a4a 100%); border-radius: 2px; box-shadow: 0 4px 8px rgba(0,0,0,.5); }
.scn-ship-report .candle { position:absolute; bottom:40%; left:45%; width:4px; height:10px; background: #6a7a8a; border-radius: 2px 2px 0 0; }
.scn-ship-report .candle::after { content:''; position:absolute; top:-6px; left:-3px; width:10px; height:8px; background: radial-gradient(circle, #ffdd66 0%, #ddaa33 70%); border-radius: 50%; box-shadow: 0 0 16px 6px #ffdd66, 0 0 30px 12px rgba(255,221,102,.5); animation: sr-flame 1.5s ease-in-out infinite alternate; } /* pseudo-element OK, not a div but allowed? The rule says child divs, but pseudo-elements are fine. */
.scn-ship-report .shadow-creak { position:absolute; bottom:30%; left:20%; width:12px; height:30px; background: radial-gradient(ellipse, rgba(0,0,0,.6) 0%, transparent 100%); animation: sr-creak 6s ease-in-out infinite; }
.scn-ship-report .map { position:absolute; bottom:28%; left:55%; width:40px; height:28px; background: linear-gradient(135deg, #4a5a3a 0%, #2a3a1a 100%); border-radius: 2px; transform: rotate(-12deg); box-shadow: 1px 1px 4px rgba(0,0,0,.5); animation: sr-map 20s ease-in-out infinite; }
.scn-ship-report .inkwell { position:absolute; bottom:32%; left:60%; width:8px; height:8px; background: #0a0a1a; border-radius: 40% 40% 30% 30%; box-shadow: 0 2px 4px rgba(0,0,0,.6); }
@keyframes sr-porthole { 0% { transform: scaleX(1) rotate(0deg); } 50% { transform: scaleX(0.95) rotate(2deg); } 100% { transform: scaleX(1) rotate(0deg); } }
@keyframes sr-flame { 0% { transform: scaleY(1) translateY(0); opacity: 0.8; } 100% { transform: scaleY(1.3) translateY(-2px); opacity: 1; } }
@keyframes sr-creak { 0%,100% { transform: scaleX(1); } 50% { transform: scaleX(1.05); } }
@keyframes sr-map { 0%,100% { transform: rotate(-12deg) translateY(0); } 50% { transform: rotate(-10deg) translateY(-2px); } }

/* ship-revival-story – tense, dim interior */
.scn-ship-revival-story {
  background: linear-gradient(180deg, #1a2028 0%, #0e1418 40%, #06080c 100%),
              radial-gradient(ellipse at 50% 60%, #2a3038 0%, transparent 70%);
}
.scn-ship-revival-story .bedframe { position:absolute; bottom:10%; left:15%; width:70%; height:45%; border: 6px solid #4a3a2a; border-radius: 8px; background: transparent; }
.scn-ship-revival-story .mattress { position:absolute; bottom:12%; left:18%; width:64%; height:35%; background: linear-gradient(180deg, #3a4a4a 0%, #2a3a3a 100%); border-radius: 4px; box-shadow: inset 0 4px 8px rgba(0,0,0,.4); }
.scn-ship-revival-story .pillow { position:absolute; bottom:40%; left:25%; width:30%; height:10%; background: #4a5a5a; border-radius: 20% 30% 10% 10% / 40% 50% 10% 10%; box-shadow: 0 2px 6px rgba(0,0,0,.3); animation: srs-pillow 8s ease-in-out infinite; }
.scn-ship-revival-story .figure-lying { position:absolute; bottom:18%; left:30%; width:40%; height:30%; background: linear-gradient(180deg, #2a3038 0%, #101418 100%); border-radius: 20% 20% 10% 10% / 30% 30% 10% 10%; transform-origin: 50% 100%; animation: srs-figure 6s ease-in-out infinite; }
.scn-ship-revival-story .coverlet { position:absolute; bottom:15%; left:25%; width:50%; height:20%; background: linear-gradient(90deg, #3a4a3a 0%, #2a3a2a 100%); border-radius: 2px; box-shadow: 0 2px 4px rgba(0,0,0,.3); }
.scn-ship-revival-story .lantern-float { position:absolute; top:20%; right:20%; width:12px; height:16px; background: radial-gradient(circle, #ffcc77 0%, #ddaa55 70%); border-radius: 30% 30% 20% 20%; box-shadow: 0 0 24px 8px #ffcc77, 0 0 48px 16px rgba(255,204,119,.4); animation: srs-lantern 9s ease-in-out infinite; }
.scn-ship-revival-story .fog { position:absolute; bottom:0; left:0; right:0; height:60%; background: radial-gradient(ellipse at 50% 100%, rgba(180,200,200,.15) 0%, transparent 60%); filter: blur(8px); animation: srs-fog 15s ease-in-out infinite alternate; }
.scn-ship-revival-story .particles { position:absolute; inset:0; background: radial-gradient(1px 1px at 20% 40%, rgba(255,255,200,.4) 0%, transparent 100%), radial-gradient(2px 2px at 70% 60%, rgba(255,255,200,.3) 0%, transparent 100%); filter: blur(2px); animation: srs-particles 12s linear infinite; }
@keyframes srs-pillow { 0%,100% { transform: translateY(0) scaleY(1); } 50% { transform: translateY(-2px) scaleY(1.02); } }
@keyframes srs-figure { 0%,100% { transform: rotate(0deg) scale(1); } 25% { transform: rotate(1deg) scale(1.01); } 50% { transform: rotate(-1deg) scale(0.99); } 75% { transform: rotate(0.5deg) scale(1); } }
@keyframes srs-lantern { 0%,100% { transform: translate(0, 0) rotate(3deg); box-shadow: 0 0 24px 8px #ffcc77, 0 0 48px 16px rgba(255,204,119,.4); } 50% { transform: translate(-6px, 4px) rotate(-3deg); box-shadow: 0 0 30px 12px #ffcc77, 0 0 60px 24px rgba(255,204,119,.6); } }
@keyframes srs-fog { 0% { opacity: 0.4; } 100% { opacity: 0.8; } }
@keyframes srs-particles { 0% { background-position: 0% 0%, 0% 0%; } 100% { background-position: 10% 10%, -10% -10%; } }

/* maze-strangeness – calm, dim interior */
.scn-maze-strangeness {
  background: linear-gradient(180deg, #1a1a2e 0%, #0e0e1a 40%, #060610 100%),
              radial-gradient(ellipse at 50% 50%, #2a2a4a 0%, transparent 80%);
}
.scn-maze-strangeness .floor-maze { position:absolute; bottom:0; left:0; right:0; height:50%; background: linear-gradient(135deg, #2a2a3a 0%, #1a1a2a 50%, #0a0a1a 100%); border-radius: 0 0 10% 10%; box-shadow: inset 0 8px 20px rgba(0,0,0,.5); }
.scn-maze-strangeness .wall-left { position:absolute; top:0; left:0; width:20%; height:100%; background: linear-gradient(90deg, #2a2a3a 0%, #1a1a2a 100%); border-right: 2px solid #3a3a5a; }
.scn-maze-strangeness .wall-right { position:absolute; top:0; right:0; width:20%; height:100%; background: linear-gradient(270deg, #2a2a3a 0%, #1a1a2a 100%); border-left: 2px solid #3a3a5a; }
.scn-maze-strangeness .ceiling { position:absolute; top:0; left:20%; right:20%; height:15%; background: linear-gradient(180deg, #1a1a2e 0%, #0e0e1a 100%); box-shadow: 0 4px 12px rgba(0,0,0,.6); }
.scn-maze-strangeness .orb-glow { position:absolute; top:20%; left:50%; width:20px; height:20px; background: radial-gradient(circle, #88aaff 0%, #4466aa 70%); border-radius: 50%; box-shadow: 0 0 30px 10px #88aaff, 0 0 60px 20px rgba(136,170,255,.3); animation: ms-orb 10s ease-in-out infinite alternate; }
.scn-maze-strangeness .mist { position:absolute; bottom:30%; left:10%; right:10%; height:30%; background: radial-gradient(ellipse at 50% 0, rgba(180,200,255,.1) 0%, transparent 60%); filter: blur(12px); animation: ms-mist 20s ease-in-out infinite; }
.scn-maze-strangeness .silhouette-still { position:absolute; bottom:20%; left:35%; width:18px; height:36px; background: #1a1a2a; border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%; box-shadow: 0 0 8px rgba(0,0,0,.5); animation: ms-still 4s ease-in-out infinite; }
.scn-maze-strangeness .sparkle { position:absolute; top:15%; right:25%; width:4px; height:4px; background: #aaccff; border-radius: 50%; box-shadow: 0 0 8px 2px #aaccff; animation: ms-sparkle 8s linear infinite; }
@keyframes ms-orb { 0% { transform: translate(-50%, 0) scale(1); box-shadow: 0 0 30px 10px #88aaff, 0 0 60px 20px rgba(136,170,255,.3); } 100% { transform: translate(-50%, -10px) scale(1.05); box-shadow: 0 0 40px 15px #88aaff, 0 0 80px 30px rgba(136,170,255,.5); } }
@keyframes ms-mist { 0%,100% { opacity: 0.3; transform: scaleY(1); } 50% { opacity: 0.5; transform: scaleY(1.05); } }
@keyframes ms-still { 0%,100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-2px) rotate(1deg); } }
@keyframes ms-sparkle { 0% { transform: scale(1) rotate(0deg); opacity: 0; } 25% { opacity: 1; } 50% { transform: scale(1.5) rotate(180deg); opacity: 0.5; } 75% { opacity: 1; } 100% { transform: scale(1) rotate(360deg); opacity: 0; } }

/* Scene 1: prospero-cell-caliban */
.scn-prospero-cell-caliban {
  background: linear-gradient(180deg, #c8a060 0%, #a08040 20%, #706030 60%, #403020 100%);
  background: linear-gradient(180deg, #c8a060 0%, #a08040 20%, #706030 60%, #403020 100%), radial-gradient(ellipse at 70% 30%, #e8d090 0%, transparent 50%);
}
.scn-prospero-cell-caliban .cell-back {
  position: absolute; inset: 0; background: linear-gradient(135deg, #5a4a2a 0%, #3a2a1a 50%, #2a1a0a 100%); border-radius: 8px; box-shadow: inset 0 0 60px rgba(0,0,0,.5);
}
.scn-prospero-cell-caliban .cell-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%; background: linear-gradient(180deg, #6a5a3a 0%, #4a3a1a 100%); border-radius: 30% 70% 0 0 / 40% 60% 0 0; box-shadow: inset 0 10px 20px rgba(0,0,0,.4);
}
.scn-prospero-cell-caliban .window-light {
  position: absolute; top: 18%; right: 12%; width: 60px; height: 80px; background: radial-gradient(ellipse at 50% 50%, #f0e0b0 0%, #d0b080 60%, transparent 100%); border-radius: 6px 6px 4px 4px; box-shadow: 0 0 40px 10px #f0e0b0, 0 0 80px 20px rgba(240,224,176,.3); animation: pc-glow 6s ease-in-out infinite alternate;
}
.scn-prospero-cell-caliban .chain {
  position: absolute; bottom: 32%; left: 30%; width: 40px; height: 60px; border: 3px solid #8a7a5a; border-radius: 40%; background: transparent; transform: rotate(-10deg); box-shadow: 0 0 0 2px #6a5a3a; animation: pc-chain 4s ease-in-out infinite alternate;
}
.scn-prospero-cell-caliban .figure-crouch {
  position: absolute; bottom: 28%; left: 35%; width: 50px; height: 60px; background: linear-gradient(180deg, #2a1a0a 0%, #1a0a00 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; box-shadow: inset 0 0 10px rgba(0,0,0,.5); animation: pc-crouch 8s ease-in-out infinite alternate;
}
.scn-prospero-cell-caliban .shadow-pool {
  position: absolute; bottom: 20%; left: 28%; width: 80px; height: 20px; background: radial-gradient(ellipse, rgba(0,0,0,.5) 0%, transparent 100%); border-radius: 50%; animation: pc-shadow 8s ease-in-out infinite alternate;
}
.scn-prospero-cell-caliban .dust-mote {
  position: absolute; top: 25%; left: 60%; width: 4px; height: 4px; background: rgba(240,224,176,.6); border-radius: 50%; filter: blur(1px); animation: pc-mote 12s linear infinite;
}
@keyframes pc-glow { 0% { transform: scale(1); opacity: .7; } 50% { transform: scale(1.05); opacity: .9; } 100% { transform: scale(1); opacity: .75; } }
@keyframes pc-chain { 0% { transform: rotate(-12deg) translateY(0); } 50% { transform: rotate(-8deg) translateY(2px); } 100% { transform: rotate(-12deg) translateY(0); } }
@keyframes pc-crouch { 0% { transform: translateX(0) scaleY(1); } 50% { transform: translateX(4px) scaleY(0.95); } 100% { transform: translateX(0) scaleY(1); } }
@keyframes pc-shadow { 0% { transform: scaleX(1) translateX(0); } 50% { transform: scaleX(0.9) translateX(3px); } 100% { transform: scaleX(1) translateX(0); } }
@keyframes pc-mote { 0% { transform: translate(0, 0) rotate(0deg); opacity: 0; } 20% { opacity: .6; } 80% { opacity: .4; } 100% { transform: translate(30px, -20px) rotate(360deg); opacity: 0; } }

/* Scene 2: prospero-cell-ferdinand */
.scn-prospero-cell-ferdinand {
  background: linear-gradient(180deg, #f0d080 0%, #d8b060 30%, #b89040 70%, #8a6820 100%), radial-gradient(ellipse at 40% 20%, #ffe8a0 0%, transparent 60%);
}
.scn-prospero-cell-ferdinand .cell-warm {
  position: absolute; inset: 0; background: linear-gradient(135deg, #c8a050 0%, #a08030 50%, #705020 100%); border-radius: 6px; box-shadow: inset 0 0 40px rgba(0,0,0,.3);
}
.scn-prospero-cell-ferdinand .sun-shaft {
  position: absolute; top: 0; left: 50%; width: 120px; height: 100%; background: linear-gradient(180deg, rgba(255,240,180,.3) 0%, rgba(255,240,180,.05) 100%); transform: translateX(-50%) skewX(-5deg); animation: pf-shaft 5s ease-in-out infinite alternate;
}
.scn-prospero-cell-ferdinand .figure-ferdinand {
  position: absolute; bottom: 28%; left: 40%; width: 50px; height: 80px; background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%); border-radius: 45% 45% 40% 40% / 55% 55% 45% 45%; transform-origin: bottom center; box-shadow: 0 0 8px rgba(0,0,0,.4); animation: pf-stand 6s ease-in-out infinite alternate;
}
.scn-prospero-cell-ferdinand .arms-out {
  position: absolute; bottom: 55%; left: 36%; width: 70px; height: 20px; background: linear-gradient(90deg, transparent 0%, #2a1a0a 30%, #2a1a0a 70%, transparent 100%); border-radius: 10px; transform: translateY(0) rotate(10deg); animation: pf-arms 4s ease-in-out infinite alternate;
}
.scn-prospero-cell-ferdinand .music-note {
  position: absolute; width: 8px; height: 12px; background: rgba(200,160,80,.7); border-radius: 50% 50% 10% 10%; filter: blur(1px); animation: pf-note 7s ease-in-out infinite;
}
.scn-prospero-cell-ferdinand .note-a { top: 30%; left: 55%; animation-delay: 0s; }
.scn-prospero-cell-ferdinand .note-b { top: 22%; left: 65%; width: 6px; height: 8px; animation-delay: -2.5s; }
.scn-prospero-cell-ferdinand .glow-orbs {
  position: absolute; top: 15%; left: 20%; width: 100px; height: 100px; background: radial-gradient(circle, rgba(255,200,100,.15) 0%, transparent 70%); border-radius: 50%; animation: pf-orbs 20s linear infinite;
}
@keyframes pf-shaft { 0% { transform: translateX(-50%) skewX(-5deg) scaleY(1); opacity: .8; } 50% { transform: translateX(-48%) skewX(-3deg) scaleY(1.05); opacity: 1; } 100% { transform: translateX(-50%) skewX(-5deg) scaleY(1); opacity: .85; } }
@keyframes pf-stand { 0% { transform: translateX(0) translateY(0) rotate(0deg); } 50% { transform: translateX(3px) translateY(-2px) rotate(1deg); } 100% { transform: translateX(0) translateY(0) rotate(0deg); } }
@keyframes pf-arms { 0% { transform: rotate(8deg) translateY(0); } 50% { transform: rotate(14deg) translateY(-3px); } 100% { transform: rotate(10deg) translateY(0); } }
@keyframes pf-note { 0% { transform: translate(0, 0) rotate(0deg); opacity: .3; } 50% { transform: translate(20px, -30px) rotate(45deg); opacity: .7; } 100% { transform: translate(40px, -60px) rotate(90deg); opacity: 0; } }
@keyframes pf-orbs { 0% { transform: scale(1) rotate(0deg); } 50% { transform: scale(1.1) rotate(5deg); } 100% { transform: scale(1) rotate(0deg); } }

/* Scene 3: island-other-part */
.scn-island-other-part {
  background: linear-gradient(180deg, #5a5a6a 0%, #4a4a5a 30%, #3a3a4a 60%, #2a2a3a 100%), radial-gradient(ellipse at 50% 30%, #7a7a8a 0%, transparent 60%);
}
.scn-island-other-part .sky-overcast {
  position: absolute; inset: 0 0 40% 0; background: linear-gradient(180deg, #6a6a7a 0%, #4a4a5a 100%); animation: io-sky 15s ease-in-out infinite alternate;
}
.scn-island-other-part .rocks-back {
  position: absolute; bottom: 30%; left: 0; right: 0; height: 35%; background: linear-gradient(180deg, #3a3a3a 0%, #1a1a1a 100%); border-radius: 60% 40% 0 0 / 80% 50% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,.5); animation: io-rocks 20s ease-in-out infinite alternate;
}
.scn-island-other-part .rocks-fore {
  position: absolute; bottom: 15%; left: 10%; right: 10%; height: 20%; background: linear-gradient(180deg, #2a2a2a 0%, #1a1a1a 100%); border-radius: 40% 60% 0 0 / 60% 80% 0 0; box-shadow: inset 0 4px 10px rgba(0,0,0,.6); animation: io-rocks 25s ease-in-out infinite alternate-reverse;
}
.scn-island-other-part .figures-group {
  position: absolute; bottom: 25%; left: 40%; width: 100px; height: 80px; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 30% 30% 20% 20% / 40% 40% 20% 20%; animation: io-group 10s ease-in-out infinite alternate;
}
.scn-island-other-part .figure-left {
  position: absolute; bottom: 22%; left: 30%; width: 28px; height: 60px; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 45% 45% 40% 40% / 50% 50% 30% 30%; transform-origin: bottom center; animation: io-figure 9s ease-in-out infinite;
}
.scn-island-other-part .figure-right {
  position: absolute; bottom: 20%; left: 55%; width: 30px; height: 65px; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 45% 45% 40% 40% / 50% 50% 30% 30%; transform-origin: bottom center; animation: io-figure 11s ease-in-out infinite reverse;
}
.scn-island-other-part .mist-rise {
  position: absolute; bottom: 30%; left: 20%; width: 80px; height: 40px; background: radial-gradient(ellipse, rgba(200,200,220,.2) 0%, transparent 100%); border-radius: 50%; filter: blur(8px); animation: io-mist 30s linear infinite;
}
.scn-island-other-part .branch-drop {
  position: absolute; top: 10%; left: 80%; width: 60px; height: 4px; background: #2a2a2a; border-radius: 2px; transform: rotate(30deg); box-shadow: 0 0 4px rgba(0,0,0,.5); animation: io-branch 6s ease-in-out infinite alternate;
}
@keyframes io-sky { 0% { opacity: .7; } 50% { opacity: .9; } 100% { opacity: .75; } }
@keyframes io-rocks { 0% { transform: translateY(0); } 50% { transform: translateY(-3px); } 100% { transform: translateY(0); } }
@keyframes io-group { 0% { transform: translateX(0) scaleY(1); } 50% { transform: translateX(2px) scaleY(0.98); } 100% { transform: translateX(0) scaleY(1); } }
@keyframes io-figure { 0% { transform: translateX(0) translateY(0) rotate(0deg); } 50% { transform: translateX(3px) translateY(-2px) rotate(1deg); } 100% { transform: translateX(0) translateY(0) rotate(0deg); } }
@keyframes io-mist { 0% { transform: translateY(0) scaleX(1); opacity: .3; } 50% { transform: translateY(-10px) scaleX(1.2); opacity: .5; } 100% { transform: translateY(0) scaleX(1); opacity: .3; } }
@keyframes io-branch { 0% { transform: rotate(28deg) translateY(0); } 50% { transform: rotate(32deg) translateY(2px); } 100% { transform: rotate(28deg) translateY(0); } }

/* Scene 4: nobles-on-island */
.scn-nobles-on-island {
  background: linear-gradient(180deg, #a0d0a0 0%, #80b080 30%, #609060 60%, #406040 100%), radial-gradient(ellipse at 60% 20%, #c0e0c0 0%, transparent 60%);
}
.scn-nobles-on-island .sky-sunlit {
  position: absolute; inset: 0 0 50% 0; background: linear-gradient(180deg, #b0d0ff 0%, #e0f0e0 100%); animation: ni-sky 12s ease-in-out infinite alternate;
}
.scn-nobles-on-island .hill-grass {
  position: absolute; bottom: 0; left: 0; right: 0; height: 55%; background: linear-gradient(180deg, #70a070 0%, #508050 20%, #306030 100%); border-radius: 40% 60% 0 0 / 70% 80% 0 0; box-shadow: inset 0 10px 30px rgba(0,0,0,.2); animation: ni-hill 20s ease-in-out infinite alternate;
}
.scn-nobles-on-island .grass-blade {
  position: absolute; bottom: 50%; width: 4px; height: 30px; background: linear-gradient(180deg, #306030 0%, #508050 100%); border-radius: 50%; transform-origin: bottom center; animation: ni-grass 3s ease-in-out infinite;
}
.scn-nobles-on-island .blade-1 { left: 20%; animation-delay: 0s; }
.scn-nobles-on-island .blade-2 { left: 70%; height: 40px; animation-delay: -1.5s; }
.scn-nobles-on-island .figure-gonzalo {
  position: absolute; bottom: 40%; left: 45%; width: 40px; height: 70px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 45% 45% 40% 40% / 55% 55% 35% 35%; transform-origin: bottom center; box-shadow: 0 0 10px rgba(0,0,0,.3); animation: ni-gonzalo 8s ease-in-out infinite alternate;
}
.scn-nobles-on-island .staff {
  position: absolute; bottom: 42%; left: 48%; width: 4px; height: 50px; background: #5a3a1a; border-radius: 2px; transform: rotate(12deg); transform-origin: bottom center; box-shadow: 0 0 4px rgba(0,0,0,.4); animation: ni-staff 5s ease-in-out infinite alternate;
}
.scn-nobles-on-island .butterfly {
  position: absolute; top: 30%; left: 30%; width: 12px; height: 8px; background: rgba(200,180,100,.7); border-radius: 50% 50% 0 0; filter: blur(1px); animation: ni-butterfly 10s ease-in-out infinite;
}
@keyframes ni-sky { 0% { background: linear-gradient(180deg, #b0d0ff 0%, #e0f0e0 100%); } 50% { background: linear-gradient(180deg, #c0e0ff 0%, #f0f8e0 100%); } 100% { background: linear-gradient(180deg, #b0d0ff 0%, #e0f0e0 100%); } }
@keyframes ni-hill { 0% { transform: translateY(0) scaleY(1); } 50% { transform: translateY(-2px) scaleY(1.01); } 100% { transform: translateY(0) scaleY(1); } }
@keyframes ni-grass { 0% { transform: rotate(0deg); } 50% { transform: rotate(15deg); } 100% { transform: rotate(0deg); } }
@keyframes ni-gonzalo { 0% { transform: translateX(0) translateY(0) rotate(0deg); } 50% { transform: translateX(2px) translateY(-2px) rotate(1deg); } 100% { transform: translateX(0) translateY(0) rotate(0deg); } }
@keyframes ni-staff { 0% { transform: rotate(10deg) translateY(0); } 50% { transform: rotate(14deg) translateY(-2px); } 100% { transform: rotate(10deg) translateY(0); } }
@keyframes ni-butterfly { 0% { transform: translate(0, 0) rotate(0deg) scale(1); } 25% { transform: translate(20px, -15px) rotate(30deg) scale(1.1); } 50% { transform: translate(40px, -30px) rotate(60deg) scale(1.2); } 75% { transform: translate(20px, -10px) rotate(90deg) scale(1); } 100% { transform: translate(0, 0) rotate(120deg) scale(1); } }

/* Scene: ship-tempest */
.scn-ship-tempest {
  background: linear-gradient(180deg, #2c3a4a 0%, #1a2530 40%, #0d1a2a 100%), radial-gradient(ellipse at 50% 100%, #1a2a3a 0%, transparent 70%);
}
.scn-ship-tempest .sky-overcast { position:absolute; inset:0 0 45% 0; background: linear-gradient(180deg, #3a4a5a 0%, #2c3a4a 60%, transparent 100%); animation: st-sky 10s ease-in-out infinite alternate; }
.scn-ship-tempest .sea-tempest { position:absolute; bottom:0; left:0; right:0; height:55%; background: linear-gradient(180deg, #1a2a3a 0%, #0d1a2a 100%); animation: st-sea 8s ease-in-out infinite alternate; }
.scn-ship-tempest .ship-hull { position:absolute; bottom:30%; left:45%; width:120px; height:40px; margin-left:-60px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 30% 30% 40% 40% / 60% 60% 20% 20%; box-shadow: 0 4px 12px rgba(0,0,0,0.6); animation: st-hull 4s ease-in-out infinite; }
.scn-ship-tempest .mast { position:absolute; bottom:58%; left:50%; width:6px; height:70px; margin-left:-3px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 2px; transform-origin: bottom center; animation: st-mast 3s ease-in-out infinite; }
.scn-ship-tempest .sail-rag { position:absolute; bottom:62%; left:44%; width:50px; height:40px; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 0 60% 0 60% / 0 60% 0 60%; transform-origin: top left; box-shadow: inset -4px -4px 8px rgba(0,0,0,0.3); animation: st-sail 2.5s ease-in-out infinite alternate; }
.scn-ship-tempest .wave-storm { position:absolute; bottom:0; height:50%; left:0; right:0; background: linear-gradient(180deg, transparent 0%, #1a2a3a 100%); border-radius: 0 0 50% 50% / 0 0 20% 20%; }
.scn-ship-tempest .wave-a { opacity: 0.7; animation: st-wave-a 6s ease-in-out infinite; }
.scn-ship-tempest .wave-b { opacity: 0.5; animation: st-wave-b 8s ease-in-out infinite reverse; }
.scn-ship-tempest .lightning-flash {
  position:absolute; top:5%; left:20%; width:4px; height:40px; background: #c8d8e8;
  border-radius: 2px; box-shadow: 0 0 20px 6px #a0b8d0, 0 0 40px 12px #809ab0; opacity: 0;
  animation: st-lightning 1.8s ease-in-out infinite;
}
@keyframes st-sky { 0% { opacity: 0.8 } 50% { opacity: 0.6 } 100% { opacity: 0.9 } }
@keyframes st-sea { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.02) } 100% { transform: scaleY(0.98) } }
@keyframes st-hull { 0% { transform: translate(0, 0) rotate(0deg) } 25% { transform: translate(-4px, -2px) rotate(-2deg) } 50% { transform: translate(2px, 0) rotate(1deg) } 75% { transform: translate(-2px, -3px) rotate(-1deg) } 100% { transform: translate(0, 0) rotate(0deg) } }
@keyframes st-mast { 0% { transform: rotate(0deg) } 25% { transform: rotate(-3deg) } 50% { transform: rotate(2deg) } 75% { transform: rotate(-2deg) } 100% { transform: rotate(0deg) } }
@keyframes st-sail { 0% { transform: rotate(0deg) scaleX(1) } 50% { transform: rotate(-5deg) scaleX(1.05) } 100% { transform: rotate(5deg) scaleX(0.95) } }
@keyframes st-wave-a { 0% { transform: translateX(0) } 50% { transform: translateX(-10%) } 100% { transform: translateX(0) } }
@keyframes st-wave-b { 0% { transform: translateX(0) } 50% { transform: translateX(8%) } 100% { transform: translateX(0) } }
@keyframes st-lightning { 0% { opacity: 0 } 5% { opacity: 0.9 } 10% { opacity: 0 } 15% { opacity: 0.7 } 20% { opacity: 0 } 100% { opacity: 0 } }

/* Scene: ship-storm-panic */
.scn-ship-storm-panic {
  background: linear-gradient(180deg, #2a3a4a 0%, #1a2530 50%, #0d1820 100%), radial-gradient(ellipse at 50% 100%, #1a2a3a 0%, transparent 70%);
}
.scn-ship-storm-panic .deck { position:absolute; bottom:25%; left:0; right:0; height:30%; background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%); border-radius: 10% 10% 0 0; box-shadow: inset 0 4px 8px rgba(0,0,0,0.5); }
.scn-ship-storm-panic .bulwark { position:absolute; bottom:45%; left:0; right:0; height:8%; background: #4a3a2a; box-shadow: 0 -2px 4px rgba(0,0,0,0.4); }
.scn-ship-storm-panic .mast-strain { position:absolute; bottom:65%; left:50%; width:8px; height:50px; margin-left:-4px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); transform-origin: bottom center; animation: sp-mast 2s ease-in-out infinite; }
.scn-ship-storm-panic .rigging { position:absolute; bottom:68%; left:35%; width:30%; height:2px; background: #5a4a3a; transform: rotate(-15deg); transform-origin: left; animation: sp-rigging 3s ease-in-out infinite; }
.scn-ship-storm-panic .figure-crew { position:absolute; bottom:32%; width:20px; height:36px; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; }
.scn-ship-storm-panic .figure-1 { left:30%; animation: sp-figure1 2.5s ease-in-out infinite; }
.scn-ship-storm-panic .figure-2 { left:55%; animation: sp-figure2 3s ease-in-out infinite reverse; }
.scn-ship-storm-panic .wave-panic { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, transparent 0%, #1a2a3a 100%); border-radius: 0 0 40% 40% / 0 0 10% 10%; animation: sp-wave 5s ease-in-out infinite; }
.scn-ship-storm-panic .rain-streak { position:absolute; top:0; left:40%; width:2px; height:100%; background: linear-gradient(180deg, rgba(200,210,220,0.3) 0%, transparent 80%); animation: sp-rain 1.8s linear infinite; }
@keyframes sp-mast { 0% { transform: rotate(0deg) } 30% { transform: rotate(-8deg) } 60% { transform: rotate(5deg) } 100% { transform: rotate(0deg) } }
@keyframes sp-rigging { 0% { transform: rotate(-15deg) } 50% { transform: rotate(-10deg) } 100% { transform: rotate(-15deg) } }
@keyframes sp-figure1 { 0% { transform: translate(0, 0) rotate(0deg) } 25% { transform: translate(6px, -4px) rotate(2deg) } 50% { transform: translate(-4px, 0) rotate(-1deg) } 75% { transform: translate(2px, -2px) rotate(1deg) } 100% { transform: translate(0, 0) rotate(0deg) } }
@keyframes sp-figure2 { 0% { transform: translate(0, 0) rotate(0deg) } 25% { transform: translate(-4px, -2px) rotate(-2deg) } 50% { transform: translate(8px, 0) rotate(1deg) } 75% { transform: translate(-2px, -3px) rotate(0deg) } 100% { transform: translate(0, 0) rotate(0deg) } }
@keyframes sp-wave { 0% { transform: translateX(0) scaleY(1) } 50% { transform: translateX(-10%) scaleY(1.03) } 100% { transform: translateX(0) scaleY(0.98) } }
@keyframes sp-rain { 0% { transform: translateY(-100%) } 100% { transform: translateY(100vh) } }

/* Scene: ship-all-lost */
.scn-ship-all-lost {
  background: linear-gradient(180deg, #1a2530 0%, #0d1520 50%, #050a10 100%), radial-gradient(ellipse at 50% 100%, #0d1520 0%, transparent 70%);
}
.scn-ship-all-lost .hull-sink { position:absolute; bottom:15%; left:40%; width:140px; height:50px; margin-left:-70px; background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%); border-radius: 20% 20% 40% 40% / 50% 50% 20% 20%; transform-origin: center bottom; animation: al-hull 4s ease-in-out infinite; }
.scn-ship-all-lost .flood-water { position:absolute; bottom:30%; left:35%; width:80px; height:30px; background: linear-gradient(180deg, #2a3a4a 0%, #1a2a3a 100%); border-radius: 40% 40% 0 0; animation: al-flood 5s ease-in-out infinite alternate; }
.scn-ship-all-lost .crack-split { position:absolute; bottom:25%; left:45%; width:2px; height:20px; background: #3a2a1a; transform: rotate(15deg); box-shadow: 1px 2px 0 #1a0a00; }
.scn-ship-all-lost .wave-lost { position:absolute; bottom:0; left:0; right:0; height:45%; background: linear-gradient(180deg, transparent 0%, #0d1820 100%); border-radius: 0 0 30% 30% / 0 0 8% 8%; animation: al-wave 6s ease-in-out infinite; }
.scn-ship-all-lost .figure-cling { position:absolute; bottom:20%; left:48%; width:16px; height:28px; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: al-cling 3s ease-in-out infinite; }
.scn-ship-all-lost .bubble { position:absolute; bottom:38%; width:8px; height:8px; background: radial-gradient(circle, #8ab0c0 0%, transparent 70%); border-radius: 50%; opacity: 0.6; }
.scn-ship-all-lost .bubble-1 { left:42%; animation: al-bubble1 4s ease-out infinite; }
.scn-ship-all-lost .bubble-2 { left:50%; animation: al-bubble2 5s ease-out infinite; }
.scn-ship-all-lost .rain-lost { position:absolute; top:0; left:0; right:0; bottom:0; background: repeating-linear-gradient(180deg, rgba(200,210,220,0.1) 0px, transparent 4px); animation: al-rain 1.6s linear infinite; }
@keyframes al-hull { 0% { transform: translate(0, 0) rotate(0deg) } 30% { transform: translate(-6px, -4px) rotate(-3deg) } 60% { transform: translate(4px, 2px) rotate(2deg) } 100% { transform: translate(0, 0) rotate(0deg) } }
@keyframes al-flood { 0% { transform: scaleY(1) translateX(0) } 50% { transform: scaleY(1.2) translateX(-4px) } 100% { transform: scaleY(0.9) translateX(2px) } }
@keyframes al-wave { 0% { transform: translateX(0) } 50% { transform: translateX(-15%) } 100% { transform: translateX(0) } }
@keyframes al-cling { 0% { transform: translate(0, 0) rotate(0deg) } 25% { transform: translate(-3px, -2px) rotate(2deg) } 50% { transform: translate(5px, 0) rotate(-1deg) } 75% { transform: translate(-1px, -3px) rotate(1deg) } 100% { transform: translate(0, 0) rotate(0deg) } }
@keyframes al-bubble1 { 0% { transform: translateY(0) scale(1); opacity: 0.6 } 100% { transform: translateY(-60px) scale(1.5); opacity: 0 } }
@keyframes al-bubble2 { 0% { transform: translateY(0) scale(0.8); opacity: 0.5 } 100% { transform: translateY(-80px) scale(1.2); opacity: 0 } }
@keyframes al-rain { 0% { background-position: 0 0 } 100% { background-position: 0 40px } }

/* Scene: ship-prayers */
.scn-ship-prayers {
  background: linear-gradient(180deg, #2a3a2a 0%, #1a2a1a 50%, #0a1a0a 100%), radial-gradient(ellipse at 50% 0%, #3a4a3a 0%, transparent 70%);
}
.scn-ship-prayers .interior-wall { position:absolute; inset:20% 8% 25% 8%; background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%); border-radius: 4%; box-shadow: inset 0 0 20px rgba(0,0,0,0.5); }
.scn-ship-prayers .floor-plank { position:absolute; bottom:20%; left:5%; right:5%; height:10%; background: linear-gradient(180deg, #2a1a0a 0%, #1a0a00 100%); border-radius: 2%; }
.scn-ship-prayers .lantern-glow { position:absolute; top:35%; left:50%; width:20px; height:30px; margin-left:-10px; background: radial-gradient(circle, #c8a060 0%, #8a6a40 100%); border-radius: 20% 20% 30% 30% / 30% 30% 40% 40%; box-shadow: 0 0 30px 10px rgba(200,160,96,0.5), 0 0 60px 20px rgba(200,160,96,0.2); animation: pr-lantern 3s ease-in-out infinite alternate; }
.scn-ship-prayers .figure-king { position:absolute; bottom:25%; left:30%; width:24px; height:40px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: pr-figure 4s ease-in-out infinite; }
.scn-ship-prayers .figure-prince { position:absolute; bottom:25%; left:55%; width:22px; height:38px; background: linear-gradient(180deg, #3a3a2a 0%, #1a2a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: pr-figure 4s ease-in-out infinite reverse; }
.scn-ship-prayers .prayer-shadow { position:absolute; bottom:20%; left:25%; right:25%; height:20px; background: radial-gradient(ellipse, rgba(0,0,0,0.5) 0%, transparent 100%); opacity: 0.4; }
.scn-ship-prayers .window-porthole { position:absolute; top:30%; right:15%; width:40px; height:40px; border: 4px solid #4a3a2a; border-radius: 50%; background: radial-gradient(circle, #3a4a5a 0%, #1a2a3a 100%); box-shadow: inset 0 0 10px rgba(0,0,0,0.6); animation: pr-window 8s ease-in-out infinite alternate; }
@keyframes pr-lantern { 0% { box-shadow: 0 0 20px 6px rgba(200,160,96,0.4), 0 0 40px 12px rgba(200,160,96,0.15); opacity: 0.8 } 50% { box-shadow: 0 0 40px 15px rgba(200,160,96,0.7), 0 0 70px 25px rgba(200,160,96,0.35); opacity: 1 } 100% { box-shadow: 0 0 25px 8px rgba(200,160,96,0.5), 0 0 50px 16px rgba(200,160,96,0.2); opacity: 0.9 } }
@keyframes pr-figure { 0% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(-3px) rotate(1deg) } 100% { transform: translateY(0) rotate(0deg) } }
@keyframes pr-window { 0% { background: radial-gradient(circle, #3a4a5a 0%, #1a2a3a 70%) } 50% { background: radial-gradient(circle, #3a4a5a 0%, #1a2a3a 90%) } 100% { background: radial-gradient(circle, #3a4a5a 0%, #1a2a3a 70%) } }

.scn-ship-dry-death {
  background: linear-gradient(180deg, #1a1c2e 0%, #2a2e44 30%, #141620 70%, #0a0c14 100%), radial-gradient(ellipse at 50% 40%, #3a3e5a 0%, transparent 60%);
}
.scn-ship-dry-death .sky-storm {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #2b2f44 0%, #181c2e 100%);
  animation: sdd-sky 8s ease-in-out infinite alternate;
}
.scn-ship-dry-death .sea-deep {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #1a2530 0%, #0f1820 100%);
  border-radius: 20% 30% 0 0 / 60% 50% 0 0;
  box-shadow: inset 0 -10px 30px rgba(0,0,0,0.6);
}
.scn-ship-dry-death .ship-hull {
  position: absolute; bottom: 28%; left: 35%; width: 120px; height: 40px;
  background: linear-gradient(135deg, #3a2e24 0%, #1e1610 50%, #2a201a 100%);
  border-radius: 30% 30% 50% 50% / 60% 60% 40% 40%;
  transform: rotate(-8deg);
  box-shadow: 0 4px 15px rgba(0,0,0,0.7);
  animation: sdd-hull 3s ease-in-out infinite alternate;
}
.scn-ship-dry-death .ship-mast {
  position: absolute; bottom: 45%; left: 48%; width: 6px; height: 70px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1e14 100%);
  border-radius: 2px;
  transform-origin: bottom center;
  animation: sdd-mast 2s ease-in-out infinite alternate;
}
.scn-ship-dry-death .ship-sail {
  position: absolute; bottom: 48%; left: 42%; width: 50px; height: 60px;
  background: linear-gradient(135deg, #c8c0b0 0%, #9a9080 50%, #706050 100%);
  clip-path: polygon(0% 0%, 100% 10%, 90% 90%, 10% 100%);
  opacity: 0.7;
  animation: sdd-sail 4s ease-in-out infinite alternate;
}
.scn-ship-dry-death .rain-1 {
  position: absolute; top: 0; left: 0; right: 0; bottom: 0;
  background: repeating-linear-gradient(45deg, rgba(180,200,255,0.08), rgba(180,200,255,0.08) 2px, transparent 2px, transparent 24px);
  animation: sdd-rain1 1.6s linear infinite;
}
.scn-ship-dry-death .rain-2 {
  position: absolute; top: 0; left: 0; right: 0; bottom: 0;
  background: repeating-linear-gradient(-30deg, rgba(160,180,240,0.05), rgba(160,180,240,0.05) 1px, transparent 1px, transparent 18px);
  animation: sdd-rain2 2.4s linear infinite;
  animation-delay: 0.4s;
}
.scn-ship-dry-death .wave-big {
  position: absolute; bottom: 20%; left: 10%; width: 200px; height: 50px;
  background: linear-gradient(180deg, #1a3040 0%, #0e1e2e 100%);
  border-radius: 50%;
  filter: blur(4px);
  animation: sdd-wavebig 6s ease-in-out infinite alternate;
}
.scn-ship-dry-death .wave-small {
  position: absolute; bottom: 22%; right: 10%; width: 160px; height: 30px;
  background: linear-gradient(180deg, #1c3244 0%, #102230 100%);
  border-radius: 50%;
  filter: blur(3px);
  animation: sdd-wavesmall 5s ease-in-out infinite alternate-reverse;
}
@keyframes sdd-sky { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.85; } }
@keyframes sdd-hull { 0% { transform: rotate(-8deg) translateY(0); } 50% { transform: rotate(-10deg) translateY(-3px); } 100% { transform: rotate(-6deg) translateY(0); } }
@keyframes sdd-mast { 0% { transform: rotate(-3deg); } 50% { transform: rotate(2deg); } 100% { transform: rotate(-2deg); } }
@keyframes sdd-sail { 0% { transform: scaleX(0.9) rotate(-2deg); } 50% { transform: scaleX(1.1) rotate(3deg); } 100% { transform: scaleX(0.95) rotate(0deg); } }
@keyframes sdd-rain1 { 0% { background-position: 0 0; } 100% { background-position: -24px 24px; } }
@keyframes sdd-rain2 { 0% { background-position: 0 0; } 100% { background-position: 18px -18px; } }
@keyframes sdd-wavebig { 0% { transform: translateX(0) scaleY(1); } 50% { transform: translateX(15px) scaleY(1.2); } 100% { transform: translateX(-10px) scaleY(0.9); } }
@keyframes sdd-wavesmall { 0% { transform: translateX(0) scaleY(1); } 50% { transform: translateX(-12px) scaleY(1.1); } 100% { transform: translateX(10px) scaleY(0.8); } }

.scn-prospero-cell-miranda {
  background: linear-gradient(180deg, #e8dcc8 0%, #d4c4a8 40%, #b8a080 100%), radial-gradient(ellipse at 70% 30%, #f5e8d0 0%, transparent 60%);
}
.scn-prospero-cell-miranda .cell-wall {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(135deg, #c8b8a0 0%, #a89078 100%);
  border-radius: 0 0 20% 20%;
  box-shadow: inset 0 -8px 20px rgba(0,0,0,0.2);
}
.scn-prospero-cell-miranda .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #9a8870 0%, #7a6850 100%);
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.3);
}
.scn-prospero-cell-miranda .window {
  position: absolute; top: 10%; left: 60%; width: 80px; height: 100px;
  background: radial-gradient(ellipse at 50% 50%, #f5e8d0 0%, #e0d0b8 60%, #b8a890 100%);
  border: 6px solid #6a5840;
  border-radius: 10% 10% 20% 20% / 10% 10% 30% 30%;
  box-shadow: inset 0 0 40px rgba(245,232,208,0.4);
  animation: pcm-window 6s ease-in-out infinite alternate;
}
.scn-prospero-cell-miranda .sunbeam {
  position: absolute; top: 10%; left: 60%; width: 60px; height: 70%;
  background: linear-gradient(180deg, rgba(245,232,208,0.4) 0%, rgba(245,232,208,0.1) 80%, transparent 100%);
  transform: skewX(-10deg);
  opacity: 0.6;
  animation: pcm-beam 4s ease-in-out infinite alternate;
}
.scn-prospero-cell-miranda .prospero-fig {
  position: absolute; bottom: 25%; left: 30%; width: 40px; height: 80px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2e24 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  transform: scale(1.2);
  box-shadow: 2px 0 8px rgba(0,0,0,0.3);
  animation: pcm-prospero 5s ease-in-out infinite alternate;
}
.scn-prospero-cell-miranda .miranda-fig {
  position: absolute; bottom: 23%; left: 50%; width: 35px; height: 70px;
  background: linear-gradient(180deg, #8a7a6a 0%, #5a4e40 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pcm-miranda 6s ease-in-out infinite alternate;
}
.scn-prospero-cell-miranda .staff {
  position: absolute; bottom: 28%; left: 25%; width: 5px; height: 90px;
  background: linear-gradient(180deg, #6a5a4a 0%, #3a2e22 100%);
  border-radius: 2px;
  transform: rotate(8deg);
  transform-origin: bottom center;
  animation: pcm-staff 4s ease-in-out infinite alternate;
}
.scn-prospero-cell-miranda .dust-motes {
  position: absolute; top: 15%; left: 50%; width: 100%; height: 100%;
  background: radial-gradient(circle at 70% 30%, rgba(220,200,170,0.15) 0%, transparent 50%);
  filter: blur(3px);
  animation: pcm-motes 12s ease-in-out infinite alternate;
}
@keyframes pcm-window { 0% { opacity: 0.8; box-shadow: inset 0 0 30px rgba(245,232,208,0.3); } 50% { opacity: 1; box-shadow: inset 0 0 60px rgba(245,232,208,0.5); } 100% { opacity: 0.9; box-shadow: inset 0 0 40px rgba(245,232,208,0.4); } }
@keyframes pcm-beam { 0% { opacity: 0.5; transform: skewX(-10deg) translateX(0); } 50% { opacity: 0.8; transform: skewX(-8deg) translateX(5px); } 100% { opacity: 0.6; transform: skewX(-12deg) translateX(-3px); } }
@keyframes pcm-prospero { 0% { transform: scale(1.2) rotate(0deg); } 50% { transform: scale(1.22) rotate(2deg); } 100% { transform: scale(1.18) rotate(-1deg); } }
@keyframes pcm-miranda { 0% { transform: rotate(-2deg) translateY(0); } 50% { transform: rotate(1deg) translateY(-2px); } 100% { transform: rotate(-1deg) translateY(0); } }
@keyframes pcm-staff { 0% { transform: rotate(8deg); } 50% { transform: rotate(10deg); } 100% { transform: rotate(6deg); } }
@keyframes pcm-motes { 0% { opacity: 0.3; } 50% { opacity: 0.7; } 100% { opacity: 0.4; } }

.scn-prospero-cell-prospero {
  background: linear-gradient(180deg, #c8b8a0 0%, #b0a088 40%, #9a8a72 100%), radial-gradient(ellipse at 50% 20%, #e0d0b8 0%, transparent 70%);
}
.scn-prospero-cell-prospero .cell-bg {
  position: absolute; inset: 0 0 20% 0;
  background: linear-gradient(135deg, #b0a088 0%, #9a8870 100%);
  border-radius: 0 0 30% 30%;
  box-shadow: inset 0 -10px 30px rgba(0,0,0,0.15);
}
.scn-prospero-cell-prospero .cell-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(180deg, #8a7a62 0%, #6a5848 100%);
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.2);
}
.scn-prospero-cell-prospero .bookshelf {
  position: absolute; top: 15%; left: 15%; width: 40px; height: 110px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2e22 100%);
  border-radius: 4px;
  box-shadow: 2px 0 10px rgba(0,0,0,0.2);
}
.scn-prospero-cell-prospero .prospero-seated {
  position: absolute; bottom: 28%; left: 45%; width: 45px; height: 70px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2e24 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pcp-seated 8s ease-in-out infinite alternate;
}
.scn-prospero-cell-prospero .book-open {
  position: absolute; bottom: 30%; left: 38%; width: 30px; height: 20px;
  background: linear-gradient(135deg, #a09078 0%, #807058 100%);
  border-radius: 2px 2px 8px 8px;
  transform: rotate(10deg);
  animation: pcp-book 6s ease-in-out infinite alternate;
}
.scn-prospero-cell-prospero .candle {
  position: absolute; top: 30%; right: 25%; width: 10px; height: 20px;
  background: linear-gradient(180deg, #e8d8b8 0%, #c8b090 100%);
  border-radius: 2px 2px 4px 4px;
  filter: drop-shadow(0 0 8px #d8b080);
}
.scn-prospero-cell-prospero .candle-glow {
  position: absolute; top: 28%; right: 22%; width: 30px; height: 30px;
  background: radial-gradient(circle, rgba(216,176,128,0.6) 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(6px);
  animation: pcp-glow 3s ease-in-out infinite alternate;
}
.scn-prospero-cell-prospero .warm-haze {
  position: absolute; top: 10%; left: 30%; width: 50%; height: 80%;
  background: radial-gradient(ellipse at 60% 40%, rgba(200,180,150,0.12) 0%, transparent 70%);
  filter: blur(8px);
  animation: pcp-haze 10s ease-in-out infinite alternate;
}
@keyframes pcp-seated { 0% { transform: rotate(0deg) translateY(0); } 50% { transform: rotate(-2deg) translateY(-1px); } 100% { transform: rotate(1deg) translateY(0); } }
@keyframes pcp-book { 0% { transform: rotate(10deg) translateX(0); } 50% { transform: rotate(12deg) translateX(2px); } 100% { transform: rotate(8deg) translateX(0); } }
@keyframes pcp-glow { 0% { opacity: 0.7; transform: scale(1); } 50% { opacity: 1; transform: scale(1.1); } 100% { opacity: 0.8; transform: scale(0.95); } }
@keyframes pcp-haze { 0% { opacity: 0.3; } 50% { opacity: 0.6; } 100% { opacity: 0.4; } }

.scn-prospero-cell-ariel {
  background: linear-gradient(180deg, #f0e0c8 0%, #d8c8b0 40%, #b8a888 100%), radial-gradient(ellipse at 70% 30%, #ffedc0 0%, transparent 60%);
}
.scn-prospero-cell-ariel .cell-back {
  position: absolute; inset: 0 0 15% 0;
  background: linear-gradient(135deg, #d0c0a8 0%, #b8a890 100%);
  border-radius: 0 0 20% 20%;
  box-shadow: inset 0 -6px 20px rgba(0,0,0,0.1);
}
.scn-prospero-cell-ariel .sunlight {
  position: absolute; top: 0; left: 30%; width: 50px; height: 100%;
  background: linear-gradient(180deg, rgba(255,237,192,0.5) 0%, rgba(255,237,192,0.1) 80%, transparent 100%);
  transform: skewX(-15deg);
  animation: pca-sun 5s ease-in-out infinite alternate;
}
.scn-prospero-cell-ariel .ariel-body {
  position: absolute; bottom: 30%; left: 40%; width: 30px; height: 60px;
  background: linear-gradient(180deg, #d8c8b0 0%, #a09078 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  animation: pca-body 4s ease-in-out infinite alternate;
}
.scn-prospero-cell-ariel .ariel-wings {
  position: absolute; bottom: 45%; left: 32%; width: 80px; height: 40px;
  background: linear-gradient(135deg, rgba(200,180,150,0.6) 0%, rgba(200,180,150,0.1) 100%);
  border-radius: 50% 50% 10% 10% / 80% 80% 20% 20%;
  filter: blur(2px);
  animation: pca-wings 3s ease-in-out infinite alternate;
}
.scn-prospero-cell-ariel .sparkle-1 {
  position: absolute; top: 20%; left: 50%; width: 8px; height: 8px;
  background: radial-gradient(circle, #ffe8b0 0%, transparent 70%);
  border-radius: 50%;
  animation: pca-spark1 2s ease-in-out infinite alternate;
}
.scn-prospero-cell-ariel .sparkle-2 {
  position: absolute; top: 35%; left: 60%; width: 6px; height: 6px;
  background: radial-gradient(circle, #ffe8b0 0%, transparent 70%);
  border-radius: 50%;
  animation: pca-spark2 2.5s ease-in-out infinite alternate;
}
.scn-prospero-cell-ariel .sparkle-3 {
  position: absolute; top: 25%; left: 70%; width: 5px; height: 5px;
  background: radial-gradient(circle, #ffe8b0 0%, transparent 70%);
  border-radius: 50%;
  animation: pca-spark3 3s ease-in-out infinite alternate;
}
.scn-prospero-cell-ariel .golden-dust {
  position: absolute; top: 10%; left: 20%; width: 60%; height: 60%;
  background: radial-gradient(ellipse at 50% 50%, rgba(255,232,176,0.08) 0%, transparent 60%);
  filter: blur(5px);
  animation: pca-dust 8s ease-in-out infinite alternate;
}
@keyframes pca-sun { 0% { opacity: 0.5; transform: skewX(-15deg); } 50% { opacity: 0.8; transform: skewX(-12deg); } 100% { opacity: 0.6; transform: skewX(-18deg); } }
@keyframes pca-body { 0% { transform: rotate(-3deg) translateY(0); } 50% { transform: rotate(2deg) translateY(-4px); } 100% { transform: rotate(-1deg) translateY(0); } }
@keyframes pca-wings { 0% { transform: scaleX(1) rotate(-5deg); } 50% { transform: scaleX(1.1) rotate(0deg); } 100% { transform: scaleX(0.95) rotate(5deg); } }
@keyframes pca-spark1 { 0% { opacity: 0.3; transform: scale(1); } 50% { opacity: 1; transform: scale(1.5); } 100% { opacity: 0.6; transform: scale(0.8); } }
@keyframes pca-spark2 { 0% { opacity: 0.2; transform: scale(0.8); } 50% { opacity: 0.9; transform: scale(1.3); } 100% { opacity: 0.5; transform: scale(1); } }
@keyframes pca-spark3 { 0% { opacity: 0.4; transform: scale(1.2); } 50% { opacity: 1; transform: scale(0.9); } 100% { opacity: 0.7; transform: scale(1.1); } }
@keyframes pca-dust { 0% { opacity: 0.2; } 50% { opacity: 0.6; } 100% { opacity: 0.3; } }

/* nobles-banter */
.scn-nobles-banter {
  background: linear-gradient(180deg, #87CEEB 0%, #f0e68c 60%, #fafad2 100%), radial-gradient(ellipse at 50% 0%, #fff0b0 0%, transparent 60%);
  overflow: hidden;
}
.scn-nobles-banter .sky {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, rgba(255,255,255,0.3) 0%, transparent 100%);
  animation: nb-sky 20s ease-in-out infinite alternate;
}
.scn-nobles-banter .sun {
  position: absolute; top: 8%; right: 15%; width: 80px; height: 80px;
  background: radial-gradient(circle, #ffd700 0%, #ffaa00 40%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 60px 30px rgba(255,215,0,0.3);
  animation: nb-sun 25s ease-in-out infinite alternate;
}
.scn-nobles-banter .palace-wall {
  position: absolute; bottom: 20%; left: 10%; right: 10%; height: 50%;
  background: linear-gradient(180deg, #b8860b 0%, #daa520 40%, #f0e68c 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: inset 0 -20px 40px rgba(0,0,0,0.3);
  animation: nb-wall 15s ease-in-out infinite alternate;
}
.scn-nobles-banter .king {
  position: absolute; bottom: 30%; left: 25%; width: 50px; height: 100px;
  background: linear-gradient(180deg, #800020 0%, #600018 100%); /* burgundy, not red */
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: nb-king 5s ease-in-out infinite;
}
.scn-nobles-banter .jester {
  position: absolute; bottom: 30%; left: 45%; width: 40px; height: 90px;
  background: linear-gradient(90deg, #00aa00 0%, #00cc00 50%, #ffaa00 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: nb-jester 4s ease-in-out infinite;
}
.scn-nobles-banter .pocket-island {
  position: absolute; bottom: 28%; right: 20%; width: 60px; height: 40px;
  background: radial-gradient(ellipse at 30% 40%, #228b22 0%, #006400 60%, transparent 80%);
  border-radius: 50% 50% 40% 40%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.2);
  animation: nb-island 6s ease-in-out infinite;
}
.scn-nobles-banter .clouds {
  position: absolute;
  background: rgba(255,255,255,0.6);
  filter: blur(8px);
  border-radius: 50%;
}
.scn-nobles-banter .cloud-a {
  width: 120px; height: 30px; top: 15%; left: 0%;
  animation: nb-cloud-a 45s linear infinite;
}
.scn-nobles-banter .cloud-b {
  width: 80px; height: 20px; top: 10%; right: 0%;
  animation: nb-cloud-b 55s linear infinite reverse;
}
@keyframes nb-sky { 0%{opacity:0.7} 50%{opacity:1} 100%{opacity:0.8} }
@keyframes nb-sun { 0%{transform:scale(0.9) translate(0,0)} 50%{transform:scale(1) translate(10px,-5px)} 100%{transform:scale(0.95) translate(-5px,0)} }
@keyframes nb-wall { 0%{transform:translateY(0)} 50%{transform:translateY(-4px)} 100%{transform:translateY(0)} }
@keyframes nb-king { 0%{transform:translateX(0) rotate(-2deg)} 25%{transform:translateX(8px) rotate(2deg)} 50%{transform:translateX(0) rotate(-2deg)} 75%{transform:translateX(-8px) rotate(2deg)} 100%{transform:translateX(0) rotate(0deg)} }
@keyframes nb-jester { 0%{transform:translateX(0) rotate(0deg)} 30%{transform:translateX(15px) rotate(5deg)} 60%{transform:translateX(-10px) rotate(-3deg)} 100%{transform:translateX(0) rotate(0deg)} }
@keyframes nb-island { 0%{transform:translateY(0) scale(1)} 50%{transform:translateY(-3px) scale(1.02)} 100%{transform:translateY(0) scale(1)} }
@keyframes nb-cloud-a { 0%{transform:translateX(-150px)} 100%{transform:translateX(110vw)} }
@keyframes nb-cloud-b { 0%{transform:translateX(110vw)} 100%{transform:translateX(-150px)} }

/* alonso-grief */
.scn-alonso-grief {
  background: linear-gradient(180deg, #1e3a5f 0%, #0b1a2a 50%, #05101a 100%),
              radial-gradient(ellipse at 50% 70%, #1a4a7a 0%, transparent 70%);
  overflow: hidden;
}
.scn-alonso-grief .sea-bg {
  position: absolute; top: 40%; inset: 40% 0 0 0;
  background: linear-gradient(180deg, #0d2840 0%, #05101a 100%);
  animation: ag-sea 15s ease-in-out infinite alternate;
}
.scn-alonso-grief .sky-al {
  position: absolute; inset: 0 0 60% 0;
  background: linear-gradient(180deg, rgba(255,255,255,0.05) 0%, transparent 100%);
  animation: ag-sky 20s ease-in-out infinite alternate;
}
.scn-alonso-grief .wave {
  position: absolute; bottom: 10%;
  background: linear-gradient(180deg, #2a5a7a 0%, #0d2840 100%);
  border-radius: 50%;
  animation: ag-wave 6s ease-in-out infinite;
}
.scn-alonso-grief .wave-far {
  height: 60px; width: 200%; left: -50%;
  animation-delay: 0s;
}
.scn-alonso-grief .wave-mid {
  height: 80px; width: 180%; left: -40%;
  animation-delay: 2s;
}
.scn-alonso-grief .wave-near {
  height: 100px; width: 140%; left: -20%;
  animation-delay: 4s;
}
.scn-alonso-grief .alonso-figure {
  position: absolute; bottom: 30%; left: 40%; width: 30px; height: 60px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a0a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ag-swim 3s ease-in-out infinite;
}
.scn-alonso-grief .foam {
  position: absolute; bottom: 35%; left: 30%; width: 40px; height: 20px;
  background: radial-gradient(ellipse, rgba(255,255,255,0.4) 0%, transparent 70%);
  filter: blur(4px);
  animation: ag-foam 2s ease-in-out infinite;
}
.scn-alonso-grief .surge {
  position: absolute; bottom: 20%; right: 15%; width: 80px; height: 40px;
  background: linear-gradient(90deg, transparent 0%, rgba(200,230,255,0.3) 50%, transparent 100%);
  filter: blur(6px);
  animation: ag-surge 4s ease-in-out infinite;
}
@keyframes ag-sea { 0%{opacity:0.8} 50%{opacity:1} 100%{opacity:0.9} }
@keyframes ag-sky { 0%{transform:translateY(0)} 50%{transform:translateY(-2px)} 100%{transform:translateY(2px)} }
@keyframes ag-wave { 0%{transform:translateY(0) scaleX(1)} 25%{transform:translateY(-8px) scaleX(1.02)} 50%{transform:translateY(0) scaleX(1)} 75%{transform:translateY(6px) scaleX(0.98)} 100%{transform:translateY(0) scaleX(1)} }
@keyframes ag-swim { 0%{transform:translate(0,0) rotate(-10deg)} 25%{transform:translate(6px,-4px) rotate(5deg)} 50%{transform:translate(0,0) rotate(10deg)} 75%{transform:translate(-6px,-2px) rotate(-5deg)} 100%{transform:translate(0,0) rotate(-10deg)} }
@keyframes ag-foam { 0%{opacity:0.3;transform:scale(1)} 50%{opacity:0.8;transform:scale(1.2)} 100%{opacity:0.3;transform:scale(1)} }
@keyframes ag-surge { 0%{transform:translateX(0) scaleY(1)} 50%{transform:translateX(-20px) scaleY(0.5)} 100%{transform:translateX(0) scaleY(1)} }

/* gonzalo-commonwealth */
.scn-gonzalo-commonwealth {
  background: linear-gradient(180deg, #87CEEB 0%, #98D8A0 40%, #6B8E23 100%),
              radial-gradient(ellipse at 50% 80%, #7CCD7C 0%, transparent 70%);
  overflow: hidden;
}
.scn-gonzalo-commonwealth .ground {
  position: absolute; top: 65%; inset: 65% 0 0 0;
  background: linear-gradient(180deg, #6B8E23 0%, #3A5F0B 100%);
  border-radius: 30% 70% 0 0 / 40% 60% 0 0;
  animation: gc-ground 20s ease-in-out infinite alternate;
}
.scn-gonzalo-commonwealth .sky-gc {
  position: absolute;
  background: linear-gradient(180deg, rgba(255,255,255,0.2) 0%, transparent 100%);
  animation: gc-sky 25s ease-in-out infinite alternate; left: 0%; top: 0%; width: 100%; height: 35%;}
.scn-gonzalo-commonwealth .gonzalo {
  position: absolute; bottom: 25%; left: 25%; width: 45px; height: 90px;
  background: linear-gradient(180deg, #4A3B32 0%, #2A1F1A 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: gc-gonzalo 8s ease-in-out infinite;
}
.scn-gonzalo-commonwealth .plow {
  position: absolute; bottom: 28%; left: 40%; width: 70px; height: 20px;
  background: linear-gradient(90deg, #5C4033 0%, #3A2A1A 100%);
  border-radius: 10px;
  transform: rotate(10deg);
  animation: gc-plow 6s ease-in-out infinite;
}
.scn-gonzalo-commonwealth .nettle {
  position: absolute; bottom: 35%; left: 50%; width: 14px; height: 40px;
  background: linear-gradient(180deg, #3A5F0B 0%, #1A2F03 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  animation: gc-nettle 4s ease-in-out infinite;
}
.scn-gonzalo-commonwealth .dock {
  position: absolute; bottom: 38%; left: 60%; width: 18px; height: 50px;
  background: linear-gradient(180deg, #5A8F3A 0%, #2A5F1A 100%);
  border-radius: 30% 30% 40% 40% / 50% 50% 40% 40%;
  animation: gc-dock 5s ease-in-out infinite;
}
.scn-gonzalo-commonwealth .mallow {
  position: absolute; bottom: 40%; left: 70%; width: 24px; height: 30px;
  background: radial-gradient(ellipse at 50% 30%, #7B68EE 0%, #4A3F8A 100%);
  border-radius: 50%;
  box-shadow: 0 0 8px rgba(123,104,238,0.3);
  animation: gc-mallow 7s ease-in-out infinite;
}
.scn-gonzalo-commonwealth .wine-bottle {
  position: absolute; bottom: 22%; left: 15%; width: 20px; height: 50px;
  background: linear-gradient(180deg, #8B4513 0%, #5C3317 100%);
  border-radius: 30% 30% 20% 20%;
  transform: rotate(-15deg);
  animation: gc-bottle 10s ease-in-out infinite;
}
.scn-gonzalo-commonwealth .crown {
  position: absolute;
  background: linear-gradient(90deg, #DAA520 0%, #FFD700 50%, #DAA520 100%);
  clip-path: polygon(0% 100%, 20% 0%, 40% 40%, 60% 0%, 80% 40%, 100% 0%, 100% 100%);
  animation: gc-crown 3s ease-in-out infinite; left: 30%; top: 41.67%; width: 7.5%; height: 6.67%;}
@keyframes gc-ground { 0%{transform:translateY(0)} 50%{transform:translateY(-2px)} 100%{transform:translateY(0)} }
@keyframes gc-sky { 0%{opacity:0.8} 50%{opacity:1} 100%{opacity:0.7} }
@keyframes gc-gonzalo { 0%{transform:translateX(0) rotate(0deg)} 25%{transform:translateX(10px) rotate(3deg)} 50%{transform:translateX(0) rotate(0deg)} 75%{transform:translateX(-10px) rotate(-3deg)} 100%{transform:translateX(0) rotate(0deg)} }
@keyframes gc-plow { 0%{transform:rotate(10deg) translateX(0)} 50%{transform:rotate(5deg) translateX(5px)} 100%{transform:rotate(10deg) translateX(0)} }
@keyframes gc-nettle { 0%{transform:scaleY(1)} 50%{transform:scaleY(1.1)} 100%{transform:scaleY(1)} }
@keyframes gc-dock { 0%{transform:rotate(0deg)} 50%{transform:rotate(5deg)} 100%{transform:rotate(0deg)} }
@keyframes gc-mallow { 0%{opacity:0.7} 50%{opacity:1} 100%{opacity:0.7} }
@keyframes gc-bottle { 0%{transform:rotate(-15deg) translateY(0)} 50%{transform:rotate(-20deg) translateY(-3px)} 100%{transform:rotate(-15deg) translateY(0)} }
@keyframes gc-crown { 0%{transform:translateY(0) scale(1)} 50%{transform:translateY(-2px) scale(1.05)} 100%{transform:translateY(0) scale(1)} }

/* ariel-sleep-music */

.scn-ariel-sleep-music {
  background: linear-gradient(180deg, #1a1a3e 0%, #2c2c5e 40%, #3a3a6e 100%),
              radial-gradient(ellipse at 50% 20%, #4a4a8e 0%, transparent 60%);
  overflow: hidden;
}
.scn-ariel-sleep-music .night-bg {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(255,255,255,0.03) 0%, transparent 100%);
  animation: as-night 30s ease-in-out infinite alternate;
}
.scn-ariel-sleep-music .moon-as {
  position: absolute; top: 10%; left: 60%; width: 80px; height: 80px;
  background: radial-gradient(circle, #E0E0FF 0%, #C0C0E0 40%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 40px 20px rgba(200,200,255,0.2);
  animation: as-moon 40s ease-in-out infinite alternate;
}
.scn-ariel-sleep-music .ariel-silhouette {
  position: absolute; bottom: 20%; left: 35%; width: 40px; height: 80px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: as-ariel 6s ease-in-out infinite;
}
.scn-ariel-sleep-music .harp {
  position: absolute; bottom: 25%; left: 30%; width: 30px; height: 70px;
  background: linear-gradient(90deg, #DAA520 0%, #B8860B 100%);
  border-radius: 10% 10% 30% 30%;
  transform: rotate(-10deg);
  animation: as-harp 5s ease-in-out infinite;
}
.scn-ariel-sleep-music .sleeping-figure {
  position: absolute; bottom: 15%; left: 55%; width: 50px; height: 40px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  animation: as-sleep 9s ease-in-out infinite;
}
.scn-ariel-sleep-music .sparkle {
  position: absolute;
  width: 6px; height: 6px;
  background: radial-gradient(circle, #FFD700 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(1px);
}
.scn-ariel-sleep-music .sparkle-1 {
  top: 30%; left: 20%;
  animation: as-sparkle 3s ease-in-out infinite;
}
.scn-ariel-sleep-music .sparkle-2 {
  top: 50%; left: 70%;
  animation: as-sparkle 4s ease-in-out infinite 1.5s;
}
.scn-ariel-sleep-music .music-note {
  position: absolute; bottom: 35%; left: 45%; width: 12px; height: 18px;
  background: radial-gradient(ellipse at 50% 30%, #E0E0FF 0%, #A0A0C0 100%);
  border-radius: 50% 50% 10% 10%;
  filter: blur(2px);
  animation: as-note 2s ease-in-out infinite;
}
@keyframes as-night { 0%{opacity:0.8} 50%{opacity:1} 100%{opacity:0.7} }
@keyframes as-moon { 0%{transform:translate(0,0) scale(0.95)} 50%{transform:translate(10px,-5px) scale(1)} 100%{transform:translate(-5px,5px) scale(0.95)} }
@keyframes as-ariel { 0%{transform:translateX(0) rotate(-5deg)} 25%{transform:translateX(8px) rotate(0deg)} 50%{transform:translateX(0) rotate(5deg)} 75%{transform:translateX(-8px) rotate(0deg)} 100%{transform:translateX(0) rotate(-5deg)} }
@keyframes as-harp { 0%{transform:rotate(-10deg) scale(1)} 50%{transform:rotate(-5deg) scale(1.02)} 100%{transform:rotate(-10deg) scale(1)} }
@keyframes as-sleep { 0%{transform:translateY(0) scale(1)} 50%{transform:translateY(-2px) scale(1.03)} 100%{transform:translateY(0) scale(1)} }
@keyframes as-sparkle { 0%{opacity:0;transform:scale(0.5)} 50%{opacity:1;transform:scale(1.5)} 100%{opacity:0;transform:scale(0.5)} }
@keyframes as-note { 0%{transform:translate(0,0) rotate(0deg)} 25%{transform:translate(5px,-10px) rotate(10deg)} 50%{transform:translate(0,-20px) rotate(0deg)} 75%{transform:translate(-5px,-10px) rotate(-10deg)} 100%{transform:translate(0,0) rotate(0deg)} }

.scn-blessing-couple {
  background: linear-gradient(180deg, #2a1a0a 0%, #3d2a14 30%, #1a0e00 100%),
              radial-gradient(ellipse at 60% 50%, #c08040 0%, transparent 60%);
}
.scn-blessing-couple .bc-wall {
  position: absolute; inset: 0 0 20% 0;
  background: linear-gradient(90deg, #2a1a0a 0%, #3d2a14 40%, #2a1a0a 100%);
  animation: bc-wall 12s ease-in-out infinite alternate;
}
.scn-blessing-couple .bc-window {
  position: absolute; top: 12%; left: 35%; width: 30%; height: 35%;
  background: radial-gradient(ellipse at 50% 50%, #ffd080 0%, #b07030 60%, transparent 100%);
  border-radius: 2% 2% 4% 4%;
  box-shadow: inset 0 0 20px rgba(255,200,100,.6);
  animation: bc-window 8s ease-in-out infinite alternate;
}
.scn-blessing-couple .bc-figure-left {
  position: absolute; bottom: 22%; left: 30%; width: 40px; height: 60px;
  background: linear-gradient(180deg, #1a0e00 0%, #0a0500 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bc-figure 6s ease-in-out infinite alternate;
}
.scn-blessing-couple .bc-figure-right {
  position: absolute; bottom: 22%; right: 30%; width: 40px; height: 60px;
  background: linear-gradient(180deg, #1a0e00 0%, #0a0500 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bc-figure 7s ease-in-out infinite alternate-reverse;
}
.scn-blessing-couple .bc-candle {
  position: absolute; bottom: 28%; left: 50%; width: 6px; height: 25px;
  background: linear-gradient(180deg, #b08040 0%, #806030 60%, #3d2a14 100%);
  border-radius: 40%;
  box-shadow: 0 0 12px 4px #ffc070;
  animation: bc-candle 2s ease-in-out infinite alternate;
}
.scn-blessing-couple .bc-lightray {
  position: absolute; top: 30%; left: 45%; width: 10%; height: 40%;
  background: linear-gradient(180deg, rgba(255,200,100,.15) 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(8px);
  animation: bc-ray 5s ease-in-out infinite alternate;
}
.scn-blessing-couple .bc-sparkle {
  position: absolute; top: 20%; left: 48%; width: 4px; height: 4px;
  background: #ffd080;
  border-radius: 50%;
  box-shadow: 0 0 8px 2px rgba(255,208,128,.5);
  animation: bc-sparkle 3s ease-in-out infinite;
}
@keyframes bc-wall { 0% { opacity: .9 } 50% { opacity: 1 } 100% { opacity: .85 } }
@keyframes bc-window { 0% { opacity: .7; transform: scale(1) } 50% { opacity: 1; transform: scale(1.05) } 100% { opacity: .8; transform: scale(.98) } }
@keyframes bc-figure { 0% { transform: translateX(0) } 50% { transform: translateX(3px) rotate(2deg) } 100% { transform: translateX(-2px) rotate(-1deg) } }
@keyframes bc-candle { 0% { transform: scaleY(1) scaleX(1); opacity: .8 } 50% { transform: scaleY(1.2) scaleX(.9); opacity: 1 } 100% { transform: scaleY(.95) scaleX(1.05); opacity: .9 } }
@keyframes bc-ray { 0% { transform: scaleX(1) translateX(0); opacity: .6 } 50% { transform: scaleX(1.3) translateX(5px); opacity: .9 } 100% { transform: scaleX(.9) translateX(-3px); opacity: .5 } }
@keyframes bc-sparkle { 0%,100% { opacity: 0; transform: translateY(0) } 30% { opacity: 1; transform: translateY(-10px) } 60% { opacity: .8; transform: translateY(-5px) } 80% { opacity: 0; transform: translateY(-15px) } }

.scn-blessing-fernando {
  background: linear-gradient(180deg, #1e1408 0%, #2a1a0a 40%, #0e0800 100%),
              radial-gradient(ellipse at 50% 30%, #c88040 0%, transparent 60%);
}
.scn-blessing-fernando .bf-wall {
  position: absolute; inset: 0 0 15% 0;
  background: linear-gradient(90deg, #2a1a0a 0%, #3d2a14 50%, #2a1a0a 100%);
}
.scn-blessing-fernando .bf-window {
  position: absolute; top: 10%; left: 40%; width: 20%; height: 30%;
  background: radial-gradient(ellipse at 50% 50%, #ffc070 0%, #b07030 70%, transparent 100%);
  border-radius: 2% 2% 4% 4%;
  box-shadow: inset 0 0 15px rgba(255,200,100,.4);
  animation: bf-window 10s ease-in-out infinite alternate;
}
.scn-blessing-fernando .bf-figure {
  position: absolute; bottom: 20%; left: 50%; transform: translateX(-50%); width: 40px; height: 65px;
  background: linear-gradient(180deg, #1a0e00 0%, #0a0500 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bf-figure 8s ease-in-out infinite alternate;
}
.scn-blessing-fernando .bf-halo {
  position: absolute; top: 25%; left: 45%; width: 10%; height: 10%;
  background: radial-gradient(circle, rgba(255,200,100,.2) 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(10px);
  animation: bf-halo 6s ease-in-out infinite alternate;
}
.scn-blessing-fernando .bf-shadow {
  position: absolute; bottom: 12%; left: 40%; width: 20%; height: 5px;
  background: linear-gradient(90deg, rgba(0,0,0,.3) 0%, rgba(0,0,0,.6) 50%, rgba(0,0,0,.3) 100%);
  border-radius: 50%;
  filter: blur(3px);
  animation: bf-shadow 8s ease-in-out infinite alternate;
}
.scn-blessing-fernando .bf-dust {
  position: absolute; top: 15%; left: 30%; width: 3px; height: 3px;
  background: #ffd080;
  border-radius: 50%;
  box-shadow: 0 0 6px 2px rgba(255,208,128,.3);
  animation: bf-dust 15s linear infinite;
}
@keyframes bf-window { 0% { opacity: .6; transform: scale(1) } 50% { opacity: .9; transform: scale(1.05) } 100% { opacity: .7; transform: scale(.98) } }
@keyframes bf-figure { 0% { transform: translateX(-50%) rotate(0) } 50% { transform: translateX(-50%) translateY(-2px) rotate(2deg) } 100% { transform: translateX(-50%) translateY(1px) rotate(-1deg) } }
@keyframes bf-halo { 0% { opacity: .5; transform: scale(.8) } 50% { opacity: 1; transform: scale(1.2) } 100% { opacity: .6; transform: scale(.9) } }
@keyframes bf-shadow { 0% { transform: scaleX(1); opacity: .7 } 50% { transform: scaleX(1.2); opacity: 1 } 100% { transform: scaleX(.9); opacity: .6 } }
@keyframes bf-dust { 0% { transform: translate(0,0); opacity: 0 } 20% { opacity: 1 } 80% { opacity: 1 } 100% { transform: translate(50px, -30px); opacity: 0 } }

.scn-blessing-acknowledgment {
  background: linear-gradient(180deg, #1a0e00 0%, #2a1a06 35%, #0e0800 100%),
              radial-gradient(ellipse at 50% 60%, #b08030 0%, transparent 70%);
}
.scn-blessing-acknowledgment .ba-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #3d2a14 0%, #1a0e00 100%);
  border-radius: 0 0 20% 20% / 0 0 50% 50%;
}
.scn-blessing-acknowledgment .ba-wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(90deg, #3d2a14 0%, #2a1a0a 50%, #3d2a14 100%);
  animation: ba-wall 14s ease-in-out infinite alternate;
}
.scn-blessing-acknowledgment .ba-kneeling {
  position: absolute; bottom: 28%; left: 40%; width: 35px; height: 40px;
  background: linear-gradient(180deg, #1a0e00 0%, #0a0500 100%);
  border-radius: 50% 50% 40% 40% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: ba-kneel 6s ease-in-out infinite alternate;
}
.scn-blessing-acknowledgment .ba-standing {
  position: absolute; bottom: 30%; left: 55%; width: 40px; height: 65px;
  background: linear-gradient(180deg, #1a0e00 0%, #0a0500 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ba-stand 7s ease-in-out infinite alternate;
}
.scn-blessing-acknowledgment .ba-candle {
  position: absolute; bottom: 35%; left: 50%; width: 5px; height: 20px;
  background: linear-gradient(180deg, #c08040 0%, #806030 50%, #3d2a14 100%);
  border-radius: 40%;
  box-shadow: 0 0 15px 5px #ffc070;
  animation: ba-candle 2s ease-in-out infinite alternate;
}
.scn-blessing-acknowledgment .ba-lightpool {
  position: absolute; bottom: 10%; left: 30%; width: 40%; height: 20%;
  background: radial-gradient(ellipse at 50% 0%, rgba(255,200,100,.15) 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(10px);
  animation: ba-pool 8s ease-in-out infinite alternate;
}
.scn-blessing-acknowledgment .ba-curtain {
  position: absolute; top: 0; left: 5%; width: 15%; height: 100%;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 0 20% 20% 0 / 0 10% 10% 0;
  box-shadow: inset -5px 0 10px rgba(0,0,0,.5);
  animation: ba-curtain 20s ease-in-out infinite alternate;
}
@keyframes ba-wall { 0% { opacity: .85 } 50% { opacity: 1 } 100% { opacity: .9 } }
@keyframes ba-kneel { 0% { transform: translateX(0) rotate(0) } 50% { transform: translateX(2px) rotate(-3deg) } 100% { transform: translateX(-1px) rotate(2deg) } }
@keyframes ba-stand { 0% { transform: translateX(0) rotate(0) } 50% { transform: translateX(-2px) rotate(2deg) } 100% { transform: translateX(1px) rotate(-1deg) } }
@keyframes ba-candle { 0% { transform: scaleY(1) scaleX(1); opacity: .8 } 50% { transform: scaleY(1.15) scaleX(.9); opacity: 1 } 100% { transform: scaleY(.95) scaleX(1.05); opacity: .9 } }
@keyframes ba-pool { 0% { opacity: .5; transform: scaleX(1) } 50% { opacity: .8; transform: scaleX(1.2) } 100% { opacity: .6; transform: scaleX(.9) } }
@keyframes ba-curtain { 0% { transform: translateX(0) } 50% { transform: translateX(-3px) } 100% { transform: translateX(2px) } }

.scn-rejoicing-gonzalo {
  background: linear-gradient(180deg, #2a1a0a 0%, #3d2a14 30%, #1a0e00 100%),
              radial-gradient(ellipse at 40% 50%, #c88040 0%, transparent 70%),
              radial-gradient(ellipse at 60% 60%, #b07030 0%, transparent 50%);
}
.scn-rejoicing-gonzalo .rg-bg {
  position: absolute; inset: 0 0 15% 0;
  background: linear-gradient(90deg, #3d2a14 0%, #2a1a0a 50%, #3d2a14 100%);
}
.scn-rejoicing-gonzalo .rg-fireplace {
  position: absolute; bottom: 20%; left: 50%; transform: translateX(-50%); width: 20%; height: 30%;
  background: linear-gradient(180deg, #5a3a1a 0%, #2a1a0a 100%);
  border-radius: 10% 10% 2% 2%;
  box-shadow: inset 0 -10px 20px rgba(0,0,0,.4);
}
.scn-rejoicing-gonzalo .rg-figure-one {
  position: absolute; bottom: 28%; left: 20%; width: 35px; height: 55px;
  background: linear-gradient(180deg, #1a0e00 0%, #0a0500 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: rg-fig 6s ease-in-out infinite alternate;
}
.scn-rejoicing-gonzalo .rg-figure-two {
  position: absolute; bottom: 28%; left: 45%; width: 35px; height: 55px;
  background: linear-gradient(180deg, #1a0e00 0%, #0a0500 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: rg-fig 7s ease-in-out infinite alternate-reverse;
}
.scn-rejoicing-gonzalo .rg-figure-three {
  position: absolute; bottom: 28%; right: 20%; width: 35px; height: 55px;
  background: linear-gradient(180deg, #1a0e00 0%, #0a0500 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: rg-fig 8s ease-in-out infinite alternate;
}
.scn-rejoicing-gonzalo .rg-glow {
  position: absolute; bottom: 35%; left: 50%; transform: translateX(-50%); width: 30%; height: 20%;
  background: radial-gradient(ellipse at 50% 0%, rgba(255,200,100,.25) 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(15px);
  animation: rg-glow 5s ease-in-out infinite alternate;
}
.scn-rejoicing-gonzalo .rg-beam {
  position: absolute; top: 10%; left: 30%; width: 40%; height: 50%;
  background: linear-gradient(180deg, rgba(255,200,100,.08) 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(20px);
  animation: rg-beam 12s ease-in-out infinite alternate;
}
.scn-rejoicing-gonzalo .rg-confetti {
  position: absolute; top: 5%; left: 20%; width: 5px; height: 5px;
  background: #d08050;
  border-radius: 50%;
  box-shadow: 20px 10px 0 #c07040, 40px -5px 0 #b06030, 60px 15px 0 #d08050, 80px 0 0 #c07040;
  animation: rg-confetti 10s linear infinite;
}
@keyframes rg-fig { 0% { transform: translateY(0) rotate(0) } 50% { transform: translateY(-3px) rotate(2deg) } 100% { transform: translateY(1px) rotate(-2deg) } }
@keyframes rg-glow { 0% { opacity: .6; transform: translateX(-50%) scale(1) } 50% { opacity: 1; transform: translateX(-50%) scale(1.1) } 100% { opacity: .7; transform: translateX(-50%) scale(.9) } }
@keyframes rg-beam { 0% { transform: scaleY(1); opacity: .3 } 50% { transform: scaleY(1.2); opacity: .6 } 100% { transform: scaleY(.8); opacity: .2 } }
@keyframes rg-confetti { 0% { transform: translate(0,0) rotate(0); opacity: 0 } 10% { opacity: 1 } 90% { opacity: .8 } 100% { transform: translate(20px, 80px) rotate(360deg); opacity: 0 } }

/* Scene 1: prospero-tests-ferdinand */
.scn-prospero-tests-ferdinand {
  background: linear-gradient(180deg, #2a1f1a 0%, #4a3520 40%, #7a5a30 100%), radial-gradient(ellipse at 50% 30%, #8a6a40 0%, transparent 60%);
}
.scn-prospero-tests-ferdinand .cave-back {
  position: absolute; inset: 0; background: radial-gradient(ellipse at 50% 60%, #1a120e 0%, #3a2518 80%); opacity: 0.8; animation: si-cavepulse 12s ease-in-out infinite alternate;
}
.scn-prospero-tests-ferdinand .cave-mouth {
  position: absolute; bottom: 10%; left: 10%; right: 10%; height: 60%; background: #1a120e; border-radius: 35% 35% 0 0 / 30% 30% 0 0; box-shadow: inset 0 10px 40px rgba(0,0,0,0.5); animation: si-caveshape 16s ease-in-out infinite alternate;
}
.scn-prospero-tests-ferdinand .sun-ray {
  position: absolute; top: 0; left: 35%; width: 30%; height: 80%; background: linear-gradient(135deg, rgba(255,220,150,0.4) 0%, rgba(255,220,150,0.05) 100%); clip-path: polygon(20% 0, 80% 0, 60% 100%, 40% 100%); animation: si-sunray 8s ease-in-out infinite alternate;
}
.scn-prospero-tests-ferdinand .prospero {
  position: absolute; bottom: 20%; left: 30%; width: 40px; height: 70px; background: linear-gradient(180deg, #4a3520 0%, #2a1f1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: si-figure 6s ease-in-out infinite;
}
.scn-prospero-tests-ferdinand .ferdinand {
  position: absolute; bottom: 18%; left: 52%; width: 36px; height: 66px; background: linear-gradient(180deg, #5a4530 0%, #3a2a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: si-figure 7s ease-in-out infinite 2s;
}
.scn-prospero-tests-ferdinand .miranda {
  position: absolute; bottom: 22%; left: 42%; width: 30px; height: 56px; background: linear-gradient(180deg, #6e5540 0%, #4a3520 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: si-figure 6s ease-in-out infinite 4s;
}
.scn-prospero-tests-ferdinand .dust-a, .dust-b, .dust-c {
  position: absolute; width: 4px; height: 4px; background: rgba(255,200,120,0.4); border-radius: 50%; filter: blur(1px);
}
.scn-prospero-tests-ferdinand .dust-a { top: 30%; left: 20%; animation: si-dust 14s linear infinite; }
.scn-prospero-tests-ferdinand .dust-b { top: 45%; left: 60%; width: 3px; height: 3px; animation: si-dust 18s linear infinite 5s; }
.scn-prospero-tests-ferdinand .dust-c { top: 35%; left: 45%; width: 5px; height: 5px; animation: si-dust 22s linear infinite 9s; }

@keyframes si-cavepulse { 0% { opacity: 0.7; } 50% { opacity: 0.9; } 100% { opacity: 0.75; } }
@keyframes si-caveshape { 0% { border-radius: 35% 35% 0 0 / 30% 30% 0 0; } 50% { border-radius: 38% 32% 0 0 / 33% 27% 0 0; } 100% { border-radius: 33% 37% 0 0 / 28% 32% 0 0; } }
@keyframes si-sunray { 0% { opacity: 0.3; transform: rotate(-1deg) scaleX(1); } 50% { opacity: 0.6; transform: rotate(0deg) scaleX(1.05); } 100% { opacity: 0.35; transform: rotate(1deg) scaleX(0.95); } }
@keyframes si-figure { 0% { transform: translateY(0) rotate(-1deg); } 50% { transform: translateY(-3px) rotate(1deg); } 100% { transform: translateY(0) rotate(-1deg); } }
@keyframes si-dust { 0% { transform: translate(0,0) scale(1); opacity: 0; } 10% { opacity: 0.6; } 50% { transform: translate(30px, -20px) scale(1.5); } 90% { opacity: 0.6; } 100% { transform: translate(60px, -40px) scale(0.8); opacity: 0; } }

/* Scene 2: ferdinand-vows */
.scn-ferdinand-vows {
  background: linear-gradient(180deg, #5786a0 0%, #8ab0c0 40%, #c0d8e0 100%), radial-gradient(ellipse at 30% 20%, #ffe0a0 0%, transparent 50%);
}
.scn-ferdinand-vows .sky {
  position: absolute; inset: 0; background: linear-gradient(180deg, #7aad d0 0%, #b0d0e0 60%, transparent 100%); animation: fv-skydrift 12s ease-in-out infinite alternate;
}
.scn-ferdinand-vows .garden-wall {
  position: absolute; bottom: 20%; left: 5%; right: 5%; height: 40%; background: linear-gradient(180deg, #a89070 0%, #7a6030 100%); border-radius: 20% 20% 0 0 / 10% 10% 0 0; box-shadow: inset 0 6px 20px rgba(0,0,0,0.3); animation: fv-wall 18s ease-in-out infinite alternate;
}
.scn-ferdinand-vows .column-left {
  position: absolute; bottom: 20%; left: 20%; width: 12px; height: 60%; background: linear-gradient(180deg, #d0c0a0 0%, #b0a080 100%); border-radius: 6px 6px 0 0; box-shadow: 4px 0 8px rgba(0,0,0,0.2); animation: fv-column 7s ease-in-out infinite;
}
.scn-ferdinand-vows .column-right {
  position: absolute; bottom: 20%; right: 20%; width: 12px; height: 60%; background: linear-gradient(180deg, #d0c0a0 0%, #b0a080 100%); border-radius: 6px 6px 0 0; box-shadow: -4px 0 8px rgba(0,0,0,0.2); animation: fv-column 7s ease-in-out infinite 3s;
}
.scn-ferdinand-vows .ferdinand-vow {
  position: absolute; bottom: 25%; left: 45%; width: 32px; height: 60px; background: linear-gradient(180deg, #5a4530 0%, #3a2a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: fv-bow 8s ease-in-out infinite;
}
.scn-ferdinand-vows .miranda-vow {
  position: absolute; bottom: 27%; left: 55%; width: 28px; height: 50px; background: linear-gradient(180deg, #6e5540 0%, #4a3520 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: fv-bow 8s ease-in-out infinite 4s;
}
.scn-ferdinand-vows .flower-pot {
  position: absolute; bottom: 22%; left: 32%; width: 16px; height: 20px; background: #a07750; border-radius: 4px 4px 6px 6px; animation: fv-pots 14s ease-in-out infinite;
}
.scn-ferdinand-vows .vine {
  position: absolute; bottom: 30%; left: 35%; width: 6px; height: 0; background: #6a8a50; border-radius: 0 0 4px 4px; animation: fv-vine 20s ease-in-out infinite alternate;
}

@keyframes fv-skydrift { 0% { opacity:0.8; } 50% { opacity:1; transform:scale(1.02); } 100% { opacity:0.85; } }
@keyframes fv-wall { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes fv-column { 0% { transform: translateY(0) scaleY(1); } 50% { transform: translateY(-4px) scaleY(1.05); } 100% { transform: translateY(0) scaleY(1); } }
@keyframes fv-bow { 0% { transform: translateY(0) rotate(2deg); } 25% { transform: translateY(-2px) rotate(0deg); } 50% { transform: translateY(0) rotate(-2deg); } 75% { transform: translateY(-1px) rotate(0deg); } 100% { transform: translateY(0) rotate(2deg); } }
@keyframes fv-pots { 0% { transform: scale(1); } 50% { transform: scale(1.03) rotate(2deg); } 100% { transform: scale(1); } }
@keyframes fv-vine { 0% { height: 0; opacity: 0.5; } 50% { height: 40px; opacity: 1; } 100% { height: 30px; opacity: 0.7; } }

/* Scene 3: ariel-summoned */
.scn-ariel-summoned {
  background: linear-gradient(180deg, #1a1a2e 0%, #2a2438 40%, #3a2e4e 100%), radial-gradient(ellipse at 50% 30%, #6a4a8a 0%, transparent 70%);
}
.scn-ariel-summoned .bg-void {
  position: absolute; inset: 0; background: radial-gradient(circle at 30% 40%, #1e1a30, #0e0a1a 80%); animation: ar-void 20s ease-in-out infinite alternate;
}
.scn-ariel-summoned .prospero-staff {
  position: absolute; bottom: 20%; left: 20%; width: 10px; height: 80px; background: linear-gradient(180deg, #8a6a40 0%, #4a3520 100%); border-radius: 5px; transform: rotate(15deg); transform-origin: bottom center; box-shadow: 0 0 12px 2px rgba(200,160,80,0.3); animation: ar-staff 8s ease-in-out infinite;
}
.scn-ariel-summoned .ariel-form {
  position: absolute; bottom: 40%; left: 45%; width: 30px; height: 50px; background: linear-gradient(135deg, rgba(200,220,255,0.6) 0%, rgba(100,150,255,0.3) 100%); border-radius: 60% 40% 40% 60% / 50% 50% 50% 50%; filter: blur(2px); box-shadow: 0 0 40px 10px rgba(150,180,255,0.3); animation: ar-float 6s ease-in-out infinite alternate;
}
.scn-ariel-summoned .sparkle-a {
  position: absolute; top: 30%; left: 35%; width: 6px; height: 6px; background: #ffe080; border-radius: 50%; box-shadow: 0 0 12px 4px #ffe080; animation: ar-sparkle 3s ease-in-out infinite;
}
.scn-ariel-summoned .sparkle-b {
  position: absolute; top: 25%; left: 55%; width: 4px; height: 4px; background: #ffd070; border-radius: 50%; box-shadow: 0 0 10px 3px #ffd070; animation: ar-sparkle 4s ease-in-out infinite 1.5s;
}
.scn-ariel-summoned .sparkle-c {
  position: absolute; top: 40%; left: 60%; width: 5px; height: 5px; background: #ffe090; border-radius: 50%; box-shadow: 0 0 8px 2px #ffe090; animation: ar-sparkle 3.5s ease-in-out infinite 2.5s;
}
.scn-ariel-summoned .mop-sprite {
  position: absolute; bottom: 35%; left: 30%; width: 16px; height: 24px; background: rgba(100,200,180,0.5); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; filter: blur(3px); animation: ar-mop 5s ease-in-out infinite;
}
.scn-ariel-summoned .mow-sprite {
  position: absolute; bottom: 30%; left: 55%; width: 14px; height: 22px; background: rgba(100,200,180,0.4); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; filter: blur(4px); animation: ar-mop 5.5s ease-in-out infinite 2s;
}

@keyframes ar-void { 0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.85; } }
@keyframes ar-staff { 0% { transform: rotate(13deg) scaleY(1); } 50% { transform: rotate(17deg) scaleY(1.03); } 100% { transform: rotate(13deg) scaleY(1); } }
@keyframes ar-float { 0% { transform: translateY(0) rotate(-5deg) scale(1); } 50% { transform: translateY(-10px) rotate(0deg) scale(1.1); } 100% { transform: translateY(-5px) rotate(5deg) scale(0.95); } }
@keyframes ar-sparkle { 0% { opacity:0.2; transform: scale(0.5); } 50% { opacity:1; transform: scale(1.5); } 100% { opacity:0.3; transform: scale(0.8); } }
@keyframes ar-mop { 0% { transform: translate(0,0) rotate(-10deg); } 50% { transform: translate(-8px,-4px) rotate(5deg); } 100% { transform: translate(8px,-2px) rotate(-5deg); } }

/* Scene 4: iris-invocation */
.scn-iris-invocation {
  background: linear-gradient(180deg, #a0c8e0 0%, #d0e8f0 40%, #f0e8d0 100%), radial-gradient(ellipse at 60% 30%, #ffe0a0 0%, transparent 50%);
}
.scn-iris-invocation .sky-pastoral {
  position: absolute; inset: 0 0 40% 0; background: linear-gradient(180deg, #b0d8e8 0%, #e0f0f0 50%, transparent 100%); animation: ir-skypulse 14s ease-in-out infinite alternate;
}
.scn-iris-invocation .mountain-far {
  position: absolute; bottom: 30%; left: 5%; right: 5%; height: 30%; background: linear-gradient(180deg, #8ab0a0 0%, #5a8070 100%); border-radius: 40% 60% 0 0 / 50% 70% 0 0; box-shadow: inset 0 5px 15px rgba(0,0,0,0.2); animation: ir-mountain 20s ease-in-out infinite alternate;
}
.scn-iris-invocation .mountain-near {
  position: absolute; bottom: 22%; left: -5%; right: -5%; height: 35%; background: linear-gradient(180deg, #6a9060 0%, #3a6040 100%); border-radius: 30% 70% 0 0 / 40% 60% 0 0; opacity: 0.8; animation: ir-mountain 25s ease-in-out infinite alternate 3s;
}
.scn-iris-invocation .field-barley {
  position: absolute; bottom: 15%; left: 10%; right: 10%; height: 20%; background: linear-gradient(180deg, #b09050 0%, #907040 100%); border-radius: 60% 40% 0 0 / 80% 60% 0 0; animation: ir-field 12s ease-in-out infinite alternate;
}
.scn-iris-invocation .field-wheat {
  position: absolute; bottom: 10%; left: 20%; right: 20%; height: 18%; background: linear-gradient(180deg, #d0a860 0%, #b08840 100%); border-radius: 40% 60% 0 0 / 70% 80% 0 0; animation: ir-field 14s ease-in-out infinite alternate 4s;
}
.scn-iris-invocation .sheep-1 {
  position: absolute; bottom: 18%; left: 25%; width: 20px; height: 16px; background: #e0d0c0; border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; box-shadow: 0 2px 6px rgba(0,0,0,0.3); animation: ir-sheep 8s ease-in-out infinite;
}
.scn-iris-invocation .sheep-2 {
  position: absolute; bottom: 20%; left: 55%; width: 18px; height: 14px; background: #d8c8b8; border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; box-shadow: 0 2px 6px rgba(0,0,0,0.3); animation: ir-sheep 9s ease-in-out infinite 3s;
}
.scn-iris-invocation .sunburst {
  position: absolute; top: 10%; left: 50%; width: 80px; height: 80px; transform: translateX(-50%); background: radial-gradient(circle, rgba(255,230,180,0.6) 0%, rgba(255,200,100,0.1) 30%, transparent 70%); border-radius: 50%; animation: ir-sunburst 10s ease-in-out infinite alternate;
}
.scn-iris-invocation .cloud-fluff {
  position: absolute; top: 12%; left: 70%; width: 100px; height: 30px; background: rgba(255,255,255,0.5); border-radius: 50%; filter: blur(8px); animation: ir-cloud 40s linear infinite;
}

@keyframes ir-skypulse { 0% { opacity:0.85; } 50% { opacity:1; } 100% { opacity:0.9; } }
@keyframes ir-mountain { 0% { transform: translateY(0) scale(1); } 50% { transform: translateY(-2px) scale(1.02); } 100% { transform: translateY(0) scale(0.98); } }
@keyframes ir-field { 0% { transform: translateY(0) scaleY(1); } 50% { transform: translateY(-1px) scaleY(1.05); } 100% { transform: translateY(0) scaleY(0.95); } }
@keyframes ir-sheep { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(5px) rotate(5deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes ir-sunburst { 0% { transform: translateX(-50%) scale(0.9); opacity:0.7; } 50% { transform: translateX(-50%) scale(1.1); opacity:1; } 100% { transform: translateX(-50%) scale(0.95); opacity:0.8; } }
@keyframes ir-cloud { 0% { transform: translateX(0); } 100% { transform: translateX(-70vw); } }

/* Scene: prospero-renounces-magic */
.scn-prospero-renounces-magic {
  background:
    linear-gradient(180deg, #f5d6a0 0%, #e8b86e 30%, #d4955a 60%, #b0723a 100%),
    radial-gradient(ellipse at 70% 20%, #ffe4b5 0%, transparent 60%);
}
.scn-prospero-renounces-magic .dawn-sky {
  position:absolute; inset:0 0 55% 0;
  background: linear-gradient(180deg, #ffe1b0 0%, #fbc88a 40%, #e6a060 100%);
  animation: pr1-sky 20s ease-in-out infinite alternate;
}
.scn-prospero-renounces-magic .cell-floor {
  position:absolute; bottom:0; left:0; right:0; height:45%;
  background: linear-gradient(180deg, #c09060 0%, #8a6a3a 60%, #5a4020 100%);
  border-radius: 30% 70% 0 0 / 20% 30% 0 0;
  animation: pr1-floor 12s ease-in-out infinite alternate;
}
.scn-prospero-renounces-magic .cell-wall {
  position:absolute; bottom:45%; left:10%; right:10%; height:15%;
  background: linear-gradient(180deg, #b08850 0%, #8a6a3a 100%);
  border-radius: 5% 5% 20% 20%;
  box-shadow: inset 0 4px 8px rgba(0,0,0,0.3);
  animation: pr1-wall 15s ease-in-out infinite;
}
.scn-prospero-renounces-magic .prospero-robed {
  position:absolute; bottom:40%; left:45%; width:22px; height:55px;
  background: linear-gradient(180deg, #4a3520 0%, #2d1f10 60%, #1a1008 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: pr1-prospero 8s ease-in-out infinite;
}
.scn-prospero-renounces-magic .magic-staff {
  position:absolute; bottom:36%; left:49%; width:4px; height:40px;
  background: linear-gradient(180deg, #8b6b3a 0%, #4a3018 100%);
  border-radius: 0 0 20% 20%;
  transform: rotate(-8deg);
  animation: pr1-staff 5s ease-in-out infinite alternate;
}
.scn-prospero-renounces-magic .open-book {
  position:absolute; bottom:42%; left:36%; width:20px; height:14px;
  background: linear-gradient(135deg, #f5e6c0 0%, #c8b080 100%);
  border-radius: 4% 40% 4% 40%;
  box-shadow: 0 2px 6px rgba(0,0,0,0.4);
  animation: pr1-book 9s ease-in-out infinite;
}
.scn-prospero-renounces-magic .fading-glow {
  position:absolute; bottom:38%; left:42%; width:60px; height:50px;
  background: radial-gradient(circle, rgba(255,220,150,0.6) 0%, transparent 70%);
  filter: blur(8px);
  animation: pr1-glow 6s ease-in-out infinite alternate;
}
.scn-prospero-renounces-magic .dawn-ray {
  position:absolute; top:8%; height:25%; width:12%;
  background: linear-gradient(180deg, rgba(255,230,180,0.5) 0%, transparent 100%);
  transform: skewX(-10deg);
  filter: blur(4px);
}
.scn-prospero-renounces-magic .left-ray { left:15%; animation: pr1-ray-l 30s linear infinite; }
.scn-prospero-renounces-magic .right-ray { right:15%; transform: skewX(10deg); animation: pr1-ray-r 35s linear infinite reverse; }

@keyframes pr1-sky { 0% { opacity:0.85; } 50% { opacity:1; } 100% { opacity:0.75; } }
@keyframes pr1-floor { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes pr1-wall { 0% { transform: scaleY(1); } 50% { transform: scaleY(0.97); } 100% { transform: scaleY(1); } }
@keyframes pr1-prospero { 0% { transform: translateY(0) rotate(-1deg); } 50% { transform: translateY(-3px) rotate(1deg); } 100% { transform: translateY(0) rotate(0); } }
@keyframes pr1-staff { 0% { transform: rotate(-8deg); } 50% { transform: rotate(-6deg); } 100% { transform: rotate(-10deg); } }
@keyframes pr1-book { 0% { transform: rotate(0deg); } 50% { transform: rotate(3deg) scale(1.02); } 100% { transform: rotate(0deg); } }
@keyframes pr1-glow { 0% { opacity:0.5; transform: scale(0.9); } 50% { opacity:0.9; transform: scale(1.1); } 100% { opacity:0.6; transform: scale(1); } }
@keyframes pr1-ray-l { 0% { transform: translateX(0) skewX(-10deg); } 100% { transform: translateX(80vw) skewX(-10deg); } }
@keyframes pr1-ray-r { 0% { transform: translateX(0) skewX(10deg); } 100% { transform: translateX(-80vw) skewX(10deg); } }

/* Scene: prosforgives */
.scn-prosforgives {
  background:
    linear-gradient(180deg, #f7dbb0 0%, #eac284 30%, #cfa060 60%, #b08040 100%),
    radial-gradient(ellipse at 50% 30%, #ffe8c0 0%, transparent 60%);
}
.scn-prosforgives .warm-sky {
  position:absolute; inset:0 0 50% 0;
  background: linear-gradient(180deg, #ffe6b0 0%, #f7c880 40%, #dda050 100%);
  animation: pf2-sky 18s ease-in-out infinite alternate;
}
.scn-prosforgives .distant-hills {
  position:absolute; bottom:40%; left:0; right:0; height:15%;
  background: linear-gradient(180deg, #b89860 0%, #8a703a 100%);
  border-radius: 50% 50% 0 0 / 80% 80% 0 0;
  animation: pf2-hills 25s ease-in-out infinite alternate;
}
.scn-prosforgives .open-arms-figure {
  position:absolute; bottom:30%; left:50%; width:28px; height:55px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #4a3520 0%, #2d1f10 60%, #1a1008 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: pf2-figure 9s ease-in-out infinite;
}
.scn-prosforgives .forgiveness-light {
  position:absolute; bottom:35%; left:50%; width:80px; height:80px;
  transform: translateX(-50%);
  background: radial-gradient(circle, rgba(255,200,100,0.5) 0%, transparent 70%);
  filter: blur(12px);
  animation: pf2-light 6s ease-in-out infinite alternate;
}
.scn-prosforgives .light-ray {
  position:absolute; top:10%; width:8%; height:40%;
  background: linear-gradient(180deg, rgba(255,210,120,0.4) 0%, transparent 100%);
  transform: skewX(-5deg);
  filter: blur(3px);
}
.scn-prosforgives .ray-1 { left:20%; animation: pf2-ray1 28s linear infinite; }
.scn-prosforgives .ray-2 { left:45%; animation: pf2-ray2 35s linear infinite reverse; }
.scn-prosforgives .ray-3 { left:70%; transform: skewX(5deg); animation: pf2-ray3 40s linear infinite; }

@keyframes pf2-sky { 0% { opacity:0.85; } 50% { opacity:1; } 100% { opacity:0.8; } }
@keyframes pf2-hills { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes pf2-figure { 0% { transform: translateX(-50%) translateY(0) rotate(-2deg); } 50% { transform: translateX(-50%) translateY(-4px) rotate(2deg); } 100% { transform: translateX(-50%) translateY(0) rotate(0); } }
@keyframes pf2-light { 0% { opacity:0.4; transform: translateX(-50%) scale(0.9); } 50% { opacity:0.9; transform: translateX(-50%) scale(1.2); } 100% { opacity:0.5; transform: translateX(-50%) scale(1); } }
@keyframes pf2-ray1 { 0% { transform: translateX(0) skewX(-5deg); } 100% { transform: translateX(60vw) skewX(-5deg); } }
@keyframes pf2-ray2 { 0% { transform: translateX(0); } 100% { transform: translateX(-50vw); } }
@keyframes pf2-ray3 { 0% { transform: translateX(0) skewX(5deg); } 100% { transform: translateX(70vw) skewX(5deg); } }

/* Scene: ariel-sings-free */
.scn-ariel-sings-free {
  background:
    linear-gradient(180deg, #ffeac0 0%, #f5d090 30%, #dba860 60%, #c09040 100%),
    radial-gradient(ellipse at 30% 40%, #fff0d0 0%, transparent 70%);
}
.scn-ariel-sings-free .dawn-horizon {
  position:absolute; inset:0 0 55% 0;
  background: linear-gradient(180deg, #ffdbb0 0%, #ecc070 40%, #d4a050 100%);
  animation: asf3-sky 22s ease-in-out infinite alternate;
}
.scn-ariel-sings-free .airy-branch {
  position:absolute; bottom:52%; left:10%; right:20%; height:4px;
  background: linear-gradient(90deg, #8a6a3a 0%, transparent 100%);
  border-radius: 50% 50% 0 0;
  animation: asf3-branch 14s ease-in-out infinite;
}
.scn-ariel-sings-free .ariel-figure {
  position:absolute; bottom:48%; left:38%; width:18px; height:28px;
  background: linear-gradient(180deg, #d4b080 0%, #a88850 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: asf3-ariel 6s ease-in-out infinite;
}
.scn-ariel-sings-free .ariel-wings {
  position:absolute; bottom:50%; left:35%; width:24px; height:16px;
  background: linear-gradient(135deg, rgba(220,200,170,0.7) 0%, transparent 100%);
  border-radius: 50% 50% 20% 80%;
  filter: blur(2px);
  animation: asf3-wings 3s ease-in-out infinite alternate;
}
.scn-ariel-sings-free .musical-note {
  position:absolute; width:8px; height:12px;
  background: radial-gradient(circle, #f5d090 0%, #c89850 70%);
  border-radius: 50% 50% 50% 50% / 40% 40% 60% 60%;
  filter: blur(1px);
}
.scn-ariel-sings-free .note-1 { bottom:55%; left:42%; animation: asf3-note1 5s ease-in-out infinite; }
.scn-ariel-sings-free .note-2 { bottom:58%; left:48%; animation: asf3-note2 6s ease-in-out infinite 1s; }
.scn-ariel-sings-free .note-3 { bottom:53%; left:54%; animation: asf3-note3 4.5s ease-in-out infinite 2s; }
.scn-ariel-sings-free .morning-beam {
  position:absolute; top:5%; left:20%; width:10%; height:50%;
  background: linear-gradient(180deg, rgba(255,230,180,0.3) 0%, transparent 100%);
  transform: skewX(-8deg);
  filter: blur(5px);
  animation: asf3-beam 40s linear infinite;
}

@keyframes asf3-sky { 0% { opacity:0.9; } 50% { opacity:1; } 100% { opacity:0.85; } }
@keyframes asf3-branch { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes asf3-ariel { 0% { transform: translateY(0) rotate(-3deg); } 50% { transform: translateY(-5px) rotate(3deg); } 100% { transform: translateY(0) rotate(0); } }
@keyframes asf3-wings { 0% { transform: scaleX(1) rotate(0deg); } 50% { transform: scaleX(1.3) rotate(10deg); } 100% { transform: scaleX(1) rotate(0deg); } }
@keyframes asf3-note1 { 0% { transform: translate(0,0) scale(0.8); opacity:0.7; } 50% { transform: translate(8px,-15px) scale(1.2); opacity:1; } 100% { transform: translate(16px,-30px) scale(0.9); opacity:0.5; } }
@keyframes asf3-note2 { 0% { transform: translate(0,0) scale(0.9); opacity:0.6; } 50% { transform: translate(-6px,-18px) scale(1.1); opacity:1; } 100% { transform: translate(-12px,-36px) scale(0.8); opacity:0.4; } }
@keyframes asf3-note3 { 0% { transform: translate(0,0) scale(0.7); opacity:0.8; } 50% { transform: translate(10px,-12px) scale(1.3); opacity:1; } 100% { transform: translate(20px,-24px) scale(0.9); opacity:0.6; } }
@keyframes asf3-beam { 0% { transform: translateX(0) skewX(-8deg); } 100% { transform: translateX(50vw) skewX(-8deg); } }

/* Scene: prospero-frees-ariel */
.scn-prospero-frees-ariel {
  background:
    linear-gradient(180deg, #fde7c0 0%, #edc890 30%, #cfa060 60%, #b08040 100%),
    radial-gradient(ellipse at 50% 60%, #fff0d0 0%, transparent 60%);
}
.scn-prospero-frees-ariel .dawn-circle-floor {
  position:absolute; bottom:10%; left:50%; width:120px; height:60px;
  transform: translateX(-50%);
  background: radial-gradient(ellipse, rgba(255,220,150,0.3) 0%, transparent 70%);
  border: 2px solid rgba(200,160,80,0.4);
  border-radius: 50%;
  animation: pfa4-circle 12s ease-in-out infinite alternate;
}
.scn-prospero-frees-ariel .prospero-standing {
  position:absolute; bottom:28%; left:35%; width:24px; height:50px;
  background: linear-gradient(180deg, #4a3520 0%, #2d1f10 60%, #1a1008 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: pfa4-prospero 8s ease-in-out infinite;
}
.scn-prospero-frees-ariel .ariel-ascending {
  position:absolute; bottom:38%; left:52%; width:16px; height:24px;
  background: linear-gradient(180deg, #d4b080 0%, #a88850 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pfa4-ariel 7s ease-in-out infinite;
}
.scn-prospero-frees-ariel .breaking-chain {
  position:absolute; width:2px; height:10px;
  background: #a08050;
  border-radius: 40%;
}
.scn-prospero-frees-ariel .chain-1 { bottom:44%; left:49%; animation: pfa4-chain1 6s ease-in-out infinite; }
.scn-prospero-frees-ariel .chain-2 { bottom:46%; left:55%; animation: pfa4-chain2 6.5s ease-in-out infinite 0.5s; }
.scn-prospero-frees-ariel .sparkle {
  position:absolute; width:6px; height:6px;
  background: radial-gradient(circle, #ffe8c0 0%, #f0c070 60%);
  border-radius: 50%;
  filter: blur(1px);
}
.scn-prospero-frees-ariel .sp-1 { bottom:50%; left:50%; animation: pfa4-spark1 3s ease-in-out infinite; }
.scn-prospero-frees-ariel .sp-2 { bottom:55%; left:45%; animation: pfa4-spark2 3.5s ease-in-out infinite 1s; }
.scn-prospero-frees-ariel .sp-3 { bottom:60%; left:53%; animation: pfa4-spark3 4s ease-in-out infinite 2s; }

@keyframes pfa4-circle { 0% { opacity:0.5; transform: translateX(-50%) scale(1); } 50% { opacity:0.8; transform: translateX(-50%) scale(1.05); } 100% { opacity:0.6; transform: translateX(-50%) scale(1); } }
@keyframes pfa4-prospero { 0% { transform: translateY(0) rotate(-1deg); } 50% { transform: translateY(-3px) rotate(1deg); } 100% { transform: translateY(0) rotate(0); } }
@keyframes pfa4-ariel { 0% { transform: translateY(0) scale(1); opacity:0.8; } 50% { transform: translateY(-15px) scale(1.1); opacity:1; } 100% { transform: translateY(0) scale(1); opacity:0.9; } }
@keyframes pfa4-chain1 { 0% { transform: translate(0,0) rotate(0deg); opacity:0.6; } 50% { transform: translate(5px,-10px) rotate(30deg); opacity:0.3; } 100% { transform: translate(10px,-20px) rotate(60deg); opacity:0; } }
@keyframes pfa4-chain2 { 0% { transform: translate(0,0) rotate(0deg); opacity:0.6; } 50% { transform: translate(-4px,-12px) rotate(-25deg); opacity:0.3; } 100% { transform: translate(-8px,-24px) rotate(-50deg); opacity:0; } }
@keyframes pfa4-spark1 { 0% { transform: translate(0,0) scale(0.8); opacity:0; } 50% { transform: translate(5px,-20px) scale(1.2); opacity:1; } 100% { transform: translate(10px,-40px) scale(0.6); opacity:0; } }
@keyframes pfa4-spark2 { 0% { transform: translate(0,0) scale(0.7); opacity:0; } 50% { transform: translate(-6px,-18px) scale(1.3); opacity:1; } 100% { transform: translate(-12px,-36px) scale(0.5); opacity:0; } }
@keyframes pfa4-spark3 { 0% { transform: translate(0,0) scale(0.9); opacity:0; } 50% { transform: translate(8px,-16px) scale(1.1); opacity:1; } 100% { transform: translate(16px,-32px) scale(0.7); opacity:0; } }

.scn-banquet-vanishes {
  background: 
    radial-gradient(ellipse at 50% 60%, #8b5a2b 0%, transparent 70%),
    linear-gradient(180deg, #3a2212 0%, #5a3a1a 50%, #2a1a0a 100%);
}
.scn-banquet-vanishes .wall-bg {
  position: absolute; inset: 0; 
  background: linear-gradient(180deg, #4a2a1a 0%, #2a1a0a 100%);
  animation: bv-wall 15s ease-in-out infinite alternate;
}
.scn-banquet-vanishes .table {
  position: absolute; bottom: 15%; left: 10%; right: 10%; height: 10%;
  background: linear-gradient(180deg, #6a4a2a 0%, #3a2a1a 100%);
  border-radius: 4px; box-shadow: 0 -4px 12px rgba(0,0,0,.6);
}
.scn-banquet-vanishes .tablecloth {
  position: absolute; bottom: 20%; left: 12%; right: 12%; height: 6%;
  background: linear-gradient(180deg, #c8a87a 0%, #a08060 100%);
  border-radius: 2px; opacity: 0.7;
  animation: bv-tablecloth 8s ease-in-out infinite;
}
.scn-banquet-vanishes .plate-1 {
  position: absolute; bottom: 24%; left: 30%; width: 10%; height: 6%;
  background: radial-gradient(circle, #e0c0a0 0%, #c0a080 80%);
  border-radius: 50%; box-shadow: 0 2px 6px rgba(0,0,0,.4);
  animation: bv-plate 6s ease-in-out infinite;
}
.scn-banquet-vanishes .plate-2 {
  position: absolute; bottom: 24%; left: 55%; width: 8%; height: 5%;
  background: radial-gradient(circle, #d0b090 0%, #b09070 80%);
  border-radius: 50%; box-shadow: 0 2px 6px rgba(0,0,0,.4);
  animation: bv-plate 7s ease-in-out infinite reverse;
}
.scn-banquet-vanishes .goblet {
  position: absolute; bottom: 22%; left: 45%; width: 4%; height: 12%;
  background: linear-gradient(180deg, #d4af37 0%, #b8860b 100%);
  border-radius: 4px 4px 40% 40%; box-shadow: 0 4px 8px rgba(0,0,0,.5);
  animation: bv-goblet 5s ease-in-out infinite;
}
.scn-banquet-vanishes .candle-flame {
  position: absolute; bottom: 33%; left: 48%; width: 2%; height: 6%;
  background: radial-gradient(ellipse, #ffd700 0%, #ff8c00 60%, transparent 100%);
  border-radius: 50% 50% 20% 20%;
  box-shadow: 0 0 20px 10px #ff8c00, 0 0 40px 20px rgba(255,140,0,.3);
  animation: bv-flame 2s ease-in-out infinite alternate;
}
.scn-banquet-vanishes .ghost-ghost-a {
  position: absolute; bottom: 30%; left: 20%; width: 12%; height: 20%;
  background: linear-gradient(180deg, rgba(200,220,240,0.6) 0%, transparent 100%);
  border-radius: 60% 60% 40% 40% / 80% 80% 20% 20%;
  filter: blur(3px);
  animation: bv-ghost 12s ease-in-out infinite;
}
.scn-banquet-vanishes .ghost-ghost-b {
  position: absolute; bottom: 28%; left: 65%; width: 10%; height: 18%;
  background: linear-gradient(180deg, rgba(220,240,255,0.5) 0%, transparent 100%);
  border-radius: 50% 60% 30% 30% / 70% 70% 20% 20%;
  filter: blur(4px);
  animation: bv-ghost 14s ease-in-out infinite reverse;
}
@keyframes bv-wall { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.85; } }
@keyframes bv-tablecloth { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-2px); } }
@keyframes bv-plate { 0%,100% { transform: scale(1); } 50% { transform: scale(1.05); } }
@keyframes bv-goblet { 0%,100% { transform: rotate(0deg); } 25% { transform: rotate(2deg); } 75% { transform: rotate(-2deg); } }
@keyframes bv-flame { 0% { transform: scaleY(1) translateY(0); opacity:0.9; } 50% { transform: scaleY(1.2) translateY(-2px); opacity:1; } 100% { transform: scaleY(0.9) translateY(1px); opacity:0.8; } }
@keyframes bv-ghost { 0% { transform: translateY(0) scale(1); opacity:0.5; } 50% { transform: translateY(-10px) scale(1.1); opacity:0.8; } 100% { transform: translateY(2px) scale(0.95); opacity:0.3; } }

.scn-ariel-harpy-reproach {
  background: 
    radial-gradient(ellipse at 50% 100%, #1a2a3a 0%, transparent 60%),
    linear-gradient(180deg, #0a0a1a 0%, #1a1a3a 30%, #2a2a4e 70%, #0a0a1a 100%);
}
.scn-ariel-harpy-reproach .sky {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #1a1a3a 0%, #2a2a4e 40%, #3a3a6e 80%);
  animation: ahr-sky 20s ease-in-out infinite alternate;
}
.scn-ariel-harpy-reproach .rocks {
  position: absolute; bottom: 10%; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 20% 60% 0 0 / 40% 80% 0 0;
  box-shadow: inset 0 4px 10px rgba(0,0,0,.7);
}
.scn-ariel-harpy-reproach .harpy-body {
  position: absolute; bottom: 25%; left: 50%; transform: translateX(-50%); width: 16%; height: 30%;
  background: linear-gradient(180deg, #2a2a3e 0%, #1a1a2a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  box-shadow: 0 0 20px 5px rgba(0,0,0,.5);
  animation: ahr-harpy-body 3s ease-in-out infinite alternate;
}
.scn-ariel-harpy-reproach .harpy-wing-left {
  position: absolute; bottom: 28%; left: 38%; width: 20%; height: 18%;
  background: linear-gradient(180deg, #2a2a3e 0%, #1a1a2a 100%);
  border-radius: 80% 0% 50% 50% / 100% 20% 60% 40%;
  transform-origin: right center;
  animation: ahr-wing-left 4s ease-in-out infinite;
}
.scn-ariel-harpy-reproach .harpy-wing-right {
  position: absolute; bottom: 28%; right: 38%; width: 20%; height: 18%;
  background: linear-gradient(180deg, #2a2a3e 0%, #1a1a2a 100%);
  border-radius: 0% 80% 50% 50% / 20% 100% 40% 60%;
  transform-origin: left center;
  animation: ahr-wing-right 4s ease-in-out infinite reverse;
}
.scn-ariel-harpy-reproach .lightning {
  position: absolute; top: 5%; left: 30%; width: 2px; height: 40%;
  background: linear-gradient(180deg, #fff 0%, #aaccff 50%, transparent 100%);
  filter: blur(1px);
  box-shadow: 0 0 20px 10px rgba(170,204,255,.5);
  animation: ahr-lightning 6s ease-in-out infinite;
}
.scn-ariel-harpy-reproach .sea {
  position: absolute; bottom: 5%; left: 0; right: 0; height: 15%;
  background: linear-gradient(180deg, #1a2a3a 0%, #0a1a2a 100%);
  border-radius: 50% 50% 0 0 / 30% 30% 0 0;
  animation: ahr-sea 8s ease-in-out infinite;
}
@keyframes ahr-sky { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.7; } }
@keyframes ahr-harpy-body { 0%,100% { transform: translateX(-50%) rotate(0deg); } 50% { transform: translateX(-50%) rotate(2deg); } }
@keyframes ahr-wing-left { 0% { transform: rotate(-10deg) scaleY(1); } 50% { transform: rotate(10deg) scaleY(1.2); } 100% { transform: rotate(-5deg) scaleY(0.9); } }
@keyframes ahr-wing-right { 0% { transform: rotate(10deg) scaleY(1); } 50% { transform: rotate(-10deg) scaleY(1.2); } 100% { transform: rotate(5deg) scaleY(0.9); } }
@keyframes ahr-lightning { 0%,90%,100% { opacity: 0; } 30% { opacity: 1; } 40% { opacity: 0.3; } 50% { opacity: 0.8; } }
@keyframes ahr-sea { 0%,100% { transform: translateY(0); } 50% { transform: translateY(5px); } }

.scn-prospero-pleased {
  background: 
    radial-gradient(ellipse at 50% 70%, #8b5a2b 0%, transparent 60%),
    linear-gradient(180deg, #2a1a0a 0%, #3a2a1a 40%, #1a0a00 100%);
}
.scn-prospero-pleased .cave-wall {
  position: absolute; inset: 0;
  background: linear-gradient(135deg, #3a2a1a 0%, #1a0a00 100%);
  animation: pp-wall 20s ease-in-out infinite alternate;
}
.scn-prospero-pleased .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #2a1a0a 0%, #1a0a00 100%);
  border-radius: 0 0 10% 10%;
}
.scn-prospero-pleased .staff {
  position: absolute; bottom: 20%; left: 35%; width: 2%; height: 50%;
  background: linear-gradient(180deg, #8b5a2b 0%, #5a3a1a 100%);
  border-radius: 2px;
  box-shadow: 0 0 10px 2px rgba(139,90,43,.4);
  animation: pp-staff 6s ease-in-out infinite;
}
.scn-prospero-pleased .magic-circle {
  position: absolute; bottom: 30%; left: 50%; transform: translateX(-50%); width: 30%; height: 10%;
  background: radial-gradient(circle, #ffd700 0%, #b8860b 50%, transparent 100%);
  border-radius: 50%;
  opacity: 0.6;
  animation: pp-circle 8s ease-in-out infinite alternate;
}
.scn-prospero-pleased .glow-orb {
  position: absolute; bottom: 35%; left: 48%; width: 6%; height: 6%;
  background: radial-gradient(circle, #ffdd88 0%, #ffaa33 60%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 40px 20px #ffaa33, 0 0 80px 40px rgba(255,170,51,.3);
  animation: pp-orb 4s ease-in-out infinite alternate;
}
.scn-prospero-pleased .book {
  position: absolute; bottom: 12%; left: 45%; width: 10%; height: 6%;
  background: linear-gradient(180deg, #6a4a2a 0%, #4a2a1a 100%);
  border-radius: 2px;
  transform: rotate(-5deg);
  box-shadow: 0 2px 4px rgba(0,0,0,.5);
  animation: pp-book 10s ease-in-out infinite;
}
.scn-prospero-pleased .sparkle-1 {
  position: absolute; top: 20%; left: 30%; width: 4px; height: 4px;
  background: #ffd700;
  border-radius: 50%;
  box-shadow: 0 0 12px 4px #ffd700;
  animation: pp-sparkle 3s ease-in-out infinite;
}
.scn-prospero-pleased .sparkle-2 {
  position: absolute; top: 35%; right: 25%; width: 3px; height: 3px;
  background: #ffcc66;
  border-radius: 50%;
  box-shadow: 0 0 8px 3px #ffcc66;
  animation: pp-sparkle 4s ease-in-out infinite reverse;
}
@keyframes pp-wall { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.8; } }
@keyframes pp-staff { 0%,100% { transform: rotate(0deg); } 50% { transform: rotate(3deg); } }
@keyframes pp-circle { 0% { opacity: 0.4; transform: translateX(-50%) scale(1); } 50% { opacity: 0.7; transform: translateX(-50%) scale(1.1); } 100% { opacity: 0.5; transform: translateX(-50%) scale(0.95); } }
@keyframes pp-orb { 0% { transform: scale(1) translateY(0); opacity:0.7; } 50% { transform: scale(1.3) translateY(-5px); opacity:1; } 100% { transform: scale(0.9) translateY(2px); opacity:0.6; } }
@keyframes pp-book { 0%,100% { transform: rotate(-5deg); } 50% { transform: rotate(-3deg) translateY(-2px); } }
@keyframes pp-sparkle { 0% { opacity: 0; transform: scale(0); } 50% { opacity: 1; transform: scale(1.5); } 100% { opacity: 0; transform: scale(0.5); } }

.scn-alonso-guilt-madness {
  background: 
    radial-gradient(ellipse at 50% 80%, #1a2a3a 0%, transparent 70%),
    linear-gradient(180deg, #0a0a1a 0%, #1a1a2a 30%, #2a2a3e 60%, #0a0a1a 100%);
}
.scn-alonso-guilt-madness .storm-sky {
  position: absolute; inset: 0 0 20% 0;
  background: linear-gradient(180deg, #1a1a2a 0%, #2a2a3e 40%, #3a3a5a 80%);
  animation: agm-sky 18s ease-in-out infinite alternate;
}
.scn-alonso-guilt-madness .waves {
  position: absolute; bottom: 10%; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #1a2a3a 0%, #0a1a2a 100%);
  border-radius: 60% 40% 0 0 / 20% 30% 0 0;
  animation: agm-waves 7s ease-in-out infinite;
}
.scn-alonso-guilt-madness .ship {
  position: absolute; bottom: 15%; left: 40%; width: 20%; height: 15%;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%);
  border-radius: 10% 10% 30% 30%;
  transform: rotate(-5deg);
  box-shadow: 0 4px 8px rgba(0,0,0,.7);
  animation: agm-ship 8s ease-in-out infinite;
}
.scn-alonso-guilt-madness .alonso-figure {
  position: absolute; bottom: 18%; left: 46%; width: 6%; height: 12%;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: agm-alonso 4s ease-in-out infinite;
}
.scn-alonso-guilt-madness .lightning-flash {
  position: absolute; top: 2%; left: 60%; width: 1px; height: 35%;
  background: linear-gradient(180deg, #ffffff 0%, #aaccff 50%, transparent 100%);
  filter: blur(1px);
  box-shadow: 0 0 30px 15px rgba(170,204,255,.6);
  animation: agm-lightning 5s ease-in-out infinite;
}
.scn-alonso-guilt-madness .wind-sweep-1 {
  position: absolute; top: 20%; left: 10%; width: 50%; height: 2px;
  background: linear-gradient(90deg, transparent 0%, rgba(200,220,240,0.3) 50%, transparent 100%);
  filter: blur(2px);
  animation: agm-wind-1 12s linear infinite;
}
.scn-alonso-guilt-madness .wind-sweep-2 {
  position: absolute; top: 40%; right: 10%; width: 40%; height: 2px;
  background: linear-gradient(270deg, transparent 0%, rgba(200,220,240,0.2) 50%, transparent 100%);
  filter: blur(2px);
  animation: agm-wind-2 15s linear infinite reverse;
}
@keyframes agm-sky { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.7; } }
@keyframes agm-waves { 0%,100% { transform: translateY(0) scaleY(1); } 50% { transform: translateY(5px) scaleY(1.1); } }
@keyframes agm-ship { 0%,100% { transform: rotate(-5deg) translateY(0); } 50% { transform: rotate(-3deg) translateY(-3px); } }
@keyframes agm-alonso { 0%,100% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(3px) rotate(2deg); } 75% { transform: translateX(-3px) rotate(-2deg); } }
@keyframes agm-lightning { 0%,92%,100% { opacity: 0; } 20% { opacity: 1; } 30% { opacity: 0.2; } 40% { opacity: 0.9; } }
@keyframes agm-wind-1 { 0% { transform: translateX(-100%); } 100% { transform: translateX(100vw); } }
@keyframes agm-wind-2 { 0% { transform: translateX(100%); } 100% { transform: translateX(-100vw); } }

/* ---------- conspiracy-plot ---------- */
.scn-conspiracy-plot {
  background:
    linear-gradient(180deg, #e8e0c8 0%, #c8b890 40%, #a09070 100%),
    radial-gradient(ellipse at 30% 80%, #f0e8d0 0%, transparent 60%);
}
.scn-conspiracy-plot .room-bg   { position:absolute; inset:0; background: linear-gradient(135deg, #b0a080 0%, #8a7a5a 100%); opacity:0.3; }
.scn-conspiracy-plot .window    { position:absolute; top:5%; right:10%; width:22%; height:35%; background: radial-gradient(circle at 30% 20%, #ffe0b0 0%, #c0a070 80%); border:6px solid #5a4a3a; border-radius:4px; box-shadow:0 0 40px 15px rgba(255,200,100,0.4); }
.scn-conspiracy-plot .curtain-l { position:absolute; top:5%; right:32%; width:10%; height:40%; background: linear-gradient(180deg, #6a5a4a 0%, #3a2a1a 100%); border-radius:0 20% 20% 0; transform-origin:top right; animation: cp-curtain 6s ease-in-out infinite alternate; }
.scn-conspiracy-plot .curtain-r { position:absolute; top:5%; right:8%; width:10%; height:40%; background: linear-gradient(180deg, #6a5a4a 0%, #3a2a1a 100%); border-radius:20% 0 0 20%; transform-origin:top left; animation: cp-curtain 6s ease-in-out infinite alternate-reverse; }
.scn-conspiracy-plot .table     { position:absolute; bottom:20%; left:20%; width:40%; height:8%; background: linear-gradient(180deg, #8a7050 0%, #5a4030 100%); border-radius:4px; box-shadow:0 4px 10px rgba(0,0,0,0.5); }
.scn-conspiracy-plot .papers    { position:absolute; bottom:28%; left:24%; width:15%; height:6%; background: #e8dcc0; border-radius:2px; transform:rotate(-8deg); box-shadow:2px 3px 4px rgba(0,0,0,0.3); animation: cp-papers 4s ease-in-out infinite; }
.scn-conspiracy-plot .shadow    { position:absolute; bottom:20%; left:55%; width:20%; height:35%; background: linear-gradient(135deg, rgba(30,25,15,0.3) 0%, rgba(10,8,5,0.6) 100%); border-radius:30% 20% 10% 20%; transform:skewX(-10deg); animation: cp-shadow 8s ease-in-out infinite alternate; }
.scn-conspiracy-plot .light-beam { position:absolute; top:0; right:15%; width:16%; height:80%; background: linear-gradient(180deg, rgba(255,240,200,0.2) 0%, rgba(255,220,150,0.1) 100%); clip-path: polygon(0 0, 100% 0, 70% 100%, 30% 100%); animation: cp-beam 12s ease-in-out infinite; }
@keyframes cp-curtain { 0% { transform: rotate(0deg) scaleY(1); } 50% { transform: rotate(-5deg) scaleY(1.02); } 100% { transform: rotate(3deg) scaleY(0.98); } }
@keyframes cp-papers { 0% { transform: rotate(-8deg) translate(0,0); } 50% { transform: rotate(-4deg) translate(2px,-1px); } 100% { transform: rotate(-10deg) translate(-1px,1px); } }
@keyframes cp-shadow { 0% { transform: skewX(-10deg) translateX(0); opacity:0.4; } 50% { transform: skewX(-5deg) translateX(5px); opacity:0.6; } 100% { transform: skewX(-12deg) translateX(-3px); opacity:0.3; } }
@keyframes cp-beam { 0% { opacity:0.3; transform: scaleX(1); } 50% { opacity:0.6; transform: scaleX(1.1); } 100% { opacity:0.4; transform: scaleX(0.9); } }

/* ---------- sc-ii-caliban-wood ---------- */
.scn-sc-ii-caliban-wood {
  background:
    linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 40%, #0e101a 100%),
    radial-gradient(ellipse at 50% 0%, #3a3a4a 0%, transparent 60%);
}
.scn-sc-ii-caliban-wood .sky-cw   { position:absolute; inset:0 0 45% 0; background: linear-gradient(180deg, #3a3a4a 0%, #1e1e2e 100%); animation: cw-sky 10s ease-in-out infinite; }
.scn-sc-ii-caliban-wood .ground-cw { position:absolute; bottom:0; left:0; right:0; height:45%; background: linear-gradient(180deg, #2a3a2a 0%, #0a1a0a 100%); border-radius:30% 0 0 0 / 40% 0 0 0; box-shadow:inset 0 8px 20px rgba(0,0,0,0.6); }
.scn-sc-ii-caliban-wood .tree-cw   { position:absolute; bottom:35%; width:4%; border-radius:20%; background: linear-gradient(180deg, #1a1a0a 0%, #0a0a00 100%); animation: cw-tree 15s ease-in-out infinite alternate; }
.scn-sc-ii-caliban-wood .tree-a    { left:20%; height:55%; transform-origin:bottom center; }
.scn-sc-ii-caliban-wood .tree-b    { right:25%; height:70%; transform-origin:bottom center; animation-delay:-5s; }
.scn-sc-ii-caliban-wood .caliban   { position:absolute; bottom:20%; left:35%; width:14%; height:38%; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 45% 45% 30% 30% / 60% 60% 35% 35%; transform-origin:bottom center; animation: cw-caliban 6s ease-in-out infinite; }
.scn-sc-ii-caliban-wood .wood-bundle { position:absolute; bottom:24%; left:32%; width:8%; height:10%; background: linear-gradient(180deg, #5a4a30 0%, #2a1a0a 100%); border-radius:20% 20% 10% 10%; transform:rotate(15deg); animation: cw-wood 4s ease-in-out infinite; }
.scn-sc-ii-caliban-wood .flash     { position:absolute; top:10%; left:40%; width:5%; height:30%; background: rgba(220,220,255,0.8); filter:blur(8px); border-radius:20%; opacity:0; animation: cw-flash 8s ease-in-out infinite; }
@keyframes cw-sky { 0% { opacity:0.7; } 50% { opacity:1; } 100% { opacity:0.6; } }
@keyframes cw-tree { 0% { transform: rotate(-2deg) scaleY(1); } 50% { transform: rotate(1deg) scaleY(1.02); } 100% { transform: rotate(-1deg) scaleY(0.98); } }
@keyframes cw-caliban { 0% { transform: translateX(-5px) rotate(-2deg); } 25% { transform: translateX(5px) rotate(1deg); } 50% { transform: translateX(0) rotate(-1deg); } 75% { transform: translateX(8px) rotate(2deg); } 100% { transform: translateX(-3px) rotate(0deg); } }
@keyframes cw-wood { 0% { transform: rotate(15deg) translateY(0); } 50% { transform: rotate(10deg) translateY(-3px); } 100% { transform: rotate(18deg) translateY(2px); } }
@keyframes cw-flash { 0%,85%,100% { opacity:0; } 5%,10% { opacity:1; } 15% { opacity:0.2; } }

/* ---------- sc-ii-stephanio-bottle ---------- */
.scn-sc-ii-stephanio-bottle {
  background:
    linear-gradient(180deg, #a0a0a0 0%, #707070 40%, #505050 100%),
    radial-gradient(ellipse at 50% 100%, #808080 0%, transparent 70%);
}
.scn-sc-ii-stephanio-bottle .sky-st    { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #b0b0c0 0%, #808090 100%); animation: st-sky 20s ease-in-out infinite; }
.scn-sc-ii-stephanio-bottle .shore     { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, #6a5a4a 0%, #3a2a1a 100%); border-radius:50% 50% 0 0 / 60% 60% 0 0; box-shadow:inset 0 10px 20px rgba(0,0,0,0.4); }
.scn-sc-ii-stephanio-bottle .stephanio { position:absolute; bottom:22%; left:42%; width:15%; height:35%; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 45% 45% 30% 30% / 60% 60% 35% 35%; transform-origin:bottom center; animation: st-figure 3s ease-in-out infinite; }
.scn-sc-ii-stephanio-bottle .bottle-st { position:absolute; bottom:30%; left:38%; width:6%; height:18%; background: linear-gradient(180deg, #c8a050 0%, #8a6a30 100%); border-radius:30% 30% 20% 20%; box-shadow: 0 0 20px 6px rgba(200,160,80,0.6), 0 0 40px 12px rgba(200,160,80,0.3); transform-origin:bottom center; animation: st-bottle 2s ease-in-out infinite; }
.scn-sc-ii-stephanio-bottle .bubbles   { position:absolute; bottom:38%; left:37%; width:8%; height:8%; background: radial-gradient(circle, rgba(200,200,200,0.5) 0%, transparent 70%); border-radius:50%; animation: st-bubbles 4s ease-in-out infinite; }
.scn-sc-ii-stephanio-bottle .wave-st   { position:absolute; bottom:0; left:0; right:0; height:10%; background: linear-gradient(180deg, #4a6a5a 0%, #2a4a3a 100%); border-radius:50% 50% 0 0 / 80% 80% 0 0; animation: st-wave 5s ease-in-out infinite alternate; }
@keyframes st-sky { 0%,100% { opacity:0.6; } 50% { opacity:1; } }
@keyframes st-figure { 0% { transform: rotate(-5deg) translateX(0); } 25% { transform: rotate(3deg) translateX(3px); } 50% { transform: rotate(-2deg) translateX(-2px); } 75% { transform: rotate(6deg) translateX(4px); } 100% { transform: rotate(-4deg) translateX(0); } }
@keyframes st-bottle { 0% { transform: rotate(-20deg) scaleY(1); } 50% { transform: rotate(10deg) scaleY(1.1); } 100% { transform: rotate(-15deg) scaleY(0.95); } }
@keyframes st-bubbles { 0% { opacity:0.3; transform: scale(1) translateY(0); } 50% { opacity:0.7; transform: scale(1.2) translateY(-5px); } 100% { opacity:0.4; transform: scale(0.9) translateY(2px); } }
@keyframes st-wave { 0% { transform: translateY(0) scaleX(1); } 50% { transform: translateY(-3px) scaleX(1.02); } 100% { transform: translateY(2px) scaleX(0.98); } }

/* ---------- ferdinand-logs ---------- */
.scn-ferdinand-logs {
  background:
    linear-gradient(180deg, #d0d8d0 0%, #a8b8a0 40%, #809880 100%),
    radial-gradient(ellipse at 30% 70%, #e8e0c0 0%, transparent 60%);
}
.scn-ferdinand-logs .sky-fl      { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #c8d8e0 0%, #a0b8c0 100%); animation: fl-sky 15s ease-in-out infinite; }
.scn-ferdinand-logs .ground-fl   { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, #6a7a5a 0%, #3a4a2a 100%); border-radius:10% 10% 0 0; box-shadow:inset 0 6px 12px rgba(0,0,0,0.3); }
.scn-ferdinand-logs .cell-arch   { position:absolute; bottom:20%; left:25%; width:50%; height:50%; background: linear-gradient(180deg, #9a8a7a 0%, #5a4a3a 100%); clip-path: polygon(0 50%, 15% 0, 85% 0, 100% 50%, 100% 100%, 0 100%); border-radius:4px; box-shadow:0 8px 16px rgba(0,0,0,0.4); animation: fl-arch 8s ease-in-out infinite; }
.scn-ferdinand-logs .log         { position:absolute; bottom:26%; width:25%; height:6%; background: linear-gradient(180deg, #8a7050 0%, #4a3020 100%); border-radius:30% 30% 10% 10%; transform:rotate(5deg); }
.scn-ferdinand-logs .fl-log1     { left:30%; animation: fl-log1 6s ease-in-out infinite; }
.scn-ferdinand-logs .fl-log2     { left:55%; transform:rotate(-10deg); animation: fl-log2 6s ease-in-out infinite 2s; }
.scn-ferdinand-logs .ferdinand-fig { position:absolute; bottom:18%; left:18%; width:12%; height:35%; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 45% 45% 30% 30% / 60% 60% 35% 35%; transform-origin:bottom center; animation: fl-ferd 8s ease-in-out infinite; }
.scn-ferdinand-logs .sunbeam     { position:absolute; top:0; left:20%; width:30%; height:100%; background: linear-gradient(180deg, rgba(255,240,200,0.15) 0%, rgba(255,220,150,0.05) 100%); clip-path: polygon(0 0, 100% 0, 70% 100%, 30% 100%); animation: fl-beam 12s ease-in-out infinite; }
@keyframes fl-sky { 0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.7; } }
@keyframes fl-arch { 0% { transform: scaleY(1); } 50% { transform: scaleY(1.03); } 100% { transform: scaleY(0.97); } }
@keyframes fl-log1 { 0% { transform: rotate(5deg) translateY(0); } 50% { transform: rotate(8deg) translateY(-2px); } 100% { transform: rotate(3deg) translateY(1px); } }
@keyframes fl-log2 { 0% { transform: rotate(-10deg) translateY(0); } 50% { transform: rotate(-6deg) translateY(-2px); } 100% { transform: rotate(-12deg) translateY(1px); } }
@keyframes fl-ferd { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(10px) rotate(2deg); } 50% { transform: translateX(20px) rotate(-1deg); } 75% { transform: translateX(30px) rotate(1deg); } 100% { transform: translateX(40px) rotate(0deg); } }
@keyframes fl-beam { 0% { opacity:0.3; transform: skewX(-2deg); } 50% { opacity:0.6; transform: skewX(0deg); } 100% { opacity:0.4; transform: skewX(2deg); } }

/* one block per scene id. Append to style.css. */

/* ========== ceres-arrival ========== */
.scn-ceres-arrival {
  background: linear-gradient(180deg, #fce4b3 0%, #f9d68a 30%, #f2c75e 70%, #e3b53b 100%),
              radial-gradient(ellipse at 50% 0%, #fff7d6 0%, transparent 60%);
}
.scn-ceres-arrival .sky-ce {
  position:absolute; inset:0 0 35% 0;
  background: linear-gradient(180deg, #b3d9ff 0%, #99ccff 50%, #cce6ff 100%);
  animation: ce-sky 12s ease-in-out infinite alternate;
}
.scn-ceres-arrival .rainbow-ce {
  position:absolute; bottom:30%; left:5%; right:5%; height:30%;
  background: radial-gradient(ellipse at 50% 0%, transparent 40%, #ff9999 41%, #ff9999 42%, #ffcc66 42%, #ffcc66 43%, #99ff99 43%, #99ff99 44%, #66ccff 44%, #66ccff 45%, #9966ff 45%, #9966ff 46%, transparent 46%);
  border-radius: 50% 50% 0 0 / 100% 100% 0 0;
  opacity: 0.7;
  animation: ce-rainbow 20s ease-in-out infinite alternate;
}
.scn-ceres-arrival .figure-ce {
  position:absolute; bottom:35%; left:50%; width:40px; height:80px; transform:translateX(-50%);
  background: linear-gradient(180deg, #f5cba7 0%, #e6b07e 40%, #d4956b 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: ce-figure 6s ease-in-out infinite;
}
.scn-ceres-arrival .wings-ce {
  position:absolute; bottom:45%; left:calc(50% - 50px); width:100px; height:50px;
  background: radial-gradient(circle at 30% 50%, #ffd700 0%, #ffaa00 50%, transparent 60%);
  border-radius: 50% 50% 0 0;
  animation: ce-wings 4s ease-in-out infinite alternate;
}
.scn-ceres-arrival .flowers-ce {
  position:absolute; bottom:0; left:0; right:0; height:35%;
  background: radial-gradient(circle at 20% 100%, #ff6699 0%, transparent 20%),
              radial-gradient(circle at 40% 100%, #ffcc66 0%, transparent 20%),
              radial-gradient(circle at 60% 100%, #ff6699 0%, transparent 20%),
              radial-gradient(circle at 80% 100%, #ffcc66 0%, transparent 20%);
  animation: ce-flowers 8s ease-in-out infinite;
}
.scn-ceres-arrival .honey-drops-ce {
  position:absolute; bottom:50%; left:30%; width:6px; height:6px;
  background: radial-gradient(circle, #ffe680 0%, #ffcc00 100%);
  border-radius: 50%;
  box-shadow: 0 0 8px 2px rgba(255,204,0,0.6);
  animation: ce-honey 3s ease-in-out infinite;
}
.scn-ceres-arrival .glow-ce {
  position:absolute; bottom:40%; left:40%; width:80px; height:80px;
  background: radial-gradient(circle, #fff7d6 0%, transparent 60%);
  border-radius: 50%;
  mix-blend-mode: overlay;
  animation: ce-glow 5s ease-in-out infinite alternate;
}
@keyframes ce-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.9 } }
@keyframes ce-rainbow { 0% { transform: scaleY(0.8) translateY(0); opacity:0.6 } 50% { transform: scaleY(1) translateY(-5px); opacity:0.8 } 100% { transform: scaleY(0.9) translateY(-2px); opacity:0.7 } }
@keyframes ce-figure { 0%,100% { transform: translateX(-50%) translateY(0) rotate(0deg) } 50% { transform: translateX(-50%) translateY(-8px) rotate(2deg) } }
@keyframes ce-wings { 0% { transform: scaleX(0.7); opacity:0.6 } 50% { transform: scaleX(1) scaleY(1.1); opacity:1 } 100% { transform: scaleX(0.8); opacity:0.7 } }
@keyframes ce-flowers { 0% { background-position: 0 100%; background-size: 100% 100% } 50% { background-position: 10% 100%; background-size: 110% 110% } 100% { background-position: 5% 100%; background-size: 105% 105% } }
@keyframes ce-honey { 0% { transform: translate(0,0) scale(1); opacity:0.8 } 50% { transform: translate(15px, -25px) scale(1.5); opacity:1 } 100% { transform: translate(30px, -50px) scale(0.8); opacity:0.3 } }
@keyframes ce-glow { 0% { transform: scale(0.8); opacity:0.5 } 50% { transform: scale(1.2); opacity:0.9 } 100% { transform: scale(1); opacity:0.7 } }

/* ========== juna-blessings ========== */
.scn-juna-blessings {
  background: linear-gradient(180deg, #fdf0d5 0%, #f5d6a8 40%, #e8b88a 100%),
              radial-gradient(ellipse at 50% 100%, #ffe5b4 0%, transparent 70%);
}
.scn-juna-blessings .sky-ju {
  position:absolute; inset:0 0 30% 0;
  background: linear-gradient(180deg, #b8d4f0 0%, #d6e8ff 60%, #f0f8ff 100%);
  animation: ju-sky 15s ease-in-out infinite alternate;
}
.scn-juna-blessings .clouds-ju {
  position:absolute; top:10%; left:0; right:0; height:20%;
  background: radial-gradient(circle at 20% 50%, rgba(255,255,255,0.6) 0%, transparent 50%),
              radial-gradient(circle at 60% 30%, rgba(255,255,255,0.5) 0%, transparent 40%),
              radial-gradient(circle at 80% 60%, rgba(255,255,255,0.4) 0%, transparent 40%);
  animation: ju-clouds 40s linear infinite;
}
.scn-juna-blessings .dove-1-ju {
  position:absolute; top:25%; left:30%; width:20px; height:16px;
  background: radial-gradient(circle at 50% 40%, #f0f0f0 0%, #d0d0d0 60%);
  border-radius: 50% 50% 0 0 / 60% 60% 0 0;
  transform: rotate(-15deg);
  animation: ju-dove1 8s ease-in-out infinite;
}
.scn-juna-blessings .dove-2-ju {
  position:absolute; top:28%; left:55%; width:18px; height:14px;
  background: radial-gradient(circle at 50% 40%, #f0f0f0 0%, #d0d0d0 60%);
  border-radius: 50% 50% 0 0 / 60% 60% 0 0;
  transform: rotate(10deg);
  animation: ju-dove2 9s ease-in-out infinite;
}
.scn-juna-blessings .chariot-ju {
  position:absolute; bottom:28%; left:50%; width:60px; height:30px; transform:translateX(-50%);
  background: linear-gradient(180deg, #d4af37 0%, #b8962c 50%, #a07e1f 100%);
  border-radius: 20% 20% 40% 40%;
  box-shadow: 0 4px 10px rgba(0,0,0,0.3);
  animation: ju-chariot 5s ease-in-out infinite;
}
.scn-juna-blessings .figure-ju {
  position:absolute; bottom:30%; left:calc(50% - 5px); width:30px; height:50px;
  background: linear-gradient(180deg, #f5cba7 0%, #e6b07e 60%, #d4956b 100%);
  border-radius: 50% 50% 30% 30% / 40% 40% 50% 50%;
  animation: ju-figure 6s ease-in-out infinite;
}
.scn-juna-blessings .torch-ju {
  position:absolute; bottom:32%; left:calc(50% + 18px); width:8px; height:12px;
  background: radial-gradient(circle, #ffd700 0%, #ff8c00 60%, transparent 80%);
  border-radius: 50%;
  box-shadow: 0 0 16px 6px rgba(255,215,0,0.7);
  animation: ju-torch 3s ease-in-out infinite alternate;
}
@keyframes ju-sky { 0% { opacity:0.7 } 50% { opacity:1 } 100% { opacity:0.8 } }
@keyframes ju-clouds { 0% { transform: translateX(-20px) } 100% { transform: translateX(120vw) } }
@keyframes ju-dove1 { 0% { transform: translate(0,0) rotate(-15deg) } 50% { transform: translate(10px,-5px) rotate(-10deg) } 100% { transform: translate(20px,0) rotate(-15deg) } }
@keyframes ju-dove2 { 0% { transform: translate(0,0) rotate(10deg) } 50% { transform: translate(-8px,-6px) rotate(15deg) } 100% { transform: translate(-16px,0) rotate(10deg) } }
@keyframes ju-chariot { 0% { transform: translateX(-50%) translateY(0) } 50% { transform: translateX(-50%) translateY(-4px) } 100% { transform: translateX(-50%) translateY(0) } }
@keyframes ju-figure { 0% { transform: translateX(-50%) translateY(0) } 50% { transform: translateX(-50%) translateY(-6px) } 100% { transform: translateX(-50%) translateY(0) } }
@keyframes ju-torch { 0% { box-shadow: 0 0 12px 4px rgba(255,215,0,0.5); opacity:0.8 } 100% { box-shadow: 0 0 24px 8px rgba(255,215,0,0.9); opacity:1 } }

/* ========== ceres-song ========== */
.scn-ceres-song {
  background: linear-gradient(180deg, #ffeaa7 0%, #fbd46d 30%, #f2b134 60%, #d98a1a 100%),
              radial-gradient(ellipse at 50% 0%, #fff9e0 0%, transparent 50%);
}
.scn-ceres-song .sky-cs {
  position:absolute; inset:0 0 40% 0;
  background: linear-gradient(180deg, #b3d4f0 0%, #d4ecff 60%, #f0faff 100%);
  animation: cs-sky 18s ease-in-out infinite alternate;
}
.scn-ceres-song .sun-cs {
  position:absolute; top:5%; right:15%; width:60px; height:60px;
  background: radial-gradient(circle, #fff7cc 0%, #ffe066 40%, #ffcc00 70%, transparent 80%);
  border-radius: 50%;
  box-shadow: 0 0 60px 20px rgba(255,204,0,0.5);
  animation: cs-sun 12s ease-in-out infinite alternate;
}
.scn-ceres-song .field-cs {
  position:absolute; bottom:0; left:0; right:0; height:40%;
  background: linear-gradient(180deg, #d9b45a 0%, #c49a3b 50%, #a67c2a 100%);
  border-radius: 20% 20% 0 0 / 40% 40% 0 0;
  animation: cs-field 8s ease-in-out infinite;
}
.scn-ceres-song .barn-cs {
  position:absolute; bottom:30%; left:15%; width:90px; height:70px;
  background: linear-gradient(180deg, #8b5e3c 0%, #6b4423 50%, #4a2e14 100%);
  border-radius: 8% 8% 4% 4%;
  box-shadow: 0 6px 12px rgba(0,0,0,0.4);
  animation: cs-barn 5s ease-in-out infinite;
}
.scn-ceres-song .vines-cs {
  position:absolute; bottom:25%; left:35%; width:50px; height:80px;
  background: radial-gradient(circle at 50% 20%, #8fbc54 0%, #5a8c2a 60%, transparent 70%),
              radial-gradient(circle at 20% 60%, #7aac3e 0%, transparent 50%);
  border-radius: 30% 30% 20% 20%;
  animation: cs-vines 7s ease-in-out infinite alternate;
}
.scn-ceres-song .grain-cs {
  position:absolute; bottom:15%; left:5%; width:4px; height:30px;
  background: linear-gradient(180deg, #d4a944 0%, #b88b30 100%);
  border-radius: 50% 50% 0 0;
  box-shadow: 10px 0 #d4a944, 20px 0 #d4a944, 30px 0 #d4a944, 40px 0 #d4a944,
              50px 0 #d4a944, 60px 0 #d4a944, 70px 0 #d4a944, 80px 0 #d4a944,
              90px 0 #d4a944, 100px 0 #d4a944, 110px 0 #d4a944, 120px 0 #d4a944,
              130px 0 #d4a944, 140px 0 #d4a944, 150px 0 #d4a944, 160px 0 #d4a944,
              170px 0 #d4a944, 180px 0 #d4a944;
  animation: cs-grain 4s ease-in-out infinite;
}
.scn-ceres-song .abundance-cs {
  position:absolute; bottom:20%; left:60%; width:40px; height:40px;
  background: radial-gradient(circle at 50% 40%, #ffcc66 0%, #ffaa00 40%, transparent 60%);
  border-radius: 50%;
  box-shadow: 0 0 20px 8px rgba(255,170,0,0.4);
  animation: cs-abundance 6s ease-in-out infinite alternate;
}
@keyframes cs-sky { 0% { opacity:0.7 } 50% { opacity:1 } 100% { opacity:0.8 } }
@keyframes cs-sun { 0% { transform: scale(1); opacity:0.8 } 50% { transform: scale(1.1); opacity:1 } 100% { transform: scale(0.95); opacity:0.9 } }
@keyframes cs-field { 0% { transform: translateY(0) scaleY(1) } 50% { transform: translateY(-2px) scaleY(1.02) } 100% { transform: translateY(0) scaleY(1) } }
@keyframes cs-barn { 0% { transform: translateY(0) } 50% { transform: translateY(-3px) } 100% { transform: translateY(0) } }
@keyframes cs-vines { 0% { transform: scale(0.9) rotate(-2deg) } 50% { transform: scale(1.05) rotate(1deg) } 100% { transform: scale(0.95) rotate(-1deg) } }
@keyframes cs-grain { 0% { transform: rotate(0deg) } 50% { transform: rotate(5deg) } 100% { transform: rotate(0deg) } }
@keyframes cs-abundance { 0% { transform: translate(0,0) scale(0.8); opacity:0.6 } 50% { transform: translate(-5px,-5px) scale(1.1); opacity:1 } 100% { transform: translate(0,0) scale(0.9); opacity:0.7 } }

/* ========== naiads-and-reapers ========== */
.scn-naiads-and-reapers {
  background: linear-gradient(180deg, #cbe8e0 0%, #a8d8c9 30%, #7cc0a0 60%, #569d7b 100%),
              radial-gradient(ellipse at 50% 80%, #dff0e8 0%, transparent 60%);
}
.scn-naiads-and-reapers .sky-nr {
  position:absolute; inset:0 0 25% 0;
  background: linear-gradient(180deg, #b3d9d9 0%, #d4ecec 60%, #eaf5f5 100%);
  animation: nr-sky 14s ease-in-out infinite alternate;
}
.scn-naiads-and-reapers .water-nr {
  position:absolute; bottom:0; left:0; right:0; height:35%;
  background: linear-gradient(180deg, #78b8a8 0%, #5a9c8a 40%, #3a7a68 100%);
  border-radius: 30% 70% 0 0 / 40% 60% 0 0;
  animation: nr-water 9s ease-in-out infinite;
}
.scn-naiads-and-reapers .land-nr {
  position:absolute; bottom:30%; left:10%; right:10%; height:25%;
  background: linear-gradient(180deg, #9bc97a 0%, #6da84b 60%, #4a8a2a 100%);
  border-radius: 40% 40% 0 0 / 50% 50% 0 0;
  animation: nr-land 6s ease-in-out infinite alternate;
}
.scn-naiads-and-reapers .reaper-1-nr {
  position:absolute; bottom:30%; left:20%; width:16px; height:40px;
  background: linear-gradient(180deg, #d4a66a 0%, #b88a4a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: nr-reaper1 5s ease-in-out infinite;
}
.scn-naiads-and-reapers .reaper-2-nr {
  position:absolute; bottom:30%; left:45%; width:16px; height:40px;
  background: linear-gradient(180deg, #d4a66a 0%, #b88a4a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: nr-reaper2 6s ease-in-out infinite;
  animation-delay: 0.5s;
}
.scn-naiads-and-reapers .naiad-1-nr {
  position:absolute; bottom:10%; left:65%; width:20px; height:50px;
  background: linear-gradient(180deg, #cbe8e0 0%, #78b8a8 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  animation: nr-naiad1 8s ease-in-out infinite;
}
.scn-naiads-and-reapers .naiad-2-nr {
  position:absolute; bottom:8%; left:80%; width:18px; height:45px;
  background: linear-gradient(180deg, #cbe8e0 0%, #78b8a8 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  animation: nr-naiad2 9s ease-in-out infinite;
  animation-delay: 1s;
}
.scn-naiads-and-reapers .sedges-nr {
  position:absolute; bottom:25%; left:5%; right:5%; height:15%;
  background: radial-gradient(circle at 10% 100%, #5a7a3a 0%, transparent 20%),
              radial-gradient(circle at 30% 100%, #5a7a3a 0%, transparent 15%),
              radial-gradient(circle at 50% 100%, #5a7a3a 0%, transparent 18%),
              radial-gradient(circle at 70% 100%, #5a7a3a 0%, transparent 20%),
              radial-gradient(circle at 90% 100%, #5a7a3a 0%, transparent 15%);
  animation: nr-sedges 7s ease-in-out infinite alternate;
}
.scn-naiads-and-reapers .crown-nr {
  position:absolute; bottom:35%; left:63%; width:12px; height:6px;
  background: radial-gradient(circle, #8fd14a 0%, #6da84b 100%);
  border-radius: 50% 50% 0 0;
  animation: nr-crown 4s ease-in-out infinite;
}
@keyframes nr-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.9 } }
@keyframes nr-water { 0% { transform: translateY(0) scaleY(1) } 50% { transform: translateY(2px) scaleY(1.03) } 100% { transform: translateY(0) scaleY(1) } }
@keyframes nr-land { 0% { transform: scaleY(0.95) } 50% { transform: scaleY(1) } 100% { transform: scaleY(0.95) } }
@keyframes nr-reaper1 { 0% { transform: translate(0,0) rotate(-2deg) } 25% { transform: translate(5px, -3px) rotate(1deg) } 50% { transform: translate(10px, 0) rotate(2deg) } 75% { transform: translate(5px, -1px) rotate(0deg) } 100% { transform: translate(0,0) rotate(-2deg) } }
@keyframes nr-reaper2 { 0% { transform: translate(0,0) rotate(2deg) } 25% { transform: translate(-4px, -2px) rotate(-1deg) } 50% { transform: translate(-8px, 0) rotate(-2deg) } 75% { transform: translate(-4px, -1px) rotate(0deg) } 100% { transform: translate(0,0) rotate(2deg) } }
@keyframes nr-naiad1 { 0% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(-8px) rotate(3deg) } 100% { transform: translateY(0) rotate(0deg) } }
@keyframes nr-naiad2 { 0% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(-6px) rotate(-4deg) } 100% { transform: translateY(0) rotate(0deg) } }
@keyframes nr-sedges { 0% { background-position: 0 100%; background-size: 100% 100% } 50% { background-position: 5% 100%; background-size: 110% 110% } 100% { background-position: 0 100%; background-size: 100% 100% } }
@keyframes nr-crown { 0% { transform: scale(1) rotate(0deg); opacity:0.8 } 50% { transform: scale(1.2) rotate(10deg); opacity:1 } 100% { transform: scale(1) rotate(0deg); opacity:0.8 } }

/* Scene: ariel-leads-away (tense, sunlit) */
.scn-ariel-leads-away {
  background: 
    linear-gradient(180deg, #77aaff 0%, #b0d0ff 40%, #e0f0ff 70%, #fff5e0 100%),
    radial-gradient(ellipse at 70% 30%, #fffcd0 0%, transparent 60%);
}
.scn-ariel-leads-away .sky { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #99ccff 0%, transparent 100%); animation: ala-sky 12s ease-in-out infinite alternate; }
.scn-ariel-leads-away .sun { position:absolute; top:12%; left:65%; width:60px; height:60px; background: radial-gradient(circle, #fff8c0 0%, #ffdd80 50%, transparent 70%); border-radius:50%; box-shadow: 0 0 60px 20px rgba(255,221,128,0.4); animation: ala-sun 8s ease-in-out infinite; }
.scn-ariel-leads-away .hills { position:absolute; bottom:30%; left:0; right:0; height:35%; background: linear-gradient(180deg, #9aba7a 0%, #5a7a4a 100%); border-radius: 50% 50% 0 0 / 40% 40% 0 0; box-shadow: inset 0 10px 30px rgba(0,0,0,0.3); animation: ala-hills 20s ease-in-out infinite alternate; }
.scn-ariel-leads-away .path { position:absolute; bottom:18%; left:10%; width:80%; height:12%; background: linear-gradient(90deg, #c8a870 0%, #e0c090 50%, #c8a870 100%); border-radius: 50% / 20%; transform-origin: bottom; animation: ala-path 15s ease-in-out infinite; }
.scn-ariel-leads-away .ariel-glow { position:absolute; bottom:45%; left:25%; width:20px; height:35px; background: radial-gradient(ellipse at 50% 60%, #ffffff 0%, #b0d0ff 60%, transparent 100%); border-radius:50%; box-shadow: 0 0 30px 10px rgba(176,208,255,0.6), 0 0 60px 20px rgba(176,208,255,0.3); animation: ala-glow 4s ease-in-out infinite alternate; }
.scn-ariel-leads-away .figure-leader { position:absolute; bottom:15%; left:35%; width:22px; height:40px; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ala-walk-leader 5s ease-in-out infinite; }
.scn-ariel-leads-away .figure-follower { position:absolute; bottom:15%; left:48%; width:24px; height:38px; background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ala-walk-follower 5s ease-in-out infinite 0.3s; }
.scn-ariel-leads-away .dust-a { position:absolute; bottom:20%; left:30%; width:10px; height:10px; background: radial-gradient(circle, rgba(255,245,200,0.8) 0%, transparent 100%); border-radius:50%; filter: blur(2px); animation: ala-dust 6s ease-in-out infinite; }
.scn-ariel-leads-away .dust-b { position:absolute; bottom:22%; left:42%; width:14px; height:14px; background: radial-gradient(circle, rgba(255,245,200,0.6) 0%, transparent 100%); border-radius:50%; filter: blur(3px); animation: ala-dust 6s ease-in-out infinite 3s; }
@keyframes ala-sky { 0% { opacity:0.7 } 50% { opacity:1 } 100% { opacity:0.8 } }
@keyframes ala-sun { 0%,100% { transform: scale(1) translateY(0); box-shadow: 0 0 60px 20px rgba(255,221,128,0.4); } 50% { transform: scale(1.05) translateY(-3px); box-shadow: 0 0 80px 30px rgba(255,221,128,0.6); } }
@keyframes ala-hills { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes ala-path { 0%,100% { transform: scaleX(1); } 50% { transform: scaleX(0.95); } }
@keyframes ala-glow { 0% { opacity:0.7; transform: scale(0.9); } 50% { opacity:1; transform: scale(1.1); } 100% { opacity:0.8; transform: scale(1); } }
@keyframes ala-walk-leader { 0% { transform: translateX(0) translateY(0) rotate(-1deg); } 25% { transform: translateX(5px) translateY(-1px) rotate(1deg); } 50% { transform: translateX(10px) translateY(0) rotate(-1deg); } 75% { transform: translateX(15px) translateY(-1px) rotate(1deg); } 100% { transform: translateX(20px) translateY(0) rotate(0); } }
@keyframes ala-walk-follower { 0% { transform: translateX(0) translateY(0) rotate(-1deg); } 25% { transform: translateX(4px) translateY(-1px) rotate(1deg); } 50% { transform: translateX(8px) translateY(0) rotate(-1deg); } 75% { transform: translateX(12px) translateY(-1px) rotate(1deg); } 100% { transform: translateX(16px) translateY(0) rotate(0); } }
@keyframes ala-dust { 0% { transform: translate(0, 0) scale(1); opacity:0.8; } 50% { transform: translate(15px, -10px) scale(1.5); opacity:0.3; } 100% { transform: translate(30px, -20px) scale(0.5); opacity:0; } }

/* Scene: alonso-weary (dark, sunlit) */
.scn-alonso-weary {
  background: 
    linear-gradient(180deg, #b0b8c0 0%, #d0d8e0 40%, #e8eef0 70%, #f0f4f5 100%),
    radial-gradient(ellipse at 50% 80%, #c0d0d8 0%, transparent 60%);
}
.scn-alonso-weary .sky { position:absolute; inset:0 0 35% 0; background: linear-gradient(180deg, #d0d8e0 0%, transparent 100%); animation: alw-sky 15s ease-in-out infinite alternate; }
.scn-alonso-weary .tree-bare { position:absolute; bottom:40%; left:15%; width:12px; height:70%; background: linear-gradient(180deg, #4a4a5a 0%, #2a2a3a 100%); border-radius: 30% 30% 10% 10%; transform-origin: bottom; box-shadow: inset -2px 0 4px rgba(0,0,0,0.3); animation: alw-tree 25s ease-in-out infinite; }
.scn-alonso-weary .tree-bare::after { content:''; position:absolute; top:-20%; left:0; width:100%; height:30%; background: radial-gradient(ellipse at 50% 100%, #5a5a6a 0%, transparent 100%); border-radius: 50%; } /* not counting as separate child, just detail */
.scn-alonso-weary .rock { position:absolute; bottom:20%; left:35%; width:80px; height:50px; background: linear-gradient(180deg, #6a6a7a 0%, #3a3a4a 100%); border-radius: 60% 40% 30% 30% / 50% 50% 30% 30%; box-shadow: 0 8px 16px rgba(0,0,0,0.4); animation: alw-rock 30s ease-in-out infinite alternate; }
.scn-alonso-weary .alonso-sit { position:absolute; bottom:25%; left:40%; width:28px; height:48px; background: linear-gradient(180deg, #4a4a5a 0%, #2a2a3a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%; transform-origin: bottom center; animation: alw-sit 10s ease-in-out infinite; }
.scn-alonso-weary .staff { position:absolute; bottom:20%; left:38%; width:4px; height:50px; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 20%; transform-origin: bottom; animation: alw-staff 12s ease-in-out infinite; }
.scn-alonso-weary .shadow { position:absolute; bottom:18%; left:35%; width:60px; height:12px; background: radial-gradient(ellipse, rgba(0,0,0,0.3) 0%, transparent 100%); border-radius:50%; filter: blur(2px); animation: alw-shadow 8s ease-in-out infinite alternate; }
.scn-alonso-weary .leaf-drift { position:absolute; top:20%; right:10%; width:8px; height:8px; background: #7a8a5a; border-radius: 50% 0 / 50% 0; transform: rotate(45deg); animation: alw-leaf 18s linear infinite; }
@keyframes alw-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.85 } }
@keyframes alw-tree { 0% { transform: rotate(0deg); } 50% { transform: rotate(0.5deg); } 100% { transform: rotate(-0.5deg); } } /* bare tree sways subtly */
@keyframes alw-rock { 0% { transform: translateY(0); box-shadow: 0 8px 16px rgba(0,0,0,0.4); } 50% { transform: translateY(-1px); box-shadow: 0 10px 20px rgba(0,0,0,0.45); } 100% { transform: translateY(0); box-shadow: 0 8px 16px rgba(0,0,0,0.4); } }
@keyframes alw-sit { 0%,100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-1px) rotate(0.5deg); } }
@keyframes alw-staff { 0%,100% { transform: rotate(0deg); } 50% { transform: rotate(1deg); } }
@keyframes alw-shadow { 0% { transform: scaleX(1); opacity:0.6; } 50% { transform: scaleX(0.9); opacity:0.5; } 100% { transform: scaleX(1); opacity:0.6; } }
@keyframes alw-leaf { 0% { transform: translateX(0) translateY(0) rotate(45deg); opacity:0.8; } 50% { transform: translateX(-80px) translateY(60px) rotate(135deg); opacity:0.4; } 100% { transform: translateX(-160px) translateY(120px) rotate(225deg); opacity:0; } }

/* Scene: antonio-plot-night (tense, sunlit) */
.scn-antonio-plot-night {
  background: 
    linear-gradient(180deg, #e0e8f0 0%, #f8f0e0 40%, #f0e8d0 70%, #e0d0b0 100%),
    radial-gradient(ellipse at 60% 20%, #ffffff 0%, transparent 50%);
}
.scn-antonio-plot-night .sky-bright { position:absolute; inset:0 0 25% 0; background: linear-gradient(180deg, #aaccff 0%, transparent 100%); animation: apn-sky 10s ease-in-out infinite alternate; }
.scn-antonio-plot-night .sun-glare { position:absolute; top:8%; left:70%; width:80px; height:80px; background: radial-gradient(circle, #fff8e0 0%, #ffe8a0 40%, transparent 70%); border-radius:50%; box-shadow: 0 0 80px 30px rgba(255,232,160,0.5); animation: apn-glare 7s ease-in-out infinite; }
.scn-antonio-plot-night .ground { position:absolute; bottom:0; left:0; right:0; height:35%; background: linear-gradient(180deg, #b8a880 0%, #8a7a5a 100%); border-radius: 30% 70% 0 0 / 20% 30% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,0.2); animation: apn-ground 20s ease-in-out infinite alternate; }
.scn-antonio-plot-night .antonio-fig { position:absolute; bottom:18%; left:40%; width:22px; height:40px; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: apn-fig1 6s ease-in-out infinite; }
.scn-antonio-plot-night .sebastian-fig { position:absolute; bottom:18%; left:52%; width:24px; height:42px; background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: apn-fig2 6s ease-in-out infinite 0.5s; }
.scn-antonio-plot-night .shadow-sharp { position:absolute; bottom:15%; left:38%; width:40px; height:10px; background: linear-gradient(90deg, rgba(0,0,0,0.4) 0%, transparent 100%); border-radius: 50%; filter: blur(1px); animation: apn-shadow 4s ease-in-out infinite alternate; }
.scn-antonio-plot-night .knife-hint { position:absolute; bottom:22%; left:44%; width:4px; height:16px; background: linear-gradient(180deg, #a0a0a0 0%, #707070 100%); border-radius: 2px; transform: rotate(20deg); animation: apn-knife 8s ease-in-out infinite; }
.scn-antonio-plot-night .dust-b { position:absolute; top:30%; left:20%; width:12px; height:12px; background: radial-gradient(circle, rgba(255,240,180,0.5) 0%, transparent 100%); border-radius:50%; filter: blur(2px); animation: apn-dust 12s linear infinite; }
@keyframes apn-sky { 0% { opacity:0.75 } 50% { opacity:1 } 100% { opacity:0.8 } }
@keyframes apn-glare { 0%,100% { transform: scale(1); box-shadow: 0 0 80px 30px rgba(255,232,160,0.5); } 50% { transform: scale(1.08); box-shadow: 0 0 100px 40px rgba(255,232,160,0.7); } }
@keyframes apn-ground { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes apn-fig1 { 0% { transform: translateX(0) translateY(0) rotate(0deg); } 25% { transform: translateX(2px) translateY(-1px) rotate(1deg); } 50% { transform: translateX(0) translateY(0) rotate(-1deg); } 75% { transform: translateX(-2px) translateY(-1px) rotate(1deg); } 100% { transform: translateX(0) translateY(0) rotate(0deg); } }
@keyframes apn-fig2 { 0% { transform: translateX(0) translateY(0) rotate(0deg); } 25% { transform: translateX(-2px) translateY(-1px) rotate(-1deg); } 50% { transform: translateX(0) translateY(0) rotate(1deg); } 75% { transform: translateX(2px) translateY(-1px) rotate(-1deg); } 100% { transform: translateX(0) translateY(0) rotate(0deg); } }
@keyframes apn-shadow { 0% { transform: skewX(0deg); opacity:0.8; } 50% { transform: skewX(-5deg); opacity:0.6; } 100% { transform: skewX(0deg); opacity:0.8; } }
@keyframes apn-knife { 0%,100% { transform: rotate(20deg) translateY(0); } 50% { transform: rotate(25deg) translateY(-2px); } }
@keyframes apn-dust { 0% { transform: translateX(0) translateY(0) scale(1); opacity:0.5; } 50% { transform: translateX(30px) translateY(-20px) scale(1.8); opacity:0.2; } 100% { transform: translateX(60px) translateY(-40px) scale(0.3); opacity:0; } }

/* Scene: banquet-marvel (warm, dim-interior) */
.scn-banquet-marvel {
  background: 
    linear-gradient(180deg, #2a1a0a 0%, #3a2a1a 30%, #4a3a2a 60%, #3a2a1a 100%),
    radial-gradient(ellipse at 50% 70%, #6a4a2a 0%, transparent 70%);
}
.scn-banquet-marvel .wall { position:absolute; inset:0; background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%); border-radius: 0; animation: bqm-wall 30s ease-in-out infinite alternate; }
.scn-banquet-marvel .table { position:absolute; bottom:20%; left:10%; right:10%; height:30%; background: linear-gradient(180deg, #5a3a2a 0%, #3a2a1a 100%); border-radius: 10% 10% 5% 5%; box-shadow: 0 -4px 12px rgba(0,0,0,0.6), inset 0 2px 4px rgba(255,200,150,0.2); animation: bqm-table 20s ease-in-out infinite; }
.scn-banquet-marvel .candle { position:absolute; bottom:40%; left:30%; width:8px; height:30px; background: linear-gradient(180deg, #f0d8a0 0%, #d0a060 100%); border-radius: 2px; box-shadow: 0 0 20px 8px rgba(255,200,100,0.6); animation: bqm-candle 5s ease-in-out infinite; }
.scn-banquet-marvel .candle::before { content:''; position:absolute; top:-8px; left:-2px; width:12px; height:12px; background: radial-gradient(circle, #fff0c0 0%, #ffd060 60%, transparent 100%); border-radius:50%; box-shadow: 0 0 16px 6px #ffd060; } /* small flame, not counted as separate child but part of candle */
.scn-banquet-marvel .plate { position:absolute; bottom:28%; left:40%; width:40px; height:10px; background: radial-gradient(ellipse at 50% 30%, #d0b090 0%, #a08060 100%); border-radius: 50%; box-shadow: 0 2px 4px rgba(0,0,0,0.4); animation: bqm-plate 12s ease-in-out infinite; }
.scn-banquet-marvel .goblet { position:absolute; bottom:32%; left:55%; width:14px; height:24px; background: linear-gradient(180deg, #b08060 0%, #805040 100%); border-radius: 10% 10% 20% 20%; box-shadow: 0 4px 8px rgba(0,0,0,0.5); animation: bqm-goblet 8s ease-in-out infinite; }
.scn-banquet-marvel .fruit { position:absolute; bottom:27%; left:35%; width:18px; height:18px; background: radial-gradient(circle at 40% 30%, #c8553d 0%, #a0461a 100%); border-radius: 50%; box-shadow: 0 2px 6px rgba(0,0,0,0.3); animation: bqm-fruit 6s ease-in-out infinite; }
.scn-banquet-marvel .figure-seated { position:absolute; bottom:22%; left:20%; width:30px; height:40px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: bqm-figure 14s ease-in-out infinite; }
.scn-banquet-marvel .candle-light { position:absolute; inset:0; background: radial-gradient(ellipse at 30% 45%, rgba(255,200,100,0.15) 0%, transparent 60%); pointer-events:none; animation: bqm-light 5s ease-in-out infinite alternate; }
@keyframes bqm-wall { 0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.85; } }
@keyframes bqm-table { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-1px); } }
@keyframes bqm-candle { 0% { transform: translateY(0) rotate(-1deg); box-shadow: 0 0 20px 8px rgba(255,200,100,0.6); } 50% { transform: translateY(-2px) rotate(1deg); box-shadow: 0 0 28px 12px rgba(255,200,100,0.8); } 100% { transform: translateY(0) rotate(-1deg); box-shadow: 0 0 20px 8px rgba(255,200,100,0.6); } }
@keyframes bqm-plate { 0% { transform: scale(1); } 50% { transform: scale(0.97); } 100% { transform: scale(1); } }
@keyframes bqm-goblet { 0%,100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-2px) rotate(1deg); } }
@keyframes bqm-fruit { 0% { transform: translateY(0) scale(1); } 50% { transform: translateY(-1px) scale(1.05); } 100% { transform: translateY(0) scale(1); } }
@keyframes bqm-figure { 0%,100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-1px) rotate(0.5deg); } }
@keyframes bqm-light { 0% { opacity:0.6; } 50% { opacity:1; } 100% { opacity:0.7; } }

/* Scene: prospero-embraces-gonzalo */
.scn-prospero-embraces-gonzalo { background: linear-gradient(180deg, #ffcc77 0%, #ffaa55 20%, #ddaa66 40%, #88aacc 70%, #336699 100%), radial-gradient(ellipse at 50% 0%, #ffeeb0 0%, transparent 60%); }

.scn-prospero-embraces-gonzalo .sky-dawn {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #ffcc88 0%, #bb8855 100%);
  animation: pe1-sky 12s ease-in-out infinite alternate;
}
.scn-prospero-embraces-gonzalo .sun-glow {
  position: absolute; top: 8%; left: 30%; width: 60px; height: 60px;
  background: radial-gradient(circle, #ffdd99 0%, #ffaa55 40%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 80px 40px rgba(255,170,85,0.3);
  animation: pe1-sun 8s ease-in-out infinite;
}
.scn-prospero-embraces-gonzalo .horizon-isle {
  position: absolute; bottom: 32%; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #556644 0%, #334433 100%);
  border-radius: 30% 70% 0 0 / 50% 50% 0 0;
  box-shadow: inset 0 4px 12px rgba(0,0,0,0.3);
  animation: pe1-horizon 15s ease-in-out infinite alternate;
}
.scn-prospero-embraces-gonzalo .figure-left {
  position: absolute; bottom: 25%; left: 36%; width: 24px; height: 60px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 30% 30%;
  transform-origin: bottom center;
  animation: pe1-figure-left 6s ease-in-out infinite;
}
.scn-prospero-embraces-gonzalo .figure-right {
  position: absolute; bottom: 25%; left: 44%; width: 22px; height: 58px;
  background: linear-gradient(180deg, #3a4a3a 0%, #1a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 30% 30%;
  transform-origin: bottom center;
  animation: pe1-figure-right 6s ease-in-out infinite reverse;
}
.scn-prospero-embraces-gonzalo .embrace-arm {
  position: absolute; bottom: 30%; left: 39%; width: 18px; height: 8px;
  background: #2a1a0a;
  border-radius: 50%;
  transform: rotate(-20deg);
  transform-origin: left center;
  animation: pe1-arm 6s ease-in-out infinite;
}
.scn-prospero-embraces-gonzalo .cloud-drift {
  position: absolute; height: 14px; border-radius: 50%; filter: blur(4px);
  background: rgba(255,255,220,0.3);
}
.scn-prospero-embraces-gonzalo .cloud-a {
  top: 14%; width: 80px; left: -15%;
  animation: pe1-drift-a 30s linear infinite;
}
.scn-prospero-embraces-gonzalo .cloud-b {
  top: 22%; width: 60px; right: -10%;
  animation: pe1-drift-b 40s linear infinite reverse;
}

@keyframes pe1-sky {
  0% { opacity: 0.7; }
  50% { opacity: 1; }
  100% { opacity: 0.8; }
}
@keyframes pe1-sun {
  0% { transform: scale(0.9) translate(0,0); box-shadow: 0 0 60px 20px rgba(255,170,85,0.2); }
  50% { transform: scale(1.1) translate(2px,-4px); box-shadow: 0 0 100px 50px rgba(255,170,85,0.5); }
  100% { transform: scale(0.95) translate(1px,2px); box-shadow: 0 0 70px 30px rgba(255,170,85,0.3); }
}
@keyframes pe1-horizon {
  0% { transform: translateY(0); }
  50% { transform: translateY(-3px); }
  100% { transform: translateY(0); }
}
@keyframes pe1-figure-left {
  0% { transform: translateX(0) rotate(0deg); }
  30% { transform: translateX(4px) rotate(2deg); }
  60% { transform: translateX(-2px) rotate(-1deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes pe1-figure-right {
  0% { transform: translateX(0) rotate(0deg); }
  30% { transform: translateX(-4px) rotate(-2deg); }
  60% { transform: translateX(2px) rotate(1deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes pe1-arm {
  0% { transform: rotate(-15deg); }
  50% { transform: rotate(-25deg); }
  100% { transform: rotate(-15deg); }
}
@keyframes pe1-drift-a {
  0% { transform: translateX(-80px); }
  100% { transform: translateX(120vw); }
}
@keyframes pe1-drift-b {
  0% { transform: translateX(0); }
  100% { transform: translateX(-120vw); }
}

/* Scene: revelation-prospero-duke */
.scn-revelation-prospero-duke { background: linear-gradient(180deg, #87ceeb 0%, #e0f0ff 40%, #ffcc88 70%, #cc8866 100%), radial-gradient(ellipse at 60% 10%, #fff5dd 0%, transparent 50%); }

.scn-revelation-prospero-duke .sky-sunlit {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(180deg, #b0d4f1 0%, #ffebc0 100%);
  animation: rp-sky 10s ease-in-out infinite alternate;
}
.scn-revelation-prospero-duke .sun-harsh {
  position: absolute; top: 6%; left: 60%; width: 50px; height: 50px;
  background: radial-gradient(circle, #ffffcc 0%, #ffdd99 60%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 80px 40px rgba(255,221,153,0.4);
  animation: rp-sun 7s ease-in-out infinite;
}
.scn-revelation-prospero-duke .ground-shadow {
  position: absolute; bottom: 25%; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #8a7a5a 0%, #5a4a3a 100%);
  clip-path: polygon(0% 0%, 10% 100%, 90% 100%, 100% 0%);
  animation: rp-ground 15s ease-in-out infinite alternate;
}
.scn-revelation-prospero-duke .figure-prospero {
  position: absolute; bottom: 20%; left: 45%; width: 28px; height: 70px;
  background: linear-gradient(180deg, #2a2a3a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 30% 30%;
  transform-origin: bottom center;
  box-shadow: 0 4px 8px rgba(0,0,0,0.5);
  animation: rp-figure 4s ease-in-out infinite;
}
.scn-revelation-prospero-duke .staff-shadow {
  position: absolute; bottom: 18%; left: 48%; width: 4px; height: 50px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  transform: rotate(15deg);
  transform-origin: bottom center;
  animation: rp-staff 3s ease-in-out infinite;
}
.scn-revelation-prospero-duke .dust-mot {
  position: absolute; bottom: 30%; left: 30%; width: 4px; height: 4px;
  background: rgba(200,200,150,0.6);
  border-radius: 50%;
  filter: blur(2px);
  animation: rp-dust 8s linear infinite;
}

@keyframes rp-sky {
  0% { opacity: 0.8; }
  50% { opacity: 1; }
  100% { opacity: 0.7; }
}
@keyframes rp-sun {
  0% { transform: scale(0.95) translate(0,0); }
  50% { transform: scale(1.15) translate(3px,-6px); box-shadow: 0 0 100px 50px rgba(255,221,153,0.6); }
  100% { transform: scale(1) translate(-2px,2px); }
}
@keyframes rp-ground {
  0% { transform: scaleY(1); }
  50% { transform: scaleY(0.97); }
  100% { transform: scaleY(1); }
}
@keyframes rp-figure {
  0% { transform: translateX(0) rotate(0deg); }
  25% { transform: translateX(3px) rotate(2deg); }
  50% { transform: translateX(0) rotate(-1deg); }
  75% { transform: translateX(-2px) rotate(1deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes rp-staff {
  0% { transform: rotate(12deg); }
  50% { transform: rotate(18deg); }
  100% { transform: rotate(12deg); }
}
@keyframes rp-dust {
  0% { transform: translateY(0) scale(1); opacity: 0.6; }
  50% { transform: translateY(-20px) scale(0.5); opacity: 0; }
  100% { transform: translateY(-40px) scale(0.3); opacity: 0; }
}

/* Scene: cell-introduction */
.scn-cell-introduction { background: linear-gradient(180deg, #2a2a3a 0%, #3a3a4a 20%, #4a3a2a 50%, #3a2a1a 100%), radial-gradient(ellipse at 30% 70%, #6a4a2a 0%, transparent 70%); }

.scn-cell-introduction .cave-wall {
  position: absolute; inset: 0;
  background: linear-gradient(135deg, #3a2a1a 0%, #2a1a0a 100%);
  clip-path: polygon(0% 0%, 100% 0%, 80% 100%, 0% 100%);
  animation: ci-wall 20s ease-in-out infinite alternate;
}
.scn-cell-introduction .cave-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 20% 20% 0 0;
  box-shadow: inset 0 8px 16px rgba(0,0,0,0.5);
}
.scn-cell-introduction .table-dark {
  position: absolute; bottom: 22%; left: 30%; width: 80px; height: 10px;
  background: linear-gradient(180deg, #5a3a1a 0%, #3a2a0a 100%);
  border-radius: 10%;
  transform: skewX(-10deg);
  animation: ci-table 7s ease-in-out infinite;
}
.scn-cell-introduction .book-open {
  position: absolute; bottom: 26%; left: 33%; width: 40px; height: 16px;
  background: linear-gradient(180deg, #a08060 0%, #604020 100%);
  border-radius: 2px;
  transform: perspective(80px) rotateX(15deg);
  box-shadow: 0 2px 4px rgba(0,0,0,0.3);
  animation: ci-book 10s ease-in-out infinite alternate;
}
.scn-cell-introduction .lantern-glow {
  position: absolute; bottom: 30%; left: 55%; width: 12px; height: 12px;
  background: radial-gradient(circle, #ffcc66 0%, #ddaa44 50%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 40px 20px rgba(255,204,102,0.3);
  animation: ci-lantern 4s ease-in-out infinite alternate;
}
.scn-cell-introduction .figure-cell {
  position: absolute; bottom: 18%; left: 40%; width: 26px; height: 66px;
  background: linear-gradient(180deg, #2a2a3a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 30% 30%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.5);
  animation: ci-figure 5s ease-in-out infinite;
}
.scn-cell-introduction .shelf-attic {
  position: absolute; top: 8%; left: 20%; width: 120px; height: 6px;
  background: linear-gradient(180deg, #5a3a2a 0%, #3a1a0a 100%);
  border-radius: 2px;
  box-shadow: 0 4px 6px rgba(0,0,0,0.4);
  animation: ci-shelf 12s ease-in-out infinite;
}

@keyframes ci-wall {
  0% { opacity: 0.9; filter: brightness(0.9); }
  50% { opacity: 1; filter: brightness(1.1); }
  100% { opacity: 0.85; filter: brightness(0.95); }
}
@keyframes ci-table {
  0% { transform: skewX(-8deg) translateY(0); }
  50% { transform: skewX(-12deg) translateY(-2px); }
  100% { transform: skewX(-8deg) translateY(0); }
}
@keyframes ci-book {
  0% { transform: perspective(80px) rotateX(12deg); }
  50% { transform: perspective(80px) rotateX(18deg); }
  100% { transform: perspective(80px) rotateX(14deg); }
}
@keyframes ci-lantern {
  0% { box-shadow: 0 0 30px 10px rgba(255,204,102,0.2); opacity: 0.8; }
  50% { box-shadow: 0 0 60px 30px rgba(255,204,102,0.5); opacity: 1; }
  100% { box-shadow: 0 0 40px 15px rgba(255,204,102,0.3); opacity: 0.9; }
}
@keyframes ci-figure {
  0% { transform: translateY(0) rotate(0deg); }
  25% { transform: translateY(-1px) rotate(1deg); }
  50% { transform: translateY(0) rotate(-1deg); }
  75% { transform: translateY(-2px) rotate(1deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes ci-shelf {
  0% { transform: translateX(0); }
  50% { transform: translateX(-5px); }
  100% { transform: translateX(0); }
}

/* Scene: item-chessboard */
.scn-item-chessboard { background: linear-gradient(180deg, #2a2a3a 0%, #3a3a2a 30%, #4a3a2a 60%, #2a1a0a 100%), radial-gradient(ellipse at 50% 70%, #6a4a2a 0%, transparent 70%); }

.scn-item-chessboard .cell-bg {
  position: absolute; inset: 0;
  background: linear-gradient(135deg, #3a2a1a 0%, #1a0a00 100%);
  clip-path: polygon(0% 0%, 100% 0%, 85% 100%, 15% 100%);
  animation: ch-bg 20s ease-in-out infinite alternate;
}
.scn-item-chessboard .floor-stone {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: repeating-linear-gradient(90deg, #4a3a2a 0px, #4a3a2a 8px, #3a2a1a 8px, #3a2a1a 16px);
  border-radius: 5% 5% 0 0;
  box-shadow: inset 0 6px 12px rgba(0,0,0,0.6);
}
.scn-item-chessboard .chessboard-grid {
  position: absolute; bottom: 20%; left: 50%; width: 80px; height: 80px;
  transform: translateX(-50%) perspective(120px) rotateX(30deg);
  background:
    repeating-linear-gradient(90deg, #1a1a0a 0px, #1a1a0a 10px, #d0c0a0 10px, #d0c0a0 20px),
    repeating-linear-gradient(0deg, #1a1a0a 0px, #1a1a0a 10px, #d0c0a0 10px, #d0c0a0 20px);
  background-size: 20px 20px;
  border: 2px solid #5a3a1a;
  box-shadow: 0 4px 8px rgba(0,0,0,0.5);
  animation: ch-board 15s ease-in-out infinite;
}
.scn-item-chessboard .figure-left-chess {
  position: absolute; bottom: 18%; left: 30%; width: 22px; height: 50px;
  background: linear-gradient(180deg, #3a2a3a 0%, #1a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 30% 30%;
  transform-origin: bottom center;
  animation: ch-figure-left 6s ease-in-out infinite;
}
.scn-item-chessboard .figure-right-chess {
  position: absolute; bottom: 18%; left: 55%; width: 20px; height: 48px;
  background: linear-gradient(180deg, #2a3a2a 0%, #0a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 30% 30%;
  transform-origin: bottom center;
  animation: ch-figure-right 6s ease-in-out infinite reverse;
}
.scn-item-chessboard .figure-prospero-chess {
  position: absolute; bottom: 18%; left: 68%; width: 26px; height: 64px;
  background: linear-gradient(180deg, #2a2a4a 0%, #0a0a2a 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 30% 30%;
  transform-origin: bottom center;
  animation: ch-prospero 8s ease-in-out infinite;
}
.scn-item-chessboard .warm-lantern {
  position: absolute; bottom: 30%; left: 15%; width: 14px; height: 14px;
  background: radial-gradient(circle, #ffaa44 0%, #cc8844 60%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 50px 25px rgba(255,170,68,0.3);
  animation: ch-lantern 4s ease-in-out infinite alternate;
}
.scn-item-chessboard .hanging-drape {
  position: absolute; top: 0; left: 20%; width: 40px; height: 100px;
  background: linear-gradient(180deg, #5a3a2a 0%, #3a1a0a 100%);
  clip-path: polygon(0% 0%, 100% 0%, 80% 100%, 20% 100%);
  border-radius: 0 0 20% 20%;
  animation: ch-drape 12s ease-in-out infinite alternate;
}

@keyframes ch-bg {
  0% { opacity: 0.8; filter: brightness(0.9); }
  50% { opacity: 1; filter: brightness(1.05); }
  100% { opacity: 0.85; filter: brightness(0.95); }
}
@keyframes ch-board {
  0% { transform: translateX(-50%) perspective(120px) rotateX(28deg) rotateZ(0deg); }
  50% { transform: translateX(-50%) perspective(120px) rotateX(32deg) rotateZ(1deg); }
  100% { transform: translateX(-50%) perspective(120px) rotateX(28deg) rotateZ(0deg); }
}
@keyframes ch-figure-left {
  0% { transform: translateY(0) rotate(0deg); }
  25% { transform: translateY(-1px) rotate(2deg); }
  50% { transform: translateY(0) rotate(-1deg); }
  75% { transform: translateY(-2px) rotate(1deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes ch-figure-right {
  0% { transform: translateY(0) rotate(0deg); }
  25% { transform: translateY(-1px) rotate(-2deg); }
  50% { transform: translateY(0) rotate(1deg); }
  75% { transform: translateY(-2px) rotate(-1deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes ch-prospero {
  0% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-2px) scale(1.02); }
  100% { transform: translateY(0) scale(1); }
}
@keyframes ch-lantern {
  0% { box-shadow: 0 0 40px 15px rgba(255,170,68,0.2); opacity: 0.8; }
  50% { box-shadow: 0 0 70px 35px rgba(255,170,68,0.5); opacity: 1; }
  100% { box-shadow: 0 0 50px 20px rgba(255,170,68,0.3); opacity: 0.9; }
}
@keyframes ch-drape {
  0% { transform: scaleX(1); }
  50% { transform: scaleX(0.95) translateX(-2px); }
  100% { transform: scaleX(1); }
}

.scn-item-stolen-apparel {
  background: linear-gradient(135deg, #3a261a 0%, #2a1a0e 50%, #4a3018 100%),
              radial-gradient(ellipse at 30% 40%, #7a5a30 0%, transparent 60%);
}
.scn-item-stolen-apparel .bed { position:absolute; top:0; left:0; right:0; height:60%; background: linear-gradient(180deg, #5a3a1e 0%, #3a2a12 100%); border-radius:0 0 30% 30%; box-shadow:inset 0 10px 30px rgba(0,0,0,.6); animation: isa-sway 14s ease-in-out infinite alternate; }
.scn-item-stolen-apparel .chest { position:absolute; bottom:15%; left:20%; width:120px; height:80px; background: linear-gradient(180deg, #8a5a2a 0%, #5a3a18 100%); border-radius:6% 6% 10% 10%; box-shadow: 0 6px 12px rgba(0,0,0,.5); }
.scn-item-stolen-apparel .chest-lid { position:absolute; bottom:calc(15% + 80px); left:18%; width:130px; height:20px; background: linear-gradient(180deg, #9a6a32 0%, #7a4a20 100%); border-radius:30% 30% 0 0; transform-origin:bottom left; animation: isa-chest-lid 6s ease-in-out infinite; }
.scn-item-stolen-apparel .cloth { position:absolute; bottom:18%; left:35%; width:60px; height:40px; background: linear-gradient(180deg, #c87858 0%, #a05030 100%); border-radius:40% 60% 30% 70%; box-shadow:inset 0 4px 10px rgba(0,0,0,.3); animation: isa-cloth 7s ease-in-out infinite alternate; }
.scn-item-stolen-apparel .lantern { position:absolute; bottom:28%; left:75%; width:8px; height:8px; background: radial-gradient(circle, #ffd080 0%, #c08040 70%); border-radius:50%; box-shadow:0 0 20px 4px #ffb040, 0 0 40px 12px rgba(255,176,64,.4); animation: isa-lantern 1.5s ease-in-out infinite alternate; }
.scn-item-stolen-apparel .caliban { position:absolute; bottom:10%; left:45%; width:24px; height:36px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius:50% 50% 40% 40% / 70% 70% 40% 40%; transform-origin:bottom center; animation: isa-hunch 4s ease-in-out infinite; }
.scn-item-stolen-apparel .stephano { position:absolute; bottom:10%; left:55%; width:28px; height:30px; background: linear-gradient(180deg, #6a5038 0%, #3a2a1a 100%); border-radius:60% 40% 40% 60% / 60% 60% 40% 40%; transform-origin:bottom center; animation: isa-stagger 4s ease-in-out 0.5s infinite; }
@keyframes isa-sway { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-4px) rotate(0.5deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes isa-chest-lid { 0%,100% { transform: rotate(0deg); } 30% { transform: rotate(20deg); } 60% { transform: rotate(15deg); } }
@keyframes isa-cloth { 0% { transform: rotate(0deg) scaleX(1); } 50% { transform: rotate(10deg) scaleX(0.9); } 100% { transform: rotate(-5deg) scaleX(1.1); } }
@keyframes isa-lantern { 0% { box-shadow:0 0 20px 4px #ffb040, 0 0 40px 12px rgba(255,176,64,.4); opacity:0.9; } 50% { box-shadow:0 0 28px 8px #ffd070, 0 0 60px 18px rgba(255,208,112,.6); opacity:1; } 100% { box-shadow:0 0 18px 3px #ffb040, 0 0 32px 8px rgba(255,176,64,.3); opacity:0.85; } }
@keyframes isa-hunch { 0% { transform: translateX(0) translateY(0) rotate(-2deg); } 25% { transform: translateX(6px) translateY(-2px) rotate(2deg); } 50% { transform: translateX(12px) translateY(0) rotate(-1deg); } 75% { transform: translateX(18px) translateY(-2px) rotate(1deg); } 100% { transform: translateX(24px) translateY(0) rotate(0deg); } }
@keyframes isa-stagger { 0% { transform: translateX(0) translateY(0) rotate(3deg); } 30% { transform: translateX(-8px) translateY(-3px) rotate(-4deg); } 60% { transform: translateX(4px) translateY(2px) rotate(2deg); } 100% { transform: translateX(0) translateY(0) rotate(-3deg); } }

.scn-accusation {
  background: linear-gradient(180deg, #1a1a2e 0%, #2a2a44 40%, #3a3a54 100%),
              radial-gradient(ellipse at 60% 70%, #4a4a64 0%, transparent 70%);
}
.scn-accusation .bg { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #1a1a2e 0%, transparent 100%); animation: acc-bg 9s ease-in-out infinite alternate; }
.scn-accusation .floor { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%); border-radius:30% 70% 0 0 / 20% 30% 0 0; box-shadow:inset 0 8px 20px rgba(0,0,0,.5); }
.scn-accusation .table { position:absolute; bottom:30%; left:50%; width:100px; height:50px; transform:translateX(-50%); background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius:4% 4% 6% 6%; box-shadow: 0 6px 12px rgba(0,0,0,.4); }
.scn-accusation .candle { position:absolute; bottom:55%; left:50%; width:6px; height:18px; transform:translateX(-50%); background: linear-gradient(180deg, #f0d080 0%, #c08040 50%, #a06020 100%); border-radius:50% 50% 20% 20%; box-shadow: 0 0 16px 4px #d09040; animation: acc-candle 2s ease-in-out infinite alternate; }
.scn-accusation .accuser { position:absolute; bottom:20%; left:35%; width:20px; height:50px; background: linear-gradient(180deg, #2a2a3a 0%, #0a0a1a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin:bottom center; box-shadow: -2px 0 6px rgba(0,0,0,.6); animation: acc-point 5s ease-in-out infinite; }
.scn-accusation .fish { position:absolute; bottom:10%; left:60%; width:40px; height:16px; background: linear-gradient(180deg, #5a6a6a 0%, #3a4a4a 100%); border-radius:50% 50% 40% 50% / 60% 40% 60% 40%; transform: rotate(-10deg); box-shadow: inset 0 2px 6px rgba(0,0,0,.5); animation: acc-swim 8s ease-in-out infinite; }
.scn-accusation .ripple { position:absolute; bottom:8%; left:65%; width:20px; height:6px; background: rgba(120,140,160,0.3); border-radius:50%; filter:blur(2px); animation: acc-ripple 4s ease-in-out infinite; }
@keyframes acc-bg { 0% { opacity:0.7; } 50% { opacity:0.9; } 100% { opacity:0.6; } }
@keyframes acc-candle { 0% { transform: translateX(-50%) translateY(0) scaleY(1); opacity:0.9; } 50% { transform: translateX(-50%) translateY(-2px) scaleY(1.2); opacity:1; } 100% { transform: translateX(-50%) translateY(0) scaleY(1); opacity:0.8; } }
@keyframes acc-point { 0% { transform: translateX(0) rotate(0deg); } 20% { transform: translateX(10px) rotate(-5deg); } 40% { transform: translateX(20px) rotate(-10deg); } 60% { transform: translateX(10px) rotate(-5deg); } 80% { transform: translateX(0) rotate(0deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes acc-swim { 0% { transform: rotate(-10deg) translateX(0); } 50% { transform: rotate(-5deg) translateX(8px); } 100% { transform: rotate(-10deg) translateX(0); } }
@keyframes acc-ripple { 0% { transform: scale(0.5); opacity:0.4; } 50% { transform: scale(1.5); opacity:0.1; } 100% { transform: scale(0.5); opacity:0.4; } }

.scn-accusation-continued {
  background: linear-gradient(180deg, #12121e 0%, #1a1a2e 40%, #2a2a44 100%),
              radial-gradient(ellipse at 50% 20%, #3a3a5e 0%, transparent 80%);
}
.scn-accusation-continued .bg { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #0e0e1a 0%, transparent 100%); animation: acc2-bg 12s ease-in-out infinite alternate; }
.scn-accusation-continued .circle-floor { position:absolute; bottom:0; left:20%; right:20%; height:50%; background: radial-gradient(ellipse, #2a2a3a 0%, #1a1a2a 70%, transparent 100%); border-radius:50%; box-shadow:inset 0 0 40px rgba(0,0,0,.7); }
.scn-accusation-continued .shadow-prospero { position:absolute; bottom:40%; left:50%; width:60px; height:80px; transform:translateX(-50%) scale(1.2); background: rgba(0,0,0,.4); border-radius:40% 40% 30% 30%; filter:blur(12px); animation: acc2-shiver 3s ease-in-out infinite; }
.scn-accusation-continued .prospero { position:absolute; bottom:45%; left:50%; width:18px; height:60px; transform:translateX(-50%); background: linear-gradient(180deg, #2a2a3e 0%, #0a0a1a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; box-shadow: 0 4px 8px rgba(0,0,0,.6); animation: acc2-point 5s ease-in-out infinite; }
.scn-accusation-continued .caliban { position:absolute; bottom:8%; left:30%; width:20px; height:30px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius:50% 50% 40% 40% / 70% 70% 40% 40%; transform: rotate(-5deg); animation: acc2-cower 6s ease-in-out infinite; }
.scn-accusation-continued .stephano { position:absolute; bottom:8%; left:48%; width:24px; height:28px; background: linear-gradient(180deg, #6a5038 0%, #3a2a1a 100%); border-radius:60% 40% 40% 60% / 60% 60% 40% 40%; animation: acc2-stagger 6s ease-in-out 1s infinite; }
.scn-accusation-continued .trinculo { position:absolute; bottom:8%; left:62%; width:16px; height:34px; background: linear-gradient(180deg, #5a4a3a 0%, #2a1a0a 100%); border-radius:50% 50% 40% 40% / 70% 70% 40% 40%; animation: acc2-tremble 5s ease-in-out infinite alternate; }
.scn-accusation-continued .binding { position:absolute; bottom:35%; left:42%; width:20px; height:6px; background: linear-gradient(90deg, #8a6a4a, #5a3a1a); border-radius:20%; box-shadow:0 2px 4px rgba(0,0,0,.6); animation: acc2-bind 8s ease-in-out infinite; }
@keyframes acc2-bg { 0% { opacity:0.8; } 50% { opacity:0.95; } 100% { opacity:0.75; } }
@keyframes acc2-shiver { 0% { transform: translateX(-50%) scale(1.2); opacity:0.5; } 50% { transform: translateX(-50%) scale(1.25); opacity:0.6; } 100% { transform: translateX(-50%) scale(1.2); opacity:0.5; } }
@keyframes acc2-point { 0% { transform: translateX(-50%) rotate(0deg); } 20% { transform: translateX(-50%) rotate(-8deg); } 40% { transform: translateX(-50%) rotate(-12deg); } 60% { transform: translateX(-50%) rotate(-8deg); } 80% { transform: translateX(-50%) rotate(0deg); } 100% { transform: translateX(-50%) rotate(0deg); } }
@keyframes acc2-cower { 0%,100% { transform: rotate(-5deg) translateY(0); } 30% { transform: rotate(-8deg) translateY(-3px); } 60% { transform: rotate(-3deg) translateY(2px); } }
@keyframes acc2-stagger { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(-6px) rotate(-4deg); } 50% { transform: translateX(4px) rotate(3deg); } 75% { transform: translateX(-2px) rotate(-2deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes acc2-tremble { 0% { transform: translateY(0) rotate(0deg); } 25% { transform: translateY(-2px) rotate(-2deg); } 50% { transform: translateY(1px) rotate(2deg); } 75% { transform: translateY(-1px) rotate(-1deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes acc2-bind { 0% { transform: rotate(0deg); } 50% { transform: rotate(30deg); } 100% { transform: rotate(0deg); } }

.scn-drunk-revelation {
  background: linear-gradient(180deg, #2a1a0e 0%, #3a2a12 50%, #1a0e06 100%),
              radial-gradient(ellipse at 70% 50%, #5a3a1e 0%, transparent 60%);
}
.scn-drunk-revelation .bg { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #1a0e06 0%, transparent 100%); animation: drk-sway 10s ease-in-out infinite alternate; }
.scn-drunk-revelation .barrel { position:absolute; bottom:5%; left:10%; width:50px; height:60px; background: linear-gradient(180deg, #6a4a2a 0%, #4a2a12 100%); border-radius: 20% 20% 30% 30%; box-shadow: 0 6px 12px rgba(0,0,0,.5); transform: rotate(-5deg); }
.scn-drunk-revelation .lantern { position:absolute; bottom:40%; right:15%; width:8px; height:8px; background: radial-gradient(circle, #ffd080 0%, #c08040 70%); border-radius:50%; box-shadow:0 0 20px 4px #ffb040, 0 0 40px 12px rgba(255,176,64,.4); animation: drk-flicker 1.6s ease-in-out infinite alternate; }
.scn-drunk-revelation .butler { position:absolute; bottom:10%; left:38%; width:28px; height:40px; background: linear-gradient(180deg, #5a3a2a 0%, #2a1a0a 100%); border-radius:50% 50% 40% 40% / 70% 70% 40% 40%; transform-origin:bottom center; animation: drk-reel 3s ease-in-out infinite; }
.scn-drunk-revelation .trinculo { position:absolute; bottom:10%; left:50%; width:22px; height:36px; background: linear-gradient(180deg, #4a3a2a 0%, #1a0e06 100%); border-radius:50% 50% 40% 40% / 70% 70% 40% 40%; transform-origin:bottom center; animation: drk-stagger 3.5s ease-in-out 1s infinite; }
.scn-drunk-revelation .bottle { position:absolute; bottom:25%; left:32%; width:8px; height:24px; background: linear-gradient(180deg, #a08030 0%, #604018 100%); border-radius:40% 40% 20% 20%; transform: rotate(25deg); box-shadow:0 2px 6px rgba(0,0,0,.6); animation: drk-tilt 4s ease-in-out infinite; }
.scn-drunk-revelation .spatter { position:absolute; bottom:30%; left:36%; width:16px; height:12px; background: linear-gradient(180deg, rgba(160,128,48,0.6) 0%, transparent 100%); border-radius:50%; filter:blur(2px); animation: drk-spatter 2s ease-in-out infinite; }
@keyframes drk-sway { 0% { transform: translateY(0); } 50% { transform: translateY(-3px); } 100% { transform: translateY(0); } }
@keyframes drk-flicker { 0% { box-shadow:0 0 20px 4px #ffb040, 0 0 40px 12px rgba(255,176,64,.4); opacity:0.9; } 50% { box-shadow:0 0 30px 8px #ffd070, 0 0 60px 18px rgba(255,208,112,.6); opacity:1; } 100% { box-shadow:0 0 18px 3px #ffb040, 0 0 32px 8px rgba(255,176,64,.3); opacity:0.85; } }
@keyframes drk-reel { 0% { transform: translateX(0) rotate(0deg); } 20% { transform: translateX(10px) rotate(6deg); } 40% { transform: translateX(-8px) rotate(-8deg); } 60% { transform: translateX(6px) rotate(4deg); } 80% { transform: translateX(-10px) rotate(-6deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes drk-stagger { 0% { transform: translateX(0) translateY(0) rotate(0deg); } 25% { transform: translateX(8px) translateY(-2px) rotate(5deg); } 50% { transform: translateX(-12px) translateY(2px) rotate(-7deg); } 75% { transform: translateX(6px) translateY(-1px) rotate(4deg); } 100% { transform: translateX(0) translateY(0) rotate(0deg); } }
@keyframes drk-tilt { 0% { transform: rotate(25deg) translateY(0); } 30% { transform: rotate(35deg) translateY(-4px); } 60% { transform: rotate(15deg) translateY(2px); } 100% { transform: rotate(25deg) translateY(0); } }
@keyframes drk-spatter { 0% { transform: scale(0.8) translate(0,0); opacity:0.4; } 50% { transform: scale(1.3) translate(4px,-3px); opacity:0.2; } 100% { transform: scale(0.8) translate(0,0); opacity:0.4; } }
/* end per-scene blocks */

/* auto-stub: parent tag-classes flagged by CSS audit */
.leaves { position: absolute; pointer-events: none; }
.motes { position: absolute; pointer-events: none; }
.scn { position: absolute; pointer-events: none; }
.star { position: absolute; pointer-events: none; }

/* ============ tier A ============ */
/* per-scene blocks (EXP step_scenes) */
.scn-gonzalo-commonwealth {
  background:
    linear-gradient(180deg, #5BA3D9 0%, #FFF5CC 70%),
    radial-gradient(circle at 70% 15%, #FFD700 0%, transparent 60%);
  position: relative;
  overflow: hidden;
  width: 100%;
  height: 100%;
}
.scn-gonzalo-commonwealth .sky {
  position: absolute;
  inset: 0 0 30% 0;
  background: linear-gradient(180deg, #87CEEB 0%, #B0E0E6 100%);
  animation: gc-sky 12s ease-in-out infinite alternate;
}
.scn-gonzalo-commonwealth .sea {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 30%;
  background: linear-gradient(180deg, #2E8BC0 0%, #1B4F72 100%);
  animation: gc-sea 8s ease-in-out infinite alternate;
}
.scn-gonzalo-commonwealth .island {
  position: absolute;
  bottom: 25%;
  left: 10%;
  width: 80%;
  height: 20%;
  background: linear-gradient(180deg, #C9A96E 0%, #556B2F 100%);
  border-radius: 50% 50% 0 0;
  box-shadow: inset 0 5px 15px rgba(0,0,0,0.3);
  animation: gc-island 10s ease-in-out infinite;
}
.scn-gonzalo-commonwealth .figure {
  position: absolute;
  bottom: 28%;
  left: 45%;
  width: 22px;
  height: 40px;
  background: #2C3E50;
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: gc-figure 2s ease-in-out infinite;
}
.scn-gonzalo-commonwealth .plant {
  position: absolute;
  bottom: 28%;
  left: 53%;
  width: 10px;
  height: 28px;
  background: linear-gradient(180deg, #228B22 0%, #8B4513 100%);
  border-radius: 50% 50% 20% 20%;
  transform-origin: bottom center;
  animation: gc-plant 3s ease-in-out infinite;
}
.scn-gonzalo-commonwealth .sun {
  position: absolute;
  top: 15%;
  left: 72%;
  width: 50px;
  height: 50px;
  background: radial-gradient(circle, #FFD700 0%, #FFA500 60%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 30px 10px #FFD700;
  animation: gc-sun 5s ease-in-out infinite;
}
.scn-gonzalo-commonwealth .cloud-a {
  position: absolute;
  top: 10%;
  left: -100px;
  width: 120px;
  height: 30px;
  background: rgba(255,255,255,0.8);
  border-radius: 50%;
  filter: blur(8px);
  animation: gc-cloud 30s linear infinite;
}
.scn-gonzalo-commonwealth .cloud-b {
  position: absolute;
  top: 22%;
  left: -80px;
  width: 90px;
  height: 25px;
  background: rgba(255,255,255,0.6);
  border-radius: 50%;
  filter: blur(6px);
  animation: gc-cloud 40s linear infinite reverse;
  animation-delay: -15s;
}

@keyframes gc-sky {
  0% { opacity: 0.85; }
  50% { opacity: 1; }
  100% { opacity: 0.9; }
}
@keyframes gc-sea {
  0% { transform: translateY(0); }
  50% { transform: translateY(-3px); }
  100% { transform: translateY(0); }
}
@keyframes gc-island {
  0% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
  100% { transform: translateY(0); }
}
@keyframes gc-figure {
  0% { transform: translateX(0) translateY(0) rotate(-5deg); }
  50% { transform: translateX(5px) translateY(-4px) rotate(5deg); }
  100% { transform: translateX(0) translateY(0) rotate(-5deg); }
}
@keyframes gc-plant {
  0% { transform: rotate(0deg); }
  50% { transform: rotate(12deg); }
  100% { transform: rotate(0deg); }
}
@keyframes gc-sun {
  0% { box-shadow: 0 0 20px 5px #FFD700; opacity: 0.9; }
  50% { box-shadow: 0 0 50px 20px #FFD700; opacity: 1; }
  100% { box-shadow: 0 0 20px 5px #FFD700; opacity: 0.9; }
}
@keyframes gc-cloud {
  0% { transform: translateX(0); }
  100% { transform: translateX(120vw); }
}

.scn-item-prospero-magic-mantle { background: linear-gradient(180deg, #1c1628 0%, #2a2040 50%, #3a285a 100%), radial-gradient(ellipse at 50% 60%, #4a386a 0%, transparent 70%); }
.scn-item-prospero-magic-mantle .figure { position:absolute; bottom:20%; left:52%; width:28px; height:58px; background: linear-gradient(180deg, #2a2230 0%, #1a1420 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ipmm-fig 6s ease-in-out infinite; }
.scn-item-prospero-magic-mantle .mantle { position:absolute; bottom:22%; left:46%; width:40px; height:50px; background: linear-gradient(180deg, #3a1a3a 0%, #2a0a2a 50%, #1a0a1a 100%); border-radius: 20% 60% 40% 40% / 30% 60% 40% 40%; transform: rotate(-8deg); box-shadow: 0 0 12px 2px rgba(180,100,180,0.3); animation: ipmm-mantle 8s ease-in-out infinite alternate; }
.scn-item-prospero-magic-mantle .book { position:absolute; bottom:18%; left:38%; width:20px; height:14px; background: linear-gradient(135deg, #6a4a2a 0%, #4a2a1a 100%); border-radius: 2px; box-shadow: inset 0 0 4px #2a1a0a; animation: ipmm-book 10s ease-in-out infinite; }
.scn-item-prospero-magic-mantle .table { position:absolute; bottom:16%; left:30%; width:80px; height:10px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 2px 2px 0 0; box-shadow: 0 4px 8px rgba(0,0,0,0.5); }
.scn-item-prospero-magic-mantle .candle { position:absolute; bottom:24%; left:42%; width:4px; height:16px; background: linear-gradient(180deg, #d0a060 0%, #b08040 100%); border-radius: 1px; transform-origin: bottom center; animation: ipmm-candle 3s ease-in-out infinite; }
.scn-item-prospero-magic-mantle .glow { position:absolute; bottom:24%; left:42%; width:40px; height:40px; background: radial-gradient(circle, rgba(200,160,100,0.6) 0%, rgba(200,160,100,0.1) 60%, transparent 100%); border-radius: 50%; transform: translate(-50%, -50%); animation: ipmm-glow 4s ease-in-out infinite alternate; }
.scn-item-prospero-magic-mantle .shadow { position:absolute; bottom:5%; left:30%; width:100px; height:20px; background: radial-gradient(ellipse, rgba(0,0,0,0.6) 0%, transparent 100%); transform: scaleX(1.2); animation: ipmm-shadow 8s ease-in-out infinite alternate; }
@keyframes ipmm-fig { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-2px) rotate(1deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes ipmm-mantle { 0% { transform: rotate(-10deg) translateY(0); } 50% { transform: rotate(-6deg) translateY(-3px); } 100% { transform: rotate(-10deg) translateY(0); } }
@keyframes ipmm-book { 0% { transform: rotate(0deg); } 50% { transform: rotate(2deg) scale(1.02); } 100% { transform: rotate(0deg); } }
@keyframes ipmm-candle { 0% { transform: scaleY(1) rotate(0deg); } 50% { transform: scaleY(1.02) rotate(1deg); } 100% { transform: scaleY(1) rotate(0deg); } }
@keyframes ipmm-glow { 0% { opacity: 0.6; transform: translate(-50%, -50%) scale(0.9); } 50% { opacity: 0.9; transform: translate(-50%, -50%) scale(1.2); } 100% { opacity: 0.6; transform: translate(-50%, -50%) scale(0.9); } }
@keyframes ipmm-shadow { 0% { transform: scaleX(1.2) scaleY(1); opacity: 0.5; } 50% { transform: scaleX(1.3) scaleY(1.1); opacity: 0.7; } 100% { transform: scaleX(1.2) scaleY(1); opacity: 0.5; } }

.scn-prospero-reason-for-storm { background: linear-gradient(180deg, #1e1a2a 0%, #2a2240 50%, #3a3060 100%), radial-gradient(ellipse at 50% 70%, #4a3a6a 0%, transparent 70%); }
.scn-prospero-reason-for-storm .figure { position:absolute; bottom:20%; left:48%; width:30px; height:56px; background: linear-gradient(180deg, #2a2230 0%, #1a1420 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: prfs-fig 7s ease-in-out infinite; }
.scn-prospero-reason-for-storm .desk { position:absolute; bottom:12%; left:30%; width:90px; height:12px; background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%); border-radius: 2px; box-shadow: 0 4px 12px rgba(0,0,0,0.6); }
.scn-prospero-reason-for-storm .map { position:absolute; bottom:16%; left:40%; width:40px; height:30px; background: linear-gradient(135deg, #6a5a3a 0%, #4a3a1a 50%, #3a2a0a 100%); border-radius: 4px; transform: rotate(-5deg); animation: prfs-map 12s ease-in-out infinite; }
.scn-prospero-reason-for-storm .candle { position:absolute; bottom:24%; left:36%; width:4px; height:14px; background: linear-gradient(180deg, #d0a060 0%, #b08040 100%); border-radius: 1px; transform-origin: bottom center; animation: prfs-candle 3s ease-in-out infinite; }
.scn-prospero-reason-for-storm .spirit { position:absolute; bottom:30%; right:20%; width:20px; height:40px; background: linear-gradient(180deg, rgba(180,140,220,0.5) 0%, transparent 100%); border-radius: 50%; filter: blur(4px); animation: prfs-spirit 10s ease-in-out infinite alternate; }
.scn-prospero-reason-for-storm .glow { position:absolute; bottom:24%; left:36%; width:50px; height:50px; background: radial-gradient(circle, rgba(200,160,100,0.5) 0%, rgba(200,160,100,0.05) 60%, transparent 100%); transform: translate(-50%, -50%); animation: prfs-glow 4s ease-in-out infinite alternate; }
@keyframes prfs-fig { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(3px) rotate(1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes prfs-map { 0% { transform: rotate(-5deg) scale(1); } 50% { transform: rotate(-3deg) scale(1.02); } 100% { transform: rotate(-5deg) scale(1); } }
@keyframes prfs-candle { 0% { transform: scaleY(1); } 50% { transform: scaleY(1.03) rotate(1deg); } 100% { transform: scaleY(1); } }
@keyframes prfs-spirit { 0% { transform: translateY(0) scale(0.9); opacity: 0.3; } 50% { transform: translateY(-8px) scale(1.1); opacity: 0.7; } 100% { transform: translateY(0) scale(0.9); opacity: 0.3; } }
@keyframes prfs-glow { 0% { transform: translate(-50%, -50%) scale(1); opacity: 0.5; } 50% { transform: translate(-50%, -50%) scale(1.3); opacity: 0.8; } 100% { transform: translate(-50%, -50%) scale(1); opacity: 0.5; } }

.scn-prospero-calls-ariel { background: linear-gradient(180deg, #1a1428 0%, #2a2250 50%, #3a2a6a 100%), radial-gradient(ellipse at 50% 30%, #5a4a8a 0%, transparent 70%); }
.scn-prospero-calls-ariel .figure { position:absolute; bottom:20%; left:50%; width:28px; height:60px; background: linear-gradient(180deg, #2a2230 0%, #1a1420 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform: translateX(-50%); animation: pca-fig 8s ease-in-out infinite; }
.scn-prospero-calls-ariel .staff { position:absolute; bottom:18%; left:50%; width:4px; height:50px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); transform: translateX(-50%); border-radius: 2px; animation: pca-staff 6s ease-in-out infinite; }
.scn-prospero-calls-ariel .sphere { position:absolute; bottom:38%; left:50%; width:22px; height:22px; background: radial-gradient(circle, #c0a0e0 0%, #8060a0 50%, #4a2a6a 100%); border-radius: 50%; transform: translate(-50%, -50%); box-shadow: 0 0 20px 6px rgba(160,120,200,0.5); animation: pca-sphere 4s ease-in-out infinite alternate; }
.scn-prospero-calls-ariel .rays { position:absolute; bottom:38%; left:50%; width:60px; height:60px; background: radial-gradient(circle, rgba(200,180,240,0.3) 0%, transparent 100%); transform: translate(-50%, -50%); animation: pca-rays 3s ease-in-out infinite; }
.scn-prospero-calls-ariel .shadow { position:absolute; bottom:6%; left:30%; width:100px; height:16px; background: radial-gradient(ellipse, rgba(0,0,0,0.6) 0%, transparent 100%); animation: pca-shadow 8s ease-in-out infinite alternate; }
.scn-prospero-calls-ariel .ground { position:absolute; bottom:0%; left:0; right:0; height:20%; background: linear-gradient(180deg, #1a1420 0%, #0a0a10 100%); border-radius: 30% 70% 0 0 / 50% 50% 0 0; }
@keyframes pca-fig { 0% { transform: translateX(-50%) translateY(0); } 50% { transform: translateX(-50%) translateY(-3px); } 100% { transform: translateX(-50%) translateY(0); } }
@keyframes pca-staff { 0% { transform: translateX(-50%) rotate(-2deg); } 50% { transform: translateX(-50%) rotate(2deg); } 100% { transform: translateX(-50%) rotate(-2deg); } }
@keyframes pca-sphere { 0% { transform: translate(-50%, -50%) scale(1); box-shadow: 0 0 20px 6px rgba(160,120,200,0.5); } 50% { transform: translate(-50%, -50%) scale(1.1); box-shadow: 0 0 30px 12px rgba(160,120,200,0.7); } 100% { transform: translate(-50%, -50%) scale(1); box-shadow: 0 0 20px 6px rgba(160,120,200,0.5); } }
@keyframes pca-rays { 0% { transform: translate(-50%, -50%) rotate(0deg) scale(0.95); opacity: 0.5; } 50% { transform: translate(-50%, -50%) rotate(10deg) scale(1.1); opacity: 0.8; } 100% { transform: translate(-50%, -50%) rotate(0deg) scale(0.95); opacity: 0.5; } }
@keyframes pca-shadow { 0% { transform: scaleX(1) scaleY(1); } 50% { transform: scaleX(1.1) scaleY(1.2); } 100% { transform: scaleX(1) scaleY(1); } }

.scn-ariel-tempest-report { background: linear-gradient(180deg, #1a2a3a 0%, #2a4050 40%, #3a5a6a 70%, #4a6a7a 100%), radial-gradient(ellipse at 50% 30%, #5a7a8a 0%, transparent 70%); }
.scn-ariel-tempest-report .sky { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #2a3a4a 0%, #4a5a5a 100%); animation: atr-sky 15s ease-in-out infinite alternate; }
.scn-ariel-tempest-report .ship { position:absolute; bottom:25%; left:40%; width:80px; height:30px; background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%); border-radius: 30% 30% 10% 10% / 60% 60% 20% 20%; transform-origin: bottom center; animation: atr-ship 8s ease-in-out infinite; }
.scn-ariel-tempest-report .mast { position:absolute; bottom:40%; left:45%; width:4px; height:40px; background: linear-gradient(180deg, #2a1a0a 0%, #1a0a00 100%); border-radius: 2px; transform-origin: top center; animation: atr-mast 6s ease-in-out infinite; }
.scn-ariel-tempest-report .flames { position:absolute; bottom:42%; left:44%; width:12px; height:18px; background: radial-gradient(ellipse at 50% 80%, #ffa040 0%, #ff8000 40%, #a04010 80%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; filter: blur(2px); animation: atr-flame 1.5s ease-in-out infinite alternate; }
.scn-ariel-tempest-report .spirit { position:absolute; bottom:45%; left:35%; width:30px; height:60px; background: linear-gradient(180deg, rgba(255,160,80,0.7) 0%, rgba(200,100,30,0.3) 60%, transparent 100%); border-radius: 50%; filter: blur(8px); transform: rotate(-15deg); animation: atr-spirit 6s ease-in-out infinite alternate; }
.scn-ariel-tempest-report .clouds { position:absolute; top:10%; left:0; right:0; height:40%; background: linear-gradient(180deg, #3a4a5a 0%, transparent 100%); filter: blur(6px); animation: atr-clouds 30s linear infinite; }
.scn-ariel-tempest-report .waves { position:absolute; bottom:10%; left:0; right:0; height:30%; background: linear-gradient(180deg, #2a4a5a 0%, #1a2a3a 100%); border-radius: 40% 60% 0 0 / 30% 40% 0 0; animation: atr-waves 10s ease-in-out infinite alternate; }
@keyframes atr-sky { 0% { opacity: 0.7; } 50% { opacity: 0.9; } 100% { opacity: 0.7; } }
@keyframes atr-ship { 0% { transform: translateX(0) rotate(-2deg); } 50% { transform: translateX(-5px) rotate(3deg); } 100% { transform: translateX(0) rotate(-2deg); } }
@keyframes atr-mast { 0% { transform: rotate(0deg); } 50% { transform: rotate(4deg); } 100% { transform: rotate(0deg); } }
@keyframes atr-flame { 0% { transform: scaleY(1) scaleX(1); opacity: 0.8; } 50% { transform: scaleY(1.2) scaleX(0.9); opacity: 1; } 100% { transform: scaleY(1) scaleX(1); opacity: 0.8; } }
@keyframes atr-spirit { 0% { transform: rotate(-15deg) translateX(0); } 50% { transform: rotate(-10deg) translateX(12px); } 100% { transform: rotate(-15deg) translateX(0); } }
@keyframes atr-clouds { 0% { transform: translateX(0); } 100% { transform: translateX(-100vw); } }
@keyframes atr-waves { 0% { transform: translateY(0) scaleY(1); } 50% { transform: translateY(-4px) scaleY(1.03); } 100% { transform: translateY(0) scaleY(1); } }

.scn-sebastian-antonio-ridicule {
  background: linear-gradient(180deg, #a8d8ea 0%, #fce082 60%, #e6b85a 100%), radial-gradient(ellipse at 30% 20%, #fff4cc 0%, transparent 60%);
}
.scn-sebastian-antonio-ridicule .sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #7ec8e3 0%, #a8d8ea 50%, transparent 100%);
  animation: sar-sky 12s ease-in-out infinite alternate;
}
.scn-sebastian-antonio-ridicule .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #dbb44e 0%, #b8862a 40%, #8a6a1a 100%);
  border-radius: 60% 40% 0 0 / 30% 20% 0 0;
}
.scn-sebastian-antonio-ridicule .grass-blade {
  position: absolute; bottom: 48%; left: 20%; width: 6px; height: 30px;
  background: linear-gradient(180deg, #6b8c3a 0%, #4a6a2a 100%);
  border-radius: 50% 50% 0 0; transform-origin: bottom center;
  animation: sar-grass 2s ease-in-out infinite alternate;
}
.scn-sebastian-antonio-ridicule .blade-b { left: 70%; animation-delay: 0.5s; }
.scn-sebastian-antonio-ridicule .sun {
  position: absolute; top: 8%; left: 70%; width: 60px; height: 60px;
  background: radial-gradient(circle, #fff9e6 0%, #fddb6d 60%, transparent 80%);
  border-radius: 50%; box-shadow: 0 0 40px 20px rgba(253,219,109,0.6);
  animation: sar-sun 15s ease-in-out infinite alternate;
}
.scn-sebastian-antonio-ridicule .figure {
  position: absolute; bottom: 45%; width: 28px; height: 60px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
}
.scn-sebastian-antonio-ridicule .sebastian { left: 35%; animation: sar-figure-l 3s ease-in-out infinite; }
.scn-sebastian-antonio-ridicule .antonio { left: 50%; animation: sar-figure-r 3s ease-in-out infinite; animation-delay: 0.2s; }
.scn-sebastian-antonio-ridicule .bubble {
  position: absolute; bottom: 55%; left: 30%; width: 18px; height: 18px;
  background: radial-gradient(circle, #fff8e0 0%, transparent 70%);
  border-radius: 50%; filter: blur(2px); opacity: 0.6;
  animation: sar-bubble 4s ease-in-out infinite;
}
.scn-sebastian-antonio-ridicule .bubble-b { left: 45%; animation-delay: 2s; }
@keyframes sar-sky { 0% { opacity: 0.8 } 50% { opacity: 1 } 100% { opacity: 0.7 } }
@keyframes sar-sun { 0% { transform: scale(1) translateY(0) } 50% { transform: scale(1.05) translateY(-5px) } 100% { transform: scale(0.95) translateY(2px) } }
@keyframes sar-grass { 0% { transform: rotate(-5deg) } 50% { transform: rotate(5deg) } 100% { transform: rotate(-3deg) } }
@keyframes sar-figure-l { 0% { transform: translateX(0) rotate(-10deg) } 25% { transform: translateX(8px) rotate(0deg) } 50% { transform: translateX(12px) rotate(10deg) } 75% { transform: translateX(6px) rotate(5deg) } 100% { transform: translateX(0) rotate(-10deg) } }
@keyframes sar-figure-r { 0% { transform: translateX(0) rotate(10deg) } 25% { transform: translateX(-5px) rotate(0deg) } 50% { transform: translateX(-10px) rotate(-10deg) } 75% { transform: translateX(-4px) rotate(-5deg) } 100% { transform: translateX(0) rotate(10deg) } }
@keyframes sar-bubble { 0% { transform: translateY(0) scale(1); opacity: 0.6 } 50% { transform: translateY(-20px) scale(1.3); opacity: 0.3 } 100% { transform: translateY(-40px) scale(0.5); opacity: 0 } }

.scn-gonzalo-garments-fresh {
  background: linear-gradient(180deg, #8fc5e3 0%, #c2e0f0 50%, #e8f4f8 100%), radial-gradient(ellipse at 50% 100%, #b0d8e8 0%, transparent 70%);
}
.scn-gonzalo-garments-fresh .sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #6fb0d0 0%, #a0d0e8 50%, transparent 100%);
  animation: ggf-sky 15s ease-in-out infinite alternate;
}
.scn-gonzalo-garments-fresh .sea {
  position: absolute; bottom: 10%; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #4a8cac 0%, #2a6c8c 100%);
  border-radius: 30% 70% 0 0 / 40% 60% 0 0;
  animation: ggf-sea 20s ease-in-out infinite;
}
.scn-gonzalo-garments-fresh .sand {
  position: absolute; bottom: 0; left: 0; right: 0; height: 15%;
  background: linear-gradient(180deg, #d4b48a 0%, #b0946a 100%);
  border-radius: 50% 50% 0 0 / 80% 80% 0 0;
}
.scn-gonzalo-garments-fresh .clothesline {
  position: absolute; top: 28%; left: 10%; right: 10%; height: 2px;
  background: #6a5a4a; border-radius: 1px;
  animation: ggf-line 5s ease-in-out infinite alternate;
}
.scn-gonzalo-garments-fresh .shirt {
  position: absolute; top: 30%; width: 40px; height: 50px;
  background: linear-gradient(180deg, #f0f0e8 0%, #d8d8c8 100%);
  border-radius: 20% 20% 10% 10% / 40% 40% 20% 20%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.2);
  transform-origin: top center;
  animation: ggf-shirt 6s ease-in-out infinite;
}
.scn-gonzalo-garments-fresh .shirt-b { left: 55%; animation-delay: 1.5s; }
.scn-gonzalo-garments-fresh .sun {
  position: absolute; top: 6%; right: 15%; width: 50px; height: 50px;
  background: radial-gradient(circle, #fffacd 0%, #ffe066 60%, transparent 80%);
  border-radius: 50%; box-shadow: 0 0 30px 15px rgba(255,224,102,0.5);
  animation: ggf-sun 12s ease-in-out infinite alternate;
}
.scn-gonzalo-garments-fresh .cloud {
  position: absolute; top: 12%; left: 20%; width: 100px; height: 20px;
  background: linear-gradient(180deg, rgba(255,255,255,0.6) 0%, rgba(255,255,255,0.1) 100%);
  border-radius: 50%; filter: blur(8px);
  animation: ggf-cloud 40s linear infinite;
}
@keyframes ggf-sky { 0% { opacity: 0.8 } 50% { opacity: 1 } 100% { opacity: 0.9 } }
@keyframes ggf-sea { 0% { transform: translateY(0) } 50% { transform: translateY(5px) } 100% { transform: translateY(0) } }
@keyframes ggf-line { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.5) } 100% { transform: scaleY(1) } }
@keyframes ggf-shirt { 0% { transform: rotate(-5deg) translateY(0) } 25% { transform: rotate(3deg) translateY(2px) } 50% { transform: rotate(-2deg) translateY(0) } 75% { transform: rotate(4deg) translateY(-1px) } 100% { transform: rotate(-5deg) translateY(0) } }
@keyframes ggf-sun { 0% { transform: scale(1) } 50% { transform: scale(1.1) } 100% { transform: scale(0.95) } }
@keyframes ggf-cloud { 0% { transform: translateX(-60px) } 100% { transform: translateX(120vw) } }

.scn-claribel-marriage-talk {
  background: linear-gradient(180deg, #fce8b0 0%, #f5dba0 40%, #e8c080 100%), radial-gradient(ellipse at 50% 80%, #fce8b0 0%, transparent 60%);
}
.scn-claribel-marriage-talk .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #ffdd99 0%, #ffe4b0 50%, transparent 100%);
  animation: cmt-sky 10s ease-in-out infinite alternate;
}
.scn-claribel-marriage-talk .palace-wall {
  position: absolute; bottom: 20%; left: 10%; right: 10%; height: 60%;
  background: linear-gradient(180deg, #d4b078 0%, #b8945a 50%, #a0783a 100%);
  border-radius: 10% 10% 0 0 / 20% 20% 0 0;
  box-shadow: inset 0 -10px 20px rgba(0,0,0,0.3);
}
.scn-claribel-marriage-talk .arch {
  position: absolute; bottom: 30%; left: 30%; right: 30%; height: 50%;
  background: #e8c890;
  border-radius: 50% / 60% 60% 0 0;
  box-shadow: inset 0 0 20px rgba(0,0,0,0.2);
}
.scn-claribel-marriage-talk .figure {
  position: absolute; bottom: 38%; width: 30px; height: 70px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
}
.scn-claribel-marriage-talk .groom { left: 38%; animation: cmt-groom 4s ease-in-out infinite; }
.scn-claribel-marriage-talk .bride { left: 52%; animation: cmt-bride 4s ease-in-out infinite; animation-delay: 0.3s; }
.scn-claribel-marriage-talk .veil {
  position: absolute; bottom: 55%; left: 45%; width: 40px; height: 30px;
  background: linear-gradient(180deg, rgba(255,255,255,0.8) 0%, rgba(255,255,255,0.2) 100%);
  border-radius: 50% 50% 0 0;
  filter: blur(1px); transform-origin: top center;
  animation: cmt-veil 6s ease-in-out infinite alternate;
}
.scn-claribel-marriage-talk .petals {
  position: absolute; bottom: 10%; left: 20%; width: 10px; height: 10px;
  background: radial-gradient(circle, #f0a070 0%, #d08050 100%);
  border-radius: 50% 0 50% 0; filter: blur(1px);
  animation: cmt-petal 8s linear infinite;
}
.scn-claribel-marriage-talk .petals-b { left: 60%; animation-delay: 2s; animation-direction: reverse; }
@keyframes cmt-sky { 0% { opacity: 0.8 } 50% { opacity: 1 } 100% { opacity: 0.9 } }
@keyframes cmt-groom { 0% { transform: translateX(0) rotate(0deg) } 25% { transform: translateX(3px) rotate(-3deg) } 50% { transform: translateX(0) rotate(0deg) } 75% { transform: translateX(-3px) rotate(3deg) } 100% { transform: translateX(0) rotate(0deg) } }
@keyframes cmt-bride { 0% { transform: translateX(0) rotate(0deg) } 25% { transform: translateX(-3px) rotate(3deg) } 50% { transform: translateX(0) rotate(0deg) } 75% { transform: translateX(3px) rotate(-3deg) } 100% { transform: translateX(0) rotate(0deg) } }
@keyframes cmt-veil { 0% { transform: rotate(-5deg) scaleY(1) } 50% { transform: rotate(0deg) scaleY(1.1) } 100% { transform: rotate(5deg) scaleY(1) } }
@keyframes cmt-petal { 0% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(-30px) rotate(180deg) } 100% { transform: translateY(-60px) rotate(360deg) } }

.scn-gonzalo-impossible-claims {
  background: linear-gradient(180deg, #ffe0b0 0%, #ffcc80 40%, #f5b860 100%), radial-gradient(ellipse at 50% 100%, #ffd090 0%, transparent 60%);
}
.scn-gonzalo-impossible-claims .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #fddb9a 0%, #ffecb3 50%, transparent 100%);
  animation: gic-sky 12s ease-in-out infinite alternate;
}
.scn-gonzalo-impossible-claims .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #c4a04a 0%, #a08030 100%);
  border-radius: 40% 60% 0 0 / 20% 30% 0 0;
}
.scn-gonzalo-impossible-claims .figure {
  position: absolute; bottom: 35%; left: 40%; width: 40px; height: 80px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: gic-gonzalo 3s ease-in-out infinite alternate;
}
.scn-gonzalo-impossible-claims .island-small {
  position: absolute; bottom: 55%; left: 30%; width: 30px; height: 20px;
  background: linear-gradient(180deg, #6a8a3a 0%, #4a6a2a 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 40% 40%;
  box-shadow: 0 2px 6px rgba(0,0,0,0.3);
  animation: gic-island 8s ease-in-out infinite;
}
.scn-gonzalo-impossible-claims .apple {
  position: absolute; bottom: 50%; left: 55%; width: 40px; height: 40px;
  background: radial-gradient(circle at 40% 30%, #f0a070 0%, #d08050 60%, #a06030 100%);
  border-radius: 50%; box-shadow: 0 4px 8px rgba(0,0,0,0.3);
  animation: gic-apple 5s ease-in-out infinite alternate;
}
.scn-gonzalo-impossible-claims .seed {
  position: absolute; bottom: 55%; left: 60%; width: 6px; height: 8px;
  background: #3a2a1a; border-radius: 50%;
  animation: gic-seed 4s ease-in-out infinite;
}
.scn-gonzalo-impossible-claims .seed-b { left: 65%; animation-delay: 1.5s; }
.scn-gonzalo-impossible-claims .exclamation {
  position: absolute; top: 15%; left: 50%; width: 20px; height: 40px;
  background: linear-gradient(180deg, #5a3a2a 0%, #3a1a0a 100%);
  border-radius: 20% 20% 20% 20% / 40% 40% 10% 10%;
  transform: translateX(-50%);
  animation: gic-exclaim 2s ease-in-out infinite alternate;
}
@keyframes gic-sky { 0% { opacity: 0.7 } 50% { opacity: 1 } 100% { opacity: 0.8 } }
@keyframes gic-gonzalo { 0% { transform: translateX(0) rotate(0deg) } 25% { transform: translateX(10px) rotate(5deg) } 50% { transform: translateX(15px) rotate(0deg) } 75% { transform: translateX(5px) rotate(-5deg) } 100% { transform: translateX(0) rotate(0deg) } }
@keyframes gic-island { 0% { transform: translateY(0) scale(1) } 50% { transform: translateY(-8px) scale(1.1) } 100% { transform: translateY(0) scale(1) } }
@keyframes gic-apple { 0% { transform: rotate(0deg) } 50% { transform: rotate(15deg) } 100% { transform: rotate(0deg) } }
@keyframes gic-seed { 0% { transform: translateY(0) } 50% { transform: translateY(-10px) } 100% { transform: translateY(0) } }
@keyframes gic-exclaim { 0% { transform: translateX(-50%) scaleY(1) } 50% { transform: translateX(-50%) scaleY(1.2) } 100% { transform: translateX(-50%) scaleY(1) } }

.scn-prospero-threatens-ariel {
  background: linear-gradient(180deg, #2a1e1e 0%, #1a0e0e 50%, #0e0606 100%), radial-gradient(ellipse at 30% 40%, #3a2222 0%, transparent 70%);
}
.scn-prospero-threatens-ariel .wall-bg {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(135deg, #2e1a1a 0%, #1a0e0e 100%);
  animation: pth-wall 8s ease-in-out infinite alternate;
}
.scn-prospero-threatens-ariel .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #1a0e0e 0%, #0e0606 100%);
  border-radius: 20% 20% 0 0 / 10% 10% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,.8);
}
.scn-prospero-threatens-ariel .staff-glow {
  position: absolute; bottom: 35%; left: 45%; width: 8px; height: 40px;
  background: linear-gradient(180deg, #d49a4a 0%, #8a5a2a 100%);
  border-radius: 4px 4px 2px 2px;
  box-shadow: 0 0 20px 6px #b07030, 0 0 40px 12px rgba(176,112,48,.5);
  animation: pth-glow 2s ease-in-out infinite alternate;
}
.scn-prospero-threatens-ariel .prospero-figure {
  position: absolute; bottom: 30%; left: 42%; width: 24px; height: 50px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0e0e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pth-prospero 6s ease-in-out infinite;
}
.scn-prospero-threatens-ariel .ariel-figure {
  position: absolute; bottom: 28%; left: 30%; width: 16px; height: 36px;
  background: linear-gradient(180deg, #6a5a5a 0%, #3a2a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pth-ariel 4s ease-in-out infinite alternate;
}
.scn-prospero-threatens-ariel .binding {
  position: absolute; bottom: 32%; left: 35%; width: 6px; height: 6px;
  background: #8a4020; border-radius: 50%;
  box-shadow: 0 0 8px 2px rgba(138,64,32,.6);
  animation: pth-bind 3s ease-in-out infinite;
}
@keyframes pth-wall { 0% { opacity:.9 } 50% { opacity:.7 } 100% { opacity:.9 } }
@keyframes pth-glow { 0% { box-shadow: 0 0 16px 4px #b07030; opacity:.8 } 50% { box-shadow: 0 0 30px 8px #d49a4a; opacity:1 } 100% { box-shadow: 0 0 18px 5px #b07030; opacity:.85 } }
@keyframes pth-prospero { 0% { transform: translateX(0) rotate(-3deg) } 30% { transform: translateX(-4px) rotate(2deg) } 60% { transform: translateX(2px) rotate(-1deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes pth-ariel { 0% { transform: translateY(0) rotate(0) } 50% { transform: translateY(-6px) rotate(-5deg) scale(.95) } 100% { transform: translateY(0) rotate(0) } }
@keyframes pth-bind { 0%,100% { transform: translate(0,0) rotate(0) } 50% { transform: translate(4px,-3px) rotate(30deg) } }

.scn-prospero-command-arianymph {
  background: linear-gradient(180deg, #1e2a2e 0%, #121a1e 50%, #0a0e12 100%), radial-gradient(ellipse at 60% 30%, #2a3a3e 0%, transparent 70%);
}
.scn-prospero-command-arianymph .chamber-bg {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(180deg, #1a262a 0%, #0e1418 100%);
  animation: pca-chamber 10s ease-in-out infinite alternate;
}
.scn-prospero-command-arianymph .pool {
  position: absolute; bottom: 20%; left: 10%; right: 10%; height: 20%;
  background: radial-gradient(ellipse at 50% 50%, #2a4a4e 0%, #0a1a1e 100%);
  border-radius: 50% / 100% 100% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,.6);
  animation: pca-pool 6s ease-in-out infinite;
}
.scn-prospero-command-arianymph .prospero-calm {
  position: absolute; bottom: 25%; left: 28%; width: 22px; height: 46px;
  background: linear-gradient(180deg, #2a2a1a 0%, #1a1a0e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pca-prospero 8s ease-in-out infinite alternate;
}
.scn-prospero-command-arianymph .ariel-nymph {
  position: absolute; bottom: 30%; left: 50%; width: 18px; height: 40px;
  background: linear-gradient(180deg, #5a7a7a 0%, #2a4a4a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 0 0 12px 4px #4a7a7a;
  animation: pca-nymph 5s ease-in-out infinite;
}
.scn-prospero-command-arianymph .sparkle-spray {
  position: absolute; bottom: 35%; left: 45%; width: 30px; height: 30px;
  background: radial-gradient(circle, rgba(180,220,220,.6) 0%, transparent 70%);
  border-radius: 50%; filter: blur(3px);
  animation: pca-sparkle 4s ease-in-out infinite alternate;
}
.scn-prospero-command-arianymph .mist-veil {
  position: absolute; top: 20%; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, rgba(180,200,210,.15) 0%, transparent 100%);
  filter: blur(5px);
  animation: pca-mist 30s linear infinite alternate;
}
@keyframes pca-chamber { 0% { opacity:.8 } 50% { opacity:.95 } 100% { opacity:.85 } }
@keyframes pca-pool { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.02) } 100% { transform: scaleY(1) } }
@keyframes pca-prospero { 0% { transform: translateX(0) rotate(0) } 50% { transform: translateX(-2px) rotate(1deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes pca-nymph { 0% { transform: translateY(0) rotate(-2deg) } 30% { transform: translateY(-4px) rotate(2deg) scale(1.02) } 70% { transform: translateY(-2px) rotate(0) scale(.98) } 100% { transform: translateY(0) rotate(-1deg) } }
@keyframes pca-sparkle { 0% { opacity:.6; transform: scale(1) } 50% { opacity:1; transform: scale(1.2) rotate(10deg) } 100% { opacity:.7; transform: scale(.9) rotate(-5deg) } }
@keyframes pca-mist { 0% { transform: translateX(0) } 100% { transform: translateX(-20px) } }

.scn-prospero-calls-caliban {
  background: linear-gradient(180deg, #1a1212 0%, #0e0808 50%, #060404 100%), radial-gradient(ellipse at 40% 60%, #2a1a1a 0%, transparent 60%);
}
.scn-prospero-calls-caliban .cave-dark {
  position: absolute; inset: 30% 20% 20% 20%;
  background: radial-gradient(ellipse at 50% 30%, #1a0e0e 0%, #060404 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 20% 20%;
  box-shadow: inset 0 10px 20px #000;
  animation: pcc-cave 12s ease-in-out infinite alternate;
}
.scn-prospero-calls-caliban .fire-crackle {
  position: absolute; bottom: 35%; left: 30%; width: 20px; height: 30px;
  background: radial-gradient(ellipse at 50% 100%, #d47030 0%, #8a4020 40%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 30px 10px #8a4020;
  animation: pcc-fire 2s ease-in-out infinite alternate;
}
.scn-prospero-calls-caliban .caliban-tortoise {
  position: absolute; bottom: 22%; left: 50%; width: 30px; height: 24px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0e0e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: rotate(-10deg);
  animation: pcc-caliban 5s ease-in-out infinite;
}
.scn-prospero-calls-caliban .prospero-staff {
  position: absolute; bottom: 30%; left: 20%; width: 6px; height: 50px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0e 100%);
  border-radius: 2px;
  transform: rotate(15deg);
  box-shadow: 0 0 10px 2px rgba(200,160,80,.3);
  animation: pcc-staff 6s ease-in-out infinite;
}
.scn-prospero-calls-caliban .shadow-tendril {
  position: absolute; bottom: 20%; left: 45%; width: 8px; height: 30px;
  background: linear-gradient(180deg, #0a0606 0%, #000 100%);
  border-radius: 50%;
  filter: blur(2px);
  animation: pcc-tendril 3s ease-in-out infinite alternate;
}
@keyframes pcc-cave { 0% { opacity:.9 } 50% { opacity:.7 } 100% { opacity:.8 } }
@keyframes pcc-fire { 0% { transform: scale(1) rotate(0); opacity:.9 } 50% { transform: scale(1.1) rotate(-5deg); opacity:1 } 100% { transform: scale(.95) rotate(5deg); opacity:.8 } }
@keyframes pcc-caliban { 0% { transform: translateX(0) rotate(-10deg) } 30% { transform: translateX(4px) rotate(-8deg) } 60% { transform: translateX(-2px) rotate(-12deg) } 100% { transform: translateX(0) rotate(-10deg) } }
@keyframes pcc-staff { 0% { transform: rotate(15deg) } 50% { transform: rotate(18deg) } 100% { transform: rotate(12deg) } }
@keyframes pcc-tendril { 0% { transform: translateY(0) scaleY(1) } 50% { transform: translateY(-6px) scaleY(1.2) } 100% { transform: translateY(0) scaleY(1) } }

.scn-ariel-water-nymph {
  background: linear-gradient(180deg, #0e1a2e 0%, #060e1a 50%, #02060e 100%), radial-gradient(ellipse at 50% 40%, #1a2a4a 0%, transparent 60%);
}
.scn-ariel-water-nymph .water-bg {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(135deg, #0a1420 0%, #040810 100%);
  animation: awn-water 12s ease-in-out infinite alternate;
}
.scn-ariel-water-nymph .pool-ripple {
  position: absolute; bottom: 25%; left: 15%; right: 15%; height: 20%;
  background: radial-gradient(ellipse at 50% 30%, #1a3a4a 0%, #0a1a2a 100%);
  border-radius: 50% / 100% 100% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,.5);
  animation: awn-ripple 8s ease-in-out infinite;
}
.scn-ariel-water-nymph .ariel-ethereal {
  position: absolute; bottom: 30%; left: 40%; width: 20px; height: 42px;
  background: linear-gradient(180deg, #5a7a9a 0%, #2a4a6a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 0 0 20px 6px #4a7a9a, 0 0 40px 12px rgba(74,122,154,.4);
  animation: awn-nymph 6s ease-in-out infinite;
}
.scn-ariel-water-nymph .light-drops {
  position: absolute; bottom: 38%; left: 48%; width: 4px; height: 4px;
  background: #8ab0d0; border-radius: 50%;
  box-shadow: 0 0 8px 2px #6a8aaa;
  animation: awn-drops 4s ease-in-out infinite alternate;
}
.scn-ariel-water-nymph .reed-mist {
  position: absolute; bottom: 20%; left: 10%; width: 6px; height: 30px;
  background: linear-gradient(180deg, #1a2a1a 0%, #0a1a0a 100%);
  border-radius: 2px 2px 0 0;
  transform: rotate(-15deg);
  animation: awn-reed 5s ease-in-out infinite alternate;
}
@keyframes awn-water { 0% { opacity:.8 } 50% { opacity:.95 } 100% { opacity:.85 } }
@keyframes awn-ripple { 0% { transform: scaleX(1) scaleY(1) } 50% { transform: scaleX(1.02) scaleY(1.01) } 100% { transform: scaleX(1) scaleY(1) } }
@keyframes awn-nymph { 0% { transform: translateY(0) rotate(-3deg) } 30% { transform: translateY(-5px) rotate(2deg) scale(1.02) } 70% { transform: translateY(-2px) rotate(0) scale(.98) } 100% { transform: translateY(0) rotate(2deg) } }
@keyframes awn-drops { 0% { opacity:.6; transform: translate(0,0) } 50% { opacity:1; transform: translate(2px,-4px) } 100% { opacity:.7; transform: translate(-1px,0) } }
@keyframes awn-reed { 0% { transform: rotate(-15deg) } 50% { transform: rotate(-10deg) } 100% { transform: rotate(-15deg) } }

.scn-ship-final-struggle { background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 40%, #1a1a2a 100%), radial-gradient(ellipse at 50% 0%, #5a5a6a 0%, transparent 70%); }
.scn-ship-final-struggle .sky { position:absolute; inset:0 0 35% 0; background: linear-gradient(180deg, #4a4a5a 0%, #2a2a3a 100%); animation: ssh-sky 18s ease-in-out infinite alternate; }
.scn-ship-final-struggle .sea { position:absolute; bottom:0; left:0; right:0; height:45%; background: linear-gradient(180deg, #1a1a2e 0%, #0a0a18 100%); animation: ssh-sea 12s ease-in-out infinite alternate; }
.scn-ship-final-struggle .hull { position:absolute; bottom:35%; left:50%; width:160px; height:60px; transform:translateX(-50%); background: linear-gradient(135deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 20% 20% 40% 40% / 60% 60% 30% 30%; box-shadow: 0 -4px 12px rgba(0,0,0,.5); animation: ssh-hull 6s ease-in-out infinite; }
.scn-ship-final-struggle .mast { position:absolute; bottom:45%; left:calc(50% - 12px); width:24px; height:130px; background: linear-gradient(180deg, #3a2a1a 0%, #1a120a 100%); border-radius: 4px; transform-origin: bottom center; animation: ssh-mast 8s ease-in-out infinite; }
.scn-ship-final-struggle .sail { position:absolute; bottom:55%; left:calc(50% - 20px); width:80px; height:60px; background: linear-gradient(180deg, rgba(220,210,190,.4) 0%, rgba(180,170,150,.2) 100%); border-radius: 50% 50% 40% 40% / 70% 70% 30% 30%; filter: blur(2px); transform-origin: top center; animation: ssh-sail 9s ease-in-out infinite; }
.scn-ship-final-struggle .figure { position:absolute; bottom:38%; left:calc(50% + 20px); width:14px; height:24px; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ssh-figure 4s ease-in-out infinite; }
.scn-ship-final-struggle .wave-a { position:absolute; bottom:20%; left:-20%; width:140%; height:20px; background: linear-gradient(180deg, #1a3a4a 0%, transparent 100%); border-radius: 50%; filter: blur(6px); animation: ssh-wave-a 8s linear infinite; }
.scn-ship-final-struggle .wave-b { position:absolute; bottom:10%; left:-10%; width:120%; height:30px; background: linear-gradient(180deg, #1a2a3a 0%, transparent 100%); border-radius: 50%; filter: blur(8px); animation: ssh-wave-b 10s linear infinite reverse; }
.scn-ship-final-struggle .spray { position:absolute; bottom:40%; left:calc(50% - 30px); width:80px; height:10px; background: rgba(180,200,220,.15); border-radius: 50%; filter: blur(5px); animation: ssh-spray 3s ease-in-out infinite; }
@keyframes ssh-sky { 0% { opacity:.7; transform: translateY(0) } 50% { opacity:1; transform: translateY(-5px) } 100% { opacity:.8; transform: translateY(0) } }
@keyframes ssh-sea { 0% { transform: translateY(0) } 50% { transform: translateY(4px) } 100% { transform: translateY(0) } }
@keyframes ssh-hull { 0% { transform: translateX(-50%) rotate(-2deg) } 50% { transform: translateX(-50%) rotate(3deg) translateY(-2px) } 100% { transform: translateX(-50%) rotate(-2deg) } }
@keyframes ssh-mast { 0% { transform: rotate(-2deg) } 50% { transform: rotate(3deg) } 100% { transform: rotate(-2deg) } }
@keyframes ssh-sail { 0% { transform: scaleY(1) rotate(-1deg) } 50% { transform: scaleY(.8) rotate(2deg) } 100% { transform: scaleY(1) rotate(-1deg) } }
@keyframes ssh-figure { 0% { transform: translateX(0) translateY(0) rotate(-1deg) } 25% { transform: translateX(4px) translateY(-2px) rotate(1deg) } 50% { transform: translateX(8px) translateY(0) rotate(-1deg) } 75% { transform: translateX(12px) translateY(-2px) rotate(1deg) } 100% { transform: translateX(16px) translateY(0) rotate(0) } }
@keyframes ssh-wave-a { 0% { transform: translateX(0) } 100% { transform: translateX(40%) } }
@keyframes ssh-wave-b { 0% { transform: translateX(0) } 100% { transform: translateX(-30%) } }
@keyframes ssh-spray { 0% { transform: translateY(0) scale(1); opacity:.3 } 50% { transform: translateY(-8px) scale(1.5); opacity:.8 } 100% { transform: translateY(0) scale(1); opacity:.3 } }

.scn-ship-insults-exchange { background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 40%, #1a1a2a 100%), radial-gradient(ellipse at 50% 80%, #4a4a5a 0%, transparent 70%); }
.scn-ship-insults-exchange .sky { position:absolute; inset:0 0 35% 0; background: linear-gradient(180deg, #4a4a5a 0%, #2a2a3a 100%); animation: ssi-sky 20s ease-in-out infinite alternate; }
.scn-ship-insults-exchange .sea { position:absolute; bottom:0; left:0; right:0; height:45%; background: linear-gradient(180deg, #1a1a2e 0%, #0a0a18 100%); animation: ssi-sea 10s ease-in-out infinite alternate; }
.scn-ship-insults-exchange .deck { position:absolute; bottom:35%; left:50%; width:180px; height:30px; transform:translateX(-50%); background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%); border-radius: 4px; box-shadow: 0 -4px 10px rgba(0,0,0,.4); animation: ssi-deck 7s ease-in-out infinite; }
.scn-ship-insults-exchange .sailor-a { position:absolute; bottom:40%; left:calc(50% - 30px); width:16px; height:28px; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ssi-sailor-a 4s ease-in-out infinite; }
.scn-ship-insults-exchange .sailor-b { position:absolute; bottom:40%; left:calc(50% + 20px); width:16px; height:28px; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ssi-sailor-b 4s ease-in-out infinite .5s; }
.scn-ship-insults-exchange .mast { position:absolute; bottom:42%; left:calc(50% - 6px); width:12px; height:100px; background: linear-gradient(180deg, #3a2a1a 0%, #1a120a 100%); border-radius: 3px; transform-origin: bottom center; animation: ssi-mast 8s ease-in-out infinite; }
.scn-ship-insults-exchange .wave { position:absolute; bottom:15%; left:-20%; width:140%; height:25px; background: linear-gradient(180deg, #1a3a4a 0%, transparent 100%); border-radius: 50%; filter: blur(6px); animation: ssi-wave 12s linear infinite; }
.scn-ship-insults-exchange .spray { position:absolute; bottom:45%; left:50%; width:40px; height:6px; background: rgba(180,200,220,.2); border-radius: 50%; filter: blur(3px); animation: ssi-spray 2s ease-in-out infinite; }
@keyframes ssi-sky { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.7 } }
@keyframes ssi-sea { 0% { transform: translateY(0) } 50% { transform: translateY(3px) } 100% { transform: translateY(0) } }
@keyframes ssi-deck { 0% { transform: translateX(-50%) rotate(-1deg) } 50% { transform: translateX(-50%) rotate(2deg) } 100% { transform: translateX(-50%) rotate(-1deg) } }
@keyframes ssi-sailor-a { 0% { transform: translateX(0) rotate(-2deg) } 25% { transform: translateX(-3px) rotate(1deg) } 50% { transform: translateX(0) rotate(2deg) } 75% { transform: translateX(3px) rotate(-1deg) } 100% { transform: translateX(0) rotate(-2deg) } }
@keyframes ssi-sailor-b { 0%,100% { transform: rotate(2deg) } 50% { transform: rotate(-3deg) } }
@keyframes ssi-mast { 0% { transform: rotate(-1deg) } 50% { transform: rotate(2deg) } 100% { transform: rotate(-1deg) } }
@keyframes ssi-wave { 0% { transform: translateX(0) } 100% { transform: translateX(30%) } }
@keyframes ssi-spray { 0% { transform: translateY(0) scale(1); opacity:.2 } 50% { transform: translateY(-10px) scale(1.5); opacity:.7 } 100% { transform: translateY(0) scale(1); opacity:.2 } }

.scn-ship-prayers-and-despair { background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 50%, #0a0a1a 100%), radial-gradient(ellipse at 50% 30%, #3a3a4a 0%, transparent 70%); }
.scn-ship-prayers-and-despair .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #3a3a5a 0%, #1a1a2a 100%); animation: ssp-sky 22s ease-in-out infinite alternate; }
.scn-ship-prayers-and-despair .sea { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, #0a0a1e 0%, #050510 100%); animation: ssp-sea 14s ease-in-out infinite; }
.scn-ship-prayers-and-despair .deck-planks { position:absolute; bottom:35%; left:50%; width:140px; height:40px; transform:translateX(-50%); background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%); border-radius: 4px; box-shadow: inset 0 2px 8px rgba(0,0,0,.6); animation: ssp-deck 9s ease-in-out infinite; }
.scn-ship-prayers-and-despair .kneeling-figure { position:absolute; bottom:38%; left:50%; width:20px; height:32px; transform:translateX(-50%); background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 20% 20%; transform-origin: bottom center; animation: ssp-kneel 5s ease-in-out infinite; }
.scn-ship-prayers-and-despair .lantern { position:absolute; bottom:50%; left:calc(50% - 30px); width:8px; height:12px; background: radial-gradient(circle, #c0a050 0%, #806030 100%); border-radius: 4px 4px 2px 2px; box-shadow: 0 0 20px 4px rgba(192,160,80,.3); animation: ssp-lantern 3s ease-in-out infinite; }
.scn-ship-prayers-and-despair .wave { position:absolute; bottom:5%; left:-15%; width:130%; height:35px; background: linear-gradient(180deg, #0a1a2a 0%, transparent 100%); border-radius: 50%; filter: blur(8px); animation: ssp-wave 16s linear infinite; }
.scn-ship-prayers-and-despair .rain { position:absolute; inset:0; background: repeating-linear-gradient(0deg, rgba(180,200,220,.08) 0px, transparent 2px, transparent 8px); animation: ssp-rain 2s linear infinite; }
@keyframes ssp-sky { 0% { opacity:.6 } 50% { opacity:1 } 100% { opacity:.7 } }
@keyframes ssp-sea { 0% { transform: translateY(0) } 50% { transform: translateY(5px) } 100% { transform: translateY(0) } }
@keyframes ssp-deck { 0% { transform: translateX(-50%) rotate(-1deg) } 50% { transform: translateX(-50%) rotate(1deg) translateY(-1px) } 100% { transform: translateX(-50%) rotate(-1deg) } }
@keyframes ssp-kneel { 0% { transform: translateX(-50%) rotate(0) } 25% { transform: translateX(-50%) rotate(-3deg) translateY(-1px) } 50% { transform: translateX(-50%) rotate(0) translateY(1px) } 75% { transform: translateX(-50%) rotate(3deg) translateY(-1px) } 100% { transform: translateX(-50%) rotate(0) } }
@keyframes ssp-lantern { 0% { opacity:.6; transform: scale(1) } 50% { opacity:1; transform: scale(1.1) } 100% { opacity:.6; transform: scale(1) } }
@keyframes ssp-wave { 0% { transform: translateX(0) } 100% { transform: translateX(-40%) } }
@keyframes ssp-rain { 0% { background-position: 0 0 } 100% { background-position: 0 20px } }

.scn-ship-confused-noise { background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 50%, #0a0a1a 100%), radial-gradient(ellipse at 50% 50%, #4a4a5a 0%, transparent 80%); }
.scn-ship-confused-noise .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%); animation: ssc-sky 24s ease-in-out infinite alternate; }
.scn-ship-confused-noise .sea { position:absolute; bottom:0; left:0; right:0; height:50%; background: linear-gradient(180deg, #0a0a1e 0%, #050510 100%); animation: ssc-sea 12s ease-in-out infinite; }
.scn-ship-confused-noise .hull-left { position:absolute; bottom:30%; left:10%; width:30%; height:80px; background: linear-gradient(180deg, #2a1a0a 0%, #1a0a00 100%); border-radius: 20% 10% 40% 40% / 60% 40% 30% 30%; transform: rotate(-15deg); animation: ssc-hull-l 8s ease-in-out infinite; }
.scn-ship-confused-noise .hull-right { position:absolute; bottom:30%; right:10%; width:30%; height:80px; background: linear-gradient(180deg, #2a1a0a 0%, #1a0a00 100%); border-radius: 10% 20% 40% 40% / 40% 60% 30% 30%; transform: rotate(15deg); animation: ssc-hull-r 8s ease-in-out infinite .5s; }
.scn-ship-confused-noise .splinter { position:absolute; bottom:40%; left:calc(50% - 4px); width:8px; height:30px; background: linear-gradient(180deg, #3a2a1a 0%, #1a120a 100%); border-radius: 2px; transform: rotate(-25deg); animation: ssc-splinter 3s ease-in-out infinite; }
.scn-ship-confused-noise .figure { position:absolute; bottom:35%; left:calc(50% + 20px); width:14px; height:22px; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ssc-figure 4s ease-in-out infinite; }
.scn-ship-confused-noise .wave { position:absolute; bottom:10%; left:-20%; width:140%; height:30px; background: linear-gradient(180deg, #0a1a2a 0%, transparent 100%); border-radius: 50%; filter: blur(6px); animation: ssc-wave 14s linear infinite; }
.scn-ship-confused-noise .debris { position:absolute; bottom:20%; left:30%; width:20px; height:10px; background: #1a120a; border-radius: 4px; animation: ssc-debris 5s ease-in-out infinite; }
@keyframes ssc-sky { 0% { opacity:.5; transform: scale(1) } 50% { opacity:.8; transform: scale(1.02) } 100% { opacity:.6; transform: scale(1) } }
@keyframes ssc-sea { 0% { transform: translateY(0) } 50% { transform: translateY(6px) } 100% { transform: translateY(0) } }
@keyframes ssc-hull-l { 0% { transform: rotate(-15deg) translateX(0) } 50% { transform: rotate(-10deg) translateX(-5px) } 100% { transform: rotate(-15deg) translateX(0) } }
@keyframes ssc-hull-r { 0% { transform: rotate(15deg) translateX(0) } 50% { transform: rotate(10deg) translateX(5px) } 100% { transform: rotate(15deg) translateX(0) } }
@keyframes ssc-splinter { 0% { transform: rotate(-25deg) translateX(0) scaleY(1) } 50% { transform: rotate(-20deg) translateX(-3px) scaleY(.8) } 100% { transform: rotate(-25deg) translateX(0) scaleY(1) } }
@keyframes ssc-figure { 0% { transform: translateX(0) translateY(0) rotate(-2deg) } 25% { transform: translateX(-3px) translateY(-2px) rotate(1deg) } 50% { transform: translateX(-6px) translateY(0) rotate(-1deg) } 75% { transform: translateX(-9px) translateY(-2px) rotate(2deg) } 100% { transform: translateX(-12px) translateY(0) rotate(0) } }
@keyframes ssc-wave { 0% { transform: translateX(0) } 100% { transform: translateX(40%) } }
@keyframes ssc-debris { 0% { transform: translate(0,0) rotate(0) } 50% { transform: translate(10px,-5px) rotate(20deg) } 100% { transform: translate(0,0) rotate(0) } }

.scn-prospero-threatens-caliban {
  background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 40%, #0a0505 100%), radial-gradient(ellipse at 30% 50%, #3a2a2a 0%, transparent 70%);
}
.scn-prospero-threatens-caliban .cave-wall {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(180deg, #1a1212 0%, #0f0808 100%);
  border-radius: 10% 20% 0 0 / 20% 30% 0 0;
  animation: ptc-wall 24s ease-in-out infinite alternate;
}
.scn-prospero-threatens-caliban .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(0deg, #0a0505 0%, #2a1a1a 100%);
  box-shadow: inset 0 12px 20px rgba(0,0,0,.6);
}
.scn-prospero-threatens-caliban .prospero {
  position: absolute; bottom: 28%; left: 25%; width: 22px; height: 50px;
  background: linear-gradient(180deg, #4a3a3a 0%, #2a1a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ptc-prospero 6s ease-in-out infinite;
}
.scn-prospero-threatens-caliban .caliban {
  position: absolute; bottom: 22%; left: 55%; width: 20px; height: 32px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%);
  border-radius: 40% 50% 30% 30% / 50% 60% 30% 30%;
  transform-origin: bottom center;
  animation: ptc-caliban 4s ease-in-out infinite;
}
.scn-prospero-threatens-caliban .staff-glow {
  position: absolute; bottom: 45%; left: 30%; width: 8px; height: 12px;
  background: radial-gradient(circle, #ffb060 0%, #b07030 60%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 20px 6px #b07030, 0 0 40px 12px rgba(176,112,48,.3);
  animation: ptc-glow 2s ease-in-out infinite alternate;
}
.scn-prospero-threatens-caliban .urchin {
  position: absolute; width: 6px; height: 6px;
  background: radial-gradient(circle, #8a4020 0%, #4a2010 100%);
  border-radius: 50%;
  box-shadow: 0 0 4px 2px #6a3018;
  animation: ptc-urchin 1.5s ease-in-out infinite;
}
.scn-prospero-threatens-caliban .u1 { bottom: 40%; left: 48%; animation-delay: 0s; }
.scn-prospero-threatens-caliban .u2 { bottom: 35%; left: 60%; animation-delay: 0.3s; }
.scn-prospero-threatens-caliban .u3 { bottom: 45%; left: 42%; animation-delay: 0.6s; }
@keyframes ptc-wall { 0% { opacity: .7 } 50% { opacity: 1 } 100% { opacity: .8 } }
@keyframes ptc-prospero { 0%,100% { transform: translateX(0) rotate(-2deg) } 50% { transform: translateX(-3px) rotate(2deg) scaleY(1.02) } }
@keyframes ptc-caliban { 0%,100% { transform: translateX(0) translateY(0) } 25% { transform: translateX(-4px) translateY(2px) rotate(-5deg) } 50% { transform: translateX(-8px) translateY(4px) rotate(-8deg) } 75% { transform: translateX(-4px) translateY(2px) rotate(-4deg) } }
@keyframes ptc-glow { 0% { box-shadow: 0 0 15px 3px #b07030, 0 0 30px 8px rgba(176,112,48,.2); opacity: .8 } 50% { box-shadow: 0 0 25px 8px #ffb060, 0 0 50px 16px rgba(255,176,96,.4); opacity: 1 } 100% { box-shadow: 0 0 18px 4px #b07030, 0 0 35px 10px rgba(176,112,48,.3); opacity: .9 } }
@keyframes ptc-urchin { 0% { transform: translate(0,0) scale(1) } 50% { transform: translate(3px,-4px) scale(1.3) } 100% { transform: translate(-2px,2px) scale(0.9) } }

.scn-caliban-mother-sycorax {
  background: linear-gradient(180deg, #0a0510 0%, #180a1a 40%, #0a030a 100%), radial-gradient(ellipse at 60% 80%, #281020 0%, transparent 80%);
}
.scn-caliban-mother-sycorax .bg-shadow {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #0a0510 0%, #140814 100%);
  animation: cms-shadow 30s ease-in-out infinite alternate;
}
.scn-caliban-mother-sycorax .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(0deg, #050205 0%, #0a030a 100%);
  box-shadow: inset 0 8px 16px rgba(0,0,0,.7);
}
.scn-caliban-mother-sycorax .sycorax {
  position: absolute; bottom: 28%; left: 30%; width: 24px; height: 48px;
  background: linear-gradient(180deg, #3a2040 0%, #1a0c20 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cms-sycorax 8s ease-in-out infinite;
}
.scn-caliban-mother-sycorax .caliban-child {
  position: absolute; bottom: 20%; left: 55%; width: 16px; height: 24px;
  background: linear-gradient(180deg, #2a1a10 0%, #0a0500 100%);
  border-radius: 40% 50% 30% 30% / 50% 60% 30% 30%;
  transform-origin: bottom center;
  animation: cms-child 5s ease-in-out infinite alternate;
}
.scn-caliban-mother-sycorax .dark-aura {
  position: absolute; bottom: 35%; left: 28%; width: 40px; height: 40px;
  background: radial-gradient(circle, #3a1040 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(10px);
  animation: cms-aura 6s ease-in-out infinite alternate;
}
.scn-caliban-mother-sycorax .eye-glint {
  position: absolute; bottom: 52%; left: 35%; width: 3px; height: 3px;
  background: #b080a0;
  border-radius: 50%;
  box-shadow: 0 0 8px 2px #b080a0;
  animation: cms-glint 2s ease-in-out infinite;
}
.scn-caliban-mother-sycorax .crack {
  position: absolute; bottom: 30%; left: 45%; width: 12px; height: 2px;
  background: #b080a0;
  border-radius: 50%;
  animation: cms-crack 4s ease-in-out infinite;
}
@keyframes cms-shadow { 0% { opacity: .6 } 50% { opacity: 1 } 100% { opacity: .7 } }
@keyframes cms-sycorax { 0% { transform: translateY(0) rotate(-1deg) } 50% { transform: translateY(-4px) rotate(1deg) scaleY(1.03) } 100% { transform: translateY(0) rotate(0) } }
@keyframes cms-child { 0% { transform: translateX(0) translateY(0) } 50% { transform: translateX(2px) translateY(-2px) } 100% { transform: translateX(0) translateY(0) } }
@keyframes cms-aura { 0% { transform: scale(1); opacity: .5 } 50% { transform: scale(1.2); opacity: .8 } 100% { transform: scale(.9); opacity: .4 } }
@keyframes cms-glint { 0%,100% { opacity: .3 } 50% { opacity: 1 } }
@keyframes cms-crack { 0% { transform: scaleX(1) } 50% { transform: scaleX(2) } 100% { transform: scaleX(1) } }

.scn-prospero-superiority {
  background: linear-gradient(180deg, #1a1010 0%, #0a0505 50%, #050202 100%), radial-gradient(ellipse at 20% 30%, #2a1810 0%, transparent 60%);
}
.scn-prospero-superiority .cavern {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #1a1210 0%, #0f0808 100%);
  border-radius: 0 0 20% 20% / 0 0 40% 40%;
  animation: psu-cavern 28s ease-in-out infinite alternate;
}
.scn-prospero-superiority .stone-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(0deg, #050202 0%, #1a1010 100%);
  box-shadow: inset 0 10px 18px rgba(0,0,0,.5);
}
.scn-prospero-superiority .prospero-tall {
  position: absolute; bottom: 25%; left: 20%; width: 20px; height: 55px;
  background: linear-gradient(180deg, #4a3028 0%, #2a1810 100%);
  border-radius: 50% 50% 40% 40% / 65% 65% 35% 35%;
  transform-origin: bottom center;
  animation: psu-prospero 7s ease-in-out infinite;
}
.scn-prospero-superiority .caliban-crouch {
  position: absolute; bottom: 18%; left: 55%; width: 22px; height: 28px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%);
  border-radius: 40% 50% 30% 30% / 50% 60% 30% 30%;
  transform-origin: bottom center;
  animation: psu-caliban 5s ease-in-out infinite;
}
.scn-prospero-superiority .light-beam {
  position: absolute; bottom: 50%; left: 25%; width: 4px; height: 30px;
  background: linear-gradient(0deg, transparent 0%, #b09060 30%, transparent 100%);
  opacity: .6;
  transform: rotate(10deg);
  transform-origin: bottom center;
  animation: psu-beam 4s ease-in-out infinite alternate;
}
.scn-prospero-superiority .shadow-pool {
  position: absolute; bottom: 8%; left: 50%; width: 50px; height: 12px;
  background: radial-gradient(ellipse, #0a0505 0%, transparent 100%);
  border-radius: 50%;
  transform: translateX(-50%);
  animation: psu-pool 6s ease-in-out infinite;
}
@keyframes psu-cavern { 0% { opacity: .7 } 50% { opacity: 1 } 100% { opacity: .8 } }
@keyframes psu-prospero { 0%,100% { transform: translateX(0) rotate(-1deg) } 50% { transform: translateX(-2px) rotate(1deg) scaleY(1.02) } }
@keyframes psu-caliban { 0% { transform: translateX(0) translateY(0) } 25% { transform: translateX(-5px) translateY(3px) rotate(-6deg) } 50% { transform: translateX(-10px) translateY(6px) rotate(-10deg) } 75% { transform: translateX(-5px) translateY(3px) rotate(-5deg) } 100% { transform: translateX(0) translateY(0) } }
@keyframes psu-beam { 0% { opacity: .4; transform: rotate(8deg) } 50% { opacity: .8; transform: rotate(12deg) } 100% { opacity: .5; transform: rotate(10deg) } }
@keyframes psu-pool { 0% { transform: translateX(-50%) scaleX(1) } 50% { transform: translateX(-50%) scaleX(1.3) } 100% { transform: translateX(-50%) scaleX(1) } }

.scn-caliban-curse-language {
  background: linear-gradient(180deg, #1a0a0a 0%, #0f0505 40%, #050202 100%), radial-gradient(ellipse at 50% 70%, #2a1010 0%, transparent 80%);
}
.scn-caliban-curse-language .dark-cell {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(180deg, #1a0a0a 0%, #0a0303 100%);
  border-radius: 0 0 10% 10% / 0 0 20% 20%;
  animation: ccl-cell 30s ease-in-out infinite alternate;
}
.scn-caliban-curse-language .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(0deg, #050202 0%, #0a0505 100%);
  box-shadow: inset 0 6px 12px rgba(0,0,0,.6);
}
.scn-caliban-curse-language .caliban-anguish {
  position: absolute; bottom: 20%; left: 40%; width: 20px; height: 36px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%);
  border-radius: 40% 50% 30% 30% / 50% 60% 30% 30%;
  transform-origin: bottom center;
  animation: ccl-caliban 4s ease-in-out infinite;
}
.scn-caliban-curse-language .curse-mist {
  position: absolute; bottom: 35%; left: 30%; width: 60px; height: 20px;
  background: radial-gradient(ellipse, #6a3a2a 0%, transparent 70%);
  filter: blur(8px);
  border-radius: 50%;
  animation: ccl-mist 6s ease-in-out infinite;
}
.scn-caliban-curse-language .tongue-trace {
  position: absolute; bottom: 40%; left: 45%; width: 10px; height: 3px;
  background: #a06040;
  border-radius: 50%;
  animation: ccl-tongue 3s ease-in-out infinite;
}
.scn-caliban-curse-language .plague-drip {
  position: absolute; width: 4px; height: 4px;
  background: radial-gradient(circle, #8a4030 0%, #4a2018 100%);
  border-radius: 50%;
  box-shadow: 0 0 6px 2px #6a3020;
  animation: ccl-drip 2s ease-in-out infinite;
}
.scn-caliban-curse-language .d1 { bottom: 28%; left: 50%; animation-delay: 0s; }
.scn-caliban-curse-language .d2 { bottom: 32%; left: 55%; animation-delay: 0.5s; }
@keyframes ccl-cell { 0% { opacity: .7 } 50% { opacity: 1 } 100% { opacity: .8 } }
@keyframes ccl-caliban { 0%,100% { transform: translateX(0) translateY(0) rotate(0) } 25% { transform: translateX(3px) translateY(-2px) rotate(2deg) } 50% { transform: translateX(-2px) translateY(1px) rotate(-3deg) } 75% { transform: translateX(2px) translateY(-1px) rotate(1deg) } }
@keyframes ccl-mist { 0% { transform: scale(1); opacity: .3 } 50% { transform: scale(1.2); opacity: .6 } 100% { transform: scale(.9); opacity: .2 } }
@keyframes ccl-tongue { 0% { transform: scaleX(1) } 50% { transform: scaleX(3) } 100% { transform: scaleX(1) } }
@keyframes ccl-drip { 0% { transform: translate(0,0) scale(1) } 50% { transform: translate(2px,3px) scale(1.4) } 100% { transform: translate(0,0) scale(1) } }

/* Scene 1: miranda-divine-thing */
.scn-miranda-divine-thing {
  background:
    linear-gradient(180deg, #f9e3c0 0%, #d4a373 50%, #b07d5e 100%),
    radial-gradient(ellipse at 60% 30%, #fff5e6 0%, transparent 60%);
}
.scn-miranda-divine-thing .sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #fce8c4 0%, #dbb08a 100%);
  animation: mi-sky 10s ease-in-out infinite alternate;
}
.scn-miranda-divine-thing .sun {
  position: absolute; top: 10%; left: 60%; width: 60px; height: 60px;
  background: radial-gradient(circle, #fff5e6 0%, #ffd599 40%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 80px 40px rgba(255,213,153,0.6);
  animation: mi-sun 8s ease-in-out infinite alternate;
}
.scn-miranda-divine-thing .cliff {
  position: absolute; bottom: 25%; left: 0; right: 10%; height: 30%;
  background: linear-gradient(180deg, #8b6f4e 0%, #5a4030 100%);
  border-radius: 30% 10% 0 0 / 60% 20% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.3);
  animation: mi-cliff 12s ease-in-out infinite alternate;
}
.scn-miranda-divine-thing .figure-miranda {
  position: absolute; bottom: 30%; left: 15%; width: 20px; height: 50px;
  background: linear-gradient(180deg, #4a3020 0%, #2a1a10 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: mi-miranda-watch 4s ease-in-out infinite;
}
.scn-miranda-divine-thing .figure-ferdinand {
  position: absolute; bottom: 20%; left: 55%; width: 24px; height: 60px;
  background: linear-gradient(180deg, #6b5030 0%, #3a2818 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: mi-ferdinand-stand 6s ease-in-out infinite;
}
.scn-miranda-divine-thing .halo {
  position: absolute; top: 8%; left: 52%; width: 80px; height: 80px;
  background: radial-gradient(circle, rgba(255,230,200,0.4) 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(8px);
  animation: mi-halo 4s ease-in-out infinite alternate;
}
.scn-miranda-divine-thing .spirit-sparkles {
  position: absolute; top: 15%; left: 50%; width: 100px; height: 100px;
  background: radial-gradient(circle at 30% 40%, rgba(255,245,200,0.6) 0%, transparent 50%),
              radial-gradient(circle at 70% 60%, rgba(255,220,150,0.4) 0%, transparent 50%);
  filter: blur(3px);
  animation: mi-sparkles 3s ease-in-out infinite alternate;
}
@keyframes mi-sky { 0% { opacity: 0.9 } 50% { opacity: 1 } 100% { opacity: 0.8 } }
@keyframes mi-sun { 0% { transform: scale(1) translateY(0); box-shadow: 0 0 60px 30px rgba(255,213,153,0.5) } 50% { transform: scale(1.05) translateY(-3px); box-shadow: 0 0 90px 50px rgba(255,213,153,0.7) } 100% { transform: scale(1) translateY(0); box-shadow: 0 0 60px 30px rgba(255,213,153,0.5) } }
@keyframes mi-cliff { 0% { transform: translateY(0) } 50% { transform: translateY(-3px) } 100% { transform: translateY(0) } }
@keyframes mi-miranda-watch { 0% { transform: translateX(0) rotate(0) } 25% { transform: translateX(2px) rotate(3deg) } 50% { transform: translateX(0) rotate(0) } 75% { transform: translateX(-2px) rotate(-3deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes mi-ferdinand-stand { 0% { transform: translateY(0) } 50% { transform: translateY(-1px) } 100% { transform: translateY(0) } }
@keyframes mi-halo { 0% { opacity: 0.3; transform: scale(0.8) } 50% { opacity: 0.6; transform: scale(1.1) } 100% { opacity: 0.3; transform: scale(0.8) } }
@keyframes mi-sparkles { 0% { opacity: 0.4; transform: scale(0.9) rotate(0deg) } 50% { opacity: 0.8; transform: scale(1.2) rotate(10deg) } 100% { opacity: 0.4; transform: scale(0.9) rotate(0deg) } }

/* Scene 2: ferdinand-naples */
.scn-ferdinand-naples {
  background:
    linear-gradient(180deg, #fce8c4 0%, #e2b88a 40%, #c8956e 100%),
    radial-gradient(ellipse at 50% 20%, #fff5e6 0%, transparent 70%);
}
.scn-ferdinand-naples .sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #fdebd0 0%, #dbb08a 100%);
  animation: fe-sky 10s ease-in-out infinite alternate;
}
.scn-ferdinand-naples .sun {
  position: absolute; top: 8%; right: 25%; width: 50px; height: 50px;
  background: radial-gradient(circle, #fff5e6 0%, #ffd599 40%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 70px 35px rgba(255,213,153,0.6);
  animation: fe-sun 8s ease-in-out infinite alternate;
}
.scn-ferdinand-naples .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #c8956e 0%, #8b6f4e 100%);
  border-radius: 30% 30% 0 0 / 20% 20% 0 0;
  animation: fe-ground 12s ease-in-out infinite alternate;
}
.scn-ferdinand-naples .figure-ferdinand {
  position: absolute; bottom: 25%; left: 40%; width: 22px; height: 58px;
  background: linear-gradient(180deg, #6b5030 0%, #3a2818 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: fe-ferdinand-speak 5s ease-in-out infinite;
}
.scn-ferdinand-naples .figure-miranda {
  position: absolute; bottom: 25%; left: 55%; width: 20px; height: 50px;
  background: linear-gradient(180deg, #4a3020 0%, #2a1a10 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: fe-miranda-listen 5s ease-in-out infinite;
}
.scn-ferdinand-naples .gesture {
  position: absolute; bottom: 35%; left: 47%; width: 18px; height: 18px;
  background: radial-gradient(circle, #dbb08a 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(4px);
  animation: fe-gesture 3s ease-in-out infinite alternate;
}
.scn-ferdinand-naples .light-beam {
  position: absolute; top: 10%; left: 38%; width: 25%; height: 40%;
  background: linear-gradient(180deg, rgba(255,245,200,0.3) 0%, transparent 100%);
  clip-path: polygon(30% 0%, 70% 0%, 60% 100%, 40% 100%);
  animation: fe-beam 6s ease-in-out infinite alternate;
}
@keyframes fe-sky { 0% { opacity: 0.9 } 50% { opacity: 1 } 100% { opacity: 0.8 } }
@keyframes fe-sun { 0% { transform: scale(1) translateY(0); box-shadow: 0 0 50px 25px rgba(255,213,153,0.5) } 50% { transform: scale(1.04) translateY(-2px); box-shadow: 0 0 80px 40px rgba(255,213,153,0.7) } 100% { transform: scale(1) translateY(0); box-shadow: 0 0 50px 25px rgba(255,213,153,0.5) } }
@keyframes fe-ground { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes fe-ferdinand-speak { 0% { transform: translateX(0) rotate(0deg) } 25% { transform: translateX(1px) rotate(2deg) } 50% { transform: translateX(0) rotate(0deg) } 75% { transform: translateX(-1px) rotate(-2deg) } 100% { transform: translateX(0) rotate(0deg) } }
@keyframes fe-miranda-listen { 0% { transform: translateX(0) } 50% { transform: translateX(2px) } 100% { transform: translateX(0) } }
@keyframes fe-gesture { 0% { opacity: 0.3; transform: scale(0.8) } 50% { opacity: 0.7; transform: scale(1.2) } 100% { opacity: 0.3; transform: scale(0.8) } }
@keyframes fe-beam { 0% { opacity: 0.2; transform: skewX(0deg) } 50% { opacity: 0.5; transform: skewX(5deg) } 100% { opacity: 0.2; transform: skewX(0deg) } }

/* Scene 3: prospero-test-ferdinand */
.scn-prospero-test-ferdinand {
  background:
    linear-gradient(180deg, #e8c8a0 0%, #b8926a 40%, #8c6e4a 100%),
    radial-gradient(ellipse at 30% 50%, #f5e6d0 0%, transparent 60%);
}
.scn-prospero-test-ferdinand .sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #f0d8b8 0%, #c8a888 100%);
  animation: pr-sky 8s ease-in-out infinite alternate;
}
.scn-prospero-test-ferdinand .sun-harsh {
  position: absolute; top: 10%; left: 20%; width: 40px; height: 40px;
  background: radial-gradient(circle, #fff5e6 0%, #ffd599 40%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 60px 30px rgba(255,213,153,0.5);
  animation: pr-sun 6s ease-in-out infinite alternate;
}
.scn-prospero-test-ferdinand .rock {
  position: absolute; bottom: 20%; left: 0; right: 20%; height: 35%;
  background: linear-gradient(180deg, #7a6040 0%, #4a3622 100%);
  border-radius: 20% 40% 0 0 / 50% 30% 0 0;
  box-shadow: inset 0 8px 16px rgba(0,0,0,0.4);
  animation: pr-rock 14s ease-in-out infinite alternate;
}
.scn-prospero-test-ferdinand .figure-prospero {
  position: absolute; bottom: 28%; left: 25%; width: 26px; height: 64px;
  background: linear-gradient(180deg, #2a1a10 0%, #0d0805 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pr-prospero 4s ease-in-out infinite;
}
.scn-prospero-test-ferdinand .figure-ferdinand {
  position: absolute; bottom: 22%; left: 55%; width: 22px; height: 58px;
  background: linear-gradient(180deg, #6b5030 0%, #3a2818 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: rotate(10deg);
  transform-origin: bottom center;
  animation: pr-ferdinand 5s ease-in-out infinite;
}
.scn-prospero-test-ferdinand .burden {
  position: absolute; bottom: 28%; left: 50%; width: 40px; height: 20px;
  background: linear-gradient(180deg, #5a4030 0%, #2a1a10 100%);
  border-radius: 20% 20% 40% 40% / 30% 30% 50% 50%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.5);
  animation: pr-burden 3s ease-in-out infinite alternate;
}
.scn-prospero-test-ferdinand .shadow-prospero {
  position: absolute; bottom: 10%; left: 20%; width: 80px; height: 20px;
  background: rgba(0,0,0,0.3);
  border-radius: 50%;
  filter: blur(6px);
  animation: pr-shadow 4s ease-in-out infinite alternate;
}
.scn-prospero-test-ferdinand .figure-miranda {
  position: absolute; bottom: 24%; left: 70%; width: 18px; height: 46px;
  background: linear-gradient(180deg, #4a3020 0%, #2a1a10 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pr-miranda 6s ease-in-out infinite;
}
@keyframes pr-sky { 0% { opacity: 0.9 } 50% { opacity: 0.7 } 100% { opacity: 0.9 } }
@keyframes pr-sun { 0% { transform: scale(1); box-shadow: 0 0 40px 20px rgba(255,213,153,0.4) } 50% { transform: scale(1.1); box-shadow: 0 0 80px 40px rgba(255,213,153,0.7) } 100% { transform: scale(1); box-shadow: 0 0 40px 20px rgba(255,213,153,0.4) } }
@keyframes pr-rock { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes pr-prospero { 0% { transform: translateX(0) rotate(0deg) } 25% { transform: translateX(2px) rotate(2deg) } 50% { transform: translateX(0) rotate(0deg) } 75% { transform: translateX(-2px) rotate(-2deg) } 100% { transform: translateX(0) rotate(0deg) } }
@keyframes pr-ferdinand { 0% { transform: translateY(0) rotate(8deg) } 25% { transform: translateY(-2px) rotate(10deg) } 50% { transform: translateY(0) rotate(8deg) } 75% { transform: translateY(1px) rotate(6deg) } 100% { transform: translateY(0) rotate(8deg) } }
@keyframes pr-burden { 0% { transform: translateY(0) } 50% { transform: translateY(-4px) } 100% { transform: translateY(0) } }
@keyframes pr-shadow { 0% { transform: scaleX(1) } 50% { transform: scaleX(1.2) } 100% { transform: scaleX(1) } }
@keyframes pr-miranda { 0% { transform: translateX(0) rotate(0deg) } 25% { transform: translateX(2px) rotate(3deg) } 50% { transform: translateX(0) rotate(0deg) } 75% { transform: translateX(-2px) rotate(-3deg) } 100% { transform: translateX(0) rotate(0deg) } }

/* Scene 4: prospero-accuses-ferdinand */
.scn-prospero-accuses-ferdinand {
  background:
    linear-gradient(180deg, #d9b898 0%, #a88262 40%, #7a5c40 100%),
    radial-gradient(ellipse at 60% 30%, #f5e6d0 0%, transparent 60%);
}
.scn-prospero-accuses-ferdinand .sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #e8c8a8 0%, #b8926a 100%);
  animation: ac-sky 8s ease-in-out infinite alternate;
}
.scn-prospero-accuses-ferdinand .sun-harsh {
  position: absolute; top: 8%; right: 15%; width: 45px; height: 45px;
  background: radial-gradient(circle, #fff5e6 0%, #ffd599 35%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 70px 35px rgba(255,213,153,0.5);
  animation: ac-sun 5s ease-in-out infinite alternate;
}
.scn-prospero-accuses-ferdinand .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #a88262 0%, #6a4e32 100%);
  border-radius: 40% 40% 0 0 / 20% 20% 0 0;
  animation: ac-ground 12s ease-in-out infinite alternate;
}
.scn-prospero-accuses-ferdinand .figure-prospero {
  position: absolute; bottom: 25%; left: 35%; width: 26px; height: 64px;
  background: linear-gradient(180deg, #2a1a10 0%, #0d0805 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: rotate(-5deg);
  transform-origin: bottom center;
  animation: ac-prospero 4s ease-in-out infinite;
}
.scn-prospero-accuses-ferdinand .figure-ferdinand {
  position: absolute; bottom: 22%; left: 55%; width: 22px; height: 58px;
  background: linear-gradient(180deg, #6b5030 0%, #3a2818 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: rotate(5deg);
  transform-origin: bottom center;
  animation: ac-ferdinand 5s ease-in-out infinite;
}
.scn-prospero-accuses-ferdinand .accusation-strike {
  position: absolute; bottom: 30%; left: 43%; width: 4px; height: 30px;
  background: linear-gradient(180deg, #ffd599 0%, transparent 80%);
  filter: blur(2px);
  animation: ac-strike 2s ease-in-out infinite alternate;
}
.scn-prospero-accuses-ferdinand .figure-miranda {
  position: absolute; bottom: 24%; left: 72%; width: 18px; height: 46px;
  background: linear-gradient(180deg, #4a3020 0%, #2a1a10 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ac-miranda 6s ease-in-out infinite;
}
@keyframes ac-sky { 0% { opacity: 0.9 } 50% { opacity: 0.6 } 100% { opacity: 0.9 } }
@keyframes ac-sun { 0% { transform: scale(1); box-shadow: 0 0 50px 25px rgba(255,213,153,0.4) } 50% { transform: scale(1.12); box-shadow: 0 0 90px 45px rgba(255,213,153,0.8) } 100% { transform: scale(1); box-shadow: 0 0 50px 25px rgba(255,213,153,0.4) } }
@keyframes ac-ground { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes ac-prospero { 0% { transform: translateX(0) rotate(-5deg) } 25% { transform: translateX(-2px) rotate(-7deg) } 50% { transform: translateX(0) rotate(-5deg) } 75% { transform: translateX(2px) rotate(-3deg) } 100% { transform: translateX(0) rotate(-5deg) } }
@keyframes ac-ferdinand { 0% { transform: translateY(0) rotate(5deg) } 25% { transform: translateY(2px) rotate(7deg) } 50% { transform: translateY(0) rotate(5deg) } 75% { transform: translateY(-1px) rotate(3deg) } 100% { transform: translateY(0) rotate(5deg) } }
@keyframes ac-strike { 0% { opacity: 0.1; transform: scaleY(0.5) } 50% { opacity: 0.7; transform: scaleY(1) } 100% { opacity: 0.1; transform: scaleY(0.5) } }
@keyframes ac-miranda { 0% { transform: translateX(0) rotate(0deg) } 25% { transform: translateX(-2px) rotate(-4deg) } 50% { transform: translateX(0) rotate(0deg) } 75% { transform: translateX(2px) rotate(4deg) } 100% { transform: translateX(0) rotate(0deg) } }

.scn-prospero-banishment {
  background: linear-gradient(180deg, #1a1020 0%, #2a1a2a 40%, #1a0e1a 100%),
    radial-gradient(ellipse at 60% 80%, #3a2020 0%, transparent 70%);
}
.scn-prospero-banishment .wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #2a1a2a 0%, #1a0a1a 100%);
  box-shadow: inset 0 -20px 40px rgba(0,0,0,0.6);
}
.scn-prospero-banishment .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #1a0a0a 0%, #0a0505 100%);
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.8);
}
.scn-prospero-banishment .barred-window {
  position: absolute; top: 15%; left: 10%; width: 30%; height: 25%;
  background: radial-gradient(circle at 50% 50%, #4a2a1a 0%, #1a1010 100%);
  border: 4px solid #0a0505;
  border-radius: 4px;
  box-shadow: inset 0 0 30px rgba(0,0,0,0.9);
}
.scn-prospero-banishment .shadow-bars {
  position: absolute; top: 15%; left: 10%; width: 30%; height: 25%;
  background: repeating-linear-gradient(90deg, #0a0505 0px, #0a0505 8px, transparent 8px, transparent 20px);
  opacity: 0.7;
}
.scn-prospero-banishment .figure-bound {
  position: absolute; bottom: 28%; left: 55%; width: 60px; height: 140px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform: translateX(-50%) rotate(5deg);
  box-shadow: 0 0 20px rgba(0,0,0,0.8);
  animation: prb-shake 1.5s ease-in-out infinite;
}
.scn-prospero-banishment .candle-flame {
  position: absolute; bottom: 48%; left: 30%; width: 12px; height: 30px;
  background: radial-gradient(ellipse at 50% 30%, #ffcc88 0%, #ff8844 40%, #d04a10 70%, transparent 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 20% 20%;
  box-shadow: 0 0 40px 10px rgba(255,136,68,0.6);
  animation: prb-flicker 1.5s ease-in-out infinite alternate;
}
.scn-prospero-banishment .candle-wax {
  position: absolute; bottom: 48%; left: 30%; width: 14px; height: 6px;
  background: #2a1a1a;
  border-radius: 2px 2px 4px 4px;
  transform: translateX(-1px);
}
.scn-prospero-banishment .chain-1 {
  position: absolute; bottom: 30%; left: 58%; width: 30px; height: 6px;
  background: repeating-linear-gradient(90deg, #3a3a3a 0px, #3a3a3a 4px, #1a1a1a 4px, #1a1a1a 8px);
  border-radius: 3px;
  transform: rotate(-20deg);
  animation: prb-chain 2s ease-in-out infinite;
}
.scn-prospero-banishment .chain-2 {
  position: absolute; bottom: 30%; left: 58%; width: 30px; height: 6px;
  background: repeating-linear-gradient(90deg, #3a3a3a 0px, #3a3a3a 4px, #1a1a1a 4px, #1a1a1a 8px);
  border-radius: 3px;
  transform: rotate(-40deg) translateY(10px);
  animation: prb-chain 2s ease-in-out infinite 0.5s;
}
@keyframes prb-shake {
  0% { transform: translateX(-50%) rotate(5deg) translateY(0); }
  25% { transform: translateX(-50%) rotate(7deg) translateY(-2px); }
  50% { transform: translateX(-50%) rotate(3deg) translateY(0); }
  75% { transform: translateX(-50%) rotate(6deg) translateY(-1px); }
  100% { transform: translateX(-50%) rotate(5deg) translateY(0); }
}
@keyframes prb-flicker {
  0% { transform: scaleY(1) scaleX(1); opacity: 0.9; }
  50% { transform: scaleY(1.15) scaleX(0.85); opacity: 1; }
  100% { transform: scaleY(0.9) scaleX(1.1); opacity: 0.8; }
}
@keyframes prb-chain {
  0% { transform: rotate(-20deg) translateX(0); }
  50% { transform: rotate(-25deg) translateX(3px); }
  100% { transform: rotate(-20deg) translateX(0); }
}

.scn-prospero-spared-by-love {
  background: linear-gradient(180deg, #2a2020 0%, #3a2a1a 50%, #1a1510 100%),
    radial-gradient(ellipse at 50% 70%, #4a3a2a 0%, transparent 80%);
}
.scn-prospero-spared-by-love .hearth-glow {
  position: absolute; bottom: 0; left: 20%; width: 60%; height: 50%;
  background: radial-gradient(ellipse at 50% 100%, #d08040 0%, #8a4010 40%, transparent 70%);
  opacity: 0.5;
  animation: psl-glow-pulse 4s ease-in-out infinite alternate;
}
.scn-prospero-spared-by-love .hearth-stone {
  position: absolute; bottom: 0; left: 25%; width: 50%; height: 30%;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a100a 100%);
  border-radius: 20% 20% 0 0;
  box-shadow: inset 0 -10px 20px rgba(0,0,0,0.5);
}
.scn-prospero-spared-by-love .seated-figure-l {
  position: absolute; bottom: 20%; left: 30%; width: 50px; height: 100px;
  background: linear-gradient(180deg, #2a1a1a 0%, #1a0e0e 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform: rotate(5deg) scale(0.9);
  box-shadow: 0 0 30px rgba(0,0,0,0.6);
  animation: psl-breathe 6s ease-in-out infinite;
}
.scn-prospero-spared-by-love .seated-figure-r {
  position: absolute; bottom: 20%; left: 55%; width: 45px; height: 90px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0e0e1a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform: rotate(-3deg) scale(0.85);
  box-shadow: 0 0 30px rgba(0,0,0,0.6);
  animation: psl-breathe 6s ease-in-out infinite 0.5s;
}
.scn-prospero-spared-by-love .book-shelf {
  position: absolute; top: 15%; left: 5%; width: 20%; height: 50%;
  background: repeating-linear-gradient(180deg, #2a1a0a 0px, #2a1a0a 8px, #1a0e05 8px, #1a0e05 16px);
  border-radius: 2px;
  box-shadow: inset 0 0 10px rgba(0,0,0,0.8);
}
.scn-prospero-spared-by-love .candle-warm {
  position: absolute; bottom: 45%; left: 10%; width: 10px; height: 25px;
  background: linear-gradient(180deg, #ffdd99 0%, #d08a40 100%);
  border-radius: 40% 40% 20% 20%;
  box-shadow: 0 0 30px 8px #d08a40;
  animation: psl-candle 3s ease-in-out infinite alternate;
}
.scn-prospero-spared-by-love .warm-light {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at 45% 70%, rgba(200,150,80,0.15) 0%, transparent 60%);
  pointer-events: none;
}
.scn-prospero-spared-by-love .shadow-soft {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at 50% 80%, rgba(0,0,0,0.5) 0%, transparent 50%);
  pointer-events: none;
}
@keyframes psl-glow-pulse {
  0% { opacity: 0.4; transform: scale(0.95); }
  50% { opacity: 0.6; transform: scale(1); }
  100% { opacity: 0.4; transform: scale(0.95); }
}
@keyframes psl-breathe {
  0% { transform: translateY(0) rotate(5deg); }
  50% { transform: translateY(-3px) rotate(4deg); }
  100% { transform: translateY(0) rotate(5deg); }
}
@keyframes psl-candle {
  0% { transform: scaleY(1) scaleX(1); opacity: 0.85; }
  50% { transform: scaleY(1.1) scaleX(0.9); opacity: 1; }
  100% { transform: scaleY(1.05) scaleX(0.95); opacity: 0.9; }
}

.scn-prospero-miranda-cherubim {
  background: linear-gradient(180deg, #1a1a2a 0%, #2a2a3a 40%, #1a1a2a 100%),
    radial-gradient(ellipse at 50% 40%, #3a304a 0%, transparent 70%);
}
.scn-prospero-miranda-cherubim .back-wall {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(180deg, #1a1a2a 0%, #0e0e1a 100%);
  box-shadow: inset 0 -20px 40px rgba(0,0,0,0.5);
}
.scn-prospero-miranda-cherubim .floor-planks {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: repeating-linear-gradient(180deg, #1a1010 0px, #1a1010 4px, #0a0505 4px, #0a0505 8px);
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.7);
}
.scn-prospero-miranda-cherubim .prospero-seated {
  position: absolute; bottom: 20%; left: 30%; width: 55px; height: 110px;
  background: linear-gradient(180deg, #2a1a1a 0%, #1a0e0e 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform: rotate(5deg);
  box-shadow: 0 0 20px rgba(0,0,0,0.5);
  animation: pmc-idle 5s ease-in-out infinite;
}
.scn-prospero-miranda-cherubim .miranda-seated {
  position: absolute; bottom: 20%; left: 50%; width: 45px; height: 90px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0e0e1a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform: rotate(-3deg) scale(0.9);
  box-shadow: 0 0 20px rgba(0,0,0,0.5);
  animation: pmc-idle 5s ease-in-out infinite 0.5s;
}
.scn-prospero-miranda-cherubim .cherub-glow {
  position: absolute; top: 15%; left: 45%; width: 80px; height: 80px;
  background: radial-gradient(circle, #ffddaa 0%, #ddaa66 30%, #aa7733 60%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 80px 30px rgba(255,221,170,0.6);
  animation: pmc-glow 3s ease-in-out infinite alternate;
}
.scn-prospero-miranda-cherubim .cherub-shape {
  position: absolute; top: 22%; left: 48%; width: 30px; height: 30px;
  background: radial-gradient(circle at 50% 30%, #ffeecc 0%, #ddaa77 70%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 0 0 20px 5px rgba(255,238,204,0.5);
  animation: pmc-float 5s ease-in-out infinite;
}
.scn-prospero-miranda-cherubim .light-rays {
  position: absolute; top: 12%; left: 45%; width: 100px; height: 200px;
  background: linear-gradient(180deg, rgba(255,221,170,0.2) 0%, transparent 100%);
  transform-origin: top center;
  opacity: 0.3;
  pointer-events: none;
}
.scn-prospero-miranda-cherubim .ray-1 {
  transform: rotate(-15deg) scaleX(1.5);
  animation: pmc-ray-sway 8s ease-in-out infinite alternate;
}
.scn-prospero-miranda-cherubim .ray-2 {
  transform: rotate(10deg) scaleX(1.5);
  animation: pmc-ray-sway 8s ease-in-out infinite alternate-reverse;
}
.scn-prospero-miranda-cherubim .shadow-pool {
  position: absolute; bottom: 0; left: 30%; width: 40%; height: 40%;
  background: radial-gradient(ellipse at 50% 100%, rgba(0,0,0,0.6) 0%, transparent 70%);
  pointer-events: none;
}
@keyframes pmc-idle {
  0% { transform: translateY(0) rotate(5deg); }
  50% { transform: translateY(-2px) rotate(4deg); }
  100% { transform: translateY(0) rotate(5deg); }
}
@keyframes pmc-glow {
  0% { opacity: 0.7; transform: scale(0.95); }
  50% { opacity: 1; transform: scale(1.05); }
  100% { opacity: 0.8; transform: scale(1); }
}
@keyframes pmc-float {
  0% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-8px) scale(1.05); }
  100% { transform: translateY(0) scale(1); }
}
@keyframes pmc-ray-sway {
  0% { transform: rotate(-15deg) scaleX(1.5); opacity: 0.2; }
  50% { transform: rotate(-10deg) scaleX(1.5); opacity: 0.4; }
  100% { transform: rotate(-20deg) scaleX(1.5); opacity: 0.2; }
}

.scn-prospero-gonzalo-gift {
  background: linear-gradient(180deg, #2a1a10 0%, #3a2a1a 40%, #1a100a 100%),
    radial-gradient(ellipse at 40% 60%, #4a3a2a 0%, transparent 80%);
}
.scn-prospero-gonzalo-gift .floor-dark {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #1a100a 0%, #0a0505 100%);
  box-shadow: inset 0 20px 40px rgba(0,0,0,0.8);
}
.scn-prospero-gonzalo-gift .wall-left {
  position: absolute; top: 0; left: 0; width: 20%; height: 100%;
  background: linear-gradient(90deg, #1a100a 0%, #2a1a10 100%);
  box-shadow: inset -10px 0 20px rgba(0,0,0,0.5);
}
.scn-prospero-gonzalo-gift .chest-open {
  position: absolute; bottom: 25%; left: 30%; width: 80px; height: 50px;
  background: linear-gradient(180deg, #4a2a1a 0%, #2a1a0a 100%);
  border-radius: 4px;
  box-shadow: 0 4px 8px rgba(0,0,0,0.6);
  transform: rotate(2deg);
}
.scn-prospero-gonzalo-gift .chest-open::before {
  content: '';
  position: absolute; top: -20px; left: 5%; width: 90%; height: 20px;
  background: linear-gradient(180deg, #5a3a2a 0%, #3a2a1a 100%);
  border-radius: 4px 4px 0 0;
  box-shadow: 0 -4px 8px rgba(0,0,0,0.4);
}
.scn-prospero-gonzalo-gift .linen-stack {
  position: absolute; bottom: 32%; left: 35%; width: 40px; height: 20px;
  background: linear-gradient(180deg, #c8a888 0%, #a08060 100%);
  border-radius: 2px;
  box-shadow: 0 2px 4px rgba(0,0,0,0.3);
  animation: pgg-soft 6s ease-in-out infinite;
}
.scn-prospero-gonzalo-gift .food-basket {
  position: absolute; bottom: 28%; left: 45%; width: 30px; height: 24px;
  background: radial-gradient(ellipse at 50% 60%, #8a6a3a 0%, #5a3a1a 100%);
  border-radius: 40% 40% 20% 20%;
  box-shadow: 0 2px 6px rgba(0,0,0,0.5);
  animation: pgg-soft 6s ease-in-out infinite 1s;
}
.scn-prospero-gonzalo-gift .garment-hanging {
  position: absolute; top: 15%; right: 15%; width: 50px; height: 80px;
  background: linear-gradient(180deg, #6a4a3a 0%, #3a2a1a 100%);
  border-radius: 10% 10% 40% 40% / 10% 10% 30% 30%;
  transform: rotate(5deg);
  box-shadow: 0 0 10px rgba(0,0,0,0.4);
  animation: pgg-sway 5s ease-in-out infinite;
}
.scn-prospero-gonzalo-gift .lamp-glow {
  position: absolute; top: 10%; left: 40%; width: 60px; height: 60px;
  background: radial-gradient(circle, #ffd080 0%, #d09040 30%, #8a5020 60%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 60px 20px rgba(208,144,64,0.4);
  animation: pgg-lamp 4s ease-in-out infinite alternate;
}
.scn-prospero-gonzalo-gift .figure-grateful {
  position: absolute; bottom: 20%; left: 20%; width: 45px; height: 100px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0e0e1a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform: rotate(-5deg) scale(0.9);
  box-shadow: 0 0 20px rgba(0,0,0,0.5);
  animation: pgg-bow 4s ease-in-out infinite;
}
@keyframes pgg-soft {
  0% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
  100% { transform: translateY(0); }
}
@keyframes pgg-sway {
  0% { transform: rotate(5deg) translateX(0); }
  50% { transform: rotate(8deg) translateX(3px); }
  100% { transform: rotate(5deg) translateX(0); }
}
@keyframes pgg-lamp {
  0% { opacity: 0.8; transform: scale(0.95); }
  50% { opacity: 1; transform: scale(1.05); }
  100% { opacity: 0.9; transform: scale(1); }
}
@keyframes pgg-bow {
  0% { transform: rotate(-5deg) translateY(0); }
  25% { transform: rotate(-10deg) translateY(-3px); }
  50% { transform: rotate(-3deg) translateY(0); }
  75% { transform: rotate(-8deg) translateY(-2px); }
  100% { transform: rotate(-5deg) translateY(0); }
}

/* caliban-obedience */
.scn-caliban-obedience {
  background: linear-gradient(180deg, #1a1430 0%, #2a1a3a 40%, #3a2a2a 100%),
              radial-gradient(ellipse at 30% 80%, #3a2a4a 0%, transparent 70%);
}
.scn-caliban-obedience .bg-dim { position:absolute; inset:0; background:linear-gradient(180deg, transparent 0%, #0f0a1a 100%); animation:co-fade 12s ease-in-out infinite alternate; }
.scn-caliban-obedience .floor { position:absolute; bottom:0; left:0; right:0; height:30%; background:linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%); border-radius:0 0 30% 30%; box-shadow:inset 0 6px 20px #00000055; }
.scn-caliban-obedience .arch  { position:absolute; bottom:30%; left:50%; transform:translateX(-50%); width:120px; height:160px; background:linear-gradient(135deg, #3a2a2a 0%, #2a1a1a 100%); border-radius:50% 50% 0 0 / 60% 60% 0 0; border:2px solid #4a3a3a; box-shadow:0 0 30px #00000088; }
.scn-caliban-obedience .figure-caliban { position:absolute; bottom:28%; left:38%; width:30px; height:70px; background:linear-gradient(180deg, #2a1a1a 0%, #0f0a0a 100%); border-radius:45% 55% 40% 40% / 60% 60% 40% 40%; transform-origin:bottom center; animation:co-crouch 4s ease-in-out infinite; }
.scn-caliban-obedience .glow-art { position:absolute; bottom:38%; left:55%; width:14px; height:14px; background:radial-gradient(circle, #b08040 0%, #805020 70%); border-radius:50%; box-shadow:0 0 20px 6px #b08040, 0 0 40px 12px #80502044; animation:co-pulse 3s ease-in-out infinite alternate; }
.scn-caliban-obedience .shadow-1 { position:absolute; bottom:30%; left:30%; width:80px; height:12px; background:radial-gradient(ellipse, #00000066 0%, transparent 70%); filter:blur(4px); animation:co-slide1 6s linear infinite; }
.scn-caliban-obedience .shadow-2 { position:absolute; bottom:32%; left:10%; width:60px; height:10px; background:radial-gradient(ellipse, #00000044 0%, transparent 70%); filter:blur(3px); animation:co-slide2 8s linear infinite reverse; }
@keyframes co-fade { 0%{opacity:.7} 50%{opacity:1} 100%{opacity:.8} }
@keyframes co-crouch { 0%{transform:translateY(0) rotate(-2deg)} 25%{transform:translateY(-2px) rotate(0)} 50%{transform:translateY(1px) rotate(2deg)} 75%{transform:translateY(-1px) rotate(0)} 100%{transform:translateY(0) rotate(-2deg)} }
@keyframes co-pulse { 0%{transform:scale(.8);opacity:.6} 50%{transform:scale(1.2);opacity:1} 100%{transform:scale(.9);opacity:.8} }
@keyframes co-slide1 { 0%{transform:translateX(0)} 50%{transform:translateX(15px)} 100%{transform:translateX(0)} }
@keyframes co-slide2 { 0%{transform:translateX(0)} 50%{transform:translateX(-10px)} 100%{transform:translateX(0)} }

/* ariel-song-dogs */
.scn-ariel-song-dogs {
  background: linear-gradient(180deg, #87ceeb 0%, #b0d4f1 30%, #f5deb3 100%),
              radial-gradient(ellipse at 80% 20%, #ffffff88 0%, transparent 60%);
}
.scn-ariel-song-dogs .sky { position:absolute; inset:0 0 50% 0; background:linear-gradient(135deg, #a0d8ef 0%, #d4e8f0 100%); animation:asd-sky 20s ease-in-out infinite alternate; }
.scn-ariel-song-dogs .sun { position:absolute; top:12%; right:20%; width:60px; height:60px; background:radial-gradient(circle, #fff0b0 0%, #f0c060 60%); border-radius:50%; box-shadow:0 0 40px 10px #f0c06088; animation:asd-sun 30s linear infinite; }
.scn-ariel-song-dogs .hills-back { position:absolute; bottom:40%; left:0; right:0; height:20%; background:linear-gradient(180deg, #7a9a6a 0%, #5a7a4a 100%); border-radius:30% 70% 0 0 / 60% 80% 0 0; box-shadow:inset 0 4px 15px #00000033; animation:asd-hills 25s ease-in-out infinite; }
.scn-ariel-song-dogs .hill-fore { position:absolute; bottom:30%; left:10%; width:300px; height:15%; background:linear-gradient(180deg, #8a9a7a 0%, #5a6a4a 100%); border-radius:40% 60% 0 0 / 80% 70% 0 0; animation:asd-hillf 18s ease-in-out infinite alternate; }
.scn-ariel-song-dogs .tree { position:absolute; bottom:30%; left:20%; width:40px; height:120px; background:linear-gradient(180deg, #6a4a2a 0%, #3a2a1a 100%); border-radius:10% 10% 20% 20%; box-shadow:inset 0 5px 10px #00000044; animation:asd-sway 8s ease-in-out infinite; }
.scn-ariel-song-dogs .figure-ariel { position:absolute; bottom:34%; right:30%; width:20px; height:45px; background:linear-gradient(180deg, #c0a070 0%, #906040 100%); border-radius:45% 55% 40% 40% / 60% 60% 40% 40%; transform-origin:bottom center; animation:asd-sit 6s ease-in-out infinite; }
.scn-ariel-song-dogs .rooster { position:absolute; bottom:42%; left:45%; width:18px; height:28px; background:linear-gradient(180deg, #c8553d 0%, #a0461a 100%); border-radius:50% 40% 40% 40% / 60% 50% 50% 40%; transform:rotate(-10deg); animation:asd-peck 4s ease-in-out infinite; }
@keyframes asd-sky { 0%{opacity:.8;transform:translateY(0)} 50%{opacity:1;transform:translateY(-3px)} 100%{opacity:.85;transform:translateY(0)} }
@keyframes asd-sun { 0%{transform:translateX(0)} 50%{transform:translateX(-5px)} 100%{transform:translateX(0)} }
@keyframes asd-hills { 0%{transform:translateY(0)} 50%{transform:translateY(-2px)} 100%{transform:translateY(0)} }
@keyframes asd-hillf { 0%{transform:translateY(0)} 50%{transform:translateY(-1px) scaleX(1.01)} 100%{transform:translateY(0)} }
@keyframes asd-sway { 0%{transform:rotate(0)} 25%{transform:rotate(1deg)} 50%{transform:rotate(0)} 75%{transform:rotate(-1deg)} 100%{transform:rotate(0)} }
@keyframes asd-sit { 0%{transform:translateY(0) rotate(-1deg)} 33%{transform:translateY(-2px) rotate(0)} 66%{transform:translateY(0) rotate(1deg)} 100%{transform:translateY(0) rotate(-1deg)} }
@keyframes asd-peck { 0%{transform:rotate(-10deg) translateY(0)} 25%{transform:rotate(-15deg) translateY(-2px)} 50%{transform:rotate(-10deg) translateY(1px)} 75%{transform:rotate(-5deg) translateY(-1px)} 100%{transform:rotate(-10deg) translateY(0)} }

/* ariel-full-fathom-five */
.scn-ariel-full-fathom-five {
  background: linear-gradient(180deg, #0a2a4a 0%, #1a4a6a 40%, #2a6a8a 100%),
              radial-gradient(ellipse at 50% 10%, #4a9aba88 0%, transparent 70%);
}
.scn-ariel-full-fathom-five .deep-sea { position:absolute; inset:0; background:linear-gradient(180deg, transparent 0%, #0a1a2a 80%); animation:aff-deep 15s ease-in-out infinite alternate; }
.scn-ariel-full-fathom-five .sun-rays { position:absolute; top:0; left:30%; width:60px; height:100%; background:linear-gradient(180deg, #ffffaa88 0%, transparent 80%); transform:skewX(-10deg); animation:aff-rays 12s linear infinite; }
.scn-ariel-full-fathom-five .coral-1 { position:absolute; bottom:25%; left:15%; width:30px; height:45px; background:linear-gradient(135deg, #b0704a 0%, #805030 100%); border-radius:30% 30% 20% 20%; transform:rotate(5deg); box-shadow:inset 0 3px 8px #00000055; animation:aff-coral 9s ease-in-out infinite; }
.scn-ariel-full-fathom-five .coral-2 { position:absolute; bottom:30%; right:20%; width:25px; height:35px; background:linear-gradient(135deg, #a06040 0%, #704020 100%); border-radius:40% 30% 30% 20%; transform:rotate(-8deg); animation:aff-coral2 11s ease-in-out infinite reverse; }
.scn-ariel-full-fathom-five .pearl-glow { position:absolute; bottom:40%; left:45%; width:10px; height:10px; background:radial-gradient(circle, #f0e0c0 0%, #c09870 60%); border-radius:50%; box-shadow:0 0 16px 4px #f0e0c088; animation:aff-pearl 4s ease-in-out infinite alternate; }
.scn-ariel-full-fathom-five .figure-ariel-sea { position:absolute; bottom:35%; right:35%; width:18px; height:40px; background:linear-gradient(180deg, #80a8c0 0%, #406070 100%); border-radius:45% 55% 40% 40% / 60% 60% 40% 40%; transform-origin:bottom center; animation:aff-float 7s ease-in-out infinite; }
.scn-ariel-full-fathom-five .seabed { position:absolute; bottom:0; left:0; right:0; height:20%; background:linear-gradient(180deg, #1a2a1a 0%, #0a1a0a 100%); border-radius:40% 60% 0 0 / 30% 40% 0 0; box-shadow:inset 0 5px 20px #00000066; }
@keyframes aff-deep { 0%{opacity:.8} 50%{opacity:1} 100%{opacity:.85} }
@keyframes aff-rays { 0%{transform:skewX(-10deg) translateY(0)} 50%{transform:skewX(-12deg) translateY(-2px)} 100%{transform:skewX(-10deg) translateY(0)} }
@keyframes aff-coral { 0%{transform:rotate(5deg) translateY(0)} 50%{transform:rotate(7deg) translateY(-2px)} 100%{transform:rotate(5deg) translateY(0)} }
@keyframes aff-coral2 { 0%{transform:rotate(-8deg) translateY(0)} 50%{transform:rotate(-10deg) translateY(2px)} 100%{transform:rotate(-8deg) translateY(0)} }
@keyframes aff-pearl { 0%{transform:scale(.9);opacity:.7} 50%{transform:scale(1.2);opacity:1} 100%{transform:scale(1);opacity:.8} }
@keyframes aff-float { 0%{transform:translateY(0) rotate(-2deg)} 33%{transform:translateY(-3px) rotate(0)} 66%{transform:translateY(1px) rotate(2deg)} 100%{transform:translateY(0) rotate(-2deg)} }

/* ferdinand-sees-miranda */
.scn-ferdinand-sees-miranda {
  background: linear-gradient(180deg, #f0e8d0 0%, #e0d0b0 40%, #c0b090 100%),
              radial-gradient(ellipse at 60% 30%, #fff8e088 0%, transparent 70%);
}
.scn-ferdinand-sees-miranda .bg-clearing { position:absolute; inset:0; background:linear-gradient(180deg, transparent 0%, #b0a08088 100%); animation:fsm-glow 10s ease-in-out infinite alternate; }
.scn-ferdinand-sees-miranda .foliage-l { position:absolute; bottom:30%; left:0; width:40%; height:70%; background:linear-gradient(135deg, #3a5a2a 0%, #2a4a1a 100%); border-radius:0 60% 60% 0 / 0 80% 40% 0; box-shadow:inset 0 8px 25px #00000044; animation:fsm-sway-l 12s ease-in-out infinite; }
.scn-ferdinand-sees-miranda .foliage-r { position:absolute; bottom:30%; right:0; width:40%; height:70%; background:linear-gradient(225deg, #3a5a2a 0%, #2a4a1a 100%); border-radius:60% 0 0 60% / 80% 0 0 40%; box-shadow:inset 0 8px 25px #00000044; animation:fsm-sway-r 14s ease-in-out infinite reverse; }
.scn-ferdinand-sees-miranda .ferdinand { position:absolute; bottom:28%; left:40%; width:20px; height:50px; background:linear-gradient(180deg, #c0a070 0%, #907050 100%); border-radius:45% 55% 40% 40% / 60% 60% 40% 40%; transform-origin:bottom center; animation:fsm-turn 6s ease-in-out infinite; }
.scn-ferdinand-sees-miranda .miranda { position:absolute; bottom:30%; right:35%; width:20px; height:48px; background:linear-gradient(180deg, #d0b090 0%, #a08060 100%); border-radius:55% 45% 40% 40% / 60% 60% 40% 40%; transform-origin:bottom center; animation:fsm-turn2 6s ease-in-out infinite 1s; }
.scn-ferdinand-sees-miranda .sunburst { position:absolute; top:20%; left:45%; width:100px; height:100px; background:radial-gradient(circle, #fff8d088 0%, transparent 70%); border-radius:50%; animation:fsm-sunburst 20s linear infinite; }
.scn-ferdinand-sees-miranda .sparkles { position:absolute; top:25%; left:40%; width:8px; height:8px; background:radial-gradient(circle, #fff 0%, #fff8d0aa 60%); border-radius:50%; box-shadow:0 0 10px 2px #fff8d0; animation:fsm-sparkle 3s ease-in-out infinite alternate; }
@keyframes fsm-glow { 0%{opacity:.8} 50%{opacity:1} 100%{opacity:.9} }
@keyframes fsm-sway-l { 0%{transform:rotate(0)} 25%{transform:rotate(2deg)} 50%{transform:rotate(0)} 75%{transform:rotate(-2deg)} 100%{transform:rotate(0)} }
@keyframes fsm-sway-r { 0%{transform:rotate(0)} 25%{transform:rotate(-2deg)} 50%{transform:rotate(0)} 75%{transform:rotate(2deg)} 100%{transform:rotate(0)} }
@keyframes fsm-turn { 0%{transform:translateY(0) rotate(-3deg)} 33%{transform:translateY(-2px) rotate(0)} 66%{transform:translateY(0) rotate(3deg)} 100%{transform:translateY(0) rotate(-3deg)} }
@keyframes fsm-turn2 { 0%{transform:translateY(0) rotate(2deg)} 33%{transform:translateY(-2px) rotate(0)} 66%{transform:translateY(0) rotate(-2deg)} 100%{transform:translateY(0) rotate(2deg)} }
@keyframes fsm-sunburst { 0%{transform:scale(.8);opacity:.6} 50%{transform:scale(1.1);opacity:.8} 100%{transform:scale(.9);opacity:.7} }
@keyframes fsm-sparkle { 0%{transform:scale(.5);opacity:.3} 50%{transform:scale(1.5);opacity:1} 100%{transform:scale(.8);opacity:.6} }

/* Scene: ariel-ferdinand-description (stormy shipwreck, tense, overcast) */
.scn-ariel-ferdinand-description {
  background:
    linear-gradient(180deg, #2a3a4a 0%, #3a4a5a 30%, #4a5a6a 60%, #5a6a7a 100%),
    radial-gradient(ellipse at 50% 40%, #5a7a8a 0%, #2a3a4a 70%);
}
.scn-ariel-ferdinand-description .sky { position:absolute; inset:0; background: linear-gradient(180deg, rgba(200,210,220,0.3) 0%, transparent 50%, rgba(0,0,0,0.4) 100%); animation: afd-sky 15s ease-in-out infinite alternate; }
.scn-ariel-ferdinand-description .storm-clouds { position:absolute; top:0; left:0; right:0; height:45%; background: radial-gradient(ellipse at 30% 20%, rgba(80,90,100,0.8) 0%, transparent 50%), radial-gradient(ellipse at 70% 30%, rgba(60,70,80,0.6) 0%, transparent 50%); filter: blur(8px); animation: afd-clouds 20s linear infinite; }
.scn-ariel-ferdinand-description .waves { position:absolute; bottom:0; left:0; right:0; height:55%; background: linear-gradient(180deg, #3a5a6a 0%, #2a4a5a 40%, #1a3a4a 100%); transform-origin: bottom; animation: afd-waves 6s ease-in-out infinite; }
.scn-ariel-ferdinand-description .shipwreck { position:absolute; bottom:35%; left:25%; width:120px; height:60px; background: linear-gradient(90deg, #5a4a3a 0%, #4a3a2a 50%, #3a2a1a 100%); border-radius: 10% 10% 40% 40% / 20% 20% 60% 60%; transform: rotate(-15deg); box-shadow: inset 0 -10px 20px rgba(0,0,0,0.6); animation: afd-ship 4s ease-in-out infinite; }
.scn-ariel-ferdinand-description .lightning { position:absolute; top:8%; left:60%; width:4px; height:80px; background: linear-gradient(180deg, #ffffff 0%, #b0c0d0 50%, transparent 100%); transform: rotate(20deg); filter: blur(1px); animation: afd-lightning 3s steps(2) infinite; }
.scn-ariel-ferdinand-description .spirit { position:absolute; bottom:50%; left:40%; width:30px; height:50px; background: radial-gradient(ellipse at 50% 40%, rgba(200,220,240,0.6) 0%, rgba(150,180,210,0.3) 50%, transparent 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: afd-spirit 8s ease-in-out infinite; }
.scn-ariel-ferdinand-description .foam { position:absolute; bottom:45%; left:10%; right:20%; height:10px; background: radial-gradient(ellipse at 10% 50%, rgba(255,255,255,0.8) 0%, transparent 50%), radial-gradient(ellipse at 70% 50%, rgba(255,255,255,0.5) 0%, transparent 50%); filter: blur(3px); animation: afd-foam 2s ease-in-out infinite alternate; }
@keyframes afd-sky { 0% { opacity:0.6; transform:scaleY(1) } 50% { opacity:0.9; transform:scaleY(1.05) } 100% { opacity:0.7; transform:scaleY(0.95) } }
@keyframes afd-clouds { 0% { transform:translateX(0) } 50% { transform:translateX(-30px) scaleX(1.1) } 100% { transform:translateX(30px) scaleX(0.9) } }
@keyframes afd-waves { 0% { transform:translateY(0) skewX(0deg) } 50% { transform:translateY(-8px) skewX(5deg) } 100% { transform:translateY(4px) skewX(-3deg) } }
@keyframes afd-ship { 0% { transform:rotate(-15deg) translateX(0) } 50% { transform:rotate(-10deg) translateX(8px) } 100% { transform:rotate(-20deg) translateX(-5px) } }
@keyframes afd-lightning { 0% { opacity:0.2; height:80px } 25% { opacity:1; height:120px } 50% { opacity:0.3; height:60px } 75% { opacity:0.8; height:100px } 100% { opacity:0.1; height:70px } }
@keyframes afd-spirit { 0% { transform:translate(0,0) scale(1) rotate(0deg) } 50% { transform:translate(15px,-20px) scale(1.1) rotate(10deg) } 100% { transform:translate(-10px,10px) scale(0.9) rotate(-5deg) } }
@keyframes afd-foam { 0% { opacity:0.4; transform:scaleX(1) } 50% { opacity:0.8; transform:scaleX(1.3) } 100% { opacity:0.5; transform:scaleX(0.8) } }

/* Scene: ariel-safety-and-dispersal (calm island dispersal, overcast) */
.scn-ariel-safety-and-dispersal {
  background:
    linear-gradient(180deg, #7a8a7a 0%, #8a9a8a 30%, #6a7a6a 70%, #4a5a4a 100%),
    radial-gradient(ellipse at 50% 70%, #8a9a8a 0%, #5a6a5a 80%);
}
.scn-ariel-safety-and-dispersal .sea-sky { position:absolute; inset:0; background: linear-gradient(180deg, rgba(180,190,180,0.4) 0%, transparent 60%), radial-gradient(ellipse at 50% 0%, rgba(200,210,200,0.3) 0%, transparent 70%); animation: asd-sea-sky 25s linear infinite alternate; }
.scn-ariel-safety-and-dispersal .cliff { position:absolute; bottom:30%; left:5%; right:65%; height:40%; background: linear-gradient(180deg, #5a6a5a 0%, #3a4a3a 100%); border-radius: 20% 60% 0 0 / 30% 80% 0 0; box-shadow: inset 0 20px 30px rgba(0,0,0,0.3); }
.scn-ariel-safety-and-dispersal .island-trees { position:absolute; bottom:45%; left:15%; right:40%; height:15%; background: linear-gradient(180deg, #4a6a3a 0%, #3a5a2a 100%); border-radius: 50% 50% 0 0 / 100% 100% 0 0; filter: blur(2px); animation: asd-trees 12s ease-in-out infinite; }
.scn-ariel-safety-and-disperal .dispersed-figures { position:absolute; bottom:25%; left:20%; width:20px; height:30px; background: radial-gradient(ellipse at 50% 30%, #2a3a2a 0%, #1a2a1a 100%); border-radius: 50% 50% 30% 30%; animation: asd-figures 20s linear infinite; }
.scn-ariel-safety-and-disperal .ariel-hover { position:absolute; bottom:55%; left:50%; width:25px; height:40px; background: radial-gradient(ellipse at 50% 40%, rgba(200,220,200,0.7) 0%, rgba(150,180,150,0.3) 100%); border-radius: 50% 50% 40% 40%; animation: asd-ariel 8s ease-in-out infinite; }
.scn-ariel-safety-and-disperal .clouds-slow { position:absolute; top:10%; left:-10%; width:120%; height:20%; background: radial-gradient(ellipse at 20% 50%, rgba(255,255,255,0.5) 0%, transparent 50%), radial-gradient(ellipse at 80% 50%, rgba(200,210,200,0.3) 0%, transparent 50%); filter: blur(10px); animation: asd-clouds 50s linear infinite; }
@keyframes asd-sea-sky { 0% { opacity:0.7; background-position: 0% 0% } 50% { opacity:0.9; background-position: 10% 5% } 100% { opacity:0.8; background-position: -5% -2% } }
@keyframes asd-trees { 0% { transform:scaleY(1) translateY(0) } 50% { transform:scaleY(1.05) translateY(-5px) } 100% { transform:scaleY(0.95) translateY(3px) } }
@keyframes asd-figures { 0% { transform:translateX(0) scale(1); opacity:1 } 25% { transform:translateX(30px) scale(0.9); opacity:0.7 } 50% { transform:translateX(60px) scale(1.1); opacity:0.5 } 75% { transform:translateX(90px) scale(0.8); opacity:0.8 } 100% { transform:translateX(120px) scale(1); opacity:0 } }
@keyframes asd-ariel { 0% { transform:translateY(0) rotate(0deg) scale(1) } 50% { transform:translateY(-15px) rotate(5deg) scale(1.05) } 100% { transform:translateY(5px) rotate(-5deg) scale(0.95) } }
@keyframes asd-clouds { 0% { transform:translateX(0) } 50% { transform:translateX(30px) } 100% { transform:translateX(-20px) } }

/* Scene: ariel-ship-hidden (ship hidden, calm, overcast) */
.scn-ariel-ship-hidden {
  background:
    linear-gradient(180deg, #5a6a7a 0%, #6a7a8a 30%, #7a8a9a 60%, #6a7a6a 100%),
    radial-gradient(ellipse at 50% 60%, #8a9a8a 0%, #4a5a5a 80%);
}
.scn-ariel-ship-hidden .water-bg { position:absolute; inset:0; background: linear-gradient(180deg, rgba(80,100,120,0.3) 0%, transparent 50%, rgba(40,60,40,0.3) 100%); animation: ash-water 10s ease-in-out infinite alternate; }
.scn-ariel-ship-hidden .rocks { position:absolute; bottom:20%; left:10%; right:50%; height:50%; background: linear-gradient(180deg, #4a5a4a 0%, #2a3a2a 100%); border-radius: 30% 0 0 0 / 50% 0 0 0; box-shadow: inset 10px 0 30px rgba(0,0,0,0.4); }
.scn-ariel-ship-hidden .hidden-ship { position:absolute; bottom:30%; left:30%; width:100px; height:40px; background: linear-gradient(90deg, #5a4a3a 0%, #4a3a2a 50%, #3a2a1a 100%); border-radius: 0 40% 40% 0 / 0 80% 80% 0; transform: translateX(-20px); box-shadow: inset 0 -5px 15px rgba(0,0,0,0.5); animation: ash-ship 6s ease-in-out infinite; }
.scn-ariel-ship-hidden .ship-sail { position:absolute; bottom:50%; left:45%; width:30px; height:35px; background: linear-gradient(180deg, #c0b0a0 0%, #a09080 100%); border-radius: 20% 20% 10% 10% / 40% 40% 20% 20%; transform: rotate(15deg); animation: ash-sail 8s ease-in-out infinite; }
.scn-ariel-ship-hidden .vines { position:absolute; bottom:40%; left:15%; right:35%; height:20%; background: repeating-linear-gradient(0deg, #3a5a2a 0px, #4a6a3a 10px, transparent 10px, transparent 20px); filter: blur(2px); animation: ash-vines 4s ease-in-out infinite alternate; }
.scn-ariel-ship-hidden .ariel-rock { position:absolute; bottom:35%; left:55%; width:20px; height:35px; background: radial-gradient(ellipse at 50% 40%, rgba(200,220,200,0.6) 0%, rgba(150,180,150,0.3) 100%); border-radius: 50% 50% 40% 40%; animation: ash-ariel 12s ease-in-out infinite; }
@keyframes ash-water { 0% { opacity:0.6; transform:scaleY(1) } 50% { opacity:0.8; transform:scaleY(1.02) } 100% { opacity:0.7; transform:scaleY(0.98) } }
@keyframes ash-ship { 0% { transform:translateX(-20px) rotate(-2deg) } 50% { transform:translateX(-15px) rotate(2deg) } 100% { transform:translateX(-25px) rotate(-1deg) } }
@keyframes ash-sail { 0% { transform:rotate(15deg) scaleX(1) } 50% { transform:rotate(10deg) scaleX(1.1) } 100% { transform:rotate(20deg) scaleX(0.9) } }
@keyframes ash-vines { 0% { transform:translateY(0) skewX(0deg) } 50% { transform:translateY(-3px) skewX(5deg) } 100% { transform:translateY(2px) skewX(-3deg) } }
@keyframes ash-ariel { 0% { transform:translateY(0) scale(1) } 50% { transform:translateY(-10px) scale(1.05) } 100% { transform:translateY(5px) scale(0.95) } }

/* Scene: prospero-ariel-more-work (dim interior, tense) */
.scn-prospero-ariel-more-work {
  background:
    linear-gradient(180deg, #1a1a1a 0%, #2a2a2a 30%, #3a3a3a 60%, #2a2a1a 100%),
    radial-gradient(ellipse at 60% 50%, #4a3a2a 0%, #1a1a1a 80%);
}
.scn-prospero-ariel-more-work .cave-walls { position:absolute; inset:0; background: repeating-linear-gradient(90deg, transparent 0%, transparent 40%, rgba(60,50,40,0.2) 40%, rgba(60,50,40,0.2) 60%, transparent 60%, transparent 100%), radial-gradient(ellipse at 50% 30%, transparent 0%, rgba(0,0,0,0.5) 100%); animation: pam-walls 20s ease-in-out infinite alternate; }
.scn-prospero-ariel-more-work .table-wood { position:absolute; bottom:20%; left:30%; right:25%; height:15%; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 2px; box-shadow: inset 0 5px 10px rgba(0,0,0,0.5); }
.scn-prospero-ariel-more-work .book-open { position:absolute; bottom:30%; left:33%; width:60px; height:40px; background: linear-gradient(180deg, #8a7a6a 0%, #6a5a4a 100%); border-radius: 2px; box-shadow: 0 2px 4px rgba(0,0,0,0.4); transform: rotate(-5deg); animation: pam-book 15s ease-in-out infinite; }
.scn-prospero-ariel-more-work .candle-flame { position:absolute; bottom:40%; left:50%; width:10px; height:20px; background: radial-gradient(ellipse at 50% 30%, #ffd060 0%, #c08040 50%, transparent 100%); box-shadow: 0 0 30px 10px rgba(192,128,64,0.5), 0 0 60px 20px rgba(192,128,64,0.3); animation: pam-flame 2s ease-in-out infinite alternate; }
.scn-prospero-ariel-more-work .prospero-silhouette { position:absolute; bottom:15%; left:20%; width:40px; height:70px; background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%); border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%; transform: rotate(10deg); animation: pam-prospero 6s ease-in-out infinite; }
.scn-prospero-ariel-more-work .ariel-silhouette { position:absolute; bottom:25%; right:20%; width:20px; height:45px; background: linear-gradient(180deg, #2a2a2a 0%, #1a1a1a 100%); border-radius: 50% 50% 40% 40%; animation: pam-ariel 8s ease-in-out infinite; }
@keyframes pam-walls { 0% { opacity:0.7; background-position: 0% 0% } 50% { opacity:0.9; background-position: 5% 5% } 100% { opacity:0.8; background-position: -3% -2% } }
@keyframes pam-book { 0% { transform:rotate(-5deg) translateY(0) } 50% { transform:rotate(-3deg) translateY(-2px) } 100% { transform:rotate(-7deg) translateY(1px) } }
@keyframes pam-flame { 0% { transform:scaleY(1) scaleX(1); opacity:0.8 } 50% { transform:scaleY(1.2) scaleX(0.8); opacity:1 } 100% { transform:scaleY(0.9) scaleX(1.1); opacity:0.7 } }
@keyframes pam-prospero { 0% { transform:rotate(10deg) translateY(0) scale(1) } 50% { transform:rotate(8deg) translateY(-3px) scale(1.02) } 100% { transform:rotate(12deg) translateY(2px) scale(0.98) } }
@keyframes pam-ariel { 0% { transform:translateY(0) rotate(0deg) scale(1) } 50% { transform:translateY(-8px) rotate(5deg) scale(1.05) } 100% { transform:translateY(4px) rotate(-5deg) scale(0.95) } }

.scn-ariel-reminds-of-promise {
  background:
    radial-gradient(ellipse at 70% 60%, #3a2a4a 0%, transparent 60%),
    linear-gradient(180deg, #1e1a2e 0%, #2a223a 40%, #1a1628 100%);
}
.scn-ariel-reminds-of-promise .wall-left {
  position:absolute; left:0; top:0; width:50%; height:100%;
  background: linear-gradient(180deg, #2c2840 0%, #1a1828 100%);
  box-shadow: inset -20px 0 40px rgba(0,0,0,.5);
  animation: arp-wall 15s ease-in-out infinite alternate;
}
.scn-ariel-reminds-of-promise .wall-right {
  position:absolute; right:0; top:0; width:50%; height:100%;
  background: linear-gradient(180deg, #2c2840 0%, #1a1828 100%);
  box-shadow: inset 20px 0 40px rgba(0,0,0,.5);
  animation: arp-wall 15s ease-in-out infinite alternate-reverse;
}
.scn-ariel-reminds-of-promise .floor {
  position:absolute; bottom:0; left:0; width:100%; height:30%;
  background: linear-gradient(180deg, #1e1a2a 0%, #0e0a18 100%);
  animation: arp-floor 20s ease-in-out infinite alternate;
}
.scn-ariel-reminds-of-promise .desk {
  position:absolute; bottom:18%; left:20%; width:45%; height:8%;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a12 100%);
  border-radius: 4px; box-shadow: 0 -8px 16px rgba(0,0,0,.6);
  animation: arp-desk 8s ease-in-out infinite;
}
.scn-ariel-reminds-of-promise .book-stack {
  position:absolute; bottom:24%; left:28%; width:12%; height:10%;
  background: linear-gradient(180deg, #6a3a1a 0%, #4a2a0a 100%);
  border-radius: 2px; box-shadow: 0 4px 8px rgba(0,0,0,.5);
  animation: arp-book 12s ease-in-out infinite alternate;
}
.scn-ariel-reminds-of-promise .candle {
  position:absolute; bottom:25%; left:35%; width:3%; height:15%;
  background: linear-gradient(180deg, #e0d0a0 0%, #b09070 100%);
  border-radius: 40%; 
  animation: arp-candle 4s ease-in-out infinite alternate;
}
.scn-ariel-reminds-of-promise .flame {
  position:absolute; bottom:38%; left:35.8%; width:1.5%; height:4%;
  background: radial-gradient(circle, #ffd080 0%, #ff8040 50%, transparent 100%);
  border-radius: 50%; box-shadow: 0 0 20px 8px #ff8040, 0 0 40px 16px rgba(255,128,64,.3);
  animation: arp-flame 1.5s ease-in-out infinite alternate;
}
.scn-ariel-reminds-of-promise .ariel-figure {
  position:absolute; bottom:20%; right:15%; width:12%; height:30%;
  background: radial-gradient(ellipse at 50% 30%, rgba(180,200,255,.4) 0%, rgba(100,150,255,.1) 70%);
  border-radius: 50% 50% 30% 30% / 70% 70% 30% 30%;
  filter: blur(2px);
  transform-origin: bottom center;
  animation: arp-ariel 5s ease-in-out infinite alternate;
}
.scn-ariel-reminds-of-promise .prospero-silhouette {
  position:absolute; bottom:15%; left:10%; width:15%; height:45%;
  background: linear-gradient(180deg, #0a0a18 0%, #050510 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 30% 30%;
  box-shadow: -8px 0 20px rgba(0,0,0,.8);
  animation: arp-prospero 7s ease-in-out infinite alternate;
}
@keyframes arp-wall { 0% { opacity:.85 } 50% { opacity:1 } 100% { opacity:.9 } }
@keyframes arp-floor { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.02) } 100% { transform: scaleY(1) } }
@keyframes arp-desk { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-2px) } }
@keyframes arp-book { 0% { transform: translateY(0) rotate(0) } 50% { transform: translateY(-1px) rotate(1deg) } 100% { transform: translateY(0) rotate(-1deg) } }
@keyframes arp-candle { 0% { transform: translateY(0) scaleY(1) } 50% { transform: translateY(1px) scaleY(0.98) } 100% { transform: translateY(0) scaleY(1) } }
@keyframes arp-flame { 0% { transform: scale(1) translateY(0); opacity:.9 } 25% { transform: scale(1.1) translateY(-2px); opacity:1 } 75% { transform: scale(0.9) translateY(1px); opacity:.8 } 100% { transform: scale(1) translateY(0); opacity:.9 } }
@keyframes arp-ariel { 0% { transform: translateX(0) rotate(-2deg); opacity:.5 } 50% { transform: translateX(8px) rotate(2deg); opacity:.7 } 100% { transform: translateX(-4px) rotate(-1deg); opacity:.6 } }
@keyframes arp-prospero { 0% { transform: translateX(0) rotate(1deg) } 50% { transform: translateX(-2px) rotate(-1deg) } 100% { transform: translateX(0) rotate(0) } }

.scn-prospero-reminds-sycorax {
  background:
    radial-gradient(ellipse at 30% 60%, #2a1a2a 0%, transparent 70%),
    linear-gradient(180deg, #0e0a1e 0%, #1a1228 40%, #0a0616 100%);
}
.scn-prospero-reminds-sycorax .cell-bg {
  position:absolute; inset:0; background:
    linear-gradient(90deg, #14101e 0%, #1a142a 100%);
  animation: prs-cell 12s ease-in-out infinite alternate;
}
.scn-prospero-reminds-sycorax .bars {
  position:absolute; left:30%; top:0; width:4%; height:100%;
  background: linear-gradient(180deg, #3a3030 0%, #1a1414 100%);
  box-shadow: 4px 0 8px rgba(0,0,0,.4);
  animation: prs-bars 10s ease-in-out infinite alternate;
}
.scn-prospero-reminds-sycorax .prospero-arm {
  position:absolute; bottom:25%; left:20%; width:20%; height:30%;
  background: linear-gradient(180deg, #1a1420 0%, #0a0810 100%);
  border-radius: 0 80% 80% 0 / 0 60% 40% 0;
  transform-origin: left bottom;
  animation: prs-arm 6s ease-in-out infinite alternate;
}
.scn-prospero-reminds-sycorax .sycorax-shadow {
  position:absolute; bottom:20%; right:10%; width:20%; height:40%;
  background: radial-gradient(ellipse at 50% 40%, rgba(80,20,60,.3) 0%, transparent 70%);
  filter: blur(10px);
  animation: prs-shadow 8s ease-in-out infinite alternate;
}
.scn-prospero-reminds-sycorax .chain {
  position:absolute; top:30%; left:35%; width:30%; height:2%;
  background: linear-gradient(90deg, #5a4a3a 0%, #2a1a1a 100%);
  border-radius: 50%; box-shadow: 0 2px 4px rgba(0,0,0,.5);
  animation: prs-chain 3s ease-in-out infinite alternate;
}
.scn-prospero-reminds-sycorax .torch {
  position:absolute; bottom:35%; left:45%; width:4%; height:18%;
  background: linear-gradient(180deg, #8a6a3a 0%, #3a2a1a 100%);
  border-radius: 2px;
  animation: prs-torch 5s ease-in-out infinite;
}
.scn-prospero-reminds-sycorax .torch-glow {
  position:absolute; bottom:48%; left:44.5%; width:5%; height:8%;
  background: radial-gradient(circle, #d09040 0%, #804020 60%, transparent 100%);
  border-radius: 50%; box-shadow: 0 0 30px 15px #804020, 0 0 60px 30px rgba(128,64,32,.3);
  animation: prs-glow 2s ease-in-out infinite alternate;
}
.scn-prospero-reminds-sycorax .ground {
  position:absolute; bottom:0; left:0; width:100%; height:15%;
  background: linear-gradient(180deg, #1a141c 0%, #0a0612 100%);
  animation: prs-ground 20s ease-in-out infinite alternate;
}
@keyframes prs-cell { 0% { opacity:.9 } 50% { opacity:1 } 100% { opacity:.85 } }
@keyframes prs-bars { 0% { transform: scaleX(1) } 50% { transform: scaleX(1.05) } 100% { transform: scaleX(1) } }
@keyframes prs-arm { 0% { transform: rotate(-5deg) } 50% { transform: rotate(10deg) } 100% { transform: rotate(-2deg) } }
@keyframes prs-shadow { 0% { transform: translateY(0) scale(1); opacity:.4 } 50% { transform: translateY(-10px) scale(1.2); opacity:.6 } 100% { transform: translateY(0) scale(1); opacity:.3 } }
@keyframes prs-chain { 0% { transform: translateX(0) } 50% { transform: translateX(5px) } 100% { transform: translateX(0) } }
@keyframes prs-torch { 0%,100% { transform: rotate(0) } 50% { transform: rotate(2deg) } }
@keyframes prs-glow { 0% { box-shadow: 0 0 20px 8px #804020, 0 0 40px 16px rgba(128,64,32,.2); opacity:.8 } 50% { box-shadow: 0 0 40px 20px #a06030, 0 0 80px 40px rgba(160,96,48,.4); opacity:1 } 100% { box-shadow: 0 0 25px 10px #804020, 0 0 50px 20px rgba(128,64,32,.25); opacity:.85 } }
@keyframes prs-ground { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.01) } 100% { transform: scaleY(1) } }

.scn-prosperor-sycorax-story {
  background:
    radial-gradient(ellipse at 60% 30%, #2a1a3a 0%, transparent 60%),
    linear-gradient(180deg, #0e0a1e 0%, #1a1232 40%, #0a061a 100%);
}
.scn-prosperor-sycorax-story .cavern {
  position:absolute; inset:0;
  background: radial-gradient(ellipse at 50% 100%, #1a142a 0%, transparent 60%);
  animation: pss-cavern 20s ease-in-out infinite alternate;
}
.scn-prosperor-sycorax-story .cauldron {
  position:absolute; bottom:20%; left:30%; width:30%; height:25%;
  background: linear-gradient(180deg, #4a3020 0%, #1a1008 100%);
  border-radius: 50% 50% 20% 20% / 70% 70% 20% 20%;
  box-shadow: 0 8px 20px rgba(0,0,0,.6);
  animation: pss-cauldron 9s ease-in-out infinite alternate;
}
.scn-prosperor-sycorax-story .bubble {
  position:absolute; bottom:45%; left:40%; width:5%; height:5%;
  background: radial-gradient(circle, rgba(100,180,200,.3) 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(2px);
  animation: pss-bubble 4s ease-in-out infinite alternate;
}
.scn-prosperor-sycorax-story .vapor {
  position:absolute; bottom:40%; left:35%; width:20%; height:30%;
  background: radial-gradient(ellipse at 50% 100%, rgba(80,180,200,.1) 0%, transparent 70%);
  filter: blur(8px);
  animation: pss-vapor 6s ease-in-out infinite alternate;
}
.scn-prosperor-sycorax-story .runes {
  position:absolute; left:20%; top:30%; width:10%; height:20%;
  background: radial-gradient(circle at 50% 50%, rgba(180,80,200,.2) 0%, transparent 60%);
  border-radius: 50%;
  filter: blur(3px);
  animation: pss-runes 3s ease-in-out infinite alternate;
}
.scn-prosperor-sycorax-story .prospero-hand {
  position:absolute; bottom:15%; left:55%; width:10%; height:25%;
  background: linear-gradient(180deg, #1a1428 0%, #0a0820 100%);
  border-radius: 30% 70% 70% 30% / 60% 50% 50% 40%;
  transform-origin: bottom right;
  animation: pss-hand 7s ease-in-out infinite alternate;
}
.scn-prosperor-sycorax-story .sycorax-vision {
  position:absolute; top:10%; right:15%; width:25%; height:40%;
  background: radial-gradient(ellipse at 50% 30%, rgba(80,20,80,.2) 0%, transparent 70%);
  filter: blur(6px);
  animation: pss-vision 8s ease-in-out infinite alternate;
}
.scn-prosperor-sycorax-story .staff {
  position:absolute; bottom:10%; left:15%; width:3%; height:60%;
  background: linear-gradient(180deg, #4a3020 0%, #1a1008 100%);
  border-radius: 2px;
  transform: rotate(10deg);
  animation: pss-staff 5s ease-in-out infinite alternate;
}
@keyframes pss-cavern { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.9 } }
@keyframes pss-cauldron { 0% { transform: translateY(0) scale(1) } 50% { transform: translateY(-3px) scale(1.02) } 100% { transform: translateY(0) scale(1) } }
@keyframes pss-bubble { 0% { transform: translateY(0) scale(1); opacity:.4 } 50% { transform: translateY(-20px) scale(1.3); opacity:.7 } 100% { transform: translateY(0) scale(1); opacity:.3 } }
@keyframes pss-vapor { 0% { transform: translateY(0) scale(1) } 50% { transform: translateY(-15px) scale(1.1) } 100% { transform: translateY(0) scale(1) } }
@keyframes pss-runes { 0% { opacity:.3; transform: rotate(0) } 50% { opacity:.6; transform: rotate(20deg) } 100% { opacity:.2; transform: rotate(0) } }
@keyframes pss-hand { 0% { transform: rotate(0) } 50% { transform: rotate(-15deg) } 100% { transform: rotate(2deg) } }
@keyframes pss-vision { 0% { opacity:.2; transform: scale(.9) } 50% { opacity:.5; transform: scale(1.1) } 100% { opacity:.3; transform: scale(1) } }
@keyframes pss-staff { 0% { transform: rotate(8deg) } 50% { transform: rotate(12deg) } 100% { transform: rotate(10deg) } }

.scn-prospero-caliban-intro {
  background:
    radial-gradient(ellipse at 40% 70%, #2a1a2a 0%, transparent 60%),
    linear-gradient(0deg, #0a0616 0%, #1a122a 40%, #0e0a1e 100%);
}
.scn-prospero-caliban-intro .dungeon-floor {
  position:absolute; bottom:0; left:0; width:100%; height:25%;
  background: linear-gradient(180deg, #1a1420 0%, #0a0612 100%);
  animation: pci-floor 15s ease-in-out infinite alternate;
}
.scn-prospero-caliban-intro .wall-shadows {
  position:absolute; inset:0;
  background: linear-gradient(90deg, rgba(0,0,0,.4) 0%, transparent 30%, transparent 70%, rgba(0,0,0,.4) 100%);
  animation: pci-wall 12s ease-in-out infinite alternate;
}
.scn-prospero-caliban-intro .caliban-crouch {
  position:absolute; bottom:15%; left:25%; width:20%; height:35%;
  background: linear-gradient(180deg, #2a1a1a 0%, #0a0404 100%);
  border-radius: 60% 60% 30% 30% / 80% 80% 30% 30%;
  transform-origin: bottom center;
  animation: pci-caliban 4s ease-in-out infinite alternate;
}
.scn-prospero-caliban-intro .chain-collar {
  position:absolute; bottom:40%; left:30%; width:5%; height:5%;
  background: radial-gradient(circle, #6a4a3a 0%, #2a1a0a 100%);
  border-radius: 50%;
  animation: pci-collar 3s ease-in-out infinite alternate;
}
.scn-prospero-caliban-intro .prospero-staff {
  position:absolute; bottom:20%; right:20%; width:3%; height:50%;
  background: linear-gradient(180deg, #4a3020 0%, #1a1008 100%);
  border-radius: 2px;
  transform: rotate(-15deg);
  animation: pci-staff 6s ease-in-out infinite alternate;
}
.scn-prospero-caliban-intro .light-ray {
  position:absolute; top:0; left:40%; width:20%; height:100%;
  background: linear-gradient(180deg, rgba(200,180,100,.1) 0%, transparent 60%);
  transform: skewX(-10deg);
  animation: pci-ray 8s ease-in-out infinite alternate;
}
.scn-prospero-caliban-intro .dust-motes {
  position:absolute; top:20%; left:30%; width:5%; height:5%;
  background: radial-gradient(circle, rgba(255,240,180,.2) 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(2px);
  animation: pci-dust 5s ease-in-out infinite alternate;
}
@keyframes pci-floor { 0% { opacity:.9 } 50% { opacity:1 } 100% { opacity:.85 } }
@keyframes pci-wall { 0% { opacity:.7 } 50% { opacity:1 } 100% { opacity:.8 } }
@keyframes pci-caliban { 0% { transform: translateY(0) scale(1) rotate(0) } 25% { transform: translateY(-3px) scale(1.02) rotate(2deg) } 75% { transform: translateY(2px) scale(0.98) rotate(-2deg) } 100% { transform: translateY(0) scale(1) rotate(0) } }
@keyframes pci-collar { 0% { transform: translateY(0) scale(1) } 50% { transform: translateY(5px) scale(1.1) } 100% { transform: translateY(0) scale(1) } }
@keyframes pci-staff { 0% { transform: rotate(-15deg) } 50% { transform: rotate(-10deg) } 100% { transform: rotate(-15deg) } }
@keyframes pci-ray { 0% { opacity:.3; transform: skewX(-10deg) translateX(0) } 50% { opacity:.5; transform: skewX(-12deg) translateX(5px) } 100% { opacity:.4; transform: skewX(-10deg) translateX(0) } }
@keyframes pci-dust { 0% { transform: translateY(0) scale(1); opacity:.3 } 50% { transform: translateY(-15px) scale(1.5); opacity:.6 } 100% { transform: translateY(0) scale(1); opacity:.2 } }

.scn-prospero-dismisses-ferdinand {
  background:
    linear-gradient(180deg, #87ceeb 0%, #b0e0e6 30%, #f0e68c 70%, #f5deb3 100%),
    radial-gradient(ellipse at 50% 0%, #fff8dc 0%, transparent 60%);
}
.scn-prospero-dismisses-ferdinand .bg-sky { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #87ceeb 0%, transparent 100%); animation: pds-sky 20s ease-in-out infinite alternate; }
.scn-prospero-dismisses-ferdinand .sun { position:absolute; top:12%; left:70%; width:50px; height:50px; border-radius:50%; background: radial-gradient(circle, #fff8dc 0%, #ffd700 70%); box-shadow: 0 0 60px 20px rgba(255,215,0,0.5); animation: pds-sun 8s ease-in-out infinite alternate; }
.scn-prospero-dismisses-ferdinand .mountains { position:absolute; bottom:30%; left:0; right:0; height:20%; background: linear-gradient(180deg, #6b8e23 0%, #556b2f 100%); border-radius: 30% 50% 0 0 / 60% 80% 0 0; box-shadow: inset 0 10px 20px rgba(0,0,0,0.2); animation: pds-mountains 15s ease-in-out infinite alternate; }
.scn-prospero-dismisses-ferdinand .path { position:absolute; bottom:20%; left:20%; right:20%; height:12%; background: linear-gradient(90deg, #d2b48c 0%, #c4a882 50%, #d2b48c 100%); border-radius: 20% 20% 0 0; box-shadow: inset 0 4px 8px rgba(0,0,0,0.1); }
.scn-prospero-dismisses-ferdinand .figure-prospero { position:absolute; bottom:18%; left:35%; width:30px; height:70px; background: linear-gradient(180deg, #5c4033 0%, #3a2518 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: pds-prospero 6s ease-in-out infinite; }
.scn-prospero-dismisses-ferdinand .figure-ferdinand { position:absolute; bottom:18%; left:52%; width:28px; height:66px; background: linear-gradient(180deg, #4a6741 0%, #2e4a2e 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: pds-ferdinand 7s ease-in-out infinite; }
.scn-prospero-dismisses-ferdinand .aura { position:absolute; bottom:25%; left:28%; width:80px; height:80px; background: radial-gradient(circle, rgba(255,215,0,0.15) 0%, transparent 60%); border-radius:50%; filter: blur(10px); animation: pds-aura 5s ease-in-out infinite alternate; }
.scn-prospero-dismisses-ferdinand .cloud-p1 { position:absolute; top:10%; left:12%; width:90px; height:20px; background: linear-gradient(180deg, rgba(255,255,255,0.6) 0%, rgba(255,255,255,0.1) 100%); border-radius:50%; filter: blur(5px); animation: pds-drift1 40s linear infinite; }
.scn-prospero-dismisses-ferdinand .cloud-p2 { position:absolute; top:8%; right:8%; width:70px; height:16px; background: linear-gradient(180deg, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0.05) 100%); border-radius:50%; filter: blur(4px); animation: pds-drift2 50s linear infinite reverse; }
@keyframes pds-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.9 } }
@keyframes pds-sun { 0% { transform: translateY(0px) scale(1); box-shadow: 0 0 50px 15px rgba(255,215,0,0.4); } 50% { transform: translateY(-5px) scale(1.02); box-shadow: 0 0 70px 25px rgba(255,215,0,0.6); } 100% { transform: translateY(0px) scale(1); box-shadow: 0 0 60px 20px rgba(255,215,0,0.5); } }
@keyframes pds-mountains { 0% { transform: translateY(0px) scaleY(1); } 50% { transform: translateY(-2px) scaleY(1.01); } 100% { transform: translateY(0px) scaleY(1); } }
@keyframes pds-aura { 0% { opacity:0.3; transform: scale(0.9); } 50% { opacity:0.6; transform: scale(1.2); } 100% { opacity:0.4; transform: scale(1); } }
@keyframes pds-prospero { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(2px) rotate(-2deg); } 50% { transform: translateX(0) rotate(0deg); } 75% { transform: translateX(-1px) rotate(2deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes pds-ferdinand { 0% { transform: translateX(0) rotate(0deg); } 33% { transform: translateX(-3px) rotate(-1deg); } 66% { transform: translateX(2px) rotate(1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes pds-drift1 { 0% { transform: translateX(-40px); } 100% { transform: translateX(120vw); } }
@keyframes pds-drift2 { 0% { transform: translateX(0); } 100% { transform: translateX(-100vw); } }

.scn-gonzalo-consoles-alonso {
  background:
    linear-gradient(180deg, #87ceeb 0%, #b0e0e6 40%, #f5deb3 75%, #daa520 100%),
    radial-gradient(ellipse at 50% 0%, #fff8dc 0%, transparent 70%);
}
.scn-gonzalo-consoles-alonso .bg-sea { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #4682b4 0%, #5f9ea0 40%, transparent 100%); animation: gca-sea 18s ease-in-out infinite alternate; }
.scn-gonzalo-consoles-alonso .sand { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, #e8d8b0 0%, #c2a87c 100%); border-radius: 80% 70% 0 0 / 60% 50% 0 0; box-shadow: inset 0 10px 20px rgba(0,0,0,0.1); animation: gca-sand 12s ease-in-out infinite alternate; }
.scn-gonzalo-consoles-alonso .wreck-beam { position:absolute; bottom:30%; left:10%; width:40%; height:6px; background: linear-gradient(90deg, #5c4a3a 0%, #3a2a1a 100%); border-radius:2px; transform: rotate(-8deg); box-shadow: 0 2px 4px rgba(0,0,0,0.3); }
.scn-gonzalo-consoles-alonso .group-figures { position:absolute; bottom:18%; left:40%; width:40px; height:80px; background: radial-gradient(ellipse at 50% 100%, #3a2518 0%, transparent 70%); animation: gca-group 10s ease-in-out infinite; }
.scn-gonzalo-consoles-alonso .figure-gonzalo { position:absolute; bottom:18%; left:20%; width:28px; height:72px; background: linear-gradient(180deg, #6b3a2a 0%, #3a1a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: gca-gonzalo 7s ease-in-out infinite; }
.scn-gonzalo-consoles-alonso .figure-alonso { position:absolute; bottom:18%; left:55%; width:30px; height:74px; background: linear-gradient(180deg, #4a2a1a 0%, #2a0a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: gca-alonso 9s ease-in-out infinite; }
.scn-gonzalo-consoles-alonso .palm-left { position:absolute; bottom:10%; left:5%; width:12px; height:60px; background: linear-gradient(180deg, #6b8e23 0%, #3a5a1a 100%); border-radius:50% 50% 20% 20% / 80% 80% 20% 20%; transform: rotate(15deg); transform-origin: bottom; animation: gca-palm 15s ease-in-out infinite alternate; }
.scn-gonzalo-consoles-alonso .palm-right { position:absolute; bottom:10%; right:8%; width:14px; height:55px; background: linear-gradient(180deg, #6b8e23 0%, #3a5a1a 100%); border-radius:50% 50% 20% 20% / 80% 80% 20% 20%; transform: rotate(-20deg); transform-origin: bottom; animation: gca-palm 18s ease-in-out infinite alternate reverse; }
.scn-gonzalo-consoles-alonso .cloud-g1 { position:absolute; top:8%; left:30%; width:120px; height:24px; background: linear-gradient(180deg, rgba(255,255,255,0.7) 0%, rgba(255,255,255,0.2) 100%); border-radius:50%; filter: blur(6px); animation: gca-drift 35s linear infinite; }
@keyframes gca-sea { 0% { opacity:0.8; background-position: 0% 0%; } 50% { opacity:1; background-position: 2% 3%; } 100% { opacity:0.9; background-position: 0% 0%; } }
@keyframes gca-sand { 0% { transform: translateY(0) scaleY(1); } 50% { transform: translateY(-2px) scaleY(1.01); } 100% { transform: translateY(0) scaleY(1); } }
@keyframes gca-group { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(3px) rotate(1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes gca-gonzalo { 0% { transform: translateX(0) rotate(-2deg); } 33% { transform: translateX(4px) rotate(1deg); } 66% { transform: translateX(-2px) rotate(-1deg); } 100% { transform: translateX(0) rotate(-2deg); } }
@keyframes gca-alonso { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(-5px) rotate(2deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes gca-palm { 0% { transform: rotate(15deg); } 50% { transform: rotate(20deg); } 100% { transform: rotate(15deg); } }
@keyframes gca-drift { 0% { transform: translateX(-30px); } 100% { transform: translateX(120vw); } }

.scn-adrian-cockerel-wager {
  background:
    linear-gradient(180deg, #f0e68c 0%, #bdb76b 30%, #8fbc8f 70%, #6b8e23 100%),
    radial-gradient(ellipse at 50% 0%, #fff8dc 0%, transparent 60%);
}
.scn-adrian-cockerel-wager .bg-barn { position:absolute; inset:0 0 20% 0; background: linear-gradient(180deg, #a0522d 0%, #8b4513 50%, transparent 100%); border-radius: 40% 40% 0 0 / 30% 30% 0 0; animation: acw-barn 10s ease-in-out infinite alternate; }
.scn-adrian-cockerel-wager .floor { position:absolute; bottom:0; left:0; right:0; height:20%; background: linear-gradient(180deg, #d2b48c 0%, #c4a882 100%); border-radius: 20% 20% 0 0; box-shadow: inset 0 4px 8px rgba(0,0,0,0.2); }
.scn-adrian-cockerel-wager .figure-adrian { position:absolute; bottom:15%; left:20%; width:28px; height:70px; background: linear-gradient(180deg, #4a6741 0%, #2e4a2e 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: acw-adrian 4s ease-in-out infinite; }
.scn-adrian-cockerel-wager .figure-other { position:absolute; bottom:15%; right:20%; width:30px; height:72px; background: linear-gradient(180deg, #5c4033 0%, #3a2518 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: acw-other 5s ease-in-out infinite; }
.scn-adrian-cockerel-wager .rooster { position:absolute; bottom:25%; left:46%; width:20px; height:30px; background: radial-gradient(ellipse at 50% 20%, #daa520 0%, #b8860b 70%, #8b4513 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; box-shadow: 0 0 0 2px #b8860b; animation: acw-crow 2s ease-in-out infinite; }
.scn-adrian-cockerel-wager .speech-bubble-1 { position:absolute; top:20%; left:15%; width:40px; height:20px; background: rgba(255,255,255,0.8); border-radius:50%; filter: blur(2px); animation: acw-sb1 4s ease-in-out infinite; }
.scn-adrian-cockerel-wager .speech-bubble-2 { position:absolute; top:18%; right:18%; width:30px; height:18px; background: rgba(255,255,255,0.8); border-radius:50%; filter: blur(2px); animation: acw-sb2 5s ease-in-out infinite; }
.scn-adrian-cockerel-wager .dust { position:absolute; bottom:17%; left:40%; right:40%; height:10px; background: radial-gradient(ellipse at 50% 50%, #d2b48c 0%, transparent 70%); filter: blur(3px); animation: acw-dust 3s ease-in-out infinite; }
@keyframes acw-barn { 0% { opacity:0.9; } 50% { opacity:1; } 100% { opacity:0.85; } }
@keyframes acw-adrian { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(5px) rotate(-3deg); } 50% { transform: translateX(0) rotate(0deg); } 75% { transform: translateX(-5px) rotate(3deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes acw-other { 0% { transform: translateX(0) rotate(0deg); } 33% { transform: translateX(-4px) rotate(2deg); } 66% { transform: translateX(4px) rotate(-2deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes acw-crow { 0% { transform: translateY(0) rotate(0deg) scale(1); } 25% { transform: translateY(-6px) rotate(-5deg) scale(1.05); } 50% { transform: translateY(0) rotate(0deg) scale(1); } 75% { transform: translateY(4px) rotate(5deg) scale(0.95); } 100% { transform: translateY(0) rotate(0deg) scale(1); } }
@keyframes acw-sb1 { 0% { opacity:0.3; transform: scale(0.8); } 50% { opacity:0.7; transform: scale(1.1); } 100% { opacity:0.3; transform: scale(0.8); } }
@keyframes acw-sb2 { 0% { opacity:0.5; transform: scale(1); } 50% { opacity:0.2; transform: scale(0.8); } 100% { opacity:0.5; transform: scale(1); } }
@keyframes acw-dust { 0% { opacity:0.2; transform: translateY(0) scaleY(1); } 50% { opacity:0.6; transform: translateY(-5px) scaleY(2); } 100% { opacity:0.2; transform: translateY(0) scaleY(1); } }

.scn-adrian-desert-isle {
  background:
    linear-gradient(180deg, #66cdaa 0%, #3cb371 30%, #f0e68c 60%, #e8d8b0 100%),
    radial-gradient(ellipse at 50% 0%, #fff8dc 0%, transparent 50%);
}
.scn-adrian-desert-isle .bg-tropic { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #87ceeb 0%, #66cdaa 60%, transparent 100%); animation: adi-sky 20s ease-in-out infinite alternate; }
.scn-adrian-desert-isle .beach { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, #f5deb3 0%, #e8d8b0 100%); border-radius: 70% 80% 0 0 / 50% 60% 0 0; box-shadow: inset 0 10px 20px rgba(0,0,0,0.1); }
.scn-adrian-desert-isle .figure-adrian2 { position:absolute; bottom:22%; left:30%; width:28px; height:68px; background: linear-gradient(180deg, #4a6741 0%, #2e4a2e 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: adi-adrian 6s ease-in-out infinite; }
.scn-adrian-desert-isle .figure-laughing-a { position:absolute; bottom:18%; left:50%; width:30px; height:70px; background: linear-gradient(180deg, #5c4033 0%, #3a2518 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: adi-laugh1 5s ease-in-out infinite; }
.scn-adrian-desert-isle .figure-laughing-b { position:absolute; bottom:20%; right:25%; width:26px; height:66px; background: linear-gradient(180deg, #6b3a2a 0%, #3a1a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: adi-laugh2 7s ease-in-out infinite; }
.scn-adrian-desert-isle .palm-tree { position:absolute; bottom:10%; left:10%; width:16px; height:70px; background: linear-gradient(180deg, #6b8e23 0%, #3a5a1a 100%); border-radius: 50% 50% 20% 20% / 80% 80% 20% 20%; transform: rotate(-10deg); transform-origin: bottom; animation: adi-palm 14s ease-in-out infinite alternate; }
.scn-adrian-desert-isle .wave-foam { position:absolute; bottom:38%; left:0; right:0; height:8px; background: linear-gradient(90deg, rgba(255,255,255,0.4) 0%, rgba(255,255,255,0.1) 50%, rgba(255,255,255,0.4) 100%); filter: blur(3px); animation: adi-wave 8s ease-in-out infinite; }
.scn-adrian-desert-isle .cloud-a1 { position:absolute; top:10%; left:20%; width:100px; height:22px; background: linear-gradient(180deg, rgba(255,255,255,0.6) 0%, rgba(255,255,255,0.1) 100%); border-radius:50%; filter: blur(5px); animation: adi-drift1 45s linear infinite; }
.scn-adrian-desert-isle .cloud-a2 { position:absolute; top:15%; right:15%; width:80px; height:18px; background: linear-gradient(180deg, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0.05) 100%); border-radius:50%; filter: blur(4px); animation: adi-drift2 55s linear infinite reverse; }
@keyframes adi-sky { 0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.9; } }
@keyframes adi-adrian { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(3px) rotate(-2deg); } 50% { transform: translateX(0) rotate(0deg); } 75% { transform: translateX(-3px) rotate(2deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes adi-laugh1 { 0% { transform: translateY(0) rotate(0deg) scale(1); } 25% { transform: translateY(-8px) rotate(5deg) scale(1.05); } 50% { transform: translateY(0) rotate(0deg) scale(1); } 75% { transform: translateY(4px) rotate(-3deg) scale(0.95); } 100% { transform: translateY(0) rotate(0deg) scale(1); } }
@keyframes adi-laugh2 { 0% { transform: translateX(0) rotate(0deg); } 33% { transform: translateX(6px) rotate(4deg); } 66% { transform: translateX(-4px) rotate(-2deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes adi-palm { 0% { transform: rotate(-10deg); } 50% { transform: rotate(-15deg); } 100% { transform: rotate(-10deg); } }
@keyframes adi-wave { 0% { opacity:0.3; transform: translateX(0); } 50% { opacity:0.7; transform: translateX(10px); } 100% { opacity:0.3; transform: translateX(0); } }
@keyframes adi-drift1 { 0% { transform: translateX(-40px); } 100% { transform: translateX(120vw); } }
@keyframes adi-drift2 { 0% { transform: translateX(0); } 100% { transform: translateX(-100vw); } }

/* ship-final-abandonment */
.scn-ship-final-abandonment {
  background:
    linear-gradient(180deg, #2a2a3a 0%, #1a1a2e 30%, #0e1a2a 70%, #0a1218 100%),
    radial-gradient(ellipse at 20% 80%, #2a3a4a 0%, transparent 70%);
}
.scn-ship-final-abandonment .bg-overcast {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #3a4a5a 0%, #1a2a3a 50%, transparent 100%);
  animation: sfa-cloud 40s ease-in-out infinite alternate;
}
.scn-ship-final-abandonment .sea {
  position: absolute; bottom: 0; left: 0; right: 0; height: 55%;
  background: linear-gradient(180deg, #1a3a3a 0%, #0e2a2e 50%, #060f12 100%);
  border-radius: 0 0 20% 20% / 0 0 10% 10%;
  animation: sfa-sea 20s ease-in-out infinite alternate;
}
.scn-ship-final-abandonment .hull {
  position: absolute; bottom: 38%; left: 30%; width: 30%; height: 10%;
  background: linear-gradient(180deg, #2a1a12 0%, #1a0e08 100%);
  border-radius: 0 0 40% 40% / 0 0 80% 80%;
  transform: rotate(-2deg);
  box-shadow: 0 4px 8px rgba(0,0,0,0.6);
  animation: sfa-rock 8s ease-in-out infinite alternate;
}
.scn-ship-final-abandonment .mast {
  position: absolute; bottom: 48%; left: 42%; width: 2%; height: 20%;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0e05 100%);
  border-radius: 2px;
  transform-origin: bottom center;
  animation: sfa-rock 8s ease-in-out infinite alternate-reverse;
}
.scn-ship-final-abandonment .king-figure {
  position: absolute; bottom: 39%; left: 35%; width: 8%; height: 12%;
  background: radial-gradient(ellipse at 50% 40%, #1a1a2a 0%, #0a0a1a 70%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: sfa-figure 8s ease-in-out infinite;
}
.scn-ship-final-abandonment .wave-left {
  position: absolute; bottom: 10%; left: -5%; width: 50%; height: 12%;
  background: radial-gradient(ellipse at 50% 100%, #2a4a4a 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(4px);
  animation: sfa-wave-l 10s ease-in-out infinite;
}
.scn-ship-final-abandonment .wave-right {
  position: absolute; bottom: 15%; right: -5%; width: 50%; height: 10%;
  background: radial-gradient(ellipse at 50% 100%, #1a3a3a 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(4px);
  animation: sfa-wave-r 12s ease-in-out infinite reverse;
}
.scn-ship-final-abandonment .mist {
  position: absolute; bottom: 30%; left: 0; right: 0; height: 20%;
  background: radial-gradient(ellipse at 50% 100%, rgba(80,100,110,0.3) 0%, transparent 80%);
  filter: blur(12px);
  animation: sfa-mist 30s linear infinite alternate;
}
@keyframes sfa-cloud {
  0% { opacity: 0.6; transform: scaleY(1); }
  50% { opacity: 0.9; transform: scaleY(0.95); }
  100% { opacity: 0.5; transform: scaleY(1.05); }
}
@keyframes sfa-sea {
  0% { transform: translateY(0) scale(1); }
  50% { transform: translateY(4px) scale(1.02); }
  100% { transform: translateY(-2px) scale(0.98); }
}
@keyframes sfa-rock {
  0% { transform: rotate(-3deg) translateX(-2px); }
  50% { transform: rotate(3deg) translateX(2px); }
  100% { transform: rotate(-2deg) translateX(-1px); }
}
@keyframes sfa-figure {
  0% { transform: rotate(-2deg) translateY(0); }
  25% { transform: rotate(1deg) translateY(-3px); }
  50% { transform: rotate(-1deg) translateY(2px); }
  75% { transform: rotate(2deg) translateY(-1px); }
  100% { transform: rotate(-2deg) translateY(0); }
}
@keyframes sfa-wave-l {
  0% { transform: translateX(0) scaleX(1); }
  50% { transform: translateX(15px) scaleX(1.2); }
  100% { transform: translateX(-10px) scaleX(0.9); }
}
@keyframes sfa-wave-r {
  0% { transform: translateX(0) scaleX(0.9); }
  50% { transform: translateX(-20px) scaleX(1.1); }
  100% { transform: translateX(10px) scaleX(1); }
}
@keyframes sfa-mist {
  0% { opacity: 0.2; transform: translateX(-10px); }
  50% { opacity: 0.5; transform: translateX(20px); }
  100% { opacity: 0.3; transform: translateX(-5px); }
}

/* prospero-miranda-storm-grief */
.scn-prospero-miranda-storm-grief {
  background:
    linear-gradient(180deg, #1a1a2e 0%, #2a2830 40%, #1c1e24 100%),
    radial-gradient(ellipse at 30% 50%, #3a3a4a 0%, transparent 70%);
  animation: pms-pulse 12s ease-in-out infinite alternate;
}
.scn-prospero-miranda-storm-grief .cell-bg {
  position: absolute; inset: 0;
  background: linear-gradient(135deg, #2a2a3a 0%, #1a1820 50%, #0e0e14 100%);
  border-radius: 0 0 20% 20% / 0 0 10% 10%;
  box-shadow: inset 0 0 60px rgba(0,0,0,0.7);
}
.scn-prospero-miranda-storm-grief .window {
  position: absolute; top: 15%; left: 10%; width: 35%; height: 45%;
  background: linear-gradient(180deg, #3a4a5a 0%, #2a3a4a 100%);
  border-radius: 4% 4% 6% 6% / 8% 8% 12% 12%;
  border: 6px solid #2a1a12;
  box-shadow: inset 0 0 20px #0a0a1a, 0 0 30px rgba(0,0,0,0.5);
  overflow: hidden;
}
.scn-prospero-miranda-storm-grief .storm-sky {
  position: absolute; top: 0; left: 0; width: 100%; height: 100%;
  background:
    linear-gradient(180deg, #2a3a4a 0%, #1a2a3a 40%, #0e1a2a 70%, #0a1218 100%),
    radial-gradient(ellipse at 20% 80%, #4a5a6a 0%, transparent 60%);
  animation: pms-storm 6s ease-in-out infinite alternate;
}
.scn-prospero-miranda-storm-grief .prospero-figure {
  position: absolute; bottom: 28%; left: 20%; width: 12%; height: 24%;
  background: radial-gradient(ellipse at 50% 40%, #2a2a3a 0%, #1a1a2a 70%);
  border-radius: 45% 45% 35% 35% / 55% 55% 35% 35%;
  transform-origin: bottom center;
  animation: pms-prospero 10s ease-in-out infinite;
}
.scn-prospero-miranda-storm-grief .miranda-figure {
  position: absolute; bottom: 25%; left: 38%; width: 10%; height: 22%;
  background: radial-gradient(ellipse at 50% 40%, #3a2a3a 0%, #2a1a2a 70%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pms-miranda 8s ease-in-out infinite alternate;
}
.scn-prospero-miranda-storm-grief .candle-glow {
  position: absolute; bottom: 20%; left: 55%; width: 6%; height: 6%;
  background: radial-gradient(circle, #ffd080 0%, #ffa040 50%, transparent 80%);
  border-radius: 50%;
  box-shadow: 0 0 40px 15px rgba(255,160,64,0.4), 0 0 80px 30px rgba(255,160,64,0.15);
  animation: pms-candle 3s ease-in-out infinite alternate;
}
.scn-prospero-miranda-storm-grief .shadows {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,0.6) 100%);
  animation: pms-shadow 12s ease-in-out infinite alternate;
}
@keyframes pms-pulse {
  0% { opacity: 0.85; }
  50% { opacity: 1; }
  100% { opacity: 0.9; }
}
@keyframes pms-storm {
  0% { opacity: 0.6; transform: translateY(-5px); }
  50% { opacity: 0.9; transform: translateY(5px); }
  100% { opacity: 0.7; transform: translateY(-2px); }
}
@keyframes pms-prospero {
  0% { transform: rotate(-2deg) translateY(0); }
  25% { transform: rotate(1deg) translateY(-2px); }
  50% { transform: rotate(-1deg) translateY(1px); }
  75% { transform: rotate(2deg) translateY(-1px); }
  100% { transform: rotate(-1deg) translateY(0); }
}
@keyframes pms-miranda {
  0% { transform: rotate(-5deg) translateX(0); }
  50% { transform: rotate(0deg) translateX(3px); }
  100% { transform: rotate(-3deg) translateX(-2px); }
}
@keyframes pms-candle {
  0% { opacity: 0.8; transform: scale(0.9); }
  50% { opacity: 1; transform: scale(1.1); }
  100% { opacity: 0.85; transform: scale(1); }
}
@keyframes pms-shadow {
  0% { opacity: 0.4; }
  50% { opacity: 0.7; }
  100% { opacity: 0.5; }
}

/* prospero-comforts-miranda */
.scn-prospero-comforts-miranda {
  background:
    linear-gradient(180deg, #1e1e2a 0%, #2a2830 50%, #181820 100%),
    radial-gradient(ellipse at 50% 70%, #3a3848 0%, transparent 60%);
}
.scn-prospero-comforts-miranda .bg-dim {
  position: absolute; inset: 0;
  background: linear-gradient(135deg, #1a1a26 0%, #0e0e18 100%);
  border-radius: 0 0 15% 15% / 0 0 8% 8%;
  box-shadow: inset 0 0 80px rgba(0,0,0,0.8);
}
.scn-prospero-comforts-miranda .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(180deg, #2a2018 0%, #1a120e 100%);
  border-radius: 10% 10% 0 0 / 20% 20% 0 0;
}
.scn-prospero-comforts-miranda .prospero-torso {
  position: absolute; bottom: 20%; left: 25%; width: 20%; height: 35%;
  background: radial-gradient(ellipse at 50% 30%, #2a2a3a 0%, #1a1a2a 70%);
  border-radius: 50% 50% 30% 30% / 55% 55% 30% 30%;
  transform-origin: bottom center;
  animation: pcm-body 12s ease-in-out infinite alternate;
}
.scn-prospero-comforts-miranda .miranda-torso {
  position: absolute; bottom: 18%; left: 48%; width: 16%; height: 30%;
  background: radial-gradient(ellipse at 50% 30%, #3a2a3a 0%, #2a1a2a 70%);
  border-radius: 50% 50% 35% 35% / 60% 60% 35% 35%;
  transform-origin: bottom center;
  animation: pcm-body 12s ease-in-out infinite alternate-reverse;
}
.scn-prospero-comforts-miranda .comfort-arm {
  position: absolute; bottom: 35%; left: 35%; width: 18%; height: 6%;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 40% 40% 20% 20% / 50% 50% 30% 30%;
  transform: rotate(-20deg);
  transform-origin: left center;
  animation: pcm-arm 8s ease-in-out infinite alternate;
}
.scn-prospero-comforts-miranda .warm-light {
  position: absolute; bottom: 30%; left: 40%; width: 20%; height: 30%;
  background: radial-gradient(ellipse at 50% 100%, rgba(255,200,150,0.25) 0%, transparent 70%);
  filter: blur(20px);
  animation: pcm-glow 6s ease-in-out infinite alternate;
}
.scn-prospero-comforts-miranda .dust-motes {
  position: absolute; top: 20%; left: 0; right: 0; height: 60%;
  background: radial-gradient(circle at 30% 40%, rgba(255,230,200,0.04) 0%, transparent 50%);
  filter: blur(8px);
  animation: pcm-dust 20s linear infinite;
}
@keyframes pcm-body {
  0% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-2px) scale(1.01); }
  100% { transform: translateY(1px) scale(0.99); }
}
@keyframes pcm-arm {
  0% { transform: rotate(-18deg) scaleX(1); }
  50% { transform: rotate(-22deg) scaleX(1.02); }
  100% { transform: rotate(-20deg) scaleX(0.98); }
}
@keyframes pcm-glow {
  0% { opacity: 0.4; transform: scale(0.9); }
  50% { opacity: 0.8; transform: scale(1.1); }
  100% { opacity: 0.5; transform: scale(1); }
}
@keyframes pcm-dust {
  0% { transform: translateY(0) rotate(0deg); }
  25% { transform: translateY(-10px) rotate(5deg); }
  50% { transform: translateY(5px) rotate(-3deg); }
  75% { transform: translateY(-5px) rotate(2deg); }
  100% { transform: translateY(0) rotate(0deg); }
}

/* prospero-reveals-identity */
.scn-prospero-reveals-identity {
  background:
    linear-gradient(135deg, #1a1a2a 0%, #2a2838 40%, #121218 100%),
    radial-gradient(ellipse at 40% 30%, #3a3850 0%, transparent 70%);
}
.scn-prospero-reveals-identity .bg-cave {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, #0e0e1a 0%, #1a1824 50%, #0a0a12 100%);
  border-radius: 0 0 25% 25% / 0 0 12% 12%;
  box-shadow: inset 0 0 120px rgba(0,0,0,0.9);
}
.scn-prospero-reveals-identity .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #1a1410 0%, #0e0a08 100%);
  border-radius: 15% 15% 0 0 / 25% 25% 0 0;
}
.scn-prospero-reveals-identity .mantle {
  position: absolute; bottom: 18%; left: 40%; width: 25%; height: 12%;
  background: linear-gradient(135deg, #3a2a6a 0%, #2a1a4e 50%, #1a0e32 100%);
  border-radius: 30% 30% 10% 10% / 50% 50% 20% 20%;
  box-shadow: 0 0 40px 10px rgba(80,40,160,0.3), 0 0 80px 20px rgba(80,40,160,0.1);
  transform: rotate(10deg);
  animation: pri-mantle 6s ease-in-out infinite alternate;
}
.scn-prospero-reveals-identity .prospero-figure {
  position: absolute; bottom: 25%; left: 20%; width: 14%; height: 30%;
  background: radial-gradient(ellipse at 50% 30%, #2a2a3e 0%, #1a1a2e 70%);
  border-radius: 45% 45% 35% 35% / 55% 55% 35% 35%;
  transform-origin: bottom center;
  animation: pri-figure 10s ease-in-out infinite;
}
.scn-prospero-reveals-identity .miranda-figure {
  position: absolute; bottom: 22%; left: 50%; width: 12%; height: 28%;
  background: radial-gradient(ellipse at 50% 30%, #3a2a3a 0%, #2a1a2a 70%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pri-figure 10s ease-in-out infinite alternate-reverse;
}
.scn-prospero-reveals-identity .staff {
  position: absolute; bottom: 28%; left: 28%; width: 2%; height: 35%;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 2px;
  transform: rotate(-8deg);
  transform-origin: bottom center;
  animation: pri-staff 8s ease-in-out infinite alternate;
}
.scn-prospero-reveals-identity .magic-aura {
  position: absolute; bottom: 20%; left: 35%; width: 30%; height: 30%;
  background: radial-gradient(ellipse at 50% 50%, rgba(100,60,180,0.15) 0%, transparent 60%);
  filter: blur(30px);
  animation: pri-aura 5s ease-in-out infinite alternate;
}
.scn-prospero-reveals-identity .sparkles {
  position: absolute; bottom: 15%; left: 0; right: 0; height: 50%;
  background:
    radial-gradient(circle at 30% 60%, rgba(180,140,255,0.06) 0%, transparent 50%),
    radial-gradient(circle at 70% 40%, rgba(180,140,255,0.04) 0%, transparent 50%);
  filter: blur(4px);
  animation: pri-sparkle 15s linear infinite;
}
@keyframes pri-mantle {
  0% { opacity: 0.7; transform: rotate(8deg) scale(1); }
  50% { opacity: 0.9; transform: rotate(12deg) scale(1.05); }
  100% { opacity: 0.8; transform: rotate(10deg) scale(0.95); }
}
@keyframes pri-figure {
  0% { transform: translateY(0) rotate(-1deg); }
  50% { transform: translateY(-2px) rotate(1deg); }
  100% { transform: translateY(1px) rotate(0deg); }
}
@keyframes pri-staff {
  0% { transform: rotate(-6deg) translateY(0); }
  50% { transform: rotate(-10deg) translateY(-2px); }
  100% { transform: rotate(-8deg) translateY(1px); }
}
@keyframes pri-aura {
  0% { opacity: 0.3; transform: scale(0.8); }
  50% { opacity: 0.6; transform: scale(1.2); }
  100% { opacity: 0.4; transform: scale(1); }
}
@keyframes pri-sparkle {
  0% { opacity: 0.2; transform: translateY(0) rotate(0deg); }
  25% { opacity: 0.4; transform: translateY(-5px) rotate(10deg); }
  50% { opacity: 0.3; transform: translateY(3px) rotate(-5deg); }
  75% { opacity: 0.5; transform: translateY(-2px) rotate(8deg); }
  100% { opacity: 0.2; transform: translateY(0) rotate(0deg); }
}

/* Scene 1: prosperity-imagery-remembrance – calm, dim interior with arch, figure, orb */
.scn-prospero-imagery-remembrance {
  background:
    linear-gradient(180deg, #1a1a2e 0%, #2a2540 40%, #3a3050 100%),
    radial-gradient(ellipse at 50% 100%, #4a3a5a 0%, transparent 70%);
}
.scn-prospero-imagery-remembrance .wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #1f1f30 0%, #2a2540 100%);
  border-radius: 0 0 20% 20% / 0 0 10% 10%;
  animation: pi-wall 15s ease-in-out infinite alternate;
}
.scn-prospero-imagery-remembrance .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a0a 100%);
  border-radius: 30% 70% 0 0 / 50% 50% 0 0;
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.6);
}
.scn-prospero-imagery-remembrance .arch {
  position: absolute; bottom: 20%; left: 50%; width: 120px; height: 160px;
  transform: translateX(-50%);
  background: radial-gradient(ellipse at 50% 30%, #3a3a4a 0%, #1a1a2a 70%, transparent 70%);
  border-radius: 50% 50% 0 0 / 80% 80% 0 0;
  box-shadow: inset 0 -20px 40px rgba(0,0,0,0.5);
  animation: pi-arch 12s ease-in-out infinite alternate;
}
.scn-prospero-imagery-remembrance .figure {
  position: absolute; bottom: 22%; left: 50%; width: 30px; height: 60px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pi-figure 8s ease-in-out infinite;
}
.scn-prospero-imagery-remembrance .orb {
  position: absolute; bottom: 35%; left: 42%; width: 14px; height: 14px;
  background: radial-gradient(circle, #c8b080 0%, #a08050 60%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 20px 6px #a08050, 0 0 40px 12px rgba(160,128,80,0.4);
  animation: pi-orb 4s ease-in-out infinite alternate;
}
.scn-prospero-imagery-remembrance .dust {
  position: absolute; width: 6px; height: 6px;
  background: rgba(200,180,160,0.4);
  border-radius: 50%;
  filter: blur(2px);
}
.scn-prospero-imagery-remembrance .dust-a {
  top: 20%; left: 30%;
  animation: pi-drift-a 30s linear infinite;
}
.scn-prospero-imagery-remembrance .dust-b {
  top: 40%; left: 60%;
  animation: pi-drift-b 40s linear infinite reverse;
}
@keyframes pi-wall { 0% { opacity:0.9 } 50% { opacity:1 } 100% { opacity:0.85 } }
@keyframes pi-arch { 0% { transform: translateX(-50%) scaleY(1) } 50% { transform: translateX(-50%) scaleY(1.02) } 100% { transform: translateX(-50%) scaleY(0.98) } }
@keyframes pi-figure { 0% { transform: translateX(-50%) translateY(0) rotate(-1deg) } 25% { transform: translateX(-50%) translateY(-2px) rotate(0deg) } 50% { transform: translateX(-50%) translateY(0) rotate(1deg) } 75% { transform: translateX(-50%) translateY(-2px) rotate(0deg) } 100% { transform: translateX(-50%) translateY(0) rotate(-1deg) } }
@keyframes pi-orb { 0% { opacity:0.7; box-shadow:0 0 15px 4px #a08050 } 50% { opacity:1; box-shadow:0 0 30px 12px #c8b080 } 100% { opacity:0.8; box-shadow:0 0 20px 6px #a08050 } }
@keyframes pi-drift-a { 0% { transform: translateY(0) translateX(0) } 50% { transform: translateY(-20px) translateX(30px) } 100% { transform: translateY(10px) translateX(60px) } }
@keyframes pi-drift-b { 0% { transform: translateY(0) translateX(0) } 50% { transform: translateY(-15px) translateX(-20px) } 100% { transform: translateY(5px) translateX(-50px) } }

/* Scene 2: prospero-duke-of-milan – warm interior with throne, figure, candle, map */
.scn-prospero-duke-of-milan {
  background:
    linear-gradient(180deg, #2a1a0a 0%, #3a2a1a 40%, #5a3a2a 100%),
    radial-gradient(ellipse at 50% 100%, #5a3a2a 0%, transparent 70%);
}
.scn-prospero-duke-of-milan .wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #2a1a0a 0%, #4a2a1a 100%);
  border-radius: 0 0 15% 15% / 0 0 20% 20%;
  box-shadow: inset 0 10px 40px rgba(0,0,0,0.7);
  animation: pd-wall 12s ease-in-out infinite alternate;
}
.scn-prospero-duke-of-milan .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #4a2a1a 0%, #1a0a00 100%);
  border-radius: 40% 60% 0 0 / 30% 70% 0 0;
}
.scn-prospero-duke-of-milan .throne {
  position: absolute; bottom: 18%; left: 50%; width: 80px; height: 100px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #6a4a2a 0%, #3a2a1a 100%);
  border-radius: 20% 20% 10% 10% / 30% 30% 10% 10%;
  box-shadow: 0 8px 20px rgba(0,0,0,0.6);
  animation: pd-throne 10s ease-in-out infinite;
}
.scn-prospero-duke-of-milan .figure {
  position: absolute; bottom: 20%; left: 44%; width: 24px; height: 55px;
  background: linear-gradient(180deg, #1a1a0a 0%, #0a0a00 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pd-figure 6s ease-in-out infinite;
}
.scn-prospero-duke-of-milan .candle {
  position: absolute; bottom: 25%; left: 35%; width: 8px; height: 20px;
  background: linear-gradient(180deg, #c8a060 0%, #806040 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 0 0 24px 8px #c8a060, 0 0 48px 16px rgba(200,160,96,0.4);
  animation: pd-candle 2s ease-in-out infinite alternate;
}
.scn-prospero-duke-of-milan .table {
  position: absolute; bottom: 18%; left: 30%; width: 60px; height: 12px;
  background: linear-gradient(180deg, #5a3a1a 0%, #3a1a0a 100%);
  border-radius: 10% 10% 0 0;
  transform: rotate(-5deg);
  box-shadow: 0 4px 10px rgba(0,0,0,0.5);
  animation: pd-table 15s ease-in-out infinite alternate;
}
.scn-prospero-duke-of-milan .scroll {
  position: absolute; bottom: 20%; left: 32%; width: 8px; height: 30px;
  background: linear-gradient(180deg, #a08050 0%, #604020 100%);
  border-radius: 50% 50% 10% 10%;
  transform: rotate(10deg);
  animation: pd-scroll 8s ease-in-out infinite;
}
@keyframes pd-wall { 0% { opacity:0.9 } 50% { opacity:1 } 100% { opacity:0.85 } }
@keyframes pd-throne { 0% { transform: translateX(-50%) scaleY(1) } 50% { transform: translateX(-50%) scaleY(1.01) } 100% { transform: translateX(-50%) scaleY(0.99) } }
@keyframes pd-figure { 0% { transform: translateX(-50%) translateY(0) rotate(-2deg) } 25% { transform: translateX(-50%) translateY(-1px) rotate(2deg) } 50% { transform: translateX(-50%) translateY(0) rotate(-1deg) } 75% { transform: translateX(-50%) translateY(-1px) rotate(1deg) } 100% { transform: translateX(-50%) translateY(0) rotate(-2deg) } }
@keyframes pd-candle { 0% { opacity:0.8; box-shadow:0 0 15px 4px #c8a060 } 50% { opacity:1; box-shadow:0 0 30px 12px #e0c080 } 100% { opacity:0.9; box-shadow:0 0 20px 6px #c8a060 } }
@keyframes pd-table { 0% { transform: rotate(-5deg) } 50% { transform: rotate(-7deg) } 100% { transform: rotate(-5deg) } }
@keyframes pd-scroll { 0% { transform: rotate(10deg) } 50% { transform: rotate(15deg) } 100% { transform: rotate(10deg) } }

/* Scene 3: prospero-my-daughter – warm interior with fireplace, two figures, rug */
.scn-prospero-my-daughter {
  background:
    linear-gradient(180deg, #1a0a0a 0%, #2a1a10 40%, #3a2010 100%),
    radial-gradient(ellipse at 50% 100%, #3a2010 0%, transparent 70%);
}
.scn-prospero-my-daughter .wall {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(180deg, #1a0a0a 0%, #2a1a10 100%);
  border-radius: 0 0 25% 25% / 0 0 15% 15%;
  box-shadow: inset 0 10px 40px rgba(0,0,0,0.7);
  animation: pm-wall 14s ease-in-out infinite alternate;
}
.scn-prospero-my-daughter .fireplace {
  position: absolute; bottom: 20%; left: 50%; width: 100px; height: 80px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #4a2a1a 0%, #2a1a0a 100%);
  border-radius: 10% 10% 5% 5% / 20% 20% 5% 5%;
  box-shadow: inset 0 -20px 40px #1a0a00;
}
.scn-prospero-my-daughter .fireplace::after {
  content: '';
  position: absolute; bottom: 10%; left: 50%; width: 40px; height: 30px;
  transform: translateX(-50%);
  background: radial-gradient(ellipse, #e0a060 0%, #c08040 40%, #804020 70%, transparent 72%);
  border-radius: 50%;
  animation: pm-fire 1.5s ease-in-out infinite alternate;
}
.scn-prospero-my-daughter .figure-tall {
  position: absolute; bottom: 22%; left: 30%; width: 28px; height: 65px;
  background: linear-gradient(180deg, #1a1a0a 0%, #0a0a00 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pm-tall 7s ease-in-out infinite;
}
.scn-prospero-my-daughter .figure-small {
  position: absolute; bottom: 24%; left: 60%; width: 20px; height: 40px;
  background: linear-gradient(180deg, #1a1a0a 0%, #0a0a00 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pm-small 9s ease-in-out infinite reverse;
}
.scn-prospero-my-daughter .rug {
  position: absolute; bottom: 12%; left: 20%; width: 120px; height: 20px;
  background: linear-gradient(135deg, #5a2a1a 0%, #4a1a0a 50%, #5a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: rotate(2deg);
  animation: pm-rug 18s ease-in-out infinite alternate;
}
.scn-prospero-my-daughter .mantle {
  position: absolute; bottom: 40%; left: 50%; width: 80px; height: 6px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #5a3a2a 0%, #3a1a0a 100%);
  border-radius: 5% 5% 0 0;
  box-shadow: 0 4px 8px rgba(0,0,0,0.5);
}
.scn-prospero-my-daughter .book {
  position: absolute; bottom: 38%; left: 38%; width: 20px; height: 14px;
  background: linear-gradient(180deg, #8a6040 0%, #4a3020 100%);
  border-radius: 5% 5% 10% 10%;
  transform: rotate(-10deg);
  box-shadow: 0 2px 6px rgba(0,0,0,0.4);
  animation: pm-book 12s ease-in-out infinite;
}
@keyframes pm-wall { 0% { opacity:0.9 } 50% { opacity:1 } 100% { opacity:0.85 } }
@keyframes pm-fire { 0% { opacity:0.7; transform: translateX(-50%) scaleY(0.9) } 50% { opacity:1; transform: translateX(-50%) scaleY(1.1) } 100% { opacity:0.8; transform: translateX(-50%) scaleY(0.95) } }
@keyframes pm-tall { 0% { transform: translateX(0) translateY(0) rotate(-1deg) } 25% { transform: translateX(2px) translateY(-1px) rotate(1deg) } 50% { transform: translateX(0) translateY(0) rotate(-1deg) } 75% { transform: translateX(-2px) translateY(-1px) rotate(1deg) } 100% { transform: translateX(0) translateY(0) rotate(-1deg) } }
@keyframes pm-small { 0% { transform: translateX(0) translateY(0) rotate(1deg) } 25% { transform: translateX(-2px) translateY(-1px) rotate(-1deg) } 50% { transform: translateX(0) translateY(0) rotate(1deg) } 75% { transform: translateX(2px) translateY(-1px) rotate(-1deg) } 100% { transform: translateX(0) translateY(0) rotate(1deg) } }
@keyframes pm-rug { 0% { transform: rotate(2deg) } 50% { transform: rotate(4deg) } 100% { transform: rotate(2deg) } }
@keyframes pm-book { 0% { transform: rotate(-10deg) } 50% { transform: rotate(-14deg) } 100% { transform: rotate(-10deg) } }

/* Scene 4: prospero-tale-of-brother – tense dim interior with figure, shadow, candle, chains */
.scn-prospero-tale-of-brother {
  background:
    linear-gradient(180deg, #0a0a14 0%, #1a1420 40%, #2a1a2a 100%),
    radial-gradient(ellipse at 50% 100%, #1a1a2a 0%, transparent 70%);
}
.scn-prospero-tale-of-brother .wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #0a0a14 0%, #1a1420 100%);
  border-radius: 0 0 30% 30% / 0 0 10% 10%;
  box-shadow: inset 0 15px 50px rgba(0,0,0,0.8);
  animation: pt-wall 8s ease-in-out infinite alternate;
}
.scn-prospero-tale-of-brother .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #1a1410 0%, #0a0800 100%);
  border-radius: 60% 40% 0 0 / 40% 60% 0 0;
}
.scn-prospero-tale-of-brother .figure-teller {
  position: absolute; bottom: 22%; left: 50%; width: 28px; height: 58px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #0a0a14 0%, #000 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pt-teller 4s ease-in-out infinite;
}
.scn-prospero-tale-of-brother .shadow-hand {
  position: absolute; bottom: 40%; left: 30%; width: 40px; height: 60px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 30% 30% / 40% 40% 20% 20%;
  transform: rotate(-30deg);
  opacity: 0.7;
  animation: pt-hand 2.5s ease-in-out infinite alternate;
}
.scn-prospero-tale-of-brother .candle {
  position: absolute; bottom: 28%; left: 42%; width: 6px; height: 16px;
  background: linear-gradient(180deg, #a08050 0%, #604020 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 0 0 20px 6px #a08050, 0 0 40px 12px rgba(160,128,80,0.5);
  animation: pt-candle 1.6s ease-in-out infinite alternate;
}
.scn-prospero-tale-of-brother .window-bars {
  position: absolute; bottom: 35%; left: 20%; width: 50px; height: 70px;
  border: 4px solid #2a2a3a;
  border-radius: 10% 10% 5% 5%;
  background: rgba(10,10,20,0.5);
  box-shadow: inset 0 0 20px rgba(0,0,0,0.6);
  animation: pt-bars 9s ease-in-out infinite;
}
.scn-prospero-tale-of-brother .chain {
  position: absolute; bottom: 15%; left: 40%; width: 4px; height: 30px;
  background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%);
  border-radius: 10% 10% 0 0;
  transform: rotate(5deg);
  animation: pt-chain 3s ease-in-out infinite;
}
@keyframes pt-wall { 0% { opacity:0.85 } 50% { opacity:1 } 100% { opacity:0.8 } }
@keyframes pt-teller { 0% { transform: translateX(-50%) translateY(0) rotate(-3deg) } 25% { transform: translateX(-50%) translateY(-2px) rotate(2deg) } 50% { transform: translateX(-50%) translateY(0) rotate(-1deg) } 75% { transform: translateX(-50%) translateY(-2px) rotate(3deg) } 100% { transform: translateX(-50%) translateY(0) rotate(-3deg) } }
@keyframes pt-hand { 0% { transform: rotate(-30deg) scale(1) } 50% { transform: rotate(-20deg) scale(1.05) } 100% { transform: rotate(-35deg) scale(0.95) } }
@keyframes pt-candle { 0% { opacity:0.6; box-shadow:0 0 10px 2px #a08050 } 50% { opacity:1; box-shadow:0 0 30px 12px #c8a060 } 100% { opacity:0.7; box-shadow:0 0 15px 4px #a08050 } }
@keyframes pt-bars { 0% { opacity:0.7 } 50% { opacity:1 } 100% { opacity:0.8 } }
@keyframes pt-chain { 0% { transform: rotate(5deg) } 50% { transform: rotate(8deg) } 100% { transform: rotate(5deg) } }

.scn-prospero-brother-usurpation {
  background: linear-gradient(180deg, #2a1f1f 0%, #1a1212 40%, #100a0a 100%),
              radial-gradient(ellipse at 70% 60%, #3a2a2a 0%, transparent 60%);
}
.scn-prospero-brother-usurpation .bg-walls {
  position: absolute; inset: 0 0 0 0;
  background: linear-gradient(90deg, #1e1414 0%, #2a1f1f 30%, #1e1414 70%, #120c0c 100%);
  animation: pu-walls 10s ease-in-out infinite alternate;
}
.scn-prospero-brother-usurpation .candle {
  position: absolute; bottom: 30%; left: 20%;
  width: 8px; height: 40px;
  background: linear-gradient(180deg, #f0c878 0%, #b08040 30%, #604020 100%);
  border-radius: 2px 2px 4px 4px;
  box-shadow: 0 0 6px rgba(180,100,30,0.5);
  animation: pu-candle 3s ease-in-out infinite;
}
.scn-prospero-brother-usurpation .candle-glow {
  position: absolute; bottom: 35%; left: 17%;
  width: 80px; height: 80px;
  background: radial-gradient(circle, rgba(255,180,60,0.6) 0%, rgba(255,140,0,0.2) 40%, transparent 70%);
  border-radius: 50%;
  filter: blur(10px);
  animation: pu-glow 2.5s ease-in-out infinite alternate;
}
.scn-prospero-brother-usurpation .table {
  position: absolute; bottom: 15%; left: 10%; right: 10%;
  height: 20%;
  background: linear-gradient(180deg, #4a3020 0%, #2a1a10 100%);
  border-radius: 4px 4px 0 0;
  box-shadow: 0 -4px 12px rgba(0,0,0,0.6);
  transform: perspective(500px) rotateX(8deg);
  animation: pu-table 6s ease-in-out infinite alternate;
}
.scn-prospero-brother-usurpation .book {
  position: absolute; bottom: 28%; left: 30%;
  width: 40px; height: 30px;
  background: linear-gradient(135deg, #6a4a3a 0%, #3a2a1a 50%, #4a3020 100%);
  border-radius: 3px;
  box-shadow: 2px 2px 6px rgba(0,0,0,0.5);
  transform: rotate(-10deg) scale(1);
  animation: pu-book 8s ease-in-out infinite;
}
.scn-prospero-brother-usurpation .figure-prospero {
  position: absolute; bottom: 12%; left: 50%;
  width: 50px; height: 110px;
  background: radial-gradient(ellipse at 30% 30%, #3a2a22 0%, #1a1210 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: pu-figure 4s ease-in-out infinite;
}
.scn-prospero-brother-usurpation .shadow-brother {
  position: absolute; bottom: 10%; right: 10%;
  width: 45px; height: 100px;
  background: linear-gradient(180deg, rgba(10,5,5,0.8) 0%, rgba(0,0,0,0.6) 100%);
  border-radius: 40% 40% 20% 20% / 50% 50% 20% 20%;
  opacity: 0.7;
  animation: pu-shadow 7s ease-in-out infinite alternate;
}
.scn-prospero-brother-usurpation .curtain {
  position: absolute; top: 0; left: 0; right: 0;
  height: 15%;
  background: linear-gradient(180deg, #3a1a1a 0%, #1a0a0a 100%);
  border-radius: 0 0 40% 40%;
  filter: blur(2px);
  animation: pu-curtain 12s ease-in-out infinite alternate;
}

@keyframes pu-walls {
  0% { opacity: 0.8; transform: scaleX(1); }
  50% { opacity: 1; transform: scaleX(1.02); }
  100% { opacity: 0.85; transform: scaleX(0.98); }
}
@keyframes pu-candle {
  0% { transform: translateY(0) rotate(-1deg); opacity: 0.9; }
  50% { transform: translateY(-2px) rotate(1deg); opacity: 1; }
  100% { transform: translateY(0) rotate(0); opacity: 0.9; }
}
@keyframes pu-glow {
  0% { transform: scale(1) rotate(0); opacity: 0.6; }
  50% { transform: scale(1.1) rotate(5deg); opacity: 0.8; }
  100% { transform: scale(0.95) rotate(-2deg); opacity: 0.5; }
}
@keyframes pu-table {
  0% { transform: perspective(500px) rotateX(8deg) translateY(0); }
  50% { transform: perspective(500px) rotateX(8deg) translateY(-2px); }
  100% { transform: perspective(500px) rotateX(8deg) translateY(0); }
}
@keyframes pu-book {
  0% { transform: rotate(-10deg) scale(1) translateX(0); }
  50% { transform: rotate(-8deg) scale(1.02) translateX(2px); }
  100% { transform: rotate(-10deg) scale(1) translateX(0); }
}
@keyframes pu-figure {
  0% { transform: translateX(0) translateY(0) rotate(-2deg); }
  30% { transform: translateX(-1px) translateY(-3px) rotate(1deg); }
  60% { transform: translateX(1px) translateY(-2px) rotate(-1deg); }
  100% { transform: translateX(0) translateY(0) rotate(0); }
}
@keyframes pu-shadow {
  0% { transform: scaleY(1) translateX(0); opacity: 0.6; }
  50% { transform: scaleY(1.05) translateX(3px); opacity: 0.7; }
  100% { transform: scaleY(0.95) translateX(-2px); opacity: 0.5; }
}
@keyframes pu-curtain {
  0% { transform: translateY(0) scaleY(1); }
  50% { transform: translateY(-5px) scaleY(1.05); }
  100% { transform: translateY(0) scaleY(0.95); }
}

/* prospero-neglect-and-evil */
.scn-prospero-neglect-and-evil {
  background: linear-gradient(180deg, #1a1810 0%, #0f0d08 50%, #080605 100%),
              radial-gradient(ellipse at 30% 40%, #2a231a 0%, transparent 60%);
}
.scn-prospero-neglect-and-evil .bg-depth {
  position: absolute; inset: 0 0 0 0;
  background: linear-gradient(90deg, #141210 0%, #1e1a12 30%, #141210 70%, #0a0805 100%);
  animation: ne-depth 14s ease-in-out infinite alternate;
}
.scn-prospero-neglect-and-evil .bookshelf {
  position: absolute; bottom: 20%; left: 5%; right: 5%;
  height: 60%;
  background: linear-gradient(180deg, #2a1f14 0%, #1a120a 40%, #0f0a05 100%);
  border-radius: 4px;
  box-shadow: inset 0 4px 8px rgba(0,0,0,0.6);
  display: flex;
  animation: ne-shelf 20s ease-in-out infinite alternate;
}
.scn-prospero-neglect-and-evil .desk {
  position: absolute; bottom: 10%; left: 20%; right: 20%;
  height: 18%;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a120a 100%);
  border-radius: 4px 4px 0 0;
  transform: perspective(400px) rotateX(10deg);
  animation: ne-desk 8s ease-in-out infinite;
}
.scn-prospero-neglect-and-evil .lamp {
  position: absolute; bottom: 38%; left: 30%;
  width: 12px; height: 50px;
  background: linear-gradient(180deg, #b08850 0%, #604020 100%);
  border-radius: 2px 2px 8px 8px;
  animation: ne-lamp 3s ease-in-out infinite;
}
.scn-prospero-neglect-and-evil .lamp-glow {
  position: absolute; bottom: 40%; left: 25%;
  width: 100px; height: 100px;
  background: radial-gradient(circle, rgba(230,200,100,0.5) 0%, rgba(200,160,60,0.2) 30%, transparent 70%);
  border-radius: 50%;
  filter: blur(15px);
  animation: ne-glow 2.8s ease-in-out infinite alternate;
}
.scn-prospero-neglect-and-evil .shadow-creeping {
  position: absolute; bottom: 5%; left: 0; right: 0;
  height: 30%;
  background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,0.5) 100%);
  animation: ne-shadow 12s ease-in-out infinite alternate;
}
.scn-prospero-neglect-and-evil .papers {
  position: absolute; bottom: 22%; left: 35%;
  width: 50px; height: 40px;
  background: linear-gradient(135deg, #d4c8a0 0%, #b8a88a 50%, #a09878 100%);
  border-radius: 2px;
  box-shadow: 2px 2px 4px rgba(0,0,0,0.3);
  transform: rotate(5deg);
  animation: ne-papers 9s ease-in-out infinite;
}
.scn-prospero-neglect-and-evil .inkwell {
  position: absolute; bottom: 25%; left: 28%;
  width: 16px; height: 20px;
  background: linear-gradient(180deg, #2a2020 0%, #0a0808 100%);
  border-radius: 50% 50% 30% 30%;
  animation: ne-ink 5s ease-in-out infinite;
}

@keyframes ne-depth {
  0% { opacity: 0.9; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.01); }
  100% { opacity: 0.85; transform: scale(0.99); }
}
@keyframes ne-shelf {
  0% { transform: translateY(0) scaleY(1); }
  50% { transform: translateY(-2px) scaleY(1.02); }
  100% { transform: translateY(0) scaleY(0.98); }
}
@keyframes ne-desk {
  0% { transform: perspective(400px) rotateX(10deg) translateY(0); }
  50% { transform: perspective(400px) rotateX(10deg) translateY(-1px); }
  100% { transform: perspective(400px) rotateX(10deg) translateY(0); }
}
@keyframes ne-lamp {
  0% { transform: translateY(0) rotate(-2deg); }
  50% { transform: translateY(-4px) rotate(3deg); }
  100% { transform: translateY(0) rotate(0); }
}
@keyframes ne-glow {
  0% { transform: scale(1) rotate(0); opacity: 0.5; }
  50% { transform: scale(1.15) rotate(4deg); opacity: 0.7; }
  100% { transform: scale(0.9) rotate(-3deg); opacity: 0.4; }
}
@keyframes ne-shadow {
  0% { transform: translateY(0) scaleY(1); opacity: 0.4; }
  50% { transform: translateY(5px) scaleY(1.1); opacity: 0.6; }
  100% { transform: translateY(0) scaleY(0.9); opacity: 0.3; }
}
@keyframes ne-papers {
  0% { transform: rotate(5deg) translateX(0); }
  50% { transform: rotate(8deg) translateX(3px); }
  100% { transform: rotate(5deg) translateX(0); }
}
@keyframes ne-ink {
  0% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-1px) scale(1.05); }
  100% { transform: translateY(0) scale(0.95); }
}

/* prospero-absolute-milan */
.scn-prospero-absolute-milan {
  background: linear-gradient(180deg, #1a1410 0%, #0f0a08 50%, #050302 100%),
              radial-gradient(ellipse at 50% 30%, #2a1e14 0%, transparent 70%);
}
.scn-prospero-absolute-milan .bg-throne {
  position: absolute; inset: 0 0 0 0;
  background: linear-gradient(90deg, #1a120c 0%, #261c14 30%, #1a120c 70%, #0e0805 100%);
  animation: am-bg 16s ease-in-out infinite alternate;
}
.scn-prospero-absolute-milan .column-left,
.scn-prospero-absolute-milan .column-right {
  position: absolute; bottom: 0;
  width: 12%; height: 80%;
  background: linear-gradient(180deg, #2a2018 0%, #1a100a 100%);
  border-radius: 4px;
  box-shadow: inset -4px 0 8px rgba(0,0,0,0.5);
}
.scn-prospero-absolute-milan .column-left {
  left: 8%;
  animation: am-col-left 22s ease-in-out infinite alternate;
}
.scn-prospero-absolute-milan .column-right {
  right: 8%;
  animation: am-col-right 22s ease-in-out infinite alternate;
}
.scn-prospero-absolute-milan .throne {
  position: absolute; bottom: 20%; left: 35%; right: 35%;
  height: 40%;
  background: linear-gradient(180deg, #3a2518 0%, #1a100a 60%, #0a0502 100%);
  border-radius: 20% 20% 10% 10% / 40% 40% 10% 10%;
  box-shadow: 0 -10px 20px rgba(0,0,0,0.7);
  animation: am-throne 8s ease-in-out infinite;
}
.scn-prospero-absolute-milan .crown {
  position: absolute; top: 22%; left: 40%; right: 40%;
  height: 8%;
  background: linear-gradient(180deg, #b89850 0%, #8a6a30 50%, #4a3018 100%);
  border-radius: 50% 50% 10% 10% / 80% 80% 10% 10%;
  box-shadow: 0 0 12px rgba(180,130,50,0.6);
  animation: am-crown 5s ease-in-out infinite alternate;
}
.scn-prospero-absolute-milan .figure-prospero-standing {
  position: absolute; bottom: 10%; left: 20%;
  width: 60px; height: 140px;
  background: radial-gradient(ellipse at 30% 30%, #3a2820 0%, #1a100a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: am-figure 4s ease-in-out infinite;
}
.scn-prospero-absolute-milan .drapery {
  position: absolute; top: 0; left: 0; right: 0;
  height: 20%;
  background: linear-gradient(180deg, #2a1a12 0%, #100a06 100%);
  border-radius: 0 0 60% 60%;
  filter: blur(3px);
  animation: am-drape 18s ease-in-out infinite alternate;
}
.scn-prospero-absolute-milan .floor {
  position: absolute; bottom: 0; left: 0; right: 0;
  height: 15%;
  background: linear-gradient(180deg, #1a1210 0%, #0a0605 100%);
  transform: perspective(300px) rotateX(30deg);
  animation: am-floor 10s ease-in-out infinite alternate;
}

@keyframes am-bg {
  0% { opacity: 0.9; }
  50% { opacity: 1; }
  100% { opacity: 0.8; }
}
@keyframes am-col-left {
  0% { transform: translateX(0) scaleY(1); }
  50% { transform: translateX(-2px) scaleY(1.02); }
  100% { transform: translateX(0) scaleY(0.98); }
}
@keyframes am-col-right {
  0% { transform: translateX(0) scaleY(1); }
  50% { transform: translateX(2px) scaleY(1.02); }
  100% { transform: translateX(0) scaleY(0.98); }
}
@keyframes am-throne {
  0% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-3px) scale(1.01); }
  100% { transform: translateY(0) scale(0.99); }
}
@keyframes am-crown {
  0% { transform: translateY(0) rotate(-2deg); opacity: 0.8; }
  50% { transform: translateY(-2px) rotate(3deg); opacity: 1; }
  100% { transform: translateY(0) rotate(0); opacity: 0.9; }
}
@keyframes am-figure {
  0% { transform: translateX(0) translateY(0) rotate(-1deg); }
  30% { transform: translateX(-2px) translateY(-4px) rotate(2deg); }
  60% { transform: translateX(2px) translateY(-2px) rotate(-1deg); }
  100% { transform: translateX(0) translateY(0) rotate(0); }
}
@keyframes am-drape {
  0% { transform: translateY(0) scaleY(1); }
  50% { transform: translateY(-6px) scaleY(1.08); }
  100% { transform: translateY(0) scaleY(0.92); }
}
@keyframes am-floor {
  0% { transform: perspective(300px) rotateX(30deg) translateY(0); }
  50% { transform: perspective(300px) rotateX(30deg) translateY(-2px); }
  100% { transform: perspective(300px) rotateX(30deg) translateY(0); }
}

/* prospero-brother-plot */
.scn-prospero-brother-plot {
  background: linear-gradient(180deg, #0f0a08 0%, #050302 40%, #000000 100%),
              radial-gradient(ellipse at 40% 50%, #1a100a 0%, transparent 60%);
}
.scn-prospero-brother-plot .bg-plot {
  position: absolute; inset: 0 0 0 0;
  background: linear-gradient(90deg, #0a0605 0%, #14100a 30%, #0a0605 70%, #020101 100%);
  animation: bp-bg 12s ease-in-out infinite alternate;
}
.scn-prospero-brother-plot .table-plot {
  position: absolute; bottom: 8%; left: 10%; right: 10%;
  height: 30%;
  background: linear-gradient(180deg, #2a1a12 0%, #0e0805 100%);
  border-radius: 8px 8px 0 0;
  box-shadow: 0 -6px 18px rgba(0,0,0,0.7);
  transform: perspective(500px) rotateX(6deg);
  animation: bp-table 9s ease-in-out infinite;
}
.scn-prospero-brother-plot .map {
  position: absolute; bottom: 28%; left: 25%; right: 25%;
  height: 18%;
  background: linear-gradient(135deg, #8a7a5a 0%, #6a5a42 50%, #4a3a28 100%);
  border-radius: 4px;
  box-shadow: 2px 2px 4px rgba(0,0,0,0.4);
  transform: rotate(-3deg);
  animation: bp-map 11s ease-in-out infinite alternate;
}
.scn-prospero-brother-plot .dagger {
  position: absolute; bottom: 35%; left: 45%;
  width: 6px; height: 40px;
  background: linear-gradient(180deg, #b8a880 0%, #605040 60%, #2a1a10 100%);
  border-radius: 2px;
  transform: rotate(15deg);
  animation: bp-dagger 4s ease-in-out infinite;
}
.scn-prospero-brother-plot .figure-antonio {
  position: absolute; bottom: 5%; left: 30%;
  width: 50px; height: 110px;
  background: radial-gradient(ellipse at 30% 30%, #3a2218 0%, #1a0c06 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: bp-antonio 5s ease-in-out infinite;
}
.scn-prospero-brother-plot .figure-king {
  position: absolute; bottom: 5%; right: 30%;
  width: 55px; height: 120px;
  background: radial-gradient(ellipse at 30% 30%, #4a3020 0%, #2a1a0e 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: bp-king 5.5s ease-in-out infinite;
}
.scn-prospero-brother-plot .candle-plot {
  position: absolute; bottom: 40%; left: 48%;
  width: 8px; height: 30px;
  background: linear-gradient(180deg, #f0c060 0%, #b08030 30%, #604018 100%);
  border-radius: 2px 2px 4px 4px;
  animation: bp-candle 2.5s ease-in-out infinite;
}
.scn-prospero-brother-plot .candle-glow-plot {
  position: absolute; bottom: 42%; left: 43%;
  width: 70px; height: 70px;
  background: radial-gradient(circle, rgba(255,180,50,0.5) 0%, rgba(200,130,30,0.15) 40%, transparent 70%);
  border-radius: 50%;
  filter: blur(12px);
  animation: bp-glow 3s ease-in-out infinite alternate;
}

@keyframes bp-bg {
  0% { opacity: 0.9; }
  50% { opacity: 1; }
  100% { opacity: 0.75; }
}
@keyframes bp-table {
  0% { transform: perspective(500px) rotateX(6deg) translateY(0); }
  50% { transform: perspective(500px) rotateX(6deg) translateY(-2px); }
  100% { transform: perspective(500px) rotateX(6deg) translateY(0); }
}
@keyframes bp-map {
  0% { transform: rotate(-3deg) translateX(0) scale(1); }
  50% { transform: rotate(-1deg) translateX(2px) scale(1.02); }
  100% { transform: rotate(-3deg) translateX(0) scale(0.98); }
}
@keyframes bp-dagger {
  0% { transform: rotate(15deg) translateY(0); }
  50% { transform: rotate(18deg) translateY(-3px); }
  100% { transform: rotate(15deg) translateY(0); }
}
@keyframes bp-antonio {
  0% { transform: translateX(0) translateY(0) rotate(-2deg); }
  30% { transform: translateX(-3px) translateY(-5px) rotate(2deg); }
  60% { transform: translateX(2px) translateY(-2px) rotate(-1deg); }
  100% { transform: translateX(0) translateY(0) rotate(0); }
}
@keyframes bp-king {
  0% { transform: translateX(0) translateY(0) rotate(2deg); }
  30% { transform: translateX(3px) translateY(-4px) rotate(-2deg); }
  60% { transform: translateX(-2px) translateY(-3px) rotate(1deg); }
  100% { transform: translateX(0) translateY(0) rotate(0); }
}
@keyframes bp-candle {
  0% { transform: translateY(0) rotate(-2deg); opacity: 0.8; }
  50% { transform: translateY(-3px) rotate(3deg); opacity: 1; }
  100% { transform: translateY(0) rotate(0); opacity: 0.85; }
}
@keyframes bp-glow {
  0% { transform: scale(1) rotate(0); opacity: 0.4; }
  50% { transform: scale(1.2) rotate(5deg); opacity: 0.7; }
  100% { transform: scale(0.9) rotate(-2deg); opacity: 0.3; }
}

/* Scene: alonso-grief-for-son – interior cutaway, garments */
.scn-alonso-grief-for-son {
  background: linear-gradient(135deg, #fce8c8 0%, #d4b896 30%, #b09270 100%),
              radial-gradient(ellipse at 30% 20%, #fff4e0 0%, transparent 60%);
}
.scn-alonso-grief-for-son .bg-wall { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #e8d4b0 0%, #c8ac84 100%); }
.scn-alonso-grief-for-son .window-glow { position:absolute; top:8%; left:20%; width:35%; height:40%; background: radial-gradient(ellipse at 50% 30%, #fff8e0 0%, #e8d0a0 40%, transparent 70%); box-shadow: inset 0 0 40px 10px rgba(255,200,100,0.3); animation: ags-win 5s ease-in-out infinite alternate; }
.scn-alonso-grief-for-son .window-frame { position:absolute; top:8%; left:20%; width:35%; height:40%; border: 6px solid #8a7050; border-radius: 4px; box-shadow: 0 4px 12px rgba(0,0,0,0.3); animation: ags-frame 8s infinite; }
.scn-alonso-grief-for-son .figure-alonso { position:absolute; bottom:12%; left:45%; width:20%; height:55%; background: linear-gradient(180deg, #4a3a28 0%, #2e2218 100%); border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%; transform-origin: bottom center; animation: ags-figure 3s ease-in-out infinite; }
.scn-alonso-grief-for-son .garment { position:absolute; bottom:16%; left:38%; width:12%; height:28%; background: linear-gradient(180deg, #c8553d 0%, #a04028 100%); border-radius: 10% 10% 5% 5%; box-shadow: 0 4px 8px rgba(0,0,0,0.4); transform-origin: top; animation: ags-garment 4s ease-in-out infinite alternate; }
.scn-alonso-grief-for-son .shadow-cast { position:absolute; bottom:0; left:30%; width:40%; height:8%; background: linear-gradient(180deg, rgba(0,0,0,0.2) 0%, transparent 100%); filter: blur(4px); animation: ags-shadow 10s linear infinite; }
.scn-alonso-grief-for-son .dust-mote { position:absolute; top:20%; left:10%; width:4px; height:4px; background: rgba(255,220,160,0.6); border-radius:50%; box-shadow: 0 0 6px 2px rgba(255,220,160,0.4); animation: ags-dust 12s ease-in-out infinite alternate; }
@keyframes ags-win { 0% { opacity:0.8; transform:scaleY(1); } 50% { opacity:1; transform:scaleY(1.02); } 100% { opacity:0.9; transform:scaleY(1); } }
@keyframes ags-frame { 0%,100% { transform:rotate(0deg); } 50% { transform:rotate(0.5deg); } }
@keyframes ags-figure { 0%,100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-2px) rotate(-1deg); } }
@keyframes ags-garment { 0% { transform: rotate(-2deg) scaleX(1); } 50% { transform: rotate(2deg) scaleX(1.02); } 100% { transform: rotate(-1deg) scaleX(0.98); } }
@keyframes ags-shadow { 0%,100% { opacity:0.2; transform:scaleX(1); } 50% { opacity:0.4; transform:scaleX(1.1); } }
@keyframes ags-dust { 0% { transform: translate(0,0) scale(1); opacity:0.6; } 50% { transform: translate(60px,-20px) scale(1.5); opacity:1; } 100% { transform: translate(120px,-40px) scale(1); opacity:0.3; } }

/* Scene: francisco-hopeful-report – seascape with swimmer */
.scn-francisco-hopeful-report {
  background: linear-gradient(180deg, #87CEEB 0%, #f0d090 40%, #b8c8e0 100%),
              radial-gradient(ellipse at 50% 10%, #fff8e0 0%, transparent 50%);
}
.scn-francisco-hopeful-report .sky-glow { position:absolute; top:0; left:0; right:0; height:55%; background: linear-gradient(180deg, #d8eaff 0%, #b8d8f0 100%); animation: fhr-sky 15s ease-in-out infinite alternate; }
.scn-francisco-hopeful-report .sea { position:absolute; bottom:0; left:0; right:0; height:50%; background: linear-gradient(180deg, #2d7ab8 0%, #1a5a8a 100%); border-radius: 50% 40% 0 0 / 20% 15% 0 0; }
.scn-francisco-hopeful-report .wave-a { position:absolute; bottom:40%; left:0; right:0; height:12%; background: linear-gradient(180deg, rgba(255,255,255,0.3) 0%, transparent 100%); border-radius: 40% 60% 0 0 / 80% 70% 0 0; animation: fhr-wave1 5s ease-in-out infinite alternate; }
.scn-francisco-hopeful-report .wave-b { position:absolute; bottom:30%; left:0; right:0; height:10%; background: linear-gradient(180deg, rgba(255,255,255,0.2) 0%, transparent 100%); border-radius: 60% 40% 0 0 / 70% 80% 0 0; animation: fhr-wave2 6s ease-in-out infinite alternate-reverse; }
.scn-francisco-hopeful-report .sun-disc { position:absolute; top:15%; right:20%; width:10%; height:10%; background: radial-gradient(circle, #ffe680 0%, #ffd040 40%, transparent 70%); border-radius:50%; box-shadow: 0 0 60px 20px #ffd040; animation: fhr-sun 8s ease-in-out infinite; }
.scn-francisco-hopeful-report .figure-swimmer { position:absolute; bottom:32%; left:50%; width:8%; height:18%; background: linear-gradient(180deg, #2c2a2a 0%, #1a1818 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: fhr-swim 3s ease-in-out infinite; }
.scn-francisco-hopeful-report .spray { position:absolute; bottom:30%; left:48%; width:4%; height:6%; background: radial-gradient(circle, rgba(255,255,255,0.7) 0%, transparent 100%); filter: blur(2px); animation: fhr-spray 1.5s ease-out infinite; }
.scn-francisco-hopeful-report .cloud-sweep { position:absolute; top:8%; left:-10%; width:120%; height:5%; background: linear-gradient(180deg, rgba(255,255,255,0.4) 0%, transparent 100%); filter: blur(6px); animation: fhr-cloud 30s linear infinite; }
@keyframes fhr-sky { 0%,100% { opacity:0.9; } 50% { opacity:1; } }
@keyframes fhr-wave1 { 0% { transform: translateX(0) scaleY(1); } 50% { transform: translateX(5%) scaleY(1.1); } 100% { transform: translateX(-5%) scaleY(0.95); } }
@keyframes fhr-wave2 { 0% { transform: translateX(0) scaleY(0.9); } 50% { transform: translateX(-8%) scaleY(1.15); } 100% { transform: translateX(5%) scaleY(1); } }
@keyframes fhr-sun { 0%,100% { transform: scale(1); opacity:0.8; } 50% { transform: scale(1.05); opacity:1; } }
@keyframes fhr-swim { 0% { transform: translateX(0) translateY(0) rotate(-5deg); } 25% { transform: translateX(6px) translateY(-3px) rotate(5deg); } 50% { transform: translateX(-4px) translateY(0) rotate(-2deg); } 75% { transform: translateX(8px) translateY(-2px) rotate(3deg); } 100% { transform: translateX(0) translateY(0) rotate(0deg); } }
@keyframes fhr-spray { 0% { opacity:1; transform: scale(1); } 100% { opacity:0; transform: scale(2) translateY(-10px); } }
@keyframes fhr-cloud { 0% { transform: translateX(0); } 100% { transform: translateX(30%); } }

/* Scene: antonio-blames-alonso – accusation, two figures */
.scn-antonio-blames-alonso {
  background: linear-gradient(135deg, #e8d0a0 0%, #c8ac70 40%, #a08850 100%),
              radial-gradient(ellipse at 60% 30%, #ffe8b0 0%, transparent 50%);
}
.scn-antonio-blames-alonso .floor-plan { position:absolute; bottom:0; left:0; right:0; height:20%; background: linear-gradient(180deg, #b09068 0%, #8a7050 100%); border-radius: 30% 70% 0 0 / 40% 60% 0 0; }
.scn-antonio-blames-alonso .wall-back { position:absolute; top:0; left:0; right:0; height:85%; background: linear-gradient(180deg, #d4bc94 0%, #b0946a 100%); }
.scn-antonio-blames-alonso .figure-antonio { position:absolute; bottom:15%; left:30%; width:16%; height:50%; background: linear-gradient(180deg, #3a2a18 0%, #1e140a 100%); border-radius: 40% 40% 30% 30% / 55% 55% 30% 30%; transform-origin: bottom center; animation: aba-fig1 4s ease-in-out infinite; }
.scn-antonio-blames-alonso .figure-alonso-receive { position:absolute; bottom:15%; right:30%; width:16%; height:50%; background: linear-gradient(180deg, #4a3820 0%, #2c1c10 100%); border-radius: 40% 40% 30% 30% / 55% 55% 30% 30%; transform-origin: bottom center; animation: aba-fig2 4s ease-in-out infinite 0.5s; }
.scn-antonio-blames-alonso .shadow-antonio { position:absolute; bottom:0; left:22%; width:14%; height:6%; background: rgba(0,0,0,0.3); filter: blur(3px); animation: aba-shad1 5s ease-in-out infinite; }
.scn-antonio-blames-alonso .shadow-alonso { position:absolute; bottom:0; right:22%; width:14%; height:6%; background: rgba(0,0,0,0.3); filter: blur(3px); animation: aba-shad2 5s ease-in-out infinite 0.8s; }
.scn-antonio-blames-alonso .accusing-hand { position:absolute; bottom:40%; left:35%; width:10%; height:12%; background: linear-gradient(90deg, #2c1c10 0%, #3a2818 100%); border-radius: 40% 40% 20% 20% / 60% 60% 30% 30%; transform-origin: bottom left; animation: aba-hand 2s ease-in-out infinite; }
@keyframes aba-fig1 { 0%,100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-4px) rotate(3deg); } }
@keyframes aba-fig2 { 0%,100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-3px) rotate(-2deg); } }
@keyframes aba-shad1 { 0%,100% { transform: scaleX(1); opacity:0.3; } 50% { transform: scaleX(1.2); opacity:0.5; } }
@keyframes aba-shad2 { 0%,100% { transform: scaleX(1); opacity:0.3; } 50% { transform: scaleX(1.1); opacity:0.4; } }
@keyframes aba-hand { 0%,100% { transform: rotate(-20deg) scaleX(1); } 50% { transform: rotate(10deg) scaleX(1.2); } }

/* Scene: gonzalo-rebukes-antonio – medical, close-up */
.scn-gonzalo-rebukes-antonio {
  background: linear-gradient(180deg, #d4c0a0 0%, #b0906a 40%, #8a6e4a 100%),
              radial-gradient(ellipse at 40% 50%, #fff0d0 0%, transparent 60%);
}
.scn-gonzalo-rebukes-antonio .bg-cloth { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #c8ac80 0%, #a08050 100%); }
.scn-gonzalo-rebukes-antonio .table-edge { position:absolute; bottom:20%; left:20%; right:20%; height:10%; background: linear-gradient(180deg, #6a5240 0%, #4a3828 100%); border-radius: 4px; box-shadow: 0 2px 8px rgba(0,0,0,0.4); }
.scn-gonzalo-rebukes-antonio .figure-gonzalo { position:absolute; bottom:20%; left:15%; width:20%; height:50%; background: linear-gradient(180deg, #3a2818 0%, #1e140a 100%); border-radius: 40% 40% 30% 30% / 55% 55% 30% 30%; transform-origin: bottom center; animation: gra-fig1 5s ease-in-out infinite; }
.scn-gonzalo-rebukes-antonio .figure-antonio-wounded { position:absolute; bottom:20%; right:20%; width:18%; height:45%; background: linear-gradient(180deg, #4a3020 0%, #2c1c10 100%); border-radius: 40% 40% 30% 30% / 55% 55% 30% 30%; animation: gra-fig2 5s ease-in-out infinite 0.6s; }
.scn-gonzalo-rebukes-antonio .hand-plaster { position:absolute; bottom:22%; left:30%; width:12%; height:14%; background: linear-gradient(180deg, #c07040 0%, #a05030 100%); border-radius: 50% 30% 20% 20% / 60% 40% 30% 30%; transform-origin: bottom center; animation: gra-hand 3s ease-in-out infinite alternate; }
.scn-gonzalo-rebukes-antonio .wound-bandage { position:absolute; bottom:30%; right:22%; width:10%; height:8%; background: linear-gradient(180deg, #e0c8a0 0%, #b89870 100%); border-radius: 4px; box-shadow: inset 0 1px 4px rgba(0,0,0,0.3); animation: gra-band 4s ease-in-out infinite; }
.scn-gonzalo-rebukes-antonio .lamp-glow { position:absolute; top:10%; left:45%; width:10%; height:20%; background: radial-gradient(ellipse at 50% 0%, #ffe8a0 0%, transparent 70%); animation: gra-lamp 6s ease-in-out infinite alternate; }
@keyframes gra-fig1 { 0%,100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-2px) rotate(-2deg); } }
@keyframes gra-fig2 { 0%,100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-2px) rotate(1deg); } }
@keyframes gra-hand { 0% { transform: translate(0,0) rotate(-10deg); } 50% { transform: translate(5px,-3px) rotate(5deg); } 100% { transform: translate(10px,-6px) rotate(0deg); } }
@keyframes gra-band { 0%,100% { opacity:0.8; transform: scaleX(1); } 50% { opacity:1; transform: scaleX(1.05); } }
@keyframes gra-lamp { 0%,100% { opacity:0.7; transform: scaleY(1); } 50% { opacity:1; transform: scaleY(1.1); } }

.scn-miranda-defends-ferdinand {
  background: linear-gradient(180deg, #f7e8c8 0%, #c8d6e0 50%, #a0b4c8 100%), radial-gradient(ellipse at 30% 20%, #fff8e0 0%, transparent 60%);
}
.scn-miranda-defends-ferdinand .sky {
  position: absolute; inset: 0 0 60% 0; background: linear-gradient(180deg, transparent 0%, rgba(255,248,224,0.3) 100%); animation: mdef-sky 12s ease-in-out infinite alternate;
}
.scn-miranda-defends-ferdinand .sun {
  position: absolute; top: 8%; left: 25%; width: 60px; height: 60px; background: radial-gradient(circle, #ffd680 0%, #ffb040 40%, transparent 70%); border-radius: 50%; box-shadow: 0 0 40px 20px rgba(255,214,128,0.5); animation: mdef-sun 6s ease-in-out infinite alternate;
}
.scn-miranda-defends-ferdinand .arch {
  position: absolute; bottom: 40%; left: 50%; transform: translateX(-50%); width: 160px; height: 100px; background: linear-gradient(180deg, #c4a882 0%, #8a7458 100%); border-radius: 50% 50% 0 0 / 80% 80% 0 0; box-shadow: 0 -4px 20px rgba(0,0,0,0.3); animation: mdef-arch 10s ease-in-out infinite alternate;
}
.scn-miranda-defends-ferdinand .col-left {
  position: absolute; bottom: 40%; left: 30%; width: 18px; height: 60px; background: linear-gradient(180deg, #d4b88a 0%, #8a6a4a 100%); border-radius: 4px; box-shadow: 2px 0 8px rgba(0,0,0,0.2); animation: mdef-col-l 8s ease-in-out infinite alternate;
}
.scn-miranda-defends-ferdinand .col-right {
  position: absolute; bottom: 40%; right: 30%; width: 18px; height: 60px; background: linear-gradient(180deg, #d4b88a 0%, #8a6a4a 100%); border-radius: 4px; box-shadow: -2px 0 8px rgba(0,0,0,0.2); animation: mdef-col-r 8s ease-in-out infinite alternate;
}
.scn-miranda-defends-ferdinand .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%; background: linear-gradient(180deg, #8a7458 0%, #5a4a36 100%); border-radius: 60% 40% 0 0 / 30% 20% 0 0; box-shadow: inset 0 12px 30px rgba(0,0,0,0.4); animation: mdef-ground 15s ease-in-out infinite alternate;
}
.scn-miranda-defends-ferdinand .miranda {
  position: absolute; bottom: 30%; left: 40%; width: 16px; height: 38px; background: linear-gradient(180deg, #e8d8b0 0%, #b09878 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: mdef-miranda 5s ease-in-out infinite;
}
.scn-miranda-defends-ferdinand .ferdinand {
  position: absolute; bottom: 30%; left: 52%; width: 18px; height: 40px; background: linear-gradient(180deg, #d0c0a0 0%, #9a8468 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: mdef-ferdinand 6s ease-in-out infinite;
}
.scn-miranda-defends-ferdinand .prospero {
  position: absolute; bottom: 32%; left: 60%; width: 22px; height: 44px; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: mdef-prospero 7s ease-in-out infinite;
}
.scn-miranda-defends-ferdinand .halo {
  position: absolute; bottom: 37%; left: 50%; transform: translateX(-50%); width: 20px; height: 20px; background: radial-gradient(circle, rgba(255,214,128,0.6) 0%, transparent 70%); border-radius: 50%; animation: mdef-halo 4s ease-in-out infinite alternate;
}
@keyframes mdef-sky { 0% { opacity: 0.6 } 50% { opacity: 1 } 100% { opacity: 0.7 } }
@keyframes mdef-sun { 0% { transform: scale(1) translate(0,0); opacity: 0.8 } 50% { transform: scale(1.05) translate(2px,-2px); opacity: 1 } 100% { transform: scale(0.98) translate(0,0); opacity: 0.85 } }
@keyframes mdef-arch { 0% { transform: translateX(-50%) scaleY(1) } 50% { transform: translateX(-50%) scaleY(1.02) } 100% { transform: translateX(-50%) scaleY(0.98) } }
@keyframes mdef-col-l { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.03) } 100% { transform: scaleY(0.97) } }
@keyframes mdef-col-r { 0% { transform: scaleY(1) } 50% { transform: scaleY(0.97) } 100% { transform: scaleY(1.03) } }
@keyframes mdef-ground { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes mdef-miranda { 0% { transform: translateX(0) rotate(0deg) } 50% { transform: translateX(2px) rotate(2deg) } 100% { transform: translateX(0) rotate(0deg) } }
@keyframes mdef-ferdinand { 0% { transform: translateX(0) rotate(0deg) } 50% { transform: translateX(-1px) rotate(-1deg) } 100% { transform: translateX(0) rotate(0deg) } }
@keyframes mdef-prospero { 0% { transform: translateX(0) rotate(0deg) } 50% { transform: translateX(-2px) rotate(1deg) } 100% { transform: translateX(0) rotate(0deg) } }
@keyframes mdef-halo { 0% { opacity: 0.3; transform: translateX(-50%) scale(0.9) } 50% { opacity: 0.7; transform: translateX(-50%) scale(1.1) } 100% { opacity: 0.4; transform: translateX(-50%) scale(0.95) } }

.scn-prospor-charm-ferdinand {
  background: linear-gradient(180deg, #e0d4b0 0%, #b0a088 50%, #7a6a5a 100%), radial-gradient(ellipse at 60% 20%, #fff4d0 0%, transparent 60%);
}
.scn-prospor-charm-ferdinand .sky {
  position: absolute; inset: 0 0 50% 0; background: linear-gradient(180deg, rgba(255,244,208,0.4) 0%, transparent 100%); animation: pcf-sky 8s ease-in-out infinite alternate;
}
.scn-prospor-charm-ferdinand .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%; background: linear-gradient(180deg, #8a7a6a 0%, #4a3a2a 100%); border-radius: 30% 70% 0 0 / 40% 60% 0 0; box-shadow: inset 0 10px 30px rgba(0,0,0,0.6); animation: pcf-ground 12s ease-in-out infinite alternate;
}
.scn-prospor-charm-ferdinand .ferdinand {
  position: absolute; bottom: 30%; left: 50%; transform: translateX(-50%); width: 20px; height: 44px; background: linear-gradient(180deg, #c8b8a0 0%, #9a8470 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; box-shadow: 0 0 20px 4px rgba(0,0,0,0.5); animation: pcf-ferdinand 1.6s ease-in-out infinite;
}
.scn-prospor-charm-ferdinand .prospero {
  position: absolute; bottom: 32%; right: 20%; width: 24px; height: 50px; background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: 80% bottom; animation: pcf-prospero 2.4s ease-in-out infinite;
}
.scn-prospor-charm-ferdinand .miranda {
  position: absolute; bottom: 28%; left: 15%; width: 14px; height: 32px; background: linear-gradient(180deg, #d8c8b0 0%, #b09880 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: pcf-miranda 6s ease-in-out infinite;
}
.scn-prospor-charm-ferdinand .charm {
  position: absolute; bottom: 35%; left: 50%; transform: translateX(-50%); width: 60px; height: 60px; background: radial-gradient(circle, rgba(255,214,128,0.6) 0%, rgba(200,160,80,0.2) 40%, transparent 70%); border-radius: 50%; animation: pcf-charm 1.5s ease-in-out infinite;
}
.scn-prospor-charm-ferdinand .sword {
  position: absolute; bottom: 25%; left: 56%; width: 4px; height: 28px; background: linear-gradient(180deg, #c0a880 0%, #7a6040 100%); border-radius: 2px; transform: rotate(20deg); transform-origin: bottom center; box-shadow: 0 0 8px rgba(255,200,100,0.5); animation: pcf-sword 2s ease-in-out infinite alternate;
}
.scn-prospor-charm-ferdinand .sun {
  position: absolute; top: 5%; right: 15%; width: 40px; height: 40px; background: radial-gradient(circle, #ffd680 0%, #ffb040 50%, transparent 80%); border-radius: 50%; box-shadow: 0 0 30px 10px rgba(255,214,128,0.4); animation: pcf-sun 9s ease-in-out infinite alternate;
}
@keyframes pcf-sky { 0% { opacity: 0.7 } 50% { opacity: 0.9 } 100% { opacity: 0.6 } }
@keyframes pcf-ground { 0% { transform: translateY(0) } 50% { transform: translateY(1px) } 100% { transform: translateY(0) } }
@keyframes pcf-ferdinand { 0% { transform: translateX(-50%) rotate(0deg) scale(1) } 25% { transform: translateX(-50%) rotate(2deg) scale(1.02) } 50% { transform: translateX(-50%) rotate(-1deg) scale(0.98) } 75% { transform: translateX(-50%) rotate(1deg) scale(1.01) } 100% { transform: translateX(-50%) rotate(0deg) scale(1) } }
@keyframes pcf-prospero { 0% { transform: rotate(0deg) } 30% { transform: rotate(5deg) } 60% { transform: rotate(-3deg) } 100% { transform: rotate(0deg) } }
@keyframes pcf-miranda { 0% { transform: translateX(0) rotate(0deg) } 50% { transform: translateX(2px) rotate(2deg) } 100% { transform: translateX(0) rotate(0deg) } }
@keyframes pcf-charm { 0% { transform: translateX(-50%) scale(1); opacity: 0.8 } 30% { transform: translateX(-50%) scale(1.2); opacity: 1 } 70% { transform: translateX(-50%) scale(0.9); opacity: 0.5 } 100% { transform: translateX(-50%) scale(1); opacity: 0.7 } }
@keyframes pcf-sword { 0% { transform: rotate(15deg); opacity: 0.6 } 50% { transform: rotate(25deg); opacity: 1 } 100% { transform: rotate(20deg); opacity: 0.7 } }
@keyframes pcf-sun { 0% { transform: scale(1) } 50% { transform: scale(1.05) } 100% { transform: scale(0.95) } }

.scn-miranda-intercedes {
  background: linear-gradient(180deg, #e8dcc0 0%, #c4b28a 50%, #9a846a 100%), radial-gradient(ellipse at 50% 30%, #fff4d0 0%, transparent 70%);
}
.scn-miranda-intercedes .wall {
  position: absolute; inset: 0 0 30% 0; background: linear-gradient(180deg, #d8c8a8 0%, #b09878 100%); box-shadow: inset 0 4px 30px rgba(0,0,0,0.2); animation: minter-wall 15s ease-in-out infinite alternate;
}
.scn-miranda-intercedes .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%; background: linear-gradient(180deg, #9a846a 0%, #6a5a4a 100%); border-radius: 20% 80% 0 0 / 10% 30% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,0.4); animation: minter-floor 18s ease-in-out infinite alternate;
}
.scn-miranda-intercedes .window {
  position: absolute; top: 15%; left: 50%; transform: translateX(-50%); width: 60px; height: 80px; background: linear-gradient(180deg, #fff8e0 0%, #d8c890 100%); border-radius: 4px; border: 6px solid #5a4a3a; box-shadow: inset 0 0 30px rgba(255,214,128,0.5); animation: minter-window 5s ease-in-out infinite alternate;
}
.scn-miranda-intercedes .prospero {
  position: absolute; bottom: 25%; left: 35%; width: 28px; height: 56px; background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: minter-prospero 8s ease-in-out infinite;
}
.scn-miranda-intercedes .miranda {
  position: absolute; bottom: 20%; left: 48%; width: 16px; height: 36px; background: linear-gradient(180deg, #e0d0b8 0%, #b09878 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: minter-miranda 6s ease-in-out infinite;
}
.scn-miranda-intercedes .ferdinand {
  position: absolute; bottom: 22%; right: 28%; width: 18px; height: 38px; background: linear-gradient(180deg, #c8b8a0 0%, #9a8470 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: minter-ferdinand 10s ease-in-out infinite;
}
.scn-miranda-intercedes .garment {
  position: absolute; bottom: 32%; left: 38%; width: 30px; height: 20px; background: linear-gradient(180deg, #6a4a3a 0%, #3a2a1a 100%); border-radius: 40% 60% 20% 80% / 50% 60% 40% 50%; transform: rotate(-10deg); filter: blur(1px); animation: minter-garment 7s ease-in-out infinite alternate;
}
.scn-miranda-intercedes .light {
  position: absolute; top: 12%; left: 50%; transform: translateX(-50%); width: 40px; height: 100px; background: linear-gradient(180deg, rgba(255,248,224,0.6) 0%, transparent 100%); filter: blur(4px); animation: minter-light 4s ease-in-out infinite alternate;
}
@keyframes minter-wall { 0% { opacity: 0.8 } 50% { opacity: 1 } 100% { opacity: 0.85 } }
@keyframes minter-floor { 0% { transform: translateY(0) } 50% { transform: translateY(-1px) } 100% { transform: translateY(0) } }
@keyframes minter-window { 0% { box-shadow: inset 0 0 20px rgba(255,214,128,0.3); transform: translateX(-50%) scaleX(1) } 50% { box-shadow: inset 0 0 40px rgba(255,214,128,0.6); transform: translateX(-50%) scaleX(1.02) } 100% { box-shadow: inset 0 0 25px rgba(255,214,128,0.4); transform: translateX(-50%) scaleX(0.98) } }
@keyframes minter-prospero { 0% { transform: translateX(0) rotate(0deg) } 50% { transform: translateX(-2px) rotate(2deg) } 100% { transform: translateX(0) rotate(0deg) } }
@keyframes minter-miranda { 0% { transform: translateX(0) rotate(0deg) } 50% { transform: translateX(4px) rotate(3deg) } 100% { transform: translateX(0) rotate(0deg) } }
@keyframes minter-ferdinand { 0% { transform: translateX(0) rotate(0deg) scale(1) } 50% { transform: translateX(1px) rotate(-1deg) scale(1.02) } 100% { transform: translateX(0) rotate(0deg) scale(1) } }
@keyframes minter-garment { 0% { transform: rotate(-12deg) scaleY(1) } 50% { transform: rotate(-8deg) scaleY(1.05) } 100% { transform: rotate(-10deg) scaleY(0.95) } }
@keyframes minter-light { 0% { opacity: 0.5; transform: translateX(-50%) scaleY(1) } 50% { opacity: 0.9; transform: translateX(-50%) scaleY(1.1) } 100% { opacity: 0.6; transform: translateX(-50%) scaleY(0.95) } }

.scn-ferdinand-accepts-imprisonment {
  background: linear-gradient(180deg, #3a2a1a 0%, #6a4a3a 40%, #8a6a4a 100%), radial-gradient(ellipse at 50% 20%, #d8a060 0%, transparent 70%);
}
.scn-ferdinand-accepts-imprisonment .bg {
  position: absolute; inset: 0 0 20% 0; background: linear-gradient(180deg, #1a0a00 0%, #3a2a1a 100%); box-shadow: inset 0 8px 30px rgba(0,0,0,0.6); animation: fai-bg 20s ease-in-out infinite alternate;
}
.scn-ferdinand-accepts-imprisonment .light-shaft {
  position: absolute; top: 0; left: 50%; transform: translateX(-50%); width: 60px; height: 100%; background: linear-gradient(180deg, rgba(216,160,96,0.5) 0%, transparent 80%); filter: blur(6px); animation: fai-shaft 6s ease-in-out infinite alternate;
}
.scn-ferdinand-accepts-imprisonment .chain-left {
  position: absolute; top: 0; left: 44%; width: 4px; height: 60%; background: linear-gradient(180deg, #8a6a4a 0%, #4a3a2a 100%); border-radius: 2px; transform-origin: top center; animation: fai-chain 4s ease-in-out infinite alternate;
}
.scn-ferdinand-accepts-imprisonment .chain-right {
  position: absolute; top: 0; right: 44%; width: 4px; height: 60%; background: linear-gradient(180deg, #8a6a4a 0%, #4a3a2a 100%); border-radius: 2px; transform-origin: top center; animation: fai-chain 4s ease-in-out infinite alternate-reverse;
}
.scn-ferdinand-accepts-imprisonment .ferdinand {
  position: absolute; bottom: 20%; left: 50%; transform: translateX(-50%); width: 20px; height: 48px; background: linear-gradient(180deg, #c8b8a0 0%, #9a8470 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; box-shadow: 0 0 20px rgba(0,0,0,0.5); animation: fai-ferdinand 8s ease-in-out infinite;
}
.scn-ferdinand-accepts-imprisonment .shadow {
  position: absolute; bottom: 18%; left: 50%; transform: translateX(-50%); width: 40px; height: 10px; background: radial-gradient(ellipse, rgba(0,0,0,0.5) 0%, transparent 70%); border-radius: 50%; animation: fai-shadow 8s ease-in-out infinite alternate;
}
.scn-ferdinand-accepts-imprisonment .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%; background: linear-gradient(180deg, #2a1a0a 0%, #1a0a00 100%); border-radius: 40% 60% 0 0 / 20% 30% 0 0; box-shadow: inset 0 4px 15px rgba(0,0,0,0.8); animation: fai-floor 12s ease-in-out infinite alternate;
}
@keyframes fai-bg { 0% { opacity: 0.8 } 50% { opacity: 1 } 100% { opacity: 0.9 } }
@keyframes fai-shaft { 0% { opacity: 0.5; transform: translateX(-50%) scaleX(1) } 50% { opacity: 0.8; transform: translateX(-50%) scaleX(1.1) } 100% { opacity: 0.6; transform: translateX(-50%) scaleX(0.95) } }
@keyframes fai-chain { 0% { transform: rotate(2deg) } 50% { transform: rotate(-3deg) } 100% { transform: rotate(1deg) } }
@keyframes fai-ferdinand { 0% { transform: translateX(-50%) rotate(0deg) } 50% { transform: translateX(-50%) rotate(1deg) translateY(-2px) } 100% { transform: translateX(-50%) rotate(0deg) } }
@keyframes fai-shadow { 0% { transform: translateX(-50%) scaleX(1); opacity: 0.6 } 50% { transform: translateX(-50%) scaleX(1.2); opacity: 0.4 } 100% { transform: translateX(-50%) scaleX(0.9); opacity: 0.7 } }
@keyframes fai-floor { 0% { transform: translateY(0) } 50% { transform: translateY(1px) } 100% { transform: translateY(0) } }

.scn-ship-tempest-noise { background: linear-gradient(180deg, #1a2a3a 0%, #3a4a5a 30%, #5a6a7a 60%, #4a5a6a 100%), radial-gradient(ellipse at 50% 30%, #6a7a8a 0%, transparent 70%); }
.scn-ship-tempest-noise .sky { position:absolute; inset:0 0 60% 0; background: linear-gradient(180deg, rgba(255,255,255,.1) 0%, transparent 100%); animation: st-sky-pulse 8s ease-in-out infinite alternate; }
.scn-ship-tempest-noise .clouds-1 { position:absolute; top:10%; left:5%; width:120px; height:30px; background: rgba(200,200,220,.2); border-radius:50%; filter:blur(8px); animation: st-clouds-drift 25s linear infinite; }
.scn-ship-tempest-noise .clouds-2 { position:absolute; top:20%; right:10%; width:80px; height:20px; background: rgba(200,200,220,.15); border-radius:50%; filter:blur(6px); animation: st-clouds-drift 35s linear infinite reverse; }
.scn-ship-tempest-noise .sea-bg { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, #2a3a4a 0%, #1a2a3a 100%); animation: st-sea-wave 6s ease-in-out infinite; }
.scn-ship-tempest-noise .sea-fg { position:absolute; bottom:0; left:-5%; right:-5%; height:20%; background: linear-gradient(180deg, #3a4a5a 0%, #2a3a4a 100%); border-radius: 40% 60% 0 0; animation: st-sea-wave 3s ease-in-out infinite reverse; }
.scn-ship-tempest-noise .ship { position:absolute; bottom:30%; left:50%; width:80px; height:40px; transform:translateX(-50%); background: linear-gradient(90deg, #4a3a2a 0%, #5a4a3a 50%, #4a3a2a 100%); border-radius: 0 0 20% 20%; box-shadow:0 4px 8px rgba(0,0,0,.5); animation: st-ship-rock 4s ease-in-out infinite; }
.scn-ship-tempest-noise .mast { position:absolute; bottom:60%; left:50%; width:4px; height:60px; transform:translateX(-50%); background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%); animation: st-ship-rock 4s ease-in-out infinite; }
.scn-ship-tempest-noise .sail { position:absolute; bottom:70%; left:50%; width:50px; height:40px; transform:translateX(-50%); background: linear-gradient(135deg, #8a7a6a 0%, #6a5a4a 100%); border-radius: 50% 50% 30% 30%; animation: st-sail-flap 2s ease-in-out infinite; }
.scn-ship-tempest-noise .wave-big { position:absolute; bottom:0; left:0; width:100%; height:30%; background: linear-gradient(180deg, rgba(255,255,255,.1) 0%, transparent 100%); border-radius: 0 0 50% 50%; animation: st-wave-surge 5s ease-in-out infinite; }
@keyframes st-sky-pulse { 0% { opacity:.6; } 50% { opacity:1; } 100% { opacity:.7; } }
@keyframes st-clouds-drift { 0% { transform:translateX(0); } 50% { transform:translateX(40px); } 100% { transform:translateX(-20px); } }
@keyframes st-sea-wave { 0% { transform:translateY(0) scaleY(1); } 50% { transform:translateY(-6px) scaleY(1.03); } 100% { transform:translateY(0) scaleY(1); } }
@keyframes st-ship-rock { 0% { transform:translateX(-50%) rotate(0deg); } 25% { transform:translateX(-50%) rotate(-3deg); } 50% { transform:translateX(-50%) rotate(3deg); } 75% { transform:translateX(-50%) rotate(-2deg); } 100% { transform:translateX(-50%) rotate(0deg); } }
@keyframes st-sail-flap { 0% { transform:translateX(-50%) scaleX(1); } 50% { transform:translateX(-50%) scaleX(.85); } 100% { transform:translateX(-50%) scaleX(1); } }
@keyframes st-wave-surge { 0% { transform:translateX(-10%) scale(1); } 50% { transform:translateX(10%) scale(1.1); } 100% { transform:translateX(-10%) scale(1); } }

.scn-ship-king-aboard { background: linear-gradient(180deg, #2a3a4a 0%, #1a2a3a 50%, #3a4a5a 100%), radial-gradient(ellipse at 50% 0%, #4a5a6a 0%, transparent 80%); }
.scn-ship-king-aboard .sky { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, rgba(255,255,255,.08) 0%, transparent 100%); animation: ka-sky-pulse 10s ease-in-out infinite alternate; }
.scn-ship-king-aboard .sea { position:absolute; bottom:0; left:0; right:0; height:50%; background: linear-gradient(180deg, #2a3a4a 0%, #1a2a3a 100%); animation: ka-sea-wave 7s ease-in-out infinite; }
.scn-ship-king-aboard .deck { position:absolute; bottom:20%; left:20%; right:20%; height:30%; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 10% 10% 0 0; animation: ka-deck-rock 5s ease-in-out infinite; }
.scn-ship-king-aboard .king { position:absolute; bottom:35%; left:30%; width:20px; height:40px; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: ka-figure-sway 4s ease-in-out infinite; }
.scn-ship-king-aboard .boatswain { position:absolute; bottom:35%; left:55%; width:18px; height:36px; background: linear-gradient(180deg, #3a2a2a 0%, #2a1a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: ka-figure-sway 4s ease-in-out infinite 0.5s; }
.scn-ship-king-aboard .mast { position:absolute; bottom:45%; left:50%; width:3px; height:50px; transform:translateX(-50%); background: #4a3a2a; animation: ka-mast-sway 5s ease-in-out infinite; }
.scn-ship-king-aboard .sail { position:absolute; bottom:60%; left:50%; width:40px; height:30px; transform:translateX(-50%); background: linear-gradient(135deg, #8a7a6a 0%, #6a5a4a 100%); border-radius: 50% 50% 30% 30%; animation: ka-sail-flap 2.5s ease-in-out infinite; }
.scn-ship-king-aboard .lantern { position:absolute; bottom:40%; left:40%; width:8px; height:10px; background: radial-gradient(circle, #ffd080 0%, #b08040 70%); border-radius: 20%; box-shadow: 0 0 16px 4px rgba(255,208,128,.6); animation: ka-lantern-glow 3s ease-in-out infinite alternate; }
@keyframes ka-sky-pulse { 0% { opacity:.5; } 50% { opacity:1; } 100% { opacity:.6; } }
@keyframes ka-sea-wave { 0% { transform:translateY(0) scaleY(1); } 50% { transform:translateY(-4px) scaleY(1.02); } 100% { transform:translateY(0) scaleY(1); } }
@keyframes ka-deck-rock { 0% { transform:translateX(0) rotate(0deg); } 25% { transform:translateX(-2px) rotate(1deg); } 50% { transform:translateX(0) rotate(0deg); } 75% { transform:translateX(2px) rotate(-1deg); } 100% { transform:translateX(0) rotate(0deg); } }
@keyframes ka-figure-sway { 0% { transform:translateX(0) rotate(0deg); } 25% { transform:translateX(3px) rotate(-2deg); } 50% { transform:translateX(0) rotate(0deg); } 75% { transform:translateX(-3px) rotate(2deg); } 100% { transform:translateX(0) rotate(0deg); } }
@keyframes ka-mast-sway { 0% { transform:translateX(-50%) rotate(0deg); } 50% { transform:translateX(-50%) rotate(2deg); } 100% { transform:translateX(-50%) rotate(-2deg); } }
@keyframes ka-sail-flap { 0% { transform:translateX(-50%) scaleX(1); } 50% { transform:translateX(-50%) scaleX(.85); } 100% { transform:translateX(-50%) scaleX(1); } }
@keyframes ka-lantern-glow { 0% { box-shadow: 0 0 12px 2px rgba(255,208,128,.4); opacity:.8; } 50% { box-shadow: 0 0 24px 6px rgba(255,208,128,.7); opacity:1; } 100% { box-shadow: 0 0 16px 3px rgba(255,208,128,.5); opacity:.9; } }

.scn-ship-boatswain-defiance { background: linear-gradient(180deg, #0a1a2a 0%, #1a2a3a 30%, #2a3a4a 60%, #1a2a3a 100%), radial-gradient(ellipse at 30% 40%, #3a4a5a 0%, transparent 70%); }
.scn-ship-boatswain-defiance .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, rgba(200,200,220,.05) 0%, transparent 100%); animation: bd-sky-flash 8s ease-in-out infinite; }
.scn-ship-boatswain-defiance .storm-cloud { position:absolute; top:5%; left:10%; right:10%; height:25%; background: linear-gradient(180deg, rgba(50,60,70,.8) 0%, transparent 100%); border-radius: 50% 50% 0 0; filter: blur(12px); animation: bd-cloud-drift 30s linear infinite; }
.scn-ship-boatswain-defiance .sea { position:absolute; bottom:0; left:0; right:0; height:60%; background: linear-gradient(180deg, #1a2a3a 0%, #0a1a2a 100%); animation: bd-sea-wave 5s ease-in-out infinite; }
.scn-ship-boatswain-defiance .ship-bow { position:absolute; bottom:30%; left:20%; width:100px; height:50px; background: linear-gradient(90deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 0 40% 0 0; clip-path: polygon(0% 100%, 100% 100%, 80% 0%, 0% 0%); animation: bd-ship-rock 4s ease-in-out infinite; }
.scn-ship-boatswain-defiance .boatswain { position:absolute; bottom:50%; left:50%; width:20px; height:45px; transform:translateX(-50%); background: #0a0a1a; border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: bd-figure-stand 4s ease-in-out infinite; }
.scn-ship-boatswain-defiance .mast { position:absolute; bottom:55%; left:30%; width:3px; height:70px; background: #1a1a2a; animation: bd-mast-rock 4s ease-in-out infinite; }
.scn-ship-boatswain-defiance .sail { position:absolute; bottom:70%; left:30%; width:45px; height:35px; transform:translateX(-50%); background: linear-gradient(135deg, #2a2a3a 0%, #0a0a1a 100%); border-radius: 50% 50% 30% 30%; animation: bd-sail-flap 2s ease-in-out infinite; }
.scn-ship-boatswain-defiance .lightning { position:absolute; top:10%; right:20%; width:4px; height:80px; background: rgba(255,255,255,.4); filter: blur(2px); animation: bd-lightning-flash 3s ease-in-out infinite; }
@keyframes bd-sky-flash { 0% { opacity:.3; } 10% { opacity:.6; } 20% { opacity:.3; } 100% { opacity:.3; } }
@keyframes bd-cloud-drift { 0% { transform:translateX(0); } 50% { transform:translateX(30px); } 100% { transform:translateX(-20px); } }
@keyframes bd-sea-wave { 0% { transform:translateY(0) scaleY(1); } 50% { transform:translateY(-8px) scaleY(1.05); } 100% { transform:translateY(0) scaleY(1); } }
@keyframes bd-ship-rock { 0% { transform:rotate(0deg); } 25% { transform:rotate(-5deg); } 50% { transform:rotate(5deg); } 75% { transform:rotate(-3deg); } 100% { transform:rotate(0deg); } }
@keyframes bd-figure-stand { 0% { transform:translateX(-50%) rotate(0deg); } 50% { transform:translateX(-50%) rotate(2deg); } 100% { transform:translateX(-50%) rotate(-2deg); } }
@keyframes bd-mast-rock { 0% { transform:rotate(0deg); } 50% { transform:rotate(4deg); } 100% { transform:rotate(-4deg); } }
@keyframes bd-sail-flap { 0% { transform:scaleX(1); } 50% { transform:scaleX(.8); } 100% { transform:scaleX(1); } }
@keyframes bd-lightning-flash { 0% { opacity:0; } 5% { opacity:1; } 10% { opacity:0; } 20% { opacity:.5; } 30% { opacity:0; } 100% { opacity:0; } }

.scn-ship-gonzalo-hope { background: linear-gradient(180deg, #4a5a6a 0%, #6a7a8a 30%, #5a6a7a 60%, #4a5a6a 100%), radial-gradient(ellipse at 50% 20%, #7a8a9a 0%, transparent 70%); }
.scn-ship-gonzalo-hope .sky { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, rgba(255,255,255,.15) 0%, transparent 100%); animation: gh-sky-glimmer 6s ease-in-out infinite alternate; }
.scn-ship-gonzalo-hope .sea { position:absolute; bottom:0; left:0; right:0; height:50%; background: linear-gradient(180deg, #3a4a5a 0%, #2a3a4a 100%); animation: gh-sea-bounce 4s ease-in-out infinite; }
.scn-ship-gonzalo-hope .deck { position:absolute; bottom:25%; left:15%; right:15%; height:25%; background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%); border-radius: 20% 20% 0 0; animation: gh-deck-bounce 3s ease-in-out infinite; }
.scn-ship-gonzalo-hope .boatswain { position:absolute; bottom:40%; left:35%; width:18px; height:36px; background: linear-gradient(180deg, #3a2a2a 0%, #2a1a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: gh-figure-bounce 2s ease-in-out infinite; }
.scn-ship-gonzalo-hope .gonzalo { position:absolute; bottom:40%; left:55%; width:20px; height:38px; background: linear-gradient(180deg, #4a3a3a 0%, #2a1a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: gh-figure-bounce 2s ease-in-out infinite 0.5s; }
.scn-ship-gonzalo-hope .rope { position:absolute; bottom:55%; left:45%; width:2px; height:30px; background: #8a7a6a; transform-origin: top; animation: gh-rope-swing 3s ease-in-out infinite; }
.scn-ship-gonzalo-hope .gallows { position:absolute; bottom:55%; left:45%; width:6px; height:20px; background: #5a4a3a; transform: translateX(-50%); border-radius: 10%; animation: gh-gallows-bounce 3s ease-in-out infinite; }
.scn-ship-gonzalo-hope .wave { position:absolute; bottom:0; left:-10%; right:-10%; height:20%; background: linear-gradient(180deg, rgba(255,255,255,.2) 0%, transparent 100%); border-radius: 40% 60% 0 0; animation: gh-wave-bounce 3s ease-in-out infinite reverse; }
@keyframes gh-sky-glimmer { 0% { opacity:.5; } 50% { opacity:1; } 100% { opacity:.6; } }
@keyframes gh-sea-bounce { 0% { transform:translateY(0) scaleY(1); } 25% { transform:translateY(-5px) scaleY(1.02); } 50% { transform:translateY(0) scaleY(1); } 75% { transform:translateY(-3px) scaleY(1.01); } 100% { transform:translateY(0) scaleY(1); } }
@keyframes gh-deck-bounce { 0% { transform:translateY(0) rotate(0deg); } 20% { transform:translateY(-3px) rotate(1deg); } 40% { transform:translateY(0) rotate(0deg); } 60% { transform:translateY(-2px) rotate(-1deg); } 80% { transform:translateY(0) rotate(0deg); } 100% { transform:translateY(0) rotate(0deg); } }
@keyframes gh-figure-bounce { 0% { transform:translateY(0) rotate(0deg); } 30% { transform:translateY(-4px) rotate(-3deg); } 60% { transform:translateY(0) rotate(0deg); } 80% { transform:translateY(-2px) rotate(2deg); } 100% { transform:translateY(0) rotate(0deg); } }
@keyframes gh-rope-swing { 0% { transform:rotate(-5deg); } 25% { transform:rotate(5deg); } 50% { transform:rotate(-3deg); } 75% { transform:rotate(3deg); } 100% { transform:rotate(-5deg); } }
@keyframes gh-gallows-bounce { 0% { transform:translateX(-50%) rotate(0deg); } 50% { transform:translateX(-50%) rotate(2deg); } 100% { transform:translateX(-50%) rotate(-2deg); } }
@keyframes gh-wave-bounce { 0% { transform:translateX(-10%) scale(1); } 50% { transform:translateX(10%) scale(1.05); } 100% { transform:translateX(-10%) scale(1); } }

.scn-ariel-safety-and-dispersal {
  background:
    linear-gradient(180deg, #b0c4d8 0%, #8aabb8 40%, #6a8a9a 100%),
    radial-gradient(ellipse at 50% 50%, rgba(255,255,255,0.08) 0%, transparent 70%);
}
.scn-ariel-safety-and-dispersal .sky {
  position: absolute; inset: 0 0 55% 0;
  background: linear-gradient(180deg, rgba(180,200,215,0.6) 0%, transparent 100%);
  animation: asd-sky 12s ease-in-out infinite alternate;
}
.scn-ariel-safety-and-dispersal .sea {
  position: absolute; bottom: 0; left: 0; right: 0; height: 55%;
  background: linear-gradient(180deg, #6a8a9a 0%, #4a6a7a 60%, #3a5a6a 100%);
  border-radius: 20% 30% 0 0 / 15% 25% 0 0;
  animation: asd-sea 8s ease-in-out infinite alternate;
}
.scn-ariel-safety-and-dispersal .island {
  position: absolute; bottom: 18%; left: 50%; width: 160px; height: 60px;
  transform: translateX(-50%);
  background: radial-gradient(ellipse at 50% 100%, #5a7a4a 0%, #3a5a2a 70%, #2a4a1a 100%);
  border-radius: 50% 50% 30% 30% / 80% 80% 30% 30%;
  box-shadow: 0 -4px 12px rgba(0,0,0,0.2);
}
.scn-ariel-safety-and-dispersal .tree {
  position: absolute; bottom: 36%; width: 20px; height: 24px;
  background: radial-gradient(ellipse at 50% 60%, #4a6a3a 0%, #2a4a1a 100%);
  border-radius: 50% 50% 40% 40%;
  box-shadow: 0 2px 6px rgba(0,0,0,0.3);
  animation: asd-tree 6s ease-in-out infinite alternate;
}
.scn-ariel-safety-and-dispersal .tree1 { left: 35%; }
.scn-ariel-safety-and-dispersal .tree2 { left: 58%; }
.scn-ariel-safety-and-dispersal .figure {
  position: absolute; bottom: 15%; width: 8px; height: 18px;
  background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: asd-figure 4s ease-in-out infinite alternate;
}
.scn-ariel-safety-and-dispersal .fig1 { left: 40%; animation-delay: 0s; }
.scn-ariel-safety-and-dispersal .fig2 { left: 55%; animation-delay: 1.5s; }
.scn-ariel-safety-and-dispersal .cloud {
  position: absolute; top: 12%; left: 10%; width: 90px; height: 20px;
  background: linear-gradient(180deg, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0.1) 100%);
  border-radius: 50%;
  filter: blur(6px);
  animation: asd-cloud 40s linear infinite;
}
.scn-ariel-safety-and-dispersal .mist {
  position: absolute; top: 42%; left: 0; right: 0; height: 12%;
  background: linear-gradient(180deg, rgba(200,210,220,0.2) 0%, rgba(200,210,220,0.05) 100%);
  filter: blur(8px);
  animation: asd-mist 20s ease-in-out infinite alternate;
}
@keyframes asd-sky {
  0% { opacity: 0.7; }
  50% { opacity: 0.9; }
  100% { opacity: 0.75; }
}
@keyframes asd-sea {
  0% { transform: translateY(0) scaleY(1); }
  50% { transform: translateY(-3px) scaleY(1.01); }
  100% { transform: translateY(0) scaleY(1); }
}
@keyframes asd-tree {
  0% { transform: rotate(-2deg); }
  50% { transform: rotate(2deg); }
  100% { transform: rotate(-1deg); }
}
@keyframes asd-figure {
  0% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-2px) rotate(1deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes asd-cloud {
  0% { transform: translateX(-30px); }
  50% { transform: translateX(40vw) translateY(-5px); }
  100% { transform: translateX(100vw); }
}
@keyframes asd-mist {
  0% { opacity: 0.3; transform: scaleX(1); }
  50% { opacity: 0.6; transform: scaleX(1.02); }
  100% { opacity: 0.35; transform: scaleX(1); }
}

.scn-ariel-safety-and-dispersal {
  background:
    linear-gradient(180deg, #718096 0%, #4a5568 50%, #2d3748 100%),
    radial-gradient(ellipse at 50% 100%, #2d3748 0%, transparent 70%);
}

.scn-ariel-safety-and-dispersal .sky {
  position: absolute;
  inset: 0 0 60% 0;
  background: linear-gradient(180deg, #a0aec0 0%, #718096 100%);
  animation: asd-sky 10s ease-in-out infinite alternate;
}

.scn-ariel-safety-and-dispersal .sea {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 40%;
  background: linear-gradient(180deg, #2d3748 0%, #1a202c 100%);
  border-radius: 60% 40% 0 0 / 20% 10% 0 0;
  animation: asd-sea 15s ease-in-out infinite alternate;
}

.scn-ariel-safety-and-dispersal .shore {
  position: absolute;
  bottom: 40%;
  left: 10%;
  right: 10%;
  height: 10%;
  background: linear-gradient(180deg, #6b7280 0%, #4b5563 100%);
  border-radius: 40% 60% 20% 80% / 30% 60% 40% 70%;
  animation: asd-shore 20s ease-in-out infinite alternate;
}

.scn-ariel-safety-and-dispersal .ariel {
  position: absolute;
  bottom: 50%;
  left: 50%;
  width: 30px;
  height: 60px;
  transform: translate(-50%, 0);
  background: radial-gradient(ellipse at 50% 40%, rgba(255,255,255,0.6) 0%, transparent 70%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 0 0 30px 10px rgba(255,255,255,0.3);
  animation: asd-float 8s ease-in-out infinite;
}

.scn-ariel-safety-and-dispersal .mist {
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse at 30% 60%, rgba(255,255,255,0.15) 0%, transparent 60%);
  filter: blur(30px);
  animation: asd-mist 20s ease-in-out infinite alternate;
}

.scn-ariel-safety-and-dispersal .cloud-a {
  position: absolute;
  top: 10%;
  left: 10%;
  width: 80px;
  height: 20px;
  background: rgba(255,255,255,0.3);
  border-radius: 50%;
  filter: blur(8px);
  animation: asd-cloud-l 35s linear infinite;
  animation-delay: 0s;
}

.scn-ariel-safety-and-dispersal .cloud-b {
  position: absolute;
  top: 20%;
  right: 5%;
  width: 60px;
  height: 15px;
  background: rgba(255,255,255,0.2);
  border-radius: 50%;
  filter: blur(6px);
  animation: asd-cloud-r 45s linear infinite reverse;
  animation-delay: -10s;
}

.scn-ariel-safety-and-dispersal .figures {
  position: absolute;
  bottom: 42%;
  left: 15%;
  right: 15%;
  height: 6%;
  background:
    radial-gradient(circle at 10% 50%, #4a5568 2px, transparent 2px),
    radial-gradient(circle at 30% 30%, #4a5568 2px, transparent 2px),
    radial-gradient(circle at 60% 60%, #4a5568 2px, transparent 2px),
    radial-gradient(circle at 80% 20%, #4a5568 2px, transparent 2px),
    radial-gradient(circle at 50% 80%, #4a5568 2px, transparent 2px);
  animation: asd-figures 12s ease-in-out infinite alternate;
}

@keyframes asd-sky {
  0% { opacity: 0.9; }
  50% { opacity: 1; }
  100% { opacity: 0.8; }
}

@keyframes asd-sea {
  0% { transform: translateY(0); }
  50% { transform: translateY(-5px); }
  100% { transform: translateY(0); }
}

@keyframes asd-shore {
  0% { transform: scale(1); }
  50% { transform: scale(1.01); }
  100% { transform: scale(0.98); }
}

@keyframes asd-float {
  0% { transform: translate(-50%,0) rotate(-2deg); }
  50% { transform: translate(-50%,-10px) rotate(2deg); }
  100% { transform: translate(-50%,0) rotate(-2deg); }
}

@keyframes asd-mist {
  0% { opacity: 0.3; transform: translateX(0); }
  50% { opacity: 0.6; transform: translateX(10px); }
  100% { opacity: 0.3; transform: translateX(0); }
}

@keyframes asd-cloud-l {
  0% { transform: translateX(0); }
  50% { transform: translateX(20vw); }
  100% { transform: translateX(40vw); }
}

@keyframes asd-cloud-r {
  0% { transform: translateX(0); }
  50% { transform: translateX(-15vw); }
  100% { transform: translateX(-30vw); }
}

@keyframes asd-figures {
  0% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-2px) scale(0.95); }
  100% { transform: translateY(0) scale(1); }
}
/* end per-scene blocks */

/* auto-stub: parent tag-classes flagged by CSS audit */
.draped { position: absolute; pointer-events: none; }
.main { position: absolute; pointer-events: none; }
.tense { position: absolute; pointer-events: none; }

/* ============ tier S ============ */
/* per-scene blocks (EXP step_scenes) */
/* prospero-announces-return – dim interior, calm mood */
.scn-prospero-announces-return {
  background:
    linear-gradient(180deg, #1e1a14 0%, #2a241c 40%, #3a3228 70%, #2e2820 100%),
    radial-gradient(ellipse at 30% 60%, #4a3e30 0%, transparent 60%),
    linear-gradient(135deg, #1e1a14 0%, #3a3228 100%);
}
.scn-prospero-announces-return .wall {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(135deg, #3a3228 0%, #2a241c 100%);
  box-shadow: inset 0 0 60px rgba(0,0,0,0.6);
  animation: pra-wall 20s ease-in-out infinite alternate;
}
.scn-prospero-announces-return .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(0deg, #1a1612 0%, #2a241c 60%, #3a3228 100%);
  border-top: 1px solid #4a3e30;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.5);
  animation: pra-floor 24s ease-in-out infinite alternate;
}
.scn-prospero-announces-return .window {
  position: absolute; top: 10%; left: 55%; width: 110px; height: 160px;
  background: linear-gradient(180deg, #2c3a44 0%, #1a262e 100%);
  border: 4px solid #4a3e30;
  border-radius: 4px;
  box-shadow: inset 0 0 30px rgba(100,140,160,0.3), 0 4px 12px rgba(0,0,0,0.5);
  animation: pra-window 14s ease-in-out infinite alternate;
}
.scn-prospero-announces-return .curtain-left,
.scn-prospero-announces-return .curtain-right {
  position: absolute; top: 8%; width: 40px; height: 170px;
  background: linear-gradient(90deg, #5a4a3a 0%, #7a6a5a 50%, #5a4a3a 100%);
  border-radius: 4px 4px 0 0;
  box-shadow: inset -4px 0 8px rgba(0,0,0,0.4);
  animation: pra-curtain 18s ease-in-out infinite alternate;
}
.scn-prospero-announces-return .curtain-left {
  left: calc(55% - 4px - 40px);
  transform-origin: top right;
}
.scn-prospero-announces-return .curtain-right {
  left: calc(55% + 110px + 4px);
  transform-origin: top left;
}
.scn-prospero-announces-return .table {
  position: absolute; bottom: 25%; left: 30%; width: 160px; height: 40px;
  background: linear-gradient(180deg, #4a3a2a 0%, #3a2a1a 100%);
  border-radius: 6px;
  box-shadow: 0 6px 12px rgba(0,0,0,0.6), inset 0 1px 0 #6a5a4a;
  animation: pra-table 30s ease-in-out infinite alternate;
}
.scn-prospero-announces-return .candle {
  position: absolute; bottom: 40%; left: 35%; width: 12px; height: 40px;
  background: linear-gradient(180deg, #e8d4b0 0%, #c8a86a 100%);
  border-radius: 4px 4px 2px 2px;
  box-shadow: inset 0 -4px 6px rgba(0,0,0,0.3);
  animation: pra-candle 4s ease-in-out infinite alternate;
}
.scn-prospero-announces-return .candle::before {
  content: '';
  position: absolute; top: -8px; left: 50%; transform: translateX(-50%);
  width: 10px; height: 12px;
  background: radial-gradient(circle, #ffd080 0%, #e8a040 60%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 20px 8px rgba(255,180,60,0.6), 0 0 40px 16px rgba(255,180,60,0.3);
  animation: pra-flame 3s ease-in-out infinite alternate;
}
.scn-prospero-announces-return .prospero {
  position: absolute; bottom: 24%; left: 20%; width: 60px; height: 130px;
  background: linear-gradient(180deg, #2a241c 0%, #1a1612 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%;
  box-shadow: inset 0 8px 16px rgba(0,0,0,0.5);
  transform-origin: bottom center;
  animation: pra-prospero 12s ease-in-out infinite alternate;
}
.scn-prospero-announces-return .ariel {
  position: absolute; top: 12%; right: 18%; width: 24px; height: 24px;
  background: radial-gradient(circle at 40% 40%, #a0d8f0 0%, #6090b0 70%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 30px 12px rgba(96,144,176,0.5), 0 0 60px 24px rgba(96,144,176,0.2);
  animation: pra-ariel 8s ease-in-out infinite alternate;
}
@keyframes pra-wall {
  0% { opacity: 0.9; box-shadow: inset 0 0 60px rgba(0,0,0,0.6); }
  50% { opacity: 1; box-shadow: inset 0 0 80px rgba(0,0,0,0.7); }
  100% { opacity: 0.85; box-shadow: inset 0 0 50px rgba(0,0,0,0.5); }
}
@keyframes pra-floor {
  0% { transform: scaleY(1); opacity: 0.95; }
  50% { transform: scaleY(1.01); opacity: 1; }
  100% { transform: scaleY(0.99); opacity: 0.9; }
}
@keyframes pra-window {
  0% { box-shadow: inset 0 0 30px rgba(100,140,160,0.3); }
  50% { box-shadow: inset 0 0 50px rgba(100,140,160,0.5); }
  100% { box-shadow: inset 0 0 20px rgba(100,140,160,0.2); }
}
@keyframes pra-curtain {
  0% { transform: rotate(0deg); }
  50% { transform: rotate(2deg); }
  100% { transform: rotate(-1deg); }
}
@keyframes pra-table {
  0% { transform: translateY(0); box-shadow: 0 6px 12px rgba(0,0,0,0.6); }
  50% { transform: translateY(-1px); box-shadow: 0 8px 16px rgba(0,0,0,0.7); }
  100% { transform: translateY(1px); box-shadow: 0 4px 8px rgba(0,0,0,0.5); }
}
@keyframes pra-candle {
  0% { transform: scaleY(1) translateY(0); opacity: 0.8; }
  50% { transform: scaleY(1.02) translateY(-1px); opacity: 1; }
  100% { transform: scaleY(0.98) translateY(0); opacity: 0.85; }
}
@keyframes pra-flame {
  0% { transform: translateX(-50%) scale(1); opacity: 0.8; }
  50% { transform: translateX(-50%) scale(1.1) translateY(-1px); opacity: 1; }
  100% { transform: translateX(-50%) scale(0.95); opacity: 0.75; }
}
@keyframes pra-prospero {
  0% { transform: translateX(0) rotate(0deg); }
  50% { transform: translateX(3px) rotate(1deg) scale(1.005); }
  100% { transform: translateX(-2px) rotate(-0.5deg); }
}
@keyframes pra-ariel {
  0% { transform: translate(0, 0) scale(1); opacity: 0.7; }
  50% { transform: translate(-5px, -8px) scale(1.1); opacity: 1; }
  100% { transform: translate(3px, 4px) scale(0.95); opacity: 0.8; }
}

.scn-tempestuous-storm {
  background: linear-gradient(180deg, #0f1a2e 0%, #1a2c4a 40%, #0d1420 100%);
}
.scn-tempestuous-storm .sky-storm {
  position: absolute; inset: 0 0 60% 0;
  background: linear-gradient(180deg, #141e30 0%, #2a3f5a 50%, #0b121c 100%);
  animation: ts-sky 6s ease-in-out infinite alternate;
}
.scn-tempestuous-storm .waves-rage {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #1a2c3a 0%, #0f1a24 70%);
  clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
  animation: ts-waves 3s ease-in-out infinite;
  box-shadow: inset 0 -10px 20px rgba(0,0,0,0.8);
}
.scn-tempestuous-storm .ship-toss {
  position: absolute; bottom: 30%; left: 35%; width: 90px; height: 55px;
  background: linear-gradient(90deg, #2a1a0a 0%, #4a3a2a 50%, #2a1a0a 100%);
  border-radius: 0 0 50% 50%;
  transform-origin: center 80%;
  animation: ts-ship 3s ease-in-out infinite;
  box-shadow: 0 4px 8px rgba(0,0,0,0.6);
}
.scn-tempestuous-storm .mast-break {
  position: absolute; bottom: 45%; left: 45%; width: 4px; height: 40px;
  background: linear-gradient(180deg, #5a3a1a 0%, #2a1a0a 100%);
  transform-origin: bottom center;
  animation: ts-mast 4s ease-in-out infinite;
}
.scn-tempestuous-storm .lightning-flash {
  position: absolute; top: 12%; left: 60%; width: 4px; height: 30px;
  background: linear-gradient(180deg, #8ab4f8 0%, #4a6ea0 100%);
  filter: blur(1px);
  box-shadow: 0 0 20px 10px #8ab4f8, 0 0 40px 20px rgba(138,180,248,0.3);
  animation: ts-flash 1.5s ease-in-out infinite;
}
.scn-tempestuous-storm .boatswain-fig {
  position: absolute; bottom: 28%; left: 30%; width: 16px; height: 30px;
  background: linear-gradient(180deg, #2a1a0a 0%, #1a0a00 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: ts-fig 2s ease-in-out infinite;
}
.scn-tempestuous-storm .king-group {
  position: absolute; bottom: 32%; left: 48%; width: 40px; height: 20px;
  background: radial-gradient(ellipse at 50% 50%, #2a1a0a 40%, transparent 70%);
  animation: ts-king 5s ease-in-out infinite;
}
@keyframes ts-sky    { 0% { opacity: 0.7; transform: scaleY(1); } 50% { opacity: 1; transform: scaleY(1.05); } 100% { opacity: 0.8; transform: scaleY(1); } }
@keyframes ts-waves { 0% { transform: translateY(0) scaleX(1); } 50% { transform: translateY(-8px) scaleX(1.03); } 100% { transform: translateY(0) scaleX(1); } }
@keyframes ts-ship   { 0% { transform: rotate(-5deg) translateY(0); } 25% { transform: rotate(3deg) translateY(-4px); } 50% { transform: rotate(-2deg) translateY(0); } 75% { transform: rotate(4deg) translateY(-2px); } 100% { transform: rotate(-5deg) translateY(0); } }
@keyframes ts-mast   { 0%, 100% { transform: rotate(0deg) scaleY(1); } 30% { transform: rotate(2deg) scaleY(1.1); } 60% { transform: rotate(-3deg) scaleY(1.05); } }
@keyframes ts-flash  { 0%, 90%, 100% { opacity: 0; } 10% { opacity: 1; } 20% { opacity: 0.8; } }
@keyframes ts-fig    { 0%, 100% { transform: translateX(0) rotate(-1deg); } 50% { transform: translateX(6px) rotate(1deg); } }
@keyframes ts-king   { 0%, 100% { transform: translateX(0) scale(1); } 50% { transform: translateX(4px) scale(1.05); } }

.scn-miranda-begs-father {
  background: linear-gradient(180deg, #1a1410 0%, #2a1e14 30%, #1a120e 100%);
}
.scn-miranda-begs-father .cave-wall {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at 50% 60%, #3a2a1a 0%, #1a1410 80%);
  animation: mb-cave 20s ease-in-out infinite alternate;
}
.scn-miranda-begs-father .stone-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(0deg, #2a1a0a 0%, #1a120c 100%);
  border-radius: 40% 40% 0 0 / 20% 20% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.5);
}
.scn-miranda-begs-father .candle-glow {
  position: absolute; bottom: 35%; left: 40%; width: 40px; height: 60px;
  background: radial-gradient(ellipse at 50% 40%, #ffcc80 0%, #cf8a3c 40%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 30px 15px #cf8a3c, 0 0 60px 30px rgba(207,138,60,0.3);
  animation: mb-flame 4s ease-in-out infinite alternate;
}
.scn-miranda-begs-father .miranda-form {
  position: absolute; bottom: 22%; left: 45%; width: 20px; height: 45px;
  background: linear-gradient(180deg, #2a1a14 0%, #1a0e08 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: mb-miranda 6s ease-in-out infinite;
}
.scn-miranda-begs-father .prospero-form {
  position: absolute; bottom: 20%; left: 52%; width: 24px; height: 50px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1410 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: mb-prospero 6s ease-in-out infinite reverse;
}
.scn-miranda-begs-father .book-stack {
  position: absolute; bottom: 15%; left: 30%; width: 30px; height: 12px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 4px;
  box-shadow: 0 2px 4px rgba(0,0,0,0.4);
  animation: mb-book 8s ease-in-out infinite;
}
.scn-miranda-begs-father .shadow-drape {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at 30% 60%, transparent 40%, rgba(0,0,0,0.3) 80%);
  pointer-events: none;
  animation: mb-shadow 15s ease-in-out infinite alternate;
}
@keyframes mb-cave     { 0% { opacity: 0.85; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes mb-flame    { 0% { transform: scale(1); opacity: 0.9; box-shadow: 0 0 20px 10px #cf8a3c; } 50% { transform: scale(1.1); opacity: 1; box-shadow: 0 0 40px 20px #cf8a3c; } 100% { transform: scale(0.95); opacity: 0.85; box-shadow: 0 0 15px 8px #cf8a3c; } }
@keyframes mb-miranda  { 0%, 100% { transform: translateX(0) rotate(-2deg); } 50% { transform: translateX(8px) rotate(2deg); } }
@keyframes mb-prospero { 0%, 100% { transform: translateX(0) rotate(1deg); } 50% { transform: translateX(-6px) rotate(-1deg); } }
@keyframes mb-book     { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-3px); } }
@keyframes mb-shadow   { 0% { opacity: 0.5; } 50% { opacity: 0.7; } 100% { opacity: 0.6; } }

.scn-ariel-reports-storm {
  background: linear-gradient(180deg, #141210 0%, #1a1a18 30%, #0e0c0a 100%);
}
.scn-ariel-reports-storm .cave-back {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at 50% 40%, #2a2218 0%, #12100e 80%);
  animation: ar-cave 25s ease-in-out infinite alternate;
}
.scn-ariel-reports-storm .prospero-throne {
  position: absolute; bottom: 15%; left: 20%; width: 70px; height: 50px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1410 100%);
  border-radius: 30% 30% 10% 10% / 50% 50% 10% 10%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.6);
  animation: ar-throne 10s ease-in-out infinite;
}
.scn-ariel-reports-storm .ariel-spirit {
  position: absolute; top: 25%; left: 55%; width: 30px; height: 50px;
  background: radial-gradient(ellipse at 50% 50%, #6ab8c0 0%, #2a6a70 70%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  filter: blur(2px);
  box-shadow: 0 0 30px 15px rgba(106,184,192,0.4);
  animation: ar-ariel 5s ease-in-out infinite alternate;
}
.scn-ariel-reports-storm .light-beam {
  position: absolute; top: 10%; left: 50%; width: 6px; height: 40%;
  background: linear-gradient(180deg, #8ac4d0 0%, transparent 100%);
  transform: translateX(-50%) rotate(-5deg);
  filter: blur(3px);
  animation: ar-beam 8s ease-in-out infinite alternate;
}
.scn-ariel-reports-storm .floating-dust {
  position: absolute; top: 40%; left: 30%; width: 8px; height: 8px;
  background: radial-gradient(circle, #c8c0a0 0%, transparent 70%);
  border-radius: 50%;
  animation: ar-dust 12s linear infinite;
}
.scn-ariel-reports-storm .wand-tip {
  position: absolute; bottom: 35%; left: 18%; width: 8px; height: 8px;
  background: radial-gradient(circle, #e0c060 0%, #a08030 70%);
  border-radius: 50%;
  box-shadow: 0 0 20px 8px #e0c060;
  animation: ar-wand 3s ease-in-out infinite;
}
@keyframes ar-cave  { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.85; } }
@keyframes ar-throne { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-4px); } }
@keyframes ar-ariel { 0% { transform: translateY(0) scale(1); opacity: 0.8; } 50% { transform: translateY(-10px) scale(1.05); opacity: 1; } 100% { transform: translateY(0) scale(0.95); opacity: 0.85; } }
@keyframes ar-beam  { 0% { opacity: 0.2; transform: translateX(-50%) rotate(-3deg); } 50% { opacity: 0.6; transform: translateX(-50%) rotate(0deg); } 100% { opacity: 0.3; transform: translateX(-50%) rotate(2deg); } }
@keyframes ar-dust  { 0% { transform: translateY(0) translateX(0); opacity: 0.6; } 50% { transform: translateY(-30px) translateX(15px); opacity: 0.2; } 100% { transform: translateY(-60px) translateX(30px); opacity: 0; } }
@keyframes ar-wand  { 0%, 100% { transform: scale(1); box-shadow: 0 0 15px 5px #e0c060; } 50% { transform: scale(1.2); box-shadow: 0 0 30px 12px #e0c060; } }

.scn-ariel-recalls-sycorax {
  background: linear-gradient(180deg, #0e0c0a 0%, #1a1410 40%, #0a0806 100%);
}
.scn-ariel-recalls-sycorax .cave-dim {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at 50% 60%, #1a1410 0%, #0a0806 80%);
  animation: ars-cave 30s ease-in-out infinite alternate;
}
.scn-ariel-recalls-sycorax .fire-pit {
  position: absolute; bottom: 18%; left: 38%; width: 60px; height: 40px;
  background: radial-gradient(ellipse at 50% 30%, #c8553d 0%, #a0461a 40%, #2a1008 80%);
  border-radius: 50%;
  box-shadow: 0 0 50px 25px rgba(200,85,61,0.4), 0 0 100px 50px rgba(160,70,26,0.2);
  animation: ars-fire 6s ease-in-out infinite alternate;
}
.scn-ariel-recalls-sycorax .prospero-angry {
  position: absolute; bottom: 20%; left: 48%; width: 22px; height: 48px;
  background: linear-gradient(180deg, #2a1a0a 0%, #1a0e04 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ars-prospero 4s ease-in-out infinite;
  box-shadow: 0 0 20px 5px rgba(200,85,61,0.3);
}
.scn-ariel-recalls-sycorax .ariel-cowered {
  position: absolute; bottom: 22%; left: 60%; width: 16px; height: 36px;
  background: linear-gradient(180deg, #2a4a4a 0%, #1a2e2e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: ars-ariel 5s ease-in-out infinite reverse;
}
.scn-ariel-recalls-sycorax .caliban-shadow {
  position: absolute; bottom: 10%; left: 20%; width: 40px; height: 50px;
  background: linear-gradient(180deg, #1a1a0e 0%, #0a0a06 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  filter: blur(4px);
  opacity: 0.6;
  animation: ars-caliban 8s ease-in-out infinite;
}
.scn-ariel-recalls-sycorax .sycorax-ghost {
  position: absolute; top: 10%; right: 15%; width: 30px; height: 60px;
  background: radial-gradient(ellipse at 50% 50%, rgba(90,50,50,0.4) 0%, transparent 70%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  filter: blur(6px);
  animation: ars-ghost 12s ease-in-out infinite alternate;
}
.scn-ariel-recalls-sycorax .chain-rattle {
  position: absolute; bottom: 26%; left: 52%; width: 2px; height: 8px;
  background: #5a4a3a;
  border-radius: 2px;
  box-shadow: 0 12px 0 #5a4a3a, 0 24px 0 #5a4a3a;
  animation: ars-chain 2s ease-in-out infinite;
}
@keyframes ars-cave     { 0% { opacity: 0.85; } 50% { opacity: 0.95; } 100% { opacity: 0.9; } }
@keyframes ars-fire     { 0% { transform: scale(1); box-shadow: 0 0 40px 20px rgba(200,85,61,0.3); } 50% { transform: scale(1.05); box-shadow: 0 0 60px 30px rgba(200,85,61,0.5); } 100% { transform: scale(0.95); box-shadow: 0 0 30px 15px rgba(200,85,61,0.3); } }
@keyframes ars-prospero { 0%, 100% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(4px) rotate(2deg); } 75% { transform: translateX(-2px) rotate(-1deg); } }
@keyframes ars-ariel    { 0%, 100% { transform: translateY(0) scale(1); } 50% { transform: translateY(-4px) scale(0.95); } }
@keyframes ars-caliban  { 0% { transform: translateX(0) scale(1); opacity: 0.6; } 50% { transform: translateX(6px) scale(1.1); opacity: 0.8; } 100% { transform: translateX(0) scale(1); opacity: 0.6; } }
@keyframes ars-ghost    { 0% { transform: translateY(0) rotate(-5deg); opacity: 0.3; } 50% { transform: translateY(-10px) rotate(5deg); opacity: 0.5; } 100% { transform: translateY(0) rotate(-5deg); opacity: 0.3; } }
@keyframes ars-chain    { 0%, 100% { transform: translateY(0); } 25% { transform: translateY(1px); } 75% { transform: translateY(-1px); } }

.scn-caliban-pledges-allegiance {
  background:
    linear-gradient(180deg, #87ceeb 0%, #b0e0e6 40%, #e0f0e8 100%),
    radial-gradient(ellipse at 50% 100%, #90ee90 0%, transparent 60%);
}
.scn-caliban-pledges-allegiance .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #b0e0e6 0%, transparent 100%);
  animation: cal-sky 8s ease-in-out infinite alternate;
}
.scn-caliban-pledges-allegiance .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #7ccd7c 0%, #3cb371 100%);
  border-radius: 30% 70% 0 0 / 20% 40% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,60,0,0.3);
  animation: cal-ground 6s ease-in-out infinite;
}
.scn-caliban-pledges-allegiance .caliban {
  position: absolute; bottom: 18%; left: 30%; width: 50px; height: 70px;
  background: linear-gradient(180deg, #8b5a2b 0%, #5c3a1e 50%, #3e2723 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: cal-caliban 2s ease-in-out infinite alternate;
}
.scn-caliban-pledges-allegiance .stephano {
  position: absolute; bottom: 20%; left: 50%; width: 55px; height: 90px;
  background: linear-gradient(180deg, #deb887 0%, #a0522d 50%, #8b4513 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: cal-stephano 3s ease-in-out infinite;
}
.scn-caliban-pledges-allegiance .trinculo {
  position: absolute; bottom: 20%; left: 70%; width: 45px; height: 80px;
  background: linear-gradient(180deg, #f5deb3 0%, #d2b48c 50%, #a0522d 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: cal-trinculo 2.5s ease-in-out infinite alternate;
}
.scn-caliban-pledges-allegiance .bottle {
  position: absolute; bottom: 30%; left: 45%; width: 12px; height: 18px;
  background: linear-gradient(180deg, #c0c0c0 0%, #808080 100%);
  border-radius: 30% 30% 10% 10%;
  box-shadow: 0 2px 4px rgba(0,0,0,0.4);
  animation: cal-bottle 1.5s ease-in-out infinite;
}
.scn-caliban-pledges-allegiance .sun-ray-a {
  position: absolute; top: 20%; left: 10%; width: 200px; height: 12px;
  background: linear-gradient(90deg, transparent, rgba(255,255,200,0.4), transparent);
  border-radius: 50%;
  filter: blur(6px);
  transform: rotate(15deg);
  animation: cal-sunray-a 12s linear infinite;
}
.scn-caliban-pledges-allegiance .sun-ray-b {
  position: absolute; top: 30%; right: 10%; width: 150px; height: 8px;
  background: linear-gradient(90deg, transparent, rgba(255,255,200,0.3), transparent);
  border-radius: 50%;
  filter: blur(4px);
  transform: rotate(-10deg);
  animation: cal-sunray-b 15s linear infinite reverse;
}
@keyframes cal-sky { 0% { opacity:0.9 } 50% { opacity:1 } 100% { opacity:0.8 } }
@keyframes cal-ground { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-2px) } }
@keyframes cal-caliban { 0% { transform: translateX(0) rotate(0deg) } 100% { transform: translateX(5px) rotate(5deg) } }
@keyframes cal-stephano { 0%,100% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(-3px) rotate(2deg) } }
@keyframes cal-trinculo { 0% { transform: translateX(0) rotate(0deg) } 100% { transform: translateX(-4px) rotate(-3deg) } }
@keyframes cal-bottle { 0%,100% { transform: rotate(0deg) } 50% { transform: rotate(15deg) } }
@keyframes cal-sunray-a { 0% { transform: rotate(15deg) translateX(-30px) } 100% { transform: rotate(15deg) translateX(120vw) } }
@keyframes cal-sunray-b { 0% { transform: rotate(-10deg) translateX(0) } 100% { transform: rotate(-10deg) translateX(-100vw) } }

.scn-ferdinand-carries-logs {
  background:
    linear-gradient(180deg, #87cefa 0%, #b0e0e6 30%, #f0e68c 100%),
    radial-gradient(ellipse at 50% 30%, #fff8dc 0%, transparent 60%);
}
.scn-ferdinand-carries-logs .sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #87cefa 0%, transparent 100%);
  animation: fcl-sky 10s ease-in-out infinite alternate;
}
.scn-ferdinand-carries-logs .trees-bg {
  position: absolute; bottom: 35%; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #228b22 0%, #006400 100%);
  border-radius: 60% 40% 0 0 / 30% 50% 0 0;
  box-shadow: inset 0 8px 16px rgba(0,0,0,0.3);
  animation: fcl-trees 15s ease-in-out infinite alternate;
}
.scn-ferdinand-carries-logs .logs {
  position: absolute; bottom: 25%; left: 20%; width: 120px; height: 20px;
  background: linear-gradient(90deg, #8b4513 0%, #a0522d 50%, #8b4513 100%);
  border-radius: 20% / 50%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.3);
  animation: fcl-logs 4s ease-in-out infinite;
}
.scn-ferdinand-carries-logs .ferdinand {
  position: absolute; bottom: 18%; left: 30%; width: 40px; height: 80px;
  background: linear-gradient(180deg, #f5deb3 0%, #d2b48c 50%, #8b4513 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: fcl-ferdinand 3s ease-in-out infinite;
}
.scn-ferdinand-carries-logs .miranda {
  position: absolute; bottom: 18%; left: 55%; width: 40px; height: 75px;
  background: linear-gradient(180deg, #ffe4b5 0%, #f5deb3 50%, #d2b48c 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: fcl-miranda 4s ease-in-out infinite alternate;
}
.scn-ferdinand-carries-logs .prospero-shadow {
  position: absolute; bottom: 30%; right: 20%; width: 50px; height: 90px;
  background: rgba(0,0,0,0.4);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  filter: blur(6px);
  animation: fcl-prospero 6s ease-in-out infinite;
}
.scn-ferdinand-carries-logs .sunburst {
  position: absolute; top: 10%; left: 50%; width: 80px; height: 80px;
  background: radial-gradient(circle, #fff8dc 0%, rgba(255,248,220,0.3) 50%, transparent 100%);
  border-radius: 50%;
  filter: blur(10px);
  animation: fcl-sunburst 8s ease-in-out infinite alternate;
}
.scn-ferdinand-carries-logs .leaves-a {
  position: absolute; top: 25%; left: 5%; width: 40px; height: 40px;
  background: radial-gradient(circle, #32cd32 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(4px);
  animation: fcl-leaves-a 20s linear infinite;
}
.scn-ferdinand-carries-logs .leaves-b {
  position: absolute; top: 20%; right: 10%; width: 30px; height: 30px;
  background: radial-gradient(circle, #228b22 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(3px);
  animation: fcl-leaves-b 25s linear infinite reverse;
}
@keyframes fcl-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.7 } }
@keyframes fcl-trees { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes fcl-logs { 0%,100% { transform: translateX(0) } 50% { transform: translateX(3px) } }
@keyframes fcl-ferdinand { 0%,100% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(-2px) rotate(2deg) } }
@keyframes fcl-miranda { 0% { transform: translateX(0) rotate(0deg) } 50% { transform: translateX(5px) rotate(3deg) } 100% { transform: translateX(0) rotate(0deg) } }
@keyframes fcl-prospero { 0%,100% { transform: scale(1) opacity(0.4) } 50% { transform: scale(1.05) opacity(0.5) } }
@keyframes fcl-sunburst { 0% { transform: scale(1) } 50% { transform: scale(1.2) } 100% { transform: scale(0.9) } }
@keyframes fcl-leaves-a { 0% { transform: translateY(0) } 100% { transform: translateY(-100vh) } }
@keyframes fcl-leaves-b { 0% { transform: translateY(0) } 100% { transform: translateY(100vh) } }

.scn-banquet-appearance {
  background:
    linear-gradient(180deg, #1a1a2e 0%, #2d1b3d 30%, #3d2b4a 60%, #1e1e30 100%),
    radial-gradient(ellipse at 50% 50%, #4a2b5e 0%, transparent 70%);
}
.scn-banquet-appearance .room {
  position: absolute; inset: 0; 
  background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,0.4) 100%);
  animation: bnp-room 5s ease-in-out infinite alternate;
}
.scn-banquet-appearance .table {
  position: absolute; bottom: 20%; left: 20%; width: 60%; height: 15%;
  background: linear-gradient(180deg, #5c4033 0%, #3e2723 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: 0 8px 20px rgba(0,0,0,0.6);
  animation: bnp-table 7s ease-in-out infinite;
}
.scn-banquet-appearance .food {
  position: absolute; bottom: 35%; left: 30%; width: 100px; height: 40px;
  background: radial-gradient(ellipse, #d2691e 0%, #8b4513 50%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 20px #d2691e;
  animation: bnp-food 3s ease-in-out infinite alternate;
}
.scn-banquet-appearance .spirit-a {
  position: absolute; bottom: 40%; left: 15%; width: 30px; height: 50px;
  background: linear-gradient(180deg, rgba(144,238,144,0.6) 0%, transparent 100%);
  border-radius: 50% 50% 20% 20%;
  filter: blur(3px);
  animation: bnp-spirit-a 4s ease-in-out infinite;
}
.scn-banquet-appearance .spirit-b {
  position: absolute; bottom: 45%; right: 20%; width: 25px; height: 40px;
  background: linear-gradient(180deg, rgba(173,216,230,0.5) 0%, transparent 100%);
  border-radius: 50% 50% 20% 20%;
  filter: blur(2px);
  animation: bnp-spirit-b 5s ease-in-out infinite reverse;
}
.scn-banquet-appearance .ariel-harpy {
  position: absolute; top: 10%; left: 50%; width: 80px; height: 100px;
  background: linear-gradient(180deg, #bc8f8f 0%, #5c4033 50%, #2b1a1a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  clip-path: polygon(50% 0%, 100% 30%, 100% 70%, 50% 100%, 0% 70%, 0% 30%);
  transform-origin: bottom center;
  animation: bnp-ariel 2s ease-in-out infinite alternate;
}
.scn-banquet-appearance .shadow {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, transparent, rgba(0,0,0,0.6));
  animation: bnp-shadow 6s ease-in-out infinite;
}
.scn-banquet-appearance .glow {
  position: absolute; top: 0; left: 0; right: 0; height: 30%;
  background: radial-gradient(ellipse at 50% 0%, rgba(255,200,100,0.3) 0%, transparent 100%);
  animation: bnp-glow 8s ease-in-out infinite alternate;
}
@keyframes bnp-room { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.7 } }
@keyframes bnp-table { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-3px) } }
@keyframes bnp-food { 0% { transform: scale(1) } 50% { transform: scale(1.2) } 100% { transform: scale(0.8) } }
@keyframes bnp-spirit-a { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-10px) } }
@keyframes bnp-spirit-b { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-8px) } }
@keyframes bnp-ariel { 0% { transform: translateX(-10px) rotate(-5deg) } 100% { transform: translateX(10px) rotate(5deg) } }
@keyframes bnp-shadow { 0% { opacity:0.3 } 50% { opacity:0.6 } 100% { opacity:0.4 } }
@keyframes bnp-glow { 0% { opacity:0.2 } 50% { opacity:0.7 } 100% { opacity:0.3 } }

.scn-prospero-praises-ariel {
  background:
    linear-gradient(180deg, #2c1e3a 0%, #4a2b5e 30%, #6b4a7a 60%, #3d2b4a 100%),
    radial-gradient(ellipse at 50% 80%, #8b6914 0%, transparent 50%);
}
.scn-prospero-praises-ariel .cave-interior {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, transparent 50%, rgba(0,0,0,0.4) 100%);
  animation: pra-cave 12s ease-in-out infinite alternate;
}
.scn-prospero-praises-ariel .chess-table {
  position: absolute; bottom: 15%; left: 30%; width: 40%; height: 20%;
  background: linear-gradient(180deg, #7b5b3a 0%, #5c4033 100%);
  border-radius: 5% 5% 0 0;
  box-shadow: 0 6px 12px rgba(0,0,0,0.5);
  animation: pra-table 8s ease-in-out infinite;
}
.scn-prospero-praises-ariel .chess-pieces {
  position: absolute; bottom: 30%; left: 35%; width: 30px; height: 40px;
  background: radial-gradient(ellipse at 50% 50%, #f5deb3 0%, #d2b48c 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 0 0 10px rgba(255,248,220,0.5);
  animation: pra-pieces 4s ease-in-out infinite alternate;
}
.scn-prospero-praises-ariel .ferdinand-figure {
  position: absolute; bottom: 20%; left: 40%; width: 35px; height: 70px;
  background: linear-gradient(180deg, #d2b48c 0%, #8b4513 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: pra-ferdinand 5s ease-in-out infinite;
}
.scn-prospero-praises-ariel .miranda-figure {
  position: absolute; bottom: 20%; left: 52%; width: 35px; height: 65px;
  background: linear-gradient(180deg, #ffe4b5 0%, #d2b48c 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: pra-miranda 5s ease-in-out infinite reverse;
}
.scn-prospero-praises-ariel .prospero {
  position: absolute; bottom: 30%; right: 15%; width: 45px; height: 85px;
  background: linear-gradient(180deg, #6b4a7a 0%, #3d2b4a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: pra-prospero 6s ease-in-out infinite alternate;
}
.scn-prospero-praises-ariel .ariel-light {
  position: absolute; top: 10%; left: 50%; width: 60px; height: 60px;
  background: radial-gradient(circle, rgba#fff8dc,0.6) 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(10px);
  animation: pra-ariel-light 7s ease-in-out infinite alternate;
}
.scn-prospero-praises-ariel .motes-a {
  position: absolute; top: 20%; left: 10%; width: 4px; height: 4px;
  background: rgba(255,255,255,0.4);
  border-radius: 50%;
  box-shadow: 0 0 6px #fff8dc;
  animation: pra-motes-a 12s ease-in-out infinite;
}
.scn-prospero-praises-ariel .motes-b {
  position: absolute; top: 30%; right: 20%; width: 3px; height: 3px;
  background: rgba(255,255,255,0.3);
  border-radius: 50%;
  box-shadow: 0 0 4px #fff8dc;
  animation: pra-motes-b 15s ease-in-out infinite reverse;
}
@keyframes pra-cave { 0% { opacity:0.7 } 50% { opacity:1 } 100% { opacity:0.8 } }
@keyframes pra-table { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-2px) } }
@keyframes pra-pieces { 0% { transform: scale(1) } 50% { transform: scale(1.1) } 100% { transform: scale(0.95) } }
@keyframes pra-ferdinand { 0%,100% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(-2px) rotate(2deg) } }
@keyframes pra-miranda { 0%,100% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(-1px) rotate(-2deg) } }
@keyframes pra-prospero { 0% { transform: translateX(0) } 50% { transform: translateX(3px) } 100% { transform: translateX(0) } }
@keyframes pra-ariel-light { 0% { opacity:0.3; transform: scale(1) } 50% { opacity:0.7; transform: scale(1.3) } 100% { opacity:0.4; transform: scale(0.9) } }
@keyframes pra-motes-a { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-20px) } }
@keyframes pra-motes-b { 0%,100% { transform: translateY(0) } 50% { transform: translateY(15px) } }

/* scene ferdinand-miranda-meet */
.scn-ferdinand-miranda-meet {
  background: linear-gradient(180deg, #fde8c8 0%, #f9c89a 30%, #d4a574 60%, #b88355 100%),
              radial-gradient(ellipse at 50% 30%, #ffe0b0 0%, transparent 60%);
}
.scn-ferdinand-miranda-meet .skim-fmm {
  position: absolute; inset: 0 0 55% 0;
  background: linear-gradient(180deg, #fddea4 0%, #f6bc7a 70%, transparent 100%);
  animation: fmm-sky 20s ease-in-out infinite alternate;
}
.scn-ferdinand-miranda-meet .sand-fmm {
  position: absolute; bottom: 0; left: 0; right: 0; height: 55%;
  background: radial-gradient(ellipse at 50% 0%, #dbb17a 0%, #a4784a 80%, #7a5a3a 100%);
  border-radius: 30% 70% 0 0 / 40% 60% 0 0;
  animation: fmm-sand 12s ease-in-out infinite alternate;
}
.scn-ferdinand-miranda-meet .fig-left-fmm {
  position: absolute; bottom: 30%; left: 30%; width: 24px; height: 60px;
  background: linear-gradient(180deg, #4a3520 0%, #2a1a0a 60%, #1a0f05 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 30% 30%;
  transform-origin: bottom center;
  animation: fmm-figleft 6s ease-in-out infinite;
}
.scn-ferdinand-miranda-meet .fig-right-fmm {
  position: absolute; bottom: 30%; right: 30%; width: 22px; height: 58px;
  background: linear-gradient(180deg, #6a5040 0%, #3a2a1a 60%, #1a0f05 100%);
  border-radius: 50% 50% 40% 40% / 30% 30% 70% 70%;
  transform-origin: bottom center;
  animation: fmm-figright 6s ease-in-out infinite 0.3s;
}
.scn-ferdinand-miranda-meet .glow-fmm {
  position: absolute; bottom: 38%; left: 50%; width: 40px; height: 40px;
  transform: translate(-50%, -50%);
  background: radial-gradient(circle, #ffd599 0%, #ffa64d 40%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 60px 20px rgba(255, 200, 100, 0.6);
  animation: fmm-glow 4s ease-in-out infinite alternate;
}
.scn-ferdinand-miranda-meet .shadow-fmm {
  position: absolute; bottom: 55%; right: 15%; width: 30px; height: 70px;
  background: linear-gradient(180deg, rgba(20,10,0,0.6) 0%, transparent 100%);
  border-radius: 30% 30% 50% 50% / 40% 40% 60% 60%;
  filter: blur(4px);
  animation: fmm-shadow 8s ease-in-out infinite;
}
.scn-ferdinand-miranda-meet .bloom-fmm {
  position: absolute; top: 10%; left: 60%; width: 80px; height: 80px;
  background: radial-gradient(circle, #ffe680 0%, #ffcc66 30%, transparent 70%);
  border-radius: 50%;
  filter: blur(15px);
  opacity: 0.4;
  animation: fmm-bloom 15s linear infinite;
}
@keyframes fmm-sky {
  0% { opacity: 0.85; transform: scaleY(1); }
  50% { opacity: 1; transform: scaleY(1.02); }
  100% { opacity: 0.9; transform: scaleY(1); }
}
@keyframes fmm-sand {
  0% { transform: translateY(0); }
  50% { transform: translateY(-3px); }
  100% { transform: translateY(0); }
}
@keyframes fmm-figleft {
  0% { transform: translateX(0) rotate(0deg); }
  25% { transform: translateX(4px) rotate(2deg); }
  50% { transform: translateX(8px) rotate(0deg); }
  75% { transform: translateX(4px) rotate(-2deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes fmm-figright {
  0% { transform: translateX(0) rotate(0deg); }
  25% { transform: translateX(-4px) rotate(-2deg); }
  50% { transform: translateX(-8px) rotate(0deg); }
  75% { transform: translateX(-4px) rotate(2deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes fmm-glow {
  0% { box-shadow: 0 0 40px 10px rgba(255,200,100,0.4); opacity: 0.8; }
  50% { box-shadow: 0 0 80px 30px rgba(255,200,100,0.7); opacity: 1; }
  100% { box-shadow: 0 0 50px 15px rgba(255,200,100,0.5); opacity: 0.9; }
}
@keyframes fmm-shadow {
  0% { opacity: 0.5; transform: scaleX(0.95); }
  50% { opacity: 0.3; transform: scaleX(1.05); }
  100% { opacity: 0.5; transform: scaleX(0.95); }
}
@keyframes fmm-bloom {
  0% { transform: translate(0,0) scale(1); opacity: 0.3; }
  50% { transform: translate(10px, -5px) scale(1.1); opacity: 0.5; }
  100% { transform: translate(0,0) scale(1); opacity: 0.3; }
}

/* scene gonzalo-cheers-alonso */
.scn-gonzalo-cheers-alonso {
  background: linear-gradient(180deg, #c8e0f0 0%, #b0d0e0 30%, #8ab8c8 70%, #6a9aa8 100%),
              radial-gradient(ellipse at 70% 20%, #ffe0b0 0%, transparent 60%);
}
.scn-gonzalo-cheers-alonso .sky-gca {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #d8ecf8 0%, #b8d0e0 60%, transparent 100%);
  animation: gca-sky 18s ease-in-out infinite alternate;
}
.scn-gonzalo-cheers-alonso .sea-gca {
  position: absolute; bottom: 35%; left: 0; right: 0; height: 15%;
  background: linear-gradient(180deg, #7aa4b8 0%, #4e8098 100%);
  border-radius: 40% 60% 0 0 / 60% 40% 0 0;
  animation: gca-sea 8s ease-in-out infinite alternate;
}
.scn-gonzalo-cheers-alonso .ground-gca {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: radial-gradient(ellipse at 50% 0%, #9aaa70 0%, #5e7a4e 60%, #3a4a2a 100%);
  border-radius: 20% 80% 0 0 / 30% 70% 0 0;
}
.scn-gonzalo-cheers-alonso .figure-alonso-gca {
  position: absolute; bottom: 12%; left: 35%; width: 26px; height: 50px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 70%, #1a0f05 100%);
  border-radius: 50% 50% 30% 30% / 40% 40% 60% 60%;
  transform-origin: bottom center;
  animation: gca-figur-a 7s ease-in-out infinite;
}
.scn-gonzalo-cheers-alonso .figure-gonzalo-gca {
  position: absolute; bottom: 15%; left: 55%; width: 24px; height: 58px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 60%, #1a0f05 100%);
  border-radius: 40% 60% 30% 50% / 60% 40% 40% 60%;
  transform-origin: bottom center;
  animation: gca-figur-g 9s ease-in-out infinite 0.5s;
}
.scn-gonzalo-cheers-alonso .sunburst-gca {
  position: absolute; top: 8%; right: 20%; width: 100px; height: 100px;
  background: radial-gradient(circle, #ffe680 0%, #fdb93e 30%, transparent 60%);
  border-radius: 50%;
  filter: blur(8px);
  opacity: 0.5;
  animation: gca-sunburst 12s ease-in-out infinite alternate;
}
.scn-gonzalo-cheers-alonso .foliage-gca {
  position: absolute; bottom: 25%; left: 10%; width: 40px; height: 30px;
  background: radial-gradient(ellipse at 50% 100%, #4a6a3a 0%, #2a3a1a 70%);
  border-radius: 50% 50% 30% 30% / 80% 80% 20% 20%;
  transform: rotate(-20deg);
  animation: gca-foliage 15s ease-in-out infinite alternate;
}
@keyframes gca-sky {
  0% { opacity: 0.8; transform: scaleY(1); }
  50% { opacity: 1; transform: scaleY(1.02); }
  100% { opacity: 0.85; transform: scaleY(1); }
}
@keyframes gca-sea {
  0% { transform: translateY(0) scaleX(1); }
  50% { transform: translateY(-2px) scaleX(1.02); }
  100% { transform: translateY(0) scaleX(1); }
}
@keyframes gca-figur-a {
  0% { transform: translateX(0) rotate(0deg); }
  25% { transform: translateX(-2px) rotate(-2deg); }
  50% { transform: translateX(0) rotate(1deg); }
  75% { transform: translateX(2px) rotate(2deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes gca-figur-g {
  0% { transform: translateX(0) rotate(0deg) scaleY(1); }
  25% { transform: translateX(3px) rotate(3deg) scaleY(1.02); }
  50% { transform: translateX(0) rotate(0deg) scaleY(1); }
  75% { transform: translateX(-3px) rotate(-3deg) scaleY(1.02); }
  100% { transform: translateX(0) rotate(0deg) scaleY(1); }
}
@keyframes gca-sunburst {
  0% { opacity: 0.3; transform: scale(0.9); }
  50% { opacity: 0.6; transform: scale(1.1); }
  100% { opacity: 0.4; transform: scale(1); }
}
@keyframes gca-foliage {
  0% { transform: rotate(-20deg) scale(1); }
  50% { transform: rotate(-15deg) scale(1.05); }
  100% { transform: rotate(-20deg) scale(1); }
}

/* scene antonio-tempts-sebastian */
.scn-antonio-tempts-sebastian {
  background: linear-gradient(180deg, #e8c0a0 0%, #c8a080 30%, #a08060 60%, #705040 100%),
              radial-gradient(ellipse at 50% 20%, #ffe0b0 0%, transparent 70%);
}
.scn-antonio-tempts-sebastian .cave-wall-ats {
  position: absolute; inset: 0;
  background: linear-gradient(90deg, #2a1a0a 0%, transparent 20%, transparent 80%, #2a1a0a 100%),
              linear-gradient(180deg, #3a2a1a 0%, #1a0f05 40%, #2a1a0a 100%);
  animation: ats-cave 20s ease-in-out infinite alternate;
}
.scn-antonio-tempts-sebastian .ground-ats {
  position: absolute; bottom: 0; left: 10%; right: 10%; height: 30%;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 20% 80% 0 0 / 30% 70% 0 0;
}
.scn-antonio-tempts-sebastian .sleeping-alonso-ats {
  position: absolute; bottom: 12%; left: 25%; width: 30px; height: 22px;
  background: linear-gradient(180deg, #4a3a2a 0%, #3a2a1a 60%, #2a1a0a 100%);
  border-radius: 30% 30% 50% 50% / 40% 40% 60% 60%;
  transform: rotate(-15deg);
  animation: ats-sleep 10s ease-in-out infinite alternate;
}
.scn-antonio-tempts-sebastian .sleeping-gonzalo-ats {
  position: absolute; bottom: 10%; left: 40%; width: 28px; height: 20px;
  background: linear-gradient(180deg, #5a4a3a 0%, #4a3a2a 60%, #2a1a0a 100%);
  border-radius: 40% 40% 50% 50% / 50% 50% 60% 60%;
  transform: rotate(10deg);
  animation: ats-sleep 10s ease-in-out infinite alternate 2s;
}
.scn-antonio-tempts-sebastian .fig-antonio-ats {
  position: absolute; bottom: 28%; left: 60%; width: 24px; height: 60px;
  background: linear-gradient(180deg, #2a1a0a 0%, #1a0f05 70%);
  border-radius: 40% 60% 30% 50% / 70% 30% 40% 60%;
  transform-origin: bottom center;
  animation: ats-fig1 4s ease-in-out infinite;
}
.scn-antonio-tempts-sebastian .fig-sebastian-ats {
  position: absolute; bottom: 28%; left: 68%; width: 22px; height: 58px;
  background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 70%);
  border-radius: 50% 50% 40% 40% / 50% 50% 60% 60%;
  transform-origin: bottom center;
  animation: ats-fig2 4s ease-in-out infinite 0.2s;
}
.scn-antonio-tempts-sebastian .blade-ats {
  position: absolute; bottom: 42%; left: 68%; width: 2px; height: 14px;
  background: linear-gradient(180deg, #ffe0b0 0%, #c0a060 100%);
  border-radius: 0 0 20% 20%;
  box-shadow: 0 0 6px 2px rgba(255, 224, 176, 0.5);
  animation: ats-blade 3s ease-in-out infinite alternate;
}
@keyframes ats-cave {
  0% { opacity: 0.9; }
  50% { opacity: 1; }
  100% { opacity: 0.85; }
}
@keyframes ats-sleep {
  0% { transform: rotate(-15deg) translateY(0); }
  50% { transform: rotate(-17deg) translateY(1px); }
  100% { transform: rotate(-15deg) translateY(0); }
}
@keyframes ats-fig1 {
  0% { transform: translateX(0) rotate(0deg); }
  25% { transform: translateX(-2px) rotate(4deg); }
  50% { transform: translateX(0) rotate(0deg); }
  75% { transform: translateX(2px) rotate(-4deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes ats-fig2 {
  0% { transform: translateX(0) rotate(0deg) scaleY(1); }
  25% { transform: translateX(3px) rotate(5deg) scaleY(1.03); }
  50% { transform: translateX(0) rotate(0deg) scaleY(1); }
  75% { transform: translateX(-3px) rotate(-5deg) scaleY(1.03); }
  100% { transform: translateX(0) rotate(0deg) scaleY(1); }
}
@keyframes ats-blade {
  0% { opacity: 0.3; transform: rotate(-10deg); }
  50% { opacity: 1; transform: rotate(0deg); }
  100% { opacity: 0.5; transform: rotate(10deg); }
}

/* scene caliban-trinculo-meet */
.scn-caliban-trinculo-meet {
  background: linear-gradient(180deg, #a0c8d8 0%, #88b0c0 30%, #6a90a0 70%, #4a7080 100%),
              radial-gradient(ellipse at 30% 50%, #ffe0b0 0%, transparent 80%);
}
.scn-caliban-trinculo-meet .sky-ctm {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #b8d8e8 0%, #90b8c8 50%, transparent 100%);
  animation: ctm-sky 25s ease-in-out infinite alternate;
}
.scn-caliban-trinculo-meet .sun-ctm {
  position: absolute; top: 10%; left: 25%; width: 60px; height: 60px;
  background: radial-gradient(circle, #ffe080 0%, #ffe080 30%, transparent 70%);
  border-radius: 50%;
  filter: blur(10px);
  opacity: 0.6;
  animation: ctm-sun 12s ease-in-out infinite alternate;
}
.scn-caliban-trinculo-meet .ground-ctm {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #5a6a3a 0%, #3a4a2a 40%, #2a3a1a 100%);
  border-radius: 30% 70% 0 0 / 40% 60% 0 0;
  transform: scale(1.02);
}
.scn-caliban-trinculo-meet .cloak-ctm {
  position: absolute; bottom: 15%; left: 45%; width: 100px; height: 70px;
  transform: translateX(-50%);
  background: radial-gradient(ellipse at 50% 100%, #3a2a1a 0%, #2a1a0a 60%, transparent 80%);
  border-radius: 40% 60% 40% 60% / 60% 40% 60% 40%;
  animation: ctm-cloak 6s ease-in-out infinite alternate;
}
.scn-caliban-trinculo-meet .caliban-ctm {
  position: absolute; bottom: 12%; left: 42%; width: 40px; height: 50px;
  background: linear-gradient(180deg, #4a6a4a 0%, #2a4a2a 40%, #1a3a1a 100%);
  border-radius: 30% 70% 50% 50% / 50% 30% 70% 50%;
  transform: rotate(10deg);
  animation: ctm-caliban 5s ease-in-out infinite;
}
.scn-caliban-trinculo-meet .trinculo-legs-ctm {
  position: absolute; bottom: 12%; left: 55%; width: 18px; height: 40px;
  background: linear-gradient(180deg, #6a4a3a 0%, #4a2a1a 100%);
  border-radius: 30% 30% 40% 40% / 30% 30% 70% 70%;
  transform: rotate(-15deg);
  animation: ctm-legs 3s ease-in-out infinite alternate;
}
.scn-caliban-trinculo-meet .puddle-ctm {
  position: absolute; bottom: 5%; left: 40%; width: 60px; height: 10px;
  background: radial-gradient(ellipse at 50% 0%, #6a8a80 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(3px);
  opacity: 0.5;
  animation: ctm-puddle 8s ease-in-out infinite alternate;
}
@keyframes ctm-sky {
  0% { opacity: 0.8; }
  50% { opacity: 1; }
  100% { opacity: 0.85; }
}
@keyframes ctm-sun {
  0% { opacity: 0.4; transform: scale(0.9); }
  50% { opacity: 0.7; transform: scale(1.1); }
  100% { opacity: 0.5; transform: scale(1); }
}
@keyframes ctm-cloak {
  0% { transform: translateX(-50%) rotate(-2deg) scaleX(1); }
  50% { transform: translateX(-50%) rotate(2deg) scaleX(1.02); }
  100% { transform: translateX(-50%) rotate(0deg) scaleX(1); }
}
@keyframes ctm-caliban {
  0% { transform: rotate(10deg) translateX(0); }
  25% { transform: rotate(12deg) translateX(2px); }
  50% { transform: rotate(8deg) translateX(-1px); }
  75% { transform: rotate(11deg) translateX(1px); }
  100% { transform: rotate(10deg) translateX(0); }
}
@keyframes ctm-legs {
  0% { transform: rotate(-15deg) translateX(0); }
  50% { transform: rotate(-10deg) translateX(3px); }
  100% { transform: rotate(-15deg) translateX(0); }
}
@keyframes ctm-puddle {
  0% { transform: scaleY(1); opacity: 0.4; }
  50% { transform: scaleY(1.1); opacity: 0.6; }
  100% { transform: scaleY(1); opacity: 0.4; }
}

/* item-chessboard-miranda */
.scn-item-chessboard-miranda {
  background: linear-gradient(180deg, #2a1a0a 0%, #1a0e05 100%), radial-gradient(ellipse at 50% 60%, #4a3020 0%, transparent 70%);
}
.scn-item-chessboard-miranda .stage-bg {
  position:absolute; inset:0 0 30% 0;
  background: linear-gradient(180deg, #3a2a1a 0%, transparent 100%);
  animation: icm-bg 20s ease-in-out infinite alternate;
}
.scn-item-chessboard-miranda .floor {
  position:absolute; bottom:0; left:0; right:0; height:30%;
  background: linear-gradient(0deg, #2a1a0a 0%, #1a0e05 100%);
  border-radius: 20% 20% 0 0;
}
.scn-item-chessboard-miranda .chessboard {
  position:absolute; bottom:25%; left:50%; width:120px; height:90px;
  transform:translateX(-50%);
  background: linear-gradient(45deg, #c8553d 25%, #d9b896 25%, #d9b896 50%, #c8553d 50%, #c8553d 75%, #d9b896 75%);
  background-size: 20% 20%;
  border: 4px solid #5e1a1d;
  border-radius: 4px;
  box-shadow: 0 8px 24px rgba(0,0,0,.6);
  animation: icm-board 8s ease-in-out infinite;
}
.scn-item-chessboard-miranda .figure-left {
  position:absolute; bottom:28%; left:35%; width:24px; height:45px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: icm-sway 6s ease-in-out infinite;
}
.scn-item-chessboard-miranda .figure-right {
  position:absolute; bottom:28%; right:35%; width:24px; height:45px;
  background: linear-gradient(180deg, #2a1a2a 0%, #1a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: icm-sway 6s ease-in-out infinite reverse;
}
.scn-item-chessboard-miranda .spirit-orb1 {
  position:absolute; top:20%; left:20%; width:40px; height:40px;
  background: radial-gradient(circle, #f5e6c8 0%, #c8b08a 70%);
  border-radius: 50%;
  box-shadow: 0 0 30px 10px rgba(245,230,200,.4);
  animation: icm-spirit 15s ease-in-out infinite;
}
.scn-item-chessboard-miranda .spirit-orb2 {
  position:absolute; top:30%; right:15%; width:35px; height:35px;
  background: radial-gradient(circle, #f5e6c8 0%, #c8b08a 70%);
  border-radius: 50%;
  box-shadow: 0 0 25px 8px rgba(245,230,200,.3);
  animation: icm-spirit 18s ease-in-out infinite reverse;
}
.scn-item-chessboard-miranda .dream-haze {
  position:absolute; inset:0;
  background: radial-gradient(ellipse at 50% 60%, transparent 40%, rgba(0,0,0,.3) 100%);
  animation: icm-haze 10s ease-in-out infinite alternate;
}
@keyframes icm-bg { 0% { opacity:.6; } 50% { opacity:1; } 100% { opacity:.7; } }
@keyframes icm-board { 0%,100% { transform:translateX(-50%) scale(1); } 50% { transform:translateX(-50%) scale(1.02); } }
@keyframes icm-sway { 0% { transform:rotate(-2deg); } 25% { transform:rotate(1deg) translateY(-2px); } 50% { transform:rotate(2deg) translateY(0); } 75% { transform:rotate(-1deg) translateY(-3px); } 100% { transform:rotate(0); } }
@keyframes icm-spirit { 0% { transform:translate(0,0) scale(1); opacity:.6; } 33% { transform:translate(20px,-30px) scale(1.1); opacity:1; } 66% { transform:translate(-15px,10px) scale(.9); opacity:.8; } 100% { transform:translate(5px,-20px) scale(1); opacity:.7; } }
@keyframes icm-haze { 0% { opacity:.3; } 100% { opacity:.5; } }

/* caliban-trapped-pond */
.scn-caliban-trapped-pond {
  background: linear-gradient(180deg, #1a2a1a 0%, #0a0f0a 100%), radial-gradient(ellipse at 30% 70%, #2a3a1a 0%, transparent 80%);
}
.scn-caliban-trapped-pond .pond {
  position:absolute; bottom:25%; left:50%; width:200px; height:80px;
  transform:translateX(-50%);
  background: radial-gradient(ellipse, #4a6a4a 0%, #1a2a1a 100%);
  border-radius: 50%;
  box-shadow: inset 0 10px 20px rgba(0,0,0,.5);
  animation: ctp-pond 12s ease-in-out infinite alternate;
}
.scn-caliban-trapped-pond .rock {
  position:absolute; bottom:35%; left:25%; width:50px; height:30px;
  background: linear-gradient(180deg, #3a3a3a 0%, #1a1a1a 100%);
  border-radius: 40% 60% 20% 80% / 60% 40% 80% 20%;
  box-shadow: 0 4px 8px rgba(0,0,0,.6);
}
.scn-caliban-trapped-pond .figure-caliban {
  position:absolute; bottom:30%; left:35%; width:30px; height:40px;
  background: linear-gradient(180deg, #1a2a1a 0%, #0a1a0a 100%);
  border-radius: 50% 50% 30% 70% / 60% 40% 70% 30%;
  transform-origin: bottom center;
  animation: ctp-wobble 3s ease-in-out infinite;
}
.scn-caliban-trapped-pond .figure-stephano {
  position:absolute; bottom:28%; left:45%; width:28px; height:55px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ctp-wobble 3.5s ease-in-out infinite reverse;
}
.scn-caliban-trapped-pond .figure-trinculo {
  position:absolute; bottom:29%; left:52%; width:22px; height:42px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1a0a 100%);
  border-radius: 50% 50% 50% 50% / 40% 40% 60% 60%;
  transform-origin: bottom center;
  animation: ctp-wobble 4s ease-in-out infinite 0.5s;
}
.scn-caliban-trapped-pond .gaudy-cloth {
  position:absolute; top:20%; left:50%; width:60px; height:80px;
  transform:translateX(-50%);
  background: linear-gradient(180deg, #c8553d 0%, #b87878 30%, #a0461a 60%, #702243 100%);
  border-radius: 10% 10% 20% 20%;
  box-shadow: 0 0 20px 5px rgba(200,85,61,.3);
  animation: ctp-cloth 6s ease-in-out infinite;
}
.scn-caliban-trapped-pond .sparkle {
  position:absolute; top:25%; left:45%; width:8px; height:8px;
  background: radial-gradient(circle, #f5e6c8 0%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 12px 4px rgba(245,230,200,.6);
  animation: ctp-sparkle 1.5s ease-in-out infinite;
}
@keyframes ctp-pond { 0% { transform:translateX(-50%) scaleY(1) } 50% { transform:translateX(-48%) scaleY(1.02) } 100% { transform:translateX(-52%) scaleY(.98) } }
@keyframes ctp-wobble { 0% { transform:rotate(-3deg) } 25% { transform:rotate(2deg) translateX(4px) } 50% { transform:rotate(-1deg) translateY(-2px) } 75% { transform:rotate(3deg) translateX(-4px) } 100% { transform:rotate(0deg) } }
@keyframes ctp-cloth { 0% { transform:translateX(-50%) rotate(0) } 33% { transform:translateX(-50%) rotate(4deg) translateY(3px) } 66% { transform:translateX(-50%) rotate(-5deg) translateY(-2px) } 100% { transform:translateX(-50%) rotate(0) } }
@keyframes ctp-sparkle { 0%,100% { opacity:0; transform:scale(1); } 50% { opacity:1; transform:scale(2); } }

/* item-gaudy-clothes-trap */
.scn-item-gaudy-clothes-trap {
  background: linear-gradient(180deg, #3a1a0a 0%, #1a0a00 100%), radial-gradient(ellipse at 50% 80%, #8a3a1a 0%, transparent 70%);
}
.scn-item-gaudy-clothes-trap .bg-fire {
  position:absolute; inset:0 0 50% 0;
  background: linear-gradient(180deg, #8a3a1a 0%, transparent 100%);
  animation: gct-fire 4s ease-in-out infinite alternate;
}
.scn-item-gaudy-clothes-trap .clothes-a {
  position:absolute; top:25%; left:30%; width:50px; height:90px;
  background: linear-gradient(180deg, #c8553d 0%, #a0461a 100%);
  border-radius: 10% 10% 20% 20%;
  transform-origin: top center;
  animation: gct-sway 7s ease-in-out infinite;
}
.scn-item-gaudy-clothes-trap .clothes-b {
  position:absolute; top:28%; left:45%; width:45px; height:80px;
  background: linear-gradient(180deg, #b87878 0%, #702243 100%);
  border-radius: 10% 10% 20% 20%;
  transform-origin: top center;
  animation: gct-sway 8s ease-in-out infinite reverse;
}
.scn-item-gaudy-clothes-trap .clothes-c {
  position:absolute; top:22%; right:30%; width:55px; height:95px;
  background: linear-gradient(180deg, #5e1a1d 0%, #3a1a1a 100%);
  border-radius: 10% 10% 20% 20%;
  transform-origin: top center;
  animation: gct-sway 6.5s ease-in-out infinite 1s;
}
.scn-item-gaudy-clothes-trap .spirit-hound {
  position:absolute; bottom:20%; left:40%; width:60px; height:35px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 30% 70% / 60% 40% 70% 30%;
  transform-origin: center left;
  animation: gct-hound 5s ease-in-out infinite;
}
.scn-item-gaudy-clothes-trap .shadow {
  position:absolute; bottom:15%; left:35%; width:80px; height:20px;
  background: rgba(0,0,0,.5);
  border-radius: 50%;
  filter: blur(4px);
  animation: gct-shadow 5s ease-in-out infinite;
}
.scn-item-gaudy-clothes-trap .magic-sparkle {
  position:absolute; top:15%; left:50%; width:6px; height:6px;
  background: radial-gradient(circle, #f5e6c8 0%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 10px 3px rgba(245,230,200,.5);
  animation: gct-sparkle 2s ease-in-out infinite;
}
@keyframes gct-fire { 0% { opacity:.7; } 50% { opacity:1; } 100% { opacity:.6; } }
@keyframes gct-sway { 0% { transform:rotate(0); } 25% { transform:rotate(3deg) translateX(2px); } 50% { transform:rotate(-4deg) translateX(-3px); } 75% { transform:rotate(2deg) translateX(1px); } 100% { transform:rotate(0); } }
@keyframes gct-hound { 0% { transform:translateX(0) scaleX(1); } 33% { transform:translateX(20px) scaleX(.95); } 66% { transform:translateX(-10px) scaleX(1.02); } 100% { transform:translateX(0) scaleX(1); } }
@keyframes gct-shadow { 0% { transform:scaleY(1) translateX(0); opacity:.5; } 50% { transform:scaleY(.8) translateX(15px); opacity:.3; } 100% { transform:scaleY(1) translateX(0); opacity:.5; } }
@keyframes gct-sparkle { 0%,100% { opacity:0; transform:scale(1); } 50% { opacity:1; transform:scale(2.5); } }

/* prospero-confronts-enemies */
.scn-prospero-confronts-enemies {
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%), radial-gradient(ellipse at 50% 40%, #3a2a4a 0%, transparent 70%);
}
.scn-prospero-confronts-enemies .floor {
  position:absolute; bottom:0; left:0; right:0; height:40%;
  background: linear-gradient(0deg, #2a1a2a 0%, #1a0a1a 100%);
  border-radius: 30% 30% 0 0 / 20% 20% 0 0;
}
.scn-prospero-confronts-enemies .wall {
  position:absolute; top:0; left:0; right:0; bottom:40%;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  box-shadow: inset 0 40px 60px rgba(0,0,0,.5);
}
.scn-prospero-confronts-enemies .figure-prospero {
  position:absolute; bottom:20%; left:30%; width:35px; height:70px;
  background: linear-gradient(180deg, #3a2a4a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pce-prospero 8s ease-in-out infinite;
}
.scn-prospero-confronts-enemies .figure-alonso {
  position:absolute; bottom:18%; right:25%; width:32px; height:60px;
  background: linear-gradient(180deg, #2a1a3a 0%, #1a0a2a 100%);
  border-radius: 50% 50% 50% 50% / 40% 40% 60% 60%;
  transform-origin: bottom center;
  animation: pce-alonso 6s ease-in-out infinite alternate;
}
.scn-prospero-confronts-enemies .figure-others {
  position:absolute; bottom:20%; right:35%; width:25px; height:50px;
  background: linear-gradient(180deg, #2a2a2a 0%, #1a1a1a 100%);
  border-radius: 50% 50% 40% 40% / 50% 50% 50% 50%;
  transform-origin: bottom center;
  animation: pce-others 7s ease-in-out infinite alternate 0.5s;
}
.scn-prospero-confronts-enemies .chessboard-glow {
  position:absolute; bottom:30%; left:50%; width:80px; height:60px;
  transform:translateX(-50%);
  background: repeating-conic-gradient(#c8553d 0% 25%, #d9b896 0% 50%) 0 0 / 20px 20px;
  border: 3px solid #5e1a1d;
  border-radius: 4px;
  box-shadow: 0 0 40px 15px rgba(200,85,61,.5);
  animation: pce-chessglow 4s ease-in-out infinite alternate;
}
.scn-prospero-confronts-enemies .light-beam {
  position:absolute; top:10%; left:50%; width:120px; height:70%;
  transform:translateX(-50%);
  background: linear-gradient(180deg, rgba(245,230,200,.15) 0%, transparent 100%);
  clip-path: polygon(45% 0, 55% 0, 60% 100%, 40% 100%);
  animation: pce-beam 6s ease-in-out infinite;
}
@keyframes pce-prospero { 0% { transform:rotate(0); } 25% { transform:rotate(1deg) translateY(-2px); } 50% { transform:rotate(0) translateY(-5px); } 75% { transform:rotate(-1deg) translateY(-2px); } 100% { transform:rotate(0); } }
@keyframes pce-alonso { 0% { transform:translateX(0) rotate(0); } 100% { transform:translateX(-10px) rotate(2deg); } }
@keyframes pce-others { 0% { transform:translateX(0) scale(1); opacity:.6; } 100% { transform:translateX(5px) scale(.95); opacity:.9; } }
@keyframes pce-chessglow { 0% { box-shadow: 0 0 30px 10px rgba(200,85,61,.4); } 50% { box-shadow: 0 0 60px 25px rgba(200,85,61,.7); } 100% { box-shadow: 0 0 40px 15px rgba(200,85,61,.5); } }
@keyframes pce-beam { 0% { opacity:.1; } 50% { opacity:.4; } 100% { opacity:.2; } }
/* end per-scene blocks */
