/* 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-belmont-ring-quarrel {
  background: linear-gradient(180deg, #1a1a3e 0%, #2c2a5e 40%, #4a4878 100%), radial-gradient(ellipse at 50% 100%, #6a68a0 0%, transparent 70%);
}
.scn-belmont-ring-quarrel .night-sky {
  position:absolute; inset:0 0 40% 0;
  background: linear-gradient(180deg, #0c0c2a 0%, #1a1a4e 100%);
  animation: brq-sky 12s ease-in-out infinite alternate;
}
.scn-belmont-ring-quarrel .moon {
  position:absolute; top:8%; right:15%; width:60px; height:60px;
  background: radial-gradient(circle, #e8e8ff 0%, #c8c8e0 100%);
  border-radius:50%;
  box-shadow: 0 0 30px 10px #c8c8e0;
  animation: brq-moon 10s ease-in-out infinite alternate;
}
.scn-belmont-ring-quarrel .ring-a {
  position:absolute; bottom:35%; left:30%; width:30px; height:30px;
  border: 3px solid #d0b060;
  border-radius:50%;
  box-shadow: 0 0 10px 2px #d0b060;
  animation: brq-ring1 3s ease-in-out infinite;
}
.scn-belmont-ring-quarrel .ring-b {
  position:absolute; bottom:35%; right:30%; width:30px; height:30px;
  border: 3px solid #c0a050;
  border-radius:50%;
  box-shadow: 0 0 10px 2px #c0a050;
  animation: brq-ring2 3s ease-in-out infinite 0.5s;
}
.scn-belmont-ring-quarrel .figure-left {
  position:absolute; bottom:30%; left:20%; width:30px; height:70px;
  background: #1a1a2a;
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: brq-figL 2s ease-in-out infinite alternate;
}
.scn-belmont-ring-quarrel .figure-right {
  position:absolute; bottom:30%; right:20%; width:30px; height:70px;
  background: #2a2a3a;
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: brq-figR 2s ease-in-out infinite alternate 1s;
}
.scn-belmont-ring-quarrel .tree-branch {
  position:absolute; top:5%; left:5%; width:120px; height:10px;
  background: #3a2a1a;
  border-radius: 30% 80% 20% 40%;
  transform: rotate(-15deg);
  animation: brq-branch 7s ease-in-out infinite;
}
.scn-belmont-ring-quarrel .firefly {
  position:absolute; top:20%; left:50%; width:6px; height:6px;
  background: #ffdd66;
  border-radius:50%;
  box-shadow: 0 0 10px 3px #ffdd66;
  animation: brq-fly 4s ease-in-out infinite alternate;
}
@keyframes brq-sky { 0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.7; } }
@keyframes brq-moon { 0% { transform: translateX(0) scale(1); } 50% { transform: translateX(-14px) scale(1.05); } 100% { transform: translateX(10px) scale(0.95); } }
@keyframes brq-ring1 { 0%,100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-12px) rotate(180deg); } }
@keyframes brq-ring2 { 0%,100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-12px) rotate(-180deg); } }
@keyframes brq-figL { 0% { transform: translateX(0) rotate(0deg); } 100% { transform: translateX(8px) rotate(3deg); } }
@keyframes brq-figR { 0% { transform: translateX(0) rotate(0deg); } 100% { transform: translateX(-8px) rotate(-3deg); } }
@keyframes brq-branch { 0%,100% { transform: rotate(-15deg); } 50% { transform: rotate(-10deg); } }
@keyframes brq-fly { 0% { transform: translate(0, 0) scale(1); opacity:0.8; } 50% { transform: translate(24px, -10px) scale(1.2); opacity:1; } 100% { transform: translate(-10px, 6px) scale(0.8); opacity:0.6; } }

.scn-caskets-morocco-arrival {
  background: linear-gradient(180deg, #f5e6c8 0%, #d4b896 40%, #b8926a 100%), radial-gradient(ellipse at 50% 30%, #fff8e0 0%, transparent 70%);
}
.scn-caskets-morocco-arrival .bg {
  position: absolute; inset: 0; background: linear-gradient(180deg, #e8d4b0 0%, #c8a882 100%); animation: cma-bg 12s ease-in-out infinite alternate;
}
.scn-caskets-morocco-arrival .casket-gold {
  position: absolute; bottom: 20%; left: 20%; width: 40px; height: 50px; background: linear-gradient(135deg, #f0c040 0%, #c89030 50%, #a07020 100%); border-radius: 6px; box-shadow: 0 4px 12px rgba(0,0,0,.3); animation: cma-gold 4s ease-in-out infinite alternate;
}
.scn-caskets-morocco-arrival .casket-silver {
  position: absolute; bottom: 20%; left: 45%; width: 40px; height: 50px; background: linear-gradient(135deg, #d0d0d8 0%, #a0a0a8 50%, #808088 100%); border-radius: 6px; box-shadow: 0 4px 12px rgba(0,0,0,.3); animation: cma-silver 5s ease-in-out infinite alternate;
}
.scn-caskets-morocco-arrival .casket-lead {
  position: absolute; bottom: 20%; left: 70%; width: 40px; height: 50px; background: linear-gradient(135deg, #6a6a6e 0%, #4a4a4e 50%, #2a2a2e 100%); border-radius: 6px; box-shadow: 0 4px 12px rgba(0,0,0,.4); animation: cma-lead 6s ease-in-out infinite alternate;
}
.scn-caskets-morocco-arrival .light-ray {
  position: absolute; top: 0; left: 45%; width: 10%; height: 100%; background: linear-gradient(180deg, rgba(255,240,200,.3) 0%, transparent 100%); animation: cma-ray 8s ease-in-out infinite alternate;
}
.scn-caskets-morocco-arrival .glow {
  position: absolute; bottom: 10%; left: 35%; width: 30%; height: 20%; background: radial-gradient(ellipse, rgba(255,230,150,.15) 0%, transparent 70%); animation: cma-glow 3s ease-in-out infinite alternate;
}
@keyframes cma-bg { 0% { opacity: .8 } 50% { opacity: 1 } 100% { opacity: .9 } }
@keyframes cma-gold { 0% { transform: scale(1) rotate(0deg) } 50% { transform: scale(1.02) rotate(2deg) } 100% { transform: scale(1) rotate(0deg) } }
@keyframes cma-silver { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes cma-lead { 0% { box-shadow: 0 4px 12px rgba(0,0,0,.4) } 50% { box-shadow: 0 6px 18px rgba(0,0,0,.5) } 100% { box-shadow: 0 4px 12px rgba(0,0,0,.4) } }
@keyframes cma-ray { 0% { opacity: .5 } 50% { opacity: .8 } 100% { opacity: .6 } }
@keyframes cma-glow { 0% { opacity: .4 } 50% { opacity: .7 } 100% { opacity: .5 } }

.scn-salarino-salanio-venice-street {
  background: linear-gradient(180deg, #7a8a9a 0%, #5a6a7a 50%, #3a4a5a 100%), radial-gradient(ellipse at 50% 80%, #4a5a6a 0%, transparent 70%);
}
.scn-salarino-salanio-venice-street .sky {
  position: absolute; inset: 0 0 50% 0; background: linear-gradient(180deg, #8a9aaa 0%, #6a7a8a 100%); animation: svs-sky 15s ease-in-out infinite alternate;
}
.scn-salarino-salanio-venice-street .building-bg {
  position: absolute; bottom: 30%; left: 10%; width: 30%; height: 70%; background: linear-gradient(180deg, #8a8a7a 0%, #6a6a5a 100%); border-radius: 4px; box-shadow: inset 0 0 20px rgba(0,0,0,.3); animation: svs-bg 20s ease-in-out infinite;
}
.scn-salarino-salanio-venice-street .building-fg {
  position: absolute; bottom: 20%; right: 10%; width: 25%; height: 80%; background: linear-gradient(180deg, #9a9a8a 0%, #7a7a6a 100%); border-radius: 4px; box-shadow: inset 0 0 20px rgba(0,0,0,.3); animation: svs-fg 25s ease-in-out infinite;
}
.scn-salarino-salanio-venice-street .canal {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%; background: linear-gradient(180deg, #3a4a5a 0%, #2a3a4a 100%); animation: svs-canal 8s ease-in-out infinite alternate;
}
.scn-salarino-salanio-venice-street .gondola {
  position: absolute; bottom: 22%; left: 40%; width: 50px; height: 12px; background: linear-gradient(135deg, #2a2a2a 0%, #1a1a1a 100%); border-radius: 40% 40% 20% 20%; transform-origin: center; animation: svs-gondola 6s ease-in-out infinite;
}
.scn-salarino-salanio-venice-street .figure {
  position: absolute; bottom: 26%; left: 42%; width: 10px; height: 20px; background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: svs-figure 4s ease-in-out infinite;
}
.scn-salarino-salanio-venice-street .ripple {
  position: absolute; bottom: 15%; left: 35%; width: 60px; height: 4px; background: radial-gradient(ellipse, rgba(200,210,220,.3) 0%, transparent 100%); animation: svs-ripple 3s ease-in-out infinite alternate;
}
@keyframes svs-sky { 0% { opacity: .7 } 50% { opacity: .9 } 100% { opacity: .75 } }
@keyframes svs-bg { 0%,100% { transform: translateX(0) } 50% { transform: translateX(-2px) } }
@keyframes svs-fg { 0%,100% { transform: translateX(0) } 50% { transform: translateX(2px) } }
@keyframes svs-canal { 0% { background-position: 0 0 } 50% { background-position: 10px 10px } 100% { background-position: 0 0 } }
@keyframes svs-gondola { 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 svs-figure { 0% { transform: translateX(0) } 50% { transform: translateX(3px) } 100% { transform: translateX(0) } }
@keyframes svs-ripple { 0% { opacity: .2; transform: scaleX(1) } 50% { opacity: .6; transform: scaleX(1.2) } 100% { opacity: .2; transform: scaleX(1) } }

.scn-arragon-choice-begins {
  background: linear-gradient(180deg, #f0e0d0 0%, #d8c0a8 50%, #b09078 100%), radial-gradient(ellipse at 50% 40%, #fff0e0 0%, transparent 70%);
}
.scn-arragon-choice-begins .room {
  position: absolute; inset: 0; background: linear-gradient(180deg, #e8d8c8 0%, #c8b8a8 100%); animation: acb-room 15s ease-in-out infinite alternate;
}
.scn-arragon-choice-begins .curtain {
  position: absolute; top: 0; left: 0; right: 0; height: 20%; background: linear-gradient(135deg, #a05030 0%, #803820 50%, #602010 100%); border-radius: 0 0 40% 40%; box-shadow: 0 8px 16px rgba(0,0,0,.3); animation: acb-curtain 20s ease-in-out infinite;
}
.scn-arragon-choice-begins .prince {
  position: absolute; bottom: 15%; left: 38%; width: 20px; height: 40px; background: linear-gradient(180deg, #5a3a2a 0%, #3a2a1a 100%); border-radius: 40% 40% 35% 35% / 50% 50% 45% 45%; animation: acb-prince 4s ease-in-out infinite;
}
.scn-arragon-choice-begins .casket-left {
  position: absolute; bottom: 10%; left: 20%; width: 35px; height: 45px; background: linear-gradient(135deg, #f0c040 0%, #c89030 100%); border-radius: 4px; box-shadow: 0 4px 8px rgba(0,0,0,.3); animation: acb-cask 5s ease-in-out infinite alternate;
}
.scn-arragon-choice-begins .casket-center {
  position: absolute; bottom: 10%; left: 48%; width: 35px; height: 45px; background: linear-gradient(135deg, #d0d0d8 0%, #a0a0a8 100%); border-radius: 4px; box-shadow: 0 4px 8px rgba(0,0,0,.3); animation: acb-cask 5s ease-in-out infinite alternate 0.5s;
}
.scn-arragon-choice-begins .casket-right {
  position: absolute; bottom: 10%; left: 72%; width: 35px; height: 45px; background: linear-gradient(135deg, #6a6a6e 0%, #4a4a4e 100%); border-radius: 4px; box-shadow: 0 4px 8px rgba(0,0,0,.4); animation: acb-cask 5s ease-in-out infinite alternate 1s;
}
.scn-arragon-choice-begins .light-spot {
  position: absolute; top: 5%; left: 40%; width: 20%; height: 30%; background: radial-gradient(ellipse, rgba(255,240,200,.2) 0%, transparent 100%); animation: acb-spot 6s ease-in-out infinite alternate;
}
@keyframes acb-room { 0% { opacity: .8 } 50% { opacity: 1 } 100% { opacity: .9 } }
@keyframes acb-curtain { 0% { transform: translateY(0) } 50% { transform: translateY(3px) } 100% { transform: translateY(0) } }
@keyframes acb-prince { 0% { transform: translateX(0) rotate(0deg) } 25% { transform: translateX(2px) rotate(-2deg) } 50% { transform: translateX(0) rotate(0deg) } 75% { transform: translateX(-2px) rotate(2deg) } 100% { transform: translateX(0) rotate(0deg) } }
@keyframes acb-cask { 0% { transform: translateY(0) } 50% { transform: translateY(-3px) } 100% { transform: translateY(0) } }
@keyframes acb-spot { 0% { opacity: .3 } 50% { opacity: .6 } 100% { opacity: .4 } }

.scn-messenger-arrives-belmont {
  background: linear-gradient(180deg, #b8d0e0 0%, #90b0c8 50%, #6890a8 100%), radial-gradient(ellipse at 50% 80%, #c8e0f0 0%, transparent 70%);
}
.scn-messenger-arrives-belmont .sky {
  position: absolute; inset: 0 0 50% 0; background: linear-gradient(180deg, #c0d8e8 0%, #a0c0d8 100%); animation: mab-sky 20s ease-in-out infinite alternate;
}
.scn-messenger-arrives-belmont .sun {
  position: absolute; top: 10%; left: 70%; width: 40px; height: 40px; background: radial-gradient(circle, #ffe080 0%, #ffc040 50%, transparent 100%); border-radius: 50%; box-shadow: 0 0 40px 10px rgba(255,200,64,.5); animation: mab-sun 12s ease-in-out infinite alternate;
}
.scn-messenger-arrives-belmont .grass {
  position: absolute; bottom: 20%; left: 0; right: 0; height: 30%; background: linear-gradient(180deg, #80a060 0%, #507030 100%); animation: mab-grass 8s ease-in-out infinite alternate;
}
.scn-messenger-arrives-belmont .path {
  position: absolute; bottom: 20%; left: 30%; width: 40%; height: 15%; background: linear-gradient(180deg, #c0a880 0%, #a08868 100%); border-radius: 20% 20% 0 0; transform-origin: bottom; animation: mab-path 6s ease-in-out infinite;
}
.scn-messenger-arrives-belmont .messenger {
  position: absolute; bottom: 22%; left: 35%; width: 14px; height: 30px; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 40% 40% 35% 35% / 50% 50% 45% 45%; animation: mab-messenger 4s ease-in-out infinite;
}
.scn-messenger-arrives-belmont .house {
  position: absolute; bottom: 30%; left: 55%; width: 60px; height: 50px; background: linear-gradient(180deg, #d8c0a0 0%, #b09070 100%); border-radius: 8% 8% 4% 4%; box-shadow: 0 4px 8px rgba(0,0,0,.2); animation: mab-house 9s ease-in-out infinite;
}
.scn-messenger-arrives-belmont .leaves {
  position: absolute; top: 15%; left: 10%; width: 80px; height: 40px; background: radial-gradient(ellipse at 30% 50%, #70a050 0%, transparent 70%); filter: blur(3px); animation: mab-leaves 18s linear infinite;
}
@keyframes mab-sky { 0% { opacity: .8 } 50% { opacity: 1 } 100% { opacity: .85 } }
@keyframes mab-sun { 0% { box-shadow: 0 0 40px 10px rgba(255,200,64,.5) } 50% { box-shadow: 0 0 60px 20px rgba(255,200,64,.7) } 100% { box-shadow: 0 0 40px 10px rgba(255,200,64,.5) } }
@keyframes mab-grass { 0% { opacity: .8 } 50% { opacity: 1 } 100% { opacity: .9 } }
@keyframes mab-path { 0% { transform: scaleX(1) } 50% { transform: scaleX(1.02) } 100% { transform: scaleX(1) } }
@keyframes mab-messenger { 0% { transform: translateX(0) } 25% { transform: translateX(4px) } 50% { transform: translateX(8px) } 75% { transform: translateX(4px) } 100% { transform: translateX(0) } }
@keyframes mab-house { 0% { transform: scale(1) } 50% { transform: scale(1.01) } 100% { transform: scale(1) } }
@keyframes mab-leaves { 0% { transform: translateX(0) } 100% { transform: translateX(-100px) } }

/* shylock-house-evening: tense + bright-interior → warm amber/gold with sharp shadows */
.scn-shylock-house-evening {
  background: linear-gradient(180deg, #6b3a2a 0%, #8a5a3a 30%, #4a2a1a 70%, #2a1a0a 100%),
              radial-gradient(ellipse at 30% 50%, #c07040 0%, transparent 60%);
}
.scn-shylock-house-evening .wall { position:absolute; inset:0 0 30% 0; background: linear-gradient(90deg, #7a4a3a 0%, #a06040 50%, #7a4a3a 100%); }
.scn-shylock-house-evening .floor { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%); }
.scn-shylock-house-evening .door { position:absolute; bottom:0; left:20%; width:20%; height:70%; background: linear-gradient(180deg, #4a2a1a 0%, #2a1a0a 100%); border-radius:4% 4% 0 0; box-shadow: inset 0 0 20px rgba(0,0,0,.6); }
.scn-shylock-house-evening .window { position:absolute; bottom:35%; left:50%; width:30%; height:25%; background: radial-gradient(ellipse, #f0c060 0%, #b08030 70%, #6a4020 100%); border-radius:10%; box-shadow: 0 0 40px 10px #f0c060, 0 0 80px 20px rgba(240,192,96,.4); animation: sh-window-glow 4s ease-in-out infinite alternate; }
.scn-shylock-house-evening .table { position:absolute; bottom:10%; left:25%; width:50%; height:8%; background: linear-gradient(180deg, #5a3a2a 0%, #3a2a1a 100%); border-radius:20%; box-shadow: 0 4px 10px rgba(0,0,0,.5); }
.scn-shylock-house-evening .candle { position:absolute; bottom:18%; left:47%; width:4%; height:12%; background: linear-gradient(180deg, #ffe080 0%, #c08030 100%); border-radius:50% 50% 20% 20%; box-shadow: 0 0 30px 10px #ffc040; animation: sh-candle 2s ease-in-out infinite alternate; }
.scn-shylock-house-evening .figure { position:absolute; bottom:0; left:40%; width:15%; height:75%; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 45% 45% 40% 40% / 55% 55% 40% 40%; animation: sh-figure-walk 6s ease-in-out infinite; }
@keyframes sh-window-glow { 0% { box-shadow: 0 0 30px 5px #f0c060; opacity:.9; } 50% { box-shadow: 0 0 60px 20px #ffd080; opacity:1; } 100% { box-shadow: 0 0 20px 5px #b08030; opacity:.8; } }
@keyframes sh-candle { 0% { transform: scale(1) rotate(-2deg); } 50% { transform: scale(1.05) rotate(2deg); } 100% { transform: scale(.95) rotate(-1deg); } }
@keyframes sh-figure-walk { 0% { transform: translateX(0) rotate(1deg); } 25% { transform: translateX(2%) rotate(-1deg); } 50% { transform: translateX(4%) rotate(0deg); } 75% { transform: translateX(6%) rotate(1deg); } 100% { transform: translateX(0) rotate(-1deg); } }

/* gratiano-masque-wait: warm mood + moonlit → cool blue base with warm torch accents */
.scn-gratiano-masque-wait {
  background: linear-gradient(180deg, #1a1a3e 0%, #2a2a5a 40%, #3a3a6a 70%, #1a1a2a 100%),
              radial-gradient(ellipse at 50% 0%, #4a4a7a 0%, transparent 60%);
}
.scn-gratiano-masque-wait .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #2a2a5a 0%, #1a1a3e 100%); }
.scn-gratiano-masque-wait .moon { position:absolute; top:10%; right:15%; width:15%; height:20%; background: radial-gradient(circle, #e0e0ff 0%, #c0c0e0 60%, transparent 70%); border-radius:50%; box-shadow: 0 0 80px 30px rgba(200,200,255,.5); animation: gr-moon-glow 8s ease-in-out infinite alternate; }
.scn-gratiano-masque-wait .ground { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, #2a2a4a 0%, #1a1a2a 100%); border-radius:30% 70% 0 0 / 50% 80% 0 0; }
.scn-gratiano-masque-wait .horse { position:absolute; bottom:15%; left:20%; width:25%; height:30%; background: linear-gradient(180deg, #3a3a5a 0%, #2a2a4a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%; transform-origin: bottom center; animation: gr-horse 10s ease-in-out infinite; }
.scn-gratiano-masque-wait .figure { position:absolute; bottom:10%; left:45%; width:12%; height:35%; background: linear-gradient(180deg, #1a1a3a 0%, #0a0a1a 100%); border-radius: 45% 45% 40% 40% / 55% 55% 40% 40%; }
.scn-gratiano-masque-wait .torch-a { position:absolute; bottom:20%; left:55%; width:4%; height:15%; background: linear-gradient(180deg, #ffa040 0%, #ff6020 50%, transparent 100%); border-radius:50% 50% 20% 20%; box-shadow: 0 0 40px 15px #ff8020; animation: gr-torch 2s ease-in-out infinite alternate; animation-delay: 0s; }
.scn-gratiano-masque-wait .torch-b { position:absolute; bottom:25%; left:65%; width:3%; height:12%; background: linear-gradient(180deg, #ffa040 0%, #ff6020 50%, transparent 100%); border-radius:50% 50% 20% 20%; box-shadow: 0 0 30px 10px #ff8020; animation: gr-torch 2.5s ease-in-out infinite alternate; animation-delay: 0.5s; }
.scn-gratiano-masque-wait .clouds { position:absolute; top:20%; left:0; right:0; height:10%; background: linear-gradient(180deg, rgba(255,255,255,.15) 0%, transparent 100%); filter: blur(8px); animation: gr-clouds 30s linear infinite; }
@keyframes gr-moon-glow { 0% { opacity:.8; box-shadow: 0 0 60px 20px rgba(200,200,255,.4); } 50% { opacity:1; box-shadow: 0 0 100px 40px rgba(220,220,255,.6); } 100% { opacity:.75; box-shadow: 0 0 50px 15px rgba(200,200,255,.3); } }
@keyframes gr-horse { 0% { transform: translateY(0) rotate(0deg); } 25% { transform: translateY(-2%) rotate(-1deg); } 50% { transform: translateY(0) rotate(0deg); } 75% { transform: translateY(-1%) rotate(1deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes gr-torch { 0% { transform: scale(1) rotate(-3deg); opacity:.8; } 50% { transform: scale(1.1) rotate(2deg); opacity:1; } 100% { transform: scale(.9) rotate(-1deg); opacity:.7; } }
@keyframes gr-clouds { 0% { transform: translateX(-10%); } 100% { transform: translateX(10%); } }

/* jessica-elopement-night: tense + moonlit → cool blue/silver with sharp shadows and fast motion */
.scn-jessica-elopement-night {
  background: linear-gradient(180deg, #0a0a2a 0%, #1a1a3e 50%, #2a2a5a 100%),
              radial-gradient(ellipse at 30% 20%, #3a3a7a 0%, transparent 50%);
}
.scn-jessica-elopement-night .night-sky { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #0a0a2a 0%, #1a1a3e 100%); }
.scn-jessica-elopement-night .moon-glow { position:absolute; top:10%; left:20%; width:20%; height:25%; background: radial-gradient(circle, #d0d0ff 0%, #a0a0e0 40%, transparent 70%); border-radius:50%; animation: je-moon 10s ease-in-out infinite alternate; }
.scn-jessica-elopement-night .balcony { position:absolute; bottom:30%; left:15%; right:15%; height:25%; background: linear-gradient(180deg, #3a2a4a 0%, #2a1a3a 100%); border-radius:20% 20% 0 0; box-shadow: 0 -4px 20px rgba(0,0,0,.6); }
.scn-jessica-elopement-night .figure-jessica { position:absolute; bottom:35%; left:30%; width:12%; height:40%; background: linear-gradient(180deg, #1a1a3a 0%, #0a0a1a 100%); border-radius: 45% 45% 40% 40% / 55% 55% 40% 40%; animation: je-jessica 5s ease-in-out infinite; }
.scn-jessica-elopement-night .figure-lorenzo { position:absolute; bottom:20%; left:50%; width:14%; height:45%; background: linear-gradient(180deg, #1a1a3a 0%, #0a0a1a 100%); border-radius: 45% 45% 40% 40% / 55% 55% 40% 40%; animation: je-lorenzo 6s ease-in-out infinite; }
.scn-jessica-elopement-night .ladder { position:absolute; bottom:10%; left:35%; width:2%; height:40%; background: linear-gradient(180deg, #3a2a3a 0%, #2a1a2a 100%); border-radius:20%; transform: rotate(15deg); transform-origin: bottom left; animation: je-ladder 4s ease-in-out infinite; }
.scn-jessica-elopement-night .leaves { position:absolute; top:15%; right:10%; width:30%; height:20%; background: radial-gradient(ellipse, rgba(60,80,60,.3) 0%, transparent 70%); filter: blur(6px); animation: je-leaves 20s linear infinite; }
@keyframes je-moon { 0% { opacity:.7; transform: scale(1); } 50% { opacity:1; transform: scale(1.05); } 100% { opacity:.8; transform: scale(.95); } }
@keyframes je-jessica { 0% { transform: translateY(0) rotate(1deg); } 25% { transform: translateY(-3%) rotate(-1deg); } 50% { transform: translateY(0) rotate(0deg); } 75% { transform: translateY(-2%) rotate(2deg); } 100% { transform: translateY(0) rotate(-1deg); } }
@keyframes je-lorenzo { 0% { transform: translateX(0) rotate(-1deg); } 25% { transform: translateX(2%) rotate(0deg); } 50% { transform: translateX(4%) rotate(1deg); } 75% { transform: translateX(2%) rotate(-1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes je-ladder { 0% { transform: rotate(15deg); } 50% { transform: rotate(17deg); } 100% { transform: rotate(13deg); } }
@keyframes je-leaves { 0% { opacity:.3; transform: translateY(0); } 50% { opacity:.6; transform: translateY(-5%); } 100% { opacity:.3; transform: translateY(0); } }

/* antonio-urges-departure: tense + moonlit → cool blue/silver with wind and ships */
.scn-antonio-urges-departure {
  background: linear-gradient(180deg, #0a0a2a 0%, #1a1a4a 40%, #2a2a5a 70%, #1a1a3a 100%),
              radial-gradient(ellipse at 70% 10%, #3a3a6a 0%, transparent 60%);
}
.scn-antonio-urges-departure .sea-sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #1a1a4a 0%, #0a0a2a 100%); }
.scn-antonio-urges-departure .sea { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, #1a2a3a 0%, #0a1a2a 100%); border-radius:20% 60% 0 0 / 40% 70% 0 0; animation: an-sea 15s ease-in-out infinite; }
.scn-antonio-urges-departure .ship { position:absolute; bottom:25%; left:50%; width:30%; height:20%; background: linear-gradient(90deg, #3a2a3a 0%, #4a3a4a 50%, #3a2a3a 100%); border-radius:10% 10% 20% 20%; transform: translateX(-50%); }
.scn-antonio-urges-departure .sail { position:absolute; bottom:35%; left:50%; width:10%; height:20%; background: linear-gradient(180deg, #c0c0d0 0%, #8080a0 100%); border-radius:30% 30% 10% 10%; transform: translateX(-50%) rotate(5deg); animation: an-sail 8s ease-in-out infinite alternate; }
.scn-antonio-urges-departure .figure-antonio { position:absolute; bottom:15%; left:20%; width:12%; height:35%; background: linear-gradient(180deg, #1a1a3a 0%, #0a0a1a 100%); border-radius: 45% 45% 40% 40% / 55% 55% 40% 40%; animation: an-antonio 4s ease-in-out infinite; }
.scn-antonio-urges-departure .figure-gratiano { position:absolute; bottom:15%; left:35%; width:12%; height:35%; background: linear-gradient(180deg, #1a1a3a 0%, #0a0a1a 100%); border-radius: 45% 45% 40% 40% / 55% 55% 40% 40%; animation: an-gratiano 4s ease-in-out infinite reverse; }
.scn-antonio-urges-departure .wind-lines { position:absolute; top:20%; left:0; right:0; height:5%; background: repeating-linear-gradient(90deg, rgba(200,200,255,.2) 0%, transparent 10%, rgba(200,200,255,.1) 20%, transparent 30%); animation: an-wind 3s linear infinite; }
.scn-antonio-urges-departure .moonlight { position:absolute; top:10%; left:10%; width:15%; height:20%; background: radial-gradient(circle, #d0d0ff 0%, transparent 70%); border-radius:50%; animation: an-moon 12s ease-in-out infinite alternate; }
@keyframes an-sea { 0% { transform: translateY(0); } 25% { transform: translateY(-2%); } 50% { transform: translateY(0); } 75% { transform: translateY(1%); } 100% { transform: translateY(0); } }
@keyframes an-sail { 0% { transform: translateX(-50%) rotate(5deg) scaleY(1); } 50% { transform: translateX(-50%) rotate(8deg) scaleY(1.05); } 100% { transform: translateX(-50%) rotate(2deg) scaleY(.95); } }
@keyframes an-antonio { 0% { transform: translateX(0) rotate(1deg); } 25% { transform: translateX(3%) rotate(-1deg); } 50% { transform: translateX(5%) rotate(0deg); } 75% { transform: translateX(2%) rotate(2deg); } 100% { transform: translateX(0) rotate(-1deg); } }
@keyframes an-gratiano { 0% { transform: translateX(0) rotate(-1deg); } 25% { transform: translateX(-3%) rotate(1deg); } 50% { transform: translateX(-5%) rotate(0deg); } 75% { transform: translateX(-2%) rotate(-2deg); } 100% { transform: translateX(0) rotate(1deg); } }
@keyframes an-wind { 0% { opacity:.3; } 50% { opacity:.7; } 100% { opacity:.3; } }
@keyframes an-moon { 0% { opacity:.7; transform: scale(1); } 50% { opacity:1; transform: scale(1.08); } 100% { opacity:.8; transform: scale(.95); } }

/* scene 1: venice-rialto-shylock-bargain */
.scn-venice-rialto-shylock-bargain {
  background: linear-gradient(180deg, #f9eec1 0%, #dbb981 40%, #9a7a4a 100%),
              radial-gradient(ellipse at 50% 80%, #b88b4b 0%, transparent 70%);
}
.scn-venice-rialto-shylock-bargain .sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #ffe5b4 0%, #fce08a 50%, #f2cd7a 100%);
  animation: vb1-sky 10s ease-in-out infinite alternate;
}
.scn-venice-rialto-shylock-bargain .canal {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #4a6b8a 0%, #2c4a6a 60%, #1a2a3a 100%);
  border-radius: 30% 30% 0 0 / 20% 20% 0 0;
  box-shadow: inset 0 10px 40px rgba(0,0,0,.5);
  animation: vb1-canal 20s ease-in-out infinite alternate;
}
.scn-venice-rialto-shylock-bargain .colonnade {
  position: absolute; bottom: 35%; left: 5%; right: 5%; height: 30%;
  background: linear-gradient(180deg, #c8a87a 0%, #a08050 100%);
  clip-path: polygon(0% 0%, 100% 0%, 95% 100%, 5% 100%);
  box-shadow: 0 6px 20px rgba(0,0,0,.4);
  animation: vb1-colonnade 8s ease-in-out infinite;
}
.scn-venice-rialto-shylock-bargain .figure-bassanio {
  position: absolute; bottom: 33%; left: 30%; width: 24px; height: 55px;
  background: linear-gradient(180deg, #3a5a3a 0%, #1a2a1a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vb1-walk1 4s ease-in-out infinite;
}
.scn-venice-rialto-shylock-bargain .figure-shylock {
  position: absolute; bottom: 33%; left: 55%; width: 22px; height: 52px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 35% 35% 30% 30% / 55% 55% 40% 40%;
  transform-origin: bottom center;
  animation: vb1-walk2 4.5s ease-in-out infinite 0.2s;
}
.scn-venice-rialto-shylock-bargain .shadow {
  position: absolute; bottom: 33%; left: 25%; width: 60%; height: 4px;
  background: rgba(0,0,0,0.3);
  border-radius: 50%;
  filter: blur(3px);
  animation: vb1-shadow 8s ease-in-out infinite alternate;
}
@keyframes vb1-sky { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.75; } }
@keyframes vb1-canal { 0% { transform: translateY(0); } 50% { transform: translateY(-4px); } 100% { transform: translateY(2px); } }
@keyframes vb1-colonnade { 0%, 100% { transform: scaleY(1) translateY(0); } 50% { transform: scaleY(0.98) translateY(1px); } }
@keyframes vb1-walk1 { 0% { transform: translateX(0) translateY(0) rotate(-1deg); } 25% { transform: translateX(8px) translateY(-1px) rotate(2deg); } 50% { transform: translateX(16px) translateY(0) rotate(-1deg); } 75% { transform: translateX(24px) translateY(-1px) rotate(2deg); } 100% { transform: translateX(32px) translateY(0) rotate(0deg); } }
@keyframes vb1-walk2 { 0% { transform: translateX(0) translateY(0) rotate(1deg); } 25% { transform: translateX(-6px) translateY(-1px) rotate(-2deg); } 50% { transform: translateX(-12px) translateY(0) rotate(1deg); } 75% { transform: translateX(-18px) translateY(-1px) rotate(-2deg); } 100% { transform: translateX(-24px) translateY(0) rotate(0deg); } }
@keyframes vb1-shadow { 0% { transform: scaleX(1); opacity: 0.3; } 50% { transform: scaleX(0.9); opacity: 0.2; } 100% { transform: scaleX(1.1); opacity: 0.4; } }

/* scene 2: venice-rialto-shylock-mocks-dinner */
.scn-venice-rialto-shylock-mocks-dinner {
  background: linear-gradient(180deg, #d4c3a3 0%, #a68b6e 40%, #6a523a 100%),
              radial-gradient(ellipse at 30% 50%, #7a6040 0%, transparent 70%);
}
.scn-venice-rialto-shylock-mocks-dinner .sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #e8d5ad 0%, #c8ae7a 60%, #aa8a5a 100%);
  animation: vd2-sky 12s ease-in-out infinite alternate;
}
.scn-venice-rialto-shylock-mocks-dinner .palace-wall {
  position: absolute; bottom: 20%; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #a08060 0%, #604830 100%);
  border-radius: 10% 10% 0 0 / 4% 4% 0 0;
  box-shadow: inset 0 20px 40px rgba(0,0,0,.6);
  animation: vd2-wall 9s ease-in-out infinite;
}
.scn-venice-rialto-shylock-mocks-dinner .table {
  position: absolute; bottom: 22%; left: 40%; width: 50px; height: 30px;
  background: linear-gradient(180deg, #5a3a2a 0%, #3a1a0a 100%);
  border-radius: 40% 40% 10% 10% / 60% 60% 10% 10%;
  transform-origin: bottom center;
  animation: vd2-table 7s ease-in-out infinite;
}
.scn-venice-rialto-shylock-mocks-dinner .figure-shylock {
  position: absolute; bottom: 22%; left: 45%; width: 24px; height: 60px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 35% 35% 30% 30% / 55% 55% 40% 40%;
  transform-origin: bottom center;
  animation: vd2-shylock 3.5s ease-in-out infinite;
}
.scn-venice-rialto-shylock-mocks-dinner .pig-silhouette {
  position: absolute; bottom: 24%; left: 35%; width: 16px; height: 12px;
  background: #2a1a0a;
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  opacity: 0.6;
  animation: vd2-pig 5s ease-in-out infinite 1s;
}
.scn-venice-rialto-shylock-mocks-dinner .shadow {
  position: absolute; bottom: 20%; left: 30%; width: 50%; height: 5px;
  background: rgba(0,0,0,0.4);
  border-radius: 50%;
  filter: blur(4px);
  animation: vd2-shadow 6s ease-in-out infinite alternate;
}
@keyframes vd2-sky { 0% { opacity: 0.8; } 50% { opacity: 0.6; } 100% { opacity: 0.9; } }
@keyframes vd2-wall { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-2px); } }
@keyframes vd2-table { 0%, 100% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(2px) rotate(-2deg); } }
@keyframes vd2-shylock { 0% { transform: translateX(0) translateY(0) rotate(0deg); } 30% { transform: translateX(3px) translateY(-2px) rotate(3deg); } 60% { transform: translateX(-2px) translateY(-1px) rotate(-2deg); } 100% { transform: translateX(0) translateY(0) rotate(0deg); } }
@keyframes vd2-pig { 0% { transform: translateX(0) scale(1); opacity: 0.6; } 50% { transform: translateX(4px) scale(1.05); opacity: 0.8; } 100% { transform: translateX(0) scale(1); opacity: 0.6; } }
@keyframes vd2-shadow { 0% { transform: scaleX(1); opacity: 0.4; } 50% { transform: scaleX(1.2); opacity: 0.2; } 100% { transform: scaleX(0.8); opacity: 0.5; } }

/* scene 3: venice-rialto-shylock-aside */
.scn-venice-rialto-shylock-aside {
  background: linear-gradient(180deg, #b89a6a 0%, #8a6a3a 40%, #5a422a 100%),
              radial-gradient(ellipse at 70% 40%, #7a5a3a 0%, transparent 70%);
}
.scn-venice-rialto-shylock-aside .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #f5e0b0 0%, #e0c080 50%, #c8a060 100%);
  animation: va3-sky 15s ease-in-out infinite alternate;
}
.scn-venice-rialto-shylock-aside .bridge-arch {
  position: absolute; bottom: 20%; left: 10%; right: 10%; height: 50%;
  background: linear-gradient(180deg, #8a6a4a 0%, #4a2a0a 100%);
  clip-path: polygon(0% 100%, 15% 0%, 85% 0%, 100% 100%);
  box-shadow: inset 0 8px 20px rgba(0,0,0,.6);
  animation: va3-arch 14s ease-in-out infinite;
}
.scn-venice-rialto-shylock-aside .figure-shylock-side {
  position: absolute; bottom: 22%; left: 40%; width: 20px; height: 58px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%);
  border-radius: 30% 30% 35% 35% / 50% 50% 45% 45%;
  transform-origin: bottom center;
  animation: va3-figure 5s ease-in-out infinite;
}
.scn-venice-rialto-shylock-aside .cloak {
  position: absolute; bottom: 22%; left: 38%; width: 30px; height: 45px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  opacity: 0.7;
  animation: va3-cloak 6s ease-in-out infinite 0.3s;
}
.scn-venice-rialto-shylock-aside .hand-gesture {
  position: absolute; bottom: 36%; left: 48%; width: 8px; height: 14px;
  background: #2a1a0a;
  border-radius: 40% 40% 20% 20% / 50% 50% 30% 30%;
  transform-origin: bottom left;
  animation: va3-hand 3.2s ease-in-out infinite;
}
.scn-venice-rialto-shylock-aside .shadow {
  position: absolute; bottom: 20%; left: 30%; width: 40%; height: 6px;
  background: rgba(0,0,0,0.5);
  border-radius: 50%;
  filter: blur(4px);
  animation: va3-shadow 9s ease-in-out infinite alternate;
}
@keyframes va3-sky { 0% { opacity: 0.7; } 50% { opacity: 0.5; } 100% { opacity: 0.9; } }
@keyframes va3-arch { 0%, 100% { transform: scaleY(1); } 50% { transform: scaleY(0.97); } }
@keyframes va3-figure { 0% { transform: translateX(0) rotate(0deg); } 40% { transform: translateX(-3px) rotate(-4deg); } 70% { transform: translateX(2px) rotate(2deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes va3-cloak { 0% { transform: translateX(0) scaleX(1); } 50% { transform: translateX(2px) scaleX(1.05); opacity: 0.6; } 100% { transform: translateX(0) scaleX(1); } }
@keyframes va3-hand { 0% { transform: translate(0,0) rotate(-30deg); } 25% { transform: translate(2px,-1px) rotate(-15deg); } 50% { transform: translate(4px,-2px) rotate(0deg); } 75% { transform: translate(2px,-1px) rotate(15deg); } 100% { transform: translate(0,0) rotate(30deg); } }
@keyframes va3-shadow { 0% { opacity: 0.5; transform: scaleX(1); } 50% { opacity: 0.3; transform: scaleX(0.8); } 100% { opacity: 0.6; transform: scaleX(1.1); } }

/* scene 4: venice-rialto-shylock-will-furnish */
.scn-venice-rialto-shylock-will-furnish {
  background: linear-gradient(180deg, #e5cba0 0%, #c8a070 40%, #8a6040 100%),
              radial-gradient(ellipse at 50% 60%, #9a7a4a 0%, transparent 70%);
}
.scn-venice-rialto-shylock-will-furnish .sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #f2ddb0 0%, #ddc08a 50%, #c0a06a 100%);
  animation: vw4-sky 11s ease-in-out infinite alternate;
}
.scn-venice-rialto-shylock-will-furnish .loggia {
  position: absolute; bottom: 20%; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #a88a6a 0%, #6a4a2a 100%);
  border-radius: 5% 5% 0 0 / 3% 3% 0 0;
  box-shadow: inset 0 10px 30px rgba(0,0,0,.5);
  animation: vw4-loggia 8s ease-in-out infinite;
}
.scn-venice-rialto-shylock-will-furnish .ledger {
  position: absolute; bottom: 25%; left: 30%; width: 40px; height: 25px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 10% 10% 5% 5% / 20% 20% 5% 5%;
  box-shadow: 0 4px 8px rgba(0,0,0,.5);
  transform-origin: left center;
  animation: vw4-ledger 6s ease-in-out infinite;
}
.scn-venice-rialto-shylock-will-furnish .figure-shylock {
  position: absolute; bottom: 23%; left: 35%; width: 22px; height: 50px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%);
  border-radius: 35% 35% 30% 30% / 55% 55% 40% 40%;
  transform-origin: bottom center;
  animation: vw4-shylock 5s ease-in-out infinite 0.1s;
}
.scn-venice-rialto-shylock-will-furnish .figure-tubal {
  position: absolute; bottom: 23%; left: 50%; width: 20px; height: 48px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 30% 30% 30% 30% / 50% 50% 45% 45%;
  transform-origin: bottom center;
  animation: vw4-tubal 5.5s ease-in-out infinite 0.2s;
}
.scn-venice-rialto-shylock-will-furnish .shadow {
  position: absolute; bottom: 22%; left: 25%; width: 60%; height: 5px;
  background: rgba(0,0,0,0.4);
  border-radius: 50%;
  filter: blur(3px);
  animation: vw4-shadow 7s ease-in-out infinite alternate;
}
@keyframes vw4-sky { 0% { opacity: 0.8; } 50% { opacity: 0.6; } 100% { opacity: 0.9; } }
@keyframes vw4-loggia { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-3px); } }
@keyframes vw4-ledger { 0% { transform: rotate(0deg); } 25% { transform: rotate(2deg); } 75% { transform: rotate(-2deg); } 100% { transform: rotate(0deg); } }
@keyframes vw4-shylock { 0% { transform: translateX(0) rotate(0deg); } 30% { transform: translateX(2px) rotate(2deg); } 60% { transform: translateX(-2px) rotate(-3deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes vw4-tubal { 0% { transform: translateX(0) rotate(0deg); } 30% { transform: translateX(-3px) rotate(-2deg); } 60% { transform: translateX(3px) rotate(3deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes vw4-shadow { 0% { opacity: 0.4; transform: scaleX(1); } 50% { opacity: 0.2; transform: scaleX(1.2); } 100% { opacity: 0.5; transform: scaleX(0.8); } }

.scn-venice-street-antonio-sadness {
  background:
    linear-gradient(180deg, #87CEEB 0%, #f0e68c 40%, #deb887 70%, #ba8759 100%),
    radial-gradient(ellipse at 50% 0%, rgba(255,255,200,0.3) 0%, transparent 60%);
}
.scn-venice-street-antonio-sadness .sky {
  position: absolute; inset: 0 0 55% 0;
  background: linear-gradient(180deg, #a8d8ea 0%, #f0e68c 100%);
  animation: vsa-sky 20s ease-in-out infinite alternate;
}
.scn-venice-street-antonio-sadness .canal {
  position: absolute; bottom: 0; left: 30%; right: 0; height: 35%;
  background: linear-gradient(180deg, #5f9ea0 0%, #2e8b57 50%, #1a5c3a 100%);
  border-radius: 30% 0 0 0 / 100% 0 0 0;
  animation: vsa-water 10s ease-in-out infinite alternate;
}
.scn-venice-street-antonio-sadness .bridge {
  position: absolute; bottom: 30%; left: 55%; width: 100px; height: 20px;
  background: linear-gradient(90deg, #8b7355 0%, #a0522d 50%, #8b7355 100%);
  border-radius: 10px 10px 0 0;
  box-shadow: 0 4px 8px rgba(0,0,0,0.3);
  animation: vsa-bridge 6s ease-in-out infinite;
}
.scn-venice-street-antonio-sadness .column {
  position: absolute; bottom: 30%; left: 20%; width: 16px; height: 120px;
  background: linear-gradient(180deg, #d2b48c 0%, #b8860b 100%);
  border-radius: 4px;
  box-shadow: 0 0 12px rgba(0,0,0,0.2);
  animation: vsa-column 4s ease-in-out infinite alternate;
}
.scn-venice-street-antonio-sadness .figure-sad {
  position: absolute; bottom: 35%; left: 18%; width: 30px; height: 60px;
  background: linear-gradient(180deg, #2f4f4f 0%, #191970 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vsa-figure 5s ease-in-out infinite;
}
.scn-venice-street-antonio-sadness .gondola {
  position: absolute; bottom: 25%; left: 65%; width: 80px; height: 20px;
  background: linear-gradient(90deg, #3e2723 0%, #1b1b1b 100%);
  border-radius: 0 50% 50% 0 / 0 80% 80% 0;
  box-shadow: 0 2px 6px rgba(0,0,0,0.5);
  animation: vsa-gondola 12s ease-in-out infinite;
}
.scn-venice-street-antonio-sadness .cloud.vsa-c1 {
  position: absolute; top: 8%; left: 12%; width: 90px; height: 20px;
  background: linear-gradient(180deg, rgba(255,255,255,0.6) 0%, rgba(200,200,200,0.1) 100%);
  border-radius: 50%; filter: blur(5px);
  animation: vsa-drift 45s linear infinite;
}
.scn-venice-street-antonio-sadness .cloud.vsa-c2 {
  position: absolute; top: 15%; right: 20%; width: 70px; height: 16px;
  background: linear-gradient(180deg, rgba(255,255,255,0.4) 0%, rgba(200,200,200,0.05) 100%);
  border-radius: 50%; filter: blur(4px);
  animation: vsa-drift 55s linear infinite reverse;
}
@keyframes vsa-sky {
  0% { opacity: 0.8; }
  50% { opacity: 1; }
  100% { opacity: 0.9; }
}
@keyframes vsa-water {
  0% { transform: translateY(0); }
  50% { transform: translateY(-4px); }
  100% { transform: translateY(0); }
}
@keyframes vsa-bridge {
  0%,100% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
}
@keyframes vsa-column {
  0%,100% { transform: translateX(0); }
  50% { transform: translateX(-1px); }
}
@keyframes vsa-figure {
  0% { transform: translateX(0) translateY(0) rotate(-2deg); }
  30% { transform: translateX(4px) translateY(-2px) rotate(1deg); }
  60% { transform: translateX(8px) translateY(0) rotate(-1deg); }
  100% { transform: translateX(12px) translateY(-1px) rotate(0deg); }
}
@keyframes vsa-gondola {
  0% { transform: translateX(0) translateY(0); }
  40% { transform: translateX(-10px) translateY(3px); }
  80% { transform: translateX(10px) translateY(-2px); }
  100% { transform: translateX(0) translateY(0); }
}
@keyframes vsa-drift {
  0% { transform: translateX(-30px); }
  100% { transform: translateX(120vw); }
}

.scn-venice-street-banter-about-love {
  background:
    linear-gradient(180deg, #87CEEB 0%, #fdf5e6 40%, #ffe4b5 70%, #deb887 100%),
    radial-gradient(ellipse at 50% 0%, rgba(255,255,200,0.4) 0%, transparent 70%);
}
.scn-venice-street-banter-about-love .sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #add8e6 0%, #f0e68c 100%);
  animation: vsb-sky 15s ease-in-out infinite alternate;
}
.scn-venice-street-banter-about-love .pavement {
  position: absolute; bottom: 0; left: 0; right: 0; height: 60%;
  background: linear-gradient(180deg, #d2b48c 0%, #a0522d 100%);
  border-radius: 20% 20% 0 0 / 30% 30% 0 0;
  animation: vsb-pave 8s ease-in-out infinite alternate;
}
.scn-venice-street-banter-about-love .fountain {
  position: absolute; bottom: 35%; left: 50%; transform: translateX(-50%);
  width: 60px; height: 80px;
  background: linear-gradient(180deg, #b0c4de 0%, #4682b4 100%);
  border-radius: 40% 40% 10% 10% / 60% 60% 20% 20%;
  box-shadow: 0 0 20px rgba(70,130,180,0.5);
  animation: vsb-fountain 4s ease-in-out infinite;
}
.scn-venice-street-banter-about-love .figure-a {
  position: absolute; bottom: 28%; left: 30%; width: 28px; height: 55px;
  background: linear-gradient(180deg, #8b4513 0%, #5c3317 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vsb-fig-a 3s ease-in-out infinite;
}
.scn-venice-street-banter-about-love .figure-b {
  position: absolute; bottom: 28%; left: 42%; width: 28px; height: 55px;
  background: linear-gradient(180deg, #2e8b57 0%, #1a5c34 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vsb-fig-b 3.5s ease-in-out infinite reverse;
}
.scn-venice-street-banter-about-love .dove {
  position: absolute; bottom: 55%; left: 60%; width: 18px; height: 12px;
  background: radial-gradient(circle at 30% 50%, #ffffff 40%, #d3d3d3 100%);
  border-radius: 50% 50% 40% 40%;
  animation: vsb-dove 6s ease-in-out infinite;
}
.scn-venice-street-banter-about-love .cloud.vsb-c1 {
  position: absolute; top: 10%; left: 15%; width: 80px; height: 18px;
  background: linear-gradient(180deg, rgba(255,255,255,0.7) 0%, rgba(200,200,200,0.1) 100%);
  border-radius: 50%; filter: blur(5px);
  animation: vsb-drift 40s linear infinite;
}
.scn-venice-street-banter-about-love .cloud.vsb-c2 {
  position: absolute; top: 18%; right: 10%; width: 60px; height: 14px;
  background: linear-gradient(180deg, rgba(255,255,255,0.5) 0%, rgba(200,200,200,0.05) 100%);
  border-radius: 50%; filter: blur(4px);
  animation: vsb-drift 50s linear infinite reverse;
}
.scn-venice-street-banter-about-love .sparkle {
  position: absolute; top: 30%; left: 55%; width: 6px; height: 6px;
  background: #ffd700;
  border-radius: 50%;
  box-shadow: 0 0 10px 4px rgba(255,215,0,0.6);
  animation: vsb-spark 2s ease-in-out infinite alternate;
}
@keyframes vsb-sky {
  0% { opacity: 0.9; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.02); }
  100% { opacity: 0.95; transform: scale(1); }
}
@keyframes vsb-pave {
  0% { transform: translateY(0); }
  100% { transform: translateY(-5px); }
}
@keyframes vsb-fountain {
  0%,100% { transform: translateX(-50%) scaleY(1); }
  50% { transform: translateX(-50%) scaleY(1.05); }
}
@keyframes vsb-fig-a {
  0% { transform: translateX(0) rotate(-3deg); }
  30% { transform: translateX(10px) rotate(2deg); }
  60% { transform: translateX(-5px) rotate(-1deg); }
  100% { transform: translateX(0) rotate(0); }
}
@keyframes vsb-fig-b {
  0% { transform: translateX(0) rotate(2deg); }
  30% { transform: translateX(-8px) rotate(-3deg); }
  60% { transform: translateX(6px) rotate(1deg); }
  100% { transform: translateX(0) rotate(0); }
}
@keyframes vsb-dove {
  0% { transform: translate(0,0) rotate(0deg); }
  25% { transform: translate(15px,-10px) rotate(10deg); }
  50% { transform: translate(30px,-5px) rotate(-5deg); }
  75% { transform: translate(45px,-15px) rotate(5deg); }
  100% { transform: translate(60px,-10px) rotate(0deg); }
}
@keyframes vsb-spark {
  0% { opacity: 0.3; transform: scale(0.8); }
  100% { opacity: 1; transform: scale(1.5); }
}
@keyframes vsb-drift {
  0% { transform: translateX(-30px); }
  100% { transform: translateX(120vw); }
}

.scn-venice-street-bassanio-enters {
  background:
    linear-gradient(180deg, #87CEEB 0%, #f4e4c1 35%, #d2b48c 70%, #a0522d 100%),
    radial-gradient(ellipse at 30% 0%, rgba(255,255,200,0.3) 0%, transparent 60%);
}
.scn-venice-street-bassanio-enters .sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #add8e6 0%, #f0e68c 100%);
  animation: vbe-sky 18s ease-in-out infinite alternate;
}
.scn-venice-street-bassanio-enters .street-bg {
  position: absolute; bottom: 0; left: 0; right: 0; height: 55%;
  background: linear-gradient(180deg, #deb887 0%, #8b5a2b 100%);
  border-radius: 10% 10% 0 0 / 20% 20% 0 0;
  animation: vbe-street 12s ease-in-out infinite alternate;
}
.scn-venice-street-bassanio-enters .canal-right {
  position: absolute; bottom: 0; right: 0; width: 30%; height: 40%;
  background: linear-gradient(180deg, #5f9ea0 0%, #2e8b57 100%);
  border-radius: 50% 0 0 0 / 100% 0 0 0;
  animation: vbe-water 9s ease-in-out infinite alternate;
}
.scn-venice-street-bassanio-enters .figure-bassanio {
  position: absolute; bottom: 30%; left: 28%; width: 30px; height: 65px;
  background: linear-gradient(180deg, #8b4513 0%, #4a2c0f 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vbe-walk 4s ease-in-out infinite;
}
.scn-venice-street-bassanio-enters .figure-lorenzo {
  position: absolute; bottom: 30%; left: 38%; width: 28px; height: 62px;
  background: linear-gradient(180deg, #2e8b57 0%, #1a5c34 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vbe-walk 4.5s ease-in-out infinite -0.5s;
}
.scn-venice-street-bassanio-enters .figure-gratiano {
  position: absolute; bottom: 30%; left: 48%; width: 28px; height: 62px;
  background: linear-gradient(180deg, #4682b4 0%, #2f4f4f 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vbe-walk 5s ease-in-out infinite -1s;
}
.scn-venice-street-bassanio-enters .shadow-left {
  position: absolute; bottom: 0; left: 0; width: 50%; height: 100%;
  background: linear-gradient(90deg, rgba(0,0,0,0.2) 0%, transparent 100%);
  pointer-events: none;
}
.scn-venice-street-bassanio-enters .cloud.vbe-c1 {
  position: absolute; top: 8%; left: 10%; width: 100px; height: 22px;
  background: linear-gradient(180deg, rgba(255,255,255,0.6) 0%, rgba(200,200,200,0.1) 100%);
  border-radius: 50%; filter: blur(5px);
  animation: vbe-drift 50s linear infinite;
}
.scn-venice-street-bassanio-enters .cloud.vbe-c2 {
  position: absolute; top: 16%; right: 15%; width: 70px; height: 16px;
  background: linear-gradient(180deg, rgba(255,255,255,0.4) 0%, rgba(200,200,200,0.05) 100%);
  border-radius: 50%; filter: blur(4px);
  animation: vbe-drift 60s linear infinite reverse;
}
@keyframes vbe-sky {
  0% { opacity: 0.85; }
  50% { opacity: 1; }
  100% { opacity: 0.9; }
}
@keyframes vbe-street {
  0% { transform: translateY(0) scaleY(1); }
  100% { transform: translateY(-3px) scaleY(0.98); }
}
@keyframes vbe-water {
  0% { transform: translateX(0); }
  100% { transform: translateX(-5px); }
}
@keyframes vbe-walk {
  0% { transform: translateX(0) translateY(0) rotate(-2deg); }
  20% { transform: translateX(5px) translateY(-1px) rotate(1deg); }
  40% { transform: translateX(10px) translateY(0) rotate(-1deg); }
  60% { transform: translateX(15px) translateY(-1px) rotate(2deg); }
  80% { transform: translateX(20px) translateY(0) rotate(-2deg); }
  100% { transform: translateX(25px) translateY(0) rotate(0deg); }
}
@keyframes vbe-drift {
  0% { transform: translateX(-30px); }
  100% { transform: translateX(120vw); }
}

.scn-venice-street-antonio-gratiano-banter {
  background:
    linear-gradient(180deg, #2c3e50 0%, #34495e 30%, #5d6d7e 60%, #aeb6bf 100%),
    radial-gradient(ellipse at 50% 0%, rgba(255,230,150,0.2) 0%, transparent 70%);
}
.scn-venice-street-antonio-gratiano-banter .sky {
  position: absolute; inset: 0 0 60% 0;
  background: linear-gradient(180deg, #5d6d7e 0%, #aeb6bf 100%);
  animation: vag-sky 20s ease-in-out infinite alternate;
}
.scn-venice-street-antonio-gratiano-banter .wall {
  position: absolute; bottom: 0; left: 10%; right: 10%; height: 50%;
  background: linear-gradient(180deg, #4a3a2a 0%, #2c1f14 100%);
  border-radius: 10% 10% 0 0 / 20% 20% 0 0;
  box-shadow: inset 0 20px 30px rgba(0,0,0,0.5);
}
.scn-venice-street-antonio-gratiano-banter .shadow-arch {
  position: absolute; bottom: 40%; left: 30%; width: 180px; height: 80px;
  background: radial-gradient(ellipse at 50% 100%, rgba(0,0,0,0.6) 0%, transparent 60%);
  border-radius: 50% 50% 0 0;
  pointer-events: none;
}
.scn-venice-street-antonio-gratiano-banter .figure-antonio {
  position: absolute; bottom: 30%; left: 32%; width: 32px; height: 68px;
  background: linear-gradient(180deg, #2c3e50 0%, #1a2533 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vag-antonio 5s ease-in-out infinite;
}
.scn-venice-street-antonio-gratiano-banter .figure-gratiano {
  position: absolute; bottom: 30%; left: 44%; width: 30px; height: 64px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2c1f14 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vag-gratiano 4s ease-in-out infinite reverse;
}
.scn-venice-street-antonio-gratiano-banter .lantern {
  position: absolute; bottom: 50%; left: 50%; transform: translateX(-50%);
  width: 14px; height: 20px;
  background: radial-gradient(circle, #f5b041 0%, #d4ac0d 100%);
  border-radius: 30% 30% 20% 20%;
  box-shadow: 0 0 24px 8px rgba(212,172,13,0.6);
  animation: vag-lantern 3s ease-in-out infinite alternate;
}
.scn-venice-street-antonio-gratiano-banter .dust.motes {
  position: absolute; top: 35%; left: 20%; width: 100%; height: 30%;
  background:
    radial-gradient(circle at 10% 50%, rgba(255,230,150,0.3) 2px, transparent 2px),
    radial-gradient(circle at 30% 70%, rgba(255,230,150,0.2) 3px, transparent 3px),
    radial-gradient(circle at 60% 40%, rgba(255,230,150,0.25) 2px, transparent 2px),
    radial-gradient(circle at 80% 60%, rgba(255,230,150,0.15) 4px, transparent 4px);
  background-size: 100% 100%;
  pointer-events: none;
  animation: vag-motes 15s ease-in-out infinite;
}
.scn-venice-street-antonio-gratiano-banter .cloud.vag-c1 {
  position: absolute; top: 8%; left: 12%; width: 90px; height: 20px;
  background: linear-gradient(180deg, rgba(200,200,200,0.3) 0%, rgba(150,150,150,0.05) 100%);
  border-radius: 50%; filter: blur(6px);
  animation: vag-drift 50s linear infinite;
}
@keyframes vag-sky {
  0% { opacity: 0.6; }
  50% { opacity: 0.8; }
  100% { opacity: 0.7; }
}
@keyframes vag-antonio {
  0% { transform: translateX(0) translateY(0) rotate(-1deg); }
  30% { transform: translateX(-4px) translateY(-2px) rotate(2deg); }
  60% { transform: translateX(-8px) translateY(0) rotate(-2deg); }
  100% { transform: translateX(-12px) translateY(-1px) rotate(0deg); }
}
@keyframes vag-gratiano {
  0% { transform: translateX(0) translateY(0) rotate(1deg); }
  30% { transform: translateX(6px) translateY(-1px) rotate(-2deg); }
  60% { transform: translateX(12px) translateY(0) rotate(1deg); }
  100% { transform: translateX(18px) translateY(-1px) rotate(0deg); }
}
@keyframes vag-lantern {
  0% { box-shadow: 0 0 12px 4px rgba(212,172,13,0.5); opacity: 0.7; }
  50% { box-shadow: 0 0 24px 8px rgba(245,176,65,0.8); opacity: 1; }
  100% { box-shadow: 0 0 16px 6px rgba(212,172,13,0.6); opacity: 0.85; }
}
@keyframes vag-motes {
  0% { transform: translateY(0); }
  50% { transform: translateY(-8px); }
  100% { transform: translateY(0); }
}
@keyframes vag-drift {
  0% { transform: translateX(-30px); }
  100% { transform: translateX(120vw); }
}

/* portia-accepts-bassanio */
.scn-portia-accepts-bassanio { background: linear-gradient(180deg, #f5e6c8 0%, #d4b88a 40%, #b8956a 100%), radial-gradient(ellipse at 50% 30%, #ffe8c8 0%, transparent 60%); }
.scn-portia-accepts-bassanio .room-wall { position:absolute; inset:0 0 30% 0; background: linear-gradient(90deg, #c9a87b 0%, #dbbc96 50%, #c9a87b 100%); border-radius:0 0 40% 40%/0 0 20% 20%; }
.scn-portia-accepts-bassanio .window-frame { position:absolute; top:8%; left:35%; width:30%; height:45%; background: transparent; border:6px solid #6b4f34; border-radius:10% 10% 4% 4%; box-shadow: inset 0 0 0 4px #7a6040; }
.scn-portia-accepts-bassanio .window-light { position:absolute; top:8%; left:35%; width:30%; height:45%; background: linear-gradient(135deg, rgba(255,235,180,0.6) 0%, rgba(255,215,140,0.2) 100%); animation: pa-window 6s ease-in-out infinite alternate; }
.scn-portia-accepts-bassanio .table { position:absolute; bottom:22%; left:25%; width:50%; height:8%; background: linear-gradient(180deg, #8b6b4a 0%, #6b4f34 100%); border-radius: 20% 20% 10% 10%; box-shadow: 0 4px 12px rgba(0,0,0,0.3); }
.scn-portia-accepts-bassanio .chair { position:absolute; bottom:14%; left:28%; width:8%; height:18%; background: linear-gradient(180deg, #5c432a 0%, #3e2b1a 100%); border-radius: 40% 40% 20% 20%; transform: rotate(-5deg); }
.scn-portia-accepts-bassanio .figure-left { position:absolute; bottom:20%; left:28%; width:16%; height:30%; background: linear-gradient(180deg, #9a7a55 0%, #6b5040 100%); border-radius: 50% 50% 40% 40%/60% 60% 30% 30%; transform-origin: bottom center; animation: pa-fig-left 12s ease-in-out infinite; }
.scn-portia-accepts-bassanio .figure-right { position:absolute; bottom:20%; right:28%; width:16%; height:30%; background: linear-gradient(180deg, #7a6a5a 0%, #4a3a2a 100%); border-radius: 50% 50% 40% 40%/60% 60% 30% 30%; transform-origin: bottom center; animation: pa-fig-right 10s ease-in-out infinite; }
.scn-portia-accepts-bassanio .glow-spot { position:absolute; bottom:35%; left:50%; width:20%; height:20%; background: radial-gradient(circle, rgba(255,200,100,0.5) 0%, transparent 70%); transform: translate(-50%,0); animation: pa-glow 4s ease-in-out infinite alternate; }
@keyframes pa-window { 0% { opacity:0.6; } 50% { opacity:1; } 100% { opacity:0.8; } }
@keyframes pa-fig-left { 0% { transform: rotate(-3deg) translateY(0); } 50% { transform: rotate(2deg) translateY(-3px); } 100% { transform: rotate(-3deg) translateY(0); } }
@keyframes pa-fig-right { 0% { transform: rotate(2deg) translateY(0); } 50% { transform: rotate(-1deg) translateY(-2px); } 100% { transform: rotate(2deg) translateY(0); } }
@keyframes pa-glow { 0% { transform: translate(-50%,0) scale(1); opacity:0.4; } 100% { transform: translate(-50%,0) scale(1.2); opacity:0.8; } }

/* bad-news-from-venice */
.scn-bad-news-from-venice { background: linear-gradient(180deg, #dcd5c0 0%, #c4bca5 40%, #aca38a 100%), radial-gradient(ellipse at 50% 70%, #e8dfc8 0%, transparent 60%); }
.scn-bad-news-from-venice .bg-panel { position:absolute; inset:0 0 40% 0; background: linear-gradient(90deg, #a8a090 0%, #bcb4a2 50%, #a8a090 100%); border-radius: 0 0 30% 30%; }
.scn-bad-news-from-venice .floor { position:absolute; bottom:0; left:0; right:0; height:20%; background: linear-gradient(180deg, #8a8070 0%, #6e6558 100%); }
.scn-bad-news-from-venice .window-arch { position:absolute; top:5%; left:30%; width:40%; height:50%; background: transparent; border:4px solid #5a5045; border-radius: 30% 30% 10% 10%; box-shadow: inset 0 0 0 3px #7a7060; }
.scn-bad-news-from-venice .gentleman-a { position:absolute; bottom:15%; left:20%; width:14%; height:35%; background: linear-gradient(180deg, #4c403a 0%, #2e2622 100%); border-radius: 50% 50% 30% 30%/60% 60% 20% 20%; transform-origin: bottom; animation: bn-fig-a 14s ease-in-out infinite; }
.scn-bad-news-from-venice .gentleman-b { position:absolute; bottom:15%; right:20%; width:14%; height:35%; background: linear-gradient(180deg, #4a3e38 0%, #2a221e 100%); border-radius: 50% 50% 30% 30%/60% 60% 20% 20%; transform-origin: bottom; animation: bn-fig-b 12s ease-in-out infinite; }
.scn-bad-news-from-venice .scroll { position:absolute; bottom:22%; left:48%; width:10%; height:4%; background: linear-gradient(90deg, #c4b693 0%, #e0d1b0 50%, #c4b693 100%); border-radius: 20%; transform: rotate(15deg); animation: bn-scroll 8s ease-in-out infinite; }
.scn-bad-news-from-venice .vase { position:absolute; bottom:30%; left:58%; width:6%; height:12%; background: linear-gradient(180deg, #7a7060 0%, #4a423a 100%); border-radius: 30% 30% 40% 40%; box-shadow: inset 0 -4px 6px rgba(0,0,0,0.3); }
.scn-bad-news-from-venice .light-shaft { position:absolute; top:8%; left:30%; width:40%; height:10%; background: linear-gradient(180deg, rgba(255,240,210,0.4) 0%, transparent 100%); transform: rotate(5deg); animation: bn-light 20s linear infinite; }
@keyframes bn-fig-a { 0% { transform: rotate(0deg) translateY(0); } 50% { transform: rotate(3deg) translateY(-4px); } 100% { transform: rotate(0deg) translateY(0); } }
@keyframes bn-fig-b { 0% { transform: rotate(0deg) translateY(0); } 50% { transform: rotate(-2deg) translateY(-3px); } 100% { transform: rotate(0deg) translateY(0); } }
@keyframes bn-scroll { 0% { transform: rotate(15deg) translateX(0); } 50% { transform: rotate(10deg) translateX(3px); } 100% { transform: rotate(15deg) translateX(0); } }
@keyframes bn-light { 0% { opacity:0.3; transform: rotate(5deg) scaleX(1); } 50% { opacity:0.7; transform: rotate(3deg) scaleX(1.05); } 100% { opacity:0.3; transform: rotate(5deg) scaleX(1); } }

/* venice-bassanio-reads-letter */
.scn-venice-bassanio-reads-letter { background: linear-gradient(180deg, #1c1a1e 0%, #181618 40%, #121012 100%), radial-gradient(ellipse at 50% 40%, #2a2428 0%, transparent 70%); }
.scn-venice-bassanio-reads-letter .dark-wall { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #141216 0%, #0e0c10 100%); border-radius: 0 0 20% 20%; }
.scn-venice-bassanio-reads-letter .desk { position:absolute; bottom:18%; left:20%; width:60%; height:10%; background: linear-gradient(180deg, #2a221e 0%, #1a1412 100%); border-radius: 10% 10% 30% 30%; box-shadow: 0 6px 12px rgba(0,0,0,0.6); }
.scn-venice-bassanio-reads-letter .candle { position:absolute; bottom:24%; left:38%; width:6%; height:15%; background: linear-gradient(180deg, #d4b28a 0%, #8a6a50 100%); border-radius: 40% 40% 20% 20%; box-shadow: 0 0 8px 2px #c08040; }
.scn-venice-bassanio-reads-letter .candle-glow { position:absolute; bottom:24%; left:38%; width:10%; height:20%; background: radial-gradient(circle, rgba(255,180,60,0.6) 0%, rgba(255,160,40,0.2) 50%, transparent 80%); animation: bl-candle 3s ease-in-out infinite alternate; }
.scn-venice-bassanio-reads-letter .letter { position:absolute; bottom:20%; left:40%; width:16%; height:6%; background: linear-gradient(90deg, #c4a87a 0%, #d4bc8e 50%, #c4a87a 100%); transform: rotate(-5deg); border-radius: 5%; box-shadow: 0 2px 6px rgba(0,0,0,0.5); animation: bl-letter 5s ease-in-out infinite; }
.scn-venice-bassanio-reads-letter .figure { position:absolute; bottom:8%; left:35%; width:20%; height:28%; background: linear-gradient(180deg, #2a2428 0%, #1a1418 100%); border-radius: 50% 50% 40% 40%/60% 60% 30% 30%; transform-origin: bottom center; animation: bl-figure 9s ease-in-out infinite; }
.scn-venice-bassanio-reads-letter .hand { position:absolute; bottom:16%; left:42%; width:6%; height:8%; background: linear-gradient(180deg, #3a2a22 0%, #1e1410 100%); border-radius: 40% 40% 30% 30%; transform: rotate(20deg); animation: bl-hand 4s ease-in-out infinite; }
.scn-venice-bassanio-reads-letter .shadow-flicker { position:absolute; inset:0; background: radial-gradient(ellipse at 40% 50%, rgba(0,0,0,0.3) 0%, transparent 60%); animation: bl-flicker 2s steps(4) infinite; }
@keyframes bl-candle { 0% { opacity:0.7; transform: scale(1); } 50% { opacity:1; transform: scale(1.1); } 100% { opacity:0.8; transform: scale(0.95); } }
@keyframes bl-letter { 0% { transform: rotate(-5deg) translateY(0); } 50% { transform: rotate(-8deg) translateY(-3px); } 100% { transform: rotate(-5deg) translateY(0); } }
@keyframes bl-figure { 0% { transform: rotate(0deg) translateY(0); } 50% { transform: rotate(2deg) translateY(-5px); } 100% { transform: rotate(0deg) translateY(0); } }
@keyframes bl-hand { 0% { transform: rotate(20deg) translateY(0); } 50% { transform: rotate(15deg) translateY(-2px); } 100% { transform: rotate(20deg) translateY(0); } }
@keyframes bl-flicker { 0% { opacity:0.3; } 25% { opacity:0.5; } 50% { opacity:0.2; } 75% { opacity:0.4; } 100% { opacity:0.3; } }

/* venice-street-shylock-antonio */
.scn-venice-street-shylock-antonio { background: linear-gradient(180deg, #b8d4e8 0%, #8cb8d0 40%, #6aa0c0 100%), radial-gradient(ellipse at 50% 30%, #e6f2ff 0%, transparent 70%); }
.scn-venice-street-shylock-antonio .sky-sun { position:absolute; top:0; left:0; right:0; height:50%; background: linear-gradient(180deg, #f4e4c0 0%, #c8d8e8 100%); animation: sa-sky 20s ease-in-out infinite alternate; }
.scn-venice-street-shylock-antonio .canal { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, #3a5a7a 0%, #2a4a6a 100%); border-radius: 0 0 20% 20%; box-shadow: inset 0 10px 30px rgba(0,0,0,0.3); }
.scn-venice-street-shylock-antonio .building-left { position:absolute; bottom:40%; left:5%; width:30%; height:50%; background: linear-gradient(180deg, #c8a87a 0%, #a88a5a 100%); border-radius: 10% 10% 0 0; box-shadow: -8px 0 12px rgba(0,0,0,0.2); }
.scn-venice-street-shylock-antonio .building-right { position:absolute; bottom:40%; right:5%; width:30%; height:50%; background: linear-gradient(180deg, #b89a6a 0%, #987a4a 100%); border-radius: 10% 10% 0 0; box-shadow: 8px 0 12px rgba(0,0,0,0.2); }
.scn-venice-street-shylock-antonio .bridge { position:absolute; bottom:35%; left:20%; width:60%; height:10%; background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%); border-radius: 30% 30% 10% 10%; transform: perspective(200px) rotateX(5deg); animation: sa-bridge 15s linear infinite; }
.scn-venice-street-shylock-antonio .figure-shylock { position:absolute; bottom:30%; left:30%; width:12%; height:30%; background: linear-gradient(180deg, #2a1e1a 0%, #0e0a08 100%); border-radius: 50% 50% 30% 30%/60% 60% 20% 20%; transform-origin: bottom; animation: sa-shylock 8s ease-in-out infinite; }
.scn-venice-street-shylock-antonio .figure-antonio { position:absolute; bottom:30%; right:30%; width:12%; height:30%; background: linear-gradient(180deg, #3a2a22 0%, #1a0e0a 100%); border-radius: 50% 50% 30% 30%/60% 60% 20% 20%; transform-origin: bottom; animation: sa-antonio 10s ease-in-out infinite; }
.scn-venice-street-shylock-antonio .sunbeam { position:absolute; top:10%; left:45%; width:8%; height:50%; background: linear-gradient(180deg, rgba(255,220,150,0.4) 0%, rgba(255,200,130,0.1) 100%); transform: rotate(15deg); filter: blur(4px); animation: sa-sunbeam 12s ease-in-out infinite alternate; }
@keyframes sa-sky { 0% { background: linear-gradient(180deg, #f4e4c0 0%, #c8d8e8 100%); } 50% { background: linear-gradient(180deg, #e8d8b0 0%, #b8c8d8 100%); } 100% { background: linear-gradient(180deg, #f0dcc0 0%, #c0d0e0 100%); } }
@keyframes sa-bridge { 0% { transform: perspective(200px) rotateX(5deg) translateY(0); } 50% { transform: perspective(200px) rotateX(7deg) translateY(-2px); } 100% { transform: perspective(200px) rotateX(5deg) translateY(0); } }
@keyframes sa-shylock { 0% { transform: rotate(-2deg) translateY(0); } 50% { transform: rotate(3deg) translateY(-4px); } 100% { transform: rotate(-2deg) translateY(0); } }
@keyframes sa-antonio { 0% { transform: rotate(2deg) translateY(0); } 50% { transform: rotate(-1deg) translateY(-3px); } 100% { transform: rotate(2deg) translateY(0); } }
@keyframes sa-sunbeam { 0% { opacity:0.3; transform: rotate(15deg) scaleY(1); } 50% { opacity:0.7; transform: rotate(12deg) scaleY(1.1); } 100% { opacity:0.3; transform: rotate(15deg) scaleY(1); } }

.scn-antonio-shipwreck-news { background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 30%, #1a1a2a 70%, #0a0a1a 100%), radial-gradient(ellipse at 50% 20%, #4a4a5a 0%, transparent 60%); }
.scn-antonio-shipwreck-news .asw-sky { position:absolute; inset:0 0 45% 0; background: linear-gradient(180deg, #4a4a5a 0%, #2a2a3a 50%, transparent 100%); animation: asw-sky 15s ease-in-out infinite alternate; }
.scn-antonio-shipwreck-news .asw-sea { position:absolute; bottom:0; left:0; right:0; height:55%; background: linear-gradient(180deg, #2a3a3a 0%, #1a2a2a 100%); border-radius: 0 0 40% 40% / 0 0 60% 60%; box-shadow: inset 0 8px 20px rgba(0,0,0,.5); animation: asw-sea 4s ease-in-out infinite alternate; }
.scn-antonio-shipwreck-news .asw-sandbank { position:absolute; bottom:28%; left:20%; width:60%; height:15%; background: linear-gradient(180deg, #4a4a3a 0%, #2a2a1a 100%); border-radius: 30% 30% 0 0; box-shadow: 0 -4px 12px rgba(0,0,0,.4); }
.scn-antonio-shipwreck-news .asw-ship { position:absolute; bottom:35%; left:35%; width:120px; height:50px; background: linear-gradient(180deg, #5a4a3a 0%, #2a1a0a 100%); border-radius: 10% 10% 30% 30% / 20% 20% 40% 40%; transform-origin: center bottom; animation: asw-ship 6s ease-in-out infinite; }
.scn-antonio-shipwreck-news .asw-mast { position:absolute; bottom:38%; left:45%; width:6px; height:70px; background: linear-gradient(180deg, #6a5a4a 0%, #3a2a1a 100%); border-radius: 30%; transform: rotate(-8deg); transform-origin: bottom center; animation: asw-mast 4s ease-in-out infinite; }
.scn-antonio-shipwreck-news .asw-sail { position:absolute; bottom:50%; left:43%; width:40px; height:35px; background: linear-gradient(180deg, #8a7a6a 0%, #4a3a2a 100%); border-radius: 0 50% 50% 0; transform-origin: left center; animation: asw-sail 5s ease-in-out infinite; }
.scn-antonio-shipwreck-news .asw-cloud-a { position:absolute; top:10%; left:10%; width:100px; height:20px; background: linear-gradient(180deg, rgba(90,90,100,.6) 0%, rgba(90,90,100,.1) 100%); border-radius: 50%; filter: blur(8px); animation: asw-drift-a 20s linear infinite; }
.scn-antonio-shipwreck-news .asw-cloud-b { position:absolute; top:20%; right:5%; width:80px; height:15px; background: linear-gradient(180deg, rgba(90,90,100,.5) 0%, rgba(90,90,100,.05) 100%); border-radius: 50%; filter: blur(6px); animation: asw-drift-b 30s linear infinite; }
@keyframes asw-sky { 0% { opacity: .6; } 50% { opacity: .9; } 100% { opacity: .7; } }
@keyframes asw-sea { 0% { transform: translateY(0) scaleX(1); } 50% { transform: translateY(-8px) scaleX(1.02); } 100% { transform: translateY(0) scaleX(1); } }
@keyframes asw-ship { 0% { transform: rotate(0deg) translateY(0); } 50% { transform: rotate(4deg) translateY(-6px); } 100% { transform: rotate(-2deg) translateY(0); } }
@keyframes asw-mast { 0% { transform: rotate(-6deg); } 50% { transform: rotate(-10deg); } 100% { transform: rotate(-6deg); } }
@keyframes asw-sail { 0% { transform: rotate(-5deg) scaleX(1); } 50% { transform: rotate(5deg) scaleX(.95); } 100% { transform: rotate(-3deg) scaleX(1); } }
@keyframes asw-drift-a { 0% { transform: translateX(-30px); } 100% { transform: translateX(120vw); } }
@keyframes asw-drift-b { 0% { transform: translateX(0); } 100% { transform: translateX(-120vw); } }

.scn-shylock-venice-street { background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 40%, #1a1a2a 100%), radial-gradient(ellipse at 50% 100%, #4a4a5a 0%, transparent 70%); }
.scn-shylock-venice-street .svs-sky { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #4a4a5a 0%, #2a2a3a 100%); animation: svs-sky 18s ease-in-out infinite alternate; }
.scn-shylock-venice-street .svs-water { position:absolute; bottom:0; left:0; right:0; height:50%; background: linear-gradient(180deg, #2a3a3a 0%, #1a2a2a 100%); border-radius: 0 0 30% 30%; box-shadow: inset 0 4px 10px rgba(0,0,0,.4); animation: svs-water 6s ease-in-out infinite; }
.scn-shylock-venice-street .svs-bridge { position:absolute; bottom:35%; left:10%; width:80%; height:50px; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 0 0 40% 40%; clip-path: polygon(10% 0%, 90% 0%, 100% 100%, 0% 100%); animation: svs-bridge 10s ease-in-out infinite alternate; }
.scn-shylock-venice-street .svs-building-left { position:absolute; bottom:20%; left:5%; width:30%; height:60%; background: linear-gradient(180deg, #3a2a2a 0%, #1a0a0a 100%); border-radius: 5% 5% 0 0; box-shadow: -4px 0 8px rgba(0,0,0,.6); animation: svs-building 12s ease-in-out infinite; }
.scn-shylock-venice-street .svs-building-right { position:absolute; bottom:20%; right:5%; width:30%; height:60%; background: linear-gradient(180deg, #3a2a2a 0%, #1a0a0a 100%); border-radius: 5% 5% 0 0; box-shadow: 4px 0 8px rgba(0,0,0,.6); animation: svs-building 12s ease-in-out infinite reverse; }
.scn-shylock-venice-street .svs-figure { position:absolute; bottom:25%; left:45%; width:24px; height:60px; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: svs-figure 3s ease-in-out infinite; }
.scn-shylock-venice-street .svs-bond { position:absolute; bottom:30%; left:48%; width:16px; height:20px; background: linear-gradient(180deg, #8a7a6a 0%, #4a3a2a 100%); border-radius: 2px; transform: rotate(15deg); transform-origin: bottom left; animation: svs-bond 3s ease-in-out infinite; }
.scn-shylock-venice-street .svs-shadow { position:absolute; bottom:20%; left:42%; width:40px; height:10px; background: radial-gradient(ellipse at center, rgba(0,0,0,.6) 0%, transparent 70%); animation: svs-shadow 4s ease-in-out infinite; }
@keyframes svs-sky { 0% { opacity: .5; } 50% { opacity: .8; } 100% { opacity: .6; } }
@keyframes svs-water { 0% { transform: translateY(0); } 50% { transform: translateY(-5px); } 100% { transform: translateY(0); } }
@keyframes svs-bridge { 0% { transform: translateY(0); } 50% { transform: translateY(-3px) scaleY(1.02); } 100% { transform: translateY(0); } }
@keyframes svs-building { 0% { transform: scaleY(1) translateY(0); } 50% { transform: scaleY(1.02) translateY(-2px); } 100% { transform: scaleY(1) translateY(0); } }
@keyframes svs-figure { 0% { transform: translateX(0) rotate(-2deg); } 50% { transform: translateX(4px) rotate(2deg) scaleY(1.01); } 100% { transform: translateX(0) rotate(-1deg); } }
@keyframes svs-bond { 0% { transform: rotate(15deg); } 50% { transform: rotate(20deg) translateY(-2px); } 100% { transform: rotate(13deg); } }
@keyframes svs-shadow { 0% { transform: scaleX(1); opacity: .6; } 50% { transform: scaleX(1.2); opacity: .8; } 100% { transform: scaleX(1); opacity: .5; } }

.scn-shylock-tubal-daughter-news { background: linear-gradient(180deg, #1a1a2e 0%, #0e0e1a 30%, #1a1a2e 70%, #0a0a14 100%), radial-gradient(ellipse at 50% 100%, #2a2a3e 0%, transparent 70%); }
.scn-shylock-tubal-daughter-news .std-bg { position:absolute; inset:0; background: linear-gradient(135deg, #2a2a3e 0%, #0e0e1a 100%); animation: std-bg 20s ease-in-out infinite alternate; }
.scn-shylock-tubal-daughter-news .std-table { position:absolute; bottom:10%; left:10%; width:80%; height:30%; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 20% 20% 0 0; box-shadow: 0 -4px 20px rgba(0,0,0,.6); }
.scn-shylock-tubal-daughter-news .std-hand { position:absolute; bottom:35%; left:40%; width:30px; height:40px; background: linear-gradient(180deg, #5a4a3a 0%, #2a1a0a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: std-hand 4s ease-in-out infinite; }
.scn-shylock-tubal-daughter-news .std-diamond { position:absolute; bottom:40%; left:48%; width:14px; height:10px; background: radial-gradient(circle, #d0e0ff 0%, #8090b0 70%); border-radius: 40% 40% 20% 20%; box-shadow: 0 0 20px 6px rgba(128,144,176,.6); animation: std-diamond 2s ease-in-out infinite alternate; }
.scn-shylock-tubal-daughter-news .std-sparkle { position:absolute; bottom:43%; left:50%; width:4px; height:4px; background: #e0f0ff; border-radius: 50%; box-shadow: 0 0 12px 4px rgba(224,240,255,.8); animation: std-sparkle 1.5s ease-in-out infinite; }
.scn-shylock-tubal-daughter-news .std-shadow { position:absolute; bottom:20%; left:30%; width:40%; height:20%; background: radial-gradient(ellipse at center, rgba(0,0,0,.7) 0%, transparent 70%); animation: std-shadow 5s ease-in-out infinite; }
.scn-shylock-tubal-daughter-news .std-window { position:absolute; top:5%; right:5%; width:50px; height:40px; background: linear-gradient(180deg, #3a3a5a 0%, #1a1a3a 100%); border-radius: 10% 10% 0 0; border: 2px solid #2a2a4a; animation: std-window 8s ease-in-out infinite alternate; }
@keyframes std-bg { 0% { opacity: .7; } 50% { opacity: 1; } 100% { opacity: .8; } }
@keyframes std-hand { 0% { transform: translateY(0) rotate(-3deg); } 50% { transform: translateY(-8px) rotate(2deg) scale(1.02); } 100% { transform: translateY(0) rotate(-1deg); } }
@keyframes std-diamond { 0% { transform: scale(1) rotate(0deg); box-shadow: 0 0 10px 2px rgba(128,144,176,.4); } 50% { transform: scale(1.15) rotate(10deg); box-shadow: 0 0 30px 10px rgba(128,144,176,.8); } 100% { transform: scale(1) rotate(0deg); box-shadow: 0 0 12px 3px rgba(128,144,176,.5); } }
@keyframes std-sparkle { 0% { transform: scale(1); opacity: .3; } 50% { transform: scale(2.5); opacity: 1; } 100% { transform: scale(1); opacity: .4; } }
@keyframes std-shadow { 0% { transform: scaleX(1) scaleY(1); } 50% { transform: scaleX(1.2) scaleY(1.1); } 100% { transform: scaleX(1) scaleY(1); } }
@keyframes std-window { 0% { opacity: .3; } 50% { opacity: .8; } 100% { opacity: .5; } }

.scn-bassanio-chooses-casket { background: linear-gradient(180deg, #f5e6c8 0%, #e0c898 40%, #c8a878 100%), radial-gradient(ellipse at 50% 0%, #fff4e0 0%, transparent 60%); }
.scn-bassanio-chooses-casket .bcc-bg { position:absolute; inset:0; background: radial-gradient(ellipse at 50% 20%, #f5e0b0 0%, #d0b080 100%); animation: bcc-bg 20s ease-in-out infinite alternate; }
.scn-bassanio-chooses-casket .bcc-floor { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, #c8a068 0%, #a08050 100%); border-radius: 0 0 30% 30%; box-shadow: inset 0 20px 40px rgba(0,0,0,.2); }
.scn-bassanio-chooses-casket .bcc-casket-gold { position:absolute; bottom:20%; left:15%; width:80px; height:70px; background: linear-gradient(180deg, #d4a040 0%, #a07020 100%); border-radius: 10% 10% 5% 5%; box-shadow: 0 8px 16px rgba(0,0,0,.3), inset 0 0 20px rgba(255,215,0,.4); animation: bcc-casket 8s ease-in-out infinite; }
.scn-bassanio-chooses-casket .bcc-casket-silver { position:absolute; bottom:20%; left:40%; width:80px; height:70px; background: linear-gradient(180deg, #c0c0c0 0%, #808080 100%); border-radius: 10% 10% 5% 5%; box-shadow: 0 8px 16px rgba(0,0,0,.3), inset 0 0 20px rgba(255,255,255,.2); animation: bcc-casket 8s ease-in-out infinite 2s; }
.scn-bassanio-chooses-casket .bcc-casket-lead { position:absolute; bottom:20%; left:65%; width:80px; height:70px; background: linear-gradient(180deg, #5a5a5a 0%, #3a3a3a 100%); border-radius: 10% 10% 5% 5%; box-shadow: 0 8px 16px rgba(0,0,0,.5), inset 0 0 10px rgba(0,0,0,.3); animation: bcc-casket 8s ease-in-out infinite 4s; }
.scn-bassanio-chooses-casket .bcc-figure { position:absolute; bottom:22%; left:50%; width:20px; height:50px; background: linear-gradient(180deg, #5a4a3a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: bcc-figure 4s ease-in-out infinite; }
.scn-bassanio-chooses-casket .bcc-light-ray { position:absolute; top:0; left:30%; width:40%; height:40%; background: linear-gradient(180deg, rgba(255,240,200,.6) 0%, transparent 100%); clip-path: polygon(30% 0%, 70% 0%, 90% 100%, 10% 100%); animation: bcc-light 10s ease-in-out infinite alternate; }
@keyframes bcc-bg { 0% { opacity: .8; } 50% { opacity: 1; } 100% { opacity: .9; } }
@keyframes bcc-casket { 0% { transform: translateY(0) scale(1); } 50% { transform: translateY(-6px) scale(1.02); } 100% { transform: translateY(0) scale(1); } }
@keyframes bcc-figure { 0% { transform: translateX(0) rotate(-2deg); } 50% { transform: translateX(10px) rotate(2deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes bcc-light { 0% { transform: rotate(-5deg); opacity: .3; } 50% { transform: rotate(3deg); opacity: .7; } 100% { transform: rotate(0deg); opacity: .5; } }

.scn-belmont-portia-plans {
  background:
    linear-gradient(180deg, #d4c9a8 0%, #c4b48a 40%, #a8946a 100%),
    radial-gradient(ellipse at 50% 100%, #8a7a5a 0%, transparent 70%);
}
.scn-belmont-portia-plans .interior-wall {
  position: absolute; inset: 0; background:
    linear-gradient(135deg, #e0d5b8 0%, #c8b898 50%, #b0a080 100%);
  animation: bpp-wall 20s ease-in-out infinite alternate;
}
.scn-belmont-portia-plans .window-frame {
  position: absolute; top: 8%; left: 35%; width: 30%; height: 38%;
  border: 6px solid #5a4a3a; border-radius: 4px;
  background: rgba(200, 180, 140, 0.3);
  box-shadow: inset 0 0 40px rgba(255, 220, 160, 0.4);
}
.scn-belmont-portia-plans .window-light {
  position: absolute; top: 10%; left: 37%; width: 26%; height: 34%;
  background: radial-gradient(ellipse, #ffedc0 0%, #ecc890 40%, transparent 100%);
  animation: bpp-glow 4s ease-in-out infinite alternate;
}
.scn-belmont-portia-plans .desk {
  position: absolute; bottom: 12%; left: 20%; width: 60%; height: 10%;
  background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%);
  border-radius: 4px; box-shadow: 0 4px 12px rgba(0,0,0,0.3);
}
.scn-belmont-portia-plans .letter {
  position: absolute; bottom: 16%; left: 42%; width: 16%; height: 10%;
  background: linear-gradient(135deg, #f5ead0 0%, #e0d0b0 100%);
  border-radius: 2px; transform: rotate(-2deg);
  box-shadow: 2px 2px 6px rgba(0,0,0,0.2);
  animation: bpp-letter 6s ease-in-out infinite;
}
.scn-belmont-portia-plans .portia-figure {
  position: absolute; bottom: 14%; left: 48%; width: 14%; height: 28%;
  background: linear-gradient(180deg, #8a7a6a 0%, #6a5a4a 50%, #4a3a2a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: bpp-portia 8s ease-in-out infinite alternate;
}
.scn-belmont-portia-plans .candle-flame {
  position: absolute; bottom: 24%; left: 40%; width: 2%; height: 4%;
  background: radial-gradient(circle, #ffe080 0%, #ffb040 40%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 20px 6px rgba(255, 180, 60, 0.6);
  animation: bpp-candle 2s ease-in-out infinite alternate;
}
.scn-belmont-portia-plans .curtain-left {
  position: absolute; top: 0; left: 0; width: 12%; height: 100%;
  background: linear-gradient(90deg, #6a4a3a 0%, #8a6a5a 50%, #6a4a3a 100%);
  border-radius: 0 20% 20% 0; filter: blur(1px);
  animation: bpp-curtain 12s ease-in-out infinite alternate;
}
.scn-belmont-portia-plans .curtain-right {
  position: absolute; top: 0; right: 0; width: 12%; height: 100%;
  background: linear-gradient(90deg, #6a4a3a 0%, #8a6a5a 50%, #6a4a3a 100%);
  border-radius: 20% 0 0 20%; filter: blur(1px);
  animation: bpp-curtain 12s ease-in-out infinite alternate-reverse;
}
@keyframes bpp-wall { 0% { opacity: 0.8 } 50% { opacity: 1 } 100% { opacity: 0.85 } }
@keyframes bpp-glow { 0% { opacity: 0.7; transform: scale(0.95) } 50% { opacity: 1; transform: scale(1.05) } 100% { opacity: 0.8; transform: scale(0.98) } }
@keyframes bpp-letter { 0% { transform: rotate(-2deg) translateY(0) } 50% { transform: rotate(0deg) translateY(-2px) } 100% { transform: rotate(2deg) translateY(0) } }
@keyframes bpp-portia { 0% { transform: rotate(-1deg) translateY(0) } 50% { transform: rotate(0deg) translateY(-3px) } 100% { transform: rotate(1deg) translateY(0) } }
@keyframes bpp-candle { 0% { transform: scale(1) translateY(0); opacity: 0.8 } 50% { transform: scale(1.1) translateY(-1px); opacity: 1 } 100% { transform: scale(0.95) translateY(0); opacity: 0.7 } }
@keyframes bpp-curtain { 0% { transform: scaleX(1) } 50% { transform: scaleX(0.9) } 100% { transform: scaleX(1.05) } }

.scn-belmont-garden-jessica-and-launcelot {
  background:
    linear-gradient(180deg, #87ceeb 0%, #b0e0e6 40%, #98d8c8 100%),
    radial-gradient(ellipse at 30% 20%, #fff8dc 0%, transparent 60%);
}
.scn-belmont-garden-jessica-and-launcelot .garden-sky {
  position: absolute; inset: 0; background:
    linear-gradient(180deg, #b0e0e6 0%, #e0f0e8 50%, transparent 100%);
  animation: bjj-sky 25s ease-in-out infinite alternate;
}
.scn-belmont-garden-jessica-and-launcelot .hedge {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #4a7a3a 0%, #2a5a1a 100%);
  border-radius: 60% 40% 0 0 / 80% 70% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.3);
}
.scn-belmont-garden-jessica-and-launcelot .tree {
  position: absolute; bottom: 30%; left: 20%; width: 25%; height: 60%;
  background: linear-gradient(180deg, #5a3a1a 0%, #3a2a0a 100%);
  border-radius: 50% 50% 30% 30% / 80% 80% 20% 20%;
  box-shadow: 0 4px 20px rgba(0,0,0,0.3);
  animation: bjj-tree 15s ease-in-out infinite;
}
.scn-belmont-garden-jessica-and-launcelot .jessica-figure {
  position: absolute; bottom: 20%; left: 35%; width: 12%; height: 26%;
  background: linear-gradient(180deg, #d4a070 0%, #b08050 50%, #8a6040 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: bjj-jessica 5s ease-in-out infinite alternate;
}
.scn-belmont-garden-jessica-and-launcelot .launcelot-figure {
  position: absolute; bottom: 20%; left: 55%; width: 14%; height: 30%;
  background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 50%, #2a1a0a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: bjj-launcelot 3s ease-in-out infinite alternate;
}
.scn-belmont-garden-jessica-and-launcelot .butterfly-a {
  position: absolute; top: 30%; left: 10%; width: 4%; height: 3%;
  background: radial-gradient(circle, #ffa07a 0%, #ff8c69 100%);
  border-radius: 50%;
  filter: blur(1px);
  animation: bjj-bfly 8s linear infinite;
}
.scn-belmont-garden-jessica-and-launcelot .butterfly-b {
  position: absolute; top: 25%; left: 60%; width: 3%; height: 2.5%;
  background: radial-gradient(circle, #87cefa 0%, #4682b4 100%);
  border-radius: 50%;
  filter: blur(1px);
  animation: bjj-bfly 10s linear infinite reverse;
  animation-delay: -3s;
}
.scn-belmont-garden-jessica-and-launcelot .flower-bed {
  position: absolute; bottom: 10%; left: 15%; width: 70%; height: 12%;
  background:
    radial-gradient(circle at 20% 50%, #ff6347 0%, transparent 20%),
    radial-gradient(circle at 40% 50%, #ffd700 0%, transparent 20%),
    radial-gradient(circle at 60% 50%, #9370db 0%, transparent 20%),
    radial-gradient(circle at 80% 50%, #ff69b4 0%, transparent 20%),
    radial-gradient(circle at 90% 50%, #ffa500 0%, transparent 20%);
  animation: bjj-flowers 4s ease-in-out infinite alternate;
}
@keyframes bjj-sky { 0% { opacity: 0.8 } 50% { opacity: 1 } 100% { opacity: 0.9 } }
@keyframes bjj-tree { 0% { transform: rotate(0deg) scale(1) } 50% { transform: rotate(1deg) scale(1.02) } 100% { transform: rotate(-1deg) scale(0.98) } }
@keyframes bjj-jessica { 0% { transform: rotate(-2deg) translateY(0) } 50% { transform: rotate(1deg) translateY(-3px) } 100% { transform: rotate(-1deg) translateY(0) } }
@keyframes bjj-launcelot { 0% { transform: rotate(3deg) translateX(0) } 50% { transform: rotate(-2deg) translateX(5px) } 100% { transform: rotate(1deg) translateX(0) } }
@keyframes bjj-bfly { 0% { transform: translate(0, 0) rotate(0deg) } 25% { transform: translate(20px, -10px) rotate(20deg) } 50% { transform: translate(40px, 5px) rotate(-10deg) } 75% { transform: translate(60px, -5px) rotate(15deg) } 100% { transform: translate(80px, 0) rotate(0deg) } }
@keyframes bjj-flowers { 0% { opacity: 0.7; transform: scaleY(1) } 50% { opacity: 1; transform: scaleY(1.1) } 100% { opacity: 0.8; transform: scaleY(0.95) } }

.scn-venice-court-trial {
  background:
    linear-gradient(180deg, #c8b8a8 0%, #a89888 40%, #8a7a6a 100%),
    radial-gradient(ellipse at 50% 100%, #6a5a4a 0%, transparent 70%);
}
.scn-venice-court-trial .court-wall {
  position: absolute; inset: 0; background:
    linear-gradient(135deg, #d8c8b8 0%, #b8a898 50%, #a09080 100%);
  box-shadow: inset 0 0 60px rgba(0,0,0,0.3);
}
.scn-venice-court-trial .judge-bench {
  position: absolute; bottom: 50%; left: 30%; width: 40%; height: 12%;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 8px 8px 4px 4px;
  box-shadow: 0 6px 20px rgba(0,0,0,0.5);
}
.scn-venice-court-trial .antonio-figure {
  position: absolute; bottom: 20%; left: 35%; width: 12%; height: 30%;
  background: linear-gradient(180deg, #7a6a5a 0%, #5a4a3a 50%, #3a2a1a 100%);
  border-radius: 45% 45% 30% 30% / 55% 55% 25% 25%;
  transform-origin: bottom center;
  animation: vct-figure 12s ease-in-out infinite alternate;
}
.scn-venice-court-trial .shylock-figure {
  position: absolute; bottom: 20%; left: 55%; width: 14%; height: 28%;
  background: linear-gradient(180deg, #5a4a3a 0%, #4a3a2a 50%, #2a1a0a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: vct-figure 15s ease-in-out infinite alternate-reverse;
}
.scn-venice-court-trial .law-book {
  position: absolute; bottom: 28%; left: 46%; width: 8%; height: 6%;
  background: linear-gradient(135deg, #8a3a1a 0%, #6a2a0a 100%);
  border-radius: 2px;
  box-shadow: 0 2px 8px rgba(0,0,0,0.4);
  animation: vct-book 20s ease-in-out infinite;
}
.scn-venice-court-trial .pillar-left {
  position: absolute; top: 0; left: 8%; width: 6%; height: 100%;
  background: linear-gradient(90deg, #9a8a7a 0%, #b8a898 30%, #9a8a7a 70%, #8a7a6a 100%);
  box-shadow: 4px 0 12px rgba(0,0,0,0.3);
}
.scn-venice-court-trial .pillar-right {
  position: absolute; top: 0; right: 8%; width: 6%; height: 100%;
  background: linear-gradient(90deg, #8a7a6a 0%, #9a8a7a 30%, #b8a898 70%, #9a8a7a 100%);
  box-shadow: -4px 0 12px rgba(0,0,0,0.3);
}
.scn-venice-court-trial .court-window {
  position: absolute; top: 8%; left: 38%; width: 24%; height: 32%;
  border: 4px solid #5a4a3a; border-radius: 4px;
  background: linear-gradient(180deg, #c8d8e8 0%, #a8b8c8 100%);
  opacity: 0.6;
  animation: vct-window 8s ease-in-out infinite alternate;
}
@keyframes vct-figure { 0% { transform: translateY(0) rotate(-1deg) } 50% { transform: translateY(-2px) rotate(0deg) } 100% { transform: translateY(0) rotate(1deg) } }
@keyframes vct-book { 0% { transform: rotate(-3deg) translateY(0) } 50% { transform: rotate(-1deg) translateY(-2px) } 100% { transform: rotate(-5deg) translateY(0) } }
@keyframes vct-window { 0% { opacity: 0.5; transform: scaleX(1) } 50% { opacity: 0.7; transform: scaleX(1.02) } 100% { opacity: 0.6; transform: scaleX(0.98) } }

.scn-venice-street-rings {
  background:
    linear-gradient(180deg, #1a1a3e 0%, #2a2a5e 40%, #1a2a4a 100%),
    radial-gradient(ellipse at 80% 30%, #3a4a7a 0%, transparent 60%);
}
.scn-venice-street-rings .night-sky {
  position: absolute; inset: 0; background:
    linear-gradient(180deg, #0a0a2e 0%, #1a2a4e 50%, transparent 100%);
  animation: vsr-sky 30s ease-in-out infinite alternate;
}
.scn-venice-street-rings .moon {
  position: absolute; top: 8%; right: 20%; width: 8%; height: 12%;
  background: radial-gradient(circle, #ffe8c0 0%, #ffd8a0 40%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 40px 10px rgba(255, 220, 150, 0.4);
  animation: vsr-moon 20s ease-in-out infinite;
}
.scn-venice-street-rings .star-a {
  position: absolute; top: 12%; left: 15%; width: 2%; height: 2%;
  background: radial-gradient(circle, #ffffff 0%, transparent 100%);
  animation: vsr-twinkle 3s ease-in-out infinite;
}
.scn-venice-street-rings .star-b {
  position: absolute; top: 18%; left: 70%; width: 1.5%; height: 1.5%;
  background: radial-gradient(circle, #ffffff 0%, transparent 100%);
  animation: vsr-twinkle 4s ease-in-out infinite reverse;
  animation-delay: -1.5s;
}
.scn-venice-street-rings .lamp-post {
  position: absolute; bottom: 0; left: 25%; width: 4%; height: 50%;
  background: linear-gradient(180deg, #3a3a3a 0%, #2a2a2a 100%);
  border-radius: 4px;
  animation: vsr-lamp 6s ease-in-out infinite alternate;
}
.scn-venice-street-rings .lamp-glow {
  position: absolute; bottom: 48%; left: 23%; width: 8%; height: 6%;
  background: radial-gradient(circle, #ffd080 0%, #ffb040 40%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 30px 8px rgba(255, 180, 60, 0.5);
  animation: vsr-lampglow 3s ease-in-out infinite alternate;
}
.scn-venice-street-rings .portia-figure {
  position: absolute; bottom: 10%; left: 40%; width: 12%; height: 26%;
  background: linear-gradient(180deg, #8a7a6a 0%, #6a5a4a 50%, #4a3a2a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: vsr-walk 7s ease-in-out infinite alternate;
}
.scn-venice-street-rings .nerissa-figure {
  position: absolute; bottom: 10%; left: 54%; width: 11%; height: 24%;
  background: linear-gradient(180deg, #7a6a5a 0%, #5a4a3a 50%, #3a2a1a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: vsr-walk 9s ease-in-out infinite alternate-reverse;
}
.scn-venice-street-rings .cobblestone {
  position: absolute; bottom: 0; left: 0; right: 0; height: 12%;
  background:
    radial-gradient(circle at 10% 30%, #4a4a4a 0%, transparent 10%),
    radial-gradient(circle at 30% 50%, #5a5a5a 0%, transparent 12%),
    radial-gradient(circle at 50% 20%, #4a4a4a 0%, transparent 10%),
    radial-gradient(circle at 70% 40%, #5a5a5a 0%, transparent 12%),
    radial-gradient(circle at 90% 30%, #4a4a4a 0%, transparent 10%);
  background-color: #3a3a3a;
  border-radius: 0;
  animation: vsr-stone 15s ease-in-out infinite;
}
@keyframes vsr-sky { 0% { opacity: 0.7 } 50% { opacity: 1 } 100% { opacity: 0.8 } }
@keyframes vsr-moon { 0% { transform: translateY(0) scale(1) } 50% { transform: translateY(-3px) scale(1.02) } 100% { transform: translateY(0) scale(0.98) } }
@keyframes vsr-twinkle { 0% { opacity: 0.3; transform: scale(0.8) } 50% { opacity: 1; transform: scale(1.2) } 100% { opacity: 0.4; transform: scale(0.9) } }
@keyframes vsr-lamp { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.01) } 100% { transform: scaleY(0.99) } }
@keyframes vsr-lampglow { 0% { opacity: 0.7; transform: scale(0.95) } 50% { opacity: 1; transform: scale(1.1) } 100% { opacity: 0.8; transform: scale(1) } }
@keyframes vsr-walk { 0% { transform: translateX(0) translateY(0) rotate(-1deg) } 25% { transform: translateX(5px) translateY(-2px) rotate(0deg) } 50% { transform: translateX(10px) translateY(0) rotate(1deg) } 75% { transform: translateX(5px) translateY(-1px) rotate(0deg) } 100% { transform: translateX(0) translateY(0) rotate(-1deg) } }
@keyframes vsr-stone { 0% { opacity: 0.6 } 50% { opacity: 0.8 } 100% { opacity: 0.7 } }

.scn-venice-street-gratiano-exhorts {
  background: linear-gradient(180deg, #87CEEB 0%, #B0D4F0 30%, #F0D8A0 70%, #D4A060 100%),
              radial-gradient(ellipse at 60% 40%, rgba(255,230,150,0.4) 0%, transparent 60%);
  overflow: hidden;
}
.scn-venice-street-gratiano-exhorts .sky-wash {
  position: absolute; inset: 0 0 55% 0;
  background: linear-gradient(180deg, #A8D8EA 0%, #F5E6CA 100%);
  animation: vsg-sky 8s ease-in-out infinite alternate;
}
.scn-venice-street-gratiano-exhorts .building-left {
  position: absolute; bottom: 0; left: 0; width: 35%; height: 70%;
  background: linear-gradient(180deg, #D4A373 0%, #B8895B 40%, #8B6F47 100%);
  border-radius: 0 8% 0 0;
  box-shadow: inset -8px 0 20px rgba(0,0,0,0.2);
}
.scn-venice-street-gratiano-exhorts .building-right {
  position: absolute; bottom: 0; right: 0; width: 40%; height: 65%;
  background: linear-gradient(180deg, #C4956A 0%, #A07850 50%, #7A5E3A 100%);
  border-radius: 8% 0 0 0;
  box-shadow: inset 8px 0 20px rgba(0,0,0,0.15);
}
.scn-venice-street-gratiano-exhorts .canal-glow {
  position: absolute; bottom: 0; left: 25%; right: 25%; height: 35%;
  background: linear-gradient(180deg, #7AB8D4 0%, #4A8AB0 40%, #2A5A78 100%);
  border-radius: 50% 50% 0 0 / 20% 20% 0 0;
  box-shadow: 0 -8px 30px rgba(74,138,176,0.3);
  animation: vsg-water 6s ease-in-out infinite alternate;
}
.scn-venice-street-gratiano-exhorts .figure-gratiano {
  position: absolute; bottom: 28%; left: 48%; width: 32px; height: 60px;
  background: linear-gradient(180deg, #C8553D 0%, #8B2A1A 60%, #4A150A 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: vsg-gesture 2s ease-in-out infinite;
}
.scn-venice-street-gratiano-exhorts .figure-listener {
  position: absolute; bottom: 28%; left: 62%; width: 28px; height: 58px;
  background: linear-gradient(180deg, #5E7A9E 0%, #3A5070 60%, #1A2840 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform: scaleX(-1);
  animation: vsg-listen 4s ease-in-out infinite alternate;
}
.scn-venice-street-gratiano-exhorts .gesture-hand {
  position: absolute; bottom: 48%; left: 52%; width: 12px; height: 8px;
  background: #D47A5A;
  border-radius: 50% 50% 40% 40%;
  transform-origin: left center;
  animation: vsg-hand-wave 2s ease-in-out infinite;
}
.scn-venice-street-gratiano-exhorts .sun-beam {
  position: absolute; top: 10%; left: 30%; width: 40%; height: 50%;
  background: linear-gradient(180deg, rgba(255,230,150,0.5) 0%, transparent 100%);
  clip-path: polygon(20% 0%, 80% 0%, 60% 100%, 40% 100%);
  animation: vsg-beam 5s ease-in-out infinite alternate;
}
.scn-venice-street-gratiano-exhorts .pigeon {
  position: absolute; bottom: 35%; left: 20%; width: 14px; height: 10px;
  background: #A09088;
  border-radius: 50% 50% 40% 40%;
  animation: vsg-pigeon 3s ease-in-out infinite;
}
@keyframes vsg-sky { 0% { opacity: 0.8 } 50% { opacity: 1 } 100% { opacity: 0.85 } }
@keyframes vsg-water { 0% { transform: translateY(0) } 50% { transform: translateY(-3px) } 100% { transform: translateY(2px) } }
@keyframes vsg-gesture { 0% { transform: translateX(0) rotate(-2deg) } 25% { transform: translateX(4px) rotate(3deg) } 50% { transform: translateX(-2px) rotate(-4deg) } 75% { transform: translateX(6px) rotate(2deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes vsg-listen { 0% { transform: scaleX(-1) translateX(0) } 50% { transform: scaleX(-1) translateX(-5px) rotate(-2deg) } 100% { transform: scaleX(-1) translateX(0) } }
@keyframes vsg-hand-wave { 0% { transform: rotate(-20deg) } 25% { transform: rotate(30deg) } 50% { transform: rotate(-15deg) } 75% { transform: rotate(40deg) } 100% { transform: rotate(-20deg) } }
@keyframes vsg-beam { 0% { opacity: 0.3; transform: scaleY(0.95) } 50% { opacity: 0.7; transform: scaleY(1.1) translateX(10px) } 100% { opacity: 0.4; transform: scaleY(1) } }
@keyframes vsg-pigeon { 0% { transform: translateX(0) translateY(0) } 25% { transform: translateX(20px) translateY(-2px) scale(1.05) } 50% { transform: translateX(40px) translateY(0) } 75% { transform: translateX(60px) translateY(-1px) } 100% { transform: translateX(80px) translateY(0) } }

.scn-venice-street-gratiano-exit {
  background: linear-gradient(180deg, #9CC8E0 0%, #C4D8A8 30%, #E8D4A0 60%, #C8A870 100%),
              radial-gradient(ellipse at 40% 30%, rgba(255,235,180,0.5) 0%, transparent 50%);
  overflow: hidden;
}
.scn-venice-street-gratiano-exit .sky-fade {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #B8D8E8 0%, #E8E0C8 60%, #F0D8A0 100%);
  animation: vgx-sky 10s ease-in-out infinite alternate;
}
.scn-venice-street-gratiano-exit .archway {
  position: absolute; bottom: 15%; left: 20%; width: 60%; height: 55%;
  background: linear-gradient(180deg, #D4B896 0%, #A88060 50%, #7A5E3A 100%);
  border-radius: 50% 50% 0 0 / 30% 30% 0 0;
  box-shadow: inset 0 20px 40px rgba(0,0,0,0.3);
}
.scn-venice-street-gratiano-exit .street-perspective {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #B09878 0%, #8A7050 40%, #5A4020 100%);
  clip-path: polygon(10% 0%, 90% 0%, 100% 100%, 0% 100%);
}
.scn-venice-street-gratiano-exit .figure-gratiano-back {
  position: absolute; bottom: 25%; left: 38%; width: 26px; height: 58px;
  background: linear-gradient(180deg, #C8553D 0%, #8B2A1A 60%, #4A150A 100%);
  border-radius: 30% 30% 40% 40% / 40% 40% 50% 50%;
  transform-origin: bottom center;
  animation: vgx-walk 3s ease-in-out infinite;
}
.scn-venice-street-gratiano-exit .figure-lorenzo {
  position: absolute; bottom: 27%; left: 46%; width: 24px; height: 56px;
  background: linear-gradient(180deg, #5E7A9E 0%, #3A5070 60%, #1A2840 100%);
  border-radius: 30% 30% 40% 40% / 40% 40% 50% 50%;
  animation: vgx-walk 3s ease-in-out infinite 0.5s;
}
.scn-venice-street-gratiano-exit .shadow-pair {
  position: absolute; bottom: 22%; left: 36%; width: 40px; height: 10px;
  background: rgba(0,0,0,0.15);
  border-radius: 50%;
  filter: blur(3px);
  animation: vgx-shadow 3s ease-in-out infinite;
}
.scn-venice-street-gratiano-exit .dust-motes {
  position: absolute; bottom: 30%; left: 30%; width: 40%; height: 20%;
  background: radial-gradient(circle at 50% 50%, rgba(200,180,140,0.15) 0%, transparent 70%);
  filter: blur(4px);
  animation: vgx-dust 6s ease-in-out infinite alternate;
}
.scn-venice-street-gratiano-exit .doorway {
  position: absolute; bottom: 15%; left: 55%; width: 18px; height: 40px;
  background: linear-gradient(180deg, #5A3A1A 0%, #2A1A0A 100%);
  border-radius: 20% 20% 0 0;
  box-shadow: -4px 0 8px rgba(0,0,0,0.3);
  animation: vgx-door 8s ease-in-out infinite alternate;
}
@keyframes vgx-sky { 0% { opacity: 0.8; transform: scaleY(1) } 50% { opacity: 1; transform: scaleY(1.05) } 100% { opacity: 0.85; transform: scaleY(0.95) } }
@keyframes vgx-walk { 0% { transform: translateX(0) translateY(0) rotate(-2deg) } 25% { transform: translateX(8px) translateY(-1px) rotate(0) } 50% { transform: translateX(16px) translateY(0) rotate(2deg) } 75% { transform: translateX(24px) translateY(-1px) rotate(0) } 100% { transform: translateX(32px) translateY(0) rotate(-2deg) } }
@keyframes vgx-shadow { 0% { transform: translateX(0) scaleX(1); opacity: 0.5 } 25% { transform: translateX(8px) scaleX(1.1); opacity: 0.6 } 50% { transform: translateX(16px) scaleX(0.9); opacity: 0.4 } 75% { transform: translateX(24px) scaleX(1.2); opacity: 0.5 } 100% { transform: translateX(32px) scaleX(1); opacity: 0.3 } }
@keyframes vgx-dust { 0% { transform: translateY(0) scale(1); opacity: 0.3 } 50% { transform: translateY(-8px) scale(1.1); opacity: 0.6 } 100% { transform: translateY(4px) scale(0.9); opacity: 0.2 } }
@keyframes vgx-door { 0% { transform: scaleX(1) } 50% { transform: scaleX(0.2) translateX(-8px) } 100% { transform: scaleX(1) } }

.scn-venice-street-bassanio-reveals-portia {
  background: linear-gradient(180deg, #F5E6CA 0%, #E8D8B0 30%, #D4C090 60%, #B09870 100%),
              radial-gradient(ellipse at 50% 35%, rgba(255,215,140,0.6) 0%, transparent 60%);
  overflow: hidden;
}
.scn-venice-street-bassanio-reveals-portia .sky-soft {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #C8D8E8 0%, #F0E0C0 40%, #FFE8B0 100%);
  animation: vbp-sky 12s ease-in-out infinite alternate;
}
.scn-venice-street-bassanio-reveals-portia .column-left {
  position: absolute; bottom: 0; left: 8%; width: 12px; height: 80%;
  background: linear-gradient(180deg, #D4C090 0%, #A08860 100%);
  border-radius: 4% 4% 0 0;
  box-shadow: 4px 0 12px rgba(0,0,0,0.15);
}
.scn-venice-street-bassanio-reveals-portia .column-right {
  position: absolute; bottom: 0; right: 8%; width: 12px; height: 80%;
  background: linear-gradient(180deg, #D4C090 0%, #A08860 100%);
  border-radius: 4% 4% 0 0;
  box-shadow: -4px 0 12px rgba(0,0,0,0.15);
}
.scn-venice-street-bassanio-reveals-portia .figure-bassanio {
  position: absolute; bottom: 20%; left: 40%; width: 30px; height: 60px;
  background: linear-gradient(180deg, #5E7A9E 0%, #3A5070 60%, #1A2840 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: vbp-speak 4s ease-in-out infinite alternate;
}
.scn-venice-street-bassanio-reveals-portia .figure-antonio {
  position: absolute; bottom: 20%; left: 54%; width: 32px; height: 62px;
  background: linear-gradient(180deg, #6A4A3A 0%, #4A2A1A 60%, #2A150A 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  animation: vbp-listen 5s ease-in-out infinite alternate;
}
.scn-venice-street-bassanio-reveals-portia .vision-portia {
  position: absolute; top: 18%; left: 38%; width: 24%; height: 30%;
  background: radial-gradient(circle at 50% 50%, rgba(255,220,180,0.5) 0%, rgba(255,200,160,0.2) 40%, transparent 70%);
  border-radius: 50%;
  filter: blur(8px);
  animation: vbp-vision 6s ease-in-out infinite alternate;
}
.scn-venice-street-bassanio-reveals-portia .golden-haze {
  position: absolute; top: 10%; left: 20%; width: 60%; height: 50%;
  background: radial-gradient(ellipse at 50% 50%, rgba(255,230,150,0.3) 0%, transparent 70%);
  animation: vbp-haze 8s ease-in-out infinite alternate;
}
.scn-venice-street-bassanio-reveals-portia .petal {
  position: absolute; top: 30%; left: 20%; width: 8px; height: 6px;
  background: #F0C8A0;
  border-radius: 50% 50% 0 50%;
  animation: vbp-petal-fall 6s ease-in infinite;
}
.scn-venice-street-bassanio-reveals-portia .petal-slow {
  position: absolute; top: 25%; left: 70%; width: 6px; height: 4px;
  background: #E8B0A0;
  border-radius: 50% 50% 0 50%;
  animation: vbp-petal-fall 9s ease-in infinite 2s;
}
@keyframes vbp-sky { 0% { opacity: 0.8 } 50% { opacity: 1 } 100% { opacity: 0.9 } }
@keyframes vbp-speak { 0% { transform: translateX(0) rotate(-2deg) } 50% { transform: translateX(6px) rotate(3deg) scaleY(1.02) } 100% { transform: translateX(0) rotate(0) } }
@keyframes vbp-listen { 0% { transform: translateX(0) translateY(0) } 50% { transform: translateX(-3px) translateY(-2px) } 100% { transform: translateX(0) translateY(0) } }
@keyframes vbp-vision { 0% { opacity: 0.2; transform: scale(0.9) } 50% { opacity: 0.7; transform: scale(1.1) } 100% { opacity: 0.3; transform: scale(0.95) } }
@keyframes vbp-haze { 0% { opacity: 0.3; transform: scaleX(1) } 50% { opacity: 0.7; transform: scaleX(1.2) translateX(-10px) } 100% { opacity: 0.4; transform: scaleX(0.9) } }
@keyframes vbp-petal-fall { 0% { transform: translateY(0) rotate(0) scale(1); opacity: 1 } 50% { transform: translateY(60px) rotate(120deg) scale(0.8); opacity: 0.7 } 100% { transform: translateY(120px) rotate(360deg) scale(0.5); opacity: 0 } }

.scn-venice-street-antonio-offers-help {
  background: linear-gradient(180deg, #E8D8B0 0%, #D4C090 30%, #C8B080 60%, #B09870 100%),
              radial-gradient(ellipse at 50% 40%, rgba(255,225,150,0.5) 0%, transparent 60%);
  overflow: hidden;
}
.scn-venice-street-antonio-offers-help .sky-warm {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #B8C8D8 0%, #E0D0A8 40%, #F5D8A0 100%);
  animation: vao-sky 10s ease-in-out infinite alternate;
}
.scn-venice-street-antonio-offers-help .pavement {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #A08860 0%, #7A6038 40%, #5A4018 100%);
  clip-path: polygon(0% 20%, 100% 10%, 100% 100%, 0% 100%);
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.3);
}
.scn-venice-street-antonio-offers-help .figure-antonio-front {
  position: absolute; bottom: 22%; left: 42%; width: 34px; height: 64px;
  background: linear-gradient(180deg, #6A4A3A 0%, #4A2A1A 60%, #2A150A 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: vao-antonio 4s ease-in-out infinite alternate;
}
.scn-venice-street-antonio-offers-help .figure-bassanio-facing {
  position: absolute; bottom: 22%; left: 54%; width: 30px; height: 62px;
  background: linear-gradient(180deg, #5E7A9E 0%, #3A5070 60%, #1A2840 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform: scaleX(-1);
  animation: vao-bassanio 3s ease-in-out infinite alternate;
}
.scn-venice-street-antonio-offers-help .antonio-purse {
  position: absolute; bottom: 30%; left: 50%; width: 20px; height: 14px;
  background: linear-gradient(180deg, #8B6F47 0%, #5A4018 100%);
  border-radius: 30% 30% 10% 10% / 40% 40% 20% 20%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.3);
  animation: vao-purse 3s ease-in-out infinite alternate;
}
.scn-venice-street-antonio-offers-help .antonio-hand {
  position: absolute; bottom: 35%; left: 47%; width: 10px; height: 14px;
  background: #8A6A4A;
  border-radius: 30% 30% 20% 20% / 40% 40% 30% 30%;
  transform-origin: bottom center;
  animation: vao-hand 3s ease-in-out infinite alternate;
}
.scn-venice-street-antonio-offers-help .coin {
  position: absolute; bottom: 38%; width: 8px; height: 8px;
  background: radial-gradient(circle, #FFD700 0%, #D4A020 60%, #8A6A0A 100%);
  border-radius: 50%;
  box-shadow: 0 2px 4px rgba(0,0,0,0.3);
}
.scn-venice-street-antonio-offers-help .coin-a {
  left: 52%; animation: vao-coin 4s ease-in-out infinite;
}
.scn-venice-street-antonio-offers-help .coin-b {
  left: 56%; animation: vao-coin 4s ease-in-out infinite 0.8s;
}
.scn-venice-street-antonio-offers-help .coin-c {
  left: 48%; animation: vao-coin 4s ease-in-out infinite 1.6s;
}
@keyframes vao-sky { 0% { opacity: 0.8 } 50% { opacity: 1 } 100% { opacity: 0.85 } }
@keyframes vao-antonio { 0% { transform: translateX(0) rotate(-1deg) } 50% { transform: translateX(4px) rotate(2deg) scaleY(1.02) } 100% { transform: translateX(0) rotate(0) } }
@keyframes vao-bassanio { 0% { transform: scaleX(-1) translateX(0) } 50% { transform: scaleX(-1) translateX(-6px) rotate(-3deg) } 100% { transform: scaleX(-1) translateX(0) } }
@keyframes vao-purse { 0% { transform: translateX(0) translateY(0) rotate(0) } 50% { transform: translateX(2px) translateY(-4px) rotate(-8deg) } 100% { transform: translateX(0) translateY(0) rotate(0) } }
@keyframes vao-hand { 0% { transform: rotate(0) translateX(0) } 50% { transform: rotate(-20deg) translateX(-6px) translateY(-2px) } 100% { transform: rotate(0) translateX(0) } }
@keyframes vao-coin { 0% { transform: translateY(0) rotate(0) scale(1); opacity: 0 } 20% { opacity: 1 } 50% { transform: translateY(-20px) rotate(180deg) scale(1.2); opacity: 0.8 } 80% { opacity: 0 } 100% { transform: translateY(0) rotate(360deg) scale(0.8); opacity: 0 } }

.scn-shylocks-house-jessica-laments {
  background: linear-gradient(180deg, #1e1612 0%, #2a1e14 40%, #1f1410 100%), radial-gradient(ellipse at 50% 0%, #3a2a1a 0%, transparent 70%);
}
.scn-shylocks-house-jessica-laments .wall {
  position: absolute;
  inset: 0 0 35% 0;
  background: linear-gradient(135deg, #2a1f14 0%, #3a2a1a 50%, #1e140e 100%);
  box-shadow: inset 0 0 40px rgba(0,0,0,0.6);
}
.scn-shylocks-house-jessica-laments .floor {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 35%;
  background: linear-gradient(0deg, #1a120a 0%, #2a1e14 100%);
  border-radius: 10% 10% 0 0 / 20% 20% 0 0;
}
.scn-shylocks-house-jessica-laments .window {
  position: absolute;
  top: 15%;
  left: 30%;
  width: 25%;
  height: 30%;
  background: radial-gradient(ellipse at 50% 50%, #6a5a3a 0%, #3a2a1a 70%, transparent 100%);
  border: 4px solid #6a4a2a;
  border-radius: 4px;
  box-shadow: inset 0 0 20px rgba(0,0,0,0.5);
  animation: shj-window 8s ease-in-out infinite alternate;
}
.scn-shylocks-house-jessica-laments .table {
  position: absolute;
  bottom: 20%;
  left: 20%;
  width: 30%;
  height: 8%;
  background: linear-gradient(180deg, #6a4a2a 0%, #3a2a12 100%);
  border-radius: 4px;
  box-shadow: 0 4px 10px rgba(0,0,0,0.6);
  transform: perspective(400px) rotateX(5deg);
}
.scn-shylocks-house-jessica-laments .candle {
  position: absolute;
  bottom: 28%;
  left: 35%;
  width: 4%;
  height: 12%;
  background: linear-gradient(180deg, #e8c870 0%, #b08040 60%, #6a4010 100%);
  border-radius: 30% 30% 10% 10% / 50% 50% 10% 10%;
  box-shadow: 0 0 16px 8px rgba(200,160,60,0.4);
  animation: shj-candle 3s ease-in-out infinite;
}
.scn-shylocks-house-jessica-laments .figure {
  position: absolute;
  bottom: 18%;
  left: 45%;
  width: 10%;
  height: 18%;
  background: linear-gradient(180deg, #1a1010 0%, #0a0808 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: shj-figure 6s ease-in-out infinite;
}
.scn-shylocks-house-jessica-laments .coin {
  position: absolute;
  bottom: 22%;
  left: 38%;
  width: 3%;
  height: 3%;
  background: radial-gradient(circle, #f0d080 0%, #c09040 60%);
  border-radius: 50%;
  box-shadow: 0 0 8px 2px rgba(200,160,60,0.5);
  animation: shj-coin 4s ease-in-out infinite;
}
@keyframes shj-window {
  0% { opacity: 0.7; box-shadow: inset 0 0 15px rgba(0,0,0,0.4); }
  50% { opacity: 0.85; box-shadow: inset 0 0 30px rgba(0,0,0,0.6); }
  100% { opacity: 0.75; box-shadow: inset 0 0 20px rgba(0,0,0,0.5); }
}
@keyframes shj-candle {
  0% { transform: scaleY(1) translateY(0); box-shadow: 0 0 12px 6px rgba(200,160,60,0.3); }
  50% { transform: scaleY(1.05) translateY(-2px); box-shadow: 0 0 20px 10px rgba(200,160,60,0.5); }
  100% { transform: scaleY(0.98) translateY(1px); box-shadow: 0 0 14px 7px rgba(200,160,60,0.35); }
}
@keyframes shj-figure {
  0% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-3px) rotate(1deg); }
  100% { transform: translateY(0) rotate(-1deg); }
}
@keyframes shj-coin {
  0% { transform: translate(0, 0) rotate(-10deg); opacity: 0.8; }
  50% { transform: translate(2px, -3px) rotate(10deg); opacity: 1; }
  100% { transform: translate(0, 0) rotate(-10deg); opacity: 0.85; }
}

.scn-shylocks-house-jessica-soliloquy {
  background: linear-gradient(180deg, #1a1410 0%, #2a1e14 60%, #1f120c 100%), radial-gradient(ellipse at 50% 0%, #3a2a1a 0%, transparent 70%);
}
.scn-shylocks-house-jessica-soliloquy .wall {
  position: absolute;
  inset: 0 0 30% 0;
  background: linear-gradient(135deg, #2a1f14 0%, #3a2a1a 50%, #1e140e 100%);
  box-shadow: inset 0 0 40px rgba(0,0,0,0.6);
}
.scn-shylocks-house-jessica-soliloquy .window {
  position: absolute;
  top: 15%;
  left: 25%;
  width: 35%;
  height: 35%;
  background: radial-gradient(ellipse at 50% 50%, #6a5a3a 0%, #2a1a0a 80%);
  border: 4px solid #6a4a2a;
  border-radius: 4px;
  box-shadow: inset 0 0 20px rgba(0,0,0,0.5);
  animation: shs-window 10s ease-in-out infinite alternate;
}
.scn-shylocks-house-jessica-soliloquy .figure {
  position: absolute;
  bottom: 18%;
  left: 40%;
  width: 12%;
  height: 20%;
  background: linear-gradient(180deg, #1a1010 0%, #0a0808 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: shs-figure 8s ease-in-out infinite;
}
.scn-shylocks-house-jessica-soliloquy .letter {
  position: absolute;
  bottom: 25%;
  left: 55%;
  width: 8%;
  height: 10%;
  background: linear-gradient(135deg, #f0e0c0 0%, #d0c0a0 100%);
  border-radius: 2px;
  box-shadow: 0 2px 6px rgba(0,0,0,0.4);
  animation: shs-letter 6s ease-in-out infinite alternate;
}
.scn-shylocks-house-jessica-soliloquy .moonlight {
  position: absolute;
  top: 12%;
  left: 30%;
  width: 20%;
  height: 25%;
  background: radial-gradient(ellipse at 50% 0%, rgba(200,200,255,0.15) 0%, transparent 70%);
  filter: blur(8px);
  animation: shs-moonlight 12s ease-in-out infinite alternate;
}
@keyframes shs-window {
  0% { opacity: 0.6; box-shadow: inset 0 0 15px rgba(0,0,0,0.4); }
  50% { opacity: 0.8; box-shadow: inset 0 0 30px rgba(0,0,0,0.6); }
  100% { opacity: 0.7; box-shadow: inset 0 0 20px rgba(0,0,0,0.5); }
}
@keyframes shs-figure {
  0% { transform: translateY(0) rotate(0deg) scaleX(1); }
  50% { transform: translateY(-2px) rotate(2deg) scaleX(0.98); }
  100% { transform: translateY(0) rotate(-1deg) scaleX(1.01); }
}
@keyframes shs-letter {
  0% { transform: translate(0, 0) rotate(0deg); }
  50% { transform: translate(1px, -2px) rotate(-2deg); }
  100% { transform: translate(-1px, 1px) rotate(1deg); }
}
@keyframes shs-moonlight {
  0% { opacity: 0.1; transform: translateY(0); }
  50% { opacity: 0.3; transform: translateY(-5px); }
  100% { opacity: 0.15; transform: translateY(2px); }
}

.scn-venice-side-street-masque-plan {
  background: linear-gradient(180deg, #a8c8e0 0%, #c8d8e8 40%, #e8e8d0 100%), radial-gradient(ellipse at 50% 100%, #e8e8d0 0%, transparent 60%);
}
.scn-venice-side-street-masque-plan .sky {
  position: absolute;
  inset: 0 0 35% 0;
  background: linear-gradient(180deg, #8ab0d0 0%, #c0d4e8 80%);
  animation: vsm-sky 20s ease-in-out infinite alternate;
}
.scn-venice-side-street-masque-plan .building-left {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 40%;
  height: 70%;
  background: linear-gradient(180deg, #d0c0a0 0%, #b8a080 60%, #8a7050 100%);
  border-radius: 0 10% 0 0;
  box-shadow: inset -20px 0 30px rgba(0,0,0,0.2);
}
.scn-venice-side-street-masque-plan .building-right {
  position: absolute;
  bottom: 0;
  right: 0;
  width: 45%;
  height: 75%;
  background: linear-gradient(180deg, #c8b898 0%, #a89070 60%, #7a6040 100%);
  border-radius: 10% 0 0 0;
  box-shadow: inset 20px 0 30px rgba(0,0,0,0.2);
}
.scn-venice-side-street-masque-plan .street {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 30%;
  background: linear-gradient(180deg, #b8a890 0%, #9a8870 100%);
  border-radius: 40% 40% 0 0 / 20% 20% 0 0;
}
.scn-venice-side-street-masque-plan .figure-lorenzo {
  position: absolute;
  bottom: 12%;
  left: 22%;
  width: 10%;
  height: 18%;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1e10 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vsm-figure1 5s ease-in-out infinite;
}
.scn-venice-side-street-masque-plan .figure-gratiano {
  position: absolute;
  bottom: 13%;
  left: 38%;
  width: 11%;
  height: 17%;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vsm-figure2 6s ease-in-out infinite;
}
.scn-venice-side-street-masque-plan .mask {
  position: absolute;
  bottom: 20%;
  left: 35%;
  width: 6%;
  height: 4%;
  background: radial-gradient(circle, #e0c080 0%, #b09050 100%);
  border-radius: 50%;
  box-shadow: 0 0 8px 2px rgba(180,140,60,0.3);
  animation: vsm-mask 4s ease-in-out infinite alternate;
}
@keyframes vsm-sky {
  0% { opacity: 0.8; }
  50% { opacity: 1; }
  100% { opacity: 0.85; }
}
@keyframes vsm-figure1 {
  0% { transform: translateX(0) rotate(0deg); }
  50% { transform: translateX(3px) rotate(-2deg); }
  100% { transform: translateX(-2px) rotate(1deg); }
}
@keyframes vsm-figure2 {
  0% { transform: translateX(0) rotate(0deg) scaleY(1); }
  50% { transform: translateX(-2px) rotate(3deg) scaleY(1.02); }
  100% { transform: translateX(1px) rotate(-1deg) scaleY(0.98); }
}
@keyframes vsm-mask {
  0% { transform: translate(0, 0) rotate(-10deg); }
  50% { transform: translate(4px, -2px) rotate(10deg); }
  100% { transform: translate(0, 0) rotate(-5deg); }
}

.scn-launcelot-gobbo-misunderstanding {
  background: linear-gradient(180deg, #1e1612 0%, #2a1e14 50%, #1a1210 100%), radial-gradient(ellipse at 50% 0%, #3a2a1a 0%, transparent 70%);
}
.scn-launcelot-gobbo-misunderstanding .wall {
  position: absolute;
  inset: 0 0 30% 0;
  background: linear-gradient(135deg, #2a1f14 0%, #3a2a1a 50%, #1e140e 100%);
  box-shadow: inset 0 0 40px rgba(0,0,0,0.6);
}
.scn-launcelot-gobbo-misunderstanding .floor {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 30%;
  background: linear-gradient(0deg, #1a120a 0%, #2a1e14 100%);
  border-radius: 20% 20% 0 0 / 40% 40% 0 0;
}
.scn-launcelot-gobbo-misunderstanding .table {
  position: absolute;
  bottom: 18%;
  left: 15%;
  width: 35%;
  height: 6%;
  background: linear-gradient(180deg, #6a4a2a 0%, #3a2a12 100%);
  border-radius: 4px;
  box-shadow: 0 4px 10px rgba(0,0,0,0.6);
  transform: perspective(300px) rotateX(3deg);
}
.scn-launcelot-gobbo-misunderstanding .chair {
  position: absolute;
  bottom: 16%;
  left: 48%;
  width: 8%;
  height: 14%;
  background: linear-gradient(180deg, #5a3a1a 0%, #2a1a08 100%);
  border-radius: 10% 10% 20% 20% / 30% 30% 10% 10%;
  transform-origin: bottom center;
  animation: lgm-chair 7s ease-in-out infinite;
}
.scn-launcelot-gobbo-misunderstanding .figure-launcelot {
  position: absolute;
  bottom: 14%;
  left: 30%;
  width: 12%;
  height: 20%;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1e10 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: lgm-figure 4s cubic-bezier(0.68, -0.55, 0.27, 1.55) infinite;
}
.scn-launcelot-gobbo-misunderstanding .letter {
  position: absolute;
  bottom: 20%;
  left: 36%;
  width: 10%;
  height: 12%;
  background: linear-gradient(135deg, #f0e0c0 0%, #d0c0a0 100%);
  border-radius: 2px;
  box-shadow: 0 2px 8px rgba(0,0,0,0.4);
  animation: lgm-letter 3s ease-in-out infinite alternate;
}
.scn-launcelot-gobbo-misunderstanding .shadow {
  position: absolute;
  bottom: 4%;
  left: 25%;
  width: 20%;
  height: 6%;
  background: radial-gradient(ellipse, rgba(0,0,0,0.4) 0%, transparent 100%);
  filter: blur(4px);
  animation: lgm-shadow 5s ease-in-out infinite;
}
@keyframes lgm-chair {
  0% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-2px) rotate(2deg); }
  100% { transform: translateY(0) rotate(-1deg); }
}
@keyframes lgm-figure {
  0% { transform: translateY(0) rotate(0deg) scaleX(1); }
  25% { transform: translateY(-4px) rotate(-3deg) scaleX(1.05); }
  50% { transform: translateY(2px) rotate(4deg) scaleX(0.95); }
  75% { transform: translateY(-2px) rotate(-2deg) scaleX(1.02); }
  100% { transform: translateY(0) rotate(0deg) scaleX(1); }
}
@keyframes lgm-letter {
  0% { transform: translate(0, 0) rotate(-5deg); }
  50% { transform: translate(5px, -3px) rotate(8deg); }
  100% { transform: translate(-2px, 2px) rotate(-3deg); }
}
@keyframes lgm-shadow {
  0% { opacity: 0.3; transform: scaleX(1); }
  50% { opacity: 0.6; transform: scaleX(1.1); }
  100% { opacity: 0.4; transform: scaleX(0.9); }
}

/* belmont-reconciliation - warm moonlit garden */
.scn-belmont-reconciliation {
  background:
    linear-gradient(180deg, #1a1a3a 0%, #2a2040 40%, #4a3a5a 70%, #5a4a3a 100%),
    radial-gradient(ellipse at 50% 20%, rgba(255,200,100,0.3) 0%, transparent 60%);
}
.scn-belmont-reconciliation .sky {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at 50% 20%, rgba(255,180,80,0.15) 0%, transparent 70%);
  animation: br-sky 8s ease-in-out infinite alternate;
}
.scn-belmont-reconciliation .moon {
  position: absolute; top: 12%; left: 70%; width: 80px; height: 80px;
  margin-left: -40px;
  background: radial-gradient(circle at 30% 30%, #ffe080 0%, #ffcc55 40%, #cc9933 100%);
  border-radius: 50%;
  box-shadow: 0 0 40px 20px rgba(255,200,100,0.5), 0 0 80px 40px rgba(255,200,100,0.3);
  animation: br-moon 6s ease-in-out infinite alternate;
}
.scn-belmont-reconciliation .star-field {
  position: absolute; inset: 0; pointer-events: none;
}
.scn-belmont-reconciliation .star-field::before {
  content: '';
  position: absolute; inset: 0;
  box-shadow:
    20px 30px #fff, 50px 80px #fff, 100px 120px #fff, 150px 40px #fff,
    200px 90px #fff, 250px 150px #fff, 300px 60px #fff, 350px 110px #fff,
    400px 180px #fff, 450px 30px #fff, 500px 140px #fff, 550px 70px #fff,
    600px 160px #fff, 650px 50px #fff, 700px 130px #fff, 750px 100px #fff,
    800px 170px #fff, 850px 20px #fff, 900px 120px #fff, 950px 80px #fff;
  animation: br-stars 3s ease-in-out infinite alternate;
}
.scn-belmont-reconciliation .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #0a1a0a 0%, #050a05 100%);
  border-radius: 40% 40% 0 0;
  animation: br-ground 10s ease-in-out infinite alternate;
}
.scn-belmont-reconciliation .tree {
  position: absolute; bottom: 30%; width: 30px; height: 150px;
  background: linear-gradient(180deg, #1a2a1a 0%, #0a1a0a 100%);
  border-radius: 50% 50% 20% 20%;
  box-shadow: 0 10px 20px rgba(0,0,0,0.6);
  animation: br-tree 12s ease-in-out infinite alternate;
}
.scn-belmont-reconciliation .tree-left  { left: 10%; }
.scn-belmont-reconciliation .tree-right { right: 10%; }
.scn-belmont-reconciliation .figure {
  position: absolute; bottom: 30%; width: 20px; height: 40px;
  background: #050a05;
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: br-figure 4s ease-in-out infinite;
}
.scn-belmont-reconciliation .figure-left  { left: 40%; }
.scn-belmont-reconciliation .figure-right { left: 55%; width: 18px; height: 38px; animation-delay: 0.5s; }

@keyframes br-sky    { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes br-moon   { 0% { transform: scale(1); box-shadow: 0 0 40px 20px rgba(255,200,100,0.5); } 50% { transform: scale(1.05); box-shadow: 0 0 60px 30px rgba(255,200,100,0.7); } 100% { transform: scale(0.98); box-shadow: 0 0 30px 15px rgba(255,200,100,0.4); } }
@keyframes br-stars  { 0% { opacity: 0.7; } 50% { opacity: 1; } 100% { opacity: 0.8; } }
@keyframes br-ground { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes br-tree   { 0% { transform: rotate(-1deg); } 50% { transform: rotate(1deg); } 100% { transform: rotate(-0.5deg); } }
@keyframes br-figure { 0% { transform: translateY(0); } 50% { transform: translateY(-3px); } 100% { transform: translateY(1px); } }

/* Scene: venice-rialto-merry-bond-accepted (suffix vr) */
.scn-venice-rialto-merry-bond-accepted {
  background: linear-gradient(180deg, #8ab0d6 0%, #f5d6a8 40%, #f0c080 100%), radial-gradient(ellipse at 50% 30%, rgba(255,240,200,0.3) 0%, transparent 60%);
}
.scn-venice-rialto-merry-bond-accepted .bg-sky {
  position: absolute; inset: 0; opacity: 0.4; background: linear-gradient(180deg, #c4d8e8 0%, #f0d0a0 60%, #d0a060 100%);
}
.scn-venice-rialto-merry-bond-accepted .sun {
  position: absolute; top: 8%; left: 45%; width: 50px; height: 50px; border-radius: 50%;
  background: radial-gradient(circle, #fff0c0 0%, #f0c060 50%, transparent 70%);
  box-shadow: 0 0 60px 20px rgba(240,192,96,0.5);
  animation: vr-sun 6s ease-in-out infinite alternate;
}
.scn-venice-rialto-merry-bond-accepted .contract-table {
  position: absolute; bottom: 12%; left: 28%; right: 28%; height: 8%;
  background: linear-gradient(180deg, #6a4a3a 0%, #3a2a1a 100%);
  border-radius: 4px; box-shadow: 0 4px 8px rgba(0,0,0,0.4);
}
.scn-venice-rialto-merry-bond-accepted .scales {
  position: absolute; bottom: 20%; left: 50%; transform: translateX(-50%);
  width: 30px; height: 30px; border-radius: 50% 50% 20% 20%;
  background: linear-gradient(180deg, #b09070 0%, #806050 100%);
  box-shadow: 0 0 10px rgba(0,0,0,0.3);
  animation: vr-scales 4s ease-in-out infinite;
}
.scn-venice-rialto-merry-bond-accepted .shylock-fig {
  position: absolute; bottom: 16%; left: 32%; width: 18px; height: 44px;
  background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vr-shylock 5s ease-in-out infinite;
}
.scn-venice-rialto-merry-bond-accepted .antonio-fig {
  position: absolute; bottom: 16%; right: 32%; width: 20px; height: 46px;
  background: linear-gradient(180deg, #3a2a2a 0%, #1a1a1a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vr-antonio 5s ease-in-out infinite;
}
.scn-venice-rialto-merry-bond-accepted .shadow-ray-a,
.scn-venice-rialto-merry-bond-accepted .shadow-ray-b {
  position: absolute; bottom: 30%; width: 40%; height: 12px;
  background: linear-gradient(180deg, rgba(0,0,0,0.3), transparent);
  filter: blur(4px);
}
.scn-venice-rialto-merry-bond-accepted .shadow-ray-a {
  left: 10%; transform: rotate(-20deg); animation: vr-ray-a 8s ease-in-out infinite alternate;
}
.scn-venice-rialto-merry-bond-accepted .shadow-ray-b {
  right: 10%; transform: rotate(20deg); animation: vr-ray-b 8s ease-in-out infinite alternate;
}
@keyframes vr-sun {
  0% { transform: scale(0.95); opacity: 0.8; } 50% { transform: scale(1.05); opacity: 1; } 100% { transform: scale(0.95); opacity: 0.9; }
}
@keyframes vr-scales {
  0% { transform: translateX(-50%) rotate(-5deg); } 50% { transform: translateX(-50%) rotate(5deg); } 100% { transform: translateX(-50%) rotate(-5deg); }
}
@keyframes vr-shylock {
  0% { transform: scaleY(1) translateX(0); } 50% { transform: scaleY(1.03) translateX(2px); } 100% { transform: scaleY(1) translateX(0); }
}
@keyframes vr-antonio {
  0% { transform: scaleY(1) translateX(0) rotate(0); } 50% { transform: scaleY(1.02) translateX(-2px) rotate(1deg); } 100% { transform: scaleY(1) translateX(0) rotate(0); }
}
@keyframes vr-ray-a {
  0% { transform: rotate(-20deg) translateX(0); opacity: 0.5; } 50% { transform: rotate(-15deg) translateX(10px); opacity: 0.8; } 100% { transform: rotate(-20deg) translateX(0); opacity: 0.5; }
}
@keyframes vr-ray-b {
  0% { transform: rotate(20deg) translateX(0); opacity: 0.5; } 50% { transform: rotate(15deg) translateX(-10px); opacity: 0.8; } 100% { transform: rotate(20deg) translateX(0); opacity: 0.5; }
}

/* Scene: venice-rialto-after-shylock-exits (suffix ra) */
.scn-venice-rialto-after-shylock-exits {
  background: linear-gradient(180deg, #9ac0d8 0%, #d0e4f0 30%, #b0c8d8 60%, #8aacb8 100%), radial-gradient(ellipse at 60% 20%, rgba(200,230,255,0.4) 0%, transparent 70%);
}
.scn-venice-rialto-after-shylock-exits .bg-sky {
  position: absolute; inset: 0 0 50% 0; background: linear-gradient(180deg, #c0d8e8 0%, #e0f0f8 50%, #b8d0e0 100%);
}
.scn-venice-rialto-after-shylock-exits .sea {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%; background: linear-gradient(180deg, #4a6a7a 0%, #2a4a5a 100%);
  border-radius: 30% 70% 0 0 / 50% 60% 0 0;
  animation: ra-sea 12s ease-in-out infinite alternate;
}
.scn-venice-rialto-after-shylock-exits .ship-hull {
  position: absolute; bottom: 40%; left: 35%; width: 80px; height: 30px;
  background: linear-gradient(180deg, #5a3a2a 0%, #3a1a0a 100%);
  border-radius: 10% 10% 70% 70% / 30% 30% 80% 80%;
  transform: rotate(-3deg);
}
.scn-venice-rialto-after-shylock-exits .sail-fore {
  position: absolute; bottom: 52%; left: 35%; width: 30px; height: 70px;
  background: linear-gradient(180deg, #f0e8d8 0%, #d8c8a8 100%);
  border-radius: 5% 5% 20% 20% / 10% 10% 30% 30%;
  transform-origin: bottom center;
  animation: ra-sail-fore 8s ease-in-out infinite;
}
.scn-venice-rialto-after-shylock-exits .sail-aft {
  position: absolute; bottom: 48%; left: 58%; width: 25px; height: 60px;
  background: linear-gradient(180deg, #e0d0b8 0%, #c0b090 100%);
  border-radius: 5% 5% 20% 20% / 10% 10% 30% 30%;
  transform-origin: bottom center;
  animation: ra-sail-aft 9s ease-in-out infinite;
}
.scn-venice-rialto-after-shylock-exits .cloud-slow {
  position: absolute; top: 15%; left: -20%; width: 120px; height: 20px;
  background: linear-gradient(180deg, rgba(255,255,255,0.6) 0%, rgba(255,255,255,0.1) 100%);
  border-radius: 50%; filter: blur(6px);
  animation: ra-cloud 40s linear infinite;
}
.scn-venice-rialto-after-shylock-exits .sun-glare {
  position: absolute; top: 8%; right: 20%; width: 60px; height: 60px;
  background: radial-gradient(circle, #fff8e0 0%, #ffe0a0 30%, transparent 70%);
  filter: blur(10px);
  animation: ra-glare 6s ease-in-out infinite alternate;
}
@keyframes ra-sea {
  0% { transform: translateX(-5px); opacity: 0.9; } 50% { transform: translateX(5px); opacity: 1; } 100% { transform: translateX(-3px); opacity: 0.95; }
}
@keyframes ra-sail-fore {
  0% { transform: skewX(0deg) scaleY(1); } 50% { transform: skewX(3deg) scaleY(1.02); } 100% { transform: skewX(0deg) scaleY(1); }
}
@keyframes ra-sail-aft {
  0% { transform: skewX(0deg) scaleY(1); } 50% { transform: skewX(-3deg) scaleY(1.02); } 100% { transform: skewX(0deg) scaleY(1); }
}
@keyframes ra-cloud {
  0% { transform: translateX(0); } 100% { transform: translateX(150vw); }
}
@keyframes ra-glare {
  0% { transform: scale(0.9); opacity: 0.6; } 50% { transform: scale(1.1); opacity: 1; } 100% { transform: scale(0.95); opacity: 0.7; }
}

/* Scene: belmont-morocco-arrives (suffix bm) */
.scn-belmont-morocco-arrives {
  background: linear-gradient(180deg, #d0a060 0%, #c89050 20%, #b08040 50%, #a07030 100%), radial-gradient(ellipse at 50% 0%, rgba(255,200,100,0.4) 0%, transparent 60%);
}
.scn-belmont-morocco-arrives .bg-wall {
  position: absolute; inset: 0 0 25% 0; background: linear-gradient(180deg, #b08040 0%, #c0a060 40%, #a07030 100%);
  border-bottom: 4px solid #8a5a2a;
}
.scn-belmont-morocco-arrives .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(180deg, #6a4a2a 0%, #4a2a1a 100%);
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.3);
}
.scn-belmont-morocco-arrives .chandelier {
  position: absolute; top: 5%; left: 50%; transform: translateX(-50%);
  width: 60px; height: 40px; background: linear-gradient(180deg, #c0a060 0%, #a08040 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  box-shadow: 0 0 20px 8px rgba(200,160,80,0.4);
  animation: bm-chandelier 7s ease-in-out infinite;
}
.scn-belmont-morocco-arrives .morocco-fig {
  position: absolute; bottom: 22%; left: 35%; width: 22px; height: 50px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bm-morocco 6s ease-in-out infinite;
}
.scn-belmont-morocco-arrives .portia-fig {
  position: absolute; bottom: 22%; right: 35%; width: 18px; height: 48px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a10 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bm-portia 6s ease-in-out infinite;
}
.scn-belmont-morocco-arrives .throne-cushion {
  position: absolute; bottom: 15%; left: 48%; width: 30px; height: 12px;
  background: linear-gradient(180deg, #c07040 0%, #a06030 100%);
  border-radius: 30%; box-shadow: 0 2px 6px rgba(0,0,0,0.4);
  animation: bm-cushion 5s ease-in-out infinite;
}
.scn-belmont-morocco-arrives .window-warm {
  position: absolute; top: 12%; left: 55%; width: 40px; height: 50px;
  background: radial-gradient(circle, #ffe0a0 0%, #d0a060 70%);
  border-radius: 4px; box-shadow: 0 0 30px 10px rgba(255,200,80,0.5);
  animation: bm-window 4s ease-in-out infinite alternate;
}
@keyframes bm-chandelier {
  0% { transform: translateX(-50%) rotate(-2deg); } 50% { transform: translateX(-50%) rotate(2deg); } 100% { transform: translateX(-50%) rotate(-2deg); }
}
@keyframes bm-morocco {
  0% { transform: translateY(0) rotate(0); } 50% { transform: translateY(-2px) rotate(2deg); } 100% { transform: translateY(0) rotate(0); }
}
@keyframes bm-portia {
  0% { transform: translateY(0) rotate(0); } 50% { transform: translateY(-1px) rotate(-1deg); } 100% { transform: translateY(0) rotate(0); }
}
@keyframes bm-cushion {
  0% { transform: scaleY(1); } 50% { transform: scaleY(1.1); } 100% { transform: scaleY(1); }
}
@keyframes bm-window {
  0% { opacity: 0.7; transform: scale(0.95); } 50% { opacity: 1; transform: scale(1.02); } 100% { opacity: 0.8; transform: scale(0.98); }
}

/* Scene: venice-launcelot-conscience-debate (suffix lc) */
.scn-venice-launcelot-conscience-debate {
  background: linear-gradient(180deg, #c8d8e0 0%, #e0e8f0 30%, #b0c0d0 60%, #8098a8 100%), radial-gradient(ellipse at 50% 80%, rgba(200,220,240,0.3) 0%, transparent 50%);
}
.scn-venice-launcelot-conscience-debate .bg-street {
  position: absolute; inset: 0; opacity: 0.5; background: linear-gradient(180deg, #d0d8e0 0%, #b0c0c8 100%);
}
.scn-venice-launcelot-conscience-debate .street-wall {
  position: absolute; bottom: 40%; left: 10%; right: 10%; height: 20%;
  background: linear-gradient(180deg, #8a7a6a 0%, #6a5a4a 100%);
  border-radius: 10% 10% 0 0; box-shadow: inset 0 4px 8px rgba(0,0,0,0.3);
}
.scn-venice-launcelot-conscience-debate .launcelot-fig {
  position: absolute; bottom: 18%; left: 42%; width: 20px; height: 50px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a10 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: lc-launcelot 1.8s ease-in-out infinite alternate;
}
.scn-venice-launcelot-conscience-debate .fiend-fig {
  position: absolute; bottom: 35%; left: 30%; width: 12px; height: 24px;
  background: linear-gradient(180deg, #2a1a1a 0%, #0a0a0a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform: rotate(-15deg);
  animation: lc-fiend 2.4s ease-in-out infinite;
}
.scn-venice-launcelot-conscience-debate .angel-fig {
  position: absolute; bottom: 35%; right: 30%; width: 14px; height: 24px;
  background: linear-gradient(180deg, #f0e8d8 0%, #d0c8b8 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform: rotate(15deg);
  animation: lc-angel 1.5s ease-in-out infinite;
}
.scn-venice-launcelot-conscience-debate .lantern {
  position: absolute; top: 15%; left: 50%; transform: translateX(-50%);
  width: 8px; height: 12px; background: radial-gradient(circle, #ffd080 0%, transparent 90%);
  box-shadow: 0 0 20px 6px rgba(255,208,128,0.6);
  animation: lc-lantern 3s ease-in-out infinite;
}
.scn-venice-launcelot-conscience-debate .signpost {
  position: absolute; bottom: 30%; left: 15%; width: 4px; height: 30px;
  background: #5a3a2a; border-radius: 2px;
  box-shadow: 0 4px 0 #4a2a1a, 0 8px 0 #3a1a0a;
  animation: lc-sign 4s ease-in-out infinite;
}
@keyframes lc-launcelot {
  0% { transform: translateY(0) rotate(-3deg); } 100% { transform: translateY(-3px) rotate(3deg); }
}
@keyframes lc-fiend {
  0% { transform: rotate(-15deg) translateY(0); } 50% { transform: rotate(-20deg) translateY(-5px); } 100% { transform: rotate(-15deg) translateY(0); }
}
@keyframes lc-angel {
  0% { transform: rotate(15deg) translateY(0); } 50% { transform: rotate(10deg) translateY(-4px); } 100% { transform: rotate(15deg) translateY(0); }
}
@keyframes lc-lantern {
  0% { transform: translateX(-50%) scale(0.9); opacity: 0.7; } 50% { transform: translateX(-50%) scale(1.1); opacity: 1; } 100% { transform: translateX(-50%) scale(0.95); opacity: 0.8; }
}
@keyframes lc-sign {
  0% { transform: rotate(-2deg); } 50% { transform: rotate(2deg); } 100% { transform: rotate(-2deg); }
}

/* venice-gobbo-encounters-son */
.scn-venice-gobbo-encounters-son {
  background: linear-gradient(180deg, #fce4c8 0%, #f9d9a0 40%, #e8c586 100%),
              radial-gradient(ellipse at 40% 20%, #ffeebb 0%, transparent 60%);
}
.scn-venice-gobbo-encounters-son .sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #b8d4e8 0%, #ffffff 100%);
  animation: ves1-sky 12s ease-in-out infinite alternate;
}
.scn-venice-gobbo-encounters-son .buildings {
  position: absolute; bottom: 40%; left: 0; right: 0; height: 45%;
  background: linear-gradient(135deg, #c9a87c 0%, #b5916a 50%, #a87d56 100%);
  border-radius: 20% 20% 0 0;
  box-shadow: inset 0 12px 24px rgba(0,0,0,0.3);
  animation: ves1-buildings 9s ease-in-out infinite;
}
.scn-venice-gobbo-encounters-son .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #d4b282 0%, #b6945a 100%);
}
.scn-venice-gobbo-encounters-son .old-gobbo {
  position: absolute; bottom: 18%; left: 30%; width: 32px; height: 60px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  box-shadow: 0 4px 8px rgba(0,0,0,0.4);
  animation: ves1-walk 5s ease-in-out infinite;
}
.scn-venice-gobbo-encounters-son .launcelot {
  position: absolute; bottom: 18%; left: 55%; width: 28px; height: 56px;
  background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%);
  border-radius: 45% 45% 30% 30% / 55% 55% 30% 30%;
  transform-origin: bottom center;
  box-shadow: 0 4px 8px rgba(0,0,0,0.4);
  animation: ves1-stand 7s ease-in-out infinite;
}
.scn-venice-gobbo-encounters-son .basket {
  position: absolute; bottom: 24%; left: 28%; width: 18px; height: 14px;
  background: radial-gradient(ellipse at 50% 30%, #8a6a3a 0%, #5a4020 100%);
  border-radius: 50%;
  box-shadow: 0 2px 6px rgba(0,0,0,0.5);
  animation: ves1-basket 4s ease-in-out infinite alternate;
}
.scn-venice-gobbo-encounters-son .sun {
  position: absolute; top: 8%; right: 20%; width: 40px; height: 40px;
  background: radial-gradient(circle, #ffebc0 0%, #ffd86e 60%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 60px 20px rgba(255,200,100,0.5);
  animation: ves1-sun 12s ease-in-out infinite;
}
.scn-venice-gobbo-encounters-son .shadow {
  position: absolute; bottom: 15%; left: 25%; width: 50px; height: 6px;
  background: rgba(0,0,0,0.25);
  border-radius: 50%;
  filter: blur(3px);
  animation: ves1-shadow 5s ease-in-out infinite;
}
@keyframes ves1-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.75 } }
@keyframes ves1-buildings { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-2px) scale(1.01) } }
@keyframes ves1-walk { 0% { transform: translateX(0) rotate(-2deg) } 25% { transform: translateX(4px) rotate(2deg) } 50% { transform: translateX(8px) rotate(-1deg) } 75% { transform: translateX(12px) rotate(1deg) } 100% { transform: translateX(16px) rotate(0) } }
@keyframes ves1-stand { 0%,100% { transform: translateY(0) rotate(0) } 50% { transform: translateY(-3px) rotate(3deg) } }
@keyframes ves1-basket { 0% { transform: translateX(0) rotate(-5deg) } 100% { transform: translateX(2px) rotate(5deg) } }
@keyframes ves1-sun { 0%,100% { transform: scale(1) } 50% { transform: scale(1.05) } }
@keyframes ves1-shadow { 0%,100% { transform: scaleX(1) } 50% { transform: scaleX(1.3) } }

/* venice-gobbo-recognizes-son */
.scn-venice-gobbo-recognizes-son {
  background: linear-gradient(180deg, #f8d9b0 0%, #ecc28a 50%, #daa76a 100%),
              radial-gradient(ellipse at 60% 30%, #ffddb0 0%, transparent 70%);
}
.scn-venice-gobbo-recognizes-son .sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #c9dde8 0%, #ffe9cc 100%);
  animation: ves2-sky 15s ease-in-out infinite alternate;
}
.scn-venice-gobbo-recognizes-son .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #c9a876 0%, #a78756 100%);
}
.scn-venice-gobbo-recognizes-son .wall {
  position: absolute; bottom: 35%; left: 10%; width: 30%; height: 40%;
  background: linear-gradient(180deg, #c8a88a 0%, #9a785a 100%);
  border-radius: 8% 8% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.3);
  animation: ves2-wall 8s ease-in-out infinite;
}
.scn-venice-gobbo-recognizes-son .old-gobbo {
  position: absolute; bottom: 20%; left: 35%; width: 30px; height: 55px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: ves2-embrace 6s ease-in-out infinite;
}
.scn-venice-gobbo-recognizes-son .launcelot {
  position: absolute; bottom: 20%; left: 48%; width: 28px; height: 54px;
  background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%);
  border-radius: 45% 45% 30% 30% / 55% 55% 30% 30%;
  transform-origin: bottom center;
  animation: ves2-embrace 6s ease-in-out infinite reverse;
}
.scn-venice-gobbo-recognizes-son .arms {
  position: absolute; bottom: 42%; left: 37%; width: 40px; height: 14px;
  background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%);
  border-radius: 50%;
  transform: rotate(-15deg);
  box-shadow: 0 2px 4px rgba(0,0,0,0.3);
  animation: ves2-arms 6s ease-in-out infinite;
}
.scn-venice-gobbo-recognizes-son .dust {
  position: absolute; bottom: 15%; left: 20%; width: 60px; height: 10px;
  background: rgba(0,0,0,0.08);
  border-radius: 50%;
  filter: blur(4px);
  animation: ves2-dust 10s linear infinite;
}
@keyframes ves2-sky { 0% { opacity:0.7 } 50% { opacity:0.9 } 100% { opacity:0.8 } }
@keyframes ves2-wall { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-5px) } }
@keyframes ves2-embrace { 0%,100% { transform: translateX(0) translateY(0) rotate(-2deg) } 25% { transform: translateX(2px) translateY(-1px) rotate(1deg) } 50% { transform: translateX(5px) translateY(-3px) rotate(-1deg) } 75% { transform: translateX(3px) translateY(-2px) rotate(2deg) } }
@keyframes ves2-arms { 0%,100% { transform: rotate(-15deg) translateX(0) } 50% { transform: rotate(-5deg) translateX(4px) } }
@keyframes ves2-dust { 0% { transform: translateX(-20px) scale(1) } 50% { transform: translateX(40px) scale(1.5) } 100% { transform: translateX(100px) scale(1) } }

/* venice-bassanio-hires-launcelot */
.scn-venice-bassanio-hires-launcelot {
  background: linear-gradient(180deg, #dfcaa8 0%, #c8b08a 50%, #b0966a 100%),
              radial-gradient(ellipse at 30% 40%, #eeddbb 0%, transparent 60%);
}
.scn-venice-bassanio-hires-launcelot .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #b0c8d8 0%, #d8d0c0 100%);
  animation: vbs3-sky 14s ease-in-out infinite alternate;
}
.scn-venice-bassanio-hires-launcelot .portico {
  position: absolute; bottom: 35%; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #bfa88a 0%, #9a826a 100%);
  border-radius: 12% 12% 0 0;
  box-shadow: inset 0 8px 24px rgba(0,0,0,0.35);
  animation: vbs3-portico 10s ease-in-out infinite;
}
.scn-venice-bassanio-hires-launcelot .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #b29670 0%, #8a7458 100%);
}
.scn-venice-bassanio-hires-launcelot .bassanio {
  position: absolute; bottom: 20%; left: 35%; width: 30px; height: 60px;
  background: linear-gradient(180deg, #3a4a5a 0%, #1a2a3a 100%);
  border-radius: 45% 45% 30% 30% / 55% 55% 30% 30%;
  transform-origin: bottom center;
  box-shadow: 0 4px 8px rgba(0,0,0,0.3);
  animation: vbs3-bassanio 7s ease-in-out infinite;
}
.scn-venice-bassanio-hires-launcelot .launcelot {
  position: absolute; bottom: 20%; left: 52%; width: 26px; height: 56px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 45% 45% 30% 30% / 55% 55% 30% 30%;
  transform-origin: bottom center;
  animation: vbs3-launcelot 8s ease-in-out infinite;
}
.scn-venice-bassanio-hires-launcelot .coin {
  position: absolute; bottom: 34%; left: 46%; width: 10px; height: 10px;
  background: radial-gradient(circle, #ffd670 0%, #d4a040 100%);
  border-radius: 50%;
  box-shadow: 0 0 12px 4px rgba(255,200,80,0.5);
  animation: vbs3-coin 3s ease-in-out infinite alternate;
}
.scn-venice-bassanio-hires-launcelot .shadow-a,
.scn-venice-bassanio-hires-launcelot .shadow-b {
  position: absolute; bottom: 15%; width: 40px; height: 8px;
  background: rgba(0,0,0,0.2);
  border-radius: 50%;
  filter: blur(4px);
}
.scn-venice-bassanio-hires-launcelot .shadow-a { left: 32%; animation: vbs3-shadow 7s ease-in-out infinite; }
.scn-venice-bassanio-hires-launcelot .shadow-b { left: 50%; animation: vbs3-shadow 8s ease-in-out infinite reverse; }
@keyframes vbs3-sky { 0% { opacity:0.85 } 50% { opacity:1 } 100% { opacity:0.9 } }
@keyframes vbs3-portico { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-3px) scale(1.005) } }
@keyframes vbs3-bassanio { 0%,100% { transform: translateY(0) rotate(-1deg) } 50% { transform: translateY(-2px) rotate(2deg) } }
@keyframes vbs3-launcelot { 0%,100% { transform: translateY(0) rotate(0) } 50% { transform: translateY(-1px) rotate(-2deg) } }
@keyframes vbs3-coin { 0% { transform: translateY(0) scale(1) } 100% { transform: translateY(-6px) scale(1.3) } }
@keyframes vbs3-shadow { 0%,100% { transform: scaleX(1) } 50% { transform: scaleX(1.2) } }

/* venice-bassanio-prepares-for-dinner */
.scn-venice-bassanio-prepares-for-dinner {
  background: linear-gradient(180deg, #d8c8a8 0%, #bfa88a 40%, #a88a6a 100%),
              radial-gradient(ellipse at 50% 70%, #eeddbb 0%, transparent 60%);
}
.scn-venice-bassanio-prepares-for-dinner .wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #c8b098 0%, #a88a70 100%);
  box-shadow: inset 0 12px 40px rgba(0,0,0,0.3);
  animation: vbs4-wall 12s ease-in-out infinite alternate;
}
.scn-venice-bassanio-prepares-for-dinner .window {
  position: absolute; top: 12%; left: 60%; width: 80px; height: 100px;
  background: linear-gradient(180deg, #b0d0e8 0%, #e8f0ff 100%);
  border: 4px solid #8a7a6a;
  border-radius: 4px;
  box-shadow: inset 0 0 30px rgba(255,255,200,0.4), 0 0 40px rgba(255,255,200,0.2);
  animation: vbs4-window 14s ease-in-out infinite;
}
.scn-venice-bassanio-prepares-for-dinner .table {
  position: absolute; bottom: 18%; left: 15%; width: 50%; height: 30%;
  background: linear-gradient(180deg, #8a6a4a 0%, #6a4a2a 100%);
  border-radius: 4% 4% 0 0;
  box-shadow: 0 -6px 12px rgba(0,0,0,0.3);
  animation: vbs4-table 8s ease-in-out infinite;
}
.scn-venice-bassanio-prepares-for-dinner .chair {
  position: absolute; bottom: 8%; left: 20%; width: 24px; height: 30px;
  background: linear-gradient(180deg, #6a4a3a 0%, #4a2a1a 100%);
  border-radius: 20% 20% 10% 10%;
  transform: rotate(2deg);
  animation: vbs4-chair 10s ease-in-out infinite;
}
.scn-venice-bassanio-prepares-for-dinner .bassanio {
  position: absolute; bottom: 18%; left: 28%; width: 30px; height: 55px;
  background: linear-gradient(180deg, #3a4a5a 0%, #1a2a3a 100%);
  border-radius: 45% 45% 30% 30% / 55% 55% 30% 30%;
  transform-origin: bottom center;
  animation: vbs4-bassanio 9s ease-in-out infinite;
}
.scn-venice-bassanio-prepares-for-dinner .leonardo {
  position: absolute; bottom: 16%; right: 20%; width: 26px; height: 52px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 45% 45% 30% 30% / 55% 55% 30% 30%;
  transform-origin: bottom center;
  animation: vbs4-leonardo 7s ease-in-out infinite;
}
.scn-venice-bassanio-prepares-for-dinner .plate {
  position: absolute; bottom: 30%; left: 40%; width: 20px; height: 8px;
  background: radial-gradient(ellipse at 50% 30%, #ffe8d0 0%, #d0b090 100%);
  border-radius: 50%;
  box-shadow: 0 2px 6px rgba(0,0,0,0.2);
  animation: vbs4-plate 5s ease-in-out infinite alternate;
}
.scn-venice-bassanio-prepares-for-dinner .goblet {
  position: absolute; bottom: 30%; left: 44%; width: 10px; height: 18px;
  background: linear-gradient(180deg, #c0a080 0%, #8a6a5a 100%);
  border-radius: 4px;
  transform: rotate(-5deg);
  animation: vbs4-goblet 4s ease-in-out infinite alternate;
}
@keyframes vbs4-wall { 0% { opacity:0.9 } 50% { opacity:1 } 100% { opacity:0.95 } }
@keyframes vbs4-window { 0%,100% { transform: scale(1) } 50% { transform: scale(1.03) } }
@keyframes vbs4-table { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-1px) } }
@keyframes vbs4-chair { 0%,100% { transform: rotate(2deg) } 50% { transform: rotate(-2deg) translateY(-1px) } }
@keyframes vbs4-bassanio { 0%,100% { transform: translateY(0) rotate(0) } 50% { transform: translateY(-2px) rotate(1deg) } }
@keyframes vbs4-leonardo { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-1px) } }
@keyframes vbs4-plate { 0% { transform: translateY(0) scale(1) } 100% { transform: translateY(-3px) scale(1.1) } }
@keyframes vbs4-goblet { 0% { transform: rotate(-5deg) } 100% { transform: rotate(5deg) translateY(-1px) } }

/* scene 1: venice-street-bassanio-describes-portia */
.scn-venice-street-bassanio-describes-portia {
  background:
    linear-gradient(180deg, #f9e6c3 0%, #e8c292 30%, #b89a6b 60%, #8b6d4a 100%),
    radial-gradient(ellipse at 50% 0%, #ffdbb5 0%, transparent 60%);
}
.scn-venice-street-bassanio-describes-portia .sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #f6d7a8 0%, #f9c57a 40%, transparent 100%);
  animation: sbp-sky 15s ease-in-out infinite alternate;
}
.scn-venice-street-bassanio-describes-portia .canal {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #3d6b85 0%, #2a4a60 30%, #1a2e3d 100%);
  box-shadow: inset 0 10px 30px rgba(255,200,100,0.2);
  animation: sbp-canal 10s linear infinite;
}
.scn-venice-street-bassanio-describes-portia .bridge {
  position: absolute; bottom: 40%; left: 30%; width: 40%; height: 12%;
  background: radial-gradient(ellipse at 50% 100%, #6a4e32 0%, #4a3520 100%);
  border-radius: 50% 50% 0 0 / 100% 100% 0 0;
  box-shadow: 0 -4px 8px rgba(0,0,0,0.3);
  animation: sbp-bridge 8s ease-in-out infinite alternate;
}
.scn-venice-street-bassanio-describes-portia .gondola {
  position: absolute; bottom: 25%; left: 20%; width: 60px; height: 20px;
  background: linear-gradient(180deg, #1a1a1a 0%, #0d0d0d 100%);
  border-radius: 0 0 50% 50% / 0 0 100% 100%;
  box-shadow: 0 2px 6px rgba(0,0,0,0.5);
  transform-origin: center bottom;
  animation: sbp-gondola 6s ease-in-out infinite;
}
.scn-venice-street-bassanio-describes-portia .figure-bassanio {
  position: absolute; bottom: 28%; left: 22%; width: 16px; height: 40px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1f140a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: sbp-figure 4s ease-in-out infinite;
}
.scn-venice-street-bassanio-describes-portia .building-left {
  position: absolute; bottom: 30%; left: 5%; width: 20%; height: 50%;
  background: linear-gradient(180deg, #c49a6c 0%, #9e7a54 50%, #7a5e3c 100%);
  border-radius: 0 4% 0 0;
  box-shadow: 2px 0 8px rgba(0,0,0,0.2);
  animation: sbp-building 20s ease-in-out infinite alternate;
}
.scn-venice-street-bassanio-describes-portia .building-right {
  position: absolute; bottom: 30%; right: 5%; width: 15%; height: 55%;
  background: linear-gradient(180deg, #b08050 0%, #8a6638 50%, #5e4420 100%);
  border-radius: 4% 0 0 0;
  box-shadow: -2px 0 8px rgba(0,0,0,0.2);
  animation: sbp-building 20s ease-in-out infinite alternate-reverse;
}
@keyframes sbp-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.7 } }
@keyframes sbp-canal { 0% { background-position:0% 0% } 50% { background-position:100% 0% } 100% { background-position:0% 0% } }
@keyframes sbp-bridge { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.02) } 100% { transform: scaleY(0.98) } }
@keyframes sbp-gondola { 0%,100% { transform: translateX(0) rotate(0deg) } 25% { transform: translateX(5px) rotate(-2deg) } 50% { transform: translateX(10px) rotate(2deg) } 75% { transform: translateX(5px) rotate(-1deg) } }
@keyframes sbp-figure { 0%,100% { transform: translateX(0) } 25% { transform: translateX(3px) } 50% { transform: translateX(6px) } 75% { transform: translateX(3px) } }
@keyframes sbp-building { 0% { transform: scaleX(1) } 50% { transform: scaleX(1.01) } 100% { transform: scaleX(0.99) } }

/* scene 2: venice-street-antonio-pledges-credit */
.scn-venice-street-antonio-pledges-credit {
  background:
    linear-gradient(180deg, #e0c8a0 0%, #c8aa7a 30%, #a08050 60%, #6a4a2a 100%),
    radial-gradient(ellipse at 50% 0%, #ffdbb5 0%, transparent 70%);
}
.scn-venice-street-antonio-pledges-credit .sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #f5dcb0 0%, #f0c890 40%, transparent 100%);
  animation: sap-sky 18s ease-in-out infinite alternate;
}
.scn-venice-street-antonio-pledges-credit .sea {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #4b7a94 0%, #2d5a72 30%, #1a3a4e 100%);
  box-shadow: inset 0 8px 20px rgba(200,160,100,0.15);
  animation: sap-sea 12s linear infinite;
}
.scn-venice-street-antonio-pledges-credit .ship {
  position: absolute; bottom: 30%; left: 60%; width: 70px; height: 40px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1f140a 100%);
  clip-path: polygon(20% 0%, 80% 0%, 100% 100%, 0% 100%);
  box-shadow: 0 4px 10px rgba(0,0,0,0.4);
  animation: sap-ship 20s ease-in-out infinite;
}
.scn-venice-street-antonio-pledges-credit .counter {
  position: absolute; bottom: 20%; left: 30%; width: 40%; height: 10%;
  background: linear-gradient(180deg, #8a7040 0%, #5a4820 100%);
  border-radius: 4% 4% 0 0;
  box-shadow: 0 -2px 6px rgba(0,0,0,0.3);
  animation: sap-counter 8s ease-in-out infinite alternate;
}
.scn-venice-street-antonio-pledges-credit .scales {
  position: absolute; bottom: 27%; left: 42%; width: 24px; height: 30px;
  background: radial-gradient(circle at 50% 30%, #d4b080 0%, #8a6a3a 100%);
  border-radius: 50% 50% 0 0 / 60% 60% 0 0;
  transform-origin: bottom center;
  animation: sap-scales 4s ease-in-out infinite;
}
.scn-venice-street-antonio-pledges-credit .figure-antonio {
  position: absolute; bottom: 18%; left: 34%; width: 18px; height: 44px;
  background: linear-gradient(180deg, #2a2015 0%, #140d08 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: sap-figure 6s ease-in-out infinite;
}
.scn-venice-street-antonio-pledges-credit .figure-bassanio {
  position: absolute; bottom: 18%; left: 44%; width: 16px; height: 40px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1f140a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: sap-figure 6s ease-in-out infinite -2s;
}
@keyframes sap-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.7 } }
@keyframes sap-sea { 0% { background-position:0% 0% } 50% { background-position:100% 0% } 100% { background-position:0% 0% } }
@keyframes sap-ship { 0%,100% { transform: translateX(0) } 25% { transform: translateX(-5px) } 50% { transform: translateX(0) } 75% { transform: translateX(5px) } }
@keyframes sap-counter { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.01) } 100% { transform: scaleY(0.99) } }
@keyframes sap-scales { 0%,100% { transform: rotate(0deg) } 25% { transform: rotate(-4deg) } 50% { transform: rotate(0deg) } 75% { transform: rotate(4deg) } }
@keyframes sap-figure { 0%,100% { transform: translateX(0) } 25% { transform: translateX(3px) } 50% { transform: translateX(-2px) } 75% { transform: translateX(1px) } }

/* scene 3: belmont-portia-weary */
.scn-belmont-portia-weary {
  background:
    linear-gradient(180deg, #f0e6d0 0%, #d9c9a8 40%, #b8a07e 80%, #8a6a4e 100%),
    radial-gradient(ellipse at 70% 30%, #fff4e0 0%, transparent 60%);
}
.scn-belmont-portia-weary .window {
  position: absolute; top: 10%; left: 60%; width: 30%; height: 50%;
  background: linear-gradient(180deg, #fce8c0 0%, #f0d09a 100%);
  border: 4px solid #5a4028;
  box-shadow: inset 0 0 40px #ffe080, 0 0 60px rgba(255,200,100,0.3);
  animation: bpw-window 10s ease-in-out infinite alternate;
}
.scn-belmont-portia-weary .wall-shadow {
  position: absolute; top: 0; left: 0; width: 100%; height: 100%;
  background: linear-gradient(135deg, transparent 50%, rgba(0,0,0,0.15) 100%);
  animation: bpw-shadow 8s ease-in-out infinite alternate;
}
.scn-belmont-portia-weary .chair {
  position: absolute; bottom: 20%; left: 20%; width: 40px; height: 35px;
  background: linear-gradient(180deg, #6a4a2a 0%, #3a2818 100%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.3);
  animation: bpw-chair 5s ease-in-out infinite alternate;
}
.scn-belmont-portia-weary .figure-portia {
  position: absolute; bottom: 22%; left: 22%; width: 18px; height: 44px;
  background: linear-gradient(180deg, #4a3520 0%, #2a1a0c 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bpw-figure 4s ease-in-out infinite;
}
.scn-belmont-portia-weary .figure-nerissa {
  position: absolute; bottom: 18%; left: 30%; width: 16px; height: 40px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1f140a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bpw-figure 4s ease-in-out infinite -1s;
}
.scn-belmont-portia-weary .clock {
  position: absolute; top: 15%; left: 10%; width: 20px; height: 30px;
  background: radial-gradient(circle at 50% 50%, #c09860 0%, #8a6a3a 100%);
  border-radius: 50% 50% 0 0 / 60% 60% 0 0;
  transform-origin: 50% 0%;
  animation: bpw-clock 3s ease-in-out infinite;
}
@keyframes bpw-window { 0% { opacity:0.9 } 50% { opacity:1 } 100% { opacity:0.85 } }
@keyframes bpw-shadow { 0% { opacity:0.1 } 50% { opacity:0.2 } 100% { opacity:0.15 } }
@keyframes bpw-chair { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes bpw-figure { 0%,100% { transform: translateX(0) rotate(0deg) } 25% { transform: translateX(4px) rotate(2deg) } 50% { transform: translateX(8px) rotate(-1deg) } 75% { transform: translateX(4px) rotate(1deg) } }
@keyframes bpw-clock { 0%,100% { transform: rotate(0deg) } 25% { transform: rotate(-10deg) } 50% { transform: rotate(0deg) } 75% { transform: rotate(10deg) } }

/* scene 4: belmont-portia-consoles */
.scn-belmont-portia-consoles {
  background:
    linear-gradient(180deg, #f5ecda 0%, #e0d0b0 30%, #c0a882 60%, #9a7a58 100%),
    radial-gradient(ellipse at 30% 30%, #fff8e8 0%, transparent 70%);
}
.scn-belmont-portia-consoles .window {
  position: absolute; top: 10%; left: 50%; width: 35%; height: 50%;
  background: linear-gradient(180deg, #fcf0d8 0%, #f2daac 100%);
  border: 4px solid #5a4028;
  box-shadow: inset 0 0 30px #ffe0a0, 0 0 50px rgba(255,200,100,0.2);
  animation: bpc-window 15s ease-in-out infinite alternate;
}
.scn-belmont-portia-consoles .chest-gold {
  position: absolute; bottom: 18%; left: 20%; width: 30px; height: 20px;
  background: linear-gradient(135deg, #f0d070 0%, #c09840 100%);
  border-radius: 6% 6% 4% 4%;
  box-shadow: 0 0 20px rgba(240,208,112,0.4);
  animation: bpc-chest 10s ease-in-out infinite;
}
.scn-belmont-portia-consoles .chest-silver {
  position: absolute; bottom: 18%; left: 35%; width: 30px; height: 20px;
  background: linear-gradient(135deg, #d0d0e0 0%, #a0a0b0 100%);
  border-radius: 6% 6% 4% 4%;
  box-shadow: 0 0 12px rgba(160,160,180,0.3);
  animation: bpc-chest 10s ease-in-out infinite 3s;
}
.scn-belmont-portia-consoles .chest-lead {
  position: absolute; bottom: 18%; left: 50%; width: 30px; height: 20px;
  background: linear-gradient(135deg, #6a6a7a 0%, #4a4a5a 100%);
  border-radius: 6% 6% 4% 4%;
  box-shadow: 0 0 8px rgba(70,70,80,0.3);
  animation: bpc-chest 10s ease-in-out infinite 6s;
}
.scn-belmont-portia-consoles .figure-portia {
  position: absolute; bottom: 22%; left: 60%; width: 18px; height: 44px;
  background: linear-gradient(180deg, #4a3520 0%, #2a1a0c 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bpc-figure 8s ease-in-out infinite;
}
.scn-belmont-portia-consoles .figure-nerissa {
  position: absolute; bottom: 22%; left: 70%; width: 16px; height: 40px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1f140a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bpc-figure 8s ease-in-out infinite -4s;
}
.scn-belmont-portia-consoles .rug {
  position: absolute; bottom: 0; left: 10%; width: 80%; height: 18%;
  background: linear-gradient(180deg, #7a5a3a 0%, #4a3020 50%, #2a1a10 100%);
  border-radius: 20% 20% 0 0 / 40% 40% 0 0;
  box-shadow: inset 0 8px 16px rgba(0,0,0,0.2);
  animation: bpc-rug 20s ease-in-out infinite alternate;
}
@keyframes bpc-window { 0% { opacity:0.9 } 50% { opacity:1 } 100% { opacity:0.8 } }
@keyframes bpc-chest { 0%,100% { transform: translateY(0) scale(1) } 25% { transform: translateY(-2px) scale(1.02) } 50% { transform: translateY(-4px) scale(1.04) } 75% { transform: translateY(-2px) scale(1.02) } }
@keyframes bpc-figure { 0%,100% { transform: translateX(0) rotate(0deg) } 25% { transform: translateX(3px) rotate(1deg) } 50% { transform: translateX(6px) rotate(-1deg) } 75% { transform: translateX(3px) rotate(0.5deg) } }
@keyframes bpc-rug { 0% { transform: scaleX(1) } 50% { transform: scaleX(1.01) } 100% { transform: scaleX(0.99) } }

/* belmont-porch-night – calm moonlit porch */
.scn-belmont-porch-night {
  background: linear-gradient(180deg, #0c0a1a 0%, #1a1a3e 40%, #2a2a54 70%, #1e1e40 100%), radial-gradient(ellipse at 50% 20%, #3a3a6a 0%, transparent 60%);
}
.scn-belmont-porch-night .sky { position:absolute; inset:0; background: linear-gradient(180deg, #14142a 0%, transparent 60%); animation: bn1-sky 14s ease-in-out infinite alternate; }
.scn-belmont-porch-night .moon { position:absolute; top:12%; right:20%; width:40px; height:40px; background: radial-gradient(circle, #d0d8e8 0%, #b0b8ca 60%, transparent 70%); border-radius:50%; box-shadow: 0 0 60px 20px rgba(176,184,202,0.3); animation: bn1-moon 20s ease-in-out infinite; }
.scn-belmont-porch-night .cloud-a { position:absolute; top:18%; left:-10%; width:120px; height:20px; background: linear-gradient(90deg, rgba(200,210,230,0.3), rgba(200,210,230,0.1)); border-radius:50%; filter: blur(8px); animation: bn1-drift-a 35s linear infinite; }
.scn-belmont-porch-night .cloud-b { position:absolute; top:25%; right:-8%; width:90px; height:16px; background: linear-gradient(90deg, rgba(200,210,230,0.25), rgba(200,210,230,0.05)); border-radius:50%; filter: blur(6px); animation: bn1-drift-b 40s linear infinite reverse; }
.scn-belmont-porch-night .porch-roof { position:absolute; bottom:45%; left:30%; width:40%; height:12%; background: linear-gradient(180deg, #2a2a3e 0%, #1a1a2e 100%); border-radius: 30% 30% 0 0 / 100% 100% 0 0; transform: perspective(400px) rotateX(10deg); box-shadow: 0 -4px 12px rgba(0,0,0,0.6); }
.scn-belmont-porch-night .porch-column-left { position:absolute; bottom:32%; left:35%; width:4%; height:20%; background: linear-gradient(180deg, #3a3a4e, #2a2a3e 60%, #1a1a2e); border-radius: 6% 6% 4% 4%; box-shadow: 2px 0 6px rgba(0,0,0,0.5); }
.scn-belmont-porch-night .porch-column-right { position:absolute; bottom:32%; right:35%; width:4%; height:20%; background: linear-gradient(180deg, #3a3a4e, #2a2a3e 60%, #1a1a2e); border-radius: 6% 6% 4% 4%; box-shadow: -2px 0 6px rgba(0,0,0,0.5); }
.scn-belmont-porch-night .porch-floor { position:absolute; bottom:24%; left:25%; width:50%; height:6%; background: linear-gradient(180deg, #2a2a3e, #1a1a2e); border-radius: 10% 10% 0 0; box-shadow: 0 6px 20px rgba(0,0,0,0.7); }
.scn-belmont-porch-night .figure { position:absolute; bottom:25%; left:48%; width:20px; height:50px; background: linear-gradient(180deg, #3a3a5e 0%, #1a1a3a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: bn1-figure 6s ease-in-out infinite; }
.scn-belmont-porch-night .nightingale { position:absolute; bottom:60%; left:20%; width:24px; height:12px; background: radial-gradient(ellipse at 30% 50%, #5a5a7a 0%, #3a3a5a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform: rotate(-10deg); animation: bn1-bird 12s ease-in-out infinite; }
.scn-belmont-porch-night .lantern { position:absolute; bottom:40%; left:50%; width:8px; height:10px; background: radial-gradient(circle, #f0e8a0 0%, #d0c080 70%, transparent 80%); border-radius: 20% 20% 30% 30%; box-shadow: 0 0 20px 6px rgba(208,192,128,0.6), 0 0 40px 12px rgba(208,192,128,0.3); animation: bn1-lantern 3s ease-in-out infinite alternate; }
@keyframes bn1-sky { 0% { opacity:0.7 } 50% { opacity:0.9 } 100% { opacity:0.75 } }
@keyframes bn1-moon { 0% { transform: translate(0,0) scale(1); } 50% { transform: translate(2px,-4px) scale(1.02); } 100% { transform: translate(-1px,2px) scale(0.98); } }
@keyframes bn1-drift-a { 0% { transform: translateX(-30px); } 100% { transform: translateX(150vw); } }
@keyframes bn1-drift-b { 0% { transform: translateX(0); } 100% { transform: translateX(-120vw); } }
@keyframes bn1-figure { 0% { transform: translateX(0) rotate(-1deg); } 25% { transform: translateX(3px) rotate(1deg); } 50% { transform: translateX(6px) rotate(-0.5deg); } 75% { transform: translateX(3px) rotate(0.5deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes bn1-bird { 0% { transform: translate(0,0) rotate(-10deg) scale(1); } 25% { transform: translate(15px,-8px) rotate(5deg) scale(1.05); } 50% { transform: translate(30px,-4px) rotate(-5deg) scale(0.95); } 75% { transform: translate(15px,2px) rotate(3deg) scale(1.02); } 100% { transform: translate(0,0) rotate(-10deg) scale(1); } }
@keyframes bn1-lantern { 0% { box-shadow: 0 0 14px 4px rgba(208,192,128,0.4); opacity:0.8; } 50% { box-shadow: 0 0 28px 8px rgba(240,232,160,0.7); opacity:1; } 100% { box-shadow: 0 0 20px 5px rgba(208,192,128,0.5); opacity:0.9; } }

/* belmont-arrival-trumpet – tense moonlit arrival */
.scn-belmont-arrival-trumpet {
  background: linear-gradient(180deg, #0a0a1e 0%, #1a1a38 35%, #252544 70%, #10102a 100%), radial-gradient(ellipse at 40% 30%, #2e2e5a 0%, transparent 70%);
}
.scn-belmont-arrival-trumpet .sky { position:absolute; inset:0; background: linear-gradient(180deg, #12122a 0%, transparent 50%); animation: ba2-sky 8s ease-in-out infinite alternate; }
.scn-belmont-arrival-trumpet .moon { position:absolute; top:10%; left:70%; width:45px; height:45px; background: radial-gradient(circle, #c0c8dc 0%, #a0a8c0 60%, transparent 70%); border-radius:50%; box-shadow: 0 0 50px 18px rgba(160,168,192,0.4); animation: ba2-moon 15s ease-in-out infinite; }
.scn-belmont-arrival-trumpet .cloud { position:absolute; top:15%; right:-10%; width:100px; height:18px; background: linear-gradient(90deg, rgba(180,190,210,0.35), rgba(180,190,210,0.1)); border-radius:50%; filter: blur(7px); animation: ba2-drift 30s linear infinite; }
.scn-belmont-arrival-trumpet .gate { position:absolute; bottom:30%; left:20%; width:60%; height:35%; background: linear-gradient(180deg, #2a2a44 0%, #1a1a32 80%); border-radius: 20% 20% 4% 4% / 80% 80% 20% 20%; transform: perspective(300px) rotateY(5deg); box-shadow: 6px 0 20px rgba(0,0,0,0.8); animation: ba2-gate 10s ease-in-out infinite; }
.scn-belmont-arrival-trumpet .trumpet { position:absolute; bottom:52%; left:38%; width:16px; height:30px; background: linear-gradient(90deg, #d0b080 0%, #c0a070 50%, #b09060 100%); border-radius: 50% 50% 20% 20% / 80% 80% 30% 30%; transform: rotate(25deg); box-shadow: 0 2px 6px rgba(0,0,0,0.6); animation: ba2-trumpet 2s ease-in-out infinite alternate; }
.scn-belmont-arrival-trumpet .trumpet-banner { position:absolute; bottom:55%; left:35%; width:24px; height:8px; background: linear-gradient(90deg, #6a2a1a 0%, #8a3a2a 50%, #6a2a1a 100%); border-radius: 10% 30% 30% 10% / 40% 60% 60% 40%; transform: rotate(20deg); box-shadow: 0 0 6px rgba(0,0,0,0.5); animation: ba2-banner 1.5s ease-in-out infinite alternate; }
.scn-belmont-arrival-trumpet .figure-messenger { position:absolute; bottom:28%; left:45%; width:22px; height:55px; background: linear-gradient(180deg, #2a2a4a 0%, #0e0e2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ba2-messenger 3s ease-in-out infinite; }
.scn-belmont-arrival-trumpet .ground { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #0e0e22 0%, #060614 100%); border-radius: 30% 70% 0 0 / 20% 40% 0 0; box-shadow: inset 0 20px 40px rgba(0,0,0,0.8); }
@keyframes ba2-sky { 0% { opacity:0.6; } 50% { opacity:1; } 100% { opacity:0.7; } }
@keyframes ba2-moon { 0% { transform: translate(0,0) scale(1); } 50% { transform: translate(-3px,2px) scale(1.03); } 100% { transform: translate(2px,-3px) scale(0.97); } }
@keyframes ba2-drift { 0% { transform: translateX(0); } 100% { transform: translateX(-130vw); } }
@keyframes ba2-gate { 0% { transform: perspective(300px) rotateY(5deg) scale(1); } 50% { transform: perspective(300px) rotateY(-2deg) scale(1.02); } 100% { transform: perspective(300px) rotateY(5deg) scale(1); } }
@keyframes ba2-trumpet { 0% { transform: rotate(25deg) scale(1); } 50% { transform: rotate(30deg) scale(1.05); } 100% { transform: rotate(22deg) scale(0.95); } }
@keyframes ba2-banner { 0% { transform: rotate(20deg) skewX(0deg); } 50% { transform: rotate(30deg) skewX(5deg); } 100% { transform: rotate(15deg) skewX(-2deg); } }
@keyframes ba2-messenger { 0% { transform: translateX(0) rotate(-2deg); } 25% { transform: translateX(8px) rotate(1deg); } 50% { transform: translateX(16px) rotate(-1deg); } 75% { transform: translateX(8px) rotate(2deg); } 100% { transform: translateX(0) rotate(0); } }

/* belmont-greeting – warm moonlit greeting */
.scn-belmont-greeting {
  background: linear-gradient(180deg, #14142a 0%, #242444 35%, #3a3a5e 70%, #1e1e36 100%), radial-gradient(ellipse at 60% 30%, #4a4a6e 0%, transparent 60%);
}
.scn-belmont-greeting .sky { position:absolute; inset:0; background: linear-gradient(180deg, #1a1a34 0%, transparent 50%); animation: bg3-sky 12s ease-in-out infinite alternate; }
.scn-belmont-greeting .moon { position:absolute; top:8%; left:75%; width:40px; height:40px; background: radial-gradient(circle, #d8dce8 0%, #b8bcc8 60%, transparent 70%); border-radius:50%; box-shadow: 0 0 50px 20px rgba(184,188,200,0.35); animation: bg3-moon 18s ease-in-out infinite; }
.scn-belmont-greeting .stars { position:absolute; top:5%; left:10%; width:100%; height:20%; background: radial-gradient(2px 2px at 20% 30%, #fff, transparent), radial-gradient(2px 2px at 70% 15%, #fff, transparent), radial-gradient(1px 1px at 40% 60%, #fff, transparent), radial-gradient(1px 1px at 85% 40%, #fff, transparent); background-size: 200% 200%; animation: bg3-stars 30s linear infinite; }
.scn-belmont-greeting .arch { position:absolute; bottom:35%; left:15%; width:70%; height:30%; background: linear-gradient(180deg, #2e2e4e 0%, #1e1e3a 80%); border-radius: 40% 40% 0 0 / 100% 100% 0 0; box-shadow: inset 0 0 30px rgba(0,0,0,0.7); transform: perspective(500px) rotateX(5deg); }
.scn-belmont-greeting .ground { position:absolute; bottom:0; left:0; right:0; height:35%; background: linear-gradient(180deg, #1a1a30 0%, #0e0e22 100%); border-radius: 20% 80% 0 0 / 15% 40% 0 0; box-shadow: inset 0 15px 30px rgba(0,0,0,0.9); }
.scn-belmont-greeting .figure-bassanio { position:absolute; bottom:34%; left:35%; width:22px; height:50px; background: linear-gradient(180deg, #3a3a5e 0%, #1a1a38 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: bg3-figure-a 5s ease-in-out infinite; }
.scn-belmont-greeting .figure-antonio { position:absolute; bottom:34%; left:50%; width:24px; height:52px; background: linear-gradient(180deg, #4a4a6a 0%, #2a2a48 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: bg3-figure-b 6s ease-in-out infinite; }
.scn-belmont-greeting .figure-gratiano { position:absolute; bottom:34%; left:62%; width:20px; height:45px; background: linear-gradient(180deg, #3a3a5a 0%, #1e1e3a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: bg3-figure-c 4.5s ease-in-out infinite; }
.scn-belmont-greeting .lantern { position:absolute; bottom:58%; left:48%; width:10px; height:12px; background: radial-gradient(circle, #f0dca0 0%, #d0b870 70%); border-radius: 20% 20% 30% 30%; box-shadow: 0 0 24px 8px rgba(208,184,112,0.5), 0 0 48px 16px rgba(208,184,112,0.2); animation: bg3-lantern 4s ease-in-out infinite alternate; }
@keyframes bg3-sky { 0% { opacity:0.7; } 50% { opacity:0.95; } 100% { opacity:0.75; } }
@keyframes bg3-moon { 0% { transform: translate(0,0) scale(1); } 50% { transform: translate(-2px,-3px) scale(1.01); } 100% { transform: translate(1px,2px) scale(0.99); } }
@keyframes bg3-stars { 0% { background-position: 0% 0%; } 100% { background-position: 100% 100%; } }
@keyframes bg3-figure-a { 0% { transform: translateX(0) rotate(-1deg); } 25% { transform: translateX(4px) rotate(0.5deg); } 50% { transform: translateX(8px) rotate(-0.5deg); } 75% { transform: translateX(4px) rotate(1deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes bg3-figure-b { 0% { transform: translateX(0) rotate(1deg); } 30% { transform: translateX(-3px) rotate(-0.5deg); } 60% { transform: translateX(3px) rotate(0.5deg); } 100% { transform: translateX(0) rotate(1deg); } }
@keyframes bg3-figure-c { 0% { transform: translateX(0) rotate(0deg) scale(1); } 20% { transform: translateX(5px) rotate(2deg) scale(1.02); } 40% { transform: translateX(10px) rotate(-1deg) scale(0.98); } 60% { transform: translateX(5px) rotate(1deg) scale(1.01); } 100% { transform: translateX(0) rotate(0deg) scale(1); } }
@keyframes bg3-lantern { 0% { box-shadow: 0 0 18px 6px rgba(208,184,112,0.4); opacity:0.85; } 50% { box-shadow: 0 0 30px 10px rgba(240,220,160,0.65); opacity:1; } 100% { box-shadow: 0 0 22px 7px rgba(208,184,112,0.5); opacity:0.9; } }

/* item-ring-posy – tense moonlit quarrel over ring */
.scn-item-ring-posy {
  background: linear-gradient(180deg, #0a0a1c 0%, #1a1a34 40%, #2a2a48 70%, #0e0e22 100%), radial-gradient(ellipse at 30% 40%, #2e2e52 0%, transparent 65%);
}
.scn-item-ring-posy .bg-deep { position:absolute; inset:0; background: radial-gradient(ellipse at 50% 80%, #1a1a38 0%, transparent 70%); animation: ir4-deep 12s ease-in-out infinite alternate; }
.scn-item-ring-posy .figure-left { position:absolute; bottom:25%; left:20%; width:24px; height:55px; background: linear-gradient(180deg, #2a2a4a 0%, #0e0e26 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ir4-left 4s ease-in-out infinite; }
.scn-item-ring-posy .figure-right { position:absolute; bottom:25%; right:20%; width:24px; height:55px; background: linear-gradient(180deg, #3a3a58 0%, #1a1a34 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ir4-right 4.5s ease-in-out infinite; }
.scn-item-ring-posy .hand { position:absolute; bottom:45%; left:45%; width:18px; height:28px; background: linear-gradient(180deg, #4a4a6a 0%, #2a2a4a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform: rotate(-20deg); animation: ir4-hand 3s ease-in-out infinite; }
.scn-item-ring-posy .ring { position:absolute; bottom:52%; left:47%; width:12px; height:12px; background: radial-gradient(circle, #d0c8a0 0%, #b0a880 60%, transparent 70%); border-radius:50%; box-shadow: 0 0 16px 4px rgba(208,200,160,0.3), 0 0 32px 8px rgba(208,200,160,0.1); border: 2px solid #a09870; animation: ir4-ring 2s ease-in-out infinite alternate; }
.scn-item-ring-posy .ground { position:absolute; bottom:0; left:0; right:0; height:25%; background: linear-gradient(180deg, #0e0e20 0%, #050510 100%); border-radius: 40% 60% 0 0 / 20% 30% 0 0; box-shadow: inset 0 10px 30px rgba(0,0,0,0.9); }
.scn-item-ring-posy .shadow { position:absolute; bottom:0; left:30%; width:40%; height:8%; background: radial-gradient(ellipse at 50% 100%, rgba(0,0,0,0.6) 0%, transparent 80%); animation: ir4-shadow 3s ease-in-out infinite; }
@keyframes ir4-deep { 0% { opacity:0.7; } 50% { opacity:1; } 100% { opacity:0.8; } }
@keyframes ir4-left { 0% { transform: translateX(0) rotate(-2deg); } 15% { transform: translateX(-8px) rotate(-5deg); } 30% { transform: translateX(-4px) rotate(2deg); } 50% { transform: translateX(-12px) rotate(-3deg); } 70% { transform: translateX(-6px) rotate(1deg); } 100% { transform: translateX(0) rotate(-2deg); } }
@keyframes ir4-right { 0% { transform: translateX(0) rotate(2deg); } 20% { transform: translateX(10px) rotate(5deg); } 40% { transform: translateX(5px) rotate(-2deg); } 60% { transform: translateX(14px) rotate(4deg); } 80% { transform: translateX(6px) rotate(-1deg); } 100% { transform: translateX(0) rotate(2deg); } }
@keyframes ir4-hand { 0% { transform: rotate(-20deg) scale(1); } 50% { transform: rotate(-10deg) scale(1.05); } 100% { transform: rotate(-25deg) scale(0.95); } }
@keyframes ir4-ring { 0% { transform: rotate(0deg) scale(1); box-shadow: 0 0 14px 3px rgba(208,200,160,0.3); } 50% { transform: rotate(180deg) scale(1.03); box-shadow: 0 0 24px 6px rgba(208,200,160,0.6); } 100% { transform: rotate(360deg) scale(1); box-shadow: 0 0 16px 4px rgba(208,200,160,0.4); } }
@keyframes ir4-shadow { 0% { transform: scaleX(1) scaleY(1); opacity:0.7; } 50% { transform: scaleX(1.1) scaleY(1.2); opacity:1; } 100% { transform: scaleX(1) scaleY(1); opacity:0.7; } }

/* belmont-moonlight-lovers */
.scn-belmont-moonlight-lovers {
  background: linear-gradient(180deg, #0b0e2a 0%, #1a2045 40%, #2a3570 100%),
              radial-gradient(ellipse at 50% 20%, #4a5a9a 0%, transparent 60%);
}
.scn-belmont-moonlight-lovers .sky {
  position: absolute; inset: 0; background: linear-gradient(180deg, #12163a 0%, transparent 100%);
  animation: bml-sky 20s ease-in-out infinite alternate;
}
.scn-belmont-moonlight-lovers .moon {
  position: absolute; top: 10%; right: 20%; width: 60px; height: 60px;
  background: radial-gradient(circle, #e8e8ff 0%, #c0c8ff 70%);
  border-radius: 50%; box-shadow: 0 0 40px 20px rgba(192,200,255,0.4), 0 0 80px 40px rgba(192,200,255,0.2);
  animation: bml-moon 30s ease-in-out infinite;
}
.scn-belmont-moonlight-lovers .tree-left {
  position: absolute; bottom: 30%; left: 10%; width: 40px; height: 120px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0e0e1a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: bml-tree1 8s ease-in-out infinite alternate;
}
.scn-belmont-moonlight-lovers .tree-right {
  position: absolute; bottom: 30%; right: 15%; width: 35px; height: 100px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0e0e1a 100%);
  border-radius: 30% 40% 30% 30% / 40% 60% 30% 30%;
  transform-origin: bottom center;
  animation: bml-tree2 10s ease-in-out infinite alternate;
}
.scn-belmont-moonlight-lovers .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #1a2a2a 0%, #0a1a1a 100%);
  border-radius: 60% 40% 0 0 / 40% 30% 0 0;
  box-shadow: inset 0 10px 30px rgba(10,20,30,0.5);
  animation: bml-ground 12s ease-in-out infinite alternate;
}
.scn-belmont-moonlight-lovers .figure-lorenzo {
  position: absolute; bottom: 30%; left: 40%; width: 20px; height: 40px;
  background: linear-gradient(180deg, #0a0a1a 0%, #000010 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bml-fig1 6s ease-in-out infinite;
}
.scn-belmont-moonlight-lovers .figure-jessica {
  position: absolute; bottom: 30%; left: 45%; width: 18px; height: 36px;
  background: linear-gradient(180deg, #0a0a1a 0%, #000010 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bml-fig2 6s ease-in-out infinite 0.3s;
}
.scn-belmont-moonlight-lovers .gate {
  position: absolute; bottom: 30%; left: 50%; width: 60px; height: 80px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 0 0 20px 5px rgba(192,200,255,0.1);
  animation: bml-gate 15s ease-in-out infinite alternate;
}
@keyframes bml-sky { 0% { opacity: 0.7; } 50% { opacity: 1; } 100% { opacity: 0.8; } }
@keyframes bml-moon { 0% { transform: translate(0,0) scale(1); box-shadow: 0 0 40px 20px rgba(192,200,255,0.4); } 50% { transform: translate(5px,-5px) scale(1.02); box-shadow: 0 0 50px 25px rgba(192,200,255,0.5); } 100% { transform: translate(0,0) scale(1); } }
@keyframes bml-tree1 { 0% { transform: rotate(-2deg); } 50% { transform: rotate(2deg); } 100% { transform: rotate(-1deg); } }
@keyframes bml-tree2 { 0% { transform: rotate(1deg); } 50% { transform: rotate(-3deg); } 100% { transform: rotate(0deg); } }
@keyframes bml-ground { 0% { opacity: 0.9; transform: scaleY(1); } 50% { opacity: 1; transform: scaleY(1.03); } 100% { opacity: 0.9; } }
@keyframes bml-fig1 { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(3px) rotate(2deg); } 50% { transform: translateX(6px) rotate(-1deg); } 75% { transform: translateX(3px) rotate(1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes bml-fig2 { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(-2px) rotate(-1deg); } 50% { transform: translateX(0) rotate(1deg); } 75% { transform: translateX(2px) rotate(-2deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes bml-gate { 0% { transform: translateX(-50%) scaleY(1); } 50% { transform: translateX(-50%) scaleY(1.02); } 100% { transform: translateX(-50%) scaleY(1); } }

/* belmont-garden-night */
.scn-belmont-garden-night {
  background: linear-gradient(180deg, #0d1230 0%, #1a2045 40%, #2a3570 100%),
              radial-gradient(ellipse at 30% 50%, #3a4a7a 0%, transparent 60%);
}
.scn-belmont-garden-night .sky {
  position: absolute; inset: 0 0 40% 0; background: linear-gradient(180deg, #12163a 0%, transparent 100%);
  animation: bgc-sky 15s ease-in-out infinite alternate;
}
.scn-belmont-garden-night .moon {
  position: absolute; top: 12%; left: 20%; width: 50px; height: 50px;
  background: radial-gradient(circle, #e0e4ff 0%, #b0b8e0 70%);
  border-radius: 50%; box-shadow: 0 0 30px 15px rgba(176,184,224,0.5), 0 0 60px 30px rgba(176,184,224,0.2);
  animation: bgc-moon 25s ease-in-out infinite alternate;
}
.scn-belmont-garden-night .hedge {
  position: absolute; bottom: 30%; left: 0; right: 0; height: 25%;
  background: linear-gradient(180deg, #1a2a2a 0%, #0a1a1a 100%);
  border-radius: 10% 30% 0 0 / 20% 40% 0 0;
  box-shadow: inset 0 5px 15px rgba(0,0,0,0.6);
  animation: bgc-hedge 18s ease-in-out infinite alternate;
}
.scn-belmont-garden-night .gate {
  position: absolute; bottom: 30%; left: 50%; width: 50px; height: 70px;
  transform: translateX(-50%); background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 8% 8% 4% 4%; box-shadow: 0 0 15px 5px rgba(176,184,224,0.1);
  animation: bgc-gate 12s ease-in-out infinite;
}
.scn-belmont-garden-night .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #152525 0%, #0a1515 100%);
  border-radius: 60% 40% 0 0 / 50% 30% 0 0;
  animation: bgc-ground 20s ease-in-out infinite alternate;
}
.scn-belmont-garden-night .figure.messenger {
  position: absolute; bottom: 30%; left: 35%; width: 18px; height: 38px;
  background: linear-gradient(180deg, #0a0a1a 0%, #000010 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bgc-messenger 5s ease-in-out infinite;
}
.scn-belmont-garden-night .horn {
  position: absolute; bottom: 32%; left: 35%; width: 20px; height: 8px;
  background: linear-gradient(90deg, #8a7a5a 0%, #5a4a3a 100%);
  border-radius: 50% 50% 20% 20%;
  transform: rotate(-20deg);
  box-shadow: 0 2px 4px rgba(0,0,0,0.5);
  animation: bgc-horn 4s ease-in-out infinite;
}
.scn-belmont-garden-night .flower-a {
  position: absolute; bottom: 33%; left: 20%; width: 6px; height: 10px;
  background: radial-gradient(circle, #c0a0d0 0%, #9060a0 100%);
  border-radius: 50% 50% 0 0;
  animation: bgc-flower1 6s ease-in-out infinite alternate;
}
.scn-belmont-garden-night .flower-b {
  position: absolute; bottom: 33%; right: 25%; width: 8px; height: 12px;
  background: radial-gradient(circle, #a0c0e0 0%, #6080a0 100%);
  border-radius: 50% 50% 0 0;
  animation: bgc-flower2 7s ease-in-out infinite alternate 0.5s;
}
@keyframes bgc-sky { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.7; } }
@keyframes bgc-moon { 0% { transform: translate(0,0) scale(1); box-shadow: 0 0 30px 15px rgba(176,184,224,0.5); } 50% { transform: translate(-5px,-5px) scale(0.98); box-shadow: 0 0 40px 20px rgba(176,184,224,0.3); } 100% { transform: translate(0,0) scale(1); } }
@keyframes bgc-hedge { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes bgc-gate { 0% { transform: translateX(-50%) scaleY(1); opacity: 0.9; } 50% { transform: translateX(-50%) scaleY(1.02); opacity: 1; } 100% { transform: translateX(-50%) scaleY(1); opacity: 0.9; } }
@keyframes bgc-ground { 0% { transform: scaleY(1); } 50% { transform: scaleY(1.02); } 100% { transform: scaleY(1); } }
@keyframes bgc-messenger { 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 bgc-horn { 0% { transform: rotate(-20deg) scale(1); } 50% { transform: rotate(-15deg) scale(1.05); } 100% { transform: rotate(-20deg) scale(1); } }
@keyframes bgc-flower1 { 0% { transform: rotate(0deg) translateY(0); } 50% { transform: rotate(5deg) translateY(-2px); } 100% { transform: rotate(0deg) translateY(0); } }
@keyframes bgc-flower2 { 0% { transform: rotate(0deg) translateY(0); } 50% { transform: rotate(-5deg) translateY(-3px); } 100% { transform: rotate(0deg) translateY(0); } }

/* belmont-music-harmony */
.scn-belmont-music-harmony {
  background: linear-gradient(180deg, #0e1330 0%, #1c2245 40%, #2c3770 100%),
              radial-gradient(ellipse at 70% 30%, #4a5a9a 0%, transparent 60%);
}
.scn-belmont-music-harmony .sky {
  position: absolute; inset: 0 0 40% 0; background: linear-gradient(180deg, #12163a 0%, transparent 80%);
  animation: bmh-sky 18s ease-in-out infinite alternate;
}
.scn-belmont-music-harmony .moon {
  position: absolute; top: 15%; left: 15%; width: 45px; height: 45px;
  background: radial-gradient(circle, #e8ecff 0%, #b8c0e8 70%);
  border-radius: 50%; box-shadow: 0 0 35px 18px rgba(184,192,232,0.4), 0 0 70px 35px rgba(184,192,232,0.2);
  animation: bmh-moon 28s ease-in-out infinite;
}
.scn-belmont-music-harmony .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #1a2528 0%, #0a1518 100%);
  border-radius: 70% 30% 0 0 / 40% 20% 0 0;
  animation: bmh-ground 14s ease-in-out infinite alternate;
}
.scn-belmont-music-harmony .musician-a {
  position: absolute; bottom: 30%; left: 30%; width: 20px; height: 40px;
  background: linear-gradient(180deg, #0a0a1a 0%, #000010 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bmh-mus1 7s ease-in-out infinite;
}
.scn-belmont-music-harmony .musician-b {
  position: absolute; bottom: 30%; left: 50%; width: 20px; height: 40px;
  background: linear-gradient(180deg, #0a0a1a 0%, #000010 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bmh-mus2 7s ease-in-out infinite 0.5s;
}
.scn-belmont-music-harmony .lyre {
  position: absolute; bottom: 32%; left: 40%; width: 16px; height: 24px;
  background: linear-gradient(180deg, #aa9050 0%, #806030 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform: rotate(15deg);
  box-shadow: 0 2px 6px rgba(0,0,0,0.4);
  animation: bmh-lyre 5s ease-in-out infinite alternate;
}
.scn-belmont-music-harmony .note-1 {
  position: absolute; bottom: 45%; left: 35%; width: 8px; height: 8px;
  background: radial-gradient(circle, #e0d8a0 0%, #b8a87a 100%);
  border-radius: 50%;
  filter: blur(1px);
  animation: bmh-note1 6s ease-in-out infinite;
}
.scn-belmont-music-harmony .note-2 {
  position: absolute; bottom: 48%; left: 42%; width: 6px; height: 6px;
  background: radial-gradient(circle, #e0d8a0 0%, #b8a87a 100%);
  border-radius: 50%;
  filter: blur(1px);
  animation: bmh-note2 7s ease-in-out infinite 0.8s;
}
.scn-belmont-music-harmony .note-3 {
  position: absolute; bottom: 50%; left: 50%; width: 7px; height: 7px;
  background: radial-gradient(circle, #e0d8a0 0%, #b8a87a 100%);
  border-radius: 50%;
  filter: blur(1px);
  animation: bmh-note3 8s ease-in-out infinite 1.5s;
}
@keyframes bmh-sky { 0% { opacity: 0.7; } 50% { opacity: 1; } 100% { opacity: 0.8; } }
@keyframes bmh-moon { 0% { transform: translate(0,0) scale(1); box-shadow: 0 0 35px 18px rgba(184,192,232,0.4); } 50% { transform: translate(3px,-5px) scale(0.97); box-shadow: 0 0 45px 22px rgba(184,192,232,0.3); } 100% { transform: translate(0,0) scale(1); } }
@keyframes bmh-ground { 0% { transform: scaleY(1); } 50% { transform: scaleY(1.015); } 100% { transform: scaleY(1); } }
@keyframes bmh-mus1 { 0% { transform: rotate(0deg) translateY(0); } 25% { transform: rotate(1deg) translateY(-1px); } 50% { transform: rotate(-1deg) translateY(0); } 75% { transform: rotate(2deg) translateY(-2px); } 100% { transform: rotate(0deg) translateY(0); } }
@keyframes bmh-mus2 { 0% { transform: rotate(0deg) translateY(0); } 25% { transform: rotate(-1deg) translateY(-2px); } 50% { transform: rotate(2deg) translateY(0); } 75% { transform: rotate(-2deg) translateY(-1px); } 100% { transform: rotate(0deg) translateY(0); } }
@keyframes bmh-lyre { 0% { transform: rotate(15deg) scale(1); } 50% { transform: rotate(20deg) scale(1.05); } 100% { transform: rotate(15deg) scale(1); } }
@keyframes bmh-note1 { 0% { transform: translate(0,0) scale(1); opacity: 0.6; } 50% { transform: translate(5px,-15px) scale(1.2); opacity: 0.9; } 100% { transform: translate(10px,-30px) scale(1); opacity: 0.2; } }
@keyframes bmh-note2 { 0% { transform: translate(0,0) scale(1); opacity: 0.6; } 50% { transform: translate(-5px,-18px) scale(1.3); opacity: 0.9; } 100% { transform: translate(-10px,-35px) scale(1); opacity: 0.2; } }
@keyframes bmh-note3 { 0% { transform: translate(0,0) scale(1); opacity: 0.6; } 50% { transform: translate(3px,-20px) scale(1.4); opacity: 0.9; } 100% { transform: translate(8px,-40px) scale(1); opacity: 0.2; } }

/* item-candle-beam */
.scn-item-candle-beam {
  background: linear-gradient(180deg, #0a0e1a 0%, #181e30 40%, #2a2e40 100%),
              radial-gradient(ellipse at 80% 60%, #d46a30 0%, transparent 50%),
              radial-gradient(ellipse at 50% 80%, #4060a0 0%, transparent 70%);
}
.scn-item-candle-beam .wall {
  position: absolute; inset: 0 0 30% 0; background: linear-gradient(180deg, #1a1e2a 0%, #2a2e3a 40%, #3a3e4a 100%);
  box-shadow: inset 0 0 60px 20px rgba(212,106,48,0.1);
  animation: icb-wall 20s ease-in-out infinite alternate;
}
.scn-item-candle-beam .window {
  position: absolute; top: 15%; right: 15%; width: 60px; height: 80px;
  background: linear-gradient(180deg, #0a1a3a 0%, #1a2a5a 100%);
  border: 4px solid #2a2e3a; border-radius: 10% 10% 5% 5%;
  box-shadow: inset 0 0 20px 10px rgba(10,26,58,0.8);
  animation: icb-window 15s ease-in-out infinite alternate;
}
.scn-item-candle-beam .moon {
  position: absolute; top: 18%; right: 25%; width: 30px; height: 30px;
  background: radial-gradient(circle, #c0c8e8 0%, #8088b0 70%);
  border-radius: 50%; box-shadow: 0 0 20px 10px rgba(128,136,176,0.3);
  animation: icb-moon 20s ease-in-out infinite;
}
.scn-item-candle-beam .table {
  position: absolute; bottom: 25%; left: 30%; width: 80px; height: 10px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 4px; box-shadow: 0 4px 8px rgba(0,0,0,0.5);
  animation: icb-table 12s ease-in-out infinite;
}
.scn-item-candle-beam .candle {
  position: absolute; bottom: 25%; left: 35%; width: 8px; height: 20px;
  background: linear-gradient(180deg, #e0d0a0 0%, #c0a880 100%);
  border-radius: 50% 50% 20% 20% / 60% 60% 20% 20%;
  box-shadow: 0 0 10px 2px rgba(224,208,160,0.3);
  animation: icb-candle 3s ease-in-out infinite alternate;
}
.scn-item-candle-beam .flame {
  position: absolute; bottom: 25%; left: 35%; width: 10px; height: 14px;
  margin-left: -1px; margin-bottom: 14px;
  background: radial-gradient(circle at 50% 100%, #ffa040 0%, #ff6040 50%, transparent 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 30% 30%;
  box-shadow: 0 0 30px 15px rgba(255,160,64,0.6), 0 0 60px 30px rgba(255,96,64,0.3);
  animation: icb-flame 2s ease-in-out infinite;
}
.scn-item-candle-beam .beam {
  position: absolute; bottom: 25%; left: 35%; width: 200px; height: 5px;
  background: linear-gradient(90deg, rgba(255,160,64,0.4) 0%, rgba(255,160,64,0) 100%);
  transform: rotate(-10deg); transform-origin: left center;
  animation: icb-beam 4s ease-in-out infinite alternate;
}
.scn-item-candle-beam .figure.portia {
  position: absolute; bottom: 25%; left: 50%; width: 22px; height: 42px;
  background: linear-gradient(180deg, #0a0a1a 0%, #000010 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center; box-shadow: -5px 0 15px 0 rgba(255,160,64,0.2);
  animation: icb-portia 8s ease-in-out infinite;
}
@keyframes icb-wall { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.8; } }
@keyframes icb-window { 0% { opacity: 0.7; box-shadow: inset 0 0 20px 10px rgba(10,26,58,0.8); } 50% { opacity: 1; box-shadow: inset 0 0 15px 5px rgba(10,26,58,0.5); } 100% { opacity: 0.8; } }
@keyframes icb-moon { 0% { transform: translate(0,0) scale(1); box-shadow: 0 0 20px 10px rgba(128,136,176,0.3); } 50% { transform: translate(2px,-2px) scale(0.98); box-shadow: 0 0 15px 8px rgba(128,136,176,0.2); } 100% { transform: translate(0,0) scale(1); } }
@keyframes icb-table { 0% { transform: translateY(0); } 50% { transform: translateY(-1px); } 100% { transform: translateY(0); } }
@keyframes icb-candle { 0% { transform: scaleY(1); opacity: 0.9; } 50% { transform: scaleY(1.02); opacity: 1; } 100% { transform: scaleY(1); opacity: 0.9; } }
@keyframes icb-flame { 0% { transform: scale(1) translateY(0); box-shadow: 0 0 30px 15px rgba(255,160,64,0.6); } 50% { transform: scale(1.1) translateY(-2px); box-shadow: 0 0 40px 20px rgba(255,160,64,0.8); } 100% { transform: scale(0.95) translateY(0); box-shadow: 0 0 30px 15px rgba(255,160,64,0.5); } }
@keyframes icb-beam { 0% { transform: rotate(-10deg) scaleX(1); opacity: 0.7; } 50% { transform: rotate(-5deg) scaleX(1.1); opacity: 0.9; } 100% { transform: rotate(-10deg) scaleX(1); opacity: 0.7; } }
@keyframes icb-portia { 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); } }

.scn-venice-rialto-jacob-story {
  background: linear-gradient(180deg, #fce4c8 0%, #87ceeb 70%, #6a9ec0 100%), radial-gradient(ellipse at 30% 10%, #ffd700 0%, transparent 50%);
}
.scn-venice-rialto-jacob-story .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #fff7e0 0%, #aad0e6 100%);
  animation: vj-sky 14s ease-in-out infinite alternate;
}
.scn-venice-rialto-jacob-story .sun {
  position: absolute; top: 8%; left: 28%; width: 60px; height: 60px;
  background: radial-gradient(circle, #fff7b0 0%, #ffcc00 60%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 80px 40px rgba(255,204,0,.3);
  animation: vj-sun 6s ease-in-out infinite alternate;
}
.scn-venice-rialto-jacob-story .colonnade {
  position: absolute; bottom: 30%; left: 0; right: 0; height: 35%;
  background: linear-gradient(90deg, #8a6e4e 0%, #b89a70 15%, transparent 15%, transparent 85%, #b89a70 85%, #8a6e4e 100%);
  border-radius: 20% 20% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,.25);
  mask: linear-gradient(180deg, #000 0%, transparent 100%);
  animation: vj-col 12s ease-in-out infinite;
}
.scn-venice-rialto-jacob-story .figure-jacob {
  position: absolute; bottom: 26%; left: 38%; width: 28px; height: 60px;
  background: linear-gradient(180deg, #2d1f0e 0%, #1a1108 100%);
  border-radius: 45% 45% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vj-jacob 4s ease-in-out infinite;
}
.scn-venice-rialto-jacob-story .staff {
  position: absolute; bottom: 28%; left: 34%; width: 4px; height: 50px;
  background: linear-gradient(180deg, #4a3520, #2d1f0e);
  border-radius: 0 0 40% 40%;
  transform: rotate(-8deg);
  transform-origin: bottom center;
  animation: vj-staff 3.5s ease-in-out infinite alternate;
}
.scn-venice-rialto-jacob-story .sheep-1,
.scn-venice-rialto-jacob-story .sheep-2 {
  position: absolute; bottom: 22%; width: 18px; height: 14px;
  background: radial-gradient(ellipse at 30% 40%, #d9c8a0 0%, #8a7a5a 100%);
  border-radius: 50%;
  animation: vj-sheep 6s ease-in-out infinite alternate;
}
.scn-venice-rialto-jacob-story .sheep-1 { left: 50%; }
.scn-venice-rialto-jacob-story .sheep-2 { left: 56%; animation-delay: -1.5s; }
.scn-venice-rialto-jacob-story .shadow-ray {
  position: absolute; top: 0; left: 25%; width: 40%; height: 100%;
  background: linear-gradient(135deg, rgba(0,0,0,.15) 0%, transparent 60%);
  clip-path: polygon(0 0, 100% 0, 80% 100%, 20% 100%);
  animation: vj-ray 8s linear infinite;
}
@keyframes vj-sky    { 0% { opacity: .9; filter: brightness(1) } 50% { opacity: 1; filter: brightness(1.1) } 100% { opacity: .85; filter: brightness(.95) } }
@keyframes vj-sun    { 0% { transform: scale(1); box-shadow: 0 0 60px 30px rgba(255,204,0,.2) } 50% { transform: scale(1.08); box-shadow: 0 0 100px 50px rgba(255,204,0,.4) } 100% { transform: scale(1); box-shadow: 0 0 70px 35px rgba(255,204,0,.25) } }
@keyframes vj-col    { 0% { transform: translateY(0) skewX(0) } 50% { transform: translateY(-2px) skewX(-0.5deg) } 100% { transform: translateY(0) skewX(0) } }
@keyframes vj-jacob  { 0% { transform: translateX(0) rotate(-1deg) } 25% { transform: translateX(4px) rotate(1deg) } 50% { transform: translateX(8px) rotate(-1deg) } 75% { transform: translateX(12px) rotate(1deg) } 100% { transform: translateX(16px) rotate(0) } }
@keyframes vj-staff  { 0% { transform: rotate(-10deg) } 50% { transform: rotate(-4deg) } 100% { transform: rotate(-10deg) } }
@keyframes vj-sheep  { 0% { transform: translateY(0) scaleX(1) } 50% { transform: translateY(-2px) scaleX(1.05) } 100% { transform: translateY(0) scaleX(1) } }
@keyframes vj-ray    { 0% { opacity: .2; transform: translateX(0) } 50% { opacity: .35; transform: translateX(5%) } 100% { opacity: .2; transform: translateX(0) } }

.scn-venice-rialto-shylock-reminds-insults {
  background: linear-gradient(180deg, #f5e6d0 0%, #89b8d6 60%, #5f7f9a 100%), radial-gradient(ellipse at 70% 10%, #e0c090 0%, transparent 40%);
}
.scn-venice-rialto-shylock-reminds-insults .sky {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(180deg, #ffe8c8 0%, #a0c8e0 100%);
  animation: vsr-sky 12s ease-in-out infinite alternate;
}
.scn-venice-rialto-shylock-reminds-insults .sun {
  position: absolute; top: 5%; right: 18%; width: 55px; height: 55px;
  background: radial-gradient(circle, #ffe080 0%, #e0a020 60%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 90px 45px rgba(224,160,32,.25);
  animation: vsr-sun 8s ease-in-out infinite alternate;
}
.scn-venice-rialto-shylock-reminds-insults .colonnade {
  position: absolute; bottom: 25%; left: 0; right: 0; height: 40%;
  background: linear-gradient(90deg, #6b5340 0%, #8c7258 20%, transparent 20%, transparent 80%, #8c7258 80%, #6b5340 100%);
  border-radius: 15% 15% 0 0;
  box-shadow: inset 0 12px 25px rgba(0,0,0,.3);
  mask: linear-gradient(180deg, #000 0%, transparent 100%);
  animation: vsr-col 15s ease-in-out infinite;
}
.scn-venice-rialto-shylock-reminds-insults .figure-antonio {
  position: absolute; bottom: 22%; left: 28%; width: 30px; height: 68px;
  background: linear-gradient(180deg, #1e2b3a 0%, #0f1a24 100%);
  border-radius: 45% 45% 40% 40% / 65% 65% 35% 35%;
  transform-origin: bottom center;
  animation: vsr-antonio 3s ease-in-out infinite;
}
.scn-venice-rialto-shylock-reminds-insults .figure-shylock {
  position: absolute; bottom: 22%; left: 50%; width: 28px; height: 66px;
  background: linear-gradient(180deg, #2a1e14 0%, #140c06 100%);
  border-radius: 45% 45% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vsr-shylock 3.5s ease-in-out infinite alternate;
}
.scn-venice-rialto-shylock-reminds-insults .shrug-arm {
  position: absolute; bottom: 40%; left: 50%; width: 6px; height: 30px;
  background: #2a1e14;
  border-radius: 30% 30% 10% 10%;
  transform: rotate(70deg);
  transform-origin: bottom center;
  animation: vsr-arm 4s ease-in-out infinite;
}
.scn-venice-rialto-shylock-reminds-insults .shadow-blot {
  position: absolute; bottom: 15%; left: 35%; width: 30%; height: 15%;
  background: radial-gradient(ellipse at 50% 100%, rgba(0,0,0,.2) 0%, transparent 70%);
  animation: vsr-blot 7s linear infinite alternate;
}
@keyframes vsr-sky    { 0% { opacity: .85 } 50% { opacity: 1 } 100% { opacity: .8 } }
@keyframes vsr-sun    { 0% { transform: scale(.95); filter: brightness(.9) } 50% { transform: scale(1.05); filter: brightness(1.1) } 100% { transform: scale(.98); filter: brightness(.95) } }
@keyframes vsr-col    { 0% { transform: translateY(0) } 50% { transform: translateY(-3px) } 100% { transform: translateY(0) } }
@keyframes vsr-antonio { 0% { transform: translateX(0) rotate(0) } 25% { transform: translateX(-3px) rotate(-2deg) } 50% { transform: translateX(0) rotate(0) } 75% { transform: translateX(2px) rotate(2deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes vsr-shylock { 0% { transform: translateX(0) scaleY(1) } 50% { transform: translateX(-5px) scaleY(.97) } 100% { transform: translateX(0) scaleY(1) } }
@keyframes vsr-arm    { 0% { transform: rotate(65deg) } 50% { transform: rotate(80deg) } 100% { transform: rotate(65deg) } }
@keyframes vsr-blot   { 0% { opacity: .15; transform: scaleX(1) } 50% { opacity: .3; transform: scaleX(1.1) } 100% { opacity: .15; transform: scaleX(1) } }

.scn-venice-rialto-antonio-defies {
  background: linear-gradient(180deg, #fae6c8 0%, #7db0c8 60%, #4d6f8a 100%), radial-gradient(ellipse at 20% 15%, #e8c070 0%, transparent 40%);
}
.scn-venice-rialto-antonio-defies .sky {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #fff3d0 0%, #92c2d8 100%);
  animation: vad-sky 10s ease-in-out infinite alternate;
}
.scn-venice-rialto-antonio-defies .sun {
  position: absolute; top: 6%; left: 15%; width: 50px; height: 50px;
  background: radial-gradient(circle, #ffd44d 0%, #d6991a 60%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 100px 50px rgba(214,153,26,.2);
  animation: vad-sun 7s ease-in-out infinite alternate;
}
.scn-venice-rialto-antonio-defies .colonnade {
  position: absolute; bottom: 22%; left: 0; right: 0; height: 42%;
  background: linear-gradient(90deg, #5a4538 0%, #7a5e48 15%, transparent 15%, transparent 85%, #7a5e48 85%, #5a4538 100%);
  border-radius: 20% 20% 0 0;
  box-shadow: inset 0 15px 30px rgba(0,0,0,.3);
  mask: linear-gradient(180deg, #000 0%, transparent 100%);
  animation: vad-col 14s ease-in-out infinite;
}
.scn-venice-rialto-antonio-defies .figure-antonio-defiant {
  position: absolute; bottom: 20%; left: 32%; width: 32px; height: 72px;
  background: linear-gradient(180deg, #1a2b3a 0%, #0a1520 100%);
  border-radius: 45% 45% 38% 38% / 65% 65% 35% 35%;
  transform-origin: bottom center;
  animation: vad-defiant 2.5s ease-in-out infinite;
}
.scn-venice-rialto-antonio-defies .raised-arm {
  position: absolute; bottom: 42%; left: 30%; width: 5px; height: 35px;
  background: #1a2b3a;
  border-radius: 40% 40% 0 0;
  transform: rotate(140deg);
  transform-origin: bottom center;
  animation: vad-arm 3s ease-in-out infinite alternate;
}
.scn-venice-rialto-antonio-defies .figure-bassanio {
  position: absolute; bottom: 20%; left: 52%; width: 26px; height: 64px;
  background: linear-gradient(180deg, #2a1f1a 0%, #140e0a 100%);
  border-radius: 45% 45% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vad-bass 5s ease-in-out infinite;
}
.scn-venice-rialto-antonio-defies .shadow-splash {
  position: absolute; bottom: 10%; left: 25%; width: 50%; height: 20%;
  background: radial-gradient(ellipse at 50% 0%, rgba(0,0,0,.25) 0%, transparent 70%);
  animation: vad-splash 4s ease-in-out infinite alternate;
}
@keyframes vad-sky    { 0% { opacity: .9; filter: brightness(1) } 50% { opacity: 1; filter: brightness(1.15) } 100% { opacity: .85; filter: brightness(.9) } }
@keyframes vad-sun    { 0% { transform: scale(1); box-shadow: 0 0 80px 40px rgba(214,153,26,.15) } 50% { transform: scale(1.06); box-shadow: 0 0 120px 60px rgba(214,153,26,.3) } 100% { transform: scale(1); box-shadow: 0 0 90px 45px rgba(214,153,26,.2) } }
@keyframes vad-col    { 0% { transform: translateY(0) rotateX(0) } 50% { transform: translateY(-4px) rotateX(1deg) } 100% { transform: translateY(0) rotateX(0) } }
@keyframes vad-defiant { 0% { transform: translateX(0) rotate(-2deg) scaleY(1) } 25% { transform: translateX(8px) rotate(2deg) scaleY(1.02) } 50% { transform: translateX(0) rotate(-2deg) scaleY(1) } 75% { transform: translateX(-4px) rotate(2deg) scaleY(1.02) } 100% { transform: translateX(0) rotate(-2deg) scaleY(1) } }
@keyframes vad-arm    { 0% { transform: rotate(130deg) } 50% { transform: rotate(155deg) } 100% { transform: rotate(130deg) } }
@keyframes vad-bass   { 0% { transform: translateX(0) } 50% { transform: translateX(6px) } 100% { transform: translateX(0) } }
@keyframes vad-splash { 0% { opacity: .1; transform: scaleY(1) } 50% { opacity: .25; transform: scaleY(1.2) } 100% { opacity: .1; transform: scaleY(1) } }

.scn-venice-rialto-merry-bond-proposal {
  background: linear-gradient(180deg, #f3dfc0 0%, #8ab4c8 70%, #59809a 100%), radial-gradient(ellipse at 60% 20%, #d4b070 0%, transparent 50%);
}
.scn-venice-rialto-merry-bond-proposal .sky {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(180deg, #fce8c0 0%, #aad0e0 100%);
  animation: vmb-sky 13s ease-in-out infinite alternate;
}
.scn-venice-rialto-merry-bond-proposal .sun {
  position: absolute; top: 4%; right: 22%; width: 58px; height: 58px;
  background: radial-gradient(circle, #ffe680 0%, #e0a828 60%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 90px 45px rgba(224,168,40,.2);
  animation: vmb-sun 9s ease-in-out infinite alternate;
}
.scn-venice-rialto-merry-bond-proposal .colonnade {
  position: absolute; bottom: 22%; left: 0; right: 0; height: 40%;
  background: linear-gradient(90deg, #5a4538 0%, #795e48 20%, transparent 20%, transparent 80%, #795e48 80%, #5a4538 100%);
  border-radius: 18% 18% 0 0;
  box-shadow: inset 0 12px 24px rgba(0,0,0,.28);
  mask: linear-gradient(180deg, #000 0%, transparent 100%);
  animation: vmb-col 16s ease-in-out infinite;
}
.scn-venice-rialto-merry-bond-proposal .figure-shylock-bond {
  position: absolute; bottom: 20%; left: 40%; width: 30px; height: 68px;
  background: linear-gradient(180deg, #2a1e14 0%, #140c06 100%);
  border-radius: 45% 45% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vmb-shylock 4s ease-in-out infinite alternate;
}
.scn-venice-rialto-merry-bond-proposal .scroll {
  position: absolute; bottom: 30%; left: 54%; width: 24px; height: 14px;
  background: linear-gradient(90deg, #d4b888 0%, #b89868 100%);
  border-radius: 20% 20% 40% 40%;
  box-shadow: 0 4px 6px rgba(0,0,0,.15);
  animation: vmb-scroll 5s ease-in-out infinite;
}
.scn-venice-rialto-merry-bond-proposal .seal {
  position: absolute; bottom: 28%; left: 58%; width: 10px; height: 10px;
  background: radial-gradient(circle, #c84c2c 0%, #8a1a0a 100%);
  border-radius: 50%;
  box-shadow: 0 0 8px 2px rgba(200,76,44,.3);
  animation: vmb-seal 3s ease-in-out infinite alternate;
}
.scn-venice-rialto-merry-bond-proposal .notary-desk {
  position: absolute; bottom: 18%; left: 46%; width: 50px; height: 10px;
  background: linear-gradient(180deg, #6a4a30 0%, #3a2a1a 100%);
  border-radius: 10% 10% 20% 20%;
  box-shadow: 0 4px 8px rgba(0,0,0,.2);
  animation: vmb-desk 6s ease-in-out infinite;
}
.scn-venice-rialto-merry-bond-proposal .shadow-pool {
  position: absolute; bottom: 8%; left: 30%; width: 40%; height: 18%;
  background: radial-gradient(ellipse at 50% 100%, rgba(0,0,0,.2) 0%, transparent 60%);
  animation: vmb-pool 8s ease-in-out infinite alternate;
}
@keyframes vmb-sky    { 0% { opacity: .88 } 50% { opacity: 1 } 100% { opacity: .82 } }
@keyframes vmb-sun    { 0% { transform: scale(.98); filter: brightness(.92) } 50% { transform: scale(1.04); filter: brightness(1.08) } 100% { transform: scale(1); filter: brightness(.96) } }
@keyframes vmb-col    { 0% { transform: translateY(0) } 50% { transform: translateY(-3px) } 100% { transform: translateY(0) } }
@keyframes vmb-shylock { 0% { transform: translateX(0) rotate(0) } 25% { transform: translateX(4px) rotate(1deg) } 50% { transform: translateX(0) rotate(0) } 75% { transform: translateX(-4px) rotate(-1deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes vmb-scroll { 0% { transform: translateY(0) scaleY(1) } 50% { transform: translateY(-2px) scaleY(1.05) } 100% { transform: translateY(0) scaleY(1) } }
@keyframes vmb-seal   { 0% { transform: scale(1); opacity: .8 } 50% { transform: scale(1.1); opacity: 1 } 100% { transform: scale(1); opacity: .85 } }
@keyframes vmb-desk   { 0% { transform: translateY(0) } 50% { transform: translateY(-1px) } 100% { transform: translateY(0) } }
@keyframes vmb-pool   { 0% { opacity: .12; transform: scaleX(1) } 50% { opacity: .22; transform: scaleX(1.1) } 100% { opacity: .12; transform: scaleX(1) } }

.scn-belmont-suitors-mocked { background: linear-gradient(180deg, #f4e1c1 0%, #d4a56a 40%), radial-gradient(ellipse at 50% 100%, #c08050 0%, transparent 70%); }
.scn-belmont-suitors-mocked .curtain-left,
.scn-belmont-suitors-mocked .curtain-right { position:absolute; top:0; width:22%; height:100%; background: linear-gradient(180deg, #8b5e3c 0%, #5e3a1a 100%); border-radius: 0 20% 0 0 / 0 10% 0 0; animation: bsm-curtain 12s ease-in-out infinite alternate; }
.scn-belmont-suitors-mocked .curtain-left { left:0; }
.scn-belmont-suitors-mocked .curtain-right { right:0; transform: scaleX(-1); }
.scn-belmont-suitors-mocked .floor { position:absolute; bottom:0; left:0; right:0; height:25%; background: linear-gradient(180deg, #6a4a3a 0%, #3a2a1a 100%); border-radius: 50% 50% 0 0 / 10% 10% 0 0; }
.scn-belmont-suitors-mocked .prince { position:absolute; bottom:20%; left:35%; width:40px; height:80px; background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%); border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%; transform-origin: bottom center; animation: bsm-prince 4s ease-in-out infinite; }
.scn-belmont-suitors-mocked .hat { position:absolute; bottom:75%; left:34%; width:50px; height:20px; background: #5e1a1d; border-radius: 40% 40% 10% 10%; border-bottom: 4px solid #c08040; animation: bsm-hat 3s ease-in-out infinite 0.2s; }
.scn-belmont-suitors-mocked .servant { position:absolute; bottom:20%; left:55%; width:30px; height:60px; background: linear-gradient(180deg, #6a4a3a 0%, #2a1a0a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: bsm-servant 5s ease-in-out infinite 0.5s; }
.scn-belmont-suitors-mocked .shoe { position:absolute; bottom:17%; left:30%; width:20px; height:8px; background: #2a1a0a; border-radius: 0 50% 50% 50%; animation: bsm-shoe 4s ease-in-out infinite 0.3s; }
.scn-belmont-suitors-mocked .sparkle { position:absolute; top:30%; left:40%; width:8px; height:8px; background: #ffd060; border-radius: 50%; box-shadow: 0 0 10px 4px #ffd060; animation: bsm-sparkle 2s ease-in-out infinite; }
@keyframes bsm-curtain { 0% { transform: translateX(0) skewX(0); } 50% { transform: translateX(8px) skewX(2deg); } 100% { transform: translateX(0) skewX(0); } }
@keyframes bsm-prince { 0% { transform: translateX(0) rotate(0); } 30% { transform: translateX(4px) rotate(3deg); } 70% { transform: translateX(-3px) rotate(-2deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes bsm-hat { 0% { transform: translateY(0) rotate(0); } 40% { transform: translateY(-12px) rotate(8deg); } 80% { transform: translateY(4px) rotate(-4deg); } 100% { transform: translateY(0) rotate(0); } }
@keyframes bsm-servant { 0% { transform: rotate(0); } 30% { transform: rotate(12deg) translateX(2px); } 60% { transform: rotate(-6deg) translateX(-1px); } 100% { transform: rotate(0); } }
@keyframes bsm-shoe { 0% { transform: translateX(0) rotate(0); } 50% { transform: translateX(8px) rotate(15deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes bsm-sparkle { 0% { opacity:0; transform: scale(0); } 50% { opacity:1; transform: scale(1.4); } 100% { opacity:0; transform: scale(0); } }

.scn-belmont-strategy-against-german { background: linear-gradient(180deg, #fdf5e6 0%, #e8d8b0 40%), radial-gradient(circle at 60% 20%, #fff8dc 0%, transparent 80%); }
.scn-belmont-strategy-against-german .table { position:absolute; bottom:20%; left:10%; right:10%; height:18%; background: linear-gradient(180deg, #8b5e3c 0%, #5e3a1a 100%); border-radius: 4% 4% 0 0; box-shadow: 0 8px 20px rgba(0,0,0,0.3); }
.scn-belmont-strategy-against-german .casket-left { position:absolute; bottom:38%; left:25%; width:40px; height:30px; background: linear-gradient(135deg, #c08040 0%, #8a6020 100%); border: 3px solid #b07030; border-radius: 4px; animation: bsg-casket 6s ease-in-out infinite alternate; }
.scn-belmont-strategy-against-german .casket-right { position:absolute; bottom:38%; right:25%; width:40px; height:30px; background: linear-gradient(135deg, #c08040 0%, #8a6020 100%); border: 3px solid #b07030; border-radius: 4px; animation: bsg-casket 6s ease-in-out infinite 3s; }
.scn-belmont-strategy-against-german .glass { position:absolute; bottom:52%; left:46%; width:14px; height:22px; border: 2px solid rgba(200,200,200,0.7); border-top: none; border-radius: 0 0 4px 4px; background: transparent; animation: bsg-glass 4s ease-in-out infinite; }
.scn-belmont-strategy-against-german .wine { position:absolute; bottom:54%; left:48%; width:10px; height:12px; background: #5e1a1d; border-radius: 0 0 50% 50%; animation: bsg-wine 4s ease-in-out infinite 0.2s; }
.scn-belmont-strategy-against-german .hand { position:absolute; bottom:30%; left:60%; width:18px; height:24px; background: linear-gradient(180deg, #d4a56a 0%, #b08050 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom left; animation: bsg-hand 5s ease-in-out infinite; }
.scn-belmont-strategy-against-german .shadow { position:absolute; bottom:0; left:0; right:0; height:25%; background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,0.15) 100%); }
@keyframes bsg-casket { 0% { box-shadow: 0 0 4px #c08040; } 50% { box-shadow: 0 0 16px #ffd060; } 100% { box-shadow: 0 0 4px #c08040; } }
@keyframes bsg-glass { 0% { transform: rotate(0); } 40% { transform: rotate(3deg); } 80% { transform: rotate(-2deg); } 100% { transform: rotate(0); } }
@keyframes bsg-wine { 0% { transform: rotate(0) translateX(0); } 30% { transform: rotate(5deg) translateX(1px); } 70% { transform: rotate(-3deg) translateX(-1px); } 100% { transform: rotate(0) translateX(0); } }
@keyframes bsg-hand { 0% { transform: translateX(-20px) rotate(0); } 30% { transform: translateX(-5px) rotate(10deg); } 60% { transform: translateX(0) rotate(5deg); } 100% { transform: translateX(-20px) rotate(0); } }

.scn-belmont-portia-resolves { background: linear-gradient(180deg, #fce6c9 0%, #e8cfa0 50%, #d4b78a 100%), radial-gradient(ellipse at 30% 50%, #fff2c0 0%, transparent 70%); }
.scn-belmont-portia-resolves .portia { position:absolute; bottom:20%; left:35%; width:36px; height:90px; background: linear-gradient(180deg, #a07040 0%, #704020 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; animation: bsr-figure 8s ease-in-out infinite; }
.scn-belmont-portia-resolves .bow { position:absolute; bottom:55%; left:42%; width:40px; height:10px; border: 3px solid #8a6020; border-radius: 50% 50% 0 0; border-bottom: none; background: transparent; transform: rotate(-20deg); animation: bsr-bow 6s ease-in-out infinite 0.5s; }
.scn-belmont-portia-resolves .moon { position:absolute; top:15%; right:20%; width:30px; height:30px; border-radius: 50%; background: transparent; box-shadow: 5px -5px 0 4px #ffd060; animation: bsr-moon 7s ease-in-out infinite; }
.scn-belmont-portia-resolves .glow { position:absolute; top:10%; right:15%; width:50px; height:50px; border-radius: 50%; background: radial-gradient(circle, rgba(255,208,96,0.3) 0%, transparent 70%); animation: bsr-glow 7s ease-in-out infinite 0.3s; }
.scn-belmont-portia-resolves .column { position:absolute; bottom:0; left:10%; width:20px; height:80%; background: linear-gradient(180deg, #d4b78a 0%, #a07040 100%); border-radius: 5% 5% 0 0; }
.scn-belmont-portia-resolves .ground { position:absolute; bottom:0; left:0; right:0; height:18%; background: linear-gradient(180deg, #b08050 0%, #8a6020 100%); border-radius: 30% 30% 0 0; }
@keyframes bsr-figure { 0% { transform: translateY(0) rotate(0); } 30% { transform: translateY(-3px) rotate(1deg); } 70% { transform: translateY(1px) rotate(-1deg); } 100% { transform: translateY(0) rotate(0); } }
@keyframes bsr-bow { 0% { transform: rotate(-20deg); } 50% { transform: rotate(-15deg); } 100% { transform: rotate(-20deg); } }
@keyframes bsr-moon { 0% { opacity:0.7; } 50% { opacity:1; } 100% { opacity:0.7; } }
@keyframes bsr-glow { 0% { transform: scale(1); opacity:0.5; } 50% { transform: scale(1.2); opacity:0.8; } 100% { transform: scale(1); opacity:0.5; } }

.scn-belmont-morocco-announced { background: linear-gradient(180deg, #f4e1c1 0%, #d4a56a 40%), radial-gradient(circle at 70% 30%, #ffe8b0 0%, transparent 80%); }
.scn-belmont-morocco-announced .doorway-arch { position:absolute; top:0; left:35%; width:30%; height:100%; background: linear-gradient(180deg, #8b5e3c 0%, #5e3a1a 100%); border-radius: 0 0 40% 40% / 0 0 20% 20%; }
.scn-belmont-morocco-announced .portia { position:absolute; bottom:20%; left:50%; width:30px; height:70px; background: linear-gradient(180deg, #a07040 0%, #704020 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; animation: bsmor-portia 4s ease-in-out infinite; }
.scn-belmont-morocco-announced .servant { position:absolute; bottom:20%; left:20%; width:24px; height:50px; background: linear-gradient(180deg, #6a4a3a 0%, #2a1a0a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; animation: bsmor-servant 3s ease-in-out infinite 0.3s; }
.scn-belmont-morocco-announced .morocco { position:absolute; bottom:15%; left:40%; width:40px; height:85px; background: linear-gradient(180deg, #1a0a00 0%, #000 100%); border-radius: 50% 50% 30% 30% / 55% 55% 30% 30%; animation: bsmor-morocco 5s ease-in-out infinite; }
.scn-belmont-morocco-announced .turban { position:absolute; bottom:78%; left:37%; width:44px; height:18px; background: #e8d8b0; border-radius: 50% 50% 30% 30%; border: 2px solid #c08040; animation: bsmor-turban 3s ease-in-out infinite 0.1s; }
.scn-belmont-morocco-announced .shadow { position:absolute; bottom:0; left:0; right:0; height:18%; background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,0.2) 100%); }
.scn-belmont-morocco-announced .floor { position:absolute; bottom:0; left:0; right:0; height:14%; background: linear-gradient(180deg, #b08050 0%, #8a6020 100%); border-radius: 30% 30% 0 0; }
.scn-belmont-morocco-announced .chandelier { position:absolute; top:8%; left:45%; width:20px; height:40px; background: linear-gradient(180deg, #c08040 0%, #8a6020 100%); border-radius: 50% 50% 0 0; animation: bsmor-chandelier 6s ease-in-out infinite alternate; }
@keyframes bsmor-portia { 0% { transform: translateX(0) rotate(0); } 50% { transform: translateX(3px) rotate(2deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes bsmor-servant { 0% { transform: rotate(0) scale(1); } 30% { transform: rotate(3deg) scale(0.98); } 70% { transform: rotate(-2deg) scale(1.02); } 100% { transform: rotate(0) scale(1); } }
@keyframes bsmor-morocco { 0% { transform: translateX(20px) rotate(0); } 25% { transform: translateX(0) rotate(3deg); } 50% { transform: translateX(-5px) rotate(-2deg); } 75% { transform: translateX(10px) rotate(1deg); } 100% { transform: translateX(20px) rotate(0); } }
@keyframes bsmor-turban { 0% { transform: rotate(0); } 30% { transform: rotate(5deg); } 60% { transform: rotate(-3deg); } 100% { transform: rotate(0); } }
@keyframes bsmor-chandelier { 0% { transform: rotate(0); } 50% { transform: rotate(4deg) scaleY(1.05); } 100% { transform: rotate(0); } }

/* item-ring-quarrel – Tense, moonlit standoff */
.scn-item-ring-quarrel {
  background: linear-gradient(180deg, #0a0a18 0%, #14142e 40%, #1e1e3a 100%), radial-gradient(ellipse at 30% 20%, #3a4a6a 0%, transparent 60%);
  inset: 0; position: absolute; overflow: hidden;
}
.scn-item-ring-quarrel .moon-iq { position:absolute; top:5%; left:25%; width:60px; height:60px; background: radial-gradient(circle, #e0e8f0 0%, #8090b0 100%); border-radius:50%; box-shadow: 0 0 40px 20px rgba(128,144,176,.4); animation: iq-glow 6s ease-in-out infinite alternate; }
.scn-item-ring-quarrel .beam-iq { position:absolute; top:5%; left:25%; width:220px; height:100%; background: linear-gradient(180deg, rgba(200,210,230,.15) 0%, rgba(200,210,230,0) 80%); transform: skewX(-20deg) translateX(-40px); filter: blur(10px); animation: iq-flicker 8s ease-in-out infinite alternate; }
.scn-item-ring-quarrel .wall-left-iq { position:absolute; bottom:0; left:0; width:40%; height:80%; background: linear-gradient(180deg, #16162a 0%, #0a0a18 100%); border-radius: 0 15% 0 0; box-shadow: inset -10px 0 20px rgba(0,0,0,.5); }
.scn-item-ring-quarrel .wall-right-iq { position:absolute; bottom:0; right:0; width:40%; height:70%; background: linear-gradient(180deg, #121224 0%, #080812 100%); border-radius: 15% 0 0 0; box-shadow: inset 10px 0 20px rgba(0,0,0,.5); }
.scn-item-ring-quarrel .figure-accuser { position:absolute; bottom:10%; left:18%; width:40px; height:80px; background: linear-gradient(180deg, #0a0a1a 0%, #1a1a2e 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform: rotate(5deg); animation: iq-accuse 3.5s ease-in-out infinite; }
.scn-item-ring-quarrel .figure-guilty { position:absolute; bottom:10%; right:15%; width:45px; height:75px; background: linear-gradient(180deg, #0a0a1a 0%, #15152a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform: rotate(-15deg) scaleX(-1); animation: iq-guilty 4.2s ease-in-out infinite 0.5s; }
.scn-item-ring-quarrel .ring-iq { position:absolute; bottom:22%; left:50%; width:22px; height:22px; border: 4px solid #c0d0e0; border-radius: 50%; background: transparent; box-shadow: 0 0 30px 10px rgba(192,208,224,.6), inset 0 0 10px rgba(192,208,224,.3); animation: iq-ring-pulse 2s ease-in-out infinite alternate; }
.scn-item-ring-quarrel .dust-iq { position:absolute; top:10%; left:20%; width:100%; height:100%; background: radial-gradient(circle at 30% 40%, rgba(200,210,230,.08) 0%, transparent 60%); filter: blur(40px); animation: iq-drift 25s linear infinite; }
@keyframes iq-glow { 0% { opacity:.7; transform:scale(.95); } 50% { opacity:1; transform:scale(1.05); box-shadow: 0 0 60px 30px rgba(128,144,176,.5); } 100% { opacity:.8; transform:scale(.98); } }
@keyframes iq-flicker { 0% { opacity:.4; } 50% { opacity:.8; } 100% { opacity:.5; } }
@keyframes iq-accuse { 0% { transform: rotate(3deg) translateY(0); } 50% { transform: rotate(10deg) translateY(-4px); } 100% { transform: rotate(3deg) translateY(0); } }
@keyframes iq-guilty { 0% { transform: rotate(-15deg) scaleX(-1) translateY(0); } 50% { transform: rotate(-22deg) scaleX(-1) translateY(3px); } 100% { transform: rotate(-15deg) scaleX(-1) translateY(0); } }
@keyframes iq-ring-pulse { 0% { box-shadow: 0 0 20px 5px rgba(192,208,224,.4); transform: scale(.95); } 50% { box-shadow: 0 0 50px 20px rgba(192,208,224,.8); transform: scale(1.1); } 100% { box-shadow: 0 0 30px 10px rgba(192,208,224,.5); transform: scale(1); } }
@keyframes iq-drift { 0% { transform: translateX(0) translateY(0); } 50% { transform: translateX(30px) translateY(-20px); } 100% { transform: translateX(60px) translateY(0); } }

/* belmont-ring-quarrel – Tense, moonlit garden argument */
.scn-belmont-ring-quarrel {
  background: linear-gradient(180deg, #081420 0%, #0e1e30 40%, #1a2a40 100%), radial-gradient(ellipse at 50% 0%, #4a6a8a 0%, transparent 60%);
  inset: 0; position: absolute; overflow: hidden;
}
.scn-belmont-ring-quarrel .sky-bq { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #0e1e30 0%, transparent 100%); animation: bq-sky 12s ease-in-out infinite alternate; }
.scn-belmont-ring-quarrel .hills-bq { position:absolute; bottom:35%; left:0; right:0; height:15%; background: linear-gradient(180deg, #1a2a1a 0%, #0a1a0a 100%); border-radius: 60% 40% 0 0 / 80% 70% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,.4); animation: bq-hills 18s ease-in-out infinite alternate; }
.scn-belmont-ring-quarrel .ground-bq { position:absolute; bottom:0; left:-10%; right:-10%; height:40%; background: linear-gradient(180deg, #1a2a24 0%, #0a1612 100%); border-radius: 30% 30% 0 0 / 50% 50% 0 0; }
.scn-belmont-ring-quarrel .fountain-bq { position:absolute; bottom:30%; left:50%; width:60px; height:50px; transform: translateX(-50%); background: linear-gradient(180deg, #4a5a6a 0%, #2a3a4a 100%); border-radius: 40% 40% 10% 10%; box-shadow: 0 4px 10px rgba(0,0,0,.3); animation: bq-fountain 8s ease-in-out infinite; }
.scn-belmont-ring-quarrel .figure-portia-bq { position:absolute; bottom:15%; left:22%; width:35px; height:70px; background: linear-gradient(180deg, #c8b8a0 0%, #8a7a6a 100%); border-radius: 30% 30% 40% 40% / 50% 50% 50% 50%; transform: rotate(10deg); animation: bq-gesture 3.5s ease-in-out infinite; }
.scn-belmont-ring-quarrel .figure-nerissa-bq { position:absolute; bottom:16%; left:38%; width:30px; height:65px; background: linear-gradient(180deg, #b8a8a0 0%, #7a6a6a 100%); border-radius: 30% 30% 40% 40% / 50% 50% 50% 50%; transform: rotate(-5deg); animation: bq-hands 4s ease-in-out infinite 0.2s; }
.scn-belmont-ring-quarrel .figure-bassanio-bq { position:absolute; bottom:12%; right:20%; width:40px; height:80px; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform: rotate(5deg) scaleX(-1); animation: bq-bow 5s ease-in-out infinite 0.5s; }
@keyframes bq-sky { 0% { opacity:.7; } 50% { opacity:1; } 100% { opacity:.8; } }
@keyframes bq-hills { 0% { transform: translateY(0); } 50% { transform: translateY(-3px); } 100% { transform: translateY(0); } }
@keyframes bq-fountain { 0%, 100% { transform: translateX(-50%) scaleY(1); } 50% { transform: translateX(-50%) scaleY(1.02); } }
@keyframes bq-gesture { 0% { transform: rotate(5deg) translateY(0); } 50% { transform: rotate(15deg) translateY(-5px); } 100% { transform: rotate(5deg) translateY(0); } }
@keyframes bq-hands { 0% { transform: rotate(-5deg) translateY(0); } 50% { transform: rotate(5deg) translateY(-3px); } 100% { transform: rotate(-5deg) translateY(0); } }
@keyframes bq-bow { 0% { transform: rotate(5deg) scaleX(-1); } 50% { transform: rotate(25deg) scaleX(-1) translateY(4px); } 100% { transform: rotate(5deg) scaleX(-1); } }

/* belmont-revelation – Warm, moonlit embrace and reveal */
.scn-belmont-revelation {
  background: linear-gradient(180deg, #1a1828 0%, #2a2038 50%, #3a2848 100%), radial-gradient(ellipse at 70% 20%, #d48c4a 0%, transparent 50%), radial-gradient(ellipse at 30% 80%, #c77d5a 0%, transparent 40%);
  inset: 0; position: absolute; overflow: hidden;
}
.scn-belmont-revelation .balcony-br { position:absolute; bottom:0; left:0; right:0; height:60%; background: linear-gradient(180deg, #3a2a2a 0%, #1a1010 100%); border-radius: 30% 30% 0 0 / 60% 60% 0 0; box-shadow: inset 0 20px 40px rgba(0,0,0,.5); }
.scn-belmont-revelation .warm-light-br { position:absolute; top:10%; right:15%; width:200px; height:200px; background: radial-gradient(circle, #f2c779 0%, rgba(242,199,121,.25) 40%, transparent 70%); filter: blur(25px); animation: br-warm-glow 4s ease-in-out infinite alternate; }
.scn-belmont-revelation .figure-bassanio-br { position:absolute; bottom:20%; left:22%; width:45px; height:90px; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform: rotate(10deg); animation: br-reach 5s ease-in-out infinite; }
.scn-belmont-revelation .figure-portia-br { position:absolute; bottom:18%; right:25%; width:40px; height:85px; background: linear-gradient(180deg, #c8b8a0 0%, #8a7a6a 100%); border-radius: 30% 30% 40% 40% / 50% 50% 50% 50%; transform: rotate(-10deg) scaleX(-1); animation: br-reveal 6s ease-in-out infinite 0.5s; }
.scn-belmont-revelation .ring-br { position:absolute; bottom:40%; left:50%; width:18px; height:18px; border: 3px solid #f2c779; border-radius: 50%; background: transparent; box-shadow: 0 0 40px 15px rgba(242,199,121,.7), inset 0 0 10px rgba(242,199,121,.4); animation: br-ring 3s ease-in-out infinite alternate; }
.scn-belmont-revelation .veil-br { position:absolute; bottom:25%; right:30%; width:60px; height:70px; background: linear-gradient(180deg, rgba(200,180,200,.35) 0%, rgba(200,180,200,.05) 100%); border-radius: 40% 60% 50% 50% / 60% 40% 60% 40%; filter: blur(5px); animation: br-veil 7s ease-in-out infinite; }
.scn-belmont-revelation .petals-br { position:absolute; top:-10%; left:0; width:15px; height:15px; background: radial-gradient(circle, #c77d5a 0%, transparent 70%); border-radius: 50%; filter: blur(3px); box-shadow: 25px 40px 0 #c77d5a, 55px 100px 0 #c77d5a, 85px 160px 0 #c77d5a, 115px 220px 0 #c77d5a; animation: br-petals 18s linear infinite; }
@keyframes br-warm-glow { 0% { opacity:.6; transform:scale(.95); } 50% { opacity:1; transform:scale(1.1); } 100% { opacity:.7; transform:scale(1); } }
@keyframes br-reach { 0% { transform: rotate(5deg) translateY(0); } 50% { transform: rotate(15deg) translateY(-5px); } 100% { transform: rotate(5deg) translateY(0); } }
@keyframes br-reveal { 0% { transform: rotate(-10deg) scaleX(-1) translateY(0); } 50% { transform: rotate(-20deg) scaleX(-1) translateY(-8px); } 100% { transform: rotate(-10deg) scaleX(-1) translateY(0); } }
@keyframes br-ring { 0% { box-shadow: 0 0 20px 5px rgba(242,199,121,.5); transform: scale(.9); } 50% { box-shadow: 0 0 60px 25px rgba(242,199,121,.8); transform: scale(1.1); } 100% { box-shadow: 0 0 30px 10px rgba(242,199,121,.6); transform: scale(1); } }
@keyframes br-veil { 0%, 100% { transform: rotate(-5deg) translateY(0); opacity:.6; } 50% { transform: rotate(5deg) translateY(-10px); opacity:1; } }
@keyframes br-petals { 0% { transform: translateY(0) rotate(0deg); opacity:0; } 20% { opacity:1; } 80% { opacity:1; } 100% { transform: translateY(110vh) rotate(360deg); opacity:0; } }

/* item-letter-padua – Warm, moonlit bedchamber with letter */
.scn-item-letter-padua {
  background: linear-gradient(180deg, #0f0a14 0%, #1f1429 40%, #2a1a30 100%), radial-gradient(ellipse at 50% 100%, #4a2a3a 0%, transparent 60%);
  inset: 0; position: absolute; overflow: hidden;
}
.scn-item-letter-padua .window-ip { position:absolute; top:5%; left:50%; width:40%; height:45%; transform: translateX(-50%); background: linear-gradient(180deg, #1a2a3a 0%, #2a3a4a 100%); border: 6px solid #2a1a20; border-radius: 6px; box-shadow: inset 0 0 30px rgba(0,0,0,.6); overflow: hidden; }
.scn-item-letter-padua .moon-ip { position:absolute; top:8%; right:12%; width:40px; height:40px; background: radial-gradient(circle, #e0e8f0 0%, #8090b0 100%); border-radius:50%; box-shadow: 0 0 30px 15px rgba(128,144,176,.4); animation: ip-moon 8s ease-in-out infinite alternate; }
.scn-item-letter-padua .curtain-left-ip { position:absolute; top:0; left:0; width:12%; height:100%; background: linear-gradient(180deg, #4a2a2a 0%, #2a1010 100%); border-radius: 0 30% 30% 0; box-shadow: 6px 0 15px rgba(0,0,0,.6); animation: ip-curtain 6s ease-in-out infinite; }
.scn-item-letter-padua .curtain-right-ip { position:absolute; top:0; right:0; width:12%; height:100%; background: linear-gradient(180deg, #4a2a2a 0%, #2a1010 100%); border-radius: 30% 0 0 30%; box-shadow: -6px 0 15px rgba(0,0,0,.6); animation: ip-curtain 6s ease-in-out infinite 0.3s; }
.scn-item-letter-padua .bed-ip { position:absolute; bottom:8%; left:15%; width:70%; height:45%; background: linear-gradient(180deg, #5a3a2a 0%, #2a1a10 100%); border-radius: 40% 40% 10% 10% / 60% 60% 20% 20%; box-shadow: 0 15px 40px rgba(0,0,0,.6); }
.scn-item-letter-padua .figure-patient-ip { position:absolute; bottom:18%; left:30%; width:55px; height:45px; background: linear-gradient(180deg, #c8b8a0 0%, #8a7a6a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform: rotate(-8deg); animation: ip-rest 7s ease-in-out infinite; }
.scn-item-letter-padua .figure-doctor-ip { position:absolute; bottom:12%; right:18%; width:40px; height:85px; background: linear-gradient(180deg, #3a2a3a 0%, #1a101a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform: rotate(5deg); animation: ip-stand 5s ease-in-out infinite 0.4s; }
.scn-item-letter-padua .letter-ip { position:absolute; bottom:42%; right:28%; width:35px; height:45px; background: linear-gradient(180deg, #d2b48c 0%, #a08060 100%); border-radius: 3px; box-shadow: 0 6px 12px rgba(0,0,0,.4); transform: rotate(15deg); animation: ip-letter 5s ease-in-out infinite alternate; }
.scn-item-letter-padua .candle-ip { position:absolute; bottom:28%; left:22%; width:12px; height:24px; background: linear-gradient(180deg, #f2c779 0%, #d48c4a 100%); border-radius: 30% 30% 10% 10% / 40% 40% 20% 20%; box-shadow: 0 0 40px 20px rgba(242,199,121,.6); animation: ip-candle 2.5s ease-in-out infinite alternate; }
@keyframes ip-moon { 0% { opacity:.7; transform:scale(.95); } 50% { opacity:1; transform:scale(1.05); } 100% { opacity:.8; transform:scale(.98); } }
@keyframes ip-curtain { 0%, 100% { transform: scaleX(1); } 50% { transform: scaleX(1.05); } }
@keyframes ip-rest { 0%, 100% { transform: rotate(-8deg) translateY(0); } 50% { transform: rotate(-4deg) translateY(-3px); } }
@keyframes ip-stand { 0% { transform: rotate(3deg) translateY(0); } 50% { transform: rotate(8deg) translateY(-2px); } 100% { transform: rotate(3deg) translateY(0); } }
@keyframes ip-letter { 0% { transform: rotate(12deg) translateY(0); } 50% { transform: rotate(20deg) translateY(-5px); } 100% { transform: rotate(12deg) translateY(0); } }
@keyframes ip-candle { 0% { opacity:.7; transform: scaleY(.95); box-shadow: 0 0 30px 15px rgba(242,199,121,.5); } 50% { opacity:1; transform: scaleY(1.05); box-shadow: 0 0 50px 25px rgba(242,199,121,.7); } 100% { opacity:.8; transform: scaleY(1); box-shadow: 0 0 40px 20px rgba(242,199,121,.6); } }
/* end per-scene blocks */

/* auto-stub: parent tag-classes flagged by CSS audit */
.asw-cloud { position: absolute; pointer-events: none; }
.flower { position: absolute; pointer-events: none; }
.note { position: absolute; pointer-events: none; }
.scn { position: absolute; pointer-events: none; }
.torch { position: absolute; pointer-events: none; }

/* ============ tier A ============ */
/* per-scene blocks (EXP step_scenes) */
.scn-item-lead-casket {
  background: linear-gradient(180deg, #f8e8c0 0%, #ecd4a0 50%, #dcc090 100%),
              radial-gradient(ellipse at 50% 40%, #fff4e0 0%, transparent 70%);
}
.scn-item-lead-casket .bg-warm {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(180deg, #f0e0c0 0%, #e0c8a0 100%);
  animation: ilc-bg 30s ease-in-out infinite alternate;
}
.scn-item-lead-casket .table-alt {
  position: absolute; bottom: 15%; left: 20%; right: 20%; height: 15%;
  background: linear-gradient(180deg, #c8a870 0%, #a88850 100%);
  border-radius: 20% 20% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,.2);
  animation: ilc-table 20s ease-in-out infinite;
}
.scn-item-lead-casket .casket-gold {
  position: absolute; bottom: 18%; left: 30%; width: 18%; height: 12%;
  background: radial-gradient(circle at 40% 30%, #ffd700 0%, #b8860b 100%);
  border-radius: 12% 12% 6% 6%;
  box-shadow: 0 6px 12px rgba(0,0,0,.3), 0 0 20px rgba(255,215,0,.3);
  animation: ilc-gold 5s ease-in-out infinite alternate;
}
.scn-item-lead-casket .casket-silver {
  position: absolute; bottom: 18%; left: 46%; width: 16%; height: 10%;
  background: radial-gradient(circle at 40% 30%, #c0c0c0 0%, #808080 100%);
  border-radius: 12% 12% 6% 6%;
  box-shadow: 0 4px 8px rgba(0,0,0,.3);
  animation: ilc-silver 7s ease-in-out infinite alternate;
}
.scn-item-lead-casket .casket-lead {
  position: absolute; bottom: 18%; right: 30%; width: 18%; height: 14%;
  background: radial-gradient(circle at 40% 30%, #5a5a5a 0%, #2a2a2a 100%);
  border-radius: 14% 14% 8% 8%;
  box-shadow: 0 6px 14px rgba(0,0,0,.5);
  animation: ilc-lead 4s ease-in-out infinite alternate;
}
.scn-item-lead-casket .bassanio-fig {
  position: absolute; bottom: 16%; left: 15%; width: 22px; height: 48px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a0a 100%);
  border-radius: 40% 40% 45% 45% / 55% 55% 45% 45%;
  transform-origin: bottom center;
  animation: ilc-bassanio 8s ease-in-out infinite;
}
.scn-item-lead-casket .scroll {
  position: absolute; bottom: 22%; right: 20%; width: 8%; height: 3%;
  background: linear-gradient(90deg, #d4c080 0%, #f0e0a0 50%, #d4c080 100%);
  border-radius: 30%;
  transform-origin: center left;
  animation: ilc-scroll 12s ease-in-out infinite alternate;
}
@keyframes ilc-bg {
  0% { opacity: 0.9; }
  50% { opacity: 1; }
  100% { opacity: 0.9; }
}
@keyframes ilc-table {
  0% { transform: translateY(0); }
  50% { transform: translateY(-3px); }
  100% { transform: translateY(0); }
}
@keyframes ilc-gold {
  0% { opacity: 0.8; box-shadow: 0 0 15px rgba(255,215,0,.2); }
  50% { opacity: 1; box-shadow: 0 0 30px rgba(255,215,0,.5); }
  100% { opacity: 0.8; box-shadow: 0 0 15px rgba(255,215,0,.2); }
}
@keyframes ilc-silver {
  0% { opacity: 0.7; transform: scaleY(1); }
  50% { opacity: 0.9; transform: scaleY(1.05); }
  100% { opacity: 0.7; transform: scaleY(1); }
}
@keyframes ilc-lead {
  0% { opacity: 0.8; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.03) rotate(-2deg); }
  100% { opacity: 0.8; transform: scale(1); }
}
@keyframes ilc-bassanio {
  0% { transform: translateX(0) rotate(-2deg); }
  25% { transform: translateX(3px) rotate(1deg); }
  50% { transform: translateX(6px) rotate(-1deg); }
  75% { transform: translateX(9px) rotate(2deg); }
  100% { transform: translateX(12px) rotate(0); }
}
@keyframes ilc-scroll {
  0% { transform: rotate(-8deg); opacity: 0.5; }
  50% { transform: rotate(8deg); opacity: 0.8; }
  100% { transform: rotate(-8deg); opacity: 0.5; }
}

.scn-belmont-ring-quarrel {
  background: linear-gradient(180deg, #1a1a3e 0%, #2c2a5e 40%, #4a4878 100%), radial-gradient(ellipse at 50% 100%, #6a68a0 0%, transparent 70%);
}
.scn-belmont-ring-quarrel .night-sky {
  position:absolute; inset:0 0 40% 0;
  background: linear-gradient(180deg, #0c0c2a 0%, #1a1a4e 100%);
  animation: brq-sky 12s ease-in-out infinite alternate;
}
.scn-belmont-ring-quarrel .moon {
  position:absolute; top:8%; right:15%; width:60px; height:60px;
  background: radial-gradient(circle, #e8e8ff 0%, #c8c8e0 100%);
  border-radius:50%;
  box-shadow: 0 0 30px 10px #c8c8e0;
  animation: brq-moon 10s ease-in-out infinite alternate;
}
.scn-belmont-ring-quarrel .ring-a {
  position:absolute; bottom:35%; left:30%; width:30px; height:30px;
  border: 3px solid #d0b060;
  border-radius:50%;
  box-shadow: 0 0 10px 2px #d0b060;
  animation: brq-ring1 3s ease-in-out infinite;
}
.scn-belmont-ring-quarrel .ring-b {
  position:absolute; bottom:35%; right:30%; width:30px; height:30px;
  border: 3px solid #c0a050;
  border-radius:50%;
  box-shadow: 0 0 10px 2px #c0a050;
  animation: brq-ring2 3s ease-in-out infinite 0.5s;
}
.scn-belmont-ring-quarrel .figure-left {
  position:absolute; bottom:30%; left:20%; width:30px; height:70px;
  background: #1a1a2a;
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: brq-figL 2s ease-in-out infinite alternate;
}
.scn-belmont-ring-quarrel .figure-right {
  position:absolute; bottom:30%; right:20%; width:30px; height:70px;
  background: #2a2a3a;
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: brq-figR 2s ease-in-out infinite alternate 1s;
}
.scn-belmont-ring-quarrel .tree-branch {
  position:absolute; top:5%; left:5%; width:120px; height:10px;
  background: #3a2a1a;
  border-radius: 30% 80% 20% 40%;
  transform: rotate(-15deg);
  animation: brq-branch 7s ease-in-out infinite;
}
.scn-belmont-ring-quarrel .firefly {
  position:absolute; top:20%; left:50%; width:6px; height:6px;
  background: #ffdd66;
  border-radius:50%;
  box-shadow: 0 0 10px 3px #ffdd66;
  animation: brq-fly 4s ease-in-out infinite alternate;
}
@keyframes brq-sky { 0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.7; } }
@keyframes brq-moon { 0% { transform: translateX(0) scale(1); } 50% { transform: translateX(-14px) scale(1.05); } 100% { transform: translateX(10px) scale(0.95); } }
@keyframes brq-ring1 { 0%,100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-12px) rotate(180deg); } }
@keyframes brq-ring2 { 0%,100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-12px) rotate(-180deg); } }
@keyframes brq-figL { 0% { transform: translateX(0) rotate(0deg); } 100% { transform: translateX(8px) rotate(3deg); } }
@keyframes brq-figR { 0% { transform: translateX(0) rotate(0deg); } 100% { transform: translateX(-8px) rotate(-3deg); } }
@keyframes brq-branch { 0%,100% { transform: rotate(-15deg); } 50% { transform: rotate(-10deg); } }
@keyframes brq-fly { 0% { transform: translate(0, 0) scale(1); opacity:0.8; } 50% { transform: translate(24px, -10px) scale(1.2); opacity:1; } 100% { transform: translate(-10px, 6px) scale(0.8); opacity:0.6; } }

/* belmont-homecoming */
.scn-belmont-homecoming {
  background:
    linear-gradient(180deg, #0a0a2e 0%, #12124a 40%, #1a1a5e 100%),
    radial-gradient(ellipse at 50% 0%, #1a2a5e 0%, transparent 70%);
}
.scn-belmont-homecoming .sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #14145a 0%, transparent 100%);
  animation: bh-sky 14s ease-in-out infinite alternate;
}
.scn-belmont-homecoming .stars {
  position: absolute; top: 5%; left: 10%; width: 60%; height: 30%;
  background: radial-gradient(circle at 20% 30%, rgba(255,255,255,0.6) 1px, transparent 1px),
              radial-gradient(circle at 70% 60%, rgba(255,255,255,0.4) 1px, transparent 1px),
              radial-gradient(circle at 40% 80%, rgba(255,255,255,0.5) 1px, transparent 1px);
  background-size: 6px 6px;
  animation: bh-twinkle 6s ease-in-out infinite alternate;
}
.scn-belmont-homecoming .moon {
  position: absolute; top: 10%; right: 20%; width: 40px; height: 40px;
  background: radial-gradient(circle at 35% 35%, #c8d8ff 0%, #8898cc 70%);
  border-radius: 50%;
  box-shadow: 0 0 30px 10px rgba(136,152,204,0.3), 0 0 60px 20px rgba(136,152,204,0.1);
  animation: bh-moon 10s ease-in-out infinite alternate;
}
.scn-belmont-homecoming .hills {
  position: absolute; bottom: 30%; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #1a2a2a 0%, #0e1e1e 100%);
  border-radius: 60% 40% 0 0 / 80% 70% 0 0;
  box-shadow: inset 0 5px 15px rgba(0,0,0,0.5);
  animation: bh-hills 20s ease-in-out infinite alternate;
}
.scn-belmont-homecoming .house {
  position: absolute; bottom: 28%; left: 50%; width: 80px; height: 60px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 4% 4% 2% 2%;
  box-shadow: 0 8px 16px rgba(0,0,0,0.6);
  animation: bh-house 8s ease-in-out infinite;
}
.scn-belmont-homecoming .window {
  position: absolute; bottom: 35%; left: 50%; width: 16px; height: 20px;
  transform: translateX(-50%);
  background: radial-gradient(circle, #e8c870 0%, #b08030 70%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 0 0 20px 6px #c09040, 0 0 40px 12px rgba(192,144,64,0.3);
  animation: bh-glow 3s ease-in-out infinite alternate;
}
.scn-belmont-homecoming .figure {
  position: absolute; bottom: 26%; left: 38%; width: 16px; height: 30px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bh-walk 5s ease-in-out infinite;
}
.scn-belmont-homecoming .lantern {
  position: absolute; bottom: 31%; left: 37%; width: 5px; height: 5px;
  background: #ffd880;
  border-radius: 50%;
  box-shadow: 0 0 12px 3px rgba(255,216,128,0.7);
  animation: bh-swing 4s ease-in-out infinite;
}
.scn-belmont-homecoming .cloud {
  position: absolute; top: 15%; left: 10%; width: 70px; height: 15px;
  background: linear-gradient(180deg, rgba(255,255,255,0.3) 0%, rgba(255,255,255,0.05) 100%);
  border-radius: 50%;
  filter: blur(5px);
  animation: bh-drift 40s linear infinite;
}
@keyframes bh-sky {
  0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.75; }
}
@keyframes bh-twinkle {
  0% { opacity: 0.5; } 50% { opacity: 1; } 100% { opacity: 0.6; }
}
@keyframes bh-moon {
  0% { transform: translateY(0); } 50% { transform: translateY(-3px) scale(1.02); } 100% { transform: translateY(2px); }
}
@keyframes bh-hills {
  0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); }
}
@keyframes bh-house {
  0%, 100% { transform: translateX(-50%); } 50% { transform: translateX(-50%) translateY(-2px); }
}
@keyframes bh-glow {
  0% { box-shadow: 0 0 15px 3px #c09040, 0 0 30px 6px rgba(192,144,64,0.2); opacity: 0.85; }
  50% { box-shadow: 0 0 25px 8px #ffd060, 0 0 50px 16px rgba(255,208,96,0.4); opacity: 1; }
  100% { box-shadow: 0 0 18px 4px #c09040, 0 0 36px 8px rgba(192,144,64,0.25); opacity: 0.9; }
}
@keyframes bh-walk {
  0% { transform: translateX(0) translateY(0) rotate(-1deg); }
  25% { transform: translateX(5px) translateY(-1px) rotate(0.5deg); }
  50% { transform: translateX(10px) translateY(0) rotate(-0.5deg); }
  75% { transform: translateX(15px) translateY(-1px) rotate(0.5deg); }
  100% { transform: translateX(20px) translateY(0) rotate(0deg); }
}
@keyframes bh-swing {
  0%, 100% { transform: translate(0,0) rotate(-4deg); } 50% { transform: translate(2px,-1px) rotate(4deg); }
}
@keyframes bh-drift {
  0% { transform: translateX(-40px); } 100% { transform: translateX(110vw); }
}

/* belmont-ring-quarrel */
.scn-belmont-ring-quarrel {
  background:
    linear-gradient(180deg, #07071a 0%, #101030 40%, #181845 100%),
    radial-gradient(ellipse at 50% 100%, #252560 0%, transparent 80%);
}
.scn-belmont-ring-quarrel .bg-deep {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, #0a0a25 0%, transparent 50%);
  animation: bq-deep 8s ease-in-out infinite alternate;
}
.scn-belmont-ring-quarrel .moonrise {
  position: absolute; top: 8%; left: 50%; width: 36px; height: 36px;
  transform: translateX(-50%);
  background: radial-gradient(circle at 30% 30%, #b0c8e8 0%, #7088b0 70%);
  border-radius: 50%;
  box-shadow: 0 0 40px 12px rgba(112,136,176,0.3);
  animation: bq-moon 6s ease-in-out infinite alternate;
}
.scn-belmont-ring-quarrel .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #1a1a30 0%, #0a0a1a 100%);
  clip-path: polygon(0% 30%, 15% 20%, 30% 40%, 45% 15%, 60% 35%, 75% 10%, 100% 25%, 100% 100%, 0% 100%);
  animation: bq-ground 5s ease-in-out infinite alternate;
}
.scn-belmont-ring-quarrel .figure-a {
  position: absolute; bottom: 20%; left: 30%; width: 18px; height: 36px;
  background: linear-gradient(180deg, #0e0e1e 0%, #040410 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bq-figure-a 3s ease-in-out infinite alternate;
}
.scn-belmont-ring-quarrel .figure-b {
  position: absolute; bottom: 20%; left: 55%; width: 18px; height: 36px;
  background: linear-gradient(180deg, #12122a 0%, #060618 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bq-figure-b 3.5s ease-in-out infinite alternate;
}
.scn-belmont-ring-quarrel .ring {
  position: absolute; bottom: 35%; left: 48%; width: 10px; height: 10px;
  background: radial-gradient(circle at 40% 40%, #e0d0a0 0%, #a08050 80%);
  border-radius: 50%;
  box-shadow: 0 0 10px 3px rgba(160,128,80,0.5);
  animation: bq-ring 4s ease-in-out infinite;
}
.scn-belmont-ring-quarrel .shadow-stripe {
  position: absolute; bottom: 15%; left: 0; right: 0; height: 4px;
  background: linear-gradient(90deg, transparent 0%, #1a1a3e 50%, transparent 100%);
  filter: blur(2px);
  animation: bq-stripe 7s ease-in-out infinite alternate;
}
@keyframes bq-deep {
  0% { opacity: 0.7; } 50% { opacity: 1; } 100% { opacity: 0.8; }
}
@keyframes bq-moon {
  0% { transform: translateX(-50%) translateY(0); } 50% { transform: translateX(-50%) translateY(-2px) scale(1.03); } 100% { transform: translateX(-50%) translateY(1px); }
}
@keyframes bq-ground {
  0% { transform: translateY(0) scaleY(1); } 50% { transform: translateY(2px) scaleY(0.97); } 100% { transform: translateY(0) scaleY(1); }
}
@keyframes bq-figure-a {
  0% { transform: translateX(0) rotate(2deg); } 50% { transform: translateX(-2px) rotate(-2deg); } 100% { transform: translateX(0) rotate(2deg); }
}
@keyframes bq-figure-b {
  0% { transform: translateX(0) rotate(-2deg); } 50% { transform: translateX(2px) rotate(2deg); } 100% { transform: translateX(0) rotate(-2deg); }
}
@keyframes bq-ring {
  0% { transform: scale(1) rotate(0deg); } 50% { transform: scale(1.2) rotate(15deg); } 100% { transform: scale(1) rotate(0deg); }
}
@keyframes bq-stripe {
  0% { opacity: 0.3; } 50% { opacity: 0.7; } 100% { opacity: 0.4; }
}

/* belmont-ring-reveal */
.scn-belmont-ring-reveal {
  background:
    linear-gradient(180deg, #0c0c2a 0%, #1a1a4a 40%, #262660 100%),
    radial-gradient(ellipse at 50% 0%, #303070 0%, transparent 70%);
}
.scn-belmont-ring-reveal .bg-soft {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, #12123a 0%, transparent 60%);
  animation: br-soft 10s ease-in-out infinite alternate;
}
.scn-belmont-ring-reveal .moonlight {
  position: absolute; top: 5%; left: 50%; width: 50px; height: 50px;
  transform: translateX(-50%);
  background: radial-gradient(circle at 40% 40%, #c8d8ff 0%, #8898cc 50%, transparent 80%);
  border-radius: 50%;
  filter: blur(4px);
  box-shadow: 0 0 40px 15px rgba(136,152,204,0.2);
  animation: br-moonlight 8s ease-in-out infinite alternate;
}
.scn-belmont-ring-reveal .ground-soft {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #1a1a3e 0%, #0a0a1e 100%);
  border-radius: 70% 30% 0 0 / 50% 50% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.5);
  animation: br-ground 12s ease-in-out infinite alternate;
}
.scn-belmont-ring-reveal .figure-funny {
  position: absolute; bottom: 25%; left: 50%; width: 22px; height: 40px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: br-figure 2.5s ease-in-out infinite;
}
.scn-belmont-ring-reveal .ring-glow {
  position: absolute; bottom: 38%; left: 48%; width: 12px; height: 12px;
  background: radial-gradient(circle at 50% 50%, #e0d0a0 0%, #b08050 60%);
  border-radius: 50%;
  box-shadow: 0 0 20px 6px rgba(176,128,80,0.6);
  animation: br-ring 1.8s ease-in-out infinite alternate;
}
.scn-belmont-ring-reveal .sparkle-1 {
  position: absolute; bottom: 40%; left: 45%; width: 4px; height: 4px;
  background: #fff5d0;
  border-radius: 50%;
  box-shadow: 0 0 8px 2px rgba(255,245,208,0.6);
  animation: br-sparkle1 2s ease-in-out infinite;
}
.scn-belmont-ring-reveal .sparkle-2 {
  position: absolute; bottom: 42%; left: 52%; width: 3px; height: 3px;
  background: #fff5d0;
  border-radius: 50%;
  box-shadow: 0 0 6px 2px rgba(255,245,208,0.5);
  animation: br-sparkle2 2.3s ease-in-out infinite 0.6s;
}
.scn-belmont-ring-reveal .bounce-shadow {
  position: absolute; bottom: 22%; left: 50%; width: 18px; height: 4px;
  transform: translateX(-50%);
  background: radial-gradient(ellipse at 50% 50%, rgba(0,0,0,0.4) 0%, transparent 70%);
  border-radius: 50%;
  animation: br-shadow 2.5s ease-in-out infinite;
}
@keyframes br-soft {
  0% { opacity: 0.6; } 50% { opacity: 1; } 100% { opacity: 0.7; }
}
@keyframes br-moonlight {
  0% { transform: translateX(-50%) scale(1); } 50% { transform: translateX(-50%) scale(1.08); } 100% { transform: translateX(-50%) scale(0.95); }
}
@keyframes br-ground {
  0% { transform: translateY(0) scaleY(1); } 50% { transform: translateY(-3px) scaleY(0.97); } 100% { transform: translateY(2px) scaleY(1); }
}
@keyframes br-figure {
  0% { transform: translateX(-50%) translateY(0) rotate(0deg); }
  25% { transform: translateX(-45%) translateY(-4px) rotate(-5deg); }
  50% { transform: translateX(-50%) translateY(-6px) rotate(3deg); }
  75% { transform: translateX(-55%) translateY(-2px) rotate(-2deg); }
  100% { transform: translateX(-50%) translateY(0) rotate(0deg); }
}
@keyframes br-ring {
  0% { transform: scale(1) rotate(0deg); } 50% { transform: scale(1.4) rotate(20deg); } 100% { transform: scale(0.9) rotate(-10deg); }
}
@keyframes br-sparkle1 {
  0%, 100% { opacity: 0; transform: scale(0.5); } 50% { opacity: 1; transform: scale(1.5); }
}
@keyframes br-sparkle2 {
  0%, 100% { opacity: 0; transform: scale(0.5); } 50% { opacity: 1; transform: scale(1.5); }
}
@keyframes br-shadow {
  0%, 100% { transform: translateX(-50%) scaleX(1); } 50% { transform: translateX(-50%) scaleX(0.6); }
}

.scn-venice-street-portia-description {
  background:
    linear-gradient(180deg, #f7e9d7 0%, #e6d5b8 30%, #c9b896 70%, #a38d6f 100%),
    radial-gradient(ellipse at 80% 20%, #fff5e6 0%, transparent 60%);
}
.scn-venice-street-portia-description .sky {
  position: absolute; inset: 0 0 55% 0;
  background: linear-gradient(180deg, #b8d4e8 0%, #f0e0c0 100%);
  animation: vsp-sky 15s ease-in-out infinite alternate;
}
.scn-venice-street-portia-description .canal {
  position: absolute; bottom: 0; left: 0; right: 0; height: 55%;
  background: linear-gradient(180deg, #6b8e7a 0%, #3a5a4a 100%);
  animation: vsp-water 8s ease-in-out infinite alternate;
}
.scn-venice-street-portia-description .building.left {
  position: absolute; bottom: 50%; left: 5%; width: 35%; height: 60%;
  background: linear-gradient(180deg, #c2a882 0%, #a0855e 100%);
  border-radius: 4% 4% 0 0;
  box-shadow: inset -8px 0 20px rgba(0,0,0,0.15);
  transform: skewY(1deg);
}
.scn-venice-street-portia-description .building.right {
  position: absolute; bottom: 50%; right: 5%; width: 30%; height: 55%;
  background: linear-gradient(180deg, #d4b896 0%, #b89a74 100%);
  border-radius: 4% 4% 0 0;
  box-shadow: inset 8px 0 20px rgba(0,0,0,0.1);
  transform: skewY(-1deg);
}
.scn-venice-street-portia-description .bridge {
  position: absolute; bottom: 50%; left: 25%; width: 50%; height: 12%;
  background: radial-gradient(ellipse at 50% 30%, #c9b08a 0%, #8f7353 100%);
  border-radius: 30% 30% 0 0;
  box-shadow: 0 6px 12px rgba(0,0,0,0.3);
  transform: translateY(-10%);
}
.scn-venice-street-portia-description .figure {
  position: absolute; bottom: 45%; left: 48%; width: 14px; height: 40px;
  background: linear-gradient(180deg, #8c5c3a 0%, #5a3a22 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: vsp-walk 6s ease-in-out infinite;
}
.scn-venice-street-portia-description .window-glow {
  position: absolute; bottom: 70%; left: 18%; width: 20px; height: 28px;
  background: radial-gradient(circle, #ffdd99 0%, #e8a850 70%);
  border-radius: 8% 8% 12% 12%;
  box-shadow: 0 0 20px 8px rgba(232, 168, 80, 0.6), 0 0 40px 15px rgba(232, 168, 80, 0.3);
  animation: vsp-glow 4s ease-in-out infinite alternate;
}
.scn-venice-street-portia-description .gondola {
  position: absolute; bottom: 20%; left: 35%; width: 60px; height: 15px;
  background: linear-gradient(90deg, #2a1a0a 0%, #3a2a1a 40%, #2a1a0a 100%);
  border-radius: 30% 30% 40% 40%;
  animation: vsp-rock 7s ease-in-out infinite;
}
.scn-venice-street-portia-description .ripple {
  position: absolute; bottom: 22%; left: 30%; width: 80px; height: 6px;
  background: radial-gradient(ellipse, rgba(255,255,240,0.2) 0%, transparent 80%);
  filter: blur(2px);
  animation: vsp-ripple 5s ease-in-out infinite alternate;
}
@keyframes vsp-sky {
  0% { opacity: 0.85; }
  50% { opacity: 1; }
  100% { opacity: 0.9; }
}
@keyframes vsp-water {
  0% { background-position: 0% 0%; }
  50% { background-size: 100% 100%; }
  100% { background-position: 10% 0%; background-size: 100% 100%; }
}
@keyframes vsp-walk {
  0% { transform: translateX(0) translateY(0) rotate(0); }
  25% { transform: translateX(3px) translateY(-1px) rotate(2deg); }
  50% { transform: translateX(6px) translateY(0) rotate(0); }
  75% { transform: translateX(9px) translateY(-1px) rotate(-2deg); }
  100% { transform: translateX(12px) translateY(0) rotate(0); }
}
@keyframes vsp-glow {
  0% { box-shadow: 0 0 15px 6px #e8a850; opacity: 0.7; }
  100% { box-shadow: 0 0 35px 14px #ffd080; opacity: 1; }
}
@keyframes vsp-rock {
  0%,100% { transform: rotate(-2deg); }
  50% { transform: rotate(3deg); }
}
@keyframes vsp-ripple {
  0% { transform: scaleX(0.8); opacity: 0.3; }
  100% { transform: scaleX(1.4); opacity: 0.6; }
}

.scn-belmont-portia-complaint {
  background:
    linear-gradient(180deg, #f5e6d0 0%, #ebd5b8 40%, #dabe9c 100%),
    radial-gradient(ellipse at 30% 50%, #fff5e0 0%, transparent 60%);
}
.scn-belmont-portia-complaint .wall {
  position: absolute; inset: 0 0 20% 0;
  background: linear-gradient(180deg, #d4b896 0%, #c2a47e 100%);
  border-bottom: 6px solid #a88a66;
}
.scn-belmont-portia-complaint .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #a0855e 0%, #7a6340 100%);
  box-shadow: inset 0 12px 20px rgba(0,0,0,0.1);
}
.scn-belmont-portia-complaint .window {
  position: absolute; top: 10%; left: 10%; width: 30%; height: 50%;
  background: linear-gradient(180deg, #c8e0f0 0%, #a0c4e0 100%);
  border: 8px solid #8a704e;
  border-radius: 4% 4% 0 0;
  box-shadow: inset 0 0 40px rgba(255,255,200,0.3);
  animation: bpc-window 20s ease-in-out infinite alternate;
}
.scn-belmont-portia-complaint .couch {
  position: absolute; bottom: 15%; left: 50%; transform: translateX(-50%);
  width: 40%; height: 18%;
  background: linear-gradient(180deg, #a0806a 0%, #7a5f4a 100%);
  border-radius: 10% 10% 8% 8%;
  box-shadow: 0 8px 16px rgba(0,0,0,0.2);
}
.scn-belmont-portia-complaint .figure {
  position: absolute; bottom: 20%; left: 52%; transform: translateX(-50%);
  width: 20px; height: 45px;
  background: linear-gradient(180deg, #c8704a 0%, #a05530 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: bpc-sigh 6s ease-in-out infinite;
}
.scn-belmont-portia-complaint .pillow {
  position: absolute; bottom: 22%; left: 45%; width: 30px; height: 10px;
  background: #e0c8ae;
  border-radius: 50%;
  box-shadow: 0 2px 6px rgba(0,0,0,0.15);
  animation: bpc-pillow 7s ease-in-out infinite alternate;
}
.scn-belmont-portia-complaint .vase {
  position: absolute; bottom: 30%; right: 18%; width: 14px; height: 26px;
  background: linear-gradient(180deg, #5a7a6a 0%, #3a5a4a 100%);
  border-radius: 30% 30% 10% 10%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.2);
  animation: bpc-vase 12s ease-in-out infinite;
}
@keyframes bpc-window {
  0% { opacity: 0.6; filter: brightness(0.8); }
  100% { opacity: 1; filter: brightness(1.1); }
}
@keyframes bpc-sigh {
  0%,100% { transform: translateX(-50%) translateY(0) rotate(0); }
  50% { transform: translateX(-50%) translateY(-2px) rotate(3deg); }
}
@keyframes bpc-pillow {
  0% { transform: translateX(0) scaleY(1); }
  100% { transform: translateX(4px) scaleY(1.1); }
}
@keyframes bpc-vase {
  0% { transform: rotate(0); }
  50% { transform: rotate(4deg); }
  100% { transform: rotate(-2deg); }
}

.scn-belmont-portia-suitors {
  background:
    linear-gradient(180deg, #f7e9c0 0%, #f0d8a0 30%, #e2c488 70%, #d4a870 100%),
    radial-gradient(ellipse at 20% 80%, #fff8e0 0%, transparent 50%);
}
.scn-belmont-portia-suitors .wall {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(180deg, #d4a870 0%, #b8885a 100%);
  border-bottom: 4px solid #9a7040;
}
.scn-belmont-portia-suitors .stage {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(180deg, #c9a86a 0%, #a88850 100%);
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.1);
}
.scn-belmont-portia-suitors .figure-nerissa {
  position: absolute; bottom: 20%; left: 30%; width: 18px; height: 42px;
  background: linear-gradient(180deg, #886a4a 0%, #5a402a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: bps-nerissa 5s ease-in-out infinite;
}
.scn-belmont-portia-suitors .figure-portia {
  position: absolute; bottom: 22%; left: 55%; width: 20px; height: 44px;
  background: linear-gradient(180deg, #c8704a 0%, #a05530 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: bps-portia 4s ease-in-out infinite alternate;
}
.scn-belmont-portia-suitors .scroll {
  position: absolute; bottom: 30%; left: 42%; width: 40px; height: 12px;
  background: linear-gradient(180deg, #ede0c8 0%, #d4c4a8 100%);
  border-radius: 20%;
  transform: rotate(-10deg);
  box-shadow: 0 2px 6px rgba(0,0,0,0.2);
  animation: bps-scroll 3s ease-in-out infinite alternate;
}
.scn-belmont-portia-suitors .suitor-card {
  position: absolute; bottom: 28%; left: 10%; width: 24px; height: 34px;
  background: linear-gradient(180deg, #e0a070 0%, #c08050 100%);
  border-radius: 10% 10% 20% 20%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.2);
  animation: bps-card 6s ease-in-out infinite;
}
.scn-belmont-portia-suitors .suitor-card.second {
  left: 72%;
  background: linear-gradient(180deg, #a0b880 0%, #80a060 100%);
  animation-delay: -3s;
}
.scn-belmont-portia-suitors .confetti {
  position: absolute; top: 5%; left: 20%; width: 40px; height: 40px;
  background: radial-gradient(circle, #ffcc80 0%, transparent 60%);
  filter: blur(4px);
  animation: bps-confetti 10s linear infinite;
}
@keyframes bps-nerissa {
  0% { transform: translateX(0) rotate(0); }
  50% { transform: translateX(6px) rotate(5deg); }
  100% { transform: translateX(0) rotate(-5deg); }
}
@keyframes bps-portia {
  0% { transform: translateY(0) scaleY(1); }
  100% { transform: translateY(-2px) scaleY(1.05); }
}
@keyframes bps-scroll {
  0% { transform: rotate(-10deg) scaleX(1); }
  100% { transform: rotate(5deg) scaleX(1.1); }
}
@keyframes bps-card {
  0% { transform: translateY(0) rotate(0); }
  25% { transform: translateY(-4px) rotate(2deg); }
  50% { transform: translateY(0) rotate(0); }
  75% { transform: translateY(-4px) rotate(-2deg); }
  100% { transform: translateY(0) rotate(0); }
}
@keyframes bps-confetti {
  0% { transform: translateY(0) rotate(0); opacity: 0.7; }
  50% { transform: translateY(20px) rotate(180deg); opacity: 1; }
  100% { transform: translateY(40px) rotate(360deg); opacity: 0.3; }
}

.scn-belmont-portia-remembers-bassanio {
  background:
    linear-gradient(180deg, #f5e6d0 0%, #ebd5b8 40%, #dabe9c 100%),
    radial-gradient(ellipse at 70% 30%, #fff5e0 0%, transparent 60%);
}
.scn-belmont-portia-remembers-bassanio .walls {
  position: absolute; inset: 0 0 20% 0;
  background: linear-gradient(180deg, #d4b896 0%, #c2a47e 100%);
}
.scn-belmont-portia-remembers-bassanio .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #a0855e 0%, #7a6340 100%);
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.1);
}
.scn-belmont-portia-remembers-bassanio .window-arch {
  position: absolute; top: 8%; left: 35%; width: 30%; height: 55%;
  background: linear-gradient(180deg, #c8e0f0 0%, #a0c4e0 100%);
  border: 8px solid #8a704e;
  border-radius: 20% 20% 0 0;
  box-shadow: inset 0 0 40px rgba(255,255,200,0.2);
  animation: bpr-window 20s ease-in-out infinite alternate;
}
.scn-belmont-portia-remembers-bassanio .figure {
  position: absolute; bottom: 18%; left: 50%; transform: translateX(-50%);
  width: 20px; height: 48px;
  background: linear-gradient(180deg, #c8704a 0%, #a05530 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: bpr-figure 8s ease-in-out infinite;
}
.scn-belmont-portia-remembers-bassanio .veil {
  position: absolute; bottom: 38%; left: 48%; width: 24px; height: 18px;
  background: linear-gradient(180deg, rgba(232, 200, 180, 0.6) 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(3px);
  animation: bpr-veil 6s ease-in-out infinite alternate;
}
.scn-belmont-portia-remembers-bassanio .memory-glow {
  position: absolute; bottom: 30%; left: 40%; width: 50px; height: 50px;
  background: radial-gradient(circle, rgba(255, 220, 150, 0.4) 0%, transparent 70%);
  filter: blur(10px);
  animation: bpr-glow 9s ease-in-out infinite alternate;
}
.scn-belmont-portia-remembers-bassanio .petal {
  position: absolute; top: 12%; left: 20%; width: 6px; height: 6px;
  background: #e8a070;
  border-radius: 50%;
  filter: blur(1px);
  animation: bpr-petal 8s linear infinite;
}
.scn-belmont-portia-remembers-bassanio .petal.second {
  left: 70%;
  animation-delay: -4s;
}
@keyframes bpr-window {
  0% { opacity: 0.5; filter: brightness(0.7); }
  100% { opacity: 1; filter: brightness(1.0); }
}
@keyframes bpr-figure {
  0%,100% { transform: translateX(-50%) translateY(0) rotate(0); }
  50% { transform: translateX(-50%) translateY(-3px) rotate(2deg); }
}
@keyframes bpr-veil {
  0% { opacity: 0.3; transform: scale(0.9); }
  100% { opacity: 0.8; transform: scale(1.2); }
}
@keyframes bpr-glow {
  0% { opacity: 0.2; transform: scale(0.8); }
  100% { opacity: 0.5; transform: scale(1.3); }
}
@keyframes bpr-petal {
  0% { transform: translateY(0) rotate(0); opacity: 0.6; }
  50% { transform: translateY(20px) rotate(180deg); opacity: 0.3; }
  100% { transform: translateY(40px) rotate(360deg); opacity: 0; }
}

/* item-golden-casket */
.scn-item-golden-casket { background: radial-gradient(ellipse at 50% 40%, #b8860b 0%, #1a0e00 70%), linear-gradient(180deg, #2a1a05 0%, #0f0800 100%); }
.scn-item-golden-casket .bg-dark { position:absolute; inset:0; background: linear-gradient(180deg, transparent 30%, #0a0500 100%); }
.scn-item-golden-casket .casket { position:absolute; bottom:20%; left:50%; width:50%; height:35%; transform:translateX(-50%); background: linear-gradient(135deg, #d4a017 0%, #b8860b 50%, #8b6508 100%); border-radius: 8% 8% 4% 4%; box-shadow: inset 0 -8px 20px rgba(0,0,0,0.6), 0 10px 30px rgba(0,0,0,0.8); }
.scn-item-golden-casket .glow-gold { position:absolute; bottom:25%; left:50%; width:30%; height:20%; transform:translateX(-50%); background: radial-gradient(circle, rgba(255,215,0,0.4) 0%, transparent 70%); animation: s1-glow 3s ease-in-out infinite alternate; }
.scn-item-golden-casket .lid { position:absolute; bottom:48%; left:50%; width:40%; height:8%; transform:translateX(-50%); background: linear-gradient(180deg, #e6b422 0%, #b8860b 100%); border-radius: 50% 50% 10% 10%; box-shadow: inset 0 4px 8px rgba(255,215,0,0.3); transform-origin: bottom center; animation: s1-lid 4s ease-in-out infinite; }
.scn-item-golden-casket .worm { position:absolute; bottom:30%; left:45%; width:4%; height:2%; background: #3a2a1a; border-radius: 50%; box-shadow: 0 -4px 0 #2a1a0a; animation: s1-worm 2s ease-in-out infinite; }
.scn-item-golden-casket .gem { position:absolute; bottom:30%; left:55%; width:4%; height:4%; background: radial-gradient(circle, #702243 0%, #4a1520 100%); border-radius: 50%; box-shadow: 0 0 12px 2px rgba(112,34,67,0.6); animation: s1-gem 5s ease-in-out infinite alternate; }
.scn-item-golden-casket .shadow { position:absolute; bottom:18%; left:40%; width:20%; height:3%; background: rgba(0,0,0,0.5); border-radius: 50%; filter: blur(4px); animation: s1-shadow 4s ease-in-out infinite; }
@keyframes s1-glow { 0% { opacity:0.6; transform: translateX(-50%) scale(0.9); } 50% { opacity:1; transform: translateX(-50%) scale(1.1); } 100% { opacity:0.7; transform: translateX(-50%) scale(1); } }
@keyframes s1-lid { 0% { transform: translateX(-50%) rotate(0deg); } 25% { transform: translateX(-50%) rotate(5deg); } 50% { transform: translateX(-50%) rotate(-3deg); } 75% { transform: translateX(-50%) rotate(2deg); } 100% { transform: translateX(-50%) rotate(0deg); } }
@keyframes s1-worm { 0% { transform: translate(0,0) scaleX(1); } 25% { transform: translate(2px,-3px) scaleX(1.2); } 50% { transform: translate(-1px,0) scaleX(0.8); } 75% { transform: translate(1px,2px) scaleX(1); } 100% { transform: translate(0,0) scaleX(1); } }
@keyframes s1-gem { 0% { box-shadow: 0 0 8px 1px rgba(112,34,67,0.4); } 50% { box-shadow: 0 0 20px 6px rgba(112,34,67,0.8); } 100% { box-shadow: 0 0 12px 2px rgba(112,34,67,0.5); } }
@keyframes s1-shadow { 0% { transform: scaleX(1); opacity:0.5; } 50% { transform: scaleX(1.2); opacity:0.7; } 100% { transform: scaleX(0.9); opacity:0.4; } }

/* venice-street-shylock-outcry */
.scn-venice-street-shylock-outcry { background: linear-gradient(180deg, #87ceeb 0%, #4682b4 50%, #1e3a5f 100%), radial-gradient(ellipse at 70% 30%, #ffe4b5 0%, transparent 60%); }
.scn-venice-street-shylock-outcry .sky-bright { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #f0e68c 0%, #87ceeb 100%); }
.scn-venice-street-shylock-outcry .buildings { position:absolute; bottom:30%; left:0; right:0; height:40%; background: linear-gradient(90deg, #4a3a2a 0%, #5c4a3a 30%, #3a2a1a 60%, #6b5b4b 100%); border-radius: 0; box-shadow: inset 0 4px 8px rgba(0,0,0,0.3); }
.scn-venice-street-shylock-outcry .canal { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #1a3a5a 0%, #2a4a6a 100%); }
.scn-venice-street-shylock-outcry .gondola { position:absolute; bottom:12%; left:45%; width:20%; height:6%; background: linear-gradient(180deg, #2a1a0a 0%, #1a0a00 100%); border-radius: 0 0 50% 50%; transform-origin: center; animation: s2-gondola 6s ease-in-out infinite; }
.scn-venice-street-shylock-outcry .figure-shylock { position:absolute; bottom:32%; left:20%; width:6%; height:25%; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: s2-figure 3s ease-in-out infinite; }
.scn-venice-street-shylock-outcry .docks { position:absolute; bottom:28%; left:15%; width:30%; height:2%; background: #5c4a3a; border-radius: 2px; box-shadow: 0 -2px 4px rgba(0,0,0,0.4); }
.scn-venice-street-shylock-outcry .ripple { position:absolute; bottom:10%; left:30%; width:10%; height:1%; background: rgba(255,255,255,0.2); border-radius: 50%; filter: blur(2px); animation: s2-ripple 4s ease-in-out infinite alternate; }
.scn-venice-street-shylock-outcry .cloud-sun { position:absolute; top:10%; right:20%; width:12%; height:6%; background: linear-gradient(180deg, rgba(255,255,255,0.6) 0%, rgba(255,255,255,0.1) 100%); border-radius: 50%; filter: blur(4px); animation: s2-cloud 30s linear infinite ; }
@keyframes s2-gondola { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(2px) rotate(2deg); } 50% { transform: translateX(-1px) rotate(-2deg); } 75% { transform: translateX(1px) rotate(1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes s2-figure { 0% { transform: translateY(0) rotate(0deg); } 30% { transform: translateY(-4px) rotate(5deg); } 60% { transform: translateY(0) rotate(-5deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes s2-ripple { 0% { transform: scaleX(1); opacity:0.3; } 50% { transform: scaleX(1.5); opacity:0.8; } 100% { transform: scaleX(0.8); opacity:0.2; } }
@keyframes s2-cloud { 0% { transform: translateX(0); } 100% { transform: translateX(-80px); } }

/* belmont-casket-arragon-choice */
.scn-belmont-casket-arragon-choice { background: radial-gradient(ellipse at 50% 30%, #fffacd 0%, #f5deb3 60%, #deb887 100%), linear-gradient(180deg, #fafad2 0%, #e6cfa8 100%); }
.scn-belmont-casket-arragon-choice .bg-warm { position:absolute; inset:0; background: linear-gradient(180deg, transparent 40%, rgba(210,180,140,0.3) 100%); }
.scn-belmont-casket-arragon-choice .table { position:absolute; bottom:20%; left:10%; width:80%; height:25%; background: linear-gradient(180deg, #8b5a2b 0%, #5c3a1a 100%); border-radius: 4%; box-shadow: inset 0 -6px 12px rgba(0,0,0,0.4); }
.scn-belmont-casket-arragon-choice .casket-gold { position:absolute; bottom:35%; left:20%; width:12%; height:15%; background: linear-gradient(135deg, #d4a017 0%, #b8860b 100%); border-radius: 10% 10% 5% 5%; box-shadow: 0 4px 8px rgba(0,0,0,0.5); animation: s3-casket 8s ease-in-out infinite; }
.scn-belmont-casket-arragon-choice .casket-silver { position:absolute; bottom:35%; left:44%; width:12%; height:15%; background: linear-gradient(135deg, #c0c0c0 0%, #a9a9a9 100%); border-radius: 10% 10% 5% 5%; box-shadow: 0 4px 8px rgba(0,0,0,0.5); animation: s3-casket 8s ease-in-out infinite 2s; }
.scn-belmont-casket-arragon-choice .casket-lead { position:absolute; bottom:35%; left:68%; width:12%; height:15%; background: linear-gradient(135deg, #4a4a4a 0%, #2a2a2a 100%); border-radius: 10% 10% 5% 5%; box-shadow: 0 4px 8px rgba(0,0,0,0.5); animation: s3-casket 8s ease-in-out infinite 4s; }
.scn-belmont-casket-arragon-choice .figure-arragon { position:absolute; bottom:30%; left:50%; width:8%; height:40%; transform:translateX(-50%); background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: s3-figure 12s ease-in-out infinite alternate; }
.scn-belmont-casket-arragon-choice .light-beam { position:absolute; top:0; left:45%; width:10%; height:40%; background: linear-gradient(180deg, rgba(255,255,200,0.3) 0%, transparent 100%); animation: s3-beam 6s ease-in-out infinite alternate; }
@keyframes s3-casket { 0% { transform: translateY(0) scale(1); } 30% { transform: translateY(-4px) scale(1.05); } 70% { transform: translateY(0) scale(1); } 100% { transform: translateY(0) scale(1); } }
@keyframes s3-figure { 0% { transform: translateX(-50%) rotate(0deg); } 30% { transform: translateX(-50%) rotate(-2deg) translateY(2px); } 60% { transform: translateX(-50%) rotate(2deg) translateY(-2px); } 100% { transform: translateX(-50%) rotate(0deg); } }
@keyframes s3-beam { 0% { opacity:0.2; transform: scaleX(0.8); } 50% { opacity:0.8; transform: scaleX(1.2); } 100% { opacity:0.3; transform: scaleX(0.9); } }

/* item-silver-casket */
.scn-item-silver-casket { background: radial-gradient(ellipse at 50% 60%, #8a8a8a 0%, #1a1a1a 70%), linear-gradient(180deg, #2a2a2a 0%, #0f0f0f 100%); }
.scn-item-silver-casket .bg-interior { position:absolute; inset:0; background: linear-gradient(180deg, transparent 40%, rgba(0,0,0,0.6) 100%); }
.scn-item-silver-casket .casket-silver-open { position:absolute; bottom:25%; left:50%; width:40%; height:30%; transform:translateX(-50%); background: linear-gradient(135deg, #dcdcdc 0%, #a9a9a9 50%, #808080 100%); border-radius: 6% 6% 4% 4%; box-shadow: inset 0 -8px 16px rgba(0,0,0,0.5), 0 6px 12px rgba(0,0,0,0.7); }
.scn-item-silver-casket .opening-silver { position:absolute; bottom:35%; left:50%; width:20%; height:10%; transform:translateX(-50%); background: #2a2a2a; border-radius: 0; clip-path: inset(0 0 0 0); box-shadow: inset 0 3px 6px rgba(255,255,255,0.1); }
.scn-item-silver-casket .portrait-frame { position:absolute; bottom:38%; left:50%; width:12%; height:15%; transform:translateX(-50%); background: linear-gradient(180deg, #8b5a2b 0%, #5c3a1a 100%); border-radius: 10%; box-shadow: 0 0 10px 2px rgba(0,0,0,0.5); }
.scn-item-silver-casket .eye-blink { position:absolute; bottom:42%; left:50%; width:4%; height:3%; transform:translateX(-50%); background: radial-gradient(circle, #1a1a1a 30%, #f5f5f5 30%, #f5f5f5 60%, #1a1a1a 60%); border-radius: 50%; animation: s4-eye 4s ease-in-out infinite; }
.scn-item-silver-casket .sparkle { position:absolute; bottom:45%; left:48%; width:2%; height:2%; background: #fff; border-radius: 50%; box-shadow: 0 0 6px 2px rgba(255,255,255,0.8); animation: s4-sparkle 3s ease-in-out infinite alternate; }
.scn-item-silver-casket .shadow-silver { position:absolute; bottom:22%; left:35%; width:30%; height:3%; background: rgba(0,0,0,0.5); border-radius: 50%; filter: blur(5px); animation: s4-shadow 5s ease-in-out infinite; }
@keyframes s4-eye { 0% { transform: translateX(-50%) scaleY(1); } 20% { transform: translateX(-50%) scaleY(0.2); } 40% { transform: translateX(-50%) scaleY(1); } 100% { transform: translateX(-50%) scaleY(1); } }
@keyframes s4-sparkle { 0% { opacity:0.3; transform: scale(0.8); } 50% { opacity:1; transform: scale(1.3); } 100% { opacity:0.5; transform: scale(0.9); } }
@keyframes s4-shadow { 0% { transform: scaleX(1); opacity:0.5; } 50% { transform: scaleX(1.3); opacity:0.8; } 100% { transform: scaleX(0.9); opacity:0.4; } }

/* Scene 1: Venice Street - Shylock & Tubal */
.scn-venice-street-shylock-tubal {
  background: linear-gradient(180deg, #87CEEB 0%, #fddbaa 50%, #e6a15e 100%),
              radial-gradient(ellipse at 30% 70%, #ffe699 0%, transparent 60%);
}
.scn-venice-street-shylock-tubal .sky { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #87CEEB 0%, #b0d4e8 60%, transparent); animation: vsst-sky 20s ease-in-out infinite alternate; }
.scn-venice-street-shylock-tubal .canal { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, #6a8a9a 0%, #4a6a7a 100%); border-radius:0% 0% 30% 30%/0 0 100% 100%; animation: vsst-canal 12s ease-in-out infinite alternate; }
.scn-venice-street-shylock-tubal .bridge { position:absolute; bottom:30%; left:20%; right:20%; height:12%; background: linear-gradient(135deg, #b09070 0%, #8a6a4a 100%); border-radius:50% 50% 0 0; box-shadow: 0 -4px 8px rgba(0,0,0,.3); animation: vsst-bridge 9s ease-in-out infinite alternate; }
.scn-venice-street-shylock-tubal .building-l { position:absolute; bottom:25%; left:5%; width:30%; height:50%; background: linear-gradient(180deg, #d4b48c 0%, #b09070 100%); border-radius:4% 4% 0 0; box-shadow: inset -6px 0 10px rgba(0,0,0,.2); animation: vsst-build 14s ease-in-out infinite alternate; }
.scn-venice-street-shylock-tubal .building-r { position:absolute; bottom:25%; right:5%; width:30%; height:55%; background: linear-gradient(180deg, #c8a880 0%, #a08060 100%); border-radius:4% 4% 0 0; box-shadow: inset 6px 0 10px rgba(0,0,0,.2); animation: vsst-build 14s ease-in-out infinite alternate-reverse; }
.scn-venice-street-shylock-tubal .figure { position:absolute; bottom:28%; left:45%; width:16px; height:40px; background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: vsst-walk 6s ease-in-out infinite; }
.scn-venice-street-shylock-tubal .shadow { position:absolute; bottom:0%; left:42%; width:40px; height:8px; background: rgba(0,0,0,0.25); border-radius:50%; filter: blur(3px); animation: vsst-shadow 6s ease-in-out infinite; }
.scn-venice-street-shylock-tubal .window-glow { position:absolute; bottom:40%; left:12%; width:14px; height:18px; background: radial-gradient(circle, #ffd700 0%, #d4a000 70%); border-radius:4px; box-shadow: 0 0 20px 6px #ffc800, 0 0 40px 12px rgba(255,200,0,0.4); animation: vsst-glow 4s ease-in-out infinite alternate; }
@keyframes vsst-sky { 0% { opacity:0.7 } 50% { opacity:1 } 100% { opacity:0.8 } }
@keyframes vsst-canal { 0% { transform: translateY(0) scaleY(1) } 50% { transform: translateY(-4px) scaleY(0.95) } 100% { transform: translateY(0) scaleY(1) } }
@keyframes vsst-bridge { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes vsst-build { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.03) } 100% { transform: scaleY(1) } }
@keyframes vsst-walk { 0% { transform: translateX(0) rotate(-2deg) } 25% { transform: translateX(8px) rotate(2deg) } 50% { transform: translateX(16px) rotate(-2deg) } 75% { transform: translateX(24px) rotate(2deg) } 100% { transform: translateX(32px) rotate(0) } }
@keyframes vsst-shadow { 0%,100% { transform: translateX(0) scaleX(1) } 50% { transform: translateX(16px) scaleX(0.8) } }
@keyframes vsst-glow { 0% { opacity:0.6; box-shadow: 0 0 20px 6px #ffc800, 0 0 40px 12px rgba(255,200,0,0.4); } 100% { opacity:1; box-shadow: 0 0 30px 10px #ffd900, 0 0 60px 18px rgba(255,217,0,0.6); } }

/* Scene 2: Belmont - Bassanio choice */
.scn-belmont-bassanio-choice {
  background: linear-gradient(180deg, #f3e5ab 0%, #d4c090 40%, #b8a070 100%),
              radial-gradient(ellipse at 50% 20%, #fff5cc 0%, transparent 70%);
}
.scn-belmont-bassanio-choice .interior-bg { position:absolute; inset:0 0 35% 0; background: linear-gradient(180deg, #ecd9a0 0%, #c8b080 100%); border-radius:0 0 30% 30% / 0 0 50% 50%; }
.scn-belmont-bassanio-choice .floor { position:absolute; bottom:0; left:0; right:0; height:35%; background: linear-gradient(180deg, #8a7a60 0%, #6a5a40 100%); border-radius:20% 20% 0 0 / 40% 40% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,.2); animation: bmch-floor 16s ease-in-out infinite alternate; }
.scn-belmont-bassanio-choice .casket-gold { position:absolute; bottom:40%; left:22%; width:40px; height:30px; background: linear-gradient(135deg, #e6c35c 0%, #b8941a 100%); border-radius:8%; box-shadow: 0 4px 8px rgba(0,0,0,.3), inset 0 1px 0 #ffe680; transform: rotate(-5deg); animation: bmch-casket 5s ease-in-out infinite; }
.scn-belmont-bassanio-choice .casket-silver { position:absolute; bottom:38%; left:40%; width:42px; height:28px; background: linear-gradient(135deg, #c0c0c0 0%, #808080 100%); border-radius:8%; box-shadow: 0 4px 8px rgba(0,0,0,.3), inset 0 1px 0 #e0e0e0; transform: rotate(3deg); animation: bmch-casket 5s ease-in-out infinite 0.3s; }
.scn-belmont-bassanio-choice .casket-lead { position:absolute; bottom:42%; left:58%; width:44px; height:32px; background: linear-gradient(135deg, #5a5a5a 0%, #3a3a3a 100%); border-radius:8%; box-shadow: 0 4px 8px rgba(0,0,0,.3), inset 0 1px 0 #7a7a7a; transform: rotate(-2deg); animation: bmch-casket 5s ease-in-out infinite 0.6s; }
.scn-belmont-bassanio-choice .bassanio { position:absolute; bottom:12%; left:30%; width:20px; height:50px; background: linear-gradient(180deg, #2a1a0a 0%, #0a0500 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: bmch-bassanio 7s ease-in-out infinite; }
.scn-belmont-bassanio-choice .portia { position:absolute; bottom:15%; left:55%; width:18px; height:48px; background: linear-gradient(180deg, #4a3020 0%, #1a1008 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: bmch-portia 7s ease-in-out infinite 0.5s; }
.scn-belmont-bassanio-choice .window-light { position:absolute; top:10%; left:10%; width:60px; height:40px; background: radial-gradient(ellipse, rgba(255,255,200,0.6) 0%, transparent 100%); filter: blur(10px); animation: bmch-light 12s ease-in-out infinite alternate; }
@keyframes bmch-floor { 0% { opacity:0.9 } 50% { opacity:1 } 100% { opacity:0.95 } }
@keyframes bmch-casket { 0%,100% { transform: translateY(0) rotate(-5deg); } 50% { transform: translateY(-3px) rotate(-5deg); } }
@keyframes bmch-bassanio { 0% { transform: translateX(0) rotate(-1deg); } 25% { transform: translateX(4px) rotate(1deg); } 50% { transform: translateX(0) rotate(-1deg); } 75% { transform: translateX(-4px) rotate(1deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes bmch-portia { 0% { transform: translateX(0) rotate(0); } 25% { transform: translateX(-3px) rotate(-1deg); } 50% { transform: translateX(0) rotate(0); } 75% { transform: translateX(3px) rotate(1deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes bmch-light { 0% { opacity:0.5; transform: scale(0.9); } 50% { opacity:0.8; transform: scale(1.1); } 100% { opacity:0.6; transform: scale(1); } }

/* Scene 3: Item - Lead Casket */
.scn-item-lead-casket {
  background: linear-gradient(180deg, #2a1a0a 0%, #4a3020 40%, #6a4a30 100%),
              radial-gradient(circle at 50% 50%, #8a6a50 0%, transparent 70%);
}
.scn-item-lead-casket .dark-bg { position:absolute; inset:0; background: radial-gradient(ellipse at 50% 40%, #3a2010 0%, #0a0500 100%); animation: ilca-bg 18s ease-in-out infinite alternate; }
.scn-item-lead-casket .casket-open { position:absolute; bottom:30%; left:50%; width:90px; height:60px; transform:translateX(-50%); background: linear-gradient(135deg, #5a5a5a 0%, #2a2a2a 100%); border-radius:8% 8% 4% 4%; box-shadow: 0 8px 20px rgba(0,0,0,.6), inset 0 2px 0 #7a7a7a; animation: ilca-casket 5s ease-in-out infinite; }
.scn-item-lead-casket .portrait { position:absolute; bottom:42%; left:50%; width:50px; height:40px; transform:translateX(-50%); background: radial-gradient(circle, #f0d0a0 0%, #c09060 70%); border-radius:10%; box-shadow: 0 0 30px 10px #b08050, 0 0 60px 20px rgba(176,128,80,0.5); animation: ilca-portrait 4s ease-in-out infinite alternate; }
.scn-item-lead-casket .glow-inner { position:absolute; bottom:38%; left:50%; width:70px; height:50px; transform:translateX(-50%); background: radial-gradient(ellipse, rgba(255,220,180,0.4) 0%, transparent 100%); filter: blur(8px); animation: ilca-glow 3s ease-in-out infinite alternate; }
.scn-item-lead-casket .hands { position:absolute; bottom:15%; left:30%; width:60px; height:30px; background: linear-gradient(180deg, #8a6a50 0%, #6a4a30 100%); border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%; transform: rotate(10deg); animation: ilca-hands 7s ease-in-out infinite; }
.scn-item-lead-casket .sparkle { position:absolute; bottom:50%; left:48%; width:8px; height:8px; background: #fff5dd; border-radius:50%; box-shadow: 0 0 12px 4px #ffd080, 0 0 24px 8px rgba(255,208,128,0.4); animation: ilca-sparkle 2s ease-in-out infinite alternate; }
@keyframes ilca-bg { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.9 } }
@keyframes ilca-casket { 0%,100% { transform: translateX(-50%) translateY(0); } 50% { transform: translateX(-50%) translateY(-2px); } }
@keyframes ilca-portrait { 0% { transform: translateX(-50%) scale(0.95); opacity:0.8; } 50% { transform: translateX(-50%) scale(1.05); opacity:1; } 100% { transform: translateX(-50%) scale(0.95); opacity:0.9; } }
@keyframes ilca-glow { 0% { opacity:0.5; } 100% { opacity:0.9; } }
@keyframes ilca-hands { 0% { transform: rotate(8deg) translateY(0); } 25% { transform: rotate(12deg) translateY(-2px); } 50% { transform: rotate(8deg) translateY(0); } 75% { transform: rotate(12deg) translateY(-2px); } 100% { transform: rotate(8deg) translateY(0); } }
@keyframes ilca-sparkle { 0% { opacity:0.2; transform: scale(0.5); } 100% { opacity:1; transform: scale(1.2); } }

/* Scene 4: Belmont - Antonio letter */
.scn-belmont-antonio-letter {
  background: linear-gradient(180deg, #f0e0c0 0%, #e0c8a0 40%, #c8a880 100%),
              radial-gradient(ellipse at 60% 30%, #fff5dd 0%, transparent 60%);
}
.scn-belmont-antonio-letter .room-wall { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #e8d8b8 0%, #d0b890 100%); border-radius:0 0 20% 20% / 0 0 30% 30%; }
.scn-belmont-antonio-letter .table { position:absolute; bottom:10%; left:15%; right:15%; height:20%; background: linear-gradient(180deg, #8a7a60 0%, #6a5a40 100%); border-radius:30% 30% 10% 10% / 60% 60% 20% 20%; box-shadow: 0 4px 12px rgba(0,0,0,.2); animation: bant-table 15s ease-in-out infinite alternate; }
.scn-belmont-antonio-letter .letter { position:absolute; bottom:22%; left:48%; width:40px; height:30px; transform:translateX(-50%); background: linear-gradient(135deg, #f5eddd 0%, #d0c0a0 100%); border-radius:2px; box-shadow: 0 2px 6px rgba(0,0,0,.2), inset 0 1px 0 #fff; transform-origin: bottom center; animation: bant-letter 6s ease-in-out infinite; }
.scn-belmont-antonio-letter .lorenzo { position:absolute; bottom:5%; left:20%; width:16px; height:45px; background: linear-gradient(180deg, #2a1a0a 0%, #0a0500 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: bant-figure 8s ease-in-out infinite; }
.scn-belmont-antonio-letter .jessica { position:absolute; bottom:7%; left:35%; width:14px; height:42px; background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: bant-figure 8s ease-in-out infinite 0.4s; }
.scn-belmont-antonio-letter .salerio { position:absolute; bottom:5%; left:55%; width:16px; height:44px; background: linear-gradient(180deg, #2a1a0a 0%, #0a0500 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: bant-figure 8s ease-in-out infinite 0.8s; }
.scn-belmont-antonio-letter .window-beam { position:absolute; top:5%; left:10%; width:80px; height:60px; background: radial-gradient(ellipse, rgba(255,255,200,0.35) 0%, transparent 100%); filter: blur(15px); animation: bant-beam 20s ease-in-out infinite alternate; }
@keyframes bant-table { 0% { transform: scaleY(1); } 50% { transform: scaleY(0.97); } 100% { transform: scaleY(1); } }
@keyframes bant-letter { 0%,100% { transform: translateX(-50%) translateY(0) rotate(0deg); } 50% { transform: translateX(-50%) translateY(-2px) rotate(2deg); } }
@keyframes bant-figure { 0% { transform: translateX(0) rotate(0); } 25% { transform: translateX(3px) rotate(-1deg); } 50% { transform: translateX(0) rotate(0); } 75% { transform: translateX(-3px) rotate(1deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes bant-beam { 0% { opacity:0.3; transform: scale(0.8); } 50% { opacity:0.6; transform: scale(1.2); } 100% { opacity:0.4; transform: scale(1); } }

.scn-venice-court-begins {
  background: linear-gradient(180deg, #f5e6cc 0%, #dcc4a0 50%, #c2a67a 100%),
              radial-gradient(ellipse at 50% 100%, #e6d0b0 0%, transparent 70%);
}
.scn-venice-court-begins .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(180deg, #c2a67a 0%, #a8885a 100%);
  border-radius: 0 0 4% 4%;
}
.scn-venice-court-begins .arch-back {
  position: absolute; top: 8%; left: 50%; width: 70%; height: 55%;
  transform: translateX(-50%);
  background: linear-gradient(135deg, #e6d0b0 0%, #dcc4a0 60%, #c2a67a 100%);
  border-radius: 50% / 40% 40% 20% 20%;
  box-shadow: inset 0 0 30px rgba(0,0,0,0.15);
}
.scn-venice-court-begins .bench {
  position: absolute; bottom: 25%; left: 25%; width: 50%; height: 6%;
  background: linear-gradient(180deg, #8b6f4a 0%, #6a5030 100%);
  border-radius: 2px;
  box-shadow: 0 4px 8px rgba(0,0,0,0.3);
}
.scn-venice-court-begins .duke-throne {
  position: absolute; bottom: 32%; left: 48%; width: 12%; height: 18%;
  background: linear-gradient(180deg, #6a5030 0%, #4a3520 100%);
  border-radius: 30% 30% 10% 10%;
  transform: translateX(-50%);
  animation: vcb-throne 8s ease-in-out infinite;
}
@keyframes vcb-throne {
  0% { transform: translateX(-50%) rotate(0deg); }
  25% { transform: translateX(-48%) rotate(0.5deg); }
  50% { transform: translateX(-50%) rotate(0deg); }
  75% { transform: translateX(-52%) rotate(-0.5deg); }
  100% { transform: translateX(-50%) rotate(0deg); }
}
.scn-venice-court-begins .antonio-figure {
  position: absolute; bottom: 25%; left: 30%; width: 4%; height: 14%;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: vcb-antonio 6s ease-in-out infinite;
}
@keyframes vcb-antonio {
  0% { transform: translateY(0) scaleY(1); }
  50% { transform: translateY(-2px) scaleY(1.02); }
  100% { transform: translateY(0) scaleY(1); }
}
.scn-venice-court-begins .light-shaft {
  position: absolute; top: 0; left: 40%; width: 20%; height: 60%;
  background: linear-gradient(180deg, rgba(255,240,210,0.4) 0%, transparent 100%);
  animation: vcb-light 12s ease-in-out infinite alternate;
}
@keyframes vcb-light {
  0% { opacity: 0.3; filter: blur(4px); }
  50% { opacity: 0.7; filter: blur(2px); }
  100% { opacity: 0.4; filter: blur(4px); }
}
.scn-venice-court-begins .pillar-left {
  position: absolute; bottom: 0; left: 8%; width: 3%; height: 75%;
  background: linear-gradient(90deg, #c2a67a 0%, #dcc4a0 30%, #c2a67a 100%);
  border-radius: 2%;
}
.scn-venice-court-begins .pillar-right {
  position: absolute; bottom: 0; right: 8%; width: 3%; height: 75%;
  background: linear-gradient(90deg, #c2a67a 0%, #dcc4a0 30%, #c2a67a 100%);
  border-radius: 2%;
}

.scn-venice-court-portia-arrives {
  background: linear-gradient(180deg, #f5e6cc 0%, #dec6a5 50%, #c5a97e 100%),
              radial-gradient(ellipse at 50% 0%, #f2e0c0 0%, transparent 60%);
}
.scn-venice-court-portia-arrives .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 22%;
  background: linear-gradient(180deg, #c5a97e 0%, #a8855a 100%);
  border-radius: 0 0 4% 4%;
}
.scn-venice-court-portia-arrives .wall-back {
  position: absolute; top: 5%; left: 10%; width: 80%; height: 70%;
  background: linear-gradient(135deg, #dcc4a0 0%, #bfa67e 60%, #a88a60 100%);
  border-radius: 5%;
  box-shadow: inset 0 0 40px rgba(0,0,0,0.2);
}
.scn-venice-court-portia-arrives .judge-bench {
  position: absolute; bottom: 22%; left: 30%; width: 40%; height: 8%;
  background: linear-gradient(180deg, #7a5a3a 0%, #5a3a1a 100%);
  border-radius: 10px;
  box-shadow: 0 6px 12px rgba(0,0,0,0.3);
}
.scn-venice-court-portia-arrives .shylock-hand {
  position: absolute; bottom: 35%; left: 42%; width: 2%; height: 12%;
  background: linear-gradient(180deg, #d4a88a 0%, #a07050 100%);
  border-radius: 10% 10% 40% 40%;
  transform: rotate(15deg);
  animation: vcpa-knife 1.5s ease-in-out infinite;
  box-shadow: 0 0 10px rgba(255,180,120,0.5);
}
@keyframes vcpa-knife {
  0% { transform: rotate(10deg) translateY(0); }
  30% { transform: rotate(20deg) translateY(-4px); }
  50% { transform: rotate(15deg) translateY(-2px); }
  70% { transform: rotate(18deg) translateY(-5px); }
  100% { transform: rotate(10deg) translateY(0); }
}
.scn-venice-court-portia-arrives .portia-figure {
  position: absolute; bottom: 22%; right: 20%; width: 5%; height: 20%;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a10 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: vcpa-enter 7s ease-in-out infinite;
}
@keyframes vcpa-enter {
  0% { transform: translateX(0) scaleX(1); }
  25% { transform: translateX(-15px) scaleX(0.98); }
  50% { transform: translateX(-30px) scaleX(1); }
  75% { transform: translateX(-15px) scaleX(0.98); }
  100% { transform: translateX(0) scaleX(1); }
}
.scn-venice-court-portia-arrives .bassanio-figure {
  position: absolute; bottom: 22%; left: 20%; width: 4%; height: 18%;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: vcpa-bass 5s ease-in-out infinite alternate;
}
@keyframes vcpa-bass {
  0% { transform: translateY(0) rotate(-1deg); }
  50% { transform: translateY(-2px) rotate(1deg); }
  100% { transform: translateY(0) rotate(-1deg); }
}
.scn-venice-court-portia-arrives .knife-glint {
  position: absolute; bottom: 44%; left: 43%; width: 1%; height: 2%;
  background: radial-gradient(circle, #fff8e0 0%, #ffd080 50%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 20px 6px rgba(255,200,100,0.6);
  animation: vcpa-glint 1.5s ease-in-out infinite;
}
@keyframes vcpa-glint {
  0%,100% { opacity: 0.3; transform: scale(0.8); }
  25% { opacity: 1; transform: scale(1.2); }
  50% { opacity: 0.5; transform: scale(1); }
  75% { opacity: 0.8; transform: scale(1.1); }
}

.scn-venice-court-bond-plea {
  background: linear-gradient(180deg, #eddbc8 0%, #d4c2a8 50%, #baa288 100%),
              radial-gradient(ellipse at 50% 0%, #f2e0c0 0%, transparent 50%);
}
.scn-venice-court-bond-plea .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #baa288 0%, #9a8268 100%);
}
.scn-venice-court-bond-plea .wall {
  position: absolute; top: 0; left: 0; right: 0; bottom: 20%;
  background: linear-gradient(180deg, #d4c2a8 0%, #c2ae90 100%);
  border-radius: 0 0 5% 5%;
  box-shadow: inset 0 0 60px rgba(0,0,0,0.15);
}
.scn-venice-court-bond-plea .bond-document {
  position: absolute; bottom: 40%; left: 48%; width: 6%; height: 4%;
  background: linear-gradient(135deg, #f0e0c8 0%, #d0b898 100%);
  border-radius: 2px;
  box-shadow: 0 4px 8px rgba(0,0,0,0.3);
  animation: vcbp-doc 3s ease-in-out infinite;
  transform-origin: bottom center;
}
@keyframes vcbp-doc {
  0% { transform: translateX(-50%) rotate(0deg); }
  25% { transform: translateX(-50%) rotate(2deg); }
  50% { transform: translateX(-50%) rotate(0deg); }
  75% { transform: translateX(-50%) rotate(-2deg); }
  100% { transform: translateX(-50%) rotate(0deg); }
}
.scn-venice-court-bond-plea .shylock-arm {
  position: absolute; bottom: 40%; left: 35%; width: 3%; height: 15%;
  background: linear-gradient(180deg, #c88a6a 0%, #8a6040 100%);
  border-radius: 10% 10% 40% 40%;
  transform: rotate(20deg);
  transform-origin: bottom left;
  animation: vcbp-arm 2s ease-in-out infinite;
}
@keyframes vcbp-arm {
  0% { transform: rotate(15deg) translateX(0); }
  30% { transform: rotate(25deg) translateX(5px); }
  50% { transform: rotate(20deg) translateX(2px); }
  70% { transform: rotate(22deg) translateX(4px); }
  100% { transform: rotate(15deg) translateX(0); }
}
.scn-venice-court-bond-plea .antonio-figure {
  position: absolute; bottom: 20%; left: 25%; width: 5%; height: 16%;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: vcbp-antonio 6s ease-in-out infinite;
}
@keyframes vcbp-antonio {
  0% { transform: translateY(0); }
  50% { transform: translateY(-4px); }
  100% { transform: translateY(0); }
}
.scn-venice-court-bond-plea .duke-figure {
  position: absolute; bottom: 20%; right: 28%; width: 4%; height: 18%;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a10 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: vcbp-duke 8s ease-in-out infinite alternate;
}
@keyframes vcbp-duke {
  0% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-3px) rotate(1deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
.scn-venice-court-bond-plea .light-spot {
  position: absolute; top: 10%; left: 35%; width: 30%; height: 50%;
  background: radial-gradient(ellipse at 50% 0%, rgba(255,240,210,0.6) 0%, transparent 70%);
  animation: vcbp-spot 10s ease-in-out infinite alternate;
}
@keyframes vcbp-spot {
  0% { opacity: 0.4; transform: scaleY(0.9); }
  50% { opacity: 0.8; transform: scaleY(1); }
  100% { opacity: 0.5; transform: scaleY(0.95); }
}

.scn-venice-court-antonio-speaks {
  background: linear-gradient(180deg, #e8d8c0 0%, #d0bea0 50%, #b8a280 100%),
              radial-gradient(ellipse at 50% 0%, #f0e0c8 0%, transparent 60%);
}
.scn-venice-court-antonio-speaks .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 18%;
  background: linear-gradient(180deg, #b8a280 0%, #9a8268 100%);
  border-radius: 0 0 4% 4%;
}
.scn-venice-court-antonio-speaks .pillars {
  position: absolute; top: 0; left: 0; right: 0; bottom: 18%;
  background: repeating-linear-gradient(90deg, #c2ae90 0%, #c2ae90 3%, transparent 3%, transparent 5%);
  background-size: 20% 100%;
  opacity: 0.3;
}
.scn-venice-court-antonio-speaks .antonio-figure {
  position: absolute; bottom: 18%; left: 35%; width: 5%; height: 15%;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: vcas-antonio 9s ease-in-out infinite;
}
@keyframes vcas-antonio {
  0% { transform: translateY(0) rotate(0deg); }
  25% { transform: translateY(-1px) rotate(-0.5deg); }
  50% { transform: translateY(-3px) rotate(0deg); }
  75% { transform: translateY(-1px) rotate(0.5deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
.scn-venice-court-antonio-speaks .bassanio-figure {
  position: absolute; bottom: 18%; left: 50%; width: 4%; height: 14%;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a10 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: vcas-bass 7s ease-in-out infinite alternate;
}
@keyframes vcas-bass {
  0% { transform: translateX(0) rotate(0deg); }
  50% { transform: translateX(5px) rotate(2deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
.scn-venice-court-antonio-speaks .light-beam {
  position: absolute; top: 5%; left: 40%; width: 20%; height: 50%;
  background: linear-gradient(180deg, rgba(255,240,210,0.5) 0%, transparent 100%);
  clip-path: polygon(0 0, 100% 0, 80% 100%, 20% 100%);
  animation: vcas-beam 14s ease-in-out infinite alternate;
}
@keyframes vcas-beam {
  0% { opacity: 0.2; filter: blur(6px); }
  50% { opacity: 0.5; filter: blur(3px); }
  100% { opacity: 0.3; filter: blur(5px); }
}
.scn-venice-court-antonio-speaks .shadow-overlay {
  position: absolute; top: 0; left: 0; right: 0; bottom: 0;
  background: radial-gradient(ellipse at 35% 60%, transparent 40%, rgba(0,0,0,0.2) 100%);
  animation: vcas-shadow 20s ease-in-out infinite alternate;
}
@keyframes vcas-shadow {
  0% { opacity: 0.5; }
  50% { opacity: 0.7; }
  100% { opacity: 0.5; }
}

/* item-antonio-letter */
.scn-item-antonio-letter {
  background: 
    linear-gradient(180deg, #8c6a4e 0%, #b8956a 30%, #d4b48a 60%, #e8d0b0 100%),
    radial-gradient(ellipse at 50% 50%, #d4b48a 0%, #6a4a32 100%);
}
.scn-item-antonio-letter .bg-warm {
  position:absolute; inset:0;
  background: linear-gradient(135deg, #c4a87a 0%, #a08060 50%, #c4a87a 100%);
  animation: al-bg 8s ease-in-out infinite alternate;
}
.scn-item-antonio-letter .desk {
  position:absolute; bottom:10%; left:10%; right:10%; height:20%;
  background: linear-gradient(180deg, #7a5a3a 0%, #4a2a1a 100%);
  border-radius:4px; box-shadow: 0 4px 12px rgba(0,0,0,0.5);
}
.scn-item-antonio-letter .letter {
  position:absolute; bottom:22%; left:35%; width:120px; height:80px;
  background: linear-gradient(135deg, #f0e0c0 0%, #d4be9a 100%);
  border-radius:2px; transform:rotate(-5deg);
  box-shadow: 2px 2px 8px rgba(0,0,0,0.3);
  animation: al-letter 6s ease-in-out infinite;
}
.scn-item-antonio-letter .candle-glow {
  position:absolute; bottom:45%; left:55%; width:60px; height:60px;
  background: radial-gradient(circle, #ffdd88 0%, #ffaa40 30%, transparent 70%);
  border-radius:50%;
  animation: al-glow 2s ease-in-out infinite alternate;
}
.scn-item-antonio-letter .candle {
  position:absolute; bottom:33%; left:57%; width:8px; height:40px;
  background: linear-gradient(180deg, #f0e0c0 0%, #e0c080 100%);
  border-radius:4px;
  animation: al-candle 3s ease-in-out infinite;
}
.scn-item-antonio-letter .figure {
  position:absolute; bottom:12%; left:25%; width:50px; height:80px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: al-figure 4s ease-in-out infinite;
}
.scn-item-antonio-letter .shadow-flicker {
  position:absolute; bottom:10%; left:0; right:0; height:50%;
  background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,0.1) 100%);
  animation: al-shadow 3s ease-in-out infinite alternate;
}
.scn-item-antonio-letter .wall-panel {
  position:absolute; top:5%; left:5%; right:5%; height:30%;
  background: linear-gradient(90deg, #b8956a 0%, #d4b48a 50%, #b8956a 100%);
  border-radius:4px; opacity:0.3;
  animation: al-panel 12s linear infinite;
}
@keyframes al-bg { 0%{opacity:0.8} 50%{opacity:1} 100%{opacity:0.9} }
@keyframes al-letter { 0%{transform:rotate(-5deg) translateY(0)} 50%{transform:rotate(-4deg) translateY(-2px)} 100%{transform:rotate(-5deg) translateY(0)} }
@keyframes al-glow { 0%{opacity:0.7;transform:scale(1)} 50%{opacity:1;transform:scale(1.1)} 100%{opacity:0.8;transform:scale(0.95)} }
@keyframes al-candle { 0%{transform:translateY(0) rotate(-1deg)} 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 al-figure { 0%{transform:translateY(0) rotate(0deg)} 30%{transform:translateY(-2px) rotate(1deg)} 60%{transform:translateY(0) rotate(-1deg)} 100%{transform:translateY(0) rotate(0deg)} }
@keyframes al-shadow { 0%{opacity:0.5} 100%{opacity:0.3} }
@keyframes al-panel { 0%{background-position:0 0} 100%{background-position:200px 0} }

/* venice-street-antonio-arrested */
.scn-venice-street-antonio-arrested {
  background: 
    linear-gradient(180deg, #87ceeb 0%, #b0d4e8 40%, #f0e8d0 80%, #d4c8a0 100%),
    radial-gradient(ellipse at 50% 100%, #f0e8d0 0%, #b0d4e8 60%);
}
.scn-venice-street-antonio-arrested .sky {
  position:absolute; inset:0 0 40% 0;
  background: linear-gradient(180deg, #a0d0f0 0%, #c8e0f0 100%);
  animation: vs-sky 15s ease-in-out infinite alternate;
}
.scn-venice-street-antonio-arrested .buildings-left {
  position:absolute; bottom:20%; left:0; width:40%; height:60%;
  background: linear-gradient(180deg, #c8b090 0%, #a08060 100%);
  clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
  box-shadow: inset -8px 0 12px rgba(0,0,0,0.2);
  animation: vs-build 20s linear infinite;
}
.scn-venice-street-antonio-arrested .buildings-right {
  position:absolute; bottom:20%; right:0; width:45%; height:65%;
  background: linear-gradient(180deg, #d4c0a0 0%, #b09878 100%);
  clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
  box-shadow: inset 8px 0 12px rgba(0,0,0,0.2);
  animation: vs-build 25s linear infinite reverse;
}
.scn-venice-street-antonio-arrested .arch {
  position:absolute; bottom:15%; left:35%; width:30%; height:50%;
  background: linear-gradient(180deg, #e0d0b8 0%, #c8b090 100%);
  border-radius: 50% 50% 0 0;
  box-shadow: 0 -4px 8px rgba(0,0,0,0.2);
  animation: vs-arch 10s ease-in-out infinite;
}
.scn-venice-street-antonio-arrested .antonio {
  position:absolute; bottom:12%; left:40%; width:40px; height:70px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: vs-walk 6s ease-in-out infinite;
}
.scn-venice-street-antonio-arrested .gaoler {
  position:absolute; bottom:12%; left:55%; width:45px; height:75px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a10 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: vs-walk 6s ease-in-out infinite 0.3s;
}
.scn-venice-street-antonio-arrested .chain {
  position:absolute; bottom:20%; left:46%; width:30px; height:4px;
  background: linear-gradient(90deg, #806040 0%, #c0a080 50%, #806040 100%);
  border-radius:2px;
  animation: vs-chain 4s ease-in-out infinite;
}
.scn-venice-street-antonio-arrested .sunbeam {
  position:absolute; top:0; left:30%; width:40%; height:100%;
  background: linear-gradient(180deg, rgba(255,255,200,0.4) 0%, transparent 60%);
  animation: vs-sun 12s ease-in-out infinite alternate;
}
.scn-venice-street-antonio-arrested .dust {
  position:absolute; top:20%; left:20%; width:10px; height:10px;
  background: radial-gradient(circle, rgba(255,255,255,0.6) 0%, transparent 100%);
  border-radius:50%;
  animation: vs-dust 15s linear infinite;
}
@keyframes vs-sky { 0%{opacity:0.9} 100%{opacity:0.7} }
@keyframes vs-build { 0%{background-position:0 0} 100%{background-position:40px 0} }
@keyframes vs-arch { 0%{transform:scaleY(1)} 50%{transform:scaleY(1.02)} 100%{transform:scaleY(1)} }
@keyframes vs-walk { 0%{transform:translateY(0)} 25%{transform:translateY(-2px)} 50%{transform:translateY(0)} 75%{transform:translateY(-2px)} 100%{transform:translateY(0)} }
@keyframes vs-chain { 0%{transform:translateX(0) rotate(0deg)} 50%{transform:translateX(2px) rotate(3deg)} 100%{transform:translateX(0) rotate(0deg)} }
@keyframes vs-sun { 0%{opacity:0.6;transform:skewX(0deg)} 50%{opacity:1;transform:skewX(2deg)} 100%{opacity:0.7;transform:skewX(-1deg)} }
@keyframes vs-dust { 0%{transform:translateY(0) scale(1); opacity:0.8} 50%{transform:translateY(-30px) scale(0.5); opacity:0.3} 100%{transform:translateY(-60px) scale(0); opacity:0} }

/* belmont-portia-plans */
.scn-belmont-portia-plans {
  background: 
    linear-gradient(180deg, #f0e8d8 0%, #e0d0b8 50%, #c8b898 100%),
    radial-gradient(ellipse at 50% 30%, #fff8ec 0%, #e0d0b8 70%);
}
.scn-belmont-portia-plans .bg-light {
  position:absolute; inset:0;
  background: linear-gradient(180deg, #faf0e0 0%, #e8d8c0 100%);
  animation: bp-bg 10s ease-in-out infinite alternate;
}
.scn-belmont-portia-plans .window {
  position:absolute; top:5%; left:30%; width:40%; height:40%;
  background: linear-gradient(180deg, #b0d4e8 0%, #c8e0f0 100%);
  border: 4px solid #a08868;
  border-radius: 10% 10% 0 0;
  box-shadow: inset 0 0 20px rgba(255,255,200,0.3);
  animation: bp-window 8s ease-in-out infinite;
}
.scn-belmont-portia-plans .table {
  position:absolute; bottom:15%; left:20%; right:20%; height:15%;
  background: linear-gradient(180deg, #b09570 0%, #8a7050 100%);
  border-radius:8px; box-shadow: 0 4px 10px rgba(0,0,0,0.2);
}
.scn-belmont-portia-plans .scroll {
  position:absolute; bottom:28%; left:40%; width:80px; height:60px;
  background: linear-gradient(135deg, #f0e0c0 0%, #d4be9a 100%);
  border-radius:50% 50% 20% 20%; transform:rotate(-10deg);
  animation: bp-scroll 7s ease-in-out infinite;
}
.scn-belmont-portia-plans .portia {
  position:absolute; bottom:5%; left:40%; width:60px; height:90px;
  background: linear-gradient(180deg, #7a5a3a 0%, #4a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: bp-figure 6s ease-in-out infinite;
}
.scn-belmont-portia-plans .lamp {
  position:absolute; bottom:50%; left:70%; width:20px; height:30px;
  background: radial-gradient(circle, #ffdd88 0%, #e0b060 60%, transparent 100%);
  border-radius:50%;
  animation: bp-lamp 4s ease-in-out infinite alternate;
}
.scn-belmont-portia-plans .pillar-left {
  position:absolute; bottom:0; left:5%; width:6%; height:70%;
  background: linear-gradient(90deg, #d4c0a0 0%, #b09878 50%, #d4c0a0 100%);
  border-radius:4px;
  animation: bp-pillar 12s linear infinite;
}
.scn-belmont-portia-plans .pillar-right {
  position:absolute; bottom:0; right:5%; width:6%; height:70%;
  background: linear-gradient(90deg, #b09878 0%, #d4c0a0 50%, #b09878 100%);
  border-radius:4px;
  animation: bp-pillar 12s linear infinite reverse;
}
@keyframes bp-bg { 0%{opacity:0.9} 50%{opacity:1} 100%{opacity:0.95} }
@keyframes bp-window { 0%{opacity:0.7;transform:scaleY(1)} 50%{opacity:1;transform:scaleY(1.02)} 100%{opacity:0.8;transform:scaleY(1)} }
@keyframes bp-scroll { 0%{transform:rotate(-10deg) translateY(0)} 50%{transform:rotate(-8deg) translateY(-2px)} 100%{transform:rotate(-10deg) translateY(0)} }
@keyframes bp-figure { 0%{transform:translateY(0)} 25%{transform:translateY(-2px)} 50%{transform:translateY(0)} 75%{transform:translateY(-1px)} 100%{transform:translateY(0)} }
@keyframes bp-lamp { 0%{opacity:0.6;transform:scale(0.9)} 100%{opacity:1;transform:scale(1.1)} }
@keyframes bp-pillar { 0%{background-position:0 0} 100%{background-position:20px 0} }

/* belmont-garden-launcelot-jessica */
.scn-belmont-garden-launcelot-jessica {
  background: 
    linear-gradient(180deg, #88c088 0%, #a8d8a8 30%, #c8e8b8 60%, #e0f0d0 100%),
    radial-gradient(ellipse at 50% 80%, #c8e8b8 0%, #88c088 70%);
}
.scn-belmont-garden-launcelot-jessica .sky {
  position:absolute; inset:0 0 50% 0;
  background: linear-gradient(180deg, #80c0e8 0%, #b0d8f0 100%);
  animation: bj-sky 12s ease-in-out infinite alternate;
}
.scn-belmont-garden-launcelot-jessica .treeline {
  position:absolute; bottom:35%; left:0; right:0; height:30%;
  background: linear-gradient(180deg, #4a7a3a 0%, #3a5a2a 100%);
  border-radius: 60% 40% 0 0;
  animation: bj-trees 20s ease-in-out infinite;
}
.scn-belmont-garden-launcelot-jessica .bush-left {
  position:absolute; bottom:25%; left:10%; width:80px; height:50px;
  background: radial-gradient(ellipse at 50% 100%, #6a9a4a 0%, #4a7a2a 100%);
  border-radius: 50%;
  animation: bj-bush 15s linear infinite;
}
.scn-belmont-garden-launcelot-jessica .bush-right {
  position:absolute; bottom:20%; right:12%; width:70px; height:45px;
  background: radial-gradient(ellipse at 50% 100%, #5a8a3a 0%, #3a6a1a 100%);
  border-radius: 50%;
  animation: bj-bush 18s linear infinite reverse;
}
.scn-belmont-garden-launcelot-jessica .path {
  position:absolute; bottom:0; left:20%; right:20%; height:15%;
  background: linear-gradient(180deg, #c8b088 0%, #a09060 100%);
  border-radius: 20% 20% 0 0;
}
.scn-belmont-garden-launcelot-jessica .launcelot {
  position:absolute; bottom:12%; left:25%; width:40px; height:65px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a10 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bj-jump 2s ease-in-out infinite;
}
.scn-belmont-garden-launcelot-jessica .jessica {
  position:absolute; bottom:12%; left:55%; width:38px; height:60px;
  background: linear-gradient(180deg, #6a4a3a 0%, #3a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bj-jump 2.4s ease-in-out infinite 0.3s;
}
.scn-belmont-garden-launcelot-jessica .butterfly {
  position:absolute; top:20%; left:60%; width:16px; height:12px;
  background: radial-gradient(circle at 30% 50%, #ffaa40 0%, #ff6600 100%);
  border-radius: 50%;
  box-shadow: -10px 0 0 #ffaa40;
  animation: bj-butterfly 6s ease-in-out infinite;
}
.scn-belmont-garden-launcelot-jessica .sun-shimmer {
  position:absolute; top:10%; left:20%; width:60%; height:40%;
  background: linear-gradient(135deg, transparent 0%, rgba(255,255,200,0.3) 30%, transparent 60%);
  animation: bj-shimmer 8s ease-in-out infinite;
}
@keyframes bj-sky { 0%{opacity:0.9;transform:translateX(0)} 100%{opacity:0.7;transform:translateX(-5px)} }
@keyframes bj-trees { 0%{transform:translateY(0) scale(1)} 50%{transform:translateY(-3px) scale(1.02)} 100%{transform:translateY(0) scale(1)} }
@keyframes bj-bush { 0%{transform:translateX(0)} 50%{transform:translateX(5px)} 100%{transform:translateX(0)} }
@keyframes bj-jump { 0%{transform:translateY(0) rotate(0deg)} 25%{transform:translateY(-6px) rotate(3deg)} 50%{transform:translateY(0) rotate(0deg)} 75%{transform:translateY(-4px) rotate(-2deg)} 100%{transform:translateY(0) rotate(0deg)} }
@keyframes bj-butterfly { 0%{transform:translate(0,0) rotate(0deg)} 25%{transform:translate(10px,-15px) rotate(10deg)} 50%{transform:translate(20px,0) rotate(0deg)} 75%{transform:translate(10px,-10px) rotate(-10deg)} 100%{transform:translate(0,0) rotate(0deg)} }
@keyframes bj-shimmer { 0%{opacity:0.2;transform:translateX(0)} 50%{opacity:0.6;transform:translateX(10px)} 100%{opacity:0.3;transform:translateX(0)} }

/* ---------- venice-street-launcelot-meets-father (funny, sunlit) ---------- */
.scn-venice-street-launcelot-meets-father {
  background:
    linear-gradient(180deg, #b0d4f1 0%, #d0e8f8 30%, #f5e6c8 60%, #e4c48b 100%),
    radial-gradient(ellipse at 70% 40%, #fdf3d0 0%, transparent 60%);
}
.scn-venice-street-launcelot-meets-father .sky-sun { position:absolute; inset:0 0 55% 0; background: linear-gradient(180deg, #fef7e0 0%, #c3ddf5 100%); animation: vlf-sky 10s ease-in-out infinite alternate; }
.scn-venice-street-launcelot-meets-father .building-left { position:absolute; bottom:45%; left:0; width:35%; height:55%; background: linear-gradient(180deg, #c9a96e 0%, #a5824d 100%); border-radius: 0 10% 0 0; box-shadow: inset -8px 0 20px rgba(0,0,0,.15); }
.scn-venice-street-launcelot-meets-father .building-right { position:absolute; bottom:45%; right:0; width:40%; height:50%; background: linear-gradient(180deg, #b8925a 0%, #916e3a 100%); border-radius: 10% 0 0 0; box-shadow: inset 8px 0 20px rgba(0,0,0,.15); }
.scn-venice-street-launcelot-meets-father .street { position:absolute; bottom:0; left:0; right:0; height:45%; background: linear-gradient(180deg, #b89c6c 0%, #9a7f52 100%); border-radius: 0 0 40% 40% / 0 0 20% 20%; }
.scn-venice-street-launcelot-meets-father .figure-old-gobbo { position:absolute; bottom:26%; left:28%; width:32px; height:50px; background: linear-gradient(180deg, #6b5a44 0%, #3f3428 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: vlf-gobbo 3s ease-in-out infinite; }
.scn-venice-street-launcelot-meets-father .figure-launcelot { position:absolute; bottom:28%; left:55%; width:30px; height:52px; background: linear-gradient(180deg, #7a6d54 0%, #4a3d2c 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: vlf-launcelot 2.5s ease-in-out infinite; }
.scn-venice-street-launcelot-meets-father .basket { position:absolute; bottom:25%; left:38%; width:20px; height:16px; background: linear-gradient(135deg, #cba16a 0%, #8f6e3e 100%); border-radius: 30% 30% 40% 40%; box-shadow: 0 4px 6px rgba(0,0,0,.3); animation: vlf-basket 4s ease-in-out infinite; }
.scn-venice-street-launcelot-meets-father .pigeon-a { position:absolute; bottom:38%; left:10%; width:14px; height:10px; background: #68727a; border-radius: 50% 50% 40% 40%; animation: vlf-pigeon-a 8s linear infinite; }
.scn-venice-street-launcelot-meets-father .pigeon-b { position:absolute; bottom:40%; left:75%; width:12px; height:9px; background: #758086; border-radius: 50% 50% 40% 40%; animation: vlf-pigeon-b 9s linear infinite; animation-delay: -3s; }

@keyframes vlf-sky { 0% { opacity: .85; } 50% { opacity: 1; } 100% { opacity: .9; } }
@keyframes vlf-gobbo { 0% { transform: translateX(0) translateY(0) rotate(-2deg); } 25% { transform: translateX(3px) translateY(-1px) 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 vlf-launcelot { 0% { transform: translateX(0) translateY(0) rotate(0deg); } 33% { transform: translateX(-4px) translateY(-2px) rotate(3deg); } 66% { transform: translateX(2px) translateY(-1px) rotate(-2deg); } 100% { transform: translateX(0) translateY(0) rotate(0deg); } }
@keyframes vlf-basket { 0% { transform: translateY(0) rotate(-5deg); } 50% { transform: translateY(-3px) rotate(5deg); } 100% { transform: translateY(0) rotate(-5deg); } }
@keyframes vlf-pigeon-a { 0% { transform: translateX(-30px) translateY(0); } 100% { transform: translateX(120vw) translateY(-5px); } }
@keyframes vlf-pigeon-b { 0% { transform: translateX(80vw) translateY(0); } 100% { transform: translateX(-30px) translateY(3px); } }

/* ---------- venice-street-bassanio-hires-launcelot (calm, sunlit) ---------- */
.scn-venice-street-bassanio-hires-launcelot {
  background:
    linear-gradient(180deg, #cddcf0 0%, #e3e9b0 40%, #d4c68a 70%, #b6a06a 100%),
    radial-gradient(ellipse at 60% 30%, #fdf6d8 0%, transparent 50%);
}
.scn-venice-street-bassanio-hires-launcelot .sky-sun-bh { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #feeec8 0%, #b7d3e8 100%); animation: vbh-sky 12s ease-in-out infinite alternate; }
.scn-venice-street-bassanio-hires-launcelot .archway-bh { position:absolute; bottom:30%; left:20%; width:60%; height:50%; background: linear-gradient(180deg, #ccb78a 0%, #a0885a 100%); border-radius: 40% 40% 0 0 / 100% 100% 0 0; box-shadow: inset 0 -10px 20px rgba(0,0,0,.2); }
.scn-venice-street-bassanio-hires-launcelot .post-bh { position:absolute; bottom:30%; left:45%; width:8px; height:45%; background: linear-gradient(180deg, #8a6c3e 0%, #5e4928 100%); transform: translateX(-50%); border-radius: 2px; }
.scn-venice-street-bassanio-hires-launcelot .figure-bassanio { position:absolute; bottom:22%; left:35%; width:34px; height:58px; background: linear-gradient(180deg, #ae9a7a 0%, #7b664a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: vbh-bassanio 4s ease-in-out infinite; }
.scn-venice-street-bassanio-hires-launcelot .figure-launcelot-bh { position:absolute; bottom:24%; left:52%; width:30px; height:54px; background: linear-gradient(180deg, #99876a 0%, #68543a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: vbh-launcelot 3.5s ease-in-out infinite; }
.scn-venice-street-bassanio-hires-launcelot .coin { position:absolute; bottom:28%; left:42%; width:12px; height:12px; background: radial-gradient(circle, #f7d45a 0%, #c49b30 100%); border-radius: 50%; box-shadow: 0 2px 4px rgba(0,0,0,.3); animation: vbh-coin 2s ease-in-out infinite; }
.scn-venice-street-bassanio-hires-launcelot .sign { position:absolute; bottom:48%; left:38%; width:40px; height:20px; background: linear-gradient(135deg, #7a6b4a 0%, #59492e 100%); border-radius: 10%; transform-origin: top center; animation: vbh-sign 6s ease-in-out infinite; }
.scn-venice-street-bassanio-hires-launcelot .cobbles { position:absolute; bottom:0; left:0; right:0; height:22%; background: repeating-linear-gradient(45deg, #a89472 0px, #a89472 6px, #b8a582 6px, #b8a582 12px); border-radius: 20% 20% 0 0; opacity: .3; }

@keyframes vbh-sky { 0% { opacity: .9; } 50% { opacity: 1; } 100% { opacity: .85; } }
@keyframes vbh-bassanio { 0% { transform: translateX(0) translateY(0) rotate(0deg); } 50% { transform: translateX(2px) translateY(-2px) rotate(1deg); } 100% { transform: translateX(0) translateY(0) rotate(0deg); } }
@keyframes vbh-launcelot { 0% { transform: translateX(0) translateY(0) rotate(0deg); } 33% { transform: translateX(-3px) translateY(-1px) rotate(-2deg); } 66% { transform: translateX(1px) translateY(-1px) rotate(2deg); } 100% { transform: translateX(0) translateY(0) rotate(0deg); } }
@keyframes vbh-coin { 0% { transform: translateY(0) scale(1); opacity: 1; } 50% { transform: translateY(-6px) scale(1.2); opacity: 0.8; } 100% { transform: translateY(0) scale(1); opacity: 1; } }
@keyframes vbh-sign { 0% { transform: rotate(-3deg); } 50% { transform: rotate(3deg); } 100% { transform: rotate(-3deg); } }

/* ---------- venice-street-gratiano-asks-to-go (tense, sunlit) ---------- */
.scn-venice-street-gratiano-asks-to-go {
  background:
    linear-gradient(180deg, #d2dce8 0%, #f1e2b0 30%, #e6c88a 60%, #b69a60 100%),
    radial-gradient(ellipse at 40% 40%, #fff7d8 0%, transparent 60%);
}
.scn-venice-street-gratiano-asks-to-go .sky-sun-ga { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #fdebb0 0%, #b9d0e4 100%); animation: vga-sky 8s ease-in-out infinite alternate; }
.scn-venice-street-gratiano-asks-to-go .colonnade-left { position:absolute; bottom:0; left:0; width:25%; height:100%; background: repeating-linear-gradient(0deg, #9b885e 0px, #9b885e 10px, #c8b48a 10px, #c8b48a 12px); border-right: 4px solid #6b5a38; box-shadow: 8px 0 20px rgba(0,0,0,.2); }
.scn-venice-street-gratiano-asks-to-go .colonnade-right { position:absolute; bottom:0; right:0; width:20%; height:100%; background: repeating-linear-gradient(0deg, #a38f62 0px, #a38f62 10px, #cabb90 10px, #cabb90 12px); border-left: 4px solid #6b5a38; box-shadow: -8px 0 20px rgba(0,0,0,.2); }
.scn-venice-street-gratiano-asks-to-go .shadow-stripe { position:absolute; bottom:50%; left:0; right:0; height:10%; background: linear-gradient(90deg, transparent 0%, rgba(0,0,0,.15) 20%, rgba(0,0,0,.15) 80%, transparent 100%); animation: vga-stripe 4s ease-in-out infinite alternate; }
.scn-venice-street-gratiano-asks-to-go .figure-bassanio-ga { position:absolute; bottom:28%; left:30%; width:34px; height:60px; background: linear-gradient(180deg, #a18a6a 0%, #705b3e 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: vga-bassanio 2s ease-in-out infinite; }
.scn-venice-street-gratiano-asks-to-go .figure-gratiano { position:absolute; bottom:30%; left:52%; width:36px; height:62px; background: linear-gradient(180deg, #967c56 0%, #5f4a30 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: vga-gratiano 1.5s ease-in-out infinite; }
.scn-venice-street-gratiano-asks-to-go .sword-hilt { position:absolute; bottom:38%; left:58%; width:10px; height:14px; background: linear-gradient(180deg, #bda44a 0%, #7a6728 100%); border-radius: 40% 40% 20% 20%; box-shadow: 2px 2px 4px rgba(0,0,0,.4); animation: vga-sword 2.5s ease-in-out infinite; }
.scn-venice-street-gratiano-asks-to-go .dust-whirl { position:absolute; width:30px; height:30px; background: radial-gradient(circle, rgba(200,180,130,.3) 0%, transparent 70%); border-radius: 50%; filter: blur(8px); }
.scn-venice-street-gratiano-asks-to-go .wind-a { top:20%; left:10%; animation: vga-wind-a 15s linear infinite; }
.scn-venice-street-gratiano-asks-to-go .wind-b { top:35%; right:15%; animation: vga-wind-b 12s linear infinite; animation-delay: -4s; }

@keyframes vga-sky { 0% { opacity: .85; } 50% { opacity: 1; } 100% { opacity: .7; } }
@keyframes vga-stripe { 0% { opacity: .2; } 50% { opacity: .6; } 100% { opacity: .2; } }
@keyframes vga-bassanio { 0% { transform: translateX(0) rotate(-1deg); } 25% { transform: translateX(-3px) rotate(2deg); } 50% { transform: translateX(0) rotate(-1deg); } 75% { transform: translateX(2px) rotate(1deg); } 100% { transform: translateX(0) rotate(-1deg); } }
@keyframes vga-gratiano { 0% { transform: translateX(0) scale(1) rotate(0deg); } 30% { transform: translateX(5px) scale(1.02) rotate(3deg); } 60% { transform: translateX(-2px) scale(0.98) rotate(-2deg); } 100% { transform: translateX(0) scale(1) rotate(0deg); } }
@keyframes vga-sword { 0% { transform: rotate(-10deg) translateY(0); } 50% { transform: rotate(10deg) translateY(-2px); } 100% { transform: rotate(-10deg) translateY(0); } }
@keyframes vga-wind-a { 0% { transform: translateX(-40px) translateY(0); } 100% { transform: translateX(120vw) translateY(20px); } }
@keyframes vga-wind-b { 0% { transform: translateX(80vw) translateY(0); } 100% { transform: translateX(-40px) translateY(-15px); } }

/* ---------- shylock-house-jessica-launcelot (tense, dim-interior) ---------- */
.scn-shylock-house-jessica-launcelot {
  background:
    linear-gradient(180deg, #2a2420 0%, #1f1a16 50%, #15110e 100%),
    radial-gradient(ellipse at 50% 60%, #3d321b 0%, transparent 70%);
}
.scn-shylock-house-jessica-launcelot .room-wall { position:absolute; inset:0; background: linear-gradient(135deg, #3c2f24 0%, #281f18 100%); border-radius: 4% 4% 0 0; box-shadow: inset 0 0 80px rgba(0,0,0,.6); }
.scn-shylock-house-jessica-launcelot .floor { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #4a3d2e 0%, #2a2018 100%); border-radius: 0 0 10% 10%; box-shadow: inset 0 20px 40px rgba(0,0,0,.8); }
.scn-shylock-house-jessica-launcelot .candle-glow { position:absolute; bottom:40%; left:35%; width:60px; height:60px; background: radial-gradient(circle, #f7c868 0%, #d4903e 30%, transparent 70%); border-radius: 50%; box-shadow: 0 0 60px 20px #b8743a, 0 0 120px 40px rgba(255,200,100,.2); animation: sjl-candle 3s ease-in-out infinite alternate; }
.scn-shylock-house-jessica-launcelot .figure-jessica { position:absolute; bottom:22%; left:30%; width:28px; height:50px; background: linear-gradient(180deg, #7a6252 0%, #3e2e24 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: sjl-jessica 4s ease-in-out infinite; }
.scn-shylock-house-jessica-launcelot .figure-launcelot-sj { position:absolute; bottom:24%; left:55%; width:30px; height:52px; background: linear-gradient(180deg, #6a5648 0%, #3a2a20 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: sjl-launcelot 3.5s ease-in-out infinite; }
.scn-shylock-house-jessica-launcelot .table { position:absolute; bottom:18%; left:40%; width:70px; height:8px; background: linear-gradient(180deg, #5a4834 0%, #382a1c 100%); border-radius: 10%; box-shadow: 0 10px 20px rgba(0,0,0,.7); }
.scn-shylock-house-jessica-launcelot .scroll { position:absolute; bottom:26%; left:42%; width:24px; height:16px; background: linear-gradient(135deg, #cba77a 0%, #8f7048 100%); border-radius: 10% 30% 30% 10%; transform: rotate(-15deg); animation: sjl-scroll 5s ease-in-out infinite; }
.scn-shylock-house-jessica-launcelot .shadow-rat { position:absolute; bottom:10%; left:20%; width:16px; height:8px; background: #1a1512; border-radius: 50% 50% 30% 30%; transform: rotate(10deg); animation: sjl-rat 2s ease-in-out infinite; }

@keyframes sjl-candle { 0% { opacity: .8; transform: scale(1); } 50% { opacity: 1; transform: scale(1.05); } 100% { opacity: .9; transform: scale(1); } }
@keyframes sjl-jessica { 0% { transform: translateX(0) rotate(-2deg); } 50% { transform: translateX(4px) rotate(2deg); } 100% { transform: translateX(0) rotate(-2deg); } }
@keyframes sjl-launcelot { 0% { transform: translateX(0) translateY(0) rotate(0deg); } 33% { transform: translateX(-3px) translateY(-1px) rotate(3deg); } 66% { transform: translateX(2px) translateY(0) rotate(-2deg); } 100% { transform: translateX(0) translateY(0) rotate(0deg); } }
@keyframes sjl-scroll { 0% { transform: rotate(-15deg) translateY(0); } 50% { transform: rotate(-15deg) translateY(-2px); } 100% { transform: rotate(-15deg) translateY(0); } }
@keyframes sjl-rat { 0% { transform: translateX(0) rotate(10deg); } 50% { transform: translateX(6px) rotate(5deg); } 100% { transform: translateX(0) rotate(10deg); } }

.scn-belmont-arragon-departs {
  background: 
    linear-gradient(180deg, #f5e6c8 0%, #d4b98a 50%, #c2a060 100%),
    radial-gradient(ellipse at 30% 20%, #fff8e0 0%, transparent 70%);
}
.scn-belmont-arragon-departs .wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(135deg, #e8d5b0 0%, #d4be90 100%);
  box-shadow: inset 0 0 60px rgba(0,0,0,0.08);
}
.scn-belmont-arragon-departs .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #b0895a 0%, #8a6540 100%);
  border-radius: 0 0 10% 10%;
}
.scn-belmont-arragon-departs .window-frame {
  position: absolute; top: 12%; left: 50%; transform: translateX(-50%);
  width: 150px; height: 200px;
  background: linear-gradient(145deg, #a08060 0%, #704828 100%);
  border-radius: 8px 8px 4px 4px;
  box-shadow: 0 4px 20px rgba(0,0,0,0.2);
}
.scn-belmont-arragon-departs .window-glass {
  position: absolute; top: 14%; left: 50%; transform: translateX(-50%);
  width: 130px; height: 170px;
  background: radial-gradient(circle at 40% 40%, #f0e8d0 0%, #d0c0a0 70%);
  box-shadow: inset 0 0 30px rgba(255,255,220,0.3);
  animation: bads-glass 12s ease-in-out infinite alternate;
}
@keyframes bads-glass {
  0% { opacity: 0.7; filter: brightness(1); }
  50% { opacity: 0.9; filter: brightness(1.1); }
  100% { opacity: 0.8; filter: brightness(0.95); }
}
.scn-belmont-arragon-departs .curtain-left {
  position: absolute; top: 10%; left: 30%; width: 50px; height: 210px;
  background: linear-gradient(135deg, #a06040 0%, #603828 100%);
  border-radius: 0 60% 60% 0;
  transform-origin: top left;
  animation: bads-curtain-a 18s ease-in-out infinite;
}
@keyframes bads-curtain-a {
  0% { transform: rotate(0deg) scaleX(1); }
  25% { transform: rotate(-3deg) scaleX(1.02); }
  50% { transform: rotate(2deg) scaleX(0.98); }
  75% { transform: rotate(-1deg) scaleX(1); }
  100% { transform: rotate(0deg) scaleX(1); }
}
.scn-belmont-arragon-departs .curtain-right {
  position: absolute; top: 10%; right: 30%; width: 50px; height: 210px;
  background: linear-gradient(225deg, #a06040 0%, #603828 100%);
  border-radius: 60% 0 0 60%;
  transform-origin: top right;
  animation: bads-curtain-b 18s ease-in-out infinite reverse;
}
@keyframes bads-curtain-b {
  0% { transform: rotate(0deg) scaleX(1); }
  25% { transform: rotate(3deg) scaleX(0.98); }
  50% { transform: rotate(-2deg) scaleX(1.02); }
  75% { transform: rotate(1deg) scaleX(1); }
  100% { transform: rotate(0deg) scaleX(1); }
}
.scn-belmont-arragon-departs .figure-arragon {
  position: absolute; bottom: 28%; left: 42%; width: 30px; height: 70px;
  background: linear-gradient(180deg, #2a2040 0%, #101020 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: bads-figure 9s ease-in-out infinite;
}
@keyframes bads-figure {
  0% { transform: translateY(0) rotate(0deg); }
  30% { transform: translateY(-2px) rotate(0.5deg); }
  60% { transform: translateY(0) rotate(-0.3deg); }
  100% { transform: translateY(1px) rotate(0deg); }
}
.scn-belmont-arragon-departs .chest {
  position: absolute; bottom: 22%; left: 60%; width: 40px; height: 30px;
  background: linear-gradient(180deg, #8a6020 0%, #5a3a10 100%);
  border-radius: 5px;
  box-shadow: 2px 2px 8px rgba(0,0,0,0.3);
  animation: bads-chest 15s ease-in-out infinite alternate;
}
@keyframes bads-chest {
  0% { transform: scale(1) translateX(0); }
  100% { transform: scale(1.02) translateX(2px); }
}
.scn-belmont-arragon-departs .light-shaft {
  position: absolute; top: 8%; left: 50%; transform: translateX(-50%);
  width: 100px; height: 250px;
  background: linear-gradient(180deg, rgba(255,240,200,0.15) 0%, transparent 100%);
  filter: blur(12px);
  animation: bads-light 8s ease-in-out infinite alternate;
}
@keyframes bads-light {
  0% { opacity: 0.4; transform: translateX(-50%) skewX(-1deg); }
  50% { opacity: 0.7; transform: translateX(-50%) skewX(0.5deg); }
  100% { opacity: 0.5; transform: translateX(-50%) skewX(1deg); }
}

.scn-belmont-bassanio-arrives {
  background:
    linear-gradient(180deg, #f0e0c0 0%, #d0b880 50%, #b89850 100%),
    radial-gradient(ellipse at 60% 80%, #ffe8b0 0%, transparent 60%);
}
.scn-belmont-bassanio-arrives .interior-wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(135deg, #e0c8a0 0%, #c8a870 100%);
  box-shadow: inset 0 0 40px rgba(0,0,0,0.05);
}
.scn-belmont-bassanio-arrives .doorway {
  position: absolute; bottom: 20%; left: 30%; width: 100px; height: 180px;
  background: linear-gradient(180deg, #987848 0%, #683820 100%);
  border-radius: 10px 10px 0 0;
  box-shadow: 6px 0 12px rgba(0,0,0,0.15);
}
.scn-belmont-bassanio-arrives .door-open {
  position: absolute; bottom: 20%; left: 30%; width: 90px; height: 170px;
  background: linear-gradient(225deg, #b09060 0%, #705030 100%);
  border-radius: 0 8px 8px 0;
  transform-origin: left center;
  animation: bass-door 4s ease-out infinite alternate;
}
@keyframes bass-door {
  0% { transform: rotateY(0deg); }
  50% { transform: rotateY(-15deg); }
  100% { transform: rotateY(0deg); }
}
.scn-belmont-bassanio-arrives .servant {
  position: absolute; bottom: 22%; left: 42%; width: 25px; height: 60px;
  background: linear-gradient(180deg, #403060 0%, #201840 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: bass-servant 5s ease-in-out infinite;
}
@keyframes bass-servant {
  0% { transform: translateX(0) rotate(0deg); }
  30% { transform: translateX(3px) rotate(1deg); }
  60% { transform: translateX(0) rotate(-0.5deg); }
  100% { transform: translateX(-2px) rotate(0deg); }
}
.scn-belmont-bassanio-arrives .figure-bassanio {
  position: absolute; bottom: 22%; left: 50%; width: 32px; height: 72px;
  background: linear-gradient(180deg, #1a2840 0%, #0a1030 100%);
  border-radius: 45% 45% 35% 35% / 55% 55% 40% 40%;
  transform-origin: bottom center;
  animation: bass-bassanio 7s ease-in-out infinite;
}
@keyframes bass-bassanio {
  0% { transform: translateY(0) rotate(0deg); }
  40% { transform: translateY(-2px) rotate(0.5deg); }
  80% { transform: translateY(0) rotate(-0.3deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
.scn-belmont-bassanio-arrives .archway {
  position: absolute; top: 5%; left: 50%; transform: translateX(-50%);
  width: 180px; height: 100px;
  background: radial-gradient(ellipse at top, #d0b070 0%, #b09050 60%, transparent 70%);
  clip-path: ellipse(50% 60% at 50% 30%);
  opacity: 0.4;
}
.scn-belmont-bassanio-arrives .floor-tiles {
  position: absolute; bottom: 0; left: 0; right: 0; height: 28%;
  background:
    repeating-linear-gradient(90deg, transparent 0px, transparent 25px, rgba(160,120,80,0.1) 25px, rgba(160,120,80,0.1) 26px),
    repeating-linear-gradient(0deg, transparent 0px, transparent 25px, rgba(160,120,80,0.1) 25px, rgba(160,120,80,0.1) 26px);
  background-color: #b09060;
}
.scn-belmont-bassanio-arrives .candlelight {
  position: absolute; top: 20%; right: 25%; width: 14px; height: 20px;
  background: radial-gradient(circle, #ffd080 0%, #e8a040 60%);
  border-radius: 50%;
  box-shadow: 0 0 40px 10px rgba(232,160,64,0.4), 0 0 80px 20px rgba(232,160,64,0.2);
  animation: bass-candle 3s ease-in-out infinite alternate;
}
@keyframes bass-candle {
  0% { transform: scale(1) translateY(0); opacity: 0.8; }
  50% { transform: scale(1.05) translateY(-2px); opacity: 1; }
  100% { transform: scale(0.95) translateY(1px); opacity: 0.7; }
}

.scn-venice-street-antonio-losses {
  background:
    linear-gradient(180deg, #9bb0c0 0%, #7080a0 40%, #405070 100%),
    radial-gradient(ellipse at 30% 70%, #b0cce0 0%, transparent 60%);
}
.scn-venice-street-antonio-losses .sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #b0cce0 0%, #7a8aa0 100%);
  animation: vlos-sky 20s ease-in-out infinite alternate;
}
@keyframes vlos-sky {
  0% { opacity: 0.8; filter: brightness(1); }
  50% { opacity: 0.6; filter: brightness(0.9); }
  100% { opacity: 0.9; filter: brightness(1.05); }
}
.scn-venice-street-antonio-losses .canal {
  position: absolute; bottom: 20%; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #4a6070 0%, #2a3a4a 100%);
  border-radius: 0 0 40% 40% / 0 0 20% 20%;
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.3);
  animation: vlos-canal 15s ease-in-out infinite alternate;
}
@keyframes vlos-canal {
  0% { transform: scaleY(1) translateY(0); }
  50% { transform: scaleY(1.02) translateY(-2px); }
  100% { transform: scaleY(0.98) translateY(1px); }
}
.scn-venice-street-antonio-losses .building-left {
  position: absolute; bottom: 30%; left: 5%; width: 120px; height: 200px;
  background: linear-gradient(180deg, #605040 0%, #30281e 100%);
  border-radius: 4px 4px 0 0;
  box-shadow: 8px 0 20px rgba(0,0,0,0.3);
}
.scn-venice-street-antonio-losses .building-right {
  position: absolute; bottom: 30%; right: 5%; width: 100px; height: 180px;
  background: linear-gradient(180deg, #504030 0%, #282018 100%);
  border-radius: 4px 4px 0 0;
  box-shadow: -8px 0 20px rgba(0,0,0,0.3);
}
.scn-venice-street-antonio-losses .bridge {
  position: absolute; bottom: 45%; left: 40%; width: 80px; height: 30px;
  background: linear-gradient(180deg, #8a7050 0%, #604030 100%);
  border-radius: 50% 50% 0 0;
  clip-path: polygon(0% 100%, 20% 30%, 80% 30%, 100% 100%);
  box-shadow: 0 -4px 12px rgba(0,0,0,0.2);
}
.scn-venice-street-antonio-losses .antonio-figure {
  position: absolute; bottom: 18%; left: 48%; transform: translateX(-50%);
  width: 28px; height: 65px;
  background: linear-gradient(180deg, #1a2a3a 0%, #0a1018 100%);
  border-radius: 45% 45% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: vlos-antonio 6s ease-in-out infinite alternate;
}
@keyframes vlos-antonio {
  0% { transform: translateX(-50%) translateY(0) rotate(-1deg); }
  30% { transform: translateX(-50%) translateY(-1px) rotate(0.5deg); }
  60% { transform: translateX(-50%) translateY(0) rotate(-0.2deg); }
  100% { transform: translateX(-50%) translateY(2px) rotate(0.8deg); }
}
.scn-venice-street-antonio-losses .wrecked-ship {
  position: absolute; bottom: 25%; left: 20%; width: 60px; height: 40px;
  background: linear-gradient(180deg, #4a3028 0%, #2a1810 100%);
  border-radius: 0 60% 0 60%;
  transform: rotate(30deg);
  box-shadow: 2px 2px 8px rgba(0,0,0,0.5);
  animation: vlos-ship 12s ease-in-out infinite;
}
@keyframes vlos-ship {
  0% { transform: rotate(30deg) translateY(0); }
  50% { transform: rotate(25deg) translateY(-3px); }
  100% { transform: rotate(35deg) translateY(2px); }
}
.scn-venice-street-antonio-losses .shadow-street {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%);
  opacity: 0.5;
}

.scn-venice-street-shylock-revenge {
  background:
    linear-gradient(180deg, #f0d080 0%, #d0a040 50%, #a08020 100%),
    radial-gradient(ellipse at 30% 60%, #ffe8a0 0%, transparent 50%);
}
.scn-venice-street-shylock-revenge .sunny-sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #ffe090 0%, #f0c060 100%);
  animation: srev-sky 14s ease-in-out infinite alternate;
}
@keyframes srev-sky {
  0% { opacity: 0.9; filter: brightness(1); }
  50% { opacity: 1; filter: brightness(1.1); }
  100% { opacity: 0.85; filter: brightness(0.95); }
}
.scn-venice-street-shylock-revenge .street-ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #b09850 0%, #887030 100%);
  border-radius: 0 0 30% 30%;
}
.scn-venice-street-shylock-revenge .building-bg {
  position: absolute; bottom: 30%; left: 10%; width: 120px; height: 180px;
  background: linear-gradient(180deg, #c8a060 0%, #987040 100%);
  border-radius: 6px 6px 0 0;
  box-shadow: 8px 0 15px rgba(0,0,0,0.15);
}
.scn-venice-street-shylock-revenge .shylock-silhouette {
  position: absolute; bottom: 18%; left: 45%; width: 35px; height: 75px;
  background: linear-gradient(180deg, #1a1a2a 0%, #08080e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: srev-shylock 3s ease-in-out infinite;
}
@keyframes srev-shylock {
  0% { transform: translateY(0) rotate(0deg); }
  20% { transform: translateY(-3px) rotate(2deg); }
  40% { transform: translateY(0) rotate(-1deg); }
  60% { transform: translateY(-2px) rotate(1.5deg); }
  80% { transform: translateY(0) rotate(-0.5deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
.scn-venice-street-shylock-revenge .bird-fledged {
  position: absolute; top: 18%; left: 60%; width: 30px; height: 20px;
  background: linear-gradient(135deg, #806030 0%, #504010 100%);
  clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
  transform-origin: bottom center;
  animation: srev-bird 5s ease-in-out infinite;
}
@keyframes srev-bird {
  0% { transform: translateX(0) rotate(0deg); }
  25% { transform: translateX(10px) rotate(5deg); }
  50% { transform: translateX(-5px) rotate(-3deg); }
  75% { transform: translateX(8px) rotate(2deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
.scn-venice-street-shylock-revenge .letter-in-hand {
  position: absolute; bottom: 22%; left: 48%; width: 20px; height: 14px;
  background: #d0b080;
  border-radius: 2px;
  transform: rotate(15deg);
  animation: srev-letter 4s ease-in-out infinite alternate;
}
@keyframes srev-letter {
  0% { transform: rotate(15deg) translateY(0); }
  50% { transform: rotate(20deg) translateY(-2px); }
  100% { transform: rotate(10deg) translateY(1px); }
}
.scn-venice-street-shylock-revenge .coin-purse {
  position: absolute; bottom: 25%; right: 30%; width: 24px; height: 18px;
  background: radial-gradient(circle at 50% 40%, #a08020 0%, #604010 100%);
  border-radius: 50%;
  box-shadow: 0 2px 8px rgba(0,0,0,0.3);
  animation: srev-purse 8s ease-in-out infinite;
}
@keyframes srev-purse {
  0% { transform: translateY(0) scale(1); }
  30% { transform: translateY(-3px) scale(1.1); }
  60% { transform: translateY(0) scale(0.9); }
  100% { transform: translateY(1px) scale(1); }
}
.scn-venice-street-shylock-revenge .laughter-lines {
  position: absolute; top: 15%; left: 35%; width: 40px; height: 40px;
  background: radial-gradient(circle, rgba(255,200,0,0.1) 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(4px);
  animation: srev-laugh 2s ease-in-out infinite alternate;
}
@keyframes srev-laugh {
  0% { transform: scale(1) rotate(0deg); opacity: 0.5; }
  100% { transform: scale(1.3) rotate(10deg); opacity: 0.9; }
}

/* venice-court-twist - bright interior, calm courtroom */
.scn-venice-court-twist {
  background: linear-gradient(180deg, #d4b78e 0%, #c3a078 30%, #b4916a 100%),
              radial-gradient(ellipse at 50% 30%, #ebd5b5 0%, transparent 60%);
}
.scn-venice-court-twist .wall-bg {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #c7a77a 0%, #b8946a 40%, #a37e58 100%);
  box-shadow: inset 0 0 40px rgba(0,0,0,0.15);
  animation: vct-wall 10s ease-in-out infinite alternate;
}
.scn-venice-court-twist .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #9c7f5e 0%, #7d6246 50%, #5e4a34 100%);
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.3);
}
.scn-venice-court-twist .bench {
  position: absolute; bottom: 30%; left: 15%; right: 15%; height: 12%;
  background: linear-gradient(180deg, #6b4f34 0%, #4d371f 100%);
  border-radius: 4px 4px 8px 8px;
  box-shadow: 0 4px 12px rgba(0,0,0,0.4);
  transform: perspective(800px) rotateX(10deg);
  animation: vct-bench 12s ease-in-out infinite;
}
.scn-venice-court-twist .judge-silhouette {
  position: absolute; bottom: 42%; left: 35%; width: 60px; height: 80px;
  background: linear-gradient(180deg, #3a2e22 0%, #1e1812 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vct-judge 4s ease-in-out infinite alternate;
}
.scn-venice-court-twist .defendant-silhouette {
  position: absolute; bottom: 40%; left: 58%; width: 50px; height: 70px;
  background: linear-gradient(180deg, #2f261c 0%, #14100a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vct-def 5s ease-in-out infinite;
}
.scn-venice-court-twist .bond-scroll {
  position: absolute; bottom: 35%; left: 48%; width: 40px; height: 16px;
  background: linear-gradient(180deg, #d6b48b 0%, #ba9366 100%);
  border-radius: 2px 2px 10px 10px;
  box-shadow: 0 2px 6px rgba(0,0,0,0.3);
  transform: rotate(-5deg);
  animation: vct-scroll 8s ease-in-out infinite;
}
.scn-venice-court-twist .candle-left {
  position: absolute; bottom: 55%; left: 20%; width: 6px; height: 30px;
  background: linear-gradient(180deg, #f5deb3 0%, #d6b47e 30%, #8a6334 100%);
  border-radius: 2px 2px 0 0;
  box-shadow: 0 0 10px 4px #f7c07a, 0 0 30px 10px rgba(247,192,122,0.3);
  animation: vct-candle-left 3s ease-in-out infinite alternate;
}
.scn-venice-court-twist .candle-right {
  position: absolute; bottom: 55%; right: 20%; width: 6px; height: 30px;
  background: linear-gradient(180deg, #f5deb3 0%, #d6b47e 30%, #8a6334 100%);
  border-radius: 2px 2px 0 0;
  box-shadow: 0 0 10px 4px #f7c07a, 0 0 30px 10px rgba(247,192,122,0.3);
  animation: vct-candle-right 3s ease-in-out infinite alternate-reverse;
}
@keyframes vct-wall {
  0% { opacity: 0.9; filter: brightness(1); }
  50% { opacity: 1; filter: brightness(1.05); }
  100% { opacity: 0.92; filter: brightness(0.98); }
}
@keyframes vct-bench {
  0%,100% { transform: perspective(800px) rotateX(10deg) translateY(0); }
  50% { transform: perspective(800px) rotateX(10deg) translateY(-2px); }
}
@keyframes vct-judge {
  0% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-3px) rotate(0.5deg); }
  100% { transform: translateY(-1px) rotate(-0.3deg); }
}
@keyframes vct-def {
  0% { transform: translateX(0) translateY(0) rotate(0deg); }
  33% { transform: translateX(3px) translateY(-1px) rotate(1deg); }
  66% { transform: translateX(-2px) translateY(1px) rotate(-1deg); }
  100% { transform: translateX(0) translateY(0) rotate(0deg); }
}
@keyframes vct-scroll {
  0%,100% { transform: rotate(-5deg) translateY(0); }
  50% { transform: rotate(-4deg) translateY(-2px); }
}
@keyframes vct-candle-left {
  0% { box-shadow: 0 0 8px 2px #f7c07a, 0 0 20px 6px rgba(247,192,122,0.2); opacity: 0.9; }
  50% { box-shadow: 0 0 14px 5px #ffd28c, 0 0 40px 12px rgba(255,210,140,0.5); opacity: 1; }
  100% { box-shadow: 0 0 10px 3px #f7c07a, 0 0 25px 8px rgba(247,192,122,0.3); opacity: 0.95; }
}
@keyframes vct-candle-right {
  0% { box-shadow: 0 0 8px 2px #f7c07a, 0 0 20px 6px rgba(247,192,122,0.2); opacity: 0.9; }
  50% { box-shadow: 0 0 14px 5px #ffd28c, 0 0 40px 12px rgba(255,210,140,0.5); opacity: 1; }
  100% { box-shadow: 0 0 10px 3px #f7c07a, 0 0 25px 8px rgba(247,192,122,0.3); opacity: 0.95; }
}

/* venice-court-ring-request - bright interior, calm */
.scn-venice-court-ring-request {
  background: linear-gradient(180deg, #dabd9c 0%, #c9aa86 40%, #b0906c 100%),
              radial-gradient(ellipse at 40% 50%, #f0dcc0 0%, transparent 70%);
}
.scn-venice-court-ring-request .wall-bg {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #c9a880 0%, #b4916a 50%, #a07e58 100%);
  box-shadow: inset 0 0 40px rgba(0,0,0,0.12);
  animation: vcr-wall 12s ease-in-out infinite alternate;
}
.scn-venice-court-ring-request .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #a18664 0%, #806846 50%, #5e4a34 100%);
}
.scn-venice-court-ring-request .bench {
  position: absolute; bottom: 30%; left: 20%; right: 20%; height: 12%;
  background: linear-gradient(180deg, #6b4f34 0%, #4d371f 100%);
  border-radius: 4px;
  box-shadow: 0 4px 12px rgba(0,0,0,0.4);
  transform: perspective(800px) rotateX(8deg);
  animation: vcr-bench 15s ease-in-out infinite;
}
.scn-venice-court-ring-request .figure-antonio {
  position: absolute; bottom: 40%; left: 30%; width: 55px; height: 75px;
  background: linear-gradient(180deg, #3d3226 0%, #1f1912 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vcr-fig-a 5s ease-in-out infinite alternate;
}
.scn-venice-court-ring-request .figure-bassanio {
  position: absolute; bottom: 40%; left: 50%; width: 55px; height: 75px;
  background: linear-gradient(180deg, #4a3a2a 0%, #281f14 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vcr-fig-b 5.5s ease-in-out infinite alternate;
}
.scn-venice-court-ring-request .ring-hand {
  position: absolute; bottom: 44%; left: 47%; width: 24px; height: 20px;
  background: radial-gradient(circle at 60% 40%, #d4a373 0%, #b8875c 40%, #8c6232 100%);
  border-radius: 30% 30% 40% 40% / 40% 40% 30% 30%;
  box-shadow: 0 2px 8px rgba(0,0,0,0.3);
  animation: vcr-ring 4s ease-in-out infinite;
}
.scn-venice-court-ring-request .candle-left {
  position: absolute; bottom: 55%; left: 15%;
  width: 6px; height: 28px;
  background: linear-gradient(180deg, #f5deb3 0%, #d6b47e 30%, #8a6334 100%);
  border-radius: 2px 2px 0 0;
  box-shadow: 0 0 10px 4px #f7c07a, 0 0 28px 8px rgba(247,192,122,0.25);
  animation: vcr-cand-left 3s ease-in-out infinite alternate;
}
.scn-venice-court-ring-request .candle-right {
  position: absolute; bottom: 55%; right: 15%;
  width: 6px; height: 28px;
  background: linear-gradient(180deg, #f5deb3 0%, #d6b47e 30%, #8a6334 100%);
  border-radius: 2px 2px 0 0;
  box-shadow: 0 0 10px 4px #f7c07a, 0 0 28px 8px rgba(247,192,122,0.25);
  animation: vcr-cand-right 3s ease-in-out infinite alternate-reverse;
}
@keyframes vcr-wall {
  0% { opacity: 0.92; filter: brightness(1.02); }
  50% { opacity: 1; filter: brightness(1.06); }
  100% { opacity: 0.95; filter: brightness(1); }
}
@keyframes vcr-bench {
  0%,100% { transform: perspective(800px) rotateX(8deg) translateY(0); }
  50% { transform: perspective(800px) rotateX(8deg) translateY(-1px); }
}
@keyframes vcr-fig-a {
  0% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-2px) rotate(0.8deg); }
  100% { transform: translateY(-1px) rotate(-0.5deg); }
}
@keyframes vcr-fig-b {
  0% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-3px) rotate(-0.6deg); }
  100% { transform: translateY(-1px) rotate(0.4deg); }
}
@keyframes vcr-ring {
  0%,100% { transform: translateX(0) translateY(0) rotate(0deg); }
  33% { transform: translateX(5px) translateY(-2px) rotate(5deg); }
  66% { transform: translateX(-3px) translateY(1px) rotate(-3deg); }
}
@keyframes vcr-cand-left {
  0% { box-shadow: 0 0 8px 2px #f7c07a, 0 0 20px 5px rgba(247,192,122,0.2); opacity: 0.9; }
  50% { box-shadow: 0 0 14px 5px #ffd28c, 0 0 36px 10px rgba(255,210,140,0.45); opacity: 1; }
  100% { box-shadow: 0 0 10px 3px #f7c07a, 0 0 24px 6px rgba(247,192,122,0.3); opacity: 0.95; }
}
@keyframes vcr-cand-right {
  0% { box-shadow: 0 0 8px 2px #f7c07a, 0 0 20px 5px rgba(247,192,122,0.2); opacity: 0.9; }
  50% { box-shadow: 0 0 14px 5px #ffd28c, 0 0 36px 10px rgba(255,210,140,0.45); opacity: 1; }
  100% { box-shadow: 0 0 10px 3px #f7c07a, 0 0 24px 6px rgba(247,192,122,0.3); opacity: 0.95; }
}

/* venice-street-nerissa-ring - sunlit, calm street */
.scn-venice-street-nerissa-ring {
  background: linear-gradient(180deg, #87ceeb 0%, #b0e0e6 30%, #f0e68c 100%),
              radial-gradient(ellipse at 60% 0%, #fff9e0 0%, transparent 80%);
}
.scn-venice-street-nerissa-ring .sky-sun {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #9ed5e8 0%, #c3e8f0 50%, #f5e6a0 100%);
  animation: vsn-sky 20s ease-in-out infinite alternate;
}
.scn-venice-street-nerissa-ring .buildings {
  position: absolute; bottom: 35%; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #d4b68a 0%, #b8956a 40%, #9a7a56 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: inset 0 -20px 40px rgba(0,0,0,0.2);
  animation: vsn-build 25s ease-in-out infinite;
}
.scn-venice-street-nerissa-ring .street {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #c2a67c 0%, #a58660 40%, #7a6040 100%);
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.15);
  border-radius: 0 0 5% 5%;
}
.scn-venice-street-nerissa-ring .figure-portia {
  position: absolute; bottom: 30%; left: 30%; width: 50px; height: 70px;
  background: linear-gradient(180deg, #d6b38a 0%, #a8835e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vsn-portia 6s ease-in-out infinite;
}
.scn-venice-street-nerissa-ring .figure-nerissa {
  position: absolute; bottom: 30%; left: 48%; width: 48px; height: 68px;
  background: linear-gradient(180deg, #c49d78 0%, #9b7854 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vsn-nerissa 6.5s ease-in-out infinite;
}
.scn-venice-street-nerissa-ring .deed-scroll {
  position: absolute; bottom: 36%; left: 44%; width: 30px; height: 12px;
  background: linear-gradient(180deg, #f5e6c0 0%, #d4b68a 100%);
  border-radius: 2px 2px 8px 8px;
  box-shadow: 0 2px 6px rgba(0,0,0,0.2);
  animation: vsn-deed 7s ease-in-out infinite;
}
.scn-venice-street-nerissa-ring .shadow {
  position: absolute; bottom: 28%; left: 30%; width: 100px; height: 10px;
  background: radial-gradient(ellipse, rgba(0,0,0,0.25) 0%, transparent 70%);
  border-radius: 50%;
  animation: vsn-shadow 6s ease-in-out infinite;
}
@keyframes vsn-sky {
  0% { opacity: 0.9; filter: brightness(1); }
  50% { opacity: 1; filter: brightness(1.05); }
  100% { opacity: 0.95; filter: brightness(0.98); }
}
@keyframes vsn-build {
  0%,100% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
}
@keyframes vsn-portia {
  0% { transform: translateX(0) translateY(0) rotate(0deg); }
  33% { transform: translateX(8px) translateY(-2px) rotate(1deg); }
  66% { transform: translateX(-4px) translateY(1px) rotate(-1deg); }
  100% { transform: translateX(0) translateY(0) rotate(0deg); }
}
@keyframes vsn-nerissa {
  0% { transform: translateX(0) translateY(0) rotate(0deg); }
  33% { transform: translateX(10px) translateY(-3px) rotate(1.5deg); }
  66% { transform: translateX(-5px) translateY(1px) rotate(-1deg); }
  100% { transform: translateX(0) translateY(0) rotate(0deg); }
}
@keyframes vsn-deed {
  0%,100% { transform: rotate(-3deg) translateY(0); }
  50% { transform: rotate(0deg) translateY(-3px); }
}
@keyframes vsn-shadow {
  0%,100% { opacity: 0.4; transform: scaleX(1); }
  50% { opacity: 0.6; transform: scaleX(1.2); }
}

/* belmont-night-music - moonlit, calm night */
.scn-belmont-night-music {
  background: linear-gradient(180deg, #0a0a2e 0%, #141446 30%, #1a1a5e 100%),
              radial-gradient(ellipse at 50% 20%, #2a2a6a 0%, transparent 70%);
}
.scn-belmont-night-music .night-sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #0a0a3e 0%, #12124e 50%, #1a1a5e 100%);
  animation: bnm-sky 30s ease-in-out infinite alternate;
}
.scn-belmont-night-music .moon {
  position: absolute; top: 8%; right: 20%; width: 50px; height: 50px;
  background: radial-gradient(circle at 40% 40%, #f5f0d0 0%, #ddd4aa 50%, #b8ae8a 100%);
  border-radius: 50%;
  box-shadow: 0 0 40px 10px rgba(221, 212, 170, 0.6), 0 0 80px 30px rgba(221, 212, 170, 0.3);
  animation: bnm-moon 8s ease-in-out infinite alternate;
}
.scn-belmont-night-music .stars {
  position: absolute; top: 0; left: 0; right: 0; height: 60%;
  background: radial-gradient(2px 2px at 20% 30%, #fff 0%, transparent 100%),
              radial-gradient(2px 2px at 40% 70%, #fff 0%, transparent 100%),
              radial-gradient(2px 2px at 60% 20%, #fff 0%, transparent 100%),
              radial-gradient(2px 2px at 80% 50%, #fff 0%, transparent 100%),
              radial-gradient(2px 2px at 10% 80%, #fff 0%, transparent 100%),
              radial-gradient(2px 2px at 70% 90%, #fff 0%, transparent 100%),
              radial-gradient(2px 2px at 90% 10%, #fff 0%, transparent 100%);
  animation: bnm-stars 45s linear infinite;
}
.scn-belmont-night-music .trees {
  position: absolute; bottom: 35%; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #1a3a2a 0%, #0f2619 50%, #0a1a12 100%);
  border-radius: 60% 40% 0 0 / 80% 70% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.5);
  animation: bnm-trees 20s ease-in-out infinite alternate;
}
.scn-belmont-night-music .avenue-path {
  position: absolute; bottom: 0; left: 10%; right: 10%; height: 35%;
  background: linear-gradient(180deg, #1a2a2a 0%, #0e1c1c 40%, #081212 100%);
  border-radius: 0 0 20% 20% / 0 0 30% 30%;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.6);
  animation: bnm-path 12s ease-in-out infinite;
}
.scn-belmont-night-music .figure-lorenzo {
  position: absolute; bottom: 30%; left: 35%; width: 45px; height: 65px;
  background: linear-gradient(180deg, #2a2a3e 0%, #12121e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bnm-lor 6s ease-in-out infinite;
}
.scn-belmont-night-music .figure-jessica {
  position: absolute; bottom: 30%; left: 48%; width: 42px; height: 62px;
  background: linear-gradient(180deg, #2a2a3e 0%, #12121e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bnm-jess 6.5s ease-in-out infinite;
}
.scn-belmont-night-music .firefly {
  position: absolute; bottom: 40%; left: 20%; width: 4px; height: 4px;
  background: #d4f0a0;
  border-radius: 50%;
  box-shadow: 0 0 8px 3px rgba(212,240,160,0.6), 0 0 20px 8px rgba(212,240,160,0.2);
  animation: bnm-firefly 4s ease-in-out infinite;
}
@keyframes bnm-sky {
  0% { opacity: 0.9; filter: brightness(0.95); }
  50% { opacity: 1; filter: brightness(1.05); }
  100% { opacity: 0.92; filter: brightness(0.98); }
}
@keyframes bnm-moon {
  0% { transform: translateY(0) scale(1); box-shadow: 0 0 30px 8px rgba(221,212,170,0.4); }
  50% { transform: translateY(-4px) scale(1.02); box-shadow: 0 0 50px 15px rgba(221,212,170,0.6); }
  100% { transform: translateY(-2px) scale(0.98); box-shadow: 0 0 40px 10px rgba(221,212,170,0.5); }
}
@keyframes bnm-stars {
  0% { opacity: 0.7; }
  50% { opacity: 1; }
  100% { opacity: 0.8; }
}
@keyframes bnm-trees {
  0% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-2px) scale(1.01); }
  100% { transform: translateY(-1px) scale(0.99); }
}
@keyframes bnm-path {
  0%,100% { transform: translateY(0); }
  50% { transform: translateY(-1px); }
}
@keyframes bnm-lor {
  0% { transform: translateX(0) translateY(0) rotate(0deg); }
  33% { transform: translateX(4px) translateY(-2px) rotate(0.8deg); }
  66% { transform: translateX(-2px) translateY(1px) rotate(-0.5deg); }
  100% { transform: translateX(0) translateY(0) rotate(0deg); }
}
@keyframes bnm-jess {
  0% { transform: translateX(0) translateY(0) rotate(0deg); }
  33% { transform: translateX(5px) translateY(-3px) rotate(1deg); }
  66% { transform: translateX(-3px) translateY(1px) rotate(-0.8deg); }
  100% { transform: translateX(0) translateY(0) rotate(0deg); }
}
@keyframes bnm-firefly {
  0%,100% { transform: translate(0,0); opacity: 0.5; }
  25% { transform: translate(10px, -12px); opacity: 1; }
  50% { transform: translate(-8px, -20px); opacity: 0.8; }
  75% { transform: translate(15px, -5px); opacity: 1; }
}

/* venice-street-plan-elopement */
.scn-venice-street-plan-elopement { background: linear-gradient(180deg, #87CEEB 0%, #f0e68c 40%, #daa520 100%), radial-gradient(ellipse at 50% 100%, #b8860b 0%, transparent 60%); }
.scn-venice-street-plan-elopement .sky { position:absolute; inset:0 0 55% 0; background: linear-gradient(180deg, #b0e0e6 0%, #87CEEB 40%, transparent 100%); animation: vse-sky 14s ease-in-out infinite alternate; }
.scn-venice-street-plan-elopement .canal { position:absolute; bottom:0; left:0; right:0; height:45%; background: linear-gradient(180deg, #4682b4 0%, #2e6b8a 50%, #1a4a6e 100%); border-radius: 0 0 30% 30% / 0 0 40% 40%; box-shadow: inset 0 8px 15px rgba(0,0,0,.3); animation: vse-canal 20s ease-in-out infinite alternate; }
.scn-venice-street-plan-elopement .bridge { position:absolute; bottom:40%; left:30%; width:40%; height:10%; background: linear-gradient(90deg, #8b7355 0%, #a0896e 50%, #8b7355 100%); border-radius: 50% 50% 0 0 / 80% 80% 0 0; box-shadow: 0 -4px 8px rgba(0,0,0,.2); animation: vse-bridge 12s ease-in-out infinite; }
.scn-venice-street-plan-elopement .building-left { position:absolute; bottom:45%; left:5%; width:25%; height:50%; background: linear-gradient(180deg, #c4a882 0%, #a78d6a 100%); border-radius: 4% 4% 0 0; box-shadow: inset -8px 0 12px rgba(0,0,0,.2); animation: vse-build 25s ease-in-out infinite alternate; }
.scn-venice-street-plan-elopement .building-right { position:absolute; bottom:45%; right:5%; width:25%; height:50%; background: linear-gradient(180deg, #c4a882 0%, #a78d6a 100%); border-radius: 4% 4% 0 0; box-shadow: inset 8px 0 12px rgba(0,0,0,.2); animation: vse-build 25s ease-in-out infinite alternate; animation-delay: -12s; }
.scn-venice-street-plan-elopement .torch-unlit { position:absolute; bottom:50%; left:50%; width:4px; height:12px; background: #5a4a3a; border-radius: 20%; transform: translateX(-50%); box-shadow: 0 0 6px 2px rgba(90,74,58,.3); }
.scn-venice-street-plan-elopement .figure1 { position:absolute; bottom:42%; left:38%; width:16px; height:45px; background: linear-gradient(180deg, #3a2a1a 0%, #1a1208 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: vse-fig1 6s ease-in-out infinite; }
.scn-venice-street-plan-elopement .figure2 { position:absolute; bottom:42%; left:55%; width:14px; height:40px; background: linear-gradient(180deg, #2a1a2a 0%, #120a12 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: vse-fig2 6s ease-in-out infinite; animation-delay: -2s; }
@keyframes vse-sky { 0% { opacity: .9; transform: scaleY(1); } 50% { opacity: 1; transform: scaleY(1.02); } 100% { opacity: .85; transform: scaleY(1); } }
@keyframes vse-canal { 0% { transform: translateY(0); } 50% { transform: translateY(-2px) scaleY(1.01); } 100% { transform: translateY(0); } }
@keyframes vse-bridge { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-2px) rotate(1deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes vse-build { 0% { transform: translateY(0); } 50% { transform: translateY(-4px); } 100% { transform: translateY(0); } }
@keyframes vse-fig1 { 0% { transform: translateX(0) translateY(0) rotate(-1deg); } 25% { transform: translateX(8px) translateY(-1px) rotate(1deg); } 50% { transform: translateX(16px) translateY(0) rotate(-1deg); } 75% { transform: translateX(24px) translateY(-1px) rotate(1deg); } 100% { transform: translateX(32px) translateY(0) rotate(0deg); } }
@keyframes vse-fig2 { 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); } }

/* shylock-house-before-supper */
.scn-shylock-house-before-supper { background: linear-gradient(180deg, #2a1a0a 0%, #3a2a1a 40%, #4a3a2a 100%), radial-gradient(ellipse at 50% 30%, #5a4a3a 0%, transparent 70%); }
.scn-shylock-house-before-supper .wall-bg { position:absolute; inset:0; background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%); opacity: .8; }
.scn-shylock-house-before-supper .table { position:absolute; bottom:25%; left:50%; width:60%; height:18%; background: linear-gradient(180deg, #6a4a2a 0%, #4a2a10 100%); transform: translateX(-50%); border-radius: 4% 4% 8% 8%; box-shadow: 0 4px 10px rgba(0,0,0,.5); animation: shh-table 10s ease-in-out infinite alternate; }
.scn-shylock-house-before-supper .chair { position:absolute; bottom:23%; left:30%; width:14%; height:25%; background: linear-gradient(180deg, #5a3a1a 0%, #3a1a00 100%); border-radius: 10% 10% 20% 20% / 30% 30% 40% 40%; transform-origin: bottom center; animation: shh-chair 8s ease-in-out infinite; }
.scn-shylock-house-before-supper .candle { position:absolute; bottom:45%; left:50%; width:6px; height:18px; background: linear-gradient(180deg, #f0c060 0%, #c08020 100%); border-radius: 20% 20% 10% 10%; box-shadow: 0 0 20px 8px #f0c060, 0 0 40px 16px rgba(240,192,96,.4); animation: shh-candle 3s ease-in-out infinite alternate; }
.scn-shylock-house-before-supper .window { position:absolute; top:15%; right:15%; width:25%; height:30%; background: linear-gradient(135deg, #1a1a1a 0%, #0a0a0a 100%); border: 3px solid #4a3a2a; border-radius: 4%; box-shadow: inset 0 0 15px rgba(0,0,0,.6); animation: shh-window 20s ease-in-out infinite alternate; }
.scn-shylock-house-before-supper .jessica { position:absolute; bottom:30%; left:40%; width:18px; height:48px; background: linear-gradient(180deg, #4a2a2a 0%, #2a1a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: shh-jessica 5s ease-in-out infinite; }
.scn-shylock-house-before-supper .launcelot { position:absolute; bottom:30%; left:55%; width:16px; height:42px; background: linear-gradient(180deg, #3a2a1a 0%, #1a120a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: shh-launcelot 4s ease-in-out infinite; }
.scn-shylock-house-before-supper .platter { position:absolute; bottom:27%; left:50%; width:30px; height:8px; background: radial-gradient(ellipse, #6a5a4a 0%, #4a3a2a 100%); border-radius: 50%; transform: translateX(-50%); box-shadow: 0 2px 4px rgba(0,0,0,.3); animation: shh-platter 6s ease-in-out infinite; }
@keyframes shh-table { 0% { transform: translateX(-50%) rotate(0deg); } 50% { transform: translateX(-50%) rotate(1deg) scaleY(1.01); } 100% { transform: translateX(-50%) rotate(0deg); } }
@keyframes shh-chair { 0% { transform: rotate(0deg) translateY(0); } 25% { transform: rotate(5deg) translateY(-2px); } 50% { transform: rotate(0deg) translateY(0); } 75% { transform: rotate(-5deg) translateY(-2px); } 100% { transform: rotate(0deg) translateY(0); } }
@keyframes shh-candle { 0% { opacity: .85; box-shadow: 0 0 15px 6px #f0c060, 0 0 30px 12px rgba(240,192,96,.3); } 50% { opacity: 1; box-shadow: 0 0 25px 10px #ffe080, 0 0 50px 20px rgba(255,224,128,.5); } 100% { opacity: .9; box-shadow: 0 0 18px 7px #f0c060, 0 0 36px 14px rgba(240,192,96,.35); } }
@keyframes shh-window { 0% { opacity: .6; } 50% { opacity: .8; } 100% { opacity: .5; } }
@keyframes shh-jessica { 0% { transform: translateX(0) translateY(0) rotate(0deg); } 25% { transform: translateX(4px) translateY(-1px) rotate(2deg); } 50% { transform: translateX(8px) translateY(0) rotate(0deg); } 75% { transform: translateX(4px) translateY(-1px) rotate(-2deg); } 100% { transform: translateX(0) translateY(0) rotate(0deg); } }
@keyframes shh-launcelot { 0% { transform: translateX(0) translateY(0) rotate(0deg) scaleY(1); } 20% { transform: translateX(-6px) translateY(-2px) rotate(10deg) scaleY(1.05); } 40% { transform: translateX(0) translateY(0) rotate(0deg) scaleY(1); } 60% { transform: translateX(6px) translateY(-2px) rotate(-10deg) scaleY(1.05); } 80% { transform: translateX(0) translateY(0) rotate(0deg) scaleY(1); } 100% { transform: translateX(0) translateY(0) rotate(0deg) scaleY(1); } }
@keyframes shh-platter { 0% { transform: translateX(-50%) rotate(0deg); } 25% { transform: translateX(-50%) rotate(5deg); } 50% { transform: translateX(-50%) rotate(0deg); } 75% { transform: translateX(-50%) rotate(-5deg); } 100% { transform: translateX(-50%) rotate(0deg); } }

/* venice-street-elopement-night */
.scn-venice-street-elopement-night { background: linear-gradient(180deg, #0a0a1a 0%, #1a1a3e 40%, #2a2a4e 100%), radial-gradient(ellipse at 50% 100%, #1a1a3e 0%, transparent 70%); }
.scn-venice-street-elopement-night .night-sky { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #0a0a1a 0%, #1a1a3e 60%, transparent 100%); animation: ven-sky 18s ease-in-out infinite alternate; }
.scn-venice-street-elopement-night .moon { position:absolute; top:10%; left:20%; width:40px; height:40px; background: radial-gradient(circle, #f0f0e0 0%, #c0c0b0 70%); border-radius: 50%; box-shadow: 0 0 30px 10px rgba(240,240,224,.5), 0 0 60px 20px rgba(240,240,224,.2); animation: ven-moon 30s linear infinite; }
.scn-venice-street-elopement-night .stars { position:absolute; top:0; left:0; right:0; height:60%; background: radial-gradient(2px 2px at 20% 30%, #fff 0%, transparent 100%), radial-gradient(2px 2px at 40% 60%, #fff 0%, transparent 100%), radial-gradient(3px 3px at 60% 20%, #fff 0%, transparent 100%), radial-gradient(1px 1px at 80% 50%, #fff 0%, transparent 100%), radial-gradient(2px 2px at 10% 70%, #fff 0%, transparent 100%); animation: ven-stars 50s ease-in-out infinite alternate; }
.scn-venice-street-elopement-night .palace-wall { position:absolute; bottom:30%; left:10%; width:80%; height:60%; background: linear-gradient(180deg, #2a2a3e 0%, #1a1a2e 100%); border-radius: 20% 20% 0 0 / 30% 30% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,.6); animation: ven-wall 16s ease-in-out infinite alternate; }
.scn-venice-street-elopement-night .balcony { position:absolute; bottom:40%; left:50%; width:50px; height:14px; background: linear-gradient(180deg, #3a3a5a 0%, #2a2a4a 100%); transform: translateX(-50%); border-radius: 10% 10% 0 0; box-shadow: 0 -2px 6px rgba(0,0,0,.4); animation: ven-balcony 12s ease-in-out infinite; }
.scn-venice-street-elopement-night .lorenzo { position:absolute; bottom:38%; left:38%; width:16px; height:44px; background: linear-gradient(180deg, #1a1a2e 0%, #0a0a1e 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ven-lorenzo 5s ease-in-out infinite; }
.scn-venice-street-elopement-night .jessica-elope { position:absolute; bottom:40%; left:60%; width:18px; height:46px; background: linear-gradient(180deg, #2a1a2e 0%, #1a0a1e 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ven-jessica 5s ease-in-out infinite; animation-delay: -2.5s; }
.scn-venice-street-elopement-night .doves { position:absolute; top:20%; right:30%; width:20px; height:10px; background: radial-gradient(ellipse at 50% 50%, #c0c0d0 0%, #808090 100%); border-radius: 50%; filter: blur(2px); animation: ven-doves 8s ease-in-out infinite; }
@keyframes ven-sky { 0% { opacity: .8; } 50% { opacity: 1; } 100% { opacity: .7; } }
@keyframes ven-moon { 0% { transform: translateX(0) translateY(0); } 50% { transform: translateX(8px) translateY(-4px); } 100% { transform: translateX(0) translateY(0); } }
@keyframes ven-stars { 0% { opacity: .5; } 50% { opacity: .8; } 100% { opacity: .4; } }
@keyframes ven-wall { 0% { transform: translateY(0); } 50% { transform: translateY(-3px); } 100% { transform: translateY(0); } }
@keyframes ven-balcony { 0% { transform: translateX(-50%) rotate(0deg); } 25% { transform: translateX(-50%) rotate(2deg); } 50% { transform: translateX(-50%) rotate(0deg); } 75% { transform: translateX(-50%) rotate(-2deg); } 100% { transform: translateX(-50%) rotate(0deg); } }
@keyframes ven-lorenzo { 0% { transform: translateX(0) translateY(0) rotate(0deg); } 25% { transform: translateX(-6px) translateY(-2px) rotate(-5deg); } 50% { transform: translateX(0) translateY(0) rotate(0deg); } 75% { transform: translateX(6px) translateY(-2px) rotate(5deg); } 100% { transform: translateX(0) translateY(0) rotate(0deg); } }
@keyframes ven-jessica { 0% { transform: translateX(0) translateY(0) rotate(0deg); } 25% { transform: translateX(6px) translateY(-2px) rotate(5deg); } 50% { transform: translateX(0) translateY(0) rotate(0deg); } 75% { transform: translateX(-6px) translateY(-2px) rotate(-5deg); } 100% { transform: translateX(0) translateY(0) rotate(0deg); } }
@keyframes ven-doves { 0% { transform: translateX(0) translateY(0) scale(1); opacity: .6; } 25% { transform: translateX(10px) translateY(-5px) scale(1.1); opacity: .8; } 50% { transform: translateX(20px) translateY(0) scale(1); opacity: .6; } 75% { transform: translateX(10px) translateY(5px) scale(1.1); opacity: .8; } 100% { transform: translateX(0) translateY(0) scale(1); opacity: .6; } }

/* belmont-casket-morocco-choice */
.scn-belmont-casket-morocco-choice { background: linear-gradient(180deg, #f5f0e0 0%, #e8dcc8 40%, #d4c4a8 100%), radial-gradient(ellipse at 50% 30%, #f0e8d8 0%, transparent 70%); }
.scn-belmont-casket-morocco-choice .room-bg { position:absolute; inset:0; background: linear-gradient(135deg, #f5f0e0 0%, #e0d0b8 100%); opacity: .9; }
.scn-belmont-casket-morocco-choice .curtain-left { position:absolute; top:0; left:0; width:20%; height:80%; background: linear-gradient(90deg, #a08060 0%, #c0a080 100%); border-radius: 0 0 50% 0; box-shadow: inset -10px 0 20px rgba(0,0,0,.3); animation: bcm-curtain 20s ease-in-out infinite alternate; }
.scn-belmont-casket-morocco-choice .curtain-right { position:absolute; top:0; right:0; width:20%; height:80%; background: linear-gradient(90deg, #c0a080 0%, #a08060 100%); border-radius: 0 0 0 50%; box-shadow: inset 10px 0 20px rgba(0,0,0,.3); animation: bcm-curtain 20s ease-in-out infinite alternate; animation-delay: -10s; }
.scn-belmont-casket-morocco-choice .casket-gold { position:absolute; bottom:30%; left:28%; width:40px; height:30px; background: linear-gradient(180deg, #ffd700 0%, #b8860b 100%); border-radius: 4% 4% 10% 10%; box-shadow: 0 4px 10px rgba(0,0,0,.4), 0 0 20px 4px rgba(255,215,0,.3); animation: bcm-casket 12s ease-in-out infinite; }
.scn-belmont-casket-morocco-choice .casket-silver { position:absolute; bottom:30%; left:50%; width:40px; height:30px; background: linear-gradient(180deg, #e0e0e0 0%, #a0a0a0 100%); transform: translateX(-50%); border-radius: 4% 4% 10% 10%; box-shadow: 0 4px 10px rgba(0,0,0,.4); animation: bcm-casket 12s ease-in-out infinite; animation-delay: -4s; }
.scn-belmont-casket-morocco-choice .casket-lead { position:absolute; bottom:30%; right:28%; width:40px; height:30px; background: linear-gradient(180deg, #4a4a4a 0%, #2a2a2a 100%); border-radius: 4% 4% 10% 10%; box-shadow: 0 4px 10px rgba(0,0,0,.5); animation: bcm-casket 12s ease-in-out infinite; animation-delay: -8s; }
.scn-belmont-casket-morocco-choice .portia { position:absolute; bottom:20%; left:18%; width:22px; height:60px; background: linear-gradient(180deg, #b8a088 0%, #907860 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: bcm-portia 6s ease-in-out infinite; }
.scn-belmont-casket-morocco-choice .morocco { position:absolute; bottom:20%; right:18%; width:24px; height:65px; background: linear-gradient(180deg, #5a3a2a 0%, #3a2010 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: bcm-morocco 6s ease-in-out infinite; animation-delay: -3s; }
.scn-belmont-casket-morocco-choice .train-ornament { position:absolute; bottom:18%; right:15%; width:10px; height:20px; background: radial-gradient(ellipse, #8b4513 0%, #5a2a0a 100%); border-radius: 50%; filter: blur(2px); animation: bcm-train 10s ease-in-out infinite; }
@keyframes bcm-curtain { 0% { opacity: .8; } 50% { opacity: 1; } 100% { opacity: .7; } }
@keyframes bcm-casket { 0% { transform: translateY(0) scale(1); } 50% { transform: translateY(-4px) scale(1.03); } 100% { transform: translateY(0) scale(1); } }
@keyframes bcm-portia { 0% { transform: translateX(0) translateY(0) rotate(0deg); } 25% { transform: translateX(4px) translateY(-2px) rotate(2deg); } 50% { transform: translateX(0) translateY(0) rotate(0deg); } 75% { transform: translateX(-4px) translateY(-2px) rotate(-2deg); } 100% { transform: translateX(0) translateY(0) rotate(0deg); } }
@keyframes bcm-morocco { 0% { transform: translateX(0) translateY(0) rotate(0deg); } 25% { transform: translateX(-4px) translateY(-2px) rotate(-3deg); } 50% { transform: translateX(0) translateY(0) rotate(0deg); } 75% { transform: translateX(4px) translateY(-2px) rotate(3deg); } 100% { transform: translateX(0) translateY(0) rotate(0deg); } }
@keyframes bcm-train { 0% { transform: scale(1); opacity: .6; } 50% { transform: scale(1.1); opacity: .8; } 100% { transform: scale(1); opacity: .6; } }

/* Scene 1: belmont-prince-morocco-arrives */
.scn-belmont-prince-morocco-arrives {
  background:
    linear-gradient(180deg, #d4c8a8 0%, #b8a880 30%, #8a7a5a 70%, #5a4a3a 100%),
    radial-gradient(ellipse at 50% 0%, #e8d8b0 0%, transparent 70%);
}
.scn-belmont-prince-morocco-arrives .room-bg {
  position: absolute; inset: 0 0 20% 0;
  background: linear-gradient(180deg, #c8b898 0%, #a09070 60%, #807050 100%);
  animation: pa-wall 20s ease-in-out infinite alternate;
}
.scn-belmont-prince-morocco-arrives .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #6a5a3a 0%, #4a3a2a 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: inset 0 8px 15px rgba(0,0,0,0.3);
}
.scn-belmont-prince-morocco-arrives .window-left {
  position: absolute; top: 12%; left: 5%; width: 25%; height: 40%;
  background: linear-gradient(135deg, #d0c8b0 10%, #b8b098 30%, #a09880 70%);
  border-radius: 4%;
  box-shadow: inset 0 0 20px rgba(255,255,200,0.15);
  animation: pa-window-glow 6s ease-in-out infinite alternate;
}
.scn-belmont-prince-morocco-arrives .window-right {
  position: absolute; top: 12%; right: 5%; width: 25%; height: 40%;
  background: linear-gradient(225deg, #d0c8b0 10%, #b8b098 30%, #a09880 70%);
  border-radius: 4%;
  box-shadow: inset 0 0 20px rgba(255,255,200,0.15);
  animation: pa-window-glow 6s ease-in-out infinite alternate-reverse;
}
.scn-belmont-prince-morocco-arrives .casket-gold {
  position: absolute; bottom: 22%; left: 20%; width: 40px; height: 30px;
  background: linear-gradient(135deg, #c8a050 0%, #a08030 50%, #806020 100%);
  border-radius: 8% 8% 4% 4%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.4);
  animation: pa-casket-pulse 7s ease-in-out infinite;
}
.scn-belmont-prince-morocco-arrives .casket-silver {
  position: absolute; bottom: 22%; left: 45%; width: 40px; height: 30px;
  background: linear-gradient(135deg, #b8b8c0 0%, #909090 50%, #686868 100%);
  border-radius: 8% 8% 4% 4%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.4);
  animation: pa-casket-pulse 7s ease-in-out infinite 1.5s;
}
.scn-belmont-prince-morocco-arrives .casket-lead {
  position: absolute; bottom: 22%; right: 20%; width: 40px; height: 30px;
  background: linear-gradient(135deg, #6a5a4a 0%, #4a3a2a 50%, #2a1a0a 100%);
  border-radius: 8% 8% 4% 4%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.4);
  animation: pa-casket-pulse 7s ease-in-out infinite 3s;
}
.scn-belmont-prince-morocco-arrives .figure-portia {
  position: absolute; bottom: 20%; left: 50%; transform: translateX(-50%);
  width: 24px; height: 70px;
  background: linear-gradient(180deg, #6a5a4a 0%, #3a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: pa-figure 5s ease-in-out infinite alternate;
}
.scn-belmont-prince-morocco-arrives .scroll {
  position: absolute; bottom: 30%; left: 50%; transform: translateX(20px);
  width: 12px; height: 16px;
  background: linear-gradient(180deg, #e0d0b0 0%, #c0a870 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 0 2px 5px rgba(0,0,0,0.3);
  animation: pa-scroll 5s ease-in-out infinite;
}
@keyframes pa-wall { 0% { opacity: 0.85; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes pa-window-glow { 0% { opacity: 0.7; box-shadow: inset 0 0 15px rgba(255,255,200,0.1); } 50% { opacity: 1; box-shadow: inset 0 0 30px rgba(255,255,200,0.25); } 100% { opacity: 0.8; box-shadow: inset 0 0 20px rgba(255,255,200,0.15); } }
@keyframes pa-casket-pulse { 0% { transform: scale(1); } 50% { transform: scale(1.05); } 100% { transform: scale(1); } }
@keyframes pa-figure { 0% { transform: translateX(-50%) translateY(0) rotate(0deg); } 50% { transform: translateX(-50%) translateY(-2px) rotate(2deg); } 100% { transform: translateX(-50%) translateY(0) rotate(0deg); } }
@keyframes pa-scroll { 0% { transform: translateX(20px) rotate(0deg); } 50% { transform: translateX(20px) rotate(10deg); } 100% { transform: translateX(20px) rotate(0deg); } }

/* Scene 2: venice-public-place-shylock-intro */
.scn-venice-public-place-shylock-intro {
  background:
    linear-gradient(180deg, #b8d0e0 0%, #a0b8c8 40%, #8090a0 100%),
    radial-gradient(ellipse at 50% 0%, #d0e8f0 0%, transparent 60%);
}
.scn-venice-public-place-shylock-intro .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #c8e0f0 0%, #a0b8c8 100%);
  animation: vp-sky 30s ease-in-out infinite alternate;
}
.scn-venice-public-place-shylock-intro .buildings-left {
  position: absolute; bottom: 40%; left: 0; width: 40%; height: 60%;
  background: linear-gradient(180deg, #b0a090 0%, #80705a 100%);
  border-radius: 0 10% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.2);
  animation: vp-buildings 40s ease-in-out infinite alternate;
}
.scn-venice-public-place-shylock-intro .buildings-right {
  position: absolute; bottom: 40%; right: 0; width: 40%; height: 60%;
  background: linear-gradient(180deg, #a09080 0%, #705a4a 100%);
  border-radius: 10% 0 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.2);
  animation: vp-buildings 40s ease-in-out infinite alternate-reverse;
}
.scn-venice-public-place-shylock-intro .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #8a7a6a 0%, #6a5a4a 100%);
  border-radius: 20% 20% 0 0 / 10% 10% 0 0;
  box-shadow: inset 0 10px 25px rgba(0,0,0,0.3);
}
.scn-venice-public-place-shylock-intro .shylock {
  position: absolute; bottom: 36%; left: 30%; width: 20px; height: 60px;
  background: linear-gradient(180deg, #5a4a3a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vp-shylock 8s ease-in-out infinite;
}
.scn-venice-public-place-shylock-intro .bassanio {
  position: absolute; bottom: 36%; right: 30%; width: 22px; height: 65px;
  background: linear-gradient(180deg, #8a7a5a 0%, #4a3a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vp-bassanio 8s ease-in-out infinite 2s;
}
.scn-venice-public-place-shylock-intro .bench {
  position: absolute; bottom: 34%; left: 42%; width: 60px; height: 12px;
  background: linear-gradient(135deg, #a09070 0%, #7a6a4a 100%);
  border-radius: 30% 30% 10% 10%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.3);
  animation: vp-bench 12s ease-in-out infinite;
}
@keyframes vp-sky { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.85; } }
@keyframes vp-buildings { 0% { transform: scaleY(1); } 50% { transform: scaleY(1.02); } 100% { transform: scaleY(1); } }
@keyframes vp-shylock { 0% { transform: rotate(0deg) translateY(0); } 50% { transform: rotate(-3deg) translateY(-1px); } 100% { transform: rotate(0deg) translateY(0); } }
@keyframes vp-bassanio { 0% { transform: rotate(0deg) translateY(0); } 50% { transform: rotate(2deg) translateY(-1px); } 100% { transform: rotate(0deg) translateY(0); } }
@keyframes vp-bench { 0% { transform: rotate(0deg) scale(1); } 50% { transform: rotate(1deg) scale(1.02); } 100% { transform: rotate(0deg) scale(1); } }

/* Scene 3: belmont-morocco-arrives */
.scn-belmont-morocco-arrives {
  background:
    linear-gradient(180deg, #c8b898 0%, #b0a080 40%, #908060 100%),
    radial-gradient(ellipse at 50% 0%, #e0d0b0 0%, transparent 70%);
}
.scn-belmont-morocco-arrives .bg-interior {
  position: absolute; inset: 0 0 15% 0;
  background: linear-gradient(180deg, #b8a888 0%, #988868 100%);
  animation: ma-bg 25s ease-in-out infinite alternate;
}
.scn-belmont-morocco-arrives .archway {
  position: absolute; bottom: 25%; left: 50%; transform: translateX(-50%);
  width: 45%; height: 55%;
  background: linear-gradient(180deg, #8a7a5a 0%, #5a4a3a 100%);
  border-radius: 40% 40% 0 0 / 60% 60% 0 0;
  box-shadow: inset 0 12px 30px rgba(0,0,0,0.3);
}
.scn-belmont-morocco-arrives .morocco {
  position: absolute; bottom: 20%; left: 30%; width: 30px; height: 80px;
  background: linear-gradient(180deg, #6a4a3a 0%, #3a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ma-morocco 9s ease-in-out infinite;
}
.scn-belmont-morocco-arrives .portia {
  position: absolute; bottom: 22%; right: 30%; width: 22px; height: 65px;
  background: linear-gradient(180deg, #8a6a4a 0%, #5a3a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ma-portia 9s ease-in-out infinite 1.5s;
}
.scn-belmont-morocco-arrives .nerissa {
  position: absolute; bottom: 22%; right: 18%; width: 18px; height: 55px;
  background: linear-gradient(180deg, #7a5a3a 0%, #4a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ma-nerissa 9s ease-in-out infinite 3s;
}
.scn-belmont-morocco-arrives .train {
  position: absolute; bottom: 18%; left: 15%; width: 60px; height: 40px;
  background: linear-gradient(180deg, #8a6a4a 0%, #5a3a2a 100%);
  border-radius: 30% 30% 20% 20% / 40% 40% 30% 30%;
  opacity: 0.7;
  animation: ma-train 12s ease-in-out infinite;
}
.scn-belmont-morocco-arrives .lantern-a {
  position: absolute; top: 20%; left: 15%; width: 10px; height: 18px;
  background: linear-gradient(180deg, #ffd080 0%, #b08040 100%);
  border-radius: 30% 30% 10% 10%;
  box-shadow: 0 0 20px 6px rgba(255,208,128,0.5);
  animation: ma-lantern 5s ease-in-out infinite;
}
.scn-belmont-morocco-arrives .lantern-b {
  position: absolute; top: 20%; right: 15%; width: 10px; height: 18px;
  background: linear-gradient(180deg, #ffd080 0%, #b08040 100%);
  border-radius: 30% 30% 10% 10%;
  box-shadow: 0 0 20px 6px rgba(255,208,128,0.5);
  animation: ma-lantern 5s ease-in-out infinite reverse;
}
@keyframes ma-bg { 0% { opacity: 0.85; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes ma-morocco { 0% { transform: rotate(0deg) scaleX(1); } 50% { transform: rotate(4deg) scaleX(1.03); } 100% { transform: rotate(0deg) scaleX(1); } }
@keyframes ma-portia { 0% { transform: rotate(0deg) translateY(0); } 50% { transform: rotate(-3deg) translateY(-2px); } 100% { transform: rotate(0deg) translateY(0); } }
@keyframes ma-nerissa { 0% { transform: rotate(0deg) translateY(0); } 50% { transform: rotate(-2deg) translateY(-1px); } 100% { transform: rotate(0deg) translateY(0); } }
@keyframes ma-train { 0% { transform: translateX(0); } 50% { transform: translateX(5px); } 100% { transform: translateX(0); } }
@keyframes ma-lantern { 0% { transform: rotate(-5deg); } 50% { transform: rotate(5deg); } 100% { transform: rotate(-5deg); } }

/* Scene 4: venice-street-launcelot-debate */
.scn-venice-street-launcelot-debate {
  background:
    linear-gradient(180deg, #d0d8d0 0%, #b0b8a8 40%, #909880 100%),
    radial-gradient(ellipse at 50% 0%, #e0e8d0 0%, transparent 60%);
}
.scn-venice-street-launcelot-debate .street-bg {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(180deg, #c8d0c0 0%, #a8b0a0 100%);
  animation: ld-bg 30s ease-in-out infinite alternate;
}
.scn-venice-street-launcelot-debate .buildings {
  position: absolute; bottom: 35%; left: 0; right: 0; height: 65%;
  background: linear-gradient(180deg, #a09888 0%, #80786a 100%);
  border-radius: 10% 10% 0 0 / 5% 5% 0 0;
  box-shadow: inset 0 0 30px rgba(0,0,0,0.15);
}
.scn-venice-street-launcelot-debate .launcelot {
  position: absolute; bottom: 28%; left: 50%; transform: translateX(-50%);
  width: 24px; height: 70px;
  background: linear-gradient(180deg, #8a6a4a 0%, #4a3a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ld-launcelot 3s ease-in-out infinite;
}
.scn-venice-street-launcelot-debate .conscience-shadow {
  position: absolute; bottom: 28%; left: 35%; transform: translateX(-50%);
  width: 20px; height: 60px;
  background: linear-gradient(180deg, rgba(60,50,40,0.6) 0%, rgba(40,30,20,0.5) 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  filter: blur(2px);
  animation: ld-conscience 5s ease-in-out infinite;
}
.scn-venice-street-launcelot-debate .devil-shadow {
  position: absolute; bottom: 28%; left: 65%; transform: translateX(-50%);
  width: 22px; height: 65px;
  background: linear-gradient(180deg, rgba(60,30,20,0.6) 0%, rgba(40,10,0,0.5) 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  filter: blur(2px);
  animation: ld-devil 4s ease-in-out infinite;
}
.scn-venice-street-launcelot-debate .street-lamp {
  position: absolute; bottom: 40%; right: 20%; width: 8px; height: 30px;
  background: linear-gradient(180deg, #a09080 0%, #5a4a3a 100%);
  border-radius: 20% 20% 10% 10%;
}
.scn-venice-street-launcelot-debate .cobblestones {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #7a7060 0%, #5a5040 100%);
  border-radius: 30% 30% 0 0 / 10% 10% 0 0;
  box-shadow: inset 0 5px 15px rgba(0,0,0,0.2);
  animation: ld-cobble 20s ease-in-out infinite;
}
@keyframes ld-bg { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.85; } }
@keyframes ld-launcelot { 0% { transform: translateX(-50%) rotate(0deg) scaleY(1); } 25% { transform: translateX(-50%) rotate(-10deg) scaleY(1.05); } 50% { transform: translateX(-50%) rotate(0deg) scaleY(1); } 75% { transform: translateX(-50%) rotate(10deg) scaleY(1.05); } 100% { transform: translateX(-50%) rotate(0deg) scaleY(1); } }
@keyframes ld-conscience { 0% { transform: translateX(-50%) translateY(0) rotate(0deg); } 50% { transform: translateX(-50%) translateY(-5px) rotate(-5deg); } 100% { transform: translateX(-50%) translateY(0) rotate(0deg); } }
@keyframes ld-devil { 0% { transform: translateX(-50%) translateY(0) rotate(0deg); } 50% { transform: translateX(-50%) translateY(-3px) rotate(5deg); } 100% { transform: translateX(-50%) translateY(0) rotate(0deg); } }
@keyframes ld-cobble { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.9; } }

/* venice-street-antonio-sad */
.scn-venice-street-antonio-sad {
  background: 
    linear-gradient(180deg, #a8d8ea 0%, #f0e6d0 40%, #d4c4a0 100%),
    radial-gradient(ellipse at 50% 10%, #fff5e0 0%, transparent 70%);
}
.scn-venice-street-antonio-sad .sky {
  position:absolute; inset:0 0 50% 0;
  background: linear-gradient(180deg, #a8d8ea 0%, #f0e6d0 100%);
  animation: vsa-sky 12s ease-in-out infinite alternate;
}
.scn-venice-street-antonio-sad .building-left {
  position:absolute; left:0; top:10%; bottom:30%; width:35%;
  background: linear-gradient(180deg, #c9a96e 0%, #a07a4a 100%);
  border-radius:0 4px 4px 0; box-shadow:4px 0 8px rgba(0,0,0,.2);
}
.scn-venice-street-antonio-sad .building-right {
  position:absolute; right:0; top:15%; bottom:30%; width:30%;
  background: linear-gradient(180deg, #c9a96e 0%, #a07a4a 100%);
  border-radius:4px 0 0 4px; box-shadow:-4px 0 8px rgba(0,0,0,.2);
}
.scn-venice-street-antonio-sad .canal {
  position:absolute; bottom:0; left:0; right:0; height:35%;
  background: linear-gradient(180deg, #6e8b9b 0%, #4a6a7a 100%);
  animation: vsa-water 6s ease-in-out infinite alternate;
}
.scn-venice-street-antonio-sad .bridge {
  position:absolute; bottom:35%; left:20%; right:20%; height:8%;
  background: #b88a5a; border-radius:50% 50% 0 0 / 100% 100% 0 0;
  box-shadow:0 -4px 6px rgba(0,0,0,.3);
  animation: vsa-bridge 10s ease-in-out infinite;
}
.scn-venice-street-antonio-sad .figure-antonio {
  position:absolute; bottom:42%; left:45%; width:20px; height:40px;
  background: #3a2a1a; border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vsa-figure 4s ease-in-out infinite;
}
.scn-venice-street-antonio-sad .cloud {
  position:absolute; top:15%; left:10%; width:100px; height:20px;
  background: rgba(255,255,255,.6); border-radius:50%; filter:blur(8px);
  animation: vsa-cloud 40s linear infinite;
}
.scn-venice-street-antonio-sad .sun-glow {
  position:absolute; top:5%; left:45%; width:60px; height:60px;
  background: radial-gradient(circle, #fff5c0 0%, transparent 80%);
  animation: vsa-sun 8s ease-in-out infinite alternate;
}
@keyframes vsa-sky {
  0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.7; }
}
@keyframes vsa-water {
  0% { background-position:0% 0%; } 50% { background-position:10% 5%; } 100% { background-position:0% 0%; }
}
@keyframes vsa-bridge {
  0% { transform:translateY(0) scaleX(1); } 50% { transform:translateY(-2px) scaleX(1.01); } 100% { transform:translateY(0) scaleX(1); }
}
@keyframes vsa-figure {
  0% { transform:translateY(0) rotate(0deg) scale(1); } 25% { transform:translateY(-1px) rotate(2deg) scale(1.01); } 50% { transform:translateY(0) rotate(-1deg) scale(1); } 75% { transform:translateY(-1px) rotate(1deg) scale(1.01); } 100% { transform:translateY(0) rotate(0deg) scale(1); }
}
@keyframes vsa-cloud {
  0% { transform:translateX(-100px) scale(1); } 50% { transform:translateX(200px) scale(1.05); } 100% { transform:translateX(900px) scale(1); }
}
@keyframes vsa-sun {
  0% { opacity:0.7; transform:scale(1); } 50% { opacity:1; transform:scale(1.1); } 100% { opacity:0.8; transform:scale(0.95); }
}

/* venice-street-bassanio-arrives */
.scn-venice-street-bassanio-arrives {
  background: 
    linear-gradient(180deg, #a8d8ea 0%, #f0e6d0 60%, #d4c4a0 100%),
    radial-gradient(ellipse at 50% 20%, #fff5e0 0%, transparent 60%);
}
.scn-venice-street-bassanio-arrives .sky {
  position:absolute; inset:0 0 55% 0;
  background: linear-gradient(180deg, #a8d8ea 0%, #f0e6d0 100%);
  animation: vsb-sky 14s ease-in-out infinite alternate;
}
.scn-venice-street-bassanio-arrives .distant-building {
  position:absolute; bottom:40%; right:15%; width:20%; height:30%;
  background: linear-gradient(180deg, #c9a96e 0%, #a07a4a 100%);
  border-radius:4px 4px 0 0;
  animation: vsb-building 20s ease-in-out infinite;
}
.scn-venice-street-bassanio-arrives .canal {
  position:absolute; bottom:0; left:0; right:0; height:45%;
  background: linear-gradient(180deg, #6e8b9b 0%, #4a6a7a 100%);
  animation: vsb-water 8s ease-in-out infinite alternate;
}
.scn-venice-street-bassanio-arrives .gondola-hull {
  position:absolute; bottom:25%; left:30%; width:80px; height:20px;
  background: #2c1e0e; border-radius:0 50% 50% 0 / 0 100% 100% 0;
  transform-origin: center bottom;
  animation: vsb-boat 5s ease-in-out infinite;
}
.scn-venice-street-bassanio-arrives .gondolier {
  position:absolute; bottom:32%; left:38%; width:10px; height:25px;
  background: #3a2a1a; border-radius:50% 50% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: vsb-gondolier 4s ease-in-out infinite;
}
.scn-venice-street-bassanio-arrives .figure-bassanio {
  position:absolute; bottom:25%; left:50%; width:18px; height:35px;
  background: #3a2a1a; border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vsb-bassanio 4s ease-in-out infinite alternate;
}
.scn-venice-street-bassanio-arrives .cloud {
  position:absolute; top:12%; right:5%; width:80px; height:16px;
  background: rgba(255,255,255,.5); border-radius:50%; filter:blur(6px);
  animation: vsb-cloud 45s linear infinite;
}
@keyframes vsb-sky {
  0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.9; }
}
@keyframes vsb-building {
  0% { transform:translateY(0); } 50% { transform:translateY(-2px); } 100% { transform:translateY(0); }
}
@keyframes vsb-water {
  0% { background-position:0% 0%; } 50% { background-position:5% 5%; } 100% { background-position:0% 0%; }
}
@keyframes vsb-boat {
  0% { transform:translateY(0) rotate(-2deg); } 50% { transform:translateY(-2px) rotate(2deg); } 100% { transform:translateY(0) rotate(-2deg); }
}
@keyframes vsb-gondolier {
  0% { transform:translateY(0) rotate(0deg); } 50% { transform:translateY(-1px) rotate(5deg); } 100% { transform:translateY(0) rotate(0deg); }
}
@keyframes vsb-bassanio {
  0% { transform:translateY(0) rotate(0deg) scale(1); } 50% { transform:translateY(-1px) rotate(-3deg) scale(1.01); } 100% { transform:translateY(0) rotate(0deg) scale(1); }
}
@keyframes vsb-cloud {
  0% { transform:translateX(0); } 50% { transform:translateX(-30px); } 100% { transform:translateX(-100vw); }
}

/* venice-street-gratiano-speaks */
.scn-venice-street-gratiano-speaks {
  background: linear-gradient(180deg, #b0d4e8 0%, #f0e6d0 50%, #d4c4a0 100%);
}
.scn-venice-street-gratiano-speaks .sky {
  position:absolute; inset:0 0 50% 0;
  background: linear-gradient(180deg, #b0d4e8 0%, #f0e6d0 100%);
  animation: vsg-sky 10s ease-in-out infinite alternate;
}
.scn-venice-street-gratiano-speaks .piazza-ground {
  position:absolute; bottom:0; left:0; right:0; height:40%;
  background: linear-gradient(180deg, #d4c4a0 0%, #b8a882 100%);
}
.scn-venice-street-gratiano-speaks .fountain-base {
  position:absolute; bottom:20%; left:40%; width:60px; height:30px;
  background: #a07a4a; border-radius:20% 20% 0 0; box-shadow:0 2px 4px rgba(0,0,0,.3);
}
.scn-venice-street-gratiano-speaks .fountain-water {
  position:absolute; bottom:30%; left:45%; width:20px; height:40px;
  background: radial-gradient(ellipse at 50% 80%, #6e8b9b 0%, #a8d8ea 50%, transparent 80%);
  border-radius:50%; animation: vsg-fountain 4s ease-in-out infinite alternate;
}
.scn-venice-street-gratiano-speaks .figure-gratiano {
  position:absolute; bottom:35%; left:30%; width:20px; height:45px;
  background: #3a2a1a; border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vsg-gratiano 3s ease-in-out infinite;
}
.scn-venice-street-gratiano-speaks .figure-other {
  position:absolute; bottom:35%; right:30%; width:20px; height:45px;
  background: #4a3a2a; border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vsg-other 5s ease-in-out infinite;
}
.scn-venice-street-gratiano-speaks .arch {
  position:absolute; top:20%; left:20%; right:20%; height:30%;
  border:8px solid #c9a96e; border-bottom:none;
  border-radius:50% 50% 0 0 / 100% 100% 0 0; background:transparent;
  animation: vsg-arch 12s ease-in-out infinite alternate;
}
.scn-venice-street-gratiano-speaks .cloud {
  position:absolute; top:18%; left:15%; width:60px; height:14px;
  background: rgba(255,255,255,.4); border-radius:50%; filter:blur(5px);
  animation: vsg-cloud 35s linear infinite;
}
@keyframes vsg-sky {
  0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.9; }
}
@keyframes vsg-fountain {
  0% { transform:scaleY(1) translateY(0); opacity:0.8; } 50% { transform:scaleY(1.1) translateY(-2px); opacity:1; } 100% { transform:scaleY(1) translateY(0); opacity:0.8; }
}
@keyframes vsg-gratiano {
  0% { transform:translateY(0) rotate(0deg) scale(1); } 33% { transform:translateY(-2px) rotate(5deg) scale(1.02); } 66% { transform:translateY(0) rotate(-3deg) scale(1); } 100% { transform:translateY(0) rotate(0deg) scale(1); }
}
@keyframes vsg-other {
  0% { transform:translateY(0) rotate(0deg); } 50% { transform:translateY(-1px) rotate(-2deg); } 100% { transform:translateY(0) rotate(0deg); }
}
@keyframes vsg-arch {
  0% { height:30%; } 50% { height:32%; } 100% { height:30%; }
}
@keyframes vsg-cloud {
  0% { transform:translateX(-20px); } 50% { transform:translateX(30px); } 100% { transform:translateX(120vw); }
}

/* venice-street-bassanio-request */
.scn-venice-street-bassanio-request {
  background: linear-gradient(180deg, #a8d8ea 0%, #f0e6d0 60%, #d4c4a0 100%);
}
.scn-venice-street-bassanio-request .sky {
  position:absolute; inset:0 0 60% 0;
  background: linear-gradient(180deg, #a8d8ea 0%, #f0e6d0 100%);
  animation: vsr-sky 12s ease-in-out infinite alternate;
}
.scn-venice-street-bassanio-request .building-wall {
  position:absolute; bottom:0; left:0; right:0; height:60%;
  background: linear-gradient(180deg, #d4c4a0 0%, #b8a882 100%);
  box-shadow: inset 0 8px 12px rgba(0,0,0,.2);
}
.scn-venice-street-bassanio-request .balcony-railing {
  position:absolute; bottom:30%; left:20%; right:20%; height:10%;
  background: repeating-linear-gradient(90deg, #7a5a3a 15%, transparent 15%, transparent 25%);
  border-top: 8px solid #7a5a3a; border-bottom: 8px solid #7a5a3a;
}
.scn-venice-street-bassanio-request .figure-bassanio {
  position:absolute; bottom:30%; left:30%; width:18px; height:40px;
  background: #3a2a1a; border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vsr-bassanio 4s ease-in-out infinite alternate;
}
.scn-venice-street-bassanio-request .figure-salarino {
  position:absolute; bottom:30%; right:30%; width:18px; height:40px;
  background: #4a3a2a; border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vsr-salarino 4s ease-in-out infinite alternate;
}
.scn-venice-street-bassanio-request .window-sky {
  position:absolute; top:5%; left:40%; width:20%; height:20%;
  background: radial-gradient(circle, #fff5e0 0%, #a8d8ea 100%);
  border-radius:10px; box-shadow:0 0 20px rgba(255,255,255,.5);
  animation: vsr-window 8s ease-in-out infinite alternate;
}
.scn-venice-street-bassanio-request .cloud {
  position:absolute; top:8%; left:25%; width:50px; height:12px;
  background: rgba(255,255,255,.5); border-radius:50%; filter:blur(4px);
  animation: vsr-cloud 30s linear infinite;
}
.scn-venice-street-bassanio-request .sun-glow {
  position:absolute; top:2%; left:50%; width:40px; height:40px;
  background: radial-gradient(circle, #fff5c0 0%, transparent 80%);
  animation: vsr-sun 10s ease-in-out infinite alternate;
}
@keyframes vsr-sky {
  0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.9; }
}
@keyframes vsr-bassanio {
  0% { transform:translateY(0) rotate(0deg); } 50% { transform:translateY(-1px) rotate(3deg); } 100% { transform:translateY(0) rotate(0deg); }
}
@keyframes vsr-salarino {
  0% { transform:translateY(0) rotate(0deg); } 50% { transform:translateY(-1px) rotate(-2deg); } 100% { transform:translateY(0) rotate(0deg); }
}
@keyframes vsr-window {
  0% { opacity:0.7; transform:scale(0.95); } 50% { opacity:1; transform:scale(1.05); } 100% { opacity:0.8; transform:scale(1); }
}
@keyframes vsr-cloud {
  0% { transform:translateX(0); } 50% { transform:translateX(20px); } 100% { transform:translateX(-100vw); }
}
@keyframes vsr-sun {
  0% { opacity:0.7; transform:scale(0.9); } 50% { opacity:1; transform:scale(1.2); } 100% { opacity:0.8; transform:scale(1); }
}
/* end per-scene blocks */

/* auto-stub: parent tag-classes flagged by CSS audit */
.purse { position: absolute; pointer-events: none; }
.silhouette { position: absolute; pointer-events: none; }
.swarm { position: absolute; pointer-events: none; }
.swinging { position: absolute; pointer-events: none; }
.tiny { position: absolute; pointer-events: none; }

/* ============ tier S ============ */
/* per-scene blocks (EXP step_scenes) */
.scn-venice-shylock-bond-demands {
  background: linear-gradient(180deg, #2a1e12 0%, #1a1008 50%, #0d0804 100%), radial-gradient(ellipse at 50% 30%, #3a2a1a 0%, transparent 70%);
}
.scn-venice-shylock-bond-demands .wall-shadow {
  position: absolute; inset: 0; background: linear-gradient(135deg, rgba(0,0,0,0.5) 0%, transparent 60%);
  animation: vsb-wall 12s ease-in-out infinite alternate;
}
.scn-venice-shylock-bond-demands .table {
  position: absolute; bottom: 18%; left: 25%; right: 25%; height: 6%;
  background: linear-gradient(180deg, #5a3a1a 0%, #3a2210 100%);
  border-radius: 4px; box-shadow: 0 8px 20px rgba(0,0,0,0.6);
  animation: vsb-table 14s ease-in-out infinite;
}
.scn-venice-shylock-bond-demands .candle {
  position: absolute; bottom: 28%; left: 42%; width: 4px; height: 14px;
  background: linear-gradient(180deg, #c89040 0%, #a07030 100%);
  border-radius: 2px; transform-origin: bottom;
  animation: vsb-candle 5s ease-in-out infinite alternate;
}
.scn-venice-shylock-bond-demands .candle::before {
  content: ''; position: absolute; top: -8px; left: -3px; width: 10px; height: 10px;
  background: radial-gradient(circle, #ffd680 0%, #ffb040 60%, transparent 100%);
  border-radius: 50%; animation: vsb-flame 1.6s ease-in-out infinite alternate;
}
.scn-venice-shylock-bond-demands .ring {
  position: absolute; bottom: 20%; left: 48%; width: 12px; height: 12px;
  background: radial-gradient(circle, #f0d080 0%, #c09840 100%);
  border-radius: 50%; box-shadow: 0 0 10px 2px rgba(200,150,50,0.4);
  animation: vsb-ring 6s ease-in-out infinite;
}
.scn-venice-shylock-bond-demands .hand {
  position: absolute; bottom: 19%; left: 45%; width: 16px; height: 22px;
  background: linear-gradient(180deg, #8a6a4a 0%, #5a3a2a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom left; animation: vsb-hand 4s ease-in-out infinite;
}
.scn-venice-shylock-bond-demands .letter-scroll {
  position: absolute; bottom: 23%; left: 35%; width: 20px; height: 16px;
  background: linear-gradient(135deg, #d4b888 0%, #b89868 100%);
  border-radius: 2px; transform: rotate(-15deg);
  animation: vsb-scroll 9s ease-in-out infinite alternate;
}
.scn-venice-shylock-bond-demands .figure-silhouette {
  position: absolute; bottom: 20%; right: 30%; width: 20px; height: 40px;
  background: linear-gradient(180deg, #1a120a 0%, #0d0804 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: vsb-figure 7s ease-in-out infinite;
}

@keyframes vsb-wall { 0% { opacity: 0.6; } 50% { opacity: 0.9; } 100% { opacity: 0.5; } }
@keyframes vsb-table { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-2px); } }
@keyframes vsb-candle { 0% { transform: translateY(0) scaleY(1); } 100% { transform: translateY(-1px) scaleY(0.9); } }
@keyframes vsb-flame { 0% { transform: scale(1,1); opacity: 0.8; } 50% { transform: scale(1.2,1.1); opacity: 1; } 100% { transform: scale(0.9,1.2); opacity: 0.7; } }
@keyframes vsb-ring { 0%, 100% { transform: translate(0,0) rotate(0deg); } 50% { transform: translate(1px,-1px) rotate(10deg); } }
@keyframes vsb-hand { 0%, 100% { transform: rotate(0deg) translate(0,0); } 50% { transform: rotate(8deg) translate(2px,-1px); } }
@keyframes vsb-scroll { 0% { transform: rotate(-15deg) translateX(0); } 100% { transform: rotate(-8deg) translateX(3px); } }
@keyframes vsb-figure { 0%, 100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-3px) rotate(2deg); } }

.scn-venice-court-duke-appeal {
  background: linear-gradient(180deg, #1e1814 0%, #2a221c 40%, #1e1814 100%), radial-gradient(ellipse at 50% 80%, #3a2e24 0%, transparent 70%);
}
.scn-venice-court-duke-appeal .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1e12 100%);
  border-radius: 10% 10% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,0.5);
}
.scn-venice-court-duke-appeal .column-left {
  position: absolute; bottom: 20%; left: 10%; width: 6px; height: 50%;
  background: linear-gradient(180deg, #6a5a4a 0%, #3a2a1a 100%);
  border-radius: 3px 3px 0 0; box-shadow: 2px 0 6px rgba(0,0,0,0.3);
  animation: vcd-column 20s ease-in-out infinite alternate;
}
.scn-venice-court-duke-appeal .column-right {
  position: absolute; bottom: 20%; right: 10%; width: 6px; height: 50%;
  background: linear-gradient(180deg, #6a5a4a 0%, #3a2a1a 100%);
  border-radius: 3px 3px 0 0; box-shadow: -2px 0 6px rgba(0,0,0,0.3);
  animation: vcd-column 20s ease-in-out infinite alternate-reverse;
}
.scn-venice-court-duke-appeal .chained-figure {
  position: absolute; bottom: 18%; left: 45%; width: 22px; height: 42px;
  background: linear-gradient(180deg, #1a120a 0%, #0d0804 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center; animation: vcd-figure 6s ease-in-out infinite;
}
.scn-venice-court-duke-appeal .chained-figure::after {
  content: ''; position: absolute; top: 10px; left: -4px; width: 8px; height: 6px;
  border: 2px solid #8a7a6a; border-radius: 2px;
  animation: vcd-chain 4s ease-in-out infinite alternate;
}
.scn-venice-court-duke-appeal .judge-bench {
  position: absolute; bottom: 22%; right: 20%; width: 30px; height: 18px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 4px; box-shadow: 0 4px 12px rgba(0,0,0,0.4);
}
.scn-venice-court-duke-appeal .document-pile {
  position: absolute; bottom: 19%; left: 35%; width: 14px; height: 8px;
  background: linear-gradient(135deg, #c8b898 0%, #a08868 100%);
  border-radius: 1px; transform: rotate(-5deg);
  animation: vcd-doc 7s ease-in-out infinite alternate;
}
.scn-venice-court-duke-appeal .lamp {
  position: absolute; top: 12%; left: 50%; transform: translateX(-50%);
  width: 10px; height: 14px;
  background: radial-gradient(circle at 50% 30%, #f0d080 0%, #b08040 100%);
  border-radius: 5px; box-shadow: 0 0 20px 6px rgba(200,150,50,0.5);
  animation: vcd-lamp 8s ease-in-out infinite alternate;
}

@keyframes vcd-column { 0% { transform: scaleY(1); } 100% { transform: scaleY(0.95); } }
@keyframes vcd-figure { 0%, 100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-3px) rotate(3deg); } }
@keyframes vcd-chain { 0% { transform: translateX(0); } 100% { transform: translateX(5px); } }
@keyframes vcd-doc { 0% { transform: rotate(-5deg) translateY(0); } 100% { transform: rotate(0deg) translateY(-2px); } }
@keyframes vcd-lamp { 0% { box-shadow: 0 0 20px 6px rgba(200,150,50,0.5); opacity: 0.9; } 50% { box-shadow: 0 0 30px 10px rgba(200,150,50,0.7); opacity: 1; } 100% { box-shadow: 0 0 20px 6px rgba(200,150,50,0.4); opacity: 0.8; } }

.scn-belmont-courtroom-portia {
  background: linear-gradient(180deg, #e8dcc8 0%, #d4c4ac 40%, #c8b498 100%), radial-gradient(ellipse at 70% 30%, #ffffff 0%, transparent 60%);
}
.scn-belmont-courtroom-portia .marble-wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #d8ccbc 0%, #b8a898 100%);
  border-bottom: 2px solid #a09080;
  animation: bcp-wall 15s ease-in-out infinite;
}
.scn-belmont-courtroom-portia .bench-top {
  position: absolute; bottom: 30%; left: 20%; right: 20%; height: 6%;
  background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%);
  border-radius: 4px; box-shadow: 0 6px 15px rgba(0,0,0,0.3);
}
.scn-belmont-courtroom-portia .gavel {
  position: absolute; bottom: 34%; left: 35%; width: 6px; height: 10px;
  background: linear-gradient(180deg, #8a7a5a 0%, #5a4a2a 100%);
  border-radius: 2px; transform-origin: bottom;
  animation: bcp-gavel 3s ease-in-out infinite;
}
.scn-belmont-courtroom-portia .shylock-figure {
  position: absolute; bottom: 20%; left: 30%; width: 20px; height: 38px;
  background: linear-gradient(180deg, #2a1e14 0%, #1a1008 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: bcp-shylock 7s ease-in-out infinite alternate;
}
.scn-belmont-courtroom-portia .portia-figure {
  position: absolute; bottom: 24%; right: 35%; width: 18px; height: 36px;
  background: linear-gradient(180deg, #c8b098 0%, #a08068 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom; animation: bcp-portia 8s ease-in-out infinite;
}
.scn-belmont-courtroom-portia .legal-scroll {
  position: absolute; bottom: 28%; right: 42%; width: 16px; height: 20px;
  background: linear-gradient(135deg, #e8d4b8 0%, #c8b090 100%);
  border-radius: 2px; transform: rotate(10deg);
  animation: bcp-scroll 9s ease-in-out infinite alternate;
}
.scn-belmont-courtroom-portia .window-arch {
  position: absolute; top: 8%; left: 50%; transform: translateX(-50%);
  width: 30px; height: 40px;
  background: linear-gradient(180deg, #6a8aa8 0%, #4a6a88 100%);
  border-radius: 50% 50% 0 0 / 80% 80% 0 0;
  clip-path: polygon(0% 0%, 100% 0%, 100% 80%, 0% 80%);
}
.scn-belmont-courtroom-portia .sunbeam {
  position: absolute; top: 0; left: 45%; width: 10px; height: 60%;
  background: linear-gradient(180deg, rgba(255,255,230,0.3) 0%, transparent 100%);
  transform: skewX(-10deg); animation: bcp-beam 10s ease-in-out infinite alternate;
}

@keyframes bcp-wall { 0%, 100% { opacity: 0.9; } 50% { opacity: 1; } }
@keyframes bcp-gavel { 0% { transform: rotate(0deg); } 25% { transform: rotate(15deg); } 50% { transform: rotate(0deg); } 75% { transform: rotate(-15deg); } 100% { transform: rotate(0deg); } }
@keyframes bcp-shylock { 0%, 100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-2px) rotate(4deg); } }
@keyframes bcp-portia { 0%, 100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-3px) rotate(-3deg); } }
@keyframes bcp-scroll { 0% { transform: rotate(10deg) translateX(0); } 100% { transform: rotate(4deg) translateX(3px); } }
@keyframes bcp-beam { 0% { opacity: 0.3; transform: skewX(-10deg) scaleY(1); } 100% { opacity: 0.7; transform: skewX(-15deg) scaleY(1.2); } }

.scn-item-shylocks-knife {
  background: linear-gradient(180deg, #1a1210 0%, #0d0806 40%, #1a1210 100%), radial-gradient(ellipse at 50% 60%, #3a2a1a 0%, transparent 70%);
}
.scn-item-shylocks-knife .dark-bg {
  position: absolute; inset: 0; background: radial-gradient(ellipse at 50% 50%, #2a1e14 0%, #0d0804 100%);
  animation: isk-bg 9s ease-in-out infinite alternate;
}
.scn-item-shylocks-knife .knife-blade {
  position: absolute; bottom: 45%; left: 50%; transform: translateX(-50%);
  width: 4px; height: 30px;
  background: linear-gradient(180deg, #c0b0a0 0%, #807060 100%);
  border-radius: 2px 2px 1px 1px;
  box-shadow: 0 0 8px 2px rgba(200,180,160,0.2);
  animation: isk-blade 4s ease-in-out infinite alternate;
}
.scn-item-shylocks-knife .knife-handle {
  position: absolute; bottom: 38%; left: 50%; transform: translateX(-50%);
  width: 6px; height: 12px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1e14 100%);
  border-radius: 2px; box-shadow: 0 2px 6px rgba(0,0,0,0.5);
}
.scn-item-shylocks-knife .hand-grip {
  position: absolute; bottom: 36%; left: 47%; width: 12px; height: 18px;
  background: linear-gradient(180deg, #8a6a4a 0%, #5a3a2a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom; animation: isk-grip 2.5s ease-in-out infinite alternate;
}
.scn-item-shylocks-knife .blood-drop {
  position: absolute; bottom: 42%; left: 48%; width: 4px; height: 6px;
  background: radial-gradient(circle, #8a2020 0%, #5a1010 100%);
  border-radius: 50%; animation: isk-drop 6s ease-in-out infinite;
}
.scn-item-shylocks-knife .scale-bowl {
  position: absolute; bottom: 20%; left: 30%; width: 20px; height: 10px;
  background: linear-gradient(135deg, #b09880 0%, #806050 100%);
  border-radius: 0 0 50% 50% / 0 0 100% 100%;
  box-shadow: 0 2px 4px rgba(0,0,0,0.6);
  animation: isk-scale 5s ease-in-out infinite alternate;
}
.scn-item-shylocks-knife .flesh-piece {
  position: absolute; bottom: 23%; left: 35%; width: 8px; height: 6px;
  background: linear-gradient(180deg, #c07050 0%, #a05030 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  animation: isk-flesh 3s ease-in-out infinite;
}

@keyframes isk-bg { 0%, 100% { opacity: 0.8; } 50% { opacity: 1; } }
@keyframes isk-blade { 0% { transform: translateX(-50%) rotate(0deg); } 100% { transform: translateX(-50%) rotate(8deg); } }
@keyframes isk-grip { 0% { transform: rotate(0deg) translateY(0); } 100% { transform: rotate(5deg) translateY(-2px); } }
@keyframes isk-drop { 0%, 100% { opacity: 0; transform: translateY(0); } 30% { opacity: 1; transform: translateY(4px); } 60% { opacity: 0.8; transform: translateY(8px); } 100% { opacity: 0; transform: translateY(14px); } }
@keyframes isk-scale { 0% { transform: scaleY(1); } 100% { transform: scaleY(1.1); } }
@keyframes isk-flesh { 0%, 100% { transform: rotate(0deg); } 50% { transform: rotate(10deg); } }

.scn-item-portias-ring {
  background: linear-gradient(135deg, #ffeaa7 0%, #fdcb6e 40%, #e17055 100%), radial-gradient(circle at 80% 30%, #fdcb6e 0%, transparent 60%);
}
.scn-item-portias-ring .sun-bg {
  position:absolute; inset:0 0 60% 0;
  background: linear-gradient(180deg, #ffeaa7 0%, #fdcb6e 100%);
  animation: pr-sun 6s ease-in-out infinite alternate;
}
.scn-item-portias-ring .law-table {
  position:absolute; bottom:0; left:10%; right:10%; height:40%;
  background: linear-gradient(180deg, #6d4c2a 0%, #3d2b1a 100%);
  border-radius: 12% 12% 0 0;
  box-shadow: inset 0 12px 24px rgba(0,0,0,0.5);
}
.scn-item-portias-ring .ring {
  position:absolute; bottom:30%; left:50%; width:80px; height:80px;
  margin-left:-40px;
  background: transparent;
  border: 6px solid #f0a830;
  border-radius:50%;
  box-shadow: 0 0 0 4px #b87333, 0 0 20px 4px #f0a830;
  animation: pr-ring 4s ease-in-out infinite;
}
.scn-item-portias-ring .shadow-figure {
  position:absolute; bottom:38%; left:20%; width:40px; height:90px;
  background: #1a1a1a;
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pr-figure 3s ease-in-out infinite alternate;
}
.scn-item-portias-ring .scroll {
  position:absolute; bottom:20%; right:20%; width:30px; height:50px;
  background: linear-gradient(180deg, #eed9c0 0%, #c4a882 100%);
  border-radius: 0 0 10% 10%;
  transform: rotate(8deg);
  box-shadow: 2px 2px 8px rgba(0,0,0,0.3);
  animation: pr-scroll 5s ease-in-out infinite;
}
.scn-item-portias-ring .gavel {
  position:absolute; bottom:15%; left:25%; width:12px; height:20px;
  background: #5c3a1a;
  border-radius: 20% 20% 0 0;
  transform: rotate(-12deg);
}
.scn-item-portias-ring .candle {
  position:absolute; bottom:25%; left:48%; width:10px; height:24px;
  background: #f5f5dc;
  border-radius: 4px;
  animation: pr-candle 2s ease-in-out infinite alternate;
}
.scn-item-portias-ring .flame {
  position:absolute; bottom:calc(25% + 24px); left:48%; width:12px; height:16px;
  margin-left:-1px;
  background: radial-gradient(circle, #ffdd55 0%, #ff8c00 50%, transparent 100%);
  border-radius: 50% 50% 20% 20%;
  animation: pr-flame 1.5s ease-in-out infinite alternate;
}
@keyframes pr-sun { 0% { opacity:0.9; } 50% { opacity:1; } 100% { opacity:0.85; } }
@keyframes pr-ring { 0%,100% { transform: rotate(0deg); } 50% { transform: rotate(15deg); } }
@keyframes pr-figure { 0% { transform: translateX(0) rotate(0deg); } 100% { transform: translateX(8px) rotate(2deg); } }
@keyframes pr-scroll { 0%,100% { transform: rotate(8deg) translateY(0); } 50% { transform: rotate(12deg) translateY(-4px); } }
@keyframes pr-candle { 0% { transform: scaleY(1); } 100% { transform: scaleY(0.95); } }
@keyframes pr-flame { 0% { transform: scale(1) rotate(-5deg); } 50% { transform: scale(1.1) rotate(5deg); } 100% { transform: scale(0.95) rotate(0deg); } }

.scn-belmont-ring-quarrel {
  background: linear-gradient(180deg, #1a1a3e 0%, #2c2a5e 40%, #4a4878 100%), radial-gradient(ellipse at 50% 100%, #6a68a0 0%, transparent 70%);
}
.scn-belmont-ring-quarrel .night-sky {
  position:absolute; inset:0 0 40% 0;
  background: linear-gradient(180deg, #0c0c2a 0%, #1a1a4e 100%);
  animation: brq-sky 12s ease-in-out infinite alternate;
}
.scn-belmont-ring-quarrel .moon {
  position:absolute; top:8%; right:15%; width:60px; height:60px;
  background: radial-gradient(circle, #e8e8ff 0%, #c8c8e0 100%);
  border-radius:50%;
  box-shadow: 0 0 30px 10px #c8c8e0;
  animation: brq-moon 10s ease-in-out infinite alternate;
}
.scn-belmont-ring-quarrel .ring-a {
  position:absolute; bottom:35%; left:30%; width:30px; height:30px;
  border: 3px solid #d0b060;
  border-radius:50%;
  box-shadow: 0 0 10px 2px #d0b060;
  animation: brq-ring1 3s ease-in-out infinite;
}
.scn-belmont-ring-quarrel .ring-b {
  position:absolute; bottom:35%; right:30%; width:30px; height:30px;
  border: 3px solid #c0a050;
  border-radius:50%;
  box-shadow: 0 0 10px 2px #c0a050;
  animation: brq-ring2 3s ease-in-out infinite 0.5s;
}
.scn-belmont-ring-quarrel .figure-left {
  position:absolute; bottom:30%; left:20%; width:30px; height:70px;
  background: #1a1a2a;
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: brq-figL 2s ease-in-out infinite alternate;
}
.scn-belmont-ring-quarrel .figure-right {
  position:absolute; bottom:30%; right:20%; width:30px; height:70px;
  background: #2a2a3a;
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: brq-figR 2s ease-in-out infinite alternate 1s;
}
.scn-belmont-ring-quarrel .tree-branch {
  position:absolute; top:5%; left:5%; width:120px; height:10px;
  background: #3a2a1a;
  border-radius: 30% 80% 20% 40%;
  transform: rotate(-15deg);
  animation: brq-branch 7s ease-in-out infinite;
}
.scn-belmont-ring-quarrel .firefly {
  position:absolute; top:20%; left:50%; width:6px; height:6px;
  background: #ffdd66;
  border-radius:50%;
  box-shadow: 0 0 10px 3px #ffdd66;
  animation: brq-fly 4s ease-in-out infinite alternate;
}
@keyframes brq-sky { 0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.7; } }
@keyframes brq-moon { 0% { transform: translateX(0) scale(1); } 50% { transform: translateX(-14px) scale(1.05); } 100% { transform: translateX(10px) scale(0.95); } }
@keyframes brq-ring1 { 0%,100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-12px) rotate(180deg); } }
@keyframes brq-ring2 { 0%,100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-12px) rotate(-180deg); } }
@keyframes brq-figL { 0% { transform: translateX(0) rotate(0deg); } 100% { transform: translateX(8px) rotate(3deg); } }
@keyframes brq-figR { 0% { transform: translateX(0) rotate(0deg); } 100% { transform: translateX(-8px) rotate(-3deg); } }
@keyframes brq-branch { 0%,100% { transform: rotate(-15deg); } 50% { transform: rotate(-10deg); } }
@keyframes brq-fly { 0% { transform: translate(0, 0) scale(1); opacity:0.8; } 50% { transform: translate(24px, -10px) scale(1.2); opacity:1; } 100% { transform: translate(-10px, 6px) scale(0.8); opacity:0.6; } }

.scn-belmont-happy-ending {
  background: linear-gradient(180deg, #fce8c8 0%, #f0d4a8 40%, #d4a870 100%), radial-gradient(ellipse at 20% 30%, #ffe0b0 0%, transparent 70%);
}
.scn-belmont-happy-ending .room-bg {
  position:absolute; inset:0 0 20% 0;
  background: linear-gradient(180deg, #fce8c8 0%, #ecd4b0 100%);
}
.scn-belmont-happy-ending .window-arch {
  position:absolute; top:0; left:30%; width:40%; height:60%;
  background: #b8d8e8;
  border-radius: 50% 50% 0 0 / 80% 80% 0 0;
  box-shadow: inset 0 0 30px rgba(135,206,250,0.3);
  animation: bhe-window 8s ease-in-out infinite alternate;
}
.scn-belmont-happy-ending .sunbeam {
  position:absolute; top:0; left:35%; width:30%; height:80%;
  background: linear-gradient(180deg, rgba(255,255,200,0.4) 0%, rgba(255,255,200,0) 100%);
  transform: skewX(-8deg);
  animation: bhe-beam 5s ease-in-out infinite;
}
.scn-belmont-happy-ending .table {
  position:absolute; bottom:10%; left:20%; right:20%; height:15%;
  background: linear-gradient(180deg, #a08050 0%, #806030 100%);
  border-radius: 8% 8% 0 0;
  box-shadow: 0 6px 12px rgba(0,0,0,0.3);
}
.scn-belmont-happy-ending .ring-gold {
  position:absolute; bottom:20%; left:45%; width:24px; height:24px;
  border: 3px solid gold;
  border-radius:50%;
  box-shadow: 0 0 12px 4px gold;
  animation: bhe-ring 3s ease-in-out infinite;
}
.scn-belmont-happy-ending .ship-silhouette {
  position:absolute; top:18%; left:40%; width:70px; height:30px;
  background: #3a2a1a;
  clip-path: polygon(0% 100%, 20% 40%, 100% 10%, 100% 30%, 40% 60%, 30% 100%);
  animation: bhe-ship 12s ease-in-out infinite;
}
.scn-belmont-happy-ending .letter {
  position:absolute; bottom:22%; right:25%; width:18px; height:28px;
  background: #f5e6c8;
  border: 1px solid #c0a060;
  border-radius: 2px;
  transform: rotate(6deg);
  animation: bhe-letter 4s ease-in-out infinite alternate;
}
.scn-belmont-happy-ending .flowers {
  position:absolute; bottom:0; left:10%; width:50px; height:30px;
  background: radial-gradient(circle, #ff8c8c 0%, transparent 60%) 0% 0% / 20px 20px;
  border-radius: 50%;
  animation: bhe-flowers 6s ease-in-out infinite;
}
@keyframes bhe-window { 0% { opacity:0.9; } 50% { opacity:1; } 100% { opacity:0.8; } }
@keyframes bhe-beam { 0%,100% { transform: skewX(-8deg) translateX(0); } 50% { transform: skewX(-10deg) translateX(4px); } }
@keyframes bhe-ring { 0%,100% { transform: scale(1) rotate(0deg); } 50% { transform: scale(1.1) rotate(180deg); } }
@keyframes bhe-ship { 0% { transform: translateX(0) translateY(0); } 50% { transform: translateX(10px) translateY(-4px); } 100% { transform: translateX(0) translateY(0); } }
@keyframes bhe-letter { 0% { transform: rotate(6deg) translateY(0); } 100% { transform: rotate(10deg) translateY(-3px); } }
@keyframes bhe-flowers { 0%,100% { transform: scale(1); } 50% { transform: scale(1.08); } }

.scn-scene-list-1 {
  background: linear-gradient(180deg, #8b9da6 0%, #a4b5bf 30%, #c4d1d8 100%), radial-gradient(ellipse at 50% 0%, #d0dce0 0%, transparent 70%);
}
.scn-scene-list-1 .grey-sky {
  position:absolute; inset:0 0 35% 0;
  background: linear-gradient(180deg, #7b8c96 0%, #9aaab3 100%);
  animation: sli-sky 15s ease-in-out infinite alternate;
}
.scn-scene-list-1 .horizon {
  position:absolute; bottom:35%; left:0; right:0; height:8px;
  background: #5a6a73;
  border-radius: 2px;
}
.scn-scene-list-1 .building-back {
  position:absolute; bottom:28%; left:10%; width:25%; height:35%;
  background: linear-gradient(180deg, #6a7a83 0%, #4a5a63 100%);
  border-radius: 4% 4% 0 0;
  transform: scale(0.95);
  animation: sli-build1 14s ease-in-out infinite;
}
.scn-scene-list-1 .building-mid {
  position:absolute; bottom:28%; right:15%; width:30%; height:50%;
  background: linear-gradient(180deg, #7a8a93 0%, #5a6a73 100%);
  border-radius: 6% 6% 0 0;
  animation: sli-build2 12s ease-in-out infinite;
}
.scn-scene-list-1 .street {
  position:absolute; bottom:0; left:0; right:0; height:28%;
  background: linear-gradient(180deg, #4a5a63 0%, #3a4a53 100%);
}
.scn-scene-list-1 .lamppost {
  position:absolute; bottom:20%; left:50%; width:6px; height:40px;
  margin-left:-3px;
  background: #2a3a43;
  border-radius: 2px;
}
.scn-scene-list-1 .lamppost::after {
  content:''; position:absolute; top:-6px; left:-3px; width:12px; height:8px;
  background: radial-gradient(circle, #c0c8d0 0%, #809098 100%);
  border-radius:50%;
  box-shadow: 0 0 12px 4px #c0c8d0;
}
.scn-scene-list-1 .cloud-a {
  position:absolute; top:12%; left:15%; width:100px; height:20px;
  background: linear-gradient(180deg, rgba(200,210,220,0.6) 0%, rgba(200,210,220,0.1) 100%);
  border-radius:50%;
  filter: blur(5px);
  animation: sli-cloudA 40s linear infinite;
}
.scn-scene-list-1 .cloud-b {
  position:absolute; top:22%; right:10%; width:80px; height:16px;
  background: linear-gradient(180deg, rgba(200,210,220,0.5) 0%, rgba(200,210,220,0.05) 100%);
  border-radius:50%;
  filter: blur(4px);
  animation: sli-cloudB 50s linear infinite;
}
.scn-scene-list-1 .window-light {
  position:absolute; bottom:40%; left:22%; width:12px; height:16px;
  background: #f5e0a0;
  border-radius:2px;
  box-shadow: 0 0 10px 2px #f5e0a0;
  animation: sli-window 3s ease-in-out infinite alternate;
}
@keyframes sli-sky { 0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.7; } }
@keyframes sli-build1 { 0%,100% { transform: scale(0.95) translateY(0); } 50% { transform: scale(0.95) translateY(-2px); } }
@keyframes sli-build2 { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-3px); } }
@keyframes sli-cloudA { 0% { transform: translateX(-30px); } 100% { transform: translateX(120vw); } }
@keyframes sli-cloudB { 0% { transform: translateX(0); } 100% { transform: translateX(-100vw); } }
@keyframes sli-window { 0% { opacity:0.6; box-shadow: 0 0 8px 1px #f5e0a0; } 100% { opacity:1; box-shadow: 0 0 16px 4px #f5e0a0; } }

.scn-venice-launcelot-jessica {
  background: linear-gradient(180deg, #f9e3b0 0%, #f5d59a 40%, #eec08c 100%), 
              radial-gradient(ellipse at 30% 40%, #fff8d0 0%, transparent 60%);
}
.scn-venice-launcelot-jessica .sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #9fc5e8 0%, #ffe999 100%);
  animation: vlj-cloud 40s linear infinite;
}
.scn-venice-launcelot-jessica .bldg-left {
  position: absolute; bottom: 30%; left: 5%; width: 30%; height: 55%;
  background: linear-gradient(180deg, #c4703e 0%, #8a4e2a 100%);
  border-radius: 8% 8% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,.3);
  animation: vlj-build-left 15s ease-in-out infinite alternate;
}
.scn-venice-launcelot-jessica .bldg-right {
  position: absolute; bottom: 30%; right: 5%; width: 28%; height: 50%;
  background: linear-gradient(180deg, #d4a76a 0%, #a8855a 100%);
  border-radius: 8% 8% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,.2);
  animation: vlj-build-right 15s ease-in-out infinite alternate;
}
.scn-venice-launcelot-jessica .street {
  position: absolute; bottom: 0; left: 0; right: 0; height: 32%;
  background: linear-gradient(180deg, #c8a878 0%, #b0905a 100%);
  box-shadow: inset 0 8px 20px rgba(0,0,0,.15);
  animation: vlj-street 20s ease-in-out infinite;
}
.scn-venice-launcelot-jessica .fig-launcelot {
  position: absolute; bottom: 30%; left: 35%; width: 24px; height: 50px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a100a 100%);
  border-radius: 40% 40% 45% 45% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vlj-walk 6s ease-in-out infinite;
}
.scn-venice-launcelot-jessica .fig-oldgobbo {
  position: absolute; bottom: 30%; left: 52%; width: 20px; height: 40px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 45% 45% 40% 40% / 55% 55% 45% 45%;
  transform: scale(0.85);
  transform-origin: bottom center;
  animation: vlj-bend 8s ease-in-out infinite;
}
.scn-venice-launcelot-jessica .window-glow {
  position: absolute; bottom: 40%; left: 52%; width: 14px; height: 20px;
  background: radial-gradient(circle, #ffe080 0%, #c09040 80%);
  border-radius: 10%;
  box-shadow: 0 0 24px 8px rgba(255,224,128,.6), 0 0 48px 16px rgba(255,224,128,.3);
  animation: vlj-glow 4s ease-in-out infinite alternate;
}
.scn-venice-launcelot-jessica .sunbeam {
  position: absolute; top: 0; left: 25%; width: 80%; height: 60%;
  background: linear-gradient(135deg, rgba(255,255,200,.25) 0%, transparent 60%);
  filter: blur(8px);
  animation: vlj-beam 18s ease-in-out infinite alternate;
}
@keyframes vlj-cloud {
  0% { background-position: 0% 0%; }
  50% { background-position: 40% 20%; }
  100% { background-position: 0% 0%; }
}
@keyframes vlj-build-left {
  0% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
  100% { transform: translateY(0); }
}
@keyframes vlj-build-right {
  0% { transform: translateY(0); }
  50% { transform: translateY(-3px); }
  100% { transform: translateY(0); }
}
@keyframes vlj-street {
  0% { opacity: 0.9; }
  50% { opacity: 1; }
  100% { opacity: 0.9; }
}
@keyframes vlj-walk {
  0% { transform: translateX(0) rotate(-2deg); }
  25% { transform: translateX(4px) rotate(1deg); }
  50% { transform: translateX(8px) rotate(-1deg); }
  75% { transform: translateX(12px) rotate(2deg); }
  100% { transform: translateX(16px) rotate(0); }
}
@keyframes vlj-bend {
  0% { transform: scale(0.85) rotate(0); }
  50% { transform: scale(0.85) rotate(-5deg); }
  100% { transform: scale(0.85) rotate(0); }
}
@keyframes vlj-glow {
  0% { box-shadow: 0 0 18px 4px rgba(255,224,128,.4); opacity: 0.8; }
  50% { box-shadow: 0 0 30px 10px rgba(255,224,128,.7); opacity: 1; }
  100% { box-shadow: 0 0 22px 6px rgba(255,224,128,.5); opacity: 0.9; }
}
@keyframes vlj-beam {
  0% { transform: rotate(-5deg) scaleX(1); opacity: 0.5; }
  50% { transform: rotate(5deg) scaleX(1.2); opacity: 0.8; }
  100% { transform: rotate(-3deg) scaleX(1); opacity: 0.5; }
}

/* --- venice-jessica-elopement --- */
.scn-venice-jessica-elopement {
  background: linear-gradient(180deg, #0c1430 0%, #1a2245 50%, #2c3055 100%),
              radial-gradient(ellipse at 50% 50%, #2a3a6a 0%, transparent 70%);
}
.scn-venice-jessica-elopement .night-sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #0a1028 0%, #1a2040 100%);
  animation: vje-sky 60s linear infinite;
}
.scn-venice-jessica-elopement .moon {
  position: absolute; top: 12%; left: 70%; width: 34px; height: 34px;
  background: radial-gradient(circle, #e8eaff 0%, #c0c8e0 80%);
  border-radius: 50%;
  box-shadow: 0 0 40px 15px rgba(200,210,255,.3), 0 0 80px 30px rgba(200,210,255,.1);
  animation: vje-moon 20s ease-in-out infinite alternate;
}
.scn-venice-jessica-elopement .house-wall {
  position: absolute; bottom: 20%; left: 30%; width: 40%; height: 60%;
  background: linear-gradient(180deg, #2a2a40 0%, #1a1a2a 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,.5);
  animation: vje-wall 15s ease-in-out infinite alternate;
}
.scn-venice-jessica-elopement .window-dim {
  position: absolute; bottom: 35%; left: 45%; width: 16px; height: 24px;
  background: radial-gradient(circle, #4a4a6a 0%, #2a2a4a 80%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: inset 0 0 8px rgba(0,0,0,.6);
  animation: vje-window 5s ease-in-out infinite alternate;
}
.scn-venice-jessica-elopement .jessica {
  position: absolute; bottom: 32%; left: 45%; width: 16px; height: 30px;
  background: linear-gradient(180deg, #2a2a3a 0%, #0a0a1a 100%);
  border-radius: 45% 45% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vje-jessica 6s ease-in-out infinite;
}
.scn-venice-jessica-elopement .lorenzo {
  position: absolute; bottom: 22%; left: 50%; width: 14px; height: 28px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 40% 40% 45% 45% / 55% 55% 45% 45%;
  transform-origin: bottom center;
  animation: vje-lorenzo 6s ease-in-out infinite;
}
.scn-venice-jessica-elopement .casket-light {
  position: absolute; bottom: 28%; left: 48%; width: 10px; height: 6px;
  background: radial-gradient(circle, #b8d0ff 0%, #6080c0 80%);
  border-radius: 50%;
  box-shadow: 0 0 20px 8px rgba(100,150,255,.5), 0 0 40px 16px rgba(100,150,255,.2);
  animation: vje-casket 3s ease-in-out infinite alternate;
}
.scn-venice-jessica-elopement .street-shadow {
  position: absolute; bottom: 0; left: 20%; right: 20%; height: 22%;
  background: linear-gradient(180deg, #0c0c1a 0%, #04040a 100%);
  border-radius: 50% 50% 0 0;
  filter: blur(4px);
  animation: vje-street 12s ease-in-out infinite alternate;
}
@keyframes vje-sky {
  0% { background-position: 0% 0%; }
  50% { background-position: 30% 20%; }
  100% { background-position: 0% 0%; }
}
@keyframes vje-moon {
  0% { transform: translate(0, 0); opacity: 0.9; }
  50% { transform: translate(-4px, 2px); opacity: 1; }
  100% { transform: translate(0, 0); opacity: 0.9; }
}
@keyframes vje-wall {
  0% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
  100% { transform: translateY(0); }
}
@keyframes vje-window {
  0% { opacity: 0.4; box-shadow: inset 0 0 6px rgba(0,0,0,.7); }
  50% { opacity: 0.7; box-shadow: inset 0 0 10px rgba(0,0,0,.5); }
  100% { opacity: 0.4; }
}
@keyframes vje-jessica {
  0% { transform: translateY(0) rotate(-2deg); }
  25% { transform: translateY(-2px) rotate(2deg); }
  50% { transform: translateY(0) rotate(-1deg); }
  75% { transform: translateY(-2px) rotate(1deg); }
  100% { transform: translateY(0) rotate(-2deg); }
}
@keyframes vje-lorenzo {
  0% { transform: translateX(0) rotate(0); }
  50% { transform: translateX(4px) rotate(3deg); }
  100% { transform: translateX(0) rotate(0); }
}
@keyframes vje-casket {
  0% { opacity: 0.5; transform: scale(0.9); }
  50% { opacity: 1; transform: scale(1.1) rotate(5deg); }
  100% { opacity: 0.5; transform: scale(0.9); }
}
@keyframes vje-street {
  0% { opacity: 0.3; }
  50% { opacity: 0.6; }
  100% { opacity: 0.3; }
}

/* --- venice-shylock-revenge --- */
.scn-venice-shylock-revenge {
  background: linear-gradient(180deg, #1a121a 0%, #2a1e2a 50%, #0a060a 100%),
              radial-gradient(ellipse at 30% 40%, #3a2a3a 0%, transparent 80%);
}
.scn-venice-shylock-revenge .wall-dark {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(180deg, #2a1e2a 0%, #0a060a 100%);
  animation: vsr-wall 20s ease-in-out infinite alternate;
}
.scn-venice-shylock-revenge .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #1a121a 0%, #0a060a 100%);
  box-shadow: inset 0 8px 20px rgba(0,0,0,.6);
}
.scn-venice-shylock-revenge .table {
  position: absolute; bottom: 25%; left: 30%; width: 40%; height: 8%;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 10%;
  box-shadow: 0 4px 8px rgba(0,0,0,.6);
  animation: vsr-table 15s ease-in-out infinite;
}
.scn-venice-shylock-revenge .candle-glow {
  position: absolute; bottom: 33%; left: 48%; width: 8px; height: 12px;
  background: radial-gradient(circle, #ffb040 0%, #804020 80%);
  border-radius: 50% 50% 20% 20%;
  box-shadow: 0 0 30px 15px rgba(255,176,64,.5), 0 0 60px 30px rgba(255,176,64,.2);
  animation: vsr-candle 2s ease-in-out infinite alternate;
}
.scn-venice-shylock-revenge .shylock-fig {
  position: absolute; bottom: 24%; left: 36%; width: 20px; height: 44px;
  background: linear-gradient(180deg, #2a1a1a 0%, #0a0505 100%);
  border-radius: 45% 45% 40% 40% / 55% 55% 45% 45%;
  transform-origin: bottom center;
  animation: vsr-shylock 8s ease-in-out infinite;
}
.scn-venice-shylock-revenge .window-night {
  position: absolute; top: 12%; right: 16%; width: 20%; height: 20%;
  background: radial-gradient(circle at 50% 30%, #2a2a4a 0%, #0a0a1a 90%);
  border-radius: 10%;
  box-shadow: inset 0 0 10px rgba(0,0,0,.5);
  animation: vsr-window 25s ease-in-out infinite alternate;
}
.scn-venice-shylock-revenge .shadow-sway {
  position: absolute; bottom: 24%; left: 30%; width: 40%; height: 40%;
  background: linear-gradient(135deg, rgba(0,0,0,.4) 0%, transparent 60%);
  filter: blur(12px);
  animation: vsr-shadow 10s ease-in-out infinite alternate;
}
@keyframes vsr-wall {
  0% { opacity: 0.9; }
  50% { opacity: 1; }
  100% { opacity: 0.9; }
}
@keyframes vsr-table {
  0% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
  100% { transform: translateY(0); }
}
@keyframes vsr-candle {
  0% { opacity: 0.7; transform: scaleY(0.95); }
  50% { opacity: 1; transform: scaleY(1.1) rotate(-3deg); }
  100% { opacity: 0.7; transform: scaleY(0.95); }
}
@keyframes vsr-shylock {
  0% { transform: translateY(0) rotate(-2deg); }
  25% { transform: translateY(-3px) rotate(3deg); }
  50% { transform: translateY(0) rotate(-1deg); }
  75% { transform: translateY(-3px) rotate(2deg); }
  100% { transform: translateY(0) rotate(-2deg); }
}
@keyframes vsr-window {
  0% { opacity: 0.3; }
  50% { opacity: 0.6; }
  100% { opacity: 0.3; }
}
@keyframes vsr-shadow {
  0% { transform: rotate(0deg) scale(1); opacity: 0.4; }
  50% { transform: rotate(5deg) scale(1.1); opacity: 0.6; }
  100% { transform: rotate(0deg) scale(1); opacity: 0.4; }
}

/* --- item-lead-casket --- */
.scn-item-lead-casket {
  background: linear-gradient(180deg, #f8e8c0 0%, #ecd4a0 50%, #dcc090 100%),
              radial-gradient(ellipse at 50% 40%, #fff4e0 0%, transparent 70%);
}
.scn-item-lead-casket .bg-warm {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(180deg, #f0e0c0 0%, #e0c8a0 100%);
  animation: ilc-bg 30s ease-in-out infinite alternate;
}
.scn-item-lead-casket .table-alt {
  position: absolute; bottom: 15%; left: 20%; right: 20%; height: 15%;
  background: linear-gradient(180deg, #c8a870 0%, #a88850 100%);
  border-radius: 20% 20% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,.2);
  animation: ilc-table 20s ease-in-out infinite;
}
.scn-item-lead-casket .casket-gold {
  position: absolute; bottom: 18%; left: 30%; width: 18%; height: 12%;
  background: radial-gradient(circle at 40% 30%, #ffd700 0%, #b8860b 100%);
  border-radius: 12% 12% 6% 6%;
  box-shadow: 0 6px 12px rgba(0,0,0,.3), 0 0 20px rgba(255,215,0,.3);
  animation: ilc-gold 5s ease-in-out infinite alternate;
}
.scn-item-lead-casket .casket-silver {
  position: absolute; bottom: 18%; left: 46%; width: 16%; height: 10%;
  background: radial-gradient(circle at 40% 30%, #c0c0c0 0%, #808080 100%);
  border-radius: 12% 12% 6% 6%;
  box-shadow: 0 4px 8px rgba(0,0,0,.3);
  animation: ilc-silver 7s ease-in-out infinite alternate;
}
.scn-item-lead-casket .casket-lead {
  position: absolute; bottom: 18%; right: 30%; width: 18%; height: 14%;
  background: radial-gradient(circle at 40% 30%, #5a5a5a 0%, #2a2a2a 100%);
  border-radius: 14% 14% 8% 8%;
  box-shadow: 0 6px 14px rgba(0,0,0,.5);
  animation: ilc-lead 4s ease-in-out infinite alternate;
}
.scn-item-lead-casket .bassanio-fig {
  position: absolute; bottom: 16%; left: 15%; width: 22px; height: 48px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a0a 100%);
  border-radius: 40% 40% 45% 45% / 55% 55% 45% 45%;
  transform-origin: bottom center;
  animation: ilc-bassanio 8s ease-in-out infinite;
}
.scn-item-lead-casket .scroll {
  position: absolute; bottom: 22%; right: 20%; width: 8%; height: 3%;
  background: linear-gradient(90deg, #d4c080 0%, #f0e0a0 50%, #d4c080 100%);
  border-radius: 30%;
  transform-origin: center left;
  animation: ilc-scroll 12s ease-in-out infinite alternate;
}
@keyframes ilc-bg {
  0% { opacity: 0.9; }
  50% { opacity: 1; }
  100% { opacity: 0.9; }
}
@keyframes ilc-table {
  0% { transform: translateY(0); }
  50% { transform: translateY(-3px); }
  100% { transform: translateY(0); }
}
@keyframes ilc-gold {
  0% { opacity: 0.8; box-shadow: 0 0 15px rgba(255,215,0,.2); }
  50% { opacity: 1; box-shadow: 0 0 30px rgba(255,215,0,.5); }
  100% { opacity: 0.8; box-shadow: 0 0 15px rgba(255,215,0,.2); }
}
@keyframes ilc-silver {
  0% { opacity: 0.7; transform: scaleY(1); }
  50% { opacity: 0.9; transform: scaleY(1.05); }
  100% { opacity: 0.7; transform: scaleY(1); }
}
@keyframes ilc-lead {
  0% { opacity: 0.8; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.03) rotate(-2deg); }
  100% { opacity: 0.8; transform: scale(1); }
}
@keyframes ilc-bassanio {
  0% { transform: translateX(0) rotate(-2deg); }
  25% { transform: translateX(3px) rotate(1deg); }
  50% { transform: translateX(6px) rotate(-1deg); }
  75% { transform: translateX(9px) rotate(2deg); }
  100% { transform: translateX(12px) rotate(0); }
}
@keyframes ilc-scroll {
  0% { transform: rotate(-8deg); opacity: 0.5; }
  50% { transform: rotate(8deg); opacity: 0.8; }
  100% { transform: rotate(-8deg); opacity: 0.5; }
}

.scn-venice-antonio-melancholy {
  background: linear-gradient(135deg, #fceabb 0%, #f8b500 50%, #6a4e3a 100%), radial-gradient(ellipse at 80% 20%, #fceabb 0%, transparent 50%);
}
.scn-venice-antonio-melancholy .sky { position:absolute; inset:0 0 60% 0; background: linear-gradient(180deg, #a4c2f4 0%, #e0e6f0 60%, #f5deb3 100%); animation: va-sky 8s ease-in-out infinite alternate; }
.scn-venice-antonio-melancholy .buildings-left { position:absolute; bottom:0; left:0; width:30%; height:80%; background: linear-gradient(180deg, #3a3a2a 0%, #1a1a10 100%); border-radius: 0 10% 0 0; box-shadow: 0 0 20px rgba(0,0,0,.5); }
.scn-venice-antonio-melancholy .buildings-right { position:absolute; bottom:0; right:0; width:35%; height:85%; background: linear-gradient(180deg, #2a2a1a 0%, #0a0a05 100%); border-radius: 10% 0 0 0; box-shadow: 0 0 20px rgba(0,0,0,.5); animation: va-shadow 15s ease-in-out infinite alternate; }
.scn-venice-antonio-melancholy .ground { position:absolute; bottom:0; left:0; right:0; height:20%; background: linear-gradient(180deg, #7a6a4a 0%, #5a4a3a 100%); box-shadow: inset 0 10px 20px rgba(0,0,0,.3); animation: va-ground 4s ease-in-out infinite alternate; }
.scn-venice-antonio-melancholy .antonio { position:absolute; bottom:20%; left:45%; width:20px; height:50px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: va-antonio 6s ease-in-out infinite; }
.scn-venice-antonio-melancholy .friend-a { position:absolute; bottom:21%; left:38%; width:16px; height:44px; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: va-friend 7s ease-in-out infinite; animation-delay: -2s; }
.scn-venice-antonio-melancholy .friend-b { position:absolute; bottom:22%; left:52%; width:16px; height:44px; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: va-friend 7s ease-in-out infinite; animation-delay: -4s; }
.scn-venice-antonio-melancholy .sunbeam { position:absolute; top:30%; left:20%; width:60%; height:40%; background: radial-gradient(ellipse at center, rgba(255,255,200,0.3) 0%, transparent 70%); animation: va-beam 12s ease-in-out infinite alternate; }
@keyframes va-sky { 0%{transform:translateY(0);opacity:1} 50%{transform:translateY(-5px);opacity:0.8} 100%{transform:translateY(0);opacity:0.9} }
@keyframes va-shadow { 0%{opacity:0.6} 50%{opacity:0.8} 100%{opacity:0.5} }
@keyframes va-ground { 0%{transform:translateY(0) rotate(0deg)} 50%{transform:translateY(-2px) rotate(0.5deg)} 100%{transform:translateY(0) rotate(0deg)} }
@keyframes va-antonio { 0%{transform:translateY(0) rotate(-2deg) scaleY(1)} 50%{transform:translateY(-4px) rotate(2deg) scaleY(0.98)} 100%{transform:translateY(0) rotate(0deg) scaleY(1)} }
@keyframes va-friend { 0%{transform:translateY(0) translateX(0)} 25%{transform:translateY(-2px) translateX(3px) rotate(3deg)} 50%{transform:translateY(-1px) translateX(0) rotate(-1deg)} 75%{transform:translateY(-3px) translateX(-2px) rotate(2deg)} 100%{transform:translateY(0) translateX(0) rotate(0deg)} }
@keyframes va-beam { 0%{transform:scaleX(1) skewX(-5deg);opacity:0.4} 50%{transform:scaleX(1.1) skewX(0deg);opacity:0.6} 100%{transform:scaleX(1) skewX(5deg);opacity:0.3} }

.scn-belmont-casket-rule {
  background: linear-gradient(180deg, #fdf6e3 0%, #f5e6c8 40%, #e8d5a8 100%), radial-gradient(ellipse at 50% 0%, #fff5e0 0%, transparent 60%);
}
.scn-belmont-casket-rule .wall { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #f0e0c0 0%, #d8c090 100%); animation: bc-wall 12s ease-in-out infinite alternate; }
.scn-belmont-casket-rule .floor { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #b8a080 0%, #8a7050 100%); }
.scn-belmont-casket-rule .table { position:absolute; bottom:25%; left:50%; width:80px; height:20px; transform:translateX(-50%); background: linear-gradient(180deg, #6a5030 0%, #4a3820 100%); border-radius: 4px; box-shadow: 0 4px 8px rgba(0,0,0,.3); animation: bc-table 15s ease-in-out infinite alternate; }
.scn-belmont-casket-rule .casket { position:absolute; bottom:28%; left:50%; width:30px; height:30px; transform:translateX(-50%); background: radial-gradient(circle at 30% 30%, #ffd700 0%, #b8860b 70%); border-radius: 8% 8% 2% 2%; box-shadow: 0 0 20px rgba(255,215,0,0.6), inset 0 0 10px rgba(255,215,0,0.3); animation: bc-casket 5s ease-in-out infinite; }
.scn-belmont-casket-rule .portia { position:absolute; bottom:28%; left:35%; width:18px; height:46px; background: linear-gradient(180deg, #c08050 0%, #a06030 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: bc-portia 8s ease-in-out infinite; }
.scn-belmont-casket-rule .bassanio { position:absolute; bottom:27%; left:55%; width:20px; height:50px; background: linear-gradient(180deg, #604020 0%, #402810 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: bc-bassanio 9s ease-in-out infinite; animation-delay: -3s; }
.scn-belmont-casket-rule .light-spot { position:absolute; top:20%; left:30%; width:40%; height:50%; background: radial-gradient(ellipse at center, rgba(255,240,200,0.4) 0%, transparent 70%); animation: bc-light 10s ease-in-out infinite alternate; }
@keyframes bc-wall { 0%{opacity:0.9;transform:scaleY(1)} 50%{opacity:1;transform:scaleY(1.01)} 100%{opacity:0.95;transform:scaleY(1)} }
@keyframes bc-table { 0%{transform:translateX(-50%) translateY(0) rotate(0deg)} 50%{transform:translateX(-50%) translateY(-1px) rotate(0.5deg)} 100%{transform:translateX(-50%) translateY(0) rotate(0deg)} }
@keyframes bc-casket { 0%{transform:translateX(-50%) rotate(0deg) scale(1)} 50%{transform:translateX(-50%) rotate(5deg) scale(1.05)} 100%{transform:translateX(-50%) rotate(0deg) scale(1)} }
@keyframes bc-portia { 0%{transform:translateY(0) rotate(-3deg) scaleY(1)} 33%{transform:translateY(-3px) rotate(3deg) scaleY(0.97)} 66%{transform:translateY(-1px) rotate(-1deg) scaleY(1)} 100%{transform:translateY(0) rotate(0deg) scaleY(1)} }
@keyframes bc-bassanio { 0%{transform:translateY(0) rotate(2deg)} 33%{transform:translateY(-2px) rotate(-2deg)} 66%{transform:translateY(-1px) rotate(1deg)} 100%{transform:translateY(0) rotate(0deg)} }
@keyframes bc-light { 0%{transform:translateX(0) scale(1);opacity:0.3} 50%{transform:translateX(10px) scale(1.1);opacity:0.5} 100%{transform:translateX(0) scale(1);opacity:0.4} }

.scn-venice-shylock-bond {
  background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 50%, #0a0505 100%), radial-gradient(ellipse at 50% 80%, #3a2a1a 0%, transparent 70%);
}
.scn-venice-shylock-bond .wall { position:absolute; inset:0 0 25% 0; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); animation: vs-wall 20s ease-in-out infinite alternate; }
.scn-venice-shylock-bond .table { position:absolute; bottom:20%; left:50%; width:100px; height:15px; transform:translateX(-50%); background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 4px; box-shadow: 0 6px 12px rgba(0,0,0,.6); animation: vs-table 10s ease-in-out infinite alternate; }
.scn-venice-shylock-bond .document { position:absolute; bottom:25%; left:50%; width:40px; height:30px; transform:translateX(-50%); background: linear-gradient(180deg, #e8d8b0 0%, #c8b890 100%); border-radius: 2px; box-shadow: 0 2px 4px rgba(0,0,0,.5); animation: vs-document 8s ease-in-out infinite; }
.scn-venice-shylock-bond .shylock { position:absolute; bottom:22%; left:38%; width:18px; height:48px; background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: vs-shylock 6s ease-in-out infinite; }
.scn-venice-shylock-bond .bassanio { position:absolute; bottom:23%; left:55%; width:20px; height:50px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: vs-bassanio 9s ease-in-out infinite; animation-delay: -4s; }
.scn-venice-shylock-bond .candle { position:absolute; bottom:24%; left:44%; width:8px; height:20px; background: linear-gradient(180deg, #f0c060 0%, #b08030 100%); border-radius: 50% 50% 10% 10%; box-shadow: 0 0 24px 8px rgba(240,192,96,0.6); animation: vs-candle 2s ease-in-out infinite; }
.scn-venice-shylock-bond .wall-shadow { position:absolute; bottom:30%; left:10%; width:80%; height:40%; background: radial-gradient(ellipse at 50% 0%, rgba(0,0,0,0.6) 0%, transparent 60%); animation: vs-shadow 5s ease-in-out infinite alternate; }
@keyframes vs-wall { 0%{opacity:0.8;transform:scaleX(1)} 50%{opacity:0.9;transform:scaleX(1.02)} 100%{opacity:0.85;transform:scaleX(1)} }
@keyframes vs-table { 0%{transform:translateX(-50%) rotate(0deg);box-shadow:0 6px 12px rgba(0,0,0,.6)} 50%{transform:translateX(-50%) rotate(1deg);box-shadow:0 8px 16px rgba(0,0,0,.7)} 100%{transform:translateX(-50%) rotate(0deg);box-shadow:0 6px 12px rgba(0,0,0,.6)} }
@keyframes vs-document { 0%{transform:translateX(-50%) rotate(-2deg) scaleY(1)} 33%{transform:translateX(-50%) rotate(4deg) scaleY(1.03)} 66%{transform:translateX(-50%) rotate(-1deg) scaleY(0.97)} 100%{transform:translateX(-50%) rotate(0deg) scaleY(1)} }
@keyframes vs-shylock { 0%{transform:translateY(0) rotate(-3deg) scaleY(1)} 25%{transform:translateY(-2px) rotate(5deg) scaleY(0.96)} 50%{transform:translateY(-1px) rotate(-2deg) scaleY(1.02)} 75%{transform:translateY(-3px) rotate(3deg) scaleY(0.98)} 100%{transform:translateY(0) rotate(0deg) scaleY(1)} }
@keyframes vs-bassanio { 0%{transform:translateY(0) rotate(0deg)} 33%{transform:translateY(-2px) rotate(-3deg)} 66%{transform:translateY(-1px) rotate(2deg)} 100%{transform:translateY(0) rotate(0deg)} }
@keyframes vs-candle { 0%{transform:scaleY(1) translateY(0);opacity:0.9} 50%{transform:scaleY(1.1) translateY(-2px);opacity:1} 100%{transform:scaleY(1) translateY(0);opacity:0.8} }
@keyframes vs-shadow { 0%{transform:translateX(0) scale(1);opacity:0.5} 50%{transform:translateX(5px) scale(1.1);opacity:0.7} 100%{transform:translateX(0) scale(1);opacity:0.4} }

.scn-item-gold-casket {
  background: linear-gradient(180deg, #f0e8d0 0%, #e0d0a0 50%, #c0a070 100%), radial-gradient(ellipse at 50% 0%, #fff0d0 0%, transparent 60%);
}
.scn-item-gold-casket .curtain-left { position:absolute; top:0; left:0; width:20%; height:100%; background: linear-gradient(180deg, #704060 0%, #502030 100%); border-radius: 0 10% 10% 0; animation: ig-curtain 10s ease-in-out infinite alternate; }
.scn-item-gold-casket .curtain-right { position:absolute; top:0; right:0; width:20%; height:100%; background: linear-gradient(180deg, #704060 0%, #502030 100%); border-radius: 10% 0 0 10%; animation: ig-curtain 10s ease-in-out infinite alternate-reverse; }
.scn-item-gold-casket .pedestal { position:absolute; bottom:15%; left:50%; width:60px; height:40px; transform:translateX(-50%); background: linear-gradient(180deg, #c0a070 0%, #a08050 100%); border-radius: 4px 4px 2px 2px; box-shadow: 0 8px 16px rgba(0,0,0,.3); }
.scn-item-gold-casket .casket-gold { position:absolute; bottom:30%; left:50%; width:40px; height:30px; transform:translateX(-50%); background: radial-gradient(circle at 30% 30%, #ffd700 0%, #b8860b 70%); border-radius: 8% 8% 2% 2%; box-shadow: 0 0 30px rgba(255,215,0,0.8), inset 0 0 10px rgba(255,215,0,0.5); animation: ig-casket 4s ease-in-out infinite; }
.scn-item-gold-casket .prince { position:absolute; bottom:28%; left:45%; width:22px; height:55px; background: linear-gradient(180deg, #8a6a4a 0%, #5a3a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ig-prince 3s ease-in-out infinite; }
.scn-item-gold-casket .sparkles { position:absolute; top:20%; left:20%; width:60%; height:60%; background: radial-gradient(circle at 30% 30%, #fff 0%, transparent 50%), radial-gradient(circle at 70% 70%, #ffd700 0%, transparent 30%); animation: ig-sparkle 2s ease-in-out infinite; }
@keyframes ig-curtain { 0%{transform:scaleX(1);opacity:0.8} 50%{transform:scaleX(0.95);opacity:0.9} 100%{transform:scaleX(1);opacity:0.85} }
@keyframes ig-casket { 0%{transform:translateX(-50%) rotate(-5deg) scale(1);opacity:0.9} 25%{transform:translateX(-50%) rotate(10deg) scale(1.08);opacity:1} 50%{transform:translateX(-50%) rotate(-3deg) scale(0.95);opacity:0.95} 75%{transform:translateX(-50%) rotate(5deg) scale(1.03);opacity:1} 100%{transform:translateX(-50%) rotate(0deg) scale(1);opacity:0.9} }
@keyframes ig-prince { 0%{transform:translateY(0) rotate(-5deg) scaleY(1)} 33%{transform:translateY(-6px) rotate(8deg) scaleY(0.95)} 66%{transform:translateY(-3px) rotate(-4deg) scaleY(1.05)} 100%{transform:translateY(0) rotate(0deg) scaleY(1)} }
@keyframes ig-sparkle { 0%{opacity:0.3;transform:scale(0.8) rotate(0deg)} 50%{opacity:0.7;transform:scale(1.2) rotate(45deg)} 100%{opacity:0.4;transform:scale(0.9) rotate(0deg)} }
/* end per-scene blocks */
