/* 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) */
.scn-epilogue-part3 {
  background: radial-gradient(ellipse at 50% 30%, #f5e6c8 0%, #d4a85c 40%, #8b5e3c 100%), linear-gradient(180deg, #4a2c1a 0%, #2e1b0e 100%);
}
.scn-epilogue-part3 .backdrop {
  position: absolute; inset: 10% 5% 30% 5%; background: linear-gradient(180deg, #7a4a2a 0%, #3a2010 100%); border-radius: 0 0 40% 40%; animation: ep3-backdrop-fade 20s ease-in-out infinite alternate;
}
.scn-epilogue-part3 .curtain-left {
  position: absolute; top: 0; left: 0; width: 30%; height: 100%; background: linear-gradient(135deg, #8b3a1a 0%, #5a2a10 50%, #3a1a0a 100%); border-radius: 0 60% 60% 0 / 0 40% 40% 0; box-shadow: 4px 0 12px rgba(0,0,0,0.5); transform-origin: top left; animation: ep3-curtain-sway 6s ease-in-out infinite;
}
.scn-epilogue-part3 .curtain-right {
  position: absolute; top: 0; right: 0; width: 30%; height: 100%; background: linear-gradient(225deg, #8b3a1a 0%, #5a2a10 50%, #3a1a0a 100%); border-radius: 60% 0 0 60% / 40% 0 0 40%; box-shadow: -4px 0 12px rgba(0,0,0,0.5); transform-origin: top right; animation: ep3-curtain-sway 6s ease-in-out infinite; animation-delay: -3s;
}
.scn-epilogue-part3 .stage-floor {
  position: absolute; bottom: 0; left: 5%; right: 5%; height: 25%; background: linear-gradient(180deg, #c9a86a 0%, #8b6a3a 100%); border-radius: 30% 30% 0 0; box-shadow: inset 0 10px 20px rgba(0,0,0,0.3); animation: ep3-floor-glow 15s ease-in-out infinite alternate;
}
.scn-epilogue-part3 .spotlight {
  position: absolute; top: 15%; left: 50%; width: 40%; height: 50%; transform: translateX(-50%); background: radial-gradient(ellipse at 50% 0%, rgba(255,220,150,0.8) 0%, rgba(255,200,100,0.3) 30%, transparent 100%); border-radius: 50%; filter: blur(4px); animation: ep3-spotlight-pulse 4s ease-in-out infinite;
}
.scn-epilogue-part3 .figure {
  position: absolute; bottom: 28%; left: 50%; width: 20px; height: 50px; transform: translateX(-50%); background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: ep3-figure-breathe 5s ease-in-out infinite;
}
.scn-epilogue-part3 .glow {
  position: absolute; bottom: 30%; left: 50%; width: 60px; height: 60px; transform: translateX(-50%); background: radial-gradient(circle, #ffd080 0%, #c08030 40%, transparent 70%); border-radius: 50%; filter: blur(8px); animation: ep3-glow-pulse 3s ease-in-out infinite alternate;
}
@keyframes ep3-backdrop-fade {
  0% { opacity: 0.8; }
  50% { opacity: 1; }
  100% { opacity: 0.85; }
}
@keyframes ep3-curtain-sway {
  0% { transform: scaleY(1); }
  50% { transform: scaleY(1.02); }
  100% { transform: scaleY(1); }
}
@keyframes ep3-floor-glow {
  0% { box-shadow: inset 0 10px 20px rgba(0,0,0,0.3); }
  50% { box-shadow: inset 0 10px 30px rgba(0,0,0,0.2), inset 0 0 20px rgba(200,170,100,0.1); }
  100% { box-shadow: inset 0 10px 20px rgba(0,0,0,0.3); }
}
@keyframes ep3-spotlight-pulse {
  0% { opacity: 0.85; transform: translateX(-50%) scale(1); }
  50% { opacity: 1; transform: translateX(-50%) scale(1.05); }
  100% { opacity: 0.9; transform: translateX(-50%) scale(1); }
}
@keyframes ep3-figure-breathe {
  0% { transform: translateX(-50%) translateY(0); }
  50% { transform: translateX(-50%) translateY(-3px); }
  100% { transform: translateX(-50%) translateY(0); }
}
@keyframes ep3-glow-pulse {
  0% { transform: translateX(-50%) scale(1); opacity: 0.6; }
  50% { transform: translateX(-50%) scale(1.2); opacity: 0.8; }
  100% { transform: translateX(-50%) scale(1.3); opacity: 0.9; }
}

/* scene 1: orlando-laments-servitude */
.scn-orlando-laments-servitude {
  background:
    linear-gradient(180deg, #87ceeb 0%, #f0e68c 40%, #daa520 100%),
    radial-gradient(ellipse at 30% 40%, #ffe4b5 0%, transparent 60%);
}
.scn-orlando-laments-servitude .sky {
  position:absolute; inset:0 0 60% 0;
  background: linear-gradient(180deg, #b0e0e6 0%, transparent 100%);
  animation: ols1-sky 8s ease-in-out infinite alternate;
}
.scn-orlando-laments-servitude .ground {
  position:absolute; bottom:0; left:0; right:0; height:60%;
  background: linear-gradient(180deg, #228b22 0%, #2e8b57 30%, #006400 100%);
  border-radius: 30% 70% 0 0 / 60% 40% 0 0;
}
.scn-orlando-laments-servitude .tree {
  position:absolute; bottom:30%; left:20%; width:50px; height:120px;
  background: linear-gradient(90deg, #654321 0%, #3b2f2f 100%);
  border-radius: 20% 20% 10% 10%;
  transform-origin: bottom center;
  animation: ols1-tree 6s ease-in-out infinite alternate;
}
.scn-orlando-laments-servitude .figure {
  position:absolute; bottom:35%; left:35%; width:20px; height:50px;
  background: linear-gradient(180deg, #2f2f2f 0%, #1a1a1a 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 30% 30%;
  transform-origin: bottom center;
  animation: ols1-figure 4s ease-in-out infinite alternate;
}
.scn-orlando-laments-servitude .leaf1 {
  position:absolute; top:30%; left:25%; width:10px; height:6px;
  background: #8fbc8f;
  border-radius: 50%;
  opacity:0.8;
  animation: ols1-leaf 5s linear infinite;
}
.scn-orlando-laments-servitude .leaf2 {
  position:absolute; top:40%; left:22%; width:8px; height:4px;
  background: #6b8e23;
  border-radius: 50%;
  opacity:0.6;
  animation: ols1-leaf 5s linear infinite 1.5s;
}
.scn-orlando-laments-servitude .shadow {
  position:absolute; bottom:30%; left:28%; width:60px; height:10px;
  background: rgba(0,0,0,0.3);
  border-radius: 50%;
  animation: ols1-shadow 4s ease-in-out infinite alternate;
}
@keyframes ols1-sky    { 0% { opacity:0.7 } 50% { opacity:1 } 100% { opacity:0.8 } }
@keyframes ols1-tree   { 0% { transform: rotate(-2deg) } 50% { transform: rotate(2deg) } 100% { transform: rotate(-1deg) } }
@keyframes ols1-figure { 0% { transform: rotate(-5deg) translateY(0) } 50% { transform: rotate(0deg) translateY(-2px) } 100% { transform: rotate(-3deg) translateY(-1px) } }
@keyframes ols1-leaf   { 0% { transform: translate(0,0) rotate(0deg); opacity:0.8 } 50% { transform: translate(-20px,40px) rotate(180deg); opacity:0.4 } 100% { transform: translate(-40px,80px) rotate(360deg); opacity:0 } }
@keyframes ols1-shadow { 0% { transform: scaleX(1) } 50% { transform: scaleX(1.2) } 100% { transform: scaleX(0.9) } }

/* scene 2: oliver-orlando-conflict */
.scn-oliver-orlando-conflict {
  background:
    linear-gradient(180deg, #87ceeb 0%, #f5deb3 50%, #deb887 100%),
    radial-gradient(ellipse at 60% 50%, #fffacd 0%, transparent 50%);
}
.scn-oliver-orlando-conflict .sky {
  position:absolute; inset:0 0 50% 0;
  background: linear-gradient(180deg, #b0e0e6 0%, transparent 100%);
  animation: ooc2-sky 6s ease-in-out infinite alternate;
}
.scn-oliver-orlando-conflict .ground {
  position:absolute; bottom:0; left:0; right:0; height:50%;
  background: linear-gradient(180deg, #556b2f 0%, #6b8e23 100%);
  border-radius: 20% 80% 0 0 / 50% 50% 0 0;
}
.scn-oliver-orlando-conflict .fence {
  position:absolute; bottom:35%; left:30%; width:80px; height:20px;
  background: linear-gradient(90deg, #8b4513 0%, #a0522d 100%);
  border-radius: 10%;
  animation: ooc2-fence 10s ease-in-out infinite alternate;
}
.scn-oliver-orlando-conflict .figure-left {
  position:absolute; bottom:30%; left:30%; width:22px; height:55px;
  background: linear-gradient(180deg, #2f2f2f 0%, #1a1a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ooc2-fig-left 3s ease-in-out infinite alternate;
}
.scn-oliver-orlando-conflict .figure-right {
  position:absolute; bottom:30%; right:30%; width:22px; height:55px;
  background: linear-gradient(180deg, #3a3a3a 0%, #202020 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ooc2-fig-right 3s ease-in-out infinite alternate 0.5s;
}
.scn-oliver-orlando-conflict .dust1 {
  position:absolute; bottom:20%; left:40%; width:15px; height:8px;
  background: #d2b48c;
  border-radius: 50%;
  opacity:0.6;
  animation: ooc2-dust 4s linear infinite;
}
.scn-oliver-orlando-conflict .dust2 {
  position:absolute; bottom:20%; left:45%; width:12px; height:6px;
  background: #c2b280;
  border-radius: 50%;
  opacity:0.4;
  animation: ooc2-dust 4s linear infinite 2s;
}
@keyframes ooc2-sky       { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.7 } }
@keyframes ooc2-fence     { 0% { transform: translateY(0) } 50% { transform: translateY(-3px) } 100% { transform: translateY(0) } }
@keyframes ooc2-fig-left  { 0% { transform: rotate(0deg) translateX(0) } 50% { transform: rotate(5deg) translateX(5px) } 100% { transform: rotate(-2deg) translateX(2px) } }
@keyframes ooc2-fig-right { 0% { transform: rotate(0deg) translateX(0) } 50% { transform: rotate(-5deg) translateX(-5px) } 100% { transform: rotate(2deg) translateX(-2px) } }
@keyframes ooc2-dust      { 0% { transform: translateY(0) scale(1); opacity:0.6 } 50% { transform: translateY(-20px) scale(1.5); opacity:0.3 } 100% { transform: translateY(-40px) scale(2); opacity:0 } }

/* scene 3: oliver-soliloquy */
.scn-oliver-soliloquy {
  background:
    linear-gradient(180deg, #4a3728 0%, #2a1f18 50%, #1a1410 100%),
    radial-gradient(ellipse at 30% 70%, #8b7d6b 0%, transparent 60%);
}
.scn-oliver-soliloquy .wall {
  position:absolute; inset:0;
  background: linear-gradient(90deg, #5c4033 0%, #4a3728 40%, #3e2c21 100%);
  animation: oso3-wall 12s ease-in-out infinite alternate;
}
.scn-oliver-soliloquy .window {
  position:absolute; top:10%; left:40%; width:60px; height:80px;
  background: linear-gradient(180deg, #87ceeb 0%, #b0e0e6 100%);
  border: 8px solid #2f1e16;
  border-radius: 10%;
  opacity:0.5;
}
.scn-oliver-soliloquy .light-beam {
  position:absolute; top:10%; left:42%; width:50px; height:60%;
  background: linear-gradient(180deg, rgba(255,255,200,0.3) 0%, transparent 100%);
  transform: skewX(-10deg);
  filter: blur(10px);
  animation: oso3-beam 8s ease-in-out infinite alternate;
}
.scn-oliver-soliloquy .figure {
  position:absolute; bottom:25%; left:45%; width:18px; height:45px;
  background: linear-gradient(180deg, #1a1410 0%, #0a0806 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 30% 30%;
  transform-origin: bottom center;
  animation: oso3-figure 4s ease-in-out infinite alternate;
}
.scn-oliver-soliloquy .table {
  position:absolute; bottom:20%; left:40%; width:60px; height:10px;
  background: linear-gradient(90deg, #3e2c21 0%, #2f1e16 100%);
  border-radius: 5px;
}
.scn-oliver-soliloquy .candle {
  position:absolute; bottom:26%; left:48%; width:6px; height:16px;
  background: #8b7355;
  border-radius: 20%;
}
.scn-oliver-soliloquy .candle-glow {
  position:absolute; bottom:30%; left:47%; width:14px; height:14px;
  background: radial-gradient(circle, #ffd700 0%, #ff8c00 50%, transparent 100%);
  border-radius: 50%;
  animation: oso3-glow 3s ease-in-out infinite alternate;
}
@keyframes oso3-wall   { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.9 } }
@keyframes oso3-beam   { 0% { transform: skewX(-10deg) translateX(0); opacity:0.3 } 50% { transform: skewX(-5deg) translateX(5px); opacity:0.5 } 100% { transform: skewX(-15deg) translateX(-2px); opacity:0.2 } }
@keyframes oso3-figure { 0% { transform: rotate(0deg) translateY(0) } 50% { transform: rotate(-2deg) translateY(-2px) } 100% { transform: rotate(1deg) translateY(-1px) } }
@keyframes oso3-glow   { 0% { transform: scale(0.8); opacity:0.6 } 50% { transform: scale(1.2); opacity:1 } 100% { transform: scale(1); opacity:0.8 } }

/* scene 4: oliver-charles-conversation */
.scn-oliver-charles-conversation {
  background:
    linear-gradient(180deg, #87ceeb 0%, #f5deb3 40%, #daa520 100%),
    radial-gradient(ellipse at 50% 30%, #fffacd 0%, transparent 70%);
}
.scn-oliver-charles-conversation .sky {
  position:absolute; inset:0 0 55% 0;
  background: linear-gradient(180deg, #b0e0e6 0%, transparent 100%);
  animation: occ4-sky 10s ease-in-out infinite alternate;
}
.scn-oliver-charles-conversation .ground {
  position:absolute; bottom:0; left:0; right:0; height:55%;
  background: linear-gradient(180deg, #556b2f 0%, #6b8e23 100%);
  border-radius: 40% 60% 0 0 / 70% 30% 0 0;
}
.scn-oliver-charles-conversation .figure-oliver {
  position:absolute; bottom:30%; left:25%; width:20px; height:50px;
  background: linear-gradient(180deg, #2f2f2f 0%, #1a1a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: occ4-fig1 5s ease-in-out infinite alternate;
}
.scn-oliver-charles-conversation .figure-charles {
  position:absolute; bottom:30%; right:25%; width:22px; height:52px;
  background: linear-gradient(180deg, #3a3a3a 0%, #202020 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: occ4-fig2 5s ease-in-out infinite alternate 1s;
}
.scn-oliver-charles-conversation .tree {
  position:absolute; bottom:30%; left:10%; width:40px; height:100px;
  background: linear-gradient(90deg, #654321 0%, #3b2f2f 100%);
  border-radius: 20% 20% 10% 10%;
  transform-origin: bottom center;
  animation: occ4-tree 7s ease-in-out infinite alternate;
}
.scn-oliver-charles-conversation .shadow-oliver {
  position:absolute; bottom:28%; left:20%; width:40px; height:8px;
  background: rgba(0,0,0,0.3);
  border-radius: 50%;
  animation: occ4-shadow1 5s ease-in-out infinite alternate;
}
.scn-oliver-charles-conversation .shadow-charles {
  position:absolute; bottom:28%; right:20%; width:42px; height:8px;
  background: rgba(0,0,0,0.25);
  border-radius: 50%;
  animation: occ4-shadow2 5s ease-in-out infinite alternate 1s;
}
@keyframes occ4-sky     { 0% { opacity:0.7 } 50% { opacity:1 } 100% { opacity:0.8 } }
@keyframes occ4-tree    { 0% { transform: rotate(-3deg) } 50% { transform: rotate(3deg) } 100% { transform: rotate(-1deg) } }
@keyframes occ4-fig1    { 0% { transform: rotate(0deg) } 50% { transform: rotate(4deg) } 100% { transform: rotate(-2deg) } }
@keyframes occ4-fig2    { 0% { transform: rotate(0deg) } 50% { transform: rotate(-4deg) } 100% { transform: rotate(2deg) } }
@keyframes occ4-shadow1 { 0% { transform: scaleX(1) } 50% { transform: scaleX(1.2) } 100% { transform: scaleX(0.9) } }
@keyframes occ4-shadow2 { 0% { transform: scaleX(1) } 50% { transform: scaleX(0.8) } 100% { transform: scaleX(1.1) } }

.scn-forest-corin-labourer {
  background: 
    linear-gradient(180deg, #87CEEB 0%, #E0F0FF 40%, #F5F5DC 100%),
    radial-gradient(ellipse at 50% 0%, #fff6d5 0%, transparent 80%);
}
.scn-forest-corin-labourer .sky {
  position: absolute; inset: 0 0 60% 0;
  background: linear-gradient(180deg, #a0d4f0 0%, #d0e8f8 60%, transparent 100%);
  animation: cl-sky 20s ease-in-out infinite alternate;
}
.scn-forest-corin-labourer .trees-bg {
  position: absolute; bottom: 30%; left: 5%; right: 5%; height: 40%;
  background: linear-gradient(180deg, #5b8c5a 0%, #3a6b39 100%);
  border-radius: 40% 60% 0 0 / 50% 50% 0 0;
  filter: blur(3px);
  animation: cl-trees-bg 30s ease-in-out infinite alternate;
}
.scn-forest-corin-labourer .trees-fg {
  position: absolute; bottom: 25%; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #4a7a49 0%, #1f4a1e 100%);
  border-radius: 80% 20% 0 0 / 60% 40% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.2);
  animation: cl-trees-fg 25s ease-in-out infinite;
}
.scn-forest-corin-labourer .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #6b8e4e 0%, #3b5e2a 100%);
  border-radius: 20% 30% 0 0 / 30% 40% 0 0;
  box-shadow: inset 0 8px 16px rgba(0,0,0,0.3);
}
.scn-forest-corin-labourer .figure {
  position: absolute; bottom: 20%; left: 45%; width: 30px; height: 60px;
  background: linear-gradient(180deg, #7a5a3a 0%, #4a3020 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cl-figure 8s ease-in-out infinite;
}
.scn-forest-corin-labourer .tool {
  position: absolute; bottom: 18%; left: 52%; width: 4px; height: 40px;
  background: linear-gradient(180deg, #8b6914 0%, #6b4e10 100%);
  border-radius: 2px;
  transform: rotate(20deg);
  animation: cl-tool 8s ease-in-out infinite;
}
.scn-forest-corin-labourer .sun-rays {
  position: absolute; top: 10%; left: 20%; width: 60px; height: 200px;
  background: linear-gradient(180deg, rgba(255,230,150,0.4) 0%, transparent 100%);
  filter: blur(8px);
  animation: cl-sunrays 15s ease-in-out infinite alternate;
}
@keyframes cl-sky { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.85; } }
@keyframes cl-trees-bg { 0% { transform: translateY(0); } 50% { transform: translateY(-4px); } 100% { transform: translateY(0); } }
@keyframes cl-trees-fg { 0% { transform: scale(1); } 50% { transform: scale(1.02) translateY(-2px); } 100% { transform: scale(1); } }
@keyframes cl-figure { 0% { transform: translateX(0) rotate(-2deg); } 25% { transform: translateX(5px) rotate(2deg); } 50% { transform: translateX(10px) rotate(-1deg); } 75% { transform: translateX(5px) rotate(1deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes cl-tool { 0%,100% { transform: rotate(20deg); } 50% { transform: rotate(25deg); } }
@keyframes cl-sunrays { 0% { opacity: 0.5; transform: scaleX(1); } 50% { opacity: 0.8; transform: scaleX(1.2); } 100% { opacity: 0.6; transform: scaleX(1); } }

.scn-forest-rosalind-reading {
  background: 
    linear-gradient(180deg, #a0d0e0 0%, #d0e8f0 40%, #f0f5e0 100%),
    radial-gradient(ellipse at 30% 80%, #f5e8c0 0%, transparent 70%);
}
.scn-forest-rosalind-reading .sky {
  position: absolute; inset: 0 0 55% 0;
  background: linear-gradient(180deg, #90c4d8 0%, #cde0ee 60%, transparent 100%);
  animation: rr-sky 25s ease-in-out infinite alternate;
}
.scn-forest-rosalind-reading .tree-bg {
  position: absolute; bottom: 25%; left: 10%; right: 10%; height: 50%;
  background: linear-gradient(180deg, #4d7a5a 0%, #2d5a3a 100%);
  border-radius: 30% 70% 0 0 / 50% 50% 0 0;
  filter: blur(4px);
  animation: rr-tree-bg 35s ease-in-out infinite alternate;
}
.scn-forest-rosalind-reading .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #6b8e4e 0%, #3b5e2a 100%);
  border-radius: 60% 40% 0 0 / 30% 40% 0 0;
  box-shadow: inset 0 8px 16px rgba(0,0,0,0.25);
}
.scn-forest-rosalind-reading .tree-root {
  position: absolute; bottom: 20%; left: 25%; width: 40px; height: 60px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 10% 10% 30% 30%;
  transform: rotate(-5deg);
}
.scn-forest-rosalind-reading .figure {
  position: absolute; bottom: 18%; left: 30%; width: 28px; height: 55px;
  background: linear-gradient(180deg, #d0a080 0%, #a07050 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: rr-figure 10s ease-in-out infinite;
}
.scn-forest-rosalind-reading .paper {
  position: absolute; bottom: 30%; left: 35%; width: 20px; height: 26px;
  background: linear-gradient(180deg, #f5f0e0 0%, #d0c8b0 100%);
  border-radius: 2px;
  transform: rotate(10deg);
  box-shadow: 0 2px 4px rgba(0,0,0,0.2);
  animation: rr-paper 6s ease-in-out infinite alternate;
}
.scn-forest-rosalind-reading .light-beam {
  position: absolute; top: 10%; left: 35%; width: 40px; height: 150px;
  background: linear-gradient(180deg, rgba(255,240,180,0.5) 0%, transparent 100%);
  filter: blur(10px);
  animation: rr-lightbeam 12s ease-in-out infinite alternate;
}
@keyframes rr-sky { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.8; } }
@keyframes rr-tree-bg { 0% { transform: translateY(0); } 50% { transform: translateY(-5px); } 100% { transform: translateY(0); } }
@keyframes rr-figure { 0% { transform: translateY(0) rotate(0); } 25% { transform: translateY(-2px) rotate(1deg); } 50% { transform: translateY(0) rotate(-1deg); } 75% { transform: translateY(-1px) rotate(1deg); } 100% { transform: translateY(0) rotate(0); } }
@keyframes rr-paper { 0% { transform: rotate(10deg); } 50% { transform: rotate(15deg) scale(1.02); } 100% { transform: rotate(10deg); } }
@keyframes rr-lightbeam { 0% { opacity: 0.4; transform: scaleX(1); } 50% { opacity: 0.7; transform: scaleX(1.1); } 100% { opacity: 0.5; transform: scaleX(1); } }

.scn-forest-celia-reading {
  background: 
    linear-gradient(180deg, #e0b060 0%, #f0d080 30%, #f5e0a0 60%, #faf0d0 100%),
    radial-gradient(ellipse at 60% 90%, #ffdd90 0%, transparent 60%);
}
.scn-forest-celia-reading .sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #d4a050 0%, #ecc880 50%, transparent 100%);
  animation: cr-sky 18s ease-in-out infinite alternate;
}
.scn-forest-celia-reading .tree-bg {
  position: absolute; bottom: 25%; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #7a5a3a 0%, #4a2a1a 100%);
  border-radius: 50% 50% 0 0 / 40% 60% 0 0;
  filter: blur(5px);
  animation: cr-treebg 30s ease-in-out infinite alternate;
}
.scn-forest-celia-reading .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #a08050 0%, #705030 100%);
  border-radius: 30% 70% 0 0 / 20% 30% 0 0;
  box-shadow: inset 0 8px 16px rgba(0,0,0,0.3);
}
.scn-forest-celia-reading .shrub {
  position: absolute; bottom: 22%; left: 15%; width: 50px; height: 30px;
  background: linear-gradient(180deg, #6a8a3a 0%, #3a5a1a 100%);
  border-radius: 60% 40% 50% 50%;
  animation: cr-shrub 20s ease-in-out infinite;
}
.scn-forest-celia-reading .figure {
  position: absolute; bottom: 16%; left: 55%; width: 28px; height: 55px;
  background: linear-gradient(180deg, #b87878 0%, #905858 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cr-figure 12s ease-in-out infinite;
}
.scn-forest-celia-reading .book {
  position: absolute; bottom: 26%; left: 50%; width: 24px; height: 34px;
  background: linear-gradient(180deg, #c8553d 0%, #a04030 100%);
  border-radius: 3px;
  transform: rotate(-10deg);
  box-shadow: 0 3px 6px rgba(0,0,0,0.3);
  animation: cr-book 7s ease-in-out infinite alternate;
}
.scn-forest-celia-reading .leaf-fall {
  position: absolute; top: 10%; left: 80%; width: 10px; height: 10px;
  background: radial-gradient(circle, #d0a030 0%, #a08020 100%);
  border-radius: 50% 0 50% 0;
  animation: cr-leaf 10s linear infinite;
}
@keyframes cr-sky { 0% { opacity: 0.85; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes cr-treebg { 0% { transform: translateY(0); } 50% { transform: translateY(-3px); } 100% { transform: translateY(0); } }
@keyframes cr-shrub { 0% { transform: translateY(0) scale(1); } 50% { transform: translateY(-2px) scale(1.02); } 100% { transform: translateY(0) scale(1); } }
@keyframes cr-figure { 0% { transform: rotate(0) translateY(0); } 25% { transform: rotate(2deg) translateY(-2px); } 50% { transform: rotate(-1deg) translateY(0); } 75% { transform: rotate(1deg) translateY(-1px); } 100% { transform: rotate(0) translateY(0); } }
@keyframes cr-book { 0% { transform: rotate(-10deg); } 50% { transform: rotate(-5deg) scale(1.02); } 100% { transform: rotate(-10deg); } }
@keyframes cr-leaf { 0% { transform: translate(0,0) rotate(0); } 100% { transform: translate(-120px, 300px) rotate(720deg); } }

.scn-forest-rosalind-celia-banter {
  background: 
    linear-gradient(180deg, #b0d8e0 0%, #d0f0e0 30%, #f0f8d0 100%),
    radial-gradient(ellipse at 40% 70%, #ffe680 0%, transparent 60%);
}
.scn-forest-rosalind-celia-banter .sky {
  position: absolute; inset: 0 0 55% 0;
  background: linear-gradient(180deg, #a8d4dc 0%, #c8e8e0 60%, transparent 100%);
  animation: cb-sky 15s ease-in-out infinite alternate;
}
.scn-forest-rosalind-celia-banter .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #8ab87a 0%, #5a8a4a 100%);
  border-radius: 40% 60% 0 0 / 30% 40% 0 0;
  box-shadow: inset 0 6px 12px rgba(0,0,0,0.2);
}
.scn-forest-rosalind-celia-banter .tree {
  position: absolute; bottom: 15%; left: 50%; width: 30px; height: 80px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 10% 10% 20% 20%;
  transform: translateX(-50%);
}
.scn-forest-rosalind-celia-banter .figure-ros {
  position: absolute; bottom: 18%; left: 35%; width: 28px; height: 55px;
  background: linear-gradient(180deg, #d0a080 0%, #a07050 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cb-figros 5s ease-in-out infinite;
}
.scn-forest-rosalind-celia-banter .figure-cel {
  position: absolute; bottom: 18%; left: 55%; width: 26px; height: 52px;
  background: linear-gradient(180deg, #b87878 0%, #905858 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cb-figcel 5s ease-in-out infinite reverse;
}
.scn-forest-rosalind-celia-banter .sparkle {
  position: absolute; top: 20%; left: 45%; width: 12px; height: 12px;
  background: radial-gradient(circle, #ffe680 0%, #ffcc40 50%, transparent 100%);
  border-radius: 50%;
  animation: cb-sparkle 2s ease-in-out infinite;
}
.scn-forest-rosalind-celia-banter .speech {
  position: absolute; bottom: 35%; left: 30%; width: 24px; height: 16px;
  background: rgba(255,240,200,0.6);
  border-radius: 50% 50% 30% 30%;
  filter: blur(2px);
  animation: cb-speech 4s ease-in-out infinite alternate;
}
@keyframes cb-sky { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.85; } }
@keyframes cb-figros { 0% { transform: translateY(0) rotate(0); } 20% { transform: translateY(-5px) rotate(5deg); } 40% { transform: translateY(0) rotate(-3deg); } 60% { transform: translateY(-3px) rotate(4deg); } 80% { transform: translateY(0) rotate(-2deg); } 100% { transform: translateY(0) rotate(0); } }
@keyframes cb-figcel { 0% { transform: translateY(0) rotate(0); } 20% { transform: translateY(-6px) rotate(-4deg); } 40% { transform: translateY(0) rotate(2deg); } 60% { transform: translateY(-4px) rotate(-3deg); } 80% { transform: translateY(0) rotate(1deg); } 100% { transform: translateY(0) rotate(0); } }
@keyframes cb-sparkle { 0% { opacity: 0; transform: scale(0); } 50% { opacity: 1; transform: scale(1.5); } 100% { opacity: 0; transform: scale(0); } }
@keyframes cb-speech { 0% { transform: scaleX(1) scaleY(1); } 50% { transform: scaleX(1.3) scaleY(0.8); } 100% { transform: scaleX(1) scaleY(1); } }

.scn-forest-touchstone-audrey { background: linear-gradient(180deg, #87ceeb 0%, #f0e68c 40%, #f5deb3 100%), radial-gradient(ellipse at 70% 30%, rgba(255,255,200,0.4) 0%, transparent 60%); min-height:300px; position:relative; overflow:hidden; }
.scn-forest-touchstone-audrey .sky-s1 { position:absolute; inset:0; background: linear-gradient(180deg, transparent 0%, rgba(255,255,200,0.3) 100%); pointer-events:none; }
.scn-forest-touchstone-audrey .sun-s1 { position:absolute; top:5%; right:20%; width:60px; height:60px; background: radial-gradient(circle, #fff9c4 0%, #ffe082 60%, transparent 80%); border-radius:50%; box-shadow: 0 0 80px 30px rgba(255,224,130,0.5); animation: s1-sun 8s ease-in-out infinite alternate; }
.scn-forest-touchstone-audrey .ground-s1 { position:absolute; bottom:0; left:0; right:0; height:35%; background: linear-gradient(180deg, #7a9a4a 0%, #5a7a2a 100%); border-radius: 40% 60% 0 0 / 30% 40% 0 0; box-shadow: inset 0 10px 20px rgba(0,0,0,0.2); }
.scn-forest-touchstone-audrey .tree-s1 { position:absolute; bottom:35%; width:40px; height:200px; background: linear-gradient(180deg, #6b4e3a 0%, #4a3525 100%); border-radius: 10px 10px 4px 4px; }
.scn-forest-touchstone-audrey .tree-left-s1 { left:10%; transform: rotate(-5deg); }
.scn-forest-touchstone-audrey .tree-right-s1 { right:15%; transform: rotate(3deg); height:180px; }
.scn-forest-touchstone-audrey .figure-touchstone-s1 { position:absolute; bottom:32%; left:30%; width:24px; height:70px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: s1-touchstone 3s ease-in-out infinite; }
.scn-forest-touchstone-audrey .figure-audrey-s1 { position:absolute; bottom:32%; left:48%; width:22px; height:66px; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: s1-audrey 3.5s ease-in-out infinite 0.5s; }
.scn-forest-touchstone-audrey .goat-s1 { position:absolute; bottom:30%; left:55%; width:30px; height:18px; background: radial-gradient(ellipse at 30% 50%, #d4c4a0 0%, #b4a480 100%); border-radius: 50% 30% 30% 50% / 60% 40% 40% 60%; filter: blur(1px); animation: s1-goat 4s ease-in-out infinite; }
.scn-forest-touchstone-audrey .leaf-s1 { position:absolute; top:15%; width:12px; height:6px; background: #6a9a3a; border-radius: 0 50% 50% 0; filter: blur(1px); animation: s1-leaf 6s linear infinite; }
.scn-forest-touchstone-audrey .leaf-a-s1 { left:20%; animation-delay: 0s; }
.scn-forest-touchstone-audrey .leaf-b-s1 { left:70%; animation-delay: 3s; }
@keyframes s1-sun { 0% { transform: translateY(0) scale(1); opacity:0.9; } 50% { transform: translateY(-10px) scale(1.05); opacity:1; } 100% { transform: translateY(0) scale(1); opacity:0.9; } }
@keyframes s1-touchstone { 0%,100% { transform: translateX(0) rotate(2deg); } 25% { transform: translateX(5px) rotate(-3deg) translateY(-2px); } 50% { transform: translateX(-3px) rotate(1deg) translateY(0); } 75% { transform: translateX(4px) rotate(-2deg) translateY(-1px); } }
@keyframes s1-audrey { 0%,100% { transform: translateX(0) rotate(-1deg); } 33% { transform: translateX(-4px) rotate(2deg) translateY(-1px); } 66% { transform: translateX(3px) rotate(-1deg) translateY(0); } }
@keyframes s1-goat { 0%,100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-2px) rotate(10deg); } }
@keyframes s1-leaf { 0% { transform: translate(0,0) rotate(0deg) scale(1); opacity:1; } 50% { transform: translate(30px, 60px) rotate(180deg) scale(0.8); opacity:0.6; } 100% { transform: translate(60px, 120px) rotate(360deg) scale(0.5); opacity:0; } }

.scn-forest-audrey-honest { background: linear-gradient(180deg, #add8e6 0%, #f0e68c 50%, #f5deb3 100%), radial-gradient(ellipse at 50% 20%, rgba(255,255,200,0.3) 0%, transparent 60%); min-height:300px; position:relative; overflow:hidden; }
.scn-forest-audrey-honest .sky-s2 { position:absolute; inset:0; background: linear-gradient(180deg, rgba(255,255,240,0.2) 0%, transparent 100%); }
.scn-forest-audrey-honest .sunbeam-s2 { position:absolute; top:0; left:30%; width:10px; height:100%; background: linear-gradient(180deg, rgba(255,255,200,0.6) 0%, transparent 100%); filter: blur(5px); animation: s2-beam 12s ease-in-out infinite alternate; }
.scn-forest-audrey-honest .ground-s2 { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #7a9a5a 0%, #4a6a2a 100%); border-radius: 20% 80% 0 0 / 30% 50% 0 0; }
.scn-forest-audrey-honest .tree-s2 { position:absolute; bottom:30%; left:50%; width:30px; height:180px; background: linear-gradient(180deg, #7a5a3a 0%, #4a3a1a 100%); transform: translateX(-50%); border-radius: 8px 8px 4px 4px; box-shadow: 0 4px 8px rgba(0,0,0,0.3); }
.scn-forest-audrey-honest .figure-touchstone-s2 { position:absolute; bottom:25%; left:40%; width:20px; height:60px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: s2-fig1 5s ease-in-out infinite; }
.scn-forest-audrey-honest .figure-audrey-s2 { position:absolute; bottom:25%; left:55%; width:20px; height:58px; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: s2-fig2 5s ease-in-out infinite 1s; }
.scn-forest-audrey-honest .grass-s2 { position:absolute; bottom:0; left:0; right:0; height:5%; background: repeating-linear-gradient(90deg, #5a7a2a 0px, #7a9a4a 4px, transparent 4px, transparent 8px); background-size: 8px 100%; animation: s2-grass 4s linear infinite; }
@keyframes s2-beam { 0% { opacity:0.3; transform: scaleX(1); } 50% { opacity:0.8; transform: scaleX(2); } 100% { opacity:0.3; transform: scaleX(1); } }
@keyframes s2-fig1 { 0%,100% { transform: translateY(0) rotate(1deg); } 50% { transform: translateY(-2px) rotate(-1deg); } }
@keyframes s2-fig2 { 0%,100% { transform: translateY(0) rotate(-1deg); } 50% { transform: translateY(-3px) rotate(1deg); } }
@keyframes s2-grass { 0% { background-position: 0 0; } 100% { background-position: 8px 0; } }

.scn-forest-sir-oliver-martext { background: linear-gradient(180deg, #87ceeb 0%, #f5deb3 60%, #d2b48c 100%), radial-gradient(ellipse at 20% 30%, rgba(255,255,200,0.5) 0%, transparent 50%); min-height:300px; position:relative; overflow:hidden; }
.scn-forest-sir-oliver-martext .sky-s3 { position:absolute; inset:0; background: linear-gradient(180deg, transparent 0%, rgba(255,255,240,0.2) 100%); }
.scn-forest-sir-oliver-martext .ground-s3 { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, #7a9a4a 0%, #5a7a2a 100%); border-radius: 60% 40% 0 0 / 40% 30% 0 0; }
.scn-forest-sir-oliver-martext .bush-s3 { position:absolute; bottom:30%; right:10%; width:100px; height:60px; background: radial-gradient(ellipse at 50% 100%, #4a7a2a 0%, #3a6a1a 70%, transparent 100%); border-radius: 50%; filter: blur(3px); }
.scn-forest-sir-oliver-martext .figure-priest-s3 { position:absolute; bottom:35%; left:40%; width:22px; height:80px; background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: s3-priest 3s ease-in-out infinite; }
.scn-forest-sir-oliver-martext .staff-s3 { position:absolute; bottom:38%; left:38%; width:4px; height:40px; background: #6b4e3a; border-radius: 2px; transform: rotate(10deg); animation: s3-staff 3s ease-in-out infinite; }
.scn-forest-sir-oliver-martext .bird-s3 { position:absolute; top:20%; width:20px; height:12px; background: #4a3a2a; border-radius: 50% 50% 0 0; clip-path: polygon(0% 100%, 50% 0%, 100% 100%); animation: s3-bird 8s linear infinite; }
.scn-forest-sir-oliver-martext .bird-a-s3 { left:10%; animation-delay: 0s; }
.scn-forest-sir-oliver-martext .bird-b-s3 { left:70%; animation-delay: 4s; }
@keyframes s3-priest { 0%,100% { transform: translateY(0) rotate(-2deg); } 30% { transform: translateY(-3px) rotate(3deg) translateX(2px); } 60% { transform: translateY(0) rotate(-2deg) translateX(5px); } }
@keyframes s3-staff { 0%,100% { transform: rotate(10deg); } 50% { transform: rotate(-10deg); } }
@keyframes s3-bird { 0% { transform: translateX(0) translateY(0) scaleX(1); } 25% { transform: translateX(20vw) translateY(-10px) scaleX(-1); } 50% { transform: translateX(40vw) translateY(0) scaleX(1); } 75% { transform: translateX(60vw) translateY(-5px) scaleX(-1); } 100% { transform: translateX(80vw) translateY(0) scaleX(1); } }

.scn-wedding-under-tree { background: linear-gradient(180deg, #b0c4de 0%, #9fb4c4 50%, #d3d3d3 100%), radial-gradient(ellipse at 50% 30%, rgba(200,200,220,0.4) 0%, transparent 60%); min-height:300px; position:relative; overflow:hidden; }
.scn-wedding-under-tree .sky-s4 { position:absolute; inset:0; background: linear-gradient(180deg, rgba(255,255,255,0.1) 0%, transparent 100%); }
.scn-wedding-under-tree .cloud-s4 { position:absolute; top:8%; width:120px; height:25px; background: linear-gradient(180deg, rgba(220,220,230,0.7) 0%, rgba(200,200,210,0.3) 100%); border-radius: 50%; filter: blur(8px); animation: s4-cloud 30s linear infinite; }
.scn-wedding-under-tree .cloud-a-s4 { left:-10%; animation-delay: 0s; }
.scn-wedding-under-tree .cloud-b-s4 { left:40%; animation-delay: -15s; width:80px; height:20px; }
.scn-wedding-under-tree .ground-s4 { position:absolute; bottom:0; left:0; right:0; height:35%; background: linear-gradient(180deg, #7a8a6a 0%, #5a6a4a 100%); border-radius: 30% 70% 0 0 / 20% 30% 0 0; }
.scn-wedding-under-tree .tree-s4 { position:absolute; bottom:30%; left:50%; width:40px; height:200px; background: linear-gradient(180deg, #6b5a4a 0%, #3a2a1a 100%); transform: translateX(-50%); border-radius: 8px 8px 4px 4px; box-shadow: 0 6px 12px rgba(0,0,0,0.4); animation: s4-tree 6s ease-in-out infinite; }
.scn-wedding-under-tree .figure-groom-s4 { position:absolute; bottom:28%; left:40%; width:20px; height:55px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: s4-groom 4s ease-in-out infinite; }
.scn-wedding-under-tree .figure-bride-s4 { position:absolute; bottom:28%; left:48%; width:20px; height:55px; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: s4-bride 4.5s ease-in-out infinite 0.5s; }
.scn-wedding-under-tree .figure-priest-s4 { position:absolute; bottom:30%; left:35%; width:18px; height:60px; background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: s4-priest 5s ease-in-out infinite 1s; }
.scn-wedding-under-tree .altar-s4 { position:absolute; bottom:30%; left:44%; width:30px; height:20px; background: linear-gradient(180deg, #8b7355 0%, #6b5335 100%); border-radius: 4px; box-shadow: 0 2px 6px rgba(0,0,0,0.3); transform: translateX(50%); animation: s4-altar 3s ease-in-out infinite; }
@keyframes s4-cloud { 0% { transform: translateX(-120px); } 100% { transform: translateX(calc(100vw + 120px)); } }
@keyframes s4-tree { 0%,100% { transform: translateX(-50%) rotate(0deg); } 50% { transform: translateX(-50%) rotate(3deg); } }
@keyframes s4-groom { 0%,100% { transform: translateY(0) rotate(1deg); } 50% { transform: translateY(-2px) rotate(-2deg); } }
@keyframes s4-bride { 0%,100% { transform: translateY(0) rotate(-1deg); } 50% { transform: translateY(-3px) rotate(2deg); } }
@keyframes s4-priest { 0%,100% { transform: translateY(0) scaleY(1); } 50% { transform: translateY(-2px) scaleY(1.03); } }
@keyframes s4-altar { 0%,100% { transform: translateX(50%) scale(1); } 50% { transform: translateX(50%) scale(1.02); } }

.scn-forest-jaques-melancholy { background: linear-gradient(180deg, #1a2a1a 0%, #0f1f0f 40%, #0a0f0a 100%), radial-gradient(ellipse at 70% 20%, #4a5a3a 0%, transparent 70%); }
.scn-forest-jaques-melancholy .bg { position:absolute; inset:0; background: radial-gradient(ellipse at 70% 20%, #4a5a3a 0%, #1a2a1a 70%); animation: fj-bg 20s ease-in-out infinite alternate; }
.scn-forest-jaques-melancholy .sun-rays { position:absolute; top:10%; left:55%; width:300px; height:400px; background: linear-gradient(180deg, rgba(255,220,120,.25) 0%, transparent 80%); transform-origin: top left; border-radius:50%; filter: blur(40px); animation: fj-rays 12s ease-in-out infinite; }
.scn-forest-jaques-melancholy .trunk { position:absolute; bottom:20%; left:45%; width:30px; height:60%; background: linear-gradient(90deg, #2a1a0a 0%, #3a2a1a 50%, #1a0a00 100%); border-radius:20% 10% 0 0; animation: fj-trunk 8s ease-in-out infinite; }
.scn-forest-jaques-melancholy .branches { position:absolute; top:20%; left:43%; width:80px; height:10px; background: linear-gradient(90deg, #2a1a0a 0%, #3a2a1a 50%, transparent 100%); border-radius:50%; transform: rotate(-20deg); animation: fj-branch 10s ease-in-out infinite alternate; }
.scn-forest-jaques-melancholy .figure { position:absolute; bottom:30%; left:40%; width:20px; height:45px; background: linear-gradient(180deg, #0f0f1a 0%, #050510 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: fj-figure 6s ease-in-out infinite; }
.scn-forest-jaques-melancholy .ground { position:absolute; bottom:0; left:0; right:0; height:25%; background: linear-gradient(180deg, #1a2a1a 0%, #0f1f0f 100%); border-radius: 30% 70% 0 0 / 50% 50% 0 0; animation: fj-ground 15s ease-in-out infinite alternate; }
.scn-forest-jaques-melancholy .leaves { position:absolute; top:10%; left:30%; width:120px; height:60px; background: radial-gradient(circle at 30% 40%, #1a3a1a 0%, transparent 60%); filter: blur(8px); animation: fj-leaves 30s linear infinite; }
@keyframes fj-bg { 0%,100% { opacity:.9 } 50% { opacity:1 } }
@keyframes fj-rays { 0% { transform: translate(0,0) scale(1); opacity:.6 } 33% { transform: translate(10px,8px) scale(1.05); opacity:.9 } 66% { transform: translate(-5px,4px) scale(.95); opacity:.7 } 100% { transform: translate(5px,-3px) scale(1); opacity:.8 } }
@keyframes fj-trunk { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-2px) } }
@keyframes fj-branch { 0% { transform: rotate(-20deg) } 100% { transform: rotate(-15deg) } }
@keyframes fj-figure { 0% { transform: translateX(0) translateY(0) rotate(-2deg) } 33% { transform: translateX(5px) translateY(-3px) rotate(1deg) } 66% { transform: translateX(10px) translateY(0) rotate(-1deg) } 100% { transform: translateX(15px) translateY(-1px) rotate(0) } }
@keyframes fj-ground { 0% { transform: translateY(0) scaleY(1) } 50% { transform: translateY(4px) scaleY(1.02) } 100% { transform: translateY(0) scaleY(1) } }
@keyframes fj-leaves { 0% { transform: translateX(-20px) } 100% { transform: translateX(120vw) } }

.scn-forest-song-ducdame { background: linear-gradient(180deg, #8fb0c8 0%, #b0d0e8 40%, #c8e0f0 100%), radial-gradient(ellipse at 50% 0%, #fff0b0 0%, transparent 70%); }
.scn-forest-song-ducdame .sky { position:absolute; inset:0 0 40% 0; background: radial-gradient(ellipse at 50% 20%, #d0e8f8 0%, #8fb0c8 100%); animation: fs-sky 15s ease-in-out infinite alternate; }
.scn-forest-song-ducdame .sun { position:absolute; top:8%; right:20%; width:60px; height:60px; background: radial-gradient(circle, #ffe88a 0%, #ffcc50 60%, transparent 80%); border-radius:50%; box-shadow: 0 0 60px 30px rgba(255,200,80,.5); animation: fs-sun 8s ease-in-out infinite; }
.scn-forest-song-ducdame .meadow { position:absolute; bottom:0; left:0; right:0; height:45%; background: linear-gradient(180deg, #7aaa50 0%, #4a8030 50%, #2a6010 100%); border-radius: 60% 40% 0 0 / 40% 60% 0 0; animation: fs-meadow 20s ease-in-out infinite alternate; }
.scn-forest-song-ducdame .dancer { position:absolute; bottom:25%; left:45%; width:30px; height:50px; background: linear-gradient(180deg, #d05030 0%, #b03020 50%, #801010 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: fs-dancer 0.8s ease-in-out infinite; }
.scn-forest-song-ducdame .lute { position:absolute; bottom:30%; left:43%; width:22px; height:14px; background: linear-gradient(90deg, #c07030 0%, #d08030 50%, #b06020 100%); border-radius: 50% 50% 40% 40% / 60% 60%; transform: rotate(-20deg); animation: fs-lute 1.2s ease-in-out infinite; }
.scn-forest-song-ducdame .notes { position:absolute; top:20%; left:30%; width:45px; height:65px; background: radial-gradient(circle at 50% 70%, #ffcc44 0%, transparent 70%); filter: blur(3px); animation: fs-notes 4s ease-in-out infinite; }
@keyframes fs-sky { 0% { opacity:.7 } 50% { opacity:1 } 100% { opacity:.8 } }
@keyframes fs-sun { 0% { transform: scale(1) translateY(0) } 50% { transform: scale(1.1) translateY(-5px) } 100% { transform: scale(1) translateY(0) } }
@keyframes fs-meadow { 0% { transform: scaleX(1) } 50% { transform: scaleX(1.02) } 100% { transform: scaleX(1) } }
@keyframes fs-dancer { 0% { transform: translateX(0) rotate(-10deg) } 25% { transform: translateX(8px) rotate(10deg) } 50% { transform: translateX(16px) rotate(-10deg) } 75% { transform: translateX(24px) rotate(10deg) } 100% { transform: translateX(32px) rotate(-10deg) } }
@keyframes fs-lute { 0% { transform: rotate(-15deg) translateY(0) } 50% { transform: rotate(-25deg) translateY(-3px) } 100% { transform: rotate(-15deg) translateY(0) } }
@keyframes fs-notes { 0% { transform: translateY(0) scale(1); opacity:0 } 30% { opacity:1 } 70% { opacity:1 } 100% { transform: translateY(-80px) scale(1.3); opacity:0 } }

.scn-forest-orlando-adam { background: linear-gradient(180deg, #5a7a5a 0%, #3a5a3a 40%, #1a2a1a 100%), radial-gradient(ellipse at 30% 10%, #a0c080 0%, transparent 80%); }
.scn-forest-orlando-adam .bg { position:absolute; inset:0; background: radial-gradient(ellipse at 30% 10%, #a0c080 0%, #2a4a2a 80%); animation: fo-bg 10s ease-in-out infinite alternate; }
.scn-forest-orlando-adam .sun { position:absolute; top:5%; left:25%; width:80px; height:80px; background: radial-gradient(circle, #ffe880 0%, #ffcc50 50%, transparent 80%); border-radius:50%; box-shadow: 0 0 80px 40px rgba(255,200,80,.4); animation: fo-sun 6s ease-in-out infinite; }
.scn-forest-orlando-adam .shadow-tree { position:absolute; top:-5%; left:55%; width:200px; height:120%; background: linear-gradient(180deg, #1a2a1a 0%, #0a1a0a 100%); clip-path: polygon(40% 0%, 60% 0%, 70% 30%, 80% 50%, 60% 100%, 40% 100%, 20% 50%, 30% 30%); animation: fo-tree 12s ease-in-out infinite alternate; }
.scn-forest-orlando-adam .figure-standing { position:absolute; bottom:20%; left:35%; width:25px; height:55px; background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: fo-standing 4s ease-in-out infinite; }
.scn-forest-orlando-adam .figure-lying { position:absolute; bottom:15%; left:30%; width:30px; height:15px; background: linear-gradient(180deg, #3a2a2a 0%, #2a1a1a 100%); border-radius: 50% 50% 30% 30% / 80% 80% 40% 40%; transform: rotate(-20deg); animation: fo-lying 8s ease-in-out infinite; }
.scn-forest-orlando-adam .ground { position:absolute; bottom:0; left:0; right:0; height:22%; background: linear-gradient(180deg, #2a3a1a 0%, #1a2a0a 100%); border-radius: 40% 60% 0 0 / 60% 40% 0 0; animation: fo-ground 14s ease-in-out infinite alternate; }
.scn-forest-orlando-adam .staff { position:absolute; bottom:30%; left:38%; width:4px; height:60px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); transform: rotate(10deg); animation: fo-staff 5s ease-in-out infinite; }
@keyframes fo-bg { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.7 } }
@keyframes fo-sun { 0% { transform: scale(1) translate(0,0) } 50% { transform: scale(1.15) translate(8px,-5px) } 100% { transform: scale(1) translate(0,0) } }
@keyframes fo-tree { 0% { transform: translateX(0) skewX(0) } 100% { transform: translateX(-10px) skewX(2deg) } }
@keyframes fo-standing { 0% { transform: translateX(0) rotate(0) } 25% { transform: translateX(3px) rotate(1deg) } 50% { transform: translateX(6px) rotate(-1deg) } 75% { transform: translateX(3px) rotate(0) } 100% { transform: translateX(0) rotate(0) } }
@keyframes fo-lying { 0% { transform: rotate(-20deg) translateY(0) } 50% { transform: rotate(-15deg) translateY(-2px) } 100% { transform: rotate(-20deg) translateY(0) } }
@keyframes fo-ground { 0% { transform: translateY(0) scaleY(1) } 50% { transform: translateY(3px) scaleY(1.01) } 100% { transform: translateY(0) scaleY(1) } }
@keyframes fo-staff { 0% { transform: rotate(10deg) } 50% { transform: rotate(14deg) } 100% { transform: rotate(10deg) } }

.scn-forest-banquet-duke { background: linear-gradient(180deg, #7a9a7a 0%, #5a7a5a 50%, #3a5a3a 100%), radial-gradient(ellipse at 50% 0%, #c8e8b0 0%, transparent 80%); }
.scn-forest-banquet-duke .sky { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #b0d0b0 0%, #7a9a7a 100%); animation: fb-sky 20s ease-in-out infinite alternate; }
.scn-forest-banquet-duke .tree-arch { position:absolute; top:0; left:0; right:0; height:60%; background: radial-gradient(ellipse at 30% 20%, #4a6a3a 0%, transparent 70%), radial-gradient(ellipse at 70% 20%, #4a6a3a 0%, transparent 70%); animation: fb-tree 30s ease-in-out infinite; }
.scn-forest-banquet-duke .table-top { position:absolute; bottom:30%; left:35%; width:120px; height:12px; background: linear-gradient(90deg, #6a4a3a 0%, #8a6a5a 50%, #6a4a3a 100%); border-radius: 4px; transform: scaleX(.95); animation: fb-tabletop 8s ease-in-out infinite; }
.scn-forest-banquet-duke .table-legs { position:absolute; bottom:20%; left:42%; width:6px; height:30px; background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%); border-radius: 2px; box-shadow: 50px 0 0 0 #2a1a0a; animation: fb-tablelegs 8s ease-in-out infinite; }
.scn-forest-banquet-duke .plate { position:absolute; bottom:36%; left:40%; width:30px; height:8px; background: radial-gradient(ellipse, #e0c080 0%, #c8a860 100%); border-radius: 50%; box-shadow: 0 2px 4px rgba(0,0,0,.3); animation: fb-plate 6s ease-in-out infinite; }
.scn-forest-banquet-duke .figure-left { position:absolute; bottom:32%; left:32%; width:22px; 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: fb-figureL 5s ease-in-out infinite; }
.scn-forest-banquet-duke .figure-right { position:absolute; bottom:32%; right:32%; width:22px; 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: fb-figureR 5s ease-in-out infinite; animation-delay: 1s; }
.scn-forest-banquet-duke .cloth { position:absolute; bottom:28%; left:30%; width:140px; height:18px; background: linear-gradient(90deg, #c8a060 0%, #e0c080 50%, #b09050 100%); border-radius: 4px; opacity: .7; animation: fb-cloth 15s ease-in-out infinite alternate; }
@keyframes fb-sky { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.9 } }
@keyframes fb-tree { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.02) } 100% { transform: scaleY(1) } }
@keyframes fb-tabletop { 0% { transform: translateY(0) scaleX(.95) } 50% { transform: translateY(2px) scaleX(1) } 100% { transform: translateY(0) scaleX(.95) } }
@keyframes fb-tablelegs { 0% { transform: translateY(0) } 50% { transform: translateY(3px) } 100% { transform: translateY(0) } }
@keyframes fb-plate { 0% { transform: translateY(0) } 50% { transform: translateY(3px) } 100% { transform: translateY(0) } }
@keyframes fb-figureL { 0% { transform: translateX(0) rotate(0) } 30% { transform: translateX(5px) rotate(2deg) } 60% { transform: translateX(-3px) rotate(-1deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes fb-figureR { 0% { transform: translateX(0) rotate(0) } 30% { transform: translateX(-5px) rotate(-2deg) } 60% { transform: translateX(3px) rotate(1deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes fb-cloth { 0% { transform: scaleX(1) } 50% { transform: scaleX(1.03) } 100% { transform: scaleX(1) } }

.scn-forest-rosalind-wonder {
  background:
    linear-gradient(180deg, #87CEEB 0%, #b8e0b0 40%, #6a8a4a 100%),
    radial-gradient(ellipse at 70% 30%, #f0e68c 0%, transparent 60%);
}
.scn-forest-rosalind-wonder .sky { position:absolute; inset:0 0 55% 0; background:linear-gradient(180deg, #9bc8f0 0%, #b8e0b0 100%); animation: rw-sky 12s ease-in-out infinite alternate; }
.scn-forest-rosalind-wonder .sun { position:absolute; top:8%; left:75%; width:60px; height:60px; background:radial-gradient(circle, #ffd700 0%, #f0c040 50%, transparent 70%); border-radius:50%; animation: rw-sun 8s ease-in-out infinite; }
.scn-forest-rosalind-wonder .beams { position:absolute; top:8%; left:70%; width:200px; height:300px; background:linear-gradient(135deg, rgba(255,215,0,0.3) 0%, transparent 50%, rgba(255,215,0,0.15) 100%); transform-origin:0% 0%; clip-path:polygon(0 0, 100% 20%, 70% 100%, 0 80%); animation: rw-beams 8s ease-in-out infinite; }
.scn-forest-rosalind-wonder .palm { position:absolute; bottom:30%; left:30%; width:20px; height:120px; background:linear-gradient(180deg, #5a3a1a 0%, #3a2a0a 100%); border-radius: 30% 30% 20% 20% / 40% 40% 20% 20%; transform:rotate(-10deg); animation: rw-palm 10s ease-in-out infinite; }
.scn-forest-rosalind-wonder .palm::after { content:''; position:absolute; top:-30px; left:-40px; width:100px; height:40px; background:radial-gradient(ellipse at 50% 50%, #3a6a2a 0%, #2a5a1a 100%); border-radius:50%; transform:rotate(15deg); }
.scn-forest-rosalind-wonder .chain { position:absolute; bottom:50%; left:35%; width:30px; height:40px; background: repeating-linear-gradient(45deg, #a08060 0px, #a08060 3px, #c0a080 3px, #c0a080 6px); border-radius: 30%; box-shadow: 0 0 10px rgba(160,128,96,0.5); animation: rw-chain 4s ease-in-out infinite alternate; }
.scn-forest-rosalind-wonder .figure { position:absolute; bottom:25%; left:45%; width:20px; height:50px; background:linear-gradient(180deg, #d2b48c 0%, #b0946a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: rw-figure 6s ease-in-out infinite; }
.scn-forest-rosalind-wonder .butterfly { position:absolute; top:40%; left:60%; width:12px; height:8px; background:radial-gradient(circle, #dda0dd 0%, #ba55d3 100%); border-radius:50%; box-shadow: 0 0 8px rgba(186,85,211,0.5); animation: rw-butterfly 5s ease-in-out infinite alternate; }

@keyframes rw-sky { 0%{opacity:0.9} 50%{opacity:1} 100%{opacity:0.8} }
@keyframes rw-sun { 0%{transform:scale(0.95) rotate(-2deg)} 50%{transform:scale(1.05) rotate(2deg)} 100%{transform:scale(0.95) rotate(-2deg)} }
@keyframes rw-beams { 0%{transform:rotate(-3deg) scaleX(0.95)} 50%{transform:rotate(3deg) scaleX(1.05)} 100%{transform:rotate(-3deg) scaleX(0.95)} }
@keyframes rw-palm { 0%{transform:rotate(-10deg) translateX(0)} 50%{transform:rotate(-8deg) translateX(-2px)} 100%{transform:rotate(-10deg) translateX(0)} }
@keyframes rw-chain { 0%{transform:translateY(0) rotate(0deg)} 50%{transform:translateY(-3px) rotate(5deg)} 100%{transform:translateY(0) rotate(0deg)} }
@keyframes rw-figure { 0%{transform:translateX(0) rotate(-1deg)} 50%{transform:translateX(3px) rotate(1deg)} 100%{transform:translateX(0) rotate(-1deg)} }
@keyframes rw-butterfly { 0%{transform:translateY(0) scale(1)} 50%{transform:translateY(-8px) scale(0.8)} 100%{transform:translateY(0) scale(1)} }

.scn-forest-celia-chain-reveal {
  background:
    linear-gradient(180deg, #b0c4de 0%, #6b8e2a 50%, #3a5a1a 100%),
    radial-gradient(circle at 20% 80%, #d2b48c 0%, transparent 40%);
}
.scn-forest-celia-chain-reveal .bg { position:absolute; inset:0; background: linear-gradient(180deg, #8fbc8f 0%, #5a7a2a 100%); animation: cr-bg 15s ease-in-out infinite alternate; }
.scn-forest-celia-chain-reveal .trunk { position:absolute; bottom:0; left:20%; width:30px; height:90%; background: linear-gradient(180deg, #4a2a0a 0%, #2a1a0a 100%); border-radius: 20% 20% 0 0; transform:rotate(2deg); }
.scn-forest-celia-chain-reveal .man-head { position:absolute; bottom:45%; left:40%; width:40px; height:50px; background: linear-gradient(180deg, #c0a070 0%, #a08050 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: cr-head 5s ease-in-out infinite alternate; }
.scn-forest-celia-chain-reveal .man-head::after { content:''; position:absolute; top:10px; left:8px; width:14px; height:8px; background: #5a3a1a; border-radius: 30% 30% 0 0; } /* beard outline */
.scn-forest-celia-chain-reveal .chain-link { position:absolute; bottom:42%; left:42%; width:20px; height:25px; background: repeating-linear-gradient(45deg, #c0a080 0px, #c0a080 3px, #e0c0a0 3px, #e0c0a0 6px); border-radius: 30%; box-shadow: 0 0 8px rgba(192,160,128,0.6); animation: cr-chain 3s ease-in-out infinite; }
.scn-forest-celia-chain-reveal .beard { position:absolute; bottom:42%; left:38%; width:24px; height:16px; background: #6a4a2a; border-radius: 0 0 50% 50%; clip-path: polygon(0 0, 100% 0, 80% 100%, 20% 100%); animation: cr-beard 4s ease-in-out infinite alternate; }
.scn-forest-celia-chain-reveal .light-ray { position:absolute; top:10%; right:10%; width:120px; height:200px; background: linear-gradient(125deg, rgba(255,215,0,0.2) 0%, transparent 70%); clip-path: polygon(0 0, 100% 20%, 60% 100%, 0 80%); animation: cr-ray 8s ease-in-out infinite; }

@keyframes cr-bg { 0%{opacity:0.9} 50%{opacity:1} 100%{opacity:0.85} }
@keyframes cr-head { 0%{transform:translateY(0) rotate(-2deg)} 50%{transform:translateY(-2px) rotate(2deg)} 100%{transform:translateY(0) rotate(-2deg)} }
@keyframes cr-chain { 0%{transform:translate(0,0) scale(1)} 50%{transform:translate(2px,-1px) scale(1.1)} 100%{transform:translate(0,0) scale(1)} }
@keyframes cr-beard { 0%{transform:rotate(0deg)} 50%{transform:rotate(3deg)} 100%{transform:rotate(0deg)} }
@keyframes cr-ray { 0%{transform:rotate(-3deg) scaleX(0.9)} 50%{transform:rotate(3deg) scaleX(1.1)} 100%{transform:rotate(-3deg) scaleX(0.9)} }

.scn-forest-rosalind-shock {
  background:
    linear-gradient(180deg, #4a6a3a 0%, #2a4a2a 50%, #1a2a1a 100%),
    radial-gradient(circle at 80% 30%, #e0b060 0%, transparent 50%);
}
.scn-forest-rosalind-shock .bg-sharp { position:absolute; inset:0; background: linear-gradient(180deg, #3a5a2a 0%, #1a3a1a 100%); animation: rs-bg 8s ease-in-out infinite alternate; }
.scn-forest-rosalind-shock .doublet { position:absolute; bottom:20%; left:30%; width:40px; height:50px; background: linear-gradient(135deg, #c8553d 0%, #8a3020 100%); border-radius: 30% 30% 20% 20% / 50% 50% 20% 20%; transform:rotate(15deg); animation: rs-doublet 2s ease-in-out infinite alternate; }
.scn-forest-rosalind-shock .hose { position:absolute; bottom:20%; left:55%; width:30px; height:60px; background: linear-gradient(180deg, #5e1a1d 0%, #3a0a0a 100%); border-radius: 20% 20% 40% 40%; transform:rotate(-10deg); animation: rs-hose 2.5s ease-in-out infinite alternate; }
.scn-forest-rosalind-shock .figure-shock { position:absolute; bottom:25%; left:40%; width:25px; height:70px; background: linear-gradient(180deg, #d2b48c 0%, #a08050 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: rs-figure 1.5s ease-in-out infinite; }
.scn-forest-rosalind-shock .hands-up { position:absolute; bottom:55%; left:37%; width:18px; height:25px; background: linear-gradient(180deg, #d2b48c 0%, #b0945a 100%); border-radius: 40% 40% 20% 20%; transform:rotate(-30deg); transform-origin: bottom; animation: rs-hands 2s ease-in-out infinite alternate; }
.scn-forest-rosalind-shock .hands-up::after { content:''; position:absolute; top:-10px; left:5px; width:10px; height:10px; background: radial-gradient(circle, #d2b48c 0%, #b0945a 100%); border-radius:50%; } /* hand */
.scn-forest-rosalind-shock .shadow-slice { position:absolute; top:0; left:60%; width:40%; height:100%; background: linear-gradient(90deg, transparent 0%, rgba(0,0,0,0.2) 100%); animation: rs-shadow 4s ease-in-out infinite; }

@keyframes rs-bg { 0%{opacity:0.8} 50%{opacity:1} 100%{opacity:0.7} }
@keyframes rs-doublet { 0%{transform:rotate(15deg) translateX(0)} 50%{transform:rotate(20deg) translateX(-3px)} 100%{transform:rotate(15deg) translateX(0)} }
@keyframes rs-hose { 0%{transform:rotate(-10deg) translateY(0)} 50%{transform:rotate(-15deg) translateY(-2px)} 100%{transform:rotate(-10deg) translateY(0)} }
@keyframes rs-figure { 0%{transform:translateX(0) rotate(0deg) scale(1)} 50%{transform:translateX(2px) rotate(2deg) scale(1.05)} 100%{transform:translateX(0) rotate(0deg) scale(1)} }
@keyframes rs-hands { 0%{transform:rotate(-30deg) translateY(0)} 50%{transform:rotate(-40deg) translateY(-5px)} 100%{transform:rotate(-30deg) translateY(0)} }
@keyframes rs-shadow { 0%{opacity:0.2} 50%{opacity:0.5} 100%{opacity:0.2} }

.scn-forest-celia-description {
  background:
    linear-gradient(180deg, #b0e0b0 0%, #90c080 40%, #4a7a3a 100%),
    radial-gradient(ellipse at 30% 60%, #d2b48c 0%, transparent 50%);
}
.scn-forest-celia-description .sky-calm { position:absolute; inset:0 0 45% 0; background:linear-gradient(180deg, #a0d8a0 0%, #c0e0c0 100%); animation: cd-sky 15s ease-in-out infinite alternate; }
.scn-forest-celia-description .tree-jove { position:absolute; bottom:0; left:30%; width:40px; height:85%; background: linear-gradient(180deg, #5a3a1a 0%, #2a1a0a 100%); border-radius: 30% 30% 0 0; transform:rotate(1deg); }
.scn-forest-celia-description .tree-jove::before { content:''; position:absolute; top:10%; left:-30px; width:100px; height:60px; background: radial-gradient(ellipse, #3a7a2a 0%, #2a5a1a 100%); border-radius: 50% 50% 20% 20%; transform:rotate(-10deg); }
.scn-forest-celia-description .knight { position:absolute; bottom:20%; left:45%; width:30px; height:60px; background: linear-gradient(180deg, #c0a080 0%, #806040 100%); border-radius: 30% 30% 20% 20% / 40% 40% 20% 20%; transform:rotate(-5deg); transform-origin: bottom center; animation: cd-knight 10s ease-in-out infinite alternate; }
.scn-forest-celia-description .knight::after { content:''; position:absolute; top:5px; left:5px; width:20px; height:12px; background: #a08050; border-radius: 20% 20% 0 0; } /* helmet */
.scn-forest-celia-description .spear { position:absolute; bottom:25%; left:48%; width:4px; height:80px; background: linear-gradient(180deg, #8a6a3a 0%, #5a4a2a 100%); transform:rotate(10deg); animation: cd-spear 8s ease-in-out infinite; }
.scn-forest-celia-description .leaf-sway { position:absolute; top:8%; left:55%; width:20px; height:15px; background: radial-gradient(ellipse, #4a8a3a 0%, #2a6a1a 100%); border-radius: 50% 50% 0 0; animation: cd-leaf 6s ease-in-out infinite alternate; }
.scn-forest-celia-description .sun-patch { position:absolute; top:40%; right:20%; width:60px; height:60px; background: radial-gradient(circle, rgba(255,215,0,0.3) 0%, transparent 70%); animation: cd-sunpatch 12s ease-in-out infinite; }

@keyframes cd-sky { 0%{opacity:0.9} 50%{opacity:1} 100%{opacity:0.85} }
@keyframes cd-knight { 0%{transform:rotate(-5deg) translateX(0)} 50%{transform:rotate(-3deg) translateX(-2px)} 100%{transform:rotate(-5deg) translateX(0)} }
@keyframes cd-spear { 0%{transform:rotate(10deg) translateY(0)} 50%{transform:rotate(8deg) translateY(-3px)} 100%{transform:rotate(10deg) translateY(0)} }
@keyframes cd-leaf { 0%{transform:rotate(0deg) translateY(0)} 50%{transform:rotate(10deg) translateY(-5px)} 100%{transform:rotate(0deg) translateY(0)} }
@keyframes cd-sunpatch { 0%{opacity:0.3; transform:scale(1)} 50%{opacity:0.6; transform:scale(1.2)} 100%{opacity:0.3; transform:scale(1)} }

.scn-duke-jaques-on-boy { background: linear-gradient(180deg, #87ceeb 0%, #b0e0e6 30%, #f0e68c 60%, #228b22 100%), radial-gradient(circle at 60% 20%, #fff5cc 0%, transparent 60%); }
.scn-duke-jaques-on-boy .sky { position:absolute; inset:0 0 60% 0; background: linear-gradient(180deg, #b0e0e6 0%, #87ceeb 100%); animation: djb-sky 12s ease-in-out infinite alternate; }
.scn-duke-jaques-on-boy .sun { position:absolute; top:8%; left:55%; width:60px; height:60px; background: radial-gradient(circle, #fff5cc 0%, #ffd700 50%, transparent 70%); border-radius:50%; box-shadow: 0 0 60px 30px rgba(255,215,0,0.3); animation: djb-sun 15s ease-in-out infinite alternate; }
.scn-duke-jaques-on-boy .trees-back { position:absolute; bottom:40%; left:0; right:0; height:25%; background: linear-gradient(90deg, #2e8b57 0%, #3cb371 50%, #2e8b57 100%); border-radius: 30% 70% 0 0 / 50% 50% 0 0; animation: djb-trees 20s ease-in-out infinite alternate; }
.scn-duke-jaques-on-boy .trees-front { position:absolute; bottom:30%; left:5%; right:5%; height:20%; background: linear-gradient(180deg, #228b22 0%, #006400 100%); border-radius: 40% 60% 0 0 / 30% 70% 0 0; box-shadow: inset 0 5px 15px rgba(0,0,0,0.2); animation: djb-trees 25s ease-in-out infinite alternate-reverse; }
.scn-duke-jaques-on-boy .ground { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #228b22 0%, #006400 30%, #3cb371 60%, #8fbc8f 100%); }
.scn-duke-jaques-on-boy .figure-jaques { position:absolute; bottom:28%; left:30%; width:20px; height:45px; background: linear-gradient(180deg, #556b2f 0%, #2e4a2e 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: djb-figurej 6s ease-in-out infinite; }
.scn-duke-jaques-on-boy .figure-boy { position:absolute; bottom:28%; left:45%; width:16px; height:35px; background: linear-gradient(180deg, #7b917b 0%, #3b4f3b 100%); border-radius: 50% 50% 40% 40% / 50% 50% 40% 40%; transform-origin: bottom center; animation: djb-figureb 7s ease-in-out infinite; }
.scn-duke-jaques-on-boy .light-rays { position:absolute; top:5%; left:40%; width:80px; height:80px; background: radial-gradient(ellipse at 50% 0%, rgba(255,255,200,0.2) 0%, transparent 70%); border-radius:50%; filter: blur(10px); animation: djb-rays 10s ease-in-out infinite alternate; }
@keyframes djb-sky { 0% { opacity:.85 } 50% { opacity:1 } 100% { opacity:.9 } }
@keyframes djb-sun { 0% { transform: translateY(0) scale(1) } 50% { transform: translateY(-5px) scale(1.05) } 100% { transform: translateY(0) scale(1) } }
@keyframes djb-trees { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes djb-figurej { 0% { transform: translateX(0) rotate(-2deg) } 50% { transform: translateX(3px) rotate(2deg) } 100% { transform: translateX(0) rotate(-2deg) } }
@keyframes djb-figureb { 0% { transform: translateX(0) rotate(0deg) } 50% { transform: translateX(2px) rotate(1deg) } 100% { transform: translateX(0) rotate(0deg) } }
@keyframes djb-rays { 0% { opacity:.3 } 50% { opacity:.5 } 100% { opacity:.3 } }

.scn-touchstone-enters-with-audrey { background: linear-gradient(180deg, #f0e68c 0%, #fffacd 30%, #bdb76b 70%, #6b8e23 100%), radial-gradient(ellipse at 70% 20%, #fff4a3 0%, transparent 60%); }
.scn-touchstone-enters-with-audrey .sky { position:absolute; inset:0 0 55% 0; background: linear-gradient(180deg, #fffacd 0%, #f0e68c 100%); animation: tsa-sky 14s ease-in-out infinite alternate; }
.scn-touchstone-enters-with-audrey .sun { position:absolute; top:12%; right:20%; width:50px; height:50px; background: radial-gradient(circle, #fff4a3 0%, #ffd700 40%, transparent 70%); border-radius:50%; box-shadow: 0 0 40px 20px rgba(255,215,0,0.25); animation: tsa-sun 12s ease-in-out infinite alternate; }
.scn-touchstone-enters-with-audrey .horizon { position:absolute; bottom:45%; left:0; right:0; height:4px; background: #6b8e23; filter: blur(1px); }
.scn-touchstone-enters-with-audrey .road { position:absolute; bottom:18%; left:0; right:0; height:28%; background: linear-gradient(180deg, #cd853f 0%, #a0522d 40%, #cd853f 100%); clip-path: polygon(30% 0%, 70% 0%, 60% 100%, 40% 100%); animation: tsa-road 20s ease-in-out infinite alternate; }
.scn-touchstone-enters-with-audrey .figure-touchstone { position:absolute; bottom:28%; left:35%; width:22px; height:48px; background: linear-gradient(180deg, #8b4513 0%, #5c2e0a 100%); border-radius: 50% 50% 40% 40% / 50% 50% 40% 40%; transform-origin: bottom center; animation: tsa-figu 6s ease-in-out infinite; }
.scn-touchstone-enters-with-audrey .figure-audrey { position:absolute; bottom:28%; left:45%; width:18px; height:40px; background: linear-gradient(180deg, #b8860b 0%, #7a5a00 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: tsa-figw 7s ease-in-out infinite; }
.scn-touchstone-enters-with-audrey .trees { position:absolute; bottom:40%; left:10%; right:10%; height:15%; background: linear-gradient(90deg, #556b2f 0%, #6b8e23 50%, #556b2f 100%); border-radius: 30% 70% 0 0 / 50% 50% 0 0; animation: tsa-trees 25s ease-in-out infinite alternate; }
.scn-touchstone-enters-with-audrey .grass { position:absolute; bottom:0; left:0; right:0; height:18%; background: linear-gradient(180deg, #6b8e23 0%, #556b2f 100%); }
@keyframes tsa-sky { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.9 } }
@keyframes tsa-sun { 0% { transform: translateY(0) scale(1) } 50% { transform: translateY(-4px) scale(1.04) } 100% { transform: translateY(0) scale(1) } }
@keyframes tsa-road { 0% { clip-path: polygon(30% 0%, 70% 0%, 60% 100%, 40% 100%) } 50% { clip-path: polygon(28% 0%, 72% 0%, 62% 100%, 38% 100%) } 100% { clip-path: polygon(30% 0%, 70% 0%, 60% 100%, 40% 100%) } }
@keyframes tsa-figu { 0% { transform: translateX(0) rotate(-2deg) } 50% { transform: translateX(4px) rotate(2deg) } 100% { transform: translateX(0) rotate(-2deg) } }
@keyframes tsa-figw { 0% { transform: translateX(0) rotate(1deg) } 50% { transform: translateX(3px) rotate(-1deg) } 100% { transform: translateX(0) rotate(1deg) } }
@keyframes tsa-trees { 0% { transform: translateY(0) } 50% { transform: translateY(-1px) } 100% { transform: translateY(0) } }

.scn-touchstone-boasts-quarrels { background: linear-gradient(180deg, #ffecb3 0%, #ffe082 30%, #ffcc80 60%, #d4a75a 100%), radial-gradient(circle at 50% 30%, #fff8e1 0%, transparent 70%); }
.scn-touchstone-boasts-quarrels .bg { position:absolute; inset:0; background: linear-gradient(135deg, #ffe082 0%, #ffcc80 100%); opacity:.2; }
.scn-touchstone-boasts-quarrels .figure-body { position:absolute; bottom:15%; left:50%; width:40px; height:55px; transform:translateX(-50%); background: linear-gradient(180deg, #8b4513 0%, #5c2e0a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: tbq-body 4s ease-in-out infinite; }
.scn-touchstone-boasts-quarrels .figure-head { position:absolute; bottom:62%; left:50%; width:28px; height:28px; transform:translateX(-50%); background: linear-gradient(180deg, #a0522d 0%, #8b4513 100%); border-radius: 50%; animation: tbq-head 4s ease-in-out infinite; }
.scn-touchstone-boasts-quarrels .arm-left { position:absolute; bottom:50%; left:30%; width:8px; height:30px; background: #6b3a1a; border-radius: 50% 50% 40% 40% / 30% 30% 30% 30%; transform-origin: bottom center; animation: tbq-arml 3s ease-in-out infinite; }
.scn-touchstone-boasts-quarrels .arm-right { position:absolute; bottom:50%; right:30%; width:8px; height:35px; background: #6b3a1a; border-radius: 50% 50% 40% 40% / 30% 30% 30% 30%; transform-origin: bottom center; animation: tbq-armr 3.5s ease-in-out infinite; }
.scn-touchstone-boasts-quarrels .cape { position:absolute; bottom:30%; left:35%; width:60px; height:40px; background: linear-gradient(180deg, #b8860b 0%, #8b6508 100%); border-radius: 0 0 50% 50%; transform-origin: top center; opacity:.6; animation: tbq-cape 5s ease-in-out infinite; }
.scn-touchstone-boasts-quarrels .sun-halo { position:absolute; top:8%; right:15%; width:70px; height:70px; background: radial-gradient(circle, #fff8e1 0%, rgba(255,248,225,0) 70%); border-radius:50%; filter: blur(8px); animation: tbq-halo 8s ease-in-out infinite alternate; }
@keyframes tbq-body { 0% { transform: translateX(-50%) rotate(-3deg) } 50% { transform: translateX(-50%) rotate(3deg) scaleY(1.02) } 100% { transform: translateX(-50%) rotate(-3deg) } }
@keyframes tbq-head { 0% { transform: translateX(-50%) rotate(-2deg) } 50% { transform: translateX(-50%) rotate(2deg) } 100% { transform: translateX(-50%) rotate(-2deg) } }
@keyframes tbq-arml { 0% { transform: rotate(-30deg) } 50% { transform: rotate(20deg) } 100% { transform: rotate(-30deg) } }
@keyframes tbq-armr { 0% { transform: rotate(20deg) } 50% { transform: rotate(-30deg) } 100% { transform: rotate(20deg) } }
@keyframes tbq-cape { 0% { transform: scaleX(1) } 50% { transform: scaleX(1.15) rotate(2deg) } 100% { transform: scaleX(1) } }
@keyframes tbq-halo { 0% { opacity:.3 } 50% { opacity:.6 } 100% { opacity:.3 } }

.scn-item-pearl { background: linear-gradient(180deg, #87ceeb 0%, #b0e0e6 30%, #f0e68c 70%, #cd853f 100%), radial-gradient(circle at 50% 30%, #fff5cc 0%, transparent 60%); }
.scn-item-pearl .bg { position:absolute; inset:0; background: linear-gradient(135deg, #b0e0e6 0%, #f0e68c 100%); opacity:.15; }
.scn-item-pearl .figure-torso { position:absolute; bottom:22%; left:50%; width:30px; height:45px; transform:translateX(-50%); background: linear-gradient(180deg, #8b4513 0%, #5c2e0a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ip-torso 5s ease-in-out infinite; }
.scn-item-pearl .figure-head { position:absolute; bottom:60%; left:50%; width:22px; height:22px; transform:translateX(-50%); background: linear-gradient(180deg, #a0522d 0%, #8b4513 100%); border-radius: 50%; animation: ip-head 5s ease-in-out infinite; }
.scn-item-pearl .arm { position:absolute; bottom:45%; left:35%; width:8px; height:22px; background: #6b3a1a; border-radius: 50% 50% 40% 40% / 30% 30% 30% 30%; transform-origin: top left; animation: ip-arm 4s ease-in-out infinite; }
.scn-item-pearl .hand { position:absolute; bottom:42%; left:28%; width:10px; height:8px; background: #a0522d; border-radius: 50%; transform-origin: center; animation: ip-hand 4s ease-in-out infinite; }
.scn-item-pearl .pearl { position:absolute; bottom:44%; left:24%; width:8px; height:8px; background: radial-gradient(circle, #f5f5dc 0%, #e8e4c9 50%, #d4cba3 100%); border-radius:50%; box-shadow: 0 0 10px 4px rgba(245,245,220,0.5); animation: ip-pearl 3s ease-in-out infinite alternate; }
.scn-item-pearl .sparkle-a { position:absolute; bottom:46%; left:23%; width:4px; height:4px; background:#fff; border-radius:50%; animation: ip-sparkle 2s ease-in-out infinite; }
.scn-item-pearl .sparkle-b { position:absolute; bottom:43%; left:27%; width:3px; height:3px; background:#fff; border-radius:50%; animation: ip-sparkle 2.5s ease-in-out infinite 0.5s; }
@keyframes ip-torso { 0% { transform: translateX(-50%) rotate(-2deg) } 50% { transform: translateX(-50%) rotate(2deg) } 100% { transform: translateX(-50%) rotate(-2deg) } }
@keyframes ip-head { 0% { transform: translateX(-50%) rotate(-1deg) } 50% { transform: translateX(-50%) rotate(1deg) } 100% { transform: translateX(-50%) rotate(-1deg) } }
@keyframes ip-arm { 0% { transform: rotate(-20deg) } 50% { transform: rotate(10deg) } 100% { transform: rotate(-20deg) } }
@keyframes ip-hand { 0% { transform: rotate(0deg) } 50% { transform: rotate(5deg) } 100% { transform: rotate(0deg) } }
@keyframes ip-pearl { 0% { box-shadow: 0 0 10px 4px rgba(245,245,220,0.5) } 50% { box-shadow: 0 0 20px 8px rgba(245,245,220,0.7) } 100% { box-shadow: 0 0 10px 4px rgba(245,245,220,0.5) } }
@keyframes ip-sparkle { 0% { opacity:0; transform:scale(0) } 50% { opacity:1; transform:scale(1.2) } 100% { opacity:0; transform:scale(0) } }

/* Scene: item-quarrel-book-retort */
.scn-item-quarrel-book-retort { background: linear-gradient(180deg, #87ceeb 0%, #b0e0ff 40%, #fff0a0 80%), radial-gradient(ellipse at 50% 20%, #fff8dc 0%, transparent 60%); }
.scn-item-quarrel-book-retort .sky { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #b0e0ff 0%, #87ceeb 100%); }
.scn-item-quarrel-book-retort .ground { position:absolute; bottom:0; left:0; right:0; height:50%; background: linear-gradient(180deg, #7cc07c 0%, #3a8a3a 100%); border-radius: 50% 50% 0 0 / 20% 20% 0 0; }
.scn-item-quarrel-book-retort .tree { position:absolute; bottom:35%; left:15%; width:12px; height:50%; background: linear-gradient(180deg, #6b4226 0%, #4a2e1a 100%); border-radius: 4px; z-index:2; }
.scn-item-quarrel-book-retort .tree::after { content:''; position:absolute; top:-30%; left:-300%; width:700%; height:40%; background: radial-gradient(ellipse at 50% 100%, #2d7a2d 0%, transparent 70%); }
.scn-item-quarrel-book-retort .figure-left { position:absolute; bottom:25%; left:30%; width:28px; height:50px; background: radial-gradient(ellipse at 50% 30%, #c8a462 0%, #8a6a2e 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: itq1-left 2.5s ease-in-out infinite; z-index:3; }
.scn-item-quarrel-book-retort .figure-right { position:absolute; bottom:25%; right:30%; width:26px; height:52px; background: radial-gradient(ellipse at 50% 30%, #b8944c 0%, #7a5a24 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: itq1-right 2.8s ease-in-out infinite; z-index:3; }
.scn-item-quarrel-book-retort .book-retort { position:absolute; bottom:40%; left:48%; width:30px; height:22px; background: linear-gradient(180deg, #d4b96a 0%, #a8843a 100%); border-radius: 4px; box-shadow: 2px 2px 6px rgba(0,0,0,0.3); transform: rotate(-10deg); animation: itq1-book 1.8s ease-in-out infinite; z-index:4; }
.scn-item-quarrel-book-retort .gesture-arm { position:absolute; bottom:45%; left:38%; width:20px; height:6px; background: #8a6a2e; border-radius: 50%; transform-origin: right center; animation: itq1-arm 1.2s ease-in-out infinite alternate; z-index:5; }
.scn-item-quarrel-book-retort .speech-bubble { position:absolute; top:15%; right:20%; width:30px; height:20px; background: #fff8dc; border-radius: 50%; box-shadow: 0 0 0 2px #d4b96a; opacity:0.7; animation: itq1-bubble 3s ease-in-out infinite; }
.scn-item-quarrel-book-retort .sun { position:absolute; top:5%; right:10%; width:40px; height:40px; background: radial-gradient(circle, #fff0a0 0%, #ffd700 60%, transparent 100%); border-radius:50%; animation: itq1-sun 6s ease-in-out infinite alternate; }
@keyframes itq1-left { 0% { transform: translateX(0) translateY(0) rotate(-2deg); } 30% { transform: translateX(-8px) translateY(-3px) rotate(2deg); } 60% { transform: translateX(5px) translateY(0) rotate(-1deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes itq1-right { 0% { transform: translateX(0) translateY(0) rotate(1deg); } 25% { transform: translateX(6px) translateY(-2px) rotate(-2deg); } 75% { transform: translateX(-4px) translateY(-1px) rotate(1deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes itq1-book { 0% { transform: rotate(-10deg) translateY(0); } 50% { transform: rotate(5deg) translateY(-3px); } 100% { transform: rotate(-10deg) translateY(0); } }
@keyframes itq1-arm { 0% { transform: rotate(-30deg) translateX(0); } 100% { transform: rotate(30deg) translateX(5px); } }
@keyframes itq1-bubble { 0% { opacity:0.3; transform: scale(0.8); } 20% { opacity:0.7; transform: scale(1.1); } 80% { opacity:0.7; transform: scale(1.1); } 100% { opacity:0; transform: scale(0.8); } }
@keyframes itq1-sun { 0% { transform: scale(1); opacity:0.8; } 50% { transform: scale(1.1); opacity:1; } 100% { transform: scale(0.95); opacity:0.9; } }

/* Scene: item-quarrel-book-quip */
.scn-item-quarrel-book-quip { background: linear-gradient(180deg, #add8e6 0%, #87ceeb 30%, #fffacd 70%), radial-gradient(ellipse at 30% 80%, #ffeb99 0%, transparent 60%); }
.scn-item-quarrel-book-quip .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #b0e0ff 0%, #87ceeb 100%); }
.scn-item-quarrel-book-quip .ground { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, #6db86d 0%, #3a7a3a 100%); border-radius: 40% 60% 0 0 / 30% 40% 0 0; }
.scn-item-quarrel-book-quip .figure-quip { position:absolute; bottom:25%; left:40%; width:30px; height:55px; background: radial-gradient(ellipse at 50% 30%, #c8a462 0%, #8a6a2e 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: itq2-fig 2s ease-in-out infinite; z-index:2; }
.scn-item-quarrel-book-quip .book-quip { position:absolute; bottom:30%; left:35%; width:25px; height:18px; background: linear-gradient(135deg, #d4b96a 0%, #a8843a 100%); border-radius: 3px; transform: rotate(-5deg); animation: itq2-book 1.5s ease-in-out infinite; z-index:3; }
.scn-item-quarrel-book-quip .beard { position:absolute; bottom:30%; left:42%; width:20px; height:30px; background: linear-gradient(180deg, #d2b48c 0%, #a08060 100%); border-radius: 50% 50% 60% 60% / 40% 40% 60% 60%; clip-path: polygon(0 0, 100% 0, 90% 100%, 10% 100%); transform-origin: top center; animation: itq2-beard 3s ease-in-out infinite; z-index:4; }
.scn-item-quarrel-book-quip .scissors { position:absolute; bottom:35%; left:48%; width:12px; height:8px; background: #c0c0c0; border-radius: 30% 30% 0 0; transform: rotate(20deg); animation: itq2-scissors 0.8s ease-in-out infinite alternate; z-index:5; }
.scn-item-quarrel-book-quip .sparkle { position:absolute; bottom:40%; left:50%; width:4px; height:4px; background: #fff; border-radius: 50%; box-shadow: 0 0 6px #fff; animation: itq2-sparkle 1.2s ease-in-out infinite; z-index:6; }
.scn-item-quarrel-book-quip .cloud-quip { position:absolute; top:12%; right:15%; width:60px; height:15px; background: rgba(255,255,255,0.6); border-radius: 50%; filter: blur(4px); animation: itq2-cloud 20s linear infinite reverse; }
@keyframes itq2-fig { 0%,100% { transform: translateY(0) rotate(0deg); } 25% { transform: translateY(-4px) rotate(-2deg); } 75% { transform: translateY(2px) rotate(2deg); } }
@keyframes itq2-book { 0% { transform: rotate(-5deg) translateY(0); } 50% { transform: rotate(10deg) translateY(-2px); } 100% { transform: rotate(-5deg) translateY(0); } }
@keyframes itq2-beard { 0% { transform: scaleY(1); } 50% { transform: scaleY(1.2) translateX(2px); } 100% { transform: scaleY(1); } }
@keyframes itq2-scissors { 0% { transform: rotate(10deg) scaleX(1); } 100% { transform: rotate(30deg) scaleX(0.8); } }
@keyframes itq2-sparkle { 0% { opacity:0; transform: scale(0); } 50% { opacity:1; transform: scale(1.5); } 100% { opacity:0; transform: scale(0); } }
@keyframes itq2-cloud { 0% { transform: translateX(0); } 100% { transform: translateX(-80px); } }

/* Scene: item-quarrel-book-countercheque */
.scn-item-quarrel-book-countercheque { background: linear-gradient(180deg, #e0f0ff 0%, #b0d0ff 30%, #ffe28c 70%), radial-gradient(ellipse at 70% 20%, #fff1c0 0%, transparent 70%); }
.scn-item-quarrel-book-countercheque .sky { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #b0e0ff 0%, #87ceeb 100%); }
.scn-item-quarrel-book-countercheque .ground { position:absolute; bottom:0; left:0; right:0; height:50%; background: linear-gradient(180deg, #8fc88f 0%, #4a8a4a 100%); border-radius: 30% 70% 0 0 / 50% 40% 0 0; }
.scn-item-quarrel-book-countercheque .figure-left-counter { position:absolute; bottom:28%; left:25%; width:30px; height:50px; background: radial-gradient(ellipse at 50% 30%, #c8a462 0%, #8a6a2e 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: itq3-left 2.2s ease-in-out infinite; z-index:2; }
.scn-item-quarrel-book-countercheque .figure-right-counter { position:absolute; bottom:28%; right:25%; width:28px; height:52px; background: radial-gradient(ellipse at 50% 30%, #b8944c 0%, #7a5a24 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: itq3-right 2.6s ease-in-out infinite; z-index:2; }
.scn-item-quarrel-book-countercheque .book-counter { position:absolute; bottom:35%; left:50%; width:40px; height:28px; background: linear-gradient(180deg, #d4b96a 0%, #a8843a 100%); border-radius: 4px; transform: translateX(-50%); box-shadow: 2px 2px 8px rgba(0,0,0,0.3); animation: itq3-book 3s ease-in-out infinite; z-index:4; }
.scn-item-quarrel-book-countercheque .pointing-hand { position:absolute; bottom:40%; left:35%; width:18px; height:8px; background: #a06030; border-radius: 50% 0 0 50%; transform-origin: left center; animation: itq3-hand 1s ease-in-out infinite alternate; z-index:5; }
.scn-item-quarrel-book-countercheque .counter-line { position:absolute; bottom:50%; left:45%; width:30px; height:3px; background: #ff6347; border-radius: 2px; animation: itq3-line 0.6s ease-in-out infinite alternate; z-index:6; }
@keyframes itq3-left { 0% { transform: translateX(0) rotate(0deg); } 30% { transform: translateX(-5px) rotate(-3deg); } 70% { transform: translateX(3px) rotate(1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes itq3-right { 0% { transform: translateX(0) rotate(0deg); } 40% { transform: translateX(4px) rotate(2deg); } 80% { transform: translateX(-3px) rotate(-1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes itq3-book { 0%,100% { transform: translateX(-50%) rotate(0deg); } 50% { transform: translateX(-50%) rotate(5deg) translateY(-2px); } }
@keyframes itq3-hand { 0% { transform: rotate(-10deg) translateX(0); } 100% { transform: rotate(20deg) translateX(5px); } }
@keyframes itq3-line { 0% { transform: translateX(0) scaleX(1); opacity:0.8; } 50% { transform: translateX(5px) scaleX(1.5); opacity:1; } 100% { transform: translateX(-5px) scaleX(0.8); opacity:0.6; } }

/* Scene: item-degrees-of-lie */
.scn-item-degrees-of-lie { background: linear-gradient(180deg, #fff5e6 0%, #ffeab0 30%, #ffd699 60%), radial-gradient(ellipse at 30% 50%, #fff3c0 0%, transparent 70%); }
.scn-item-degrees-of-lie .sky { position:absolute; inset:0 0 45% 0; background: linear-gradient(180deg, #ffeeb8 0%, #ffd68a 100%); }
.scn-item-degrees-of-lie .ground { position:absolute; bottom:0; left:0; right:0; height:45%; background: linear-gradient(180deg, #c8a86a 0%, #a08040 100%); border-radius: 60% 40% 0 0 / 40% 50% 0 0; }
.scn-item-degrees-of-lie .book-large { position:absolute; bottom:20%; left:50%; width:80px; height:60px; background: linear-gradient(180deg, #c89a5a 0%, #a07030 100%); border-radius: 6px; transform: translateX(-50%); box-shadow: 4px 4px 12px rgba(0,0,0,0.4); z-index:2; }
.scn-item-degrees-of-lie .page-left { position:absolute; bottom:22%; left:42%; width:35px; height:50px; background: linear-gradient(135deg, #fff8dc 0%, #f0e0b0 100%); border-radius: 2px 0 0 2px; transform: rotate(-2deg); animation: itdl-page-left 3s ease-in-out infinite; z-index:3; }
.scn-item-degrees-of-lie .page-right { position:absolute; bottom:22%; right:42%; width:35px; height:50px; background: linear-gradient(225deg, #fff8dc 0%, #f0e0b0 100%); border-radius: 0 2px 2px 0; transform: rotate(2deg); animation: itdl-page-right 3s ease-in-out infinite; z-index:3; }
.scn-item-degrees-of-lie .finger-count { position:absolute; bottom:40%; left:48%; width:20px; height:30px; background: radial-gradient(ellipse at 50% 30%, #d4a060 0%, #a06030 100%); border-radius: 40% 40% 50% 50% / 50% 50% 60% 60%; transform-origin: bottom center; animation: itdl-finger 1.2s ease-in-out infinite; z-index:4; }
.scn-item-degrees-of-lie .degree-dot-1 { position:absolute; bottom:27%; left:30%; width:6px; height:6px; background: #8b4513; border-radius:50%; animation: itdl-dot 1.5s ease-in-out infinite; }
.scn-item-degrees-of-lie .degree-dot-2 { position:absolute; bottom:27%; left:40%; width:6px; height:6px; background: #8b4513; border-radius:50%; animation: itdl-dot 1.5s ease-in-out infinite 0.2s; }
.scn-item-degrees-of-lie .degree-dot-3 { position:absolute; bottom:27%; left:50%; width:6px; height:6px; background: #8b4513; border-radius:50%; animation: itdl-dot 1.5s ease-in-out infinite 0.4s; }
.scn-item-degrees-of-lie .degree-dot-4 { position:absolute; bottom:27%; left:60%; width:6px; height:6px; background: #8b4513; border-radius:50%; animation: itdl-dot 1.5s ease-in-out infinite 0.6s; }
@keyframes itdl-page-left { 0% { transform: rotate(-2deg) translateY(0); } 50% { transform: rotate(-5deg) translateY(-3px); } 100% { transform: rotate(-2deg) translateY(0); } }
@keyframes itdl-page-right { 0% { transform: rotate(2deg) translateY(0); } 50% { transform: rotate(5deg) translateY(-3px); } 100% { transform: rotate(2deg) translateY(0); } }
@keyframes itdl-finger { 0% { transform: scaleY(1) rotate(0deg); } 25% { transform: scaleY(0.8) rotate(-5deg); } 50% { transform: scaleY(1.1) rotate(5deg); } 75% { transform: scaleY(0.9) rotate(-3deg); } 100% { transform: scaleY(1) rotate(0deg); } }
@keyframes itdl-dot { 0%,100% { transform: scale(1); opacity:0.6; } 50% { transform: scale(1.5); opacity:1; } }

/* wrestling-introduction - tense, sunlit arena entrance */
.scn-wrestling-introduction { background: linear-gradient(180deg, #f7e8c8 0%, #e8d4a0 30%, #c8a86a 60%, #a08040 100%), radial-gradient(ellipse at 50% 0%, #fff4d8 0%, transparent 70%); }
.scn-wrestling-introduction .sky { position:absolute; inset:0 0 55% 0; background: linear-gradient(180deg, #ffe8b0 0%, #f0d090 60%, transparent 100%); animation: wi1-sky 14s ease-in-out infinite alternate; }
.scn-wrestling-introduction .ground { position:absolute; bottom:0; left:0; right:0; height:50%; background: linear-gradient(180deg, #c8a86a 0%, #8a7040 40%, #605030 100%); box-shadow: inset 0 20px 40px rgba(0,0,0,.4); border-radius: 30% 0 0 0 / 40% 0 0 0; }
.scn-wrestling-introduction .pillar-l { position:absolute; bottom:20%; left:12%; width:24px; height:180px; background: linear-gradient(90deg, #8a7a5a 0%, #b8a878 40%, #a09060 60%, #7a6a4a 100%); border-radius: 6% 6% 0 0; box-shadow: 0 0 20px rgba(0,0,0,.3); transform-origin: bottom center; animation: wi1-pillar 18s ease-in-out infinite; }
.scn-wrestling-introduction .pillar-r { position:absolute; bottom:20%; right:12%; width:24px; height:180px; background: linear-gradient(270deg, #8a7a5a 0%, #b8a878 40%, #a09060 60%, #7a6a4a 100%); border-radius: 6% 6% 0 0; box-shadow: 0 0 20px rgba(0,0,0,.3); transform-origin: bottom center; animation: wi1-pillar 18s ease-in-out infinite .5s; }
.scn-wrestling-introduction .banner-l { position:absolute; bottom:66%; left:10%; width:50px; height:40px; background: linear-gradient(180deg, #c8553d 0%, #a04030 50%, #7a2a20 100%); border-radius: 0 0 30% 30%; transform: rotate(-8deg); animation: wi1-banner-l 6s ease-in-out infinite; }
.scn-wrestling-introduction .banner-r { position:absolute; bottom:66%; right:10%; width:50px; height:40px; background: linear-gradient(180deg, #c8553d 0%, #a04030 50%, #7a2a20 100%); border-radius: 0 0 30% 30%; transform: rotate(8deg); animation: wi1-banner-r 6s ease-in-out infinite .7s; }
.scn-wrestling-introduction .duke-figure { position:absolute; bottom:22%; left:50%; width:28px; height:60px; transform: translateX(-70px); background: linear-gradient(180deg, #3a2a1a 0%, #1a100a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 35% 35%; box-shadow: 0 4px 12px rgba(0,0,0,.5); animation: wi1-duke 8s ease-in-out infinite; }
.scn-wrestling-introduction .orlando-figure { position:absolute; bottom:22%; left:50%; width:24px; height:56px; transform: translateX(40px); background: linear-gradient(180deg, #2a3a2a 0%, #1a2a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 35% 35%; box-shadow: 0 4px 12px rgba(0,0,0,.5); animation: wi1-orlando 8s ease-in-out infinite 2s; }
.scn-wrestling-introduction .shadow-stripe { position:absolute; top:20%; left:30%; right:30%; height:2px; background: linear-gradient(90deg, transparent 0%, rgba(0,0,0,.15) 30%, rgba(0,0,0,.25) 50%, rgba(0,0,0,.15) 70%, transparent 100%); animation: wi1-stripe 10s ease-in-out infinite alternate; }
@keyframes wi1-sky { 0% { opacity:.85 } 50% { opacity:1 } 100% { opacity:.9 } }
@keyframes wi1-pillar { 0% { transform: scaleY(1) } 30% { transform: scaleY(1.01) } 70% { transform: scaleY(.98) } 100% { transform: scaleY(1) } }
@keyframes wi1-banner-l { 0% { transform: rotate(-8deg) scaleY(1) } 30% { transform: rotate(-6deg) scaleY(1.05) } 60% { transform: rotate(-10deg) scaleY(.95) } 100% { transform: rotate(-8deg) scaleY(1) } }
@keyframes wi1-banner-r { 0% { transform: rotate(8deg) scaleY(1) } 30% { transform: rotate(6deg) scaleY(1.05) } 60% { transform: rotate(10deg) scaleY(.95) } 100% { transform: rotate(8deg) scaleY(1) } }
@keyframes wi1-duke { 0% { transform: translateX(-70px) rotate(0) } 25% { transform: translateX(-65px) rotate(2deg) } 50% { transform: translateX(-70px) rotate(0) } 75% { transform: translateX(-75px) rotate(-2deg) } 100% { transform: translateX(-70px) rotate(0) } }
@keyframes wi1-orlando { 0% { transform: translateX(40px) rotate(0) } 25% { transform: translateX(45px) rotate(-2deg) } 50% { transform: translateX(40px) rotate(0) } 75% { transform: translateX(35px) rotate(2deg) } 100% { transform: translateX(40px) rotate(0) } }
@keyframes wi1-stripe { 0% { opacity:.3 } 50% { opacity:.6 } 100% { opacity:.3 } }

/* wrestling-match - tense, sunlit, two wrestlers circling */
.scn-wrestling-match { background: linear-gradient(180deg, #f0dba0 0%, #d8c080 30%, #b89850 60%, #907030 100%), radial-gradient(ellipse at 50% 100%, #b89850 0%, transparent 60%); }
.scn-wrestling-match .dust-back { position:absolute; inset:0; background: radial-gradient(ellipse at 50% 80%, rgba(200,180,120,.2) 0%, transparent 70%); animation: wm1-dust 12s ease-in-out infinite alternate; }
.scn-wrestling-match .arena-floor { position:absolute; bottom:0; left:5%; right:5%; height:40%; background: linear-gradient(180deg, #c8a86a 0%, #8a7040 50%, #604820 100%); border-radius: 20% 20% 0 0 / 30% 30% 0 0; box-shadow: inset 0 12px 30px rgba(0,0,0,.4); }
.scn-wrestling-match .light-beam { position:absolute; top:0; left:35%; right:35%; height:60%; background: linear-gradient(180deg, rgba(255,240,180,.3) 0%, rgba(255,240,180,.05) 100%); clip-path: polygon(20% 0, 80% 0, 70% 100%, 30% 100%); animation: wm1-beam 6s ease-in-out infinite alternate; }
.scn-wrestling-match .wrestler-left { position:absolute; bottom:28%; left:30%; width:28px; height:54px; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 35% 35%; box-shadow: 0 6px 14px rgba(0,0,0,.6); transform-origin: bottom center; animation: wm1-left 3s ease-in-out infinite; }
.scn-wrestling-match .wrestler-right { position:absolute; bottom:28%; right:30%; width:30px; height:56px; background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 35% 35%; box-shadow: 0 6px 14px rgba(0,0,0,.6); transform-origin: bottom center; animation: wm1-right 3s ease-in-out infinite .5s; }
.scn-wrestling-match .cloud-dust-a { position:absolute; bottom:32%; left:22%; width:30px; height:14px; background: radial-gradient(ellipse, rgba(200,180,130,.3) 0%, transparent 100%); border-radius: 50%; filter: blur(4px); animation: wm1-dusta 5s ease-in-out infinite; }
.scn-wrestling-match .cloud-dust-b { position:absolute; bottom:34%; right:20%; width:26px; height:10px; background: radial-gradient(ellipse, rgba(200,180,130,.25) 0%, transparent 100%); border-radius: 50%; filter: blur(3px); animation: wm1-dustb 6s ease-in-out infinite 1.2s; }
.scn-wrestling-match .cloud-dust-c { position:absolute; bottom:30%; left:45%; width:20px; height:8px; background: radial-gradient(ellipse, rgba(200,180,130,.2) 0%, transparent 100%); border-radius: 50%; filter: blur(3px); animation: wm1-dustc 4s ease-in-out infinite .8s; }
@keyframes wm1-dust { 0% { opacity:.3 } 50% { opacity:.6 } 100% { opacity:.4 } }
@keyframes wm1-beam { 0% { opacity:.3 } 50% { opacity:.7 } 100% { opacity:.4 } }
@keyframes wm1-left { 0% { transform: translateX(0) rotate(0) scaleY(1) } 20% { transform: translateX(8px) rotate(6deg) scaleY(1.02) } 50% { transform: translateX(-4px) rotate(-4deg) scaleY(.97) } 80% { transform: translateX(6px) rotate(3deg) scaleY(1.01) } 100% { transform: translateX(0) rotate(0) scaleY(1) } }
@keyframes wm1-right { 0% { transform: translateX(0) rotate(0) scaleY(1) } 20% { transform: translateX(-6px) rotate(-5deg) scaleY(1.02) } 50% { transform: translateX(8px) rotate(4deg) scaleY(.97) } 80% { transform: translateX(-4px) rotate(-3deg) scaleY(1.01) } 100% { transform: translateX(0) rotate(0) scaleY(1) } }
@keyframes wm1-dusta { 0% { transform: translateY(0) scale(1); opacity:.4 } 50% { transform: translateY(-8px) scale(1.4); opacity:.1 } 100% { transform: translateY(0) scale(1); opacity:.4 } }
@keyframes wm1-dustb { 0% { transform: translateY(0) scale(1); opacity:.3 } 50% { transform: translateY(-6px) scale(1.3); opacity:.1 } 100% { transform: translateY(0) scale(1); opacity:.3 } }
@keyframes wm1-dustc { 0% { transform: translateY(0) scale(1); opacity:.35 } 50% { transform: translateY(-10px) scale(1.5); opacity:.05 } 100% { transform: translateY(0) scale(1); opacity:.35 } }

/* aftermath-wrestling - warm sunlit, victor standing over fallen */
.scn-aftermath-wrestling { background: linear-gradient(180deg, #ffd898 0%, #f0c070 30%, #d8a048 60%, #b88030 100%), radial-gradient(ellipse at 50% 100%, #d8a048 0%, transparent 60%); }
.scn-aftermath-wrestling .golden-sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #ffe0a0 0%, #f8c868 50%, transparent 100%); animation: aw1-sky 16s ease-in-out infinite alternate; }
.scn-aftermath-wrestling .horizon { position:absolute; bottom:35%; left:0; right:0; height:10%; background: linear-gradient(180deg, #c89848 0%, #a07830 100%); border-radius: 60% 40% 0 0 / 100% 80% 0 0; box-shadow: 0 8px 30px rgba(0,0,0,.3); }
.scn-aftermath-wrestling .victor-figure { position:absolute; bottom:28%; left:50%; width:28px; height:60px; transform: translateX(-20px); background: linear-gradient(180deg, #2a3a2a 0%, #1a2a18 100%); border-radius: 50% 50% 40% 40% / 60% 60% 35% 35%; box-shadow: 0 8px 20px rgba(0,0,0,.5); transform-origin: bottom center; animation: aw1-victor 4s ease-in-out infinite; }
.scn-aftermath-wrestling .fallen-figure { position:absolute; bottom:22%; left:45%; width:30px; height:40px; transform: rotate(-35deg); background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%); border-radius: 40% 40% 50% 50% / 60% 60% 40% 40%; box-shadow: 0 4px 12px rgba(0,0,0,.4); animation: aw1-fallen 6s ease-in-out infinite; }
.scn-aftermath-wrestling .radiance { position:absolute; top:10%; left:45%; width:80px; height:80px; background: radial-gradient(circle, rgba(255,232,160,.3) 0%, rgba(255,200,80,.1) 40%, transparent 70%); border-radius: 50%; animation: aw1-radiance 8s ease-in-out infinite alternate; }
.scn-aftermath-wrestling .speckle-a { position:absolute; top:18%; left:30%; width:4px; height:4px; background: rgba(255,240,180,.6); border-radius: 50%; animation: aw1-speckle 5s ease-in-out infinite; }
.scn-aftermath-wrestling .speckle-b { position:absolute; top:22%; right:28%; width:3px; height:3px; background: rgba(255,240,180,.5); border-radius: 50%; animation: aw1-speckle 6s ease-in-out infinite 1.5s; }
.scn-aftermath-wrestling .speckle-c { position:absolute; top:14%; left:55%; width:5px; height:5px; background: rgba(255,240,180,.4); border-radius: 50%; animation: aw1-speckle 7s ease-in-out infinite 3s; }
@keyframes aw1-sky { 0% { opacity:.85 } 50% { opacity:1 } 100% { opacity:.9 } }
@keyframes aw1-victor { 0% { transform: translateX(-20px) rotate(0) scaleY(1) } 25% { transform: translateX(-18px) rotate(2deg) scaleY(1.02) } 50% { transform: translateX(-22px) rotate(-1deg) scaleY(.98) } 75% { transform: translateX(-16px) rotate(1deg) scaleY(1.01) } 100% { transform: translateX(-20px) rotate(0) scaleY(1) } }
@keyframes aw1-fallen { 0% { transform: rotate(-35deg) translateY(0) } 25% { transform: rotate(-33deg) translateY(-2px) } 50% { transform: rotate(-37deg) translateY(1px) } 75% { transform: rotate(-34deg) translateY(-1px) } 100% { transform: rotate(-35deg) translateY(0) } }
@keyframes aw1-radiance { 0% { transform: scale(.95); opacity:.6 } 50% { transform: scale(1.1); opacity:.9 } 100% { transform: scale(1); opacity:.7 } }
@keyframes aw1-speckle { 0% { transform: translateY(0) scale(1); opacity:.6 } 50% { transform: translateY(-12px) scale(1.6); opacity:.1 } 100% { transform: translateY(0) scale(1); opacity:.6 } }

/* rosalind-gives-chain - warm sunlit, tender moment of gift */
.scn-rosalind-gives-chain { background: linear-gradient(180deg, #f8e0b8 0%, #e8c888 30%, #d0a860 60%, #b88840 100%), radial-gradient(ellipse at 50% 0%, #fff0d0 0%, transparent 60%); }
.scn-rosalind-gives-chain .warm-bg { position:absolute; inset:0; background: radial-gradient(ellipse at 50% 60%, rgba(255,200,100,.15) 0%, transparent 70%); animation: rc1-bg 10s ease-in-out infinite alternate; }
.scn-rosalind-gives-chain .light-shaft { position:absolute; top:0; left:38%; right:38%; height:70%; background: linear-gradient(180deg, rgba(255,240,200,.25) 0%, rgba(255,240,200,.05) 80%, transparent 100%); clip-path: polygon(30% 0, 70% 0, 60% 100%, 40% 100%); animation: rc1-shaft 8s ease-in-out infinite alternate; }
.scn-rosalind-gives-chain .rosalind-figure { position:absolute; bottom:22%; left:44%; width:26px; height:58px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 35% 35%; box-shadow: 0 6px 18px rgba(0,0,0,.4); transform-origin: bottom center; animation: rc1-ros 5s ease-in-out infinite; }
.scn-rosalind-gives-chain .orlando-profile { position:absolute; bottom:22%; right:32%; width:24px; height:60px; background: linear-gradient(180deg, #3a4a3a 0%, #1a2a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 35% 35%; box-shadow: 0 6px 18px rgba(0,0,0,.4); transform-origin: bottom center; animation: rc1-lando 5s ease-in-out infinite 1s; }
.scn-rosalind-gives-chain .chain-glow { position:absolute; bottom:32%; left:52%; width:20px; height:10px; background: radial-gradient(ellipse at 50% 50%, #ffd080 0%, #e8b050 40%, transparent 70%); border-radius: 50%; box-shadow: 0 0 20px 6px rgba(255,200,80,.5); animation: rc1-chain 3s ease-in-out infinite; }
.scn-rosalind-gives-chain .sparkle-a { position:absolute; bottom:34%; left:55%; width:4px; height:4px; background: #fff0c0; border-radius: 50%; box-shadow: 0 0 6px 2px rgba(255,240,200,.6); animation: rc1-sparkle 2s ease-in-out infinite; }
.scn-rosalind-gives-chain .sparkle-b { position:absolute; bottom:30%; left:58%; width:3px; height:3px; background: #fff0c0; border-radius: 50%; box-shadow: 0 0 4px 1px rgba(255,240,200,.5); animation: rc1-sparkle 2s ease-in-out infinite .6s; }
.scn-rosalind-gives-chain .sparkle-c { position:absolute; bottom:36%; left:50%; width:3px; height:3px; background: #fff0c0; border-radius: 50%; box-shadow: 0 0 4px 1px rgba(255,240,200,.5); animation: rc1-sparkle 2s ease-in-out infinite 1.2s; }
.scn-rosalind-gives-chain .ground-glow { position:absolute; bottom:0; left:30%; right:30%; height:20%; background: radial-gradient(ellipse at 50% 100%, rgba(200,160,80,.2) 0%, transparent 70%); border-radius: 50% 50% 0 0; animation: rc1-ground 12s ease-in-out infinite alternate; }
@keyframes rc1-bg { 0% { opacity:.85 } 50% { opacity:1 } 100% { opacity:.9 } }
@keyframes rc1-shaft { 0% { opacity:.4 } 50% { opacity:.7 } 100% { opacity:.5 } }
@keyframes rc1-ros { 0% { transform: translateX(0) rotate(0) } 25% { transform: translateX(3px) rotate(1deg) } 50% { transform: translateX(-2px) rotate(-1deg) } 75% { transform: translateX(4px) rotate(2deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes rc1-lando { 0% { transform: translateX(0) rotate(0) } 25% { transform: translateX(-2px) rotate(-1deg) } 50% { transform: translateX(1px) rotate(.5deg) } 75% { transform: translateX(-3px) rotate(-1.5deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes rc1-chain { 0% { transform: scale(1) rotate(0); opacity:.7 } 50% { transform: scale(1.15) rotate(5deg); opacity:1 } 100% { transform: scale(1) rotate(0); opacity:.7 } }
@keyframes rc1-sparkle { 0% { transform: scale(1); opacity:.8 } 30% { transform: scale(1.8); opacity:1 } 60% { transform: scale(.7); opacity:.4 } 100% { transform: scale(1); opacity:.8 } }
@keyframes rc1-ground { 0% { opacity:.4 } 50% { opacity:.7 } 100% { opacity:.5 } }

.scn-forest-of-arden-duke-senior { background: linear-gradient(180deg, #87ceeb 0%, #9acd32 40%, #6b8e23 100%), radial-gradient(ellipse at 60% 20%, rgba(255,255,220,.6) 0%, transparent 60%); position: relative; overflow: hidden; }
.scn-forest-of-arden-duke-senior .sky      { position: absolute; inset: 0 0 60% 0; background: linear-gradient(180deg, #b0e0e6 0%, #87ceeb 50%, transparent 100%); animation: fa-sky 12s ease-in-out infinite alternate; }
.scn-forest-of-arden-duke-senior .canopy   { position: absolute; top: 0; left: 0; right: 0; height: 40%; background: radial-gradient(ellipse at 50% 100%, #228b22 0%, #006400 70%); border-radius: 0 0 40% 40% / 0 0 60% 60%; filter: blur(2px); animation: fa-canopy 18s ease-in-out infinite; }
.scn-forest-of-arden-duke-senior .sunbeam-1{ position: absolute; top: -10%; left: 20%; width: 12%; height: 80%; background: linear-gradient(180deg, rgba(255,255,230,.4) 0%, transparent 100%); clip-path: polygon(0 0, 100% 0, 70% 100%, 30% 100%); animation: fa-beam 6s ease-in-out infinite alternate; }
.scn-forest-of-arden-duke-senior .sunbeam-2{ position: absolute; top: -5%; left: 60%; width: 8%; height: 70%; background: linear-gradient(180deg, rgba(255,255,220,.3) 0%, transparent 100%); clip-path: polygon(0 0, 100% 0, 80% 100%, 20% 100%); animation: fa-beam 8s ease-in-out infinite alternate-reverse; }
.scn-forest-of-arden-duke-senior .ground   { position: absolute; bottom: 0; left: 0; right: 0; height: 25%; background: linear-gradient(180deg, #556b2f 0%, #3b5323 100%); border-radius: 30% 70% 0 0 / 50% 50% 0 0; }
.scn-forest-of-arden-duke-senior .tree-left{ position: absolute; bottom: 20%; left: 10%; width: 8%; height: 60%; background: linear-gradient(180deg, #4a2e1b 0%, #2e1a0d 100%); border-radius: 30% 30% 10% 10% / 40% 40% 20% 20%; }
.scn-forest-of-arden-duke-senior .tree-right{ position: absolute; bottom: 20%; right: 8%; width: 10%; height: 55%; background: linear-gradient(180deg, #4a2e1b 0%, #2e1a0d 100%); border-radius: 40% 40% 10% 10% / 50% 50% 20% 20%; }
.scn-forest-of-arden-duke-senior .duke     { position: absolute; bottom: 18%; left: 35%; width: 12px; height: 40px; background: linear-gradient(180deg, #2c1e0e 0%, #1a1008 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: fa-figure 4s ease-in-out infinite; }
.scn-forest-of-arden-duke-senior .lord     { position: absolute; bottom: 18%; left: 50%; width: 10px; height: 36px; background: linear-gradient(180deg, #2c1e0e 0%, #1a1008 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: fa-figure 4.5s ease-in-out infinite reverse; }
@keyframes fa-sky    { 0% { opacity: .8; } 50% { opacity: 1; } 100% { opacity: .9; } }
@keyframes fa-canopy { 0% { transform: translateY(0) scale(1); } 50% { transform: translateY(-4px) scale(1.02); } 100% { transform: translateY(2px) scale(.98); } }
@keyframes fa-beam   { 0% { opacity: .3; transform: rotate(-2deg); } 50% { opacity: .7; transform: rotate(1deg); } 100% { opacity: .4; transform: rotate(0); } }
@keyframes fa-figure { 0% { transform: translateX(0) translateY(0) rotate(-2deg); } 25% { transform: translateX(8px) translateY(-2px) rotate(1deg); } 50% { transform: translateX(16px) translateY(0) rotate(-1deg); } 75% { transform: translateX(24px) translateY(-1px) rotate(2deg); } 100% { transform: translateX(32px) translateY(0) rotate(0); } }

.scn-jaques-moralizes-stag { background: linear-gradient(180deg, #b0d4e8 0%, #7ab8d0 40%, #4a7a6a 100%), radial-gradient(ellipse at 50% 0%, rgba(255,255,200,.5) 0%, transparent 50%); position: relative; overflow: hidden; }
.scn-jaques-moralizes-stag .sky        { position: absolute; inset: 0 0 50% 0; background: linear-gradient(180deg, #c0e0f0 0%, transparent 100%); animation: jm-sky 15s ease-in-out infinite alternate; }
.scn-jaques-moralizes-stag .stream     { position: absolute; bottom: 0; left: 0; right: 0; height: 35%; background: linear-gradient(180deg, #3a7a6a 0%, #2a5a4a 40%, #1a3a2a 100%); border-radius: 60% 40% 0 0 / 80% 60% 0 0; animation: jm-stream 8s ease-in-out infinite; }
.scn-jaques-moralizes-stag .bank-fore  { position: absolute; bottom: 28%; left: 5%; right: 5%; height: 10%; background: linear-gradient(180deg, #6a8a4a 0%, #4a6a2a 100%); border-radius: 40% 60% 0 0 / 60% 80% 0 0; }
.scn-jaques-moralizes-stag .bank-back  { position: absolute; bottom: 40%; left: 15%; right: 15%; height: 6%; background: linear-gradient(180deg, #5a7a3a 0%, #3a5a1a 100%); border-radius: 50% 50% 0 0 / 80% 80% 0 0; }
.scn-jaques-moralizes-stag .deer       { position: absolute; bottom: 30%; left: 30%; width: 28px; height: 40px; background: radial-gradient(ellipse at 50% 60%, #5a3a2a 20%, #2a1a0a 80%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: jm-deer 6s ease-in-out infinite; }
.scn-jaques-moralizes-stag .reeds-1    { position: absolute; bottom: 20%; left: 10%; width: 4px; height: 30px; background: linear-gradient(180deg, #3a5a2a 0%, #1a2a0a 100%); border-radius: 20%; animation: jm-reed 3s ease-in-out infinite; }
.scn-jaques-moralizes-stag .reeds-2    { position: absolute; bottom: 20%; right: 15%; width: 5px; height: 36px; background: linear-gradient(180deg, #3a5a2a 0%, #1a2a0a 100%); border-radius: 20%; animation: jm-reed 3.5s ease-in-out infinite reverse; }
.scn-jaques-moralizes-stag .jaques     { position: absolute; bottom: 30%; left: 60%; width: 14px; height: 38px; background: linear-gradient(180deg, #2c1e0e 0%, #1a1008 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: jm-figure 5s ease-in-out infinite; }
@keyframes jm-sky    { 0% { opacity: .9; } 50% { opacity: 1; } 100% { opacity: .8; } }
@keyframes jm-stream { 0% { transform: translateY(0); } 50% { transform: translateY(3px); } 100% { transform: translateY(-2px); } }
@keyframes jm-deer   { 0% { transform: rotate(-2deg) translateY(0); } 50% { transform: rotate(1deg) translateY(-3px); } 100% { transform: rotate(-1deg) translateY(0); } }
@keyframes jm-reed   { 0% { transform: rotate(-5deg); } 50% { transform: rotate(8deg); } 100% { transform: rotate(-5deg); } }
@keyframes jm-figure { 0% { transform: translateX(0) translateY(0); } 50% { transform: translateX(6px) translateY(-2px); } 100% { transform: translateX(12px) translateY(0); } }

.scn-palace-frederick-search { background: linear-gradient(180deg, #d4a86a 0%, #b08050 30%, #7a5030 100%), radial-gradient(ellipse at 50% 0%, rgba(200,170,120,.6) 0%, transparent 60%); position: relative; overflow: hidden; }
.scn-palace-frederick-search .floor       { position: absolute; bottom: 0; left: 0; right: 0; height: 20%; background: linear-gradient(180deg, #6a4a2a 0%, #4a2a1a 100%); box-shadow: inset 0 8px 20px rgba(0,0,0,.4); }
.scn-palace-frederick-search .wall-back   { position: absolute; inset: 0 0 20% 0; background: linear-gradient(180deg, #c8a060 0%, #a08040 100%); }
.scn-palace-frederick-search .wall-side   { position: absolute; top: 0; left: 0; width: 25%; bottom: 20%; background: linear-gradient(180deg, #a08050 0%, #704020 100%); border-right: 2px solid #5a3010; }
.scn-palace-frederick-search .column-1    { position: absolute; top: 5%; left: 20%; width: 6%; height: 70%; background: linear-gradient(180deg, #e0c080 0%, #b09050 100%); border-radius: 5px; box-shadow: 2px 0 6px rgba(0,0,0,.3); }
.scn-palace-frederick-search .column-2    { position: absolute; top: 5%; right: 20%; width: 6%; height: 70%; background: linear-gradient(180deg, #e0c080 0%, #b09050 100%); border-radius: 5px; box-shadow: -2px 0 6px rgba(0,0,0,.3); }
.scn-palace-frederick-search .window      { position: absolute; top: 15%; left: 30%; width: 18%; height: 30%; background: radial-gradient(ellipse at 50% 50%, #c0d0e0 0%, #8090a0 70%); border: 6px solid #6a4a2a; border-radius: 8px; box-shadow: inset 0 0 20px rgba(255,255,200,.4); }
.scn-palace-frederick-search .guard-1     { position: absolute; bottom: 20%; left: 30%; width: 12px; height: 40px; background: #3a2a1a; border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: pf-guard 2s ease-in-out infinite; }
.scn-palace-frederick-search .guard-2     { position: absolute; bottom: 20%; right: 30%; width: 12px; height: 40px; background: #3a2a1a; border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: pf-guard 2.5s ease-in-out infinite reverse; }
.scn-palace-frederick-search .duke        { position: absolute; bottom: 20%; left: 46%; width: 16px; height: 44px; background: linear-gradient(180deg, #4a2a1a 0%, #2a1a0a 100%); border-radius: 50% 50% 35% 35% / 65% 65% 35% 35%; transform-origin: bottom center; animation: pf-duke 3s ease-in-out infinite; }
@keyframes pf-guard { 0% { transform: rotate(-3deg) translateX(0); } 50% { transform: rotate(3deg) translateX(4px); } 100% { transform: rotate(-3deg) translateX(0); } }
@keyframes pf-duke  { 0% { transform: rotate(0) translateY(0); } 25% { transform: rotate(-2deg) translateY(-2px); } 50% { transform: rotate(1deg) translateY(0); } 75% { transform: rotate(2deg) translateY(-1px); } 100% { transform: rotate(0) translateY(0); } }

.scn-before-olivers-house { background: linear-gradient(180deg, #f0e0c0 0%, #c8b080 40%, #a08860 100%), radial-gradient(ellipse at 50% 0%, rgba(255,240,200,.7) 0%, transparent 50%); position: relative; overflow: hidden; }
.scn-before-olivers-house .sky      { position: absolute; inset: 0 0 50% 0; background: linear-gradient(180deg, #e0d0a0 0%, #f0e0c0 60%, transparent 100%); animation: bo-sky 14s ease-in-out infinite alternate; }
.scn-before-olivers-house .ground   { position: absolute; bottom: 0; left: 0; right: 0; height: 30%; background: linear-gradient(180deg, #a08060 0%, #7a5a3a 100%); border-radius: 40% 60% 0 0 / 30% 40% 0 0; }
.scn-before-olivers-house .house    { position: absolute; bottom: 20%; left: 20%; width: 40%; height: 45%; background: linear-gradient(180deg, #c8a070 0%, #a08050 100%); border-radius: 8% 8% 2% 2%; box-shadow: 0 6px 12px rgba(0,0,0,.4); }
.scn-before-olivers-house .door     { position: absolute; bottom: 20%; left: 30%; width: 10%; height: 25%; background: linear-gradient(180deg, #5a3a1a 0%, #3a2010 100%); border-radius: 20% 20% 0 0; }
.scn-before-olivers-house .tree     { position: absolute; bottom: 20%; right: 10%; width: 12%; height: 60%; background: linear-gradient(180deg, #4a2e1b 0%, #2e1a0d 100%); border-radius: 30% 30% 10% 10% / 40% 40% 20% 20%; }
.scn-before-olivers-house .shadow   { position: absolute; bottom: 20%; left: 15%; width: 30%; height: 10%; background: rgba(0,0,0,.15); border-radius: 50%; filter: blur(4px); animation: bo-shadow 6s ease-in-out infinite; }
.scn-before-olivers-house .orlando  { position: absolute; bottom: 18%; left: 25%; width: 14px; height: 42px; background: linear-gradient(180deg, #2c1e0e 0%, #1a1008 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: bo-walk 3s ease-in-out infinite; }
.scn-before-olivers-house .adam     { position: absolute; bottom: 18%; left: 55%; width: 12px; height: 38px; background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: bo-walk 3.5s ease-in-out infinite reverse; }
@keyframes bo-sky   { 0% { opacity: .9; } 50% { opacity: 1; } 100% { opacity: .85; } }
@keyframes bo-shadow{ 0% { transform: scaleX(1) translateX(0); } 50% { transform: scaleX(1.1) translateX(5px); } 100% { transform: scaleX(1) translateX(0); } }
@keyframes bo-walk  { 0% { transform: translateX(0) translateY(0) rotate(-2deg); } 25% { transform: translateX(8px) translateY(-2px) rotate(1deg); } 50% { transform: translateX(16px) translateY(0) rotate(-1deg); } 75% { transform: translateX(24px) translateY(-1px) rotate(2deg); } 100% { transform: translateX(32px) translateY(0) rotate(0); } }

/* one block per scene id. Append to style.css. */
.scn-forest-jaques-fool {
  background: linear-gradient(180deg, #b8d4e3 0%, #e2d19b 60%, #9ab87a 100%),
              radial-gradient(ellipse at 50% 20%, #fce8b0 0%, transparent 60%);
}
.scn-forest-jaques-fool .sky-bg { position:absolute; inset:0 0 55% 0; background: linear-gradient(180deg, #a8cce0 0%, #dce4b0 100%); animation: jf1-sky 14s ease-in-out infinite alternate; }
.scn-forest-jaques-fool .sun-rays { position:absolute; top:0; left:0; width:100%; height:40%; background: radial-gradient(ellipse at 30% 20%, rgba(255,245,180,0.25) 0%, transparent 60%); animation: jf1-sun 6s ease-in-out infinite; }
.scn-forest-jaques-fool .forest-bg { position:absolute; bottom:45%; left:0; right:0; height:30%; background: linear-gradient(90deg, #4a6a3a 0%, #3a5a2a 20%, #5a7a4a 50%, #2a4a1a 80%, #4a6a3a 100%); border-radius: 20% 30% 0 0 / 60% 50% 0 0; animation: jf1-trees 20s ease-in-out infinite alternate; }
.scn-forest-jaques-fool .ground { position:absolute; bottom:0; left:0; right:0; height:45%; background: linear-gradient(180deg, #7a9a5a 0%, #5a7a3a 60%, #3a5a2a 100%); box-shadow: inset 0 10px 20px rgba(0,0,0,0.15); }
.scn-forest-jaques-fool .fool-shape { position:absolute; bottom:22%; left:35%; width:60px; height:50px; border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; background: radial-gradient(ellipse at 50% 30%, #dba87a 0%, #a0765a 100%); animation: jf1-fool 4s ease-in-out infinite; }
.scn-forest-jaques-fool .motley-patch-1 { position:absolute; bottom:27%; left:37%; width:20px; height:12px; border-radius: 30%; background: #c8553d; transform: rotate(-15deg); animation: jf1-patch 3s ease-in-out infinite; }
.scn-forest-jaques-fool .motley-patch-2 { position:absolute; bottom:20%; left:40%; width:18px; height:14px; border-radius: 40%; background: #58a04a; transform: rotate(20deg); animation: jf1-patch 3.5s ease-in-out infinite reverse; }
.scn-forest-jaques-fool .fool-hat { position:absolute; bottom:42%; left:36%; width:30px; height:20px; border-radius: 50% 50% 10% 10%; background: linear-gradient(180deg, #b87878 0%, #a0461a 100%); transform: rotate(-5deg); animation: jf1-hat 2s ease-in-out infinite alternate; }
.scn-forest-jaques-fool .butterfly { position:absolute; bottom:50%; right:25%; width:14px; height:10px; background: #e8c868; border-radius: 50% 0 50% 0; filter: blur(1px); animation: jf1-bfly 8s linear infinite; }
@keyframes jf1-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.85 } }
@keyframes jf1-sun { 0% { opacity:0.7; transform: scaleX(0.9) } 50% { opacity:1; transform: scaleX(1.1) } 100% { opacity:0.8; transform: scaleX(0.95) } }
@keyframes jf1-trees { 0% { transform: translateY(0) scaleY(1) } 50% { transform: translateY(-2px) scaleY(1.02) } 100% { transform: translateY(1px) scaleY(0.98) } }
@keyframes jf1-fool { 0%,100% { transform: rotate(-2deg) translateY(0) } 25% { transform: rotate(2deg) translateY(-3px) } 75% { transform: rotate(-1deg) translateY(-1px) } }
@keyframes jf1-patch { 0%,100% { opacity:0.9; transform: rotate(-15deg) scale(1) } 50% { opacity:1; transform: rotate(5deg) scale(1.1) } }
@keyframes jf1-hat { 0% { transform: rotate(-8deg) translateX(0) } 100% { transform: rotate(8deg) translateX(2px) } }
@keyframes jf1-bfly { 0% { transform: translate(0,0) scale(1) } 25% { transform: translate(30px,-20px) scale(0.8) } 50% { transform: translate(-20px,-10px) scale(1.1) } 75% { transform: translate(40px,10px) scale(0.9) } 100% { transform: translate(0,0) scale(1) } }

.scn-forest-duke-jaques {
  background: linear-gradient(180deg, #d4c8a0 0%, #b5a880 40%, #8a9a60 100%),
              radial-gradient(ellipse at 60% 30%, #f0e0b0 0%, transparent 50%);
}
.scn-forest-duke-jaques .sky-dj { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #e8dcb8 0%, #c8bca0 100%); animation: dj2-fade 10s ease-in-out infinite alternate; }
.scn-forest-duke-jaques .canopy-dj { position:absolute; top:10%; left:0; right:0; height:40%; background: linear-gradient(180deg, #5a7a3a 0%, #3a5a2a 100%); border-radius: 30% 40% 0 0 / 50% 60% 0 0; animation: dj2-sway 18s ease-in-out infinite alternate; }
.scn-forest-duke-jaques .clearing-dj { position:absolute; bottom:25%; left:20%; right:20%; height:25%; background: linear-gradient(180deg, #9ab87a 0%, #7a9a5a 100%); border-radius: 20% 20% 0 0; box-shadow: 0 -4px 12px rgba(0,0,0,0.1); }
.scn-forest-duke-jaques .trunk-dj { position:absolute; bottom:30%; left:30%; width:20px; height:50%; background: linear-gradient(90deg, #5a3a2a 0%, #7a5a3a 50%, #4a2a1a 100%); border-radius: 4px; box-shadow: 0 0 12px rgba(0,0,0,0.2); }
.scn-forest-duke-jaques .duke-figure { position:absolute; bottom:28%; left:38%; width:22px; height:50px; border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); animation: dj2-duke 6s ease-in-out infinite; }
.scn-forest-duke-jaques .jaques-figure { position:absolute; bottom:28%; right:38%; width:20px; height:48px; border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; background: linear-gradient(180deg, #3a4a3a 0%, #1a2a1a 100%); animation: dj2-jaques 8s ease-in-out infinite; }
.scn-forest-duke-jaques .gesture-hand { position:absolute; bottom:38%; left:42%; width:10px; height:8px; background: #4a3a2a; border-radius: 50% 50% 0 0; transform-origin: bottom center; animation: dj2-hand 3s ease-in-out infinite alternate; }
@keyframes dj2-fade { 0% { opacity:0.85 } 50% { opacity:1 } 100% { opacity:0.9 } }
@keyframes dj2-sway { 0% { transform: translateX(-4px) scaleY(1) } 50% { transform: translateX(4px) scaleY(1.02) } 100% { transform: translateX(-2px) scaleY(0.98) } }
@keyframes dj2-duke { 0%,100% { transform: translateY(0) rotate(0) } 30% { transform: translateY(-2px) rotate(-2deg) } 70% { transform: translateY(1px) rotate(1deg) } }
@keyframes dj2-jaques { 0%,100% { transform: translateY(0) rotate(0) } 25% { transform: translateY(-1px) rotate(2deg) } 75% { transform: translateY(1px) rotate(-1deg) } }
@keyframes dj2-hand { 0% { transform: rotate(-20deg) } 50% { transform: rotate(10deg) } 100% { transform: rotate(-5deg) } }

.scn-forest-duke-chiding {
  background: linear-gradient(180deg, #3a4a3a 0%, #2a3a2a 40%, #1a2a1a 100%),
              radial-gradient(ellipse at 30% 20%, #c8a040 0%, transparent 70%);
}
.scn-forest-duke-chiding .sky-dc { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #5a6a4a 0%, #3a4a3a 100%); animation: dc3-gloom 16s ease-in-out infinite alternate; }
.scn-forest-duke-chiding .dark-woods { position:absolute; bottom:35%; left:0; right:0; height:40%; background: linear-gradient(90deg, #1a2a1a 0%, #2a3a2a 30%, #1a2a1a 70%, #0a1a0a 100%); border-radius: 30% 50% 0 0 / 40% 60% 0 0; box-shadow: inset 0 10px 30px rgba(0,0,0,0.6); }
.scn-forest-duke-chiding .sun-shaft { position:absolute; top:5%; left:25%; width:20%; height:60%; background: linear-gradient(180deg, rgba(200,160,64,0.15) 0%, transparent 100%); clip-path: polygon(0% 0%, 100% 0%, 80% 100%, 20% 100%); animation: dc3-shaft 7s ease-in-out infinite alternate; }
.scn-forest-duke-chiding .ground-dc { position:absolute; bottom:0; left:0; right:0; height:35%; background: linear-gradient(180deg, #2a3a2a 0%, #1a2a1a 100%); box-shadow: inset 0 8px 20px rgba(0,0,0,0.5); }
.scn-forest-duke-chiding .duke-chiding { position:absolute; bottom:30%; left:30%; width:24px; height:56px; border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%); transform: rotate(-5deg); animation: dc3-duke 4s ease-in-out infinite; }
.scn-forest-duke-chiding .jaques-cowering { position:absolute; bottom:30%; right:35%; width:22px; height:48px; border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; background: linear-gradient(180deg, #2a3a2a 0%, #1a2a1a 100%); transform: rotate(8deg) scale(0.9); animation: dc3-cower 5s ease-in-out infinite; }
.scn-forest-duke-chiding .pointing-arm { position:absolute; bottom:42%; left:35%; width:14px; height:6px; background: #3a2a1a; border-radius: 50% 0 0 50%; transform-origin: right center; animation: dc3-point 2s ease-in-out infinite alternate; }
.scn-forest-duke-chiding .shadow-stripe { position:absolute; bottom:30%; left:45%; width:6px; height:30px; background: rgba(0,0,0,0.4); filter: blur(2px); animation: dc3-stripe 3s ease-in-out infinite; }
@keyframes dc3-gloom { 0% { opacity:0.7 } 50% { opacity:1 } 100% { opacity:0.8 } }
@keyframes dc3-shaft { 0% { opacity:0.3 } 50% { opacity:0.7 } 100% { opacity:0.4 } }
@keyframes dc3-duke { 0%,100% { transform: rotate(-5deg) translateY(0) } 30% { transform: rotate(-7deg) translateY(-2px) } 70% { transform: rotate(-3deg) translateY(1px) } }
@keyframes dc3-cower { 0%,100% { transform: rotate(8deg) scale(0.9) translateX(0) } 50% { transform: rotate(12deg) scale(0.85) translateX(3px) } }
@keyframes dc3-point { 0% { transform: rotate(-30deg) } 100% { transform: rotate(10deg) } }
@keyframes dc3-stripe { 0% { opacity:0.4; transform: scaleY(1) } 50% { opacity:0.7; transform: scaleY(1.2) } 100% { opacity:0.3; transform: scaleY(0.9) } }

.scn-forest-orlando-sword {
  background: linear-gradient(180deg, #d0c090 0%, #b0a070 40%, #809060 100%),
              radial-gradient(ellipse at 70% 50%, #f0e0b0 0%, transparent 40%);
}
.scn-forest-orlando-sword .sky-os { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #e8dca0 0%, #c8bc80 100%); animation: os4-bright 12s ease-in-out infinite alternate; }
.scn-forest-orlando-sword .bark-os { position:absolute; bottom:30%; left:15%; width:28px; height:60%; background: linear-gradient(90deg, #5a3a2a 0%, #7a5a3a 50%, #4a2a1a 100%); border-radius: 6px; box-shadow: 6px 0 12px rgba(0,0,0,0.3); }
.scn-forest-orlando-sword .ground-os { position:absolute; bottom:0; left:0; right:0; height:50%; background: linear-gradient(180deg, #8a9a5a 0%, #5a7a3a 60%, #3a5a2a 100%); }
.scn-forest-orlando-sword .orlando-body { position:absolute; bottom:30%; left:45%; width:24px; height:62px; border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); animation: os4-fig 3s ease-in-out infinite; }
.scn-forest-orlando-sword .sword-blade { position:absolute; bottom:45%; left:48%; width:6px; height:70px; background: linear-gradient(180deg, #e0e0e0 0%, #c0c0c0 50%, #a0a0a0 100%); border-radius: 0 0 3px 3px; transform-origin: bottom center; transform: rotate(-20deg); animation: os4-blade 2s ease-in-out infinite alternate; }
.scn-forest-orlando-sword .sword-guard { position:absolute; bottom:48%; left:45%; width:18px; height:4px; background: #8a6a3a; border-radius: 2px; transform: rotate(-20deg); }
.scn-forest-orlando-sword .glare-spot { position:absolute; bottom:55%; left:47%; width:10px; height:6px; background: #fffde0; border-radius: 50%; filter: blur(3px); animation: os4-glare 1.5s ease-in-out infinite alternate; }
.scn-forest-orlando-sword .dust-particle-1 { position:absolute; bottom:40%; left:30%; width:4px; height:4px; background: #e0d0a0; border-radius: 50%; filter: blur(1px); animation: os4-dust 6s linear infinite; }
.scn-forest-orlando-sword .dust-particle-2 { position:absolute; bottom:50%; left:60%; width:3px; height:3px; background: #d0c090; border-radius: 50%; filter: blur(1px); animation: os4-dust 7s linear infinite reverse; }
@keyframes os4-bright { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.9 } }
@keyframes os4-fig { 0%,100% { transform: translateY(0) rotate(0) } 25% { transform: translateY(-1px) rotate(-1deg) } 75% { transform: translateY(1px) rotate(1deg) } }
@keyframes os4-blade { 0% { transform: rotate(-25deg) translateY(0) } 50% { transform: rotate(-15deg) translateY(-2px) } 100% { transform: rotate(-20deg) translateY(0) } }
@keyframes os4-glare { 0% { opacity:0.3; transform: scale(0.8) } 100% { opacity:1; transform: scale(1.2) } }
@keyframes os4-dust { 0% { transform: translateY(0) rotate(0deg) } 25% { transform: translateY(-20px) rotate(90deg) } 50% { transform: translateY(10px) rotate(180deg) } 75% { transform: translateY(-30px) rotate(270deg) } 100% { transform: translateY(0) rotate(360deg) } }

.scn-oliver-napkin-revelation {
  background: linear-gradient(180deg, #7a8a9a 0%, #5a6a7a 40%, #4a5a6a 100%),
              radial-gradient(ellipse at 50% 30%, #8a9aaa 0%, transparent 60%);
}

.scn-oliver-napkin-revelation .sky-overcast {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #8a9aaa 0%, #6a7a8a 100%);
  animation: onr-sky 10s ease-in-out infinite alternate;
}

.scn-oliver-napkin-revelation .hand-left {
  position: absolute; bottom: 25%; left: 20%; width: 60px; height: 80px;
  background: radial-gradient(ellipse at 30% 60%, #3a3a4a 0%, #2a2a3a 70%);
  border-radius: 40% 60% 50% 50% / 50% 40% 60% 50%;
  transform: rotate(20deg);
  animation: onr-hand 4s ease-in-out infinite alternate;
}

.scn-oliver-napkin-revelation .hand-right {
  position: absolute; bottom: 25%; right: 20%; width: 60px; height: 80px;
  background: radial-gradient(ellipse at 70% 60%, #3a3a4a 0%, #2a2a3a 70%);
  border-radius: 60% 40% 50% 50% / 50% 40% 60% 50%;
  transform: rotate(-20deg);
  animation: onr-hand 4s ease-in-out infinite alternate-reverse;
}

.scn-oliver-napkin-revelation .napkin {
  position: absolute; bottom: 30%; left: 50%; width: 100px; height: 80px;
  background: linear-gradient(135deg, #dad8c8 0%, #c0b8a8 50%, #a8a090 100%);
  border-radius: 10% 20% 15% 25% / 15% 20% 30% 20%;
  transform: translateX(-50%) rotate(5deg);
  box-shadow: 0 4px 12px rgba(0,0,0,0.3);
  animation: onr-napkin 6s ease-in-out infinite;
}

.scn-oliver-napkin-revelation .stain {
  position: absolute; bottom: 40%; left: 50%; width: 30px; height: 30px;
  background: radial-gradient(circle, #a0461a 0%, #7a3010 60%, transparent 80%);
  border-radius: 50%;
  transform: translateX(-50%) translateY(5px);
  animation: onr-stain 5s ease-in-out infinite alternate;
}

.scn-oliver-napkin-revelation .mist {
  position: absolute; top: 20%; width: 120px; height: 40px;
  background: linear-gradient(180deg, rgba(160,170,180,0.4) 0%, rgba(160,170,180,0) 100%);
  border-radius: 50%;
  filter: blur(10px);
}

.scn-oliver-napkin-revelation .mist-1 {
  left: -10%;
  animation: onr-mist 20s linear infinite;
}

.scn-oliver-napkin-revelation .mist-2 {
  right: -10%;
  animation: onr-mist 25s linear infinite reverse;
}

@keyframes onr-sky {
  0% { opacity: 0.7; }
  50% { opacity: 0.85; }
  100% { opacity: 0.65; }
}

@keyframes onr-hand {
  0% { transform: rotate(20deg) translateX(0); }
  50% { transform: rotate(25deg) translateX(2px); }
  100% { transform: rotate(18deg) translateX(-1px); }
}

@keyframes onr-napkin {
  0% { transform: translateX(-50%) rotate(5deg) scale(1); }
  50% { transform: translateX(-50%) rotate(2deg) scale(1.02); }
  100% { transform: translateX(-50%) rotate(6deg) scale(0.98); }
}

@keyframes onr-stain {
  0% { opacity: 0.7; transform: translateX(-50%) translateY(5px) scale(1); }
  50% { opacity: 1; transform: translateX(-50%) translateY(2px) scale(1.1); }
  100% { opacity: 0.8; transform: translateX(-50%) translateY(6px) scale(0.95); }
}

@keyframes onr-mist {
  0% { transform: translateX(0); }
  50% { transform: translateX(50px); }
  100% { transform: translateX(100px); }
}

/* ---- Scene 2: william-encounter ---- */

.scn-william-encounter {
  background: linear-gradient(180deg, #6b7a6a 0%, #4a5a4a 40%, #3a4a3a 100%),
              radial-gradient(ellipse at 50% 80%, #4a5a4a 0%, transparent 60%);
}

.scn-william-encounter .forest-bg {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(100,120,100,0.3) 0%, transparent 50%);
  animation: we-bg 12s ease-in-out infinite alternate;
}

.scn-william-encounter .tree {
  position: absolute; bottom: 20%; width: 20px; height: 150px;
  background: linear-gradient(180deg, #4a3a2a 0%, #3a2a1a 100%);
  border-radius: 10% / 30%;
}

.scn-william-encounter .tree-1 { left: 15%; animation: we-tree 8s ease-in-out infinite; }
.scn-william-encounter .tree-2 { right: 15%; animation: we-tree 10s ease-in-out infinite reverse; }

.scn-william-encounter .william {
  position: absolute; bottom: 25%; left: 30%; width: 20px; height: 60px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: we-figure 4s ease-in-out infinite;
}

.scn-william-encounter .audrey {
  position: absolute; bottom: 25%; right: 30%; width: 22px; height: 55px;
  background: linear-gradient(180deg, #3a2a3a 0%, #2a1a2a 100%);
  border-radius: 50% 40% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: we-figure 4s ease-in-out infinite 1s;
}

.scn-william-encounter .priest {
  position: absolute; bottom: 25%; left: 50%; width: 18px; height: 70px;
  background: linear-gradient(180deg, #4a3a3a 0%, #3a2a2a 100%);
  border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%;
  transform: translateX(-50%);
  animation: we-priest 6s ease-in-out infinite;
}

.scn-william-encounter .leaf {
  position: absolute; top: 30%; width: 12px; height: 6px;
  background: #6a8a4a;
  border-radius: 50%;
  opacity: 0.7;
}

.scn-william-encounter .leaf-1 { left: 20%; animation: we-leaf 5s linear infinite; }
.scn-william-encounter .leaf-2 { right: 20%; animation: we-leaf 7s linear infinite reverse; }

@keyframes we-bg {
  0% { opacity: 0.5; } 50% { opacity: 0.7; } 100% { opacity: 0.4; }
}

@keyframes we-tree {
  0% { transform: scaleY(1); } 50% { transform: scaleY(1.02); } 100% { transform: scaleY(0.98); }
}

@keyframes we-figure {
  0% { transform: translateY(0) rotate(-2deg); }
  50% { transform: translateY(-3px) rotate(2deg); }
  100% { transform: translateY(0) rotate(-1deg); }
}

@keyframes we-priest {
  0% { transform: translateX(-50%) rotate(0); }
  50% { transform: translateX(-50%) rotate(5deg); }
  100% { transform: translateX(-50%) rotate(-3deg); }
}

@keyframes we-leaf {
  0% { transform: translateY(0) rotate(0); opacity: 0.7; }
  50% { transform: translateY(50px) rotate(180deg); opacity: 0.3; }
  100% { transform: translateY(100px) rotate(360deg); opacity: 0; }
}

/* ---- Scene 3: orlando-oliver-marriage-news ---- */

.scn-orlando-oliver-marriage-news {
  background: linear-gradient(180deg, #f0e8c0 0%, #d8c88a 40%, #c0a860 100%),
              radial-gradient(ellipse at 70% 20%, #fff8d0 0%, transparent 60%);
}

.scn-orlando-oliver-marriage-news .sunny-sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #f8f0d0 0%, #e8d8a0 100%);
  animation: oom-sky 20s ease-in-out infinite alternate;
}

.scn-orlando-oliver-marriage-news .sun {
  position: absolute; top: 15%; right: 20%; width: 60px; height: 60px;
  background: radial-gradient(circle, #ffe080 0%, #d0a030 70%);
  border-radius: 50%;
  box-shadow: 0 0 60px 20px rgba(255,224,128,0.5);
  animation: oom-sun 10s ease-in-out infinite alternate;
}

.scn-orlando-oliver-marriage-news .sun-rays {
  position: absolute; top: 15%; right: 20%; width: 120px; height: 120px;
  background: repeating-conic-gradient(rgba(255,224,128,0.1) 0% 10%, transparent 10% 20%);
  border-radius: 50%;
  transform: translate(-50%, -50%) scale(1.5);
  animation: oom-rays 15s linear infinite;
}

.scn-orlando-oliver-marriage-news .figures-left {
  position: absolute; bottom: 20%; left: 30%; width: 30px; height: 70px;
  background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%);
  border-radius: 40% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: oom-fig 5s ease-in-out infinite;
}

.scn-orlando-oliver-marriage-news .figures-right {
  position: absolute; bottom: 20%; right: 30%; width: 30px; height: 70px;
  background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%);
  border-radius: 50% 40% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: oom-fig 5s ease-in-out infinite 0.5s;
}

.scn-orlando-oliver-marriage-news .flowers {
  position: absolute; bottom: 15%; left: 10%; right: 10%; height: 40px;
  background: repeating-linear-gradient(90deg, #c0a060 0px, #d0b070 10px, #b89050 20px);
  border-radius: 20% 20% 0 0;
  opacity: 0.8;
  animation: oom-flow 8s ease-in-out infinite;
}

@keyframes oom-sky {
  0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.9; }
}

@keyframes oom-sun {
  0% { transform: scale(1); box-shadow: 0 0 60px 20px rgba(255,224,128,0.5); }
  50% { transform: scale(1.05); box-shadow: 0 0 80px 30px rgba(255,224,128,0.7); }
  100% { transform: scale(0.95); box-shadow: 0 0 50px 15px rgba(255,224,128,0.4); }
}

@keyframes oom-rays {
  0% { transform: translate(-50%, -50%) scale(1.5) rotate(0); }
  50% { transform: translate(-50%, -50%) scale(1.6) rotate(180deg); }
  100% { transform: translate(-50%, -50%) scale(1.5) rotate(360deg); }
}

@keyframes oom-fig {
  0% { transform: translateY(0) rotate(-2deg); }
  50% { transform: translateY(-4px) rotate(2deg); }
  100% { transform: translateY(0) rotate(-1deg); }
}

@keyframes oom-flow {
  0% { background-position-x: 0; } 50% { background-position-x: 20px; } 100% { background-position-x: 0; }
}

/* ---- Scene 4: lovers-resolutions ---- */

.scn-lovers-resolutions {
  background: linear-gradient(180deg, #e8d8b0 0%, #c8b87a 40%, #a89860 100%),
              radial-gradient(ellipse at 50% 30%, #f0e8c8 0%, transparent 70%);
}

.scn-lovers-resolutions .sky-warm {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #f8f0d8 0%, #e0d0a0 100%);
  animation: lr-sky 14s ease-in-out infinite alternate;
}

.scn-lovers-resolutions .tree-trunk {
  position: absolute; bottom: 0; left: 50%; width: 30px; height: 60%;
  background: linear-gradient(90deg, #4a3a2a 0%, #5a4a3a 30%, #3a2a1a 100%);
  border-radius: 20% 20% 0 0 / 10% 10% 0 0;
  transform: translateX(-50%);
  animation: lr-trunk 12s ease-in-out infinite;
}

.scn-lovers-resolutions .couple-1 {
  position: absolute; bottom: 25%; left: 25%; width: 40px; height: 60px;
  background: radial-gradient(ellipse at 30% 50%, #4a3a2a 0%, #2a1a0a 80%);
  border-radius: 40% 50% 40% 40% / 60% 50% 50% 40%;
  animation: lr-couple 6s ease-in-out infinite;
}

.scn-lovers-resolutions .couple-2 {
  position: absolute; bottom: 25%; right: 25%; width: 40px; height: 60px;
  background: radial-gradient(ellipse at 70% 50%, #4a3a2a 0%, #2a1a0a 80%);
  border-radius: 50% 40% 40% 40% / 50% 60% 40% 50%;
  animation: lr-couple 6s ease-in-out infinite 2s;
}

.scn-lovers-resolutions .shepherd {
  position: absolute; bottom: 20%; left: 50%; width: 25px; height: 55px;
  background: #3a2a1a;
  border-radius: 30% 30% 20% 20% / 60% 60% 40% 40%;
  transform: translateX(-50%);
  animation: lr-shepherd 8s ease-in-out infinite;
}

.scn-lovers-resolutions .staff {
  position: absolute; bottom: 22%; left: 50%; width: 4px; height: 80px;
  background: #6a5a3a;
  transform: translateX(-50%) rotate(-10deg);
  transform-origin: bottom center;
  animation: lr-staff 9s ease-in-out infinite;
}

.scn-lovers-resolutions .grass {
  position: absolute; bottom: 0; left: 0; right: 0; height: 15%;
  background: linear-gradient(180deg, #7a8a4a 0%, #5a6a3a 100%);
  border-radius: 30% 40% 0 0 / 60% 70% 0 0;
  animation: lr-grass 7s ease-in-out infinite;
}

@keyframes lr-sky {
  0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.9; }
}

@keyframes lr-trunk {
  0% { transform: translateX(-50%) scaleX(1); } 50% { transform: translateX(-50%) scaleX(1.02); } 100% { transform: translateX(-50%) scaleX(0.98); }
}

@keyframes lr-couple {
  0% { transform: translateY(0) rotate(-3deg); }
  50% { transform: translateY(-3px) rotate(3deg); }
  100% { transform: translateY(0) rotate(-2deg); }
}

@keyframes lr-shepherd {
  0% { transform: translateX(-50%) translateY(0); }
  50% { transform: translateX(-50%) translateY(-2px); }
  100% { transform: translateX(-50%) translateY(0); }
}

@keyframes lr-staff {
  0% { transform: translateX(-50%) rotate(-10deg); }
  50% { transform: translateX(-50%) rotate(-12deg); }
  100% { transform: translateX(-50%) rotate(-8deg); }
}

@keyframes lr-grass {
  0% { transform: scaleY(1); } 50% { transform: scaleY(1.03); } 100% { transform: scaleY(0.98); }
}

/* scene 1: forest-orlando-verse – warm sunlit, Orlando writing on a banner */
.scn-forest-orlando-verse {
  background:
    linear-gradient(180deg, #87ceeb 0%, #f5deb3 50%, #f4a460 100%),
    radial-gradient(ellipse at 50% 0%, #fff5e0 0%, transparent 70%);
  background-blend-mode: overlay;
}
.scn-forest-orlando-verse .sky {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(180deg, rgba(135,206,235,0.6) 0%, rgba(245,222,179,0) 100%);
  animation: fov-sky 10s ease-in-out infinite alternate;
}
.scn-forest-orlando-verse .sun {
  position: absolute; top: 8%; left: 25%;
  width: 60px; height: 60px;
  background: radial-gradient(circle, #ffd700 0%, #ff8c00 60%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 40px 20px rgba(255,215,0,0.4);
  animation: fov-sun 8s ease-in-out infinite alternate;
}
.scn-forest-orlando-verse .trees-back {
  position: absolute; bottom: 20%; left: 0; right: 0;
  height: 40%;
  background: linear-gradient(90deg, #2e8b57 0%, #228b22 30%, #006400 60%, #2e8b57 100%);
  border-radius: 20% 30% 0 0;
  filter: blur(4px);
  animation: fov-trees-bg 20s ease-in-out infinite alternate;
}
.scn-forest-orlando-verse .tree-trunk {
  position: absolute; bottom: 20%; left: 35%;
  width: 30px; height: 55%;
  background: linear-gradient(90deg, #6b4226 0%, #8b5a2b 50%, #6b4226 100%);
  border-radius: 20% 20% 5% 5%;
  transform-origin: bottom center;
  animation: fov-trunk 12s ease-in-out infinite;
}
.scn-forest-orlando-verse .banner {
  position: absolute; bottom: 45%; left: 30%;
  width: 80px; height: 30px;
  background: linear-gradient(180deg, #ffe4c4 0%, #f5deb3 100%);
  border-radius: 10% 10% 40% 40% / 30% 30% 70% 70%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.3), inset 0 0 10px rgba(255,255,255,0.5);
  animation: fov-banner 4s ease-in-out infinite alternate;
}
.scn-forest-orlando-verse .figure-orlando {
  position: absolute; bottom: 20%; left: 40%;
  width: 24px; height: 60px;
  background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: fov-orlando 3s ease-in-out infinite;
}
.scn-forest-orlando-verse .ground {
  position: absolute; bottom: 0; left: 0; right: 0;
  height: 25%;
  background: linear-gradient(180deg, #4a7c4a 0%, #2d5a2d 100%);
  border-radius: 60% 40% 0 0 / 20% 15% 0 0;
  box-shadow: inset 0 8px 12px rgba(0,0,0,0.3);
  animation: fov-ground 15s ease-in-out infinite alternate;
}
@keyframes fov-sky { 0% { opacity: 0.8 } 50% { opacity: 1 } 100% { opacity: 0.7 } }
@keyframes fov-sun { 0% { transform: scale(0.9); opacity: 0.8 } 50% { transform: scale(1.05); opacity: 1 } 100% { transform: scale(0.95); opacity: 0.7 } }
@keyframes fov-trees-bg { 0% { transform: translateY(0) scale(1) } 50% { transform: translateY(-5px) scale(1.02) } 100% { transform: translateY(0) scale(0.98) } }
@keyframes fov-trunk { 0%,100% { transform: rotate(0deg) } 50% { transform: rotate(2deg) } }
@keyframes fov-banner { 0% { transform: translateY(0) rotate(-2deg); opacity: 0.9 } 50% { transform: translateY(-3px) rotate(1deg); opacity: 1 } 100% { transform: translateY(-1px) rotate(0); opacity: 0.8 } }
@keyframes fov-orlando { 0% { transform: translateX(0) translateY(0) rotate(-1deg) } 25% { transform: translateX(3px) translateY(-2px) rotate(1deg) } 50% { transform: translateX(6px) translateY(0) rotate(-1deg) } 75% { transform: translateX(9px) translateY(-1px) rotate(0) } 100% { transform: translateX(12px) translateY(0) rotate(1deg) } }
@keyframes fov-ground { 0% { transform: translateY(0) } 50% { transform: translateY(-4px) } 100% { transform: translateY(0) } }

/* scene 2: forest-touchstone-corin – funny sunlit, two figures debating */
.scn-forest-touchstone-corin {
  background:
    linear-gradient(180deg, #87ceeb 0%, #fffacd 60%, #f4a460 100%),
    radial-gradient(ellipse at 30% 0%, #ffe4b5 0%, transparent 70%);
  background-blend-mode: overlay;
}
.scn-forest-touchstone-corin .sky {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, rgba(135,206,235,0.5) 0%, transparent 100%);
  animation: ftc-sky 12s ease-in-out infinite alternate;
}
.scn-forest-touchstone-corin .sun {
  position: absolute; top: 10%; right: 20%;
  width: 50px; height: 50px;
  background: radial-gradient(circle, #ffd700 0%, #ff8c00 50%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 30px 15px rgba(255,215,0,0.3);
  animation: ftc-sun 6s ease-in-out infinite;
}
.scn-forest-touchstone-corin .trees-mid {
  position: absolute; bottom: 25%; left: 0; right: 0;
  height: 35%;
  background: linear-gradient(90deg, #3cb371 0%, #2e8b57 50%, #228b22 100%);
  border-radius: 30% 40% 0 0;
  filter: blur(3px);
  animation: ftc-trees 18s ease-in-out infinite alternate;
}
.scn-forest-touchstone-corin .figure-touchstone {
  position: absolute; bottom: 20%; left: 30%;
  width: 22px; height: 65px;
  background: linear-gradient(180deg, #8b4513 0%, #5c2e0a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ftc-touchstone 2.5s ease-in-out infinite;
}
.scn-forest-touchstone-corin .figure-corin {
  position: absolute; bottom: 20%; left: 55%;
  width: 26px; height: 55px;
  background: linear-gradient(180deg, #6b8e23 0%, #556b2f 100%);
  border-radius: 50% 50% 40% 40% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: ftc-corin 3s ease-in-out infinite;
}
.scn-forest-touchstone-corin .staff {
  position: absolute; bottom: 20%; left: 60%;
  width: 4px; height: 50px;
  background: linear-gradient(180deg, #8b4513 0%, #a0522d 100%);
  border-radius: 0 0 50% 50%;
  transform: rotate(10deg);
  transform-origin: bottom;
  animation: ftc-staff 2s ease-in-out infinite alternate;
}
.scn-forest-touchstone-corin .ground {
  position: absolute; bottom: 0; left: 0; right: 0;
  height: 25%;
  background: linear-gradient(180deg, #7ccd7c 0%, #3cb371 100%);
  border-radius: 50% 50% 0 0 / 15% 15% 0 0;
  box-shadow: inset 0 8px 12px rgba(0,0,0,0.2);
  animation: ftc-ground 10s ease-in-out infinite alternate;
}
.scn-forest-touchstone-corin .leaf-scatter {
  position: absolute; top: 30%; left: 10%;
  width: 100px; height: 100px;
  background: radial-gradient(circle, #9acd32 0%, transparent 70%);
  filter: blur(8px);
  animation: ftc-leaves 20s linear infinite;
}
@keyframes ftc-sky { 0% { opacity: 0.7 } 50% { opacity: 1 } 100% { opacity: 0.8 } }
@keyframes ftc-sun { 0%,100% { transform: scale(0.9) translateY(0) } 50% { transform: scale(1.1) translateY(-5px) } }
@keyframes ftc-trees { 0% { transform: translateY(0) scale(1) } 50% { transform: translateY(-4px) scale(1.01) } 100% { transform: translateY(2px) scale(0.98) } }
@keyframes ftc-touchstone { 0%,100% { transform: translateY(0) rotate(0deg) } 25% { transform: translateY(-3px) rotate(-3deg) } 50% { transform: translateY(0) rotate(1deg) } 75% { transform: translateY(-2px) rotate(-1deg) } }
@keyframes ftc-corin { 0%,100% { transform: translateY(0) rotate(0deg) } 30% { transform: translateY(-2px) rotate(2deg) } 60% { transform: translateY(-5px) rotate(-2deg) } }
@keyframes ftc-staff { 0% { transform: rotate(5deg) } 100% { transform: rotate(15deg) } }
@keyframes ftc-ground { 0% { transform: translateY(0) } 50% { transform: translateY(-3px) } 100% { transform: translateY(0) } }
@keyframes ftc-leaves { 0% { transform: translateX(0) translateY(0) } 50% { transform: translateX(30px) translateY(-20px) } 100% { transform: translateX(60px) translateY(0) } }

/* scene 3: forest-corin-philosophy – calm sunlit, solitary figure under tree */
.scn-forest-corin-philosophy {
  background:
    linear-gradient(180deg, #b0e0e6 0%, #f5f5dc 50%, #f5deb3 100%),
    radial-gradient(ellipse at 50% 0%, #fff8dc 0%, transparent 70%);
  background-blend-mode: overlay;
}
.scn-forest-corin-philosophy .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, rgba(176,224,230,0.4) 0%, transparent 100%);
  animation: fcp-sky 14s ease-in-out infinite alternate;
}
.scn-forest-corin-philosophy .sun {
  position: absolute; top: 12%; left: 50%;
  width: 55px; height: 55px;
  background: radial-gradient(circle, #fff5ee 0%, #ffdab9 50%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 50px 30px rgba(255,218,185,0.3);
  animation: fcp-sun 10s ease-in-out infinite;
}
.scn-forest-corin-philosophy .trees-mid {
  position: absolute; bottom: 25%; left: 0; right: 0;
  height: 40%;
  background: linear-gradient(90deg, #8fbc8f 0%, #6b8e23 50%, #8fbc8f 100%);
  border-radius: 30% 50% 0 0;
  filter: blur(3px);
  animation: fcp-trees 20s ease-in-out infinite alternate;
}
.scn-forest-corin-philosophy .tree-trunk {
  position: absolute; bottom: 20%; left: 45%;
  width: 40px; height: 60%;
  background: linear-gradient(90deg, #8b5a2b 0%, #a0522d 50%, #8b5a2b 100%);
  border-radius: 20% 20% 5% 5%;
  transform-origin: bottom center;
  animation: fcp-trunk 8s ease-in-out infinite;
}
.scn-forest-corin-philosophy .figure-corin {
  position: absolute; bottom: 20%; left: 48%;
  width: 28px; height: 50px;
  background: linear-gradient(180deg, #6b8e23 0%, #3b5323 100%);
  border-radius: 50% 50% 40% 40% / 40% 40% 50% 50%;
  transform-origin: bottom center;
  animation: fcp-corin 5s ease-in-out infinite;
}
.scn-forest-corin-philosophy .ground {
  position: absolute; bottom: 0; left: 0; right: 0;
  height: 25%;
  background: linear-gradient(180deg, #8fbc8f 0%, #6b8e23 100%);
  border-radius: 40% 60% 0 0 / 20% 10% 0 0;
  box-shadow: inset 0 6px 12px rgba(0,0,0,0.1);
  animation: fcp-ground 12s ease-in-out infinite alternate;
}
.scn-forest-corin-philosophy .shadow-pool {
  position: absolute; bottom: 18%; left: 35%;
  width: 100px; height: 30px;
  background: radial-gradient(ellipse, rgba(0,0,0,0.2) 0%, transparent 100%);
  filter: blur(6px);
  animation: fcp-shadow 8s ease-in-out infinite alternate;
}
@keyframes fcp-sky { 0% { opacity: 0.9 } 50% { opacity: 1 } 100% { opacity: 0.8 } }
@keyframes fcp-sun { 0%,100% { transform: scale(1); opacity: 0.8 } 50% { transform: scale(1.05); opacity: 1 } }
@keyframes fcp-trees { 0% { transform: translateY(0) scale(1) } 50% { transform: translateY(-2px) scale(1.01) } 100% { transform: translateY(1px) scale(0.99) } }
@keyframes fcp-trunk { 0%,100% { transform: rotate(0deg) } 50% { transform: rotate(1deg) } }
@keyframes fcp-corin { 0%,100% { transform: translateY(0) rotate(0deg) } 30% { transform: translateY(-2px) rotate(-1deg) } 60% { transform: translateY(-1px) rotate(1deg) } }
@keyframes fcp-ground { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes fcp-shadow { 0% { transform: scaleX(1) } 50% { transform: scaleX(0.9) } 100% { transform: scaleX(1.05) } }

/* scene 4: forest-touchstone-manners – funny sunlit, hand gesture and bow */
.scn-forest-touchstone-manners {
  background:
    linear-gradient(180deg, #87ceeb 0%, #ffe4b5 50%, #f4a460 100%),
    radial-gradient(ellipse at 70% 0%, #fff0f5 0%, transparent 70%);
  background-blend-mode: overlay;
}
.scn-forest-touchstone-manners .sky {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(180deg, rgba(135,206,235,0.5) 0%, transparent 100%);
  animation: ftm-sky 10s ease-in-out infinite alternate;
}
.scn-forest-touchstone-manners .sun {
  position: absolute; top: 8%; left: 20%;
  width: 65px; height: 65px;
  background: radial-gradient(circle, #ffd700 0%, #ffa500 50%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 60px 30px rgba(255,165,0,0.3);
  animation: ftm-sun 7s ease-in-out infinite;
}
.scn-forest-touchstone-manners .trees-mid {
  position: absolute; bottom: 25%; left: 0; right: 0;
  height: 35%;
  background: linear-gradient(90deg, #3cb371 0%, #2e8b57 40%, #228b22 70%, #3cb371 100%);
  border-radius: 40% 30% 0 0;
  filter: blur(4px);
  animation: ftm-trees 22s ease-in-out infinite alternate;
}
.scn-forest-touchstone-manners .figure-touchstone {
  position: absolute; bottom: 20%; left: 30%;
  width: 22px; height: 70px;
  background: linear-gradient(180deg, #8b4513 0%, #5c2e0a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ftm-touchstone 3s ease-in-out infinite;
}
.scn-forest-touchstone-manners .figure-corin {
  position: absolute; bottom: 20%; left: 55%;
  width: 26px; height: 55px;
  background: linear-gradient(180deg, #6b8e23 0%, #556b2f 100%);
  border-radius: 50% 50% 40% 40% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: ftm-corin 2.8s ease-in-out infinite;
}
.scn-forest-touchstone-manners .hand-gesture {
  position: absolute; bottom: 35%; left: 38%;
  width: 20px; height: 26px;
  background: linear-gradient(180deg, #8b4513 0%, #a0522d 100%);
  border-radius: 50% 50% 20% 20% / 40% 40% 30% 30%;
  transform-origin: bottom left;
  animation: ftm-hand 1.5s ease-in-out infinite alternate;
}
.scn-forest-touchstone-manners .ground {
  position: absolute; bottom: 0; left: 0; right: 0;
  height: 25%;
  background: linear-gradient(180deg, #7ccd7c 0%, #3cb371 100%);
  border-radius: 50% 50% 0 0 / 15% 15% 0 0;
  box-shadow: inset 0 8px 12px rgba(0,0,0,0.2);
  animation: ftm-ground 14s ease-in-out infinite alternate;
}
.scn-forest-touchstone-manners .glint {
  position: absolute; top: 15%; left: 70%;
  width: 20px; height: 20px;
  background: radial-gradient(circle, #fffacd 0%, transparent 100%);
  filter: blur(3px);
  animation: ftm-glint 2s ease-in-out infinite alternate;
}
@keyframes ftm-sky { 0% { opacity: 0.8 } 50% { opacity: 1 } 100% { opacity: 0.7 } }
@keyframes ftm-sun { 0%,100% { transform: scale(0.95) translateY(0) } 50% { transform: scale(1.08) translateY(-4px) } }
@keyframes ftm-trees { 0% { transform: translateY(0) scale(1) } 50% { transform: translateY(-3px) scale(1.02) } 100% { transform: translateY(2px) scale(0.97) } }
@keyframes ftm-touchstone { 0%,100% { transform: translateY(0) rotate(0deg) } 20% { transform: translateY(-4px) rotate(-4deg) } 50% { transform: translateY(0) rotate(2deg) } 80% { transform: translateY(-2px) rotate(-1deg) } }
@keyframes ftm-corin { 0%,100% { transform: translateY(0) rotate(0deg) } 30% { transform: translateY(-2px) rotate(3deg) } 60% { transform: translateY(-4px) rotate(-2deg) } }
@keyframes ftm-hand { 0% { transform: rotate(0deg) scale(1) } 100% { transform: rotate(30deg) scale(1.1) } }
@keyframes ftm-ground { 0% { transform: translateY(0) } 50% { transform: translateY(-3px) } 100% { transform: translateY(0) } }
@keyframes ftm-glint { 0% { opacity: 0.3; transform: scale(0.8) } 100% { opacity: 1; transform: scale(1.5) } }

.scn-oliver-soliloquy-plot {
  background:
    linear-gradient(180deg, #4a6b8f 0%, #6f8fa3 30%, #b3c9d6 60%, #e0e8ed 100%),
    radial-gradient(ellipse at 70% 20%, rgba(255,240,200,0.6) 0%, transparent 60%);
}
.scn-oliver-soliloquy-plot .sky {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(180deg, #6a8fa8 0%, #b0c9d6 60%, transparent 100%);
  animation: olv-sky 12s ease-in-out infinite alternate;
}
.scn-oliver-soliloquy-plot .sun {
  position: absolute; top: 8%; right: 12%;
  width: 60px; height: 60px;
  background: radial-gradient(circle, #fff5d0 0%, #f0d080 40%, rgba(240,208,128,0) 70%);
  border-radius: 50%;
  box-shadow: 0 0 40px 20px rgba(240,208,128,0.5);
  animation: olv-sun 8s ease-in-out infinite;
}
.scn-oliver-soliloquy-plot .tree-bg {
  position: absolute; bottom: 35%; left: 10%;
  width: 140px; height: 200px;
  background: radial-gradient(ellipse at 50% 100%, #3a5a3a 0%, #2a4a2a 60%, transparent 80%);
  border-radius: 50% 50% 30% 30%;
  animation: olv-tree 20s ease-in-out infinite alternate;
}
.scn-oliver-soliloquy-plot .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #5a7a5a 0%, #4a6a4a 30%, #3a5a3a 100%);
  border-radius: 40% 30% 0 0 / 30% 20% 0 0;
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.3);
}
.scn-oliver-soliloquy-plot .figure-olv {
  position: absolute; bottom: 30%; left: 45%;
  width: 22px; height: 50px;
  background: linear-gradient(180deg, #2a3a4a 0%, #1a2a3a 70%, #0a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: olv-figure 4s ease-in-out infinite;
}
.scn-oliver-soliloquy-plot .shadow-olv {
  position: absolute; bottom: 28%; left: 43%; width: 30px; height: 8px;
  background: radial-gradient(ellipse, rgba(0,0,0,0.4) 0%, transparent 70%);
  border-radius: 50%;
  animation: olv-shadow 4s ease-in-out infinite;
}
.scn-oliver-soliloquy-plot .leaf-fall {
  position: absolute; top: 20%; left: 20%;
  width: 8px; height: 12px;
  background: #8a6a3a;
  border-radius: 0 50% 50% 0;
  filter: blur(1px);
  animation: olv-leaf 10s linear infinite;
}
@keyframes olv-sky { 0% { opacity: 0.7 } 50% { opacity: 1 } 100% { opacity: 0.8 } }
@keyframes olv-sun { 0% { transform: scale(1) rotate(0deg); box-shadow: 0 0 30px 15px rgba(240,208,128,0.4); } 50% { transform: scale(1.05) rotate(5deg); box-shadow: 0 0 50px 25px rgba(240,208,128,0.6); } 100% { transform: scale(0.95) rotate(-3deg); box-shadow: 0 0 35px 18px rgba(240,208,128,0.5); } }
@keyframes olv-tree { 0% { transform: scaleX(1) scaleY(1); } 50% { transform: scaleX(0.97) scaleY(1.03); } 100% { transform: scaleX(1.02) scaleY(0.98); } }
@keyframes olv-figure { 0% { transform: translateX(0) rotate(-2deg); } 25% { transform: translateX(4px) rotate(0deg); } 50% { transform: translateX(8px) rotate(2deg); } 75% { transform: translateX(12px) rotate(0deg); } 100% { transform: translateX(16px) rotate(-1deg); } }
@keyframes olv-shadow { 0% { transform: translateX(0) scaleX(1); opacity: 0.6; } 25% { transform: translateX(4px) scaleX(1.1); opacity: 0.5; } 50% { transform: translateX(8px) scaleX(0.9); opacity: 0.7; } 75% { transform: translateX(12px) scaleX(1.05); opacity: 0.5; } 100% { transform: translateX(16px) scaleX(1); opacity: 0.6; } }
@keyframes olv-leaf { 0% { transform: translate(0,0) rotate(0deg); } 25% { transform: translate(20px,40px) rotate(90deg); } 50% { transform: translate(40px,80px) rotate(180deg); } 75% { transform: translate(60px,120px) rotate(270deg); } 100% { transform: translate(80px,160px) rotate(360deg); opacity: 0; } }

.scn-palace-lawn-chitchat {
  background:
    linear-gradient(180deg, #7bb5d6 0%, #a8d4e8 30%, #d6f0f5 60%, #f0f8fa 100%),
    radial-gradient(ellipse at 50% 100%, #b8e0c0 0%, transparent 70%);
}
.scn-palace-lawn-chitchat .sky-pal {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #8cc4e0 0%, #c0e4f0 50%, transparent 100%);
  animation: pal-sky 15s ease-in-out infinite alternate;
}
.scn-palace-lawn-chitchat .lawn {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #7ba875 0%, #5a8e5a 40%, #3d6f3d 100%);
  border-radius: 30% 70% 0 0 / 40% 60% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.1);
}
.scn-palace-lawn-chitchat .path {
  position: absolute; bottom: 20%; left: 20%; right: 20%; height: 8%;
  background: linear-gradient(180deg, #c8b89a 0%, #b0a080 100%);
  border-radius: 20% 20% 40% 40%;
  box-shadow: 0 4px 10px rgba(0,0,0,0.2);
}
.scn-palace-lawn-chitchat .figure1 {
  position: absolute; bottom: 25%; left: 30%;
  width: 20px; height: 44px;
  background: linear-gradient(180deg, #e8c8a0 0%, #c8a080 50%, #a08060 100%);
  border-radius: 50% 50% 40% 40% / 65% 65% 35% 35%;
  transform-origin: bottom center;
  animation: pal-fig1 5s ease-in-out infinite;
}
.scn-palace-lawn-chitchat .figure2 {
  position: absolute; bottom: 25%; left: 55%;
  width: 20px; height: 44px;
  background: linear-gradient(180deg, #d0b8a8 0%, #b09888 50%, #907868 100%);
  border-radius: 50% 50% 40% 40% / 65% 65% 35% 35%;
  transform-origin: bottom center;
  animation: pal-fig2 5s ease-in-out infinite alternate;
}
.scn-palace-lawn-chitchat .flowers {
  position: absolute; bottom: 32%; left: 12%; right: 12%;
  height: 10%;
  background:
    radial-gradient(circle at 20% 50%, #f0b0c0 0%, transparent 50%),
    radial-gradient(circle at 50% 30%, #f0d0a0 0%, transparent 50%),
    radial-gradient(circle at 80% 60%, #d0b0f0 0%, transparent 50%);
  filter: blur(2px);
  animation: pal-flowers 8s ease-in-out infinite;
}
.scn-palace-lawn-chitchat .butterfly {
  position: absolute; top: 25%; left: 20%;
  width: 12px; height: 10px;
  background: radial-gradient(ellipse at 30% 50%, #f0a080 0%, #c08060 40%, transparent 60%);
  border-radius: 50%;
  transform-origin: 50% 50%;
  animation: pal-butterfly 12s linear infinite;
}
@keyframes pal-sky { 0% { opacity: 0.8 } 50% { opacity: 1 } 100% { opacity: 0.9 } }
@keyframes pal-fig1 { 0% { transform: translateX(0) rotate(-2deg); } 25% { transform: translateX(3px) rotate(0deg); } 50% { transform: translateX(6px) rotate(2deg); } 75% { transform: translateX(9px) rotate(0deg); } 100% { transform: translateX(12px) rotate(-1deg); } }
@keyframes pal-fig2 { 0% { transform: translateX(0) rotate(2deg); } 25% { transform: translateX(-2px) rotate(0deg); } 50% { transform: translateX(-4px) rotate(-2deg); } 75% { transform: translateX(-6px) rotate(0deg); } 100% { transform: translateX(-8px) rotate(1deg); } }
@keyframes pal-flowers { 0% { opacity: 0.6; transform: scaleY(1); } 50% { opacity: 1; transform: scaleY(1.05); } 100% { opacity: 0.7; transform: scaleY(0.95); } }
@keyframes pal-butterfly { 0% { transform: translateX(0) translateY(0) rotate(0deg); } 25% { transform: translateX(40px) translateY(-10px) rotate(15deg); } 50% { transform: translateX(80px) translateY(0px) rotate(0deg); } 75% { transform: translateX(120px) translateY(10px) rotate(-15deg); } 100% { transform: translateX(160px) translateY(0) rotate(0deg); } }

.scn-touchstone-enters {
  background:
    linear-gradient(180deg, #7bb5d6 0%, #a8d4e8 30%, #d6f0f5 60%, #f0f8fa 100%),
    radial-gradient(ellipse at 50% 100%, #c0e0c0 0%, transparent 60%);
}
.scn-touchstone-enters .sky-tch {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(180deg, #8cc4e0 0%, #c0e4f0 50%, transparent 100%);
  animation: tch-sky 12s ease-in-out infinite alternate;
}
.scn-touchstone-enters .ground-tch {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #7ba875 0%, #5a8e5a 40%, #3d6f3d 100%);
  border-radius: 30% 70% 0 0 / 40% 60% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.1);
}
.scn-touchstone-enters .figure-tch {
  position: absolute; bottom: 30%; left: 40%;
  width: 24px; height: 50px;
  background: linear-gradient(180deg, #f0d0a0 0%, #d0b080 30%, #b09060 70%, #907050 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: tch-figure 3s ease-in-out infinite;
}
.scn-touchstone-enters .stick-tch {
  position: absolute; bottom: 32%; left: 55%;
  width: 4px; height: 30px;
  background: linear-gradient(180deg, #8a7a5a 0%, #6a5a3a 100%);
  border-radius: 20%;
  transform-origin: bottom center;
  animation: tch-stick 3s ease-in-out infinite alternate;
}
.scn-touchstone-enters .hat-tch {
  position: absolute; bottom: 68%; left: 37%;
  width: 30px; height: 18px;
  background: radial-gradient(ellipse at 50% 50%, #d0a060 0%, #b08040 60%, #906030 100%);
  border-radius: 50% 50% 0 0;
  border-bottom: 3px solid #604020;
  animation: tch-hat 4s ease-in-out infinite;
}
.scn-touchstone-enters .shadow-tch {
  position: absolute; bottom: 28%; left: 38%; width: 30px; height: 6px;
  background: radial-gradient(ellipse, rgba(0,0,0,0.3) 0%, transparent 70%);
  border-radius: 50%;
  animation: tch-shadow 3s ease-in-out infinite;
}
.scn-touchstone-enters .sparkle {
  position: absolute; top: 20%; left: 30%;
  width: 6px; height: 6px;
  background: #ffd080;
  border-radius: 50%;
  box-shadow: 0 0 12px 4px rgba(255,208,128,0.6);
  animation: tch-sparkle 2s ease-in-out infinite;
}
@keyframes tch-sky { 0% { opacity: 0.7 } 50% { opacity: 1 } 100% { opacity: 0.8 } }
@keyframes tch-figure { 0% { transform: translateX(0) rotate(-5deg) scaleY(1); } 25% { transform: translateX(8px) rotate(3deg) scaleY(1.02); } 50% { transform: translateX(16px) rotate(-2deg) scaleY(0.98); } 75% { transform: translateX(24px) rotate(4deg) scaleY(1.01); } 100% { transform: translateX(32px) rotate(-3deg) scaleY(1); } }
@keyframes tch-stick { 0% { transform: rotate(-10deg); } 50% { transform: rotate(15deg); } 100% { transform: rotate(-5deg); } }
@keyframes tch-hat { 0% { transform: translateY(0) rotate(-3deg); } 25% { transform: translateY(-2px) rotate(0deg); } 50% { transform: translateY(0) rotate(5deg); } 75% { transform: translateY(-3px) rotate(-2deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes tch-shadow { 0% { transform: translateX(0) scaleX(1); opacity: 0.5; } 25% { transform: translateX(8px) scaleX(1.2); opacity: 0.4; } 50% { transform: translateX(16px) scaleX(0.8); opacity: 0.6; } 75% { transform: translateX(24px) scaleX(1.1); opacity: 0.4; } 100% { transform: translateX(32px) scaleX(1); opacity: 0.5; } }
@keyframes tch-sparkle { 0% { transform: scale(0); opacity: 0; } 50% { transform: scale(1.5); opacity: 1; } 100% { transform: scale(0); opacity: 0; } }

.scn-le-beau-arrives {
  background:
    linear-gradient(180deg, #7bb5d6 0%, #a8d4e8 30%, #d6f0f5 60%, #f0f8fa 100%),
    radial-gradient(ellipse at 70% 30%, rgba(255,240,200,0.5) 0%, transparent 60%);
}
.scn-le-beau-arrives .sky-lbe {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #8cc4e0 0%, #c0e4f0 50%, transparent 100%);
  animation: lbe-sky 14s ease-in-out infinite alternate;
}
.scn-le-beau-arrives .ground-lbe {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #7ba875 0%, #5a8e5a 40%, #3d6f3d 100%);
  border-radius: 40% 60% 0 0 / 50% 50% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.1);
}
.scn-le-beau-arrives .figure-lbe {
  position: absolute; bottom: 25%; left: 50%;
  width: 22px; height: 48px;
  background: linear-gradient(180deg, #d0b8a8 0%, #b09888 40%, #907868 70%, #706050 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: lbe-figure 4s ease-in-out infinite;
}
.scn-le-beau-arrives .scroll-lbe {
  position: absolute; bottom: 32%; left: 58%;
  width: 6px; height: 14px;
  background: linear-gradient(180deg, #d0c0a0 0%, #b0a080 100%);
  border-radius: 20%;
  transform-origin: bottom left;
  animation: lbe-scroll 4s ease-in-out infinite alternate;
}
.scn-le-beau-arrives .cape-lbe {
  position: absolute; bottom: 30%; left: 45%;
  width: 16px; height: 20px;
  background: linear-gradient(180deg, #a08060 0%, #806040 100%);
  border-radius: 0 50% 50% 0 / 0 60% 40% 0;
  transform-origin: top left;
  animation: lbe-cape 5s ease-in-out infinite;
}
.scn-le-beau-arrives .shadow-lbe {
  position: absolute; bottom: 23%; left: 48%; width: 28px; height: 6px;
  background: radial-gradient(ellipse, rgba(0,0,0,0.35) 0%, transparent 70%);
  border-radius: 50%;
  animation: lbe-shadow 4s ease-in-out infinite;
}
.scn-le-beau-arrives .dust-lbe {
  position: absolute; bottom: 22%; left: 45%;
  width: 20px; height: 8px;
  background: radial-gradient(ellipse, rgba(200,180,160,0.5) 0%, transparent 70%);
  filter: blur(2px);
  animation: lbe-dust 6s ease-in-out infinite;
}
@keyframes lbe-sky { 0% { opacity: 0.7 } 50% { opacity: 1 } 100% { opacity: 0.8 } }
@keyframes lbe-figure { 0% { transform: translateX(0) rotate(-1deg); } 25% { transform: translateX(5px) rotate(0deg); } 50% { transform: translateX(10px) rotate(1deg); } 75% { transform: translateX(15px) rotate(0deg); } 100% { transform: translateX(20px) rotate(-1deg); } }
@keyframes lbe-scroll { 0% { transform: rotate(0deg) scaleY(1); } 50% { transform: rotate(15deg) scaleY(1.1); } 100% { transform: rotate(-5deg) scaleY(0.95); } }
@keyframes lbe-cape { 0% { transform: scaleX(1) rotate(0deg); } 25% { transform: scaleX(1.1) rotate(5deg); } 50% { transform: scaleX(0.95) rotate(-3deg); } 75% { transform: scaleX(1.05) rotate(2deg); } 100% { transform: scaleX(1) rotate(0deg); } }
@keyframes lbe-shadow { 0% { transform: translateX(0) scaleX(1); opacity: 0.5; } 25% { transform: translateX(5px) scaleX(1.1); opacity: 0.4; } 50% { transform: translateX(10px) scaleX(0.9); opacity: 0.6; } 75% { transform: translateX(15px) scaleX(1.05); opacity: 0.4; } 100% { transform: translateX(20px) scaleX(1); opacity: 0.5; } }
@keyframes lbe-dust { 0% { transform: translateX(0) translateY(0) scale(1); opacity: 0.3; } 50% { transform: translateX(10px) translateY(-5px) scale(1.5); opacity: 0.6; } 100% { transform: translateX(20px) translateY(0) scale(0.8); opacity: 0; } }

/* forest-song-blow-wind */
.scn-forest-song-blow-wind {
  background: 
    linear-gradient(180deg, #2a3a5a 0%, #4a5a6a 40%, #6a7a8a 100%),
    radial-gradient(ellipse at 70% 30%, #8a9aaa 0%, transparent 60%);
}
.scn-forest-song-blow-wind .fw-sky {
  position: absolute; inset: 0 0 60% 0;
  background: linear-gradient(180deg, #1a2a4a 0%, transparent 100%);
  animation: fw-sky 12s ease-in-out infinite alternate;
}
.scn-forest-song-blow-wind .fw-ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #2a3a2a 0%, #1a2a1a 100%);
  border-radius: 30% 70% 0 0 / 50% 40% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.5);
  animation: fw-ground 18s ease-in-out infinite alternate;
}
.scn-forest-song-blow-wind .fw-tree-left {
  position: absolute; bottom: 30%; left: 15%; width: 30px; height: 80px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1210 100%);
  border-radius: 20% 20% 10% 10% / 40% 40% 10% 10%;
  transform-origin: bottom center;
  animation: fw-tree 8s ease-in-out infinite;
}
.scn-forest-song-blow-wind .fw-tree-right {
  position: absolute; bottom: 32%; left: 60%; width: 24px; height: 70px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1210 100%);
  border-radius: 20% 20% 10% 10% / 40% 40% 10% 10%;
  transform-origin: bottom center;
  animation: fw-tree-r 9s ease-in-out infinite;
}
.scn-forest-song-blow-wind .fw-wind {
  position: absolute; top: 25%; left: -10%; width: 120%; height: 4px;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2) 30%, transparent 70%);
  filter: blur(2px);
  animation: fw-wind 20s linear infinite;
}
.scn-forest-song-blow-wind .fw-figure {
  position: absolute; bottom: 28%; left: 40%; width: 16px; height: 36px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: fw-figure 6s ease-in-out infinite;
}
@keyframes fw-sky { 0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.7; } }
@keyframes fw-ground { 0% { transform: translateY(0); } 50% { transform: translateY(-3px); } 100% { transform: translateY(0); } }
@keyframes fw-tree { 0% { transform: rotate(0deg); } 25% { transform: rotate(3deg); } 50% { transform: rotate(0deg); } 75% { transform: rotate(-2deg); } 100% { transform: rotate(0deg); } }
@keyframes fw-tree-r { 0% { transform: rotate(0deg); } 33% { transform: rotate(-4deg); } 66% { transform: rotate(2deg); } 100% { transform: rotate(0deg); } }
@keyframes fw-wind { 0% { transform: translateX(0); } 100% { transform: translateX(100vw); } }
@keyframes fw-figure { 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(0deg); } }

/* forest-duke-identity */
.scn-forest-duke-identity {
  background:
    linear-gradient(180deg, #ffcc80 0%, #e6a050 40%, #c08030 100%),
    radial-gradient(ellipse at 30% 20%, #ffe0b0 0%, transparent 70%);
}
.scn-forest-duke-identity .fd-sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #f0d090 0%, transparent 100%);
  animation: fd-sky 15s ease-in-out infinite alternate;
}
.scn-forest-duke-identity .fd-sun {
  position: absolute; top: 10%; left: 30%; width: 40px; height: 40px;
  background: radial-gradient(circle, #ffdd99 0%, #ffcc66 40%, transparent 70%);
  border-radius: 50%;
  animation: fd-sun 8s ease-in-out infinite;
}
.scn-forest-duke-identity .fd-ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #5a7a3a 0%, #3a5a2a 100%);
  border-radius: 20% 80% 0 0 / 30% 40% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.3);
  animation: fd-ground 20s ease-in-out infinite alternate;
}
.scn-forest-duke-identity .fd-tree-arch {
  position: absolute; bottom: 30%; left: 20%; width: 60px; height: 100px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a10 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 20% 20%;
  transform-origin: bottom center;
  animation: fd-tree 12s ease-in-out infinite;
}
.scn-forest-duke-identity .fd-figure-left {
  position: absolute; bottom: 22%; left: 35%; width: 18px; height: 40px;
  background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: fd-figure-l 8s ease-in-out infinite;
}
.scn-forest-duke-identity .fd-figure-right {
  position: absolute; bottom: 22%; left: 48%; width: 20px; height: 42px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a120a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: fd-figure-r 8s ease-in-out infinite alternate;
}
@keyframes fd-sky { 0% { opacity:0.9; } 50% { opacity:1; } 100% { opacity:0.85; } }
@keyframes fd-sun { 0% { transform: scale(1); } 50% { transform: scale(1.1); box-shadow: 0 0 30px 10px rgba(255,204,102,0.5); } 100% { transform: scale(1); } }
@keyframes fd-ground { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes fd-tree { 0% { transform: rotate(0deg); } 33% { transform: rotate(2deg); } 66% { transform: rotate(-1deg); } 100% { transform: rotate(0deg); } }
@keyframes fd-figure-l { 0% { transform: translateX(0) translateY(0) rotate(-2deg); } 25% { transform: translateX(5px) translateY(-1px) rotate(1deg); } 50% { transform: translateX(10px) translateY(0) rotate(-2deg); } 75% { transform: translateX(5px) translateY(-1px) rotate(1deg); } 100% { transform: translateX(0) translateY(0) rotate(-2deg); } }
@keyframes fd-figure-r { 0% { transform: translateX(0) translateY(0) rotate(2deg); } 25% { transform: translateX(-4px) translateY(-1px) rotate(-1deg); } 50% { transform: translateX(-8px) translateY(0) rotate(2deg); } 75% { transform: translateX(-4px) translateY(-1px) rotate(-1deg); } 100% { transform: translateX(0) translateY(0) rotate(2deg); } }

/* palace-duke-frederick */
.scn-palace-duke-frederick {
  background:
    linear-gradient(180deg, #f0e0c0 0%, #d0b090 40%, #a08060 100%),
    radial-gradient(ellipse at 50% 20%, #ffe8c8 0%, transparent 70%);
}
.scn-palace-duke-frederick .pdf-wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #d8c8a8 0%, #b8a080 100%);
  box-shadow: inset 0 20px 30px rgba(0,0,0,0.2);
  animation: pdf-wall 10s ease-in-out infinite alternate;
}
.scn-palace-duke-frederick .pdf-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #8a7050 0%, #5a4030 100%);
  border-radius: 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.4);
  animation: pdf-floor 14s ease-in-out infinite alternate;
}
.scn-palace-duke-frederick .pdf-window {
  position: absolute; top: 10%; right: 15%; width: 80px; height: 120px;
  background: linear-gradient(180deg, #ffe0b0 0%, #c8a070 100%);
  border-radius: 5%;
  box-shadow: 0 0 40px 15px rgba(255,224,176,0.4);
  animation: pdf-window 8s ease-in-out infinite;
}
.scn-palace-duke-frederick .pdf-throne {
  position: absolute; bottom: 20%; left: 25%; width: 60px; height: 100px;
  background: linear-gradient(180deg, #6a4a3a 0%, #3a2a1a 100%);
  border-radius: 10% 10% 5% 5% / 20% 20% 5% 5%;
  box-shadow: 0 8px 15px rgba(0,0,0,0.5);
  animation: pdf-throne 12s ease-in-out infinite;
}
.scn-palace-duke-frederick .pdf-figure {
  position: absolute; bottom: 25%; left: 50%; width: 22px; height: 50px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pdf-figure 6s ease-in-out infinite;
}
.scn-palace-duke-frederick .pdf-shadow {
  position: absolute; bottom: 25%; left: 48%; width: 40px; height: 15px;
  background: rgba(0,0,0,0.3);
  border-radius: 50%;
  filter: blur(6px);
  animation: pdf-shadow 6s ease-in-out infinite;
}
@keyframes pdf-wall { 0% { opacity:0.95; } 50% { opacity:1; } 100% { opacity:0.9; } }
@keyframes pdf-floor { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes pdf-window { 0% { box-shadow: 0 0 30px 10px rgba(255,224,176,0.3); opacity:0.85; } 50% { box-shadow: 0 0 60px 20px rgba(255,224,176,0.6); opacity:1; } 100% { box-shadow: 0 0 30px 10px rgba(255,224,176,0.3); opacity:0.85; } }
@keyframes pdf-throne { 0% { transform: translateX(0); } 50% { transform: translateX(-1px); } 100% { transform: translateX(0); } }
@keyframes pdf-figure { 0% { transform: translateX(0) rotate(0deg); } 33% { transform: translateX(5px) rotate(-3deg); } 66% { transform: translateX(-2px) rotate(2deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes pdf-shadow { 0% { transform: scaleX(1); opacity:0.5; } 50% { transform: scaleX(1.2); opacity:0.7; } 100% { transform: scaleX(1); opacity:0.5; } }

/* palace-oliver-confession */
.scn-palace-oliver-confession {
  background:
    linear-gradient(180deg, #2a1a0a 0%, #1a0a00 40%, #0a0500 100%),
    radial-gradient(ellipse at 40% 10%, #5a3a1a 0%, transparent 70%);
}
.scn-palace-oliver-confession .poc-wall {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%);
  box-shadow: inset 0 20px 40px rgba(0,0,0,0.6);
  animation: poc-wall 20s ease-in-out infinite alternate;
}
.scn-palace-oliver-confession .poc-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(180deg, #1a120a 0%, #0a0500 100%);
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.7);
  animation: poc-floor 18s ease-in-out infinite alternate;
}
.scn-palace-oliver-confession .poc-window {
  position: absolute; top: 5%; right: 20%; width: 60px; height: 100px;
  background: linear-gradient(180deg, #d0b080 0%, #a08050 100%);
  border-radius: 5%;
  box-shadow: 0 0 30px 10px rgba(208,176,128,0.3);
  animation: poc-window 10s ease-in-out infinite;
}
.scn-palace-oliver-confession .poc-beam {
  position: absolute; top: 5%; right: 20%; width: 60px; height: 100%;
  background: linear-gradient(180deg, rgba(208,176,128,0.2) 0%, transparent 80%);
  clip-path: polygon(0 0, 100% 0, 80% 100%, 20% 100%);
  animation: poc-beam 12s ease-in-out infinite;
}
.scn-palace-oliver-confession .poc-column {
  position: absolute; bottom: 5%; left: 30%; width: 20px; height: 160px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 5%;
  box-shadow: 0 8px 15px rgba(0,0,0,0.5);
  animation: poc-column 16s ease-in-out infinite;
}
.scn-palace-oliver-confession .poc-figure {
  position: absolute; bottom: 15%; left: 45%; width: 18px; height: 40px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: poc-figure 8s ease-in-out infinite;
}
@keyframes poc-wall { 0% { opacity:0.9; } 50% { opacity:1; } 100% { opacity:0.8; } }
@keyframes poc-floor { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes poc-window { 0% { box-shadow: 0 0 20px 5px rgba(208,176,128,0.2); opacity:0.8; } 50% { box-shadow: 0 0 50px 15px rgba(208,176,128,0.5); opacity:1; } 100% { box-shadow: 0 0 20px 5px rgba(208,176,128,0.2); opacity:0.8; } }
@keyframes poc-beam { 0% { opacity:0.3; transform: translateX(0); } 50% { opacity:0.5; transform: translateX(3px); } 100% { opacity:0.3; transform: translateX(0); } }
@keyframes poc-column { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes poc-figure { 0% { transform: translateX(0) translateY(0) rotate(0deg); } 25% { transform: translateX(3px) translateY(-2px) rotate(-2deg); } 50% { transform: translateX(6px) translateY(0) rotate(0deg); } 75% { transform: translateX(3px) translateY(-2px) rotate(2deg); } 100% { transform: translateX(0) translateY(0) rotate(0deg); } }

/* Scene 1: forest-orlando-jaques - tense + sunlit */
.scn-forest-orlando-jaques {
  background: 
    linear-gradient(180deg, #87ceeb 0%, #f5deb3 40%, #d2b48c 100%),
    radial-gradient(ellipse at 50% 0%, #ffe4a0 0%, transparent 60%);
}
.scn-forest-orlando-jaques .sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #87ceeb 0%, #b0e0e6 50%, #ffefd5 100%);
  animation: foj-sky 15s ease-in-out infinite alternate;
}
.scn-forest-orlando-jaques .sunbeam {
  position: absolute; top: 5%; left: 30%; width: 12%; height: 60%;
  background: linear-gradient(180deg, rgba(255,215,0,.8) 0%, transparent 100%);
  filter: blur(8px);
  animation: foj-beam 8s ease-in-out infinite;
}
.scn-forest-orlando-jaques .trunk-l {
  position: absolute; bottom: 20%; left: 10%; width: 6%; height: 70%;
  background: linear-gradient(90deg, #5d4037 0%, #8d6e63 30%, #4e342e 100%);
  border-radius: 10% / 4%;
  box-shadow: 8px 0 12px rgba(0,0,0,.3);
  animation: foj-trunk 6s ease-in-out infinite;
}
.scn-forest-orlando-jaques .trunk-r {
  position: absolute; bottom: 30%; right: 15%; width: 5%; height: 60%;
  background: linear-gradient(90deg, #6d4c41 0%, #8d6e63 40%, #3e2723 100%);
  border-radius: 8% / 3%;
  box-shadow: -6px 0 10px rgba(0,0,0,.25);
  animation: foj-trunk 7s ease-in-out infinite reverse;
}
.scn-forest-orlando-jaques .canopy {
  position: absolute; top: 0; left: 0; right: 0; height: 40%;
  background: radial-gradient(ellipse at 30% 30%, #4caf50 0%, #2e7d32 50%, transparent 80%),
              radial-gradient(ellipse at 70% 20%, #388e3c 0%, #1b5e20 60%, transparent 80%);
  background-blend-mode: multiply;
  animation: foj-canopy 12s ease-in-out infinite alternate;
}
.scn-forest-orlando-jaques .figure-orlando {
  position: absolute; bottom: 22%; left: 35%; width: 8%; height: 18%;
  background: linear-gradient(180deg, #4a148c 0%, #6a1b9a 40%, #311b92 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: foj-walk 4s ease-in-out infinite;
  box-shadow: 2px 0 6px rgba(0,0,0,.5);
}
.scn-forest-orlando-jaques .figure-jaques {
  position: absolute; bottom: 20%; left: 55%; width: 8%; height: 20%;
  background: linear-gradient(180deg, #1b5e20 0%, #2e7d32 40%, #003300 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: foj-stand 4s ease-in-out infinite;
  box-shadow: -2px 0 4px rgba(0,0,0,.4);
}
.scn-forest-orlando-jaques .ground-light {
  position: absolute; bottom: 10%; left: 25%; width: 50%; height: 15%;
  background: radial-gradient(ellipse, #ffe082 0%, transparent 70%);
  filter: blur(10px);
  animation: foj-ground 6s ease-in-out infinite alternate;
}
@keyframes foj-sky { 0% { opacity: .8; } 50% { opacity: 1; } 100% { opacity: .6; } }
@keyframes foj-beam { 0% { opacity: .5; transform: scale(.8); } 50% { opacity: 1; transform: scale(1.05); } 100% { opacity: .6; transform: scale(.85); } }
@keyframes foj-trunk { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes foj-canopy { 0% { opacity: .7; transform: scale(1); } 50% { opacity: 1; transform: scale(1.03); } 100% { opacity: .8; transform: scale(.98); } }
@keyframes foj-walk { 0% { transform: translateX(0) rotate(-2deg); } 25% { transform: translateX(2%) rotate(1deg); } 50% { transform: translateX(4%) rotate(-1deg); } 75% { transform: translateX(6%) rotate(2deg); } 100% { transform: translateX(8%) rotate(0deg); } }
@keyframes foj-stand { 0% { transform: translateY(0); } 50% { transform: translateY(-3px); } 100% { transform: translateY(0); } }
@keyframes foj-ground { 0% { opacity: .3; } 50% { opacity: .7; } 100% { opacity: .4; } }

/* Scene 2: forest-jaques-leaves - dark + sunlit */
.scn-forest-jaques-leaves {
  background: 
    linear-gradient(180deg, #1a1a2e 0%, #16213e 30%, #0f3460 70%, #1a1a2e 100%),
    radial-gradient(ellipse at 40% 0%, #f0a500 0%, transparent 60%);
}
.scn-forest-jaques-leaves .deeps {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, #1a1a2e 0%, #16213e 50%, #090a24 100%);
  animation: fjl-deeps 20s ease-in-out infinite alternate;
}
.scn-forest-jaques-leaves .dappled {
  position: absolute; top: 0; left: 0; right: 0; bottom: 40%;
  background: radial-gradient(circle at 30% 20%, rgba(255,160,0,.3) 0%, transparent 50%),
              radial-gradient(circle at 70% 40%, rgba(255,180,0,.2) 0%, transparent 40%);
  filter: blur(12px);
  animation: fjl-dapple 12s ease-in-out infinite alternate;
}
.scn-forest-jaques-leaves .tree-dark {
  position: absolute; bottom: 0; left: 50%; width: 8%; height: 80%;
  background: linear-gradient(90deg, #2c2c2c 0%, #1a1a1a 40%, #0d0d0d 100%);
  border-radius: 4% / 2%;
  transform: translateX(-50%);
  box-shadow: 10px 0 20px rgba(0,0,0,.7);
  animation: fjl-tree 10s ease-in-out infinite;
}
.scn-forest-jaques-leaves .figure-shadow {
  position: absolute; bottom: 25%; left: 40%; width: 6%; height: 16%;
  background: linear-gradient(180deg, #1b1b1b 0%, #0a0a0a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  box-shadow: 0 0 8px rgba(0,0,0,.8);
  animation: fjl-leave 8s ease-in-out infinite;
}
.scn-forest-jaques-leaves .path-glow {
  position: absolute; bottom: 10%; left: 30%; width: 40%; height: 8%;
  background: radial-gradient(ellipse, #b8860b 0%, transparent 70%);
  filter: blur(6px);
  animation: fjl-path 6s ease-in-out infinite alternate;
}
.scn-forest-jaques-leaves .leaf-fall {
  position: absolute; top: 10%; left: 20%; width: 4%; height: 2%;
  background: #8b4513;
  border-radius: 50%;
  filter: blur(2px);
  animation: fjl-leaf 20s linear infinite;
}
.scn-forest-jaques-leaves .leaf-fall-b {
  position: absolute; top: 20%; right: 30%; width: 3%; height: 1.5%;
  background: #a0522d;
  border-radius: 50%;
  filter: blur(2px);
  animation: fjl-leaf 25s linear infinite reverse;
  animation-delay: -8s;
}
@keyframes fjl-deeps { 0% { opacity: 1; } 50% { opacity: .6; } 100% { opacity: .8; } }
@keyframes fjl-dapple { 0% { opacity: .2; transform: scale(.9); } 50% { opacity: .7; transform: scale(1.1); } 100% { opacity: .3; transform: scale(1); } }
@keyframes fjl-tree { 0% { transform: translateX(-50%) scaleY(1); } 50% { transform: translateX(-50%) scaleY(.98); } 100% { transform: translateX(-50%) scaleY(1); } }
@keyframes fjl-leave { 0% { transform: translateX(0) rotate(0deg); } 33% { transform: translateX(3%) rotate(-3deg) scale(.95); } 66% { transform: translateX(6%) rotate(2deg) scale(1); } 100% { transform: translateX(10%) rotate(0deg); } }
@keyframes fjl-path { 0% { opacity: .1; } 50% { opacity: .6; } 100% { opacity: .2; } }
@keyframes fjl-leaf { 0% { transform: translateY(-20px) rotate(0deg); opacity: 1; } 50% { transform: translateY(50vh) rotate(180deg); opacity: .5; } 100% { transform: translateY(100vh) rotate(360deg); opacity: 0; } }

/* Scene 3: forest-rosalind-saucy-lackey - funny + sunlit */
.scn-forest-rosalind-saucy-lackey {
  background: 
    linear-gradient(180deg, #87ceeb 0%, #f0e68c 50%, #ffd700 100%),
    radial-gradient(ellipse at 50% 100%, #ffe4b5 0%, transparent 70%);
}
.scn-forest-rosalind-saucy-lackey .sky-bright {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #87ceeb 0%, #b0e0e6 60%, #ffd700 100%);
  animation: frs-sky 6s ease-in-out infinite alternate;
}
.scn-forest-rosalind-saucy-lackey .sunburst {
  position: absolute; top: 8%; left: 45%; width: 20%; height: 20%;
  background: radial-gradient(circle, #fff59d 0%, #ffd54f 40%, transparent 70%);
  animation: frs-sun 4s ease-in-out infinite;
  filter: blur(4px);
}
.scn-forest-rosalind-saucy-lackey .bush {
  position: absolute; bottom: 20%; left: 10%; width: 30%; height: 25%;
  background: radial-gradient(ellipse at 30% 100%, #66bb6a 0%, #43a047 50%, transparent 80%);
  border-radius: 50% 50% 20% 20% / 80% 80% 20% 20%;
  animation: frs-bush 10s ease-in-out infinite;
}
.scn-forest-rosalind-saucy-lackey .figure-lackey {
  position: absolute; bottom: 25%; left: 40%; width: 10%; height: 22%;
  background: linear-gradient(180deg, #c8553d 0%, #a0461a 40%, #702243 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  box-shadow: 0 0 10px rgba(0,0,0,.3);
  animation: frs-lackey 3s ease-in-out infinite;
}
.scn-forest-rosalind-saucy-lackey .hat {
  position: absolute; bottom: 43%; left: 39%; width: 12%; height: 6%;
  background: linear-gradient(180deg, #8d6e63 0%, #5d4037 100%);
  border-radius: 50% 50% 0 0 / 80% 80% 0 0;
  box-shadow: 0 -4px 8px rgba(0,0,0,.3);
  animation: frs-hat 3s ease-in-out infinite;
  transform-origin: bottom center;
}
.scn-forest-rosalind-saucy-lackey .cape {
  position: absolute; bottom: 18%; left: 35%; width: 16%; height: 12%;
  background: linear-gradient(180deg, #7b1fa2 0%, #4a148c 100%);
  border-radius: 0 50% 50% 0 / 0 80% 80% 0;
  transform-origin: right center;
  animation: frs-cape 4s ease-in-out infinite alternate;
}
.scn-forest-rosalind-saucy-lackey .ground-pat {
  position: absolute; bottom: 10%; left: 20%; width: 60%; height: 10%;
  background: linear-gradient(180deg, #8bc34a 0%, #689f38 100%);
  border-radius: 30% 30% 0 0 / 100% 100% 0 0;
  animation: frs-ground 5s ease-in-out infinite;
}
@keyframes frs-sky { 0% { opacity: .9; } 50% { opacity: 1; } 100% { opacity: .7; } }
@keyframes frs-sun { 0% { transform: scale(.9); opacity: .7; } 50% { transform: scale(1.15); opacity: 1; } 100% { transform: scale(.95); opacity: .8; } }
@keyframes frs-bush { 0% { transform: scale(.95); } 50% { transform: scale(1.05); } 100% { transform: scale(1); } }
@keyframes frs-lackey { 0% { transform: translateY(0) rotate(-2deg); } 25% { transform: translateY(-4px) rotate(3deg); } 50% { transform: translateY(0) rotate(-1deg); } 75% { transform: translateY(-2px) rotate(2deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes frs-hat { 0% { transform: rotate(-5deg); } 50% { transform: rotate(10deg); } 100% { transform: rotate(-5deg); } }
@keyframes frs-cape { 0% { transform: scaleX(1); } 100% { transform: scaleX(1.08); } }
@keyframes frs-ground { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }

/* Scene 4: forest-rosalind-time-paces - calm + sunlit */
.scn-forest-rosalind-time-paces {
  background: 
    linear-gradient(180deg, #e0f7fa 0%, #b2dfdb 40%, #a5d6a7 100%),
    radial-gradient(ellipse at 50% 0%, #fff176 0%, transparent 60%);
}
.scn-forest-rosalind-time-paces .sky-soft {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #e0f7fa 0%, #b2dfdb 60%, #80cbc4 100%);
  animation: frt-sky 20s ease-in-out infinite alternate;
}
.scn-forest-rosalind-time-paces .cloud-calm-a {
  position: absolute; top: 12%; left: 20%; width: 14%; height: 8%;
  background: linear-gradient(180deg, rgba(255,255,255,.8) 0%, rgba(255,255,255,.2) 100%);
  border-radius: 50%;
  filter: blur(6px);
  animation: frt-cloud 50s linear infinite;
}
.scn-forest-rosalind-time-paces .cloud-calm-b {
  position: absolute; top: 20%; right: 15%; width: 10%; height: 6%;
  background: linear-gradient(180deg, rgba(255,255,255,.6) 0%, rgba(255,255,255,.1) 100%);
  border-radius: 50%;
  filter: blur(5px);
  animation: frt-cloud 60s linear infinite reverse;
  animation-delay: -30s;
}
.scn-forest-rosalind-time-paces .tree-sway {
  position: absolute; bottom: 20%; left: 35%; width: 6%; height: 50%;
  background: linear-gradient(90deg, #6d4c41 0%, #8d6e63 40%, #4e342e 100%);
  border-radius: 4% / 2%;
  box-shadow: -4px 0 10px rgba(0,0,0,.2);
  animation: frt-tree 12s ease-in-out infinite;
  transform-origin: bottom center;
}
.scn-forest-rosalind-time-paces .figure-rosalind {
  position: absolute; bottom: 24%; left: 48%; width: 8%; height: 18%;
  background: linear-gradient(180deg, #a1887f 0%, #795548 40%, #4e342e 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  box-shadow: 0 0 6px rgba(0,0,0,.2);
  animation: frt-figure 8s ease-in-out infinite;
}
.scn-forest-rosalind-time-paces .sunbeam-gentle {
  position: absolute; top: 5%; left: 40%; width: 20%; height: 50%;
  background: linear-gradient(180deg, rgba(255,235,59,.4) 0%, transparent 100%);
  filter: blur(10px);
  animation: frt-beam 15s ease-in-out infinite alternate;
}
.scn-forest-rosalind-time-paces .meadow {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(180deg, #81c784 0%, #66bb6a 50%, #43a047 100%);
  border-radius: 40% 40% 0 0 / 60% 60% 0 0;
  animation: frt-meadow 10s ease-in-out infinite alternate;
}
@keyframes frt-sky { 0% { opacity: .9; } 50% { opacity: 1; } 100% { opacity: .8; } }
@keyframes frt-cloud { 0% { transform: translateX(-20px); } 100% { transform: translateX(120vw); } }
@keyframes frt-tree { 0% { transform: rotate(-2deg); } 50% { transform: rotate(2deg); } 100% { transform: rotate(-2deg); } }
@keyframes frt-figure { 0% { transform: translateY(0); } 50% { transform: translateY(-3px); } 100% { transform: translateY(0); } }
@keyframes frt-beam { 0% { opacity: .3; transform: scale(.9); } 50% { opacity: .6; transform: scale(1.1); } 100% { opacity: .4; transform: scale(1); } }
@keyframes frt-meadow { 0% { opacity: .8; transform: scaleY(.98); } 50% { opacity: 1; transform: scaleY(1); } 100% { opacity: .85; transform: scaleY(.99); } }

.scn-if-peacemaker {
  background: linear-gradient(180deg, #fbe9d0 0%, #f7dba0 40%, #cba56a 100%),
              radial-gradient(ellipse at 50% 30%, #fff5e0 0%, transparent 70%);
}
.scn-if-peacemaker .sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #8fc5f0 0%, #b8d8f0 60%, transparent 100%);
  animation: ip-sky 8s ease-in-out infinite alternate;
}
.scn-if-peacemaker .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 55%;
  background: linear-gradient(180deg, #8b6b4a 0%, #5d3f2a 100%);
  border-radius: 30% 70% 0 0 / 50% 100% 0 0;
  box-shadow: inset 0 12px 30px rgba(0,0,0,0.3);
  animation: ip-ground 10s ease-in-out infinite;
}
.scn-if-peacemaker .fig-left {
  position: absolute; bottom: 32%; left: 22%;
  width: 30px; height: 70px;
  background: linear-gradient(180deg, #7a4a2a 0%, #3d2010 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ip-fig1 3s ease-in-out infinite;
}
.scn-if-peacemaker .fig-right {
  position: absolute; bottom: 32%; right: 22%;
  width: 30px; height: 70px;
  background: linear-gradient(180deg, #6a3f1c 0%, #2e1708 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ip-fig2 3s ease-in-out infinite 0.5s;
}
.scn-if-peacemaker .handshake {
  position: absolute; bottom: 42%; left: 50%;
  width: 20px; height: 14px;
  background: #4a2a10;
  border-radius: 40% 40% 20% 20%;
  transform: translateX(-50%);
  box-shadow: 0 4px 6px rgba(0,0,0,0.3);
  animation: ip-handshake 1.5s ease-in-out infinite;
}
.scn-if-peacemaker .bush {
  position: absolute; bottom: 30%; right: 8%;
  width: 60px; height: 40px;
  background: radial-gradient(ellipse at 50% 100%, #5a7a3a 0%, #2a4a1a 70%, transparent 100%);
  border-radius: 50%;
  transform: scale(1.2);
  animation: ip-bush 12s ease-in-out infinite alternate;
}
.scn-if-peacemaker .glow {
  position: absolute; top: 10%; left: 40%;
  width: 80px; height: 80px;
  background: radial-gradient(circle, #ffe680 0%, #ffcc40 30%, transparent 70%);
  border-radius: 50%;
  filter: blur(15px);
  opacity: 0.6;
  animation: ip-glow 6s ease-in-out infinite alternate;
}
@keyframes ip-sky {
  0% { opacity: 0.7; }
  50% { opacity: 1; }
  100% { opacity: 0.8; }
}
@keyframes ip-ground {
  0% { transform: translateY(0); }
  50% { transform: translateY(-3px); }
  100% { transform: translateY(0); }
}
@keyframes ip-fig1 {
  0% { transform: translateX(0) rotate(-2deg); }
  50% { transform: translateX(5px) rotate(2deg); }
  100% { transform: translateX(0) rotate(-2deg); }
}
@keyframes ip-fig2 {
  0% { transform: translateX(0) rotate(2deg); }
  50% { transform: translateX(-5px) rotate(-2deg); }
  100% { transform: translateX(0) rotate(2deg); }
}
@keyframes ip-handshake {
  0% { transform: translateX(-50%) scaleX(1); }
  50% { transform: translateX(-50%) scaleX(1.2) translateY(-2px); }
  100% { transform: translateX(-50%) scaleX(1); }
}
@keyframes ip-bush {
  0% { transform: scaleX(1); }
  50% { transform: scaleX(0.9) translateY(-2px); }
  100% { transform: scaleX(1); }
}
@keyframes ip-glow {
  0% { opacity: 0.4; transform: scale(0.95); }
  50% { opacity: 0.8; transform: scale(1.1); }
  100% { opacity: 0.5; transform: scale(1); }
}

.scn-hymen-brings-rosalind {
  background: linear-gradient(180deg, #fce4c8 0%, #f5c88c 40%, #d9a560 100%),
              radial-gradient(ellipse at 50% 100%, #ebbc78 0%, transparent 70%);
}
.scn-hymen-brings-rosalind .bg {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, #ffe0b0 0%, #ffd080 40%, transparent 70%);
  animation: hbr-bg 12s ease-in-out infinite alternate;
}
.scn-hymen-brings-rosalind .altar {
  position: absolute; bottom: 25%; left: 50%; transform: translateX(-50%);
  width: 50px; height: 30px;
  background: linear-gradient(180deg, #c49a5c 0%, #7a5f30 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: 0 4px 8px rgba(0,0,0,0.4);
  animation: hbr-altar 8s ease-in-out infinite;
}
.scn-hymen-brings-rosalind .hymen {
  position: absolute; bottom: 30%; left: 25%;
  width: 32px; height: 80px;
  background: linear-gradient(180deg, #70482a 0%, #3a2010 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: hbr-fig 4s ease-in-out infinite;
}
.scn-hymen-brings-rosalind .rosalind {
  position: absolute; bottom: 30%; left: 46%;
  width: 28px; height: 75px;
  background: linear-gradient(180deg, #b08050 0%, #5d3a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: hbr-fig 4s ease-in-out infinite 0.3s;
}
.scn-hymen-brings-rosalind .celia {
  position: absolute; bottom: 30%; right: 22%;
  width: 28px; height: 72px;
  background: linear-gradient(180deg, #a07050 0%, #503020 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: hbr-fig 4s ease-in-out infinite 0.6s;
}
.scn-hymen-brings-rosalind .dove {
  position: absolute; top: 15%; left: 55%;
  width: 20px; height: 14px;
  background: radial-gradient(ellipse at 50% 50%, #fff5e0 0%, #e6d0b0 60%, transparent 100%);
  border-radius: 50%;
  filter: blur(2px);
  animation: hbr-dove 20s linear infinite;
}
@keyframes hbr-bg {
  0% { opacity: 0.8; }
  50% { opacity: 1; }
  100% { opacity: 0.9; }
}
@keyframes hbr-altar {
  0% { transform: translateX(-50%) translateY(0); }
  50% { transform: translateX(-50%) translateY(-2px); }
  100% { transform: translateX(-50%) translateY(0); }
}
@keyframes hbr-fig {
  0% { transform: translateY(0) rotate(-1deg); }
  50% { transform: translateY(-3px) rotate(1deg); }
  100% { transform: translateY(0) rotate(-1deg); }
}
@keyframes hbr-dove {
  0% { transform: translateX(0) translateY(0); }
  50% { transform: translateX(30px) translateY(-10px); }
  100% { transform: translateX(60px) translateY(0); }
}

.scn-hymen-begins-rites {
  background: linear-gradient(180deg, #fdedce 0%, #f6d49a 40%, #cfa55a 100%),
              radial-gradient(ellipse at 50% 80%, #ecc079 0%, transparent 70%);
}
.scn-hymen-begins-rites .bg-arch {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at 50% 0%, #ffe8c0 0%, transparent 60%);
  animation: hbeg-arch 10s ease-in-out infinite alternate;
}
.scn-hymen-begins-rites .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #b8915a 0%, #7a5e30 100%);
  border-radius: 0 0 20% 20%;
  animation: hbeg-floor 8s ease-in-out infinite;
}
.scn-hymen-begins-rites .priest {
  position: absolute; bottom: 28%; left: 38%;
  width: 28px; height: 75px;
  background: linear-gradient(180deg, #6a4428 0%, #351f0e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: hbeg-fig 4s ease-in-out infinite;
}
.scn-hymen-begins-rites .bride {
  position: absolute; bottom: 28%; left: 48%;
  width: 26px; height: 72px;
  background: linear-gradient(180deg, #c09060 0%, #5a3a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: hbeg-fig 4s ease-in-out infinite 0.4s;
}
.scn-hymen-begins-rites .groom {
  position: absolute; bottom: 28%; right: 38%;
  width: 28px; height: 75px;
  background: linear-gradient(180deg, #6a4a2a 0%, #332010 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: hbeg-fig 4s ease-in-out infinite 0.8s;
}
.scn-hymen-begins-rites .light-ray {
  position: absolute; top: 0; left: 45%;
  width: 40px; height: 120px;
  background: linear-gradient(180deg, rgba(255,230,150,0.6) 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(10px);
  animation: hbeg-ray 5s ease-in-out infinite alternate;
}
.scn-hymen-begins-rites .flower {
  position: absolute; bottom: 22%; left: 52%;
  width: 12px; height: 12px;
  background: radial-gradient(circle at 50% 50%, #e09860 0%, #c0582a 60%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 8px 2px rgba(224,152,96,0.5);
  animation: hbeg-flower 3s ease-in-out infinite;
}
@keyframes hbeg-arch {
  0% { opacity: 0.7; transform: scaleY(1); }
  50% { opacity: 1; transform: scaleY(1.02); }
  100% { opacity: 0.8; transform: scaleY(1); }
}
@keyframes hbeg-floor {
  0% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
  100% { transform: translateY(0); }
}
@keyframes hbeg-fig {
  0% { transform: translateY(0) rotate(-1deg); }
  50% { transform: translateY(-3px) rotate(1deg); }
  100% { transform: translateY(0) rotate(-1deg); }
}
@keyframes hbeg-ray {
  0% { opacity: 0.3; transform: scaleX(1); }
  50% { opacity: 0.8; transform: scaleX(1.5); }
  100% { opacity: 0.4; transform: scaleX(0.8); }
}
@keyframes hbeg-flower {
  0% { transform: scale(1) rotate(0deg); }
  50% { transform: scale(1.2) rotate(15deg); }
  100% { transform: scale(1) rotate(0deg); }
}

.scn-hymen-wedlock-song {
  background: linear-gradient(180deg, #2a3560 0%, #4a5a80 50%, #7a8aaa 100%),
              radial-gradient(ellipse at 50% 20%, #f0d0a0 0%, transparent 70%);
}
.scn-hymen-wedlock-song .night-sky {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #1a2a50 0%, #3a4a70 100%);
  animation: hws-sky 12s ease-in-out infinite alternate;
}
.scn-hymen-wedlock-song .moon {
  position: absolute; top: 8%; right: 20%;
  width: 40px; height: 40px;
  background: radial-gradient(circle at 50% 50%, #fce4b0 0%, #d4b070 60%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 30px 10px rgba(240,200,120,0.4);
  animation: hws-moon 15s ease-in-out infinite;
}
.scn-hymen-wedlock-song .stage {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #5a3a1a 0%, #2a1a08 100%);
  border-radius: 40% 40% 0 0 / 30% 30% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.5);
  animation: hws-stage 8s ease-in-out infinite;
}
.scn-hymen-wedlock-song .singer-l {
  position: absolute; bottom: 18%; left: 20%;
  width: 26px; height: 60px;
  background: linear-gradient(180deg, #6a4a2a 0%, #2e1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: hws-singer 4s ease-in-out infinite;
}
.scn-hymen-wedlock-song .singer-c {
  position: absolute; bottom: 18%; left: 45%;
  width: 28px; height: 65px;
  background: linear-gradient(180deg, #7a5a3a 0%, #3a2210 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: hws-singer 4s ease-in-out infinite 0.3s;
}
.scn-hymen-wedlock-song .singer-r {
  position: absolute; bottom: 18%; right: 20%;
  width: 26px; height: 60px;
  background: linear-gradient(180deg, #6a4a2a 0%, #2e1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: hws-singer 4s ease-in-out infinite 0.6s;
}
.scn-hymen-wedlock-song .note {
  position: absolute;
  width: 10px; height: 10px;
  background: radial-gradient(circle at 50% 50%, #ffd060 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(3px);
}
.scn-hymen-wedlock-song .note-1 {
  top: 20%; left: 30%;
  animation: hws-note1 6s ease-in-out infinite;
}
.scn-hymen-wedlock-song .note-2 {
  top: 15%; right: 35%;
  animation: hws-note2 7s ease-in-out infinite 1s;
}
@keyframes hws-sky {
  0% { opacity: 0.8; }
  50% { opacity: 1; }
  100% { opacity: 0.7; }
}
@keyframes hws-moon {
  0% { transform: translateY(0); }
  50% { transform: translateY(-5px) scale(1.02); }
  100% { transform: translateY(0); }
}
@keyframes hws-stage {
  0% { transform: scaleY(1); }
  50% { transform: scaleY(1.01); }
  100% { transform: scaleY(1); }
}
@keyframes hws-singer {
  0% { transform: translateY(0) rotate(-2deg); }
  50% { transform: translateY(-3px) rotate(2deg) scale(1.02); }
  100% { transform: translateY(0) rotate(-2deg); }
}
@keyframes hws-note1 {
  0% { transform: translate(0, 0) scale(1); opacity: 0; }
  50% { transform: translate(10px, -20px) scale(1.5); opacity: 0.8; }
  100% { transform: translate(20px, -40px) scale(0.5); opacity: 0; }
}
@keyframes hws-note2 {
  0% { transform: translate(0, 0) scale(1); opacity: 0; }
  50% { transform: translate(-10px, -25px) scale(1.3); opacity: 0.6; }
  100% { transform: translate(-20px, -50px) scale(0.3); opacity: 0; }
}

.scn-jaques-departs-to-court {
  background:
    linear-gradient(180deg, #87ceeb 0%, #b0e0f0 40%, #f0e68c 80%) no-repeat,
    radial-gradient(ellipse at 50% 100%, #f0c060 0%, transparent 60%) no-repeat;
  background-size: cover, cover;
}
.scn-jaques-departs-to-court .jdc-sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #a0d0ff 0%, transparent 100%);
  animation: jdc-sky 15s ease-in-out infinite alternate;
}
.scn-jaques-departs-to-court .jdc-sun {
  position: absolute; top: 8%; left: 70%; width: 40px; height: 40px;
  background: radial-gradient(circle, #fff8dc 0%, #ffd700 60%, transparent 80%);
  border-radius: 50%;
  box-shadow: 0 0 40px 20px rgba(255,215,0,0.5);
  animation: jdc-sun 8s ease-in-out infinite alternate;
}
.scn-jaques-departs-to-court .jdc-path {
  position: absolute; bottom: 20%; left: 30%; width: 40%; height: 8%;
  background: linear-gradient(180deg, #d2b48c 0%, #a0522d 100%);
  border-radius: 20% 20% 0 0;
  transform: scaleY(0.6) translateY(10px);
  animation: jdc-path 12s ease-in-out infinite alternate;
}
.scn-jaques-departs-to-court .jdc-figure {
  position: absolute; bottom: 24%; left: 35%; width: 16px; height: 36px;
  background: linear-gradient(180deg, #2c2c2c 0%, #1a1a1a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: jdc-walk 6s ease-in-out infinite;
}
.scn-jaques-departs-to-court .jdc-court {
  position: absolute; bottom: 30%; right: 5%; width: 120px; height: 100px;
  background: linear-gradient(180deg, #8b7355 0%, #5c4033 100%);
  border-radius: 10% 10% 0 0;
  clip-path: polygon(0% 100%, 0% 40%, 20% 20%, 30% 40%, 50% 15%, 70% 40%, 80% 20%, 100% 40%, 100% 100%);
  animation: jdc-court 20s ease-in-out infinite alternate;
}
.scn-jaques-departs-to-court .jdc-tree-a {
  position: absolute; bottom: 30%; left: 10%; width: 50px; height: 90px;
  background: radial-gradient(ellipse at 50% 100%, #2e8b57 0%, #1a4a2e 80%);
  border-radius: 50% 50% 40% 40% / 70% 70% 30% 30%;
  transform-origin: bottom center;
  animation: jdc-sway 10s ease-in-out infinite;
}
.scn-jaques-departs-to-court .jdc-tree-b {
  position: absolute; bottom: 30%; left: 20%; width: 40px; height: 70px;
  background: radial-gradient(ellipse at 50% 100%, #3cb371 0%, #1e5a2e 80%);
  border-radius: 50% 50% 40% 40% / 70% 70% 30% 30%;
  transform-origin: bottom center;
  animation: jdc-sway 12s ease-in-out infinite;
  filter: blur(1px);
}
.scn-jaques-departs-to-court .jdc-cloud {
  position: absolute; top: 12%; left: -20%; width: 80px; 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(6px);
  animation: jdc-cloud 40s linear infinite;
}

@keyframes jdc-sky {
  0% { opacity: 0.9; }
  50% { opacity: 1; }
  100% { opacity: 0.8; }
}
@keyframes jdc-sun {
  0% { box-shadow: 0 0 30px 15px rgba(255,215,0,0.4); transform: scale(1); }
  50% { box-shadow: 0 0 50px 25px rgba(255,215,0,0.7); transform: scale(1.05); }
  100% { box-shadow: 0 0 30px 15px rgba(255,215,0,0.4); transform: scale(1); }
}
@keyframes jdc-path {
  0% { transform: scaleY(0.6) translateY(10px) skewX(0deg); }
  50% { transform: scaleY(0.6) translateY(8px) skewX(2deg); }
  100% { transform: scaleY(0.6) translateY(10px) skewX(0deg); }
}
@keyframes jdc-walk {
  0% { transform: translateX(0) translateY(0) rotate(-2deg); }
  25% { transform: translateX(8px) translateY(-2px) rotate(1deg); }
  50% { transform: translateX(16px) translateY(0) rotate(-1deg); }
  75% { transform: translateX(24px) translateY(-2px) rotate(2deg); }
  100% { transform: translateX(32px) translateY(0) rotate(0deg); }
}
@keyframes jdc-court {
  0% { transform: translateY(0) scale(1); filter: brightness(1); }
  50% { transform: translateY(-4px) scale(1.02); filter: brightness(1.05); }
  100% { transform: translateY(0) scale(1); filter: brightness(1); }
}
@keyframes jdc-sway {
  0% { transform: rotate(-2deg); }
  50% { transform: rotate(2deg); }
  100% { transform: rotate(-2deg); }
}
@keyframes jdc-cloud {
  0% { transform: translateX(-80px); }
  100% { transform: translateX(120vw); }
}

/* ---- scene 2 ---- */
.scn-jaques-departs-rituals-begin {
  background:
    linear-gradient(180deg, #e8d8b8 0%, #f5deb3 30%, #d2b48c 70%) no-repeat,
    radial-gradient(ellipse at 50% 100%, #deb887 0%, transparent 70%) no-repeat;
  background-size: cover, cover;
}
.scn-jaques-departs-rituals-begin .jdr-wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #c4a882 0%, #a08060 100%);
  border-bottom: 4px solid #6a4e3a;
  animation: jdr-wall 15s ease-in-out infinite alternate;
}
.scn-jaques-departs-rituals-begin .jdr-window {
  position: absolute; top: 10%; left: 35%; width: 80px; height: 100px;
  background: linear-gradient(180deg, #b0e0e6 0%, #87ceeb 100%);
  border: 6px solid #5c4033;
  border-radius: 4px;
  box-shadow: inset 0 0 40px rgba(255,255,200,0.3);
  animation: jdr-window 10s ease-in-out infinite alternate;
}
.scn-jaques-departs-rituals-begin .jdr-curtain-a {
  position: absolute; top: 8%; left: 25%; width: 60px; height: 120px;
  background: linear-gradient(180deg, #c8553d 0%, #8b3a2f 100%);
  border-radius: 0 0 30% 30%;
  transform-origin: top center;
  animation: jdr-curtain 8s ease-in-out infinite alternate;
}
.scn-jaques-departs-rituals-begin .jdr-curtain-b {
  position: absolute; top: 8%; right: 25%; width: 60px; height: 120px;
  background: linear-gradient(180deg, #c8553d 0%, #8b3a2f 100%);
  border-radius: 0 0 30% 30%;
  transform-origin: top center;
  animation: jdr-curtain 9s ease-in-out infinite alternate-reverse;
}
.scn-jaques-departs-rituals-begin .jdr-bed {
  position: absolute; bottom: 28%; left: 50%; transform: translateX(-50%);
  width: 100px; height: 50px;
  background: linear-gradient(180deg, #deb887 0%, #b8860b 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 0 8px 20px rgba(0,0,0,0.3);
  animation: jdr-bed 14s ease-in-out infinite;
}
.scn-jaques-departs-rituals-begin .jdr-dancer {
  position: absolute; bottom: 20%; right: 28%; width: 20px; height: 50px;
  background: linear-gradient(180deg, #2c2c2c 0%, #1a1a1a 100%);
  border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: jdr-dance 4s ease-in-out infinite;
}
.scn-jaques-departs-rituals-begin .jdr-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #a0522d 0%, #5c4033 100%);
  border-radius: 30% 30% 0 0;
  animation: jdr-floor 20s ease-in-out infinite alternate;
}
.scn-jaques-departs-rituals-begin .jdr-sunbeam {
  position: absolute; top: 0; left: 40%; width: 30%; height: 100%;
  background: linear-gradient(180deg, rgba(255,255,200,0.3) 0%, transparent 60%);
  clip-path: polygon(30% 0%, 70% 0%, 60% 100%, 20% 100%);
  animation: jdr-sunbeam 12s ease-in-out infinite alternate;
}

@keyframes jdr-wall {
  0% { opacity: 0.85; }
  50% { opacity: 1; }
  100% { opacity: 0.9; }
}
@keyframes jdr-window {
  0% { box-shadow: inset 0 0 30px rgba(255,255,200,0.2); }
  50% { box-shadow: inset 0 0 60px rgba(255,255,200,0.5); }
  100% { box-shadow: inset 0 0 30px rgba(255,255,200,0.2); }
}
@keyframes jdr-curtain {
  0% { transform: scaleX(1); }
  50% { transform: scaleX(0.85); }
  100% { transform: scaleX(1); }
}
@keyframes jdr-bed {
  0% { transform: translateX(-50%) translateY(0); }
  50% { transform: translateX(-50%) translateY(-3px); }
  100% { transform: translateX(-50%) translateY(0); }
}
@keyframes jdr-dance {
  0% { transform: translateX(0) rotate(-5deg) scaleY(1); }
  25% { transform: translateX(10px) rotate(5deg) scaleY(0.95); }
  50% { transform: translateX(20px) rotate(-3deg) scaleY(1); }
  75% { transform: translateX(30px) rotate(4deg) scaleY(0.95); }
  100% { transform: translateX(40px) rotate(-2deg) scaleY(1); }
}
@keyframes jdr-floor {
  0% { transform: scaleY(1); }
  50% { transform: scaleY(0.98); }
  100% { transform: scaleY(1); }
}
@keyframes jdr-sunbeam {
  0% { opacity: 0.3; transform: skewX(-2deg); }
  50% { opacity: 0.6; transform: skewX(2deg); }
  100% { opacity: 0.3; transform: skewX(-2deg); }
}

/* ---- scene 3 ---- */
.scn-epilogue-part1 {
  background:
    linear-gradient(180deg, #3a2a1a 0%, #5c4033 40%, #8b5e3c 70%) no-repeat,
    radial-gradient(ellipse at 50% 0%, #ffd700 0%, transparent 80%) no-repeat;
  background-size: cover, cover;
}
.scn-epilogue-part1 .ep1-stage {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #a0522d 0%, #6a3e2a 100%);
  border-radius: 20% 20% 0 0;
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.5);
}
.scn-epilogue-part1 .ep1-curtain-l {
  position: absolute; top: 0; left: 0; width: 35%; height: 100%;
  background: linear-gradient(90deg, #c8553d 0%, #8b3a2f 50%, #6a2a1a 100%);
  border-radius: 0 40% 40% 0;
  transform-origin: left center;
  animation: ep1-curtain 12s ease-in-out infinite alternate;
}
.scn-epilogue-part1 .ep1-curtain-r {
  position: absolute; top: 0; right: 0; width: 35%; height: 100%;
  background: linear-gradient(90deg, #6a2a1a 0%, #8b3a2f 50%, #c8553d 100%);
  border-radius: 40% 0 0 40%;
  transform-origin: right center;
  animation: ep1-curtain 14s ease-in-out infinite alternate-reverse;
}
.scn-epilogue-part1 .ep1-actor {
  position: absolute; bottom: 30%; left: 50%; transform: translateX(-50%);
  width: 24px; height: 60px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  animation: ep1-actor 6s ease-in-out infinite;
}
.scn-epilogue-part1 .ep1-spotlight {
  position: absolute; top: -10%; left: 45%; width: 80px; height: 140%;
  background: linear-gradient(180deg, rgba(255,215,0,0.4) 0%, transparent 70%);
  clip-path: polygon(35% 0%, 65% 0%, 55% 100%, 45% 100%);
  animation: ep1-spotlight 9s ease-in-out infinite alternate;
}
.scn-epilogue-part1 .ep1-floor {
  position: absolute; bottom: 0; left: 10%; width: 80%; height: 20%;
  background: linear-gradient(180deg, #8b5e3c 0%, #5c4033 100%);
  border-radius: 20% 20% 0 0;
  animation: ep1-floor 15s ease-in-out infinite alternate;
}
.scn-epilogue-part1 .ep1-wine-bush {
  position: absolute; bottom: 15%; right: 20%; width: 40px; height: 50px;
  background: radial-gradient(ellipse at 50% 100%, #2e8b57 0%, #1a4a2e 80%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  filter: blur(2px);
  animation: ep1-bush 10s ease-in-out infinite alternate;
}

@keyframes ep1-curtain {
  0% { transform: scaleX(1); }
  50% { transform: scaleX(0.7); }
  100% { transform: scaleX(1); }
}
@keyframes ep1-actor {
  0% { transform: translateX(-50%) rotate(-2deg) translateY(0); }
  50% { transform: translateX(-50%) rotate(2deg) translateY(-4px); }
  100% { transform: translateX(-50%) rotate(-2deg) translateY(0); }
}
@keyframes ep1-spotlight {
  0% { opacity: 0.5; transform: scaleX(1) translateX(0); }
  50% { opacity: 0.8; transform: scaleX(1.1) translateX(5px); }
  100% { opacity: 0.5; transform: scaleX(1) translateX(0); }
}
@keyframes ep1-floor {
  0% { transform: scaleY(1); }
  50% { transform: scaleY(0.97); }
  100% { transform: scaleY(1); }
}
@keyframes ep1-bush {
  0% { filter: blur(2px); }
  50% { filter: blur(1px); }
  100% { filter: blur(2px); }
}

/* ---- scene 4 ---- */
.scn-epilogue-part2 {
  background:
    linear-gradient(180deg, #4a3a2a 0%, #6a4e3a 30%, #8b5e3c 70%) no-repeat,
    radial-gradient(ellipse at 50% 30%, #ffd700 0%, transparent 80%) no-repeat;
  background-size: cover, cover;
}
.scn-epilogue-part2 .ep2-stage {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #a0522d 0%, #5c4033 100%);
  border-radius: 30% 30% 0 0;
}
.scn-epilogue-part2 .ep2-figure-l {
  position: absolute; bottom: 20%; left: 25%; width: 20px; height: 55px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 30% 30% 20% 20% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: ep2-gesture 5s ease-in-out infinite;
}
.scn-epilogue-part2 .ep2-figure-r {
  position: absolute; bottom: 20%; right: 25%; width: 20px; height: 55px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 30% 30% 20% 20% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: ep2-gesture 6s ease-in-out infinite 1s;
}
.scn-epilogue-part2 .ep2-glow {
  position: absolute; bottom: 45%; left: 50%; transform: translateX(-50%);
  width: 30px; height: 30px;
  background: radial-gradient(circle, #fff8dc 0%, #ffd700 50%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 40px 20px rgba(255,215,0,0.6);
  animation: ep2-glow 4s ease-in-out infinite alternate;
}
.scn-epilogue-part2 .ep2-audience {
  position: absolute; bottom: 0; left: 10%; width: 80%; height: 20%;
  background: radial-gradient(ellipse at 50% 100%, #2c2c2c 0%, #1a1a1a 100%);
  border-radius: 50% 50% 0 0;
  filter: blur(3px);
  animation: ep2-audience 18s ease-in-out infinite alternate;
}
.scn-epilogue-part2 .ep2-curtain {
  position: absolute; top: 0; left: 0; right: 0; height: 100%;
  background: linear-gradient(90deg, #c8553d 5%, transparent 40%, transparent 60%, #c8553d 95%);
  border-radius: 0 0 40% 40%;
  animation: ep2-curtain 20s ease-in-out infinite alternate;
}
.scn-epilogue-part2 .ep2-sparkle {
  position: absolute; top: 30%; left: 40%; width: 6px; height: 6px;
  background: #fff8dc;
  border-radius: 50%;
  box-shadow: 0 0 12px 4px rgba(255,215,0,0.8);
  animation: ep2-sparkle 3s ease-in-out infinite;
}
@keyframes ep2-gesture {
  0% { transform: translateX(0) rotate(-5deg); }
  25% { transform: translateX(10px) rotate(5deg); }
  50% { transform: translateX(20px) rotate(-3deg); }
  75% { transform: translateX(30px) rotate(4deg); }
  100% { transform: translateX(40px) rotate(-2deg); }
}
@keyframes ep2-glow {
  0% { opacity: 0.7; transform: translateX(-50%) scale(1); }
  50% { opacity: 1; transform: translateX(-50%) scale(1.2); }
  100% { opacity: 0.7; transform: translateX(-50%) scale(1); }
}
@keyframes ep2-audience {
  0% { opacity: 0.5; transform: scaleY(1); }
  50% { opacity: 0.8; transform: scaleY(1.05); }
  100% { opacity: 0.5; transform: scaleY(1); }
}
@keyframes ep2-curtain {
  0% { opacity: 0.7; }
  50% { opacity: 1; }
  100% { opacity: 0.7; }
}
@keyframes ep2-sparkle {
  0% { opacity: 0; transform: translate(0,0); }
  25% { opacity: 1; transform: translate(10px,-15px); }
  50% { opacity: 0; transform: translate(20px,-30px); }
  75% { opacity: 1; transform: translate(30px,-45px); }
  100% { opacity: 0; transform: translate(40px,-60px); }
}

/* Scene phebe-letter-to-ganymede */
.scn-phebe-letter-to-ganymede {
  background: linear-gradient(180deg, #ffd580 0%, #6ab0e0 60%, #2a4a70 100%), radial-gradient(ellipse at 30% 20%, #fff8e0 0%, transparent 50%);
}
.scn-phebe-letter-to-ganymede .sky { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #4a8ec0 0%, transparent 100%); animation: ph-sky 8s ease-in-out infinite alternate; }
.scn-phebe-letter-to-ganymede .sun { position:absolute; top:5%; left:15%; width:40px; height:40px; background: radial-gradient(circle, #ffe060 0%, #ffb020 60%, transparent 80%); border-radius:50%; box-shadow: 0 0 60px 20px #ffb020; animation: ph-sun 3s ease-in-out infinite; }
.scn-phebe-letter-to-ganymede .cottage { position:absolute; bottom:25%; left:35%; width:100px; height:60px; background: linear-gradient(180deg, #c8553d 0%, #8a3a2a 100%); border-radius:6% 6% 10% 10%; box-shadow: 0 8px 16px rgba(0,0,0,.4); }
.scn-phebe-letter-to-ganymede .cottage::before { content:''; position:absolute; top:-30px; left:-5px; width:110px; height:30px; background: linear-gradient(180deg, #6a3a2a 0%, #4a2a1a 100%); clip-path: polygon(10% 100%, 50% 0%, 90% 100%); }
.scn-phebe-letter-to-ganymede .figure { position:absolute; bottom:23%; left:60%; width:18px; height:36px; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; animation: ph-figure 2s ease-in-out infinite; }
.scn-phebe-letter-to-ganymede .tree { position:absolute; bottom:25%; left:20%; width:10px; height:50px; background: linear-gradient(180deg, #5a3a2a 0%, #3a2a1a 100%); border-radius:2px; transform-origin: bottom; animation: ph-tree 9s ease-in-out infinite; }
.scn-phebe-letter-to-ganymede .shadow { position:absolute; bottom:22%; left:55%; width:30px; height:8px; background: rgba(0,0,0,.3); border-radius:50%; filter: blur(4px); animation: ph-shadow 2s ease-in-out infinite; }
@keyframes ph-sky { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.6 } }
@keyframes ph-sun { 0%,100% { transform: scale(1); box-shadow: 0 0 60px 20px #ffb020; } 50% { transform: scale(1.1); box-shadow: 0 0 80px 30px #ffd040; } }
@keyframes ph-figure { 0%,100% { transform: translateX(0) rotate(-1deg); } 25% { transform: translateX(2px) rotate(1deg); } 50% { transform: translateX(0) rotate(-2deg); } 75% { transform: translateX(-2px) rotate(1deg); } }
@keyframes ph-tree { 0%,100% { transform: rotate(0deg); } 50% { transform: rotate(2deg); } }
@keyframes ph-shadow { 0%,100% { transform: scaleX(1); opacity:.3; } 50% { transform: scaleX(1.2); opacity:.5; } }

/* Scene jaques-melancholy-talk */
.scn-jaques-melancholy-talk {
  background: linear-gradient(180deg, #b0b8c0 0%, #6a7a6a 60%, #3a4a3a 100%), radial-gradient(ellipse at 50% 0%, #d0d8d0 0%, transparent 60%);
}
.scn-jaques-melancholy-talk .sky-overcast { position:absolute; inset:0 0 35% 0; background: linear-gradient(180deg, #a0a8b0 0%, transparent 100%); animation: ja-sky 20s ease-in-out infinite alternate; }
.scn-jaques-melancholy-talk .ground { position:absolute; bottom:0; left:0; right:0; height:35%; background: linear-gradient(180deg, #5a6a5a 0%, #3a4a3a 100%); border-radius: 20% 30% 0 0; }
.scn-jaques-melancholy-talk .tree-weep { position:absolute; top:30%; left:25%; width:8px; height:60px; background: linear-gradient(180deg, #4a5a3a 0%, #2a3a2a 100%); border-radius:2px; transform-origin:top; animation: ja-tree 12s ease-in-out infinite; }
.scn-jaques-melancholy-talk .tree-weep::after { content:''; position:absolute; top:0; left:-15px; width:40px; height:30px; background: radial-gradient(ellipse at 50% 0%, #6a8a5a 0%, #4a6a3a 70%); border-radius:50%; filter:blur(4px); }
.scn-jaques-melancholy-talk .figure-sit { position:absolute; bottom:20%; left:50%; width:22px; height:28px; background: linear-gradient(180deg, #2a3a2a 0%, #1a2a1a 100%); border-radius:50% 50% 40% 40% / 60% 50% 50% 40%; transform:translateX(-50%); animation: ja-figure 6s ease-in-out infinite; }
.scn-jaques-melancholy-talk .mist { position:absolute; bottom:0; left:0; right:0; height:50%; background: linear-gradient(0deg, rgba(180,190,180,0.3) 0%, transparent 100%); filter:blur(10px); animation: ja-mist 30s ease-in-out infinite; }
.scn-jaques-melancholy-talk .cloud-drift { position:absolute; top:12%; left:0; width:80px; height:14px; background: rgba(200,208,200,0.4); border-radius:50%; filter:blur(6px); animation: ja-cloud 50s linear infinite; }
@keyframes ja-sky { 0% { opacity:.7 } 50% { opacity:.9 } 100% { opacity:.6 } }
@keyframes ja-tree { 0%,100% { transform: rotate(0deg); } 50% { transform: rotate(3deg); } }
@keyframes ja-figure { 0%,100% { transform: translateX(-50%) scaleY(1); } 50% { transform: translateX(-50%) scaleY(0.97); } }
@keyframes ja-mist { 0% { opacity:0.3 } 50% { opacity:0.6 } 100% { opacity:0.2 } }
@keyframes ja-cloud { 0% { transform: translateX(-80px) } 100% { transform: translateX(120vw) } }

/* Scene orlando-late-promise */
.scn-orlando-late-promise {
  background: linear-gradient(180deg, #ffdd99 0%, #f0b060 50%, #c08040 100%), radial-gradient(ellipse at 50% 20%, #fff0c0 0%, transparent 50%);
}
.scn-orlando-late-promise .sky-warm { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #ffcc80 0%, transparent 100%); animation: or-sky 10s ease-in-out infinite alternate; }
.scn-orlando-late-promise .path { position:absolute; bottom:20%; left:30%; right:30%; height:12px; background: linear-gradient(180deg, #b08040 0%, #8a6a2a 100%); border-radius:4px; box-shadow: 0 4px 8px rgba(0,0,0,.3); animation: or-path 6s ease-in-out infinite; }
.scn-orlando-late-promise .fig-orlando { position:absolute; bottom:22%; left:40%; width:18px; height:36px; background: linear-gradient(180deg, #3a2a1a 0%, #1a1a0a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; animation: or-walk 8s ease-in-out infinite; }
.scn-orlando-late-promise .fig-rosalind { position:absolute; bottom:22%; left:55%; width:16px; height:34px; background: linear-gradient(180deg, #2a3a2a 0%, #1a2a1a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; animation: or-walk 8s ease-in-out infinite reverse; }
.scn-orlando-late-promise .sun-gleam { position:absolute; top:8%; left:60%; width:50px; height:50px; background: radial-gradient(circle, #ffe680 0%, #ffb020 50%, transparent 80%); border-radius:50%; box-shadow: 0 0 80px 30px #ffb020; animation: or-gleam 4s ease-in-out infinite; }
.scn-orlando-late-promise .flower-1 { position:absolute; bottom:18%; left:48%; width:6px; height:6px; background: radial-gradient(circle, #d8a868 0%, #b08040 100%); border-radius:50%; box-shadow: 0 0 6px 2px #d8a868; animation: or-flower 3s ease-in-out infinite; }
.scn-orlando-late-promise .flower-2 { position:absolute; bottom:18%; left:53%; width:5px; height:5px; background: radial-gradient(circle, #d8a868 0%, #b08040 100%); border-radius:50%; box-shadow: 0 0 6px 2px #d8a868; animation: or-flower 3s ease-in-out infinite 0.5s; }
@keyframes or-sky { 0% { opacity:.85 } 50% { opacity:1 } 100% { opacity:.9 } }
@keyframes or-path { 0%,100% { transform: scaleY(1); } 50% { transform: scaleY(0.9); } }
@keyframes or-walk { 0%,100% { transform: translateX(0) translateY(0); } 25% { transform: translateX(4px) translateY(-2px); } 50% { transform: translateX(8px) translateY(0); } 75% { transform: translateX(4px) translateY(-2px); } }
@keyframes or-gleam { 0%,100% { transform: scale(1); opacity:.8; } 50% { transform: scale(1.2); opacity:1; } }
@keyframes or-flower { 0%,100% { transform: rotate(0deg) scale(1); } 50% { transform: rotate(20deg) scale(1.1); } }

/* Scene deer-hunt-song */
.scn-deer-hunt-song {
  background: linear-gradient(180deg, #80d0ff 0%, #b0e080 40%, #f0d060 80%, #f0b020 100%), radial-gradient(ellipse at 30% 10%, #ffe880 0%, transparent 50%);
}
.scn-deer-hunt-song .sky-bright { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #80c0ff 0%, transparent 100%); animation: de-sky 12s ease-in-out infinite alternate; }
.scn-deer-hunt-song .sun-bounce { position:absolute; top:10%; left:20%; width:50px; height:50px; background: radial-gradient(circle, #ffe880 0%, #ffb020 60%, transparent 80%); border-radius:50%; box-shadow: 0 0 80px 30px #ffb020; animation: de-sun 2s ease-in-out infinite; }
.scn-deer-hunt-song .deer { position:absolute; bottom:25%; left:35%; width:30px; height:50px; background: linear-gradient(180deg, #6a4a3a 0%, #3a2a1a 100%); border-radius:30% 30% 40% 40% / 50% 50% 30% 30%; transform-origin: bottom; animation: de-deer 0.8s ease-in-out infinite; }
.scn-deer-hunt-song .deer::before { content:''; position:absolute; top:-20px; left:-5px; width:40px; height:20px; background: #3a2a1a; clip-path: polygon(0% 100%, 50% 0%, 100% 100%); transform: rotate(-5deg); }
.scn-deer-hunt-song .deer::after { content:''; position:absolute; top:-20px; right:-5px; width:40px; height:20px; background: #3a2a1a; clip-path: polygon(0% 100%, 50% 0%, 100% 100%); transform: rotate(5deg); }
.scn-deer-hunt-song .hunter { position:absolute; bottom:22%; left:60%; width:20px; height:40px; background: linear-gradient(180deg, #2a4a2a 0%, #1a2a1a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; animation: de-hunter 1.2s ease-in-out infinite; }
.scn-deer-hunt-song .hunter::after { content:''; position:absolute; top:-5px; left:15px; width:6px; height:10px; background: #8a6a2a; border-radius:2px; transform: rotate(-30deg); }
.scn-deer-hunt-song .banner { position:absolute; top:30%; left:70%; width:15px; height:25px; background: linear-gradient(180deg, #c8553d 0%, #8a3a2a 100%); transform-origin: top; animation: de-banner 1s ease-in-out infinite; }
.scn-deer-hunt-song .horns { position:absolute; bottom:50%; left:45%; width:30px; height:20px; background: transparent; border:4px solid #6a4a3a; border-radius:50% 50% 0 0; border-bottom: none; transform: rotate(-10deg); animation: de-horns 2s ease-in-out infinite; }
@keyframes de-sky { 0% { opacity:.9 } 50% { opacity:1 } 100% { opacity:.8 } }
@keyframes de-sun { 0%,100% { transform: scale(1) translateY(0); } 25% { transform: scale(1.1) translateY(-3px); } 75% { transform: scale(0.95) translateY(2px); } }
@keyframes de-deer { 0%,100% { transform: translateY(0) rotate(-2deg); } 25% { transform: translateY(-4px) rotate(0deg); } 50% { transform: translateY(0) rotate(2deg); } 75% { transform: translateY(-2px) rotate(0deg); } }
@keyframes de-hunter { 0%,100% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(3px) rotate(3deg); } 50% { transform: translateX(0) rotate(0deg); } 75% { transform: translateX(-3px) rotate(-3deg); } }
@keyframes de-banner { 0%,100% { transform: skewX(0deg); } 50% { transform: skewX(-20deg); } }
@keyframes de-horns { 0%,100% { transform: rotate(-10deg); } 50% { transform: rotate(10deg); } }

.scn-forest-orlando-gentleness {
  background: 
    linear-gradient(180deg, #f9e79f 0%, #d4e1a1 40%, #8cb86a 100%),
    radial-gradient(ellipse at 40% 30%, #fce8a0 0%, transparent 50%);
}
.scn-forest-orlando-gentleness .sky {
  position: absolute; inset: 0 0 60% 0;
  background: linear-gradient(180deg, #fef9e7 0%, #fadc96 100%);
  animation: fog-sky 12s ease-in-out infinite alternate;
}
.scn-forest-orlando-gentleness .distant-trees {
  position: absolute; bottom: 35%; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #6a9a4a 0%, #3a6a2a 100%);
  border-radius: 40% 50% 0 0;
  box-shadow: inset 0 4px 10px rgba(0,0,0,0.3);
  animation: fog-trees 18s ease-in-out infinite alternate;
}
.scn-forest-orlando-gentleness .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #7a5a3a 0%, #5a3a1a 100%);
  border-radius: 30% 20% 0 0;
}
.scn-forest-orlando-gentleness .figure {
  position: absolute; bottom: 20%; left: 45%; 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: fog-figure 6s ease-in-out infinite;
}
.scn-forest-orlando-gentleness .arm {
  position: absolute; bottom: 45%; left: 48%; width: 50px; height: 8px;
  background: linear-gradient(90deg, #4a3a2a 0%, #6a5a4a 100%);
  border-radius: 50%;
  transform-origin: left center;
  animation: fog-arm 4s ease-in-out infinite alternate;
}
.scn-forest-orlando-gentleness .sunbeam {
  position: absolute; top: 5%; left: 30%; width: 20px; height: 200px;
  background: linear-gradient(180deg, rgba(255,230,150,0.6) 0%, transparent 100%);
  border-radius: 10%;
  transform: rotate(-15deg);
  animation: fog-sunbeam 8s ease-in-out infinite alternate;
}
.scn-forest-orlando-gentleness .leaf {
  position: absolute; top: 10%; left: 60%; width: 12px; height: 8px;
  background: #7a9a4a;
  border-radius: 50% 0 50% 0;
  animation: fog-leaf 10s linear infinite;
}
@keyframes fog-sky {
  0% { opacity: 0.8; }
  50% { opacity: 1; }
  100% { opacity: 0.85; }
}
@keyframes fog-trees {
  0% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-3px) scale(1.02); }
  100% { transform: translateY(0) scale(1); }
}
@keyframes fog-figure {
  0% { transform: translateX(0) translateY(0) rotate(0deg); }
  50% { transform: translateX(4px) translateY(-2px) rotate(2deg); }
  100% { transform: translateX(0) translateY(0) rotate(0deg); }
}
@keyframes fog-arm {
  0% { transform: rotate(-30deg) scaleX(1); }
  50% { transform: rotate(10deg) scaleX(0.9); }
  100% { transform: rotate(-30deg) scaleX(1); }
}
@keyframes fog-sunbeam {
  0% { transform: rotate(-20deg) scaleY(0.8); opacity: 0.6; }
  50% { transform: rotate(0deg) scaleY(1); opacity: 1; }
  100% { transform: rotate(-20deg) scaleY(0.8); opacity: 0.6; }
}
@keyframes fog-leaf {
  0% { transform: translateY(0) rotate(0deg); opacity: 0.8; }
  25% { transform: translateY(20px) translateX(10px) rotate(45deg); opacity: 0.6; }
  50% { transform: translateY(40px) translateX(20px) rotate(90deg); opacity: 0.4; }
  75% { transform: translateY(60px) translateX(30px) rotate(135deg); opacity: 0.2; }
  100% { transform: translateY(80px) translateX(40px) rotate(180deg); opacity: 0; }
}

.scn-forest-duke-senior-welcome {
  background: 
    linear-gradient(180deg, #fdebd0 0%, #d5b89a 50%, #7a6a4a 100%),
    radial-gradient(ellipse at 50% 80%, #e0be80 0%, transparent 60%);
}
.scn-forest-duke-senior-welcome .sky-bg {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #f7dc6f 0%, #f0c27a 100%);
  animation: fdw-sky 15s ease-in-out infinite alternate;
}
.scn-forest-duke-senior-welcome .trees-bg {
  position: absolute; bottom: 30%; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #5a7a3a 0%, #3a5a2a 100%);
  border-radius: 30% 40% 0 0;
  box-shadow: inset 0 6px 15px rgba(0,0,0,0.4);
  animation: fdw-trees 20s ease-in-out infinite alternate;
}
.scn-forest-duke-senior-welcome .clearing {
  position: absolute; bottom: 0; left: 10%; right: 10%; height: 30%;
  background: linear-gradient(180deg, #7a6a3a 0%, #5a4a2a 100%);
  border-radius: 20% 20% 0 0;
}
.scn-forest-duke-senior-welcome .campfire {
  position: absolute; bottom: 15%; left: 50%; width: 40px; height: 40px;
  background: radial-gradient(circle at 50% 100%, #e67e22 0%, #d35400 50%, #8a4a1a 100%);
  border-radius: 50%;
  transform: translateX(-50%);
  box-shadow: 0 0 30px 10px rgba(230,126,34,0.5);
  animation: fdw-fire 2s ease-in-out infinite alternate;
}
.scn-forest-duke-senior-welcome .figure-duke {
  position: absolute; bottom: 18%; left: 35%; width: 35px; height: 70px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: fdw-bow 5s ease-in-out infinite alternate;
}
.scn-forest-duke-senior-welcome .figure-orlando {
  position: absolute; bottom: 18%; left: 55%; width: 35px; height: 75px;
  background: linear-gradient(180deg, #2a3a1a 0%, #0a1a00 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: fdw-bow 5s ease-in-out infinite alternate-reverse;
  animation-delay: -2.5s;
}
.scn-forest-duke-senior-welcome .sparks {
  position: absolute; bottom: 20%; left: 50%; width: 4px; height: 4px;
  background: #f39c12;
  border-radius: 50%;
  box-shadow: 0 0 6px 2px #f39c12;
  animation: fdw-sparks 3s ease-out infinite;
}
.scn-forest-duke-senior-welcome .smoke {
  position: absolute; bottom: 30%; left: 50%; width: 50px; height: 60px;
  background: radial-gradient(ellipse at 50% 100%, rgba(150,130,100,0.4) 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(12px);
  animation: fdw-smoke 8s ease-in-out infinite alternate;
}
@keyframes fdw-sky {
  0% { opacity: 0.9; }
  50% { opacity: 1; }
  100% { opacity: 0.85; }
}
@keyframes fdw-trees {
  0% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-4px) scale(1.01); }
  100% { transform: translateY(0) scale(1); }
}
@keyframes fdw-fire {
  0% { transform: translateX(-50%) scale(1); opacity: 0.9; box-shadow: 0 0 20px 8px rgba(230,126,34,0.4); }
  50% { transform: translateX(-50%) scale(1.1); opacity: 1; box-shadow: 0 0 40px 15px rgba(230,126,34,0.7); }
  100% { transform: translateX(-50%) scale(0.95); opacity: 0.9; box-shadow: 0 0 25px 10px rgba(230,126,34,0.5); }
}
@keyframes fdw-bow {
  0% { transform: rotate(0deg) translateY(0); }
  50% { transform: rotate(10deg) translateY(-3px); }
  100% { transform: rotate(0deg) translateY(0); }
}
@keyframes fdw-sparks {
  0% { transform: translateY(0) scale(1); opacity: 1; }
  50% { transform: translateY(-30px) translateX(10px) scale(1.5); opacity: 0.6; }
  100% { transform: translateY(-60px) translateX(20px) scale(0); opacity: 0; }
}
@keyframes fdw-smoke {
  0% { transform: translateY(0) scale(1) rotate(0deg); opacity: 0.5; }
  50% { transform: translateY(-10px) scale(1.2) rotate(5deg); opacity: 0.3; }
  100% { transform: translateY(-20px) scale(0.8) rotate(-5deg); opacity: 0.1; }
}

.scn-forest-seven-ages {
  background: 
    linear-gradient(180deg, #d7ccc8 0%, #8d6e63 100%),
    radial-gradient(ellipse at 50% 20%, #efebe9 0%, transparent 70%);
}
.scn-forest-seven-ages .curtain-left {
  position: absolute; top: 0; left: 0; width: 30%; height: 100%;
  background: linear-gradient(90deg, #6a4a3a 0%, #4a2a1a 100%);
  border-radius: 0 20% 20% 0;
  box-shadow: 4px 0 10px rgba(0,0,0,0.3);
  animation: fsa-curtain 10s ease-in-out infinite alternate;
}
.scn-forest-seven-ages .curtain-right {
  position: absolute; top: 0; right: 0; width: 30%; height: 100%;
  background: linear-gradient(90deg, #4a2a1a 0%, #6a4a3a 100%);
  border-radius: 20% 0 0 20%;
  box-shadow: -4px 0 10px rgba(0,0,0,0.3);
  animation: fsa-curtain 10s ease-in-out infinite alternate-reverse;
}
.scn-forest-seven-ages .stage-floor {
  position: absolute; bottom: 0; left: 10%; right: 10%; height: 25%;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 20% 20% 0 0;
}
.scn-forest-seven-ages .central-figure {
  position: absolute; bottom: 25%; left: 50%; width: 50px; height: 100px;
  background: linear-gradient(180deg, #2a1a0a 0%, #0a0000 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: translateX(-50%);
  animation: fsa-figure 8s ease-in-out infinite;
}
.scn-forest-seven-ages .small-figures {
  position: absolute; bottom: 20%; left: 20%; width: 20px; height: 40px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 40px 0 0 0 #4a3a2a, 80px 0 0 0 #4a3a2a; /* two more figures */
  animation: fsa-small 12s ease-in-out infinite alternate;
}
.scn-forest-seven-ages .spotlight {
  position: absolute; top: 0; left: 35%; width: 30%; height: 100%;
  background: linear-gradient(180deg, rgba(255,235,150,0.3) 0%, transparent 70%);
  border-radius: 50% 50% 0 0;
  animation: fsa-spotlight 6s ease-in-out infinite alternate;
}
@keyframes fsa-curtain {
  0% { transform: translateX(0); }
  50% { transform: translateX(10px); }
  100% { transform: translateX(0); }
}
@keyframes fsa-figure {
  0% { transform: translateX(-50%) translateY(0) scale(1); }
  25% { transform: translateX(-50%) translateY(-5px) scale(1.05); }
  50% { transform: translateX(-45%) translateY(-3px) scale(0.95); }
  75% { transform: translateX(-55%) translateY(-2px) scale(1.02); }
  100% { transform: translateX(-50%) translateY(0) scale(1); }
}
@keyframes fsa-small {
  0% { opacity: 0.3; transform: scale(0.8); }
  50% { opacity: 0.7; transform: scale(1); }
  100% { opacity: 0.3; transform: scale(0.8); }
}
@keyframes fsa-spotlight {
  0% { transform: scaleX(0.8) scaleY(0.9); opacity: 0.4; }
  50% { transform: scaleX(1.2) scaleY(1.1); opacity: 0.7; }
  100% { transform: scaleX(0.8) scaleY(0.9); opacity: 0.4; }
}

.scn-forest-orlando-adam-brought {
  background: 
    linear-gradient(180deg, #f4d03f 0%, #d4b36a 40%, #8a7a4a 100%),
    radial-gradient(ellipse at 60% 70%, #e8c46a 0%, transparent 60%);
}
.scn-forest-orlando-adam-brought .sky-over {
  position: absolute; inset: 0 0 55% 0;
  background: linear-gradient(180deg, #fef0c0 0%, #fadb8a 100%);
  animation: fab-sky 12s ease-in-out infinite alternate;
}
.scn-forest-orlando-adam-brought .trees-frame {
  position: absolute; bottom: 30%; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #5a8a3a 0%, #3a6a2a 100%);
  border-radius: 30% 40% 0 0;
  box-shadow: inset 0 5px 12px rgba(0,0,0,0.3);
  animation: fab-trees 18s ease-in-out infinite alternate;
}
.scn-forest-orlando-adam-brought .ground-path {
  position: absolute; bottom: 0; left: 5%; right: 5%; height: 30%;
  background: linear-gradient(180deg, #8a6a3a 0%, #5a4a2a 100%);
  border-radius: 25% 25% 0 0;
}
.scn-forest-orlando-adam-brought .orlando-figure {
  position: absolute; bottom: 20%; left: 40%; width: 45px; height: 90px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: fab-lower 8s ease-in-out infinite;
}
.scn-forest-orlando-adam-brought .adam-elder {
  position: absolute; bottom: 20%; left: 45%; width: 35px; height: 60px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: fab-sway 6s ease-in-out infinite alternate;
}
.scn-forest-orlando-adam-brought .rock-rest {
  position: absolute; bottom: 18%; left: 50%; width: 30px; height: 20px;
  background: #7a6a4a;
  border-radius: 30% 30% 20% 20%;
  box-shadow: inset 0 -4px 6px rgba(0,0,0,0.4);
  animation: fab-settle 10s ease-in-out infinite;
}
.scn-forest-orlando-adam-brought .falling-leaf {
  position: absolute; top: 10%; left: 30%; width: 10px; height: 6px;
  background: #8a9a4a;
  border-radius: 50% 0 50% 0;
  animation: fab-leaves 12s linear infinite;
  animation-delay: -4s;
}
@keyframes fab-sky {
  0% { opacity: 0.85; }
  50% { opacity: 1; }
  100% { opacity: 0.9; }
}
@keyframes fab-trees {
  0% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-4px) scale(1.02); }
  100% { transform: translateY(0) scale(1); }
}
@keyframes fab-lower {
  0% { transform: translateX(0) translateY(0) rotate(5deg); }
  25% { transform: translateX(5px) translateY(-3px) rotate(2deg); }
  50% { transform: translateX(10px) translateY(0) rotate(-2deg); }
  75% { transform: translateX(5px) translateY(2px) rotate(0deg); }
  100% { transform: translateX(0) translateY(0) rotate(5deg); }
}
@keyframes fab-sway {
  0% { transform: rotate(0deg) translateY(0); }
  50% { transform: rotate(5deg) translateY(-2px); }
  100% { transform: rotate(0deg) translateY(0); }
}
@keyframes fab-settle {
  0% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-2px) scale(1.02); }
  100% { transform: translateY(0) scale(1); }
}
@keyframes fab-leaves {
  0% { transform: translateY(0) rotate(0deg); opacity: 0.8; }
  25% { transform: translateY(20px) translateX(10px) rotate(20deg); opacity: 0.6; }
  50% { transform: translateY(40px) translateX(20px) rotate(40deg); opacity: 0.4; }
  75% { transform: translateY(60px) translateX(30px) rotate(60deg); opacity: 0.2; }
  100% { transform: translateY(80px) translateX(40px) rotate(80deg); opacity: 0; }
}

/* forest-of-arden-rosalind-touchstone - funny, sunlit */
.scn-fa1 { background: linear-gradient(180deg, #b8d8e8 0%, #f5e6c0 60%, #d4b878 100%), radial-gradient(ellipse at 70% 20%, #fff2d0 0%, transparent 40%); }
.scn-fa1 .sky    { position:absolute; inset:0 0 55% 0; background: linear-gradient(180deg, #cbe4f0 0%, #e6d8b0 100%); animation: fa1-sky 16s ease-in-out infinite alternate; }
.scn-fa1 .sun    { position:absolute; top:8%; left:65%; width:60px; height:60px; background: radial-gradient(circle, #fff8e0 0%, #f5d88e 60%, transparent 80%); border-radius:50%; box-shadow: 0 0 40px 20px rgba(245,216,142,.6); animation: fa1-sun 8s ease-in-out infinite; }
.scn-fa1 .trees-bg{ position:absolute; bottom:40%; left:0; right:0; height:30%; background: linear-gradient(180deg, #4a7a4a 0%, #2a5a2a 100%); border-radius:30% 70% 0 0; clip-path: polygon(0% 0%, 15% 0%, 20% 100%, 35% 100%, 40% 0%, 55% 0%, 60% 100%, 75% 100%, 80% 0%, 100% 0%, 100% 100%, 0% 100%); animation: fa1-trees 20s ease-in-out infinite alternate; }
.scn-fa1 .trees-fg{ position:absolute; bottom:30%; left:0; right:0; height:40%; background: linear-gradient(180deg, #3a6a3a 0%, #1a4a1a 100%); border-radius:50% 50% 0 0; clip-path: polygon(10% 0%, 25% 0%, 30% 100%, 45% 100%, 50% 0%, 65% 0%, 70% 100%, 85% 100%, 90% 0%, 100% 0%); filter: blur(2px); animation: fa1-trees 25s ease-in-out infinite alternate-reverse; }
.scn-fa1 .ground{ position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #6b8a3a 0%, #4a6a1a 100%); border-radius:20% 20% 0 0; }
.scn-fa1 .figure-ros { position:absolute; bottom:18%; left:20%; width:20px; height:40px; background: linear-gradient(180deg, #f0d8a0 0%, #c8a870 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: fa1-walk 4s ease-in-out infinite; }
.scn-fa1 .figure-cel { position:absolute; bottom:15%; left:38%; width:18px; height:38px; background: linear-gradient(180deg, #e8c89a 0%, #b89868 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: fa1-walk 4.5s ease-in-out infinite 1s; }
.scn-fa1 .figure-tou { position:absolute; bottom:20%; left:55%; width:22px; height:36px; background: linear-gradient(180deg, #b8a080 0%, #8a6a50 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: fa1-stagger 6s ease-in-out infinite; }
.scn-fa1 .leaf { position:absolute; width:10px; height:8px; background: radial-gradient(circle, #d4a840 0%, #b08030 100%); border-radius:50%; filter: blur(1px); }
.scn-fa1 .leaf-a { top:30%; left:10%; animation: fa1-leaf 10s linear infinite; }
.scn-fa1 .leaf-b { top:40%; left:70%; animation: fa1-leaf 14s linear infinite 3s; }
@keyframes fa1-sky   { 0% { opacity:.85 } 50% { opacity:1 } 100% { opacity:.9 } }
@keyframes fa1-sun   { 0% { transform: scale(1) translate(0,0) } 50% { transform: scale(1.05) translate(5px,-3px) } 100% { transform: scale(1) translate(0,0) } }
@keyframes fa1-trees { 0% { transform: translateY(0) } 50% { transform: translateY(-4px) } 100% { transform: translateY(0) } }
@keyframes fa1-walk  { 0% { transform: translateX(0) rotate(-2deg) } 25% { transform: translateX(8px) rotate(2deg) } 50% { transform: translateX(16px) rotate(-2deg) } 75% { transform: translateX(24px) rotate(2deg) } 100% { transform: translateX(32px) rotate(0deg) } }
@keyframes fa1-stagger { 0%,100% { transform: rotate(-5deg) translateX(0) } 25% { transform: rotate(3deg) translateX(4px) } 50% { transform: rotate(-5deg) translateX(8px) } 75% { transform: rotate(3deg) translateX(4px) } }
@keyframes fa1-leaf { 0% { transform: translateY(0) rotate(0deg) opacity:1 } 50% { transform: translateY(-30px) rotate(180deg) opacity:.6 } 100% { transform: translateY(-60px) rotate(360deg) opacity:0 } }

/* silvius-corin-discourse - warm, sunlit */
.scn-sc2 { background: linear-gradient(180deg, #f9e8c8 0%, #e6c898 50%, #c8a868 100%), radial-gradient(ellipse at 40% 30%, #ffeec0 0%, transparent 50%); }
.scn-sc2 .sky       { position:absolute; inset:0 0 45% 0; background: linear-gradient(180deg, #ffedc0 0%, #f5d898 100%); animation: sc2-glow 10s ease-in-out infinite alternate; }
.scn-sc2 .light-rays{ position:absolute; top:5%; left:15%; width:120px; height:80px; background: linear-gradient(45deg, transparent 0%, rgba(255,238,180,.4) 40%, transparent 70%); border-radius:50%; filter: blur(10px); animation: sc2-rays 12s ease-in-out infinite; }
.scn-sc2 .tree-trunk{ position:absolute; bottom:35%; left:30%; width:30px; height:50%; background: linear-gradient(180deg, #8a6a4a 0%, #5a3a2a 100%); border-radius:10% 10% 0 0; box-shadow: inset -4px 0 8px rgba(0,0,0,.3); animation: sc2-breathe 20s ease-in-out infinite; }
.scn-sc2 .ground    { position:absolute; bottom:0; left:0; right:0; height:35%; background: linear-gradient(180deg, #b89a6a 0%, #8a7a4a 100%); border-radius:30% 0 0 0; }
.scn-sc2 .figure-corin { position:absolute; bottom:25%; left:40%; width:22px; height:42px; background: linear-gradient(180deg, #c8a880 0%, #9a7a5a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: sc2-speak 6s ease-in-out infinite; }
.scn-sc2 .figure-silv { position:absolute; bottom:22%; left:55%; width:20px; height:40px; background: linear-gradient(180deg, #d8b090 0%, #a8886a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: sc2-listen 6s ease-in-out infinite 1s; }
.scn-sc2 .blossom   { position:absolute; width:8px; height:8px; background: radial-gradient(circle, #ffe0a0 0%, #e8b868 100%); border-radius:50%; filter: blur(1px); }
.scn-sc2 .blossom-1 { top:50%; left:20%; animation: sc2-flower 15s linear infinite; }
.scn-sc2 .blossom-2 { top:55%; left:70%; animation: sc2-flower 18s linear infinite 5s; }
@keyframes sc2-glow    { 0% { opacity:.9 } 50% { opacity:1 } 100% { opacity:.85 } }
@keyframes sc2-rays    { 0% { transform: rotate(0deg) scale(1) } 50% { transform: rotate(10deg) scale(1.05) } 100% { transform: rotate(0deg) scale(1) } }
@keyframes sc2-breathe { 0%,100% { transform: scale(1,1) } 50% { transform: scale(1,0.98) } }
@keyframes sc2-speak   { 0%,100% { transform: translateY(0) rotate(0deg) } 25% { transform: translateY(-3px) rotate(5deg) } 50% { transform: translateY(0) rotate(-5deg) } 75% { transform: translateY(-2px) rotate(2deg) } }
@keyframes sc2-listen  { 0%,100% { transform: translateY(0) } 25% { transform: translateY(-2px) } 75% { transform: translateY(2px) } }
@keyframes sc2-flower  { 0% { transform: translateY(0) rotate(0deg) opacity:.6 } 50% { transform: translateY(-20px) rotate(90deg) opacity:1 } 100% { transform: translateY(-40px) rotate(180deg) opacity:.3 } }

/* forest-silvius-wooing - warm, sunlit */
.scn-sw3 { background: linear-gradient(180deg, #f5e0c0 0%, #e8c898 50%, #d0a868 100%), radial-gradient(ellipse at 60% 20%, #fff0c0 0%, transparent 40%); }
.scn-sw3 .sky          { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #ffe8c0 0%, #f0d098 100%); animation: sw3-sky 14s ease-in-out infinite alternate; }
.scn-sw3 .sun-glow     { position:absolute; top:10%; left:70%; width:80px; height:80px; background: radial-gradient(circle, #fff4d0 0%, #f8d88a 50%, transparent 80%); border-radius:50%; box-shadow: 0 0 60px 30px rgba(248,216,138,.5); animation: sw3-pulse 12s ease-in-out infinite; }
.scn-sw3 .branches     { position:absolute; top:0; left:0; right:0; height:35%; background: linear-gradient(180deg, #6a4a2a 0%, #4a2a1a 100%); clip-path: polygon(0% 0%, 20% 0%, 30% 100%, 40% 0%, 60% 0%, 70% 100%, 80% 0%, 100% 0%, 100% 100%, 0% 100%); animation: sw3-branch 20s ease-in-out infinite alternate; }
.scn-sw3 .ground       { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #b89a5a 0%, #8a7a3a 100%); border-radius:40% 0 0 0; }
.scn-sw3 .figure-silv-kneel { position:absolute; bottom:22%; left:30%; width:22px; height:30px; background: linear-gradient(180deg, #d8b090 0%, #a8886a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: sw3-kneel 8s ease-in-out infinite; }
.scn-sw3 .figure-phebe { position:absolute; bottom:26%; left:50%; width:20px; height:44px; background: linear-gradient(180deg, #e8c8a0 0%, #c8a880 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: sw3-gesture 9s ease-in-out infinite; }
.scn-sw3 .flower.gift  { position:absolute; bottom:33%; left:35%; width:10px; height:14px; background: radial-gradient(circle at 50% 30%, #ffd8a0 0%, #e8a860 60%, transparent 70%); border-radius:50% 50% 30% 30%; transform: rotate(-30deg); animation: sw3-offer 6s ease-in-out infinite; }
.scn-sw3 .grass.tuft   { position:absolute; bottom:30%; left:55%; width:15px; height:10px; background: linear-gradient(180deg, #7a9a4a 0%, #5a7a2a 100%); border-radius:50%; animation: sw3-sway 10s ease-in-out infinite alternate; }
@keyframes sw3-sky      { 0% { opacity:.9 } 50% { opacity:1 } 100% { opacity:.95 } }
@keyframes sw3-pulse    { 0% { transform: scale(1) } 50% { transform: scale(1.06) } 100% { transform: scale(1) } }
@keyframes sw3-branch   { 0% { transform: rotate(0deg) } 50% { transform: rotate(2deg) } 100% { transform: rotate(0deg) } }
@keyframes sw3-kneel    { 0%,100% { transform: translateY(0) rotate(0deg) } 25% { transform: translateY(-3px) rotate(5deg) } 50% { transform: translateY(0) rotate(-3deg) } 75% { transform: translateY(-2px) rotate(2deg) } }
@keyframes sw3-gesture  { 0%,100% { transform: translateX(0) rotate(0deg) } 25% { transform: translateX(4px) rotate(5deg) } 50% { transform: translateX(-2px) rotate(-3deg) } 75% { transform: translateX(2px) rotate(2deg) } }
@keyframes sw3-offer    { 0%,100% { transform: rotate(-30deg) translateY(0) } 50% { transform: rotate(-20deg) translateY(-4px) } }
@keyframes sw3-sway     { 0% { transform: rotate(-3deg) } 50% { transform: rotate(3deg) } 100% { transform: rotate(-3deg) } }

/* forest-corin-silvius - calm, sunlit */
.scn-cs4 { background: linear-gradient(180deg, #e0e8e0 0%, #d0d8b0 40%, #c0c898 100%), radial-gradient(ellipse at 30% 40%, #f0f0d0 0%, transparent 50%); }
.scn-cs4 .sky       { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #e0f0e0 0%, #d0d8b0 100%); animation: cs4-haze 30s ease-in-out infinite alternate; }
.scn-cs4 .canopy    { position:absolute; top:0; left:0; right:0; height:25%; background: linear-gradient(180deg, #5a8a4a 0%, #3a6a3a 100%); clip-path: polygon(0% 0%, 10% 100%, 20% 0%, 35% 100%, 50% 0%, 65% 100%, 80% 0%, 100% 100%, 100% 0%); animation: cs4-canopy 40s ease-in-out infinite alternate-reverse; filter: blur(3px); }
.scn-cs4 .log       { position:absolute; bottom:28%; left:35%; width:120px; height:16px; background: linear-gradient(180deg, #7a5a3a 0%, #5a3a2a 100%); border-radius:50% 50% 20% 20%; transform: rotate(-5deg); box-shadow: 0 4px 8px rgba(0,0,0,.2); animation: cs4-log-sway 22s ease-in-out infinite; }
.scn-cs4 .ground    { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #a0b86a 0%, #80984a 100%); border-radius:30% 30% 0 0; }
.scn-cs4 .figure-corin-sit { position:absolute; bottom:24%; left:38%; width:22px; height:30px; background: linear-gradient(180deg, #b8a080 0%, #a0886a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: cs4-sit 9s ease-in-out infinite; }
.scn-cs4 .figure-silv-sit  { position:absolute; bottom:22%; left:55%; width:20px; height:28px; background: linear-gradient(180deg, #c8b090 0%, #a89070 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: cs4-sit 9s ease-in-out infinite 1.5s; }
.scn-cs4 .drift-leaf { position:absolute; width:12px; height:8px; background: radial-gradient(circle, #c8a040 0%, #a08030 100%); border-radius:50%; filter: blur(2px); }
.scn-cs4 .dr-a { top:35%; left:15%; animation: cs4-drift 60s linear infinite; }
.scn-cs4 .dr-b { top:45%; left:70%; animation: cs4-drift 70s linear infinite 15s; }
@keyframes cs4-haze      { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.85 } }
@keyframes cs4-canopy    { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes cs4-log-sway  { 0%,100% { transform: rotate(-5deg) } 50% { transform: rotate(-3deg) } }
@keyframes cs4-sit       { 0%,100% { transform: translateY(0) rotate(0deg) } 25% { transform: translateY(-1px) rotate(2deg) } 50% { transform: translateY(0) rotate(0deg) } 75% { transform: translateY(1px) rotate(-2deg) } }
@keyframes cs4-drift     { 0% { transform: translateX(0) translateY(0) rotate(0deg) opacity:.6 } 50% { transform: translateX(15vw) translateY(-10px) rotate(180deg) opacity:.3 } 100% { transform: translateX(30vw) translateY(0) rotate(360deg) opacity:0 } }

.scn-forest-exit-martext {
  background:
    linear-gradient(180deg, #807a78 0%, #5a5654 30%, #3f3b39 70%, #2e2b29 100%),
    radial-gradient(ellipse at 40% 60%, #6e6a65 0%, transparent 50%);
}
.scn-forest-exit-martext .overcast-sky {
  position:absolute; inset:0 0 45% 0;
  background: linear-gradient(180deg, #8c8884 0%, #6a6662 100%);
  animation: fe-sky 10s ease-in-out infinite alternate;
}
.scn-forest-exit-martext .woods-bg {
  position:absolute; bottom:30%; left:0; right:0; height:30%;
  background: linear-gradient(180deg, #3a3a35 0%, #1c1a18 100%);
  border-radius: 40% 60% 0 0 / 60% 70% 0 0;
  animation: fe-woods 20s ease-in-out infinite alternate;
}
.scn-forest-exit-martext .path {
  position:absolute; bottom:20%; left:45%; width:12%; height:40%;
  background: linear-gradient(180deg, #6b675f 0%, #4f4a42 100%);
  border-radius: 30% 30% 0 0;
  transform: skewX(-5deg);
  animation: fe-path 6s ease-in-out infinite;
}
.scn-forest-exit-martext .tree {
  position:absolute; bottom:30%; width:30px; height:90px;
  background: linear-gradient(180deg, #2b2824 0%, #151311 100%);
  border-radius: 20% 20% 10% 10%;
}
.scn-forest-exit-martext .tree-left { left:20%; transform: rotate(-3deg); animation: fe-tree-l 8s ease-in-out infinite; }
.scn-forest-exit-martext .tree-right { right:22%; transform: rotate(4deg); animation: fe-tree-r 9s ease-in-out infinite; }
.scn-forest-exit-martext .figure {
  position:absolute; bottom:22%; width:16px; height:38px;
  background: linear-gradient(180deg, #2a2722 0%, #11100e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
}
.scn-forest-exit-martext .touchstone {
  left:48%; width:20px; height:44px;
  animation: fe-walk-big 5s ease-in-out infinite;
}
.scn-forest-exit-martext .audrey {
  left:36%; width:14px; height:36px;
  animation: fe-walk-small 5s ease-in-out infinite reverse;
}
.scn-forest-exit-martext .hat {
  position:absolute; bottom:62%; left:49%; width:18px; height:6px;
  background: #524c44;
  border-radius: 50% 50% 20% 20%;
  animation: fe-hat-bob 5s ease-in-out infinite;
}
.scn-forest-exit-martext .bird {
  position:absolute; top:18%; left:70%; width:12px; height:8px;
  background: #4a463f;
  border-radius: 50% 50% 40% 40%;
  filter: blur(1px);
  animation: fe-bird 14s linear infinite;
}
@keyframes fe-sky { 0% { opacity:.7 } 50% { opacity:.9 } 100% { opacity:.6 } }
@keyframes fe-woods { 0% { transform: translateY(0) scaleY(1) } 50% { transform: translateY(-6px) scaleY(1.02) } 100% { transform: translateY(0) scaleY(1) } }
@keyframes fe-path { 0%,100% { transform: skewX(-5deg) translateX(0) } 50% { transform: skewX(-2deg) translateX(3px) } }
@keyframes fe-tree-l { 0%,100% { transform: rotate(-3deg) } 50% { transform: rotate(-5deg) translateX(1px) } }
@keyframes fe-tree-r { 0%,100% { transform: rotate(4deg) } 50% { transform: rotate(6deg) translateX(-1px) } }
@keyframes fe-walk-big { 0% { transform: translateX(0) translateY(0) rotate(0) } 25% { transform: translateX(8px) translateY(-2px) rotate(2deg) } 50% { transform: translateX(16px) translateY(0) rotate(0) } 75% { transform: translateX(8px) translateY(-2px) rotate(-2deg) } 100% { transform: translateX(0) translateY(0) rotate(0) } }
@keyframes fe-walk-small { 0% { transform: translateX(0) translateY(0) rotate(0) } 25% { transform: translateX(-5px) translateY(-1px) rotate(-1deg) } 50% { transform: translateX(-10px) translateY(0) rotate(0) } 75% { transform: translateX(-5px) translateY(-1px) rotate(1deg) } 100% { transform: translateX(0) translateY(0) rotate(0) } }
@keyframes fe-hat-bob { 0%,100% { transform: translateY(0) rotate(-5deg) } 50% { transform: translateY(-4px) rotate(5deg) } }
@keyframes fe-bird { 0% { transform: translateX(-30px) } 100% { transform: translateX(120vw) } }

.scn-rosalind-celia-gossip {
  background:
    linear-gradient(180deg, #f9eac8 0%, #f5d49c 40%, #dbb57a 70%, #b8915e 100%),
    radial-gradient(ellipse at 50% 30%, #fff5d0 0%, transparent 60%);
}
.scn-rosalind-celia-gossip .sun-sky {
  position:absolute; inset:0 0 50% 0;
  background: linear-gradient(180deg, #fcf2d6 0%, #f6e3b5 60%, #e8cc8e 100%);
  animation: rcg-sky 12s ease-in-out infinite alternate;
}
.scn-rosalind-celia-gossip .glade-bg {
  position:absolute; bottom:25%; left:0; right:0; height:35%;
  background: linear-gradient(180deg, #a7c4a0 0%, #5f8a5a 100%);
  border-radius: 30% 70% 0 0 / 50% 60% 0 0;
  animation: rcg-glade 18s ease-in-out infinite alternate;
}
.scn-rosalind-celia-gossip .glade-floor {
  position:absolute; bottom:0; left:0; right:0; height:30%;
  background: linear-gradient(180deg, #7da676 0%, #4e7548 100%);
  border-radius: 10% 10% 0 0;
}
.scn-rosalind-celia-gossip .tree-trunk {
  position:absolute; bottom:25%; left:22%; width:20px; height:80px;
  background: linear-gradient(180deg, #6a4e3a 0%, #3a2e1e 100%);
  border-radius: 10%;
  animation: rcg-trunk 6s ease-in-out infinite;
}
.scn-rosalind-celia-gossip .figure {
  position:absolute; bottom:24%; width:16px; height:40px;
  background: linear-gradient(180deg, #f0d5a8 0%, #c6a97a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
}
.scn-rosalind-celia-gossip .rosalind { left:42%; animation: rcg-ros 5s ease-in-out infinite; }
.scn-rosalind-celia-gossip .celia { left:54%; animation: rcg-cel 5s ease-in-out infinite reverse; }
.scn-rosalind-celia-gossip .pollen {
  position:absolute; top:30%; left:10%; width:4px; height:4px;
  background: #fce6a0;
  border-radius: 50%;
  filter: blur(1px);
  animation: rcg-pollen 8s linear infinite;
}
.scn-rosalind-celia-gossip .butterfly {
  position:absolute; top:35%; left:55%; width:10px; height:8px;
  background: #e8b84a;
  border-radius: 50% 50% 30% 30%;
  filter: blur(1.5px);
  animation: rcg-bfly 12s ease-in-out infinite alternate;
}
@keyframes rcg-sky { 0% { opacity:.75 } 50% { opacity:1 } 100% { opacity:.8 } }
@keyframes rcg-glade { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.03) translateY(-4px) } 100% { transform: scaleY(1) } }
@keyframes rcg-trunk { 0%,100% { transform: rotate(0) } 50% { transform: rotate(1deg) } }
@keyframes rcg-ros { 0% { transform: translateX(0) rotate(0) } 25% { transform: translateX(4px) rotate(2deg) } 50% { transform: translateX(0) rotate(0) } 75% { transform: translateX(-4px) rotate(-2deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes rcg-cel { 0% { transform: translateX(0) rotate(0) } 25% { transform: translateX(-4px) rotate(-1deg) } 50% { transform: translateX(0) rotate(0) } 75% { transform: translateX(4px) rotate(1deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes rcg-pollen { 0% { transform: translateY(0) } 100% { transform: translateY(-120px) } }
@keyframes rcg-bfly { 0% { transform: translate(0,0) rotate(-10deg) scaleX(1) } 50% { transform: translate(20px,-10px) rotate(10deg) scaleX(-1) } 100% { transform: translate(40px,0) rotate(0) scaleX(1) } }

.scn-corin-pageant-offer {
  background:
    linear-gradient(180deg, #f6e6b6 0%, #cce0b0 30%, #aac49a 70%, #6d9a6a 100%),
    radial-gradient(ellipse at 30% 60%, #e3f0c0 0%, transparent 50%);
}
.scn-corin-pageant-offer .pastoral-sky {
  position:absolute; inset:0 0 45% 0;
  background: linear-gradient(180deg, #f9edc4 0%, #f0dfa8 60%, #d6c48a 100%);
  animation: cpo-sky 14s ease-in-out infinite alternate;
}
.scn-corin-pageant-offer .hill-back {
  position:absolute; bottom:35%; left:-5%; right:0; height:25%;
  background: linear-gradient(180deg, #b4cfa8 0%, #7ba272 100%);
  border-radius: 50% 40% 0 0 / 70% 60% 0 0;
  animation: cpo-hill-b 18s ease-in-out infinite alternate;
}
.scn-corin-pageant-offer .hill-front {
  position:absolute; bottom:18%; left:0; right:-8%; height:30%;
  background: linear-gradient(180deg, #8db882 0%, #5a8a52 100%);
  border-radius: 60% 40% 0 0 / 80% 70% 0 0;
  animation: cpo-hill-f 22s ease-in-out infinite alternate;
}
.scn-corin-pageant-offer .corin {
  position:absolute; bottom:22%; left:38%; width:18px; height:44px;
  background: linear-gradient(180deg, #6a5e4a 0%, #3e3529 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cpo-corin 6s ease-in-out infinite;
}
.scn-corin-pageant-offer .shepherdess {
  position:absolute; bottom:24%; left:52%; width:16px; height:42px;
  background: linear-gradient(180deg, #f0cf9a 0%, #c6a87a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cpo-shepherdess 6s ease-in-out infinite reverse;
}
.scn-corin-pageant-offer .sheep {
  position:absolute; bottom:20%; left:30%; width:22px; height:16px;
  background: #e6dcc8;
  border-radius: 50% 50% 40% 40%;
  filter: blur(1px);
  animation: cpo-sheep 8s ease-in-out infinite;
}
.scn-corin-pageant-offer .crook {
  position:absolute; bottom:40%; left:40%; width:4px; height:30px;
  background: #5c4f36;
  border-radius: 2px;
  transform: rotate(20deg);
  animation: cpo-crook 6s ease-in-out infinite;
}
@keyframes cpo-sky { 0% { opacity:.7 } 50% { opacity:1 } 100% { opacity:.75 } }
@keyframes cpo-hill-b { 0% { transform: translateY(0) scaleY(1) } 50% { transform: translateY(-5px) scaleY(1.02) } 100% { transform: translateY(0) scaleY(1) } }
@keyframes cpo-hill-f { 0% { transform: translateY(0) scaleY(1) } 50% { transform: translateY(-3px) scaleY(1.01) } 100% { transform: translateY(0) scaleY(1) } }
@keyframes cpo-corin { 0% { transform: translateX(0) rotate(0) } 25% { transform: translateX(3px) rotate(3deg) } 50% { transform: translateX(0) rotate(0) } 75% { transform: translateX(-3px) rotate(-3deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes cpo-shepherdess { 0% { transform: translateX(0) rotate(0) } 25% { transform: translateX(-2px) rotate(-2deg) } 50% { transform: translateX(0) rotate(0) } 75% { transform: translateX(2px) rotate(2deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes cpo-sheep { 0%,100% { transform: translateX(0) translateY(0) } 50% { transform: translateX(5px) translateY(-3px) } }
@keyframes cpo-crook { 0%,100% { transform: rotate(20deg) } 50% { transform: rotate(15deg) } }

.scn-silvius-phebe-scorn {
  background:
    linear-gradient(180deg, #4a525a 0%, #3a4047 30%, #2d3238 60%, #1a1c20 100%),
    radial-gradient(ellipse at 50% 40%, #5b656f 0%, transparent 50%);
}
.scn-silvius-phebe-scorn .storm-sky {
  position:absolute; inset:0 0 50% 0;
  background: linear-gradient(180deg, #6a7580 0%, #4a525a 60%, #384049 100%);
  animation: sps-sky 8s ease-in-out infinite alternate;
}
.scn-silvius-phebe-scorn .barren-ground {
  position:absolute; bottom:0; left:0; right:0; height:55%;
  background: linear-gradient(180deg, #41474d 0%, #262a2e 100%);
  border-radius: 20% 20% 0 0;
  animation: sps-ground 12s ease-in-out infinite alternate;
}
.scn-silvius-phebe-scorn .silvius {
  position:absolute; bottom:25%; left:40%; width:16px; height:40px;
  background: linear-gradient(180deg, #3d3f42 0%, #212327 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: sps-silvius 4s ease-in-out infinite;
}
.scn-silvius-phebe-scorn .phebe {
  position:absolute; bottom:28%; left:54%; width:16px; height:42px;
  background: linear-gradient(180deg, #4e4a55 0%, #2d2a32 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: sps-phebe 4s ease-in-out infinite reverse;
}
.scn-silvius-phebe-scorn .phebe-arm {
  position:absolute; bottom:60%; left:58%; width:4px; height:18px;
  background: #403a45;
  border-radius: 2px;
  transform: rotate(-30deg);
  transform-origin: bottom left;
  animation: sps-arm 3s ease-in-out infinite;
}
.scn-silvius-phebe-scorn .tear {
  position:absolute; bottom:35%; left:45%; width:3px; height:4px;
  background: #8a9aaf;
  border-radius: 50%;
  animation: sps-tear 2s ease-in-out infinite;
}
@keyframes sps-sky { 0% { opacity:.6 } 50% { opacity:1 } 100% { opacity:.7 } }
@keyframes sps-ground { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.02) } 100% { transform: scaleY(1) } }
@keyframes sps-silvius { 0% { transform: translateX(0) translateY(0) rotate(0) } 33% { transform: translateX(-3px) translateY(2px) rotate(5deg) } 66% { transform: translateX(0) translateY(0) rotate(-2deg) } 100% { transform: translateX(0) translateY(0) rotate(0) } }
@keyframes sps-phebe { 0% { transform: translateX(0) rotate(0) } 33% { transform: translateX(2px) rotate(-3deg) } 66% { transform: translateX(0) rotate(0) } 100% { transform: translateX(0) rotate(0) } }
@keyframes sps-arm { 0%,100% { transform: rotate(-30deg) } 50% { transform: rotate(-45deg) } }
@keyframes sps-tear { 0% { transform: translateY(0) opacity:.8 } 50% { transform: translateY(8px) opacity:.4 } 100% { transform: translateY(16px) opacity:0 } }

.scn-rosalind-waits-orlando {
  background: 
    linear-gradient(180deg, #b8d4f0 0%, #f5e6c8 50%, #ffe0a0 100%),
    radial-gradient(ellipse at 60% 20%, #fff8e0 0%, transparent 60%);
}
.scn-rosalind-waits-orlando .sky {
  position:absolute; inset:0 0 35% 0;
  background: linear-gradient(180deg, #d6e8ff 0%, transparent 100%);
  animation: rwo-sky 8s ease-in-out infinite alternate;
}
.scn-rosalind-waits-orlando .sunbeam-a {
  position:absolute; top:10%; left:25%; width:80%; height:60%;
  background: linear-gradient(135deg, rgba(255,255,200,0.25) 0%, transparent 70%);
  clip-path: polygon(0 0, 100% 0, 80% 100%, 10% 100%);
  animation: rwo-beam 12s ease-in-out infinite alternate;
}
.scn-rosalind-waits-orlando .sunbeam-b {
  position:absolute; top:15%; left:15%; width:50%; height:70%;
  background: linear-gradient(160deg, rgba(255,240,180,0.2) 0%, transparent 65%);
  clip-path: polygon(20% 0, 100% 0, 70% 100%, 0 100%);
  animation: rwo-beam 14s ease-in-out infinite alternate-reverse;
}
.scn-rosalind-waits-orlando .tree-left {
  position:absolute; bottom:35%; left:8%; width:28px; height:50%;
  background: linear-gradient(90deg, #4a3a2a 0%, #6a5a4a 40%, #3a2a1a 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 2px 0 6px rgba(0,0,0,0.3);
  animation: rwo-tree 10s ease-in-out infinite;
}
.scn-rosalind-waits-orlando .tree-right {
  position:absolute; bottom:35%; right:10%; width:24px; height:45%;
  background: linear-gradient(90deg, #5a4a3a 0%, #7a6a5a 40%, #4a3a2a 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: -2px 0 6px rgba(0,0,0,0.3);
  animation: rwo-tree 12s ease-in-out infinite reverse;
}
.scn-rosalind-waits-orlando .ground {
  position:absolute; bottom:0; left:0; right:0; height:35%;
  background: linear-gradient(180deg, #6b8a5a 0%, #3a5a2a 100%);
  border-radius: 60% 40% 0 0 / 30% 20% 0 0;
  animation: rwo-ground 7s ease-in-out infinite alternate;
}
.scn-rosalind-waits-orlando .figure {
  position:absolute; bottom:30%; left:50%; width:20px; height:50px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: translateX(-50%);
  animation: rwo-figure 5s ease-in-out infinite;
}

.scn-silvius-delivers-letter {
  background: 
    linear-gradient(180deg, #b8d4f0 0%, #f5e6c8 50%, #ffe0a0 100%),
    radial-gradient(ellipse at 40% 30%, #fff8e0 0%, transparent 60%);
}
.scn-silvius-delivers-letter .sky {
  position:absolute; inset:0 0 30% 0;
  background: linear-gradient(180deg, #d6e8ff 0%, transparent 100%);
  animation: sdl-sky 9s ease-in-out infinite alternate;
}
.scn-silvius-delivers-letter .ground {
  position:absolute; bottom:0; left:0; right:0; height:30%;
  background: linear-gradient(180deg, #7a9a6a 0%, #4a6a3a 100%);
  border-radius: 50% 50% 0 0 / 20% 20% 0 0;
}
.scn-silvius-delivers-letter .tree {
  position:absolute; bottom:30%; left:15%; width:30px; height:55%;
  background: linear-gradient(90deg, #5a4a3a 0%, #7a6a5a 40%, #4a3a2a 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 2px 0 8px rgba(0,0,0,0.4);
  animation: sdl-tree 8s ease-in-out infinite;
}
.scn-silvius-delivers-letter .figure-silvius {
  position:absolute; bottom:28%; left:38%; width:18px; height:48px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: sdl-silvius 4s ease-in-out infinite;
}
.scn-silvius-delivers-letter .figure-ganymede {
  position:absolute; bottom:28%; left:55%; width:18px; height:46px;
  background: linear-gradient(180deg, #3a2a3a 0%, #2a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: sdl-ganymede 5s ease-in-out infinite alternate;
}
.scn-silvius-delivers-letter .letter {
  position:absolute; bottom:35%; left:46%; width:20px; height:14px;
  background: linear-gradient(135deg, #f0e0d0 0%, #d0c0b0 100%);
  border: 1px solid #a08070;
  border-radius: 2px;
  transform: rotate(-15deg);
  animation: sdl-letter 3s ease-in-out infinite;
}
.scn-silvius-delivers-letter .glow {
  position:absolute; bottom:33%; left:46%; width:28px; height:20px;
  background: radial-gradient(circle, rgba(255,220,180,0.5) 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(4px);
  animation: sdl-glow 4s ease-in-out infinite alternate;
}

.scn-item-phebes-letter {
  background: 
    linear-gradient(135deg, #d8c8b8 0%, #f0e8d8 50%, #c8b8a8 100%),
    radial-gradient(ellipse at 50% 50%, #fff8e8 0%, transparent 80%);
}
.scn-item-phebes-letter .paper {
  position:absolute; top:15%; left:10%; width:80%; height:60%;
  background: linear-gradient(135deg, #f5ede0 0%, #e5d5c0 100%);
  border: 1px solid #c0b0a0;
  border-radius: 4px;
  box-shadow: 0 4px 12px rgba(0,0,0,0.2);
  transform: rotate(2deg);
  animation: ipl-paper 10s ease-in-out infinite alternate;
}
.scn-item-phebes-letter .hand {
  position:absolute; bottom:10%; left:50%; width:30px; height:40px;
  background: linear-gradient(180deg, #c8a888 0%, #a88868 100%);
  border-radius: 30% 30% 30% 30% / 40% 40% 60% 60%;
  transform: translateX(-50%) rotate(10deg);
  animation: ipl-hand 3s ease-in-out infinite;
}
.scn-item-phebes-letter .line-a {
  position:absolute; top:30%; left:20%; width:60%; height:4px;
  background: linear-gradient(90deg, #a0461a 0%, #c8553d 50%, #a0461a 100%);
  clip-path: polygon(0 0, 100% 0, 95% 100%, 5% 100%);
  transform: rotate(-8deg);
  animation: ipl-line 2s ease-in-out infinite;
}
.scn-item-phebes-letter .line-b {
  position:absolute; top:42%; left:15%; width:70%; height:5px;
  background: linear-gradient(90deg, #b86830 0%, #d08040 50%, #b86830 100%);
  clip-path: polygon(0 0, 100% 0, 92% 100%, 8% 100%);
  transform: rotate(5deg);
  animation: ipl-line 2.5s ease-in-out infinite reverse;
}
.scn-item-phebes-letter .line-c {
  position:absolute; top:54%; left:25%; width:50%; height:4px;
  background: linear-gradient(90deg, #a05820 0%, #c07030 50%, #a05820 100%);
  clip-path: polygon(0 0, 100% 0, 90% 100%, 10% 100%);
  transform: rotate(-3deg);
  animation: ipl-line 1.8s ease-in-out infinite alternate;
}
.scn-item-phebes-letter .seal {
  position:absolute; bottom:35%; right:20%; width:18px; height:18px;
  background: radial-gradient(circle, #c8553d 0%, #a0461a 70%);
  border-radius: 50%;
  box-shadow: 0 0 8px rgba(160,70,26,0.6);
  animation: ipl-seal 5s ease-in-out infinite;
}
.scn-item-phebes-letter .aura {
  position:absolute; top:10%; left:5%; width:90%; height:70%;
  background: radial-gradient(ellipse at 50% 50%, rgba(200,100,40,0.2) 0%, transparent 70%);
  filter: blur(10px);
  animation: ipl-aura 4s ease-in-out infinite alternate;
}

.scn-oliver-seeks-sheepcote {
  background: 
    linear-gradient(180deg, #8a9aaa 0%, #c0c8d0 40%, #a0a8b0 100%),
    radial-gradient(ellipse at 50% 100%, #606870 0%, transparent 80%);
}
.scn-oliver-seeks-sheepcote .sky {
  position:absolute; inset:0 0 40% 0;
  background: linear-gradient(180deg, #9aaaba 0%, #b8c4d0 60%, transparent 100%);
  animation: oss-sky 15s ease-in-out infinite alternate;
}
.scn-oliver-seeks-sheepcote .ground {
  position:absolute; bottom:0; left:0; right:0; height:40%;
  background: linear-gradient(180deg, #4a5a3a 0%, #2a3a1a 100%);
  border-radius: 30% 70% 0 0 / 20% 40% 0 0;
}
.scn-oliver-seeks-sheepcote .stream {
  position:absolute; bottom:25%; left:0; right:0; height:8px;
  background: linear-gradient(90deg, #6a8a9a 0%, #8aaaba 50%, #6a8a9a 100%);
  border-radius: 50%;
  filter: blur(2px);
  animation: oss-stream 8s ease-in-out infinite alternate;
}
.scn-oliver-seeks-sheepcote .osiers {
  position:absolute; bottom:20%; left:5%; width:60px; height:40px;
  background: radial-gradient(ellipse at 50% 100%, #5a6a3a 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(3px);
  animation: oss-osiers 6s ease-in-out infinite alternate;
}
.scn-oliver-seeks-sheepcote .sheepcote {
  position:absolute; bottom:30%; right:15%; width:50px; height:40px;
  background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.3);
  transform: perspective(400px) rotateY(5deg);
  animation: oss-sheepcote 12s ease-in-out infinite;
}
.scn-oliver-seeks-sheepcote .figure {
  position:absolute; bottom:28%; left:40%; width:18px; height:48px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: oss-figure 5s ease-in-out infinite;
}
.scn-oliver-seeks-sheepcote .path {
  position:absolute; bottom:20%; left:35%; width:40%; height:10px;
  background: linear-gradient(180deg, #6a5a4a 0%, #5a4a3a 100%);
  border-radius: 50%;
  filter: blur(1px);
  animation: oss-path 7s ease-in-out infinite alternate;
}

@keyframes rwo-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.85 } }
@keyframes rwo-beam { 0% { opacity:0.3; transform:scale(1) } 50% { opacity:0.6; transform:scale(1.05) } 100% { opacity:0.4; transform:scale(0.95) } }
@keyframes rwo-tree { 0%,100% { transform: rotate(0deg) translateY(0) } 50% { transform: rotate(1deg) translateY(-2px) } }
@keyframes rwo-ground { 0% { transform: translateY(0) scaleY(1) } 50% { transform: translateY(-2px) scaleY(1.01) } 100% { transform: translateY(0) scaleY(1) } }
@keyframes rwo-figure { 0% { transform: translateX(-50%) rotate(-1deg) } 25% { transform: translateX(-50%) rotate(1deg) } 50% { transform: translateX(-50%) rotate(-1deg) } 75% { transform: translateX(-50%) rotate(1deg) } 100% { transform: translateX(-50%) rotate(0deg) } }

@keyframes sdl-sky { 0% { opacity:0.75 } 50% { opacity:0.95 } 100% { opacity:0.8 } }
@keyframes sdl-tree { 0%,100% { transform:rotate(0deg) } 50% { transform:rotate(2deg) } }
@keyframes sdl-silvius { 0% { transform:translateY(0) rotate(-2deg) } 25% { transform:translateY(-3px) rotate(0deg) } 50% { transform:translateY(0) rotate(2deg) } 75% { transform:translateY(-2px) rotate(1deg) } 100% { transform:translateY(0) rotate(-1deg) } }
@keyframes sdl-ganymede { 0%,100% { transform:translateY(0) } 50% { transform:translateY(-3px) } }
@keyframes sdl-letter { 0% { transform:rotate(-15deg) translateY(0) } 50% { transform:rotate(-12deg) translateY(-3px) } 100% { transform:rotate(-15deg) translateY(0) } }
@keyframes sdl-glow { 0% { opacity:0.4; transform:scale(1) } 50% { opacity:0.8; transform:scale(1.2) } 100% { opacity:0.5; transform:scale(0.9) } }

@keyframes ipl-paper { 0% { transform:rotate(2deg) } 50% { transform:rotate(4deg) } 100% { transform:rotate(1deg) } }
@keyframes ipl-hand { 0% { transform:translateX(-50%) rotate(10deg) scale(1) } 50% { transform:translateX(-50%) rotate(12deg) scale(1.02) } 100% { transform:translateX(-50%) rotate(9deg) scale(1) } }
@keyframes ipl-line { 0% { opacity:0.6; transform:scaleX(1) } 50% { opacity:0.9; transform:scaleX(1.2) } 100% { opacity:0.7; transform:scaleX(0.9) } }
@keyframes ipl-seal { 0%,100% { box-shadow:0 0 8px rgba(160,70,26,0.6); transform:scale(1) } 50% { box-shadow:0 0 16px rgba(160,70,26,0.9); transform:scale(1.1) } }
@keyframes ipl-aura { 0% { opacity:0.3 } 50% { opacity:0.6 } 100% { opacity:0.4 } }

@keyframes oss-sky { 0% { opacity:0.7 } 50% { opacity:0.9 } 100% { opacity:0.75 } }
@keyframes oss-stream { 0% { opacity:0.4; transform:translateY(0) } 50% { opacity:0.6; transform:translateY(-2px) } 100% { opacity:0.5; transform:translateY(1px) } }
@keyframes oss-osiers { 0% { opacity:0.5; transform:scaleY(1) } 50% { opacity:0.7; transform:scaleY(1.1) } 100% { opacity:0.5; transform:scaleY(0.95) } }
@keyframes oss-sheepcote { 0% { transform:perspective(400px) rotateY(5deg) } 50% { transform:perspective(400px) rotateY(3deg) } 100% { transform:perspective(400px) rotateY(6deg) } }
@keyframes oss-figure { 0% { transform:translateY(0) rotate(-1deg) } 25% { transform:translateY(-3px) rotate(0deg) } 50% { transform:translateY(0) rotate(1deg) } 75% { transform:translateY(-2px) rotate(0deg) } 100% { transform:translateY(0) rotate(-1deg) } }
@keyframes oss-path { 0% { opacity:0.3; width:40% } 50% { opacity:0.5; width:42% } 100% { opacity:0.4; width:38% } }

/* Scene: le-beau-warns-orlando */
.scn-le-beau-warns-orlando {
  background: 
    linear-gradient(180deg, #b0d4ff 0%, #f5d68e 60%, #e8b470 100%),
    radial-gradient(ellipse at 50% 0%, #fff4d0 0%, transparent 50%);
}
.scn-le-beau-warns-orlando .sky {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #8fc9ff 0%, transparent 100%);
  animation: lbw-sky 10s ease-in-out infinite alternate;
}
.scn-le-beau-warns-orlando .sun {
  position: absolute; top: 5%; left: 65%; width: 60px; height: 60px;
  background: radial-gradient(circle, #fff8d0 0%, #ffd700 40%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 40px 10px #ffd700, 0 0 80px 20px rgba(255,215,0,0.3);
  animation: lbw-sun 20s linear infinite alternate;
}
.scn-le-beau-warns-orlando .pillar-left {
  position: absolute; bottom: 30%; left: 10%; width: 20px; height: 160px;
  background: linear-gradient(180deg, #c4b090 0%, #8c7a68 100%);
  border-radius: 4px;
  box-shadow: 0 0 20px rgba(0,0,0,0.3);
}
.scn-le-beau-warns-orlando .pillar-right {
  position: absolute; bottom: 30%; right: 10%; width: 20px; height: 160px;
  background: linear-gradient(180deg, #c4b090 0%, #8c7a68 100%);
  border-radius: 4px;
  box-shadow: 0 0 20px rgba(0,0,0,0.3);
}
.scn-le-beau-warns-orlando .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(0deg, #9c8360 0%, #b8a070 100%);
  border-radius: 20% 20% 0 0 / 10% 10% 0 0;
}
.scn-le-beau-warns-orlando .figure-orlando {
  position: absolute; bottom: 24%; left: 35%; width: 18px; height: 40px;
  background: linear-gradient(180deg, #2a2518 0%, #1a1510 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: lbw-stand 4s ease-in-out infinite;
}
.scn-le-beau-warns-orlando .figure-lebeau {
  position: absolute; bottom: 24%; left: 58%; width: 20px; height: 42px;
  background: linear-gradient(180deg, #2a2518 0%, #1a1510 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: lbw-warn 3s ease-in-out infinite;
}
.scn-le-beau-warns-orlando .shadow {
  position: absolute; bottom: 28%; left: 30%; width: 100px; height: 8px;
  background: rgba(0,0,0,0.15);
  border-radius: 50%;
  filter: blur(6px);
  animation: lbw-shadow 5s ease-in-out infinite alternate;
}
@keyframes lbw-sky { 0% { opacity: 0.7 } 50% { opacity: 1 } 100% { opacity: 0.8 } }
@keyframes lbw-sun { 0% { transform: translateX(-10px) scale(0.95); } 50% { transform: translateX(5px) scale(1.05); } 100% { transform: translateX(-5px) scale(0.98); } }
@keyframes lbw-stand { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-2px) rotate(1deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes lbw-warn { 0% { transform: translateY(0) rotate(-2deg); } 25% { transform: translateY(-3px) rotate(2deg) scaleX(1.02); } 50% { transform: translateY(-1px) rotate(-1deg); } 75% { transform: translateY(-3px) rotate(3deg) scaleX(1.02); } 100% { transform: translateY(0) rotate(-2deg); } }
@keyframes lbw-shadow { 0% { transform: scaleX(1) translateX(0); opacity: 0.5; } 50% { transform: scaleX(1.2) translateX(5px); opacity: 0.3; } 100% { transform: scaleX(0.9) translateX(-3px); opacity: 0.6; } }

/* Scene: palace-room-celia-rosalind */
.scn-palace-room-celia-rosalind {
  background: 
    linear-gradient(180deg, #f5e6c8 0%, #d9c4a0 40%, #b89a70 100%),
    radial-gradient(ellipse at 50% 30%, #fffbe0 0%, transparent 60%);
}
.scn-palace-room-celia-rosalind .wall {
  position: absolute; inset: 0 0 20% 0;
  background: linear-gradient(180deg, #e8dcc0 0%, #cbb398 100%);
}
.scn-palace-room-celia-rosalind .window {
  position: absolute; top: 15%; left: 35%; width: 80px; height: 110px;
  background: linear-gradient(180deg, #b0d4ff 0%, #e0f0ff 100%);
  border: 6px solid #8c7a68;
  border-radius: 4px;
  box-shadow: inset 0 0 30px rgba(255,255,200,0.4);
  animation: prc-window 6s ease-in-out infinite alternate;
}
.scn-palace-room-celia-rosalind .couch {
  position: absolute; bottom: 10%; left: 20%; width: 120px; height: 50px;
  background: linear-gradient(180deg, #a67c52 0%, #7a5a38 100%);
  border-radius: 20% 20% 10% 10% / 40% 40% 10% 10%;
  box-shadow: 0 -5px 15px rgba(0,0,0,0.2);
}
.scn-palace-room-celia-rosalind .carpet {
  position: absolute; bottom: 5%; left: 15%; width: 150px; height: 40px;
  background: linear-gradient(90deg, #6b3a2a 0%, #8c5038 30%, #6b3a2a 60%, #8c5038 100%);
  border-radius: 50% / 30%;
  transform: perspective(200px) rotateX(15deg);
}
.scn-palace-room-celia-rosalind .figure-celia {
  position: absolute; bottom: 12%; left: 38%; width: 20px; height: 55px;
  background: linear-gradient(180deg, #d4a76a 0%, #a87c4a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: prc-figure1 4s ease-in-out infinite;
}
.scn-palace-room-celia-rosalind .figure-rosalind {
  position: absolute; bottom: 12%; left: 52%; width: 18px; height: 53px;
  background: linear-gradient(180deg, #c89860 0%, #a07440 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: prc-figure2 4.5s ease-in-out infinite alternate;
}
.scn-palace-room-celia-rosalind .cushion {
  position: absolute; bottom: 13%; left: 44%; width: 25px; height: 18px;
  background: radial-gradient(circle, #e8b470 0%, #c48a48 100%);
  border-radius: 50%;
  box-shadow: 0 2px 8px rgba(0,0,0,0.2);
  animation: prc-cushion 3s ease-in-out infinite alternate;
}
@keyframes prc-window { 0% { opacity: 0.8; transform: scaleY(0.98); } 50% { opacity: 1; transform: scaleY(1.02); } 100% { opacity: 0.85; transform: scaleY(0.99); } }
@keyframes prc-figure1 { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-2px) rotate(2deg); } 100% { transform: translateY(0) rotate(-1deg); } }
@keyframes prc-figure2 { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-3px) rotate(-2deg); } 100% { transform: translateY(0) rotate(1deg); } }
@keyframes prc-cushion { 0% { transform: translateY(0) scale(1); } 50% { transform: translateY(2px) scale(0.95); } 100% { transform: translateY(0) scale(1); } }

/* Scene: duke-frederick-banishes */
.scn-duke-frederick-banishes {
  background: 
    linear-gradient(180deg, #e8dcc0 0%, #cbb398 60%, #a08568 100%),
    radial-gradient(ellipse at 50% 0%, #ffe0b0 0%, transparent 50%);
}
.scn-duke-frederick-banishes .throne {
  position: absolute; bottom: 15%; left: 50%; width: 80px; height: 100px;
  background: linear-gradient(180deg, #704a2e 0%, #4a2e1a 100%);
  border-radius: 10% 10% 5% 5% / 20% 20% 5% 5%;
  transform: translateX(-50%);
  box-shadow: 0 8px 20px rgba(0,0,0,0.4);
}
.scn-duke-frederick-banishes .wall {
  position: absolute; inset: 0 0 15% 0;
  background: linear-gradient(180deg, #d4c4a8 0%, #b8a488 100%);
}
.scn-duke-frederick-banishes .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 15%;
  background: linear-gradient(0deg, #7a5a38 0%, #9c7a58 100%);
  border-radius: 10% 10% 0 0;
}
.scn-duke-frederick-banishes .figure-duke {
  position: absolute; bottom: 18%; left: 50%; width: 28px; height: 60px;
  background: linear-gradient(180deg, #c8553d 0%, #8c3020 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform: translateX(-50%) scale(1.15);
  transform-origin: bottom center;
  animation: dfb-duke 3s ease-in-out infinite;
}
.scn-duke-frederick-banishes .figure-rosalind {
  position: absolute; bottom: 18%; left: 30%; width: 18px; height: 50px;
  background: linear-gradient(180deg, #a07440 0%, #705030 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: dfb-rosalind 4s ease-in-out infinite alternate;
}
.scn-duke-frederick-banishes .guard-left {
  position: absolute; bottom: 18%; left: 15%; width: 20px; height: 55px;
  background: linear-gradient(180deg, #4a5a6a 0%, #2a3a4a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  animation: dfb-guard 5s ease-in-out infinite;
}
.scn-duke-frederick-banishes .guard-right {
  position: absolute; bottom: 18%; right: 15%; width: 20px; height: 55px;
  background: linear-gradient(180deg, #4a5a6a 0%, #2a3a4a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  animation: dfb-guard 5s ease-in-out infinite reverse;
}
.scn-duke-frederick-banishes .sceptre {
  position: absolute; bottom: 24%; left: 51%; width: 4px; height: 50px;
  background: linear-gradient(180deg, #f0c040 0%, #c89820 100%);
  border-radius: 2px;
  transform: translateX(-50%) rotate(-5deg);
  transform-origin: bottom center;
  animation: dfb-sceptre 2s ease-in-out infinite alternate;
}
@keyframes dfb-duke { 0% { transform: translateX(-50%) rotate(0deg); } 50% { transform: translateX(-50%) rotate(2deg) scaleY(1.02); } 100% { transform: translateX(-50%) rotate(-1deg); } }
@keyframes dfb-rosalind { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-3px) rotate(-3deg); } 100% { transform: translateY(0) rotate(2deg); } }
@keyframes dfb-guard { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes dfb-sceptre { 0% { transform: translateX(-50%) rotate(-8deg); } 50% { transform: translateX(-50%) rotate(2deg); } 100% { transform: translateX(-50%) rotate(-6deg); } }

/* Scene: celia-rosalind-plan */
.scn-celia-rosalind-plan {
  background: 
    linear-gradient(180deg, #fae8c8 0%, #edd4a8 50%, #d4b88a 100%),
    radial-gradient(ellipse at 50% 20%, #fff4d0 0%, transparent 60%);
}
.scn-celia-rosalind-plan .wall {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(180deg, #e8dcc0 0%, #cbb398 100%);
}
.scn-celia-rosalind-plan .window {
  position: absolute; top: 20%; right: 15%; width: 70px; height: 90px;
  background: linear-gradient(180deg, #a0c8f8 0%, #d0e4ff 100%);
  border: 5px solid #8c7a68;
  border-radius: 4px;
  box-shadow: inset 0 0 20px rgba(255,255,200,0.3);
  animation: crp-window 8s ease-in-out infinite alternate;
}
.scn-celia-rosalind-plan .table {
  position: absolute; bottom: 15%; left: 25%; width: 100px; height: 35px;
  background: linear-gradient(180deg, #9c8040 0%, #7a6030 100%);
  border-radius: 5% 5% 10% 10% / 20% 20% 10% 10%;
  box-shadow: 0 4px 12px rgba(0,0,0,0.3);
}
.scn-celia-rosalind-plan .map {
  position: absolute; bottom: 20%; left: 30%; width: 60px; height: 40px;
  background: linear-gradient(180deg, #d4c090 0%, #b8a070 100%);
  border-radius: 4px;
  transform: perspective(200px) rotateX(20deg);
  box-shadow: 0 2px 8px rgba(0,0,0,0.2);
  animation: crp-map 5s ease-in-out infinite alternate;
}
.scn-celia-rosalind-plan .figure-celia {
  position: absolute; bottom: 18%; left: 42%; width: 20px; height: 52px;
  background: linear-gradient(180deg, #d4a76a 0%, #a87c4a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: crp-fig1 4s ease-in-out infinite alternate;
}
.scn-celia-rosalind-plan .figure-rosalind {
  position: absolute; bottom: 18%; left: 55%; width: 18px; height: 50px;
  background: linear-gradient(180deg, #c89860 0%, #a07440 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: crp-fig2 4.5s ease-in-out infinite alternate;
}
.scn-celia-rosalind-plan .basket {
  position: absolute; bottom: 17%; left: 33%; width: 35px; height: 25px;
  background: linear-gradient(180deg, #8c6a40 0%, #6a4e2e 100%);
  border-radius: 30% 30% 10% 10% / 50% 50% 10% 10%;
  box-shadow: 0 3px 8px rgba(0,0,0,0.2);
  animation: crp-basket 6s ease-in-out infinite;
}
@keyframes crp-window { 0% { opacity: 0.85; transform: scaleY(0.98); } 50% { opacity: 1; transform: scaleY(1.03); } 100% { opacity: 0.9; transform: scaleY(0.99); } }
@keyframes crp-map { 0% { transform: perspective(200px) rotateX(20deg) translateY(0); } 50% { transform: perspective(200px) rotateX(25deg) translateY(-2px); } 100% { transform: perspective(200px) rotateX(18deg) translateY(0); } }
@keyframes crp-fig1 { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-3px) rotate(3deg); } 100% { transform: translateY(0) rotate(-2deg); } }
@keyframes crp-fig2 { 0% { transform: translateY(0) rotate(2deg); } 50% { transform: translateY(-2px) rotate(-3deg); } 100% { transform: translateY(0) rotate(1deg); } }
@keyframes crp-basket { 0% { transform: translateY(0) scale(1); } 50% { transform: translateY(2px) scale(0.97); } 100% { transform: translateY(0) scale(1); } }

.scn-forest-rosalind-identity {
  background: linear-gradient(180deg, #7ec8e3 0%, #f0e68c 60%, #6a8a4a 100%),
              radial-gradient(ellipse at 50% 100%, #6a8a4a 0%, transparent 70%);
}
.scn-forest-rosalind-identity .sky {
  position: absolute; inset: 0 0 70% 0; background: linear-gradient(180deg, #87ceeb 0%, #b0e0e6 50%, transparent 100%);
  animation: f1-sky 8s ease-in-out infinite alternate;
}
.scn-forest-rosalind-identity .sun {
  position: absolute; top: 10%; left: 40%; width: 60px; height: 60px; background: radial-gradient(circle, #fffacd 0%, #ffd700 40%, transparent 70%);
  border-radius: 50%; box-shadow: 0 0 40px 20px rgba(255,215,0,0.3);
  animation: f1-sun 6s ease-in-out infinite alternate;
}
.scn-forest-rosalind-identity .trees.far {
  position: absolute; bottom: 30%; left: 0; right: 0; height: 50%; background: linear-gradient(180deg, #4a6a3a 0%, #2a4a2a 100%);
  border-radius: 40% 60% 0 0 / 80% 70% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,0.3);
  animation: f1-trees-far 12s ease-in-out infinite alternate;
}
.scn-forest-rosalind-identity .trees.near {
  position: absolute; bottom: 10%; left: 0; right: 0; height: 35%; background: linear-gradient(180deg, #5a7a4a 0%, #3a5a2a 100%);
  border-radius: 50% 40% 0 0 / 90% 80% 0 0; box-shadow: inset 0 6px 15px rgba(0,0,0,0.4);
  animation: f1-trees-near 15s ease-in-out infinite alternate;
}
.scn-forest-rosalind-identity .path {
  position: absolute; bottom: 10%; left: 30%; width: 40%; height: 10%; background: linear-gradient(180deg, #c8b060 0%, #a09050 100%);
  border-radius: 50% 50% 0 0; box-shadow: 0 -4px 10px rgba(0,0,0,0.2);
  animation: f1-path 10s ease-in-out infinite;
}
.scn-forest-rosalind-identity .figure.shepherdess {
  position: absolute; bottom: 18%; left: 25%; width: 20px; height: 30px; background: linear-gradient(180deg, #e0c0a0 0%, #8a5a3a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center;
  animation: f1-figure-walk 4s ease-in-out infinite;
}
.scn-forest-rosalind-identity .figure.youth {
  position: absolute; bottom: 18%; left: 50%; width: 22px; height: 32px; background: linear-gradient(180deg, #c8a070 0%, #7a4a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center;
  animation: f1-figure-walk 4s ease-in-out 0.5s infinite;
}
.scn-forest-rosalind-identity .flowers {
  position: absolute; bottom: 5%; left: 15%; width: 30px; height: 10px; background: radial-gradient(circle, #ff69b4 30%, transparent 70%);
  border-radius: 50%; filter: blur(2px);
  animation: f1-flowers 6s ease-in-out infinite alternate;
}
@keyframes f1-sky { 0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.85; } }
@keyframes f1-sun { 0% { transform: translateY(0) scale(1); } 50% { transform: translateY(-5px) scale(1.05); } 100% { transform: translateY(0) scale(1); } }
@keyframes f1-trees-far { 0% { transform: translateY(0); } 50% { transform: translateY(-3px); } 100% { transform: translateY(0); } }
@keyframes f1-trees-near { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes f1-path { 0%,100% { transform: scaleY(1); } 50% { transform: scaleY(1.05); } }
@keyframes f1-figure-walk { 0% { transform: translateX(0) translateY(0) rotate(-2deg); } 25% { transform: translateX(8px) translateY(-2px) rotate(2deg); } 50% { transform: translateX(16px) translateY(0) rotate(-2deg); } 75% { transform: translateX(24px) translateY(-1px) rotate(2deg); } 100% { transform: translateX(32px) translateY(0) rotate(0); } }
@keyframes f1-flowers { 0% { transform: scale(1); opacity:0.6; } 50% { transform: scale(1.2); opacity:1; } 100% { transform: scale(0.9); opacity:0.7; } }

.scn-forest-rosalind-remedy {
  background: linear-gradient(180deg, #7ec8e3 0%, #c0d080 50%, #6a8a4a 100%),
              radial-gradient(ellipse at 30% 80%, #c0d080 0%, transparent 60%);
}
.scn-forest-rosalind-remedy .bg-forest {
  position: absolute; inset: 0; background: linear-gradient(180deg, #b0d0a0 0%, #7a9a5a 100%);
  animation: f2-bg 10s ease-in-out infinite alternate;
}
.scn-forest-rosalind-remedy .cage-wall.left {
  position: absolute; bottom: 20%; left: 20%; width: 8px; height: 50%; background: linear-gradient(180deg, #8a6a4a 0%, #5a3a2a 100%);
  border-radius: 4px; box-shadow: 2px 0 6px rgba(0,0,0,0.4);
}
.scn-forest-rosalind-remedy .cage-wall.right {
  position: absolute; bottom: 20%; right: 20%; width: 8px; height: 50%; background: linear-gradient(180deg, #8a6a4a 0%, #5a3a2a 100%);
  border-radius: 4px; box-shadow: -2px 0 6px rgba(0,0,0,0.4);
}
.scn-forest-rosalind-remedy .cage-bar.horizontal1 {
  position: absolute; bottom: 55%; left: 20%; width: 60%; height: 6px; background: #6a4a2a;
  border-radius: 3px; box-shadow: 0 2px 4px rgba(0,0,0,0.3);
}
.scn-forest-rosalind-remedy .cage-bar.horizontal2 {
  position: absolute; bottom: 35%; left: 20%; width: 60%; height: 6px; background: #6a4a2a;
  border-radius: 3px; box-shadow: 0 2px 4px rgba(0,0,0,0.3);
}
.scn-forest-rosalind-remedy .prisoner {
  position: absolute; bottom: 30%; left: 50%; width: 20px; height: 30px; transform: translateX(-50%); background: linear-gradient(180deg, #e0c0a0 0%, #8a5a3a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: f2-shake 1s ease-in-out infinite;
}
.scn-forest-rosalind-remedy .lock {
  position: absolute; bottom: 20%; left: 50%; width: 12px; height: 12px; transform: translateX(-50%); background: radial-gradient(circle, #c0a070 0%, #8a6a4a 100%);
  border-radius: 50%; box-shadow: 0 0 8px 2px rgba(192,160,112,0.5);
  animation: f2-lock 3s ease-in-out infinite;
}
@keyframes f2-bg { 0% { background-position: 0% 0%; } 50% { background-position: 10% 10%; } 100% { background-position: 0% 0%; } }
@keyframes f2-shake { 0% { transform: translateX(-50%) rotate(0deg); } 25% { transform: translateX(-50%) rotate(5deg); } 50% { transform: translateX(-50%) rotate(-5deg); } 75% { transform: translateX(-50%) rotate(3deg); } 100% { transform: translateX(-50%) rotate(0deg); } }
@keyframes f2-lock { 0% { box-shadow: 0 0 8px 2px rgba(192,160,112,0.5); } 50% { box-shadow: 0 0 12px 4px rgba(192,160,112,0.8); } 100% { box-shadow: 0 0 8px 2px rgba(192,160,112,0.5); } }

.scn-forest-rosalind-madness {
  background: linear-gradient(180deg, #2a2a2a 0%, #4a3a2a 50%, #5a4a3a 100%),
              radial-gradient(ellipse at 50% 70%, #4a3a2a 0%, transparent 60%);
}
.scn-forest-rosalind-madness .house-bg {
  position: absolute; inset: 0; background: linear-gradient(180deg, #3a2a1a 0%, #1a1a0a 100%);
  animation: f3-house 12s ease-in-out infinite alternate;
}
.scn-forest-rosalind-madness .window {
  position: absolute; top: 20%; left: 50%; width: 40px; height: 60px; transform: translateX(-50%); background: radial-gradient(circle, #fffacd 0%, #ffd700 60%, transparent 100%);
  border: 4px solid #4a2a1a; border-radius: 4px;
  animation: f3-window-glow 3s ease-in-out infinite alternate;
}
.scn-forest-rosalind-madness .bars {
  position: absolute; top: 20%; left: 50%; width: 40px; height: 60px; transform: translateX(-50%);
  background: repeating-linear-gradient(0deg, transparent, transparent 8px, #2a1a0a 8px, #2a1a0a 10px);
  border: 4px solid #2a1a0a; border-radius: 4px;
  animation: f3-bars 5s ease-in-out infinite;
}
.scn-forest-rosalind-madness .mad-figure {
  position: absolute; bottom: 25%; left: 50%; width: 24px; height: 40px; transform: translateX(-50%); background: linear-gradient(180deg, #c8a070 0%, #7a4a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: f3-mad 2s ease-in-out infinite;
}
.scn-forest-rosalind-madness .spinning-wheel {
  position: absolute; bottom: 20%; right: 20%; width: 30px; height: 30px; background: radial-gradient(circle, #6a4a2a 0%, transparent 70%);
  border: 3px solid #5a3a1a; border-radius: 50%;
  animation: f3-spin 4s linear infinite;
}
.scn-forest-rosalind-madness .light-beam {
  position: absolute; top: 10%; left: 40%; width: 20%; height: 80%; background: linear-gradient(180deg, rgba(255,215,0,0.3) 0%, transparent 100%);
  transform: rotate(10deg); filter: blur(8px);
  animation: f3-beam 8s ease-in-out infinite alternate;
}
@keyframes f3-house { 0% { opacity:0.9; } 50% { opacity:0.6; } 100% { opacity:0.8; } }
@keyframes f3-window-glow { 0% { box-shadow: 0 0 20px 10px rgba(255,215,0,0.2); } 50% { box-shadow: 0 0 40px 20px rgba(255,215,0,0.5); } 100% { box-shadow: 0 0 20px 10px rgba(255,215,0,0.2); } }
@keyframes f3-bars { 0%,100% { opacity:0.8; } 50% { opacity:1; } }
@keyframes f3-mad { 0% { transform: translateX(-50%) translateY(0) rotate(0deg); } 25% { transform: translateX(-50%) translateY(-5px) rotate(15deg); } 50% { transform: translateX(-50%) translateY(0) rotate(-10deg); } 75% { transform: translateX(-50%) translateY(-3px) rotate(5deg); } 100% { transform: translateX(-50%) translateY(0) rotate(0deg); } }
@keyframes f3-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }
@keyframes f3-beam { 0% { opacity:0.3; transform: rotate(5deg); } 50% { opacity:0.6; transform: rotate(15deg); } 100% { opacity:0.3; transform: rotate(5deg); } }

.scn-forest-orlando-agrees {
  background: linear-gradient(180deg, #ffd700 0%, #f0e68c 30%, #6a8a4a 100%),
              radial-gradient(ellipse at 50% 0%, #ffd700 0%, transparent 70%);
}
.scn-forest-orlando-agrees .sky-warm {
  position: absolute; inset: 0 0 70% 0; background: linear-gradient(180deg, #f0c040 0%, #ffeb3b 50%, transparent 100%);
  animation: f4-sky 8s ease-in-out infinite alternate;
}
.scn-forest-orlando-agrees .sun-glow {
  position: absolute; top: 5%; left: 50%; width: 80px; height: 80px; transform: translateX(-50%); background: radial-gradient(circle, #fffacd 0%, #ffd700 40%, transparent 70%);
  border-radius: 50%; box-shadow: 0 0 60px 30px rgba(255,215,0,0.4);
  animation: f4-sun 7s ease-in-out infinite alternate;
}
.scn-forest-orlando-agrees .trees-back {
  position: absolute; bottom: 30%; left: 0; right: 0; height: 40%; background: linear-gradient(180deg, #8a9a5a 0%, #4a6a3a 100%);
  border-radius: 40% 60% 0 0 / 80% 70% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,0.2);
  animation: f4-trees-back 12s ease-in-out infinite alternate;
}
.scn-forest-orlando-agrees .trees-front {
  position: absolute; bottom: 10%; left: 0; right: 0; height: 35%; background: linear-gradient(180deg, #6a8a4a 0%, #3a5a2a 100%);
  border-radius: 50% 40% 0 0 / 90% 80% 0 0; box-shadow: inset 0 6px 15px rgba(0,0,0,0.3);
  animation: f4-trees-front 15s ease-in-out infinite alternate;
}
.scn-forest-orlando-agrees .path-gold {
  position: absolute; bottom: 10%; left: 25%; width: 50%; height: 12%; background: linear-gradient(180deg, #e0c060 0%, #b0a050 100%);
  border-radius: 50% 50% 0 0; box-shadow: 0 -4px 10px rgba(0,0,0,0.15);
  animation: f4-path 10s ease-in-out infinite;
}
.scn-forest-orlando-agrees .figure-ros {
  position: absolute; bottom: 18%; left: 30%; width: 22px; height: 34px; background: linear-gradient(180deg, #e0c0a0 0%, #8a5a3a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center;
  animation: f4-walk 4s ease-in-out infinite;
}
.scn-forest-orlando-agrees .figure-orl {
  position: absolute; bottom: 18%; left: 48%; width: 24px; height: 36px; background: linear-gradient(180deg, #c8a070 0%, #7a4a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center;
  animation: f4-walk 4s ease-in-out 0.5s infinite;
}
.scn-forest-orlando-agrees .hat {
  position: absolute; bottom: 42%; left: 48%; width: 20px; height: 6px; background: #5a3a1a;
  border-radius: 50% 50% 0 0; transform: rotate(-5deg);
  animation: f4-hat 4s ease-in-out 0.5s infinite;
}
@keyframes f4-sky { 0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.85; } }
@keyframes f4-sun { 0% { transform: translateX(-50%) scale(1); } 50% { transform: translateX(-50%) scale(1.05) translateY(-5px); } 100% { transform: translateX(-50%) scale(1); } }
@keyframes f4-trees-back { 0% { transform: translateY(0); } 50% { transform: translateY(-3px); } 100% { transform: translateY(0); } }
@keyframes f4-trees-front { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes f4-path { 0%,100% { transform: scaleY(1); } 50% { transform: scaleY(1.05); } }
@keyframes f4-walk { 0% { transform: translateX(0) translateY(0) rotate(-2deg); } 25% { transform: translateX(8px) translateY(-2px) rotate(2deg); } 50% { transform: translateX(16px) translateY(0) rotate(-2deg); } 75% { transform: translateX(24px) translateY(-1px) rotate(2deg); } 100% { transform: translateX(32px) translateY(0) rotate(0); } }
@keyframes f4-hat { 0% { transform: rotate(-5deg) translateY(0); } 50% { transform: rotate(-5deg) translateY(-3px); } 100% { transform: rotate(-5deg) translateY(0); } }

/* scene: jaques-de-boys-brings-news */
.scn-jaques-de-boys-brings-news {
  background:
    linear-gradient(180deg, #f0e6d8 0%, #d4c4a5 40%, #8b7a5a 100%),
    radial-gradient(ellipse at 50% 100%, #cbb78c 0%, transparent 60%);
}
.scn-jaques-de-boys-brings-news .sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #b8d4e0 0%, #e6dcc0 80%);
  animation: jdb-sky 15s ease-in-out infinite alternate;
}
.scn-jaques-de-boys-brings-news .woods-bg {
  position: absolute; bottom: 40%; left: 0; right: 0; height: 40%;
  background: linear-gradient(90deg, #4a6330 0%, #3b5225 50%, #2a3d1a 100%);
  border-radius: 60% 30% 0 0 / 40% 20% 0 0;
  filter: blur(4px);
  animation: jdb-woods-bg 20s ease-in-out infinite alternate;
}
.scn-jaques-de-boys-brings-news .woods-mid {
  position: absolute; bottom: 35%; left: 10%; right: 10%; height: 30%;
  background: linear-gradient(90deg, #3d5a2a 0%, #2e4520 50%, #1f3014 100%);
  border-radius: 40% 50% 0 0 / 50% 40% 0 0;
  animation: jdb-woods-mid 25s ease-in-out infinite alternate;
}
.scn-jaques-de-boys-brings-news .path {
  position: absolute; bottom: 20%; left: 35%; right: 35%; height: 18%;
  background: linear-gradient(180deg, #b09070 0%, #8a7055 100%);
  border-radius: 0 0 30% 30% / 0 0 50% 50%;
  box-shadow: inset 0 6px 12px rgba(0,0,0,0.3);
  transform: perspective(200px) rotateX(15deg);
  animation: jdb-path 8s ease-in-out infinite alternate;
}
.scn-jaques-de-boys-brings-news .figure {
  position: absolute; bottom: 22%; left: 38%; width: 22px; height: 50px;
  background: linear-gradient(180deg, #1f2b1a 0%, #0f1a0c 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: jdb-figure 6s ease-in-out infinite;
}
.scn-jaques-de-boys-brings-news .bird {
  position: absolute; width: 12px; height: 6px;
  background: #2d2d2d;
  border-radius: 50%;
  filter: blur(1px);
}
.scn-jaques-de-boys-brings-news .bird-1 {
  top: 18%; left: 20%;
  animation: jdb-bird1 12s linear infinite;
}
.scn-jaques-de-boys-brings-news .bird-2 {
  top: 14%; right: 15%;
  animation: jdb-bird2 15s linear infinite;
  animation-delay: 2s;
}
.scn-jaques-de-boys-brings-news .dust {
  position: absolute; bottom: 20%; left: 45%; width: 6px; height: 6px;
  background: radial-gradient(circle, #d4b080 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(3px);
  animation: jdb-dust 7s ease-in-out infinite;
}
@keyframes jdb-sky {
  0% { opacity: 0.8; }
  50% { opacity: 1; }
  100% { opacity: 0.7; }
}
@keyframes jdb-woods-bg {
  0% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-2px) scale(1.01); }
  100% { transform: translateY(0) scale(0.98); }
}
@keyframes jdb-woods-mid {
  0% { transform: translateY(0) scaleX(1); }
  50% { transform: translateY(-1px) scaleX(1.02); }
  100% { transform: translateY(0) scaleX(0.97); }
}
@keyframes jdb-path {
  0% { opacity: 0.9; filter: brightness(1); }
  50% { opacity: 1; filter: brightness(1.1); }
  100% { opacity: 0.85; filter: brightness(0.9); }
}
@keyframes jdb-figure {
  0% { transform: translateX(0) translateY(0) rotate(-1deg); }
  25% { transform: translateX(8px) translateY(-2px) rotate(1deg); }
  50% { transform: translateX(16px) translateY(0) rotate(-1deg); }
  75% { transform: translateX(24px) translateY(-2px) rotate(1deg); }
  100% { transform: translateX(32px) translateY(0) rotate(0); }
}
@keyframes jdb-bird1 {
  0% { transform: translateX(-50px) translateY(0) scale(1); }
  25% { transform: translateX(-10px) translateY(-8px) scale(0.9); }
  50% { transform: translateX(30px) translateY(0) scale(1); }
  75% { transform: translateX(70px) translateY(-5px) scale(0.95); }
  100% { transform: translateX(110px) translateY(0) scale(1); }
}
@keyframes jdb-bird2 {
  0% { transform: translateX(50px) translateY(0) scale(1); }
  25% { transform: translateX(20px) translateY(-6px) scale(0.9); }
  50% { transform: translateX(-10px) translateY(0) scale(1); }
  75% { transform: translateX(-40px) translateY(-4px) scale(0.95); }
  100% { transform: translateX(-80px) translateY(0) scale(1); }
}
@keyframes jdb-dust {
  0% { transform: translate(0, 0) scale(1); opacity: 0.5; }
  50% { transform: translate(3px, -8px) scale(1.5); opacity: 1; }
  100% { transform: translate(6px, -16px) scale(0.3); opacity: 0; }
}

/* scene: jaques-de-boys-relates-conversion */
.scn-jaques-de-boys-relates-conversion {
  background:
    linear-gradient(180deg, #e8dcc4 0%, #bfa880 40%, #7a603a 100%),
    radial-gradient(ellipse at 50% 80%, #d4b888 0%, transparent 70%);
}
.scn-jaques-de-boys-relates-conversion .sky {
  position: absolute; inset: 0 0 60% 0;
  background: linear-gradient(180deg, #b0c4d8 0%, #e0d4b8 100%);
  animation: jdc-sky 18s ease-in-out infinite alternate;
}
.scn-jaques-de-boys-relates-conversion .woods {
  position: absolute; bottom: 40%; left: 0; right: 0; height: 35%;
  background: linear-gradient(90deg, #2e4520 0%, #3b5a2a 50%, #1f3014 100%);
  border-radius: 30% 40% 0 0 / 60% 50% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.5);
  animation: jdc-woods 22s ease-in-out infinite alternate;
}
.scn-jaques-de-boys-relates-conversion .rock {
  position: absolute; bottom: 30%; left: 15%; width: 80px; height: 40px;
  background: linear-gradient(160deg, #8a7a5a 0%, #5a4a30 100%);
  border-radius: 30% 20% 10% 10% / 40% 30% 10% 10%;
  transform: rotate(-5deg);
  box-shadow: 0 4px 8px rgba(0,0,0,0.4);
  animation: jdc-rock 14s ease-in-out infinite alternate;
}
.scn-jaques-de-boys-relates-conversion .old-man {
  position: absolute; bottom: 32%; left: 20%; width: 28px; height: 44px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: jdc-oldman 10s ease-in-out infinite;
}
.scn-jaques-de-boys-relates-conversion .kneeling-figure {
  position: absolute; bottom: 30%; left: 35%; width: 20px; height: 36px;
  background: linear-gradient(180deg, #1f2b1a 0%, #0f1a0c 100%);
  border-radius: 50% 50% 30% 30% / 70% 70% 40% 40%;
  transform: scaleY(0.7) translateY(10px);
  transform-origin: bottom center;
  animation: jdc-kneel 12s ease-in-out infinite;
}
.scn-jaques-de-boys-relates-conversion .light-ray {
  position: absolute; top: 10%; left: 45%; width: 20px; height: 60%;
  background: linear-gradient(180deg, rgba(255,240,200,0.4) 0%, transparent 100%);
  transform: rotate(15deg);
  filter: blur(6px);
  animation: jdc-ray 8s ease-in-out infinite alternate;
}
.scn-jaques-de-boys-relates-conversion .motes {
  position: absolute; width: 4px; height: 4px;
  background: radial-gradient(circle, #fff0d0 0%, transparent 80%);
  border-radius: 50%;
  filter: blur(2px);
}
.scn-jaques-de-boys-relates-conversion .motes-a {
  top: 30%; left: 40%;
  animation: jdc-motes1 7s ease-in-out infinite;
}
.scn-jaques-de-boys-relates-conversion .motes-b {
  top: 50%; left: 55%;
  animation: jdc-motes2 9s ease-in-out infinite;
  animation-delay: 3s;
}
@keyframes jdc-sky {
  0% { opacity: 0.8; }
  50% { opacity: 1; }
  100% { opacity: 0.7; }
}
@keyframes jdc-woods {
  0% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-3px) scale(1.02); }
  100% { transform: translateY(0) scale(0.97); }
}
@keyframes jdc-rock {
  0% { transform: rotate(-5deg) translateY(0); }
  50% { transform: rotate(-4deg) translateY(-2px); }
  100% { transform: rotate(-5deg) translateY(0); }
}
@keyframes jdc-oldman {
  0% { transform: translateX(0) translateY(0) rotate(0); }
  25% { transform: translateX(2px) translateY(-1px) rotate(1deg); }
  50% { transform: translateX(0) translateY(0) rotate(0); }
  75% { transform: translateX(-2px) translateY(-1px) rotate(-1deg); }
  100% { transform: translateX(0) translateY(0) rotate(0); }
}
@keyframes jdc-kneel {
  0% { transform: scaleY(0.7) translateY(10px) rotate(0); }
  50% { transform: scaleY(0.72) translateY(9px) rotate(2deg); }
  100% { transform: scaleY(0.7) translateY(10px) rotate(0); }
}
@keyframes jdc-ray {
  0% { opacity: 0.3; transform: rotate(15deg) scaleX(1); }
  50% { opacity: 0.6; transform: rotate(18deg) scaleX(1.1); }
  100% { opacity: 0.3; transform: rotate(15deg) scaleX(1); }
}
@keyframes jdc-motes1 {
  0% { transform: translate(0, 0) scale(1); opacity: 0.6; }
  50% { transform: translate(6px, -12px) scale(1.5); opacity: 1; }
  100% { transform: translate(12px, -24px) scale(0.5); opacity: 0; }
}
@keyframes jdc-motes2 {
  0% { transform: translate(0, 0) scale(1); opacity: 0.4; }
  50% { transform: translate(-8px, -10px) scale(1.3); opacity: 0.8; }
  100% { transform: translate(-16px, -20px) scale(0.3); opacity: 0; }
}

/* scene: duke-welcomes-jaques */
.scn-duke-welcomes-jaques {
  background:
    linear-gradient(180deg, #f5e8d0 0%, #d4be9a 50%, #a08060 100%),
    radial-gradient(ellipse at 50% 60%, #e0c898 0%, transparent 70%);
}
.scn-duke-welcomes-jaques .bg {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, #b8a080 0%, #8a7250 100%);
  opacity: 0.3;
  animation: dwj-bg 20s ease-in-out infinite alternate;
}
.scn-duke-welcomes-jaques .tent {
  position: absolute; bottom: 20%; left: 20%; right: 20%; height: 50%;
  background: linear-gradient(160deg, #c8a878 0%, #9a7850 100%);
  border-radius: 30% 30% 0 0 / 80% 80% 0 0;
  box-shadow: 0 -10px 30px rgba(0,0,0,0.3);
  transform: perspective(400px) rotateX(5deg);
  animation: dwj-tent 14s ease-in-out infinite alternate;
}
.scn-duke-welcomes-jaques .duke {
  position: absolute; bottom: 30%; left: 35%; width: 30px; height: 48px;
  background: linear-gradient(180deg, #7a5a3a 0%, #4a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 40% 40%;
  transform-origin: bottom center;
  animation: dwj-duke 9s ease-in-out infinite;
}
.scn-duke-welcomes-jaques .jaques-figure {
  position: absolute; bottom: 30%; left: 50%; width: 24px; height: 44px;
  background: linear-gradient(180deg, #2a3a1a 0%, #1a2a0a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: dwj-jaques 7s ease-in-out infinite;
}
.scn-duke-welcomes-jaques .retinue {
  position: absolute; bottom: 28%; width: 20px; height: 38px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
}
.scn-duke-welcomes-jaques .retinue-1 { left: 28%; animation: dwj-ret1 11s ease-in-out infinite; }
.scn-duke-welcomes-jaques .retinue-2 { left: 60%; animation: dwj-ret2 13s ease-in-out infinite; animation-delay: 2s; }
.scn-duke-welcomes-jaques .banner {
  position: absolute; top: 15%; left: 45%; width: 16px; height: 40px;
  background: linear-gradient(180deg, #c8553d 0%, #a0461a 100%);
  border-radius: 2px;
  box-shadow: 0 4px 8px rgba(0,0,0,0.3);
  transform-origin: top center;
  animation: dwj-banner 6s ease-in-out infinite alternate;
}
.scn-duke-welcomes-jaques .sunbeam {
  position: absolute; top: 5%; left: 40%; width: 60px; height: 80%;
  background: linear-gradient(180deg, rgba(255,240,180,0.3) 0%, transparent 100%);
  transform: rotate(-10deg);
  filter: blur(8px);
  animation: dwj-beam 12s ease-in-out infinite alternate;
}
@keyframes dwj-bg {
  0% { opacity: 0.2; }
  50% { opacity: 0.4; }
  100% { opacity: 0.2; }
}
@keyframes dwj-tent {
  0% { transform: perspective(400px) rotateX(5deg); }
  50% { transform: perspective(400px) rotateX(6deg) translateY(-2px); }
  100% { transform: perspective(400px) rotateX(5deg); }
}
@keyframes dwj-duke {
  0% { transform: translateX(0) translateY(0) rotate(-1deg); }
  25% { transform: translateX(3px) translateY(-1px) rotate(0); }
  50% { transform: translateX(0) translateY(0) rotate(1deg); }
  75% { transform: translateX(-3px) translateY(-1px) rotate(0); }
  100% { transform: translateX(0) translateY(0) rotate(-1deg); }
}
@keyframes dwj-jaques {
  0% { transform: translateX(0) translateY(0) rotate(1deg); }
  25% { transform: translateX(-2px) translateY(-1px) rotate(0); }
  50% { transform: translateX(0) translateY(0) rotate(-1deg); }
  75% { transform: translateX(2px) translateY(-1px) rotate(0); }
  100% { transform: translateX(0) translateY(0) rotate(1deg); }
}
@keyframes dwj-ret1 {
  0% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-2px) scale(1.02); }
  100% { transform: translateY(0) scale(1); }
}
@keyframes dwj-ret2 {
  0% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-1px) scale(1.01); }
  100% { transform: translateY(0) scale(1); }
}
@keyframes dwj-banner {
  0% { transform: rotate(-5deg); }
  50% { transform: rotate(0deg); }
  100% { transform: rotate(5deg); }
}
@keyframes dwj-beam {
  0% { opacity: 0.2; transform: rotate(-10deg) scaleX(1); }
  50% { opacity: 0.5; transform: rotate(-8deg) scaleX(1.1); }
  100% { opacity: 0.2; transform: rotate(-10deg) scaleX(1); }
}

/* scene: duke-calls-for-music */
.scn-duke-calls-for-music {
  background:
    linear-gradient(180deg, #f2e4ca 0%, #d0b890 50%, #a08060 100%),
    radial-gradient(ellipse at 50% 40%, #e8d4a8 0%, transparent 70%);
}
.scn-duke-calls-for-music .bg {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, #c8b098 0%, #9a8260 100%);
  opacity: 0.25;
  animation: dcm-bg 20s ease-in-out infinite alternate;
}
.scn-duke-calls-for-music .stage {
  position: absolute; bottom: 15%; left: 10%; right: 10%; height: 40%;
  background: linear-gradient(180deg, #b09878 0%, #8a6a48 100%);
  border-radius: 20% 20% 0 0 / 40% 40% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.3);
  animation: dcm-stage 18s ease-in-out infinite alternate;
}
.scn-duke-calls-for-music .courtier {
  position: absolute; bottom: 30%; width: 20px; height: 40px;
  background: linear-gradient(180deg, #5a4a3a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
}
.scn-duke-calls-for-music .courtier-1 { left: 25%; animation: dcm-court1 8s ease-in-out infinite; }
.scn-duke-calls-for-music .courtier-2 { left: 55%; animation: dcm-court2 10s ease-in-out infinite; animation-delay: 1s; }
.scn-duke-calls-for-music .lute {
  position: absolute; bottom: 30%; left: 35%; width: 14px; height: 28px;
  background: linear-gradient(180deg, #6a5230 0%, #4a3018 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 30% 30%;
  transform: rotate(-15deg);
  animation: dcm-lute 5s ease-in-out infinite alternate;
}
.scn-duke-calls-for-music .pipe {
  position: absolute; bottom: 28%; left: 65%; width: 6px; height: 34px;
  background: linear-gradient(180deg, #8a6a40 0%, #5a4020 100%);
  border-radius: 30% 30% 20% 20% / 50% 50% 20% 20%;
  transform: rotate(10deg);
  animation: dcm-pipe 6s ease-in-out infinite alternate;
}
.scn-duke-calls-for-music .dancer {
  position: absolute; bottom: 20%; width: 18px; height: 36px;
  background: linear-gradient(180deg, #7a5230 0%, #4a2a18 100%);
  border-radius: 50% 50% 30% 30% / 70% 70% 40% 40%;
  transform-origin: bottom center;
}
.scn-duke-calls-for-music .dancer-1 { left: 42%; animation: dcm-dance1 3s ease-in-out infinite; }
.scn-duke-calls-for-music .dancer-2 { left: 48%; animation: dcm-dance2 3.5s ease-in-out infinite; animation-delay: 0.5s; }
.scn-duke-calls-for-music .sparkles {
  position: absolute; top: 25%; left: 30%; right: 30%; height: 30%;
  background: radial-gradient(circle at 30% 50%, rgba(255,230,150,0.3) 0%, transparent 50%),
              radial-gradient(circle at 70% 30%, rgba(255,230,150,0.2) 0%, transparent 40%);
  filter: blur(4px);
  animation: dcm-spark 7s ease-in-out infinite alternate;
}
@keyframes dcm-bg {
  0% { opacity: 0.2; }
  50% { opacity: 0.4; }
  100% { opacity: 0.2; }
}
@keyframes dcm-stage {
  0% { transform: perspective(300px) rotateX(2deg); }
  50% { transform: perspective(300px) rotateX(4deg) translateY(-2px); }
  100% { transform: perspective(300px) rotateX(2deg); }
}
@keyframes dcm-court1 {
  0% { transform: translateY(0) rotate(-1deg); }
  25% { transform: translateY(-2px) rotate(1deg); }
  50% { transform: translateY(0) rotate(0); }
  75% { transform: translateY(-1px) rotate(-1deg); }
  100% { transform: translateY(0) rotate(-1deg); }
}
@keyframes dcm-court2 {
  0% { transform: translateY(0) rotate(1deg); }
  25% { transform: translateY(-1px) rotate(-1deg); }
  50% { transform: translateY(0) rotate(0); }
  75% { transform: translateY(-2px) rotate(1deg); }
  100% { transform: translateY(0) rotate(1deg); }
}
@keyframes dcm-lute {
  0% { transform: rotate(-15deg) scale(1); }
  50% { transform: rotate(-10deg) scale(1.05); }
  100% { transform: rotate(-15deg) scale(1); }
}
@keyframes dcm-pipe {
  0% { transform: rotate(10deg) translateY(0); }
  50% { transform: rotate(5deg) translateY(-2px); }
  100% { transform: rotate(10deg) translateY(0); }
}
@keyframes dcm-dance1 {
  0% { transform: translateX(0) translateY(0) rotate(0); }
  15% { transform: translateX(4px) translateY(-4px) rotate(5deg); }
  30% { transform: translateX(0) translateY(0) rotate(0); }
  45% { transform: translateX(-4px) translateY(-4px) rotate(-5deg); }
  60% { transform: translateX(0) translateY(0) rotate(0); }
  75% { transform: translateX(3px) translateY(-2px) rotate(3deg); }
  100% { transform: translateX(0) translateY(0) rotate(0); }
}
@keyframes dcm-dance2 {
  0% { transform: translateX(0) translateY(0) rotate(0); }
  15% { transform: translateX(-4px) translateY(-4px) rotate(-5deg); }
  30% { transform: translateX(0) translateY(0) rotate(0); }
  45% { transform: translateX(4px) translateY(-4px) rotate(5deg); }
  60% { transform: translateX(0) translateY(0) rotate(0); }
  75% { transform: translateX(-3px) translateY(-2px) rotate(-3deg); }
  100% { transform: translateX(0) translateY(0) rotate(0); }
}
@keyframes dcm-spark {
  0% { opacity: 0.4; transform: scale(1); }
  50% { opacity: 0.8; transform: scale(1.1); }
  100% { opacity: 0.4; transform: scale(1); }
}

.scn-song-criticized {
  background: linear-gradient(180deg, #87ceeb 0%, #f5deb3 40%), radial-gradient(ellipse at 50% 100%, #f5deb3 0%, transparent 70%);
  position: relative;
  overflow: hidden;
  height: 100%;
}
.scn-song-criticized .sky {
  position: absolute;
  inset: 0 0 45% 0;
  background: linear-gradient(180deg, #ffd700 0%, #87ceeb 100%);
  opacity: 0.9;
  animation: sc-son-sky 12s ease-in-out infinite alternate;
}
.scn-song-criticized .ground {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 45%;
  background: linear-gradient(180deg, #228b22 0%, #556b2f 100%);
  border-radius: 20% 60% 0 0 / 30% 40% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.3);
  animation: sc-son-ground 18s ease-in-out infinite alternate;
}
.scn-song-criticized .tree {
  position: absolute;
  bottom: 25%;
  left: 15%;
  width: 20px;
  height: 60%;
  background: linear-gradient(90deg, #5c4033 0%, #8b4513 100%);
  border-radius: 20% 20% 10% 10%;
  transform-origin: bottom center;
  animation: sc-son-tree 6s ease-in-out infinite;
}
.scn-song-criticized .figure-singer {
  position: absolute;
  bottom: 30%;
  left: 35%;
  width: 30px;
  height: 50px;
  background: linear-gradient(180deg, #ffcc80 0%, #d4a373 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: sc-son-singer 2s ease-in-out infinite;
}
.scn-song-criticized .figure-singer::after {
  content: "";
  position: absolute;
  top: -5px;
  left: 50%;
  width: 8px;
  height: 12px;
  background: #5c4033;
  border-radius: 50%;
  transform: translateX(-50%);
}
.scn-song-criticized .figure-listener {
  position: absolute;
  bottom: 30%;
  right: 25%;
  width: 25px;
  height: 48px;
  background: linear-gradient(180deg, #c0a080 0%, #a08060 100%);
  border-radius: 45% 45% 40% 40% / 55% 55% 45% 45%;
  transform-origin: bottom center;
  animation: sc-son-listener 3s ease-in-out infinite;
}
.scn-song-criticized .figure-listener::before {
  content: "";
  position: absolute;
  top: -10px;
  left: 50%;
  width: 14px;
  height: 10px;
  background: #8b0000;
  border-radius: 50%;
  transform: translateX(-50%) rotate(-20deg);
  opacity: 0.7;
}
.scn-song-criticized .note {
  position: absolute;
  width: 8px;
  height: 12px;
  background: #ffb347;
  border-radius: 50% 50% 0 0;
  box-shadow: 0 0 6px 2px rgba(255,179,71,0.6);
  animation: sc-son-note 4s ease-in-out infinite;
}
.scn-song-criticized .note-a {
  bottom: 45%;
  left: 30%;
  animation-delay: 0s;
}
.scn-song-criticized .note-b {
  bottom: 50%;
  left: 40%;
  animation-delay: 1.3s;
  transform: scale(0.8);
}
.scn-song-criticized .note-c {
  bottom: 40%;
  left: 50%;
  animation-delay: 2.6s;
  transform: scale(1.2);
}
@keyframes sc-son-sky {
  0% { opacity: 0.8; }
  50% { opacity: 1; }
  100% { opacity: 0.85; }
}
@keyframes sc-son-ground {
  0% { transform: translateY(0); }
  50% { transform: translateY(-3px); }
  100% { transform: translateY(0); }
}
@keyframes sc-son-tree {
  0%, 100% { transform: rotate(-1deg); }
  50% { transform: rotate(1deg); }
}
@keyframes sc-son-singer {
  0% { transform: translateY(0) rotate(0deg) scaleY(1); }
  25% { transform: translateY(-2px) rotate(2deg) scaleY(1.05); }
  50% { transform: translateY(0) rotate(0deg) scaleY(0.95); }
  75% { transform: translateY(-2px) rotate(-2deg) scaleY(1.05); }
  100% { transform: translateY(0) rotate(0deg) scaleY(1); }
}
@keyframes sc-son-listener {
  0% { transform: translateX(0) rotate(0deg); }
  30% { transform: translateX(-3px) rotate(-5deg); }
  60% { transform: translateX(0) rotate(2deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes sc-son-note {
  0% { transform: translateY(0) rotate(0deg); opacity: 0; }
  20% { opacity: 1; }
  50% { transform: translateY(-20px) rotate(45deg); }
  80% { opacity: 0.5; }
  100% { transform: translateY(-40px) rotate(90deg); opacity: 0; }
}

.scn-orlando-doubts-ganymede {
  background: linear-gradient(135deg, #f5deb3 0%, #d2b48c 50%, #556b2f 100%), radial-gradient(ellipse at 30% 50%, #f5deb3 0%, transparent 70%);
  position: relative;
  overflow: hidden;
  height: 100%;
}
.scn-orlando-doubts-ganymede .bg-sunlight {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, #fff8dc 0%, transparent 60%);
  opacity: 0.6;
  animation: sc-orl-sunlight 8s ease-in-out infinite alternate;
}
.scn-orlando-doubts-ganymede .bg-shadow {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 60%;
  background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,0.3) 100%);
  animation: sc-orl-shadow 12s ease-in-out infinite alternate;
}
.scn-orlando-doubts-ganymede .tree-trunk {
  position: absolute;
  bottom: 15%;
  left: 50%;
  width: 24px;
  height: 70%;
  background: linear-gradient(90deg, #4a2c1a 0%, #7a4a2c 50%, #4a2c1a 100%);
  transform: translateX(-50%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.4);
  animation: sc-orl-trunk 9s ease-in-out infinite;
}
.scn-orlando-doubts-ganymede .figure-orlando {
  position: absolute;
  bottom: 25%;
  left: 30%;
  width: 28px;
  height: 60px;
  background: linear-gradient(180deg, #b08a6a 0%, #806040 100%);
  border-radius: 45% 45% 40% 40% / 55% 55% 45% 45%;
  transform-origin: bottom center;
  animation: sc-orl-orlando 4s ease-in-out infinite;
}
.scn-orlando-doubts-ganymede .figure-orlando::after {
  content: "";
  position: absolute;
  top: -8px;
  left: 50%;
  width: 10px;
  height: 14px;
  background: #5c4033;
  border-radius: 50%;
  transform: translateX(-50%);
}
.scn-orlando-doubts-ganymede .figure-ganymede {
  position: absolute;
  bottom: 25%;
  right: 30%;
  width: 24px;
  height: 55px;
  background: linear-gradient(180deg, #c8a882 0%, #9a7658 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: sc-orl-ganymede 3.5s ease-in-out infinite;
}
.scn-orlando-doubts-ganymede .figure-ganymede::before {
  content: "";
  position: absolute;
  top: -6px;
  left: 50%;
  width: 8px;
  height: 12px;
  background: #5c4033;
  border-radius: 50%;
  transform: translateX(-50%);
}
.scn-orlando-doubts-ganymede .sun-ray {
  position: absolute;
  top: 10%;
  left: 45%;
  width: 10%;
  height: 60%;
  background: linear-gradient(180deg, rgba(255,255,200,0.4) 0%, transparent 100%);
  transform: skewX(-10deg);
  filter: blur(4px);
  animation: sc-orl-ray 5s ease-in-out infinite alternate;
}
.scn-orlando-doubts-ganymede .leaf-shimmer {
  position: absolute;
  top: 5%;
  right: 20%;
  width: 30px;
  height: 30px;
  background: radial-gradient(circle, rgba(255,255,0,0.3) 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(8px);
  animation: sc-orl-shimmer 10s linear infinite;
}
@keyframes sc-orl-sunlight {
  0% { opacity: 0.5; }
  50% { opacity: 0.8; }
  100% { opacity: 0.6; }
}
@keyframes sc-orl-shadow {
  0% { opacity: 0.7; }
  50% { opacity: 0.4; }
  100% { opacity: 0.6; }
}
@keyframes sc-orl-trunk {
  0%, 100% { transform: translateX(-50%) rotate(-0.5deg); }
  50% { transform: translateX(-50%) rotate(0.5deg); }
}
@keyframes sc-orl-orlando {
  0% { transform: translateX(0) rotate(0deg); }
  20% { transform: translateX(2px) rotate(3deg); }
  40% { transform: translateX(0) rotate(0deg); }
  60% { transform: translateX(-2px) rotate(-3deg); }
  80% { transform: translateX(0) rotate(1deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes sc-orl-ganymede {
  0% { transform: translateX(0) rotate(0deg) scaleY(1); }
  25% { transform: translateX(-2px) rotate(-2deg) scaleY(1.03); }
  50% { transform: translateX(0) rotate(0deg) scaleY(0.97); }
  75% { transform: translateX(2px) rotate(2deg) scaleY(1.02); }
  100% { transform: translateX(0) rotate(0deg) scaleY(1); }
}
@keyframes sc-orl-ray {
  0% { opacity: 0.3; transform: skewX(-10deg) scaleY(0.9); }
  100% { opacity: 0.6; transform: skewX(-10deg) scaleY(1.1); }
}
@keyframes sc-orl-shimmer {
  0% { transform: translate(0,0) scale(1); opacity:0.2; }
  50% { transform: translate(10px,-10px) scale(1.5); opacity:0.6; }
  100% { transform: translate(20px,-20px) scale(1); opacity:0.2; }
}

.scn-rosalind-gathers-promises {
  background: linear-gradient(180deg, #f5deb3 0%, #d2b48c 50%, #8fbc8f 100%), radial-gradient(ellipse at 50% 30%, #fff8dc 0%, transparent 60%);
  position: relative;
  overflow: hidden;
  height: 100%;
}
.scn-rosalind-gathers-promises .bg-forest {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, #daa520 0%, transparent 40%, #556b2f 100%);
  opacity: 0.7;
  animation: sc-rosg-bg 15s ease-in-out infinite alternate;
}
.scn-rosalind-gathers-promises .shadow-striped {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 50%;
  background: repeating-linear-gradient(90deg, transparent, transparent 15px, rgba(0,0,0,0.15) 15px, rgba(0,0,0,0.15) 30px);
  animation: sc-rosg-stripe 20s linear infinite;
}
.scn-rosalind-gathers-promises .figure-rosalind {
  position: absolute;
  bottom: 30%;
  left: 40%;
  width: 30px;
  height: 55px;
  background: linear-gradient(180deg, #e6c9a8 0%, #b8967a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: sc-rosg-ros 3s ease-in-out infinite;
}
.scn-rosalind-gathers-promises .figure-rosalind::after {
  content: "";
  position: absolute;
  top: -6px;
  left: 50%;
  width: 10px;
  height: 14px;
  background: #5c4033;
  border-radius: 50%;
  transform: translateX(-50%);
}
.scn-rosalind-gathers-promises .figure-orlando-gather {
  position: absolute;
  bottom: 30%;
  left: 15%;
  width: 26px;
  height: 58px;
  background: linear-gradient(180deg, #b08a6a 0%, #806040 100%);
  border-radius: 45% 45% 40% 40% / 55% 55% 45% 45%;
  transform-origin: bottom center;
  animation: sc-rosg-orlando 4s ease-in-out infinite;
}
.scn-rosalind-gathers-promises .figure-orlando-gather::before {
  content: "";
  position: absolute;
  top: -8px;
  left: 50%;
  width: 10px;
  height: 14px;
  background: #5c4033;
  border-radius: 50%;
  transform: translateX(-50%);
}
.scn-rosalind-gathers-promises .figure-phebe {
  position: absolute;
  bottom: 30%;
  right: 25%;
  width: 24px;
  height: 52px;
  background: linear-gradient(180deg, #d4a373 0%, #b08050 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: sc-rosg-phebe 5s ease-in-out infinite;
}
.scn-rosalind-gathers-promises .figure-phebe::after {
  content: "";
  position: absolute;
  top: -6px;
  left: 50%;
  width: 8px;
  height: 12px;
  background: #5c4033;
  border-radius: 50%;
  transform: translateX(-50%);
}
.scn-rosalind-gathers-promises .figure-silvius {
  position: absolute;
  bottom: 30%;
  right: 5%;
  width: 22px;
  height: 50px;
  background: linear-gradient(180deg, #a08060 0%, #806040 100%);
  border-radius: 40% 40% 35% 35% / 55% 55% 45% 45%;
  transform-origin: bottom center;
  animation: sc-rosg-silvius 6s ease-in-out infinite;
}
.scn-rosalind-gathers-promises .figure-silvius::before {
  content: "";
  position: absolute;
  top: -5px;
  left: 50%;
  width: 8px;
  height: 12px;
  background: #5c4033;
  border-radius: 50%;
  transform: translateX(-50%);
}
.scn-rosalind-gathers-promises .sunflares {
  position: absolute;
  top: 15%;
  left: 50%;
  width: 40px;
  height: 40px;
  background: radial-gradient(circle, #ffffcc 0%, transparent 70%);
  filter: blur(10px);
  animation: sc-rosg-flare 8s ease-in-out infinite alternate;
}
@keyframes sc-rosg-bg {
  0% { opacity: 0.6; }
  50% { opacity: 0.8; }
  100% { opacity: 0.65; }
}
@keyframes sc-rosg-stripe {
  0% { background-position: 0 0; }
  100% { background-position: 60px 0; }
}
@keyframes sc-rosg-ros {
  0% { transform: translateX(0) rotate(0deg); }
  30% { transform: translateX(3px) rotate(5deg) scaleY(1.02); }
  60% { transform: translateX(0) rotate(-2deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes sc-rosg-orlando {
  0% { transform: translateY(0) rotate(0deg); }
  25% { transform: translateY(-2px) rotate(2deg) scaleX(0.98); }
  50% { transform: translateY(0) rotate(0deg); }
  75% { transform: translateY(-2px) rotate(-2deg) scaleX(1.02); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes sc-rosg-phebe {
  0% { transform: translateX(0) rotate(0deg); }
  40% { transform: translateX(-4px) rotate(-4deg); }
  80% { transform: translateX(2px) rotate(2deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes sc-rosg-silvius {
  0%, 100% { transform: scaleY(1) rotate(0deg); }
  50% { transform: scaleY(0.96) rotate(2deg); }
}
@keyframes sc-rosg-flare {
  0% { transform: translate(-50%, -50%) scale(0.8); opacity: 0.5; }
  100% { transform: translate(-50%, -50%) scale(1.2); opacity: 1; }
}

.scn-rosalind-vows-resolution {
  background: linear-gradient(180deg, #f5deb3 0%, #daa520 40%, #8fbc8f 100%), radial-gradient(ellipse at 50% 80%, #fff8dc 0%, transparent 70%);
  position: relative;
  overflow: hidden;
  height: 100%;
}
.scn-rosalind-vows-resolution .bg-forest-floor {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, #a0522d 0%, #6b3a1f 100%);
  opacity: 0.8;
  animation: sc-rosv-floor 20s ease-in-out infinite alternate;
}
.scn-rosalind-vows-resolution .light-dapples {
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 20% 30%, rgba(255,255,200,0.3) 0%, transparent 50%),
              radial-gradient(circle at 80% 60%, rgba(255,255,200,0.2) 0%, transparent 50%);
  animation: sc-rosv-dapple 15s linear infinite;
}
.scn-rosalind-vows-resolution .figure-vow-1 {
  position: absolute;
  bottom: 25%;
  left: 10%;
  width: 20px;
  height: 48px;
  background: linear-gradient(180deg, #b08a6a 0%, #806040 100%);
  border-radius: 50% 50% 40% 40% / 55% 55% 45% 45%;
  animation: sc-rosv-fig1 4s ease-in-out infinite;
}
.scn-rosalind-vows-resolution .figure-vow-1::after {
  content: "";
  position: absolute;
  top: -6px;
  left: 50%;
  width: 8px;
  height: 12px;
  background: #5c4033;
  border-radius: 50%;
  transform: translateX(-50%);
}
.scn-rosalind-vows-resolution .figure-vow-2 {
  position: absolute;
  bottom: 25%;
  left: 30%;
  width: 22px;
  height: 50px;
  background: linear-gradient(180deg, #e6c9a8 0%, #b8967a 100%);
  border-radius: 50% 50% 40% 40% / 55% 55% 45% 45%;
  animation: sc-rosv-fig2 4.5s ease-in-out infinite;
}
.scn-rosalind-vows-resolution .figure-vow-2::before {
  content: "";
  position: absolute;
  top: -6px;
  left: 50%;
  width: 8px;
  height: 12px;
  background: #5c4033;
  border-radius: 50%;
  transform: translateX(-50%);
}
.scn-rosalind-vows-resolution .figure-vow-3 {
  position: absolute;
  bottom: 25%;
  left: 50%;
  width: 24px;
  height: 52px;
  background: linear-gradient(180deg, #d4a373 0%, #b08050 100%);
  border-radius: 50% 50% 40% 40% / 55% 55% 45% 45%;
  animation: sc-rosv-fig3 3.8s ease-in-out infinite;
}
.scn-rosalind-vows-resolution .figure-vow-3::after {
  content: "";
  position: absolute;
  top: -6px;
  left: 50%;
  width: 8px;
  height: 12px;
  background: #5c4033;
  border-radius: 50%;
  transform: translateX(-50%);
}
.scn-rosalind-vows-resolution .figure-vow-4 {
  position: absolute;
  bottom: 25%;
  left: 70%;
  width: 22px;
  height: 50px;
  background: linear-gradient(180deg, #c0a080 0%, #a08060 100%);
  border-radius: 45% 45% 40% 40% / 55% 55% 45% 45%;
  animation: sc-rosv-fig4 5.2s ease-in-out infinite;
}
.scn-rosalind-vows-resolution .figure-vow-4::before {
  content: "";
  position: absolute;
  top: -6px;
  left: 50%;
  width: 8px;
  height: 12px;
  background: #5c4033;
  border-radius: 50%;
  transform: translateX(-50%);
}
.scn-rosalind-vows-resolution .figure-vow-5 {
  position: absolute;
  bottom: 25%;
  right: 5%;
  width: 20px;
  height: 48px;
  background: linear-gradient(180deg, #a08060 0%, #806040 100%);
  border-radius: 40% 40% 35% 35% / 50% 50% 45% 45%;
  animation: sc-rosv-fig5 4.2s ease-in-out infinite;
}
.scn-rosalind-vows-resolution .figure-vow-5::after {
  content: "";
  position: absolute;
  top: -5px;
  left: 50%;
  width: 8px;
  height: 12px;
  background: #5c4033;
  border-radius: 50%;
  transform: translateX(-50%);
}
.scn-rosalind-vows-resolution .center-altar {
  position: absolute;
  bottom: 35%;
  left: 50%;
  width: 30px;
  height: 20px;
  background: linear-gradient(180deg, #8b4513 0%, #5c3a1e 100%);
  border-radius: 20% 20% 10% 10%;
  transform: translateX(-50%);
  box-shadow: 0 4px 8px rgba(0,0,0,0.4);
  animation: sc-rosv-altar 6s ease-in-out infinite;
}
@keyframes sc-rosv-floor {
  0% { opacity: 0.7; }
  50% { opacity: 0.9; }
  100% { opacity: 0.75; }
}
@keyframes sc-rosv-dapple {
  0% { background-position: 0 0, 0 0; }
  100% { background-position: 20px 30px, -20px 10px; }
}
@keyframes sc-rosv-fig1 {
  0%, 100% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-3px) rotate(3deg); }
}
@keyframes sc-rosv-fig2 {
  0%, 100% { transform: translateY(0) rotate(0deg) scaleX(1); }
  50% { transform: translateY(-2px) rotate(-2deg) scaleX(1.02); }
}
@keyframes sc-rosv-fig3 {
  0%, 100% { transform: translateY(0) rotate(0deg) scaleY(1); }
  50% { transform: translateY(-4px) rotate(0deg) scaleY(0.98); }
}
@keyframes sc-rosv-fig4 {
  0%, 100% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-2px) rotate(2deg); }
}
@keyframes sc-rosv-fig5 {
  0%, 100% { transform: translateY(0) rotate(0deg) scale(1); }
  50% { transform: translateY(-1px) rotate(-3deg) scale(0.99); }
}
@keyframes sc-rosv-altar {
  0%, 100% { transform: translateX(-50%) scale(1); }
  50% { transform: translateX(-50%) scale(1.05); }
}

/* forest-rosalind-inquiry */
.scn-forest-rosalind-inquiry {
  background: linear-gradient(180deg, #e8f0d0 0%, #b0c090 40%, #607040 100%), radial-gradient(ellipse at 60% 20%, #fff4d0 30%, transparent 70%);
}
.scn-forest-rosalind-inquiry .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #faffd0 0%, transparent 100%);
  animation: ri-sky-glow 12s ease-in-out infinite alternate;
}
.scn-forest-rosalind-inquiry .sun-flare {
  position: absolute; top: 8%; left: 68%; width: 48px; height: 48px;
  background: radial-gradient(circle, #fff8c0 0%, #ffd080 50%, transparent 80%);
  border-radius: 50%;
  box-shadow: 0 0 80px 40px rgba(255,208,128,.6), 0 0 160px 60px rgba(255,240,200,.3);
  animation: ri-sun-pulse 8s ease-in-out infinite alternate;
}
.scn-forest-rosalind-inquiry .tree-trunk {
  position: absolute; bottom: 22%; left: 32%; width: 22px; height: 130px;
  background: linear-gradient(180deg, #5a3a1a 0%, #3a2a0a 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: 6px 0 12px rgba(0,0,0,.3);
  animation: ri-tree-sway 6s ease-in-out infinite;
}
.scn-forest-rosalind-inquiry .figure-rosalind {
  position: absolute; bottom: 15%; left: 42%; width: 26px; height: 52px;
  background: linear-gradient(180deg, #c8553d 0%, #8a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: ri-rosalind-gesture 3s ease-in-out infinite;
}
.scn-forest-rosalind-inquiry .figure-clown {
  position: absolute; bottom: 16%; left: 56%; width: 22px; height: 46px;
  background: linear-gradient(180deg, #4a6a2a 0%, #2a4a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: ri-clown-recoil 2.5s ease-in-out infinite alternate;
}
.scn-forest-rosalind-inquiry .ground-shadow {
  position: absolute; bottom: 10%; left: 40%; width: 60px; height: 12px;
  background: rgba(0,0,0,.2);
  border-radius: 50%;
  filter: blur(4px);
  animation: ri-shadow-pulse 4s ease-in-out infinite;
}
.scn-forest-rosalind-inquiry .falling-leaf {
  position: absolute; top: 5%; left: 20%; width: 10px; height: 14px;
  background: #6a8a3a;
  border-radius: 50% 0 50% 0;
  animation: ri-leaf-fall 5s linear infinite;
}
@keyframes ri-sky-glow {
  0% { opacity: .7; }
  50% { opacity: 1; }
  100% { opacity: .8; }
}
@keyframes ri-sun-pulse {
  0% { transform: scale(.95); opacity: .8; box-shadow: 0 0 60px 30px rgba(255,208,128,.5), 0 0 120px 40px rgba(255,240,200,.3); }
  50% { transform: scale(1.05); opacity: 1; box-shadow: 0 0 100px 50px rgba(255,208,128,.7), 0 0 180px 60px rgba(255,240,200,.5); }
  100% { transform: scale(1); opacity: .9; box-shadow: 0 0 70px 35px rgba(255,208,128,.6), 0 0 140px 50px rgba(255,240,200,.4); }
}
@keyframes ri-tree-sway {
  0%,100% { transform: rotate(0deg) translateX(0); }
  33% { transform: rotate(2deg) translateX(2px); }
  66% { transform: rotate(-2deg) translateX(-2px); }
}
@keyframes ri-rosalind-gesture {
  0%,100% { transform: translateX(0) rotate(0deg); }
  30% { transform: translateX(8px) rotate(-5deg); }
  60% { transform: translateX(-4px) rotate(2deg); }
}
@keyframes ri-clown-recoil {
  0% { transform: translateX(0) scaleY(1); }
  50% { transform: translateX(-10px) scaleY(.95); }
  100% { transform: translateX(0) scaleY(1); }
}
@keyframes ri-shadow-pulse {
  0%,100% { transform: scaleX(1); opacity: .2; }
  50% { transform: scaleX(1.1); opacity: .35; }
}
@keyframes ri-leaf-fall {
  0% { transform: translateY(0) rotate(0deg); opacity: 1; }
  50% { transform: translateY(40vh) translateX(20px) rotate(180deg); opacity: .7; }
  100% { transform: translateY(80vh) translateX(-10px) rotate(360deg); opacity: 0; }
}

/* forest-corin-offer */
.scn-forest-corin-offer {
  background: linear-gradient(180deg, #ffe8b0 0%, #d4c090 40%, #8a9a6a 100%), radial-gradient(ellipse at 30% 30%, #fff4d0 30%, transparent 60%);
}
.scn-forest-corin-offer .sky-bg {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #fff0c0 0%, transparent 100%);
  animation: co-sky-shift 14s ease-in-out infinite alternate;
}
.scn-forest-corin-offer .sun-glint {
  position: absolute; top: 10%; left: 20%; width: 40px; height: 40px;
  background: radial-gradient(circle, #fff8d0 0%, #ffd080 60%, transparent 80%);
  border-radius: 50%;
  box-shadow: 0 0 70px 30px rgba(255,208,128,.5);
  animation: co-sun-glow 10s ease-in-out infinite alternate;
}
.scn-forest-corin-offer .rolling-hill {
  position: absolute; bottom: 28%; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #7a9a5a 0%, #4a6a2a 100%);
  border-radius: 60% 40% 0 0;
  box-shadow: inset 0 8px 16px rgba(0,0,0,.2);
  animation: co-hill-sway 16s ease-in-out infinite alternate;
}
.scn-forest-corin-offer .shepherd {
  position: absolute; bottom: 30%; left: 38%; width: 24px; height: 50px;
  background: linear-gradient(180deg, #b88a5a 0%, #7a5a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: co-shepherd-bow 6s ease-in-out infinite;
}
.scn-forest-corin-offer .shepherd-staff {
  position: absolute; bottom: 32%; left: 36%; width: 4px; height: 60px;
  background: linear-gradient(180deg, #6a4a1a 0%, #3a2a0a 100%);
  border-radius: 20% 20% 0 0;
  transform-origin: bottom center;
  animation: co-staff-sway 5s ease-in-out infinite alternate;
}
.scn-forest-corin-offer .sheep {
  position: absolute; bottom: 32%; left: 55%; width: 28px; height: 18px;
  background: radial-gradient(ellipse at 50% 60%, #e0d8c0 0%, #b0a890 100%);
  border-radius: 50%;
  box-shadow: 0 4px 8px rgba(0,0,0,.2);
  animation: co-sheep-graze 8s ease-in-out infinite;
}
.scn-forest-corin-offer .meadow-grass {
  position: absolute; bottom: 22%; left: 0; right: 0; height: 12%;
  background: repeating-linear-gradient(90deg, transparent, transparent 6px, #6a8a3a 6px, #6a8a3a 8px);
  opacity: .6;
  animation: co-grass-wave 9s ease-in-out infinite alternate;
}
@keyframes co-sky-shift {
  0%,100% { opacity: .8; }
  50% { opacity: 1; }
}
@keyframes co-sun-glow {
  0% { transform: scale(.95); box-shadow: 0 0 60px 20px rgba(255,208,128,.4); }
  50% { transform: scale(1.05); box-shadow: 0 0 80px 30px rgba(255,208,128,.6); }
  100% { transform: scale(1); box-shadow: 0 0 70px 25px rgba(255,208,128,.5); }
}
@keyframes co-hill-sway {
  0% { transform: translateY(0) scaleY(1); }
  50% { transform: translateY(-3px) scaleY(1.01); }
  100% { transform: translateY(0); }
}
@keyframes co-shepherd-bow {
  0%,100% { transform: translateY(0) rotate(0deg); }
  30% { transform: translateY(-2px) rotate(-3deg); }
  70% { transform: translateY(1px) rotate(2deg); }
}
@keyframes co-staff-sway {
  0% { transform: rotate(0deg); }
  50% { transform: rotate(4deg); }
  100% { transform: rotate(0deg); }
}
@keyframes co-sheep-graze {
  0%,100% { transform: translateX(0) scaleX(1); }
  25% { transform: translateX(10px) scaleX(.95); }
  75% { transform: translateX(-5px) scaleX(1); }
}
@keyframes co-grass-wave {
  0% { background-position: 0 0; }
  100% { background-position: 20px 0; }
}

/* forest-cottage-purchase */
.scn-forest-cottage-purchase {
  background: linear-gradient(180deg, #e0f0d0 0%, #b0c090 50%, #708050 100%), radial-gradient(ellipse at 50% 0%, #fff8e0 40%, transparent 80%);
}
.scn-forest-cottage-purchase .sky-canvas {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #d0e8c0 0%, transparent 100%);
  animation: cp-sky-breathe 18s ease-in-out infinite alternate;
}
.scn-forest-cottage-purchase .cottage-walls {
  position: absolute; bottom: 20%; left: 35%; width: 120px; height: 80px;
  background: linear-gradient(180deg, #b89868 0%, #8a7050 100%);
  border-radius: 6% 6% 4% 4%;
  box-shadow: 0 8px 16px rgba(0,0,0,.3);
  animation: cp-house-float 10s ease-in-out infinite;
}
.scn-forest-cottage-purchase .cottage-roof {
  position: absolute; bottom: 50%; left: 32%; width: 140px; height: 0;
  border-left: 8px solid transparent;
  border-right: 8px solid transparent;
  border-bottom: 50px solid #6a4a2a;
  filter: drop-shadow(0 4px 6px rgba(0,0,0,.3));
  animation: cp-roof-sway 12s ease-in-out infinite alternate;
}
.scn-forest-cottage-purchase .cottage-door {
  position: absolute; bottom: 20%; left: 45%; width: 24px; height: 40px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: inset 0 0 8px rgba(0,0,0,.5);
  animation: cp-door-creak 8s ease-in-out infinite alternate;
}
.scn-forest-cottage-purchase .cottage-window {
  position: absolute; bottom: 32%; left: 37%; width: 20px; height: 20px;
  background: radial-gradient(circle, #d0e8f0 0%, #80a8c0 80%);
  border-radius: 4px;
  box-shadow: inset 0 0 12px rgba(128,168,192,.6), 0 0 20px 8px rgba(128,168,192,.3);
  animation: cp-window-glint 6s ease-in-out infinite alternate;
}
.scn-forest-cottage-purchase .path-flagstone {
  position: absolute; bottom: 8%; left: 42%; width: 80px; height: 12px;
  background: repeating-linear-gradient(90deg, #b0a890 0px, #b0a890 16px, #908070 16px, #908070 32px);
  border-radius: 10% 10% 0 0;
  opacity: .8;
  animation: cp-path-pulse 14s ease-in-out infinite;
}
.scn-forest-cottage-purchase .figure-buyer {
  position: absolute; bottom: 12%; left: 44%; width: 22px; height: 48px;
  background: linear-gradient(180deg, #c87040 0%, #8a5030 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: cp-buyer-approach 10s ease-in-out infinite;
}
.scn-forest-cottage-purchase .figure-seller {
  position: absolute; bottom: 14%; left: 52%; width: 24px; height: 50px;
  background: linear-gradient(180deg, #587040 0%, #3a5020 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: cp-seller-gesture 7s ease-in-out infinite alternate;
}
.scn-forest-cottage-purchase .oak-tree {
  position: absolute; bottom: 18%; left: 22%; width: 18px; height: 120px;
  background: linear-gradient(180deg, #5a3a1a 0%, #3a2a0a 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: 4px 0 10px rgba(0,0,0,.2);
  animation: cp-tree-sway 15s ease-in-out infinite alternate;
}
@keyframes cp-sky-breathe {
  0%,100% { opacity: .85; }
  50% { opacity: 1; }
}
@keyframes cp-house-float {
  0%,100% { transform: translateY(0); }
  50% { transform: translateY(-3px); }
}
@keyframes cp-roof-sway {
  0% { transform: rotate(0deg); }
  50% { transform: rotate(1deg); }
  100% { transform: rotate(-1deg); }
}
@keyframes cp-door-creak {
  0% { transform: translateY(0) skewY(0deg); }
  50% { transform: translateY(-1px) skewY(2deg); }
  100% { transform: translateY(0) skewY(0deg); }
}
@keyframes cp-window-glint {
  0% { opacity: .7; box-shadow: inset 0 0 8px rgba(128,168,192,.4), 0 0 12px 4px rgba(128,168,192,.2); }
  50% { opacity: 1; box-shadow: inset 0 0 16px rgba(128,168,192,.7), 0 0 24px 8px rgba(128,168,192,.4); }
  100% { opacity: .8; box-shadow: inset 0 0 10px rgba(128,168,192,.5), 0 0 16px 6px rgba(128,168,192,.3); }
}
@keyframes cp-path-pulse {
  0%,100% { transform: scaleX(1); }
  50% { transform: scaleX(1.02); }
}
@keyframes cp-buyer-approach {
  0%,100% { transform: translateX(0); }
  25% { transform: translateX(12px); }
  50% { transform: translateX(-4px); }
  75% { transform: translateX(8px); }
}
@keyframes cp-seller-gesture {
  0% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-3px) rotate(-4deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes cp-tree-sway {
  0% { transform: rotate(0deg) translateX(0); }
  50% { transform: rotate(2deg) translateX(-2px); }
  100% { transform: rotate(-1deg) translateX(1px); }
}

/* forest-song-amians */
.scn-forest-song-amians {
  background: linear-gradient(180deg, #d0e8c0 0%, #a0c080 50%, #609050 100%), radial-gradient(ellipse at 40% 30%, #fff0d0 30%, transparent 70%);
}
.scn-forest-song-amians .sky-dappled {
  position: absolute; inset: 0 0 45% 0;
  background: repeating-linear-gradient(0deg, transparent, transparent 20px, rgba(255,240,200,.15) 20px, rgba(255,240,200,.15) 22px);
  animation: sa-dapple 20s linear infinite;
}
.scn-forest-song-amians .great-oak {
  position: absolute; bottom: 12%; left: 46%; width: 30px; height: 160px;
  background: linear-gradient(180deg, #5a3a1a 0%, #3a2a0a 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: -8px 0 16px rgba(0,0,0,.25);
  animation: sa-trunk-sway 12s ease-in-out infinite alternate;
}
.scn-forest-song-amians .oak-canopy {
  position: absolute; bottom: 60%; left: 36%; width: 120px; height: 80px;
  background: radial-gradient(ellipse at 50% 60%, #4a7a2a 0%, #2a5a1a 100%);
  border-radius: 50%;
  filter: blur(2px);
  box-shadow: 0 0 40px 20px rgba(42,90,26,.4);
  animation: sa-canopy-breathe 15s ease-in-out infinite alternate;
}
.scn-forest-song-amians .sitting-figure {
  position: absolute; bottom: 18%; left: 44%; width: 24px; height: 30px;
  background: linear-gradient(180deg, #b08050 0%, #705030 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: sa-figure-sway 8s ease-in-out infinite;
}
.scn-forest-song-amians .song-bird {
  position: absolute; top: 25%; left: 60%; width: 12px; height: 8px;
  background: radial-gradient(ellipse at 50% 50%, #d0c080 0%, #a09060 100%);
  border-radius: 50% 50% 30% 30%;
  animation: sa-bird-glide 14s ease-in-out infinite;
}
.scn-forest-song-amians .falling-blossom {
  position: absolute; top: 10%; left: 30%; width: 8px; height: 8px;
  background: #e0b890;
  border-radius: 50%;
  filter: blur(1px);
  animation: sa-blossom-fall 9s linear infinite;
}
.scn-forest-song-amians .mossy-ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 12%;
  background: radial-gradient(ellipse at 50% 100%, #4a6a2a 0%, #2a4a1a 100%);
  border-radius: 30% 30% 0 0;
  animation: sa-ground-shimmer 22s ease-in-out infinite alternate;
}
@keyframes sa-dapple {
  0% { background-position: 0 0; opacity: .3; }
  50% { background-position: 0 30px; opacity: .5; }
  100% { background-position: 0 0; opacity: .3; }
}
@keyframes sa-trunk-sway {
  0% { transform: rotate(0deg) scaleY(1); }
  50% { transform: rotate(1deg) scaleY(1.005); }
  100% { transform: rotate(-1deg) scaleY(1); }
}
@keyframes sa-canopy-breathe {
  0% { transform: scale(1) translateY(0); filter: blur(2px); }
  50% { transform: scale(1.02) translateY(-4px); filter: blur(1px); }
  100% { transform: scale(1) translateY(0); filter: blur(2px); }
}
@keyframes sa-figure-sway {
  0%,100% { transform: translateX(0) rotate(0deg); }
  30% { transform: translateX(6px) rotate(-3deg); }
  70% { transform: translateX(-4px) rotate(2deg); }
}
@keyframes sa-bird-glide {
  0% { transform: translateX(0) translateY(0) rotate(0deg); opacity: 1; }
  25% { transform: translateX(30px) translateY(-20px) rotate(10deg); opacity: .8; }
  50% { transform: translateX(-10px) translateY(-40px) rotate(-5deg); opacity: 1; }
  75% { transform: translateX(20px) translateY(-10px) rotate(15deg); opacity: .9; }
  100% { transform: translateX(0) translateY(0) rotate(0deg); opacity: 1; }
}
@keyframes sa-blossom-fall {
  0% { transform: translateY(0) rotate(0deg) scale(1); opacity: 1; }
  50% { transform: translateY(35vh) translateX(15px) rotate(180deg) scale(.7); opacity: .6; }
  100% { transform: translateY(70vh) translateX(-10px) rotate(360deg) scale(.3); opacity: 0; }
}
@keyframes sa-ground-shimmer {
  0% { opacity: .7; }
  50% { opacity: 1; }
  100% { opacity: .8; }
}

.scn-rosalind-quells-protests {
  background: linear-gradient(180deg, #aac7e0 0%, #f5e6c8 40%, #d4b896 70%, #7a634a 100%);
  overflow: hidden;
}
.scn-rosalind-quells-protests .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #cde4f0 0%, #fff4d4 100%);
  opacity: 0.85;
  animation: rqp-sky 14s ease-in-out infinite alternate;
}
.scn-rosalind-quells-protests .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #6b8c4a 0%, #3d5a2a 100%);
  border-radius: 30% 70% 0 0 / 60% 40% 0 0;
  animation: rqp-ground 6s ease-in-out infinite alternate;
}
.scn-rosalind-quells-protests .tree-left {
  position: absolute; bottom: 30%; left: 10%; width: 12px; height: 60%;
  background: linear-gradient(90deg, #4a2e1a 0%, #2c1a0e 100%);
  border-radius: 4px;
  transform-origin: bottom center;
  animation: rqp-tree 8s ease-in-out infinite alternate;
}
.scn-rosalind-quells-protests .tree-right {
  position: absolute; bottom: 28%; right: 12%; width: 14px; height: 65%;
  background: linear-gradient(90deg, #4a2e1a 0%, #2c1a0e 100%);
  border-radius: 4px;
  transform-origin: bottom center;
  animation: rqp-tree 9s ease-in-out infinite alternate-reverse;
}
.scn-rosalind-quells-protests .figure-rosalind {
  position: absolute; bottom: 20%; left: 50%; transform: translateX(-50%);
  width: 20px; height: 50px;
  background: linear-gradient(180deg, #2a2a2a 0%, #0d0d0d 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: rqp-figure-center 5s ease-in-out infinite;
}
.scn-rosalind-quells-protests .figure-silvius {
  position: absolute; bottom: 20%; left: 35%; transform: translateX(-50%);
  width: 18px; height: 44px;
  background: linear-gradient(180deg, #3a3a3a 0%, #1a1a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: rqp-figure-left 5s ease-in-out infinite 0.5s;
}
.scn-rosalind-quells-protests .figure-phebe {
  position: absolute; bottom: 20%; left: 65%; transform: translateX(-50%);
  width: 16px; height: 42px;
  background: linear-gradient(180deg, #3a3a3a 0%, #1a1a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: rqp-figure-right 5s ease-in-out infinite 1s;
}
.scn-rosalind-quells-protests .sunbeam {
  position: absolute; top: 5%; left: 30%; width: 200px; height: 4px;
  background: linear-gradient(90deg, rgba(255,255,230,0.6) 0%, transparent 100%);
  transform-origin: left center;
  filter: blur(6px);
  animation: rqp-sunbeam 12s linear infinite;
}
@keyframes rqp-sky { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.85; } }
@keyframes rqp-ground { 0% { transform: translateY(0); } 50% { transform: translateY(-4px); } 100% { transform: translateY(0); } }
@keyframes rqp-tree { 0% { transform: rotate(-2deg); } 50% { transform: rotate(2deg); } 100% { transform: rotate(-2deg); } }
@keyframes rqp-figure-center { 0% { transform: translateX(-50%) translateY(0); } 25% { transform: translateX(-48%) translateY(-2px); } 50% { transform: translateX(-50%) translateY(0); } 75% { transform: translateX(-52%) translateY(-1px); } 100% { transform: translateX(-50%) translateY(0); } }
@keyframes rqp-figure-left { 0% { transform: translateX(-50%) translateY(0) rotate(-2deg); } 25% { transform: translateX(-50%) translateY(-1px) rotate(0deg); } 50% { transform: translateX(-50%) translateY(0) rotate(2deg); } 75% { transform: translateX(-50%) translateY(-1px) rotate(0deg); } 100% { transform: translateX(-50%) translateY(0) rotate(-2deg); } }
@keyframes rqp-figure-right { 0% { transform: translateX(-50%) translateY(0) rotate(2deg); } 25% { transform: translateX(-50%) translateY(-1px) rotate(0deg); } 50% { transform: translateX(-50%) translateY(0) rotate(-2deg); } 75% { transform: translateX(-50%) translateY(-1px) rotate(0deg); } 100% { transform: translateX(-50%) translateY(0) rotate(2deg); } }
@keyframes rqp-sunbeam { 0% { transform: rotate(-10deg) translateX(0); } 50% { transform: rotate(10deg) translateX(30px); } 100% { transform: rotate(-10deg) translateX(0); } }

.scn-rosalind-sets-meeting {
  background: linear-gradient(135deg, #aac7e0 0%, #f5e6c8 40%, #d4b896 70%, #7a634a 100%);
  overflow: hidden;
}
.scn-rosalind-sets-meeting .sky {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(180deg, #d4e8f0 0%, #fff4d4 100%);
  opacity: 0.9;
  animation: rsm-sky 10s ease-in-out infinite alternate;
}
.scn-rosalind-sets-meeting .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #6b8c4a 0%, #3d5a2a 100%);
  border-radius: 40% 60% 0 0 / 50% 50% 0 0;
  animation: rsm-ground 8s ease-in-out infinite alternate;
}
.scn-rosalind-sets-meeting .branches {
  position: absolute; top: 5%; left: 15%; width: 70%; height: 30%;
  background: radial-gradient(ellipse at 50% 100%, #4a2e1a 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(4px);
  animation: rsm-branches 12s ease-in-out infinite alternate;
}
.scn-rosalind-sets-meeting .figure-rosalind {
  position: absolute; bottom: 20%; left: 50%; transform: translateX(-50%);
  width: 22px; height: 52px;
  background: linear-gradient(180deg, #2a2a2a 0%, #0d0d0d 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: rsm-fig-center 6s ease-in-out infinite;
}
.scn-rosalind-sets-meeting .figure-orlando {
  position: absolute; bottom: 20%; left: 30%; transform: translateX(-50%);
  width: 20px; height: 48px;
  background: linear-gradient(180deg, #3a3a3a 0%, #1a1a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: rsm-fig-left 6s ease-in-out infinite 0.5s;
}
.scn-rosalind-sets-meeting .figure-couple {
  position: absolute; bottom: 20%; left: 70%; transform: translateX(-50%);
  width: 30px; height: 48px;
  background: linear-gradient(180deg, #3a3a3a 0%, #1a1a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: inset -10px 0 0 #1a1a1a, inset 10px 0 0 #1a1a1a;
  animation: rsm-fig-right 6s ease-in-out infinite 1s;
}
.scn-rosalind-sets-meeting .sun-rays {
  position: absolute; top: 10%; left: 50%; transform: translateX(-50%);
  width: 100px; height: 100px;
  background: radial-gradient(circle, rgba(255,255,230,0.4) 0%, transparent 70%);
  filter: blur(8px);
  animation: rsm-rays 20s linear infinite;
}
@keyframes rsm-sky { 0% { opacity: 0.85; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes rsm-ground { 0% { transform: translateY(0); } 50% { transform: translateY(-3px); } 100% { transform: translateY(0); } }
@keyframes rsm-branches { 0% { transform: scaleX(1) rotate(-1deg); } 50% { transform: scaleX(1.05) rotate(1deg); } 100% { transform: scaleX(1) rotate(-1deg); } }
@keyframes rsm-fig-center { 0% { transform: translateX(-50%) translateY(0) rotate(-2deg); } 25% { transform: translateX(-50%) translateY(-2px) rotate(0deg); } 50% { transform: translateX(-50%) translateY(0) rotate(2deg); } 75% { transform: translateX(-50%) translateY(-1px) rotate(0deg); } 100% { transform: translateX(-50%) translateY(0) rotate(-2deg); } }
@keyframes rsm-fig-left { 0% { transform: translateX(-50%) translateY(0); } 25% { transform: translateX(-48%) translateY(-1px); } 50% { transform: translateX(-50%) translateY(0); } 75% { transform: translateX(-52%) translateY(-1px); } 100% { transform: translateX(-50%) translateY(0); } }
@keyframes rsm-fig-right { 0% { transform: translateX(-50%) translateY(0) rotate(-1deg); } 25% { transform: translateX(-50%) translateY(-1px) rotate(0deg); } 50% { transform: translateX(-50%) translateY(0) rotate(1deg); } 75% { transform: translateX(-50%) translateY(-1px) rotate(0deg); } 100% { transform: translateX(-50%) translateY(0) rotate(-1deg); } }
@keyframes rsm-rays { 0% { transform: translateX(-50%) rotate(0deg) scale(1); } 50% { transform: translateX(-50%) rotate(180deg) scale(1.2); } 100% { transform: translateX(-50%) rotate(360deg) scale(1); } }

.scn-touchstone-audrey-wedding-eve {
  background: linear-gradient(180deg, #f5d6a8 0%, #eac48c 30%, #c89a6a 60%, #7a634a 100%);
  overflow: hidden;
}
.scn-touchstone-audrey-wedding-eve .sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #fce4b0 0%, #ffeac0 100%);
  opacity: 0.9;
  animation: tawe-sky 12s ease-in-out infinite alternate;
}
.scn-touchstone-audrey-wedding-eve .sun {
  position: absolute; top: 8%; left: 80%; transform: translateX(-50%);
  width: 40px; height: 40px;
  background: radial-gradient(circle, #ffdd88 0%, #ffb84d 40%, transparent 70%);
  border-radius: 50%;
  filter: blur(2px);
  animation: tawe-sun 7s ease-in-out infinite alternate;
}
.scn-touchstone-audrey-wedding-eve .meadow {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #a8c68a 0%, #6b8c4a 100%);
  border-radius: 60% 40% 0 0 / 30% 70% 0 0;
  animation: tawe-meadow 9s ease-in-out infinite alternate;
}
.scn-touchstone-audrey-wedding-eve .tree {
  position: absolute; bottom: 35%; left: 50%; transform: translateX(-50%);
  width: 18px; height: 55%;
  background: linear-gradient(90deg, #6a4a2a 0%, #3a2a1a 100%);
  border-radius: 4px;
  transform-origin: bottom center;
  animation: tawe-tree 11s ease-in-out infinite alternate;
}
.scn-touchstone-audrey-wedding-eve .figure-touchstone {
  position: absolute; bottom: 22%; left: 42%; transform: translateX(-50%);
  width: 20px; height: 46px;
  background: linear-gradient(180deg, #2a2a1a 0%, #0d0d0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: tawe-fig-left 5s ease-in-out infinite;
}
.scn-touchstone-audrey-wedding-eve .figure-audrey {
  position: absolute; bottom: 22%; left: 58%; transform: translateX(-50%);
  width: 18px; height: 44px;
  background: linear-gradient(180deg, #3a2a2a 0%, #1a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: tawe-fig-right 5s ease-in-out infinite 0.5s;
}
.scn-touchstone-audrey-wedding-eve .flowers {
  position: absolute; bottom: 20%; left: 50%; transform: translateX(-50%);
  width: 30px; height: 20px;
  background: radial-gradient(circle at 50% 100%, #b87878 0%, #8a4a4a 40%, transparent 60%);
  border-radius: 50%;
  filter: blur(2px);
  animation: tawe-flowers 4s ease-in-out infinite alternate;
}
@keyframes tawe-sky { 0% { opacity: 0.85; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes tawe-sun { 0% { transform: translateX(-50%) scale(0.9); opacity: 0.8; } 50% { transform: translateX(-50%) scale(1.1); opacity: 1; } 100% { transform: translateX(-50%) scale(0.9); opacity: 0.85; } }
@keyframes tawe-meadow { 0% { transform: translateY(0) scaleX(1); } 50% { transform: translateY(-3px) scaleX(1.02); } 100% { transform: translateY(0) scaleX(1); } }
@keyframes tawe-tree { 0% { transform: translateX(-50%) rotate(-1deg); } 50% { transform: translateX(-50%) rotate(2deg); } 100% { transform: translateX(-50%) rotate(-1deg); } }
@keyframes tawe-fig-left { 0% { transform: translateX(-50%) translateY(0); } 25% { transform: translateX(-50%) translateY(-2px) rotate(-3deg); } 50% { transform: translateX(-50%) translateY(0); } 75% { transform: translateX(-50%) translateY(-1px) rotate(3deg); } 100% { transform: translateX(-50%) translateY(0); } }
@keyframes tawe-fig-right { 0% { transform: translateX(-50%) translateY(0); } 25% { transform: translateX(-50%) translateY(-2px) rotate(3deg); } 50% { transform: translateX(-50%) translateY(0); } 75% { transform: translateX(-50%) translateY(-1px) rotate(-3deg); } 100% { transform: translateX(-50%) translateY(0); } }
@keyframes tawe-flowers { 0% { transform: translateX(-50%) rotate(0deg) scale(1); } 50% { transform: translateX(-50%) rotate(10deg) scale(1.05); } 100% { transform: translateX(-50%) rotate(-10deg) scale(1); } }

.scn-song-lover-and-lass {
  background: linear-gradient(135deg, #fce4b0 0%, #f5d6a8 30%, #c89a6a 70%, #7a634a 100%);
  overflow: hidden;
}
.scn-song-lover-and-lass .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #ffeac0 0%, #fff4d4 100%);
  opacity: 0.9;
  animation: sll-sky 16s ease-in-out infinite alternate;
}
.scn-song-lover-and-lass .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #a8c68a 0%, #6b8c4a 100%);
  border-radius: 50% 50% 0 0 / 20% 20% 0 0;
  animation: sll-ground 7s ease-in-out infinite alternate;
}
.scn-song-lover-and-lass .blanket {
  position: absolute; bottom: 18%; left: 50%; transform: translateX(-50%);
  width: 60px; height: 14px;
  background: radial-gradient(ellipse, #d4a87a 0%, #b08050 100%);
  border-radius: 50%;
  filter: blur(1px);
  animation: sll-blanket 5s ease-in-out infinite alternate;
}
.scn-song-lover-and-lass .figure-lover {
  position: absolute; bottom: 22%; left: 44%; transform: translateX(-50%);
  width: 20px; height: 42px;
  background: linear-gradient(180deg, #2a2a1a 0%, #0d0d0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: sll-fig-left 6s ease-in-out infinite;
}
.scn-song-lover-and-lass .figure-lass {
  position: absolute; bottom: 22%; left: 56%; transform: translateX(-50%);
  width: 18px; height: 40px;
  background: linear-gradient(180deg, #3a2a2a 0%, #1a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: sll-fig-right 6s ease-in-out infinite 0.5s;
}
.scn-song-lover-and-lass .basket {
  position: absolute; bottom: 20%; left: 35%; transform: translateX(-50%);
  width: 20px; height: 12px;
  background: linear-gradient(180deg, #a67c52 0%, #7a5a3a 100%);
  border-radius: 30% 30% 10% 10%;
  animation: sll-basket 4s ease-in-out infinite alternate;
}
.scn-song-lover-and-lass .bird {
  position: absolute; top: 15%; left: 20%; transform: translateX(-50%);
  width: 12px; height: 8px;
  background: radial-gradient(circle at 50% 50%, #3a3a3a 0%, #1a1a1a 100%);
  border-radius: 50% 50% 40% 40%;
  animation: sll-bird 3s ease-in-out infinite;
}
@keyframes sll-sky { 0% { opacity: 0.85; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes sll-ground { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes sll-blanket { 0% { transform: translateX(-50%) scaleX(1); } 50% { transform: translateX(-50%) scaleX(1.05); } 100% { transform: translateX(-50%) scaleX(1); } }
@keyframes sll-fig-left { 0% { transform: translateX(-50%) translateY(0) rotate(-2deg); } 25% { transform: translateX(-50%) translateY(-2px) rotate(0deg); } 50% { transform: translateX(-50%) translateY(0) rotate(2deg); } 75% { transform: translateX(-50%) translateY(-1px) rotate(0deg); } 100% { transform: translateX(-50%) translateY(0) rotate(-2deg); } }
@keyframes sll-fig-right { 0% { transform: translateX(-50%) translateY(0) rotate(2deg); } 25% { transform: translateX(-50%) translateY(-2px) rotate(0deg); } 50% { transform: translateX(-50%) translateY(0) rotate(-2deg); } 75% { transform: translateX(-50%) translateY(-1px) rotate(0deg); } 100% { transform: translateX(-50%) translateY(0) rotate(2deg); } }
@keyframes sll-basket { 0% { transform: translateX(-50%) translateY(0) rotate(-5deg); } 50% { transform: translateX(-50%) translateY(-2px) rotate(0deg); } 100% { transform: translateX(-50%) translateY(0) rotate(5deg); } }
@keyframes sll-bird { 0% { transform: translateX(-50%) translateY(0) scaleY(1); } 25% { transform: translateX(-50%) translateY(-10px) scaleY(0.6); } 50% { transform: translateX(-50%) translateY(0) scaleY(1); } 75% { transform: translateX(-50%) translateY(-8px) scaleY(0.7); } 100% { transform: translateX(-50%) translateY(0) scaleY(1); } }

.scn-forest-silvius-wooing {
  background: linear-gradient(180deg, #f9d99e 0%, #c9a85c 30%, #7a5a2e 70%, #3a2a1a 100%),
              radial-gradient(ellipse at 70% 20%, #ffe0a0 0%, transparent 60%);
}
.scn-forest-silvius-wooing .sky-glow {
  position: absolute; inset: 0 0 60% 0;
  background: linear-gradient(180deg, #fff5d0 0%, #ffd87a 40%, transparent 100%);
  animation: fsw-sky 10s ease-in-out infinite alternate;
}
.scn-forest-silvius-wooing .tree {
  position: absolute; bottom: 20%; width: 30px; height: 180px;
  background: linear-gradient(180deg, #6a4a2e 0%, #3a2a18 100%);
  border-radius: 20% 20% 0 0;
  box-shadow: inset -4px 0 8px rgba(0,0,0,0.3);
  transform-origin: bottom center;
}
.scn-forest-silvius-wooing .tree.left { left: 10%; animation: fsw-tree-sway 8s ease-in-out infinite; }
.scn-forest-silvius-wooing .tree.middle { left: 45%; width: 24px; height: 150px; animation: fsw-tree-sway 10s ease-in-out infinite reverse; }
.scn-forest-silvius-wooing .tree.right { right: 10%; width: 34px; height: 200px; animation: fsw-tree-sway 12s ease-in-out infinite; }
.scn-forest-silvius-wooing .figure {
  position: absolute; bottom: 22%; width: 20px; height: 40px;
  background: linear-gradient(180deg, #4a3a2a 0%, #1a1510 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
}
.scn-forest-silvius-wooing .figure.silvius { left: 38%; animation: fsw-walk 4s ease-in-out infinite; }
.scn-forest-silvius-wooing .figure.phoebe { left: 50%; animation: fsw-walk 4.3s ease-in-out infinite 0.5s; transform: scaleX(-1); }
.scn-forest-silvius-wooing .sunbeam {
  position: absolute; top: 10%; left: 30%; width: 120px; height: 200px;
  background: linear-gradient(135deg, rgba(255,240,180,0.4) 0%, rgba(255,220,100,0.1) 100%);
  filter: blur(12px);
  animation: fsw-beam 6s ease-in-out infinite alternate;
}
.scn-forest-silvius-wooing .leaf {
  position: absolute; top: -10%; left: 20%; width: 12px; height: 8px;
  background: #8a6a2e; border-radius: 50% 0 50% 0;
  animation: fsw-leaf-fall 7s linear infinite;
}
.scn-forest-silvius-wooing .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 22%;
  background: linear-gradient(180deg, #5a4a2e 0%, #3a2a18 100%);
  border-radius: 60% 40% 0 0 / 40% 20% 0 0;
  box-shadow: inset 0 6px 12px rgba(0,0,0,0.4);
}
@keyframes fsw-sky { 0% { opacity: 0.7; } 50% { opacity: 1; } 100% { opacity: 0.8; } }
@keyframes fsw-tree-sway { 0%,100% { transform: rotate(-2deg); } 50% { transform: rotate(2deg); } }
@keyframes fsw-walk { 0% { transform: translateY(0) rotate(0deg); } 25% { transform: translateY(-2px) rotate(2deg); } 50% { transform: translateY(0) rotate(0deg); } 75% { transform: translateY(-2px) rotate(-2deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes fsw-beam { 0% { opacity: 0.3; transform: translateX(-10px); } 100% { opacity: 0.8; transform: translateX(10px); } }
@keyframes fsw-leaf-fall { 0% { transform: translateY(0) rotate(0deg); } 100% { transform: translateY(110vh) rotate(360deg); } }

.scn-forest-corin-silvius {
  background: linear-gradient(180deg, #d4c9a8 0%, #b8a57c 40%, #7a5a3a 70%, #3a2a1a 100%),
              radial-gradient(ellipse at 50% 30%, #f0e0c0 0%, transparent 70%);
}
.scn-forest-corin-silvius .sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #ede3c8 0%, #d4c9a8 60%, transparent 100%);
  animation: fcs-sky 12s ease-in-out infinite alternate;
}
.scn-forest-corin-silvius .bg-trees {
  position: absolute; bottom: 30%; left: 0; right: 0; height: 30%;
  background: repeating-linear-gradient(90deg, #6a5a3e 0px, #6a5a3e 20px, #5a4a2e 20px, #5a4a2e 40px);
  border-radius: 50% 30% 0 0;
  animation: fcs-bg-trees 20s linear infinite alternate;
}
.scn-forest-corin-silvius .path {
  position: absolute; bottom: 18%; left: 30%; right: 30%; height: 8%;
  background: linear-gradient(90deg, transparent, #c8b080 40%, #b8a070 60%, transparent);
  border-radius: 40% 60% 20% 30%;
  animation: fcs-path 8s ease-in-out infinite alternate;
}
.scn-forest-corin-silvius .figure {
  position: absolute; bottom: 20%; width: 18px; height: 38px;
  background: linear-gradient(180deg, #4a3a2a 0%, #1a1510 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
}
.scn-forest-corin-silvius .figure.corin { left: 30%; animation: fcs-stand 6s ease-in-out infinite; }
.scn-forest-corin-silvius .figure.silvius2 { left: 45%; animation: fcs-stand 6.5s ease-in-out infinite 0.3s; transform: scaleX(-1); }
.scn-forest-corin-silvius .figure.yond-man { left: 60%; width: 20px; height: 40px; animation: fcs-stand 7s ease-in-out infinite 0.6s; }
.scn-forest-corin-silvius .grass {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #5a4a2e 0%, #2a1a0e 100%);
  border-radius: 30% 70% 0 0 / 20% 40% 0 0;
  box-shadow: inset 0 4px 8px rgba(0,0,0,0.3);
}
.scn-forest-corin-silvius .leaf.fall {
  position: absolute; top: -5%; left: 15%; width: 10px; height: 7px;
  background: #a08040; border-radius: 50% 0 50% 0;
  animation: fcs-leaf 12s linear infinite;
}
@keyframes fcs-sky { 0% { opacity: 0.6; } 50% { opacity: 0.9; } 100% { opacity: 0.7; } }
@keyframes fcs-bg-trees { 0% { transform: translateX(0); } 100% { transform: translateX(10px); } }
@keyframes fcs-path { 0% { opacity: 0.7; } 100% { opacity: 1; } }
@keyframes fcs-stand { 0%,100% { transform: translateY(0) rotate(0deg); } 30% { transform: translateY(-1px) rotate(1deg); } 60% { transform: translateY(0) rotate(0deg); } 80% { transform: translateY(-1px) rotate(-1deg); } }
@keyframes fcs-leaf { 0% { transform: translateY(0) rotate(0deg); } 100% { transform: translateY(120vh) rotate(360deg); } }

.scn-forest-of-arden-rosalind-touchstone {
  background:
    linear-gradient(180deg, #7eb0d4 0%, #d4c9a0 45%, #70a050 65%, #3a6a2a 100%),
    radial-gradient(ellipse at 30% 20%, #ffe680 0%, transparent 80%);
}
.scn-forest-of-arden-rosalind-touchstone .sky-fa {
  position:absolute; inset:0 0 55% 0;
  background: linear-gradient(180deg, #8fc8e8 0%, #ffe68f 50%, transparent 100%);
  animation: fa-sky 8s ease-in-out infinite alternate;
}
.scn-forest-of-arden-rosalind-touchstone .sunbeam-fa {
  position:absolute; top:15%; left:20%; width:120px; height:300px;
  background: linear-gradient(180deg, rgba(255,230,140,0.6) 0%, transparent 100%);
  border-radius:0 0 50% 50%;
  filter: blur(10px);
  transform: rotate(-15deg);
  animation: fa-beam 6s ease-in-out infinite alternate;
}
.scn-forest-of-arden-rosalind-touchstone .tree-left-fa {
  position:absolute; bottom:30%; left:5%; width:40px; height:280px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a10 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: -20px 0 30px rgba(0,0,0,.3);
  transform-origin: bottom center;
  animation: fa-tree 12s ease-in-out infinite;
}
.scn-forest-of-arden-rosalind-touchstone .tree-left-fa::after {
  content:''; position:absolute; top:-50px; left:-60px; width:160px; height:100px;
  background: radial-gradient(ellipse at 50% 100%, #4a7a3a 0%, #2a5a2a 80%, transparent 100%);
  border-radius: 60% 40% 20% 80%;
  animation: fa-leaf-sway 7s ease-in-out infinite alternate;
}
.scn-forest-of-arden-rosalind-touchstone .tree-right-fa {
  position:absolute; bottom:30%; right:8%; width:30px; height:220px;
  background: linear-gradient(180deg, #5a4a3a 0%, #2a1a10 100%);
  border-radius: 20% 20% 10% 10%;
  transform-origin: bottom center;
  animation: fa-tree 15s ease-in-out infinite;
}
.scn-forest-of-arden-rosalind-touchstone .tree-right-fa::after {
  content:''; position:absolute; top:-40px; right:-50px; width:130px; height:90px;
  background: radial-gradient(ellipse at 50% 100%, #3a7a3a 0%, #1a4a1a 80%, transparent 100%);
  border-radius: 40% 60% 80% 20%;
  animation: fa-leaf-sway 9s ease-in-out infinite alternate;
}
.scn-forest-of-arden-rosalind-touchstone .rosalind-fa {
  position:absolute; bottom:18%; left:30%; width:20px; height:50px;
  background: linear-gradient(180deg, #705030 0%, #4a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: fa-walk-ros 4s ease-in-out infinite;
  box-shadow: inset -3px 0 0 rgba(0,0,0,.3);
}
.scn-forest-of-arden-rosalind-touchstone .rosalind-fa::before {
  content:''; position:absolute; top:-10px; left:2px; width:16px; height:10px;
  background: radial-gradient(circle at 50% 100%, #d4b080 0%, #a08060 80%);
  border-radius: 50%;
  box-shadow: 0 2px 4px rgba(0,0,0,.3);
}
.scn-forest-of-arden-rosalind-touchstone .celia-fa {
  position:absolute; bottom:18%; left:38%; width:18px; height:46px;
  background: linear-gradient(180deg, #607080 0%, #3a4a5a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: fa-walk-cel 5s ease-in-out infinite;
  box-shadow: inset -2px 0 0 rgba(0,0,0,.3);
}
.scn-forest-of-arden-rosalind-touchstone .celia-fa::before {
  content:''; position:absolute; top:-9px; left:2px; width:14px; height:9px;
  background: radial-gradient(circle at 50% 100%, #c0b0a0 0%, #a09080 80%);
  border-radius: 50%;
}
.scn-forest-of-arden-rosalind-touchstone .touchstone-fa {
  position:absolute; bottom:18%; left:22%; width:22px; height:52px;
  background: linear-gradient(180deg, #a05020 0%, #703010 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: fa-walk-touch 3.2s ease-in-out infinite;
  box-shadow: inset -3px 0 0 rgba(0,0,0,.4);
}
.scn-forest-of-arden-rosalind-touchstone .touchstone-fa::before {
  content:''; position:absolute; top:-12px; left:0; width:22px; height:14px;
  background: radial-gradient(circle at 50% 100%, #d07030 0%, #a05020 80%);
  border-radius: 50%;
}
.scn-forest-of-arden-rosalind-touchstone .leaf-fa {
  position:absolute; width:10px; height:6px;
  background: #5a8a3a;
  border-radius: 50% 0 50% 0;
  filter: blur(0.5px);
  animation: fa-fall linear infinite;
}
.scn-forest-of-arden-rosalind-touchstone .leaf-a {
  top:-10px; left:20%;
  animation-duration:7s; animation-delay:0s;
  opacity:.8;
}
.scn-forest-of-arden-rosalind-touchstone .leaf-b {
  top:-20px; left:70%;
  animation-duration:9s; animation-delay:2s;
  opacity:.6;
}
@keyframes fa-sky {
  0% { opacity:.85; background-position:0 0; }
  50% { opacity:1; background-position:10px 20px; }
  100% { opacity:.9; background-position:-10px 10px; }
}
@keyframes fa-beam {
  0% { opacity:.5; transform: rotate(-15deg) scaleY(1); }
  50% { opacity:.8; transform: rotate(-10deg) scaleY(1.1); }
  100% { opacity:.6; transform: rotate(-18deg) scaleY(0.95); }
}
@keyframes fa-tree {
  0% { transform: rotate(-2deg) translateX(0); }
  50% { transform: rotate(1deg) translateX(2px); }
  100% { transform: rotate(-2deg) translateX(0); }
}
@keyframes fa-leaf-sway {
  0% { transform: rotate(-5deg) translateX(0); }
  50% { transform: rotate(5deg) translateX(3px); }
  100% { transform: rotate(-5deg) translateX(0); }
}
@keyframes fa-walk-ros {
  0% { transform: translateX(0) rotate(-2deg); }
  25% { transform: translateX(4px) rotate(2deg) translateY(-1px); }
  50% { transform: translateX(8px) rotate(-2deg); }
  75% { transform: translateX(12px) rotate(2deg) translateY(-1px); }
  100% { transform: translateX(16px) rotate(0deg); }
}
@keyframes fa-walk-cel {
  0% { transform: translateX(0) rotate(1deg); }
  33% { transform: translateX(3px) rotate(-1deg) translateY(-1px); }
  66% { transform: translateX(6px) rotate(1deg); }
  100% { transform: translateX(9px) rotate(0deg); }
}
@keyframes fa-walk-touch {
  0% { transform: translateX(0) rotate(0deg) scaleX(1); }
  30% { transform: translateX(5px) rotate(-3deg) scaleX(0.95) translateY(-2px); }
  60% { transform: translateX(10px) rotate(3deg) scaleX(1.05) translateY(-1px); }
  100% { transform: translateX(15px) rotate(0deg) scaleX(1); }
}
@keyframes fa-fall {
  0% { transform: translateY(0) rotate(0deg) translateX(0); }
  50% { transform: translateY(50vh) rotate(180deg) translateX(20px); }
  100% { transform: translateY(100vh) rotate(360deg) translateX(-10px); opacity:0; }
}

.scn-silvius-corin-discourse {
  background:
    linear-gradient(180deg, #b8d8e8 0%, #e8d8a0 40%, #b0b070 60%, #4a7a3a 100%),
    radial-gradient(ellipse at 60% 30%, #ffe890 0%, transparent 70%);
}
.scn-silvius-corin-discourse .sky-sc {
  position:absolute; inset:0 0 50% 0;
  background: linear-gradient(180deg, #90c8d8 0%, #f0d880 60%, transparent 100%);
  animation: sc-sky 10s ease-in-out infinite alternate;
}
.scn-silvius-corin-discourse .sun-sc {
  position:absolute; top:20%; right:15%; width:60px; height:60px;
  background: radial-gradient(circle, #fff0a0 0%, #ffe060 40%, transparent 100%);
  border-radius:50%;
  box-shadow: 0 0 80px 40px rgba(255,224,96,.5);
  animation: sc-sun-pulse 6s ease-in-out infinite alternate;
}
.scn-silvius-corin-discourse .tree-sc {
  position:absolute; bottom:35%; left:10%; width:50px; height:200px;
  background: linear-gradient(180deg, #5a4a30 0%, #3a2a18 100%);
  border-radius: 20% 20% 10% 10%;
  transform-origin: bottom center;
  animation: sc-tree-sway 8s ease-in-out infinite;
}
.scn-silvius-corin-discourse .tree-sc::after {
  content:''; position:absolute; top:-60px; left:-80px; width:210px; height:130px;
  background: radial-gradient(ellipse at 50% 100%, #3a7a3a 0%, #1a4a1a 70%, transparent 100%);
  border-radius: 60% 40% 50% 50%;
  animation: sc-tree-sway 9s ease-in-out infinite reverse;
}
.scn-silvius-corin-discourse .silvius-sc {
  position:absolute; bottom:25%; left:45%; width:18px; height:44px;
  background: linear-gradient(180deg, #705040 0%, #4a3020 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: sc-figure-sil 5s ease-in-out infinite;
  box-shadow: inset -2px 0 0 rgba(0,0,0,.3);
}
.scn-silvius-corin-discourse .silvius-sc::before {
  content:''; position:absolute; top:-8px; left:3px; width:14px; height:8px;
  background: radial-gradient(circle at 50% 100%, #d4b080 0%, #b09060 80%);
  border-radius: 50%;
}
.scn-silvius-corin-discourse .corin-sc {
  position:absolute; bottom:25%; left:55%; width:20px; height:48px;
  background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: sc-figure-cor 6s ease-in-out infinite;
  box-shadow: inset -2px 0 0 rgba(0,0,0,.4);
}
.scn-silvius-corin-discourse .corin-sc::before {
  content:''; position:absolute; top:-8px; left:4px; width:14px; height:8px;
  background: radial-gradient(circle at 50% 100%, #c0a880 0%, #a08860 80%);
  border-radius: 50%;
}
.scn-silvius-corin-discourse .grass-sc {
  position:absolute; bottom:20%; left:0; right:0; height:10%;
  background: linear-gradient(180deg, #4a7a3a 0%, #2a5a1a 100%);
  border-radius: 80% 70% 0 0 / 40% 60% 0 0;
  box-shadow: inset 0 4px 10px rgba(0,20,0,.3);
  animation: sc-grass-sway 7s ease-in-out infinite alternate;
}
.scn-silvius-corin-discourse .cloud-sc {
  position:absolute; top:10%; width:70px; height:14px;
  background: linear-gradient(180deg, rgba(255,255,255,.6) 0%, rgba(255,255,255,.15) 100%);
  border-radius:50%; filter: blur(5px);
}
.scn-silvius-corin-discourse .cloud-c {
  left:5%; animation: sc-drift-c 40s linear infinite;
}
.scn-silvius-corin-discourse .cloud-d {
  right:5%; width:50px; animation: sc-drift-d 30s linear infinite reverse;
}
@keyframes sc-sky {
  0% { opacity:.9; background-position:0 0; }
  50% { opacity:1; background-position:20px 10px; }
  100% { opacity:.85; background-position:-10px 20px; }
}
@keyframes sc-sun-pulse {
  0% { opacity:.8; transform: scale(1); box-shadow: 0 0 60px 30px rgba(255,224,96,.4); }
  50% { opacity:1; transform: scale(1.05); box-shadow: 0 0 100px 50px rgba(255,224,96,.6); }
  100% { opacity:.85; transform: scale(0.95); box-shadow: 0 0 70px 35px rgba(255,224,96,.45); }
}
@keyframes sc-tree-sway {
  0% { transform: rotate(-1deg) translateX(0); }
  50% { transform: rotate(2deg) translateX(2px); }
  100% { transform: rotate(-1deg) translateX(0); }
}
@keyframes sc-figure-sil {
  0% { transform: translateX(0) rotate(-1deg) translateY(0); }
  30% { transform: translateX(2px) rotate(1deg) translateY(-1px); }
  60% { transform: translateX(4px) rotate(-1deg) translateY(0); }
  100% { transform: translateX(6px) rotate(0deg) translateY(-0.5px); }
}
@keyframes sc-figure-cor {
  0% { transform: translateX(0) rotate(1deg); }
  40% { transform: translateX(-2px) rotate(-1deg) translateY(-1px); }
  80% { transform: translateX(2px) rotate(1deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes sc-grass-sway {
  0% { transform: skewX(-2deg); }
  50% { transform: skewX(2deg); }
  100% { transform: skewX(-1deg); }
}
@keyframes sc-drift-c {
  0% { transform: translateX(-20px); }
  100% { transform: translateX(110vw); }
}
@keyframes sc-drift-d {
  0% { transform: translateX(0); }
  100% { transform: translateX(-120vw); }
}

.scn-silvius-corin-discourse {
  background: linear-gradient(180deg, #f5d088 0%, #d4b072 30%, #9bb7d4 70%, #6a8bb0 100%),
              radial-gradient(ellipse at 75% 20%, #fff5cc 0%, transparent 60%);
}

.scn-silvius-corin-discourse .sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, transparent 0%, #f5e6b0 40%, #b0c8e0 100%);
  animation: scd-sky 20s ease-in-out infinite alternate;
}

.scn-silvius-corin-discourse .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #7a9a4a 0%, #5a7a3a 40%, #3a5a2a 100%);
  border-radius: 60% 40% 0 0 / 30% 20% 0 0;
  box-shadow: inset 0 20px 40px rgba(0,0,0,0.2);
  animation: scd-ground 12s ease-in-out infinite;
}

.scn-silvius-corin-discourse .sun {
  position: absolute; top: 8%; right: 18%; width: 70px; height: 70px;
  background: radial-gradient(circle at center, #fffbe0 0%, #f5d080 50%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 60px 30px rgba(245,208,128,0.4), 0 0 120px 60px rgba(245,208,128,0.2);
  animation: scd-sun 6s ease-in-out infinite alternate;
}

.scn-silvius-corin-discourse .tree-trunk {
  position: absolute; bottom: 30%; left: 25%; width: 18px; height: 120px;
  background: linear-gradient(90deg, #6a4a3a 0%, #8a6a5a 50%, #5a3a2a 100%);
  border-radius: 20% 20% 10% 10%;
  transform-origin: bottom center;
  animation: scd-trunk 8s ease-in-out infinite;
}

.scn-silvius-corin-discourse .tree-canopy {
  position: absolute; bottom: 58%; left: 20%; width: 120px; height: 100px;
  background: radial-gradient(ellipse at 40% 40%, #6a8a4a 0%, #4a6a2a 60%, #2a4a1a 100%);
  border-radius: 50% 40% 50% 40% / 60% 50% 50% 40%;
  box-shadow: 0 10px 30px rgba(0,0,0,0.3);
  filter: blur(1px);
  animation: scd-canopy 8s ease-in-out infinite alternate;
}

.scn-silvius-corin-discourse .figure-silvius {
  position: absolute; bottom: 20%; left: 45%; width: 22px; height: 50px;
  background: linear-gradient(180deg, #c8a07a 0%, #a08060 50%, #806050 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  box-shadow: 2px 0 8px rgba(0,0,0,0.2);
  animation: scd-silvius 6s ease-in-out infinite;
}

.scn-silvius-corin-discourse .figure-corin {
  position: absolute; bottom: 20%; left: 55%; width: 20px; height: 38px;
  background: linear-gradient(180deg, #7a6a5a 0%, #5a4a3a 50%, #3a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  box-shadow: 2px 0 8px rgba(0,0,0,0.2);
  animation: scd-corin 8s ease-in-out infinite;
}

.scn-silvius-corin-discourse .cloud {
  position: absolute; top: 12%; left: -10%; width: 90px; height: 24px;
  background: linear-gradient(180deg, rgba(255,255,240,0.7) 0%, rgba(255,255,255,0.3) 100%);
  border-radius: 50%;
  filter: blur(5px);
  animation: scd-cloud 40s linear infinite;
}

@keyframes scd-sky {
  0% { opacity: 0.8; }
  50% { opacity: 1; background-position: 0% 0%; }
  100% { opacity: 0.85; background-position: 20% 10%; }
}

@keyframes scd-ground {
  0% { transform: scaleY(1); }
  50% { transform: scaleY(1.02) translateY(-2px); }
  100% { transform: scaleY(0.98); }
}

@keyframes scd-sun {
  0% { transform: scale(0.95); opacity: 0.9; box-shadow: 0 0 40px 20px rgba(245,208,128,0.3); }
  50% { transform: scale(1.05); opacity: 1; box-shadow: 0 0 80px 40px rgba(245,208,128,0.5); }
  100% { transform: scale(1); opacity: 0.95; box-shadow: 0 0 60px 30px rgba(245,208,128,0.4); }
}

@keyframes scd-trunk {
  0% { transform: rotate(-1deg); }
  50% { transform: rotate(2deg); }
  100% { transform: rotate(-0.5deg); }
}

@keyframes scd-canopy {
  0% { transform: translateX(-5px) scale(1); }
  50% { transform: translateX(5px) scale(1.02); }
  100% { transform: translateX(-3px) scale(0.98); }
}

@keyframes scd-silvius {
  0% { transform: translateX(0) rotate(-2deg); }
  30% { transform: translateX(4px) rotate(1deg); }
  60% { transform: translateX(-2px) rotate(-1deg); }
  100% { transform: translateX(0) rotate(0); }
}

@keyframes scd-corin {
  0% { transform: translateX(0) rotate(1deg) scale(1); }
  40% { transform: translateX(-3px) rotate(-2deg) scale(0.97); }
  70% { transform: translateX(2px) rotate(1.5deg) scale(1.02); }
  100% { transform: translateX(0) rotate(0) scale(1); }
}

@keyframes scd-cloud {
  0% { transform: translateX(-120px); }
  100% { transform: translateX(120vw); }
}

.scn-forest-of-arden-rosalind-touchstone {
  background:
    linear-gradient(180deg, #87ceeb 0%, #c8e6c9 40%, #a5d6a7 100%),
    radial-gradient(ellipse at 30% 20%, rgba(255,240,180,0.3) 0%, transparent 50%);
}
.scn-forest-of-arden-rosalind-touchstone .forest-bg {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(180deg, #2e7d32 0%, #1b5e20 60%, #0a3d0a 100%);
  border-radius: 0 0 40% 40%;
  animation: fa-bg 8s ease-in-out infinite alternate;
}
.scn-forest-of-arden-rosalind-touchstone .dappled-light {
  position: absolute; inset: 0;
  background: radial-gradient(circle at 40% 30%, rgba(255,235,160,0.25) 0%, transparent 40%),
              radial-gradient(circle at 70% 60%, rgba(255,235,160,0.15) 0%, transparent 30%);
  animation: fa-dapple 12s ease-in-out infinite alternate;
}
.scn-forest-of-arden-rosalind-touchstone .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #558b2f 0%, #33691e 100%);
  border-radius: 60% 40% 0 0 / 100% 80% 0 0;
}
.scn-forest-of-arden-rosalind-touchstone .tree-left {
  position: absolute; bottom: 30%; left: 10%; width: 20px; height: 200px;
  background: linear-gradient(180deg, #4e342e 0%, #3e2723 100%);
  border-radius: 10% 10% 20% 20%;
  transform-origin: bottom center;
  animation: fa-sway 6s ease-in-out infinite alternate;
}
.scn-forest-of-arden-rosalind-touchstone .tree-left::before {
  content: ''; position: absolute; top: -30px; left: -20px; width: 60px; height: 50px;
  background: radial-gradient(circle, #388e3c 0%, #1b5e20 100%);
  border-radius: 50%;
}
.scn-forest-of-arden-rosalind-touchstone .tree-right {
  position: absolute; bottom: 30%; right: 12%; width: 16px; height: 180px;
  background: linear-gradient(180deg, #4e342e 0%, #3e2723 100%);
  border-radius: 10% 10% 20% 20%;
  transform-origin: bottom center;
  animation: fa-sway 7s ease-in-out infinite alternate-reverse;
}
.scn-forest-of-arden-rosalind-touchstone .tree-right::before {
  content: ''; position: absolute; top: -25px; right: -15px; width: 50px; height: 40px;
  background: radial-gradient(circle, #43a047 0%, #2e7d32 100%);
  border-radius: 50%;
}
.scn-forest-of-arden-rosalind-touchstone .figure-rosalind {
  position: absolute; bottom: 30%; left: 35%; width: 18px; height: 50px;
  background: linear-gradient(180deg, #4a6741 0%, #2e4a28 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: fa-walk-ros 4s ease-in-out infinite;
}
.scn-forest-of-arden-rosalind-touchstone .figure-celia {
  position: absolute; bottom: 30%; left: 45%; width: 16px; height: 46px;
  background: linear-gradient(180deg, #5d4037 0%, #3e2723 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: fa-walk-cel 5s ease-in-out infinite;
}
.scn-forest-of-arden-rosalind-touchstone .figure-touchstone {
  position: absolute; bottom: 30%; left: 55%; width: 22px; height: 42px;
  background: linear-gradient(180deg, #bfa34a 0%, #8d6e2b 100%);
  border-radius: 50% 50% 40% 40% / 80% 80% 20% 20%;
  transform-origin: bottom center;
  animation: fa-bounce 3s ease-in-out infinite;
}
@keyframes fa-bg { 0% { opacity: 0.9 } 50% { opacity: 1 } 100% { opacity: 0.85 } }
@keyframes fa-dapple { 0% { opacity: 0.4; transform: scale(1) } 50% { opacity: 0.7; transform: scale(1.02) } 100% { opacity: 0.5; transform: scale(1) } }
@keyframes fa-sway { 0% { transform: rotate(-2deg) } 50% { transform: rotate(1deg) } 100% { transform: rotate(-2deg) } }
@keyframes fa-walk-ros { 0%, 100% { transform: translateX(0) translateY(0) rotate(-2deg) } 25% { transform: translateX(4px) translateY(-2px) rotate(3deg) } 50% { transform: translateX(8px) translateY(0) rotate(-2deg) } 75% { transform: translateX(12px) translateY(-1px) rotate(3deg) } }
@keyframes fa-walk-cel { 0%, 100% { transform: translateX(0) translateY(0) rotate(1deg) } 25% { transform: translateX(-3px) translateY(-2px) rotate(-2deg) } 50% { transform: translateX(-6px) translateY(0) rotate(1deg) } 75% { transform: translateX(-9px) translateY(-1px) rotate(-2deg) } }
@keyframes fa-bounce { 0%, 100% { transform: translateX(0) translateY(0) scaleY(1) } 30% { transform: translateX(5px) translateY(-6px) scaleY(0.8) } 70% { transform: translateX(10px) translateY(-3px) scaleY(1.1) } }

.scn-forest-silvius-wooing {
  background:
    linear-gradient(180deg, #87CEEB 0%, #FFE4B5 40%, #F5DEB3 100%),
    radial-gradient(ellipse at 80% 15%, rgba(255, 215, 0, 0.6) 0%, transparent 40%);
}
.scn-forest-silvius-wooing .sky {
  position: absolute;
  inset: 0 0 55% 0;
  background: linear-gradient(180deg, #87CEEB 0%, #FFE4B5 60%, transparent 100%);
  animation: fs1-sky 15s ease-in-out infinite alternate;
}
.scn-forest-silvius-wooing .distant-trees {
  position: absolute;
  bottom: 45%;
  left: 0;
  right: 0;
  height: 20%;
  background: linear-gradient(180deg, #4a6e3a 0%, #2d4a1e 100%);
  border-radius: 60% 40% 0 0 / 40% 30% 0 0;
  box-shadow: inset 0 5px 15px rgba(0,0,0,0.3);
  transform: scaleY(0.85);
  animation: fs1-distant 20s ease-in-out infinite alternate;
}
.scn-forest-silvius-wooing .mid-trees {
  position: absolute;
  bottom: 35%;
  left: 0;
  right: 0;
  height: 25%;
  background: linear-gradient(180deg, #5a7e4a 0%, #3a5a2a 100%);
  border-radius: 30% 50% 0 0 / 50% 40% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.25);
  transform: scaleY(0.9);
  animation: fs1-mid 18s ease-in-out infinite alternate;
}
.scn-forest-silvius-wooing .ground {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 40%;
  background: linear-gradient(180deg, #7a9a5a 0%, #4a6a3a 50%, #2a4a1a 100%);
  border-radius: 20% 30% 0 0 / 15% 20% 0 0;
  animation: fs1-ground 12s ease-in-out infinite alternate;
}
.scn-forest-silvius-wooing .figure {
  position: absolute;
  bottom: 22%;
  left: 42%;
  width: 24px;
  height: 60px;
  background: linear-gradient(180deg, #6a4a3a 0%, #3a2a1a 100%);
  border-radius: 45% 45% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: fs1-figure 4s ease-in-out infinite;
  box-shadow: 0 2px 6px rgba(0,0,0,0.3);
}
.scn-forest-silvius-wooing .sunbeam {
  position: absolute;
  top: 5%;
  right: 10%;
  width: 120px;
  height: 200px;
  background: linear-gradient(135deg, rgba(255, 230, 150, 0.5) 0%, transparent 50%, rgba(255, 230, 150, 0.1) 100%);
  transform: rotate(25deg);
  filter: blur(8px);
  animation: fs1-sunbeam 6s ease-in-out infinite alternate;
}
.scn-forest-silvius-wooing .leaf-a {
  position: absolute;
  top: 30%;
  left: 20%;
  width: 18px;
  height: 10px;
  background: #b87878;
  border-radius: 50% 0 50% 0;
  filter: blur(1px);
  animation: fs1-leafA 8s linear infinite;
}
.scn-forest-silvius-wooing .leaf-b {
  position: absolute;
  top: 45%;
  left: 70%;
  width: 14px;
  height: 8px;
  background: #c8553d;
  border-radius: 0 50% 0 50%;
  filter: blur(1px);
  animation: fs1-leafB 10s linear infinite;
  animation-delay: -4s;
}

@keyframes fs1-sky { 0% { opacity: 0.7; } 50% { opacity: 1; } 100% { opacity: 0.8; } }
@keyframes fs1-distant { 0% { transform: scaleY(0.85) translateY(0); } 50% { transform: scaleY(0.85) translateY(-3px); } 100% { transform: scaleY(0.85) translateY(0); } }
@keyframes fs1-mid { 0% { transform: scaleY(0.9) translateY(0); } 50% { transform: scaleY(0.9) translateY(-5px); } 100% { transform: scaleY(0.9) translateY(0); } }
@keyframes fs1-ground { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes fs1-figure { 0% { transform: translateX(0) translateY(0) rotate(0deg); } 25% { transform: translateX(4px) translateY(-2px) rotate(2deg); } 50% { transform: translateX(8px) translateY(0) rotate(0deg); } 75% { transform: translateX(12px) translateY(-1px) rotate(-2deg); } 100% { transform: translateX(16px) translateY(0) rotate(0deg); } }
@keyframes fs1-sunbeam { 0% { opacity: 0.2; transform: rotate(25deg) scale(1); } 50% { opacity: 0.6; transform: rotate(28deg) scale(1.05); } 100% { opacity: 0.3; transform: rotate(25deg) scale(1); } }
@keyframes fs1-leafA { 0% { transform: translate(0, 0) rotate(0deg); } 25% { transform: translate(20px, 30px) rotate(45deg); } 50% { transform: translate(40px, 60px) rotate(90deg); } 75% { transform: translate(60px, 90px) rotate(135deg); } 100% { transform: translate(80px, 120px) rotate(180deg); } }
@keyframes fs1-leafB { 0% { transform: translate(0, 0) rotate(0deg); } 25% { transform: translate(-15px, 25px) rotate(-45deg); } 50% { transform: translate(-30px, 50px) rotate(-90deg); } 75% { transform: translate(-45px, 75px) rotate(-135deg); } 100% { transform: translate(-60px, 100px) rotate(-180deg); } }

.scn-forest-corin-silvius {
  background: 
    linear-gradient(180deg, #87CEEB 0%, #F0E68C 60%, #FAFAD2 100%),
    radial-gradient(ellipse at 80% 20%, rgba(255,255,224,0.4) 0%, transparent 60%);
  position: relative;
  overflow: hidden;
}
.scn-forest-corin-silvius .sky {
  position: absolute;
  inset: 0 0 40% 0;
  background: linear-gradient(180deg, #B0E0E6 0%, transparent 100%);
  animation: fc-sky 10s ease-in-out infinite alternate;
}
.scn-forest-corin-silvius .tree-back {
  position: absolute;
  bottom: 40%;
  left: 0;
  right: 0;
  height: 30%;
  background: linear-gradient(180deg, #228B22 0%, #006400 100%);
  clip-path: polygon(
    0 25%, 5% 5%, 10% 20%, 15% 0%, 20% 15%, 25% 2%, 30% 18%, 35% 3%, 40% 12%, 45% 8%,
    50% 0%, 55% 10%, 60% 5%, 65% 15%, 70% 2%, 75% 12%, 80% 6%, 85% 18%, 90% 4%, 95% 10%, 100% 20%,
    100% 100%, 0 100%
  );
  animation: fc-trees 20s ease-in-out infinite alternate;
}
.scn-forest-corin-silvius .tree-trunk {
  position: absolute;
  bottom: 37%;
  left: 12%;
  width: 18px;
  height: 60px;
  background: linear-gradient(180deg, #8B4513 0%, #3E2723 100%);
  border-radius: 4px;
  animation: fc-trunk 8s ease-in-out infinite;
}
.scn-forest-corin-silvius .sunbeams {
  position: absolute;
  top: 0;
  left: -20%;
  width: 60%;
  height: 100%;
  background: linear-gradient(0deg, rgba(255,255,224,0.1) 0%, rgba(255,255,224,0.5) 100%);
  filter: blur(12px);
  transform: rotate(-15deg) scaleX(0.8);
  animation: fc-beams 15s ease-in-out infinite alternate;
}
.scn-forest-corin-silvius .glow {
  position: absolute;
  top: 8%;
  right: 18%;
  width: 80px;
  height: 80px;
  background: radial-gradient(circle, #FFF8DC 0%, #FFE4B5 40%, transparent 100%);
  border-radius: 50%;
  animation: fc-glow 6s ease-in-out infinite alternate;
}
.scn-forest-corin-silvius .leaves {
  position: absolute;
  inset: 0;
  background: 
    radial-gradient(circle 6px at 15% 30%, rgba(34,139,34,0.6) 0%, transparent 100%),
    radial-gradient(circle 4px at 40% 15%, rgba(50,205,50,0.5) 0%, transparent 100%),
    radial-gradient(circle 5px at 70% 40%, rgba(60,179,113,0.4) 0%, transparent 100%),
    radial-gradient(circle 3px at 85% 20%, rgba(34,139,34,0.6) 0%, transparent 100%),
    radial-gradient(circle 7px at 10% 60%, rgba(46,139,87,0.5) 0%, transparent 100%);
  background-size: 100% 100%;
  animation: fc-leaves 25s linear infinite;
}
.scn-forest-corin-silvius .figure {
  position: absolute;
  bottom: 35%;
  left: 45%;
  width: 20px;
  height: 40px;
  background: #3E2C1A;
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: fc-figure 4s ease-in-out infinite;
}
.scn-forest-corin-silvius .ground {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 30%;
  background: linear-gradient(180deg, #556B2F 0%, #8FBC8F 100%);
  border-radius: 50% 50% 0 0 / 40% 40% 0 0;
  animation: fc-ground 15s ease-in-out infinite alternate;
}

/* Keyframes */
@keyframes fc-sky {
  0% { opacity: 0.8; }
  50% { opacity: 1; }
  100% { opacity: 0.9; }
}
@keyframes fc-trees {
  0% { clip-path: polygon(0 25%, 5% 5%, 10% 20%, 15% 0%, 20% 15%, 25% 2%, 30% 18%, 35% 3%, 40% 12%, 45% 8%, 50% 0%, 55% 10%, 60% 5%, 65% 15%, 70% 2%, 75% 12%, 80% 6%, 85% 18%, 90% 4%, 95% 10%, 100% 20%, 100% 100%, 0 100%); }
  50% { clip-path: polygon(0 27%, 5% 7%, 10% 22%, 15% 2%, 20% 17%, 25% 4%, 30% 20%, 35% 5%, 40% 14%, 45% 10%, 50% 2%, 55% 12%, 60% 7%, 65% 17%, 70% 4%, 75% 14%, 80% 8%, 85% 20%, 90% 6%, 95% 12%, 100% 22%, 100% 100%, 0 100%); }
  100% { clip-path: polygon(0 25%, 5% 5%, 10% 20%, 15% 0%, 20% 15%, 25% 2%, 30% 18%, 35% 3%, 40% 12%, 45% 8%, 50% 0%, 55% 10%, 60% 5%, 65% 15%, 70% 2%, 75% 12%, 80% 6%, 85% 18%, 90% 4%, 95% 10%, 100% 20%, 100% 100%, 0 100%); }
}
@keyframes fc-trunk {
  0%,100% { transform: rotate(0deg); }
  50% { transform: rotate(1deg) translateX(1px); }
}
@keyframes fc-beams {
  0% { opacity: 0.5; transform: rotate(-15deg) scaleX(0.8) translateX(0); }
  50% { opacity: 0.8; transform: rotate(-18deg) scaleX(0.85) translateX(10px); }
  100% { opacity: 0.6; transform: rotate(-15deg) scaleX(0.8) translateX(0); }
}
@keyframes fc-glow {
  0% { transform: scale(0.9); opacity: 0.7; }
  50% { transform: scale(1.1); opacity: 1; }
  100% { transform: scale(0.95); opacity: 0.8; }
}
@keyframes fc-leaves {
  0% { background-position: 0 0, 0 0, 0 0, 0 0, 0 0; }
  100% { background-position: 50px 30px, -40px -20px, 20px -50px, -60px 40px, 80px 10px; }
}
@keyframes fc-figure {
  0%,100% { transform: translateY(0) rotate(-1deg); }
  50% { transform: translateY(-2px) rotate(1deg); }
}
@keyframes fc-ground {
  0% { transform: translateY(0) scaleY(1); }
  50% { transform: translateY(-2px) scaleY(1.01); }
  100% { transform: translateY(0) scaleY(1); }
}
/* end per-scene blocks */

/* auto-stub: parent tag-classes flagged by CSS audit */
.bank { position: absolute; pointer-events: none; }
.column { position: absolute; pointer-events: none; }
.drift { position: absolute; pointer-events: none; }
.figures { position: absolute; pointer-events: none; }
.pillar { position: absolute; pointer-events: none; }
.reeds { position: absolute; pointer-events: none; }
.scn { position: absolute; pointer-events: none; }
.speckle { position: absolute; pointer-events: none; }
.wrestler { position: absolute; pointer-events: none; }

/* ============ tier A ============ */
/* per-scene blocks (EXP step_scenes) */
.scn-forest-silvius-phebe {
  background: linear-gradient(180deg, #d4c9aa 0%, #b8a77a 40%, #7a6a3e 100%),
              radial-gradient(ellipse at 70% 30%, #e0d4b0 0%, transparent 60%);
}
.scn-forest-silvius-phebe .sunbeams {
  position: absolute; inset: 0; background: repeating-linear-gradient(135deg, rgba(255,230,150,0.25) 0px, rgba(255,230,150,0) 60px, rgba(255,230,150,0.25) 80px);
  animation: fsp-sun 8s ease-in-out infinite alternate;
}
.scn-forest-silvius-phebe .trunk-left {
  position: absolute; left: 5%; top: 0; bottom: 20%; width: 30px;
  background: linear-gradient(90deg, #5a4a3a, #3a2a1a, #5a4a3a);
  border-radius: 20%; transform: rotate(-3deg);
  animation: fsp-trunk 12s ease-in-out infinite;
}
.scn-forest-silvius-phebe .trunk-right {
  position: absolute; right: 8%; top: 5%; bottom: 25%; width: 25px;
  background: linear-gradient(90deg, #4a3a2a, #2a1a0a, #4a3a2a);
  border-radius: 15%; transform: rotate(4deg);
  animation: fsp-trunk 14s ease-in-out infinite reverse;
}
.scn-forest-silvius-phebe .silvius {
  position: absolute; bottom: 28%; left: 35%; width: 22px; height: 60px;
  background: linear-gradient(180deg, #c8a870 0%, #8a6a3a 60%, #5a3a1a 100%);
  border-radius: 30% 30% 40% 40% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: fsp-silvius 3s ease-in-out infinite;
}
.scn-forest-silvius-phebe .phebe {
  position: absolute; bottom: 30%; left: 55%; width: 20px; height: 58px;
  background: linear-gradient(180deg, #d4b080 0%, #9a7a4a 60%, #5a3a1a 100%);
  border-radius: 30% 30% 40% 40% / 45% 45% 35% 35%;
  transform: rotate(15deg);
  transform-origin: bottom center;
  animation: fsp-phebe 4s ease-in-out infinite;
}
.scn-forest-silvius-phebe .arm-plea {
  position: absolute; bottom: 55%; left: 42%; width: 18px; height: 6px;
  background: #8a6a3a;
  border-radius: 40% 60% 40% 60%;
  transform: rotate(40deg);
  transform-origin: left center;
  animation: fsp-arm 2s ease-in-out infinite alternate;
}
.scn-forest-silvius-phebe .shadow-flick {
  position: absolute; bottom: 30%; left: 0; right: 0; height: 40%;
  background: radial-gradient(ellipse at 50% 100%, rgba(0,0,0,0.3) 0%, transparent 70%);
  animation: fsp-shadow 0.5s steps(2) infinite;
}
@keyframes fsp-sun { 0% { opacity: 0.6; transform: scaleX(1); } 50% { opacity: 1; transform: scaleX(1.1); } 100% { opacity: 0.7; transform: scaleX(0.95); } }
@keyframes fsp-trunk { 0%,100% { transform: rotate(-3deg); } 50% { transform: rotate(2deg); } }
@keyframes fsp-silvius { 0%,100% { transform: translateY(0) rotate(-2deg); } 25% { transform: translateY(2px) rotate(0deg); } 50% { transform: translateY(0) rotate(2deg); } 75% { transform: translateY(1px) rotate(-1deg); } }
@keyframes fsp-phebe { 0%,100% { transform: rotate(15deg) translateY(0); } 50% { transform: rotate(12deg) translateY(-3px); } }
@keyframes fsp-arm { 0% { transform: rotate(30deg); } 50% { transform: rotate(50deg); } 100% { transform: rotate(40deg); } }
@keyframes fsp-shadow { 0% { opacity: 0.15; } 50% { opacity: 0.3; } }

.scn-forest-jaques-education {
  background: linear-gradient(180deg, #e8d4a8 0%, #c4a86a 40%, #9a7a4a 100%),
              radial-gradient(ellipse at 60% 20%, #f0e0b0 0%, transparent 50%);
}
.scn-forest-jaques-education .clearing {
  position: absolute; bottom: 28%; left: 10%; right: 10%; height: 20%;
  background: linear-gradient(180deg, #7a6a3a, #5a4a2a, #3a2a1a);
  border-radius: 30% 70% 0 0;
}
.scn-forest-jaques-education .rosalind {
  position: absolute; bottom: 32%; left: 20%; width: 18px; height: 50px;
  background: linear-gradient(180deg, #d4a080 0%, #9a6a3a 60%, #5a3010 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: fje-rosalind 2s ease-in-out infinite;
}
.scn-forest-jaques-education .celia {
  position: absolute; bottom: 33%; left: 28%; width: 18px; height: 48px;
  background: linear-gradient(180deg, #c8a070 0%, #8a5a30 60%, #4a2010 100%);
  border-radius: 40% 40% 30% 30% / 55% 55% 45% 45%;
  transform: rotate(-8deg);
  transform-origin: bottom center;
  animation: fje-celia 2.5s ease-in-out infinite alternate;
}
.scn-forest-jaques-education .jaques {
  position: absolute; bottom: 30%; left: 45%; width: 20px; height: 55px;
  background: linear-gradient(180deg, #6a5a3a 0%, #3a2a1a 60%, #1a0a00 100%);
  border-radius: 30% 30% 40% 40% / 40% 40% 30% 30%;
  transform: rotate(5deg);
  transform-origin: bottom center;
  animation: fje-jaques 4s ease-in-out infinite;
}
.scn-forest-jaques-education .jaques-cloak {
  position: absolute; bottom: 30%; left: 44%; width: 30px; height: 8px;
  background: #4a3a2a;
  border-radius: 50% 50% 0 0;
  transform: rotate(-10deg);
  animation: fje-cloak 3s ease-in-out infinite;
}
.scn-forest-jaques-education .butterfly {
  position: absolute; bottom: 60%; left: 35%; width: 10px; height: 6px;
  background: #d08030;
  border-radius: 50% 50% 20% 20%;
  box-shadow: 0 0 6px 2px rgba(208,128,48,0.4);
  animation: fje-but 5s ease-in-out infinite;
}
.scn-forest-jaques-education .leaf-spin {
  position: absolute; bottom: 40%; left: 60%; width: 12px; height: 8px;
  background: #8a7a3a;
  border-radius: 50% 50% 0 50%;
  animation: fje-leaf 8s linear infinite;
}
@keyframes fje-rosalind { 0%,100% { transform: translateY(0) rotate(2deg); } 20% { transform: translateY(-4px) rotate(-3deg); } 40% { transform: translateY(0) rotate(1deg); } 60% { transform: translateY(-2px) rotate(-1deg); } }
@keyframes fje-celia { 0% { transform: rotate(-8deg) translateY(0); } 50% { transform: rotate(-2deg) translateY(-5px); } 100% { transform: rotate(-10deg) translateY(0); } }
@keyframes fje-jaques { 0%,100% { transform: rotate(5deg) translateY(0); } 30% { transform: rotate(7deg) translateY(2px); } 60% { transform: rotate(3deg) translateY(-1px); } }
@keyframes fje-cloak { 0%,100% { transform: rotate(-10deg) translateX(0); } 50% { transform: rotate(0deg) translateX(5px); } }
@keyframes fje-but { 0% { transform: translate(0,0) rotate(0); } 25% { transform: translate(-15px,10px) rotate(45deg); } 50% { transform: translate(10px,20px) rotate(180deg); } 75% { transform: translate(-5px,5px) rotate(270deg); } 100% { transform: translate(0,0) rotate(360deg); } }
@keyframes fje-leaf { 0% { transform: translateX(0) rotate(0); } 100% { transform: translateX(120px) rotate(360deg); } }

.scn-forest-deer-song {
  background: linear-gradient(180deg, #d4c090 0%, #b8a06a 40%, #7a6030 100%),
              radial-gradient(ellipse at 30% 40%, #e8d4a0 0%, transparent 60%);
}
.scn-forest-deer-song .terrain {
  position: absolute; bottom: 25%; left: 0; right: 0; height: 15%;
  background: linear-gradient(180deg, #6a5a3a, #3a2a1a);
  border-radius: 20% 80% 0 0;
}
.scn-forest-deer-song .forester-group {
  position: absolute; bottom: 28%; left: 30%; width: 40px; height: 50px;
  background: linear-gradient(180deg, #8a7a5a 0%, #5a4a2a 60%, #2a1a0a 100%);
  border-radius: 30% 30% 40% 40% / 50% 50% 30% 30%;
  animation: fde-group 3s ease-in-out infinite;
}
.scn-forest-deer-song .horns-hero {
  position: absolute; bottom: 58%; left: 38%; width: 14px; height: 14px;
  background: #c0a860;
  clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
  transform: rotate(10deg);
  animation: fde-horns 1.5s ease-in-out infinite alternate;
}
.scn-forest-deer-song .deer-body {
  position: absolute; bottom: 28%; left: 50%; width: 50px; height: 30px;
  background: linear-gradient(180deg, #a08050, #6a4a20);
  border-radius: 30% 30% 40% 40% / 60% 60% 40% 40%;
  transform: rotate(-5deg);
  animation: fde-deer 4s ease-in-out infinite;
}
.scn-forest-deer-song .branch-victory {
  position: absolute; bottom: 45%; left: 42%; width: 20px; height: 4px;
  background: #5a3a1a;
  border-radius: 40%;
  transform: rotate(45deg);
  animation: fde-branch 2s ease-in-out infinite;
}
.scn-forest-deer-song .confetti-light {
  position: absolute; top: 15%; left: 20%; right: 20%; height: 10px;
  background: repeating-linear-gradient(90deg, transparent, transparent 8px, rgba(255,220,100,0.4) 8px, rgba(255,220,100,0.4) 12px);
  animation: fde-conf 0.8s steps(3) infinite;
}
@keyframes fde-group { 0%,100% { transform: translateY(0) rotate(-2deg); } 30% { transform: translateY(3px) rotate(0deg); } 60% { transform: translateY(0) rotate(2deg); } }
@keyframes fde-horns { 0% { transform: rotate(10deg) scale(1); } 100% { transform: rotate(-10deg) scale(1.2); } }
@keyframes fde-deer { 0%,100% { transform: rotate(-5deg) translateY(0); } 50% { transform: rotate(0deg) translateY(-4px); } }
@keyframes fde-branch { 0%,100% { transform: rotate(45deg) scaleX(1); } 50% { transform: rotate(30deg) scaleX(1.3); } }
@keyframes fde-conf { 0% { transform: translateX(0); opacity: 0.5; } 50% { transform: translateX(6px); opacity: 1; } 100% { transform: translateX(0); opacity: 0.5; } }

.scn-forest-bloody-napkin {
  background: linear-gradient(180deg, #c4b080 0%, #9a8060 30%, #7a6040 100%),
              radial-gradient(ellipse at 40% 20%, #d4bc90 0%, transparent 60%);
}
.scn-forest-bloody-napkin .forest-floor {
  position: absolute; bottom: 25%; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #6a5a3a, #3a2a1a);
  border-radius: 40% 60% 0 0;
}
.scn-forest-bloody-napkin .rosalind-celia {
  position: absolute; bottom: 32%; left: 10%; width: 30px; height: 50px;
  background: linear-gradient(180deg, #d4a070 0%, #a07040 60%, #502810 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  animation: fbn-rc 4s ease-in-out infinite;
}
.scn-forest-bloody-napkin .silvius-en {
  position: absolute; bottom: 28%; left: 45%; width: 22px; height: 58px;
  background: linear-gradient(180deg, #8a7a4a 0%, #5a3a1a 60%, #2a1a00 100%);
  border-radius: 30% 30% 40% 40% / 40% 40% 30% 30%;
  transform: rotate(10deg);
  animation: fbn-silvius 3s ease-in-out infinite;
}
.scn-forest-bloody-napkin .napkin-blood {
  position: absolute; bottom: 45%; left: 38%; width: 16px; height: 14px;
  background: radial-gradient(#703020 0%, #8a3a1a 40%, transparent 70%);
  border-radius: 20% 80% 40% 60%;
  box-shadow: 0 0 10px 4px rgba(112,48,32,0.5);
  animation: fbn-napkin 2s ease-in-out infinite alternate;
}
.scn-forest-bloody-napkin .dread-shadow {
  position: absolute; bottom: 0; left: 5%; right: 5%; height: 40%;
  background: radial-gradient(ellipse at 40% 100%, rgba(0,0,0,0.2) 0%, transparent 70%);
  animation: fbn-shadow 0.3s steps(2) infinite;
}
.scn-forest-bloody-napkin .arrow-quiver {
  position: absolute; bottom: 40%; left: 58%; width: 6px; height: 16px;
  background: #5a3a1a;
  border-radius: 40% 40% 10% 10%;
  transform: rotate(-15deg);
  animation: fbn-arrow 5s ease-in-out infinite;
}
@keyframes fbn-rc { 0%,100% { transform: translateY(0) rotate(0); } 25% { transform: translateY(2px) rotate(-3deg); } 50% { transform: translateY(0) rotate(0); } 75% { transform: translateY(-1px) rotate(3deg); } }
@keyframes fbn-silvius { 0%,100% { transform: rotate(10deg) translateY(0); } 50% { transform: rotate(5deg) translateY(-3px); } }
@keyframes fbn-napkin { 0% { transform: scale(1) rotate(0); } 50% { transform: scale(1.2) rotate(20deg); } 100% { transform: scale(0.9) rotate(-10deg); } }
@keyframes fbn-shadow { 0% { opacity: 0.2; } 50% { opacity: 0.35; } }
@keyframes fbn-arrow { 0%,100% { transform: rotate(-15deg) translateX(0); } 50% { transform: rotate(-5deg) translateX(3px); } }

.scn-room-in-palace { background: linear-gradient(135deg, #1a1018 0%, #2a1a22 40%, #3a202a 80%), radial-gradient(ellipse at 50% 0%, #4a2a3a 0%, transparent 60%); }
.scn-room-in-palace { position:relative; overflow:hidden; height:100%; }
.scn-room-in-palace .wall-left { position:absolute; left:0; top:0; bottom:0; width:18%; background: linear-gradient(180deg, #2a1820 0%, #1a0e14 100%); box-shadow: inset -4px 0 6px rgba(0,0,0,.5); }
.scn-room-in-palace .wall-right { position:absolute; right:0; top:0; bottom:0; width:18%; background: linear-gradient(180deg, #2a1820 0%, #1a0e14 100%); box-shadow: inset 4px 0 6px rgba(0,0,0,.5); }
.scn-room-in-palace .arch { position:absolute; top:5%; left:20%; width:60%; height:60%; background: radial-gradient(ellipse at 50% 100%, transparent 60%, #1a0e14 62%, #2a1820 100%); border-radius:50% 50% 0 0; }
.scn-room-in-palace .column-a { position:absolute; top:8%; left:22%; width:4%; bottom:0; background: linear-gradient(180deg, #4a323a 0%, #2a1a22 100%); border-radius:4px 4px 0 0; box-shadow: 2px 0 4px rgba(0,0,0,.4); }
.scn-room-in-palace .column-b { position:absolute; top:8%; right:22%; width:4%; bottom:0; background: linear-gradient(180deg, #4a323a 0%, #2a1a22 100%); border-radius:4px 4px 0 0; box-shadow: -2px 0 4px rgba(0,0,0,.4); }
.scn-room-in-palace .candle { position:absolute; bottom:30%; left:38%; width:8px; height:20px; background: linear-gradient(180deg, #f0c080 0%, #a06030 100%); border-radius:30% 30% 10% 10%; box-shadow: 0 0 20px 6px rgba(240,192,128,.6), 0 0 40px 12px rgba(240,192,128,.3); animation: rp1-flicker 1.5s ease-in-out infinite alternate; }
.scn-room-in-palace .figure-a { position:absolute; bottom:18%; left:32%; width:24px; height:64px; background: radial-gradient(ellipse 60% 50% at 50% 20%, #4a323a 0%, #1a0e14 100%); border-radius:50% 50% 40% 40% / 60% 60% 30% 30%; transform-origin: bottom center; animation: rp1-breathe 4s ease-in-out infinite; }
.scn-room-in-palace .figure-b { position:absolute; bottom:16%; right:30%; width:22px; height:58px; background: radial-gradient(ellipse 60% 50% at 50% 20%, #3a2a2a 0%, #1a0e14 100%); border-radius:50% 50% 40% 40% / 60% 60% 30% 30%; transform-origin: bottom center; animation: rp1-breathe 4s ease-in-out infinite 1s; }
.scn-room-in-palace .shadow-floor { position:absolute; bottom:0; left:5%; right:5%; height:18%; background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,.6) 100%); }
@keyframes rp1-flicker { 0% { opacity:.7; box-shadow: 0 0 15px 4px rgba(240,192,128,.5), 0 0 30px 8px rgba(240,192,128,.2); } 50% { opacity:1; box-shadow: 0 0 25px 8px rgba(240,192,128,.7), 0 0 50px 14px rgba(240,192,128,.4); } 100% { opacity:.8; box-shadow: 0 0 18px 5px rgba(240,192,128,.6), 0 0 36px 10px rgba(240,192,128,.3); } }
@keyframes rp1-breathe { 0% { transform: translateY(0) scaleY(1); } 50% { transform: translateY(-3px) scaleY(1.02); } 100% { transform: translateY(0) scaleY(1); } }

.scn-forest-of-arden { background: linear-gradient(180deg, #b8d4b0 0%, #7a9e6e 40%, #4a6a3a 100%), radial-gradient(ellipse at 50% 100%, #d4e8c0 0%, transparent 70%); }
.scn-forest-of-arden { position:relative; overflow:hidden; height:100%; }
.scn-forest-of-arden .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #e0f0d0 0%, #b8d4b0 100%); animation: fa2-sky 20s ease-in-out infinite alternate; }
.scn-forest-of-arden .sun-haze { position:absolute; top:12%; left:30%; width:120px; height:120px; background: radial-gradient(circle, rgba(255,240,200,.4) 0%, transparent 70%); filter: blur(15px); animation: fa2-haze 30s ease-in-out infinite alternate; }
.scn-forest-of-arden .trunk { position:absolute; bottom:0; left:15%; width:12%; height:80%; background: linear-gradient(180deg, #5a3a2a 0%, #3a2216 100%); border-radius:30% 30% 0 0; }
.scn-forest-of-arden .canopy { position:absolute; top:0; left:5%; right:5%; height:40%; background: radial-gradient(ellipse at 50% 100%, #4a7a3a 0%, #2a4a1a 100%); border-radius:60% 60% 40% 40%; }
.scn-forest-of-arden .glade { position:absolute; bottom:25%; left:40%; width:30%; height:20%; background: radial-gradient(ellipse, #d4e8c0 0%, transparent 100%); border-radius:50%; filter: blur(8px); }
.scn-forest-of-arden .figure-orlando { position:absolute; bottom:18%; left:42%; width:18px; height:40px; background: linear-gradient(180deg, #2a3a2a 0%, #1a2a1a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: fa2-walk 6s ease-in-out infinite; }
.scn-forest-of-arden .figure-adam { position:absolute; bottom:16%; left:52%; width:16px; height:36px; background: linear-gradient(180deg, #3a2a2a 0%, #1a1a1a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: fa2-walk 6s ease-in-out infinite 2s; }
.scn-forest-of-arden .leaf-a { position:absolute; top:20%; left:10%; width:12px; height:8px; background: #6a9a4a; border-radius:0 60% 0 60%; filter: blur(1px); animation: fa2-drift 15s linear infinite; }
.scn-forest-of-arden .leaf-b { position:absolute; top:30%; left:80%; width:10px; height:6px; background: #7aaa5a; border-radius:60% 0 60% 0; filter: blur(1px); animation: fa2-drift 18s linear infinite 5s; }
@keyframes fa2-sky { 0% { opacity:.8; } 50% { opacity:1; } 100% { opacity:.9; } }
@keyframes fa2-haze { 0% { transform: translate(0,0) scale(1); opacity:.3; } 50% { transform: translate(10px,-5px) scale(1.1); opacity:.6; } 100% { transform: translate(-5px,5px) scale(.95); opacity:.4; } }
@keyframes fa2-walk { 0% { transform: translateX(0) translateY(0) rotate(-2deg); } 25% { transform: translateX(4px) translateY(-1px) rotate(2deg); } 50% { transform: translateX(8px) translateY(0) rotate(-2deg); } 75% { transform: translateX(12px) translateY(-1px) rotate(2deg); } 100% { transform: translateX(16px) translateY(0) rotate(0); } }
@keyframes fa2-drift { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-20px) rotate(30deg); } 100% { transform: translateY(0) rotate(0deg); } }

.scn-room-in-palace-2 { background: linear-gradient(135deg, #1a0e14 0%, #2a1820 50%, #3a1a24 100%), radial-gradient(ellipse at 30% 20%, #4a2a3a 0%, transparent 70%); }
.scn-room-in-palace-2 { position:relative; overflow:hidden; height:100%; }
.scn-room-in-palace-2 .bg-deep { position:absolute; inset:0; background: linear-gradient(180deg, rgba(0,0,0,.7) 0%, transparent 30%, transparent 70%, rgba(0,0,0,.4) 100%); }
.scn-room-in-palace-2 .throne { position:absolute; bottom:10%; left:35%; width:30%; height:50%; background: linear-gradient(180deg, #4a323a 0%, #2a1a22 100%); border-radius:20% 20% 10% 10%; box-shadow: 0 8px 16px rgba(0,0,0,.6); }
.scn-room-in-palace-2 .duke-silhouette { position:absolute; bottom:14%; left:42%; width:20px; height:44px; background: linear-gradient(180deg, #1a0e14 0%, #0a060a 100%); border-radius:50% 50% 40% 40% / 60% 60% 30% 30%; transform-origin: bottom center; animation: rp3-sway 5s ease-in-out infinite; }
.scn-room-in-palace-2 .guard-left { position:absolute; bottom:10%; left:22%; width:18px; height:52px; background: linear-gradient(180deg, #2a1a22 0%, #1a0e14 100%); border-radius:50% 50% 40% 40% / 70% 70% 30% 30%; transform-origin: bottom center; animation: rp3-strafe 8s ease-in-out infinite; }
.scn-room-in-palace-2 .guard-right { position:absolute; bottom:10%; right:22%; width:18px; height:52px; background: linear-gradient(180deg, #2a1a22 0%, #1a0e14 100%); border-radius:50% 50% 40% 40% / 70% 70% 30% 30%; transform-origin: bottom center; animation: rp3-strafe 8s ease-in-out infinite 4s; }
.scn-room-in-palace-2 .torch { position:absolute; bottom:28%; left:48%; width:10px; height:24px; background: linear-gradient(180deg, #f0c080 0%, #a06030 100%); border-radius:30% 30% 10% 10%; box-shadow: 0 0 16px 6px rgba(240,192,128,.5), 0 0 32px 12px rgba(240,192,128,.2); animation: rp3-flicker 2s ease-in-out infinite alternate; }
.scn-room-in-palace-2 .shadow-arch { position:absolute; top:8%; left:25%; width:50%; height:40%; background: radial-gradient(ellipse at 50% 100%, transparent 50%, #0a060a 52%); border-radius:50% 50% 0 0; }
@keyframes rp3-sway { 0% { transform: translateX(0) rotate(-1deg); } 50% { transform: translateX(3px) rotate(1deg); } 100% { transform: translateX(0) rotate(-1deg); } }
@keyframes rp3-strafe { 0% { transform: translateX(0); opacity:.8; } 50% { transform: translateX(6px); opacity:1; } 100% { transform: translateX(0); opacity:.8; } }
@keyframes rp3-flicker { 0% { opacity:.6; box-shadow: 0 0 10px 3px rgba(240,192,128,.4), 0 0 20px 6px rgba(240,192,128,.15); } 50% { opacity:1; box-shadow: 0 0 20px 8px rgba(240,192,128,.7), 0 0 40px 14px rgba(240,192,128,.35); } 100% { opacity:.75; box-shadow: 0 0 14px 5px rgba(240,192,128,.5), 0 0 28px 10px rgba(240,192,128,.2); } }

.scn-before-olivers-house { background: linear-gradient(180deg, #d4c8a0 0%, #a8906a 30%, #7a603a 100%), radial-gradient(ellipse at 50% 0%, #e8dcc0 0%, transparent 60%); }
.scn-before-olivers-house { position:relative; overflow:hidden; height:100%; }
.scn-before-olivers-house .sky-bright { position:absolute; inset:0 0 45% 0; background: linear-gradient(180deg, #e8dcc0 0%, #d4c8a0 100%); animation: oh4-sky 12s ease-in-out infinite alternate; }
.scn-before-olivers-house .house { position:absolute; bottom:30%; left:30%; width:40%; height:50%; background: linear-gradient(180deg, #c0a880 0%, #9a7a5a 100%); border-radius:8% 8% 4% 4%; box-shadow: 0 10px 20px rgba(0,0,0,.3); }
.scn-before-olivers-house .door { position:absolute; bottom:30%; left:48%; width:8%; height:30%; background: linear-gradient(180deg, #6a4a2a 0%, #3a2a1a 100%); border-radius:20% 20% 0 0; box-shadow: inset -2px 0 4px rgba(0,0,0,.5); }
.scn-before-olivers-house .orlando { position:absolute; bottom:14%; left:36%; width:18px; height:40px; background: linear-gradient(180deg, #2a3a2a 0%, #1a2a1a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: oh4-step 5s ease-in-out infinite; }
.scn-before-olivers-house .adam { position:absolute; bottom:12%; left:46%; width:16px; height:36px; background: linear-gradient(180deg, #3a2a2a 0%, #1a1a1a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: oh4-step 5s ease-in-out infinite 2.5s; }
.scn-before-olivers-house .path { position:absolute; bottom:0; left:35%; width:30%; height:20%; background: linear-gradient(180deg, #b8a080 0%, #8a6a4a 100%); border-radius:30% 30% 0 0; }
.scn-before-olivers-house .bush-left { position:absolute; bottom:15%; left:22%; width:40px; height:32px; background: radial-gradient(ellipse at 50% 100%, #5a7a3a 0%, #3a5a2a 100%); border-radius:50%; box-shadow: 0 4px 8px rgba(0,0,0,.2); }
.scn-before-olivers-house .bush-right { position:absolute; bottom:15%; right:22%; width:35px; height:28px; background: radial-gradient(ellipse at 50% 100%, #5a7a3a 0%, #3a5a2a 100%); border-radius:50%; box-shadow: 0 4px 8px rgba(0,0,0,.2); }
.scn-before-olivers-house .shadow-ground { position:absolute; bottom:0; left:10%; right:10%; height:10%; background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,.5) 100%); }
@keyframes oh4-sky { 0% { opacity:.8; } 50% { opacity:1; } 100% { opacity:.9; } }
@keyframes oh4-step { 0% { transform: translateX(0) translateY(0) rotate(-3deg); } 25% { transform: translateX(5px) translateY(-2px) rotate(2deg); } 50% { transform: translateX(10px) translateY(0) rotate(-2deg); } 75% { transform: translateX(15px) translateY(-1px) rotate(3deg); } 100% { transform: translateX(20px) translateY(0) rotate(0); } }

/* Scene: forest-of-arden-2 (funny, sunlit) */
.scn-forest-of-arden-2 {
  background: 
    linear-gradient(180deg, #fdf4e0 0%, #f5e0b0 30%, #c8a86e 60%, #6b4e2a 100%),
    radial-gradient(ellipse at 50% 0%, #fff8e0 0%, transparent 40%);
}
.scn-forest-of-arden-2 .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #b8d4f0 0%, #d4e8ff 30%, #ffffff 100%); animation: ar2-sky 8s ease-in-out infinite alternate; }
.scn-forest-of-arden-2 .sunrays { position:absolute; inset:0 0 60% 0; background: radial-gradient(ellipse at 30% 20%, rgba(255,230,180,0.5) 0%, transparent 50%); animation: ar2-rays 6s ease-in-out infinite alternate; }
.scn-forest-of-arden-2 .trunk-a { position:absolute; left:20%; bottom:0; width:30px; height:60%; background: linear-gradient(90deg, #4a3520, #6b4e2a); border-radius: 4px; transform-origin: bottom center; animation: ar2-sway 12s ease-in-out infinite; }
.scn-forest-of-arden-2 .trunk-b { position:absolute; right:30%; bottom:0; width:25px; height:55%; background: linear-gradient(90deg, #4a3520, #6b4e2a); border-radius: 4px; transform-origin: bottom center; animation: ar2-sway 14s ease-in-out infinite reverse; }
.scn-forest-of-arden-2 .leaf-canopy { position:absolute; top:10%; left:10%; right:10%; height:25%; background: radial-gradient(ellipse at 50% 100%, #a0c860 0%, #6a9e20 60%, transparent 80%); border-radius: 60% 40% 50% 50%; filter: blur(3px); animation: ar2-leaves 20s ease-in-out infinite; }
.scn-forest-of-arden-2 .figure-rosalind { position:absolute; bottom:25%; left:40%; width:22px; height:50px; background: linear-gradient(180deg, #cfa54e, #7a5a20); border-radius: 50% 50% 40% 40% / 65% 65% 40% 40%; transform-origin: bottom center; animation: ar2-walk 4s ease-in-out infinite; }
.scn-forest-of-arden-2 .figure-celia { position:absolute; bottom:25%; left:55%; width:20px; height:46px; background: linear-gradient(180deg, #b0c0d0, #5a6a7a); border-radius: 50% 50% 40% 40% / 65% 65% 40% 40%; transform-origin: bottom center; animation: ar2-walk 4.5s ease-in-out infinite reverse; }
.scn-forest-of-arden-2 .figure-touchstone { position:absolute; bottom:25%; left:70%; width:18px; height:40px; background: linear-gradient(180deg, #b8633a, #5e2a1a); border-radius: 50% 50% 40% 40% / 65% 65% 40% 40%; transform-origin: bottom center; animation: ar2-antic 0.8s ease-in-out infinite alternate; }

@keyframes ar2-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.9 } }
@keyframes ar2-rays { 0% { transform: scale(1) } 50% { transform: scale(1.05) } 100% { transform: scale(0.95) } }
@keyframes ar2-sway { 0% { transform: rotate(-1deg) } 50% { transform: rotate(1.5deg) } 100% { transform: rotate(-1deg) } }
@keyframes ar2-leaves { 0% { transform: translateY(0) } 50% { transform: translateY(-5px) } 100% { transform: translateY(2px) } }
@keyframes ar2-walk { 0% { transform: translateX(0) rotate(0deg) } 25% { transform: translateX(5px) rotate(2deg) } 50% { transform: translateX(10px) rotate(0deg) } 75% { transform: translateX(5px) rotate(-2deg) } 100% { transform: translateX(0) rotate(0deg) } }
@keyframes ar2-antic { 0% { transform: translateY(0) rotate(-5deg) } 100% { transform: translateY(-10px) rotate(5deg) } }

/* Scene: forest-song (calm, sunlit) */
.scn-forest-song {
  background: 
    linear-gradient(180deg, #dcedc8 0%, #a5d6a7 40%, #4a7c59 100%),
    radial-gradient(ellipse at 50% 0%, #ffffff 0%, transparent 30%);
}
.scn-forest-song .ground { position:absolute; bottom:0; height:35%; left:0; right:0; background: linear-gradient(180deg, #8b6b4e, #4a3520); border-radius: 30% 70% 0 0 / 50% 100% 0 0; animation: fsg-ground 20s ease-in-out infinite; }
.scn-forest-song .tree-trunk { position:absolute; left:50%; bottom:20%; width:40px; height:70%; transform: translateX(-50%); background: linear-gradient(90deg, #5e3e1a, #8b6b4e, #5e3e1a); border-radius: 6px; box-shadow: 8px 0 20px rgba(0,0,0,0.3); animation: fsg-trunk 30s ease-in-out infinite; }
.scn-forest-song .branches { position:absolute; top:15%; left:40%; right:20%; height:50%; background: radial-gradient(ellipse at 50% 100%, #7a9e4a 0%, transparent 70%); border-radius: 50%; filter: blur(8px); animation: fsg-branches 40s ease-in-out infinite; }
.scn-forest-song .dappled-light { position:absolute; inset:0; background: radial-gradient(circle at 20% 30%, rgba(255,255,200,0.3) 0%, transparent 40%), radial-gradient(circle at 70% 60%, rgba(255,255,200,0.2) 0%, transparent 30%); animation: fsg-dapple 10s ease-in-out infinite alternate; }
.scn-forest-song .figure-amien { position:absolute; bottom:25%; left:30%; width:20px; height:40px; background: linear-gradient(180deg, #4a6a3a, #2a3a1a); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: fsg-rest 6s ease-in-out infinite; }
.scn-forest-song .figure-jaques { position:absolute; bottom:25%; left:60%; width:22px; height:42px; background: linear-gradient(180deg, #5a4a3a, #3a2a1a); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: fsg-rest 7s ease-in-out infinite reverse; }
.scn-forest-song .leaf-particles { position:absolute; top:30%; left:20%; width:10px; height:10px; background: #a0c860; border-radius: 50%; filter: blur(4px); box-shadow: 40px 80px 0 #8ab840, 120px 60px 0 #7aae30, 200px 100px 0 #9ac860, 300px 40px 0 #8ac050; animation: fsg-drift 50s linear infinite; }

@keyframes fsg-ground { 0% { transform: translateY(0) } 50% { transform: translateY(2px) } 100% { transform: translateY(0) } }
@keyframes fsg-trunk { 0% { transform: translateX(-50%) scale(1) } 50% { transform: translateX(-50%) scale(1.02, 1) } 100% { transform: translateX(-50%) scale(1) } }
@keyframes fsg-branches { 0% { transform: scale(1) rotate(0deg) } 50% { transform: scale(1.03) rotate(2deg) } 100% { transform: scale(1) rotate(-1deg) } }
@keyframes fsg-dapple { 0% { opacity: 0.6 } 50% { opacity: 1 } 100% { opacity: 0.7 } }
@keyframes fsg-rest { 0%,100% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(-3px) rotate(2deg) } }
@keyframes fsg-drift { 0% { transform: translateX(0) } 100% { transform: translateX(-400px) } }

/* Scene: forest-orlando-adam (tense, sunlit) */
.scn-forest-orlando-adam {
  background: 
    linear-gradient(180deg, #f0e6d0 0%, #c8b898 40%, #8a704e 100%),
    radial-gradient(ellipse at 40% 0%, #fff5e0 0%, transparent 30%);
}
.scn-forest-orlando-adam .sky { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #b8c0d0 0%, #d0d8e0 40%, #e8ece8 100%); animation: oad-sky 4s ease-in-out infinite alternate; }
.scn-forest-orlando-adam .sun-glare { position:absolute; top:0; left:30%; width:150px; height:150px; background: radial-gradient(circle, rgba(255,240,200,0.4) 0%, transparent 70%); animation: oad-glare 3s ease-in-out infinite alternate; }
.scn-forest-orlando-adam .tree-shadow { position:absolute; right:0; bottom:0; width:60%; height:70%; background: linear-gradient(180deg, rgba(0,0,0,0.1), rgba(0,0,0,0.4)); clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%); animation: oad-shadow 8s ease-in-out infinite; }
.scn-forest-orlando-adam .ground-harsh { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #8a704e, #5a402a); border-radius: 20% 80% 0 0 / 40% 60% 0 0; animation: oad-ground 5s ease-in-out infinite; }
.scn-forest-orlando-adam .figure-orlando { position:absolute; bottom:25%; left:45%; width:24px; height:50px; background: linear-gradient(180deg, #6a5a3a, #3a2a1a); border-radius: 50% 50% 40% 40% / 65% 65% 40% 40%; transform-origin: bottom center; animation: oad-rush 2s ease-in-out infinite alternate; }
.scn-forest-orlando-adam .figure-adam { position:absolute; bottom:22%; left:60%; width:20px; height:30px; background: linear-gradient(180deg, #4a3a2a, #2a1a0a); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; transform: rotate(-30deg); transform-origin: left bottom; animation: oad-fall 3s ease-in-out infinite; }
.scn-forest-orlando-adam .dust { position:absolute; bottom:28%; left:50%; width:4px; height:4px; background: #c8b898; border-radius: 50%; box-shadow: 10px 5px 0 #bca88a, -8px 12px 0 #c8b898, 20px -5px 0 #b8a080, -15px -2px 0 #c0a888; animation: oad-dust 4s ease-in-out infinite alternate; }

@keyframes oad-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.7 } }
@keyframes oad-glare { 0% { transform: scale(0.8) } 100% { transform: scale(1.2) } }
@keyframes oad-shadow { 0% { opacity:0.3 } 50% { opacity:0.6 } 100% { opacity:0.4 } }
@keyframes oad-ground { 0% { transform: scale(1) } 50% { transform: scale(1.02, 0.98) } 100% { transform: scale(1) } }
@keyframes oad-rush { 0% { transform: translateX(0) } 50% { transform: translateX(15px) rotate(5deg) } 100% { transform: translateX(0) } }
@keyframes oad-fall { 0% { transform: rotate(-30deg) } 50% { transform: rotate(-40deg) translateY(3px) } 100% { transform: rotate(-30deg) } }
@keyframes oad-dust { 0% { transform: translate(0,0) scale(1); opacity:0.8 } 100% { transform: translate(-10px,-20px) scale(0.5); opacity:0 } }

/* Scene: forest-banquet (calm, sunlit) */
.scn-forest-banquet {
  background: 
    linear-gradient(180deg, #f5ecd0 0%, #d4c4a0 40%, #9b8a6a 100%),
    radial-gradient(ellipse at 50% 0%, #fff8e0 0%, transparent 30%);
}
.scn-forest-banquet .tablecloth { position:absolute; bottom:15%; left:20%; right:20%; height:25%; background: linear-gradient(180deg, #e0d0b8, #c0b098); border-radius: 20px; box-shadow: 0 8px 30px rgba(0,0,0,0.3); animation: fbn-table 30s ease-in-out infinite; }
.scn-forest-banquet .cups { position:absolute; bottom:30%; left:35%; width:10px; height:14px; background: #a08060; border-radius: 4px 4px 8px 8px; box-shadow: 30px 0 0 #a08060, 60px 0 0 #a08060; animation: fbn-cups 6s ease-in-out infinite; }
.scn-forest-banquet .plate { position:absolute; bottom:27%; left:48%; width:30px; height:8px; background: #c0b098; border-radius: 50%; box-shadow: 0 2px 6px rgba(0,0,0,0.2); animation: fbn-plate 8s ease-in-out infinite; }
.scn-forest-banquet .figure-duke { position:absolute; bottom:28%; left:25%; width:26px; height:50px; background: linear-gradient(180deg, #4a3a2a, #2a1a0a); border-radius: 50% 50% 40% 40% / 65% 65% 40% 40%; transform-origin: bottom center; animation: fbn-sit 10s ease-in-out infinite; }
.scn-forest-banquet .figure-lord-1 { position:absolute; bottom:28%; left:55%; width:22px; height:45px; background: linear-gradient(180deg, #5a4a3a, #3a2a1a); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: fbn-sit 12s ease-in-out infinite reverse; }
.scn-forest-banquet .figure-lord-2 { position:absolute; bottom:28%; left:70%; width:22px; height:45px; background: linear-gradient(180deg, #5a4a3a, #3a2a1a); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: fbn-sit 14s ease-in-out infinite; }
.scn-forest-banquet .candles { position:absolute; bottom:35%; left:30%; width:4px; height:20px; background: #c8b898; border-radius: 2px; transform: rotate(3deg); box-shadow: 40px 0 0 #c8b898, 80px 0 0 #c8b898; animation: fbn-candle 7s ease-in-out infinite alternate; }
.scn-forest-banquet .ambient-glow { position:absolute; bottom:20%; left:30%; right:30%; height:30%; background: radial-gradient(ellipse at 50% 50%, rgba(255,200,150,0.3) 0%, transparent 70%); animation: fbn-glow 5s ease-in-out infinite alternate; }

@keyframes fbn-table { 0% { transform: scale(1) translateY(0) } 50% { transform: scale(1.02) translateY(-2px) } 100% { transform: scale(1) } }
@keyframes fbn-cups { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes fbn-plate { 0% { transform: scale(1) } 50% { transform: scale(1.05) } 100% { transform: scale(1) } }
@keyframes fbn-sit { 0% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(-3px) rotate(1deg) } 100% { transform: translateY(0) rotate(0deg) } }
@keyframes fbn-candle { 0% { transform: rotate(3deg) scale(1) } 100% { transform: rotate(-3deg) scale(1.1,0.9) } }
@keyframes fbn-glow { 0% { opacity:0.5 } 100% { opacity:1 } }

/* Scene: orlando-complaint */
.scn-orlando-complaint {
  background: linear-gradient(135deg, #f5e6c8 0%, #d4b48c 40%, #c2a072 100%);
}
.scn-orlando-complaint .wall {
  position: absolute; inset: 0 0 20% 0;
  background: linear-gradient(180deg, #e8d5b0 0%, #c8a880 100%);
  animation: oc-wall 8s ease-in-out infinite;
}
.scn-orlando-complaint .light-shaft {
  position: absolute; top: 5%; left: 30%; width: 35%; height: 80%;
  background: linear-gradient(180deg, rgba(255,240,200,0.4) 0%, transparent 100%);
  clip-path: polygon(30% 0, 70% 0, 60% 100%, 20% 100%);
  animation: oc-shaft 6s ease-in-out infinite alternate;
}
.scn-orlando-complaint .figure {
  position: absolute; bottom: 22%; left: 35%; width: 30px; height: 80px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: oc-figure 4s ease-in-out infinite;
}
.scn-orlando-complaint .parchment {
  position: absolute; bottom: 30%; left: 42%; width: 24px; height: 18px;
  background: linear-gradient(135deg, #f0e0c0 0%, #d4b080 100%);
  border-radius: 2px;
  transform: rotate(-10deg);
  animation: oc-parchment 5s ease-in-out infinite;
}
.scn-orlando-complaint .shadow-harsh {
  position: absolute; bottom: 20%; left: 20%; width: 60%; height: 40%;
  background: linear-gradient(180deg, rgba(0,0,0,0.3) 0%, transparent 100%);
  clip-path: polygon(40% 0, 70% 0, 60% 100%, 30% 100%);
  animation: oc-shadow 7s ease-in-out infinite alternate;
}
.scn-orlando-complaint .dust {
  position: absolute; top: 30%; left: 50%; width: 100%; height: 60%;
  background: radial-gradient(ellipse at 50% 100%, rgba(255,240,200,0.15) 0%, transparent 100%);
  animation: oc-dust 12s linear infinite;
}
.scn-orlando-complaint .window-frame {
  position: absolute; top: 8%; right: 12%; width: 40px; height: 50px;
  background: linear-gradient(180deg, #a08060 0%, #6a4a2a 100%);
  border-radius: 4px 4px 0 0;
  box-shadow: inset 0 0 15px rgba(0,0,0,0.4);
  animation: oc-window 9s ease-in-out infinite;
}
@keyframes oc-wall { 0% { opacity: 1; } 50% { opacity: 0.9; } 100% { opacity: 1; } }
@keyframes oc-shaft { 0% { transform: translateX(0); opacity: 0.5; } 50% { transform: translateX(5px) scaleX(1.03); opacity: 0.7; } 100% { transform: translateX(-3px); opacity: 0.4; } }
@keyframes oc-figure { 0% { transform: translateY(0) rotate(-1deg); } 50% { transform: translateY(-3px) rotate(1deg); } 100% { transform: translateY(0) rotate(0); } }
@keyframes oc-parchment { 0% { transform: rotate(-10deg) translateY(0); } 50% { transform: rotate(-7deg) translateY(-2px); } 100% { transform: rotate(-12deg) translateY(0); } }
@keyframes oc-shadow { 0% { opacity: 0.2; clip-path: polygon(40% 0, 70% 0, 60% 100%, 30% 100%); } 50% { opacity: 0.5; clip-path: polygon(35% 0, 65% 0, 55% 100%, 25% 100%); } 100% { opacity: 0.3; clip-path: polygon(42% 0, 72% 0, 62% 100%, 32% 100%); } }
@keyframes oc-dust { 0% { transform: translateY(0); } 100% { transform: translateY(-50px); opacity: 0; } }
@keyframes oc-window { 0% { transform: scale(1); } 50% { transform: scale(1.02); } 100% { transform: scale(1); } }

/* Scene: orlando-oliver-quarrel */
.scn-orlando-oliver-quarrel {
  background: linear-gradient(180deg, #f5e6c8 0%, #d4b48c 50%, #c2a072 100%);
}
.scn-orlando-oliver-quarrel .ground {
  position: absolute; inset: 70% 0 0 0;
  background: linear-gradient(180deg, #a0784a 0%, #7a5a32 100%);
  animation: ooq-ground 10s ease-in-out infinite;
}
.scn-orlando-oliver-quarrel .sky {
  position: absolute; inset: 0 0 70% 0;
  background: linear-gradient(180deg, #87ceeb 0%, #b0d4f0 60%, #e0f0ff 100%);
  animation: ooq-sky 8s ease-in-out infinite alternate;
}
.scn-orlando-oliver-quarrel .figure {
  position: absolute; bottom: 25%; width: 28px; height: 75px;
  background: linear-gradient(180deg, #2a1a0a 0%, #0a0500 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
}
.scn-orlando-oliver-quarrel .oliver-left {
  left: 35%;
  animation: ooq-oliver 3s ease-in-out infinite;
}
.scn-orlando-oliver-quarrel .orlando-right {
  left: 55%;
  animation: ooq-orlando 3.5s ease-in-out infinite;
}
.scn-orlando-oliver-quarrel .glare {
  position: absolute; top: 30%; left: 40%; width: 20%; height: 10%;
  background: radial-gradient(ellipse, rgba(255,255,200,0.6) 0%, transparent 100%);
  animation: ooq-glare 2s ease-in-out infinite alternate;
}
.scn-orlando-oliver-quarrel .shadow-stripe {
  position: absolute; bottom: 20%; left: 30%; width: 40%; height: 60%;
  background: linear-gradient(180deg, rgba(0,0,0,0.2) 0%, transparent 100%);
  clip-path: polygon(10% 0, 30% 0, 40% 100%, 20% 100%);
  animation: ooq-stripe 5s ease-in-out infinite;
}
.scn-orlando-oliver-quarrel .raised-hand {
  position: absolute; bottom: 55%; left: 58%; width: 10px; height: 16px;
  background: linear-gradient(180deg, #2a1a0a 0%, #0a0500 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform: rotate(20deg);
  animation: ooq-hand 2.5s ease-in-out infinite;
}
.scn-orlando-oliver-quarrel .dust-particles {
  position: absolute; top: 40%; left: 30%; width: 50%; height: 30%;
  background: radial-gradient(ellipse at 50% 100%, rgba(200,170,130,0.15) 0%, transparent 100%);
  animation: ooq-dust 7s linear infinite;
}
@keyframes ooq-ground { 0% { transform: translateY(0); } 50% { transform: translateY(2px); } 100% { transform: translateY(0); } }
@keyframes ooq-sky { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes ooq-oliver { 0% { transform: translateX(0) rotate(2deg); } 50% { transform: translateX(5px) rotate(-1deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes ooq-orlando { 0% { transform: translateX(0) rotate(-1deg); } 50% { transform: translateX(-3px) rotate(2deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes ooq-glare { 0% { opacity: 0.3; } 50% { opacity: 0.8; } 100% { opacity: 0.2; } }
@keyframes ooq-stripe { 0% { transform: skew(0); } 50% { transform: skew(5deg); } 100% { transform: skew(0); } }
@keyframes ooq-hand { 0% { transform: rotate(20deg) translateY(0); } 50% { transform: rotate(15deg) translateY(-2px); } 100% { transform: rotate(20deg) translateY(0); } }
@keyframes ooq-dust { 0% { transform: translateY(0); } 100% { transform: translateY(-40px); opacity: 0; } }

/* Scene: oliver-plot-charles */
.scn-oliver-plot-charles {
  background: linear-gradient(135deg, #f0e0c8 0%, #c8a880 50%, #a0784a 100%);
}
.scn-oliver-plot-charles .tree-trunk {
  position: absolute; bottom: 0; left: 20%; width: 15%; height: 80%;
  background: linear-gradient(180deg, #6a4a2a 0%, #3a2a1a 100%);
  border-radius: 10% 10% 0 0 / 20% 20% 0 0;
  animation: opc-trunk 6s ease-in-out infinite;
}
.scn-oliver-plot-charles .shadow-dappled {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at 40% 60%, rgba(0,0,0,0.15) 0%, transparent 70%);
  animation: opc-dapple 9s ease-in-out infinite alternate;
}
.scn-oliver-plot-charles .figure {
  position: absolute; bottom: 20%; width: 26px; height: 70px;
  background: linear-gradient(180deg, #2a1a0a 0%, #0a0500 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
}
.scn-oliver-plot-charles .oliver { left: 35%; animation: opc-oliver 4s ease-in-out infinite; }
.scn-oliver-plot-charles .charles { left: 52%; width: 34px; height: 78px; background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%); animation: opc-charles 3.5s ease-in-out infinite; }
.scn-oliver-plot-charles .muscle-arm {
  position: absolute; bottom: 40%; left: 65%; width: 16px; height: 22px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%);
  border-radius: 50% 50% 30% 30% / 70% 70% 30% 30%;
  transform: rotate(-30deg);
  animation: opc-arm 2.5s ease-in-out infinite;
}
.scn-oliver-plot-charles .sun-spot {
  position: absolute; top: 25%; left: 45%; width: 60px; height: 40px;
  background: radial-gradient(ellipse, rgba(255,240,200,0.5) 0%, transparent 100%);
  animation: opc-spot 5s ease-in-out infinite alternate;
}
.scn-oliver-plot-charles .leaf-litter {
  position: absolute; bottom: 5%; left: 30%; width: 40%; height: 15%;
  background: radial-gradient(ellipse at 50% 100%, rgba(160,120,60,0.3) 0%, transparent 100%);
  animation: opc-leaf 8s linear infinite;
}
@keyframes opc-trunk { 0% { transform: scaleX(1); } 50% { transform: scaleX(0.98) translateY(2px); } 100% { transform: scaleX(1); } }
@keyframes opc-dapple { 0% { opacity: 0.3; } 50% { opacity: 0.6; } 100% { opacity: 0.4; } }
@keyframes opc-oliver { 0% { transform: translateX(0) rotate(1deg); } 50% { transform: translateX(4px) rotate(-1deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes opc-charles { 0% { transform: translateX(0) rotate(-2deg) scale(1); } 50% { transform: translateX(-3px) rotate(1deg) scale(1.02); } 100% { transform: translateX(0) rotate(0) scale(1); } }
@keyframes opc-arm { 0% { transform: rotate(-30deg) scaleY(1); } 50% { transform: rotate(-25deg) scaleY(1.05); } 100% { transform: rotate(-30deg) scaleY(1); } }
@keyframes opc-spot { 0% { opacity: 0.4; transform: scale(1); } 50% { opacity: 0.7; transform: scale(1.1); } 100% { opacity: 0.5; transform: scale(0.95); } }
@keyframes opc-leaf { 0% { transform: translateX(0); } 100% { transform: translateX(60px); opacity: 0; } }

/* Scene: lawn-before-palace */
.scn-lawn-before-palace {
  background: linear-gradient(180deg, #e8f4e0 0%, #c8e0b0 50%, #a8c890 100%);
}
.scn-lawn-before-palace .lawn {
  position: absolute; inset: 60% 0 0 0;
  background: linear-gradient(180deg, #7a9a5a 0%, #5a7a3a 100%);
  border-radius: 20% 20% 0 0 / 30% 30% 0 0;
  animation: lbp-lawn 12s ease-in-out infinite;
}
.scn-lawn-before-palace .palace-arch {
  position: absolute; top: 10%; left: 35%; width: 30%; height: 50%;
  background: linear-gradient(180deg, #f0e8d0 0%, #d0c0a0 100%);
  border-radius: 50% 50% 0 0 / 80% 80% 0 0;
  box-shadow: inset 0 -20px 40px rgba(0,0,0,0.1);
  animation: lbp-arch 8s ease-in-out infinite;
}
.scn-lawn-before-palace .celia {
  position: absolute; bottom: 25%; left: 30%; width: 24px; height: 60px;
  background: linear-gradient(180deg, #f0d0b0 0%, #c8a880 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: lbp-celia 6s ease-in-out infinite;
}
.scn-lawn-before-palace .rosalind {
  position: absolute; bottom: 25%; left: 46%; width: 24px; height: 60px;
  background: linear-gradient(180deg, #e8c0a0 0%, #b89070 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: lbp-ros 6.5s ease-in-out infinite;
}
.scn-lawn-before-palace .flower-beds {
  position: absolute; bottom: 20%; left: 20%; width: 60%; height: 10%;
  background: linear-gradient(90deg, #ff8090 0%, #ffa0b0 15%, #90d080 30%, #ffc060 45%, #ffa0b0 60%, #80c0a0 75%, #ff90a0 90%, #d09060 100%);
  opacity: 0.6;
  filter: blur(3px);
  animation: lbp-flowers 10s ease-in-out infinite;
}
.scn-lawn-before-palace .soft-sun {
  position: absolute; top: 20%; left: 40%; width: 40%; height: 30%;
  background: radial-gradient(ellipse, rgba(255,255,200,0.3) 0%, transparent 100%);
  animation: lbp-sun 7s ease-in-out infinite alternate;
}
.scn-lawn-before-palace .floating-petals {
  position: absolute; top: 30%; left: 50%; width: 100%; height: 50%;
  background: radial-gradient(ellipse at 50% 100%, rgba(255,180,190,0.2) 0%, transparent 100%);
  animation: lbp-petals 15s linear infinite;
}
@keyframes lbp-lawn { 0% { transform: translateY(0); } 50% { transform: translateY(2px); } 100% { transform: translateY(0); } }
@keyframes lbp-arch { 0% { transform: scale(1); } 50% { transform: scale(1.01) translateY(-2px); } 100% { transform: scale(1); } }
@keyframes lbp-celia { 0% { transform: translateY(0) rotate(-1deg); } 50% { transform: translateY(-2px) rotate(1deg); } 100% { transform: translateY(0) rotate(0); } }
@keyframes lbp-ros { 0% { transform: translateY(0) rotate(1deg); } 50% { transform: translateY(-2px) rotate(-1deg); } 100% { transform: translateY(0) rotate(0); } }
@keyframes lbp-flowers { 0% { transform: translateX(0); opacity: 0.5; } 50% { transform: translateX(3px); opacity: 0.7; } 100% { transform: translateX(0); opacity: 0.5; } }
@keyframes lbp-sun { 0% { opacity: 0.3; } 50% { opacity: 0.6; } 100% { opacity: 0.4; } }
@keyframes lbp-petals { 0% { transform: translateY(0) rotate(0deg); } 100% { transform: translateY(-60px) rotate(360deg); opacity: 0; } }

/* forest-william */
.scn-forest-william { background: linear-gradient(180deg, #87ceeb 0%, #b0e57c 70%), radial-gradient(ellipse at 50% 20%, #fff4cc 0%, transparent 60%); }
.scn-forest-william .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #b0e57c 0%, transparent 100%); animation: fw-sky 10s ease-in-out infinite alternate; }
.scn-forest-william .sun { position:absolute; top:10%; left:60%; width:60px; height:60px; background: radial-gradient(circle, #fff7a0 0%, #f0d060 60%, transparent 80%); border-radius:50%; animation: fw-sun 15s ease-in-out infinite; }
.scn-forest-william .tree { position:absolute; bottom:30%; left:20%; width:40px; height:200px; background: linear-gradient(180deg, #6b4a3a 0%, #4a2a1a 100%); border-radius:20% 20% 10% 10%; transform-origin: bottom center; animation: fw-tree 8s ease-in-out infinite alternate; }
.scn-forest-william .tree::before { content:''; position:absolute; top:-30px; left:-30px; width:100px; height:80px; background: radial-gradient(ellipse at 50% 100%, #3a6b2a 0%, transparent 80%); border-radius:50%; }
.scn-forest-william .ground { position:absolute; bottom:0; left:0; right:0; height:35%; background: linear-gradient(180deg, #6b8a3a 0%, #4a6a2a 100%); border-radius:30% 70% 0 0 / 60% 80% 0 0; box-shadow: inset 0 10px 20px rgba(0,0,0,.2); animation: fw-ground 12s ease-in-out infinite alternate; }
.scn-forest-william .figure-1 { position:absolute; bottom:30%; left:40%; width:20px; height:50px; background: linear-gradient(180deg, #c8553d 0%, #8a2a1a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: fw-figure1 4s ease-in-out infinite; }
.scn-forest-william .figure-2 { position:absolute; bottom:30%; left:55%; width:18px; height:48px; background: linear-gradient(180deg, #5e1a1d 0%, #3a0a0a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: fw-figure2 5s ease-in-out infinite; }
.scn-forest-william .leaf { position:absolute; top:20%; width:12px; height:8px; border-radius:50% 0; background: #7aaa3a; filter: blur(1px); }
.scn-forest-william .leaf-a { left:10%; animation: fw-leaf-a 8s linear infinite; }
.scn-forest-william .leaf-b { left:70%; animation: fw-leaf-b 11s linear infinite; }
@keyframes fw-sky { 0% { opacity:0.8 } 50% { opacity:0.95 } 100% { opacity:0.85 } }
@keyframes fw-sun { 0% { transform: scale(1) } 50% { transform: scale(1.1) } 100% { transform: scale(1) } }
@keyframes fw-tree { 0% { transform: rotate(-1deg) } 50% { transform: rotate(1deg) } 100% { transform: rotate(-0.5deg) } }
@keyframes fw-ground { 0% { transform: translateY(0) } 50% { transform: translateY(-3px) } 100% { transform: translateY(0) } }
@keyframes fw-figure1 { 0% { transform: translateX(0) rotate(-2deg) } 25% { transform: translateX(5px) rotate(1deg) } 50% { transform: translateX(10px) rotate(-1deg) } 75% { transform: translateX(15px) rotate(2deg) } 100% { transform: translateX(20px) rotate(0) } }
@keyframes fw-figure2 { 0% { transform: translateX(0) rotate(2deg) } 25% { transform: translateX(-5px) rotate(-1deg) } 50% { transform: translateX(-10px) rotate(1deg) } 75% { transform: translateX(-15px) rotate(-2deg) } 100% { transform: translateX(-20px) rotate(0) } }
@keyframes fw-leaf-a { 0% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(40px) rotate(180deg) } 100% { transform: translateY(80px) rotate(360deg) } }
@keyframes fw-leaf-b { 0% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(60px) rotate(-180deg) } 100% { transform: translateY(120px) rotate(-360deg) } }

/* forest-orlando-oliver-reconciliation */
.scn-forest-orlando-oliver-reconciliation { background: linear-gradient(180deg, #c8e6c9 0%, #a5d6a7 50%, #81c784 100%), radial-gradient(ellipse at 50% 10%, #fff9c4 0%, transparent 60%); }
.scn-forest-orlando-oliver-reconciliation .bg { position:absolute; inset:0; background: linear-gradient(180deg, transparent 0%, rgba(255,255,255,0.1) 100%); animation: fo-bg 12s ease-in-out infinite alternate; }
.scn-forest-orlando-oliver-reconciliation .sun { position:absolute; top:8%; left:55%; width:80px; height:80px; background: radial-gradient(circle, #fff9c4 0%, #ffe082 70%, transparent 90%); border-radius:50%; animation: fo-sun 20s ease-in-out infinite; }
.scn-forest-orlando-oliver-reconciliation .tree-left { position:absolute; bottom:25%; left:10%; width:50px; height:180px; background: linear-gradient(180deg, #5d4037 0%, #3e2723 100%); border-radius:20% 20% 10% 10%; transform-origin: bottom center; animation: fo-tree-l 10s ease-in-out infinite alternate; }
.scn-forest-orlando-oliver-reconciliation .tree-left::before { content:''; position:absolute; top:-40px; left:-40px; width:130px; height:100px; background: radial-gradient(ellipse at 50% 100%, #4caf50 0%, transparent 80%); border-radius:50%; }
.scn-forest-orlando-oliver-reconciliation .tree-right { position:absolute; bottom:25%; right:10%; width:60px; height:200px; background: linear-gradient(180deg, #5d4037 0%, #3e2723 100%); border-radius:20% 20% 10% 10%; transform-origin: bottom center; animation: fo-tree-r 12s ease-in-out infinite alternate; }
.scn-forest-orlando-oliver-reconciliation .tree-right::before { content:''; position:absolute; top:-50px; left:-50px; width:160px; height:120px; background: radial-gradient(ellipse at 50% 100%, #66bb6a 0%, transparent 80%); border-radius:50%; }
.scn-forest-orlando-oliver-reconciliation .figure-orlando { position:absolute; bottom:30%; left:42%; width:22px; height:55px; background: linear-gradient(180deg, #5e1a1d 0%, #3a0a0a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: fo-fig1 6s ease-in-out infinite; }
.scn-forest-orlando-oliver-reconciliation .figure-oliver { position:absolute; bottom:30%; left:52%; width:22px; height:55px; background: linear-gradient(180deg, #c8553d 0%, #8a2a1a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: fo-fig2 6s ease-in-out infinite 0.5s; }
.scn-forest-orlando-oliver-reconciliation .butterfly { position:absolute; top:20%; left:30%; width:14px; height:10px; background: #ffb74d; border-radius:50%; filter: blur(1px); animation: fo-butterfly 9s ease-in-out infinite; }
.scn-forest-orlando-oliver-reconciliation .glow { position:absolute; top:50%; left:40%; width:100px; height:100px; background: radial-gradient(circle, rgba(255,249,196,0.4) 0%, transparent 80%); filter: blur(20px); animation: fo-glow 8s ease-in-out infinite alternate; }
@keyframes fo-bg { 0% { opacity:0.7 } 50% { opacity:0.9 } 100% { opacity:0.8 } }
@keyframes fo-sun { 0% { transform: scale(1); opacity:0.9 } 50% { transform: scale(1.08); opacity:1 } 100% { transform: scale(1); opacity:0.95 } }
@keyframes fo-tree-l { 0% { transform: rotate(-1deg) } 50% { transform: rotate(1deg) } 100% { transform: rotate(-0.5deg) } }
@keyframes fo-tree-r { 0% { transform: rotate(1deg) } 50% { transform: rotate(-1deg) } 100% { transform: rotate(0.5deg) } }
@keyframes fo-fig1 { 0% { transform: translateX(0) rotate(-1deg) } 30% { transform: translateX(3px) rotate(1deg) } 60% { transform: translateX(6px) rotate(0) } 100% { transform: translateX(0) rotate(-1deg) } }
@keyframes fo-fig2 { 0% { transform: translateX(0) rotate(1deg) } 30% { transform: translateX(-3px) rotate(-1deg) } 60% { transform: translateX(-6px) rotate(0) } 100% { transform: translateX(0) rotate(1deg) } }
@keyframes fo-butterfly { 0% { transform: translate(0,0) scale(1) } 25% { transform: translate(20px,-15px) scale(1.2) } 50% { transform: translate(40px,0) scale(0.9) } 75% { transform: translate(60px,-10px) scale(1.1) } 100% { transform: translate(80px,0) scale(1) } }
@keyframes fo-glow { 0% { opacity:0.5 } 50% { opacity:0.8 } 100% { opacity:0.6 } }

/* forest-song-lover */
.scn-forest-song-lover { background: linear-gradient(180deg, #ffecb3 0%, #ffe082 40%, #fff9c4 100%), radial-gradient(ellipse at 50% 20%, #fff8e1 0%, transparent 60%); }
.scn-forest-song-lover .bg { position:absolute; inset:0; background: linear-gradient(180deg, transparent 0%, rgba(255,255,255,0.15) 100%); animation: fl-bg 15s ease-in-out infinite alternate; }
.scn-forest-song-lover .sun { position:absolute; top:12%; left:70%; width:70px; height:70px; background: radial-gradient(circle, #fff9c4 0%, #ffe082 70%, transparent 90%); border-radius:50%; animation: fl-sun 18s ease-in-out infinite; }
.scn-forest-song-lover .bush { position:absolute; bottom:20%; left:10%; width:120px; height:60px; background: radial-gradient(ellipse at 50% 100%, #81c784 0%, #4caf50 80%, transparent 100%); border-radius:50%; filter: blur(3px); animation: fl-bush 8s ease-in-out infinite alternate; }
.scn-forest-song-lover .figure-touchstone { position:absolute; bottom:30%; left:35%; width:20px; height:50px; background: linear-gradient(180deg, #c8553d 0%, #8a2a1a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: fl-touch 4s ease-in-out infinite; }
.scn-forest-song-lover .figure-audrey { position:absolute; bottom:30%; left:50%; width:18px; height:48px; background: linear-gradient(180deg, #5e1a1d 0%, #3a0a0a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: fl-audrey 5s ease-in-out infinite 0.3s; }
.scn-forest-song-lover .note { position:absolute; top:20%; width:10px; height:14px; background: #333; border-radius:50% / 60% 60% 40% 40%; }
.scn-forest-song-lover .note-1 { left:40%; animation: fl-note1 6s ease-in-out infinite; }
.scn-forest-song-lover .note-2 { left:55%; animation: fl-note2 7s ease-in-out infinite 1s; }
.scn-forest-song-lover .flower { position:absolute; bottom:25%; left:65%; width:16px; height:16px; background: radial-gradient(circle, #ffb74d 0%, #ff8a65 80%); border-radius:50%; animation: fl-flower 9s ease-in-out infinite alternate; }
@keyframes fl-bg { 0% { opacity:0.6 } 50% { opacity:0.85 } 100% { opacity:0.7 } }
@keyframes fl-sun { 0% { transform: scale(1) translateX(0) } 50% { transform: scale(1.05) translateX(5px) } 100% { transform: scale(1) translateX(-5px) } }
@keyframes fl-bush { 0% { transform: scaleX(1) } 50% { transform: scaleX(1.05) } 100% { transform: scaleX(0.95) } }
@keyframes fl-touch { 0% { transform: translateY(0) rotate(-2deg) } 25% { transform: translateY(-5px) rotate(2deg) } 50% { transform: translateY(0) rotate(-2deg) } 75% { transform: translateY(-3px) rotate(1deg) } 100% { transform: translateY(0) rotate(0) } }
@keyframes fl-audrey { 0% { transform: translateY(0) rotate(2deg) } 25% { transform: translateY(-4px) rotate(-2deg) } 50% { transform: translateY(0) rotate(2deg) } 75% { transform: translateY(-2px) rotate(-1deg) } 100% { transform: translateY(0) rotate(0) } }
@keyframes fl-note1 { 0% { transform: translate(0,0) scale(1) rotate(0deg); opacity:1 } 25% { transform: translate(10px,-20px) scale(1.2) rotate(30deg); opacity:0.8 } 50% { transform: translate(20px,-40px) scale(0.9) rotate(60deg); opacity:0.6 } 75% { transform: translate(15px,-60px) scale(1.1) rotate(90deg); opacity:0.4 } 100% { transform: translate(0,-80px) scale(0.8) rotate(120deg); opacity:0 } }
@keyframes fl-note2 { 0% { transform: translate(0,0) scale(1) rotate(0deg); opacity:1 } 25% { transform: translate(-10px,-25px) scale(1.1) rotate(-30deg); opacity:0.8 } 50% { transform: translate(-20px,-50px) scale(0.8) rotate(-60deg); opacity:0.6 } 75% { transform: translate(-15px,-75px) scale(1.2) rotate(-90deg); opacity:0.4 } 100% { transform: translate(0,-100px) scale(0.9) rotate(-120deg); opacity:0 } }
@keyframes fl-flower { 0% { transform: scale(1) } 50% { transform: scale(1.15) } 100% { transform: scale(0.9) } }

/* forest-weddings */
.scn-forest-weddings { background: linear-gradient(180deg, #e8f5e9 0%, #c8e6c9 40%, #a5d6a7 100%), radial-gradient(ellipse at 50% 10%, #fff8e1 0%, transparent 60%); }
.scn-forest-weddings .bg { position:absolute; inset:0; background: linear-gradient(180deg, transparent 0%, rgba(255,255,255,0.12) 100%); animation: fw2-bg 14s ease-in-out infinite alternate; }
.scn-forest-weddings .sun { position:absolute; top:5%; left:50%; width:100px; height:100px; background: radial-gradient(circle, #fff9c4 0%, #ffe082 60%, transparent 80%); border-radius:50%; animation: fw2-sun 25s ease-in-out infinite; }
.scn-forest-weddings .arch { position:absolute; bottom:25%; left:50%; width:180px; height:140px; transform:translateX(-50%); background: linear-gradient(180deg, #8d6e63 0%, #5d4037 100%); border-radius:50% 50% 10% 10% / 60% 60% 10% 10%; box-shadow: 0 8px 20px rgba(0,0,0,0.3); animation: fw2-arch 10s ease-in-out infinite alternate; }
.scn-forest-weddings .arch::before { content:''; position:absolute; top:-20px; left:-10px; width:200px; height:30px; background: radial-gradient(ellipse at 50% 100%, #a5d6a7 0%, transparent 80%); border-radius:50%; filter: blur(4px); }
.scn-forest-weddings .figure-duke { position:absolute; bottom:28%; left:30%; width:24px; height:60px; background: linear-gradient(180deg, #5e1a1d 0%, #3a0a0a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: fw2-duke 7s ease-in-out infinite; }
.scn-forest-weddings .figure-bride { position:absolute; bottom:28%; left:46%; width:22px; height:58px; background: linear-gradient(180deg, #c8553d 0%, #8a2a1a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: fw2-bride 6s ease-in-out infinite 0.5s; }
.scn-forest-weddings .figure-groom { position:absolute; bottom:28%; left:60%; width:22px; height:58px; background: linear-gradient(180deg, #5e1a1d 0%, #3a0a0a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: fw2-groom 6s ease-in-out infinite 1s; }
.scn-forest-weddings .garland { position:absolute; bottom:35%; width:60px; height:20px; background: radial-gradient(ellipse at 50% 100%, #66bb6a 0%, transparent 80%); border-radius:50%; filter: blur(2px); }
.scn-forest-weddings .garland-l { left:20%; animation: fw2-garland-l 12s ease-in-out infinite alternate; }
.scn-forest-weddings .garland-r { right:20%; animation: fw2-garland-r 12s ease-in-out infinite alternate; }
.scn-forest-weddings .petal { position:absolute; top:30%; width:8px; height:6px; background: #ffb74d; border-radius:50% 0; filter: blur(1px); }
.scn-forest-weddings .petal-a { left:25%; animation: fw2-petal-a 15s linear infinite; }
.scn-forest-weddings .petal-b { left:70%; animation: fw2-petal-b 18s linear infinite 3s; }
@keyframes fw2-bg { 0% { opacity:0.75 } 50% { opacity:0.9 } 100% { opacity:0.8 } }
@keyframes fw2-sun { 0% { transform: scale(1) } 50% { transform: scale(1.06) } 100% { transform: scale(0.97) } }
@keyframes fw2-arch { 0% { transform: translateX(-50%) scaleY(1) } 50% { transform: translateX(-50%) scaleY(1.02) } 100% { transform: translateX(-50%) scaleY(0.98) } }
@keyframes fw2-duke { 0% { transform: translateY(0) rotate(-1deg) } 25% { transform: translateY(-2px) rotate(1deg) } 50% { transform: translateY(0) rotate(-1deg) } 75% { transform: translateY(-1px) rotate(0) } 100% { transform: translateY(0) rotate(1deg) } }
@keyframes fw2-bride { 0% { transform: translateY(0) rotate(1deg) } 25% { transform: translateY(-3px) rotate(-1deg) } 50% { transform: translateY(0) rotate(1deg) } 75% { transform: translateY(-2px) rotate(0) } 100% { transform: translateY(0) rotate(-1deg) } }
@keyframes fw2-groom { 0% { transform: translateY(0) rotate(-1deg) } 25% { transform: translateY(-2px) rotate(1deg) } 50% { transform: translateY(0) rotate(-1deg) } 75% { transform: translateY(-1px) rotate(0) } 100% { transform: translateY(0) rotate(1deg) } }
@keyframes fw2-garland-l { 0% { transform: scaleX(1) } 50% { transform: scaleX(1.1) } 100% { transform: scaleX(0.9) } }
@keyframes fw2-garland-r { 0% { transform: scaleX(1) } 50% { transform: scaleX(0.9) } 100% { transform: scaleX(1.1) } }
@keyframes fw2-petal-a { 0% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(100px) rotate(180deg) } 100% { transform: translateY(200px) rotate(360deg) } }
@keyframes fw2-petal-b { 0% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(120px) rotate(-180deg) } 100% { transform: translateY(240px) rotate(-360deg) } }

/* room-in-palace-3 – tense dim interior */
.scn-room-in-palace-3 { background: linear-gradient(180deg, #1a1a2e 0%, #2a1a1a 40%, #0d0d0d 100%), radial-gradient(ellipse at 30% 40%, #3a2a1a 0%, transparent 70%); position: relative; overflow: hidden; }
.scn-room-in-palace-3 .wall { position: absolute; inset: 0 0 35% 0; background: linear-gradient(135deg, #2a2a3e 0%, #1a1a2a 50%, #0d0d1a 100%); box-shadow: inset 0 0 40px rgba(0,0,0,.7); }
.scn-room-in-palace-3 .floor { position: absolute; bottom: 0; left: 0; right: 0; height: 35%; background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%); box-shadow: inset 0 12px 24px rgba(0,0,0,.6); }
.scn-room-in-palace-3 .window-bars { position: absolute; top: 18%; left: 12%; width: 80px; height: 100px; background: rgba(20,20,40,.8); border: 3px solid #3a3a5a; border-radius: 4px; box-shadow: inset 0 0 20px rgba(0,0,0,.5), 0 0 10px rgba(40,40,80,.3); display: flex; flex-direction: column; justify-content: space-between; padding: 4px; }
.scn-room-in-palace-3 .window-bars::before, .scn-room-in-palace-3 .window-bars::after { content: ''; position: absolute; left: 50%; top: 4px; bottom: 4px; width: 4px; background: #4a4a6a; transform: translateX(-50%); box-shadow: -20px 0 0 #4a4a6a, 20px 0 0 #4a4a6a; }
.scn-room-in-palace-3 .throne { position: absolute; bottom: 35%; left: 50%; width: 70px; height: 90px; transform: translateX(-50%); background: linear-gradient(180deg, #5a4a3a 0%, #2a1a0a 100%); border-radius: 20% 20% 10% 10% / 40% 40% 10% 10%; box-shadow: 0 8px 20px rgba(0,0,0,.7), inset 0 4px 8px rgba(90,70,50,.3); }
.scn-room-in-palace-3 .duke { position: absolute; bottom: 38%; left: 50%; width: 30px; height: 60px; transform: translateX(-50%); background: linear-gradient(180deg, #2a1a1a 0%, #0d0d0d 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; box-shadow: -4px 0 8px rgba(0,0,0,.5); animation: si3-duke 5s ease-in-out infinite; transform-origin: bottom center; }
.scn-room-in-palace-3 .guard { position: absolute; bottom: 42%; left: 58%; width: 24px; height: 52px; background: linear-gradient(180deg, #3a2a2a 0%, #1a0a0a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; box-shadow: 0 4px 8px rgba(0,0,0,.4); animation: si3-guard 7s ease-in-out infinite; transform-origin: bottom center; }
.scn-room-in-palace-3 .torch { position: absolute; bottom: 35%; left: 20%; width: 6px; height: 20px; background: linear-gradient(180deg, #8a6a3a 0%, #4a2a0a 100%); border-radius: 2px; box-shadow: 0 0 12px 4px rgba(200,150,50,.4); animation: si3-torch 2s ease-in-out infinite alternate; }
.scn-room-in-palace-3 .torch::after { content: ''; position: absolute; top: -10px; left: -4px; width: 14px; height: 14px; background: radial-gradient(circle, #ffd080 0%, #b08040 60%, transparent 100%); border-radius: 50%; box-shadow: 0 0 20px 6px #b08040; animation: si3-flame 0.8s ease-in-out infinite alternate; }
@keyframes si3-duke { 0% { transform: translateX(-50%) rotate(-1deg); } 50% { transform: translateX(-50%) translateY(-2px) rotate(1deg); } 100% { transform: translateX(-50%) rotate(0deg); } }
@keyframes si3-guard { 0% { transform: rotate(-2deg) translateX(0); } 50% { transform: rotate(2deg) translateX(2px); } 100% { transform: rotate(-1deg) translateX(0); } }
@keyframes si3-torch { 0% { opacity: .7; box-shadow: 0 0 8px 2px rgba(200,150,50,.3); } 100% { opacity: 1; box-shadow: 0 0 18px 6px rgba(200,150,50,.6); } }
@keyframes si3-flame { 0% { transform: scaleY(.8) translateY(0); } 50% { transform: scaleY(1.1) translateY(-2px); } 100% { transform: scaleY(.9) translateY(0); } }

/* forest-verses – warm sunlit forest with Orlando */
.scn-forest-verses { background: linear-gradient(180deg, #4a8a6a 0%, #6aaa7a 30%, #8aca9a 50%, #5a7a4a 100%), radial-gradient(ellipse at 60% 30%, #ffdd88 0%, transparent 50%); position: relative; overflow: hidden; }
.scn-forest-verses .sky { position: absolute; inset: 0 0 55% 0; background: linear-gradient(180deg, #7ab8d0 0%, #b0d8e0 40%, #d0e8e8 70%, transparent 100%); animation: sfv-sky 15s ease-in-out infinite alternate; }
.scn-forest-verses .sun-glow { position: absolute; top: 15%; left: 60%; width: 60px; height: 60px; background: radial-gradient(circle, #ffe0a0 0%, #ffcc60 30%, #ffaa20 60%, transparent 100%); border-radius: 50%; box-shadow: 0 0 60px 20px rgba(255,200,80,.4); animation: sfv-sun 20s ease-in-out infinite alternate; }
.scn-forest-verses .trees-back { position: absolute; bottom: 25%; left: 0; right: 0; height: 50%; background: linear-gradient(180deg, #2a5a3a 0%, #1a3a2a 100%); clip-path: polygon(0% 100%, 5% 40%, 10% 35%, 15% 50%, 20% 30%, 25% 45%, 30% 25%, 35% 40%, 40% 20%, 45% 38%, 50% 15%, 55% 35%, 60% 18%, 65% 40%, 70% 22%, 75% 42%, 80% 28%, 85% 45%, 90% 20%, 95% 40%, 100% 35%, 100% 100%); box-shadow: inset 0 8px 20px rgba(0,0,0,.3); animation: sfv-trees-b 30s ease-in-out infinite; }
.scn-forest-verses .trees-mid { position: absolute; bottom: 20%; left: 0; right: 0; height: 45%; background: linear-gradient(180deg, #3a7a4a 0%, #2a5a3a 100%); clip-path: polygon(0% 100%, 8% 50%, 16% 45%, 24% 55%, 32% 35%, 40% 50%, 48% 30%, 56% 48%, 64% 25%, 72% 45%, 80% 28%, 88% 50%, 100% 40%, 100% 100%); opacity: .8; animation: sfv-trees-m 35s ease-in-out infinite reverse; }
.scn-forest-verses .orlando { position: absolute; bottom: 20%; left: 40%; width: 24px; height: 60px; background: linear-gradient(180deg, #3a4a3a 0%, #1a2a1a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: sfv-orlando 6s ease-in-out infinite; }
.scn-forest-verses .orlando::after { content: ''; position: absolute; top: 10px; left: 50%; width: 16px; height: 14px; background: #5a7a5a; border-radius: 50% 50% 20% 20% / 70% 70% 20% 20%; transform: translateX(-50%); box-shadow: 0 -2px 4px rgba(0,0,0,.2); }
.scn-forest-verses .paper { position: absolute; bottom: 28%; left: 42%; width: 14px; height: 18px; background: linear-gradient(180deg, #e8d8b8 0%, #c8b898 100%); border-radius: 2px; transform: rotate(15deg); box-shadow: 0 2px 4px rgba(0,0,0,.2); animation: sfv-paper 8s ease-in-out infinite; }
.scn-forest-verses .grass { position: absolute; bottom: 0; left: 0; right: 0; height: 22%; background: linear-gradient(180deg, #4a8a3a 0%, #3a6a2a 40%, #2a4a1a 100%); border-radius: 40% 60% 0 0 / 30% 40% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,.3); }
.scn-forest-verses .cloud-fv-a { position: absolute; top: 10%; left: 10%; width: 90px; height: 20px; background: linear-gradient(180deg, rgba(255,255,255,.6) 0%, rgba(255,255,255,.1) 100%); border-radius: 50%; filter: blur(5px); animation: sfv-drift-a 40s linear infinite; }
.scn-forest-verses .cloud-fv-b { position: absolute; top: 18%; right: 8%; width: 70px; height: 16px; background: linear-gradient(180deg, rgba(255,255,255,.5) 0%, rgba(255,255,255,.05) 100%); border-radius: 50%; filter: blur(4px); animation: sfv-drift-b 55s linear infinite reverse; }
@keyframes sfv-sky { 0% { opacity: .7; } 50% { opacity: 1; } 100% { opacity: .8; } }
@keyframes sfv-sun { 0% { transform: scale(.9) translateX(0); } 50% { transform: scale(1.1) translateX(5px); } 100% { transform: scale(1) translateX(-3px); } }
@keyframes sfv-trees-b { 0% { transform: translateY(0) scaleX(1); } 50% { transform: translateY(-4px) scaleX(1.02); } 100% { transform: translateY(0) scaleX(1); } }
@keyframes sfv-trees-m { 0% { transform: translateY(0) scaleX(1); } 50% { transform: translateY(-3px) scaleX(1.01); } 100% { transform: translateY(0) scaleX(1); } }
@keyframes sfv-orlando { 0% { transform: translateY(0) rotate(-2deg); } 25% { transform: translateY(-4px) rotate(1deg); } 50% { transform: translateY(-6px) rotate(2deg); } 75% { transform: translateY(-2px) rotate(-1deg); } 100% { transform: translateY(0) rotate(0); } }
@keyframes sfv-paper { 0% { transform: rotate(15deg) translateY(0); } 50% { transform: rotate(20deg) translateY(-4px); } 100% { transform: rotate(12deg) translateY(0); } }
@keyframes sfv-drift-a { 0% { transform: translateX(-30px); } 100% { transform: translateX(120vw); } }
@keyframes sfv-drift-b { 0% { transform: translateX(0); } 100% { transform: translateX(-100vw); } }

/* forest-touchstone-audrey – funny sunlit encounter */
.scn-forest-touchstone-audrey { background: linear-gradient(180deg, #6a9a5a 0%, #8aba7a 30%, #aada9a 60%, #7a8a5a 100%), radial-gradient(ellipse at 40% 25%, #ffe8a0 0%, transparent 60%); position: relative; overflow: hidden; }
.scn-forest-touchstone-audrey .sky-ft { position: absolute; inset: 0 0 50% 0; background: linear-gradient(180deg, #6ab0d0 0%, #90d0e0 40%, #b8e8f0 70%, transparent 100%); animation: sft-sky 18s ease-in-out infinite alternate; }
.scn-forest-touchstone-audrey .sun-ft { position: absolute; top: 10%; left: 40%; width: 50px; height: 50px; background: radial-gradient(circle, #ffe8a0 0%, #ffcc60 30%, #ffaa20 60%, transparent 100%); border-radius: 50%; box-shadow: 0 0 50px 15px rgba(255,200,80,.5); animation: sft-sun 25s ease-in-out infinite; }
.scn-forest-touchstone-audrey .trees-ft { position: absolute; bottom: 18%; left: 0; right: 0; height: 55%; background: linear-gradient(180deg, #3a7a4a 0%, #2a5a3a 40%, #1a3a2a 100%); clip-path: polygon(0% 100%, 6% 35%, 12% 30%, 18% 45%, 24% 25%, 30% 40%, 36% 20%, 42% 38%, 48% 15%, 54% 35%, 60% 18%, 66% 40%, 72% 22%, 78% 42%, 84% 28%, 90% 45%, 100% 30%, 100% 100%); box-shadow: inset 0 8px 20px rgba(0,0,0,.25); animation: sft-trees 30s ease-in-out infinite; }
.scn-forest-touchstone-audrey .touchstone { position: absolute; bottom: 22%; left: 35%; width: 22px; height: 52px; background: linear-gradient(180deg, #6a5a3a 0%, #3a2a1a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: sft-touchstone 2s ease-in-out infinite; }
.scn-forest-touchstone-audrey .touchstone::after { content: ''; position: absolute; top: 8px; left: 50%; width: 14px; height: 12px; background: #8a7a5a; border-radius: 50% 50% 20% 20% / 70% 70% 20% 20%; transform: translateX(-50%); }
.scn-forest-touchstone-audrey .audrey { position: absolute; bottom: 24%; left: 50%; width: 20px; height: 48px; background: linear-gradient(180deg, #7a6a4a 0%, #4a3a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: sft-audrey 2.8s ease-in-out infinite 0.5s; }
.scn-forest-touchstone-audrey .audrey::after { content: ''; position: absolute; top: 6px; left: 50%; width: 12px; height: 10px; background: #9a8a6a; border-radius: 50% 50% 20% 20% / 70% 70% 20% 20%; transform: translateX(-50%); }
.scn-forest-touchstone-audrey .jaques { position: absolute; bottom: 26%; right: 20%; width: 18px; height: 44px; background: linear-gradient(180deg, #2a3a3a 0%, #1a2a2a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: sft-jaques 10s ease-in-out infinite; opacity: .6; }
.scn-forest-touchstone-audrey .jaques::after { content: ''; position: absolute; top: 10px; left: 50%; width: 8px; height: 8px; background: #4a5a5a; border-radius: 50%; transform: translateX(-50%); }
.scn-forest-touchstone-audrey .goat { position: absolute; bottom: 22%; left: 28%; width: 18px; height: 14px; background: linear-gradient(180deg, #8a7a5a 0%, #5a4a3a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%; box-shadow: 0 2px 4px rgba(0,0,0,.2); animation: sft-goat 3.5s ease-in-out infinite 0.2s; }
.scn-forest-touchstone-audrey .goat::before { content: ''; position: absolute; top: -6px; left: 2px; width: 4px; height: 8px; background: #5a4a3a; border-radius: 20% 20% 0 0; transform: rotate(-10deg); }
.scn-forest-touchstone-audrey .goat::after { content: ''; position: absolute; top: -6px; right: 2px; width: 4px; height: 8px; background: #5a4a3a; border-radius: 20% 20% 0 0; transform: rotate(10deg); }
.scn-forest-touchstone-audrey .grass-ft { position: absolute; bottom: 0; left: 0; right: 0; height: 24%; background: linear-gradient(180deg, #5a8a3a 0%, #4a7a2a 40%, #2a5a1a 100%); border-radius: 50% 50% 0 0 / 20% 30% 0 0; box-shadow: inset 0 6px 16px rgba(0,0,0,.2); }
@keyframes sft-sky { 0% { opacity: .8; } 50% { opacity: 1; } 100% { opacity: .85; } }
@keyframes sft-sun { 0% { transform: scale(.95) translateX(0); } 50% { transform: scale(1.15) translateX(-4px); } 100% { transform: scale(1) translateX(2px); } }
@keyframes sft-trees { 0% { transform: translateY(0); } 50% { transform: translateY(-3px); } 100% { transform: translateY(0); } }
@keyframes sft-touchstone { 0% { transform: translateY(0) rotate(-5deg); } 25% { transform: translateY(-3px) rotate(2deg); } 50% { transform: translateY(-6px) rotate(5deg); } 75% { transform: translateY(-2px) rotate(-2deg); } 100% { transform: translateY(0) rotate(0); } }
@keyframes sft-audrey { 0% { transform: translateY(0) rotate(0); } 25% { transform: translateY(-4px) rotate(-3deg); } 50% { transform: translateY(-8px) rotate(-5deg); } 75% { transform: translateY(-2px) rotate(-1deg); } 100% { transform: translateY(0) rotate(0); } }
@keyframes sft-jaques { 0% { transform: translateX(0) translateY(0); opacity: .4; } 20% { transform: translateX(-8px) translateY(-2px); opacity: .7; } 40% { transform: translateX(-16px) translateY(0); opacity: .5; } 60% { transform: translateX(-8px) translateY(-3px); opacity: .8; } 80% { transform: translateX(-4px) translateY(0); opacity: .6; } 100% { transform: translateX(0) translateY(0); opacity: .4; } }
@keyframes sft-goat { 0% { transform: translateX(0) rotate(0); } 30% { transform: translateX(6px) rotate(-5deg); } 60% { transform: translateX(12px) rotate(3deg); } 100% { transform: translateX(0) rotate(0); } }

/* forest-rosalind-celia – tense sunlit confrontation */
.scn-forest-rosalind-celia { background: linear-gradient(180deg, #5a8a6a 0%, #7aaa7a 30%, #9aca9a 60%, #6a8a5a 100%), radial-gradient(ellipse at 70% 30%, #ffe0a0 0%, transparent 50%); position: relative; overflow: hidden; }
.scn-forest-rosalind-celia .sky-fr { position: absolute; inset: 0 0 52% 0; background: linear-gradient(180deg, #6ab8d0 0%, #a0d8e0 40%, #c0e8f0 70%, transparent 100%); animation: sfr-sky 14s ease-in-out infinite alternate; }
.scn-forest-rosalind-celia .trees-fr { position: absolute; bottom: 22%; left: 0; right: 0; height: 50%; background: linear-gradient(180deg, #3a7a4a 0%, #2a5a3a 100%); clip-path: polygon(0% 100%, 4% 40%, 8% 35%, 12% 50%, 16% 30%, 20% 45%, 24% 25%, 28% 40%, 32% 20%, 36% 38%, 40% 15%, 44% 35%, 48% 18%, 52% 38%, 56% 22%, 60% 40%, 64% 28%, 68% 45%, 72% 20%, 76% 42%, 80% 30%, 84% 48%, 88% 25%, 92% 45%, 96% 35%, 100% 30%, 100% 100%); box-shadow: inset 0 8px 20px rgba(0,0,0,.3); animation: sfr-trees 25s ease-in-out infinite; }
.scn-forest-rosalind-celia .rosalind { position: absolute; bottom: 25%; left: 40%; width: 22px; height: 56px; background: linear-gradient(180deg, #4a5a4a 0%, #2a3a2a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: sfr-rosalind 4s ease-in-out infinite; }
.scn-forest-rosalind-celia .rosalind::after { content: ''; position: absolute; top: 10px; left: 50%; width: 14px; height: 12px; background: #6a7a5a; border-radius: 50% 50% 20% 20% / 70% 70% 20% 20%; transform: translateX(-50%); }
.scn-forest-rosalind-celia .celia { position: absolute; bottom: 25%; left: 52%; width: 20px; height: 54px; background: linear-gradient(180deg, #5a6a5a 0%, #3a4a3a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: sfr-celia 4.5s ease-in-out infinite 0.3s; }
.scn-forest-rosalind-celia .celia::after { content: ''; position: absolute; top: 10px; left: 50%; width: 12px; height: 10px; background: #7a8a6a; border-radius: 50% 50% 20% 20% / 70% 70% 20% 20%; transform: translateX(-50%); }
.scn-forest-rosalind-celia .teardrop { position: absolute; bottom: 32%; left: 42%; width: 4px; height: 6px; background: radial-gradient(circle, #c0d8e8 0%, transparent 100%); border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%; box-shadow: 0 0 8px 2px rgba(120,160,200,.3); animation: sfr-tear 3s ease-in-out infinite; }
.scn-forest-rosalind-celia .teardrop::after { content: ''; position: absolute; bottom: -4px; left: 2px; width: 3px; height: 4px; background: radial-gradient(circle, #b0d0e0 0%, transparent 100%); border-radius: 50%; animation: sfr-tear 3s ease-in-out infinite 0.5s; }
.scn-forest-rosalind-celia .grass-fr { position: absolute; bottom: 0; left: 0; right: 0; height: 24%; background: linear-gradient(180deg, #4a8a3a 0%, #3a6a2a 40%, #2a4a1a 100%); border-radius: 30% 70% 0 0 / 25% 35% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,.25); }
.scn-forest-rosalind-celia .shadow-fr { position: absolute; bottom: 22%; left: 38%; width: 20%; height: 8px; background: radial-gradient(ellipse at center, rgba(0,0,0,.3) 0%, transparent 100%); animation: sfr-shadow 4s ease-in-out infinite; }
@keyframes sfr-sky { 0% { opacity: .7; } 50% { opacity: .95; } 100% { opacity: .8; } }
@keyframes sfr-trees { 0% { transform: translateY(0) scaleX(1); } 50% { transform: translateY(-3px) scaleX(1.01); } 100% { transform: translateY(0) scaleX(1); } }
@keyframes sfr-rosalind { 0% { transform: translateY(0) rotate(0); } 30% { transform: translateY(-3px) rotate(2deg); } 60% { transform: translateY(-6px) rotate(-1deg); } 100% { transform: translateY(0) rotate(0); } }
@keyframes sfr-celia { 0% { transform: translateY(0) rotate(0); } 30% { transform: translateY(-2px) rotate(-3deg); } 60% { transform: translateY(-5px) rotate(1deg); } 100% { transform: translateY(0) rotate(0); } }
@keyframes sfr-tear { 0% { opacity: 0; transform: translateY(0) scale(1); } 20% { opacity: 1; transform: translateY(2px) scale(1.1); } 50% { opacity: .8; transform: translateY(8px) scale(.9); } 80% { opacity: .3; transform: translateY(14px) scale(.7); } 100% { opacity: 0; transform: translateY(18px) scale(.5); } }
@keyframes sfr-shadow { 0% { opacity: .3; transform: scaleX(1); } 50% { opacity: .5; transform: scaleX(1.1); } 100% { opacity: .3; transform: scaleX(1); } }
/* end per-scene blocks */

/* auto-stub: parent tag-classes flagged by CSS audit */
.cloud- { position: absolute; pointer-events: none; }

/* ============ tier S ============ */
/* per-scene blocks (EXP step_scenes) */
/* touchstone-william-comedy */
.scn-touchstone-william-comedy {
  background:
    linear-gradient(180deg, #87ceeb 0%, #b0e0e6 30%, #f0e68c 60%, #daa520 100%),
    radial-gradient(ellipse at 70% 30%, rgba(255,215,0,0.3) 0%, transparent 60%);
}
.scn-touchstone-william-comedy .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #87ceeb 0%, #b0e0e6 100%);
  animation: tc-sky 12s ease-in-out infinite alternate;
}
.scn-touchstone-william-comedy .trees-bg {
  position: absolute; bottom: 25%; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #2e8b57 0%, #228b22 40%, #006400 100%);
  border-radius: 60% 40% 0 0 / 80% 70% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.3);
  animation: tc-trees 25s ease-in-out infinite;
}
.scn-touchstone-william-comedy .tree-fore {
  position: absolute; bottom: 20%; left: 12%; width: 60px; height: 200px;
  background: linear-gradient(180deg, #4a2e1a 0%, #2a1a0a 100%);
  border-radius: 4% 4% 10% 10%; box-shadow: 2px 0 10px rgba(0,0,0,0.2);
  animation: tc-tree 8s ease-in-out infinite;
}
.scn-touchstone-william-comedy .audrey {
  position: absolute; bottom: 24%; left: 65%; width: 28px; height: 50px;
  background: linear-gradient(180deg, #d4a574 0%, #c89260 30%, #8b5e3c 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: tc-audrey 6s ease-in-out infinite;
}
.scn-touchstone-william-comedy .touchstone {
  position: absolute; bottom: 26%; left: 30%; width: 36px; height: 60px;
  background: linear-gradient(180deg, #8b4513 0%, #5a2d0c 30%, #3a1c06 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: tc-touchstone 4s ease-in-out infinite;
}
.scn-touchstone-william-comedy .william {
  position: absolute; bottom: 22%; left: 18%; width: 30px; height: 55px;
  background: linear-gradient(180deg, #7a5c3a 0%, #4a3018 30%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: tc-william 3s ease-in-out infinite;
}
.scn-touchstone-william-comedy .stick {
  position: absolute; bottom: 40%; left: 35%; width: 32px; height: 4px;
  background: #5a3a1a; border-radius: 2px;
  transform-origin: 100% 50%;
  animation: tc-stick 4s ease-in-out infinite;
}
.scn-touchstone-william-comedy .dust {
  position: absolute; bottom: 20%; left: 10%; width: 80px; height: 40px;
  background: radial-gradient(ellipse at 50% 100%, rgba(210,180,140,0.4) 0%, transparent 70%);
  filter: blur(6px);
  animation: tc-dust 8s ease-in-out infinite;
}
@keyframes tc-sky {
  0% { opacity:0.7; } 50% { opacity:1; } 100% { opacity:0.8; }
}
@keyframes tc-trees {
  0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); }
}
@keyframes tc-tree {
  0%,100% { transform: scaleY(1); } 50% { transform: scaleY(1.02) translateY(-2px); }
}
@keyframes tc-audrey {
  0%,100% { transform: translateY(0); } 50% { transform: translateY(-3px) rotate(2deg); }
}
@keyframes tc-touchstone {
  0% { transform: translateX(0) rotate(-3deg); }
  25% { transform: translateX(8px) rotate(3deg); }
  50% { transform: translateX(0) rotate(-2deg); }
  75% { transform: translateX(-6px) rotate(2deg); }
  100% { transform: translateX(0) rotate(0); }
}
@keyframes tc-william {
  0%,100% { transform: translateY(0) scaleX(1); }
  20% { transform: translateY(-10px) scaleX(0.8); }
  40% { transform: translateY(0) scaleX(1); }
  60% { transform: translateY(-5px) scaleX(0.9); }
  80% { transform: translateY(0) scaleX(1); }
}
@keyframes tc-stick {
  0%,100% { transform: rotate(-10deg); } 50% { transform: rotate(10deg); }
}
@keyframes tc-dust {
  0% { opacity:0.2; transform: translateY(0); }
  50% { opacity:0.6; transform: translateY(-10px); }
  100% { opacity:0.2; transform: translateY(0); }
}

/* hymen-unites-couples */
.scn-hymen-unites-couples {
  background:
    linear-gradient(180deg, #ffd700 0%, #ffb347 30%, #ffa500 60%, #cc7000 100%),
    radial-gradient(ellipse at 50% 20%, rgba(255,215,0,0.4) 0%, transparent 60%);
}
.scn-hymen-unites-couples .sky {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #ffe4b5 0%, #ffd700 100%);
  animation: hun-sky 10s ease-in-out infinite alternate;
}
.scn-hymen-unites-couples .bower {
  position: absolute; bottom: 15%; left: 10%; right: 10%; height: 50%;
  background:
    linear-gradient(180deg, transparent 0%, #8b6508 50%, #5a4500 100%),
    radial-gradient(ellipse at 50% 0%, rgba(255,215,0,0.3) 0%, transparent 70%);
  border-radius: 30% 30% 0 0;
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.3);
  animation: hun-bower 15s ease-in-out infinite;
}
.scn-hymen-unites-couples .hymen {
  position: absolute; bottom: 35%; left: 50%; width: 50px; height: 80px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #ffcc66 0%, #e6a800 40%, #b38600 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  box-shadow: 0 0 30px rgba(255,215,0,0.5);
  animation: hun-hymen 8s ease-in-out infinite;
}
.scn-hymen-unites-couples .torch-glow {
  position: absolute; bottom: 50%; left: 50%; width: 30px; height: 30px;
  transform: translate(-50%, -50%);
  background: radial-gradient(circle, #ffa500 0%, #ff6600 40%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 40px 10px #ffa500, 0 0 80px 20px rgba(255,165,0,0.3);
  animation: hun-torch 3s ease-in-out infinite alternate;
}
.scn-hymen-unites-couples .lover-a {
  position: absolute; bottom: 22%; left: 20%; width: 28px; height: 55px;
  background: linear-gradient(180deg, #f4a460 0%, #d2691e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: hun-lover 7s ease-in-out infinite;
}
.scn-hymen-unites-couples .lover-b {
  position: absolute; bottom: 22%; left: 80%; width: 28px; height: 55px;
  background: linear-gradient(180deg, #d4a574 0%, #b87333 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: hun-lover 9s ease-in-out infinite reverse;
}
.scn-hymen-unites-couples .petals {
  position: absolute; bottom: 10%; left: 0; right: 0; height: 10%;
  background: radial-gradient(ellipse at 50% 100%, #ffb6c1 0%, transparent 60%);
  filter: blur(4px);
  animation: hun-petals 12s ease-in-out infinite;
}
.scn-hymen-unites-couples .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 15%;
  background: linear-gradient(180deg, #8b6508 0%, #5a4500 100%);
  border-radius: 20% 20% 0 0;
  box-shadow: inset 0 5px 15px rgba(0,0,0,0.4);
}
@keyframes hun-sky {
  0% { opacity:0.6; } 50% { opacity:1; } 100% { opacity:0.8; }
}
@keyframes hun-bower {
  0%,100% { transform: translateY(0); } 50% { transform: translateY(-3px); }
}
@keyframes hun-hymen {
  0%,100% { transform: translateX(-50%) translateY(0); }
  50% { transform: translateX(-50%) translateY(-5px); }
}
@keyframes hun-torch {
  0% { transform: translate(-50%, -50%) scale(0.8); opacity:0.7; }
  50% { transform: translate(-50%, -50%) scale(1.1); opacity:1; }
  100% { transform: translate(-50%, -50%) scale(0.9); opacity:0.8; }
}
@keyframes hun-lover {
  0%,100% { transform: translateY(0) rotate(0); }
  25% { transform: translateY(-4px) rotate(2deg); }
  50% { transform: translateY(0) rotate(-1deg); }
  75% { transform: translateY(-2px) rotate(1deg); }
}
@keyframes hun-petals {
  0% { opacity:0.3; transform: scale(0.9); }
  50% { opacity:0.7; transform: scale(1.1); }
  100% { opacity:0.3; transform: scale(0.9); }
}

/* jaques-de-boys-arrives */
.scn-jaques-de-boys-arrives {
  background:
    linear-gradient(180deg, #87ceeb 0%, #b0e0e6 30%, #f5deb3 60%, #daa520 100%),
    radial-gradient(ellipse at 80% 30%, rgba(255,215,0,0.2) 0%, transparent 60%);
}
.scn-jaques-de-boys-arrives .sky {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(180deg, #87ceeb 0%, #b0e0e6 100%);
  animation: jdb-sky 14s ease-in-out infinite alternate;
}
.scn-jaques-de-boys-arrives .trees-bg {
  position: absolute; bottom: 20%; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #2e8b57 0%, #228b22 30%, #006400 100%);
  border-radius: 50% 40% 0 0 / 70% 60% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.2);
  animation: jdb-trees 20s ease-in-out infinite;
}
.scn-jaques-de-boys-arrives .tree-trunk {
  position: absolute; bottom: 15%; left: 20%; width: 40px; height: 180px;
  background: linear-gradient(90deg, #4a2e1a 0%, #2a1a0a 50%, #4a2e1a 100%);
  border-radius: 6% 6% 10% 10%;
  box-shadow: 2px 0 10px rgba(0,0,0,0.2);
  animation: jdb-trunk 12s ease-in-out infinite;
}
.scn-jaques-de-boys-arrives .jaques {
  position: absolute; bottom: 22%; left: 60%; width: 32px; height: 60px;
  background: linear-gradient(180deg, #5a3a2a 0%, #3a2010 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: jdb-jaques 6s ease-in-out infinite;
}
.scn-jaques-de-boys-arrives .touchstone {
  position: absolute; bottom: 24%; left: 30%; width: 34px; height: 58px;
  background: linear-gradient(180deg, #8b4513 0%, #5a2d0c 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: jdb-touchstone 5s ease-in-out infinite;
}
.scn-jaques-de-boys-arrives .if-gesture {
  position: absolute; bottom: 35%; left: 35%; width: 20px; height: 20px;
  background: radial-gradient(circle, #f0e68c 0%, transparent 60%);
  border-radius: 50%;
  box-shadow: 0 0 12px 4px #f0e68c;
  animation: jdb-if 3s ease-in-out infinite alternate;
}
.scn-jaques-de-boys-arrives .shadow {
  position: absolute; bottom: 10%; left: 20%; right: 20%; height: 15%;
  background: radial-gradient(ellipse at 50% 100%, rgba(0,0,0,0.15) 0%, transparent 70%);
  filter: blur(5px);
  animation: jdb-shadow 18s ease-in-out infinite;
}
@keyframes jdb-sky {
  0% { opacity:0.6; } 50% { opacity:1; } 100% { opacity:0.8; }
}
@keyframes jdb-trees {
  0%,100% { transform: translateY(0); } 50% { transform: translateY(-2px); }
}
@keyframes jdb-trunk {
  0%,100% { transform: scaleY(1); } 50% { transform: scaleY(0.98) translateY(2px); }
}
@keyframes jdb-jaques {
  0% { transform: translateX(0) rotate(-2deg); }
  30% { transform: translateX(10px) rotate(3deg); }
  60% { transform: translateX(0) rotate(-1deg); }
  100% { transform: translateX(-8px) rotate(2deg); }
}
@keyframes jdb-touchstone {
  0%,100% { transform: translateY(0) rotate(0); }
  25% { transform: translateY(-4px) rotate(3deg); }
  50% { transform: translateY(0) rotate(-2deg); }
  75% { transform: translateY(-2px) rotate(1deg); }
}
@keyframes jdb-if {
  0% { transform: scale(0.8) rotate(-5deg); opacity:0.6; }
  50% { transform: scale(1.2) rotate(5deg); opacity:1; }
  100% { transform: scale(0.9) rotate(0); opacity:0.8; }
}
@keyframes jdb-shadow {
  0% { opacity:0.2; } 50% { opacity:0.5; } 100% { opacity:0.2; }
}

.scn-adam-starving-orlando {
  background: linear-gradient(180deg, #f9e6b0 0%, #d4b87a 40%, #8a6b3e 100%),
              radial-gradient(ellipse at 30% 20%, #fff8d0 0%, transparent 60%);
  box-shadow: inset 0 0 80px rgba(0,0,0,0.15);
}
.scn-adam-starving-orlando .forest-bg { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #6b9e4a 0%, #3a6b2a 100%); }
.scn-adam-starving-orlando .sunbeams { position:absolute; inset:0 0 0 0; background: linear-gradient(135deg, rgba(255,240,180,0.4) 0%, transparent 40%, rgba(255,240,180,0.15) 70%, transparent 100%); animation: aso-beams 8s ease-in-out infinite alternate; }
.scn-adam-starving-orlando .ground { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #4a7a2a 0%, #2a4a1a 100%); border-radius: 30% 70% 0 0; }
.scn-adam-starving-orlando .tree-left { position:absolute; left:5%; bottom:30%; width:8%; height:60%; background: linear-gradient(90deg, #4a2a1a 0%, #6a3a2a 40%, #4a2a1a 100%); border-radius: 10% 10% 5% 5%; box-shadow: 8px 0 12px rgba(0,0,0,0.3); }
.scn-adam-starving-orlando .tree-right { position:absolute; right:8%; bottom:30%; width:6%; height:50%; background: linear-gradient(90deg, #3a1a0a, #5a2a1a); border-radius: 10% 10% 5% 5%; box-shadow: -4px 0 8px rgba(0,0,0,0.2); }
.scn-adam-starving-orlando .adam-collapsed { position:absolute; bottom:20%; left:25%; width:20px; height:35px; background: linear-gradient(180deg, #6a4a3a 0%, #3a2a1a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%; transform-origin: bottom center; animation: aso-adam 6s ease-in-out infinite; }
.scn-adam-starving-orlando .orlando-bending { position:absolute; bottom:22%; left:40%; width:22px; height:45px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 40% 40% 35% 35% / 60% 60% 40% 40%; transform-origin: bottom center; animation: aso-orlando 6s ease-in-out infinite; }
.scn-adam-starving-orlando .shadow-stripe { position:absolute; top:10%; left:30%; width:40%; height:2px; background: rgba(0,0,0,0.15); filter: blur(4px); animation: aso-stripe 12s ease-in-out infinite alternate; }
@keyframes aso-beams { 0% { opacity:0.4; transform:scaleX(0.9); } 50% { opacity:0.8; transform:scaleX(1.1); } 100% { opacity:0.5; transform:scaleX(0.95); } }
@keyframes aso-adam { 0%,100% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(-2px) rotate(-3deg); } 50% { transform: translateX(1px) rotate(2deg); } 75% { transform: translateX(-1px) rotate(-1deg); } }
@keyframes aso-orlando { 0%,100% { transform: translateX(0) rotate(0deg) scaleY(1); } 25% { transform: translateX(3px) rotate(2deg) scaleY(0.95); } 50% { transform: translateX(0) rotate(-1deg) scaleY(1.02); } 75% { transform: translateX(2px) rotate(1deg) scaleY(0.97); } }
@keyframes aso-stripe { 0% { transform: translateY(0) skewX(0deg); } 50% { transform: translateY(8px) skewX(5deg); } 100% { transform: translateY(-5px) skewX(-3deg); } }

.scn-orlando-meets-duke-senior {
  background: linear-gradient(180deg, #c8e6a0 0%, #8fd06a 40%, #5a8a3a 100%),
              radial-gradient(ellipse at 60% 30%, #f0ffc0 0%, transparent 70%);
}
.scn-orlando-meets-duke-senior .forest-glade { position:absolute; inset:0 0 20% 0; background: linear-gradient(180deg, #9ec87a 0%, #6a9e4a 100%); }
.scn-orlando-meets-duke-senior .sunlight-dappled { position:absolute; inset:0; background: radial-gradient(circle at 40% 30%, rgba(255,240,150,0.5) 0%, transparent 50%), radial-gradient(circle at 70% 50%, rgba(255,240,150,0.2) 0%, transparent 30%); animation: ods-dapple 12s ease-in-out infinite alternate; }
.scn-orlando-meets-duke-senior .grass-floor { position:absolute; bottom:0; left:0; right:0; height:20%; background: linear-gradient(180deg, #5a8a3a 0%, #3a6a1a 100%); border-radius: 20% 80% 0 0; }
.scn-orlando-meets-duke-senior .duke-figure { position:absolute; bottom:18%; left:55%; width:24px; height:50px; background: linear-gradient(180deg, #8a6a4a 0%, #4a3a2a 100%); border-radius: 40% 40% 35% 35% / 60% 60% 40% 40%; transform-origin: bottom; animation: ods-duke 10s ease-in-out infinite; }
.scn-orlando-meets-duke-senior .orlando-bowing { position:absolute; bottom:17%; left:35%; width:22px; height:44px; background: linear-gradient(180deg, #6a4a3a 0%, #3a2a1a 100%); border-radius: 40% 40% 35% 35% / 60% 60% 40% 40%; transform-origin: bottom; animation: ods-bow 8s ease-in-out infinite; }
.scn-orlando-meets-duke-senior .adam-resting { position:absolute; bottom:15%; left:45%; width:18px; height:30px; background: linear-gradient(180deg, #5a3a2a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform: rotate(15deg); transform-origin: bottom; animation: ods-rest 12s ease-in-out infinite; }
.scn-orlando-meets-duke-senior .bush-back { position:absolute; right:10%; bottom:20%; width:50px; height:30px; background: radial-gradient(ellipse at 50% 100%, #4a7a3a 0%, transparent 70%); filter: blur(4px); animation: ods-bush 20s linear infinite; }
@keyframes ods-dapple { 0% { opacity:0.3; transform:scale(0.98); } 50% { opacity:0.7; transform:scale(1.02); } 100% { opacity:0.4; transform:scale(0.99); } }
@keyframes ods-duke { 0%,100% { transform: translateY(0) rotate(-2deg); } 25% { transform: translateY(-1px) rotate(1deg); } 50% { transform: translateY(1px) rotate(-1deg); } 75% { transform: translateY(-1px) rotate(2deg); } }
@keyframes ods-bow { 0%,100% { transform: translateY(0) rotate(0deg) scaleY(1); } 20% { transform: translateY(3px) rotate(10deg) scaleY(0.9); } 40% { transform: translateY(0) rotate(0deg) scaleY(1); } 60% { transform: translateY(2px) rotate(5deg) scaleY(0.95); } 80% { transform: translateY(0) rotate(-2deg) scaleY(1); } }
@keyframes ods-rest { 0%,100% { transform: translateY(0) rotate(15deg); } 50% { transform: translateY(-2px) rotate(18deg); } }
@keyframes ods-bush { 0% { transform: translateX(0) scaleX(1); } 50% { transform: translateX(4px) scaleX(1.05); } 100% { transform: translateX(-2px) scaleX(0.95); } }

.scn-orlando-carves-love-poems {
  background: linear-gradient(180deg, #0a1628 0%, #1a2a4a 50%, #2a3a5e 100%),
              radial-gradient(ellipse at 50% 20%, #3a5a8a 0%, transparent 60%);
}
.scn-orlando-carves-love-poems .night-sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #0a1220 0%, #1a2a4a 100%); animation: ocp-sky 15s ease-in-out infinite alternate; }
.scn-orlando-carves-love-poems .moon { position:absolute; top:8%; right:18%; width:50px; height:50px; background: radial-gradient(circle, #f0f8ff 0%, #b0c8e0 70%, transparent 100%); border-radius:50%; box-shadow: 0 0 30px 10px rgba(176,200,224,0.4), 0 0 60px 20px rgba(176,200,224,0.1); animation: ocp-moon 20s linear infinite; }
.scn-orlando-carves-love-poems .tree-trunk { position:absolute; left:20%; bottom:30%; width:12%; height:60%; background: linear-gradient(90deg, #1a2a2a 0%, #2a3a3a 40%, #1a2a2a 100%); border-radius: 10% 10% 5% 5%; box-shadow: 0 0 20px rgba(0,0,0,0.5); transform-origin: bottom; }
.scn-orlando-carves-love-poems .orlando-silhouette { position:absolute; bottom:25%; left:25%; width:20px; height:45px; background: #0a0a1a; border-radius: 40% 40% 35% 35% / 60% 60% 40% 40%; box-shadow: 0 0 15px rgba(0,0,0,0.6); animation: ocp-orlando 8s ease-in-out infinite; }
.scn-orlando-carves-love-poems .knife-gleam { position:absolute; bottom:35%; left:28%; width:2px; height:12px; background: linear-gradient(180deg, #e0e8ff 0%, #8090b0 100%); box-shadow: 0 0 8px #a0b8d0; border-radius: 50% 50% 10% 10%; transform: rotate(30deg); animation: ocp-knife 8s ease-in-out infinite; }
.scn-orlando-carves-love-poems .carved-marks { position:absolute; left:22%; bottom:45%; width:8%; height:15%; background: repeating-linear-gradient(0deg, #2a3a4a 0px, #2a3a4a 2px, transparent 2px, transparent 4px); opacity:0.4; animation: ocp-marks 6s ease-in-out infinite; }
.scn-orlando-carves-love-poems .shadow-pool { position:absolute; bottom:20%; left:15%; width:40%; height:10%; background: radial-gradient(ellipse at 50% 50%, rgba(0,0,0,0.3) 0%, transparent 70%); filter: blur(6px); animation: ocp-shadow 12s ease-in-out infinite alternate; }
@keyframes ocp-sky { 0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.85; } }
@keyframes ocp-moon { 0% { transform: translateX(0) scale(0.95); } 50% { transform: translateX(5px) scale(1.05); } 100% { transform: translateX(-3px) scale(0.98); } }
@keyframes ocp-orlando { 0%,100% { transform: translateY(0) rotate(0deg); } 25% { transform: translateY(-2px) rotate(2deg); } 50% { transform: translateY(0) rotate(-1deg); } 75% { transform: translateY(2px) rotate(1deg); } }
@keyframes ocp-knife { 0%,100% { transform: rotate(30deg) translateY(0); } 25% { transform: rotate(40deg) translateY(-2px); } 50% { transform: rotate(25deg) translateY(1px); } 75% { transform: rotate(35deg) translateY(-1px); } }
@keyframes ocp-marks { 0% { opacity:0.2; transform:scaleY(0.9); } 50% { opacity:0.5; transform:scaleY(1.1); } 100% { opacity:0.3; transform:scaleY(0.95); } }
@keyframes ocp-shadow { 0% { transform: translateY(0) scaleX(1); } 50% { transform: translateY(3px) scaleX(1.2); } 100% { transform: translateY(-2px) scaleX(0.9); } }

.scn-rosalind-discovers-poems {
  background: linear-gradient(180deg, #f0e8c0 0%, #d8cc9a 40%, #b8a87a 100%),
              radial-gradient(ellipse at 50% 30%, #fff8e0 0%, transparent 60%);
}
.scn-rosalind-discovers-poems .room-walls { position:absolute; inset:0 0 25% 0; background: linear-gradient(180deg, #e8dcc0 0%, #c0b090 100%); }
.scn-rosalind-discovers-poems .window-bright { position:absolute; top:10%; left:10%; width:30%; height:40%; background: linear-gradient(180deg, #f0f8ff 0%, #d0e0f0 100%); border: 6px solid #8a7a6a; box-shadow: inset 0 0 20px rgba(255,255,255,0.5), 0 0 40px rgba(200,220,255,0.3); animation: rdp-window 8s ease-in-out infinite alternate; }
.scn-rosalind-discovers-poems .floor-checkered { position:absolute; bottom:0; left:0; right:0; height:25%; background: repeating-linear-gradient(90deg, #b8a070 0px, #b8a070 30px, #d0b890 30px, #d0b890 60px); animation: rdp-floor 6s linear infinite; }
.scn-rosalind-discovers-poems .rosalind-figure { position:absolute; bottom:15%; left:30%; width:20px; height:48px; background: linear-gradient(180deg, #8a6a4a 0%, #4a3a2a 100%); border-radius: 40% 40% 35% 35% / 60% 60% 40% 40%; transform-origin: bottom; animation: rdp-ros 5s ease-in-out infinite; }
.scn-rosalind-discovers-poems .celia-figure { position:absolute; bottom:14%; left:45%; width:18px; height:44px; background: linear-gradient(180deg, #6a8a4a 0%, #3a5a2a 100%); border-radius: 40% 40% 35% 35% / 60% 60% 40% 40%; transform-origin: bottom; animation: rdp-cel 6s ease-in-out infinite 0.5s; }
.scn-rosalind-discovers-poems .touchstone-crouch { position:absolute; bottom:10%; left:55%; width:16px; height:30px; background: linear-gradient(180deg, #5a4a3a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 50% 50% 40% 40%; transform: skewX(-10deg); transform-origin: bottom; animation: rdp-touch 7s ease-in-out infinite; }
.scn-rosalind-discovers-poems .poem-scroll { position:absolute; bottom:25%; left:35%; width:14px; height:20px; background: linear-gradient(180deg, #e8dcc0 0%, #c0a880 100%); border-radius: 10%; transform: rotate(15deg); box-shadow: 0 2px 6px rgba(0,0,0,0.3); animation: rdp-scroll 4s ease-in-out infinite alternate; }
@keyframes rdp-window { 0% { opacity:0.7; box-shadow: inset 0 0 20px rgba(255,255,255,0.3), 0 0 20px rgba(200,220,255,0.2); } 50% { opacity:1; box-shadow: inset 0 0 30px rgba(255,255,255,0.6), 0 0 50px rgba(200,220,255,0.4); } 100% { opacity:0.8; box-shadow: inset 0 0 20px rgba(255,255,255,0.4), 0 0 30px rgba(200,220,255,0.3); } }
@keyframes rdp-floor { 0% { background-position: 0 0; } 100% { background-position: 60px 0; } }
@keyframes rdp-ros { 0%,100% { transform: translateY(0) rotate(0deg); } 20% { transform: translateY(-3px) rotate(3deg); } 40% { transform: translateY(0) rotate(-2deg); } 60% { transform: translateY(-1px) rotate(1deg); } 80% { transform: translateY(2px) rotate(-1deg); } }
@keyframes rdp-cel { 0%,100% { transform: translateY(0) rotate(0deg); } 25% { transform: translateY(-2px) rotate(2deg); } 50% { transform: translateY(1px) rotate(-1deg); } 75% { transform: translateY(-1px) rotate(3deg); } }
@keyframes rdp-touch { 0%,100% { transform: translateY(0) skewX(-10deg); } 25% { transform: translateY(-2px) skewX(-5deg); } 50% { transform: translateY(1px) skewX(-15deg); } 75% { transform: translateY(0) skewX(-8deg); } }
@keyframes rdp-scroll { 0% { transform: rotate(15deg) translateY(0); } 50% { transform: rotate(20deg) translateY(-2px); } 100% { transform: rotate(10deg) translateY(0); } }

/* ===== SCENE: orlando-complains-adam ===== */
.scn-orlando-complains-adam {
  background:
    linear-gradient(180deg, #87ceeb 0%, #b0e0ff 30%, #f5deb3 70%, #c4a47a 100%),
    radial-gradient(ellipse at 30% 80%, #f5deb3 0%, transparent 60%);
}
.scn-orlando-complains-adam .sky {
  position: absolute; inset: 0 0 60% 0;
  background: linear-gradient(180deg, #d4e8ff 0%, #a0c4ff 100%);
  animation: oca-sky 12s ease-in-out infinite alternate;
}
.scn-orlando-complains-adam .trees {
  position: absolute; bottom: 20%;
  width: 80px; height: 200px;
  background: linear-gradient(180deg, #5a3d2b 0%, #3a2515 100%);
  border-radius: 40% 40% 20% 20%;
  transform-origin: bottom center;
}
.scn-orlando-complains-adam .tree-back {
  left: 5%;
  height: 160px; width: 60px;
  background: linear-gradient(180deg, #4a7a3a 0%, #2a5a1a 100%);
  animation: oca-sway 8s ease-in-out infinite alternate;
}
.scn-orlando-complains-adam .tree-mid {
  left: 25%;
  height: 200px; width: 80px;
  background: linear-gradient(180deg, #6a8a4a 0%, #3a6a2a 100%);
  animation: oca-sway 11s ease-in-out infinite alternate;
}
.scn-orlando-complains-adam .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(180deg, #7a9a5a 0%, #5a7a3a 100%);
  border-radius: 30% 70% 0 0 / 40% 60% 0 0;
}
.scn-orlando-complains-adam .fence {
  position: absolute; bottom: 22%; left: 10%; right: 10%; height: 6px;
  background: #8a6a3a;
  box-shadow: 0 0 0 2px #6a4a2a, 0 8px 0 2px #8a6a3a, 0 16px 0 2px #8a6a3a;
  border-radius: 2px;
  animation: oca-fence 20s ease-in-out infinite;
}
.scn-orlando-complains-adam .orlando {
  position: absolute; bottom: 24%; left: 40%; width: 24px; height: 50px;
  background: linear-gradient(180deg, #2a3a5a 0%, #1a2a4a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: oca-orlando 4s ease-in-out infinite;
}
.scn-orlando-complains-adam .adam {
  position: absolute; bottom: 24%; left: 55%; width: 22px; height: 44px;
  background: linear-gradient(180deg, #4a4a3a 0%, #3a3a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: oca-orlando 4.5s ease-in-out infinite reverse;
}
.scn-orlando-complains-adam .sundisc {
  position: absolute; top: 5%; right: 20%; width: 60px; height: 60px;
  background: radial-gradient(circle, #fff5cc 0%, #ffdd66 40%, #ffbb33 80%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 40px 20px rgba(255, 200, 50, 0.4);
  animation: oca-sunpulse 6s ease-in-out infinite;
}
.scn-orlando-complains-adam .sunrays {
  position: absolute; top: 5%; right: 20%; width: 120px; height: 120px;
  background: radial-gradient(circle, rgba(255,255,200,0.15) 0%, transparent 70%);
  border-radius: 50%;
  animation: oca-rays 8s linear infinite;
}
.scn-orlando-complains-adam .ray1 { transform: rotate(0deg); }
.scn-orlando-complains-adam .ray2 { transform: rotate(60deg); animation-delay: -2s; }

@keyframes oca-sky { 0% { opacity: 0.8 } 50% { opacity: 1 } 100% { opacity: 0.7 } }
@keyframes oca-sway { 0% { transform: rotate(-2deg) } 50% { transform: rotate(3deg) } 100% { transform: rotate(-2deg) } }
@keyframes oca-fence { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-1px) } }
@keyframes oca-orlando { 0% { transform: translateX(0) translateY(0) rotate(-2deg) } 25% { transform: translateX(4px) translateY(-2px) rotate(1deg) } 50% { transform: translateX(8px) translateY(0) rotate(-1deg) } 75% { transform: translateX(12px) translateY(-1px) rotate(2deg) } 100% { transform: translateX(16px) translateY(0) rotate(0deg) } }
@keyframes oca-sunpulse { 0% { transform: scale(1); } 50% { transform: scale(1.05); } 100% { transform: scale(1); } }
@keyframes oca-rays { 0% { transform: rotate(0deg) scale(1.2); opacity: 0.6; } 100% { transform: rotate(360deg) scale(1.5); opacity: 0; } }

/* ===== SCENE: oliver-plots-against-orlando ===== */
.scn-oliver-plots-against-orlando {
  background:
    linear-gradient(180deg, #2a2a3e 0%, #1a1a2a 50%, #0a0a1a 100%),
    radial-gradient(ellipse at 30% 20%, #4a4a6a 0%, transparent 80%);
}
.scn-oliver-plots-against-orlando .wall-bg {
  position: absolute; inset: 0;
  background: linear-gradient(135deg, #3a3a4a 0%, #1a1a2a 100%);
  animation: opa-wall 10s ease-in-out infinite alternate;
}
.scn-oliver-plots-against-orlando .shadow-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #0a0a12 0%, #050508 100%);
}
.scn-oliver-plots-against-orlando .table {
  position: absolute; bottom: 20%; left: 30%; width: 120px; height: 8px;
  background: linear-gradient(90deg, #4a3a2a, #6a5a4a, #4a3a2a);
  border-radius: 4px;
  box-shadow: 0 4px 6px rgba(0,0,0,0.6);
}
.scn-oliver-plots-against-orlando .oliver {
  position: absolute; bottom: 22%; left: 34%; width: 26px; height: 56px;
  background: linear-gradient(180deg, #3a2a4a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: opa-figure 3s ease-in-out infinite;
}
.scn-oliver-plots-against-orlando .charles {
  position: absolute; bottom: 22%; left: 50%; width: 30px; height: 64px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: opa-figure 3.5s ease-in-out infinite reverse;
}
.scn-oliver-plots-against-orlando .letter {
  position: absolute; bottom: 24%; left: 42%; width: 16px; height: 20px;
  background: linear-gradient(135deg, #d4c8a0, #b8a878);
  transform: rotate(15deg);
  box-shadow: 2px 2px 4px rgba(0,0,0,0.5);
  animation: opa-letter 6s ease-in-out infinite;
}
.scn-oliver-plots-against-orlando .sunbeam {
  position: absolute; top: 0; left: 20%; width: 60%; height: 100%;
  background: linear-gradient(180deg, rgba(255,255,200,0.08) 0%, transparent 60%);
  clip-path: polygon(0% 0%, 100% 0%, 70% 100%, 20% 100%);
  animation: opa-beam 8s ease-in-out infinite alternate;
}
.scn-oliver-plots-against-orlando .dust {
  position: absolute; top: 30%; left: 25%; width: 12px; height: 12px;
  background: radial-gradient(circle, rgba(200,200,180,0.3) 0%, transparent 100%);
  border-radius: 50%;
  animation: opa-dust 4s linear infinite;
}

@keyframes opa-wall { 0% { opacity: 0.9 } 50% { opacity: 1 } 100% { opacity: 0.85 } }
@keyframes opa-figure { 0% { transform: translateY(0) rotate(-1deg) } 25% { transform: translateY(-3px) rotate(2deg) } 50% { transform: translateY(0) rotate(-2deg) } 75% { transform: translateY(-2px) rotate(1deg) } 100% { transform: translateY(0) rotate(0deg) } }
@keyframes opa-letter { 0%,100% { transform: rotate(15deg) translateY(0); } 50% { transform: rotate(20deg) translateY(-4px); } }
@keyframes opa-beam { 0% { opacity: 0.3 } 50% { opacity: 0.6 } 100% { opacity: 0.2 } }
@keyframes opa-dust { 0% { transform: translate(0, 0) scale(1); opacity: 0.6; } 100% { transform: translate(30px, -40px) scale(2); opacity: 0; } }

/* ===== SCENE: rosalind-celia-discuss-exile ===== */
.scn-rosalind-celia-discuss-exile {
  background:
    linear-gradient(180deg, #c8e8ff 0%, #a0d0f0 30%, #e0f0c0 70%, #c0d0a0 100%),
    radial-gradient(ellipse at 70% 20%, #ffffee 0%, transparent 60%);
}
.scn-rosalind-celia-discuss-exile .lawn {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #8ab85a 0%, #6a9a3a 100%);
  border-radius: 60% 40% 0 0;
}
.scn-rosalind-celia-discuss-exile .palace-walls {
  position: absolute; top: 0; right: 5%; width: 30%; height: 70%;
  background: linear-gradient(180deg, #f5e8c8 0%, #d4c4a0 100%);
  clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);
  box-shadow: inset -8px 0 12px rgba(0,0,0,0.1);
}
.scn-rosalind-celia-discuss-exile .path {
  position: absolute; bottom: 25%; left: 20%; right: 40%; height: 10%;
  background: linear-gradient(180deg, #c8b88a 0%, #a89868 100%);
  border-radius: 50% 50% 0 0 / 100% 100% 0 0;
}
.scn-rosalind-celia-discuss-exile .rosalind {
  position: absolute; bottom: 24%; left: 35%; width: 20px; height: 48px;
  background: linear-gradient(180deg, #6a4a7a 0%, #4a3a5a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: rce-gentle 5s ease-in-out infinite;
}
.scn-rosalind-celia-discuss-exile .celia {
  position: absolute; bottom: 24%; left: 50%; width: 20px; height: 46px;
  background: linear-gradient(180deg, #5a7a4a 0%, #3a5a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: rce-gentle 5.5s ease-in-out infinite reverse;
}
.scn-rosalind-celia-discuss-exile .touchstone {
  position: absolute; bottom: 24%; left: 42%; width: 16px; height: 34px;
  background: linear-gradient(180deg, #8a5a3a 0%, #6a4a2a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  animation: rce-jester 3s ease-in-out infinite;
}
.scn-rosalind-celia-discuss-exile .flowers {
  position: absolute; bottom: 26%; left: 10%; width: 30px; height: 20px;
  background: radial-gradient(circle at 50% 30%, #ffb3b3 30%, transparent 60%),
              radial-gradient(circle at 30% 60%, #ffcc99 20%, transparent 40%),
              radial-gradient(circle at 70% 80%, #ff9999 25%, transparent 50%);
  animation: rce-bloom 7s ease-in-out infinite;
}
.scn-rosalind-celia-discuss-exile .clouds {
  position: absolute; top: 8%; left: 15%; width: 120px; 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(4px);
  animation: rce-drift 40s linear infinite;
}

@keyframes rce-gentle { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-3px); } }
@keyframes rce-jester { 0% { transform: rotate(-5deg) translateY(0); } 25% { transform: rotate(10deg) translateY(-5px); } 50% { transform: rotate(-8deg) translateY(0); } 75% { transform: rotate(12deg) translateY(-3px); } 100% { transform: rotate(-5deg) translateY(0); } }
@keyframes rce-bloom { 0% { transform: scale(1); opacity:0.8; } 50% { transform: scale(1.3); opacity:1; } 100% { transform: scale(1); opacity:0.8; } }
@keyframes rce-drift { 0% { transform: translateX(-60px); } 100% { transform: translateX(120vw); } }

/* ===== SCENE: wrestling-match-announcement ===== */
.scn-wrestling-match-announcement {
  background:
    linear-gradient(180deg, #8ab8d4 0%, #5a8aa8 40%, #4a7a9a 80%, #3a6a8a 100%),
    radial-gradient(ellipse at 50% 0%, #b0d8ee 0%, transparent 70%);
}
.scn-wrestling-match-announcement .bg-arena {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at 50% 100%, #7a9a7a 0%, #4a6a4a 60%);
  animation: wma-pulse 12s ease-in-out infinite alternate;
}
.scn-wrestling-match-announcement .wooden-stage {
  position: absolute; bottom: 10%; left: 15%; right: 15%; height: 15%;
  background: linear-gradient(180deg, #8a6a3a 0%, #6a4a2a 100%);
  border-radius: 8% 8% 0 0;
  box-shadow: 0 -4px 12px rgba(0,0,0,0.3);
}
.scn-wrestling-match-announcement .ropes {
  position: absolute; bottom: 22%; left: 18%; right: 18%; height: 2px;
  background: #a08060;
  box-shadow: 0 -5px 0 #a08060, 0 -10px 0 #a08060;
}
.scn-wrestling-match-announcement .charles-wrestler {
  position: absolute; bottom: 14%; left: 35%; width: 34px; height: 60px;
  background: linear-gradient(180deg, #8a7a6a 0%, #6a5a4a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: wma-charles 3s ease-in-out infinite alternate;
}
.scn-wrestling-match-announcement .le-beau {
  position: absolute; bottom: 18%; left: 55%; width: 18px; height: 40px;
  background: linear-gradient(180deg, #4a6a7a 0%, #2a4a5a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  animation: wma-lebeau 4s ease-in-out infinite;
}
.scn-wrestling-match-announcement .crowd {
  position: absolute; bottom: 12%; width: 60px; height: 20px;
  background: radial-gradient(circle at 10% 30%, #3a4a5a 20%, transparent 40%),
              radial-gradient(circle at 30% 60%, #2a3a4a 15%, transparent 30%),
              radial-gradient(circle at 50% 40%, #4a5a6a 25%, transparent 45%),
              radial-gradient(circle at 70% 50%, #3a4a5a 20%, transparent 40%),
              radial-gradient(circle at 90% 30%, #2a3a4a 15%, transparent 30%);
  filter: blur(1px);
}
.scn-wrestling-match-announcement .crowd-left { left: 5%; }
.scn-wrestling-match-announcement .crowd-right { right: 5%; }
.scn-wrestling-match-announcement .crowd-left { animation: wma-crowd 5s ease-in-out infinite; }
.scn-wrestling-match-announcement .crowd-right { animation: wma-crowd 6s ease-in-out infinite reverse; }
.scn-wrestling-match-announcement .banner {
  position: absolute; top: 10%; left: 30%; width: 100px; height: 40px;
  background: linear-gradient(90deg, #c8553d, #a0461a, #c8553d); /* terracotta */
  clip-path: polygon(0% 0%, 100% 0%, 90% 100%, 10% 100%);
  animation: wma-banner 8s ease-in-out infinite;
}
.scn-wrestling-match-announcement .dust-cloud {
  position: absolute; bottom: 15%; left: 40%; width: 40px; height: 30px;
  background: radial-gradient(ellipse, rgba(180,160,140,0.4) 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(6px);
  animation: wma-dust 3s ease-in-out infinite alternate;
}

@keyframes wma-pulse { 0% { opacity:0.9 } 50% { opacity:1 } 100% { opacity:0.85 } }
@keyframes wma-charles { 0% { transform: translateY(0) rotate(-2deg); } 50% { transform: translateY(-4px) rotate(3deg); } 100% { transform: translateY(0) rotate(-2deg); } }
@keyframes wma-lebeau { 0% { transform: translateX(0) scale(1); } 25% { transform: translateX(8px) scale(1.1); } 50% { transform: translateX(0) scale(1); } 75% { transform: translateX(-6px) scale(0.9); } 100% { transform: translateX(0) scale(1); } }
@keyframes wma-crowd { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-3px); } }
@keyframes wma-banner { 0%,100% { transform: rotate(0deg); } 50% { transform: rotate(3deg); } }
@keyframes wma-dust { 0% { transform: scale(1) translateY(0); opacity:0.6; } 100% { transform: scale(1.5) translateY(-10px); opacity:0.2; } }

.scn-adam-warns-orlando {
  background: 
    linear-gradient(180deg, #1c1820 0%, #2a1e1a 40%, #3a2a22 100%),
    radial-gradient(ellipse at 30% 60%, #4a3020 0%, transparent 70%);
}

.scn-adam-warns-orlando .wall-back {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(180deg, #2a1e1a 0%, #1a1210 100%);
  box-shadow: inset 0 0 30px rgba(0,0,0,0.6);
  animation: aw-wall 8s ease-in-out infinite alternate;
}
.scn-adam-warns-orlando .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #3a2a22 0%, #1a1210 100%);
  border-radius: 20% 20% 0 0;
  box-shadow: inset 0 4px 12px rgba(0,0,0,0.5);
}
.scn-adam-warns-orlando .table {
  position: absolute; bottom: 22%; left: 50%; width: 80px; height: 8px;
  transform: translateX(-50%);
  background: linear-gradient(90deg, #4a3a2a 0%, #6a5a4a 50%, #4a3a2a 100%);
  border-radius: 4px;
  box-shadow: 0 2px 6px rgba(0,0,0,0.4);
  animation: aw-table 6s ease-in-out infinite;
}
.scn-adam-warns-orlando .candle {
  position: absolute; bottom: 30%; left: 50%; width: 6px; height: 16px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #c8a060 0%, #8a6a3a 100%);
  border-radius: 3px 3px 2px 2px;
  box-shadow: 0 0 20px 8px #c08040, 0 0 40px 16px rgba(192,128,64,0.3);
  animation: aw-candle-glow 3s ease-in-out infinite alternate;
}
.scn-adam-warns-orlando .adam {
  position: absolute; bottom: 20%; left: 44%; width: 20px; height: 48px;
  background: linear-gradient(180deg, #3a2a22 0%, #1a1210 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: aw-figure 4s ease-in-out infinite alternate;
  box-shadow: 0 0 8px rgba(0,0,0,0.5);
}
.scn-adam-warns-orlando .orlando {
  position: absolute; bottom: 20%; left: 54%; width: 22px; height: 52px;
  background: linear-gradient(180deg, #2a1a12 0%, #0a0a08 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: aw-figure 4s ease-in-out infinite alternate-reverse;
  box-shadow: 0 0 8px rgba(0,0,0,0.5);
}
.scn-adam-warns-orlando .shadow {
  position: absolute; bottom: 0; left: 40%; width: 30px; height: 60px;
  background: radial-gradient(ellipse at 50% 100%, rgba(0,0,0,0.6) 0%, transparent 70%);
  filter: blur(4px);
  animation: aw-shadow 5s ease-in-out infinite alternate;
}

@keyframes aw-wall { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.75 } }
@keyframes aw-table { 0% { transform: translateX(-50%) } 50% { transform: translateX(-50%) rotate(0.5deg) } 100% { transform: translateX(-50%) } }
@keyframes aw-candle-glow { 0% { box-shadow: 0 0 15px 5px #c08040, 0 0 30px 10px rgba(192,128,64,0.2); opacity:0.85 } 50% { box-shadow: 0 0 30px 12px #ffd060, 0 0 60px 20px rgba(255,208,96,0.4); opacity:1 } 100% { box-shadow: 0 0 20px 6px #c08040, 0 0 40px 12px rgba(192,128,64,0.25); opacity:0.9 } }
@keyframes aw-figure { 0% { transform: translateY(0) rotate(-1deg) } 50% { transform: translateY(-2px) rotate(2deg) } 100% { transform: translateY(0) rotate(-1deg) } }
@keyframes aw-shadow { 0% { transform: scaleX(0.8); opacity:0.5 } 50% { transform: scaleX(1); opacity:0.7 } 100% { transform: scaleX(0.85); opacity:0.5 } }

/* ========== Scene 2 ========== */
.scn-rosalind-celia-arrive-forest {
  background: 
    linear-gradient(180deg, #87ceeb 0%, #c8e6c9 30%, #a5d6a7 60%, #81c784 100%),
    radial-gradient(ellipse at 70% 20%, #fff9c4 0%, transparent 50%);
}

.scn-rosalind-celia-arrive-forest .sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #90caf9 0%, #e3f2fd 100%);
  animation: rc-sky 20s ease-in-out infinite alternate;
}
.scn-rosalind-celia-arrive-forest .trees-back {
  position: absolute; bottom: 35%; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #2e7d32 0%, #4caf50 50%, #388e3c 100%);
  border-radius: 60% 40% 0 0 / 80% 70% 0 0;
  box-shadow: inset 0 -10px 30px rgba(0,0,0,0.2);
  animation: rc-trees 12s ease-in-out infinite alternate;
}
.scn-rosalind-celia-arrive-forest .ground-path {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #81c784 0%, #4caf50 40%, #2e7d32 100%);
  border-radius: 20% 20% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.3);
}
.scn-rosalind-celia-arrive-forest .rosalind-fig {
  position: absolute; bottom: 18%; left: 30%; width: 22px; height: 54px;
  background: linear-gradient(180deg, #c8b88a 0%, #8a7a5a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: rc-walk 5s ease-in-out infinite;
}
.scn-rosalind-celia-arrive-forest .celia-fig {
  position: absolute; bottom: 18%; left: 38%; width: 20px; height: 50px;
  background: linear-gradient(180deg, #d4a373 0%, #9c7a5a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: rc-walk 5s ease-in-out infinite 0.5s;
}
.scn-rosalind-celia-arrive-forest .touchstone-fig {
  position: absolute; bottom: 18%; left: 45%; width: 18px; height: 44px;
  background: linear-gradient(180deg, #6a5a3a 0%, #3a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: rc-walk 5s ease-in-out infinite 1s;
}
.scn-rosalind-celia-arrive-forest .silvius-fig {
  position: absolute; bottom: 18%; left: 55%; width: 18px; height: 46px;
  background: linear-gradient(180deg, #5a4a3a 0%, #2a1a12 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: rc-walk 5s ease-in-out infinite 1.5s;
  opacity: 0.8;
}
.scn-rosalind-celia-arrive-forest .bush {
  position: absolute; bottom: 22%; left: 60%; width: 50px; height: 30px;
  background: radial-gradient(ellipse at 50% 80%, #388e3c 0%, #1b5e20 60%, transparent 80%);
  border-radius: 50%;
  filter: blur(2px);
  animation: rc-bush 10s ease-in-out infinite alternate;
}

@keyframes rc-sky { 0% { opacity:0.9 } 50% { opacity:1 } 100% { opacity:0.85 } }
@keyframes rc-trees { 0% { transform: translateY(0) scale(1) } 50% { transform: translateY(-2px) scale(1.01) } 100% { transform: translateY(0) scale(1) } }
@keyframes rc-walk { 0% { transform: translateX(0) rotate(-1deg) } 25% { transform: translateX(3px) rotate(1deg) } 50% { transform: translateX(0) rotate(-1deg) } 75% { transform: translateX(-3px) rotate(1deg) } 100% { transform: translateX(0) rotate(-1deg) } }
@keyframes rc-bush { 0% { transform: scale(0.95) } 50% { transform: scale(1.05) } 100% { transform: scale(0.95) } }

/* ========== Scene 3 ========== */
.scn-court-vs-country-debate {
  background: 
    linear-gradient(180deg, #64b5f6 0%, #bbdefb 30%, #a5d6a7 70%, #81c784 100%),
    radial-gradient(ellipse at 50% 10%, #fff9c4 0%, transparent 60%);
}

.scn-court-vs-country-debate .sky-bright {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #64b5f6 0%, #90caf9 100%);
  animation: cc-sky 25s ease-in-out infinite alternate;
}
.scn-court-vs-country-debate .cottage {
  position: absolute; bottom: 25%; left: 20%; width: 120px; height: 90px;
  background: linear-gradient(180deg, #d7ccc8 0%, #a1887f 100%);
  border-radius: 10% 10% 4% 4%;
  box-shadow: 0 8px 20px rgba(0,0,0,0.3);
  animation: cc-cottage 8s ease-in-out infinite;
}
.scn-court-vs-country-debate .cottage-door {
  position: absolute; bottom: 25%; left: 36%; width: 30px; height: 50px;
  background: linear-gradient(90deg, #6d4c41 0%, #4e342e 100%);
  border-radius: 4px;
  box-shadow: inset 0 -2px 6px rgba(0,0,0,0.4);
  animation: cc-door 6s ease-in-out infinite alternate;
}
.scn-court-vs-country-debate .ground-green {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(180deg, #66bb6a 0%, #43a047 100%);
  border-radius: 30% 30% 0 0;
  box-shadow: inset 0 6px 14px rgba(0,0,0,0.2);
}
.scn-court-vs-country-debate .touchstone {
  position: absolute; bottom: 18%; left: 40%; width: 20px; height: 46px;
  background: linear-gradient(180deg, #7c6a5a 0%, #3a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cc-gesture 3s ease-in-out infinite;
}
.scn-court-vs-country-debate .corin {
  position: absolute; bottom: 18%; left: 52%; width: 22px; height: 48px;
  background: linear-gradient(180deg, #6a5a4a 0%, #2a1a12 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cc-gesture 3s ease-in-out infinite 1.5s;
}
.scn-court-vs-country-debate .flock {
  position: absolute; bottom: 15%; right: 18%; width: 60px; height: 20px;
  background: radial-gradient(circle at 10% 50%, #bdbdbd 20%, transparent 20%), radial-gradient(circle at 30% 50%, #bdbdbd 18%, transparent 20%), radial-gradient(circle at 50% 50%, #bdbdbd 22%, transparent 20%), radial-gradient(circle at 70% 50%, #bdbdbd 20%, transparent 20%), radial-gradient(circle at 90% 50%, #bdbdbd 18%, transparent 20%);
  background-size: 20px 20px;
  filter: blur(1px);
  animation: cc-flock 12s linear infinite;
}
.scn-court-vs-country-debate .cloud-1 {
  position: absolute; top: 12%; left: 10%; width: 80px; height: 18px;
  background: linear-gradient(180deg, rgba(255,255,255,0.6) 0%, rgba(255,255,255,0.1) 100%);
  border-radius: 50%;
  filter: blur(6px);
  animation: cc-cloud 30s linear infinite;
}
.scn-court-vs-country-debate .cloud-2 {
  position: absolute; top: 20%; right: 20%; width: 60px; height: 14px;
  background: linear-gradient(180deg, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0.05) 100%);
  border-radius: 50%;
  filter: blur(5px);
  animation: cc-cloud 40s linear infinite reverse;
}

@keyframes cc-sky { 0% { opacity:0.9 } 50% { opacity:1 } 100% { opacity:0.85 } }
@keyframes cc-cottage { 0% { transform: translateY(0) } 50% { transform: translateY(-3px) } 100% { transform: translateY(0) } }
@keyframes cc-door { 0% { transform: rotateY(0deg) } 50% { transform: rotateY(15deg) } 100% { transform: rotateY(0deg) } }
@keyframes cc-gesture { 0% { transform: rotate(-5deg) translateX(0) } 25% { transform: rotate(5deg) translateX(2px) } 50% { transform: rotate(-5deg) translateX(0) } 75% { transform: rotate(5deg) translateX(-2px) } 100% { transform: rotate(-5deg) translateX(0) } }
@keyframes cc-flock { 0% { transform: translateX(0) } 100% { transform: translateX(-20px) } }
@keyframes cc-cloud { 0% { transform: translateX(0) } 100% { transform: translateX(120vw) } }

/* ========== Scene 4 ========== */
.scn-jaques-melancholy-speech {
  background: 
    linear-gradient(180deg, #c8e6c9 0%, #81c784 30%, #4caf50 60%, #2e7d32 100%),
    radial-gradient(ellipse at 60% 20%, #fff9c4 0%, transparent 50%);
}

.scn-jaques-melancholy-speech .forest-canopy {
  position: absolute; inset: 0 0 50% 0;
  background: radial-gradient(ellipse at 50% 100%, #1b5e20 0%, transparent 60%);
  box-shadow: inset 0 0 60px rgba(0,0,0,0.2);
  animation: jm-canopy 15s ease-in-out infinite alternate;
}
.scn-jaques-melancholy-speech .sunbeam {
  position: absolute; top: 15%; left: 50%; width: 80px; height: 300px;
  background: linear-gradient(180deg, rgba(255,255,200,0.3) 0%, transparent 100%);
  transform: rotate(10deg);
  filter: blur(10px);
  animation: jm-sunbeam 10s ease-in-out infinite alternate;
}
.scn-jaques-melancholy-speech .ground-moss {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #4caf50 0%, #1b5e20 100%);
  border-radius: 30% 70% 0 0 / 40% 60% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.4);
}
.scn-jaques-melancholy-speech .tree-trunk {
  position: absolute; bottom: 30%; left: 20%; width: 30px; height: 200px;
  background: linear-gradient(90deg, #5d4037 0%, #4e342e 50%, #3e2723 100%);
  border-radius: 10px;
  box-shadow: 0 0 20px rgba(0,0,0,0.3);
  animation: jm-trunk 12s ease-in-out infinite;
}
.scn-jaques-melancholy-speech .jaques-fig {
  position: absolute; bottom: 28%; left: 45%; width: 24px; height: 56px;
  background: linear-gradient(180deg, #3a2a22 0%, #1a1210 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: jm-stand 8s ease-in-out infinite alternate;
}
.scn-jaques-melancholy-speech .amiens-fig {
  position: absolute; bottom: 28%; left: 55%; width: 20px; height: 48px;
  background: linear-gradient(180deg, #6a5a3a 0%, #3a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: jm-stand 8s ease-in-out infinite alternate 2s;
  opacity: 0.7;
}
.scn-jaques-melancholy-speech .leaf-drift {
  position: absolute; bottom: 35%; left: 50%; width: 10px; height: 10px;
  background: #66bb6a;
  border-radius: 50% 0 50% 0;
  filter: blur(1px);
  animation: jm-leaf 20s linear infinite;
}
@keyframes jm-canopy { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.85 } }
@keyframes jm-sunbeam { 0% { opacity:0.3; transform: rotate(8deg) } 50% { opacity:0.6; transform: rotate(12deg) } 100% { opacity:0.3; transform: rotate(8deg) } }
@keyframes jm-trunk { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.02) } 100% { transform: scaleY(1) } }
@keyframes jm-stand { 0% { transform: translateY(0) rotate(-1deg) } 50% { transform: translateY(-2px) rotate(2deg) } 100% { transform: translateY(0) rotate(-1deg) } }
@keyframes jm-leaf { 0% { transform: translate(0, 0) rotate(0deg); opacity:1 } 50% { transform: translate(-30px, -40px) rotate(180deg); opacity:0.7 } 100% { transform: translate(-60px, -80px) rotate(360deg); opacity:0 } }

/* celia-reveals-poet - warm sunlit forest */
.scn-celia-reveals-poet {
  background:
    radial-gradient(ellipse at 30% 20%, #fff5d0 0%, transparent 40%),
    linear-gradient(180deg, #b8d4a0 0%, #7aaa6a 50%, #4a7a3a 100%),
    radial-gradient(circle at 70% 30%, #d0b060 0%, transparent 50%);
}
.scn-celia-reveals-poet .sun-rays {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(135deg, rgba(255,240,200,0.3) 0%, transparent 50%, rgba(255,240,200,0.1) 100%);
  animation: crp-rays 12s ease-in-out infinite alternate;
}
.scn-celia-reveals-poet .tree-trunk {
  position: absolute; left: 20%; bottom: 0; width: 60px; height: 60%;
  background: linear-gradient(90deg, #6a4a2a 0%, #8a6a4a 40%, #5a3a1a 100%);
  border-radius: 20% 30% 0 0;
  animation: crp-sway 8s ease-in-out infinite;
}
.scn-celia-reveals-poet .canopy {
  position: absolute; top: 0; left: 0; right: 0; height: 60%;
  background: radial-gradient(ellipse at 50% 100%, #5a9a3a 0%, transparent 70%);
  animation: crp-dapple 15s ease-in-out infinite alternate;
}
.scn-celia-reveals-poet .figure-left {
  position: absolute; bottom: 18%; left: 30%; width: 22px; height: 50px;
  background: linear-gradient(180deg, #e0c080 0%, #c0a060 60%, #a08040 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  animation: crp-fig-left 6s ease-in-out infinite;
}
.scn-celia-reveals-poet .figure-right {
  position: absolute; bottom: 20%; right: 25%; width: 20px; height: 48px;
  background: linear-gradient(180deg, #a0d080 0%, #80b060 60%, #609040 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  animation: crp-fig-right 6s ease-in-out infinite alternate;
}
.scn-celia-reveals-poet .leaf-a {
  position: absolute; top: 20%; left: 50%; width: 12px; height: 8px;
  background: #6a9a3a; border-radius: 50% 0 50% 0;
  filter: blur(1px);
  animation: crp-leaf-fall 20s linear infinite;
}
.scn-celia-reveals-poet .leaf-b {
  position: absolute; top: 30%; left: 70%; width: 10px; height: 6px;
  background: #8aba5a; border-radius: 0 50% 0 50%;
  filter: blur(1px);
  animation: crp-leaf-fall 25s linear infinite 5s;
}
.scn-celia-reveals-poet .butterfly {
  position: absolute; top: 40%; left: 10%; width: 14px; height: 10px;
  background: radial-gradient(circle at 50% 50%, #ffa050 0%, #d07030 100%);
  border-radius: 50% 50% 0 0;
  animation: crp-butterfly 9s ease-in-out infinite alternate;
}
@keyframes crp-rays { 0% { opacity: 0.3; transform: rotate(-2deg); } 50% { opacity: 0.7; transform: rotate(2deg); } 100% { opacity: 0.4; transform: rotate(-1deg); } }
@keyframes crp-sway { 0% { transform: rotate(0deg); } 25% { transform: rotate(1deg); } 50% { transform: rotate(-1deg); } 75% { transform: rotate(0.5deg); } 100% { transform: rotate(0deg); } }
@keyframes crp-dapple { 0% { opacity: 0.6; } 50% { opacity: 1; } 100% { opacity: 0.7; } }
@keyframes crp-fig-left { 0% { transform: translateY(0) rotate(2deg); } 25% { transform: translateY(-2px) rotate(4deg); } 50% { transform: translateY(0) rotate(-2deg); } 75% { transform: translateY(-1px) rotate(-4deg); } 100% { transform: translateY(0) rotate(2deg); } }
@keyframes crp-fig-right { 0% { transform: translateY(0) rotate(-2deg); } 50% { transform: translateY(-3px) rotate(0deg); } 100% { transform: translateY(0) rotate(2deg); } }
@keyframes crp-leaf-fall { 0% { transform: translate(0, 0) rotate(0deg); opacity: 0; } 10% { opacity: 0.8; } 90% { opacity: 0.6; } 100% { transform: translate(60px, 80vh) rotate(360deg); opacity: 0; } }
@keyframes crp-butterfly { 0% { transform: translate(0, 0) rotate(0deg) scaleX(1); } 25% { transform: translate(30px, -20px) rotate(10deg) scaleX(-1); } 50% { transform: translate(60px, 10px) rotate(-5deg) scaleX(1); } 75% { transform: translate(90px, -30px) rotate(15deg) scaleX(-1); } 100% { transform: translate(120px, 0) rotate(0deg) scaleX(1); } }

/* mock-courtship-begins - funny sunlit with bright primaries */
.scn-mock-courtship-begins {
  background:
    radial-gradient(ellipse at 50% 40%, #ffe680 0%, transparent 60%),
    linear-gradient(180deg, #a0d0e0 0%, #d0e8b0 40%, #c0c080 100%);
}
.scn-mock-courtship-begins .clearing {
  position: absolute; bottom: 20%; left: 0; right: 0; height: 60%;
  background: linear-gradient(180deg, #b0c07a 0%, #8aa060 100%);
  border-radius: 50% 50% 0 0;
  animation: mcb-ground 8s ease-in-out infinite alternate;
}
.scn-mock-courtship-begins .log {
  position: absolute; bottom: 30%; left: 30%; width: 120px; height: 14px;
  background: linear-gradient(90deg, #7a5a3a 0%, #a07040 40%, #6a4a2a 100%);
  border-radius: 30% 30% 20% 20%;
  animation: mcb-log 10s ease-in-out infinite;
}
.scn-mock-courtship-begins .figure-court.left {
  position: absolute; bottom: 25%; left: 20%; width: 24px; height: 52px;
  background: linear-gradient(180deg, #c08040 0%, #a06030 60%, #7a4020 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  animation: mcb-fig-left 5s ease-in-out infinite;
}
.scn-mock-courtship-begins .figure-court.right {
  position: absolute; bottom: 28%; right: 20%; width: 24px; height: 50px;
  background: linear-gradient(180deg, #6080c0 0%, #4060a0 60%, #204080 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  animation: mcb-fig-right 5s ease-in-out infinite 0.5s;
}
.scn-mock-courtship-begins .speech-bubble.bubble-a {
  position: absolute; top: 25%; left: 20%; width: 40px; height: 24px;
  background: #ffffff; border: 2px solid #a0a0a0; border-radius: 50%;
  filter: drop-shadow(2px 2px 4px rgba(0,0,0,0.1));
  animation: mcb-bubble 7s ease-in-out infinite;
}
.scn-mock-courtship-begins .speech-bubble.bubble-b {
  position: absolute; top: 30%; right: 18%; width: 36px; height: 20px;
  background: #ffffff; border: 2px solid #a0a0a0; border-radius: 50%;
  filter: drop-shadow(2px 2px 4px rgba(0,0,0,0.1));
  animation: mcb-bubble 7s ease-in-out infinite 2s;
}
.scn-mock-courtship-begins .sparkle.sparkle-a {
  position: absolute; top: 45%; left: 40%; width: 6px; height: 6px;
  background: #ffff80; border-radius: 50%;
  box-shadow: 0 0 8px 2px rgba(255,255,128,0.6);
  animation: mcb-sparkle 3s ease-in-out infinite;
}
.scn-mock-courtship-begins .sparkle.sparkle-b {
  position: absolute; top: 50%; right: 40%; width: 5px; height: 5px;
  background: #ffff80; border-radius: 50%;
  box-shadow: 0 0 8px 2px rgba(255,255,128,0.6);
  animation: mcb-sparkle 3s ease-in-out infinite 1.5s;
}
@keyframes mcb-ground { 0% { transform: scaleY(1); } 50% { transform: scaleY(1.02); } 100% { transform: scaleY(1); } }
@keyframes mcb-log { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(5px) rotate(2deg); } 50% { transform: translateX(10px) rotate(-2deg); } 75% { transform: translateX(5px) rotate(1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes mcb-fig-left { 0% { transform: translateY(0) rotate(-3deg); } 25% { transform: translateY(-4px) rotate(0deg); } 50% { transform: translateY(-2px) rotate(3deg); } 75% { transform: translateY(-5px) rotate(-1deg); } 100% { transform: translateY(0) rotate(-3deg); } }
@keyframes mcb-fig-right { 0% { transform: translateY(0) rotate(3deg); } 25% { transform: translateY(-3px) rotate(0deg); } 50% { transform: translateY(-5px) rotate(-3deg); } 75% { transform: translateY(-2px) rotate(2deg); } 100% { transform: translateY(0) rotate(3deg); } }
@keyframes mcb-bubble { 0% { transform: scale(0.8) translateY(0); opacity: 0.7; } 20% { transform: scale(1) translateY(-10px); opacity: 1; } 80% { transform: scale(1) translateY(-15px); opacity: 1; } 100% { transform: scale(0.6) translateY(0); opacity: 0.5; } }
@keyframes mcb-sparkle { 0% { transform: scale(0) rotate(0deg); } 30% { transform: scale(1.5) rotate(180deg); } 60% { transform: scale(1) rotate(360deg); } 100% { transform: scale(0) rotate(540deg); } }

/* orlando-visits-ganymede - funny cottage scene */
.scn-orlando-visits-ganymede {
  background:
    linear-gradient(180deg, #c8e8ff 0%, #a0d0e8 40%, #88bfd0 100%),
    radial-gradient(ellipse at 30% 100%, #b0d090 0%, transparent 70%);
}
.scn-orlando-visits-ganymede .sky-bg {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #e0f0ff 0%, #b0d0e8 100%);
  animation: ovg-sky 15s ease-in-out infinite alternate;
}
.scn-orlando-visits-ganymede .cottage {
  position: absolute; bottom: 20%; left: 50%; width: 120px; height: 80px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #c8a87a 0%, #a08050 100%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 0 -10px 20px rgba(200,180,140,0.3);
  animation: ovg-cottage 12s ease-in-out infinite;
}
.scn-orlando-visits-ganymede .door {
  position: absolute; bottom: 22%; left: 50%; width: 24px; height: 40px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #6a4a2a 0%, #4a2a0a 100%);
  border-radius: 20% 20% 10% 10%;
  animation: ovg-door 8s ease-in-out infinite;
}
.scn-orlando-visits-ganymede .window {
  position: absolute; bottom: 32%; left: 42%; width: 18px; height: 18px;
  background: radial-gradient(circle, #ffe080 0%, #c0a050 70%);
  border: 2px solid #5a3a1a;
  border-radius: 10%;
  box-shadow: 0 0 8px 2px rgba(255,224,128,0.5);
  animation: ovg-window 6s ease-in-out infinite alternate;
}
.scn-orlando-visits-ganymede .figure-outer {
  position: absolute; bottom: 25%; left: 25%; width: 22px; height: 48px;
  background: linear-gradient(180deg, #6080c0 0%, #4060a0 60%, #204080 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  animation: ovg-walk 10s ease-in-out infinite;
}
.scn-orlando-visits-ganymede .figure-inner {
  position: absolute; bottom: 22%; left: 55%; width: 20px; height: 44px;
  background: linear-gradient(180deg, #c08040 0%, #a06030 60%, #7a4020 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  animation: ovg-bob 7s ease-in-out infinite 1s;
}
.scn-orlando-visits-ganymede .chimney-smoke {
  position: absolute; top: 18%; left: 60%; width: 12px; height: 30px;
  background: radial-gradient(ellipse at 50% 100%, rgba(200,200,200,0.4) 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(4px);
  animation: ovg-smoke 15s linear infinite;
}
.scn-orlando-visits-ganymede .path {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #8a7a5a 0%, #6a5a3a 100%);
  border-radius: 30% 30% 0 0;
  animation: ovg-path 10s ease-in-out infinite alternate;
}
@keyframes ovg-sky { 0% { opacity: 0.7; } 50% { opacity: 1; } 100% { opacity: 0.8; } }
@keyframes ovg-cottage { 0% { transform: translateX(-50%) scaleY(1); } 25% { transform: translateX(-50%) scaleY(1.02); } 75% { transform: translateX(-50%) scaleY(0.98); } 100% { transform: translateX(-50%) scaleY(1); } }
@keyframes ovg-door { 0% { transform: translateX(-50%) rotateY(0deg); } 30% { transform: translateX(-50%) rotateY(45deg); } 70% { transform: translateX(-50%) rotateY(-10deg); } 100% { transform: translateX(-50%) rotateY(0deg); } }
@keyframes ovg-window { 0% { box-shadow: 0 0 4px 1px rgba(255,224,128,0.3); } 50% { box-shadow: 0 0 12px 4px rgba(255,224,128,0.7); } 100% { box-shadow: 0 0 4px 1px rgba(255,224,128,0.3); } }
@keyframes ovg-walk { 0% { transform: translateX(0) translateY(0) rotate(0deg); } 25% { transform: translateX(30px) translateY(-3px) rotate(3deg); } 50% { transform: translateX(60px) translateY(0) rotate(-2deg); } 75% { transform: translateX(90px) translateY(-2px) rotate(2deg); } 100% { transform: translateX(120px) translateY(0) rotate(0deg); } }
@keyframes ovg-bob { 0% { transform: translateY(0); } 30% { transform: translateY(-4px); } 60% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes ovg-smoke { 0% { transform: translateY(0) scale(1); opacity: 0.4; } 50% { transform: translateY(-40px) scale(2); opacity: 0.1; } 100% { transform: translateY(-80px) scale(3); opacity: 0; } }
@keyframes ovg-path { 0% { background-position: 0% 0%; } 50% { background-position: 20% 0%; } 100% { background-position: 0% 0%; } }

/* silvius-phebe-drama - tense sunlit with sharp contrasts */
.scn-silvius-phebe-drama {
  background:
    linear-gradient(135deg, #c8d8e0 0%, #8aa0b0 50%, #5a6a7a 100%),
    radial-gradient(circle at 80% 30%, #d0b070 0%, transparent 60%);
}
.scn-silvius-phebe-drama .sky-hard {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(180deg, #b0c8d8 0%, #90a8b8 100%);
  animation: spd-sky 5s ease-in-out infinite alternate;
}
.scn-silvius-phebe-drama .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #6a7a5a 0%, #4a5a3a 100%);
  clip-path: polygon(0% 20%, 20% 10%, 40% 30%, 60% 5%, 80% 25%, 100% 15%, 100% 100%, 0% 100%);
  animation: spd-ground 8s ease-in-out infinite;
}
.scn-silvius-phebe-drama .tree-angular {
  position: absolute; left: 15%; bottom: 0; width: 20px; height: 70%;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  clip-path: polygon(50% 0%, 80% 20%, 70% 40%, 90% 60%, 60% 80%, 70% 100%, 30% 100%, 40% 80%, 10% 60%, 30% 40%, 20% 20%);
  animation: spd-tree 10s ease-in-out infinite;
}
.scn-silvius-phebe-drama .figure-pleading {
  position: absolute; bottom: 20%; left: 30%; width: 22px; height: 50px;
  background: linear-gradient(180deg, #5a7a8a 0%, #3a5a6a 60%, #1a3a4a 100%);
  border-radius: 30% 30% 20% 20% / 40% 40% 20% 20%;
  transform: rotate(10deg);
  animation: spd-plead 4s ease-in-out infinite;
}
.scn-silvius-phebe-drama .figure-turning {
  position: absolute; bottom: 22%; right: 25%; width: 20px; height: 48px;
  background: linear-gradient(180deg, #8a6a5a 0%, #6a4a3a 60%, #4a2a1a 100%);
  border-radius: 30% 30% 20% 20% / 40% 40% 20% 20%;
  transform: rotate(-15deg);
  animation: spd-turn 4s ease-in-out infinite alternate;
}
.scn-silvius-phebe-drama .shadow-long {
  position: absolute; bottom: 18%; left: 20%; width: 80px; height: 12px;
  background: rgba(0,0,0,0.2);
  filter: blur(4px);
  animation: spd-shadow 6s ease-in-out infinite;
}
.scn-silvius-phebe-drama .thorns {
  position: absolute; bottom: 0; left: 60%; width: 30px; height: 50px;
  background: linear-gradient(180deg, #5a4a3a 0%, #2a1a0a 100%);
  clip-path: polygon(50% 0%, 70% 20%, 50% 40%, 80% 60%, 50% 80%, 60% 100%, 40% 100%, 50% 80%, 20% 60%, 50% 40%, 30% 20%);
  animation: spd-thorns 7s ease-in-out infinite;
}
.scn-silvius-phebe-drama .wind-line {
  position: absolute; top: 30%; right: -5%; width: 120%; height: 2px;
  background: linear-gradient(90deg, rgba(200,200,200,0) 0%, rgba(200,200,200,0.3) 50%, rgba(200,200,200,0) 100%);
  filter: blur(1px);
  animation: spd-wind 4s linear infinite;
}
@keyframes spd-sky { 0% { opacity: 0.5; filter: brightness(0.9); } 50% { opacity: 1; filter: brightness(1.1); } 100% { opacity: 0.6; filter: brightness(0.95); } }
@keyframes spd-ground { 0% { transform: translateY(0); } 50% { transform: translateY(3px); } 100% { transform: translateY(0); } }
@keyframes spd-tree { 0% { transform: rotate(0deg); } 30% { transform: rotate(3deg); } 60% { transform: rotate(-2deg); } 100% { transform: rotate(0deg); } }
@keyframes spd-plead { 0% { transform: rotate(10deg) translateY(0); } 30% { transform: rotate(15deg) translateY(-4px); } 60% { transform: rotate(5deg) translateY(2px); } 100% { transform: rotate(10deg) translateY(0); } }
@keyframes spd-turn { 0% { transform: rotate(-15deg) translateX(0); } 50% { transform: rotate(-25deg) translateX(-10px); } 100% { transform: rotate(-15deg) translateX(0); } }
@keyframes spd-shadow { 0% { transform: scaleX(1); opacity: 0.2; } 50% { transform: scaleX(1.2); opacity: 0.4; } 100% { transform: scaleX(1); opacity: 0.2; } }
@keyframes spd-thorns { 0% { transform: scaleY(1); } 50% { transform: scaleY(1.1); } 100% { transform: scaleY(1); } }
@keyframes spd-wind { 0% { transform: translateX(0); opacity: 0; } 20% { opacity: 1; } 80% { opacity: 1; } 100% { transform: translateX(-100%); opacity: 0; } }

.scn-jaques-and-rosalind-banter {
  background: linear-gradient(180deg, #87ceeb 0%, #c1e0f0 40%, #f0e6c0 70%, #d4c9a0 100%),
              radial-gradient(ellipse at 60% 30%, rgba(255,230,150,0.3) 0%, transparent 60%);
}
.scn-jaques-and-rosalind-banter .sky {
  position: absolute; inset: 0 0 50% 0; background: linear-gradient(180deg, #8fcbe5 0%, #b2d8e8 40%, transparent 100%);
  animation: jrb-sky 12s ease-in-out infinite alternate;
}
.scn-jaques-and-rosalind-banter .trees-bg {
  position: absolute; inset: 0 0 30% 0; background: linear-gradient(180deg, #3a5a3a 0%, #2a4a2a 100%);
  border-radius: 0 0 40% 40% / 0 0 60% 60%; filter: blur(8px);
  animation: jrb-trees 20s ease-in-out infinite alternate;
}
.scn-jaques-and-rosalind-banter .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #7a9a5a 0%, #4a6a3a 50%, #2a4a2a 100%);
  border-radius: 60% 40% 0 0 / 30% 20% 0 0;
}
.scn-jaques-and-rosalind-banter .figure-j {
  position: absolute; bottom: 28%; left: 30%; width: 22px; height: 50px;
  background: linear-gradient(180deg, #2a2a1a 0%, #0a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: jrb-figure-j 3s ease-in-out infinite;
}
.scn-jaques-and-rosalind-banter .figure-r {
  position: absolute; bottom: 28%; left: 55%; width: 18px; height: 44px;
  background: linear-gradient(180deg, #3a2a2a 0%, #1a1a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: jrb-figure-r 3.5s ease-in-out infinite;
}
.scn-jaques-and-rosalind-banter .dapple {
  position: absolute; width: 30px; height: 30px;
  background: radial-gradient(circle, rgba(255,240,180,0.6) 0%, transparent 70%);
  border-radius: 50%; filter: blur(4px);
  animation: jrb-dapple 5s ease-in-out infinite alternate;
}
.scn-jaques-and-rosalind-banter .dapple-1 { bottom: 35%; left: 20%; animation-delay: 0s; }
.scn-jaques-and-rosalind-banter .dapple-2 { bottom: 40%; right: 25%; width: 20px; height: 20px; animation-delay: 2s; }
.scn-jaques-and-rosalind-banter .leaf {
  position: absolute; top: 15%; left: 50%; width: 10px; height: 8px;
  background: #6a8a3a; border-radius: 40% 0 40% 0;
  animation: jrb-leaf 6s ease-in-out infinite;
}
.scn-jaques-and-rosalind-banter .light-ray {
  position: absolute; top: 0; left: 40%; width: 60px; height: 100%;
  background: linear-gradient(180deg, rgba(255,250,220,0.4) 0%, transparent 80%);
  transform: skewX(-10deg); filter: blur(10px);
  animation: jrb-ray 8s ease-in-out infinite alternate;
}
@keyframes jrb-sky { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.7; } }
@keyframes jrb-trees { 0% { transform: scaleY(1); } 50% { transform: scaleY(1.02); } 100% { transform: scaleY(0.98); } }
@keyframes jrb-figure-j { 0% { transform: translateX(0) translateY(0) rotate(-1deg); } 25% { transform: translateX(2px) translateY(-1px) rotate(1deg); } 50% { transform: translateX(4px) translateY(0) rotate(-1deg); } 75% { transform: translateX(2px) translateY(-1px) rotate(1deg); } 100% { transform: translateX(0) translateY(0) rotate(0); } }
@keyframes jrb-figure-r { 0% { transform: translateX(0) translateY(0) rotate(1deg); } 25% { transform: translateX(-2px) translateY(-1px) rotate(-1deg); } 50% { transform: translateX(-4px) translateY(0) rotate(1deg); } 75% { transform: translateX(-2px) translateY(-1px) rotate(-1deg); } 100% { transform: translateX(0) translateY(0) rotate(0); } }
@keyframes jrb-dapple { 0% { opacity: 0.3; transform: scale(0.8); } 50% { opacity: 0.8; transform: scale(1.2); } 100% { opacity: 0.4; transform: scale(0.9); } }
@keyframes jrb-leaf { 0% { transform: translate(0, 0) rotate(0deg); } 50% { transform: translate(-20px, 60px) rotate(90deg); } 100% { transform: translate(-40px, 120px) rotate(180deg); } }
@keyframes jrb-ray { 0% { opacity: 0.2; transform: skewX(-10deg) translateX(0); } 50% { opacity: 0.6; transform: skewX(-10deg) translateX(10px); } 100% { opacity: 0.3; transform: skewX(-10deg) translateX(-5px); } }

.scn-mock-wedding-ceremony {
  background: linear-gradient(180deg, #f0d8a0 0%, #fae6c0 40%, #c8b080 70%, #a08060 100%),
              radial-gradient(ellipse at 50% 20%, rgba(255,220,150,0.5) 0%, transparent 70%);
}
.scn-mock-wedding-ceremony .sky-warm {
  position: absolute; inset: 0 0 50% 0; background: linear-gradient(180deg, #f8e0b0 0%, #fce8c6 40%, transparent 100%);
  animation: mwc-sky 15s ease-in-out infinite alternate;
}
.scn-mock-wedding-ceremony .arch {
  position: absolute; top: 10%; left: 20%; width: 60%; height: 30%;
  border: 6px solid #a08060; border-bottom: none; border-radius: 50% 50% 0 0;
  background: linear-gradient(180deg, #8a6a4a 0%, #c0a070 100%);
  box-shadow: 0 8px 20px rgba(0,0,0,0.3);
  animation: mwc-arch 10s ease-in-out infinite alternate;
}
.scn-mock-wedding-ceremony .figure-orlando {
  position: absolute; bottom: 25%; left: 35%; width: 20px; height: 48px;
  background: linear-gradient(180deg, #5a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: mwc-figure-m 4s ease-in-out infinite;
}
.scn-mock-wedding-ceremony .figure-rosalind {
  position: absolute; bottom: 25%; left: 50%; width: 18px; height: 44px;
  background: linear-gradient(180deg, #3a2a2a 0%, #1a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: mwc-figure-f 4.5s ease-in-out infinite;
}
.scn-mock-wedding-ceremony .figure-celia {
  position: absolute; bottom: 28%; right: 18%; width: 16px; height: 40px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: mwc-figure-c 6s ease-in-out infinite alternate;
}
.scn-mock-wedding-ceremony .flowers {
  position: absolute; bottom: 35%; left: 10%; width: 40px; height: 20px;
  background: radial-gradient(circle at 30% 50%, #d09060 0%, #b08040 40%, transparent 60%);
  border-radius: 50%; filter: blur(2px);
  animation: mwc-flowers 7s ease-in-out infinite alternate;
}
.scn-mock-wedding-ceremony .sunburst {
  position: absolute; top: 5%; left: 40%; width: 120px; height: 120px;
  background: radial-gradient(circle, rgba(255,220,150,0.6) 0%, transparent 70%);
  border-radius: 50%; filter: blur(15px);
  animation: mwc-sun 12s ease-in-out infinite alternate;
}
.scn-mock-wedding-ceremony .garland {
  position: absolute; top: 28%; left: 30%; width: 80px; height: 10px;
  background: linear-gradient(90deg, #a08060, #c08050, #e0a060, #c08050, #a08060);
  border-radius: 50%;
  animation: mwc-garland 8s ease-in-out infinite alternate;
}
@keyframes mwc-sky { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes mwc-arch { 0% { transform: scaleY(1); } 50% { transform: scaleY(1.03); } 100% { transform: scaleY(0.97); } }
@keyframes mwc-figure-m { 0% { transform: translateX(0) translateY(0) rotate(0); } 25% { transform: translateX(2px) translateY(-1px) rotate(1deg); } 50% { transform: translateX(0) translateY(-2px) rotate(0); } 75% { transform: translateX(-2px) translateY(-1px) rotate(-1deg); } 100% { transform: translateX(0) translateY(0) rotate(0); } }
@keyframes mwc-figure-f { 0% { transform: translateX(0) translateY(0) rotate(1deg); } 25% { transform: translateX(-1px) translateY(-2px) rotate(0); } 50% { transform: translateX(0) translateY(-1px) rotate(-1deg); } 75% { transform: translateX(1px) translateY(-2px) rotate(0); } 100% { transform: translateX(0) translateY(0) rotate(1deg); } }
@keyframes mwc-figure-c { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(1px); } }
@keyframes mwc-flowers { 0% { transform: scale(0.9); opacity: 0.7; } 50% { transform: scale(1.1); opacity: 1; } 100% { transform: scale(0.95); opacity: 0.8; } }
@keyframes mwc-sun { 0% { transform: scale(1) rotate(0deg); } 50% { transform: scale(1.05) rotate(5deg); } 100% { transform: scale(0.95) rotate(-5deg); } }
@keyframes mwc-garland { 0% { transform: translateX(0); } 50% { transform: translateX(10px); } 100% { transform: translateX(-5px); } }

.scn-silvius-brings-letter {
  background: linear-gradient(180deg, #b0c8d8 0%, #d0d8d0 30%, #a0b890 60%, #607050 100%),
              radial-gradient(ellipse at 30% 40%, rgba(200,200,180,0.3) 0%, transparent 60%);
}
.scn-silvius-brings-letter .sky-tense {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #b8c8d0 0%, #d0d8c8 40%, transparent 100%);
  animation: sbl-sky 10s ease-in-out infinite alternate;
}
.scn-silvius-brings-letter .ground-tense {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #7a9060 0%, #4a6040 40%, #2a3820 100%);
  border-radius: 40% 60% 0 0 / 20% 30% 0 0;
}
.scn-silvius-brings-letter .trunk {
  position: absolute; bottom: 20%; left: 50%; width: 20px; height: 70%;
  background: linear-gradient(90deg, #5a4a2a 0%, #7a6a4a 30%, #5a4a2a 100%);
  border-radius: 10% 10% 0 0;
  transform: translateX(-50%);
}
.scn-silvius-brings-letter .figure-silvius {
  position: absolute; bottom: 28%; left: 25%; width: 18px; height: 46px;
  background: linear-gradient(180deg, #4a3a2a 0%, #1a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: sbl-figure-s 2.5s ease-in-out infinite;
}
.scn-silvius-brings-letter .figure-rosalind-letter {
  position: absolute; bottom: 28%; left: 45%; width: 18px; height: 44px;
  background: linear-gradient(180deg, #3a2a2a 0%, #1a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: sbl-figure-r 3s ease-in-out infinite;
}
.scn-silvius-brings-letter .figure-celia-watch {
  position: absolute; bottom: 30%; right: 20%; width: 16px; height: 40px;
  background: linear-gradient(180deg, #4a3a3a 0%, #2a1a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: sbl-figure-c 4s ease-in-out infinite alternate;
}
.scn-silvius-brings-letter .letter {
  position: absolute; bottom: 35%; left: 35%; width: 22px; height: 12px;
  background: #e0d0a0; border-radius: 2px; box-shadow: 2px 2px 4px rgba(0,0,0,0.4);
  animation: sbl-letter 2.5s ease-in-out infinite;
}
.scn-silvius-brings-letter .shard {
  position: absolute; width: 4px; height: 4px;
  background: #c0553a; border-radius: 50%;
  animation: sbl-shard 1.5s ease-in-out infinite alternate;
}
.scn-silvius-brings-letter .shard-1 { bottom: 30%; left: 38%; animation-delay: 0s; }
.scn-silvius-brings-letter .shard-2 { bottom: 33%; left: 42%; width: 3px; height: 3px; animation-delay: 0.7s; }
@keyframes sbl-sky { 0% { opacity: 0.85; } 50% { opacity: 1; } 100% { opacity: 0.75; } }
@keyframes sbl-figure-s { 0% { transform: translateX(0) rotate(0); } 25% { transform: translateX(3px) rotate(2deg); } 50% { transform: translateX(0) rotate(0); } 75% { transform: translateX(2px) rotate(-1deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes sbl-figure-r { 0% { transform: translateX(0) translateY(0); } 25% { transform: translateX(-2px) translateY(-1px); } 50% { transform: translateX(0) translateY(0); } 75% { transform: translateX(-1px) translateY(1px); } 100% { transform: translateX(0) translateY(0); } }
@keyframes sbl-figure-c { 0% { transform: translateY(0) scaleY(1); } 50% { transform: translateY(-2px) scaleY(1.02); } 100% { transform: translateY(1px) scaleY(0.98); } }
@keyframes sbl-letter { 0% { transform: rotate(0deg) translateY(0); } 25% { transform: rotate(2deg) translateY(-2px); } 50% { transform: rotate(0deg) translateY(0); } 75% { transform: rotate(-2deg) translateY(2px); } 100% { transform: rotate(0deg) translateY(0); } }
@keyframes sbl-shard { 0% { transform: translate(0,0) scale(1); opacity: 0.8; } 50% { transform: translate(-5px, -5px) scale(1.5); opacity: 0.4; } 100% { transform: translate(0,0) scale(1); opacity: 0.8; } }

.scn-olive-arrives-with-wound {
  background: linear-gradient(180deg, #c0d0d0 0%, #d8d8c0 30%, #b0b890 60%, #808060 100%),
              radial-gradient(ellipse at 50% 80%, rgba(180,160,120,0.3) 0%, transparent 60%);
}
.scn-olive-arrives-with-wound .sky-tense {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #c8d4d4 0%, #dcdcc8 40%, transparent 100%);
  animation: oaw-sky 12s ease-in-out infinite alternate;
}
.scn-olive-arrives-with-wound .ground-tense {
  position: absolute; bottom: 0; left: 0; right: 0; height: 55%;
  background: linear-gradient(180deg, #7a8a5a 0%, #5a6a3a 40%, #3a4a2a 100%);
  border-radius: 50% 50% 0 0 / 30% 30% 0 0;
}
.scn-olive-arrives-with-wound .figure-oliver {
  position: absolute; bottom: 25%; left: 30%; width: 22px; height: 50px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: oaw-figure-o 3s ease-in-out infinite;
}
.scn-olive-arrives-with-wound .napkin {
  position: absolute; bottom: 32%; left: 38%; width: 30px; height: 20px;
  background: linear-gradient(135deg, #e0d8c8 0%, #c0b0a0 50%, #a0461a 70%, #c0553d 100%);
  border-radius: 4px 4px 8px 8px; box-shadow: 2px 2px 6px rgba(0,0,0,0.5);
  transform: rotate(15deg);
  animation: oaw-napkin 4s ease-in-out infinite;
}
.scn-olive-arrives-with-wound .figure-rosalind-faint {
  position: absolute; bottom: 15%; left: 48%; width: 18px; height: 44px;
  background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: oaw-faint 2s ease-in-out infinite alternate;
}
.scn-olive-arrives-with-wound .figure-celia-catch {
  position: absolute; bottom: 20%; right: 25%; width: 16px; height: 42px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: oaw-catch 3s ease-in-out infinite;
}
.scn-olive-arrives-with-wound .roots {
  position: absolute; bottom: 5%; left: 10%; width: 100px; height: 20px;
  background: linear-gradient(180deg, #5a4a2a 0%, #3a2a0a 100%);
  border-radius: 50% 50% 30% 30%; filter: blur(2px);
  animation: oaw-roots 15s ease-in-out infinite alternate;
}
.scn-olive-arrives-with-wound .sweat {
  position: absolute; bottom: 30%; left: 50%; width: 4px; height: 4px;
  background: #b0d0d0; border-radius: 50%;
  animation: oaw-sweat 1s ease-in-out infinite alternate;
}
@keyframes oaw-sky { 0% { opacity: 0.85; } 50% { opacity: 1; } 100% { opacity: 0.75; } }
@keyframes oaw-figure-o { 0% { transform: translateX(0) rotate(0); } 25% { transform: translateX(2px) rotate(1deg); } 50% { transform: translateX(0) rotate(0); } 75% { transform: translateX(-2px) rotate(-1deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes oaw-napkin { 0% { transform: rotate(15deg) translateY(0); } 50% { transform: rotate(20deg) translateY(-3px); } 100% { transform: rotate(15deg) translateY(0); } }
@keyframes oaw-faint { 0% { transform: rotate(0deg) scaleY(1); } 50% { transform: rotate(-10deg) scaleY(0.9); } 100% { transform: rotate(0deg) scaleY(1); } }
@keyframes oaw-catch { 0% { transform: translateX(0) rotate(0); } 25% { transform: translateX(2px) rotate(2deg); } 50% { transform: translateX(0) rotate(0); } 75% { transform: translateX(-1px) rotate(-2deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes oaw-roots { 0% { transform: scaleX(1); } 50% { transform: scaleX(1.05); } 100% { transform: scaleX(0.95); } }
@keyframes oaw-sweat { 0% { transform: translate(0,0) scale(1); opacity: 0.6; } 50% { transform: translate(3px,-3px) scale(1.5); opacity: 1; } 100% { transform: translate(0,0) scale(1); opacity: 0.6; } }

/* ===== Scene: orlando-wrestles-charles (tense, sunlit) ===== */
.scn-orlando-wrestles-charles {
  background: linear-gradient(180deg, #f9d99c 0%, #e8b56a 30%, #c4873c 70%, #8a5a22 100%),
              radial-gradient(ellipse at 50% 80%, #e8b56a 0%, transparent 60%);
}
.scn-orlando-wrestles-charles .sky {
  position: absolute; inset: 0 0 55% 0;
  background: linear-gradient(180deg, #ffeeb0 0%, #f9d99c 60%, transparent 100%);
  animation: owc-sky 10s ease-in-out infinite alternate;
}
.scn-orlando-wrestles-charles .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 55%;
  background: linear-gradient(0deg, #7a5a2a 0%, #a87a3a 50%, #c8984b 100%);
  border-radius: 40% 60% 0 0 / 20% 30% 0 0;
  animation: owc-ground 3s ease-in-out infinite;
}
.scn-orlando-wrestles-charles .crowd-left {
  position: absolute; bottom: 30%; left: 0; width: 25%; height: 50%;
  background: linear-gradient(180deg, #4a3520 0%, #2a1a0a 100%);
  border-radius: 0 60% 40% 0 / 0 80% 50% 0;
  filter: blur(2px);
  animation: owc-crowd 8s ease-in-out infinite alternate;
}
.scn-orlando-wrestles-charles .crowd-right {
  position: absolute; bottom: 30%; right: 0; width: 25%; height: 50%;
  background: linear-gradient(180deg, #4a3520 0%, #2a1a0a 100%);
  border-radius: 60% 0 0 40% / 80% 0 0 50%;
  filter: blur(2px);
  animation: owc-crowd 8s ease-in-out infinite alternate-reverse;
}
.scn-orlando-wrestles-charles .orlando {
  position: absolute; bottom: 22%; left: 40%; width: 22px; height: 50px;
  background: linear-gradient(180deg, #5c3a1a 0%, #3a2210 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: owc-orlando 0.6s ease-in-out infinite;
}
.scn-orlando-wrestles-charles .charles {
  position: absolute; bottom: 22%; left: 52%; width: 26px; height: 55px;
  background: linear-gradient(180deg, #4a3018 0%, #2a1a0a 100%);
  border-radius: 50% 40% 30% 30% / 60% 70% 40% 30%;
  transform-origin: bottom center;
  animation: owc-charles 0.6s ease-in-out infinite;
}
.scn-orlando-wrestles-charles .dust.one {
  position: absolute; bottom: 18%; left: 45%; width: 14px; height: 10px;
  background: radial-gradient(circle, #d4a86a 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(3px);
  animation: owc-dust 1.2s ease-out infinite;
}
.scn-orlando-wrestles-charles .dust.two {
  left: 50%; width: 10px; height: 8px;
  animation-delay: 0.6s;
}
@keyframes owc-sky { 0% { opacity: 0.85 } 50% { opacity: 1 } 100% { opacity: 0.8 } }
@keyframes owc-ground { 0% { transform: translateY(0) } 25% { transform: translateY(1px) } 50% { transform: translateY(0) scale(1.002) } 75% { transform: translateY(-1px) } 100% { transform: translateY(0) } }
@keyframes owc-crowd { 0% { transform: translateX(0) } 50% { transform: translateX(2px) scaleX(1.02) } 100% { transform: translateX(0) } }
@keyframes owc-orlando { 0% { transform: translateY(0) rotate(-5deg) scale(1) } 25% { transform: translateY(-2px) rotate(2deg) scale(1.03) } 50% { transform: translateY(0) rotate(-3deg) scale(0.98) } 75% { transform: translateY(-1px) rotate(1deg) scale(1.01) } 100% { transform: translateY(0) rotate(-5deg) scale(1) } }
@keyframes owc-charles { 0% { transform: translateY(0) rotate(4deg) scale(1) } 25% { transform: translateY(1px) rotate(-1deg) scale(0.98) } 50% { transform: translateY(0) rotate(3deg) scale(1.02) } 75% { transform: translateY(-1px) rotate(0deg) scale(1) } 100% { transform: translateY(0) rotate(4deg) scale(1) } }
@keyframes owc-dust { 0% { opacity: 0.8; transform: scale(1) } 50% { opacity: 0.4; transform: scale(1.5) translateY(-4px) } 100% { opacity: 0; transform: scale(2) translateY(-8px) } }

/* ===== Scene: rosalind-falls-in-love (warm, sunlit) ===== */
.scn-rosalind-falls-in-love {
  background: linear-gradient(180deg, #ffdbb5 0%, #fbb87a 40%, #d68a4a 70%, #9a5c28 100%),
              radial-gradient(ellipse at 50% 100%, #fbb87a 0%, transparent 60%);
}
.scn-rosalind-falls-in-love .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #ffe4c4 0%, #fdd9a8 50%, #fcc58a 100%);
  animation: rfl-sky 12s ease-in-out infinite alternate;
}
.scn-rosalind-falls-in-love .trees {
  position: absolute; bottom: 25%; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #5a6a3a 0%, #2a3a1a 100%);
  border-radius: 60% 40% 0 0 / 80% 70% 0 0;
  filter: blur(6px);
  animation: rfl-trees 20s ease-in-out infinite alternate;
}
.scn-rosalind-falls-in-love .rosalind {
  position: absolute; bottom: 18%; left: 35%; width: 20px; height: 55px;
  background: linear-gradient(180deg, #d4a06a 0%, #a87a4a 100%);
  border-radius: 50% 60% 30% 40% / 70% 80% 40% 50%;
  transform-origin: bottom center;
  animation: rfl-figure 7s ease-in-out infinite;
}
.scn-rosalind-falls-in-love .orlando {
  position: absolute; bottom: 18%; left: 52%; width: 22px; height: 58px;
  background: linear-gradient(180deg, #8a6a3a 0%, #5a4220 100%);
  border-radius: 60% 50% 40% 30% / 80% 70% 50% 40%;
  transform-origin: bottom center;
  animation: rfl-figure 7s ease-in-out infinite reverse;
}
.scn-rosalind-falls-in-love .chain {
  position: absolute; bottom: 30%; left: 50%; width: 30px; height: 4px;
  background: radial-gradient(circle, #ffd080 0%, #b08030 50%, transparent 100%);
  margin-left: -15px;
  border-radius: 50%;
  filter: blur(1px);
  animation: rfl-chain 4s ease-in-out infinite alternate;
}
.scn-rosalind-falls-in-love .sunbeams {
  position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(135deg, rgba(255,200,120,0.4) 0%, transparent 30%, transparent 70%, rgba(255,200,120,0.2) 100%);
  animation: rfl-beams 6s ease-in-out infinite alternate;
}
.scn-rosalind-falls-in-love .leaves {
  position: absolute; top: 10%; left: 0; width: 100%; height: 100%;
  background-image: radial-gradient(circle at 20% 30%, #8a9a5a 2px, transparent 2px),
                    radial-gradient(circle at 70% 15%, #7a8a4a 2px, transparent 2px),
                    radial-gradient(circle at 40% 50%, #6a7a3a 2px, transparent 2px);
  background-size: 30px 30px;
  background-repeat: no-repeat;
  animation: rfl-leaves 30s linear infinite;
}
@keyframes rfl-sky { 0% { opacity: 0.9 } 50% { opacity: 1 } 100% { opacity: 0.85 } }
@keyframes rfl-trees { 0% { transform: translateY(0) scale(1) } 50% { transform: translateY(-4px) scale(1.01) } 100% { transform: translateY(2px) scale(0.99) } }
@keyframes rfl-figure { 0% { transform: translateY(0) rotate(-1deg) } 50% { transform: translateY(-3px) rotate(1deg) } 100% { transform: translateY(0) rotate(-1deg) } }
@keyframes rfl-chain { 0% { opacity: 0.6; box-shadow: 0 0 8px 2px #b08030 } 50% { opacity: 1; box-shadow: 0 0 16px 6px #f0c060 } 100% { opacity: 0.7; box-shadow: 0 0 10px 3px #b08030 } }
@keyframes rfl-beams { 0% { opacity: 0.3; transform: rotate(0deg) } 50% { opacity: 0.6; transform: rotate(2deg) } 100% { opacity: 0.4; transform: rotate(-1deg) } }
@keyframes rfl-leaves { 0% { background-position: 0 0, 0 0, 0 0 } 100% { background-position: 60px 60px, -40px 30px, 20px 90px } }

/* ===== Scene: duke-frederick-banishes-rosalind (dark, bright-interior) ===== */
.scn-duke-frederick-banishes-rosalind {
  background: linear-gradient(180deg, #1a1a2e 0%, #2a2040 40%, #1a1a2e 100%),
              radial-gradient(ellipse at 50% 100%, #3a3050 0%, transparent 70%);
}
.scn-duke-frederick-banishes-rosalind .bg-wall {
  position: absolute; inset: 0 0 20% 0;
  background: linear-gradient(180deg, #3a3850 0%, #2a2840 60%, #1a1a2e 100%);
  box-shadow: inset 0 8px 30px rgba(0,0,0,0.5);
  animation: dfb-wall 15s ease-in-out infinite alternate;
}
.scn-duke-frederick-banishes-rosalind .bg-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: linear-gradient(0deg, #1a1a2e 0%, #2a2840 100%);
  box-shadow: inset 0 -4px 20px rgba(0,0,0,0.6);
  animation: dfb-floor 10s ease-in-out infinite alternate;
}
.scn-duke-frederick-banishes-rosalind .throne {
  position: absolute; bottom: 15%; left: 50%; transform: translateX(-50%); width: 70px; height: 60px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 8% 8% 4% 4%;
  box-shadow: 0 4px 15px rgba(0,0,0,0.7);
  animation: dfb-throne 8s ease-in-out infinite alternate;
}
.scn-duke-frederick-banishes-rosalind .duke-fred {
  position: absolute; bottom: 18%; left: 50%; transform: translateX(-50%); width: 32px; height: 55px;
  background: linear-gradient(180deg, #5a4230 0%, #3a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 40% 40%;
  box-shadow: inset 0 -2px 4px #6a5a4a;
  animation: dfb-duke 4s ease-in-out infinite;
}
.scn-duke-frederick-banishes-rosalind .rosalind {
  position: absolute; bottom: 8%; left: 38%; width: 20px; height: 60px;
  background: linear-gradient(180deg, #3a2a5a 0%, #2a1a40 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 50% 50%;
  transform-origin: bottom center;
  animation: dfb-rosalind 6s ease-in-out infinite;
}
.scn-duke-frederick-banishes-rosalind .celia {
  position: absolute; bottom: 10%; left: 55%; width: 18px; height: 58px;
  background: linear-gradient(180deg, #4a3a5a 0%, #2a1a3a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: dfb-celia 5s ease-in-out infinite;
}
.scn-duke-frederick-banishes-rosalind .guard {
  position: absolute; bottom: 10%; left: 68%; width: 24px; height: 65px;
  background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: dfb-guard 10s ease-in-out infinite alternate;
}
.scn-duke-frederick-banishes-rosalind .torchlight {
  position: absolute; inset: 0; pointer-events: none;
  background: radial-gradient(ellipse at 50% 0%, rgba(200,140,60,0.3) 0%, transparent 70%);
  animation: dfb-torch 2s ease-in-out infinite alternate;
}
@keyframes dfb-wall { 0% { opacity: 0.8 } 50% { opacity: 1 } 100% { opacity: 0.85 } }
@keyframes dfb-floor { 0% { transform: translateY(0) } 50% { transform: translateY(1px) } 100% { transform: translateY(0) } }
@keyframes dfb-throne { 0% { transform: translateX(-50%) scale(1) } 50% { transform: translateX(-50%) scale(1.01) } 100% { transform: translateX(-50%) scale(0.98) } }
@keyframes dfb-duke { 0% { transform: translateX(-50%) rotate(0deg) } 25% { transform: translateX(-50%) rotate(2deg) } 50% { transform: translateX(-50%) rotate(-1deg) } 75% { transform: translateX(-50%) rotate(3deg) } 100% { transform: translateX(-50%) rotate(0deg) } }
@keyframes dfb-rosalind { 0% { transform: translateY(0) rotate(-2deg) scale(1) } 30% { transform: translateY(1px) rotate(1deg) scale(0.98) } 60% { transform: translateY(-3px) rotate(-3deg) scale(1.02) } 100% { transform: translateY(0) rotate(-2deg) scale(1) } }
@keyframes dfb-celia { 0% { transform: translateY(0) rotate(1deg) } 50% { transform: translateY(-2px) rotate(-1deg) } 100% { transform: translateY(0) rotate(1deg) } }
@keyframes dfb-guard { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes dfb-torch { 0% { opacity: 0.3 } 50% { opacity: 0.7 } 100% { opacity: 0.4 } }

/* ===== Scene: duke-senior-in-forest (calm, sunlit) ===== */
.scn-duke-senior-in-forest {
  background: linear-gradient(180deg, #c8d8b0 0%, #8aa86a 40%, #5a7a3a 70%, #3a5a22 100%),
              radial-gradient(ellipse at 50% 100%, #8aa86a 0%, transparent 60%);
}
.scn-duke-senior-in-forest .sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #d4e4c4 0%, #b8c898 50%, #8aa86a 100%);
  animation: dsf-sky 20s ease-in-out infinite alternate;
}
.scn-duke-senior-in-forest .trees-distant {
  position: absolute; bottom: 30%; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #4a6a3a 0%, #2a4a1a 100%);
  border-radius: 30% 70% 0 0 / 60% 80% 0 0;
  filter: blur(8px);
  animation: dsf-trees-distant 25s ease-in-out infinite alternate;
}
.scn-duke-senior-in-forest .tree-foreground {
  position: absolute; bottom: 0; left: 10%; width: 40px; height: 100%;
  background: linear-gradient(90deg, #5a4a3a 0%, #3a2a1a 30%, #5a4a3a 60%, #3a2a1a 100%);
  border-radius: 20% 20% 0 0;
  box-shadow: inset 0 0 20px rgba(0,0,0,0.4);
  animation: dsf-tree-fore 30s ease-in-out infinite alternate;
}
.scn-duke-senior-in-forest .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(0deg, #3a6a2a 0%, #5a8a4a 50%, #7aaa6a 100%);
  border-radius: 50% 50% 0 0 / 30% 30% 0 0;
  animation: dsf-ground 12s ease-in-out infinite alternate;
}
.scn-duke-senior-in-forest .duke-senior {
  position: absolute; bottom: 15%; left: 25%; width: 30px; height: 50px;
  background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%);
  border-radius: 50% 50% 30% 30% / 70% 70% 40% 40%;
  transform-origin: bottom center;
  animation: dsf-duke 9s ease-in-out infinite;
}
.scn-duke-senior-in-forest .jaques {
  position: absolute; bottom: 18%; left: 55%; width: 24px; height: 55px;
  background: linear-gradient(180deg, #5a5040 0%, #3a3020 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 50% 50%;
  transform-origin: bottom center;
  animation: dsf-jaques 8s ease-in-out infinite;
}
.scn-duke-senior-in-forest .stag {
  position: absolute; bottom: 8%; left: 68%; width: 30px; height: 25px;
  background: radial-gradient(ellipse at 50% 50%, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: scale(0.8) rotate(5deg);
  animation: dsf-stag 6s ease-in-out infinite alternate;
}
.scn-duke-senior-in-forest .leaves {
  position: absolute; top: 10%; left: 0; width: 100%; height: 100%;
  pointer-events: none;
  background-image: radial-gradient(circle at 10% 20%, #6a8a4a 3px, transparent 3px),
                    radial-gradient(circle at 85% 40%, #8aaa6a 2px, transparent 2px),
                    radial-gradient(circle at 30% 70%, #5a7a3a 2px, transparent 2px);
  background-size: 40px 40px;
  background-repeat: no-repeat;
  animation: dsf-leaves 40s linear infinite;
}
@keyframes dsf-sky { 0% { opacity: 0.9 } 50% { opacity: 1 } 100% { opacity: 0.85 } }
@keyframes dsf-trees-distant { 0% { transform: translateY(0) scale(1) } 50% { transform: translateY(-3px) scale(1.01) } 100% { transform: translateY(2px) scale(0.99) } }
@keyframes dsf-tree-fore { 0% { transform: rotate(-0.5deg) } 50% { transform: rotate(0.5deg) } 100% { transform: rotate(-0.5deg) } }
@keyframes dsf-ground { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes dsf-duke { 0% { transform: translateY(0) rotate(-1deg) } 50% { transform: translateY(-1px) rotate(1deg) } 100% { transform: translateY(0) rotate(-1deg) } }
@keyframes dsf-jaques { 0% { transform: translateY(0) rotate(1deg) } 25% { transform: translateY(-1px) rotate(-2deg) scale(1.01) } 50% { transform: translateY(0) rotate(0deg) } 75% { transform: translateY(-2px) rotate(2deg) scale(0.98) } 100% { transform: translateY(0) rotate(1deg) } }
@keyframes dsf-stag { 0% { transform: scale(0.8) rotate(5deg) translateY(0) } 50% { transform: scale(0.82) rotate(4deg) translateY(1px) } 100% { transform: scale(0.8) rotate(5deg) translateY(0) } }
@keyframes dsf-leaves { 0% { background-position: 0 0, 0 0, 0 0 } 100% { background-position: 80px 60px, -40px 30px, 60px 120px } }
/* end per-scene blocks */
