/* 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-silvia-rejects-proteus {
  background: linear-gradient(180deg, #8a4a3a 0%, #4a2a2a 30%, #1a1a2e 70%, #0e0e1a 100%),
              radial-gradient(ellipse at 30% 20%, #c86040 0%, transparent 60%);
}
.scn-silvia-rejects-proteus .sky-glow {
  position: absolute; inset: 0; 
  background: linear-gradient(180deg, rgba(200,90,60,.35) 0%, transparent 50%);
  animation: si1-skyglow 8s ease-in-out infinite alternate;
}
.scn-silvia-rejects-proteus .balcony-wall {
  position: absolute; bottom: 30%; left: 25%; width: 50%; height: 40%;
  background: linear-gradient(180deg, #3a2a2a 0%, #1a1212 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: inset 0 4px 12px rgba(0,0,0,.6);
}
.scn-silvia-rejects-proteus .window-arch {
  position: absolute; bottom: 50%; left: 40%; width: 20%; height: 25%;
  background: radial-gradient(ellipse at 50% 100%, #2a1a1a 0%, #0a0a0a 100%);
  border-radius: 50% 50% 0 0;
  box-shadow: inset 0 0 20px rgba(0,0,0,.7);
}
.scn-silvia-rejects-proteus .silvia-figure {
  position: absolute; bottom: 53%; left: 45%; width: 10%; height: 18%;
  background: linear-gradient(180deg, #1c121c 0%, #0a0a0e 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: si1-silvia 4s ease-in-out infinite;
}
.scn-silvia-rejects-proteus .proteus-figure {
  position: absolute; bottom: 16%; left: 42%; width: 9%; height: 20%;
  background: linear-gradient(180deg, #2a1a1a 0%, #0e0e0e 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 30% 30%;
  animation: si1-proteus 6s ease-in-out infinite;
}
.scn-silvia-rejects-proteus .julia-shadow {
  position: absolute; bottom: 14%; left: 62%; width: 7%; height: 16%;
  background: linear-gradient(180deg, #1e1e1e 0%, #080808 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  opacity: .5;
  animation: si1-julia 10s ease-in-out infinite;
}
.scn-silvia-rejects-proteus .lantern-light {
  position: absolute; bottom: 18%; left: 35%; width: 4%; height: 4%;
  background: radial-gradient(circle, #ffa060 0%, #d06030 70%);
  border-radius: 50%;
  box-shadow: 0 0 20px 6px rgba(255,160,96,.5), 0 0 40px 12px rgba(255,160,96,.3);
  animation: si1-lantern 2s ease-in-out infinite alternate;
}
@keyframes si1-skyglow {
  0% { opacity: .4; } 50% { opacity: .7; } 100% { opacity: .3; }
}
@keyframes si1-silvia {
  0% { transform: translateY(0) rotate(-2deg); }
  50% { transform: translateY(-3px) rotate(2deg); }
  100% { transform: translateY(0) rotate(-2deg); }
}
@keyframes si1-proteus {
  0% { transform: translateX(0); opacity: .6; }
  25% { transform: translateX(4px); opacity: .8; }
  75% { transform: translateX(-3px); opacity: .7; }
  100% { transform: translateX(0); opacity: .6; }
}
@keyframes si1-julia {
  0%, 100% { transform: translateY(0) scale(1); }
  50% { transform: translateY(2px) scale(.95); }
}
@keyframes si1-lantern {
  0% { box-shadow: 0 0 16px 4px rgba(255,160,96,.4), 0 0 32px 8px rgba(255,160,96,.2); }
  50% { box-shadow: 0 0 28px 8px rgba(255,160,96,.6), 0 0 56px 16px rgba(255,160,96,.35); }
  100% { box-shadow: 0 0 20px 5px rgba(255,160,96,.5), 0 0 40px 10px rgba(255,160,96,.25); }
}

/* Scene 2: item-portrait-ring (dim interior, warm) */

/* duke-grants-pardon */
.scn-duke-grants-pardon {
  background: 
    linear-gradient(180deg, #7a7a6a 0%, #9e9e8e 40%, #b0b0a0 100%),
    radial-gradient(ellipse at 50% 100%, #c0b090 0%, transparent 70%);
}
.scn-duke-grants-pardon .sky-overcast {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #6a6a5a 0%, #8a8a7a 50%, #a0a090 100%);
  animation: dgp-sky 14s ease-in-out infinite alternate;
}
.scn-duke-grants-pardon .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 30% 70% 0 0 / 50% 50% 0 0;
}
.scn-duke-grants-pardon .castle-bg {
  position: absolute; bottom: 30%; left: 10%; width: 120px; height: 180px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 4% 4% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,.4);
  transform: scale(0.9);
  animation: dgp-castle 12s ease-in-out infinite;
}
.scn-duke-grants-pardon .figure-duke {
  position: absolute; bottom: 28%; left: 35%; width: 24px; height: 48px;
  background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%);
  border-radius: 40% 40% 35% 35% / 55% 55% 35% 35%;
  transform-origin: bottom center;
  animation: dgp-duke 5s ease-in-out infinite;
}
.scn-duke-grants-pardon .figure-valentine {
  position: absolute; bottom: 24%; left: 48%; width: 20px; height: 40px;
  background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: dgp-valentine 6s ease-in-out infinite alternate;
}
.scn-duke-grants-pardon .lantern-glow {
  position: absolute; bottom: 32%; left: 42%; width: 8px; height: 8px;
  background: radial-gradient(circle, #dab050 0%, #b08030 70%);
  border-radius: 50%;
  box-shadow: 0 0 20px 6px #c8943a, 0 0 40px 12px rgba(200,148,58,.4);
  animation: dgp-lantern 3s ease-in-out infinite alternate;
}
.scn-duke-grants-pardon .cloud-dgp-a {
  position: absolute; top: 12%; left: 20%; width: 90px; height: 20px;
  background: linear-gradient(180deg, rgba(220,220,210,.6) 0%, rgba(200,200,190,.1) 100%);
  border-radius: 50%;
  filter: blur(8px);
  animation: dgp-cloud-a 40s linear infinite;
}
.scn-duke-grants-pardon .cloud-dgp-b {
  position: absolute; top: 8%; right: 15%; width: 70px; height: 16px;
  background: linear-gradient(180deg, rgba(220,220,210,.4) 0%, rgba(200,200,190,.05) 100%);
  border-radius: 50%;
  filter: blur(6px);
  animation: dgp-cloud-b 55s linear infinite reverse;
}
@keyframes dgp-sky {
  0% { opacity: 0.7; }
  50% { opacity: 1; }
  100% { opacity: 0.75; }
}
@keyframes dgp-castle {
  0%, 100% { transform: scale(0.9) translateY(0); }
  50% { transform: scale(0.9) translateY(-2px); }
}
@keyframes dgp-duke {
  0% { transform: translateY(0) rotate(-1deg); }
  50% { transform: translateY(-1px) rotate(1deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes dgp-valentine {
  0% { transform: translateY(0) translateX(0) rotate(0deg); }
  50% { transform: translateY(-2px) translateX(2px) rotate(1deg); }
  100% { transform: translateY(0) translateX(0) rotate(0deg); }
}
@keyframes dgp-lantern {
  0% { box-shadow: 0 0 16px 4px #b08030, 0 0 32px 8px rgba(200,148,58,.3); opacity: 0.8; }
  50% { box-shadow: 0 0 28px 8px #e0b850, 0 0 56px 18px rgba(224,184,80,.6); opacity: 1; }
  100% { box-shadow: 0 0 20px 5px #b08030, 0 0 40px 10px rgba(200,148,58,.35); opacity: 0.85; }
}
@keyframes dgp-cloud-a {
  0% { transform: translateX(-40px); }
  100% { transform: translateX(130vw); }
}
@keyframes dgp-cloud-b {
  0% { transform: translateX(0); }
  100% { transform: translateX(-110vw); }
}

/* final-reconciliation */
.scn-final-reconciliation {
  background: 
    linear-gradient(180deg, #a0a090 0%, #c0c0b0 50%, #d0d0c0 100%),
    radial-gradient(ellipse at 50% 0%, #e8e0d0 0%, transparent 70%);
}
.scn-final-reconciliation .sky-fr {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #8a8a7a 0%, #b0b0a0 60%, #c8c8b8 100%);
  animation: fr-sky 10s ease-in-out infinite alternate;
}
.scn-final-reconciliation .path {
  position: absolute; bottom: 35%; left: 20%; right: 20%; height: 10%;
  background: linear-gradient(180deg, #9a8a6a 0%, #7a6a4a 100%);
  border-radius: 10% 10% 50% 50% / 30% 30% 60% 60%;
  animation: fr-path 8s ease-in-out infinite;
}
.scn-final-reconciliation .tree-left {
  position: absolute; bottom: 25%; left: 5%; width: 50px; height: 130px;
  background: linear-gradient(180deg, #4a5a3a 0%, #2a3a1a 100%);
  border-radius: 30% 30% 10% 10% / 50% 50% 20% 20%;
  transform-origin: bottom center;
  animation: fr-tree 12s ease-in-out infinite;
}
.scn-final-reconciliation .tree-right {
  position: absolute; bottom: 25%; right: 5%; width: 60px; height: 150px;
  background: linear-gradient(180deg, #3a4a2a 0%, #1a2a0a 100%);
  border-radius: 30% 30% 10% 10% / 40% 40% 20% 20%;
  transform-origin: bottom center;
  animation: fr-tree 15s ease-in-out infinite reverse;
}
.scn-final-reconciliation .figures-walking {
  position: absolute; bottom: 24%; left: 35%; width: 50px; height: 60px;
  background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%);
  border-radius: 40% 40% 35% 35% / 55% 55% 35% 35%;
  transform-origin: bottom center;
  animation: fr-walk 6s ease-in-out infinite;
}
.scn-final-reconciliation .sun-hint {
  position: absolute; top: 8%; left: 40%; width: 120px; height: 120px;
  background: radial-gradient(circle, rgba(255,245,220,.4) 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(30px);
  animation: fr-sun 20s ease-in-out infinite alternate;
}
.scn-final-reconciliation .leaf-drift {
  position: absolute; bottom: 45%; left: 10%; width: 8px; height: 12px;
  background: #6a5a2a;
  border-radius: 30% 70% 50% 50% / 50% 50% 50% 50%;
  opacity: 0.6;
  animation: fr-leaf 15s linear infinite;
}
@keyframes fr-sky {
  0% { opacity: 0.7; }
  50% { opacity: 1; }
  100% { opacity: 0.8; }
}
@keyframes fr-path {
  0%, 100% { transform: translateY(0) scaleX(1); }
  50% { transform: translateY(-2px) scaleX(1.02); }
}
@keyframes fr-tree {
  0% { transform: rotate(0deg) scaleY(1); }
  50% { transform: rotate(2deg) scaleY(1.01); }
  100% { transform: rotate(0deg) scaleY(1); }
}
@keyframes fr-walk {
  0% { transform: translateX(0) translateY(0) rotate(-1deg); }
  25% { transform: translateX(6px) translateY(-1px) rotate(1deg); }
  50% { transform: translateX(12px) translateY(0) rotate(-1deg); }
  75% { transform: translateX(18px) translateY(-1px) rotate(1deg); }
  100% { transform: translateX(24px) translateY(0) rotate(0deg); }
}
@keyframes fr-sun {
  0% { opacity: 0.3; transform: scale(1); }
  50% { opacity: 0.7; transform: scale(1.05); }
  100% { opacity: 0.4; transform: scale(0.95); }
}
@keyframes fr-leaf {
  0% { transform: translateX(0) translateY(0) rotate(0deg); opacity: 0.6; }
  50% { transform: translateX(40px) translateY(-20px) rotate(180deg); opacity: 0.3; }
  100% { transform: translateX(80px) translateY(-40px) rotate(360deg); opacity: 0; }
}

.scn-antonio-decides { background: linear-gradient(180deg, #cba57a 0%, #8a6f4a 50%, #4a3520 100%), radial-gradient(ellipse at 50% 30%, #e0c080 0%, transparent 60%); }
.scn-antonio-decides .ad-backdrop { position:absolute; inset:0 0 20% 0; background: linear-gradient(180deg, #d4b88a 0%, #9a7a50 100%); animation: ad-sky 15s ease-in-out infinite alternate; }
.scn-antonio-decides .ad-wall    { position:absolute; bottom:18%; left:0; right:0; height:82%; background: linear-gradient(90deg, #6a4a2a 0%, #8a6a4a 50%, #6a4a2a 100%); box-shadow: inset 0 0 40px rgba(0,0,0,.5); }
.scn-antonio-decides .ad-desk   { position:absolute; bottom:8%; left:20%; width:60%; height:12%; background: linear-gradient(180deg, #5a3a1a 0%, #3a2a0a 100%); border-radius:4px; box-shadow: 0 4px 8px rgba(0,0,0,.6); }
.scn-antonio-decides .ad-letter { position:absolute; bottom:14%; left:35%; width:30%; height:8%; background: linear-gradient(180deg, #f0e0c0 0%, #d0c0a0 100%); border-radius:2px; transform: rotate(-3deg); box-shadow: 0 2px 4px rgba(0,0,0,.3); animation: ad-letter 8s ease-in-out infinite; }
.scn-antonio-decides .ad-figure { position:absolute; bottom:12%; left:45%; width:20%; height:40%; background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ad-figure 6s ease-in-out infinite; }
.scn-antonio-decides .ad-candle { position:absolute; bottom:14%; left:30%; width:4px; height:8%; background: linear-gradient(180deg, #f0c060 0%, #c08040 100%); border-radius:2px 2px 0 0; box-shadow: 0 0 12px 4px #e0a050; animation: ad-candle 3s ease-in-out infinite alternate; }
.scn-antonio-decides .ad-glow   { position:absolute; bottom:12%; left:28%; width:8%; height:16%; background: radial-gradient(circle, rgba(240,192,96,.6) 0%, transparent 70%); animation: ad-glow 4s ease-in-out infinite alternate; }
.scn-antonio-decides .ad-shadow { position:absolute; bottom:8%; left:20%; width:60%; height:4%; background: linear-gradient(180deg, rgba(0,0,0,.4) 0%, transparent 100%); animation: ad-shadow 5s ease-in-out infinite; }
@keyframes ad-sky    { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.7 } }
@keyframes ad-letter { 0% { transform: rotate(-3deg) } 50% { transform: rotate(1deg) scale(1.02) } 100% { transform: rotate(-3deg) } }
@keyframes ad-figure { 0% { transform: translateY(0) rotate(-1deg) } 50% { transform: translateY(-3px) rotate(1deg) scale(1.01) } 100% { transform: translateY(0) rotate(-1deg) } }
@keyframes ad-candle { 0% { opacity:.7; transform: scaleY(1) } 50% { opacity:1; transform: scaleY(1.05) } 100% { opacity:.8; transform: scaleY(1) } }
@keyframes ad-glow   { 0% { opacity:.3 } 50% { opacity:.7 } 100% { opacity:.4 } }
@keyframes ad-shadow { 0% { opacity:.5 } 50% { opacity:.3 } 100% { opacity:.5 } }

.scn-proteus-letter-interrupted { background: linear-gradient(180deg, #cba57a 0%, #8a6f4a 50%, #4a3520 100%), radial-gradient(ellipse at 50% 30%, #e0c080 0%, transparent 60%); }
.scn-proteus-letter-interrupted .pl-backdrop { position:absolute; inset:0 0 20% 0; background: linear-gradient(180deg, #d4b88a 0%, #9a7a50 100%); animation: pl-sky 15s ease-in-out infinite alternate; }
.scn-proteus-letter-interrupted .pl-wall    { position:absolute; bottom:18%; left:0; right:0; height:82%; background: linear-gradient(90deg, #6a4a2a 0%, #8a6a4a 50%, #6a4a2a 100%); box-shadow: inset 0 0 40px rgba(0,0,0,.5); }
.scn-proteus-letter-interrupted .pl-desk   { position:absolute; bottom:8%; left:20%; width:60%; height:12%; background: linear-gradient(180deg, #5a3a1a 0%, #3a2a0a 100%); border-radius:4px; box-shadow: 0 4px 8px rgba(0,0,0,.6); }
.scn-proteus-letter-interrupted .pl-letter { position:absolute; bottom:14%; left:35%; width:30%; height:8%; background: linear-gradient(180deg, #f0e0c0 0%, #d0c0a0 100%); border-radius:2px; transform: rotate(2deg); box-shadow: 0 2px 4px rgba(0,0,0,.3); animation: pl-letter 7s ease-in-out infinite; }
.scn-proteus-letter-interrupted .pl-figure { position:absolute; bottom:12%; left:40%; width:20%; height:40%; background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: pl-figure 6s ease-in-out infinite; }
.scn-proteus-letter-interrupted .pl-candle { position:absolute; bottom:14%; left:30%; width:4px; height:8%; background: linear-gradient(180deg, #f0c060 0%, #c08040 100%); border-radius:2px 2px 0 0; box-shadow: 0 0 12px 4px #e0a050; animation: pl-candle 3s ease-in-out infinite alternate; }
.scn-proteus-letter-interrupted .pl-glow   { position:absolute; bottom:12%; left:28%; width:8%; height:16%; background: radial-gradient(circle, rgba(240,192,96,.6) 0%, transparent 70%); animation: pl-glow 4s ease-in-out infinite alternate; }
.scn-proteus-letter-interrupted .pl-shadow { position:absolute; bottom:8%; left:20%; width:60%; height:4%; background: linear-gradient(180deg, rgba(0,0,0,.4) 0%, transparent 100%); animation: pl-shadow 5s ease-in-out infinite; }
@keyframes pl-sky    { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.7 } }
@keyframes pl-letter { 0% { transform: rotate(2deg) } 50% { transform: rotate(-1deg) scale(1.02) } 100% { transform: rotate(2deg) } }
@keyframes pl-figure { 0% { transform: translateY(0) rotate(1deg) } 50% { transform: translateY(-3px) rotate(-1deg) scale(1.01) } 100% { transform: translateY(0) rotate(1deg) } }
@keyframes pl-candle { 0% { opacity:.7; transform: scaleY(1) } 50% { opacity:1; transform: scaleY(1.05) } 100% { opacity:.8; transform: scaleY(1) } }
@keyframes pl-glow   { 0% { opacity:.3 } 50% { opacity:.7 } 100% { opacity:.4 } }
@keyframes pl-shadow { 0% { opacity:.5 } 50% { opacity:.3 } 100% { opacity:.5 } }

.scn-antonio-forces-departure { background: linear-gradient(180deg, #cba57a 0%, #8a6f4a 50%, #4a3520 100%), radial-gradient(ellipse at 50% 30%, #e0c080 0%, transparent 60%); }
.scn-antonio-forces-departure .afd-backdrop { position:absolute; inset:0 0 20% 0; background: linear-gradient(180deg, #d4b88a 0%, #9a7a50 100%); animation: afd-sky 12s ease-in-out infinite alternate; }
.scn-antonio-forces-departure .afd-wall    { position:absolute; bottom:18%; left:0; right:0; height:82%; background: linear-gradient(90deg, #6a4a2a 0%, #8a6a4a 50%, #6a4a2a 100%); box-shadow: inset 0 0 40px rgba(0,0,0,.5); }
.scn-antonio-forces-departure .afd-desk   { position:absolute; bottom:8%; left:15%; width:70%; height:12%; background: linear-gradient(180deg, #5a3a1a 0%, #3a2a0a 100%); border-radius:4px; box-shadow: 0 4px 8px rgba(0,0,0,.6); }
.scn-antonio-forces-departure .afd-letter { position:absolute; bottom:14%; left:40%; width:25%; height:8%; background: linear-gradient(180deg, #f0e0c0 0%, #d0c0a0 100%); border-radius:2px; transform: rotate(0deg); box-shadow: 0 2px 4px rgba(0,0,0,.3); animation: afd-letter 6s ease-in-out infinite; }
.scn-antonio-forces-departure .afd-figure-left { position:absolute; bottom:12%; left:30%; width:18%; height:42%; background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: afd-figure-l 7s ease-in-out infinite; }
.scn-antonio-forces-departure .afd-figure-right{ position:absolute; bottom:12%; right:30%; width:18%; height:42%; background: linear-gradient(180deg, #4a3a2a 0%, #3a2a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: afd-figure-r 8s ease-in-out infinite; }
.scn-antonio-forces-departure .afd-candle { position:absolute; bottom:14%; left:50%; width:4px; height:8%; background: linear-gradient(180deg, #f0c060 0%, #c08040 100%); border-radius:2px 2px 0 0; box-shadow: 0 0 12px 4px #e0a050; animation: afd-candle 3s ease-in-out infinite alternate; }
.scn-antonio-forces-departure .afd-glow   { position:absolute; bottom:12%; left:47%; width:10%; height:18%; background: radial-gradient(circle, rgba(240,192,96,.5) 0%, transparent 70%); animation: afd-glow 4s ease-in-out infinite alternate; }
@keyframes afd-sky    { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.7 } }
@keyframes afd-letter { 0% { transform: rotate(0deg) scale(1) } 50% { transform: rotate(3deg) scale(1.03) } 100% { transform: rotate(0deg) scale(1) } }
@keyframes afd-figure-l { 0% { transform: translateY(0) rotate(-2deg) } 50% { transform: translateY(-2px) rotate(0deg) scale(1.02) } 100% { transform: translateY(0) rotate(-2deg) } }
@keyframes afd-figure-r { 0% { transform: translateY(0) rotate(2deg) } 50% { transform: translateY(-3px) rotate(0deg) scale(1.02) } 100% { transform: translateY(0) rotate(2deg) } }
@keyframes afd-candle { 0% { opacity:.6; transform: scaleY(1) } 50% { opacity:1; transform: scaleY(1.08) } 100% { opacity:.7; transform: scaleY(1) } }
@keyframes afd-glow   { 0% { opacity:.2 } 50% { opacity:.6 } 100% { opacity:.3 } }

.scn-proteus-soliloquy-april { background: linear-gradient(180deg, #8a7a6a 0%, #5a4a3a 50%, #2a1a1a 100%), radial-gradient(ellipse at 50% 30%, #c0a080 0%, transparent 60%); }
.scn-proteus-soliloquy-april .psa-backdrop { position:absolute; inset:0 0 20% 0; background: linear-gradient(180deg, #9a8a7a 0%, #6a5a4a 100%); animation: psa-sky 14s ease-in-out infinite alternate; }
.scn-proteus-soliloquy-april .psa-wall    { position:absolute; bottom:18%; left:0; right:0; height:82%; background: linear-gradient(90deg, #5a4a3a 0%, #7a6a5a 50%, #5a4a3a 100%); box-shadow: inset 0 0 50px rgba(0,0,0,.6); }
.scn-proteus-soliloquy-april .psa-desk   { position:absolute; bottom:8%; left:20%; width:60%; height:12%; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius:4px; box-shadow: 0 4px 8px rgba(0,0,0,.7); }
.scn-proteus-soliloquy-april .psa-letter { position:absolute; bottom:14%; left:35%; width:30%; height:8%; background: linear-gradient(180deg, #e0d0b0 0%, #c0b090 100%); border-radius:2px; transform: rotate(-4deg); box-shadow: 0 2px 4px rgba(0,0,0,.4); animation: psa-letter 9s ease-in-out infinite; }
.scn-proteus-soliloquy-april .psa-figure { position:absolute; bottom:12%; left:45%; width:18%; height:38%; background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: psa-figure 5s ease-in-out infinite; }
.scn-proteus-soliloquy-april .psa-candle { position:absolute; bottom:14%; left:28%; width:4px; height:8%; background: linear-gradient(180deg, #e0b060 0%, #b08040 100%); border-radius:2px 2px 0 0; box-shadow: 0 0 10px 3px #c09050; animation: psa-candle 4s ease-in-out infinite alternate; }
.scn-proteus-soliloquy-april .psa-glow   { position:absolute; bottom:12%; left:26%; width:8%; height:16%; background: radial-gradient(circle, rgba(224,176,96,.5) 0%, transparent 70%); animation: psa-glow 4.5s ease-in-out infinite alternate; }
.scn-proteus-soliloquy-april .psa-shadow { position:absolute; bottom:8%; left:20%; width:60%; height:4%; background: linear-gradient(180deg, rgba(0,0,0,.5) 0%, transparent 100%); animation: psa-shadow 6s ease-in-out infinite; }
@keyframes psa-sky    { 0% { opacity:.7 } 50% { opacity:1 } 100% { opacity:.6 } }
@keyframes psa-letter { 0% { transform: rotate(-4deg) } 50% { transform: rotate(1deg) scale(1.02) } 100% { transform: rotate(-4deg) } }
@keyframes psa-figure { 0% { transform: translateY(0) rotate(-1deg) } 50% { transform: translateY(-2px) rotate(2deg) scale(1.01) } 100% { transform: translateY(0) rotate(-1deg) } }
@keyframes psa-candle { 0% { opacity:.5; transform: scaleY(1) } 50% { opacity:.9; transform: scaleY(1.06) } 100% { opacity:.6; transform: scaleY(1) } }
@keyframes psa-glow   { 0% { opacity:.2 } 50% { opacity:.5 } 100% { opacity:.3 } }
@keyframes psa-shadow { 0% { opacity:.6 } 50% { opacity:.4 } 100% { opacity:.6 } }

/* Scene: verona-garden-julia-lucetta (warm sunlit) */
.scn-verona-garden-julia-lucetta {
  background: linear-gradient(180deg, #fce4b8 0%, #f8d59a 40%, #d9a77b 100%),
              radial-gradient(ellipse at 50% 30%, #ffe28a 0%, transparent 60%);
}
.scn-verona-garden-julia-lucetta .sky-vgj {
  position: absolute; inset: 0 0 55% 0;
  background: linear-gradient(180deg, #87ceeb 0%, #b0e0ff 60%, transparent);
  animation: vgj-sky 12s ease-in-out infinite alternate;
}
.scn-verona-garden-julia-lucetta .wall-vgj {
  position: absolute; bottom: 30%; left: 10%; width: 80%; height: 4%;
  background: linear-gradient(90deg, #c8a882 0%, #b8946e 50%, #c8a882 100%);
  border-radius: 2px;
  box-shadow: 0 -2px 6px rgba(0,0,0,0.15);
}
.scn-verona-garden-julia-lucetta .foliage-vgj {
  position: absolute; bottom: 34%; width: 20%; height: 18%;
  background: linear-gradient(135deg, #5a7a3a 0%, #3a5a2a 100%);
  border-radius: 60% 40% 40% 60% / 50% 50%;
  filter: blur(2px);
  animation: vgj-sway 6s ease-in-out infinite alternate;
}
.scn-verona-garden-julia-lucetta .left-foliage { left: 5%; transform-origin: bottom left; }
.scn-verona-garden-julia-lucetta .right-foliage { right: 5%; transform-origin: bottom right; animation-delay: 3s; }
.scn-verona-garden-julia-lucetta .bench-vgj {
  position: absolute; bottom: 28%; left: 35%; width: 30%; height: 10%;
  background: linear-gradient(180deg, #8b6f4a 0%, #6b4f2a 100%);
  border-radius: 4px 4px 0 0;
  box-shadow: 0 4px 8px rgba(0,0,0,0.2);
}
.scn-verona-garden-julia-lucetta .figure-vgj {
  position: absolute; bottom: 28%; width: 12%; height: 28%;
  background: linear-gradient(180deg, #e8c8a0 0%, #c8a882 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
}
.scn-verona-garden-julia-lucetta .julia { left: 40%; animation: vgj-breathe 4s ease-in-out infinite; }
.scn-verona-garden-julia-lucetta .lucetta { left: 55%; animation: vgj-breathe 4s ease-in-out infinite 2s; }
.scn-verona-garden-julia-lucetta .blossom-vgj {
  position: absolute; top: 15%; left: 30%; width: 8px; height: 8px;
  background: #f5a0a0;
  border-radius: 50%;
  box-shadow: 0 0 12px 4px rgba(245,160,160,0.6);
  filter: blur(1px);
  animation: vgj-drift 15s linear infinite;
}
@keyframes vgj-sky { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes vgj-sway { 0% { transform: rotate(0deg) scaleY(1); } 50% { transform: rotate(3deg) scaleY(0.95); } 100% { transform: rotate(-2deg) scaleY(1); } }
@keyframes vgj-breathe { 0% { transform: translateY(0) scaleY(1); } 50% { transform: translateY(-2px) scaleY(1.02); } 100% { transform: translateY(0) scaleY(1); } }
@keyframes vgj-drift { 0% { transform: translate(0,0); opacity: 0; } 10% { opacity: 1; } 90% { opacity: 0.5; } 100% { transform: translate(60px, -30px); opacity: 0; } }

/* Scene: julia-lucetta-letter (tense sunlit) */
.scn-julia-lucetta-letter {
  background: linear-gradient(180deg, #f0d6a0 0%, #d9b87a 50%, #b8965a 100%),
              radial-gradient(ellipse at 50% 60%, #ffe8b0 0%, transparent 70%);
}
.scn-julia-lucetta-letter .bg-jll {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, transparent 30%, rgba(80,60,30,0.15) 100%);
}
.scn-julia-lucetta-letter .hand-jll {
  position: absolute; bottom: 20%; width: 14%; height: 30%;
  background: linear-gradient(180deg, #e0c0a0 0%, #c0a080 100%);
  border-radius: 40% 40% 30% 30% / 50% 50%;
  box-shadow: 0 -4px 8px rgba(0,0,0,0.2);
  animation: jll-tremor 2s ease-in-out infinite alternate;
}
.scn-julia-lucetta-letter .left-hand { left: 30%; transform: rotate(-5deg); }
.scn-julia-lucetta-letter .right-hand { right: 30%; transform: rotate(5deg); animation-delay: 0.5s; }
.scn-julia-lucetta-letter .letter-jll {
  position: absolute; bottom: 35%; left: 38%; width: 24%; height: 18%;
  background: linear-gradient(135deg, #f5e6c8 0%, #e5d6b8 100%);
  border: 1px solid #c8a882;
  border-radius: 2px;
  box-shadow: 0 4px 12px rgba(0,0,0,0.25);
  animation: jll-flutter 3s ease-in-out infinite alternate;
}
.scn-julia-lucetta-letter .shadow-jll {
  position: absolute; bottom: 25%; left: 35%; width: 30%; height: 8%;
  background: radial-gradient(ellipse, rgba(0,0,0,0.2) 0%, transparent 70%);
  animation: jll-shadow 3s ease-in-out infinite alternate;
}
.scn-julia-lucetta-letter .letter-edge-jll {
  position: absolute; bottom: 36%; left: 40%; width: 20%; height: 2%;
  background: #c8a882;
  filter: blur(1px);
  opacity: 0.5;
  animation: jll-edge 3s ease-in-out infinite alternate;
}
@keyframes jll-tremor { 0% { transform: rotate(-5deg) translateY(0); } 50% { transform: rotate(-3deg) translateY(-1px); } 100% { transform: rotate(-5deg) translateY(0); } }
@keyframes jll-flutter { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-3px) rotate(1deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes jll-shadow { 0% { opacity: 0.6; transform: scaleX(1); } 50% { opacity: 0.8; transform: scaleX(1.05); } 100% { opacity: 0.6; transform: scaleX(1); } }
@keyframes jll-edge { 0% { opacity: 0.4; } 50% { opacity: 0.6; } 100% { opacity: 0.4; } }

/* Scene: julia-angry-with-lucetta (tense sunlit) */
.scn-julia-angry-with-lucetta {
  background: linear-gradient(180deg, #f7d59a 0%, #e8b87a 30%, #c8965a 70%, #a07040 100%),
              radial-gradient(ellipse at 30% 40%, #ffe8b0 0%, transparent 60%);
}
.scn-julia-angry-with-lucetta .bg-jal {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(160,100,50,0.1) 0%, rgba(80,40,20,0.3) 100%);
}
.scn-julia-angry-with-lucetta .julia-jal {
  position: absolute; bottom: 20%; left: 25%; width: 18%; height: 40%;
  background: linear-gradient(180deg, #d0a87a 0%, #b08050 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: -10px 0 15px rgba(0,0,0,0.3);
  animation: jal-angry 3s ease-in-out infinite alternate;
}
.scn-julia-angry-with-lucetta .lucetta-jal {
  position: absolute; bottom: 20%; right: 20%; width: 14%; height: 35%;
  background: linear-gradient(180deg, #c8a882 0%, #a88868 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: scaleX(-1);
  animation: jal-cower 4s ease-in-out infinite alternate;
}
.scn-julia-angry-with-lucetta .arm-jal {
  position: absolute; bottom: 40%; left: 35%; width: 10%; height: 30%;
  background: linear-gradient(180deg, #d0a87a 0%, #b08050 100%);
  border-radius: 30% 30% 20% 20% / 40% 40% 20% 20%;
  transform: rotate(-30deg);
  transform-origin: bottom center;
  animation: jal-point 2s ease-in-out infinite alternate;
}
.scn-julia-angry-with-lucetta .shadow-jal {
  position: absolute; bottom: 15%; left: 20%; width: 60%; height: 10%;
  background: radial-gradient(ellipse, rgba(0,0,0,0.3) 0%, transparent 70%);
  animation: jal-shadow 3s ease-in-out infinite alternate;
}
@keyframes jal-angry { 0% { transform: translateY(0) rotate(-2deg); } 50% { transform: translateY(-4px) rotate(2deg); } 100% { transform: translateY(0) rotate(-2deg); } }
@keyframes jal-cower { 0% { transform: scaleX(-1) translateY(0); } 50% { transform: scaleX(-1) translateY(-3px) scale(0.98); } 100% { transform: scaleX(-1) translateY(0); } }
@keyframes jal-point { 0% { transform: rotate(-30deg) translateX(0); } 50% { transform: rotate(-20deg) translateX(5px); } 100% { transform: rotate(-30deg) translateX(0); } }
@keyframes jal-shadow { 0% { opacity: 0.5; transform: scaleX(0.9); } 50% { opacity: 0.7; transform: scaleX(1.1); } 100% { opacity: 0.5; transform: scaleX(0.9); } }

/* Scene: julia-soliloquy-letter (warm sunlit) */
.scn-julia-soliloquy-letter {
  background: linear-gradient(180deg, #fce4b8 0%, #f8d59a 40%, #d9a77b 100%),
              radial-gradient(ellipse at 40% 20%, #ffe28a 0%, transparent 70%);
}
.scn-julia-soliloquy-letter .bg-jsl {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, transparent 40%, rgba(200,150,80,0.2) 100%);
}
.scn-julia-soliloquy-letter .figure-jsl {
  position: absolute; bottom: 15%; left: 40%; width: 20%; height: 45%;
  background: linear-gradient(180deg, #e8c8a0 0%, #c8a882 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 0 -10px 20px rgba(0,0,0,0.15);
  animation: jsl-breathe 5s ease-in-out infinite alternate;
}
.scn-julia-soliloquy-letter .letter-jsl {
  position: absolute; bottom: 40%; left: 45%; width: 14%; height: 10%;
  background: linear-gradient(135deg, #f5e6c8 0%, #e5d6b8 100%);
  border: 1px solid #c8a882;
  border-radius: 2px;
  box-shadow: 0 2px 6px rgba(0,0,0,0.2);
  animation: jsl-letter 4s ease-in-out infinite alternate;
}
.scn-julia-soliloquy-letter .light-jsl {
  position: absolute; top: 10%; left: 30%; width: 40%; height: 30%;
  background: radial-gradient(ellipse, #ffe8b0 0%, transparent 70%);
  opacity: 0.6;
  animation: jsl-light 8s ease-in-out infinite alternate;
}
.scn-julia-soliloquy-letter .leaves-jsl {
  position: absolute; top: 5%; left: 0; width: 20%; height: 20%;
  background: linear-gradient(135deg, #5a7a3a 0%, #3a5a2a 100%);
  border-radius: 60% 40% 40% 60% / 50% 50%;
  filter: blur(3px);
  animation: jsl-leaves 10s ease-in-out infinite alternate;
}
@keyframes jsl-breathe { 0% { transform: translateY(0) scaleY(1); } 50% { transform: translateY(-2px) scaleY(1.02); } 100% { transform: translateY(0) scaleY(1); } }
@keyframes jsl-letter { 0% { transform: translateY(0) rotate(-1deg); opacity: 0.9; } 50% { transform: translateY(-4px) rotate(1deg); opacity: 1; } 100% { transform: translateY(0) rotate(-1deg); opacity: 0.9; } }
@keyframes jsl-light { 0% { opacity: 0.5; transform: scale(0.9); } 50% { opacity: 0.7; transform: scale(1.05); } 100% { opacity: 0.5; transform: scale(0.9); } }
@keyframes jsl-leaves { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(10px) rotate(5deg); } 100% { transform: translateX(0) rotate(0deg); } }

/* Scene 1: milan-speed-reveals-jest */
.scn-milan-speed-reveals-jest {
  background: linear-gradient(180deg, #fef9e7 0%, #fdebd0 40%, #d4e6f1 100%),
              radial-gradient(ellipse at 80% 20%, #fff9c4 0%, transparent 60%);
}

.scn-milan-speed-reveals-jest .sky {
  position: absolute; inset: 0 0 60% 0;
  background: linear-gradient(180deg, #fff9e6 0%, #e3f2fd 100%);
  animation: mi1-sky 20s ease-in-out infinite alternate;
}

.scn-milan-speed-reveals-jest .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #aed581 0%, #7cb342 100%);
  border-radius: 60% 40% 0 0 / 30% 20% 0 0;
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.1);
  animation: mi1-ground 15s ease-in-out infinite;
}

.scn-milan-speed-reveals-jest .figure-left {
  position: absolute; bottom: 20%; left: 30%; width: 40px; height: 80px;
  background: linear-gradient(180deg, #4e342e 0%, #3e2723 100%);
  border-radius: 50% 40% 40% 50% / 60% 50% 50% 60%;
  transform: rotate(5deg);
  animation: mi1-fig 4s ease-in-out infinite alternate;
}

.scn-milan-speed-reveals-jest .figure-right {
  position: absolute; bottom: 20%; right: 30%; width: 42px; height: 82px;
  background: linear-gradient(180deg, #5d4037 0%, #4e342e 100%);
  border-radius: 40% 50% 50% 40% / 50% 60% 60% 50%;
  transform: rotate(-3deg);
  animation: mi1-fig 4s ease-in-out 2s infinite alternate;
}

.scn-milan-speed-reveals-jest .letter {
  position: absolute; bottom: 35%; left: 48%; width: 20px; height: 14px;
  background: linear-gradient(135deg, #fff3e0 0%, #ffe0b2 100%);
  border-radius: 2px;
  box-shadow: 0 2px 6px rgba(0,0,0,0.2);
  animation: mi1-letter 6s ease-in-out infinite;
}

.scn-milan-speed-reveals-jest .sunray {
  position: absolute; top: 0; left: 20%; width: 200%; height: 100%;
  background: linear-gradient(0deg, transparent 0%, rgba(255,249,196,0.15) 50%, transparent 100%);
  transform: rotate(20deg);
  animation: mi1-ray 12s ease-in-out infinite alternate;
}

@keyframes mi1-sky { 0% { opacity:1 } 50% { opacity:0.9 } 100% { opacity:1 } }
@keyframes mi1-ground { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-2px) } }
@keyframes mi1-fig { 0% { transform: rotate(5deg) scaleY(1) } 50% { transform: rotate(6deg) scaleY(1.02) } 100% { transform: rotate(5deg) scaleY(1) } }
@keyframes mi1-letter { 0%,100% { transform: translateY(0) rotate(0) } 50% { transform: translateY(-4px) rotate(5deg) } }
@keyframes mi1-ray { 0% { transform: rotate(15deg) scale(0.95) } 100% { transform: rotate(25deg) scale(1) } }

/* Scene 2: verona-proteus-julia-ring */
.scn-verona-proteus-julia-ring {
  background: linear-gradient(180deg, #fbc02d 0%, #f9a825 40%, #c0ca33 100%),
              radial-gradient(ellipse at 50% 100%, #ffe082 0%, transparent 70%);
}

.scn-verona-proteus-julia-ring .wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(0deg, #f5e6cc 0%, #f5e6cc 30%, #e6d3b3 100%);
  box-shadow: inset 0 0 40px rgba(0,0,0,0.05);
}

.scn-verona-proteus-julia-ring .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #d4a373 0%, #b5835a 100%);
  border-radius: 0 0 0 0;
}

.scn-verona-proteus-julia-ring .window {
  position: absolute; top: 10%; left: 50%; width: 80px; height: 100px;
  transform: translateX(-50%);
  background: linear-gradient(135deg, #bbdefb 0%, #90caf9 100%);
  border: 4px solid #795548;
  border-radius: 4px;
  box-shadow: inset 0 0 20px rgba(255,255,255,0.3), 0 4px 12px rgba(0,0,0,0.2);
  animation: ve2-window 6s ease-in-out infinite alternate;
}

.scn-verona-proteus-julia-ring .proteus {
  position: absolute; bottom: 20%; left: 30%; width: 40px; height: 80px;
  background: linear-gradient(180deg, #3e2723 0%, #2c1a12 100%);
  border-radius: 50% 40% 40% 50% / 60% 50% 50% 60%;
  transform: translateX(-50%);
  animation: ve2-fig 5s ease-in-out infinite;
}

.scn-verona-proteus-julia-ring .julia {
  position: absolute; bottom: 20%; left: 70%; width: 38px; height: 78px;
  background: linear-gradient(180deg, #5d4037 0%, #4e342e 100%);
  border-radius: 40% 50% 50% 40% / 50% 60% 60% 50%;
  transform: translateX(-50%);
  animation: ve2-fig 5s ease-in-out 2.5s infinite;
}

.scn-verona-proteus-julia-ring .ring {
  position: absolute; bottom: 28%; left: 48%; width: 12px; height: 12px;
  background: radial-gradient(circle, #ffd54f 0%, #ffb300 100%);
  border-radius: 50%;
  box-shadow: 0 0 20px 6px rgba(255,179,0,0.5);
  animation: ve2-ring 3s ease-in-out infinite alternate;
}

.scn-verona-proteus-julia-ring .table {
  position: absolute; bottom: 25%; left: 40%; width: 60px; height: 10px;
  background: linear-gradient(180deg, #8d6e63 0%, #6d4c41 100%);
  border-radius: 4px;
  box-shadow: 0 4px 8px rgba(0,0,0,0.3);
  animation: ve2-table 10s ease-in-out infinite;
}

@keyframes ve2-window { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.9 } }
@keyframes ve2-fig { 0%,100% { transform: translateX(-50%) } 50% { transform: translateX(-48%) translateY(-2px) } }
@keyframes ve2-ring { 0% { box-shadow: 0 0 20px 6px rgba(255,179,0,0.5); transform: scale(1) } 50% { box-shadow: 0 0 30px 10px rgba(255,179,0,0.7); transform: scale(1.1) } 100% { box-shadow: 0 0 20px 6px rgba(255,179,0,0.5); transform: scale(1) } }
@keyframes ve2-table { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-1px) } }

/* Scene 3: verona-julia-ring-exit */
.scn-verona-julia-ring-exit {
  background: linear-gradient(180deg, #3e2723 0%, #4e342e 30%, #5d4037 70%, #3e2723 100%),
              radial-gradient(ellipse at 70% 40%, #ffcc80 0%, transparent 50%);
}

.scn-verona-julia-ring-exit .wall {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(90deg, #4e342e 0%, #5d4037 50%, #4e342e 100%);
  box-shadow: inset 0 0 60px rgba(0,0,0,0.4);
}

.scn-verona-julia-ring-exit .doorway {
  position: absolute; bottom: 15%; left: 50%; width: 60px; height: 110px;
  transform: translateX(-50%);
  background: #3e2723;
  border: 3px solid #6d4c41;
  border-radius: 4px;
  box-shadow: inset 0 0 30px rgba(0,0,0,0.5);
}

.scn-verona-julia-ring-exit .julia-exit {
  position: absolute; bottom: 20%; left: 55%; width: 36px; height: 76px;
  background: linear-gradient(180deg, #6d4c41 0%, #4e342e 100%);
  border-radius: 40% 50% 50% 40% / 50% 60% 60% 50%;
  transform: translateX(-50%);
  animation: ve3-exit 8s ease-in-out infinite;
}

.scn-verona-julia-ring-exit .proteus-reach {
  position: absolute; bottom: 20%; left: 40%; width: 40px; height: 80px;
  background: linear-gradient(180deg, #5d4037 0%, #3e2723 100%);
  border-radius: 50% 40% 40% 50% / 60% 50% 50% 60%;
  transform: translateX(-50%) rotate(10deg);
  animation: ve3-reach 4s ease-in-out infinite alternate;
}

.scn-verona-julia-ring-exit .ring-drop {
  position: absolute; bottom: 28%; left: 46%; width: 10px; height: 10px;
  background: radial-gradient(circle, #ffd54f 0%, #ffb300 100%);
  border-radius: 50%;
  box-shadow: 0 0 12px 4px rgba(255,179,0,0.4);
  animation: ve3-ring 4s ease-in-out infinite;
}

.scn-verona-julia-ring-exit .shadow {
  position: absolute; bottom: 12%; left: 42%; width: 50px; height: 12px;
  background: rgba(0,0,0,0.3);
  border-radius: 50%;
  filter: blur(3px);
  animation: ve3-shadow 6s ease-in-out infinite;
}

@keyframes ve3-exit { 0% { transform: translateX(-50%) } 50% { transform: translateX(30px) scale(0.9) } 100% { transform: translateX(-50%) } }
@keyframes ve3-reach { 0% { transform: translateX(-50%) rotate(10deg) } 50% { transform: translateX(-40%) rotate(15deg) scale(1.03) } 100% { transform: translateX(-50%) rotate(10deg) } }
@keyframes ve3-ring { 0%,100% { transform: translateY(0) scale(1) } 50% { transform: translateY(-10px) scale(0.8) } }
@keyframes ve3-shadow { 0%,100% { transform: scaleX(1) } 50% { transform: scaleX(0.6) } }

/* Scene 4: verona-launce-dog */
.scn-verona-launce-dog {
  background: linear-gradient(180deg, #ffe082 0%, #ffcc80 30%, #ffe0b2 70%, #fff3e0 100%),
              radial-gradient(ellipse at 50% 70%, #fff9c4 0%, transparent 60%);
}

.scn-verona-launce-dog .sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #fff9e6 0%, #e3f2fd 100%);
}

.scn-verona-launce-dog .buildings {
  position: absolute; bottom: 30%; left: 0; right: 0; height: 35%;
  background: linear-gradient(90deg, #d7ccc8 0%, #bcaaa4 50%, #d7ccc8 100%);
  clip-path: polygon(0% 0%, 10% 20%, 20% 0%, 35% 15%, 50% 0%, 65% 10%, 80% 0%, 100% 25%, 100% 100%, 0% 100%);
  animation: ve4-build 20s ease-in-out infinite alternate;
}

.scn-verona-launce-dog .street {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #bcaaa4 0%, #8d6e63 100%);
  border-radius: 0;
}

.scn-verona-launce-dog .launce {
  position: absolute; bottom: 15%; left: 40%; width: 44px; height: 90px;
  background: linear-gradient(180deg, #4e342e 0%, #3e2723 100%);
  border-radius: 50% 40% 40% 50% / 60% 50% 50% 60%;
  transform: rotate(-5deg);
  animation: ve4-launce 3s ease-in-out infinite;
}

.scn-verona-launce-dog .dog {
  position: absolute; bottom: 10%; left: 60%; width: 30px; height: 35px;
  background: linear-gradient(180deg, #6d4c41 0%, #4e342e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: rotate(10deg);
  animation: ve4-dog 2s ease-in-out infinite alternate;
}

.scn-verona-launce-dog .tear {
  position: absolute; bottom: 45%; left: 35%; width: 6px; height: 10px;
  background: radial-gradient(circle, #81d4fa 0%, #29b6f6 100%);
  border-radius: 50%;
  animation: ve4-tear 1.5s ease-in-out infinite;
}

.scn-verona-launce-dog .puddle {
  position: absolute; bottom: 5%; left: 45%; width: 50px; height: 8px;
  background: radial-gradient(ellipse, #90caf9 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(2px);
  animation: ve4-puddle 8s ease-in-out infinite alternate;
}

@keyframes ve4-build { 0% { transform: translateY(0) } 50% { transform: translateY(-3px) } 100% { transform: translateY(0) } }
@keyframes ve4-launce { 0% { transform: rotate(-5deg) } 50% { transform: rotate(-8deg) translateY(-2px) } 100% { transform: rotate(-5deg) } }
@keyframes ve4-dog { 0% { transform: rotate(10deg) translateY(0) } 100% { transform: rotate(15deg) translateY(-3px) } }
@keyframes ve4-tear { 0%,100% { opacity:0; transform: translateY(0) } 50% { opacity:1; transform: translateY(6px) } }
@keyframes ve4-puddle { 0% { opacity:0.6; transform: scaleX(1) } 100% { opacity:0.9; transform: scaleX(1.2) } }

.scn-verona-open-place-valentine-proteus {
  background: linear-gradient(180deg, #8ecae6 0%, #f4d06f 40%, #e9c46a 60%, #d4a373 100%),
              radial-gradient(ellipse at 50% 30%, #ffd166 0%, transparent 60%);
}
.scn-verona-open-place-valentine-proteus .vov.sky {
  position: absolute; inset: 0; background: linear-gradient(180deg, #a2d2ff 0%, #8ecae6 40%, transparent 100%);
  animation: vovSky 20s ease-in-out infinite alternate;
}
.scn-verona-open-place-valentine-proteus .vov.sun {
  position: absolute; top: 12%; left: 75%; width: 50px; height: 50px; border-radius: 50%;
  background: radial-gradient(circle, #ffe066 0%, #ffb703 40%, transparent 70%);
  box-shadow: 0 0 40px 15px #ffb70333, 0 0 80px 30px #ffb7031a;
  animation: vovSun 15s ease-in-out infinite alternate;
}
.scn-verona-open-place-valentine-proteus .vov.ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #d4a373 0%, #b5835a 50%, #9c6644 100%);
  border-radius: 60% 40% 0 0 / 30% 20% 0 0;
}
.scn-verona-open-place-valentine-proteus .vov.tree-l {
  position: absolute; bottom: 38%; left: 12%; width: 30px; height: 120px;
  background: linear-gradient(180deg, #4a4a3a 0%, #2a2a1a 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 20% 20%; clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
  animation: vovTree 6s ease-in-out infinite;
}
.scn-verona-open-place-valentine-proteus .vov.tree-r {
  position: absolute; bottom: 35%; right: 18%; width: 25px; height: 100px;
  background: linear-gradient(180deg, #3a3a2a 0%, #1a1a0a 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 20% 20%; clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
  animation: vovTree 8s ease-in-out infinite reverse;
}
.scn-verona-open-place-valentine-proteus .vov.figure-l {
  position: absolute; bottom: 30%; left: 30%; width: 20px; height: 45px;
  background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vovFigureL 5s ease-in-out infinite;
}
.scn-verona-open-place-valentine-proteus .vov.figure-r {
  position: absolute; bottom: 30%; right: 30%; width: 20px; height: 48px;
  background: linear-gradient(180deg, #2a3a1a 0%, #1a2a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vovFigureR 5s ease-in-out infinite 1s;
}
.scn-verona-open-place-valentine-proteus .vov.cloud {
  position: absolute; top: 15%; left: -80px; width: 100px; height: 20px;
  background: linear-gradient(180deg, rgba(255,255,255,0.6) 0%, rgba(255,255,255,0.1) 100%);
  border-radius: 50%; filter: blur(6px);
  animation: vovCloud 40s linear infinite;
}

@keyframes vovSky {
  0%, 100% { opacity: 0.8; transform: scaleY(1); }
  50% { opacity: 1; transform: scaleY(1.02); }
}
@keyframes vovSun {
  0% { transform: scale(0.95); opacity: 0.9; }
  50% { transform: scale(1.05); opacity: 1; }
  100% { transform: scale(0.98); opacity: 0.95; }
}
@keyframes vovTree {
  0%, 100% { transform: rotate(0deg); }
  50% { transform: rotate(2deg); }
}
@keyframes vovFigureL {
  0% { transform: translateX(0) translateY(0) rotate(0deg); }
  25% { transform: translateX(3px) translateY(-1px) rotate(2deg); }
  50% { transform: translateX(0) translateY(0) rotate(0deg); }
  75% { transform: translateX(-3px) translateY(-1px) rotate(-2deg); }
  100% { transform: translateX(0) translateY(0) rotate(0deg); }
}
@keyframes vovFigureR {
  0% { transform: translateX(0) translateY(0) rotate(0deg); }
  25% { transform: translateX(-4px) translateY(-1px) rotate(-2deg); }
  50% { transform: translateX(0) translateY(0) rotate(0deg); }
  75% { transform: translateX(4px) translateY(-1px) rotate(2deg); }
  100% { transform: translateX(0) translateY(0) rotate(0deg); }
}
@keyframes vovCloud {
  0% { transform: translateX(0); }
  100% { transform: translateX(150vw); }
}

/* --- Scene 2 --- */
.scn-valentine-proteus-argument {
  background: linear-gradient(180deg, #f4a261 0%, #e76f51 30%, #f4a261 60%, #d4a373 100%),
              radial-gradient(ellipse at 50% 50%, #e76f5133 0%, transparent 80%);
}
.scn-valentine-proteus-argument .vpa.bg {
  position: absolute; inset: 0; background: linear-gradient(180deg, #f4a261 0%, transparent 60%);
  animation: vpaBg 4s ease-in-out infinite alternate;
}
.scn-valentine-proteus-argument .vpa.floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #9c6644 0%, #7f4f24 100%);
  clip-path: polygon(0% 30%, 100% 30%, 100% 100%, 0% 100%);
}
.scn-valentine-proteus-argument .vpa.wall {
  position: absolute; bottom: 35%; left: 10%; right: 10%; height: 50%;
  background: linear-gradient(90deg, #b5835a 0%, #a67c52 50%, #b5835a 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.3);
  animation: vpaWall 6s ease-in-out infinite;
}
.scn-valentine-proteus-argument .vpa.shadow {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, rgba(0,0,0,0.4) 0%, transparent 100%);
  animation: vpaShadow 2s ease-in-out infinite alternate;
}
.scn-valentine-proteus-argument .vpa.figure-left {
  position: absolute; bottom: 35%; left: 25%; 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: vpaFigL 1.5s ease-in-out infinite;
}
.scn-valentine-proteus-argument .vpa.figure-right {
  position: absolute; bottom: 35%; right: 25%; width: 22px; height: 52px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vpaFigR 2.4s ease-in-out infinite;
}
.scn-valentine-proteus-argument .vpa.spark {
  position: absolute; top: 40%; left: 48%; width: 8px; height: 8px;
  background: radial-gradient(circle, #ffb703 0%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 20px 8px #ffb70366;
  animation: vpaSpark 1.6s ease-in-out infinite alternate;
}

@keyframes vpaBg {
  0% { opacity: 0.9; transform: scaleY(1); }
  50% { opacity: 1; transform: scaleY(1.03); }
  100% { opacity: 0.85; transform: scaleY(0.98); }
}
@keyframes vpaWall {
  0%, 100% { transform: translateX(0); }
  50% { transform: translateX(5px); }
}
@keyframes vpaShadow {
  0% { opacity: 0.6; }
  100% { opacity: 1; }
}
@keyframes vpaFigL {
  0% { transform: translateX(0) translateY(0) rotate(-5deg); }
  50% { transform: translateX(8px) translateY(-4px) rotate(5deg); }
  100% { transform: translateX(0) translateY(0) rotate(-5deg); }
}
@keyframes vpaFigR {
  0% { transform: translateX(0) translateY(0) rotate(5deg); }
  50% { transform: translateX(-8px) translateY(-4px) rotate(-5deg); }
  100% { transform: translateX(0) translateY(0) rotate(5deg); }
}
@keyframes vpaSpark {
  0% { transform: scale(0.5); opacity: 0.3; }
  100% { transform: scale(1.5); opacity: 1; }
}

/* --- Scene 3 --- */
.scn-valentine-proteus-debate {
  background: linear-gradient(180deg, #a2d2ff 0%, #8ecae6 40%, #219ebc 70%, #023047 100%),
              radial-gradient(ellipse at 70% 20%, #ffb703 0%, transparent 50%);
}
.scn-valentine-proteus-debate .vpd.sky {
  position: absolute; inset: 0 0 55% 0; background: linear-gradient(180deg, #8ecae6 0%, #219ebc 100%);
  animation: vpdSky 10s ease-in-out infinite alternate;
}
.scn-valentine-proteus-debate .vpd.pavement {
  position: absolute; bottom: 0; left: 0; right: 0; height: 55%;
  background: linear-gradient(180deg, #b5835a 0%, #8b5a2b 50%, #5c3a1e 100%);
  clip-path: polygon(0% 20%, 100% 20%, 100% 100%, 0% 100%);
  animation: vpdPavement 8s ease-in-out infinite;
}
.scn-valentine-proteus-debate .vpd.bench {
  position: absolute; bottom: 40%; left: 30%; right: 30%; height: 10%;
  background: linear-gradient(180deg, #6c4a2e 0%, #4a2a1a 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: 0 5px 10px rgba(0,0,0,0.4);
  animation: vpdBench 4s ease-in-out infinite;
}
.scn-valentine-proteus-debate .vpd.figure-one {
  position: absolute; bottom: 38%; left: 20%; width: 24px; height: 55px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vpdFig1 3s ease-in-out infinite;
}
.scn-valentine-proteus-debate .vpd.figure-two {
  position: absolute; bottom: 38%; right: 20%; width: 24px; height: 55px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vpdFig2 3.5s ease-in-out infinite;
}
.scn-valentine-proteus-debate .vpd.cape {
  position: absolute; bottom: 38%; left: 22%; width: 30px; height: 40px;
  background: linear-gradient(180deg, #5c3a1e 0%, #3a1a0a 100%);
  border-radius: 40% 60% 20% 20% / 50% 70% 30% 30%;
  clip-path: polygon(0% 0%, 100% 0%, 80% 100%, 20% 100%);
  animation: vpdCape 2s ease-in-out infinite;
}
.scn-valentine-proteus-debate .vpd.leaf {
  position: absolute; top: 20%; left: 60%; width: 12px; height: 12px;
  background: radial-gradient(circle, #606c38 0%, #283618 100%);
  border-radius: 50% 0 50% 0;
  animation: vpdLeaf 7s ease-in-out infinite;
}

@keyframes vpdSky {
  0% { opacity: 0.8; transform: translateY(0); }
  50% { opacity: 1; transform: translateY(-3px); }
  100% { opacity: 0.7; transform: translateY(0); }
}
@keyframes vpdPavement {
  0%, 100% { transform: scaleX(1); }
  50% { transform: scaleX(1.02) translateY(-2px); }
}
@keyframes vpdBench {
  0%, 100% { transform: translateX(0); }
  50% { transform: translateX(3px); }
}
@keyframes vpdFig1 {
  0% { transform: translateX(0) rotate(0deg); }
  25% { transform: translateX(5px) rotate(3deg); }
  50% { transform: translateX(0) rotate(0deg); }
  75% { transform: translateX(-5px) rotate(-3deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes vpdFig2 {
  0% { transform: translateX(0) rotate(0deg); }
  25% { transform: translateX(-5px) rotate(-3deg); }
  50% { transform: translateX(0) rotate(0deg); }
  75% { transform: translateX(5px) rotate(3deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes vpdCape {
  0%, 100% { transform: rotate(0deg) scaleX(1); }
  50% { transform: rotate(5deg) scaleX(1.1); }
}
@keyframes vpdLeaf {
  0% { transform: translate(0,0) rotate(0deg); opacity: 1; }
  50% { transform: translate(-20px, 30px) rotate(90deg); opacity: 0.5; }
  100% { transform: translate(0,60px) rotate(180deg); opacity: 0; }
}

/* --- Scene 4 --- */
.scn-proteus-soliloquy {
  background: linear-gradient(180deg, #f4a261 0%, #e9c46a 30%, #f4d06f 50%, #d4a373 100%),
              radial-gradient(ellipse at 30% 50%, #ffd166 0%, transparent 60%);
}
.scn-proteus-soliloquy .psl.horizon {
  position: absolute; inset: 0 0 50% 0; background: linear-gradient(180deg, #a2d2ff 0%, #8ecae6 50%, transparent 100%);
  animation: pslHorizon 15s ease-in-out infinite alternate;
}
.scn-proteus-soliloquy .psl.field {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #d4a373 0%, #b5835a 40%, #9c6644 100%);
  border-radius: 30% 70% 0 0 / 40% 50% 0 0;
  animation: pslField 12s ease-in-out infinite;
}
.scn-proteus-soliloquy .psl.lone-tree {
  position: absolute; bottom: 35%; left: 65%; width: 20px; height: 90px;
  background: linear-gradient(180deg, #3a3a2a 0%, #1a1a0a 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 20% 20%;
  transform-origin: bottom center;
  animation: pslTree 7s ease-in-out infinite;
}
.scn-proteus-soliloquy .psl.figure {
  position: absolute; bottom: 30%; left: 22%; width: 18px; height: 42px;
  background: linear-gradient(180deg, #2a2a1a 0%, #0a0a00 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pslFigure 6s ease-in-out infinite;
}
.scn-proteus-soliloquy .psl.cloak {
  position: absolute; bottom: 30%; left: 20%; width: 25px; height: 35px;
  background: linear-gradient(180deg, #5c3a1e 0%, #3a1a0a 100%);
  border-radius: 40% 60% 20% 20% / 50% 70% 30% 30%;
  clip-path: polygon(0% 0%, 100% 0%, 70% 100%, 30% 100%);
  animation: pslCloak 4s ease-in-out infinite;
}
.scn-proteus-soliloquy .psl.dust {
  position: absolute; bottom: 28%; left: 35%; width: 60px; height: 20px;
  background: radial-gradient(ellipse, rgba(180,160,140,0.4) 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(4px);
  animation: pslDust 8s ease-in-out infinite alternate;
}

@keyframes pslHorizon {
  0% { opacity: 0.7; }
  50% { opacity: 1; }
  100% { opacity: 0.8; }
}
@keyframes pslField {
  0%, 100% { transform: translateY(0) scaleY(1); }
  50% { transform: translateY(-3px) scaleY(1.02); }
}
@keyframes pslTree {
  0% { transform: rotate(0deg); }
  50% { transform: rotate(3deg); }
  100% { transform: rotate(0deg); }
}
@keyframes pslFigure {
  0% { transform: translateX(0) rotate(0deg); }
  30% { transform: translateX(2px) rotate(2deg); }
  60% { transform: translateX(-2px) rotate(-2deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes pslCloak {
  0%, 100% { transform: scaleX(1); }
  50% { transform: scaleX(1.1); }
}
@keyframes pslDust {
  0% { transform: translateX(0) scale(0.8); opacity: 0.3; }
  100% { transform: translateX(10px) scale(1.2); opacity: 0.6; }
}

.scn-item-revelation-ring {
  background:
    linear-gradient(180deg, #6b7a7e 0%, #4a5b5f 40%, #2f3e42 100%),
    radial-gradient(ellipse at 50% 60%, #7f8e92 0%, transparent 70%);
}
.scn-item-revelation-ring .overcast-sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #7e8a8d 0%, transparent 100%);
  animation: irr-sky 14s ease-in-out infinite alternate;
}
.scn-item-revelation-ring .hand-left {
  position: absolute; bottom: 28%; left: 30%; width: 70px; height: 90px;
  background: 
    linear-gradient(135deg, #d4b89a 0%, #a88668 60%, #745941 100%);
  border-radius: 40% 35% 25% 30% / 50% 45% 35% 40%;
  transform-origin: bottom right;
  animation: irr-hand-l 6s ease-in-out infinite;
  box-shadow: 0 4px 12px rgba(0,0,0,0.4);
}
.scn-item-revelation-ring .hand-right {
  position: absolute; bottom: 30%; right: 30%; width: 65px; height: 85px;
  background: 
    linear-gradient(225deg, #c9ad91 0%, #a07d63 60%, #6b4f3b 100%);
  border-radius: 35% 40% 30% 25% / 45% 50% 40% 35%;
  transform-origin: bottom left;
  animation: irr-hand-r 7s ease-in-out infinite;
  box-shadow: 0 4px 12px rgba(0,0,0,0.4);
}
.scn-item-revelation-ring .ring-gold {
  position: absolute; bottom: 32%; left: 50%; width: 28px; height: 28px;
  background: radial-gradient(circle, #f0d080 0%, #c09540 60%, #7a5c20 100%);
  border-radius: 50%;
  box-shadow: 0 0 0 2px #e8c868, 0 4px 8px rgba(0,0,0,0.5);
  transform: translate(-50%, -50%);
  animation: irr-ring 3s ease-in-out infinite;
}
.scn-item-revelation-ring .ring-glow {
  position: absolute; bottom: 32%; left: 50%; width: 80px; height: 80px;
  background: radial-gradient(circle, rgba(240,208,128,0.3) 0%, transparent 70%);
  border-radius: 50%;
  transform: translate(-50%, -50%);
  animation: irr-glow 4s ease-in-out infinite alternate;
}
.scn-item-revelation-ring .mist-layer {
  position: absolute; inset: 0;
  background: linear-gradient(0deg, rgba(153,169,175,0.15) 0%, transparent 60%);
  animation: irr-mist 20s linear infinite alternate;
}

@keyframes irr-sky {
  0%,100% { opacity: 0.7; }
  50% { opacity: 1; }
}
@keyframes irr-hand-l {
  0%,100% { transform: translate(0,0) rotate(2deg); }
  50% { transform: translate(-8px, -4px) rotate(-1deg); }
}
@keyframes irr-hand-r {
  0%,100% { transform: translate(0,0) rotate(-2deg); }
  50% { transform: translate(8px, -4px) rotate(1deg); }
}
@keyframes irr-ring {
  0%,100% { transform: translate(-50%, -50%) scale(1); opacity: 0.9; }
  50% { transform: translate(-50%, -50%) scale(1.1); opacity: 1; }
}
@keyframes irr-glow {
  0%,100% { filter: blur(8px); opacity: 0.5; }
  50% { filter: blur(12px); opacity: 0.9; }
}
@keyframes irr-mist {
  0% { opacity: 0.2; }
  100% { opacity: 0.6; }
}

.scn-revelation-julia-identity {
  background:
    linear-gradient(90deg, #5a686b 0%, #3d4a4d 50%, #293337 100%),
    radial-gradient(ellipse at 60% 40%, #6c7b7f 0%, transparent 65%);
}
.scn-revelation-julia-identity .bg-dim {
  position: absolute; inset:0;
  background: linear-gradient(180deg, #3b484b 0%, transparent 100%);
  animation: rji-dim 12s ease-in-out infinite alternate;
}
.scn-revelation-julia-identity .figure-julia {
  position: absolute; bottom: 20%; left: 45%; width: 50px; height: 120px;
  background: 
    linear-gradient(180deg, #cbb8a0 0%, #9c8770 50%, #5f4c3b 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: rji-fig 5s ease-in-out infinite;
  box-shadow: 0 6px 12px rgba(0,0,0,0.5);
}
.scn-revelation-julia-identity .cloak-fall {
  position: absolute; bottom: 22%; left: 38%; width: 80px; height: 90px;
  background: 
    linear-gradient(180deg, #7a685a 0%, #4a3e35 100%);
  border-radius: 30% 30% 50% 50% / 20% 20% 60% 60%;
  clip-path: polygon(20% 0%, 80% 0%, 70% 100%, 30% 100%);
  animation: rji-cloak 8s ease-in-out infinite;
  transform-origin: top center;
}
.scn-revelation-julia-identity .hair-strands {
  position: absolute; bottom: 66%; left: 44%; width: 30px; height: 40px;
  background: linear-gradient(180deg, #3d2b1e 0%, #24170e 100%);
  border-radius: 50% 50% 20% 20% / 60% 60% 30% 30%;
  transform: rotate(-10deg);
  animation: rji-hair 4s ease-in-out infinite alternate;
}
.scn-revelation-julia-identity .light-spot {
  position: absolute; top: 25%; left: 40%; width: 90px; height: 90px;
  background: radial-gradient(circle, rgba(230,210,180,0.25) 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(10px);
  animation: rji-light 6s ease-in-out infinite alternate;
}
.scn-revelation-julia-identity .dust-motes {
  position: absolute; top: 20%; left: 30%; width: 60px; height: 60px;
  background: radial-gradient(circle, rgba(255,235,200,0.1) 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(4px);
  animation: rji-dust 10s linear infinite;
}

@keyframes rji-dim {
  0%,100% { opacity: 0.6; }
  50% { opacity: 0.9; }
}
@keyframes rji-fig {
  0%,100% { transform: translateX(0) translateY(0) rotate(0); }
  50% { transform: translateX(10px) translateY(-6px) rotate(3deg); }
}
@keyframes rji-cloak {
  0%,100% { transform: scaleY(1) translateY(0); }
  50% { transform: scaleY(1.05) translateY(-4px); }
}
@keyframes rji-hair {
  0% { transform: rotate(-12deg) translateX(0); }
  100% { transform: rotate(12deg) translateX(2px); }
}
@keyframes rji-light {
  0% { opacity: 0.3; filter: blur(10px); }
  100% { opacity: 0.7; filter: blur(15px); }
}
@keyframes rji-dust {
  0% { transform: translate(0,0); opacity: 0.2; }
  50% { transform: translate(20px, -30px); opacity: 0.5; }
  100% { transform: translate(-10px, -20px); opacity: 0.1; }
}

.scn-reconciliation-after-revelation {
  background:
    linear-gradient(180deg, #738184 0%, #4e5f62 30%, #2f3d40 100%),
    radial-gradient(ellipse at 50% 70%, #6a7c7f 0%, transparent 60%);
}
.scn-reconciliation-after-revelation .scene-bg {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, #5b6c6f 0%, transparent 100%);
  animation: rar-bg 15s ease-in-out infinite alternate;
}
.scn-reconciliation-after-revelation .figure-left {
  position: absolute; bottom: 22%; left: 20%; width: 55px; height: 130px;
  background: linear-gradient(180deg, #b09b87 0%, #7b6959 60%, #4c3d31 100%);
  border-radius: 40% 40% 30% 30% / 55% 55% 35% 35%;
  transform-origin: bottom center;
  animation: rar-left 8s ease-in-out infinite;
  box-shadow: 0 4px 10px rgba(0,0,0,0.4);
}
.scn-reconciliation-after-revelation .figure-center {
  position: absolute; bottom: 20%; left: 50%; width: 60px; height: 140px;
  background: linear-gradient(180deg, #c4b19d 0%, #8b7766 60%, #55473a 100%);
  border-radius: 45% 45% 35% 35% / 60% 60% 40% 40%;
  transform: translateX(-50%);
  transform-origin: bottom center;
  animation: rar-center 6s ease-in-out infinite;
  box-shadow: 0 6px 14px rgba(0,0,0,0.5);
  z-index: 2;
}
.scn-reconciliation-after-revelation .figure-right {
  position: absolute; bottom: 22%; right: 20%; width: 55px; height: 130px;
  background: linear-gradient(180deg, #b09b87 0%, #7b6959 60%, #4c3d31 100%);
  border-radius: 40% 40% 30% 30% / 55% 55% 35% 35%;
  transform-origin: bottom center;
  animation: rar-right 8s ease-in-out infinite;
  box-shadow: 0 4px 10px rgba(0,0,0,0.4);
}
.scn-reconciliation-after-revelation .handshake-center {
  position: absolute; bottom: 30%; left: 39%; width: 45px; height: 40px;
  background: radial-gradient(circle at 30% 50%, #d4bca8 0%, #a0856e 100%);
  border-radius: 30% 30% 10% 10% / 40% 40% 10% 10%;
  transform: rotate(5deg);
  animation: rar-hand 4s ease-in-out infinite alternate;
  box-shadow: 0 2px 6px rgba(0,0,0,0.3);
  z-index: 3;
}
.scn-reconciliation-after-revelation .recon-light {
  position: absolute; top: 15%; left: 35%; width: 120px; height: 120px;
  background: radial-gradient(circle, rgba(220,200,175,0.2) 0%, transparent 80%);
  border-radius: 50%;
  filter: blur(12px);
  animation: rar-light 10s ease-in-out infinite alternate;
}

@keyframes rar-bg {
  0%,100% { opacity: 0.7; }
  50% { opacity: 0.95; }
}
@keyframes rar-left {
  0%,100% { transform: translateX(0) translateY(0) rotate(2deg); }
  50% { transform: translateX(12px) translateY(-5px) rotate(-1deg); }
}
@keyframes rar-center {
  0%,100% { transform: translateX(-50%) translateY(0) rotate(0); }
  50% { transform: translateX(-50%) translateY(-8px) rotate(2deg); }
}
@keyframes rar-right {
  0%,100% { transform: translateX(0) translateY(0) rotate(-2deg); }
  50% { transform: translateX(-12px) translateY(-5px) rotate(1deg); }
}
@keyframes rar-hand {
  0% { transform: rotate(0deg) scale(1); }
  100% { transform: rotate(8deg) scale(1.05); }
}
@keyframes rar-light {
  0% { opacity: 0.2; filter: blur(12px); }
  100% { opacity: 0.5; filter: blur(20px); }
}

.scn-valentine-thurio-confrontation {
  background:
    linear-gradient(90deg, #3b4548 0%, #262d30 50%, #1a2022 100%),
    radial-gradient(ellipse at 50% 40%, #4d575a 0%, transparent 70%);
}
.scn-valentine-thurio-confrontation .bg-storm {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, #464f52 0%, #1f272a 70%, #101517 100%);
  animation: vtc-storm 20s ease-in-out infinite alternate;
}
.scn-valentine-thurio-confrontation .ground-shade {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(0deg, #141b1d 0%, transparent 100%);
  animation: vtc-ground 8s ease-in-out infinite alternate;
}
.scn-valentine-thurio-confrontation .valentine-body {
  position: absolute; bottom: 18%; left: 25%; width: 55px; height: 140px;
  background: linear-gradient(180deg, #3d3333 0%, #1f1818 100%);
  border-radius: 40% 40% 30% 30% / 55% 55% 35% 35%;
  transform-origin: bottom center;
  animation: vtc-val 3s ease-in-out infinite;
  box-shadow: 0 6px 12px rgba(0,0,0,0.6);
}
.scn-valentine-thurio-confrontation .thurio-body {
  position: absolute; bottom: 20%; right: 25%; width: 50px; height: 130px;
  background: linear-gradient(180deg, #4a3e3a 0%, #2a201e 100%);
  border-radius: 40% 40% 30% 30% / 55% 55% 35% 35%;
  transform: scaleX(-1);
  transform-origin: bottom center;
  animation: vtc-thur 3.5s ease-in-out infinite;
  box-shadow: 0 6px 12px rgba(0,0,0,0.6);
}
.scn-valentine-thurio-confrontation .sword-blade {
  position: absolute; bottom: 38%; left: 37%; width: 6px; height: 90px;
  background: linear-gradient(180deg, #6b7a7e 0%, #3d484b 80%, transparent 100%);
  border-radius: 0 0 40% 40% / 0 0 20% 20%;
  transform: rotate(-15deg);
  transform-origin: bottom center;
  animation: vtc-sword 2s ease-in-out infinite alternate;
  box-shadow: 0 0 4px rgba(150,170,175,0.4);
}
.scn-valentine-thurio-confrontation .tension-spark {
  position: absolute; top: 35%; left: 48%; width: 12px; height: 12px;
  background: radial-gradient(circle, #e8d8b0 0%, #a08850 70%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 20px 8px rgba(232,216,176,0.3);
  animation: vtc-spark 1.5s steps(3) infinite;
}

@keyframes vtc-storm {
  0%,100% { opacity: 0.7; }
  50% { opacity: 1; }
}
@keyframes vtc-ground {
  0% { opacity: 0.5; }
  100% { opacity: 0.85; }
}
@keyframes vtc-val {
  0%,100% { transform: translateX(0) rotate(0); }
  25% { transform: translateX(-4px) rotate(-3deg); }
  50% { transform: translateX(0) rotate(1deg); }
  75% { transform: translateX(4px) rotate(3deg); }
}
@keyframes vtc-thur {
  0%,100% { transform: scaleX(-1) translateX(0) rotate(0); }
  25% { transform: scaleX(-1) translateX(4px) rotate(3deg); }
  50% { transform: scaleX(-1) translateX(0) rotate(-1deg); }
  75% { transform: scaleX(-1) translateX(-4px) rotate(-3deg); }
}
@keyframes vtc-sword {
  0% { transform: rotate(-12deg) translateY(0); opacity: 0.8; }
  100% { transform: rotate(-18deg) translateY(-6px); opacity: 1; }
}
@keyframes vtc-spark {
  0% { opacity: 0; transform: scale(0.8); }
  50% { opacity: 1; transform: scale(1.2); }
  100% { opacity: 0; transform: scale(0.8); }
}

/* Scene: silvia-upstairs-proteus (tense, moonlit) */
.scn-silvia-upstairs-proteus {
  background:
    linear-gradient(180deg, #0b0e2a 0%, #1a1f4e 50%, #2a2f5e 100%),
    radial-gradient(ellipse at 50% -10%, #3a4f8e 0%, transparent 60%);
}
.scn-silvia-upstairs-proteus .bg-night {
  position: absolute; inset: 0; background: linear-gradient(180deg, #04081a 0%, #0e1a3a 100%);
  animation: su-sky 15s ease-in-out infinite alternate;
}
.scn-silvia-upstairs-proteus .moon {
  position: absolute; top: 15%; left: 60%; width: 50px; height: 50px;
  background: radial-gradient(circle, #d0d8f0 0%, #8090b0 80%);
  border-radius: 50%; box-shadow: 0 0 40px 20px rgba(128,144,176,0.5);
  animation: su-moonpulse 8s ease-in-out infinite;
}
.scn-silvia-upstairs-proteus .window-frame {
  position: absolute; bottom: 25%; left: 50%; width: 120px; height: 160px;
  transform: translateX(-50%); background: #2a2a3a; border: 6px solid #4a4a5a;
  border-radius: 4px; box-shadow: inset 0 0 30px rgba(0,0,0,0.6);
}
.scn-silvia-upstairs-proteus .sill {
  position: absolute; bottom: 25%; left: 50%; width: 140px; height: 12px;
  transform: translateX(-50%); background: linear-gradient(180deg, #5a5a6a 0%, #3a3a4a 100%);
  border-radius: 2px;
}
.scn-silvia-upstairs-proteus .figure-proteus {
  position: absolute; bottom: 28%; left: 42%; width: 24px; height: 50px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: su-bow 6s ease-in-out infinite;
}
.scn-silvia-upstairs-proteus .figure-silvia {
  position: absolute; bottom: 28%; right: 42%; width: 20px; height: 48px;
  background: linear-gradient(180deg, #2a2a3e 0%, #1a1a2e 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 40% 40%;
  transform-origin: bottom center;
  animation: su-step 4s ease-in-out infinite alternate;
}
.scn-silvia-upstairs-proteus .curtain-left {
  position: absolute; bottom: 27%; left: 44%; width: 30px; height: 130px;
  background: linear-gradient(90deg, #1a1e3a 0%, #2a2e4a 50%, #1a1e3a 100%);
  border-radius: 0 20px 20px 0; opacity: 0.7;
  animation: su-sway 10s ease-in-out infinite;
}
.scn-silvia-upstairs-proteus .curtain-right {
  position: absolute; bottom: 27%; right: 44%; width: 30px; height: 130px;
  background: linear-gradient(90deg, #1a1e3a 0%, #2a2e4a 50%, #1a1e3a 100%);
  border-radius: 20px 0 0 20px; opacity: 0.7;
  animation: su-sway 10s ease-in-out infinite reverse;
}
@keyframes su-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.85 } }
@keyframes su-moonpulse { 0%,100% { transform: scale(1); box-shadow: 0 0 40px 20px rgba(128,144,176,0.5); } 50% { transform: scale(1.05); box-shadow: 0 0 60px 30px rgba(128,144,176,0.7); } }
@keyframes su-bow { 0%,100% { transform: rotate(0) translateY(0); } 25% { transform: rotate(-3deg) translateY(-2px); } 75% { transform: rotate(3deg) translateY(-1px); } }
@keyframes su-step { 0% { transform: translateY(0); } 50% { transform: translateY(-3px); } 100% { transform: translateY(0); } }
@keyframes su-sway { 0%,100% { transform: translateX(0); } 50% { transform: translateX(5px); } }

/* Scene: item-picture-promise (tense, moonlit) */
.scn-item-picture-promise {
  background:
    linear-gradient(180deg, #0a0c1a 0%, #141a3a 60%, #1a2242 100%),
    radial-gradient(ellipse at 50% 100%, #2a3a5a 0%, transparent 70%);
}
.scn-item-picture-promise .bg-night {
  position: absolute; inset: 0; background: linear-gradient(180deg, #040610 0%, #0a1228 100%);
}
.scn-item-picture-promise .moon-glow {
  position: absolute; top: 10%; left: 50%; width: 40px; height: 40px;
  background: radial-gradient(circle, #c0c8e0 0%, #6070a0 80%);
  border-radius: 50%; box-shadow: 0 0 60px 30px rgba(96,112,160,0.6);
  animation: ip-moon 12s ease-in-out infinite alternate;
}
.scn-item-picture-promise .stars {
  position: absolute; inset: 0; background: radial-gradient(2px 2px at 20% 30%, #fff, transparent),
                      radial-gradient(2px 2px at 40% 60%, #fff, transparent),
                      radial-gradient(1px 1px at 70% 15%, #fff, transparent),
                      radial-gradient(2px 2px at 85% 50%, #fff, transparent);
  background-size: 200px 200px; animation: ip-twinkle 4s ease-in-out infinite;
}
.scn-item-picture-promise .inn-building {
  position: absolute; bottom: 20%; left: 50%; width: 160px; height: 140px;
  transform: translateX(-50%); background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%);
  border-radius: 4px; box-shadow: 0 8px 20px rgba(0,0,0,0.6);
}
.scn-item-picture-promise .sign-frame {
  position: absolute; bottom: 55%; left: 50%; width: 60px; height: 40px;
  transform: translateX(-50%); background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border: 3px solid #7a5a3a; border-radius: 4px;
  animation: ip-swing 8s ease-in-out infinite;
}
.scn-item-picture-promise .picture-portrait {
  position: absolute; bottom: 57%; left: 50%; width: 36px; height: 26px;
  transform: translateX(-50%); background: linear-gradient(135deg, #4a3a5a 0%, #2a1a3a 100%);
  border-radius: 2px; opacity: 0.8;
}
.scn-item-picture-promise .figure-host {
  position: absolute; bottom: 22%; left: 40%; width: 22px; height: 44px;
  background: linear-gradient(180deg, #2a2a3a 0%, #0e0e1a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ip-pace 6s ease-in-out infinite;
}
@keyframes ip-moon { 0% { transform: scale(1); opacity:0.8; } 50% { transform: scale(1.03); opacity:1; } 100% { transform: scale(0.98); opacity:0.9; } }
@keyframes ip-twinkle { 0%,100% { opacity:0.6; } 50% { opacity:1; } }
@keyframes ip-swing { 0%,100% { transform: translateX(-50%) rotate(-2deg); } 50% { transform: translateX(-50%) rotate(2deg); } }
@keyframes ip-pace { 0%,100% { transform: translateX(0); } 25% { transform: translateX(6px); } 75% { transform: translateX(-4px); } }

/* Scene: eglamour-arrival (calm, dawn) */
.scn-eglamour-arrival {
  background:
    linear-gradient(180deg, #f2c8a0 0%, #e8a87a 30%, #b88060 60%, #706050 100%),
    radial-gradient(ellipse at 50% 0%, #fad0a0 0%, transparent 60%);
}
.scn-eglamour-arrival .bg-dawn {
  position: absolute; inset: 0; background: linear-gradient(180deg, #fae0c0 0%, #d4a080 60%, #a08060 100%);
  animation: ea-dawn 15s ease-in-out infinite alternate;
}
.scn-eglamour-arrival .sunrise {
  position: absolute; top: 20%; left: 45%; width: 80px; height: 80px;
  background: radial-gradient(circle, #ffe8a0 0%, #f8c070 30%, transparent 80%);
  border-radius: 50%; box-shadow: 0 0 80px 40px rgba(248,192,112,0.5);
  animation: ea-sun 20s ease-in-out infinite;
}
.scn-eglamour-arrival .tree {
  position: absolute; bottom: 20%; left: 20%; width: 80px; height: 120px;
  background: linear-gradient(180deg, #3a5a3a 0%, #2a4a2a 100%);
  border-radius: 40% 60% 30% 50% / 70% 80% 30% 20%;
}
.scn-eglamour-arrival .bushes {
  position: absolute; bottom: 18%; left: 10%; right: 30%; height: 40px;
  background: radial-gradient(ellipse at 30% 100%, #4a6a4a 0%, transparent 70%);
  filter: blur(2px);
}
.scn-eglamour-arrival .window-eglamour {
  position: absolute; bottom: 40%; left: 50%; width: 60px; height: 70px;
  transform: translateX(-50%); background: #2a2a3a;
  border: 4px solid #5a5a6a; border-radius: 4px;
  box-shadow: inset 0 0 20px rgba(0,0,0,0.4);
}
.scn-eglamour-arrival .silhouette-eglamour {
  position: absolute; bottom: 18%; left: 45%; width: 18px; height: 50px;
  background: linear-gradient(180deg, #2a2a3a 0%, #0e0e1a 100%);
  border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: ea-wait 8s ease-in-out infinite;
}
.scn-eglamour-arrival .vine {
  position: absolute; bottom: 20%; left: 48%; width: 8px; height: 60px;
  background: linear-gradient(180deg, #2a4a2a 0%, #1a3a1a 100%);
  border-radius: 40%; transform: rotate(10deg);
  animation: ea-twine 12s ease-in-out infinite;
}
@keyframes ea-dawn { 0% { opacity:0.7; } 50% { opacity:1; } 100% { opacity:0.9; } }
@keyframes ea-sun { 0%,100% { transform: scale(1); opacity:0.8; } 50% { transform: scale(1.05); opacity:1; } }
@keyframes ea-wait { 0%,100% { transform: translateY(0); } 25% { transform: translateY(-2px); } 75% { transform: translateY(1px); } }
@keyframes ea-twine { 0%,100% { transform: rotate(8deg); } 50% { transform: rotate(12deg); } }

/* Scene: launce-and-crab (funny, bright-interior) */
.scn-launce-and-crab {
  background:
    linear-gradient(180deg, #f0e8c0 0%, #d8c8a0 50%, #b8a880 100%),
    radial-gradient(ellipse at 50% 0%, #fff8e0 0%, transparent 70%);
}
.scn-launce-and-crab .bg-interior {
  position: absolute; inset: 0; background: linear-gradient(135deg, #f4e8c8 0%, #dcd0b0 50%, #c8b890 100%);
  animation: lc-wall 6s ease-in-out infinite alternate;
}
.scn-launce-and-crab .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #a08860 0%, #807040 100%);
  border-top: 4px solid #908050;
  animation: lc-floor 8s ease-in-out infinite;
}
.scn-launce-and-crab .table {
  position: absolute; bottom: 22%; left: 55%; width: 100px; height: 14px;
  background: linear-gradient(180deg, #8a7a5a 0%, #6a5a3a 100%);
  border-radius: 2px; transform: rotate(-2deg);
}
.scn-launce-and-crab .silhouette-launce {
  position: absolute; bottom: 25%; left: 30%; width: 26px; height: 60px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: lc-jiggle 3s ease-in-out infinite;
}
.scn-launce-and-crab .silhouette-crab {
  position: absolute; bottom: 20%; left: 38%; width: 14px; height: 24px;
  background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: lc-pant 2s ease-in-out infinite alternate;
}
.scn-launce-and-crab .hat {
  position: absolute; bottom: 55%; left: 32%; width: 30px; height: 14px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 50%; transform: rotate(-10deg);
  animation: lc-flip 4s ease-in-out infinite;
}
.scn-launce-and-crab .boot {
  position: absolute; bottom: 18%; left: 45%; width: 16px; height: 12px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 30% 60% 40% 40%;
  animation: lc-tap 3s ease-in-out infinite;
}
@keyframes lc-wall { 0%,100% { filter: brightness(1); } 50% { filter: brightness(1.05); } }
@keyframes lc-floor { 0%,100% { background-position: 0 0; } 50% { background-position: 4px 0; } }
@keyframes lc-jiggle { 0%,100% { transform: rotate(0); } 25% { transform: rotate(-2deg); } 75% { transform: rotate(2deg); } }
@keyframes lc-pant { 0% { transform: scaleY(1); } 100% { transform: scaleY(0.9); } }
@keyframes lc-flip { 0%,100% { transform: rotate(-10deg) translateY(0); } 50% { transform: rotate(5deg) translateY(-4px); } }
@keyframes lc-tap { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-3px); } }

.scn-proteus-and-sebastian {
  background: linear-gradient(180deg, #e8dcc8 0%, #cbb79e 30%, #8a7a6a 70%, #4a3e32 100%),
              radial-gradient(ellipse at 60% 20%, #f5e6c8 0%, transparent 50%);
}
.scn-proteus-and-sebastian .wall {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(135deg, #d4c5b0 0%, #b8a892 40%, #9a8a7a 100%);
  animation: pse-wall 8s ease-in-out infinite alternate;
}
.scn-proteus-and-sebastian .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #6b5a4a 0%, #4a3e32 100%);
  box-shadow: inset 0 12px 20px rgba(0,0,0,0.3);
}
.scn-proteus-and-sebastian .shadow {
  position: absolute; bottom: 35%; left: 20%; width: 60%; height: 8%;
  background: radial-gradient(ellipse, #3a2e22 0%, transparent 70%);
  animation: pse-shadow 4s ease-in-out infinite alternate;
}
.scn-proteus-and-sebastian .figure-proteus {
  position: absolute; bottom: 35%; left: 25%; width: 12%; height: 40%;
  background: linear-gradient(180deg, #3a2e22 0%, #1f1713 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: pse-figure1 6s ease-in-out infinite;
}
.scn-proteus-and-sebastian .figure-julia {
  position: absolute; bottom: 35%; right: 25%; width: 10%; height: 38%;
  background: linear-gradient(180deg, #4a3e32 0%, #2a221c 100%);
  border-radius: 50% 50% 35% 35% / 55% 55% 35% 35%;
  transform-origin: bottom center;
  animation: pse-figure2 6s ease-in-out infinite alternate;
}
.scn-proteus-and-sebastian .table {
  position: absolute; bottom: 35%; left: 42%; width: 16%; height: 12%;
  background: linear-gradient(180deg, #8a7a6a 0%, #5a4e40 100%);
  border-radius: 4%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.4);
  animation: pse-table 10s ease-in-out infinite alternate;
}
.scn-proteus-and-sebastian .candle {
  position: absolute; bottom: 47%; left: 48%; width: 2%; height: 18%;
  background: linear-gradient(180deg, #f5e6c8 0%, #c9a64a 40%, #8a6a2a 100%);
  border-radius: 20% 20% 10% 10% / 40% 40% 20% 20%;
  box-shadow: 0 0 30px 10px #f5d080, 0 0 60px 20px rgba(245,208,128,0.3);
  animation: pse-candle 3s ease-in-out infinite alternate;
}
@keyframes pse-wall {
  0% { opacity: 0.85; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.02); }
  100% { opacity: 0.9; transform: scale(0.98); }
}
@keyframes pse-shadow {
  0% { transform: translateX(-5px) scaleY(1); opacity: 0.6; }
  50% { transform: translateX(5px) scaleY(1.2); opacity: 0.8; }
  100% { transform: translateX(-2px) scaleY(0.9); opacity: 0.5; }
}
@keyframes pse-figure1 {
  0% { transform: translateY(0) rotate(0deg); }
  33% { transform: translateY(-2px) rotate(2deg); }
  66% { transform: translateY(-1px) rotate(-1deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes pse-figure2 {
  0% { transform: translateY(0) rotate(0deg) scaleX(1); }
  50% { transform: translateY(-3px) rotate(-3deg) scaleX(1.05); }
  100% { transform: translateY(0) rotate(0deg) scaleX(1); }
}
@keyframes pse-table {
  0% { transform: translateY(0); box-shadow: 0 4px 8px rgba(0,0,0,0.4); }
  50% { transform: translateY(-1px); box-shadow: 0 6px 12px rgba(0,0,0,0.5); }
  100% { transform: translateY(0); box-shadow: 0 4px 8px rgba(0,0,0,0.4); }
}
@keyframes pse-candle {
  0% { opacity: 0.7; transform: scaleY(1) translateY(0); box-shadow: 0 0 20px 5px #f5d080; }
  50% { opacity: 1; transform: scaleY(1.1) translateY(-2px); box-shadow: 0 0 40px 15px #f5d080; }
  100% { opacity: 0.8; transform: scaleY(0.95) translateY(1px); box-shadow: 0 0 25px 8px #f5d080; }
}

.scn-item-ring-message {
  background: linear-gradient(180deg, #e8dcc8 0%, #cbb79e 30%, #8a7a6a 70%, #4a3e32 100%),
              radial-gradient(ellipse at 40% 50%, #f5e6c8 0%, transparent 60%);
}
.scn-item-ring-message .wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(135deg, #d4c5b0 0%, #b8a892 40%, #9a8a7a 100%);
  animation: irm-wall 10s ease-in-out infinite alternate;
}
.scn-item-ring-message .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #6b5a4a 0%, #4a3e32 100%);
  box-shadow: inset 0 10px 15px rgba(0,0,0,0.3);
}
.scn-item-ring-message .desk {
  position: absolute; bottom: 30%; left: 30%; width: 40%; height: 20%;
  background: linear-gradient(180deg, #8a7a6a 0%, #5a4e40 100%);
  border-radius: 2%;
  box-shadow: 0 6px 12px rgba(0,0,0,0.5);
  animation: irm-desk 12s ease-in-out infinite alternate;
}
.scn-item-ring-message .ring {
  position: absolute; bottom: 48%; left: 42%; width: 4%; height: 4%;
  background: radial-gradient(circle, #f5e6c8 0%, #c9a64a 60%, #8a6a2a 100%);
  border-radius: 50%;
  box-shadow: 0 0 20px 5px #f5d080, 0 0 40px 10px rgba(245,208,128,0.3);
  animation: irm-ring 4s ease-in-out infinite alternate;
}
.scn-item-ring-message .letter {
  position: absolute; bottom: 46%; left: 48%; width: 8%; height: 12%;
  background: linear-gradient(180deg, #f5e6c8 0%, #d4c5b0 100%);
  border-radius: 5% 5% 10% 10%;
  box-shadow: 0 2px 4px rgba(0,0,0,0.3);
  transform: rotate(5deg);
  animation: irm-letter 8s ease-in-out infinite;
}
.scn-item-ring-message .hand-ring {
  position: absolute; bottom: 30%; left: 38%; width: 8%; height: 20%;
  background: linear-gradient(180deg, #c9a64a 0%, #8a6a2a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: irm-hand 5s ease-in-out infinite alternate;
}
.scn-item-ring-message .candle-irm {
  position: absolute; bottom: 50%; left: 60%; width: 2%; height: 16%;
  background: linear-gradient(180deg, #f5e6c8 0%, #c9a64a 40%, #8a6a2a 100%);
  border-radius: 20% 20% 10% 10% / 40% 40% 20% 20%;
  box-shadow: 0 0 30px 10px #f5d080, 0 0 60px 20px rgba(245,208,128,0.3);
  animation: irm-candle 3s ease-in-out infinite alternate;
}
@keyframes irm-wall {
  0% { opacity: 0.85; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.02); }
  100% { opacity: 0.9; transform: scale(0.98); }
}
@keyframes irm-desk {
  0% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
  100% { transform: translateY(0); }
}
@keyframes irm-ring {
  0% { transform: scale(1) rotate(0deg); opacity: 0.8; }
  50% { transform: scale(1.1) rotate(15deg); opacity: 1; }
  100% { transform: scale(0.95) rotate(5deg); opacity: 0.9; }
}
@keyframes irm-letter {
  0% { transform: rotate(5deg) translateY(0); }
  33% { transform: rotate(7deg) translateY(-2px); }
  66% { transform: rotate(3deg) translateY(1px); }
  100% { transform: rotate(5deg) translateY(0); }
}
@keyframes irm-hand {
  0% { transform: translateY(0) rotate(-2deg); }
  50% { transform: translateY(-4px) rotate(3deg); }
  100% { transform: translateY(0) rotate(-1deg); }
}
@keyframes irm-candle {
  0% { opacity: 0.7; transform: scaleY(1) translateY(0); }
  50% { opacity: 1; transform: scaleY(1.1) translateY(-2px); }
  100% { opacity: 0.8; transform: scaleY(0.95) translateY(1px); }
}

.scn-item-picture-exchange {
  background: linear-gradient(180deg, #f5e6c8 0%, #e8dcc8 40%, #cbb79e 70%, #a89482 100%),
              radial-gradient(ellipse at 50% 20%, #fff6e0 0%, transparent 60%);
}
.scn-item-picture-exchange .wall-ipe {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(135deg, #e8dcc8 0%, #d4c5b0 50%, #b8a892 100%);
  animation: ipe-wall 12s ease-in-out infinite alternate;
}
.scn-item-picture-exchange .window-ipe {
  position: absolute; top: 10%; left: 50%; width: 30%; height: 40%;
  background: linear-gradient(135deg, #fff6e0 0%, #f5d080 100%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: inset 0 0 20px rgba(255,246,224,0.5);
  transform: translateX(-50%);
  animation: ipe-window 8s ease-in-out infinite alternate;
}
.scn-item-picture-exchange .picture-frame {
  position: absolute; bottom: 40%; left: 50%; width: 20%; height: 25%;
  background: linear-gradient(180deg, #8a6a2a 0%, #5a4a1a 100%);
  border-radius: 5%;
  border: 2px solid #c9a64a;
  box-shadow: 0 8px 16px rgba(0,0,0,0.4);
  transform: translateX(-50%);
  animation: ipe-frame 10s ease-in-out infinite alternate;
}
.scn-item-picture-exchange .hand-give {
  position: absolute; bottom: 40%; left: 38%; width: 10%; height: 22%;
  background: linear-gradient(180deg, #c9a64a 0%, #8a6a2a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: ipe-hand-give 6s ease-in-out infinite alternate;
}
.scn-item-picture-exchange .hand-receive {
  position: absolute; bottom: 40%; right: 38%; width: 10%; height: 22%;
  background: linear-gradient(180deg, #b88040 0%, #8a5a1a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: ipe-hand-receive 6s ease-in-out infinite alternate;
}
.scn-item-picture-exchange .floor-ipe {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #a89482 0%, #7a6a5a 100%);
  box-shadow: inset 0 12px 20px rgba(0,0,0,0.2);
}
.scn-item-picture-exchange .light-rays {
  position: absolute; top: 0; left: 30%; width: 40%; height: 80%;
  background: linear-gradient(135deg, rgba(255,246,224,0.4) 0%, transparent 50%);
  filter: blur(8px);
  animation: ipe-rays 15s ease-in-out infinite alternate;
}
@keyframes ipe-wall {
  0% { opacity: 0.9; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.01); }
  100% { opacity: 0.95; transform: scale(0.99); }
}
@keyframes ipe-window {
  0% { opacity: 0.8; box-shadow: inset 0 0 20px rgba(255,246,224,0.5); }
  50% { opacity: 1; box-shadow: inset 0 0 30px rgba(255,246,224,0.8); }
  100% { opacity: 0.85; box-shadow: inset 0 0 15px rgba(255,246,224,0.4); }
}
@keyframes ipe-frame {
  0% { transform: translateX(-50%) rotate(0deg); }
  50% { transform: translateX(-50%) rotate(2deg); }
  100% { transform: translateX(-50%) rotate(-1deg); }
}
@keyframes ipe-hand-give {
  0% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-4px) rotate(8deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes ipe-hand-receive {
  0% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-3px) rotate(-6deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes ipe-rays {
  0% { opacity: 0.3; transform: scaleX(1) translateX(0); }
  50% { opacity: 0.6; transform: scaleX(1.1) translateX(10px); }
  100% { opacity: 0.4; transform: scaleX(0.9) translateX(-5px); }
}

.scn-abbey-meeting-eglamour-silvia {
  background: linear-gradient(180deg, #2a2238 0%, #4a3a5e 30%, #8a6a7a 60%, #c9b0a0 100%),
              radial-gradient(ellipse at 50% 0%, #f5d080 0%, transparent 60%);
}
.scn-abbey-meeting-eglamour-silvia .sky-ame {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #2a2238 0%, #4a3a5e 40%, #6a5a7a 70%, #c9b0a0 100%);
  animation: ame-sky 20s ease-in-out infinite alternate;
}
.scn-abbey-meeting-eglamour-silvia .abbey-wall {
  position: absolute; bottom: 30%; left: 20%; width: 60%; height: 30%;
  background: linear-gradient(180deg, #8a7a6a 0%, #6a5a4a 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: inset 0 -10px 20px rgba(0,0,0,0.3);
  animation: ame-wall 15s ease-in-out infinite alternate;
}
.scn-abbey-meeting-eglamour-silvia .ground-ame {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #4a3e32 0%, #2a221c 100%);
}
.scn-abbey-meeting-eglamour-silvia .eglamour {
  position: absolute; bottom: 30%; left: 30%; width: 10%; height: 35%;
  background: linear-gradient(180deg, #3a2e22 0%, #1f1713 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: ame-eglamour 8s ease-in-out infinite alternate;
}
.scn-abbey-meeting-eglamour-silvia .silvia-ame {
  position: absolute; bottom: 30%; right: 30%; width: 10%; height: 34%;
  background: linear-gradient(180deg, #4a3a5e 0%, #2a2238 100%);
  border-radius: 50% 50% 35% 35% / 55% 55% 35% 35%;
  transform-origin: bottom center;
  animation: ame-silvia 10s ease-in-out infinite alternate;
}
.scn-abbey-meeting-eglamour-silvia .tree-ame {
  position: absolute; bottom: 30%; left: 10%; width: 15%; height: 50%;
  background: linear-gradient(180deg, #2a2a1a 0%, #1a1a0e 100%);
  border-radius: 30% 30% 10% 10% / 50% 50% 20% 20%;
  animation: ame-tree 25s ease-in-out infinite alternate;
}
.scn-abbey-meeting-eglamour-silvia .gate-ame {
  position: absolute; bottom: 30%; left: 45%; width: 10%; height: 25%;
  background: linear-gradient(180deg, #6a5a4a 0%, #4a3e32 100%);
  border-radius: 5% 5% 0 0;
  box-shadow: inset 0 4px 8px rgba(0,0,0,0.4);
  animation: ame-gate 18s ease-in-out infinite alternate;
}
@keyframes ame-sky {
  0% { opacity: 0.7; transform: translateY(0); }
  50% { opacity: 0.9; transform: translateY(-5px); }
  100% { opacity: 0.75; transform: translateY(3px); }
}
@keyframes ame-wall {
  0% { transform: scaleX(1); opacity: 0.8; }
  50% { transform: scaleX(1.02); opacity: 0.9; }
  100% { transform: scaleX(0.98); opacity: 0.85; }
}
@keyframes ame-eglamour {
  0% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-3px) rotate(2deg); }
  100% { transform: translateY(0) rotate(-1deg); }
}
@keyframes ame-silvia {
  0% { transform: translateY(0) rotate(0deg) scaleX(1); }
  33% { transform: translateY(-2px) rotate(-3deg) scaleX(1.05); }
  66% { transform: translateY(-5px) rotate(2deg) scaleX(0.95); }
  100% { transform: translateY(0) rotate(0deg) scaleX(1); }
}
@keyframes ame-tree {
  0% { transform: scaleY(1) translateX(0); }
  50% { transform: scaleY(1.05) translateX(3px); }
  100% { transform: scaleY(0.95) translateX(-2px); }
}
@keyframes ame-gate {
  0% { transform: scaleY(1) rotate(0deg); }
  50% { transform: scaleY(1.03) rotate(2deg); }
  100% { transform: scaleY(0.97) rotate(-1deg); }
}

/* Scene: verona-panthino-calls-launce */
.scn-verona-panthino-calls-launce {
  background:
    linear-gradient(180deg, #f9e7b3 0%, #f2c94c 30%, #e5a924 60%, #c1853a 100%),
    radial-gradient(ellipse at 70% 20%, #fff7d6 0%, transparent 50%);
}
.scn-verona-panthino-calls-launce .sky {
  position:absolute; inset:0 0 60% 0;
  background: linear-gradient(180deg, #fef3c0 0%, #f2d36b 70%, transparent 100%);
  animation: vp1-sky 12s ease-in-out infinite alternate;
}
.scn-verona-panthino-calls-launce .sun {
  position:absolute; top:8%; left:75%; width:40px; height:40px;
  background: radial-gradient(circle, #fff3b0 0%, #f5d742 60%, #e5a924 100%);
  border-radius:50%; box-shadow: 0 0 60px 30px #f5d742, 0 0 120px 60px rgba(245,215,66,0.3);
  animation: vp1-sun 8s ease-in-out infinite alternate;
}
.scn-verona-panthino-calls-launce .sea {
  position:absolute; bottom:0; left:0; right:0; height:60%;
  background: linear-gradient(180deg, #3b7a9e 0%, #2a5f7a 30%, #1e4d66 100%);
  animation: vp1-sea 6s ease-in-out infinite alternate;
}
.scn-verona-panthino-calls-launce .ship {
  position:absolute; bottom:40%; left:20%; width:120px; height:60px;
  background: linear-gradient(135deg, #6b4c2e 0%, #4a331e 100%);
  border-radius: 0 40% 0 0; clip-path: polygon(0 100%, 80% 100%, 100% 40%, 20% 40%);
  animation: vp1-ship 4s ease-in-out infinite;
}
.scn-verona-panthino-calls-launce .mast {
  position:absolute; bottom:55%; left:50%; width:8px; height:100px;
  background: linear-gradient(180deg, #8b6914 0%, #5a430c 100%);
  border-radius:2px; transform-origin: bottom center;
  animation: vp1-mast 5s ease-in-out infinite alternate;
}
.scn-verona-panthino-calls-launce .figure-launce {
  position:absolute; bottom:38%; left:45%; width:22px; height:40px;
  background: linear-gradient(180deg, #4a2c1a 0%, #2a1a0e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: vp1-walk 2.5s ease-in-out infinite;
}
.scn-verona-panthino-calls-launce .wave {
  position:absolute; bottom:30%; left:0; right:0; height:40px;
  background: linear-gradient(180deg, rgba(255,255,255,0.1) 0%, rgba(59,122,158,0.5) 100%);
  border-radius:50%; filter: blur(4px);
  animation: vp1-wave 4s ease-in-out infinite alternate;
}
@keyframes vp1-sky {
  0% { opacity:0.9; transform: scaleY(1); }
  50% { opacity:1; transform: scaleY(1.02); }
  100% { opacity:0.8; transform: scaleY(0.98); }
}
@keyframes vp1-sun {
  0% { transform: translate(0,0) scale(1); box-shadow: 0 0 60px 30px #f5d742; }
  50% { transform: translate(5px,-3px) scale(1.03); box-shadow: 0 0 80px 40px #ffe680; }
  100% { transform: translate(-2px,2px) scale(0.97); box-shadow: 0 0 50px 20px #f5d742; }
}
@keyframes vp1-sea {
  0% { transform: translateY(0); }
  50% { transform: translateY(-4px); }
  100% { transform: translateY(0); }
}
@keyframes vp1-ship {
  0% { transform: translate(0,0) rotate(0deg); }
  25% { transform: translate(3px,-2px) rotate(1deg); }
  50% { transform: translate(-2px,-1px) rotate(-1deg); }
  75% { transform: translate(2px,-3px) rotate(0.5deg); }
  100% { transform: translate(0,0) rotate(0deg); }
}
@keyframes vp1-mast {
  0% { transform: rotate(-1deg); }
  50% { transform: rotate(1.5deg); }
  100% { transform: rotate(-0.5deg); }
}
@keyframes vp1-walk {
  0% { transform: translateX(0) translateY(0) rotate(-1deg); }
  25% { transform: translateX(5px) translateY(-2px) rotate(0.5deg); }
  50% { transform: translateX(10px) translateY(0) rotate(-1.5deg); }
  75% { transform: translateX(15px) translateY(-1px) rotate(0.5deg); }
  100% { transform: translateX(20px) translateY(0) rotate(0deg); }
}
@keyframes vp1-wave {
  0% { transform: translateY(0) scaleY(1); }
  50% { transform: translateY(-5px) scaleY(1.1); }
  100% { transform: translateY(0) scaleY(1); }
}

/* Scene: milan-thurio-silvia-valentine */
.scn-milan-thurio-silvia-valentine {
  background:
    linear-gradient(180deg, #fdf4d7 0%, #f2d9a9 40%, #d9a84a 100%),
    radial-gradient(ellipse at 50% 80%, #fff7e6 0%, transparent 60%);
}
.scn-milan-thurio-silvia-valentine .wall-bg {
  position:absolute; inset:0 0 20% 0;
  background: linear-gradient(135deg, #f5e1b0 0%, #e3c38a 50%, #c69e6b 100%);
}
.scn-milan-thurio-silvia-valentine .floor {
  position:absolute; bottom:0; left:0; right:0; height:20%;
  background: linear-gradient(180deg, #b8885a 0%, #8a653a 100%);
}
.scn-milan-thurio-silvia-valentine .arch {
  position:absolute; bottom:20%; left:20%; width:60%; height:80%;
  background: radial-gradient(ellipse at 50% 100%, transparent 70%, #c69e6b 71%);
  clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);
  border-radius: 50% 50% 0 0 / 80% 80% 0 0;
  box-shadow: inset 0 -20px 40px rgba(0,0,0,0.1);
  animation: mtv-arch 12s ease-in-out infinite alternate;
}
.scn-milan-thurio-silvia-valentine .window {
  position:absolute; top:10%; left:40%; width:60px; height:80px;
  background: radial-gradient(ellipse at 50% 50%, #fff3c0 0%, #f5d742 50%, transparent 100%);
  border-radius:10% 10% 5% 5%; box-shadow: 0 0 40px 20px rgba(245,215,66,0.4);
  animation: mtv-window 5s ease-in-out infinite alternate;
}
.scn-milan-thurio-silvia-valentine .figure-silvia {
  position:absolute; bottom:20%; left:25%; width:25px; height:55px;
  background: linear-gradient(180deg, #f5d7a0 0%, #c69e6b 30%, #8a653a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: mtv-figure 4s ease-in-out infinite;
}
.scn-milan-thurio-silvia-valentine .figure-valentine {
  position:absolute; bottom:20%; right:25%; width:28px; height:55px;
  background: linear-gradient(180deg, #4a7a8a 0%, #2a5a6a 50%, #1a3a4a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: mtv-figure 4.5s ease-in-out infinite 0.5s;
}
.scn-milan-thurio-silvia-valentine .figure-thurio {
  position:absolute; bottom:20%; left:50%; width:26px; height:55px;
  transform:translateX(-50%);
  background: linear-gradient(180deg, #b86a4a 0%, #8a4a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: mtv-figure 5s ease-in-out infinite 1s;
}
@keyframes mtv-arch {
  0% { transform: scaleY(1) translateY(0); }
  50% { transform: scaleY(1.01) translateY(-2px); }
  100% { transform: scaleY(1) translateY(0); }
}
@keyframes mtv-window {
  0% { opacity:0.8; box-shadow: 0 0 30px 15px rgba(245,215,66,0.3); }
  50% { opacity:1; box-shadow: 0 0 60px 30px rgba(245,215,66,0.6); }
  100% { opacity:0.9; box-shadow: 0 0 40px 20px rgba(245,215,66,0.4); }
}
@keyframes mtv-figure {
  0% { transform: translateY(0) rotate(0deg); }
  25% { transform: translateY(-3px) rotate(2deg); }
  50% { transform: translateY(0) rotate(-1deg); }
  75% { transform: translateY(-2px) rotate(1deg); }
  100% { transform: translateY(0) rotate(0deg); }
}

/* Scene: duke-questions-valentine */
.scn-duke-questions-valentine {
  background:
    linear-gradient(180deg, #e8e4df 0%, #c5b8a8 50%, #9a8a78 100%),
    radial-gradient(ellipse at 50% 30%, #fff8f0 0%, transparent 70%);
}
.scn-duke-questions-valentine .chamber-bg {
  position:absolute; inset:0 0 15% 0;
  background: linear-gradient(135deg, #d4c0a8 0%, #b8a088 50%, #947c64 100%);
}
.scn-duke-questions-valentine .pillar {
  position:absolute; top:0; left:30%; width:20px; height:85%;
  background: linear-gradient(90deg, #c8b098 0%, #e2d0b8 30%, #c8b098 70%, #a08870 100%);
  border-radius:5% / 10%; box-shadow: 2px 0 12px rgba(0,0,0,0.15);
  animation: dqv-pillar 14s ease-in-out infinite alternate;
}
.scn-duke-questions-valentine .throne {
  position:absolute; bottom:15%; left:50%; width:80px; height:90px;
  transform:translateX(-50%);
  background: linear-gradient(180deg, #a08060 0%, #705038 50%, #503020 100%);
  clip-path: polygon(20% 0%, 80% 0%, 100% 100%, 0% 100%);
  border-radius: 20% 20% 5% 5%;
  box-shadow: 0 10px 30px rgba(0,0,0,0.3);
  animation: dqv-throne 8s ease-in-out infinite alternate;
}
.scn-duke-questions-valentine .floor {
  position:absolute; bottom:0; left:0; right:0; height:15%;
  background: linear-gradient(180deg, #9a8a78 0%, #7a6a58 100%);
}
.scn-duke-questions-valentine .figure-duke {
  position:absolute; bottom:15%; left:50%; width:30px; height:60px;
  transform:translateX(-50%);
  background: linear-gradient(180deg, #604830 0%, #403020 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: dqv-figure-slow 9s ease-in-out infinite;
}
.scn-duke-questions-valentine .figure-valentine {
  position:absolute; bottom:15%; left:20%; width:26px; height:55px;
  background: linear-gradient(180deg, #4a5a6a 0%, #2a3a4a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: dqv-figure-slow 10s ease-in-out infinite 1s;
}
.scn-duke-questions-valentine .table {
  position:absolute; bottom:15%; right:25%; width:40px; height:20px;
  background: linear-gradient(180deg, #8a7a6a 0%, #6a5a4a 100%);
  border-radius: 5% / 20%;
  animation: dqv-table 12s ease-in-out infinite alternate;
}
@keyframes dqv-pillar {
  0% { transform: scaleY(1); }
  50% { transform: scaleY(1.01); }
  100% { transform: scaleY(1); }
}
@keyframes dqv-throne {
  0% { transform: translateX(-50%) translateY(0); }
  50% { transform: translateX(-50%) translateY(-3px); }
  100% { transform: translateX(-50%) translateY(0); }
}
@keyframes dqv-figure-slow {
  0% { transform: translateY(0) rotate(0deg); }
  33% { transform: translateY(-2px) rotate(1deg); }
  66% { transform: translateY(0) rotate(-1deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes dqv-table {
  0% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
  100% { transform: translateY(0); }
}

/* Scene: proteus-arrival-welcome */
.scn-proteus-arrival-welcome {
  background:
    linear-gradient(180deg, #fcf3d9 0%, #efd8a0 40%, #d4a868 100%),
    radial-gradient(ellipse at 30% 50%, #fff7e6 0%, transparent 60%);
}
.scn-proteus-arrival-welcome .vestibule-bg {
  position:absolute; inset:0 0 15% 0;
  background: linear-gradient(135deg, #e8d6b0 0%, #d0b890 50%, #b09870 100%);
}
.scn-proteus-arrival-welcome .doorway {
  position:absolute; bottom:15%; left:50%; width:60px; height:100px;
  transform:translateX(-50%);
  background: radial-gradient(ellipse at 50% 100%, transparent 50%, #c8a870 51%);
  clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);
  border-radius: 50% 50% 0 0 / 80% 80% 0 0;
  box-shadow: inset 0 -10px 30px rgba(0,0,0,0.1);
  animation: paw-door 10s ease-in-out infinite alternate;
}
.scn-proteus-arrival-welcome .floor {
  position:absolute; bottom:0; left:0; right:0; height:15%;
  background: linear-gradient(180deg, #b09070 0%, #8a7050 100%);
}
.scn-proteus-arrival-welcome .figure-proteus {
  position:absolute; bottom:15%; left:35%; width:26px; height:55px;
  background: linear-gradient(180deg, #7a5a3a 0%, #5a3a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: paw-approach 4s ease-in-out infinite alternate;
}
.scn-proteus-arrival-welcome .figure-silvia {
  position:absolute; bottom:15%; right:35%; width:24px; height:50px;
  background: linear-gradient(180deg, #d4a868 0%, #a08050 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: paw-welcome 4.5s ease-in-out infinite alternate 0.5s;
}
.scn-proteus-arrival-welcome .figure-welcome {
  position:absolute; bottom:15%; left:50%; width:25px; height:52px;
  transform:translateX(-50%);
  background: linear-gradient(180deg, #4a6a7a 0%, #2a4a5a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: paw-welcome 5s ease-in-out infinite alternate 1s;
}
.scn-proteus-arrival-welcome .swag {
  position:absolute; top:5%; left:20%; width:60%; height:20px;
  background: linear-gradient(180deg, #c8a870 0%, #a08050 50%, #c8a870 100%);
  border-radius: 50%; filter: blur(2px);
  animation: paw-swag 15s ease-in-out infinite alternate;
}
@keyframes paw-door {
  0% { transform: translateX(-50%) scaleX(1); }
  50% { transform: translateX(-50%) scaleX(1.01); }
  100% { transform: translateX(-50%) scaleX(1); }
}
@keyframes paw-approach {
  0% { transform: translateX(0) translateY(0) rotate(0deg); }
  50% { transform: translateX(10px) translateY(-3px) rotate(2deg); }
  100% { transform: translateX(0) translateY(0) rotate(0deg); }
}
@keyframes paw-welcome {
  0% { transform: translateY(0) rotate(0deg); }
  25% { transform: translateY(-3px) rotate(2deg); }
  50% { transform: translateY(0) rotate(-1deg); }
  75% { transform: translateY(-2px) rotate(1deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes paw-swag {
  0% { opacity:0.6; transform: translateY(0); }
  50% { opacity:0.8; transform: translateY(-5px); }
  100% { opacity:0.6; transform: translateY(0); }
}

/* Scene 1: dukes-palace-thurio-proteus-julia */
.scn-dukes-palace-thurio-proteus-julia {
  background: linear-gradient(180deg, #f5e6d0 0%, #d4b896 40%, #b89a7a 100%), radial-gradient(ellipse at 30% 40%, #fff4e0 0%, transparent 60%);
}
.scn-dukes-palace-thurio-proteus-julia .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #8b6f4e, #5a3e2a);
  box-shadow: inset 0 8px 20px #3a2a1a;
}
.scn-dukes-palace-thurio-proteus-julia .wall {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(180deg, #f0d8b0 0%, #d4b896 100%);
  box-shadow: inset 0 -10px 30px rgba(0,0,0,0.1);
}
.scn-dukes-palace-thurio-proteus-julia .window {
  position: absolute; top: 15%; left: 20%; width: 22%; height: 40%;
  background: linear-gradient(180deg, #c4d8e8, #a0b8d0);
  border: 6px solid #7a5a3a;
  border-radius: 4px;
  box-shadow: inset 0 0 20px #7a9aba, 0 8px 12px rgba(0,0,0,0.3);
  animation: dp1-window 8s ease-in-out infinite alternate;
}
.scn-dukes-palace-thurio-proteus-julia .throne {
  position: absolute; bottom: 30%; left: 50%; width: 80px; height: 100px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #8b691e, #5a4010);
  border-radius: 20% 20% 5% 5%;
  box-shadow: 0 10px 20px rgba(0,0,0,0.4);
  animation: dp1-throne 6s ease-in-out infinite;
}
.scn-dukes-palace-thurio-proteus-julia .figure-thurio {
  position: absolute; bottom: 28%; left: 32%; width: 20px; height: 50px;
  background: linear-gradient(180deg, #5a3e2a, #2a1a0e);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: dp1-thurio 4s ease-in-out infinite alternate;
}
.scn-dukes-palace-thurio-proteus-julia .figure-proteus {
  position: absolute; bottom: 28%; left: 48%; width: 20px; height: 52px;
  background: linear-gradient(180deg, #3a2a1a, #0a0a0a);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: dp1-proteus 5s ease-in-out infinite alternate;
}
.scn-dukes-palace-thurio-proteus-julia .figure-julia {
  position: absolute; bottom: 28%; left: 62%; width: 18px; height: 48px;
  background: linear-gradient(180deg, #7a5a3a, #3a2a1a);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: dp1-julia 3.5s ease-in-out infinite alternate;
}
.scn-dukes-palace-thurio-proteus-julia .candle {
  position: absolute; bottom: 32%; left: 55%; width: 6px; height: 20px;
  background: linear-gradient(180deg, #f5d080, #b89040);
  border-radius: 4px;
  box-shadow: 0 0 20px 8px #f5c860, 0 0 40px 16px rgba(245,200,96,0.4);
  animation: dp1-candle 2s ease-in-out infinite alternate;
}
.scn-dukes-palace-thurio-proteus-julia .shadow {
  position: absolute; bottom: 30%; left: 38%; width: 30%; height: 10%;
  background: radial-gradient(ellipse, rgba(0,0,0,0.3) 0%, transparent 70%);
  animation: dp1-shadow 6s ease-in-out infinite alternate;
}
@keyframes dp1-window { 0%,100% { opacity:0.8; filter:brightness(0.9); } 50% { opacity:1; filter:brightness(1.1); } }
@keyframes dp1-throne { 0%,100% { transform: translateX(-50%) rotate(0deg); } 50% { transform: translateX(-50%) rotate(1deg) translateY(-2px); } }
@keyframes dp1-thurio { 0% { transform: translateX(0) rotate(-2deg); } 50% { transform: translateX(4px) rotate(2deg); } 100% { transform: translateX(-2px) rotate(-1deg); } }
@keyframes dp1-proteus { 0% { transform: translateX(0) rotate(1deg); } 50% { transform: translateX(-3px) rotate(-2deg); } 100% { transform: translateX(2px) rotate(0deg); } }
@keyframes dp1-julia { 0% { transform: translateX(0) rotate(-1deg); } 50% { transform: translateX(2px) rotate(1deg); } 100% { transform: translateX(-1px) rotate(0deg); } }
@keyframes dp1-candle { 0% { box-shadow: 0 0 15px 6px #f5c860; } 50% { box-shadow: 0 0 25px 10px #f5d080, 0 0 50px 20px rgba(245,200,96,0.5); } 100% { box-shadow: 0 0 18px 7px #f5b840; } }
@keyframes dp1-shadow { 0% { opacity:0.4; transform: scaleX(1); } 50% { opacity:0.7; transform: scaleX(1.1); } 100% { opacity:0.5; transform: scaleX(0.95); } }

/* Scene 2: duke-questioning-proteus */
.scn-duke-questioning-proteus {
  background: linear-gradient(180deg, #e8d4b8 0%, #c8b096 40%, #a88c72 100%), radial-gradient(ellipse at 60% 40%, #f5e6d0 0%, transparent 60%);
}
.scn-duke-questioning-proteus .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #7a5a3a, #4a2e1a);
}
.scn-duke-questioning-proteus .wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #f0dcc0, #d4b896);
  box-shadow: inset 0 -8px 20px rgba(0,0,0,0.1);
}
.scn-duke-questioning-proteus .door {
  position: absolute; top: 20%; right: 10%; width: 20%; height: 50%;
  background: linear-gradient(180deg, #5a3e2a, #2a1a0e);
  border-radius: 4px 4px 0 0;
  box-shadow: inset 0 4px 8px #1a0a00, 0 6px 10px rgba(0,0,0,0.3);
  animation: dq-door 10s ease-in-out infinite alternate;
}
.scn-duke-questioning-proteus .duke {
  position: absolute; bottom: 28%; left: 45%; width: 24px; height: 56px;
  background: linear-gradient(180deg, #5a3e2a, #1a0e00);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: dq-duke 4.5s ease-in-out infinite alternate;
}
.scn-duke-questioning-proteus .figure-proteus {
  position: absolute; bottom: 28%; left: 35%; width: 20px; height: 50px;
  background: linear-gradient(180deg, #3a2a1a, #0a0a0a);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: dq-proteus 3.5s ease-in-out infinite alternate;
}
.scn-duke-questioning-proteus .figure-thurio {
  position: absolute; bottom: 28%; left: 55%; width: 20px; height: 48px;
  background: linear-gradient(180deg, #4a3a2a, #2a1a0e);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: dq-thurio 4s ease-in-out infinite alternate;
}
.scn-duke-questioning-proteus .torch {
  position: absolute; bottom: 35%; left: 25%; width: 8px; height: 24px;
  background: linear-gradient(180deg, #f5c860, #b89040);
  border-radius: 4px;
  box-shadow: 0 0 20px 8px #f5c860, 0 0 40px 16px rgba(245,200,96,0.4);
  animation: dq-torch 2.5s ease-in-out infinite alternate;
}
.scn-duke-questioning-proteus .chandelier {
  position: absolute; top: 8%; left: 35%; width: 30%; height: 15px;
  background: linear-gradient(90deg, #5a3e2a, #8b6f4e, #5a3e2a);
  border-radius: 50%;
  box-shadow: 0 0 30px 10px #f5d080;
  animation: dq-chandelier 6s ease-in-out infinite alternate;
}
@keyframes dq-door { 0%,100% { transform: scaleX(1); opacity:0.8; } 50% { transform: scaleX(1.05); opacity:1; } }
@keyframes dq-duke { 0% { transform: translateX(0) rotate(-1deg); } 50% { transform: translateX(3px) rotate(2deg); } 100% { transform: translateX(-2px) rotate(0deg); } }
@keyframes dq-proteus { 0% { transform: translateX(0) rotate(1deg); } 50% { transform: translateX(-2px) rotate(-1deg); } 100% { transform: translateX(1px) rotate(0deg); } }
@keyframes dq-thurio { 0% { transform: translateX(0) rotate(-2deg); } 50% { transform: translateX(2px) rotate(1deg); } 100% { transform: translateX(-1px) rotate(-1deg); } }
@keyframes dq-torch { 0% { box-shadow: 0 0 15px 5px #f5c860; } 50% { box-shadow: 0 0 30px 12px #f5d080, 0 0 60px 20px rgba(245,200,96,0.5); } 100% { box-shadow: 0 0 18px 6px #f5b840; } }
@keyframes dq-chandelier { 0% { opacity:0.7; transform: scaleY(1); } 50% { opacity:1; transform: scaleY(1.1); } 100% { opacity:0.8; transform: scaleY(0.95); } }

/* Scene 3: outlaws-capturing-silvia */
.scn-outlaws-capturing-silvia {
  background: linear-gradient(180deg, #6a7a7a 0%, #4a5a5a 50%, #2a3a3a 100%), radial-gradient(ellipse at 50% 80%, #3a4a4a 0%, transparent 70%);
}
.scn-outlaws-capturing-silvia .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #8a9a9a, #6a7a7a);
  animation: oc-sky 15s ease-in-out infinite alternate;
}
.scn-outlaws-capturing-silvia .trees-bg {
  position: absolute; bottom: 30%; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #3a4a3a, #1a2a1a);
  border-radius: 40% 60% 0 0 / 60% 70% 0 0;
  animation: oc-trees-bg 12s ease-in-out infinite alternate;
}
.scn-outlaws-capturing-silvia .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #2a3a2a, #0a1a0a);
}
.scn-outlaws-capturing-silvia .tree-trunk {
  position: absolute; bottom: 30%; left: 20%; width: 6%; height: 50%;
  background: linear-gradient(180deg, #4a3a2a, #2a1a0e);
  border-radius: 10%;
  box-shadow: 4px 0 8px rgba(0,0,0,0.3);
}
.scn-outlaws-capturing-silvia .outlaw-1 {
  position: absolute; bottom: 28%; left: 35%; width: 22px; height: 50px;
  background: linear-gradient(180deg, #2a2a1a, #0a0a00);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: oc-outlaw1 4s ease-in-out infinite alternate;
}
.scn-outlaws-capturing-silvia .outlaw-2 {
  position: absolute; bottom: 28%; left: 45%; width: 22px; height: 52px;
  background: linear-gradient(180deg, #1a2a1a, #000a00);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: oc-outlaw2 5s ease-in-out infinite alternate;
}
.scn-outlaws-capturing-silvia .silvia {
  position: absolute; bottom: 28%; left: 55%; width: 18px; height: 46px;
  background: linear-gradient(180deg, #6a5a4a, #3a2a1a);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: oc-silvia 3s ease-in-out infinite alternate;
}
.scn-outlaws-capturing-silvia .leaf-swirl {
  position: absolute; top: 15%; left: 30%; width: 40%; height: 20%;
  background: radial-gradient(ellipse, rgba(120,140,100,0.4) 0%, transparent 70%);
  filter: blur(8px);
  animation: oc-leaf 20s linear infinite;
}
@keyframes oc-sky { 0% { opacity:0.7; } 50% { opacity:1; } 100% { opacity:0.8; } }
@keyframes oc-trees-bg { 0% { transform: translateY(0); } 50% { transform: translateY(-4px); } 100% { transform: translateY(0); } }
@keyframes oc-outlaw1 { 0% { transform: translateX(0) rotate(-1deg); } 50% { transform: translateX(3px) rotate(2deg); } 100% { transform: translateX(-2px) rotate(0deg); } }
@keyframes oc-outlaw2 { 0% { transform: translateX(0) rotate(1deg); } 50% { transform: translateX(-2px) rotate(-2deg); } 100% { transform: translateX(1px) rotate(0deg); } }
@keyframes oc-silvia { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(-2px) rotate(-2deg); } 100% { transform: translateX(1px) rotate(1deg); } }
@keyframes oc-leaf { 0% { transform: translateX(-50px) rotate(0deg); opacity:0; } 10% { opacity:1; } 90% { opacity:1; } 100% { transform: translateX(120vw) rotate(360deg); opacity:0; } }

/* Scene 4: valentine-soliloquy-forest */
.scn-valentine-soliloquy-forest {
  background: linear-gradient(180deg, #c8b090 0%, #a88870 40%, #806850 100%), radial-gradient(ellipse at 50% 50%, #d8c8b0 0%, transparent 70%);
}
.scn-valentine-soliloquy-forest .sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #d8c8b0, #b8a890);
  animation: vs-sky 20s ease-in-out infinite alternate;
}
.scn-valentine-soliloquy-forest .trees-bg {
  position: absolute; bottom: 35%; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #6a7a5a, #3a4a2a);
  border-radius: 30% 70% 0 0 / 50% 60% 0 0;
  animation: vs-trees-bg 18s ease-in-out infinite alternate;
}
.scn-valentine-soliloquy-forest .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #5a6a4a, #2a3a1a);
}
.scn-valentine-soliloquy-forest .rock {
  position: absolute; bottom: 28%; left: 35%; width: 60px; height: 40px;
  background: linear-gradient(180deg, #8a7a6a, #5a4a3a);
  border-radius: 40% 60% 30% 70% / 50% 40% 60% 50%;
  box-shadow: inset 4px -4px 8px #3a2a1a;
}
.scn-valentine-soliloquy-forest .valentine {
  position: absolute; bottom: 30%; left: 50%; width: 20px; height: 48px;
  background: linear-gradient(180deg, #4a3a2a, #1a0e00);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vs-valentine 6s ease-in-out infinite alternate;
}
.scn-valentine-soliloquy-forest .tree-fore {
  position: absolute; bottom: 20%; right: 15%; width: 8%; height: 70%;
  background: linear-gradient(180deg, #4a3a2a, #2a1a0e);
  border-radius: 10%;
  box-shadow: -4px 0 8px rgba(0,0,0,0.2);
  animation: vs-tree-fore 9s ease-in-out infinite alternate;
}
.scn-valentine-soliloquy-forest .leaves {
  position: absolute; top: 10%; left: 10%; width: 80%; height: 40%;
  background: radial-gradient(ellipse at 30% 50%, rgba(160,180,100,0.3) 0%, transparent 60%);
  filter: blur(12px);
  animation: vs-leaves 25s linear infinite;
}
.scn-valentine-soliloquy-forest .light-ray {
  position: absolute; top: 10%; left: 40%; width: 20%; height: 60%;
  background: linear-gradient(180deg, rgba(240,220,180,0.3) 0%, transparent 100%);
  filter: blur(8px);
  animation: vs-ray 15s ease-in-out infinite alternate;
}
@keyframes vs-sky { 0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.7; } }
@keyframes vs-trees-bg { 0% { transform: translateY(0); } 50% { transform: translateY(-3px); } 100% { transform: translateY(0); } }
@keyframes vs-valentine { 0% { transform: translateX(0) rotate(-1deg); } 50% { transform: translateX(3px) rotate(2deg) scaleY(1.02); } 100% { transform: translateX(-2px) rotate(0deg); } }
@keyframes vs-tree-fore { 0% { transform: rotate(-2deg); } 50% { transform: rotate(2deg); } 100% { transform: rotate(-1deg); } }
@keyframes vs-leaves { 0% { transform: translateX(-60px) rotate(0deg); opacity:0.3; } 10% { opacity:1; } 90% { opacity:0.8; } 100% { transform: translateX(120vw) rotate(180deg); opacity:0.2; } }
@keyframes vs-ray { 0% { opacity:0.3; transform: scaleY(0.8); } 50% { opacity:0.7; transform: scaleY(1.1); } 100% { opacity:0.4; transform: scaleY(0.9); } }

/* Scene: valentine-confrontation (tense, overcast) */
.scn-valentine-confrontation {
  background: linear-gradient(180deg, #4a5a5a 0%, #2a3a3a 40%, #3a3a2a 100%), radial-gradient(ellipse at 50% 100%, #3a3a2a 0%, transparent 70%);
}
.scn-valentine-confrontation .bg-sky {
  position:absolute; inset:0 0 45% 0;
  background: linear-gradient(180deg, #6a7a7a 0%, #4a5a5a 50%, transparent 100%);
  animation: vc-sky 15s ease-in-out infinite alternate;
}
.scn-valentine-confrontation .ground {
  position:absolute; bottom:0; left:0; right:0; height:45%;
  background: linear-gradient(180deg, #4a4a3a 0%, #2a2a1a 100%);
  border-radius: 60% 40% 0 0 / 50% 30% 0 0;
  box-shadow: inset 0 6px 15px rgba(0,0,0,.5);
  animation: vc-ground 12s ease-in-out infinite alternate;
}
.scn-valentine-confrontation .tree-left {
  position:absolute; bottom:40%; left:12%; width:30px; height:120px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 20% 20% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: vc-tree 8s ease-in-out infinite;
}
.scn-valentine-confrontation .tree-right {
  position:absolute; bottom:40%; right:15%; width:35px; height:140px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 20% 20% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: vc-tree 9s ease-in-out infinite reverse;
  animation-delay: -2s;
}
.scn-valentine-confrontation .figure-valentine {
  position:absolute; bottom:30%; left:35%; width:28px; height:70px;
  background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vc-figure-left 4s ease-in-out infinite;
}
.scn-valentine-confrontation .figure-proteus {
  position:absolute; bottom:30%; right:35%; width:28px; height:70px;
  background: linear-gradient(180deg, #4a3a3a 0%, #2a1a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vc-figure-right 4s ease-in-out infinite;
}
.scn-valentine-confrontation .cloud-a {
  position:absolute; top:15%; left:10%; width:100px; height:22px;
  background: linear-gradient(180deg, rgba(200,200,200,.4) 0%, rgba(200,200,200,.05) 100%);
  border-radius: 50%;
  filter: blur(6px);
  animation: vc-drift-a 40s linear infinite;
}
.scn-valentine-confrontation .cloud-b {
  position:absolute; top:22%; right:5%; width:80px; height:18px;
  background: linear-gradient(180deg, rgba(200,200,200,.3) 0%, rgba(200,200,200,.05) 100%);
  border-radius: 50%;
  filter: blur(5px);
  animation: vc-drift-b 50s linear infinite reverse;
}

@keyframes vc-sky { 0% { opacity:.75; } 50% { opacity:1; } 100% { opacity:.8; } }
@keyframes vc-ground { 0% { transform: translateY(0); } 50% { transform: translateY(-3px); } 100% { transform: translateY(0); } }
@keyframes vc-tree { 0% { transform: rotate(0deg) scale(1); } 25% { transform: rotate(1deg) scale(1.02); } 50% { transform: rotate(-0.5deg) scale(0.98); } 75% { transform: rotate(0.5deg) scale(1.01); } 100% { transform: rotate(0deg) scale(1); } }
@keyframes vc-figure-left { 0% { transform: translateX(0) translateY(0) rotate(-2deg); } 25% { transform: translateX(3px) translateY(-2px) rotate(1deg); } 50% { transform: translateX(0) translateY(0) rotate(2deg); } 75% { transform: translateX(-2px) translateY(-1px) rotate(-1deg); } 100% { transform: translateX(0) translateY(0) rotate(-2deg); } }
@keyframes vc-figure-right { 0% { transform: translateX(0) translateY(0) rotate(2deg); } 25% { transform: translateX(-3px) translateY(-2px) rotate(-1deg); } 50% { transform: translateX(0) translateY(0) rotate(-2deg); } 75% { transform: translateX(2px) translateY(-1px) rotate(1deg); } 100% { transform: translateX(0) translateY(0) rotate(2deg); } }
@keyframes vc-drift-a { 0% { transform: translateX(-50px); } 100% { transform: translateX(120vw); } }
@keyframes vc-drift-b { 0% { transform: translateX(0); } 100% { transform: translateX(-100vw); } }

/* Scene: silvia-rejects-proteus (tense, overcast) */
.scn-silvia-rejects-proteus {
  background: linear-gradient(180deg, #5a5a6a 0%, #3a3a4a 50%, #2a2a3a 100%), radial-gradient(ellipse at 50% 100%, #2a2a3a 0%, transparent 70%);
}
.scn-silvia-rejects-proteus .bg-sky {
  position:absolute; inset:0 0 40% 0;
  background: linear-gradient(180deg, #7a7a8a 0%, #5a5a6a 50%, transparent 100%);
  animation: sr-sky 18s ease-in-out infinite alternate;
}
.scn-silvia-rejects-proteus .ground {
  position:absolute; bottom:0; left:0; right:0; height:40%;
  background: linear-gradient(180deg, #3a3a3a 0%, #1a1a1a 100%);
  border-radius: 30% 70% 0 0 / 40% 60% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,.6);
  animation: sr-ground 14s ease-in-out infinite alternate;
}
.scn-silvia-rejects-proteus .wall-back {
  position:absolute; bottom:30%; left:40%; width:20%; height:30%;
  background: linear-gradient(180deg, #4a3a3a 0%, #2a1a1a 100%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 0 4px 12px rgba(0,0,0,.4);
  animation: sr-wall 8s ease-in-out infinite;
}
.scn-silvia-rejects-proteus .figure-silvia {
  position:absolute; bottom:28%; left:46%; width:25px; height:65px;
  background: linear-gradient(180deg, #5a4a4a 0%, #3a2a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: sr-figure-s 4s ease-in-out infinite;
}
.scn-silvia-rejects-proteus .figure-proteus {
  position:absolute; bottom:28%; left:30%; width:26px; height:68px;
  background: linear-gradient(180deg, #4a3a4a 0%, #2a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: sr-figure-p 4.5s ease-in-out infinite;
}
.scn-silvia-rejects-proteus .figure-valentine {
  position:absolute; bottom:28%; left:58%; width:24px; height:66px;
  background: linear-gradient(180deg, #3a4a4a 0%, #1a2a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: sr-figure-v 5s ease-in-out infinite;
}
.scn-silvia-rejects-proteus .tree-branch {
  position:absolute; bottom:40%; left:50%; width:80px; height:10px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 30% 30% 20% 20%;
  transform: rotate(-20deg);
  transform-origin: left center;
  animation: sr-branch 6s ease-in-out infinite alternate;
}

@keyframes sr-sky { 0% { opacity:.7; } 50% { opacity:1; } 100% { opacity:.8; } }
@keyframes sr-ground { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes sr-wall { 0% { transform: scaleY(1); } 50% { transform: scaleY(1.02); } 100% { transform: scaleY(1); } }
@keyframes sr-figure-s { 0% { transform: translateX(0) rotate(-1deg); } 25% { transform: translateX(-2px) rotate(2deg); } 50% { transform: translateX(0) rotate(0deg); } 75% { transform: translateX(1px) rotate(-1deg); } 100% { transform: translateX(0) rotate(-1deg); } }
@keyframes sr-figure-p { 0% { transform: translateX(0) translateY(0) rotate(1deg); } 20% { transform: translateX(3px) translateY(-2px) rotate(3deg); } 40% { transform: translateX(-1px) translateY(0) rotate(-1deg); } 60% { transform: translateX(2px) translateY(1px) rotate(0deg); } 80% { transform: translateX(-2px) translateY(-1px) rotate(2deg); } 100% { transform: translateX(0) translateY(0) rotate(1deg); } }
@keyframes sr-figure-v { 0% { transform: scale(0.9); opacity:.4; } 50% { transform: scale(1); opacity:1; } 100% { transform: scale(0.9); opacity:.4; } }
@keyframes sr-branch { 0% { transform: rotate(-20deg) scaleY(1); } 50% { transform: rotate(-15deg) scaleY(1.2); } 100% { transform: rotate(-20deg) scaleY(1); } }

/* Scene: valentine-intervenes (tense, overcast) */
.scn-valentine-intervenes {
  background: linear-gradient(180deg, #4a4a5a 0%, #3a3a4a 50%, #2a2a3a 100%), radial-gradient(ellipse at 50% 100%, #3a3a4a 0%, transparent 70%);
}
.scn-valentine-intervenes .bg-sky {
  position:absolute; inset:0 0 35% 0;
  background: linear-gradient(180deg, #6a6a7a 0%, #4a4a5a 50%, transparent 100%);
  animation: vi-sky 16s ease-in-out infinite alternate;
}
.scn-valentine-intervenes .ground {
  position:absolute; bottom:0; left:0; right:0; height:35%;
  background: linear-gradient(180deg, #3a3a2a 0%, #1a1a0a 100%);
  border-radius: 50% 50% 0 0 / 60% 40% 0 0;
  box-shadow: inset 0 6px 18px rgba(0,0,0,.5);
  animation: vi-ground 10s ease-in-out infinite alternate;
}
.scn-valentine-intervenes .figure-silvia {
  position:absolute; bottom:30%; left:35%; width:22px; height:60px;
  background: linear-gradient(180deg, #5a4a4a 0%, #3a2a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vi-figure-s 3.5s ease-in-out infinite;
}
.scn-valentine-intervenes .figure-proteus {
  position:absolute; bottom:30%; left:50%; width:26px; height:70px;
  background: linear-gradient(180deg, #4a3a4a 0%, #2a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vi-figure-p 4s ease-in-out infinite;
}
.scn-valentine-intervenes .figure-valentine {
  position:absolute; bottom:30%; left:62%; width:24px; height:68px;
  background: linear-gradient(180deg, #3a4a4a 0%, #1a2a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vi-figure-v 4.2s ease-in-out infinite;
}
.scn-valentine-intervenes .sword {
  position:absolute; bottom:45%; left:52%; width:6px; height:40px;
  background: linear-gradient(180deg, #7a7a7a 0%, #4a4a4a 100%);
  border-radius: 20% 20% 10% 10%;
  transform-origin: bottom center;
  box-shadow: 0 0 4px 2px rgba(200,200,200,.2);
  animation: vi-sword 2s ease-in-out infinite alternate;
}
.scn-valentine-intervenes .cloud-cover {
  position:absolute; top:5%; left:0; right:0; height:30%;
  background: linear-gradient(180deg, rgba(150,150,160,.5) 0%, rgba(150,150,160,.1) 100%);
  filter: blur(8px);
  animation: vi-cloud 20s ease-in-out infinite alternate;
}

@keyframes vi-sky { 0% { opacity:.8; } 50% { opacity:1; } 100% { opacity:.85; } }
@keyframes vi-ground { 0% { transform: translateY(0); } 50% { transform: translateY(-4px); } 100% { transform: translateY(0); } }
@keyframes vi-figure-s { 0% { transform: translateX(0) rotate(-1deg); } 50% { transform: translateX(-3px) rotate(1deg); } 100% { transform: translateX(0) rotate(-1deg); } }
@keyframes vi-figure-p { 0% { transform: translateX(0) translateY(0) rotate(2deg); } 30% { transform: translateX(2px) translateY(-3px) rotate(4deg); } 60% { transform: translateX(-1px) translateY(1px) rotate(-1deg); } 100% { transform: translateX(0) translateY(0) rotate(2deg); } }
@keyframes vi-figure-v { 0% { transform: translateX(0) scale(1); } 50% { transform: translateX(5px) scale(1.05); } 100% { transform: translateX(0) scale(1); } }
@keyframes vi-sword { 0% { transform: rotate(-10deg) scaleY(1); } 50% { transform: rotate(10deg) scaleY(1.1); } 100% { transform: rotate(-10deg) scaleY(1); } }
@keyframes vi-cloud { 0% { opacity:.4; transform: scale(1); } 50% { opacity:.7; transform: scale(1.02); } 100% { opacity:.4; transform: scale(1); } }

/* Scene: proteus-pardoned (warm, overcast) */
.scn-proteus-pardoned {
  background: linear-gradient(180deg, #7a6a5a 0%, #6a5a4a 40%, #5a4a3a 100%), radial-gradient(ellipse at 50% 100%, #5a4a3a 0%, transparent 70%);
}
.scn-proteus-pardoned .bg-sky-warm {
  position:absolute; inset:0 0 40% 0;
  background: linear-gradient(180deg, #9a8a7a 0%, #7a6a5a 50%, transparent 100%);
  animation: pp-sky 14s ease-in-out infinite alternate;
}
.scn-proteus-pardoned .ground-warm {
  position:absolute; bottom:0; left:0; right:0; height:40%;
  background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%);
  border-radius: 40% 60% 0 0 / 50% 50% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,.3);
  animation: pp-ground 12s ease-in-out infinite alternate;
}
.scn-proteus-pardoned .figure-valentine {
  position:absolute; bottom:30%; left:38%; width:26px; height:68px;
  background: linear-gradient(180deg, #5a5a4a 0%, #3a3a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pp-figure-v 4s ease-in-out infinite;
}
.scn-proteus-pardoned .figure-proteus {
  position:absolute; bottom:30%; right:38%; width:26px; height:68px;
  background: linear-gradient(180deg, #5a4a4a 0%, #3a2a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pp-figure-p 4.3s ease-in-out infinite;
}
.scn-proteus-pardoned .sun-glow {
  position:absolute; top:12%; left:50%; width:80px; height:80px;
  background: radial-gradient(circle, rgba(220,200,160,.6) 0%, rgba(220,200,160,.1) 60%, transparent 100%);
  transform: translateX(-50%);
  border-radius: 50%;
  animation: pp-glow 6s ease-in-out infinite alternate;
}
.scn-proteus-pardoned .cloud-warm-a {
  position:absolute; top:20%; left:8%; width:90px; height:20px;
  background: linear-gradient(180deg, rgba(200,180,160,.5) 0%, rgba(200,180,160,.05) 100%);
  border-radius: 50%;
  filter: blur(6px);
  animation: pp-drift-a 45s linear infinite;
}
.scn-proteus-pardoned .cloud-warm-b {
  position:absolute; top:28%; right:10%; width:70px; height:16px;
  background: linear-gradient(180deg, rgba(200,180,160,.4) 0%, rgba(200,180,160,.05) 100%);
  border-radius: 50%;
  filter: blur(5px);
  animation: pp-drift-b 55s linear infinite reverse;
}

@keyframes pp-sky { 0% { opacity:.85; } 50% { opacity:1; } 100% { opacity:.9; } }
@keyframes pp-ground { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes pp-figure-v { 0% { transform: translateX(0) translateY(0) rotate(-1deg); } 25% { transform: translateX(-3px) translateY(-2px) rotate(0deg); } 50% { transform: translateX(0) translateY(0) rotate(1deg); } 75% { transform: translateX(3px) translateY(-1px) rotate(0deg); } 100% { transform: translateX(0) translateY(0) rotate(-1deg); } }
@keyframes pp-figure-p { 0% { transform: translateX(0) translateY(0) rotate(1deg); } 25% { transform: translateX(3px) translateY(-2px) rotate(0deg); } 50% { transform: translateX(0) translateY(0) rotate(-1deg); } 75% { transform: translateX(-3px) translateY(-1px) rotate(0deg); } 100% { transform: translateX(0) translateY(0) rotate(1deg); } }
@keyframes pp-glow { 0% { transform: translateX(-50%) scale(0.9); opacity:.6; } 50% { transform: translateX(-50%) scale(1.1); opacity:1; } 100% { transform: translateX(-50%) scale(0.9); opacity:.6; } }
@keyframes pp-drift-a { 0% { transform: translateX(-40px); } 100% { transform: translateX(110vw); } }
@keyframes pp-drift-b { 0% { transform: translateX(0); } 100% { transform: translateX(-90vw); } }

/* duke-banishes-valentine */
.scn-duke-banishes-valentine {
  background: linear-gradient(180deg, #e8d5a0 0%, #c8a86a 40%, #8a6a3a 100%), radial-gradient(ellipse at 60% 40%, #f0e0b0 0%, transparent 60%);
}
.scn-duke-banishes-valentine .bg-wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(135deg, #b89868 0%, #9a7a4a 50%, #7a5a2a 100%);
  box-shadow: inset 0 0 80px rgba(0,0,0,.3);
}
.scn-duke-banishes-valentine .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 0 0 8% 8%;
}
.scn-duke-banishes-valentine .throne {
  position: absolute; bottom: 28%; left: 50%; transform: translateX(-50%);
  width: 120px; height: 150px;
  background: linear-gradient(180deg, #b08050 0%, #7a5a3a 40%, #4a2a1a 100%);
  border-radius: 10% 10% 4% 4%;
  box-shadow: 0 8px 20px rgba(0,0,0,.5);
  animation: dbv-throne 4s ease-in-out infinite;
}
.scn-duke-banishes-valentine .duke {
  position: absolute; bottom: 30%; left: 62%; width: 40px; height: 90px;
  background: linear-gradient(180deg, #6a4a3a 0%, #3a2a1a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: dbv-duke-point 2s ease-in-out infinite alternate;
}
.scn-duke-banishes-valentine .valentine {
  position: absolute; bottom: 28%; left: 38%; width: 35px; height: 80px;
  background: linear-gradient(180deg, #5a4a3a 0%, #2a1a0a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: dbv-valentine-tremble 1.6s ease-in-out infinite alternate;
}
.scn-duke-banishes-valentine .ladder {
  position: absolute; bottom: 30%; left: 20%; width: 8px; height: 120px;
  background: linear-gradient(180deg, #7a5a3a 0%, #5a3a1a 100%);
  transform: rotate(10deg); transform-origin: bottom;
  border-radius: 4px;
  box-shadow: 2px 0 6px rgba(0,0,0,.4);
  animation: dbv-ladder 6s ease-in-out infinite;
}
.scn-duke-banishes-valentine .light-rays {
  position: absolute; top: 0; left: 30%; width: 120px; height: 100%;
  background: linear-gradient(180deg, rgba(255,230,180,.25) 0%, rgba(255,200,100,.1) 70%, transparent 100%);
  clip-path: polygon(50% 0, 20% 100%, 80% 100%);
  filter: blur(10px);
  animation: dbv-light 3s ease-in-out infinite alternate;
}
.scn-duke-banishes-valentine .shadow-band {
  position: absolute; bottom: 20%; left: 10%; right: 10%; height: 15%;
  background: rgba(0,0,0,.4);
  filter: blur(8px);
  border-radius: 50%;
  animation: dbv-shadow 4s ease-in-out infinite alternate;
}
@keyframes dbv-throne {
  0% { transform: translateX(-50%) scaleY(1); }
  50% { transform: translateX(-50%) scaleY(1.02); }
  100% { transform: translateX(-50%) scaleY(0.98); }
}
@keyframes dbv-duke-point {
  0% { transform: rotate(-12deg) translateY(0); }
  100% { transform: rotate(12deg) translateY(-3px); }
}
@keyframes dbv-valentine-tremble {
  0% { transform: rotate(-2deg) scaleY(1); }
  100% { transform: rotate(2deg) scaleY(0.97); }
}
@keyframes dbv-ladder {
  0% { transform: rotate(8deg) translateX(0); }
  50% { transform: rotate(12deg) translateX(5px); }
  100% { transform: rotate(8deg) translateX(0); }
}
@keyframes dbv-light {
  0% { opacity: 0.5; }
  50% { opacity: 0.9; }
  100% { opacity: 0.6; }
}
@keyframes dbv-shadow {
  0% { transform: scaleX(1); opacity: 0.3; }
  100% { transform: scaleX(1.2); opacity: 0.5; }
}

/* valentine-lamentation */
.scn-valentine-lamentation {
  background: linear-gradient(180deg, #1a1a2e 0%, #0e0e1e 50%, #1a1a2e 100%), radial-gradient(ellipse at 50% 30%, #2a2a4e 0%, transparent 70%);
}
.scn-valentine-lamentation .bg-dark {
  position: absolute; inset: 0;
  background: linear-gradient(135deg, #12121c 0%, #0a0a14 100%);
  box-shadow: inset 0 0 120px rgba(0,0,0,.6);
}
.scn-valentine-lamentation .cell-floor {
  position: absolute; bottom: 0; left: 5%; right: 5%; height: 25%;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 30% 30% 0 0;
}
.scn-valentine-lamentation .window {
  position: absolute; top: 20%; left: 50%; transform: translateX(-50%);
  width: 80px; height: 100px;
  background: linear-gradient(180deg, #3a4a5a 0%, #2a3a4a 100%);
  border: 6px solid #4a4a5a;
  border-radius: 4px;
  box-shadow: inset 0 0 30px rgba(100,140,200,.2);
  animation: vl-window 6s ease-in-out infinite;
}
.scn-valentine-lamentation .window-beam {
  position: absolute; top: 22%; left: 50%; width: 60px; height: 150px;
  background: linear-gradient(180deg, rgba(150,180,220,.15) 0%, rgba(100,130,180,.05) 100%);
  transform: translateX(-50%) skewX(-5deg);
  filter: blur(4px);
  animation: vl-beam 7s ease-in-out infinite alternate;
}
.scn-valentine-lamentation .figure-kneeling {
  position: absolute; bottom: 22%; left: 50%; transform: translateX(-50%);
  width: 40px; height: 100px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: vl-figure 4s ease-in-out infinite alternate;
}
.scn-valentine-lamentation .figure-shadow {
  position: absolute; bottom: 20%; left: 48%; width: 50px; height: 20px;
  background: rgba(0,0,0,.5);
  border-radius: 50%;
  filter: blur(6px);
  animation: vl-shadow 4s ease-in-out infinite alternate;
}
.scn-valentine-lamentation .candle {
  position: absolute; bottom: 20%; left: 30%;
  width: 10px; height: 30px;
  background: linear-gradient(180deg, #c8a86a 0%, #8a6a3a 100%);
  border-radius: 30% 30% 10% 10%;
  box-shadow: 0 0 14px 6px rgba(200,168,106,.3);
  animation: vl-candle-flicker 2s ease-in-out infinite alternate;
}
.scn-valentine-lamentation .candle-glow {
  position: absolute; bottom: 20%; left: 30%; width: 30px; height: 30px;
  background: radial-gradient(circle, rgba(255,220,160,.6) 0%, transparent 100%);
  transform: translate(-10px, -10px);
  filter: blur(10px);
  animation: vl-glow 2s ease-in-out infinite alternate;
}
@keyframes vl-window {
  0% { box-shadow: inset 0 0 20px rgba(100,140,200,.15); }
  50% { box-shadow: inset 0 0 40px rgba(100,140,200,.3); }
  100% { box-shadow: inset 0 0 20px rgba(100,140,200,.15); }
}
@keyframes vl-beam {
  0% { opacity: 0.2; filter: blur(3px); }
  50% { opacity: 0.5; filter: blur(5px); }
  100% { opacity: 0.3; filter: blur(4px); }
}
@keyframes vl-figure {
  0% { transform: translateX(-50%) translateY(0) rotate(0deg); }
  100% { transform: translateX(-50%) translateY(5px) rotate(-2deg); }
}
@keyframes vl-shadow {
  0% { transform: scaleX(1); }
  100% { transform: scaleX(0.8); }
}
@keyframes vl-candle-flicker {
  0% { opacity: 0.8; transform: scaleY(1); }
  100% { opacity: 1; transform: scaleY(1.05); }
}
@keyframes vl-glow {
  0% { opacity: 0.4; transform: translate(-10px, -10px) scale(0.8); }
  100% { opacity: 0.7; transform: translate(-10px, -10px) scale(1.2); }
}

/* launce-soliloquy-love */
.scn-launce-soliloquy-love {
  background: linear-gradient(180deg, #b0d0e0 0%, #e8f0f0 40%, #d0e8c0 70%, #a0c060 100%), radial-gradient(ellipse at 50% 0%, #e0f0ff 0%, transparent 70%);
}
.scn-launce-soliloquy-love .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #a0d0f0 0%, #d0e8ff 50%, #e0f0ff 100%);
  animation: lsl-sky 12s ease-in-out infinite alternate;
}
.scn-launce-soliloquy-love .ground {
  position: absolute; bottom: 0; left: -10%; right: -10%; height: 40%;
  background: linear-gradient(180deg, #80b060 0%, #609040 100%);
  border-radius: 60% 40% 0 0 / 80% 70% 0 0;
  box-shadow: inset 0 10px 30px rgba(0,50,0,.3);
}
.scn-launce-soliloquy-love .launce-body {
  position: absolute; bottom: 30%; left: 50%; transform: translateX(-50%);
  width: 45px; height: 110px;
  background: linear-gradient(180deg, #c8a070 0%, #a08050 40%, #6a5030 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: lsl-body 1.5s ease-in-out infinite alternate;
}
.scn-launce-soliloquy-love .launce-hat {
  position: absolute; bottom: calc(30% + 100px); left: 50%; transform: translateX(-50%);
  width: 60px; height: 30px;
  background: linear-gradient(180deg, #8a6a4a 0%, #5a3a1a 100%);
  border-radius: 50% 50% 10% 10%;
  box-shadow: 0 4px 8px rgba(0,0,0,.3);
  animation: lsl-hat 2s ease-in-out infinite alternate;
}
.scn-launce-soliloquy-love .launce-staff {
  position: absolute; bottom: 28%; left: 58%; width: 6px; height: 140px;
  background: linear-gradient(180deg, #6a4a2a 0%, #3a2a1a 100%);
  transform: rotate(15deg); transform-origin: bottom;
  border-radius: 3px;
  animation: lsl-staff 3s ease-in-out infinite alternate;
}
.scn-launce-soliloquy-love .launce-shadow {
  position: absolute; bottom: 28%; left: 45%; width: 70px; height: 16px;
  background: rgba(0,0,0,.25);
  border-radius: 50%;
  filter: blur(6px);
  animation: lsl-shadow 1.5s ease-in-out infinite alternate;
}
.scn-launce-soliloquy-love .flower {
  position: absolute; bottom: 30%; left: 35%; width: 12px; height: 12px;
  background: radial-gradient(circle, #d080a0 0%, #b06080 100%);
  border-radius: 50%;
  box-shadow: 0 0 8px rgba(200,100,130,.4);
  animation: lsl-flower 4s ease-in-out infinite;
}
.scn-launce-soliloquy-love .butterfly {
  position: absolute; top: 20%; left: 20%; width: 20px; height: 14px;
  background: radial-gradient(ellipse at 50% 50%, #e0a060 0%, #c08040 100%);
  border-radius: 50%;
  filter: blur(2px);
  animation: lsl-butterfly 8s linear infinite;
}
@keyframes lsl-sky {
  0% { opacity: 0.8; }
  50% { opacity: 1; }
  100% { opacity: 0.85; }
}
@keyframes lsl-body {
  0% { transform: translateX(-50%) rotate(-3deg) translateY(0); }
  100% { transform: translateX(-50%) rotate(3deg) translateY(-4px); }
}
@keyframes lsl-hat {
  0% { transform: translateX(-50%) rotate(-5deg) translateY(1px); }
  100% { transform: translateX(-50%) rotate(5deg) translateY(-2px); }
}
@keyframes lsl-staff {
  0% { transform: rotate(12deg); }
  50% { transform: rotate(18deg); }
  100% { transform: rotate(12deg); }
}
@keyframes lsl-shadow {
  0% { transform: scaleX(1); opacity: 0.3; }
  100% { transform: scaleX(1.2); opacity: 0.5; }
}
@keyframes lsl-flower {
  0% { transform: rotate(0deg) scale(1); }
  50% { transform: rotate(10deg) scale(1.1); }
  100% { transform: rotate(0deg) scale(1); }
}
@keyframes lsl-butterfly {
  0% { transform: translate(0, 0) rotate(0deg); }
  25% { transform: translate(50px, -30px) rotate(10deg); }
  50% { transform: translate(100px, 0) rotate(-5deg); }
  75% { transform: translate(150px, -20px) rotate(15deg); }
  100% { transform: translate(200px, 0) rotate(0deg); }
}

/* virtues-and-vices-list */
.scn-virtues-and-vices-list {
  background: linear-gradient(180deg, #9a9aaa 0%, #b0b0c0 30%, #c0c0d0 60%, #a0a0b0 100%), radial-gradient(ellipse at 60% 40%, #d0d0e0 0%, transparent 70%);
}
.scn-virtues-and-vices-list .overcast-bg {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, #c0c0d0 0%, #b0b0c0 40%, #9090a0 100%);
  box-shadow: inset 0 0 60px rgba(0,0,0,.1);
}
.scn-virtues-and-vices-list .pedestal {
  position: absolute; bottom: 20%; left: 50%; transform: translateX(-50%);
  width: 100px; height: 30px;
  background: linear-gradient(180deg, #a0a0b0 0%, #808090 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 0 4px 8px rgba(0,0,0,.2);
  animation: vvl-pedestal 5s ease-in-out infinite;
}
.scn-virtues-and-vices-list .scroll {
  position: absolute; bottom: 32%; left: 50%; transform: translateX(-50%);
  width: 60px; height: 80px;
  background: linear-gradient(180deg, #e0d8c0 0%, #c8b890 100%);
  border-radius: 4px;
  box-shadow: 0 2px 8px rgba(0,0,0,.15);
  animation: vvl-scroll 3s ease-in-out infinite alternate;
}
.scn-virtues-and-vices-list .reader {
  position: absolute; bottom: 22%; left: 38%;
  width: 36px; height: 90px;
  background: linear-gradient(180deg, #8a7a6a 0%, #5a4a3a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: vvl-reader 4s ease-in-out infinite alternate;
}
.scn-virtues-and-vices-list .listener {
  position: absolute; bottom: 20%; left: 56%;
  width: 32px; height: 80px;
  background: linear-gradient(180deg, #7a6a5a 0%, #4a3a2a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: vvl-listener 4.5s ease-in-out infinite alternate;
}
.scn-virtues-and-vices-list .speech-bubble {
  position: absolute; top: 25%; left: 35%;
  width: 40px; height: 30px;
  background: rgba(255,255,240,.8);
  border-radius: 30% 30% 30% 10%;
  box-shadow: 0 2px 6px rgba(0,0,0,.1);
  animation: vvl-bubble 2s ease-in-out infinite alternate;
}
.scn-virtues-and-vices-list .accent-dot {
  position: absolute; top: 40%; left: 50%;
  width: 8px; height: 8px;
  background: linear-gradient(135deg, #d0a080 0%, #b08060 100%);
  border-radius: 50%;
  box-shadow: 0 0 12px rgba(200,120,80,.3);
  animation: vvl-dot 6s ease-in-out infinite;
}
@keyframes vvl-pedestal {
  0% { transform: translateX(-50%) scaleY(1); }
  50% { transform: translateX(-50%) scaleY(1.03); }
  100% { transform: translateX(-50%) scaleY(0.97); }
}
@keyframes vvl-scroll {
  0% { transform: translateX(-50%) rotate(-2deg); }
  100% { transform: translateX(-50%) rotate(2deg); }
}
@keyframes vvl-reader {
  0% { transform: rotate(-5deg) translateY(0); }
  100% { transform: rotate(5deg) translateY(-2px); }
}
@keyframes vvl-listener {
  0% { transform: rotate(3deg) translateY(0); }
  100% { transform: rotate(-3deg) translateY(2px); }
}
@keyframes vvl-bubble {
  0% { transform: scale(0.9); opacity: 0.7; }
  100% { transform: scale(1.1); opacity: 1; }
}
@keyframes vvl-dot {
  0% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-5px) scale(1.2); }
  100% { transform: translateY(0) scale(1); }
}

/* list-conclusion – overcast, funny */
.scn-list-conclusion {
  background: linear-gradient(180deg, #9ea3a6 0%, #7b7f82 40%, #5b5f62 100%), 
              radial-gradient(ellipse at 50% 0%, #b0b4b7 0%, transparent 70%);
}
.scn-list-conclusion .paper {
  position: absolute; bottom: 38%; left: 50%; width: 80px; height: 50px;
  transform: translateX(-50%); background: linear-gradient(135deg, #e0d6c8 0%, #c8bea8 100%);
  border-radius: 2px; box-shadow: 0 4px 12px rgba(0,0,0,0.3);
  animation: lc-paper 6s ease-in-out infinite;
}
.scn-list-conclusion .figure {
  position: absolute; bottom: 28%; left: 50%; width: 24px; height: 55px;
  transform: translateX(-50%); background: linear-gradient(180deg, #4a4744 0%, #2a2826 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: lc-figure 4s ease-in-out infinite;
}
.scn-list-conclusion .hat {
  position: absolute; bottom: 68%; left: 50%; width: 40px; height: 20px;
  transform: translateX(-50%); background: linear-gradient(180deg, #6b5e50 0%, #4a3e32 100%);
  border-radius: 50% 50% 10% 10%; animation: lc-hat 5s ease-in-out infinite;
}
.scn-list-conclusion .list-a,
.scn-list-conclusion .list-b,
.scn-list-conclusion .list-c {
  position: absolute; width: 10px; height: 4px; background: #3a3834;
  border-radius: 2px;
}
.scn-list-conclusion .list-a { bottom: 44%; left: 42%; animation: lc-dot-a 8s ease-in-out infinite; }
.scn-list-conclusion .list-b { bottom: 40%; left: 48%; animation: lc-dot-b 7s ease-in-out infinite; animation-delay: 1s; }
.scn-list-conclusion .list-c { bottom: 37%; left: 55%; animation: lc-dot-c 9s ease-in-out infinite; animation-delay: 2s; }
.scn-list-conclusion .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 28%;
  background: linear-gradient(180deg, #6e6a64 0%, #4d4a45 100%);
  border-radius: 30% 30% 0 0 / 60% 60% 0 0;
}
@keyframes lc-paper {
  0% { transform: translateX(-50%) rotate(-1deg); }
  50% { transform: translateX(-48%) rotate(2deg); }
  100% { transform: translateX(-50%) rotate(-1deg); }
}
@keyframes lc-figure {
  0% { transform: translateX(-50%) translateY(0) rotate(0deg); }
  25% { transform: translateX(-45%) translateY(-2px) rotate(2deg); }
  50% { transform: translateX(-50%) translateY(0) rotate(-1deg); }
  75% { transform: translateX(-55%) translateY(-3px) rotate(3deg); }
  100% { transform: translateX(-50%) translateY(0) rotate(0deg); }
}
@keyframes lc-hat {
  0% { transform: translateX(-50%) rotate(-5deg); }
  50% { transform: translateX(-50%) rotate(5deg); }
  100% { transform: translateX(-50%) rotate(-5deg); }
}
@keyframes lc-dot-a {
  0% { transform: translate(0,0) scale(1); opacity: 0.8; }
  25% { transform: translate(4px,-3px) scale(1.1); opacity: 1; }
  50% { transform: translate(8px,-1px) scale(0.9); opacity: 0.7; }
  75% { transform: translate(12px,-4px) scale(1.2); opacity: 0.9; }
  100% { transform: translate(16px,0) scale(1); opacity: 0.8; }
}
@keyframes lc-dot-b {
  0% { transform: translate(0,0) scale(1); opacity: 0.9; }
  33% { transform: translate(-5px,-2px) scale(0.8); opacity: 0.6; }
  66% { transform: translate(-10px,1px) scale(1.2); opacity: 1; }
  100% { transform: translate(-15px,0) scale(1); opacity: 0.9; }
}
@keyframes lc-dot-c {
  0% { transform: translate(0,0) scale(1); }
  50% { transform: translate(6px,-5px) scale(1.1) rotate(10deg); }
  100% { transform: translate(12px,0) scale(1); }
}

/* dukes-palace-thurio-and-duke – tense, bright-interior */
.scn-dukes-palace-thurio-and-duke {
  background: linear-gradient(180deg, #c8b89a 0%, #a09078 40%, #7a6c58 100%),
              radial-gradient(ellipse at 50% 80%, #d4c4a4 0%, transparent 60%);
}
.scn-dukes-palace-thurio-and-duke .wall {
  position: absolute; inset: 0 0 20% 0;
  background: repeating-linear-gradient(90deg, #a09078 0px, #a09078 2px, #b8a88c 2px, #b8a88c 4px);
  background-size: 4px 100%; opacity: 0.3; animation: dp-wall 10s ease-in-out infinite;
}
.scn-dukes-palace-thurio-and-duke .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #5a4e3e 0%, #3f3528 100%);
  border-radius: 10% 10% 0 0 / 30% 30% 0 0;
}
.scn-dukes-palace-thurio-and-duke .column-left,
.scn-dukes-palace-thurio-and-duke .column-right {
  position: absolute; bottom: 20%; width: 12px; height: 65%;
  background: linear-gradient(90deg, #c4b494 0%, #e0d0b0 30%, #b8a888 100%);
  box-shadow: 2px 0 8px rgba(0,0,0,0.3);
}
.scn-dukes-palace-thurio-and-duke .column-left { left: 20%; }
.scn-dukes-palace-thurio-and-duke .column-right { right: 20%; }
.scn-dukes-palace-thurio-and-duke .figure-duke,
.scn-dukes-palace-thurio-and-duke .figure-thurio {
  position: absolute; bottom: 20%; width: 22px; height: 60px;
  background: linear-gradient(180deg, #3d3530 0%, #1f1a16 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
}
.scn-dukes-palace-thurio-and-duke .figure-duke { left: 32%; animation: dp-duke 3s ease-in-out infinite; }
.scn-dukes-palace-thurio-and-duke .figure-thurio { right: 32%; animation: dp-thurio 2.5s ease-in-out infinite; }
.scn-dukes-palace-thurio-and-duke .tension-line {
  position: absolute; bottom: 45%; left: 50%; width: 80px; height: 2px;
  background: linear-gradient(90deg, transparent, #a80a0a, transparent);
  transform: translateX(-50%); opacity: 0.6; animation: dp-tension 1.5s ease-in-out infinite;
}
@keyframes dp-wall {
  0% { opacity: 0.3; }
  50% { opacity: 0.5; }
  100% { opacity: 0.3; }
}
@keyframes dp-duke {
  0% { transform: translateX(0) translateY(0) rotate(0deg); }
  25% { transform: translateX(-3px) translateY(-2px) rotate(-2deg); }
  50% { transform: translateX(0) translateY(0) rotate(1deg); }
  75% { transform: translateX(2px) translateY(-1px) rotate(-1deg); }
  100% { transform: translateX(0) translateY(0) rotate(0deg); }
}
@keyframes dp-thurio {
  0% { transform: translateX(0) translateY(0) rotate(0deg); }
  30% { transform: translateX(4px) translateY(-1px) rotate(2deg); }
  60% { transform: translateX(0) translateY(0) rotate(-1deg); }
  100% { transform: translateX(-2px) translateY(0) rotate(0deg); }
}
@keyframes dp-tension {
  0% { transform: translateX(-50%) scaleX(0.8); opacity: 0.4; }
  50% { transform: translateX(-50%) scaleX(1.2); opacity: 0.8; }
  100% { transform: translateX(-50%) scaleX(0.8); opacity: 0.4; }
}

/* item-slander-plot-letter – tense, bright-interior */
.scn-item-slander-plot-letter {
  background: linear-gradient(180deg, #bda88a 0%, #a08c70 50%, #7a684e 100%),
              radial-gradient(ellipse at 60% 30%, #d4b894 0%, transparent 60%);
}
.scn-item-slander-plot-letter .desk {
  position: absolute; bottom: 18%; left: 30%; right: 30%; height: 12%;
  background: linear-gradient(180deg, #6e5c42 0%, #4a3b28 100%);
  border-radius: 4px; box-shadow: 0 6px 12px rgba(0,0,0,0.5);
}
.scn-item-slander-plot-letter .chair {
  position: absolute; bottom: 12%; left: 45%; width: 20px; height: 30px;
  background: linear-gradient(180deg, #5a4830 0%, #3b2e1e 100%);
  border-radius: 4px 4px 0 0; transform: translateX(-50%);
}
.scn-item-slander-plot-letter .figure-scribe {
  position: absolute; bottom: 25%; left: 46%; width: 20px; height: 48px;
  transform: translateX(-50%); background: linear-gradient(180deg, #3f3630 0%, #201c18 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: sl-scribe 5s ease-in-out infinite;
}
.scn-item-slander-plot-letter .paper-letter {
  position: absolute; bottom: 22%; left: 42%; width: 40px; height: 30px;
  background: linear-gradient(135deg, #e6dcc8 0%, #c8b898 100%);
  border-radius: 2px; box-shadow: 0 2px 6px rgba(0,0,0,0.4);
  animation: sl-paper 4s ease-in-out infinite;
}
.scn-item-slander-plot-letter .inkwell {
  position: absolute; bottom: 26%; left: 56%; width: 12px; height: 14px;
  background: linear-gradient(180deg, #2a1e14 0%, #0f0a06 100%);
  border-radius: 50% 50% 30% 30% / 40% 40% 30% 30%;
}
.scn-item-slander-plot-letter .candle {
  position: absolute; bottom: 30%; left: 58%; width: 6px; height: 22px;
  background: linear-gradient(180deg, #e6d0b0 0%, #c4a880 100%);
  border-radius: 2px 2px 1px 1px; animation: sl-candle 3s ease-in-out infinite;
}
.scn-item-slander-plot-letter .candle-glow {
  position: absolute; bottom: 44%; left: 58%; width: 20px; height: 20px;
  background: radial-gradient(circle, rgba(255,200,100,0.8) 0%, transparent 70%);
  transform: translateX(-50%); animation: sl-glow 2s ease-in-out infinite;
}
.scn-item-slander-plot-letter .shadow-hand {
  position: absolute; bottom: 24%; left: 34%; width: 16px; height: 12px;
  background: linear-gradient(180deg, #2a201a 0%, #120e0a 100%);
  border-radius: 60% 40% 40% 60% / 50% 50% 50% 50%;
  box-shadow: 0 0 8px rgba(0,0,0,0.5); animation: sl-hand 6s ease-in-out infinite;
}
@keyframes sl-scribe {
  0% { transform: translateX(-50%) translateY(0) rotate(0deg); }
  33% { transform: translateX(-48%) translateY(-2px) rotate(3deg); }
  66% { transform: translateX(-52%) translateY(-1px) rotate(-2deg); }
  100% { transform: translateX(-50%) translateY(0) rotate(0deg); }
}
@keyframes sl-paper {
  0% { transform: translate(0,0) rotate(0deg); }
  50% { transform: translate(2px,-3px) rotate(2deg); }
  100% { transform: translate(-1px,0) rotate(0deg); }
}
@keyframes sl-candle {
  0% { height: 22px; opacity: 0.9; }
  50% { height: 20px; opacity: 1; }
  100% { height: 22px; opacity: 0.9; }
}
@keyframes sl-glow {
  0% { transform: translateX(-50%) scale(0.9); opacity: 0.7; }
  50% { transform: translateX(-50%) scale(1.1); opacity: 1; }
  100% { transform: translateX(-50%) scale(0.9); opacity: 0.7; }
}
@keyframes sl-hand {
  0% { transform: translate(0,0) rotate(0deg) scale(1); }
  25% { transform: translate(4px,-2px) rotate(5deg) scale(1.1); }
  50% { transform: translate(8px,-1px) rotate(-3deg) scale(0.9); }
  75% { transform: translate(12px,-4px) rotate(2deg) scale(1.05); }
  100% { transform: translate(16px,0) rotate(0deg) scale(1); }
}

/* item-sonnets-and-music – warm, bright-interior */
.scn-item-sonnets-and-music {
  background: linear-gradient(180deg, #f5e6c8 0%, #e0ccaa 40%, #c0a882 100%),
              radial-gradient(ellipse at 30% 50%, #f0dbb0 0%, transparent 60%);
}
.scn-item-sonnets-and-music .warm-bg {
  position: absolute; inset: 0; background: radial-gradient(ellipse at 50% 30%, rgba(255,215,140,0.3) 0%, transparent 70%);
  animation: sm-bg 12s ease-in-out infinite alternate;
}
.scn-item-sonnets-and-music .floor-warm {
  position: absolute; bottom: 0; left: 0; right: 0; height: 22%;
  background: linear-gradient(180deg, #a08860 0%, #7a6648 100%);
  border-radius: 20% 20% 0 0 / 40% 40% 0 0;
}
.scn-item-sonnets-and-music .figure-poet {
  position: absolute; bottom: 22%; left: 50%; width: 26px; height: 58px;
  transform: translateX(-50%); background: linear-gradient(180deg, #4a3e30 0%, #2a2218 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: sm-poet 6s ease-in-out infinite;
}
.scn-item-sonnets-and-music .lute {
  position: absolute; bottom: 28%; left: 44%; width: 40px; height: 14px;
  background: linear-gradient(180deg, #b89870 0%, #8a6e48 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: rotate(-20deg); animation: sm-lute 4s ease-in-out infinite;
}
.scn-item-sonnets-and-music .note-a,
.scn-item-sonnets-and-music .note-b {
  position: absolute; width: 8px; height: 6px; background: #6a4e2e;
  border-radius: 0 0 50% 50% / 0 0 80% 80%;
}
.scn-item-sonnets-and-music .note-a { top: 30%; left: 30%; animation: sm-note-a 10s linear infinite; }
.scn-item-sonnets-and-music .note-b { top: 25%; left: 60%; animation: sm-note-b 12s linear infinite; animation-delay: 3s; }
.scn-item-sonnets-and-music .sunbeam {
  position: absolute; top: 0; left: 20%; width: 120px; height: 100%;
  background: linear-gradient(180deg, rgba(255,240,200,0.15) 0%, transparent 80%);
  clip-path: polygon(0 0, 100% 0, 80% 100%, 20% 100%);
  animation: sm-beam 8s ease-in-out infinite alternate;
}
@keyframes sm-bg {
  0% { opacity: 0.6; }
  100% { opacity: 1; }
}
@keyframes sm-poet {
  0% { transform: translateX(-50%) translateY(0) rotate(0deg); }
  30% { transform: translateX(-50%) translateY(-3px) rotate(2deg); }
  60% { transform: translateX(-50%) translateY(-1px) rotate(-1deg); }
  100% { transform: translateX(-50%) translateY(0) rotate(0deg); }
}
@keyframes sm-lute {
  0% { transform: rotate(-20deg) scale(1); }
  50% { transform: rotate(-15deg) scale(1.05); }
  100% { transform: rotate(-20deg) scale(1); }
}
@keyframes sm-note-a {
  0% { transform: translate(0, 0) scale(1); opacity: 0.8; }
  25% { transform: translate(10px, -30px) scale(1.2) rotate(15deg); opacity: 1; }
  50% { transform: translate(20px, -60px) scale(0.9) rotate(30deg); opacity: 0.6; }
  75% { transform: translate(30px, -90px) scale(1.1) rotate(45deg); opacity: 0.3; }
  100% { transform: translate(40px, -120px) scale(0.8) rotate(60deg); opacity: 0; }
}
@keyframes sm-note-b {
  0% { transform: translate(0, 0) scale(1); opacity: 0.7; }
  33% { transform: translate(-15px, -40px) scale(1.3) rotate(-20deg); opacity: 1; }
  66% { transform: translate(-30px, -80px) scale(0.8) rotate(-40deg); opacity: 0.5; }
  100% { transform: translate(-45px, -120px) scale(0.6) rotate(-60deg); opacity: 0; }
}
@keyframes sm-beam {
  0% { transform: skewX(-5deg); opacity: 0.4; }
  50% { transform: skewX(5deg); opacity: 0.7; }
  100% { transform: skewX(-5deg); opacity: 0.4; }
}

/* Scene: duke-thurio-proteus-plot */
.scn-duke-thurio-proteus-plot {
  background: linear-gradient(180deg, #f5e6d0 0%, #d4bda8 50%, #c2a58a 100%),
              radial-gradient(circle at 30% 40%, #fff8e8 0%, transparent 70%);
}
.scn-duke-thurio-proteus-plot .wall {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(135deg, #e6d5b8 60%, #d4bfa0 100%);
  box-shadow: inset 0 0 80px rgba(0,0,0,0.1);
  animation: dtpp-wall 20s ease-in-out infinite alternate;
}
.scn-duke-thurio-proteus-plot .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #b89a78 0%, #9c7d5e 100%);
  border-radius: 20% 20% 0 0 / 10% 10% 0 0;
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.15);
}
.scn-duke-thurio-proteus-plot .window {
  position: absolute; top: 15%; left: 15%; width: 120px; height: 80px;
  background: linear-gradient(180deg, #fff4d6 0%, #e8d4b0 100%);
  border-radius: 6% 6% 4% 4%;
  box-shadow: 0 0 40px 10px rgba(255,244,214,0.5), inset 0 0 20px rgba(0,0,0,0.1);
  animation: dtpp-window 8s ease-in-out infinite alternate;
}
.scn-duke-thurio-proteus-plot .table {
  position: absolute; bottom: 28%; left: 35%; width: 200px; height: 14px;
  background: linear-gradient(180deg, #7a5e42 0%, #5a3e2a 100%);
  border-radius: 8% 8% 4% 4%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.3);
}
.scn-duke-thurio-proteus-plot .duke {
  position: absolute; bottom: 26%; left: 30%; width: 40px; height: 80px;
  background: linear-gradient(180deg, #2e2a24 0%, #1a1814 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: dtpp-duke 6s ease-in-out infinite;
}
.scn-duke-thurio-proteus-plot .proteus {
  position: absolute; bottom: 26%; left: 48%; width: 36px; height: 76px;
  background: linear-gradient(180deg, #2a2620 0%, #161412 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: dtpp-proteus 7s ease-in-out infinite alternate;
}
.scn-duke-thurio-proteus-plot .candle-glow {
  position: absolute; bottom: 32%; left: 38%; width: 12px; height: 12px;
  background: radial-gradient(circle, #ffdd88 0%, #ffaa44 50%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 30px 15px rgba(255,170,68,0.5);
  animation: dtpp-candle 3s ease-in-out infinite alternate;
}
@keyframes dtpp-wall { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.95; } }
@keyframes dtpp-window { 0% { background: linear-gradient(180deg, #fff4d6, #e8d4b0); box-shadow: 0 0 40px 10px rgba(255,244,214,0.5); } 50% { background: linear-gradient(180deg, #fff9e6, #ecdcc4); box-shadow: 0 0 50px 15px rgba(255,244,214,0.6); } 100% { background: linear-gradient(180deg, #f5e6cc, #dcccae); box-shadow: 0 0 30px 8px rgba(255,244,214,0.4); } }
@keyframes dtpp-duke { 0% { transform: translateY(0) rotate(-2deg); } 25% { transform: translateY(-2px) rotate(0deg); } 50% { transform: translateY(0) rotate(2deg); } 75% { transform: translateY(-1px) rotate(-1deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes dtpp-proteus { 0% { transform: translateY(0) rotate(1deg); } 50% { transform: translateY(-3px) rotate(-1deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes dtpp-candle { 0% { transform: scale(1) translateY(0); opacity: 0.85; } 50% { transform: scale(1.2) translateY(-2px); opacity: 1; } 100% { transform: scale(0.95) translateY(0); opacity: 0.9; } }

/* Scene: duke-intercepts-valentine */
.scn-duke-intercepts-valentine {
  background: linear-gradient(180deg, #f2e0cc 0%, #dac8b0 40%, #bfa88a 100%),
              radial-gradient(ellipse at 20% 50%, #fff4e0 0%, transparent 60%);
}
.scn-duke-intercepts-valentine .backdrop {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(135deg, #e3d2bc 50%, #d0bca2 100%);
  box-shadow: inset 0 0 60px rgba(0,0,0,0.08);
  animation: div-backdrop 15s ease-in-out infinite alternate;
}
.scn-duke-intercepts-valentine .desk {
  position: absolute; bottom: 22%; left: 20%; width: 240px; height: 18px;
  background: linear-gradient(180deg, #735a3e 0%, #50402a 100%);
  border-radius: 6% 6% 2% 2%;
  box-shadow: 0 6px 12px rgba(0,0,0,0.25);
}
.scn-duke-intercepts-valentine .letter-a {
  position: absolute; bottom: 28%; left: 35%; width: 40px; height: 28px;
  background: linear-gradient(180deg, #f5ecd0 0%, #e8dbb8 100%);
  border-radius: 4% 4% 2% 2%;
  box-shadow: 0 2px 4px rgba(0,0,0,0.15);
  transform: rotate(-6deg);
  animation: div-letter 8s ease-in-out infinite;
}
.scn-duke-intercepts-valentine .letter-b {
  position: absolute; bottom: 30%; left: 50%; width: 40px; height: 28px;
  background: linear-gradient(180deg, #f5ecd0 0%, #e8dbb8 100%);
  border-radius: 4% 4% 2% 2%;
  box-shadow: 0 2px 4px rgba(0,0,0,0.15);
  transform: rotate(10deg);
  animation: div-letter 8s ease-in-out infinite reverse;
}
.scn-duke-intercepts-valentine .duke-reading {
  position: absolute; bottom: 20%; left: 28%; width: 44px; height: 90px;
  background: linear-gradient(180deg, #2e2a24 0%, #1a1814 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: div-duke 5s ease-in-out infinite;
}
.scn-duke-intercepts-valentine .valentine {
  position: absolute; bottom: 20%; left: 50%; width: 38px; height: 82px;
  background: linear-gradient(180deg, #2c2822 0%, #1c1814 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: div-valentine 6s ease-in-out infinite alternate;
}
.scn-duke-intercepts-valentine .seal {
  position: absolute; bottom: 28%; left: 38%; width: 10px; height: 10px;
  background: radial-gradient(circle, #b03020 0%, #7a1a10 100%);
  border-radius: 50%;
  box-shadow: 0 0 6px 2px rgba(128,40,30,0.4);
  animation: div-seal 4s ease-in-out infinite alternate;
}
@keyframes div-backdrop { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.92; } }
@keyframes div-letter { 0% { transform: rotate(-6deg) translateY(0); } 50% { transform: rotate(-2deg) translateY(-2px); } 100% { transform: rotate(2deg) translateY(0); } }
@keyframes div-duke { 0% { transform: translateY(0) rotate(-1deg); } 33% { transform: translateY(-2px) rotate(0deg); } 66% { transform: translateY(0) rotate(2deg); } 100% { transform: translateY(-1px) rotate(-1deg); } }
@keyframes div-valentine { 0% { transform: translateY(0) rotate(1deg); } 50% { transform: translateY(-3px) rotate(-2deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes div-seal { 0% { box-shadow: 0 0 6px 2px rgba(128,40,30,0.4); transform: scale(1); } 50% { box-shadow: 0 0 10px 4px rgba(128,40,30,0.6); transform: scale(1.15); } 100% { box-shadow: 0 0 6px 2px rgba(128,40,30,0.4); transform: scale(1); } }

/* Scene: item-corded-ladder */
.scn-item-corded-ladder {
  background: linear-gradient(180deg, #f0e2d0 0%, #dcc8ae 40%, #c2a88c 100%),
              radial-gradient(circle at 70% 30%, #fff4e0 0%, transparent 50%);
}
.scn-item-corded-ladder .chamber-wall {
  position: absolute; inset: 0 0 32% 0;
  background: linear-gradient(135deg, #ede0d0 60%, #dccaba 100%);
  box-shadow: inset 0 0 50px rgba(0,0,0,0.06);
  animation: icl-wall 18s ease-in-out infinite alternate;
}
.scn-item-corded-ladder .floor-planks {
  position: absolute; bottom: 0; left: 0; right: 0; height: 32%;
  background: linear-gradient(180deg, #b69878 0%, #9a7c60 100%);
  border-radius: 15% 15% 0 0 / 8% 8% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.1);
}
.scn-item-corded-ladder .ladder {
  position: absolute; bottom: 20%; left: 30%; width: 100px; height: 130px;
  background: linear-gradient(90deg, #63482e 0%, #8a6a4a 30%, #63482e 70%, #4a3420 100%);
  border-radius: 4% 4% 2% 2%;
  box-shadow: 0 8px 16px rgba(0,0,0,0.3);
  transform: rotate(10deg);
  transform-origin: bottom center;
  animation: icl-ladder 5s ease-in-out infinite alternate;
}
.scn-item-corded-ladder .cloak {
  position: absolute; bottom: 26%; left: 28%; width: 70px; height: 50px;
  background: linear-gradient(180deg, #4a3a2e 0%, #2e221a 100%);
  border-radius: 80% 20% 50% 50% / 60% 40% 60% 40%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.2);
  animation: icl-cloak 4s ease-in-out infinite;
}
.scn-item-corded-ladder .figure-carrier {
  position: absolute; bottom: 18%; left: 25%; width: 38px; height: 85px;
  background: linear-gradient(180deg, #2a2620 0%, #161412 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: icl-carrier 6s ease-in-out infinite;
}
.scn-item-corded-ladder .helper {
  position: absolute; bottom: 18%; left: 50%; width: 36px; height: 80px;
  background: linear-gradient(180deg, #2c2822 0%, #1a1814 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: icl-helper 7s ease-in-out infinite alternate;
}
.scn-item-corded-ladder .window-light {
  position: absolute; top: 12%; right: 20%; width: 80px; height: 60px;
  background: linear-gradient(180deg, #fef6e0 0%, #e6d4b8 100%);
  border-radius: 6% 6% 4% 4%;
  box-shadow: 0 0 30px 8px rgba(254,246,224,0.4);
  animation: icl-light 10s ease-in-out infinite alternate;
}
@keyframes icl-wall { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.93; } }
@keyframes icl-ladder { 0% { transform: rotate(8deg) translateY(0); } 50% { transform: rotate(12deg) translateY(-4px); } 100% { transform: rotate(8deg) translateY(0); } }
@keyframes icl-cloak { 0% { transform: translateY(0) rotate(-3deg); } 25% { transform: translateY(-1px) rotate(0deg); } 50% { transform: translateY(1px) rotate(3deg); } 75% { transform: translateY(-2px) rotate(0deg); } 100% { transform: translateY(0) rotate(-3deg); } }
@keyframes icl-carrier { 0% { transform: translateY(0) rotate(1deg); } 33% { transform: translateY(-2px) rotate(-1deg); } 66% { transform: translateY(0) rotate(2deg); } 100% { transform: translateY(-1px) rotate(0deg); } }
@keyframes icl-helper { 0% { transform: translateY(0) rotate(-2deg); } 50% { transform: translateY(-3px) rotate(1deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes icl-light { 0% { background: linear-gradient(180deg, #fef6e0, #e6d4b8); box-shadow: 0 0 30px 8px rgba(254,246,224,0.4); } 50% { background: linear-gradient(180deg, #fff8e6, #ecdcc4); box-shadow: 0 0 40px 12px rgba(254,246,224,0.5); } 100% { background: linear-gradient(180deg, #f5e6cc, #dcccae); box-shadow: 0 0 25px 6px rgba(254,246,224,0.3); } }

/* Scene: item-letter-to-silvia */
.scn-item-letter-to-silvia {
  background: linear-gradient(180deg, #ecd8c4 0%, #d0bca2 40%, #b89a7c 100%),
              radial-gradient(ellipse at 40% 60%, #f8e8d0 0%, transparent 60%);
}
.scn-item-letter-to-silvia .room-bg {
  position: absolute; inset: 0 0 28% 0;
  background: linear-gradient(135deg, #e3d2bc 50%, #ceb8a0 100%);
  box-shadow: inset 0 0 80px rgba(0,0,0,0.15);
  animation: ilts-bg 12s ease-in-out infinite alternate;
}
.scn-item-letter-to-silvia .small-table {
  position: absolute; bottom: 18%; left: 30%; width: 140px; height: 16px;
  background: linear-gradient(180deg, #6a5038 0%, #4a3420 100%);
  border-radius: 8% 8% 4% 4%;
  box-shadow: 0 6px 12px rgba(0,0,0,0.3);
}
.scn-item-letter-to-silvia .letter-page {
  position: absolute; bottom: 28%; left: 38%; width: 50px; height: 35px;
  background: linear-gradient(180deg, #faf3e0 0%, #e8dcbe 100%);
  border-radius: 4% 4% 2% 2%;
  box-shadow: 0 2px 4px rgba(0,0,0,0.1);
  transform: rotate(-15deg);
  animation: ilts-letter 3s ease-in-out infinite alternate;
}
.scn-item-letter-to-silvia .furious-figure {
  position: absolute; bottom: 16%; left: 22%; width: 42px; height: 95px;
  background: linear-gradient(180deg, #2e2a24 0%, #1a1814 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ilts-figure 2s ease-in-out infinite;
}
.scn-item-letter-to-silvia .candle-flame {
  position: absolute; bottom: 30%; left: 34%; width: 10px; height: 14px;
  background: radial-gradient(circle at 50% 40%, #ffdd88 0%, #ff8844 50%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 25px 12px rgba(255,136,68,0.5);
  animation: ilts-flame 1.6s ease-in-out infinite alternate;
}
.scn-item-letter-to-silvia .crumpled-paper {
  position: absolute; bottom: 15%; left: 50%; width: 28px; height: 22px;
  background: linear-gradient(180deg, #e8dbb8 0%, #c8b898 100%);
  border-radius: 30% 30% 20% 20%;
  box-shadow: 0 2px 6px rgba(0,0,0,0.2);
  transform: rotate(40deg);
  animation: ilts-paper 5s ease-in-out infinite;
}
.scn-item-letter-to-silvia .shadow {
  position: absolute; bottom: 12%; left: 18%; width: 100px; height: 20px;
  background: radial-gradient(ellipse, rgba(0,0,0,0.3) 0%, transparent 100%);
  animation: ilts-shadow 3s ease-in-out infinite alternate;
}
@keyframes ilts-bg { 0% { opacity: 0.85; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes ilts-letter { 0% { transform: rotate(-15deg) translateY(0) scale(1); } 50% { transform: rotate(-10deg) translateY(-3px) scale(1.05); } 100% { transform: rotate(-20deg) translateY(0) scale(1); } }
@keyframes ilts-figure { 0% { transform: translateY(0) rotate(-5deg); } 20% { transform: translateY(-4px) rotate(3deg); } 40% { transform: translateY(0) rotate(-3deg); } 60% { transform: translateY(-2px) rotate(4deg); } 80% { transform: translateY(0) rotate(-2deg); } 100% { transform: translateY(-3px) rotate(2deg); } }
@keyframes ilts-flame { 0% { transform: scale(1) translateY(0); opacity: 0.8; } 50% { transform: scale(1.3) translateY(-3px); opacity: 1; } 100% { transform: scale(0.9) translateY(0); opacity: 0.7; } }
@keyframes ilts-paper { 0% { transform: rotate(40deg) translateX(0); } 25% { transform: rotate(30deg) translateX(4px); } 50% { transform: rotate(50deg) translateX(-2px); } 75% { transform: rotate(35deg) translateX(3px); } 100% { transform: rotate(45deg) translateX(0); } }
@keyframes ilts-shadow { 0% { transform: scaleX(1); opacity: 0.5; } 50% { transform: scaleX(1.2); opacity: 0.7; } 100% { transform: scaleX(0.9); opacity: 0.4; } }

/* milan-valentine-speed-glove */
.scn-milan-valentine-speed-glove {
  background: linear-gradient(180deg, #f6e3c5 0%, #dbb48a 40%, #c49a6c 100%), 
              radial-gradient(ellipse at 70% 30%, #ffeab5 0%, transparent 60%);
  position: relative;
  overflow: hidden;
  width: 100%;
  height: 100%;
}
.scn-milan-valentine-speed-glove .bg-sun {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #f9f2df 0%, #e6cba3 100%);
  animation: mv-bg-pulse 12s ease-in-out infinite alternate;
}
.scn-milan-valentine-speed-glove .colonnade {
  position: absolute; bottom: 25%; left: 10%; right: 10%; height: 35%;
  background: repeating-linear-gradient(90deg, #d1a87a 0px, #d1a87a 20px, transparent 20px, transparent 40px, #b88a5e 40px, #b88a5e 60px);
  mask-image: linear-gradient(180deg, #000 0%, transparent 30%);
  -webkit-mask-image: linear-gradient(180deg, #000 0%, transparent 30%);
  animation: mv-colonnade 20s linear infinite;
}
.scn-milan-valentine-speed-glove .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(0deg, #a0764a 0%, #c49a6c 50%, #dbb48a 100%);
  border-radius: 30% 30% 0 0 / 20% 20% 0 0;
  box-shadow: inset 0 20px 30px rgba(0,0,0,0.15);
}
.scn-milan-valentine-speed-glove .figure-valentine {
  position: absolute; bottom: 20%; left: 38%; width: 50px; height: 90px;
  background: linear-gradient(180deg, #3c2b1e 0%, #2b1d12 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 35% 35%;
  transform-origin: bottom center;
  animation: mv-valentine-body 6s ease-in-out infinite alternate;
}
.scn-milan-valentine-speed-glove .figure-speed {
  position: absolute; bottom: 20%; left: 52%; width: 42px; height: 80px;
  background: linear-gradient(180deg, #4a3520 0%, #2d1d0f 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 35% 35%;
  transform-origin: bottom center;
  animation: mv-speed-body 8s ease-in-out infinite alternate;
  animation-delay: -3s;
}
.scn-milan-valentine-speed-glove .glove {
  position: absolute; bottom: 30%; left: 46%; width: 28px; height: 36px;
  background: linear-gradient(135deg, #f0d0a0 0%, #d4a87a 40%, #b88050 100%);
  border-radius: 30% 30% 40% 40% / 50% 50% 40% 40%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.3), 0 8px 20px rgba(0,0,0,0.2);
  animation: mv-glove 4s ease-in-out infinite;
  /* glove shape: slightly curved */
  transform: rotate(15deg);
}
.scn-milan-valentine-speed-glove .shadow-glove {
  position: absolute; bottom: 28%; left: 45%; width: 30px; height: 38px;
  background: rgba(0,0,0,0.15);
  border-radius: 30% 30% 40% 40% / 50% 50% 40% 40%;
  transform: rotate(15deg) translate(8px, 6px);
  filter: blur(4px);
  animation: mv-shadow-glove 4s ease-in-out infinite;
}
.scn-milan-valentine-speed-glove .dust {
  position: absolute; top: 10%; left: 20%; width: 4px; height: 4px;
  background: #ffeab5;
  border-radius: 50%;
  box-shadow: 0 0 6px 2px rgba(255,234,181,0.6);
  animation: mv-dust-float 9s ease-in-out infinite;
}
@keyframes mv-bg-pulse {
  0% { opacity: 0.9; }
  50% { opacity: 1; }
  100% { opacity: 0.85; }
}
@keyframes mv-colonnade {
  0% { transform: translateX(0); }
  100% { transform: translateX(-40px); }
}
@keyframes mv-valentine-body {
  0% { transform: translateY(0) rotate(-2deg); }
  30% { transform: translateY(-3px) rotate(1deg); }
  60% { transform: translateY(-1px) rotate(-1deg); }
  100% { transform: translateY(0) rotate(2deg); }
}
@keyframes mv-speed-body {
  0% { transform: translateY(0) rotate(2deg); }
  25% { transform: translateY(-2px) rotate(-1deg); }
  50% { transform: translateY(-4px) rotate(3deg); }
  75% { transform: translateY(-1px) rotate(0deg); }
  100% { transform: translateY(0) rotate(1deg); }
}
@keyframes mv-glove {
  0% { transform: rotate(15deg) translateY(0); }
  30% { transform: rotate(18deg) translateY(-4px) scale(1.02); }
  60% { transform: rotate(12deg) translateY(-2px); }
  100% { transform: rotate(15deg) translateY(0); }
}
@keyframes mv-shadow-glove {
  0% { opacity: 0.3; transform: rotate(15deg) translate(8px,6px); }
  30% { opacity: 0.5; transform: rotate(18deg) translate(10px,4px); }
  60% { opacity: 0.2; transform: rotate(12deg) translate(6px,8px); }
  100% { opacity: 0.3; transform: rotate(15deg) translate(8px,6px); }
}
@keyframes mv-dust-float {
  0% { transform: translate(0,0) scale(1); opacity: 0.6; }
  25% { transform: translate(20px,-10px) scale(0.8); opacity: 0.3; }
  50% { transform: translate(40px,0) scale(1.2); opacity: 0.8; }
  75% { transform: translate(10px,-20px) scale(0.6); opacity: 0.4; }
  100% { transform: translate(0,0) scale(1); opacity: 0.6; }
}

/* milan-speed-observes-love */
.scn-milan-speed-observes-love {
  background: linear-gradient(180deg, #f2e3c6 0%, #dbb48a 30%, #c49a6c 100%),
              radial-gradient(ellipse at 50% 80%, #f9dfa0 0%, transparent 60%);
  position: relative;
  overflow: hidden;
  width: 100%;
  height: 100%;
}
.scn-milan-speed-observes-love .bg-garden {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(180deg, #a8d8a8 0%, #80c080 50%, #5a9a5a 100%);
  border-radius: 0 0 40% 40% / 0 0 60% 60%;
  animation: mv-garden-sway 15s ease-in-out infinite alternate;
}
.scn-milan-speed-observes-love .hedge-left {
  position: absolute; bottom: 25%; left: 5%; width: 20%; height: 40%;
  background: linear-gradient(135deg, #5a9a5a 0%, #2d6e2d 100%);
  border-radius: 60% 40% 20% 20% / 80% 60% 20% 20%;
  box-shadow: inset -10px 0 20px rgba(0,0,0,0.2);
}
.scn-milan-speed-observes-love .hedge-right {
  position: absolute; bottom: 25%; right: 5%; width: 20%; height: 35%;
  background: linear-gradient(225deg, #5a9a5a 0%, #2d6e2d 100%);
  border-radius: 40% 60% 20% 20% / 60% 80% 20% 20%;
  box-shadow: inset 10px 0 20px rgba(0,0,0,0.2);
}
.scn-milan-speed-observes-love .figure-valentine-love {
  position: absolute; bottom: 20%; left: 35%; width: 45px; height: 85px;
  background: linear-gradient(180deg, #3c2b1e 0%, #2b1d12 100%);
  border-radius: 50% 50% 40% 40% / 50% 50% 35% 35%;
  transform-origin: bottom center;
  animation: mv-valentine-lovesick 4s ease-in-out infinite;
}
.scn-milan-speed-observes-love .figure-speed-grin {
  position: absolute; bottom: 20%; left: 50%; width: 40px; height: 75px;
  background: linear-gradient(180deg, #4a3520 0%, #2d1d0f 100%);
  border-radius: 50% 50% 40% 40% / 50% 50% 35% 35%;
  transform-origin: bottom center;
  animation: mv-speed-grin 6s ease-in-out infinite;
  animation-delay: -2s;
}
.scn-milan-speed-observes-love .heart {
  position: absolute; top: 15%; left: 45%; width: 20px; height: 18px;
  background: radial-gradient(circle at 50% 30%, #c8553d 0%, #a0461a 100%);
  clip-path: polygon(50% 15%, 70% 0%, 100% 30%, 50% 100%, 0% 30%, 30% 0%);
  animation: mv-heart-beat 1.5s ease-in-out infinite;
}
.scn-milan-speed-observes-love .sparkle-1 {
  position: absolute; top: 20%; left: 30%; width: 6px; height: 6px;
  background: #ffeab5;
  border-radius: 50%;
  box-shadow: 0 0 10px 4px rgba(255,234,181,0.8);
  animation: mv-sparkle 3s ease-in-out infinite;
}
.scn-milan-speed-observes-love .sparkle-2 {
  position: absolute; top: 25%; right: 30%; width: 4px; height: 4px;
  background: #ffeab5;
  border-radius: 50%;
  box-shadow: 0 0 8px 3px rgba(255,234,181,0.7);
  animation: mv-sparkle 3.5s ease-in-out infinite;
  animation-delay: -1s;
}
.scn-milan-speed-observes-love .sunbeam {
  position: absolute; top: 0; left: 40%; width: 20%; height: 100%;
  background: linear-gradient(180deg, rgba(255,234,181,0.2) 0%, transparent 60%);
  clip-path: polygon(0 0, 100% 0, 80% 100%, 20% 100%);
  animation: mv-sunbeam 10s ease-in-out infinite alternate;
  filter: blur(4px);
}
@keyframes mv-garden-sway {
  0% { transform: scaleX(1); }
  50% { transform: scaleX(1.02) translateY(-2px); }
  100% { transform: scaleX(0.98); }
}
@keyframes mv-valentine-lovesick {
  0% { transform: translateY(0) rotate(-5deg); }
  25% { transform: translateY(-3px) rotate(-2deg); }
  50% { transform: translateY(-1px) rotate(-8deg); }
  75% { transform: translateY(-4px) rotate(0deg); }
  100% { transform: translateY(0) rotate(-5deg); }
}
@keyframes mv-speed-grin {
  0% { transform: translateY(0) rotate(5deg) scale(1); }
  20% { transform: translateY(-2px) rotate(10deg) scale(1.1); }
  40% { transform: translateY(-4px) rotate(12deg) scale(1.05); }
  60% { transform: translateY(-1px) rotate(8deg) scale(1.15); }
  80% { transform: translateY(-3px) rotate(15deg) scale(1); }
  100% { transform: translateY(0) rotate(5deg) scale(1); }
}
@keyframes mv-heart-beat {
  0% { transform: scale(1); }
  20% { transform: scale(1.3); }
  40% { transform: scale(1); }
  60% { transform: scale(1.2); }
  100% { transform: scale(1); }
}
@keyframes mv-sparkle {
  0% { opacity: 0; transform: scale(0) rotate(0deg); }
  50% { opacity: 1; transform: scale(1.5) rotate(180deg); }
  100% { opacity: 0; transform: scale(0) rotate(360deg); }
}
@keyframes mv-sunbeam {
  0% { opacity: 0.3; transform: translateX(-10px); }
  50% { opacity: 0.6; transform: translateX(5px); }
  100% { opacity: 0.2; transform: translateX(0); }
}

/* milan-valentine-silvia-discussion */
.scn-milan-valentine-silvia-discussion {
  background: linear-gradient(180deg, #f6e3c5 0%, #e6cba3 50%, #d4b080 100%);
  background-color: #dbb48a; /* fallback */
  position: relative;
  overflow: hidden;
  width: 100%;
  height: 100%;
}
.scn-milan-valentine-silvia-discussion .bg-window {
  position: absolute; inset: 0 10% 20% 10%;
  background: linear-gradient(180deg, #a0c8e0 0%, #7fb0d0 50%, #5a90b0 100%);
  border-radius: 30% 30% 20% 20% / 40% 40% 20% 20%;
  box-shadow: inset 0 20px 40px rgba(0,0,0,0.1);
  animation: mv-window 12s ease-in-out infinite alternate;
}
.scn-milan-valentine-silvia-discussion .windowsill {
  position: absolute; bottom: 20%; left: 10%; right: 10%; height: 8%;
  background: linear-gradient(180deg, #c4a87a 0%, #a08050 100%);
  border-radius: 10px;
  box-shadow: 0 -4px 8px rgba(0,0,0,0.2);
}
.scn-milan-valentine-silvia-discussion .curtain-left {
  position: absolute; bottom: 20%; left: 8%; width: 20%; height: 70%;
  background: linear-gradient(180deg, #d4a060 0%, #b08040 100%);
  border-radius: 10% 0 0 10% / 20% 0 0 20%;
  transform-origin: top left;
  animation: mv-curtain-l 10s ease-in-out infinite alternate;
}
.scn-milan-valentine-silvia-discussion .curtain-right {
  position: absolute; bottom: 20%; right: 8%; width: 20%; height: 70%;
  background: linear-gradient(180deg, #d4a060 0%, #b08040 100%);
  border-radius: 0 10% 10% 0 / 0 20% 20% 0;
  transform-origin: top right;
  animation: mv-curtain-r 10s ease-in-out infinite alternate;
  animation-delay: -5s;
}
.scn-milan-valentine-silvia-discussion .figure-valentine-profile {
  position: absolute; bottom: 10%; left: 30%; width: 50px; height: 90px;
  background: linear-gradient(180deg, #3c2b1e 0%, #2b1d12 100%);
  border-radius: 50% 40% 30% 40% / 50% 40% 30% 40%;
  transform-origin: bottom center;
  animation: mv-valentine-discuss 6s ease-in-out infinite alternate;
}
.scn-milan-valentine-silvia-discussion .figure-silvia-profile {
  position: absolute; bottom: 10%; left: 55%; width: 45px; height: 90px;
  background: linear-gradient(180deg, #5a3a2a 0%, #3a2010 100%);
  border-radius: 40% 50% 40% 30% / 40% 50% 30% 40%;
  transform-origin: bottom center;
  animation: mv-silvia-discuss 8s ease-in-out infinite alternate;
  animation-delay: -2s;
}
.scn-milan-valentine-silvia-discussion .hand-gesture {
  position: absolute; bottom: 25%; left: 45%; width: 20px; height: 30px;
  background: linear-gradient(135deg, #2b1d12 0%, #1a0f08 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: mv-hand 4s ease-in-out infinite;
}
.scn-milan-valentine-silvia-discussion .warm-glow {
  position: absolute; bottom: 30%; left: 35%; width: 100px; height: 100px;
  background: radial-gradient(circle, rgba(255,234,181,0.3) 0%, transparent 70%);
  border-radius: 50%;
  animation: mv-glow-pulse 6s ease-in-out infinite alternate;
}
@keyframes mv-window {
  0% { opacity: 0.7; }
  50% { opacity: 1; }
  100% { opacity: 0.8; }
}
@keyframes mv-curtain-l {
  0% { transform: rotate(0deg); }
  50% { transform: rotate(-10deg); }
  100% { transform: rotate(0deg); }
}
@keyframes mv-curtain-r {
  0% { transform: rotate(0deg); }
  50% { transform: rotate(10deg); }
  100% { transform: rotate(0deg); }
}
@keyframes mv-valentine-discuss {
  0% { transform: translateY(0) rotate(0deg); }
  30% { transform: translateY(-5px) rotate(-5deg); }
  60% { transform: translateY(-2px) rotate(3deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes mv-silvia-discuss {
  0% { transform: translateY(0) rotate(0deg); }
  25% { transform: translateY(-3px) rotate(4deg); }
  50% { transform: translateY(-6px) rotate(0deg); }
  75% { transform: translateY(-2px) rotate(-4deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes mv-hand {
  0% { transform: translateY(0) rotate(0deg); }
  25% { transform: translateY(-5px) rotate(20deg); }
  50% { transform: translateY(-2px) rotate(-10deg); }
  75% { transform: translateY(-4px) rotate(15deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes mv-glow-pulse {
  0% { opacity: 0.3; transform: scale(0.9); }
  50% { opacity: 0.6; transform: scale(1.1); }
  100% { opacity: 0.4; transform: scale(0.95); }
}

/* milan-silvia-letter-trick */
.scn-milan-silvia-letter-trick {
  background: linear-gradient(180deg, #f6e3c5 0%, #dbb48a 40%, #c49a6c 100%),
              radial-gradient(ellipse at 30% 50%, #ffeab5 0%, transparent 50%);
  position: relative;
  overflow: hidden;
  width: 100%;
  height: 100%;
}
.scn-milan-silvia-letter-trick .bg-chamber {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, #c49a6c 0%, #a0764a 100%);
  opacity: 0.3;
}
.scn-milan-silvia-letter-trick .bed-curtain {
  position: absolute; top: 0; right: 0; width: 60%; height: 100%;
  background: linear-gradient(135deg, #7a5a3a 0%, #4a3020 100%);
  border-radius: 0 0 0 30%;
  opacity: 0.4;
  animation: mv-curtain-wave 12s ease-in-out infinite alternate;
}
.scn-milan-silvia-letter-trick .letter {
  position: absolute; bottom: 30%; left: 50%; width: 60px; height: 80px;
  background: linear-gradient(135deg, #f9ead0 0%, #ead0a0 100%);
  border-radius: 4px;
  box-shadow: 0 8px 20px rgba(0,0,0,0.3), 0 2px 6px rgba(0,0,0,0.2);
  transform: rotate(-15deg) translateX(-50%);
  transform-origin: bottom center;
  animation: mv-letter 5s ease-in-out infinite;
}
.scn-milan-silvia-letter-trick .letter-seal {
  position: absolute; bottom: 40%; left: 50%; width: 16px; height: 16px;
  background: radial-gradient(circle at 40% 40%, #d65a3a 0%, #a03010 100%);
  border-radius: 50%;
  transform: translate(-50%, -50%);
  box-shadow: 0 0 8px rgba(200,80,40,0.5);
  animation: mv-seal 5s ease-in-out infinite;
}
.scn-milan-silvia-letter-trick .hand-speed {
  position: absolute; bottom: 25%; left: 35%; width: 24px; height: 40px;
  background: linear-gradient(180deg, #4a3520 0%, #2d1d0f 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: mv-hand-speed 4s ease-in-out infinite;
}
.scn-milan-silvia-letter-trick .hand-valentine {
  position: absolute; bottom: 25%; left: 60%; width: 24px; height: 40px;
  background: linear-gradient(180deg, #3c2b1e 0%, #2b1d12 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: mv-hand-valentine 4s ease-in-out infinite;
  animation-delay: -2s;
}
.scn-milan-silvia-letter-trick .candle {
  position: absolute; bottom: 20%; left: 20%; width: 12px; height: 40px;
  background: linear-gradient(180deg, #f0d0a0 0%, #d4a87a 60%, #a08050 100%);
  border-radius: 4px 4px 2px 2px;
}
.scn-milan-silvia-letter-trick .candle-light {
  position: absolute; bottom: 65%; left: 20%; width: 20px; height: 20px;
  background: radial-gradient(circle, #ffd060 0%, #ffb020 60%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 30px 10px rgba(255,176,32,0.6);
  animation: mv-candle 2s ease-in-out infinite alternate;
}
@keyframes mv-curtain-wave {
  0% { transform: translateX(0); }
  50% { transform: translateX(10px) scaleX(0.98); }
  100% { transform: translateX(-5px) scaleX(1.02); }
}
@keyframes mv-letter {
  0% { transform: rotate(-15deg) translateX(-50%) translateY(0); }
  25% { transform: rotate(-10deg) translateX(-50%) translateY(-3px); }
  50% { transform: rotate(-18deg) translateX(-50%) translateY(-1px); }
  75% { transform: rotate(-12deg) translateX(-50%) translateY(-4px); }
  100% { transform: rotate(-15deg) translateX(-50%) translateY(0); }
}
@keyframes mv-seal {
  0% { box-shadow: 0 0 8px rgba(200,80,40,0.5); transform: translate(-50%,-50%) scale(1); }
  25% { box-shadow: 0 0 12px rgba(200,80,40,0.7); transform: translate(-50%,-50%) scale(1.1); }
  50% { box-shadow: 0 0 6px rgba(200,80,40,0.3); transform: translate(-50%,-50%) scale(0.9); }
  75% { box-shadow: 0 0 10px rgba(200,80,40,0.6); transform: translate(-50%,-50%) scale(1.05); }
  100% { box-shadow: 0 0 8px rgba(200,80,40,0.5); transform: translate(-50%,-50%) scale(1); }
}
@keyframes mv-hand-speed {
  0% { transform: translateY(0) rotate(0deg); }
  25% { transform: translateY(-8px) rotate(15deg); }
  50% { transform: translateY(-3px) rotate(-5deg); }
  75% { transform: translateY(-6px) rotate(10deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes mv-hand-valentine {
  0% { transform: translateY(0) rotate(0deg); }
  25% { transform: translateY(-5px) rotate(-10deg); }
  50% { transform: translateY(-8px) rotate(5deg); }
  75% { transform: translateY(-3px) rotate(-15deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes mv-candle {
  0% { opacity: 0.8; box-shadow: 0 0 20px 5px rgba(255,176,32,0.5); }
  50% { opacity: 1; box-shadow: 0 0 40px 15px rgba(255,176,32,0.8); }
  100% { opacity: 0.9; box-shadow: 0 0 30px 10px rgba(255,176,32,0.6); }
}

.scn-julia-lucetta-letter-game {
  background:
    linear-gradient(180deg, #b0e0e6 0%, #ffe4b5 60%, #ffb6c1 100%),
    radial-gradient(circle at 30% 20%, #fff9c4 0%, transparent 50%);
}
.scn-julia-lucetta-letter-game .sky {
  position:absolute; inset:0 0 40% 0;
  background: linear-gradient(180deg, #87CEEB 0%, #f0e68c 100%);
  animation: jlg-sky 12s ease-in-out infinite alternate;
}
.scn-julia-lucetta-letter-game .sun {
  position:absolute; top:8%; left:25%; width:50px; height:50px;
  background: radial-gradient(circle, #fff9c4 0%, #ffb74d 80%);
  border-radius:50%; box-shadow: 0 0 40px 10px rgba(255,183,77,.6);
  animation: jlg-sun 6s ease-in-out infinite;
}
.scn-julia-lucetta-letter-game .ground {
  position:absolute; bottom:0; left:0; right:0; height:40%;
  background: linear-gradient(180deg, #66bb6a 0%, #388e3c 100%);
  border-radius: 30% 30% 0 0 / 20% 20% 0 0;
  animation: jlg-ground 8s ease-in-out infinite alternate;
}
.scn-julia-lucetta-letter-game .figure-left {
  position:absolute; bottom:20%; left:25%; width:30px; height:60px;
  background: linear-gradient(180deg, #ffb74d 0%, #f57c00 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: jlg-figure 4s ease-in-out infinite;
}
.scn-julia-lucetta-letter-game .figure-right {
  position:absolute; bottom:20%; left:55%; width:30px; height:60px;
  background: linear-gradient(180deg, #ce93d8 0%, #8e24aa 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: jlg-figure 4s ease-in-out infinite reverse;
}
.scn-julia-lucetta-letter-game .letter {
  position:absolute; bottom:40%; left:40%; width:20px; height:14px;
  background: linear-gradient(135deg, #fff9c4 0%, #fdd835 100%);
  border-radius: 2px; transform: rotate(-15deg);
  box-shadow: 0 2px 4px rgba(0,0,0,.2);
  animation: jlg-letter 3s ease-in-out infinite alternate;
}
@keyframes jlg-sky { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.75 } }
@keyframes jlg-sun { 0% { transform: scale(1) translate(0,0) } 50% { transform: scale(1.05) translate(4px,-4px) } 100% { transform: scale(1) translate(0,0) } }
@keyframes jlg-ground { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes jlg-figure { 0% { transform: translateX(0) rotate(-2deg) } 25% { transform: translateX(8px) rotate(1deg) } 50% { transform: translateX(0) rotate(2deg) } 75% { transform: translateX(-8px) rotate(-1deg) } 100% { transform: translateX(0) rotate(-2deg) } }
@keyframes jlg-letter { 0% { transform: rotate(-15deg) translateY(0) } 50% { transform: rotate(-5deg) translateY(-4px) } 100% { transform: rotate(-15deg) translateY(0) } }

.scn-julia-tears-letter {
  background:
    linear-gradient(180deg, #ffe0b2 0%, #ffcc80 30%, #fff3e0 100%),
    radial-gradient(ellipse at 50% 80%, rgba(255,183,77,.3) 0%, transparent 70%);
}
.scn-julia-tears-letter .bg {
  position:absolute; inset:0;
  background: linear-gradient(180deg, #fff3e0 0%, #ffe0b2 100%);
  animation: jtr-bg 5s ease-in-out infinite alternate;
}
.scn-julia-tears-letter .hand-left {
  position:absolute; bottom:25%; left:34%; width:40px; height:50px;
  background: linear-gradient(180deg, #f5d0a9 0%, #c68642 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform: rotate(25deg); transform-origin: bottom center;
  animation: jtr-hand-left 3s ease-in-out infinite;
}
.scn-julia-tears-letter .hand-right {
  position:absolute; bottom:25%; left:52%; width:40px; height:50px;
  background: linear-gradient(180deg, #f5d0a9 0%, #c68642 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform: rotate(-25deg); transform-origin: bottom center;
  animation: jtr-hand-right 3s ease-in-out infinite;
}
.scn-julia-tears-letter .letter-whole {
  position:absolute; bottom:35%; left:44%; width:36px; height:24px;
  background: linear-gradient(135deg, #fff9c4 0%, #f5d6a0 100%);
  border-radius: 2px; box-shadow: 0 2px 4px rgba(0,0,0,.2);
  animation: jtr-letter-whole 2s ease-in-out infinite alternate;
}
.scn-julia-tears-letter .letter-torn {
  position:absolute; bottom:35%; left:44%; width:18px; height:12px;
  background: linear-gradient(135deg, #fff9c4 0%, #f5d6a0 100%);
  border-radius: 2px; clip-path: polygon(0 0, 100% 0, 100% 100%, 70% 80%, 0 100%);
  animation: jtr-letter-torn 2s ease-in-out infinite alternate;
}
.scn-julia-tears-letter .tear-drops {
  position:absolute; bottom:30%; left:48%; width:6px; height:8px;
  background: radial-gradient(circle, #81d4fa 0%, #29b6f6 100%);
  border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%;
  box-shadow: -10px -4px 0 rgba(129,212,250,.6), 8px -6px 0 rgba(41,182,246,.4);
  animation: jtr-tear 2s ease-in-out infinite;
}
@keyframes jtr-bg { 0% { opacity:.9 } 50% { opacity:1 } 100% { opacity:.85 } }
@keyframes jtr-hand-left { 0% { transform: rotate(25deg) translateX(0) } 50% { transform: rotate(15deg) translateX(-4px) } 100% { transform: rotate(25deg) translateX(0) } }
@keyframes jtr-hand-right { 0% { transform: rotate(-25deg) translateX(0) } 50% { transform: rotate(-15deg) translateX(4px) } 100% { transform: rotate(-25deg) translateX(0) } }
@keyframes jtr-letter-whole { 0% { opacity:1; transform: scale(1) } 50% { opacity:.8; transform: scale(0.95) } 100% { opacity:1; transform: scale(1) } }
@keyframes jtr-letter-torn { 0% { opacity:0; transform: translateY(0) } 50% { opacity:1; transform: translateY(4px) rotate(5deg) } 100% { opacity:1; transform: translateY(0) rotate(0) } }
@keyframes jtr-tear { 0% { opacity:.6; transform: translateY(0) } 50% { opacity:1; transform: translateY(6px) scale(1.1) } 100% { opacity:.6; transform: translateY(0) } }

.scn-julia-letter-repair {
  background:
    linear-gradient(180deg, #ffecb3 0%, #ffe082 40%, #ffd54f 100%),
    radial-gradient(circle at 50% 30%, #fff9c4 0%, transparent 60%);
}
.scn-julia-letter-repair .bg {
  position:absolute; inset:0;
  background: linear-gradient(180deg, #ffecb3 0%, #ffe082 100%);
  animation: jlr-bg 10s ease-in-out infinite alternate;
}
.scn-julia-letter-repair .figure {
  position:absolute; bottom:20%; left:50%; width:40px; height:70px;
  background: linear-gradient(180deg, #f5d0a9 0%, #d2a679 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: translateX(-50%);
  animation: jlr-figure 6s ease-in-out infinite;
}
.scn-julia-letter-repair .head {
  position:absolute; bottom:68%; left:50%; width:22px; height:22px;
  background: linear-gradient(180deg, #f5d0a9 0%, #c68642 100%);
  border-radius: 50%;
  transform: translateX(-50%);
  animation: jlr-head 4s ease-in-out infinite alternate;
}
.scn-julia-letter-repair .arm-left {
  position:absolute; bottom:40%; left:37%; width:14px; height:50px;
  background: linear-gradient(180deg, #f5d0a9 0%, #c68642 100%);
  border-radius: 30% 30% 20% 20% / 20% 20% 50% 50%;
  transform: rotate(-40deg); transform-origin: top center;
  animation: jlr-arm-left 5s ease-in-out infinite;
}
.scn-julia-letter-repair .arm-right {
  position:absolute; bottom:40%; left:57%; width:14px; height:50px;
  background: linear-gradient(180deg, #f5d0a9 0%, #c68642 100%);
  border-radius: 30% 30% 20% 20% / 20% 20% 50% 50%;
  transform: rotate(40deg); transform-origin: top center;
  animation: jlr-arm-right 5s ease-in-out infinite;
}
.scn-julia-letter-repair .papers {
  position:absolute; bottom:25%; left:35%; width:50px; height:30px;
  background: linear-gradient(135deg, #fff9c4 0%, #fdd835 100%);
  border-radius: 2px; box-shadow: 0 2px 6px rgba(0,0,0,.2), -16px -8px 0 rgba(255,249,196,.5), 12px -4px 0 rgba(253,216,53,.3);
  animation: jlr-papers 8s ease-in-out infinite alternate;
}
.scn-julia-letter-repair .glow {
  position:absolute; bottom:30%; left:50%; width:60px; height:60px;
  background: radial-gradient(circle, rgba(255,235,59,.4) 0%, transparent 70%);
  border-radius:50%; transform: translateX(-50%);
  filter: blur(8px);
  animation: jlr-glow 4s ease-in-out infinite alternate;
}
@keyframes jlr-bg { 0% { opacity:.85 } 50% { opacity:1 } 100% { opacity:.9 } }
@keyframes jlr-figure { 0%,100% { transform: translateX(-50%) } 50% { transform: translateX(-50%) translateY(-2px) } }
@keyframes jlr-head { 0% { transform: translateX(-50%) rotate(-2deg) } 50% { transform: translateX(-50%) rotate(2deg) } 100% { transform: translateX(-50%) rotate(-2deg) } }
@keyframes jlr-arm-left { 0% { transform: rotate(-40deg) } 50% { transform: rotate(-30deg) } 100% { transform: rotate(-40deg) } }
@keyframes jlr-arm-right { 0% { transform: rotate(40deg) } 50% { transform: rotate(30deg) } 100% { transform: rotate(40deg) } }
@keyframes jlr-papers { 0% { transform: scale(1) rotate(0) } 50% { transform: scale(1.02) rotate(1deg) } 100% { transform: scale(1) rotate(0) } }
@keyframes jlr-glow { 0% { opacity:.6; transform: translateX(-50%) scale(1) } 50% { opacity:.8; transform: translateX(-50%) scale(1.05) } 100% { opacity:.6; transform: translateX(-50%) scale(1) } }

.scn-antonio-panthino-plot {
  background:
    linear-gradient(180deg, #fff8e1 0%, #ffe082 30%, #ffcc80 100%),
    radial-gradient(ellipse at 50% 70%, rgba(255,183,77,.2) 0%, transparent 80%);
}
.scn-antonio-panthino-plot .wall {
  position:absolute; inset:0 0 30% 0;
  background: linear-gradient(180deg, #f5e6ca 0%, #e0c9a0 100%);
  animation: app-wall 20s ease-in-out infinite alternate;
}
.scn-antonio-panthino-plot .floor {
  position:absolute; bottom:0; left:0; right:0; height:30%;
  background: linear-gradient(180deg, #bcaaa4 0%, #8d6e63 100%);
  border-radius: 4px 4px 0 0;
  animation: app-floor 15s ease-in-out infinite alternate;
}
.scn-antonio-panthino-plot .window {
  position:absolute; top:12%; left:38%; width:90px; height:60px;
  background: linear-gradient(180deg, #bbdefb 0%, #90caf9 100%);
  border: 6px solid #795548; border-radius: 4px;
  box-shadow: inset 0 0 12px rgba(144,202,249,.5);
  animation: app-window 8s ease-in-out infinite alternate;
}
.scn-antonio-panthino-plot .antonio {
  position:absolute; bottom:20%; left:25%; width:28px; height:60px;
  background: linear-gradient(180deg, #5d4037 0%, #3e2723 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: app-figure 6s ease-in-out infinite;
}
.scn-antonio-panthino-plot .panthino {
  position:absolute; bottom:20%; left:55%; width:28px; height:58px;
  background: linear-gradient(180deg, #6d4c41 0%, #4e342e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: app-figure 6s ease-in-out infinite reverse;
}
.scn-antonio-panthino-plot .table {
  position:absolute; bottom:18%; left:50%; width:40px; height:8px;
  background: linear-gradient(90deg, #795548 0%, #5d4037 100%);
  border-radius: 2px; transform: translateX(-50%);
  animation: app-table 10s ease-in-out infinite alternate;
}
.scn-antonio-panthino-plot .shadow {
  position:absolute; bottom:0; left:0; right:0; height:18%;
  background: linear-gradient(180deg, transparent 0%, rgba(62,39,35,.3) 100%);
  animation: app-shadow 12s ease-in-out infinite alternate;
}
@keyframes app-wall { 0% { opacity:.95 } 50% { opacity:1 } 100% { opacity:.9 } }
@keyframes app-floor { 0% { transform: translateY(0) } 50% { transform: translateY(-1px) } 100% { transform: translateY(0) } }
@keyframes app-window { 0% { box-shadow: inset 0 0 8px rgba(144,202,249,.4); background: #bbdefb; } 50% { box-shadow: inset 0 0 20px rgba(144,202,249,.7); background: #e3f2fd; } 100% { box-shadow: inset 0 0 8px rgba(144,202,249,.4); background: #bbdefb; } }
@keyframes app-figure { 0% { transform: translateX(0) } 50% { transform: translateX(6px) } 100% { transform: translateX(0) } }
@keyframes app-table { 0% { transform: translateX(-50%) scaleX(1) } 50% { transform: translateX(-50%) scaleX(1.02) } 100% { transform: translateX(-50%) scaleX(1) } }
@keyframes app-shadow { 0% { opacity:.6 } 50% { opacity:.8 } 100% { opacity:.6 } }

/* forest-outlaws-meeting */
.scn-forest-outlaws-meeting {
  background:
    linear-gradient(180deg, #2e1a2e 0%, #4a2a3a 30%, #6a4a3a 60%, #9a7a5a 100%),
    radial-gradient(ellipse at 50% 20%, #b08050 0%, transparent 70%);
}
.scn-forest-outlaws-meeting .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #3a1a2a 0%, transparent 100%); animation: fom-sky 10s ease-in-out infinite alternate; }
.scn-forest-outlaws-meeting .moon { position:absolute; top:6%; right:15%; width:30px; height:30px; background:radial-gradient(circle, #d0b080 0%, #b08050 70%); border-radius:50%; box-shadow:0 0 40px 10px #b08050; opacity:0.7; animation:fom-moon 12s ease-in-out infinite; }
.scn-forest-outlaws-meeting .trees-back { position:absolute; bottom:35%; left:0; right:0; height:30%; background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%); clip-path:polygon(0% 100%, 5% 20%, 10% 100%, 15% 10%, 20% 100%, 25% 30%, 30% 100%, 35% 15%, 40% 100%, 45% 25%, 50% 100%, 55% 5%, 60% 100%, 65% 35%, 70% 100%, 75% 20%, 80% 100%, 85% 10%, 90% 100%, 95% 30%, 100% 100%); animation:fom-treesb 15s ease-in-out infinite alternate; }
.scn-forest-outlaws-meeting .trees-mid { position:absolute; bottom:30%; left:0; right:0; height:35%; background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%); clip-path:polygon(0% 100%, 8% 15%, 12% 100%, 18% 5%, 22% 100%, 28% 20%, 32% 100%, 38% 10%, 42% 100%, 48% 25%, 52% 100%, 58% 8%, 62% 100%, 68% 30%, 72% 100%, 78% 12%, 82% 100%, 88% 18%, 92% 100%, 100% 0%); animation:fom-treesm 18s ease-in-out infinite alternate; }
.scn-forest-outlaws-meeting .trees-fore { position:absolute; bottom:25%; left:0; right:0; height:40%; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); clip-path:polygon(0% 100%, 12% 10%, 15% 100%, 20% 5%, 25% 100%, 30% 15%, 35% 100%, 40% 8%, 45% 100%, 50% 20%, 55% 100%, 60% 3%, 65% 100%, 70% 25%, 75% 100%, 80% 10%, 85% 100%, 90% 12%, 95% 100%, 100% 0%); animation:fom-treesf 20s ease-in-out infinite alternate; }
.scn-forest-outlaws-meeting .outlaw-one { position:absolute; bottom:22%; left:20%; width:20px; height:50px; background: linear-gradient(180deg, #1a0a0a 0%, #0a0000 100%); border-radius:50% 50% 40% 40% / 60% 60% 30% 30%; transform-origin:bottom center; animation:fom-fig1 4s ease-in-out infinite; }
.scn-forest-outlaws-meeting .outlaw-two { position:absolute; bottom:20%; left:45%; width:22px; height:55px; background: linear-gradient(180deg, #1a0a0a 0%, #0a0000 100%); border-radius:50% 50% 40% 40% / 70% 70% 30% 30%; transform-origin:bottom center; animation:fom-fig2 5s ease-in-out infinite; }
.scn-forest-outlaws-meeting .outlaw-three { position:absolute; bottom:23%; left:65%; width:18px; height:48px; background: linear-gradient(180deg, #1a0a0a 0%, #0a0000 100%); border-radius:50% 50% 40% 40% / 60% 60% 30% 30%; transform-origin:bottom center; animation:fom-fig3 4.5s ease-in-out infinite; }
@keyframes fom-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.7 } }
@keyframes fom-moon { 0%,100% { transform:translateY(0) scale(1); opacity:0.7 } 50% { transform:translateY(-4px) scale(1.05); opacity:0.85 } }
@keyframes fom-treesb { 0% { transform:translateY(0) } 50% { transform:translateY(-2px) } 100% { transform:translateY(0) } }
@keyframes fom-treesm { 0% { transform:translateY(0) } 50% { transform:translateY(-3px) } 100% { transform:translateY(0) } }
@keyframes fom-treesf { 0% { transform:translateY(0) } 50% { transform:translateY(-5px) } 100% { transform:translateY(0) } }
@keyframes fom-fig1 { 0%,100% { transform:translateX(0) rotate(0) } 25% { transform:translateX(3px) rotate(2deg) } 50% { transform:translateX(-2px) rotate(-1deg) } 75% { transform:translateX(1px) rotate(1deg) } }
@keyframes fom-fig2 { 0%,100% { transform:translateX(0) rotate(0) } 25% { transform:translateX(-4px) rotate(-2deg) } 50% { transform:translateX(2px) rotate(1deg) } 75% { transform:translateX(-1px) rotate(-1deg) } }
@keyframes fom-fig3 { 0%,100% { transform:translateX(0) rotate(0) } 25% { transform:translateX(5px) rotate(1deg) } 50% { transform:translateX(-3px) rotate(-2deg) } 75% { transform:translateX(2px) rotate(2deg) } }

/* forest-outlaws-join */
.scn-forest-outlaws-join {
  background:
    linear-gradient(180deg, #2a1a2a 0%, #4a2a3a 30%, #6a4a3a 60%, #5a3a2a 100%),
    radial-gradient(ellipse at 50% 50%, #b07040 0%, transparent 60%);
}
.scn-forest-outlaws-join .sky { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #3a1a2a 0%, transparent 100%); animation:foj-sky 10s ease-in-out infinite alternate; }
.scn-forest-outlaws-join .ground { position:absolute; bottom:0; left:0; right:0; height:35%; background: linear-gradient(180deg, #2a1a0a 0%, #1a0a00 100%); border-radius:30% 70% 0 0 / 40% 60% 0 0; box-shadow:inset 0 8px 20px rgba(0,0,0,.5); animation:foj-ground 12s ease-in-out infinite; }
.scn-forest-outlaws-join .fire { position:absolute; bottom:25%; left:50%; width:30px; height:40px; transform:translateX(-50%); background: radial-gradient(circle at 50% 100%, #ffa060 0%, #ff6030 40%, #b02010 70%, transparent 100%); border-radius:50% 50% 0 0; box-shadow:0 0 60px 20px #ff8030; animation:foj-fire 1.6s ease-in-out infinite alternate; }
.scn-forest-outlaws-join .fire-glow { position:absolute; bottom:20%; left:40%; width:20%; height:30%; background:radial-gradient(ellipse, rgba(255,160,96,0.6) 0%, transparent 70%); animation:foj-fireglow 2.4s ease-in-out infinite alternate; }
.scn-forest-outlaws-join .outlaw-main { position:absolute; bottom:22%; left:30%; width:24px; height:55px; background: linear-gradient(180deg, #1a0a0a 0%, #0a0000 100%); border-radius:50% 50% 40% 40% / 60% 60% 30% 30%; transform-origin:bottom; animation:foj-fig1 4s ease-in-out infinite; }
.scn-forest-outlaws-join .outlaw-other { position:absolute; bottom:24%; left:55%; width:20px; height:50px; background: linear-gradient(180deg, #1a0a0a 0%, #0a0000 100%); border-radius:50% 50% 40% 40% / 60% 60% 30% 30%; transform-origin:bottom; animation:foj-fig2 4.5s ease-in-out infinite 1s; }
.scn-forest-outlaws-join .smoke { position:absolute; bottom:40%; left:48%; width:40px; height:50px; background: radial-gradient(circle, rgba(200,180,160,0.4) 0%, transparent 70%); filter:blur(8px); animation:foj-smoke 6s ease-out infinite; }
@keyframes foj-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.7 } }
@keyframes foj-ground { 0%,100% { transform:translateY(0) } 50% { transform:translateY(-3px) } }
@keyframes foj-fire { 0% { transform:translateX(-50%) scale(1) rotate(0) } 25% { transform:translateX(-50%) scale(1.1) rotate(2deg) } 50% { transform:translateX(-50%) scale(0.95) rotate(-1deg) } 75% { transform:translateX(-50%) scale(1.05) rotate(1deg) } 100% { transform:translateX(-50%) scale(1) rotate(0) } }
@keyframes foj-fireglow { 0% { opacity:0.5; transform:scale(1) } 50% { opacity:0.8; transform:scale(1.1) } 100% { opacity:0.6; transform:scale(0.95) } }
@keyframes foj-fig1 { 0%,100% { transform:translateX(0) rotate(0) } 50% { transform:translateX(5px) rotate(-3deg) } }
@keyframes foj-fig2 { 0%,100% { transform:translateX(0) rotate(0) } 50% { transform:translateX(-4px) rotate(2deg) } }
@keyframes foj-smoke { 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 } }

/* milan-outside-silvia-chamber */
.scn-milan-outside-silvia-chamber {
  background:
    linear-gradient(180deg, #0a0a2e 0%, #1a1a4e 30%, #2a2a5e 60%, #3a3a6e 100%),
    radial-gradient(ellipse at 70% 30%, #3a4a8a 0%, transparent 70%);
}
.scn-milan-outside-silvia-chamber .sky { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #0a0a3e 0%, transparent 100%); animation:mos-sky 15s ease-in-out infinite alternate; }
.scn-milan-outside-silvia-chamber .moon { position:absolute; top:8%; left:70%; width:28px; height:28px; background:radial-gradient(circle, #c0c8e0 0%, #8088b0 70%); border-radius:50%; box-shadow:0 0 40px 10px #8088b0; animation:mos-moon 10s ease-in-out infinite; }
.scn-milan-outside-silvia-chamber .moon-glow { position:absolute; top:5%; left:65%; width:15%; height:20%; background:radial-gradient(ellipse, rgba(192,200,224,0.3) 0%, transparent 70%); animation:mos-glow 8s ease-in-out infinite alternate; }
.scn-milan-outside-silvia-chamber .cloud { position:absolute; top:12%; left:-10%; width:80px; height:15px; background: linear-gradient(180deg, rgba(255,255,255,0.15) 0%, transparent 100%); border-radius:50%; filter:blur(5px); animation:mos-cloud 40s linear infinite; }
.scn-milan-outside-silvia-chamber .wall { position:absolute; bottom:20%; left:10%; width:80%; height:60%; background: linear-gradient(180deg, #2a2a4a 0%, #1a1a3a 100%); border-radius:5% 5% 0 0; box-shadow:inset 0 4px 8px rgba(0,0,0,.5); }
.scn-milan-outside-silvia-chamber .balcony { position:absolute; bottom:45%; left:40%; width:20%; height:6%; background: linear-gradient(180deg, #4a4a6a 0%, #3a3a5a 100%); border-radius:20% 20% 0 0; box-shadow:0 -2px 6px rgba(0,0,0,.4); }
.scn-milan-outside-silvia-chamber .window { position:absolute; bottom:55%; left:43%; width:14%; height:18%; background: radial-gradient(circle at 50% 30%, #c0c0e0 0%, #8088b0 60%, transparent 100%); border-radius:10% 10% 0 0; box-shadow:0 0 20px 6px #8088b0; animation:mos-window 3s ease-in-out infinite alternate; }
.scn-milan-outside-silvia-chamber .figure { position:absolute; bottom:18%; left:30%; width:18px; height:45px; background: linear-gradient(180deg, #0a0a1a 0%, #000010 100%); border-radius:50% 50% 40% 40% / 70% 70% 30% 30%; transform-origin:bottom; animation:mos-fig 5s ease-in-out infinite; }
.scn-milan-outside-silvia-chamber .shadow { position:absolute; bottom:18%; left:28%; width:40px; height:10px; background:radial-gradient(ellipse, rgba(0,0,0,0.5) 0%, transparent 80%); border-radius:50%; animation:mos-shadow 5s ease-in-out infinite; }
@keyframes mos-sky { 0% { opacity:0.9 } 50% { opacity:1 } 100% { opacity:0.8 } }
@keyframes mos-moon { 0%,100% { transform:translateY(0) scale(1); opacity:0.8 } 50% { transform:translateY(-3px) scale(1.03); opacity:0.9 } }
@keyframes mos-glow { 0% { opacity:0.3 } 50% { opacity:0.6 } 100% { opacity:0.2 } }
@keyframes mos-cloud { 0% { transform:translateX(-80px) } 100% { transform:translateX(120vw) } }
@keyframes mos-window { 0% { box-shadow:0 0 15px 4px #8088b0; opacity:0.8 } 50% { box-shadow:0 0 25px 8px #a0a8d0; opacity:1 } 100% { box-shadow:0 0 18px 5px #8088b0; opacity:0.85 } }
@keyframes mos-fig { 0%,100% { transform:translateX(0) rotate(0) } 25% { transform:translateX(2px) rotate(2deg) } 50% { transform:translateX(-1px) rotate(-1deg) } 75% { transform:translateX(1px) rotate(1deg) } }
@keyframes mos-shadow { 0%,100% { transform:scale(1); opacity:0.3 } 50% { transform:scale(1.2); opacity:0.5 } }

/* item-song-silvia */
.scn-item-song-silvia {
  background:
    linear-gradient(180deg, #0a0a2e 0%, #1a1a4e 30%, #2a2a5e 60%, #3a3a6e 100%),
    radial-gradient(ellipse at 30% 60%, #4a4a8a 0%, transparent 70%);
}
.scn-item-song-silvia .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #0a0a3e 0%, transparent 100%); animation:iss-sky 12s ease-in-out infinite alternate; }
.scn-item-song-silvia .moon { position:absolute; top:12%; right:20%; width:26px; height:26px; background:radial-gradient(circle, #d0d0e8 0%, #a0a8c0 70%); border-radius:50%; box-shadow:0 0 40px 10px #a0a8c0; animation:iss-moon 10s ease-in-out infinite; }
.scn-item-song-silvia .balcony { position:absolute; bottom:45%; left:25%; width:20%; height:5%; background: linear-gradient(180deg, #3a3a5a 0%, #2a2a4a 100%); border-radius:15% 15% 0 0; box-shadow:0 -2px 6px rgba(0,0,0,.4); }
.scn-item-song-silvia .lady { position:absolute; bottom:52%; left:30%; width:16px; height:40px; background: linear-gradient(180deg, #2a1a3a 0%, #1a0a2a 100%); border-radius:50% 50% 40% 40% / 60% 60% 30% 30%; transform-origin:bottom; animation:iss-lady 6s ease-in-out infinite; }
.scn-item-song-silvia .musician { position:absolute; bottom:20%; left:55%; width:20px; height:48px; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius:50% 50% 40% 40% / 60% 60% 30% 30%; transform-origin:bottom; animation:iss-music 4s ease-in-out infinite; }
.scn-item-song-silvia .music-note-a { position:absolute; bottom:50%; left:60%; width:8px; height:8px; background:radial-gradient(circle, #e0d0a0 0%, #c0b080 70%); border-radius:50%; box-shadow:0 0 8px 2px #c0b080; animation:iss-note-a 8s ease-in-out infinite; }
.scn-item-song-silvia .music-note-b { position:absolute; bottom:55%; left:65%; width:6px; height:6px; background:radial-gradient(circle, #e0d0a0 0%, #c0b080 70%); border-radius:50%; box-shadow:0 0 6px 2px #c0b080; animation:iss-note-b 9s ease-in-out infinite 2s; }
.scn-item-song-silvia .music-note-c { position:absolute; bottom:48%; left:68%; width:7px; height:7px; background:radial-gradient(circle, #e0d0a0 0%, #c0b080 70%); border-radius:50%; box-shadow:0 0 7px 2px #c0b080; animation:iss-note-c 7.5s ease-in-out infinite 4s; }
@keyframes iss-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.7 } }
@keyframes iss-moon { 0%,100% { transform:translateY(0) scale(1); opacity:0.8 } 50% { transform:translateY(-3px) scale(1.04); opacity:0.9 } }
@keyframes iss-lady { 0%,100% { transform:translateY(0) rotate(0) } 50% { transform:translateY(-2px) rotate(2deg) } }
@keyframes iss-music { 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 iss-note-a { 0% { transform:translateY(0) scale(1); opacity:0.8 } 25% { transform:translateY(-20px) scale(1.2); opacity:1 } 50% { transform:translateY(-40px) scale(0.8); opacity:0.6 } 75% { transform:translateY(-60px) scale(1.1); opacity:0.4 } 100% { transform:translateY(-80px) scale(0.9); opacity:0 } }
@keyframes iss-note-b { 0% { transform:translateY(0) scale(1); opacity:0.8 } 25% { transform:translateY(-18px) scale(1.15); opacity:1 } 50% { transform:translateY(-36px) scale(0.85); opacity:0.6 } 75% { transform:translateY(-54px) scale(1.05); opacity:0.4 } 100% { transform:translateY(-72px) scale(0.95); opacity:0 } }
@keyframes iss-note-c { 0% { transform:translateY(0) scale(1); opacity:0.8 } 25% { transform:translateY(-22px) scale(1.25); opacity:1 } 50% { transform:translateY(-44px) scale(0.75); opacity:0.6 } 75% { transform:translateY(-66px) scale(1.1); opacity:0.4 } 100% { transform:translateY(-88px) scale(0.85); opacity:0 } }

/* Scene 1: valentine-proteus-conference */
.scn-valentine-proteus-conference {
  background: linear-gradient(180deg, #f5e6d0 0%, #d4b896 50%, #b89570 100%), radial-gradient(ellipse at 70% 40%, #ffe4b5 0%, transparent 60%);
}
.scn-valentine-proteus-conference .bg-wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #e8d5b0 0%, #c4a882 100%);
  animation: vpc-wall 20s ease-in-out infinite alternate;
}
.scn-valentine-proteus-conference .bg-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #8b6f47 0%, #5c4730 100%);
  border-radius: 10% 10% 0 0;
}
.scn-valentine-proteus-conference .table {
  position: absolute; bottom: 26%; left: 30%; width: 40%; height: 8%;
  background: linear-gradient(180deg, #7a5c3a 0%, #4a3418 100%);
  border-radius: 5px;
  box-shadow: 0 4px 8px rgba(0,0,0,0.3);
  animation: vpc-table 6s ease-in-out infinite;
}
.scn-valentine-proteus-conference .figure-valentine {
  position: absolute; bottom: 20%; left: 35%; width: 20px; height: 40px;
  background: linear-gradient(180deg, #2a1a0a 0%, #0f0804 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vpc-figure-left 4s ease-in-out infinite;
}
.scn-valentine-proteus-conference .figure-proteus {
  position: absolute; bottom: 20%; right: 35%; width: 20px; height: 40px;
  background: linear-gradient(180deg, #2a1a0a 0%, #0f0804 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vpc-figure-right 4s ease-in-out infinite 0.5s;
}
.scn-valentine-proteus-conference .window {
  position: absolute; top: 18%; left: 60%; width: 70px; height: 50px;
  background: radial-gradient(ellipse at center, #fff5e6 0%, #ffdcb5 60%, transparent 100%);
  border-radius: 4px;
  box-shadow: 0 0 40px 10px #ffd39b, 0 0 80px 20px rgba(255,211,155,0.3);
  animation: vpc-window 3s ease-in-out infinite alternate;
}
.scn-valentine-proteus-conference .candle-glow {
  position: absolute; bottom: 30%; left: 48%; width: 6px; height: 6px;
  background: radial-gradient(circle, #ffd700 0%, #ffb300 50%, transparent 80%);
  border-radius: 50%;
  box-shadow: 0 0 20px 8px #ffb300, 0 0 40px 15px rgba(255,179,0,0.4);
  animation: vpc-candle 2s ease-in-out infinite alternate;
}
@keyframes vpc-wall { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.85; } }
@keyframes vpc-table { 0% { transform: translateY(0); } 50% { transform: translateY(-1px); } 100% { transform: translateY(0); } }
@keyframes vpc-figure-left { 0% { transform: translateX(0) rotate(-2deg); } 25% { transform: translateX(2px) rotate(1deg); } 50% { transform: translateX(0) rotate(2deg); } 75% { transform: translateX(-1px) rotate(-1deg); } 100% { transform: translateX(0) rotate(-2deg); } }
@keyframes vpc-figure-right { 0% { transform: translateX(0) rotate(2deg); } 25% { transform: translateX(-2px) rotate(-1deg); } 50% { transform: translateX(0) rotate(-2deg); } 75% { transform: translateX(1px) rotate(1deg); } 100% { transform: translateX(0) rotate(2deg); } }
@keyframes vpc-window { 0% { opacity: 0.8; box-shadow: 0 0 30px 5px #ffd39b; } 50% { opacity: 1; box-shadow: 0 0 60px 15px #ffd39b, 0 0 100px 30px rgba(255,211,155,0.4); } 100% { opacity: 0.85; box-shadow: 0 0 35px 8px #ffd39b; } }
@keyframes vpc-candle { 0% { opacity: 0.7; transform: scale(0.8); } 50% { opacity: 1; transform: scale(1.2); } 100% { opacity: 0.8; transform: scale(0.9); } }

/* Scene 2: proteus-soliloquy-perjury */
.scn-proteus-soliloquy-perjury {
  background: linear-gradient(180deg, #1a1a3e 0%, #2c2244 40%, #4a3a6e 70%, #2c2244 100%), radial-gradient(ellipse at 30% 10%, #6b5b8a 0%, transparent 50%);
}
.scn-proteus-soliloquy-perjury .bg-dark {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #2a2a4e 0%, transparent 100%);
  animation: psp-dark 12s ease-in-out infinite alternate;
}
.scn-proteus-soliloquy-perjury .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #1e1a2a 0%, #0e0a14 100%);
  border-radius: 20% 20% 0 0;
}
.scn-proteus-soliloquy-perjury .chair {
  position: absolute; bottom: 24%; left: 40%; width: 30px; height: 40px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0e05 100%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.6);
}
.scn-proteus-soliloquy-perjury .figure-proteus {
  position: absolute; bottom: 20%; left: 42%; width: 22px; height: 45px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: psp-figure 5s ease-in-out infinite;
}
.scn-proteus-soliloquy-perjury .candle {
  position: absolute; bottom: 28%; left: 36%; width: 5px; height: 8px;
  background: radial-gradient(circle, #ffa07a 0%, #ff6347 50%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 15px 5px #ff6347, 0 0 30px 10px rgba(255,99,71,0.3);
  animation: psp-candle 2.5s ease-in-out infinite alternate;
}
.scn-proteus-soliloquy-perjury .moonlight {
  position: absolute; top: 10%; right: 15%; width: 60px; height: 100px;
  background: linear-gradient(180deg, rgba(173,216,230,0.3) 0%, transparent 100%);
  filter: blur(8px);
  animation: psp-moonlight 10s ease-in-out infinite alternate;
}
.scn-proteus-soliloquy-perjury .shadow-stripe {
  position: absolute; top: 0; left: 0; width: 100%; height: 100%;
  background: linear-gradient(135deg, transparent 40%, rgba(0,0,0,0.4) 60%, transparent 80%);
  animation: psp-shadow 6s ease-in-out infinite;
}
@keyframes psp-dark { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes psp-figure { 0% { transform: translateX(0) rotate(-3deg); } 25% { transform: translateX(5px) rotate(1deg); } 50% { transform: translateX(0) rotate(3deg); } 75% { transform: translateX(-5px) rotate(-1deg); } 100% { transform: translateX(0) rotate(-3deg); } }
@keyframes psp-candle { 0% { opacity: 0.6; transform: scale(0.8); } 50% { opacity: 1; transform: scale(1.1); } 100% { opacity: 0.7; transform: scale(0.9); } }
@keyframes psp-moonlight { 0% { opacity: 0.2; transform: translateY(0); } 50% { opacity: 0.5; transform: translateY(-10px); } 100% { opacity: 0.3; transform: translateY(5px); } }
@keyframes psp-shadow { 0% { transform: translateX(-20%); } 50% { transform: translateX(10%); } 100% { transform: translateX(-20%); } }

/* Scene 3: street-comedy-speed-launce */
.scn-street-comedy-speed-launce {
  background: linear-gradient(180deg, #87ceeb 0%, #b0e0e6 50%, #f0e68c 100%), radial-gradient(ellipse at 30% 10%, #fff8dc 0%, transparent 60%);
}
.scn-street-comedy-speed-launce .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #87ceeb 0%, #b0e0e6 100%);
  animation: scsl-sky 20s ease-in-out infinite alternate;
}
.scn-street-comedy-speed-launce .building-left {
  position: absolute; bottom: 30%; left: 0; width: 35%; height: 70%;
  background: linear-gradient(180deg, #d2b48c 0%, #a08060 50%, #704020 100%);
  border-radius: 0 10% 0 0;
  box-shadow: inset -5px 0 10px rgba(0,0,0,0.3);
}
.scn-street-comedy-speed-launce .building-right {
  position: absolute; bottom: 30%; right: 0; width: 30%; height: 60%;
  background: linear-gradient(180deg, #c5a98a 0%, #906848 50%, #503020 100%);
  border-radius: 10% 0 0 0;
  box-shadow: inset 5px 0 10px rgba(0,0,0,0.3);
}
.scn-street-comedy-speed-launce .street {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #8b7355 0%, #6b5235 50%, #4a3520 100%);
  border-radius: 50% 50% 0 0 / 30% 30% 0 0;
}
.scn-street-comedy-speed-launce .figure-launce {
  position: absolute; bottom: 22%; left: 38%; width: 24px; height: 48px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0e05 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: scsl-figure 3s ease-in-out infinite;
}
.scn-street-comedy-speed-launce .dog {
  position: absolute; bottom: 20%; left: 55%; width: 16px; height: 12px;
  background: linear-gradient(180deg, #8b4513 0%, #5c2e0e 100%);
  border-radius: 50% 50% 30% 30%;
  animation: scsl-dog 1.6s ease-in-out infinite alternate;
}
.scn-street-comedy-speed-launce .hat {
  position: absolute; bottom: 48%; left: 42%; width: 20px; height: 12px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 0 0;
  animation: scsl-hat 2s ease-in-out infinite;
}
@keyframes scsl-sky { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.95; } }
@keyframes scsl-figure { 0% { transform: translateX(0) rotate(-5deg); } 25% { transform: translateX(8px) rotate(3deg); } 50% { transform: translateX(0) rotate(5deg); } 75% { transform: translateX(-8px) rotate(-3deg); } 100% { transform: translateX(0) rotate(-5deg); } }
@keyframes scsl-dog { 0% { transform: translateY(0); } 50% { transform: translateY(-6px); } 100% { transform: translateY(0); } }
@keyframes scsl-hat { 0% { transform: translateY(0) rotate(-10deg); } 25% { transform: translateY(-10px) rotate(10deg); } 50% { transform: translateY(0) rotate(-5deg); } 75% { transform: translateY(-8px) rotate(15deg); } 100% { transform: translateY(0) rotate(-10deg); } }

/* Scene 4: julia-home-conversation */
.scn-julia-home-conversation {
  background: linear-gradient(180deg, #f5e6d0 0%, #d4b896 50%, #b89570 100%), radial-gradient(ellipse at 60% 40%, #f0e6d6 0%, transparent 60%);
}
.scn-julia-home-conversation .bg-wall {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(180deg, #f0ddd0 0%, #c4a882 100%);
}
.scn-julia-home-conversation .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(180deg, #8b6f47 0%, #5c4730 100%);
  border-radius: 30% 30% 0 0;
}
.scn-julia-home-conversation .window {
  position: absolute; top: 18%; right: 10%; width: 80px; height: 60px;
  background: radial-gradient(ellipse at center, #fff5e6 0%, #ffdcb5 70%, transparent 100%);
  border-radius: 4px;
  box-shadow: 0 0 30px 8px #ffd39b, 0 0 60px 15px rgba(255,211,155,0.2);
  animation: jhc-window 4s ease-in-out infinite alternate;
}
.scn-julia-home-conversation .curtain-left {
  position: absolute; top: 15%; right: 16%; width: 30px; height: 60px;
  background: linear-gradient(180deg, rgba(200,180,160,0.6) 0%, rgba(150,130,110,0.4) 100%);
  border-radius: 10% 0 0 10%;
  filter: blur(2px);
  animation: jhc-curtain 6s ease-in-out infinite alternate;
}
.scn-julia-home-conversation .curtain-right {
  position: absolute; top: 15%; right: 8%; width: 25px; height: 55px;
  background: linear-gradient(180deg, rgba(180,160,140,0.5) 0%, rgba(130,110,90,0.3) 100%);
  border-radius: 0 10% 10% 0;
  filter: blur(2px);
  animation: jhc-curtain 6s ease-in-out infinite alternate-reverse 3s;
}
.scn-julia-home-conversation .figure-julia {
  position: absolute; bottom: 18%; right: 25%; width: 22px; height: 45px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0e05 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: jhc-figure 5s ease-in-out infinite;
}
.scn-julia-home-conversation .table {
  position: absolute; bottom: 22%; right: 15%; width: 35px; height: 10px;
  background: linear-gradient(180deg, #7a5c3a 0%, #4a3418 100%);
  border-radius: 4px;
  box-shadow: 0 3px 6px rgba(0,0,0,0.2);
}
.scn-julia-home-conversation .book {
  position: absolute; bottom: 22%; right: 15%; width: 20px; height: 14px;
  background: linear-gradient(180deg, #a08060 0%, #7a5c3a 100%);
  border-radius: 2px;
  transform-origin: bottom left;
  animation: jhc-book 3s ease-in-out infinite alternate;
}
@keyframes jhc-window { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes jhc-curtain { 0% { transform: translateX(0) scaleY(1); } 50% { transform: translateX(3px) scaleY(1.02); } 100% { transform: translateX(0) scaleY(1); } }
@keyframes jhc-figure { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(-3px) rotate(-2deg); } 50% { transform: translateX(0) rotate(0deg); } 75% { transform: translateX(2px) rotate(1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes jhc-book { 0% { transform: rotate(0deg); } 50% { transform: rotate(15deg); } 100% { transform: rotate(0deg); } }

/* Scene: proteus-speed-banter (tag: psb) */
.scn-proteus-speed-banter {
  background: 
    linear-gradient(180deg, #6bb5e0 0%, #a3d8f7 40%, #c3e6fb 70%, #e8f5ff 100%),
    radial-gradient(ellipse at 85% 30%, #fdf5aa 0%, transparent 60%);
}
.scn-proteus-speed-banter .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #a3d8f7 0%, transparent 100%);
  animation: psb-sky 10s ease-in-out infinite alternate;
}
.scn-proteus-speed-banter .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #9ec184 0%, #6e9f5a 100%);
  border-radius: 20% 20% 0 0 / 30% 30% 0 0;
  animation: psb-ground 6s ease-in-out infinite;
}
.scn-proteus-speed-banter .wall-left {
  position: absolute; bottom: 30%; left: 5%; width: 20%; height: 45%;
  background: linear-gradient(180deg, #d9c9a8 0%, #a68f6e 100%);
  border-radius: 8% 8% 0 0;
  box-shadow: inset 0 0 15px rgba(0,0,0,0.2);
}
.scn-proteus-speed-banter .wall-right {
  position: absolute; bottom: 30%; right: 5%; width: 20%; height: 45%;
  background: linear-gradient(180deg, #d9c9a8 0%, #a68f6e 100%);
  border-radius: 8% 8% 0 0;
  box-shadow: inset 0 0 15px rgba(0,0,0,0.2);
}
.scn-proteus-speed-banter .window {
  position: absolute; bottom: 52%; left: 50%; width: 30px; height: 20px;
  transform: translateX(-50%);
  background: radial-gradient(circle, #fcebb5 0%, #d9b86a 70%);
  border-radius: 10%;
  box-shadow: 0 0 20px 6px #d9b86a;
  animation: psb-window 3s ease-in-out infinite alternate;
}
.scn-proteus-speed-banter .figure.proteus {
  position: absolute; bottom: 30%; left: 25%; width: 28px; height: 60px;
  background: linear-gradient(180deg, #7a6856 0%, #56483a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: psb-proteus 3s ease-in-out infinite alternate;
}
.scn-proteus-speed-banter .figure.speed {
  position: absolute; bottom: 30%; right: 25%; width: 26px; height: 56px;
  background: linear-gradient(180deg, #a4825a 0%, #806a46 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: psb-speed 2.8s ease-in-out infinite alternate;
}
.scn-proteus-speed-banter .cloud-a {
  position: absolute; top: 12%; left: 10%; width: 80px; height: 20px;
  background: linear-gradient(180deg, rgba(255,255,255,0.6) 0%, rgba(255,255,255,0.05) 100%);
  border-radius: 50%;
  filter: blur(8px);
  animation: psb-drift-a 30s linear infinite;
}
.scn-proteus-speed-banter .cloud-b {
  position: absolute; top: 20%; right: 15%; width: 60px; height: 16px;
  background: linear-gradient(180deg, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0.02) 100%);
  border-radius: 50%;
  filter: blur(6px);
  animation: psb-drift-b 45s linear infinite reverse;
}
@keyframes psb-sky { 0% { opacity: 0.8 } 50% { opacity: 1 } 100% { opacity: 0.7 } }
@keyframes psb-ground { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-2px) } }
@keyframes psb-window { 0% { opacity: 0.7; box-shadow: 0 0 10px 3px #d9b86a } 50% { opacity: 1; box-shadow: 0 0 30px 10px #fcebb5 } 100% { opacity: 0.8; box-shadow: 0 0 15px 5px #d9b86a } }
@keyframes psb-proteus { 0% { transform: translateY(0) rotate(-1deg) } 50% { transform: translateY(-4px) rotate(0deg) } 100% { transform: translateY(0) rotate(1deg) } }
@keyframes psb-speed { 0% { transform: translateY(0) rotate(1deg) } 50% { transform: translateY(-3px) rotate(-1deg) } 100% { transform: translateY(0) rotate(0deg) } }
@keyframes psb-drift-a { 0% { transform: translateX(-40px) } 100% { transform: translateX(120vw) } }
@keyframes psb-drift-b { 0% { transform: translateX(0) } 100% { transform: translateX(-140vw) } }

/* Scene: speed-proteus-letter-banter (tag: slb) */
.scn-speed-proteus-letter-banter {
  background: 
    linear-gradient(180deg, #87ceeb 0%, #b0e0f6 40%, #dceefb 100%),
    radial-gradient(ellipse at 70% 20%, #fff8b0 0%, transparent 70%);
}
.scn-speed-proteus-letter-banter .sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #b0e0f6 0%, transparent 100%);
  animation: slb-sky 12s ease-in-out infinite alternate;
}
.scn-speed-proteus-letter-banter .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #a6d89a 0%, #7cb86a 100%);
  border-radius: 30% 30% 0 0 / 40% 40% 0 0;
  animation: slb-ground 5s ease-in-out infinite;
}
.scn-speed-proteus-letter-banter .figure-left {
  position: absolute; bottom: 30%; left: 15%; width: 30px; height: 65px;
  background: linear-gradient(180deg, #a4825a 0%, #806a46 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: slb-fig-left 3.5s ease-in-out infinite alternate;
}
.scn-speed-proteus-letter-banter .figure-right {
  position: absolute; bottom: 30%; right: 15%; width: 32px; height: 68px;
  background: linear-gradient(180deg, #7a6856 0%, #56483a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: slb-fig-right 3.2s ease-in-out infinite alternate-reverse;
}
.scn-speed-proteus-letter-banter .letter {
  position: absolute; bottom: 45%; left: 50%; width: 22px; height: 18px;
  transform: translateX(-50%) rotate(-5deg);
  background: linear-gradient(180deg, #fcf1d6 0%, #f5e4b5 100%);
  border-radius: 4px;
  box-shadow: 0 4px 8px rgba(0,0,0,0.3);
  animation: slb-letter 2.5s ease-in-out infinite alternate;
}
.scn-speed-proteus-letter-banter .cloud-a {
  position: absolute; top: 10%; left: 8%; width: 70px; height: 18px;
  background: linear-gradient(180deg, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0.03) 100%);
  border-radius: 50%;
  filter: blur(7px);
  animation: slb-drift-a 35s linear infinite;
}
.scn-speed-proteus-letter-banter .cloud-b {
  position: absolute; top: 18%; right: 12%; width: 50px; height: 14px;
  background: linear-gradient(180deg, rgba(255,255,255,0.4) 0%, rgba(255,255,255,0.01) 100%);
  border-radius: 50%;
  filter: blur(5px);
  animation: slb-drift-b 50s linear infinite reverse;
}
.scn-speed-proteus-letter-banter .sun {
  position: absolute; top: 8%; right: 20%; width: 40px; height: 40px;
  background: radial-gradient(circle, #fff9c0 0%, #fadd7a 70%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 50px 20px rgba(250,221,122,0.5);
  animation: slb-sun 4s ease-in-out infinite alternate;
}
@keyframes slb-sky { 0% { opacity: 0.85 } 50% { opacity: 1 } 100% { opacity: 0.75 } }
@keyframes slb-ground { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-2px) } }
@keyframes slb-fig-left { 0% { transform: translateY(0) rotate(-2deg) } 50% { transform: translateY(-5px) rotate(0deg) } 100% { transform: translateY(0) rotate(2deg) } }
@keyframes slb-fig-right { 0% { transform: translateY(0) rotate(2deg) } 50% { transform: translateY(-4px) rotate(0deg) } 100% { transform: translateY(0) rotate(-2deg) } }
@keyframes slb-letter { 0% { transform: translateX(-50%) rotate(-8deg) translateY(0) } 50% { transform: translateX(-50%) rotate(-3deg) translateY(-4px) } 100% { transform: translateX(-50%) rotate(0deg) translateY(0) } }
@keyframes slb-drift-a { 0% { transform: translateX(-30px) } 100% { transform: translateX(130vw) } }
@keyframes slb-drift-b { 0% { transform: translateX(0) } 100% { transform: translateX(-150vw) } }
@keyframes slb-sun { 0% { box-shadow: 0 0 30px 10px rgba(250,221,122,0.3); opacity: 0.9 } 50% { box-shadow: 0 0 60px 25px rgba(250,221,122,0.6); opacity: 1 } 100% { box-shadow: 0 0 40px 15px rgba(250,221,122,0.4); opacity: 0.95 } }

/* Scene: speed-letter-complaint (tag: slc) */
.scn-speed-letter-complaint {
  background: 
    linear-gradient(180deg, #d4e9f7 0%, #b3ddf0 40%, #e8f4fe 100%),
    radial-gradient(ellipse at 40% 20%, #fff6d0 0%, transparent 70%);
}
.scn-speed-letter-complaint .bg-blur {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, #c5e2f5 0%, #a1cfe6 100%);
  filter: blur(12px);
  animation: slc-blur 8s ease-in-out infinite alternate;
}
.scn-speed-letter-complaint .figure.speed-close {
  position: absolute; bottom: 15%; left: 50%; width: 60px; height: 120px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #a4825a 0%, #806a46 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 0 8px 25px rgba(0,0,0,0.3);
  animation: slc-fig 3s ease-in-out infinite alternate;
}
.scn-speed-letter-complaint .letter-held {
  position: absolute; bottom: 45%; left: 50%; width: 35px; height: 25px;
  transform: translateX(-50%) rotate(10deg);
  background: linear-gradient(180deg, #fcf1d6 0%, #f5e4b5 100%);
  border-radius: 4px;
  box-shadow: 0 6px 12px rgba(0,0,0,0.4);
  animation: slc-letter 2.8s ease-in-out infinite alternate;
}
.scn-speed-letter-complaint .coin {
  position: absolute; bottom: 30%; left: 30%; width: 12px; height: 12px;
  background: radial-gradient(circle, #ffe484 0%, #c7a951 100%);
  border-radius: 50%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.3);
  animation: slc-coin 4s ease-in-out infinite;
}
.scn-speed-letter-complaint .shadow-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 15%;
  background: linear-gradient(180deg, rgba(0,0,0,0.15) 0%, transparent 100%);
  border-radius: 50% 50% 0 0 / 100% 100% 0 0;
}
@keyframes slc-blur { 0% { filter: blur(10px); opacity: 0.9 } 50% { filter: blur(14px); opacity: 1 } 100% { filter: blur(11px); opacity: 0.95 } }
@keyframes slc-fig { 0% { transform: translateX(-50%) translateY(0) rotate(-2deg) } 50% { transform: translateX(-50%) translateY(-6px) rotate(0deg) } 100% { transform: translateX(-50%) translateY(0) rotate(2deg) } }
@keyframes slc-letter { 0% { transform: translateX(-50%) rotate(12deg) translateY(0) } 50% { transform: translateX(-50%) rotate(6deg) translateY(-5px) } 100% { transform: translateX(-50%) rotate(8deg) translateY(0) } }
@keyframes slc-coin { 0% { transform: translateY(0) rotate(-15deg) } 25% { transform: translateY(-20px) rotate(0deg) } 50% { transform: translateY(0) rotate(15deg) } 75% { transform: translateY(-18px) rotate(0deg) } 100% { transform: translateY(0) rotate(-10deg) } }

/* Scene: proteus-dismisses-speed (tag: pds) */
.scn-proteus-dismisses-speed {
  background: 
    linear-gradient(180deg, #ffd580 0%, #ffb347 40%, #ffae42 70%, #ff9933 100%),
    radial-gradient(ellipse at 70% 40%, #fff5d6 0%, transparent 60%);
}
.scn-proteus-dismisses-speed .sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #ffb347 0%, #ffd580 100%);
  animation: pds-sky 6s ease-in-out infinite alternate;
}
.scn-proteus-dismisses-speed .sun-hard {
  position: absolute; top: 5%; right: 20%; width: 60px; height: 60px;
  background: radial-gradient(circle, #fff7e0 0%, #ffe066 70%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 80px 30px rgba(255,224,102,0.7);
  animation: pds-sun 3s ease-in-out infinite alternate;
}
.scn-proteus-dismisses-speed .ground-hard {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #e6b87e 0%, #c4945a 100%);
  clip-path: polygon(0 20%, 100% 0%, 100% 100%, 0% 100%);
  animation: pds-ground 4s ease-in-out infinite alternate;
}
.scn-proteus-dismisses-speed .figure.proteus-dark {
  position: absolute; bottom: 30%; left: 30%; width: 30px; height: 65px;
  background: linear-gradient(180deg, #3a2e26 0%, #1f1813 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pds-proteus 1.5s ease-in-out infinite alternate;
}
.scn-proteus-dismisses-speed .figure.speed-dark {
  position: absolute; bottom: 30%; right: 30%; width: 28px; height: 60px;
  background: linear-gradient(180deg, #4a3d32 0%, #2d241e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pds-speed 1.8s ease-in-out infinite alternate;
}
.scn-proteus-dismisses-speed .dust-a {
  position: absolute; bottom: 50%; left: 20%; width: 8px; height: 8px;
  background: rgba(200,160,100,0.4);
  border-radius: 50%;
  animation: pds-dust-a 2s ease-in-out infinite;
}
.scn-proteus-dismisses-speed .dust-b {
  position: absolute; bottom: 45%; left: 50%; width: 6px; height: 6px;
  background: rgba(200,160,100,0.3);
  border-radius: 50%;
  animation: pds-dust-b 2.5s ease-in-out infinite 0.5s;
}
@keyframes pds-sky { 0% { opacity: 0.9 } 50% { opacity: 1 } 100% { opacity: 0.8 } }
@keyframes pds-sun { 0% { box-shadow: 0 0 60px 20px rgba(255,224,102,0.5); transform: scale(0.95) } 50% { box-shadow: 0 0 100px 40px rgba(255,224,102,0.8); transform: scale(1.05) } 100% { box-shadow: 0 0 70px 25px rgba(255,224,102,0.6); transform: scale(0.98) } }
@keyframes pds-ground { 0% { clip-path: polygon(0 20%, 100% 0%, 100% 100%, 0% 100%); } 50% { clip-path: polygon(0 15%, 100% 5%, 100% 100%, 0% 100%); } 100% { clip-path: polygon(0 22%, 100% 0%, 100% 100%, 0% 100%); } }
@keyframes pds-proteus { 0% { transform: translateY(0) rotate(-1deg) } 50% { transform: translateY(-2px) rotate(0deg) } 100% { transform: translateY(0) rotate(1deg) } }
@keyframes pds-speed { 0% { transform: translateY(0) rotate(1deg) } 50% { transform: translateY(-3px) rotate(-1deg) } 100% { transform: translateY(0) rotate(0deg) } }
@keyframes pds-dust-a { 0% { transform: translateY(0) scale(1); opacity: 0.4 } 50% { transform: translateY(-15px) scale(1.5); opacity: 0 } 100% { transform: translateY(0) scale(1); opacity: 0.4 } }
@keyframes pds-dust-b { 0% { transform: translateY(0) scale(1); opacity: 0.3 } 50% { transform: translateY(-12px) scale(1.3); opacity: 0 } 100% { transform: translateY(0) scale(1); opacity: 0.3 } }
/* end per-scene blocks */

/* auto-stub: parent tag-classes flagged by CSS audit */
.note { position: absolute; pointer-events: none; }
.scn { position: absolute; pointer-events: none; }

/* ============ tier A ============ */
/* per-scene blocks (EXP step_scenes) */
/* mantua-forest-silvia-captured */
.scn-mantua-forest-silvia-captured {
  background: linear-gradient(180deg, #d4c9a0 0%, #7a9b5e 40%, #3d5620 100%),
              radial-gradient(ellipse at 20% 30%, #f0e8c0 0%, transparent 50%);
}
.scn-mantua-forest-silvia-captured .canopy {
  position: absolute; inset: 0 0 60% 0;
  background: radial-gradient(ellipse 500% 100% at 50% 0%, #5e7a3a 0%, transparent 70%);
  border-radius: 0 0 40% 40%;
  animation: mfs-canopy 12s ease-in-out infinite alternate;
}
.scn-mantua-forest-silvia-captured .tree {
  position: absolute; bottom: 20%; width: 12px; height: 60%;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 20% 20% 0 0;
}
.scn-mantua-forest-silvia-captured .tree-l { left: 15%; animation: mfs-tree-l 8s ease-in-out infinite alternate; }
.scn-mantua-forest-silvia-captured .tree-r { right: 15%; transform: scaleX(-1); animation: mfs-tree-r 9s ease-in-out infinite alternate; }
.scn-mantua-forest-silvia-captured .shaft {
  position: absolute; top: 15%; width: 40px; height: 120%;
  background: linear-gradient(180deg, rgba(255,255,220,.4) 0%, rgba(255,255,220,.1) 100%);
  transform: skewX(-20deg);
  filter: blur(4px);
}
.scn-mantua-forest-silvia-captured .shaft-a { left: 25%; animation: mfs-shaft 3s ease-in-out infinite alternate; }
.scn-mantua-forest-silvia-captured .shaft-b { left: 55%; animation: mfs-shaft 3.5s ease-in-out infinite alternate-reverse; }
.scn-mantua-forest-silvia-captured .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #4a5e30 0%, #2a3a10 100%);
  border-radius: 60% 40% 0 0 / 40% 30% 0 0;
}
.scn-mantua-forest-silvia-captured .silhouette {
  position: absolute; bottom: 25%; width: 20px; height: 50px;
  background: linear-gradient(180deg, #1a1a0a 0%, #0a0a00 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
}
.scn-mantua-forest-silvia-captured .outlaw { left: 40%; width: 28px; height: 60px; animation: mfs-outlaw 4s ease-in-out infinite; }
.scn-mantua-forest-silvia-captured .captive { left: 60%; width: 22px; height: 48px; animation: mfs-captive 5s ease-in-out infinite; }
@keyframes mfs-canopy {
  0% { opacity: .8; transform: scaleY(1) }
  50% { opacity: .6; transform: scaleY(1.02) }
  100% { opacity: .9; transform: scaleY(.98) }
}
@keyframes mfs-tree-l {
  0% { transform: translateX(0) }
  50% { transform: translateX(-2px) rotate(-1deg) }
  100% { transform: translateX(0) rotate(1deg) }
}
@keyframes mfs-tree-r {
  0% { transform: scaleX(-1) translateX(0) }
  50% { transform: scaleX(-1) translateX(1px) rotate(1deg) }
  100% { transform: scaleX(-1) translateX(0) rotate(-1deg) }
}
@keyframes mfs-shaft {
  0% { opacity: .2; transform: skewX(-20deg) translateX(0) }
  50% { opacity: .6; transform: skewX(-20deg) translateX(5px) }
  100% { opacity: .3; transform: skewX(-20deg) translateX(-5px) }
}
@keyframes mfs-outlaw {
  0% { transform: translateY(0) rotate(-2deg) }
  25% { transform: translateY(-2px) rotate(1deg) }
  50% { transform: translateY(0) rotate(3deg) }
  75% { transform: translateY(-1px) rotate(-1deg) }
  100% { transform: translateY(0) rotate(0) }
}
@keyframes mfs-captive {
  0% { transform: translateY(0) rotate(1deg) }
  25% { transform: translateY(1px) rotate(-2deg) }
  50% { transform: translateY(0) rotate(-1deg) }
  75% { transform: translateY(2px) rotate(0) }
  100% { transform: translateY(0) rotate(1deg) }
}

/* mantua-forest-valentine-rescue */
.scn-mantua-forest-valentine-rescue {
  background: linear-gradient(180deg, #b8ccb0 0%, #88aa70 40%, #5a7a40 100%),
              radial-gradient(ellipse at 70% 20%, #e0f0d0 0%, transparent 60%);
}
.scn-mantua-forest-valentine-rescue .foliage {
  position: absolute; inset: 0 0 50% 0;
  background: radial-gradient(ellipse 300% 100% at 50% 100%, #7a9a50 0%, transparent 60%);
  border-radius: 0 0 50% 50%;
  animation: mfv-foliage 20s ease-in-out infinite alternate;
}
.scn-mantua-forest-valentine-rescue .trunk {
  position: absolute; bottom: 20%; left: 30%; width: 14px; height: 70%;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 10%;
  animation: mfv-trunk 15s ease-in-out infinite;
}
.scn-mantua-forest-valentine-rescue .branch {
  position: absolute; bottom: 60%; left: 30%; width: 80px; height: 6px;
  background: linear-gradient(90deg, #5a4a3a 0%, #7a6a5a 100%);
  border-radius: 30%;
  transform: rotate(30deg);
  transform-origin: left center;
  animation: mfv-branch 18s ease-in-out infinite;
}
.scn-mantua-forest-valentine-rescue .light-spot {
  position: absolute; top: 25%; left: 55%; width: 80px; height: 80px;
  background: radial-gradient(circle, rgba(255,255,200,.3) 0%, transparent 70%);
  filter: blur(12px);
  animation: mfv-light 6s ease-in-out infinite alternate;
}
.scn-mantua-forest-valentine-rescue .figure-sitting {
  position: absolute; bottom: 22%; left: 35%; width: 30px; height: 45px;
  background: linear-gradient(180deg, #2a3a2a 0%, #1a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: mfv-sit 4s ease-in-out infinite alternate;
}
.scn-mantua-forest-valentine-rescue .bird {
  position: absolute; bottom: 55%; left: 65%; width: 12px; height: 8px;
  background: #3a2a1a;
  border-radius: 50% 50% 40% 40%;
  animation: mfv-bird 8s ease-in-out infinite;
}
@keyframes mfv-foliage {
  0% { opacity: .7; transform: scaleY(1) }
  50% { opacity: .9; transform: scaleY(1.01) }
  100% { opacity: .8; transform: scaleY(.99) }
}
@keyframes mfv-trunk {
  0% { transform: scaleY(1) }
  50% { transform: scaleY(1.005) }
  100% { transform: scaleY(1) }
}
@keyframes mfv-branch {
  0% { transform: rotate(30deg) translateY(0) }
  50% { transform: rotate(32deg) translateY(-2px) }
  100% { transform: rotate(28deg) translateY(2px) }
}
@keyframes mfv-light {
  0% { opacity: .2; transform: scale(1) }
  50% { opacity: .5; transform: scale(1.1) }
  100% { opacity: .3; transform: scale(.95) }
}
@keyframes mfv-sit {
  0% { transform: rotate(-2deg) translateY(0) }
  50% { transform: rotate(0) translateY(-1px) }
  100% { transform: rotate(2deg) translateY(0) }
}
@keyframes mfv-bird {
  0% { transform: translate(0,0) rotate(-5deg) }
  25% { transform: translate(5px,-2px) rotate(0deg) }
  50% { transform: translate(10px,0) rotate(5deg) }
  75% { transform: translate(5px,2px) rotate(0deg) }
  100% { transform: translate(0,0) rotate(-5deg) }
}

/* mantua-forest-reconciliation */
.scn-mantua-forest-reconciliation {
  background: linear-gradient(180deg, #e8d8b0 0%, #b8a070 40%, #7a6030 100%),
              radial-gradient(ellipse at 50% 30%, #f0e0c0 0%, transparent 60%);
}
.scn-mantua-forest-reconciliation .clearing {
  position: absolute; bottom: 0; left: 10%; right: 10%; height: 50%;
  background: radial-gradient(ellipse 120% 100% at 50% 100%, #a0b050 0%, #5a6a20 100%);
  border-radius: 50% 50% 0 0;
}
.scn-mantua-forest-reconciliation .arch-left {
  position: absolute; bottom: 30%; left: 10%; width: 30px; height: 80px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 50% 50% 10% 10% / 30% 30% 20% 20%;
  transform: rotate(-5deg);
  animation: mfr-arch-l 10s ease-in-out infinite alternate;
}
.scn-mantua-forest-reconciliation .arch-right {
  position: absolute; bottom: 30%; right: 10%; width: 30px; height: 80px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 50% 50% 10% 10% / 30% 30% 20% 20%;
  transform: rotate(5deg);
  animation: mfr-arch-r 10s ease-in-out infinite alternate;
}
.scn-mantua-forest-reconciliation .ray {
  position: absolute; top: 10%; width: 60px; height: 120%;
  background: linear-gradient(180deg, rgba(255,220,180,.3) 0%, transparent 80%);
  filter: blur(6px);
  animation: mfr-ray 8s ease-in-out infinite alternate;
}
.scn-mantua-forest-reconciliation .ray-a { left: 40%; transform: skewX(-15deg); }
.scn-mantua-forest-reconciliation .ray-b { left: 60%; transform: skewX(15deg); animation-delay: 2s; }
.scn-mantua-forest-reconciliation .figure-left {
  position: absolute; bottom: 20%; left: 40%; width: 22px; height: 50px;
  background: linear-gradient(180deg, #5a3a2a 0%, #3a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: mfr-figure-l 5s ease-in-out infinite;
}
.scn-mantua-forest-reconciliation .figure-right {
  position: absolute; bottom: 20%; right: 40%; width: 22px; height: 50px;
  background: linear-gradient(180deg, #5a3a2a 0%, #3a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: mfr-figure-r 5s ease-in-out infinite;
}
.scn-mantua-forest-reconciliation .glow {
  position: absolute; bottom: 25%; left: 50%; width: 40px; height: 40px;
  transform: translateX(-50%);
  background: radial-gradient(circle, #ffd080 0%, #b08040 50%, transparent 80%);
  box-shadow: 0 0 30px 10px rgba(200,160,80,.4);
  animation: mfr-glow 3s ease-in-out infinite alternate;
}
@keyframes mfr-arch-l {
  0% { transform: rotate(-5deg) translateY(0) }
  50% { transform: rotate(-6deg) translateY(-2px) }
  100% { transform: rotate(-4deg) translateY(1px) }
}
@keyframes mfr-arch-r {
  0% { transform: rotate(5deg) translateY(0) }
  50% { transform: rotate(6deg) translateY(-2px) }
  100% { transform: rotate(4deg) translateY(1px) }
}
@keyframes mfr-ray {
  0% { opacity: .1; transform: translateX(0) }
  50% { opacity: .3; transform: translateX(5px) }
  100% { opacity: .2; transform: translateX(-5px) }
}
@keyframes mfr-figure-l {
  0% { transform: translateY(0) rotate(0) }
  25% { transform: translateY(-1px) rotate(-2deg) }
  50% { transform: translateY(0) rotate(1deg) }
  75% { transform: translateY(-1px) rotate(0) }
  100% { transform: translateY(0) rotate(-1deg) }
}
@keyframes mfr-figure-r {
  0% { transform: translateY(0) rotate(1deg) }
  25% { transform: translateY(-1px) rotate(2deg) }
  50% { transform: translateY(0) rotate(-1deg) }
  75% { transform: translateY(-1px) rotate(0) }
  100% { transform: translateY(0) rotate(1deg) }
}
@keyframes mfr-glow {
  0% { opacity: .7; box-shadow: 0 0 20px 5px rgba(200,160,80,.3); }
  50% { opacity: 1; box-shadow: 0 0 40px 15px rgba(200,160,80,.5); }
  100% { opacity: .8; box-shadow: 0 0 25px 8px rgba(200,160,80,.4); }
}

.scn-verona-julia-tears-letter { background: linear-gradient(180deg, #2b2b3a 0%, #4a3a2e 50%, #8a7a5a 100%), radial-gradient(ellipse at 30% 70%, #c0a080 0%, transparent 50%); }
.scn-verona-julia-tears-letter .table-jtl { position:absolute; bottom:15%; left:10%; width:80%; height:30%; background: linear-gradient(135deg, #6a5030 0%, #4a3828 100%); border-radius: 4% 4% 0 0; box-shadow: 0 -6px 12px rgba(0,0,0,.4); }
.scn-verona-julia-tears-letter .window-jtl { position:absolute; top:5%; right:10%; width:30%; height:40%; background: radial-gradient(ellipse at center, #ffe0a0 0%, #d0b080 60%, #2b2b3a 100%); border:4px solid #5a4a3a; border-radius:8px; box-shadow: 0 0 40px rgba(255,224,160,.6); animation: jtl-window 8s ease-in-out infinite alternate; }
.scn-verona-julia-tears-letter .letter-jtl { position:absolute; bottom:22%; left:35%; width:40%; height:25%; background: linear-gradient(135deg, #f5e8c8 0%, #dcc8a0 100%); border-radius: 2% 8% 8% 2%; box-shadow: 2px 2px 6px rgba(0,0,0,.3); transform: rotate(-5deg); animation: jtl-letter 4s ease-in-out infinite; }
.scn-verona-julia-tears-letter .tear-jtl { position:absolute; bottom:35%; left:48%; width:8px; height:12px; background: radial-gradient(circle, #a0c0e0 0%, transparent 100%); border-radius:50% 50% 50% 50% / 60% 60% 40% 40%; opacity:.6; animation: jtl-tear 3s ease-in-out infinite; filter: blur(1px); }
.scn-verona-julia-tears-letter .hand-left-jtl { position:absolute; bottom:30%; left:30%; width:20px; height:30px; background: linear-gradient(180deg, #d4a878 0%, #a87a58 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform: rotate(-20deg); animation: jtl-hand-l 5s ease-in-out infinite; }
.scn-verona-julia-tears-letter .hand-right-jtl { position:absolute; bottom:30%; left:55%; width:20px; height:30px; background: linear-gradient(180deg, #d4a878 0%, #a87a58 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform: rotate(20deg) scaleX(-1); animation: jtl-hand-r 5s ease-in-out infinite; }
.scn-verona-julia-tears-letter .inkwell-jtl { position:absolute; bottom:20%; left:20%; width:18px; height:22px; background: radial-gradient(circle at 50% 30%, #2a1a0a 0%, #1a0a00 100%); border-radius: 50% 50% 40% 40% / 30% 30% 70% 70%; box-shadow: 0 2px 4px rgba(0,0,0,.5); animation: jtl-ink 12s linear infinite; }
@keyframes jtl-window { 0% { opacity:.7; box-shadow: 0 0 30px rgba(255,224,160,.4); } 50% { opacity:1; box-shadow: 0 0 60px rgba(255,224,160,.8); } 100% { opacity:.8; box-shadow: 0 0 40px rgba(255,224,160,.5); } }
@keyframes jtl-letter { 0% { transform: rotate(-5deg) translateY(0); } 50% { transform: rotate(-3deg) translateY(-3px); } 100% { transform: rotate(-7deg) translateY(0); } }
@keyframes jtl-tear { 0% { transform: translateY(0) scale(1); opacity:.6; } 50% { transform: translateY(-8px) scale(1.2); opacity:.9; } 100% { transform: translateY(0) scale(1); opacity:.6; } }
@keyframes jtl-hand-l { 0%,100% { transform: rotate(-20deg) translateY(0); } 25% { transform: rotate(-15deg) translateY(-4px); } 50% { transform: rotate(-22deg) translateY(-2px); } 75% { transform: rotate(-18deg) translateY(2px); } }
@keyframes jtl-hand-r { 0%,100% { transform: rotate(20deg) scaleX(-1) translateY(0); } 25% { transform: rotate(15deg) scaleX(-1) translateY(-4px); } 50% { transform: rotate(22deg) scaleX(-1) translateY(-2px); } 75% { transform: rotate(18deg) scaleX(-1) translateY(2px); } }
@keyframes jtl-ink { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(1px) rotate(5deg); } 100% { transform: translateY(0) rotate(0deg); } }

.scn-verona-julia-dinner { background: linear-gradient(135deg, #3a2a1a 0%, #6a4a2a 50%, #9a7a5a 100%), radial-gradient(ellipse at 70% 30%, #ffe0a0 0%, transparent 60%); }
.scn-verona-julia-dinner .table-jdi { position:absolute; bottom:10%; left:5%; width:90%; height:40%; background: linear-gradient(180deg, #7a5a3a 0%, #4a2a1a 100%); border-radius: 6% 6% 0 0; box-shadow: 0 -8px 20px rgba(0,0,0,.5); }
.scn-verona-julia-dinner .plate-jdi { position:absolute; bottom:28%; left:30%; width:20%; height:20%; background: linear-gradient(135deg, #f8f0e0 0%, #c8b8a0 100%); border-radius:50%; box-shadow: inset 0 4px 8px rgba(0,0,0,.1), 0 6px 10px rgba(0,0,0,.3); }
.scn-verona-julia-dinner .glass-jdi { position:absolute; bottom:30%; left:55%; width:12px; height:30px; background: linear-gradient(180deg, rgba(200,220,240,.6) 0%, rgba(160,180,200,.2) 100%); border-radius: 4px 4px 2px 2px; border:1px solid rgba(255,255,255,.3); box-shadow: 0 2px 6px rgba(0,0,0,.2); animation: jdi-glass 6s ease-in-out infinite alternate; }
.scn-verona-julia-dinner .napkin-jdi { position:absolute; bottom:30%; left:20%; width:15%; height:18%; background: linear-gradient(135deg, #f0e0d0 0%, #d0c0b0 100%); border-radius: 2%; transform: rotate(-10deg); box-shadow: 0 2px 4px rgba(0,0,0,.2); }
.scn-verona-julia-dinner .letter-jdi { position:absolute; bottom:25%; left:42%; width:20%; height:15%; background: linear-gradient(135deg, #f5e8c8 0%, #dcc8a0 100%); border-radius: 2% 6% 6% 2%; box-shadow: 2px 2px 4px rgba(0,0,0,.3); transform: rotate(3deg); animation: jdi-letter 7s ease-in-out infinite; }
.scn-verona-julia-dinner .candle-jdi { position:absolute; bottom:40%; left:60%; width:8px; height:40px; background: linear-gradient(180deg, #e8d0b0 0%, #c8a080 100%); border-radius: 4px; box-shadow: 0 2px 4px rgba(0,0,0,.3); }
.scn-verona-julia-dinner .flame-jdi { position:absolute; bottom:76%; left:60%; width:10px; height:14px; margin-left:-1px; background: radial-gradient(circle, #ffee88 0%, #ffbb44 50%, transparent 100%); border-radius:50%; box-shadow: 0 0 20px 6px #ffbb44, 0 0 40px 12px rgba(255,187,68,.4); animation: jdi-flame 2s ease-in-out infinite alternate; }
@keyframes jdi-glass { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-2px) rotate(1deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes jdi-letter { 0%,100% { transform: rotate(3deg) translateY(0); } 50% { transform: rotate(5deg) translateY(-2px); } }
@keyframes jdi-flame { 0% { transform: scaleY(1) scaleX(1); opacity:.9; } 25% { transform: scaleY(1.1) scaleX(0.9); } 50% { transform: scaleY(0.9) scaleX(1.1); } 75% { transform: scaleY(1.05) scaleX(0.95); } 100% { transform: scaleY(1) scaleX(1); opacity:1; } }

.scn-verona-antonio-house { background: linear-gradient(180deg, #c8b8a0 0%, #a89878 30%, #8a7a6a 100%), radial-gradient(ellipse at 80% 10%, #ffe0b0 0%, transparent 70%); }
.scn-verona-antonio-house .wall-aho { position:absolute; inset:0; background: linear-gradient(180deg, #d4c4a8 0%, #b4a488 100%); }
.scn-verona-antonio-house .window-aho { position:absolute; top:8%; left:10%; width:35%; height:45%; background: radial-gradient(ellipse at 60% 40%, #fff8e0 0%, #b0a090 60%, #7a6a5a 100%); border:6px solid #6a5a4a; border-radius:8px; box-shadow: inset 0 0 30px rgba(255,248,224,.3); animation: aho-window 12s ease-in-out infinite alternate; }
.scn-verona-antonio-house .bookshelf-aho { position:absolute; bottom:15%; left:5%; width:30%; height:60%; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius:4px; box-shadow: inset 0 4px 8px rgba(0,0,0,.6); }
.scn-verona-antonio-house .desk-aho { position:absolute; bottom:18%; left:45%; width:40%; height:20%; background: linear-gradient(135deg, #7a6a4a 0%, #4a3a2a 100%); border-radius:4px; box-shadow: 0 -4px 8px rgba(0,0,0,.4); }
.scn-verona-antonio-house .chair-aho { position:absolute; bottom:20%; left:50%; width:18%; height:30%; background: linear-gradient(180deg, #6a5a4a 0%, #3a2a1a 100%); border-radius: 20% 20% 10% 10%; transform: scaleX(0.8); }
.scn-verona-antonio-house .lamp-aho { position:absolute; top:30%; right:15%; width:6%; height:40%; background: linear-gradient(180deg, #b08060 0%, #8a6040 100%); border-radius: 20% 20% 10% 10%; box-shadow: 0 0 20px #c09070; animation: aho-lamp 5s ease-in-out infinite alternate; }
@keyframes aho-window { 0% { opacity:.8; box-shadow: inset 0 0 20px rgba(255,248,224,.2); } 50% { opacity:1; box-shadow: inset 0 0 40px rgba(255,248,224,.5); } 100% { opacity:.85; box-shadow: inset 0 0 25px rgba(255,248,224,.3); } }
@keyframes aho-lamp { 0% { box-shadow: 0 0 15px #c09070; } 50% { box-shadow: 0 0 30px #e0b090; } 100% { box-shadow: 0 0 18px #c09070; } }

.scn-verona-send-proteus { background: linear-gradient(180deg, #3a2a1a 0%, #5a4a3a 40%, #7a6a5a 100%), radial-gradient(ellipse at 70% 20%, #ffe0a0 0%, transparent 60%); }
.scn-verona-send-proteus .window-spr { position:absolute; top:5%; left:5%; width:40%; height:50%; background: radial-gradient(ellipse at 40% 30%, #fff8e0 0%, #b0a090 60%, #3a2a1a 100%); border:6px solid #4a3a2a; border-radius:8px; box-shadow: inset 0 0 40px rgba(255,248,224,.4); animation: spr-window 15s ease-in-out infinite alternate; }
.scn-verona-send-proteus .figure-spr { position:absolute; bottom:20%; left:30%; width:12%; height:50%; background: linear-gradient(180deg, #2a1a0a 0%, #1a0a00 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: spr-figure 8s ease-in-out infinite; }
.scn-verona-send-proteus .suitcase-spr { position:absolute; bottom:18%; left:15%; width:14%; height:16%; background: linear-gradient(135deg, #6a4a3a 0%, #3a2a1a 100%); border-radius: 8%; box-shadow: 0 4px 8px rgba(0,0,0,.5); }
.scn-verona-send-proteus .hat-spr { position:absolute; bottom:68%; left:32%; width:14%; height:8%; background: radial-gradient(ellipse at 50% 40%, #4a3a2a 0%, #2a1a0a 100%); border-radius: 50% 50% 20% 20% / 60% 60% 20% 20%; transform: rotate(-10deg); }
.scn-verona-send-proteus .stick-spr { position:absolute; bottom:20%; left:38%; width:2%; height:40%; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 2px; transform: rotate(10deg); }
.scn-verona-send-proteus .map-spr { position:absolute; bottom:20%; right:10%; width:30%; height:20%; background: linear-gradient(135deg, #e8dcc8 0%, #c8b8a0 100%); border-radius: 2%; box-shadow: 2px 2px 6px rgba(0,0,0,.3); transform: rotate(5deg); animation: spr-map 10s ease-in-out infinite; }
@keyframes spr-window { 0% { opacity:.7; box-shadow: inset 0 0 20px rgba(255,248,224,.2); } 50% { opacity:1; box-shadow: inset 0 0 60px rgba(255,248,224,.6); } 100% { opacity:.8; box-shadow: inset 0 0 30px rgba(255,248,224,.3); } }
@keyframes spr-figure { 0%,100% { transform: translateY(0) rotate(0deg); } 25% { transform: translateY(-4px) rotate(1deg); } 50% { transform: translateY(-2px) rotate(-1deg); } 75% { transform: translateY(-6px) rotate(0.5deg); } }
@keyframes spr-map { 0%,100% { transform: rotate(5deg) translateY(0); } 50% { transform: rotate(8deg) translateY(-3px); } }

.scn-milan-street-speed-launce {
  background: linear-gradient(180deg, #7fbfff 0%, #b0d8ff 45%, #f5e6b0 70%, #d4a56a 100%),
              radial-gradient(ellipse at 80% 10%, #ffe680 0%, transparent 60%);
}
.scn-milan-street-speed-launce .sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #7fbfff 0%, #a0cfff 60%, transparent 100%);
  animation: st1-sky 20s ease-in-out infinite alternate;
}
.scn-milan-street-speed-launce .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 55%;
  background: linear-gradient(0deg, #b8956a 0%, #c9a87a 30%, #d4b890 100%);
  border-radius: 0 0 10% 10% / 0 0 30% 30%;
}
.scn-milan-street-speed-launce .building-left {
  position: absolute; bottom: 35%; left: 5%; width: 28%; height: 60%;
  background: linear-gradient(180deg, #d4c0a0 0%, #b8a080 50%, #9a8a6a 100%);
  border-radius: 4% 4% 0 0; box-shadow: inset -8px 0 20px rgba(0,0,0,0.2);
  animation: st1-build 12s ease-in-out infinite;
}
.scn-milan-street-speed-launce .building-right {
  position: absolute; bottom: 35%; right: 5%; width: 30%; height: 65%;
  background: linear-gradient(180deg, #cca870 0%, #b89a6a 50%, #9a8060 100%);
  border-radius: 4% 4% 0 0; box-shadow: inset 8px 0 20px rgba(0,0,0,0.15);
}
.scn-milan-street-speed-launce .sun {
  position: absolute; top: 8%; right: 18%; width: 60px; height: 60px;
  background: radial-gradient(circle, #fff5c0 0%, #ffe680 50%, transparent 100%);
  border-radius: 50%; box-shadow: 0 0 60px 20px rgba(255,230,128,0.4);
  animation: st1-sun 8s ease-in-out infinite alternate;
}
.scn-milan-street-speed-launce .lamp-post {
  position: absolute; bottom: 42%; left: 40%; width: 6px; height: 80px;
  background: linear-gradient(180deg, #6a5a3a 0%, #4a3a2a 100%);
  border-radius: 2px; transform-origin: bottom;
  animation: st1-lamp 5s ease-in-out infinite;
}
.scn-milan-street-speed-launce .figure-speed {
  position: absolute; bottom: 30%; left: 35%; width: 20px; height: 50px;
  background: linear-gradient(180deg, #c05040 0%, #8a3020 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: st1-walk1 3s ease-in-out infinite;
}
.scn-milan-street-speed-launce .figure-launce {
  position: absolute; bottom: 30%; left: 52%; width: 24px; height: 52px;
  background: linear-gradient(180deg, #6a7a5a 0%, #3a4a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: st1-walk2 3.5s ease-in-out infinite;
}
@keyframes st1-sky { 0% { opacity: 0.9 } 50% { opacity: 1 } 100% { opacity: 0.85 } }
@keyframes st1-build { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-2px) } }
@keyframes st1-sun { 0% { transform: scale(0.95) rotate(0deg) } 50% { transform: scale(1.05) rotate(5deg) } 100% { transform: scale(0.95) rotate(-5deg) } }
@keyframes st1-lamp { 0%,100% { transform: rotate(-2deg) } 50% { transform: rotate(2deg) } }
@keyframes st1-walk1 { 0% { transform: translateX(0) translateY(0) rotate(-3deg) } 25% { transform: translateX(8px) translateY(-2px) rotate(2deg) } 50% { transform: translateX(16px) translateY(0) rotate(-1deg) } 75% { transform: translateX(24px) translateY(-2px) rotate(3deg) } 100% { transform: translateX(32px) translateY(0) rotate(0) } }
@keyframes st1-walk2 { 0% { transform: translateX(0) translateY(0) rotate(2deg) } 25% { transform: translateX(-6px) translateY(-2px) rotate(-1deg) } 50% { transform: translateX(-12px) translateY(0) rotate(3deg) } 75% { transform: translateX(-18px) translateY(-2px) rotate(-2deg) } 100% { transform: translateX(-24px) translateY(0) rotate(0) } }

.scn-milan-palace-proteus-soliloquy {
  background: linear-gradient(180deg, #1a1a3a 0%, #2a2a4e 40%, #3a3a5e 70%, #4a4a6e 100%),
              radial-gradient(ellipse at 50% 80%, #4a4a7e 0%, transparent 70%);
}
.scn-milan-palace-proteus-soliloquy .wall-bg {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(180deg, #2a2a4e 0%, #3a3a5e 100%);
  animation: pp1-wall 20s ease-in-out infinite alternate;
}
.scn-milan-palace-proteus-soliloquy .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(0deg, #1a1a2a 0%, #2a2a3e 100%);
  border-radius: 50% 50% 0 0 / 20% 20% 0 0;
}
.scn-milan-palace-proteus-soliloquy .window-frame {
  position: absolute; top: 15%; left: 50%; transform: translateX(-50%);
  width: 120px; height: 140px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 6% 6% 4% 4%; box-shadow: inset 0 0 30px rgba(0,0,0,0.5);
  animation: pp1-frame 12s ease-in-out infinite;
}
.scn-milan-palace-proteus-soliloquy .window-glow {
  position: absolute; top: 17%; left: calc(50% - 50px);
  width: 100px; height: 120px;
  background: radial-gradient(ellipse, #c0d8ff 0%, #6080c0 40%, transparent 100%);
  clip-path: polygon(2% 2%, 98% 2%, 98% 98%, 2% 98%);
  animation: pp1-glow 3s ease-in-out infinite alternate;
}
.scn-milan-palace-proteus-soliloquy .candle-table {
  position: absolute; bottom: 20%; left: 30%; width: 80px; height: 50px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 10% 10% 6% 6%; box-shadow: 0 6px 12px rgba(0,0,0,0.6);
}
.scn-milan-palace-proteus-soliloquy .candle-flame {
  position: absolute; bottom: 30%; left: 34%; width: 8px; height: 20px;
  background: radial-gradient(circle, #ffe080 0%, #ffa040 50%, transparent 100%);
  border-radius: 50%; box-shadow: 0 0 30px 10px rgba(255,160,64,0.5);
  animation: pp1-flame 1.5s ease-in-out infinite alternate;
}
.scn-milan-palace-proteus-soliloquy .proteus-shadow {
  position: absolute; bottom: 0; left: 50%; width: 100px; height: 120px;
  transform: translateX(-50%);
  background: radial-gradient(ellipse, rgba(0,0,0,0.4) 0%, transparent 80%);
  filter: blur(10px);
  animation: pp1-shadow 6s ease-in-out infinite alternate;
}
.scn-milan-palace-proteus-soliloquy .proteus-figure {
  position: absolute; bottom: 10%; left: 50%; transform: translateX(-50%);
  width: 30px; height: 80px;
  background: linear-gradient(180deg, #2a2a4a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: -4px 0 8px rgba(0,0,0,0.5);
  animation: pp1-figure 4s ease-in-out infinite;
}
@keyframes pp1-wall { 0%,100% { opacity: 0.9 } 50% { opacity: 1 } }
@keyframes pp1-frame { 0%,100% { transform: translateX(-50%) } 50% { transform: translateX(-50%) translateY(-2px) } }
@keyframes pp1-glow { 0% { opacity: 0.4; box-shadow: 0 0 20px 5px #6080c0 } 50% { opacity: 0.8; box-shadow: 0 0 40px 15px #a0b8e0 } 100% { opacity: 0.5; box-shadow: 0 0 25px 8px #6080c0 } }
@keyframes pp1-flame { 0% { transform: scaleY(0.9) translateY(2px); opacity: 0.8 } 50% { transform: scaleY(1.1) translateY(-2px); opacity: 1 } 100% { transform: scaleY(0.95) translateY(1px); opacity: 0.85 } }
@keyframes pp1-shadow { 0% { transform: translateX(-50%) scaleX(1) } 50% { transform: translateX(-50%) scaleX(1.05) } 100% { transform: translateX(-50%) scaleX(0.95) } }
@keyframes pp1-figure { 0%,100% { transform: translateX(-50%) rotate(-2deg) } 50% { transform: translateX(-50%) rotate(2deg) translateY(-3px) } }

.scn-verona-julia-planning {
  background: linear-gradient(180deg, #f5e6c0 0%, #e8d0a0 50%, #c8a870 100%),
              radial-gradient(ellipse at 70% 30%, #fff0d0 0%, transparent 70%);
}
.scn-verona-julia-planning .room-wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #e0c898 0%, #c8a870 100%);
  animation: vj1-wall 15s ease-in-out infinite alternate;
}
.scn-verona-julia-planning .window-light {
  position: absolute; top: 12%; left: 60%; width: 100px; height: 130px;
  background: radial-gradient(ellipse at 50% 50%, #ffe8b0 0%, #c8a870 60%, transparent 100%);
  clip-path: polygon(5% 5%, 95% 5%, 95% 95%, 5% 95%);
  animation: vj1-light 8s ease-in-out infinite alternate;
}
.scn-verona-julia-planning .table-oval {
  position: absolute; bottom: 25%; left: 30%; width: 160px; height: 60px;
  background: linear-gradient(180deg, #b89860 0%, #8a7040 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 0 8px 20px rgba(0,0,0,0.3);
  transform: perspective(200px) rotateX(30deg);
}
.scn-verona-julia-planning .vase-flowers {
  position: absolute; bottom: 38%; left: 50%; transform: translateX(-50%);
  width: 20px; height: 40px;
  background: linear-gradient(180deg, #c87050 0%, #a05030 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 20% 20%;
}
.scn-verona-julia-planning .julia-sit {
  position: absolute; bottom: 20%; left: 25%; width: 30px; height: 70px;
  background: linear-gradient(180deg, #d0a878 0%, #a08050 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vj1-sit 6s ease-in-out infinite;
}
.scn-verona-julia-planning .lucetta-stand {
  position: absolute; bottom: 20%; left: 55%; width: 28px; height: 72px;
  background: linear-gradient(180deg, #b0a068 0%, #807040 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vj1-stand 7s ease-in-out infinite;
}
.scn-verona-julia-planning .cushion-glow {
  position: absolute; bottom: 15%; left: 20%; width: 80px; height: 40px;
  background: radial-gradient(ellipse, #ffd090 0%, transparent 80%);
  filter: blur(10px);
  animation: vj1-cushion 12s ease-in-out infinite alternate;
}
@keyframes vj1-wall { 0%,100% { opacity: 0.95 } 50% { opacity: 1 } }
@keyframes vj1-light { 0% { opacity: 0.6; transform: scaleX(0.95) } 50% { opacity: 1; transform: scaleX(1.05) } 100% { opacity: 0.7; transform: scaleX(0.98) } }
@keyframes vj1-sit { 0%,100% { transform: translateX(0) rotate(-1deg) } 50% { transform: translateX(-4px) rotate(2deg) translateY(-2px) } }
@keyframes vj1-stand { 0%,100% { transform: translateX(0) rotate(1deg) } 50% { transform: translateX(4px) rotate(-2deg) translateY(-2px) } }
@keyframes vj1-cushion { 0% { opacity: 0.2; transform: scale(0.9) } 50% { opacity: 0.4; transform: scale(1.1) } 100% { opacity: 0.25; transform: scale(0.95) } }

.scn-milan-duke-proteus-confession {
  background: linear-gradient(180deg, #e8dcc0 0%, #d4c0a0 50%, #b8a080 100%),
              radial-gradient(ellipse at 50% 80%, #f0e0c0 0%, transparent 70%);
}
.scn-milan-duke-proteus-confession .throne-bg {
  position: absolute; inset: 0 0 20% 0;
  background: linear-gradient(180deg, #c8b090 0%, #a08868 100%);
  animation: dp1-bg 20s ease-in-out infinite alternate;
}
.scn-milan-duke-proteus-confession .column-left {
  position: absolute; bottom: 20%; left: 10%; width: 30px; height: 80%;
  background: linear-gradient(180deg, #b8a080 0%, #8a7050 100%);
  border-radius: 5% 5% 0 0; box-shadow: inset -4px 0 12px rgba(0,0,0,0.1);
}
.scn-milan-duke-proteus-confession .column-right {
  position: absolute; bottom: 20%; right: 10%; width: 30px; height: 80%;
  background: linear-gradient(180deg, #b8a080 0%, #8a7050 100%);
  border-radius: 5% 5% 0 0; box-shadow: inset 4px 0 12px rgba(0,0,0,0.1);
}
.scn-milan-duke-proteus-confession .duke-figure {
  position: absolute; bottom: 15%; left: 35%; width: 40px; height: 100px;
  background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  box-shadow: -4px 0 12px rgba(0,0,0,0.3);
  animation: dp1-duke 8s ease-in-out infinite;
}
.scn-milan-duke-proteus-confession .proteus-figure {
  position: absolute; bottom: 15%; left: 55%; width: 35px; height: 95px;
  background: linear-gradient(180deg, #5a6a4a 0%, #3a4a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  box-shadow: 4px 0 12px rgba(0,0,0,0.3);
  animation: dp1-proteus 9s ease-in-out infinite;
}
.scn-milan-duke-proteus-confession .light-shaft {
  position: absolute; top: 0; left: 50%; transform: translateX(-50%);
  width: 60%; height: 60%;
  background: linear-gradient(180deg, rgba(255,240,200,0.15) 0%, transparent 100%);
  clip-path: polygon(30% 0, 70% 0, 80% 100%, 20% 100%);
  animation: dp1-shaft 15s ease-in-out infinite alternate;
}
.scn-milan-duke-proteus-confession .carpet-oval {
  position: absolute; bottom: 0; left: 30%; width: 40%; height: 20%;
  background: radial-gradient(ellipse, #8a6040 0%, #6a4830 100%);
  border-radius: 50% 50% 20% 20% / 40% 40% 10% 10%;
  transform: perspective(400px) rotateX(45deg);
}
@keyframes dp1-bg { 0%,100% { opacity: 0.9 } 50% { opacity: 1 } }
@keyframes dp1-duke { 0%,100% { transform: translateX(0) rotate(-1deg) } 50% { transform: translateX(-2px) rotate(2deg) translateY(-2px) } }
@keyframes dp1-proteus { 0%,100% { transform: translateX(0) rotate(1deg) } 50% { transform: translateX(2px) rotate(-2deg) translateY(-2px) } }
@keyframes dp1-shaft { 0% { opacity: 0.3; transform: translateX(-50%) scaleX(0.95) } 50% { opacity: 0.6; transform: translateX(-50%) scaleX(1.05) } 100% { opacity: 0.35; transform: translateX(-50%) scaleX(0.98) } }

.scn-verona-proteus-lament {
  background: linear-gradient(180deg, #1f1a2e 0%, #3a2a4a 40%, #5a4a3a 100%),
              radial-gradient(ellipse at 30% 60%, #7a6a5a 0%, transparent 60%),
              linear-gradient(0deg, #0a0a1a 0%, transparent 20%);
}
.scn-verona-proteus-lament .chamber-wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(135deg, #4a3a4a 0%, #2a1a2a 100%);
  border-radius: 0 0 30% 30% / 0 0 40% 40%;
  animation: pl-wall 12s ease-in-out infinite alternate;
}
.scn-verona-proteus-lament .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(0deg, #1a121a 0%, #3a2a2a 100%);
  border-radius: 40% 40% 0 0 / 20% 20% 0 0;
  box-shadow: inset 0 8px 20px #0a0a0a;
}
.scn-verona-proteus-lament .window {
  position: absolute; top: 10%; left: 10%; width: 30%; height: 40%;
  background: radial-gradient(ellipse at center, #c0b0a0 0%, #4a3a4a 70%);
  border-radius: 20% 20% 10% 10% / 30% 30% 20% 20%;
  box-shadow: inset 0 0 40px #1a1a1a;
  animation: pl-window 8s ease-in-out infinite alternate;
}
.scn-verona-proteus-lament .candle {
  position: absolute; bottom: 25%; left: 30%; width: 8px; height: 20px;
  background: linear-gradient(0deg, #8a6a4a 0%, #f0e0a0 100%);
  border-radius: 50% 50% 20% 20% / 60% 60% 10% 10%;
  box-shadow: 0 0 24px 8px #f0d070, 0 0 48px 16px rgba(240,208,112,0.4);
  animation: pl-candle 3s ease-in-out infinite alternate;
}
.scn-verona-proteus-lament .table {
  position: absolute; bottom: 15%; left: 20%; width: 50%; height: 12%;
  background: linear-gradient(0deg, #3a2a1a 0%, #5a3a2a 100%);
  border-radius: 10px;
  box-shadow: 0 4px 12px #0a0a0a;
  animation: pl-table 15s ease-in-out infinite;
}
.scn-verona-proteus-lament .chair {
  position: absolute; bottom: 12%; left: 40%; width: 14%; height: 18%;
  background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 30% 30%;
  box-shadow: -4px 0 8px #0a0a0a;
}
.scn-verona-proteus-lament .figure {
  position: absolute; bottom: 10%; left: 45%; width: 10%; height: 22%;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 40% 40%;
  transform-origin: bottom center;
  animation: pl-figure 6s ease-in-out infinite;
}
@keyframes pl-wall { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.7; } }
@keyframes pl-window { 0% { background: radial-gradient(ellipse at center, #b0a090 0%, #3a2a3a 70%); } 100% { background: radial-gradient(ellipse at center, #d0c0b0 0%, #5a4a5a 70%); } }
@keyframes pl-candle { 0% { transform: scaleY(1) translateY(0); opacity: 0.9; } 50% { transform: scaleY(1.1) translateY(-2px); opacity: 1; } 100% { transform: scaleY(0.95) translateY(0); opacity: 0.8; } }
@keyframes pl-table { 0% { transform: translateY(0); } 50% { transform: translateY(-1px); } 100% { transform: translateY(0); } }
@keyframes pl-figure { 0% { transform: translateX(0) rotate(-1deg); } 25% { transform: translateX(3px) rotate(1deg); } 50% { transform: translateX(-2px) rotate(0); } 75% { transform: translateX(2px) rotate(1deg); } 100% { transform: translateX(0) rotate(-1deg); } }

.scn-milan-duke-palace {
  background: linear-gradient(180deg, #f0e0c0 0%, #d0b080 100%),
              radial-gradient(ellipse at 20% 40%, #f0d0a0 0%, transparent 50%),
              linear-gradient(0deg, #c0a070 0%, transparent 30%);
}
.scn-milan-duke-palace .hall-wall {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(135deg, #e0c8a8 0%, #b89878 100%);
  border-radius: 0 0 20% 20%;
  animation: dp-wall 10s ease-in-out infinite;
}
.scn-milan-duke-palace .floor-tiles {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: repeating-linear-gradient(45deg, #d0b090 0px, #d0b090 5px, #c0a080 5px, #c0a080 10px);
  border-radius: 20% 20% 0 0 / 10% 10% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.2);
}
.scn-milan-duke-palace .column {
  position: absolute; bottom: 10%; left: 8%; width: 6%; height: 60%;
  background: linear-gradient(90deg, #f0d8b8 0%, #d0b898 50%, #f0d8b8 100%);
  border-radius: 20% / 40%;
  box-shadow: 2px 0 10px rgba(0,0,0,0.2);
  animation: dp-column 20s ease-in-out infinite alternate;
}
.scn-milan-duke-palace .throne {
  position: absolute; bottom: 15%; left: 38%; width: 20%; height: 30%;
  background: linear-gradient(180deg, #f0c878 0%, #c89848 100%);
  border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%;
  box-shadow: 0 6px 20px rgba(0,0,0,0.3);
  animation: dp-throne 5s ease-in-out infinite;
}
.scn-milan-duke-palace .figure-val {
  position: absolute; bottom: 10%; left: 35%; width: 12%; height: 25%;
  background: linear-gradient(180deg, #2040a0 0%, #102070 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 40% 40%;
  transform-origin: bottom center;
  animation: dp-val 3s ease-in-out infinite alternate;
}
.scn-milan-duke-palace .glove {
  position: absolute; bottom: 32%; left: 30%; width: 6%; height: 8%;
  background: radial-gradient(circle, #e8c8a0 0%, #c09870 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  box-shadow: 0 2px 6px rgba(0,0,0,0.3);
  animation: dp-glove 2s ease-in-out infinite;
}
.scn-milan-duke-palace .figure-speed {
  position: absolute; bottom: 10%; right: 20%; width: 10%; height: 22%;
  background: linear-gradient(180deg, #307030 0%, #185018 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: dp-speed 4s ease-in-out infinite;
}
@keyframes dp-wall { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.8; } }
@keyframes dp-column { 0% { transform: translateX(0); } 100% { transform: translateX(5px); } }
@keyframes dp-throne { 0% { transform: translateY(0) rotate(-1deg); } 50% { transform: translateY(-5px) rotate(0); } 100% { transform: translateY(0) rotate(1deg); } }
@keyframes dp-val { 0% { transform: translateX(0) rotate(-3deg); } 100% { transform: translateX(8px) rotate(3deg); } }
@keyframes dp-glove { 0% { transform: translateY(0) rotate(0); } 50% { transform: translateY(-10px) rotate(10deg); } 100% { transform: translateY(0) rotate(0); } }
@keyframes dp-speed { 0% { transform: translateX(0) rotate(0); } 25% { transform: translateX(-5px) rotate(-2deg); } 50% { transform: translateX(0) rotate(0); } 75% { transform: translateX(5px) rotate(2deg); } 100% { transform: translateX(0) rotate(0); } }

.scn-milan-silvia-letter {
  background: linear-gradient(180deg, #f8e8d0 0%, #e0c8b0 50%, #c8a888 100%),
              radial-gradient(ellipse at 50% 30%, #f0d8c0 0%, transparent 70%);
}
.scn-milan-silvia-letter .room-wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(135deg, #e8d4b8 0%, #d0b898 100%);
  border-radius: 0 0 30% 30% / 0 0 20% 20%;
  animation: sl-wall 10s ease-in-out infinite alternate;
}
.scn-milan-silvia-letter .desk {
  position: absolute; bottom: 15%; left: 25%; width: 45%; height: 15%;
  background: linear-gradient(0deg, #a08060 0%, #c8a888 100%);
  border-radius: 10px;
  box-shadow: 0 4px 12px rgba(0,0,0,0.2);
}
.scn-milan-silvia-letter .chair {
  position: absolute; bottom: 12%; left: 35%; width: 12%; height: 18%;
  background: linear-gradient(180deg, #a08060 0%, #806040 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 30% 30%;
  box-shadow: -4px 0 8px rgba(0,0,0,0.2);
  animation: sl-chair 12s ease-in-out infinite;
}
.scn-milan-silvia-letter .figure-writer {
  position: absolute; bottom: 10%; left: 38%; width: 10%; height: 22%;
  background: linear-gradient(180deg, #c87040 0%, #a85830 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 40% 40%;
  transform-origin: bottom center;
  animation: sl-writer 4s ease-in-out infinite alternate;
}
.scn-milan-silvia-letter .paper {
  position: absolute; bottom: 22%; left: 40%; width: 14%; height: 10%;
  background: linear-gradient(135deg, #fff8e8 0%, #f0e0c0 100%);
  border-radius: 4px;
  box-shadow: 0 2px 6px rgba(0,0,0,0.2);
  animation: sl-paper 6s ease-in-out infinite;
}
.scn-milan-silvia-letter .inkwell {
  position: absolute; bottom: 20%; left: 35%; width: 6%; height: 8%;
  background: linear-gradient(180deg, #2a1a0a 0%, #1a0a00 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 20% 20%;
  box-shadow: 0 2px 4px rgba(0,0,0,0.4);
}
.scn-milan-silvia-letter .curtain {
  position: absolute; top: 0; right: 0; width: 20%; height: 100%;
  background: linear-gradient(180deg, #c8a080 0%, #a88060 100%);
  border-radius: 0 0 0 60% / 0 0 0 40%;
  animation: sl-curtain 18s ease-in-out infinite alternate;
}
@keyframes sl-wall { 0% { opacity: 0.9; } 100% { opacity: 1; } }
@keyframes sl-chair { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes sl-writer { 0% { transform: translateX(0) rotate(-2deg); } 100% { transform: translateX(3px) rotate(2deg); } }
@keyframes sl-paper { 0% { transform: translateY(0) scale(1); } 50% { transform: translateY(-3px) scale(1.02); } 100% { transform: translateY(0) scale(1); } }
@keyframes sl-curtain { 0% { transform: translateX(0); } 100% { transform: translateX(-8px); } }

.scn-verona-julia-house-parting {
  background: linear-gradient(180deg, #87ceeb 0%, #f0e68c 50%, #ffd700 100%),
              radial-gradient(ellipse at 70% 20%, #fff5cc 0%, transparent 60%);
}
.scn-verona-julia-house-parting .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #87ceeb 0%, #e0e8c0 100%);
  animation: jp-sky 15s ease-in-out infinite alternate;
}
.scn-verona-julia-house-parting .sun {
  position: absolute; top: 8%; right: 15%; width: 12%; height: 12%;
  background: radial-gradient(circle, #fff5cc 0%, #ffd700 50%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 60px 20px #ffd700, 0 0 120px 40px rgba(255,215,0,0.4);
  animation: jp-sun 6s ease-in-out infinite;
}
.scn-verona-julia-house-parting .garden-wall {
  position: absolute; bottom: 20%; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #c8b080 0%, #a89060 100%);
  border-radius: 40% 40% 0 0 / 20% 20% 0 0;
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.2);
  animation: jp-wall 12s ease-in-out infinite;
}
.scn-verona-julia-house-parting .tree {
  position: absolute; bottom: 18%; left: 5%; width: 20%; height: 60%;
  background: linear-gradient(180deg, #4a6a3a 0%, #2a4a1a 100%);
  border-radius: 50% 50% 30% 30% / 70% 70% 40% 40%;
  box-shadow: 0 4px 20px rgba(0,0,0,0.3);
  animation: jp-tree 20s ease-in-out infinite alternate;
}
.scn-verona-julia-house-parting .figure-proteus {
  position: absolute; bottom: 12%; left: 35%; width: 10%; height: 22%;
  background: linear-gradient(180deg, #1a3a6a 0%, #0a1a4a 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 40% 40%;
  transform-origin: bottom center;
  animation: jp-proteus 5s ease-in-out infinite;
}
.scn-verona-julia-house-parting .figure-julia {
  position: absolute; bottom: 12%; left: 50%; width: 10%; height: 22%;
  background: linear-gradient(180deg, #c87040 0%, #a85830 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 40% 40%;
  transform-origin: bottom center;
  animation: jp-julia 5s ease-in-out infinite alternate;
}
.scn-verona-julia-house-parting .ring {
  position: absolute; bottom: 28%; left: 43%; width: 4%; height: 4%;
  background: radial-gradient(circle, #ffd700 0%, #d4a000 100%);
  border-radius: 50%;
  box-shadow: 0 0 12px 4px #ffd700;
  animation: jp-ring 3s ease-in-out infinite;
}
@keyframes jp-sky { 0% { opacity: 0.9; } 100% { opacity: 1; } }
@keyframes jp-sun { 0% { transform: scale(0.95); } 50% { transform: scale(1.05); } 100% { transform: scale(0.95); } }
@keyframes jp-wall { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes jp-tree { 0% { transform: rotate(-1deg); } 100% { transform: rotate(1deg); } }
@keyframes jp-proteus { 0% { transform: translateX(0) rotate(0); } 25% { transform: translateX(-5px) rotate(-2deg); } 50% { transform: translateX(0) rotate(0); } 75% { transform: translateX(3px) rotate(2deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes jp-julia { 0% { transform: translateX(0) rotate(2deg); } 100% { transform: translateX(-3px) rotate(-2deg); } }
@keyframes jp-ring { 0% { transform: scale(1); opacity: 0.8; } 50% { transform: scale(1.2); opacity: 1; } 100% { transform: scale(1); opacity: 0.8; } }

/* mantua-forest-outlaws */
.scn-mantua-forest-outlaws {
  background:
    linear-gradient(180deg, #1a2e1a 0%, #2d4a2d 30%, #1b3b1b 70%) no-repeat,
    radial-gradient(ellipse at 50% 30%, #4a6e3a 0%, transparent 60%);
}
.scn-mantua-forest-outlaws .canopy {
  position: absolute; inset: 0 0 55% 0;
  background: linear-gradient(180deg, #0f2a0f, #1e3b1e);
  border-radius: 0 0 50% 50% / 0 0 30% 30%;
  animation: mfo-canopy 15s ease-in-out infinite alternate;
}
.scn-mantua-forest-outlaws .sunbeam {
  position: absolute; top: 10%; width: 10%; height: 50%;
  background: linear-gradient(180deg, rgba(255,220,140,0.3), transparent);
  filter: blur(6px);
  animation: mfo-beam 6s ease-in-out infinite alternate;
}
.scn-mantua-forest-outlaws .sunbeam-left {
  left: 20%; animation-delay: 0s;
}
.scn-mantua-forest-outlaws .sunbeam-right {
  right: 25%; animation-delay: 2s;
}
.scn-mantua-forest-outlaws .trunk {
  position: absolute; bottom: 30%; width: 8%; height: 50%;
  background: linear-gradient(90deg, #3a2a1a, #4a3a2a);
  border-radius: 20% 20% 0 0;
  animation: mfo-trunk 20s ease-in-out infinite;
}
.scn-mantua-forest-outlaws .trunk-left { left: 12%; }
.scn-mantua-forest-outlaws .trunk-right { right: 15%; }
.scn-mantua-forest-outlaws .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #2a3a1a, #0f1a0f);
  border-radius: 30% 30% 0 0;
}
.scn-mantua-forest-outlaws .outlaw {
  position: absolute; bottom: 22%; width: 12%; height: 35%;
  background: linear-gradient(180deg, #1a1a1a, #0a0a0a);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: mfo-outlaw 4s ease-in-out infinite;
}
.scn-mantua-forest-outlaws .outlaw-1 { left: 30%; }
.scn-mantua-forest-outlaws .outlaw-2 { right: 35%; animation-delay: 1.5s; }
.scn-mantua-forest-outlaws .road {
  position: absolute; bottom: 8%; left: 15%; right: 15%; height: 12%;
  background: linear-gradient(180deg, #5a4a3a, #3a2a1a);
  border-radius: 50%;
  filter: blur(3px);
  animation: mfo-road 12s ease-in-out infinite alternate;
}
@keyframes mfo-canopy {
  0% { opacity: 0.8; transform: scaleY(1) }
  50% { opacity: 1; transform: scaleY(1.05) }
  100% { opacity: 0.85; transform: scaleY(1) }
}
@keyframes mfo-beam {
  0% { opacity: 0.2; transform: translateX(0) scaleX(1) }
  50% { opacity: 0.5; transform: translateX(5px) scaleX(1.1) }
  100% { opacity: 0.3; transform: translateX(-5px) scaleX(0.9) }
}
@keyframes mfo-trunk {
  0% { transform: scaleY(1) }
  50% { transform: scaleY(0.98) translateY(2px) }
  100% { transform: scaleY(1) }
}
@keyframes mfo-outlaw {
  0% { transform: translateX(0) rotate(0deg) }
  25% { transform: translateX(-3px) rotate(-2deg) }
  50% { transform: translateX(0) rotate(0deg) }
  75% { transform: translateX(3px) rotate(2deg) }
  100% { transform: translateX(0) rotate(0deg) }
}
@keyframes mfo-road {
  0% { opacity: 0.5; transform: scaleX(1) }
  50% { opacity: 0.8; transform: scaleX(1.05) }
  100% { opacity: 0.6; transform: scaleX(0.95) }
}

/* milan-silvia-window-music */
.scn-milan-silvia-window-music {
  background:
    linear-gradient(180deg, #2a1a3a 0%, #4a2a5a 30%, #5a3a6a 60%) no-repeat,
    radial-gradient(ellipse at 50% 60%, #6a4a7a 0%, transparent 70%);
}
.scn-milan-silvia-window-music .wall {
  position: absolute; inset: 20% 10% 0 10%;
  background: linear-gradient(180deg, #6a5a6a, #4a3a4a);
  border-radius: 5% 5% 0 0;
  box-shadow: inset 0 0 20px rgba(0,0,0,0.5);
}
.scn-milan-silvia-window-music .window {
  position: absolute; top: 25%; left: 40%; width: 20%; height: 25%;
  background: radial-gradient(circle, #f0c068 0%, #c08040 60%, #6a3a1a);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 0 0 30px 8px rgba(240,192,104,0.4);
  animation: mswm-glow 3s ease-in-out infinite alternate;
}
.scn-milan-silvia-window-music .balcony {
  position: absolute; bottom: 40%; left: 35%; width: 30%; height: 8%;
  background: linear-gradient(180deg, #4a3a3a, #2a1a1a);
  border-radius: 20% 20% 0 0;
  box-shadow: 0 4px 10px rgba(0,0,0,0.6);
}
.scn-milan-silvia-window-music .figure-proteus {
  position: absolute; bottom: 25%; left: 45%; width: 10%; height: 28%;
  background: linear-gradient(180deg, #1a1a2a, #0a0a1a);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: mswm-figure 5s ease-in-out infinite;
}
.scn-milan-silvia-window-music .torch {
  position: absolute; bottom: 20%; right: 25%; width: 4%; height: 10%;
  background: linear-gradient(0deg, #ffa060, #ff8030);
  border-radius: 50% 50% 20% 20%;
  box-shadow: 0 0 40px 15px rgba(255,160,96,0.6), 0 0 80px 30px rgba(255,128,48,0.3);
  animation: mswm-torch 1.5s ease-in-out infinite alternate;
}
.scn-milan-silvia-window-music .vine {
  position: absolute; bottom: 20%; width: 6%; height: 40%;
  background: linear-gradient(180deg, #2a5a2a, #1a3a1a);
  border-radius: 50%;
  animation: mswm-vine 8s ease-in-out infinite alternate;
}
.scn-milan-silvia-window-music .vine-left { left: 20%; transform: rotate(10deg); }
.scn-milan-silvia-window-music .vine-right { right: 20%; transform: rotate(-10deg); animation-delay: 4s; }
.scn-milan-silvia-window-music .music-note {
  position: absolute; width: 4%; height: 4%;
  background: radial-gradient(circle, #ffd080 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(2px);
  animation: mswm-note 6s ease-in-out infinite;
}
.scn-milan-silvia-window-music .note-1 { top: 30%; left: 30%; animation-delay: 0s; }
.scn-milan-silvia-window-music .note-2 { top: 35%; right: 30%; animation-delay: 3s; }
@keyframes mswm-glow {
  0% { box-shadow: 0 0 20px 5px rgba(240,192,104,0.3); opacity: 0.8 }
  50% { box-shadow: 0 0 40px 12px rgba(240,192,104,0.7); opacity: 1 }
  100% { box-shadow: 0 0 25px 7px rgba(240,192,104,0.4); opacity: 0.85 }
}
@keyframes mswm-figure {
  0% { transform: translateX(0) rotate(0deg) }
  25% { transform: translateX(5px) rotate(2deg) }
  50% { transform: translateX(0) rotate(0deg) }
  75% { transform: translateX(-5px) rotate(-2deg) }
  100% { transform: translateX(0) rotate(0deg) }
}
@keyframes mswm-torch {
  0% { transform: scaleY(1); opacity: 0.7 }
  50% { transform: scaleY(1.2); opacity: 1 }
  100% { transform: scaleY(0.9); opacity: 0.8 }
}
@keyframes mswm-vine {
  0% { transform: rotate(10deg) scaleY(1) }
  50% { transform: rotate(15deg) scaleY(1.05) }
  100% { transform: rotate(8deg) scaleY(0.95) }
}
@keyframes mswm-note {
  0% { transform: translateY(0) rotate(0deg); opacity: 0 }
  30% { opacity: 1 }
  50% { transform: translateY(-20px) rotate(20deg); opacity: 1 }
  100% { transform: translateY(-50px) rotate(45deg); opacity: 0 }
}

/* milan-eglamour-silvia-meeting */
.scn-milan-eglamour-silvia-meeting {
  background:
    linear-gradient(180deg, #f0c8a0 0%, #e0a878 30%, #c08060 60%) no-repeat,
    radial-gradient(ellipse at 50% 0%, #ffd8b0 0%, transparent 60%);
}
.scn-milan-eglamour-silvia-meeting .dawn-sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #f0d0c0, #e0b8a0);
  animation: mesm-sky 20s ease-in-out infinite alternate;
}
.scn-milan-eglamour-silvia-meeting .facade {
  position: absolute; inset: 20% 15% 0 15%;
  background: linear-gradient(180deg, #a08070, #806050);
  border-radius: 5% 5% 0 0;
  box-shadow: inset 0 0 30px rgba(0,0,0,0.2);
}
.scn-milan-eglamour-silvia-meeting .window-upper {
  position: absolute; top: 20%; left: 42%; width: 16%; height: 20%;
  background: radial-gradient(circle, #c89570 0%, #a07850 70%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: inset 0 0 15px rgba(0,0,0,0.3), 0 0 20px 4px rgba(200,149,112,0.3);
  animation: mesm-window 8s ease-in-out infinite alternate;
}
.scn-milan-eglamour-silvia-meeting .silvia-figure {
  position: absolute; top: 18%; left: 46%; width: 8%; height: 18%;
  background: linear-gradient(180deg, #3a2a2a, #1a1a1a);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: mesm-figure-up 6s ease-in-out infinite alternate;
}
.scn-milan-eglamour-silvia-meeting .eglamour-figure {
  position: absolute; bottom: 25%; left: 42%; width: 10%; height: 30%;
  background: linear-gradient(180deg, #4a3a3a, #2a1a1a);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: mesm-figure-down 8s ease-in-out infinite;
}
.scn-milan-eglamour-silvia-meeting .morning-glory {
  position: absolute; top: 5%; left: 20%; width: 60%; height: 20%;
  background: radial-gradient(ellipse, rgba(255,200,150,0.4) 0%, transparent 60%);
  filter: blur(10px);
  animation: mesm-glory 15s ease-in-out infinite alternate;
}
.scn-milan-eglamour-silvia-meeting .mist {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(0deg, rgba(200,160,130,0.3), transparent);
  filter: blur(8px);
  animation: mesm-mist 25s ease-in-out infinite alternate;
}
@keyframes mesm-sky {
  0% { opacity: 0.8; filter: brightness(1) }
  50% { opacity: 1; filter: brightness(1.1) }
  100% { opacity: 0.85; filter: brightness(0.95) }
}
@keyframes mesm-window {
  0% { box-shadow: inset 0 0 10px rgba(0,0,0,0.2), 0 0 15px 3px rgba(200,149,112,0.2); opacity: 0.8 }
  50% { box-shadow: inset 0 0 20px rgba(0,0,0,0.4), 0 0 30px 6px rgba(200,149,112,0.5); opacity: 1 }
  100% { box-shadow: inset 0 0 12px rgba(0,0,0,0.25), 0 0 18px 4px rgba(200,149,112,0.3); opacity: 0.85 }
}
@keyframes mesm-figure-up {
  0% { transform: translateY(0) rotate(0deg) }
  50% { transform: translateY(-3px) rotate(2deg) }
  100% { transform: translateY(0) rotate(-1deg) }
}
@keyframes mesm-figure-down {
  0% { transform: translateY(0) rotate(0deg) }
  25% { transform: translateY(2px) rotate(3deg) }
  50% { transform: translateY(0) rotate(0deg) }
  75% { transform: translateY(-2px) rotate(-3deg) }
  100% { transform: translateY(0) rotate(0deg) }
}
@keyframes mesm-glory {
  0% { opacity: 0.3; transform: scale(1) }
  50% { opacity: 0.6; transform: scale(1.1) }
  100% { opacity: 0.4; transform: scale(0.95) }
}
@keyframes mesm-mist {
  0% { opacity: 0.3; transform: translateY(0) }
  50% { opacity: 0.5; transform: translateY(-5px) }
  100% { opacity: 0.4; transform: translateY(0) }
}

/* milan-launce-dog-tale */
.scn-milan-launce-dog-tale {
  background:
    linear-gradient(180deg, #f0e0c0 0%, #d0b090 50%) no-repeat,
    radial-gradient(ellipse at 50% 100%, #e0c090 0%, transparent 70%);
}
.scn-milan-launce-dog-tale .street-bg {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(180deg, #d0c0a0, #a09080);
  border-radius: 0 0 30% 30%;
  animation: mldt-sky 12s ease-in-out infinite alternate;
}
.scn-milan-launce-dog-tale .building {
  position: absolute; bottom: 25%; width: 20%; height: 50%;
  background: linear-gradient(180deg, #b0a090, #807060);
  border-radius: 5% 5% 0 0;
  box-shadow: inset 0 0 20px rgba(0,0,0,0.2);
  animation: mldt-building 10s ease-in-out infinite alternate;
}
.scn-milan-launce-dog-tale .building-left { left: 10%; }
.scn-milan-launce-dog-tale .building-right { right: 10%; animation-delay: 5s; }
.scn-milan-launce-dog-tale .launce-figure {
  position: absolute; bottom: 15%; left: 30%; width: 12%; height: 35%;
  background: linear-gradient(180deg, #5a4a3a, #3a2a1a);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: mldt-launce 3s ease-in-out infinite;
}
.scn-milan-launce-dog-tale .dog-figure {
  position: absolute; bottom: 12%; left: 48%; width: 10%; height: 20%;
  background: linear-gradient(180deg, #6a5a4a, #4a3a2a);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: mldt-dog 1.6s ease-in-out infinite alternate;
}
.scn-milan-launce-dog-tale .puddle {
  position: absolute; bottom: 8%; left: 40%; width: 15%; height: 5%;
  background: radial-gradient(ellipse, #a0c0d0 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(2px);
  animation: mldt-puddle 6s ease-in-out infinite alternate;
}
.scn-milan-launce-dog-tale .bone {
  position: absolute; bottom: 18%; right: 35%; width: 6%; height: 10%;
  background: linear-gradient(180deg, #d0c0a0, #b0a080);
  border-radius: 30% 30% 50% 50%;
  transform: rotate(-20deg);
  animation: mldt-bone 4s ease-in-out infinite;
}
.scn-milan-launce-dog-tale .dust {
  position: absolute; bottom: 20%; width: 4%; height: 4%;
  background: radial-gradient(circle, rgba(180,160,140,0.6), transparent);
  border-radius: 50%;
  filter: blur(3px);
  animation: mldt-dust 5s ease-in-out infinite;
}
.scn-milan-launce-dog-tale .dust-1 { left: 35%; animation-delay: 0s; }
.scn-milan-launce-dog-tale .dust-2 { left: 55%; animation-delay: 2.5s; }
@keyframes mldt-sky {
  0% { opacity: 0.8; filter: brightness(1) }
  50% { opacity: 1; filter: brightness(1.15) }
  100% { opacity: 0.85; filter: brightness(0.95) }
}
@keyframes mldt-building {
  0% { transform: scaleY(1) translateY(0) }
  50% { transform: scaleY(0.98) translateY(-2px) }
  100% { transform: scaleY(1) translateY(0) }
}
@keyframes mldt-launce {
  0% { transform: translateX(0) rotate(0deg) scale(1) }
  20% { transform: translateX(5px) rotate(3deg) scale(1.02) }
  40% { transform: translateX(-3px) rotate(-2deg) scale(0.98) }
  60% { transform: translateX(4px) rotate(2deg) scale(1.01) }
  80% { transform: translateX(-4px) rotate(-1deg) scale(0.99) }
  100% { transform: translateX(0) rotate(0deg) scale(1) }
}
@keyframes mldt-dog {
  0% { transform: rotate(-5deg) scaleY(1) }
  100% { transform: rotate(5deg) scaleY(1.05) }
}
@keyframes mldt-puddle {
  0% { transform: scaleX(1) translateY(0); opacity: 0.6 }
  50% { transform: scaleX(1.1) translateY(2px); opacity: 0.8 }
  100% { transform: scaleX(0.95) translateY(0); opacity: 0.7 }
}
@keyframes mldt-bone {
  0% { transform: rotate(-20deg) translateY(0) }
  25% { transform: rotate(-15deg) translateY(-3px) }
  50% { transform: rotate(-10deg) translateY(-5px) }
  75% { transform: rotate(-5deg) translateY(-2px) }
  100% { transform: rotate(-20deg) translateY(0) }
}
@keyframes mldt-dust {
  0% { transform: translateY(0) translateX(0); opacity: 0.5 }
  50% { transform: translateY(-10px) translateX(5px); opacity: 0.2 }
  100% { transform: translateY(0) translateX(0); opacity: 0.5 }
}

/* === verona-proteus-speed === */
.scn-verona-proteus-speed {
  background: linear-gradient(180deg, #7ec8e3 0%, #f5d98a 50%, #f0b060 100%), radial-gradient(ellipse at 50% 100%, #f0b060 0%, transparent 70%);
}
.scn-verona-proteus-speed .sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #b0daf0 0%, transparent 100%);
  animation: vps-sky 14s ease-in-out infinite alternate;
}
.scn-verona-proteus-speed .hills {
  position: absolute; bottom: 30%; left: 0; right: 0; height: 22%;
  background: linear-gradient(180deg, #6a9a4a 0%, #3a6a2a 100%);
  border-radius: 30% 70% 0 0 / 70% 60% 0 0;
  box-shadow: inset 0 6px 15px rgba(0,0,0,0.3);
  animation: vps-hills 20s ease-in-out infinite alternate;
}
.scn-verona-proteus-speed .path {
  position: absolute; bottom: 25%; left: 20%; width: 60%; height: 12%;
  background: linear-gradient(180deg, #c8a860 0%, #a08040 100%);
  border-radius: 20% 20% 40% 40% / 50% 50% 100% 100%;
  transform: perspective(200px) rotateX(50deg);
  animation: vps-path 12s ease-in-out infinite alternate;
}
.scn-verona-proteus-speed .shepherd {
  position: absolute; bottom: 26%; left: 30%; width: 24px; height: 50px;
  background: linear-gradient(180deg, #3a3a2a 0%, #1a1a10 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vps-walk 6s ease-in-out infinite;
}
.scn-verona-proteus-speed .sheep {
  position: absolute; bottom: 24%; left: 50%; width: 28px; height: 20px;
  background: radial-gradient(circle at 30% 40%, #e8dcc8 0%, #c8b898 70%);
  border-radius: 50% 50% 40% 40%;
  animation: vps-sheep 8s ease-in-out infinite;
  filter: drop-shadow(0 2px 2px rgba(0,0,0,0.3));
}
.scn-verona-proteus-speed .cloud-a,
.scn-verona-proteus-speed .cloud-b {
  position: absolute; 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(8px);
}
.scn-verona-proteus-speed .cloud-a { top: 12%; left: 10%; animation: vps-drift-a 40s linear infinite; }
.scn-verona-proteus-speed .cloud-b { top: 20%; right: 5%; width: 60px; height: 14px; animation: vps-drift-b 50s linear infinite reverse; }

@keyframes vps-sky     { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.7; } }
@keyframes vps-hills   { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes vps-path    { 0% { transform: perspective(200px) rotateX(50deg) translateX(0); } 50% { transform: perspective(200px) rotateX(48deg) translateX(4px); } 100% { transform: perspective(200px) rotateX(50deg) translateX(0); } }
@keyframes vps-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 vps-sheep   { 0% { transform: translateX(0) rotate(-3deg); } 50% { transform: translateX(10px) rotate(3deg); } 100% { transform: translateX(20px) rotate(-2deg); } }
@keyframes vps-drift-a { 0% { transform: translateX(-40px); } 100% { transform: translateX(120vw); } }
@keyframes vps-drift-b { 0% { transform: translateX(0); } 100% { transform: translateX(-110vw); } }

/* === verona-letter-banter === */
.scn-verona-letter-banter {
  background: linear-gradient(180deg, #8fd0e0 0%, #c8e080 60%, #b0b050 100%), radial-gradient(ellipse at 50% 100%, #b0b050 0%, transparent 60%);
}
.scn-verona-letter-banter .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #a0d8e8 0%, transparent 100%);
  animation: vlb-sky 16s ease-in-out infinite alternate;
}
.scn-verona-letter-banter .pasture {
  position: absolute; bottom: 15%; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #6aaa40 0%, #4a8a20 100%);
  border-radius: 30% 20% 0 0 / 40% 30% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.2);
  animation: vlb-pasture 20s ease-in-out infinite alternate;
}
.scn-verona-letter-banter .fence {
  position: absolute; bottom: 32%; left: 30%; width: 40%; height: 8%;
  background: linear-gradient(90deg, #6a4a2a 0%, #8a6a4a 50%, #6a4a2a 100%);
  border-radius: 4px;
  box-shadow: 0 2px 4px rgba(0,0,0,0.3);
  animation: vlb-fence 10s ease-in-out infinite alternate;
}
.scn-verona-letter-banter .sheep {
  position: absolute; bottom: 30%; left: 38%; width: 30px; height: 22px;
  background: radial-gradient(circle at 30% 40%, #e8dcc8 0%, #c8b898 70%);
  border-radius: 50% 50% 40% 40%;
  animation: vlb-sheep-jump 3s ease-in-out infinite;
  filter: drop-shadow(0 2px 2px rgba(0,0,0,0.3));
}
.scn-verona-letter-banter .stick {
  position: absolute; bottom: 32%; left: 25%; width: 4px; height: 30px;
  background: linear-gradient(180deg, #5a3a1a 0%, #3a2a0a 100%);
  border-radius: 2px;
  transform-origin: bottom center;
  animation: vlb-stick 5s ease-in-out infinite;
}
.scn-verona-letter-banter .figure {
  position: absolute; bottom: 28%; left: 20%; width: 20px; height: 44px;
  background: linear-gradient(180deg, #2a3a2a 0%, #1a2a1a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vlb-figure 7s ease-in-out infinite;
}
.scn-verona-letter-banter .cloud-c {
  position: absolute; top: 18%; left: 20%; width: 70px; height: 16px;
  background: linear-gradient(180deg, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0.05) 100%);
  border-radius: 50%; filter: blur(6px);
  animation: vlb-drift 45s linear infinite;
}

@keyframes vlb-sky   { 0% { opacity: 0.85; } 50% { opacity: 1; } 100% { opacity: 0.75; } }
@keyframes vlb-pasture { 0% { transform: translateY(0) scaleY(1); } 50% { transform: translateY(-2px) scaleY(1.02); } 100% { transform: translateY(0) scaleY(1); } }
@keyframes vlb-fence { 0% { transform: translateY(0) skewX(-2deg); } 50% { transform: translateY(-1px) skewX(0deg); } 100% { transform: translateY(0) skewX(2deg); } }
@keyframes vlb-sheep-jump { 0% { transform: translateY(0) rotate(-5deg); } 30% { transform: translateY(-8px) rotate(0deg); } 50% { transform: translateY(0) rotate(5deg); } 70% { transform: translateY(-6px) rotate(-2deg); } 100% { transform: translateY(0) rotate(-3deg); } }
@keyframes vlb-stick  { 0% { transform: rotate(-10deg); } 50% { transform: rotate(10deg); } 100% { transform: rotate(-10deg); } }
@keyframes vlb-figure { 0% { transform: translateX(0) translateY(0) rotate(-2deg); } 25% { transform: translateX(5px) translateY(-1px) rotate(1deg); } 50% { transform: translateX(10px) translateY(0) rotate(-1deg); } 75% { transform: translateX(15px) translateY(-1px) rotate(2deg); } 100% { transform: translateX(20px) translateY(0) rotate(0deg); } }
@keyframes vlb-drift  { 0% { transform: translateX(-30px); } 100% { transform: translateX(130vw); } }

/* === verona-speed-report === */
.scn-verona-speed-report {
  background: linear-gradient(180deg, #8ec8e0 0%, #d8c080 50%, #c89860 100%), radial-gradient(ellipse at 30% 100%, #c89860 0%, transparent 60%);
}
.scn-verona-speed-report .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #a0d0e8 0%, transparent 100%);
  animation: vsr-sky 18s ease-in-out infinite alternate;
}
.scn-verona-speed-report .road {
  position: absolute; bottom: 20%; left: 10%; width: 80%; height: 14%;
  background: linear-gradient(180deg, #a08050 0%, #806040 100%);
  border-radius: 30% 30% 60% 60% / 50% 50% 100% 100%;
  transform: perspective(300px) rotateX(60deg);
  animation: vsr-road 15s ease-in-out infinite alternate;
}
.scn-verona-speed-report .figure {
  position: absolute; bottom: 22%; left: 35%; width: 22px; height: 48px;
  background: linear-gradient(180deg, #2a3a2a 0%, #1a2a1a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vsr-walk 5s ease-in-out infinite;
}
.scn-verona-speed-report .letter {
  position: absolute; bottom: 30%; left: 44%; width: 14px; height: 10px;
  background: linear-gradient(135deg, #f0e0c0 0%, #c8b080 100%);
  border-radius: 2px;
  box-shadow: 0 1px 3px rgba(0,0,0,0.3);
  animation: vsr-letter 4s ease-in-out infinite alternate;
  transform-origin: center bottom;
}
.scn-verona-speed-report .castle {
  position: absolute; bottom: 30%; right: 15%; width: 60px; height: 80px;
  background: linear-gradient(180deg, #7a6a5a 0%, #4a3a2a 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: 0 8px 16px rgba(0,0,0,0.4);
  animation: vsr-castle 25s ease-in-out infinite alternate;
  clip-path: polygon(0% 100%, 0% 30%, 15% 30%, 15% 0%, 30% 0%, 30% 20%, 40% 20%, 40% 0%, 60% 0%, 60% 20%, 70% 20%, 70% 0%, 85% 0%, 85% 30%, 100% 30%, 100% 100%);
}
.scn-verona-speed-report .cloud-d,
.scn-verona-speed-report .cloud-e {
  position: absolute; width: 60px; height: 16px;
  background: linear-gradient(180deg, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0.1) 100%);
  border-radius: 50%; filter: blur(5px);
}
.scn-verona-speed-report .cloud-d { top: 14%; left: 5%; animation: vsr-drift-d 35s linear infinite; }
.scn-verona-speed-report .cloud-e { top: 22%; right: 2%; width: 50px; height: 12px; animation: vsr-drift-e 45s linear infinite reverse; }

@keyframes vsr-sky   { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.7; } }
@keyframes vsr-road  { 0% { transform: perspective(300px) rotateX(60deg) translateX(0); } 50% { transform: perspective(300px) rotateX(58deg) translateX(3px); } 100% { transform: perspective(300px) rotateX(60deg) translateX(0); } }
@keyframes vsr-walk  { 0% { transform: translateX(0) translateY(0) rotate(-2deg); } 25% { transform: translateX(6px) translateY(-2px) rotate(1deg); } 50% { transform: translateX(12px) translateY(0) rotate(-1deg); } 75% { transform: translateX(18px) translateY(-2px) rotate(2deg); } 100% { transform: translateX(24px) translateY(0) rotate(0deg); } }
@keyframes vsr-letter { 0% { transform: rotate(-10deg) translateY(0); } 50% { transform: rotate(5deg) translateY(-2px); } 100% { transform: rotate(-5deg) translateY(0); } }
@keyframes vsr-castle { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.85; } }
@keyframes vsr-drift-d { 0% { transform: translateX(-30px); } 100% { transform: translateX(130vw); } }
@keyframes vsr-drift-e { 0% { transform: translateX(0); } 100% { transform: translateX(-120vw); } }

/* === verona-julia-garden-intro === */
.scn-verona-julia-garden-intro {
  background: linear-gradient(180deg, #b8d8e8 0%, #f0e8c0 50%, #d8c080 100%), radial-gradient(ellipse at 50% 100%, #d8c080 0%, transparent 70%);
}
.scn-verona-julia-garden-intro .sky {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(180deg, #c0e0f0 0%, transparent 100%);
  animation: vjg-sky 20s ease-in-out infinite alternate;
}
.scn-verona-julia-garden-intro .wall {
  position: absolute; bottom: 25%; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #b0a080 0%, #908060 100%);
  border-radius: 0 0 20% 20% / 0 0 30% 30%;
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.2);
  animation: vjg-wall 30s ease-in-out infinite alternate;
}
.scn-verona-julia-garden-intro .tree {
  position: absolute; top: 10%; left: 25%; width: 80px; height: 120px;
  background: linear-gradient(180deg, #3a6a2a 0%, #1a4a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.3);
  animation: vjg-tree 12s ease-in-out infinite alternate;
}
.scn-verona-julia-garden-intro .julia,
.scn-verona-julia-garden-intro .lucetta {
  position: absolute; bottom: 35%; width: 22px; height: 50px;
  background: linear-gradient(180deg, #c8b090 0%, #a08870 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
}
.scn-verona-julia-garden-intro .julia { left: 35%; animation: vjg-julia 8s ease-in-out infinite; }
.scn-verona-julia-garden-intro .lucetta { left: 50%; animation: vjg-lucetta 9s ease-in-out infinite reverse; }
.scn-verona-julia-garden-intro .flower-a,
.scn-verona-julia-garden-intro .flower-b {
  position: absolute; bottom: 32%; width: 10px; height: 12px;
  background: radial-gradient(circle at 50% 30%, #f0b0c0 0%, #c07080 70%);
  border-radius: 50% 50% 40% 40%;
  animation: vjg-flower 3s ease-in-out infinite alternate;
}
.scn-verona-julia-garden-intro .flower-a { left: 28%; animation-delay: 0s; }
.scn-verona-julia-garden-intro .flower-b { left: 60%; animation-delay: 1.5s; width: 12px; height: 14px; background: radial-gradient(circle at 50% 30%, #f0a080 0%, #c06060 70%); }
.scn-verona-julia-garden-intro .gate {
  position: absolute; bottom: 28%; left: 55%; width: 20px; height: 40px;
  background: linear-gradient(180deg, #6a4a2a 0%, #4a2a0a 100%);
  border-radius: 2px 2px 0 0;
  box-shadow: 0 2px 4px rgba(0,0,0,0.4);
  animation: vjg-gate 14s ease-in-out infinite alternate;
}

@keyframes vjg-sky    { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.7; } }
@keyframes vjg-wall   { 0% { transform: scaleY(1); } 50% { transform: scaleY(1.02); } 100% { transform: scaleY(1); } }
@keyframes vjg-tree   { 0% { transform: translateY(0) rotate(-2deg); } 50% { transform: translateY(-3px) rotate(1deg); } 100% { transform: translateY(0) rotate(2deg); } }
@keyframes vjg-julia  { 0% { transform: translateX(0) translateY(0) rotate(-2deg); } 25% { transform: translateX(3px) translateY(-1px) rotate(1deg); } 50% { transform: translateX(6px) translateY(0) rotate(-1deg); } 75% { transform: translateX(9px) translateY(-1px) rotate(2deg); } 100% { transform: translateX(12px) translateY(0) rotate(0deg); } }
@keyframes vjg-lucetta { 0% { transform: translateX(0) translateY(0) rotate(2deg); } 25% { transform: translateX(-3px) translateY(-1px) rotate(-1deg); } 50% { transform: translateX(-6px) translateY(0) rotate(1deg); } 75% { transform: translateX(-9px) translateY(-1px) rotate(-2deg); } 100% { transform: translateX(-12px) translateY(0) rotate(0deg); } }
@keyframes vjg-flower { 0% { transform: rotate(-10deg) scaleY(1); } 50% { transform: rotate(5deg) scaleY(1.1); } 100% { transform: rotate(-10deg) scaleY(1); } }
@keyframes vjg-gate   { 0% { transform: rotateY(0deg); } 50% { transform: rotateY(10deg); } 100% { transform: rotateY(0deg); } }

/* milan-julia-as-page – warm sunlit interior */
.scn-milan-julia-as-page {
  background:
    linear-gradient(180deg, #faebd7 0%, #f5deb3 40%, #deb887 100%),
    radial-gradient(ellipse at 70% 20%, #fff8dc 0%, transparent 60%);
}
.scn-milan-julia-as-page .room-bg {
  position: absolute; inset: 0;
  background: linear-gradient(135deg, #f5deb3 0%, #e6c29a 60%, #d2a679 100%);
  animation: mjap-shade 10s ease-in-out infinite alternate;
}
.scn-milan-julia-as-page .window-pane {
  position: absolute; top: 8%; left: 12%; width: 40%; height: 50%;
  background: linear-gradient(135deg, #fff8dc 0%, #f0e68c 50%, #bdb76b 100%);
  border-radius: 4% / 6%;
  box-shadow: inset 0 0 40px rgba(255,255,224,0.5);
  animation: mjap-pane 6s ease-in-out infinite alternate;
}
.scn-milan-julia-as-page .sunbeam {
  position: absolute; top: 8%; left: 12%; width: 30%; height: 70%;
  background: linear-gradient(135deg, rgba(255,255,224,0.6) 0%, rgba(255,255,224,0) 80%);
  clip-path: polygon(0 0, 100% 20%, 80% 100%, 0% 100%);
  animation: mjap-beam 12s linear infinite;
}
.scn-milan-julia-as-page .figure-page {
  position: absolute; bottom: 18%; left: 35%; width: 22px; height: 56px;
  background: linear-gradient(180deg, #8b7355 0%, #5c4033 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 30% 30%;
  transform-origin: bottom center;
  animation: mjap-walk 4s ease-in-out infinite;
}
.scn-milan-julia-as-page .token-ring {
  position: absolute; bottom: 30%; left: 48%; width: 10px; height: 10px;
  background: radial-gradient(circle, #ffd700 0%, #b8860b 100%);
  border-radius: 50%;
  box-shadow: 0 0 12px 3px #ffd700, 0 0 24px 6px rgba(255,215,0,0.4);
  animation: mjap-ring 2s ease-in-out infinite alternate;
}
.scn-milan-julia-as-page .chair {
  position: absolute; bottom: 12%; right: 20%; width: 40px; height: 50px;
  background: linear-gradient(180deg, #a0522d 0%, #6b3a2a 100%);
  border-radius: 6% / 4%;
  box-shadow: 2px 4px 8px rgba(0,0,0,0.3);
  animation: mjap-chair 8s ease-in-out infinite alternate;
}
.scn-milan-julia-as-page .cushion {
  position: absolute; bottom: 14%; right: 24%; width: 24px; height: 16px;
  background: radial-gradient(circle at 40% 30%, #c08040 0%, #8b5a2b 100%);
  border-radius: 40% / 60%;
  animation: mjap-cushion 4s ease-in-out infinite;
}
@keyframes mjap-shade { 0% { opacity:0.9 } 50% { opacity:1 } 100% { opacity:0.95 } }
@keyframes mjap-pane { 0% { filter:brightness(0.95) } 100% { filter:brightness(1.05) } }
@keyframes mjap-beam { 0% { transform: translateX(-5px) rotate(-1deg) scaleY(1) } 50% { transform: translateX(5px) rotate(1deg) scaleY(1.02) } 100% { transform: translateX(-5px) rotate(-1deg) scaleY(1) } }
@keyframes mjap-walk { 0% { transform: translateY(0) rotate(-2deg) } 25% { transform: translateY(-2px) rotate(0deg) } 50% { transform: translateY(0) rotate(2deg) } 75% { transform: translateY(-1px) rotate(0deg) } 100% { transform: translateY(0) rotate(-2deg) } }
@keyframes mjap-ring { 0% { transform: scale(0.9) rotate(0deg); opacity:0.7 } 100% { transform: scale(1.2) rotate(15deg); opacity:1 } }
@keyframes mjap-chair { 0% { transform: translateY(0) scaleY(1) } 50% { transform: translateY(-1px) scaleY(1.01) } 100% { transform: translateY(0) scaleY(1) } }
@keyframes mjap-cushion { 0% { transform: rotate(-2deg) scaleX(1); box-shadow:0 2px 4px rgba(0,0,0,0.2) } 50% { transform: rotate(2deg) scaleX(1.02); box-shadow:0 4px 8px rgba(0,0,0,0.3) } 100% { transform: rotate(-2deg) scaleX(1); box-shadow:0 2px 4px rgba(0,0,0,0.2) } }

/* milan-julia-page-silvia – bright interior with two figures */
.scn-milan-julia-page-silvia {
  background:
    linear-gradient(180deg, #fff8dc 0%, #f5deb3 40%, #deb887 100%),
    radial-gradient(ellipse at 50% 20%, #ffffe0 0%, transparent 70%);
}
.scn-milan-julia-page-silvia .hall-bg {
  position: absolute; inset: 0;
  background: linear-gradient(90deg, #fdf5e6 0%, #f5deb3 50%, #fdf5e6 100%);
  animation: mjps-bg 12s ease-in-out infinite;
}
.scn-milan-julia-page-silvia .pillar-l {
  position: absolute; top: 12%; left: 8%; width: 8%; height: 70%;
  background: linear-gradient(180deg, #d2b48c 0%, #c4a882 100%);
  border-radius: 4%;
  box-shadow: 3px 0 8px rgba(0,0,0,0.15);
  animation: mjps-pillar 10s ease-in-out infinite alternate;
}
.scn-milan-julia-page-silvia .pillar-r {
  position: absolute; top: 12%; right: 8%; width: 8%; height: 70%;
  background: linear-gradient(180deg, #d2b48c 0%, #c4a882 100%);
  border-radius: 4%;
  box-shadow: -3px 0 8px rgba(0,0,0,0.15);
  animation: mjps-pillar 10s ease-in-out infinite alternate-reverse;
}
.scn-milan-julia-page-silvia .figure-silvia {
  position: absolute; bottom: 20%; left: 28%; width: 24px; height: 64px;
  background: linear-gradient(180deg, #f7e1c0 0%, #d4a574 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 30% 30%;
  transform-origin: bottom center;
  animation: mjps-silvia 5s ease-in-out infinite;
}
.scn-milan-julia-page-silvia .figure-page-b {
  position: absolute; bottom: 18%; left: 48%; width: 20px; height: 56px;
  background: linear-gradient(180deg, #8b7355 0%, #5c4033 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 30% 30%;
  transform-origin: bottom center;
  animation: mjps-page 5s ease-in-out infinite 0.5s;
}
.scn-milan-julia-page-silvia .window-light {
  position: absolute; top: 6%; left: 35%; width: 30%; height: 40%;
  background: radial-gradient(ellipse at 50% 0%, #fff8dc 0%, #f0e68c 60%, transparent);
  filter: blur(12px);
  animation: mjps-light 8s ease-in-out infinite alternate;
}
.scn-milan-julia-page-silvia .floor-tile {
  position: absolute; bottom: 0; left: 0; width: 100%; height: 18%;
  background: repeating-linear-gradient(45deg, #deb887 0px, #deb887 30px, #d2b48c 30px, #d2b48c 60px);
  box-shadow: inset 0 4px 8px rgba(0,0,0,0.1);
  animation: mjps-floor 15s linear infinite;
}
@keyframes mjps-bg { 0% { opacity:0.95 } 50% { opacity:1 } 100% { opacity:0.95 } }
@keyframes mjps-pillar { 0% { transform: scaleX(1) translateY(0) } 50% { transform: scaleX(1.02) translateY(-2px) } 100% { transform: scaleX(1) translateY(0) } }
@keyframes mjps-silvia { 0% { transform: translateY(0) rotate(0deg) } 25% { transform: translateY(-1px) rotate(2deg) } 50% { transform: translateY(0) rotate(0deg) } 75% { transform: translateY(-1px) rotate(-2deg) } 100% { transform: translateY(0) rotate(0deg) } }
@keyframes mjps-page { 0% { transform: translateY(0) rotate(0deg) scaleX(1) } 25% { transform: translateY(-1px) rotate(-2deg) scaleX(0.98) } 50% { transform: translateY(0) rotate(0deg) scaleX(1) } 75% { transform: translateY(-1px) rotate(2deg) scaleX(1.02) } 100% { transform: translateY(0) rotate(0deg) scaleX(1) } }
@keyframes mjps-light { 0% { opacity:0.6; transform: scaleY(0.9) } 100% { opacity:1; transform: scaleY(1.1) } }
@keyframes mjps-floor { 0% { background-position: 0 0 } 100% { background-position: 60px 0 } }

/* milan-abbey-eglamour – calm dusk at an abbey */
.scn-milan-abbey-eglamour {
  background:
    linear-gradient(180deg, #2c1b4d 0%, #4a2c6a 30%, #7a5c91 60%, #b8a0c0 100%),
    radial-gradient(ellipse at 60% 20%, #6a4a8a 0%, transparent 70%);
}
.scn-milan-abbey-eglamour .dusk-sky {
  position: absolute; inset: 0 0 60% 0;
  background: linear-gradient(0deg, #5c3d7a 0%, #3a234a 50%, #1a0f2e 100%);
  animation: mae-dusk 20s ease-in-out infinite alternate;
}
.scn-milan-abbey-eglamour .abbey-wall {
  position: absolute; bottom: 34%; left: 12%; width: 76%; height: 40%;
  background: linear-gradient(180deg, #6b5b4a 0%, #4a3d31 100%);
  border-radius: 12% 12% 4% 4% / 30% 30% 10% 10%;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.6), 0 4px 12px rgba(0,0,0,0.3);
  animation: mae-wall 18s ease-in-out infinite;
}
.scn-milan-abbey-eglamour .archway {
  position: absolute; bottom: 34%; left: 38%; width: 24%; height: 40%;
  background: linear-gradient(135deg, #3a2d22 0%, #241c13 100%);
  border-radius: 50% 50% 0 0 / 60% 60% 0 0;
  box-shadow: inset 0 -4px 10px rgba(0,0,0,0.8);
  animation: mae-arch 16s ease-in-out infinite alternate;
}
.scn-milan-abbey-eglamour .candle-glow {
  position: absolute; bottom: 36%; left: 50%; width: 10px; height: 14px;
  background: radial-gradient(circle, #ffd700 0%, #b8860b 80%);
  border-radius: 40% 40% 20% 20% / 60% 60% 20% 20%;
  box-shadow: 0 0 20px 8px #ffcc00, 0 0 40px 15px rgba(255,204,0,0.5);
  animation: mae-candle 3s ease-in-out infinite alternate;
}
.scn-milan-abbey-eglamour .figure-eglamour {
  position: absolute; bottom: 30%; left: 46%; width: 20px; height: 52px;
  background: linear-gradient(180deg, #2a1f1a 0%, #0d0806 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 30% 30%;
  transform-origin: bottom center;
  animation: mae-figure 6s ease-in-out infinite;
}
.scn-milan-abbey-eglamour .cloak {
  position: absolute; bottom: 24%; left: 42%; width: 28px; height: 36px;
  background: radial-gradient(ellipse at 50% 30%, #4a3d31 0%, #241c13 100%);
  border-radius: 40% 30% 30% 40% / 70% 60% 40% 30%;
  filter: blur(1px);
  animation: mae-cloak 7s ease-in-out infinite alternate;
}
.scn-milan-abbey-eglamour .ground-mist {
  position: absolute; bottom: 0; left: 0; width: 100%; height: 30%;
  background: linear-gradient(0deg, rgba(150,130,170,0.3) 0%, rgba(200,180,220,0.1) 50%, transparent 100%);
  filter: blur(16px);
  animation: mae-mist 25s linear infinite;
}
@keyframes mae-dusk { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.85 } }
@keyframes mae-wall { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.01) } 100% { transform: scaleY(1) } }
@keyframes mae-arch { 0% { transform: scaleX(1) } 50% { transform: scaleX(1.02) } 100% { transform: scaleX(1) } }
@keyframes mae-candle { 0% { transform: scale(0.9) rotate(-3deg) translateY(0); opacity:0.7 } 25% { transform: scale(1.05) rotate(2deg) translateY(-1px); opacity:1 } 75% { transform: scale(0.95) rotate(-1deg) translateY(0); opacity:0.9 } 100% { transform: scale(1.1) rotate(3deg) translateY(-2px); opacity:0.8 } }
@keyframes mae-figure { 0% { transform: translateY(0) rotate(0deg) } 25% { transform: translateY(-1px) rotate(-1deg) } 50% { transform: translateY(0) rotate(0deg) } 75% { transform: translateY(-1px) rotate(1deg) } 100% { transform: translateY(0) rotate(0deg) } }
@keyframes mae-cloak { 0% { transform: rotate(-2deg) scaleX(0.98) } 50% { transform: rotate(0deg) scaleX(1) } 100% { transform: rotate(2deg) scaleX(1.02) } }
@keyframes mae-mist { 0% { transform: translateY(0) scaleX(1) } 50% { transform: translateY(-10px) scaleX(1.1) } 100% { transform: translateY(0) scaleX(1) } }

/* milan-duke-follows – tense bright interior with three figures */
.scn-milan-duke-follows {
  background:
    linear-gradient(180deg, #f4e4c1 0%, #e0c9a3 40%, #c4a77d 100%),
    radial-gradient(ellipse at 50% 30%, #ffe6b3 0%, transparent 70%);
}
.scn-milan-duke-follows .palace-bg {
  position: absolute; inset: 0;
  background: linear-gradient(135deg, #f5deb3 0%, #deb887 60%, #c4a882 100%);
  animation: mdf-bg 8s ease-in-out infinite alternate;
}
.scn-milan-duke-follows .throne {
  position: absolute; bottom: 24%; left: 10%; width: 60px; height: 80px;
  background: linear-gradient(180deg, #b8860b 0%, #8b6508 50%, #5c4306 100%);
  border-radius: 30% 30% 8% 8% / 60% 60% 10% 10%;
  box-shadow: 4px 4px 16px rgba(0,0,0,0.5), inset 0 2px 6px rgba(255,215,0,0.4);
  animation: mdf-throne 6s ease-in-out infinite;
}
.scn-milan-duke-follows .shadow-column {
  position: absolute; bottom: 10%; right: 12%; width: 14px; height: 70%;
  background: linear-gradient(180deg, #8b7d6b 0%, #5c5040 100%);
  border-radius: 4%;
  box-shadow: -6px 0 12px rgba(0,0,0,0.4);
  animation: mdf-column 4s ease-in-out infinite alternate;
}
.scn-milan-duke-follows .figure-thurio {
  position: absolute; bottom: 20%; left: 42%; width: 26px; height: 60px;
  background: linear-gradient(180deg, #c8553d 0%, #8b3a2a 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 30% 30%;
  transform-origin: bottom center;
  animation: mdf-thurio 3s ease-in-out infinite;
}
.scn-milan-duke-follows .figure-proteus {
  position: absolute; bottom: 22%; left: 56%; width: 22px; height: 58px;
  background: linear-gradient(180deg, #5c5040 0%, #3a2e22 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 30% 30%;
  transform-origin: bottom center;
  animation: mdf-proteus 4s ease-in-out infinite 0.5s;
}
.scn-milan-duke-follows .figure-julia {
  position: absolute; bottom: 18%; left: 30%; width: 18px; height: 50px;
  background: linear-gradient(180deg, #8b7355 0%, #5c4033 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 30% 30%;
  transform-origin: bottom center;
  animation: mdf-julia 4s ease-in-out infinite 1s;
}
.scn-milan-duke-follows .dagger-sheathed {
  position: absolute; bottom: 22%; left: 50%; width: 6px; height: 18px;
  background: linear-gradient(180deg, #a0522d 0%, #6b3a2a 100%);
  border-radius: 20% 20% 30% 30% / 40% 40% 30% 30%;
  box-shadow: 0 2px 4px rgba(0,0,0,0.5);
  animation: mdf-dagger 2s ease-in-out infinite alternate;
}
.scn-milan-duke-follows .floor-checker {
  position: absolute; bottom: 0; left: 0; width: 100%; height: 16%;
  background: repeating-conic-gradient(#c4a882 0% 25%, #a08060 0% 50%) 0 0 / 40px 40px;
  box-shadow: inset 0 4px 8px rgba(0,0,0,0.2);
  animation: mdf-floor 10s linear infinite;
}
@keyframes mdf-bg { 0% { filter:brightness(1) } 50% { filter:brightness(0.95) } 100% { filter:brightness(1.05) } }
@keyframes mdf-throne { 0% { transform: scale(1) } 50% { transform: scale(1.01) translateY(-1px) } 100% { transform: scale(1) } }
@keyframes mdf-column { 0% { transform: rotate(0deg) scaleX(1) } 100% { transform: rotate(-1deg) scaleX(1.02) } }
@keyframes mdf-thurio { 0% { transform: translateY(0) rotate(2deg); filter:brightness(1) } 25% { transform: translateY(-2px) rotate(0deg); filter:brightness(1.1) } 50% { transform: translateY(0) rotate(-2deg); filter:brightness(1) } 75% { transform: translateY(-1px) rotate(0deg); filter:brightness(1.05) } 100% { transform: translateY(0) rotate(2deg); filter:brightness(1) } }
@keyframes mdf-proteus { 0% { transform: translateY(0) rotate(0deg) scaleX(1) } 30% { transform: translateY(-1px) rotate(-1deg) scaleX(0.98) } 60% { transform: translateY(0) rotate(0deg) scaleX(1) } 100% { transform: translateY(-2px) rotate(1deg) scaleX(1.02) } }
@keyframes mdf-julia { 0% { transform: translateY(0) rotate(-2deg) } 25% { transform: translateY(-1px) rotate(0deg) } 50% { transform: translateY(0) rotate(2deg) } 75% { transform: translateY(-1px) rotate(0deg) } 100% { transform: translateY(0) rotate(-2deg) } }
@keyframes mdf-dagger { 0% { transform: rotate(0deg) translateY(0); opacity:0.6 } 50% { transform: rotate(5deg) translateY(-1px); opacity:1 } 100% { transform: rotate(-5deg) translateY(0); opacity:0.8 } }
@keyframes mdf-floor { 0% { background-position: 0 0 } 100% { background-position: 40px 0 } }

/* Scene 1: milan-duke-valentine-trick - tense, bright interior */
.scn-milan-duke-valentine-trick {
  background:
    linear-gradient(180deg, #fff9e6 0%, #f5e6cc 100%),
    radial-gradient(ellipse at 50% 20%, #ffffff 0%, #e8d5b0 100%);
}
.scn-milan-duke-valentine-trick .mtv-wall {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(90deg, #d4c4a8 0%, #c8b89c 50%, #d4c4a8 100%);
  animation: mtv-wall-pulse 6s ease-in-out infinite;
}
.scn-milan-duke-valentine-trick .mtv-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #b09878 0%, #8a7658 100%);
  box-shadow: inset 0 12px 24px rgba(0,0,0,0.15);
}
.scn-milan-duke-valentine-trick .mtv-window {
  position: absolute; top: 10%; left: 60%; width: 15%; height: 25%;
  background: radial-gradient(ellipse at center, #ffe0a0 0%, #eec880 50%, #d4b070 100%);
  border-radius: 4px; box-shadow: inset 0 0 30px rgba(255,200,100,0.4);
  animation: mtv-window-flicker 3s ease-in-out infinite alternate;
}
.scn-milan-duke-valentine-trick .mtv-table {
  position: absolute; bottom: 30%; left: 30%; width: 30%; height: 8%;
  background: linear-gradient(180deg, #7a6a5a 0%, #5a4a3a 100%);
  border-radius: 4px 4px 0 0;
  transform: skewX(-5deg);
  animation: mtv-table-tremor 8s ease-in-out infinite;
}
.scn-milan-duke-valentine-trick .mtv-letter {
  position: absolute; bottom: 38%; left: 42%; width: 8%; height: 5%;
  background: #f0e0c0;
  border-radius: 2px;
  box-shadow: 0 2px 6px rgba(0,0,0,0.3);
  animation: mtv-letter-twitch 2s ease-in-out infinite;
}
.scn-milan-duke-valentine-trick .mtv-duke {
  position: absolute; bottom: 30%; left: 22%; width: 10%; height: 40%;
  background: linear-gradient(180deg, #5a3a2a 0%, #3a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: scaleX(-1);
  animation: mtv-duke-shift 5s ease-in-out infinite;
}
.scn-milan-duke-valentine-trick .mtv-valentine {
  position: absolute; bottom: 30%; left: 52%; width: 9%; height: 38%;
  background: linear-gradient(180deg, #4a3a5a 0%, #2a1a3a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: mtv-valentine-sway 4s ease-in-out infinite alternate;
}
.scn-milan-duke-valentine-trick .mtv-candle {
  position: absolute; bottom: 35%; left: 35%; width: 2%; height: 6%;
  background: linear-gradient(180deg, #c08040 0%, #8a5a2a 100%);
  border-radius: 50% 50% 20% 20%;
  box-shadow: 0 0 20px 8px rgba(255,180,80,0.6);
  animation: mtv-candle-flicker 2s ease-in-out infinite;
}
@keyframes mtv-wall-pulse {
  0% { background: linear-gradient(90deg, #d4c4a8, #c8b89c, #d4c4a8); }
  50% { background: linear-gradient(90deg, #c8b89c, #d4c4a8, #c8b89c); }
  100% { background: linear-gradient(90deg, #d4c4a8, #c8b89c, #d4c4a8); }
}
@keyframes mtv-window-flicker {
  0% { opacity: 0.85; box-shadow: inset 0 0 20px rgba(255,200,100,0.3); }
  50% { opacity: 1; box-shadow: inset 0 0 40px rgba(255,200,100,0.6); }
  100% { opacity: 0.9; box-shadow: inset 0 0 25px rgba(255,200,100,0.4); }
}
@keyframes mtv-table-tremor {
  0% { transform: skewX(-5deg) translateY(0); }
  25% { transform: skewX(-4deg) translateY(-1px); }
  50% { transform: skewX(-6deg) translateY(1px); }
  75% { transform: skewX(-5deg) translateY(-1px); }
  100% { transform: skewX(-5deg) translateY(0); }
}
@keyframes mtv-letter-twitch {
  0% { transform: rotate(0deg); }
  30% { transform: rotate(3deg); }
  60% { transform: rotate(-2deg); }
  100% { transform: rotate(0deg); }
}
@keyframes mtv-duke-shift {
  0%,100% { transform: scaleX(-1) translateX(0); }
  50% { transform: scaleX(-1) translateX(4px); }
}
@keyframes mtv-valentine-sway {
  0% { transform: translateX(0) rotate(-1deg); }
  50% { transform: translateX(3px) rotate(1deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes mtv-candle-flicker {
  0%,100% { box-shadow: 0 0 20px 8px rgba(255,180,80,0.6); opacity: 0.9; }
  50% { box-shadow: 0 0 30px 12px rgba(255,200,100,0.8); opacity: 1; }
}

/* Scene 2: milan-valentine-banished - dark, bright interior */
.scn-milan-valentine-banished {
  background:
    linear-gradient(180deg, #2a2a4a 0%, #3a3a5a 40%, #1a1a3a 100%),
    radial-gradient(ellipse at 50% 30%, #4a4a6a 0%, transparent 70%);
}
.scn-milan-valentine-banished .mvb-wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #3a3a5a 0%, #2a2a4a 100%);
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.5);
}
.scn-milan-valentine-banished .mvb-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
}
.scn-milan-valentine-banished .mvb-window-light {
  position: absolute; top: 10%; left: 30%; width: 20%; height: 35%;
  background: radial-gradient(ellipse at center, #c8d0e0 0%, #8890b0 70%, transparent 100%);
  border-radius: 8px;
  box-shadow: 0 0 60px 30px rgba(180,190,220,0.4);
  animation: mvb-window-glow 8s ease-in-out infinite alternate;
}
.scn-milan-valentine-banished .mvb-figure {
  position: absolute; bottom: 25%; left: 45%; width: 12%; height: 45%;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: mvb-figure-sway 6s ease-in-out infinite;
}
.scn-milan-valentine-banished .mvb-shadow {
  position: absolute; bottom: 25%; left: 45%; width: 20%; height: 15%;
  background: rgba(0,0,0,0.6);
  border-radius: 50%;
  filter: blur(8px);
  animation: mvb-shadow-stretch 10s ease-in-out infinite;
}
.scn-milan-valentine-banished .mvb-candle {
  position: absolute; bottom: 40%; left: 58%; width: 3%; height: 8%;
  background: linear-gradient(180deg, #e0b060 0%, #7a4a20 100%);
  border-radius: 50% 50% 20% 20%;
  box-shadow: 0 0 30px 12px rgba(200,150,60,0.7);
  animation: mvb-candle-flicker 2s ease-in-out infinite;
}
.scn-milan-valentine-banished .mvb-chair {
  position: absolute; bottom: 22%; left: 38%; width: 10%; height: 30%;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a100a 100%);
  border-radius: 10% 10% 4% 4%;
  transform: rotate(-5deg);
}
@keyframes mvb-window-glow {
  0% { opacity: 0.7; box-shadow: 0 0 40px 20px rgba(180,190,220,0.3); }
  50% { opacity: 1; box-shadow: 0 0 80px 40px rgba(180,190,220,0.6); }
  100% { opacity: 0.8; box-shadow: 0 0 50px 25px rgba(180,190,220,0.4); }
}
@keyframes mvb-figure-sway {
  0% { transform: translateX(0) rotate(0deg); }
  25% { transform: translateX(2px) rotate(-1deg); }
  50% { transform: translateX(0) rotate(1deg); }
  75% { transform: translateX(-2px) rotate(-1deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes mvb-shadow-stretch {
  0% { transform: scaleX(1) scaleY(1); opacity: 0.6; }
  50% { transform: scaleX(1.2) scaleY(0.8); opacity: 0.4; }
  100% { transform: scaleX(1) scaleY(1); opacity: 0.6; }
}
@keyframes mvb-candle-flicker {
  0%,100% { box-shadow: 0 0 30px 12px rgba(200,150,60,0.7); }
  50% { box-shadow: 0 0 50px 20px rgba(200,150,60,0.9); }
}

/* Scene 3: milan-launce-catalog - funny, sunlit */
.scn-milan-launce-catalog {
  background:
    linear-gradient(180deg, #b8e0ff 0%, #e0f0ff 30%, #fff8e0 100%),
    radial-gradient(ellipse at 50% 0%, #ffe0a0 0%, transparent 60%);
}
.scn-milan-launce-catalog .mlc-sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #80c8ff 0%, #b0e0ff 100%);
  animation: mlc-sky-pulse 10s ease-in-out infinite;
}
.scn-milan-launce-catalog .mlc-ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #90c080 0%, #609060 100%);
  border-radius: 40% 60% 0 0 / 20% 40% 0 0;
}
.scn-milan-launce-catalog .mlc-launce {
  position: absolute; bottom: 30%; left: 25%; width: 10%; height: 45%;
  background: linear-gradient(180deg, #6a5a2a 0%, #3a2a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: mlc-launce-bounce 2s ease-in-out infinite;
}
.scn-milan-launce-catalog .mlc-speed {
  position: absolute; bottom: 32%; left: 55%; width: 9%; height: 40%;
  background: linear-gradient(180deg, #4a5a6a 0%, #2a3a4a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: mlc-speed-wobble 2.5s ease-in-out infinite alternate;
}
.scn-milan-launce-catalog .mlc-paper {
  position: absolute; bottom: 45%; left: 45%; width: 8%; height: 6%;
  background: #fff8e0;
  border-radius: 2px;
  box-shadow: 0 3px 6px rgba(0,0,0,0.2);
  animation: mlc-paper-flutter 1.5s ease-in-out infinite;
}
.scn-milan-launce-catalog .mlc-cloud-a {
  position: absolute; top: 12%; left: 10%; width: 20%; height: 10%;
  background: rgba(255,255,255,0.7);
  border-radius: 50%;
  filter: blur(10px);
  animation: mlc-cloud-drift 30s linear infinite;
}
.scn-milan-launce-catalog .mlc-cloud-b {
  position: absolute; top: 20%; right: 5%; width: 15%; height: 8%;
  background: rgba(255,255,255,0.5);
  border-radius: 50%;
  filter: blur(8px);
  animation: mlc-cloud-drift 40s linear infinite reverse;
}
@keyframes mlc-sky-pulse {
  0% { background: linear-gradient(180deg, #80c8ff, #b0e0ff); }
  50% { background: linear-gradient(180deg, #90d0ff, #c0e8ff); }
  100% { background: linear-gradient(180deg, #80c8ff, #b0e0ff); }
}
@keyframes mlc-launce-bounce {
  0%,100% { transform: translateY(0) rotate(0deg); }
  25% { transform: translateY(-8px) rotate(-2deg); }
  50% { transform: translateY(0) rotate(2deg); }
  75% { transform: translateY(-4px) rotate(-1deg); }
}
@keyframes mlc-speed-wobble {
  0% { transform: translateX(0) rotate(0deg); }
  100% { transform: translateX(6px) rotate(3deg); }
}
@keyframes mlc-paper-flutter {
  0% { transform: rotate(0deg) translateX(0); }
  25% { transform: rotate(15deg) translateX(3px); }
  50% { transform: rotate(-10deg) translateX(-2px); }
  75% { transform: rotate(5deg) translateX(2px); }
  100% { transform: rotate(0deg) translateX(0); }
}
@keyframes mlc-cloud-drift {
  0% { transform: translateX(-20px); }
  100% { transform: translateX(120vw); }
}

/* Scene 4: milan-duke-thurio-proteus-plot - calm, bright interior */
.scn-milan-duke-thurio-proteus-plot {
  background:
    linear-gradient(180deg, #f5f0e8 0%, #ede0cc 100%),
    radial-gradient(ellipse at 50% 40%, #fff8ee 0%, transparent 70%);
}
.scn-milan-duke-thurio-proteus-plot .mdp-wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(90deg, #e8d8c8 0%, #d8c8b8 50%, #e8d8c8 100%);
  animation: mdp-wall-soft 12s ease-in-out infinite;
}
.scn-milan-duke-thurio-proteus-plot .mdp-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #c8b8a8 0%, #a89888 100%);
  box-shadow: inset 0 8px 16px rgba(0,0,0,0.1);
}
.scn-milan-duke-thurio-proteus-plot .mdp-column {
  position: absolute; bottom: 0; left: 18%; width: 6%; height: 70%;
  background: linear-gradient(90deg, #d0c0b0 0%, #c0b0a0 50%, #d0c0b0 100%);
  border-radius: 4px 4px 0 0;
  transform: scaleY(0.95);
}
.scn-milan-duke-thurio-proteus-plot .mdp-curtain {
  position: absolute; top: 0; left: 70%; width: 20%; height: 100%;
  background: linear-gradient(180deg, #a08878 0%, #887868 100%);
  border-radius: 0 0 20% 20%;
  animation: mdp-curtain-sway 15s ease-in-out infinite;
}
.scn-milan-duke-thurio-proteus-plot .mdp-duke {
  position: absolute; bottom: 25%; left: 28%; width: 10%; height: 42%;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: mdp-duke-breathe 7s ease-in-out infinite;
}
.scn-milan-duke-thurio-proteus-plot .mdp-thurio {
  position: absolute; bottom: 27%; left: 48%; width: 9%; height: 38%;
  background: linear-gradient(180deg, #4a5a4a 0%, #2a3a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: mdp-thurio-breathe 8s ease-in-out infinite alternate;
}
.scn-milan-duke-thurio-proteus-plot .mdp-desk {
  position: absolute; bottom: 20%; left: 35%; width: 25%; height: 6%;
  background: linear-gradient(180deg, #8a7a6a 0%, #6a5a4a 100%);
  border-radius: 4px;
  transform: perspective(500px) rotateX(5deg);
  animation: mdp-desk-subtle 20s ease-in-out infinite;
}
@keyframes mdp-wall-soft {
  0% { background: linear-gradient(90deg, #e8d8c8, #d8c8b8, #e8d8c8); }
  50% { background: linear-gradient(90deg, #d8c8b8, #e8d8c8, #d8c8b8); }
  100% { background: linear-gradient(90deg, #e8d8c8, #d8c8b8, #e8d8c8); }
}
@keyframes mdp-curtain-sway {
  0% { transform: translateX(0) rotate(0deg); }
  25% { transform: translateX(2px) rotate(1deg); }
  50% { transform: translateX(0) rotate(0deg); }
  75% { transform: translateX(-2px) rotate(-1deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes mdp-duke-breathe {
  0%,100% { transform: translateY(0) scaleY(1); }
  50% { transform: translateY(-2px) scaleY(1.02); }
}
@keyframes mdp-thurio-breathe {
  0% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-1px) rotate(1deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes mdp-desk-subtle {
  0%,100% { transform: perspective(500px) rotateX(5deg) translateY(0); }
  50% { transform: perspective(500px) rotateX(6deg) translateY(1px); }
}

/* Scenes for Two Gentlemen of Verona */

/* verona-street-launce – sunlit funny street */
.scn-verona-street-launce {
  background: linear-gradient(180deg, #5b8cbe 0%, #9bb7d4 40%, #f0d68a 70%, #d9b678 100%), 
              radial-gradient(ellipse at 70% 20%, #fff5c0 0%, transparent 60%);
}
.scn-verona-street-launce .sky-vsl {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #87ceeb 0%, #b0e0e6 60%, transparent 100%);
}
.scn-verona-street-launce .sun-vsl {
  position: absolute; top: 10%; left: 70%; width: 50px; height: 50px;
  background: radial-gradient(circle, #fff8a0 0%, #ffe680 40%, transparent 70%);
  border-radius: 50%;
  animation: vsl-sun 12s ease-in-out infinite alternate;
}
.scn-verona-street-launce .ground-vsl {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #b89a6a 0%, #8c7a4b 100%);
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.2);
}
.scn-verona-street-launce .building-vsl {
  position: absolute; bottom: 35%; left: 15%; width: 40%; height: 50%;
  background: linear-gradient(180deg, #c8a06a 0%, #a07850 100%);
  border-radius: 5% 5% 0 0;
  box-shadow: 0 4px 12px rgba(0,0,0,0.3);
}
.scn-verona-street-launce .door-vsl {
  position: absolute; bottom: 35%; left: 30%; width: 30px; height: 50px;
  background: linear-gradient(180deg, #6b4226 0%, #4a2c18 100%);
  border-radius: 30% 30% 10% 10%;
  box-shadow: inset -3px 0 6px rgba(0,0,0,0.5);
}
.scn-verona-street-launce .figure-launce {
  position: absolute; bottom: 38%; left: 50%; width: 20px; height: 60px;
  background: linear-gradient(180deg, #3a4a5a 0%, #1a2a3a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vsl-walk 3s ease-in-out infinite;
}
.scn-verona-street-launce .figure-dog {
  position: absolute; bottom: 38%; left: 55%; width: 14px; height: 20px;
  background: linear-gradient(180deg, #8b6e4e 0%, #5a4a3a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: vsl-hop 2.5s ease-in-out infinite;
  animation-delay: 0.5s;
}
.scn-verona-street-launce .cloud-vsl-a {
  position: absolute; top: 8%; left: 10%; width: 80px; height: 20px;
  background: linear-gradient(180deg, rgba(255,255,255,0.7) 0%, rgba(255,255,255,0.2) 100%);
  border-radius: 50%;
  filter: blur(6px);
  animation: vsl-drift-a 40s linear infinite;
}
.scn-verona-street-launce .cloud-vsl-b {
  position: absolute; top: 15%; right: 5%; width: 60px; height: 15px;
  background: linear-gradient(180deg, rgba(255,255,255,0.6) 0%, rgba(255,255,255,0.1) 100%);
  border-radius: 50%;
  filter: blur(5px);
  animation: vsl-drift-b 50s linear infinite reverse;
}
@keyframes vsl-sun { 
  0% { transform: scale(0.95) translateY(0); opacity: 0.9; }
  50% { transform: scale(1.05) translateY(-4px); opacity: 1; }
  100% { transform: scale(0.95) translateY(2px); opacity: 0.85; }
}
@keyframes vsl-walk { 
  0% { transform: translateX(0) rotate(-2deg); }
  25% { transform: translateX(8px) rotate(2deg); }
  50% { transform: translateX(16px) rotate(-1deg); }
  75% { transform: translateX(24px) rotate(1deg); }
  100% { transform: translateX(32px) rotate(0); }
}
@keyframes vsl-hop { 
  0% { transform: translateY(0) scale(1); }
  25% { transform: translateY(-6px) scale(1.1, 0.9); }
  50% { transform: translateY(0) scale(1); }
  75% { transform: translateY(-4px) scale(1.05, 0.95); }
  100% { transform: translateY(0) scale(1); }
}
@keyframes vsl-drift-a {
  0% { transform: translateX(-80px); }
  100% { transform: translateX(120vw); }
}
@keyframes vsl-drift-b {
  0% { transform: translateX(0); }
  100% { transform: translateX(-100vw); }
}

/* milan-duke-palace-thurio – warm bright interior */
.scn-milan-duke-palace-thurio {
  background: linear-gradient(180deg, #c9a87c 0%, #b0895e 30%, #d4b28a 70%, #f0d5a8 100%),
              radial-gradient(ellipse at 50% 0%, #ffe0b0 0%, transparent 70%);
}
.scn-milan-duke-palace-thurio .wall-mdp {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #dcc6a0 0%, #b89a76 100%);
  border-bottom: 4px solid #8a6e4e;
}
.scn-milan-duke-palace-thurio .floor-mdp {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #a08060 0%, #7a6040 100%);
  box-shadow: inset 0 6px 15px rgba(0,0,0,0.3);
}
.scn-milan-duke-palace-thurio .column-left-mdp {
  position: absolute; bottom: 20%; left: 10%; width: 20px; height: 60%;
  background: linear-gradient(90deg, #ddd4b0 0%, #c0b08a 50%, #a09070 100%);
  border-radius: 4px;
  box-shadow: 0 4px 8px rgba(0,0,0,0.2);
}
.scn-milan-duke-palace-thurio .column-right-mdp {
  position: absolute; bottom: 20%; right: 10%; width: 20px; height: 60%;
  background: linear-gradient(90deg, #ddd4b0 0%, #c0b08a 50%, #a09070 100%);
  border-radius: 4px;
  box-shadow: 0 4px 8px rgba(0,0,0,0.2);
}
.scn-milan-duke-palace-thurio .arch-mdp {
  position: absolute; top: 10%; left: 25%; width: 50%; height: 40%;
  background: radial-gradient(ellipse at 50% 100%, #ccb48a 0%, transparent 70%);
  border-radius: 50% 50% 0 0;
  box-shadow: inset 0 0 30px rgba(255,200,100,0.3);
}
.scn-milan-duke-palace-thurio .figure-silvia-mdp {
  position: absolute; bottom: 28%; left: 30%; width: 22px; height: 55px;
  background: linear-gradient(180deg, #b0a080 0%, #806050 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
}
.scn-milan-duke-palace-thurio .figure-valentine-mdp {
  position: absolute; bottom: 28%; left: 45%; width: 24px; height: 58px;
  background: linear-gradient(180deg, #7888a0 0%, #4a5878 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: mdp-bow 6s ease-in-out infinite;
}
.scn-milan-duke-palace-thurio .figure-thurio-mdp {
  position: absolute; bottom: 28%; left: 58%; width: 20px; height: 52px;
  background: linear-gradient(180deg, #684030 0%, #402820 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: mdp-frown 8s ease-in-out infinite;
}
.scn-milan-duke-palace-thurio .throne-mdp {
  position: absolute; bottom: 22%; left: 35%; width: 40px; height: 50px;
  background: linear-gradient(180deg, #b08040 0%, #8a6028 100%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 0 6px 12px rgba(0,0,0,0.4);
}
@keyframes mdp-bow {
  0% { transform: translateY(0) rotate(0); }
  30% { transform: translateY(-4px) rotate(5deg); }
  60% { transform: translateY(0) rotate(0); }
  100% { transform: translateY(0) rotate(0); }
}
@keyframes mdp-frown {
  0% { transform: translateY(0) rotate(0) scale(1); }
  25% { transform: translateY(2px) rotate(-2deg) scale(0.98); }
  50% { transform: translateY(0) rotate(0) scale(1); }
  75% { transform: translateY(1px) rotate(-1deg) scale(0.99); }
  100% { transform: translateY(0) rotate(0) scale(1); }
}

/* milan-proteus-arrival – warm bright interior, greeting */
.scn-milan-proteus-arrival {
  background: linear-gradient(180deg, #d2b48c 0%, #e8cc95 40%, #c7a270 100%),
              radial-gradient(ellipse at 70% 20%, #f5e0b0 0%, transparent 50%);
}
.scn-milan-proteus-arrival .wall-mpa {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(180deg, #dac29a 0%, #b89870 100%);
}
.scn-milan-proteus-arrival .floor-mpa {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(180deg, #a0805a 0%, #806040 100%);
}
.scn-milan-proteus-arrival .doorway-mpa {
  position: absolute; bottom: 20%; left: 20%; width: 80px; height: 110px;
  background: linear-gradient(180deg, #b89870 0%, #8a6040 100%);
  border-radius: 40% 40% 5% 5%;
  box-shadow: inset -8px 0 15px rgba(0,0,0,0.4);
}
.scn-milan-proteus-arrival .figure-proteus-mpa {
  position: absolute; bottom: 22%; left: 25%; width: 22px; height: 60px;
  background: linear-gradient(180deg, #3a5a78 0%, #1a3a58 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: mpa-arrive 5s ease-in-out infinite;
}
.scn-milan-proteus-arrival .figure-silvia-mpa {
  position: absolute; bottom: 22%; left: 40%; width: 22px; height: 55px;
  background: linear-gradient(180deg, #b0a080 0%, #807060 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
}
.scn-milan-proteus-arrival .figure-valentine-mpa {
  position: absolute; bottom: 22%; left: 52%; width: 24px; height: 58px;
  background: linear-gradient(180deg, #7888a0 0%, #4a5878 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
}
.scn-milan-proteus-arrival .banner-mpa {
  position: absolute; top: 12%; left: 50%; width: 40px; height: 30px;
  background: linear-gradient(180deg, #c8553d 0%, #a0402a 100%);
  border-radius: 4px;
  animation: mpa-flag 3s ease-in-out infinite alternate;
}
.scn-milan-proteus-arrival .light-ray-mpa {
  position: absolute; top: 0; left: 30%; width: 100px; height: 100%;
  background: linear-gradient(180deg, rgba(255,220,150,0.2) 0%, transparent 100%);
  clip-path: polygon(30% 0, 70% 0, 90% 100%, 10% 100%);
  animation: mpa-light 8s ease-in-out infinite alternate;
}
@keyframes mpa-arrive {
  0% { transform: translateX(20px) scale(0.9); opacity: 0; }
  30% { transform: translateX(10px) scale(0.95); opacity: 0.5; }
  60% { transform: translateX(0) scale(1); opacity: 1; }
  100% { transform: translateX(0) scale(1); opacity: 1; }
}
@keyframes mpa-flag {
  0% { transform: skewX(0deg); }
  50% { transform: skewX(-8deg); }
  100% { transform: skewX(8deg); }
}
@keyframes mpa-light {
  0% { opacity: 0.3; }
  50% { opacity: 0.7; }
  100% { opacity: 0.4; }
}

/* milan-proteus-scheme – warm interior, lone schemer */
.scn-milan-proteus-scheme {
  background: linear-gradient(180deg, #c7a270 0%, #b08860 40%, #906848 100%),
              radial-gradient(ellipse at 30% 80%, #f0d5a8 0%, transparent 70%);
}
.scn-milan-proteus-scheme .wall-mps {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #d4b48c 0%, #b89870 100%);
}
.scn-milan-proteus-scheme .floor-mps {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #906848 0%, #685030 100%);
}
.scn-milan-proteus-scheme .pillar-mps {
  position: absolute; bottom: 20%; left: 70%; width: 16px; height: 65%;
  background: linear-gradient(90deg, #c0b08a 0%, #a09070 100%);
  border-radius: 4px;
}
.scn-milan-proteus-scheme .figure-proteus-mps {
  position: absolute; bottom: 22%; left: 40%; width: 22px; height: 60px;
  background: linear-gradient(180deg, #3a5a78 0%, #1a3a58 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: mps-think 6s ease-in-out infinite;
}
.scn-milan-proteus-scheme .hourglass-mps {
  position: absolute; bottom: 30%; left: 55%; width: 18px; height: 28px;
  background: linear-gradient(180deg, #c8a060 0%, #a08040 100%);
  border-radius: 30% 30% 20% 20%;
  box-shadow: 0 2px 6px rgba(0,0,0,0.3);
  animation: mps-hourglass 8s ease-in-out infinite;
}
.scn-milan-proteus-scheme .candle-mps {
  position: absolute; bottom: 30%; left: 30%; width: 8px; height: 24px;
  background: linear-gradient(180deg, #f0d5a8 0%, #d4b48c 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 0 0 12px 4px rgba(255,200,100,0.6);
  animation: mps-candle 4s ease-in-out infinite alternate;
}
.scn-milan-proteus-scheme .shadow-mps {
  position: absolute; bottom: 18%; left: 35%; width: 50px; height: 30px;
  background: radial-gradient(ellipse, rgba(0,0,0,0.4) 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(8px);
  animation: mps-shadow 6s ease-in-out infinite alternate;
}
@keyframes mps-think {
  0% { transform: translateY(0) rotate(-2deg) scale(1); }
  25% { transform: translateY(-3px) rotate(0) scale(0.98); }
  50% { transform: translateY(0) rotate(2deg) scale(1); }
  75% { transform: translateY(-2px) rotate(0) scale(0.99); }
  100% { transform: translateY(0) rotate(-2deg) scale(1); }
}
@keyframes mps-hourglass {
  0% { transform: rotate(0deg); }
  25% { transform: rotate(5deg); }
  50% { transform: rotate(0deg); }
  75% { transform: rotate(-5deg); }
  100% { transform: rotate(0deg); }
}
@keyframes mps-candle {
  0% { transform: scaleY(1) translateY(0); box-shadow: 0 0 8px 2px rgba(255,200,100,0.5); }
  50% { transform: scaleY(1.05) translateY(-2px); box-shadow: 0 0 18px 6px rgba(255,200,100,0.7); }
  100% { transform: scaleY(0.95) translateY(1px); box-shadow: 0 0 10px 3px rgba(255,200,100,0.4); }
}
@keyframes mps-shadow {
  0% { transform: scaleX(0.9); opacity: 0.6; }
  50% { transform: scaleX(1.1); opacity: 0.8; }
  100% { transform: scaleX(0.95); opacity: 0.7; }
}

.scn-verona-open-place {
  background: linear-gradient(180deg, #f5deb3 0%, #87ceeb 40%, #4a90d9 100%), radial-gradient(ellipse at 50% 0%, #fff8dc 0%, transparent 60%);
  position: relative;
  overflow: hidden;
}
.scn-verona-open-place .sky { position:absolute; inset:0 0 35% 0; background: linear-gradient(180deg, #f0e68c 0%, #87ceeb 100%); animation: vop-sky 10s ease-in-out infinite alternate; }
.scn-verona-open-place .sun { position:absolute; top:8%; left:60%; width:60px; height:60px; background: radial-gradient(circle, #fff8dc 0%, #ffd700 60%, transparent 100%); border-radius:50%; box-shadow: 0 0 40px 15px rgba(255,215,0,0.6); animation: vop-sun 6s ease-in-out infinite alternate; }
.scn-verona-open-place .building-left { position:absolute; bottom:35%; left:10%; width:30%; height:50%; background: linear-gradient(180deg, #b8860b 0%, #8b4513 100%); border-radius: 5% 5% 0 0; box-shadow: inset 0 10px 20px rgba(0,0,0,0.3); animation: vop-building 12s ease-in-out infinite alternate; }
.scn-verona-open-place .building-right { position:absolute; bottom:35%; right:5%; width:25%; height:45%; background: linear-gradient(180deg, #daa520 0%, #a0522d 100%); border-radius: 5% 5% 0 0; box-shadow: inset 0 10px 20px rgba(0,0,0,0.2); animation: vop-building 14s ease-in-out infinite alternate-reverse; }
.scn-verona-open-place .ground { position:absolute; bottom:0; left:0; right:0; height:35%; background: linear-gradient(180deg, #8b7355 0%, #6b4226 100%); border-radius: 30% 30% 0 0 / 20% 20% 0 0; }
.scn-verona-open-place .figure-left { position:absolute; bottom:20%; left:35%; width:20px; height:40px; background: linear-gradient(180deg, #3a2a1a 0%, #1a0a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: vop-walk 4s ease-in-out infinite; }
.scn-verona-open-place .figure-right { position:absolute; bottom:20%; left:45%; width:22px; height:42px; background: linear-gradient(180deg, #4a3a1a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: vop-walk 4.5s ease-in-out infinite 0.5s; }
.scn-verona-open-place .cloud { position:absolute; top:20%; left:80%; width:80px; height:20px; background: linear-gradient(180deg, rgba(255,255,255,0.7) 0%, rgba(255,255,255,0.2) 100%); border-radius:50%; filter: blur(5px); animation: vop-drift 30s linear infinite; }

@keyframes vop-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.9 } }
@keyframes vop-sun { 0% { transform: scale(0.9); box-shadow: 0 0 30px 10px rgba(255,215,0,0.5) } 50% { transform: scale(1.05); box-shadow: 0 0 50px 20px rgba(255,215,0,0.7) } 100% { transform: scale(0.95); box-shadow: 0 0 35px 12px rgba(255,215,0,0.5) } }
@keyframes vop-building { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes vop-walk { 0% { transform: translateX(0) translateY(0) rotate(-2deg) } 25% { transform: translateX(8px) translateY(-1px) 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 vop-drift { 0% { transform: translateX(0) } 100% { transform: translateX(-120vw) } }

/* ---------- Scene 2 ---------- */
.scn-verona-caviling-love {
  background: linear-gradient(135deg, #f0e68c 0%, #d2b48c 50%, #8b7355 100%), radial-gradient(circle at 30% 40%, #fff8dc 0%, transparent 70%);
  position: relative;
  overflow: hidden;
}
.scn-verona-caviling-love .wall { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #c9a96e 0%, #a0814a 100%); box-shadow: inset 0 20px 40px rgba(0,0,0,0.3); }
.scn-verona-caviling-love .floor { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #4a3520 0%, #2a1a0a 100%); }
.scn-verona-caviling-love .window { position:absolute; top:15%; left:35%; width:25%; height:35%; background: radial-gradient(ellipse at center, #87ceeb 0%, #4682b4 100%); border: 4px solid #6b4226; border-radius: 5% 5% 0 0; box-shadow: inset 0 0 20px rgba(255,255,255,0.5); animation: vcl-window 8s ease-in-out infinite alternate; }
.scn-verona-caviling-love .sunbeam { position:absolute; top:15%; left:38%; width:20%; height:55%; background: linear-gradient(180deg, rgba(255,255,224,0.5) 0%, transparent 100%); clip-path: polygon(0 0, 100% 0, 80% 100%, 20% 100%); animation: vcl-beam 3s ease-in-out infinite alternate; }
.scn-verona-caviling-love .figure { position:absolute; bottom:20%; left:50%; width:24px; height:48px; background: linear-gradient(180deg, #3a2a1a 0%, #1a0a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: vcl-figure 3s ease-in-out infinite; }
.scn-verona-caviling-love .shadow { position:absolute; bottom:15%; left:48%; width:28px; height:8px; background: rgba(0,0,0,0.4); border-radius: 50%; filter: blur(2px); animation: vcl-shadow 3s ease-in-out infinite; }
.scn-verona-caviling-love .rose { position:absolute; bottom:25%; left:60%; width:12px; height:20px; background: linear-gradient(180deg, #c8553d 0%, #a0461a 100%); border-radius: 50% 50% 30% 30%; transform: rotate(-15deg); animation: vcl-rose 2s ease-in-out infinite alternate; }

@keyframes vcl-window { 0% { opacity:0.7; box-shadow: inset 0 0 10px rgba(255,255,255,0.3) } 50% { opacity:1; box-shadow: inset 0 0 30px rgba(255,255,255,0.7) } 100% { opacity:0.8; box-shadow: inset 0 0 15px rgba(255,255,255,0.4) } }
@keyframes vcl-beam { 0% { opacity:0.3; clip-path: polygon(0 0, 100% 0, 80% 100%, 20% 100%) } 50% { opacity:0.6; clip-path: polygon(5% 0, 95% 0, 75% 100%, 25% 100%) } 100% { opacity:0.4; clip-path: polygon(0 0, 100% 0, 85% 100%, 15% 100%) } }
@keyframes vcl-figure { 0% { transform: translateX(0) rotate(-3deg) } 25% { transform: translateX(-4px) rotate(3deg) } 50% { transform: translateX(0) rotate(-2deg) } 75% { transform: translateX(4px) rotate(2deg) } 100% { transform: translateX(0) rotate(-3deg) } }
@keyframes vcl-shadow { 0% { transform: scale(1) } 50% { transform: scale(0.9) } 100% { transform: scale(1) } }
@keyframes vcl-rose { 0% { transform: rotate(-15deg) scale(1) } 50% { transform: rotate(-10deg) scale(1.1) } 100% { transform: rotate(-20deg) scale(0.95) } }

/* ---------- Scene 3 ---------- */
.scn-verona-farewell {
  background: linear-gradient(180deg, #87ceeb 0%, #f0e68c 30%, #d2b48c 60%, #8b7355 100%), radial-gradient(ellipse at 70% 0%, #fff8dc 0%, transparent 60%);
  position: relative;
  overflow: hidden;
}
.scn-verona-farewell .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #f0e68c 0%, #87ceeb 100%); animation: vfw-sky 12s ease-in-out infinite alternate; }
.scn-verona-farewell .sea { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, #4682b4 0%, #2a6496 100%); border-radius: 50% 50% 0 0 / 30% 30% 0 0; animation: vfw-sea 8s ease-in-out infinite alternate; }
.scn-verona-farewell .ship-hull { position:absolute; bottom:25%; left:20%; width:60px; height:30px; background: linear-gradient(180deg, #8b4513 0%, #5a2a0a 100%); border-radius: 0 0 50% 50%; box-shadow: 0 5px 10px rgba(0,0,0,0.4); animation: vfw-ship 6s ease-in-out infinite; }
.scn-verona-farewell .sail-fore { position:absolute; bottom:40%; left:22%; width:20px; height:35px; background: linear-gradient(180deg, #f5deb3 0%, #daa520 100%); clip-path: polygon(0 100%, 100% 100%, 50% 0); animation: vfw-sail-f 4s ease-in-out infinite alternate; }
.scn-verona-farewell .sail-aft { position:absolute; bottom:38%; left:30%; width:18px; height:30px; background: linear-gradient(180deg, #f5deb3 0%, #daa520 100%); clip-path: polygon(0 100%, 100% 100%, 50% 0); animation: vfw-sail-a 5s ease-in-out infinite alternate-reverse; }
.scn-verona-farewell .figure-left { position:absolute; bottom:15%; left:40%; width:20px; height:40px; background: linear-gradient(180deg, #3a2a1a 0%, #1a0a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: vfw-wave 3s ease-in-out infinite; }
.scn-verona-farewell .figure-right { position:absolute; bottom:15%; left:50%; width:22px; height:42px; background: linear-gradient(180deg, #4a3a1a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: vfw-wave 3.5s ease-in-out infinite 0.5s; }
.scn-verona-farewell .cloud { position:absolute; top:15%; left:70%; width:100px; height:22px; background: linear-gradient(180deg, rgba(255,255,255,0.6) 0%, rgba(255,255,255,0.1) 100%); border-radius:50%; filter: blur(6px); animation: vfw-drift 40s linear infinite; }

@keyframes vfw-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.9 } }
@keyframes vfw-sea { 0% { transform: translateY(0) } 50% { transform: translateY(-3px) } 100% { transform: translateY(0) } }
@keyframes vfw-ship { 0% { transform: translateY(0) rotate(0) } 50% { transform: translateY(-2px) rotate(1deg) } 100% { transform: translateY(0) rotate(0) } }
@keyframes vfw-sail-f { 0% { clip-path: polygon(0 100%, 100% 100%, 50% 0); transform: rotate(0) } 50% { clip-path: polygon(10% 100%, 90% 100%, 50% 0); transform: rotate(3deg) } 100% { clip-path: polygon(0 100%, 100% 100%, 50% 0); transform: rotate(0) } }
@keyframes vfw-sail-a { 0% { clip-path: polygon(0 100%, 100% 100%, 50% 0); transform: rotate(0) } 50% { clip-path: polygon(10% 100%, 90% 100%, 50% 0); transform: rotate(-2deg) } 100% { clip-path: polygon(0 100%, 100% 100%, 50% 0); transform: rotate(0) } }
@keyframes vfw-wave { 0% { transform: translateY(0) rotate(0) } 25% { transform: translateY(-2px) rotate(3deg) } 50% { transform: translateY(0) rotate(0) } 75% { transform: translateY(-2px) rotate(-3deg) } 100% { transform: translateY(0) rotate(0) } }
@keyframes vfw-drift { 0% { transform: translateX(0) } 100% { transform: translateX(-110vw) } }

/* ---------- Scene 4 ---------- */
.scn-verona-proteus-soliloquy {
  background: linear-gradient(180deg, #c9a96e 0%, #87ceeb 30%, #f0e68c 70%, #8b7355 100%), radial-gradient(ellipse at 50% 80%, #fff8dc 0%, transparent 60%);
  position: relative;
  overflow: hidden;
}
.scn-verona-proteus-soliloquy .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #f0e68c 0%, #87ceeb 100%); animation: vps-sky 10s ease-in-out infinite alternate; }
.scn-verona-proteus-soliloquy .canopy { position:absolute; top:0; left:0; right:0; height:45%; background: radial-gradient(ellipse at 30% 0%, #5a8a5a 0%, transparent 70%); filter: blur(10px); animation: vps-canopy 8s ease-in-out infinite alternate; }
.scn-verona-proteus-soliloquy .trunk { position:absolute; bottom:20%; left:20%; width:20px; height:50%; background: linear-gradient(90deg, #3a2a1a 0%, #5a3a1a 50%, #3a2a1a 100%); border-radius: 20% 20% 0 0; }
.scn-verona-proteus-soliloquy .leaves { position:absolute; bottom:40%; left:10%; width:40%; height:25%; background: radial-gradient(ellipse at 30% 100%, #6b8e23 0%, #556b2f 50%, transparent 100%); filter: blur(5px); animation: vps-leaves 6s ease-in-out infinite alternate; }
.scn-verona-proteus-soliloquy .bench { position:absolute; bottom:15%; left:45%; width:40px; height:12px; background: linear-gradient(90deg, #6b4226 0%, #8b5a2b 100%); border-radius: 20% 20% 0 0; box-shadow: 0 2px 5px rgba(0,0,0,0.3); animation: vps-bench 7s ease-in-out infinite alternate; }
.scn-verona-proteus-soliloquy .figure { position:absolute; bottom:10%; left:50%; width:24px; height:45px; background: linear-gradient(180deg, #3a2a1a 0%, #1a0a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: vps-figure 4s ease-in-out infinite; }
.scn-verona-proteus-soliloquy .butterfly { position:absolute; top:30%; left:60%; width:16px; height:10px; background: radial-gradient(circle at 30% 50%, #ff8c00 0%, #ffd700 30%, transparent 70%); border-radius: 50%; filter: blur(1px); animation: vps-butterfly 5s ease-in-out infinite alternate; }

@keyframes vps-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.9 } }
@keyframes vps-canopy { 0% { transform: scale(1); filter: blur(10px) } 50% { transform: scale(1.03); filter: blur(12px) } 100% { transform: scale(0.98); filter: blur(9px) } }
@keyframes vps-leaves { 0% { transform: translateY(0) } 50% { transform: translateY(-3px) } 100% { transform: translateY(0) } }
@keyframes vps-bench { 0% { transform: translateY(0) } 50% { transform: translateY(-1px) } 100% { transform: translateY(0) } }
@keyframes vps-figure { 0% { transform: translateX(0) rotate(-2deg) } 25% { transform: translateX(-3px) rotate(2deg) } 50% { transform: translateX(0) rotate(-1deg) } 75% { transform: translateX(3px) rotate(1deg) } 100% { transform: translateX(0) rotate(-2deg) } }
@keyframes vps-butterfly { 0% { transform: translate(0,0) rotate(0) scale(1) } 25% { transform: translate(10px,-5px) rotate(15deg) scale(1.1) } 50% { transform: translate(-5px,10px) rotate(-10deg) scale(0.9) } 75% { transform: translate(8px, -8px) rotate(20deg) scale(1.05) } 100% { transform: translate(0,0) rotate(0) scale(1) } }

.scn-verona-proteus-preference {
  background:
    linear-gradient(180deg, #87ceeb 0%, #f0e68c 50%, #f5deb3 100%),
    radial-gradient(ellipse at 50% 0%, #fff8dc 0%, transparent 60%);
  background-blend-mode: normal;
}
.scn-verona-proteus-preference .sky {
  position:absolute; inset:0 0 30% 0;
  background: linear-gradient(180deg, #b0e0e6 0%, transparent 100%);
  animation: vpp-sky 12s ease-in-out infinite alternate;
}
.scn-verona-proteus-preference .sun-glow {
  position:absolute; top:8%; left:50%; width:60px; height:60px; transform:translateX(-50%);
  background: radial-gradient(circle, #fff8dc 0%, #ffd700 40%, transparent 70%);
  border-radius:50%;
  animation: vpp-sun 8s ease-in-out infinite;
  box-shadow: 0 0 40px 20px rgba(255,215,0,0.4), 0 0 80px 40px rgba(255,215,0,0.2);
}
.scn-verona-proteus-preference .ground {
  position:absolute; bottom:0; left:0; right:0; height:30%;
  background: linear-gradient(180deg, #7c9c7c 0%, #5a7a5a 100%);
  border-radius: 30% 70% 0 0 / 50% 50% 0 0;
  box-shadow: inset 0 8px 12px rgba(0,0,0,0.2);
}
.scn-verona-proteus-preference .tree {
  position:absolute; bottom:25%; width:20px; background: #4a3a2a;
  border-radius: 10% 10% 20% 20%;
  box-shadow: inset -3px 0 5px #2a1a0a;
}
.scn-verona-proteus-preference .tree-l { left:15%; height:100px; transform-origin: bottom center; animation: vpp-sway 6s ease-in-out infinite; }
.scn-verona-proteus-preference .tree-r { right:15%; height:120px; transform-origin: bottom center; animation: vpp-sway 7s ease-in-out infinite reverse; }
.scn-verona-proteus-preference .tree::after {
  content: ''; position:absolute; top:-30px; left:-20px; width:60px; height:60px;
  background: radial-gradient(circle, #5a8a5a 0%, #3a6a3a 100%);
  border-radius: 50%;
  filter: blur(2px);
}
.scn-verona-proteus-preference .bench {
  position:absolute; bottom:20%; left:50%; width:100px; height:18px; transform:translateX(-50%);
  background: linear-gradient(180deg, #8a6a4a 0%, #6a4a2a 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.3);
  animation: vpp-bench 15s ease-in-out infinite;
}
.scn-verona-proteus-preference .figure-sit {
  position:absolute; bottom:21%; left:50%; width:24px; height:50px; transform:translateX(-50%) translateX(-10px);
  background: linear-gradient(180deg, #5a7a8a 0%, #3a5a6a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 0 2px 6px rgba(0,0,0,0.4);
  animation: vpp-sit 10s ease-in-out infinite;
}
.scn-verona-proteus-preference .figure-sit::after {
  content:''; position:absolute; top:-12px; left:6px; width:12px; height:12px;
  background: #d2b48c;
  border-radius: 50%;
  box-shadow: 0 0 0 2px #d2b48c, 0 0 0 4px #c9a96e33;
}
.scn-verona-proteus-preference .butterfly {
  position:absolute; bottom:30%; left:30%; width:8px; height:6px;
  background: radial-gradient(circle, #ffa07a 0%, #c8553d 100%);
  border-radius: 50%;
  filter: blur(1px);
  animation: vpp-butterfly 6s ease-in-out infinite alternate;
}
@keyframes vpp-sky { 0% { opacity:0.9; } 50% { opacity:1; } 100% { opacity:0.95; } }
@keyframes vpp-sun { 0%,100% { transform: translateX(-50%) scale(1); } 50% { transform: translateX(-50%) scale(1.05); } }
@keyframes vpp-sway { 0%,100% { transform: rotate(-2deg); } 50% { transform: rotate(2deg); } }
@keyframes vpp-bench { 0%,100% { transform: translateX(-50%) translateY(0); } 50% { transform: translateX(-50%) translateY(-1px); } }
@keyframes vpp-sit { 0%,100% { transform: translateX(-50%) translateX(-10px) rotate(0); } 25% { transform: translateX(-50%) translateX(-8px) rotate(-2deg); } 75% { transform: translateX(-50%) translateX(-12px) rotate(2deg); } }
@keyframes vpp-butterfly { 0% { transform: translate(0,0) rotate(-10deg); } 50% { transform: translate(20px,-20px) rotate(10deg); } 100% { transform: translate(40px,-5px) rotate(-5deg); } }

.scn-verona-julia-soliloquy {
  background:
    linear-gradient(180deg, #f5deb3 0%, #deb887 50%, #d2b48c 100%),
    radial-gradient(ellipse at 30% 50%, #fff8dc 0%, transparent 60%);
}
.scn-verona-julia-soliloquy .wall {
  position:absolute; inset:0 0 10% 0;
  background: linear-gradient(90deg, #d2b48c 0%, #c9a96e 50%, #b8860b 100%);
  box-shadow: inset 0 0 30px rgba(0,0,0,0.2);
}
.scn-verona-julia-soliloquy .window-bg {
  position:absolute; top:15%; left:35%; width:30%; height:40%;
  background: linear-gradient(180deg, #87ceeb 0%, #f0e68c 80%);
  border-radius: 10% 10% 0 0;
  box-shadow: inset 0 0 20px rgba(255,255,200,0.5);
  animation: vjs-light 8s ease-in-out infinite alternate;
}
.scn-verona-julia-soliloquy .window-frame {
  position:absolute; top:15%; left:35%; width:30%; height:40%;
  border: 6px solid #8a6a4a;
  border-radius: 10% 10% 0 0;
  box-shadow: 0 0 0 2px #6a4a2a;
}
.scn-verona-julia-soliloquy .curtain {
  position:absolute; top:15%; height:40%; width:8%;
  background: linear-gradient(90deg, #c9a96e 0%, #b8860b 100%);
  border-radius: 10% 10% 20% 20%;
  box-shadow: inset -2px 0 4px rgba(0,0,0,0.3);
}
.scn-verona-julia-soliloquy .curtain-l { left:32%; animation: vjs-curtain 6s ease-in-out infinite; }
.scn-verona-julia-soliloquy .curtain-r { right:32%; animation: vjs-curtain 6s ease-in-out infinite reverse; }
.scn-verona-julia-soliloquy .table {
  position:absolute; bottom:12%; left:50%; width:80px; height:12px; transform:translateX(-50%);
  background: linear-gradient(180deg, #8a6a4a 0%, #6a4a2a 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.3);
}
.scn-verona-julia-soliloquy .letter {
  position:absolute; bottom:16%; left:50%; width:30px; height:20px; transform:translateX(-50%);
  background: linear-gradient(135deg, #f5deb3 0%, #fff8dc 100%);
  border: 2px solid #d2b48c;
  border-radius: 5%;
  box-shadow: 0 2px 6px rgba(0,0,0,0.2);
  animation: vjs-letter 10s ease-in-out infinite;
}
.scn-verona-julia-soliloquy .figure-profile {
  position:absolute; bottom:12%; left:45%; width:20px; height:50px; transform:translateX(-50%);
  background: linear-gradient(180deg, #5a7a8a 0%, #3a5a6a 100%);
  border-radius: 50% 30% 40% 40% / 60% 40% 40% 40%;
  box-shadow: 0 2px 6px rgba(0,0,0,0.4);
  animation: vjs-figure 12s ease-in-out infinite;
}
.scn-verona-julia-soliloquy .figure-profile::after {
  content:''; position:absolute; top:-10px; left:4px; width:10px; height:12px;
  background: #d2b48c;
  border-radius: 50% 30% 30% 50%;
  box-shadow: 0 0 0 2px #d2b48c;
}
.scn-verona-julia-soliloquy .dust {
  position:absolute; inset:0;
  pointer-events:none;
  animation: vjs-dust 20s linear infinite;
}
.scn-verona-julia-soliloquy .dust::before {
  content:''; position:absolute; top:20%; left:30%; width:4px; height:4px;
  background: rgba(255,255,200,0.6); border-radius:50%; filter: blur(1px);
  box-shadow: 10px 20px 0 rgba(255,255,200,0.4), 30px -10px 0 rgba(255,255,200,0.3), -20px 40px 0 rgba(255,255,200,0.5);
}
@keyframes vjs-light { 0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.9; } }
@keyframes vjs-curtain { 0%,100% { transform: translateX(0); } 50% { transform: translateX(2px); } }
@keyframes vjs-letter { 0%,100% { transform: translateX(-50%) rotate(0); } 25% { transform: translateX(-50%) rotate(-3deg); } 75% { transform: translateX(-50%) rotate(3deg); } }
@keyframes vjs-figure { 0%,100% { transform: translateX(-50%) translateY(0); } 50% { transform: translateX(-50%) translateY(-2px); } }
@keyframes vjs-dust { 0% { opacity:0; } 50% { opacity:0.5; } 100% { opacity:0; } }

.scn-verona-julia-recall {
  background:
    linear-gradient(180deg, #d2b48c 0%, #b8860b 50%, #8a6a4a 100%),
    radial-gradient(ellipse at 40% 60%, #fff8dc 0%, transparent 70%);
}
.scn-verona-julia-recall .floor {
  position:absolute; bottom:0; left:0; right:0; height:20%;
  background: linear-gradient(180deg, #6a4a2a 0%, #4a3a2a 100%);
  border-radius: 0 0 0 0;
  box-shadow: inset 0 8px 12px rgba(0,0,0,0.5);
}
.scn-verona-julia-recall .wall-bg {
  position:absolute; inset:0 0 20% 0;
  background: linear-gradient(180deg, #deb887 0%, #c9a96e 100%);
}
.scn-verona-julia-recall .door {
  position:absolute; bottom:20%; left:50%; width:30%; height:60%; transform:translateX(-50%);
  background: linear-gradient(180deg, #8a6a4a 0%, #6a4a2a 100%);
  border: 6px solid #5a3a1a;
  border-radius: 10% 10% 0 0;
  box-shadow: 0 4px 8px rgba(0,0,0,0.4);
  animation: vjr-door 12s ease-in-out infinite;
}
.scn-verona-julia-recall .door::after {
  content:''; position:absolute; top:50%; right:10%; width:8px; height:8px;
  background: #d2a86e;
  border-radius:50%;
  box-shadow: 0 0 4px #d2a86e;
}
.scn-verona-julia-recall .tapestry {
  position:absolute; bottom:20%; left:12%; width:20%; height:40%;
  background: linear-gradient(135deg, #4a6a5a 0%, #3a5a4a 100%);
  border: 4px solid #5a3a1a;
  border-radius: 10%;
  box-shadow: inset 0 0 10px rgba(0,0,0,0.3);
  animation: vjr-tapestry 18s ease-in-out infinite;
}
.scn-verona-julia-recall .figure {
  position:absolute; bottom:20%; width:22px; height:54px;
  background: linear-gradient(180deg, #5a7a8a 0%, #3a5a6a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 0 2px 6px rgba(0,0,0,0.4);
}
.scn-verona-julia-recall .figure-julia {
  left:38%; transform-origin: bottom center;
  animation: vjr-julia 6s ease-in-out infinite;
}
.scn-verona-julia-recall .figure-lucetta {
  right:38%; animation: vjr-lucetta 7s ease-in-out infinite;
  animation-delay: 0.5s;
}
.scn-verona-julia-recall .figure-julia::after {
  content:''; position:absolute; top:-10px; left:6px; width:10px; height:12px;
  background: #d2b48c;
  border-radius: 50% 30% 30% 50%;
}
.scn-verona-julia-recall .figure-lucetta::after {
  content:''; position:absolute; top:-8px; left:8px; width:10px; height:10px;
  background: #c9a96e;
  border-radius: 50%;
}
.scn-verona-julia-recall .light-shaft {
  position:absolute; top:0; left:30%; width:40%; height:100%;
  background: linear-gradient(180deg, rgba(255,255,200,0.3) 0%, transparent 60%);
  pointer-events:none;
  animation: vjr-shaft 10s ease-in-out infinite alternate;
}
@keyframes vjr-door { 0%,100% { transform: translateX(-50%) scaleY(1); } 50% { transform: translateX(-50%) scaleY(1.02); } }
@keyframes vjr-tapestry { 0%,100% { transform: scale(1); } 50% { transform: scale(1.01); } }
@keyframes vjr-julia { 0%,100% { transform: rotate(0); } 25% { transform: rotate(-5deg) translateY(-2px); } 75% { transform: rotate(5deg) translateY(-1px); } }
@keyframes vjr-lucetta { 0%,100% { transform: translateX(0) rotate(0); } 50% { transform: translateX(-8px) rotate(3deg); } }
@keyframes vjr-shaft { 0% { opacity:0.4; } 50% { opacity:0.7; } 100% { opacity:0.5; } }

.scn-verona-letter-banter-2 {
  background:
    linear-gradient(180deg, #fff8dc 0%, #f0e68c 50%, #deb887 100%),
    radial-gradient(ellipse at 50% 30%, #fffae6 0%, transparent 60%);
}
.scn-verona-letter-banter-2 .bg-room {
  position:absolute; inset:0 0 10% 0;
  background: linear-gradient(180deg, #f5deb3 0%, #deb887 100%);
}
.scn-verona-letter-banter-2 .table-round {
  position:absolute; bottom:15%; left:50%; width:120px; height:15px; transform:translateX(-50%);
  background: linear-gradient(180deg, #8a6a4a 0%, #6a4a2a 100%);
  border-radius: 50%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.3);
  animation: vlb-table 12s ease-in-out infinite;
}
.scn-verona-letter-banter-2 .chair {
  position:absolute; bottom:15%; width:30px; height:40px;
  background: linear-gradient(180deg, #5a3a1a 0%, #4a2a0a 100%);
  border-radius: 30% 30% 10% 10%;
  box-shadow: 0 4px 6px rgba(0,0,0,0.3);
}
.scn-verona-letter-banter-2 .chair-l { left:25%; animation: vlb-chair 7s ease-in-out infinite; }
.scn-verona-letter-banter-2 .chair-r { right:25%; animation: vlb-chair 7s ease-in-out infinite reverse; }
.scn-verona-letter-banter-2 .figure {
  position:absolute; bottom:18%; width:22px; height:50px;
  background: linear-gradient(180deg, #5a7a8a 0%, #3a5a6a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 0 2px 6px rgba(0,0,0,0.4);
}
.scn-verona-letter-banter-2 .figure-banter-a { left:38%; transform-origin: bottom center; animation: vlb-banter-a 5s ease-in-out infinite; }
.scn-verona-letter-banter-2 .figure-banter-b { right:38%; transform-origin: bottom center; animation: vlb-banter-b 6s ease-in-out infinite; animation-delay: 0.3s; }
.scn-verona-letter-banter-2 .figure-banter-a::after, .figure-banter-b::after {
  content:''; position:absolute; top:-10px; left:5px; width:12px; height:12px;
  background: #d2b48c;
  border-radius: 50%;
}
.scn-verona-letter-banter-2 .figure-banter-b::after { background: #c9a96e; }
.scn-verona-letter-banter-2 .letter-flung {
  position:absolute; bottom:28%; left:50%; width:36px; height:24px; transform:translateX(-50%);
  background: linear-gradient(135deg, #fff8dc 0%, #f5deb3 100%);
  border: 2px solid #d2b48c;
  border-radius: 5%;
  box-shadow: 0 4px 10px rgba(0,0,0,0.2);
  animation: vlb-letter 8s ease-in-out infinite;
}
.scn-verona-letter-banter-2 .sparkle {
  position:absolute; top:20%; left:20%; width:100%; height:100%;
  pointer-events:none;
  animation: vlb-sparkle 4s ease-in-out infinite;
}
.scn-verona-letter-banter-2 .sparkle::before {
  content:''; position:absolute; top:10%; left:30%; width:6px; height:6px;
  background: radial-gradient(circle, #ffd700 0%, transparent 100%);
  border-radius:50%;
  box-shadow: 10px 40px 0 #ffd700, -20px 20px 0 #ffd700, 30px 60px 0 #ffd700, -10px 50px 0 #ffd700;
  filter: blur(1px);
}
@keyframes vlb-table { 0%,100% { transform: translateX(-50%) scale(1); } 50% { transform: translateX(-50%) scale(1.02); } }
@keyframes vlb-chair { 0%,100% { transform: rotate(0); } 50% { transform: rotate(3deg); } }
@keyframes vlb-banter-a { 0%,100% { transform: rotate(0); } 25% { transform: rotate(-8deg) translateY(-3px); } 75% { transform: rotate(8deg) translateY(-2px); } }
@keyframes vlb-banter-b { 0%,100% { transform: rotate(0) translateX(0); } 50% { transform: rotate(5deg) translateX(-5px); } }
@keyframes vlb-letter { 0%,100% { transform: translateX(-50%) rotate(0) scale(1); } 25% { transform: translateX(-30%) rotate(-15deg) scale(1.1); } 75% { transform: translateX(-70%) rotate(15deg) scale(1.1); } }
@keyframes vlb-sparkle { 0% { opacity:0; } 50% { opacity:0.8; } 100% { opacity:0; } }
/* end per-scene blocks */

/* auto-stub: parent tag-classes flagged by CSS audit */
.list-item { position: absolute; pointer-events: none; }
.mist-below { position: absolute; pointer-events: none; }
.motes { position: absolute; pointer-events: none; }

/* ============ tier S ============ */
/* per-scene blocks (EXP step_scenes) */
/* forgiveness-reconciliation */
.scn-forgiveness-reconciliation {
  background: 
    radial-gradient(ellipse at 40% 60%, #2b1a10 0%, #1a0f0a 60%, #0d0705 100%),
    linear-gradient(180deg, #1c110a 0%, #2a1a12 30%, #1a0f0a 70%, #0d0705 100%);
}
.scn-forgiveness-reconciliation .floor  { position:absolute; bottom:0; left:0; right:0; height:22%; background: linear-gradient(0deg, #2a1a12, #1a0f0a); border-radius:0; box-shadow: inset 0 4px 12px rgba(0,0,0,.6); }
.scn-forgiveness-reconciliation .wall   { position:absolute; inset:0 0 22% 0; background: linear-gradient(180deg, #2f1e14 0%, #1f1109 100%); }
.scn-forgiveness-reconciliation .arch   { position:absolute; bottom:22%; left:20%; right:20%; top:10%; border-radius:50% 50% 0 0 / 100% 100% 0 0; background: none; border: 6px solid #4a2e1c; }
.scn-forgiveness-reconciliation .window { position:absolute; bottom:30%; left:38%; right:38%; top:16%; background: radial-gradient(ellipse at 50% 50%, #c89860 0%, #7a4a2a 60%, transparent 80%); border-radius:40% 40% 20% 20% / 50% 50% 30% 30%; box-shadow: 0 0 40px 20px rgba(200,152,96,.4); animation: fr-window 5s ease-in-out infinite alternate; }
.scn-forgiveness-reconciliation .figure-val { position:absolute; bottom:24%; left:32%; width:16px; height:56px; background: linear-gradient(180deg, #2e1c12 0%, #1a0d07 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: fr-figure-val 4s ease-in-out infinite; }
.scn-forgiveness-reconciliation .figure-pro { position:absolute; bottom:22%; right:34%; width:16px; height:40px; background: linear-gradient(180deg, #3a2216 0%, #1f1109 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; transform: scaleY(0.8) translateY(8px); animation: fr-figure-pro 3s ease-in-out infinite; }
.scn-forgiveness-reconciliation .julia   { position:absolute; bottom:16%; left:50%; width:16px; height:30px; background: linear-gradient(180deg, #4a2e1c 0%, #2a180e 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform: translateX(-50%) rotate(-20deg); transform-origin: bottom center; animation: fr-julia 6s ease-in-out infinite; }
.scn-forgiveness-reconciliation .ring    { position:absolute; bottom:32%; left:34%; width:8px; height:8px; background: radial-gradient(circle, #ffd080 0%, #b08040 100%); border-radius:50%; box-shadow: 0 0 16px 6px rgba(255,208,128,.5); animation: fr-ring 2s ease-in-out infinite alternate; }

@keyframes fr-window { 0% { opacity:.6; transform: scale(1); } 50% { opacity:.9; transform: scale(1.02); } 100% { opacity:.7; transform: scale(1); } }
@keyframes fr-figure-val { 0%,100% { transform: translateY(0) rotate(-2deg); } 50% { transform: translateY(-2px) rotate(2deg); } }
@keyframes fr-figure-pro { 0%,100% { transform: scaleY(0.8) translateY(8px) rotate(0); } 50% { transform: scaleY(0.85) translateY(6px) rotate(3deg); } }
@keyframes fr-julia { 0%,100% { transform: translateX(-50%) rotate(-20deg) scaleY(1); } 50% { transform: translateX(-50%) rotate(-25deg) scaleY(0.95); } }
@keyframes fr-ring { 0% { box-shadow: 0 0 12px 4px rgba(255,208,128,.4); } 50% { box-shadow: 0 0 24px 10px rgba(255,208,128,.7); } 100% { box-shadow: 0 0 16px 6px rgba(255,208,128,.5); } }

/* double-wedding-plan */
.scn-double-wedding-plan {
  background: 
    radial-gradient(ellipse at 50% 20%, #fff7e0 0%, #e8d4a0 40%, #c4a470 80%, #a08850 100%),
    linear-gradient(180deg, #f5e6c8 0%, #d4b88a 100%);
}
.scn-double-wedding-plan .floor { position:absolute; bottom:0; left:0; right:0; height:20%; background: linear-gradient(0deg, #9a7a4a 0%, #b89860 100%); border-radius:0; box-shadow: inset 0 4px 12px rgba(0,0,0,.3); }
.scn-double-wedding-plan .column-left  { position:absolute; bottom:0; left:12%; width:12px; height:80%; background: linear-gradient(180deg, #d4b88a 0%, #b89860 100%); border-radius:6px 6px 0 0; box-shadow: inset -2px 0 6px rgba(0,0,0,.2); }
.scn-double-wedding-plan .column-right { position:absolute; bottom:0; right:12%; width:12px; height:80%; background: linear-gradient(180deg, #d4b88a 0%, #b89860 100%); border-radius:6px 6px 0 0; box-shadow: inset 2px 0 6px rgba(0,0,0,.2); }
.scn-double-wedding-plan .altar { position:absolute; bottom:20%; left:50%; width:60px; height:40px; transform:translateX(-50%); background: linear-gradient(180deg, #d4a870 0%, #b08040 100%); border-radius:8% 8% 4% 4%; box-shadow: 0 4px 12px rgba(0,0,0,.4); }
.scn-double-wedding-plan .couple-one { position:absolute; bottom:24%; left:28%; width:20px; height:50px; background: linear-gradient(180deg, #3a2a1a 0%, #1f1109 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: dw-couple1 6s ease-in-out infinite; }
.scn-double-wedding-plan .couple-two { position:absolute; bottom:24%; right:28%; width:20px; height:50px; background: linear-gradient(180deg, #3a2a1a 0%, #1f1109 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: dw-couple2 6s ease-in-out infinite; }
.scn-double-wedding-plan .garland { position:absolute; top:30%; left:10%; right:10%; height:20px; background: radial-gradient(circle at 20% 50%, #c8553d 2px, transparent 2px), radial-gradient(circle at 40% 50%, #b87878 2px, transparent 2px), radial-gradient(circle at 60% 50%, #702243 2px, transparent 2px), radial-gradient(circle at 80% 50%, #c8553d 2px, transparent 2px); background-size: 20px 20px; background-repeat: repeat-x; animation: dw-garland 8s linear infinite; }
.scn-double-wedding-plan .light-rays { position:absolute; top:5%; left:30%; right:30%; height:60%; background: linear-gradient(180deg, rgba(255,247,224,.6) 0%, transparent 100%); border-radius:50% 50% 0 0; filter: blur(12px); animation: dw-light 7s ease-in-out infinite alternate; }

@keyframes dw-couple1 { 0%,100% { transform: translateY(0) rotate(-2deg); } 50% { transform: translateY(-3px) rotate(2deg); } }
@keyframes dw-couple2 { 0%,100% { transform: translateY(0) rotate(2deg); } 50% { transform: translateY(-3px) rotate(-2deg); } }
@keyframes dw-garland { 0% { background-position: 0 0; } 100% { background-position: 40px 0; } }
@keyframes dw-light { 0% { opacity:.5; transform: scaleY(1); } 50% { opacity:.8; transform: scaleY(1.1); } 100% { opacity:.6; transform: scaleY(1); } }

.scn-item-rings-vows { background: #1a0f0a; } /* fallback */
.scn-item-rings-vows { background: radial-gradient(ellipse at 50% 70%, #3a1e12 0%, #140b07 70%, #0a0502 100%), linear-gradient(180deg, #2a1510 0%, #1a0f0a 50%, #0f0703 100%); }
.scn-item-rings-vows .bg-wall { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #2c1810 0%, #1a0f0a 100%); }
.scn-item-rings-vows .bg-table { position:absolute; bottom:0; left:10%; right:10%; height:45%; background: linear-gradient(180deg, #3a2218 0%, #1f120b 100%); border-radius: 30% 30% 0 0 / 20% 20% 0 0; }
.scn-item-rings-vows .hand-left { position:absolute; bottom:20%; left:30%; width:50px; height:35px; background: linear-gradient(180deg, #c8a080 0%, #a07650 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; transform: rotate(-20deg); animation: irv-hand-l 6s ease-in-out infinite; }
.scn-item-rings-vows .hand-right { position:absolute; bottom:20%; left:55%; width:50px; height:35px; background: linear-gradient(180deg, #c8a080 0%, #a07650 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; transform: rotate(20deg); animation: irv-hand-r 6s ease-in-out infinite; }
.scn-item-rings-vows .ring-glow { position:absolute; bottom:27%; left:48%; width:14px; height:14px; background: radial-gradient(circle, #f0d080 0%, #c09050 40%, transparent 70%); border-radius: 50%; box-shadow: 0 0 30px 10px #e0b050, 0 0 60px 20px rgba(224,176,80,.4); animation: irv-glow 2s ease-in-out infinite alternate; }
.scn-item-rings-vows .candle { position:absolute; top:40%; left:70%; width:6px; height:40px; background: linear-gradient(180deg, #f0e0c0 0%, #d0b090 40%, #a08060 100%); border-radius: 10% 10% 5% 5%; transform: rotate(5deg); }
.scn-item-rings-vows .candle-glow { position:absolute; top:38%; left:68%; width:16px; height:16px; background: radial-gradient(circle, #ffc080 0%, #f0a050 40%, transparent 70%); border-radius:50%; box-shadow: 0 0 40px 15px rgba(240,160,80,.5); animation: irv-candle 3s ease-in-out infinite alternate; }
.scn-item-rings-vows .shadow-hand { position:absolute; bottom:15%; left:25%; width:70px; height:30px; background: linear-gradient(180deg, #0a0503 0%, transparent 100%); border-radius: 40%; filter: blur(4px); opacity:0.6; animation: irv-shadow 6s ease-in-out infinite; }
@keyframes irv-hand-l { 0%{transform:rotate(-20deg) translateY(0)} 50%{transform:rotate(-25deg) translateY(-2px)} 100%{transform:rotate(-20deg) translateY(0)} }
@keyframes irv-hand-r { 0%{transform:rotate(20deg) translateY(0)} 50%{transform:rotate(25deg) translateY(-2px)} 100%{transform:rotate(20deg) translateY(0)} }
@keyframes irv-glow { 0%{opacity:.7;box-shadow:0 0 20px 5px #e0b050,0 0 40px 10px rgba(224,176,80,.3)} 50%{opacity:1;box-shadow:0 0 40px 15px #f0d080,0 0 80px 25px rgba(240,208,128,.5)} 100%{opacity:.8;box-shadow:0 0 25px 8px #e0b050,0 0 50px 15px rgba(224,176,80,.4)} }
@keyframes irv-candle { 0%{opacity:.8;transform:scaleX(1)} 50%{opacity:1;transform:scaleX(1.1)} 100%{opacity:.9;transform:scaleX(.95)} }
@keyframes irv-shadow { 0%{opacity:.5;transform:translateX(0)} 50%{opacity:.7;transform:translateX(5px)} 100%{opacity:.5;transform:translateX(0)} }

.scn-verona-julia-house { background: #e8dcc8; } /* fallback */
.scn-verona-julia-house { background: linear-gradient(180deg, #f0e8d8 0%, #dcc8b0 40%, #c0a890 100%), radial-gradient(ellipse at 30% 40%, #fff8e0 0%, transparent 60%); }
.scn-verona-julia-house .room-back { position:absolute; inset:0 0 15% 0; background: linear-gradient(180deg, #e0d4c0 0%, #cfbca5 100%); }
.scn-verona-julia-house .window-frame { position:absolute; top:10%; left:25%; width:40%; height:55%; border: 6px solid #8a7050; border-radius: 4% 4% 2% 2%; background: transparent; box-shadow: inset 0 0 20px rgba(0,0,0,.1); }
.scn-verona-julia-house .window-glass { position:absolute; top:10%; left:25%; width:calc(40% - 12px); height:calc(55% - 12px); margin:6px; background: linear-gradient(180deg, #c8d8e8 0%, #a0b8d0 100%); opacity:0.6; animation: vjh-glass 12s ease-in-out infinite alternate; }
.scn-verona-julia-house .curtain-left { position:absolute; top:10%; left:24%; width:12%; height:55%; background: linear-gradient(180deg, #d0b898 0%, #b09878 100%); border-radius: 0 10% 10% 0 / 0 20% 20% 0; transform-origin: 0 0; animation: vjh-curtain-l 8s ease-in-out infinite alternate; }
.scn-verona-julia-house .curtain-right { position:absolute; top:10%; right:24%; width:12%; height:55%; background: linear-gradient(180deg, #d0b898 0%, #b09878 100%); border-radius: 10% 0 0 10% / 20% 0 0 20%; transform-origin: 100% 0; animation: vjh-curtain-r 8s ease-in-out infinite alternate; }
.scn-verona-julia-house .silhouette-figure { position:absolute; bottom:20%; left:45%; width:40px; height:70px; background: linear-gradient(180deg, #2c2418 0%, #1a140e 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: vjh-figure 6s ease-in-out infinite; }
.scn-verona-julia-house .chair { position:absolute; bottom:20%; left:55%; width:30px; height:45px; background: linear-gradient(180deg, #8a7050 0%, #5a4830 100%); border-radius: 10% 10% 20% 20% / 20% 20% 10% 10%; }
.scn-verona-julia-house .floor-line { position:absolute; bottom:15%; left:0; right:0; height:2px; background: #c0a890; opacity:0.5; }
@keyframes vjh-glass { 0%{opacity:.5} 50%{opacity:.7} 100%{opacity:.5} }
@keyframes vjh-curtain-l { 0%{transform:scaleX(1)} 50%{transform:scaleX(1.1)} 100%{transform:scaleX(1)} }
@keyframes vjh-curtain-r { 0%{transform:scaleX(1)} 50%{transform:scaleX(1.1)} 100%{transform:scaleX(1)} }
@keyframes vjh-figure { 0%{transform:translateY(0) rotate(-2deg)} 50%{transform:translateY(-3px) rotate(2deg)} 100%{transform:translateY(0) rotate(-1deg)} }

.scn-proteus-betrayal-intent { background: #e8d4b0; } /* fallback */
.scn-proteus-betrayal-intent { background: linear-gradient(180deg, #f0e0c8 0%, #d4b898 40%, #a07c60 100%), radial-gradient(ellipse at 50% 0%, #ffe8c0 0%, transparent 60%); }
.scn-proteus-betrayal-intent .sky-sun { position:absolute; top:0; left:0; right:0; height:60%; background: linear-gradient(180deg, #f8ecc0 0%, #e8d0a0 50%, #c0a070 100%); animation: pbi-sky 20s ease-in-out infinite alternate; }
.scn-proteus-betrayal-intent .buildings { position:absolute; top:20%; left:0; right:0; height:60%; background: linear-gradient(180deg, #b09070 0%, #806050 50%, #604030 100%); border-radius: 0 0 20% 20% / 0 0 10% 10%; }
.scn-proteus-betrayal-intent .archway { position:absolute; top:25%; left:30%; width:30%; height:45%; background: #806050; border: 4px solid #5a3a2a; border-radius: 50% 50% 0 0 / 80% 80% 0 0; box-shadow: inset 0 0 0 4px #2a1a10; }
.scn-proteus-betrayal-intent .silhouette-valentine { position:absolute; bottom:30%; left:35%; width:40px; height:70px; background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%); border-radius: 45% 45% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom; animation: pbi-fig-l 4s ease-in-out infinite; }
.scn-proteus-betrayal-intent .silhouette-silvia { position:absolute; bottom:30%; left:48%; width:35px; height:65px; background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom; animation: pbi-fig-r 4s ease-in-out infinite; }
.scn-proteus-betrayal-intent .shadow-hard { position:absolute; bottom:28%; left:30%; width:20%; height:30%; background: linear-gradient(180deg, rgba(0,0,0,.3) 0%, transparent 100%); filter: blur(2px); }
.scn-proteus-betrayal-intent .gravel { position:absolute; bottom:30%; left:0; right:0; height:10%; background: radial-gradient(circle at 20% 50%, #8a6a4a 0%, transparent 50%); background-size: 20px 10px; }
.scn-proteus-betrayal-intent .glint { position:absolute; top:30%; left:42%; width:8px; height:8px; background: #fff8e0; border-radius: 50%; box-shadow: 0 0 20px 5px rgba(255,248,224,.6); animation: pbi-glint 3s ease-in-out infinite alternate; }
@keyframes pbi-sky { 0%{opacity:.9} 50%{opacity:1} 100%{opacity:.8} }
@keyframes pbi-fig-l { 0%{transform:translateY(0) rotate(-2deg); opacity:.95} 50%{transform:translateY(-3px) rotate(2deg); opacity:1} 100%{transform:translateY(0) rotate(-1deg); opacity:.95} }
@keyframes pbi-fig-r { 0%{transform:translateY(0) rotate(2deg); opacity:.95} 50%{transform:translateY(-2px) rotate(-1deg); opacity:1} 100%{transform:translateY(0) rotate(1deg); opacity:.95} }
@keyframes pbi-glint { 0%{opacity:.3; transform:scale(.8)} 50%{opacity:1; transform:scale(1.2)} 100%{opacity:.4; transform:scale(.9)} }

.scn-proteus-plot-reveal { background: #0a0806; } /* fallback */
.scn-proteus-plot-reveal { background: radial-gradient(ellipse at 50% 80%, #1a100a 0%, #0a0806 60%, #030201 100%), linear-gradient(180deg, #120c08 0%, #0a0806 50%, #050302 100%); }
.scn-proteus-plot-reveal .darkness { position:absolute; inset:0; background: linear-gradient(180deg, rgba(0,0,0,.6) 0%, transparent 40%, rgba(0,0,0,.8) 100%); }
.scn-proteus-plot-reveal .floor-dark { position:absolute; bottom:0; left:0; right:0; height:35%; background: linear-gradient(180deg, #0f0a07 0%, #080503 100%); border-radius: 10% 10% 0 0 / 30% 30% 0 0; }
.scn-proteus-plot-reveal .figure-lone { position:absolute; bottom:30%; left:45%; width:40px; height:80px; background: linear-gradient(180deg, #1a1410 0%, #0a0806 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom; animation: ppr-figure 8s ease-in-out infinite; }
.scn-proteus-plot-reveal .cloak-edge { position:absolute; bottom:30%; left:44%; width:50px; height:40px; background: linear-gradient(180deg, #1c1612 0%, #0e0a08 100%); border-radius: 50% 50% 30% 30% / 80% 80% 20% 20%; transform: rotate(5deg); animation: ppr-cloak 8s ease-in-out infinite; }
.scn-proteus-plot-reveal .lamp-glow { position:absolute; bottom:40%; left:20%; width:40px; height:40px; background: radial-gradient(circle, #d0a050 0%, #a07030 30%, transparent 70%); border-radius: 50%; box-shadow: 0 0 60px 20px rgba(160,112,48,.4), 0 0 120px 40px rgba(160,112,48,.2); animation: ppr-lamp-glow 4s ease-in-out infinite alternate; }
.scn-proteus-plot-reveal .lamp-body { position:absolute; bottom:55%; left:19%; width:12px; height:30px; background: linear-gradient(180deg, #8a6a40 0%, #5a4020 100%); border-radius: 10% 10% 5% 5%; }
.scn-proteus-plot-reveal .letter-shape { position:absolute; bottom:38%; left:48%; width:30px; height:20px; background: #dcc8a0; border-radius: 4%; transform: rotate(15deg); box-shadow: 0 2px 4px rgba(0,0,0,.5); animation: ppr-letter 8s ease-in-out infinite; }
.scn-proteus-plot-reveal .shadow-pool { position:absolute; bottom:25%; left:30%; width:40%; height:15%; background: radial-gradient(ellipse, rgba(0,0,0,.5) 0%, transparent 70%); opacity:0.6; animation: ppr-shadowpool 6s ease-in-out infinite alternate; }
@keyframes ppr-figure { 0%{transform:translateY(0) rotate(-1deg); opacity:.9} 50%{transform:translateY(-4px) rotate(1deg); opacity:1} 100%{transform:translateY(0) rotate(0); opacity:.9} }
@keyframes ppr-cloak { 0%{transform:rotate(5deg) skewX(0)} 50%{transform:rotate(8deg) skewX(-2deg)} 100%{transform:rotate(5deg) skewX(0)} }
@keyframes ppr-lamp-glow { 0%{opacity:.6; box-shadow:0 0 40px 10px rgba(160,112,48,.3),0 0 80px 20px rgba(160,112,48,.1)} 50%{opacity:1; box-shadow:0 0 60px 20px rgba(160,112,48,.5),0 0 120px 40px rgba(160,112,48,.2)} 100%{opacity:.7; box-shadow:0 0 50px 15px rgba(160,112,48,.4),0 0 100px 30px rgba(160,112,48,.15)} }
@keyframes ppr-letter { 0%{transform:rotate(15deg) translateY(0)} 50%{transform:rotate(20deg) translateY(-2px)} 100%{transform:rotate(15deg) translateY(0)} }
@keyframes ppr-shadowpool { 0%{opacity:.5; transform:scaleX(1)} 50%{opacity:.7; transform:scaleX(1.1)} 100%{opacity:.5; transform:scaleX(1)} }

.scn-julia-disguise-journey { background: linear-gradient(180deg, #f0e4c0 0%, #d4c8a8 30%, #b0a080 70%), radial-gradient(ellipse at 70% 100%, #d4c8a8 0%, transparent 60%); }
.scn-julia-disguise-journey .sky { position: absolute; inset: 0 0 45% 0; background: linear-gradient(180deg, #f8f0e0 0%, #d4d8e0 60%, transparent); animation: jdj-sky 8s ease-in-out infinite alternate; }
.scn-julia-disguise-journey .hills { position: absolute; bottom: 35%; left: 0; right: 0; height: 30%; background: linear-gradient(180deg, #8a9a6a 0%, #5a6a3a 100%); border-radius: 50% 50% 0 0 / 80% 70% 0 0; box-shadow: inset 0 6px 20px rgba(0,0,0,.2); animation: jdj-hills 20s ease-in-out infinite alternate; }
.scn-julia-disguise-journey .window-frame { position: absolute; top: 10%; left: 25%; width: 120px; height: 160px; background: linear-gradient(135deg, #c0a880 0%, #a08060 50%, #806040 100%); border-radius: 4px; box-shadow: 0 8px 20px rgba(0,0,0,.3); animation: jdj-window 6s ease-in-out infinite; }
.scn-julia-disguise-journey .sunbeam { position: absolute; top: 12%; left: 28%; width: 80px; height: 300px; background: linear-gradient(180deg, rgba(255,240,180,.5) 0%, rgba(255,220,140,.2) 70%, transparent); clip-path: polygon(0 0, 100% 0, 60% 100%, 40% 100%); animation: jdj-sunbeam 4s ease-in-out infinite alternate; }
.scn-julia-disguise-journey .table { position: absolute; bottom: 24%; left: 20%; width: 140px; height: 30px; background: linear-gradient(180deg, #8a7050 0%, #5a4a30 100%); border-radius: 4px; box-shadow: 0 4px 12px rgba(0,0,0,.3); transform: perspective(400px) rotateX(5deg); }
.scn-julia-disguise-journey .letter { position: absolute; bottom: 26%; left: 26%; width: 50px; height: 35px; background: #f0e0c0; border-radius: 2px; box-shadow: 0 2px 6px rgba(0,0,0,.2); transform-origin: left center; animation: jdj-letter 5s ease-in-out infinite; }
.scn-julia-disguise-journey .figure { position: absolute; bottom: 22%; left: 40%; width: 30px; height: 70px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%; transform-origin: bottom center; animation: jdj-figure 4s ease-in-out infinite; }
.scn-julia-disguise-journey .cloak { position: absolute; bottom: 22%; left: 38%; width: 40px; height: 60px; background: linear-gradient(135deg, #6a5a4a 0%, #4a3a2a 100%); border-radius: 20% 60% 30% 70% / 60% 30% 70% 20%; transform-origin: top center; animation: jdj-cloak 4s ease-in-out infinite; }
@keyframes jdj-sky { 0% { opacity: .7 } 50% { opacity: 1 } 100% { opacity: .6 } }
@keyframes jdj-hills { 0% { transform: translateY(0) } 50% { transform: translateY(-3px) } 100% { transform: translateY(0) } }
@keyframes jdj-window { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-2px) } }
@keyframes jdj-sunbeam { 0% { opacity: .2; transform: scaleY(.9) } 50% { opacity: .5; transform: scaleY(1.1) } 100% { opacity: .3; transform: scaleY(.95) } }
@keyframes jdj-letter { 0%,100% { transform: rotate(-2deg) translateY(0) } 25% { transform: rotate(2deg) translateY(-1px) } 50% { transform: rotate(0) translateY(-2px) } 75% { transform: rotate(-1deg) translateY(-1px) } }
@keyframes jdj-figure { 0%,100% { transform: rotate(-1deg) translateY(0) } 50% { transform: rotate(1deg) translateY(-2px) } }
@keyframes jdj-cloak { 0%,100% { transform: rotate(0) } 50% { transform: rotate(3deg) } }

.scn-valentine-banishment { background: linear-gradient(180deg, #1a1a2a 0%, #2a2a3a 30%, #3a3a4a 70%), radial-gradient(ellipse at 50% 70%, #3a3a4a 0%, transparent 80%); }
.scn-valentine-banishment .bg-wall { position: absolute; inset: 0 0 35% 0; background: linear-gradient(90deg, #2a2a3a 0%, #3a3a4a 40%, #2a2a3a 100%); animation: vb-wall 12s ease-in-out infinite alternate; }
.scn-valentine-banishment .floor { position: absolute; bottom: 0; left: 0; right: 0; height: 35%; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); box-shadow: inset 0 8px 20px rgba(0,0,0,.6); }
.scn-valentine-banishment .door { position: absolute; bottom: 20%; left: 50%; width: 100px; height: 160px; transform: translateX(-50%); background: linear-gradient(180deg, #4a4a5a 0%, #2a2a3a 100%); border-radius: 4px 4px 0 0; box-shadow: 0 8px 20px rgba(0,0,0,.5); animation: vb-door 7s ease-in-out infinite; }
.scn-valentine-banishment .figure-val { position: absolute; bottom: 22%; left: 44%; width: 28px; height: 65px; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%; transform-origin: bottom center; animation: vb-figure 3s ease-in-out infinite; }
.scn-valentine-banishment .chain { position: absolute; bottom: 30%; left: 52%; width: 6px; height: 50px; background: #6a6a7a; border-radius: 2px; box-shadow: 0 0 6px rgba(100,100,120,.5); transform-origin: top center; animation: vb-chain 5s ease-in-out infinite; }
.scn-valentine-banishment .window-high { position: absolute; top: 10%; left: 20%; width: 60px; height: 80px; background: linear-gradient(135deg, #4a5a6a 0%, #2a3a4a 100%); border-radius: 4px; box-shadow: 0 0 20px rgba(80,120,160,.3); animation: vb-window 9s ease-in-out infinite alternate; }
.scn-valentine-banishment .shadow { position: absolute; bottom: 10%; left: 10%; width: 140px; height: 120px; background: rgba(10,10,20,.6); border-radius: 60% 40% 40% 60% / 50% 60% 40% 50%; filter: blur(8px); animation: vb-shadow 6s ease-in-out infinite; }
@keyframes vb-wall { 0% { opacity: .8 } 50% { opacity: 1 } 100% { opacity: .7 } }
@keyframes vb-door { 0%,100% { transform: translateX(-50%) } 30% { transform: translateX(-50%) rotateY(10deg) } 60% { transform: translateX(-50%) rotateY(-5deg) } }
@keyframes vb-figure { 0%,100% { transform: translateY(0) rotate(0) } 25% { transform: translateY(-3px) rotate(-2deg) } 50% { transform: translateY(0) rotate(2deg) } 75% { transform: translateY(-2px) rotate(-1deg) } }
@keyframes vb-chain { 0%,100% { transform: rotate(-5deg) } 50% { transform: rotate(5deg) } }
@keyframes vb-window { 0% { opacity: .2; box-shadow: 0 0 10px rgba(80,120,160,.2) } 50% { opacity: .5; box-shadow: 0 0 30px rgba(80,120,160,.5) } 100% { opacity: .3; box-shadow: 0 0 15px rgba(80,120,160,.3) } }
@keyframes vb-shadow { 0%,100% { transform: translateX(0) scaleX(1) } 50% { transform: translateX(10px) scaleX(.9) } }

.scn-duke-advice-outlaws { background: linear-gradient(180deg, #4a5a4a 0%, #2a3a2a 40%, #1a2a1a 80%), radial-gradient(ellipse at 50% 120%, #2a3a2a 0%, transparent 70%); }
.scn-duke-advice-outlaws .bg-forest { position: absolute; inset: 0 0 40% 0; background: linear-gradient(180deg, #4a6a4a 0%, #2a4a2a 100%); animation: dao-forest 20s ease-in-out infinite alternate; }
.scn-duke-advice-outlaws .ground { position: absolute; bottom: 0; left: 0; right: 0; height: 40%; background: linear-gradient(180deg, #3a4a3a 0%, #1a2a1a 100%); border-radius: 60% 40% 0 0 / 80% 50% 0 0; box-shadow: inset 0 6px 16px rgba(0,0,0,.4); }
.scn-duke-advice-outlaws .tree-trunk { position: absolute; bottom: 30%; left: 20%; width: 30px; height: 200px; background: linear-gradient(90deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 6px; box-shadow: 0 6px 12px rgba(0,0,0,.3); animation: dao-tree 12s ease-in-out infinite; }
.scn-duke-advice-outlaws .figure-duke { position: absolute; bottom: 18%; left: 30%; width: 26px; height: 60px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 30% 30% 20% 20% / 40% 40% 20% 20%; transform-origin: bottom center; animation: dao-figure-a 5s ease-in-out infinite; }
.scn-duke-advice-outlaws .figure-thurio { position: absolute; bottom: 18%; left: 42%; width: 28px; height: 62px; background: linear-gradient(180deg, #3a4a3a 0%, #1a2a1a 100%); border-radius: 30% 30% 20% 20% / 40% 40% 20% 20%; transform-origin: bottom center; animation: dao-figure-b 6s ease-in-out infinite; }
.scn-duke-advice-outlaws .figure-proteus { position: absolute; bottom: 18%; left: 52%; width: 26px; height: 60px; background: linear-gradient(180deg, #2a3a4a 0%, #0a1a2a 100%); border-radius: 30% 30% 20% 20% / 40% 40% 20% 20%; transform-origin: bottom center; animation: dao-figure-c 4s ease-in-out infinite; }
.scn-duke-advice-outlaws .leaves { position: absolute; top: 10%; left: 5%; width: 120px; height: 80px; background: radial-gradient(circle at 30% 50%, #5a8a4a 0%, transparent 70%); border-radius: 50%; filter: blur(10px); animation: dao-leaves 30s linear infinite; }
.scn-duke-advice-outlaws .branch { position: absolute; top: 15%; left: 12%; width: 100px; height: 8px; background: #3a2a1a; border-radius: 4px; transform: rotate(-15deg); box-shadow: 0 2px 4px rgba(0,0,0,.3); animation: dao-branch 9s ease-in-out infinite; }
@keyframes dao-forest { 0% { opacity: .7 } 50% { opacity: 1 } 100% { opacity: .8 } }
@keyframes dao-tree { 0%,100% { transform: rotate(0) } 50% { transform: rotate(2deg) } }
@keyframes dao-figure-a { 0%,100% { transform: rotate(-1deg) translateY(0) } 50% { transform: rotate(2deg) translateY(-2px) } }
@keyframes dao-figure-b { 0%,100% { transform: rotate(1deg) translateY(0) } 50% { transform: rotate(-1deg) translateY(-3px) } }
@keyframes dao-figure-c { 0%,100% { transform: rotate(0) } 30% { transform: rotate(-3deg) translateY(-1px) } 70% { transform: rotate(2deg) translateY(-2px) } }
@keyframes dao-leaves { 0% { transform: translateX(0) } 50% { transform: translateX(30px) } 100% { transform: translateX(0) } }
@keyframes dao-branch { 0%,100% { transform: rotate(-15deg) translateY(0) } 50% { transform: rotate(-12deg) translateY(-2px) } }

.scn-proteus-double-betrayal { background: linear-gradient(180deg, #1a2a3a 0%, #2a3a4a 40%, #4a5a6a 80%), radial-gradient(ellipse at 70% 50%, #4a6a8a 0%, transparent 70%); }
.scn-proteus-double-betrayal .bg-wall-int { position: absolute; inset: 0 0 30% 0; background: linear-gradient(90deg, #2a3a4a 0%, #3a4a5a 40%, #2a3a4a 100%); animation: pdb-wall 8s ease-in-out infinite alternate; }
.scn-proteus-double-betrayal .window-lit { position: absolute; top: 12%; left: 55%; width: 80px; height: 120px; background: linear-gradient(135deg, #6a8aaa 0%, #4a6a8a 100%); border-radius: 4px; box-shadow: 0 0 30px 6px rgba(100,140,180,.6); animation: pdb-window 5s ease-in-out infinite alternate; }
.scn-proteus-double-betrayal .light-beam { position: absolute; top: 14%; left: 57%; width: 60px; height: 250px; background: linear-gradient(180deg, rgba(180,200,220,.4) 0%, rgba(100,140,180,.1) 80%); clip-path: polygon(30% 0, 70% 0, 100% 100%, 0 100%); animation: pdb-beam 4s ease-in-out infinite; }
.scn-proteus-double-betrayal .figure-proteus { position: absolute; bottom: 22%; left: 35%; width: 28px; height: 68px; background: linear-gradient(180deg, #2a3a4a 0%, #0a1a2a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%; transform-origin: bottom center; animation: pdb-figure 3s ease-in-out infinite; }
.scn-proteus-double-betrayal .shadow-proteus { position: absolute; bottom: 8%; left: 30%; width: 100px; height: 80px; background: rgba(10,20,30,.7); border-radius: 50% 60% 40% 50% / 40% 50% 60% 50%; filter: blur(12px); animation: pdb-shadow 5s ease-in-out infinite; }
.scn-proteus-double-betrayal .door-chamber { position: absolute; bottom: 10%; left: 25%; width: 90px; height: 140px; background: linear-gradient(180deg, #4a5a6a 0%, #2a3a4a 100%); border-radius: 4px 4px 0 0; box-shadow: -4px 0 10px rgba(0,0,0,.5); transform-origin: left center; animation: pdb-door 10s ease-in-out infinite; }
.scn-proteus-double-betrayal .drapery { position: absolute; top: 5%; left: 50%; width: 40px; height: 180px; background: linear-gradient(180deg, #5a4a4a 0%, #3a2a2a 100%); border-radius: 20% 20% 40% 40% / 30% 30% 50% 50%; transform-origin: top center; animation: pdb-drapery 7s ease-in-out infinite; }
@keyframes pdb-wall { 0% { opacity: .8 } 50% { opacity: 1 } 100% { opacity: .7 } }
@keyframes pdb-window { 0% { opacity: .4; box-shadow: 0 0 20px 4px rgba(100,140,180,.4) } 50% { opacity: .7; box-shadow: 0 0 40px 10px rgba(100,140,180,.7) } 100% { opacity: .5; box-shadow: 0 0 25px 6px rgba(100,140,180,.5) } }
@keyframes pdb-beam { 0%,100% { transform: scaleX(1) } 50% { transform: scaleX(1.1) } }
@keyframes pdb-figure { 0%,100% { transform: translateY(0) rotate(0) } 25% { transform: translateY(-3px) rotate(-1deg) } 50% { transform: translateY(0) rotate(1deg) } 75% { transform: translateY(-2px) rotate(-1deg) } }
@keyframes pdb-shadow { 0%,100% { transform: translateX(0) scaleX(1) } 50% { transform: translateX(8px) scaleX(.9) } }
@keyframes pdb-door { 0%,100% { transform: rotateY(0) } 30% { transform: rotateY(-8deg) } 60% { transform: rotateY(4deg) } }
@keyframes pdb-drapery { 0%,100% { transform: rotate(0) } 50% { transform: rotate(4deg) } }

/* Scene 1: silvia-rejects-proteus (dusk, tense) */
.scn-silvia-rejects-proteus {
  background: linear-gradient(180deg, #8a4a3a 0%, #4a2a2a 30%, #1a1a2e 70%, #0e0e1a 100%),
              radial-gradient(ellipse at 30% 20%, #c86040 0%, transparent 60%);
}
.scn-silvia-rejects-proteus .sky-glow {
  position: absolute; inset: 0; 
  background: linear-gradient(180deg, rgba(200,90,60,.35) 0%, transparent 50%);
  animation: si1-skyglow 8s ease-in-out infinite alternate;
}
.scn-silvia-rejects-proteus .balcony-wall {
  position: absolute; bottom: 30%; left: 25%; width: 50%; height: 40%;
  background: linear-gradient(180deg, #3a2a2a 0%, #1a1212 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: inset 0 4px 12px rgba(0,0,0,.6);
}
.scn-silvia-rejects-proteus .window-arch {
  position: absolute; bottom: 50%; left: 40%; width: 20%; height: 25%;
  background: radial-gradient(ellipse at 50% 100%, #2a1a1a 0%, #0a0a0a 100%);
  border-radius: 50% 50% 0 0;
  box-shadow: inset 0 0 20px rgba(0,0,0,.7);
}
.scn-silvia-rejects-proteus .silvia-figure {
  position: absolute; bottom: 53%; left: 45%; width: 10%; height: 18%;
  background: linear-gradient(180deg, #1c121c 0%, #0a0a0e 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: si1-silvia 4s ease-in-out infinite;
}
.scn-silvia-rejects-proteus .proteus-figure {
  position: absolute; bottom: 16%; left: 42%; width: 9%; height: 20%;
  background: linear-gradient(180deg, #2a1a1a 0%, #0e0e0e 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 30% 30%;
  animation: si1-proteus 6s ease-in-out infinite;
}
.scn-silvia-rejects-proteus .julia-shadow {
  position: absolute; bottom: 14%; left: 62%; width: 7%; height: 16%;
  background: linear-gradient(180deg, #1e1e1e 0%, #080808 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  opacity: .5;
  animation: si1-julia 10s ease-in-out infinite;
}
.scn-silvia-rejects-proteus .lantern-light {
  position: absolute; bottom: 18%; left: 35%; width: 4%; height: 4%;
  background: radial-gradient(circle, #ffa060 0%, #d06030 70%);
  border-radius: 50%;
  box-shadow: 0 0 20px 6px rgba(255,160,96,.5), 0 0 40px 12px rgba(255,160,96,.3);
  animation: si1-lantern 2s ease-in-out infinite alternate;
}
@keyframes si1-skyglow {
  0% { opacity: .4; } 50% { opacity: .7; } 100% { opacity: .3; }
}
@keyframes si1-silvia {
  0% { transform: translateY(0) rotate(-2deg); }
  50% { transform: translateY(-3px) rotate(2deg); }
  100% { transform: translateY(0) rotate(-2deg); }
}
@keyframes si1-proteus {
  0% { transform: translateX(0); opacity: .6; }
  25% { transform: translateX(4px); opacity: .8; }
  75% { transform: translateX(-3px); opacity: .7; }
  100% { transform: translateX(0); opacity: .6; }
}
@keyframes si1-julia {
  0%, 100% { transform: translateY(0) scale(1); }
  50% { transform: translateY(2px) scale(.95); }
}
@keyframes si1-lantern {
  0% { box-shadow: 0 0 16px 4px rgba(255,160,96,.4), 0 0 32px 8px rgba(255,160,96,.2); }
  50% { box-shadow: 0 0 28px 8px rgba(255,160,96,.6), 0 0 56px 16px rgba(255,160,96,.35); }
  100% { box-shadow: 0 0 20px 5px rgba(255,160,96,.5), 0 0 40px 10px rgba(255,160,96,.25); }
}

/* Scene 2: item-portrait-ring (dim interior, warm) */
.scn-item-portrait-ring {
  background: linear-gradient(180deg, #2a1a12 0%, #1a1210 40%, #0e0a08 100%),
              radial-gradient(ellipse at 50% 80%, #3a2215 0%, transparent 70%);
}
.scn-item-portrait-ring .bg-wall {
  position: absolute; inset: 0;
  background: linear-gradient(135deg, #1f140e 0%, #2a1a12 100%);
}
.scn-item-portrait-ring .table-top {
  position: absolute; bottom: 5%; left: 10%; width: 80%; height: 30%;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1208 100%);
  border-radius: 20% 20% 0 0;
  box-shadow: 0 -4px 12px rgba(0,0,0,.5);
  transform: rotateX(10deg);
}
.scn-item-portrait-ring .candle-flame {
  position: absolute; bottom: 35%; left: 50%; width: 4%; height: 10%;
  background: linear-gradient(180deg, #ffd080 0%, #ff7020 60%, #c83008 100%);
  border-radius: 30% 30% 20% 20%;
  clip-path: polygon(30% 0, 70% 0, 55% 100%, 45% 100%);
  animation: it2-flame 1.6s ease-in-out infinite alternate;
}
.scn-item-portrait-ring .candle-glow {
  position: absolute; bottom: 30%; left: 42%; width: 16%; height: 20%;
  background: radial-gradient(circle, rgba(255,180,80,.5) 0%, transparent 80%);
  border-radius: 50%;
  animation: it2-glowpulse 3s ease-in-out infinite alternate;
}
.scn-item-portrait-ring .ring {
  position: absolute; bottom: 20%; left: 38%; width: 8%; height: 8%;
  background: radial-gradient(circle at 40% 40%, #c8a060 0%, #a08030 50%, #705020 100%);
  border-radius: 50%;
  box-shadow: 0 2px 8px rgba(0,0,0,.6), inset 0 1px 3px rgba(255,200,100,.4);
  animation: it2-ringglow 5s ease-in-out infinite;
}
.scn-item-portrait-ring .letter {
  position: absolute; bottom: 18%; left: 55%; width: 14%; height: 10%;
  background: linear-gradient(135deg, #d0b080 0%, #b09060 100%);
  border-radius: 4%;
  box-shadow: 0 2px 6px rgba(0,0,0,.4);
  transform: rotate(-8deg);
}
.scn-item-portrait-ring .hand-silhouette {
  position: absolute; bottom: 16%; left: 34%; width: 12%; height: 14%;
  background: linear-gradient(180deg, #1a1210 0%, #0e0a08 100%);
  border-radius: 30% 30% 20% 20% / 40% 40% 30% 30%;
  animation: it2-hand 7s ease-in-out infinite;
}
@keyframes it2-flame {
  0% { transform: scaleY(1) scaleX(1); }
  25% { transform: scaleY(1.1) scaleX(.9); }
  75% { transform: scaleY(.9) scaleX(1.1); }
  100% { transform: scaleY(1) scaleX(1); }
}
@keyframes it2-glowpulse {
  0% { opacity: .4; transform: scale(1); }
  50% { opacity: .7; transform: scale(1.1); }
  100% { opacity: .5; transform: scale(1); }
}
@keyframes it2-ringglow {
  0% { box-shadow: 0 2px 8px rgba(0,0,0,.6), inset 0 1px 3px rgba(255,200,100,.3); }
  50% { box-shadow: 0 4px 16px rgba(160,120,40,.5), inset 0 1px 3px rgba(255,200,100,.6); }
  100% { box-shadow: 0 2px 8px rgba(0,0,0,.6), inset 0 1px 3px rgba(255,200,100,.3); }
}
@keyframes it2-hand {
  0% { transform: translateY(0) rotate(0deg); }
  30% { transform: translateY(-2px) rotate(-2deg); }
  60% { transform: translateY(1px) rotate(1deg); }
  100% { transform: translateY(0) rotate(0deg); }
}

/* Scene 3: flight-to-mantua (moonlit, tense) */
.scn-flight-to-mantua {
  background: linear-gradient(180deg, #101a2e 0%, #1a2440 40%, #0e1422 100%),
              radial-gradient(ellipse at 50% 100%, #2a3a5a 0%, transparent 60%);
}
.scn-flight-to-mantua .moon-sky {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, #182848 0%, #0e1a2e 100%);
  animation: ft3-sky 12s ease-in-out infinite alternate;
}
.scn-flight-to-mantua .moon {
  position: absolute; top: 12%; left: 70%; width: 10%; height: 14%;
  background: radial-gradient(circle at 50% 50%, #f0e8d0 0%, #c8c0b0 50%, #a0a0a0 100%);
  border-radius: 50%;
  box-shadow: 0 0 40px 12px rgba(200,200,180,.3), 0 0 80px 24px rgba(200,200,180,.1);
  animation: ft3-moonglow 6s ease-in-out infinite alternate;
}
.scn-flight-to-mantua .tree-back {
  position: absolute; bottom: 20%; left: 0; width: 30%; height: 60%;
  background: linear-gradient(180deg, #1a2a1a 0%, #0e1a0e 100%);
  border-radius: 0 60% 0 0;
  animation: ft3-treeback 15s ease-in-out infinite;
}
.scn-flight-to-mantua .tree-mid {
  position: absolute; bottom: 10%; right: 10%; width: 25%; height: 70%;
  background: linear-gradient(180deg, #142214 0%, #0a120a 100%);
  border-radius: 60% 0 0 0;
  animation: ft3-treemid 20s ease-in-out infinite reverse;
}
.scn-flight-to-mantua .path-strip {
  position: absolute; bottom: 0; left: 20%; width: 60%; height: 8%;
  background: linear-gradient(180deg, #3a4a3a 0%, #2a3a2a 100%);
  border-radius: 20% 20% 0 0;
  box-shadow: inset 0 4px 12px rgba(0,0,0,.3);
}
.scn-flight-to-mantua .silvia-escape {
  position: absolute; bottom: 10%; left: 30%; width: 7%; height: 16%;
  background: linear-gradient(180deg, #1a1a2a 0%, #0e0e1a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  animation: ft3-walk 5s ease-in-out infinite;
}
.scn-flight-to-mantua .eglamour-escape {
  position: absolute; bottom: 10%; left: 42%; width: 8%; height: 18%;
  background: linear-gradient(180deg, #22222e 0%, #10101a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  animation: ft3-walk 5s ease-in-out infinite 0.5s;
}
.scn-flight-to-mantua .cloud-drift {
  position: absolute; top: 8%; left: -20%; width: 40%; height: 8%;
  background: linear-gradient(180deg, rgba(180,180,200,.4) 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(6px);
  animation: ft3-cloud 40s linear infinite;
}
@keyframes ft3-sky {
  0% { opacity: .8; } 50% { opacity: 1; } 100% { opacity: .75; }
}
@keyframes ft3-moonglow {
  0% { box-shadow: 0 0 30px 8px rgba(200,200,180,.25), 0 0 60px 16px rgba(200,200,180,.1); }
  50% { box-shadow: 0 0 50px 16px rgba(200,200,180,.4), 0 0 100px 32px rgba(200,200,180,.15); }
  100% { box-shadow: 0 0 35px 10px rgba(200,200,180,.3), 0 0 70px 20px rgba(200,200,180,.12); }
}
@keyframes ft3-treeback {
  0% { transform: translateY(0) rotate(-1deg); }
  50% { transform: translateY(-4px) rotate(1deg); }
  100% { transform: translateY(0) rotate(-1deg); }
}
@keyframes ft3-treemid {
  0% { transform: translateY(0) rotate(1deg); }
  50% { transform: translateY(-3px) rotate(-1deg); }
  100% { transform: translateY(0) rotate(1deg); }
}
@keyframes ft3-walk {
  0% { transform: translateX(0) translateY(0); }
  25% { transform: translateX(4px) translateY(-2px); }
  50% { transform: translateX(8px) translateY(0); }
  75% { transform: translateX(4px) translateY(-2px); }
  100% { transform: translateX(0) translateY(0); }
}
@keyframes ft3-cloud {
  0% { transform: translateX(0); }
  100% { transform: translateX(120vw); }
}

/* Scene 4: outlaws-capture (moonlit, dark) */
.scn-outlaws-capture {
  background: linear-gradient(180deg, #0a0e1a 0%, #121a2a 30%, #0a121e 100%),
              radial-gradient(ellipse at 30% 80%, #1a2440 0%, transparent 60%);
}
.scn-outlaws-capture .forest-bg {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, #0e1420 0%, #060a0e 100%);
  animation: oc4-forest 10s ease-in-out infinite alternate;
}
.scn-outlaws-capture .tree-left {
  position: absolute; bottom: 0; left: 0; width: 35%; height: 80%;
  background: linear-gradient(180deg, #0e1a0e 0%, #040a04 100%);
  border-radius: 0 80% 0 0;
  box-shadow: inset 0 0 20px rgba(0,0,0,.6);
  animation: oc4-treesway 8s ease-in-out infinite;
}
.scn-outlaws-capture .tree-right {
  position: absolute; bottom: 0; right: 0; width: 40%; height: 75%;
  background: linear-gradient(180deg, #0e1a0e 0%, #040a04 100%);
  border-radius: 80% 0 0 0;
  box-shadow: inset 0 0 20px rgba(0,0,0,.6);
  animation: oc4-treesway 8s ease-in-out infinite 2s;
}
.scn-outlaws-capture .outlaw-captain {
  position: absolute; bottom: 12%; left: 20%; width: 12%; height: 28%;
  background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform: scaleX(-1);
  animation: oc4-outlaw 5s ease-in-out infinite;
}
.scn-outlaws-capture .outlaw-hench {
  position: absolute; bottom: 12%; left: 36%; width: 10%; height: 24%;
  background: linear-gradient(180deg, #1e1e1e 0%, #0e0e0e 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  animation: oc4-outlaw 5s ease-in-out infinite 1.5s;
}
.scn-outlaws-capture .silvia-captured {
  position: absolute; bottom: 16%; left: 28%; width: 7%; height: 16%;
  background: linear-gradient(180deg, #1a1822 0%, #0e0c12 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  animation: oc4-silvia 4s ease-in-out infinite;
}
.scn-outlaws-capture .grasping-hand {
  position: absolute; bottom: 24%; left: 38%; width: 6%; height: 8%;
  background: radial-gradient(circle, #1a1a1a 0%, #0a0a0a 100%);
  border-radius: 40% 40% 20% 20%;
  animation: oc4-grasp 3s ease-in-out infinite alternate;
}
.scn-outlaws-capture .moon-sliver {
  position: absolute; top: 15%; left: 55%; width: 8%; height: 10%;
  background: radial-gradient(circle, rgba(200,200,220,.5) 0%, transparent 80%);
  border-radius: 50%;
  animation: oc4-moonpulse 7s ease-in-out infinite alternate;
}
@keyframes oc4-forest {
  0% { opacity: .7; } 50% { opacity: 1; } 100% { opacity: .8; }
}
@keyframes oc4-treesway {
  0% { transform: translateY(0) rotate(-1deg); }
  50% { transform: translateY(-3px) rotate(1deg); }
  100% { transform: translateY(0) rotate(-1deg); }
}
@keyframes oc4-outlaw {
  0% { transform: translateX(0) rotate(-2deg); }
  30% { transform: translateX(4px) rotate(2deg); }
  60% { transform: translateX(-2px) rotate(-1deg); }
  100% { transform: translateX(0) rotate(-2deg); }
}
@keyframes oc4-silvia {
  0% { transform: translateY(0) translateX(0); }
  25% { transform: translateY(-2px) translateX(2px); }
  50% { transform: translateY(1px) translateX(-1px); }
  75% { transform: translateY(-1px) translateX(1px); }
  100% { transform: translateY(0) translateX(0); }
}
@keyframes oc4-grasp {
  0% { transform: scale(1) rotate(0deg); }
  50% { transform: scale(1.1) rotate(5deg); }
  100% { transform: scale(1) rotate(0deg); }
}
@keyframes oc4-moonpulse {
  0% { opacity: .3; transform: scale(1); }
  50% { opacity: .6; transform: scale(1.15); }
  100% { opacity: .4; transform: scale(1); }
}

.scn-verona-open-square {
  background:
    linear-gradient(180deg, #f7d89e 0%, #e8b56a 40%, #bf8a4a 70%, #5a3a1a 100%),
    radial-gradient(ellipse at 30% 20%, #fff8e0 0%, transparent 60%);
}
.scn-verona-open-square .vo-sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #b8d0e0 0%, #f0d8b0 70%, transparent 100%);
  animation: vo-sky 8s ease-in-out infinite alternate;
}
.scn-verona-open-square .vo-sun {
  position: absolute; top: 10%; left: 30%; width: 60px; height: 60px;
  background: radial-gradient(circle, #fff8d0 0%, #f5d080 40%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 40px 20px rgba(245,208,128,0.5);
  animation: vo-sun 6s ease-in-out infinite alternate;
}
.scn-verona-open-square .vo-city {
  position: absolute; bottom: 30%; left: 0; right: 0; height: 25%;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 0 0 30% 30% / 0 0 60% 60%;
  clip-path: polygon(0% 100%, 0% 30%, 10% 30%, 10% 20%, 20% 20%, 20% 35%, 30% 35%, 30% 15%, 40% 15%, 40% 25%, 50% 25%, 50% 35%, 60% 35%, 60% 20%, 70% 20%, 70% 30%, 80% 30%, 80% 10%, 90% 10%, 90% 25%, 100% 25%, 100% 100%);
  animation: vo-city 20s ease-in-out infinite;
}
.scn-verona-open-square .vo-ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #8a7a5a 0%, #5a4a2a 100%);
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.3);
  animation: vo-ground 12s ease-in-out infinite alternate;
}
.scn-verona-open-square .vo-figure-left {
  position: absolute; bottom: 20%; left: 25%; width: 16px; height: 40px;
  background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  animation: vo-walk 4s ease-in-out infinite;
}
.scn-verona-open-square .vo-figure-right {
  position: absolute; bottom: 20%; right: 25%; width: 16px; height: 40px;
  background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  animation: vo-walk 4s ease-in-out infinite reverse;
}
.scn-verona-open-square .vo-tree {
  position: absolute; bottom: 20%; left: 15%; width: 30px; height: 70px;
  background: linear-gradient(180deg, #5a4a2a 0%, #3a2a1a 100%);
  border-radius: 50% 50% 30% 30% / 80% 80% 20% 20%;
  transform-origin: bottom center;
  animation: vo-tree 15s ease-in-out infinite alternate;
}

@keyframes vo-sky {
  0% { opacity: 0.8; }
  50% { opacity: 1; }
  100% { opacity: 0.85; }
}
@keyframes vo-sun {
  0% { transform: scale(1); box-shadow: 0 0 30px 15px rgba(245,208,128,0.4); }
  50% { transform: scale(1.05); box-shadow: 0 0 50px 25px rgba(245,208,128,0.6); }
  100% { transform: scale(0.98); box-shadow: 0 0 35px 18px rgba(245,208,128,0.45); }
}
@keyframes vo-city {
  0% { transform: translateY(0) scaleY(1); }
  50% { transform: translateY(-2px) scaleY(1.01); }
  100% { transform: translateY(0) scaleY(1); }
}
@keyframes vo-ground {
  0% { opacity: 0.9; }
  50% { opacity: 1; }
  100% { opacity: 0.92; }
}
@keyframes vo-walk {
  0% { transform: translateX(0) translateY(0) rotate(0deg); }
  25% { transform: translateX(6px) translateY(-1px) rotate(1deg); }
  50% { transform: translateX(12px) translateY(0) rotate(0deg); }
  75% { transform: translateX(18px) translateY(-1px) rotate(-1deg); }
  100% { transform: translateX(24px) translateY(0) rotate(0deg); }
}
@keyframes vo-tree {
  0% { transform: rotate(-2deg) scaleY(1); }
  50% { transform: rotate(2deg) scaleY(1.02); }
  100% { transform: rotate(-2deg) scaleY(1); }
}

.scn-item-love-letter {
  background:
    linear-gradient(180deg, #f5e6c8 0%, #d4b88a 50%, #a0805a 100%),
    radial-gradient(circle at 70% 60%, #fff8e0 0%, transparent 60%);
}
.scn-item-love-letter .il-table {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #8a7a5a 0%, #5a4a2a 100%);
  box-shadow: inset 0 8px 16px rgba(0,0,0,0.3);
  border-radius: 10% 10% 0 0;
}
.scn-item-love-letter .il-letter {
  position: absolute; bottom: 35%; left: 50%; width: 80px; height: 50px;
  transform: translateX(-50%);
  background: linear-gradient(135deg, #f5f0e0 0%, #d4c8b0 50%, #b8a88a 100%);
  border-radius: 2% 10% 10% 2%;
  box-shadow: 2px 2px 10px rgba(0,0,0,0.3);
  animation: il-letter 6s ease-in-out infinite alternate;
}
.scn-item-love-letter .il-seal {
  position: absolute; bottom: 45%; left: 50%; width: 16px; height: 16px;
  transform: translateX(-50%);
  background: radial-gradient(circle, #b8583a 0%, #8a3a1a 60%, #5a1a0a 100%);
  border-radius: 50%;
  box-shadow: 0 0 6px 2px rgba(138,58,26,0.4);
  animation: il-seal 4s ease-in-out infinite;
}
.scn-item-love-letter .il-hand {
  position: absolute; bottom: 30%; right: 30%; width: 20px; height: 34px;
  background: linear-gradient(180deg, #c8a080 0%, #a0805a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: il-hand 5s ease-in-out infinite alternate;
}
.scn-item-love-letter .il-shadow {
  position: absolute; bottom: 32%; left: 40%; width: 60px; height: 10px;
  background: linear-gradient(90deg, transparent 0%, rgba(0,0,0,0.2) 50%, transparent 100%);
  filter: blur(4px);
  animation: il-shadow 3s ease-in-out infinite alternate;
}
.scn-item-love-letter .il-ink {
  position: absolute; bottom: 38%; left: 60%; width: 10px; height: 12px;
  background: radial-gradient(circle, #2a1a0a 0%, #1a0a00 100%);
  border-radius: 50%;
  animation: il-ink 7s ease-in-out infinite;
}

@keyframes il-letter {
  0% { transform: translateX(-50%) rotate(-1deg); box-shadow: 2px 2px 8px rgba(0,0,0,0.2); }
  50% { transform: translateX(-50%) rotate(1deg); box-shadow: 4px 4px 14px rgba(0,0,0,0.35); }
  100% { transform: translateX(-50%) rotate(-1deg); box-shadow: 2px 2px 8px rgba(0,0,0,0.2); }
}
@keyframes il-seal {
  0% { transform: translateX(-50%) scale(1); opacity: 0.9; }
  50% { transform: translateX(-50%) scale(1.1); opacity: 1; }
  100% { transform: translateX(-50%) scale(1); opacity: 0.9; }
}
@keyframes il-hand {
  0% { transform: translateY(0) rotate(2deg); }
  50% { transform: translateY(-3px) rotate(-2deg); }
  100% { transform: translateY(0) rotate(2deg); }
}
@keyframes il-shadow {
  0% { opacity: 0.3; }
  50% { opacity: 0.6; }
  100% { opacity: 0.3; }
}
@keyframes il-ink {
  0% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-2px) scale(0.95); }
  100% { transform: translateY(0) scale(1); }
}

.scn-garden-letter-regret {
  background:
    linear-gradient(180deg, #e8d4a8 0%, #c8b080 40%, #8a7050 100%),
    radial-gradient(ellipse at 50% 20%, #fff0d0 0%, transparent 60%);
}
.scn-garden-letter-regret .gl-sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #b8d0d8 0%, #e8d8b8 70%, transparent 100%);
  animation: gl-sky 12s ease-in-out infinite alternate;
}
.scn-garden-letter-regret .gl-wall {
  position: absolute; bottom: 20%; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #7a6a4a 0%, #5a4a2a 100%);
  border-radius: 30% 30% 0 0;
  clip-path: polygon(0% 100%, 0% 40%, 15% 40%, 15% 30%, 30% 30%, 30% 35%, 45% 35%, 45% 20%, 60% 20%, 60% 35%, 75% 35%, 75% 25%, 90% 25%, 90% 40%, 100% 40%, 100% 100%);
}
.scn-garden-letter-regret .gl-arch {
  position: absolute; bottom: 30%; left: 50%; width: 80px; height: 70px;
  transform: translateX(-50%);
  background: linear-gradient(135deg, #9a8a6a 0%, #6a5a3a 100%);
  border-radius: 50% 50% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.2);
}
.scn-garden-letter-regret .gl-foliage {
  position: absolute; bottom: 25%; left: 10%; width: 120px; height: 60px;
  background: linear-gradient(180deg, #5a7a3a 0%, #3a5a1a 100%);
  border-radius: 60% 40% 50% 50% / 70% 60% 40% 30%;
  transform-origin: bottom center;
  animation: gl-foliage 18s ease-in-out infinite alternate;
}
.scn-garden-letter-regret .gl-bench {
  position: absolute; bottom: 18%; left: 30%; width: 50px; height: 20px;
  background: linear-gradient(180deg, #6a5a3a 0%, #4a3a1a 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: 2px 4px 8px rgba(0,0,0,0.3);
}
.scn-garden-letter-regret .gl-figure {
  position: absolute; bottom: 20%; left: 35%; width: 18px; height: 38px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a0a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  animation: gl-figure 6s ease-in-out infinite;
}
.scn-garden-letter-regret .gl-letter {
  position: absolute; bottom: 16%; left: 42%; width: 12px; height: 8px;
  background: linear-gradient(135deg, #f0e0c0 0%, #d0b890 100%);
  border-radius: 1px;
  transform: rotate(10deg);
  animation: gl-letter 5s ease-in-out infinite alternate;
}

@keyframes gl-sky {
  0% { opacity: 0.8; }
  50% { opacity: 1; }
  100% { opacity: 0.85; }
}
@keyframes gl-foliage {
  0% { transform: rotate(-3deg) scaleX(1); }
  50% { transform: rotate(3deg) scaleX(1.02); }
  100% { transform: rotate(-3deg) scaleX(1); }
}
@keyframes gl-figure {
  0% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-2px) rotate(1deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes gl-letter {
  0% { transform: rotate(8deg) translateY(0); opacity: 0.8; }
  50% { transform: rotate(12deg) translateY(-1px); opacity: 1; }
  100% { transform: rotate(8deg) translateY(0); opacity: 0.8; }
}

.scn-milan-love-declaration {
  background:
    linear-gradient(180deg, #f0e0c8 0%, #d4bc9a 40%, #b09878 100%),
    radial-gradient(circle at 70% 30%, #fff8e0 0%, transparent 50%);
}
.scn-milan-love-declaration .ml-wall {
  position: absolute; inset: 0;
  background: linear-gradient(135deg, #d4c4a8 0%, #b8a88a 50%, #9a8a6a 100%);
  box-shadow: inset 0 0 40px rgba(0,0,0,0.15);
}
.scn-milan-love-declaration .ml-window {
  position: absolute; top: 15%; left: 10%; width: 80px; height: 100px;
  background: linear-gradient(180deg, #e8f0f0 0%, #c0d0d8 100%);
  border-radius: 5% 5% 10% 10%;
  box-shadow: inset 0 0 20px rgba(255,255,240,0.6), 0 0 30px rgba(200,200,180,0.3);
  animation: ml-window 8s ease-in-out infinite alternate;
}
.scn-milan-love-declaration .ml-desk {
  position: absolute; bottom: 10%; left: 25%; right: 25%; height: 25%;
  background: linear-gradient(180deg, #8a7a5a 0%, #5a4a2a 100%);
  border-radius: 5% 5% 0 0;
  box-shadow: 0 -4px 12px rgba(0,0,0,0.2);
}
.scn-milan-love-declaration .ml-chair {
  position: absolute; bottom: 10%; left: 5%; width: 40px; height: 50px;
  background: linear-gradient(180deg, #6a5a3a 0%, #4a3a1a 100%);
  border-radius: 10% 10% 30% 30% / 20% 20% 50% 50%;
  box-shadow: 2px 2px 8px rgba(0,0,0,0.3);
}
.scn-milan-love-declaration .ml-figure {
  position: absolute; bottom: 18%; left: 30%; width: 20px; height: 50px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a0a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ml-figure 5s ease-in-out infinite;
}
.scn-milan-love-declaration .ml-paper {
  position: absolute; bottom: 22%; left: 55%; width: 30px; height: 20px;
  background: linear-gradient(135deg, #f5f0e0 0%, #d4c8b0 100%);
  border-radius: 2px;
  transform: rotate(5deg);
  box-shadow: 1px 1px 4px rgba(0,0,0,0.2);
  animation: ml-paper 6s ease-in-out infinite alternate;
}
.scn-milan-love-declaration .ml-ink {
  position: absolute; bottom: 18%; left: 70%; width: 8px; height: 10px;
  background: radial-gradient(circle, #2a1a0a 0%, #1a0a00 100%);
  border-radius: 50%;
  animation: ml-ink 4s ease-in-out infinite;
}

@keyframes ml-window {
  0% { opacity: 0.85; box-shadow: inset 0 0 20px rgba(255,255,240,0.5), 0 0 25px rgba(200,200,180,0.2); }
  50% { opacity: 1; box-shadow: inset 0 0 30px rgba(255,255,240,0.8), 0 0 40px rgba(200,200,180,0.4); }
  100% { opacity: 0.85; box-shadow: inset 0 0 20px rgba(255,255,240,0.5), 0 0 25px rgba(200,200,180,0.2); }
}
@keyframes ml-figure {
  0% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-3px) rotate(1.5deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes ml-paper {
  0% { transform: rotate(4deg) scaleX(1); }
  50% { transform: rotate(6deg) scaleX(1.02); }
  100% { transform: rotate(4deg) scaleX(1); }
}
@keyframes ml-ink {
  0% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-1px) scale(0.95); }
  100% { transform: translateY(0) scale(1); }
}
/* end per-scene blocks */
