/* 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) */
/* === forced-medicine === */
.scn-forced-medicine {
  background: linear-gradient(180deg, #f8e8c8 0%, #e8d0a0 30%, #c8a870 100%),
              radial-gradient(ellipse at 50% 0%, #fff4dc 0%, transparent 60%);
}
.scn-forced-medicine .bg { position:absolute; inset:0; background: linear-gradient(180deg, #d8c098 0%, #b89060 100%); }
.scn-forced-medicine .cupboard { position:absolute; top:10%; left:5%; width:40%; height:70%; background: linear-gradient(180deg, #8a6a40 0%, #5a3a1a 100%); border-radius: 4% / 2%; box-shadow: inset 0 0 20px rgba(0,0,0,0.5), 4px 0 8px rgba(0,0,0,0.3); }
.scn-forced-medicine .shelf { position:absolute; top:28%; left:5%; width:40%; height:3%; background: #6a4a20; box-shadow: 0 4px 6px rgba(0,0,0,0.4); }
.scn-forced-medicine .bottle { position:absolute; top:20%; left:20%; width:12%; height:18%; background: radial-gradient(ellipse at 40% 20%, #c8b080 0%, #8a6a30 80%); border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%; box-shadow: inset 0 -6px 10px rgba(0,0,0,0.3), 2px 2px 6px rgba(0,0,0,0.5); animation: fm-bottle 5s ease-in-out infinite; }
.scn-forced-medicine .spoon { position:absolute; top:32%; left:28%; width:6%; height:12%; background: linear-gradient(180deg, #d0c0a0 0%, #a09070 100%); border-radius: 40% 40% 10% 10% / 70% 70% 20% 20%; transform: rotate(-20deg); box-shadow: 0 2px 4px rgba(0,0,0,0.3); animation: fm-spoon 6s ease-in-out infinite alternate; }
.scn-forced-medicine .hand { position:absolute; top:30%; left:22%; width:16%; height:20%; background: linear-gradient(180deg, #e0b888 0%, #c89868 100%); border-radius: 60% 40% 50% 50% / 80% 60% 40% 40%; transform-origin: 50% 90%; animation: fm-hand 4s ease-in-out infinite; }
.scn-forced-medicine .face-shadow { position:absolute; top:8%; right:8%; width:18%; height:22%; background: radial-gradient(ellipse at 50% 40%, #2a1a0a 0%, #1a0a00 80%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; opacity:0.7; animation: fm-face 7s ease-in-out infinite alternate; }
.scn-forced-medicine .glow { position:absolute; top:10%; left:15%; width:30%; height:30%; background: radial-gradient(circle, rgba(255,240,200,0.4) 0%, transparent 70%); animation: fm-glow 3s ease-in-out infinite alternate; }
@keyframes fm-bottle { 0%,100% { transform: translateY(0) rotate(0); } 50% { transform: translateY(-4px) rotate(2deg); } }
@keyframes fm-spoon { 0% { transform: rotate(-20deg) translateY(0); } 50% { transform: rotate(-15deg) translateY(-3px); } 100% { transform: rotate(-20deg) translateY(0); } }
@keyframes fm-hand { 0% { transform: rotate(0) translateY(0); } 25% { transform: rotate(-10deg) translateY(-5px); } 50% { transform: rotate(5deg) translateY(2px); } 75% { transform: rotate(-5deg) translateY(-2px); } 100% { transform: rotate(0) translateY(0); } }
@keyframes fm-face { 0% { opacity:0.6; transform: scale(1); } 50% { opacity:0.8; transform: scale(1.05); } 100% { opacity:0.6; transform: scale(1); } }
@keyframes fm-glow { 0% { opacity:0.3; } 50% { opacity:0.6; } 100% { opacity:0.3; } }

/* === news-of-convicts === */
.scn-news-of-convicts {
  background: linear-gradient(180deg, #3a1a0a 0%, #1a0a00 40%, #2a1200 100%),
              radial-gradient(ellipse at 40% 60%, #ff8030 0%, transparent 70%);
}
.scn-news-of-convicts .room-bg { position:absolute; inset:0; background: linear-gradient(180deg, #2a1200 0%, #1a0800 100%); }
.scn-news-of-convicts .fireplace { position:absolute; bottom:10%; left:30%; width:40%; height:50%; background: linear-gradient(180deg, #4a3020 0%, #2a1a0a 100%); border-radius: 10% 10% 5% 5% / 20% 20% 10% 10%; box-shadow: inset 0 -20px 30px rgba(0,0,0,0.6); }
.scn-news-of-convicts .fire-glow { position:absolute; bottom:35%; left:35%; width:30%; height:30%; background: radial-gradient(circle, #ff8040 0%, #ff6010 30%, rgba(255,80,0,0.2) 60%, transparent 100%); animation: nc-fire 2s ease-in-out infinite alternate; }
.scn-news-of-convicts .mantel { position:absolute; bottom:60%; left:32%; width:36%; height:4%; background: #4a2a10; box-shadow: 0 4px 8px rgba(0,0,0,0.5); }
.scn-news-of-convicts .clock { position:absolute; bottom:64%; left:43%; width:10%; height:12%; background: radial-gradient(circle, #c8a060 0%, #8a6030 80%); border-radius: 50%; box-shadow: 0 2px 6px rgba(0,0,0,0.4); animation: nc-clock 6s ease-in-out infinite; }
.scn-news-of-convicts .fig-silhouette { position:absolute; bottom:10%; left:45%; width:12%; height:35%; background: linear-gradient(90deg, #0a0500 0%, #1a0a00 100%); border-radius: 50% 50% 40% 40% / 70% 70% 40% 40%; transform-origin: bottom center; animation: nc-fig 8s ease-in-out infinite; }
.scn-news-of-convicts .cat { position:absolute; bottom:8%; left:55%; width:8%; height:6%; background: #1a0a00; border-radius: 50% 50% 40% 40% / 80% 80% 40% 40%; transform: scale(0.8); animation: nc-cat 5s ease-in-out infinite alternate; }
.scn-news-of-convicts .shadow-dance { position:absolute; bottom:10%; left:35%; width:30%; height:40%; background: rgba(0,0,0,0.4); filter: blur(10px); animation: nc-shadow 7s ease-in-out infinite; }
@keyframes nc-fire { 0% { transform: scale(1) translateY(0); opacity:0.8; } 50% { transform: scale(1.1) translateY(-5px); opacity:1; } 100% { transform: scale(0.95) translateY(2px); opacity:0.7; } }
@keyframes nc-clock { 0%,100% { transform: rotate(0) scale(1); } 50% { transform: rotate(5deg) scale(1.02); } }
@keyframes nc-fig { 0% { transform: translateX(0) rotate(0); } 25% { transform: translateX(5px) rotate(-2deg); } 50% { transform: translateX(10px) rotate(2deg); } 75% { transform: translateX(5px) rotate(-1deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes nc-cat { 0% { transform: scale(0.8) translateY(0); } 100% { transform: scale(0.85) translateY(-3px); } }
@keyframes nc-shadow { 0% { transform: scaleX(1) translateX(0); opacity:0.3; } 50% { transform: scaleX(1.2) translateX(10px); opacity:0.5; } 100% { transform: scaleX(1) translateX(0); opacity:0.3; } }

/* === item-file === */
.scn-item-file {
  background: linear-gradient(180deg, #8a9a9a 0%, #6a7a7a 30%, #4a5a5a 100%),
              radial-gradient(ellipse at 50% 0%, #b0c0c0 0%, transparent 70%);
}
.scn-item-file .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #a0b0b0 0%, #7a8a8a 100%); animation: if-sky 10s ease-in-out infinite alternate; }
.scn-item-file .hedge { position:absolute; bottom:25%; left:0; right:0; height:30%; background: linear-gradient(180deg, #5a6a4a 0%, #3a4a2a 100%); border-radius: 50% 50% 0 0 / 80% 80% 0 0; box-shadow: inset 0 10px 20px rgba(0,0,0,0.3); animation: if-hedge 15s ease-in-out infinite alternate; }
.scn-item-file .gate { position:absolute; bottom:25%; left:20%; width:20%; height:35%; background: linear-gradient(180deg, #6a5a3a 0%, #4a3a1a 100%); border-radius: 4% 4% 2% 2% / 10% 10% 5% 5%; box-shadow: 2px 0 6px rgba(0,0,0,0.3); }
.scn-item-file .post { position:absolute; bottom:25%; left:45%; width:4%; height:40%; background: linear-gradient(180deg, #5a4a2a 0%, #3a2a0a 100%); border-radius: 10% / 5%; box-shadow: 0 4px 8px rgba(0,0,0,0.3); }
.scn-item-file .finger { position:absolute; bottom:50%; left:44%; width:6%; height:15%; background: linear-gradient(180deg, #8a7a5a 0%, #6a5a3a 100%); border-radius: 50% 50% 30% 30% / 70% 70% 40% 40%; transform: rotate(-5deg); animation: if-finger 6s ease-in-out infinite; }
.scn-item-file .mist { position:absolute; bottom:20%; left:0; right:0; height:30%; background: linear-gradient(180deg, rgba(180,200,200,0.4) 0%, transparent 100%); filter: blur(8px); animation: if-mist 20s ease-in-out infinite alternate; }
.scn-item-file .damp-rail { position:absolute; bottom:25%; left:60%; width:15%; height:2%; background: #4a5a4a; border-radius: 20%; box-shadow: 0 2px 4px rgba(0,0,0,0.2); animation: if-rail 4s ease-in-out infinite alternate; }
@keyframes if-sky { 0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.7; } }
@keyframes if-hedge { 0% { transform: translateY(0); } 50% { transform: translateY(-4px); } 100% { transform: translateY(0); } }
@keyframes if-finger { 0% { transform: rotate(-5deg) translateY(0); } 50% { transform: rotate(-3deg) translateY(-2px); } 100% { transform: rotate(-5deg) translateY(0); } }
@keyframes if-mist { 0% { opacity:0.3; transform: translateX(0); } 50% { opacity:0.6; transform: translateX(-20px); } 100% { opacity:0.3; transform: translateX(0); } }
@keyframes if-rail { 0% { opacity:0.6; } 100% { opacity:1; } }

/* === misty-marshes === */
.scn-misty-marshes {
  background: linear-gradient(180deg, #5a6a6a 0%, #3a4a4a 40%, #2a3a3a 100%),
              radial-gradient(ellipse at 60% 80%, #6a7a7a 0%, transparent 70%);
}
.scn-misty-marshes .sky-rimy { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #7a8a8a 0%, #5a6a6a 100%); animation: mm-sky 12s ease-in-out infinite alternate; }
.scn-misty-marshes .marsh-ground { position:absolute; bottom:0; left:-10%; right:-10%; height:55%; background: linear-gradient(180deg, #4a5a3a 0%, #2a3a1a 100%); border-radius: 40% 60% 0 0 / 80% 70% 0 0; box-shadow: inset 0 10px 20px rgba(0,0,0,0.4); }
.scn-misty-marshes .ditch { position:absolute; bottom:15%; left:10%; width:40%; height:8%; background: #2a3a2a; border-radius: 30% 70% 50% 50% / 60% 40% 60% 40%; box-shadow: inset 0 4px 8px rgba(0,0,0,0.3); }
.scn-misty-marshes .reeds { position:absolute; bottom:30%; left:15%; width:5%; height:25%; background: linear-gradient(180deg, #5a6a3a 0%, #3a4a1a 100%); border-radius: 40% 40% 10% 10% / 80% 80% 20% 20%; transform: rotate(10deg); transform-origin: bottom center; animation: mm-reeds 6s ease-in-out infinite alternate; }
.scn-misty-marshes .post-sign { position:absolute; bottom:25%; left:60%; width:4%; height:35%; background: linear-gradient(180deg, #5a4a2a 0%, #3a2a0a 100%); border-radius: 10% / 5%; box-shadow: 0 4px 8px rgba(0,0,0,0.3); }
.scn-misty-marshes .finger-point { position:absolute; bottom:45%; left:59%; width:6%; height:14%; background: linear-gradient(180deg, #7a6a4a 0%, #5a4a2a 100%); border-radius: 50% 50% 30% 30% / 70% 70% 40% 40%; transform: rotate(-5deg); animation: mm-finger 8s ease-in-out infinite; }
.scn-misty-marshes .fog-bank { position:absolute; bottom:20%; left:0; right:0; height:40%; background: linear-gradient(180deg, rgba(180,190,190,0.3) 0%, transparent 100%); filter: blur(12px); animation: mm-fog 25s linear infinite alternate; }
.scn-misty-marshes .dew-glint { position:absolute; top:30%; left:30%; width:10%; height:10%; background: radial-gradient(circle, rgba(220,230,230,0.6) 0%, transparent 70%); animation: mm-dew 4s ease-in-out infinite alternate; }
@keyframes mm-sky { 0% { opacity:0.7; } 50% { opacity:1; } 100% { opacity:0.8; } }
@keyframes mm-reeds { 0% { transform: rotate(10deg) scaleY(1); } 50% { transform: rotate(8deg) scaleY(1.05); } 100% { transform: rotate(12deg) scaleY(1); } }
@keyframes mm-finger { 0% { transform: rotate(-5deg) translateY(0); } 50% { transform: rotate(-2deg) translateY(-3px); } 100% { transform: rotate(-5deg) translateY(0); } }
@keyframes mm-fog { 0% { opacity:0.2; transform: translateX(0); } 50% { opacity:0.5; transform: translateX(-30px); } 100% { opacity:0.2; transform: translateX(0); } }
@keyframes mm-dew { 0% { opacity:0.2; } 50% { opacity:0.8; } 100% { opacity:0.2; } }

.scn-biddy-letter { background: linear-gradient(180deg, #f5e6c8 0%, #d9b88c 100%), radial-gradient(ellipse at 80% 20%, #fff8e0 0%, transparent 60%); }
.scn-biddy-letter .wall { position: absolute; inset: 0 0 40% 0; background: linear-gradient(180deg, #f0d6a8 0%, #e0c090 100%); }
.scn-biddy-letter .floor { position: absolute; bottom: 0; left: 0; right: 0; height: 40%; background: linear-gradient(180deg, #8b6f4e 0%, #5c4530 100%); }
.scn-biddy-letter .desk { position: absolute; bottom: 20%; left: 50%; width: 160px; height: 50px; transform: translateX(-50%); background: linear-gradient(180deg, #7a5a3e 0%, #4a3220 100%); border-radius: 4px; box-shadow: 0 4px 8px rgba(0,0,0,0.3); }
.scn-biddy-letter .letter { position: absolute; bottom: 32%; left: 50%; width: 40px; height: 30px; transform: translateX(-50%) rotate(-2deg); background: linear-gradient(135deg, #f7f1e0 0%, #e8dcc8 100%); border-radius: 2px; box-shadow: 0 2px 6px rgba(0,0,0,0.2); animation: bd-letter 6s ease-in-out infinite; }
.scn-biddy-letter .figure { position: absolute; bottom: 18%; left: 38%; width: 30px; height: 70px; background: linear-gradient(180deg, #3a2a1e 0%, #1a1008 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: bd-figure 8s ease-in-out infinite; }
.scn-biddy-letter .lamp { position: absolute; bottom: 30%; left: 55%; width: 12px; height: 18px; background: radial-gradient(circle, #ffdd88 0%, #ccaa55 60%); border-radius: 50% 50% 20% 20%; box-shadow: 0 0 30px 10px rgba(255,221,136,0.6), 0 0 60px 20px rgba(255,221,136,0.3); animation: bd-lamp 4s ease-in-out infinite alternate; }
.scn-biddy-letter .window { position: absolute; top: 12%; right: 15%; width: 50px; height: 70px; background: linear-gradient(180deg, #c0d8f0 0%, #a0b8d0 100%); border-radius: 4px; border: 3px solid #6a4a2a; box-shadow: inset 0 0 10px rgba(255,255,255,0.3); animation: bd-window 12s ease-in-out infinite; }
@keyframes bd-letter {
  0% { transform: translateX(-50%) rotate(-2deg) scale(1); }
  50% { transform: translateX(-50%) rotate(1deg) scale(1.02); }
  100% { transform: translateX(-50%) rotate(-2deg) scale(1); }
}
@keyframes bd-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 bd-lamp {
  0% { box-shadow: 0 0 30px 10px rgba(255,221,136,0.6), 0 0 60px 20px rgba(255,221,136,0.3); opacity: 0.9; }
  50% { box-shadow: 0 0 40px 15px rgba(255,221,136,0.8), 0 0 80px 30px rgba(255,221,136,0.5); opacity: 1; }
  100% { box-shadow: 0 0 30px 10px rgba(255,221,136,0.6), 0 0 60px 20px rgba(255,221,136,0.3); opacity: 0.9; }
}
@keyframes bd-window {
  0% { opacity: 0.7; }
  50% { opacity: 1; }
  100% { opacity: 0.7; }
}

.scn-joes-visit { background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0e 100%), radial-gradient(ellipse at 50% 100%, #5a4a3a 0%, transparent 60%); }
.scn-joes-visit .tavern-bg { position: absolute; inset: 0; background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%); }
.scn-joes-visit .table { position: absolute; bottom: 20%; left: 30%; width: 80px; height: 40px; background: linear-gradient(180deg, #5a3a22 0%, #3a2210 100%); border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.5); }
.scn-joes-visit .playbill { position: absolute; bottom: 30%; left: 35%; width: 30px; height: 40px; background: linear-gradient(135deg, #d0b88a 0%, #b89a6a 100%); border-radius: 2px; transform: rotate(-5deg); animation: jv-playbill 8s ease-in-out infinite; }
.scn-joes-visit .joe-silhouette { position: absolute; bottom: 10%; left: 20%; width: 40px; height: 80px; background: linear-gradient(180deg, #2a1a0e 0%, #0a0502 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: jv-joe 6s ease-in-out infinite; }
.scn-joes-visit .pip-silhouette { position: absolute; bottom: 10%; left: 60%; width: 30px; height: 70px; background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: jv-pip 7s ease-in-out infinite; }
.scn-joes-visit .mug-1 { position: absolute; bottom: 28%; left: 28%; width: 12px; height: 18px; background: linear-gradient(180deg, #6a4a2a 0%, #3a2210 100%); border-radius: 4px 4px 8px 8px; animation: jv-mug 9s ease-in-out infinite; }
.scn-joes-visit .mug-2 { position: absolute; bottom: 28%; left: 65%; width: 12px; height: 18px; background: linear-gradient(180deg, #6a4a2a 0%, #3a2210 100%); border-radius: 4px 4px 8px 8px; animation: jv-mug 9s ease-in-out infinite 2s; }
.scn-joes-visit .candle { position: absolute; bottom: 35%; left: 45%; width: 4px; height: 20px; background: linear-gradient(180deg, #ffdd88 0%, #cc8833 80%); border-radius: 2px; box-shadow: 0 0 20px 8px rgba(255,221,136,0.5); animation: jv-candle 4s ease-in-out infinite alternate; }
@keyframes jv-playbill {
  0% { transform: rotate(-5deg) translateY(0); }
  50% { transform: rotate(-2deg) translateY(-2px); }
  100% { transform: rotate(-5deg) translateY(0); }
}
@keyframes jv-joe {
  0% { transform: translateY(0) rotate(0deg); }
  25% { transform: translateY(-3px) rotate(1deg); }
  50% { transform: translateY(0) rotate(0deg); }
  75% { transform: translateY(-1px) rotate(-1deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes jv-pip {
  0% { transform: translateY(0) rotate(0deg); }
  20% { transform: translateY(-2px) rotate(-1deg); }
  40% { transform: translateY(0) rotate(0deg); }
  80% { transform: translateY(-1px) rotate(1deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes jv-mug {
  0% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
  100% { transform: translateY(0); }
}
@keyframes jv-candle {
  0% { box-shadow: 0 0 20px 8px rgba(255,221,136,0.5); opacity: 0.9; }
  100% { box-shadow: 0 0 30px 12px rgba(255,221,136,0.8); opacity: 1; }
}

.scn-joes-message { background: linear-gradient(180deg, #c8a878 0%, #8a6a4a 100%), radial-gradient(ellipse at 50% 0%, #e0c090 0%, transparent 60%); }
.scn-joes-message .room-bg { position: absolute; inset: 0; background: linear-gradient(180deg, #d8b888 0%, #b89868 100%); }
.scn-joes-message .chair-left { position: absolute; bottom: 15%; left: 15%; width: 40px; height: 60px; background: linear-gradient(180deg, #5a3a22 0%, #3a2210 100%); border-radius: 20% 20% 10% 10%; box-shadow: 0 4px 8px rgba(0,0,0,0.3); animation: jm-chair 10s ease-in-out infinite; }
.scn-joes-message .chair-right { position: absolute; bottom: 15%; right: 15%; width: 40px; height: 60px; background: linear-gradient(180deg, #5a3a22 0%, #3a2210 100%); border-radius: 20% 20% 10% 10%; box-shadow: 0 4px 8px rgba(0,0,0,0.3); animation: jm-chair 10s ease-in-out infinite 2s; }
.scn-joes-message .figure-joe { position: absolute; bottom: 10%; left: 25%; width: 35px; height: 80px; background: linear-gradient(180deg, #2a1a0e 0%, #0a0502 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: jm-figure 7s ease-in-out infinite; }
.scn-joes-message .figure-pip { position: absolute; bottom: 10%; right: 25%; width: 30px; height: 70px; background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: jm-figure 7s ease-in-out infinite 0.5s; }
.scn-joes-message .table-round { position: absolute; bottom: 18%; left: 50%; width: 60px; height: 20px; transform: translateX(-50%); background: radial-gradient(ellipse, #6a4a2a 0%, #4a2a10 100%); border-radius: 50%; box-shadow: 0 4px 8px rgba(0,0,0,0.4); }
.scn-joes-message .mug-steam { position: absolute; bottom: 30%; left: 48%; width: 20px; height: 20px; background: radial-gradient(ellipse, rgba(255,255,255,0.3) 0%, transparent 70%); transform: translateX(-50%); animation: jm-steam 5s ease-in-out infinite; }
@keyframes jm-chair {
  0% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
  100% { transform: translateY(0); }
}
@keyframes jm-figure {
  0% { transform: translateY(0) rotate(0deg); }
  20% { transform: translateY(-3px) rotate(1deg); }
  40% { transform: translateY(0) rotate(0deg); }
  60% { transform: translateY(-1px) rotate(-1deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes jm-steam {
  0% { transform: translateX(-50%) translateY(0) scale(1); opacity: 0.5; }
  50% { transform: translateX(-50%) translateY(-10px) scale(1.5); opacity: 0.2; }
  100% { transform: translateX(-50%) translateY(0) scale(1); opacity: 0.5; }
}

.scn-journey-to-town { background: linear-gradient(180deg, #3a3a5a 0%, #5a6a7a 30%, #8a9a8a 100%), radial-gradient(ellipse at 50% 0%, #7a8a7a 0%, transparent 60%); }
.scn-journey-to-town .sky-dawn { position: absolute; inset: 0 0 50% 0; background: linear-gradient(180deg, #4a4a6a 0%, #7a8a7a 60%, #b0a070 100%); animation: jt-sky 15s ease-in-out infinite alternate; }
.scn-journey-to-town .horizon { position: absolute; bottom: 50%; left: 0; right: 0; height: 5%; background: linear-gradient(180deg, #6a7a6a 0%, #4a5a4a 100%); }
.scn-journey-to-town .road { position: absolute; bottom: 20%; left: 20%; right: 20%; height: 30%; background: linear-gradient(180deg, #4a4a3a 0%, #2a2a1a 100%); border-radius: 20% 20% 0 0 / 40% 40% 0 0; }
.scn-journey-to-town .coach { position: absolute; bottom: 25%; left: 30%; width: 80px; height: 50px; background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%); border-radius: 10% 10% 20% 20%; box-shadow: 0 4px 10px rgba(0,0,0,0.5); animation: jt-coach 20s linear infinite alternate; }
.scn-journey-to-town .figure-walk { position: absolute; bottom: 15%; left: 55%; width: 20px; height: 50px; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: jt-walk 4s ease-in-out infinite; }
.scn-journey-to-town .mist-1 { position: absolute; bottom: 40%; left: 10%; width: 80px; height: 20px; background: linear-gradient(90deg, rgba(200,200,200,0.3) 0%, transparent 100%); filter: blur(6px); animation: jt-mist 30s linear infinite; }
.scn-journey-to-town .mist-2 { position: absolute; bottom: 45%; right: 10%; width: 60px; height: 15px; background: linear-gradient(90deg, transparent 0%, rgba(200,200,200,0.2) 100%); filter: blur(5px); animation: jt-mist 40s linear infinite reverse; }
@keyframes jt-sky {
  0% { background: linear-gradient(180deg, #4a4a6a 0%, #7a8a7a 60%, #b0a070 100%); }
  50% { background: linear-gradient(180deg, #3a3a5a 0%, #6a7a6a 60%, #c0b080 100%); }
  100% { background: linear-gradient(180deg, #4a4a6a 0%, #7a8a7a 60%, #b0a070 100%); }
}
@keyframes jt-coach {
  0% { transform: translateX(0); }
  100% { transform: translateX(-20px); }
}
@keyframes jt-walk {
  0% { transform: translateY(0) rotate(0deg); }
  25% { transform: translateY(-3px) rotate(2deg); }
  50% { transform: translateY(0) rotate(0deg); }
  75% { transform: translateY(-3px) rotate(-2deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes jt-mist {
  0% { transform: translateX(0); }
  100% { transform: translateX(30vw); }
}

.scn-forge-wedding-surprise {
  background: linear-gradient(180deg, #3a2a1a 0%, #5a3a1a 30%, #2a1a0a 100%),
              radial-gradient(ellipse at 50% 60%, #8a5a2a 0%, transparent 70%);
}
.scn-forge-wedding-surprise .forge-interior {
  position:absolute; inset:0; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); opacity:0.6;
}
.scn-forge-wedding-surprise .forge-fire {
  position:absolute; bottom:20%; left:30%; width:80px; height:90px;
  background: radial-gradient(ellipse at 50% 60%, #ff8c40 0%, #c85a1a 40%, #8a3a0a 70%, transparent 100%);
  border-radius:50%; box-shadow:0 0 60px 20px rgba(200,90,26,0.6), 0 0 120px 40px rgba(138,58,10,0.3);
  animation: fws-fire 2s ease-in-out infinite alternate;
}
.scn-forge-wedding-surprise .forge-anvil {
  position:absolute; bottom:18%; left:35%; width:30px; height:20px; background:#2a2a2a; border-radius:4px;
  box-shadow:0 2px 6px rgba(0,0,0,0.5); transform:scaleX(1.2);
}
.scn-forge-wedding-surprise .fig-biddy {
  position:absolute; bottom:22%; left:50%; width:20px; height:50px;
  background: linear-gradient(180deg, #6a4a3a 0%, #3a2a1a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: fws-fig 4s ease-in-out infinite;
}
.scn-forge-wedding-surprise .fig-joe {
  position:absolute; bottom:22%; left:60%; width:24px; height:55px;
  background: linear-gradient(180deg, #5a3a2a 0%, #2a1a0a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: fws-fig 4s ease-in-out infinite reverse;
}
.scn-forge-wedding-surprise .fig-pip {
  position:absolute; bottom:22%; left:40%; width:18px; height:48px;
  background: linear-gradient(180deg, #4a3a2a 0%, #1a1a0a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: fws-fig 4s ease-in-out infinite 1s;
}
.scn-forge-wedding-surprise .spark-a {
  position:absolute; bottom:45%; left:35%; width:4px; height:4px; background:#ffd080; border-radius:50%;
  box-shadow:0 0 6px #ffd080; animation: fws-spark 1.5s ease-out infinite;
}
.scn-forge-wedding-surprise .spark-b {
  position:absolute; bottom:50%; left:38%; width:3px; height:3px; background:#ffb060; border-radius:50%;
  box-shadow:0 0 4px #ffb060; animation: fws-spark 2s ease-out infinite 0.5s;
}
.scn-forge-wedding-surprise .beam {
  position:absolute; bottom:60%; left:20%; width:100%; height:8px; background: linear-gradient(90deg, transparent, rgba(255,160,60,0.15), transparent);
  filter:blur(4px); animation: fws-beam 6s ease-in-out infinite alternate;
}
@keyframes fws-fire {
  0% { transform: scale(1) rotate(0deg); opacity:0.8; }
  50% { transform: scale(1.05) rotate(2deg); opacity:1; }
  100% { transform: scale(0.95) rotate(-1deg); opacity:0.7; }
}
@keyframes fws-fig {
  0% { transform: translateY(0) rotate(-1deg); }
  50% { transform: translateY(-3px) rotate(1deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes fws-spark {
  0% { transform: translate(0,0) scale(1); opacity:1; }
  100% { transform: translate(20px,-40px) scale(0); opacity:0; }
}
@keyframes fws-beam {
  0% { opacity:0.3; transform: rotate(2deg); }
  100% { opacity:0.6; transform: rotate(-2deg); }
}

.scn-farewell-to-joe-biddy {
  background: linear-gradient(180deg, #0a0a1a 0%, #1a1a2a 40%, #2a1a0a 100%),
              radial-gradient(ellipse at 70% 80%, #5a3a1a 0%, transparent 60%);
}
.scn-farewell-to-joe-biddy .doorway {
  position:absolute; inset:10% 30% 0 30%; background: #1a0a0a; border-radius: 80% 80% 0 0 / 60% 60% 0 0;
  box-shadow: inset 0 20px 40px rgba(0,0,0,0.8);
}
.scn-farewell-to-joe-biddy .interior-glow {
  position:absolute; bottom:30%; left:35%; width:40%; height:50%;
  background: radial-gradient(ellipse at 50% 100%, #c85a1a 0%, transparent 100%);
  opacity:0.5; animation: fjb-glow 5s ease-in-out infinite alternate;
}
.scn-farewell-to-joe-biddy .fig-pip-leaving {
  position:absolute; bottom:20%; left:35%; width:18px; height:50px;
  background: #0a0a0a; border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: fjb-walk 3s ease-in-out infinite;
}
.scn-farewell-to-joe-biddy .fig-joe-biddy {
  position:absolute; bottom:20%; right:38%; width:30px; height:45px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a0a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: fjb-fig 4s ease-in-out infinite;
}
.scn-farewell-to-joe-biddy .lamp {
  position:absolute; top:30%; left:20%; width:10px; height:15px; background:#ffd080; border-radius:50% 50% 30% 30%;
  box-shadow:0 0 20px 8px rgba(255,208,128,0.5), 0 0 40px 16px rgba(255,208,128,0.2);
  animation: fjb-lamp 4s ease-in-out infinite alternate;
}
.scn-farewell-to-joe-biddy .night-sky {
  position:absolute; top:0; left:0; right:0; height:40%;
  background: linear-gradient(180deg, #0a0a2a 0%, #1a1a3a 100%);
  animation: fjb-sky 20s linear infinite alternate;
}
@keyframes fjb-glow {
  0% { opacity:0.3; transform: scale(0.95); }
  50% { opacity:0.6; transform: scale(1); }
  100% { opacity:0.4; transform: scale(0.9); }
}
@keyframes fjb-walk {
  0% { transform: translateX(0) rotate(-2deg); }
  25% { transform: translateX(10px) translateY(-2px) rotate(2deg); }
  50% { transform: translateX(20px) rotate(0deg); }
  75% { transform: translateX(30px) translateY(-1px) rotate(-1deg); }
  100% { transform: translateX(40px) rotate(1deg); }
}
@keyframes fjb-fig {
  0% { transform: scaleY(1); }
  50% { transform: scaleY(0.98); }
  100% { transform: scaleY(1); }
}
@keyframes fjb-lamp {
  0% { box-shadow:0 0 10px 4px rgba(255,208,128,0.4); opacity:0.8; }
  50% { box-shadow:0 0 30px 12px rgba(255,208,128,0.6); opacity:1; }
  100% { box-shadow:0 0 15px 6px rgba(255,208,128,0.3); opacity:0.7; }
}
@keyframes fjb-sky {
  0% { opacity:0.6; }
  100% { opacity:0.9; }
}

.scn-old-kitchen-firelight {
  background: linear-gradient(180deg, #2a1a0a 0%, #3a2a1a 40%, #1a0a00 100%),
              radial-gradient(ellipse at 50% 80%, #6a3a1a 0%, transparent 70%);
}
.scn-old-kitchen-firelight .kitchen-wall {
  position:absolute; inset:0; background: linear-gradient(90deg, #2a1a0a 0%, #3a2a1a 50%, #2a1a0a 100%);
  opacity:0.7;
}
.scn-old-kitchen-firelight .hearth-fire {
  position:absolute; bottom:15%; left:20%; width:100px; height:80px;
  background: radial-gradient(ellipse at 50% 60%, #ff8c40 0%, #b85a1a 40%, #5a2a0a 80%, transparent 100%);
  border-radius:50%; box-shadow:0 0 40px 15px rgba(184,90,26,0.5), 0 0 80px 30px rgba(90,42,10,0.3);
  animation: okf-fire 2.5s ease-in-out infinite alternate;
}
.scn-old-kitchen-firelight .table {
  position:absolute; bottom:12%; left:45%; width:80px; height:16px; background:#2a1a0a; border-radius:4px;
  box-shadow:0 4px 8px rgba(0,0,0,0.6); transform:perspective(200px) rotateX(10deg);
}
.scn-old-kitchen-firelight .fig-joe-seated {
  position:absolute; bottom:18%; left:50%; width:28px; height:50px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: okf-sit 5s ease-in-out infinite;
}
.scn-old-kitchen-firelight .fig-biddy-seated {
  position:absolute; bottom:18%; left:65%; width:22px; height:45px;
  background: linear-gradient(180deg, #5a3a2a 0%, #3a2a1a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: okf-sit 5s ease-in-out infinite reverse;
}
.scn-old-kitchen-firelight .hand-latch {
  position:absolute; bottom:20%; left:10%; width:12px; height:30px; background:#2a1a0a; border-radius:4px;
  transform:rotate(-15deg); animation: okf-hand 3s ease-in-out infinite alternate;
}
.scn-old-kitchen-firelight .window {
  position:absolute; top:15%; left:65%; width:60px; height:50px; background:#1a1a2a; border-radius:4px;
  box-shadow: inset 0 0 20px rgba(0,0,0,0.8); border:4px solid #3a2a1a;
}
@keyframes okf-fire {
  0% { transform: scale(1) rotate(0deg); opacity:0.8; }
  50% { transform: scale(1.08) rotate(3deg); opacity:1; }
  100% { transform: scale(0.92) rotate(-2deg); opacity:0.6; }
}
@keyframes okf-sit {
  0% { transform: translateY(0) rotate(-1deg); }
  50% { transform: translateY(-2px) rotate(0deg); }
  100% { transform: translateY(0) rotate(1deg); }
}
@keyframes okf-hand {
  0% { transform: rotate(-20deg) translateX(0); }
  50% { transform: rotate(-10deg) translateX(5px); }
  100% { transform: rotate(-15deg) translateX(2px); }
}

.scn-satis-house-ruins {
  background: linear-gradient(180deg, #0a0a1a 0%, #1a1a2a 40%, #0a0a0a 100%),
              radial-gradient(ellipse at 50% 100%, #2a2a4a 0%, transparent 70%);
}
.scn-satis-house-ruins .ruin-wall {
  position:absolute; bottom:0; left:10%; width:40%; height:60%;
  background: linear-gradient(180deg, #2a2a2a 0%, #1a1a1a 100%);
  clip-path: polygon(0% 0%, 100% 0%, 90% 100%, 10% 100%);
  box-shadow: inset -10px 0 20px rgba(0,0,0,0.5);
}
.scn-satis-house-ruins .ruin-column {
  position:absolute; bottom:0; right:20%; width:30px; height:80%;
  background: linear-gradient(180deg, #3a3a3a 0%, #1a1a1a 100%);
  border-radius:4px; box-shadow:0 0 10px rgba(0,0,0,0.6);
}
.scn-satis-house-ruins .ivy {
  position:absolute; bottom:20%; left:10%; width:40%; height:50%;
  background: radial-gradient(ellipse at 50% 100%, #1a3a1a 0%, transparent 100%);
  opacity:0.4; animation: shr-ivy 8s ease-in-out infinite alternate;
}
.scn-satis-house-ruins .fig-pip-ruins {
  position:absolute; bottom:10%; left:25%; width:20px; height:55px;
  background: #0a0a0a; border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: shr-fig 4s ease-in-out infinite;
}
.scn-satis-house-ruins .fig-estella {
  position:absolute; bottom:10%; right:25%; width:18px; height:50px;
  background: #1a1a2a; border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: shr-fig 5s ease-in-out infinite 1s;
}
.scn-satis-house-ruins .moon {
  position:absolute; top:8%; left:15%; width:50px; height:50px;
  background: radial-gradient(circle, #c0c8d0 0%, #8090a0 100%);
  border-radius:50%; box-shadow:0 0 40px 10px rgba(128,144,160,0.3), 0 0 80px 20px rgba(128,144,160,0.1);
  animation: shr-moon 12s ease-in-out infinite alternate;
}
.scn-satis-house-ruins .debris {
  position:absolute; bottom:5%; left:30%; width:40px; height:10px; background:#1a1a1a; border-radius:2px;
  transform:rotate(20deg); animation: shr-debris 6s ease-in-out infinite;
}
@keyframes shr-ivy {
  0% { opacity:0.3; transform: scaleY(0.95); }
  50% { opacity:0.5; transform: scaleY(1); }
  100% { opacity:0.2; transform: scaleY(0.9); }
}
@keyframes shr-fig {
  0% { transform: translateY(0) rotate(-1deg); }
  50% { transform: translateY(-4px) rotate(1deg); }
  100% { transform: translateY(0) rotate(-1deg); }
}
@keyframes shr-moon {
  0% { transform: translateY(0) scale(1); opacity:0.9; }
  50% { transform: translateY(-5px) scale(1.02); opacity:1; }
  100% { transform: translateY(0) scale(1); opacity:0.85; }
}
@keyframes shr-debris {
  0% { transform: rotate(20deg) translateX(0); }
  50% { transform: rotate(15deg) translateX(5px); }
  100% { transform: rotate(20deg) translateX(0); }
}

.scn-sisters-funeral { background: linear-gradient(180deg, #3b3b4a 0%, #2a2a38 40%, #1e1e2a 100%), radial-gradient(ellipse at 50% 0%, #4a4a5a 0%, transparent 60%); }
.scn-sisters-funeral .sky { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #4a4a5a 0%, #3a3a4a 50%, #2e2e3e 100%); animation: sf-sk 14s ease-in-out infinite alternate; }
.scn-sisters-funeral .ground { position:absolute; bottom:0; left:0; right:0; height:55%; background: linear-gradient(180deg, #2a2a32 0%, #1a1a22 100%); border-radius: 20% 20% 0 0 / 10% 10% 0 0; }
.scn-sisters-funeral .church-spire { position:absolute; bottom:42%; left:50%; width:18px; height:80px; transform:translateX(-50%); background: linear-gradient(180deg, #4a4a56 0%, #3a3a46 80%, #2a2a36 100%); clip-path: polygon(50% 0%, 0% 100%, 100% 100%); }
.scn-sisters-funeral .church-body { position:absolute; bottom:35%; left:50%; width:60px; height:40px; transform:translateX(-50%); background: linear-gradient(180deg, #4a4a58 0%, #3a3a48 100%); border-radius:4px; box-shadow: inset -2px -2px 8px rgba(0,0,0,.4); }
.scn-sisters-funeral .mourner { position:absolute; bottom:30%; width:14px; height:36px; background: linear-gradient(180deg, #1a1a26 0%, #0e0e18 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: sf-sway 8s ease-in-out infinite; }
.scn-sisters-funeral .mourn-a { left:30%; animation-delay:0s; }
.scn-sisters-funeral .mourn-b { left:44%; animation-delay:1.5s; }
.scn-sisters-funeral .mourn-c { left:58%; animation-delay:3s; }
.scn-sisters-funeral .grave { position:absolute; bottom:28%; left:46%; width:30px; height:16px; background: linear-gradient(180deg, #4a4a52 0%, #3a3a42 100%); border-radius: 30% 30% 10% 10%; box-shadow: 0 2px 8px rgba(0,0,0,.3); }
.scn-sisters-funeral .mist { position:absolute; bottom:30%; left:0; right:0; height:40%; background: linear-gradient(90deg, transparent 0%, rgba(200,200,220,0.08) 30%, rgba(200,200,220,0.12) 50%, rgba(200,200,220,0.08) 70%, transparent 100%); filter: blur(20px); animation: sf-mist 25s ease-in-out infinite alternate; }
@keyframes sf-sk { 0% { opacity:0.7 } 50% { opacity:0.85 } 100% { opacity:0.65 } }
@keyframes sf-sway { 0% { transform: translateX(0) rotate(-0.5deg) } 50% { transform: translateX(2px) rotate(0.5deg) } 100% { transform: translateX(0) rotate(-0.5deg) } }
@keyframes sf-mist { 0% { opacity:0.3; transform: translateX(-10px) } 50% { opacity:0.6; transform: translateX(5px) } 100% { opacity:0.35; transform: translateX(10px) } }

.scn-after-funeral-talk { background: linear-gradient(135deg, #4a3a2a 0%, #5a4a3a 40%, #6a5a4a 100%), radial-gradient(ellipse at 40% 60%, #7a6a5a 0%, transparent 70%); }
.scn-after-funeral-talk .wall { position:absolute; top:0; left:0; right:0; height:65%; background: linear-gradient(180deg, #5a4a3a 0%, #4a3a2a 100%); border-radius: 0 0 20% 20% / 0 0 8% 8%; box-shadow: inset 0 8px 20px rgba(0,0,0,.3); }
.scn-after-funeral-talk .floor { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%); border-radius: 30% 30% 0 0 / 15% 15% 0 0; }
.scn-after-funeral-talk .window { position:absolute; top:18%; right:12%; width:60px; height:80px; background: linear-gradient(180deg, #8a8a7a 0%, #6a6a5a 60%, #4a4a3a 100%); border:4px solid #3a2a1a; border-radius:4px; box-shadow: inset 0 0 20px rgba(200,200,180,0.15); animation: aft-window 12s ease-in-out infinite alternate; }
.scn-after-funeral-talk .lamp { position:absolute; top:30%; left:35%; width:16px; height:24px; background: radial-gradient(circle, #d0b080 0%, #a08050 60%); border-radius: 30% 30% 10% 10%; box-shadow: 0 0 40px 12px rgba(180,140,80,0.4); animation: aft-lamp 4s ease-in-out infinite alternate; }
.scn-after-funeral-talk .figure-left { position:absolute; bottom:30%; left:20%; width:16px; height:40px; background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: aft-fig 6s ease-in-out infinite; }
.scn-after-funeral-talk .figure-right { position:absolute; bottom:30%; right:28%; width:14px; height:38px; background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: aft-fig 6s ease-in-out infinite reverse; }
.scn-after-funeral-talk .table { position:absolute; bottom:28%; left:45%; width:40px; height:8px; background: linear-gradient(180deg, #5a3a1a 0%, #3a2a0a 100%); border-radius: 20% 20% 10% 10%; box-shadow: 0 4px 8px rgba(0,0,0,.4); }
.scn-after-funeral-talk .warm-glow { position:absolute; bottom:25%; left:30%; right:30%; height:30%; background: radial-gradient(ellipse at 50% 100%, rgba(200,160,80,0.12) 0%, transparent 70%); filter: blur(15px); animation: aft-warm 8s ease-in-out infinite alternate; }
@keyframes aft-window { 0% { opacity:0.5 } 50% { opacity:0.75 } 100% { opacity:0.6 } }
@keyframes aft-lamp { 0% { opacity:0.7; box-shadow: 0 0 30px 8px rgba(180,140,80,0.3) } 50% { opacity:1; box-shadow: 0 0 50px 16px rgba(200,160,80,0.5) } 100% { opacity:0.8; box-shadow: 0 0 35px 10px rgba(180,140,80,0.35) } }
@keyframes aft-fig { 0% { transform: translateY(0) rotate(-0.5deg) } 50% { transform: translateY(-2px) rotate(0.5deg) } 100% { transform: translateY(0) rotate(-0.5deg) } }
@keyframes aft-warm { 0% { opacity:0.3 } 50% { opacity:0.6 } 100% { opacity:0.4 } }

.scn-parting-with-joe-biddy { background: linear-gradient(180deg, #5a4a3a 0%, #4a3a2a 40%, #3a2a1a 100%), radial-gradient(ellipse at 50% 100%, #6a5a4a 0%, transparent 70%); }
.scn-parting-with-joe-biddy .dusk-sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #6a5a4a 0%, #5a4a3a 50%, #4a3a2a 100%); animation: pjb-sky 15s ease-in-out infinite alternate; }
.scn-parting-with-joe-biddy .horizon { position:absolute; bottom:40%; left:0; right:0; height:8px; background: linear-gradient(180deg, #4a3a2a 0%, #3a2a1a 100%); border-radius: 50%; filter: blur(3px); }
.scn-parting-with-joe-biddy .figure-joe { position:absolute; bottom:25%; left:35%; width:22px; height:38px; background: linear-gradient(180deg, #2a1a0a 0%, #1a0a00 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: pjb-embrace 6s ease-in-out infinite; }
.scn-parting-with-joe-biddy .figure-pip { position:absolute; bottom:25%; left:48%; width:16px; height:36px; background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: pjb-embrace 6s ease-in-out infinite reverse; }
.scn-parting-with-joe-biddy .arms { position:absolute; bottom:30%; left:36%; width:28px; height:14px; background: linear-gradient(180deg, #2a1a0a 0%, #1a0a00 100%); border-radius: 50% 50% 30% 30%; transform: rotate(-10deg); animation: pjb-arms 6s ease-in-out infinite; }
.scn-parting-with-joe-biddy .lantern { position:absolute; bottom:35%; left:28%; width:8px; height:10px; background: radial-gradient(circle, #d0a060 0%, #a08040 60%); border-radius: 30% 30% 10% 10%; box-shadow: 0 0 24px 6px rgba(180,140,80,0.5); animation: pjb-lantern 3s ease-in-out infinite alternate; }
.scn-parting-with-joe-biddy .road { position:absolute; bottom:12%; left:10%; right:10%; height:18%; background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%); border-radius: 40% 40% 0 0 / 20% 20% 0 0; }
.scn-parting-with-joe-biddy .cloudlet { position:absolute; top:14%; width:60px; height:14px; background: linear-gradient(180deg, rgba(180,160,140,0.3) 0%, rgba(160,140,120,0.1) 100%); border-radius:50%; filter: blur(5px); }
.scn-parting-with-joe-biddy .ca { left:10%; animation: pjb-drift 40s linear infinite; }
.scn-parting-with-joe-biddy .cb { right:20%; width:45px; height:10px; animation: pjb-drift 55s linear infinite reverse; }
@keyframes pjb-sky { 0% { opacity:0.6 } 50% { opacity:0.8 } 100% { opacity:0.65 } }
@keyframes pjb-embrace { 0% { transform: translateY(0) rotate(-1deg) } 50% { transform: translateY(-2px) rotate(1deg) } 100% { transform: translateY(0) rotate(-1deg) } }
@keyframes pjb-arms { 0% { transform: rotate(-12deg) scaleY(1) } 50% { transform: rotate(-8deg) scaleY(1.05) } 100% { transform: rotate(-12deg) scaleY(1) } }
@keyframes pjb-lantern { 0% { opacity:0.7; box-shadow: 0 0 18px 4px rgba(180,140,80,0.4) } 50% { opacity:1; box-shadow: 0 0 32px 10px rgba(200,160,80,0.6) } 100% { opacity:0.8; box-shadow: 0 0 22px 6px rgba(180,140,80,0.45) } }
@keyframes pjb-drift { 0% { transform: translateX(-20px) } 100% { transform: translateX(120vw) } }

.scn-debts-and-coming-of-age { background: linear-gradient(180deg, #e8dcc8 0%, #d4c8b0 30%, #c0b49a 60%, #a89c84 100%), radial-gradient(ellipse at 50% 0%, #f0e8d8 0%, transparent 60%); }
.scn-debts-and-coming-of-age .bright-wall { position:absolute; top:0; left:0; right:0; height:60%; background: linear-gradient(180deg, #f0e8d8 0%, #d8d0b8 100%); box-shadow: inset 0 4px 20px rgba(0,0,0,0.05); }
.scn-debts-and-coming-of-age .desk { position:absolute; bottom:20%; left:10%; right:10%; height:30%; background: linear-gradient(180deg, #b8a88a 0%, #9a8a6a 100%); border-radius: 4px 4px 20% 20% / 4px 4px 10% 10%; box-shadow: 0 6px 20px rgba(0,0,0,0.15); }
.scn-debts-and-coming-of-age .ledger { position:absolute; bottom:35%; width:40px; height:30px; background: linear-gradient(135deg, #f0e4c8 0%, #d8ccaa 100%); border-radius: 2px; box-shadow: 2px 2px 8px rgba(0,0,0,0.1); transform-origin: bottom left; }
.scn-debts-and-coming-of-age .left-book { left:18%; transform: rotate(-4deg); animation: dca-book 20s ease-in-out infinite; }
.scn-debts-and-coming-of-age .right-book { right:22%; transform: rotate(2deg); animation: dca-book 20s ease-in-out infinite reverse; }
.scn-debts-and-coming-of-age .hand-writing { position:absolute; bottom:32%; left:30%; width:30px; height:6px; background: linear-gradient(90deg, transparent 0%, #3a2a1a 20%, #3a2a1a 60%, transparent 100%); border-radius: 50%; filter: blur(1px); animation: dca-write 3s ease-in-out infinite; }
.scn-debts-and-coming-of-age .inkwell { position:absolute; bottom:30%; left:55%; width:12px; height:14px; background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%); border-radius: 50% 50% 30% 30%; box-shadow: 0 2px 6px rgba(0,0,0,0.3); }
.scn-debts-and-coming-of-age .candle { position:absolute; bottom:40%; left:48%; width:6px; height:18px; background: linear-gradient(180deg, #f0e0c0 0%, #e0d0b0 100%); border-radius: 20% 20% 10% 10%; box-shadow: 0 0 16px 4px rgba(240,200,150,0.3); animation: dca-candle 4s ease-in-out infinite alternate; }
.scn-debts-and-coming-of-age .shadow-strip { position:absolute; top:0; left:0; right:0; bottom:0; background: linear-gradient(135deg, transparent 40%, rgba(0,0,0,0.08) 50%, transparent 60%); animation: dca-shadow 8s ease-in-out infinite alternate; pointer-events:none; }
@keyframes dca-book { 0% { transform: rotate(-4deg) } 50% { transform: rotate(-2deg) } 100% { transform: rotate(-4deg) } }
@keyframes dca-write { 0% { opacity:0.3; transform: translateX(0) } 50% { opacity:0.6; transform: translateX(4px) } 100% { opacity:0.3; transform: translateX(0) } }
@keyframes dca-candle { 0% { opacity:0.7; box-shadow: 0 0 12px 2px rgba(240,200,150,0.2) } 50% { opacity:1; box-shadow: 0 0 24px 8px rgba(240,200,150,0.4) } 100% { opacity:0.8; box-shadow: 0 0 16px 4px rgba(240,200,150,0.25) } }
@keyframes dca-shadow { 0% { opacity:0.3 } 50% { opacity:0.6 } 100% { opacity:0.4 } }

/* playing-cards - tense, dark */
.scn-playing-cards {
  background: 
    linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%),
    radial-gradient(ellipse at 20% 80%, #0f3460 0%, transparent 70%);
}
.scn-playing-cards .table {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(0deg, #2a1a0a 0%, #3a2a1a 100%);
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.6);
  border-radius: 40% 40% 0 0;
}
.scn-playing-cards .card-1 {
  position: absolute; bottom: 30%; left: 35%; width: 40px; height: 56px;
  background: linear-gradient(135deg, #f5f0e0 0%, #d0c8b0 100%);
  border-radius: 4px;
  transform: rotate(-15deg);
  box-shadow: 2px 2px 6px rgba(0,0,0,0.5);
  animation: pc-slide-1 6s ease-in-out infinite;
}
.scn-playing-cards .card-2 {
  position: absolute; bottom: 28%; left: 45%; width: 40px; height: 56px;
  background: linear-gradient(135deg, #f5f0e0 0%, #d0c8b0 100%);
  border-radius: 4px;
  transform: rotate(10deg);
  box-shadow: 2px 2px 6px rgba(0,0,0,0.5);
  animation: pc-slide-2 8s ease-in-out infinite;
}
.scn-playing-cards .card-3 {
  position: absolute; bottom: 32%; left: 55%; width: 40px; height: 56px;
  background: linear-gradient(135deg, #f5f0e0 0%, #d0c8b0 100%);
  border-radius: 4px;
  transform: rotate(-5deg);
  box-shadow: 2px 2px 6px rgba(0,0,0,0.5);
  animation: pc-slide-3 7s ease-in-out infinite;
}
.scn-playing-cards .candle {
  position: absolute; bottom: 45%; left: 50%; width: 10px; height: 24px;
  background: linear-gradient(180deg, #ffd080 0%, #b08040 100%);
  border-radius: 50% 50% 10% 10%;
  transform: translateX(-50%);
  box-shadow: 0 0 20px 8px rgba(255,200,100,0.4);
  animation: pc-flicker 0.5s ease-in-out infinite alternate;
}
.scn-playing-cards .hand {
  position: absolute; bottom: 25%; left: 30%; width: 40px; height: 30px;
  background: linear-gradient(180deg, #2a1a14 0%, #1a0e0a 100%);
  border-radius: 50% 50% 0 0;
  transform: rotate(-20deg);
  animation: pc-reach 4s ease-in-out infinite;
}
.scn-playing-cards .shadow {
  position: absolute; bottom: 0; left: 20%; width: 60%; height: 30%;
  background: radial-gradient(ellipse at 50% 100%, rgba(0,0,0,0.6) 0%, transparent 80%);
  filter: blur(8px);
}
@keyframes pc-slide-1 {
  0% { transform: translateX(0) rotate(-15deg); opacity: 1; }
  50% { transform: translateX(10px) rotate(-10deg); opacity: 0.8; }
  100% { transform: translateX(0) rotate(-15deg); opacity: 1; }
}
@keyframes pc-slide-2 {
  0% { transform: translateX(0) rotate(10deg); opacity: 0.9; }
  50% { transform: translateX(-8px) rotate(5deg); opacity: 1; }
  100% { transform: translateX(0) rotate(10deg); opacity: 0.9; }
}
@keyframes pc-slide-3 {
  0% { transform: translateX(0) rotate(-5deg); opacity: 1; }
  50% { transform: translateX(12px) rotate(0deg); opacity: 0.7; }
  100% { transform: translateX(0) rotate(-5deg); opacity: 1; }
}
@keyframes pc-flicker {
  0% { box-shadow: 0 0 15px 5px rgba(255,200,100,0.3); height: 24px; }
  50% { box-shadow: 0 0 25px 10px rgba(255,200,100,0.5); height: 26px; }
  100% { box-shadow: 0 0 18px 6px rgba(255,200,100,0.4); height: 24px; }
}
@keyframes pc-reach {
  0% { transform: translateY(0) rotate(-20deg); }
  50% { transform: translateY(-4px) rotate(-25deg); }
  100% { transform: translateY(0) rotate(-20deg); }
}

/* miss-havisham-appearance - dark, dark */
.scn-miss-havisham-appearance {
  background: 
    linear-gradient(180deg, #0a0a12 0%, #1a1020 50%, #2a1a30 100%),
    radial-gradient(ellipse at 30% 60%, #3a2a4e 0%, transparent 70%);
}
.scn-miss-havisham-appearance .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(0deg, #1a1a22 0%, #2a2a3a 100%);
  border-radius: 30% 70% 0 0;
}
.scn-miss-havisham-appearance .wall {
  position: absolute; top: 0; left: 0; right: 0; bottom: 30%;
  background: linear-gradient(180deg, #1a1a28 0%, #2a2438 100%);
}
.scn-miss-havisham-appearance .figure {
  position: absolute; bottom: 30%; left: 50%; width: 50px; height: 90px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #0a0a14 0%, #1a1a22 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 0 4px 12px rgba(0,0,0,0.5);
  animation: mha-breath 8s ease-in-out infinite;
}
.scn-miss-havisham-appearance .chair {
  position: absolute; bottom: 25%; left: 50%; width: 60px; height: 50px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%);
  border-radius: 10% 10% 20% 20%;
  box-shadow: 0 2px 8px rgba(0,0,0,0.4);
}
.scn-miss-havisham-appearance .cobweb {
  position: absolute; top: 10%; left: 20%; width: 80px; height: 60px;
  background: radial-gradient(ellipse at 50% 50%, rgba(180,180,200,0.1) 0%, rgba(180,180,200,0.05) 60%, transparent 100%);
  filter: blur(2px);
  border-radius: 50%;
  animation: mha-webs 12s ease-in-out infinite alternate;
}
.scn-miss-havisham-appearance .dust {
  position: absolute; top: 40%; left: 30%; width: 30px; height: 30px;
  background: radial-gradient(circle, rgba(200,200,220,0.2) 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(10px);
  animation: mha-dust 20s ease-in-out infinite alternate;
}
.scn-miss-havisham-appearance .window {
  position: absolute; top: 15%; left: 60%; width: 60px; height: 80px;
  background: linear-gradient(180deg, #3a4a5e 0%, #2a3a4e 100%);
  border: 6px solid #1a1a22;
  border-radius: 8% 8% 4% 4%;
  box-shadow: inset 0 0 20px rgba(0,0,0,0.5);
}
@keyframes mha-breath {
  0% { transform: translateX(-50%) scaleY(1); }
  50% { transform: translateX(-50%) scaleY(1.02) scaleX(0.98); }
  100% { transform: translateX(-50%) scaleY(1); }
}
@keyframes mha-webs {
  0% { transform: rotate(0deg) scale(1); opacity: 0.5; }
  50% { transform: rotate(10deg) scale(1.1); opacity: 0.7; }
  100% { transform: rotate(0deg) scale(1); opacity: 0.5; }
}
@keyframes mha-dust {
  0% { transform: translate(0, 0) scale(1); opacity: 0.3; }
  50% { transform: translate(5px, -10px) scale(1.2); opacity: 0.5; }
  100% { transform: translate(-3px, 5px) scale(0.9); opacity: 0.3; }
}

/* return-visit-arranged - calm, dark */
.scn-return-visit-arranged {
  background: 
    linear-gradient(180deg, #1a1a24 0%, #2a2a36 50%, #3a3a4a 100%),
    radial-gradient(ellipse at 50% 30%, #4a4a5a 0%, transparent 70%);
}
.scn-return-visit-arranged .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(0deg, #1a1a20 0%, #2a2a30 100%);
  border-radius: 50% 50% 0 0;
}
.scn-return-visit-arranged .wall {
  position: absolute; top: 0; left: 0; right: 0; bottom: 25%;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a28 100%);
}
.scn-return-visit-arranged .clock {
  position: absolute; top: 15%; left: 50%; width: 70px; height: 70px;
  transform: translateX(-50%);
  background: radial-gradient(circle, #3a3a4a 0%, #2a2a3a 60%, #1a1a28 100%);
  border-radius: 50%;
  border: 4px solid #5a4a3a;
  box-shadow: 0 0 20px rgba(0,0,0,0.4);
  animation: rva-tick 4s ease-in-out infinite;
}
.scn-return-visit-arranged .hand-gesture {
  position: absolute; bottom: 35%; left: 40%; width: 30px; height: 40px;
  background: linear-gradient(180deg, #2a1a14 0%, #1a0e0a 100%);
  border-radius: 50% 50% 0 0;
  transform: rotate(15deg);
  animation: rva-finger 6s ease-in-out infinite;
}
.scn-return-visit-arranged .candle {
  position: absolute; bottom: 45%; left: 30%; width: 8px; height: 20px;
  background: linear-gradient(180deg, #ffd080 0%, #b08040 100%);
  border-radius: 50% 50% 10% 10%;
  box-shadow: 0 0 15px 5px rgba(255,200,100,0.3);
  animation: rva-glow 3s ease-in-out infinite alternate;
}
.scn-return-visit-arranged .chair {
  position: absolute; bottom: 20%; left: 50%; width: 50px; height: 40px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%);
  border-radius: 10% 10% 20% 20%;
  box-shadow: 0 2px 8px rgba(0,0,0,0.4);
}
@keyframes rva-tick {
  0% { transform: translateX(-50%) rotate(0deg); }
  50% { transform: translateX(-50%) rotate(2deg); }
  100% { transform: translateX(-50%) rotate(0deg); }
}
@keyframes rva-finger {
  0% { transform: rotate(15deg) translateY(0); }
  50% { transform: rotate(20deg) translateY(-3px); }
  100% { transform: rotate(15deg) translateY(0); }
}
@keyframes rva-glow {
  0% { box-shadow: 0 0 10px 3px rgba(255,200,100,0.2); opacity: 0.8; }
  50% { box-shadow: 0 0 20px 8px rgba(255,200,100,0.4); opacity: 1; }
  100% { box-shadow: 0 0 12px 4px rgba(255,200,100,0.3); opacity: 0.9; }
}

/* crying-after-visit - tense, dim-interior */
.scn-crying-after-visit {
  background: 
    linear-gradient(180deg, #1a1a12 0%, #2a2218 50%, #3a2e20 100%),
    radial-gradient(ellipse at 40% 60%, #4a3a28 0%, transparent 70%);
}
.scn-crying-after-visit .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(0deg, #1a1612 0%, #2a221c 100%);
  border-radius: 20% 80% 0 0;
}
.scn-crying-after-visit .wall {
  position: absolute; top: 0; left: 0; right: 0; bottom: 35%;
  background: linear-gradient(180deg, #2a221e 0%, #1a1614 100%);
}
.scn-crying-after-visit .figure {
  position: absolute; bottom: 32%; left: 50%; width: 40px; height: 70px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #1a1412 0%, #0e0a08 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 0 4px 12px rgba(0,0,0,0.6);
  animation: cav-sob 3s ease-in-out infinite;
}
.scn-crying-after-visit .gate {
  position: absolute; bottom: 25%; left: 30%; width: 80px; height: 60px;
  border: 4px solid #3a2a1a;
  border-radius: 0 0 10% 10%;
  background: repeating-linear-gradient(90deg, transparent 0px, transparent 8px, #3a2a1a 8px, #3a2a1a 10px);
  animation: cav-gate 5s ease-in-out infinite;
}
.scn-crying-after-visit .tears {
  position: absolute; bottom: 30%; left: 48%; width: 6px; height: 6px;
  background: radial-gradient(circle, rgba(180,200,220,0.6) 0%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 4px 2px rgba(180,200,220,0.3);
  animation: cav-drop 4s ease-in-out infinite;
}
.scn-crying-after-visit .lock {
  position: absolute; bottom: 30%; left: 30%; width: 12px; height: 16px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 20% 20% 30% 30%;
  box-shadow: 0 2px 4px rgba(0,0,0,0.5);
}
@keyframes cav-sob {
  0% { transform: translateX(-50%) translateY(0) scaleY(1); }
  30% { transform: translateX(-50%) translateY(-2px) scaleY(1.03); }
  60% { transform: translateX(-50%) translateY(1px) scaleY(0.97); }
  100% { transform: translateX(-50%) translateY(0) scaleY(1); }
}
@keyframes cav-gate {
  0% { transform: rotateY(0deg); opacity: 0.8; }
  50% { transform: rotateY(5deg); opacity: 1; }
  100% { transform: rotateY(0deg); opacity: 0.8; }
}
@keyframes cav-drop {
  0% { transform: translate(0, 0) scale(1); opacity: 0.6; }
  50% { transform: translate(-2px, 5px) scale(0.8); opacity: 0.3; }
  100% { transform: translate(0, 0) scale(1); opacity: 0.6; }
}

.scn-walking-miss-havisham {
  background:
    radial-gradient(ellipse at 40% 60%, rgba(80,50,30,0.3) 0%, transparent 60%),
    linear-gradient(180deg, #1a1410 0%, #2a1e18 40%, #1e1612 100%);
}
.scn-walking-miss-havisham .wall.left {
  position:absolute; left:0; top:0; width:30%; height:100%;
  background: linear-gradient(180deg, #2a201a 0%, #1e1612 100%);
  box-shadow: inset -6px 0 12px rgba(0,0,0,0.5);
  animation: mh-walls 20s ease-in-out infinite alternate;
}
.scn-walking-miss-havisham .wall.right {
  position:absolute; right:0; top:0; width:30%; height:100%;
  background: linear-gradient(180deg, #2a201a 0%, #1e1612 100%);
  box-shadow: inset 6px 0 12px rgba(0,0,0,0.5);
  animation: mh-walls 20s ease-in-out infinite alternate-reverse;
}
.scn-walking-miss-havisham .floor {
  position:absolute; bottom:0; left:0; right:0; height:20%;
  background: linear-gradient(180deg, #1a1410 0%, #0e0a08 100%);
  border-radius: 30% 30% 0 0 / 10% 10% 0 0;
}
.scn-walking-miss-havisham .figure.old {
  position:absolute; bottom:20%; left:45%; width:50px; height:80px;
  background: linear-gradient(135deg, #3a2a20 0%, #1e1410 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: mh-walk-old 6s ease-in-out infinite;
}
.scn-walking-miss-havisham .figure.young {
  position:absolute; bottom:20%; left:30%; width:40px; height:70px;
  background: linear-gradient(135deg, #2a1e18 0%, #16100e 100%);
  border-radius: 40% 40% 30% 30% / 55% 55% 45% 45%;
  transform-origin: bottom center;
  animation: mh-walk-young 6s ease-in-out infinite;
}
.scn-walking-miss-havisham .candle {
  position:absolute; bottom:60%; left:50%; width:4px; height:16px;
  background: linear-gradient(180deg, #e8d4a0 0%, #8a6a3a 100%);
  border-radius: 2px;
  transform: translateX(-50%);
}
.scn-walking-miss-havisham .glow {
  position:absolute; bottom:58%; left:50%; width:50px; height:50px;
  background: radial-gradient(circle, rgba(232,212,160,0.15) 0%, transparent 70%);
  transform: translate(-50%,-50%);
  border-radius: 50%;
  animation: mh-flicker 3s ease-in-out infinite alternate;
}
.scn-walking-miss-havisham .dust {
  position:absolute; inset:0;
  background: radial-gradient(circle at 30% 50%, rgba(200,180,140,0.03) 0%, transparent 50%);
  animation: mh-drift 12s ease-in-out infinite;
}
@keyframes mh-walls { 0% { opacity:0.9 } 50% { opacity:1 } 100% { opacity:0.85 } }
@keyframes mh-walk-old {
  0% { transform: translateX(0) rotate(-1deg) }
  50% { transform: translateX(4px) rotate(1.5deg) translateY(-1px) }
  100% { transform: translateX(8px) rotate(-0.5deg) }
}
@keyframes mh-walk-young {
  0% { transform: translateX(0) rotate(0.5deg) }
  50% { transform: translateX(3px) rotate(-1deg) translateY(-1px) }
  100% { transform: translateX(6px) rotate(0) }
}
@keyframes mh-flicker {
  0% { opacity:0.7; transform: translate(-50%,-50%) scale(0.95) }
  50% { opacity:1; transform: translate(-50%,-50%) scale(1.05) }
  100% { opacity:0.8; transform: translate(-50%,-50%) scale(1) }
}
@keyframes mh-drift {
  0% { background-position: 0% 50% }
  50% { background-position: 100% 30% }
  100% { background-position: 0% 50% }
}

.scn-birthday-revelation {
  background:
    radial-gradient(ellipse at 70% 50%, rgba(60,40,25,0.4) 0%, transparent 60%),
    linear-gradient(180deg, #0a0806 0%, #1a1410 40%, #0e0a08 100%);
}
.scn-birthday-revelation .wall-bg {
  position:absolute; inset:0;
  background:
    repeating-linear-gradient(0deg, rgba(30,22,18,0.3) 0px, transparent 2px, transparent 8px),
    linear-gradient(180deg, #1a1410 0%, #0e0a08 100%);
  animation: br-wall 30s linear infinite;
}
.scn-birthday-revelation .mantel {
  position:absolute; bottom:45%; left:20%; right:20%; height:6px;
  background: linear-gradient(90deg, #1e1410 0%, #2a1e18 50%, #1e1410 100%);
  border-radius: 2px;
  box-shadow: 0 4px 8px rgba(0,0,0,0.6);
}
.scn-birthday-revelation .candle {
  position:absolute; bottom:50%; left:50%; width:5px; height:20px;
  background: linear-gradient(180deg, #d4c090 0%, #8a6a3a 100%);
  border-radius: 3px 3px 2px 2px;
  transform: translateX(-50%);
}
.scn-birthday-revelation .glow {
  position:absolute; bottom:52%; left:50%; width:70px; height:70px;
  background: radial-gradient(circle, rgba(212,192,144,0.2) 0%, rgba(212,192,144,0.05) 40%, transparent 70%);
  transform: translate(-50%,-50%);
  border-radius: 50%;
  animation: br-glow 4s ease-in-out infinite alternate;
}
.scn-birthday-revelation .figure.havisham {
  position:absolute; bottom:20%; left:50%; width:55px; height:90px;
  background: linear-gradient(160deg, #3a2820 0%, #1a100e 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform: translateX(-50%);
  animation: br-figure 8s ease-in-out infinite;
}
.scn-birthday-revelation .stick {
  position:absolute; bottom:40%; left:42%; width:3px; height:50px;
  background: linear-gradient(180deg, #2a1a10 0%, #0e0806 100%);
  border-radius: 2px;
  transform-origin: bottom center;
  animation: br-stick 4s ease-in-out infinite alternate;
}
.scn-birthday-revelation .shadow {
  position:absolute; bottom:20%; left:30%; right:30%; height:30%;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,0.4) 100%);
  border-radius: 50%;
  filter: blur(8px);
  animation: br-shadow 8s ease-in-out infinite alternate;
}
@keyframes br-wall { 0% { opacity:0.9 } 50% { opacity:1 } 100% { opacity:0.85 } }
@keyframes br-glow {
  0% { opacity:0.6; transform: translate(-50%,-50%) scale(0.9) }
  50% { opacity:1; transform: translate(-50%,-50%) scale(1.1) }
  100% { opacity:0.7; transform: translate(-50%,-50%) scale(1) }
}
@keyframes br-figure {
  0% { transform: translateX(-50%) rotate(-1deg) }
  50% { transform: translateX(-50%) rotate(2deg) translateY(-2px) }
  100% { transform: translateX(-50%) rotate(0) }
}
@keyframes br-stick {
  0% { transform: rotate(-10deg) }
  50% { transform: rotate(15deg) }
  100% { transform: rotate(0deg) }
}
@keyframes br-shadow {
  0% { opacity:0.3; transform: scaleY(0.9) }
  50% { opacity:0.6; transform: scaleY(1.1) }
  100% { opacity:0.4; transform: scaleY(1) }
}

.scn-playing-cards-again {
  background:
    radial-gradient(ellipse at 50% 30%, rgba(70,50,30,0.3) 0%, transparent 60%),
    linear-gradient(180deg, #1e1612 0%, #0e0a08 50%, #1a1410 100%);
}
.scn-playing-cards-again .table {
  position:absolute; bottom:10%; left:10%; right:10%; height:40%;
  background: linear-gradient(160deg, #2a1e18 0%, #1a100e 100%);
  border-radius: 40% 40% 10% 10% / 30% 30% 5% 5%;
  box-shadow: 0 -6px 12px rgba(0,0,0,0.5);
  transform: perspective(400px) rotateX(15deg);
}
.scn-playing-cards-again .figure.left {
  position:absolute; bottom:30%; left:18%; width:45px; height:75px;
  background: linear-gradient(145deg, #2a1e18 0%, #120e0a 100%);
  border-radius: 40% 40% 30% 30% / 55% 55% 45% 45%;
  transform-origin: bottom center;
  animation: pc-figure-left 7s ease-in-out infinite;
}
.scn-playing-cards-again .figure.right {
  position:absolute; bottom:30%; right:18%; width:45px; height:75px;
  background: linear-gradient(215deg, #2a1e18 0%, #120e0a 100%);
  border-radius: 40% 40% 30% 30% / 55% 55% 45% 45%;
  transform-origin: bottom center;
  animation: pc-figure-right 7s ease-in-out infinite;
}
.scn-playing-cards-again .cards {
  position:absolute; bottom:35%; left:50%; width:60px; height:40px;
  background:
    linear-gradient(90deg, rgba(220,200,170,0.2) 0%, transparent 50%),
    linear-gradient(180deg, rgba(220,200,170,0.1) 0%, transparent 100%);
  transform: translateX(-50%) rotate(-5deg);
  border-radius: 4px;
  animation: pc-cards 3s ease-in-out infinite alternate;
}
.scn-playing-cards-again .card-a {
  position:absolute; bottom:38%; left:44%; width:20px; height:28px;
  background: linear-gradient(135deg, #d4c090 0%, #a08050 100%);
  border-radius: 3px;
  transform: rotate(-15deg);
  animation: pc-card-a 5s ease-in-out infinite;
}
.scn-playing-cards-again .card-b {
  position:absolute; bottom:36%; right:44%; width:20px; height:28px;
  background: linear-gradient(225deg, #d4c090 0%, #a08050 100%);
  border-radius: 3px;
  transform: rotate(20deg);
  animation: pc-card-b 5s ease-in-out infinite;
}
.scn-playing-cards-again .candle {
  position:absolute; bottom:60%; left:50%; width:4px; height:18px;
  background: linear-gradient(180deg, #e0d0a0 0%, #8a6a3a 100%);
  border-radius: 2px;
  transform: translateX(-50%);
}
.scn-playing-cards-again .glow {
  position:absolute; bottom:58%; left:50%; width:80px; height:80px;
  background: radial-gradient(circle, rgba(224,208,160,0.12) 0%, transparent 60%);
  transform: translate(-50%,-50%);
  border-radius: 50%;
  animation: pc-glow 4s ease-in-out infinite alternate;
}
@keyframes pc-figure-left {
  0% { transform: translateX(0) rotate(-1deg) }
  50% { transform: translateX(-3px) rotate(2deg) translateY(-2px) }
  100% { transform: translateX(0) rotate(0) }
}
@keyframes pc-figure-right {
  0% { transform: translateX(0) rotate(1deg) }
  50% { transform: translateX(3px) rotate(-2deg) translateY(-2px) }
  100% { transform: translateX(0) rotate(0) }
}
@keyframes pc-cards {
  0% { transform: translateX(-50%) rotate(-8deg) scale(1) }
  50% { transform: translateX(-50%) rotate(5deg) scale(1.05) }
  100% { transform: translateX(-50%) rotate(-2deg) scale(0.95) }
}
@keyframes pc-card-a {
  0% { transform: rotate(-20deg) translateY(0) }
  50% { transform: rotate(-10deg) translateY(-4px) }
  100% { transform: rotate(-25deg) translateY(0) }
}
@keyframes pc-card-b {
  0% { transform: rotate(25deg) translateY(0) }
  50% { transform: rotate(15deg) translateY(-4px) }
  100% { transform: rotate(20deg) translateY(0) }
}
@keyframes pc-glow {
  0% { opacity:0.5; transform: translate(-50%,-50%) scale(0.9) }
  50% { opacity:1; transform: translate(-50%,-50%) scale(1.1) }
  100% { opacity:0.6; transform: translate(-50%,-50%) scale(1) }
}

.scn-pale-young-gentleman {
  background:
    radial-gradient(ellipse at 30% 40%, rgba(200,180,140,0.3) 0%, transparent 50%),
    linear-gradient(135deg, #c8b898 0%, #a08860 40%, #8a7050 100%);
}
.scn-pale-young-gentleman .wall {
  position:absolute; left:0; top:0; right:0; bottom:0;
  background:
    repeating-linear-gradient(90deg, rgba(160,140,100,0.3) 0px, transparent 1px, transparent 12px),
    linear-gradient(180deg, #b8a080 0%, #9a8060 100%);
  animation: py-wall 30s linear infinite;
}
.scn-pale-young-gentleman .doorway {
  position:absolute; left:40%; top:0; width:20%; height:90%;
  background: linear-gradient(90deg, #6a5040 0%, #4a3828 50%, #6a5040 100%);
  border-radius: 20% 20% 0 0 / 10% 10% 0 0;
  box-shadow: inset 0 0 20px rgba(0,0,0,0.4);
}
.scn-pale-young-gentleman .figure.left {
  position:absolute; bottom:15%; left:28%; width:35px; height:60px;
  background: linear-gradient(160deg, #3a2820 0%, #1a100e 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: py-figure-left 5s ease-in-out infinite;
}
.scn-pale-young-gentleman .figure.right {
  position:absolute; bottom:15%; right:28%; width:35px; height:60px;
  background: linear-gradient(200deg, #3a2820 0%, #1a100e 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: py-figure-right 5s ease-in-out infinite;
}
.scn-pale-young-gentleman .light.beam {
  position:absolute; left:45%; top:0; width:10%; height:100%;
  background: linear-gradient(180deg, rgba(240,220,180,0.4) 0%, transparent 80%);
  transform: skewX(-5deg);
  animation: py-beam 3s ease-in-out infinite alternate;
}
.scn-pale-young-gentleman .shadow {
  position:absolute; bottom:15%; left:35%; right:35%; height:40%;
  background: linear-gradient(180deg, rgba(0,0,0,0.1) 0%, rgba(0,0,0,0.4) 100%);
  border-radius: 50%;
  filter: blur(6px);
  animation: py-shadow 5s ease-in-out infinite alternate;
}
.scn-pale-young-gentleman .floor {
  position:absolute; bottom:0; left:0; right:0; height:15%;
  background:
    repeating-linear-gradient(90deg, rgba(100,80,60,0.3) 0px, transparent 1px, transparent 14px),
    linear-gradient(180deg, #8a7050 0%, #6a5040 100%);
  border-radius: 40% 40% 0 0 / 20% 20% 0 0;
}
@keyframes py-wall { 0% { opacity:0.9 } 50% { opacity:1 } 100% { opacity:0.85 } }
@keyframes py-figure-left {
  0% { transform: translateX(0) rotate(0deg) }
  50% { transform: translateX(2px) rotate(-3deg) }
  100% { transform: translateX(0) rotate(0deg) }
}
@keyframes py-figure-right {
  0% { transform: translateX(0) rotate(0deg) }
  50% { transform: translateX(-2px) rotate(3deg) }
  100% { transform: translateX(0) rotate(0deg) }
}
@keyframes py-beam {
  0% { opacity:0.6; transform: skewX(-7deg) }
  50% { opacity:1; transform: skewX(-3deg) }
  100% { opacity:0.8; transform: skewX(-8deg) }
}
@keyframes py-shadow {
  0% { opacity:0.4; transform: scaleY(0.9) }
  50% { opacity:0.7; transform: scaleY(1.1) }
  100% { opacity:0.5; transform: scaleY(1) }
}

.scn-satis-house-firelight {
  background: linear-gradient(180deg, #1a0e08 0%, #2a1810 40%, #3d221a 100%), radial-gradient(ellipse at 50% 60%, #4a2a1e 0%, transparent 70%);
}
.scn-satis-house-firelight .sf-wall { position:absolute; inset:0; background: linear-gradient(180deg, #2a1a12 0%, #1a0e08 100%); }
.scn-satis-house-firelight .sf-mantel { position:absolute; bottom:28%; left:30%; width:40%; height:6%; background: #3a2820; border-radius:4px; box-shadow: 0 -4px 12px rgba(0,0,0,0.5); }
.scn-satis-house-firelight .sf-fire { position:absolute; bottom:30%; left:46%; width:8%; height:12%; background: radial-gradient(ellipse at 50% 100%, #e08040 0%, #c05020 50%, #603010 80%, #2a1810 100%); border-radius: 50% 50% 0 0; animation: sf-fire 0.8s ease-in-out infinite alternate; }
.scn-satis-house-firelight .sf-glow { position:absolute; bottom:28%; left:40%; width:20%; height:30%; background: radial-gradient(ellipse at 50% 70%, #d07040 0%, transparent 70%); opacity:0.6; animation: sf-glow 2s ease-in-out infinite alternate; }
.scn-satis-house-firelight .sf-figure-left { position:absolute; bottom:24%; left:22%; width:12%; height:40%; background: linear-gradient(180deg, #1a0e08 0%, #0d0704 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: sf-figure-left 4s ease-in-out infinite; }
.scn-satis-house-firelight .sf-figure-right { position:absolute; bottom:24%; right:22%; width:10%; height:38%; background: linear-gradient(180deg, #2a1a12 0%, #1a0e08 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: sf-figure-right 5s ease-in-out infinite; }
.scn-satis-house-firelight .sf-shadow { position:absolute; bottom:26%; left:20%; width:60%; height:8%; background: radial-gradient(ellipse, rgba(0,0,0,0.5) 0%, transparent 70%); animation: sf-shadow 4s ease-in-out infinite; }
@keyframes sf-fire { 0% { transform: scaleX(0.9) scaleY(1); } 50% { transform: scaleX(1.1) scaleY(0.9); } 100% { transform: scaleX(0.95) scaleY(1.05); } }
@keyframes sf-glow { 0% { opacity:0.4; } 50% { opacity:0.8; } 100% { opacity:0.5; } }
@keyframes sf-figure-left { 0% { transform: translateX(0) rotate(-2deg); } 50% { transform: translateX(4px) rotate(1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes sf-figure-right { 0% { transform: translateX(0) rotate(1deg); } 50% { transform: translateX(-3px) rotate(-1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes sf-shadow { 0% { opacity:0.3; } 50% { opacity:0.6; } 100% { opacity:0.4; } }

.scn-finches-dinner-drummle-toast {
  background: linear-gradient(180deg, #c8b898 0%, #b8a888 50%, #a89878 100%), radial-gradient(ellipse at 50% 30%, #e0c8a0 0%, transparent 80%);
}
.scn-finches-dinner-drummle-toast .fd-wall { position:absolute; inset:0; background: linear-gradient(180deg, #b8a070 0%, #908060 100%); }
.scn-finches-dinner-drummle-toast .fd-table { position:absolute; bottom:20%; left:10%; width:80%; height:8%; background: linear-gradient(180deg, #804030 0%, #602820 100%); border-radius: 6px; box-shadow: 0 6px 12px rgba(0,0,0,0.4); }
.scn-finches-dinner-drummle-toast .fd-chair-l { position:absolute; bottom:22%; left:15%; width:12%; height:18%; background: linear-gradient(180deg, #503020 0%, #301810 100%); border-radius: 40% 40% 20% 20%; transform-origin: bottom center; animation: fd-chair 6s ease-in-out infinite; }
.scn-finches-dinner-drummle-toast .fd-chair-r { position:absolute; bottom:22%; right:15%; width:12%; height:18%; background: linear-gradient(180deg, #503020 0%, #301810 100%); border-radius: 40% 40% 20% 20%; transform-origin: bottom center; animation: fd-chair 6s ease-in-out infinite 2s; }
.scn-finches-dinner-drummle-toast .fd-figure-standing { position:absolute; bottom:22%; left:46%; width:10%; height:32%; background: linear-gradient(180deg, #2a1a12 0%, #1a0e08 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: fd-standing 3s ease-in-out infinite; }
.scn-finches-dinner-drummle-toast .fd-figure-sitting-l { position:absolute; bottom:18%; left:18%; width:10%; height:22%; background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%); border-radius: 50% 50% 30% 30% / 50% 50% 40% 40%; transform-origin: bottom center; animation: fd-sitting 4s ease-in-out infinite; }
.scn-finches-dinner-drummle-toast .fd-figure-sitting-r { position:absolute; bottom:18%; right:18%; width:10%; height:22%; background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%); border-radius: 50% 50% 30% 30% / 50% 50% 40% 40%; transform-origin: bottom center; animation: fd-sitting 4s ease-in-out infinite 1s; }
.scn-finches-dinner-drummle-toast .fd-candle { position:absolute; bottom:30%; left:50%; width:2%; height:10%; background: linear-gradient(180deg, #f0d0a0 0%, #c0a080 100%); border-radius: 2px; transform: translateX(-50%); }
.scn-finches-dinner-drummle-toast .fd-candle-flame { position:absolute; bottom:38%; left:50%; width:3%; height:6%; background: radial-gradient(circle, #ffe080 0%, #e08040 60%, transparent 100%); border-radius: 50%; transform: translateX(-50%); animation: fd-flame 0.6s ease-in-out infinite alternate; }
@keyframes fd-chair { 0% { transform: rotate(-1deg); } 50% { transform: rotate(1.5deg); } 100% { transform: rotate(-0.5deg); } }
@keyframes fd-standing { 0% { transform: translateY(0) rotate(-2deg); } 50% { transform: translateY(-3px) rotate(2deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes fd-sitting { 0% { transform: translateY(0) rotate(-1deg); } 50% { transform: translateY(-2px) rotate(1deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes fd-flame { 0% { transform: translateX(-50%) scaleY(0.9); opacity:0.8; } 50% { transform: translateX(-50%) scaleY(1.2); opacity:1; } 100% { transform: translateX(-50%) scaleY(1); opacity:0.9; } }

.scn-richmond-garden-evening {
  background: linear-gradient(180deg, #1a1a3e 0%, #2a2040 40%, #3a2a50 100%), radial-gradient(ellipse at 70% 100%, #4a3a5a 0%, transparent 60%);
}
.scn-richmond-garden-evening .rg-sky { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #2a2040 0%, #4a3a5a 100%); animation: rg-sky 12s ease-in-out infinite alternate; }
.scn-richmond-garden-evening .rg-hedge { position:absolute; bottom:30%; left:0; right:0; height:20%; background: linear-gradient(180deg, #1a2a1a 0%, #0a1a0a 100%); border-radius: 40% 60% 10% 10% / 80% 70% 20% 20%; box-shadow: inset 0 6px 20px rgba(0,0,0,0.3); }
.scn-richmond-garden-evening .rg-bench { position:absolute; bottom:25%; left:30%; width:20%; height:6%; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a1a 100%); border-radius: 4px; box-shadow: 0 4px 8px rgba(0,0,0,0.5); }
.scn-richmond-garden-evening .rg-figure-pip { position:absolute; bottom:26%; left:32%; width:10%; height:30%; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: rg-pip 5s ease-in-out infinite; }
.scn-richmond-garden-evening .rg-figure-estella { position:absolute; bottom:26%; right:35%; width:9%; height:28%; background: linear-gradient(180deg, #2a2a1a 0%, #1a1a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: rg-estella 5s ease-in-out infinite 1s; }
.scn-richmond-garden-evening .rg-lantern { position:absolute; bottom:32%; left:45%; width:4%; height:6%; background: #d0a070; border-radius: 20% 20% 10% 10%; box-shadow: 0 0 12px 4px #b08050; animation: rg-lantern 4s ease-in-out infinite alternate; }
.scn-richmond-garden-evening .rg-lantern-glow { position:absolute; bottom:30%; left:42%; width:10%; height:14%; background: radial-gradient(circle, #d0a070 0%, transparent 70%); opacity:0.5; animation: rg-glow 3s ease-in-out infinite alternate; }
@keyframes rg-sky { 0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.7; } }
@keyframes rg-pip { 0% { transform: translateX(0) rotate(-1deg); } 50% { transform: translateX(5px) rotate(1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes rg-estella { 0% { transform: translateX(0) rotate(1deg); } 50% { transform: translateX(-4px) rotate(-1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes rg-lantern { 0% { transform: rotate(-3deg); opacity:0.8; } 50% { transform: rotate(3deg); opacity:1; } 100% { transform: rotate(-2deg); opacity:0.9; } }
@keyframes rg-glow { 0% { opacity:0.3; } 50% { opacity:0.6; } 100% { opacity:0.4; } }

.scn-temple-chambers-watchman {
  background: linear-gradient(180deg, #0a0a1e 0%, #12122e 40%, #1a1a3e 100%), radial-gradient(ellipse at 50% 80%, #2a2a4e 0%, transparent 70%);
}
.scn-temple-chambers-watchman .tc-wall { position:absolute; inset:0; background: linear-gradient(180deg, #1a1a3a 0%, #0e0e22 100%); }
.scn-temple-chambers-watchman .tc-window { position:absolute; top:20%; left:35%; width:20%; height:30%; background: linear-gradient(180deg, #2a2a4e 0%, #1a1a3e 100%); border: 4px solid #2a1a1a; border-radius: 4px; box-shadow: inset 0 0 20px rgba(255,255,255,0.1); }
.scn-temple-chambers-watchman .tc-moonbeam { position:absolute; top:18%; left:37%; width:16%; height:60%; background: linear-gradient(180deg, rgba(200,220,255,0.15) 0%, rgba(200,220,255,0.05) 100%); clip-path: polygon(0 0, 100% 0, 80% 100%, 20% 100%); animation: tc-moonbeam 10s ease-in-out infinite alternate; }
.scn-temple-chambers-watchman .tc-desk { position:absolute; bottom:20%; left:20%; width:50%; height:6%; background: linear-gradient(180deg, #2a1a1a 0%, #1a0e0e 100%); border-radius: 4px; box-shadow: 0 4px 8px rgba(0,0,0,0.6); }
.scn-temple-chambers-watchman .tc-figure { position:absolute; bottom:22%; left:35%; width:10%; height:28%; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: tc-figure 6s ease-in-out infinite; }
.scn-temple-chambers-watchman .tc-shadow { position:absolute; bottom:18%; left:28%; width:30%; height:10%; background: radial-gradient(ellipse, rgba(0,0,0,0.5) 0%, transparent 70%); animation: tc-shadow 6s ease-in-out infinite; }
.scn-temple-chambers-watchman .tc-cloud { position:absolute; top:12%; left:50%; width:15%; height:6%; background: rgba(200,220,255,0.15); border-radius: 50%; filter: blur(8px); animation: tc-cloud 30s linear infinite; }
@keyframes tc-moonbeam { 0% { opacity:0.3; } 50% { opacity:0.6; } 100% { opacity:0.4; } }
@keyframes tc-figure { 0% { transform: translateY(0) rotate(-1deg); } 50% { transform: translateY(-3px) rotate(1deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes tc-shadow { 0% { opacity:0.2; } 50% { opacity:0.5; } 100% { opacity:0.3; } }
@keyframes tc-cloud { 0% { transform: translateX(0); } 100% { transform: translateX(-120vw); } }

.scn-convict-departs {
  background: linear-gradient(180deg, #2b2b3f 0%, #1f1f2e 40%, #14141f 100%),
              radial-gradient(ellipse at 50% 0%, #3a3b52 0%, transparent 70%);
}
.scn-convict-departs .cd-sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #3a3b52 0%, #2a2c40 60%, transparent);
  animation: cd-sky 25s ease-in-out infinite alternate;
}
.scn-convict-departs .cd-fog {
  position: absolute; inset: 30% 0 0 0;
  background: radial-gradient(ellipse at 30% 70%, rgba(150,160,180,0.12) 0%, transparent 70%);
  filter: blur(10px);
  animation: cd-fog 40s linear infinite;
}
.scn-convict-departs .cd-ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #1c1c28 0%, #0e0e16 100%);
  border-radius: 70% 30% 0 0 / 40% 20% 0 0;
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.6);
}
.scn-convict-departs .cd-figure {
  position: absolute; bottom: 12%; left: 45%;
  width: 28px; height: 60px;
  background: linear-gradient(135deg, #0f0f12 0%, #050507 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 35% 35%;
  transform: skewX(-5deg);
  animation: cd-limp 6s ease-in-out infinite;
}
.scn-convict-departs .cd-lamp {
  position: absolute; bottom: 15%; left: 35%;
  width: 8px; height: 14px;
  background: radial-gradient(ellipse at 50% 100%, #b8944a 0%, transparent 70%);
  box-shadow: 0 0 20px 6px rgba(184,148,74,0.3), 0 0 40px 12px rgba(184,148,74,0.1);
  animation: cd-lamp 8s ease-in-out infinite alternate;
}
.scn-convict-departs .cd-puddle {
  position: absolute; bottom: 8%; left: 40%; width: 70px; height: 6px;
  background: linear-gradient(90deg, transparent 0%, rgba(120,140,160,0.15) 30%, rgba(120,140,160,0.1) 70%, transparent);
  border-radius: 50%;
  filter: blur(3px);
  animation: cd-puddle 10s ease-in-out infinite;
}
.scn-convict-departs .cd-mist {
  position: absolute; top: 5%; left: 10%; width: 120px; height: 30px;
  background: radial-gradient(ellipse, rgba(200,210,230,0.08) 0%, transparent 70%);
  filter: blur(12px);
  animation: cd-mist 50s linear infinite reverse;
}
@keyframes cd-sky {
  0% { opacity: 0.6; }
  50% { opacity: 0.9; }
  100% { opacity: 0.5; }
}
@keyframes cd-fog {
  0% { transform: translateX(-20px) scaleY(1); }
  50% { transform: translateX(40px) scaleY(1.2); }
  100% { transform: translateX(-20px) scaleY(1); }
}
@keyframes cd-limp {
  0% { transform: translateX(0) rotate(0deg) skewX(-5deg); }
  25% { transform: translateX(8px) rotate(2deg) skewX(-3deg); }
  50% { transform: translateX(16px) rotate(-1deg) skewX(-5deg); }
  75% { transform: translateX(24px) rotate(1deg) skewX(-4deg); }
  100% { transform: translateX(32px) rotate(0deg) skewX(-5deg); }
}
@keyframes cd-lamp {
  0% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-2px) scale(1.05); }
  100% { transform: translateY(0) scale(1); }
}
@keyframes cd-puddle {
  0% { transform: scaleY(1); opacity: 0.6; }
  50% { transform: scaleY(1.3); opacity: 1; }
  100% { transform: scaleY(1); opacity: 0.6; }
}
@keyframes cd-mist {
  0% { transform: translateX(0) scaleX(1); }
  100% { transform: translateX(-200px) scaleX(1.5); }
}

.scn-home-intro {
  background: linear-gradient(180deg, #2a2d3a 0%, #1e202b 40%, #14161f 100%),
              radial-gradient(ellipse at 50% 40%, #4a4f63 0%, transparent 70%);
}
.scn-home-intro .hi-wall {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(90deg, #34384a 0%, #2a2e3d 50%, #34384a 100%);
  border-radius: 0 0 30% 30% / 0 0 10% 10%;
  box-shadow: inset 0 -8px 20px rgba(0,0,0,0.5);
}
.scn-home-intro .hi-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #1b1e27 0%, #0e1016 100%);
  box-shadow: inset 0 10px 25px rgba(0,0,0,0.7);
}
.scn-home-intro .hi-hearth {
  position: absolute; bottom: 15%; left: 35%; width: 80px; height: 120px;
  background: linear-gradient(180deg, #3b2f24 0%, #201a14 100%);
  border-radius: 30% 30% 0 0;
  box-shadow: inset 0 8px 15px rgba(0,0,0,0.5), 0 0 0 4px #4a3c30;
}
.scn-home-intro .hi-chair {
  position: absolute; bottom: 12%; left: 10%; width: 50px; height: 60px;
  background: linear-gradient(180deg, #4a3c2f 0%, #2e2118 100%);
  border-radius: 10% 10% 20% 20%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.6);
  animation: hi-chair 15s ease-in-out infinite;
}
.scn-home-intro .hi-figure {
  position: absolute; bottom: 8%; left: 15%;
  width: 30px; height: 70px;
  background: linear-gradient(180deg, #1a1a24 0%, #0c0c14 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 35% 35%;
  transform: rotate(-3deg);
  animation: hi-figure 12s ease-in-out infinite alternate;
}
.scn-home-intro .hi-candle {
  position: absolute; bottom: 20%; left: 30%;
  width: 6px; height: 14px;
  background: linear-gradient(180deg, #f0d4a0 0%, #b08040 80%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 0 0 18px 6px rgba(240,212,160,0.4), 0 0 36px 12px rgba(240,212,160,0.2);
  animation: hi-candle 5s ease-in-out infinite alternate;
}
.scn-home-intro .hi-shadow {
  position: absolute; bottom: 8%; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,0.5) 100%);
  animation: hi-shadow 20s ease-in-out infinite;
}
@keyframes hi-chair {
  0% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
  100% { transform: translateY(0); }
}
@keyframes hi-figure {
  0% { transform: translateY(0) rotate(-3deg); }
  50% { transform: translateY(-4px) rotate(2deg); }
  100% { transform: translateY(0) rotate(-3deg); }
}
@keyframes hi-candle {
  0% { transform: scaleY(1); opacity: 0.8; }
  50% { transform: scaleY(1.15); opacity: 1; }
  100% { transform: scaleY(1); opacity: 0.8; }
}
@keyframes hi-shadow {
  0% { opacity: 0.4; }
  50% { opacity: 0.7; }
  100% { opacity: 0.4; }
}

.scn-joe-defends {
  background: linear-gradient(180deg, #2a1b10 0%, #3f2a1a 40%, #1f130a 100%),
              radial-gradient(ellipse at 65% 80%, #b85a1a 0%, transparent 70%);
}
.scn-joe-defends .jd-back {
  position: absolute; inset: 0 0 15% 0;
  background: linear-gradient(180deg, #3d2a1a 0%, #2a1a0e 100%);
  border-radius: 0 0 20% 20%;
  box-shadow: inset 0 -10px 30px rgba(0,0,0,0.7);
}
.scn-joe-defends .jd-fire {
  position: absolute; bottom: 20%; left: 55%; width: 60px; height: 80px;
  background: radial-gradient(ellipse at 50% 100%, #f06020 0%, #e08010 30%, #b04000 60%, transparent);
  border-radius: 60% 60% 20% 20%;
  filter: blur(4px);
  animation: jd-fire 3s ease-in-out infinite alternate;
}
.scn-joe-defends .jd-grate {
  position: absolute; bottom: 18%; left: 50%; width: 80px; height: 30px;
  background: linear-gradient(90deg, #2a1a0e 0%, #3f2a1a 30%, #2a1a0e 70%);
  border-radius: 10% 10% 50% 50%;
  box-shadow: inset 0 4px 10px rgba(0,0,0,0.6);
  transform: translateX(-50%);
}
.scn-joe-defends .jd-chair {
  position: absolute; bottom: 12%; left: 25%; width: 45px; height: 55px;
  background: linear-gradient(180deg, #4a3520 0%, #2a1a0e 100%);
  border-radius: 10% 10% 20% 20%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.5);
}
.scn-joe-defends .jd-figure {
  position: absolute; bottom: 8%; left: 30%;
  width: 28px; height: 65px;
  background: linear-gradient(180deg, #1a140f 0%, #0a0806 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 35% 35%;
  transform: rotate(2deg);
  animation: jd-figure 5s ease-in-out infinite alternate;
}
.scn-joe-defends .jd-poker {
  position: absolute; bottom: 8%; left: 40%;
  width: 3px; height: 40px;
  background: linear-gradient(180deg, #4a403a 0%, #1a1410 100%);
  border-radius: 30%;
  transform: rotate(25deg);
  transform-origin: bottom center;
  animation: jd-poker 4s ease-in-out infinite;
}
.scn-joe-defends .jd-glow {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at 55% 80%, rgba(240,140,40,0.2) 0%, transparent 70%);
  animation: jd-glow 6s ease-in-out infinite;
}
@keyframes jd-fire {
  0% { transform: scaleY(1) scaleX(1); opacity: 0.9; }
  50% { transform: scaleY(1.2) scaleX(1.1); opacity: 1; }
  100% { transform: scaleY(0.9) scaleX(0.95); opacity: 0.85; }
}
@keyframes jd-figure {
  0% { transform: rotate(2deg) translateY(0); }
  50% { transform: rotate(-1deg) translateY(-3px); }
  100% { transform: rotate(2deg) translateY(0); }
}
@keyframes jd-poker {
  0% { transform: rotate(25deg) scaleY(1); }
  50% { transform: rotate(30deg) scaleY(1.05); }
  100% { transform: rotate(25deg) scaleY(1); }
}
@keyframes jd-glow {
  0% { opacity: 0.3; }
  50% { opacity: 0.6; }
  100% { opacity: 0.3; }
}

.scn-mrs-joe-rages {
  background: linear-gradient(180deg, #f0e8d0 0%, #d0c0a0 30%, #b0a080 60%, #908060 100%),
              radial-gradient(ellipse at 40% 50%, #e0d0b0 0%, transparent 70%);
}
.scn-mrs-joe-rages .mj-sky {
  position: absolute; inset: 0 0 55% 0;
  background: linear-gradient(180deg, #e8d8c0 0%, #d0c0a0 100%);
  animation: mj-sky 30s ease-in-out infinite;
}
.scn-mrs-joe-rages .mj-wall {
  position: absolute; bottom: 40%; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #b8a888 0%, #988868 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: inset 0 -8px 20px rgba(0,0,0,0.2);
}
.scn-mrs-joe-rages .mj-window {
  position: absolute; bottom: 50%; left: 35%; width: 50px; height: 60px;
  background: radial-gradient(ellipse at 50% 50%, #c0d8e8 0%, #a0b8c8 80%);
  border: 4px solid #605040;
  border-radius: 10%;
  box-shadow: inset 0 0 20px rgba(100,140,180,0.5);
}
.scn-mrs-joe-rages .mj-table {
  position: absolute; bottom: 18%; left: 20%; width: 80px; height: 20px;
  background: linear-gradient(90deg, #605040 0%, #807060 50%, #605040 100%);
  border-radius: 10%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.3);
  animation: mj-table 7s ease-in-out infinite;
}
.scn-mrs-joe-rages .mj-apron {
  position: absolute; bottom: 20%; left: 50%;
  width: 40px; height: 30px;
  background: linear-gradient(135deg, #d8c8b0 0%, #b8a888 100%);
  border-radius: 0 0 20% 20%;
  box-shadow: inset 0 -4px 6px rgba(0,0,0,0.2);
  transform: translateX(-50%);
  animation: mj-apron 4s ease-in-out infinite;
}
.scn-mrs-joe-rages .mj-figure {
  position: absolute; bottom: 10%; left: 48%;
  width: 30px; height: 70px;
  background: linear-gradient(180deg, #2a251c 0%, #12100a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 35% 35%;
  transform: rotate(5deg);
  animation: mj-figure 3s ease-in-out infinite alternate;
}
.scn-mrs-joe-rages .mj-shadow {
  position: absolute; bottom: 0; left: 30%; width: 100px; height: 15px;
  background: radial-gradient(ellipse, rgba(0,0,0,0.3) 0%, transparent 70%);
  filter: blur(6px);
  animation: mj-shadow 5s ease-in-out infinite;
}
@keyframes mj-sky {
  0% { opacity: 0.85; }
  50% { opacity: 1; }
  100% { opacity: 0.85; }
}
@keyframes mj-table {
  0% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
  100% { transform: translateY(0); }
}
@keyframes mj-apron {
  0% { transform: translateX(-50%) rotate(0deg); }
  50% { transform: translateX(-50%) rotate(3deg); }
  100% { transform: translateX(-50%) rotate(0deg); }
}
@keyframes mj-figure {
  0% { transform: rotate(5deg) translateX(0); }
  50% { transform: rotate(-3deg) translateX(4px); }
  100% { transform: rotate(5deg) translateX(0); }
}
@keyframes mj-shadow {
  0% { transform: scaleX(1); opacity: 0.5; }
  50% { transform: scaleX(1.4); opacity: 0.8; }
  100% { transform: scaleX(1); opacity: 0.5; }
}

/* Scene: aftermath-guilt – dark interior, stairs, figure pulled up */
.scn-aftermath-guilt {
  background: linear-gradient(180deg, #1a1218 0%, #2a1a20 30%, #0e080c 70%), radial-gradient(ellipse at 50% 0%, #3a2228 0%, transparent 60%);
}
.scn-aftermath-guilt .staircase {
  position: absolute; bottom: 0; left: 0; right: 0; height: 55%;
  background: linear-gradient(180deg, #3a2a28 0%, #1a1210 100%);
  border-radius: 8% 8% 0 0 / 20% 20% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,.6);
  animation: ag-stairs 12s ease-in-out infinite alternate;
}
.scn-aftermath-guilt .wall-dark {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #0e080c 0%, #1a1218 100%);
  opacity: .85;
}
.scn-aftermath-guilt .figure-child {
  position: absolute; bottom: 30%; left: 45%; width: 24px; height: 52px;
  background: linear-gradient(180deg, #2a1a1e 0%, #0e080a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ag-figure 4s ease-in-out infinite;
}
.scn-aftermath-guilt .sister-hand {
  position: absolute; bottom: 38%; left: 40%; width: 16px; height: 28px;
  background: linear-gradient(180deg, #3a2a2e 0%, #1a1216 100%);
  border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%;
  transform-origin: top center;
  animation: ag-hand 4s ease-in-out infinite;
}
.scn-aftermath-guilt .boots-dangle {
  position: absolute; bottom: 18%; left: 42%; right: 42%; height: 20px;
  background: radial-gradient(ellipse at 50% 0%, #1a1210 0%, #080404 100%);
  border-radius: 40% 40% 20% 20%;
  filter: blur(1px);
  animation: ag-boots 3s ease-in-out infinite;
}
.scn-aftermath-guilt .candle-glow {
  position: absolute; top: 10%; left: 55%; width: 14px; height: 24px;
  background: radial-gradient(circle, #e09050 0%, #b06030 50%, transparent 100%);
  border-radius: 30%;
  box-shadow: 0 0 16px 6px #d08040, 0 0 32px 12px rgba(208,128,64,.4);
  animation: ag-candle 5s ease-in-out infinite alternate;
}
.scn-aftermath-guilt .shadow-banister {
  position: absolute; bottom: 32%; left: 38%; width: 4px; height: 200px;
  background: linear-gradient(180deg, transparent 0%, #0a0608 100%);
  opacity: .7;
  animation: ag-shadow 8s linear infinite alternate;
}
@keyframes ag-stairs { 0% { transform: translateY(0) } 50% { transform: translateY(-4px) } 100% { transform: translateY(0) } }
@keyframes ag-figure { 0%,100% { transform: translate(0,0) rotate(0) } 25% { transform: translate(4px,-2px) rotate(3deg) } 50% { transform: translate(-2px,-1px) rotate(-2deg) } 75% { transform: translate(2px,0) rotate(2deg) } }
@keyframes ag-hand { 0%,100% { transform: translate(0,0) rotate(0) } 30% { transform: translate(2px,-1px) rotate(5deg) } 70% { transform: translate(-1px,1px) rotate(-3deg) } }
@keyframes ag-boots { 0%,100% { transform: translateX(0) rotate(0) } 50% { transform: translateX(8px) rotate(-5deg) } }
@keyframes ag-candle { 0% { opacity: .8; transform: scale(1) } 50% { opacity: 1; transform: scale(1.08) } 100% { opacity: .85; transform: scale(.95) } }
@keyframes ag-shadow { 0% { opacity: .5 } 50% { opacity: .8 } 100% { opacity: .4 } }

/* Scene: reflections-on-education – churchyard, overcast, calm */
.scn-reflections-on-education {
  background: linear-gradient(180deg, #bcc6c0 0%, #8a9a8e 30%, #4a5a4e 100%), radial-gradient(ellipse at 50% 0%, #d6ded8 0%, transparent 60%);
}
.scn-reflections-on-education .overcast-sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #d0d6d0 0%, #a0aea4 100%);
  opacity: .6;
  animation: re-sky 20s ease-in-out infinite alternate;
}
.scn-reflections-on-education .churchyard-grass {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #5a6a5a 0%, #2a3a2a 100%);
  border-radius: 60% 40% 0 0 / 30% 20% 0 0;
}
.scn-reflections-on-education .tombstone {
  position: absolute; bottom: 30%; left: 35%; width: 50px; height: 70px;
  background: linear-gradient(135deg, #8a8e8a 0%, #5a5e5a 100%);
  border-radius: 20% 20% 10% 10% / 40% 40% 20% 20%;
  box-shadow: inset 0 -4px 8px rgba(0,0,0,.3);
  transform: rotate(-2deg);
  animation: re-stone 12s ease-in-out infinite;
}
.scn-reflections-on-education .church-spire {
  position: absolute; top: 15%; left: 60%; width: 12px; height: 120px;
  background: linear-gradient(180deg, #6a726e 0%, #3a423e 100%);
  clip-path: polygon(50% 0%, 35% 100%, 65% 100%);
  transform-origin: bottom center;
  animation: re-spire 6s ease-in-out infinite alternate;
}
.scn-reflections-on-education .child-figure {
  position: absolute; bottom: 28%; left: 36%; width: 20px; height: 40px;
  background: linear-gradient(180deg, #3a3e3a 0%, #1a1e1a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: re-child 4s ease-in-out infinite;
}
.scn-reflections-on-education .cloud-slow {
  position: absolute; top: 20%; left: 10%; width: 90px; height: 20px;
  background: linear-gradient(180deg, rgba(255,255,255,.4) 0%, rgba(200,210,200,.1) 100%);
  border-radius: 50%;
  filter: blur(8px);
  animation: re-cloud 45s linear infinite;
}
@keyframes re-sky { 0% { opacity: .5 } 50% { opacity: .7 } 100% { opacity: .4 } }
@keyframes re-stone { 0%,100% { transform: rotate(-2deg) translateY(0) } 50% { transform: rotate(1deg) translateY(-3px) } }
@keyframes re-spire { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.02) } 100% { transform: scaleY(.98) } }
@keyframes re-child { 0%,100% { transform: translate(0,0) } 30% { transform: translate(2px,-2px) } 70% { transform: translate(-1px,0) } }
@keyframes re-cloud { 0% { transform: translateX(-40px) } 100% { transform: translateX(120vw) } }

/* Scene: joe-and-learning – bright interior, two figures, slate */
.scn-joe-and-learning {
  background: linear-gradient(180deg, #e8d8b8 0%, #c8b898 40%, #a09070 100%), radial-gradient(ellipse at 50% 0%, #f0e4c8 0%, transparent 70%);
}
.scn-joe-and-learning .wooden-table {
  position: absolute; bottom: 0; left: 10%; right: 10%; height: 40%;
  background: linear-gradient(180deg, #a08060 0%, #705040 100%);
  border-radius: 10% 10% 0 0 / 20% 20% 0 0;
  box-shadow: 0 -6px 12px rgba(0,0,0,.3);
}
.scn-joe-and-learning .window-light {
  position: absolute; top: 8%; left: 60%; width: 80px; height: 100px;
  background: linear-gradient(135deg, #f8f0d8 0%, #e8d8b0 100%);
  border-radius: 10%;
  box-shadow: inset 0 0 30px rgba(255,240,200,.6), 0 0 40px 8px rgba(255,220,150,.3);
  opacity: .8;
  animation: jl-light 8s ease-in-out infinite alternate;
}
.scn-joe-and-learning .joe-figure {
  position: absolute; bottom: 30%; left: 20%; width: 40px; height: 70px;
  background: linear-gradient(180deg, #7a6a5a 0%, #4a3a2a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: jl-joe 5s ease-in-out infinite;
}
.scn-joe-and-learning .pip-figure {
  position: absolute; bottom: 28%; left: 35%; width: 24px; height: 50px;
  background: linear-gradient(180deg, #5a5a4a 0%, #2a2a1a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: jl-pip 5s ease-in-out infinite;
}
.scn-joe-and-learning .slate-shape {
  position: absolute; bottom: 35%; left: 28%; width: 50px; height: 36px;
  background: linear-gradient(180deg, #3a4a5a 0%, #1a2a3a 100%);
  border-radius: 8%;
  box-shadow: 0 4px 8px rgba(0,0,0,.4);
  transform: rotate(8deg);
  animation: jl-slate 6s ease-in-out infinite;
}
.scn-joe-and-learning .chalk-dust {
  position: absolute; bottom: 38%; left: 32%; width: 10px; height: 10px;
  background: radial-gradient(circle, #f0f0f0 0%, transparent 100%);
  filter: blur(3px);
  opacity: .6;
  animation: jl-chalk 3s ease-in-out infinite alternate;
}
.scn-joe-and-learning .shadow-under {
  position: absolute; bottom: 18%; left: 15%; right: 15%; height: 12px;
  background: radial-gradient(ellipse at 50% 0%, rgba(0,0,0,.3) 0%, transparent 100%);
  filter: blur(4px);
  animation: jl-shadow 4s ease-in-out infinite alternate;
}
@keyframes jl-light { 0% { opacity: .6; transform: scale(1) } 50% { opacity: .9; transform: scale(1.03) } 100% { opacity: .7; transform: scale(.98) } }
@keyframes jl-joe { 0%,100% { transform: translate(0,0) rotate(0) } 25% { transform: translate(2px,-2px) rotate(2deg) } 50% { transform: translate(-1px,0) rotate(-1deg) } 75% { transform: translate(0,-1px) rotate(1deg) } }
@keyframes jl-pip { 0%,100% { transform: translate(0,0) rotate(0) } 30% { transform: translate(1px,-1px) rotate(3deg) } 70% { transform: translate(-2px,0) rotate(-2deg) } }
@keyframes jl-slate { 0%,100% { transform: rotate(8deg) } 50% { transform: rotate(4deg) translateY(-2px) } }
@keyframes jl-chalk { 0% { opacity: .4; transform: scale(1) } 100% { opacity: .8; transform: scale(1.3) translateX(4px) } }
@keyframes jl-shadow { 0% { opacity: .2 } 50% { opacity: .4 } 100% { opacity: .3 } }

/* Scene: joe-hug – firelit, two figures embracing */
.scn-joe-hug {
  background: linear-gradient(180deg, #2a1810 0%, #3a2018 30%, #1a0e08 100%), radial-gradient(ellipse at 50% 70%, #5a2a18 0%, transparent 60%);
}
.scn-joe-hug .fireplace-glow {
  position: absolute; bottom: 20%; left: 45%; width: 80px; height: 100px;
  background: radial-gradient(ellipse at 50% 50%, #d06030 0%, #8a2a10 50%, transparent 80%);
  border-radius: 30%;
  box-shadow: 0 0 60px 20px #c05020, 0 0 100px 30px rgba(192,80,32,.3);
  animation: jh-fire 6s ease-in-out infinite alternate;
}
.scn-joe-hug .joe-arm {
  position: absolute; bottom: 34%; left: 30%; width: 40px; height: 60px;
  background: linear-gradient(135deg, #5a3a2a 0%, #3a1a0a 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 30% 30%;
  transform-origin: bottom left;
  animation: jh-arm-j 4s ease-in-out infinite;
}
.scn-joe-hug .pip-arm {
  position: absolute; bottom: 32%; left: 38%; width: 30px; height: 50px;
  background: linear-gradient(135deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%;
  transform-origin: bottom right;
  animation: jh-arm-p 4s ease-in-out infinite;
}
.scn-joe-hug .embrace-core {
  position: absolute; bottom: 30%; left: 34%; width: 36px; height: 60px;
  background: radial-gradient(ellipse at 50% 50%, #4a2a1a 0%, #1a0e08 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  box-shadow: inset 0 0 20px rgba(200,100,40,.3);
  animation: jh-core 3s ease-in-out infinite;
}
.scn-joe-hug .poker-dropped {
  position: absolute; bottom: 18%; left: 44%; width: 8px; height: 60px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%);
  border-radius: 20%;
  transform: rotate(30deg);
  animation: jh-poker 5s ease-in-out infinite;
}
.scn-joe-hug .shadow-hearth {
  position: absolute; bottom: 10%; left: 20%; right: 20%; height: 30px;
  background: radial-gradient(ellipse at 50% 0%, rgba(0,0,0,.6) 0%, transparent 100%);
  filter: blur(10px);
  animation: jh-shadow 4s ease-in-out infinite alternate;
}
.scn-joe-hug .warm-light {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at 50% 60%, rgba(200,80,30,.15) 0%, transparent 70%);
  pointer-events: none;
  animation: jh-warm 8s ease-in-out infinite alternate;
}
@keyframes jh-fire { 0% { opacity: .7; transform: scale(1) } 50% { opacity: 1; transform: scale(1.05) } 100% { opacity: .8; transform: scale(.95) } }
@keyframes jh-arm-j { 0%,100% { transform: rotate(0) } 30% { transform: rotate(-5deg) } 70% { transform: rotate(3deg) } }
@keyframes jh-arm-p { 0%,100% { transform: rotate(0) } 30% { transform: rotate(5deg) } 70% { transform: rotate(-3deg) } }
@keyframes jh-core { 0%,100% { transform: scale(1) } 50% { transform: scale(1.02) translateY(-2px) } }
@keyframes jh-poker { 0%,100% { transform: rotate(30deg) } 50% { transform: rotate(20deg) translateX(4px) } }
@keyframes jh-shadow { 0% { opacity: .3 } 50% { opacity: .6 } 100% { opacity: .4 } }
@keyframes jh-warm { 0% { opacity: .8 } 50% { opacity: 1 } 100% { opacity: .7 } }

.scn-herbert-clara-wedding-talk {
  background: linear-gradient(180deg, #2a1a0a 0%, #4a2a1a 30%, #3a1a0a 70%, #1a0a00 100%),
              radial-gradient(ellipse at 40% 50%, #6a3a1a 0%, transparent 60%);
}
.scn-herbert-clara-wedding-talk .room-shadow { position:absolute; inset:0; background: linear-gradient(135deg, transparent 40%, rgba(0,0,0,0.3) 100%); animation: hcwt-shadow 12s ease-in-out infinite alternate; }
.scn-herbert-clara-wedding-talk .wall        { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #5a3a1a 0%, #3a1a0a 100%); }
.scn-herbert-clara-wedding-talk .window      { position:absolute; top:18%; left:12%; width:80px; height:100px; background: radial-gradient(ellipse at 50% 50%, #ffd080 0%, #806040 100%); border-radius:30% 30% 10% 10% / 50% 50% 20% 20%; box-shadow: 0 0 30px 10px rgba(255,180,80,0.4); animation: hcwt-glow 4s ease-in-out infinite alternate; }
.scn-herbert-clara-wedding-talk .candle      { position:absolute; bottom:42%; left:52%; width:8px; height:40px; background: linear-gradient(180deg, #804020 0%, #402010 100%); border-radius:20% 20% 10% 10%; }
.scn-herbert-clara-wedding-talk .candle::after { content:''; position:absolute; top:-10px; left:50%; transform:translateX(-50%); width:14px; height:16px; background: radial-gradient(circle, #ffc040 0%, #ff8010 60%, transparent 100%); border-radius:50%; box-shadow: 0 0 20px 8px #ff8010; animation: hcwt-flame 2s ease-in-out infinite alternate; }
.scn-herbert-clara-wedding-talk .figure-left { position:absolute; bottom:30%; left:28%; width:40px; height:90px; background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: hcwt-figure-l 6s ease-in-out infinite; }
.scn-herbert-clara-wedding-talk .figure-right{ position:absolute; bottom:30%; right:25%; width:36px; height:86px; background: linear-gradient(180deg, #2a2a2a 0%, #0a0a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: hcwt-figure-r 8s ease-in-out infinite; }
.scn-herbert-clara-wedding-talk .table       { position:absolute; bottom:28%; left:20%; right:20%; height:12px; background: linear-gradient(180deg, #5a3a1a 0%, #3a2010 100%); border-radius:4px; box-shadow: 0 4px 6px rgba(0,0,0,0.5); }
@keyframes hcwt-shadow  { 0%,100% { opacity:0.6 } 50% { opacity:0.9 } }
@keyframes hcwt-glow   { 0% { box-shadow: 0 0 20px 6px rgba(255,180,80,0.3); opacity:0.8 } 50% { box-shadow: 0 0 40px 15px rgba(255,180,80,0.6); opacity:1 } 100% { box-shadow: 0 0 25px 10px rgba(255,180,80,0.35); opacity:0.85 } }
@keyframes hcwt-flame  { 0% { transform: translateX(-50%) scaleY(1) rotate(-2deg) } 50% { transform: translateX(-50%) scaleY(1.2) rotate(2deg) } 100% { transform: translateX(-50%) scaleY(0.9) rotate(-1deg) } }
@keyframes hcwt-figure-l { 0%,100% { transform: translateX(0) rotate(0) } 25% { transform: translateX(4px) rotate(2deg) } 50% { transform: translateX(-2px) rotate(-1deg) } 75% { transform: translateX(3px) rotate(1deg) } }
@keyframes hcwt-figure-r { 0%,100% { transform: translateX(0) rotate(0) } 30% { transform: translateX(-3px) rotate(-2deg) } 60% { transform: translateX(2px) rotate(1deg) } }

.scn-wedding-proposal-wemmick {
  background: linear-gradient(180deg, #f0e0a0 0%, #d0b080 40%, #b09060 100%),
              radial-gradient(ellipse at 50% 30%, #ffe0a0 0%, transparent 70%);
}
.scn-wedding-proposal-wemmick .floor       { position:absolute; bottom:0; left:0; right:0; height:35%; background: linear-gradient(180deg, #b09060 0%, #806040 100%); border-radius:20% 20% 0 0 / 40% 40% 0 0; }
.scn-wedding-proposal-wemmick .wall-bright { position:absolute; inset:0 0 35% 0; background: linear-gradient(180deg, #f8eac0 0%, #e0c080 100%); }
.scn-wedding-proposal-wemmick .window-sun  { position:absolute; top:10%; right:15%; width:90px; height:110px; background: radial-gradient(ellipse at 50% 30%, #fff8d0 0%, #f0d090 100%); border-radius:4px 4px 8px 8px; box-shadow: inset 0 0 30px #fff8d0, 0 0 40px 10px rgba(255,240,180,0.3); animation: wpr-sun 8s ease-in-out infinite alternate; }
.scn-wedding-proposal-wemmick .wemmick-body{ position:absolute; bottom:33%; left:30%; width:50px; height:100px; background: linear-gradient(180deg, #3a3a3a 0%, #1a1a1a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: wpr-bow 4s ease-in-out infinite; }
.scn-wedding-proposal-wemmick .wemmick-hat { position:absolute; bottom:70%; left:30%; width:40px; height:20px; background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%); border-radius:50% 50% 0 0; transform: translateX(5px); animation: wpr-hat 4s ease-in-out infinite; }
.scn-wedding-proposal-wemmick .pip-body    { position:absolute; bottom:33%; right:28%; width:45px; height:96px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: wpr-pip 5s ease-in-out infinite; }
.scn-wedding-proposal-wemmick .shadow      { position:absolute; bottom:0; left:20%; right:20%; height:8px; background:radial-gradient(ellipse, rgba(0,0,0,0.3) 0%, transparent 100%); animation: wpr-shadow 4s ease-in-out infinite; }
.scn-wedding-proposal-wemmick .sparkle     { position:absolute; top:40%; left:50%; width:10px; height:10px; background: radial-gradient(circle, #fff8e0 0%, transparent 100%); border-radius:50%; box-shadow: 0 0 20px 6px #fff8e0; animation: wpr-sparkle 2s ease-in-out infinite; }
@keyframes wpr-sun    { 0%,100% { opacity:0.85; box-shadow: inset 0 0 20px #fff8d0, 0 0 30px 8px rgba(255,240,180,0.2); } 50% { opacity:1; box-shadow: inset 0 0 40px #fff8d0, 0 0 60px 15px rgba(255,240,180,0.5); } }
@keyframes wpr-bow    { 0%,100% { transform: translateX(0) rotate(0) scaleY(1); } 25% { transform: translateX(-5px) rotate(-8deg) scaleY(0.9); } 50% { transform: translateX(0) rotate(0) scaleY(1); } 75% { transform: translateX(5px) rotate(8deg) scaleY(0.9); } }
@keyframes wpr-hat    { 0%,100% { transform: translateX(5px) rotate(0); } 25% { transform: translateX(0) rotate(-10deg); } 50% { transform: translateX(5px) rotate(0); } 75% { transform: translateX(10px) rotate(10deg); } }
@keyframes wpr-pip    { 0%,100% { transform: translateX(0) rotate(0); } 30% { transform: translateX(3px) rotate(-2deg); } 60% { transform: translateX(-2px) rotate(1deg); } }
@keyframes wpr-shadow { 0%,100% { transform: scaleX(1); opacity:0.5; } 50% { transform: scaleX(1.2); opacity:0.7; } }
@keyframes wpr-sparkle{ 0%,100% { transform: scale(0.5); opacity:0; } 50% { transform: scale(1.5); opacity:1; } }

.scn-item-wedding-ring {
  background: linear-gradient(180deg, #c0a060 0%, #806040 40%, #402010 100%),
              radial-gradient(ellipse at 50% 60%, #f0d0a0 0%, transparent 80%);
}
.scn-item-wedding-ring .bg-close   { position:absolute; inset:0; background: radial-gradient(ellipse at 50% 60%, transparent 60%, rgba(0,0,0,0.4) 100%); }
.scn-item-wedding-ring .hand       { position:absolute; bottom:20%; left:30%; width:80px; height:120px; background: linear-gradient(180deg, #e0b080 0%, #c09060 50%, #a07040 100%); border-radius:40% 60% 60% 40% / 60% 40% 40% 60%; transform: rotate(-10deg); animation: iwr-hand 5s ease-in-out infinite; }
.scn-item-wedding-ring .ring-band  { position:absolute; bottom:50%; left:48%; width:30px; height:20px; background: linear-gradient(180deg, #ffd700 0%, #b8860b 100%); border-radius:20% 20% 40% 40%; transform: translate(-50%, 50%) rotate(10deg); box-shadow: 0 0 12px 4px rgba(255,215,0,0.3); animation: iwr-band 3s ease-in-out infinite; }
.scn-item-wedding-ring .ring-gem   { position:absolute; bottom:53%; left:50%; width:12px; height:12px; background: radial-gradient(circle, #ff8060 0%, #c04020 100%); border-radius:50%; transform: translate(-50%, -50%); box-shadow: 0 0 20px 6px #ff8060; animation: iwr-gem 2s ease-in-out infinite alternate; }
.scn-item-wedding-ring .glow-ring  { position:absolute; bottom:40%; left:40%; right:40%; top:30%; background: radial-gradient(circle, rgba(255,215,0,0.15) 0%, transparent 100%); animation: iwr-glow 4s ease-in-out infinite; }
.scn-item-wedding-ring .sparkle-1  { position:absolute; top:36%; left:46%; width:8px; height:8px; background: radial-gradient(circle, #fff 0%, transparent 100%); border-radius:50%; animation: iwr-spark 1.5s ease-in-out infinite; }
.scn-item-wedding-ring .sparkle-2  { position:absolute; top:40%; left:54%; width:6px; height:6px; background: radial-gradient(circle, #fff 0%, transparent 100%); border-radius:50%; animation: iwr-spark 1.8s ease-in-out infinite 0.8s; }
@keyframes iwr-hand  { 0%,100% { transform: rotate(-10deg) translateY(0); } 50% { transform: rotate(-8deg) translateY(-4px); } }
@keyframes iwr-band  { 0%,100% { transform: translate(-50%, 50%) rotate(10deg) scale(1); } 50% { transform: translate(-50%, 48%) rotate(8deg) scale(1.02); } }
@keyframes iwr-gem   { 0% { box-shadow: 0 0 15px 4px #ff8060; opacity:0.9; } 50% { box-shadow: 0 0 30px 10px #ff8060; opacity:1; } 100% { box-shadow: 0 0 20px 6px #ff8060; opacity:0.95; } }
@keyframes iwr-glow  { 0%,100% { opacity:0 } 50% { opacity:0.5 } }
@keyframes iwr-spark { 0%,100% { transform: scale(0) rotate(0); opacity:0; } 50% { transform: scale(1.2) rotate(180deg); opacity:1; } }

.scn-wedding-breakfast-wemmick {
  background: linear-gradient(180deg, #f8e8c0 0%, #e0c090 40%, #c0a070 100%),
              radial-gradient(ellipse at 50% 80%, #ffe0a0 0%, transparent 70%);
}
.scn-wedding-breakfast-wemmick .bg-table    { position:absolute; inset:0; background: radial-gradient(ellipse at 50% 100%, #b09060 0%, transparent 90%); }
.scn-wedding-breakfast-wemmick .tablecloth  { position:absolute; bottom:20%; left:10%; right:10%; height:30%; background: linear-gradient(180deg, #f0e0c0 0%, #d0c0a0 100%); border-radius:8px; box-shadow: 0 4px 8px rgba(0,0,0,0.2); }
.scn-wedding-breakfast-wemmick .plate       { position:absolute; bottom:32%; left:50%; width:80px; height:80px; background: radial-gradient(ellipse at 50% 50%, #fff 0%, #e0e0e0 100%); border-radius:50%; transform: translateX(-50%); box-shadow: inset 0 0 20px rgba(0,0,0,0.1), 0 6px 10px rgba(0,0,0,0.15); }
.scn-wedding-breakfast-wemmick .egg         { position:absolute; bottom:38%; left:52%; width:30px; height:24px; background: radial-gradient(ellipse at 50% 50%, #fff8f0 0%, #f0e0c0 100%); border-radius:50%; transform: translateX(-50%); box-shadow: 0 2px 4px rgba(0,0,0,0.2); animation: wbw-egg 6s ease-in-out infinite; }
.scn-wedding-breakfast-wemmick .steam       { position:absolute; bottom:48%; left:50%; width:20px; height:40px; background: radial-gradient(ellipse, rgba(255,255,255,0.4) 0%, transparent 100%); border-radius:50%; filter: blur(4px); transform: translateX(-50%); animation: wbw-steam 3s ease-in-out infinite; }
.scn-wedding-breakfast-wemmick .wemmick-hand{ position:absolute; bottom:36%; left:30%; width:30px; height:50px; background: linear-gradient(180deg, #d0a080 0%, #b08060 100%); border-radius:40% 60% 60% 40% / 50% 50% 50% 50%; transform: rotate(20deg); transform-origin: bottom right; animation: wbw-hand-l 5s ease-in-out infinite; }
.scn-wedding-breakfast-wemmick .clara-hand  { position:absolute; bottom:36%; right:28%; width:28px; height:45px; background: linear-gradient(180deg, #e0b090 0%, #c09070 100%); border-radius:60% 40% 40% 60% / 50% 50% 50% 50%; transform: rotate(-15deg); transform-origin: bottom left; animation: wbw-hand-r 5s ease-in-out infinite 1s; }
.scn-wedding-breakfast-wemmick .fowl        { position:absolute; bottom:24%; left:20%; width:50px; height:40px; background: radial-gradient(ellipse at 50% 60%, #c09060 0%, #805040 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; animation: wbw-fowl 8s ease-in-out infinite; }
@keyframes wbw-egg    { 0%,100% { transform: translateX(-50%) scale(1); } 50% { transform: translateX(-48%) scale(1.02); } }
@keyframes wbw-steam  { 0%,100% { opacity:0; transform: translateX(-50%) translateY(0) scale(1); } 50% { opacity:0.6; transform: translateX(-50%) translateY(-20px) scale(1.5); } }
@keyframes wbw-hand-l { 0%,100% { transform: rotate(20deg) translateY(0); } 50% { transform: rotate(15deg) translateY(-5px); } }
@keyframes wbw-hand-r { 0%,100% { transform: rotate(-15deg) translateY(0); } 50% { transform: rotate(-10deg) translateY(-4px); } }
@keyframes wbw-fowl   { 0%,100% { transform: scale(1) rotate(0); } 50% { transform: scale(1.02) rotate(-2deg); } }

/* rescue-herbert-startop – tense, dark */
.scn-rescue-herbert-startop {
  background: linear-gradient(180deg, #0d0d1f 0%, #1a1a3a 50%, #2c2244 100%),
              radial-gradient(ellipse at 50% 100%, #3a2a5e 0%, transparent 70%);
}
.scn-rescue-herbert-startop .bg-deep {
  position: absolute; inset: 0; opacity: 0.4;
  background: radial-gradient(circle at 30% 60%, #4a3a6a 0%, transparent 50%);
  animation: rescFade 10s ease-in-out infinite alternate;
}
.scn-rescue-herbert-startop .wall {
  position: absolute; bottom: 20%; left: 10%; right: 10%; height: 40%;
  background: linear-gradient(180deg, #3a2a2a 0%, #1a1010 100%);
  border-radius: 10% 10% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,0.6);
  animation: rescWall 6s ease-in-out infinite alternate;
}
.scn-rescue-herbert-startop .lantern {
  position: absolute; top: 30%; left: 45%; width: 12px; height: 18px;
  background: radial-gradient(circle, #f0c068 0%, #b08040 70%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 0 0 24px 6px #c08040, 0 0 48px 12px rgba(192,128,64,0.4);
  animation: rescGlow 3s ease-in-out infinite alternate;
}
.scn-rescue-herbert-startop .figure-herbert {
  position: absolute; bottom: 22%; left: 30%; width: 20px; height: 36px;
  background: linear-gradient(180deg, #2a2a3e 0%, #14141e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: rescBend 4s ease-in-out infinite;
}
.scn-rescue-herbert-startop .figure-startop {
  position: absolute; bottom: 22%; left: 55%; width: 20px; height: 36px;
  background: linear-gradient(180deg, #2a2a3e 0%, #14141e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: rescBend 4s ease-in-out infinite 0.3s;
}
.scn-rescue-herbert-startop .figure-handel {
  position: absolute; bottom: 22%; left: 42%; width: 22px; height: 38px;
  background: linear-gradient(180deg, #3e2a2a 0%, #1e1010 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: rescReach 5s ease-in-out infinite;
}
.scn-rescue-herbert-startop .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 22%;
  background: linear-gradient(180deg, #1a1010 0%, #0d0808 100%);
  border-radius: 30% 70% 0 0 / 50% 50% 0 0;
}
@keyframes rescFade { 0% { opacity: .3 } 50% { opacity: .7 } 100% { opacity: .5 } }
@keyframes rescWall { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes rescGlow { 0% { box-shadow: 0 0 18px 4px #c08040; opacity: .85 } 50% { box-shadow: 0 0 32px 10px #ffd060; opacity: 1 } 100% { box-shadow: 0 0 22px 5px #c08040; opacity: .9 } }
@keyframes rescBend { 0% { transform: translateX(0) rotate(-2deg) } 25% { transform: translateX(2px) rotate(1deg) } 50% { transform: translateX(0) rotate(-1deg) } 75% { transform: translateX(-1px) rotate(2deg) } 100% { transform: translateX(0) rotate(0deg) } }
@keyframes rescReach { 0% { transform: translateX(0) rotate(0deg) } 33% { transform: translateX(4px) rotate(5deg) } 66% { transform: translateX(-3px) rotate(-3deg) } 100% { transform: translateX(0) rotate(0deg) } }

/* boat-preparations – tense, moonlit */
.scn-boat-preparations {
  background: linear-gradient(180deg, #0a0a2a 0%, #14144a 50%, #1a1a5e 100%),
              radial-gradient(ellipse at 50% 30%, #2a2a6e 0%, transparent 70%);
}
.scn-boat-preparations .night-sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #0a0a2a 0%, #18184a 100%);
  animation: bpSky 20s ease-in-out infinite alternate;
}
.scn-boat-preparations .moon {
  position: absolute; top: 12%; left: 70%; width: 40px; height: 40px;
  background: radial-gradient(circle, #e0e8ff 0%, #b0b8d0 60%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 40px 20px rgba(200,210,255,0.3);
  animation: bpMoon 12s ease-in-out infinite alternate;
}
.scn-boat-preparations .river {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #0f1545 0%, #1a1f55 100%);
  animation: bpRiver 8s ease-in-out infinite alternate;
}
.scn-boat-preparations .boat {
  position: absolute; bottom: 20%; left: 30%; width: 60px; height: 18px;
  background: linear-gradient(90deg, #2a1a0a 0%, #4a2a1a 50%, #2a1a0a 100%);
  border-radius: 40% 40% 20% 20% / 80% 80% 20% 20%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.6);
  animation: bpBoat 6s ease-in-out infinite;
}
.scn-boat-preparations .oar-left {
  position: absolute; bottom: 22%; left: 28%; width: 30px; height: 4px;
  background: #4a2a1a; border-radius: 2px;
  transform-origin: right center;
  animation: bpOarLeft 2s ease-in-out infinite;
}
.scn-boat-preparations .oar-right {
  position: absolute; bottom: 22%; left: 44%; width: 30px; height: 4px;
  background: #4a2a1a; border-radius: 2px;
  transform-origin: left center;
  animation: bpOarRight 2s ease-in-out infinite 1s;
}
.scn-boat-preparations .figure-herbert-boat {
  position: absolute; bottom: 22%; left: 35%; width: 16px; height: 30px;
  background: linear-gradient(180deg, #1e1e3a 0%, #0f0f1e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bpFigure 4s ease-in-out infinite;
}
.scn-boat-preparations .figure-handel-boat {
  position: absolute; bottom: 22%; left: 48%; width: 16px; height: 30px;
  background: linear-gradient(180deg, #1e1e3a 0%, #0f0f1e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bpFigure 4s ease-in-out infinite 0.5s;
}
@keyframes bpSky { 0% { opacity: .6 } 50% { opacity: 1 } 100% { opacity: .7 } }
@keyframes bpMoon { 0% { transform: translateX(0) scale(1) } 50% { transform: translateX(5px) scale(1.05) } 100% { transform: translateX(-5px) scale(0.95) } }
@keyframes bpRiver { 0% { background-position: 0 0 } 50% { background-position: -10px 0 } 100% { background-position: 10px 0 } }
@keyframes bpBoat { 0% { transform: translateX(0) rotate(0deg) } 30% { transform: translateX(3px) rotate(2deg) } 70% { transform: translateX(-2px) rotate(-1deg) } 100% { transform: translateX(0) rotate(0deg) } }
@keyframes bpOarLeft { 0% { transform: rotate(0deg) } 25% { transform: rotate(-20deg) } 50% { transform: rotate(0deg) } 75% { transform: rotate(20deg) } 100% { transform: rotate(0deg) } }
@keyframes bpOarRight { 0% { transform: rotate(0deg) } 25% { transform: rotate(20deg) } 50% { transform: rotate(0deg) } 75% { transform: rotate(-20deg) } 100% { transform: rotate(0deg) } }
@keyframes bpFigure { 0% { transform: translateX(0) rotate(0deg) } 25% { transform: translateX(1px) rotate(3deg) } 50% { transform: translateX(0) rotate(-1deg) } 75% { transform: translateX(-1px) rotate(2deg) } 100% { transform: translateX(0) rotate(0deg) } }

/* march-day-boarding – tense, sunlit */
.scn-march-day-boarding {
  background: linear-gradient(180deg, #87ceeb 0%, #b0d4f0 30%, #f0e68c 60%, #d4c060 100%),
              radial-gradient(ellipse at 50% 0%, #fff4b0 0%, transparent 70%);
}
.scn-march-day-boarding .bright-sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #87ceeb 0%, #c0e0ff 40%, transparent 100%);
  animation: mbSky 15s ease-in-out infinite alternate;
}
.scn-march-day-boarding .sun {
  position: absolute; top: 8%; left: 65%; width: 50px; height: 50px;
  background: radial-gradient(circle, #fff4b0 0%, #ffd700 60%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 60px 30px rgba(255,215,0,0.5);
  animation: mbSun 10s ease-in-out infinite alternate;
}
.scn-march-day-boarding .coach {
  position: absolute; bottom: 25%; left: 40%; width: 80px; height: 50px;
  background: linear-gradient(180deg, #5a3a1a 0%, #3a2a0a 100%);
  border-radius: 10% 10% 5% 5% / 20% 20% 5% 5%;
  box-shadow: 0 8px 12px rgba(0,0,0,0.3);
  animation: mbCoach 4s ease-in-out infinite;
}
.scn-march-day-boarding .figure-pip {
  position: absolute; bottom: 24%; left: 52%; width: 18px; height: 36px;
  background: linear-gradient(180deg, #2a2a3e 0%, #14141e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: mbWalk 5s ease-in-out infinite;
}
.scn-march-day-boarding .bag {
  position: absolute; bottom: 26%; left: 48%; width: 14px; height: 16px;
  background: linear-gradient(135deg, #6a4a2a 0%, #4a2a1a 100%);
  border-radius: 20% 20% 10% 10%;
  transform: rotate(10deg);
  animation: mbSwing 3s ease-in-out infinite;
}
.scn-march-day-boarding .coat {
  position: absolute; bottom: 30%; left: 56%; width: 20px; height: 24px;
  background: linear-gradient(180deg, #3e5e6e 0%, #2a3e4e 100%);
  border-radius: 30% 30% 10% 10%;
  transform: rotate(-5deg);
  animation: mbFlap 4s ease-in-out infinite;
}
.scn-march-day-boarding .ground-march {
  position: absolute; bottom: 0; left: 0; right: 0; height: 28%;
  background: linear-gradient(180deg, #8b7a3a 0%, #6a5a2a 100%);
  border-radius: 60% 40% 0 0 / 80% 80% 0 0;
}
.scn-march-day-boarding .shadow-sharp {
  position: absolute; bottom: 22%; left: 38%; width: 70px; height: 12px;
  background: rgba(0,0,0,0.2);
  border-radius: 50%;
  filter: blur(2px);
  animation: mbShadow 5s ease-in-out infinite alternate;
}
@keyframes mbSky { 0% { opacity: .7 } 50% { opacity: 1 } 100% { opacity: .8 } }
@keyframes mbSun { 0% { transform: scale(1) translateY(0) } 50% { transform: scale(1.1) translateY(-3px) } 100% { transform: scale(0.95) translateY(2px) } }
@keyframes mbCoach { 0% { transform: translateX(0) } 30% { transform: translateX(2px) } 70% { transform: translateX(-1px) } 100% { transform: translateX(0) } }
@keyframes mbWalk { 0% { transform: translateX(0) rotate(-2deg) } 25% { transform: translateX(5px) rotate(2deg) } 50% { transform: translateX(10px) rotate(-1deg) } 75% { transform: translateX(14px) rotate(1deg) } 100% { transform: translateX(18px) rotate(0deg) } }
@keyframes mbSwing { 0% { transform: rotate(10deg) translateY(0) } 50% { transform: rotate(5deg) translateY(-2px) } 100% { transform: rotate(10deg) translateY(0) } }
@keyframes mbFlap { 0% { transform: rotate(-5deg) translateY(0) } 50% { transform: rotate(-10deg) translateY(-3px) } 100% { transform: rotate(-5deg) translateY(0) } }
@keyframes mbShadow { 0% { width: 70px; opacity: .3 } 50% { width: 80px; opacity: .1 } 100% { width: 65px; opacity: .4 } }

/* boat-on-river – warm, sunlit */
.scn-boat-on-river {
  background: linear-gradient(180deg, #4a90b0 0%, #70b0d0 30%, #b0d4e8 60%, #e0f0ff 100%),
              radial-gradient(ellipse at 60% 20%, #fff4b0 0%, transparent 70%);
}
.scn-boat-on-river .warm-sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #4a90b0 0%, #90c8e0 50%, transparent 100%);
  animation: rivSky 12s ease-in-out infinite alternate;
}
.scn-boat-on-river .sunburst {
  position: absolute; top: 15%; left: 70%; width: 40px; height: 40px;
  background: radial-gradient(circle, #fff4b0 0%, #ffd700 50%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 80px 40px rgba(255,215,0,0.4);
  animation: rivSun 8s ease-in-out infinite alternate;
}
.scn-boat-on-river .river-warm {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #5a8a9a 0%, #3a6a7a 100%);
  animation: rivWater 6s ease-in-out infinite alternate;
}
.scn-boat-on-river .boat-small {
  position: absolute; bottom: 22%; left: 40%; width: 50px; height: 14px;
  background: linear-gradient(90deg, #4a2a1a 0%, #6a3a2a 50%, #4a2a1a 100%);
  border-radius: 40% 40% 20% 20% / 80% 80% 20% 20%;
  box-shadow: 0 4px 6px rgba(0,0,0,0.3);
  animation: rivBoat 5s ease-in-out infinite;
}
.scn-boat-on-river .figure-magwich {
  position: absolute; bottom: 24%; left: 42%; width: 18px; height: 32px;
  background: linear-gradient(180deg, #2a2a3e 0%, #14141e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: rivFigure1 4s ease-in-out infinite;
}
.scn-boat-on-river .figure-pip-boat {
  position: absolute; bottom: 24%; left: 52%; width: 16px; height: 30px;
  background: linear-gradient(180deg, #2a2a3e 0%, #14141e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: rivFigure2 4s ease-in-out infinite 0.3s;
}
.scn-boat-on-river .reflection {
  position: absolute; bottom: 16%; left: 38%; width: 60px; height: 20px;
  background: linear-gradient(180deg, transparent 0%, rgba(255,215,0,0.15) 50%, transparent 100%);
  border-radius: 50%;
  filter: blur(4px);
  animation: rivReflect 7s ease-in-out infinite alternate;
}
@keyframes rivSky { 0% { opacity: .8 } 50% { opacity: 1 } 100% { opacity: .7 } }
@keyframes rivSun { 0% { transform: translateY(0) scale(1) } 50% { transform: translateY(-2px) scale(1.05) } 100% { transform: translateY(2px) scale(0.95) } }
@keyframes rivWater { 0% { background-position: 0 0 } 50% { background-position: -8px 0 } 100% { background-position: 8px 0 } }
@keyframes rivBoat { 0% { transform: translateX(0) rotate(0deg) } 30% { transform: translateX(2px) rotate(1deg) } 70% { transform: translateX(-1px) rotate(-1deg) } 100% { transform: translateX(0) rotate(0deg) } }
@keyframes rivFigure1 { 0% { transform: translateX(0) rotate(0deg) } 25% { transform: translateX(1px) rotate(2deg) } 50% { transform: translateX(0) rotate(-1deg) } 75% { transform: translateX(-1px) rotate(1deg) } 100% { transform: translateX(0) rotate(0deg) } }
@keyframes rivFigure2 { 0% { transform: translateX(0) rotate(-1deg) } 25% { transform: translateX(2px) rotate(2deg) } 50% { transform: translateX(1px) rotate(0deg) } 75% { transform: translateX(-2px) rotate(-2deg) } 100% { transform: translateX(0) rotate(0deg) } }
@keyframes rivReflect { 0% { opacity: .2; transform: scaleY(1) } 50% { opacity: .4; transform: scaleY(1.2) } 100% { opacity: .1; transform: scaleY(0.8) } }

.scn-prison-revelation-estella { background: linear-gradient(180deg, #1a1428 0%, #2a1e3a 40%, #1e1428 70%, #14101e 100%), radial-gradient(ellipse at 50% 60%, #3a2a4e 0%, transparent 70%); }
.scn-prison-revelation-estella .wall { position:absolute; inset:0; background: linear-gradient(135deg, #1e162e 0%, #2a223a 50%, #1a1228 100%); }
.scn-prison-revelation-estella .bar-left { position:absolute; top:15%; left:18%; width:4px; height:55%; background: linear-gradient(180deg, #4a3a4a 0%, #2a1a2a 100%); box-shadow: 2px 0 6px rgba(0,0,0,.5); animation: pre-bar 6s ease-in-out infinite alternate; }
.scn-prison-revelation-estella .bar-right { position:absolute; top:15%; right:18%; width:4px; height:55%; background: linear-gradient(180deg, #4a3a4a 0%, #2a1a2a 100%); box-shadow: -2px 0 6px rgba(0,0,0,.5); animation: pre-bar 6s ease-in-out infinite alternate-reverse; }
.scn-prison-revelation-estella .bar-cross { position:absolute; top:40%; left:16%; right:16%; height:4px; background: linear-gradient(90deg, #4a3a4a 0%, #3a2a3a 50%, #4a3a4a 100%); box-shadow: 0 2px 6px rgba(0,0,0,.5); animation: pre-bar 6s ease-in-out infinite alternate; }
.scn-prison-revelation-estella .figure-a { position:absolute; bottom:20%; left:25%; width:28px; height:60px; background: linear-gradient(180deg, #1a1a2a 0%, #0e0e1a 100%); border-radius:45% 45% 40% 40% / 55% 55% 45% 45%; transform-origin: bottom center; animation: pre-figure-a 5s ease-in-out infinite; }
.scn-prison-revelation-estella .figure-b { position:absolute; bottom:18%; right:28%; width:30px; height:65px; background: linear-gradient(180deg, #2a2030 0%, #1a1420 100%); border-radius:50% 50% 40% 40% / 55% 55% 45% 45%; transform-origin: bottom center; animation: pre-figure-b 7s ease-in-out infinite; }
.scn-prison-revelation-estella .hands { position:absolute; bottom:30%; left:40%; width:40px; height:18px; background: radial-gradient(ellipse at 50% 50%, #503a3a 0%, #2a1a1a 100%); border-radius:40% 40% 20% 20%; box-shadow: 0 0 20px 4px rgba(200,160,100,.15); animation: pre-hands 4s ease-in-out infinite alternate; }
.scn-prison-revelation-estella .glow { position:absolute; bottom:28%; left:38%; width:60px; height:40px; background: radial-gradient(ellipse at 50% 50%, rgba(200,180,120,.12) 0%, transparent 70%); animation: pre-glow 4s ease-in-out infinite alternate; }
.scn-prison-revelation-estella .dust { position:absolute; top:20%; left:30%; width:4px; height:4px; background: rgba(200,180,150,.15); border-radius:50%; filter: blur(2px); animation: pre-dust 12s linear infinite; }
@keyframes pre-bar { 0% { opacity:.7 } 50% { opacity:1 } 100% { opacity:.8 } }
@keyframes pre-figure-a { 0%,100% { transform: translateX(0) rotate(0) } 25% { transform: translateX(2px) rotate(-2deg) } 50% { transform: translateX(0) rotate(1deg) } 75% { transform: translateX(-2px) rotate(-1deg) } }
@keyframes pre-figure-b { 0%,100% { transform: translateX(0) rotate(0) } 33% { transform: translateX(-3px) rotate(2deg) } 66% { transform: translateX(2px) rotate(-1deg) } }
@keyframes pre-hands { 0% { transform: translateY(0) scale(1); opacity:.7 } 50% { transform: translateY(-2px) scale(1.02); opacity:1 } 100% { transform: translateY(0) scale(1); opacity:.8 } }
@keyframes pre-glow { 0% { opacity:.4; transform: scale(1) } 50% { opacity:.8; transform: scale(1.1) } 100% { opacity:.5; transform: scale(.95) } }
@keyframes pre-dust { 0% { transform: translate(0, 0); opacity:0 } 10% { opacity:.15 } 90% { opacity:.1 } 100% { transform: translate(40px, -30px); opacity:0 } }

.scn-pip-illness-alone { background: linear-gradient(180deg, #1a1a2e 0%, #2a2038 30%, #1e1a2a 60%, #12101a 100%), radial-gradient(ellipse at 50% 20%, #3a2a4a 0%, transparent 60%); }
.scn-pip-illness-alone .wall { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #2a203a 0%, #1a1428 50%, #12101e 100%); }
.scn-pip-illness-alone .floor { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #1a1420 0%, #0e0a14 100%); box-shadow: inset 0 20px 30px rgba(0,0,0,.5); }
.scn-pip-illness-alone .window { position:absolute; top:12%; left:50%; width:70px; height:90px; transform:translateX(-50%); background: linear-gradient(180deg, #3a3a5a 0%, #2a2a4a 100%); border:2px solid #1a1a2e; border-radius:4% 4% 2% 2%; box-shadow: inset 0 0 20px rgba(100,100,180,.1); animation: pia-window 14s ease-in-out infinite alternate; }
.scn-pip-illness-alone .chair { position:absolute; bottom:28%; left:35%; width:30px; height:40px; background: linear-gradient(180deg, #2a1a0e 0%, #1a0e06 100%); border-radius:10% 10% 30% 30%; transform:rotate(-3deg); box-shadow: 2px 4px 8px rgba(0,0,0,.5); animation: pia-chair 6s ease-in-out infinite; }
.scn-pip-illness-alone .figure { position:absolute; bottom:24%; right:30%; width:22px; height:50px; background: linear-gradient(180deg, #1a1a2a 0%, #0e0e1a 100%); border-radius:45% 45% 40% 40% / 55% 55% 45% 45%; transform-origin: bottom center; animation: pia-figure 8s ease-in-out infinite; }
.scn-pip-illness-alone .candle { position:absolute; bottom:28%; left:60%; width:6px; height:20px; background: linear-gradient(180deg, #6a5a3a 0%, #3a2a1a 100%); border-radius:10% 10% 20% 20%; transform:rotate(2deg); animation: pia-candle 3s ease-in-out infinite alternate; }
.scn-pip-illness-alone .flame { position:absolute; bottom:46%; left:60%; width:6px; height:10px; transform:translateX(-50%); background: radial-gradient(ellipse at 50% 60%, #ffd060 0%, #b08030 50%, transparent 100%); border-radius:50%; box-shadow: 0 -4px 12px 4px rgba(255,200,80,.4), 0 -8px 24px 8px rgba(255,200,80,.2); animation: pia-flame 2s ease-in-out infinite alternate; }
.scn-pip-illness-alone .shadow { position:absolute; bottom:0; left:30%; width:100px; height:40%; background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.4) 100%); filter: blur(8px); animation: pia-shadow 8s ease-in-out infinite alternate; }
@keyframes pia-window { 0% { opacity:.6; box-shadow: inset 0 0 20px rgba(100,100,180,.05) } 50% { opacity:.9; box-shadow: inset 0 0 30px rgba(100,100,180,.15) } 100% { opacity:.7; box-shadow: inset 0 0 20px rgba(100,100,180,.08) } }
@keyframes pia-chair { 0%,100% { transform: rotate(-3deg) translateX(0) } 25% { transform: rotate(-1deg) translateX(2px) } 50% { transform: rotate(-4deg) translateX(-1px) } 75% { transform: rotate(-2deg) translateX(1px) } }
@keyframes pia-figure { 0% { transform: translateX(0) rotate(0) } 33% { transform: translateX(2px) rotate(-2deg) } 66% { transform: translateX(-2px) rotate(1deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes pia-candle { 0% { opacity:.8; transform: rotate(2deg) scaleY(1) } 50% { opacity:1; transform: rotate(1deg) scaleY(1.02) } 100% { opacity:.85; transform: rotate(3deg) scaleY(.98) } }
@keyframes pia-flame { 0% { transform: translateX(-50%) scaleY(1) translateY(0); opacity:.8 } 50% { transform: translateX(-50%) scaleY(1.15) translateY(-2px); opacity:1 } 100% { transform: translateX(-50%) scaleY(.95) translateY(0); opacity:.85 } }
@keyframes pia-shadow { 0% { opacity:.4 } 50% { opacity:.7 } 100% { opacity:.5 } }

.scn-arrest-debt { background: linear-gradient(180deg, #1a1612 0%, #2a2218 30%, #1e1a12 60%, #12100e 100%), radial-gradient(ellipse at 50% 50%, #2a2218 0%, transparent 70%); }
.scn-arrest-debt .wall { position:absolute; inset:0 0 35% 0; background: linear-gradient(180deg, #2a2418 0%, #1a1610 100%); }
.scn-arrest-debt .table { position:absolute; bottom:20%; left:20%; right:20%; height:20%; background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0e 100%); border-radius:4% 4% 0 0; box-shadow: 0 -6px 12px rgba(0,0,0,.6); animation: ard-table 5s ease-in-out infinite; }
.scn-arrest-debt .ledger { position:absolute; bottom:28%; left:40%; width:30px; height:20px; background: linear-gradient(180deg, #4a3a2a 0%, #3a2a1a 100%); border-radius:4%; transform:rotate(5deg); box-shadow: 2px 2px 6px rgba(0,0,0,.5); animation: ard-ledger 8s ease-in-out infinite alternate; }
.scn-arrest-debt .figure-a { position:absolute; bottom:22%; left:22%; width:30px; height:55px; background: linear-gradient(180deg, #1a1a22 0%, #0e1016 100%); border-radius:45% 45% 40% 40% / 55% 55% 45% 45%; transform-origin: bottom center; animation: ard-figure-a 6s ease-in-out infinite; }
.scn-arrest-debt .figure-b { position:absolute; bottom:20%; right:25%; width:32px; height:58px; background: linear-gradient(180deg, #2a1e14 0%, #1a120c 100%); border-radius:50% 50% 40% 40% / 55% 55% 45% 45%; transform-origin: bottom center; animation: ard-figure-b 7s ease-in-out infinite; }
.scn-arrest-debt .lantern { position:absolute; bottom:38%; left:48%; width:12px; height:16px; background: radial-gradient(ellipse at 50% 50%, #6a5a3a 0%, #3a2a1a 100%); border-radius:20%; box-shadow: 0 0 20px 6px rgba(200,160,80,.3), 0 0 40px 12px rgba(200,160,80,.1); animation: ard-lantern 4s ease-in-out infinite alternate; }
.scn-arrest-debt .shackles { position:absolute; bottom:22%; left:38%; width:16px; height:12px; background: linear-gradient(180deg, #4a3a3a 0%, #2a1a1a 100%); border-radius:30% 30% 20% 20%; box-shadow: 0 2px 6px rgba(0,0,0,.5); animation: ard-shackles 10s ease-in-out infinite; }
.scn-arrest-debt .shadow { position:absolute; bottom:0; left:10%; right:10%; height:30%; background: linear-gradient(180deg, rgba(0,0,0,.3) 0%, rgba(0,0,0,.6) 100%); filter: blur(10px); animation: ard-shadow 6s ease-in-out infinite alternate; }
@keyframes ard-table { 0%,100% { transform: translateY(0) } 50% { transform: translateY(1px) } }
@keyframes ard-ledger { 0% { transform: rotate(5deg) translateX(0) } 50% { transform: rotate(3deg) translateX(2px) } 100% { transform: rotate(6deg) translateX(-1px) } }
@keyframes ard-figure-a { 0%,100% { transform: translateX(0) rotate(0) } 25% { transform: translateX(-2px) rotate(2deg) } 50% { transform: translateX(1px) rotate(-1deg) } 75% { transform: translateX(-1px) rotate(1deg) } }
@keyframes ard-figure-b { 0%,100% { transform: translateX(0) rotate(0) } 33% { transform: translateX(3px) rotate(-2deg) } 66% { transform: translateX(-2px) rotate(1deg) } }
@keyframes ard-lantern { 0% { box-shadow: 0 0 16px 4px rgba(200,160,80,.25), 0 0 32px 8px rgba(200,160,80,.08); opacity:.8 } 50% { box-shadow: 0 0 28px 8px rgba(200,160,80,.4), 0 0 48px 16px rgba(200,160,80,.15); opacity:1 } 100% { box-shadow: 0 0 20px 5px rgba(200,160,80,.3), 0 0 36px 10px rgba(200,160,80,.1); opacity:.85 } }
@keyframes ard-shackles { 0%,100% { transform: translateY(0) rotate(0) } 50% { transform: translateY(2px) rotate(3deg) } }
@keyframes ard-shadow { 0% { opacity:.5; transform: scaleY(1) } 50% { opacity:.8; transform: scaleY(1.05) } 100% { opacity:.6; transform: scaleY(.95) } }

.scn-joe-nursing { background: linear-gradient(180deg, #3a2a1a 0%, #4a3a2a 30%, #3a2a1a 60%, #2a1a0e 100%), radial-gradient(ellipse at 50% 40%, #5a4a3a 0%, transparent 60%); }
.scn-joe-nursing .wall { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #4a3a2a 0%, #3a2a1a 50%, #2a1a12 100%); }
.scn-joe-nursing .floor { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0e 100%); box-shadow: inset 0 12px 20px rgba(0,0,0,.4); }
.scn-joe-nursing .hearth { position:absolute; bottom:22%; left:15%; width:70px; height:50px; background: linear-gradient(180deg, #2a1a0e 0%, #1a0e06 100%); border-radius:30% 30% 10% 10%; box-shadow: inset 0 -8px 16px rgba(0,0,0,.5); }
.scn-joe-nursing .fire { position:absolute; bottom:24%; left:18%; width:30px; height:30px; background: radial-gradient(ellipse at 50% 80%, #ff8030 0%, #ff6020 30%, #b04010 60%, transparent 100%); border-radius:50% 50% 30% 30%; box-shadow: 0 0 30px 8px rgba(255,120,40,.4), 0 0 60px 20px rgba(255,120,40,.15); animation: jnu-fire 2s ease-in-out infinite alternate; }
.scn-joe-nursing .chair-a { position:absolute; bottom:18%; left:42%; width:28px; height:35px; background: linear-gradient(180deg, #5a3a1a 0%, #3a2010 100%); border-radius:8% 8% 25% 25%; transform:rotate(2deg); box-shadow: 2px 4px 8px rgba(0,0,0,.5); animation: jnu-chair-a 7s ease-in-out infinite; }
.scn-joe-nursing .chair-b { position:absolute; bottom:16%; right:20%; width:28px; height:38px; background: linear-gradient(180deg, #4a2a12 0%, #2a180a 100%); border-radius:8% 8% 25% 25%; transform:rotate(-3deg); box-shadow: -2px 4px 8px rgba(0,0,0,.5); animation: jnu-chair-b 9s ease-in-out infinite; }
.scn-joe-nursing .figure-a { position:absolute; bottom:20%; left:45%; width:24px; height:48px; background: linear-gradient(180deg, #2a1a1a 0%, #1a0e0e 100%); border-radius:45% 45% 40% 40% / 55% 55% 45% 45%; transform-origin: bottom center; animation: jnu-figure-a 5s ease-in-out infinite; }
.scn-joe-nursing .figure-b { position:absolute; bottom:18%; right:23%; width:26px; height:50px; background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0e 100%); border-radius:50% 50% 40% 40% / 55% 55% 45% 45%; transform-origin: bottom center; animation: jnu-figure-b 6s ease-in-out infinite; }
.scn-joe-nursing .cat { position:absolute; bottom:15%; left:35%; width:16px; height:8px; background: linear-gradient(180deg, #2a1a0e 0%, #1a0e06 100%); border-radius:40% 40% 20% 20%; transform:rotate(10deg); animation: jnu-cat 4s ease-in-out infinite; }
@keyframes jnu-fire { 0% { transform: scaleY(1) translateY(0); opacity:.8 } 50% { transform: scaleY(1.1) translateY(-2px); opacity:1 } 100% { transform: scaleY(.95) translateY(1px); opacity:.85 } }
@keyframes jnu-chair-a { 0%,100% { transform: rotate(2deg) translateX(0) } 25% { transform: rotate(3deg) translateX(1px) } 50% { transform: rotate(1deg) translateX(-1px) } 75% { transform: rotate(2deg) translateX(1px) } }
@keyframes jnu-chair-b { 0%,100% { transform: rotate(-3deg) translateX(0) } 33% { transform: rotate(-1deg) translateX(2px) } 66% { transform: rotate(-4deg) translateX(-1px) } }
@keyframes jnu-figure-a { 0%,100% { transform: translateX(0) rotate(0) } 25% { transform: translateX(1px) rotate(-1deg) } 50% { transform: translateX(0) rotate(1deg) } 75% { transform: translateX(-1px) rotate(-1deg) } }
@keyframes jnu-figure-b { 0%,100% { transform: translateX(0) rotate(0) } 33% { transform: translateX(-2px) rotate(2deg) } 66% { transform: translateX(1px) rotate(-1deg) } }
@keyframes jnu-cat { 0%,100% { transform: rotate(10deg) translateX(0) } 50% { transform: rotate(5deg) translateX(3px) } }

/* meeting-convict-again */
.scn-meeting-convict-again { background: linear-gradient(180deg, #1a1a3e 0%, #2c2244 30%, #6a4a3a 70%, #d4906a 100%), radial-gradient(ellipse at 50% 100%, #d4906a 0%, transparent 60%); }
.scn-meeting-convict-again .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #1a1a3e 0%, #2c2244 60%, transparent 100%); animation: mca-sky 12s ease-in-out infinite alternate; }
.scn-meeting-convict-again .dawn-horizon { position:absolute; bottom:40%; left:0; right:0; height:15%; background: linear-gradient(180deg, #d4906a 0%, #e0a070 100%); border-radius: 0 0 50% 50% / 0 0 100% 100%; box-shadow: 0 4px 20px #e0a070; }
.scn-meeting-convict-again .trees { position:absolute; bottom:25%; left:0; right:0; height:25%; background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%); border-radius: 30% 70% 0 0 / 60% 80% 0 0; box-shadow: inset 0 6px 12px rgba(0,0,0,.5); animation: mca-trees 20s ease-in-out infinite alternate; }
.scn-meeting-convict-again .fence { position:absolute; bottom:28%; left:30%; width:40%; height:4px; background: #3a2a1a; border-radius: 2px; box-shadow: 0 8px 0 #3a2a1a, 0 16px 0 #3a2a1a; animation: mca-fence 8s ease-in-out infinite; }
.scn-meeting-convict-again .convict { position:absolute; bottom:22%; left:35%; width:28px; height:60px; background: linear-gradient(180deg, #0a0a1a 0%, #1a1a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: mca-convict 4s ease-in-out infinite; }
.scn-meeting-convict-again .boy { position:absolute; bottom:23%; left:45%; width:16px; height:36px; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: mca-boy 3s ease-in-out infinite; }
.scn-meeting-convict-again .bottle { position:absolute; bottom:32%; left:42%; width:8px; height:14px; background: #5a3a2a; border-radius: 20% 20% 30% 30% / 40% 40% 30% 30%; box-shadow: 0 0 8px 2px #8a6a4a; animation: mca-bottle 3.5s ease-in-out infinite; }
.scn-meeting-convict-again .mist { position:absolute; top:50%; left:0; right:0; height:30%; background: linear-gradient(180deg, rgba(200,200,220,0.15) 0%, transparent 100%); filter: blur(6px); animation: mca-mist 30s linear infinite; }
@keyframes mca-sky { 0% { opacity:.9 } 50% { opacity:1 } 100% { opacity:.85 } }
@keyframes mca-trees { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(1px) } }
@keyframes mca-fence { 0% { transform: scaleX(1) } 50% { transform: scaleX(1.02) } 100% { transform: scaleX(0.98) } }
@keyframes mca-convict { 0% { transform: translateX(0) rotate(-2deg) } 25% { transform: translateX(4px) rotate(2deg) } 50% { transform: translateX(8px) rotate(-1deg) } 75% { transform: translateX(12px) rotate(3deg) } 100% { transform: translateX(16px) rotate(0) } }
@keyframes mca-boy { 0% { transform: translateX(0) scale(1) } 50% { transform: translateX(-4px) scale(1.02) } 100% { transform: translateX(0) scale(1) } }
@keyframes mca-bottle { 0% { transform: rotate(-5deg) translateY(0) } 50% { transform: rotate(5deg) translateY(-2px) } 100% { transform: rotate(-3deg) translateY(1px) } }
@keyframes mca-mist { 0% { transform: translateX(-20px) } 100% { transform: translateX(100vw) } }

/* convict-eats */
.scn-convict-eats { background: linear-gradient(180deg, #5a5a5a 0%, #7a7a6a 40%, #8a7a6a 100%), radial-gradient(ellipse at 50% 0%, #8a7a6a 0%, transparent 70%); }
.scn-convict-eats .bg-overcast { position:absolute; inset:0; background: linear-gradient(180deg, #5a5a5a 0%, #7a7a6a 50%, #8a7a6a 100%); }
.scn-convict-eats .table { position:absolute; bottom:20%; left:10%; right:10%; height:20%; background: linear-gradient(180deg, #6a5a3a 0%, #4a3a2a 100%); border-radius: 10% 10% 0 0 / 20% 20% 0 0; box-shadow: 0 -4px 8px rgba(0,0,0,.4); }
.scn-convict-eats .pie { position:absolute; bottom:28%; left:40%; width:40px; height:30px; background: linear-gradient(180deg, #c08040 0%, #a06030 100%); border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%; box-shadow: 0 4px 8px rgba(0,0,0,.3); animation: ce-pie 4s ease-in-out infinite; }
.scn-convict-eats .hand { position:absolute; bottom:26%; left:45%; width:14px; height:30px; background: linear-gradient(180deg, #c09060 0%, #a07050 100%); border-radius: 40% 30% 30% 40% / 60% 50% 50% 60%; transform-origin: bottom center; animation: ce-hand 3.5s ease-in-out infinite; }
.scn-convict-eats .convict-head { position:absolute; bottom:35%; left:30%; width:30px; height:40px; background: linear-gradient(180deg, #c09060 0%, #a07050 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; box-shadow: 0 4px 8px rgba(0,0,0,.3); animation: ce-head 6s ease-in-out infinite alternate; }
.scn-convict-eats .steam { position:absolute; bottom:50%; left:42%; width:12px; height:20px; background: radial-gradient(circle, rgba(255,255,255,0.2) 0%, transparent 100%); filter: blur(3px); animation: ce-steam 5s ease-in-out infinite; }
@keyframes ce-pie { 0% { transform: scale(1) } 50% { transform: scale(1.05) } 100% { transform: scale(0.95) } }
@keyframes ce-hand { 0% { transform: translateY(0) rotate(10deg) } 50% { transform: translateY(-4px) rotate(-5deg) } 100% { transform: translateY(2px) rotate(10deg) } }
@keyframes ce-head { 0% { transform: translateY(0) rotate(0) } 50% { transform: translateY(-3px) rotate(3deg) } 100% { transform: translateY(1px) rotate(-2deg) } }
@keyframes ce-steam { 0% { transform: translateY(0) scale(1) opacity(.6) } 50% { transform: translateY(-10px) scale(1.5) opacity(.2) } 100% { transform: translateY(-20px) scale(2) opacity(0) } }

/* christmas-morning */
.scn-christmas-morning { background: linear-gradient(180deg, #fff0d0 0%, #fff8e0 40%, #f0e0c0 100%), radial-gradient(ellipse at 50% 0%, #fff8e0 0%, transparent 70%); }
.scn-christmas-morning .bg-bright { position:absolute; inset:0; background: linear-gradient(180deg, #fff0d0 0%, #fff8e0 40%, #f0e0c0 100%); }
.scn-christmas-morning .wall { position:absolute; inset:5% 5% 10% 5%; background: linear-gradient(180deg, #f0e0c0 0%, #e8d0a0 100%); border-radius: 10px; box-shadow: inset 0 0 30px rgba(0,0,0,.05); }
.scn-christmas-morning .window { position:absolute; top:10%; left:15%; width:30%; height:40%; background: linear-gradient(180deg, #c0d8ff 0%, #a0c0ff 100%); border: 4px solid #a08060; border-radius: 10px; box-shadow: 0 0 40px rgba(160,200,255,0.3); }
.scn-christmas-morning .tree { position:absolute; bottom:15%; left:50%; width:80px; height:100px; background: linear-gradient(180deg, #4a8a3a 0%, #2a6a1a 100%); clip-path: polygon(50% 0%, 0% 70%, 20% 70%, 0% 100%, 100% 100%, 80% 70%, 100% 70%); animation: cm-tree 8s ease-in-out infinite; }
.scn-christmas-morning .ornaments { position:absolute; bottom:40%; left:48%; width:8px; height:8px; background: radial-gradient(circle, #ff6060 0%, #c04040 100%); border-radius: 50%; box-shadow: 12px 12px 0 #ffd060, -8px 18px 0 #60c0ff, 0 24px 0 #ff80a0; animation: cm-ornaments 6s ease-in-out infinite alternate; }
.scn-christmas-morning .presents { position:absolute; bottom:10%; left:30%; width:20px; height:15px; background: linear-gradient(180deg, #c08060 0%, #a06040 100%); border-radius: 10% 10% 20% 20% / 30% 30% 20% 20%; box-shadow: 30px 0 0 #6080c0, 15px 8px 0 #c0a060; }
.scn-christmas-morning .candle { position:absolute; bottom:20%; left:60%; width:6px; height:20px; background: linear-gradient(180deg, #f0e0a0 0%, #d0c080 100%); border-radius: 20% 20% 10% 10% / 30% 30% 10% 10%; box-shadow: 0 -4px 8px #ffd060, 0 -8px 16px rgba(255,208,96,0.4); animation: cm-candle 3s ease-in-out infinite alternate; }
.scn-christmas-morning .snow-outside { position:absolute; top:10%; left:15%; width:30%; height:40%; background: radial-gradient(circle at 20% 30%, rgba(255,255,255,0.4) 0%, transparent 60%), radial-gradient(circle at 80% 60%, rgba(255,255,255,0.3) 0%, transparent 50%); filter: blur(4px); animation: cm-snow 20s linear infinite; }
@keyframes cm-tree { 0% { transform: scale(1) rotate(0) } 50% { transform: scale(1.02) rotate(2deg) } 100% { transform: scale(0.98) rotate(-1deg) } }
@keyframes cm-ornaments { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.85 } }
@keyframes cm-candle { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.05) } 100% { transform: scaleY(0.95) } }
@keyframes cm-snow { 0% { transform: translateY(0) } 100% { transform: translateY(100px) } }

/* church-guilt */
.scn-church-guilt { background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 40%, #3a2a2a 100%), radial-gradient(ellipse at 50% 0%, #4a3a3a 0%, transparent 80%); }
.scn-church-guilt .bg-dim { position:absolute; inset:0; background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 50%, #3a2a2a 100%); }
.scn-church-guilt .pew { position:absolute; bottom:20%; left:10%; right:10%; height:30%; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a1a 100%); border-radius: 20% 20% 0 0 / 40% 40% 0 0; box-shadow: inset 0 8px 12px rgba(0,0,0,.5); }
.scn-church-guilt .altar { position:absolute; bottom:30%; left:35%; width:30%; height:20%; background: linear-gradient(180deg, #6a4a3a 0%, #4a2a1a 100%); border-radius: 10% 10% 0 0 / 20% 20% 0 0; box-shadow: 0 0 20px rgba(0,0,0,.6); }
.scn-church-guilt .stained-glass { position:absolute; top:10%; left:25%; width:50%; height:40%; background: linear-gradient(135deg, #3a5a7a 0%, #4a7a9a 40%, #6a8aaa 100%), radial-gradient(circle at 30% 40%, #a0c0e0 0%, transparent 60%); border-radius: 30% 30% 10% 10% / 40% 40% 10% 10%; filter: blur(2px); animation: cg-stained 15s ease-in-out infinite; }
.scn-church-guilt .figure-kneeling { position:absolute; bottom:25%; left:45%; width:20px; height:50px; background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: cg-figure 4s ease-in-out infinite; }
.scn-church-guilt .candlelight { position:absolute; bottom:38%; left:42%; width:6px; height:20px; background: linear-gradient(180deg, #d0a050 0%, #b08030 100%); border-radius: 20% 20% 10% 10% / 30% 30% 10% 10%; box-shadow: 0 -4px 12px #d0a050, 0 -8px 24px rgba(208,160,80,0.4); animation: cg-candle 3s ease-in-out infinite alternate; }
.scn-church-guilt .shadow { position:absolute; bottom:0; left:0; right:0; height:50%; background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,0.6) 100%); animation: cg-shadow 10s ease-in-out infinite alternate; }
@keyframes cg-stained { 0% { opacity:.7 } 50% { opacity:1 } 100% { opacity:.8 } }
@keyframes cg-figure { 0% { transform: translateY(0) rotate(0) } 50% { transform: translateY(-2px) rotate(2deg) } 100% { transform: translateY(1px) rotate(-1deg) } }
@keyframes cg-candle { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.08) } 100% { transform: scaleY(0.92) } }
@keyframes cg-shadow { 0% { opacity:.5 } 50% { opacity:.7 } 100% { opacity:.6 } }

/* ---- scene: walking-home-reflective (wr) ---- */
.scn-walking-home-reflective {
  background: linear-gradient(180deg, #2a2a4e 0%, #1a1a3e 30%, #3a2a3e 60%, #4a3a2e 100%),
              radial-gradient(ellipse at 50% 0%, #4a4a6e 0%, transparent 60%);
}
.scn-walking-home-reflective .sky-dusk {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #3a3a5e 0%, #2a2a4e 50%, #1a1a3e 100%);
  animation: wr-sky 10s ease-in-out infinite alternate;
}
.scn-walking-home-reflective .ground-dark {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #2a2a2a 0%, #1a1a1a 100%);
  border-radius: 60% 40% 0 0 / 40% 30% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,.6);
  animation: wr-ground 12s ease-in-out infinite alternate;
}
.scn-walking-home-reflective .road {
  position: absolute; bottom: 20%; left: 30%; width: 40%; height: 8%;
  background: linear-gradient(180deg, #3a3a2a 0%, #2a2a1a 100%);
  border-radius: 10% 10% 80% 80%;
  transform-origin: bottom center;
  animation: wr-road 8s ease-in-out infinite alternate;
}
.scn-walking-home-reflective .figure-silhouette {
  position: absolute; bottom: 22%; left: 48%; width: 12px; height: 30px;
  background: linear-gradient(180deg, #0a0a0a 0%, #1a1a1a 40%, #0a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 30% 30%;
  transform-origin: bottom center;
  animation: wr-walk 4s ease-in-out infinite;
}
.scn-walking-home-reflective .trees-left {
  position: absolute; bottom: 35%; left: 5%; width: 40%; height: 30%;
  background: radial-gradient(ellipse at 50% 100%, #1a1a1a 0%, transparent 70%);
  filter: blur(4px);
  animation: wr-trees 15s ease-in-out infinite alternate;
}
.scn-walking-home-reflective .trees-right {
  position: absolute; bottom: 35%; right: 5%; width: 40%; height: 30%;
  background: radial-gradient(ellipse at 50% 100%, #1a1a1a 0%, transparent 70%);
  filter: blur(4px);
  animation: wr-trees 18s ease-in-out infinite alternate-reverse;
}
.scn-walking-home-reflective .stars {
  position: absolute; top: 5%; left: 10%; width: 2px; height: 2px;
  background: #fff;
  border-radius: 50%;
  box-shadow: 20px 15px 0 #fff, 40px 50px 0 #fff, 60px 10px 0 #fff, 80px 30px 0 #fff, 100px 45px 0 #fff, 120px 5px 0 #fff, 140px 25px 0 #fff, 160px 55px 0 #fff;
  animation: wr-stars 3s ease-in-out infinite alternate;
}
@keyframes wr-sky {
  0% { opacity: 0.7; transform: scaleY(1); }
  50% { opacity: 1; transform: scaleY(1.02); }
  100% { opacity: 0.8; transform: scaleY(1); }
}
@keyframes wr-ground {
  0% { transform: translateY(0) scaleY(1); }
  50% { transform: translateY(-3px) scaleY(1.01); }
  100% { transform: translateY(0) scaleY(1); }
}
@keyframes wr-road {
  0% { transform: scaleX(1) translateX(0); }
  50% { transform: scaleX(1.05) translateX(-2px); }
  100% { transform: scaleX(1) translateX(0); }
}
@keyframes wr-walk {
  0% { transform: translateX(0) translateY(0) rotate(-2deg); }
  25% { transform: translateX(8px) translateY(-2px) rotate(2deg); }
  50% { transform: translateX(16px) translateY(0) rotate(-1deg); }
  75% { transform: translateX(24px) translateY(-2px) rotate(1deg); }
  100% { transform: translateX(32px) translateY(0) rotate(0); }
}
@keyframes wr-trees {
  0% { opacity: 0.5; transform: scale(1); }
  50% { opacity: 0.8; transform: scale(1.02); }
  100% { opacity: 0.6; transform: scale(1); }
}
@keyframes wr-stars {
  0% { opacity: 0.3; }
  50% { opacity: 0.9; }
  100% { opacity: 0.4; }
}

/* ---- scene: home-questioning (hq) ---- */
.scn-home-questioning {
  background: linear-gradient(180deg, #f0e8d8 0%, #e0d0b0 40%, #c8b890 100%),
              radial-gradient(ellipse at 50% 30%, #fff8e8 0%, transparent 70%);
}
.scn-home-questioning .wall-bright {
  position: absolute; inset: 0 0 60% 0;
  background: linear-gradient(180deg, #f8f0e0 0%, #e8d8c0 100%);
  box-shadow: inset 0 -4px 10px rgba(0,0,0,.1);
  animation: hq-wall 12s ease-in-out infinite alternate;
}
.scn-home-questioning .floor-dark {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 20% 20% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,.4);
}
.scn-home-questioning .sister-figure {
  position: absolute; bottom: 30%; left: 20%; width: 20px; height: 50px;
  background: linear-gradient(180deg, #8a6a5a 0%, #5a3a2a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: hq-sister 4s ease-in-out infinite alternate;
}
.scn-home-questioning .pip-figure {
  position: absolute; bottom: 30%; left: 55%; width: 14px; height: 36px;
  background: linear-gradient(180deg, #6a5a4a 0%, #3a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: hq-pip 2s ease-in-out infinite alternate;
}
.scn-home-questioning .chair {
  position: absolute; bottom: 28%; left: 30%; width: 16px; height: 24px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 10% 10% 20% 20%;
  box-shadow: 0 4px 6px rgba(0,0,0,.5);
  animation: hq-chair 6s ease-in-out infinite alternate;
}
.scn-home-questioning .table {
  position: absolute; bottom: 35%; left: 40%; width: 30px; height: 6px;
  background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%);
  border-radius: 10%;
  box-shadow: 0 2px 4px rgba(0,0,0,.3);
  transform-origin: center;
  animation: hq-table 8s ease-in-out infinite alternate;
}
.scn-home-questioning .lamp-glare {
  position: absolute; top: 8%; left: 45%; width: 30px; height: 30px;
  background: radial-gradient(circle, #fff0c0 0%, #e0d0a0 40%, transparent 70%);
  border-radius: 50%;
  filter: blur(8px);
  animation: hq-lamp 3s ease-in-out infinite alternate;
}
@keyframes hq-wall {
  0% { opacity: 0.8; }
  50% { opacity: 1; }
  100% { opacity: 0.9; }
}
@keyframes hq-sister {
  0% { transform: translateX(0) rotate(0); }
  50% { transform: translateX(-3px) rotate(3deg) scaleY(1.02); }
  100% { transform: translateX(0) rotate(0); }
}
@keyframes hq-pip {
  0% { transform: translateX(0) translateY(0) rotate(0); }
  50% { transform: translateX(2px) translateY(-2px) rotate(-3deg); }
  100% { transform: translateX(0) translateY(0) rotate(0); }
}
@keyframes hq-chair {
  0% { transform: translateY(0) scaleX(1); }
  50% { transform: translateY(-2px) scaleX(1.02); }
  100% { transform: translateY(0) scaleX(1); }
}
@keyframes hq-table {
  0% { transform: scaleX(1) translateX(0); }
  50% { transform: scaleX(1.03) translateX(-1px); }
  100% { transform: scaleX(1) translateX(0); }
}
@keyframes hq-lamp {
  0% { opacity: 0.6; transform: scale(0.9); }
  50% { opacity: 1; transform: scale(1.1); }
  100% { opacity: 0.7; transform: scale(0.95); }
}

/* ---- scene: lies-about-miss-havisham (lam) ---- */
.scn-lies-about-miss-havisham {
  background: linear-gradient(180deg, #e8dcc8 0%, #d0c0a0 50%, #b8a080 100%),
              radial-gradient(ellipse at 60% 40%, #fff0d0 0%, transparent 60%);
}
.scn-lies-about-miss-havisham .interior-bg {
  position: absolute; inset: 0 0 55% 0;
  background: linear-gradient(180deg, #f0e8d0 0%, #d8c8b0 100%);
  box-shadow: inset 0 -6px 12px rgba(0,0,0,.1);
  animation: lam-bg 10s ease-in-out infinite alternate;
}
.scn-lies-about-miss-havisham .pumblechook-figure {
  position: absolute; bottom: 25%; left: 15%; width: 22px; height: 55px;
  background: linear-gradient(180deg, #8a7a6a 0%, #5a4a3a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: lam-pumble 5s ease-in-out infinite alternate;
}
.scn-lies-about-miss-havisham .mrs-joe-figure {
  position: absolute; bottom: 25%; left: 65%; width: 18px; height: 48px;
  background: linear-gradient(180deg, #9a7a6a 0%, #6a4a3a 100%);
  border-radius: 45% 45% 35% 35% / 65% 65% 35% 35%;
  transform-origin: bottom center;
  animation: lam-joe 4s ease-in-out infinite alternate-reverse;
}
.scn-lies-about-miss-havisham .pip-small {
  position: absolute; bottom: 25%; left: 42%; width: 12px; height: 30px;
  background: linear-gradient(180deg, #5a4a3a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: lam-pip 2s ease-in-out infinite alternate;
}
.scn-lies-about-miss-havisham .table-prop {
  position: absolute; bottom: 30%; left: 38%; width: 35px; height: 8px;
  background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%);
  border-radius: 10%;
  box-shadow: 0 3px 5px rgba(0,0,0,.3);
  transform-origin: center;
  animation: lam-table 7s ease-in-out infinite alternate;
}
.scn-lies-about-miss-havisham .chair-back {
  position: absolute; bottom: 30%; left: 58%; width: 14px; height: 20px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 0 4px 6px rgba(0,0,0,.4);
  animation: lam-chair 6s ease-in-out infinite alternate-reverse;
}
.scn-lies-about-miss-havisham .sharp-shadow {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,0.3) 100%);
  filter: blur(2px);
  animation: lam-shadow 8s ease-in-out infinite alternate;
}
@keyframes lam-bg {
  0% { opacity: 0.8; }
  50% { opacity: 1; }
  100% { opacity: 0.9; }
}
@keyframes lam-pumble {
  0% { transform: translateX(0) rotate(0); }
  50% { transform: translateX(-2px) rotate(2deg) scaleY(1.02); }
  100% { transform: translateX(0) rotate(0); }
}
@keyframes lam-joe {
  0% { transform: translateX(0) rotate(0); }
  50% { transform: translateX(3px) rotate(-3deg) scaleY(1.03); }
  100% { transform: translateX(0) rotate(0); }
}
@keyframes lam-pip {
  0% { transform: translateY(0) rotate(0); }
  50% { transform: translateY(-3px) rotate(4deg); }
  100% { transform: translateY(0) rotate(0); }
}
@keyframes lam-table {
  0% { transform: scaleX(1) translateX(0); }
  50% { transform: scaleX(1.04) translateX(-1px); }
  100% { transform: scaleX(1) translateX(0); }
}
@keyframes lam-chair {
  0% { transform: translateY(0) scaleY(1); }
  50% { transform: translateY(-2px) scaleY(1.02); }
  100% { transform: translateY(0) scaleY(1); }
}
@keyframes lam-shadow {
  0% { opacity: 0.3; }
  50% { opacity: 0.5; }
  100% { opacity: 0.4; }
}

/* ---- scene: confessing-to-joe (ctj) ---- */
.scn-confessing-to-joe {
  background: linear-gradient(180deg, #4a2a1a 0%, #6a3a1a 30%, #8a4a2a 60%, #3a1a0a 100%),
              radial-gradient(ellipse at 30% 60%, #c86a2a 0%, transparent 70%);
}
.scn-confessing-to-joe .forge-walls {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%);
  box-shadow: inset 0 -8px 20px rgba(0,0,0,.6);
  animation: ctj-walls 12s ease-in-out infinite alternate;
}
.scn-confessing-to-joe .anvil {
  position: absolute; bottom: 35%; left: 25%; width: 20px; height: 12px;
  background: linear-gradient(180deg, #5a4a3a 0%, #2a1a0a 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 0 4px 8px rgba(0,0,0,.5);
  transform-origin: bottom center;
  animation: ctj-anvil 9s ease-in-out infinite alternate;
}
.scn-confessing-to-joe .forge-fire {
  position: absolute; bottom: 40%; left: 45%; width: 24px; height: 30px;
  background: radial-gradient(circle at 50% 50%, #ff8c40 0%, #c84a1a 40%, #3a1a0a 70%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  filter: blur(3px);
  animation: ctj-fire 1s ease-in-out infinite alternate;
}
.scn-confessing-to-joe .joe-figure {
  position: absolute; bottom: 30%; left: 35%; width: 18px; height: 50px;
  background: linear-gradient(180deg, #5a4a3a 0%, #2a1a0a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ctj-joe 5s ease-in-out infinite alternate;
}
.scn-confessing-to-joe .pip-crouch {
  position: absolute; bottom: 30%; left: 55%; width: 12px; height: 34px;
  background: linear-gradient(180deg, #4a3a2a 0%, #1a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ctj-pip 3s ease-in-out infinite alternate-reverse;
}
.scn-confessing-to-joe .fire-glow {
  position: absolute; bottom: 45%; left: 42%; width: 40px; height: 40px;
  background: radial-gradient(circle, rgba(255,160,80,0.4) 0%, rgba(200,80,30,0.2) 50%, transparent 100%);
  border-radius: 50%;
  filter: blur(10px);
  animation: ctj-glow 2s ease-in-out infinite alternate;
}
.scn-confessing-to-joe .sparks {
  position: absolute; bottom: 60%; left: 46%; width: 3px; height: 3px;
  background: #ffa040;
  border-radius: 50%;
  box-shadow: 8px -5px 0 #ffa040, -5px -10px 0 #ffa040, 12px -8px 0 #c86020, -8px -12px 0 #c86020;
  animation: ctj-sparks 0.8s ease-in-out infinite alternate;
}
@keyframes ctj-walls {
  0% { opacity: 0.7; }
  50% { opacity: 0.9; }
  100% { opacity: 0.8; }
}
@keyframes ctj-anvil {
  0% { transform: translateY(0) scaleY(1); }
  50% { transform: translateY(-2px) scaleY(1.02); }
  100% { transform: translateY(0) scaleY(1); }
}
@keyframes ctj-fire {
  0% { transform: scale(1) translateY(0); opacity: 0.8; }
  50% { transform: scale(1.15) translateY(-3px); opacity: 1; }
  100% { transform: scale(1) translateY(0); opacity: 0.9; }
}
@keyframes ctj-joe {
  0% { transform: translateX(0) rotate(0); }
  50% { transform: translateX(-2px) rotate(-2deg) scaleY(1.02); }
  100% { transform: translateX(0) rotate(0); }
}
@keyframes ctj-pip {
  0% { transform: translateX(0) rotate(0); }
  50% { transform: translateX(2px) rotate(2deg) scaleY(0.98); }
  100% { transform: translateX(0) rotate(0); }
}
@keyframes ctj-glow {
  0% { opacity: 0.4; transform: scale(0.9); }
  50% { opacity: 0.8; transform: scale(1.1); }
  100% { opacity: 0.5; transform: scale(0.95); }
}
@keyframes ctj-sparks {
  0% { transform: translateY(0) scale(1); opacity: 0.6; }
  100% { transform: translateY(-12px) scale(0.5); opacity: 0; }
}

/* churchyard-convict */
.scn-churchyard-convict {
  background:
    radial-gradient(ellipse at 50% 100%, #2a2a3e 0%, transparent 70%),
    linear-gradient(180deg, #4a4a5e 0%, #2c2c40 50%, #1a1a2e 100%);
}
.scn-churchyard-convict .sky { position:absolute; inset:0; background: linear-gradient(180deg, #505060 0%, #3a3a4e 100%); opacity:.6; }
.scn-churchyard-convict .mist-bg { position:absolute; inset:10% 0 20% 0; background: radial-gradient(ellipse at 30% 50%, rgba(180,180,200,.3) 0%, transparent 60%); filter:blur(10px); animation: c1-mistbg 25s ease-in-out infinite alternate; }
.scn-churchyard-convict .spire { position:absolute; bottom:40%; left:10%; width:30px; height:110px; background: linear-gradient(180deg, #1a1a2a 0%, #0e0e1a 100%); border-radius: 0 0 8px 8px; transform-origin: bottom center; animation: c1-spire 6s ease-in-out infinite; }
.scn-churchyard-convict .spire::before { content:''; position:absolute; bottom:100%; left:50%; transform:translateX(-50%); width:0; height:0; border-left:6px solid transparent; border-right:6px solid transparent; border-bottom:30px solid #1a1a2a; }
.scn-churchyard-convict .grave-left { position:absolute; bottom:28%; left:20%; width:50px; height:18px; background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 100%); border-radius: 20% 20% 4% 4%; box-shadow: 0 4px 8px rgba(0,0,0,.5); transform: rotate(-3deg); }
.scn-churchyard-convict .grave-right { position:absolute; bottom:25%; right:20%; width:55px; height:22px; background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 100%); border-radius: 20% 20% 4% 4%; box-shadow: 0 4px 8px rgba(0,0,0,.5); transform: rotate(4deg); }
.scn-churchyard-convict .convict-up { position:absolute; bottom:25%; left:50%; width:24px; height:50px; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: c1-rise 8s ease-in-out infinite; }
.scn-churchyard-convict .mist-fg { position:absolute; bottom:20%; left:0; right:0; height:30%; background: radial-gradient(ellipse at 50% 100%, rgba(200,200,220,.15) 0%, transparent 70%); filter:blur(12px); animation: c1-mistfg 30s linear infinite; }
.scn-churchyard-convict .ground { position:absolute; bottom:0; left:0; right:0; height:25%; background: linear-gradient(180deg, #2e2e3a 0%, #1e1e2a 100%); border-radius: 60% 40% 0 0 / 30% 20% 0 0; }
@keyframes c1-mistbg { 0% { opacity:.4; transform: translateX(0); } 50% { opacity:.7; transform: translateX(-20px); } 100% { opacity:.5; transform: translateX(10px); } }
@keyframes c1-spire { 0%,100% { transform: rotate(0deg); } 50% { transform: rotate(2deg); } }
@keyframes c1-rise { 0% { transform: translateY(20px) scaleY(.6); opacity:.7; } 30% { transform: translateY(0) scaleY(1); opacity:1; } 70% { transform: translateY(0) scaleY(1); opacity:1; } 100% { transform: translateY(20px) scaleY(.6); opacity:.7; } }
@keyframes c1-mistfg { 0% { transform: translateX(-20px) scaleX(.95); } 50% { transform: translateX(0) scaleX(1); } 100% { transform: translateX(30px) scaleX(.9); } }

/* convict-threatens */
.scn-convict-threatens {
  background:
    radial-gradient(ellipse at 50% 60%, #1a1a2e 0%, #0e0e1a 60%),
    linear-gradient(180deg, #0a0a12 0%, #141420 40%, #202030 100%);
}
.scn-convict-threatens .bg-deep { position:absolute; inset:0; background: radial-gradient(circle at 30% 50%, rgba(50,50,70,.2) 0%, transparent 60%); animation: c2-bgpulse 12s ease-in-out infinite alternate; }
.scn-convict-threatens .convict-large { position:absolute; bottom:20%; left:0; width:70%; height:80%; background: linear-gradient(180deg, #1a1a2e 0%, #0e0e1a 100%); border-radius: 30% 20% 10% 20% / 50% 40% 30% 40%; transform-origin: bottom left; animation: c2-lean 5s ease-in-out infinite; }
.scn-convict-threatens .pip-small { position:absolute; bottom:22%; right:8%; width:14px; height:28px; background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: c2-shrink 4s ease-in-out infinite; }
.scn-convict-threatens .hand-reach { position:absolute; bottom:40%; left:45%; width:20px; height:14px; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 40% 30% 20% 20%; transform: rotate(20deg); transform-origin: bottom left; animation: c2-reach 3s ease-in-out infinite alternate; }
.scn-convict-threatens .breath { position:absolute; top:35%; left:50%; width:8px; height:8px; background: radial-gradient(circle, rgba(200,200,220,.15) 0%, transparent 60%); border-radius:50%; filter:blur(4px); animation: c2-breathe 3s ease-in-out infinite; }
.scn-convict-threatens .chain-link { position:absolute; bottom:35%; left:20%; width:30px; height:6px; background: linear-gradient(90deg, #3a3a4a 0%, #2a2a3a 50%, #3a3a4a 100%); border-radius: 20%; filter:blur(1px); animation: c2-chain 4s ease-in-out infinite; }
@keyframes c2-bgpulse { 0% { opacity:.3; } 50% { opacity:.6; } 100% { opacity:.4; } }
@keyframes c2-lean { 0% { transform: translateX(0) rotate(0deg); } 30% { transform: translateX(-10px) rotate(3deg); } 60% { transform: translateX(-5px) rotate(1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes c2-shrink { 0% { transform: scale(1) translateY(0); } 50% { transform: scale(.85) translateY(2px); } 100% { transform: scale(1) translateY(0); } }
@keyframes c2-reach { 0% { transform: rotate(15deg) scaleX(1); } 50% { transform: rotate(25deg) scaleX(.9); } 100% { transform: rotate(15deg) scaleX(1); } }
@keyframes c2-breathe { 0%,100% { opacity:.2; transform: scale(1); } 50% { opacity:.6; transform: scale(1.5); } }
@keyframes c2-chain { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(-5px) rotate(5deg); } 100% { transform: translateX(0) rotate(0deg); } }

/* convict-fear */
.scn-convict-fear {
  background:
    radial-gradient(ellipse at 50% 80%, #2e2e42 0%, #1a1a2a 70%),
    linear-gradient(180deg, #3a3a52 0%, #222234 50%, #12121e 100%);
}
.scn-convict-fear .sky-overcast { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #3e3e56 0%, #28283a 100%); animation: c3-skyshiver 8s ease-in-out infinite alternate; }
.scn-convict-fear .ground-path { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, #3a3a4e 0%, #2a2a3a 100%); border-radius: 30% 70% 0 0 / 40% 60% 0 0; }
.scn-convict-fear .tree-left { position:absolute; bottom:35%; left:5%; width:20px; height:90px; background: linear-gradient(180deg, #1e1e2e 0%, #0e0e1a 100%); border-radius: 10% 10% 30% 30% / 10% 10% 20% 20%; transform-origin: bottom center; animation: c3-tree 12s ease-in-out infinite; }
.scn-convict-fear .tree-right { position:absolute; bottom:38%; right:8%; width:15px; height:70px; background: linear-gradient(180deg, #1e1e2e 0%, #0e0e1a 100%); border-radius: 10% 10% 30% 30% / 10% 10% 20% 20%; transform-origin: bottom center; animation: c3-tree 15s ease-in-out infinite reverse; }
.scn-convict-fear .tombstone { position:absolute; bottom:30%; left:35%; width:40px; height:16px; background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 100%); border-radius: 15% 15% 5% 5%; box-shadow: 0 4px 10px rgba(0,0,0,.5); transform: rotate(-5deg); }
.scn-convict-fear .convict-turn { position:absolute; bottom:30%; left:40%; width:22px; height:48px; background: linear-gradient(180deg, #1a1a2e 0%, #0a0a1a 100%); border-radius: 30% 30% 40% 40% / 50% 50% 30% 30%; transform-origin: bottom center; animation: c3-turn 7s ease-in-out infinite; }
.scn-convict-fear .fog-drift { position:absolute; bottom:20%; left:-10%; right:-10%; height:30%; background: radial-gradient(ellipse at 50% 100%, rgba(200,200,220,.12) 0%, transparent 70%); filter:blur(8px); animation: c3-fog 30s linear infinite alternate; }
@keyframes c3-skyshiver { 0% { opacity:.6; } 50% { opacity:.9; } 100% { opacity:.7; } }
@keyframes c3-tree { 0% { transform: rotate(0deg); } 50% { transform: rotate(3deg); } 100% { transform: rotate(-2deg); } }
@keyframes c3-turn { 0% { transform: rotate(-15deg) translateX(0); } 30% { transform: rotate(15deg) translateX(12px); } 60% { transform: rotate(10deg) translateX(8px); } 100% { transform: rotate(-15deg) translateX(0); } }
@keyframes c3-fog { 0% { transform: translateX(-20px) scaleX(.95); } 50% { transform: translateX(0) scaleX(1); } 100% { transform: translateX(20px) scaleX(.9); } }

/* convict-commands */
.scn-convict-commands {
  background:
    radial-gradient(ellipse at 30% 60%, #2a2a3e 0%, #141428 70%),
    linear-gradient(180deg, #1c1c2a 0%, #0e0e1a 100%);
}
.scn-convict-commands .sky-dusk { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #2e2e42 0%, #1a1a2e 100%); animation: c4-skydim 10s ease-in-out infinite alternate; }
.scn-convict-commands .ground-mud { position:absolute; bottom:0; left:0; right:0; height:50%; background: linear-gradient(180deg, #2e2e3a 0%, #1e1e2a 100%); border-radius: 20% 80% 0 0 / 30% 70% 0 0; }
.scn-convict-commands .convict-stand { position:absolute; bottom:30%; left:35%; width:28px; height:60px; background: linear-gradient(180deg, #1a1a2e 0%, #0a0a1a 100%); border-radius: 30% 30% 40% 40% / 50% 50% 30% 30%; transform-origin: bottom center; animation: c4-stand 4s ease-in-out infinite; }
.scn-convict-commands .chain-leg { position:absolute; bottom:25%; left:32%; width:40px; height:6px; background: linear-gradient(90deg, #3a3a4a 0%, #2a2a3a 50%, #3a3a4a 100%); border-radius: 20%; transform: rotate(-15deg); animation: c4-chain 5s ease-in-out infinite; }
.scn-convict-commands .file-shape { position:absolute; bottom:40%; left:55%; width:6px; height:18px; background: linear-gradient(180deg, #4a4a5a 0%, #2e2e3e 100%); border-radius: 20% 20% 40% 40%; transform: rotate(20deg); animation: c4-file 6s ease-in-out infinite alternate; }
.scn-convict-commands .anvil-shape { position:absolute; bottom:20%; right:15%; width:24px; height:14px; background: linear-gradient(180deg, #3e3e4e 0%, #2a2a3a 100%); border-radius: 10% 10% 20% 20%; box-shadow: 0 4px 8px rgba(0,0,0,.5); transform: rotate(2deg); }
.scn-convict-commands .spark { position:absolute; bottom:35%; left:50%; width:4px; height:4px; background: radial-gradient(circle, #b8865a 0%, transparent 70%); border-radius:50%; box-shadow: 0 0 6px 2px #b8865a; animation: c4-spark 2s ease-in-out infinite; }
@keyframes c4-skydim { 0% { opacity:.6; } 50% { opacity:.9; } 100% { opacity:.7; } }
@keyframes c4-stand { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-2px) rotate(1deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes c4-chain { 0% { transform: rotate(-15deg) translateX(0); } 50% { transform: rotate(-10deg) translateX(4px); } 100% { transform: rotate(-15deg) translateX(0); } }
@keyframes c4-file { 0% { transform: rotate(15deg) scaleY(1); } 50% { transform: rotate(25deg) scaleY(.9); } 100% { transform: rotate(15deg) scaleY(1); } }
@keyframes c4-spark { 0%,100% { opacity:.2; transform: scale(.5); } 50% { opacity:1; transform: scale(1.2); } }

/* Scenes */

.scn-walworth-tea-evening {
  background:
    linear-gradient(180deg, #2a1e12 0%, #4a2e1a 40%, #6a3a1a 70%, #2a120a 100%);
}

.scn-walworth-tea-evening .wte-bg {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at 50% 40%, #8a5a2a 0%, transparent 60%),
              linear-gradient(180deg, #1a120a 0%, #3a2a1a 50%, #2a1a10 100%);
  animation: wte-bg-pulse 8s ease-in-out infinite alternate;
}
.scn-walworth-tea-evening .wte-fire {
  position: absolute; bottom: 15%; left: 20%; width: 60px; height: 80px;
  background: radial-gradient(circle at 50% 70%, #ff8c40 0%, #cc5000 40%, #8a2a00 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  box-shadow: 0 0 40px 10px #cc5000, 0 0 80px 20px #8a2a00;
  animation: wte-fire-flicker 3s ease-in-out infinite;
}
.scn-walworth-tea-evening .wte-table {
  position: absolute; bottom: 15%; left: 30%; width: 200px; height: 50px;
  background: linear-gradient(180deg, #5a3a1a 0%, #3a2010 100%);
  border-radius: 4px;
  box-shadow: 0 8px 12px rgba(0,0,0,0.5);
  transform: perspective(200px) rotateX(10deg);
}
.scn-walworth-tea-evening .wte-toast {
  position: absolute; bottom: 38%; left: 40%; width: 40px; height: 30px;
  background: linear-gradient(0deg, #8a5a2a 0%, #b08040 100%);
  border-radius: 20% 20% 40% 40%;
  transform: rotate(-5deg);
  animation: wte-toast-drip 6s ease-in-out infinite;
}
.scn-walworth-tea-evening .wte-cups {
  position: absolute; bottom: 36%; left: 50%; width: 20px; height: 24px;
  background: linear-gradient(180deg, #b0a080 0%, #806060 100%);
  border-radius: 0 0 30% 30%;
  box-shadow: 4px 0 6px #4a3030;
  animation: wte-cup-shimmer 4s ease-in-out infinite alternate;
}
.scn-walworth-tea-evening .wte-aged {
  position: absolute; bottom: 20%; left: 55%; width: 50px; height: 70px;
  background: linear-gradient(135deg, #3a2a1a 0%, #1a1208 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: wte-aged-sit 6s ease-in-out infinite;
}
.scn-walworth-tea-evening .wte-skiffins {
  position: absolute; bottom: 20%; left: 40%; width: 40px; height: 60px;
  background: linear-gradient(135deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 45% 45% 35% 35% / 55% 55% 35% 35%;
  transform-origin: bottom center;
  animation: wte-skiffins-bow 5s ease-in-out infinite;
}
.scn-walworth-tea-evening .wte-steam {
  position: absolute; bottom: 60%; left: 45%; width: 30px; height: 40px;
  background: radial-gradient(ellipse, rgba(200,180,150,0.3) 0%, transparent 100%);
  filter: blur(6px);
  animation: wte-steam-rise 4s ease-in-out infinite;
}

@keyframes wte-bg-pulse {
  0% { opacity: 0.7; }
  50% { opacity: 0.9; }
  100% { opacity: 0.7; }
}
@keyframes wte-fire-flicker {
  0% { transform: scaleY(1) translateY(0); opacity: 0.8; }
  33% { transform: scaleY(1.08) translateY(-2px); opacity: 1; }
  66% { transform: scaleY(0.95) translateY(1px); opacity: 0.9; }
  100% { transform: scaleY(1.02) translateY(-1px); opacity: 0.85; }
}
@keyframes wte-toast-drip {
  0% { background-position: 0 0; }
  50% { background-position: 0 10px; }
  100% { background-position: 0 0; }
}
@keyframes wte-cup-shimmer {
  0% { box-shadow: 4px 0 6px #4a3030; }
  100% { box-shadow: 4px 0 10px #6a5040; }
}
@keyframes wte-aged-sit {
  0%,100% { transform: translateX(0) rotate(0deg); }
  50% { transform: translateX(-2px) rotate(2deg); }
}
@keyframes wte-skiffins-bow {
  0%,100% { transform: translateX(0) rotate(0deg); }
  50% { transform: translateX(3px) rotate(-3deg); }
}
@keyframes wte-steam-rise {
  0% { transform: translateY(0) scaleX(1); opacity: 0.4; }
  50% { transform: translateY(-20px) scaleX(1.5); opacity: 0.7; }
  100% { transform: translateY(-40px) scaleX(0.8); opacity: 0; }
}

/* ============================================ */

.scn-walworth-newspaper-reading {
  background:
    linear-gradient(180deg, #2a1a0a 0%, #4a2a1a 40%, #2a1202 100%);
}

.scn-walworth-newspaper-reading .wnr-bg {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at 60% 50%, #7a4a2a 0%, transparent 60%);
  animation: wnr-bg-glow 8s ease-in-out infinite alternate;
}
.scn-walworth-newspaper-reading .wnr-fire {
  position: absolute; bottom: 20%; left: 15%; width: 50px; height: 70px;
  background: radial-gradient(circle at 50% 60%, #ff9a50 0%, #cc5500 40%, #6a2200 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  box-shadow: 0 0 30px 8px #cc5500, 0 0 60px 15px #6a2200;
  animation: wnr-fire-flicker 2.5s ease-in-out infinite;
}
.scn-walworth-newspaper-reading .wnr-armchair {
  position: absolute; bottom: 15%; left: 30%; width: 120px; height: 80px;
  background: linear-gradient(135deg, #5a3a1a 0%, #3a2010 50%, #2a1208 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 30% 30%;
  box-shadow: 0 8px 12px rgba(0,0,0,0.6);
  animation: wnr-chair-settle 10s ease-in-out infinite;
}
.scn-walworth-newspaper-reading .wnr-aged {
  position: absolute; bottom: 20%; left: 35%; width: 45px; height: 65px;
  background: linear-gradient(135deg, #3a2a1a 0%, #1a1008 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: wnr-aged-read 6s ease-in-out infinite;
}
.scn-walworth-newspaper-reading .wnr-newspaper {
  position: absolute; bottom: 38%; left: 38%; width: 80px; height: 50px;
  background: linear-gradient(180deg, #c0b090 0%, #a09080 100%);
  border-radius: 4px;
  transform: perspective(200px) rotateX(15deg) rotateY(-5deg);
  box-shadow: 0 4px 8px rgba(0,0,0,0.3);
  animation: wnr-paper-shake 8s ease-in-out infinite;
}
.scn-walworth-newspaper-reading .wnr-spectacles {
  position: absolute; bottom: 55%; left: 42%; width: 30px; height: 10px;
  background: radial-gradient(circle at 30% 50%, #d0c8b0 0%, transparent 70%);
  border-radius: 50% 50% 0 0;
  filter: blur(2px);
  animation: wnr-spectacles-glint 4s ease-in-out infinite alternate;
}
.scn-walworth-newspaper-reading .wnr-wemmick {
  position: absolute; bottom: 20%; left: 58%; width: 35px; height: 70px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: wnr-wemmick-stance 7s ease-in-out infinite;
}

@keyframes wnr-bg-glow {
  0% { opacity: 0.6; }
  50% { opacity: 0.9; }
  100% { opacity: 0.6; }
}
@keyframes wnr-fire-flicker {
  0% { transform: scaleY(1) translateY(0); opacity: 0.8; }
  33% { transform: scaleY(1.1) translateY(-3px); opacity: 1; }
  66% { transform: scaleY(0.93) translateY(2px); opacity: 0.85; }
  100% { transform: scaleY(1.03) translateY(-1px); opacity: 0.9; }
}
@keyframes wnr-chair-settle {
  0%,100% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
}
@keyframes wnr-aged-read {
  0%,100% { transform: translateX(0) rotate(0deg); }
  50% { transform: translateX(2px) rotate(1deg); }
}
@keyframes wnr-paper-shake {
  0%,100% { transform: perspective(200px) rotateX(15deg) rotateY(-5deg); }
  50% { transform: perspective(200px) rotateX(16deg) rotateY(-4deg); }
}
@keyframes wnr-spectacles-glint {
  0% { opacity: 0.3; filter: blur(2px); }
  100% { opacity: 0.9; filter: blur(0); }
}
@keyframes wnr-wemmick-stance {
  0%,100% { transform: translateX(0) rotate(0deg); }
  50% { transform: translateX(-1px) rotate(1deg); }
}

/* ============================================ */

.scn-chapter-transition-estella {
  background:
    linear-gradient(180deg, #1a1a2e 0%, #2a2a4a 40%, #0a0a1a 100%);
}

.scn-chapter-transition-estella .cte-bg {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at 30% 70%, #3a3a5a 0%, transparent 60%),
              linear-gradient(180deg, #0a0a12 0%, #1a1a2e 100%);
  animation: cte-bg-darken 12s ease-in-out infinite alternate;
}
.scn-chapter-transition-estella .cte-window {
  position: absolute; top: 20%; left: 25%; width: 100px; height: 130px;
  background: linear-gradient(180deg, #3a3a5a 0%, #1a1a2e 100%);
  border: 2px solid #2a2a4a;
  border-radius: 4px;
  box-shadow: inset 0 0 20px rgba(0,0,0,0.5);
  animation: cte-window-glow 8s ease-in-out infinite alternate;
}
.scn-chapter-transition-estella .cte-curtain {
  position: absolute; top: 18%; left: 23%; width: 30px; height: 140px;
  background: linear-gradient(180deg, #3a2a3a 0%, #1a121a 100%);
  border-radius: 4px;
  transform-origin: top left;
  animation: cte-curtain-sway 6s ease-in-out infinite;
}
.scn-chapter-transition-estella .cte-figure {
  position: absolute; bottom: 20%; left: 38%; width: 30px; height: 80px;
  background: linear-gradient(180deg, #2a2a3a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: cte-figure-turn 10s ease-in-out infinite;
}
.scn-chapter-transition-estella .cte-shadow {
  position: absolute; bottom: 10%; left: 35%; width: 60px; height: 20px;
  background: radial-gradient(ellipse, rgba(0,0,0,0.6) 0%, transparent 100%);
  filter: blur(8px);
  animation: cte-shadow-pulse 8s ease-in-out infinite alternate;
}
.scn-chapter-transition-estella .cte-light {
  position: absolute; top: 30%; right: 20%; width: 40px; height: 40px;
  background: radial-gradient(circle at 50% 50%, #606080 0%, transparent 70%);
  filter: blur(10px);
  animation: cte-light-flicker 4s ease-in-out infinite alternate;
}
.scn-chapter-transition-estella .cte-whisper {
  position: absolute; bottom: 50%; left: 45%; width: 20px; height: 10px;
  background: radial-gradient(ellipse, rgba(150,150,180,0.2) 0%, transparent 100%);
  filter: blur(4px);
  animation: cte-whisper-move 6s ease-in-out infinite;
}

@keyframes cte-bg-darken {
  0% { opacity: 0.4; }
  50% { opacity: 0.7; }
  100% { opacity: 0.5; }
}
@keyframes cte-window-glow {
  0% { box-shadow: inset 0 0 20px rgba(0,0,0,0.5); }
  50% { box-shadow: inset 0 0 30px rgba(0,0,0,0.8); }
  100% { box-shadow: inset 0 0 20px rgba(0,0,0,0.5); }
}
@keyframes cte-curtain-sway {
  0%,100% { transform: rotate(0deg) scaleX(1); }
  50% { transform: rotate(3deg) scaleX(0.97); }
}
@keyframes cte-figure-turn {
  0% { transform: translateX(0) rotate(0deg); }
  50% { transform: translateX(8px) rotate(5deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes cte-shadow-pulse {
  0% { opacity: 0.3; transform: scaleX(1); }
  100% { opacity: 0.7; transform: scaleX(1.2); }
}
@keyframes cte-light-flicker {
  0% { opacity: 0.3; filter: blur(10px); }
  100% { opacity: 0.7; filter: blur(6px); }
}
@keyframes cte-whisper-move {
  0% { transform: translate(0,0) scale(1); opacity: 0; }
  50% { transform: translate(10px,-10px) scale(1.5); opacity: 0.4; }
  100% { transform: translate(20px,-20px) scale(2); opacity: 0; }
}

/* ============================================ */

.scn-richmond-window-conversation {
  background:
    linear-gradient(180deg, #1a1a3e 0%, #2a2a5a 30%, #1a1a2e 70%, #0a0a1a 100%);
}

.scn-richmond-window-conversation .rwc-bg {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at 30% 50%, #3a3a6a 0%, transparent 60%),
              linear-gradient(180deg, #0a0a1a 0%, #1a1a3e 100%);
  animation: rwc-bg-deepen 10s ease-in-out infinite alternate;
}
.scn-richmond-window-conversation .rwc-window-frame {
  position: absolute; top: 10%; left: 10%; right: 10%; bottom: 10%;
  border: 4px solid #2a2a4a;
  border-radius: 8px;
  box-shadow: inset 0 0 40px rgba(0,0,0,0.7);
  animation: rwc-frame-fade 12s ease-in-out infinite alternate;
}
.scn-richmond-window-conversation .rwc-sky {
  position: absolute; top: 10%; left: 10%; right: 10%; bottom: 60%;
  background: linear-gradient(180deg, #2a2a6a 0%, #5a4a8a 30%, #8a6a8a 100%);
  border-radius: 6px 6px 0 0;
  opacity: 0.5;
  filter: blur(8px);
  animation: rwc-sky-darken 15s ease-in-out infinite alternate;
}
.scn-richmond-window-conversation .rwc-figure-a {
  position: absolute; bottom: 20%; left: 30%; width: 28px; height: 70px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: rwc-figure-a-turn 8s ease-in-out infinite;
}
.scn-richmond-window-conversation .rwc-figure-b {
  position: absolute; bottom: 20%; left: 48%; width: 26px; height: 65px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: rwc-figure-b-turn 9s ease-in-out infinite;
}
.scn-richmond-window-conversation .rwc-lamp {
  position: absolute; bottom: 30%; right: 20%; width: 10px; height: 15px;
  background: radial-gradient(circle at 50% 50%, #ffd080 0%, #ffa050 50%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 20px 6px #ffa050, 0 0 40px 12px rgba(255,160,80,0.3);
  animation: rwc-lamp-pulse 3s ease-in-out infinite alternate;
}
.scn-richmond-window-conversation .rwc-shadow {
  position: absolute; bottom: 10%; left: 30%; width: 80px; height: 15px;
  background: radial-gradient(ellipse, rgba(0,0,0,0.5) 0%, transparent 100%);
  filter: blur(6px);
  animation: rwc-shadow-stretch 10s ease-in-out infinite alternate;
}

@keyframes rwc-bg-deepen {
  0% { opacity: 0.6; }
  100% { opacity: 0.9; }
}
@keyframes rwc-frame-fade {
  0% { border-color: #2a2a4a; box-shadow: inset 0 0 40px rgba(0,0,0,0.7); }
  100% { border-color: #3a3a6a; box-shadow: inset 0 0 60px rgba(0,0,0,0.9); }
}
@keyframes rwc-sky-darken {
  0% { opacity: 0.3; }
  100% { opacity: 0.6; }
}
@keyframes rwc-figure-a-turn {
  0%,100% { transform: translateX(0) rotate(0deg); }
  50% { transform: translateX(4px) rotate(3deg); }
}
@keyframes rwc-figure-b-turn {
  0%,100% { transform: translateX(0) rotate(0deg); }
  50% { transform: translateX(-3px) rotate(-2deg); }
}
@keyframes rwc-lamp-pulse {
  0% { box-shadow: 0 0 20px 6px #ffa050, 0 0 40px 12px rgba(255,160,80,0.3); opacity: 0.7; }
  100% { box-shadow: 0 0 30px 10px #ffd080, 0 0 60px 20px rgba(255,208,128,0.5); opacity: 1; }
}
@keyframes rwc-shadow-stretch {
  0% { transform: scaleX(1); opacity: 0.4; }
  100% { transform: scaleX(1.3); opacity: 0.7; }
}

/* miss-havisham-questions – dark, calm interior */
.scn-miss-havisham-questions {
  background: 
    linear-gradient(180deg, #1c1a2e 0%, #2a2640 40%, #3d3555 100%),
    radial-gradient(ellipse at 30% 40%, #4a3f6e 0%, transparent 60%);
}
.scn-miss-havisham-questions .wall  { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #2a2640 0%, #1c1a2e 100%); animation: mhq-fade 12s ease-in-out infinite alternate; }
.scn-miss-havisham-questions .floor { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #2b2230 0%, #1e1620 100%); border-radius:20% 20% 0 0; }
.scn-miss-havisham-questions .chair { position:absolute; bottom:18%; left:30%; width:40px; height:60px; background: linear-gradient(180deg, #4a3a2a 0%, #2e2218 100%); border-radius:10% 10% 30% 30% / 15% 15% 40% 40%; transform:rotate(-2deg); box-shadow:2px 4px 8px rgba(0,0,0,0.5); animation: mhq-chair 10s ease-in-out infinite alternate; }
.scn-miss-havisham-questions .table { position:absolute; bottom:15%; left:38%; width:70px; height:18px; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius:6px; box-shadow:0 6px 10px rgba(0,0,0,0.4); }
.scn-miss-havisham-questions .candle{ position:absolute; bottom:38%; left:44%; width:6px; height:20px; background: linear-gradient(180deg, #d4b080 0%, #a08050 100%); border-radius:30%; box-shadow:0 0 12px 2px #d4b080; animation: mhq-flicker 2s ease-in-out infinite alternate; }
.scn-miss-havisham-questions .figure-havisham{ position:absolute; bottom:20%; left:30%; width:28px; height:70px; background: linear-gradient(180deg, #3a2a4a 0%, #1a1020 100%); border-radius:40% 40% 30% 30% / 50% 50% 30% 30%; transform-origin:bottom center; animation: mhq-seat 8s ease-in-out infinite alternate; }
.scn-miss-havisham-questions .figure-pip{ position:absolute; bottom:12%; left:48%; width:20px; height:50px; background: linear-gradient(180deg, #2a3a4a 0%, #1a2230 100%); border-radius:45% 45% 35% 35% / 55% 55% 35% 35%; animation: mhq-stand 12s ease-in-out infinite alternate; }
.scn-miss-havisham-questions .glow { position:absolute; bottom:40%; left:44%; width:30px; height:30px; background: radial-gradient(circle, rgba(212,176,128,0.4) 0%, transparent 70%); animation: mhq-pulse 4s ease-in-out infinite alternate; }
@keyframes mhq-fade   { 0% { opacity:0.7} 50%{opacity:0.85} 100%{opacity:0.7} }
@keyframes mhq-chair  { 0% { transform:rotate(-2deg) translateY(0)} 50%{transform:rotate(-1deg) translateY(-1px)} 100%{transform:rotate(-2deg) translateY(0)} }
@keyframes mhq-flicker{ 0% { box-shadow:0 0 8px 1px #d4b080; height:20px} 50%{box-shadow:0 0 16px 4px #d4b080; height:21px} 100%{box-shadow:0 0 10px 2px #d4b080; height:20px} }
@keyframes mhq-seat   { 0% { transform:rotate(0deg)} 50%{transform:rotate(2deg)} 100%{transform:rotate(-1deg)} }
@keyframes mhq-stand  { 0% { transform:translateX(0) rotate(0deg)} 50%{transform:translateX(-2px) rotate(1deg)} 100%{transform:translateX(0) rotate(0deg)} }
@keyframes mhq-pulse  { 0% { opacity:0.2; transform:scale(1)} 50%{opacity:0.5; transform:scale(1.2)} 100%{opacity:0.3; transform:scale(0.95)} }

/* mrs-joe-rampage – tense, bright interior */
.scn-mrs-joe-rampage {
  background: 
    linear-gradient(180deg, #f5e6c8 0%, #d4b080 50%, #c09860 100%),
    repeating-linear-gradient(45deg, rgba(0,0,0,0.02) 0px, rgba(0,0,0,0.02) 4px, transparent 4px, transparent 8px);
}
.scn-mrs-joe-rampage .kitchen-wall { position:absolute; inset:0 0 35% 0; background: linear-gradient(180deg, #e8d4a8 0%, #d0b480 100%); box-shadow:inset 0 -4px 10px rgba(0,0,0,0.1); }
.scn-mrs-joe-rampage .table-wood  { position:absolute; bottom:10%; left:20%; width:70%; height:12px; background: linear-gradient(180deg, #a08050 0%, #7a6030 100%); border-radius:4px; box-shadow:0 8px 12px rgba(0,0,0,0.3); }
.scn-mrs-joe-rampage .rollpin    { position:absolute; bottom:38%; left:60%; width:30px; height:6px; background: linear-gradient(180deg, #b09060 0%, #8a7040 100%); border-radius:40%; transform:rotate(-30deg); animation: mjr-throw 1.5s ease-in-out infinite alternate; }
.scn-mrs-joe-rampage .pot        { position:absolute; bottom:25%; left:25%; width:22px; height:20px; background: linear-gradient(180deg, #c0a080 0%, #a08060 100%); border-radius:20% 20% 10% 10%; box-shadow:inset 0 -4px 6px rgba(0,0,0,0.2); animation: mjr-pot 2s ease-in-out infinite alternate; }
.scn-mrs-joe-rampage .figure-mrsjoe{ position:absolute; bottom:12%; left:50%; width:34px; height:80px; margin-left:-17px; background: linear-gradient(180deg, #c0553d 0%, #8a3030 100%); border-radius:40% 40% 35% 35% / 50% 50% 30% 30%; transform-origin:bottom center; animation: mjr-rage 0.8s ease-in-out infinite alternate; }
.scn-mrs-joe-rampage .shadow-rage{ position:absolute; bottom:0; left:40%; width:120%; height:30%; background: radial-gradient(ellipse at 50% 0%, rgba(0,0,0,0.3) 0%, transparent 70%); animation: mjr-shadow 1s ease-in-out infinite alternate; }
.scn-mrs-joe-rampage .chair-tip  { position:absolute; bottom:5%; left:65%; width:20px; height:40px; background: linear-gradient(180deg, #8a7040 0%, #5a4030 100%); border-radius:10% 10% 30% 30%; transform:rotate(15deg); animation: mjr-tip 1.2s ease-in-out infinite alternate; }
@keyframes mjr-throw { 0% { transform:rotate(-30deg) translateX(0) } 50%{ transform:rotate(-10deg) translateX(10px) scale(1.1) } 100%{ transform:rotate(-30deg) translateX(0) } }
@keyframes mjr-pot   { 0% { transform:translateY(0) rotate(0deg) } 50%{ transform:translateY(-4px) rotate(5deg) } 100%{ transform:translateY(0) rotate(0deg) } }
@keyframes mjr-rage  { 0% { transform:rotate(-3deg) translateY(0) } 50%{ transform:rotate(3deg) translateY(-2px) scale(1.02) } 100%{ transform:rotate(-3deg) translateY(0) } }
@keyframes mjr-shadow{ 0% { opacity:0.4 } 50%{ opacity:0.8 } 100%{ opacity:0.5 } }
@keyframes mjr-tip   { 0% { transform:rotate(15deg) } 50%{ transform:rotate(20deg) } 100%{ transform:rotate(15deg) } }

/* joe-dressed-up – funny, bright interior */
.scn-joe-dressed-up {
  background: 
    linear-gradient(180deg, #f0e8d8 0%, #e0d0b0 50%, #d0b890 100%),
    radial-gradient(circle at 70% 30%, #fff8e0 0%, transparent 40%);
}
.scn-joe-dressed-up .room-bright  { position:absolute; inset:0; background: linear-gradient(180deg, rgba(255,255,240,0.3) 0%, transparent 100%); }
.scn-joe-dressed-up .mirror       { position:absolute; bottom:20%; left:30%; width:50px; height:80px; background: linear-gradient(180deg, #b0c8d0 0%, #8098a8 100%); border-radius:10% 10% 5% 5% / 5% 5% 10% 10%; box-shadow:0 4px 12px rgba(0,0,0,0.2); }
.scn-joe-dressed-up .figure-joe   { position:absolute; bottom:12%; left:50%; width:28px; height:75px; margin-left:-14px; background: linear-gradient(180deg, #4a6a5a 0%, #2a4a3a 100%); border-radius:45% 45% 35% 35% / 55% 55% 35% 35%; animation: jdu-waddle 2s ease-in-out infinite alternate; }
.scn-joe-dressed-up .coat-collar  { position:absolute; bottom:44%; left:50%; width:34px; height:20px; margin-left:-17px; background: linear-gradient(180deg, #f0d0a0 0%, #d0b080 100%); border-radius:50% 50% 40% 40% / 60% 60% 30% 30%; transform:scaleX(1.1); animation: jdu-collar 3s ease-in-out infinite alternate; }
.scn-joe-dressed-up .hat          { position:absolute; bottom:70%; left:50%; width:30px; height:16px; margin-left:-15px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius:40% 40% 20% 20% / 60% 60% 30% 30%; transform:rotate(5deg); animation: jdu-hat 2.5s ease-in-out infinite alternate; }
.scn-joe-dressed-up .buttons      { position:absolute; bottom:30%; left:50%; width:20px; height:30px; margin-left:-10px; background: repeating-linear-gradient(180deg, #d0a040 0px, #d0a040 4px, transparent 4px, transparent 8px); border-radius:30%; opacity:0.8; }
@keyframes jdu-waddle { 0% { transform:translateX(0) rotate(-2deg) } 50%{ transform:translateX(2px) rotate(2deg) scaleY(1.02) } 100%{ transform:translateX(0) rotate(-2deg) } }
@keyframes jdu-collar{ 0% { transform:scaleX(1.1) translateY(0) } 50%{ transform:scaleX(1.2) translateY(-2px) rotate(3deg) } 100%{ transform:scaleX(1.1) translateY(0) } }
@keyframes jdu-hat   { 0% { transform:rotate(5deg) } 50%{ transform:rotate(-3deg) translateY(1px) } 100%{ transform:rotate(5deg) } }

/* miss-havisham-and-joe – dark, calm, two figures */
.scn-miss-havisham-and-joe {
  background: 
    linear-gradient(180deg, #1a1a38 0%, #2a2644 50%, #3a3050 100%),
    radial-gradient(ellipse at 50% 40%, #4a3a5a 0%, transparent 60%);
}
.scn-miss-havisham-and-joe .dark-wall { position:absolute; inset:0 0 25% 0; background: linear-gradient(180deg, #2a2644 0%, #1c1a30 100%); animation: mhj-fade 15s ease-in-out infinite alternate; }
.scn-miss-havisham-and-joe .darker-floor { position:absolute; bottom:0; left:0; right:0; height:25%; background: linear-gradient(180deg, #1e1828 0%, #0e0a18 100%); border-radius:30% 30% 0 0; }
.scn-miss-havisham-and-joe .table-long{ position:absolute; bottom:12%; left:25%; width:50%; height:14px; background: linear-gradient(180deg, #4a3a2a 0%, #2e1e12 100%); border-radius:4px; box-shadow:0 6px 12px rgba(0,0,0,0.6); }
.scn-miss-havisham-and-joe .candle-two{ position:absolute; bottom:30%; left:55%; width:6px; height:24px; background: linear-gradient(180deg, #d4b080 0%, #a08050 100%); border-radius:30%; box-shadow:0 0 14px 3px #d4b080; animation: mhj-candle 3s ease-in-out infinite alternate; }
.scn-miss-havisham-and-joe .silhouette-havisham{ position:absolute; bottom:16%; left:35%; width:30px; height:70px; background: linear-gradient(180deg, #3a2a4a 0%, #1a1020 100%); border-radius:40% 40% 30% 30% / 50% 50% 30% 30%; transform-origin:bottom center; animation: mhj-seat2 10s ease-in-out infinite alternate; }
.scn-miss-havisham-and-joe .silhouette-joe{ position:absolute; bottom:10%; left:55%; width:22px; height:60px; background: linear-gradient(180deg, #2a3a3a 0%, #1a2228 100%); border-radius:45% 45% 35% 35% / 55% 55% 35% 35%; animation: mhj-stand2 12s ease-in-out infinite alternate; }
.scn-miss-havisham-and-joe .candle-glow{ position:absolute; bottom:32%; left:55%; width:40px; height:40px; margin-left:-20px; background: radial-gradient(circle, rgba(212,176,128,0.3) 0%, transparent 80%); animation: mhj-glow 4s ease-in-out infinite alternate; }
.scn-miss-havisham-and-joe .window-arch{ position:absolute; top:8%; right:10%; width:50px; height:80px; background: linear-gradient(180deg, #2a3a5a 0%, #1a2a3a 100%); border-radius:50% 50% 20% 20% / 60% 60% 20% 20%; box-shadow:inset 0 0 20px rgba(0,0,0,0.5); animation: mhj-window 20s ease-in-out infinite alternate; }
@keyframes mhj-fade   { 0% { opacity:0.6 } 50%{ opacity:0.8 } 100%{ opacity:0.65 } }
@keyframes mhj-candle { 0% { box-shadow:0 0 10px 2px #d4b080; height:24px } 50%{ box-shadow:0 0 18px 5px #d4b080; height:25px } 100%{ box-shadow:0 0 12px 3px #d4b080; height:24px } }
@keyframes mhj-seat2  { 0% { transform:rotate(0deg) } 50%{ transform:rotate(2deg) translateY(-1px) } 100%{ transform:rotate(-1deg) } }
@keyframes mhj-stand2 { 0% { transform:translateX(0) rotate(0deg) } 50%{ transform:translateX(-3px) rotate(1.5deg) } 100%{ transform:translateX(0) rotate(0deg) } }
@keyframes mhj-glow   { 0% { opacity:0.2; transform:scale(1) } 50%{ opacity:0.5; transform:scale(1.3) } 100%{ opacity:0.3; transform:scale(0.9) } }
@keyframes mhj-window { 0% { opacity:0.5 } 50%{ opacity:0.8 } 100%{ opacity:0.6 } }

/* river-steamer-approach */
.scn-river-steamer-approach {
  background: 
    linear-gradient(180deg, #2b2b4a 0%, #1f1f3a 40%, #2a2a44 100%),
    radial-gradient(ellipse at 30% 80%, #4a4a6a 0%, transparent 80%);
  overflow: hidden;
}
.scn-river-steamer-approach .river-bg {
  position: absolute; inset: 40% 0 0 0;
  background: linear-gradient(180deg, #1a2a2a 0%, #0f1a1a 100%);
  animation: rsa-river-bg 8s ease-in-out infinite alternate;
}
.scn-river-steamer-approach .river-fore {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(0deg, #0b1717 0%, #1a2a2a 100%);
  border-radius: 40% 60% 0 0 / 20% 30% 0 0;
  animation: rsa-river-fore 6s ease-in-out infinite alternate;
}
.scn-river-steamer-approach .steamer {
  position: absolute; bottom: 50%; left: 30%; width: 100px; height: 40px;
  background: linear-gradient(90deg, #2a1a1a 0%, #3a2a2a 50%, #1a0f0f 100%);
  border-radius: 40% 20% 30% 50%;
  transform: rotate(-5deg);
  animation: rsa-steamer 12s ease-in-out infinite;
}
.scn-river-steamer-approach .smoke {
  position: absolute; bottom: 68%; left: 28%; width: 60px; height: 80px;
  background: radial-gradient(ellipse at 50% 50%, rgba(120,100,80,0.4) 0%, transparent 70%);
  filter: blur(4px);
  border-radius: 50%;
  transform-origin: bottom center;
}
.scn-river-steamer-approach .smoke-a {
  animation: rsa-smoke 14s ease-out infinite;
}
.scn-river-steamer-approach .smoke-b {
  left: 36%; width: 50px; height: 60px;
  animation: rsa-smoke 18s ease-out infinite 3s;
}
.scn-river-steamer-approach .shore-tree {
  position: absolute; bottom: 45%; left: 10%; width: 30px; height: 60px;
  background: linear-gradient(180deg, #1a2a1a 0%, #0a1a0a 100%);
  border-radius: 30% 30% 10% 10% / 50% 50% 20% 20%;
  transform: rotate(2deg);
  animation: rsa-tree 20s ease-in-out infinite;
}
.scn-river-steamer-approach .reflection {
  position: absolute; bottom: 30%; left: 25%; width: 80px; height: 20px;
  background: linear-gradient(180deg, rgba(50,40,30,0.3) 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(3px);
  animation: rsa-reflection 4s ease-in-out infinite alternate;
}
@keyframes rsa-river-bg {
  0% { opacity: 0.7; }
  50% { opacity: 0.85; }
  100% { opacity: 0.75; }
}
@keyframes rsa-river-fore {
  0% { transform: translateY(0); }
  50% { transform: translateY(-2px) scaleY(1.02); }
  100% { transform: translateY(0); }
}
@keyframes rsa-steamer {
  0% { transform: rotate(-5deg) translateY(0); }
  50% { transform: rotate(-3deg) translateY(-3px) scaleX(1.02); }
  100% { transform: rotate(-5deg) translateY(0); }
}
@keyframes rsa-smoke {
  0% { transform: scale(1) translateY(0); opacity: 0.5; }
  50% { transform: scale(1.3) translateY(-20px) translateX(5px); opacity: 0.2; }
  100% { transform: scale(1.6) translateY(-40px) translateX(10px); opacity: 0; }
}
@keyframes rsa-tree {
  0% { transform: rotate(2deg); }
  50% { transform: rotate(0deg) scaleY(1.01); }
  100% { transform: rotate(2deg); }
}
@keyframes rsa-reflection {
  0% { opacity: 0.3; transform: scaleY(0.95); }
  100% { opacity: 0.5; transform: scaleY(1.05); }
}

/* galley-capture */
.scn-galley-capture {
  background: 
    linear-gradient(180deg, #191935 0%, #252550 50%, #1a1a40 100%),
    radial-gradient(ellipse at 50% 20%, #3a3a6a 0%, transparent 70%);
  overflow: hidden;
}
.scn-galley-capture .night-sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #101030 0%, #202050 100%);
  animation: gca-sky 20s ease-in-out infinite alternate;
}
.scn-galley-capture .moon {
  position: absolute; top: 8%; left: 65%; width: 40px; height: 40px;
  background: radial-gradient(circle, #d0d0e0 0%, #a0a0c0 70%);
  border-radius: 50%;
  box-shadow: 0 0 30px 10px rgba(160,160,200,0.4);
  animation: gca-moon 30s ease-in-out infinite alternate;
}
.scn-galley-capture .water {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #101030 0%, #050515 100%);
  border-radius: 50% 50% 0 0 / 20% 20% 0 0;
  animation: gca-water 10s ease-in-out infinite alternate;
}
.scn-galley-capture .galley {
  position: absolute; bottom: 35%; left: 30%; width: 120px; height: 30px;
  background: linear-gradient(90deg, #2a1a0a 0%, #3a2a1a 50%, #1a0f05 100%);
  border-radius: 30% 10% 40% 10% / 50% 20% 60% 20%;
  transform: rotate(-2deg);
  animation: gca-galley 15s ease-in-out infinite;
}
.scn-galley-capture .rower {
  position: absolute; bottom: 42%; left: 35%; width: 20px; height: 28px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a15 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
}
.scn-galley-capture .rower-1 {
  animation: gca-row 3s ease-in-out infinite;
}
.scn-galley-capture .rower-2 {
  left: 45%;
  animation: gca-row 3.5s ease-in-out infinite 0.5s;
}
.scn-galley-capture .ripple {
  position: absolute; bottom: 20%; width: 60px; height: 8px;
  background: linear-gradient(180deg, rgba(200,200,220,0.2) 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(2px);
  animation: gca-ripple 8s ease-in-out infinite;
}
.scn-galley-capture .ripple-1 { left: 25%; }
.scn-galley-capture .ripple-2 { left: 45%; animation-delay: 2.5s; }
.scn-galley-capture .ripple-3 { left: 65%; animation-delay: 5s; }
@keyframes gca-sky {
  0% { opacity: 0.6; }
  50% { opacity: 0.8; }
  100% { opacity: 0.7; }
}
@keyframes gca-moon {
  0% { transform: translateY(0) scale(0.95); opacity: 0.8; }
  50% { transform: translateY(-2px) scale(1.05); opacity: 1; }
  100% { transform: translateY(0) scale(0.95); opacity: 0.85; }
}
@keyframes gca-water {
  0% { transform: translateY(0) scaleY(1); }
  50% { transform: translateY(-1px) scaleY(1.01); }
  100% { transform: translateY(0); }
}
@keyframes gca-galley {
  0% { transform: rotate(-2deg) translateY(0); }
  50% { transform: rotate(-1deg) translateY(-1px); }
  100% { transform: rotate(-2deg) translateY(0); }
}
@keyframes gca-row {
  0% { transform: translateY(0) rotate(0deg); }
  25% { transform: translateY(-2px) rotate(5deg); }
  50% { transform: translateY(0) rotate(0deg); }
  75% { transform: translateY(-1px) rotate(-5deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes gca-ripple {
  0% { transform: scaleX(1) translateY(0); opacity: 0.5; }
  50% { transform: scaleX(1.1) translateY(-2px); opacity: 0.3; }
  100% { transform: scaleX(1) translateY(0); opacity: 0.5; }
}

/* police-court-morning */
.scn-police-court-morning {
  background:
    linear-gradient(180deg, #c8b89a 0%, #e8dcc0 40%, #d0c0a0 100%),
    radial-gradient(ellipse at 60% 50%, #f0e8d8 0%, transparent 60%);
  overflow: hidden;
}
.scn-police-court-morning .court-wall {
  position: absolute; inset: 0;
  background: 
    linear-gradient(90deg, #a89880 0%, transparent 30%, transparent 70%, #b0a080 100%),
    repeating-linear-gradient(0deg, transparent, transparent 20px, rgba(160,140,120,0.1) 20px, rgba(160,140,120,0.1) 21px);
}
.scn-police-court-morning .window-light {
  position: absolute; top: 10%; left: 50%; width: 80px; height: 100px;
  background: linear-gradient(180deg, #ffe8c0 0%, #fff0d0 100%);
  border: 6px solid #8a7a6a;
  border-radius: 4px;
  transform: translateX(-50%);
  box-shadow: 0 0 40px 10px rgba(255,232,192,0.3);
  animation: pcm-light 6s ease-in-out infinite alternate;
}
.scn-police-court-morning .bench {
  position: absolute; bottom: 20%; left: 20%; width: 150px; height: 60px;
  background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 0 4px 10px rgba(0,0,0,0.3);
  animation: pcm-bench 10s ease-in-out infinite;
}
.scn-police-court-morning .dock {
  position: absolute; bottom: 20%; right: 25%; width: 100px; height: 80px;
  background: linear-gradient(180deg, #8a7a6a 0%, #5a4a3a 100%);
  border-radius: 20% 20% 5% 5% / 30% 30% 10% 10%;
  box-shadow: 0 6px 12px rgba(0,0,0,0.4);
}
.scn-police-court-morning .prisoner {
  position: absolute; bottom: 25%; right: 35%; width: 40px; height: 60px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: pcm-prisoner 4s ease-in-out infinite;
}
.scn-police-court-morning .clerk {
  position: absolute; bottom: 25%; left: 30%; width: 36px; height: 55px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: pcm-clerk 5s ease-in-out infinite;
}
.scn-police-court-morning .shadow-stripes {
  position: absolute; inset: 0;
  background: repeating-linear-gradient(45deg, rgba(0,0,0,0.05) 0px, rgba(0,0,0,0.05) 20px, transparent 20px, transparent 30px);
  animation: pcm-shadows 8s linear infinite;
}
@keyframes pcm-light {
  0% { opacity: 0.7; transform: translateX(-50%) scaleY(1); }
  50% { opacity: 1; transform: translateX(-50%) scaleY(1.05); }
  100% { opacity: 0.8; transform: translateX(-50%) scaleY(1); }
}
@keyframes pcm-bench {
  0% { transform: translateY(0); }
  50% { transform: translateY(-1px); }
  100% { transform: translateY(0); }
}
@keyframes pcm-prisoner {
  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 pcm-clerk {
  0% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
  100% { transform: translateY(0); }
}
@keyframes pcm-shadows {
  0% { transform: translateX(0); }
  100% { transform: translateX(-20px); }
}

/* herbert-concern */
.scn-herbert-concern {
  background:
    linear-gradient(180deg, #1a1210 0%, #2a1e1a 40%, #1a100c 100%),
    radial-gradient(ellipse at 50% 70%, #3a2a20 0%, transparent 80%);
  overflow: hidden;
}
.scn-herbert-concern .dark-bg {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, #0f0a08 0%, transparent 100%);
  animation: hcn-dark 15s ease-in-out infinite alternate;
}
.scn-herbert-concern .lamp-glow {
  position: absolute; bottom: 40%; left: 50%; width: 60px; height: 60px;
  background: radial-gradient(circle, #d0a050 0%, #a07030 40%, transparent 70%);
  border-radius: 50%;
  transform: translateX(-50%);
  box-shadow: 0 0 60px 20px rgba(160,112,48,0.5);
  animation: hcn-lamp 5s ease-in-out infinite alternate;
}
.scn-herbert-concern .table {
  position: absolute; bottom: 15%; left: 25%; width: 50%; height: 20px;
  background: linear-gradient(180deg, #4a3428 0%, #2a1c14 100%);
  border-radius: 20% 20% 5% 5%;
  box-shadow: 0 -4px 8px rgba(0,0,0,0.4);
  animation: hcn-table 8s ease-in-out infinite;
}
.scn-herbert-concern .figure-left {
  position: absolute; bottom: 20%; left: 35%; width: 40px; height: 60px;
  background: linear-gradient(180deg, #3a2a20 0%, #1a120e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: rotate(-10deg);
  animation: hcn-figleft 6s ease-in-out infinite;
}
.scn-herbert-concern .figure-right {
  position: absolute; bottom: 20%; right: 35%; width: 38px; height: 58px;
  background: linear-gradient(180deg, #2a1a14 0%, #0f0a08 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: rotate(8deg);
  animation: hcn-figright 5s ease-in-out infinite;
}
.scn-herbert-concern .chair-left {
  position: absolute; bottom: 14%; left: 30%; width: 50px; height: 30px;
  background: linear-gradient(180deg, #4a3428 0%, #2a1c14 100%);
  border-radius: 40% 40% 10% 10% / 30% 30% 5% 5%;
  animation: hcn-chair 10s ease-in-out infinite;
}
.scn-herbert-concern .chair-right {
  position: absolute; bottom: 14%; right: 30%; width: 48px; height: 28px;
  background: linear-gradient(180deg, #3a2820 0%, #1a100c 100%);
  border-radius: 40% 40% 10% 10% / 30% 30% 5% 5%;
  animation: hcn-chair 10s ease-in-out infinite 3s;
}
.scn-herbert-concern .letter {
  position: absolute; bottom: 22%; left: 48%; width: 30px; height: 20px;
  background: linear-gradient(180deg, #8a7050 0%, #6a5030 100%);
  border-radius: 4px;
  transform: rotate(-20deg);
  box-shadow: 0 2px 4px rgba(0,0,0,0.5);
  animation: hcn-letter 12s ease-in-out infinite;
}
@keyframes hcn-dark {
  0%, 100% { opacity: 0.6; }
  50% { opacity: 0.8; }
}
@keyframes hcn-lamp {
  0% { opacity: 0.7; transform: translateX(-50%) scale(0.95); box-shadow: 0 0 40px 10px rgba(160,112,48,0.3); }
  50% { opacity: 1; transform: translateX(-50%) scale(1.05); box-shadow: 0 0 80px 30px rgba(160,112,48,0.6); }
  100% { opacity: 0.8; transform: translateX(-50%) scale(1); box-shadow: 0 0 50px 15px rgba(160,112,48,0.4); }
}
@keyframes hcn-table {
  0% { transform: translateY(0); }
  50% { transform: translateY(-1px); }
  100% { transform: translateY(0); }
}
@keyframes hcn-figleft {
  0% { transform: rotate(-10deg) translateX(0); }
  25% { transform: rotate(-8deg) translateX(1px); }
  50% { transform: rotate(-10deg) translateX(0); }
  75% { transform: rotate(-12deg) translateX(-1px); }
  100% { transform: rotate(-10deg) translateX(0); }
}
@keyframes hcn-figright {
  0% { transform: rotate(8deg) translateX(0); }
  25% { transform: rotate(6deg) translateX(-1px); }
  50% { transform: rotate(8deg) translateX(0); }
  75% { transform: rotate(10deg) translateX(1px); }
  100% { transform: rotate(8deg) translateX(0); }
}
@keyframes hcn-chair {
  0% { transform: translateY(0); }
  50% { transform: translateY(-1px); }
  100% { transform: translateY(0); }
}
@keyframes hcn-letter {
  0% { transform: rotate(-20deg) translateY(0); opacity: 0.8; }
  50% { transform: rotate(-22deg) translateY(-2px); opacity: 1; }
  100% { transform: rotate(-20deg) translateY(0); opacity: 0.8; }
}

.scn-premium-given { 
  background: linear-gradient(180deg, #1a1a2e 0%, #0f0f1a 50%, #2a1f1a 100%), radial-gradient(ellipse at 30% 70%, #3a2a1a 0%, transparent 80%);
  position: relative; 
  overflow: hidden;
}
.scn-premium-given .bg-void { 
  position: absolute; inset: 0; 
  background: radial-gradient(circle at 50% 80%, #3a2a2a 0%, #1a1a1a 60%, #0a0a0a 100%);
  animation: pg-void 12s ease-in-out infinite alternate;
}
.scn-premium-given .table { 
  position: absolute; bottom: 10%; left: 10%; right: 10%; height: 15%; 
  background: linear-gradient(180deg, #5a3a2a 0%, #3a2a1a 100%); 
  border-radius: 4% 4% 0 0; 
  box-shadow: 0 -8px 30px rgba(0,0,0,.6);
  transform: perspective(300px) rotateX(10deg);
  animation: pg-table 8s ease-in-out infinite alternate;
}
.scn-premium-given .bag { 
  position: absolute; bottom: 25%; left: 45%; width: 40px; height: 35px; 
  background: radial-gradient(circle at 40% 30%, #c8a060 0%, #8a6030 60%, #5a3a1a 100%); 
  border-radius: 30% 30% 40% 40% / 40% 40% 30% 30%;
  box-shadow: 0 4px 8px rgba(0,0,0,.5), inset 0 -2px 4px rgba(0,0,0,.3);
  transform: rotate(-5deg);
  animation: pg-bag 6s ease-in-out infinite;
}
.scn-premium-given .candle { 
  position: absolute; bottom: 23%; left: 35%; width: 8px; height: 28px; 
  background: linear-gradient(180deg, #f0e0c0 0%, #c8a860 100%);
  border-radius: 20% 20% 10% 10% / 40% 40% 10% 10%;
  transform: rotate(2deg);
  animation: pg-candle 4s ease-in-out infinite;
}
.scn-premium-given .flame { 
  position: absolute; bottom: 48%; left: 35%; width: 10px; height: 14px; 
  background: radial-gradient(circle, #ffd080 0%, #ffa040 50%, transparent 70%);
  border-radius: 50% 50% 30% 30%;
  transform: translateX(-1px);
  animation: pg-flame 1.5s ease-in-out infinite alternate;
  mix-blend-mode: screen;
}
.scn-premium-given .hand { 
  position: absolute; bottom: 24%; left: 38%; width: 20px; height: 30px; 
  background: radial-gradient(circle at 30% 40%, #6a4a3a 0%, #3a2a1a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform: translateY(-2px) rotate(-15deg);
  animation: pg-hand 5s ease-in-out infinite;
}
.scn-premium-given .glow-ring { 
  position: absolute; bottom: 28%; left: 42%; width: 60px; height: 60px; 
  background: radial-gradient(circle, rgba(255,200,100,0.15) 0%, transparent 70%);
  border-radius: 50%;
  animation: pg-glow 3s ease-in-out infinite alternate;
}
@keyframes pg-void { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.7 } }
@keyframes pg-table { 0% { transform: perspective(300px) rotateX(10deg) translateY(0) } 50% { transform: perspective(300px) rotateX(12deg) translateY(-2px) } 100% { transform: perspective(300px) rotateX(10deg) translateY(0) } }
@keyframes pg-bag { 0%,100% { transform: rotate(-5deg) } 50% { transform: rotate(-3deg) translateY(-3px) } }
@keyframes pg-candle { 0%,100% { transform: rotate(2deg) } 50% { transform: rotate(1deg) translateY(-1px) } }
@keyframes pg-flame { 0% { transform: translateX(-1px) scaleY(0.9) } 50% { transform: translateX(0) scaleY(1.1) } 100% { transform: translateX(-2px) scaleY(0.95) } }
@keyframes pg-hand { 0% { transform: translateY(-2px) rotate(-15deg) } 50% { transform: translateY(0) rotate(-13deg) } 100% { transform: translateY(-2px) rotate(-15deg) } }
@keyframes pg-glow { 0% { transform: scale(1); opacity:0.6 } 50% { transform: scale(1.2); opacity:0.9 } 100% { transform: scale(0.95); opacity:0.5 } }

.scn-farewell-to-miss-havisham {
  background: linear-gradient(180deg, #0a0a1a 0%, #1a1a2e 40%, #1a1a2e 100%), radial-gradient(ellipse at 40% 60%, #1a1a2e 0%, transparent 70%);
  position: relative;
  overflow: hidden;
}
.scn-farewell-to-miss-havisham .hall-bg {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, #0f0f1a 0%, #1a1a2e 100%);
  animation: fm-hall 15s ease-in-out infinite alternate;
}
.scn-farewell-to-miss-havisham .doorway {
  position: absolute; left: 10%; top: 10%; bottom: 10%; width: 25%;
  background: linear-gradient(180deg, #1a1a1a 0%, #2a1a1a 40%, #0a0a0a 100%);
  border-radius: 10% 0 0 10% / 20% 0 0 20%;
  box-shadow: inset -10px 0 30px rgba(0,0,0,.8);
  animation: fm-door 10s ease-in-out infinite alternate;
}
.scn-farewell-to-miss-havisham .fig-pip {
  position: absolute; bottom: 20%; left: 15%; width: 18px; height: 40px;
  background: linear-gradient(180deg, #1a1a2e 0%, #0a0a1a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform: rotate(-5deg);
  animation: fm-pip-walk 6s ease-in-out infinite;
}
.scn-farewell-to-miss-havisham .fig-miss-h {
  position: absolute; bottom: 18%; left: 5%; width: 20px; height: 45px;
  background: radial-gradient(circle at 50% 30%, #4a3a3a 0%, #1a1a1a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform: rotate(3deg);
  animation: fm-missh 8s ease-in-out infinite;
}
.scn-farewell-to-miss-havisham .candle-far {
  position: absolute; bottom: 35%; left: 8%; width: 6px; height: 20px;
  background: linear-gradient(180deg, #e0c080 0%, #a08040 100%);
  border-radius: 10% 10% 5% 5%;
  animation: fm-candle 4s ease-in-out infinite;
}
.scn-farewell-to-miss-havisham .shadow {
  position: absolute; bottom: 15%; left: 10%; width: 40%; height: 10%;
  background: radial-gradient(ellipse, rgba(0,0,0,0.6) 0%, transparent 80%);
  animation: fm-shadow 6s ease-in-out infinite alternate;
}
.scn-farewell-to-miss-havisham .moonlight {
  position: absolute; top: 0; left: 0; width: 100%; height: 100%;
  background: radial-gradient(circle at 20% 30%, rgba(200,220,255,0.08) 0%, transparent 60%);
  mix-blend-mode: overlay;
  animation: fm-moon 20s linear infinite;
}
@keyframes fm-hall { 0% { opacity:0.8 } 50% { opacity:0.9 } 100% { opacity:0.7 } }
@keyframes fm-door { 0% { transform: scaleX(1) } 50% { transform: scaleX(0.98) } 100% { transform: scaleX(1) } }
@keyframes fm-pip-walk { 0% { transform: rotate(-5deg) translateX(0) } 25% { transform: rotate(-3deg) translateX(5px) } 50% { transform: rotate(-5deg) translateX(10px) } 75% { transform: rotate(-3deg) translateX(5px) } 100% { transform: rotate(-5deg) translateX(0) } }
@keyframes fm-missh { 0%,100% { transform: rotate(3deg) translateY(0) } 50% { transform: rotate(4deg) translateY(-2px) } }
@keyframes fm-candle { 0%,100% { transform: translateY(0) scaleY(1) } 50% { transform: translateY(-1px) scaleY(0.95) } }
@keyframes fm-shadow { 0% { opacity:0.5 } 50% { opacity:0.8 } 100% { opacity:0.4 } }
@keyframes fm-moon { 0% { background-position: 0% 0% } 100% { background-position: 100% 100% } }

.scn-joe-delivering-compliments {
  background: linear-gradient(180deg, #f5e6d0 0%, #e8d4b8 40%, #d4b890 100%), radial-gradient(ellipse at 50% 100%, #d4b890 0%, transparent 70%);
  position: relative;
  overflow: hidden;
}
.scn-joe-delivering-compliments .room-bg {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, #f0e0c8 0%, #dcc8a8 100%);
  animation: jc-room 18s ease-in-out infinite alternate;
}
.scn-joe-delivering-compliments .window {
  position: absolute; top: 10%; right: 10%; width: 30%; height: 40%;
  background: radial-gradient(circle at 30% 30%, #b8d4e8 0%, #a0c0d8 60%, #80a0b8 100%);
  border-radius: 40% 40% 10% 10% / 60% 60% 20% 20%;
  box-shadow: inset 0 0 40px rgba(255,255,200,0.3);
  transform: translateY(0);
  animation: jc-window 6s ease-in-out infinite alternate;
}
.scn-joe-delivering-compliments .joe-fig {
  position: absolute; bottom: 20%; left: 20%; width: 22px; height: 50px;
  background: linear-gradient(180deg, #5a4030 0%, #3a2a1a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform: rotate(2deg);
  animation: jc-joe 7s ease-in-out infinite;
}
.scn-joe-delivering-compliments .pip-fig {
  position: absolute; bottom: 18%; left: 40%; width: 16px; height: 35px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform: rotate(-1deg);
  animation: jc-pip 5s ease-in-out infinite;
}
.scn-joe-delivering-compliments .table {
  position: absolute; bottom: 10%; left: 15%; right: 15%; height: 12%;
  background: linear-gradient(180deg, #b8a080 0%, #8a7050 100%);
  border-radius: 20% 20% 0 0 / 40% 40% 0 0;
  box-shadow: 0 -4px 20px rgba(0,0,0,0.2);
  transform: perspective(400px) rotateX(15deg);
  animation: jc-table 9s ease-in-out infinite alternate;
}
.scn-joe-delivering-compliments .chair {
  position: absolute; bottom: 12%; left: 35%; width: 18px; height: 24px;
  background: linear-gradient(180deg, #6a5030 0%, #4a3820 100%);
  border-radius: 10% 10% 40% 40%;
  box-shadow: 0 2px 6px rgba(0,0,0,0.3);
  transform: rotate(2deg);
  animation: jc-chair 8s ease-in-out infinite;
}
.scn-joe-delivering-compliments .sunbeam {
  position: absolute; top: 5%; left: 20%; width: 40%; height: 60%;
  background: linear-gradient(135deg, rgba(255,255,220,0.2) 0%, transparent 60%);
  clip-path: polygon(0% 0%, 100% 0%, 80% 100%, 0% 100%);
  animation: jc-sun 12s linear infinite alternate;
  mix-blend-mode: soft-light;
}
@keyframes jc-room { 0% { opacity:0.9 } 50% { opacity:1 } 100% { opacity:0.85 } }
@keyframes jc-window { 0% { transform: translateY(0) } 50% { transform: translateY(-3px) } 100% { transform: translateY(0) } }
@keyframes jc-joe { 0%,100% { transform: rotate(2deg) translateY(0) } 50% { transform: rotate(3deg) translateY(-2px) } }
@keyframes jc-pip { 0%,100% { transform: rotate(-1deg) } 50% { transform: rotate(0deg) translateY(-1px) } }
@keyframes jc-table { 0% { transform: perspective(400px) rotateX(15deg) } 50% { transform: perspective(400px) rotateX(18deg) } 100% { transform: perspective(400px) rotateX(15deg) } }
@keyframes jc-chair { 0%,100% { transform: rotate(2deg) } 50% { transform: rotate(3deg) translateY(-1px) } }
@keyframes jc-sun { 0% { opacity:0.2 } 50% { opacity:0.5 } 100% { opacity:0.1 } }

.scn-shame-of-home {
  background: linear-gradient(180deg, #2a2a4a 0%, #1a1a3a 40%, #0a0a1a 100%), radial-gradient(ellipse at 50% 30%, #1a1a3a 0%, transparent 70%);
  position: relative;
  overflow: hidden;
}
.scn-shame-of-home .dusk-sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #4a4a6a 0%, #2a2a4a 40%, #1a1a2e 100%);
  animation: sh-sky 18s ease-in-out infinite alternate;
}
.scn-shame-of-home .marsh {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #3a4a3a 0%, #1a2a1a 60%, #0a1a0a 100%);
  border-radius: 60% 40% 0 0 / 80% 70% 0 0;
  box-shadow: inset 0 10px 40px rgba(0,0,0,0.5);
  animation: sh-marsh 14s ease-in-out infinite alternate;
}
.scn-shame-of-home .church-steeple {
  position: absolute; bottom: 40%; left: 40%; width: 12px; height: 60px;
  background: linear-gradient(180deg, #1a1a2e 0%, #0a0a1a 100%);
  clip-path: polygon(0% 20%, 50% 0%, 100% 20%, 100% 100%, 0% 100%);
  box-shadow: 0 0 20px rgba(0,0,0,0.3);
  animation: sh-steeple 10s ease-in-out infinite;
}
.scn-shame-of-home .pip-silhouette {
  position: absolute; bottom: 38%; left: 50%; width: 16px; height: 35px;
  background: #0a0a1a;
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform: translateX(-50%);
  animation: sh-pip 6s ease-in-out infinite;
}
.scn-shame-of-home .gravestone-1 {
  position: absolute; bottom: 30%; left: 30%; width: 20px; height: 25px;
  background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%);
  border-radius: 30% 30% 10% 10% / 50% 50% 20% 20%;
  transform: rotate(5deg);
  animation: sh-stone1 12s ease-in-out infinite alternate;
}
.scn-shame-of-home .gravestone-2 {
  position: absolute; bottom: 32%; left: 60%; width: 18px; height: 20px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 30% 30% 10% 10% / 50% 50% 20% 20%;
  transform: rotate(-8deg);
  animation: sh-stone2 15s ease-in-out infinite alternate;
  animation-delay: -3s;
}
.scn-shame-of-home .moon {
  position: absolute; top: 15%; left: 70%; width: 30px; height: 30px;
  background: radial-gradient(circle at 30% 30%, #e0e8f0 0%, #a0b0c0 60%, #8090a0 100%);
  border-radius: 50%;
  box-shadow: 0 0 40px 10px rgba(200,210,230,0.3);
  animation: sh-moon 25s linear infinite;
}
.scn-shame-of-home .mist {
  position: absolute; bottom: 20%; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, rgba(200,210,230,0.15) 0%, transparent 100%);
  filter: blur(8px);
  animation: sh-mist 20s ease-in-out infinite alternate;
}
@keyframes sh-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.6 } }
@keyframes sh-marsh { 0% { transform: translateY(0) } 50% { transform: translateY(-3px) } 100% { transform: translateY(0) } }
@keyframes sh-steeple { 0%,100% { transform: rotate(0deg) } 50% { transform: rotate(1deg) translateY(-1px) } }
@keyframes sh-pip { 0%,100% { transform: translateX(-50%) rotate(0deg) } 50% { transform: translateX(-50%) rotate(-2deg) translateY(-2px) } }
@keyframes sh-stone1 { 0% { transform: rotate(5deg) translateY(0) } 50% { transform: rotate(6deg) translateY(-2px) } 100% { transform: rotate(5deg) translateY(0) } }
@keyframes sh-stone2 { 0% { transform: rotate(-8deg) translateY(0) } 50% { transform: rotate(-7deg) translateY(-3px) } 100% { transform: rotate(-8deg) translateY(0) } }
@keyframes sh-moon { 0% { transform: translateX(0) } 50% { transform: translateX(-10px) } 100% { transform: translateX(10px) } }
@keyframes sh-mist { 0% { opacity:0.2 } 50% { opacity:0.5 } 100% { opacity:0.3 } }

.scn-estella-richmond { background: linear-gradient(160deg, #f5e6c8 0%, #d4b896 40%, #a07858 100%), radial-gradient(ellipse at 60% 30%, #f0d8a0 0%, transparent 60%); }
.scn-estella-richmond .sky-glow { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #fce8b0 0%, #f5d890 50%, #e8c078 100%); animation: er-sky 8s ease-in-out infinite alternate; }
.scn-estella-richmond .carriage-frame { position:absolute; inset:8% 10% 12% 8%; border:8px solid #5a3a2a; border-radius:12% 12% 8% 8%; background: transparent; box-shadow: inset 0 0 40px rgba(40,20,10,.5); }
.scn-estella-richmond .seat { position:absolute; bottom:18%; left:15%; right:15%; height:22%; background: linear-gradient(180deg, #8a5a3a 0%, #6a4028 100%); border-radius:20% 20% 8% 8% / 40% 40% 20% 20%; box-shadow: 0 -4px 12px rgba(0,0,0,.3); }
.scn-estella-richmond .window-pane { position:absolute; top:14%; left:22%; right:22%; bottom:42%; background: linear-gradient(135deg, rgba(255,240,200,.6) 0%, rgba(200,170,120,.2) 100%); border:2px solid #8a6a4a; border-radius:4%; box-shadow: inset 0 0 30px rgba(255,230,180,.3); }
.scn-estella-richmond .figure-fur { position:absolute; bottom:22%; left:38%; width:28%; height:50%; background: linear-gradient(135deg, #6a4a3a 0%, #4a3020 50%, #3a2218 100%); border-radius:30% 30% 40% 40% / 50% 50% 30% 30%; transform-origin: bottom center; box-shadow: -4px 0 8px rgba(0,0,0,.3); animation: er-jostle 6s ease-in-out infinite; }
.scn-estella-richmond .figure-profile { position:absolute; bottom:30%; left:44%; width:8%; height:16%; background: linear-gradient(135deg, #f5d8b0 0%, #d4a878 100%); border-radius:50% 50% 30% 30% / 60% 60% 30% 30%; box-shadow: 2px 0 6px rgba(0,0,0,.2); animation: er-turn 9s ease-in-out infinite; }
.scn-estella-richmond .sunlight-shaft { position:absolute; top:0; left:20%; width:15%; bottom:40%; background: linear-gradient(180deg, rgba(255,240,200,.4) 0%, rgba(255,240,200,.05) 100%); transform: skewX(-8deg); filter: blur(6px); animation: er-shaft 12s ease-in-out infinite alternate; }
.scn-estella-richmond .dust-motes { position:absolute; top:10%; left:18%; width:50%; height:60%; background: radial-gradient(circle at 30% 40%, rgba(255,230,180,.15) 0%, transparent 60%); filter: blur(4px); animation: er-motes 15s linear infinite; }
.scn-estella-richmond .shadow-bar { position:absolute; top:30%; left:10%; width:4%; bottom:10%; background: linear-gradient(180deg, rgba(40,20,10,.5) 0%, transparent 100%); transform: skewX(6deg); animation: er-shadow 8s ease-in-out infinite alternate; }
@keyframes er-sky { 0% { opacity:.85 } 50% { opacity:1 } 100% { opacity:.9 } }
@keyframes er-jostle { 0% { transform: translateY(0) rotate(-1deg) } 25% { transform: translateY(-2px) rotate(0) } 50% { transform: translateY(0) rotate(1deg) } 75% { transform: translateY(-1px) rotate(0) } 100% { transform: translateY(0) rotate(-1deg) } }
@keyframes er-turn { 0% { transform: rotate(0) translateX(0) } 30% { transform: rotate(4deg) translateX(2px) } 70% { transform: rotate(-2deg) translateX(-1px) } 100% { transform: rotate(0) translateX(0) } }
@keyframes er-shaft { 0% { opacity:.3; transform: skewX(-8deg) translateX(0) } 50% { opacity:.6; transform: skewX(-8deg) translateX(4px) } 100% { opacity:.4; transform: skewX(-8deg) translateX(-2px) } }
@keyframes er-motes { 0% { transform: translateY(0) } 50% { transform: translateY(-8px) } 100% { transform: translateY(0) } }
@keyframes er-shadow { 0% { opacity:.3 } 50% { opacity:.6 } 100% { opacity:.4 } }

.scn-pocket-household-reflections { background: linear-gradient(180deg, #c8b898 0%, #a08868 50%, #786048 100%), radial-gradient(ellipse at 30% 40%, #d8c8a8 0%, transparent 70%); }
.scn-pocket-household-reflections .wall-panel { position:absolute; inset:0 5% 0 5%; background: linear-gradient(180deg, #d8c8a8 0%, #b8a888 60%, #987868 100%); border-left: 2px solid #8a7050; border-right: 2px solid #8a7050; }
.scn-pocket-household-reflections .ceiling-beam { position:absolute; top:0; left:0; right:0; height:6%; background: linear-gradient(180deg, #6a5040 0%, #5a4030 100%); box-shadow: 0 4px 8px rgba(0,0,0,.3); }
.scn-pocket-household-reflections .table { position:absolute; bottom:10%; left:20%; right:20%; height:8%; background: linear-gradient(180deg, #7a6048 0%, #5a4028 100%); border-radius:4% 4% 0 0; box-shadow: 0 -4px 12px rgba(0,0,0,.2); }
.scn-pocket-household-reflections .chair-shape { position:absolute; bottom:10%; left:55%; width:12%; height:30%; background: linear-gradient(180deg, #6a5038 0%, #4a3828 100%); border-radius:10% 10% 4% 4%; box-shadow: 2px 0 6px rgba(0,0,0,.2); }
.scn-pocket-household-reflections .figure-seated { position:absolute; bottom:16%; left:58%; width:10%; height:22%; background: linear-gradient(180deg, #3a3028 0%, #2a2018 100%); border-radius:40% 40% 30% 30% / 50% 50% 20% 20%; transform-origin: bottom center; box-shadow: -2px 0 8px rgba(0,0,0,.3); animation: ph-shift 7s ease-in-out infinite; }
.scn-pocket-household-reflections .figure-upward { position:absolute; bottom:18%; left:32%; width:8%; height:28%; background: linear-gradient(180deg, #4a3828 0%, #2a2018 100%); border-radius:40% 40% 30% 30% / 50% 50% 20% 20%; transform-origin: bottom center; box-shadow: 2px 0 8px rgba(0,0,0,.35); animation: ph-lookup 5s ease-in-out infinite; }
.scn-pocket-household-reflections .window-light { position:absolute; top:10%; right:8%; width:22%; height:35%; background: linear-gradient(135deg, rgba(220,200,160,.7) 0%, rgba(180,160,120,.1) 100%); border:2px solid #8a7050; border-radius:4%; box-shadow: inset 0 0 30px rgba(220,200,160,.2); animation: ph-light 10s ease-in-out infinite alternate; }
.scn-pocket-household-reflections .shadow-sharp { position:absolute; top:6%; left:30%; width:20%; bottom:10%; background: linear-gradient(135deg, rgba(40,20,10,.4) 0%, transparent 100%); transform: skewX(-12deg); filter: blur(2px); animation: ph-shadow 8s ease-in-out infinite alternate; }
@keyframes ph-shift { 0% { transform: translateY(0) rotate(0) } 30% { transform: translateY(-2px) rotate(-1deg) } 60% { transform: translateY(1px) rotate(1deg) } 100% { transform: translateY(0) rotate(0) } }
@keyframes ph-lookup { 0% { transform: translateY(0) rotate(0) scaleY(1) } 30% { transform: translateY(-4px) rotate(3deg) scaleY(1.02) } 70% { transform: translateY(-1px) rotate(-1deg) scaleY(.98) } 100% { transform: translateY(0) rotate(0) scaleY(1) } }
@keyframes ph-light { 0% { opacity:.6 } 50% { opacity:1 } 100% { opacity:.7 } }
@keyframes ph-shadow { 0% { opacity:.3; transform: skewX(-12deg) translateX(0) } 50% { opacity:.6; transform: skewX(-12deg) translateX(3px) } 100% { opacity:.4; transform: skewX(-12deg) translateX(-2px) } }

.scn-finches-club-debts { background: linear-gradient(180deg, #2a2020 0%, #3a2828 40%, #4a3030 100%), radial-gradient(ellipse at 50% 30%, #5a3838 0%, transparent 60%); }
.scn-finches-club-debts .room-depth { position:absolute; inset:0 6% 0 6%; background: linear-gradient(160deg, #4a3530 0%, #3a2820 60%, #2a1810 100%); border-left:2px solid #6a4840; border-right:2px solid #6a4840; }
.scn-finches-club-debts .table-felt { position:absolute; bottom:12%; left:18%; right:18%; height:12%; background: linear-gradient(180deg, #3a6040 0%, #2a4830 100%); border-radius:30% 30% 4% 4% / 60% 60% 10% 10%; box-shadow: 0 -4px 16px rgba(0,0,0,.5), inset 0 2px 6px rgba(80,160,80,.15); }
.scn-finches-club-debts .cards-fanned { position:absolute; bottom:18%; left:28%; width:18%; height:8%; background: linear-gradient(90deg, #f0e8d8 0%, #d8c8a8 40%, #f0e0c8 80%, #d8c8a8 100%); border-radius:6% 6% 4% 4%; box-shadow: 2px 2px 6px rgba(0,0,0,.4); transform: rotate(-8deg); animation: fc-cards 10s ease-in-out infinite; }
.scn-finches-club-debts .coin-pile { position:absolute; bottom:14%; left:45%; width:10%; height:6%; background: radial-gradient(circle at 40% 40%, #e8d080 0%, #c8a850 60%, #a08830 100%); border-radius:50%; box-shadow: 0 2px 8px rgba(0,0,0,.5); animation: fc-coins 6s ease-in-out infinite; }
.scn-finches-club-debts .figure-lean { position:absolute; bottom:14%; left:36%; width:10%; height:30%; background: linear-gradient(180deg, #3a2820 0%, #1a1010 100%); border-radius:40% 40% 30% 30% / 50% 50% 20% 20%; transform-origin: bottom center; transform: rotate(6deg); box-shadow: -3px 0 8px rgba(0,0,0,.4); animation: fc-lean 8s ease-in-out infinite; }
.scn-finches-club-debts .figure-shadow { position:absolute; bottom:14%; left:54%; width:12%; height:32%; background: linear-gradient(180deg, #2a1a1a 0%, #0a0808 100%); border-radius:40% 40% 30% 30% / 50% 50% 20% 20%; transform-origin: bottom center; transform: rotate(-4deg); box-shadow: 3px 0 12px rgba(0,0,0,.5); animation: fc-shadow-fig 9s ease-in-out infinite; }
.scn-finches-club-debts .chandelier { position:absolute; top:4%; left:35%; width:30%; height:12%; background: radial-gradient(ellipse at 50% 0%, #8a7050 0%, #6a5038 60%, transparent 100%); border-radius:0 0 50% 50%; box-shadow: 0 8px 20px rgba(0,0,0,.3); }
.scn-finches-club-debts .candle-flame { position:absolute; top:6%; left:46%; width:2%; height:4%; background: radial-gradient(circle, #ffd080 0%, #e8a040 40%, #8a5020 100%); border-radius:50%; box-shadow: 0 0 20px 6px rgba(232,160,64,.5); animation: fc-flame 3s ease-in-out infinite alternate; }
.scn-finches-club-debts .smoke-wisp { position:absolute; top:2%; left:44%; width:6%; height:8%; background: radial-gradient(circle, rgba(160,140,120,.15) 0%, transparent 70%); filter: blur(4px); animation: fc-smoke 12s ease-in-out infinite; }
@keyframes fc-cards { 0% { transform: rotate(-8deg) translateY(0) } 50% { transform: rotate(-5deg) translateY(-2px) } 100% { transform: rotate(-8deg) translateY(0) } }
@keyframes fc-coins { 0% { box-shadow: 0 2px 8px rgba(0,0,0,.5); transform: scaleY(1) } 50% { box-shadow: 0 4px 12px rgba(0,0,0,.6); transform: scaleY(1.05) } 100% { box-shadow: 0 2px 8px rgba(0,0,0,.5); transform: scaleY(1) } }
@keyframes fc-lean { 0% { transform: rotate(6deg) translateY(0) } 30% { transform: rotate(4deg) translateY(-1px) } 70% { transform: rotate(8deg) translateY(1px) } 100% { transform: rotate(6deg) translateY(0) } }
@keyframes fc-shadow-fig { 0% { transform: rotate(-4deg) translateY(0) } 40% { transform: rotate(-2deg) translateY(-2px) } 80% { transform: rotate(-6deg) translateY(1px) } 100% { transform: rotate(-4deg) translateY(0) } }
@keyframes fc-flame { 0% { transform: scaleY(1); opacity:.8 } 50% { transform: scaleY(1.2) scaleX(.9); opacity:1 } 100% { transform: scaleY(.9) scaleX(1.1); opacity:.85 } }
@keyframes fc-smoke { 0% { transform: translateY(0) translateX(0); opacity:.3 } 50% { transform: translateY(-6px) translateX(4px); opacity:.1 } 100% { transform: translateY(0) translateX(0); opacity:.3 } }

.scn-sisters-death-notice { background: linear-gradient(180deg, #1a1210 0%, #2a1a18 40%, #181010 100%), radial-gradient(ellipse at 50% 30%, #3a2018 0%, transparent 70%); }
.scn-sisters-death-notice .wall-dark { position:absolute; inset:0 4% 0 4%; background: linear-gradient(180deg, #2a1e1a 0%, #1a1210 80%); border-left: 1px solid #3a2820; border-right: 1px solid #3a2820; }
.scn-sisters-death-notice .floor-planks { position:absolute; bottom:0; left:0; right:0; height:12%; background: linear-gradient(180deg, #2a1a14 0%, #1a0e0a 100%); box-shadow: 0 -2px 8px rgba(0,0,0,.6); }
.scn-sisters-death-notice .candle-stick { position:absolute; bottom:16%; left:44%; width:4%; height:18%; background: linear-gradient(180deg, #6a5040 0%, #4a3828 100%); border-radius:4% 4% 8% 8%; box-shadow: 0 2px 6px rgba(0,0,0,.4); }
.scn-sisters-death-notice .candle-tear { position:absolute; bottom:32%; left:46%; width:1.5%; height:3%; background: radial-gradient(circle, #c8a060 0%, #8a6830 100%); border-radius:50%; box-shadow: 0 4px 2px -2px #4a3018; animation: sd-drip 10s ease-in-out infinite; }
.scn-sisters-death-notice .notice-page { position:absolute; bottom:24%; left:30%; width:28%; height:16%; background: linear-gradient(135deg, #e8dcc8 0%, #d4c8a8 100%); border-radius:2%; box-shadow: 0 4px 12px rgba(0,0,0,.7), inset 0 0 20px rgba(80,60,40,.1); transform: rotate(-2deg); animation: sd-tremble 8s ease-in-out infinite; }
.scn-sisters-death-notice .seal-wax { position:absolute; bottom:28%; left:48%; width:4%; height:3%; background: radial-gradient(circle, #c84040 0%, #8a2020 100%); border-radius:50%; box-shadow: 0 0 6px rgba(200,64,64,.3); animation: sd-seal 12s ease-in-out infinite; }
.scn-sisters-death-notice .hand-reach { position:absolute; bottom:18%; left:62%; width:8%; height:14%; background: linear-gradient(180deg, #c8a888 0%, #a08060 100%); border-radius:50% 40% 30% 30% / 60% 50% 20% 20%; transform-origin: bottom center; transform: rotate(10deg); box-shadow: -2px 0 8px rgba(0,0,0,.3); animation: sd-reach 7s ease-in-out infinite; }
.scn-sisters-death-notice .shadow-heavy { position:absolute; bottom:10%; left:20%; width:40%; height:30%; background: radial-gradient(ellipse at 50% 0%, rgba(0,0,0,.5) 0%, transparent 70%); animation: sd-shadow 9s ease-in-out infinite alternate; }
@keyframes sd-drip { 0% { height:3%; opacity:.7 } 30% { height:5%; opacity:.5 } 60% { height:3%; opacity:.8 } 100% { height:3%; opacity:.7 } }
@keyframes sd-tremble { 0% { transform: rotate(-2deg) translateY(0) } 25% { transform: rotate(-1deg) translateY(-1px) } 50% { transform: rotate(-3deg) translateY(0) } 75% { transform: rotate(-1deg) translateY(-1px) } 100% { transform: rotate(-2deg) translateY(0) } }
@keyframes sd-seal { 0% { opacity:.7 } 50% { opacity:1 } 100% { opacity:.8 } }
@keyframes sd-reach { 0% { transform: rotate(10deg) translateY(0) } 30% { transform: rotate(8deg) translateY(-3px) } 60% { transform: rotate(12deg) translateY(-1px) } 100% { transform: rotate(10deg) translateY(0) } }
@keyframes sd-shadow { 0% { opacity:.3 } 50% { opacity:.6 } 100% { opacity:.4 } }

/* Scene 1: jaggers-coming-of-age */
.scn-jaggers-coming-of-age {
  background:
    linear-gradient(180deg, #e8dcc8 0%, #c4b49a 30%, #a8947a 100%),
    radial-gradient(ellipse at 50% 100%, #e0d0b0 0%, transparent 70%);
}
.scn-jaggers-coming-of-age .floor {
  position:absolute; bottom:0; left:0; right:0; height:30%;
  background: linear-gradient(180deg, #8a7355 0%, #5e4d36 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,.3);
  animation: jca-floor 14s ease-in-out infinite alternate;
}
.scn-jaggers-coming-of-age .wall {
  position:absolute; top:0; left:0; right:0; height:70%;
  background: linear-gradient(180deg, #d4c4a8 0%, #b8a68a 100%);
  box-shadow: inset 0 0 40px rgba(0,0,0,.15);
}
.scn-jaggers-coming-of-age .ceiling {
  position:absolute; top:0; left:0; right:0; height:20%;
  background: linear-gradient(180deg, #f0ebe0 0%, #d8ceb8 100%);
  border-radius: 0 0 30% 30%;
  box-shadow: 0 10px 30px rgba(0,0,0,.2);
}
.scn-jaggers-coming-of-age .desk {
  position:absolute; bottom:30%; left:20%; width:60%; height:12%;
  background: linear-gradient(180deg, #6a4f36 0%, #4a3520 100%);
  border-radius: 4% 4% 2% 2%;
  transform: perspective(800px) rotateX(10deg);
  box-shadow: 0 8px 16px rgba(0,0,0,.5);
  animation: jca-desk 9s ease-in-out infinite;
}
.scn-jaggers-coming-of-age .chair {
  position:absolute; bottom:34%; left:35%; width:20%; height:18%;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: jca-chair 5s ease-in-out infinite alternate;
}
.scn-jaggers-coming-of-age .jaggers-figure {
  position:absolute; bottom:34%; left:42%; width:12%; height:40%;
  background: linear-gradient(180deg, #2c2c24 0%, #14140e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: jca-figure 7s ease-in-out infinite;
  box-shadow: inset 0 0 20px rgba(0,0,0,.6);
}
.scn-jaggers-coming-of-age .handkerchief {
  position:absolute; bottom:48%; left:44%; width:8%; height:6%;
  background: radial-gradient(circle at 50% 30%, #f0e8d8 0%, #d8c8b0 100%);
  border-radius: 50% 50% 40% 40%;
  transform-origin: top center;
  animation: jca-handkerchief 4s ease-in-out infinite alternate;
  box-shadow: 0 4px 8px rgba(0,0,0,.3);
}
.scn-jaggers-coming-of-age .shadow-strip {
  position:absolute; bottom:30%; left:0; right:0; height:4%;
  background: linear-gradient(180deg, rgba(0,0,0,.25) 0%, transparent 100%);
  animation: jca-shadow 10s ease-in-out infinite alternate;
}
.scn-jaggers-coming-of-age .light-beam {
  position:absolute; top:10%; left:30%; width:40%; height:60%;
  background: linear-gradient(135deg, rgba(255,255,230,.4) 0%, transparent 100%);
  clip-path: polygon(0% 0%, 100% 0%, 80% 100%, 20% 100%);
  animation: jca-beam 8s ease-in-out infinite alternate;
}
@keyframes jca-floor { 0% { transform: translateY(0); } 50% { transform: translateY(-4px); } 100% { transform: translateY(2px); } }
@keyframes jca-desk { 0%,100% { transform: perspective(800px) rotateX(10deg) translateY(0); } 50% { transform: perspective(800px) rotateX(8deg) translateY(-2px); } }
@keyframes jca-chair { 0% { transform: translateY(0) rotate(0deg); } 25% { transform: translateY(-2px) rotate(2deg); } 75% { transform: translateY(1px) rotate(-1deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes jca-figure { 0% { transform: translateY(0) rotate(0deg); } 30% { transform: translateY(-2px) rotate(1deg); } 60% { transform: translateY(1px) rotate(-0.5deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes jca-handkerchief { 0% { transform: translateY(0) rotate(0deg) scale(1); } 50% { transform: translateY(-6px) rotate(15deg) scale(1.1); } 100% { transform: translateY(-2px) rotate(5deg) scale(0.95); } }
@keyframes jca-shadow { 0% { opacity: 0.5; } 50% { opacity: 0.8; } 100% { opacity: 0.4; } }
@keyframes jca-beam { 0% { opacity: 0.3; transform: translateX(0); } 50% { opacity: 0.6; transform: translateX(10px); } 100% { opacity: 0.2; transform: translateX(-5px); } }

/* Scene 2: jaggers-office-banknote */
.scn-jaggers-office-banknote {
  background:
    linear-gradient(180deg, #1f2638 0%, #2a344a 40%, #3a4660 100%),
    radial-gradient(ellipse at 50% 80%, #4a5a78 0%, transparent 70%);
}
.scn-jaggers-office-banknote .floor {
  position:absolute; bottom:0; left:0; right:0; height:30%;
  background: linear-gradient(180deg, #3a3a2a 0%, #1e1e14 100%);
  border-radius: 10% 10% 0 0;
}
.scn-jaggers-office-banknote .wall {
  position:absolute; top:0; left:0; right:0; height:70%;
  background: linear-gradient(180deg, #2a2a38 0%, #1a1a28 100%);
  box-shadow: inset 0 0 60px rgba(0,0,0,.6);
}
.scn-jaggers-office-banknote .desk {
  position:absolute; bottom:28%; left:15%; width:70%; height:14%;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0e 100%);
  border-radius: 4% 4% 2% 2%;
  transform: perspective(600px) rotateX(15deg);
  box-shadow: 0 8px 20px rgba(0,0,0,.7);
  animation: job-desk 11s ease-in-out infinite;
}
.scn-jaggers-office-banknote .chair {
  position:absolute; bottom:32%; left:40%; width:18%; height:20%;
  background: linear-gradient(180deg, #1a1a14 0%, #0a0a08 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: job-chair 6s ease-in-out infinite alternate;
}
.scn-jaggers-office-banknote .banknote {
  position:absolute; bottom:34%; left:45%; width:14%; height:8%;
  background: linear-gradient(135deg, #c0a080 0%, #e8d4b0 50%, #b89870 100%);
  border-radius: 5%;
  transform: rotate(10deg);
  box-shadow: 0 0 20px 6px rgba(200,170,120,.5), 0 4px 8px rgba(0,0,0,.6);
  animation: job-banknote 8s ease-in-out infinite alternate;
}
.scn-jaggers-office-banknote .glow-spot {
  position:absolute; bottom:30%; left:44%; width:20%; height:20%;
  background: radial-gradient(circle at 50% 50%, rgba(220,200,160,.5) 0%, transparent 70%);
  animation: job-glow 5s ease-in-out infinite alternate;
}
.scn-jaggers-office-banknote .figure-hand {
  position:absolute; bottom:38%; left:48%; width:8%; height:12%;
  background: linear-gradient(180deg, #1a1a14 0%, #0e0e0a 100%);
  border-radius: 30% 30% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: job-hand 4s ease-in-out infinite;
}
.scn-jaggers-office-banknote .wemmick-shadow {
  position:absolute; bottom:28%; left:60%; width:20%; height:40%;
  background: linear-gradient(180deg, rgba(0,0,0,.5) 0%, transparent 100%);
  clip-path: polygon(0% 0%, 100% 0%, 80% 100%, 20% 100%);
  animation: job-shadow 7s ease-in-out infinite alternate;
}
@keyframes job-desk { 0%,100% { transform: perspective(600px) rotateX(15deg) translateY(0); } 50% { transform: perspective(600px) rotateX(13deg) translateY(-3px); } }
@keyframes job-chair { 0% { transform: translateY(0) rotate(0deg); } 30% { transform: translateY(-3px) rotate(3deg); } 70% { transform: translateY(2px) rotate(-2deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes job-banknote { 0% { transform: rotate(10deg) scale(1) translateY(0); } 50% { transform: rotate(6deg) scale(1.05) translateY(-4px); } 100% { transform: rotate(12deg) scale(0.95) translateY(2px); } }
@keyframes job-glow { 0% { opacity: 0.4; transform: scale(1); } 50% { opacity: 0.8; transform: scale(1.2); } 100% { opacity: 0.3; transform: scale(0.9); } }
@keyframes job-hand { 0% { transform: translateY(0) rotate(0deg); } 25% { transform: translateY(-5px) rotate(-5deg); } 75% { transform: translateY(3px) rotate(5deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes job-shadow { 0% { opacity: 0.5; } 50% { opacity: 0.8; } 100% { opacity: 0.4; } }

/* Scene 3: jaggers-office-future */
.scn-jaggers-office-future {
  background:
    linear-gradient(180deg, #1a1a2e 0%, #2a2a4a 40%, #3a3a5a 100%),
    radial-gradient(ellipse at 50% 80%, #4a4a6a 0%, transparent 70%);
}
.scn-jaggers-office-future .floor {
  position:absolute; bottom:0; left:0; right:0; height:25%;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a28 100%);
  border-radius: 5% 5% 0 0;
}
.scn-jaggers-office-future .wall {
  position:absolute; top:0; left:0; right:0; height:75%;
  background: linear-gradient(180deg, #222240 0%, #181838 100%);
  box-shadow: inset 0 0 80px rgba(0,0,0,.7);
}
.scn-jaggers-office-future .desk {
  position:absolute; bottom:25%; left:10%; width:80%; height:12%;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0e0a 100%);
  border-radius: 6% 6% 3% 3%;
  box-shadow: 0 8px 20px rgba(0,0,0,.8);
  animation: jof-desk 12s ease-in-out infinite;
}
.scn-jaggers-office-future .hourglass {
  position:absolute; bottom:34%; left:30%; width:12%; height:20%;
  background: linear-gradient(180deg, #c8b898 0%, #a89070 100%);
  border-radius: 20% 20% 20% 20% / 40% 40% 40% 40%;
  clip-path: polygon(20% 0%, 80% 0%, 80% 40%, 20% 40%);
  box-shadow: 0 0 20px 4px rgba(200,180,120,.4);
  animation: jof-hourglass 9s ease-in-out infinite alternate;
}
.scn-jaggers-office-future .hourglass::after {
  content: '';
  position:absolute; bottom:0; left:0; right:0; height:60%;
  background: linear-gradient(180deg, transparent 0%, rgba(200,180,120,.3) 100%);
  clip-path: polygon(20% 60%, 80% 60%, 80% 100%, 20% 100%);
}
.scn-jaggers-office-future .papers-stack {
  position:absolute; bottom:28%; left:55%; width:20%; height:14%;
  background: linear-gradient(135deg, #d4c8b0 0%, #b8a890 50%, #a09078 100%);
  border-radius: 4%;
  box-shadow: 2px 2px 6px rgba(0,0,0,.5);
  animation: jof-papers 7s ease-in-out infinite alternate;
}
.scn-jaggers-office-future .figure-silhouette {
  position:absolute; bottom:30%; left:45%; width:14%; height:45%;
  background: linear-gradient(180deg, #0e0e1a 0%, #06060e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: jof-figure 8s ease-in-out infinite;
}
.scn-jaggers-office-future .clock-face {
  position:absolute; top:15%; right:15%; width:15%; height:20%;
  background: radial-gradient(circle at 50% 50%, #d8c8a0 0%, #a89070 100%);
  border-radius: 50%;
  box-shadow: 0 0 30px rgba(200,180,120,.3);
  animation: jof-clock 15s linear infinite;
}
.scn-jaggers-office-future .pendulum {
  position:absolute; top:15%; right:15%; width:2%; height:30%;
  background: linear-gradient(180deg, #8a7a5a 0%, #5a4a2a 100%);
  transform-origin: top center;
  border-radius: 40%;
  animation: jof-pendulum 5s ease-in-out infinite alternate;
}
@keyframes jof-desk { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-3px); } }
@keyframes jof-hourglass { 0% { transform: scaleY(1) rotate(0deg); } 50% { transform: scaleY(0.9) rotate(5deg); } 100% { transform: scaleY(0.95) rotate(-3deg); } }
@keyframes jof-papers { 0% { transform: translateY(0) rotate(0deg); } 30% { transform: translateY(-4px) rotate(3deg); } 70% { transform: translateY(2px) rotate(-2deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes jof-figure { 0% { transform: translateY(0) rotate(0deg); } 25% { transform: translateY(-2px) rotate(2deg); } 75% { transform: translateY(0) rotate(-1deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes jof-clock { 0% { transform: rotate(0deg); } 50% { transform: rotate(180deg); } 100% { transform: rotate(360deg); } }
@keyframes jof-pendulum { 0% { transform: rotate(-20deg); } 50% { transform: rotate(20deg); } 100% { transform: rotate(-20deg); } }

/* Scene 4: jaggers-office-wemmick-advice */
.scn-jaggers-office-wemmick-advice {
  background:
    linear-gradient(180deg, #0e0e1a 0%, #1a1a30 40%, #2a2a4a 100%),
    radial-gradient(ellipse at 50% 80%, #3a3a5a 0%, transparent 70%);
}
.scn-jaggers-office-wemmick-advice .floor {
  position:absolute; bottom:0; left:0; right:0; height:30%;
  background: linear-gradient(180deg, #1a1a28 0%, #0e0e1a 100%);
  border-radius: 15% 15% 0 0;
}
.scn-jaggers-office-wemmick-advice .wall {
  position:absolute; top:0; left:0; right:0; height:70%;
  background: linear-gradient(180deg, #18182c 0%, #0e0e1c 100%);
  box-shadow: inset 0 0 100px rgba(0,0,0,.8);
}
.scn-jaggers-office-wemmick-advice .desk {
  position:absolute; bottom:28%; left:20%; width:60%; height:14%;
  background: linear-gradient(180deg, #2a1a12 0%, #120a06 100%);
  border-radius: 4% 4% 2% 2%;
  box-shadow: 0 6px 14px rgba(0,0,0,.9);
  animation: jow-desk 13s ease-in-out infinite;
}
.scn-jaggers-office-wemmick-advice .bridge-arch {
  position:absolute; bottom:20%; left:10%; width:80%; height:60%;
  background: linear-gradient(135deg, #1e1e2e 0%, #2a2a42 100%);
  clip-path: polygon(0% 100%, 0% 40%, 20% 30%, 40% 40%, 60% 30%, 80% 40%, 100% 40%, 100% 100%);
  animation: jow-bridge 15s ease-in-out infinite alternate;
}
.scn-jaggers-office-wemmick-advice .river {
  position:absolute; bottom:0; left:0; right:0; height:20%;
  background: linear-gradient(180deg, #1a1a3a 0%, #0e0e2e 100%);
  border-radius: 0 0 50% 50% / 0 0 30% 30%;
  animation: jow-river 20s linear infinite;
}
.scn-jaggers-office-wemmick-advice .coin {
  position:absolute; bottom:18%; left:50%; width:6%; height:6%;
  background: radial-gradient(circle at 40% 40%, #d4b888 0%, #a08050 100%);
  border-radius: 50%;
  box-shadow: 0 0 12px 4px rgba(180,140,80,.6);
  animation: jow-coin 6s ease-in-out infinite alternate;
}
.scn-jaggers-office-wemmick-advice .wemmick-hand {
  position:absolute; bottom:34%; left:60%; width:10%; height:22%;
  background: linear-gradient(180deg, #1a1a14 0%, #0a0a08 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: top center;
  animation: jow-hand 5s ease-in-out infinite;
}
.scn-jaggers-office-wemmick-advice .shadow-figure {
  position:absolute; bottom:30%; left:35%; width:15%; height:50%;
  background: linear-gradient(180deg, #06060e 0%, #02020a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: jow-shadow-figure 9s ease-in-out infinite;
}
@keyframes jow-desk { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-2px); } }
@keyframes jow-bridge { 0% { transform: scaleY(1); } 50% { transform: scaleY(0.95); } 100% { transform: scaleY(1.02); } }
@keyframes jow-river { 0% { background-position: 0% 0%; } 100% { background-position: -100% 0%; } }
@keyframes jow-coin { 0% { transform: translateY(0) rotate(0deg) scale(1); } 50% { transform: translateY(-8px) rotate(180deg) scale(1.2); } 100% { transform: translateY(-2px) rotate(360deg) scale(0.9); } }
@keyframes jow-hand { 0% { transform: rotate(0deg); } 30% { transform: rotate(-15deg); } 70% { transform: rotate(10deg); } 100% { transform: rotate(0deg); } }
@keyframes jow-shadow-figure { 0% { transform: translateY(0) rotate(0deg); } 25% { transform: translateY(-2px) rotate(3deg); } 75% { transform: translateY(1px) rotate(-2deg); } 100% { transform: translateY(0) rotate(0deg); } }

/* jaggers-at-miss-havisham */
.scn-jaggers-at-miss-havisham {
  background: linear-gradient(135deg, #1a1820 0%, #2c2530 30%, #1e1a24 70%, #0f0d12 100%),
              radial-gradient(ellipse at 50% 80%, #3a2f3a 0%, transparent 60%);
}
.scn-jaggers-at-miss-havisham .wall {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(180deg, #2a2228 0%, #1a161c 100%);
  border-bottom: 4px solid #4a3a4a;
}
.scn-jaggers-at-miss-havisham .window {
  position: absolute; top: 15%; left: 10%; width: 22%; height: 35%;
  background: linear-gradient(135deg, #3a4a5a 0%, #2a3040 100%);
  border: 3px solid #5a4a5a; border-radius: 6px;
  box-shadow: inset 0 0 12px rgba(0,0,0,0.7);
  animation: s1-window 10s ease-in-out infinite alternate;
}
.scn-jaggers-at-miss-havisham .chair {
  position: absolute; bottom: 32%; left: 35%; width: 20%; height: 30%;
  background: linear-gradient(180deg, #4a3a3a 0%, #2a2222 100%);
  border-radius: 10% 10% 30% 30% / 20% 20% 50% 50%;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.6);
  transform: rotate(-3deg);
  animation: s1-chair 6s ease-in-out infinite;
}
.scn-jaggers-at-miss-havisham .figure {
  position: absolute; bottom: 32%; left: 38%; width: 12%; height: 28%;
  background: linear-gradient(180deg, #5a4a4a 0%, #3a2a2a 60%, #2a1a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: scale(0.85);
  animation: s1-figure 4s ease-in-out infinite alternate;
}
.scn-jaggers-at-miss-havisham .hand {
  position: absolute; bottom: 34%; left: 52%; width: 14%; height: 18%;
  background: linear-gradient(180deg, #6a5550 0%, #4a3a3a 100%);
  border-radius: 40% 20% 30% 30% / 60% 40% 30% 30%;
  transform: rotate(-15deg);
  animation: s1-hand 7s ease-in-out infinite;
}
.scn-jaggers-at-miss-havisham .candle {
  position: absolute; bottom: 28%; left: 62%; width: 3%; height: 12%;
  background: linear-gradient(180deg, #c0a080 0%, #8a6a4a 100%);
  border-radius: 20%;
  box-shadow: 0 0 20px 6px #d0a070, 0 0 40px 12px rgba(200,160,100,0.4);
  animation: s1-candle 3s ease-in-out infinite alternate;
}
.scn-jaggers-at-miss-havisham .table {
  position: absolute; bottom: 28%; left: 58%; width: 16%; height: 6%;
  background: linear-gradient(180deg, #4a3a30 0%, #2a2218 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: 0 4px 8px rgba(0,0,0,0.5);
}
@keyframes s1-window {
  0% { opacity: 0.6; filter: brightness(0.8); }
  50% { opacity: 0.8; filter: brightness(1.1); }
  100% { opacity: 0.5; filter: brightness(0.9); }
}
@keyframes s1-chair {
  0% { transform: rotate(-3deg); }
  50% { transform: rotate(-1deg) translateY(-2px); }
  100% { transform: rotate(-4deg); }
}
@keyframes s1-figure {
  0% { transform: scale(0.85) translateY(0); }
  50% { transform: scale(0.87) translateY(-3px); }
  100% { transform: scale(0.84) translateY(2px); }
}
@keyframes s1-hand {
  0% { transform: rotate(-15deg) translateX(0); }
  50% { transform: rotate(-10deg) translateX(5px); }
  100% { transform: rotate(-18deg) translateX(3px); }
}
@keyframes s1-candle {
  0% { opacity: 0.9; box-shadow: 0 0 15px 4px #d0a070; }
  50% { opacity: 1; box-shadow: 0 0 25px 8px #e0b080; }
  100% { opacity: 0.85; box-shadow: 0 0 12px 3px #c09060; }
}

/* jaggers-commentary */
.scn-jaggers-commentary {
  background: linear-gradient(180deg, #0f0d18 0%, #1a1a28 40%, #12101e 70%, #0a0812 100%),
              radial-gradient(ellipse at 50% 100%, #2a2a40 0%, transparent 80%);
}
.scn-jaggers-commentary .stairwall {
  position: absolute; inset: 0 0 0 0;
  background: linear-gradient(90deg, #1a1a28 0%, #12101e 30%, #1a1a28 100%);
}
.scn-jaggers-commentary .stairs {
  position: absolute; bottom: 0; left: 10%; right: 10%; height: 100%;
  background: repeating-linear-gradient(0deg, #2a2a3a 0px, #2a2a3a 8%, #1a1a2a 8%, #1a1a2a 12%);
  animation: s2-stairs 20s linear infinite;
}
.scn-jaggers-commentary .railing {
  position: absolute; left: 55%; top: 0; bottom: 0; width: 4%;
  background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 100%);
  border-radius: 10px;
  box-shadow: 0 0 8px rgba(0,0,0,0.8);
  animation: s2-railing 8s ease-in-out infinite;
}
.scn-jaggers-commentary .descending-figure {
  position: absolute; top: 25%; left: 45%; width: 8%; height: 15%;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: s2-descend 10s ease-in-out infinite;
}
.scn-jaggers-commentary .lantern {
  position: absolute; top: 15%; left: 60%; width: 5%; height: 8%;
  background: radial-gradient(circle, #d0b060 0%, #806030 70%);
  border-radius: 50%;
  box-shadow: 0 0 30px 10px #b08040, 0 0 60px 20px rgba(200,160,80,0.3);
  animation: s2-lantern 4s ease-in-out infinite alternate;
}
.scn-jaggers-commentary .door {
  position: absolute; bottom: 5%; left: 30%; width: 12%; height: 20%;
  background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 100%);
  border-radius: 8% 8% 0 0;
  box-shadow: inset 0 4px 12px rgba(0,0,0,0.6);
  animation: s2-door 15s ease-in-out infinite;
}
@keyframes s2-stairs {
  0% { opacity: 0.7; }
  50% { opacity: 0.9; }
  100% { opacity: 0.7; }
}
@keyframes s2-railing {
  0% { transform: scaleY(1); }
  50% { transform: scaleY(1.03); }
  100% { transform: scaleY(0.97); }
}
@keyframes s2-descend {
  0% { transform: translateY(0) scale(1); }
  50% { transform: translateY(10%) scale(0.95); }
  100% { transform: translateY(0) scale(1); }
}
@keyframes s2-lantern {
  0% { transform: translateX(0) rotate(-5deg); opacity: 0.8; }
  50% { transform: translateX(8%) rotate(5deg); opacity: 1; }
  100% { transform: translateX(-4%) rotate(-3deg); opacity: 0.9; }
}
@keyframes s2-door {
  0% { transform: scale(1); }
  50% { transform: scale(1.02) translateY(-2px); }
  100% { transform: scale(0.98) translateY(2px); }
}

/* night-thoughts-of-estella */
.scn-night-thoughts-of-estella {
  background: linear-gradient(180deg, #0c0e1a 0%, #151a28 50%, #0e121e 100%),
              radial-gradient(ellipse at 30% 20%, #2a3040 0%, transparent 70%);
}
.scn-night-thoughts-of-estella .room {
  position: absolute; inset: 0 0 0 0;
  background: linear-gradient(135deg, #1a1e2a 0%, #0e121a 100%);
}
.scn-night-thoughts-of-estella .moonlight {
  position: absolute; top: 0; left: 15%; width: 25%; height: 100%;
  background: linear-gradient(180deg, rgba(200,210,230,0.15) 0%, transparent 80%);
  filter: blur(12px);
  animation: s3-moonlight 12s ease-in-out infinite alternate;
}
.scn-night-thoughts-of-estella .bed {
  position: absolute; bottom: 5%; left: 20%; right: 20%; height: 45%;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 30% 30% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.6);
}
.scn-night-thoughts-of-estella .pillow {
  position: absolute; bottom: 30%; left: 35%; width: 20%; height: 15%;
  background: linear-gradient(135deg, #3a3a4a 0%, #2a2a3a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform: rotate(5deg);
  animation: s3-pillow 8s ease-in-out infinite;
}
.scn-night-thoughts-of-estella .figure {
  position: absolute; bottom: 10%; left: 38%; width: 12%; height: 28%;
  background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 60%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: rotate(-10deg);
  animation: s3-figure 6s ease-in-out infinite alternate;
}
.scn-night-thoughts-of-estella .heart-glow {
  position: absolute; top: 40%; left: 45%; width: 8%; height: 8%;
  background: radial-gradient(circle, #d07070 0%, #a05050 40%, #703030 70%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 40px 10px #a05050, 0 0 80px 20px rgba(160,80,80,0.4);
  animation: s3-heart 3s ease-in-out infinite;
}
@keyframes s3-moonlight {
  0% { opacity: 0.6; transform: translateX(-10px); }
  50% { opacity: 0.9; transform: translateX(0px); }
  100% { opacity: 0.5; transform: translateX(15px); }
}
@keyframes s3-pillow {
  0% { transform: rotate(5deg) scale(1); }
  50% { transform: rotate(2deg) scale(1.03); }
  100% { transform: rotate(7deg) scale(0.97); }
}
@keyframes s3-figure {
  0% { transform: rotate(-10deg) translateY(0); }
  50% { transform: rotate(-8deg) translateY(-4px); }
  100% { transform: rotate(-12deg) translateY(2px); }
}
@keyframes s3-heart {
  0% { transform: scale(0.8); opacity: 0.7; }
  50% { transform: scale(1.2); opacity: 1; }
  100% { transform: scale(0.9); opacity: 0.8; }
}

/* jaggers-orlick-dismissal */
.scn-jaggers-orlick-dismissal {
  background: linear-gradient(180deg, #3a2a1a 0%, #4a3a2a 30%, #3a2a1a 60%, #2a1a0a 100%),
              radial-gradient(ellipse at 50% 30%, #6a5a4a 0%, transparent 70%);
}
.scn-jaggers-orlick-dismissal .office-wall {
  position: absolute; inset: 0 0 0 0;
  background: linear-gradient(90deg, #4a3a2a 0%, #5a4a3a 20%, #4a3a2a 80%, #3a2a1a 100%);
  box-shadow: inset 0 0 40px rgba(0,0,0,0.5);
}
.scn-jaggers-orlick-dismissal .desk {
  position: absolute; bottom: 10%; left: 15%; right: 15%; height: 20%;
  background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%);
  border-radius: 8px 8px 0 0;
  box-shadow: 0 6px 12px rgba(0,0,0,0.6);
  animation: s4-desk 10s ease-in-out infinite;
}
.scn-jaggers-orlick-dismissal .lamp {
  position: absolute; bottom: 30%; left: 30%; width: 6%; height: 15%;
  background: linear-gradient(180deg, #c0a060 0%, #8a6a40 100%);
  border-radius: 20%;
  box-shadow: 0 0 30px 8px #c0a060, 0 0 60px 16px rgba(200,160,80,0.5);
  animation: s4-lamp 4s ease-in-out infinite alternate;
}
.scn-jaggers-orlick-dismissal .papers {
  position: absolute; bottom: 14%; left: 40%; width: 20%; height: 6%;
  background: repeating-linear-gradient(90deg, #e0c090 0px, #e0c090 8%, #c0a070 8%, #c0a070 16%);
  border-radius: 4px;
  transform: rotate(-5deg);
  animation: s4-papers 12s ease-in-out infinite;
}
.scn-jaggers-orlick-dismissal .jaggers-figure {
  position: absolute; bottom: 8%; left: 22%; width: 14%; height: 40%;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: rotate(5deg);
  animation: s4-jaggers 9s ease-in-out infinite alternate;
}
.scn-jaggers-orlick-dismissal .pip-figure {
  position: absolute; bottom: 8%; left: 55%; width: 10%; height: 35%;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: rotate(-3deg);
  animation: s4-pip 7s ease-in-out infinite;
}
.scn-jaggers-orlick-dismissal .shadow {
  position: absolute; bottom: 0; left: 10%; right: 10%; height: 40%;
  background: linear-gradient(180deg, rgba(0,0,0,0.5) 0%, transparent 100%);
  filter: blur(10px);
  animation: s4-shadow 15s ease-in-out infinite;
}
@keyframes s4-desk {
  0% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
  100% { transform: translateY(1px); }
}
@keyframes s4-lamp {
  0% { opacity: 0.9; box-shadow: 0 0 20px 5px #c0a060; }
  50% { opacity: 1; box-shadow: 0 0 40px 12px #e0c080; }
  100% { opacity: 0.8; box-shadow: 0 0 15px 4px #a08040; }
}
@keyframes s4-papers {
  0% { transform: rotate(-5deg) scale(1); }
  50% { transform: rotate(-2deg) scale(1.05); }
  100% { transform: rotate(-7deg) scale(0.95); }
}
@keyframes s4-jaggers {
  0% { transform: rotate(5deg) translateY(0); }
  50% { transform: rotate(3deg) translateY(-4px); }
  100% { transform: rotate(6deg) translateY(2px); }
}
@keyframes s4-pip {
  0% { transform: rotate(-3deg) translateX(0); }
  50% { transform: rotate(-1deg) translateX(4px); }
  100% { transform: rotate(-5deg) translateX(-2px); }
}
@keyframes s4-shadow {
  0% { opacity: 0.6; }
  50% { opacity: 0.9; }
  100% { opacity: 0.5; }
}

/* scene: mr-pocket-talk */
.scn-mr-pocket-talk {
  background: linear-gradient(180deg, #f5e6c8 0%, #e8d5a8 70%, #c9a96e 100%),
              radial-gradient(ellipse at 40% 60%, #ffedcc 0%, transparent 50%);
}
.scn-mr-pocket-talk .wall-bg { position:absolute; inset:0 0 35% 0; background: linear-gradient(135deg, #f0e0c0 0%, #dcc08a 100%); border-radius: 0 0 20% 20% / 0 0 10% 10%; }
.scn-mr-pocket-talk .floor { position:absolute; bottom:0; left:0; right:0; height:35%; background: linear-gradient(0deg, #a08050 0%, #b89060 50%, #c8a070 100%); border-radius: 30% 30% 0 0 / 20% 20% 0 0; }
.scn-mr-pocket-talk .window { position:absolute; top:10%; left:60%; width:25%; height:40%; background: radial-gradient(ellipse at 50% 40%, #ffe0a0 0%, #c0a060 70%); border: 6px solid #b09060; border-radius: 4px; box-shadow: inset 0 0 20px rgba(255,200,100,0.3); animation: mrp-window 10s ease-in-out infinite alternate; }
.scn-mr-pocket-talk .table { position:absolute; bottom:30%; left:30%; width:40%; height:8%; background: linear-gradient(180deg, #9a7a4a 0%, #7a5a2a 100%); border-radius: 10px; box-shadow: 0 4px 12px rgba(0,0,0,0.2); transform-origin: bottom center; animation: mrp-table 12s ease-in-out infinite; }
.scn-mr-pocket-talk .chair-left { position:absolute; bottom:28%; left:28%; width:12%; height:22%; background: linear-gradient(180deg, #8b6b3b 0%, #5a3a1a 100%); border-radius: 40% 40% 20% 20% / 60% 60% 20% 20%; box-shadow: inset 0 -4px 8px rgba(0,0,0,0.3); animation: mrp-chair 8s ease-in-out infinite; }
.scn-mr-pocket-talk .chair-right { position:absolute; bottom:28%; left:55%; width:12%; height:22%; background: linear-gradient(180deg, #8b6b3b 0%, #5a3a1a 100%); border-radius: 40% 40% 20% 20% / 60% 60% 20% 20%; box-shadow: inset 0 -4px 8px rgba(0,0,0,0.3); animation: mrp-chair 8s ease-in-out infinite reverse; }
.scn-mr-pocket-talk .figure-left { position:absolute; bottom:32%; left:26%; width:10%; height:30%; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom; animation: mrp-figure-l 6s ease-in-out infinite; }
.scn-mr-pocket-talk .figure-right { position:absolute; bottom:32%; left:57%; width:10%; height:30%; background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom; animation: mrp-figure-r 6s ease-in-out infinite; }
.scn-mr-pocket-talk .lamp-glow { position:absolute; top:15%; right:20%; width:8%; height:8%; background: radial-gradient(circle, #ffe080 0%, #d0a040 50%, transparent 100%); box-shadow: 0 0 30px 15px rgba(255,200,80,0.5); animation: mrp-lamp 4s ease-in-out infinite alternate; }

@keyframes mrp-window { 0% { opacity: 0.8; transform: scaleY(1); } 50% { opacity: 1; transform: scaleY(1.02); } 100% { opacity: 0.85; transform: scaleY(0.98); } }
@keyframes mrp-table { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-2px) rotate(1deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes mrp-chair { 0% { transform: rotate(-2deg) translateY(0); } 50% { transform: rotate(0deg) translateY(-3px); } 100% { transform: rotate(2deg) translateY(0); } }
@keyframes mrp-figure-l { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(3px) rotate(2deg) scaleX(0.98); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes mrp-figure-r { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(-3px) rotate(-2deg) scaleX(0.98); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes mrp-lamp { 0% { opacity: 0.7; transform: scale(0.9); } 50% { opacity: 1; transform: scale(1.1); } 100% { opacity: 0.8; transform: scale(0.95); } }

/* scene: jaggers-allowance */
.scn-jaggers-allowance {
  background: linear-gradient(180deg, #e8e0d0 0%, #d0c8b8 50%, #b0a898 100%),
              radial-gradient(ellipse at 50% 20%, #fff5e0 0%, transparent 70%);
}
.scn-jaggers-allowance .office-wall { position:absolute; inset:0 0 30% 0; background: linear-gradient(135deg, #d0c8b8 0%, #b8b0a0 100%); border-bottom: 4px solid #8a7a6a; }
.scn-jaggers-allowance .desk { position:absolute; bottom:25%; left:25%; width:50%; height:15%; background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%); border-radius: 6px; box-shadow: 0 6px 16px rgba(0,0,0,0.3); animation: jga-desk 3s ease-in-out infinite; }
.scn-jaggers-allowance .jaggers-figure { position:absolute; bottom:20%; left:35%; width:18%; height:45%; background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom; animation: jga-jaggers 2s ease-in-out infinite; }
.scn-jaggers-allowance .pip-figure { position:absolute; bottom:20%; left:55%; width:12%; height:38%; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom; animation: jga-pip 2.5s ease-in-out infinite reverse; }
.scn-jaggers-allowance .window-blinds { position:absolute; top:8%; right:10%; width:20%; height:40%; background: repeating-linear-gradient(0deg, #b0a898 0px, #b0a898 4px, #d0c8b8 4px, #d0c8b8 8px); border-radius: 4px; box-shadow: inset 0 0 20px rgba(0,0,0,0.2); animation: jga-blinds 4s ease-in-out infinite; }
.scn-jaggers-allowance .cast { position:absolute; top:15%; left:15%; width:8%; height:12%; background: linear-gradient(180deg, #c8b8a8 0%, #a89888 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; box-shadow: inset 2px 0 6px rgba(0,0,0,0.3); animation: jga-cast 6s ease-in-out infinite alternate; }
.scn-jaggers-allowance .lamp-hard { position:absolute; top:5%; left:50%; width:6%; height:6%; background: radial-gradient(circle, #fff8e0 0%, #d0b080 60%, transparent 100%); box-shadow: 0 0 40px 20px rgba(255,240,200,0.5); animation: jga-lamp 1.5s ease-in-out infinite alternate; }

@keyframes jga-desk { 0% { transform: translateY(0) scale(1); } 50% { transform: translateY(-1px) scale(1.005); } 100% { transform: translateY(0) scale(1); } }
@keyframes jga-jaggers { 0% { transform: rotate(2deg) translateY(0); } 25% { transform: rotate(-1deg) translateY(-2px); } 50% { transform: rotate(3deg) translateY(-1px); } 75% { transform: rotate(0deg) translateY(0); } 100% { transform: rotate(-2deg) translateY(0); } }
@keyframes jga-pip { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(4px) rotate(2deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes jga-blinds { 0% { opacity: 0.7; transform: scaleX(1); } 50% { opacity: 1; transform: scaleX(1.03); } 100% { opacity: 0.8; transform: scaleX(0.98); } }
@keyframes jga-cast { 0% { transform: rotate(-5deg); } 50% { transform: rotate(5deg); } 100% { transform: rotate(-3deg); } }
@keyframes jga-lamp { 0% { opacity: 0.6; transform: scale(0.8); } 100% { opacity: 1; transform: scale(1.2); } }

/* scene: wemmick-office-conversation */
.scn-wemmick-office-conversation {
  background: linear-gradient(180deg, #d4b896 0%, #c0a47a 50%, #a88860 100%),
              radial-gradient(ellipse at 60% 50%, #e8d0b0 0%, transparent 70%);
}
.scn-wemmick-office-conversation .room-wall { position:absolute; inset:0 0 25% 0; background: linear-gradient(135deg, #d0b898 0%, #b89878 100%); border-bottom: 6px solid #8a6a4a; }
.scn-wemmick-office-conversation .fireplace { position:absolute; bottom:22%; left:50%; width:30%; height:35%; background: linear-gradient(180deg, #8a6a4a 0%, #5a3a2a 100%); border-radius: 10% 10% 0 0 / 30% 30% 0 0; box-shadow: inset 0 0 20px rgba(0,0,0,0.4); animation: woc-fire 6s ease-in-out infinite alternate; }
.scn-wemmick-office-conversation .desk-wood { position:absolute; bottom:20%; left:20%; width:60%; height:10%; background: linear-gradient(180deg, #7a5a3a 0%, #5a3a1a 100%); border-radius: 6px; box-shadow: 0 4px 12px rgba(0,0,0,0.3); }
.scn-wemmick-office-conversation .wemmick-silhouette { position:absolute; bottom:18%; left:25%; width:14%; height:40%; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom; animation: woc-wemmick 5s ease-in-out infinite; }
.scn-wemmick-office-conversation .pip-silhouette { position:absolute; bottom:18%; left:55%; width:12%; height:38%; background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom; animation: woc-pip 5s ease-in-out infinite reverse; }
.scn-wemmick-office-conversation .cast-left { position:absolute; top:12%; left:20%; width:8%; height:12%; background: linear-gradient(135deg, #b89878 0%, #9a7a5a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform: rotate(10deg); animation: woc-cast 8s ease-in-out infinite alternate; }
.scn-wemmick-office-conversation .cast-right { position:absolute; top:12%; right:20%; width:8%; height:12%; background: linear-gradient(135deg, #b89878 0%, #9a7a5a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform: rotate(-10deg); animation: woc-cast 8s ease-in-out infinite alternate-reverse; }
.scn-wemmick-office-conversation .candle-glow { position:absolute; top:20%; left:48%; width:6%; height:10%; background: radial-gradient(circle at 50% 30%, #ffe080 0%, #d0a040 50%, transparent 100%); box-shadow: 0 0 30px 20px rgba(255,200,80,0.4); animation: woc-candle 4s ease-in-out infinite alternate; }

@keyframes woc-fire { 0% { transform: scaleY(0.95); opacity: 0.8; } 50% { transform: scaleY(1.05); opacity: 1; } 100% { transform: scaleY(0.98); opacity: 0.9; } }
@keyframes woc-wemmick { 0% { transform: rotate(0deg) translateX(0); } 50% { transform: rotate(-2deg) translateX(-3px); } 100% { transform: rotate(0deg) translateX(0); } }
@keyframes woc-pip { 0% { transform: rotate(0deg) translateX(0); } 50% { transform: rotate(2deg) translateX(3px); } 100% { transform: rotate(0deg) translateX(0); } }
@keyframes woc-cast { 0% { transform: rotate(8deg) translateY(0); } 50% { transform: rotate(-8deg) translateY(-4px); } 100% { transform: rotate(6deg) translateY(0); } }
@keyframes woc-candle { 0% { opacity: 0.7; transform: scale(0.9); } 50% { opacity: 1; transform: scale(1.1); } 100% { opacity: 0.8; transform: scale(0.95); } }

/* scene: bentley-drummle-introduction */
.scn-bentley-drummle-introduction {
  background: linear-gradient(180deg, #1a1a2e 0%, #2a2a3e 40%, #1a1a2e 100%),
              radial-gradient(ellipse at 50% 30%, #3a3a5a 0%, transparent 70%);
}
.scn-bentley-drummle-introduction .dark-bg { position:absolute; inset:0; background: linear-gradient(135deg, #0f0f1a 0%, #1a1a2e 50%, #2a2a3e 100%); }
.scn-bentley-drummle-introduction .drummle-body { position:absolute; bottom:20%; left:35%; width:25%; height:55%; background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; box-shadow: 0 10px 30px rgba(0,0,0,0.6); animation: bdi-body 8s ease-in-out infinite; }
.scn-bentley-drummle-introduction .drummle-head { position:absolute; bottom:68%; left:38%; width:18%; height:20%; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2e 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; box-shadow: inset 0 -4px 8px rgba(0,0,0,0.4); transform-origin: bottom; animation: bdi-head 6s ease-in-out infinite; }
.scn-bentley-drummle-introduction .pip-shadow { position:absolute; bottom:18%; left:55%; width:12%; height:40%; background: linear-gradient(180deg, #1a1a2e 0%, #0f0f1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; opacity: 0.7; animation: bdi-pip 5s ease-in-out infinite; }
.scn-bentley-drummle-introduction .table-dark { position:absolute; bottom:12%; left:20%; width:60%; height:12%; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2e 100%); border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.5); }
.scn-bentley-drummle-introduction .candle { position:absolute; bottom:22%; left:45%; width:3%; height:10%; background: linear-gradient(180deg, #d0a040 0%, #5a3a1a 100%); border-radius: 2px; box-shadow: 0 0 20px 8px rgba(200,150,50,0.3); animation: bdi-candle 4s ease-in-out infinite alternate; }
.scn-bentley-drummle-introduction .book { position:absolute; bottom:15%; left:42%; width:8%; height:6%; background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%); border-radius: 2px; transform: rotate(-15deg); animation: bdi-book 12s ease-in-out infinite; }

@keyframes bdi-body { 0% { transform: translateX(0) scale(1); } 50% { transform: translateX(2px) scale(1.01); } 100% { transform: translateX(0) scale(1); } }
@keyframes bdi-head { 0% { transform: rotate(0deg) translateY(0); } 50% { transform: rotate(3deg) translateY(-2px); } 100% { transform: rotate(0deg) translateY(0); } }
@keyframes bdi-pip { 0% { opacity: 0.6; transform: rotate(0deg); } 50% { opacity: 0.8; transform: rotate(2deg); } 100% { opacity: 0.6; transform: rotate(0deg); } }
@keyframes bdi-candle { 0% { opacity: 0.8; transform: scaleY(0.95); } 50% { opacity: 1; transform: scaleY(1.05); } 100% { opacity: 0.9; transform: scaleY(0.98); } }
@keyframes bdi-book { 0% { transform: rotate(-15deg) translateX(0); } 50% { transform: rotate(-10deg) translateX(3px); } 100% { transform: rotate(-15deg) translateX(0); } }

/* — scene: herbert-confession (warm firelit) — */
.scn-herbert-confession {
  background:
    radial-gradient(ellipse 70% 60% at 50% 70%, #3a1e0c 0%, transparent 60%),
    linear-gradient(180deg, #1f1208 0%, #2a180e 40%, #0f0905 100%);
}
.scn-herbert-confession .bg-coal {
  position: absolute; bottom: 0; left: 0; right: 0; height: 60%;
  background: linear-gradient(0deg, #1a0e06 0%, #26140a 80%);
  animation: hco-bgco 8s ease-in-out infinite alternate;
}
.scn-herbert-confession .hearth {
  position: absolute; bottom: 18%; left: 50%; transform: translateX(-50%);
  width: 140px; height: 70px;
  background: linear-gradient(135deg, #3d2212 0%, #2b1408 60%, #1a0a04 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 40% 40%;
  box-shadow: inset 0 -8px 20px rgba(0,0,0,.6);
}
.scn-herbert-confession .fire {
  position: absolute; bottom: 22%; left: 50%; transform: translateX(-50%);
  width: 60px; height: 80px;
  background: radial-gradient(circle at 50% 70%, #f0943a 0%, #c86020 40%, #7a3010 70%, transparent 100%);
  border-radius: 50% 50% 30% 30%;
  animation: hco-fire 1.8s ease-in-out infinite alternate;
}
.scn-herbert-confession .mantel {
  position: absolute; bottom: 34%; left: 50%; transform: translateX(-50%);
  width: 180px; height: 14px;
  background: linear-gradient(90deg, #4a2e1a 0%, #6a4030 50%, #4a2e1a 100%);
  border-radius: 4px;
  box-shadow: 0 4px 10px rgba(0,0,0,.5);
}
.scn-herbert-confession .fig-handel {
  position: absolute; bottom: 16%; left: 30%;
  width: 28px; height: 70px;
  background: linear-gradient(180deg, #0c0603 0%, #1a0c06 70%, #26140a 100%);
  border-radius: 40% 40% 35% 35% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: hco-figh 4s ease-in-out infinite;
}
.scn-herbert-confession .fig-herbert {
  position: absolute; bottom: 16%; right: 28%;
  width: 30px; height: 72px;
  background: linear-gradient(180deg, #0c0603 0%, #1a0c06 70%, #26140a 100%);
  border-radius: 40% 40% 35% 35% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: hco-figh 4s ease-in-out infinite reverse;
}
.scn-herbert-confession .glow-pulse {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse 60% 40% at 50% 65%, rgba(200,100,40,.15) 0%, transparent 60%);
  animation: hco-glow 3s ease-in-out infinite alternate;
  pointer-events: none;
}
.scn-herbert-confession .ember {
  position: absolute; bottom: 34%; left: 48%;
  width: 6px; height: 6px;
  background: #ff8833;
  border-radius: 50%;
  box-shadow: 0 0 8px 2px #cc5500;
  animation: hco-ember 2.5s ease-in-out infinite alternate;
}
@keyframes hco-bgco { 0% { opacity: .9 } 50% { opacity: 1 } 100% { opacity: .85 } }
@keyframes hco-fire { 0% { transform: translateX(-50%) scaleY(1) scaleX(.9) } 50% { transform: translateX(-50%) scaleY(1.15) scaleX(1) } 100% { transform: translateX(-50%) scaleY(.95) scaleX(.85) } }
@keyframes hco-figh { 0% { transform: translateY(0) rotate(-.5deg) } 25% { transform: translateY(-2px) rotate(1deg) } 50% { transform: translateY(0) rotate(.5deg) } 75% { transform: translateY(-1px) rotate(-.8deg) } 100% { transform: translateY(0) rotate(-.5deg) } }
@keyframes hco-glow { 0% { opacity: .6 } 50% { opacity: 1 } 100% { opacity: .7 } }
@keyframes hco-ember { 0% { transform: translate(0,0) scale(1) } 50% { transform: translate(4px,-6px) scale(1.4) } 100% { transform: translate(-2px,-3px) scale(.8) } }

/* — scene: herbert-clara-talk (warm firelit) — */
.scn-herbert-clara-talk {
  background:
    radial-gradient(ellipse 60% 50% at 50% 80%, #3d2215 0%, transparent 70%),
    linear-gradient(180deg, #1a0f08 0%, #2b180f 50%, #0f0804 100%);
}
.scn-herbert-clara-talk .bg-room {
  position: absolute; inset: 0;
  background: linear-gradient(0deg, #1a0f08 0%, #2b180f 60%, #1a0f08 100%);
  animation: hct-bg 12s ease-in-out infinite alternate;
}
.scn-herbert-clara-talk .flame {
  position: absolute; bottom: 22%; left: 35%;
  width: 40px; height: 60px;
  background: radial-gradient(circle at 50% 70%, #e08830 0%, #b06020 50%, #703010 80%, transparent 100%);
  border-radius: 50% 50% 30% 30%;
  animation: hct-flame 1.6s ease-in-out infinite alternate;
}
.scn-herbert-clara-talk .table {
  position: absolute; bottom: 12%; left: 50%; transform: translateX(-50%);
  width: 90px; height: 30px;
  background: linear-gradient(180deg, #4a2e1e 0%, #2a1810 100%);
  border-radius: 6% 6% 20% 20% / 20% 20% 8% 8%;
  box-shadow: 0 6px 10px rgba(0,0,0,.5);
}
.scn-herbert-clara-talk .fig-left {
  position: absolute; bottom: 15%; left: 28%;
  width: 26px; height: 68px;
  background: linear-gradient(180deg, #0e0704 0%, #1a0c06 60%, #26140c 100%);
  border-radius: 40% 40% 35% 35% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: hct-fig 3.5s ease-in-out infinite;
}
.scn-herbert-clara-talk .fig-right {
  position: absolute; bottom: 15%; right: 30%;
  width: 28px; height: 66px;
  background: linear-gradient(180deg, #0e0704 0%, #1a0c06 60%, #26140c 100%);
  border-radius: 40% 40% 35% 35% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: hct-fig 3.5s ease-in-out infinite .5s;
}
.scn-herbert-clara-talk .letter {
  position: absolute; bottom: 20%; left: 50%; transform: translateX(-50%);
  width: 24px; height: 16px;
  background: #b89068;
  border-radius: 2px;
  box-shadow: 0 2px 4px rgba(0,0,0,.3);
  animation: hct-letter 5s ease-in-out infinite;
}
.scn-herbert-clara-talk .shadow-warm {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(0deg, rgba(40,20,10,.5) 0%, transparent 100%);
  pointer-events: none;
}
@keyframes hct-bg { 0% { opacity: .85 } 50% { opacity: 1 } 100% { opacity: .9 } }
@keyframes hct-flame { 0% { transform: scaleY(1) scaleX(.9) } 50% { transform: scaleY(1.2) scaleX(1) } 100% { transform: scaleY(.9) scaleX(.85) } }
@keyframes hct-fig { 0% { transform: translateY(0) rotate(-.5deg) } 30% { transform: translateY(-3px) rotate(1.2deg) } 60% { transform: translateY(0) rotate(-.8deg) } 100% { transform: translateY(0) rotate(-.5deg) } }
@keyframes hct-letter { 0% { transform: translateX(-50%) translateY(0) } 30% { transform: translateX(-50%) translateY(-2px) } 60% { transform: translateX(-50%) translateY(0) } 90% { transform: translateX(-50%) translateY(-1px) } 100% { transform: translateX(-50%) translateY(0) } }

/* — scene: play-tickets (warm firelit, playful) — */
.scn-play-tickets {
  background:
    radial-gradient(ellipse 60% 50% at 50% 70%, #3a1f12 0%, transparent 70%),
    linear-gradient(180deg, #1a1108 0%, #2a1a0e 50%, #0c0804 100%);
}
.scn-play-tickets .bg-interior {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse 80% 70% at 50% 100%, #2a1a0e, transparent);
}
.scn-play-tickets .fireplace {
  position: absolute; bottom: 20%; left: 50%; transform: translateX(-50%);
  width: 130px; height: 80px;
  background: linear-gradient(180deg, #3d2416 0%, #20120a 100%);
  border-radius: 40% 40% 10% 10% / 60% 60% 20% 20%;
  box-shadow: inset 0 -6px 16px rgba(0,0,0,.6);
}
.scn-play-tickets .chair-left {
  position: absolute; bottom: 14%; left: 20%;
  width: 40px; height: 50px;
  background: linear-gradient(180deg, #4a2e1a 0%, #2a1a0e 100%);
  border-radius: 10% 10% 20% 20% / 30% 30% 10% 10%;
  animation: plt-chair 6s ease-in-out infinite alternate;
}
.scn-play-tickets .chair-right {
  position: absolute; bottom: 14%; right: 18%;
  width: 40px; height: 50px;
  background: linear-gradient(180deg, #4a2e1a 0%, #2a1a0e 100%);
  border-radius: 10% 10% 20% 20% / 30% 30% 10% 10%;
  animation: plt-chair 6s ease-in-out infinite alternate .5s;
}
.scn-play-tickets .ticket {
  position: absolute; bottom: 30%; left: 50%; transform: translateX(-50%);
  width: 30px; height: 14px;
  background: #c0a070;
  border-radius: 2px;
  box-shadow: 0 2px 6px rgba(0,0,0,.3);
  animation: plt-ticket 3s ease-in-out infinite;
}
.scn-play-tickets .ticket-glint {
  position: absolute; bottom: 29%; left: 49%; width: 6px; height: 4px;
  background: rgba(255,230,180,.6);
  border-radius: 50%;
  filter: blur(2px);
  animation: plt-glint 1.8s ease-in-out infinite alternate;
}
.scn-play-tickets .coat-rack {
  position: absolute; bottom: 8%; right: 8%;
  width: 10px; height: 70px;
  background: linear-gradient(180deg, #3a2212 0%, #1a0e06 100%);
  border-radius: 20%;
  transform-origin: bottom center;
  animation: plt-coat 7s ease-in-out infinite;
}
.scn-play-tickets .hat {
  position: absolute; bottom: 58%; right: 6%;
  width: 26px; height: 16px;
  background: #2a1a0e;
  border-radius: 50% 50% 10% 10% / 60% 60% 20% 20%;
  animation: plt-hat 7s ease-in-out infinite .2s;
}
@keyframes plt-chair { 0% { transform: translateY(0) } 50% { transform: translateY(-3px) } 100% { transform: translateY(0) } }
@keyframes plt-ticket { 0% { transform: translateX(-50%) translateY(0) rotate(0) } 30% { transform: translateX(-50%) translateY(-2px) rotate(3deg) } 70% { transform: translateX(-50%) translateY(0) rotate(-2deg) } 100% { transform: translateX(-50%) translateY(0) rotate(0) } }
@keyframes plt-glint { 0% { opacity: .3 } 50% { opacity: 1 } 100% { opacity: .4 } }
@keyframes plt-coat { 0% { transform: translateY(0) rotate(0) } 50% { transform: translateY(-2px) rotate(2deg) } 100% { transform: translateY(0) rotate(0) } }
@keyframes plt-hat { 0% { transform: rotate(0) } 50% { transform: rotate(-4deg) } 100% { transform: rotate(0) } }

/* — scene: wopsle-performance (funny, gaslit theatre) — */
.scn-wopsle-performance {
  background:
    radial-gradient(ellipse 80% 60% at 50% 50%, #1f3a1a 0%, transparent 70%),
    linear-gradient(180deg, #0f1410 0%, #1a2218 40%, #0a0e0a 100%);
}
.scn-wopsle-performance .stage {
  position: absolute; bottom: 30%; left: 10%; right: 10%; height: 50%;
  background: linear-gradient(180deg, #3a3028 0%, #1e1814 100%);
  border-radius: 20% 20% 0 0 / 30% 30% 0 0;
  box-shadow: inset 0 8px 20px rgba(255,230,180,.05);
}
.scn-wopsle-performance .curtain-left {
  position: absolute; top: 0; left: 0; width: 30%; height: 70%;
  background: linear-gradient(90deg, #6a3030 0%, #8a4040 30%, #6a3030 60%, #3a1818 100%);
  border-radius: 0 20% 50% 0 / 0 30% 20% 0;
  animation: wop-curtain 12s ease-in-out infinite alternate;
}
.scn-wopsle-performance .curtain-right {
  position: absolute; top: 0; right: 0; width: 30%; height: 70%;
  background: linear-gradient(270deg, #6a3030 0%, #8a4040 30%, #6a3030 60%, #3a1818 100%);
  border-radius: 20% 0 0 50% / 30% 0 0 20%;
  animation: wop-curtain 12s ease-in-out infinite alternate .3s;
}
.scn-wopsle-performance .throne {
  position: absolute; bottom: 40%; left: 50%; transform: translateX(-50%);
  width: 40px; height: 30px;
  background: linear-gradient(180deg, #2a221a 0%, #1a1410 100%);
  border-radius: 6% 6% 20% 20% / 20% 20% 10% 10%;
  box-shadow: 0 4px 10px rgba(0,0,0,.4);
}
.scn-wopsle-performance .king {
  position: absolute; bottom: 52%; left: 46%;
  width: 22px; height: 50px;
  background: linear-gradient(180deg, #0c0e0a 0%, #161a12 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  animation: wop-fig 2.5s ease-in-out infinite;
}
.scn-wopsle-performance .queen {
  position: absolute; bottom: 52%; right: 46%;
  width: 22px; height: 50px;
  background: linear-gradient(180deg, #0c0e0a 0%, #161a12 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  animation: wop-fig 2.5s ease-in-out infinite .4s;
}
.scn-wopsle-performance .noble-boy {
  position: absolute; bottom: 22%; left: 40%;
  width: 18px; height: 36px;
  background: linear-gradient(180deg, #0c0e0a 0%, #161a12 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  animation: wop-boy 3s ease-in-out infinite;
}
.scn-wopsle-performance .gaslight {
  position: absolute; top: 10%; left: 50%; transform: translateX(-50%);
  width: 8px; height: 20px;
  background: radial-gradient(circle at 50% 60%, #c8e068 0%, #8aa030 60%, transparent 100%);
  border-radius: 30% 30% 40% 40% / 40% 40% 60% 60%;
  animation: wop-gas 1.5s ease-in-out infinite alternate;
}
.scn-wopsle-performance .glow-flicker {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse 60% 70% at 50% 20%, rgba(180,200,80,.08) 0%, transparent 60%);
  animation: wop-glow 2s ease-in-out infinite alternate;
  pointer-events: none;
}
@keyframes wop-curtain { 0% { transform: translateX(0) } 50% { transform: translateX(3%) } 100% { transform: translateX(0) } }
@keyframes wop-fig { 0% { transform: translateY(0) } 25% { transform: translateY(-3px) rotate(2deg) } 50% { transform: translateY(0) } 75% { transform: translateY(-2px) rotate(-1deg) } 100% { transform: translateY(0) } }
@keyframes wop-boy { 0% { transform: translateY(0) rotate(-1deg) } 30% { transform: translateY(-5px) rotate(3deg) } 60% { transform: translateY(0) rotate(0) } 100% { transform: translateY(-2px) rotate(-2deg) } }
@keyframes wop-gas { 0% { opacity: .6; transform: translateX(-50%) scaleY(1) } 50% { opacity: 1; transform: translateX(-50%) scaleY(1.2) } 100% { opacity: .7; transform: translateX(-50%) scaleY(.9) } }
@keyframes wop-glow { 0% { opacity: .3 } 50% { opacity: .6 } 100% { opacity: .4 } }

/* Scene: jaggers-arrives */
.scn-jaggers-arrives {
  background:
    linear-gradient(180deg, #2a1a0e 0%, #3d2b1a 40%, #5c3a20 100%),
    radial-gradient(ellipse at 60% 70%, #a55a2a 0%, transparent 70%);
}
.scn-jaggers-arrives .room-bg {
  position:absolute; inset:0 0 30% 0;
  background: linear-gradient(135deg, #4a2e1a 0%, #3a2210 50%, #2a180a 100%);
  border-radius: 0 0 50% 50% / 0 0 20% 20%;
  box-shadow: inset 0 -20px 30px rgba(0,0,0,0.6);
}
.scn-jaggers-arrives .floor {
  position:absolute; bottom:0; left:0; right:0; height:30%;
  background: linear-gradient(0deg, #2a1a0a 0%, #4a3018 100%);
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.4);
}
.scn-jaggers-arrives .fireplace {
  position:absolute; bottom:25%; left:15%; width:100px; height:70px;
  background: linear-gradient(180deg, #6a4020 0%, #3a2010 100%);
  border-radius: 30% 30% 5% 5%;
  box-shadow: 0 5px 15px rgba(0,0,0,0.7);
}
.scn-jaggers-arrives .door {
  position:absolute; bottom:20%; right:20%; width:70px; height:110px;
  background: linear-gradient(90deg, #5a3a1a 0%, #3a2210 100%);
  border-radius: 5% 5% 0 0;
  box-shadow: inset -5px 0 10px rgba(0,0,0,0.5), 3px 0 5px rgba(0,0,0,0.3);
}
.scn-jaggers-arrives .figure-jaggers {
  position:absolute; bottom:22%; right:26%; width:20px; height:70px;
  background: linear-gradient(180deg, #1a1210 0%, #0a0808 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: ja-walk 6s ease-in-out infinite;
}
.scn-jaggers-arrives .figure-joe {
  position:absolute; bottom:24%; left:25%; width:22px; height:60px;
  background: linear-gradient(180deg, #2a1a10 0%, #1a0e08 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ja-rock 4s ease-in-out infinite;
}
.scn-jaggers-arrives .figure-pip {
  position:absolute; bottom:26%; left:50%; width:14px; height:40px;
  background: linear-gradient(180deg, #3a2510 0%, #1a1008 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ja-start 3s ease-in-out infinite;
}
.scn-jaggers-arrives .glow-fire {
  position:absolute; bottom:30%; left:12%; width:80px; height:80px;
  background: radial-gradient(circle, #e08030 0%, #b05020 50%, transparent 100%);
  border-radius: 50%;
  filter: blur(8px);
  animation: ja-flicker 2s ease-in-out infinite alternate;
}
.scn-jaggers-arrives .shadow-column {
  position:absolute; bottom:20%; left:60%; width:30px; height:100px;
  background: linear-gradient(90deg, rgba(0,0,0,0.6) 0%, transparent 100%);
  transform: skewX(-20deg);
  animation: ja-shift 12s ease-in-out infinite alternate;
}
@keyframes ja-walk {
  0% { transform: translateX(0) rotate(0deg); }
  30% { transform: translateX(-5px) rotate(-2deg); }
  60% { transform: translateX(-10px) rotate(0deg); }
  100% { transform: translateX(-15px) rotate(2deg); }
}
@keyframes ja-rock {
  0%,100% { transform: translateY(0) rotate(0deg); }
  25% { transform: translateY(-2px) rotate(2deg); }
  75% { transform: translateY(-1px) rotate(-1deg); }
}
@keyframes ja-start {
  0%,100% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-3px) scale(1.02); }
}
@keyframes ja-flicker {
  0% { opacity:0.7; transform: scale(1); }
  50% { opacity:0.9; transform: scale(1.05); }
  100% { opacity:0.8; transform: scale(0.95); }
}
@keyframes ja-shift {
  0% { opacity:0.4; transform: skewX(-20deg) translateX(0); }
  50% { opacity:0.7; transform: skewX(-20deg) translateX(5px); }
  100% { opacity:0.3; transform: skewX(-20deg) translateX(-3px); }
}

/* Scene: jaggers-questions */
.scn-jaggers-questions {
  background:
    linear-gradient(180deg, #3d2b1a 0%, #2a1a0e 50%, #5c3a20 100%),
    radial-gradient(ellipse at 30% 60%, #a55a2a 0%, transparent 70%);
}
.scn-jaggers-questions .room-bg {
  position:absolute; inset:0 0 25% 0;
  background: linear-gradient(135deg, #4a2e1a 0%, #3a2210 50%, #2a180a 100%);
  border-radius: 0 0 30% 30%;
  box-shadow: inset 0 -15px 25px rgba(0,0,0,0.5);
}
.scn-jaggers-questions .table {
  position:absolute; bottom:25%; left:30%; width:80px; height:40px;
  background: linear-gradient(180deg, #5a3a1a 0%, #3a2210 100%);
  border-radius: 5% 5% 10% 10%;
  box-shadow: 0 5px 10px rgba(0,0,0,0.6);
  transform: perspective(300px) rotateX(5deg);
  animation: jq-bob 7s ease-in-out infinite;
}
.scn-jaggers-questions .chair-jaggers {
  position:absolute; bottom:20%; left:35%; width:30px; height:50px;
  background: linear-gradient(180deg, #2a1a10 0%, #1a0e08 100%);
  border-radius: 20% 20% 30% 30%;
  box-shadow: 0 3px 8px rgba(0,0,0,0.5);
  transform-origin: bottom center;
  animation: jq-sit 5s ease-in-out infinite alternate;
}
.scn-jaggers-questions .chair-pip {
  position:absolute; bottom:22%; left:50%; width:20px; height:35px;
  background: linear-gradient(180deg, #3a2510 0%, #1a1008 100%);
  border-radius: 30% 30% 20% 20%;
  box-shadow: 0 2px 5px rgba(0,0,0,0.4);
  transform-origin: bottom center;
  animation: jq-sit 5s ease-in-out infinite alternate-reverse;
}
.scn-jaggers-questions .fireplace {
  position:absolute; bottom:28%; left:10%; width:90px; height:60px;
  background: linear-gradient(180deg, #6a4020 0%, #3a2010 100%);
  border-radius: 30% 30% 5% 5%;
  box-shadow: 0 5px 15px rgba(0,0,0,0.7);
}
.scn-jaggers-questions .figure-jaggers {
  position:absolute; bottom:22%; left:38%; width:18px; height:60px;
  background: linear-gradient(180deg, #1a1210 0%, #0a0808 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: jq-lean 8s ease-in-out infinite;
}
.scn-jaggers-questions .figure-joe {
  position:absolute; bottom:24%; left:15%; width:20px; height:55px;
  background: linear-gradient(180deg, #2a1a10 0%, #1a0e08 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: jq-rock 4s ease-in-out infinite;
}
.scn-jaggers-questions .glow-fire {
  position:absolute; bottom:30%; left:8%; width:70px; height:70px;
  background: radial-gradient(circle, #d07030 0%, #a04820 50%, transparent 100%);
  border-radius: 50%;
  filter: blur(10px);
  animation: jq-flicker 2.5s ease-in-out infinite alternate;
}
@keyframes jq-sit {
  0% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-2px) rotate(2deg); }
  100% { transform: translateY(1px) rotate(-1deg); }
}
@keyframes jq-lean {
  0% { transform: translateX(0) rotate(0deg); }
  25% { transform: translateX(-3px) rotate(3deg); }
  75% { transform: translateX(4px) rotate(-2deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes jq-rock {
  0%,100% { transform: rotate(0deg); }
  50% { transform: rotate(-4deg); }
}
@keyframes jq-bob {
  0%,100% { transform: perspective(300px) rotateX(5deg) translateY(0); }
  50% { transform: perspective(300px) rotateX(5deg) translateY(-1px); }
}
@keyframes jq-flicker {
  0% { opacity:0.6; transform: scale(1); }
  50% { opacity:0.9; transform: scale(1.08); }
  100% { opacity:0.7; transform: scale(0.95); }
}

/* Scene: jaggers-arrangements */
.scn-jaggers-arrangements {
  background:
    linear-gradient(180deg, #3d2b1a 0%, #2a1a0e 50%, #5c3a20 100%),
    radial-gradient(ellipse at 50% 70%, #c06020 0%, transparent 60%);
}
.scn-jaggers-arrangements .room-bg {
  position:absolute; inset:0 0 20% 0;
  background: linear-gradient(135deg, #4a2e1a 0%, #3a2210 50%, #2a180a 100%);
  border-radius: 0 0 40% 40%;
  box-shadow: inset 0 -20px 30px rgba(0,0,0,0.6);
}
.scn-jaggers-arrangements .desk {
  position:absolute; bottom:20%; left:25%; width:90px; height:30px;
  background: linear-gradient(180deg, #6a4a2a 0%, #3a2210 100%);
  border-radius: 5% 5% 10% 10%;
  box-shadow: 0 5px 10px rgba(0,0,0,0.5);
  transform: perspective(400px) rotateX(5deg);
  animation: jar-desk 10s ease-in-out infinite;
}
.scn-jaggers-arrangements .coin-pile {
  position:absolute; bottom:25%; left:40%; width:30px; height:15px;
  background: radial-gradient(circle at 50% 0%, #d0a060 0%, #a07030 100%);
  border-radius: 50% 50% 10% 10%;
  box-shadow: 0 2px 4px rgba(0,0,0,0.5);
  animation: jar-gleam 3s ease-in-out infinite alternate;
}
.scn-jaggers-arrangements .candle {
  position:absolute; bottom:30%; left:50%; width:8px; height:30px;
  background: linear-gradient(180deg, #e0c080 0%, #c0a060 100%);
  border-radius: 20% 20% 5% 5%;
  box-shadow: 0 0 10px #d0a040;
}
.scn-jaggers-arrangements .figure-jaggers {
  position:absolute; bottom:20%; right:20%; width:20px; height:70px;
  background: linear-gradient(180deg, #1a1210 0%, #0a0808 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: jar-tilt 8s ease-in-out infinite;
}
.scn-jaggers-arrangements .figure-pip {
  position:absolute; bottom:22%; left:30%; width:14px; height:45px;
  background: linear-gradient(180deg, #3a2510 0%, #1a1008 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: jar-nervous 4s ease-in-out infinite;
}
.scn-jaggers-arrangements .glow-candle {
  position:absolute; bottom:35%; left:50%; width:30px; height:50px;
  background: radial-gradient(circle, #f0b060 0%, #d08030 50%, transparent 100%);
  border-radius: 50%;
  filter: blur(12px);
  animation: jar-glow 2s ease-in-out infinite alternate;
}
@keyframes jar-desk {
  0%,100% { transform: perspective(400px) rotateX(5deg) translateY(0); }
  50% { transform: perspective(400px) rotateX(5deg) translateY(-1px); }
}
@keyframes jar-gleam {
  0% { opacity:0.7; transform: scale(1); }
  50% { opacity:1; transform: scale(1.05); }
  100% { opacity:0.8; transform: scale(0.95); }
}
@keyframes jar-tilt {
  0% { transform: translateX(0) rotate(0deg); }
  25% { transform: translateX(-2px) rotate(2deg); }
  75% { transform: translateX(3px) rotate(-3deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes jar-nervous {
  0%,100% { transform: translateY(0) scale(1); }
  25% { transform: translateY(-2px) scale(1.02); }
  75% { transform: translateY(-1px) scale(0.98); }
}
@keyframes jar-glow {
  0% { opacity:0.6; transform: scale(0.9); }
  100% { opacity:0.9; transform: scale(1.1); }
}

/* Scene: kitchen-joes-house-evening */
.scn-kitchen-joes-house-evening {
  background:
    linear-gradient(180deg, #1a0e08 0%, #2a1a0e 40%, #3d2b1a 100%),
    radial-gradient(ellipse at 50% 80%, #b05020 0%, transparent 70%);
}
.scn-kitchen-joes-house-evening .kitchen-wall {
  position:absolute; inset:0 0 30% 0;
  background: linear-gradient(135deg, #3a2210 0%, #2a180a 50%, #1a0e08 100%);
  border-radius: 0 0 40% 40%;
  box-shadow: inset 0 -20px 30px rgba(0,0,0,0.7);
}
.scn-kitchen-joes-house-evening .fire-large {
  position:absolute; bottom:30%; left:50%; transform:translateX(-50%); width:100px; height:80px;
  background: radial-gradient(ellipse at 50% 20%, #e08030 0%, #b05020 60%, #5a2010 100%);
  border-radius: 50% 50% 10% 10%;
  box-shadow: 0 0 30px #c06020, inset 0 -10px 20px rgba(0,0,0,0.3);
  animation: kjh-burn 2s ease-in-out infinite alternate;
}
.scn-kitchen-joes-house-evening .figure-joe {
  position:absolute; bottom:25%; left:35%; width:25px; height:60px;
  background: linear-gradient(180deg, #2a1a10 0%, #1a0e08 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: kjh-hunch 5s ease-in-out infinite;
}
.scn-kitchen-joes-house-evening .figure-pip-small {
  position:absolute; bottom:28%; left:55%; width:12px; height:35px;
  background: linear-gradient(180deg, #3a2510 0%, #1a1008 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: kjh-fidget 3s ease-in-out infinite;
}
.scn-kitchen-joes-house-evening .utensil-hook {
  position:absolute; top:15%; right:20%; width:4px; height:40px;
  background: #5a3a1a;
  border-radius: 20%;
  box-shadow: 0 0 5px rgba(0,0,0,0.5);
  transform: rotate(5deg);
  animation: kjh-swing 6s ease-in-out infinite;
}
.scn-kitchen-joes-house-evening .shadow-cast {
  position:absolute; bottom:20%; left:30%; width:80px; height:20px;
  background: linear-gradient(90deg, rgba(0,0,0,0.6) 0%, transparent 100%);
  transform: skewX(-30deg);
  animation: kjh-shadow-pulse 4s ease-in-out infinite alternate;
}
.scn-kitchen-joes-house-evening .glow-fire {
  position:absolute; bottom:35%; left:50%; transform:translateX(-50%); width:120px; height:100px;
  background: radial-gradient(circle, rgba(200,80,30,0.4) 0%, transparent 100%);
  filter: blur(15px);
  animation: kjh-pulse 2s ease-in-out infinite alternate;
}
@keyframes kjh-burn {
  0% { transform: translateX(-50%) scale(1); opacity:0.9; }
  50% { transform: translateX(-50%) scale(1.05); opacity:1; }
  100% { transform: translateX(-50%) scale(0.95); opacity:0.85; }
}
@keyframes kjh-hunch {
  0%,100% { transform: translateY(0) rotate(0deg); }
  30% { transform: translateY(-3px) rotate(3deg); }
  70% { transform: translateY(-1px) rotate(-2deg); }
}
@keyframes kjh-fidget {
  0%,100% { transform: translateY(0) scale(1); }
  25% { transform: translateY(-2px) scale(0.98); }
  75% { transform: translateY(-1px) scale(1.02); }
}
@keyframes kjh-swing {
  0%,100% { transform: rotate(5deg); }
  50% { transform: rotate(-5deg); }
}
@keyframes kjh-shadow-pulse {
  0% { opacity:0.4; }
  100% { opacity:0.8; }
}
@keyframes kjh-pulse {
  0% { opacity:0.5; transform: translateX(-50%) scale(0.9); }
  100% { opacity:0.8; transform: translateX(-50%) scale(1.1); }
}

.scn-boat-conversation-magwitch {
  background: linear-gradient(180deg, #87CEEB 0%, #B0E0E6 40%, #F0F8FF 100%), radial-gradient(ellipse at 50% 30%, #FFFDE7 0%, transparent 60%);
}
.scn-boat-conversation-magwitch .sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #6BB5FF 0%, #B0E0E6 100%);
  animation: bcm-sky 12s ease-in-out infinite alternate;
}
.scn-boat-conversation-magwitch .river {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #2E7D8A 0%, #145A6B 50%, #0D3B4A 100%);
  animation: bcm-river 8s ease-in-out infinite alternate;
}
.scn-boat-conversation-magwitch .boat-hull {
  position: absolute; bottom: 22%; left: 35%; width: 30%; height: 10%;
  background: linear-gradient(180deg, #5D4037 0%, #3E2723 100%);
  border-radius: 20% 20% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.4);
  animation: bcm-bob 6s ease-in-out infinite;
}
.scn-boat-conversation-magwitch .figure-magwitch {
  position: absolute; bottom: 28%; left: 38%; width: 12%; height: 20%;
  background: linear-gradient(180deg, #2C2C2C 0%, #1A1A1A 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bcm-figure1 9s ease-in-out infinite;
}
.scn-boat-conversation-magwitch .figure-pip {
  position: absolute; bottom: 28%; left: 52%; width: 10%; height: 18%;
  background: linear-gradient(180deg, #3D3D3D 0%, #2A2A2A 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bcm-figure2 9s ease-in-out infinite -3s;
}
.scn-boat-conversation-magwitch .pipe {
  position: absolute; bottom: 42%; left: 45%; width: 2%; height: 4%;
  background: #8D6E63;
  border-radius: 20% 20% 0 0;
  transform: rotate(20deg);
  animation: bcm-pipe 4s ease-in-out infinite;
}
.scn-boat-conversation-magwitch .smoke {
  position: absolute; border-radius: 50%;
  background: radial-gradient(circle, rgba(200,200,200,0.8) 0%, rgba(200,200,200,0) 100%);
  filter: blur(3px);
}
.scn-boat-conversation-magwitch .smoke.s1 {
  bottom: 44%; left: 46%; width: 6%; height: 6%;
  animation: bcm-smoke1 10s linear infinite;
}
.scn-boat-conversation-magwitch .smoke.s2 {
  bottom: 40%; left: 48%; width: 8%; height: 8%;
  animation: bcm-smoke2 14s linear infinite -5s;
}
@keyframes bcm-sky { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.7; } }
@keyframes bcm-river { 0% { background-position: 0% 0%; } 50% { background-position: 2% 2%; } 100% { background-position: 0% 0%; } }
@keyframes bcm-bob { 0%,100% { transform: translate(0, 0); } 50% { transform: translate(0, -4px); } }
@keyframes bcm-figure1 { 0%,100% { transform: rotate(2deg); } 30% { transform: rotate(-2deg); } 60% { transform: rotate(1deg); } 80% { transform: rotate(-1deg); } }
@keyframes bcm-figure2 { 0%,100% { transform: rotate(-2deg); } 30% { transform: rotate(2deg); } 60% { transform: rotate(-1deg); } 80% { transform: rotate(1deg); } }
@keyframes bcm-pipe { 0%,100% { transform: rotate(20deg) scale(1); } 50% { transform: rotate(25deg) scale(1.1); } }
@keyframes bcm-smoke1 { 0% { transform: translate(0,0) scale(1); opacity: 0.6; } 50% { transform: translate(10px, -20px) scale(1.5); opacity: 0.3; } 100% { transform: translate(20px, -40px) scale(2); opacity: 0; } }
@keyframes bcm-smoke2 { 0% { transform: translate(0,0) scale(1); opacity: 0.5; } 50% { transform: translate(-10px, -25px) scale(1.8); opacity: 0.2; } 100% { transform: translate(-20px, -50px) scale(2.5); opacity: 0; } }

.scn-item-magwitch-pipe {
  background: linear-gradient(135deg, #FFF8E1 0%, #FFE0B2 50%, #FFCC80 100%), radial-gradient(circle at 50% 50%, #FFFDE7 0%, transparent 70%);
}
.scn-item-magwitch-pipe .bg-soft {
  position: absolute; inset: 0;
  background: linear-gradient(135deg, rgba(255,248,225,0.5) 0%, rgba(255,204,128,0.3) 100%);
  animation: imp-bg 20s ease-in-out infinite alternate;
}
.scn-item-magwitch-pipe .pipe-bowl {
  position: absolute; bottom: 30%; left: 48%; width: 12%; height: 14%;
  background: radial-gradient(circle at 40% 30%, #8D6E63 0%, #5D4037 70%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  box-shadow: inset 0 -4px 6px #3E2723, 0 4px 10px rgba(0,0,0,0.3);
  animation: imp-bowl 4s ease-in-out infinite alternate;
}
.scn-item-magwitch-pipe .pipe-stem {
  position: absolute; bottom: 32%; left: 58%; width: 20%; height: 4%;
  background: linear-gradient(90deg, #6D4C41 0%, #4E342E 100%);
  border-radius: 20% 80% 80% 20% / 50% 50%;
  transform: rotate(-10deg);
  box-shadow: 0 2px 4px rgba(0,0,0,0.2);
  animation: imp-stem 5s ease-in-out infinite;
}
.scn-item-magwitch-pipe .hand {
  position: absolute; bottom: 18%; left: 42%; width: 20%; height: 25%;
  background: linear-gradient(180deg, #D7CCC8 0%, #BCAAA4 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: rotate(10deg);
  animation: imp-hand 7s ease-in-out infinite alternate;
}
.scn-item-magwitch-pipe .smoke-ring {
  position: absolute; border-radius: 50%;
  background: rgba(200,200,200,0.3);
  border: 2px solid rgba(255,255,255,0.4);
  filter: blur(2px);
}
.scn-item-magwitch-pipe .smoke-ring.r1 {
  bottom: 48%; left: 48%; width: 12%; height: 12%;
  animation: imp-ring1 12s linear infinite;
}
.scn-item-magwitch-pipe .smoke-ring.r2 {
  bottom: 52%; left: 50%; width: 15%; height: 15%;
  animation: imp-ring2 15s linear infinite -6s;
}
.scn-item-magwitch-pipe .glow {
  position: absolute; bottom: 28%; left: 46%; width: 8%; height: 8%;
  background: radial-gradient(circle, #FFD54F 0%, #FFA000 100%);
  border-radius: 50%;
  box-shadow: 0 0 50px 20px rgba(255,160,0,0.4);
  animation: imp-glow 3s ease-in-out infinite alternate;
}
@keyframes imp-bg { 0% { opacity: 0.7; } 50% { opacity: 1; } 100% { opacity: 0.8; } }
@keyframes imp-bowl { 0%,100% { transform: translate(0,0); } 50% { transform: translate(-1px, -2px); } }
@keyframes imp-stem { 0%,100% { transform: rotate(-10deg) scaleX(1); } 50% { transform: rotate(-6deg) scaleX(1.05); } }
@keyframes imp-hand { 0% { transform: rotate(10deg) translate(0,0); } 30% { transform: rotate(8deg) translate(2px,-2px); } 60% { transform: rotate(12deg) translate(-1px,1px); } 100% { transform: rotate(9deg) translate(0,0); } }
@keyframes imp-ring1 { 0% { transform: translate(0,0) scale(0.5); opacity: 0.7; } 50% { transform: translate(15px, -30px) scale(1.5); opacity: 0.3; } 100% { transform: translate(30px, -60px) scale(2.5); opacity: 0; } }
@keyframes imp-ring2 { 0% { transform: translate(0,0) scale(0.5); opacity: 0.6; } 50% { transform: translate(-10px, -40px) scale(1.8); opacity: 0.2; } 100% { transform: translate(-20px, -80px) scale(3); opacity: 0; } }
@keyframes imp-glow { 0% { opacity: 0.8; box-shadow: 0 0 30px 10px rgba(255,160,0,0.3); } 50% { opacity: 1; box-shadow: 0 0 60px 25px rgba(255,160,0,0.6); } 100% { opacity: 0.9; box-shadow: 0 0 40px 15px rgba(255,160,0,0.4); } }

.scn-boat-river-reflection {
  background: linear-gradient(180deg, #4FC3F7 0%, #81D4FA 30%, #B3E5FC 60%, #E1F5FE 100%), radial-gradient(ellipse at 50% 20%, #FFF9C4 0%, transparent 50%);
}
.scn-boat-river-reflection .sky-refl {
  position: absolute; top: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #4FC3F7 0%, #B3E5FC 100%);
  animation: brr-sky 14s ease-in-out infinite alternate;
}
.scn-boat-river-reflection .water-refl {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #1A809E 0%, #0D4A5A 80%);
  animation: brr-water 10s ease-in-out infinite alternate;
}
.scn-boat-river-reflection .boat {
  position: absolute; width: 30%; height: 12%;
  background: linear-gradient(180deg, #5D4037 0%, #3E2723 100%);
  border-radius: 30% 30% 50% 50% / 60% 60% 40% 40%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.3);
}
.scn-boat-river-reflection .boat.real {
  bottom: 38%; left: 35%;
  animation: brr-bob1 6s ease-in-out infinite;
}
.scn-boat-river-reflection .boat.mirrored {
  bottom: 8%; left: 35%;
  transform: scaleY(-1) translateY(-100%);
  opacity: 0.6;
  animation: brr-bob2 6s ease-in-out infinite -3s;
}
.scn-boat-river-reflection .ripple {
  position: absolute; border-radius: 50%;
  background: rgba(255,255,255,0.1);
  border: 1px solid rgba(255,255,255,0.15);
}
.scn-boat-river-reflection .ripple.r1 {
  bottom: 20%; left: 40%; width: 40%; height: 10%;
  animation: brr-ripple1 8s linear infinite;
}
.scn-boat-river-reflection .ripple.r2 {
  bottom: 12%; left: 30%; width: 50%; height: 8%;
  animation: brr-ripple2 10s linear infinite -4s;
}
.scn-boat-river-reflection .sun {
  position: absolute; top: 5%; right: 10%; width: 12%; height: 12%;
  background: radial-gradient(circle, #FFF59D 0%, #FFD54F 60%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 80px 30px rgba(255,235,59,0.3);
  animation: brr-sun 20s ease-in-out infinite alternate;
}
.scn-boat-river-reflection .tree {
  position: absolute; bottom: 45%; width: 10%; height: 30%;
  background: linear-gradient(180deg, #2E7D32 0%, #1B5E20 100%);
  border-radius: 50% 50% 20% 20% / 60% 60% 40% 40%;
  filter: blur(2px);
}
.scn-boat-river-reflection .tree.left { left: 5%; animation: brr-tree 30s ease-in-out infinite; }
.scn-boat-river-reflection .tree.right { right: 5%; animation: brr-tree 30s ease-in-out infinite -15s; }
@keyframes brr-sky { 0% { opacity: 0.7; } 50% { opacity: 1; } 100% { opacity: 0.8; } }
@keyframes brr-water { 0% { background-position: 0% 0%; } 50% { background-position: -2% 2%; } 100% { background-position: 0% 0%; } }
@keyframes brr-bob1 { 0%,100% { transform: translate(0,0); } 50% { transform: translate(0, -5px); } }
@keyframes brr-bob2 { 0%,100% { transform: scaleY(-1) translateY(-100%) translate(0,5px); } 50% { transform: scaleY(-1) translateY(-100%) translate(0,0); } }
@keyframes brr-ripple1 { 0% { transform: scaleX(0.5); opacity: 0.5; } 50% { transform: scaleX(1.5); opacity: 0.2; } 100% { transform: scaleX(2); opacity: 0; } }
@keyframes brr-ripple2 { 0% { transform: scaleX(0.5) translateY(0); opacity: 0.4; } 50% { transform: scaleX(1.8) translateY(-5px); opacity: 0.15; } 100% { transform: scaleX(2.5) translateY(-10px); opacity: 0; } }
@keyframes brr-sun { 0% { transform: scale(0.9); opacity: 0.8; } 50% { transform: scale(1.1); opacity: 1; } 100% { transform: scale(1); opacity: 0.9; } }
@keyframes brr-tree { 0%,100% { transform: scale(0.95); } 50% { transform: scale(1.05); } }

.scn-riverside-tavern {
  background: linear-gradient(180deg, #1A1A2E 0%, #2D2D44 30%, #3E2C1A 60%, #2D1B0E 100%), radial-gradient(ellipse at 30% 60%, #A0522D 0%, transparent 70%);
}
.scn-riverside-tavern .wall-back {
  position: absolute; top: 0; left: 0; right: 0; height: 70%;
  background: repeating-linear-gradient(0deg, #4E342E 0px, #4E342E 3px, #3E2723 3px, #3E2723 6px);
  opacity: 0.3;
  animation: rtv-wall 30s linear infinite;
}
.scn-riverside-tavern .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #5D4037 0%, #3E2723 100%);
  border-top: 4px solid #2D1B0E;
}
.scn-riverside-tavern .fireplace {
  position: absolute; bottom: 20%; left: 10%; width: 30%; height: 50%;
  background: linear-gradient(180deg, #4E342E 0%, #2D1B0E 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: inset 0 -10px 20px rgba(0,0,0,0.5);
}
.scn-riverside-tavern .fire {
  position: absolute; bottom: 22%; left: 15%; width: 20%; height: 25%;
  background: radial-gradient(ellipse at 50% 80%, #FF6F00 0%, #E65100 40%, transparent 100%);
  border-radius: 50% 50% 20% 20%;
  animation: rtv-fire 3s ease-in-out infinite alternate;
  box-shadow: 0 0 60px 30px rgba(255,111,0,0.3);
}
.scn-riverside-tavern .table {
  position: absolute; bottom: 10%; left: 40%; width: 40%; height: 10%;
  background: linear-gradient(180deg, #6D4C41 0%, #4E342E 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: 0 -4px 10px rgba(0,0,0,0.5);
  animation: rtv-table 6s ease-in-out infinite alternate;
}
.scn-riverside-tavern .chair {
  position: absolute; bottom: 8%; left: 48%; width: 12%; height: 18%;
  background: linear-gradient(180deg, #4E342E 0%, #3E2723 100%);
  border-radius: 10% 10% 40% 40% / 20% 20% 60% 60%;
  animation: rtv-chair 8s ease-in-out infinite alternate;
}
.scn-riverside-tavern .bottle {
  position: absolute; bottom: 18%; left: 65%; width: 5%; height: 15%;
  background: linear-gradient(180deg, #C8553D 0%, #A0461A 100%);
  border-radius: 30% 30% 20% 20% / 20% 20% 30% 30%;
  box-shadow: 2px 4px 6px rgba(0,0,0,0.4);
  animation: rtv-bottle 9s ease-in-out infinite;
}
.scn-riverside-tavern .shadow-figure {
  position: absolute; bottom: 10%; right: 15%; width: 15%; height: 30%;
  background: linear-gradient(180deg, #1A1A1A 0%, #0A0A0A 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  filter: blur(1px);
  animation: rtv-figure 12s ease-in-out infinite alternate;
}
.scn-riverside-tavern .window {
  position: absolute; top: 5%; right: 10%; width: 15%; height: 20%;
  background: linear-gradient(180deg, #2C3E50 0%, #4A6785 100%);
  border: 3px solid #3E2723;
  border-radius: 4px;
  box-shadow: inset 0 0 15px rgba(0,0,0,0.5);
  animation: rtv-window 15s ease-in-out infinite alternate;
}
@keyframes rtv-wall { 0% { background-position: 0% 0%; } 100% { background-position: 0% 100%; } }
@keyframes rtv-fire { 0% { transform: scale(0.9) translateY(0); opacity: 0.8; } 50% { transform: scale(1.1) translateY(-5px); opacity: 1; } 100% { transform: scale(1) translateY(-2px); opacity: 0.9; } }
@keyframes rtv-table { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-2px); } }
@keyframes rtv-chair { 0% { transform: rotate(0deg); } 30% { transform: rotate(2deg); } 60% { transform: rotate(-3deg); } 100% { transform: rotate(0deg); } }
@keyframes rtv-bottle { 0%,100% { transform: rotate(0deg); } 30% { transform: rotate(3deg); } 70% { transform: rotate(-2deg); } }
@keyframes rtv-figure { 0% { transform: translateX(0) rotate(0deg); } 30% { transform: translateX(3px) rotate(1deg); } 60% { transform: translateX(-2px) rotate(-1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes rtv-window { 0% { opacity: 0.5; box-shadow: inset 0 0 15px rgba(0,0,0,0.6); } 50% { opacity: 0.8; box-shadow: inset 0 0 25px rgba(0,0,0,0.3), 0 0 20px rgba(255,255,255,0.1); } 100% { opacity: 0.6; box-shadow: inset 0 0 15px rgba(0,0,0,0.5); } }

.scn-pumblechooks-shop {
  background:
    linear-gradient(180deg, #f4e8c0 0%, #c8b88a 40%, #8a6e50 100%),
    radial-gradient(ellipse at 60% 20%, rgba(255,240,200,0.6) 0%, transparent 70%);
}
.scn-pumblechooks-shop .window {
  position: absolute; top: -2%; left: 10%; width: 30%; height: 28%;
  background: linear-gradient(180deg, #d4d8e0 0%, transparent 100%);
  border-radius: 4% / 6%; box-shadow: inset 0 0 20px rgba(255,255,240,0.3);
  animation: ps-window 12s ease-in-out infinite alternate;
}
.scn-pumblechooks-shop .shelf-a {
  position: absolute; top: 20%; left: 5%; width: 40%; height: 6%;
  background: linear-gradient(180deg, #6a4e2e 0%, #3d2b1a 100%);
  border-radius: 2px; box-shadow: 0 4px 6px rgba(0,0,0,0.3);
}
.scn-pumblechooks-shop .shelf-b {
  position: absolute; top: 35%; left: 5%; width: 40%; height: 6%;
  background: linear-gradient(180deg, #6a4e2e 0%, #3d2b1a 100%);
  border-radius: 2px; box-shadow: 0 4px 6px rgba(0,0,0,0.3);
}
.scn-pumblechooks-shop .counter {
  position: absolute; bottom: 15%; left: 0; right: 50%; height: 18%;
  background: linear-gradient(180deg, #8a6e50 0%, #5a3e28 100%);
  border-radius: 0 8% 0 0; box-shadow: -4px 0 8px rgba(0,0,0,0.2);
}
.scn-pumblechooks-shop .sack-a {
  position: absolute; bottom: 22%; right: 8%; width: 14%; height: 22%;
  background: radial-gradient(ellipse at 40% 60%, #8a6a3e 0%, #5a3a1a 100%);
  border-radius: 30% 30% 40% 40% / 40% 40% 30% 30%;
  box-shadow: 2px 4px 8px rgba(0,0,0,0.4);
  animation: ps-sack1 6s ease-in-out infinite;
}
.scn-pumblechooks-shop .sack-b {
  position: absolute; bottom: 24%; right: 24%; width: 12%; height: 18%;
  background: radial-gradient(ellipse at 40% 60%, #7a5a2e 0%, #4a2a0a 100%);
  border-radius: 30% 30% 40% 40% / 40% 40% 30% 30%;
  box-shadow: 2px 4px 8px rgba(0,0,0,0.4);
  animation: ps-sack2 7s ease-in-out infinite alternate;
}
.scn-pumblechooks-shop .figure {
  position: absolute; bottom: 14%; left: 18%; width: 14%; height: 36%;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a100a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: ps-figure 8s ease-in-out infinite;
}
.scn-pumblechooks-shop .scale {
  position: absolute; bottom: 26%; left: 32%; width: 10%; height: 12%;
  background: linear-gradient(180deg, #8a7a5a 0%, #4a3a2a 100%);
  border-radius: 20% 20% 10% 10% / 30% 30% 20% 20%;
  box-shadow: 0 2px 4px rgba(0,0,0,0.3);
}
.scn-pumblechooks-shop .dust {
  position: absolute; top: 10%; left: 0; width: 100%; height: 40%;
  background: radial-gradient(circle at 20% 30%, rgba(255,240,200,0.2) 0%, transparent 60%);
  filter: blur(4px);
  animation: ps-dust 30s linear infinite;
}

@keyframes ps-window { 0% { opacity: 0.7; } 50% { opacity: 1; } 100% { opacity: 0.75; } }
@keyframes ps-sack1 { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-1px) rotate(1deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes ps-sack2 { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-1px) rotate(-1deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes ps-figure { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(2px) rotate(1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes ps-dust { 0% { transform: translateX(-10%) scale(1); } 50% { transform: translateX(10%) scale(1.05); } 100% { transform: translateX(-10%) scale(1); } }

/* meeting-estella */
.scn-meeting-estella {
  background:
    linear-gradient(135deg, #2a2018 0%, #4a3830 30%, #3a2820 70%, #1a100c 100%),
    radial-gradient(ellipse at 70% 40%, rgba(200,160,120,0.15) 0%, transparent 60%);
}
.scn-meeting-estella .bg-wall {
  position: absolute; inset: 0; 
  background: radial-gradient(circle at 75% 50%, rgba(80,60,40,0.5) 0%, transparent 60%);
}
.scn-meeting-estella .candle {
  position: absolute; bottom: 30%; right: 20%; width: 4%; height: 20%;
  background: linear-gradient(180deg, #f0e0c0 0%, #d0b090 40%, #8a6a4a 100%);
  border-radius: 10% 10% 20% 20% / 20% 20% 30% 30%;
  box-shadow: 2px 0 6px rgba(0,0,0,0.4);
  animation: me-candle 12s ease-in-out infinite alternate;
}
.scn-meeting-estella .flame {
  position: absolute; bottom: 48%; right: 20%; width: 3%; height: 8%;
  background: radial-gradient(circle at 50% 30%, #ffd080 0%, #e08030 60%, transparent 100%);
  border-radius: 50%; box-shadow: 0 0 20px 6px rgba(255,200,80,0.6), 0 0 40px 12px rgba(255,150,50,0.3);
  animation: me-flame 2s ease-in-out infinite;
}
.scn-meeting-estella .figure {
  position: absolute; bottom: 10%; left: 35%; width: 18%; height: 70%;
  background: linear-gradient(180deg, #2a1a12 0%, #1a0e08 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: me-figure 8s ease-in-out infinite alternate;
}
.scn-meeting-estella .table {
  position: absolute; bottom: 8%; left: 30%; right: 25%; height: 8%;
  background: linear-gradient(180deg, #5a3e28 0%, #3a2818 100%);
  border-radius: 4% 4% 0 0;
}
.scn-meeting-estella .chair {
  position: absolute; bottom: 8%; left: 55%; width: 10%; height: 30%;
  background: linear-gradient(180deg, #4a3220 0%, #2a1a0e 100%);
  border-radius: 10% 10% 5% 5% / 20% 20% 10% 10%;
  box-shadow: 2px 0 4px rgba(0,0,0,0.3);
}
.scn-meeting-estella .shadow {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, transparent, rgba(0,0,0,0.4));
  filter: blur(6px);
  animation: me-shadow 12s ease-in-out infinite alternate;
}

@keyframes me-candle { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.85; } }
@keyframes me-flame { 0% { transform: translateY(0) scale(1) rotate(-2deg); } 50% { transform: translateY(-1px) scale(1.1) rotate(2deg); } 100% { transform: translateY(0) scale(1) rotate(-2deg); } }
@keyframes me-figure { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(-2px) rotate(1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes me-shadow { 0% { opacity: 0.5; } 50% { opacity: 0.7; } 100% { opacity: 0.4; } }

/* manor-house */
.scn-manor-house {
  background:
    linear-gradient(180deg, #1a1410 0%, #2a2018 30%, #3a2a1a 70%, #1a100c 100%),
    radial-gradient(ellipse at 40% 30%, rgba(100,80,60,0.2) 0%, transparent 70%);
}
.scn-manor-house .wall {
  position: absolute; inset: 0;
  background: repeating-linear-gradient(90deg, transparent, transparent 15%, rgba(0,0,0,0.05) 15%, rgba(0,0,0,0.05) 15.2%);
}
.scn-manor-house .window {
  position: absolute; top: 10%; left: 50%; width: 20%; height: 30%;
  background: radial-gradient(ellipse at 50% 30%, #c0c8d0 0%, #8a8e98 100%);
  border-radius: 4% / 6%; box-shadow: inset 0 0 30px rgba(100,120,140,0.3);
  animation: mh-window 20s ease-in-out infinite alternate;
}
.scn-manor-house .table {
  position: absolute; bottom: 10%; left: 30%; right: 30%; height: 10%;
  background: linear-gradient(180deg, #5a3e28 0%, #3a2818 100%);
  border-radius: 4% 4% 0 0;
}
.scn-manor-house .bottle {
  position: absolute; bottom: 18%; left: 48%; width: 6%; height: 18%;
  background: linear-gradient(180deg, #8a7a5a 0%, #4a3a2a 100%);
  border-radius: 10% 10% 20% 20% / 20% 20% 30% 30%;
  box-shadow: 2px 2px 6px rgba(0,0,0,0.4);
  animation: mh-bottle 9s ease-in-out infinite;
}
.scn-manor-house .figure {
  position: absolute; bottom: 8%; left: 15%; width: 16%; height: 60%;
  background: linear-gradient(180deg, #2a1a12 0%, #1a0e08 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: mh-figure 12s ease-in-out infinite;
}
.scn-manor-house .chair {
  position: absolute; bottom: 8%; left: 35%; width: 12%; height: 32%;
  background: linear-gradient(180deg, #4a3220 0%, #2a1a0e 100%);
  border-radius: 10% 10% 5% 5% / 20% 20% 10% 10%;
}
.scn-manor-house .beam {
  position: absolute; top: 60%; left: 0; right: 0; height: 2%;
  background: linear-gradient(180deg, #3a2a1a, #1a100c);
  filter: blur(1px);
  animation: mh-beam 25s linear infinite;
}

@keyframes mh-window { 0% { opacity: 0.6; } 50% { opacity: 0.9; } 100% { opacity: 0.65; } }
@keyframes mh-bottle { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-1px) rotate(1deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes mh-figure { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(1px) rotate(-0.5deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes mh-beam { 0% { opacity: 0.1; } 50% { opacity: 0.3; } 100% { opacity: 0.1; } }

/* meeting-miss-havisham */
.scn-meeting-miss-havisham {
  background:
    linear-gradient(180deg, #0a0608 0%, #1a1210 40%, #2a1a14 100%),
    radial-gradient(ellipse at 70% 60%, rgba(40,30,20,0.3) 0%, transparent 60%);
}
.scn-meeting-miss-havisham .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #1a120e 0%, #0a0604 100%);
}
.scn-meeting-miss-havisham .doorway {
  position: absolute; top: 0; left: 50%; width: 30%; height: 100%;
  background: linear-gradient(180deg, #0a0608 0%, #1a100c 100%);
  border-radius: 0 0 4% 4% / 0 0 8% 8%;
  box-shadow: -10px 0 20px rgba(0,0,0,0.6) inset, 10px 0 20px rgba(0,0,0,0.6) inset;
  transform: translateX(-50%);
}
.scn-meeting-miss-havisham .figure {
  position: absolute; bottom: 8%; left: 38%; width: 14%; height: 65%;
  background: linear-gradient(180deg, #2a1a10 0%, #0a0604 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  animation: mmh-figure 15s ease-in-out infinite;
}
.scn-meeting-miss-havisham .candle-far {
  position: absolute; bottom: 50%; right: 10%; width: 3%; height: 12%;
  background: linear-gradient(180deg, #f0d0a0 0%, #b08050 50%, #5a3a20 100%);
  border-radius: 10% 10% 20% 20%;
  animation: mmh-candle 20s ease-in-out infinite alternate;
}
.scn-meeting-miss-havisham .glow {
  position: absolute; bottom: 48%; right: 8%; width: 12%; height: 25%;
  background: radial-gradient(circle at 50% 30%, rgba(255,200,100,0.4) 0%, transparent 70%);
  filter: blur(8px);
  animation: mmh-glow 8s ease-in-out infinite;
}
.scn-meeting-miss-havisham .chair {
  position: absolute; bottom: 8%; left: 55%; width: 14%; height: 35%;
  background: linear-gradient(180deg, #3a2218 0%, #1a0e08 100%);
  border-radius: 10% 10% 5% 5% / 20% 20% 10% 10%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.5);
}
.scn-meeting-miss-havisham .mirror {
  position: absolute; top: 15%; left: 20%; width: 18%; height: 28%;
  background: radial-gradient(ellipse at 50% 40%, #2a2a2a 0%, #0a0a0a 100%);
  border-radius: 6% / 8%;
  box-shadow: 0 0 12px rgba(0,0,0,0.6) inset;
  animation: mmh-mirror 30s ease-in-out infinite;
}

@keyframes mmh-figure { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(1px) rotate(0.5deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes mmh-candle { 0% { opacity: 0.4; } 50% { opacity: 0.8; } 100% { opacity: 0.3; } }
@keyframes mmh-glow { 0% { opacity: 0.2; } 50% { opacity: 0.6; } 100% { opacity: 0.2; } }
@keyframes mmh-mirror { 0% { opacity: 0.1; } 50% { opacity: 0.3; } 100% { opacity: 0.1; } }

.scn-mr-pocket-background {
  background: 
    linear-gradient(180deg, #f5e6c8 0%, #d4b48c 30%, #a08060 70%, #705030 100%),
    radial-gradient(ellipse at 50% 50%, #f5e6c8 0%, transparent 70%);
}
.scn-mr-pocket-background .grindstone {
  position: absolute; bottom: 28%; left: 20%; width: 80px; height: 80px;
  background: radial-gradient(circle at 40% 40%, #a08060, #604020);
  border-radius: 50%; box-shadow: inset 0 -4px 8px rgba(0,0,0,0.6), 0 4px 8px rgba(0,0,0,0.3);
  animation: sc1-spin 6s linear infinite;
}
.scn-mr-pocket-background .anvil {
  position: absolute; bottom: 20%; right: 25%; width: 100px; height: 40px;
  background: linear-gradient(180deg, #808080, #505050);
  border-radius: 10% 10% 20% 20%; box-shadow: 0 6px 12px rgba(0,0,0,0.5);
}
.scn-mr-pocket-background .window {
  position: absolute; top: 12%; left: 50%; width: 120px; height: 90px;
  transform: translateX(-50%);
  background: radial-gradient(circle at 50% 50%, #fff8e0 0%, #e0c080 70%, #a08060 100%);
  border-radius: 10px; border: 6px solid #604020; box-shadow: inset 0 0 20px #fff8e0, 0 0 30px #ffe080;
  animation: sc1-window-glow 4s ease-in-out infinite alternate;
}
.scn-mr-pocket-background .tools {
  position: absolute; top: 10%; right: 10%; width: 40px; height: 60px;
  background: linear-gradient(90deg, #705030 0%, #b08050 50%, #705030 100%);
  border-radius: 10% 10% 0 0; box-shadow: 0 4px 6px rgba(0,0,0,0.4);
  animation: sc1-tools-sway 8s ease-in-out infinite;
}
.scn-mr-pocket-background .figure {
  position: absolute; bottom: 15%; left: 38%; width: 30px; height: 60px;
  background: linear-gradient(180deg, #2a1a0a 0%, #1a0a00 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: sc1-figure-bend 5s ease-in-out infinite;
}
.scn-mr-pocket-background .sparks {
  position: absolute; bottom: 32%; left: 22%; width: 8px; height: 8px;
  background: #ffd080; border-radius: 50%;
  box-shadow: 0 0 12px 6px #ffd080, 0 0 24px 12px rgba(255,208,128,0.5);
  animation: sc1-sparks-fly 1.5s ease-out infinite;
}
@keyframes sc1-spin { 0% { transform: rotate(0deg); } 50% { transform: rotate(180deg); } 100% { transform: rotate(360deg); } }
@keyframes sc1-window-glow { 0% { opacity: 0.7; box-shadow: inset 0 0 10px #fff8e0, 0 0 15px #ffe080; } 50% { opacity: 1; box-shadow: inset 0 0 30px #fff8e0, 0 0 40px #ffe080; } 100% { opacity: 0.8; box-shadow: inset 0 0 20px #fff8e0, 0 0 25px #ffe080; } }
@keyframes sc1-tools-sway { 0% { transform: rotate(-2deg); } 50% { transform: rotate(2deg); } 100% { transform: rotate(-2deg); } }
@keyframes sc1-figure-bend { 0% { transform: translateY(0) rotate(-3deg); } 25% { transform: translateY(-2px) rotate(0deg); } 50% { transform: translateY(0) rotate(3deg); } 75% { transform: translateY(-1px) rotate(0deg); } 100% { transform: translateY(0) rotate(-3deg); } }
@keyframes sc1-sparks-fly { 0% { transform: translate(0,0) scale(1); opacity: 1; } 50% { transform: translate(30px,-40px) scale(0.5); opacity: 0.6; } 100% { transform: translate(60px,-80px) scale(0); opacity: 0; } }

.scn-mrs-coiler-visit {
  background: 
    linear-gradient(180deg, #faf0e6 0%, #e8d8c0 40%, #c8b098 80%, #a08060 100%),
    radial-gradient(ellipse at 50% 0%, #fff8e0 0%, transparent 60%);
}
.scn-mrs-coiler-visit .sofa {
  position: absolute; bottom: 10%; left: 15%; width: 160px; height: 70px;
  background: linear-gradient(180deg, #8b6f5e 0%, #6b4f3e 100%);
  border-radius: 20% 20% 10% 10%; box-shadow: 0 8px 16px rgba(0,0,0,0.3);
  animation: sc2-sofa-bounce 12s ease-in-out infinite;
}
.scn-mrs-coiler-visit .teatable {
  position: absolute; bottom: 15%; left: 50%; width: 80px; height: 50px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #d4b48c 0%, #b09070 100%);
  border-radius: 10px; box-shadow: 0 4px 8px rgba(0,0,0,0.2);
}
.scn-mrs-coiler-visit .figure-left {
  position: absolute; bottom: 18%; left: 25%; width: 28px; height: 60px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: sc2-figure-talk 4s ease-in-out infinite;
}
.scn-mrs-coiler-visit .figure-right {
  position: absolute; bottom: 18%; right: 25%; width: 28px; height: 60px;
  background: linear-gradient(180deg, #5a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: sc2-figure-talk 4s ease-in-out infinite reverse;
}
.scn-mrs-coiler-visit .chandelier {
  position: absolute; top: 5%; left: 50%; width: 40px; height: 60px;
  transform: translateX(-50%);
  background: radial-gradient(circle at 50% 30%, #fff8e0 0%, #d4b48c 60%, #a08060 100%);
  border-radius: 50% 50% 20% 20%; box-shadow: 0 0 30px 10px #ffe080;
  animation: sc2-chandelier-sway 6s ease-in-out infinite;
}
.scn-mrs-coiler-visit .window {
  position: absolute; top: 8%; right: 5%; width: 100px; height: 120px;
  background: radial-gradient(circle at 50% 50%, #fff8e0 0%, #e0c080 70%, #a08060 100%);
  border-radius: 10px; border: 6px solid #604020; box-shadow: inset 0 0 20px #fff8e0;
}
.scn-mrs-coiler-visit .curtain {
  position: absolute; top: 5%; right: 3%; width: 30px; height: 130px;
  background: linear-gradient(180deg, #8b6f5e 0%, #6b4f3e 100%);
  border-radius: 20% 20% 0 0;
  animation: sc2-curtain-sway 10s ease-in-out infinite;
}
@keyframes sc2-sofa-bounce { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes sc2-figure-talk { 0% { transform: translateY(0) rotate(-2deg); } 25% { transform: translateY(-1px) rotate(0deg); } 50% { transform: translateY(0) rotate(2deg); } 75% { transform: translateY(-1px) rotate(0deg); } 100% { transform: translateY(0) rotate(-2deg); } }
@keyframes sc2-chandelier-sway { 0% { transform: translateX(-50%) rotate(-3deg); } 50% { transform: translateX(-50%) rotate(3deg); } 100% { transform: translateX(-50%) rotate(-3deg); } }
@keyframes sc2-curtain-sway { 0% { transform: rotate(0deg); } 50% { transform: rotate(2deg); } 100% { transform: rotate(0deg); } }

.scn-baby-nutcracker-incident {
  background: 
    linear-gradient(180deg, #fdf6e3 0%, #f0d9b5 30%, #e0c090 60%, #c0a080 100%),
    radial-gradient(ellipse at 50% 100%, #fff4d0 0%, transparent 70%);
}
.scn-baby-nutcracker-incident .baby {
  position: absolute; bottom: 25%; left: 30%; width: 24px; height: 30px;
  background: linear-gradient(180deg, #f0d0b0 0%, #d0a080 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: sc3-baby-bounce 2s ease-in-out infinite;
}
.scn-baby-nutcracker-incident .highchair {
  position: absolute; bottom: 18%; left: 28%; width: 50px; height: 60px;
  background: linear-gradient(180deg, #c09070 0%, #a07050 100%);
  border-radius: 10% 10% 5% 5%; box-shadow: 0 4px 8px rgba(0,0,0,0.3);
}
.scn-baby-nutcracker-incident .nutcracker {
  position: absolute; bottom: 30%; right: 30%; width: 20px; height: 40px;
  background: linear-gradient(180deg, #a08060 0%, #806040 100%);
  border-radius: 30% 30% 10% 10%; box-shadow: 0 2px 4px rgba(0,0,0,0.4);
  animation: sc3-nutcracker-jump 3s ease-in-out infinite;
}
.scn-baby-nutcracker-incident .fork {
  position: absolute; bottom: 28%; left: 38%; width: 6px; height: 40px;
  background: linear-gradient(180deg, #c0c0c0 0%, #808080 100%);
  border-radius: 20% 20% 0 0; transform-origin: bottom;
  animation: sc3-fork-sway 1.5s ease-in-out infinite;
}
.scn-baby-nutcracker-incident .dancing-figure {
  position: absolute; bottom: 20%; right: 20%; width: 24px; height: 50px;
  background: linear-gradient(180deg, #804020 0%, #602010 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: sc3-dance 3s ease-in-out infinite;
}
.scn-baby-nutcracker-incident .table {
  position: absolute; bottom: 22%; left: 50%; width: 100px; height: 20px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #b09070 0%, #907050 100%);
  border-radius: 10px; box-shadow: 0 6px 12px rgba(0,0,0,0.2);
}
.scn-baby-nutcracker-incident .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 18%;
  background: linear-gradient(180deg, #c0a080 0%, #a08060 100%);
  border-radius: 20% 20% 0 0 / 100% 100% 0 0;
}
@keyframes sc3-baby-bounce { 0% { transform: translateY(0); } 25% { transform: translateY(-4px); } 50% { transform: translateY(0); } 75% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes sc3-nutcracker-jump { 0% { transform: translateY(0) rotate(0deg); } 30% { transform: translateY(-6px) rotate(-10deg); } 60% { transform: translateY(0) rotate(10deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes sc3-fork-sway { 0% { transform: rotate(-5deg); } 25% { transform: rotate(0deg); } 50% { transform: rotate(5deg); } 75% { transform: rotate(0deg); } 100% { transform: rotate(-5deg); } }
@keyframes sc3-dance { 0% { transform: translateY(0) rotate(-5deg); } 25% { transform: translateY(-4px) rotate(0deg); } 50% { transform: translateY(-2px) rotate(5deg); } 75% { transform: translateY(-4px) rotate(0deg); } 100% { transform: translateY(0) rotate(-5deg); } }

.scn-sophia-mischief {
  background: 
    linear-gradient(180deg, #e8e0d8 0%, #d0c8b8 30%, #b0a898 70%, #908080 100%),
    radial-gradient(ellipse at 50% 50%, #fff8f0 0%, transparent 70%);
}
.scn-sophia-mischief .figure-sophia {
  position: absolute; bottom: 15%; left: 35%; width: 28px; height: 60px;
  background: linear-gradient(180deg, #2a1a10 0%, #0a0000 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: sc4-tremble 0.8s ease-in-out infinite;
}
.scn-sophia-mischief .figure-mrs-pocket {
  position: absolute; bottom: 15%; right: 35%; width: 30px; height: 65px;
  background: linear-gradient(180deg, #5a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: sc4-lean 3s ease-in-out infinite;
}
.scn-sophia-mischief .bundle {
  position: absolute; bottom: 10%; left: 50%; width: 40px; height: 30px;
  transform: translateX(-50%);
  background: radial-gradient(circle at 50% 50%, #705030 0%, #503020 100%);
  border-radius: 30% 30% 20% 20%; box-shadow: 0 4px 8px rgba(0,0,0,0.4);
  animation: sc4-bundle-shift 10s ease-in-out infinite;
}
.scn-sophia-mischief .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 12%;
  background: linear-gradient(180deg, #b0a898 0%, #908080 100%);
  border-radius: 10% 10% 0 0 / 100% 100% 0 0;
}
.scn-sophia-mischief .wall {
  position: absolute; top: 0; left: 0; right: 0; height: 88%;
  background: linear-gradient(180deg, #d0c8b8 0%, #b0a898 100%);
  box-shadow: inset 0 20px 40px rgba(0,0,0,0.2);
  animation: sc4-wall-shadow 8s ease-in-out infinite;
}
.scn-sophia-mischief .shadow {
  position: absolute; bottom: 12%; left: 20%; width: 100px; height: 20px;
  background: rgba(0,0,0,0.3); border-radius: 50%; filter: blur(6px);
  animation: sc4-shadow-pulse 4s ease-in-out infinite;
}
@keyframes sc4-tremble { 0% { transform: translateX(0) rotate(-1deg); } 25% { transform: translateX(1px) rotate(1deg); } 50% { transform: translateX(-1px) rotate(-1deg); } 75% { transform: translateX(1px) rotate(1deg); } 100% { transform: translateX(0) rotate(-1deg); } }
@keyframes sc4-lean { 0% { transform: translateY(0) rotate(-2deg); } 50% { transform: translateY(0) rotate(2deg); } 100% { transform: translateY(0) rotate(-2deg); } }
@keyframes sc4-bundle-shift { 0% { transform: translateX(-50%) translateY(0); } 33% { transform: translateX(-50%) translateY(-2px); } 66% { transform: translateX(-50%) translateY(1px); } 100% { transform: translateX(-50%) translateY(0); } }
@keyframes sc4-wall-shadow { 0% { box-shadow: inset 0 20px 40px rgba(0,0,0,0.2); } 50% { box-shadow: inset 0 30px 60px rgba(0,0,0,0.4); } 100% { box-shadow: inset 0 20px 40px rgba(0,0,0,0.2); } }
@keyframes sc4-shadow-pulse { 0% { opacity: 0.3; transform: scaleX(1); } 50% { opacity: 0.5; transform: scaleX(1.1); } 100% { opacity: 0.3; transform: scaleX(1); } }

/* estella-taunts */
.scn-estella-taunts {
  background:
    linear-gradient(180deg, #f5e6d0 0%, #cbb59a 50%, #8a7a5a 100%),
    radial-gradient(ellipse at 70% 30%, rgba(255, 230, 180, 0.3) 0%, transparent 60%);
}
.scn-estella-taunts .wall-bg {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(180deg, #e3d1b5 0%, #c2ab8c 100%);
  animation: et1-wall 8s ease-in-out infinite alternate;
}
.scn-estella-taunts .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #7a6a4a 0%, #4a3a2a 100%);
  border-radius: 0 0 10% 10%;
}
.scn-estella-taunts .window {
  position: absolute; top: 12%; left: 25%; width: 80px; height: 100px;
  background: linear-gradient(180deg, #d4e8ff 0%, #a0c8f0 100%);
  border: 4px solid #6a5a3a;
  box-shadow: inset 0 0 20px rgba(255,255,200,0.4);
  animation: et1-window 6s ease-in-out infinite alternate;
}
.scn-estella-taunts .shadow-sharp {
  position: absolute; bottom: 35%; left: 50%; width: 40%; height: 20%;
  background: linear-gradient(135deg, rgba(0,0,0,0.3) 0%, transparent 70%);
  clip-path: polygon(0 0, 100% 0, 80% 100%, 20% 100%);
  animation: et1-shadow 4s ease-in-out infinite alternate;
}
.scn-estella-taunts .figure-estella {
  position: absolute; bottom: 20%; left: 60%; width: 30px; height: 80px;
  background: linear-gradient(180deg, #c8553d 0%, #8a2a1a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: et1-figure-e 5s ease-in-out infinite;
}
.scn-estella-taunts .figure-pip {
  position: absolute; bottom: 18%; left: 30%; width: 22px; height: 60px;
  background: linear-gradient(180deg, #4a5a4a 0%, #1a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 30% 30%;
  transform-origin: bottom center;
  animation: et1-figure-p 5s ease-in-out infinite reverse;
}
.scn-estella-taunts .light-ray {
  position: absolute; top: 10%; left: 30%; width: 20px; height: 150px;
  background: linear-gradient(180deg, rgba(255, 240, 180, 0.6) 0%, transparent 90%);
  filter: blur(4px);
  transform: rotate(-15deg);
  animation: et1-ray 7s ease-in-out infinite alternate;
}
@keyframes et1-wall { 0% { opacity: 0.9 } 50% { opacity: 1 } 100% { opacity: 0.85 } }
@keyframes et1-window { 0% { transform: scaleY(0.95); box-shadow: inset 0 0 10px rgba(255,255,200,0.3) } 50% { transform: scaleY(1); box-shadow: inset 0 0 30px rgba(255,255,200,0.5) } 100% { transform: scaleY(0.95); box-shadow: inset 0 0 10px rgba(255,255,200,0.3) } }
@keyframes et1-shadow { 0% { opacity: 0.7; transform: translateX(0) } 50% { opacity: 1; transform: translateX(5px) } 100% { opacity: 0.7; transform: translateX(0) } }
@keyframes et1-figure-e { 0% { transform: translateY(0) rotate(0deg) } 25% { transform: translateY(-2px) rotate(-3deg) } 50% { transform: translateY(0) rotate(2deg) } 75% { transform: translateY(-1px) rotate(-1deg) } 100% { transform: translateY(0) rotate(0deg) } }
@keyframes et1-figure-p { 0% { transform: translateY(0) scaleX(1) } 50% { transform: translateY(-3px) scaleX(0.9) } 100% { transform: translateY(0) scaleX(1) } }
@keyframes et1-ray { 0% { opacity: 0.5; transform: rotate(-10deg) scaleX(1) } 50% { opacity: 0.8; transform: rotate(-20deg) scaleX(1.1) } 100% { opacity: 0.5; transform: rotate(-10deg) scaleX(1) } }

/* meeting-other-relatives */
.scn-meeting-other-relatives {
  background:
    linear-gradient(180deg, #fdf6e3 0%, #e8dcc8 40%, #c4b49a 100%),
    radial-gradient(ellipse at 50% 0%, rgba(255, 250, 230, 0.4) 0%, transparent 70%);
}
.scn-meeting-other-relatives .bg-soft {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, #f5edde 0%, #dccdb8 100%);
  animation: mr2-bg 12s ease-in-out infinite alternate;
}
.scn-meeting-other-relatives .carpet {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #8a765a 0%, #5a4a32 100%);
  border-radius: 0 0 20% 20%;
}
.scn-meeting-other-relatives .table {
  position: absolute; bottom: 25%; left: 25%; right: 25%; height: 18px;
  background: linear-gradient(180deg, #7a6a4a 0%, #4a3a2a 100%);
  border-radius: 4px;
  box-shadow: 0 4px 8px rgba(0,0,0,0.2);
  animation: mr2-table 9s ease-in-out infinite;
}
.scn-meeting-other-relatives .figure-a {
  position: absolute; bottom: 15%; left: 20%; width: 24px; height: 70px;
  background: linear-gradient(180deg, #a07858 0%, #604030 100%);
  border-radius: 45% 45% 35% 35% / 65% 65% 35% 35%;
  transform-origin: bottom center;
  animation: mr2-fig-a 7s ease-in-out infinite;
}
.scn-meeting-other-relatives .figure-b {
  position: absolute; bottom: 15%; left: 45%; width: 26px; height: 72px;
  background: linear-gradient(180deg, #786a58 0%, #4a3a2a 100%);
  border-radius: 45% 45% 35% 35% / 65% 65% 35% 35%;
  transform-origin: bottom center;
  animation: mr2-fig-b 8s ease-in-out infinite reverse;
}
.scn-meeting-other-relatives .figure-c {
  position: absolute; bottom: 15%; left: 68%; width: 22px; height: 66px;
  background: linear-gradient(180deg, #8a7a6a 0%, #5a4a3a 100%);
  border-radius: 45% 45% 35% 35% / 65% 65% 35% 35%;
  transform-origin: bottom center;
  animation: mr2-fig-c 7.5s ease-in-out infinite;
}
.scn-meeting-other-relatives .chandelier {
  position: absolute; top: 5%; left: 50%; width: 40px; height: 60px;
  transform: translateX(-50%);
  background: 
    radial-gradient(ellipse 50% 30% at 50% 0%, #c0b090 0%, transparent 100%),
    linear-gradient(180deg, #a09070 0%, #605030 100%);
  border-radius: 50% 50% 30% 30%;
  animation: mr2-chandelier 20s ease-in-out infinite alternate;
}
.scn-meeting-other-relatives .warm-glow {
  position: absolute; top: 20%; left: 30%; right: 30%; height: 40%;
  background: radial-gradient(ellipse at 50% 0%, rgba(255, 200, 120, 0.3) 0%, transparent 70%);
  animation: mr2-glow 6s ease-in-out infinite alternate;
}
@keyframes mr2-bg { 0% { opacity: 0.95 } 50% { opacity: 1 } 100% { opacity: 0.9 } }
@keyframes mr2-table { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-1px) } }
@keyframes mr2-fig-a { 0% { transform: translateY(0) rotate(0deg) } 25% { transform: translateY(-1px) rotate(2deg) } 50% { transform: translateY(0) rotate(-1deg) } 75% { transform: translateY(-1px) rotate(1deg) } 100% { transform: translateY(0) rotate(0deg) } }
@keyframes mr2-fig-b { 0% { transform: translateY(0) rotate(0deg) } 25% { transform: translateY(-2px) rotate(-2deg) } 50% { transform: translateY(0) rotate(1deg) } 75% { transform: translateY(-1px) rotate(-1deg) } 100% { transform: translateY(0) rotate(0deg) } }
@keyframes mr2-fig-c { 0% { transform: translateY(0) rotate(0deg) } 33% { transform: translateY(-1px) rotate(1deg) } 66% { transform: translateY(0) rotate(0deg) } 100% { transform: translateY(0) rotate(0deg) } }
@keyframes mr2-chandelier { 0% { transform: translateX(-50%) scaleY(1); opacity: 0.9 } 50% { transform: translateX(-50%) scaleY(0.98); opacity: 1 } 100% { transform: translateX(-50%) scaleY(1); opacity: 0.9 } }
@keyframes mr2-glow { 0% { opacity: 0.6 } 50% { opacity: 1 } 100% { opacity: 0.7 } }

/* waiting-in-room */
.scn-waiting-in-room {
  background:
    linear-gradient(180deg, #1a1628 0%, #2a2038 30%, #1e1a2e 60%, #0e0a18 100%),
    radial-gradient(ellipse at 40% 60%, #3a2a4e 0%, transparent 80%);
}
.scn-waiting-in-room .wall-dark {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #201c30 0%, #140e20 100%);
}
.scn-waiting-in-room .table-long {
  position: absolute; bottom: 20%; left: 10%; right: 10%; height: 14px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0e06 100%);
  border-radius: 2px;
  box-shadow: 0 2px 8px rgba(0,0,0,0.6);
  animation: wr3-table 14s ease-in-out infinite;
}
.scn-waiting-in-room .figure-withered {
  position: absolute; bottom: 10%; left: 45%; width: 28px; height: 90px;
  background: linear-gradient(180deg, #4a3a3a 0%, #1a1212 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: wr3-figure 12s ease-in-out infinite;
}
.scn-waiting-in-room .cobwebs {
  position: absolute; top: 10%; left: 0; right: 0; height: 50%;
  background: 
    repeating-linear-gradient(45deg, rgba(200,200,200,0.1) 0px, transparent 10px),
    repeating-linear-gradient(-45deg, rgba(200,200,200,0.1) 0px, transparent 10px);
  mask-image: radial-gradient(ellipse at 30% 40%, rgba(255,255,255,1) 0%, transparent 60%);
  animation: wr3-cobwebs 30s ease-in-out infinite alternate;
}
.scn-waiting-in-room .candle-glow {
  position: absolute; top: 30%; left: 35%; width: 12px; height: 20px;
  background: radial-gradient(circle, #ffd060 0%, #b08030 70%);
  border-radius: 50%;
  box-shadow: 0 0 40px 12px rgba(255, 200, 80, 0.4), 0 0 80px 20px rgba(255, 180, 60, 0.15);
  animation: wr3-candle 3s ease-in-out infinite alternate;
}
.scn-waiting-in-room .vignette {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at 50% 50%, transparent 50%, rgba(0,0,0,0.8) 100%);
  pointer-events: none;
  animation: wr3-vignette 10s ease-in-out infinite alternate;
}
@keyframes wr3-table { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-2px) } }
@keyframes wr3-figure { 0% { transform: translateY(0) rotate(0deg) } 33% { transform: translateY(-2px) rotate(1deg) } 66% { transform: translateY(1px) rotate(-1deg) } 100% { transform: translateY(0) rotate(0deg) } }
@keyframes wr3-cobwebs { 0% { opacity: 0.3 } 50% { opacity: 0.5 } 100% { opacity: 0.2 } }
@keyframes wr3-candle { 0% { box-shadow: 0 0 30px 8px rgba(255, 200, 80, 0.3), 0 0 60px 15px rgba(255, 180, 60, 0.1); transform: scale(0.9) } 50% { box-shadow: 0 0 50px 16px rgba(255, 200, 80, 0.5), 0 0 100px 30px rgba(255, 180, 60, 0.2); transform: scale(1.1) } 100% { box-shadow: 0 0 30px 8px rgba(255, 200, 80, 0.3), 0 0 60px 15px rgba(255, 180, 60, 0.1); transform: scale(0.9) } }
@keyframes wr3-vignette { 0% { opacity: 0.7 } 50% { opacity: 0.9 } 100% { opacity: 0.7 } }

/* item-bride-cake */
.scn-item-bride-cake {
  background:
    linear-gradient(180deg, #0e0a12 0%, #1a1422 30%, #2a2238 60%, #0e0a18 100%),
    radial-gradient(ellipse at 60% 40%, #3a2a44 0%, transparent 70%);
}
.scn-item-bride-cake .bg-void {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, #120e1e 0%, #08060e 100%);
}
.scn-item-bride-cake .table-close {
  position: absolute; bottom: 0; left: 10%; right: 10%; height: 20%;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0e06 100%);
  border-radius: 0 0 20% 20%;
}
.scn-item-bride-cake .cake-tier-1 {
  position: absolute; bottom: 15%; left: 50%; width: 70px; height: 28px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #d4c8b8 0%, #a09078 100%);
  border-radius: 4px 4px 0 0;
  box-shadow: 0 2px 6px rgba(0,0,0,0.5);
  animation: bc4-tier1 8s ease-in-out infinite;
}
.scn-item-bride-cake .cake-tier-2 {
  position: absolute; bottom: 25%; left: 50%; width: 50px; height: 24px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #c8b8a8 0%, #988870 100%);
  border-radius: 4px 4px 0 0;
  box-shadow: 0 2px 6px rgba(0,0,0,0.5);
  animation: bc4-tier2 9s ease-in-out infinite reverse;
}
.scn-item-bride-cake .cake-tier-3 {
  position: absolute; bottom: 35%; left: 50%; width: 30px; height: 20px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #b8a890 0%, #887860 100%);
  border-radius: 4px 4px 0 0;
  box-shadow: 0 2px 6px rgba(0,0,0,0.5);
  animation: bc4-tier3 10s ease-in-out infinite;
}
.scn-item-bride-cake .cobweb-thin {
  position: absolute; top: 20%; left: 30%; width: 50px; height: 30px;
  border: 1px solid rgba(255,255,255,0.2);
  border-radius: 50%;
  filter: blur(3px);
  animation: bc4-cobweb-t 20s linear infinite;
}
.scn-item-bride-cake .cobweb-dense {
  position: absolute; top: 35%; left: 45%; width: 80px; height: 60px;
  border: 2px solid rgba(255,255,255,0.15);
  border-radius: 50%;
  filter: blur(5px);
  animation: bc4-cobweb-d 25s linear infinite reverse;
}
.scn-item-bride-cake .dust-motes {
  position: absolute; top: 0; left: 0; right: 0; bottom: 0;
  pointer-events: none;
  background: radial-gradient(circle at 20% 30%, rgba(255,255,255,0.05) 0%, transparent 40%),
              radial-gradient(circle at 70% 60%, rgba(255,255,255,0.03) 0%, transparent 50%);
  animation: bc4-dust 30s ease-in-out infinite alternate;
}
@keyframes bc4-tier1 { 0%,100% { transform: translateX(-50%) } 50% { transform: translateX(-50%) translateY(-1px) } }
@keyframes bc4-tier2 { 0%,100% { transform: translateX(-50%) } 50% { transform: translateX(-50%) translateY(-2px) } }
@keyframes bc4-tier3 { 0%,100% { transform: translateX(-50%) } 50% { transform: translateX(-50%) translateY(-1px) } }
@keyframes bc4-cobweb-t { 0% { transform: rotate(0deg) scale(1) } 50% { transform: rotate(180deg) scale(1.05) } 100% { transform: rotate(360deg) scale(1) } }
@keyframes bc4-cobweb-d { 0% { transform: rotate(0deg) scale(1) } 50% { transform: rotate(-180deg) scale(1.1) } 100% { transform: rotate(-360deg) scale(1) } }
@keyframes bc4-dust { 0% { opacity: 0.2 } 50% { opacity: 0.5 } 100% { opacity: 0.3 } }

.scn-kitchen-joes-house-supper {
  background:
    linear-gradient(180deg, #1a0e08 0%, #2c1610 30%, #4a2a1a 70%, #1a0e08 100%),
    radial-gradient(ellipse at 60% 30%, #c8553d20 0%, transparent 50%);
}
.scn-kitchen-joes-house-supper .wall {
  position: absolute; inset: 0 0 55% 0;
  background: linear-gradient(180deg, #3a1e12 0%, #2c1610 100%);
  animation: kjhs-wall 12s ease-in-out infinite alternate;
}
.scn-kitchen-joes-house-supper .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 55%;
  background: linear-gradient(0deg, #1a0e08 0%, #2c1a10 60%, #3a2218 100%);
  border-radius: 20% 20% 0 0 / 10% 10% 0 0;
  box-shadow: inset 0 12px 20px rgba(0,0,0,0.6);
}
.scn-kitchen-joes-house-supper .table {
  position: absolute; bottom: 35%; left: 20%; right: 20%; height: 12%;
  background: linear-gradient(180deg, #5a3a28 0%, #3a2218 100%);
  border-radius: 6px;
  box-shadow: 0 4px 10px rgba(0,0,0,0.5);
  animation: kjhs-table 6s ease-in-out infinite;
}
.scn-kitchen-joes-house-supper .fire {
  position: absolute; bottom: 40%; left: 8%; width: 30px; height: 50px;
  background: radial-gradient(ellipse at 50% 100%, #f08030 0%, #c8553d 40%, #8a2a1a 80%, transparent 100%);
  border-radius: 50% 50% 20% 20% / 60% 60% 20% 20%;
  box-shadow: 0 0 40px 20px rgba(200,85,61,0.3), 0 0 80px 30px rgba(200,85,61,0.1);
  animation: kjhs-fire 2s ease-in-out infinite alternate;
}
.scn-kitchen-joes-house-supper .figure-left {
  position: absolute; bottom: 25%; left: 30%; width: 20px; height: 60px;
  background: linear-gradient(180deg, #1a0e08 0%, #0d0704 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: kjhs-figL 4s ease-in-out infinite;
}
.scn-kitchen-joes-house-supper .figure-right {
  position: absolute; bottom: 25%; left: 55%; width: 22px; height: 58px;
  background: linear-gradient(180deg, #1a0e08 0%, #0d0704 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: kjhs-figR 4.5s ease-in-out infinite 1s;
}
.scn-kitchen-joes-house-supper .bread {
  position: absolute; bottom: 35%; left: 40%; width: 30px; height: 20px;
  background: linear-gradient(180deg, #a08060 0%, #806040 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%;
  box-shadow: 0 2px 4px rgba(0,0,0,0.4);
  animation: kjhs-bread 8s ease-in-out infinite;
}
@keyframes kjhs-wall {
  0%, 100% { opacity: 0.8; }
  50% { opacity: 1; }
}
@keyframes kjhs-table {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
}
@keyframes kjhs-fire {
  0% { transform: scaleY(1) translateY(0); opacity: 0.9; }
  50% { transform: scaleY(1.08) translateY(-2px); opacity: 1; }
  100% { transform: scaleY(0.95) translateY(1px); opacity: 0.8; }
}
@keyframes kjhs-figL {
  0%, 100% { transform: translateX(0) rotate(-1deg); }
  25% { transform: translateX(2px) rotate(1deg); }
  50% { transform: translateX(0) rotate(-1deg); }
  75% { transform: translateX(-1px) rotate(1deg); }
}
@keyframes kjhs-figR {
  0%, 100% { transform: translateX(0) rotate(1deg); }
  25% { transform: translateX(-2px) rotate(-1deg); }
  50% { transform: translateX(0) rotate(1deg); }
  75% { transform: translateX(1px) rotate(-1deg); }
}
@keyframes kjhs-bread {
  0%, 100% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-1px) scale(1.02); }
}

.scn-kitchen-joes-house-night {
  background:
    linear-gradient(180deg, #0f0b08 0%, #1a1210 40%, #2a1a16 70%, #0f0b08 100%),
    radial-gradient(ellipse at 80% 50%, #c8553d15 0%, transparent 50%);
}
.scn-kitchen-joes-house-night .wall {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #1a1210 0%, #0f0b08 100%);
  animation: kjhn-wall 15s ease-in-out infinite alternate;
}
.scn-kitchen-joes-house-night .window {
  position: absolute; top: 15%; right: 12%; width: 60px; height: 80px;
  background: radial-gradient(ellipse at 50% 30%, #2a3a5a 0%, #1a1a2a 80%);
  border: 4px solid #3a2a20;
  border-radius: 4px;
  box-shadow: inset 0 0 20px rgba(0,0,0,0.5);
  animation: kjhn-window 10s ease-in-out infinite alternate;
}
.scn-kitchen-joes-house-night .pipe-smoke {
  position: absolute; top: 20%; left: 20%; width: 30px; height: 30px;
  background: radial-gradient(circle, rgba(180,160,140,0.3) 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(8px);
  animation: kjhn-smoke 18s linear infinite;
}
.scn-kitchen-joes-house-night .smoke-a {
  left: 20%;
  animation-duration: 18s;
  animation-delay: 0s;
}
.scn-kitchen-joes-house-night .smoke-b {
  left: 28%;
  animation-duration: 22s;
  animation-delay: 6s;
}
.scn-kitchen-joes-house-night .bed {
  position: absolute; bottom: 18%; left: 10%; right: 50%; height: 30%;
  background: linear-gradient(180deg, #2a1a10 0%, #1a0e08 100%);
  border-radius: 10% 10% 5% 5% / 20% 20% 5% 5%;
  box-shadow: inset 0 4px 10px rgba(0,0,0,0.5);
}
.scn-kitchen-joes-house-night .figure-bed {
  position: absolute; bottom: 20%; left: 18%; width: 25px; height: 40px;
  background: linear-gradient(180deg, #0d0704 0%, #0a0503 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: kjhn-fig 8s ease-in-out infinite;
}
.scn-kitchen-joes-house-night .pipe-glow {
  position: absolute; top: 15%; left: 20%; width: 8px; height: 8px;
  background: #d08050;
  border-radius: 50%;
  box-shadow: 0 0 20px 6px rgba(208,128,80,0.4), 0 0 40px 12px rgba(208,128,80,0.1);
  animation: kjhn-glow 3s ease-in-out infinite alternate;
}
@keyframes kjhn-wall {
  0%, 100% { opacity: 0.9; }
  50% { opacity: 1; }
}
@keyframes kjhn-window {
  0%, 100% { opacity: 0.6; }
  50% { opacity: 0.8; }
}
@keyframes kjhn-smoke {
  0% { transform: translateY(0) scale(1); opacity: 0.3; }
  25% { transform: translateY(-20px) scale(0.8); opacity: 0.2; }
  50% { transform: translateY(-40px) scale(0.5); opacity: 0.1; }
  75% { transform: translateY(-60px) scale(0.3); opacity: 0.05; }
  100% { transform: translateY(-80px) scale(0.1); opacity: 0; }
}
@keyframes kjhn-fig {
  0%, 100% { transform: translateY(0) rotate(0deg); }
  25% { transform: translateY(-2px) rotate(2deg); }
  50% { transform: translateY(0) rotate(0deg); }
  75% { transform: translateY(-1px) rotate(-2deg); }
}
@keyframes kjhn-glow {
  0% { box-shadow: 0 0 15px 4px rgba(208,128,80,0.3); opacity: 0.7; }
  50% { box-shadow: 0 0 30px 10px rgba(208,128,80,0.5); opacity: 1; }
  100% { box-shadow: 0 0 20px 6px rgba(208,128,80,0.2); opacity: 0.6; }
}

.scn-morning-after-kitchen {
  background:
    linear-gradient(180deg, #f5e6d3 0%, #e8d5bc 40%, #d4b896 70%, #c0a080 100%),
    radial-gradient(ellipse at 70% 20%, #fff5e0 0%, transparent 60%);
}
.scn-morning-after-kitchen .wall {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #e8d5bc 0%, #d4b896 100%);
  box-shadow: inset 0 0 40px rgba(0,0,0,0.05);
}
.scn-morning-after-kitchen .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(0deg, #b09070 0%, #c8a880 50%, #d4b896 100%);
  border-radius: 30% 30% 0 0 / 15% 15% 0 0;
}
.scn-morning-after-kitchen .window {
  position: absolute; top: 8%; left: 15%; width: 80px; height: 100px;
  background: radial-gradient(ellipse at 50% 30%, #fff9e6 0%, #e8d5bc 80%);
  border: 6px solid #a08060;
  border-radius: 8px;
  box-shadow: inset 0 0 30px rgba(255,255,200,0.3);
}
.scn-morning-after-kitchen .table {
  position: absolute; bottom: 25%; left: 25%; right: 25%; height: 8%;
  background: linear-gradient(180deg, #a08060 0%, #8a6a4a 100%);
  border-radius: 6px;
  box-shadow: 0 4px 10px rgba(0,0,0,0.2);
}
.scn-morning-after-kitchen .chair {
  position: absolute; bottom: 22%; left: 35%; width: 20px; height: 50px;
  background: linear-gradient(180deg, #6a4a3a 0%, #4a2a1a 100%);
  border-radius: 10% 10% 30% 30% / 20% 20% 30% 30%;
}
.scn-morning-after-kitchen .sunbeam {
  position: absolute; top: 0; left: 18%; width: 12px; height: 100%;
  background: linear-gradient(180deg, rgba(255,255,220,0.4) 0%, rgba(255,255,220,0.05) 100%);
  filter: blur(4px);
  animation: mak-beam 20s ease-in-out infinite alternate;
}
.scn-morning-after-kitchen .dust-a {
  position: absolute; top: 20%; left: 30%; width: 4px; height: 4px;
  background: #fff;
  border-radius: 50%;
  opacity: 0.3;
  animation: mak-dust 12s linear infinite;
}
.scn-morning-after-kitchen .dust-b {
  position: absolute; top: 35%; left: 25%; width: 3px; height: 3px;
  background: #fff;
  border-radius: 50%;
  opacity: 0.2;
  animation: mak-dust 15s linear infinite 4s;
}
@keyframes mak-beam {
  0% { transform: translateX(0) scaleX(1); opacity: 0.3; }
  50% { transform: translateX(10px) scaleX(1.1); opacity: 0.5; }
  100% { transform: translateX(0) scaleX(1); opacity: 0.3; }
}
@keyframes mak-dust {
  0% { transform: translate(0, 0) scale(1); opacity: 0.3; }
  25% { transform: translate(10px, -20px) scale(0.8); opacity: 0.4; }
  50% { transform: translate(20px, -40px) scale(0.6); opacity: 0.2; }
  75% { transform: translate(30px, -60px) scale(0.4); opacity: 0.1; }
  100% { transform: translate(40px, -80px) scale(0.2); opacity: 0; }
}

.scn-farewell-joe-biddy {
  background:
    linear-gradient(180deg, #7ab8d4 0%, #a0d0e4 30%, #d4e8f0 50%, #f0e8d4 100%),
    radial-gradient(ellipse at 50% 60%, #f0e8d4 0%, transparent 60%);
}
.scn-farewell-joe-biddy .sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #7ab8d4 0%, #b8dde8 100%);
  animation: fjb-sky 15s ease-in-out infinite alternate;
}
.scn-farewell-joe-biddy .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(0deg, #5a7a4a 0%, #7a9a5a 40%, #8aaa6a 100%);
  border-radius: 40% 40% 0 0 / 20% 20% 0 0;
}
.scn-farewell-joe-biddy .road {
  position: absolute; bottom: 25%; left: 40%; right: 0; height: 12%;
  background: linear-gradient(180deg, #b09070 0%, #8a6a4a 100%);
  border-radius: 0 0 20% 20% / 0 0 50% 50%;
  box-shadow: inset 0 4px 10px rgba(0,0,0,0.2);
  perspective: 100px;
  transform: rotateX(10deg);
}
.scn-farewell-joe-biddy .figure-pip {
  position: absolute; bottom: 18%; left: 45%; width: 18px; height: 60px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0d0d1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: fjb-pip 6s ease-in-out infinite;
}
.scn-farewell-joe-biddy .figure-joe {
  position: absolute; bottom: 18%; left: 60%; width: 22px; height: 65px;
  background: linear-gradient(180deg, #2a2218 0%, #1a1210 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: fjb-joe 6s ease-in-out infinite 0.5s;
}
.scn-farewell-joe-biddy .sun {
  position: absolute; top: 8%; right: 20%; width: 40px; height: 40px;
  background: radial-gradient(circle, #fff5c0 0%, #ffe070 40%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 60px 20px rgba(255,224,112,0.3), 0 0 120px 40px rgba(255,224,112,0.1);
  animation: fjb-sun 20s ease-in-out infinite alternate;
}
.scn-farewell-joe-biddy .cloud-c {
  position: absolute; top: 20%; left: 10%; width: 100px; height: 25px;
  background: linear-gradient(180deg, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0.1) 100%);
  border-radius: 50%;
  filter: blur(10px);
  animation: fjb-drift-c 40s linear infinite;
}
.scn-farewell-joe-biddy .cloud-d {
  position: absolute; top: 12%; right: 15%; width: 80px; height: 20px;
  background: linear-gradient(180deg, rgba(255,255,255,0.4) 0%, rgba(255,255,255,0.05) 100%);
  border-radius: 50%;
  filter: blur(8px);
  animation: fjb-drift-d 35s linear infinite reverse;
}
@keyframes fjb-sky {
  0%, 100% { opacity: 0.85; }
  50% { opacity: 1; }
}
@keyframes fjb-sun {
  0% { transform: translateX(0) scale(1); opacity: 0.9; }
  50% { transform: translateY(-4px) scale(1.03); opacity: 1; }
  100% { transform: translateX(0) scale(1); opacity: 0.9; }
}
@keyframes fjb-pip {
  0%, 100% { transform: translateX(0) rotate(0deg); }
  25% { transform: translateX(4px) rotate(1deg); }
  50% { transform: translateX(0) rotate(0deg); }
  75% { transform: translateX(-2px) rotate(-1deg); }
}
@keyframes fjb-joe {
  0%, 100% { transform: translateX(0) rotate(0deg); }
  25% { transform: translateX(-3px) rotate(-1deg); }
  50% { transform: translateX(0) rotate(0deg); }
  75% { transform: translateX(4px) rotate(1deg); }
}
@keyframes fjb-drift-c {
  0% { transform: translateX(-30px); }
  100% { transform: translateX(110vw); }
}
@keyframes fjb-drift-d {
  0% { transform: translateX(0); }
  100% { transform: translateX(-120vw); }
}

/* joe-and-mrs-joe – firelit interior */
.scn-joe-and-mrs-joe {
  background: linear-gradient(180deg, #4a2e1a 0%, #2a1a0a 40%, #1a0e05 100%),
              radial-gradient(ellipse at 50% 70%, #8b4513 0%, transparent 50%);
}
.scn-joe-and-mrs-joe .room {
  position:absolute; inset:0 0 30% 0;
  background: linear-gradient(180deg, rgba(139,69,19,.3) 0%, transparent 100%);
  animation: jm-room 12s ease-in-out infinite alternate;
}
.scn-joe-and-mrs-joe .fire {
  position:absolute; bottom:25%; left:20%; width:60px; height:80px;
  background: radial-gradient(ellipse at 50% 100%, #ff8c42 0%, #b85a1a 50%, transparent 100%);
  border-radius: 50% 50% 30% 30%;
  filter: blur(4px);
  animation: jm-fire 1.5s ease-in-out infinite alternate;
}
.scn-joe-and-mrs-joe .mantel {
  position:absolute; bottom:40%; left:15%; width:80px; height:12px;
  background: linear-gradient(90deg, #5a3a1a, #3a2210, #5a3a1a);
  border-radius: 2px;
  box-shadow: 0 4px 8px rgba(0,0,0,.5);
}
.scn-joe-and-mrs-joe .figure1 {
  position:absolute; bottom:25%; left:45%; width:20px; height:40px;
  background: linear-gradient(180deg, #1a0e05 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: jm-fig1 6s ease-in-out infinite;
}
.scn-joe-and-mrs-joe .figure2 {
  position:absolute; bottom:25%; left:55%; width:22px; height:42px;
  background: linear-gradient(180deg, #1a0e05 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: jm-fig2 8s ease-in-out infinite reverse;
}
.scn-joe-and-mrs-joe .shadow {
  position:absolute; bottom:20%; left:40%; width:50px; height:10px;
  background: rgba(0,0,0,.4);
  border-radius: 50%;
  filter: blur(6px);
  animation: jm-shadow 10s ease-in-out infinite alternate;
}
.scn-joe-and-mrs-joe .glow {
  position:absolute; inset:0;
  background: radial-gradient(ellipse at 30% 60%, rgba(255,140,66,.2) 0%, transparent 70%);
  pointer-events: none;
  animation: jm-glow 5s ease-in-out infinite alternate;
}
@keyframes jm-room { 0% { opacity:.9 } 50% { opacity:1 } 100% { opacity:.85 } }
@keyframes jm-fire { 0% { transform: scaleY(1) translateY(0); opacity:.8 } 50% { transform: scaleY(1.15) translateY(-4px); opacity:1 } 100% { transform: scaleY(.95) translateY(2px); opacity:.7 } }
@keyframes jm-fig1 { 0% { transform: translateX(0) rotate(-2deg) } 25% { transform: translateX(2px) rotate(2deg) } 50% { transform: translateX(0) rotate(-2deg) } 75% { transform: translateX(-2px) rotate(2deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes jm-fig2 { 0% { transform: translateX(0) rotate(2deg) } 25% { transform: translateX(-2px) rotate(-2deg) } 50% { transform: translateX(0) rotate(2deg) } 75% { transform: translateX(2px) rotate(-2deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes jm-shadow { 0% { transform: scaleX(1) translateX(0) } 50% { transform: scaleX(1.2) translateX(5px) } 100% { transform: scaleX(.8) translateX(-5px) } }
@keyframes jm-glow { 0% { opacity:.6 } 50% { opacity:.8 } 100% { opacity:.5 } }

/* pumblechook-arrives – firelit, door opening */
.scn-pumblechook-arrives {
  background: linear-gradient(180deg, #4a2e1a 0%, #2a1a0a 40%, #1a0e05 100%),
              radial-gradient(ellipse at 30% 60%, #8b4513 0%, transparent 60%);
}
.scn-pumblechook-arrives .room {
  position:absolute; inset:0 0 30% 0;
  background: linear-gradient(180deg, rgba(139,69,19,.3) 0%, transparent 100%);
  animation: pa-room 12s ease-in-out infinite alternate;
}
.scn-pumblechook-arrives .door {
  position:absolute; bottom:25%; left:70%; width:40px; height:70px;
  background: linear-gradient(180deg, #3a2010, #1a0e05);
  border-radius: 4px 4px 0 0;
  box-shadow: inset -4px 0 8px rgba(0,0,0,.5);
  transform-origin: left center;
  animation: pa-door 4s ease-in-out infinite;
}
.scn-pumblechook-arrives .figure1 {
  position:absolute; bottom:25%; left:40%; width:20px; height:40px;
  background: linear-gradient(180deg, #1a0e05 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pa-fig1 6s ease-in-out infinite;
}
.scn-pumblechook-arrives .figure2 {
  position:absolute; bottom:25%; left:55%; width:22px; height:42px;
  background: linear-gradient(180deg, #1a0e05 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pa-fig2 8s ease-in-out infinite reverse;
}
.scn-pumblechook-arrives .arrival {
  position:absolute; bottom:25%; left:75%; width:18px; height:38px;
  background: linear-gradient(180deg, #3a2010 0%, #1a0e05 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pa-arrival 10s ease-in-out infinite;
}
.scn-pumblechook-arrives .fire {
  position:absolute; bottom:25%; left:20%; width:60px; height:80px;
  background: radial-gradient(ellipse at 50% 100%, #ff8c42 0%, #b85a1a 50%, transparent 100%);
  border-radius: 50% 50% 30% 30%;
  filter: blur(4px);
  animation: pa-fire 1.5s ease-in-out infinite alternate;
}
.scn-pumblechook-arrives .shadow {
  position:absolute; bottom:20%; left:35%; width:60px; height:10px;
  background: rgba(0,0,0,.4);
  border-radius: 50%;
  filter: blur(6px);
  animation: pa-shadow 10s ease-in-out infinite alternate;
}
@keyframes pa-room { 0% { opacity:.9 } 50% { opacity:1 } 100% { opacity:.85 } }
@keyframes pa-door { 0% { transform: skewX(0deg) } 25% { transform: skewX(5deg) } 50% { transform: skewX(0deg) } 75% { transform: skewX(-3deg) } 100% { transform: skewX(0deg) } }
@keyframes pa-fig1 { 0% { transform: translateX(0) rotate(-2deg) } 25% { transform: translateX(2px) rotate(2deg) } 50% { transform: translateX(0) rotate(-2deg) } 75% { transform: translateX(-2px) rotate(2deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes pa-fig2 { 0% { transform: translateX(0) rotate(2deg) } 25% { transform: translateX(-2px) rotate(-2deg) } 50% { transform: translateX(0) rotate(2deg) } 75% { transform: translateX(2px) rotate(-2deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes pa-arrival { 0% { transform: translateX(20px) scale(.8); opacity:0 } 30% { transform: translateX(0) scale(1); opacity:1 } 70% { transform: translateX(0) scale(1); opacity:1 } 100% { transform: translateX(10px) scale(.9); opacity:.6 } }
@keyframes pa-fire { 0% { transform: scaleY(1) translateY(0); opacity:.8 } 50% { transform: scaleY(1.15) translateY(-4px); opacity:1 } 100% { transform: scaleY(.95) translateY(2px); opacity:.7 } }
@keyframes pa-shadow { 0% { transform: scaleX(1) translateX(0) } 50% { transform: scaleX(1.2) translateX(5px) } 100% { transform: scaleX(.8) translateX(-5px) } }

/* miss-havisham-mentioned – firelit, two figures talking */
.scn-miss-havisham-mentioned {
  background: linear-gradient(180deg, #4a2e1a 0%, #2a1a0a 40%, #1a0e05 100%),
              radial-gradient(ellipse at 50% 60%, #7a4a2a 0%, transparent 50%);
}
.scn-miss-havisham-mentioned .room {
  position:absolute; inset:0 0 30% 0;
  background: linear-gradient(180deg, rgba(122,74,42,.3) 0%, transparent 100%);
  animation: mh-room 12s ease-in-out infinite alternate;
}
.scn-miss-havisham-mentioned .fire {
  position:absolute; bottom:25%; left:15%; width:50px; height:70px;
  background: radial-gradient(ellipse at 50% 100%, #ff8c42 0%, #b85a1a 50%, transparent 100%);
  border-radius: 50% 50% 30% 30%;
  filter: blur(4px);
  animation: mh-fire 1.5s ease-in-out infinite alternate;
}
.scn-miss-havisham-mentioned .figure1 {
  position:absolute; bottom:25%; left:42%; width:20px; height:40px;
  background: linear-gradient(180deg, #1a0e05 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: mh-fig1 6s ease-in-out infinite;
}
.scn-miss-havisham-mentioned .figure2 {
  position:absolute; bottom:25%; left:58%; width:22px; height:42px;
  background: linear-gradient(180deg, #1a0e05 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: mh-fig2 8s ease-in-out infinite reverse;
}
.scn-miss-havisham-mentioned .point {
  position:absolute; bottom:45%; left:50%; width:8px; height:16px;
  background: linear-gradient(180deg, #3a2010, #1a0e05);
  border-radius: 50% 50% 20% 20% / 80% 80% 20% 20%;
  transform-origin: bottom center;
  animation: mh-point 4s ease-in-out infinite;
}
.scn-miss-havisham-mentioned .shadow {
  position:absolute; bottom:20%; left:38%; width:60px; height:10px;
  background: rgba(0,0,0,.4);
  border-radius: 50%;
  filter: blur(6px);
  animation: mh-shadow 10s ease-in-out infinite alternate;
}
.scn-miss-havisham-mentioned .highlight {
  position:absolute; bottom:30%; left:40%; width:40px; height:20px;
  background: radial-gradient(ellipse at 50% 50%, rgba(255,140,66,.15) 0%, transparent 100%);
  animation: mh-highlight 7s ease-in-out infinite alternate;
}
@keyframes mh-room { 0% { opacity:.9 } 50% { opacity:1 } 100% { opacity:.85 } }
@keyframes mh-fire { 0% { transform: scaleY(1) translateY(0); opacity:.8 } 50% { transform: scaleY(1.15) translateY(-4px); opacity:1 } 100% { transform: scaleY(.95) translateY(2px); opacity:.7 } }
@keyframes mh-fig1 { 0% { transform: translateX(0) rotate(-2deg) } 25% { transform: translateX(2px) rotate(2deg) } 50% { transform: translateX(0) rotate(-2deg) } 75% { transform: translateX(-2px) rotate(2deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes mh-fig2 { 0% { transform: translateX(0) rotate(2deg) } 25% { transform: translateX(-2px) rotate(-2deg) } 50% { transform: translateX(0) rotate(2deg) } 75% { transform: translateX(2px) rotate(-2deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes mh-point { 0% { transform: rotate(-10deg) translateY(0) } 25% { transform: rotate(5deg) translateY(-2px) } 50% { transform: rotate(-10deg) translateY(0) } 75% { transform: rotate(15deg) translateY(-1px) } 100% { transform: rotate(-10deg) translateY(0) } }
@keyframes mh-shadow { 0% { transform: scaleX(1) translateX(0) } 50% { transform: scaleX(1.2) translateX(5px) } 100% { transform: scaleX(.8) translateX(-5px) } }
@keyframes mh-highlight { 0% { opacity:.3; transform: scale(1) } 50% { opacity:.6; transform: scale(1.2) } 100% { opacity:.2; transform: scale(.9) } }

/* leaving-for-miss-havisham – starlit night, departure */
.scn-leaving-for-miss-havisham {
  background: linear-gradient(180deg, #0a1224 0%, #162040 40%, #0f172a 100%),
              radial-gradient(ellipse at 50% 100%, #2a3a5e 0%, transparent 70%);
}
.scn-leaving-for-miss-havisham .sky {
  position:absolute; inset:0 0 40% 0;
  background: linear-gradient(180deg, #0a1224 0%, #162040 50%, #1a2a4a 100%);
  animation: lf-sky 20s ease-in-out infinite alternate;
}
.scn-leaving-for-miss-havisham .star1 {
  position:absolute; top:15%; left:20%; width:4px; height:4px;
  background: #e0e8ff;
  border-radius: 50%;
  box-shadow: 0 0 6px #b0c4ff;
  animation: lf-star 3s ease-in-out infinite alternate;
}
.scn-leaving-for-miss-havisham .star2 {
  position:absolute; top:25%; left:65%; width:3px; height:3px;
  background: #e0e8ff;
  border-radius: 50%;
  box-shadow: 0 0 4px #b0c4ff;
  animation: lf-star 4s ease-in-out infinite alternate-reverse;
  animation-delay: 1s;
}
.scn-leaving-for-miss-havisham .star3 {
  position:absolute; top:10%; left:80%; width:5px; height:5px;
  background: #e0e8ff;
  border-radius: 50%;
  box-shadow: 0 0 8px #b0c4ff;
  animation: lf-star 5s ease-in-out infinite alternate;
  animation-delay: 2s;
}
.scn-leaving-for-miss-havisham .horizon {
  position:absolute; bottom:38%; left:0; right:0; height:10%;
  background: linear-gradient(180deg, transparent 0%, #0f172a 100%);
}
.scn-leaving-for-miss-havisham .cart {
  position:absolute; bottom:30%; left:50%; width:80px; height:50px;
  background: linear-gradient(180deg, #2a1a0a 0%, #1a0e05 100%);
  border-radius: 10% 10% 30% 30% / 20% 20% 40% 40%;
  transform: translateX(-50%);
  box-shadow: 0 -4px 8px rgba(0,0,0,.5);
  animation: lf-cart 12s ease-in-out infinite;
}
.scn-leaving-for-miss-havisham .figure1 {
  position:absolute; bottom:28%; left:48%; width:18px; height:38px;
  background: linear-gradient(180deg, #1a0e05 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: lf-fig1 8s ease-in-out infinite;
}
.scn-leaving-for-miss-havisham .figure2 {
  position:absolute; bottom:28%; left:58%; width:20px; height:40px;
  background: linear-gradient(180deg, #1a0e05 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: lf-fig2 10s ease-in-out infinite reverse;
}
.scn-leaving-for-miss-havisham .road {
  position:absolute; bottom:10%; left:20%; right:20%; height:20%;
  background: linear-gradient(180deg, #1a1a2a 0%, #0f172a 100%);
  border-radius: 40% 40% 0 0 / 100% 100% 0 0;
  transform: perspective(300px) rotateX(10deg);
  animation: lf-road 20s ease-in-out infinite alternate;
}
@keyframes lf-sky { 0% { opacity:.9 } 50% { opacity:1 } 100% { opacity:.8 } }
@keyframes lf-star { 0% { opacity:.4; transform: scale(.8) } 50% { opacity:1; transform: scale(1.2) } 100% { opacity:.6; transform: scale(1) } }
@keyframes lf-cart { 0% { transform: translateX(-50%) translateY(0) rotate(0deg) } 25% { transform: translateX(-50%) translateY(-2px) rotate(-1deg) } 50% { transform: translateX(-50%) translateY(0) rotate(1deg) } 75% { transform: translateX(-50%) translateY(-2px) rotate(-1deg) } 100% { transform: translateX(-50%) translateY(0) rotate(0deg) } }
@keyframes lf-fig1 { 0% { transform: translateX(0) rotate(-2deg) } 25% { transform: translateX(2px) rotate(2deg) } 50% { transform: translateX(0) rotate(-2deg) } 75% { transform: translateX(-2px) rotate(2deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes lf-fig2 { 0% { transform: translateX(0) rotate(2deg) } 25% { transform: translateX(-2px) rotate(-2deg) } 50% { transform: translateX(0) rotate(2deg) } 75% { transform: translateX(2px) rotate(-2deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes lf-road { 0% { transform: perspective(300px) rotateX(10deg) translateY(0) } 50% { transform: perspective(300px) rotateX(12deg) translateY(-2px) } 100% { transform: perspective(300px) rotateX(8deg) translateY(0) } }

/* jaggers-office-clients - tense bright interior */
.scn-jaggers-office-clients { background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%), radial-gradient(ellipse at 50% 80%, #7a6a5a 0%, transparent 70%); }
.scn-jaggers-office-clients .bg-office { position:absolute; inset:0; background: linear-gradient(90deg, #4a3a2a 0%, #6a5a4a 30%, #5a4a3a 70%, #3a2a1a 100%); animation: jg1-pulse 12s ease-in-out infinite alternate; }
.scn-jaggers-office-clients .window { position:absolute; top:10%; left:65%; width:80px; height:100px; background: radial-gradient(ellipse at 50% 50%, #fffae6 0%, #d4c8a8 70%); border:4px solid #2a1a0a; box-shadow: inset 0 0 20px rgba(255,250,230,.4); animation: jg1-window 4s ease-in-out infinite alternate; }
.scn-jaggers-office-clients .desk { position:absolute; bottom:20%; left:20%; right:20%; height:20%; background: linear-gradient(180deg, #5a3a25 0%, #3a2515 100%); border-radius:2% 2% 0 0; box-shadow: 0 8px 16px rgba(0,0,0,.5); transform: perspective(400px) rotateX(5deg); }
.scn-jaggers-office-clients .jaggers { position:absolute; bottom:35%; left:50%; width:50px; height:70px; transform:translateX(-50%); background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%; box-shadow: 0 4px 8px rgba(0,0,0,.6); animation: jg1-figure 3s ease-in-out infinite; }
.scn-jaggers-office-clients .client1 { position:absolute; bottom:25%; left:25%; width:40px; height:60px; background: linear-gradient(180deg, #3a2a2a 0%, #1a1a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%; transform-origin: bottom center; animation: jg1-bow 5s ease-in-out infinite; }
.scn-jaggers-office-clients .client2 { position:absolute; bottom:25%; right:25%; width:40px; height:60px; background: linear-gradient(180deg, #3a2a2a 0%, #1a1a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%; transform-origin: bottom center; animation: jg1-bow 5s ease-in-out infinite 1s; }
.scn-jaggers-office-clients .chair { position:absolute; bottom:18%; left:45%; width:30px; height:40px; background: linear-gradient(180deg, #4a3020 0%, #2a1a10 100%); border-radius: 10% 10% 30% 30%; animation: jg1-sway 6s ease-in-out infinite; }
.scn-jaggers-office-clients .lamp { position:absolute; top:15%; left:30%; width:20px; height:30px; background: radial-gradient(circle, #ffe080 0%, #c8a040 70%); border-radius:50% 50% 20% 20% / 60% 60% 20% 20%; box-shadow: 0 0 30px 10px rgba(255,224,128,.5); animation: jg1-glow 2s ease-in-out infinite alternate; }
@keyframes jg1-pulse { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.85 } }
@keyframes jg1-window { 0% { box-shadow: inset 0 0 10px rgba(255,250,230,.2); } 50% { box-shadow: inset 0 0 30px rgba(255,250,230,.6); } 100% { box-shadow: inset 0 0 15px rgba(255,250,230,.3); } }
@keyframes jg1-figure { 0% { transform: translateX(-50%) translateY(0) rotate(0); } 25% { transform: translateX(-50%) translateY(-2px) rotate(1deg); } 50% { transform: translateX(-50%) translateY(0) rotate(-1deg); } 75% { transform: translateX(-50%) translateY(-2px) rotate(1deg); } 100% { transform: translateX(-50%) translateY(0) rotate(0); } }
@keyframes jg1-bow { 0% { transform: translateY(0) rotate(0); } 20% { transform: translateY(-4px) rotate(5deg); } 40% { transform: translateY(0) rotate(0); } 60% { transform: translateY(-2px) rotate(-3deg); } 100% { transform: translateY(0) rotate(0); } }
@keyframes jg1-sway { 0% { transform: rotate(0); } 50% { transform: rotate(3deg); } 100% { transform: rotate(-3deg); } }
@keyframes jg1-glow { 0% { box-shadow: 0 0 20px 5px rgba(255,224,128,.4); opacity:.8; } 50% { box-shadow: 0 0 40px 15px rgba(255,224,128,.7); opacity:1; } 100% { box-shadow: 0 0 25px 8px rgba(255,224,128,.5); opacity:.9; } }

/* jaggers-office-women - tense bright interior */
.scn-jaggers-office-women { background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%), radial-gradient(ellipse at 50% 80%, #7a6a5a 0%, transparent 70%); }
.scn-jaggers-office-women .bg-office { position:absolute; inset:0; background: linear-gradient(90deg, #4a3a2a 0%, #6a5a4a 30%, #5a4a3a 70%, #3a2a1a 100%); animation: jg2-pulse 12s ease-in-out infinite alternate; }
.scn-jaggers-office-women .window { position:absolute; top:10%; left:65%; width:80px; height:100px; background: radial-gradient(ellipse at 50% 50%, #fffae6 0%, #d4c8a8 70%); border:4px solid #2a1a0a; box-shadow: inset 0 0 20px rgba(255,250,230,.4); animation: jg2-window 4s ease-in-out infinite alternate; }
.scn-jaggers-office-women .desk { position:absolute; bottom:20%; left:20%; right:20%; height:20%; background: linear-gradient(180deg, #5a3a25 0%, #3a2515 100%); border-radius:2% 2% 0 0; box-shadow: 0 8px 16px rgba(0,0,0,.5); transform: perspective(400px) rotateX(5deg); }
.scn-jaggers-office-women .jaggers { position:absolute; bottom:35%; left:50%; width:50px; height:70px; transform:translateX(-50%); background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%; box-shadow: 0 4px 8px rgba(0,0,0,.6); animation: jg2-figure 3s ease-in-out infinite; }
.scn-jaggers-office-women .woman1 { position:absolute; bottom:26%; left:22%; width:38px; height:55px; background: linear-gradient(180deg, #3a2a3a 0%, #1a1a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%; animation: jg2-plead 4s ease-in-out infinite; }
.scn-jaggers-office-women .woman2 { position:absolute; bottom:26%; right:22%; width:38px; height:55px; background: linear-gradient(180deg, #4a2a2a 0%, #2a1a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%; animation: jg2-cry 6s ease-in-out infinite; }
.scn-jaggers-office-women .handkerchief { position:absolute; bottom:34%; right:25%; width:12px; height:12px; background: radial-gradient(circle, #e0d0c0 0%, #c0b0a0 70%); border-radius:50%; box-shadow: 0 0 10px 2px rgba(224,208,192,.5); animation: jg2-wring 3s ease-in-out infinite; }
.scn-jaggers-office-women .chair { position:absolute; bottom:18%; left:45%; width:30px; height:40px; background: linear-gradient(180deg, #4a3020 0%, #2a1a10 100%); border-radius: 10% 10% 30% 30%; animation: jg2-sway 6s ease-in-out infinite; }
@keyframes jg2-pulse { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.85 } }
@keyframes jg2-window { 0% { box-shadow: inset 0 0 10px rgba(255,250,230,.2); } 50% { box-shadow: inset 0 0 30px rgba(255,250,230,.6); } 100% { box-shadow: inset 0 0 15px rgba(255,250,230,.3); } }
@keyframes jg2-figure { 0% { transform: translateX(-50%) translateY(0) rotate(0); } 25% { transform: translateX(-50%) translateY(-2px) rotate(1deg); } 50% { transform: translateX(-50%) translateY(0) rotate(-1deg); } 75% { transform: translateX(-50%) translateY(-2px) rotate(1deg); } 100% { transform: translateX(-50%) translateY(0) rotate(0); } }
@keyframes jg2-plead { 0% { transform: translateY(0) rotate(0); } 25% { transform: translateY(-5px) rotate(5deg); } 50% { transform: translateY(0) rotate(0); } 75% { transform: translateY(-3px) rotate(-3deg); } 100% { transform: translateY(0) rotate(0); } }
@keyframes jg2-cry { 0% { transform: translateY(0) scaleY(1); } 25% { transform: translateY(-2px) scaleY(1.02); } 50% { transform: translateY(0) scaleY(1); } 75% { transform: translateY(-2px) scaleY(1.02); } 100% { transform: translateY(0) scaleY(1); } }
@keyframes jg2-wring { 0% { transform: rotate(0) scale(1); } 50% { transform: rotate(180deg) scale(1.1); } 100% { transform: rotate(360deg) scale(1); } }
@keyframes jg2-sway { 0% { transform: rotate(0); } 50% { transform: rotate(3deg); } 100% { transform: rotate(-3deg); } }

/* jaggers-office-mike - funny bright interior */
.scn-jaggers-office-mike { background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%), radial-gradient(ellipse at 50% 80%, #7a6a5a 0%, transparent 70%); }
.scn-jaggers-office-mike .bg-office { position:absolute; inset:0; background: linear-gradient(90deg, #4a3a2a 0%, #6a5a4a 30%, #5a4a3a 70%, #3a2a1a 100%); animation: jg3-wiggle 8s ease-in-out infinite alternate; }
.scn-jaggers-office-mike .desk { position:absolute; bottom:20%; left:20%; right:20%; height:20%; background: linear-gradient(180deg, #5a3a25 0%, #3a2515 100%); border-radius:2% 2% 0 0; box-shadow: 0 8px 16px rgba(0,0,0,.5); transform: perspective(400px) rotateX(5deg); }
.scn-jaggers-office-mike .clerk { position:absolute; bottom:32%; left:30%; width:35px; height:45px; background: linear-gradient(180deg, #4a4a3a 0%, #2a2a1a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%; animation: jg3-hop 2s ease-in-out infinite; }
.scn-jaggers-office-mike .mike { position:absolute; bottom:25%; left:55%; width:45px; height:65px; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%; animation: jg3-shiver 4s ease-in-out infinite; }
.scn-jaggers-office-mike .stool { position:absolute; bottom:15%; left:30%; width:20px; height:25px; background: linear-gradient(180deg, #6a4a2a 0%, #4a2a15 100%); border-radius: 50% 50% 10% 10% / 60% 60% 10% 10%; animation: jg3-tilt 3s ease-in-out infinite; }
.scn-jaggers-office-mike .sneeze { position:absolute; top:10%; right:35%; width:30px; height:15px; background: radial-gradient(ellipse at 50% 50%, rgba(255,255,230,.6) 0%, transparent 70%); filter: blur(3px); animation: jg3-puff 5s ease-in-out infinite; }
.scn-jaggers-office-mike .lamp { position:absolute; top:15%; left:25%; width:20px; height:30px; background: radial-gradient(circle, #ffe080 0%, #c8a040 70%); border-radius:50% 50% 20% 20% / 60% 60% 20% 20%; box-shadow: 0 0 30px 10px rgba(255,224,128,.5); animation: jg3-glow 2s ease-in-out infinite alternate; }
@keyframes jg3-wiggle { 0% { transform: translateX(0); } 25% { transform: translateX(2px); } 50% { transform: translateX(-2px); } 75% { transform: translateX(2px); } 100% { transform: translateX(0); } }
@keyframes jg3-hop { 0% { transform: translateY(0); } 30% { transform: translateY(-10px) rotate(-5deg); } 60% { transform: translateY(0) rotate(5deg); } 100% { transform: translateY(0) rotate(0); } }
@keyframes jg3-shiver { 0% { transform: translateY(0) rotate(0); } 15% { transform: translateY(-3px) rotate(3deg); } 30% { transform: translateY(0) rotate(-2deg); } 45% { transform: translateY(-3px) rotate(2deg); } 60% { transform: translateY(0) rotate(0); } 80% { transform: translateY(-2px) rotate(1deg); } 100% { transform: translateY(0) rotate(0); } }
@keyframes jg3-tilt { 0% { transform: rotate(0); } 50% { transform: rotate(10deg); } 100% { transform: rotate(-10deg); } }
@keyframes jg3-puff { 0% { opacity:0; transform: scale(0.5); } 20% { opacity:1; transform: scale(1.2); } 40% { opacity:0; transform: scale(1.5); } 100% { opacity:0; transform: scale(0.5); } }
@keyframes jg3-glow { 0% { box-shadow: 0 0 20px 5px rgba(255,224,128,.4); opacity:.8; } 50% { box-shadow: 0 0 40px 15px rgba(255,224,128,.7); opacity:1; } 100% { box-shadow: 0 0 25px 8px rgba(255,224,128,.5); opacity:.9; } }

/* wemmick-arrival - calm bright interior */
.scn-wemmick-arrival { background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%), radial-gradient(ellipse at 50% 80%, #7a6a5a 0%, transparent 70%); }
.scn-wemmick-arrival .bg-office { position:absolute; inset:0; background: linear-gradient(90deg, #4a3a2a 0%, #6a5a4a 40%, #5a4a3a 70%, #3a2a1a 100%); animation: wm-breath 15s ease-in-out infinite alternate; }
.scn-wemmick-arrival .door { position:absolute; bottom:10%; left:40%; right:40%; height:80%; background: linear-gradient(180deg, #3a2515 0%, #1a100a 100%); border-radius: 50% 50% 0 0 / 20% 20% 0 0; box-shadow: 0 0 30px rgba(0,0,0,.7) inset; border: 4px solid #2a1a0a; width:60px; left:50%; transform:translateX(-50%); }
.scn-wemmick-arrival .wemmick { position:absolute; bottom:22%; left:40%; width:40px; height:60px; background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%; animation: wm-walk 7s ease-in-out infinite; }
.scn-wemmick-arrival .narrator { position:absolute; bottom:22%; left:52%; width:40px; height:60px; background: linear-gradient(180deg, #2a2a3a 0%, #0a0a1a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%; animation: wm-walk 7s ease-in-out infinite 0.5s; }
.scn-wemmick-arrival .floor { position:absolute; bottom:0; left:0; right:0; height:15%; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); box-shadow: inset 0 10px 20px rgba(0,0,0,.3); }
.scn-wemmick-arrival .wall-panel { position:absolute; bottom:20%; left:20%; width:30px; height:40px; background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%); border-radius: 5px; box-shadow: inset 0 0 8px rgba(0,0,0,.3); animation: wm-panel 12s ease-in-out infinite alternate; }
@keyframes wm-breath { 0% { opacity:.9; } 50% { opacity:1; } 100% { opacity:.95; } }
@keyframes wm-walk { 0% { transform: translateY(0) rotate(0); } 25% { transform: translateY(-3px) rotate(1deg); } 50% { transform: translateY(0) rotate(0); } 75% { transform: translateY(-3px) rotate(-1deg); } 100% { transform: translateY(0) rotate(0); } }
@keyframes wm-panel { 0% { transform: scaleX(1); } 50% { transform: scaleX(1.02); } 100% { transform: scaleX(1); } }

.scn-visit-to-miss-havisham-after-apprenticeship {
  background: 
    linear-gradient(180deg, #1a1513 0%, #2a1f1a 40%, #3a2a1f 100%),
    radial-gradient(ellipse at 50% 70%, #4a3a2a 0%, transparent 70%);
}
.scn-visit-to-miss-havisham-after-apprenticeship .bg-wall {
  position: absolute; inset: 0 0 20% 0;
  background: linear-gradient(135deg, #2a1f1a 0%, #3a2a1f 60%, #1a1513 100%);
  animation: ha-wall 10s ease-in-out infinite alternate;
}
.scn-visit-to-miss-havisham-after-apprenticeship .window-pane {
  position: absolute; top: 15%; left: 35%; width: 120px; height: 80px;
  background: radial-gradient(ellipse at 50% 60%, #e6c8a0 0%, #c8a87a 50%, #8a6a4a 100%);
  border-radius: 4px; box-shadow: inset 0 0 30px rgba(200,168,122,0.5), 0 0 60px rgba(200,168,122,0.3);
  animation: ha-window 6s ease-in-out infinite alternate;
}
.scn-visit-to-miss-havisham-after-apprenticeship .drape-left {
  position: absolute; top: 10%; left: 25%; width: 60px; height: 100px;
  background: linear-gradient(180deg, #5a3a2a 0%, #3a221a 100%);
  border-radius: 10% 0 0 40%; transform-origin: top; filter: blur(2px);
  animation: ha-drape 8s ease-in-out infinite alternate;
}
.scn-visit-to-miss-havisham-after-apprenticeship .drape-right {
  position: absolute; top: 10%; right: 25%; width: 60px; height: 100px;
  background: linear-gradient(180deg, #5a3a2a 0%, #3a221a 100%);
  border-radius: 0 10% 40% 0; transform-origin: top; filter: blur(2px);
  animation: ha-drape 8s ease-in-out infinite alternate-reverse;
}
.scn-visit-to-miss-havisham-after-apprenticeship .silhouette-figure {
  position: absolute; bottom: 25%; left: 50%; width: 30px; height: 60px;
  background: linear-gradient(180deg, #0f0a08 0%, #1a1210 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform: translateX(-50%);
  animation: ha-figure 12s ease-in-out infinite;
}
.scn-visit-to-miss-havisham-after-apprenticeship .armchair {
  position: absolute; bottom: 20%; left: 20%; width: 80px; height: 60px;
  background: linear-gradient(135deg, #4a2a1a 0%, #2a1a0a 100%);
  border-radius: 20% 20% 10% 10%; box-shadow: inset 0 -10px 20px rgba(0,0,0,0.6);
  animation: ha-chair 14s ease-in-out infinite alternate;
}
.scn-visit-to-miss-havisham-after-apprenticeship .candle-glow {
  position: absolute; bottom: 40%; left: 60%; width: 8px; height: 16px;
  background: radial-gradient(circle, #ffd8a0 0%, #e6a060 70%);
  border-radius: 50%; box-shadow: 0 0 30px 10px rgba(230,160,96,0.6), 0 0 60px 20px rgba(230,160,96,0.3);
  animation: ha-candle 3s ease-in-out infinite alternate;
}
@keyframes ha-wall {
  0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.85; }
}
@keyframes ha-window {
  0% { opacity: 0.6; filter: brightness(0.9); } 50% { opacity: 1; filter: brightness(1.1); } 100% { opacity: 0.7; filter: brightness(0.95); }
}
@keyframes ha-drape {
  0% { transform: rotate(0deg) scaleX(1); } 50% { transform: rotate(2deg) scaleX(1.02); } 100% { transform: rotate(-1deg) scaleX(0.98); }
}
@keyframes ha-figure {
  0% { transform: translateX(-50%) translateY(0) rotate(0deg); } 50% { transform: translateX(-48%) translateY(-2px) rotate(1deg); } 100% { transform: translateX(-52%) translateY(1px) rotate(-1deg); }
}
@keyframes ha-chair {
  0% { transform: translateY(0) scale(1); } 50% { transform: translateY(-2px) scale(1.01); } 100% { transform: translateY(1px) scale(0.99); }
}
@keyframes ha-candle {
  0% { opacity: 0.7; transform: scale(1); } 50% { opacity: 1; transform: scale(1.15); } 100% { opacity: 0.8; transform: scale(0.95); }
}

.scn-evening-at-three-jolly-bargemen {
  background: 
    linear-gradient(180deg, #1f1a16 0%, #2c221c 40%, #3a2e26 100%),
    radial-gradient(ellipse at 50% 60%, #4a3828 0%, transparent 70%);
}
.scn-evening-at-three-jolly-bargemen .pub-bg {
  position: absolute; inset: 0 0 15% 0;
  background: linear-gradient(180deg, #2c221c 0%, #1f1a16 100%);
  animation: jo-bg 12s ease-in-out infinite alternate;
}
.scn-evening-at-three-jolly-bargemen .oak-table {
  position: absolute; bottom: 18%; left: 25%; width: 200px; height: 40px;
  background: linear-gradient(180deg, #6a4a2a 0%, #4a2a12 100%);
  border-radius: 10px; box-shadow: 0 6px 12px rgba(0,0,0,0.7);
  animation: jo-table 18s ease-in-out infinite alternate;
}
.scn-evening-at-three-jolly-bargemen .lantern-glow {
  position: absolute; bottom: 35%; left: 45%; width: 20px; height: 30px;
  background: radial-gradient(circle, #ffe0a0 0%, #d4a050 60%);
  border-radius: 30% 30% 20% 20%; box-shadow: 0 0 40px 15px rgba(212,160,80,0.6), 0 0 80px 30px rgba(212,160,80,0.3);
  animation: jo-lantern 4s ease-in-out infinite alternate;
}
.scn-evening-at-three-jolly-bargemen .figure-orlick {
  position: absolute; bottom: 22%; left: 30%; width: 28px; height: 55px;
  background: linear-gradient(180deg, #1a1410 0%, #0f0a08 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom;
  animation: jo-walk1 9s ease-in-out infinite alternate;
}
.scn-evening-at-three-jolly-bargemen .figure-wopsle {
  position: absolute; bottom: 22%; left: 55%; width: 26px; height: 52px;
  background: linear-gradient(180deg, #1a1410 0%, #0f0a08 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom;
  animation: jo-walk2 9s ease-in-out infinite alternate-reverse;
}
.scn-evening-at-three-jolly-bargemen .tankard {
  position: absolute; bottom: 24%; left: 42%; width: 16px; height: 20px;
  background: linear-gradient(180deg, #8a6a3a 0%, #6a4a22 100%);
  border-radius: 4px 4px 8px 8px; box-shadow: 0 2px 6px rgba(0,0,0,0.5);
  animation: jo-tankard 7s ease-in-out infinite;
}
.scn-evening-at-three-jolly-bargemen .wall-beam {
  position: absolute; top: 8%; left: 20%; width: 8px; height: 30%;
  background: linear-gradient(180deg, #4a3828 0%, #2c221c 100%);
  border-radius: 2px; box-shadow: 0 0 4px rgba(0,0,0,0.3);
  animation: jo-beam 20s linear infinite;
}
@keyframes jo-bg {
  0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.85; }
}
@keyframes jo-table {
  0% { transform: translateY(0) scale(1); } 50% { transform: translateY(-2px) scale(1.005); } 100% { transform: translateY(1px) scale(0.995); }
}
@keyframes jo-lantern {
  0% { opacity: 0.7; transform: rotate(-2deg) scale(1); } 50% { opacity: 1; transform: rotate(2deg) scale(1.1); } 100% { opacity: 0.8; transform: rotate(0deg) scale(0.95); }
}
@keyframes jo-walk1 {
  0% { transform: translateX(0) translateY(0) rotate(0deg); } 50% { transform: translateX(5px) translateY(-1px) rotate(1deg); } 100% { transform: translateX(-3px) translateY(1px) rotate(-1deg); }
}
@keyframes jo-walk2 {
  0% { transform: translateX(0) translateY(0) rotate(0deg); } 50% { transform: translateX(-4px) translateY(-1px) rotate(-1deg); } 100% { transform: translateX(2px) translateY(1px) rotate(1deg); }
}
@keyframes jo-tankard {
  0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-3px) rotate(3deg); } 100% { transform: translateY(0) rotate(-2deg); }
}
@keyframes jo-beam {
  0% { transform: rotate(0deg); } 50% { transform: rotate(0.5deg); } 100% { transform: rotate(-0.5deg); }
}

.scn-walking-home-in-dark {
  background: 
    linear-gradient(180deg, #0a0a12 0%, #141422 40%, #1a1a2a 100%),
    radial-gradient(ellipse at 50% 10%, #2a2a3e 0%, transparent 70%);
}
.scn-walking-home-in-dark .night-sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #0e0e1a 0%, #1a1a2e 100%);
  animation: wa-sky 20s ease-in-out infinite alternate;
}
.scn-walking-home-in-dark .moon {
  position: absolute; top: 10%; left: 70%; width: 40px; height: 40px;
  background: radial-gradient(circle, #e8e0c0 0%, #c0b8a0 70%);
  border-radius: 50%; box-shadow: 0 0 50px 20px rgba(200,190,160,0.5), 0 0 100px 40px rgba(200,190,160,0.2);
  animation: wa-moon 15s ease-in-out infinite alternate;
}
.scn-walking-home-in-dark .road {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a12 100%);
  border-radius: 60% 40% 0 0 / 80% 70% 0 0; box-shadow: inset 0 10px 30px rgba(0,0,0,0.8);
  animation: wa-road 18s ease-in-out infinite alternate;
}
.scn-walking-home-in-dark .silhouette-pip {
  position: absolute; bottom: 20%; left: 30%; width: 22px; height: 48px;
  background: linear-gradient(180deg, #08080e 0%, #12121e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom;
  animation: wa-pip 8s ease-in-out infinite;
}
.scn-walking-home-in-dark .silhouette-orlick {
  position: absolute; bottom: 20%; left: 50%; width: 24px; height: 50px;
  background: linear-gradient(180deg, #08080e 0%, #12121e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom;
  animation: wa-orlick 8s ease-in-out infinite alternate;
}
.scn-walking-home-in-dark .tall-tree {
  position: absolute; bottom: 15%; right: 10%; width: 12px; height: 120px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a12 100%);
  border-radius: 40% 40% 10% 10%; box-shadow: 0 0 10px rgba(0,0,0,0.5);
  transform: rotate(2deg); animation: wa-tree 30s ease-in-out infinite alternate;
}
.scn-walking-home-in-dark .fence-posts {
  position: absolute; bottom: 12%; left: 5%; width: 4px; height: 30px;
  background: #1a1a2a; border-radius: 2px; box-shadow: 20px 0 0 #1a1a2a, 40px 0 0 #1a1a2a, 60px 0 0 #1a1a2a;
  animation: wa-fence 25s linear infinite;
}
@keyframes wa-sky {
  0% { opacity: 0.7; } 50% { opacity: 1; } 100% { opacity: 0.8; }
}
@keyframes wa-moon {
  0% { transform: translateX(0) translateY(0); filter: brightness(0.9); } 50% { transform: translateX(5px) translateY(-3px); filter: brightness(1.1); } 100% { transform: translateX(-3px) translateY(2px); filter: brightness(1); }
}
@keyframes wa-road {
  0% { transform: translateY(0); } 50% { transform: translateY(-3px); } 100% { transform: translateY(1px); }
}
@keyframes wa-pip {
  0% { transform: translateX(0) translateY(0) rotate(0deg); } 33% { transform: translateX(6px) translateY(-1px) rotate(2deg); } 66% { transform: translateX(-4px) translateY(1px) rotate(-1deg); } 100% { transform: translateX(2px) translateY(0) rotate(0deg); }
}
@keyframes wa-orlick {
  0% { transform: translateX(0) translateY(0) rotate(0deg); } 33% { transform: translateX(-5px) translateY(-1px) rotate(-2deg); } 66% { transform: translateX(4px) translateY(1px) rotate(1deg); } 100% { transform: translateX(0) translateY(0) rotate(0deg); }
}
@keyframes wa-tree {
  0% { transform: rotate(1deg) scaleY(1); } 50% { transform: rotate(-1deg) scaleY(1.02); } 100% { transform: rotate(0deg) scaleY(0.98); }
}
@keyframes wa-fence {
  0% { transform: translateX(0); } 100% { transform: translateX(-60px); }
}

.scn-attack-on-mrs-joe {
  background: 
    linear-gradient(180deg, #0d0d12 0%, #1a1a24 40%, #242434 100%),
    radial-gradient(ellipse at 50% 80%, #2a2a3e 0%, transparent 70%);
}
.scn-attack-on-mrs-joe .house-interior {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(135deg, #141420 0%, #1e1e30 60%, #0a0a12 100%);
  animation: at-interior 8s ease-in-out infinite alternate;
}
.scn-attack-on-mrs-joe .broken-door {
  position: absolute; bottom: 20%; left: 30%; width: 80px; height: 100px;
  background: linear-gradient(180deg, #2a1e12 0%, #1a100a 100%);
  border-radius: 4px 4px 0 0; box-shadow: inset 0 0 20px rgba(0,0,0,0.8), 0 10px 20px rgba(0,0,0,0.5);
  transform: rotate(5deg); animation: at-door 3s ease-in-out infinite alternate;
}
.scn-attack-on-mrs-joe .shattered-window {
  position: absolute; top: 20%; left: 50%; width: 60px; height: 40px;
  background: linear-gradient(135deg, #1a2030 0%, #0a0e18 100%);
  border-radius: 4px; border: 2px solid #2a3040; box-shadow: 0 0 30px rgba(30,40,60,0.5);
  animation: at-window 5s ease-in-out infinite alternate;
}
.scn-attack-on-mrs-joe .shadow-figure {
  position: absolute; bottom: 18%; left: 45%; width: 30px; height: 65px;
  background: linear-gradient(180deg, #0a0a12 0%, #040408 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom;
  animation: at-figure 6s ease-in-out infinite alternate;
}
.scn-attack-on-mrs-joe .overturned-chair {
  position: absolute; bottom: 10%; left: 60%; width: 40px; height: 50px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a100a 100%);
  border-radius: 10% 10% 20% 20%; transform: rotate(30deg);
  box-shadow: 0 0 10px rgba(0,0,0,0.7); animation: at-chair 10s ease-in-out infinite alternate;
}
.scn-attack-on-mrs-joe .spilled-light {
  position: absolute; bottom: 5%; left: 35%; width: 60px; height: 30px;
  background: radial-gradient(ellipse at 50% 100%, #c8553d 0%, #7a2a1a 60%, transparent 100%);
  border-radius: 50%; filter: blur(8px); animation: at-light 4s ease-in-out infinite alternate;
}
@keyframes at-interior {
  0% { opacity: 0.8; filter: brightness(0.9); } 50% { opacity: 1; filter: brightness(1.0); } 100% { opacity: 0.85; filter: brightness(0.95); }
}
@keyframes at-door {
  0% { transform: rotate(4deg) translateX(0); } 50% { transform: rotate(6deg) translateX(2px); } 100% { transform: rotate(3deg) translateX(-1px); }
}
@keyframes at-window {
  0% { opacity: 0.5; filter: brightness(0.8); } 50% { opacity: 1; filter: brightness(1.2); } 100% { opacity: 0.6; filter: brightness(0.9); }
}
@keyframes at-figure {
  0% { transform: translateX(0) translateY(0) rotate(0deg); } 50% { transform: translateX(4px) translateY(-3px) rotate(3deg); } 100% { transform: translateX(-2px) translateY(2px) rotate(-2deg); }
}
@keyframes at-chair {
  0% { transform: rotate(28deg) translateY(0); } 50% { transform: rotate(32deg) translateY(-2px); } 100% { transform: rotate(26deg) translateY(1px); }
}
@keyframes at-light {
  0% { opacity: 0.6; transform: scaleX(1) scaleY(1); } 50% { opacity: 1; transform: scaleX(1.2) scaleY(1.1); } 100% { opacity: 0.7; transform: scaleX(0.8) scaleY(0.9); }
}

.scn-attack-aftermath {
  background: linear-gradient(180deg, #1a1a3e 0%, #0d0d1a 60%, #000012 100%),
              radial-gradient(ellipse at 60% 70%, #2a1a0a 0%, transparent 60%);
}
.scn-attack-aftermath .bg   { position:absolute; inset:0; background: linear-gradient(180deg, #12122a 0%, transparent 100%); animation: aa-bg 12s ease-in-out infinite alternate; }
.scn-attack-aftermath .wall { position:absolute; top:0; left:0; right:0; height:55%; background: linear-gradient(180deg, #1a142a 0%, #0f0a1a 100%); border-radius: 0 0 30% 30% / 0 0 20% 20%; box-shadow: inset 0 8px 20px rgba(0,0,0,.6); }
.scn-attack-aftermath .floor{ position:absolute; bottom:0; left:0; right:0; height:45%; background: linear-gradient(180deg, #1a1210 0%, #0a0806 100%); }
.scn-attack-aftermath .table{ position:absolute; bottom:28%; left:30%; width:120px; height:16px; background: linear-gradient(90deg, #3a2a1a 0%, #2a1a0a 100%); border-radius: 4px; box-shadow: 0 4px 8px rgba(0,0,0,.5); animation: aa-table 8s ease-in-out infinite; }
.scn-attack-aftermath .figure{ position:absolute; bottom:20%; left:38%; width:28px; height:70px; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: aa-figure 6s ease-in-out infinite; }
.scn-attack-aftermath .lantern{ position:absolute; bottom:32%; left:34%; width:14px; height:20px; background: radial-gradient(circle, #e8a040 0%, #a06020 70%); border-radius: 30% 30% 20% 20%; box-shadow: 0 0 30px 12px #c08030, 0 0 60px 24px rgba(192,128,48,.4); animation: aa-lantern 3s ease-in-out infinite alternate; }
.scn-attack-aftermath .shadow{ position:absolute; bottom:18%; left:35%; width:80px; height:4px; background: radial-gradient(ellipse, rgba(0,0,0,.6) 0%, transparent 100%); filter: blur(6px); animation: aa-shadow 4s ease-in-out infinite; }

@keyframes aa-bg     { 0% { opacity:.7 } 50% { opacity:1 } 100% { opacity:.6 } }
@keyframes aa-table  { 0%,100% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(2px) rotate(1deg) } }
@keyframes aa-figure { 0% { transform: translateX(0) translateY(0) rotate(-1deg) } 25% { transform: translateX(2px) translateY(2px) rotate(1deg) } 50% { transform: translateX(0) translateY(3px) rotate(0) } 75% { transform: translateX(-2px) translateY(1px) rotate(-2deg) } 100% { transform: translateX(0) translateY(0) rotate(0) } }
@keyframes aa-lantern{ 0% { box-shadow: 0 0 20px 8px #c08030, 0 0 40px 16px rgba(192,128,48,.3); opacity:.8 } 50% { box-shadow: 0 0 40px 16px #f0b050, 0 0 80px 30px rgba(240,176,80,.5); opacity:1 } 100% { box-shadow: 0 0 25px 10px #c08030, 0 0 50px 20px rgba(192,128,48,.35); opacity:.9 } }
@keyframes aa-shadow{ 0%,100% { transform: scaleX(1) translateX(0); opacity:.6 } 50% { transform: scaleX(1.2) translateX(4px); opacity:.8 } }

.scn-biddy-arrives {
  background: linear-gradient(180deg, #f9e7b3 0%, #e6c983 40%, #d4b06a 100%),
              radial-gradient(ellipse at 70% 20%, #fff5d6 0%, transparent 60%);
}
.scn-biddy-arrives .bg        { position:absolute; inset:0; background: linear-gradient(180deg, #fdf4d4 0%, transparent 100%); animation: ba-bg 15s ease-in-out infinite alternate; }
.scn-biddy-arrives .window    { position:absolute; top:5%; right:15%; width:90px; height:100px; background: linear-gradient(180deg, #b0d4f0 0%, #8cb8e0 100%); border-radius: 8px 8px 4px 4px; box-shadow: inset 0 0 0 8px #4a3a2a, 0 0 30px 10px rgba(176,212,240,.4); }
.scn-biddy-arrives .sunbeam   { position:absolute; top:10%; right:20%; width:60px; height:160px; background: linear-gradient(180deg, rgba(255,245,200,.5) 0%, transparent 100%); clip-path: polygon(30% 0, 70% 0, 85% 100%, 15% 100%); animation: ba-sunbeam 20s linear infinite; }
.scn-biddy-arrives .table     { position:absolute; bottom:30%; left:35%; width:140px; height:18px; background: linear-gradient(90deg, #7a6a4a 0%, #5a4a2a 100%); border-radius: 6px; box-shadow: 0 4px 8px rgba(0,0,0,.3); }
.scn-biddy-arrives .chair     { position:absolute; bottom:28%; left:20%; width:40px; height:50px; background: linear-gradient(180deg, #5a4a2a 0%, #3a2a1a 100%); border-radius: 20% 20% 10% 10%; animation: ba-chair 6s ease-in-out infinite; }
.scn-biddy-arrives .figure-joe{ position:absolute; bottom:26%; left:22%; width:30px; height:65px; background: linear-gradient(180deg, #2a3a4a 0%, #1a2a3a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ba-joe 8s ease-in-out infinite; }
.scn-biddy-arrives .figure-biddy{position:absolute; bottom:30%; left:58%; width:26px; height:60px; background: linear-gradient(180deg, #4a6a4a 0%, #2a4a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: ba-biddy 7s ease-in-out infinite; }
.scn-biddy-arrives .plant     { position:absolute; bottom:22%; left:70%; width:30px; height:50px; background: radial-gradient(ellipse at 50% 100%, #4a7a4a 0%, #2a4a2a 60%, transparent 100%); border-radius: 50%; filter: blur(2px); animation: ba-plant 12s ease-in-out infinite; }
@keyframes ba-bg      { 0% { opacity:.9 } 50% { opacity:1 } 100% { opacity:.85 } }
@keyframes ba-sunbeam { 0% { transform: translateX(0) rotate(0deg); opacity:.4 } 50% { transform: translateX(10px) rotate(2deg); opacity:.6 } 100% { transform: translateX(0) rotate(0deg); opacity:.4 } }
@keyframes ba-chair   { 0%,100% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(2px) rotate(1deg) } }
@keyframes ba-joe     { 0% { transform: translateX(0) translateY(0) rotate(-1deg) } 25% { transform: translateX(2px) translateY(-1px) rotate(1deg) } 50% { transform: translateX(0) translateY(0) rotate(0) } 75% { transform: translateX(-2px) translateY(1px) rotate(-1deg) } 100% { transform: translateX(0) translateY(0) rotate(0) } }
@keyframes ba-biddy   { 0% { transform: translateX(0) rotate(0) } 33% { transform: translateX(4px) rotate(2deg) } 66% { transform: translateX(1px) rotate(-1deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes ba-plant   { 0% { transform: rotate(0deg) scaleY(1) } 50% { transform: rotate(5deg) scaleY(1.05) } 100% { transform: rotate(0deg) scaleY(1) } }

.scn-mysterious-sign {
  background: linear-gradient(180deg, #dfe6e9 0%, #b2bec3 50%, #919aa1 100%),
              radial-gradient(ellipse at 50% 40%, #f0f4f8 0%, transparent 70%);
}
.scn-mysterious-sign .bg          { position:absolute; inset:0; background: linear-gradient(180deg, #e5eaee 0%, transparent 100%); animation: ms-bg 5s ease-in-out infinite alternate; }
.scn-mysterious-sign .slate       { position:absolute; bottom:30%; left:35%; width:120px; height:90px; background: linear-gradient(135deg, #5a4a3a 0%, #3a2a1a 50%, #2a1a0a 100%); border-radius: 8px; box-shadow: 0 6px 12px rgba(0,0,0,.4); animation: ms-slate 3s ease-in-out infinite; }
.scn-mysterious-sign .hand-point  { position:absolute; bottom:38%; left:30%; width:20px; height:30px; background: linear-gradient(180deg, #c8a878 0%, #a08050 100%); border-radius: 50% 50% 0 0; transform-origin: bottom center; animation: ms-point 2s ease-in-out infinite; }
.scn-mysterious-sign .hand-hold   { position:absolute; bottom:36%; left:55%; width:18px; height:28px; background: linear-gradient(180deg, #b89868 0%, #907050 100%); border-radius: 50% 50% 0 0; transform: rotate(10deg); animation: ms-hold 2.5s ease-in-out infinite; }
.scn-mysterious-sign .silhouette  { position:absolute; bottom:34%; left:42%; width:40px; height:70px; background: #1a1a2a; border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: ms-silhouette 4s ease-in-out infinite; }
.scn-mysterious-sign .shadow-tense{ position:absolute; bottom:20%; left:30%; width:180px; height:6px; background: radial-gradient(ellipse, rgba(0,0,0,.5) 0%, transparent 100%); filter: blur(8px); animation: ms-shadow 3s ease-in-out infinite alternate; }
@keyframes ms-bg        { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.7 } }
@keyframes ms-slate     { 0%,100% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(3px) rotate(2deg) } }
@keyframes ms-point     { 0% { transform: translateX(0) translateY(0) rotate(0deg) } 25% { transform: translateX(4px) translateY(-2px) rotate(5deg) } 50% { transform: translateX(0) translateY(0) rotate(0) } 75% { transform: translateX(-3px) translateY(1px) rotate(-3deg) } 100% { transform: translateX(0) translateY(0) rotate(0) } }
@keyframes ms-hold      { 0%,100% { transform: translateY(0) rotate(10deg) } 50% { transform: translateY(2px) rotate(15deg) } }
@keyframes ms-silhouette{ 0% { transform: translateX(0) scaleY(1) } 50% { transform: translateX(2px) scaleY(1.02) } 100% { transform: translateX(0) scaleY(1) } }
@keyframes ms-shadow    { 0% { transform: scaleX(1) translateX(0); opacity:.6 } 100% { transform: scaleX(1.3) translateX(10px); opacity:.9 } }

.scn-routine-of-apprenticeship {
  background: linear-gradient(180deg, #b0bec5 0%, #78909c 50%, #546e7a 100%),
              radial-gradient(ellipse at 50% 0%, #cfd8dc 0%, transparent 60%);
}
.scn-routine-of-apprenticeship .bg        { position:absolute; inset:0; background: linear-gradient(180deg, #c5d0d6 0%, transparent 100%); animation: ra-bg 18s ease-in-out infinite alternate; }
.scn-routine-of-apprenticeship .road      { position:absolute; bottom:20%; left:0; right:0; height:25%; background: linear-gradient(180deg, #6a7a6a 0%, #4a5a4a 100%); border-radius: 30% 30% 0 0 / 20% 20% 0 0; box-shadow: inset 0 6px 12px rgba(0,0,0,.3); }
.scn-routine-of-apprenticeship .figure-walk{position:absolute; bottom:22%; left:20%; width:22px; height:55px; background: linear-gradient(180deg, #3a4a4a 0%, #1a2a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ra-walk 6s ease-in-out infinite; }
.scn-routine-of-apprenticeship .bag       { position:absolute; bottom:24%; left:28%; width:16px; height:20px; background: #5a4a3a; border-radius: 20% 20% 30% 30%; transform: rotate(10deg); animation: ra-bag 6s ease-in-out infinite; }
.scn-routine-of-apprenticeship .tree-a    { position:absolute; bottom:25%; left:70%; width:40px; height:110px; background: linear-gradient(180deg, #3a5a3a 0%, #2a4a2a 50%, #1a3a1a 100%); border-radius: 40% 40% 20% 20%; filter: blur(3px); animation: ra-tree 20s ease-in-out infinite; }
.scn-routine-of-apprenticeship .tree-b    { position:absolute; bottom:28%; left:80%; width:30px; height:90px; background: linear-gradient(180deg, #4a6a4a 0%, #2a4a2a 100%); border-radius: 40% 40% 20% 20%; filter: blur(4px); animation: ra-tree 25s ease-in-out infinite reverse; }
.scn-routine-of-apprenticeship .cloud-a   { position:absolute; top:10%; left:15%; width:80px; height:16px; background: linear-gradient(180deg, rgba(255,255,255,.5) 0%, rgba(255,255,255,.1) 100%); border-radius: 50%; filter: blur(6px); animation: ra-cloud 40s linear infinite; }
.scn-routine-of-apprenticeship .cloud-b   { position:absolute; top:18%; right:10%; width:60px; height:12px; background: linear-gradient(180deg, rgba(255,255,255,.4) 0%, rgba(255,255,255,.05) 100%); border-radius: 50%; filter: blur(5px); animation: ra-cloud 50s linear infinite reverse; }
@keyframes ra-bg     { 0% { opacity:.85 } 50% { opacity:1 } 100% { opacity:.75 } }
@keyframes ra-walk   { 0% { transform: translateX(0) translateY(0) rotate(-1deg) } 25% { transform: translateX(12px) translateY(-2px) rotate(1deg) } 50% { transform: translateX(24px) translateY(0) rotate(-2deg) } 75% { transform: translateX(36px) translateY(-1px) rotate(2deg) } 100% { transform: translateX(48px) translateY(0) rotate(0) } }
@keyframes ra-bag    { 0% { transform: translateX(0) rotate(10deg) } 25% { transform: translateX(3px) rotate(15deg) } 50% { transform: translateX(6px) rotate(8deg) } 75% { transform: translateX(9px) rotate(12deg) } 100% { transform: translateX(12px) rotate(10deg) } }
@keyframes ra-tree   { 0%,100% { transform: rotate(0deg) scaleY(1) } 50% { transform: rotate(3deg) scaleY(1.02) } }
@keyframes ra-cloud  { 0% { transform: translateX(-40px) } 100% { transform: translateX(120vw) } }

.scn-jaggers-office-confrontation {
  background: linear-gradient(180deg, #1a1a2e 0%, #2c1f1a 40%, #1a0f0a 100%),
              radial-gradient(ellipse at 30% 70%, #3a2a1a 0%, transparent 60%);
}
.scn-jaggers-office-confrontation .bg-dark {
  position: absolute; inset: 0;
  background: linear-gradient(135deg, rgba(0,0,0,.6) 0%, transparent 50%);
  animation: jof-shadow-pulse 8s ease-in-out infinite;
}
.scn-jaggers-office-confrontation .desk {
  position: absolute; bottom: 10%; left: 25%; width: 60%; height: 18%;
  background: linear-gradient(180deg, #4a3020 0%, #2a1a10 100%);
  border-radius: 4% 4% 0 0;
  box-shadow: 0 -8px 20px rgba(0,0,0,.7);
  animation: jof-desk-breathe 12s ease-in-out infinite;
}
.scn-jaggers-office-confrontation .lamp {
  position: absolute; bottom: 35%; left: 45%; width: 12px; height: 30px;
  background: linear-gradient(180deg, #6a4a3a 0%, #3a2a1a 100%);
  border-radius: 40% 40% 10% 10%;
  transform-origin: bottom center;
  animation: jof-lamp-sway 6s ease-in-out infinite;
}
.scn-jaggers-office-confrontation .lamp-glow {
  position: absolute; bottom: 28%; left: 50%; width: 80px; height: 80px;
  background: radial-gradient(circle, rgba(200,160,80,.5) 0%, rgba(200,160,80,.1) 40%, transparent 70%);
  transform: translate(-50%, 0);
  animation: jof-glows 3s ease-in-out infinite alternate;
}
.scn-jaggers-office-confrontation .jaggers-figure {
  position: absolute; bottom: 20%; left: 40%; width: 40px; height: 60px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 30% 30% / 80% 80% 40% 40%;
  transform-origin: bottom center;
  animation: jof-jaggers 4s ease-in-out infinite;
}
.scn-jaggers-office-confrontation .pip-figure {
  position: absolute; bottom: 20%; left: 60%; width: 32px; height: 50px;
  background: linear-gradient(180deg, #1a1a2e 0%, #0a0a1e 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 40% 40%;
  transform-origin: bottom center;
  animation: jof-pip 5s ease-in-out infinite alternate;
}
.scn-jaggers-office-confrontation .wemmick-lips {
  position: absolute; bottom: 32%; left: 35%; width: 12px; height: 6px;
  background: #3a2a1a;
  border-radius: 40% 40% 60% 60%;
  animation: jof-lips 2s ease-in-out infinite;
}
.scn-jaggers-office-confrontation .shadow-back {
  position: absolute; inset: 0;
  background: linear-gradient(0deg, rgba(0,0,0,.3) 0%, transparent 50%);
  animation: jof-shadow-pulse 8s ease-in-out infinite reverse;
}
@keyframes jof-shadow-pulse { 0% { opacity: .6; } 50% { opacity: .8; } 100% { opacity: .5; } }
@keyframes jof-desk-breathe { 0% { transform: scaleY(1); } 50% { transform: scaleY(1.02); } 100% { transform: scaleY(1); } }
@keyframes jof-lamp-sway { 0% { transform: rotate(-2deg); } 50% { transform: rotate(2deg); } 100% { transform: rotate(-1deg); } }
@keyframes jof-glows { 0% { opacity: .7; transform: translate(-50%, 0) scale(1); } 50% { opacity: 1; transform: translate(-50%, -5px) scale(1.1); } 100% { opacity: .8; transform: translate(-50%, 0) scale(.95); } }
@keyframes jof-jaggers { 0% { transform: translateY(0) rotate(0); } 30% { transform: translateY(-2px) rotate(1deg); } 60% { transform: translateY(1px) rotate(-1deg); } 100% { transform: translateY(0) rotate(0); } }
@keyframes jof-pip { 0% { transform: translateY(0) rotate(0); } 50% { transform: translateY(-3px) rotate(-2deg); } 100% { transform: translateY(0) rotate(2deg); } }
@keyframes jof-lips { 0% { transform: scaleY(1); } 25% { transform: scaleY(1.3); } 50% { transform: scaleY(1); } 75% { transform: scaleY(1.2); } 100% { transform: scaleY(1); } }

.scn-clarrikers-arrangement {
  background: linear-gradient(180deg, #87ceeb 0%, #f0e68c 60%, #f5deb3 100%),
              radial-gradient(ellipse at 50% 0%, #fff8dc 0%, transparent 60%);
}
.scn-clarrikers-arrangement .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #b0e0e6 0%, transparent 100%);
  animation: ca-sky 20s ease-in-out infinite alternate;
}
.scn-clarrikers-arrangement .building-left {
  position: absolute; bottom: 25%; left: 10%; width: 30%; height: 55%;
  background: linear-gradient(180deg, #deb887 0%, #d2b48c 100%);
  border-radius: 6% 6% 0 0;
  box-shadow: -4px 0 12px rgba(0,0,0,.2);
  animation: ca-building 15s ease-in-out infinite;
}
.scn-clarrikers-arrangement .building-right {
  position: absolute; bottom: 25%; right: 10%; width: 25%; height: 50%;
  background: linear-gradient(180deg, #cd853f 0%, #b8860b 100%);
  border-radius: 6% 6% 0 0;
  box-shadow: 4px 0 12px rgba(0,0,0,.2);
  animation: ca-building 15s ease-in-out infinite reverse;
}
.scn-clarrikers-arrangement .door {
  position: absolute; bottom: 25%; left: 22%; width: 8%; height: 20%;
  background: linear-gradient(180deg, #8b4513 0%, #5c3317 100%);
  border-radius: 4% 4% 0 0;
  animation: ca-door 6s ease-in-out infinite;
}
.scn-clarrikers-arrangement .window {
  position: absolute; bottom: 55%; left: 20%; width: 10%; height: 14%;
  background: radial-gradient(circle, #fffacd 0%, #87ceeb 70%);
  border-radius: 8%;
  box-shadow: inset 0 0 8px rgba(255,255,255,.6);
  animation: ca-window 8s ease-in-out infinite alternate;
}
.scn-clarrikers-arrangement .sunbeam {
  position: absolute; top: 20%; left: 30%; width: 8%; height: 60%;
  background: linear-gradient(180deg, rgba(255,255,224,.6) 0%, rgba(255,255,224,.1) 100%);
  transform: skewX(-10deg);
  filter: blur(4px);
  animation: ca-beam 10s ease-in-out infinite alternate;
}
.scn-clarrikers-arrangement .figure-walk {
  position: absolute; bottom: 22%; left: 50%; width: 20px; height: 40px;
  background: linear-gradient(180deg, #8b7355 0%, #6b5b45 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: ca-walk 8s ease-in-out infinite;
}
.scn-clarrikers-arrangement .cloud-drift {
  position: absolute; top: 12%; left: -10%; width: 80px; height: 20px;
  background: rgba(255,255,255,.6);
  border-radius: 50%;
  filter: blur(8px);
  animation: ca-cloud 40s linear infinite;
}
@keyframes ca-sky { 0% { opacity: .8; } 50% { opacity: 1; } 100% { opacity: .7; } }
@keyframes ca-building { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes ca-door { 0% { transform: scaleX(1); } 50% { transform: scaleX(1.02); } 100% { transform: scaleX(1); } }
@keyframes ca-window { 0% { box-shadow: inset 0 0 8px rgba(255,255,255,.4); } 50% { box-shadow: inset 0 0 16px rgba(255,255,255,.8); } 100% { box-shadow: inset 0 0 8px rgba(255,255,255,.4); } }
@keyframes ca-beam { 0% { opacity: .5; transform: skewX(-10deg) scaleY(.9); } 50% { opacity: .8; transform: skewX(-8deg) scaleY(1); } 100% { opacity: .6; transform: skewX(-12deg) scaleY(.95); } }
@keyframes ca-walk { 0% { transform: translateX(0) translateY(0) rotate(0); } 25% { transform: translateX(10px) translateY(-2px) rotate(3deg); } 50% { transform: translateX(20px) translateY(0) rotate(-2deg); } 75% { transform: translateX(30px) translateY(-1px) rotate(2deg); } 100% { transform: translateX(40px) translateY(0) rotate(0); } }
@keyframes ca-cloud { 0% { left: -10%; } 100% { left: 110%; } }

.scn-wemmick-letter-wednesday {
  background: linear-gradient(180deg, #fff8dc 0%, #f5deb3 50%, #deb887 100%),
              radial-gradient(ellipse at 70% 30%, #ffe4b5 0%, transparent 60%);
}
.scn-wemmick-letter-wednesday .table {
  position: absolute; bottom: 15%; left: 20%; width: 60%; height: 20%;
  background: linear-gradient(180deg, #8b4513 0%, #5c3317 100%);
  border-radius: 6% 6% 0 0;
  box-shadow: 0 -10px 20px rgba(0,0,0,.5);
  animation: wlw-table 18s ease-in-out infinite;
}
.scn-wemmick-letter-wednesday .letter {
  position: absolute; bottom: 30%; left: 35%; width: 18%; height: 14%;
  background: linear-gradient(135deg, #f5f5dc 0%, #e8dcc8 100%);
  border-radius: 4%;
  box-shadow: 0 4px 8px rgba(0,0,0,.3);
  animation: wlw-letter 6s ease-in-out infinite alternate;
}
.scn-wemmick-letter-wednesday .hand-match {
  position: absolute; bottom: 27%; left: 55%; width: 14px; height: 30px;
  background: linear-gradient(180deg, #d2b48c 0%, #a0522d 100%);
  border-radius: 50% 50% 20% 20%;
  transform-origin: bottom center;
  animation: wlw-hand 4s ease-in-out infinite;
}
.scn-wemmick-letter-wednesday .flame {
  position: absolute; bottom: 32%; left: 57%; width: 10px; height: 14px;
  background: radial-gradient(ellipse at 50% 0%, #ffd700 0%, #ff8c00 40%, transparent 70%);
  border-radius: 50%;
  animation: wlw-flame 1s ease-in-out infinite alternate;
}
.scn-wemmick-letter-wednesday .smoke {
  position: absolute; bottom: 45%; left: 56%; width: 16px; height: 30px;
  background: radial-gradient(ellipse at 50% 0%, rgba(200,200,200,.4) 0%, transparent 70%);
  filter: blur(4px);
  animation: wlw-smoke 5s ease-out infinite;
}
.scn-wemmick-letter-wednesday .inkwell {
  position: absolute; bottom: 28%; left: 30%; width: 12px; height: 16px;
  background: linear-gradient(180deg, #2f1a0e 0%, #0a0a0a 100%);
  border-radius: 40% 40% 20% 20%;
  box-shadow: 0 2px 4px rgba(0,0,0,.6);
  animation: wlw-inkwell 10s ease-in-out infinite;
}
.scn-wemmick-letter-wednesday .sunlit-wall {
  position: absolute; top: 0; left: 0; right: 0; bottom: 60%;
  background: linear-gradient(0deg, rgba(255,255,200,.2) 0%, transparent 100%);
  animation: wlw-sun 12s ease-in-out infinite alternate;
}
@keyframes wlw-table { 0% { transform: translateY(0); } 50% { transform: translateY(-1px); } 100% { transform: translateY(0); } }
@keyframes wlw-letter { 0% { transform: rotate(-2deg); } 50% { transform: rotate(2deg); } 100% { transform: rotate(-1deg); } }
@keyframes wlw-hand { 0% { transform: rotate(-10deg); } 50% { transform: rotate(10deg); } 100% { transform: rotate(-5deg); } }
@keyframes wlw-flame { 0% { transform: scaleY(.8) scaleX(.9); opacity: .7; } 50% { transform: scaleY(1.2) scaleX(1); opacity: 1; } 100% { transform: scaleY(.9) scaleX(.85); opacity: .6; } }
@keyframes wlw-smoke { 0% { transform: translateY(0) scale(1); opacity: .6; } 100% { transform: translateY(-40px) scale(2); opacity: 0; } }
@keyframes wlw-inkwell { 0% { transform: translateY(0); } 50% { transform: translateY(-1px); } 100% { transform: translateY(0); } }
@keyframes wlw-sun { 0% { opacity: .3; } 50% { opacity: .6; } 100% { opacity: .4; } }

.scn-planning-escape {
  background: linear-gradient(180deg, #1a0a0a 0%, #3a1a0a 40%, #5a2a0a 100%),
              radial-gradient(ellipse at 50% 80%, #e06020 0%, transparent 60%);
}
.scn-planning-escape .room-wall {
  position: absolute; inset: 0;
  background: linear-gradient(0deg, rgba(0,0,0,.7) 0%, transparent 50%);
  animation: pe-wall 20s ease-in-out infinite alternate;
}
.scn-planning-escape .fireplace {
  position: absolute; bottom: 20%; left: 15%; width: 30%; height: 40%;
  background: linear-gradient(180deg, #2a1a0a 0%, #0a0a0a 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: inset 0 0 20px rgba(0,0,0,.8);
  animation: pe-fireplace 10s ease-in-out infinite;
}
.scn-planning-escape .fire-flames {
  position: absolute; bottom: 20%; left: 20%; width: 20%; height: 25%;
  background: radial-gradient(ellipse at 50% 100%, #ff4500 0%, #ff8c00 30%, transparent 60%);
  border-radius: 50%;
  animation: pe-flames 2s ease-in-out infinite alternate;
}
.scn-planning-escape .table-map {
  position: absolute; bottom: 10%; left: 45%; width: 30%; height: 15%;
  background: linear-gradient(180deg, #5c3a1a 0%, #3a1a0a 100%);
  border-radius: 6%;
  box-shadow: 0 -6px 12px rgba(0,0,0,.6);
  animation: pe-table 15s ease-in-out infinite;
}
.scn-planning-escape .candle {
  position: absolute; bottom: 28%; left: 50%; width: 8px; height: 20px;
  background: linear-gradient(180deg, #e0c080 0%, #a08040 100%);
  border-radius: 10% 10% 4% 4%;
  transform-origin: bottom center;
  animation: pe-candle 8s ease-in-out infinite;
}
.scn-planning-escape .pip-silhouette {
  position: absolute; bottom: 12%; left: 40%; width: 28px; height: 50px;
  background: #0a0a0a;
  border-radius: 50% 50% 40% 40% / 70% 70% 40% 40%;
  animation: pe-pip 6s ease-in-out infinite alternate;
}
.scn-planning-escape .herbert-silhouette {
  position: absolute; bottom: 12%; left: 55%; width: 30px; height: 52px;
  background: #0a0a0a;
  border-radius: 50% 50% 40% 40% / 70% 70% 40% 40%;
  animation: pe-herbert 6s ease-in-out infinite alternate-reverse;
}
.scn-planning-escape .shadow-flicker {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at 50% 60%, rgba(0,0,0,.1) 0%, rgba(0,0,0,.4) 100%);
  animation: pe-flicker 4s ease-in-out infinite;
}
@keyframes pe-wall { 0% { opacity: .8; } 50% { opacity: .5; } 100% { opacity: .7; } }
@keyframes pe-fireplace { 0% { transform: scaleY(1); } 50% { transform: scaleY(1.02); } 100% { transform: scaleY(1); } }
@keyframes pe-flames { 0% { transform: scaleY(.8) scaleX(.9); opacity: .7; } 50% { transform: scaleY(1.3) scaleX(1.1); opacity: 1; } 100% { transform: scaleY(.9) scaleX(.85); opacity: .6; } }
@keyframes pe-table { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes pe-candle { 0% { transform: rotate(-2deg); } 50% { transform: rotate(2deg); } 100% { transform: rotate(-1deg); } }
@keyframes pe-pip { 0% { transform: translateY(0) rotate(0); } 50% { transform: translateY(-3px) rotate(-2deg); } 100% { transform: translateY(0) rotate(2deg); } }
@keyframes pe-herbert { 0% { transform: translateY(0) rotate(0); } 50% { transform: translateY(-2px) rotate(3deg); } 100% { transform: translateY(0) rotate(-1deg); } }
@keyframes pe-flicker { 0% { opacity: .3; } 50% { opacity: .6; } 100% { opacity: .4; } }

.scn-temple-chambers-revelation {
  background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 35%, #4a3a2a 60%, #2a1a0a 100%),
              radial-gradient(ellipse at 30% 70%, #b06030 0%, transparent 60%);
}
.scn-temple-chambers-revelation .wall {
  position: absolute;
  inset: 0 0 30% 0;
  background: linear-gradient(180deg, #4a3a2a 0%, #3a2a1a 50%, #2a1a0a 100%);
  box-shadow: inset 0 0 60px rgba(0,0,0,.6);
}
.scn-temple-chambers-revelation .floor {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 30%;
  background: linear-gradient(180deg, #2a1a0a 0%, #1a0e05 100%);
  box-shadow: inset 0 20px 30px rgba(0,0,0,.8);
}
.scn-temple-chambers-revelation .fire-glow {
  position: absolute;
  bottom: 10%;
  left: 20%;
  width: 60px;
  height: 80px;
  background: radial-gradient(ellipse at 50% 100%, #ff9040 0%, #b05020 40%, #4a2010 60%, transparent 80%);
  border-radius: 50%;
  box-shadow: 0 0 80px 30px rgba(255,144,64,.4), 0 0 150px 60px rgba(255,144,64,.15);
  animation: tcr-fire 4s ease-in-out infinite alternate;
}
.scn-temple-chambers-revelation .figure-left {
  position: absolute;
  bottom: 26%;
  left: 35%;
  width: 20px;
  height: 44px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  box-shadow: -4px 0 8px rgba(0,0,0,.5);
  animation: tcr-figure-left 6s ease-in-out infinite;
}
.scn-temple-chambers-revelation .figure-right {
  position: absolute;
  bottom: 24%;
  right: 30%;
  width: 22px;
  height: 48px;
  background: linear-gradient(180deg, #2a2a3a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  box-shadow: 4px 0 8px rgba(0,0,0,.5);
  animation: tcr-figure-right 8s ease-in-out infinite alternate;
}
.scn-temple-chambers-revelation .window-dim {
  position: absolute;
  top: 8%;
  right: 15%;
  width: 40px;
  height: 50px;
  background: linear-gradient(180deg, #2a3a4a 0%, #1a2a3a 100%);
  border: 3px solid #4a3a2a;
  border-radius: 2px;
  box-shadow: inset 0 0 20px rgba(0,0,0,.8);
  animation: tcr-window 12s ease-in-out infinite alternate;
}
.scn-temple-chambers-revelation .shadow-beam {
  position: absolute;
  top: 0;
  left: 20%;
  width: 120px;
  height: 100%;
  background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,.15) 40%, rgba(0,0,0,.3) 100%);
  transform: skewX(-10deg);
  filter: blur(8px);
  animation: tcr-shadow 20s ease-in-out infinite alternate;
}
@keyframes tcr-fire {
  0% { transform: scaleY(1) translateY(0); opacity: .85; box-shadow: 0 0 60px 20px rgba(255,144,64,.3), 0 0 120px 40px rgba(255,144,64,.1); }
  35% { transform: scaleY(1.08) translateY(-3px); opacity: 1; box-shadow: 0 0 90px 30px rgba(255,144,64,.45), 0 0 160px 50px rgba(255,144,64,.18); }
  70% { transform: scaleY(0.96) translateY(2px); opacity: .88; box-shadow: 0 0 70px 25px rgba(255,144,64,.35), 0 0 130px 45px rgba(255,144,64,.12); }
  100% { transform: scaleY(1.02) translateY(-1px); opacity: .92; box-shadow: 0 0 80px 28px rgba(255,144,64,.4), 0 0 140px 48px rgba(255,144,64,.14); }
}
@keyframes tcr-figure-left {
  0% { transform: rotate(0deg) translateY(0); }
  25% { transform: rotate(2deg) translateY(-1px); }
  50% { transform: rotate(-1deg) translateY(0); }
  75% { transform: rotate(3deg) translateY(-2px); }
  100% { transform: rotate(0deg) translateY(0); }
}
@keyframes tcr-figure-right {
  0% { transform: rotate(0deg) translateY(0); }
  33% { transform: rotate(-2deg) translateY(1px); }
  66% { transform: rotate(1deg) translateY(-1px); }
  100% { transform: rotate(0deg) translateY(0); }
}
@keyframes tcr-window {
  0% { opacity: .3; box-shadow: inset 0 0 15px rgba(0,0,0,.9); }
  50% { opacity: .5; box-shadow: inset 0 0 25px rgba(0,0,0,.7); }
  100% { opacity: .35; box-shadow: inset 0 0 18px rgba(0,0,0,.85); }
}
@keyframes tcr-shadow {
  0% { transform: skewX(-10deg) translateX(-10px); opacity: .6; }
  50% { transform: skewX(-8deg) translateX(5px); opacity: .8; }
  100% { transform: skewX(-12deg) translateX(-5px); opacity: .65; }
}

.scn-temple-chambers-planning {
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 30%, #2a1a2a 60%, #0a0a1a 100%),
              radial-gradient(ellipse at 70% 80%, #1a2a3a 0%, transparent 50%);
}
.scn-temple-chambers-planning .wall-dark {
  position: absolute;
  inset: 0 0 25% 0;
  background: linear-gradient(135deg, #0a0a1a 0%, #1a1a2a 50%, #0a0a1a 100%);
  box-shadow: inset 0 0 80px rgba(0,0,0,.7);
}
.scn-temple-chambers-planning .floor-dark {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 25%;
  background: linear-gradient(180deg, #0a0a1a 0%, #05050a 100%);
  box-shadow: inset 0 15px 30px rgba(0,0,0,.9);
}
.scn-temple-chambers-planning .sofa {
  position: absolute;
  bottom: 18%;
  left: 25%;
  width: 100px;
  height: 30px;
  background: linear-gradient(135deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 20% 20% 10% 10% / 40% 40% 20% 20%;
  box-shadow: 0 6px 20px rgba(0,0,0,.8), inset 0 2px 4px rgba(255,255,255,.05);
  animation: tcp-sofa 10s ease-in-out infinite alternate;
}
.scn-temple-chambers-planning .figure-standing {
  position: absolute;
  bottom: 24%;
  left: 35%;
  width: 18px;
  height: 40px;
  background: linear-gradient(180deg, #2a2a3a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  box-shadow: -3px 0 6px rgba(0,0,0,.7);
  animation: tcp-standing 5s ease-in-out infinite;
}
.scn-temple-chambers-planning .figure-seated {
  position: absolute;
  bottom: 18%;
  left: 30%;
  width: 20px;
  height: 28px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  box-shadow: 2px 0 6px rgba(0,0,0,.6);
  animation: tcp-seated 7s ease-in-out infinite alternate;
}
.scn-temple-chambers-planning .lamp-glow {
  position: absolute;
  top: 12%;
  left: 50%;
  width: 12px;
  height: 16px;
  background: radial-gradient(ellipse at 50% 50%, #c08040 0%, #6a4020 60%, transparent 80%);
  border-radius: 50%;
  box-shadow: 0 0 60px 20px rgba(192,128,64,.25), 0 0 120px 40px rgba(192,128,64,.08);
  animation: tcp-lamp 4s ease-in-out infinite alternate;
}
.scn-temple-chambers-planning .shadow-bars {
  position: absolute;
  inset: 0;
  background: repeating-linear-gradient(0deg, transparent 0px, transparent 30px, rgba(0,0,0,.08) 30px, rgba(0,0,0,.08) 32px);
  animation: tcp-bars 15s linear infinite;
}
@keyframes tcp-sofa {
  0% { transform: translateY(0) scaleX(1); }
  40% { transform: translateY(-1px) scaleX(1.01); }
  70% { transform: translateY(1px) scaleX(0.99); }
  100% { transform: translateY(0) scaleX(1); }
}
@keyframes tcp-standing {
  0% { transform: rotate(-2deg) translateY(0); }
  30% { transform: rotate(1deg) translateY(-1px); }
  60% { transform: rotate(-3deg) translateY(1px); }
  100% { transform: rotate(0deg) translateY(0); }
}
@keyframes tcp-seated {
  0% { transform: rotate(0deg) translateY(0); }
  33% { transform: rotate(2deg) translateY(-1px); }
  66% { transform: rotate(-1deg) translateY(1px); }
  100% { transform: rotate(0deg) translateY(0); }
}
@keyframes tcp-lamp {
  0% { opacity: .75; box-shadow: 0 0 40px 12px rgba(192,128,64,.2), 0 0 80px 30px rgba(192,128,64,.05); }
  40% { opacity: .9; box-shadow: 0 0 70px 25px rgba(192,128,64,.3), 0 0 130px 50px rgba(192,128,64,.1); }
  70% { opacity: .8; box-shadow: 0 0 50px 15px rgba(192,128,64,.22), 0 0 90px 35px rgba(192,128,64,.06); }
  100% { opacity: .85; box-shadow: 0 0 60px 20px rgba(192,128,64,.25), 0 0 100px 40px rgba(192,128,64,.08); }
}
@keyframes tcp-bars {
  0% { opacity: .3; }
  25% { opacity: .5; }
  50% { opacity: .35; }
  75% { opacity: .55; }
  100% { opacity: .3; }
}

.scn-morning-after-magwitch {
  background: linear-gradient(180deg, #f0e8d0 0%, #e0d0b0 30%, #c8b890 60%, #a09070 100%),
              radial-gradient(ellipse at 70% 30%, #fff8e0 0%, transparent 50%);
}
.scn-morning-after-magwitch .wall-bright {
  position: absolute;
  inset: 0 0 20% 0;
  background: linear-gradient(180deg, #e8dcc8 0%, #d8c8a8 50%, #c0b090 100%);
  box-shadow: inset 0 0 40px rgba(160,140,120,.3);
}
.scn-morning-after-magwitch .floor-bright {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 20%;
  background: linear-gradient(180deg, #b0a080 0%, #908060 100%);
  box-shadow: inset 0 10px 20px rgba(0,0,0,.15);
}
.scn-morning-after-magwitch .window-sharp {
  position: absolute;
  top: 5%;
  right: 10%;
  width: 60px;
  height: 80px;
  background: linear-gradient(135deg, #fff8e0 0%, #e8dcc8 60%, #d0c0a0 100%);
  border: 4px solid #908060;
  border-radius: 2px;
  box-shadow: 0 0 40px 15px rgba(255,248,224,.5), inset 0 0 20px rgba(0,0,0,.2);
  animation: mam-window 8s ease-in-out infinite alternate;
}
.scn-morning-after-magwitch .desk {
  position: absolute;
  bottom: 12%;
  left: 20%;
  width: 80px;
  height: 20px;
  background: linear-gradient(135deg, #8a7040 0%, #6a5030 100%);
  border-radius: 4px 4px 0 0;
  box-shadow: 0 4px 12px rgba(0,0,0,.3);
}
.scn-morning-after-magwitch .figure-writer {
  position: absolute;
  bottom: 14%;
  left: 22%;
  width: 18px;
  height: 36px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0e05 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  box-shadow: -2px 0 4px rgba(0,0,0,.3);
  animation: mam-writer 6s ease-in-out infinite;
}
.scn-morning-after-magwitch .shadow-hard {
  position: absolute;
  bottom: 0;
  left: 15%;
  width: 90px;
  height: 20px;
  background: linear-gradient(90deg, rgba(0,0,0,.15) 0%, transparent 60%);
  filter: blur(2px);
  transform: skewX(40deg);
  animation: mam-shadow 15s ease-in-out infinite alternate;
}
.scn-morning-after-magwitch .light-shaft {
  position: absolute;
  top: 0;
  right: 8%;
  width: 100px;
  height: 100%;
  background: linear-gradient(180deg, rgba(255,248,224,.3) 0%, transparent 50%, rgba(255,248,224,.1) 100%);
  transform: skewX(-5deg);
  filter: blur(12px);
  animation: mam-shaft 20s ease-in-out infinite alternate;
}
@keyframes mam-window {
  0% { opacity: .85; box-shadow: 0 0 30px 10px rgba(255,248,224,.4), inset 0 0 15px rgba(0,0,0,.15); }
  40% { opacity: 1; box-shadow: 0 0 60px 25px rgba(255,248,224,.6), inset 0 0 25px rgba(0,0,0,.1); }
  70% { opacity: .9; box-shadow: 0 0 40px 15px rgba(255,248,224,.45), inset 0 0 18px rgba(0,0,0,.18); }
  100% { opacity: .95; box-shadow: 0 0 50px 20px rgba(255,248,224,.5), inset 0 0 20px rgba(0,0,0,.12); }
}
@keyframes mam-writer {
  0% { transform: rotate(0deg) translateY(0); }
  20% { transform: rotate(2deg) translateY(-1px); }
  40% { transform: rotate(-1deg) translateY(1px); }
  60% { transform: rotate(3deg) translateY(-2px); }
  80% { transform: rotate(-2deg) translateY(0); }
  100% { transform: rotate(0deg) translateY(0); }
}
@keyframes mam-shadow {
  0% { transform: skewX(40deg) translateX(0); opacity: .6; }
  50% { transform: skewX(38deg) translateX(8px); opacity: .8; }
  100% { transform: skewX(42deg) translateX(-4px); opacity: .65; }
}
@keyframes mam-shaft {
  0% { opacity: .3; transform: skewX(-5deg) translateX(-10px); }
  40% { opacity: .5; transform: skewX(-3deg) translateX(5px); }
  70% { opacity: .35; transform: skewX(-6deg) translateX(-5px); }
  100% { opacity: .4; transform: skewX(-4deg) translateX(0); }
}

.scn-securing-lodging-magwitch {
  background: linear-gradient(90deg, #1a0e05 0%, #2a1a0a 20%, #3a2a1a 40%, #2a1a0a 60%, #1a0e05 100%),
              radial-gradient(ellipse at 50% 90%, #2a1a0a 0%, transparent 60%);
}
.scn-securing-lodging-magwitch .hall-wall {
  position: absolute;
  inset: 0 0 20% 0;
  background: linear-gradient(90deg, #1a0e05 0%, #3a2a1a 30%, #2a1a0a 70%, #1a0e05 100%);
  box-shadow: inset 0 0 50px rgba(0,0,0,.7);
}
.scn-securing-lodging-magwitch .hall-floor {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 20%;
  background: linear-gradient(180deg, #1a0e05 0%, #0a0502 100%);
  box-shadow: inset 0 10px 20px rgba(0,0,0,.9);
}
.scn-securing-lodging-magwitch .doorway {
  position: absolute;
  bottom: 15%;
  left: 50%;
  width: 60px;
  height: 90px;
  background: linear-gradient(180deg, #0a0502 0%, #1a0e05 100%);
  border: 3px solid #2a1a0a;
  border-radius: 4px;
  transform: translateX(-50%);
  box-shadow: -4px 0 12px rgba(0,0,0,.8), 4px 0 12px rgba(0,0,0,.8);
}
.scn-securing-lodging-magwitch .figure-entering {
  position: absolute;
  bottom: 18%;
  left: 48%;
  width: 16px;
  height: 38px;
  background: linear-gradient(180deg, #2a2a3a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  box-shadow: -2px 0 6px rgba(0,0,0,.6);
  animation: slm-enter 8s ease-in-out infinite;
}
.scn-securing-lodging-magwitch .lamp-dim {
  position: absolute;
  top: 6%;
  left: 50%;
  width: 8px;
  height: 10px;
  background: radial-gradient(circle, #b07030 0%, #5a3010 60%, transparent 80%);
  border-radius: 50%;
  box-shadow: 0 0 40px 15px rgba(176,112,48,.15), 0 0 80px 30px rgba(176,112,48,.05);
  animation: slm-lamp 5s ease-in-out infinite alternate;
}
.scn-securing-lodging-magwitch .shadow-creep {
  position: absolute;
  bottom: 0;
  left: 45%;
  width: 50px;
  height: 100px;
  background: linear-gradient(180deg, rgba(0,0,0,.4) 0%, transparent 100%);
  filter: blur(10px);
  transform: skewX(5deg);
  animation: slm-creep 14s ease-in-out infinite alternate;
}
.scn-securing-lodging-magwitch .threshold {
  position: absolute;
  bottom: 20%;
  left: 47%;
  width: 70px;
  height: 4px;
  background: linear-gradient(90deg, #4a3a2a 0%, #6a4a3a 50%, #4a3a2a 100%);
  border-radius: 2px;
  box-shadow: 0 2px 4px rgba(0,0,0,.5);
}
@keyframes slm-enter {
  0% { transform: translateX(-20px) rotate(0deg) scaleX(0.95); opacity: .6; }
  20% { transform: translateX(-10px) rotate(2deg) scaleX(1); opacity: .8; }
  40% { transform: translateX(0) rotate(-1deg) scaleX(1); opacity: 1; }
  60% { transform: translateX(5px) rotate(1deg) scaleX(1); opacity: .9; }
  80% { transform: translateX(0) rotate(-2deg) scaleX(0.98); opacity: .95; }
  100% { transform: translateX(-2px) rotate(0deg) scaleX(0.95); opacity: .7; }
}
@keyframes slm-lamp {
  0% { opacity: .6; box-shadow: 0 0 25px 8px rgba(176,112,48,.1), 0 0 50px 20px rgba(176,112,48,.03); }
  35% { opacity: .85; box-shadow: 0 0 50px 20px rgba(176,112,48,.2), 0 0 90px 35px rgba(176,112,48,.06); }
  70% { opacity: .7; box-shadow: 0 0 35px 12px rgba(176,112,48,.14), 0 0 65px 25px rgba(176,112,48,.04); }
  100% { opacity: .75; box-shadow: 0 0 40px 15px rgba(176,112,48,.16), 0 0 70px 28px rgba(176,112,48,.05); }
}
@keyframes slm-creep {
  0% { transform: skewX(5deg) translateX(0) scaleY(1); opacity: .5; }
  33% { transform: skewX(7deg) translateX(8px) scaleY(1.08); opacity: .7; }
  66% { transform: skewX(3deg) translateX(-6px) scaleY(0.95); opacity: .55; }
  100% { transform: skewX(5deg) translateX(2px) scaleY(1); opacity: .6; }
}

/* scene: joe-departure (dim interior, warm) */
.scn-joe-departure {
  background: linear-gradient(180deg, #2a1e14 0%, #3a2a1a 40%, #4a3520 70%, #2a1e14 100%),
              radial-gradient(ellipse at 50% 80%, #5a3a20 0%, transparent 60%);
}
.scn-joe-departure .room { position:absolute; inset:0; background: linear-gradient(180deg, #1a120a 0%, #2a1e14 30%, transparent 70%) }
.scn-joe-departure .bed { position:absolute; bottom:8%; left:10%; right:10%; height:40%; background: linear-gradient(180deg, #5a3a2a 0%, #3a2a1a 100%); border-radius: 20% 20% 8% 8% / 30% 30% 10% 10%; box-shadow: inset 0 -20px 30px rgba(0,0,0,.6) }
.scn-joe-departure .coverlet { position:absolute; bottom:12%; left:15%; right:25%; height:20%; background: linear-gradient(180deg, #6a4a3a 0%, #4a3020 100%); border-radius: 40% 10% 20% 20% / 60% 20% 30% 30%; transform-origin: bottom left; animation: jd-coverlet 2s ease-in-out infinite alternate; box-shadow: 0 -4px 10px rgba(0,0,0,.3) }
.scn-joe-departure .pillow { position:absolute; bottom:32%; left:25%; width:40px; height:24px; background: linear-gradient(180deg, #8a6a4a 0%, #6a4a2a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%; transform: rotate(-5deg); box-shadow: 0 6px 12px rgba(0,0,0,.5) }
.scn-joe-departure .joe { position:absolute; bottom:32%; right:20%; width:28px; height:50px; background: linear-gradient(180deg, #1a120a 0%, #0a0804 100%); border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%; transform-origin: bottom center; animation: jd-joe 3s ease-in-out infinite; box-shadow: 0 0 4px rgba(0,0,0,.4) }
.scn-joe-departure .lamp { position:absolute; bottom:44%; left:8%; width:12px; height:18px; background: radial-gradient(circle at 50% 40%, #d09050 0%, #a06830 70%); border-radius: 10% 10% 20% 20% / 20% 20% 30% 30%; box-shadow: 0 0 30px 8px rgba(200,120,60,.5), 0 0 60px 20px rgba(200,120,60,.2); animation: jd-lamp 4s ease-in-out infinite alternate }
.scn-joe-departure .window { position:absolute; top:10%; right:8%; width:40px; height:50px; background: linear-gradient(180deg, #1a2a3a 0%, #0a1a2a 100%); border: 3px solid #3a2a1a; border-radius: 6% 6% 10% 10% / 8% 8% 12% 12%; box-shadow: inset 0 0 20px rgba(100,150,200,.1); animation: jd-window 10s ease-in-out infinite alternate }
@keyframes jd-coverlet { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes jd-joe { 0% { transform: translate(-2px, 0) rotate(-1deg) } 50% { transform: translate(2px, -3px) rotate(1deg) } 100% { transform: translate(-2px, 0) rotate(-1deg) } }
@keyframes jd-lamp { 0% { opacity: 0.8; transform: scale(1); box-shadow: 0 0 20px 6px rgba(200,120,60,.4), 0 0 40px 12px rgba(200,120,60,.15) } 50% { opacity: 1; transform: scale(1.05); box-shadow: 0 0 40px 12px rgba(200,120,60,.6), 0 0 80px 24px rgba(200,120,60,.25) } 100% { opacity: 0.85; transform: scale(0.98); box-shadow: 0 0 25px 8px rgba(200,120,60,.45), 0 0 50px 16px rgba(200,120,60,.18) } }
@keyframes jd-window { 0% { opacity: 0.4; box-shadow: inset 0 0 15px rgba(100,150,200,.05) } 50% { opacity: 0.7; box-shadow: inset 0 0 30px rgba(100,150,200,.15) } 100% { opacity: 0.4; box-shadow: inset 0 0 15px rgba(100,150,200,.05) } }

/* scene: joe-letter-departure (window-lit, warm) */
.scn-joe-letter-departure {
  background: linear-gradient(180deg, #c8a878 0%, #a88858 40%, #8a6848 80%, #6a4830 100%),
              radial-gradient(ellipse at 60% 20%, #e8c890 0%, transparent 50%);
}
.scn-joe-letter-departure .table { position:absolute; bottom:15%; left:5%; right:5%; height:35%; background: linear-gradient(180deg, #9a7a5a 0%, #7a5a3a 100%); border-radius: 10% 10% 5% 5% / 15% 15% 8% 8%; box-shadow: inset 0 -8px 20px rgba(0,0,0,.3) }
.scn-joe-letter-departure .letter { position:absolute; bottom:30%; left:30%; width:50px; height:35px; background: linear-gradient(135deg, #f5ecc0 0%, #e8d8a0 100%); border-radius: 4% 4% 10% 10% / 6% 6% 12% 12%; box-shadow: 0 4px 8px rgba(0,0,0,.15), inset 0 0 10px rgba(200,180,100,.2); transform-origin: 50% 100%; animation: jld-letter 4s ease-in-out infinite }
.scn-joe-letter-departure .envelope { position:absolute; bottom:30%; left:33%; width:50px; height:35px; background: linear-gradient(135deg, #f0e0b0 0%, #d8c090 100%); border-radius: 4% 4% 10% 10% / 6% 6% 12% 12%; clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%); transform: translateY(2px); opacity: 0.3; box-shadow: none; animation: jld-envelope 4s ease-in-out infinite }
.scn-joe-letter-departure .window-light { position:absolute; top:5%; left:55%; width:70px; height:90px; background: linear-gradient(180deg, rgba(255,240,200,0.6) 0%, rgba(255,240,200,0.1) 100%); border-radius: 10% 10% 20% 20% / 15% 15% 25% 25%; transform: rotate(5deg); filter: blur(8px); animation: jld-light 6s ease-in-out infinite alternate }
.scn-joe-letter-departure .chair { position:absolute; bottom:12%; right:15%; width:30px; height:40px; background: linear-gradient(180deg, #6a4a2a 0%, #4a2a1a 100%); border-radius: 20% 20% 10% 10% / 30% 30% 15% 15%; transform-origin: bottom; box-shadow: 0 4px 6px rgba(0,0,0,.2); animation: jld-chair 3s ease-in-out infinite }
.scn-joe-letter-departure .plate { position:absolute; bottom:24%; left:20%; width:40px; height:10px; background: radial-gradient(ellipse, #f0e0c0 0%, #d0b890 100%); border-radius: 50%; box-shadow: 0 2px 4px rgba(0,0,0,.1); animation: jld-plate 8s ease-in-out infinite }
@keyframes jld-letter { 0% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(-3px) rotate(2deg) } 100% { transform: translateY(0) rotate(0deg) } }
@keyframes jld-envelope { 0% { transform: translateY(2px) scale(1) } 50% { transform: translateY(0px) scale(1.02) } 100% { transform: translateY(2px) scale(1) } }
@keyframes jld-light { 0% { opacity: 0.4; transform: rotate(3deg) translateX(-5px) } 50% { opacity: 0.8; transform: rotate(7deg) translateX(5px) } 100% { opacity: 0.4; transform: rotate(3deg) translateX(-5px) } }
@keyframes jld-chair { 0% { transform: rotate(0deg) } 50% { transform: rotate(1deg) } 100% { transform: rotate(0deg) } }
@keyframes jld-plate { 0% { opacity: 1 } 50% { opacity: 0.7 } 100% { opacity: 1 } }

/* scene: determination-forge (window-lit, calm) */
.scn-determination-forge {
  background: linear-gradient(180deg, #3a3028 0%, #4a3a28 30%, #5a4a30 60%, #3a3028 100%),
              radial-gradient(ellipse at 30% 70%, #6a4a30 0%, transparent 50%);
}
.scn-determination-forge .anvil { position:absolute; bottom:20%; left:30%; right:30%; height:30%; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a10 100%); border-radius: 10% 10% 20% 20% / 15% 15% 25% 25%; box-shadow: inset 0 10px 20px rgba(0,0,0,.4), 0 -4px 10px rgba(100,80,50,.1) }
.scn-determination-forge .forge-fire { position:absolute; bottom:30%; left:40%; width:30px; height:40px; background: radial-gradient(circle at 50% 60%, #e09840 0%, #c07020 40%, #8a4a10 80%, transparent 100%); border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%; box-shadow: 0 0 40px 15px rgba(200,120,40,.4), 0 0 80px 30px rgba(200,120,40,.15); animation: df-fire 2s ease-in-out infinite alternate }
.scn-determination-forge .window { position:absolute; top:8%; left:20%; right:20%; height:25%; background: linear-gradient(180deg, rgba(200,180,140,0.3) 0%, rgba(200,180,140,0.05) 100%); border: 2px solid #3a2a1a; border-radius: 6% 6% 10% 10% / 10% 10% 14% 14%; box-shadow: inset 0 0 30px rgba(200,180,140,0.1); animation: df-window 8s ease-in-out infinite alternate }
.scn-determination-forge .pip { position:absolute; bottom:15%; left:45%; width:22px; height:50px; background: linear-gradient(180deg, #2a2218 0%, #1a120a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%; transform-origin: bottom center; animation: df-pip 5s ease-in-out infinite; box-shadow: 0 0 6px rgba(0,0,0,.3) }
.scn-determination-forge .hammer { position:absolute; bottom:28%; left:50%; width:8px; height:30px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a10 100%); border-radius: 10% 10% 20% 20% / 15% 15% 25% 25%; transform-origin: 50% 100%; animation: df-hammer 6s ease-in-out infinite }
.scn-determination-forge .shadow-depth { position:absolute; inset: 0 0 0 0; background: linear-gradient(180deg, rgba(0,0,0,0.5) 0%, transparent 40%, transparent 70%, rgba(0,0,0,0.4) 100%); pointer-events: none }
@keyframes df-fire { 0% { transform: scale(1) translateY(0); opacity: 0.8 } 50% { transform: scale(1.1) translateY(-2px); opacity: 1 } 100% { transform: scale(1) translateY(0); opacity: 0.8 } }
@keyframes df-window { 0% { opacity: 0.3; box-shadow: inset 0 0 20px rgba(200,180,140,0.05) } 50% { opacity: 0.6; box-shadow: inset 0 0 40px rgba(200,180,140,0.15) } 100% { opacity: 0.3; box-shadow: inset 0 0 20px rgba(200,180,140,0.05) } }
@keyframes df-pip { 0% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(-1px) rotate(1deg) } 100% { transform: translateY(0) rotate(0deg) } }
@keyframes df-hammer { 0% { transform: rotate(10deg) translateY(0) } 50% { transform: rotate(-5deg) translateY(-2px) } 100% { transform: rotate(10deg) translateY(0) } }

/* scene: blue-boar-inn (bright interior, tense) */
.scn-blue-boar-inn {
  background: linear-gradient(180deg, #d8c8b0 0%, #b8a088 30%, #a08870 70%, #806850 100%),
              radial-gradient(ellipse at 50% 30%, #e8d8c0 0%, transparent 50%);
}
.scn-blue-boar-inn .bar { position:absolute; bottom:10%; left:5%; right:5%; height:20%; background: linear-gradient(180deg, #6a5040 0%, #4a3828 100%); border-radius: 10% 10% 0 0 / 20% 20% 0 0; box-shadow: inset 0 8px 16px rgba(0,0,0,.2) }
.scn-blue-boar-inn .lantern { position:absolute; top:15%; left:45%; width:14px; height:20px; background: radial-gradient(circle at 50% 40%, #f0c060 0%, #c09030 70%); border-radius: 10% 10% 20% 20% / 20% 20% 30% 30%; box-shadow: 0 0 30px 10px rgba(200,140,40,.5), 0 0 60px 20px rgba(200,140,40,.15); animation: bbi-lantern 2s ease-in-out infinite alternate }
.scn-blue-boar-inn .table { position:absolute; bottom:22%; left:25%; right:25%; height:18%; background: linear-gradient(180deg, #8a7050 0%, #6a5030 100%); border-radius: 10% 10% 20% 20% / 20% 20% 30% 30%; box-shadow: 0 8px 16px rgba(0,0,0,.2); animation: bbi-table 1.5s ease-in-out infinite alternate }
.scn-blue-boar-inn .chair { position:absolute; bottom:10%; left:10%; width:24px; height:40px; background: linear-gradient(180deg, #5a4030 0%, #3a2820 100%); border-radius: 20% 20% 10% 10% / 30% 30% 15% 15%; transform-origin: bottom; box-shadow: 0 4px 8px rgba(0,0,0,.2); animation: bbi-chair 0.8s ease-in-out infinite }
.scn-blue-boar-inn .boar-figure { position:absolute; bottom:8%; left:48%; width:30px; height:60px; background: linear-gradient(180deg, #4a3828 0%, #2a1a10 100%); border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%; transform-origin: bottom center; animation: bbi-boar 1.2s ease-in-out infinite alternate; box-shadow: 0 0 8px rgba(0,0,0,.3) }
.scn-blue-boar-inn .sign { position:absolute; top:8%; left:30%; right:30%; height:12%; background: linear-gradient(135deg, #a08060 0%, #805030 100%); border-radius: 10% 10% 10% 10% / 30% 30% 30% 30%; box-shadow: 0 4px 8px rgba(0,0,0,.2); clip-path: polygon(5% 0%, 95% 0%, 90% 100%, 10% 100%); animation: bbi-sign 3s ease-in-out infinite }
.scn-blue-boar-inn .shake-tint { position:absolute; inset:0; background: radial-gradient(circle at 50% 50%, rgba(0,0,0,0.1) 0%, transparent 70%); pointer-events: none; animation: bbi-shake 0.2s infinite }
@keyframes bbi-lantern { 0% { transform: rotate(-3deg) scale(1); box-shadow: 0 0 20px 6px rgba(200,140,40,.4), 0 0 40px 12px rgba(200,140,40,.1) } 50% { transform: rotate(3deg) scale(1.05); box-shadow: 0 0 40px 12px rgba(200,140,40,.6), 0 0 80px 24px rgba(200,140,40,.2) } 100% { transform: rotate(-3deg) scale(1); box-shadow: 0 0 20px 6px rgba(200,140,40,.4), 0 0 40px 12px rgba(200,140,40,.1) } }
@keyframes bbi-table { 0% { transform: translateY(0) } 50% { transform: translateY(-3px) } 100% { transform: translateY(0) } }
@keyframes bbi-chair { 0% { transform: rotate(0deg) translateY(0) } 50% { transform: rotate(2deg) translateY(-2px) } 100% { transform: rotate(0deg) translateY(0) } }
@keyframes bbi-boar { 0% { transform: translateX(0) rotate(-1deg) } 50% { transform: translateX(4px) rotate(1deg) } 100% { transform: translateX(0) rotate(-1deg) } }
@keyframes bbi-sign { 0% { transform: rotate(-2deg) } 50% { transform: rotate(2deg) } 100% { transform: rotate(-2deg) } }
@keyframes bbi-shake { 0% { transform: translate(0,0) } 25% { transform: translate(-2px,1px) } 50% { transform: translate(2px,-1px) } 75% { transform: translate(-1px,2px) } 100% { transform: translate(0,0) } }

/* jaggers-office-verification */
.scn-jaggers-office-verification {
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 60%, #0e0e1a 100%), radial-gradient(ellipse at 40% 60%, #3a3a5a 0%, transparent 60%);
  position: relative;
  overflow: hidden;
}
.scn-jaggers-office-verification .wall-bg {
  position: absolute;
  inset: 0 0 30% 0;
  background: linear-gradient(180deg, #2e2e44 0%, #1e1e30 100%);
  box-shadow: inset 0 -20px 40px rgba(0,0,0,0.6);
  animation: jo-wall 15s ease-in-out infinite alternate;
}
.scn-jaggers-office-verification .floor {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 30%;
  background: linear-gradient(0deg, #1a1a2a 0%, #26263a 100%);
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.5);
  animation: jo-floor 12s ease-in-out infinite alternate;
}
.scn-jaggers-office-verification .desk {
  position: absolute;
  bottom: 18%;
  left: 25%;
  width: 35%;
  height: 16%;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 4% 4% 2% 2%;
  box-shadow: 0 8px 25px rgba(0,0,0,0.7);
}
.scn-jaggers-office-verification .lamp {
  position: absolute;
  bottom: 30%;
  left: 32%;
  width: 12%;
  height: 18%;
  background: radial-gradient(circle at 50% 30%, #d4a060 0%, #8a6020 70%, transparent 100%);
  border-radius: 50% 50% 40% 40% / 40% 40% 50% 50%;
  box-shadow: 0 0 40px 15px #d4a060, 0 0 80px 30px rgba(212,160,96,0.3);
  animation: jo-lamp 3s ease-in-out infinite alternate;
}
.scn-jaggers-office-verification .figure-jaggers {
  position: absolute;
  bottom: 19%;
  left: 35%;
  width: 10%;
  height: 30%;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 2px 0 10px rgba(0,0,0,0.6);
  animation: jo-jaggers 8s ease-in-out infinite;
}
.scn-jaggers-office-verification .figure-pip {
  position: absolute;
  bottom: 19%;
  left: 55%;
  width: 8%;
  height: 28%;
  background: linear-gradient(180deg, #2a2a3a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 45% 45% / 55% 55% 45% 45%;
  box-shadow: -2px 0 10px rgba(0,0,0,0.5);
  animation: jo-pip 6s ease-in-out infinite;
}
.scn-jaggers-office-verification .shelf {
  position: absolute;
  top: 8%;
  left: 60%;
  width: 25%;
  height: 4%;
  background: linear-gradient(90deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 2px;
  box-shadow: 0 4px 10px rgba(0,0,0,0.5);
}
@keyframes jo-wall { 0% { opacity: 0.9; transform: scale(1); } 50% { opacity: 0.95; } 100% { opacity: 0.85; transform: scale(1.01); } }
@keyframes jo-floor { 0% { background-position: 0 0; } 50% { background-position: 5% 0; } 100% { background-position: -3% 0; } }
@keyframes jo-lamp { 0% { box-shadow: 0 0 30px 10px #d4a060, 0 0 60px 20px rgba(212,160,96,0.2); opacity:0.95; } 50% { box-shadow: 0 0 50px 20px #e0b070, 0 0 90px 35px rgba(224,176,112,0.4); opacity:1; } 100% { box-shadow: 0 0 35px 12px #d4a060, 0 0 70px 25px rgba(212,160,96,0.3); opacity:0.9; } }
@keyframes jo-jaggers { 0% { transform: translateY(0) rotate(-1deg); } 25% { transform: translateY(-2px) rotate(0deg); } 50% { transform: translateY(0) rotate(1deg); } 75% { transform: translateY(-1px) rotate(0deg); } 100% { transform: translateY(0) rotate(-1deg); } }
@keyframes jo-pip { 0% { transform: translateY(0) scale(1); } 30% { transform: translateY(-1px) scale(1.02); } 60% { transform: translateY(1px) scale(0.98); } 100% { transform: translateY(0) scale(1); } }

/* temple-herbert-returns */
.scn-temple-herbert-returns {
  background: linear-gradient(180deg, #1a1a2e 0%, #121220 60%, #0a0a14 100%), radial-gradient(ellipse at 70% 40%, #2a2a4a 0%, transparent 80%);
  position: relative;
  overflow: hidden;
}
.scn-temple-herbert-returns .room-bg {
  position: absolute;
  inset: 0 0 20% 0;
  background: linear-gradient(180deg, #1e1e34 0%, #141428 100%);
  box-shadow: inset 0 -30px 60px rgba(0,0,0,0.7);
  animation: thr-bg 20s ease-in-out infinite alternate;
}
.scn-temple-herbert-returns .door-frame {
  position: absolute;
  bottom: 0;
  left: 15%;
  width: 30%;
  height: 80%;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 8% 8% 0 0 / 10% 10% 0 0;
  box-shadow: inset -5px 0 10px rgba(0,0,0,0.5);
  animation: thr-doorframe 10s ease-in-out infinite alternate;
}
.scn-temple-herbert-returns .door {
  position: absolute;
  bottom: 0;
  left: 17%;
  width: 26%;
  height: 75%;
  background: linear-gradient(90deg, #3a2a1a 0%, #2a1a0a 100%);
  border-radius: 6% 6% 0 0 / 8% 8% 0 0;
  box-shadow: -2px 0 15px rgba(0,0,0,0.6);
  animation: thr-door 7s ease-in-out infinite;
  transform-origin: left center;
}
.scn-temple-herbert-returns .candle {
  position: absolute;
  bottom: 18%;
  left: 55%;
  width: 6%;
  height: 15%;
  background: linear-gradient(180deg, #e0c080 0%, #a08040 60%, #603020 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 0 0 20px 5px #e0c080, 0 0 40px 10px rgba(224,192,128,0.3);
  animation: thr-candle 3s ease-in-out infinite alternate;
}
.scn-temple-herbert-returns .figure-herbert {
  position: absolute;
  bottom: 10%;
  left: 18%;
  width: 10%;
  height: 35%;
  background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: thr-herbert 5s ease-in-out infinite;
}
.scn-temple-herbert-returns .figure-pip-b {
  position: absolute;
  bottom: 10%;
  left: 60%;
  width: 9%;
  height: 32%;
  background: linear-gradient(180deg, #2a2a3a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 45% 45% / 55% 55% 45% 45%;
  animation: thr-pipb 4s ease-in-out infinite;
}
.scn-temple-herbert-returns .chair {
  position: absolute;
  bottom: 12%;
  left: 72%;
  width: 15%;
  height: 20%;
  background: linear-gradient(180deg, #2a1a0a 0%, #1a0a00 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: -3px 0 12px rgba(0,0,0,0.6);
  animation: thr-chair 9s ease-in-out infinite alternate;
}
@keyframes thr-bg { 0% { opacity:0.8; } 50% { opacity:0.9; } 100% { opacity:0.75; } }
@keyframes thr-doorframe { 0% { transform: scaleY(1) translateY(0); } 50% { transform: scaleY(1.01) translateY(-1px); } 100% { transform: scaleY(0.99) translateY(0); } }
@keyframes thr-door { 0% { transform: rotateY(0deg); } 20% { transform: rotateY(15deg); } 40% { transform: rotateY(0deg); } 100% { transform: rotateY(0deg); } }
@keyframes thr-candle { 0% { box-shadow: 0 0 15px 3px #e0c080, 0 0 30px 8px rgba(224,192,128,0.2); opacity:0.9; } 50% { box-shadow: 0 0 25px 8px #f0d090, 0 0 50px 15px rgba(240,208,144,0.4); opacity:1; } 100% { box-shadow: 0 0 18px 4px #e0c080, 0 0 35px 10px rgba(224,192,128,0.25); opacity:0.95; } }
@keyframes thr-herbert { 0% { transform: translateY(0) rotate(-2deg); } 20% { transform: translateY(-3px) rotate(2deg); } 40% { transform: translateY(0) rotate(0deg); } 60% { transform: translateY(2px) rotate(-2deg); } 100% { transform: translateY(0) rotate(-2deg); } }
@keyframes thr-pipb { 0% { transform: translateY(0) scale(1); } 30% { transform: translateY(-1px) scale(1.02); } 60% { transform: translateY(1px) scale(0.98); } 100% { transform: translateY(0) scale(1); } }
@keyframes thr-chair { 0% { transform: rotate(0deg) translateY(0); } 50% { transform: rotate(1deg) translateY(-1px); } 100% { transform: rotate(-1deg) translateY(0); } }

/* temple-after-revelation */
.scn-temple-after-revelation {
  background: linear-gradient(180deg, #2a1a0a 0%, #1a0e05 40%, #0a0502 100%), radial-gradient(ellipse at 50% 30%, #5a3010 0%, transparent 70%);
  position: relative;
  overflow: hidden;
}
.scn-temple-after-revelation .hearth-bg {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 50%;
  background: linear-gradient(180deg, #1a0e08 0%, #0a0604 100%);
  box-shadow: inset 0 20px 50px rgba(0,0,0,0.8);
  animation: tar-hearth 18s ease-in-out infinite alternate;
}
.scn-temple-after-revelation .fireplace {
  position: absolute;
  bottom: 10%;
  left: 20%;
  width: 60%;
  height: 50%;
  background: linear-gradient(180deg, #3a1a0a 0%, #1a0a00 100%);
  border-radius: 30% 30% 10% 10% / 40% 40% 10% 10%;
  box-shadow: inset 0 -20px 40px rgba(0,0,0,0.5), 0 0 30px 10px #8a4020;
  animation: tar-fireplace 12s ease-in-out infinite alternate;
}
.scn-temple-after-revelation .fire {
  position: absolute;
  bottom: 15%;
  left: 35%;
  width: 30%;
  height: 30%;
  background: radial-gradient(ellipse at 50% 80%, #e06020 0%, #c04010 40%, #a02000 70%, transparent 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  box-shadow: 0 0 60px 30px #e06020, 0 0 120px 60px rgba(224,96,32,0.3);
  animation: tar-fire 2s ease-in-out infinite alternate;
}
.scn-temple-after-revelation .mantel {
  position: absolute;
  bottom: 52%;
  left: 15%;
  width: 70%;
  height: 6%;
  background: linear-gradient(90deg, #4a2a12 0%, #2a1206 100%);
  border-radius: 4px;
  box-shadow: 0 4px 15px rgba(0,0,0,0.7);
}
.scn-temple-after-revelation .figure-magwitch {
  position: absolute;
  bottom: 12%;
  left: 22%;
  width: 14%;
  height: 38%;
  background: linear-gradient(180deg, #2a1a0a 0%, #0a0500 100%);
  border-radius: 50% 50% 40% 40% / 55% 55% 45% 45%;
  box-shadow: -5px 0 20px rgba(0,0,0,0.6);
  animation: tar-magwitch 8s ease-in-out infinite;
}
.scn-temple-after-revelation .figure-herbert-c {
  position: absolute;
  bottom: 12%;
  left: 50%;
  width: 11%;
  height: 35%;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0e05 100%);
  border-radius: 50% 50% 45% 45% / 55% 55% 40% 40%;
  animation: tar-herbert 6s ease-in-out infinite;
}
.scn-temple-after-revelation .chair-a {
  position: absolute;
  bottom: 10%;
  left: 10%;
  width: 16%;
  height: 22%;
  background: linear-gradient(180deg, #3a1a08 0%, #1a0800 100%);
  border-radius: 30% 30% 10% 10% / 40% 40% 10% 10%;
  box-shadow: -2px 0 10px rgba(0,0,0,0.5);
  animation: tar-chair-a 10s ease-in-out infinite alternate;
}
.scn-temple-after-revelation .chair-b {
  position: absolute;
  bottom: 10%;
  left: 70%;
  width: 16%;
  height: 22%;
  background: linear-gradient(180deg, #3a1a08 0%, #1a0800 100%);
  border-radius: 30% 30% 10% 10% / 40% 40% 10% 10%;
  box-shadow: 2px 0 10px rgba(0,0,0,0.5);
  animation: tar-chair-b 12s ease-in-out infinite alternate;
}
@keyframes tar-hearth { 0% { opacity:0.8; } 50% { opacity:0.95; } 100% { opacity:0.85; } }
@keyframes tar-fireplace { 0% { box-shadow: inset 0 -20px 40px rgba(0,0,0,0.5), 0 0 30px 10px #8a4020; } 50% { box-shadow: inset 0 -20px 40px rgba(0,0,0,0.5), 0 0 50px 20px #a05030; } 100% { box-shadow: inset 0 -20px 40px rgba(0,0,0,0.5), 0 0 35px 12px #8a4020; } }
@keyframes tar-fire { 0% { transform: scaleY(0.95) translateY(0); opacity:0.9; } 50% { transform: scaleY(1.1) translateY(-5px); opacity:1; } 100% { transform: scaleY(0.95) translateY(0); opacity:0.9; } }
@keyframes tar-magwitch { 0% { transform: translateY(0) rotate(-1deg); } 30% { transform: translateY(-2px) rotate(0deg); } 60% { transform: translateY(0) rotate(1deg); } 100% { transform: translateY(0) rotate(-1deg); } }
@keyframes tar-herbert { 0% { transform: translateY(0) scale(1); } 25% { transform: translateY(-1px) scale(1.01); } 50% { transform: translateY(1px) scale(0.99); } 75% { transform: translateY(-1px) scale(1); } 100% { transform: translateY(0) scale(1); } }
@keyframes tar-chair-a { 0% { transform: rotate(0deg) translateY(0); } 50% { transform: rotate(1deg) translateY(-1px); } 100% { transform: rotate(-1deg) translateY(0); } }
@keyframes tar-chair-b { 0% { transform: rotate(0deg) translateY(0); } 50% { transform: rotate(-1deg) translateY(-1px); } 100% { transform: rotate(1deg) translateY(0); } }

/* temple-magwitch-story */
.scn-temple-magwitch-story {
  background: linear-gradient(180deg, #0a0502 0%, #1a0a04 30%, #0e0502 100%), radial-gradient(ellipse at 50% 40%, #2a1005 0%, transparent 70%);
  position: relative;
  overflow: hidden;
}
.scn-temple-magwitch-story .deep-shadow {
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse at 60% 50%, transparent 0%, #000000 80%);
  animation: tms-shadow 15s ease-in-out infinite alternate;
}
.scn-temple-magwitch-story .candlelight {
  position: absolute;
  bottom: 20%;
  left: 25%;
  width: 20%;
  height: 30%;
  background: radial-gradient(circle at 50% 30%, #d08040 0%, #a05020 50%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 60px 30px #d08040, 0 0 120px 60px rgba(208,128,64,0.3);
  animation: tms-candlelight 3s ease-in-out infinite alternate;
}
.scn-temple-magwitch-story .figure-magwitch-story {
  position: absolute;
  bottom: 10%;
  left: 35%;
  width: 16%;
  height: 42%;
  background: linear-gradient(180deg, #1a0a04 0%, #0a0400 100%);
  border-radius: 50% 50% 40% 40% / 55% 55% 45% 45%;
  box-shadow: -8px 0 30px rgba(0,0,0,0.7);
  animation: tms-magwitch 7s ease-in-out infinite;
  transform-origin: bottom center;
}
.scn-temple-magwitch-story .table {
  position: absolute;
  bottom: 12%;
  left: 20%;
  width: 60%;
  height: 10%;
  background: linear-gradient(180deg, #3a1a08 0%, #1a0800 100%);
  border-radius: 10% 10% 5% 5% / 20% 20% 5% 5%;
  box-shadow: 0 8px 25px rgba(0,0,0,0.8);
  animation: tms-table 20s ease-in-out infinite alternate;
}
.scn-temple-magwitch-story .mug {
  position: absolute;
  bottom: 18%;
  left: 32%;
  width: 6%;
  height: 8%;
  background: linear-gradient(180deg, #4a2a12 0%, #2a1206 100%);
  border-radius: 10% 10% 20% 20% / 20% 20% 30% 30%;
  box-shadow: 2px 2px 5px rgba(0,0,0,0.5);
  animation: tms-mug 8s ease-in-out infinite alternate;
}
.scn-temple-magwitch-story .hand {
  position: absolute;
  bottom: 22%;
  left: 42%;
  width: 7%;
  height: 12%;
  background: linear-gradient(180deg, #2a1a0a 0%, #0a0500 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  transform: rotate(20deg);
  animation: tms-hand 5s ease-in-out infinite;
}
.scn-temple-magwitch-story .shadow-play {
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse at 40% 60%, rgba(0,0,0,0.3) 0%, transparent 60%);
  animation: tms-shadow-play 12s ease-in-out infinite alternate;
}
@keyframes tms-shadow { 0% { opacity:0.6; } 50% { opacity:0.8; } 100% { opacity:0.7; } }
@keyframes tms-candlelight { 0% { box-shadow: 0 0 40px 20px #d08040, 0 0 80px 40px rgba(208,128,64,0.2); opacity:0.95; } 50% { box-shadow: 0 0 60px 30px #e09050, 0 0 140px 70px rgba(224,144,80,0.4); opacity:1; } 100% { box-shadow: 0 0 45px 22px #d08040, 0 0 100px 50px rgba(208,128,64,0.25); opacity:0.9; } }
@keyframes tms-magwitch { 0% { transform: translateY(0) rotate(-2deg); } 20% { transform: translateY(-3px) rotate(1deg); } 40% { transform: translateY(0) rotate(0deg); } 60% { transform: translateY(2px) rotate(-2deg); } 80% { transform: translateY(-1px) rotate(1deg); } 100% { transform: translateY(0) rotate(-2deg); } }
@keyframes tms-table { 0% { transform: scaleX(1) translateY(0); } 50% { transform: scaleX(1.02) translateY(-1px); } 100% { transform: scaleX(0.98) translateY(0); } }
@keyframes tms-mug { 0% { transform: translate(0,0) rotate(0deg); } 30% { transform: translate(2px,-1px) rotate(5deg); } 60% { transform: translate(-1px,1px) rotate(-2deg); } 100% { transform: translate(0,0) rotate(0deg); } }
@keyframes tms-hand { 0% { transform: rotate(20deg) translateY(0); } 50% { transform: rotate(25deg) translateY(-2px); } 100% { transform: rotate(20deg) translateY(0); } }
@keyframes tms-shadow-play { 0% { opacity:0.4; } 50% { opacity:0.7; } 100% { opacity:0.5; } }

/* coach-to-town (warm sunlit) */
.scn-coach-to-town {
  background: linear-gradient(180deg, #f7e8c8 0%, #d4b66a 40%, #b88a44 100%),
              radial-gradient(ellipse at 60% 100%, #f0c870 0%, transparent 60%);
}
.scn-coach-to-town .sky     { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #f8e4b2 0%, #f0d498 100%); animation: ct-sky 14s ease-in-out infinite alternate; }
.scn-coach-to-town .building{ position:absolute; bottom:20%; left:20%; width:40%; height:45%; background: linear-gradient(135deg, #d59a5a 0%, #b0743a 100%); border-radius:4% 4% 0 0; box-shadow: 6px 4px 12px rgba(0,0,0,.3); }
.scn-coach-to-town .door    { position:absolute; bottom:20%; left:40%; width:10%; height:20%; background: linear-gradient(180deg, #6a3e1a 0%, #4a2a0a 100%); border-radius:50% 50% 0 0 / 30% 30% 0 0; transform-origin: top center; animation: ct-door 6s ease-in-out infinite; }
.scn-coach-to-town .window  { position:absolute; bottom:38%; left:56%; width:8%; height:12%; background: radial-gradient(circle, #ffe8b0 0%, #f0c060 70%); border: 2px solid #8a6020; border-radius:10%; box-shadow: 0 0 18px 6px #f0c060; animation: ct-window 4s ease-in-out infinite alternate; }
.scn-coach-to-town .sign    { position:absolute; bottom:30%; left:28%; width:12%; height:8%; background: linear-gradient(135deg, #c08030 0%, #a06020 100%); border-radius:10%; box-shadow: 2px 2px 4px rgba(0,0,0,.4); transform: rotate(-3deg); }
.scn-coach-to-town .ground  { position:absolute; bottom:0; left:0; right:0; height:20%; background: linear-gradient(180deg, #9a7a3a 0%, #6a4a1a 100%); border-radius:40% 30% 0 0 / 60% 40% 0 0; }
.scn-coach-to-town .figure-a{ position:absolute; bottom:20%; left:10%; width:4%; height:12%; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; animation: ct-walk-a 8s ease-in-out infinite; }
.scn-coach-to-town .figure-b{ position:absolute; bottom:20%; left:15%; width:4%; height:12%; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; animation: ct-walk-b 8s ease-in-out infinite 2s; }
@keyframes ct-sky    { 0% { opacity:.9; transform: scaleY(1); } 50% { opacity:1; transform: scaleY(1.02); } 100% { opacity:.85; transform: scaleY(1); } }
@keyframes ct-door   { 0% { transform: scaleY(1); } 25% { transform: scaleY(0.3); } 50% { transform: scaleY(1); } 75% { transform: scaleY(0.3); } 100% { transform: scaleY(1); } }
@keyframes ct-window { 0% { box-shadow: 0 0 12px 4px #f0c060; opacity:.8; } 50% { box-shadow: 0 0 24px 10px #ffe080; opacity:1; } 100% { box-shadow: 0 0 16px 6px #f0c060; opacity:.9; } }
@keyframes ct-walk-a { 0% { transform: translateX(0) translateY(0) rotate(-1deg); } 25% { transform: translateX(8%) translateY(-2px) rotate(1deg); } 50% { transform: translateX(16%) translateY(0) rotate(-1deg); } 75% { transform: translateX(24%) translateY(-1px) rotate(1deg); } 100% { transform: translateX(32%) translateY(0) rotate(0); } }
@keyframes ct-walk-b { 0% { transform: translateX(0) translateY(0) rotate(1deg); } 25% { transform: translateX(6%) translateY(-2px) rotate(-1deg); } 50% { transform: translateX(12%) translateY(0) rotate(1deg); } 75% { transform: translateX(18%) translateY(-1px) rotate(-1deg); } 100% { transform: translateX(24%) translateY(0) rotate(0); } }

/* miss-havisham-visit-again (calm dawn) */
.scn-miss-havisham-visit-again {
  background: linear-gradient(180deg, #eac7b0 0%, #c8a080 30%, #907050 100%),
              radial-gradient(ellipse at 30% 80%, #b08050 0%, transparent 60%);
}
.scn-miss-havisham-visit-again .sky    { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #f0d0b8 0%, #d0a888 100%); animation: mh2-sky 20s ease-in-out infinite alternate; }
.scn-miss-havisham-visit-again .horizon{ position:absolute; bottom:40%; left:0; right:0; height:10%; background: linear-gradient(180deg, #b09070 0%, #8a6a4a 100%); border-radius: 60% 40% 0 0 / 80% 60% 0 0; }
.scn-miss-havisham-visit-again .field  { position:absolute; bottom:20%; left:0; right:0; height:20%; background: linear-gradient(180deg, #8a7a5a 0%, #6a5a3a 100%); border-radius: 50% 50% 0 0 / 60% 60% 0 0; animation: mh2-field 25s ease-in-out infinite alternate; }
.scn-miss-havisham-visit-again .tree   { position:absolute; bottom:25%; left:20%; width:6%; height:30%; background: linear-gradient(180deg, #4a3a1a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: mh2-tree 12s ease-in-out infinite alternate; }
.scn-miss-havisham-visit-again .distant-house{ position:absolute; bottom:28%; right:15%; width:8%; height:15%; background: linear-gradient(180deg, #7a5a3a 0%, #5a3a1a 100%); border-radius: 10% 10% 0 0; box-shadow: 2px 2px 6px rgba(0,0,0,.3); }
.scn-miss-havisham-visit-again .road   { position:absolute; bottom:18%; left:45%; width:20%; height:2%; background: #7a6a4a; border-radius: 50%; transform: rotate(-2deg); filter: blur(1px); animation: mh2-roadview 30s linear infinite; }
.scn-miss-havisham-visit-again .figure { position:absolute; bottom:16%; left:48%; width:3%; height:10%; background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: mh2-walk 10s ease-in-out infinite; }
@keyframes mh2-sky  { 0% { opacity:.7; transform: scaleY(1) translateX(0); } 50% { opacity:.9; transform: scaleY(1.03) translateX(2%); } 100% { opacity:.75; transform: scaleY(1) translateX(0); } }
@keyframes mh2-field{ 0% { transform: translateY(0) scaleY(1); } 50% { transform: translateY(-2px) scaleY(1.02); } 100% { transform: translateY(0) scaleY(1); } }
@keyframes mh2-tree { 0% { transform: rotate(-2deg) scaleX(1); } 50% { transform: rotate(2deg) scaleX(1.05); } 100% { transform: rotate(-1deg) scaleX(1); } }
@keyframes mh2-roadview{ 0% { opacity:.5; } 50% { opacity:.8; } 100% { opacity:.5; } }
@keyframes mh2-walk { 0% { transform: translateX(0) translateY(0) rotate(-1deg); } 25% { transform: translateX(4%) translateY(-1px) rotate(1deg); } 50% { transform: translateX(8%) translateY(0) rotate(-1deg); } 75% { transform: translateX(12%) translateY(-1px) rotate(1deg); } 100% { transform: translateX(16%) translateY(0) rotate(0); } }

/* orlick-porter (dark dawn) */
.scn-orlick-porter {
  background: linear-gradient(180deg, #1a1a3e 0%, #2c2040 30%, #3a2848 60%, #4a3458 100%),
              radial-gradient(ellipse at 50% 80%, #4a3458 0%, transparent 70%);
}
.scn-orlick-porter .sky    { position:absolute; inset:0 0 35% 0; background: linear-gradient(180deg, #2a2a4e 0%, #10102e 100%); animation: op-sky 30s ease-in-out infinite alternate; }
.scn-orlick-porter .gate   { position:absolute; bottom:10%; left:35%; width:30%; height:50%; background: linear-gradient(180deg, #3a1a0a 0%, #0a0a0a 100%); border: 2px solid #5a2a0a; border-radius: 0 0 10% 10% / 0 0 20% 20%; transform-origin: center bottom; animation: op-gate 8s ease-in-out infinite; }
.scn-orlick-porter .wall   { position:absolute; bottom:0; left:0; right:0; height:35%; background: linear-gradient(180deg, #2a1a0a 0%, #0a0500 100%); border-radius: 30% 30% 0 0 / 20% 20% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,.6); }
.scn-orlick-porter .figure { position:absolute; bottom:10%; left:45%; width:6%; height:30%; background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: op-figure 6s ease-in-out infinite alternate; }
.scn-orlick-porter .lantern{ position:absolute; bottom:20%; left:44%; width:4%; height:6%; background: radial-gradient(circle, #f0c060 0%, #b08030 70%); border-radius:50%; box-shadow: 0 0 20px 8px #b08030, 0 0 40px 16px rgba(176,128,48,.3); animation: op-lantern 3s ease-in-out infinite alternate; }
.scn-orlick-porter .ground { position:absolute; bottom:0; left:0; right:0; height:10%; background: linear-gradient(180deg, #2a1a0a 0%, #0a0500 100%); border-radius:50% 50% 0 0 / 80% 80% 0 0; }
@keyframes op-sky    { 0% { opacity:.5; } 50% { opacity:.8; } 100% { opacity:.4; } }
@keyframes op-gate   { 0% { transform: scaleX(1) scaleY(1); } 25% { transform: scaleX(0.2) scaleY(1); } 50% { transform: scaleX(1) scaleY(1); } 75% { transform: scaleX(0.2) scaleY(1); } 100% { transform: scaleX(1) scaleY(1); } }
@keyframes op-figure { 0% { transform: translateX(0) rotate(-1deg); } 50% { transform: translateX(-3%) rotate(1deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes op-lantern{ 0% { box-shadow: 0 0 14px 4px #b08030, 0 0 28px 8px rgba(176,128,48,.2); opacity:.8; } 50% { box-shadow: 0 0 26px 10px #f0c060, 0 0 50px 20px rgba(240,192,96,.4); opacity:1; } 100% { box-shadow: 0 0 18px 6px #b08030, 0 0 36px 12px rgba(176,128,48,.25); opacity:.9; } }

/* miss-havisham-visit (tense dim interior) */
.scn-miss-havisham-visit {
  background: linear-gradient(180deg, #2a1a1a 0%, #3a2020 30%, #4a2a2a 60%, #3a1a1a 100%),
              radial-gradient(ellipse at 50% 60%, #5a3030 0%, transparent 70%);
}
.scn-miss-havisham-visit .wall    { position:absolute; inset:0; background: linear-gradient(135deg, #4a2a2a 0%, #3a1a1a 100%); }
.scn-miss-havisham-visit .window  { position:absolute; top:10%; left:30%; width:20%; height:25%; background: radial-gradient(ellipse, #a08050 0%, #604020 100%); border: 3px solid #2a1a0a; border-radius: 10%; box-shadow: inset 0 0 20px #604020; animation: mh1-window 5s ease-in-out infinite alternate; }
.scn-miss-havisham-visit .chair   { position:absolute; bottom:20%; left:40%; width:15%; height:30%; background: linear-gradient(180deg, #2a1a0a 0%, #1a0a00 100%); border-radius: 10% 10% 5% 5%; box-shadow: 4px 4px 8px rgba(0,0,0,.5); }
.scn-miss-havisham-visit .figure  { position:absolute; bottom:20%; left:42%; width:10%; height:28%; background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: mh1-figure 7s ease-in-out infinite alternate; }
.scn-miss-havisham-visit .floor   { position:absolute; bottom:0; left:0; right:0; height:20%; background: linear-gradient(180deg, #1a0a0a 0%, #0a0000 100%); border-radius: 40% 60% 0 0 / 80% 80% 0 0; box-shadow: inset 0 6px 12px rgba(0,0,0,.6); }
.scn-miss-havisham-visit .candle  { position:absolute; bottom:50%; left:25%; width:3%; height:10%; background: linear-gradient(180deg, #f0c060 0%, #c08020 100%); border-radius: 20% 20% 10% 10%; box-shadow: 0 0 16px 4px #c08020; animation: mh1-candle 2s ease-in-out infinite alternate; }
.scn-miss-havisham-visit .shadow  { position:absolute; bottom:0; left:42%; width:14%; height:15%; background: radial-gradient(ellipse, rgba(0,0,0,.4) 0%, transparent 70%); filter: blur(4px); animation: mh1-shadow 6s ease-in-out infinite alternate; }
@keyframes mh1-window { 0% { opacity:.3; box-shadow: inset 0 0 10px #402010; } 50% { opacity:.6; box-shadow: inset 0 0 30px #a08050; } 100% { opacity:.35; box-shadow: inset 0 0 12px #402010; } }
@keyframes mh1-figure{ 0% { transform: rotate(0) scaleY(1); } 50% { transform: rotate(2deg) scaleY(1.02); } 100% { transform: rotate(-2deg) scaleY(0.98); } }
@keyframes mh1-candle{ 0% { transform: scaleY(1) scaleX(1); opacity:.7; } 50% { transform: scaleY(1.1) scaleX(1.05); opacity:1; } 100% { transform: scaleY(0.95) scaleX(1); opacity:.8; } }
@keyframes mh1-shadow{ 0% { transform: scaleX(1) translateX(0); opacity:.4; } 50% { transform: scaleX(1.2) translateX(-5%); opacity:.6; } 100% { transform: scaleX(1) translateX(0); opacity:.4; } }

/* soldiers-arrive – bright interior, tense */
.scn-soldiers-arrive {
  background: 
    linear-gradient(180deg, #e8dcc8 0%, #c8b898 60%, #a08868 100%),
    radial-gradient(ellipse at 50% 80%, #f0e0c8 0%, transparent 70%);
}
.scn-soldiers-arrive .room-bg {
  position: absolute; inset: 0;
  background: linear-gradient(135deg, #dcd0b8 0%, #b8a888 100%);
  box-shadow: inset 0 -40px 60px rgba(0,0,0,0.3);
  animation: sa1-room 14s ease-in-out infinite alternate;
}
.scn-soldiers-arrive .table {
  position: absolute; bottom: 20%; left: 30%; width: 40%; height: 8%;
  background: linear-gradient(180deg, #8b7355 0%, #5c4a32 100%);
  border-radius: 10px;
  box-shadow: 0 4px 12px rgba(0,0,0,0.5);
  animation: sa1-table 4s ease-in-out infinite;
}
.scn-soldiers-arrive .chair-l {
  position: absolute; bottom: 12%; left: 32%; width: 12%; height: 18%;
  background: linear-gradient(180deg, #7a6447 0%, #4c3d28 100%);
  border-radius: 20% 20% 10% 10%;
  transform-origin: bottom center;
  animation: sa1-chair 2.5s ease-in-out infinite alternate;
}
.scn-soldiers-arrive .chair-r {
  position: absolute; bottom: 12%; right: 32%; width: 12%; height: 18%;
  background: linear-gradient(180deg, #7a6447 0%, #4c3d28 100%);
  border-radius: 20% 20% 10% 10%;
  transform-origin: bottom center;
  animation: sa1-chair 2.5s ease-in-out infinite alternate-reverse;
}
.scn-soldiers-arrive .figure-mrsjoe {
  position: absolute; bottom: 18%; left: 40%; width: 10%; height: 28%;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: sa1-mrsjoe 3s ease-in-out infinite;
}
.scn-soldiers-arrive .soldiers {
  position: absolute; bottom: 8%; right: 5%; width: 30%; height: 60%;
  background: repeating-linear-gradient(90deg, #2a3a4a 0px, #2a3a4a 12px, #1a2a3a 12px, #1a2a3a 16px);
  clip-path: polygon(0% 100%, 0% 20%, 20% 0%, 100% 0%, 100% 100%);
  box-shadow: -4px 0 8px rgba(0,0,0,0.6);
  animation: sa1-soldiers 0.5s steps(2) infinite;
}
.scn-soldiers-arrive .door {
  position: absolute; bottom: 0%; right: 20%; width: 25%; height: 70%;
  background: linear-gradient(180deg, #6b5b4b 0%, #3b2b1b 100%);
  border: 3px solid #4a3a2a;
  border-radius: 4px;
  animation: sa1-door 12s ease-in-out infinite alternate;
}
.scn-soldiers-arrive .lamp {
  position: absolute; top: 25%; left: 15%; width: 8%; height: 14%;
  background: radial-gradient(circle at 50% 40%, #f0e080 0%, #c8a840 40%, transparent 70%);
  border-radius: 30% 30% 20% 20%;
  box-shadow: 0 0 30px 10px rgba(200,168,64,0.5);
  animation: sa1-lamp 4s ease-in-out infinite alternate;
}
@keyframes sa1-room { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.85; } }
@keyframes sa1-table { 0%,100% { transform: scaleY(1); } 30%,70% { transform: scaleY(0.95) translateY(-2px); } }
@keyframes sa1-chair { 0% { transform: rotate(0deg); } 30% { transform: rotate(3deg); } 70% { transform: rotate(-2deg); } 100% { transform: rotate(0deg); } }
@keyframes sa1-mrsjoe { 0%,100% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(-4px) rotate(-2deg); } 75% { transform: translateX(4px) rotate(2deg); } }
@keyframes sa1-soldiers { 0% { opacity: 1; } 50% { opacity: 0.9; } 100% { opacity: 1; } }
@keyframes sa1-door { 0% { transform: translateX(0); } 50% { transform: translateX(6px); } 100% { transform: translateX(0); } }
@keyframes sa1-lamp { 0% { box-shadow: 0 0 20px 8px rgba(200,168,64,0.3); opacity: 0.9; } 50% { box-shadow: 0 0 40px 15px rgba(200,168,64,0.6); opacity: 1; } 100% { box-shadow: 0 0 25px 10px rgba(200,168,64,0.4); opacity: 0.95; } }

/* chase-on-marshes – dusk, tense */
.scn-chase-on-marshes {
  background:
    linear-gradient(180deg, #6a4a6a 0%, #8a5a5a 30%, #c08050 60%, #a06040 100%),
    radial-gradient(ellipse at 50% 100%, #a06040 0%, transparent 60%);
}
.scn-chase-on-marshes .sky-dusk {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #8a6a7a 0%, #c08060 70%, transparent 100%);
  animation: cm1-sky 20s ease-in-out infinite alternate;
}
.scn-chase-on-marshes .marsh {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #5a6a4a 0%, #3a4a2a 100%);
  border-radius: 60% 40% 0 0 / 30% 50% 0 0;
  box-shadow: inset 0 20px 40px rgba(0,0,0,0.4);
  animation: cm1-marsh 16s ease-in-out infinite alternate;
}
.scn-chase-on-marshes .path {
  position: absolute; bottom: 30%; left: 20%; width: 60%; height: 6%;
  background: linear-gradient(90deg, #7a6a5a 0%, #5a4a3a 50%, #7a6a5a 100%);
  border-radius: 50%;
  transform: skewX(-10deg);
  animation: cm1-path 10s ease-in-out infinite alternate;
}
.scn-chase-on-marshes .figure-joe {
  position: absolute; bottom: 28%; left: 30%; width: 10%; height: 40%;
  background: linear-gradient(180deg, #3a3a2a 0%, #1a1a10 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cm1-joe 0.8s steps(2) infinite;
}
.scn-chase-on-marshes .figure-pip {
  position: absolute; bottom: 28%; left: 20%; width: 8%; height: 32%;
  background: linear-gradient(180deg, #4a4a3a 0%, #2a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cm1-pip 0.9s steps(2) infinite;
}
.scn-chase-on-marshes .hut {
  position: absolute; bottom: 25%; right: 10%; width: 18%; height: 22%;
  background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 0 8px 16px rgba(0,0,0,0.5);
  animation: cm1-hut 30s ease-in-out infinite;
}
.scn-chase-on-marshes .grass {
  position: absolute; bottom: 20%; left: 5%; width: 30%; height: 20%;
  background: repeating-linear-gradient(45deg, #4a5a3a 0px, #4a5a3a 4px, #3a4a2a 4px, #3a4a2a 6px);
  clip-path: polygon(0% 100%, 20% 0%, 40% 100%, 60% 20%, 80% 100%, 100% 0%);
  animation: cm1-grass 8s ease-in-out infinite alternate;
}
@keyframes cm1-sky { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.7; } }
@keyframes cm1-marsh { 0% { transform: translateY(0); } 50% { transform: translateY(-3px); } 100% { transform: translateY(2px); } }
@keyframes cm1-path { 0% { transform: skewX(-10deg) translateX(0); } 50% { transform: skewX(-12deg) translateX(-5px); } 100% { transform: skewX(-10deg) translateX(0); } }
@keyframes cm1-joe { 0% { transform: translateY(0) rotate(-1deg); } 25% { transform: translateY(-4px) rotate(2deg); } 50% { transform: translateY(0) rotate(-1deg); } 75% { transform: translateY(-4px) rotate(2deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes cm1-pip { 0% { transform: translateY(0) rotate(1deg); } 25% { transform: translateY(-3px) rotate(-2deg); } 50% { transform: translateY(0) rotate(1deg); } 75% { transform: translateY(-3px) rotate(-2deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes cm1-hut { 0%,100% { transform: scale(1); } 50% { transform: scale(0.98) translateY(-2px); } }
@keyframes cm1-grass { 0% { opacity: 0.7; } 50% { opacity: 1; } 100% { opacity: 0.6; } }

/* convicts-captured – dusk, dark */
.scn-convicts-captured {
  background:
    linear-gradient(180deg, #2a2a4a 0%, #3a3a5a 30%, #4a3a4a 70%, #2a2a3a 100%),
    radial-gradient(ellipse at 50% 30%, #5a4a5a 0%, transparent 60%);
}
.scn-convicts-captured .sky-captured {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #4a3a5a 0%, #5a4a5a 40%, transparent 100%);
  animation: cc1-sky 18s ease-in-out infinite alternate;
}
.scn-convicts-captured .ground-dark {
  position: absolute; bottom: 0; left: 0; right: 0; height: 55%;
  background: linear-gradient(180deg, #2a3a2a 0%, #1a2a1a 100%);
  border-radius: 30% 70% 0 0 / 40% 60% 0 0;
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.7);
  animation: cc1-ground 20s ease-in-out infinite alternate;
}
.scn-convicts-captured .convict-aggro {
  position: absolute; bottom: 25%; left: 30%; width: 12%; height: 45%;
  background: linear-gradient(180deg, #3a3a2a 0%, #1a1a0a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cc1-aggro 4s ease-in-out infinite;
}
.scn-convicts-captured .convict-sub {
  position: absolute; bottom: 20%; left: 48%; width: 10%; height: 38%;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: rotate(10deg);
  transform-origin: bottom center;
  animation: cc1-sub 5s ease-in-out infinite;
}
.scn-convicts-captured .chain {
  position: absolute; bottom: 32%; left: 40%; width: 15%; height: 2%;
  background: repeating-linear-gradient(90deg, #6a5a4a 0px, #6a5a4a 4px, #5a4a3a 4px, #5a4a3a 6px);
  border-radius: 50%;
  animation: cc1-chain 3s ease-in-out infinite alternate;
}
.scn-convicts-captured .guard {
  position: absolute; bottom: 15%; left: 60%; width: 14%; height: 50%;
  background: linear-gradient(180deg, #2a3a4a 0%, #1a2a3a 100%);
  border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: cc1-guard 6s ease-in-out infinite alternate;
}
.scn-convicts-captured .marsh-reed {
  position: absolute; bottom: 20%; left: 10%; width: 16%; height: 30%;
  background: repeating-linear-gradient(10deg, #3a4a2a 0px, #3a4a2a 3px, #2a3a1a 3px, #2a3a1a 5px);
  clip-path: polygon(0% 100%, 30% 0%, 60% 100%, 100% 20%);
  animation: cc1-reed 8s ease-in-out infinite alternate;
}
@keyframes cc1-sky { 0% { opacity: 0.7; } 50% { opacity: 0.9; } 100% { opacity: 0.6; } }
@keyframes cc1-ground { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(1px); } }
@keyframes cc1-aggro { 0%,100% { transform: translateY(0) rotate(-2deg); } 25% { transform: translateY(-5px) rotate(4deg); } 50% { transform: translateY(0) rotate(-3deg); } 75% { transform: translateY(-5px) rotate(5deg); } }
@keyframes cc1-sub { 0%,100% { transform: translateX(0) rotate(10deg); } 30% { transform: translateX(3px) rotate(13deg); } 70% { transform: translateX(-2px) rotate(7deg); } }
@keyframes cc1-chain { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(4px) rotate(5deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes cc1-guard { 0% { transform: scaleY(1); } 50% { transform: scaleY(0.95); } 100% { transform: scaleY(1); } }
@keyframes cc1-reed { 0% { transform: rotate(0deg); } 50% { transform: rotate(3deg); } 100% { transform: rotate(-2deg); } }

/* convict-taken-away – dark, night */
.scn-convict-taken-away {
  background:
    linear-gradient(180deg, #0a0a1a 0%, #1a1a3a 40%, #2a2a4a 100%),
    radial-gradient(ellipse at 50% 50%, #2a2a4a 0%, transparent 70%);
}
.scn-convict-taken-away .sky-night {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #0a0a1a 0%, #1a1a3a 60%, transparent 100%);
  animation: ct1-sky 30s ease-in-out infinite alternate;
}
.scn-convict-taken-away .water {
  position: absolute; bottom: 0; left: 0; right: 0; height: 55%;
  background: linear-gradient(180deg, #0a0a2a 0%, #1a1a3a 50%, #2a3a4a 100%);
  border-radius: 50% 50% 0 0 / 20% 20% 0 0;
  box-shadow: inset 0 10px 40px rgba(0,0,0,0.8);
  animation: ct1-water 14s ease-in-out infinite alternate;
}
.scn-convict-taken-away .boat {
  position: absolute; bottom: 20%; left: 35%; width: 30%; height: 10%;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%);
  border-radius: 40% 40% 20% 20%;
  box-shadow: 0 2px 8px rgba(0,0,0,0.6);
  animation: ct1-boat 6s ease-in-out infinite alternate;
}
.scn-convict-taken-away .crew1 {
  position: absolute; bottom: 24%; left: 38%; width: 8%; height: 25%;
  background: linear-gradient(180deg, #2a3a4a 0%, #1a2a3a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ct1-row 1s ease-in-out infinite;
}
.scn-convict-taken-away .crew2 {
  position: absolute; bottom: 24%; right: 38%; width: 8%; height: 25%;
  background: linear-gradient(180deg, #2a3a4a 0%, #1a2a3a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ct1-row 1s ease-in-out infinite reverse;
}
.scn-convict-taken-away .convict-bound {
  position: absolute; bottom: 26%; left: 46%; width: 8%; height: 22%;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: rotate(5deg);
  animation: ct1-convict 8s ease-in-out infinite;
}
.scn-convict-taken-away .landing-stake {
  position: absolute; bottom: 18%; left: 20%; width: 6%; height: 20%;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 10%;
  box-shadow: 0 0 4px rgba(0,0,0,0.5);
  animation: ct1-stake 12s ease-in-out infinite alternate;
}
.scn-convict-taken-away .moon {
  position: absolute; top: 8%; right: 20%; width: 12%; height: 12%;
  background: radial-gradient(circle, #e0e8f0 0%, #a0b0c0 50%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 40px 15px rgba(160,176,192,0.3);
  animation: ct1-moon 20s ease-in-out infinite alternate;
}
@keyframes ct1-sky { 0% { opacity: 0.6; } 50% { opacity: 0.8; } 100% { opacity: 0.5; } }
@keyframes ct1-water { 0% { transform: translateY(0) scaleY(1); } 50% { transform: translateY(-2px) scaleY(1.02); } 100% { transform: translateY(0) scaleY(1); } }
@keyframes ct1-boat { 0% { transform: translateX(0) rotate(0deg); } 30% { transform: translateX(-4px) rotate(-1deg); } 70% { transform: translateX(4px) rotate(1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes ct1-row { 0% { transform: translateY(0) rotate(0deg); } 25% { transform: translateY(-3px) rotate(8deg); } 50% { transform: translateY(0) rotate(0deg); } 75% { transform: translateY(-3px) rotate(-8deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes ct1-convict { 0%,100% { transform: translateY(0) rotate(5deg); } 50% { transform: translateY(-2px) rotate(7deg); } }
@keyframes ct1-stake { 0% { transform: scaleY(1); } 50% { transform: scaleY(0.96); } 100% { transform: scaleY(1); } }
@keyframes ct1-moon { 0% { opacity: 0.7; box-shadow: 0 0 30px 10px rgba(160,176,192,0.2); } 50% { opacity: 0.9; box-shadow: 0 0 50px 20px rgba(160,176,192,0.4); } 100% { opacity: 0.75; box-shadow: 0 0 35px 12px rgba(160,176,192,0.25); } }

.scn-wemmick-walworth-invitation {
  background: linear-gradient(180deg, #8b7355 0%, #c49a6c 40%, #e1b382 100%), radial-gradient(ellipse at 50% 20%, #f5d6a8 0%, transparent 60%);
}
.scn-wemmick-walworth-invitation .bg-wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #d4b896 0%, #b8936e 100%);
}
.scn-wemmick-walworth-invitation .bg-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #6b4e3a 0%, #4a3424 100%);
  border-radius: 10% 10% 0 0;
}
.scn-wemmick-walworth-invitation .fireplace {
  position: absolute; bottom: 30%; left: 50%; transform: translateX(-50%);
  width: 140px; height: 100px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 8% 8% 4% 4%;
  box-shadow: inset 0 8px 12px rgba(0,0,0,.6);
}
.scn-wemmick-walworth-invitation .fire-glow {
  position: absolute; bottom: 32%; left: 50%; transform: translateX(-50%);
  width: 50px; height: 60px;
  background: radial-gradient(circle, #ffa050 0%, #ff7c30 40%, transparent 80%);
  border-radius: 50%;
  box-shadow: 0 0 40px 20px #ff8c40, 0 0 80px 40px rgba(255,140,64,.3);
  animation: wwi-fire 3s ease-in-out infinite alternate;
}
.scn-wemmick-walworth-invitation .figure-host {
  position: absolute; bottom: 30%; left: 35%;
  width: 22px; height: 50px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a120a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: wwi-host 5s ease-in-out infinite;
}
.scn-wemmick-walworth-invitation .figure-parent {
  position: absolute; bottom: 30%; right: 35%;
  width: 20px; height: 45px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: wwi-parent 6s ease-in-out infinite;
  animation-delay: 1s;
}
.scn-wemmick-walworth-invitation .mantel-clock {
  position: absolute; bottom: 42%; left: 50%; transform: translateX(-50%);
  width: 24px; height: 30px;
  background: linear-gradient(180deg, #8b6b4a 0%, #5a3a1a 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 0 2px 6px rgba(0,0,0,.5);
  animation: wwi-clock 10s linear infinite;
}
@keyframes wwi-fire {
  0% { transform: translateX(-50%) scale(1); opacity: 0.9; box-shadow: 0 0 30px 15px #ff7c30; }
  50% { transform: translateX(-50%) scale(1.05) rotate(2deg); opacity: 1; box-shadow: 0 0 50px 25px #ffa050; }
  100% { transform: translateX(-50%) scale(0.95) rotate(-2deg); opacity: 0.85; box-shadow: 0 0 35px 18px #ff8c40; }
}
@keyframes wwi-host {
  0% { transform: translateY(0) rotate(-1deg); }
  30% { transform: translateY(-2px) rotate(1deg); }
  60% { transform: translateY(-1px) rotate(-0.5deg); }
  100% { transform: translateY(0) rotate(1deg); }
}
@keyframes wwi-parent {
  0% { transform: translateY(0) rotate(0); }
  40% { transform: translateY(-1px) rotate(2deg); }
  70% { transform: translateY(-2px) rotate(-1deg); }
  100% { transform: translateY(0) rotate(0); }
}
@keyframes wwi-clock {
  0% { transform: translateX(-50%) rotate(0); }
  50% { transform: translateX(-50%) rotate(3deg); }
  100% { transform: translateX(-50%) rotate(0); }
}

.scn-wemmick-walworth {
  background: linear-gradient(180deg, #87CEEB 0%, #f0d78e 60%, #c9a86e 100%), radial-gradient(circle at 70% 20%, #fffacd 0%, transparent 50%);
}
.scn-wemmick-walworth .sky-bg {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #6ab0e0 0%, #b0d0f0 100%);
  animation: ww-sky 15s ease-in-out infinite alternate;
}
.scn-wemmick-walworth .sun {
  position: absolute; top: 8%; right: 20%; width: 50px; height: 50px;
  background: radial-gradient(circle, #fff4b0 0%, #f0c040 60%, transparent 80%);
  border-radius: 50%;
  box-shadow: 0 0 60px 30px #f0c040, 0 0 120px 60px rgba(240,192,64,.3);
  animation: ww-sun 20s ease-in-out infinite alternate;
}
.scn-wemmick-walworth .castle {
  position: absolute; bottom: 40%; left: 30%; width: 160px; height: 120px;
  background: linear-gradient(180deg, #9e8a6e 0%, #6b5a42 100%);
  border-radius: 10% 10% 0 0;
  clip-path: polygon(0 100%, 0 20%, 20% 0, 30% 20%, 30% 0, 50% 0, 50% 20%, 70% 0, 80% 20%, 100% 20%, 100% 100%);
  box-shadow: 0 6px 12px rgba(0,0,0,.4);
}
.scn-wemmick-walworth .flag {
  position: absolute; bottom: 58%; left: 48%; width: 4px; height: 30px;
  background: #4a3a2a;
  transform-origin: bottom center;
  animation: ww-flag 6s ease-in-out infinite;
}
.scn-wemmick-walworth .flag::after {
  content: ''; position: absolute; top: 0; left: 4px; width: 18px; height: 12px;
  background: #c8553d; border-radius: 0 50% 50% 0;
}
.scn-wemmick-walworth .cannon {
  position: absolute; bottom: 40%; left: 55%; width: 40px; height: 20px;
  background: linear-gradient(180deg, #4a4a3a 0%, #2a2a1a 100%);
  border-radius: 50% 50% 20% 20%;
  transform-origin: right center;
  animation: ww-cannon 12s ease-in-out infinite;
}
.scn-wemmick-walworth .smoke-puff {
  position: absolute; bottom: 48%; left: 60%; width: 30px; height: 30px;
  background: radial-gradient(circle, rgba(255,255,255,.7) 0%, rgba(200,200,200,.3) 50%, transparent 80%);
  border-radius: 50%;
  animation: ww-smoke 4s ease-out infinite;
  animation-delay: 2s;
}
.scn-wemmick-walworth .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #8a6e4e 0%, #5a422a 100%);
  border-radius: 20% 20% 0 0;
}
@keyframes ww-sky {
  0% { opacity: 0.8; }
  50% { opacity: 1; }
  100% { opacity: 0.7; }
}
@keyframes ww-sun {
  0% { transform: translateY(0) scale(1); box-shadow: 0 0 40px 20px #f0c040; }
  50% { transform: translateY(-5px) scale(1.05); box-shadow: 0 0 60px 30px #ffe080; }
  100% { transform: translateY(3px) scale(0.95); box-shadow: 0 0 50px 25px #f0c040; }
}
@keyframes ww-flag {
  0% { transform: rotate(-3deg); }
  50% { transform: rotate(5deg); }
  100% { transform: rotate(-3deg); }
}
@keyframes ww-cannon {
  0% { transform: rotate(0); }
  30% { transform: rotate(-2deg) translateX(-2px); }
  60% { transform: rotate(1deg) translateX(2px); }
  100% { transform: rotate(0); }
}
@keyframes ww-smoke {
  0% { transform: scale(0.5); opacity: 0.8; }
  50% { transform: scale(1.5) translateX(10px); opacity: 0.4; }
  100% { transform: scale(2) translateX(20px); opacity: 0; }
}

.scn-jaggers-dinner-invitation {
  background: linear-gradient(180deg, #e8dcc8 0%, #c8b098 100%), radial-gradient(circle at 50% 30%, #fff8e0 0%, transparent 70%);
}
.scn-jaggers-dinner-invitation .room-wall {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(180deg, #d4c4ae 0%, #b8a48c 100%);
}
.scn-jaggers-dinner-invitation .room-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(180deg, #7a6a5a 0%, #4a3a2a 100%);
  border-radius: 15% 15% 0 0;
}
.scn-jaggers-dinner-invitation .desk {
  position: absolute; bottom: 25%; left: 50%; transform: translateX(-50%);
  width: 120px; height: 50px;
  background: linear-gradient(180deg, #6a5a4a 0%, #3a2a1a 100%);
  border-radius: 4% 4% 0 0;
  box-shadow: 0 4px 8px rgba(0,0,0,.5);
  animation: jdi-desk 12s ease-in-out infinite;
}
.scn-jaggers-dinner-invitation .chair {
  position: absolute; bottom: 25%; left: 40%;
  width: 40px; height: 60px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 30% 30% 10% 10%;
  transform-origin: bottom center;
  animation: jdi-chair 8s ease-in-out infinite;
}
.scn-jaggers-dinner-invitation .jaggers-figure {
  position: absolute; bottom: 28%; left: 42%;
  width: 24px; height: 55px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a1a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: jdi-figure 6s ease-in-out infinite;
}
.scn-jaggers-dinner-invitation .window-light {
  position: absolute; top: 10%; right: 15%; width: 80px; height: 100px;
  background: linear-gradient(180deg, #f0e8d0 0%, #c8b898 100%);
  border-radius: 10%;
  box-shadow: inset 0 0 20px rgba(255,255,200,.5), 0 0 40px 20px rgba(255,255,200,.2);
  animation: jdi-window 20s ease-in-out infinite alternate;
}
.scn-jaggers-dinner-invitation .papers {
  position: absolute; bottom: 30%; left: 45%; width: 50px; height: 8px;
  background: #e8dcc8;
  border-radius: 10%;
  transform: rotate(5deg);
  box-shadow: 0 2px 4px rgba(0,0,0,.3);
  animation: jdi-papers 14s ease-in-out infinite;
}
@keyframes jdi-desk {
  0% { transform: translateX(-50%) translateY(0); }
  50% { transform: translateX(-50%) translateY(-1px); }
  100% { transform: translateX(-50%) translateY(0); }
}
@keyframes jdi-chair {
  0% { transform: rotate(0); }
  40% { transform: rotate(2deg); }
  80% { transform: rotate(-1deg); }
  100% { transform: rotate(0); }
}
@keyframes jdi-figure {
  0% { transform: translateY(0) rotate(-0.5deg); }
  30% { transform: translateY(-2px) rotate(0.5deg); }
  70% { transform: translateY(-1px) rotate(-0.3deg); }
  100% { transform: translateY(0) rotate(0.5deg); }
}
@keyframes jdi-window {
  0% { opacity: 0.8; box-shadow: inset 0 0 15px rgba(255,255,200,.4), 0 0 30px 15px rgba(255,255,200,.15); }
  50% { opacity: 1; box-shadow: inset 0 0 25px rgba(255,255,200,.6), 0 0 50px 25px rgba(255,255,200,.25); }
  100% { opacity: 0.7; box-shadow: inset 0 0 20px rgba(255,255,200,.5), 0 0 35px 18px rgba(255,255,200,.2); }
}
@keyframes jdi-papers {
  0% { transform: rotate(5deg) translateX(0); }
  50% { transform: rotate(8deg) translateX(2px); }
  100% { transform: rotate(5deg) translateX(0); }
}

.scn-jaggers-dinner {
  background: linear-gradient(180deg, #d8d0c8 0%, #a8a098 60%, #888080 100%), radial-gradient(circle at 30% 50%, #f0e8e0 0%, transparent 70%);
}
.scn-jaggers-dinner .tile-wall {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #e0d8d0 0%, #c0b8b0 100%);
  background-size: 40px 40px;
  background-position: 0 0;
  animation: jd-tile 30s linear infinite;
}
.scn-jaggers-dinner .washstand {
  position: absolute; bottom: 30%; left: 50%; transform: translateX(-50%);
  width: 100px; height: 80px;
  background: linear-gradient(180deg, #6a5a4a 0%, #3a2a1a 100%);
  border-radius: 8% 8% 4% 4%;
  box-shadow: 0 6px 12px rgba(0,0,0,.5);
}
.scn-jaggers-dinner .basin {
  position: absolute; bottom: 38%; left: 50%; transform: translateX(-50%);
  width: 60px; height: 30px;
  background: radial-gradient(circle at 50% 40%, #e8e0d8 0%, #b8a8a0 100%);
  border-radius: 50% 50% 40% 40%;
  box-shadow: inset 0 4px 8px rgba(0,0,0,.3), 0 2px 4px rgba(0,0,0,.2);
}
.scn-jaggers-dinner .water-drip {
  position: absolute; bottom: 42%; left: 48%; width: 6px; height: 10px;
  background: linear-gradient(180deg, rgba(200,220,255,.8) 0%, rgba(150,180,220,.4) 100%);
  border-radius: 50%;
  animation: jd-drip 2.5s ease-in infinite;
}
.scn-jaggers-dinner .hands-scrub {
  position: absolute; bottom: 35%; left: 48%; width: 30px; height: 20px;
  background: radial-gradient(circle, #c0b0a0 0%, #9a8a7a 100%);
  border-radius: 60% 60% 40% 40%;
  transform: rotate(10deg);
  animation: jd-hands 1.5s ease-in-out infinite alternate;
}
.scn-jaggers-dinner .shadow-twitch {
  position: absolute; bottom: 30%; left: 42%; width: 60px; height: 80px;
  background: linear-gradient(180deg, rgba(0,0,0,.4) 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(10px);
  animation: jd-shadow 3s ease-in-out infinite;
}
.scn-jaggers-dinner .lamp-glare {
  position: absolute; top: 10%; right: 20%; width: 40px; height: 40px;
  background: radial-gradient(circle, #fff8e0 0%, transparent 80%);
  border-radius: 50%;
  box-shadow: 0 0 60px 30px rgba(255,248,224,.3);
  animation: jd-glare 4s ease-in-out infinite alternate;
}
@keyframes jd-tile {
  0% { background-position: 0 0; }
  100% { background-position: 0 40px; }
}
@keyframes jd-drip {
  0% { transform: translateY(0) scaleY(0.8); opacity: 0.8; }
  50% { transform: translateY(20px) scaleY(1.2); opacity: 0.5; }
  100% { transform: translateY(40px) scaleY(0.6); opacity: 0; }
}
@keyframes jd-hands {
  0% { transform: rotate(10deg) translateX(0); }
  100% { transform: rotate(-10deg) translateX(5px); }
}
@keyframes jd-shadow {
  0% { transform: translateX(0) scaleY(1); opacity: 0.4; }
  50% { transform: translateX(-5px) scaleY(0.95); opacity: 0.6; }
  100% { transform: translateX(3px) scaleY(1.05); opacity: 0.3; }
}
@keyframes jd-glare {
  0% { opacity: 0.7; box-shadow: 0 0 40px 20px rgba(255,248,224,.2); }
  50% { opacity: 1; box-shadow: 0 0 80px 40px rgba(255,248,224,.5); }
  100% { opacity: 0.8; box-shadow: 0 0 50px 25px rgba(255,248,224,.3); }
}

/* Scene: stranger-at-three-jolly-bargemen (calm, bright interior) */
.scn-stranger-at-three-jolly-bargemen {
  background:
    linear-gradient(180deg, #c28b5e 0%, #8b5a2b 40%, #4a3018 100%),
    radial-gradient(circle at 50% 20%, #dbb08c 0%, transparent 60%);
}
.scn-stranger-at-three-jolly-bargemen .back-wall {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #d4a373 0%, #b5845a 100%);
  animation: stjb-wall 18s ease-in-out infinite alternate;
}
.scn-stranger-at-three-jolly-bargemen .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #6b4a2e 0%, #3d2817 100%);
  border-radius: 20% 20% 0 0 / 10% 10% 0 0;
}
.scn-stranger-at-three-jolly-bargemen .table {
  position: absolute; bottom: 18%; left: 50%; transform: translateX(-50%);
  width: 40%; height: 16%;
  background: linear-gradient(180deg, #7a4f2e 0%, #52331c 100%);
  border-radius: 4% 4% 0 0;
  box-shadow: 0 4px 12px rgba(0,0,0,0.4);
  animation: stjb-table 9s ease-in-out infinite;
}
.scn-stranger-at-three-jolly-bargemen .mug-a {
  position: absolute; bottom: 22%; left: 35%;
  width: 6%; height: 10%;
  background: linear-gradient(180deg, #c4a265 0%, #8c6a38 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 0 2px 6px rgba(0,0,0,0.3);
  animation: stjb-mug 5s ease-in-out infinite alternate;
}
.scn-stranger-at-three-jolly-bargemen .mug-b {
  position: absolute; bottom: 22%; right: 35%;
  width: 6%; height: 10%;
  background: linear-gradient(180deg, #c4a265 0%, #8c6a38 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 0 2px 6px rgba(0,0,0,0.3);
  animation: stjb-mug 5s ease-in-out infinite alternate-reverse;
}
.scn-stranger-at-three-jolly-bargemen .figure-stranger {
  position: absolute; bottom: 12%; left: 30%;
  width: 12%; height: 30%;
  background: linear-gradient(180deg, #2e1f14 0%, #1a100a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: stjb-figure-stranger 4s ease-in-out infinite;
}
.scn-stranger-at-three-jolly-bargemen .figure-joe {
  position: absolute; bottom: 12%; right: 30%;
  width: 14%; height: 32%;
  background: linear-gradient(180deg, #2e1f14 0%, #1a100a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: stjb-figure-joe 4s ease-in-out infinite;
}
.scn-stranger-at-three-jolly-bargemen .candle {
  position: absolute; bottom: 30%; left: 50%; transform: translateX(-50%);
  width: 2%; height: 8%;
  background: linear-gradient(180deg, #f0d0a0 0%, #b08050 100%);
  border-radius: 50% 50% 10% 10%;
  box-shadow: 0 0 8px 2px #ffaa40;
  animation: stjb-candle 2s ease-in-out infinite alternate;
}
.scn-stranger-at-three-jolly-bargemen .candle-glow {
  position: absolute; bottom: 30%; left: 50%; transform: translateX(-50%);
  width: 10%; height: 20%;
  background: radial-gradient(circle, rgba(255,180,80,0.6) 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(4px);
  animation: stjb-glow 3s ease-in-out infinite alternate;
}
@keyframes stjb-wall {
  0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.95; }
}
@keyframes stjb-table {
  0% { transform: translateX(-50%) translateY(0); } 50% { transform: translateX(-50%) translateY(-2px); } 100% { transform: translateX(-50%) translateY(0); }
}
@keyframes stjb-mug {
  0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-1px) rotate(2deg); } 100% { transform: translateY(0) rotate(0deg); }
}
@keyframes stjb-figure-stranger {
  0% { transform: translateX(0) translateY(0) rotate(-1deg); } 25% { transform: translateX(3px) translateY(-1px) rotate(1deg); } 50% { transform: translateX(6px) translateY(0) rotate(-1deg); } 75% { transform: translateX(3px) translateY(-1px) rotate(1deg); } 100% { transform: translateX(0) translateY(0) rotate(0deg); }
}
@keyframes stjb-figure-joe {
  0% { transform: translateX(0) translateY(0) rotate(1deg); } 25% { transform: translateX(-3px) translateY(-1px) rotate(-1deg); } 50% { transform: translateX(-6px) translateY(0) rotate(1deg); } 75% { transform: translateX(-3px) translateY(-1px) rotate(-1deg); } 100% { transform: translateX(0) translateY(0) rotate(0deg); }
}
@keyframes stjb-candle {
  0% { transform: translateX(-50%) scaleY(1); opacity: 0.9; } 50% { transform: translateX(-50%) scaleY(1.05); opacity: 1; } 100% { transform: translateX(-50%) scaleY(0.95); opacity: 0.85; }
}
@keyframes stjb-glow {
  0% { opacity: 0.6; transform: translateX(-50%) scale(1); } 50% { opacity: 0.8; transform: translateX(-50%) scale(1.2); } 100% { opacity: 0.5; transform: translateX(-50%) scale(0.9); }
}

/* Scene: haunted-by-file (dark, dim interior) */
.scn-haunted-by-file {
  background:
    linear-gradient(180deg, #0b0d1a 0%, #1a1b2e 50%, #2c2d40 100%),
    radial-gradient(ellipse at 50% 60%, #2a2b40 0%, transparent 70%);
}
.scn-haunted-by-file .bedroom-wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #1c1d30 0%, #0f1020 100%);
  animation: hbf-wall 12s ease-in-out infinite alternate;
}
.scn-haunted-by-file .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a15 100%);
  border-radius: 10% 10% 0 0 / 5% 5% 0 0;
}
.scn-haunted-by-file .bed {
  position: absolute; bottom: 18%; left: 50%; transform: translateX(-50%);
  width: 50%; height: 25%;
  background: linear-gradient(180deg, #2a2a3a 0%, #151525 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: inset 0 4px 8px rgba(0,0,0,0.6), 0 4px 12px rgba(0,0,0,0.5);
  animation: hbf-bed 8s ease-in-out infinite;
}
.scn-haunted-by-file .figure-pip {
  position: absolute; bottom: 28%; left: 50%; transform: translateX(-50%);
  width: 15%; height: 18%;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a15 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: hbf-pip 5s ease-in-out infinite;
}
.scn-haunted-by-file .shadow-man {
  position: absolute; bottom: 12%; left: 20%;
  width: 18%; height: 40%;
  background: linear-gradient(180deg, #0a0a14 0%, #030308 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  opacity: 0.7;
  animation: hbf-shadow 4s ease-in-out infinite alternate;
}
.scn-haunted-by-file .file {
  position: absolute; bottom: 45%; left: 30%;
  width: 3%; height: 20%;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 40% 40% 10% 10%;
  transform: rotate(-15deg);
  box-shadow: 0 2px 6px rgba(0,0,0,0.5);
  animation: hbf-file 6s ease-in-out infinite alternate;
}
.scn-haunted-by-file .window-moon {
  position: absolute; top: 10%; right: 15%;
  width: 25%; height: 35%;
  background: radial-gradient(circle at 50% 40%, #a0a8c0 0%, #2a3040 80%);
  border-radius: 10%;
  box-shadow: inset 0 0 20px 5px rgba(200,210,230,0.1);
  animation: hbf-moon 20s ease-in-out infinite alternate;
}
.scn-haunted-by-file .curtain {
  position: absolute; top: 10%; right: 12%;
  width: 8%; height: 50%;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a15 100%);
  border-radius: 20% 0 0 20%;
  box-shadow: 0 0 8px rgba(0,0,0,0.6);
  animation: hbf-curtain 14s ease-in-out infinite alternate;
}
@keyframes hbf-wall {
  0% { opacity: 0.85; } 50% { opacity: 1; } 100% { opacity: 0.9; }
}
@keyframes hbf-bed {
  0% { transform: translateX(-50%) translateY(0); } 50% { transform: translateX(-50%) translateY(2px); } 100% { transform: translateX(-50%) translateY(0); }
}
@keyframes hbf-pip {
  0% { transform: translateX(-50%) rotate(0deg); } 25% { transform: translateX(-50%) rotate(2deg) translateY(1px); } 50% { transform: translateX(-50%) rotate(-2deg); } 75% { transform: translateX(-50%) rotate(1deg) translateY(-1px); } 100% { transform: translateX(-50%) rotate(0deg); }
}
@keyframes hbf-shadow {
  0% { transform: translateX(0) scaleX(1); opacity: 0.6; } 50% { transform: translateX(10px) scaleX(1.05); opacity: 0.8; } 100% { transform: translateX(-5px) scaleX(0.95); opacity: 0.5; }
}
@keyframes hbf-file {
  0% { transform: rotate(-15deg) translateY(0); } 50% { transform: rotate(-18deg) translateY(-3px); } 100% { transform: rotate(-12deg) translateY(0); }
}
@keyframes hbf-moon {
  0% { opacity: 0.7; transform: scale(1); } 50% { opacity: 0.9; transform: scale(1.02); } 100% { opacity: 0.8; transform: scale(0.98); }
}
@keyframes hbf-curtain {
  0% { transform: translateX(0); } 50% { transform: translateX(4px); } 100% { transform: translateX(-2px); }
}

/* Scene: second-visit-to-miss-havisham (calm, dim interior) */
.scn-second-visit-to-miss-havisham {
  background:
    linear-gradient(180deg, #1a1423 0%, #2a1f30 40%, #3a2a45 100%),
    radial-gradient(circle at 50% 30%, #3a2a48 0%, transparent 60%);
}
.scn-second-visit-to-miss-havisham .hall-wall {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(180deg, #2a2035 0%, #1a1025 100%);
  animation: svmh-wall 15s ease-in-out infinite alternate;
}
.scn-second-visit-to-miss-havisham .hall-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #1a1425 0%, #0a0815 100%);
  border-radius: 15% 15% 0 0 / 8% 8% 0 0;
}
.scn-second-visit-to-miss-havisham .figure-estella {
  position: absolute; bottom: 15%; left: 25%;
  width: 10%; height: 35%;
  background: linear-gradient(180deg, #1a1625 0%, #0c0a15 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: svmh-estella 5s ease-in-out infinite alternate;
}
.scn-second-visit-to-miss-havisham .candle {
  position: absolute; bottom: 28%; left: 27%;
  width: 2%; height: 8%;
  background: linear-gradient(180deg, #e8c888 0%, #b08040 100%);
  border-radius: 50% 50% 10% 10%;
  box-shadow: 0 0 6px 2px #c09050;
  animation: svmh-candle 3s ease-in-out infinite alternate;
}
.scn-second-visit-to-miss-havisham .candle-glow {
  position: absolute; bottom: 28%; left: 27%;
  width: 8%; height: 20%;
  background: radial-gradient(circle, rgba(200,160,80,0.5) 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(4px);
  animation: svmh-candle-glow 3s ease-in-out infinite alternate;
}
.scn-second-visit-to-miss-havisham .figure-miss-havisham {
  position: absolute; bottom: 12%; right: 20%;
  width: 14%; height: 38%;
  background: linear-gradient(180deg, #120e1a 0%, #080612 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  opacity: 0.8;
  transform-origin: bottom center;
  animation: svmh-miss-h 6s ease-in-out infinite;
}
.scn-second-visit-to-miss-havisham .doorway {
  position: absolute; bottom: 0; right: 15%;
  width: 20%; height: 45%;
  background: linear-gradient(180deg, #0a0815 0%, #05030a 100%);
  border-radius: 10% 10% 0 0 / 20% 20% 0 0;
  box-shadow: inset 0 0 20px 5px rgba(0,0,0,0.8);
  animation: svmh-door 20s ease-in-out infinite;
}
@keyframes svmh-wall {
  0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.85; }
}
@keyframes svmh-estella {
  0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-2px) rotate(2deg); } 100% { transform: translateY(0) rotate(-1deg); }
}
@keyframes svmh-candle {
  0% { transform: scaleY(1); opacity: 0.85; } 50% { transform: scaleY(1.08); opacity: 1; } 100% { transform: scaleY(0.92); opacity: 0.8; }
}
@keyframes svmh-candle-glow {
  0% { opacity: 0.4; transform: scale(0.9); } 50% { opacity: 0.7; transform: scale(1.1); } 100% { opacity: 0.5; transform: scale(0.95); }
}
@keyframes svmh-miss-h {
  0% { transform: translateY(0) scaleX(1); } 25% { transform: translateY(-1px) scaleX(1.02); } 50% { transform: translateY(2px) scaleX(0.98); } 75% { transform: translateY(-1px) scaleX(1.01); } 100% { transform: translateY(0) scaleX(1); }
}
@keyframes svmh-door {
  0% { opacity: 0.6; transform: scaleY(1); } 50% { opacity: 0.8; transform: scaleY(1.03); } 100% { opacity: 0.7; transform: scaleY(0.97); }
}

/* Scene: meeting-relatives (calm, bright interior) */
.scn-meeting-relatives {
  background:
    linear-gradient(180deg, #dbb08c 0%, #b88a64 40%, #8a5e3c 100%),
    radial-gradient(circle at 50% 40%, #e8c8a8 0%, transparent 60%);
}
.scn-meeting-relatives .room-wall {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #d4a373 0%, #b5845a 100%);
  animation: mr-wall 20s ease-in-out infinite alternate;
}
.scn-meeting-relatives .room-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #7a5a3a 0%, #4a3020 100%);
  border-radius: 15% 15% 0 0 / 8% 8% 0 0;
}
.scn-meeting-relatives .table {
  position: absolute; bottom: 22%; left: 50%; transform: translateX(-50%);
  width: 55%; height: 14%;
  background: linear-gradient(180deg, #7a4f2e 0%, #52331c 100%);
  border-radius: 4% 4% 0 0;
  box-shadow: 0 4px 12px rgba(0,0,0,0.3);
  animation: mr-table 10s ease-in-out infinite;
}
.scn-meeting-relatives .teapot {
  position: absolute; bottom: 28%; left: 50%; transform: translateX(-50%);
  width: 5%; height: 7%;
  background: linear-gradient(180deg, #c4a265 0%, #8c6a38 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  box-shadow: 0 2px 8px rgba(0,0,0,0.3);
  animation: mr-teapot 6s ease-in-out infinite alternate;
}
.scn-meeting-relatives .figure-cousin {
  position: absolute; bottom: 12%; left: 20%;
  width: 12%; height: 32%;
  background: linear-gradient(180deg, #2e1f14 0%, #1a100a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: mr-figure-cousin 4s ease-in-out infinite;
}
.scn-meeting-relatives .figure-aunt {
  position: absolute; bottom: 12%; right: 20%;
  width: 13%; height: 34%;
  background: linear-gradient(180deg, #2e1f14 0%, #1a100a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: mr-figure-aunt 5s ease-in-out infinite;
}
.scn-meeting-relatives .figure-pumblechook {
  position: absolute; bottom: 12%; left: 50%; transform: translateX(-50%);
  width: 14%; height: 36%;
  background: linear-gradient(180deg, #2e1f14 0%, #1a100a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: mr-figure-pumble 4.5s ease-in-out infinite;
}
.scn-meeting-relatives .curtain {
  position: absolute; top: 0; right: 5%;
  width: 10%; height: 60%;
  background: linear-gradient(180deg, #6a4a3a 0%, #3a2a1a 100%);
  border-radius: 20% 0 0 20%;
  box-shadow: 0 0 10px rgba(0,0,0,0.3);
  animation: mr-curtain 25s ease-in-out infinite alternate;
}
@keyframes mr-wall {
  0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.95; }
}
@keyframes mr-table {
  0% { transform: translateX(-50%) translateY(0); } 50% { transform: translateX(-50%) translateY(-2px); } 100% { transform: translateX(-50%) translateY(0); }
}
@keyframes mr-teapot {
  0% { transform: translateX(-50%) rotate(0deg); } 50% { transform: translateX(-50%) rotate(3deg) translateY(-1px); } 100% { transform: translateX(-50%) rotate(-2deg); }
}
@keyframes mr-figure-cousin {
  0% { transform: translateX(0) translateY(0) rotate(0deg); } 25% { transform: translateX(4px) translateY(-1px) rotate(3deg); } 50% { transform: translateX(-2px) translateY(0) rotate(-2deg); } 75% { transform: translateX(3px) translateY(-1px) rotate(1deg); } 100% { transform: translateX(0) translateY(0) rotate(0deg); }
}
@keyframes mr-figure-aunt {
  0% { transform: translateX(0) translateY(0) rotate(0deg); } 25% { transform: translateX(-4px) translateY(-1px) rotate(-3deg); } 50% { transform: translateX(2px) translateY(0) rotate(2deg); } 75% { transform: translateX(-3px) translateY(-1px) rotate(-1deg); } 100% { transform: translateX(0) translateY(0) rotate(0deg); }
}
@keyframes mr-figure-pumble {
  0% { transform: translateX(-50%) translateY(0) rotate(0deg); } 25% { transform: translateX(-50%) translateY(-1px) rotate(2deg); } 50% { transform: translateX(-50%) translateY(0) rotate(-1deg); } 75% { transform: translateX(-50%) translateY(-1px) rotate(1deg); } 100% { transform: translateX(-50%) translateY(0) rotate(0deg); }
}
@keyframes mr-curtain {
  0% { transform: translateX(0); } 50% { transform: translateX(5px); } 100% { transform: translateX(-3px); }
}

/* Scene: uncle-pumblechook */
.scn-uncle-pumblechook {
  background: linear-gradient(180deg, #f9f3e0 0%, #d9c8a0 50%, #b89a6a 100%), radial-gradient(ellipse at 70% 30%, #fff7e0 0%, transparent 60%);
  position: relative; overflow: hidden;
}
.scn-uncle-pumblechook .room-bg {
  position: absolute; inset: 0; 
  background: linear-gradient(45deg, #e6d5b8 0%, #c4b08a 50%, #a68f6e 100%);
  border-radius: 0 0 20% 20% / 0 0 10% 10%;
  box-shadow: inset 0 20px 40px rgba(0,0,0,0.15);
  animation: unp-room 12s ease-in-out infinite alternate;
}
.scn-uncle-pumblechook .window-light {
  position: absolute; top: 8%; left: 15%; width: 30%; height: 45%;
  background: linear-gradient(135deg, rgba(255,255,240,0.9) 0%, rgba(200,180,140,0) 100%);
  border-radius: 30% 30% 10% 10% / 50% 50% 20% 20%;
  filter: blur(15px);
  animation: unp-window 8s ease-in-out infinite alternate;
}
.scn-uncle-pumblechook .table {
  position: absolute; bottom: 20%; left: 25%; right: 25%; height: 18%;
  background: linear-gradient(180deg, #b3906a 0%, #7a5e40 100%);
  border-radius: 8% 8% 4% 4%;
  box-shadow: 0 8px 20px rgba(0,0,0,0.3);
  animation: unp-table 6s ease-in-out infinite alternate;
}
.scn-uncle-pumblechook .figure-body {
  position: absolute; bottom: 30%; left: 42%; width: 12%; height: 30%;
  background: linear-gradient(180deg, #4a3e30 0%, #2b221a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: unp-figure 4s ease-in-out infinite;
}
.scn-uncle-pumblechook .bottle.left {
  position: absolute; bottom: 24%; left: 30%; width: 6%; height: 20%;
  background: linear-gradient(180deg, #a07a50 0%, #6b5030 100%);
  border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%;
  box-shadow: 0 4px 12px rgba(0,0,0,0.4);
  animation: unp-bottle 6s ease-in-out infinite alternate;
}
.scn-uncle-pumblechook .bottle.right {
  position: absolute; bottom: 24%; right: 30%; width: 6%; height: 20%;
  background: linear-gradient(180deg, #a07a50 0%, #6b5030 100%);
  border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%;
  box-shadow: 0 4px 12px rgba(0,0,0,0.4);
  animation: unp-bottle 6s ease-in-out infinite alternate-reverse;
}
@keyframes unp-room { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.95; } }
@keyframes unp-window { 0% { transform: scale(1) rotate(-2deg); opacity: 0.8; } 50% { transform: scale(1.05) rotate(1deg); opacity: 1; } 100% { transform: scale(0.98) rotate(0); opacity: 0.85; } }
@keyframes unp-table { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(1px); } }
@keyframes unp-figure { 0% { transform: translateX(0) rotate(-1deg); } 25% { transform: translateX(4px) rotate(1deg); } 50% { transform: translateX(-2px) rotate(0); } 75% { transform: translateX(3px) rotate(1deg); } 100% { transform: translateX(0) rotate(-1deg); } }
@keyframes unp-bottle { 0% { transform: translateX(0) rotate(-3deg); } 50% { transform: translateX(2px) rotate(2deg); } 100% { transform: translateX(-1px) rotate(-2deg); } }

/* Scene: christmas-dinner-grace */
.scn-christmas-dinner-grace {
  background: linear-gradient(180deg, #f7eacc 0%, #decba0 40%, #b89a6a 100%), radial-gradient(ellipse at 50% 20%, #fff5e0 0%, transparent 70%);
  position: relative; overflow: hidden;
}
.scn-christmas-dinner-grace .bg-wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(135deg, #c9b48a 0%, #a88f6a 50%, #8a7350 100%);
  border-radius: 0 0 40% 40% / 0 0 20% 20%;
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.2);
  animation: cdg-wall 15s ease-in-out infinite alternate;
}
.scn-christmas-dinner-grace .table {
  position: absolute; bottom: 15%; left: 20%; right: 20%; height: 22%;
  background: linear-gradient(180deg, #a08060 0%, #705540 100%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 0 10px 25px rgba(0,0,0,0.3);
  animation: cdg-table 8s ease-in-out infinite alternate;
}
.scn-christmas-dinner-grace .figure-body {
  position: absolute; bottom: 30%; left: 45%; width: 10%; height: 32%;
  background: linear-gradient(180deg, #3a3025 0%, #1e1812 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cdg-body 5s ease-in-out infinite;
}
.scn-christmas-dinner-grace .figure-arms {
  position: absolute; bottom: 48%; left: 38%; width: 24%; height: 8%;
  background: linear-gradient(90deg, #3a3025 0%, #1e1812 100%);
  border-radius: 40% 40% 20% 20%;
  transform-origin: 50% 100%;
  animation: cdg-arms 4s ease-in-out infinite alternate;
}
.scn-christmas-dinner-grace .candle.left {
  position: absolute; bottom: 28%; left: 25%; width: 4%; height: 18%;
  background: linear-gradient(180deg, #f0d090 0%, #e0b070 50%, #c09050 100%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 0 0 20px 6px rgba(240,208,144,0.6);
  animation: cdg-candle 3s ease-in-out infinite alternate;
}
.scn-christmas-dinner-grace .candle.right {
  position: absolute; bottom: 28%; right: 25%; width: 4%; height: 18%;
  background: linear-gradient(180deg, #f0d090 0%, #e0b070 50%, #c09050 100%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 0 0 20px 6px rgba(240,208,144,0.6);
  animation: cdg-candle 3s ease-in-out infinite alternate-reverse;
}
.scn-christmas-dinner-grace .light-rays {
  position: absolute; top: 10%; left: 30%; width: 40%; height: 50%;
  background: radial-gradient(ellipse at center, rgba(255,245,220,0.3) 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(20px);
  animation: cdg-rays 10s ease-in-out infinite alternate;
}
@keyframes cdg-wall { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.95; } }
@keyframes cdg-table { 0% { transform: translateY(0) scale(1); } 50% { transform: translateY(-1px) scale(1.01); } 100% { transform: translateY(1px) scale(0.99); } }
@keyframes cdg-body { 0% { transform: rotate(-2deg); } 25% { transform: rotate(0); } 50% { transform: rotate(2deg); } 75% { transform: rotate(-1deg); } 100% { transform: rotate(-2deg); } }
@keyframes cdg-arms { 0% { transform: rotate(-15deg) translateY(0); } 50% { transform: rotate(5deg) translateY(-2px); } 100% { transform: rotate(-10deg) translateY(1px); } }
@keyframes cdg-candle { 0% { transform: scaleY(1) rotate(-1deg); opacity: 0.9; } 50% { transform: scaleY(1.05) rotate(1deg); opacity: 1; } 100% { transform: scaleY(0.98) rotate(0); opacity: 0.85; } }
@keyframes cdg-rays { 0% { transform: scale(1) rotate(-3deg); opacity: 0.7; } 50% { transform: scale(1.1) rotate(2deg); opacity: 1; } 100% { transform: scale(0.95) rotate(0); opacity: 0.8; } }

/* Scene: christmas-dinner-pork */
.scn-christmas-dinner-pork {
  background: linear-gradient(180deg, #fcf4e0 0%, #ebd4a0 40%, #d4b87a 100%), radial-gradient(ellipse at 40% 60%, #ffeab0 0%, transparent 60%);
  position: relative; overflow: hidden;
}
.scn-christmas-dinner-pork .bg-festive {
  position: absolute; inset: 0;
  background: linear-gradient(135deg, #dccba8 0%, #b8a080 50%, #9a8460 100%);
  border-radius: 0 0 30% 30% / 0 0 15% 15%;
  box-shadow: inset 0 15px 40px rgba(0,0,0,0.15);
  animation: cdp-bg 12s ease-in-out infinite alternate;
}
.scn-christmas-dinner-pork .platter {
  position: absolute; bottom: 22%; left: 25%; right: 25%; height: 25%;
  background: linear-gradient(180deg, #e0d0b0 0%, #c0a880 100%);
  border-radius: 30% 30% 10% 10% / 50% 50% 20% 20%;
  box-shadow: 0 10px 25px rgba(0,0,0,0.25);
  animation: cdp-platter 7s ease-in-out infinite alternate;
}
.scn-christmas-dinner-pork .pork-roast {
  position: absolute; bottom: 32%; left: 35%; right: 35%; height: 20%;
  background: linear-gradient(180deg, #c8553d 0%, #8a3d2a 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 30% 30%;
  box-shadow: 0 6px 18px rgba(0,0,0,0.4);
  animation: cdp-pork 4s ease-in-out infinite;
}
.scn-christmas-dinner-pork .hand-pointing {
  position: absolute; bottom: 35%; left: 20%; width: 15%; height: 20%;
  background: linear-gradient(180deg, #d0b890 0%, #a08060 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 30% 30%;
  transform-origin: 40% 100%;
  animation: cdp-hand 3s ease-in-out infinite alternate;
}
.scn-christmas-dinner-pork .gravy-boat {
  position: absolute; bottom: 20%; right: 18%; width: 12%; height: 12%;
  background: linear-gradient(135deg, #b09070 0%, #806050 100%);
  border-radius: 30% 30% 20% 20% / 40% 40% 30% 30%;
  box-shadow: 0 4px 12px rgba(0,0,0,0.3);
  animation: cdp-gravy 8s ease-in-out infinite alternate;
}
.scn-christmas-dinner-pork .sparkle {
  position: absolute; top: 15%; left: 20%; width: 20%; height: 20%;
  background: radial-gradient(circle, rgba(255,215,0,0.4) 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(12px);
  animation: cdp-spark 5s ease-in-out infinite alternate;
}
@keyframes cdp-bg { 0% { opacity: 0.9; transform: scale(1); } 50% { opacity: 1; transform: scale(1.01); } 100% { opacity: 0.92; transform: scale(0.99); } }
@keyframes cdp-platter { 0% { transform: translateY(0) rotate(-1deg); } 50% { transform: translateY(-2px) rotate(1deg); } 100% { transform: translateY(1px) rotate(0); } }
@keyframes cdp-pork { 0% { transform: scale(1) rotate(-2deg); } 25% { transform: scale(1.03) rotate(0); } 50% { transform: scale(0.98) rotate(3deg); } 75% { transform: scale(1.02) rotate(-1deg); } 100% { transform: scale(1) rotate(-2deg); } }
@keyframes cdp-hand { 0% { transform: rotate(-20deg) translateX(0); } 50% { transform: rotate(-5deg) translateX(5px); } 100% { transform: rotate(-15deg) translateX(2px); } }
@keyframes cdp-gravy { 0% { transform: translateY(0) rotate(-3deg); } 50% { transform: translateY(-1px) rotate(2deg); } 100% { transform: translateY(1px) rotate(-1deg); } }
@keyframes cdp-spark { 0% { transform: scale(1) rotate(0); opacity: 0.6; } 50% { transform: scale(1.2) rotate(90deg); opacity: 1; } 100% { transform: scale(0.9) rotate(180deg); opacity: 0.7; } }

/* Scene: pie-discovered */
.scn-pie-discovered {
  background: linear-gradient(180deg, #f2e5c8 0%, #d4c09a 30%, #a88a6a 100%), radial-gradient(ellipse at 60% 40%, #fff5e0 0%, transparent 70%);
  position: relative; overflow: hidden;
}
.scn-pie-discovered .bg-darken {
  position: absolute; inset: 0;
  background: linear-gradient(135deg, #d4c09a 0%, #b09070 50%, #8a7350 100%);
  border-radius: 0 0 20% 20% / 0 0 10% 10%;
  box-shadow: inset 0 20px 50px rgba(0,0,0,0.3);
  animation: pid-bg 10s ease-in-out infinite alternate;
}
.scn-pie-discovered .table {
  position: absolute; bottom: 18%; left: 22%; right: 22%; height: 20%;
  background: linear-gradient(180deg, #a08060 0%, #705540 100%);
  border-radius: 8% 8% 4% 4%;
  box-shadow: 0 10px 30px rgba(0,0,0,0.4);
  animation: pid-table 6s ease-in-out infinite alternate;
}
.scn-pie-discovered .pie-dish {
  position: absolute; bottom: 30%; left: 35%; right: 35%; height: 20%;
  background: linear-gradient(180deg, #d0b090 0%, #a08060 100%);
  border-radius: 40% 40% 20% 20% / 50% 50% 30% 30%;
  box-shadow: 0 8px 20px rgba(0,0,0,0.3);
  animation: pid-pie 5s ease-in-out infinite;
}
.scn-pie-discovered .tar-mark {
  position: absolute; bottom: 32%; left: 40%; width: 8%; height: 8%;
  background: radial-gradient(circle, #2a1a10 0%, #1a0e08 100%);
  border-radius: 50%;
  box-shadow: 0 0 15px 5px rgba(0,0,0,0.5);
  animation: pid-tar 3s ease-in-out infinite alternate;
}
.scn-pie-discovered .hand-recoil {
  position: absolute; bottom: 30%; left: 25%; width: 14%; height: 18%;
  background: linear-gradient(180deg, #d0b890 0%, #a08060 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 30% 30%;
  transform-origin: 50% 100%;
  animation: pid-hand 2s ease-in-out infinite alternate;
}
.scn-pie-discovered .shadow-sharp {
  position: absolute; bottom: 10%; left: 15%; right: 15%; height: 12%;
  background: linear-gradient(180deg, rgba(0,0,0,0.3) 0%, transparent 100%);
  border-radius: 0 0 40% 40%;
  filter: blur(8px);
  animation: pid-shadow 4s ease-in-out infinite alternate;
}
@keyframes pid-bg { 0% { opacity: 0.85; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes pid-table { 0% { transform: translateY(0) scale(1); } 50% { transform: translateY(-3px) scale(1.02); } 100% { transform: translateY(1px) scale(0.98); } }
@keyframes pid-pie { 0% { transform: rotate(-1deg) scale(1); } 25% { transform: rotate(2deg) scale(1.02); } 50% { transform: rotate(-2deg) scale(0.97); } 75% { transform: rotate(1deg) scale(1.01); } 100% { transform: rotate(-1deg) scale(1); } }
@keyframes pid-tar { 0% { transform: scale(1) rotate(0); opacity: 0.7; } 50% { transform: scale(1.2) rotate(180deg); opacity: 1; } 100% { transform: scale(0.9) rotate(360deg); opacity: 0.8; } }
@keyframes pid-hand { 0% { transform: rotate(10deg) translateY(0); } 50% { transform: rotate(-15deg) translateY(-5px); } 100% { transform: rotate(5deg) translateY(2px); } }
@keyframes pid-shadow { 0% { transform: scaleX(1); opacity: 0.5; } 50% { transform: scaleX(1.1); opacity: 0.8; } 100% { transform: scaleX(0.9); opacity: 0.4; } }

/* Scene 1: prison-illness-magwitch */
.scn-prison-illness-magwitch {
  background:
    linear-gradient(180deg, #1a1a2e 0%, #2a1a1a 40%, #1a0a0a 100%),
    radial-gradient(ellipse at 50% 100%, #3a2a1a 0%, transparent 70%);
}
.scn-prison-illness-magwitch .wall {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(90deg, #2a1a1a 0%, #3a2a1a 50%, #2a1a1a 100%);
  box-shadow: inset 0 0 60px rgba(0,0,0,.6);
  animation: prIm-wall 12s ease-in-out infinite alternate;
}
.scn-prison-illness-magwitch .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #1a0a0a 0%, #0a0a0a 100%);
  box-shadow: inset 0 20px 30px rgba(0,0,0,.7);
}
.scn-prison-illness-magwitch .window {
  position: absolute; top: 15%; left: 30%; width: 50px; height: 30px;
  background: repeating-linear-gradient(90deg, #0a0a0a 0px, #0a0a0a 4px, transparent 4px, transparent 10px);
  border: 4px solid #1a1a1a;
  box-shadow: inset 0 0 20px rgba(150, 100, 50, .3);
  animation: prIm-window 8s ease-in-out infinite alternate;
}
.scn-prison-illness-magwitch .light-beam {
  position: absolute; top: 20%; left: 20%; width: 100px; height: 250px;
  background: linear-gradient(135deg, rgba(200, 150, 80, .15) 0%, transparent 100%);
  transform: skewX(-15deg);
  opacity: 0.6;
  animation: prIm-beam 5s ease-in-out infinite alternate;
}
.scn-prison-illness-magwitch .bed {
  position: absolute; bottom: 25%; left: 40%; width: 100px; height: 60px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 8px 8px 4px 4px;
  box-shadow: 0 4px 12px rgba(0,0,0,.8);
  animation: prIm-bed 3s ease-in-out infinite;
}
.scn-prison-illness-magwitch .prisoner {
  position: absolute; bottom: 27%; left: 44%; width: 60px; height: 45px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: prIm-prisoner 6s ease-in-out infinite;
}
.scn-prison-illness-magwitch .lantern {
  position: absolute; bottom: 35%; left: 20%; width: 8px; height: 8px;
  background: radial-gradient(circle, #ffd080 0%, #b08040 70%);
  border-radius: 50%;
  box-shadow: 0 0 24px 8px rgba(200, 150, 80, .6);
  animation: prIm-lantern 2s ease-in-out infinite alternate;
}
@keyframes prIm-wall { 0% { opacity: .9 } 50% { opacity: .7 } 100% { opacity: .85 } }
@keyframes prIm-window { 0% { box-shadow: inset 0 0 20px rgba(150,100,50,.3) } 50% { box-shadow: inset 0 0 40px rgba(150,100,50,.5) } 100% { box-shadow: inset 0 0 10px rgba(150,100,50,.2) } }
@keyframes prIm-beam { 0% { opacity: .4; transform: skewX(-15deg) translateX(0) } 50% { opacity: .7; transform: skewX(-12deg) translateX(5px) } 100% { opacity: .5; transform: skewX(-18deg) translateX(-3px) } }
@keyframes prIm-bed { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes prIm-prisoner { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.02) } 100% { transform: scaleY(1) } }
@keyframes prIm-lantern { 0% { transform: scale(1); opacity: .8 } 50% { transform: scale(1.2); opacity: 1 } 100% { transform: scale(.9); opacity: .7 } }

/* Scene 2: trial-short */
.scn-trial-short {
  background:
    linear-gradient(180deg, #c8b8a0 0%, #e8d8c0 30%, #f0e0c8 100%),
    radial-gradient(ellipse at 70% 0%, #fff5e0 0%, transparent 80%);
}
.scn-trial-short .courtroom-bg {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(90deg, #b8a898 0%, #d8c8b0 50%, #b8a898 100%);
  box-shadow: inset 0 -40px 60px rgba(0,0,0,.15);
  animation: trSh-bg 20s ease-in-out infinite alternate;
}
.scn-trial-short .judge-bench {
  position: absolute; top: 5%; left: 35%; width: 150px; height: 100px;
  background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%);
  border-radius: 4px 4px 0 0;
  box-shadow: 0 8px 20px rgba(0,0,0,.4);
}
.scn-trial-short .judge-figure {
  position: absolute; top: 8%; left: 40%; width: 40px; height: 70px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: trSh-judge 6s ease-in-out infinite;
}
.scn-trial-short .prisoner {
  position: absolute; bottom: 25%; left: 50%; width: 40px; height: 90px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 20% 20% 40% 40% / 20% 20% 40% 40%;
  transform-origin: bottom center;
  box-shadow: -5px 0 10px rgba(0,0,0,.3);
  animation: trSh-prisoner 4s ease-in-out infinite;
}
.scn-trial-short .sunbeam {
  position: absolute; top: 0; left: 20%; width: 120px; height: 100%;
  background: linear-gradient(180deg, rgba(255, 240, 200, .3) 0%, transparent 80%);
  transform: skewX(-10deg);
  animation: trSh-beam 7s ease-in-out infinite alternate;
}
.scn-trial-short .jury-group {
  position: absolute; top: 15%; right: 10%; width: 100px; height: 120px;
  background: linear-gradient(180deg, rgba(60, 50, 40, .6) 0%, transparent 100%);
  clip-path: polygon(0 100%, 50% 0, 100% 100%);
  animation: trSh-jury 15s ease-in-out infinite alternate;
}
.scn-trial-short .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #a89888 0%, #c8b8a0 100%);
  box-shadow: inset 0 20px 30px rgba(0,0,0,.1);
}
@keyframes trSh-bg { 0% { opacity: .9 } 50% { opacity: 1 } 100% { opacity: .85 } }
@keyframes trSh-judge { 0% { transform: rotate(0) translateY(0) } 50% { transform: rotate(1deg) translateY(-2px) } 100% { transform: rotate(-1deg) translateY(0) } }
@keyframes trSh-prisoner { 0% { transform: translateX(0) scaleY(1) } 50% { transform: translateX(-3px) scaleY(1.02) } 100% { transform: translateX(3px) scaleY(.98) } }
@keyframes trSh-beam { 0% { opacity: .5; transform: skewX(-10deg) } 50% { opacity: .8; transform: skewX(-8deg) } 100% { opacity: .3; transform: skewX(-12deg) } }
@keyframes trSh-jury { 0% { opacity: .6 } 50% { opacity: .8 } 100% { opacity: .5 } }

/* Scene 3: trial-prisoner-speech */
.scn-trial-prisoner-speech {
  background:
    linear-gradient(180deg, #2a2a3e 0%, #1a1a2e 40%, #0a0a1a 100%),
    radial-gradient(ellipse at 50% 60%, #4a3a2a 0%, transparent 70%);
}
.scn-trial-prisoner-speech .courtroom-bg {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(90deg, #1a1a2a 0%, #2a2a3a 50%, #1a1a2a 100%);
  box-shadow: inset 0 0 80px rgba(0,0,0,.8);
  animation: trPs-bg 10s ease-in-out infinite alternate;
}
.scn-trial-prisoner-speech .judge-bench {
  position: absolute; top: 5%; left: 30%; width: 160px; height: 80px;
  background: linear-gradient(180deg, #3a3a2a 0%, #2a1a1a 100%);
  border-radius: 4px 4px 0 0;
  box-shadow: 0 8px 20px rgba(0,0,0,.6);
}
.scn-trial-prisoner-speech .judge-silhouette {
  position: absolute; top: 8%; left: 38%; width: 45px; height: 65px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: trPs-judge 8s ease-in-out infinite;
}
.scn-trial-prisoner-speech .prisoner-rising {
  position: absolute; bottom: 25%; left: 50%; width: 35px; height: 80px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 20% 20% 40% 40% / 20% 20% 40% 40%;
  transform-origin: bottom center;
  animation: trPs-prisoner 6s ease-in-out infinite;
}
.scn-trial-prisoner-speech .light-spot {
  position: absolute; top: 30%; left: 45%; width: 100px; height: 150px;
  background: radial-gradient(ellipse, rgba(255, 220, 150, .4) 0%, transparent 100%);
  animation: trPs-spot 4s ease-in-out infinite alternate;
}
.scn-trial-prisoner-speech .shadow-shapes {
  position: absolute; top: 0; left: 0; right: 0; bottom: 0;
  background: radial-gradient(ellipse at 50% 60%, transparent 40%, rgba(0,0,0,.6) 100%);
  animation: trPs-shadows 12s ease-in-out infinite alternate;
}
.scn-trial-prisoner-speech .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  box-shadow: inset 0 20px 30px rgba(0,0,0,.5);
}
@keyframes trPs-bg { 0% { opacity: .8 } 50% { opacity: .6 } 100% { opacity: .9 } }
@keyframes trPs-judge { 0% { transform: rotate(0) } 50% { transform: rotate(2deg) } 100% { transform: rotate(-1deg) } }
@keyframes trPs-prisoner { 0% { transform: scaleY(1) translateY(0) } 50% { transform: scaleY(1.15) translateY(-10px) } 100% { transform: scaleY(1) translateY(0) } }
@keyframes trPs-spot { 0% { transform: scale(1); opacity: .5 } 50% { transform: scale(1.05); opacity: .8 } 100% { transform: scale(.95); opacity: .4 } }
@keyframes trPs-shadows { 0% { opacity: .7 } 50% { opacity: .9 } 100% { opacity: .6 } }

/* Scene 4: prison-bedside-visit */
.scn-prison-bedside-visit {
  background:
    linear-gradient(180deg, #1a1a1a 0%, #2a1a1a 40%, #1a0a0a 100%),
    radial-gradient(ellipse at 50% 100%, #3a2a1a 0%, transparent 80%);
}
.scn-prison-bedside-visit .room-wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(90deg, #2a1a1a 0%, #3a2a1a 50%, #2a1a1a 100%);
  box-shadow: inset 0 0 40px rgba(0,0,0,.7);
  animation: prBv-wall 15s ease-in-out infinite alternate;
}
.scn-prison-bedside-visit .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #1a0a0a 0%, #0a0a0a 100%);
  box-shadow: inset 0 20px 30px rgba(0,0,0,.6);
}
.scn-prison-bedside-visit .bed {
  position: absolute; bottom: 25%; left: 30%; width: 120px; height: 70px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 10px 10px 4px 4px;
  box-shadow: 0 4px 15px rgba(0,0,0,.8);
  animation: prBv-bed 5s ease-in-out infinite;
}
.scn-prison-bedside-visit .magwitch {
  position: absolute; bottom: 28%; left: 34%; width: 70px; height: 50px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: prBv-magwitch 4s ease-in-out infinite;
}
.scn-prison-bedside-visit .pip {
  position: absolute; bottom: 25%; left: 55%; width: 30px; height: 80px;
  background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%);
  border-radius: 30% 30% 40% 40% / 20% 20% 40% 40%;
  transform-origin: bottom center;
  animation: prBv-pip 6s ease-in-out infinite;
}
.scn-prison-bedside-visit .lamp {
  position: absolute; bottom: 35%; left: 48%; width: 10px; height: 14px;
  background: radial-gradient(circle, #ffd080 0%, #b08040 70%);
  border-radius: 50%;
  box-shadow: 0 0 30px 10px rgba(200, 150, 80, .6);
  animation: prBv-lamp 3s ease-in-out infinite alternate;
}
.scn-prison-bedside-visit .lamp-glow {
  position: absolute; bottom: 30%; left: 42%; width: 80px; height: 80px;
  background: radial-gradient(circle, rgba(200, 150, 80, .15) 0%, transparent 100%);
  animation: prBv-glow 4s ease-in-out infinite alternate;
}
@keyframes prBv-wall { 0% { opacity: .8 } 50% { opacity: .65 } 100% { opacity: .75 } }
@keyframes prBv-bed { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes prBv-magwitch { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.03) } 100% { transform: scaleY(1) } }
@keyframes prBv-pip { 0% { transform: translateY(0) rotate(0) } 50% { transform: translateY(-4px) rotate(3deg) } 100% { transform: translateY(0) rotate(0) } }
@keyframes prBv-lamp { 0% { transform: scale(1); opacity: .8 } 50% { transform: scale(1.15); opacity: 1 } 100% { transform: scale(.9); opacity: .7 } }
@keyframes prBv-glow { 0% { transform: scale(1); opacity: .3 } 50% { transform: scale(1.2); opacity: .5 } 100% { transform: scale(.8); opacity: .2 } }

/* Scene 1: Letter from Marshes */
.scn-letter-from-marshes {
  background: 
    linear-gradient(180deg, #2a1e12 0%, #0d0a05 100%),
    radial-gradient(ellipse at 70% 60%, #3a2a1a 0%, transparent 70%);
}
.scn-letter-from-marshes .walls {
  position: absolute; inset: 0; 
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%); 
  opacity: 0.6; 
  animation: lm-walls 20s ease-in-out infinite alternate;
}
.scn-letter-from-marshes .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%; 
  background: linear-gradient(0deg, #5a3a20 0%, #3a2210 100%); 
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.6);
  border-radius: 10% 10% 0 0;
}
.scn-letter-from-marshes .door {
  position: absolute; bottom: 35%; left: 12%; width: 70px; height: 110px; 
  background: linear-gradient(135deg, #4a2a12 0%, #2a1808 100%); 
  border-radius: 6% 6% 0 0; 
  box-shadow: -4px 0 8px rgba(0,0,0,0.5); 
  animation: lm-door 8s ease-in-out infinite;
  transform-origin: left center;
}
.scn-letter-from-marshes .letter {
  position: absolute; bottom: 20%; left: 45%; width: 30px; height: 20px; 
  background: #d4b888; 
  transform: rotate(-12deg); 
  box-shadow: 1px 1px 4px rgba(0,0,0,0.4); 
  border-radius: 2px; 
  animation: lm-letter 3s ease-in-out infinite alternate;
}
.scn-letter-from-marshes .glow {
  position: absolute; bottom: 18%; left: 44%; width: 60px; height: 60px; 
  background: radial-gradient(circle, rgba(255,220,150,0.3) 0%, transparent 70%); 
  border-radius: 50%; 
  animation: lm-glow 4s ease-in-out infinite alternate;
}
.scn-letter-from-marshes .hand-shadow {
  position: absolute; bottom: 15%; right: 10%; width: 50px; height: 70px; 
  background: radial-gradient(ellipse at 60% 20%, #0a0a05 0%, transparent 60%); 
  border-radius: 50% 50% 20% 20% / 70% 70% 30% 30%; 
  animation: lm-hand 5s ease-in-out infinite;
  opacity: 0.8;
}
@keyframes lm-walls {
  0% { opacity: 0.6; }
  50% { opacity: 0.5; }
  100% { opacity: 0.7; }
}
@keyframes lm-door {
  0%,100% { transform: rotate(0deg) translateX(0); }
  25% { transform: rotate(-2deg) translateX(-2px); }
  50% { transform: rotate(1deg) translateX(1px); }
  75% { transform: rotate(-1deg) translateX(-1px); }
}
@keyframes lm-letter {
  0% { transform: rotate(-12deg) scale(1); opacity: 1; }
  50% { transform: rotate(-8deg) scale(1.05); opacity: 0.9; }
  100% { transform: rotate(-15deg) scale(0.98); opacity: 1; }
}
@keyframes lm-glow {
  0% { transform: scale(1); opacity: 0.3; }
  50% { transform: scale(1.2); opacity: 0.6; }
  100% { transform: scale(0.9); opacity: 0.2; }
}
@keyframes lm-hand {
  0% { transform: translateX(0) translateY(0) rotate(0deg); }
  25% { transform: translateX(-8px) translateY(-10px) rotate(5deg); }
  50% { transform: translateX(-12px) translateY(-20px) rotate(8deg); }
  75% { transform: translateX(-6px) translateY(-10px) rotate(3deg); }
  100% { transform: translateX(0) translateY(0) rotate(0deg); }
}

/* Scene 2: Blue Boar Landlord */
.scn-blue-boar-landlord {
  background: 
    linear-gradient(180deg, #f5e6c8 0%, #d4b888 40%, #b89870 100%),
    radial-gradient(ellipse at 60% 40%, #fff4e0 0%, transparent 70%);
}
.scn-blue-boar-landlord .bar {
  position: absolute; bottom: 20%; left: 0; right: 0; height: 30%; 
  background: linear-gradient(180deg, #6a4420 0%, #4a2a10 100%); 
  border-radius: 10% 10% 0 0; 
  box-shadow: 0 -6px 12px rgba(0,0,0,0.3);
}
.scn-blue-boar-landlord .floor-plan {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%; 
  background: linear-gradient(0deg, #8a6a40 0%, #6a4a28 100%); 
  box-shadow: inset 0 4px 8px rgba(0,0,0,0.2);
}
.scn-blue-boar-landlord .landlord {
  position: absolute; bottom: 22%; left: 35%; width: 50px; height: 100px; 
  background: linear-gradient(180deg, #2a1a0a 0%, #0d0a05 100%); 
  border-radius: 50% 50% 30% 30% / 70% 70% 40% 40%; 
  transform-origin: bottom center; 
  animation: bb-landlord 6s ease-in-out infinite;
}
.scn-blue-boar-landlord .young-man {
  position: absolute; bottom: 20%; right: 30%; width: 45px; height: 90px; 
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%); 
  border-radius: 40% 50% 35% 30% / 60% 70% 40% 40%; 
  transform-origin: bottom center; 
  animation: bb-young 7s ease-in-out infinite;
}
.scn-blue-boar-landlord .mug {
  position: absolute; bottom: 28%; left: 50%; width: 20px; height: 25px; 
  background: linear-gradient(180deg, #d4b888 0%, #a08060 100%); 
  border-radius: 10% 10% 5% 5%; 
  box-shadow: 2px 2px 6px rgba(0,0,0,0.3); 
  animation: bb-mug 4s ease-in-out infinite;
}
.scn-blue-boar-landlord .window-light {
  position: absolute; top: 10%; right: 20%; width: 60px; height: 80px; 
  background: linear-gradient(180deg, #fff8e0 0%, #ffd080 100%); 
  border-radius: 10%; 
  box-shadow: 0 0 30px 10px rgba(255,200,100,0.5); 
  animation: bb-window 3s ease-in-out infinite alternate;
}
@keyframes bb-landlord {
  0% { transform: translateX(0) rotate(0deg); }
  20% { transform: translateX(-4px) rotate(-2deg) scaleY(1.02); }
  40% { transform: translateX(2px) rotate(1deg) scaleY(0.98); }
  60% { transform: translateX(-2px) rotate(-1deg); }
  80% { transform: translateX(3px) rotate(2deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes bb-young {
  0% { transform: translateY(0) rotate(0deg); }
  30% { transform: translateY(-4px) rotate(2deg); }
  60% { transform: translateY(2px) rotate(-1deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes bb-mug {
  0%,100% { transform: translateX(0) rotate(0deg); }
  50% { transform: translateX(8px) rotate(5deg); }
}
@keyframes bb-window {
  0% { opacity: 0.8; box-shadow: 0 0 20px 8px rgba(255,200,100,0.4); }
  50% { opacity: 1; box-shadow: 0 0 40px 15px rgba(255,200,100,0.7); }
  100% { opacity: 0.7; box-shadow: 0 0 30px 10px rgba(255,200,100,0.3); }
}

/* Scene 3: Marshes Moonlit Trap */
.scn-marshes-moonlit-trap {
  background: 
    linear-gradient(180deg, #0a0a1a 0%, #1a1a3a 60%, #2a1a2a 100%),
    radial-gradient(ellipse at 50% 20%, #8b3a1a 0%, transparent 60%);
}
.scn-marshes-moonlit-trap .sky {
  position: absolute; inset: 0 0 40% 0; 
  background: linear-gradient(180deg, #12122e 0%, #1a1a3a 50%, #2a1a2a 100%); 
  animation: mt-sky 15s ease-in-out infinite alternate;
}
.scn-marshes-moonlit-trap .moon-glow {
  position: absolute; top: 8%; left: 50%; transform: translateX(-50%); width: 120px; height: 120px; 
  background: radial-gradient(circle, rgba(180,80,30,0.25) 0%, transparent 70%); 
  border-radius: 50%; 
  animation: mt-moonglow 10s ease-in-out infinite alternate;
}
.scn-marshes-moonlit-trap .moon {
  position: absolute; top: 10%; left: 50%; transform: translateX(-50%); width: 60px; height: 60px; 
  background: radial-gradient(circle, #a84c2e 0%, #8b3a1a 60%, #5a2010 100%); 
  border-radius: 50%; 
  box-shadow: 0 0 50px 15px #8b3a1a; 
  animation: mt-moon 12s ease-in-out infinite;
}
.scn-marshes-moonlit-trap .marshes {
  position: absolute; bottom: 35%; left: 0; right: 0; height: 30%; 
  background: linear-gradient(180deg, #1a2a1a 0%, #0a1a0a 100%); 
  border-radius: 60% 40% 0 0 / 80% 50% 0 0; 
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.6); 
  animation: mt-marshes 20s ease-in-out infinite alternate;
}
.scn-marshes-moonlit-trap .figure {
  position: absolute; bottom: 36%; left: 30%; width: 20px; height: 50px; 
  background: linear-gradient(180deg, #0a0a1a 0%, #000 100%); 
  border-radius: 50% 50% 30% 30% / 70% 70% 40% 40%; 
  transform-origin: bottom center; 
  animation: mt-figure 8s ease-in-out infinite;
}
.scn-marshes-moonlit-trap .trap {
  position: absolute; bottom: 34%; left: 60%; width: 40px; height: 30px; 
  background: #1a1a0a; 
  border-radius: 30% 30% 10% 10% / 50% 50% 20% 20%; 
  border: 3px solid #2a2a0a; 
  box-shadow: inset 0 -4px 6px rgba(0,0,0,0.5); 
  animation: mt-trap 4s ease-in-out infinite;
}
.scn-marshes-moonlit-trap .cloud-a {
  position: absolute; top: 18%; left: 5%; width: 80px; height: 16px; 
  background: linear-gradient(180deg, rgba(255,255,255,0.2) 0%, transparent 100%); 
  border-radius: 50%; filter: blur(4px); 
  animation: mt-cloud-a 40s linear infinite;
}
.scn-marshes-moonlit-trap .cloud-b {
  position: absolute; top: 25%; right: 10%; width: 60px; height: 12px; 
  background: linear-gradient(180deg, rgba(255,255,255,0.15) 0%, transparent 100%); 
  border-radius: 50%; filter: blur(3px); 
  animation: mt-cloud-b 50s linear infinite reverse;
}
@keyframes mt-sky {
  0% { opacity: 0.7; }
  50% { opacity: 1; }
  100% { opacity: 0.6; }
}
@keyframes mt-moonglow {
  0% { transform: translateX(-50%) scale(1); opacity: 0.4; }
  50% { transform: translateX(-50%) scale(1.3); opacity: 0.7; }
  100% { transform: translateX(-50%) scale(0.9); opacity: 0.3; }
}
@keyframes mt-moon {
  0% { transform: translateX(-50%) translateY(0) scale(1); }
  25% { transform: translateX(-50%) translateY(5px) scale(1.02); }
  50% { transform: translateX(-50%) translateY(0) scale(0.98); }
  75% { transform: translateX(-50%) translateY(-5px) scale(1.01); }
  100% { transform: translateX(-50%) translateY(0) scale(1); }
}
@keyframes mt-marshes {
  0% { transform: translateY(0); }
  50% { transform: translateY(-5px); }
  100% { transform: translateY(0); }
}
@keyframes mt-figure {
  0% { transform: translateX(0) translateY(0) rotate(0deg); }
  20% { transform: translateX(10px) translateY(-2px) rotate(2deg); }
  40% { transform: translateX(20px) translateY(0) rotate(-1deg); }
  60% { transform: translateX(30px) translateY(-3px) rotate(1deg); }
  80% { transform: translateX(40px) translateY(0) rotate(-2deg); }
  100% { transform: translateX(50px) translateY(0) rotate(0deg); }
}
@keyframes mt-trap {
  0%,100% { transform: scale(1); }
  50% { transform: scale(1.05); }
}
@keyframes mt-cloud-a {
  0% { transform: translateX(-30px); }
  100% { transform: translateX(120vw); }
}
@keyframes mt-cloud-b {
  0% { transform: translateX(0); }
  100% { transform: translateX(-110vw); }
}

/* Scene 4: Sluice House Capture */
.scn-sluice-house-capture {
  background: 
    linear-gradient(180deg, #0a0a0f 0%, #0d0d14 60%, #14141e 100%),
    radial-gradient(ellipse at 30% 50%, #1a1a2a 0%, transparent 70%);
}
.scn-sluice-house-capture .bg {
  position: absolute; inset: 0; 
  background: linear-gradient(135deg, #0a0a12 0%, #14141e 100%); 
  animation: sh-bg 12s ease-in-out infinite alternate;
}
.scn-sluice-house-capture .water {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%; 
  background: linear-gradient(0deg, #0a1a2a 0%, #141e2e 100%); 
  border-radius: 40% 60% 0 0 / 30% 40% 0 0; 
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.5); 
  animation: sh-water 6s ease-in-out infinite;
}
.scn-sluice-house-capture .attacker-hand {
  position: absolute; bottom: 30%; left: 5%; width: 80px; height: 90px; 
  background: radial-gradient(ellipse at 40% 30%, #1a1a2a 0%, #0a0a1a 60%, transparent 80%); 
  border-radius: 50% 50% 40% 40% / 60% 60% 50% 50%; 
  transform-origin: left center; 
  animation: sh-hand 2s ease-in-out infinite;
}
.scn-sluice-house-capture .victim-arm {
  position: absolute; bottom: 35%; right: 20%; width: 30px; height: 80px; 
  background: linear-gradient(180deg, #2a2a3a 0%, #0a0a1a 100%); 
  border-radius: 30% 30% 50% 50% / 40% 40% 60% 60%; 
  transform-origin: top right; 
  animation: sh-arm 1.5s ease-in-out infinite;
}
.scn-sluice-house-capture .chain {
  position: absolute; bottom: 40%; left: 30%; width: 4px; height: 60px; 
  background: #2a2a3a; 
  border-radius: 2px; 
  box-shadow: 0 4px 6px rgba(0,0,0,0.4); 
  animation: sh-chain 3s ease-in-out infinite;
  transform-origin: top center;
}
.scn-sluice-house-capture .splash {
  position: absolute; bottom: 10%; left: 20%; width: 30px; height: 30px; 
  background: radial-gradient(circle, rgba(100,150,200,0.2) 0%, transparent 70%); 
  border-radius: 50%; 
  animation: sh-splash 1s ease-out infinite;
}
.scn-sluice-house-capture .splash-2 {
  left: 60%; bottom: 5%; 
  animation-delay: 0.5s; 
  width: 20px; height: 20px;
}
@keyframes sh-bg {
  0% { opacity: 0.8; }
  50% { opacity: 1; }
  100% { opacity: 0.7; }
}
@keyframes sh-water {
  0% { transform: translateY(0) scaleX(1); }
  30% { transform: translateY(3px) scaleX(1.02); }
  60% { transform: translateY(-2px) scaleX(0.98); }
  100% { transform: translateY(0) scaleX(1); }
}
@keyframes sh-hand {
  0% { transform: translateX(0) rotate(0deg) scale(1); }
  25% { transform: translateX(30px) rotate(10deg) scale(1.1); }
  50% { transform: translateX(10px) rotate(-5deg) scale(0.95); }
  75% { transform: translateX(40px) rotate(5deg) scale(1.05); }
  100% { transform: translateX(0) rotate(0deg) scale(1); }
}
@keyframes sh-arm {
  0% { transform: translateY(0) rotate(0deg); }
  20% { transform: translateY(-10px) rotate(-10deg); }
  40% { transform: translateY(-5px) rotate(5deg); }
  60% { transform: translateY(10px) rotate(-15deg); }
  80% { transform: translateY(-20px) rotate(0deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes sh-chain {
  0%,100% { transform: rotate(0deg); }
  25% { transform: rotate(5deg); }
  50% { transform: rotate(-5deg); }
  75% { transform: rotate(3deg); }
}
@keyframes sh-splash {
  0% { transform: scale(0.5); opacity: 0.6; }
  50% { transform: scale(1.5); opacity: 1; }
  100% { transform: scale(2); opacity: 0; }
}

.scn-herbert-pocket-handel { background: linear-gradient(180deg, #2a1e1a 0%, #3a2a1a 50%, #4a382a 100%), radial-gradient(ellipse at 50% 100%, #4a382a 0%, transparent 70%); }
.scn-herbert-pocket-handel .bg { position:absolute; inset:0; background: linear-gradient(135deg, #2a1e1a 0%, #1a120e 100%); }
.scn-herbert-pocket-handel .wall { position:absolute; left:0; top:0; width:22%; height:100%; background: linear-gradient(180deg, #3a2a1a 0%, #2a1e1a 100%); border-right:2px solid #4a382a; box-shadow: inset -8px 0 12px rgba(0,0,0,0.4); }
.scn-herbert-pocket-handel .window { position:absolute; left:8%; top:18%; width:70px; height:90px; background: radial-gradient(circle, #ffd080 0%, #c09850 70%); border-radius: 12px; box-shadow: 0 0 50px 12px rgba(255,208,128,0.4); animation: wh-glow 4s ease-in-out infinite; }
.scn-herbert-pocket-handel .candle { position:absolute; right:22%; bottom:38%; width:7px; height:45px; background: linear-gradient(180deg, #ffe0b0 0%, #d0a060 40%, #8a6030 100%); border-radius: 2px; box-shadow: 0 0 25px 8px #ffd080; animation: wh-candle 2.5s ease-in-out infinite; }
.scn-herbert-pocket-handel .table { position:absolute; right:15%; bottom:12%; width:140px; height:10px; background: linear-gradient(180deg, #6a4a2a 0%, #4a3020 100%); border-radius: 4px; box-shadow: 0 3px 8px rgba(0,0,0,0.5); }
.scn-herbert-pocket-handel .figure { position:absolute; left:18%; bottom:12%; width:32px; height:65px; background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: wh-figure 5s ease-in-out infinite; }
.scn-herbert-pocket-handel .shadow { position:absolute; left:18%; bottom:9%; width:55px; height:8px; background: radial-gradient(ellipse, rgba(0,0,0,0.5) 0%, transparent 100%); border-radius: 50%; animation: wh-shadow 5s ease-in-out infinite; }
@keyframes wh-glow { 0% { box-shadow:0 0 20px 5px rgba(255,208,128,0.3); opacity:0.8; } 50% { box-shadow:0 0 60px 15px rgba(255,208,128,0.6); opacity:1; } 100% { box-shadow:0 0 30px 8px rgba(255,208,128,0.35); opacity:0.85; } }
@keyframes wh-candle { 0% { height:42px; opacity:0.9; transform: translateY(0); } 50% { height:48px; opacity:1; transform: translateY(-1px); } 100% { height:42px; opacity:0.9; transform: translateY(0); } }
@keyframes wh-figure { 0% { transform: rotate(0deg) translateX(0); } 25% { transform: rotate(1deg) translateX(2px); } 50% { transform: rotate(-1deg) translateX(0); } 75% { transform: rotate(1deg) translateX(-2px); } 100% { transform: rotate(0deg) translateX(0); } }
@keyframes wh-shadow { 0% { transform: scaleX(1); opacity:0.6; } 50% { transform: scaleX(1.2); opacity:0.8; } 100% { transform: scaleX(1); opacity:0.6; } }

.scn-herbert-pocket-story { background: linear-gradient(180deg, #0f0f1a 0%, #1a141a 50%, #2a1e1a 100%), radial-gradient(ellipse at 50% 80%, #1a141a 0%, transparent 70%); }
.scn-herbert-pocket-story .bg { position:absolute; inset:0; background: linear-gradient(180deg, #0a0a14 0%, #14101a 100%); }
.scn-herbert-pocket-story .table { position:absolute; left:50%; bottom:10%; width:130px; height:14px; transform: translateX(-50%); background: linear-gradient(180deg, #3a2a1a 0%, #1f1410 100%); border-radius: 6px; box-shadow: 0 3px 8px rgba(0,0,0,0.7); }
.scn-herbert-pocket-story .book { position:absolute; left:50%; bottom:18%; width:100px; height:12px; transform: translateX(-50%); background: linear-gradient(180deg, #6a4a2a 0%, #4a3020 100%); border-radius: 0 0 30% 30%; box-shadow: inset 0 3px 6px rgba(0,0,0,0.5); animation: ws-book 8s ease-in-out infinite; }
.scn-herbert-pocket-story .candle { position:absolute; left:60%; bottom:35%; width:6px; height:35px; background: linear-gradient(180deg, #ffe0b0 0%, #c09850 40%, #705030 100%); border-radius: 2px; box-shadow: 0 0 18px 4px #c09850; animation: ws-candle 3s ease-in-out infinite; }
.scn-herbert-pocket-story .figure { position:absolute; left:25%; bottom:10%; width:35px; height:70px; background: linear-gradient(180deg, #0a0a0a 0%, #050505 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ws-figure 6s ease-in-out infinite; }
.scn-herbert-pocket-story .hand { position:absolute; left:42%; bottom:20%; width:20px; height:15px; background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%); border-radius: 20% 80% 40% 40%; transform-origin: right center; animation: ws-hand 4s ease-in-out infinite; }
@keyframes ws-book { 0% { transform: translateX(-50%) scaleY(1); } 50% { transform: translateX(-50%) scaleY(1.1); opacity:0.9; } 100% { transform: translateX(-50%) scaleY(1); } }
@keyframes ws-candle { 0% { height:32px; opacity:0.7; } 50% { height:38px; opacity:1; } 100% { height:32px; opacity:0.7; } }
@keyframes ws-figure { 0% { transform: translateY(0) rotate(0); } 33% { transform: translateY(-2px) rotate(1deg); } 66% { transform: translateY(0) rotate(-1deg); } 100% { transform: translateY(0) rotate(0); } }
@keyframes ws-hand { 0% { transform: translateX(0) rotate(0); } 50% { transform: translateX(-10px) rotate(-10deg); } 100% { transform: translateX(0) rotate(0); } }

.scn-herbert-pocket-trade { background: linear-gradient(180deg, #2a1e14 0%, #3a2a1a 50%, #4a382a 100%), radial-gradient(ellipse at 50% 100%, #4a382a 0%, transparent 70%); }
.scn-herbert-pocket-trade .bg { position:absolute; inset:0; background: linear-gradient(135deg, #1f1410 0%, #2a1e14 100%); }
.scn-herbert-pocket-trade .desk { position:absolute; left:20%; bottom:10%; width:70%; height:12px; background: linear-gradient(180deg, #5a3a20 0%, #3a2210 100%); border-radius: 4px; box-shadow: 0 4px 10px rgba(0,0,0,0.6); }
.scn-herbert-pocket-trade .paper { position:absolute; left:50%; bottom:22%; width:50px; height:40px; transform: translateX(-50%); background: linear-gradient(180deg, #e8dcc8 0%, #c8b898 100%); border-radius: 2px; box-shadow: 0 2px 6px rgba(0,0,0,0.3); animation: wt-paper 5s ease-in-out infinite; }
.scn-herbert-pocket-trade .ink { position:absolute; left:30%; bottom:25%; width:12px; height:16px; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 50% 50% 40% 40%; box-shadow: 0 0 8px 2px rgba(0,0,0,0.4); animation: wt-ink 3s ease-in-out infinite; }
.scn-herbert-pocket-trade .ship { position:absolute; right:15%; bottom:35%; width:50px; height:30px; background: linear-gradient(180deg, #6a4a2a 0%, #4a3020 100%); clip-path: polygon(0% 100%, 100% 100%, 80% 40%, 20% 40%); transform-origin: bottom center; animation: wt-ship 4s ease-in-out infinite; }
.scn-herbert-pocket-trade .figure { position:absolute; left:10%; bottom:10%; width:30px; height:60px; background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: wt-figure 6s ease-in-out infinite; }
@keyframes wt-paper { 0% { transform: translateX(-50%) rotate(0deg); } 50% { transform: translateX(-50%) rotate(3deg) translateY(-2px); } 100% { transform: translateX(-50%) rotate(0deg); } }
@keyframes wt-ink { 0% { transform: translateY(0); } 50% { transform: translateY(-3px); } 100% { transform: translateY(0); } }
@keyframes wt-ship { 0% { transform: rotate(0deg); } 25% { transform: rotate(5deg); } 75% { transform: rotate(-5deg); } 100% { transform: rotate(0deg); } }
@keyframes wt-figure { 0% { transform: translateY(0) rotate(0); } 33% { transform: translateY(-3px) rotate(2deg); } 66% { transform: translateY(0) rotate(-2deg); } 100% { transform: translateY(0) rotate(0); } }

.scn-pockets-garden-chaos { background: linear-gradient(180deg, #87ceeb 0%, #d4e0c8 50%, #a0c080 100%), radial-gradient(ellipse at 50% 100%, #a0c080 0%, transparent 70%); }
.scn-pockets-garden-chaos .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #b0d8f0 0%, #e0f0ff 100%); }
.scn-pockets-garden-chaos .grass { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, #7aa84a 0%, #4a7a2a 100%); border-radius: 60% 40% 0 0; }
.scn-pockets-garden-chaos .bushes { position:absolute; bottom:18%; left:10%; width:120px; height:100px; background: radial-gradient(ellipse at 30% 70%, #6a9a3a 0%, #3a5a1a 100%); border-radius: 50%; box-shadow: 0 0 20px rgba(0,0,0,0.2); animation: pg-bush 12s ease-in-out infinite; }
.scn-pockets-garden-chaos .river { position:absolute; bottom:22%; left:0; right:0; height:20px; background: linear-gradient(90deg, #4a8ab0 0%, #6ab0d0 50%, #4a8ab0 100%); border-radius: 0; animation: pg-river 8s linear infinite; }
.scn-pockets-garden-chaos .child { position:absolute; left:30%; bottom:30%; width:20px; height:40px; background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: pg-jump 1s ease-in-out infinite; }
.scn-pockets-garden-chaos .child2 { position:absolute; left:55%; bottom:25%; width:18px; height:36px; background: linear-gradient(180deg, #2a2a2a 0%, #1a1a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: pg-jump2 1.2s ease-in-out infinite; }
.scn-pockets-garden-chaos .baby { position:absolute; right:20%; bottom:15%; width:24px; height:20px; background: radial-gradient(ellipse, #e8d4b0 0%, #b89878 100%); border-radius: 50%; box-shadow: 0 2px 6px rgba(0,0,0,0.3); animation: pg-baby 3s ease-in-out infinite; }
.scn-pockets-garden-chaos .butterfly { position:absolute; top:20%; left:60%; width:12px; height:8px; background: radial-gradient(ellipse, #ffa0a0 0%, #d06060 100%); border-radius: 50%; box-shadow: 0 0 6px rgba(255,160,160,0.3); animation: pg-butterfly 7s ease-in-out infinite alternate; }
@keyframes pg-bush { 0% { transform: scale(1); } 50% { transform: scale(1.05); } 100% { transform: scale(1); } }
@keyframes pg-river { 0% { background-position: 0 0; } 100% { background-position: -100px 0; } }
@keyframes pg-jump { 0%,100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-15px) rotate(5deg); } }
@keyframes pg-jump2 { 0%,100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-12px) rotate(-5deg); } }
@keyframes pg-baby { 0%,100% { transform: translateY(0) scale(1); } 50% { transform: translateY(-3px) scale(1.1); } }
@keyframes pg-butterfly { 0% { left:60%; top:20%; transform: rotate(-10deg); } 25% { left:70%; top:15%; transform: rotate(10deg); } 50% { left:65%; top:10%; transform: rotate(-5deg); } 75% { left:55%; top:12%; transform: rotate(5deg); } 100% { left:60%; top:20%; transform: rotate(-10deg); } }

.scn-kiss-from-estella {
  background: linear-gradient(180deg, #f5e6d3 0%, #e8d5b7 50%, #dcc4a0 100%),
              radial-gradient(ellipse at 70% 20%, #fff4e6 0%, transparent 60%);
  position: relative;
  overflow: hidden;
  height: 100%;
}
.scn-kiss-from-estella .bg-wall.ke {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(90deg, #e5d0b0, #f0e0c0, #e0c8a0);
  animation: ke-wallpulse 12s ease-in-out infinite alternate;
}
.scn-kiss-from-estella .bg-floor.ke {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #b89870, #a08060);
  border-radius: 20% 20% 0 0;
}
.scn-kiss-from-estella .window.ke {
  position: absolute; top: 15%; left: 45%; width: 22%; height: 40%;
  background: radial-gradient(ellipse at center, #ffeecc 0%, #ffdd99 50%, #eebb88 100%);
  border-radius: 10% 10% 5% 5% / 15% 15% 5% 5%;
  box-shadow: 0 0 60px 20px rgba(255, 230, 180, 0.6), 0 0 120px 40px rgba(255, 200, 120, 0.3);
  animation: ke-glow 4s ease-in-out infinite alternate;
}
.scn-kiss-from-estella .fireplace.ke {
  position: absolute; bottom: 28%; left: 10%; width: 30%; height: 35%;
  background: linear-gradient(180deg, #8a6a4a, #6a4a2a);
  border-radius: 20% 20% 5% 5% / 30% 30% 10% 10%;
  box-shadow: inset 0 -10px 20px rgba(0,0,0,0.5);
}
.scn-kiss-from-estella .figure-a.ke {
  position: absolute; bottom: 28%; left: 38%; width: 14%; height: 45%;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ke-figureA 6s ease-in-out infinite;
}
.scn-kiss-from-estella .figure-b.ke {
  position: absolute; bottom: 28%; left: 55%; width: 12%; height: 35%;
  background: linear-gradient(180deg, #3a2a2a 0%, #1a1a1a 100%);
  border-radius: 50% 50% 35% 35% / 60% 60% 35% 35%;
  transform-origin: bottom center;
  animation: ke-figureB 8s ease-in-out infinite;
}
.scn-kiss-from-estella .curtain-l.ke {
  position: absolute; top: 0; left: 0; width: 18%; height: 80%;
  background: linear-gradient(90deg, #b89878, #d4b898, #b89878);
  border-radius: 0 30% 30% 0;
  filter: drop-shadow(4px 0 6px rgba(0,0,0,0.3));
  animation: ke-curtain 14s ease-in-out infinite alternate;
}
.scn-kiss-from-estella .curtain-r.ke {
  position: absolute; top: 0; right: 0; width: 18%; height: 80%;
  background: linear-gradient(90deg, #b89878, #d4b898, #b89878);
  border-radius: 30% 0 0 30%;
  filter: drop-shadow(-4px 0 6px rgba(0,0,0,0.3));
  animation: ke-curtain 14s ease-in-out infinite alternate-reverse;
}
@keyframes ke-wallpulse {
  0% { opacity: 0.85; }
  50% { opacity: 1; }
  100% { opacity: 0.9; }
}
@keyframes ke-glow {
  0% { box-shadow: 0 0 40px 12px rgba(255,230,180,0.5), 0 0 80px 24px rgba(255,200,120,0.2); opacity: 0.9; }
  50% { box-shadow: 0 0 80px 24px rgba(255,230,180,0.8), 0 0 160px 48px rgba(255,200,120,0.4); opacity: 1; }
  100% { box-shadow: 0 0 50px 16px rgba(255,230,180,0.6), 0 0 100px 30px rgba(255,200,120,0.3); opacity: 0.95; }
}
@keyframes ke-figureA {
  0% { transform: translateX(0) translateY(0) rotate(-2deg); }
  30% { transform: translateX(5px) translateY(-3px) rotate(2deg); }
  60% { transform: translateX(-3px) translateY(0) rotate(-1deg); }
  100% { transform: translateX(0) translateY(0) rotate(0deg); }
}
@keyframes ke-figureB {
  0% { transform: translateX(0) translateY(0) rotate(1deg); }
  40% { transform: translateX(-4px) translateY(-2px) rotate(-1deg); }
  70% { transform: translateX(3px) translateY(0) rotate(1deg); }
  100% { transform: translateX(0) translateY(0) rotate(0deg); }
}
@keyframes ke-curtain {
  0% { transform: translateX(0); }
  50% { transform: translateX(-4px); }
  100% { transform: translateX(0); }
}

.scn-fear-of-consequences {
  background: linear-gradient(180deg, #1a1a2e 0%, #2d2d44 40%, #3a3a52 100%),
              radial-gradient(ellipse at 50% 80%, #3d3d5a 0%, transparent 70%);
  position: relative;
  overflow: hidden;
  height: 100%;
}
.scn-fear-of-consequences .bg-wall.fc {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(90deg, #24243a, #2e2e48, #24243a);
  animation: fc-wallshimmer 6s ease-in-out infinite alternate;
}
.scn-fear-of-consequences .bg-floor.fc {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(180deg, #2a2a3e, #1a1a2e);
}
.scn-fear-of-consequences .bed.fc {
  position: absolute; bottom: 20%; left: 15%; width: 70%; height: 35%;
  background: linear-gradient(180deg, #3c3c54, #28283e);
  border-radius: 20% 20% 8% 8% / 30% 30% 10% 10%;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.6), 0 4px 8px rgba(0,0,0,0.5);
}
.scn-fear-of-consequences .figure.fc {
  position: absolute; bottom: 25%; left: 45%; width: 14%; height: 40%;
  background: linear-gradient(180deg, #12121e, #0e0e1a);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: fc-shake 0.8s ease-in-out infinite;
}
.scn-fear-of-consequences .door.fc {
  position: absolute; bottom: 10%; right: 8%; width: 15%; height: 60%;
  background: linear-gradient(180deg, #4a3a2a, #3a2a1a);
  border-radius: 4% 4% 0 0;
  border-left: 3px solid #5a4a3a;
  border-right: 3px solid #2a1a0a;
  box-shadow: -4px 0 10px rgba(0,0,0,0.6);
}
.scn-fear-of-consequences .candle.fc {
  position: absolute; bottom: 30%; left: 20%; width: 6%; height: 12%;
  background: linear-gradient(180deg, #f0d080, #e8c070);
  border-radius: 50% 50% 20% 20% / 40% 40% 20% 20%;
  box-shadow: 0 0 30px 10px rgba(240, 208, 128, 0.6), 0 0 60px 20px rgba(240, 208, 128, 0.3);
  animation: fc-candle 2s ease-in-out infinite alternate;
}
.scn-fear-of-consequences .shadow.fc {
  position: absolute; bottom: 15%; left: 35%; width: 40%; height: 20%;
  background: rgba(0,0,0,0.4);
  border-radius: 50% 50% 0 0;
  filter: blur(8px);
  animation: fc-shadowdart 3s linear infinite alternate;
}
@keyframes fc-wallshimmer {
  0% { opacity: 0.7; }
  50% { opacity: 1; }
  100% { opacity: 0.8; }
}
@keyframes fc-shake {
  0% { transform: translateX(0) rotate(0deg); }
  15% { transform: translateX(-3px) rotate(-2deg); }
  30% { transform: translateX(3px) rotate(2deg); }
  50% { transform: translateX(-2px) rotate(-1deg); }
  70% { transform: translateX(2px) rotate(1deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes fc-candle {
  0% { box-shadow: 0 0 20px 5px rgba(240,208,128,0.5), 0 0 40px 10px rgba(240,208,128,0.2); opacity: 0.9; }
  30% { box-shadow: 0 0 40px 12px rgba(240,208,128,0.8), 0 0 80px 25px rgba(240,208,128,0.4); opacity: 1; }
  70% { box-shadow: 0 0 30px 8px rgba(240,208,128,0.6), 0 0 60px 18px rgba(240,208,128,0.3); opacity: 0.95; }
  100% { box-shadow: 0 0 25px 6px rgba(240,208,128,0.5), 0 0 50px 14px rgba(240,208,128,0.2); opacity: 0.9; }
}
@keyframes fc-shadowdart {
  0% { transform: translateX(-20px) scaleX(1); opacity: 0.3; }
  50% { transform: translateX(10px) scaleX(1.2); opacity: 0.7; }
  100% { transform: translateX(-15px) scaleX(0.9); opacity: 0.4; }
}

.scn-subsequent-visits {
  background: linear-gradient(180deg, #3a3a4a 0%, #4a4a5a 40%, #5a5a6a 100%),
              radial-gradient(ellipse at 50% 30%, #5e5e72 0%, transparent 70%);
  position: relative;
  overflow: hidden;
  height: 100%;
}
.scn-subsequent-visits .bg-wall.sv {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(90deg, #3e3e52, #4e4e62, #3e3e52);
  animation: sv-wallfade 20s ease-in-out infinite alternate;
}
.scn-subsequent-visits .bg-floor.sv {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #3a3a4a, #2a2a3a);
}
.scn-subsequent-visits .chair.sv {
  position: absolute; bottom: 30%; left: 30%; width: 20%; height: 40%;
  background: linear-gradient(180deg, #5a4a3a, #4a3a2a);
  border-radius: 20% 20% 8% 8% / 30% 30% 10% 10%;
  box-shadow: -2px 0 8px rgba(0,0,0,0.4);
  animation: sv-chaircreak 12s ease-in-out infinite;
}
.scn-subsequent-visits .figure-seated.sv {
  position: absolute; bottom: 30%; left: 35%; width: 12%; height: 35%;
  background: linear-gradient(180deg, #2a2a3e, #1a1a2e);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: sv-breathe 10s ease-in-out infinite;
}
.scn-subsequent-visits .table.sv {
  position: absolute; bottom: 25%; left: 55%; width: 18%; height: 15%;
  background: linear-gradient(180deg, #6a5a4a, #5a4a3a);
  border-radius: 8% 8% 4% 4% / 20% 20% 10% 10%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.5);
}
.scn-subsequent-visits .book.sv {
  position: absolute; bottom: 32%; left: 58%; width: 8%; height: 12%;
  background: linear-gradient(180deg, #8a7a6a, #7a6a5a);
  border-radius: 10% 10% 0 0 / 30% 30% 0 0;
  transform: rotate(-10deg);
  animation: sv-bookturn 18s ease-in-out infinite alternate;
}
.scn-subsequent-visits .dust-mote.sv.d1 {
  position: absolute; top: 20%; left: 20%; width: 4px; height: 4px;
  background: rgba(255,255,255,0.3);
  border-radius: 50%;
  filter: blur(2px);
  animation: sv-drift 22s linear infinite;
}
.scn-subsequent-visits .dust-mote.sv.d2 {
  position: absolute; top: 40%; left: 60%; width: 5px; height: 5px;
  background: rgba(255,255,255,0.2);
  border-radius: 50%;
  filter: blur(2px);
  animation: sv-drift2 28s linear infinite;
}
@keyframes sv-wallfade {
  0% { opacity: 0.8; }
  50% { opacity: 0.95; }
  100% { opacity: 0.85; }
}
@keyframes sv-chaircreak {
  0% { transform: translateY(0) rotate(0deg); }
  30% { transform: translateY(-2px) rotate(0.5deg); }
  60% { transform: translateY(0) rotate(-0.3deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes sv-breathe {
  0% { transform: scaleY(1) translateX(0); }
  50% { transform: scaleY(1.02) translateX(-2px); }
  100% { transform: scaleY(1) translateX(0); }
}
@keyframes sv-bookturn {
  0% { transform: rotate(-10deg) translateX(0); }
  50% { transform: rotate(-5deg) translateX(3px); }
  100% { transform: rotate(-8deg) translateX(0); }
}
@keyframes sv-drift {
  0% { transform: translate(0, 0); opacity: 0; }
  10% { opacity: 0.6; }
  90% { opacity: 0.4; }
  100% { transform: translate(100px, -60px); opacity: 0; }
}
@keyframes sv-drift2 {
  0% { transform: translate(0, 0); opacity: 0; }
  10% { opacity: 0.4; }
  90% { opacity: 0.3; }
  100% { transform: translate(-80px, -40px); opacity: 0; }
}

.scn-pumblechook-speculations {
  background: linear-gradient(180deg, #f0d080 0%, #e0c060 30%, #d0a050 100%),
              radial-gradient(ellipse at 50% 20%, #ffe8a0 0%, transparent 60%);
  position: relative;
  overflow: hidden;
  height: 100%;
}
.scn-pumblechook-speculations .bg-table.pu {
  position: absolute; bottom: 10%; left: 10%; width: 80%; height: 35%;
  background: linear-gradient(180deg, #b89860, #a08050);
  border-radius: 10% 10% 5% 5% / 20% 20% 8% 8%;
  box-shadow: 0 -8px 16px rgba(0,0,0,0.2);
  animation: pu-tablewobble 4s ease-in-out infinite alternate;
}
.scn-pumblechook-speculations .teapot.pu {
  position: absolute; bottom: 35%; left: 45%; width: 14%; height: 18%;
  background: linear-gradient(180deg, #c8553d, #a0461a); /* terracotta, no crimson */
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  box-shadow: 0 6px 12px rgba(0,0,0,0.3), inset 0 -6px 12px rgba(0,0,0,0.2);
  transform-origin: bottom center;
  animation: pu-wobble 2.5s ease-in-out infinite;
}
.scn-pumblechook-speculations .cups.pu {
  position: absolute; bottom: 30%; left: 55%; width: 8%; height: 12%;
  background: linear-gradient(180deg, #e8d080, #d0b860);
  border-radius: 40% 40% 20% 20% / 50% 50% 20% 20%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.3);
  animation: pu-cupjump 3s ease-in-out infinite;
}
.scn-pumblechook-speculations .figure-pumblechook.pu {
  position: absolute; bottom: 12%; left: 20%; width: 25%; height: 55%;
  background: linear-gradient(180deg, #5a4a3a, #3a2a1a);
  border-radius: 60% 60% 40% 40% / 70% 70% 30% 30%;
  transform-origin: bottom center;
  animation: pu-bounce 2s cubic-bezier(0.68, -0.55, 0.27, 1.55) infinite;
}
.scn-pumblechook-speculations .figure-sister.pu {
  position: absolute; bottom: 15%; left: 55%; width: 18%; height: 45%;
  background: linear-gradient(180deg, #4a3a2a, #2a1a0a);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pu-bounce 2.5s cubic-bezier(0.68, -0.55, 0.27, 1.55) infinite 0.5s;
}
.scn-pumblechook-speculations .chair-knocked.pu {
  position: absolute; bottom: 8%; left: 8%; width: 15%; height: 25%;
  background: linear-gradient(180deg, #6a5a4a, #4a3a2a);
  border-radius: 30% 30% 10% 10% / 40% 40% 10% 10%;
  transform: rotate(-45deg);
  animation: pu-chairslide 6s ease-in-out infinite alternate;
}
.scn-pumblechook-speculations .cards.pu {
  position: absolute; bottom: 20%; left: 35%; width: 5%; height: 8%;
  background: linear-gradient(180deg, #f0e8d0, #e0d8c0);
  border-radius: 8% 8% 4% 4%;
  box-shadow: 0 2px 4px rgba(0,0,0,0.2);
  animation: pu-cardflip 4s ease-in-out infinite;
}
@keyframes pu-tablewobble {
  0% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-3px) rotate(1deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes pu-wobble {
  0% { transform: rotate(0deg) translateY(0); }
  30% { transform: rotate(8deg) translateY(-3px); }
  60% { transform: rotate(-6deg) translateY(-2px); }
  100% { transform: rotate(0deg) translateY(0); }
}
@keyframes pu-cupjump {
  0% { transform: translateY(0) rotate(0deg); }
  20% { transform: translateY(-8px) rotate(5deg); }
  40% { transform: translateY(0) rotate(-3deg); }
  70% { transform: translateY(-5px) rotate(2deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes pu-bounce {
  0% { transform: translateY(0) scale(1); }
  20% { transform: translateY(-15px) scale(1.1); }
  40% { transform: translateY(0) scale(1); }
  60% { transform: translateY(-8px) scale(1.05); }
  100% { transform: translateY(0) scale(1); }
}
@keyframes pu-chairslide {
  0% { transform: rotate(-45deg) translateX(0); }
  50% { transform: rotate(-30deg) translateX(10px); }
  100% { transform: rotate(-45deg) translateX(0); }
}
@keyframes pu-cardflip {
  0% { transform: rotateY(0deg) translateX(0); }
  50% { transform: rotateY(180deg) translateX(5px); }
  100% { transform: rotateY(360deg) translateX(0); }
}

.scn-finger-post-goodbye {
  background:
    linear-gradient(180deg, #1a1428 0%, #2a2040 25%, #503a50 50%, #7a5a48 75%, #b08050 100%),
    radial-gradient(ellipse at 30% 100%, #d4a060 0%, rgba(212,160,96,0) 60%);
}
.scn-finger-post-goodbye .sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #1a1430, transparent);
  animation: fpg-sky 15s ease-in-out infinite alternate;
}
.scn-finger-post-goodbye .mist {
  position: absolute; inset: 30% 0 0 0;
  background: linear-gradient(0deg, rgba(180,160,140,0.25) 0%, transparent 80%);
  animation: fpg-mist 20s ease-in-out infinite;
}
.scn-finger-post-goodbye .hills {
  position: absolute; bottom: 25%; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #2a3020 0%, #1a1a10 100%);
  border-radius: 30% 70% 0 0 / 60% 80% 0 0;
  box-shadow: inset 0 6px 12px rgba(0,0,0,0.5);
  animation: fpg-hills 12s ease-in-out infinite alternate;
}
.scn-finger-post-goodbye .post {
  position: absolute; bottom: 30%; left: 35%; width: 6px; height: 80px;
  background: linear-gradient(180deg, #4a3a2a, #2a1a10);
  border-radius: 2px;
  transform-origin: bottom center;
  animation: fpg-post 8s ease-in-out infinite;
}
.scn-finger-post-goodbye .sign {
  position: absolute; bottom: 50%; left: 32%; width: 60px; height: 12px;
  background: linear-gradient(180deg, #5a4a3a, #3a2a1a);
  border-radius: 3px;
  transform: rotate(10deg);
  box-shadow: 0 2px 4px rgba(0,0,0,0.3);
  animation: fpg-sign 8s ease-in-out infinite;
}
.scn-finger-post-goodbye .figure {
  position: absolute; bottom: 26%; left: 48%; width: 20px; height: 45px;
  background: linear-gradient(180deg, #0a0a0a 0%, #1a1a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: fpg-figure 6s ease-in-out infinite;
}
.scn-finger-post-goodbye .cottage {
  position: absolute; bottom: 22%; left: 60%; width: 60px; height: 40px;
  background: linear-gradient(180deg, #2a1a0a, #1a0a00);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.4);
}
.scn-finger-post-goodbye .window-glow {
  position: absolute; bottom: 28%; left: 64%; width: 10px; height: 14px;
  background: radial-gradient(circle, #d09050 0%, #a06030 100%);
  border-radius: 2px;
  box-shadow: 0 0 16px 4px rgba(208,144,80,0.6), 0 0 32px 8px rgba(208,144,80,0.3);
  animation: fpg-glow 4s ease-in-out infinite alternate;
}
@keyframes fpg-sky {
  0% { opacity: 0.7; }
  50% { opacity: 1; }
  100% { opacity: 0.6; }
}
@keyframes fpg-mist {
  0% { transform: translateY(0) scale(1); opacity: 0.4; }
  50% { transform: translateY(-8px) scale(1.02); opacity: 0.6; }
  100% { transform: translateY(0) scale(1); opacity: 0.4; }
}
@keyframes fpg-hills {
  0% { transform: translateY(0); }
  50% { transform: translateY(-4px); }
  100% { transform: translateY(0); }
}
@keyframes fpg-post {
  0%,100% { transform: rotate(-1deg); }
  50% { transform: rotate(1deg); }
}
@keyframes fpg-sign {
  0%,100% { transform: rotate(10deg) translateX(0); }
  50% { transform: rotate(12deg) translateX(2px); }
}
@keyframes fpg-figure {
  0% { transform: translateX(0) translateY(0) rotate(-2deg); }
  25% { transform: translateX(2px) translateY(-1px) rotate(1deg); }
  50% { transform: translateX(4px) translateY(0) rotate(-1deg); }
  75% { transform: translateX(6px) translateY(-1px) rotate(2deg); }
  100% { transform: translateX(8px) translateY(0) rotate(0); }
}
@keyframes fpg-glow {
  0% { box-shadow: 0 0 12px 2px rgba(208,144,80,0.5); opacity: 0.8; }
  50% { box-shadow: 0 0 24px 6px rgba(208,144,80,0.7); opacity: 1; }
  100% { box-shadow: 0 0 16px 4px rgba(208,144,80,0.5); opacity: 0.9; }
}

.scn-coach-journey-to-london {
  background:
    linear-gradient(180deg, #2a2a30 0%, #3a3a40 30%, #4a4a50 60%, #5a5a5a 100%),
    radial-gradient(ellipse at 50% 0%, #6a6a70 0%, transparent 70%);
}
.scn-coach-journey-to-london .coach-wall {
  position: absolute; inset: 0; background: linear-gradient(180deg, #3a3028 0%, #1a1410 100%); z-index: 1;
  animation: cjl-wall 20s ease-in-out infinite;
}
.scn-coach-journey-to-london .window-frame {
  position: absolute; top: 10%; left: 15%; width: 70%; height: 60%;
  border: 8px solid #2a1a10; background: transparent; border-radius: 6px;
  box-shadow: inset 0 0 0 2px #4a3a2a;
  animation: cjl-frame 8s ease-in-out infinite;
}
.scn-coach-journey-to-london .window-glass {
  position: absolute; top: calc(10% + 8px); left: calc(15% + 8px); width: calc(70% - 16px); height: calc(60% - 16px);
  background: linear-gradient(180deg, #4a5050 0%, #6a7070 50%, #8a9090 100%);
  border-radius: 3px;
  box-shadow: inset 0 0 20px rgba(255,255,255,0.1);
  animation: cjl-glass 15s linear infinite;
}
.scn-coach-journey-to-london .outside-city {
  position: absolute; top: 15%; left: 20%; width: 65%; height: 55%;
  background: linear-gradient(180deg, #4a4a5a 0%, #3a3a4a 100%);
  clip-path: polygon(0% 100%, 10% 80%, 20% 90%, 35% 60%, 50% 85%, 65% 50%, 80% 75%, 100% 40%, 100% 100%);
  opacity: 0.7;
  animation: cjl-city 30s linear infinite;
}
.scn-coach-journey-to-london .seat {
  position: absolute; bottom: 15%; left: 20%; width: 60%; height: 15%;
  background: linear-gradient(180deg, #5a3a20 0%, #3a2010 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: 0 -4px 8px rgba(0,0,0,0.3);
  animation: cjl-seat 8s ease-in-out infinite;
}
.scn-coach-journey-to-london .figure-inside {
  position: absolute; bottom: 17%; left: 40%; width: 25px; height: 50px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cjl-figure 6s ease-in-out infinite;
}
.scn-coach-journey-to-london .luggage {
  position: absolute; bottom: 12%; left: 50%; width: 30px; height: 20px;
  background: linear-gradient(180deg, #4a3020, #2a1a10);
  border-radius: 4px;
  box-shadow: 0 2px 4px rgba(0,0,0,0.4);
  animation: cjl-luggage 10s ease-in-out infinite;
}
@keyframes cjl-wall {
  0%,100% { opacity: 0.9; }
  50% { opacity: 1; }
}
@keyframes cjl-frame {
  0%,100% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
}
@keyframes cjl-glass {
  0% { background-position: 0 0; }
  100% { background-position: 0 100px; }
}
@keyframes cjl-city {
  0% { transform: translateX(0); }
  100% { transform: translateX(-60px); }
}
@keyframes cjl-seat {
  0%,100% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-1px) rotate(-1deg); }
}
@keyframes cjl-figure {
  0% { transform: translateX(0) rotate(-1deg); }
  25% { transform: translateX(2px) rotate(1deg); }
  50% { transform: translateX(4px) rotate(-1deg); }
  75% { transform: translateX(6px) rotate(1deg); }
  100% { transform: translateX(0) rotate(0); }
}
@keyframes cjl-luggage {
  0%,100% { transform: translateY(0); }
  50% { transform: translateY(-3px); }
}

.scn-london-coach-arrival {
  background:
    linear-gradient(180deg, #4a3020 0%, #6a4030 30%, #8a6050 60%, #a08070 100%),
    radial-gradient(ellipse at 50% 0%, #d0b090 0%, transparent 80%);
}
.scn-london-coach-arrival .coach-interior {
  position: absolute; inset: 0; background: linear-gradient(180deg, #5a3a2a 0%, #2a1a10 100%);
  animation: lca-interior 10s ease-in-out infinite;
}
.scn-london-coach-arrival .bright-window {
  position: absolute; top: 5%; right: 5%; width: 40%; height: 70%;
  background: radial-gradient(ellipse at 50% 50%, #f0d0a0 0%, #c09060 100%);
  border-radius: 10px;
  box-shadow: inset 0 0 30px #e0b080;
  animation: lca-window 6s ease-in-out infinite alternate;
}
.scn-london-coach-arrival .coachman-cape {
  position: absolute; bottom: 20%; left: 20%; width: 120px; height: 100px;
  background: linear-gradient(180deg, #5a5a3a 0%, #3a3a1a 100%);
  border-radius: 60% 40% 50% 50% / 80% 70% 30% 20%;
  transform-origin: top center;
  animation: lca-cape 3s ease-in-out infinite;
}
.scn-london-coach-arrival .cape-fold {
  position: absolute; bottom: 25%; left: 35%; width: 80px; height: 70px;
  background: linear-gradient(180deg, #4a4a2a, #2a2a0a);
  border-radius: 50% 60% 40% 50% / 70% 80% 20% 30%;
  animation: lca-fold 3s ease-in-out infinite 0.15s;
}
.scn-london-coach-arrival .folding-steps {
  position: absolute; bottom: 0; left: 15%; width: 100px; height: 30px;
  background: linear-gradient(180deg, #3a2a1a, #1a1008);
  border-radius: 0 0 10% 10%;
  clip-path: polygon(0% 0%, 20% 0%, 25% 100%, 75% 100%, 80% 0%, 100% 0%, 100% 100%, 0% 100%);
  animation: lca-steps 4s ease-in-out infinite;
}
.scn-london-coach-arrival .hat {
  position: absolute; top: 5%; left: 30%; width: 40px; height: 25px;
  background: linear-gradient(180deg, #1a1a0a, #0a0a00);
  border-radius: 50% 50% 20% 20%;
  transform: rotate(10deg);
  animation: lca-hat 2s ease-in-out infinite alternate;
}
.scn-london-coach-arrival .luggage {
  position: absolute; bottom: 10%; right: 10%; width: 50px; height: 30px;
  background: linear-gradient(180deg, #5a3a20, #2a1a0a);
  border-radius: 4px;
  box-shadow: 0 4px 8px rgba(0,0,0,0.4);
  animation: lca-luggage 5s ease-in-out infinite;
}
@keyframes lca-interior {
  0%,100% { opacity: 0.9; }
  50% { opacity: 1; }
}
@keyframes lca-window {
  0% { box-shadow: inset 0 0 20px #e0b080; opacity: 0.9; }
  50% { box-shadow: inset 0 0 40px #f0d0a0; opacity: 1; }
  100% { box-shadow: inset 0 0 30px #e0b080; opacity: 0.9; }
}
@keyframes lca-cape {
  0%,100% { transform: rotate(-5deg) translateY(0); }
  50% { transform: rotate(5deg) translateY(-6px); }
}
@keyframes lca-fold {
  0%,100% { transform: rotate(-3deg) translateY(0); }
  50% { transform: rotate(3deg) translateY(-4px); }
}
@keyframes lca-steps {
  0%,100% { transform: translateY(0) rotate(-1deg); }
  50% { transform: translateY(-4px) rotate(1deg); }
}
@keyframes lca-hat {
  0% { transform: rotate(10deg) translateY(0); }
  100% { transform: rotate(-5deg) translateY(-8px); }
}
@keyframes lca-luggage {
  0%,100% { transform: translateY(0); }
  50% { transform: translateY(-3px) rotate(2deg); }
}

.scn-jaggers-office {
  background:
    linear-gradient(180deg, #3a2a1a 0%, #5a4030 30%, #7a6050 60%, #9a8070 100%),
    radial-gradient(ellipse at 50% 0%, #c0a080 0%, transparent 80%);
}
.scn-jaggers-office .office-wall {
  position: absolute; inset: 0;
  background: linear-gradient(90deg, #4a3a2a 0%, #5a4a3a 50%, #4a3a2a 100%);
  animation: jgo-wall 20s ease-in-out infinite;
}
.scn-jaggers-office .desk {
  position: absolute; bottom: 15%; left: 10%; width: 80%; height: 40%;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 4px;
  box-shadow: 0 -6px 12px rgba(0,0,0,0.3);
  animation: jgo-desk 12s ease-in-out infinite;
}
.scn-jaggers-office .lamp {
  position: absolute; top: 20%; left: 50%; width: 20px; height: 40px;
  background: radial-gradient(circle at 50% 30%, #f0d0a0 0%, #c09060 100%);
  border-radius: 50% 50% 10% 10%;
  box-shadow: 0 0 30px 10px rgba(240,208,160,0.4), 0 0 60px 20px rgba(240,208,160,0.2);
  animation: jgo-lamp 5s ease-in-out infinite alternate;
}
.scn-jaggers-office .papers {
  position: absolute; bottom: 20%; left: 25%; width: 40%; height: 8%;
  background: linear-gradient(180deg, #d0c0a0, #b0a080);
  border-radius: 2px;
  box-shadow: 0 2px 4px rgba(0,0,0,0.2);
  animation: jgo-papers 8s ease-in-out infinite;
}
.scn-jaggers-office .chair {
  position: absolute; bottom: 5%; left: 40%; width: 60px; height: 50px;
  background: linear-gradient(180deg, #3a2a1a, #1a1008);
  border-radius: 10% 10% 30% 30% / 20% 20% 60% 60%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.4);
  animation: jgo-chair 15s ease-in-out infinite;
}
.scn-jaggers-office .bookshelf {
  position: absolute; top: 5%; right: 5%; width: 25%; height: 60%;
  background: repeating-linear-gradient(180deg, #3a2a1a 0px, #3a2a1a 8px, #4a3a2a 8px, #4a3a2a 16px);
  border-radius: 4px;
  box-shadow: inset 0 0 10px rgba(0,0,0,0.3);
  animation: jgo-shelf 30s linear infinite;
}
.scn-jaggers-office .dust-mote {
  position: absolute; top: 30%; left: 20%; width: 4px; height: 4px;
  background: rgba(255,255,240,0.6);
  border-radius: 50%;
  box-shadow: 0 0 6px 2px rgba(255,255,240,0.3);
  animation: jgo-dust 12s ease-in-out infinite;
}
@keyframes jgo-wall {
  0%,100% { opacity: 0.9; }
  50% { opacity: 1; }
}
@keyframes jgo-desk {
  0%,100% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
}
@keyframes jgo-lamp {
  0% { box-shadow: 0 0 25px 8px rgba(240,208,160,0.3); opacity: 0.85; }
  50% { box-shadow: 0 0 40px 14px rgba(240,208,160,0.5); opacity: 1; }
  100% { box-shadow: 0 0 30px 10px rgba(240,208,160,0.35); opacity: 0.9; }
}
@keyframes jgo-papers {
  0%,100% { transform: translateX(0) rotate(0deg); }
  50% { transform: translateX(4px) rotate(2deg); }
}
@keyframes jgo-chair {
  0%,100% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-4px) rotate(-1deg); }
}
@keyframes jgo-shelf {
  0% { background-position: 0 0; }
  100% { background-position: 0 32px; }
}
@keyframes jgo-dust {
  0%,100% { transform: translate(0, 0) scale(1); opacity: 0.3; }
  50% { transform: translate(20px, -30px) scale(1.5); opacity: 0.8; }
}

/* ===== SCENE 1: wemmick-walk (ww) ===== */
.scn-wemmick-walk {
  background: 
    radial-gradient(ellipse at 50% 60%, rgba(200, 180, 150, 0.4) 0%, transparent 70%),
    linear-gradient(180deg, #7a6a5a 0%, #5a4a3a 50%, #3a2a1a 100%);
}
.scn-wemmick-walk .wall-bg { 
  position: absolute; inset: 0 0 30% 0; 
  background: linear-gradient(180deg, #8a7a6a, #6a5a4a); 
}
.scn-wemmick-walk .floor { 
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%; 
  background: linear-gradient(0deg, #2a2a1a, #4a3a2a); 
}
.scn-wemmick-walk .cityscape { 
  position: absolute; bottom: 30%; left: 0; right: 0; height: 30%; 
  background: 
    linear-gradient(0deg, #4a3a2a 0%, transparent 100%),
    radial-gradient(ellipse at 30% 100%, #5a4a3a 0%, transparent 50%),
    radial-gradient(ellipse at 70% 100%, #4a3a2a 0%, transparent 40%);
  opacity: 0.6; 
  animation: ww-city 40s ease-in-out infinite alternate; 
}
.scn-wemmick-walk .window-frame { 
  position: absolute; top: 8%; left: 35%; width: 30%; height: 45%; 
  border: 10px solid #3a2a1a; border-radius: 6px; 
  box-shadow: inset 0 0 20px rgba(0,0,0,0.5); 
}
.scn-wemmick-walk .window-light { 
  position: absolute; top: 10%; left: 37%; width: 26%; height: 41%; 
  background: linear-gradient(180deg, #f0e0c0 0%, #c0a080 50%, #a08060 100%); 
  box-shadow: 0 0 40px 10px rgba(240, 224, 192, 0.3); 
  animation: ww-glow 4s ease-in-out infinite alternate; 
}
.scn-wemmick-walk .figure-wemmick { 
  position: absolute; bottom: 30%; left: 25%; width: 14px; height: 36px; 
  background: linear-gradient(180deg, #1a1a2a, #0a0a1a); 
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; 
  transform-origin: bottom center; 
  animation: ww-walk 3s ease-in-out infinite; 
}
.scn-wemmick-walk .figure-pip { 
  position: absolute; bottom: 30%; left: 42%; width: 16px; height: 38px; 
  background: linear-gradient(180deg, #2a2a3a, #1a1a2a); 
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; 
  transform-origin: bottom center; 
  animation: ww-walk 3s ease-in-out infinite 0.5s; 
}
.scn-wemmick-walk .lamp-glow { 
  position: absolute; bottom: 35%; left: 55%; width: 12px; height: 18px; 
  background: radial-gradient(circle at 50% 30%, #ffd080, #c08040); 
  border-radius: 4px; 
  box-shadow: 0 0 30px 8px rgba(192, 128, 64, 0.6); 
  animation: ww-lamp 5s ease-in-out infinite; 
}
@keyframes ww-city { 
  0% { transform: translateX(0); opacity: 0.5; } 
  50% { transform: translateX(-5px); opacity: 0.7; } 
  100% { transform: translateX(5px); opacity: 0.5; } 
}
@keyframes ww-glow { 
  0% { opacity: 0.8; box-shadow: 0 0 30px 5px rgba(240, 224, 192, 0.2); } 
  50% { opacity: 1; box-shadow: 0 0 50px 15px rgba(240, 224, 192, 0.5); } 
  100% { opacity: 0.85; box-shadow: 0 0 35px 8px rgba(240, 224, 192, 0.3); } 
}
@keyframes ww-walk { 
  0% { transform: translateX(0) translateY(0) rotate(-2deg); } 
  25% { transform: translateX(8px) translateY(-2px) rotate(1deg); } 
  50% { transform: translateX(16px) translateY(0) rotate(-1deg); } 
  75% { transform: translateX(24px) translateY(-2px) rotate(2deg); } 
  100% { transform: translateX(32px) translateY(0) rotate(0deg); } 
}
@keyframes ww-lamp { 
  0% { transform: scale(1) rotate(-5deg); opacity: 0.8; } 
  50% { transform: scale(1.1) rotate(5deg); opacity: 1; } 
  100% { transform: scale(0.95) rotate(-2deg); opacity: 0.7; } 
}

/* ===== SCENE 2: barnards-inn (bi) ===== */
.scn-barnards-inn {
  background: 
    radial-gradient(ellipse at 50% 40%, rgba(60, 50, 40, 0.5) 0%, transparent 70%),
    linear-gradient(180deg, #1a1a1a 0%, #2a2a2a 40%, #1a1a1a 100%);
}
.scn-barnards-inn .bg-deep { 
  position: absolute; inset: 0; 
  background: linear-gradient(180deg, #0a0a0a 0%, #1a1a1a 100%); 
}
.scn-barnards-inn .arch-frame { 
  position: absolute; top: 0; left: 5%; right: 5%; bottom: 10%; 
  border: 15px solid #0a0a0a; border-radius: 50% 50% 0 0 / 15% 15% 0 0; 
  box-shadow: inset 0 0 40px rgba(0,0,0,0.8); 
}
.scn-barnards-inn .desk { 
  position: absolute; bottom: 8%; left: 15%; width: 70%; height: 25%; 
  background: linear-gradient(0deg, #3a2a1a, #5a4a3a); 
  border-radius: 6px; box-shadow: 0 4px 12px rgba(0,0,0,0.7); 
}
.scn-barnards-inn .ledger { 
  position: absolute; bottom: 20%; left: 30%; width: 40%; height: 12%; 
  background: linear-gradient(135deg, #6a5a4a, #8a7a5a); 
  border-radius: 3px; 
  animation: bi-ledger 8s ease-in-out infinite alternate; 
}
.scn-barnards-inn .figure-wemmick { 
  position: absolute; bottom: 22%; left: 28%; width: 18px; height: 40px; 
  background: linear-gradient(180deg, #1a1a1a, #0a0a0a); 
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; 
  transform-origin: bottom center; 
  animation: bi-breathe 5s ease-in-out infinite; 
}
.scn-barnards-inn .figure-pip { 
  position: absolute; bottom: 22%; left: 52%; width: 20px; height: 42px; 
  background: linear-gradient(180deg, #2a2a2a, #1a1a1a); 
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; 
  transform-origin: bottom center; 
  animation: bi-breathe 5s ease-in-out infinite -1s; 
}
.scn-barnards-inn .candle-glow { 
  position: absolute; bottom: 35%; left: 46%; width: 16px; height: 24px; 
  background: radial-gradient(ellipse at 50% 30%, #ffd090 0%, #c08040 60%, #5a3a1a 100%); 
  border-radius: 50%; 
  box-shadow: 0 0 40px 15px rgba(192, 128, 64, 0.4); 
  animation: bi-candle 3s ease-in-out infinite alternate; 
}
@keyframes bi-ledger { 
  0% { transform: scaleY(1) translateY(0); } 
  50% { transform: scaleY(1.02) translateY(-2px); } 
  100% { transform: scaleY(1) translateY(0); } 
}
@keyframes bi-breathe { 
  0% { transform: translateY(0) scale(1); } 
  50% { transform: translateY(-3px) scale(1.02); } 
  100% { transform: translateY(0) scale(1); } 
}
@keyframes bi-candle { 
  0% { transform: scaleX(1) scaleY(1); opacity: 0.8; box-shadow: 0 0 30px 10px rgba(192, 128, 64, 0.3); } 
  50% { transform: scaleX(1.1) scaleY(1.2); opacity: 1; box-shadow: 0 0 50px 20px rgba(192, 128, 64, 0.6); } 
  100% { transform: scaleX(0.95) scaleY(0.9); opacity: 0.75; box-shadow: 0 0 25px 8px rgba(192, 128, 64, 0.3); } 
}

/* ===== SCENE 3: barnards-inn-room (bir) ===== */
.scn-barnards-inn-room {
  background: 
    radial-gradient(ellipse at 50% 60%, rgba(30, 40, 50, 0.4) 0%, transparent 70%),
    linear-gradient(180deg, #0a0a0a 0%, #1a1a2a 40%, #0a0a0a 100%);
}
.scn-barnards-inn-room .window-frame { 
  position: absolute; top: 5%; left: 5%; width: 90%; height: 70%; 
  border: 15px solid #1a1a1a; border-radius: 6px; 
  box-shadow: inset 0 0 30px rgba(0,0,0,0.9); 
}
.scn-barnards-inn-room .window-pane { 
  position: absolute; top: 8%; left: 10%; width: 80%; height: 64%; 
  background: linear-gradient(180deg, rgba(40, 50, 60, 0.7) 0%, rgba(10, 20, 30, 0.9) 100%); 
}
.scn-barnards-inn-room .falling-blade { 
  position: absolute; top: -5%; left: 42%; width: 16%; height: 25%; 
  background: linear-gradient(180deg, #4a4a4a 0%, #2a2a2a 50%, #1a1a1a 100%); 
  border-radius: 0 0 15% 15%; 
  box-shadow: 0 5px 15px rgba(0,0,0,0.8); 
  animation: bir-fall 4s ease-in-out infinite; 
}
.scn-barnards-inn-room .fog-layer { 
  position: absolute; inset: 0; 
  background: radial-gradient(ellipse at 30% 50%, rgba(180, 190, 200, 0.15) 0%, transparent 70%); 
  filter: blur(20px); 
  animation: bir-fog 15s ease-in-out infinite alternate; 
}
.scn-barnards-inn-room .figure-pip { 
  position: absolute; bottom: 15%; left: 20%; width: 22px; height: 44px; 
  background: linear-gradient(180deg, #1a1a1a, #0a0a0a); 
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; 
  transform-origin: bottom center; 
  animation: bir-duck 4s ease-in-out infinite; 
}
.scn-barnards-inn-room .shadow-blade { 
  position: absolute; bottom: 20%; left: 40%; width: 20%; height: 5%; 
  background: radial-gradient(ellipse, rgba(0,0,0,0.9) 0%, transparent 100%); 
  animation: bir-shadow-blade 4s ease-in-out infinite; 
}
.scn-barnards-inn-room .shadow-pip { 
  position: absolute; bottom: 5%; left: 15%; width: 30%; height: 10%; 
  background: radial-gradient(ellipse, rgba(0,0,0,0.8) 0%, transparent 100%); 
  animation: bir-shadow-pip 4s ease-in-out infinite; 
}
@keyframes bir-fall { 
  0% { transform: translateY(0) rotate(0deg); } 
  15% { transform: translateY(250%) rotate(3deg); } 
  30% { transform: translateY(250%) rotate(3deg); } 
  100% { transform: translateY(0) rotate(0deg); } 
}
@keyframes bir-fog { 
  0% { transform: translateX(0) scale(1); opacity: 0.4; } 
  50% { transform: translateX(20px) scale(1.1); opacity: 0.7; } 
  100% { transform: translateX(-10px) scale(0.95); opacity: 0.3; } 
}
@keyframes bir-duck { 
  0% { transform: translateY(0) scaleY(1) rotate(0deg); } 
  15% { transform: translateY(5px) scaleY(0.8) rotate(15deg); } 
  30% { transform: translateY(5px) scaleY(0.8) rotate(15deg); } 
  100% { transform: translateY(0) scaleY(1) rotate(0deg); } 
}
@keyframes bir-shadow-blade { 
  0% { transform: scaleX(1); opacity: 0; } 
  15% { transform: scaleX(2); opacity: 1; } 
  30% { transform: scaleX(2); opacity: 1; } 
  100% { transform: scaleX(1); opacity: 0; } 
}
@keyframes bir-shadow-pip { 
  0% { transform: scaleX(1); opacity: 0.5; } 
  15% { transform: scaleX(1.5); opacity: 0.8; } 
  30% { transform: scaleX(1.5); opacity: 0.8; } 
  100% { transform: scaleX(1); opacity: 0.5; } 
}

/* ===== SCENE 4: herbert-pocket-introduction (hpi) ===== */
.scn-herbert-pocket-introduction {
  background: 
    radial-gradient(ellipse at 50% 70%, rgba(200, 120, 60, 0.3) 0%, transparent 70%),
    linear-gradient(180deg, #2a1a0a 0%, #4a3a2a 60%, #2a1a0a 100%);
}
.scn-herbert-pocket-introduction .bg-warm { 
  position: absolute; inset: 0; 
  background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%); 
}
.scn-herbert-pocket-introduction .table { 
  position: absolute; bottom: 10%; left: 10%; width: 80%; height: 20%; 
  background: linear-gradient(0deg, #5a3a2a, #7a5a4a); 
  border-radius: 8px; box-shadow: 0 -4px 20px rgba(0,0,0,0.5); 
}
.scn-herbert-pocket-introduction .chair-left { 
  position: absolute; bottom: 18%; left: 15%; width: 18%; height: 35%; 
  background: linear-gradient(180deg, #3a2a1a, #2a1a0a); 
  border-radius: 20% 20% 6% 6%; 
  transform-origin: bottom center; 
  animation: hpi-rock 6s ease-in-out infinite; 
}
.scn-herbert-pocket-introduction .chair-right { 
  position: absolute; bottom: 18%; right: 15%; width: 18%; height: 35%; 
  background: linear-gradient(180deg, #3a2a1a, #2a1a0a); 
  border-radius: 20% 20% 6% 6%; 
  transform-origin: bottom center; 
  animation: hpi-rock 6s ease-in-out infinite -2s; 
}
.scn-herbert-pocket-introduction .tea-cup { 
  position: absolute; bottom: 30%; left: 45%; width: 10%; height: 12%; 
  background: radial-gradient(ellipse at 50% 40%, #c0a080, #8a6a4a); 
  border-radius: 50% 50% 15% 15%; 
  box-shadow: 0 2px 6px rgba(0,0,0,0.5); 
}
.scn-herbert-pocket-introduction .hands-clasp { 
  position: absolute; bottom: 32%; left: 40%; width: 20%; height: 18%; 
  background: radial-gradient(ellipse at 50% 50%, #4a3a2a, #2a1a1a); 
  border-radius: 40% 40% 30% 30%; 
  transform-origin: center center; 
  animation: hpi-shake 3s ease-in-out infinite; 
}
.scn-herbert-pocket-introduction .fire-glow { 
  position: absolute; bottom: 2%; left: 40%; width: 20%; height: 25%; 
  background: radial-gradient(ellipse at 50% 80%, #ff8040 0%, #c04020 40%, transparent 70%); 
  filter: blur(12px); 
  animation: hpi-fire 4s ease-in-out infinite alternate; 
}
@keyframes hpi-rock { 
  0% { transform: rotate(0deg) translateY(0); } 
  25% { transform: rotate(2deg) translateY(-2px); } 
  50% { transform: rotate(0deg) translateY(0); } 
  75% { transform: rotate(-2deg) translateY(-1px); } 
  100% { transform: rotate(0deg) translateY(0); } 
}
@keyframes hpi-shake { 
  0% { transform: translateX(0) rotate(0deg); } 
  25% { transform: translateX(3px) rotate(5deg); } 
  50% { transform: translateX(0) rotate(0deg); } 
  75% { transform: translateX(-3px) rotate(-5deg); } 
  100% { transform: translateX(0) rotate(0deg); } 
}
@keyframes hpi-fire { 
  0% { opacity: 0.5; transform: scale(0.95) translateY(0); } 
  50% { opacity: 1; transform: scale(1.1) translateY(-5px); } 
  100% { opacity: 0.6; transform: scale(1) translateY(2px); } 
}

/* temple-after-story — dark firelit interior */
.scn-temple-after-story { background: linear-gradient(180deg, #1a0e08 0%, #2c1a0e 50%, #0f0602 100%), radial-gradient(ellipse at 50% 80%, #4a2a12 0%, transparent 60%); }
.scn-temple-after-story .bg-fire  { position:absolute; inset:0; background: radial-gradient(ellipse at 50% 80%, rgba(255,120,20,0.3) 0%, transparent 60%); animation: ta-bg 8s ease-in-out infinite alternate; }
.scn-temple-after-story .mantel  { position:absolute; bottom:35%; left:30%; width:40%; height:20%; background: linear-gradient(180deg, #5a3a1a, #3a2210); border-radius:4px; box-shadow:0 4px 10px rgba(0,0,0,0.6); }
.scn-temple-after-story .fire    { position:absolute; bottom:30%; left:45%; width:10%; height:25%; background: radial-gradient(circle, #ff7b00 0%, #ffaa00 30%, #ff6600 70%, transparent 100%); animation: ta-fire 2s ease-in-out infinite alternate; }
.scn-temple-after-story .figure  { position:absolute; bottom:25%; left:40%; width:8%; height:30%; background: linear-gradient(180deg, #1c1c1c, #0a0a0a); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: ta-figure 6s ease-in-out infinite; }
.scn-temple-after-story .book    { position:absolute; bottom:28%; left:48%; width:6%; height:4%; background:#8a6a3a; border-radius:2px; box-shadow:1px 1px 3px black; animation: ta-book 10s ease-in-out infinite; }
.scn-temple-after-story .shadow  { position:absolute; bottom:20%; left:30%; width:50%; height:30%; background: linear-gradient(180deg, rgba(0,0,0,0.4), transparent); animation: ta-shadow 12s ease-in-out infinite; }
.scn-temple-after-story .smoke   { position:absolute; top:10%; left:35%; width:20%; height:15%; background: radial-gradient(ellipse, rgba(200,200,200,0.2), transparent); filter: blur(4px); animation: ta-smoke 8s linear infinite; }
@keyframes ta-bg   { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.9 } }
@keyframes ta-fire { 0% { transform:scaleY(1) scaleX(0.8); opacity:0.9 } 50% { transform:scaleY(1.2) scaleX(1); opacity:1 } 100% { transform:scaleY(0.9) scaleX(0.9); opacity:0.8 } }
@keyframes ta-figure { 0% { transform:translateY(0) rotate(0deg) } 50% { transform:translateY(-3px) rotate(2deg) } 100% { transform:translateY(0) rotate(-1deg) } }
@keyframes ta-book { 0% { transform:translateY(0) } 50% { transform:translateY(-1px) } 100% { transform:translateY(0) } }
@keyframes ta-shadow { 0% { opacity:0.5 } 50% { opacity:0.8 } 100% { opacity:0.6 } }
@keyframes ta-smoke { 0% { transform:translateY(0) translateX(0) scale(1); opacity:0 } 50% { transform:translateY(-20px) translateX(10px) scale(1.5); opacity:0.4 } 100% { transform:translateY(-40px) translateX(20px) scale(2); opacity:0 } }

/* blue-boar-drummle-encounter — tense bright interior */
.scn-blue-boar-drummle-encounter { background: linear-gradient(180deg, #f5e6d0 0%, #e0c8a8 50%, #c8a878 100%), radial-gradient(ellipse at 50% 100%, #b09070 0%, transparent 70%); }
.scn-blue-boar-drummle-encounter .bg-wall       { position:absolute; bottom:40%; left:0; right:0; height:60%; background: linear-gradient(90deg, #d4b896, #e8d4b4); border-top:2px solid #a08060; }
.scn-blue-boar-drummle-encounter .bar           { position:absolute; bottom:30%; left:20%; width:60%; height:10%; background: linear-gradient(180deg, #6a4a2a, #4a3018); border-radius:4px; }
.scn-blue-boar-drummle-encounter .figure-drummle{ position:absolute; bottom:20%; left:35%; width:12%; height:35%; background: linear-gradient(180deg, #3a2a1a, #1a100a); border-radius: 40% 40% 30% 30% / 70% 70% 30% 30%; transform:scaleX(1.2); animation: bb-drummle 3s ease-in-out infinite; }
.scn-blue-boar-drummle-encounter .figure-pip    { position:absolute; bottom:22%; left:45%; width:8%; height:28%; background: linear-gradient(180deg, #4a3a2a, #2a1a10); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: bb-pip 5s ease-in-out infinite; }
.scn-blue-boar-drummle-encounter .lamp          { position:absolute; top:10%; left:30%; width:4%; height:8%; background: radial-gradient(circle, #ffe080, #d4a040); box-shadow:0 0 20px 8px rgba(255,224,128,0.5); animation: bb-lamp 4s ease-in-out infinite alternate; }
.scn-blue-boar-drummle-encounter .shadow        { position:absolute; bottom:15%; left:30%; width:50%; height:20%; background: linear-gradient(180deg, rgba(0,0,0,0.3), transparent); animation: bb-shadow 6s ease-in-out infinite; }
.scn-blue-boar-drummle-encounter .door          { position:absolute; right:10%; bottom:10%; width:15%; height:70%; background: linear-gradient(180deg, #8a6a4a, #5a3a2a); border-radius:4px 4px 0 0; animation: bb-door 10s ease-in-out infinite; }
@keyframes bb-drummle { 0% { transform:scaleX(1.2) translateY(0) rotate(0deg) } 50% { transform:scaleX(1.25) translateY(-2px) rotate(3deg) } 100% { transform:scaleX(1.2) translateY(0) rotate(-2deg) } }
@keyframes bb-pip     { 0% { transform:translateY(0) } 50% { transform:translateY(-2px) } 100% { transform:translateY(0) } }
@keyframes bb-lamp    { 0% { opacity:0.8; box-shadow:0 0 15px 5px rgba(255,224,128,0.4) } 50% { opacity:1; box-shadow:0 0 30px 15px rgba(255,224,128,0.8) } 100% { opacity:0.9; box-shadow:0 0 20px 8px rgba(255,224,128,0.6) } }
@keyframes bb-shadow  { 0% { opacity:0.4 } 50% { opacity:0.7 } 100% { opacity:0.5 } }
@keyframes bb-door    { 0% { transform:rotateY(0deg) } 50% { transform:rotateY(-15deg) } 100% { transform:rotateY(0deg) } }

/* satis-house-reappearance — tense moonlit exterior */
.scn-satis-house-reappearance { background: linear-gradient(180deg, #0b1a2e 0%, #1a2a4a 50%, #0a0f1e 100%), radial-gradient(ellipse at 50% 0%, #2a4a6a 0%, transparent 70%); }
.scn-satis-house-reappearance .sky-moon    { position:absolute; inset:0 0 40% 0; background: radial-gradient(ellipse at 80% 60%, rgba(200,220,255,0.2), transparent); animation: sh-sky 20s ease-in-out infinite alternate; }
.scn-satis-house-reappearance .moon        { position:absolute; top:8%; left:70%; width:12%; height:12%; background: radial-gradient(circle, #e8f0ff, #a0b0d0); border-radius:50%; box-shadow:0 0 40px 15px rgba(200,220,255,0.3); animation: sh-moon 30s linear infinite; }
.scn-satis-house-reappearance .house       { position:absolute; bottom:20%; left:30%; width:40%; height:50%; background: linear-gradient(180deg, #1a1a2e, #0e0e1a); border-radius:8% 8% 0 0; box-shadow:0 0 20px rgba(255,255,255,0.05); animation: sh-house 12s ease-in-out infinite; }
.scn-satis-house-reappearance .gate        { position:absolute; bottom:20%; left:20%; width:5%; height:30%; background: #2a2a3e; animation: sh-gate 8s ease-in-out infinite; }
.scn-satis-house-reappearance .figure      { position:absolute; bottom:18%; left:45%; width:7%; height:25%; background: linear-gradient(180deg, #1a1a2a, #0a0a1a); border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%; animation: sh-figure 5s ease-in-out infinite; }
.scn-satis-house-reappearance .window-light{ position:absolute; bottom:40%; left:40%; width:5%; height:6%; background: radial-gradient(circle, #ffe080, #b08040); box-shadow:0 0 20px 5px rgba(255,224,128,0.5); animation: sh-window 4s ease-in-out infinite alternate; }
.scn-satis-house-reappearance .shadow-long { position:absolute; bottom:10%; left:30%; width:50%; height:15%; background: linear-gradient(180deg, rgba(0,0,0,0.3), transparent); animation: sh-shadow 15s ease-in-out infinite; }
@keyframes sh-sky    { 0% { opacity:0.7 } 50% { opacity:1 } 100% { opacity:0.8 } }
@keyframes sh-moon   { 0% { transform:translateX(0) } 50% { transform:translateX(-10px) } 100% { transform:translateX(0) } }
@keyframes sh-house  { 0% { transform:scaleY(1) translateY(0) } 50% { transform:scaleY(1.02) translateY(-2px) } 100% { transform:scaleY(1) translateY(0) } }
@keyframes sh-gate   { 0% { transform:rotateY(0deg) } 50% { transform:rotateY(-20deg) } 100% { transform:rotateY(0deg) } }
@keyframes sh-figure { 0% { transform:translateX(0) } 50% { transform:translateX(10px) } 100% { transform:translateX(0) } }
@keyframes sh-window { 0% { opacity:0.6; box-shadow:0 0 10px 3px rgba(255,224,128,0.3) } 50% { opacity:1; box-shadow:0 0 30px 10px rgba(255,224,128,0.8) } 100% { opacity:0.7; box-shadow:0 0 15px 5px rgba(255,224,128,0.4) } }
@keyframes sh-shadow { 0% { opacity:0.3 } 50% { opacity:0.6 } 100% { opacity:0.4 } }

/* after-fire-bandages — dark dim interior */
.scn-after-fire-bandages { background: linear-gradient(180deg, #0f0a06 0%, #1a0f08 50%, #0a0502 100%), radial-gradient(ellipse at 50% 60%, #2a1a0e 0%, transparent 70%); }
.scn-after-fire-bandages .bg-dark        { position:absolute; inset:0; background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,0.3) 50%, transparent 100%); animation: af-bg 15s ease-in-out infinite alternate; }
.scn-after-fire-bandages .table          { position:absolute; bottom:20%; left:20%; width:60%; height:8%; background: linear-gradient(180deg, #4a3a2a, #2a1a10); border-radius:4px; }
.scn-after-fire-bandages .candle         { position:absolute; bottom:25%; left:35%; width:3%; height:12%; background: linear-gradient(180deg, #fff5e0 0%, #e8d4b0 50%, #8a6a4a 100%); border-radius:2px 2px 0 0; box-shadow:0 -4px 8px 2px rgba(255,245,224,0.3); animation: af-candle 6s ease-in-out infinite alternate; }
.scn-after-fire-bandages .hand-bandaged  { position:absolute; bottom:22%; left:40%; width:10%; height:6%; background: #f0e0c0; border-radius:50%; box-shadow:inset 0 2px 4px rgba(0,0,0,0.3); animation: af-hand 4s ease-in-out infinite; }
.scn-after-fire-bandages .figure-outline{ position:absolute; bottom:18%; left:35%; width:20%; height:30%; background: linear-gradient(180deg, #1a1a1a, #0a0a0a); border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%; opacity:0.5; animation: af-figure 8s ease-in-out infinite; }
.scn-after-fire-bandages .shadow         { position:absolute; bottom:10%; left:20%; width:60%; height:15%; background: linear-gradient(180deg, rgba(0,0,0,0.5), transparent); animation: af-shadow 12s ease-in-out infinite; }
@keyframes af-bg     { 0% { opacity:0.5 } 50% { opacity:0.8 } 100% { opacity:0.6 } }
@keyframes af-candle { 0% { transform:scaleY(1) scaleX(1); opacity:0.9; box-shadow:0 -4px 8px 2px rgba(255,245,224,0.3) } 50% { transform:scaleY(1.1) scaleX(0.9); opacity:1; box-shadow:0 -4px 12px 4px rgba(255,245,224,0.4) } 100% { transform:scaleY(0.9) scaleX(1.1); opacity:0.8; box-shadow:0 -4px 6px 1px rgba(255,245,224,0.2) } }
@keyframes af-hand   { 0% { transform:translateY(0) rotate(0deg) } 50% { transform:translateY(-2px) rotate(5deg) } 100% { transform:translateY(0) rotate(-3deg) } }
@keyframes af-figure { 0% { transform:translateY(0) } 50% { transform:translateY(-2px) } 100% { transform:translateY(0) } }
@keyframes af-shadow { 0% { opacity:0.3 } 50% { opacity:0.6 } 100% { opacity:0.4 } }

.scn-trabb-tailors-shop {
  background: linear-gradient(135deg, #f0e6d0 0%, #d4c0a0 100%), radial-gradient(ellipse at 30% 20%, #fffbe6 0%, transparent 50%);
}
.scn-trabb-tailors-shop .tts-wall   { position:absolute; inset:0 0 40% 0; background: linear-gradient(0deg, #c8b898, #a09070); }
.scn-trabb-tailors-shop .tts-floor  { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(0deg, #8b7a5a, #6a5a3a); }
.scn-trabb-tailors-shop .tts-window { position:absolute; top:20%; left:15%; width:40%; height:30%; background: radial-gradient(circle, #fffbe6, #f0e6d0); border:2px solid #8b7a5a; border-radius:4px; animation: tts-windowglow 1.5s ease-in-out infinite alternate; box-shadow: 0 0 20px 10px rgba(255,255,230,0.3); }
.scn-trabb-tailors-shop .tts-counter{ position:absolute; bottom:25%; left:5%; width:30%; height:20%; background: linear-gradient(0deg, #5a4a3a, #3a2a1a); border-radius:4px; }
.scn-trabb-tailors-shop .tts-figure { position:absolute; bottom:25%; left:25%; width:15%; height:50%; background: linear-gradient(180deg, #2a2a2a, #1a1a1a); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: tts-bow 1.2s ease-in-out infinite alternate; }
.scn-trabb-tailors-shop .tts-cloth  { position:absolute; bottom:25%; left:10%; width:20%; height:15%; background: linear-gradient(180deg, #b8a090, #8a7a6a); border-radius: 30% 30% 10% 10%; animation: tts-cloth 2s ease-in-out infinite alternate; }
.scn-trabb-tailors-shop .tts-shadow { position:absolute; bottom:0; left:20%; width:20%; height:5%; background: rgba(0,0,0,0.3); filter: blur(2px); animation: tts-shadow 1.2s ease-in-out infinite alternate; }

@keyframes tts-windowglow { 0% { opacity:0.8; box-shadow:0 0 20px 10px rgba(255,255,230,0.3) } 50% { opacity:1; box-shadow:0 0 40px 20px rgba(255,255,230,0.6) } 100% { opacity:0.8; box-shadow:0 0 20px 10px rgba(255,255,230,0.3) } }
@keyframes tts-bow { 0% { transform: rotate(0deg) translateY(0) } 50% { transform: rotate(-15deg) translateY(-10px) } 100% { transform: rotate(0deg) translateY(0) } }
@keyframes tts-shadow { 0% { transform: translateX(0) scaleX(1) } 50% { transform: translateX(10px) scaleX(0.8) } 100% { transform: translateX(0) scaleX(1) } }
@keyframes tts-cloth { 0% { transform: rotate(-2deg) } 50% { transform: rotate(2deg) } 100% { transform: rotate(-2deg) } }

.scn-pumblechook-congratulation {
  background: linear-gradient(180deg, #f9e3b0 0%, #e8c88a 100%), radial-gradient(ellipse at 50% 30%, #fff5d0 0%, transparent 60%);
}
.scn-pumblechook-congratulation .pch-wall   { position:absolute; inset:0 0 30% 0; background: #d4b078; }
.scn-pumblechook-congratulation .pch-floor  { position:absolute; bottom:0; left:0; right:0; height:30%; background: #b0885a; }
.scn-pumblechook-congratulation .pch-mantel { position:absolute; top:20%; left:10%; width:80%; height:15%; background: #5a3a2a; box-shadow: 0 4px 8px rgba(0,0,0,0.3); border-radius: 4px; }
.scn-pumblechook-congratulation .pch-table  { position:absolute; bottom:15%; left:20%; width:60%; height:20%; background: #6a4a3a; border-radius: 4px; animation: pch-table 4s ease-in-out infinite alternate; }
.scn-pumblechook-congratulation .pch-figure { position:absolute; bottom:25%; left:30%; width:20%; height:50%; background: #3a2a1a; border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: pch-bow 3s ease-in-out infinite alternate; }
.scn-pumblechook-congratulation .pch-hand   { position:absolute; bottom:35%; left:45%; width:8%; height:20%; background: #2a1a0a; border-radius: 40% 40% 20% 20%; transform-origin: bottom; animation: pch-hand 3s ease-in-out infinite alternate; }
.scn-pumblechook-congratulation .pch-glow   { position:absolute; top:10%; left:40%; width:20%; height:30%; background: radial-gradient(circle, rgba(255,240,180,0.8), transparent); animation: pch-glow 4s ease-in-out infinite alternate; }

@keyframes pch-bow { 0% { transform: rotate(0deg) } 50% { transform: rotate(5deg) } 100% { transform: rotate(0deg) } }
@keyframes pch-hand { 0% { transform: rotate(-10deg) } 50% { transform: rotate(10deg) } 100% { transform: rotate(-10deg) } }
@keyframes pch-glow { 0% { opacity:0.7 } 50% { opacity:1 } 100% { opacity:0.7 } }
@keyframes pch-table { 0% { transform: scale(1) } 50% { transform: scale(1.01) } 100% { transform: scale(1) } }

.scn-miss-havisham-goodbye {
  background: linear-gradient(180deg, #1a0a0a 0%, #2a1a1a 40%, #3a2a2a 100%), radial-gradient(ellipse at 50% 80%, #4a3a3a 0%, transparent 70%);
}
.scn-miss-havisham-goodbye .mhg-wall         { position:absolute; inset:0 0 50% 0; background: linear-gradient(0deg, #2a1a1a, #1a0a0a); }
.scn-miss-havisham-goodbye .mhg-floor        { position:absolute; bottom:0; left:0; right:0; height:50%; background: #1a0a0a; }
.scn-miss-havisham-goodbye .mhg-table        { position:absolute; bottom:15%; left:10%; width:80%; height:20%; background: #3a2a2a; border-radius:4px; }
.scn-miss-havisham-goodbye .mhg-candle       { position:absolute; top:30%; left:40%; width:5%; height:15%; background: linear-gradient(180deg, #ffd080, #b08040); box-shadow: 0 0 10px 5px rgba(255,208,128,0.5); border-radius: 2px; animation: mhg-candle 1s ease-in-out infinite alternate; }
.scn-miss-havisham-goodbye .mhg-figure-miss  { position:absolute; bottom:20%; left:40%; width:15%; height:60%; background: linear-gradient(180deg, #8a7a6a, #5a4a3a); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: mhg-sway 6s ease-in-out infinite alternate; }
.scn-miss-havisham-goodbye .mhg-figure-pip   { position:absolute; bottom:15%; right:15%; width:10%; height:40%; background: #1a1a2a; border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: mhg-figurepip 2s ease-in-out infinite alternate; }
.scn-miss-havisham-goodbye .mhg-web          { position:absolute; top:10%; left:5%; width:20%; height:20%; border: 1px solid rgba(200,200,200,0.2); border-radius: 50%; animation: mhg-web 8s ease-in-out infinite alternate; }

@keyframes mhg-candle { 0% { box-shadow: 0 0 10px 5px rgba(255,208,128,0.5); opacity:0.8 } 50% { box-shadow: 0 0 20px 10px rgba(255,208,128,0.8); opacity:1 } 100% { box-shadow: 0 0 10px 5px rgba(255,208,128,0.5); opacity:0.8 } }
@keyframes mhg-sway { 0% { transform: rotate(-2deg) } 50% { transform: rotate(2deg) } 100% { transform: rotate(-2deg) } }
@keyframes mhg-web { 0% { transform: scale(1) rotate(0) } 50% { transform: scale(1.05) rotate(5deg) } 100% { transform: scale(1) rotate(0) } }
@keyframes mhg-figurepip { 0% { transform: translateX(0) } 50% { transform: translateX(-5px) } 100% { transform: translateX(0) } }

.scn-departure-from-home {
  background: linear-gradient(180deg, #8ab4d0 0%, #f0c8a0 100%), radial-gradient(ellipse at 80% 20%, #fff8e0 0%, transparent 60%);
}
.scn-departure-from-home .dfh-wall    { position:absolute; inset:0 0 50% 0; background: linear-gradient(0deg, #d4c0a0, #f0e6d0); }
.scn-departure-from-home .dfh-window  { position:absolute; top:10%; left:10%; width:30%; height:40%; background: #8ab4d0; border: 4px solid #b09070; border-radius:4px; }
.scn-departure-from-home .dfh-table   { position:absolute; bottom:10%; left:20%; width:60%; height:20%; background: #b09070; border-radius:4px; }
.scn-departure-from-home .dfh-pip     { position:absolute; bottom:25%; left:30%; width:12%; height:45%; background: #3a2a2a; border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: dfh-pip 4s ease-in-out infinite alternate; }
.scn-departure-from-home .dfh-sister  { position:absolute; bottom:25%; right:30%; width:14%; height:40%; background: #4a3a3a; border-radius: 50% 50% 40% 40% / 50% 50% 30% 30%; animation: dfh-sister 3s ease-in-out infinite alternate; }
.scn-departure-from-home .dfh-plate   { position:absolute; bottom:15%; left:35%; width:8%; height:6%; background: #d4c0a0; border-radius:50%; box-shadow: inset 0 0 0 0 rgba(0,0,0,0); animation: dfh-plate 2s ease-in-out infinite alternate; }
.scn-departure-from-home .dfh-sunbeam { position:absolute; top:5%; left:5%; width:40%; height:100%; background: linear-gradient(135deg, rgba(255,230,180,0.6), transparent); transform-origin: top left; animation: dfh-sunbeam 8s ease-in-out infinite alternate; }

@keyframes dfh-sunbeam { 0% { transform: translateX(0) skewX(-10deg) } 50% { transform: translateX(10px) skewX(-5deg) } 100% { transform: translateX(0) skewX(-10deg) } }
@keyframes dfh-sister { 0% { transform: rotate(0deg) } 50% { transform: rotate(3deg) } 100% { transform: rotate(0deg) } }
@keyframes dfh-pip { 0% { transform: translateX(0) } 50% { transform: translateX(-10px) } 100% { transform: translateX(0) } }
@keyframes dfh-plate { 0% { box-shadow: inset 0 0 0 0 rgba(0,0,0,0); opacity:0.9 } 50% { box-shadow: inset 0 0 10px 2px rgba(0,0,0,0.1); opacity:1 } 100% { box-shadow: inset 0 0 0 0 rgba(0,0,0,0); opacity:0.9 } }

.scn-end-of-schooling { background: linear-gradient(180deg, #fdf5e6 0%, #fff8dc 50%, #f0e68c 100%), radial-gradient(ellipse at 50% 20%, #fff9e6 0%, transparent 60%); }
.scn-end-of-schooling .room-bg { position:absolute; inset:0; background:linear-gradient(135deg, rgba(255,248,220,.3) 0%, transparent 70%); }
.scn-end-of-schooling .window { position:absolute; top:8%; left:50%; width:100px; height:130px; transform:translateX(-50%); background:linear-gradient(180deg, #b0d4f1 0%, #d4e8f7 100%); border:6px solid #8b7355; border-radius:4px; box-shadow: inset 0 0 20px rgba(255,255,255,.5), 0 0 30px rgba(255,248,220,.4); animation: es-window-glow 6s ease-in-out infinite alternate; }
.scn-end-of-schooling .desk { position:absolute; bottom:15%; left:25%; width:160px; height:40px; background:linear-gradient(180deg, #c4a882 0%, #a0845c 100%); border-radius:4px; box-shadow:0 4px 8px rgba(0,0,0,.2); }
.scn-end-of-schooling .books { position:absolute; bottom:30%; left:30%; width:40px; height:60px; background:linear-gradient(180deg, #6b3a2a 0%, #4a2518 100%); border-radius:2px; box-shadow: 2px 0 0 #5a2a1a; animation: es-books-bob 7s ease-in-out infinite; }
.scn-end-of-schooling .chair { position:absolute; bottom:15%; right:30%; width:50px; height:70px; background:linear-gradient(180deg, #8b6f47 0%, #6b5434 100%); border-radius:4px 4px 0 0; transform-origin: bottom center; animation: es-chair-creak 10s ease-in-out infinite; }
.scn-end-of-schooling .figure { position:absolute; bottom:20%; left:45%; width:30px; height:80px; background:linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; animation: es-figure-sway 4s ease-in-out infinite; }
.scn-end-of-schooling .light-ray { position:absolute; top:15%; left:43%; width:120px; height:200px; background: linear-gradient(135deg, rgba(255,255,240,.4) 0%, transparent 100%); transform: rotate(-20deg); transform-origin: top left; animation: es-light-sway 8s ease-in-out infinite alternate; }
@keyframes es-window-glow { 0%,100% { box-shadow: inset 0 0 20px rgba(255,255,255,.5), 0 0 30px rgba(255,248,220,.4); } 50% { box-shadow: inset 0 0 40px rgba(255,255,255,.7), 0 0 60px rgba(255,248,220,.6); } }
@keyframes es-books-bob { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-3px); } }
@keyframes es-chair-creak { 0%,100% { transform: rotate(0); } 50% { transform: rotate(2deg); } }
@keyframes es-figure-sway { 0%,100% { transform: translateY(0) rotate(0); } 50% { transform: translateY(-2px) rotate(1deg); } }
@keyframes es-light-sway { 0% { transform: rotate(-22deg); } 100% { transform: rotate(-18deg); } }

.scn-thoughts-of-miss-havisham { background: linear-gradient(180deg, #b0c4d8 0%, #8a9eb0 50%, #6b7b8a 100%), radial-gradient(ellipse at 50% 80%, #7a8a9a 0%, transparent 70%); }
.scn-thoughts-of-miss-havisham .overcast-sky { position:absolute; inset:0; background:linear-gradient(180deg, rgba(255,255,255,.1) 0%, transparent 100%); }
.scn-thoughts-of-miss-havisham .earthwork { position:absolute; bottom:0; left:0; right:0; height:30%; background:linear-gradient(180deg, #5a6a4a 0%, #3a4a2a 100%); border-radius: 50% 50% 0 0 / 100% 100% 0 0; }
.scn-thoughts-of-miss-havisham .pip-figure { position:absolute; bottom:20%; left:40%; width:40px; height:20px; background:#2a3a2a; border-radius:50%; transform: rotate(10deg); animation: tm-pip-breathe 6s ease-in-out infinite; }
.scn-thoughts-of-miss-havisham .ghost-havisham { position:absolute; top:10%; left:25%; width:60px; height:90px; background:radial-gradient(circle, rgba(200,180,160,.3) 0%, transparent 70%); filter: blur(10px); animation: tm-ghost-fade 8s ease-in-out infinite alternate; }
.scn-thoughts-of-miss-havisham .ghost-estella { position:absolute; top:15%; right:20%; width:50px; height:80px; background:radial-gradient(circle, rgba(200,180,160,.25) 0%, transparent 70%); filter: blur(10px); animation: tm-ghost-fade 8s ease-in-out infinite alternate reverse; animation-delay: -4s; }
.scn-thoughts-of-miss-havisham .clouds { position:absolute; top:5%; left:0; width:200px; height:30px; background:linear-gradient(180deg, rgba(255,255,255,.4) 0%, transparent 100%); filter: blur(6px); animation: tm-cloud-drift 40s linear infinite; }
.scn-thoughts-of-miss-havisham .pipe-smoke { position:absolute; bottom:25%; left:42%; width:20px; height:30px; background:radial-gradient(circle, rgba(200,200,200,.3) 0%, transparent 100%); filter: blur(4px); animation: tm-smoke-rise 5s ease-out infinite; }
@keyframes tm-pip-breathe { 0%,100% { transform: scale(1) rotate(10deg); } 50% { transform: scale(1.02) rotate(9deg); } }
@keyframes tm-ghost-fade { 0% { opacity:0.3; } 50% { opacity:0.6; } 100% { opacity:0.2; } }
@keyframes tm-cloud-drift { 0% { transform: translateX(-100px); } 100% { transform: translateX(100vw); } }
@keyframes tm-smoke-rise { 0% { transform: translateY(0) scale(1); opacity:0.8; } 100% { transform: translateY(-50px) scale(2); opacity:0; } }

.scn-orlick-half-holiday { background: linear-gradient(180deg, #3a2a1a 0%, #5a3a1a 50%, #7a4a1a 100%), radial-gradient(ellipse at 50% 100%, #9a5a2a 0%, transparent 60%); }
.scn-orlick-half-holiday .forge-glare { position:absolute; bottom:0; left:20%; right:20%; height:40%; background:radial-gradient(ellipse at 50% 100%, #c0723a 0%, #8a4a1a 60%, transparent 100%); animation: oh-glare-pulse 4s ease-in-out infinite alternate; }
.scn-orlick-half-holiday .anvil { position:absolute; bottom:15%; left:30%; width:80px; height:30px; background:linear-gradient(180deg, #3a3a3a 0%, #1a1a1a 100%); border-radius: 10% 10% 20% 20%; }
.scn-orlick-half-holiday .hammer { position:absolute; bottom:25%; left:35%; width:10px; height:50px; background:#5a4a3a; transform-origin: bottom center; transform: rotate(-30deg); animation: oh-hammer-swing 3s ease-in-out infinite; }
.scn-orlick-half-holiday .orlick-figure { position:absolute; bottom:10%; left:20%; width:60px; height:120px; background:linear-gradient(180deg, #2a1a0a 0%, #0a0a0a 100%); border-radius:40% 40% 30% 30% / 50% 50% 30% 30%; animation: oh-orlick-lunge 2s ease-in-out infinite; }
.scn-orlick-half-holiday .pip-figure { position:absolute; bottom:12%; right:25%; width:40px; height:80px; background:linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius:40% 40% 30% 30% / 50% 50% 30% 30%; animation: oh-pip-flinch 1.5s ease-in-out infinite; }
.scn-orlick-half-holiday .sparks { position:absolute; bottom:30%; left:50%; width:8px; height:8px; background:radial-gradient(circle, #ffd080 0%, transparent 80%); border-radius:50%; animation: oh-sparks 0.5s steps(2) infinite; box-shadow: 10px -10px 0 #ffd080, -10px -5px 0 #ffc060, 15px -15px 0 #ffb040; }
.scn-orlick-half-holiday .chain { position:absolute; bottom:45%; left:25%; width:20px; height:30px; border: 3px solid #6a5a4a; border-radius:50%; animation: oh-chain-rattle 3s ease-in-out infinite; }
@keyframes oh-glare-pulse { 0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.6; } }
@keyframes oh-hammer-swing { 0% { transform: rotate(-40deg); } 50% { transform: rotate(10deg); } 100% { transform: rotate(-40deg); } }
@keyframes oh-orlick-lunge { 0%,100% { transform: translateX(0) rotate(0); } 25% { transform: translateX(10px) rotate(3deg); } 75% { transform: translateX(-5px) rotate(-2deg); } }
@keyframes oh-pip-flinch { 0%,100% { transform: scale(1) translateX(0); } 50% { transform: scale(0.95) translateX(5px); } }
@keyframes oh-sparks { 0% { opacity:1; } 100% { opacity:0; } }
@keyframes oh-chain-rattle { 0%,100% { transform: rotate(0); } 25% { transform: rotate(5deg); } 75% { transform: rotate(-5deg); } }

.scn-orlick-abuse-mrs-joe { background: linear-gradient(135deg, #1a1a1a 0%, #2a1a0a 40%, #4a3a2a 70%, #1a1a1a 100%), radial-gradient(ellipse at 30% 50%, #c8a060 0%, transparent 50%); }
.scn-orlick-abuse-mrs-joe .room-shadow { position:absolute; inset:0; background:linear-gradient(135deg, rgba(0,0,0,.6) 0%, transparent 50%, rgba(0,0,0,.2) 100%); animation: oa-shadow-pulse 8s ease-in-out infinite alternate; }
.scn-orlick-abuse-mrs-joe .table { position:absolute; bottom:10%; left:20%; right:20%; height:20px; background:linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius:4px; }
.scn-orlick-abuse-mrs-joe .mrs-joe { position:absolute; bottom:15%; left:30%; width:40px; height:70px; background:linear-gradient(180deg, #5a3a2a 0%, #3a1a0a 100%); border-radius:40% 40% 30% 30% / 50% 50% 30% 30%; transform: rotate(10deg); animation: oa-mrs-tremble 0.8s ease-in-out infinite; }
.scn-orlick-abuse-mrs-joe .orlick-figure { position:absolute; bottom:10%; left:55%; width:70px; height:130px; background:linear-gradient(180deg, #2a1a0a 0%, #0a0a0a 100%); border-radius:40% 40% 30% 30% / 50% 50% 30% 30%; animation: oa-orlick-lurch 2s ease-in-out infinite; }
.scn-orlick-abuse-mrs-joe .joe-figure { position:absolute; bottom:12%; left:15%; width:50px; height:90px; background:linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius:40% 40% 30% 30% / 50% 50% 30% 30%; animation: oa-joe-reach 3s ease-in-out infinite; }
.scn-orlick-abuse-mrs-joe .lamp { position:absolute; top:20%; left:10%; width:15px; height:25px; background:radial-gradient(circle, #ffd080 0%, #c08040 80%); border-radius:50% 50% 20% 20%; box-shadow: 0 0 40px 10px #c08040; animation: oa-lamp-flicker 0.5s steps(2) infinite; }
.scn-orlick-abuse-mrs-joe .shadow-stripe { position:absolute; inset:0; background:linear-gradient(135deg, transparent 40%, rgba(0,0,0,.5) 40%, rgba(0,0,0,.5) 45%, transparent 45%); animation: oa-stripe-move 10s linear infinite; }
@keyframes oa-shadow-pulse { 0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.6; } }
@keyframes oa-mrs-tremble { 0%,100% { transform: translateX(0) rotate(10deg); } 25% { transform: translateX(2px) rotate(8deg); } 75% { transform: translateX(-2px) rotate(12deg); } }
@keyframes oa-orlick-lurch { 0%,100% { transform: translateX(0) rotate(0); } 30% { transform: translateX(-10px) rotate(5deg); } 70% { transform: translateX(5px) rotate(-3deg); } }
@keyframes oa-joe-reach { 0%,100% { transform: translateX(0); } 50% { transform: translateX(10px); } }
@keyframes oa-lamp-flicker { 0% { opacity:1; } 100% { opacity:0.7; } }
@keyframes oa-stripe-move { 0% { background-position: 0% 0%; } 100% { background-position: 100% 100%; } }

/* conversation-with-biddy */
.scn-conversation-with-biddy { background: linear-gradient(180deg, #f5e6d0 0%, #d9b89a 30%, #c49a7a 100%), radial-gradient(ellipse at 50% 0%, #fff8f0 0%, transparent 60%); }
.scn-conversation-with-biddy .bg-wall { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #e8d5b0 0%, #d4b896 100%); animation: cwb-wall 12s ease-in-out infinite alternate; }
.scn-conversation-with-biddy .bg-floor { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #b0896a 0%, #8c6e4d 100%); animation: cwb-floor 20s ease-in-out infinite alternate; }
.scn-conversation-with-biddy .window-light { position:absolute; top:10%; left:70%; width:80px; height:100px; background: radial-gradient(ellipse at center, #fffbe6 0%, #f0d9b5 60%, transparent 80%); border-radius:10px; animation: cwb-glow 4s ease-in-out infinite alternate; }
.scn-conversation-with-biddy .figure-left { position:absolute; bottom:20%; left:25%; width:30px; height:80px; background: linear-gradient(180deg, #6b4a3a 0%, #3a2a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: cwb-breathe 5s ease-in-out infinite; }
.scn-conversation-with-biddy .figure-right { position:absolute; bottom:20%; right:25%; width:30px; height:80px; background: linear-gradient(180deg, #7a5a4a 0%, #4a3a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: cwb-breathe 5s ease-in-out infinite reverse; }
.scn-conversation-with-biddy .table { position:absolute; bottom:20%; left:50%; width:60px; height:20px; transform:translateX(-50%); background: linear-gradient(180deg, #a08060 0%, #806040 100%); border-radius:4px; animation: cwb-table 10s ease-in-out infinite; }
.scn-conversation-with-biddy .book { position:absolute; bottom:20%; left:48%; width:20px; height:12px; transform:translate(-50%, -10px); background: #c4a65a; border-radius:2px; animation: cwb-turn 8s ease-in-out infinite; }
@keyframes cwb-wall { 0% { opacity:.9 } 50% { opacity:1 } 100% { opacity:.92 } }
@keyframes cwb-floor { 0% { opacity:.85 } 50% { opacity:.95 } 100% { opacity:.85 } }
@keyframes cwb-glow { 0% { opacity:.6; transform: scale(1) } 50% { opacity:1; transform: scale(1.05) } 100% { opacity:.7; transform: scale(1) } }
@keyframes cwb-breathe { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes cwb-table { 0% { transform: translateX(-50%) } 50% { transform: translateX(-50%) translateY(1px) } 100% { transform: translateX(-50%) } }
@keyframes cwb-turn { 0% { transform: translate(-50%, -10px) rotate(0deg) } 50% { transform: translate(-50%, -10px) rotate(5deg) } 100% { transform: translate(-50%, -10px) rotate(0deg) } }

/* meeting-orlick-on-road */
.scn-meeting-orlick-on-road { background: linear-gradient(180deg, #1a2a3a 0%, #2c4050 30%, #4a5a6a 100%), radial-gradient(ellipse at 50% 80%, #2c4050 0%, transparent 80%); }
.scn-meeting-orlick-on-road .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #3a4a5a 0%, #1a2a3a 100%); animation: mor-dusk 15s ease-in-out infinite alternate; }
.scn-meeting-orlick-on-road .road { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, #4a4a3a 0%, #2a2a1a 100%); animation: mor-road 30s linear infinite; }
.scn-meeting-orlick-on-road .figure-left { position:absolute; bottom:20%; left:30%; width:25px; height:70px; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: mor-walk 3s ease-in-out infinite; }
.scn-meeting-orlick-on-road .figure-right { position:absolute; bottom:20%; right:30%; width:25px; height:70px; background: linear-gradient(180deg, #3a2a3a 0%, #2a1a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: mor-walk 3s ease-in-out infinite reverse; }
.scn-meeting-orlick-on-road .figure-behind { position:absolute; bottom:25%; left:50%; width:35px; height:90px; transform:translateX(-50%); background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: mor-loom 6s ease-in-out infinite; }
.scn-meeting-orlick-on-road .tree-a { position:absolute; bottom:0; left:10%; width:20px; height:100px; background: linear-gradient(180deg, #2a3a2a 0%, #1a2a1a 100%); border-radius: 50% 50% 0 0 / 60% 60% 0 0; animation: mor-sway 10s ease-in-out infinite; }
.scn-meeting-orlick-on-road .tree-b { position:absolute; bottom:0; right:15%; width:30px; height:120px; background: linear-gradient(180deg, #2a3a2a 0%, #1a2a1a 100%); border-radius: 50% 50% 0 0 / 60% 60% 0 0; animation: mor-sway 12s ease-in-out infinite alternate; }
.scn-meeting-orlick-on-road .lantern { position:absolute; bottom:30%; right:25%; width:8px; height:12px; background: radial-gradient(circle, #c0a060 0%, transparent 80%); box-shadow: 0 0 20px 5px rgba(192,160,96,.5); animation: mor-flicker 1s steps(4) infinite; }
@keyframes mor-dusk { 0% { opacity:.7 } 50% { opacity:.9 } 100% { opacity:.8 } }
@keyframes mor-road { 0% { opacity:.6 } 50% { opacity:.8 } 100% { opacity:.6 } }
@keyframes mor-walk { 0% { transform: translateY(0) rotate(-2deg) } 25% { transform: translateY(-2px) rotate(3deg) } 50% { transform: translateY(0) rotate(-2deg) } 75% { transform: translateY(-2px) rotate(3deg) } 100% { transform: translateY(0) rotate(-2deg) } }
@keyframes mor-loom { 0% { transform: translateX(-50%) scale(1) } 50% { transform: translateX(-50%) scale(1.05) } 100% { transform: translateX(-50%) scale(1) } }
@keyframes mor-sway { 0% { transform: rotate(-2deg) } 50% { transform: rotate(2deg) } 100% { transform: rotate(-2deg) } }
@keyframes mor-flicker { 0% { opacity:.5; transform: scale(1) } 25% { opacity:.8; transform: scale(1.1) } 50% { opacity:.6; transform: scale(.9) } 75% { opacity:.9; transform: scale(1.05) } 100% { opacity:.5; transform: scale(1) } }

/* saturday-night-at-jolly-bargemen */
.scn-saturday-night-at-jolly-bargemen { background: linear-gradient(180deg, #2a1a0a 0%, #4a2a1a 50%, #6a3a2a 100%), radial-gradient(ellipse at 50% 80%, #6a3a2a 0%, transparent 80%); }
.scn-saturday-night-at-jolly-bargemen .wall { position:absolute; inset:0 0 25% 0; background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%); animation: jol-wall 20s ease-in-out infinite alternate; }
.scn-saturday-night-at-jolly-bargemen .floor { position:absolute; bottom:0; left:0; right:0; height:25%; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); animation: jol-floor 25s ease-in-out infinite alternate; }
.scn-saturday-night-at-jolly-bargemen .fireplace { position:absolute; bottom:30%; left:50%; width:80px; height:100px; transform:translateX(-50%); background: radial-gradient(ellipse at 50% 0%, #c06020 0%, #8a3a1a 60%, #2a0a00 100%); border-radius: 10% 10% 20% 20%; box-shadow: 0 -20px 40px #c06020; animation: jol-fire 3s ease-in-out infinite alternate; }
.scn-saturday-night-at-jolly-bargemen .figure-reader { position:absolute; bottom:25%; left:30%; width:30px; height:80px; background: linear-gradient(180deg, #4a2a1a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: jol-read 5s ease-in-out infinite; }
.scn-saturday-night-at-jolly-bargemen .figure-pip { position:absolute; bottom:25%; right:30%; width:28px; height:76px; background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: jol-listen 6s ease-in-out infinite; }
.scn-saturday-night-at-jolly-bargemen .figure-other { position:absolute; bottom:25%; left:55%; width:28px; height:76px; background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: jol-listen 6s ease-in-out infinite reverse; }
.scn-saturday-night-at-jolly-bargemen .table { position:absolute; bottom:25%; left:40%; width:50px; height:15px; background: linear-gradient(180deg, #5a3a2a 0%, #3a1a0a 100%); border-radius:4px; animation: jol-table 12s ease-in-out infinite; }
.scn-saturday-night-at-jolly-bargemen .newspaper { position:absolute; bottom:25%; left:42%; width:30px; height:20px; background: #b09870; border-radius:2px; transform: rotate(-5deg); animation: jol-paper 8s ease-in-out infinite alternate; }
.scn-saturday-night-at-jolly-bargemen .tankard { position:absolute; bottom:25%; left:35%; width:10px; height:15px; background: #a08060; border-radius: 0 0 4px 4px; animation: jol-sway 4s ease-in-out infinite; }
@keyframes jol-wall { 0% { opacity:.9 } 50% { opacity:1 } 100% { opacity:.9 } }
@keyframes jol-floor { 0% { opacity:.85 } 50% { opacity:.95 } 100% { opacity:.85 } }
@keyframes jol-fire { 0% { transform: translateX(-50%) scaleY(1); opacity:.7 } 50% { transform: translateX(-50%) scaleY(1.1); opacity:1 } 100% { transform: translateX(-50%) scaleY(1); opacity:.8 } }
@keyframes jol-read { 0% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(-2px) rotate(1deg) } 100% { transform: translateY(0) rotate(0deg) } }
@keyframes jol-listen { 0% { transform: translateY(0) } 50% { transform: translateY(-1px) } 100% { transform: translateY(0) } }
@keyframes jol-table { 0% { transform: translateX(0) } 50% { transform: translateX(1px) } 100% { transform: translateX(0) } }
@keyframes jol-paper { 0% { transform: rotate(-5deg) } 50% { transform: rotate(2deg) } 100% { transform: rotate(-5deg) } }
@keyframes jol-sway { 0% { transform: rotate(-3deg) } 50% { transform: rotate(3deg) } 100% { transform: rotate(-3deg) } }

/* stranger-interrupts */
.scn-stranger-interrupts { background: linear-gradient(180deg, #1a0a00 0%, #3a1a0a 40%, #5a2a1a 100%), radial-gradient(ellipse at 50% 70%, #5a2a1a 0%, transparent 80%); }
.scn-stranger-interrupts .wall { position:absolute; inset:0 0 25% 0; background: linear-gradient(180deg, #3a1a0a 0%, #1a0a00 100%); animation: str-wall 15s ease-in-out infinite alternate; }
.scn-stranger-interrupts .floor { position:absolute; bottom:0; left:0; right:0; height:25%; background: linear-gradient(180deg, #4a2a1a 0%, #1a0a00 100%); animation: str-floor 20s ease-in-out infinite alternate; }
.scn-stranger-interrupts .fireplace { position:absolute; bottom:30%; left:50%; width:80px; height:100px; transform:translateX(-50%); background: radial-gradient(ellipse at 50% 0%, #c05020 0%, #7a2a1a 60%, #1a0000 100%); border-radius: 10% 10% 20% 20%; box-shadow: 0 -20px 40px #c05020; animation: str-fire 3s ease-in-out infinite alternate; }
.scn-stranger-interrupts .figure-stranger { position:absolute; bottom:20%; left:50%; width:40px; height:100px; transform:translateX(-60%); background: linear-gradient(180deg, #2a1a0a 0%, #0a0000 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: str-loom 2s ease-in-out infinite alternate; }
.scn-stranger-interrupts .figure-wopsle { position:absolute; bottom:20%; left:30%; width:30px; height:80px; background: linear-gradient(180deg, #4a2a1a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: str-flinch 3s ease-in-out infinite; }
.scn-stranger-interrupts .figure-pip { position:absolute; bottom:25%; right:20%; width:25px; height:70px; background: linear-gradient(180deg, #3a1a0a 0%, #1a0a00 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: str-watch 5s ease-in-out infinite alternate; }
.scn-stranger-interrupts .table { position:absolute; bottom:20%; left:40%; width:40px; height:12px; background: linear-gradient(180deg, #5a3a2a 0%, #3a1a0a 100%); border-radius:4px; animation: str-table 10s ease-in-out infinite; }
.scn-stranger-interrupts .arm { position:absolute; bottom:30%; left:45%; width:50px; height:6px; background: #2a1a0a; border-radius: 0 10px 10px 0; transform: rotate(-20deg); transform-origin: left center; animation: str-point 1.5s ease-in-out infinite; }
@keyframes str-wall { 0% { opacity:.9 } 50% { opacity:1 } 100% { opacity:.9 } }
@keyframes str-floor { 0% { opacity:.85 } 50% { opacity:.95 } 100% { opacity:.85 } }
@keyframes str-fire { 0% { transform: translateX(-50%) scaleY(1); opacity:.7 } 50% { transform: translateX(-50%) scaleY(1.15); opacity:1 } 100% { transform: translateX(-50%) scaleY(1); opacity:.8 } }
@keyframes str-loom { 0% { transform: translateX(-60%) scale(1) } 50% { transform: translateX(-60%) scale(1.08) } 100% { transform: translateX(-60%) scale(1) } }
@keyframes str-flinch { 0% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(-3px) rotate(-2deg) } 100% { transform: translateY(0) rotate(0deg) } }
@keyframes str-watch { 0% { transform: translateY(0) } 50% { transform: translateY(-1px) } 100% { transform: translateY(0) } }
@keyframes str-table { 0% { transform: translateX(0) } 50% { transform: translateX(1px) } 100% { transform: translateX(0) } }
@keyframes str-point { 0% { transform: rotate(-20deg) } 50% { transform: rotate(-30deg) } 100% { transform: rotate(-20deg) } }

.scn-sunday-walworth-castle {
  background: linear-gradient(180deg, #87CEEB 0%, #f0d060 100%), radial-gradient(circle at 80% 20%, #ffd700 0%, transparent 70%);
}
.scn-sunday-walworth-castle .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #b8d4e8 0%, transparent 100%); animation: sc1-sky 12s ease-in-out infinite alternate; }
.scn-sunday-walworth-castle .castle { position:absolute; bottom:20%; left:10%; right:10%; height:30%; background: linear-gradient(180deg, #8b7355 0%, #6b5335 100%); border-radius:5% 5% 0 0; box-shadow: inset 0 -10px 20px rgba(0,0,0,0.3); animation: sc1-castle 8s ease-in-out infinite; }
.scn-sunday-walworth-castle .drawbridge { position:absolute; bottom:30%; left:45%; width:10%; height:15%; background: linear-gradient(180deg, #6b5335 0%, #4a3a1a 100%); border-radius:0 0 10% 10%; transform: translateX(-50%) rotate(-10deg); transform-origin: bottom left; animation: sc1-drawbridge 10s ease-in-out infinite; }
.scn-sunday-walworth-castle .flag { position:absolute; top:15%; right:20%; width:8px; height:12px; background: linear-gradient(180deg, #6b8e23 0%, #4a5e1a 100%); border-radius:0 50% 50% 0; transform-origin: left center; animation: sc1-flag 2s ease-in-out infinite; }
.scn-sunday-walworth-castle .moat { position:absolute; bottom:0; left:0; right:0; height:12%; background: linear-gradient(180deg, #4a6b8e 0%, #2a4a6e 100%); animation: sc1-moat 4s ease-in-out infinite alternate; }
.scn-sunday-walworth-castle .cloud1,
.scn-sunday-walworth-castle .cloud2 { position:absolute; top:10%; left:10%; width:80px; height:20px; background: rgba(255,255,255,0.4); border-radius:50%; filter:blur(8px); animation: sc1-cloud 30s linear infinite; }
.scn-sunday-walworth-castle .cloud2 { top:20%; left:70%; width:60px; height:15px; animation-duration:40s; animation-direction:reverse; }
@keyframes sc1-sky { 0%{opacity:0.8}50%{opacity:1}100%{opacity:0.7} }
@keyframes sc1-castle { 0%{transform:scale(1)}50%{transform:scale(1.01) translateY(-1px)}100%{transform:scale(1)} }
@keyframes sc1-drawbridge { 0%{transform:translateX(-50%) rotate(-10deg)}50%{transform:translateX(-50%) rotate(-8deg)}100%{transform:translateX(-50%) rotate(-10deg)} }
@keyframes sc1-flag { 0%{transform:rotate(-20deg)}50%{transform:rotate(20deg)}100%{transform:rotate(-20deg)} }
@keyframes sc1-moat { 0%{transform:translateY(0)}50%{transform:translateY(2px)}100%{transform:translateY(0)} }
@keyframes sc1-cloud { 0%{transform:translateX(-100px)}50%{transform:translateX(calc(50vw - 100px))}100%{transform:translateX(100vw)} }

.scn-walworth-aged-welcome {
  background: linear-gradient(180deg, #2a1a0a 0%, #4a2a1a 100%), radial-gradient(circle at 20% 60%, #ff7f50 0%, transparent 60%);
}
.scn-walworth-aged-welcome .bg-wall { position:absolute; inset:0; background:linear-gradient(90deg, #3a2a1a 0%, #5a3a2a 100%); opacity:0.5; animation:sc2-wall 20s ease-in-out infinite; }
.scn-walworth-aged-welcome .fireplace { position:absolute; bottom:20%; left:30%; width:40%; height:40%; background:linear-gradient(180deg, #6b4a3a 0%, #4a2a1a 100%); border-radius:20% 20% 0 0; box-shadow:inset 0 -20px 30px rgba(0,0,0,0.5); }
.scn-walworth-aged-welcome .fireglow { position:absolute; bottom:20%; left:35%; width:30%; height:30%; background:radial-gradient(circle, #ff7f50 0%, #d2691e 30%, transparent 70%); animation:sc2-fire 1.5s ease-in-out infinite alternate; }
.scn-walworth-aged-welcome .aged { position:absolute; bottom:25%; left:28%; width:12%; height:30%; background:linear-gradient(180deg, #2a2a2a 0%, #1a1a1a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin:bottom center; animation:sc2-aged 6s ease-in-out infinite; }
.scn-walworth-aged-welcome .chair { position:absolute; bottom:22%; left:25%; width:18%; height:20%; background:linear-gradient(180deg, #5a3a2a 0%, #3a1a0a 100%); border-radius:10% 10% 40% 40%; transform-origin:bottom; animation:sc2-chair 10s ease-in-out infinite; }
.scn-walworth-aged-welcome .hearth { position:absolute; bottom:15%; left:32%; width:36%; height:10%; background:linear-gradient(180deg, #6b4a3a 0%, #4a2a1a 100%); border-radius:20% 20% 0 0; }
@keyframes sc2-wall { 0%{opacity:0.4}50%{opacity:0.6}100%{opacity:0.4} }
@keyframes sc2-fire { 0%{opacity:0.7;transform:scale(1)}50%{opacity:1;transform:scale(1.1)}100%{opacity:0.8;transform:scale(0.95)} }
@keyframes sc2-aged { 0%{transform:translateY(0) rotate(0deg)}50%{transform:translateY(-2px) rotate(2deg)}100%{transform:translateY(0) rotate(-1deg)} }
@keyframes sc2-chair { 0%{transform:rotate(0deg)}50%{transform:rotate(-3deg)}100%{transform:rotate(1deg)} }

.scn-walworth-wemmick-salute {
  background: linear-gradient(180deg, #87CEEB 0%, #f0d060 100%), radial-gradient(circle at 80% 20%, #ffd700 0%, transparent 70%);
}
.scn-walworth-wemmick-salute .sky { position:absolute; inset:0 0 40% 0; background:linear-gradient(180deg, #b8d4e8 0%, transparent 100%); animation:sc3-sky 12s ease-in-out infinite alternate; }
.scn-walworth-wemmick-salute .castle-bg { position:absolute; bottom:20%; left:5%; right:5%; height:30%; background:linear-gradient(180deg, #8b7355 0%, #6b5335 100%); border-radius:5% 5% 0 0; animation:sc3-castle 8s ease-in-out infinite; }
.scn-walworth-wemmick-salute .moat { position:absolute; bottom:0; left:0; right:0; height:10%; background:linear-gradient(180deg, #4a6b8e 0%, #2a4a6e 100%); animation:sc3-moat 4s ease-in-out infinite alternate; }
.scn-walworth-wemmick-salute .drawbridge-up { position:absolute; bottom:28%; left:45%; width:10%; height:18%; background:linear-gradient(180deg, #6b5335 0%, #4a3a1a 100%); border-radius:0 0 10% 10%; transform-origin:bottom left; transform:translateX(-50%) rotate(-15deg); animation:sc3-drawbridge 10s ease-in-out infinite; }
.scn-walworth-wemmick-salute .wemmick-body { position:absolute; bottom:18%; left:30%; width:10%; height:28%; background:linear-gradient(180deg, #2a2a2a 0%, #1a1a1a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin:bottom center; animation:sc3-body 4s ease-in-out infinite; }
.scn-walworth-wemmick-salute .wemmick-arm { position:absolute; bottom:35%; left:32%; width:4%; height:15%; background:linear-gradient(180deg, #2a2a2a 0%, #1a1a1a 100%); border-radius:40% 40% 20% 20%; transform-origin:bottom center; animation:sc3-arm 2s ease-in-out infinite; }
.scn-walworth-wemmick-salute .aged2 { position:absolute; bottom:18%; right:25%; width:12%; height:28%; background:linear-gradient(180deg, #2a2a2a 0%, #1a1a1a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin:bottom center; animation:sc3-aged 6s ease-in-out infinite; }
.scn-walworth-wemmick-salute .flag2 { position:absolute; top:15%; left:70%; width:8px; height:12px; background:linear-gradient(180deg, #6b8e23 0%, #4a5e1a 100%); border-radius:0 50% 50% 0; transform-origin:left center; animation:sc3-flag 2s ease-in-out infinite; }
@keyframes sc3-sky { 0%{opacity:0.8}50%{opacity:1}100%{opacity:0.7} }
@keyframes sc3-castle { 0%{transform:scale(1)}50%{transform:scale(1.01)}100%{transform:scale(1)} }
@keyframes sc3-moat { 0%{transform:translateY(0)}50%{transform:translateY(1px)}100%{transform:translateY(0)} }
@keyframes sc3-drawbridge { 0%{transform:translateX(-50%) rotate(-15deg)}50%{transform:translateX(-50%) rotate(-12deg)}100%{transform:translateX(-50%) rotate(-15deg)} }
@keyframes sc3-body { 0%{transform:translateY(0) rotate(0deg)}50%{transform:translateY(-1px) rotate(2deg)}100%{transform:translateY(0) rotate(-1deg)} }
@keyframes sc3-arm { 0%{transform:rotate(-30deg)}50%{transform:rotate(30deg)}100%{transform:rotate(-30deg)} }
@keyframes sc3-aged { 0%{transform:translateY(0) rotate(0deg)}50%{transform:translateY(-2px) rotate(-3deg)}100%{transform:translateY(0) rotate(1deg)} }
@keyframes sc3-flag { 0%{transform:rotate(-20deg)}50%{transform:rotate(20deg)}100%{transform:rotate(-20deg)} }

.scn-walworth-planning-help {
  background: linear-gradient(180deg, #2a1a0a 0%, #4a2a1a 100%), radial-gradient(circle at 30% 70%, #ff7f50 0%, transparent 60%);
}
.scn-walworth-planning-help .bg-room { position:absolute; inset:0; background:linear-gradient(90deg, #3a2a1a 0%, #5a3a2a 100%); opacity:0.4; animation:sc4-wall 20s ease-in-out infinite; }
.scn-walworth-planning-help .desk { position:absolute; bottom:15%; left:20%; right:20%; height:25%; background:linear-gradient(180deg, #6b4a3a 0%, #4a2a1a 100%); border-radius:5% 5% 0 0; box-shadow:inset 0 -10px 15px rgba(0,0,0,0.5); }
.scn-walworth-planning-help .lamp { position:absolute; bottom:30%; left:45%; width:8%; height:10%; background:radial-gradient(circle, #ffa500 0%, #d2691e 50%, transparent 80%); animation:sc4-lamp 3s ease-in-out infinite alternate; }
.scn-walworth-planning-help .wemmick3 { position:absolute; bottom:20%; left:30%; width:10%; height:28%; background:linear-gradient(180deg, #2a2a2a 0%, #1a1a1a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin:bottom center; animation:sc4-wemmick 6s ease-in-out infinite; }
.scn-walworth-planning-help .hat { position:absolute; bottom:43%; left:29%; width:12%; height:6%; background:linear-gradient(180deg, #2a2a2a 0%, #1a1a1a 100%); border-radius:50% 50% 0 0; transform-origin:bottom center; animation:sc4-hat 4s ease-in-out infinite; }
.scn-walworth-planning-help .papers { position:absolute; bottom:18%; left:35%; width:20%; height:8%; background:linear-gradient(180deg, #c0b090 0%, #a09070 100%); border-radius:5%; box-shadow:0 2px 4px rgba(0,0,0,0.3); animation:sc4-papers 8s ease-in-out infinite alternate; }
.scn-walworth-planning-help .fireglow3 { position:absolute; bottom:10%; left:40%; width:20%; height:20%; background:radial-gradient(circle, #ff7f50 0%, #d2691e 30%, transparent 70%); animation:sc4-fire 2s ease-in-out infinite alternate; }
@keyframes sc4-wall { 0%{opacity:0.3}50%{opacity:0.5}100%{opacity:0.3} }
@keyframes sc4-lamp { 0%{opacity:0.6;transform:scale(1)}50%{opacity:1;transform:scale(1.1)}100%{opacity:0.7;transform:scale(0.95)} }
@keyframes sc4-wemmick { 0%{transform:translateY(0) rotate(0deg)}50%{transform:translateY(-1px) rotate(2deg)}100%{transform:translateY(0) rotate(-1deg)} }
@keyframes sc4-hat { 0%{transform:translateY(0) rotate(-5deg)}50%{transform:translateY(-2px) rotate(5deg)}100%{transform:translateY(0) rotate(-3deg)} }
@keyframes sc4-papers { 0%{opacity:0.6}50%{opacity:1}100%{opacity:0.7} }
@keyframes sc4-fire { 0%{opacity:0.7;transform:scale(1)}50%{opacity:1;transform:scale(1.15)}100%{opacity:0.8;transform:scale(0.95)} }

/* Scene 1: wopsle-backstage */
.scn-wopsle-backstage {
  background:
    linear-gradient(180deg, #2a1f1a 0%, #3a2a1f 30%, #4a3a2a 60%, #1a1210 100%),
    radial-gradient(ellipse at 60% 40%, #c08040 0%, transparent 50%);
}
.scn-wopsle-backstage .backdrop {
  position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(20,12,8,.8) 0%, transparent 40%, rgba(10,8,6,.9) 100%);
  animation:ws-backdrop 12s ease-in-out infinite alternate;
}
.scn-wopsle-backstage .brickwall {
  position:absolute; inset:20% 10% 30% 10%;
  background:linear-gradient(90deg, #4a3a2a 0%, #5a4a3a 50%, #4a3a2a 100%),
    repeating-linear-gradient(0deg, transparent, transparent 8px, #3a2a1a 8px, #3a2a1a 9px),
    repeating-linear-gradient(90deg, transparent, transparent 12px, #3a2a1a 12px, #3a2a1a 13px);
  border-radius:4px; box-shadow:inset 0 0 30px rgba(0,0,0,.7);
}
.scn-wopsle-backstage .curtain-left {
  position:absolute; top:5%; left:0; width:25%; height:75%;
  background:linear-gradient(90deg, #703020 0%, #905040 50%, #703020 100%);
  border-radius:0 40% 40% 0 / 0 20% 20% 0; transform-origin:top left;
  animation:ws-curtain 3s ease-in-out infinite alternate;
}
.scn-wopsle-backstage .curtain-right {
  position:absolute; top:5%; right:0; width:25%; height:75%;
  background:linear-gradient(270deg, #703020 0%, #905040 50%, #703020 100%);
  border-radius:40% 0 0 40% / 20% 0 0 20%; transform-origin:top right;
  animation:ws-curtain 3s ease-in-out infinite alternate-reverse;
}
.scn-wopsle-backstage .gaslight {
  position:absolute; top:15%; left:55%; width:20px; height:30px;
  background:radial-gradient(circle at 50% 40%, #ffe080 0%, #c06020 60%, transparent 100%);
  border-radius:50% 50% 40% 40%;
  box-shadow:0 0 40px 20px rgba(255,200,80,.5), 0 0 80px 40px rgba(255,200,80,.2);
  animation:ws-light 2s ease-in-out infinite alternate;
}
.scn-wopsle-backstage .figure-wopsle {
  position:absolute; bottom:25%; left:40%; width:40px; height:70px;
  background:linear-gradient(180deg, #2a1a1a 0%, #1a1010 50%, #0a0808 100%);
  border-radius:40% 40% 30% 30% / 50% 50% 40% 40%; transform-origin:bottom center;
  animation:ws-bow 4s ease-in-out infinite;
}
.scn-wopsle-backstage .figure-wopsle::before {
  content:''; position:absolute; top:25%; left:5%; width:55%; height:40%;
  background:linear-gradient(180deg, #f0d0b0 0%, #d0b090 50%, #b09070 100%);
  border-radius:50% 50% 40% 40%;
  animation:ws-profile 4s ease-in-out infinite;
}
.scn-wopsle-backstage .figure-pip {
  position:absolute; bottom:25%; left:48%; width:30px; height:60px;
  background:linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 50%, #05050a 100%);
  border-radius:40% 40% 30% 30% / 50% 50% 40% 40%; transform-origin:bottom center;
  animation:ws-pip 5s ease-in-out infinite;
}
.scn-wopsle-backstage .shadow-wopsle {
  position:absolute; bottom:22%; left:38%; width:60px; height:20px;
  background:radial-gradient(ellipse at 50% 50%, rgba(0,0,0,.7) 0%, transparent 70%);
  border-radius:50%;
  animation:ws-shadow 4s ease-in-out infinite;
}
@keyframes ws-backdrop {
  0% { opacity:.6; } 50% { opacity:.8; } 100% { opacity:.7; }
}
@keyframes ws-curtain {
  0% { transform:scaleX(1) rotate(0deg); }
  50% { transform:scaleX(.95) rotate(2deg); }
  100% { transform:scaleX(1) rotate(-1deg); }
}
@keyframes ws-light {
  0% { box-shadow:0 0 30px 15px rgba(255,200,80,.4), 0 0 60px 30px rgba(255,200,80,.15); opacity:.8; }
  50% { box-shadow:0 0 50px 25px rgba(255,200,80,.6), 0 0 100px 50px rgba(255,200,80,.25); opacity:1; }
  100% { box-shadow:0 0 35px 18px rgba(255,200,80,.45), 0 0 70px 35px rgba(255,200,80,.2); opacity:.9; }
}
@keyframes ws-bow {
  0% { transform:translateX(0) rotate(0deg); }
  25% { transform:translateX(-2px) rotate(-5deg); }
  50% { transform:translateX(0) rotate(2deg); }
  75% { transform:translateX(2px) rotate(-3deg); }
  100% { transform:translateX(0) rotate(0deg); }
}
@keyframes ws-profile {
  0% { transform:translateX(0) scaleY(1); }
  50% { transform:translateX(2px) scaleY(.95); }
  100% { transform:translateX(0) scaleY(1); }
}
@keyframes ws-pip {
  0% { transform:translateX(0) scaleY(1); }
  50% { transform:translateX(1px) scaleY(.98); }
  100% { transform:translateX(0) scaleY(1); }
}
@keyframes ws-shadow {
  0% { transform:scaleX(1) translateX(0); opacity:.5; }
  50% { transform:scaleX(1.1) translateX(-3px); opacity:.7; }
  100% { transform:scaleX(1) translateX(0); opacity:.5; }
}

/* Scene 2: miserable-dreams */
.scn-miserable-dreams {
  background:
    linear-gradient(180deg, #0a0a1a 0%, #1a1a3a 30%, #2a1a3a 60%, #0a0a12 100%),
    radial-gradient(ellipse at 50% 80%, #2a1a3a 0%, transparent 60%);
}
.scn-miserable-dreams .dream-sky {
  position:absolute; inset:0 0 60% 0;
  background:radial-gradient(ellipse at 30% 20%, #2a2a5a 0%, transparent 60%),
    radial-gradient(ellipse at 70% 40%, #3a1a3a 0%, transparent 50%);
  animation:md-sky 15s ease-in-out infinite alternate;
}
.scn-miserable-dreams .stage-floor {
  position:absolute; bottom:0; left:-10%; right:-10%; height:65%;
  background:linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 30%, #1a1a1a 100%);
  border-radius:30% 30% 0 0 / 20% 20% 0 0;
  box-shadow:inset 0 20px 40px rgba(0,0,0,.8);
  transform:perspective(400px) rotateX(10deg);
}
.scn-miserable-dreams .ghost-figure {
  position:absolute; bottom:55%; left:50%; width:80px; height:140px;
  transform:translateX(-50%);
  background:linear-gradient(180deg, rgba(200,200,220,.3) 0%, rgba(150,150,180,.2) 50%, transparent 100%);
  border-radius:40% 40% 20% 20% / 50% 50% 30% 30%; filter:blur(2px);
  animation:md-ghost 8s ease-in-out infinite alternate;
}
.scn-miserable-dreams .pip-figure {
  position:absolute; bottom:40%; left:50%; width:20px; height:40px;
  transform:translateX(-50%);
  background:linear-gradient(180deg, #1a1a2a 0%, #0a0a12 100%);
  border-radius:40% 40% 30% 30% / 50% 50% 40% 40%;
  animation:md-pip 4s ease-in-out infinite;
}
.scn-miserable-dreams .spotlight {
  position:absolute; bottom:60%; left:35%; width:30%; height:60%;
  background:linear-gradient(180deg, rgba(200,200,220,.15) 0%, transparent 100%);
  clip-path:polygon(50% 0%, 0% 100%, 100% 100%); transform-origin:top center;
  animation:md-spot 6s ease-in-out infinite alternate;
}
.scn-miserable-dreams .fog-a {
  position:absolute; top:30%; left:0; width:120%; height:40%;
  background:linear-gradient(90deg, transparent 0%, rgba(180,180,200,.1) 30%, rgba(200,200,220,.15) 50%, rgba(180,180,200,.1) 70%, transparent 100%);
  filter:blur(10px);
  animation:md-fog 20s linear infinite;
}
.scn-miserable-dreams .fog-b {
  position:absolute; top:50%; left:-20%; width:140%; height:30%;
  background:linear-gradient(90deg, transparent 0%, rgba(160,160,180,.08) 40%, rgba(180,180,200,.12) 60%, transparent 100%);
  filter:blur(15px);
  animation:md-fog 30s linear infinite reverse;
}
@keyframes md-sky {
  0% { opacity:.7; } 50% { opacity:.9; } 100% { opacity:.8; }
}
@keyframes md-ghost {
  0% { transform:translateX(-50%) translateY(0) scale(1); opacity:.6; }
  50% { transform:translateX(-50%) translateY(-10px) scale(1.05); opacity:.8; }
  100% { transform:translateX(-50%) translateY(5px) scale(.95); opacity:.5; }
}
@keyframes md-pip {
  0% { transform:translateX(-50%) translateY(0) rotate(0deg); }
  25% { transform:translateX(-48%) translateY(-2px) rotate(5deg); }
  50% { transform:translateX(-50%) translateY(0) rotate(-5deg); }
  75% { transform:translateX(-52%) translateY(-2px) rotate(5deg); }
  100% { transform:translateX(-50%) translateY(0) rotate(0deg); }
}
@keyframes md-spot {
  0% { opacity:.3; transform:scaleX(1); }
  50% { opacity:.6; transform:scaleX(1.1); }
  100% { opacity:.4; transform:scaleX(.9); }
}
@keyframes md-fog {
  0% { transform:translateX(-10%); }
  50% { transform:translateX(10%); }
  100% { transform:translateX(-10%); }
}

/* Scene 3: estella-letter */
.scn-estella-letter {
  background:
    linear-gradient(180deg, #f5e6d0 0%, #e8d5b8 40%, #d4b896 70%, #b89a7a 100%),
    radial-gradient(ellipse at 70% 30%, #fff5e0 0%, transparent 50%);
}
.scn-estella-letter .sunbeam {
  position:absolute; top:0; right:0; width:40%; height:100%;
  background:linear-gradient(180deg, rgba(255,245,230,.4) 0%, rgba(255,245,230,.1) 50%, transparent 100%);
  clip-path:polygon(20% 0%, 100% 0%, 80% 100%, 0% 100%);
  animation:el-beam 10s ease-in-out infinite alternate;
}
.scn-estella-letter .desk-top {
  position:absolute; bottom:20%; left:10%; width:80%; height:30%;
  background:linear-gradient(180deg, #c4a882 0%, #b09070 30%, #8a6a4a 100%);
  border-radius:4px;
  box-shadow:0 8px 20px rgba(0,0,0,.3), inset 0 2px 4px rgba(255,255,255,.2);
  transform:perspective(300px) rotateX(5deg);
}
.scn-estella-letter .books-left {
  position:absolute; bottom:45%; left:15%; width:30px; height:45px;
  background:linear-gradient(180deg, #6a4a3a 0%, #5a3a2a 50%, #4a2a1a 100%);
  border-radius:2px 2px 4px 4px; box-shadow:2px 4px 8px rgba(0,0,0,.4);
  transform:rotate(-5deg);
  animation:el-book 8s ease-in-out infinite alternate;
}
.scn-estella-letter .books-right {
  position:absolute; bottom:48%; right:15%; width:25px; height:35px;
  background:linear-gradient(180deg, #4a5a3a 0%, #3a4a2a 50%, #2a3a1a 100%);
  border-radius:2px 2px 4px 4px; box-shadow:-2px 4px 8px rgba(0,0,0,.4);
  transform:rotate(5deg);
  animation:el-book 10s ease-in-out infinite alternate-reverse;
}
.scn-estella-letter .letter {
  position:absolute; bottom:30%; left:45%; width:60px; height:45px;
  background:linear-gradient(180deg, #fff5e0 0%, #f0e0c0 60%, #e0d0b0 100%);
  border-radius:2px;
  box-shadow:0 4px 12px rgba(0,0,0,.25), inset 0 0 20px rgba(255,255,255,.5);
  transform:rotate(-2deg);
  animation:el-letter 5s ease-in-out infinite alternate;
}
.scn-estella-letter .hand {
  position:absolute; bottom:32%; left:52%; width:25px; height:35px;
  background:linear-gradient(180deg, #e8d0b0 0%, #d0b090 50%, #b89070 100%);
  border-radius:40% 40% 30% 30% / 50% 50% 40% 40%; transform-origin:bottom center;
  animation:el-hand 4s ease-in-out infinite;
}
.scn-estella-letter .dust-motes {
  position:absolute; top:10%; right:20%; width:10px; height:10px;
  background:radial-gradient(circle, rgba(255,255,255,.6) 0%, transparent 70%);
  border-radius:50%;
  box-shadow:20px 40px 0 2px rgba(255,255,255,.3), -10px 60px 0 1px rgba(255,255,255,.4), 30px 80px 0 3px rgba(255,255,255,.2);
  animation:el-dust 6s ease-in-out infinite alternate;
}
@keyframes el-beam {
  0% { opacity:.5; transform:scaleX(1); }
  50% { opacity:.8; transform:scaleX(1.1); }
  100% { opacity:.6; transform:scaleX(.95); }
}
@keyframes el-book {
  0% { transform:rotate(-5deg) translateY(0); }
  50% { transform:rotate(-3deg) translateY(-2px); }
  100% { transform:rotate(-7deg) translateY(0); }
}
@keyframes el-letter {
  0% { transform:rotate(-2deg) scale(1); box-shadow:0 4px 12px rgba(0,0,0,.25); }
  50% { transform:rotate(1deg) scale(1.02); box-shadow:0 6px 20px rgba(0,0,0,.35); }
  100% { transform:rotate(-4deg) scale(1); box-shadow:0 4px 12px rgba(0,0,0,.25); }
}
@keyframes el-hand {
  0% { transform:translateX(0) translateY(0) rotate(0deg); }
  25% { transform:translateX(3px) translateY(-2px) rotate(5deg); }
  50% { transform:translateX(0) translateY(0) rotate(0deg); }
  75% { transform:translateX(-2px) translateY(-1px) rotate(-5deg); }
  100% { transform:translateX(0) translateY(0) rotate(0deg); }
}
@keyframes el-dust {
  0% { transform:translate(0, 0); opacity:.6; }
  50% { transform:translate(10px, -20px); opacity:1; }
  100% { transform:translate(-5px, 10px); opacity:.5; }
}

/* Scene 4: wemmick-newgate */
.scn-wemmick-newgate {
  background:
    linear-gradient(180deg, #1a1a14 0%, #2a2a1a 30%, #1a1a10 60%, #0a0a08 100%),
    radial-gradient(ellipse at 50% 50%, #3a3a2a 0%, transparent 60%);
}
.scn-wemmick-newgate .cell-wall {
  position:absolute; inset:0;
  background:radial-gradient(ellipse at 50% 80%, #4a4a3a 0%, transparent 70%),
    repeating-linear-gradient(0deg, transparent, transparent 15px, #2a2a1a 15px, #2a2a1a 16px),
    repeating-linear-gradient(90deg, transparent, transparent 20px, #2a2a1a 20px, #2a2a1a 21px);
  opacity:.3;
  animation:wn-wall 20s ease-in-out infinite alternate;
}
.scn-wemmick-newgate .bar-left {
  position:absolute; top:0; left:20%; width:6px; height:80%;
  background:linear-gradient(180deg, #5a5a4a 0%, #3a3a2a 50%, #5a5a4a 100%);
  box-shadow:2px 0 6px rgba(0,0,0,.5);
  animation:wn-bar 8s ease-in-out infinite alternate;
}
.scn-wemmick-newgate .bar-right {
  position:absolute; top:0; right:20%; width:6px; height:80%;
  background:linear-gradient(180deg, #5a5a4a 0%, #3a3a2a 50%, #5a5a4a 100%);
  box-shadow:-2px 0 6px rgba(0,0,0,.5);
  animation:wn-bar 8s ease-in-out infinite alternate-reverse;
}
.scn-wemmick-newgate .lantern {
  position:absolute; top:20%; left:45%; width:16px; height:24px;
  background:radial-gradient(circle at 50% 40%, #ffa040 0%, #803010 60%, transparent 100%);
  border-radius:30% 30% 20% 20%;
  box-shadow:0 0 30px 10px rgba(255,160,64,.4), 0 0 60px 20px rgba(255,160,64,.15);
  animation:wn-light 3s ease-in-out infinite alternate;
}
.scn-wemmick-newgate .wemmick-hat {
  position:absolute; bottom:35%; left:40%; width:40px; height:20px;
  background:linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%);
  border-radius:30% 30% 10% 10% / 60% 60% 20% 20%;
  box-shadow:0 -4px 8px rgba(0,0,0,.5);
  animation:wn-hat 5s ease-in-out infinite;
}
.scn-wemmick-newgate .wemmick-face {
  position:absolute; bottom:23%; left:41%; width:30px; height:30px;
  background:linear-gradient(180deg, #c0a080 0%, #a08060 50%, #806040 100%);
  border-radius:40% 40% 30% 30% / 50% 50% 40% 40%;
  clip-path:inset(0 40% 0 0);
  animation:wn-face 4s ease-in-out infinite alternate;
}
.scn-wemmick-newgate .wemmick-body {
  position:absolute; bottom:10%; left:38%; width:44px; height:50px;
  background:linear-gradient(180deg, #2a2a2a 0%, #1a1a1a 50%, #0a0a0a 100%);
  border-radius:20% 20% 30% 30% / 30% 30% 40% 40%;
  box-shadow:4px 0 8px rgba(0,0,0,.5);
  animation:wn-body 6s ease-in-out infinite;
}
.scn-wemmick-newgate .shadow-floor {
  position:absolute; bottom:5%; left:30%; width:50%; height:15%;
  background:radial-gradient(ellipse at 50% 50%, rgba(0,0,0,.8) 0%, transparent 70%);
  animation:wn-shadow 5s ease-in-out infinite alternate;
}
@keyframes wn-wall {
  0% { opacity:.2; } 50% { opacity:.4; } 100% { opacity:.3; }
}
@keyframes wn-bar {
  0% { transform:scaleY(1); opacity:.7; }
  50% { transform:scaleY(1.05); opacity:.9; }
  100% { transform:scaleY(1); opacity:.7; }
}
@keyframes wn-light {
  0% { box-shadow:0 0 20px 8px rgba(255,160,64,.3), 0 0 40px 15px rgba(255,160,64,.1); opacity:.7; }
  50% { box-shadow:0 0 40px 15px rgba(255,160,64,.5), 0 0 80px 30px rgba(255,160,64,.2); opacity:1; }
  100% { box-shadow:0 0 25px 10px rgba(255,160,64,.35), 0 0 50px 20px rgba(255,160,64,.15); opacity:.8; }
}
@keyframes wn-hat {
  0% { transform:translateX(0) translateY(0) rotate(0deg); }
  50% { transform:translateX(2px) translateY(-2px) rotate(2deg); }
  100% { transform:translateX(0) translateY(0) rotate(0deg); }
}
@keyframes wn-face {
  0% { transform:translateX(0) translateY(0); }
  50% { transform:translateX(1px) translateY(-1px); }
  100% { transform:translateX(0) translateY(0); }
}
@keyframes wn-body {
  0% { transform:translateX(0) translateY(0) rotate(0deg); }
  50% { transform:translateX(1px) translateY(-2px) rotate(1deg); }
  100% { transform:translateX(0) translateY(0) rotate(0deg); }
}
@keyframes wn-shadow {
  0% { transform:scaleX(1); opacity:.5; }
  50% { transform:scaleX(1.1); opacity:.7; }
  100% { transform:scaleX(1); opacity:.6; }
}
/* end per-scene blocks */

/* auto-stub: parent tag-classes flagged by CSS audit */
.card { position: absolute; pointer-events: none; }
.cloud { position: absolute; pointer-events: none; }
.sack { position: absolute; pointer-events: none; }
.scn { position: absolute; pointer-events: none; }

/* ============ tier A ============ */
/* per-scene blocks (EXP step_scenes) */
.scn-education-ends { background: linear-gradient(180deg, #3a2a1a 0%, #2a1e12 40%, #1a1008 100%), radial-gradient(ellipse at 50% 100%, #4a3a2a 0%, transparent 70%); }
.scn-education-ends .wall { position:absolute; inset:0 0 45% 0; background: linear-gradient(180deg, #4a3a2a 0%, #3a2a1a 100%); box-shadow: inset 0 0 60px rgba(0,0,0,.3); }
.scn-education-ends .floor { position:absolute; bottom:0; left:0; right:0; height:45%; background: linear-gradient(0deg, #1a1008 0%, #2a1e12 100%); }
.scn-education-ends .table { position:absolute; bottom:25%; left:30%; width:50%; height:12%; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius:4px; box-shadow: 0 4px 8px rgba(0,0,0,.5); }
.scn-education-ends .book { position:absolute; bottom:30%; left:40%; width:14%; height:10%; background: #6a5a4a; border-radius:2px; transform: rotate(-5deg); box-shadow: 0 2px 6px rgba(0,0,0,.4); animation: ed-book 8s ease-in-out infinite; }
.scn-education-ends .candle { position:absolute; bottom:27%; left:55%; width:6px; height:16%; background: linear-gradient(180deg, #d0b080 0%, #a08060 100%); border-radius:2px; box-shadow: 0 0 20px 6px #ffd080; animation: ed-candle 3s ease-in-out infinite; }
.scn-education-ends .figure-biddy { position:absolute; bottom:24%; left:50%; width:14%; height:28%; background: linear-gradient(180deg, #3a2a1a 0%, #1a0e08 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ed-biddy 6s ease-in-out infinite; }
.scn-education-ends .dust-mote-a { position:absolute; top:30%; left:20%; width:8px; height:8px; background: rgba(200,180,160,.15); border-radius:50%; filter: blur(3px); animation: ed-dust-a 15s linear infinite; }
.scn-education-ends .dust-mote-b { position:absolute; top:50%; left:60%; width:6px; height:6px; background: rgba(200,180,160,.1); border-radius:50%; filter: blur(2px); animation: ed-dust-b 20s linear infinite; }

@keyframes ed-book { 0%,100% { transform: rotate(-5deg) translateY(0); } 50% { transform: rotate(-3deg) translateY(-2px); } }
@keyframes ed-candle { 0%,100% { box-shadow: 0 0 18px 4px #ffd080; opacity: .9; } 50% { box-shadow: 0 0 30px 10px #ffd680; opacity: 1; } }
@keyframes ed-biddy { 0%,100% { transform: translateX(0) rotate(0); } 50% { transform: translateX(3px) rotate(1deg); } }
@keyframes ed-dust-a { 0% { opacity:0; transform: translateY(0) scale(1); } 10% { opacity:.3; } 90% { opacity:.2; } 100% { opacity:0; transform: translateY(-60px) scale(0.5); } }
@keyframes ed-dust-b { 0% { opacity:0; transform: translateY(0) scale(0.8); } 15% { opacity:.2; } 85% { opacity:.15; } 100% { opacity:0; transform: translateY(-80px) scale(0.3); } }

.scn-visit-debate { background: linear-gradient(180deg, #1a0e08 0%, #2a1a0e 30%, #3a2a12 60%, #4a3a1a 100%), radial-gradient(ellipse at 50% 80%, #c08040 0%, transparent 60%); }
.scn-visit-debate .hearth { position:absolute; bottom:10%; left:50%; width:60%; height:40%; transform:translateX(-50%); background: radial-gradient(ellipse at 50% 100%, #503020 0%, #1a0e08 100%); border-radius:50% 50% 0 0; }
.scn-visit-debate .fire-glow { position:absolute; bottom:15%; left:45%; width:10%; height:15%; background: radial-gradient(ellipse, #ffa040 0%, #ff6030 40%, transparent 70%); box-shadow: 0 0 60px 20px rgba(255,160,64,.5); animation: vd-fire 2s ease-in-out infinite alternate; }
.scn-visit-debate .mantel { position:absolute; bottom:38%; left:30%; right:30%; height:6%; background: linear-gradient(180deg, #6a4a2a 0%, #4a2a12 100%); border-radius:4px 4px 0 0; box-shadow: 0 -4px 8px rgba(0,0,0,.4); }
.scn-visit-debate .chair-left { position:absolute; bottom:22%; left:20%; width:18%; height:20%; background: #3a2a12; border-radius:20% 20% 10% 10%; box-shadow: 0 4px 12px rgba(0,0,0,.5); }
.scn-visit-debate .figure-pip { position:absolute; bottom:18%; left:30%; width:12%; height:28%; background: linear-gradient(180deg, #2a1e12 0%, #1a0e08 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: vd-pip 5s ease-in-out infinite; }
.scn-visit-debate .figure-joe { position:absolute; bottom:20%; left:55%; width:14%; height:30%; background: linear-gradient(180deg, #3a2a1a 0%, #1a0e08 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: vd-joe 5s ease-in-out infinite .5s; }
.scn-visit-debate .shadow-bank { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(0deg, rgba(0,0,0,.6) 0%, transparent 100%); }
.scn-visit-debate .spark-a { position:absolute; bottom:20%; left:48%; width:4px; height:4px; background: #ffd080; border-radius:50%; box-shadow: 0 0 6px 2px #ffa040; animation: vd-spark 3s linear infinite; }
.scn-visit-debate .spark-b { position:absolute; bottom:25%; left:52%; width:3px; height:3px; background: #ffb060; border-radius:50%; box-shadow: 0 0 4px 2px #ff9030; animation: vd-spark 3.5s linear infinite .7s; }

@keyframes vd-fire { 0% { opacity:.8; transform: scale(1) translateY(0); } 50% { opacity:.95; transform: scale(1.05) translateY(-2px); } 100% { opacity:.85; transform: scale(.98) translateY(0); } }
@keyframes vd-pip { 0%,100% { transform: translateX(0) rotate(0); } 50% { transform: translateX(4px) rotate(2deg); } }
@keyframes vd-joe { 0%,100% { transform: translateX(0) rotate(0); } 50% { transform: translateX(-3px) rotate(-1deg); } }
@keyframes vd-spark { 0% { opacity:1; transform: translateY(0) scale(1); } 100% { opacity:0; transform: translateY(-80px) scale(0); } }

.scn-orlick-demands { background: linear-gradient(180deg, #1a0e08 0%, #2a1a12 40%, #3a2218 100%), radial-gradient(ellipse at 50% 60%, #a05030 0%, transparent 70%); }
.scn-orlick-demands .furnace { position:absolute; bottom:0; left:20%; right:20%; height:50%; background: radial-gradient(ellipse at 50% 100%, #4a2a1a 0%, #1a0e08 100%); border-radius:40% 40% 0 0; }
.scn-orlick-demands .orlick-body { position:absolute; bottom:20%; left:50%; width:18%; height:40%; background: linear-gradient(180deg, #3a2218 0%, #1a0e08 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform: translateX(-50%); transform-origin: bottom center; animation: od-body 4s ease-in-out infinite; }
.scn-orlick-demands .orlick-arm { position:absolute; bottom:38%; left:44%; width:10%; height:14%; background: #2a1a12; border-radius:30% 30% 20% 20%; transform: rotate(20deg); transform-origin: top left; animation: od-arm 2s ease-in-out infinite; }
.scn-orlick-demands .tool { position:absolute; bottom:42%; left:38%; width:6%; height:10%; background: #4a3a2a; border-radius:10%; transform: rotate(30deg); animation: od-tool 2s ease-in-out infinite .3s; }
.scn-orlick-demands .shadow-sharp { position:absolute; bottom:0; left:0; right:0; height:25%; background: linear-gradient(0deg, rgba(0,0,0,.8) 0%, transparent 100%); }
.scn-orlick-demands .ember-a { position:absolute; bottom:10%; left:40%; width:5px; height:5px; background: #ff6030; border-radius:50%; box-shadow: 0 0 8px 2px #ff4010; animation: od-ember 2s ease-in-out infinite; }
.scn-orlick-demands .ember-b { position:absolute; bottom:15%; left:55%; width:4px; height:4px; background: #ff8030; border-radius:50%; box-shadow: 0 0 6px 2px #ff6010; animation: od-ember 2.4s ease-in-out infinite .5s; }

@keyframes od-body { 0%,100% { transform: translateX(-50%) rotate(0); } 50% { transform: translateX(-50%) rotate(-2deg); } }
@keyframes od-arm { 0%,100% { transform: rotate(20deg); } 50% { transform: rotate(10deg); } }
@keyframes od-tool { 0%,100% { transform: rotate(30deg); } 50% { transform: rotate(40deg); } }
@keyframes od-ember { 0%,100% { opacity:.6; transform: translateY(0) scale(1); } 50% { opacity:1; transform: translateY(-6px) scale(1.3); } }

.scn-orlick-angry { background: linear-gradient(180deg, #1a0e08 0%, #2a1a0e 30%, #3a2212 60%, #4a2a18 100%), radial-gradient(ellipse at 50% 70%, #b06030 0%, transparent 60%); }
.scn-orlick-angry .room-back { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #2a1a0e 0%, #1a0e08 100%); box-shadow: inset 0 0 80px rgba(0,0,0,.5); }
.scn-orlick-angry .joe-figure { position:absolute; bottom:15%; left:20%; width:14%; height:30%; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0e 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: oa-joe 5s ease-in-out infinite; }
.scn-orlick-angry .orlick-figure { position:absolute; bottom:15%; left:55%; width:16%; height:35%; background: linear-gradient(180deg, #3a2218 0%, #1a0e08 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: oa-orlick 4s ease-in-out infinite; }
.scn-orlick-angry .bottle { position:absolute; bottom:25%; left:70%; width:4%; height:12%; background: #5a4a3a; border-radius:10%; transform: rotate(-10deg); box-shadow: 0 2px 4px rgba(0,0,0,.4); animation: oa-bottle 3s ease-in-out infinite; }
.scn-orlick-angry .fire-lick { position:absolute; bottom:10%; left:50%; width:8%; height:12%; background: radial-gradient(ellipse, #ff8030 0%, #ff5010 40%, transparent 70%); box-shadow: 0 0 40px 10px rgba(255,80,16,.4); animation: oa-fire 1.5s ease-in-out infinite alternate; }
.scn-orlick-angry .anger-haze { position:absolute; bottom:0; left:0; right:0; height:20%; background: linear-gradient(0deg, rgba(0,0,0,.7) 0%, transparent 100%); }

@keyframes oa-joe { 0%,100% { transform: translateX(0) rotate(0); } 50% { transform: translateX(-3px) rotate(1deg); } }
@keyframes oa-orlick { 0%,100% { transform: translateX(0) rotate(0); } 50% { transform: translateX(5px) rotate(-2deg); } }
@keyframes oa-bottle { 0%,100% { transform: rotate(-10deg) translateY(0); } 50% { transform: rotate(-15deg) translateY(-2px); } }
@keyframes oa-fire { 0% { opacity:.8; transform: scaleY(1); } 50% { opacity:1; transform: scaleY(1.2); } 100% { opacity:.85; transform: scaleY(.9); } }

.scn-hulks-explained { background: linear-gradient(180deg, #2a1a0a 0%, #4a2a10 40%, #6a3a18 70%, #2a1a0a 100%), radial-gradient(ellipse at 50% 30%, #8a4a20 0%, transparent 60%); }
.scn-hulks-explained .fireplace { position:absolute; bottom:10%; left:22%; width:56%; height:50%; background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%); border-radius:8% 8% 2% 2%; box-shadow: inset 0 -8px 12px rgba(0,0,0,.7); }
.scn-hulks-explained .mantel   { position:absolute; bottom:60%; left:18%; width:64%; height:8%; background: linear-gradient(180deg, #5a3a1a 0%, #3a2a0a 100%); border-radius:4px; box-shadow: 0 4px 8px rgba(0,0,0,.5); }
.scn-hulks-explained .flame-1  { position:absolute; bottom:15%; left:35%; width:8%; height:12%; background: radial-gradient(ellipse at 50% 100%, #c8553d 0%, #8a4020 40%, #4a2010 100%); border-radius:50% 50% 0 0; animation: he-flame1 1.2s ease-in-out infinite alternate; transform-origin: bottom center; }
.scn-hulks-explained .flame-2  { position:absolute; bottom:17%; left:48%; width:6%; height:14%; background: radial-gradient(ellipse at 50% 100%, #d06030 0%, #a04820 35%, #502010 100%); border-radius:50% 50% 0 0; animation: he-flame2 1.8s ease-in-out infinite alternate; transform-origin: bottom center; }
.scn-hulks-explained .sister-figure { position:absolute; bottom:20%; right:20%; width:15%; height:45%; background: linear-gradient(180deg, #2a1a0a 0%, #1a0a00 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform: rotate(10deg); animation: he-sister 8s ease-in-out infinite; }
.scn-hulks-explained .chair    { position:absolute; bottom:14%; right:22%; width:14%; height:20%; background: linear-gradient(180deg, #4a2a10 0%, #2a1a08 100%); border-radius:20% 20% 10% 10%; box-shadow: 2px 4px 6px rgba(0,0,0,.5); }
.scn-hulks-explained .window-night { position:absolute; top:8%; left:10%; width:30%; height:40%; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border:4px solid #2a1a0a; border-radius:4px; box-shadow: inset 0 0 20px rgba(0,0,0,.6); }
.scn-hulks-explained .ember   { position:absolute; bottom:12%; left:42%; width:2%; height:2%; background: radial-gradient(circle, #ff8040 0%, transparent 100%); border-radius:50%; animation: he-ember 2s ease-in-out infinite; filter: blur(2px); }
@keyframes he-flame1  { 0% { transform: scaleY(1) rotate(-2deg); opacity:.9 } 50% { transform: scaleY(1.3) rotate(2deg); opacity:1 } 100% { transform: scaleY(.9) rotate(-3deg); opacity:.8 } }
@keyframes he-flame2  { 0% { transform: scaleY(1.2) rotate(3deg); opacity:.85 } 50% { transform: scaleY(.8) rotate(-2deg); opacity:1 } 100% { transform: scaleY(1.1) rotate(1deg); opacity:.9 } }
@keyframes he-sister  { 0%,100% { transform: rotate(10deg) translateY(0) } 50% { transform: rotate(8deg) translateY(-2px) } }
@keyframes he-ember   { 0% { transform: translateY(0) scale(1); opacity:.7 } 50% { transform: translateY(-8px) scale(1.5); opacity:1 } 100% { transform: translateY(2px) scale(.8); opacity:.5 } }

.scn-stealing-the-file { background: linear-gradient(180deg, #1a1210 0%, #2a1e18 40%, #1a1210 100%), radial-gradient(ellipse at 60% 50%, #2a1e18 0%, transparent 70%); }
.scn-stealing-the-file .door { position:absolute; left:15%; bottom:5%; width:35%; height:85%; background: linear-gradient(90deg, #3a2a1a 0%, #4a3a2a 40%, #3a2a1a 100%); border-radius:4% 0 0 4%; border-right: 4px solid #1a1008; box-shadow: 4px 0 12px rgba(0,0,0,.7); }
.scn-stealing-the-file .figure-boy { position:absolute; bottom:10%; right:15%; width:12%; height:35%; background: linear-gradient(180deg, #1a1208 0%, #0a0804 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform: rotate(-5deg); animation: sf-boy 6s ease-in-out infinite; }
.scn-stealing-the-file .table  { position:absolute; bottom:5%; right:20%; width:25%; height:12%; background: linear-gradient(180deg, #4a3018 0%, #2a1a0a 100%); border-radius:4px; box-shadow: 0 4px 8px rgba(0,0,0,.6); }
.scn-stealing-the-file .file  { position:absolute; bottom:12%; right:25%; width:10%; height:6%; background: linear-gradient(180deg, #6a4a2a 0%, #4a3018 100%); border-radius:2px; transform: rotate(15deg); animation: sf-file 4s ease-in-out infinite; }
.scn-stealing-the-file .candle { position:absolute; bottom:12%; right:22%; width:3%; height:10%; background: linear-gradient(180deg, #e8d0a0 0%, #b09060 100%); border-radius:2px; transform: rotate(8deg); }
.scn-stealing-the-file .candle-glow { position:absolute; bottom:12%; right:22%; width:10%; height:15%; background: radial-gradient(ellipse, #e0b070 0%, transparent 100%); filter: blur(6px); animation: sf-glow 3s ease-in-out infinite alternate; }
.scn-stealing-the-file .wall-timber { position:absolute; top:0; left:0; width:100%; height:12%; background: repeating-linear-gradient(90deg, #2a1a0a 0px, #2a1a0a 8px, #3a2a1a 8px, #3a2a1a 16px); opacity:.6; }
@keyframes sf-boy  { 0%,100% { transform: rotate(-5deg) translateY(0) } 50% { transform: rotate(-3deg) translateY(-2px) } }
@keyframes sf-file { 0% { transform: rotate(15deg) scale(1); opacity:.9 } 50% { transform: rotate(12deg) scale(1.05); opacity:1 } 100% { transform: rotate(14deg) scale(.95); opacity:.8 } }
@keyframes sf-glow { 0% { opacity:.5; transform: scale(1) } 50% { opacity:.9; transform: scale(1.2) } 100% { opacity:.6; transform: scale(.9) } }

.scn-item-file { background: linear-gradient(180deg, #8a9a9a 0%, #b0c0c0 30%, #a0b0b0 60%, #809090 100%), radial-gradient(ellipse at 50% 40%, #c0d0d0 0%, transparent 60%); }
.scn-item-file .window-frame { position:absolute; top:5%; left:10%; width:60%; height:80%; border: 6px solid #4a5a5a; border-radius:6px; background: transparent; }
.scn-item-file .window-glass { position:absolute; top:5%; left:10%; width:60%; height:80%; background: linear-gradient(180deg, #c8d8d8 0%, #a8b8b8 100%); opacity:.5; animation: if-glass 10s ease-in-out infinite; }
.scn-item-file .mist-outside { position:absolute; top:5%; left:10%; width:60%; height:80%; background: radial-gradient(ellipse at 30% 50%, #e0e8e8 0%, transparent 60%); filter: blur(10px); animation: if-mist 15s linear infinite; }
.scn-item-file .hedge { position:absolute; bottom:8%; left:12%; width:40%; height:10%; background: linear-gradient(180deg, #5a6a4a 0%, #3a4a2a 100%); border-radius:60% 40% 30% 30% / 60% 40% 40% 40%; box-shadow: 0 -4px 8px rgba(0,0,0,.3); }
.scn-item-file .grass  { position:absolute; bottom:2%; left:10%; width:80%; height:10%; background: repeating-linear-gradient(90deg, #5a6a4a 0px, #5a6a4a 10px, #6a7a5a 10px, #6a7a5a 20px); border-radius:50% 50% 0 0; opacity:.7; }
.scn-item-file .rimy-droplet { position:absolute; top:15%; left:15%; width:3%; height:4%; background: radial-gradient(circle, #ffffff 0%, #d0e0e0 100%); border-radius:50%; animation: if-droplet 4s ease-in-out infinite; filter: blur(1px); }
.scn-item-file .sill  { position:absolute; bottom:5%; left:10%; width:60%; height:4%; background: linear-gradient(180deg, #6a7a7a 0%, #4a5a5a 100%); border-radius:2px; }
@keyframes if-glass { 0% { opacity:.4 } 50% { opacity:.6 } 100% { opacity:.45 } }
@keyframes if-mist  { 0% { transform: translateX(-10px) scale(1) } 50% { transform: translateX(10px) scale(1.05) } 100% { transform: translateX(-15px) scale(.95) } }
@keyframes if-droplet { 0% { transform: translateY(0) scale(1); opacity:.9 } 50% { transform: translateY(20px) scale(1.5); opacity:.5 } 100% { transform: translateY(0) scale(1); opacity:0 } }

.scn-meeting-again { background: linear-gradient(180deg, #2a2e32 0%, #1a1e22 40%, #0a0e12 100%), radial-gradient(ellipse at 50% 60%, #3a3e42 0%, transparent 70%); }
.scn-meeting-again .sky-overcast { position:absolute; top:0; left:0; width:100%; height:60%; background: linear-gradient(180deg, #4a4e52 0%, #2a2e32 100%); animation: ma-sky 20s ease-in-out infinite; }
.scn-meeting-again .figure-young-man { position:absolute; bottom:15%; left:35%; width:16%; height:50%; background: linear-gradient(180deg, #1a1a1e 0%, #0a0a0e 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform: rotate(8deg); animation: ma-figure 6s ease-in-out infinite; }
.scn-meeting-again .bottle { position:absolute; bottom:20%; left:48%; width:6%; height:14%; background: linear-gradient(180deg, #5a4a2a 0%, #3a2a12 100%); border-radius:30% 30% 20% 20% / 40% 40% 20% 20%; transform: rotate(-20deg); box-shadow: 2px 4px 6px rgba(0,0,0,.5); animation: ma-bottle 8s ease-in-out infinite; }
.scn-meeting-again .table-top { position:absolute; bottom:10%; left:20%; width:60%; height:8%; background: linear-gradient(180deg, #3a3030 0%, #1a1a1a 100%); border-radius:6px; box-shadow: 0 4px 8px rgba(0,0,0,.6); }
.scn-meeting-again .shadow-ground { position:absolute; bottom:0; left:0; width:100%; height:12%; background: linear-gradient(180deg, transparent 0%, #0a0a0e 100%); opacity:.8; }
.scn-meeting-again .mug { position:absolute; bottom:14%; left:55%; width:8%; height:10%; background: linear-gradient(180deg, #4a4040 0%, #2a2020 100%); border-radius:10% 10% 8% 8%; transform: rotate(5deg); box-shadow: 0 2px 4px rgba(0,0,0,.4); }
.scn-meeting-again .lapel { position:absolute; bottom:38%; left:42%; width:6%; height:8%; background: linear-gradient(180deg, #5a5050 0%, #2a2020 100%); border-radius:2px; transform: rotate(10deg); animation: ma-lapel 4s ease-in-out infinite; }
@keyframes ma-sky   { 0% { opacity:.7 } 50% { opacity:1 } 100% { opacity:.8 } }
@keyframes ma-figure { 0%,100% { transform: rotate(8deg) translateY(0) } 50% { transform: rotate(6deg) translateY(-2px) } }
@keyframes ma-bottle { 0% { transform: rotate(-20deg) scale(1) } 50% { transform: rotate(-18deg) scale(1.03) } 100% { transform: rotate(-22deg) scale(.98) } }
@keyframes ma-lapel { 0% { transform: rotate(10deg) scaleX(1) } 50% { transform: rotate(8deg) scaleX(1.1) } 100% { transform: rotate(9deg) scaleX(.9) } }

/* ---------- lies-confessed ---------- */
.scn-lies-confessed {
  background: 
    linear-gradient(180deg, #3a1a0a 0%, #5a2a1a 30%, #2a0a00 60%, #1a0000 100%),
    radial-gradient(ellipse at 50% 70%, #ffa040 0%, transparent 60%);
}
.scn-lies-confessed .fire-bg {
  position:absolute; inset:60% 20% 40% 30%; 
  background: radial-gradient(ellipse at 50% 100%, #ff7020 0%, #ff4020 40%, transparent 70%);
  animation: lc-fire 2s ease-in-out infinite alternate;
}
.scn-lies-confessed .wall-shadow {
  position:absolute; inset:0 0 40% 0;
  background: linear-gradient(180deg, transparent 0%, #1a0a00 80%);
  animation: lc-shadow 6s ease-in-out infinite;
}
.scn-lies-confessed .hearth-glow {
  position:absolute; bottom:30%; left:20%; width:120px; height:80px;
  background: radial-gradient(ellipse at 30% 50%, #ff8030 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(10px);
  animation: lc-glowpulse 3s ease-in-out infinite alternate;
}
.scn-lies-confessed .pip-figure {
  position:absolute; bottom:25%; left:30%; width:30px; height:60px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: lc-figleft 4s ease-in-out infinite;
}
.scn-lies-confessed .joe-figure {
  position:absolute; bottom:26%; right:28%; width:40px; height:70px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 45% 45% 35% 35% / 55% 55% 35% 35%;
  transform-origin: bottom center;
  animation: lc-figright 4s ease-in-out infinite alternate;
}
.scn-lies-confessed .table {
  position:absolute; bottom:18%; left:35%; width:100px; height:12px;
  background: linear-gradient(180deg, #4a2a1a 0%, #2a1a0a 100%);
  border-radius: 4px;
  box-shadow: 0 4px 8px rgba(0,0,0,0.6);
  transform: translateX(-50%);
  animation: lc-table 8s ease-in-out infinite;
}
.scn-lies-confessed .mug-left {
  position:absolute; bottom:22%; left:38%; width:14px; height:18px;
  background: #6a4a3a;
  border-radius: 4px 4px 8px 8px;
  transform: translateX(-50%);
  animation: lc-mug 5s ease-in-out infinite;
}
.scn-lies-confessed .mug-right {
  position:absolute; bottom:21%; left:50%; width:14px; height:20px;
  background: #7a5a4a;
  border-radius: 4px 4px 8px 8px;
  box-shadow: inset 0 -4px 0 #3a2a1a;
  animation: lc-mug 5s ease-in-out infinite reverse;
}
@keyframes lc-fire {
  0% { opacity:0.8; transform:scale(1) translateY(0); }
  50% { opacity:1; transform:scale(1.05) translateY(-2px); }
  100% { opacity:0.75; transform:scale(0.98) translateY(1px); }
}
@keyframes lc-shadow {
  0%,100% { opacity:0.5; }
  50% { opacity:0.8; }
}
@keyframes lc-glowpulse {
  0% { opacity:0.6; transform:scale(1); }
  50% { opacity:0.9; transform:scale(1.1); }
  100% { opacity:0.7; transform:scale(0.95); }
}
@keyframes lc-figleft {
  0% { transform:translateX(0) rotate(1deg); }
  25% { transform:translateX(-4px) rotate(-1deg); }
  50% { transform:translateX(-2px) rotate(0deg); }
  75% { transform:translateX(-6px) rotate(2deg); }
  100% { transform:translateX(0) rotate(1deg); }
}
@keyframes lc-figright {
  0% { transform:translateX(0) rotate(-1deg); }
  50% { transform:translateX(6px) rotate(2deg); }
  100% { transform:translateX(2px) rotate(0deg); }
}
@keyframes lc-table {
  0%,100% { transform:translateX(-50%) translateY(0); }
  50% { transform:translateX(-50%) translateY(-2px); }
}
@keyframes lc-mug {
  0% { transform:translateX(-50%) rotate(-3deg); }
  50% { transform:translateX(-50%) rotate(3deg); }
  100% { transform:translateX(-50%) rotate(-3deg); }
}

/* ---------- item-biddy ---------- */
.scn-item-biddy {
  background: 
    linear-gradient(180deg, #2a2a1a 0%, #3a3a2a 40%, #1a1a0a 100%),
    radial-gradient(ellipse at 50% 30%, #c8a050 0%, transparent 60%);
}
.scn-item-biddy .wall {
  position:absolute; inset:0;
  background: repeating-linear-gradient(0deg, transparent, transparent 20px, rgba(0,0,0,0.05) 20px, rgba(0,0,0,0.05) 21px);
}
.scn-item-biddy .window-frame {
  position:absolute; top:10%; left:60%; width:60px; height:80px;
  background: #1a1a2a;
  border: 4px solid #3a2a1a;
  border-radius: 4px;
  box-shadow: inset 0 0 20px rgba(0,0,0,0.5);
}
.scn-item-biddy .candle-glow {
  position:absolute; bottom:30%; left:45%; width:30px; height:40px;
  background: radial-gradient(ellipse at 50% 100%, #ffd080 0%, #c8a050 40%, transparent 70%);
  border-radius: 50%;
  filter: blur(8px);
  animation: ib-glow 4s ease-in-out infinite alternate;
}
.scn-item-biddy .desk {
  position:absolute; bottom:20%; left:30%; width:200px; height:10px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 2px;
  box-shadow: 0 4px 12px rgba(0,0,0,0.4);
}
.scn-item-biddy .book-1 {
  position:absolute; bottom:25%; left:38%; width:24px; height:32px;
  background: #6a5a4a;
  border-radius: 2px;
  transform: rotate(-5deg);
  animation: ib-book 10s ease-in-out infinite;
}
.scn-item-biddy .book-2 {
  position:absolute; bottom:24%; left:42%; width:20px; height:28px;
  background: #7a6a5a;
  border-radius: 2px;
  transform: rotate(8deg);
  animation: ib-book 12s ease-in-out infinite reverse;
}
.scn-item-biddy .biddy-silhouette {
  position:absolute; bottom:24%; left:50%; width:28px; height:54px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: translateX(-50%);
  animation: ib-fig 6s ease-in-out infinite alternate;
}
@keyframes ib-glow {
  0% { opacity:0.6; transform:scale(0.9); }
  50% { opacity:0.8; transform:scale(1.05); }
  100% { opacity:0.7; transform:scale(0.95); }
}
@keyframes ib-book {
  0% { transform:rotate(-5deg) translateY(0); }
  50% { transform:rotate(-3deg) translateY(-1px); }
  100% { transform:rotate(-5deg) translateY(0); }
}
@keyframes ib-fig {
  0% { transform:translateX(-50%) rotate(-1deg); }
  50% { transform:translateX(-50%) rotate(1deg) translateY(-2px); }
  100% { transform:translateX(-50%) rotate(-1deg); }
}
/* no extra keyframes needed, but we have >=4 */

/* ---------- stranger-at-inn ---------- */
.scn-stranger-at-inn {
  background: 
    linear-gradient(180deg, #4a2a0a 0%, #6a3a1a 30%, #3a1a00 70%, #1a0a00 100%),
    radial-gradient(ellipse at 50% 80%, #ff6030 0%, transparent 60%);
}
.scn-stranger-at-inn .inn-bg {
  position:absolute; inset:0;
  background: linear-gradient(0deg, #2a1a0a 0%, transparent 40%);
}
.scn-stranger-at-inn .fireplace {
  position:absolute; bottom:20%; left:50%; width:100px; height:80px;
  background: #1a1a1a;
  border-radius: 10% 10% 4% 4%;
  transform: translateX(-50%);
  box-shadow: inset 0 8px 20px #000;
}
.scn-stranger-at-inn .fire-glow {
  position:absolute; bottom:30%; left:50%; width:40px; height:50px;
  background: radial-gradient(ellipse at 50% 100%, #ff8020 0%, #ff4020 30%, transparent 60%);
  transform: translateX(-50%);
  animation: si-fire 2s ease-in-out infinite alternate;
}
.scn-stranger-at-inn .stranger-fig {
  position:absolute; bottom:25%; left:30%; width:40px; height:70px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: si-fig1 5s ease-in-out infinite;
}
.scn-stranger-at-inn .wopsle-fig {
  position:absolute; bottom:27%; right:25%; width:35px; height:65px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 45% 45% 35% 35% / 55% 55% 35% 35%;
  transform-origin: bottom center;
  animation: si-fig2 4s ease-in-out infinite alternate;
}
.scn-stranger-at-inn .pip-fig {
  position:absolute; bottom:28%; left:50%; width:30px; height:55px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: translateX(-50%);
  animation: si-fig3 6s ease-in-out infinite;
}
.scn-stranger-at-inn .table-round {
  position:absolute; bottom:18%; left:50%; width:80px; height:12px;
  background: linear-gradient(180deg, #5a3a2a 0%, #3a2a1a 100%);
  border-radius: 50%;
  transform: translateX(-50%);
  box-shadow: 0 4px 8px rgba(0,0,0,0.5);
}
.scn-stranger-at-inn .rum-glasses {
  position:absolute; bottom:22%; left:50%; width:20px; height:20px;
  background: radial-gradient(circle, #c8a060 0%, #a08040 60%);
  border-radius: 50%;
  transform: translateX(-50%);
  box-shadow: 0 2px 4px rgba(0,0,0,0.4);
  animation: si-rum 7s ease-in-out infinite alternate;
}
@keyframes si-fire {
  0% { opacity:0.8; transform:translateX(-50%) scale(1); }
  50% { opacity:1; transform:translateX(-50%) scale(1.1) translateY(-2px); }
  100% { opacity:0.7; transform:translateX(-50%) scale(0.9) translateY(1px); }
}
@keyframes si-fig1 {
  0% { transform:translateX(0) rotate(1deg); }
  30% { transform:translateX(-5px) rotate(-2deg); }
  60% { transform:translateX(3px) rotate(2deg); }
  100% { transform:translateX(0) rotate(1deg); }
}
@keyframes si-fig2 {
  0% { transform:translateX(0) rotate(-1deg); }
  50% { transform:translateX(6px) rotate(2deg); }
  100% { transform:translateX(2px) rotate(0deg); }
}
@keyframes si-fig3 {
  0% { transform:translateX(-50%) rotate(0deg); }
  50% { transform:translateX(-50%) rotate(2deg) translateY(-1px); }
  100% { transform:translateX(-50%) rotate(0deg); }
}
@keyframes si-rum {
  0% { transform:translateX(-50%) rotate(-5deg); }
  50% { transform:translateX(-50%) rotate(0deg); }
  100% { transform:translateX(-50%) rotate(5deg); }
}

/* ---------- item-two-pound-notes ---------- */
.scn-item-two-pound-notes {
  background: 
    linear-gradient(180deg, #3a1a0a 0%, #5a2a1a 30%, #2a0a00 70%, #1a0000 100%),
    radial-gradient(ellipse at 60% 70%, #ffa040 0%, transparent 50%);
}
.scn-item-two-pound-notes .back-shadow {
  position:absolute; inset:0;
  background: linear-gradient(0deg, #1a0a00 0%, transparent 30%);
}
.scn-item-two-pound-notes .lamp-light {
  position:absolute; top:20%; left:40%; width:80px; height:100px;
  background: radial-gradient(ellipse at 50% 50%, #ffd080 0%, #c8a050 40%, transparent 70%);
  border-radius: 50%;
  filter: blur(12px);
  animation: tp-lamp 5s ease-in-out infinite alternate;
}
.scn-item-two-pound-notes .table-surface {
  position:absolute; bottom:10%; left:0; right:0; height:20%;
  background: linear-gradient(180deg, #5a3a2a 0%, #3a2a1a 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: inset 0 8px 12px rgba(0,0,0,0.5);
}
.scn-item-two-pound-notes .stranger-hand {
  position:absolute; bottom:25%; left:35%; width:30px; height:40px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: rotate(20deg);
  animation: tp-hand1 4s ease-in-out infinite;
}
.scn-item-two-pound-notes .joe-hand {
  position:absolute; bottom:25%; right:35%; width:35px; height:45px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: rotate(-15deg);
  animation: tp-hand2 5s ease-in-out infinite alternate;
}
.scn-item-two-pound-notes .notes-stack {
  position:absolute; bottom:20%; left:50%; width:40px; height:12px;
  background: linear-gradient(180deg, #b0a080 0%, #908060 100%);
  border-radius: 2px;
  transform: translateX(-50%);
  box-shadow: 0 2px 4px rgba(0,0,0,0.3);
  animation: tp-notes 8s ease-in-out infinite;
}
.scn-item-two-pound-notes .coin-left {
  position:absolute; bottom:20%; left:45%; width:10px; height:10px;
  background: radial-gradient(circle, #d0b060 0%, #b09040 100%);
  border-radius: 50%;
  transform: translateX(-50%);
  animation: tp-coin 6s ease-in-out infinite alternate;
}
.scn-item-two-pound-notes .coin-right {
  position:absolute; bottom:18%; left:55%; width:10px; height:10px;
  background: radial-gradient(circle, #d0b060 0%, #b09040 100%);
  border-radius: 50%;
  transform: translateX(-50%);
  animation: tp-coin 7s ease-in-out infinite alternate-reverse;
}
@keyframes tp-lamp {
  0% { opacity:0.5; transform:scale(0.95); }
  50% { opacity:0.8; transform:scale(1.05); }
  100% { opacity:0.6; transform:scale(0.98); }
}
@keyframes tp-hand1 {
  0% { transform:rotate(20deg) translateX(0); }
  50% { transform:rotate(15deg) translateX(-3px); }
  100% { transform:rotate(20deg) translateX(0); }
}
@keyframes tp-hand2 {
  0% { transform:rotate(-15deg) translateX(0); }
  50% { transform:rotate(-20deg) translateX(4px); }
  100% { transform:rotate(-15deg) translateX(0); }
}
@keyframes tp-notes {
  0% { transform:translateX(-50%) translateY(0); }
  50% { transform:translateX(-50%) translateY(-2px); }
  100% { transform:translateX(-50%) translateY(0); }
}
@keyframes tp-coin {
  0% { transform:translateX(-50%) rotate(0deg); }
  50% { transform:translateX(-50%) rotate(180deg) scale(0.9); }
  100% { transform:translateX(-50%) rotate(360deg); }
}

/* Scene: churchyard-encounter */
.scn-churchyard-encounter {
  background: 
    linear-gradient(180deg, #16213e 0%, #1a2a4a 40%, #0f1a2e 100%),
    radial-gradient(ellipse at 50% 0%, #2c3e6e 0%, transparent 60%);
}
.scn-churchyard-encounter .sky-moon {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #1e3050 0%, transparent 100%);
  animation: ce-sky 12s ease-in-out infinite alternate;
}
.scn-churchyard-encounter .moon {
  position: absolute; top: 10%; left: 70%; width: 40px; height: 40px;
  background: radial-gradient(circle, #d4e4f0 0%, #a0b8d0 70%);
  border-radius: 50%;
  box-shadow: 0 0 40px 10px rgba(160,184,208,0.5), 0 0 80px 20px rgba(160,184,208,0.2);
  animation: ce-moon 30s linear infinite alternate;
}
.scn-churchyard-encounter .church-tower {
  position: absolute; bottom: 35%; left: 15%; width: 50px; height: 80px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  clip-path: polygon(0% 0%, 100% 0%, 85% 100%, 15% 100%);
  box-shadow: inset 0 0 10px rgba(0,0,0,0.5);
}
.scn-churchyard-encounter .grave-left {
  position: absolute; bottom: 28%; left: 20%; width: 30px; height: 20px;
  background: linear-gradient(180deg, #4a4a5a 0%, #2a2a3a 100%);
  border-radius: 10% 10% 20% 20%;
  transform: rotate(-5deg);
  animation: ce-grave 8s ease-in-out infinite;
}
.scn-churchyard-encounter .grave-right {
  position: absolute; bottom: 30%; left: 60%; width: 30px; height: 18px;
  background: linear-gradient(180deg, #4a4a5a 0%, #2a2a3a 100%);
  border-radius: 10% 10% 20% 20%;
  transform: rotate(4deg);
  animation: ce-grave 10s ease-in-out infinite reverse;
}
.scn-churchyard-encounter .figure {
  position: absolute; bottom: 25%; left: 45%; width: 22px; height: 40px;
  background: linear-gradient(180deg, #0a0a1a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ce-figure 4s ease-in-out infinite;
}
.scn-churchyard-encounter .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #1a2a1a 0%, #0f1a0f 100%);
  border-radius: 30% 30% 0 0 / 40% 40% 0 0;
}
.scn-churchyard-encounter .fog {
  position: absolute; top: 20%; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, rgba(200,210,220,0.15) 0%, transparent 100%);
  filter: blur(8px);
  animation: ce-fog 25s linear infinite;
}
@keyframes ce-sky { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.7; } }
@keyframes ce-moon { 0% { transform: translateX(0) translateY(0); } 50% { transform: translateX(10px) translateY(-5px); } 100% { transform: translateX(-5px) translateY(3px); } }
@keyframes ce-grave { 0% { transform: rotate(-5deg) scale(1); } 50% { transform: rotate(2deg) scale(1.02); } 100% { transform: rotate(-5deg) scale(1); } }
@keyframes ce-figure { 0% { transform: translateY(0) rotate(-2deg); } 25% { transform: translateY(-5px) rotate(1deg); } 50% { transform: translateY(0) rotate(-1deg); } 75% { transform: translateY(-3px) rotate(2deg); } 100% { transform: translateY(0) rotate(-2deg); } }
@keyframes ce-fog { 0% { transform: translateX(-20px); } 50% { transform: translateX(20px); } 100% { transform: translateX(-20px); } }

/* Scene: convict-demands */
.scn-convict-demands {
  background: 
    linear-gradient(180deg, #0e1a2e 0%, #152240 50%, #0a1420 100%),
    radial-gradient(ellipse at 50% 100%, #1a2a4a 0%, transparent 60%);
}
.scn-convict-demands .bg-sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #182a44 0%, transparent 100%);
  animation: cd-sky 15s ease-in-out infinite alternate;
}
.scn-convict-demands .bg-ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #1a2a1a 0%, #0f1a0f 100%);
  border-radius: 20% 20% 0 0 / 30% 30% 0 0;
}
.scn-convict-demands .convict {
  position: absolute; bottom: 20%; left: 30%; width: 30px; height: 65px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cd-convict 6s ease-in-out infinite;
}
.scn-convict-demands .leg-chain {
  position: absolute; bottom: 18%; left: 33%; width: 20px; height: 8px;
  background: linear-gradient(90deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 20%;
  box-shadow: 0 0 4px rgba(0,0,0,0.5);
  animation: cd-chain 2s ease-in-out infinite;
}
.scn-convict-demands .pip {
  position: absolute; bottom: 25%; left: 55%; width: 16px; height: 30px;
  background: linear-gradient(180deg, #1a1a2e 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cd-pip 3s ease-in-out infinite;
}
.scn-convict-demands .stone {
  position: absolute; bottom: 15%; left: 70%; width: 12px; height: 8px;
  background: #2a2a3a;
  border-radius: 30%;
  animation: cd-stone 10s linear infinite;
}
@keyframes cd-sky { 0% { opacity: 0.7; } 50% { opacity: 1; } 100% { opacity: 0.8; } }
@keyframes cd-convict { 0% { transform: translateY(0) rotate(0deg); } 30% { transform: translateY(-3px) rotate(1deg); } 60% { transform: translateY(0) rotate(-1deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes cd-chain { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(2px) rotate(5deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes cd-pip { 0% { transform: translateY(0) rotate(-2deg); } 25% { transform: translateY(-2px) rotate(1deg); } 50% { transform: translateY(0) rotate(-1deg); } 75% { transform: translateY(-1px) rotate(2deg); } 100% { transform: translateY(0) rotate(-2deg); } }
@keyframes cd-stone { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }

/* Scene: convict-orders */
.scn-convict-orders {
  background: 
    linear-gradient(180deg, #0f1a2e 0%, #162240 50%, #0a1420 100%),
    radial-gradient(ellipse at 50% 0%, #1a2a4a 0%, transparent 60%);
}
.scn-convict-orders .night-sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #1a2a44 0%, transparent 100%);
  animation: co-sky 12s ease-in-out infinite alternate;
}
.scn-convict-orders .moon {
  position: absolute; top: 8%; left: 75%; width: 35px; height: 35px;
  background: radial-gradient(circle, #d0e0f0 0%, #90a8c8 70%);
  border-radius: 50%;
  box-shadow: 0 0 30px 8px rgba(144,168,200,0.5);
  animation: co-moon 40s linear infinite alternate;
}
.scn-convict-orders .convict-figure {
  position: absolute; bottom: 22%; left: 25%; width: 28px; 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: co-convict 5s ease-in-out infinite;
}
.scn-convict-orders .arm-point {
  position: absolute; bottom: 38%; left: 28%; width: 25px; height: 5px;
  background: linear-gradient(90deg, #1a1a2a 0%, #2a2a3a 100%);
  border-radius: 50%;
  transform-origin: right center;
  animation: co-arm 3s ease-in-out infinite;
}
.scn-convict-orders .pip-back {
  position: absolute; bottom: 28%; left: 60%; width: 14px; height: 28px;
  background: linear-gradient(180deg, #1a1a2e 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: scaleX(-1);
  animation: co-pip 4s ease-in-out infinite;
}
.scn-convict-orders .ground-dark {
  position: absolute; bottom: 0; left: 0; right: 0; height: 28%;
  background: linear-gradient(180deg, #1a2a1a 0%, #0f1a0f 100%);
  border-radius: 20% 20% 0 0 / 30% 30% 0 0;
}
.scn-convict-orders .grass {
  position: absolute; bottom: 22%; left: 10%; width: 80%; height: 10px;
  background: linear-gradient(90deg, transparent 0%, #2a3a2a 20%, #1a2a1a 80%, transparent 100%);
  border-radius: 50%;
  filter: blur(3px);
  animation: co-grass 8s ease-in-out infinite;
}
@keyframes co-sky { 0% { opacity: 0.7; } 50% { opacity: 1; } 100% { opacity: 0.8; } }
@keyframes co-moon { 0% { transform: translateX(0) translateY(0); } 50% { transform: translateX(5px) translateY(-3px); } 100% { transform: translateX(-5px) translateY(2px); } }
@keyframes co-convict { 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 co-arm { 0% { transform: rotate(-20deg) scaleX(1); } 50% { transform: rotate(10deg) scaleX(1.1); } 100% { transform: rotate(-20deg) scaleX(1); } }
@keyframes co-pip { 0% { transform: translateX(0) scaleX(-1); } 25% { transform: translateX(-5px) scaleX(-1); } 50% { transform: translateX(0) scaleX(-1); } 75% { transform: translateX(-3px) scaleX(-1); } 100% { transform: translateX(0) scaleX(-1); } }
@keyframes co-grass { 0% { transform: scaleY(1); } 50% { transform: scaleY(1.2); } 100% { transform: scaleY(1); } }

/* Scene: home-arrival */
.scn-home-arrival {
  background: 
    linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 50%, #1a0f05 100%),
    radial-gradient(ellipse at 50% 100%, #4a2a1a 0%, transparent 60%);
}
.scn-home-arrival .wall {
  position: absolute; inset: 0 20% 0 0;
  background: linear-gradient(90deg, #2a1a0a 0%, #3a2a1a 50%, #1a0f05 100%);
  border-radius: 0 10% 10% 0 / 0 20% 20% 0;
}
.scn-home-arrival .door-frame {
  position: absolute; bottom: 15%; left: 10%; width: 40px; height: 70px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 5% 5% 0 0;
  border: 2px solid #5a4a3a;
  box-shadow: inset 0 0 10px rgba(0,0,0,0.5);
}
.scn-home-arrival .light-glow {
  position: absolute; bottom: 20%; left: 15%; width: 30px; height: 50px;
  background: radial-gradient(ellipse at 50% 50%, #f0d080 0%, #c08040 60%, transparent 100%);
  border-radius: 20%;
  box-shadow: 0 0 30px 10px rgba(192,128,64,0.4);
  animation: ha-light 3s ease-in-out infinite alternate;
}
.scn-home-arrival .figure-silhouette {
  position: absolute; bottom: 18%; left: 8%; width: 18px; height: 45px;
  background: linear-gradient(180deg, #0f0a05 0%, #1a0f05 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ha-figure 5s ease-in-out infinite;
}
.scn-home-arrival .table {
  position: absolute; bottom: 12%; right: 5%; width: 40px; height: 16px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 5%;
  transform: perspective(50px) rotateX(10deg);
}
.scn-home-arrival .chair {
  position: absolute; bottom: 10%; right: 15%; width: 14px; height: 20px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0f05 100%);
  border-radius: 10% 10% 5% 5%;
  transform: rotate(2deg);
}
.scn-home-arrival .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #2a1a0a 0%, #1a0f05 100%);
  border-radius: 20% 20% 0 0;
}
@keyframes ha-light { 0% { opacity: 0.7; transform: scale(0.95); } 50% { opacity: 1; transform: scale(1.05); } 100% { opacity: 0.8; transform: scale(0.98); } }
@keyframes ha-figure { 0% { transform: translateY(0) rotate(0deg); } 25% { transform: translateY(-3px) rotate(2deg); } 50% { transform: translateY(0) rotate(0deg); } 75% { transform: translateY(-2px) rotate(-1deg); } 100% { transform: translateY(0) rotate(0deg); } }

.scn-aftermath-reflections {
  background: linear-gradient(180deg, #0e0e1a 0%, #1a1a2e 40%, #16162a 100%), radial-gradient(ellipse at 50% 0%, #2a2a4e 0%, transparent 60%);
}
.scn-aftermath-reflections .bg-wall {
  position: absolute; inset: 0; background: linear-gradient(135deg, #12121e 0%, #1c1c2a 50%, #0a0a14 100%);
  animation: afr-wall 20s ease-in-out infinite alternate;
}
.scn-aftermath-reflections .window-frame {
  position: absolute; top: 15%; left: 65%; width: 120px; height: 150px; background: rgba(30,30,50,0.9); border: 6px solid #2a2a3e; border-radius: 4px;
  box-shadow: inset 0 0 30px #0a0a1a;
}
.scn-aftermath-reflections .moonlight {
  position: absolute; top: 18%; left: 68%; width: 80px; height: 110px;
  background: radial-gradient(circle, rgba(200,210,255,0.25) 0%, rgba(200,210,255,0.05) 70%);
  filter: blur(8px); animation: afr-moon 12s ease-in-out infinite alternate;
}
.scn-aftermath-reflections .bed-cover {
  position: absolute; bottom: 10%; left: 20%; right: 20%; height: 50%;
  background: linear-gradient(180deg, #2a2a3e 0%, #1a1a2e 100%);
  border-radius: 30% 30% 0 0 / 20% 20% 0 0;
  box-shadow: inset 0 20px 40px rgba(0,0,0,0.6);
}
.scn-aftermath-reflections .figure {
  position: absolute; bottom: 30%; left: 30%; width: 60px; height: 80px;
  background: radial-gradient(ellipse 40% 50% at 50% 70%, #2a2a3e 0%, #1a1a2e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: afr-figure 8s ease-in-out infinite;
}
.scn-aftermath-reflections .shadow-arm {
  position: absolute; bottom: 33%; left: 36%; width: 30px; height: 10px;
  background: #1a1a2e; border-radius: 50%;
  transform: rotate(20deg); animation: afr-arm 4s ease-in-out infinite alternate;
}
.scn-aftermath-reflections .dust-motes {
  position: absolute; top: 20%; left: 10%; width: 4px; height: 4px;
  background: rgba(200,210,255,0.6); border-radius: 50%;
  box-shadow: 0 0 6px 2px rgba(200,210,255,0.3);
  animation: afr-dust 30s linear infinite;
}

@keyframes afr-wall { 0%,100% { opacity:0.9 } 50% { opacity:0.7 } }
@keyframes afr-moon { 0% { opacity:0.8; transform: scale(1) } 50% { opacity:1; transform: scale(1.02) } 100% { opacity:0.85; transform: scale(0.98) } }
@keyframes afr-figure { 0% { transform: translateY(0) rotate(-2deg) } 25% { transform: translateY(-3px) rotate(1deg) } 50% { transform: translateY(0) rotate(2deg) } 75% { transform: translateY(-1px) rotate(-1deg) } 100% { transform: translateY(0) rotate(0) } }
@keyframes afr-arm { 0% { transform: rotate(15deg) translateX(0) } 100% { transform: rotate(25deg) translateX(5px) } }
@keyframes afr-dust { 0% { transform: translate(0,0) scale(0.5); opacity:0 } 10% { opacity:1 } 90% { opacity:0.3 } 100% { transform: translate(120px,-40px) scale(1); opacity:0 } }

/* ---- scene joe-learns ---- */
.scn-joe-learns {
  background: linear-gradient(180deg, #2a1a0a 0%, #3a2210 30%, #4a2a12 60%, #1a0e04 100%), radial-gradient(ellipse at 50% 80%, #6a3a1a 0%, transparent 70%);
}
.scn-joe-learns .hearth-glow {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(0deg, #8a4a1a 0%, transparent 100%);
  filter: blur(20px); animation: jol-glow 6s ease-in-out infinite alternate;
}
.scn-joe-learns .mantel {
  position: absolute; bottom: 45%; left: 10%; right: 10%; height: 6px;
  background: linear-gradient(90deg, #4a2a12, #5a3a1a, #4a2a12);
  border-radius: 2px; box-shadow: 0 2px 8px rgba(0,0,0,0.5);
}
.scn-joe-learns .fire {
  position: absolute; bottom: 40%; left: 20%; right: 20%; height: 25%;
  background: linear-gradient(0deg, #d06020 0%, #ff9020 30%, #ffc020 60%, transparent 100%);
  border-radius: 40% 40% 20% 20%;
  animation: jol-fire 3s ease-in-out infinite alternate;
}
.scn-joe-learns .table {
  position: absolute; bottom: 20%; left: 25%; right: 25%; height: 15%;
  background: linear-gradient(180deg, #5a3a1a 0%, #3a1a0a 100%);
  border-radius: 10px; box-shadow: 0 10px 20px rgba(0,0,0,0.6);
}
.scn-joe-learns .slate {
  position: absolute; bottom: 25%; left: 35%; width: 80px; height: 50px;
  background: radial-gradient(circle at 30% 40%, #4a4a4a 0%, #2a2a2a 70%);
  border: 4px solid #3a2a1a; border-radius: 6px;
  box-shadow: 0 2px 6px rgba(0,0,0,0.5);
  animation: jol-slate 8s ease-in-out infinite;
}
.scn-joe-learns .joe-figure {
  position: absolute; bottom: 22%; left: 12%; width: 90px; height: 110px;
  background: radial-gradient(ellipse 50% 60% at 50% 60%, #2a1a0a 0%, #1a0e04 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: jol-joe 5s ease-in-out infinite;
}
.scn-joe-learns .pip-figure {
  position: absolute; bottom: 20%; left: 50%; width: 50px; height: 65px;
  background: radial-gradient(ellipse 50% 60% at 50% 60%, #1a0e04 0%, #0a0602 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: jol-pip 4s ease-in-out infinite alternate;
}
.scn-joe-learns .shadows {
  position: absolute; bottom: 0; left: 0; right: 0; height: 60%;
  background: linear-gradient(0deg, #0a0602 0%, transparent 100%);
  filter: blur(10px); animation: jol-shadow 7s ease-in-out infinite alternate;
}

@keyframes jol-glow { 0% { opacity:0.7; transform: scaleY(0.95) } 50% { opacity:1; transform: scaleY(1.05) } 100% { opacity:0.85; transform: scaleY(1) } }
@keyframes jol-fire { 0% { transform: scaleY(1) rotate(-1deg); opacity:0.9 } 50% { transform: scaleY(1.08) rotate(1deg); opacity:1 } 100% { transform: scaleY(0.95) rotate(0); opacity:0.85 } }
@keyframes jol-slate { 0%,100% { transform: rotate(0) translateY(0) } 50% { transform: rotate(2deg) translateY(-5px) } }
@keyframes jol-joe { 0% { transform: translateX(0) rotate(-1deg) } 25% { transform: translateX(3px) rotate(1deg) } 50% { transform: translateX(0) rotate(0) } 75% { transform: translateX(-3px) rotate(1deg) } 100% { transform: translateX(0) rotate(-1deg) } }
@keyframes jol-pip { 0% { transform: translateY(0) rotate(0) } 100% { transform: translateY(-2px) rotate(2deg) } }
@keyframes jol-shadow { 0%,100% { opacity:0.8 } 50% { opacity:0.6 } }

/* ---- scene scholars-remark ---- */
.scn-scholars-remark {
  background: linear-gradient(180deg, #1a0e04 0%, #2a1a0a 40%, #3a2210 70%, #1a0e04 100%), radial-gradient(ellipse at 50% 90%, #5a2a0e 0%, transparent 60%);
}
.scn-scholars-remark .wall-panel {
  position: absolute; top: 0; left: 0; right: 0; bottom: 20%;
  background: linear-gradient(135deg, #1a1208 0%, #2a1e10 50%, #1a1208 100%);
  border: 2px solid #3a2a1a; border-radius: 20% 20% 0 0;
}
.scn-scholars-remark .candle {
  position: absolute; bottom: 35%; left: 15%; width: 12px; height: 40px;
  background: linear-gradient(180deg, #f0e0c0 0%, #c0a070 50%, #8a6030 100%);
  border-radius: 4px 4px 2px 2px;
}
.scn-scholars-remark .candle-light {
  position: absolute; bottom: 50%; left: 15%; width: 60px; height: 60px;
  background: radial-gradient(circle, rgba(255,200,100,0.4) 0%, rgba(255,200,100,0.1) 50%, transparent 100%);
  filter: blur(12px); transform: translate(-24px, -20px);
  animation: scr-candle 4s ease-in-out infinite alternate;
}
.scn-scholars-remark .letter {
  position: absolute; bottom: 30%; left: 30%; width: 90px; height: 60px;
  background: linear-gradient(135deg, #f0e0c0 0%, #d0b890 100%);
  border: 2px solid #b09070; border-radius: 2px;
  box-shadow: 0 4px 8px rgba(0,0,0,0.4);
  transform: rotate(-3deg);
  animation: scr-letter 10s ease-in-out infinite alternate;
}
.scn-scholars-remark .desk {
  position: absolute; bottom: 15%; left: 10%; right: 10%; height: 20%;
  background: linear-gradient(180deg, #5a3a1a 0%, #3a2010 100%);
  border-radius: 10% 10% 0 0; box-shadow: 0 -10px 20px rgba(0,0,0,0.5);
}
.scn-scholars-remark .joe-silhouette {
  position: absolute; bottom: 18%; left: 60%; width: 80px; height: 100px;
  background: radial-gradient(ellipse 50% 60% at 50% 60%, #2a1a0a 0%, #0e0602 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: scr-joe 6s ease-in-out infinite;
}
.scn-scholars-remark .arm-chair {
  position: absolute; bottom: 15%; left: 55%; width: 100px; height: 110px;
  background: linear-gradient(180deg, #2a1a0a 0%, #1a0e04 100%);
  border-radius: 20% 20% 10% 10% / 30% 30% 20% 20%;
  box-shadow: inset 0 0 20px rgba(0,0,0,0.6);
}

@keyframes scr-candle { 0% { transform: translate(-24px, -20px) scale(1); opacity:0.7 } 50% { transform: translate(-20px, -25px) scale(1.05); opacity:1 } 100% { transform: translate(-28px, -15px) scale(0.95); opacity:0.8 } }
@keyframes scr-letter { 0%,100% { transform: rotate(-3deg) translateY(0) } 50% { transform: rotate(0) translateY(-5px) } }
@keyframes scr-joe { 0% { transform: translateY(0) rotate(-1deg) } 25% { transform: translateY(-4px) rotate(1deg) } 50% { transform: translateY(0) rotate(0) } 75% { transform: translateY(-2px) rotate(1deg) } 100% { transform: translateY(0) rotate(-1deg) } }

/* ---- scene joes-childhood ---- */
.scn-joes-childhood {
  background: linear-gradient(180deg, #1a0e04 0%, #2a1a0a 30%, #3a2210 60%, #1a0e04 100%), radial-gradient(ellipse at 50% 70%, #6a3a1a 0%, transparent 60%);
}
.scn-joes-childhood .fireplace {
  position: absolute; bottom: 0; left: 10%; right: 10%; height: 60%;
  background: linear-gradient(0deg, #2a1a0a 0%, #1a0e04 100%);
  border-radius: 20% 20% 0 0 / 30% 30% 0 0;
  box-shadow: inset 0 20px 40px rgba(0,0,0,0.7);
}
.scn-joes-childhood .flames {
  position: absolute; bottom: 10%; left: 40%; right: 40%; height: 30%;
  background: linear-gradient(0deg, #c06020 0%, #e08030 30%, #f0a040 60%, transparent 100%);
  border-radius: 40% 40% 20% 20%;
  filter: blur(4px);
  animation: jch-flame 3s ease-in-out infinite alternate;
}
.scn-joes-childhood .mother-figure {
  position: absolute; bottom: 25%; left: 15%; width: 70px; height: 90px;
  background: radial-gradient(ellipse 50% 60% at 50% 60%, #2a1a0a 0%, #1a0e04 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: jch-mother 7s ease-in-out infinite;
}
.scn-joes-childhood .child-figure {
  position: absolute; bottom: 20%; left: 25%; width: 40px; height: 50px;
  background: radial-gradient(ellipse 50% 60% at 50% 60%, #1a1208 0%, #0e0a04 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: jch-child 5s ease-in-out infinite alternate;
}
.scn-joes-childhood .fleeing-shadow {
  position: absolute; bottom: 20%; left: 60%; width: 60px; height: 80px;
  background: radial-gradient(ellipse 50% 60% at 50% 60%, #0e0602 0%, #000 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  opacity: 0.5;
  animation: jch-shadow 9s ease-in-out infinite;
}
.scn-joes-childhood .doorway {
  position: absolute; bottom: 0; left: 70%; right: 5%; height: 70%;
  background: #0e0602;
  border-radius: 0 20% 0 0;
  box-shadow: inset -10px 0 20px rgba(0,0,0,0.5);
}
.scn-joes-childhood .floorboards {
  position: absolute; bottom: 0; left: 0; right: 0; height: 15%;
  background: repeating-linear-gradient(90deg, #2a1a0a 0px, #2a1a0a 20px, #1a0e04 20px, #1a0e04 40px);
  opacity: 0.6;
  animation: jch-floor 20s linear infinite;
}

@keyframes jch-flame { 0% { transform: scaleY(1) rotate(-2deg) } 50% { transform: scaleY(1.1) rotate(2deg) } 100% { transform: scaleY(0.9) rotate(-1deg) } }
@keyframes jch-mother { 0%,100% { transform: translateX(0) rotate(0) } 25% { transform: translateX(10px) rotate(2deg) } 50% { transform: translateX(0) rotate(0) } 75% { transform: translateX(10px) rotate(-2deg) } }
@keyframes jch-child { 0% { transform: translateX(0) translateY(0) } 100% { transform: translateX(8px) translateY(-3px) } }
@keyframes jch-shadow { 0%,100% { opacity:0.3; transform: scale(1) } 50% { opacity:0.7; transform: scale(1.05) } }
@keyframes jch-floor { 0% { background-position: 0 0 } 100% { background-position: -40px 0 } }

/* satis-house */
.scn-satis-house {
  background: linear-gradient(180deg, #1f1f14 0%, #2a2a1c 40%, #1a1a0e 80%, #0c0c06 100%), radial-gradient(ellipse at 50% 80%, #3a3a2a 0%, transparent 70%);
}
.scn-satis-house .wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(90deg, #2a2a1e 0%, #3a3a2a 30%, #2a2a1e 100%);
  box-shadow: inset 0 0 40px rgba(0,0,0,0.5);
}
.scn-satis-house .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #1e1e12 0%, #0e0e08 100%);
  border-radius: 20% 20% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.6);
}
.scn-satis-house .door {
  position: absolute; bottom: 18%; left: 30%; width: 90px; height: 140px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%);
  border-radius: 4% 4% 8% 8% / 4% 4% 12% 12%;
  box-shadow: inset 0 0 30px rgba(0,0,0,0.4), 0 4px 8px rgba(0,0,0,0.5);
  transform-origin: bottom center;
  animation: sh-door 8s ease-in-out infinite alternate;
}
.scn-satis-house .candle-glow {
  position: absolute; bottom: 22%; left: 50%; width: 20px; height: 20px;
  background: radial-gradient(circle, #ffd080 0%, #b08040 50%, transparent 80%);
  border-radius: 50%;
  box-shadow: 0 0 50px 20px #a07030, 0 0 80px 40px rgba(160,112,48,0.3);
  animation: sh-candle 2s ease-in-out infinite alternate;
}
.scn-satis-house .figure-pip {
  position: absolute; bottom: 20%; left: 15%; width: 22px; height: 50px;
  background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%);
  border-radius: 45% 45% 30% 30% / 55% 55% 30% 30%;
  transform-origin: bottom center;
  animation: sh-figure 4s ease-in-out infinite;
}
.scn-satis-house .shadow {
  position: absolute; bottom: 14%; left: 12%; width: 50px; height: 20px;
  background: radial-gradient(ellipse at center, rgba(0,0,0,0.6) 0%, transparent 80%);
  filter: blur(4px);
  animation: sh-shadow 3s ease-in-out infinite alternate;
}
@keyframes sh-door {
  0% { transform: rotateY(0deg); opacity: 1; }
  30% { transform: rotateY(-5deg); }
  70% { transform: rotateY(5deg); }
  100% { transform: rotateY(0deg); opacity: 0.9; }
}
@keyframes sh-candle {
  0% { transform: scale(0.9); opacity: 0.7; box-shadow: 0 0 40px 15px #a07030; }
  40% { transform: scale(1.1); opacity: 1; box-shadow: 0 0 60px 25px #c09040; }
  70% { transform: scale(0.95); opacity: 0.85; box-shadow: 0 0 50px 20px #b08040; }
  100% { transform: scale(1.05); opacity: 0.95; box-shadow: 0 0 55px 22px #b08040; }
}
@keyframes sh-figure {
  0% { transform: translateX(0) translateY(0) rotate(-2deg); }
  25% { transform: translateX(4px) translateY(-1px) rotate(1deg); }
  50% { transform: translateX(8px) translateY(0) rotate(-1deg); }
  75% { transform: translateX(12px) translateY(-1px) rotate(2deg); }
  100% { transform: translateX(16px) translateY(0) rotate(0deg); }
}
@keyframes sh-shadow {
  0% { transform: scaleX(1); opacity: 0.6; }
  50% { transform: scaleX(1.2); opacity: 0.4; }
  100% { transform: scaleX(0.8); opacity: 0.7; }
}

/* meeting-miss-havisham */
.scn-meeting-miss-havisham {
  background: linear-gradient(180deg, #0d0d0d 0%, #1a1412 40%, #0d0806 70%, #050302 100%), radial-gradient(ellipse at 50% 60%, #2a1a14 0%, transparent 70%);
}
.scn-meeting-miss-havisham .wall-dark {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(90deg, #1a1410 0%, #2a201a 50%, #1a1410 100%);
  box-shadow: inset 0 0 60px rgba(0,0,0,0.6);
}
.scn-meeting-miss-havisham .armchair {
  position: absolute; bottom: 22%; left: 40%; width: 100px; height: 120px;
  background: linear-gradient(180deg, #2a1e14 0%, #1a120a 100%);
  border-radius: 30% 30% 10% 10% / 40% 40% 20% 20%;
  box-shadow: 0 8px 20px rgba(0,0,0,0.5);
  animation: mh-chair 12s ease-in-out infinite alternate;
}
.scn-meeting-miss-havisham .figure-miss-h {
  position: absolute; bottom: 24%; left: 42%; width: 50px; height: 90px;
  background: linear-gradient(180deg, #1e1410 0%, #0a0604 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: mh-figure 6s ease-in-out infinite;
}
.scn-meeting-miss-havisham .candle {
  position: absolute; bottom: 32%; left: 52%; width: 8px; height: 30px;
  background: linear-gradient(180deg, #b08050 0%, #806040 100%);
  border-radius: 2px 2px 4px 4px;
  box-shadow: 0 0 10px 2px #a07030;
  animation: mh-candle 4s ease-in-out infinite alternate;
}
.scn-meeting-miss-havisham .candle-light {
  position: absolute; bottom: 32%; left: 52%; width: 40px; height: 40px;
  background: radial-gradient(circle, #ffd080 0%, #b08040 50%, transparent 80%);
  border-radius: 50%;
  filter: blur(2px);
  animation: mh-light 3s ease-in-out infinite alternate;
}
.scn-meeting-miss-havisham .shadow-woman {
  position: absolute; bottom: 10%; left: 35%; width: 120px; height: 40px;
  background: radial-gradient(ellipse at center, rgba(0,0,0,0.7) 0%, transparent 80%);
  filter: blur(8px);
  animation: mh-shadow 8s ease-in-out infinite alternate;
}
@keyframes mh-chair {
  0% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-2px) scale(1.01); }
  100% { transform: translateY(0) scale(0.99); }
}
@keyframes mh-figure {
  0% { transform: translateX(0) rotate(-2deg); opacity: 0.8; }
  33% { transform: translateX(2px) rotate(1deg); opacity: 0.9; }
  66% { transform: translateX(-1px) rotate(-1deg); opacity: 0.85; }
  100% { transform: translateX(0) rotate(0deg); opacity: 0.8; }
}
@keyframes mh-candle {
  0% { transform: scaleY(1); opacity: 0.8; }
  50% { transform: scaleY(1.1); opacity: 1; }
  100% { transform: scaleY(0.95); opacity: 0.9; }
}
@keyframes mh-light {
  0% { transform: scale(0.9); opacity: 0.6; box-shadow: 0 0 30px 10px #a07030; }
  50% { transform: scale(1.1); opacity: 0.9; box-shadow: 0 0 50px 20px #c09040; }
  100% { transform: scale(0.95); opacity: 0.7; box-shadow: 0 0 35px 15px #b08040; }
}
@keyframes mh-shadow {
  0% { transform: scaleX(1); opacity: 0.5; }
  50% { transform: scaleX(1.3); opacity: 0.6; }
  100% { transform: scaleX(0.8); opacity: 0.4; }
}

/* broken-heart */
.scn-broken-heart {
  background: linear-gradient(180deg, #0a0a0a 0%, #1a1010 40%, #0d0808 70%, #050505 100%), radial-gradient(ellipse at 50% 50%, #2a1a1a 0%, transparent 70%);
}
.scn-broken-heart .bg-dark {
  position: absolute; inset: 0;
  background: linear-gradient(135deg, #0d0d0d 0%, #1a1212 50%, #0d0d0d 100%);
}
.scn-broken-heart .chest {
  position: absolute; bottom: 25%; left: 50%; width: 80px; height: 100px;
  background: linear-gradient(180deg, #2a1e1e 0%, #1a1212 100%);
  border-radius: 30% 30% 20% 20% / 40% 40% 30% 30%;
  transform: translateX(-50%);
  box-shadow: inset 0 0 30px rgba(0,0,0,0.5);
  animation: bh-chest 10s ease-in-out infinite alternate;
}
.scn-broken-heart .heart {
  position: absolute; bottom: 38%; left: 50%; width: 30px; height: 30px;
  background: radial-gradient(circle at 50% 40%, #6a2a2a 0%, #4a1a1a 70%);
  transform: translateX(-50%) rotate(45deg);
  border-radius: 50% 50% 0 0;
  box-shadow: 0 0 20px 8px #4a1a1a;
  animation: bh-heart 4s ease-in-out infinite;
}
.scn-broken-heart .crack {
  position: absolute; bottom: 38%; left: 50%; width: 30px; height: 30px;
  border-left: 2px solid #8a4a4a;
  border-bottom: 2px solid #8a4a4a;
  transform: translateX(-50%) rotate(45deg);
  opacity: 0;
  animation: bh-crack 8s ease-in-out infinite;
}
.scn-broken-heart .hand {
  position: absolute; bottom: 30%; left: 40%; width: 20px; height: 50px;
  background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom left;
  animation: bh-hand 6s ease-in-out infinite;
}
.scn-broken-heart .glow-sad {
  position: absolute; bottom: 35%; left: 45%; width: 60px; height: 60px;
  background: radial-gradient(circle, rgba(100,50,50,0.4) 0%, transparent 70%);
  filter: blur(8px);
  animation: bh-glow 5s ease-in-out infinite alternate;
}
@keyframes bh-chest {
  0% { transform: translateX(-50%) scale(1); }
  50% { transform: translateX(-50%) scale(1.02) translateY(-2px); }
  100% { transform: translateX(-50%) scale(0.98); }
}
@keyframes bh-heart {
  0% { transform: translateX(-50%) rotate(45deg) scale(1); box-shadow: 0 0 15px 5px #4a1a1a; }
  50% { transform: translateX(-50%) rotate(45deg) scale(1.1); box-shadow: 0 0 30px 15px #6a2a2a; }
  100% { transform: translateX(-50%) rotate(45deg) scale(0.95); box-shadow: 0 0 20px 8px #4a1a1a; }
}
@keyframes bh-crack {
  0%, 30% { opacity: 0; }
  50% { opacity: 1; }
  70% { opacity: 0.5; }
  100% { opacity: 0; }
}
@keyframes bh-hand {
  0% { transform: rotate(0deg) translateX(0); }
  25% { transform: rotate(-15deg) translateX(5px); }
  50% { transform: rotate(0deg) translateX(10px); }
  75% { transform: rotate(10deg) translateX(15px); }
  100% { transform: rotate(0deg) translateX(20px); }
}
@keyframes bh-glow {
  0% { transform: scale(0.8); opacity: 0.3; }
  50% { transform: scale(1.2); opacity: 0.6; }
  100% { transform: scale(0.9); opacity: 0.4; }
}

/* card-game */
.scn-card-game {
  background: linear-gradient(180deg, #12120a 0%, #1e1a14 40%, #0c0a06 80%, #060402 100%), radial-gradient(ellipse at 50% 70%, #2a221a 0%, transparent 70%);
}
.scn-card-game .table {
  position: absolute; bottom: 10%; left: 10%; width: 80%; height: 35%;
  background: linear-gradient(180deg, #2a1e14 0%, #1a100a 100%);
  border-radius: 20% 20% 0 0 / 10% 10% 0 0;
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.5);
}
.scn-card-game .cards {
  position: absolute; bottom: 25%; left: 50%; width: 100px; height: 60px;
  background: linear-gradient(90deg, #4a3a2a 0%, #5a4a3a 20%, #4a3a2a 40%, #3a2a1a 60%, #4a3a2a 80%, #5a4a3a 100%);
  transform: translateX(-50%);
  border-radius: 4px;
  box-shadow: 0 4px 10px rgba(0,0,0,0.6);
  animation: cg-cards 5s ease-in-out infinite;
}
.scn-card-game .figure-pip {
  position: absolute; bottom: 20%; left: 28%; width: 20px; height: 45px;
  background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%);
  border-radius: 45% 45% 30% 30% / 55% 55% 30% 30%;
  transform-origin: bottom center;
  animation: cg-pip 7s ease-in-out infinite;
}
.scn-card-game .figure-estella {
  position: absolute; bottom: 20%; right: 28%; width: 18px; height: 42px;
  background: linear-gradient(180deg, #2a1a1a 0%, #0a0606 100%);
  border-radius: 45% 45% 30% 30% / 55% 55% 30% 30%;
  transform-origin: bottom center;
  animation: cg-estella 7s ease-in-out infinite 1s;
  box-shadow: 0 0 8px 2px rgba(160,120,80,0.3);
}
.scn-card-game .candle-light {
  position: absolute; bottom: 30%; left: 50%; width: 60px; height: 60px;
  background: radial-gradient(circle, #d0a060 0%, #b08040 40%, transparent 80%);
  border-radius: 50%;
  filter: blur(3px);
  animation: cg-light 3s ease-in-out infinite alternate;
}
.scn-card-game .shadow-table {
  position: absolute; bottom: 5%; left: 15%; width: 70%; height: 20px;
  background: radial-gradient(ellipse at center, rgba(0,0,0,0.5) 0%, transparent 80%);
  filter: blur(6px);
  animation: cg-shadow 6s ease-in-out infinite alternate;
}
@keyframes cg-cards {
  0% { transform: translateX(-50%) rotate(0deg); }
  25% { transform: translateX(-50%) rotate(3deg); }
  50% { transform: translateX(-50%) rotate(-2deg); }
  75% { transform: translateX(-50%) rotate(4deg); }
  100% { transform: translateX(-50%) rotate(0deg); }
}
@keyframes cg-pip {
  0% { transform: translate(0, 0) rotate(-3deg); }
  33% { transform: translate(5px, -2px) rotate(2deg); }
  66% { transform: translate(10px, 0) rotate(-1deg); }
  100% { transform: translate(15px, -1px) rotate(0deg); }
}
@keyframes cg-estella {
  0% { transform: translate(0, 0) rotate(2deg); }
  33% { transform: translate(-4px, -1px) rotate(-1deg); }
  66% { transform: translate(-8px, 0) rotate(1deg); }
  100% { transform: translate(-12px, -1px) rotate(0deg); }
}
@keyframes cg-light {
  0% { transform: scale(0.9); opacity: 0.7; box-shadow: 0 0 30px 10px #a07030; }
  50% { transform: scale(1.1); opacity: 0.9; box-shadow: 0 0 50px 20px #c09040; }
  100% { transform: scale(1.0); opacity: 0.8; box-shadow: 0 0 40px 15px #b08040; }
}
@keyframes cg-shadow {
  0% { transform: scaleX(1); opacity: 0.5; }
  50% { transform: scaleX(1.2); opacity: 0.7; }
  100% { transform: scaleX(0.9); opacity: 0.4; }
}

/* tickler-arrival */
.scn-tickler-arrival {
  background: 
    radial-gradient(ellipse at 60% 30%, #a0522d 0%, #4a2a1a 70%),
    linear-gradient(180deg, #2d1a0e 0%, #5e3a1a 50%, #8b5a2b 100%);
}
.scn-tickler-arrival .bg-walls { position:absolute; inset:0 0 20% 0; background: linear-gradient(135deg, #3d2a1a 0%, #2a1a0a 50%, #3a2515 100%); }
.scn-tickler-arrival .hearth { position:absolute; bottom:25%; left:50%; width:90px; height:50px; transform:translateX(-50%); background: radial-gradient(ellipse at 50% 60%, #e07020 0%, #b05010 60%, #4a2010 100%); border-radius: 30% 30% 20% 20%; box-shadow: 0 0 40px 20px rgba(200,80,20,0.4); animation: ta-hearth 4s ease-in-out infinite alternate; }
.scn-tickler-arrival .door-left { position:absolute; bottom:0%; left:10%; width:70px; height:80%; background: linear-gradient(180deg, #5e3a1a 0%, #3a1a0a 100%); border-radius: 5% 0 0 5%; border-right: 3px solid #2a1a0a; box-shadow: inset -8px 0 8px rgba(0,0,0,0.5); }
.scn-tickler-arrival .figure-mrsjoe { position:absolute; bottom:10%; left:25%; width:35px; height:70px; background: linear-gradient(180deg, #7a5a3a 0%, #4a2a1a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%; transform: rotate(-5deg); animation: ta-walk 3s ease-in-out infinite; }
.scn-tickler-arrival .tickler { position:absolute; bottom:60%; left:28%; width:8px; height:50px; background: linear-gradient(180deg, #8b5a2b 0%, #5a3a1a 100%); border-radius: 20% 20% 10% 10%; transform-origin: bottom center; animation: ta-tickler 2s ease-in-out infinite alternate; }
.scn-tickler-arrival .spark-c { position:absolute; top:40%; left:48%; width:6px; height:6px; background: radial-gradient(circle, #ff8030 0%, #ff6010 100%); border-radius:50%; box-shadow: 0 0 10px 5px rgba(255,96,16,0.6); animation: ta-spark 1.5s ease-in-out infinite; }
.scn-tickler-arrival .spark-d { position:absolute; top:35%; left:52%; width:4px; height:4px; background: radial-gradient(circle, #ffa040 0%, #ff8020 100%); border-radius:50%; box-shadow: 0 0 8px 4px rgba(255,128,32,0.5); animation: ta-spark2 2s ease-in-out infinite; }
.scn-tickler-arrival .shadow-on-floor { position:absolute; bottom:0%; left:10%; width:70%; height:15%; background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,0.5) 100%); border-radius: 50%; filter: blur(8px); animation: ta-shadow 3s ease-in-out infinite; }
@keyframes ta-hearth { 0% { opacity:.8; transform:translateX(-50%) scale(1) } 50% { opacity:1; transform:translateX(-50%) scale(1.05) } 100% { opacity:.85; transform:translateX(-50%) scale(0.95) } }
@keyframes ta-walk { 0% { transform: translateX(0) rotate(-5deg) } 25% { transform: translateX(10px) rotate(-3deg) } 50% { transform: translateX(20px) rotate(-5deg) } 75% { transform: translateX(30px) rotate(-2deg) } 100% { transform: translateX(40px) rotate(-6deg) } }
@keyframes ta-tickler { 0% { transform: rotate(-10deg) } 100% { transform: rotate(15deg) } }
@keyframes ta-spark { 0% { opacity:0; transform:translateY(0) scale(0.5) } 20% { opacity:1; transform:translateY(-20px) scale(1.2) } 40% { opacity:0.5; transform:translateY(-40px) scale(0.8) } 100% { opacity:0; transform:translateY(-80px) scale(0) } }
@keyframes ta-spark2 { 0% { opacity:0; transform:translateY(0) scale(0.3) } 30% { opacity:0.8; transform:translateY(-15px) scale(1) } 60% { opacity:0.3; transform:translateY(-35px) scale(0.6) } 100% { opacity:0; transform:translateY(-60px) scale(0) } }
@keyframes ta-shadow { 0% { transform:scaleX(1) } 50% { transform:scaleX(1.2) } 100% { transform:scaleX(0.9) } }

/* sister-reproof */
.scn-sister-reproof {
  background: 
    radial-gradient(ellipse at 55% 40%, #8b4020 0%, #2a1008 70%),
    linear-gradient(180deg, #1a0a04 0%, #3a2010 60%, #5a3020 100%);
}
.scn-sister-reproof .bg-shadowy { position:absolute; inset:0 0 0 0; background: linear-gradient(180deg, #1a0a04 0%, #0a0502 100%); opacity:0.6; }
.scn-sister-reproof .fireplace-glow { position:absolute; bottom:20%; left:50%; width:120px; height:100px; transform:translateX(-50%); background: radial-gradient(ellipse at 50% 60%, #c86020 0%, #a04010 40%, transparent 70%); border-radius: 30% 30% 10% 10%; box-shadow: 0 0 60px 30px rgba(200,80,20,0.5); animation: sr-glow 3s ease-in-out infinite alternate; }
.scn-sister-reproof .mrs-joe-taunting { position:absolute; bottom:15%; left:35%; width:30px; height:65px; background: linear-gradient(180deg, #6a3a1a 0%, #3a1a0a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 35% 35%; transform-origin: bottom center; animation: sr-mrsjoe 2s ease-in-out infinite; }
.scn-sister-reproof .pip-crouching { position:absolute; bottom:10%; left:50%; width:25px; height:40px; background: linear-gradient(180deg, #4a2a1a 0%, #2a1005 100%); border-radius: 35% 35% 25% 25% / 40% 40% 30% 30%; transform: scale(0.8); animation: sr-pip 2.5s ease-in-out infinite; }
.scn-sister-reproof .tickler-raised { position:absolute; bottom:55%; left:37%; width:6px; height:45px; background: linear-gradient(180deg, #7a4a2a 0%, #4a2a1a 100%); border-radius: 20%; transform-origin: bottom center; animation: sr-raise 1.8s ease-in-out infinite alternate; }
.scn-sister-reproof .flicker-light { position:absolute; top:30%; left:40%; width:80px; height:80px; background: radial-gradient(circle, #ff8030 0%, transparent 70%); opacity:0.3; animation: sr-flicker 1.2s steps(2) infinite; }
.scn-sister-reproof .smudge-floor { position:absolute; bottom:0%; left:20%; width:60%; height:10%; background: linear-gradient(180deg, rgba(0,0,0,0.6) 0%, transparent 100%); border-radius: 50%; filter: blur(12px); }
@keyframes sr-glow { 0% { transform:translateX(-50%) scale(1); opacity:.7 } 50% { transform:translateX(-50%) scale(1.1); opacity:1 } 100% { transform:translateX(-50%) scale(0.9); opacity:.8 } }
@keyframes sr-mrsjoe { 0% { transform: rotate(-2deg) } 25% { transform: rotate(3deg) } 50% { transform: rotate(-3deg) } 75% { transform: rotate(4deg) } 100% { transform: rotate(-2deg) } }
@keyframes sr-pip { 0% { transform: scale(0.8) translateY(0) } 30% { transform: scale(0.75) translateY(-2px) } 60% { transform: scale(0.85) translateY(1px) } 100% { transform: scale(0.8) translateY(0) } }
@keyframes sr-raise { 0% { transform: rotate(-20deg) } 100% { transform: rotate(20deg) } }
@keyframes sr-flicker { 0% { opacity:0.2 } 50% { opacity:0.4 } 100% { opacity:0.2 } }

/* bolting-accusation */
.scn-bolting-accusation {
  background: 
    radial-gradient(ellipse at 50% 30%, #a05020 0%, #3a2010 70%),
    linear-gradient(180deg, #2a1408 0%, #4a2820 60%, #2a1408 100%);
}
.scn-bolting-accusation .table-wood { position:absolute; bottom:20%; left:10%; width:80%; height:40%; background: linear-gradient(180deg, #6a3a1a 0%, #4a2a1a 100%); border-radius: 10% 10% 5% 5%; box-shadow: inset 0 8px 12px rgba(0,0,0,0.6); }
.scn-bolting-accusation .bowl-gruel { position:absolute; bottom:35%; left:35%; width:40px; height:25px; background: radial-gradient(ellipse at 50% 30%, #7a5a3a 0%, #4a2a1a 100%); border-radius: 40% 40% 15% 15%; box-shadow: 0 4px 8px rgba(0,0,0,0.5); animation: ba-bowl 3s ease-in-out infinite; }
.scn-bolting-accusation .pip-hand { position:absolute; bottom:30%; left:42%; width:12px; height:18px; background: linear-gradient(180deg, #8b5a3a 0%, #5a3030 100%); border-radius: 30% 30% 10% 10%; transform: rotate(-10deg); animation: ba-hand 1.5s ease-in-out infinite; }
.scn-bolting-accusation .mrs-joe-pointing { position:absolute; bottom:25%; left:55%; width:28px; height:60px; background: linear-gradient(180deg, #6a3a1a 0%, #3a1a0a 100%); border-radius: 35% 35% 25% 25% / 45% 45% 35% 35%; transform: scale(0.9) rotate(5deg); animation: ba-mrsjoe 2s ease-in-out infinite; }
.scn-bolting-accusation .spoon-dropped { position:absolute; bottom:15%; left:30%; width:6px; height:30px; background: linear-gradient(180deg, #a08050 0%, #705030 100%); border-radius: 20%; transform: rotate(30deg); animation: ba-spoon 4s ease-in-out infinite; }
.scn-bolting-accusation .candle-flicker { position:absolute; top:15%; left:45%; width:8px; height:20px; background: linear-gradient(180deg, #ffa040 0%, #ff8020 100%); border-radius: 30% 30% 10% 10%; box-shadow: 0 0 20px 10px rgba(255,128,32,0.6); animation: ba-candle 1.8s ease-in-out infinite alternate; }
.scn-bolting-accusation .breath-mist { position:absolute; bottom:40%; left:25%; width:30px; height:15px; background: radial-gradient(ellipse, rgba(200,200,200,0.2) 0%, transparent 100%); filter: blur(4px); animation: ba-mist 5s ease-in-out infinite; }
@keyframes ba-bowl { 0% { transform: scale(1) } 50% { transform: scale(0.95) } 100% { transform: scale(1) } }
@keyframes ba-hand { 0% { transform: rotate(-10deg) translateY(0) } 25% { transform: rotate(-15deg) translateY(-2px) } 50% { transform: rotate(-5deg) translateY(0) } 75% { transform: rotate(-12deg) translateY(-1px) } 100% { transform: rotate(-10deg) translateY(0) } }
@keyframes ba-mrsjoe { 0% { transform: rotate(5deg) } 30% { transform: rotate(-3deg) } 60% { transform: rotate(8deg) } 100% { transform: rotate(5deg) } }
@keyframes ba-spoon { 0% { transform: rotate(30deg) scale(1) } 50% { transform: rotate(45deg) scale(1.1) } 100% { transform: rotate(30deg) scale(1) } }
@keyframes ba-candle { 0% { transform: scaleY(1) scaleX(1); opacity:.8 } 50% { transform: scaleY(1.1) scaleX(0.9); opacity:1 } 100% { transform: scaleY(0.9) scaleX(1.1); opacity:.9 } }
@keyframes ba-mist { 0% { transform: translateX(0) scale(1); opacity:0.2 } 50% { transform: translateX(10px) scale(1.3); opacity:0.4 } 100% { transform: translateX(20px) scale(1); opacity:0 } }

/* tar-water-dose */
.scn-tar-water-dose {
  background: 
    radial-gradient(ellipse at 40% 50%, #2a3a1a 0%, #0a1008 80%),
    linear-gradient(180deg, #0a0a06 0%, #1a2a12 60%, #0a0a06 100%);
}
.scn-tar-water-dose .dark-room { position:absolute; inset:0 0 0 0; background: linear-gradient(135deg, #0a0a06 0%, #0a1008 100%); opacity:0.8; }
.scn-tar-water-dose .bottle-shadow { position:absolute; bottom:30%; left:55%; width:30px; height:50px; background: linear-gradient(180deg, #2a3a1a 0%, #1a2a12 100%); border-radius: 20% 20% 15% 15%; box-shadow: inset -4px 0 6px rgba(0,0,0,0.7); transform: rotate(-5deg); }
.scn-tar-water-dose .cup-hand { position:absolute; bottom:25%; left:45%; width:25px; height:30px; background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%); border-radius: 30% 30% 10% 10%; transform: rotate(10deg); animation: tw-cup 4s ease-in-out infinite; }
.scn-tar-water-dose .tar-drip { position:absolute; bottom:50%; left:48%; width:4px; height:15px; background: linear-gradient(180deg, #1a2a12 0%, #0a1a0a 100%); border-radius: 50% 50% 20% 20%; animation: tw-drip 3s ease-in-out infinite; }
.scn-tar-water-dose .figure-grim { position:absolute; bottom:10%; left:30%; width:30px; height:55px; background: linear-gradient(180deg, #1a1a12 0%, #0a0a06 100%); border-radius: 30% 30% 20% 20% / 40% 40% 30% 30%; animation: tw-figure 7s ease-in-out infinite; }
.scn-tar-water-dose .dim-lamp { position:absolute; top:20%; left:50%; width:12px; height:20px; background: radial-gradient(ellipse at 50% 30%, #6a6a3a 0%, #3a3a1a 100%); border-radius: 20% 20% 10% 10%; box-shadow: 0 0 15px 5px rgba(50,50,20,0.3); animation: tw-lamp 5s ease-in-out infinite alternate; }
.scn-tar-water-dose .vapor-thread { position:absolute; top:25%; left:48%; width:8px; height:40px; background: linear-gradient(180deg, rgba(100,100,70,0.2) 0%, transparent 100%); border-radius: 50%; filter: blur(3px); animation: tw-vapor 8s linear infinite; }
@keyframes tw-cup { 0% { transform: rotate(10deg) translateY(0) } 50% { transform: rotate(10deg) translateY(-2px) } 100% { transform: rotate(10deg) translateY(0) } }
@keyframes tw-drip { 0% { transform: scaleY(1) translateY(0); opacity:0.6 } 50% { transform: scaleY(1.5) translateY(5px); opacity:0.3 } 100% { transform: scaleY(1) translateY(10px); opacity:0 } }
@keyframes tw-figure { 0% { transform: scale(1) } 30% { transform: scale(0.95) } 60% { transform: scale(1.02) } 100% { transform: scale(1) } }
@keyframes tw-lamp { 0% { transform: scaleY(1) scaleX(1); opacity:0.5 } 50% { transform: scaleY(1.1) scaleX(0.9); opacity:0.8 } 100% { transform: scaleY(0.9) scaleX(1.1); opacity:0.4 } }
@keyframes tw-vapor { 0% { transform: translateX(0) scale(1); opacity:0.2 } 50% { transform: translateX(5px) scale(1.2); opacity:0.1 } 100% { transform: translateX(-5px) scale(0.8); opacity:0 } }

.scn-biddy-comes {
  background: linear-gradient(180deg, #3d2b1f 0%, #2a1a10 60%, #1a0e08 100%),
              radial-gradient(ellipse at 50% 100%, #6b4c3b 0%, transparent 70%);
}
.scn-biddy-comes .wall {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(180deg, #4a3522 0%, #2e1e12 100%);
  animation: bc-wall 20s ease-in-out infinite alternate;
}
.scn-biddy-comes .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #2a1a10 0%, #1a0e08 100%);
}
.scn-biddy-comes .table {
  position: absolute; bottom: 28%; left: 20%; width: 60px; height: 40px;
  background: linear-gradient(180deg, #6b4c3b 0%, #3d2b1f 100%);
  border-radius: 3px; box-shadow: 0 4px 8px rgba(0,0,0,0.6);
  transform: perspective(200px) rotateX(5deg);
  animation: bc-table 8s ease-in-out infinite alternate;
}
.scn-biddy-comes .candle-glow {
  position: absolute; bottom: 45%; left: 30%; width: 12px; height: 20px;
  background: radial-gradient(circle, #ffd080 0%, #b08040 70%);
  border-radius: 50% 50% 20% 20%;
  box-shadow: 0 0 30px 10px #b08040, 0 0 60px 20px rgba(176,128,64,0.3);
  animation: bc-glow 3s ease-in-out infinite alternate;
}
.scn-biddy-comes .figure-biddy {
  position: absolute; bottom: 25%; left: 45%; width: 20px; height: 50px;
  background: linear-gradient(180deg, #4a3522 0%, #2a1a10 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bc-biddy 6s ease-in-out infinite;
}
.scn-biddy-comes .box {
  position: absolute; bottom: 30%; left: 55%; width: 14px; height: 10px;
  background: linear-gradient(180deg, #785d4a 0%, #4a3522 100%);
  border-radius: 2px; box-shadow: 0 2px 4px rgba(0,0,0,0.5);
  animation: bc-box 6s ease-in-out infinite;
}
.scn-biddy-comes .door {
  position: absolute; right: 10%; bottom: 20%; width: 30px; height: 70px;
  background: linear-gradient(180deg, #4a3522 0%, #2a1a10 100%);
  border-radius: 2px 10% 0 0;
  transform: skewY(2deg);
  animation: bc-door 12s ease-in-out infinite alternate;
}
@keyframes bc-wall { 0% { opacity: 0.9 } 50% { opacity: 1 } 100% { opacity: 0.8 } }
@keyframes bc-table { 0% { transform: perspective(200px) rotateX(5deg) translateY(0) } 50% { transform: perspective(200px) rotateX(4deg) translateY(-1px) } 100% { transform: perspective(200px) rotateX(5deg) translateY(0) } }
@keyframes bc-glow { 0% { box-shadow: 0 0 20px 8px #b08040, 0 0 40px 15px rgba(176,128,64,0.2); opacity: 0.85 } 50% { box-shadow: 0 0 40px 14px #d4a060, 0 0 80px 25px rgba(212,160,96,0.4); opacity: 1 } 100% { box-shadow: 0 0 25px 10px #b08040, 0 0 50px 18px rgba(176,128,64,0.25); opacity: 0.9 } }
@keyframes bc-biddy { 0% { transform: translateX(0) translateY(0) rotate(-1deg) } 25% { transform: translateX(5px) translateY(-2px) rotate(1deg) } 50% { transform: translateX(10px) translateY(0) rotate(-1deg) } 75% { transform: translateX(15px) translateY(-2px) rotate(1deg) } 100% { transform: translateX(20px) translateY(0) rotate(0) } }
@keyframes bc-box { 0% { transform: translateY(0) } 50% { transform: translateY(-3px) rotate(2deg) } 100% { transform: translateY(0) } }
@keyframes bc-door { 0% { transform: skewY(2deg) scaleX(1) } 50% { transform: skewY(1deg) scaleX(0.98) } 100% { transform: skewY(2deg) scaleX(1) } }

.scn-orlick-suspect {
  background: linear-gradient(180deg, #1e1e2a 0%, #14141a 60%, #0a0a0f 100%),
              radial-gradient(ellipse at 70% 30%, #2a2a3b 0%, transparent 60%);
}
.scn-orlick-suspect .bg-wall {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #242438 0%, #18182a 100%);
  animation: os-wall 5s ease-in-out infinite alternate;
}
.scn-orlick-suspect .bg-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #14141a 0%, #0a0a0f 100%);
}
.scn-orlick-suspect .table {
  position: absolute; bottom: 30%; left: 30%; width: 70px; height: 35px;
  background: linear-gradient(180deg, #3b3b4d 0%, #242438 100%);
  border-radius: 3px; box-shadow: 0 4px 10px rgba(0,0,0,0.8);
  transform: perspective(200px) rotateX(6deg);
  animation: os-table 4s ease-in-out infinite alternate;
}
.scn-orlick-suspect .lantern-flicker {
  position: absolute; bottom: 50%; left: 40%; width: 10px; height: 18px;
  background: radial-gradient(circle, #d08040 0%, #804020 70%);
  border-radius: 50% 50% 20% 20%;
  box-shadow: 0 0 25px 8px #804020, 0 0 50px 18px rgba(128,64,32,0.4);
  animation: os-flicker 0.8s ease-in-out infinite alternate;
}
.scn-orlick-suspect .figure-police {
  position: absolute; bottom: 22%; left: 20%; width: 22px; height: 55px;
  background: linear-gradient(180deg, #3a3a4d 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: os-police 3s ease-in-out infinite;
}
.scn-orlick-suspect .figure-joe {
  position: absolute; bottom: 22%; left: 50%; width: 25px; height: 58px;
  background: linear-gradient(180deg, #4a4a5e 0%, #2a2a3b 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: os-joe 3s ease-in-out infinite;
}
.scn-orlick-suspect .shadow {
  position: absolute; bottom: 20%; left: 55%; width: 30px; height: 70px;
  background: rgba(0,0,0,0.6);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  filter: blur(4px);
  transform: skewX(-5deg);
  animation: os-shadow 5s ease-in-out infinite alternate;
}
@keyframes os-wall { 0% { opacity: 0.7 } 50% { opacity: 1 } 100% { opacity: 0.6 } }
@keyframes os-table { 0% { transform: perspective(200px) rotateX(6deg) translateY(0) } 50% { transform: perspective(200px) rotateX(5deg) translateY(-1px) } 100% { transform: perspective(200px) rotateX(6deg) translateY(0) } }
@keyframes os-flicker { 0% { opacity: 0.6; box-shadow: 0 0 15px 5px #804020, 0 0 30px 10px rgba(128,64,32,0.3) } 50% { opacity: 1; box-shadow: 0 0 35px 12px #a05030, 0 0 70px 25px rgba(160,80,48,0.5) } 100% { opacity: 0.7; box-shadow: 0 0 20px 7px #804020, 0 0 40px 15px rgba(128,64,32,0.35) } }
@keyframes os-police { 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 os-joe { 0% { transform: translateX(0) rotate(0) } 25% { transform: translateX(-2px) rotate(-1deg) } 50% { transform: translateX(0) rotate(0) } 75% { transform: translateX(2px) rotate(1deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes os-shadow { 0% { opacity: 0.5; transform: skewX(-5deg) translateY(0) } 50% { opacity: 0.7; transform: skewX(-3deg) translateY(-2px) } 100% { opacity: 0.5; transform: skewX(-5deg) translateY(0) } }

.scn-orlick-conciliated {
  background: linear-gradient(180deg, #2e1e12 0%, #1a0e08 60%, #0d0704 100%),
              radial-gradient(ellipse at 50% 100%, #6b4c3b 0%, transparent 70%);
}
.scn-orlick-conciliated .bg-wall {
  position: absolute; inset: 0 0 38% 0;
  background: linear-gradient(180deg, #3d2b1f 0%, #2a1a10 100%);
  animation: oc-wall 15s ease-in-out infinite alternate;
}
.scn-orlick-conciliated .bg-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 38%;
  background: linear-gradient(180deg, #2a1a10 0%, #1a0e08 100%);
}
.scn-orlick-conciliated .lamp {
  position: absolute; bottom: 45%; left: 15%; width: 8px; height: 15px;
  background: radial-gradient(circle, #e0c080 0%, #b08040 70%);
  border-radius: 50% 50% 20% 20%;
  box-shadow: 0 0 20px 8px #b08040, 0 0 40px 15px rgba(176,128,64,0.3);
  animation: oc-lamp 4s ease-in-out infinite alternate;
}
.scn-orlick-conciliated .figure-orlick {
  position: absolute; bottom: 24%; left: 40%; width: 22px; height: 52px;
  background: linear-gradient(180deg, #5e4030 0%, #3d2b1f 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: oc-orlick 5s ease-in-out infinite;
}
.scn-orlick-conciliated .figure-woman {
  position: absolute; bottom: 24%; left: 55%; width: 20px; height: 48px;
  background: linear-gradient(180deg, #6b4c3b 0%, #4a3522 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: oc-woman 5s ease-in-out infinite;
}
.scn-orlick-conciliated .child {
  position: absolute; bottom: 22%; left: 48%; width: 14px; height: 32px;
  background: linear-gradient(180deg, #4a3522 0%, #2e1e12 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: oc-child 6s ease-in-out infinite;
}
@keyframes oc-wall { 0% { opacity: 0.85 } 50% { opacity: 1 } 100% { opacity: 0.8 } }
@keyframes oc-lamp { 0% { box-shadow: 0 0 15px 5px #b08040, 0 0 30px 10px rgba(176,128,64,0.2); opacity: 0.9 } 50% { box-shadow: 0 0 25px 10px #c09050, 0 0 50px 20px rgba(192,144,80,0.35); opacity: 1 } 100% { box-shadow: 0 0 18px 6px #b08040, 0 0 35px 12px rgba(176,128,64,0.25); opacity: 0.95 } }
@keyframes oc-orlick { 0% { transform: translateX(0) translateY(0) rotate(-1deg) } 25% { transform: translateX(3px) translateY(-1px) rotate(0) } 50% { transform: translateX(0) translateY(0) rotate(1deg) } 75% { transform: translateX(-3px) translateY(-1px) rotate(0) } 100% { transform: translateX(0) translateY(0) rotate(-1deg) } }
@keyframes oc-woman { 0% { transform: translateX(0) translateY(0) rotate(1deg) } 25% { transform: translateX(-2px) translateY(-1px) rotate(0) } 50% { transform: translateX(0) translateY(0) rotate(-1deg) } 75% { transform: translateX(2px) translateY(-1px) rotate(0) } 100% { transform: translateX(0) translateY(0) rotate(1deg) } }
@keyframes oc-child { 0% { transform: translateY(0) } 50% { transform: translateY(-3px) } 100% { transform: translateY(0) } }

.scn-annual-visits {
  background: linear-gradient(180deg, #2e1e12 0%, #1a0e08 60%, #0d0704 100%),
              radial-gradient(ellipse at 30% 50%, #4a3522 0%, transparent 70%);
}
.scn-annual-visits .wall {
  position: absolute; inset: 0 0 38% 0;
  background: linear-gradient(180deg, #3d2b1f 0%, #2a1a10 100%);
  animation: av-wall 25s ease-in-out infinite alternate;
}
.scn-annual-visits .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 38%;
  background: linear-gradient(180deg, #2a1a10 0%, #1a0e08 100%);
}
.scn-annual-visits .desk {
  position: absolute; bottom: 30%; left: 20%; width: 65px; height: 30px;
  background: linear-gradient(180deg, #6b4c3b 0%, #3d2b1f 100%);
  border-radius: 3px; box-shadow: 0 4px 8px rgba(0,0,0,0.6);
  transform: perspective(200px) rotateX(4deg);
  animation: av-desk 10s ease-in-out infinite alternate;
}
.scn-annual-visits .lamp {
  position: absolute; bottom: 48%; left: 50%; width: 10px; height: 18px;
  background: radial-gradient(circle, #e0c080 0%, #b08040 70%);
  border-radius: 50% 50% 20% 20%;
  box-shadow: 0 0 25px 8px #b08040, 0 0 50px 18px rgba(176,128,64,0.3);
  animation: av-lamp 4s ease-in-out infinite alternate;
}
.scn-annual-visits .figure-visitor {
  position: absolute; bottom: 22%; left: 35%; width: 20px; height: 54px;
  background: linear-gradient(180deg, #5e4030 0%, #3d2b1f 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: av-visitor 7s ease-in-out infinite;
}
.scn-annual-visits .figure-seated {
  position: absolute; bottom: 26%; left: 55%; width: 24px; height: 44px;
  background: linear-gradient(180deg, #6b4c3b 0%, #4a3522 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: av-seated 7s ease-in-out infinite;
}
.scn-annual-visits .coin {
  position: absolute; bottom: 35%; left: 40%; width: 6px; height: 6px;
  background: radial-gradient(circle, #e0c080 0%, #b08040 100%);
  border-radius: 50%;
  box-shadow: 0 0 8px 2px #b08040;
  animation: av-coin 3s ease-in-out infinite;
}
@keyframes av-wall { 0% { opacity: 0.9 } 50% { opacity: 1 } 100% { opacity: 0.85 } }
@keyframes av-desk { 0% { transform: perspective(200px) rotateX(4deg) translateY(0) } 50% { transform: perspective(200px) rotateX(3deg) translateY(-1px) } 100% { transform: perspective(200px) rotateX(4deg) translateY(0) } }
@keyframes av-lamp { 0% { box-shadow: 0 0 15px 5px #b08040, 0 0 30px 10px rgba(176,128,64,0.2); opacity: 0.9 } 50% { box-shadow: 0 0 35px 12px #c09050, 0 0 70px 25px rgba(192,144,80,0.4); opacity: 1 } 100% { box-shadow: 0 0 20px 7px #b08040, 0 0 40px 15px rgba(176,128,64,0.25); opacity: 0.95 } }
@keyframes av-visitor { 0% { transform: translateX(0) translateY(0) rotate(-1deg) } 25% { transform: translateX(4px) translateY(-2px) rotate(1deg) } 50% { transform: translateX(0) translateY(0) rotate(-1deg) } 75% { transform: translateX(-4px) translateY(-2px) rotate(1deg) } 100% { transform: translateX(0) translateY(0) rotate(-1deg) } }
@keyframes av-seated { 0% { transform: rotate(0) } 25% { transform: rotate(1deg) } 50% { transform: rotate(0) } 75% { transform: rotate(-1deg) } 100% { transform: rotate(0) } }
@keyframes av-coin { 0% { transform: translateY(0) scale(1); opacity: 0.8 } 50% { transform: translateY(-4px) scale(1.2); opacity: 1 } 100% { transform: translateY(0) scale(1); opacity: 0.8 } }

/* ORLICK-THREATENS */
.scn-orlick-threatens {
  background: linear-gradient(180deg, #4a2a1a 0%, #2a1a0a 80%, #1a0a00 100%),
              radial-gradient(ellipse at 40% 60%, #c8553d 0%, transparent 80%);
}
.scn-orlick-threatens .bg-fireglow {
  position: absolute; inset: 0; background: radial-gradient(ellipse at 40% 60%, #d06030 0%, #6a2a10 60%, transparent 100%);
  animation: orl-fireglow 4s ease-in-out infinite alternate;
}
.scn-orlick-threatens .wall-shadow {
  position: absolute; top: 10%; left: 20%; width: 70%; height: 80%;
  background: linear-gradient(135deg, rgba(0,0,0,.6) 0%, transparent 70%);
  border-radius: 20% 30% 0 0;
}
.scn-orlick-threatens .fireplace {
  position: absolute; bottom: 15%; left: 50%; width: 120px; height: 90px; transform: translateX(-50%);
  background: linear-gradient(180deg, #5a3a2a 0%, #3a1a0a 100%);
  border-radius: 10% 10% 30% 30% / 20% 20% 40% 40%;
  box-shadow: inset 0 0 30px #1a0a00;
}
.scn-orlick-threatens .fire {
  position: absolute; bottom: 20%; left: 50%; width: 50px; height: 40px; transform: translateX(-50%);
  background: radial-gradient(ellipse at 50% 80%, #f0a030 0%, #c8553d 50%, transparent 100%);
  border-radius: 50% 50% 30% 30%;
  animation: orl-fire 0.8s ease-in-out infinite alternate;
}
.scn-orlick-threatens .figure-orlick {
  position: absolute; bottom: 20%; left: 30%; width: 22px; height: 60px;
  background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  box-shadow: -8px 0 8px rgba(0,0,0,.5);
  animation: orl-orlick 6s ease-in-out infinite;
}
.scn-orlick-threatens .figure-joe {
  position: absolute; bottom: 20%; left: 55%; width: 24px; height: 58px;
  background: linear-gradient(180deg, #2a2a2a 0%, #1a1a1a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: orl-joe 5s ease-in-out infinite alternate;
}
.scn-orlick-threatens .pump {
  position: absolute; bottom: 22%; left: 65%; width: 16px; height: 40px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 2px 0 4px rgba(0,0,0,.6);
}
@keyframes orl-fireglow {
  0% { opacity: 0.7; }
  50% { opacity: 1; }
  100% { opacity: 0.75; }
}
@keyframes orl-fire {
  0% { transform: translateX(-50%) scaleY(1) rotate(-2deg); }
  50% { transform: translateX(-50%) scaleY(1.15) rotate(1deg); }
  100% { transform: translateX(-50%) scaleY(0.9) rotate(-1deg); }
}
@keyframes orl-orlick {
  0% { transform: translateX(0) translateY(0) rotate(0deg); }
  25% { transform: translateX(2px) translateY(-1px) rotate(2deg); }
  50% { transform: translateX(-1px) translateY(0) rotate(-1deg); }
  75% { transform: translateX(3px) translateY(-2px) rotate(1deg); }
  100% { transform: translateX(0) translateY(0) rotate(0deg); }
}
@keyframes orl-joe {
  0% { transform: translateY(0) rotate(0deg); }
  100% { transform: translateY(-3px) rotate(1deg); }
}

/* ESTELLA-ABROAD */
.scn-estella-abroad {
  background: linear-gradient(135deg, #2a2a3a 0%, #1a1a2e 50%, #0e0e1a 100%),
              radial-gradient(circle at 70% 30%, #4a4a5e 0%, transparent 70%);
}
.scn-estella-abroad .room-bg {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, #1e1e2e 0%, #12121c 100%);
}
.scn-estella-abroad .window-dim {
  position: absolute; top: 10%; left: 55%; width: 60px; height: 80px;
  background: linear-gradient(180deg, #3a3a4e 0%, #2a2a3a 100%);
  border: 2px solid #4a4a5e; border-radius: 2px;
  box-shadow: inset 0 0 20px #0a0a1a;
  animation: est-window 12s ease-in-out infinite alternate;
}
.scn-estella-abroad .portrait-frame {
  position: absolute; top: 20%; left: 50%; width: 50px; height: 70px; transform: translateX(-50%);
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 5px;
  box-shadow: 0 4px 12px rgba(0,0,0,.7), inset 0 0 4px #7a6a5a;
}
.scn-estella-abroad .figure-estella {
  position: absolute; top: 25%; left: 50%; width: 16px; height: 44px; transform: translateX(-50%);
  background: linear-gradient(180deg, #3e2a3a 0%, #2a1a2a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: top center;
  animation: est-figure 6s ease-in-out infinite alternate;
}
.scn-estella-abroad .candle {
  position: absolute; bottom: 30%; left: 35%; width: 6px; height: 18px;
  background: linear-gradient(180deg, #7a6a5a 0%, #5a4a3a 100%);
  border-radius: 2px;
}
.scn-estella-abroad .candle-glow {
  position: absolute; bottom: 30%; left: 35%; width: 30px; height: 30px; transform: translate(-12px, -10px);
  background: radial-gradient(circle, #a08050 0%, #604030 40%, transparent 70%);
  border-radius: 50%;
  animation: est-glow 3s ease-in-out infinite alternate;
}
.scn-estella-abroad .cobweb {
  position: absolute; top: 5%; left: 10%; width: 40px; height: 20px;
  background: repeating-linear-gradient(45deg, rgba(255,255,255,.1) 0px, rgba(255,255,255,.1) 1px, transparent 1px, transparent 4px);
  border-radius: 50%;
  filter: blur(1px);
  animation: est-cobweb 20s ease-in-out infinite alternate;
}
@keyframes est-window {
  0% { opacity: 0.4; }
  50% { opacity: 0.7; }
  100% { opacity: 0.3; }
}
@keyframes est-figure {
  0% { transform: translateX(-50%) rotate(0deg); }
  50% { transform: translateX(-50%) rotate(2deg) translateY(-2px); }
  100% { transform: translateX(-50%) rotate(-1deg) translateY(0); }
}
@keyframes est-glow {
  0% { opacity: 0.6; transform: translate(-12px, -10px) scale(0.9); }
  50% { opacity: 1; transform: translate(-12px, -10px) scale(1.1); }
  100% { opacity: 0.7; transform: translate(-12px, -10px) scale(1); }
}
@keyframes est-cobweb {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(15deg); }
}

/* DARK-WALK */
.scn-dark-walk {
  background: linear-gradient(180deg, #0a0a1a 0%, #1a1a2e 40%, #0e0e1a 100%),
              radial-gradient(ellipse at 50% 30%, #1a1a2e 0%, transparent 80%);
}
.scn-dark-walk .night-sky {
  position: absolute; inset: 0; background: linear-gradient(180deg, #0a0a1a 0%, #0e0e1a 60%, #12121c 100%);
  animation: dw-sky 15s ease-in-out infinite alternate;
}
.scn-dark-walk .moon-haze {
  position: absolute; top: 12%; left: 60%; width: 40px; height: 40px;
  background: radial-gradient(circle, rgba(180,180,200,.2) 0%, rgba(180,180,200,.05) 60%, transparent 100%);
  border-radius: 50%;
  filter: blur(8px);
  animation: dw-moon 20s ease-in-out infinite alternate;
}
.scn-dark-walk .ground-path {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #1a1a24 0%, #0e0e14 100%);
  border-radius: 40% 60% 0 0 / 20% 30% 0 0;
}
.scn-dark-walk .figure-pip {
  position: absolute; bottom: 15%; left: 40%; width: 14px; height: 40px;
  background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: dw-pip 4s ease-in-out infinite;
}
.scn-dark-walk .figure-orlick2 {
  position: absolute; bottom: 15%; left: 48%; width: 16px; height: 42px;
  background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: dw-orlick 4.5s ease-in-out infinite;
}
.scn-dark-walk .tree-silhouette {
  position: absolute; bottom: 10%; left: 20%; width: 30px; height: 80px;
  background: linear-gradient(180deg, #0e0e14 0%, #0a0a0e 100%);
  border-radius: 50% 50% 20% 20% / 60% 60% 20% 20%;
  box-shadow: -10px 0 8px rgba(0,0,0,.5);
}
.scn-dark-walk .fence-rail {
  position: absolute; bottom: 22%; left: 30%; width: 40px; height: 3px;
  background: #0e0e14;
  border-radius: 1px;
  box-shadow: 0 -8px 0 #0e0e14, 0 -16px 0 #0e0e14;
}
@keyframes dw-sky {
  0% { opacity: 0.8; }
  50% { opacity: 1; }
  100% { opacity: 0.9; }
}
@keyframes dw-moon {
  0% { transform: translateX(0) scale(1); opacity: 0.3; }
  50% { transform: translateX(5px) scale(1.1); opacity: 0.5; }
  100% { transform: translateX(-3px) scale(0.95); opacity: 0.35; }
}
@keyframes dw-pip {
  0% { transform: translateX(0) translateY(0) rotate(-1deg); }
  25% { transform: translateX(4px) translateY(-1px) rotate(1deg); }
  50% { transform: translateX(8px) translateY(0) rotate(-1deg); }
  75% { transform: translateX(12px) translateY(-1px) rotate(2deg); }
  100% { transform: translateX(16px) translateY(0) rotate(0deg); }
}
@keyframes dw-orlick {
  0% { transform: translateX(0) translateY(0) rotate(0deg); }
  25% { transform: translateX(3px) translateY(-1px) rotate(1deg); }
  50% { transform: translateX(6px) translateY(0) rotate(-1deg); }
  75% { transform: translateX(10px) translateY(-2px) rotate(1deg); }
  100% { transform: translateX(14px) translateY(0) rotate(0deg); }
}

/* ATTACK-DISCOVERED */
.scn-attack-discovered {
  background: linear-gradient(180deg, #0a0a12 0%, #12121c 50%, #08080e 100%),
              radial-gradient(ellipse at 30% 70%, #1a1a2e 0%, transparent 80%);
}
.scn-attack-discovered .house-silhouette {
  position: absolute; bottom: 20%; left: 25%; width: 100px; height: 80px;
  background: linear-gradient(180deg, #1a1a24 0%, #0e0e16 100%);
  border-radius: 5% 5% 10% 10% / 10% 10% 20% 20%;
  box-shadow: 0 8px 16px rgba(0,0,0,.7);
}
.scn-attack-discovered .broken-door {
  position: absolute; bottom: 22%; left: 28%; width: 30px; height: 50px;
  background: linear-gradient(135deg, #1a1a24 0%, #0e0e16 100%);
  border-left: 3px solid #0a0a12;
  border-top: 2px solid #0a0a12;
  border-radius: 2px;
  transform: rotate(8deg);
  transform-origin: left bottom;
  animation: att-door 4s ease-in-out infinite alternate;
}
.scn-attack-discovered .figure-pip2 {
  position: absolute; bottom: 18%; left: 45%; width: 14px; height: 38px;
  background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: att-pip 2s ease-in-out infinite;
}
.scn-attack-discovered .figure-orlick3 {
  position: absolute; bottom: 18%; left: 52%; width: 16px; height: 40px;
  background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: att-orlick 2.3s ease-in-out infinite;
}
.scn-attack-discovered .path-rush {
  position: absolute; bottom: 0; left: 30%; width: 70%; height: 20%;
  background: linear-gradient(180deg, #12121c 0%, #1a1a24 100%);
  border-radius: 60% 40% 0 0 / 30% 20% 0 0;
}
.scn-attack-discovered .lantern-swing {
  position: absolute; bottom: 25%; left: 20%; width: 8px; height: 8px;
  background: radial-gradient(circle, #a08050 0%, #604030 100%);
  border-radius: 50%;
  box-shadow: 0 0 12px 3px #604030;
  animation: att-lantern 1.5s ease-in-out infinite alternate;
}
.scn-attack-discovered .shadow-streak {
  position: absolute; top: 5%; left: 65%; width: 40px; height: 70px;
  background: linear-gradient(180deg, rgba(0,0,0,.4) 0%, transparent 100%);
  transform: skewX(-10deg);
  border-radius: 20% 20% 0 0;
  animation: att-streak 8s ease-in-out infinite alternate;
}
@keyframes att-door {
  0% { transform: rotate(8deg); }
  50% { transform: rotate(12deg) translateY(2px); }
  100% { transform: rotate(6deg) translateY(-1px); }
}
@keyframes att-pip {
  0% { transform: translateX(0) translateY(0) rotate(-2deg); }
  50% { transform: translateX(6px) translateY(-2px) rotate(2deg); }
  100% { transform: translateX(12px) translateY(0) rotate(-1deg); }
}
@keyframes att-orlick {
  0% { transform: translateX(0) translateY(0) rotate(1deg); }
  50% { transform: translateX(5px) translateY(-1px) rotate(-1deg); }
  100% { transform: translateX(10px) translateY(0) rotate(2deg); }
}
@keyframes att-lantern {
  0% { transform: rotate(-20deg); }
  50% { transform: rotate(10deg); }
  100% { transform: rotate(-10deg); }
}
@keyframes att-streak {
  0% { opacity: 0.3; transform: skewX(-10deg) translateX(0); }
  100% { opacity: 0.6; transform: skewX(-10deg) translateX(10px); }
}

/* Scene 1: pale-young-gentleman */
.scn-pale-young-gentleman {
  background:
    linear-gradient(180deg, #2a1e1e 0%, #3a2626 30%, #1a1212 100%),
    radial-gradient(ellipse at 50% 70%, #4a3030 0%, transparent 60%);
}
.scn-pale-young-gentleman .table {
  position: absolute; bottom: 18%; left: 50%; width: 140px; height: 12px;
  transform: translateX(-50%);
  background: linear-gradient(90deg, #5a3a2a 0%, #7a4a3a 50%, #5a3a2a 100%);
  border-radius: 4px;
  box-shadow: 0 4px 10px rgba(0,0,0,0.6);
  animation: pale-table 12s ease-in-out infinite;
}
.scn-pale-young-gentleman .chair-left {
  position: absolute; bottom: 8%; left: 34%; width: 30px; height: 40px;
  background: linear-gradient(180deg, #4a2a1a 0%, #2a1a0a 100%);
  border-radius: 10% 10% 40% 40%;
  transform-origin: bottom center;
  animation: pale-chair 6s ease-in-out infinite alternate;
}
.scn-pale-young-gentleman .chair-right {
  position: absolute; bottom: 8%; right: 34%; width: 30px; height: 40px;
  background: linear-gradient(180deg, #4a2a1a 0%, #2a1a0a 100%);
  border-radius: 10% 10% 40% 40%;
  transform-origin: bottom center;
  animation: pale-chair 6s ease-in-out infinite alternate-reverse;
}
.scn-pale-young-gentleman .figure-standing {
  position: absolute; bottom: 20%; left: 58%; width: 20px; height: 50px;
  background: linear-gradient(180deg, #3a2e2e 0%, #1a1212 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pale-standing 4s ease-in-out infinite;
}
.scn-pale-young-gentleman .candle {
  position: absolute; bottom: 26%; left: 48%; width: 8px; height: 20px;
  background: linear-gradient(180deg, #ffd080 0%, #b08040 100%);
  border-radius: 3px;
  box-shadow: 0 0 24px 6px #ffc060;
  animation: pale-candle 2s ease-in-out infinite alternate;
}
.scn-pale-young-gentleman .cards {
  position: absolute; bottom: 26%; left: 44%; width: 14px; height: 10px;
  background: linear-gradient(135deg, #c8b898 0%, #f0e8d0 50%, #c8b898 100%);
  border-radius: 2px;
  transform: rotate(-15deg);
  box-shadow: 1px 1px 4px rgba(0,0,0,0.3);
  animation: pale-cards 3s ease-in-out infinite;
}
.scn-pale-young-gentleman .shadow {
  position: absolute; bottom: 12%; left: 30%; width: 120px; height: 20px;
  background: radial-gradient(ellipse, rgba(0,0,0,0.6) 0%, transparent 70%);
  filter: blur(4px);
  animation: pale-shadow 8s ease-in-out infinite alternate;
}
@keyframes pale-table {
  0% { transform: translateX(-50%) translateY(0); }
  50% { transform: translateX(-50%) translateY(-2px); }
  100% { transform: translateX(-50%) translateY(0); }
}
@keyframes pale-chair {
  0% { transform: rotate(0deg) scaleY(1); }
  50% { transform: rotate(2deg) scaleY(0.98); }
  100% { transform: rotate(-1deg) scaleY(1); }
}
@keyframes pale-standing {
  0% { transform: translateX(0) translateY(0) rotate(0deg); }
  25% { transform: translateX(-2px) translateY(-1px) rotate(1deg); }
  50% { transform: translateX(0) translateY(0) rotate(0deg); }
  75% { transform: translateX(2px) translateY(-1px) rotate(-1deg); }
  100% { transform: translateX(0) translateY(0) rotate(0deg); }
}
@keyframes pale-candle {
  0% { box-shadow: 0 0 20px 4px #ffc060; transform: scaleY(1); }
  50% { box-shadow: 0 0 30px 8px #ffd080; transform: scaleY(1.02); }
  100% { box-shadow: 0 0 22px 5px #ffb040; transform: scaleY(1); }
}
@keyframes pale-cards {
  0% { transform: rotate(-15deg) translateY(0); }
  50% { transform: rotate(-12deg) translateY(-2px); }
  100% { transform: rotate(-18deg) translateY(0); }
}
@keyframes pale-shadow {
  0% { opacity: 0.5; transform: scaleX(1); }
  100% { opacity: 0.8; transform: scaleX(1.1); }
}

/* Scene 2: guilt-about-fight */
.scn-guilt-about-fight {
  background:
    linear-gradient(180deg, #1a0e0a 0%, #3a1a0e 40%, #5a2a10 100%),
    radial-gradient(ellipse at 50% 90%, #7a3a1a 0%, transparent 60%);
}
.scn-guilt-about-fight .fireplace {
  position: absolute; bottom: 0; left: 50%; width: 120px; height: 100px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #2a1a0a 0%, #1a0e0a 100%);
  border-radius: 20% 20% 0 0;
  box-shadow: inset 0 0 30px 10px #6a2a0a;
}
.scn-guilt-about-fight .fire-glow {
  position: absolute; bottom: 5%; left: 50%; width: 60px; height: 40px;
  transform: translateX(-50%);
  background: radial-gradient(ellipse, #ff8c40 0%, #ff6020 30%, transparent 70%);
  border-radius: 50%;
  animation: guilt-glow 2s ease-in-out infinite alternate;
}
.scn-guilt-about-fight .figure {
  position: absolute; bottom: 15%; left: 30%; width: 24px; height: 44px;
  background: linear-gradient(180deg, #1a1210 0%, #0e0a08 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: guilt-figure 3s ease-in-out infinite;
}
.scn-guilt-about-fight .basin {
  position: absolute; bottom: 8%; left: 25%; width: 40px; height: 16px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 30% 30% 10% 10%;
}
.scn-guilt-about-fight .water-drop {
  position: absolute; bottom: 18%; left: 28%; width: 4px; height: 6px;
  background: radial-gradient(circle, #a0c8d0 0%, #608090 100%);
  border-radius: 50%;
  filter: blur(1px);
  animation: guilt-drop 1.5s ease-in-out infinite;
}
.scn-guilt-about-fight .shadow {
  position: absolute; bottom: 0; left: 20%; width: 100px; height: 30px;
  background: radial-gradient(ellipse, rgba(0,0,0,0.7) 0%, transparent 100%);
  animation: guilt-shadow 5s ease-in-out infinite alternate;
}
@keyframes guilt-glow {
  0% { opacity: 0.7; transform: translateX(-50%) scale(1); }
  50% { opacity: 1; transform: translateX(-50%) scale(1.05); }
  100% { opacity: 0.8; transform: translateX(-50%) scale(0.95); }
}
@keyframes guilt-figure {
  0% { transform: translateX(0) rotate(0deg); }
  30% { transform: translateX(-3px) rotate(2deg); }
  70% { transform: translateX(2px) rotate(-2deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes guilt-drop {
  0% { transform: translateY(0) scaleY(1); opacity: 0; }
  20% { opacity: 0.8; }
  80% { opacity: 0.8; }
  100% { transform: translateY(20px) scaleY(0.5); opacity: 0; }
}
@keyframes guilt-shadow {
  0% { opacity: 0.4; transform: scaleX(1); }
  100% { opacity: 0.7; transform: scaleX(1.2); }
}

/* Scene 3: growing-tall */
.scn-growing-tall {
  background:
    linear-gradient(180deg, #2a2a1e 0%, #3a3a2a 40%, #1e1e12 100%),
    radial-gradient(ellipse at 70% 50%, #4a4a3a 0%, transparent 70%);
}
.scn-growing-tall .miss-havisham {
  position: absolute; bottom: 15%; left: 20%; width: 32px; height: 48px;
  background: linear-gradient(180deg, #5a3a2a 0%, #3a2a1a 100%);
  border-radius: 30% 30% 40% 40% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: grow-seat 6s ease-in-out infinite alternate;
}
.scn-growing-tall .pumblechook {
  position: absolute; bottom: 15%; right: 20%; width: 28px; height: 44px;
  background: linear-gradient(180deg, #4a2a1a 0%, #2a1a0a 100%);
  border-radius: 30% 30% 40% 40% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: grow-seat 6s ease-in-out infinite alternate-reverse;
}
.scn-growing-tall .pip-standing {
  position: absolute; bottom: 18%; left: 48%; width: 18px; height: 60px;
  background: linear-gradient(180deg, #2a2a1e 0%, #1a1a0e 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: grow-tall 4s ease-in-out infinite;
}
.scn-growing-tall .table {
  position: absolute; bottom: 20%; left: 50%; width: 100px; height: 8px;
  transform: translateX(-50%);
  background: linear-gradient(90deg, #5a4a3a 0%, #6a5a4a 50%, #5a4a3a 100%);
  border-radius: 2px;
  box-shadow: 0 2px 6px rgba(0,0,0,0.4);
}
.scn-growing-tall .lamp {
  position: absolute; bottom: 28%; left: 52%; width: 12px; height: 30px;
  background: linear-gradient(180deg, #c8a060 0%, #806040 100%);
  border-radius: 4px;
  box-shadow: 0 0 40px 10px #b09050;
  animation: grow-lamp 3s ease-in-out infinite alternate;
}
.scn-growing-tall .window {
  position: absolute; top: 8%; left: 50%; width: 50px; height: 60px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #5a6a7a 0%, #3a4a5a 100%);
  border-radius: 4px;
  opacity: 0.3;
  animation: grow-window 10s ease-in-out infinite alternate;
}
@keyframes grow-seat {
  0% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-2px) rotate(1deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes grow-tall {
  0% { transform: scaleY(1) translateY(0); }
  50% { transform: scaleY(1.03) translateY(-3px); }
  100% { transform: scaleY(1) translateY(0); }
}
@keyframes grow-lamp {
  0% { box-shadow: 0 0 30px 6px #b09050; opacity: 0.8; }
  50% { box-shadow: 0 0 50px 15px #c8a060; opacity: 1; }
  100% { box-shadow: 0 0 35px 8px #a08040; opacity: 0.85; }
}
@keyframes grow-window {
  0% { opacity: 0.2; transform: translateX(-50%) scaleX(1); }
  100% { opacity: 0.4; transform: translateX(-50%) scaleX(1.05); }
}

/* Scene 4: sunday-clothes */
.scn-sunday-clothes {
  background:
    linear-gradient(180deg, #1a2a3a 0%, #2a3a4a 30%, #0a1a2a 100%),
    radial-gradient(ellipse at 80% 20%, #4a6a7a 0%, transparent 70%);
}
.scn-sunday-clothes .joe-figure {
  position: absolute; bottom: 12%; left: 38%; width: 28px; height: 60px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a120a 100%);
  border-radius: 20% 20% 40% 40% / 40% 40% 30% 30%;
  transform-origin: bottom center;
  animation: sunday-joe 3s ease-in-out infinite alternate;
}
.scn-sunday-clothes .joe-figure::after {
  /* Tall collar made with pseudo-element in CSS, but we avoid pseudo in JS? Actually we can only use child divs. Use a separate div for collar */
  content: none;
}
.scn-sunday-clothes .pip-figure {
  position: absolute; bottom: 8%; left: 58%; width: 18px; height: 40px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: sunday-pip 2.5s ease-in-out infinite;
}
.scn-sunday-clothes .fence-back {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30px;
  background: repeating-linear-gradient(90deg, #4a3a2a 0px, #4a3a2a 12px, transparent 12px, transparent 16px);
  animation: sunday-fence 20s linear infinite;
}
.scn-sunday-clothes .fence-front {
  position: absolute; bottom: 5%; left: 0; right: 0; height: 30px;
  background: repeating-linear-gradient(90deg, #3a2a1a 0px, #3a2a1a 14px, transparent 14px, transparent 18px);
  opacity: 0.6;
  animation: sunday-fence 20s linear infinite reverse;
}
.scn-sunday-clothes .gate {
  position: absolute; bottom: 0; left: 50%; width: 40px; height: 50px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 4px 4px 0 0;
  box-shadow: 0 0 10px rgba(0,0,0,0.5);
  animation: sunday-gate 4s ease-in-out infinite;
}
.scn-sunday-clothes .moon {
  position: absolute; top: 6%; right: 10%; width: 20px; height: 20px;
  background: radial-gradient(circle, #e8e0c0 0%, #c8c0a0 100%);
  border-radius: 50%;
  box-shadow: 0 0 40px 10px #d0c8a0;
  animation: sunday-moon 30s linear infinite;
}
@keyframes sunday-joe {
  0% { transform: translateX(0) rotate(0deg) scaleY(1); }
  50% { transform: translateX(2px) rotate(3deg) scaleY(0.97); }
  100% { transform: translateX(-2px) rotate(-2deg) scaleY(1); }
}
@keyframes sunday-pip {
  0% { transform: translateX(0) translateY(0); }
  25% { transform: translateX(-4px) translateY(-2px); }
  75% { transform: translateX(4px) translateY(-1px); }
  100% { transform: translateX(0) translateY(0); }
}
@keyframes sunday-fence {
  0% { background-position-x: 0; }
  100% { background-position-x: 16px; }
}
@keyframes sunday-gate {
  0% { transform: translateX(-50%) rotateY(0deg); }
  50% { transform: translateX(-50%) rotateY(15deg); }
  100% { transform: translateX(-50%) rotateY(0deg); }
}
@keyframes sunday-moon {
  0% { transform: translateX(0); }
  50% { transform: translateX(8px); }
  100% { transform: translateX(0); }
}

/* return-to-satis */
.scn-return-to-satis {
  background: linear-gradient(180deg, #1c1620 0%, #2a1f26 40%, #1a1218 100%),
              radial-gradient(ellipse at 50% 60%, #4a3028 0%, transparent 70%);
}
.scn-return-to-satis .bg-wall { position:absolute; inset:0; background: linear-gradient(135deg, #2a1f24 0%, #1a1218 50%, #0e0a0c 100%); animation: rts-wall 15s ease-in-out infinite alternate; }
.scn-return-to-satis .floor { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #3a2a22 0%, #1e1512 100%); border-radius: 0 0 8% 8%; }
.scn-return-to-satis .archway { position:absolute; top:5%; left:35%; width:30%; height:65%; background: radial-gradient(ellipse at 50% 100%, #2a1f26 0%, transparent 100%); border:15px solid #3a2520; border-bottom:none; border-radius: 50% 50% 0 0; box-shadow: inset 0 -20px 30px rgba(0,0,0,.6); animation: rts-arch 20s ease-in-out infinite; }
.scn-return-to-satis .figure-estella { position:absolute; bottom:28%; left:48%; width:12px; height:32px; background: linear-gradient(180deg, #1a1415 0%, #0c0a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: rts-walk-estella 4s ease-in-out infinite alternate; }
.scn-return-to-satis .figure-pip { position:absolute; bottom:28%; left:40%; width:10px; height:26px; background: linear-gradient(180deg, #1a1818 0%, #0e0c0c 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: rts-walk-pip 4s ease-in-out infinite; }
.scn-return-to-satis .lantern-glow { position:absolute; bottom:32%; left:47%; width:8px; height:8px; background: radial-gradient(circle, #d49a5a 0%, #b07030 60%, transparent 100%); border-radius:50%; box-shadow: 0 0 20px 8px rgba(212,154,90,.5), 0 0 40px 16px rgba(212,154,90,.2); animation: rts-glow 2s ease-in-out infinite alternate; }
.scn-return-to-satis .cobweb { position:absolute; top:6%; left:32%; width:40%; height:40%; background: radial-gradient(ellipse at 30% 30%, rgba(180,160,140,.05) 0%, transparent 60%), conic-gradient(from 0deg, rgba(180,160,140,.08) 0deg, transparent 30deg, rgba(180,160,140,.08) 60deg, transparent 90deg, rgba(180,160,140,.08) 120deg, transparent 150deg, rgba(180,160,140,.08) 180deg, transparent 210deg, rgba(180,160,140,.08) 240deg, transparent 270deg, rgba(180,160,140,.08) 300deg, transparent 330deg, rgba(180,160,140,.08) 360deg); filter: blur(1px); animation: rts-cobweb 30s linear infinite; }
@keyframes rts-wall { 0% { opacity:.9 } 50% { opacity:1 } 100% { opacity:.85 } }
@keyframes rts-arch { 0%,100% { transform: scaleY(1) } 50% { transform: scaleY(1.02) } }
@keyframes rts-walk-estella { 0% { transform: translateX(0) translateY(0) rotate(-2deg) } 50% { transform: translateX(3px) translateY(-1px) rotate(1deg) } 100% { transform: translateX(6px) translateY(0) rotate(-1deg) } }
@keyframes rts-walk-pip { 0% { transform: translateX(0) translateY(0) rotate(0deg) } 50% { transform: translateX(4px) translateY(-1px) rotate(2deg) } 100% { transform: translateX(8px) translateY(0) rotate(0deg) } }
@keyframes rts-glow { 0% { box-shadow: 0 0 12px 4px rgba(212,154,90,.4), 0 0 24px 8px rgba(212,154,90,.15); opacity:.8 } 50% { box-shadow: 0 0 24px 8px rgba(255,190,100,.6), 0 0 48px 16px rgba(255,190,100,.25); opacity:1 } 100% { box-shadow: 0 0 16px 6px rgba(212,154,90,.45), 0 0 32px 12px rgba(212,154,90,.2); opacity:.85 } }
@keyframes rts-cobweb { 0% { transform: rotate(0deg) } 100% { transform: rotate(360deg) } }

/* estella-taunts-again */
.scn-estella-taunts-again {
  background: linear-gradient(180deg, #241e20 0%, #181214 40%, #0e0a0c 100%),
              radial-gradient(ellipse at 50% 30%, #3a2a28 0%, transparent 60%);
}
.scn-estella-taunts-again .bg-room { position:absolute; inset:0; background: linear-gradient(135deg, #2e2224 0%, #181214 50%, #0c080a 100%); animation: eta-room 12s ease-in-out infinite alternate; }
.scn-estella-taunts-again .floor-planks { position:absolute; bottom:0; left:0; right:0; height:25%; background: repeating-linear-gradient(90deg, #2a1c1a 0px, #2a1c1a 6px, #1e1412 6px, #1e1412 12px); border-radius: 4% 4% 0 0; }
.scn-estella-taunts-again .figure-estella-taunt { position:absolute; bottom:22%; left:55%; width:14px; height:36px; background: linear-gradient(180deg, #1a1416 0%, #0e0a0c 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: eta-sway 3s ease-in-out infinite alternate; }
.scn-estella-taunts-again .figure-pip-taunt { position:absolute; bottom:22%; left:40%; width:10px; height:28px; background: linear-gradient(180deg, #1a181a 0%, #0e0c0e 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: eta-shrink 4s ease-in-out infinite; }
.scn-estella-taunts-again .shadow-wall { position:absolute; bottom:22%; left:45%; width:20%; height:40%; background: radial-gradient(ellipse at 50% 50%, rgba(0,0,0,.3) 0%, transparent 70%); filter: blur(8px); animation: eta-shadow 5s ease-in-out infinite alternate; }
.scn-estella-taunts-again .spark-mote { position:absolute; top:20%; left:30%; width:4px; height:4px; background: #d49a5a; border-radius:50%; box-shadow: 0 0 6px 2px #d49a5a, 0 0 12px 4px rgba(212,154,90,.3); animation: eta-mote 8s linear infinite; }
@keyframes eta-room { 0% { opacity:.85 } 50% { opacity:1 } 100% { opacity:.8 } }
@keyframes eta-sway { 0% { transform: translateX(0) rotate(-3deg) } 50% { transform: translateX(2px) rotate(2deg) } 100% { transform: translateX(0) rotate(-1deg) } }
@keyframes eta-shrink { 0% { transform: scaleY(1) translateY(0) } 50% { transform: scaleY(0.95) translateY(1px) } 100% { transform: scaleY(1) translateY(0) } }
@keyframes eta-shadow { 0% { opacity:.3; transform: scaleX(1) } 50% { opacity:.5; transform: scaleX(1.1) } 100% { opacity:.3; transform: scaleX(1) } }
@keyframes eta-mote { 0% { top:20%; left:30%; opacity:0 } 20% { opacity:1 } 80% { opacity:1 } 100% { top:70%; left:50%; opacity:0 } }

/* item-bride-cake */
.scn-item-bride-cake {
  background: linear-gradient(180deg, #0e0a0c 0%, #1a1216 40%, #0c080a 100%),
              radial-gradient(ellipse at 50% 30%, #2a1a20 0%, transparent 70%);
}
.scn-item-bride-cake .bg-dark { position:absolute; inset:0; background: linear-gradient(180deg, #0d0a0c 0%, #1a1014 60%, #0a0608 100%); animation: ibc-fade 20s ease-in-out infinite alternate; }
.scn-item-bride-cake .table-long { position:absolute; bottom:20%; left:10%; right:10%; height:15%; background: linear-gradient(180deg, #2a1a18 0%, #1e1210 100%); border-radius: 4% 4% 15% 15% / 8% 8% 20% 20%; box-shadow: 0 -6px 12px rgba(0,0,0,.6); }
.scn-item-bride-cake .cake-bride { position:absolute; bottom:30%; left:40%; width:20%; height:20%; background: radial-gradient(ellipse at 50% 40%, #c8a07a 0%, #8a6040 60%, #4a3020 100%); border-radius: 50% 50% 20% 20% / 60% 60% 20% 20%; box-shadow: inset 0 -10px 20px rgba(0,0,0,.5), 0 8px 16px rgba(0,0,0,.4); animation: ibc-cake 12s ease-in-out infinite; }
.scn-item-bride-cake .cobweb-left { position:absolute; top:8%; left:5%; width:30%; height:30%; background: radial-gradient(ellipse at 20% 80%, rgba(200,180,160,.08) 0%, transparent 60%), repeating-linear-gradient(45deg, transparent 0px, rgba(180,160,140,.06) 2px, transparent 4px, rgba(180,160,140,.06) 6px, transparent 8px); filter: blur(2px); animation: ibc-web-left 25s linear infinite; }
.scn-item-bride-cake .cobweb-right { position:absolute; top:10%; right:5%; width:25%; height:40%; background: radial-gradient(ellipse at 80% 80%, rgba(200,180,160,.08) 0%, transparent 60%), repeating-linear-gradient(-45deg, transparent 0px, rgba(180,160,140,.06) 2px, transparent 4px, rgba(180,160,140,.06) 6px, transparent 8px); filter: blur(2px); animation: ibc-web-right 30s linear infinite reverse; }
.scn-item-bride-cake .candle-drip { position:absolute; bottom:48%; left:48%; width:4px; height:8px; background: linear-gradient(180deg, #f0d0a0 0%, #d4a060 100%); border-radius: 50% 50% 20% 20% / 30% 30% 60% 60%; box-shadow: 0 0 8px 2px rgba(212,160,96,.3); animation: ibc-drip 8s ease-in-out infinite; }
@keyframes ibc-fade { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.85 } }
@keyframes ibc-cake { 0%,100% { transform: scale(1) } 50% { transform: scale(1.02) } }
@keyframes ibc-web-left { 0% { transform: translate(0,0) } 50% { transform: translate(3px,-2px) } 100% { transform: translate(0,0) } }
@keyframes ibc-web-right { 0% { transform: translate(0,0) } 50% { transform: translate(-3px,-2px) } 100% { transform: translate(0,0) } }
@keyframes ibc-drip { 0% { height:8px; opacity:.6 } 50% { height:12px; opacity:1 } 100% { height:8px; opacity:.6 } }

/* family-bickering */
.scn-family-bickering {
  background: linear-gradient(180deg, #1e1a1c 0%, #141012 40%, #0c080a 100%),
              radial-gradient(ellipse at 50% 50%, #2a2024 0%, transparent 60%);
}
.scn-family-bickering .bg-parlour { position:absolute; inset:0; background: linear-gradient(180deg, #221c20 0%, #141012 60%, #0a0608 100%); animation: fb-parlour 10s ease-in-out infinite alternate; }
.scn-family-bickering .floor-rug { position:absolute; bottom:0; left:10%; right:10%; height:20%; background: radial-gradient(ellipse at 50% 100%, #2a1a1e 0%, #1a1014 100%); border-radius: 30% 30% 0 0 / 50% 50% 0 0; }
.scn-family-bickering .figure-grave-lady { position:absolute; bottom:18%; left:25%; width:14px; height:38px; background: linear-gradient(180deg, #1a1618 0%, #0e0c0e 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: fb-shake-grave 3s ease-in-out infinite alternate; }
.scn-family-bickering .figure-miss-pocket { position:absolute; bottom:18%; left:45%; width:12px; height:34px; background: linear-gradient(180deg, #1c181a 0%, #0e0c0e 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: fb-shake-pocket 2.5s ease-in-out infinite; }
.scn-family-bickering .figure-camilla { position:absolute; bottom:18%; left:65%; width:13px; height:36px; background: linear-gradient(180deg, #1a161a 0%, #0e0c0e 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: fb-shake-camilla 3.5s ease-in-out infinite alternate; }
.scn-family-bickering .window-grille { position:absolute; top:8%; right:8%; width:20%; height:40%; background: linear-gradient(180deg, rgba(60,80,100,.15) 0%, rgba(40,50,60,.1) 100%); border:6px solid #2a2024; border-radius:4px; box-shadow: inset 0 0 20px rgba(0,0,0,.5); animation: fb-window 20s ease-in-out infinite; }
.scn-family-bickering .chair-back { position:absolute; bottom:25%; left:38%; width:18%; height:35%; background: linear-gradient(180deg, #2a1c1a 0%, #1e1210 100%); border-radius: 12% 12% 4% 4% / 20% 20% 8% 8%; box-shadow: 0 4px 8px rgba(0,0,0,.3); animation: fb-chair 15s ease-in-out infinite; }
@keyframes fb-parlour { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.75 } }
@keyframes fb-shake-grave { 0% { transform: translateX(0) rotate(-2deg) } 50% { transform: translateX(2px) rotate(1deg) } 100% { transform: translateX(0) rotate(-2deg) } }
@keyframes fb-shake-pocket { 0% { transform: translateX(0) rotate(0deg) } 50% { transform: translateX(3px) rotate(2deg) } 100% { transform: translateX(0) rotate(0deg) } }
@keyframes fb-shake-camilla { 0% { transform: translateX(0) rotate(1deg) } 50% { transform: translateX(-2px) rotate(-1deg) } 100% { transform: translateX(0) rotate(1deg) } }
@keyframes fb-window { 0%,100% { opacity:.6 } 50% { opacity:.3 } }
@keyframes fb-chair { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.01) } 100% { transform: scaleY(1) } }

/* leave-taking */
.scn-leave-taking {
  background: linear-gradient(180deg, #1a1a3e 0%, #2c2244 50%, #4a3a6e 100%), radial-gradient(ellipse at 50% 100%, #4a3a6e 0%, transparent 70%);
}
.scn-leave-taking .background {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, #1a1a3e 0%, #0d0d24 100%);
  animation: lt-pulse 12s ease-in-out infinite alternate;
}
.scn-leave-taking .door {
  position: absolute;
  bottom: 20%;
  left: 50%;
  width: 100px;
  height: 140px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%);
  border-radius: 4px;
  box-shadow: inset 0 0 20px rgba(0,0,0,0.8);
}
.scn-leave-taking .figure {
  position: absolute;
  bottom: 16%;
  left: 38%;
  width: 20px;
  height: 50px;
  background: linear-gradient(180deg, #0a0a1a 0%, #000 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: lt-figure 6s ease-in-out infinite;
}
.scn-leave-taking .candle-glow {
  position: absolute;
  bottom: 30%;
  left: 58%;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(255,200,100,0.8) 0%, transparent 70%);
  box-shadow: 0 0 40px 20px rgba(255,200,100,0.4);
  animation: lt-glow 3s ease-in-out infinite alternate;
}
.scn-leave-taking .candle-flame {
  position: absolute;
  bottom: 32%;
  left: 59%;
  width: 6px;
  height: 12px;
  background: linear-gradient(180deg, #ffd700 0%, #ff8c00 100%);
  border-radius: 50% 50% 20% 20% / 60% 60% 20% 20%;
  box-shadow: 0 0 10px 5px #ffa500;
  animation: lt-flame 1.5s ease-in-out infinite alternate;
}
.scn-leave-taking .floor {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 20%;
  background: linear-gradient(180deg, #2a1a0a 0%, #1a0a00 100%);
  box-shadow: 0 -10px 20px rgba(0,0,0,0.5);
}
.scn-leave-taking .dust {
  position: absolute;
  top: 30%;
  left: 20%;
  width: 60px;
  height: 60px;
  background: radial-gradient(circle, rgba(200,200,180,0.15) 0%, transparent 100%);
  filter: blur(8px);
  animation: lt-drift 20s linear infinite;
}
@keyframes lt-pulse {
  0% { opacity: 0.8; }
  50% { opacity: 1; }
  100% { opacity: 0.7; }
}
@keyframes lt-figure {
  0% { transform: translateX(0) rotate(-1deg); }
  25% { transform: translateX(5px) rotate(1deg); }
  50% { transform: translateX(10px) rotate(-1deg); }
  75% { transform: translateX(15px) rotate(1deg); }
  100% { transform: translateX(20px) rotate(0deg); }
}
@keyframes lt-glow {
  0% { box-shadow: 0 0 30px 15px rgba(255,200,100,0.3); background-size: 100% 100%; }
  50% { box-shadow: 0 0 50px 25px rgba(255,200,100,0.5); background-size: 120% 120%; }
  100% { box-shadow: 0 0 35px 18px rgba(255,200,100,0.35); background-size: 100% 100%; }
}
@keyframes lt-flame {
  0% { transform: scaleY(1) rotate(-5deg); }
  50% { transform: scaleY(1.3) rotate(3deg); }
  100% { transform: scaleY(0.9) rotate(-2deg); }
}
@keyframes lt-drift {
  0% { transform: translateY(0) translateX(0) scale(1); opacity: 0; }
  10% { opacity: 0.6; }
  90% { opacity: 0.3; }
  100% { transform: translateY(-30px) translateX(30px) scale(0.5); opacity: 0; }
}

/* crying-girl */
.scn-crying-girl {
  background: linear-gradient(180deg, #1a2a3a 0%, #0d1a2a 50%, #1a1a2a 100%), radial-gradient(ellipse at 50% 100%, #1a2a3a 0%, transparent 80%);
}
.scn-crying-girl .wall {
  position: absolute;
  inset: 0 0 25% 0;
  background: linear-gradient(180deg, #1a2a3a 0%, #0d1a2a 100%);
  animation: cg-wall 8s ease-in-out infinite alternate;
}
.scn-crying-girl .table {
  position: absolute;
  bottom: 25%;
  left: 20%;
  width: 60%;
  height: 8px;
  background: linear-gradient(90deg, #3a2a1a 0%, #2a1a0a 100%);
  border-radius: 2px;
  box-shadow: 0 4px 6px rgba(0,0,0,0.4);
}
.scn-crying-girl .lamp {
  position: absolute;
  bottom: 32%;
  left: 45%;
  width: 16px;
  height: 20px;
  background: linear-gradient(180deg, #c8a050 0%, #8a6020 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 0 0 20px 6px rgba(200,160,80,0.5), 0 0 40px 12px rgba(200,160,80,0.2);
  animation: cg-lamp 2s ease-in-out infinite alternate;
}
.scn-crying-girl .girl-silhouette {
  position: absolute;
  bottom: 22%;
  left: 30%;
  width: 24px;
  height: 50px;
  background: linear-gradient(180deg, #0a0a1a 0%, #000 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cg-figure 4s ease-in-out infinite;
}
.scn-crying-girl .tears {
  position: absolute;
  bottom: 34%;
  left: 32%;
  width: 4px;
  height: 8px;
  background: rgba(180,200,220,0.6);
  border-radius: 50%;
  box-shadow: 4px 10px 0 rgba(180,200,220,0.4);
  animation: cg-tears 2.5s linear infinite;
}
.scn-crying-girl .shadow {
  position: absolute;
  bottom: 20%;
  left: 18%;
  width: 40px;
  height: 20px;
  background: radial-gradient(ellipse at center, rgba(0,0,0,0.6) 0%, transparent 100%);
  filter: blur(4px);
  animation: cg-shadow 3s ease-in-out infinite alternate;
}
.scn-crying-girl .chair {
  position: absolute;
  bottom: 23%;
  left: 10%;
  width: 30px;
  height: 40px;
  background: linear-gradient(180deg, #2a1a0a 0%, #1a0a00 100%);
  border-radius: 2px 2px 10% 10%;
  box-shadow: inset 0 -4px 8px rgba(0,0,0,0.6);
}
@keyframes cg-wall {
  0% { opacity: 0.7; }
  100% { opacity: 1; }
}
@keyframes cg-lamp {
  0% { box-shadow: 0 0 15px 4px rgba(200,160,80,0.4), 0 0 30px 8px rgba(200,160,80,0.15); background-size: 100% 100%; }
  50% { box-shadow: 0 0 25px 8px rgba(200,160,80,0.6), 0 0 50px 15px rgba(200,160,80,0.3); background-size: 110% 110%; }
  100% { box-shadow: 0 0 18px 5px rgba(200,160,80,0.45), 0 0 35px 10px rgba(200,160,80,0.2); background-size: 100% 100%; }
}
@keyframes cg-figure {
  0%,100% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-3px) rotate(3deg); }
}
@keyframes cg-tears {
  0% { transform: translateY(0) scale(1); opacity: 0.8; }
  80% { opacity: 0.1; }
  100% { transform: translateY(20px) scale(0.5); opacity: 0; }
}
@keyframes cg-shadow {
  0% { transform: scaleX(1); opacity: 0.6; }
  100% { transform: scaleX(0.8); opacity: 0.3; }
}

/* pumblechook-questions */
.scn-pumblechook-questions {
  background: linear-gradient(180deg, #2a1a0a 0%, #4a2a1a 50%, #6a3a1a 100%), radial-gradient(ellipse at 50% 100%, #6a3a1a 0%, transparent 70%);
}
.scn-pumblechook-questions .fireplace {
  position: absolute;
  bottom: 20%;
  left: 50%;
  width: 120px;
  height: 100px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #3a1a0a 0%, #1a0a00 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: 0 0 30px 10px rgba(200,100,50,0.3);
}
.scn-pumblechook-questions .flames {
  position: absolute;
  bottom: 26%;
  left: 50%;
  width: 40px;
  height: 60px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #ff8c00 0%, #ff4500 50%, #8a1a00 100%);
  border-radius: 50% 50% 20% 20% / 70% 70% 20% 20%;
  box-shadow: 0 0 40px 20px #ff4500;
  animation: pq-flame 1s ease-in-out infinite alternate;
}
.scn-pumblechook-questions .head-silhouette {
  position: absolute;
  bottom: 28%;
  left: 30%;
  width: 30px;
  height: 40px;
  background: linear-gradient(180deg, #1a0a00 0%, #000 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 30% 30%;
  transform-origin: bottom center;
  animation: pq-head 3s ease-in-out infinite;
}
.scn-pumblechook-questions .hand {
  position: absolute;
  bottom: 25%;
  left: 35%;
  width: 12px;
  height: 20px;
  background: linear-gradient(180deg, #1a0a00 0%, #000 100%);
  border-radius: 40% 40% 20% 20%;
  transform-origin: bottom left;
  animation: pq-hand 2s ease-in-out infinite alternate;
}
.scn-pumblechook-questions .chair {
  position: absolute;
  bottom: 18%;
  left: 20%;
  width: 40px;
  height: 50px;
  background: linear-gradient(180deg, #2a1a0a 0%, #1a0a00 100%);
  border-radius: 4px;
  box-shadow: 0 6px 10px rgba(0,0,0,0.5);
}
.scn-pumblechook-questions .shadow {
  position: absolute;
  bottom: 15%;
  left: 15%;
  width: 80px;
  height: 30px;
  background: radial-gradient(ellipse at center, rgba(0,0,0,0.7) 0%, transparent 100%);
  filter: blur(6px);
  animation: pq-shadow 4s ease-in-out infinite alternate;
}
.scn-pumblechook-questions .table {
  position: absolute;
  bottom: 22%;
  left: 25%;
  width: 50px;
  height: 6px;
  background: linear-gradient(90deg, #3a1a0a 0%, #2a0a00 100%);
  border-radius: 2px;
}
@keyframes pq-flame {
  0% { transform: translateX(-50%) scaleY(1) rotate(-5deg); }
  50% { transform: translateX(-50%) scaleY(1.4) rotate(5deg); }
  100% { transform: translateX(-50%) scaleY(0.9) rotate(-3deg); }
}
@keyframes pq-head {
  0% { transform: translateY(0) rotate(0deg); }
  25% { transform: translateY(-2px) rotate(2deg); }
  50% { transform: translateY(0) rotate(-1deg); }
  75% { transform: translateY(1px) rotate(3deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes pq-hand {
  0% { transform: rotate(10deg) translateY(0); }
  100% { transform: rotate(-20deg) translateY(-5px); }
}
@keyframes pq-shadow {
  0% { transform: scaleX(1) scaleY(1); opacity: 0.8; }
  100% { transform: scaleX(1.2) scaleY(0.8); opacity: 0.5; }
}

/* more-lies */
.scn-more-lies {
  background: linear-gradient(180deg, #4a2a0a 0%, #7a4a1a 50%, #a05a20 100%), radial-gradient(ellipse at 50% 100%, #a05a20 0%, transparent 80%);
}
.scn-more-lies .room {
  position: absolute;
  inset: 0 0 30% 0;
  background: linear-gradient(180deg, #4a2a0a 0%, #2a1a0a 100%);
  animation: ml-room 10s ease-in-out infinite alternate;
}
.scn-more-lies .sedan-chair {
  position: absolute;
  bottom: 20%;
  left: 50%;
  width: 60px;
  height: 70px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #6a3a1a 0%, #4a2a0a 100%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 0 8px 15px rgba(0,0,0,0.6);
  animation: ml-chair 3s ease-in-out infinite;
}
.scn-more-lies .dog1 {
  position: absolute;
  bottom: 18%;
  left: 30%;
  width: 25px;
  height: 18px;
  background: linear-gradient(180deg, #5a3a1a 0%, #3a1a0a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform-origin: center;
  animation: ml-dog1 2.5s ease-in-out infinite;
}
.scn-more-lies .dog2 {
  position: absolute;
  bottom: 18%;
  left: 55%;
  width: 25px;
  height: 18px;
  background: linear-gradient(180deg, #5a3a1a 0%, #3a1a0a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform-origin: center;
  animation: ml-dog2 2.8s ease-in-out infinite;
}
.scn-more-lies .gesture-hand {
  position: absolute;
  bottom: 30%;
  left: 40%;
  width: 14px;
  height: 22px;
  background: linear-gradient(180deg, #2a1a0a 0%, #0a0a00 100%);
  border-radius: 50% 50% 20% 20% / 60% 60% 20% 20%;
  transform-origin: bottom left;
  animation: ml-hand 1.5s ease-in-out infinite alternate;
}
.scn-more-lies .lie-balloon {
  position: absolute;
  top: 15%;
  left: 40%;
  width: 60px;
  height: 40px;
  background: radial-gradient(circle, rgba(255,200,100,0.3) 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(6px);
  animation: ml-balloon 4s ease-in-out infinite alternate;
}
.scn-more-lies .shadow {
  position: absolute;
  bottom: 12%;
  left: 30%;
  width: 100px;
  height: 20px;
  background: radial-gradient(ellipse at center, rgba(0,0,0,0.5) 0%, transparent 100%);
  filter: blur(5px);
  animation: ml-shadow 6s ease-in-out infinite alternate;
}
@keyframes ml-room {
  0% { opacity: 0.7; }
  100% { opacity: 1; }
}
@keyframes ml-chair {
  0% { transform: translateX(-50%) translateY(0) rotate(0deg); }
  25% { transform: translateX(-50%) translateY(-5px) rotate(3deg); }
  50% { transform: translateX(-45%) translateY(-2px) rotate(-2deg); }
  75% { transform: translateX(-55%) translateY(0) rotate(4deg); }
  100% { transform: translateX(-50%) translateY(0) rotate(0deg); }
}
@keyframes ml-dog1 {
  0% { transform: translateX(0) scale(1) rotate(0deg); }
  50% { transform: translateX(10px) scale(1.1) rotate(10deg); }
  100% { transform: translateX(0) scale(1) rotate(0deg); }
}
@keyframes ml-dog2 {
  0% { transform: translateX(0) scale(1) rotate(0deg); }
  50% { transform: translateX(-8px) scale(1.05) rotate(-10deg); }
  100% { transform: translateX(0) scale(1) rotate(0deg); }
}
@keyframes ml-hand {
  0% { transform: rotate(-15deg) translateY(0); }
  100% { transform: rotate(30deg) translateY(-4px); }
}
@keyframes ml-balloon {
  0% { transform: scale(0.5) translateY(0); opacity: 0.2; }
  50% { transform: scale(1.2) translateY(-10px); opacity: 0.6; }
  100% { transform: scale(0.8) translateY(5px); opacity: 0.3; }
}
@keyframes ml-shadow {
  0% { transform: scaleX(1) scaleY(1); opacity: 0.4; }
  100% { transform: scaleX(1.3) scaleY(0.7); opacity: 0.2; }
}

/* joe-marries */
.scn-joe-marries {
  background: linear-gradient(180deg, #3a1a0a 0%, #5a2a1a 40%, #2a0a00 100%),
              radial-gradient(circle at 50% 80%, #ff8040 0%, transparent 60%);
}
.scn-joe-marries .fire { position:absolute; bottom:15%; left:20%; width:40%; height:35%; background: radial-gradient(ellipse at 50% 100%, #ff6030 0%, #ff4020 30%, #8a2a10 60%, transparent 80%); border-radius: 50% 50% 30% 30%; animation: jm-fire 2s ease-in-out infinite alternate; }
.scn-joe-marries .joe { position:absolute; bottom:20%; left:60%; width:12%; height:40%; background: linear-gradient(180deg, #1a0a00 0%, #0a0500 100%); border-radius: 40% 40% 30% 30%; transform-origin: bottom center; animation: jm-joe 4s ease-in-out infinite; }
.scn-joe-marries .stone { position:absolute; bottom:10%; left:30%; width:20%; height:25%; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 10% 10% 5% 5%; box-shadow: inset 0 4px 8px rgba(0,0,0,.6); animation: jm-stone 8s ease-in-out infinite; }
.scn-joe-marries .tear { position:absolute; bottom:55%; left:62%; width:2%; height:3%; background: radial-gradient(circle, #80aaff 0%, transparent 70%); border-radius: 50%; animation: jm-tear 5s ease-in-out infinite; }
.scn-joe-marries .glow { position:absolute; bottom:30%; left:15%; width:70%; height:60%; background: radial-gradient(circle at 50% 100%, #ffa060 0%, transparent 70%); animation: jm-glow 3s ease-in-out infinite alternate; }
.scn-joe-marries .smoke1 { position:absolute; bottom:45%; left:25%; width:10%; height:20%; background: rgba(80,60,40,.3); border-radius: 50%; filter: blur(6px); animation: jm-smoke 10s linear infinite; }
.scn-joe-marries .smoke2 { position:absolute; bottom:40%; left:30%; width:8%; height:15%; background: rgba(80,60,40,.2); border-radius: 50%; filter: blur(4px); animation: jm-smoke 12s linear infinite reverse; }
@keyframes jm-fire {
  0% { transform: scaleY(1); opacity:.9; }
  50% { transform: scaleY(1.05) scaleX(1.02); opacity:1; }
  100% { transform: scaleY(0.95); opacity:.8; }
}
@keyframes jm-joe {
  0% { transform: translateX(0) rotate(0); }
  25% { transform: translateX(2%) rotate(2deg); }
  50% { transform: translateX(0) rotate(-1deg); }
  75% { transform: translateX(-2%) rotate(1deg); }
  100% { transform: translateX(0) rotate(0); }
}
@keyframes jm-stone {
  0% { transform: translateY(0); }
  50% { transform: translateY(-1%); }
  100% { transform: translateY(0); }
}
@keyframes jm-tear {
  0% { transform: translateY(0) scale(1); opacity:.8; }
  50% { transform: translateY(10%) scale(.8); opacity:.5; }
  100% { transform: translateY(20%) scale(0); opacity:0; }
}
@keyframes jm-glow {
  0% { opacity:.7; transform: scale(1); }
  50% { opacity:1; transform: scale(1.02); }
  100% { opacity:.8; transform: scale(.98); }
}
@keyframes jm-smoke {
  0% { transform: translateY(0) translateX(0); opacity:.3; }
  50% { transform: translateY(-15%) translateX(5%); opacity:.1; }
  100% { transform: translateY(-30%) translateX(-5%); opacity:0; }
}

/* friendship-oath */
.scn-friendship-oath {
  background: linear-gradient(180deg, #4a2a1a 0%, #6a3a2a 50%, #2a1a0a 100%),
              radial-gradient(circle at 50% 70%, #ff8040 0%, transparent 60%);
}
.scn-friendship-oath .figure-left { position:absolute; bottom:15%; left:35%; width:12%; height:45%; background: linear-gradient(180deg, #1a0a00 0%, #0a0500 100%); border-radius: 40% 40% 30% 30%; transform-origin: bottom center; animation: fo-fig 5s ease-in-out infinite; }
.scn-friendship-oath .figure-right { position:absolute; bottom:15%; left:53%; width:12%; height:45%; background: linear-gradient(180deg, #2a1a0a 0%, #0a0500 100%); border-radius: 40% 40% 30% 30%; transform-origin: bottom center; animation: fo-fig 5s ease-in-out infinite reverse; }
.scn-friendship-oath .arms { position:absolute; bottom:45%; left:38%; width:24%; height:8%; background: linear-gradient(180deg, #3a1a0a 0%, #1a0a00 100%); border-radius: 30% 30% 20% 20%; transform: rotate(-5deg); animation: fo-arms 5s ease-in-out infinite; }
.scn-friendship-oath .glow { position:absolute; bottom:20%; left:20%; width:60%; height:50%; background: radial-gradient(circle at 50% 80%, #ff8040 0%, transparent 60%); animation: fo-glow 3s ease-in-out infinite alternate; }
.scn-friendship-oath .flame1 { position:absolute; bottom:10%; left:15%; width:15%; height:20%; background: radial-gradient(ellipse at 50% 100%, #ff6030 0%, #ff4020 30%, transparent 70%); border-radius: 50% 50% 20% 20%; animation: fo-flame 2s ease-in-out infinite alternate; }
.scn-friendship-oath .flame2 { position:absolute; bottom:10%; left:70%; width:12%; height:18%; background: radial-gradient(ellipse at 50% 100%, #ff6030 0%, #ff4020 30%, transparent 70%); border-radius: 50% 50% 20% 20%; animation: fo-flame 2.5s ease-in-out infinite alternate; }
.scn-friendship-oath .tear { position:absolute; bottom:50%; left:45%; width:2%; height:3%; background: radial-gradient(circle, #80aaff 0%, transparent 70%); border-radius: 50%; animation: fo-tear 4s ease-in-out infinite; }
@keyframes fo-fig {
  0% { transform: translateX(0) rotate(0); }
  25% { transform: translateX(2%) rotate(2deg); }
  50% { transform: translateX(0) rotate(-1deg); }
  75% { transform: translateX(-2%) rotate(1deg); }
  100% { transform: translateX(0) rotate(0); }
}
@keyframes fo-arms {
  0% { transform: rotate(-5deg) scaleX(1); }
  50% { transform: rotate(0deg) scaleX(1.05); }
  100% { transform: rotate(5deg) scaleX(1); }
}
@keyframes fo-glow {
  0% { opacity:.6; transform: scale(1); }
  50% { opacity:1; transform: scale(1.03); }
  100% { opacity:.8; transform: scale(.98); }
}
@keyframes fo-flame {
  0% { transform: scaleY(1); opacity:.8; }
  50% { transform: scaleY(1.1) scaleX(1.02); opacity:1; }
  100% { transform: scaleY(0.9); opacity:.7; }
}
@keyframes fo-tear {
  0% { transform: translateY(0) scale(1); opacity:.8; }
  50% { transform: translateY(10%) scale(.8); opacity:.5; }
  100% { transform: translateY(20%) scale(0); opacity:0; }
}

/* miss-havisham-mentioned */
.scn-miss-havisham-mentioned {
  background: linear-gradient(180deg, #1a0a00 0%, #2a1a0a 50%, #0a0500 100%),
              radial-gradient(circle at 50% 50%, #ff4020 0%, transparent 70%);
}
.scn-miss-havisham-mentioned .clock-face { position:absolute; top:20%; left:35%; width:30%; height:30%; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 50%; box-shadow: inset 0 0 10px rgba(0,0,0,.8), 0 0 20px #ff6030; animation: mh-clock 6s ease-in-out infinite; }
.scn-miss-havisham-mentioned .pendulum { position:absolute; top:45%; left:48%; width:4%; height:30%; background: linear-gradient(180deg, #8a5a3a 0%, #4a2a1a 100%); border-radius: 10% 10% 20% 20%; transform-origin: top center; animation: mh-pendulum 2s ease-in-out infinite; }
.scn-miss-havisham-mentioned .hand-hour { position:absolute; top:35%; left:48%; width:2%; height:10%; background: #6a4a2a; transform-origin: bottom center; border-radius: 20%; animation: mh-hour 12s linear infinite; }
.scn-miss-havisham-mentioned .hand-minute { position:absolute; top:35%; left:48%; width:1.5%; height:14%; background: #8a5a3a; transform-origin: bottom center; border-radius: 20%; animation: mh-minute 1s linear infinite; }
.scn-miss-havisham-mentioned .figure { position:absolute; bottom:10%; left:45%; width:15%; height:35%; background: linear-gradient(180deg, #1a0a00 0%, #0a0500 100%); border-radius: 40% 40% 30% 30%; transform-origin: bottom center; animation: mh-fig 3s ease-in-out infinite; }
.scn-miss-havisham-mentioned .flame { position:absolute; bottom:5%; left:20%; width:10%; height:15%; background: radial-gradient(ellipse at 50% 100%, #ff6030 0%, transparent 70%); border-radius: 50% 50% 20% 20%; animation: mh-flame 1.5s ease-in-out infinite alternate; }
.scn-miss-havisham-mentioned .shadow { position:absolute; bottom:0; left:20%; width:60%; height:30%; background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,.5) 100%); border-radius: 50% 50% 0 0; animation: mh-shadow 4s ease-in-out infinite; }
@keyframes mh-clock {
  0% { transform: rotate(0); opacity:.9; }
  50% { transform: rotate(2deg); opacity:1; }
  100% { transform: rotate(-2deg); opacity:.8; }
}
@keyframes mh-pendulum {
  0% { transform: rotate(20deg); }
  50% { transform: rotate(-20deg); }
  100% { transform: rotate(20deg); }
}
@keyframes mh-hour {
  0% { transform: rotate(0); }
  100% { transform: rotate(360deg); }
}
@keyframes mh-minute {
  0% { transform: rotate(0); }
  100% { transform: rotate(360deg); }
}
@keyframes mh-fig {
  0% { transform: translateX(0) rotate(0); }
  25% { transform: translateX(3%) rotate(5deg); }
  50% { transform: translateX(0) rotate(0); }
  75% { transform: translateX(-3%) rotate(-5deg); }
  100% { transform: translateX(0) rotate(0); }
}
@keyframes mh-flame {
  0% { transform: scaleY(1); opacity:.8; }
  50% { transform: scaleY(1.2) scaleX(1.05); opacity:1; }
  100% { transform: scaleY(0.9); opacity:.7; }
}
@keyframes mh-shadow {
  0% { transform: scaleX(1); opacity:.5; }
  50% { transform: scaleX(1.1); opacity:.8; }
  100% { transform: scaleX(.9); opacity:.5; }
}

/* going-to-play */
.scn-going-to-play {
  background: linear-gradient(180deg, #0a0a2a 0%, #1a1a3e 40%, #2a2a4e 100%),
              radial-gradient(ellipse at 50% 0%, #3a3a6e 0%, transparent 70%);
}
.scn-going-to-play .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #1a1a3e 0%, transparent 100%); animation: gp-sky 20s ease-in-out infinite alternate; }
.scn-going-to-play .ground { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, #2a3a2a 0%, #1a2a1a 100%); border-radius: 40% 40% 0 0; box-shadow: inset 0 4px 12px rgba(0,0,0,.4); animation: gp-ground 15s ease-in-out infinite; }
.scn-going-to-play .figure { position:absolute; bottom:30%; left:20%; width:10%; height:30%; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 40% 40% 30% 30%; transform-origin: bottom center; animation: gp-fig 5s ease-in-out infinite; }
.scn-going-to-play .path { position:absolute; bottom:10%; left:15%; width:70%; height:6%; background: linear-gradient(180deg, #3a4a3a 0%, #2a3a2a 100%); border-radius: 30% 30% 10% 10%; transform: rotate(-2deg); animation: gp-path 8s ease-in-out infinite; }
.scn-going-to-play .house-glow { position:absolute; top:40%; right:15%; width:12%; height:15%; background: radial-gradient(circle, #ffd080 0%, #b08040 50%, transparent 80%); border-radius: 10% 10% 20% 20%; box-shadow: 0 0 30px 10px rgba(255,208,128,.4); animation: gp-glow 6s ease-in-out infinite alternate; }
.scn-going-to-play .star1 { position:absolute; top:8%; left:10%; width:1.5%; height:1.5%; background: radial-gradient(circle, #ffffff 0%, transparent 70%); border-radius: 50%; animation: gp-star 4s ease-in-out infinite; }
.scn-going-to-play .star2 { position:absolute; top:12%; left:30%; width:1%; height:1%; background: radial-gradient(circle, #ffffff 0%, transparent 70%); border-radius: 50%; animation: gp-star 6s ease-in-out infinite 2s; }
.scn-going-to-play .star3 { position:absolute; top:5%; left:50%; width:2%; height:2%; background: radial-gradient(circle, #ffffff 0%, transparent 70%); border-radius: 50%; animation: gp-star 5s ease-in-out infinite 1s; }
@keyframes gp-sky {
  0% { opacity:.8; }
  50% { opacity:1; }
  100% { opacity:.9; }
}
@keyframes gp-ground {
  0% { transform: translateY(0); }
  50% { transform: translateY(-2%); }
  100% { transform: translateY(0); }
}
@keyframes gp-fig {
  0% { transform: translateX(0) rotate(0); }
  25% { transform: translateX(5%) rotate(2deg); }
  50% { transform: translateX(10%) rotate(0); }
  75% { transform: translateX(5%) rotate(-2deg); }
  100% { transform: translateX(0) rotate(0); }
}
@keyframes gp-path {
  0% { transform: rotate(-2deg) scaleX(1); }
  50% { transform: rotate(2deg) scaleX(1.02); }
  100% { transform: rotate(-2deg) scaleX(1); }
}
@keyframes gp-glow {
  0% { opacity:.7; transform: scale(1); }
  50% { opacity:1; transform: scale(1.05); }
  100% { opacity:.8; transform: scale(.98); }
}
@keyframes gp-star {
  0% { opacity:.5; transform: scale(1); }
  50% { opacity:1; transform: scale(1.5); }
  100% { opacity:.5; transform: scale(1); }
}

.scn-convict-eats {
  background: linear-gradient(180deg, #1e1e2a 0%, #2c2c3a 50%, #3a3a4a 100%),
              radial-gradient(ellipse at 50% 0%, #3a3a4a 0%, transparent 70%);
}
.scn-convict-eats .bg-sky {
  position: absolute; inset: 0 0 60% 0;
  background: linear-gradient(180deg, #0f111a 0%, #1a1c28 100%);
  animation: ce-sky 15s ease-in-out infinite alternate;
}
.scn-convict-eats .bg-ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 60%;
  background: linear-gradient(180deg, #1e1e2a 0%, #0a0a0f 100%);
  box-shadow: inset 0 12px 24px rgba(0,0,0,0.6);
}
.scn-convict-eats .figure {
  position: absolute; bottom: 20%; left: 40%;
  width: 40px; height: 70px;
  background: linear-gradient(180deg, #15151a 0%, #08080c 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ce-figure 6s ease-in-out infinite;
}
.scn-convict-eats .arm {
  position: absolute; bottom: 40%; left: 58%;
  width: 30px; height: 10px;
  background: #1a1a22;
  border-radius: 20% 0 0 20% / 50% 0 0 50%;
  transform-origin: right center;
  animation: ce-arm 4s ease-in-out infinite alternate;
}
.scn-convict-eats .pie {
  position: absolute; bottom: 20%; left: 65%;
  width: 20px; height: 14px;
  background: radial-gradient(circle at 30% 50%, #3a2a1a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40%;
  box-shadow: 0 2px 4px rgba(0,0,0,0.5);
  animation: ce-pie 8s ease-in-out infinite;
}
.scn-convict-eats .crust {
  position: absolute; bottom: 23%; left: 63%;
  width: 8px; height: 6px;
  background: #4a3a2a;
  border-radius: 40% 60% 60% 40%;
  transform: rotate(20deg);
  animation: ce-crust 4s ease-in-out infinite alternate;
}
.scn-convict-eats .shadow {
  position: absolute; bottom: 17%; left: 35%;
  width: 60px; height: 14px;
  background: radial-gradient(ellipse, rgba(0,0,0,0.5) 0%, transparent 100%);
  filter: blur(4px);
  animation: ce-shadow 6s ease-in-out infinite;
}
.scn-convict-eats .chain {
  position: absolute; bottom: 30%; left: 42%;
  width: 12px; height: 30px;
  background: repeating-linear-gradient(0deg, #3a3a4a 0px, #3a3a4a 4px, #2a2a3a 4px, #2a2a3a 8px);
  border-radius: 4px;
  animation: ce-chain 3s ease-in-out infinite alternate;
}
@keyframes ce-sky { 0% { opacity:0.7 } 50% { opacity:0.9 } 100% { opacity:0.6 } }
@keyframes ce-figure { 0%,100% { transform: translateX(0) translateY(0) rotate(0deg) } 30% { transform: translateX(-4px) translateY(-1px) rotate(-2deg) } 70% { transform: translateX(4px) translateY(0) rotate(1deg) } }
@keyframes ce-arm { 0% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(-2px) rotate(15deg) } 100% { transform: translateY(0) rotate(-5deg) } }
@keyframes ce-pie { 0%,100% { transform: scale(1) } 50% { transform: scale(1.05) } }
@keyframes ce-crust { 0% { transform: rotate(15deg) } 100% { transform: rotate(30deg) } }
@keyframes ce-shadow { 0%,100% { opacity:0.6 } 50% { opacity:0.9 } }
@keyframes ce-chain { 0% { transform: translateY(0) } 100% { transform: translateY(3px) } }

.scn-other-convict {
  background: linear-gradient(180deg, #1a1a24 0%, #2e2e3a 50%, #3a3a4a 100%),
              radial-gradient(ellipse at 30% 100%, #3a3a4a 0%, transparent 80%);
}
.scn-other-convict .bg-wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #0f121a 0%, #1a1d28 100%);
  box-shadow: inset 0 8px 16px rgba(0,0,0,0.5);
  animation: oc-wall 20s ease-in-out infinite alternate;
}
.scn-other-convict .bg-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #1e1e2a 0%, #0a0a0f 100%);
}
.scn-other-convict .figure-tall {
  position: absolute; bottom: 25%; left: 30%;
  width: 35px; height: 80px;
  background: linear-gradient(180deg, #15151a 0%, #08080c 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: oc-figure 8s ease-in-out infinite;
}
.scn-other-convict .arm-point {
  position: absolute; bottom: 50%; left: 48%;
  width: 40px; height: 8px;
  background: #1a1a22;
  border-radius: 0 40% 40% 0 / 0 80% 80% 0;
  transform-origin: left center;
  animation: oc-arm 5s ease-in-out infinite alternate;
}
.scn-other-convict .barrel {
  position: absolute; bottom: 18%; left: 55%;
  width: 30px; height: 40px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0e0a 100%);
  border-radius: 10% 10% 15% 15%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.6);
  animation: oc-barrel 12s ease-in-out infinite;
}
.scn-other-convict .hat {
  position: absolute; bottom: 75%; left: 28%;
  width: 30px; height: 12px;
  background: #0a0a12;
  border-radius: 50% 50% 20% 20% / 80% 80% 20% 20%;
  transform: rotate(-10deg);
  animation: oc-hat 4s ease-in-out infinite alternate;
}
.scn-other-convict .shadow-other {
  position: absolute; bottom: 20%; left: 25%;
  width: 80px; height: 18px;
  background: radial-gradient(ellipse, rgba(0,0,0,0.6) 0%, transparent 100%);
  filter: blur(6px);
  animation: oc-shadow 7s ease-in-out infinite;
}
@keyframes oc-wall { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.7 } }
@keyframes oc-figure { 0%,100% { transform: translateX(0) rotate(0deg) } 40% { transform: translateX(3px) rotate(1deg) } 80% { transform: translateX(-2px) rotate(-1deg) } }
@keyframes oc-arm { 0% { transform: rotate(0deg) } 50% { transform: rotate(20deg) } 100% { transform: rotate(-10deg) } }
@keyframes oc-barrel { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-2px) } }
@keyframes oc-hat { 0% { transform: rotate(-10deg) } 100% { transform: rotate(15deg) } }
@keyframes oc-shadow { 0%,100% { opacity:0.5 } 50% { opacity:0.8 } }

.scn-bruised-face {
  background: linear-gradient(180deg, #1e1e2a 0%, #2c2c3a 50%, #3a3a4a 100%),
              radial-gradient(ellipse at 50% 50%, #2c2c3a 0%, transparent 60%);
}
.scn-bruised-face .bg-dark {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, #0f111a 0%, #1a1c28 100%);
  animation: bf-bg 10s ease-in-out infinite alternate;
}
.scn-bruised-face .head-profile {
  position: absolute; bottom: 30%; left: 25%;
  width: 50px; height: 60px;
  background: linear-gradient(180deg, #2a2a35 0%, #1a1a25 100%);
  border-radius: 50% 50% 30% 30% / 70% 70% 30% 30%;
  box-shadow: inset 0 -8px 12px rgba(0,0,0,0.4);
  animation: bf-head 6s ease-in-out infinite;
}
.scn-bruised-face .hand {
  position: absolute; bottom: 45%; left: 55%;
  width: 25px; height: 30px;
  background: #2a2a35;
  border-radius: 40% 30% 30% 20% / 50% 40% 30% 20%;
  transform: rotate(30deg);
  transform-origin: bottom left;
  animation: bf-hand 3s ease-in-out infinite alternate;
}
.scn-bruised-face .bruise {
  position: absolute; bottom: 38%; left: 28%;
  width: 14px; height: 14px;
  background: radial-gradient(circle, #4a1a1a 0%, #2a0a0a 100%);
  border-radius: 50%;
  box-shadow: 0 0 8px 2px rgba(74,26,26,0.6);
  animation: bf-bruise 4s ease-in-out infinite alternate;
}
.scn-bruised-face .light-window {
  position: absolute; bottom: 60%; right: 10%;
  width: 40px; height: 50px;
  background: radial-gradient(circle at 50% 50%, rgba(200,200,220,0.2) 0%, transparent 70%);
  filter: blur(6px);
  animation: bf-light 8s ease-in-out infinite alternate;
}
.scn-bruised-face .shadow-face {
  position: absolute; bottom: 25%; left: 20%;
  width: 60px; height: 20px;
  background: radial-gradient(ellipse, rgba(0,0,0,0.4) 0%, transparent 100%);
  filter: blur(4px);
  animation: bf-shadow 5s ease-in-out infinite;
}
@keyframes bf-bg { 0% { opacity:0.8 } 50% { opacity:0.9 } 100% { opacity:0.7 } }
@keyframes bf-head { 0%,100% { transform: translateX(0) rotate(0deg) } 30% { transform: translateX(-2px) rotate(-3deg) } 70% { transform: translateX(1px) rotate(2deg) } }
@keyframes bf-hand { 0% { transform: rotate(25deg) } 50% { transform: rotate(35deg) scale(1.05) } 100% { transform: rotate(20deg) } }
@keyframes bf-bruise { 0% { opacity:0.6 } 50% { opacity:1 } 100% { opacity:0.7 } }
@keyframes bf-light { 0% { opacity:0.3 } 50% { opacity:0.6 } 100% { opacity:0.4 } }
@keyframes bf-shadow { 0%,100% { opacity:0.4 } 50% { opacity:0.7 } }

.scn-christmas-greeting {
  background: linear-gradient(180deg, #1a1410 0%, #2a1e18 50%, #3a2a20 100%),
              radial-gradient(ellipse at 50% 100%, #3a2a20 0%, transparent 70%);
}
.scn-christmas-greeting .bg-room {
  position: absolute; inset: 0 0 20% 0;
  background: linear-gradient(180deg, #0e0a08 0%, #1e1612 100%);
  box-shadow: inset 0 12px 24px rgba(0,0,0,0.7);
  animation: cg-room 25s ease-in-out infinite alternate;
}
.scn-christmas-greeting .fireplace {
  position: absolute; bottom: 10%; left: 30%;
  width: 100px; height: 110px;
  background: linear-gradient(180deg, #3a2a1e 0%, #1a100e 100%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: inset 0 -8px 16px rgba(0,0,0,0.5);
  animation: cg-fireplace 15s ease-in-out infinite;
}
.scn-christmas-greeting .mantle {
  position: absolute; bottom: 55%; left: 28%;
  width: 110px; height: 12px;
  background: #4a3a2a;
  border-radius: 4px;
  box-shadow: 0 2px 4px rgba(0,0,0,0.6);
}
.scn-christmas-greeting .candle {
  position: absolute; bottom: 35%; left: 38%;
  width: 8px; height: 40px;
  background: linear-gradient(180deg, #e0c8a0 0%, #c0a880 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: inset 0 -4px 6px rgba(0,0,0,0.3);
  animation: cg-candle 6s ease-in-out infinite alternate;
}
.scn-christmas-greeting .flame {
  position: absolute; bottom: 60%; left: 38%;
  width: 10px; height: 14px;
  background: radial-gradient(circle, #ffd080 0%, #ffa030 60%, transparent 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  filter: blur(1px);
  animation: cg-flame 0.8s ease-in-out infinite alternate;
}
.scn-christmas-greeting .holly {
  position: absolute; bottom: 30%; left: 45%;
  width: 20px; height: 18px;
  background: #2a4a1a;
  border-radius: 40% 60% 60% 40% / 50% 50% 50% 50%;
  box-shadow: 0 0 4px rgba(0,0,0,0.4);
  animation: cg-holly 10s ease-in-out infinite;
}
.scn-christmas-greeting .apron {
  position: absolute; bottom: 5%; left: 50%;
  width: 50px; height: 60px;
  background: linear-gradient(180deg, #702243 0%, #4a1428 100%);
  border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%;
  transform: translateX(-50%);
  animation: cg-apron 7s ease-in-out infinite;
}
.scn-christmas-greeting .shadow-interior {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,0.6) 100%);
  animation: cg-shadowint 12s ease-in-out infinite alternate;
}
@keyframes cg-room { 0% { opacity:0.8 } 50% { opacity:0.95 } 100% { opacity:0.85 } }
@keyframes cg-fireplace { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-2px) } }
@keyframes cg-candle { 0% { transform: scaleY(1) } 100% { transform: scaleY(1.03) } }
@keyframes cg-flame { 0% { transform: scale(1) translateY(0); opacity:0.8 } 50% { transform: scale(1.1) translateY(-2px); opacity:1 } 100% { transform: scale(0.95) translateY(1px); opacity:0.7 } }
@keyframes cg-holly { 0%,100% { transform: rotate(0deg) } 50% { transform: rotate(10deg) } }
@keyframes cg-apron { 0%,100% { transform: translateX(-50%) } 50% { transform: translateX(-50%) translateY(-2px) } }
@keyframes cg-shadowint { 0% { opacity:0.6 } 50% { opacity:0.8 } 100% { opacity:0.7 } }

.scn-premium-paid {
  background: linear-gradient(180deg, #2a1f14 0%, #3b2a1a 40%, #4d3824 100%), radial-gradient(ellipse at 50% 80%, #6b4c2e 0%, transparent 70%);
}
.scn-premium-paid .room-bg {
  position: absolute; inset: 0; background: linear-gradient(180deg, #1f1812 0%, #2a1f14 40%, #3b2a1a 100%); animation: pp-breathe 12s ease-in-out infinite alternate;
}
.scn-premium-paid .table {
  position: absolute; bottom: 15%; left: 25%; width: 50%; height: 6%; background: linear-gradient(180deg, #5c3f28 0%, #3b2a1a 100%); border-radius: 4px; box-shadow: 0 4px 12px rgba(0,0,0,0.5); animation: pp-table 8s ease-in-out infinite alternate;
}
.scn-premium-paid .chair {
  position: absolute; bottom: 10%; left: 30%; width: 12%; height: 18%; background: linear-gradient(180deg, #4d3824 0%, #2a1f14 100%); border-radius: 20% 20% 10% 10%; box-shadow: 0 2px 6px rgba(0,0,0,0.4); animation: pp-chair 10s ease-in-out infinite;
}
.scn-premium-paid .figure-pip {
  position: absolute; bottom: 16%; left: 38%; width: 10%; height: 30%; background: linear-gradient(180deg, #1f1812 0%, #0f0b08 100%); border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: pp-figure 6s ease-in-out infinite;
}
.scn-premium-paid .bag-coins {
  position: absolute; bottom: 22%; left: 50%; width: 8%; height: 6%; background: #8a6b4a; border-radius: 30% 30% 20% 20%; box-shadow: 0 2px 8px rgba(0,0,0,0.3); animation: pp-bag 4s ease-in-out infinite;
}
.scn-premium-paid .glow-coins {
  position: absolute; bottom: 21%; left: 49%; width: 12%; height: 10%; background: radial-gradient(circle, #e8c070 0%, #b08040 40%, transparent 70%); border-radius: 50%; animation: pp-glow 3s ease-in-out infinite alternate; filter: blur(6px);
}
.scn-premium-paid .window {
  position: absolute; top: 10%; left: 60%; width: 18%; height: 30%; background: linear-gradient(180deg, #6b5a4e 0%, #3b2a1a 100%); border: 4px solid #2a1f14; border-radius: 8px; box-shadow: inset 0 0 20px rgba(255,220,180,0.1); animation: pp-window 15s ease-in-out infinite alternate;
}
.scn-premium-paid .shadow-figure {
  position: absolute; bottom: 15%; right: 20%; width: 14%; height: 35%; background: linear-gradient(180deg, #100d0a 0%, #080605 100%); border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%; transform: scale(0.95); animation: pp-shadow 12s ease-in-out infinite alternate;
}
@keyframes pp-breathe    { 0% { opacity: 0.8 } 50% { opacity: 1 } 100% { opacity: 0.85 } }
@keyframes pp-table      { 0% { transform: translateY(0) } 50% { transform: translateY(-1px) } 100% { transform: translateY(0) } }
@keyframes pp-chair      { 0%,100% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(-2px) rotate(1deg) } }
@keyframes pp-figure     { 0% { transform: translateX(0) translateY(0) rotate(-1deg) } 25% { transform: translateX(4px) translateY(-1px) rotate(1deg) } 50% { transform: translateX(8px) translateY(0) rotate(-1deg) } 75% { transform: translateX(4px) translateY(-1px) rotate(1deg) } 100% { transform: translateX(0) translateY(0) rotate(0deg) } }
@keyframes pp-bag        { 0%,100% { transform: scale(1) } 50% { transform: scale(1.05) } }
@keyframes pp-glow       { 0% { opacity: 0.6; transform: scale(0.9) } 50% { opacity: 0.9; transform: scale(1.1) } 100% { opacity: 0.7; transform: scale(1) } }
@keyframes pp-window     { 0% { opacity: 0.3; filter: brightness(0.8) } 50% { opacity: 0.5; filter: brightness(1) } 100% { opacity: 0.4; filter: brightness(0.9) } }
@keyframes pp-shadow     { 0% { transform: translateX(0) scale(0.95) } 50% { transform: translateX(-3px) scale(1) } 100% { transform: translateX(0) scale(0.95) } }

.scn-money-revealed {
  background: linear-gradient(180deg, #1f140e 0%, #3a281e 30%, #5a3f2e 70%, #2d1a10 100%), radial-gradient(ellipse at 50% 60%, #8a5a3a 0%, transparent 70%);
}
.scn-money-revealed .fireplace {
  position: absolute; bottom: 0; left: 20%; width: 60%; height: 50%; background: linear-gradient(180deg, #4a3224 0%, #2a1a12 100%); border-radius: 20% 20% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,0.6);
}
.scn-money-revealed .fire {
  position: absolute; bottom: 10%; left: 30%; width: 40%; height: 25%; background: radial-gradient(ellipse at 50% 100%, #ff8c40 0%, #c06020 30%, #8a3a10 60%, transparent 80%); border-radius: 50% 50% 0 0; animation: mr-fire 5s ease-in-out infinite alternate;
}
.scn-money-revealed .mantle {
  position: absolute; bottom: 45%; left: 18%; width: 64%; height: 4%; background: linear-gradient(180deg, #5a4030 0%, #3a281e 100%); border-radius: 4px; box-shadow: 0 2px 8px rgba(0,0,0,0.4);
}
.scn-money-revealed .figure-joe {
  position: absolute; bottom: 5%; left: 25%; width: 16%; height: 35%; background: linear-gradient(180deg, #2a1a12 0%, #141008 100%); border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%; transform: scaleX(-1); animation: mr-joe 8s ease-in-out infinite;
}
.scn-money-revealed .figure-pip {
  position: absolute; bottom: 5%; right: 25%; width: 14%; height: 32%; background: linear-gradient(180deg, #1f140e 0%, #0f0a08 100%); border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%; animation: mr-pip 6s ease-in-out infinite;
}
.scn-money-revealed .shadow-warm {
  position: absolute; inset: 0; background: radial-gradient(ellipse at 50% 40%, rgba(200,120,60,0.15) 0%, transparent 70%); animation: mr-shadow 10s ease-in-out infinite alternate;
}
.scn-money-revealed .chair-joe {
  position: absolute; bottom: 2%; left: 22%; width: 22%; height: 10%; background: linear-gradient(180deg, #4a3224 0%, #2a1a12 100%); border-radius: 10% 10% 30% 30%; box-shadow: 0 4px 12px rgba(0,0,0,0.5); animation: mr-chair 12s ease-in-out infinite;
}
.scn-money-revealed .chair-pip {
  position: absolute; bottom: 2%; right: 22%; width: 20%; height: 9%; background: linear-gradient(180deg, #3a281e 0%, #1f140e 100%); border-radius: 10% 10% 30% 30%; box-shadow: 0 4px 12px rgba(0,0,0,0.5); animation: mr-chair 12s ease-in-out infinite 0.5s;
}
@keyframes mr-fire    { 0% { transform: scaleY(0.9) scaleX(0.95); opacity: 0.8 } 50% { transform: scaleY(1.15) scaleX(1.05); opacity: 1 } 100% { transform: scaleY(1) scaleX(1); opacity: 0.9 } }
@keyframes mr-joe     { 0% { transform: translateX(0) translateY(0) rotate(-1deg) } 50% { transform: translateX(6px) translateY(-2px) rotate(1deg) } 100% { transform: translateX(0) translateY(0) rotate(0deg) } }
@keyframes mr-pip     { 0% { transform: translateX(0) translateY(0) rotate(1deg) } 50% { transform: translateX(-5px) translateY(-1px) rotate(-1deg) } 100% { transform: translateX(0) translateY(0) rotate(0deg) } }
@keyframes mr-shadow  { 0% { opacity: 0.6 } 50% { opacity: 0.9 } 100% { opacity: 0.7 } }
@keyframes mr-chair   { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-1px) } }

.scn-twenty-five-pounds {
  background: linear-gradient(180deg, #2a1e14 0%, #4a3424 40%, #6a4c38 100%), radial-gradient(ellipse at 50% 50%, #8a6040 0%, transparent 60%);
}
.scn-twenty-five-pounds .table {
  position: absolute; bottom: 10%; left: 10%; width: 80%; height: 8%; background: linear-gradient(180deg, #5a4030 0%, #3a281e 100%); border-radius: 10px; box-shadow: 0 6px 18px rgba(0,0,0,0.6);
}
.scn-twenty-five-pounds .candle {
  position: absolute; bottom: 20%; left: 48%; width: 4%; height: 15%; background: linear-gradient(180deg, #e8d0a0 0%, #c8b080 100%); border-radius: 20% 20% 10% 10%; box-shadow: 0 0 20px 6px #c08040; animation: tf-candle 4s ease-in-out infinite alternate;
}
.scn-twenty-five-pounds .coins {
  position: absolute; bottom: 18%; left: 40%; width: 20%; height: 5%; background: radial-gradient(ellipse, #e8b060 0%, #a07030 70%, transparent 100%); border-radius: 50%; box-shadow: 0 0 30px 10px rgba(200,140,60,0.4); animation: tf-coins 6s ease-in-out infinite;
}
.scn-twenty-five-pounds .figure-pumble {
  position: absolute; bottom: 5%; left: 18%; width: 18%; height: 38%; background: linear-gradient(180deg, #3a281e 0%, #1f140e 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; transform: scaleX(1); animation: tf-pumble 10s ease-in-out infinite;
}
.scn-twenty-five-pounds .figure-mrsjoe {
  position: absolute; bottom: 5%; left: 42%; width: 16%; height: 40%; background: linear-gradient(180deg, #2a1e14 0%, #141008 100%); border-radius: 50% 50% 35% 35% / 65% 65% 30% 30%; animation: tf-mrsjoe 8s ease-in-out infinite;
}
.scn-twenty-five-pounds .figure-joe {
  position: absolute; bottom: 5%; right: 18%; width: 18%; height: 36%; background: linear-gradient(180deg, #4a3424 0%, #2a1a12 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; transform: scaleX(-1); animation: tf-joe 9s ease-in-out infinite;
}
.scn-twenty-five-pounds .fire-glow {
  position: absolute; bottom: 0; left: 30%; width: 40%; height: 40%; background: radial-gradient(ellipse at 50% 100%, #ff8c40 0%, #c06020 30%, transparent 70%); border-radius: 50%; animation: tf-fireglow 5s ease-in-out infinite alternate; filter: blur(10px);
}
.scn-twenty-five-pounds .shadow-trio {
  position: absolute; inset: 0; background: radial-gradient(ellipse at 50% 40%, rgba(0,0,0,0.4) 0%, transparent 60%); animation: tf-shadow 12s ease-in-out infinite;
}
@keyframes tf-candle     { 0% { transform: scaleY(0.95) rotate(-2deg); opacity: 0.8 } 50% { transform: scaleY(1.05) rotate(2deg); opacity: 1 } 100% { transform: scaleY(1) rotate(0deg); opacity: 0.9 } }
@keyframes tf-coins      { 0% { transform: translateY(0) scale(1); opacity: 0.7 } 50% { transform: translateY(-1px) scale(1.08); opacity: 0.9 } 100% { transform: translateY(0) scale(1); opacity: 0.8 } }
@keyframes tf-pumble     { 0% { transform: translateX(0) rotate(1deg) } 50% { transform: translateX(4px) rotate(-1deg) } 100% { transform: translateX(0) rotate(0deg) } }
@keyframes tf-mrsjoe     { 0% { transform: translateY(0) rotate(-2deg) } 50% { transform: translateY(-1px) rotate(2deg) } 100% { transform: translateY(0) rotate(0deg) } }
@keyframes tf-joe        { 0% { transform: translateX(0) rotate(-1deg) } 50% { transform: translateX(-5px) rotate(1deg) } 100% { transform: translateX(0) rotate(0deg) } }
@keyframes tf-fireglow   { 0% { opacity: 0.6; transform: scale(0.9) } 50% { opacity: 1; transform: scale(1.1) } 100% { opacity: 0.8; transform: scale(1) } }
@keyframes tf-shadow     { 0% { opacity: 0.5 } 50% { opacity: 0.7 } 100% { opacity: 0.6 } }

.scn-churchyard-reflections {
  background: linear-gradient(180deg, #2c2840 0%, #4a3c5a 30%, #6a5a7a 60%, #8a7a8a 100%), radial-gradient(ellipse at 50% 100%, #a09090 0%, transparent 70%);
}
.scn-churchyard-reflections .sky-dusk {
  position: absolute; inset: 0 0 30% 0; background: linear-gradient(180deg, #2c2840 0%, #4a3c5a 40%, #8a7a8a 100%); animation: cr-sky 20s ease-in-out infinite alternate;
}
.scn-churchyard-reflections .marsh {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%; background: linear-gradient(180deg, #3a4a3a 0%, #2a3a2a 100%); border-radius: 30% 40% 0 0 / 60% 70% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,0.3); animation: cr-marsh 25s ease-in-out infinite alternate;
}
.scn-churchyard-reflections .church-tower {
  position: absolute; bottom: 25%; left: 40%; width: 20%; height: 50%; background: linear-gradient(180deg, #5a5a6a 0%, #3a3a4a 100%); border-radius: 10% 10% 0 0; box-shadow: 0 4px 12px rgba(0,0,0,0.5); animation: cr-tower 30s ease-in-out infinite;
}
.scn-churchyard-reflections .tombstone-1 {
  position: absolute; bottom: 18%; left: 25%; width: 8%; height: 12%; background: linear-gradient(180deg, #7a7a8a 0%, #5a5a6a 100%); border-radius: 20% 20% 0 0; transform: rotate(-3deg); box-shadow: 0 2px 6px rgba(0,0,0,0.3); animation: cr-stone1 15s ease-in-out infinite;
}
.scn-churchyard-reflections .tombstone-2 {
  position: absolute; bottom: 20%; left: 55%; width: 6%; height: 10%; background: linear-gradient(180deg, #7a7a8a 0%, #4a4a5a 100%); border-radius: 20% 20% 0 0; transform: rotate(2deg); box-shadow: 0 2px 6px rgba(0,0,0,0.3); animation: cr-stone2 18s ease-in-out infinite 0.5s;
}
.scn-churchyard-reflections .figure-pip {
  position: absolute; bottom: 15%; left: 45%; width: 10%; height: 25%; background: linear-gradient(180deg, #1c1a2a 0%, #0e0c18 100%); border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%; transform-origin: bottom center; animation: cr-figure 12s ease-in-out infinite;
}
.scn-churchyard-reflections .path {
  position: absolute; bottom: 8%; left: 35%; width: 30%; height: 10%; background: linear-gradient(180deg, #5a5a6a 0%, #3a3a4a 100%); border-radius: 10% 10% 0 0; opacity: 0.4; animation: cr-path 8s ease-in-out infinite alternate;
}
.scn-churchyard-reflections .moon {
  position: absolute; top: 12%; right: 20%; width: 10%; height: 10%; background: radial-gradient(circle, #e8e0d0 0%, #c8c0b0 40%, transparent 70%); border-radius: 50%; box-shadow: 0 0 40px 10px rgba(200,180,160,0.3); animation: cr-moon 40s linear infinite;
}
@keyframes cr-sky     { 0% { opacity: 0.7; background-position: 0% 0% } 50% { opacity: 0.9; background-position: 50% 0% } 100% { opacity: 0.8; background-position: 100% 0% } }
@keyframes cr-marsh   { 0% { transform: translateY(0) scale(1) } 50% { transform: translateY(-2px) scale(1.02) } 100% { transform: translateY(0) scale(1) } }
@keyframes cr-tower   { 0% { transform: rotate(-0.5deg) } 50% { transform: rotate(0.5deg) } 100% { transform: rotate(-0.3deg) } }
@keyframes cr-stone1  { 0% { transform: rotate(-3deg) translateY(0) } 50% { transform: rotate(-2deg) translateY(-1px) } 100% { transform: rotate(-3deg) translateY(0) } }
@keyframes cr-stone2  { 0% { transform: rotate(2deg) translateY(0) } 50% { transform: rotate(1deg) translateY(-1px) } 100% { transform: rotate(2deg) translateY(0) } }
@keyframes cr-figure  { 0% { transform: translateX(0) translateY(0) rotate(1deg) } 25% { transform: translateX(6px) translateY(-1px) rotate(-1deg) } 50% { transform: translateX(12px) translateY(0) rotate(0deg) } 75% { transform: translateX(6px) translateY(-1px) rotate(1deg) } 100% { transform: translateX(0) translateY(0) rotate(0deg) } }
@keyframes cr-path    { 0% { opacity: 0.3; transform: scaleY(1) } 50% { opacity: 0.5; transform: scaleY(1.1) } 100% { opacity: 0.4; transform: scaleY(1) } }
@keyframes cr-moon    { 0% { transform: translateX(0) } 100% { transform: translateX(20vw) } }

.scn-sergeant-boasts {
  background:
    linear-gradient(180deg, #3a2a1a 0%, #2a1e0e 50%, #1f150a 100%),
    radial-gradient(ellipse at 70% 40%, #6a5038 0%, transparent 70%);
  position: relative;
  overflow: hidden;
}
.scn-sergeant-boasts .wall-left {
  position: absolute; inset: 0 60% 0 0;
  background: linear-gradient(90deg, #4a3a28 0%, #3a2a1a 100%);
  animation: sb-wall 12s ease-in-out infinite alternate;
}
.scn-sergeant-boasts .wall-right {
  position: absolute; inset: 0 0 0 60%;
  background: linear-gradient(90deg, #2a1e0e 0%, #3a2a1a 100%);
}
.scn-sergeant-boasts .floor {
  position: absolute; inset: 70% 0 0 0;
  background: linear-gradient(180deg, #3a2a1a 0%, #1f150a 100%);
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.6);
}
.scn-sergeant-boasts .table {
  position: absolute; bottom: 28%; left: 35%; width: 130px; height: 40px;
  background: linear-gradient(180deg, #5e4a30 0%, #3a2a18 100%);
  border-radius: 4px;
  box-shadow: 0 8px 12px rgba(0,0,0,0.5);
  transform: perspective(300px) rotateX(10deg);
  animation: sb-table 20s ease-in-out infinite;
}
.scn-sergeant-boasts .bottle {
  position: absolute; bottom: 38%; left: 42%; width: 16px; height: 28px;
  background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%);
  border-radius: 30% 30% 10% 10%;
  box-shadow: 0 0 8px 2px rgba(200,160,100,0.3);
  animation: sb-bottle 5s ease-in-out infinite alternate;
}
.scn-sergeant-boasts .figure-sergeant {
  position: absolute; bottom: 30%; left: 28%; width: 28px; height: 60px;
  background: linear-gradient(180deg, #4a3a28 0%, #2a1e0e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: sb-fig-s 4s ease-in-out infinite;
}
.scn-sergeant-boasts .figure-pumblechook {
  position: absolute; bottom: 30%; left: 52%; width: 30px; height: 54px;
  background: linear-gradient(180deg, #5a4a38 0%, #3a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 55% 55% 45% 45%;
  transform-origin: bottom center;
  animation: sb-fig-p 4s ease-in-out 0.5s infinite;
}
.scn-sergeant-boasts .lantern {
  position: absolute; top: 20%; left: 50%; width: 10px; height: 16px;
  background: radial-gradient(circle, #d4a060 0%, #b08040 50%, #503820 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 0 0 40px 12px rgba(180,120,50,0.6), 0 0 80px 24px rgba(180,120,50,0.3);
  animation: sb-lantern 3s ease-in-out infinite alternate;
}
@keyframes sb-wall {
  0% { opacity: 0.7; filter: brightness(1); }
  50% { opacity: 1; filter: brightness(1.1); }
  100% { opacity: 0.8; filter: brightness(1); }
}
@keyframes sb-table {
  0%, 100% { transform: perspective(300px) rotateX(10deg) translateY(0); }
  50% { transform: perspective(300px) rotateX(12deg) translateY(-2px); }
}
@keyframes sb-bottle {
  0% { transform: rotate(-2deg); }
  50% { transform: rotate(2deg); }
  100% { transform: rotate(-1deg); }
}
@keyframes sb-fig-s {
  0% { transform: translateY(0) rotate(-2deg); }
  25% { transform: translateY(-3px) rotate(1deg); }
  50% { transform: translateY(-1px) rotate(-1deg); }
  75% { transform: translateY(-4px) rotate(2deg); }
  100% { transform: translateY(0) rotate(0); }
}
@keyframes sb-fig-p {
  0% { transform: translateY(0) rotate(1deg); }
  25% { transform: translateY(-2px) rotate(-1deg); }
  50% { transform: translateY(-3px) rotate(0); }
  75% { transform: translateY(-1px) rotate(2deg); }
  100% { transform: translateY(0) rotate(0); }
}
@keyframes sb-lantern {
  0% { box-shadow: 0 0 30px 8px rgba(180,120,50,0.5), 0 0 60px 16px rgba(180,120,50,0.2); opacity: 0.8; }
  50% { box-shadow: 0 0 50px 16px rgba(200,140,60,0.7), 0 0 100px 30px rgba(200,140,60,0.4); opacity: 1; }
  100% { box-shadow: 0 0 35px 10px rgba(180,120,50,0.5), 0 0 70px 20px rgba(180,120,50,0.25); opacity: 0.85; }
}

.scn-wild-chase {
  background:
    linear-gradient(180deg, #2d1b3a 0%, #4a2a4a 40%, #7a4a3a 100%),
    radial-gradient(ellipse at 50% 30%, #8a5a4a 0%, transparent 70%);
  position: relative;
  overflow: hidden;
}
.scn-wild-chase .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #3a2a4a 0%, #6a4a3a 100%);
  animation: wc-sky 15s ease-in-out infinite alternate;
}
.scn-wild-chase .hills {
  position: absolute; bottom: 30%; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #2a3a2a 0%, #1a2a1a 100%);
  border-radius: 40% 60% 0 0 / 80% 70% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.5);
  animation: wc-hills 25s ease-in-out infinite alternate;
}
.scn-wild-chase .bank-left {
  position: absolute; bottom: 20%; left: 0; width: 30%; height: 15%;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1e0e 100%);
  border-radius: 0 20% 0 0;
  box-shadow: inset 0 6px 12px rgba(0,0,0,0.4);
  animation: wc-bank 8s ease-in-out infinite;
}
.scn-wild-chase .bank-right {
  position: absolute; bottom: 20%; right: 0; width: 30%; height: 15%;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1e0e 100%);
  border-radius: 20% 0 0 0;
  box-shadow: inset 0 6px 12px rgba(0,0,0,0.4);
  animation: wc-bank 8s ease-in-out 1s infinite;
}
.scn-wild-chase .ditch {
  position: absolute; bottom: 10%; left: 25%; right: 25%; height: 10%;
  background: linear-gradient(180deg, #1a2a1a 0%, #0a1a0a 100%);
  border-radius: 0 0 50% 50%;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.6);
  animation: wc-ditch 12s ease-in-out infinite alternate;
}
.scn-wild-chase .figure-runner1 {
  position: absolute; bottom: 18%; left: 40%; width: 20px; height: 45px;
  background: linear-gradient(180deg, #3a2a2a 0%, #1a0e0e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: wc-runner1 1s steps(4) infinite;
}
.scn-wild-chase .figure-runner2 {
  position: absolute; bottom: 15%; left: 50%; width: 20px; height: 45px;
  background: linear-gradient(180deg, #4a3a3a 0%, #2a1a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: wc-runner2 1s steps(4) 0.5s infinite;
}
.scn-wild-chase .figure-soldier {
  position: absolute; bottom: 12%; left: 60%; width: 22px; height: 50px;
  background: linear-gradient(180deg, #2a4a3a 0%, #1a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: wc-soldier 1s steps(4) 0.25s infinite;
}
.scn-wild-chase .dust {
  position: absolute; bottom: 10%; left: 45%; width: 30px; height: 10px;
  background: radial-gradient(ellipse, rgba(180,130,80,0.4) 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(4px);
  animation: wc-dust 2s ease-in-out infinite;
}
@keyframes wc-sky {
  0% { opacity: 0.6; }
  50% { opacity: 0.9; }
  100% { opacity: 0.7; }
}
@keyframes wc-hills {
  0% { transform: translateY(0); }
  50% { transform: translateY(-4px); }
  100% { transform: translateY(2px); }
}
@keyframes wc-bank {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-5px); }
}
@keyframes wc-ditch {
  0% { transform: scaleY(1); }
  50% { transform: scaleY(0.8); }
  100% { transform: scaleY(1.1); }
}
@keyframes wc-runner1 {
  0% { transform: translateY(0) rotate(-5deg); }
  25% { transform: translateY(-8px) rotate(0deg); }
  50% { transform: translateY(-4px) rotate(5deg); }
  75% { transform: translateY(-10px) rotate(-2deg); }
  100% { transform: translateY(0) rotate(-5deg); }
}
@keyframes wc-runner2 {
  0% { transform: translateY(0) rotate(-3deg); }
  25% { transform: translateY(-10px) rotate(2deg); }
  50% { transform: translateY(-5px) rotate(-4deg); }
  75% { transform: translateY(-12px) rotate(1deg); }
  100% { transform: translateY(0) rotate(-3deg); }
}
@keyframes wc-soldier {
  0% { transform: translateY(0) rotate(2deg); }
  25% { transform: translateY(-6px) rotate(-1deg); }
  50% { transform: translateY(-2px) rotate(3deg); }
  75% { transform: translateY(-8px) rotate(-2deg); }
  100% { transform: translateY(0) rotate(2deg); }
}
@keyframes wc-dust {
  0%, 100% { transform: translateX(0) scale(1); opacity: 0.6; }
  50% { transform: translateX(10px) scale(1.5); opacity: 0.2; }
}

.scn-convicts-captured {
  background:
    linear-gradient(180deg, #0a0a1a 0%, #1a0a0a 30%, #2a1a0a 100%),
    radial-gradient(ellipse at 30% 60%, #4a3a1a 0%, transparent 70%);
  position: relative;
  overflow: hidden;
}
.scn-convicts-captured .marsh {
  position: absolute; inset: 40% 0 0 0;
  background: linear-gradient(180deg, #1a1a0a 0%, #0a0a0a 100%);
  border-radius: 40% 60% 0 0 / 30% 40% 0 0;
  animation: cc-marsh 20s ease-in-out infinite alternate;
}
.scn-convicts-captured .reed {
  position: absolute; bottom: 45%; left: 15%; width: 5px; height: 20px;
  background: linear-gradient(180deg, #2a3a1a 0%, #1a2a0a 100%);
  border-radius: 0 0 4px 4px;
  transform-origin: bottom center;
  animation: cc-reed 6s ease-in-out infinite;
}
.scn-convicts-captured .reed:nth-child(2) { left: 20%; animation-delay: 1s; }
.scn-convicts-captured .reed:nth-child(3) { left: 25%; animation-delay: 2s; }
.scn-convicts-captured .sky-torch {
  position: absolute; top: 0; left: 0; right: 0; height: 50%;
  background: radial-gradient(ellipse at 40% 100%, #6a4a2a 0%, transparent 60%);
  animation: cc-sky 8s ease-in-out infinite alternate;
}
.scn-convicts-captured .figure-convict-standing {
  position: absolute; bottom: 20%; left: 30%; width: 25px; height: 55px;
  background: linear-gradient(180deg, #2a1a1a 0%, #0a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cc-standing 5s ease-in-out infinite;
}
.scn-convicts-captured .figure-convict-kneeling {
  position: absolute; bottom: 10%; left: 38%; width: 20px; height: 35px;
  background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%);
  border-radius: 50% 50% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: cc-kneeling 5s ease-in-out 1s infinite;
}
.scn-convicts-captured .torch-flame {
  position: absolute; top: 30%; left: 20%; width: 12px; height: 20px;
  background: radial-gradient(circle, #e08040 0%, #b05020 50%, #4a1a0a 100%);
  border-radius: 50% 50% 30% 30%;
  box-shadow: 0 0 60px 20px rgba(200,100,40,0.6), 0 0 120px 40px rgba(200,100,40,0.3);
  animation: cc-torch 2s ease-in-out infinite alternate;
}
.scn-convicts-captured .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #0a0a0a 0%, #000 100%);
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.8);
}
@keyframes cc-marsh {
  0% { transform: translateY(0); opacity: 0.8; }
  50% { transform: translateY(-2px); opacity: 1; }
  100% { transform: translateY(1px); opacity: 0.9; }
}
@keyframes cc-reed {
  0%, 100% { transform: rotate(-5deg); }
  50% { transform: rotate(5deg); }
}
@keyframes cc-sky {
  0% { opacity: 0.6; }
  50% { opacity: 1; }
  100% { opacity: 0.7; }
}
@keyframes cc-standing {
  0% { transform: translateY(0) rotate(-1deg); }
  25% { transform: translateY(-2px) rotate(1deg); }
  50% { transform: translateY(-3px) rotate(-0.5deg); }
  75% { transform: translateY(-1px) rotate(0.5deg); }
  100% { transform: translateY(0) rotate(-1deg); }
}
@keyframes cc-kneeling {
  0% { transform: translateY(0) rotate(-2deg); }
  25% { transform: translateY(-2px) rotate(1deg); }
  50% { transform: translateY(-4px) rotate(-1deg); }
  75% { transform: translateY(-1px) rotate(2deg); }
  100% { transform: translateY(0) rotate(-2deg); }
}
@keyframes cc-torch {
  0% { width: 12px; height: 20px; opacity: 0.8; }
  50% { width: 14px; height: 24px; opacity: 1; }
  100% { width: 10px; height: 18px; opacity: 0.9; }
}

.scn-confession-pie {
  background:
    linear-gradient(180deg, #1a0a0a 0%, #2a1a0a 30%, #1a100a 100%),
    radial-gradient(ellipse at 50% 40%, #4a2a1a 0%, transparent 70%);
  position: relative;
  overflow: hidden;
}
.scn-confession-pie .forge-wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #2a1a0a 0%, #3a2a1a 50%, #1a0e0a 100%);
  border-radius: 0 0 10% 10%;
  box-shadow: inset 0 6px 20px rgba(0,0,0,0.6);
  animation: cp-wall 15s ease-in-out infinite alternate;
}
.scn-confession-pie .anvil {
  position: absolute; bottom: 25%; left: 40%; width: 40px; height: 30px;
  background: linear-gradient(180deg, #4a4a4a 0%, #2a2a2a 100%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.5);
  animation: cp-anvil 8s ease-in-out infinite;
}
.scn-confession-pie .tools {
  position: absolute; bottom: 35%; left: 55%; width: 6px; height: 30px;
  background: linear-gradient(180deg, #3a3a3a 0%, #1a1a1a 100%);
  border-radius: 2px;
  transform: rotate(-15deg);
  box-shadow: -4px 0 0 #4a4a4a, 4px 0 0 #2a2a2a;
  animation: cp-tools 10s ease-in-out infinite;
}
.scn-confession-pie .figure-smith {
  position: absolute; bottom: 20%; left: 30%; width: 25px; height: 60px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0e0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cp-smith 6s ease-in-out infinite;
}
.scn-confession-pie .figure-sergeant {
  position: absolute; bottom: 20%; left: 50%; width: 28px; height: 60px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cp-sergeant 6s ease-in-out 1s infinite;
}
.scn-confession-pie .torch-flame {
  position: absolute; top: 15%; left: 25%; width: 14px; height: 22px;
  background: radial-gradient(circle, #e09050 0%, #b06030 50%, #4a1a0a 100%);
  border-radius: 50% 50% 30% 30%;
  box-shadow: 0 0 70px 25px rgba(200,100,40,0.5), 0 0 140px 50px rgba(200,100,40,0.2);
  animation: cp-torch 2.5s ease-in-out infinite alternate;
}
.scn-confession-pie .sparks {
  position: absolute; bottom: 40%; left: 42%; width: 100px; height: 30px;
  background: radial-gradient(ellipse, rgba(220,160,80,0.3) 0%, transparent 70%);
  filter: blur(3px);
  animation: cp-sparks 1s steps(6) infinite;
}
.scn-confession-pie .barrel {
  position: absolute; bottom: 15%; left: 60%; width: 30px; height: 40px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.4);
  animation: cp-barrel 20s ease-in-out infinite alternate;
}
@keyframes cp-wall {
  0% { opacity: 0.7; }
  50% { opacity: 1; }
  100% { opacity: 0.8; }
}
@keyframes cp-anvil {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-3px); }
}
@keyframes cp-tools {
  0%, 100% { transform: rotate(-15deg) translateY(0); }
  50% { transform: rotate(-10deg) translateY(-2px); }
}
@keyframes cp-smith {
  0% { transform: translateY(0) rotate(-1deg); }
  25% { transform: translateY(-4px) rotate(2deg); }
  50% { transform: translateY(-2px) rotate(-2deg); }
  75% { transform: translateY(-5px) rotate(1deg); }
  100% { transform: translateY(0) rotate(-1deg); }
}
@keyframes cp-sergeant {
  0% { transform: translateY(0) rotate(1deg); }
  25% { transform: translateY(-3px) rotate(-1deg); }
  50% { transform: translateY(-5px) rotate(0); }
  75% { transform: translateY(-2px) rotate(2deg); }
  100% { transform: translateY(0) rotate(1deg); }
}
@keyframes cp-torch {
  0% { width: 14px; height: 22px; opacity: 0.7; }
  50% { width: 16px; height: 26px; opacity: 1; }
  100% { width: 12px; height: 20px; opacity: 0.8; }
}
@keyframes cp-sparks {
  0% { transform: translateY(0) translateX(0) scale(1); }
  25% { transform: translateY(-5px) translateX(5px) scale(1.2); }
  50% { transform: translateY(-10px) translateX(-3px) scale(0.8); }
  75% { transform: translateY(-15px) translateX(2px) scale(1.1); }
  100% { transform: translateY(-20px) translateX(0) scale(0.9); }
}
@keyframes cp-barrel {
  0% { transform: translateX(0); }
  50% { transform: translateX(-2px); }
  100% { transform: translateX(1px); }
}

/* pumblechook-arrives – firelit funny */
.scn-pumblechook-arrives {
  background: linear-gradient(180deg, #3d1f0e 0%, #5c2b14 40%, #8a4422 70%, #b5622e 100%),
    radial-gradient(ellipse at 50% 80%, #d4823a 0%, transparent 60%);
}
.scn-pumblechook-arrives .bg {
  position: absolute; inset: 0; background: linear-gradient(135deg, #2a150a 0%, #4b2210 50%, #703218 100%);
  animation: pa-bg 12s ease-in-out infinite alternate;
}
.scn-pumblechook-arrives .wall {
  position: absolute; inset: 10% 5% 40% 5%; background: linear-gradient(180deg, #7a4a28 0%, #4a2a14 100%);
  border-radius: 4px; box-shadow: inset 0 4px 12px rgba(0,0,0,.6); animation: pa-wall 15s ease-in-out infinite alternate;
}
.scn-pumblechook-arrives .fire {
  position: absolute; bottom: 35%; left: 25%; width: 12%; height: 20%;
  background: radial-gradient(ellipse at 50% 100%, #ff9a44 0%, #ff5e00 40%, #c03000 70%, transparent 100%);
  border-radius: 50% 50% 30% 30%; filter: blur(2px); animation: pa-fire 1.2s ease-in-out infinite alternate;
}
.scn-pumblechook-arrives .pumble {
  position: absolute; bottom: 25%; left: 45%; width: 12%; height: 35%;
  background: linear-gradient(180deg, #2a1a0e 0%, #1a0e06 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 40% 40%; transform-origin: bottom center;
  animation: pa-pumble 3s ease-in-out infinite;
}
.scn-pumblechook-arrives .pip {
  position: absolute; bottom: 22%; left: 60%; width: 8%; height: 20%;
  background: linear-gradient(180deg, #3d2210 0%, #1f0f05 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: pa-pip 4s ease-in-out infinite alternate;
}
.scn-pumblechook-arrives .table {
  position: absolute; bottom: 20%; left: 35%; width: 25%; height: 8%;
  background: linear-gradient(180deg, #6b3e1e 0%, #3a1f0c 100%);
  border-radius: 8% 8% 20% 20% / 50% 50% 40% 40%;
  box-shadow: 0 4px 8px rgba(0,0,0,.5); animation: pa-table 6s ease-in-out infinite;
}
.scn-pumblechook-arrives .pie {
  position: absolute; bottom: 25%; left: 47%; width: 6%; height: 5%;
  background: radial-gradient(circle at 30% 30%, #d48a44 0%, #a06228 60%, #703818 100%);
  border-radius: 50%; box-shadow: 0 2px 4px rgba(0,0,0,.4);
  animation: pa-pie 3s ease-in-out infinite alternate;
}
@keyframes pa-bg { 0% { opacity: .7 } 50% { opacity: 1 } 100% { opacity: .8 } }
@keyframes pa-wall { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.02) } 100% { transform: scaleY(1) } }
@keyframes pa-fire { 0% { transform: scale(1) rotate(-2deg); opacity: .8 } 50% { transform: scale(1.1) rotate(2deg); opacity: 1 } 100% { transform: scale(.95) rotate(-1deg); opacity: .85 } }
@keyframes pa-pumble { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(2%) rotate(-3deg); } 50% { transform: translateX(0) rotate(2deg); } 75% { transform: translateX(-2%) rotate(-3deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes pa-pip { 0% { transform: translateY(0) scale(1); } 50% { transform: translateY(-5%) scale(1.02); } 100% { transform: translateY(0) scale(1); } }
@keyframes pa-table { 0% { transform: translateY(0) } 50% { transform: translateY(-2%) } 100% { transform: translateY(0) } }
@keyframes pa-pie { 0% { transform: rotate(0deg) scale(1); } 50% { transform: rotate(5deg) scale(1.05); } 100% { transform: rotate(0deg) scale(1); } }

/* squeaker-joke – firelit funny */
.scn-squeaker-joke {
  background: linear-gradient(180deg, #4a2010 0%, #6e2e16 40%, #9a4822 70%, #bf682e 100%),
    radial-gradient(ellipse at 40% 75%, #d48a3a 0%, transparent 55%);
}
.scn-squeaker-joke .bg {
  position: absolute; inset: 0; background: linear-gradient(135deg, #2a150a 0%, #4b2210 50%, #703218 100%);
  animation: sj-bg 10s ease-in-out infinite alternate;
}
.scn-squeaker-joke .fire {
  position: absolute; bottom: 30%; left: 20%; width: 14%; height: 22%;
  background: radial-gradient(ellipse at 50% 100%, #ffaa44 0%, #ff6600 40%, #c83000 70%, transparent 100%);
  border-radius: 50% 50% 30% 30%; filter: blur(3px); animation: sj-fire 1.5s ease-in-out infinite alternate;
}
.scn-squeaker-joke .wopsle {
  position: absolute; bottom: 25%; left: 40%; width: 13%; height: 38%;
  background: linear-gradient(180deg, #2e1e12 0%, #1a0e06 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 40% 40%; transform-origin: bottom center;
  animation: sj-wopsle 2.5s ease-in-out infinite;
}
.scn-squeaker-joke .sister {
  position: absolute; bottom: 22%; left: 55%; width: 11%; height: 35%;
  background: linear-gradient(180deg, #3d2210 0%, #1f0f05 100%);
  border-radius: 50% 50% 40% 40% / 65% 65% 40% 40%;
  animation: sj-sister 3.2s ease-in-out infinite alternate;
}
.scn-squeaker-joke .squeaker {
  position: absolute; bottom: 32%; left: 48%; width: 9%; height: 7%;
  background: radial-gradient(circle at 40% 40%, #d0926a 0%, #a06840 60%, #704028 100%);
  border-radius: 60% 40% 50% 50% / 50% 50% 40% 60%;
  animation: sj-squeaker 1.8s ease-in-out infinite alternate;
}
.scn-squeaker-joke .table {
  position: absolute; bottom: 18%; left: 32%; width: 28%; height: 9%;
  background: linear-gradient(180deg, #6b3e1e 0%, #3a1f0c 100%);
  border-radius: 8% 8% 20% 20% / 50% 50% 40% 40%;
  box-shadow: 0 4px 8px rgba(0,0,0,.5); animation: sj-table 7s ease-in-out infinite;
}
.scn-squeaker-joke .lamp {
  position: absolute; bottom: 33%; left: 30%; width: 4%; height: 6%;
  background: radial-gradient(circle, #ffdd88 0%, #ddaa44 60%);
  border-radius: 50%; box-shadow: 0 0 16px 4px #ffcc44, 0 0 32px 8px rgba(255,204,68,.4);
  animation: sj-lamp 2s ease-in-out infinite alternate;
}
@keyframes sj-bg { 0% { opacity: .75 } 50% { opacity: 1 } 100% { opacity: .8 } }
@keyframes sj-fire { 0% { transform: scale(1) rotate(-1deg); } 50% { transform: scale(1.12) rotate(2deg); } 100% { transform: scale(.95) rotate(-1deg); } }
@keyframes sj-wopsle { 0% { transform: rotate(0deg) translateX(0); } 25% { transform: rotate(-4deg) translateX(-2%); } 50% { transform: rotate(2deg) translateX(0); } 75% { transform: rotate(-4deg) translateX(2%); } 100% { transform: rotate(0deg) translateX(0); } }
@keyframes sj-sister { 0% { transform: translateY(0) scale(1); } 50% { transform: translateY(-4%) scale(1.03); } 100% { transform: translateY(0) scale(1); } }
@keyframes sj-squeaker { 0% { transform: scale(1) rotate(-5deg); } 50% { transform: scale(1.1) rotate(5deg); } 100% { transform: scale(1) rotate(0deg); } }
@keyframes sj-table { 0% { transform: translateY(0) } 50% { transform: translateY(-1.5%) } 100% { transform: translateY(0) } }
@keyframes sj-lamp { 0% { opacity: .6; box-shadow: 0 0 12px 2px #ccaa44; } 50% { opacity: 1; box-shadow: 0 0 24px 6px #ffcc44; } 100% { opacity: .7; box-shadow: 0 0 14px 3px #ccaa44; } }

/* tar-collapse – firelit funny */
.scn-tar-collapse {
  background: linear-gradient(180deg, #3b1b0e 0%, #592913 40%, #7f3b1c 70%, #a64f28 100%),
    radial-gradient(ellipse at 50% 80%, #d47832 0%, transparent 60%);
}
.scn-tar-collapse .bg {
  position: absolute; inset: 0; background: linear-gradient(135deg, #2a150a 0%, #4a2210 50%, #6e3218 100%);
  animation: tc-bg 14s ease-in-out infinite alternate;
}
.scn-tar-collapse .fire {
  position: absolute; bottom: 28%; left: 18%; width: 16%; height: 24%;
  background: radial-gradient(ellipse at 50% 100%, #ffaa44 0%, #ff6600 40%, #c83000 70%, transparent 100%);
  border-radius: 50% 50% 30% 30%; filter: blur(3px); animation: tc-fire 1.1s ease-in-out infinite alternate;
}
.scn-tar-collapse .pumble {
  position: absolute; bottom: 5%; left: 35%; width: 14%; height: 28%;
  background: linear-gradient(180deg, #2a1a0e 0%, #0e0804 100%);
  border-radius: 50% 50% 20% 20% / 60% 60% 20% 20%; transform-origin: bottom center;
  animation: tc-pumble 2s ease-in-out infinite;
}
.scn-tar-collapse .chair {
  position: absolute; bottom: 15%; left: 42%; width: 10%; height: 25%;
  background: linear-gradient(180deg, #5c3318 0%, #2f1a0c 100%);
  border-radius: 10% 50% 10% 10% / 20% 30% 10% 20%; transform: rotate(-15deg);
  animation: tc-chair 1.8s ease-in-out infinite alternate;
}
.scn-tar-collapse .sister {
  position: absolute; bottom: 25%; left: 55%; width: 12%; height: 36%;
  background: linear-gradient(180deg, #3d2210 0%, #1f0f05 100%);
  border-radius: 50% 50% 40% 40% / 65% 65% 40% 40%;
  animation: tc-sister 3.5s ease-in-out infinite alternate;
}
.scn-tar-collapse .table {
  position: absolute; bottom: 18%; left: 30%; width: 26%; height: 9%;
  background: linear-gradient(180deg, #6b3e1e 0%, #3a1f0c 100%);
  border-radius: 8% 8% 20% 20% / 50% 50% 40% 40%;
  box-shadow: 0 4px 8px rgba(0,0,0,.5); animation: tc-table 8s ease-in-out infinite;
}
.scn-tar-collapse .pie {
  position: absolute; bottom: 23%; left: 42%; width: 7%; height: 6%;
  background: radial-gradient(circle at 30% 30%, #d48a44 0%, #a06228 60%, #703818 100%);
  border-radius: 50%; box-shadow: 0 2px 4px rgba(0,0,0,.4);
  animation: tc-pie 2.2s ease-in-out infinite alternate;
}
@keyframes tc-bg { 0% { opacity: .7 } 50% { opacity: 1 } 100% { opacity: .75 } }
@keyframes tc-fire { 0% { transform: scale(1) rotate(-3deg); opacity: .7 } 50% { transform: scale(1.15) rotate(3deg); opacity: 1 } 100% { transform: scale(.9) rotate(0deg); opacity: .8 } }
@keyframes tc-pumble { 0% { transform: translateY(0) rotate(0deg); } 25% { transform: translateY(-10%) rotate(-5deg); } 50% { transform: translateY(-2%) rotate(2deg); } 75% { transform: translateY(-8%) rotate(-4deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes tc-chair { 0% { transform: rotate(-15deg) } 50% { transform: rotate(-10deg) translateX(-2%) } 100% { transform: rotate(-15deg) } }
@keyframes tc-sister { 0% { transform: translateY(0) scale(1); } 50% { transform: translateY(-5%) scale(1.04); } 100% { transform: translateY(0) scale(1); } }
@keyframes tc-table { 0% { transform: translateY(0) } 50% { transform: translateY(-2%) } 100% { transform: translateY(0) } }
@keyframes tc-pie { 0% { transform: rotate(0deg) scale(1); } 50% { transform: rotate(8deg) scale(1.1); } 100% { transform: rotate(0deg) scale(1); } }

/* soldiers-arrive – dim interior tense */
.scn-soldiers-arrive {
  background: linear-gradient(180deg, #0f1118 0%, #1a1e2a 30%, #2a2e3e 60%, #1a1a24 100%),
    radial-gradient(ellipse at 50% 90%, #2a2a3e 0%, transparent 70%);
}
.scn-soldiers-arrive .bg-dark {
  position: absolute; inset: 0; background: linear-gradient(135deg, #0c0e14 0%, #141820 50%, #1c202c 100%);
  animation: sa-bg 8s ease-in-out infinite alternate;
}
.scn-soldiers-arrive .door {
  position: absolute; bottom: 20%; right: 15%; width: 14%; height: 45%;
  background: linear-gradient(180deg, #2c2218 0%, #1a120a 100%);
  border-radius: 4% 4% 2% 2% / 8% 8% 4% 4%;
  box-shadow: inset 0 0 10px rgba(0,0,0,.8); animation: sa-door 2s ease-in-out infinite alternate;
}
.scn-soldiers-arrive .sergeant {
  position: absolute; bottom: 18%; right: 12%; width: 11%; height: 38%;
  background: linear-gradient(180deg, #1c1a1a 0%, #0e0c0c 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center; animation: sa-sergeant 1.5s ease-in-out infinite;
}
.scn-soldiers-arrive .mrsjoe {
  position: absolute; bottom: 20%; left: 30%; width: 12%; height: 36%;
  background: linear-gradient(180deg, #1f1a16 0%, #100c08 100%);
  border-radius: 50% 50% 40% 40% / 65% 65% 40% 40%;
  animation: sa-mrsjoe 2.8s ease-in-out infinite alternate;
}
.scn-soldiers-arrive .pip {
  position: absolute; bottom: 15%; left: 45%; width: 8%; height: 20%;
  background: linear-gradient(180deg, #18120e 0%, #0c0806 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: sa-pip 3s ease-in-out infinite alternate;
}
.scn-soldiers-arrive .candle {
  position: absolute; bottom: 30%; left: 20%; width: 3%; height: 6%;
  background: linear-gradient(180deg, #ddaa44 0%, #885522 100%);
  border-radius: 50% 50% 10% 10% / 40% 40% 20% 20%;
  box-shadow: 0 0 10px 2px #ddaa44; animation: sa-candle 0.8s ease-in-out infinite alternate;
}
.scn-soldiers-arrive .glow {
  position: absolute; bottom: 30%; left: 18%; width: 10%; height: 16%;
  background: radial-gradient(circle, rgba(200,150,60,0.3) 0%, transparent 70%);
  border-radius: 50%; filter: blur(4px); animation: sa-glow 1s ease-in-out infinite alternate;
}
@keyframes sa-bg { 0% { opacity: .8 } 50% { opacity: 1 } 100% { opacity: .85 } }
@keyframes sa-door { 0% { transform: rotateY(0deg); } 50% { transform: rotateY(-20deg); } 100% { transform: rotateY(0deg); } }
@keyframes sa-sergeant { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(5%) rotate(-2deg); } 50% { transform: translateX(10%) rotate(1deg); } 75% { transform: translateX(5%) rotate(-2deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes sa-mrsjoe { 0% { transform: translateY(0) scale(1); } 50% { transform: translateY(-4%) scale(1.05); } 100% { transform: translateY(0) scale(1); } }
@keyframes sa-pip { 0% { transform: scale(1) } 50% { transform: scale(1.02) } 100% { transform: scale(1) } }
@keyframes sa-candle { 0% { opacity: .5; transform: scaleY(1) rotate(0deg); } 50% { opacity: .8; transform: scaleY(1.2) rotate(2deg); } 100% { opacity: .6; transform: scaleY(1) rotate(0deg); } }
@keyframes sa-glow { 0% { opacity: .3; transform: scale(1); } 50% { opacity: .6; transform: scale(1.2); } 100% { opacity: .4; transform: scale(1); } }
/* end per-scene blocks */

/* ============ tier S ============ */
/* per-scene blocks (EXP step_scenes) */
.scn-magwitch-deathbed {
  background: linear-gradient(180deg, #0f0d10 0%, #1a1718 40%, #242021 100%),
              radial-gradient(circle at 40% 60%, #3a2a1e 0%, transparent 60%);
}
.scn-magwitch-deathbed .wall-bg {
  position: absolute; inset: 0; 
  background: linear-gradient(135deg, #1c1819 0%, #0e0c0d 100%);
  box-shadow: inset 0 0 80px rgba(0,0,0,0.7);
}
.scn-magwitch-deathbed .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #201c1d 0%, #141212 100%);
  border-radius: 0 0 20px 20px;
}
.scn-magwitch-deathbed .window {
  position: absolute; top: 12%; right: 10%; width: 40px; height: 60px;
  background: radial-gradient(ellipse at center, #f5e6c8 0%, #a08a6f 40%, transparent 70%);
  border: 2px solid #3a302a;
  border-radius: 4px;
  box-shadow: 0 0 30px 10px rgba(245,230,200,0.3);
  animation: md-light 8s ease-in-out infinite alternate;
}
.scn-magwitch-deathbed .bed {
  position: absolute; bottom: 18%; left: 20%; width: 55%; height: 12%;
  background: linear-gradient(180deg, #3d312c 0%, #2a201d 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 0 -4px 12px rgba(0,0,0,0.6);
}
.scn-magwitch-deathbed .figure-magwitch {
  position: absolute; bottom: 20%; left: 25%; width: 70px; height: 40px;
  background: linear-gradient(180deg, #4a3f3b 0%, #1a1615 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  transform: rotate(-5deg);
  animation: md-breathe 6s ease-in-out infinite;
}
.scn-magwitch-deathbed .figure-pip {
  position: absolute; bottom: 18%; left: 55%; width: 40px; height: 60px;
  background: linear-gradient(180deg, #3b3532 0%, #1f1b1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: md-reading 4s ease-in-out infinite;
}
.scn-magwitch-deathbed .book {
  position: absolute; bottom: 22%; left: 60%; width: 20px; height: 26px;
  background: linear-gradient(135deg, #c4a88a 0%, #9e8368 100%);
  border-radius: 2px;
  box-shadow: 2px 4px 6px rgba(0,0,0,0.5);
  transform: rotate(15deg);
  animation: md-breathe 6s ease-in-out infinite;
}
.scn-magwitch-deathbed .candle {
  position: absolute; bottom: 28%; left: 35%; width: 8px; height: 20px;
  background: linear-gradient(180deg, #e8d4b0 0%, #b09878 100%);
  border-radius: 8px 8px 2px 2px;
  box-shadow: 0 -4px 12px #ffd680;
}
.scn-magwitch-deathbed .glow {
  position: absolute; bottom: 25%; left: 20%; right: 20%; height: 40%;
  background: radial-gradient(ellipse at 35% 40%, rgba(255,214,128,0.25) 0%, transparent 60%);
  pointer-events: none;
  animation: md-candle 3s ease-in-out infinite alternate;
}
@keyframes md-light {
  0% { opacity: 0.6; box-shadow: 0 0 20px 5px rgba(245,230,200,0.2); }
  50% { opacity: 1; box-shadow: 0 0 40px 15px rgba(245,230,200,0.4); }
  100% { opacity: 0.7; box-shadow: 0 0 25px 8px rgba(245,230,200,0.25); }
}
@keyframes md-breathe {
  0%, 100% { transform: rotate(-5deg) scaleY(1); }
  50% { transform: rotate(-5deg) scaleY(0.98); }
}
@keyframes md-reading {
  0% { transform: rotate(0deg) translateY(0); }
  25% { transform: rotate(1deg) translateY(-1px); }
  50% { transform: rotate(0deg) translateY(0); }
  75% { transform: rotate(-1deg) translateY(-1px); }
  100% { transform: rotate(0deg) translateY(0); }
}
@keyframes md-candle {
  0% { opacity: 0.5; transform: scaleY(0.95); }
  50% { opacity: 1; transform: scaleY(1.05); }
  100% { opacity: 0.6; transform: scaleY(0.98); }
}

.scn-reunion-estella-garden {
  background: linear-gradient(180deg, #87CEEB 0%, #b0e0f0 40%, #f9f3e0 100%),
              radial-gradient(circle at 70% 20%, #fff9e0 0%, transparent 60%);
}
.scn-reunion-estella-garden .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #7bc2e0 0%, #b0d8f0 60%, transparent);
}
.scn-reunion-estella-garden .sun {
  position: absolute; top: 15%; right: 20%; width: 60px; height: 60px;
  background: radial-gradient(circle, #fffbe0 0%, #ffe680 50%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 60px 20px rgba(255,230,128,0.5);
  animation: reg-sun 12s ease-in-out infinite alternate;
}
.scn-reunion-estella-garden .trees-left {
  position: absolute; bottom: 30%; left: 5%; width: 100px; height: 200px;
  background: radial-gradient(ellipse at 50% 100%, #3a6b3a 0%, #1e3a1e 80%);
  border-radius: 50% 50% 20% 20%;
  filter: blur(2px);
  animation: reg-tree 20s ease-in-out infinite;
}
.scn-reunion-estella-garden .trees-right {
  position: absolute; bottom: 30%; right: 10%; width: 80px; height: 160px;
  background: radial-gradient(ellipse at 50% 100%, #4a7a4a 0%, #2a4a2a 80%);
  border-radius: 50% 50% 20% 20%;
  filter: blur(2px);
  animation: reg-tree 25s ease-in-out infinite reverse;
}
.scn-reunion-estella-garden .path {
  position: absolute; bottom: 10%; left: 30%; right: 30%; height: 15%;
  background: linear-gradient(180deg, #d4c4a0 0%, #b8a884 100%);
  border-radius: 40% 40% 10% 10%;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.1);
}
.scn-reunion-estella-garden .figure-pip {
  position: absolute; bottom: 20%; left: 38%; width: 30px; height: 55px;
  background: linear-gradient(180deg, #2a2a2a 0%, #0e0e0e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: reg-turn 8s ease-in-out infinite alternate;
}
.scn-reunion-estella-garden .figure-estella {
  position: absolute; bottom: 20%; right: 38%; width: 28px; height: 50px;
  background: linear-gradient(180deg, #4a3a2a 0%, #1e1610 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: reg-turn 8s ease-in-out infinite alternate-reverse;
}
.scn-reunion-estella-garden .flowers {
  position: absolute; bottom: 15%; left: 20%; right: 20%; height: 10%;
  background: radial-gradient(circle at 30% 50%, #f0c8a0 0%, transparent 40%),
              radial-gradient(circle at 70% 30%, #d4a080 0%, transparent 40%),
              radial-gradient(circle at 50% 70%, #e8b888 0%, transparent 40%);
  background-size: 20px 20px;
  background-repeat: no-repeat;
  animation: reg-shimmer 6s ease-in-out infinite;
}
@keyframes reg-sun {
  0% { transform: scale(1); opacity: 0.9; box-shadow: 0 0 40px 10px rgba(255,230,128,0.4); }
  50% { transform: scale(1.05); opacity: 1; box-shadow: 0 0 80px 20px rgba(255,230,128,0.6); }
  100% { transform: scale(0.98); opacity: 0.95; box-shadow: 0 0 50px 15px rgba(255,230,128,0.5); }
}
@keyframes reg-tree {
  0% { transform: rotate(0deg); }
  30% { transform: rotate(2deg); }
  70% { transform: rotate(-2deg); }
  100% { transform: rotate(0deg); }
}
@keyframes reg-turn {
  0% { transform: rotate(0deg) translateY(0); }
  50% { transform: rotate(3deg) translateY(-2px); }
  100% { transform: rotate(-2deg) translateY(0); }
}
@keyframes reg-shimmer {
  0% { opacity: 0.6; }
  50% { opacity: 1; }
  100% { opacity: 0.7; }
}

/* satis-house-arrival */
.scn-satis-house-arrival {
  background: linear-gradient(180deg, #2a1e1a 0%, #1a1210 40%, #0d0806 100%), radial-gradient(ellipse at 50% 60%, #3a2820 0%, transparent 70%);
}
.scn-satis-house-arrival .wall-bg {
  position:absolute; inset:0; background: linear-gradient(180deg, #3a2a24 0%, #1a1412 100%); animation: sat-wall 10s ease-in-out infinite alternate;
}
.scn-satis-house-arrival .floor {
  position:absolute; bottom:0; left:0; right:0; height:35%; background: linear-gradient(180deg, #2a1e18 0%, #0d0806 100%); border-radius: 60% 60% 0 0 / 20% 20% 0 0; box-shadow: inset 0 10px 30px rgba(0,0,0,.6);
}
.scn-satis-house-arrival .door-frame {
  position:absolute; bottom:20%; left:50%; width:130px; height:200px; transform:translateX(-50%); background: transparent; border: 6px solid #4a3228; border-radius: 4px; box-shadow: inset 0 0 40px rgba(0,0,0,.7); animation: sat-door 8s ease-in-out infinite;
}
.scn-satis-house-arrival .estella-silhouette {
  position:absolute; bottom:20%; left:54%; width:30px; height:140px; transform:translateX(-50%); background: linear-gradient(180deg, #0a0604 0%, #1a1210 100%); border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%; animation: sat-estella 6s ease-in-out infinite alternate;
}
.scn-satis-house-arrival .pip-silhouette {
  position:absolute; bottom:20%; left:44%; width:22px; height:90px; transform:translateX(-50%); background: linear-gradient(180deg, #0a0604 0%, #120a08 100%); border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%; animation: sat-pip 5s ease-in-out infinite;
}
.scn-satis-house-arrival .candle-glow {
  position:absolute; bottom:30%; left:70%; width:10px; height:20px; background: radial-gradient(ellipse at 50% 100%, #f0c060 0%, transparent 80%); border-radius: 50%; box-shadow: 0 0 30px 8px rgba(240,192,96,.3); animation: sat-candle 3s ease-in-out infinite alternate;
}
.scn-satis-house-arrival .shadow-strip {
  position:absolute; bottom:20%; left:30%; right:30%; height:2px; background: rgba(0,0,0,.5); filter: blur(4px); animation: sat-shadow 12s linear infinite;
}
@keyframes sat-wall { 0% { opacity:.7 } 50% { opacity:.9 } 100% { opacity:.75 } }
@keyframes sat-door { 0% { transform: translateX(-50%) scaleY(1) } 50% { transform: translateX(-50%) scaleY(1.01) } 100% { transform: translateX(-50%) scaleY(0.98) } }
@keyframes sat-estella { 0% { transform: translateX(-50%) rotate(0deg) } 50% { transform: translateX(-50%) rotate(2deg) translateY(-2px) } 100% { transform: translateX(-50%) rotate(-1deg) } }
@keyframes sat-pip { 0%,100% { transform: translateX(-50%) } 50% { transform: translateX(-50%) translateY(-4px) scaleY(1.02) } }
@keyframes sat-candle { 0% { opacity:.6; transform: scale(1) } 100% { opacity:1; transform: scale(1.1) } }
@keyframes sat-shadow { 0% { opacity:.3 } 50% { opacity:.6 } 100% { opacity:.2 } }

/* cards-mocking-estella */
.scn-cards-mocking-estella {
  background: linear-gradient(180deg, #1e1614 0%, #0d0a08 60%, #050302 100%), radial-gradient(ellipse at 50% 80%, #2a1e18 0%, transparent 60%);
}
.scn-cards-mocking-estella .table {
  position:absolute; bottom:10%; left:5%; right:5%; height:45%; background: linear-gradient(180deg, #3a2a20 0%, #1a120e 100%); border-radius: 4px 4px 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,.6); animation: car-table 8s ease-in-out infinite;
}
.scn-cards-mocking-estella .candle {
  position:absolute; bottom:45%; left:50%; width:8px; height:30px; transform:translateX(-50%); background: linear-gradient(180deg, #f0c050 0%, #c09030 100%); border-radius: 2px; box-shadow: 0 0 40px 12px rgba(240,192,80,.4), 0 0 80px 20px rgba(240,192,80,.2); animation: car-candle 2s ease-in-out infinite alternate;
}
.scn-cards-mocking-estella .card-left {
  position:absolute; bottom:38%; left:35%; width:30px; height:45px; background: linear-gradient(135deg, #2a2a2a, #1a1a1a); border: 1px solid #4a3a2a; border-radius: 2px; transform: rotate(-10deg); box-shadow: 2px 2px 6px rgba(0,0,0,.5); animation: car-card-left 5s ease-in-out infinite;
}
.scn-cards-mocking-estella .card-right {
  position:absolute; bottom:36%; right:35%; width:30px; height:45px; background: linear-gradient(135deg, #3a2a1a, #1a1200); border: 1px solid #5a4a3a; border-radius: 2px; transform: rotate(10deg); box-shadow: -2px 2px 6px rgba(0,0,0,.5); animation: car-card-right 5s ease-in-out infinite reverse;
}
.scn-cards-mocking-estella .estella-hand {
  position:absolute; bottom:30%; left:60%; width:18px; height:40px; background: linear-gradient(180deg, #0a0604, #1a1010); border-radius: 40% 40% 30% 30% / 50% 50% 20% 20%; transform: rotate(15deg); animation: car-hand-e 4s ease-in-out infinite;
}
.scn-cards-mocking-estella .pip-hand {
  position:absolute; bottom:30%; left:35%; width:14px; height:34px; background: linear-gradient(180deg, #080604, #120a08); border-radius: 40% 40% 30% 30% / 50% 50% 20% 20%; transform: rotate(-5deg); animation: car-hand-p 4s ease-in-out infinite alternate;
}
.scn-cards-mocking-estella .chair-shadow {
  position:absolute; bottom:22%; left:30%; right:30%; height:8px; background: rgba(0,0,0,.4); filter: blur(6px); border-radius: 50%; animation: car-chair 6s ease-in-out infinite;
}
.scn-cards-mocking-estella .wall-panel {
  position:absolute; top:5%; left:10%; right:10%; height:30%; background: linear-gradient(180deg, #2a1e18, #1a1010); border: 1px solid #3a2a20; border-radius: 2px; opacity: .5; animation: car-panel 10s ease-in-out infinite alternate;
}
@keyframes car-table { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes car-candle { 0% { transform: translateX(-50%) scaleY(1); opacity:.7 } 100% { transform: translateX(-50%) scaleY(1.05); opacity:1 } }
@keyframes car-card-left { 0%,100% { transform: rotate(-10deg) } 50% { transform: rotate(-15deg) translateY(-3px) } }
@keyframes car-card-right { 0%,100% { transform: rotate(10deg) } 50% { transform: rotate(15deg) translateY(-3px) } }
@keyframes car-hand-e { 0%,100% { transform: rotate(15deg) } 50% { transform: rotate(20deg) translateX(2px) } }
@keyframes car-hand-p { 0% { transform: rotate(-5deg) } 100% { transform: rotate(-10deg) translateX(-2px) } }
@keyframes car-chair { 0% { opacity:.3 } 50% { opacity:.6 } 100% { opacity:.4 } }
@keyframes car-panel { 0% { opacity:.4 } 100% { opacity:.6 } }

/* forge-confession-lies */
.scn-forge-confession-lies {
  background: linear-gradient(180deg, #0d0806 0%, #1a0e08 40%, #2a160a 100%), radial-gradient(ellipse at 50% 30%, #3a2010 0%, transparent 70%);
}
.scn-forge-confession-lies .forge-wall {
  position:absolute; inset:0; background: linear-gradient(180deg, #1a120e 0%, #0a0604 100%); animation: for-wall 12s ease-in-out infinite alternate;
}
.scn-forge-confession-lies .anvil {
  position:absolute; bottom:8%; left:50%; width:70px; height:50px; transform:translateX(-50%); background: linear-gradient(180deg, #2a2a2a 0%, #0a0a0a 100%); border-radius: 20% 20% 10% 10% ; box-shadow: 0 4px 10px rgba(0,0,0,.7); animation: for-anvil 7s ease-in-out infinite;
}
.scn-forge-confession-lies .fire-glow {
  position:absolute; bottom:12%; left:48%; width:50px; height:50px; background: radial-gradient(circle, #e08030 0%, #c05020 40%, transparent 70%); border-radius: 50%; box-shadow: 0 0 60px 20px rgba(224,128,48,.4); animation: for-fire 2s ease-in-out infinite alternate;
}
.scn-forge-confession-lies .joe-silhouette {
  position:absolute; bottom:10%; left:60%; width:28px; height:120px; transform:translateX(-50%); background: linear-gradient(180deg, #0a0604 0%, #120a08 100%); border-radius: 40% 40% 30% 30% / 60% 60% 20% 20%; animation: for-joe 5s ease-in-out infinite;
}
.scn-forge-confession-lies .pip-silhouette {
  position:absolute; bottom:10%; left:38%; width:20px; height:80px; transform:translateX(-50%); background: linear-gradient(180deg, #080604 0%, #100a08 100%); border-radius: 40% 40% 30% 30% / 60% 60% 20% 20%; animation: for-pip 4s ease-in-out infinite alternate;
}
.scn-forge-confession-lies .tongs {
  position:absolute; bottom:15%; left:30%; width:8px; height:40px; background: #2a2a2a; border-radius: 2px; transform: rotate(-20deg); animation: for-tongs 6s ease-in-out infinite;
}
.scn-forge-confession-lies .sparks {
  position:absolute; bottom:25%; left:48%; width:100px; height:100px; background: radial-gradient(circle at 30% 40%, #f0c060 0%, transparent 30%), radial-gradient(circle at 70% 60%, #f0a050 0%, transparent 30%); filter: blur(4px); animation: for-sparks 0.5s steps(2) infinite;
}
@keyframes for-wall { 0% { opacity:.5 } 50% { opacity:.8 } 100% { opacity:.6 } }
@keyframes for-anvil { 0% { transform: translateX(-50%) translateY(0) } 50% { transform: translateX(-50%) translateY(-2px) } 100% { transform: translateX(-50%) translateY(0) } }
@keyframes for-fire { 0% { transform: scale(1); opacity:.7 } 100% { transform: scale(1.15); opacity:1 } }
@keyframes for-joe { 0%,100% { transform: translateX(-50%) rotate(0deg) } 50% { transform: translateX(-50%) rotate(1deg) translateY(-2px) } }
@keyframes for-pip { 0% { transform: translateX(-50%) } 100% { transform: translateX(-50%) translateY(-4px) scaleY(1.02) } }
@keyframes for-tongs { 0% { transform: rotate(-20deg) } 50% { transform: rotate(-15deg) } 100% { transform: rotate(-20deg) } }
@keyframes for-sparks { 0% { opacity:.3 } 100% { opacity:.7 } }

/* jolly-bargemen-stranger */
.scn-jolly-bargemen-stranger {
  background: linear-gradient(180deg, #0d0a08 0%, #1a1210 50%, #0a0604 100%), radial-gradient(ellipse at 50% 60%, #2a1e18 0%, transparent 70%);
}
.scn-jolly-bargemen-stranger .pub-wall {
  position:absolute; inset:0; background: linear-gradient(180deg, #1a1412 0%, #0a0604 100%); animation: jol-wall 10s ease-in-out infinite alternate;
}
.scn-jolly-bargemen-stranger .table {
  position:absolute; bottom:5%; left:10%; right:10%; height:40%; background: linear-gradient(180deg, #2a1e18 0%, #120a08 100%); border-radius: 8px; box-shadow: inset 0 8px 20px rgba(0,0,0,.5); animation: jol-table 8s ease-in-out infinite;
}
.scn-jolly-bargemen-stranger .tankard {
  position:absolute; bottom:30%; left:45%; width:20px; height:30px; background: linear-gradient(180deg, #4a3a2a, #2a1a10); border-radius: 4px 4px 6px 6px; box-shadow: 2px 2px 6px rgba(0,0,0,.5); animation: jol-tankard 4s ease-in-out infinite;
}
.scn-jolly-bargemen-stranger .stranger-figure {
  position:absolute; bottom:10%; left:60%; width:28px; height:130px; transform:translateX(-50%); background: linear-gradient(180deg, #0a0604 0%, #120a08 100%); border-radius: 40% 40% 30% 30% / 60% 60% 20% 20%; animation: jol-stranger 6s ease-in-out infinite;
}
.scn-jolly-bargemen-stranger .joe-figure {
  position:absolute; bottom:10%; left:35%; width:30px; height:120px; transform:translateX(-50%); background: linear-gradient(180deg, #0a0604 0%, #100a08 100%); border-radius: 40% 40% 30% 30% / 60% 60% 20% 20%; animation: jol-joe 5s ease-in-out infinite alternate;
}
.scn-jolly-bargemen-stranger .wopsle-figure {
  position:absolute; bottom:10%; left:20%; width:24px; height:110px; transform:translateX(-50%); background: linear-gradient(180deg, #0a0604 0%, #100a08 100%); border-radius: 40% 40% 30% 30% / 60% 60% 20% 20%; animation: jol-wopsle 7s ease-in-out infinite;
}
.scn-jolly-bargemen-stranger .lantern-glow {
  position:absolute; top:10%; right:15%; width:12px; height:12px; background: radial-gradient(circle, #f0c050 0%, transparent 70%); border-radius: 50%; box-shadow: 0 0 40px 12px rgba(240,192,80,.3); animation: jol-lantern 3s ease-in-out infinite alternate;
}
.scn-jolly-bargemen-stranger .window-shape {
  position:absolute; top:5%; left:10%; width:60px; height:80px; background: transparent; border: 4px solid #3a2a20; border-radius: 2px; box-shadow: inset 0 0 20px rgba(0,0,0,.5); animation: jol-window 12s linear infinite;
}
@keyframes jol-wall { 0% { opacity:.6 } 50% { opacity:.8 } 100% { opacity:.65 } }
@keyframes jol-table { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes jol-tankard { 0%,100% { transform: rotate(0deg) } 50% { transform: rotate(3deg) } }
@keyframes jol-stranger { 0% { transform: translateX(-50%) } 50% { transform: translateX(-50%) rotate(2deg) } 100% { transform: translateX(-50%) rotate(-1deg) } }
@keyframes jol-joe { 0% { transform: translateX(-50%) } 100% { transform: translateX(-50%) translateY(-3px) } }
@keyframes jol-wopsle { 0% { transform: translateX(-50%) rotate(0deg) } 50% { transform: translateX(-50%) rotate(1deg) } 100% { transform: translateX(-50%) rotate(-1deg) } }
@keyframes jol-lantern { 0% { opacity:.6; transform: scale(1) } 100% { opacity:1; transform: scale(1.1) } }
@keyframes jol-window { 0% { opacity:.4 } 50% { opacity:.7 } 100% { opacity:.5 } }

/* miss-havisham-forgiveness */
.scn-miss-havisham-forgiveness {
  background: linear-gradient(180deg, #3a2a1a 0%, #5a3a2a 40%, #8a6a4a 70%, #6a4a3a 100%),
              radial-gradient(ellipse at 50% 20%, #7a5a3a 0%, transparent 60%);
}
.scn-miss-havisham-forgiveness .room { position:absolute; inset:0; background:linear-gradient(135deg, #4a3a2a 20%, #2a1a0a 80%); }
.scn-miss-havisham-forgiveness .wall { position:absolute; bottom:30%; left:10%; right:10%; height:70%; background:linear-gradient(180deg, #6a4a2a 0%, #3a2a1a 100%); border-radius: 4px; box-shadow: inset 0 0 40px rgba(0,0,0,.6); }
.scn-miss-havisham-forgiveness .window { position:absolute; top:10%; right:20%; width:50px; height:70px; background:radial-gradient(circle at 30% 40%, #b8a878 0%, #5a4a2a 70%); border-radius: 30% 30% 10% 10%; box-shadow: inset 0 0 20px rgba(200,180,120,.3); }
.scn-miss-havisham-forgiveness .table { position:absolute; bottom:15%; left:30%; right:30%; height:15%; background:linear-gradient(180deg, #5a3a1a 0%, #3a2a0a 100%); border-radius: 4px; box-shadow: 0 4px 8px rgba(0,0,0,.5); }
.scn-miss-havisham-forgiveness .candle { position:absolute; bottom:30%; left:38%; width:8px; height:20px; background:linear-gradient(180deg, #f0c060 0%, #b08030 100%); border-radius: 50% 50% 20% 20%; box-shadow: 0 0 20px 6px rgba(240,192,96,.6); animation: mhf-candle 5s ease-in-out infinite alternate; }
.scn-miss-havisham-forgiveness .figure-woman { position:absolute; bottom:20%; left:45%; width:25px; height:60px; background:linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 70% 70% 40% 40%; transform-origin: bottom; animation: mhf-figure 7s ease-in-out infinite; }
.scn-miss-havisham-forgiveness .shadow { position:absolute; bottom:10%; left:40%; width:80px; height:30px; background:radial-gradient(ellipse, rgba(0,0,0,.5) 0%, transparent 70%); filter: blur(4px); animation: mhf-shadow 7s ease-in-out infinite alternate; }

@keyframes mhf-candle { 0% { box-shadow: 0 0 12px 3px rgba(240,192,96,.4); opacity:.8; height:18px; } 50% { box-shadow: 0 0 28px 8px rgba(255,200,80,.7); opacity:1; height:20px; } 100% { box-shadow: 0 0 16px 4px rgba(240,192,96,.5); opacity:.85; height:19px; } }
@keyframes mhf-figure { 0%,100% { transform: rotate(0deg) translateY(0); } 25% { transform: rotate(1deg) translateY(-2px); } 50% { transform: rotate(-1deg) translateY(-1px); } 75% { transform: rotate(1deg) translateY(-2px); } }
@keyframes mhf-shadow { 0% { transform: scaleX(1); opacity:.4; } 50% { transform: scaleX(1.1); opacity:.6; } 100% { transform: scaleX(.95); opacity:.35; } }

/* fire-wedding-dress */
.scn-fire-wedding-dress {
  background: linear-gradient(180deg, #1a0a0a 0%, #3a1a0a 30%, #5a2a0a 60%, #2a0a00 100%),
              radial-gradient(ellipse at 50% 30%, #c8553d 0%, transparent 60%);
}
.scn-fire-wedding-dress .bg-fire { position:absolute; inset:0; background:linear-gradient(135deg, #5e1a1d 20%, #1a0a0a 80%); }
.scn-fire-wedding-dress .dress { position:absolute; bottom:20%; left:50%; width:50px; height:80px; transform:translateX(-50%); background:linear-gradient(180deg, #a0461a 0%, #5e1a1d 60%, #2a0a00 100%); border-radius: 40% 40% 20% 20% / 60% 60% 30% 30%; box-shadow: 0 0 60px 30px rgba(200,85,61,.5); animation: fwd-dress 3s ease-in-out infinite alternate; }
.scn-fire-wedding-dress .flame-a { position:absolute; bottom:50%; left:40%; width:30px; height:60px; background:linear-gradient(180deg, #ffd080 0%, #c8553d 50%, #5e1a1d 100%); border-radius: 50% 50% 20% 20%; filter: blur(2px); transform-origin: bottom center; animation: fwd-flame 1.5s ease-in-out infinite alternate; }
.scn-fire-wedding-dress .flame-b { position:absolute; bottom:45%; left:55%; width:25px; height:50px; background:linear-gradient(180deg, #ffb060 0%, #a0461a 50%, #3a0a0a 100%); border-radius: 50% 50% 20% 20%; filter: blur(2px); transform-origin: bottom center; animation: fwd-flame 2s ease-in-out infinite alternate-reverse; }
.scn-fire-wedding-dress .figure-pip { position:absolute; bottom:10%; left:30%; width:20px; height:55px; background:linear-gradient(180deg, #1a2a2a 0%, #0a1a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom; animation: fwd-pip 3s ease-in-out infinite; }
.scn-fire-wedding-dress .ember { position:absolute; bottom:70%; left:20%; width:4px; height:4px; background:#ffd080; border-radius:50%; box-shadow: 0 0 6px 2px rgba(255,208,128,.8); animation: fwd-ember 4s ease-out infinite; }
.scn-fire-wedding-dress .smoke { position:absolute; top:10%; left:30%; width:100px; height:40px; background:linear-gradient(180deg, rgba(80,60,50,.4) 0%, transparent 100%); border-radius:50%; filter: blur(8px); animation: fwd-smoke 10s ease-in-out infinite; }

@keyframes fwd-dress { 0% { transform: translateX(-50%) rotate(-2deg) scaleY(1); } 25% { transform: translateX(-50%) rotate(2deg) scaleY(1.05); } 50% { transform: translateX(-50%) rotate(-1deg) scaleY(1); } 75% { transform: translateX(-50%) rotate(1deg) scaleY(1.03); } 100% { transform: translateX(-50%) rotate(0deg) scaleY(1); } }
@keyframes fwd-flame { 0% { transform: scaleY(1) translateY(0); opacity:.9; } 50% { transform: scaleY(1.3) translateY(-10px); opacity:1; } 100% { transform: scaleY(1) translateY(0); opacity:.85; } }
@keyframes fwd-pip { 0%,100% { transform: translateY(0) rotate(-2deg); } 25% { transform: translateY(-3px) rotate(2deg); } 50% { transform: translateY(-1px) rotate(-1deg); } 75% { transform: translateY(-3px) rotate(1deg); } }
@keyframes fwd-ember { 0% { transform: translateY(0) scale(1); opacity:1; } 50% { transform: translateY(-30px) scale(1.5); opacity:.8; } 100% { transform: translateY(-60px) scale(0); opacity:0; } }
@keyframes fwd-smoke { 0% { transform: translateX(0) scale(1); opacity:.4; } 50% { transform: translateX(-20px) scale(1.3); opacity:.6; } 100% { transform: translateX(10px) scale(1); opacity:.3; } }

/* sluice-house-ambush */
.scn-sluice-house-ambush {
  background: linear-gradient(180deg, #0a0a1a 0%, #1a1a3a 40%, #2a2a4a 70%, #1a1a2a 100%),
              radial-gradient(ellipse at 50% 80%, #1a2a3a 0%, transparent 70%);
}
.scn-sluice-house-ambush .sky-dark { position:absolute; inset:0 0 40% 0; background:linear-gradient(180deg, #0a0a1a 0%, #1a1a3a 100%); animation: sha-sky 30s ease-in-out infinite alternate; }
.scn-sluice-house-ambush .water { position:absolute; bottom:0; left:0; right:0; height:40%; background:linear-gradient(180deg, #0a1a2a 0%, #0a0a1a 100%); box-shadow: inset 0 15px 20px rgba(0,0,0,.6); animation: sha-water 12s ease-in-out infinite alternate; }
.scn-sluice-house-ambush .reeds { position:absolute; bottom:40%; left:10%; right:70%; height:50px; background:linear-gradient(90deg, #1a3a2a 0%, transparent 100%); border-radius: 50% 0 0 50%; filter: blur(1px); animation: sha-reeds 8s ease-in-out infinite; }
.scn-sluice-house-ambush .sluice { position:absolute; bottom:35%; left:40%; width:60px; height:40px; background:linear-gradient(180deg, #3a2a1a 0%, #1a1a0a 100%); border-radius: 10% 10% 4% 4%; box-shadow: 0 8px 12px rgba(0,0,0,.8); }
.scn-sluice-house-ambush .figure-a { position:absolute; bottom:30%; left:30%; width:15px; height:35px; background:linear-gradient(180deg, #0a0a1a 0%, #00000a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: sha-figure 10s ease-in-out infinite; }
.scn-sluice-house-ambush .figure-b { position:absolute; bottom:30%; left:55%; width:15px; height:35px; background:linear-gradient(180deg, #0a0a1a 0%, #00000a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: sha-figure 10s ease-in-out infinite 5s; }
.scn-sluice-house-ambush .mist { position:absolute; bottom:45%; left:0; right:0; height:30%; background:linear-gradient(180deg, rgba(30,40,60,.6) 0%, transparent 100%); filter: blur(10px); animation: sha-mist 25s ease-in-out infinite alternate; }

@keyframes sha-sky { 0% { opacity:.6; transform: scaleY(1); } 50% { opacity:.8; transform: scaleY(1.05); } 100% { opacity:.5; transform: scaleY(.95); } }
@keyframes sha-water { 0% { transform: translateY(0); } 50% { transform: translateY(-4px); } 100% { transform: translateY(2px); } }
@keyframes sha-reeds { 0% { transform: rotate(-5deg); } 50% { transform: rotate(5deg); } 100% { transform: rotate(-3deg); } }
@keyframes sha-figure { 0%,100% { transform: translateY(0) rotate(-1deg); } 25% { transform: translateY(-2px) rotate(1deg); } 50% { transform: translateY(0) rotate(-2deg); } 75% { transform: translateY(-2px) rotate(1deg); } }
@keyframes sha-mist { 0% { transform: translateX(0) scale(1); opacity:.3; } 50% { transform: translateX(-30px) scale(1.2); opacity:.5; } 100% { transform: translateX(20px) scale(.9); opacity:.4; } }

/* boat-rescue-magwitch */
.scn-boat-rescue-magwitch {
  background: linear-gradient(180deg, #4a5a5a 0%, #6a7a7a 30%, #8a9a9a 60%, #5a6a6a 100%),
              radial-gradient(ellipse at 50% 10%, #8a9a9a 0%, transparent 60%);
}
.scn-boat-rescue-magwitch .sky-overcast { position:absolute; inset:0 0 50% 0; background:linear-gradient(180deg, #5a6a6a 0%, #7a8a8a 50%, #6a7a7a 100%); animation: brm-sky 20s ease-in-out infinite alternate; }
.scn-boat-rescue-magwitch .river { position:absolute; bottom:0; left:0; right:0; height:50%; background:linear-gradient(180deg, #4a5a5a 0%, #3a4a4a 100%); box-shadow: inset 0 20px 30px rgba(0,0,0,.3); animation: brm-river 15s ease-in-out infinite alternate; }
.scn-boat-rescue-magwitch .boat { position:absolute; bottom:25%; left:30%; width:70px; height:25px; background:linear-gradient(180deg, #5a3a2a 0%, #3a2a1a 100%); border-radius: 30% 30% 10% 10% / 50% 50% 20% 20%; box-shadow: 0 4px 10px rgba(0,0,0,.5); animation: brm-boat 6s ease-in-out infinite; }
.scn-boat-rescue-magwitch .figure-fore { position:absolute; bottom:28%; left:38%; width:14px; height:30px; background:linear-gradient(180deg, #1a2a2a 0%, #0a1a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom; animation: brm-figure 4s ease-in-out infinite; }
.scn-boat-rescue-magwitch .figure-aft { position:absolute; bottom:28%; left:52%; width:14px; height:30px; background:linear-gradient(180deg, #2a3a3a 0%, #1a2a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom; animation: brm-figure 4s ease-in-out infinite 2s; }
.scn-boat-rescue-magwitch .oar { position:absolute; bottom:30%; left:45%; width:40px; height:4px; background:linear-gradient(90deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 50%; transform-origin: 70% center; animation: brm-oar 3s ease-in-out infinite; }
.scn-boat-rescue-magwitch .galley { position:absolute; bottom:20%; right:10%; width:40px; height:15px; background:linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 20% 20% 10% 10%; box-shadow: 0 2px 6px rgba(0,0,0,.6); animation: brm-galley 25s linear infinite; }

@keyframes brm-sky { 0% { opacity:.7; } 50% { opacity:.9; } 100% { opacity:.8; } }
@keyframes brm-river { 0% { transform: translateY(0); } 50% { transform: translateY(-3px); } 100% { transform: translateY(2px); } }
@keyframes brm-boat { 0% { transform: rotate(-3deg) translateY(0); } 25% { transform: rotate(2deg) translateY(-2px); } 50% { transform: rotate(-2deg) translateY(1px); } 75% { transform: rotate(2deg) translateY(-2px); } 100% { transform: rotate(3deg) translateY(0); } }
@keyframes brm-figure { 0%,100% { transform: rotate(-2deg) translateY(0); } 25% { transform: rotate(1deg) translateY(-2px); } 50% { transform: rotate(-1deg) translateY(1px); } 75% { transform: rotate(2deg) translateY(-2px); } }
@keyframes brm-oar { 0% { transform: rotate(-30deg); } 25% { transform: rotate(15deg); } 50% { transform: rotate(-20deg); } 75% { transform: rotate(20deg); } 100% { transform: rotate(-30deg); } }
@keyframes brm-galley { 0% { transform: translateX(0); } 100% { transform: translateX(-120vw); } }

.scn-biddy-advice-gentleman { background: linear-gradient(180deg, #6b7a7a 0%, #8b9a8a 40%, #5a6a5a 100%), radial-gradient(ellipse at 50% 40%, #8b9a8a 0%, transparent 70%); }
.scn-biddy-advice-gentleman .sky-overcast { position:absolute; inset:0 0 45% 0; background: linear-gradient(180deg, #7a8a8a 0%, #6a7a7a 50%, #4a5a5a 100%); opacity:.8; animation: biddy-sky 15s ease-in-out infinite alternate; }
.scn-biddy-advice-gentleman .field-far { position:absolute; bottom:45%; left:0; right:0; height:25%; background: linear-gradient(180deg, #5a7a4a 0%, #4a6a3a 100%); border-radius: 60% 40% 0 0 / 40% 30% 0 0; }
.scn-biddy-advice-gentleman .field-near { position:absolute; bottom:20%; left:0; right:0; height:25%; background: linear-gradient(180deg, #4a6a3a 0%, #3a5a2a 100%); border-radius: 30% 70% 0 0 / 50% 60% 0 0; animation: biddy-sway 6s ease-in-out infinite alternate; }
.scn-biddy-advice-gentleman .hedge-left { position:absolute; bottom:40%; left:8%; width:15%; height:10%; background: linear-gradient(180deg, #3a5a2a 0%, #2a4a1a 100%); border-radius: 50% 50% 30% 30% / 80% 80% 20% 20%; filter: blur(2px); }
.scn-biddy-advice-gentleman .hedge-right { position:absolute; bottom:42%; right:5%; width:10%; height:8%; background: linear-gradient(180deg, #3a5a2a 0%, #2a4a1a 100%); border-radius: 50% 50% 30% 30% / 80% 80% 20% 20%; filter: blur(2px); }
.scn-biddy-advice-gentleman .figure-biddy { position:absolute; bottom:29%; left:42%; width:16px; height:34px; background: linear-gradient(180deg, #3a4a3a 0%, #2a3a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: biddy-stand 5s ease-in-out infinite; }
.scn-biddy-advice-gentleman .figure-pip { position:absolute; bottom:28%; left:52%; width:18px; height:36px; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: biddy-pip-turn 7s ease-in-out infinite; }
.scn-biddy-advice-gentleman .grass-plucked { position:absolute; bottom:28%; left:51%; width:14px; height:8px; background: linear-gradient(180deg, #6a8a4a 0%, #4a6a2a 100%); border-radius: 80% 80% 50% 50% / 100% 100% 60% 60%; animation: biddy-grass 4s ease-in-out infinite; }
.scn-biddy-advice-gentleman .branch-overhanging { position:absolute; top:0; left:20%; width:30%; height:12%; background: linear-gradient(180deg, #2a3a1a 0%, #1a2a0a 100%); border-radius: 80% 80% 0 0 / 100% 100% 0 0; transform-origin: top left; animation: biddy-branch 20s ease-in-out infinite; }
@keyframes biddy-sky { 0% { opacity:.7; filter: brightness(.95); } 50% { opacity:.85; filter: brightness(1); } 100% { opacity:.75; filter: brightness(.9); } }
@keyframes biddy-sway { 0% { transform: translateY(0) scaleX(1); } 50% { transform: translateY(-2px) scaleX(1.02); } 100% { transform: translateY(0) scaleX(1); } }
@keyframes biddy-stand { 0% { transform: translateY(0) rotate(0); } 30% { transform: translateY(-1px) rotate(1deg); } 60% { transform: translateY(0) rotate(-1deg); } 100% { transform: translateY(0) rotate(0); } }
@keyframes biddy-pip-turn { 0% { transform: translateX(0) rotate(0); } 35% { transform: translateX(2px) rotate(3deg); } 70% { transform: translateX(-1px) rotate(-2deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes biddy-grass { 0% { transform: translateY(0) rotate(0); opacity:.6; } 50% { transform: translateY(-4px) rotate(15deg); opacity:1; } 100% { transform: translateY(0) rotate(0); opacity:.6; } }
@keyframes biddy-branch { 0% { transform: rotate(-2deg) scaleY(1); } 50% { transform: rotate(2deg) scaleY(1.02); } 100% { transform: rotate(-2deg) scaleY(1); } }

.scn-jaggers-great-expectations { background: linear-gradient(180deg, #2a1a0a 0%, #3a2a1a 40%, #1a0a00 100%), radial-gradient(ellipse at 50% 60%, #3a2a1a 0%, transparent 70%); }
.scn-jaggers-great-expectations .wall-back { position:absolute; inset:0 0 25% 0; background: linear-gradient(90deg, #4a3a2a 0%, #5a4a3a 50%, #3a2a1a 100%); box-shadow: inset 0 0 60px rgba(0,0,0,.6); }
.scn-jaggers-great-expectations .wall-side { position:absolute; inset:0 0 25% 75%; background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%); box-shadow: inset -8px 0 20px rgba(0,0,0,.5); }
.scn-jaggers-great-expectations .floor-wood { position:absolute; bottom:0; left:0; right:0; height:25%; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-top: 2px solid #5a4a3a; box-shadow: inset 0 8px 30px rgba(0,0,0,.7); }
.scn-jaggers-great-expectations .table-pub { position:absolute; bottom:12%; left:35%; width:30%; height:18%; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 6% 6% 3% 3%; box-shadow: 0 4px 12px rgba(0,0,0,.6); animation: jag-table 12s ease-in-out infinite; }
.scn-jaggers-great-expectations .mug-mug { position:absolute; bottom:22%; left:48%; width:8px; height:12px; background: linear-gradient(180deg, #7a6a5a 0%, #5a4a3a 100%); border-radius: 20% 20% 10% 10%; box-shadow: 2px 2px 6px rgba(0,0,0,.4); }
.scn-jaggers-great-expectations .figure-jaggers { position:absolute; bottom:20%; left:42%; width:20px; height:44px; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: jag-point 5s ease-in-out infinite; }
.scn-jaggers-great-expectations .figure-pip-j { position:absolute; bottom:18%; left:58%; width:16px; height:36px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: jag-recoil 6s ease-in-out infinite; }
.scn-jaggers-great-expectations .candle-glow { position:absolute; bottom:28%; left:44%; width:10px; height:14px; background: radial-gradient(circle, #e0a050 0%, #b07030 60%, transparent 100%); border-radius:50%; box-shadow: 0 0 40px 12px #c08040, 0 0 80px 24px rgba(192,128,64,.3); animation: jag-candle 3s ease-in-out infinite alternate; }
.scn-jaggers-great-expectations .shadow-figures { position:absolute; inset:0 0 0 0; background: radial-gradient(ellipse at 50% 40%, transparent 50%, rgba(0,0,0,.4) 100%); animation: jag-shadow 8s ease-in-out infinite alternate; }
@keyframes jag-table { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes jag-point { 0% { transform: translateX(0) rotate(0); } 30% { transform: translateX(3px) rotate(5deg); } 60% { transform: translateX(-1px) rotate(-3deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes jag-recoil { 0% { transform: translateX(0) rotate(0); } 25% { transform: translateX(-4px) rotate(-4deg); } 50% { transform: translateX(2px) rotate(2deg); } 75% { transform: translateX(-2px) rotate(-2deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes jag-candle { 0% { opacity:.8; box-shadow: 0 0 30px 8px #c08040, 0 0 60px 18px rgba(192,128,64,.3); } 50% { opacity:1; box-shadow: 0 0 50px 16px #e0a050, 0 0 100px 30px rgba(224,160,80,.5); } 100% { opacity:.85; box-shadow: 0 0 35px 10px #c08040, 0 0 70px 20px rgba(192,128,64,.3); } }
@keyframes jag-shadow { 0% { opacity:.5; } 50% { opacity:.7; } 100% { opacity:.5; } }

.scn-preparing-for-london { background: linear-gradient(180deg, #1a1a2e 0%, #2a2a3e 50%, #0a0a1e 100%), radial-gradient(ellipse at 50% 30%, #2a2a3e 0%, transparent 70%); }
.scn-preparing-for-london .wall-bedroom { position:absolute; inset:0 0 20% 0; background: linear-gradient(90deg, #3a3a4a 0%, #4a4a5a 50%, #2a2a3a 100%); box-shadow: inset 0 0 40px rgba(0,0,0,.5); }
.scn-preparing-for-london .floor-bedroom { position:absolute; bottom:0; left:0; right:0; height:20%; background: linear-gradient(180deg, #3a3a2a 0%, #1a1a0a 100%); border-top: 2px solid #4a4a3a; }
.scn-preparing-for-london .bed-frame { position:absolute; bottom:12%; left:25%; width:50%; height:20%; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 8% 8% 4% 4%; box-shadow: 0 6px 20px rgba(0,0,0,.6); animation: pre-bed 10s ease-in-out infinite; }
.scn-preparing-for-london .bed-mattress { position:absolute; bottom:15%; left:27%; width:46%; height:12%; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 20% 20% 10% 10%; box-shadow: inset 0 2px 8px rgba(0,0,0,.4); }
.scn-preparing-for-london .trunk-wood { position:absolute; bottom:5%; right:18%; width:16%; height:16%; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 6% 6% 3% 3%; box-shadow: 2px 4px 10px rgba(0,0,0,.5); animation: pre-trunk 15s ease-in-out infinite; }
.scn-preparing-for-london .suit-coat { position:absolute; bottom:16%; right:14%; width:8%; height:12%; background: linear-gradient(180deg, #4a5a5a 0%, #2a3a3a 100%); border-radius: 20% 20% 10% 10% / 40% 40% 20% 20%; transform-origin: top center; animation: pre-coat 6s ease-in-out infinite alternate; }
.scn-preparing-for-london .figure-pip-bed { position:absolute; bottom:16%; left:40%; width:14px; height:28px; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: pre-restless 5s ease-in-out infinite; }
.scn-preparing-for-london .window-night { position:absolute; top:6%; right:12%; width:20%; height:30%; background: linear-gradient(180deg, #2a3a5a 0%, #1a2a4a 100%); border: 3px solid #3a3a4a; border-radius: 4%; box-shadow: inset 0 0 20px rgba(0,0,0,.4); }
.scn-preparing-for-london .moon-beam { position:absolute; top:10%; right:16%; width:12%; height:8%; background: radial-gradient(ellipse, rgba(200,210,230,.3) 0%, transparent 100%); filter: blur(8px); animation: pre-moon 20s ease-in-out infinite alternate; }
@keyframes pre-bed { 0% { transform: translateY(0); } 50% { transform: translateY(-1px); } 100% { transform: translateY(0); } }
@keyframes pre-trunk { 0% { transform: rotate(0); } 50% { transform: rotate(1deg); } 100% { transform: rotate(0); } }
@keyframes pre-coat { 0% { transform: rotate(0) scaleY(1); } 50% { transform: rotate(3deg) scaleY(1.02); } 100% { transform: rotate(0) scaleY(1); } }
@keyframes pre-restless { 0% { transform: translateY(0) rotate(0); } 25% { transform: translateY(-1px) rotate(3deg); } 50% { transform: translateY(0) rotate(-2deg); } 75% { transform: translateY(-1px) rotate(2deg); } 100% { transform: translateY(0) rotate(0); } }
@keyframes pre-moon { 0% { opacity:.2; transform: translateY(0); } 50% { opacity:.5; transform: translateY(3px); } 100% { opacity:.3; transform: translateY(0); } }

.scn-departure-finger-post { background: linear-gradient(180deg, #c8d8e8 0%, #e8f0e0 40%, #b0c8a8 100%), radial-gradient(ellipse at 50% 0%, #e8f0e0 0%, transparent 60%); }
.scn-departure-finger-post .sky-sunlit { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #b8d8e8 0%, #d8e8d0 50%, #e8f0e0 100%); opacity:.9; animation: dep-sky 20s ease-in-out infinite alternate; }
.scn-departure-finger-post .field-golden { position:absolute; bottom:30%; left:0; right:0; height:30%; background: linear-gradient(180deg, #c8b878 0%, #a8a058 100%); border-radius: 50% 60% 0 0 / 40% 30% 0 0; animation: dep-field 12s ease-in-out infinite alternate; }
.scn-departure-finger-post .road-dusty { position:absolute; bottom:15%; left:40%; width:20%; height:20%; background: linear-gradient(180deg, #c8b888 0%, #a89868 100%); transform: skewX(-5deg); border-radius: 10% 10% 0 0; }
.scn-departure-finger-post .finger-post { position:absolute; bottom:20%; left:48%; width:6px; height:40%; background: linear-gradient(180deg, #8a7a5a 0%, #5a4a2a 100%); border-radius: 10% 10% 4% 4%; transform-origin: bottom center; animation: dep-post 30s ease-in-out infinite; }
.scn-departure-finger-post .sign-arm { position:absolute; bottom:52%; left:45%; width:14%; height:4px; background: linear-gradient(90deg, #6a5a3a 0%, #8a7a5a 100%); border-radius: 20%; transform: rotate(-5deg); animation: dep-sign 25s ease-in-out infinite alternate; }
.scn-departure-finger-post .figure-pip-walk { position:absolute; bottom:14%; left:42%; width:16px; height:34px; background: linear-gradient(180deg, #7a6a5a 0%, #5a4a3a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: dep-walk 4s ease-in-out infinite; }
.scn-departure-finger-post .thrown-shoe-1 { position:absolute; bottom:20%; left:56%; width:10px; height:6px; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 40% 40% 20% 20% / 60% 60% 40% 40%; transform: rotate(30deg); animation: dep-shoe1 6s ease-in-out infinite; }
.scn-departure-finger-post .thrown-shoe-2 { position:absolute; bottom:18%; left:60%; width:10px; height:6px; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 40% 40% 20% 20% / 60% 60% 40% 40%; transform: rotate(-20deg); animation: dep-shoe2 6s ease-in-out infinite 2s; }
.scn-departure-finger-post .tree-line { position:absolute; bottom:50%; left:0; right:0; height:12%; background: linear-gradient(180deg, #6a8a5a 0%, #4a6a3a 100%); border-radius: 70% 30% 0 0 / 80% 60% 0 0; filter: blur(4px); animation: dep-tree 18s ease-in-out infinite alternate; }
@keyframes dep-sky { 0% { opacity:.8; filter: brightness(1); } 50% { opacity:1; filter: brightness(1.05); } 100% { opacity:.85; filter: brightness(.95); } }
@keyframes dep-field { 0% { transform: translateY(0) scaleX(1); } 50% { transform: translateY(-2px) scaleX(1.01); } 100% { transform: translateY(0) scaleX(1); } }
@keyframes dep-post { 0% { transform: rotate(0); } 50% { transform: rotate(.5deg); } 100% { transform: rotate(0); } }
@keyframes dep-sign { 0% { transform: rotate(-5deg); } 50% { transform: rotate(5deg); } 100% { transform: rotate(-5deg); } }
@keyframes dep-walk { 0% { transform: translateX(0) rotate(0); } 25% { transform: translateX(3px) rotate(2deg); } 50% { transform: translateX(6px) rotate(0); } 75% { transform: translateX(9px) rotate(-2deg); } 100% { transform: translateX(12px) rotate(0); } }
@keyframes dep-shoe1 { 0% { transform: translateX(0) rotate(30deg); opacity:1; } 50% { transform: translateX(8px) rotate(20deg); opacity:.8; } 100% { transform: translateX(0) rotate(30deg); opacity:1; } }
@keyframes dep-shoe2 { 0% { transform: translateX(0) rotate(-20deg); opacity:1; } 50% { transform: translateX(6px) rotate(-10deg); opacity:.8; } 100% { transform: translateX(0) rotate(-20deg); opacity:1; } }
@keyframes dep-tree { 0% { transform: scaleY(1); opacity:.6; } 50% { transform: scaleY(1.02); opacity:.8; } 100% { transform: scaleY(1); opacity:.6; } }

/* Scene 1: wemmick-invitation-walworth */
.scn-wemmick-invitation-walworth {
  background: 
    linear-gradient(180deg, #7eb8da 0%, #b3d0e0 30%, #f4d03f 60%, #c49a2c 85%, #5c4033 100%),
    radial-gradient(ellipse at 70% 20%, #fff4b0 0%, transparent 50%);
}
.scn-wemmick-invitation-walworth .sky {
  position: absolute; inset: 0 0 55% 0;
  background: linear-gradient(180deg, #6ba3c7 0%, #a8cbe0 40%, transparent 100%);
  animation: wen-sky 14s ease-in-out infinite alternate;
}
.scn-wemmick-invitation-walworth .sun {
  position: absolute; top: 8%; left: 70%; width: 40px; height: 40px;
  background: radial-gradient(circle, #fff7c0 0%, #ffd700 50%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 60px 20px rgba(255,215,0,0.7);
  animation: wen-sun 8s ease-in-out infinite;
}
.scn-wemmick-invitation-walworth .cottage {
  position: absolute; bottom: 20%; left: 30%; width: 120px; height: 80px;
  background: linear-gradient(180deg, #c99a6b 0%, #8b5e3c 100%);
  border-radius: 6px 6px 8px 8px;
  box-shadow: 0 8px 12px rgba(0,0,0,0.3);
  transform: perspective(300px) rotateX(2deg);
}
.scn-wemmick-invitation-walworth .garden {
  position: absolute; bottom: 18%; left: 10%; right: 10%; height: 12%;
  background: linear-gradient(135deg, #4a7c4f 0%, #6a9e6f 50%, #3d6b42 100%);
  border-radius: 30% 70% 50% 50% / 40% 60% 40% 60%;
  animation: wen-garden 12s ease-in-out infinite alternate;
}
.scn-wemmick-invitation-walworth .fence {
  position: absolute; bottom: 22%; left: 28%; width: 140px; height: 20px;
  background: repeating-linear-gradient(90deg, #6b4423 0px, #6b4423 4px, transparent 4px, transparent 10px);
  border-bottom: 4px solid #4a2c16;
  box-shadow: 0 2px 6px rgba(0,0,0,0.2);
}
.scn-wemmick-invitation-walworth .path {
  position: absolute; bottom: 12%; left: 35%; width: 80px; height: 60px;
  background: linear-gradient(180deg, #b5956b 0%, #8c6b48 100%);
  border-radius: 40% 40% 20% 20%;
  clip-path: polygon(20% 0%, 80% 0%, 90% 100%, 10% 100%);
  animation: wen-path 6s ease-in-out infinite alternate;
}
.scn-wemmick-invitation-walworth .figure-wen {
  position: absolute; bottom: 16%; left: 32%; width: 16px; height: 36px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1c1208 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: wen-walk 4s ease-in-out infinite, wen-float 6s ease-in-out infinite;
}
.scn-wemmick-invitation-walworth .cloud-wen {
  position: absolute; top: 12%; left: 20%; width: 90px; height: 20px;
  background: linear-gradient(180deg, rgba(255,255,255,0.7) 0%, rgba(255,255,255,0.1) 100%);
  border-radius: 50%;
  filter: blur(8px);
  animation: wen-drift 40s linear infinite;
}
@keyframes wen-sky { 0% { opacity: 0.9 } 50% { opacity: 1 } 100% { opacity: 0.8 } }
@keyframes wen-sun { 0% { transform: scale(1); opacity: 0.9 } 50% { transform: scale(1.05); opacity: 1 } 100% { transform: scale(0.95); opacity: 0.8 } }
@keyframes wen-garden { 0% { transform: translateY(0) scaleY(1) } 50% { transform: translateY(-2px) scaleY(1.02) } 100% { transform: translateY(1px) scaleY(0.98) } }
@keyframes wen-path { 0% { transform: translateX(0) skewX(0deg) } 50% { transform: translateX(3px) skewX(-2deg) } 100% { transform: translateX(-2px) skewX(2deg) } }
@keyframes wen-walk { 0% { transform: translateX(0) rotate(-1deg) } 25% { transform: translateX(5px) rotate(1deg) } 50% { transform: translateX(10px) rotate(-1deg) } 75% { transform: translateX(15px) rotate(1deg) } 100% { transform: translateX(20px) rotate(0deg) } }
@keyframes wen-float { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-3px) } }
@keyframes wen-drift { 0% { transform: translateX(-40px) } 100% { transform: translateX(120vw) } }

/* Scene 2: jaggers-dinner-spider */
.scn-jaggers-dinner-spider {
  background: 
    linear-gradient(180deg, #1a1a1a 0%, #2a2a1a 20%, #3a3a2a 40%, #1a1a1a 100%),
    radial-gradient(ellipse at 50% 60%, #4a6a3a 0%, transparent 70%);
}
.scn-jaggers-dinner-spider .wall {
  position: absolute; inset: 0;
  background: repeating-linear-gradient(90deg, #2a2a1a 0px, #2a2a1a 3px, #1a1a14 3px, #1a1a14 6px);
  opacity: 0.3;
  animation: jag-wall 20s linear infinite;
}
.scn-jaggers-dinner-spider .gas-lamp {
  position: absolute; top: 15%; left: 50%; transform: translateX(-50%); width: 20px; height: 30px;
  background: radial-gradient(ellipse, #ffeeaa 0%, #ccaa66 40%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 40px 20px rgba(204,170,102,0.6), 0 0 80px 40px rgba(204,170,102,0.3);
  animation: jag-lamp 4s ease-in-out infinite alternate;
}
.scn-jaggers-dinner-spider .table {
  position: absolute; bottom: 30%; left: 25%; width: 50%; height: 8%;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 10px;
  box-shadow: 0 6px 10px rgba(0,0,0,0.5);
  transform: perspective(400px) rotateX(5deg);
}
.scn-jaggers-dinner-spider .jaggers {
  position: absolute; bottom: 32%; left: 30%; width: 28px; height: 50px;
  background: linear-gradient(180deg, #2a2a2a 0%, #0a0a0a 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: jag-jaggers 6s ease-in-out infinite;
}
.scn-jaggers-dinner-spider .spider {
  position: absolute; bottom: 35%; left: 65%; width: 24px; height: 24px;
  background: radial-gradient(circle at 50% 30%, #3a3a1a 0%, #1a1a0a 100%);
  border-radius: 50% 50% 40% 40%;
  box-shadow: 0 0 12px rgba(0,0,0,0.7);
  animation: jag-spider 3s ease-in-out infinite;
}
.scn-jaggers-dinner-spider .hands {
  position: absolute; bottom: 32%; left: 45%; width: 20px; height: 30px;
  background: linear-gradient(180deg, #c0a080 0%, #a08060 100%);
  border-radius: 30% 30% 20% 20%;
  clip-path: polygon(0% 20%, 100% 20%, 80% 100%, 20% 100%);
  animation: jag-hands 5s ease-in-out infinite alternate;
}
.scn-jaggers-dinner-spider .shadow {
  position: absolute; bottom: 30%; left: 20%; width: 60%; height: 20%;
  background: radial-gradient(ellipse, rgba(0,0,0,0.6) 0%, transparent 100%);
  animation: jag-shadow 8s ease-in-out infinite alternate;
}
@keyframes jag-wall { 0% { opacity: 0.2 } 50% { opacity: 0.4 } 100% { opacity: 0.2 } }
@keyframes jag-lamp { 0% { box-shadow: 0 0 30px 10px rgba(204,170,102,0.5); opacity: 0.8 } 50% { box-shadow: 0 0 50px 25px rgba(255,238,170,0.7); opacity: 1 } 100% { box-shadow: 0 0 35px 12px rgba(204,170,102,0.4); opacity: 0.7 } }
@keyframes jag-jaggers { 0% { transform: translateY(0) rotate(0deg) } 30% { transform: translateY(-2px) rotate(2deg) } 60% { transform: translateY(1px) rotate(-1deg) } 100% { transform: translateY(0) rotate(0deg) } }
@keyframes jag-spider { 0% { transform: scale(1) rotate(0deg) } 25% { transform: scale(1.1) rotate(15deg) } 50% { transform: scale(0.95) rotate(-10deg) } 75% { transform: scale(1.05) rotate(5deg) } 100% { transform: scale(1) rotate(0deg) } }
@keyframes jag-hands { 0% { transform: translateY(0) skewX(0deg) } 50% { transform: translateY(-3px) skewX(-5deg) } 100% { transform: translateY(0) skewX(5deg) } }
@keyframes jag-shadow { 0% { transform: scaleX(1) scaleY(1) } 50% { transform: scaleX(1.2) scaleY(0.9) } 100% { transform: scaleX(0.9) scaleY(1.1) } }

/* Scene 3: joe-visit-london */
.scn-joe-visit-london {
  background: 
    linear-gradient(180deg, #1a1510 0%, #2a2015 30%, #3a2a1a 60%, #1a100a 100%),
    radial-gradient(ellipse at 50% 70%, #4a3a2a 0%, transparent 80%);
}
.scn-joe-visit-london .fireplace {
  position: absolute; bottom: 25%; left: 10%; width: 120px; height: 100px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%);
  border-radius: 10px 10px 20px 20px;
  box-shadow: inset 0 0 20px rgba(200,100,40,0.5);
  overflow: hidden;
}
.scn-joe-visit-london .joe-figure {
  position: absolute; bottom: 28%; left: 45%; width: 30px; height: 45px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: joe-joe 8s ease-in-out infinite;
}
.scn-joe-visit-london .pip-figure {
  position: absolute; bottom: 30%; left: 60%; width: 22px; height: 40px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: joe-pip 6s ease-in-out infinite alternate;
}
.scn-joe-visit-london .chair {
  position: absolute; bottom: 28%; left: 65%; width: 30px; height: 20px;
  background: linear-gradient(180deg, #5a3a22 0%, #3a2010 100%);
  border-radius: 4px;
  box-shadow: 0 4px 6px rgba(0,0,0,0.5);
  transform: perspective(300px) rotateX(15deg);
}
.scn-joe-visit-london .hearth-glow {
  position: absolute; bottom: 20%; left: 10%; width: 120px; height: 80px;
  background: radial-gradient(ellipse at 50% 80%, #ff8833 0%, #cc4400 40%, transparent 70%);
  opacity: 0.7;
  animation: joe-hearth 4s ease-in-out infinite alternate;
}
.scn-joe-visit-london .window-night {
  position: absolute; top: 15%; right: 10%; width: 60px; height: 80px;
  background: linear-gradient(180deg, #0a0a1a 0%, #1a1a3a 100%);
  border: 2px solid #4a3a2a;
  border-radius: 4px;
  box-shadow: inset 0 0 20px rgba(100,150,200,0.1);
  animation: joe-window 12s ease-in-out infinite alternate;
}
@keyframes joe-joe { 0% { transform: translateY(0) rotate(0deg) } 25% { transform: translateY(-2px) rotate(1deg) } 50% { transform: translateY(1px) rotate(-1deg) } 75% { transform: translateY(-1px) rotate(0deg) } 100% { transform: translateY(0) rotate(0deg) } }
@keyframes joe-pip { 0% { transform: translateY(0) scaleY(1) } 50% { transform: translateY(-3px) scaleY(0.95) } 100% { transform: translateY(0) scaleY(1) } }
@keyframes joe-hearth { 0% { opacity: 0.5; transform: scale(1) } 50% { opacity: 0.9; transform: scale(1.05) } 100% { opacity: 0.6; transform: scale(0.98) } }
@keyframes joe-window { 0% { box-shadow: inset 0 0 10px rgba(100,150,200,0.05) } 50% { box-shadow: inset 0 0 30px rgba(100,150,200,0.15) } 100% { box-shadow: inset 0 0 15px rgba(100,150,200,0.08) } }

/* Scene 4: wopsle-play-hamlet */
.scn-wopsle-play-hamlet {
  background: 
    linear-gradient(180deg, #1a0a00 0%, #2a1a10 30%, #3a2a1a 60%, #1a0a00 100%),
    radial-gradient(ellipse at 50% 30%, #5a3a22 0%, transparent 70%);
}
.scn-wopsle-play-hamlet .stage {
  position: absolute; bottom: 20%; left: 5%; width: 90%; height: 60%;
  background: linear-gradient(180deg, #6a4a3a 0%, #3a2a1a 100%);
  border-radius: 10px 10px 0 0;
  box-shadow: inset 0 0 40px rgba(0,0,0,0.6);
}
.scn-wopsle-play-hamlet .curtain-l {
  position: absolute; bottom: 20%; left: 5%; width: 20%; height: 60%;
  background: linear-gradient(135deg, #b87878 0%, #8a5050 50%, #5e1a1d 100%);
  border-radius: 60% 0 0 50%;
  clip-path: polygon(0% 0%, 100% 0%, 80% 100%, 0% 100%);
  animation: wop-curtain 12s ease-in-out infinite alternate;
}
.scn-wopsle-play-hamlet .curtain-r {
  position: absolute; bottom: 20%; right: 5%; width: 20%; height: 60%;
  background: linear-gradient(225deg, #b87878 0%, #8a5050 50%, #5e1a1d 100%);
  border-radius: 0 60% 50% 0;
  clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 20% 100%);
  animation: wop-curtain 12s ease-in-out infinite alternate-reverse;
}
.scn-wopsle-play-hamlet .wopsle {
  position: absolute; bottom: 30%; left: 45%; width: 20px; height: 45px;
  background: linear-gradient(180deg, #2a1a10 0%, #0a0500 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: wop-wopsle 3s ease-in-out infinite;
}
.scn-wopsle-play-hamlet .skull {
  position: absolute; bottom: 40%; left: 50%; width: 14px; height: 18px;
  background: radial-gradient(ellipse at 50% 40%, #c0a880 0%, #7a5a3a 100%);
  border-radius: 50% 50% 30% 30%;
  animation: wop-skull 2s ease-in-out infinite alternate;
}
.scn-wopsle-play-hamlet .footlights {
  position: absolute; bottom: 22%; left: 20%; width: 60%; height: 4%;
  background: repeating-linear-gradient(90deg, #ffd700 0px, #ffd700 6px, transparent 6px, transparent 12px);
  border-radius: 50%;
  filter: blur(2px);
  animation: wop-footlights 0.8s steps(2) infinite;
}
.scn-wopsle-play-hamlet .audience {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: radial-gradient(ellipse at 50% 100%, #1a1a1a 0%, #0a0a0a 100%);
  opacity: 0.8;
  animation: wop-audience 10s ease-in-out infinite alternate;
}
@keyframes wop-curtain { 0% { transform: scaleX(1) } 50% { transform: scaleX(0.95) } 100% { transform: scaleX(1) } }
@keyframes wop-wopsle { 0% { transform: translateY(0) rotate(0deg) scaleY(1) } 25% { transform: translateY(-5px) rotate(5deg) scaleY(0.9) } 50% { transform: translateY(2px) rotate(-3deg) scaleY(1.05) } 75% { transform: translateY(-2px) rotate(2deg) scaleY(0.95) } 100% { transform: translateY(0) rotate(0deg) scaleY(1) } }
@keyframes wop-skull { 0% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(-4px) rotate(8deg) } 100% { transform: translateY(1px) rotate(-5deg) } }
@keyframes wop-footlights { 0% { opacity: 0.7 } 50% { opacity: 1 } 100% { opacity: 0.8 } }
@keyframes wop-audience { 0% { opacity: 0.7 } 50% { opacity: 0.9 } 100% { opacity: 0.7 } }

/* Scene 1: estella-richmond-command (erc) - tense, sunlit */
.scn-estella-richmond-command {
  background:
    linear-gradient(180deg, #4a7cbf 0%, #7fb0d9 30%, #c2d9e8 60%, #f2e6c9 80%, #d9b380 100%);
}
.scn-estella-richmond-command .sky {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #5a8ec9 0%, #a3cbe8 60%, transparent 100%);
  animation: erc-sky 6s ease-in-out infinite alternate;
}
.scn-estella-richmond-command .sun {
  position: absolute; top: 8%; right: 15%; width: 60px; height: 60px;
  background: radial-gradient(circle, #fff5d0 0%, #ffe680 40%, #ffcc40 70%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 80px 40px rgba(255, 230, 128, 0.6);
  animation: erc-sun 4s ease-in-out infinite alternate;
}
.scn-estella-richmond-command .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #a67c52 0%, #6b4e2e 100%);
  border-radius: 30% 20% 0 0 / 20% 10% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.3);
}
.scn-estella-richmond-command .figure-estella {
  position: absolute; bottom: 18%; left: 40%; width: 40px; height: 80px;
  background: linear-gradient(180deg, #e6d4b0 0%, #b88a6a 50%, #4a2a1a 100%);
  border-radius: 45% 45% 30% 30% / 55% 55% 35% 35%;
  transform-origin: bottom center;
  animation: erc-figure-e 3s ease-in-out infinite;
}
.scn-estella-richmond-command .figure-pip {
  position: absolute; bottom: 14%; left: 48%; width: 34px; height: 66px;
  background: linear-gradient(180deg, #c2a88a 0%, #8c6a4e 50%, #2a1a0a 100%);
  border-radius: 40% 40% 50% 50% / 50% 50% 60% 60%;
  transform-origin: bottom right;
  animation: erc-figure-p 4s ease-in-out infinite;
}
.scn-estella-richmond-command .dust {
  position: absolute; top: 40%; left: 50%; width: 10px; height: 4px;
  background: rgba(255, 230, 190, 0.3);
  border-radius: 50%;
  filter: blur(2px);
  animation: erc-dust 5s linear infinite;
}

@keyframes erc-sky {
  0% { opacity: 0.85; }
  50% { opacity: 1; }
  100% { opacity: 0.9; }
}
@keyframes erc-sun {
  0% { transform: scale(0.95); box-shadow: 0 0 60px 30px rgba(255, 230, 128, 0.5); }
  50% { transform: scale(1.05); box-shadow: 0 0 100px 50px rgba(255, 230, 128, 0.7); }
  100% { transform: scale(0.98); box-shadow: 0 0 70px 35px rgba(255, 230, 128, 0.55); }
}
@keyframes erc-figure-e {
  0% { transform: translateX(0) rotate(0deg); }
  50% { transform: translateX(2px) rotate(-2deg); }
  100% { transform: translateX(0) rotate(1deg); }
}
@keyframes erc-figure-p {
  0% { transform: translateX(0) translateY(0) rotate(0deg); }
  25% { transform: translateX(-3px) translateY(2px) rotate(-5deg); }
  50% { transform: translateX(0) translateY(0) rotate(0deg); }
  75% { transform: translateX(2px) translateY(1px) rotate(3deg); }
  100% { transform: translateX(0) translateY(0) rotate(0deg); }
}
@keyframes erc-dust {
  0% { transform: translate(0, 0) scale(1); opacity: 0.3; }
  50% { transform: translate(30px, -20px) scale(1.5); opacity: 0.6; }
  100% { transform: translate(60px, -40px) scale(2); opacity: 0; }
}

/* Scene 2: mrs-joe-funeral (mjf) - dark, overcast */
.scn-mrs-joe-funeral {
  background:
    linear-gradient(180deg, #3a4a5c 0%, #5a6a7c 40%, #7a8a9c 70%, #8a9aac 100%);
}
.scn-mrs-joe-funeral .sky-overcast {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #4a5a6c 0%, #6a7a8c 50%, #8a9aac 100%);
  animation: mjf-sky 20s ease-in-out infinite alternate;
}
.scn-mrs-joe-funeral .ground-churchyard {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #4a5a3a 0%, #2a3a2a 100%);
  border-radius: 20% 20% 0 0 / 10% 10% 0 0;
}
.scn-mrs-joe-funeral .church {
  position: absolute; bottom: 30%; left: 50%; width: 80px; height: 100px;
  background: linear-gradient(180deg, #5a6a7a 0%, #3a4a5a 100%);
  transform: translateX(-50%);
  border-radius: 10% 10% 5% 5% / 20% 20% 5% 5%;
  box-shadow: 0 8px 16px rgba(0,0,0,0.4);
}
.scn-mrs-joe-funeral .headstone {
  position: absolute; bottom: 22%; width: 25px; height: 40px;
  background: linear-gradient(180deg, #6a7a8a 0%, #4a5a6a 100%);
  border-radius: 20% 20% 10% 10%;
  transform-origin: bottom center;
}
.scn-mrs-joe-funeral .headstone-1 { left: 20%; animation: mjf-headstone 8s ease-in-out infinite; }
.scn-mrs-joe-funeral .headstone-2 { left: 35%; animation: mjf-headstone 8s ease-in-out infinite reverse; }
.scn-mrs-joe-funeral .figure-joe {
  position: absolute; bottom: 10%; left: 45%; width: 40px; height: 60px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: mjf-joe 6s ease-in-out infinite;
}
.scn-mrs-joe-funeral .figure-biddy {
  position: absolute; bottom: 8%; left: 60%; width: 36px; height: 56px;
  background: linear-gradient(180deg, #4a5a5a 0%, #2a3a3a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: mjf-biddy 7s ease-in-out infinite;
}
.scn-mrs-joe-funeral .rain {
  position: absolute; inset: 0;
  background: repeating-linear-gradient(0deg, rgba(160,180,200,0.08) 0px, transparent 2px, transparent 4px);
  animation: mjf-rain 0.5s linear infinite;
}

@keyframes mjf-sky {
  0% { opacity: 0.7; }
  50% { opacity: 1; }
  100% { opacity: 0.8; }
}
@keyframes mjf-headstone {
  0% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-2px) rotate(1deg); }
  100% { transform: translateY(0) rotate(-1deg); }
}
@keyframes mjf-joe {
  0% { transform: translateX(0) translateY(0) rotate(0deg); }
  25% { transform: translateX(1px) translateY(-1px) rotate(2deg); }
  50% { transform: translateX(-1px) translateY(0) rotate(-2deg); }
  75% { transform: translateX(1px) translateY(-1px) rotate(1deg); }
  100% { transform: translateX(0) translateY(0) rotate(0deg); }
}
@keyframes mjf-biddy {
  0% { transform: translateX(0) translateY(0); }
  50% { transform: translateX(-2px) translateY(-2px); }
  100% { transform: translateX(0) translateY(0); }
}
@keyframes mjf-rain {
  0% { background-position: 0 0; }
  100% { background-position: 0 12px; }
}

/* Scene 3: wemmick-helps-secret (whs) - warm, sunlit */
.scn-wemmick-helps-secret {
  background:
    linear-gradient(180deg, #87c9e8 0%, #b5d9f0 40%, #e6f2d9 70%, #d9c48a 100%);
}
.scn-wemmick-helps-secret .sky-warm {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #7ab8d9 0%, #a8d9f0 50%, transparent 100%);
  animation: whs-sky 12s ease-in-out infinite alternate;
}
.scn-wemmick-helps-secret .sun-golden {
  position: absolute; top: 6%; left: 20%; width: 50px; height: 50px;
  background: radial-gradient(circle, #fff7d4 0%, #ffd966 40%, #ffb347 70%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 60px 30px rgba(255, 217, 102, 0.5);
  animation: whs-sun 5s ease-in-out infinite alternate;
}
.scn-wemmick-helps-secret .garden-ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #7a9a5a 0%, #5a7a3a 100%);
  border-radius: 30% 40% 0 0 / 20% 30% 0 0;
}
.scn-wemmick-helps-secret .castle {
  position: absolute; bottom: 30%; left: 50%; width: 90px; height: 80px;
  background: linear-gradient(180deg, #c2a87a 0%, #9a7a5a 100%);
  transform: translateX(-50%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.3), inset 0 2px 4px rgba(255,255,200,0.3);
}
.scn-wemmick-helps-secret .figure-wemmick {
  position: absolute; bottom: 16%; left: 42%; width: 36px; height: 66px;
  background: linear-gradient(180deg, #8a7a5a 0%, #5a4a2a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: whs-wemmick 4s ease-in-out infinite;
}
.scn-wemmick-helps-secret .figure-aged {
  position: absolute; bottom: 14%; left: 54%; width: 32px; height: 60px;
  background: linear-gradient(180deg, #7a6a4a 0%, #4a3a1a 100%);
  border-radius: 45% 45% 35% 35% / 55% 55% 45% 45%;
  transform-origin: bottom center;
  animation: whs-aged 5s ease-in-out infinite;
}
.scn-wemmick-helps-secret .secret-paper {
  position: absolute; bottom: 24%; left: 48%; width: 12px; height: 8px;
  background: #f2e0b0;
  border-radius: 2px;
  box-shadow: 0 0 4px rgba(255,255,200,0.6);
  animation: whs-paper 6s ease-in-out infinite;
}
.scn-wemmick-helps-secret .flower {
  position: absolute; width: 16px; height: 16px;
  border-radius: 50%;
  background: radial-gradient(circle, #ff9999 0%, #ff6666 60%, transparent 100%);
}
.scn-wemmick-helps-secret .flower-1 { bottom: 6%; left: 30%; animation: whs-flower 4s ease-in-out infinite; }
.scn-wemmick-helps-secret .flower-2 { bottom: 8%; right: 25%; animation: whs-flower 5s ease-in-out infinite; }

@keyframes whs-sky {
  0% { opacity: 0.9; }
  50% { opacity: 1; }
  100% { opacity: 0.92; }
}
@keyframes whs-sun {
  0% { transform: scale(0.98); box-shadow: 0 0 40px 20px rgba(255, 217, 102, 0.4); }
  50% { transform: scale(1.02); box-shadow: 0 0 80px 40px rgba(255, 217, 102, 0.6); }
  100% { transform: scale(1); box-shadow: 0 0 50px 25px rgba(255, 217, 102, 0.5); }
}
@keyframes whs-wemmick {
  0% { transform: translateX(0) rotate(0deg); }
  30% { transform: translateX(3px) rotate(2deg); }
  60% { transform: translateX(-1px) rotate(-1deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes whs-aged {
  0% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-2px) rotate(3deg); }
  100% { transform: translateY(0) rotate(-1deg); }
}
@keyframes whs-paper {
  0% { transform: translate(0, 0) rotate(0deg); opacity: 0.6; }
  50% { transform: translate(6px, -4px) rotate(-10deg); opacity: 1; }
  100% { transform: translate(12px, -8px) rotate(-20deg); opacity: 0.4; }
}
@keyframes whs-flower {
  0% { transform: scale(1) rotate(0deg); }
  50% { transform: scale(1.2) rotate(15deg); }
  100% { transform: scale(1) rotate(0deg); }
}

/* Scene 4: temple-chambers-convict (tcc) - tense, dim-interior */
.scn-temple-chambers-convict {
  background:
    linear-gradient(180deg, #1a1a2a 0%, #2a2a3a 50%, #3a3a4a 100%);
}
.scn-temple-chambers-convict .wall-dark {
  position: absolute; inset: 0 0 20% 0;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 50%, #0a0a1a 100%);
  animation: tcc-wall 10s ease-in-out infinite alternate;
}
.scn-temple-chambers-convict .floor-wood {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%);
  border-radius: 10% 10% 0 0 / 5% 5% 0 0;
}
.scn-temple-chambers-convict .desk {
  position: absolute; bottom: 12%; left: 50%; width: 80px; height: 40px;
  background: linear-gradient(180deg, #5a3a2a 0%, #3a2a1a 100%);
  transform: translateX(-50%);
  border-radius: 5% 5% 2% 2%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.6);
}
.scn-temple-chambers-convict .candle {
  position: absolute; bottom: 22%; left: 55%; width: 8px; height: 20px;
  background: linear-gradient(180deg, #e6d9b0 0%, #c2a870 100%);
  border-radius: 20% 20% 10% 10% / 40% 40% 20% 20%;
}
.scn-temple-chambers-convict .candle-glow {
  position: absolute; bottom: 18%; left: 52%; width: 30px; height: 30px;
  background: radial-gradient(circle, #ffcc55 0%, #ffaa33 40%, rgba(255, 170, 51, 0.3) 70%, transparent 100%);
  border-radius: 50%;
  animation: tcc-glow 2s ease-in-out infinite alternate;
}
.scn-temple-chambers-convict .figure-pip {
  position: absolute; bottom: 8%; left: 48%; width: 34px; height: 60px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: tcc-pip 5s ease-in-out infinite;
}
.scn-temple-chambers-convict .figure-convict {
  position: absolute; bottom: 6%; right: 20%; width: 40px; height: 68px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: tcc-convict 8s ease-in-out infinite;
}

@keyframes tcc-wall {
  0% { opacity: 0.8; }
  50% { opacity: 1; }
  100% { opacity: 0.9; }
}
@keyframes tcc-glow {
  0% { transform: scale(0.9); opacity: 0.7; box-shadow: 0 0 20px 10px rgba(255, 170, 51, 0.4); }
  50% { transform: scale(1.1); opacity: 1; box-shadow: 0 0 40px 20px rgba(255, 170, 51, 0.7); }
  100% { transform: scale(0.95); opacity: 0.85; box-shadow: 0 0 25px 12px rgba(255, 170, 51, 0.5); }
}
@keyframes tcc-pip {
  0% { transform: translateX(0) translateY(0) rotate(-2deg); }
  25% { transform: translateX(2px) translateY(-1px) rotate(0deg); }
  50% { transform: translateX(0) translateY(0) rotate(2deg); }
  75% { transform: translateX(-2px) translateY(-1px) rotate(0deg); }
  100% { transform: translateX(0) translateY(0) rotate(-2deg); }
}
@keyframes tcc-convict {
  0% { transform: translateX(0) scale(1); opacity: 0.6; }
  50% { transform: translateX(-4px) scale(1.02); opacity: 0.9; }
  100% { transform: translateX(0) scale(1); opacity: 0.6; }
}

/* Scene: churchyard-convict – overcast, tense */
.scn-churchyard-convict {
  background:
    linear-gradient(180deg, #4b4f5a 0%, #353845 30%, #2a2d36 60%, #1e2028 100%),
    radial-gradient(ellipse at 50% 80%, #3a3e4a 0%, transparent 60%);
}
.scn-churchyard-convict .sky {
  position: absolute; inset: 0 0 55% 0;
  background: linear-gradient(180deg, #5a5e6b 0%, #3f4350 60%, transparent);
  animation: cyc-sky 14s ease-in-out infinite alternate;
}
.scn-churchyard-convict .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 55%;
  background: linear-gradient(180deg, #2d342e 0%, #1a1f1a 100%);
  border-radius: 30% 70% 0 0 / 20% 40% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,.5);
}
.scn-churchyard-convict .church {
  position: absolute; bottom: 38%; left: 20%; width: 100px; height: 130px;
  background: linear-gradient(180deg, #4a3e3a 0%, #2a221e 100%);
  clip-path: polygon(0 10%, 50% 0, 100% 10%, 100% 100%, 0 100%);
  transform: scale(1.05);
  box-shadow: 0 0 20px rgba(0,0,0,.6);
}
.scn-churchyard-convict .grave-a {
  position: absolute; bottom: 28%; left: 45%; width: 30px; height: 40px;
  background: linear-gradient(180deg, #6b6e6b 0%, #4a4d4a 100%);
  border-radius: 50% 50% 5% 5% / 60% 60% 10% 10%;
  box-shadow: 0 4px 8px rgba(0,0,0,.4);
  animation: cyc-grave 8s ease-in-out infinite;
}
.scn-churchyard-convict .grave-b {
  position: absolute; bottom: 30%; left: 55%; width: 24px; height: 32px;
  background: linear-gradient(180deg, #5e615e 0%, #3e413e 100%);
  border-radius: 50% 50% 5% 5% / 50% 50% 10% 10%;
  box-shadow: 0 4px 8px rgba(0,0,0,.4);
  animation: cyc-grave 8s ease-in-out infinite 2s;
}
.scn-churchyard-convict .convict {
  position: absolute; bottom: 20%; left: 35%; width: 36px; height: 64px;
  background: linear-gradient(180deg, #2a2a2a 0%, #0f0f0f 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: 50% 100%;
  animation: cyc-spring 3s ease-in-out infinite;
  box-shadow: 0 4px 12px rgba(0,0,0,.7);
}
.scn-churchyard-convict .mist {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at 30% 40%, rgba(200,200,210,.15) 0%, transparent 60%),
              radial-gradient(ellipse at 70% 30%, rgba(180,180,190,.1) 0%, transparent 50%);
  filter: blur(12px);
  animation: cyc-mist 20s linear infinite alternate;
}
@keyframes cyc-sky {
  0% { opacity: .7; }
  50% { opacity: .9; }
  100% { opacity: .6; }
}
@keyframes cyc-grave {
  0%, 100% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-2px) rotate(1deg); }
}
@keyframes cyc-spring {
  0% { transform: translateY(0) scaleY(1); }
  25% { transform: translateY(-10px) scaleY(1.08) rotate(-3deg); }
  50% { transform: translateY(0) scaleY(1); }
  75% { transform: translateY(-5px) scaleY(1.04) rotate(2deg); }
  100% { transform: translateY(0) scaleY(1); }
}
@keyframes cyc-mist {
  0% { transform: translateX(0) scale(1); }
  50% { transform: translateX(20px) scale(1.05); }
  100% { transform: translateX(-10px) scale(0.95); }
}

/* Scene: misty-marshes-pie – dark, tense */
.scn-misty-marshes-pie {
  background:
    linear-gradient(180deg, #1c202a 0%, #151820 40%, #0b0e14 100%),
    radial-gradient(ellipse at 50% 90%, #1f2330 0%, transparent 70%);
}
.scn-misty-marshes-pie .sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #2a2e3a 0%, #12151e 100%);
  animation: mmp-sky 15s ease-in-out infinite alternate;
}
.scn-misty-marshes-pie .marsh-bg {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #1a201a 0%, #0a0f0a 100%);
  border-radius: 20% 80% 0 0 / 30% 50% 0 0;
  box-shadow: inset 0 8px 16px rgba(0,0,0,.6);
}
.scn-misty-marshes-pie .mist-a {
  position: absolute; inset: 10% 0 0 0;
  background: radial-gradient(ellipse at 30% 60%, rgba(180,185,190,.12) 0%, transparent 60%);
  filter: blur(18px);
  animation: mmp-mist 25s linear infinite;
}
.scn-misty-marshes-pie .mist-b {
  position: absolute; inset: 0 0 20% 0;
  background: radial-gradient(ellipse at 70% 40%, rgba(160,170,175,.08) 0%, transparent 50%);
  filter: blur(14px);
  animation: mmp-mist 30s linear infinite reverse;
}
.scn-misty-marshes-pie .pip {
  position: absolute; bottom: 22%; left: 20%; width: 16px; height: 28px;
  background: linear-gradient(180deg, #2a2e3a 0%, #181c24 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: 50% 100%;
  animation: mmp-run 4s ease-in-out infinite;
}
.scn-misty-marshes-pie .convict {
  position: absolute; bottom: 18%; left: 60%; width: 30px; height: 50px;
  background: linear-gradient(180deg, #1a1e22 0%, #0a0e10 100%);
  border-radius: 50% 50% 40% 40% / 50% 50% 40% 40%;
  transform-origin: 50% 100%;
  animation: mmp-shiver 2.5s ease-in-out infinite;
  box-shadow: 0 4px 10px rgba(0,0,0,.5);
}
.scn-misty-marshes-pie .lantern {
  position: absolute; bottom: 25%; left: 55%; width: 8px; height: 8px;
  background: radial-gradient(circle, #d4a56a 0%, #a87a40 70%);
  border-radius: 50%;
  box-shadow: 0 0 20px 6px #a87a40, 0 0 40px 12px rgba(168,122,64,.3);
  animation: mmp-flicker 2s ease-in-out infinite alternate;
}
.scn-misty-marshes-pie .file {
  position: absolute; bottom: 28%; left: 62%; width: 20px; height: 4px;
  background: linear-gradient(90deg, #b0b0b0 0%, #808080 100%);
  border-radius: 2px;
  transform: rotate(30deg);
  animation: mmp-glint 4s ease-in-out infinite;
}
@keyframes mmp-sky {
  0% { opacity: .6; }
  50% { opacity: .9; }
  100% { opacity: .7; }
}
@keyframes mmp-mist {
  0% { transform: translateX(0); }
  50% { transform: translateX(30px); }
  100% { transform: translateX(-20px); }
}
@keyframes mmp-run {
  0% { transform: translateX(0) rotate(-2deg); }
  25% { transform: translateX(8px) rotate(2deg); }
  50% { transform: translateX(16px) rotate(-2deg); }
  75% { transform: translateX(24px) rotate(2deg); }
  100% { transform: translateX(32px) rotate(0deg); }
}
@keyframes mmp-shiver {
  0%, 100% { transform: scaleY(1) rotate(0deg); }
  25% { transform: scaleY(1.05) rotate(-3deg); }
  50% { transform: scaleY(0.95) rotate(2deg); }
  75% { transform: scaleY(1.03) rotate(-1deg); }
}
@keyframes mmp-flicker {
  0% { opacity: .7; box-shadow: 0 0 12px 3px #a87a40; }
  50% { opacity: 1; box-shadow: 0 0 24px 8px #d4a56a; }
  100% { opacity: .8; box-shadow: 0 0 16px 5px #a87a40; }
}
@keyframes mmp-glint {
  0%, 100% { opacity: .3; }
  50% { opacity: .8; }
}

/* Scene: chase-ditch-confession – overcast, tense */
.scn-chase-ditch-confession {
  background:
    linear-gradient(180deg, #5a5e66 0%, #3d4047 35%, #22252b 70%, #121418 100%),
    radial-gradient(ellipse at 50% 100%, #2e3138 0%, transparent 60%);
}
.scn-chase-ditch-confession .sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #6a6e76 0%, #464950 60%, transparent);
  animation: cdc-sky 12s ease-in-out infinite alternate;
}
.scn-chase-ditch-confession .ditch-bg {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #2d312b 0%, #1a1c18 100%);
  clip-path: polygon(0 20%, 20% 0, 80% 0, 100% 20%, 100% 100%, 0 100%);
  box-shadow: inset 0 10px 20px rgba(0,0,0,.6);
}
.scn-chase-ditch-confession .soldier-a {
  position: absolute; bottom: 18%; left: 15%; width: 24px; height: 48px;
  background: linear-gradient(180deg, #3a3e42 0%, #202328 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform: rotate(-8deg);
  animation: cdc-advance 5s ease-in-out infinite;
}
.scn-chase-ditch-confession .soldier-b {
  position: absolute; bottom: 18%; left: 28%; width: 24px; height: 48px;
  background: linear-gradient(180deg, #3e4246 0%, #24282c 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform: rotate(5deg);
  animation: cdc-advance 5s ease-in-out infinite 1.5s;
}
.scn-chase-ditch-confession .convict-one {
  position: absolute; bottom: 12%; left: 50%; width: 30px; height: 52px;
  background: linear-gradient(180deg, #25282a 0%, #0a0c0e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: 50% 100%;
  animation: cdc-fight 2s ease-in-out infinite;
}
.scn-chase-ditch-confession .convict-two {
  position: absolute; bottom: 12%; left: 60%; width: 30px; height: 52px;
  background: linear-gradient(180deg, #2a2e30 0%, #0e1012 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: 50% 100%;
  animation: cdc-fight 2s ease-in-out infinite 1s;
}
.scn-chase-ditch-confession .tree {
  position: absolute; bottom: 25%; right: 10%; width: 20px; height: 80px;
  background: linear-gradient(180deg, #3a3028 0%, #1a1410 100%);
  border-radius: 40% 40% 10% 10% / 80% 80% 20% 20%;
  box-shadow: 0 4px 8px rgba(0,0,0,.5);
  animation: cdc-sway 6s ease-in-out infinite;
}
@keyframes cdc-sky {
  0% { opacity: .7; }
  50% { opacity: .9; }
  100% { opacity: .6; }
}
@keyframes cdc-advance {
  0% { transform: translateX(0) rotate(-8deg); }
  50% { transform: translateX(5px) rotate(-4deg); }
  100% { transform: translateX(0) rotate(-8deg); }
}
@keyframes cdc-fight {
  0% { transform: translateX(0) rotate(-5deg); }
  25% { transform: translateX(4px) rotate(3deg); }
  50% { transform: translateX(-3px) rotate(-7deg); }
  75% { transform: translateX(2px) rotate(2deg); }
  100% { transform: translateX(0) rotate(-5deg); }
}
@keyframes cdc-sway {
  0%, 100% { transform: rotate(0deg); }
  50% { transform: rotate(4deg); }
}

/* Scene: joe-praises-spelling – warm, dim interior */
.scn-joe-praises-spelling {
  background:
    linear-gradient(180deg, #3a2e22 0%, #2a1e14 50%, #1a100c 100%),
    radial-gradient(ellipse at 50% 80%, #c87030 0%, transparent 60%);
}
.scn-joe-praises-spelling .wall {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1e14 100%);
  box-shadow: inset 0 0 60px rgba(0,0,0,.7);
}
.scn-joe-praises-spelling .fire {
  position: absolute; bottom: 10%; left: 5%; width: 60px; height: 80px;
  background: radial-gradient(ellipse at 50% 70%, #e09040 0%, #c06020 40%, #a04010 60%, transparent 80%);
  border-radius: 50% 50% 30% 30% / 70% 70% 30% 30%;
  box-shadow: 0 0 40px 15px #c06020, 0 0 80px 30px rgba(192,96,32,.4);
  animation: jps-fire 3s ease-in-out infinite alternate;
}
.scn-joe-praises-spelling .anvil {
  position: absolute; bottom: 5%; left: 25%; width: 40px; height: 20px;
  background: linear-gradient(180deg, #6a6a6a 0%, #3a3a3a 100%);
  border-radius: 10% 10% 20% 20%;
  box-shadow: 0 4px 8px rgba(0,0,0,.5);
}
.scn-joe-praises-spelling .slate {
  position: absolute; bottom: 20%; left: 60%; width: 50px; height: 30px;
  background: linear-gradient(135deg, #5a4e3a 0%, #3a2e1e 100%);
  border-radius: 4px;
  box-shadow: 0 2px 6px rgba(0,0,0,.4);
  animation: jps-slate 5s ease-in-out infinite;
}
.scn-joe-praises-spelling .joe {
  position: absolute; bottom: 8%; left: 40%; width: 32px; height: 56px;
  background: linear-gradient(180deg, #4a3e32 0%, #2a2218 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: 50% 100%;
  animation: jps-pat 4s ease-in-out infinite;
}
.scn-joe-praises-spelling .pip {
  position: absolute; bottom: 10%; left: 60%; width: 18px; height: 30px;
  background: linear-gradient(180deg, #2a2a2a 0%, #1a1a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: rotate(5deg);
}
.scn-joe-praises-spelling .shelf {
  position: absolute; top: 10%; left: 10%; right: 10%; height: 6px;
  background: linear-gradient(180deg, #3a2e22 0%, #1e1610 100%);
  border-radius: 2px;
  box-shadow: 0 2px 4px rgba(0,0,0,.3);
}
@keyframes jps-fire {
  0% { transform: scale(1) translateY(0); opacity: .8; }
  50% { transform: scale(1.05) translateY(-3px); opacity: 1; }
  100% { transform: scale(0.95) translateY(2px); opacity: .85; }
}
@keyframes jps-slate {
  0% { transform: rotate(0deg) scale(1); }
  25% { transform: rotate(2deg) scale(1.02); }
  50% { transform: rotate(-1deg) scale(0.98); }
  75% { transform: rotate(1deg) scale(1.01); }
  100% { transform: rotate(0deg) scale(1); }
}
@keyframes jps-pat {
  0%, 100% { transform: translateY(0) rotate(0deg); }
  25% { transform: translateY(-2px) rotate(2deg); }
  50% { transform: translateY(0) rotate(-1deg); }
  75% { transform: translateY(-1px) rotate(1deg); }
}

.scn-jaggers-office-london {
  background: 
    linear-gradient(180deg, #d0dbe8 0%, #b0c0d0 100%),
    radial-gradient(ellipse at 70% 30%, #ffffff 0%, transparent 40%);
}

.scn-jaggers-office-london .back-wall {
  position: absolute; inset: 0 0 55% 0;
  background: linear-gradient(90deg, #c0cedc 0%, #e0e8f0 50%, #c0cedc 100%);
  animation: jo-wall 12s ease-in-out infinite alternate;
}

.scn-jaggers-office-london .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 55%;
  background: linear-gradient(180deg, #8a7a6a 0%, #5a4a3a 100%);
  animation: jo-floor 18s ease-in-out infinite alternate;
}

.scn-jaggers-office-london .window {
  position: absolute; top: 8%; left: 60%; width: 25%; height: 45%;
  background: linear-gradient(135deg, #fffdeb 0%, #b8c8e0 100%);
  border: 4px solid #5a4a3a; border-radius: 4px;
  box-shadow: inset 0 0 40px rgba(255,255,200,0.3);
  animation: jo-window 5s ease-in-out infinite alternate;
}

.scn-jaggers-office-london .desk {
  position: absolute; bottom: 30%; left: 20%; width: 50%; height: 12%;
  background: linear-gradient(180deg, #6a5a4a 0%, #3a2a1a 100%);
  border-radius: 4px; box-shadow: 0 4px 8px rgba(0,0,0,0.3);
  animation: jo-desk 20s ease-in-out infinite;
}

.scn-jaggers-office-london .chair {
  position: absolute; bottom: 26%; left: 30%; width: 20%; height: 25%;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 20% 20% / 60% 60% 20% 20%;
  animation: jo-chair 7s ease-in-out infinite;
}

.scn-jaggers-office-london .client {
  position: absolute; bottom: 26%; left: 32%; width: 12%; height: 28%;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: jo-client 4s ease-in-out infinite;
}

.scn-jaggers-office-london .jaggers {
  position: absolute; bottom: 16%; left: 45%; width: 18%; height: 40%;
  background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 100%);
  border-radius: 40% 40% 20% 20% / 70% 70% 20% 20%;
  transform-origin: bottom center;
  animation: jo-jaggers 3s ease-in-out infinite;
}

@keyframes jo-wall { 0% { opacity: 0.85; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes jo-floor { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes jo-window { 0% { box-shadow: inset 0 0 20px rgba(255,255,200,0.2); } 50% { box-shadow: inset 0 0 60px rgba(255,255,200,0.5); } 100% { box-shadow: inset 0 0 30px rgba(255,255,200,0.3); } }
@keyframes jo-desk { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(1px) rotate(0.5deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes jo-chair { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(3px) rotate(2deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes jo-client { 0% { transform: translateY(0) rotate(0deg); } 30% { transform: translateY(-2px) rotate(-1deg); } 60% { transform: translateY(1px) rotate(1deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes jo-jaggers { 0% { transform: translateY(0) rotate(-2deg); } 40% { transform: translateY(-3px) rotate(1deg); } 70% { transform: translateY(1px) rotate(-1deg); } 100% { transform: translateY(0) rotate(2deg); } }

/* --- scene 2 --- */
.scn-meeting-herbert-pocket {
  background: 
    linear-gradient(180deg, #4a3a2a 0%, #3a2a1a 50%, #2a1a0a 100%),
    radial-gradient(ellipse at 50% 20%, #b08040 0%, transparent 60%);
}

.scn-meeting-herbert-pocket .room-bg {
  position: absolute; inset: 0; 
  background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%);
  animation: hp-room 20s ease-in-out infinite alternate;
}

.scn-meeting-herbert-pocket .table {
  position: absolute; bottom: 18%; left: 25%; width: 50%; height: 10%;
  background: linear-gradient(180deg, #6a4a2a 0%, #4a2a0a 100%);
  border-radius: 8px; box-shadow: 0 6px 12px rgba(0,0,0,0.5);
  animation: hp-table 15s ease-in-out infinite;
}

.scn-meeting-herbert-pocket .lamp {
  position: absolute; bottom: 24%; left: 40%; width: 12%; height: 16%;
  background: radial-gradient(circle, #f0c068 0%, #c08040 70%);
  border-radius: 50%; box-shadow: 0 0 40px 10px #d0a050;
  animation: hp-lamp 4s ease-in-out infinite alternate;
}

.scn-meeting-herbert-pocket .pip {
  position: absolute; bottom: 14%; left: 28%; width: 14%; height: 30%;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: hp-pip 5s ease-in-out infinite;
}

.scn-meeting-herbert-pocket .herbert {
  position: absolute; bottom: 14%; left: 54%; width: 14%; height: 30%;
  background: linear-gradient(180deg, #2a1a2a 0%, #1a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: hp-herbert 5s ease-in-out infinite alternate;
}

.scn-meeting-herbert-pocket .chair-back {
  position: absolute; bottom: 10%; left: 15%; width: 20%; height: 40%;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 40% 40% 20% 20% / 70% 70% 20% 20%;
  animation: hp-chair 12s ease-in-out infinite;
}

@keyframes hp-room { 0% { opacity: 0.8; } 50% { opacity: 0.95; } 100% { opacity: 0.85; } }
@keyframes hp-table { 0% { transform: scale(1); } 50% { transform: scale(0.98); } 100% { transform: scale(1); } }
@keyframes hp-lamp { 0% { box-shadow: 0 0 30px 8px #d0a050; } 50% { box-shadow: 0 0 50px 15px #e0b060; } 100% { box-shadow: 0 0 35px 10px #c09040; } }
@keyframes hp-pip { 0% { transform: translateX(0) rotate(-2deg); } 50% { transform: translateX(4px) rotate(1deg); } 100% { transform: translateX(0) rotate(2deg); } }
@keyframes hp-herbert { 0% { transform: translateX(0) rotate(2deg); } 50% { transform: translateX(-4px) rotate(-1deg); } 100% { transform: translateX(0) rotate(-2deg); } }
@keyframes hp-chair { 0% { transform: scale(1); } 50% { transform: scale(1.02); } 100% { transform: scale(1); } }

/* --- scene 3 --- */
.scn-herbert-explains-miss-havisham {
  background: 
    linear-gradient(180deg, #2a1a0a 0%, #3a2a1a 40%, #1a0a00 100%),
    radial-gradient(ellipse at 40% 20%, #a06020 0%, transparent 50%);
}

.scn-herbert-explains-miss-havisham .room-dark {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, #1a0a00 0%, #2a1a0a 100%);
  animation: hmh-room 25s ease-in-out infinite alternate;
}

.scn-herbert-explains-miss-havisham .fireplace {
  position: absolute; bottom: 8%; left: 10%; width: 30%; height: 30%;
  background: linear-gradient(135deg, #4a2a0a 0%, #2a1a0a 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: inset 0 -10px 20px rgba(0,0,0,0.6);
  animation: hmh-fire 6s ease-in-out infinite alternate;
}

.scn-herbert-explains-miss-havisham .herbert-fig {
  position: absolute; bottom: 12%; left: 25%; width: 16%; height: 35%;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: hmh-herbert 4s ease-in-out infinite;
}

.scn-herbert-explains-miss-havisham .pip-fig {
  position: absolute; bottom: 12%; left: 50%; width: 16%; height: 35%;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: hmh-pip 5s ease-in-out infinite;
}

.scn-herbert-explains-miss-havisham .miss-havisham-ghost {
  position: absolute; bottom: 5%; left: 65%; width: 25%; height: 60%;
  background: linear-gradient(180deg, rgba(200,180,160,0.2) 0%, rgba(80,60,40,0.4) 100%);
  border-radius: 40% 40% 20% 20% / 70% 70% 20% 20%;
  filter: blur(6px);
  animation: hmh-ghost 10s ease-in-out infinite alternate;
}

.scn-herbert-explains-miss-havisham .table-tea {
  position: absolute; bottom: 10%; left: 35%; width: 25%; height: 8%;
  background: linear-gradient(180deg, #5a3a1a 0%, #3a1a00 100%);
  border-radius: 6px; box-shadow: 0 4px 8px rgba(0,0,0,0.4);
  animation: hmh-table 18s ease-in-out infinite;
}

@keyframes hmh-room { 0% { opacity: 0.8; } 50% { opacity: 0.9; } 100% { opacity: 0.85; } }
@keyframes hmh-fire { 0% { box-shadow: inset 0 -10px 20px rgba(0,0,0,0.6), 0 0 20px #a04010; } 50% { box-shadow: inset 0 -10px 20px rgba(0,0,0,0.6), 0 0 40px #c06020; } 100% { box-shadow: inset 0 -10px 20px rgba(0,0,0,0.6), 0 0 25px #b05018; } }
@keyframes hmh-herbert { 0% { transform: translateX(0) rotate(-3deg); } 50% { transform: translateX(5px) rotate(0deg); } 100% { transform: translateX(0) rotate(3deg); } }
@keyframes hmh-pip { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-2px) rotate(-1deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes hmh-ghost { 0% { opacity: 0.2; transform: scale(0.95); } 50% { opacity: 0.4; transform: scale(1.02); } 100% { opacity: 0.25; transform: scale(0.95); } }
@keyframes hmh-table { 0% { transform: scale(1); } 50% { transform: scale(0.97); } 100% { transform: scale(1); } }

/* --- scene 4 --- */
.scn-pocket-household-chaos {
  background: 
    linear-gradient(180deg, #f0e8d0 0%, #e0d0b0 50%, #c8b898 100%),
    radial-gradient(ellipse at 50% 80%, #ffe8c0 0%, transparent 60%);
}

.scn-pocket-household-chaos .floor-bright {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #c0a880 0%, #a08860 100%);
  animation: phc-floor 20s ease-in-out infinite alternate;
}

.scn-pocket-household-chaos .armchair {
  position: absolute; bottom: 18%; left: 10%; width: 25%; height: 40%;
  background: linear-gradient(180deg, #8a7a5a 0%, #5a4a2a 100%);
  border-radius: 50% 50% 30% 30% / 70% 70% 30% 30%;
  box-shadow: 0 6px 12px rgba(0,0,0,0.2);
  animation: phc-chair 15s ease-in-out infinite;
}

.scn-pocket-household-chaos .book {
  position: absolute; bottom: 25%; left: 18%; width: 8%; height: 12%;
  background: linear-gradient(135deg, #c04020 0%, #802010 100%);
  border-radius: 4px; transform: rotate(15deg);
  animation: phc-book 3s ease-in-out infinite;
}

.scn-pocket-household-chaos .nurse {
  position: absolute; bottom: 5%; left: 40%; width: 12%; height: 30%;
  background: linear-gradient(180deg, #a08870 0%, #806850 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: phc-nurse 5s ease-in-out infinite;
}

.scn-pocket-household-chaos .child1 {
  position: absolute; bottom: 8%; left: 55%; width: 8%; height: 20%;
  background: linear-gradient(180deg, #709070 0%, #406040 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: phc-child1 4s ease-in-out infinite;
}

.scn-pocket-household-chaos .child2 {
  position: absolute; bottom: 10%; left: 65%; width: 8%; height: 18%;
  background: linear-gradient(180deg, #6090a0 0%, #306070 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: phc-child2 4s ease-in-out infinite 1s;
}

.scn-pocket-household-chaos .mr-pocket {
  position: absolute; bottom: 12%; left: 75%; width: 14%; height: 32%;
  background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: phc-mr 8s ease-in-out infinite;
}

@keyframes phc-floor { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.85; } }
@keyframes phc-chair { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-3px) rotate(1deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes phc-book { 0% { transform: rotate(15deg) translateY(0); } 25% { transform: rotate(20deg) translateY(-8px); } 50% { transform: rotate(10deg) translateY(-4px); } 75% { transform: rotate(25deg) translateY(-12px); } 100% { transform: rotate(15deg) translateY(0); } }
@keyframes phc-nurse { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(15px) rotate(3deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes phc-child1 { 0% { transform: translateX(0) translateY(0); } 30% { transform: translateX(20px) translateY(-5px); } 60% { transform: translateX(10px) translateY(5px); } 100% { transform: translateX(0) translateY(0); } }
@keyframes phc-child2 { 0% { transform: translateX(0) translateY(0); } 30% { transform: translateX(-15px) translateY(-8px); } 60% { transform: translateX(-5px) translateY(3px); } 100% { transform: translateX(0) translateY(0); } }
@keyframes phc-mr { 0% { transform: translateY(0) rotate(-2deg); } 50% { transform: translateY(3px) rotate(1deg); } 100% { transform: translateY(0) rotate(-2deg); } }

/* ---- scene: magwitch-revelation ---- */
.scn-magwitch-revelation {
  background:
    radial-gradient(ellipse 80% 60% at 30% 50%, #3a2210 0%, transparent 70%),
    linear-gradient(180deg, #1a1210 0%, #2a1a10 50%, #0e0a08 100%);
}
.scn-magwitch-revelation .wall-bg {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(180deg, #3a2818 0%, #2a1a10 60%, #1a1008 100%);
  border-radius: 2px;
  box-shadow: inset 0 0 30px rgba(0,0,0,.6);
  animation: mwrev-wall 25s ease-in-out infinite;
}
.scn-magwitch-revelation .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #2a1a10 0%, #1a0e08 100%);
  border-radius: 4px 4px 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,.5);
  animation: mwrev-floor 35s ease-in-out infinite alternate;
}
.scn-magwitch-revelation .window-pane {
  position: absolute; top: 15%; left: 65%; width: 80px; height: 100px;
  background: radial-gradient(ellipse at 50% 30%, #3a4a5a 0%, #1a2228 70%, transparent 100%);
  border: 6px solid #1a0e08;
  border-radius: 4px;
  box-shadow: inset 0 0 20px rgba(0,0,0,.5), 0 0 0 4px #2a1a10;
  animation: mwrev-window 12s ease-in-out infinite alternate;
}
.scn-magwitch-revelation .lantern-glow {
  position: absolute; bottom: 38%; left: 22%; width: 40px; height: 40px;
  background: radial-gradient(circle, #e09840 0%, #b06020 40%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 60px 20px rgba(200,140,50,.4), 0 0 100px 50px rgba(200,140,50,.2);
  animation: mwrev-lantern 2.5s ease-in-out infinite alternate;
}
.scn-magwitch-revelation .figure-magwitch {
  position: absolute; bottom: 32%; left: 25%; width: 70px; height: 130px;
  background: linear-gradient(180deg, #1a1210 0%, #0e0a08 60%, #050302 100%);
  border-radius: 50% 45% 40% 40% / 55% 50% 35% 35%;
  transform-origin: bottom center;
  box-shadow: 0 0 10px rgba(0,0,0,.6);
  animation: mwrev-magwitch 6s ease-in-out infinite;
}
.scn-magwitch-revelation .figure-pip-shadow {
  position: absolute; bottom: 30%; left: 55%; width: 50px; height: 110px;
  background: linear-gradient(180deg, #1a1410 0%, #0e0a08 70%);
  border-radius: 45% 50% 40% 40% / 50% 60% 35% 40%;
  transform-origin: bottom center;
  filter: blur(3px);
  opacity: 0.6;
  animation: mwrev-pip 8s ease-in-out infinite alternate;
}
.scn-magwitch-revelation .chain-shackle {
  position: absolute; bottom: 32%; left: 30%; width: 20px; height: 40px;
  background: radial-gradient(ellipse at 50% 20%, #5a4a3a 0%, #2a1a10 100%);
  border-radius: 40% 40% 30% 30%;
  box-shadow: 0 4px 6px rgba(0,0,0,.5);
  animation: mwrev-chain 3s ease-in-out infinite;
}
@keyframes mwrev-wall {
  0% { opacity: 0.7; transform: scaleY(1); }
  50% { opacity: 1; transform: scaleY(1.02); }
  100% { opacity: 0.8; transform: scaleY(0.98); }
}
@keyframes mwrev-floor {
  0% { background-position: 0% 100%; }
  50% { background-position: 50% 100%; }
  100% { background-position: 100% 100%; }
}
@keyframes mwrev-window {
  0% { opacity: 0.5; transform: scaleX(1); }
  50% { opacity: 0.8; transform: scaleX(1.05); }
  100% { opacity: 0.6; transform: scaleX(0.95); }
}
@keyframes mwrev-lantern {
  0% { transform: scale(1) rotate(-2deg); opacity: 0.7; box-shadow: 0 0 40px 15px rgba(200,140,50,.3); }
  40% { transform: scale(1.08) rotate(2deg); opacity: 1; box-shadow: 0 0 80px 30px rgba(200,140,50,.5); }
  100% { transform: scale(0.95) rotate(-1deg); opacity: 0.6; box-shadow: 0 0 30px 10px rgba(200,140,50,.2); }
}
@keyframes mwrev-magwitch {
  0% { transform: translateX(0) translateY(0) rotate(0deg); }
  25% { transform: translateX(3px) translateY(-2px) rotate(1deg); }
  50% { transform: translateX(0) translateY(-4px) rotate(-1deg); }
  75% { transform: translateX(-2px) translateY(-1px) rotate(2deg); }
  100% { transform: translateX(0) translateY(0) rotate(0deg); }
}
@keyframes mwrev-pip {
  0% { transform: translateX(0) scaleX(1) rotate(0deg); opacity: 0.5; }
  50% { transform: translateX(-8px) scaleX(0.95) rotate(-3deg); opacity: 0.7; }
  100% { transform: translateX(0) scaleX(1) rotate(0deg); opacity: 0.5; }
}
@keyframes mwrev-chain {
  0% { transform: translateY(0) rotate(-5deg); }
  50% { transform: translateY(4px) rotate(5deg); }
  100% { transform: translateY(0) rotate(-3deg); }
}

/* ---- scene: jaggers-confirms-provis ---- */
.scn-jaggers-confirms-provis {
  background:
    radial-gradient(ellipse 70% 50% at 50% 20%, #e8dcc0 0%, #c4b498 50%, transparent 70%),
    linear-gradient(180deg, #f5efe0 0%, #d9cebc 50%, #b8aa94 100%);
}
.scn-jaggers-confirms-provis .office-wall {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #e8dcc0 0%, #d0c4a8 60%, #b8a08a 100%);
  border-radius: 2px;
  box-shadow: inset 0 -10px 30px rgba(0,0,0,.15);
  animation: jagpr-wall 30s ease-in-out infinite alternate;
}
.scn-jaggers-confirms-provis .desk-top {
  position: absolute; bottom: 30%; left: 15%; width: 70%; height: 45px;
  background: linear-gradient(180deg, #6a4a2a 0%, #4a3020 100%);
  border-radius: 8px 8px 4px 4px;
  box-shadow: 0 8px 16px rgba(0,0,0,.3), inset 0 2px 4px rgba(255,255,200,.2);
  transform: perspective(800px) rotateX(10deg);
  animation: jagpr-desk 20s ease-in-out infinite;
}
.scn-jaggers-confirms-provis .paper-slip {
  position: absolute; bottom: 34%; left: 30%; width: 60px; height: 40px;
  background: linear-gradient(135deg, #f5efe0 0%, #e0d4c0 100%);
  border-radius: 2px;
  box-shadow: 0 2px 4px rgba(0,0,0,.2);
  transform: rotate(-5deg);
  animation: jagpr-paper 4s ease-in-out infinite alternate;
}
.scn-jaggers-confirms-provis .jaggers-chair {
  position: absolute; bottom: 25%; left: 20%; width: 80px; height: 100px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1208 100%);
  border-radius: 30% 30% 10% 10% / 40% 40% 20% 20%;
  box-shadow: 0 6px 12px rgba(0,0,0,.4);
  animation: jagpr-chair 15s ease-in-out infinite;
}
.scn-jaggers-confirms-provis .figure-provis {
  position: absolute; bottom: 28%; left: 55%; width: 60px; height: 120px;
  background: linear-gradient(180deg, #2a1a10 0%, #0e0804 100%);
  border-radius: 45% 50% 40% 40% / 50% 55% 35% 35%;
  transform-origin: bottom center;
  box-shadow: 0 0 8px rgba(0,0,0,.5);
  animation: jagpr-provis 5s ease-in-out infinite;
}
.scn-jaggers-confirms-provis .figure-herbert {
  position: absolute; bottom: 30%; left: 72%; width: 50px; height: 115px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%);
  border-radius: 50% 45% 40% 40% / 55% 50% 30% 30%;
  transform-origin: bottom center;
  filter: brightness(0.8);
  animation: jagpr-herbert 8s ease-in-out infinite alternate;
}
.scn-jaggers-confirms-provis .tall-clock {
  position: absolute; bottom: 30%; right: 8%; width: 30px; height: 140px;
  background: linear-gradient(180deg, #5a4030 0%, #3a2818 100%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 0 4px 10px rgba(0,0,0,.4);
  animation: jagpr-clock 40s linear infinite;
}
.scn-jaggers-confirms-provis .inkwell {
  position: absolute; bottom: 37%; left: 28%; width: 16px; height: 14px;
  background: radial-gradient(circle at 50% 30%, #1a1a2a 0%, #0a0a16 100%);
  border-radius: 50% 50% 30% 30%;
  box-shadow: 0 2px 4px rgba(0,0,0,.5);
  animation: jagpr-ink 6s ease-in-out infinite alternate;
}
@keyframes jagpr-wall {
  0% { opacity: 0.9; }
  50% { opacity: 1; }
  100% { opacity: 0.95; }
}
@keyframes jagpr-desk {
  0% { transform: perspective(800px) rotateX(10deg) translateY(0); }
  50% { transform: perspective(800px) rotateX(12deg) translateY(-1px); }
  100% { transform: perspective(800px) rotateX(10deg) translateY(0); }
}
@keyframes jagpr-paper {
  0% { transform: rotate(-5deg) translateX(0); }
  50% { transform: rotate(-3deg) translateX(2px); }
  100% { transform: rotate(-5deg) translateX(0); }
}
@keyframes jagpr-chair {
  0% { transform: translateY(0); }
  50% { transform: translateY(-4px); }
  100% { transform: translateY(0); }
}
@keyframes jagpr-provis {
  0% { transform: translateX(0) rotate(0deg); }
  30% { transform: translateX(2px) rotate(1deg); }
  60% { transform: translateX(-2px) rotate(-1deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes jagpr-herbert {
  0% { transform: translateY(0) scaleY(1); opacity: 0.7; }
  50% { transform: translateY(-3px) scaleY(1.02); opacity: 0.9; }
  100% { transform: translateY(0) scaleY(1); opacity: 0.7; }
}
@keyframes jagpr-clock {
  0% { background-position: 0% 0%; }
  50% { background-position: 0% 5%; }
  100% { background-position: 0% 0%; }
}
@keyframes jagpr-ink {
  0% { transform: scale(1); }
  50% { transform: scale(1.1); }
  100% { transform: scale(1); }
}

/* ---- scene: estella-marriage-announcement ---- */
.scn-estella-marriage-announcement {
  background:
    radial-gradient(ellipse 60% 80% at 50% 40%, #4a3020 0%, transparent 80%),
    linear-gradient(180deg, #1a1210 0%, #2a1a14 40%, #1a0e0a 100%);
}
.scn-estella-marriage-announcement .room-wall-damask {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #3a2820 0%, #2a1a12 70%, transparent 100%),
              repeating-linear-gradient(45deg, transparent, transparent 8px, rgba(80,50,30,.15) 8px, rgba(80,50,30,.15) 16px);
  border-radius: 2px;
  box-shadow: inset 0 -20px 40px rgba(0,0,0,.4);
  animation: estma-wall 20s ease-in-out infinite alternate;
}
.scn-estella-marriage-announcement .chaise-longue {
  position: absolute; bottom: 20%; left: 15%; width: 120px; height: 70px;
  background: linear-gradient(180deg, #4a3030 0%, #2a1a20 100%);
  border-radius: 30% 30% 20% 20% / 40% 40% 20% 20%;
  box-shadow: 0 6px 12px rgba(0,0,0,.4), inset 0 2px 4px rgba(255,200,200,.1);
  transform: rotate(-2deg);
  animation: estma-chaise 15s ease-in-out infinite;
}
.scn-estella-marriage-announcement .estella-figure {
  position: absolute; bottom: 25%; left: 30%; width: 55px; height: 130px;
  background: linear-gradient(180deg, #1a1a22 0%, #0e0e16 70%, #05050a 100%);
  border-radius: 50% 45% 45% 40% / 55% 50% 30% 30%;
  transform-origin: bottom center;
  box-shadow: 0 0 10px rgba(0,0,0,.5);
  animation: estma-estella 7s ease-in-out infinite;
}
.scn-estella-marriage-announcement .miss-havisham-figure {
  position: absolute; bottom: 22%; left: 55%; width: 65px; height: 110px;
  background: linear-gradient(180deg, #5a4030 0%, #3a2a20 100%);
  border-radius: 45% 50% 40% 40% / 50% 60% 30% 30%;
  filter: sepia(0.3) brightness(0.7);
  transform-origin: bottom center;
  box-shadow: 0 0 12px rgba(0,0,0,.6);
  animation: estma-miss 10s ease-in-out infinite alternate;
}
.scn-estella-marriage-announcement .knitting-needles {
  position: absolute; bottom: 40%; left: 45%; width: 30px; height: 6px;
  background: linear-gradient(90deg, #8a7a6a 0%, #5a4a3a 100%);
  border-radius: 20% 80% 80% 20% / 50% 50% 50% 50%;
  transform: rotate(20deg);
  box-shadow: 0 2px 4px rgba(0,0,0,.3);
  animation: estma-knit 1.5s ease-in-out infinite;
}
.scn-estella-marriage-announcement .candle-glow {
  position: absolute; top: 15%; left: 50%; width: 30px; height: 40px;
  background: radial-gradient(circle at 50% 20%, #f0c060 0%, #c09040 40%, transparent 80%);
  border-radius: 40% 40% 20% 20%;
  box-shadow: 0 0 40px 20px rgba(200,150,60,.4), 0 0 80px 40px rgba(200,150,60,.2);
  animation: estma-candle 3s ease-in-out infinite alternate;
}
.scn-estella-marriage-announcement .mirror-stand {
  position: absolute; bottom: 30%; right: 12%; width: 40px; height: 80px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a10 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 0 4px 8px rgba(0,0,0,.4);
  animation: estma-mirror 25s linear infinite;
}
@keyframes estma-wall {
  0% { opacity: 0.8; }
  50% { opacity: 1; }
  100% { opacity: 0.85; }
}
@keyframes estma-chaise {
  0% { transform: rotate(-2deg) translateY(0); }
  50% { transform: rotate(-2deg) translateY(-2px); }
  100% { transform: rotate(-2deg) translateY(0); }
}
@keyframes estma-estella {
  0% { transform: translateX(0) rotate(0deg); }
  30% { transform: translateX(3px) rotate(1deg); }
  60% { transform: translateX(-2px) rotate(-2deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes estma-miss {
  0% { transform: translateY(0) rotate(-1deg); opacity: 0.8; }
  50% { transform: translateY(-4px) rotate(1deg); opacity: 1; }
  100% { transform: translateY(0) rotate(-1deg); opacity: 0.8; }
}
@keyframes estma-knit {
  0% { transform: rotate(20deg) translateY(0); }
  50% { transform: rotate(25deg) translateY(-1px); }
  100% { transform: rotate(20deg) translateY(0); }
}
@keyframes estma-candle {
  0% { transform: scale(1); opacity: 0.8; box-shadow: 0 0 30px 15px rgba(200,150,60,.3); }
  50% { transform: scale(1.1); opacity: 1; box-shadow: 0 0 50px 25px rgba(200,150,60,.5); }
  100% { transform: scale(0.95); opacity: 0.7; box-shadow: 0 0 20px 10px rgba(200,150,60,.2); }
}
@keyframes estma-mirror {
  0% { opacity: 0.5; }
  50% { opacity: 0.8; }
  100% { opacity: 0.5; }
}

/* ---- scene: compeyson-watching ---- */
.scn-compeyson-watching {
  background:
    radial-gradient(ellipse 50% 70% at 50% 30%, #1a2a3a 0%, transparent 80%),
    linear-gradient(180deg, #0a0e14 0%, #1a1e2a 40%, #0e121a 100%);
}
.scn-compeyson-watching .night-city-sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #0a0e1a 0%, #1a2a3a 50%, #2a3a4a 100%);
  border-radius: 2px;
  opacity: 0.9;
  animation: compw-sky 30s ease-in-out infinite alternate;
}
.scn-compeyson-watching .window-frame {
  position: absolute; top: 10%; left: 30%; width: 120px; height: 100px;
  background: radial-gradient(ellipse at 50% 60%, #1a2a3a 0%, #0a0e14 100%);
  border: 8px solid #0e121a;
  border-radius: 6px;
  box-shadow: inset 0 0 30px rgba(0,0,0,.7), 0 0 0 4px #0a0a10;
  animation: compw-frame 20s ease-in-out infinite;
}
.scn-compeyson-watching .lamp-post-glow {
  position: absolute; bottom: 40%; left: 20%; width: 25px; height: 35px;
  background: radial-gradient(circle, #c0a060 0%, #806040 50%, transparent 80%);
  border-radius: 50% 50% 20% 20%;
  box-shadow: 0 0 60px 30px rgba(150,120,50,.3), 0 0 120px 60px rgba(150,120,50,.15);
  animation: compw-lamp 4s ease-in-out infinite alternate;
}
.scn-compeyson-watching .compeyson-silhouette {
  position: absolute; bottom: 30%; left: 35%; width: 55px; height: 130px;
  background: linear-gradient(180deg, #05080c 0%, #0a0e14 100%);
  border-radius: 40% 50% 40% 40% / 50% 60% 30% 30%;
  transform-origin: bottom center;
  filter: drop-shadow(0 0 8px rgba(0,0,0,.8));
  animation: compw-compeyson 12s ease-in-out infinite;
}
.scn-compeyson-watching .pip-figure-interior {
  position: absolute; bottom: 28%; left: 55%; width: 45px; height: 110px;
  background: linear-gradient(180deg, #1a1a22 0%, #0e0e16 100%);
  border-radius: 45% 50% 40% 40% / 50% 55% 30% 30%;
  transform-origin: bottom center;
  opacity: 0.7;
  animation: compw-pip 8s ease-in-out infinite alternate;
}
.scn-compeyson-watching .street-rail {
  position: absolute; bottom: 28%; left: 0; right: 0; height: 4px;
  background: linear-gradient(90deg, transparent 0%, #2a3a4a 20%, #3a4a5a 50%, #2a3a4a 80%, transparent 100%);
  filter: blur(1px);
  animation: compw-rail 10s linear infinite;
}
.scn-compeyson-watching .fog-layer {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse 60% 40% at 20% 50%, rgba(200,220,240,.08) 0%, transparent 70%);
  pointer-events: none;
  animation: compw-fog 15s ease-in-out infinite alternate;
}
@keyframes compw-sky {
  0% { opacity: 0.7; }
  50% { opacity: 1; }
  100% { opacity: 0.8; }
}
@keyframes compw-frame {
  0% { transform: scale(1); }
  50% { transform: scale(1.02); }
  100% { transform: scale(0.98); }
}
@keyframes compw-lamp {
  0% { transform: scale(1); opacity: 0.7; box-shadow: 0 0 40px 20px rgba(150,120,50,.2); }
  50% { transform: scale(1.05); opacity: 1; box-shadow: 0 0 80px 40px rgba(150,120,50,.4); }
  100% { transform: scale(0.98); opacity: 0.8; box-shadow: 0 0 30px 15px rgba(150,120,50,.25); }
}
@keyframes compw-compeyson {
  0% { transform: translateX(0) rotate(0deg); }
  25% { transform: translateX(2px) rotate(2deg); }
  50% { transform: translateX(-3px) rotate(-1deg); }
  75% { transform: translateX(1px) rotate(1deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes compw-pip {
  0% { transform: translateY(0) scaleY(1); opacity: 0.6; }
  50% { transform: translateY(-4px) scaleY(1.02); opacity: 0.9; }
  100% { transform: translateY(0) scaleY(1); opacity: 0.6; }
}
@keyframes compw-rail {
  0% { background-position: 0% 0%; }
  100% { background-position: 200% 0%; }
}
@keyframes compw-fog {
  0% { opacity: 0.2; transform: translateX(0); }
  50% { opacity: 0.5; transform: translateX(10px); }
  100% { opacity: 0.2; transform: translateX(-5px); }
}

.scn-garden-fight-pale-gentleman { background: linear-gradient(180deg, #7ec4e8 0%, #f0d080 100%), radial-gradient(ellipse at 50% 100%, #f0d080 0%, transparent 70%); }
.scn-garden-fight-pale-gentleman .sky { position:absolute; inset:0 0 60% 0; background: linear-gradient(180deg, #8ad0f0 0%, #f8e8a0 100%); animation: gfg-sky 10s ease-in-out infinite alternate; }
.scn-garden-fight-pale-gentleman .ground { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, #5a8a4a 0%, #3a6a2a 100%); }
.scn-garden-fight-pale-gentleman .hedge { position:absolute; bottom:30%; left:20%; width:60%; height:12%; background: #2a5a2a; border-radius: 20% 20% 0 0; animation: gfg-hedge 5s ease-in-out infinite alternate; }
.scn-garden-fight-pale-gentleman .figure-pip { position:absolute; bottom:30%; left:25%; width:20px; height:40px; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 50% 50% 30% 30%/60% 60% 30% 30%; animation: gfg-pip 2s ease-in-out infinite; }
.scn-garden-fight-pale-gentleman .figure-pale { position:absolute; bottom:30%; right:25%; width:24px; height:46px; background: linear-gradient(180deg, #4a4a5a 0%, #2a2a3a 100%); border-radius: 50% 50% 30% 30%/60% 60% 30% 30%; animation: gfg-pale 1.5s ease-in-out infinite; }
.scn-garden-fight-pale-gentleman .shadow-pip { position:absolute; bottom:25%; left:25%; width:30px; height:4px; background: rgba(0,0,0,0.3); border-radius: 50%; animation: gfg-shadow1 2s ease-in-out infinite; }
.scn-garden-fight-pale-gentleman .shadow-pale { position:absolute; bottom:25%; right:25%; width:34px; height:4px; background: rgba(0,0,0,0.3); border-radius: 50%; animation: gfg-shadow2 1.5s ease-in-out infinite; }
@keyframes gfg-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.7 } }
@keyframes gfg-hedge { 0% { transform: scaleX(1) } 50% { transform: scaleX(1.02) } 100% { transform: scaleX(0.98) } }
@keyframes gfg-pip { 0% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(-2px) rotate(2deg) } 100% { transform: translateY(0) rotate(-1deg) } }
@keyframes gfg-pale { 0% { transform: translateY(0) rotate(0deg) translateX(0) } 50% { transform: translateY(-3px) rotate(3deg) translateX(4px) } 100% { transform: translateY(0) rotate(-1deg) translateX(0) } }
@keyframes gfg-shadow1 { 0% { transform: scaleX(1) } 50% { transform: scaleX(0.9) } 100% { transform: scaleX(1) } }
@keyframes gfg-shadow2 { 0% { transform: scaleX(1) } 50% { transform: scaleX(1.1) } 100% { transform: scaleX(1) } }

.scn-item-wedding-cake { background: linear-gradient(135deg, #1a0a0a 0%, #2a1a1a 100%), radial-gradient(circle at center, #3a2a2a 0%, transparent 70%); }
.scn-item-wedding-cake .table { position:absolute; bottom:0; left:10%; width:80%; height:15%; background: linear-gradient(180deg, #5a3a2a 0%, #3a2a1a 100%); border-radius: 10% 10% 0 0; }
.scn-item-wedding-cake .cake-base { position:absolute; bottom:15%; left:35%; width:30%; height:20%; background: linear-gradient(180deg, #f0e0c0 0%, #c8a880 100%); border-radius: 10% 10% 5% 5%; }
.scn-item-wedding-cake .cake-tier1 { position:absolute; bottom:35%; left:38%; width:24%; height:15%; background: linear-gradient(180deg, #f0e0c0 0%, #b8a070 100%); border-radius: 10% 10% 5% 5%; }
.scn-item-wedding-cake .cake-tier2 { position:absolute; bottom:50%; left:42%; width:16%; height:12%; background: linear-gradient(180deg, #f0e0c0 0%, #a89060 100%); border-radius: 10% 10% 5% 5%; }
.scn-item-wedding-cake .icing-drip { position:absolute; bottom:50%; left:42%; width:16%; height:12%; background: radial-gradient(ellipse at 50% 0%, #f0e0c0 0%, transparent 70%); animation: wck-drip 5s ease-in-out infinite; }
.scn-item-wedding-cake .cobweb1 { position:absolute; top:30%; left:30%; width:40%; height:40%; border: 1px solid rgba(180,180,180,0.3); border-radius: 50%; animation: wck-cobweb 20s linear infinite; }
.scn-item-wedding-cake .cobweb2 { position:absolute; top:45%; left:45%; width:30%; height:30%; border: 1px solid rgba(180,180,180,0.2); border-radius: 50%; animation: wck-cobweb2 25s linear infinite; }
.scn-item-wedding-cake .candle { position:absolute; bottom:58%; left:48%; width:4px; height:20px; background: linear-gradient(180deg, #f0e0c0 0%, #c8a070 100%); border-radius: 2px; }
.scn-item-wedding-cake .flame { position:absolute; bottom:78%; left:48.2%; width:6px; height:8px; background: radial-gradient(circle, #ffd080 0%, #ffa040 70%, transparent 100%); border-radius: 50%; animation: wck-flame 0.8s ease-in-out infinite alternate; }
@keyframes wck-drip { 0% { opacity:0.5; transform: scaleY(1); } 50% { opacity:0.8; transform: scaleY(1.2); } 100% { opacity:0.5; transform: scaleY(0.9); } }
@keyframes wck-cobweb { 0% { transform: rotate(0deg) scale(1); } 50% { transform: rotate(180deg) scale(1.05); } 100% { transform: rotate(360deg) scale(1); } }
@keyframes wck-cobweb2 { 0% { transform: rotate(30deg) scale(1); } 50% { transform: rotate(210deg) scale(0.95); } 100% { transform: rotate(390deg) scale(1); } }
@keyframes wck-flame { 0% { opacity:0.8; transform: scale(1) translateY(0); } 50% { opacity:1; transform: scale(1.1) translateY(-2px); } 100% { opacity:0.9; transform: scale(0.9) translateY(0); } }

.scn-apprenticeship-arranged { background: linear-gradient(180deg, #1a0a0a 0%, #0a0505 100%), radial-gradient(ellipse at 50% 60%, #2a1a1a 0%, transparent 70%); }
.scn-apprenticeship-arranged .wall { position:absolute; inset:0; background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%); animation: app-wall 10s ease-in-out infinite alternate; }
.scn-apprenticeship-arranged .fireplace { position:absolute; bottom:10%; left:30%; width:40%; height:40%; background: linear-gradient(180deg, #3a2a2a 0%, #1a0a0a 100%); border-radius: 20% 20% 10% 10%; box-shadow: inset 0 -10px 20px rgba(200,100,50,0.3); }
.scn-apprenticeship-arranged .miss-havisham { position:absolute; bottom:30%; left:35%; width:30px; height:50px; background: linear-gradient(180deg, #f0e0d0 0%, #c8b8a8 100%); border-radius: 50% 50% 40% 40%/60% 60% 40% 40%; animation: app-miss 4s ease-in-out infinite; }
.scn-apprenticeship-arranged .estella { position:absolute; bottom:30%; left:55%; width:24px; height:44px; background: linear-gradient(180deg, #4a5a6a 0%, #2a3a4a 100%); border-radius: 50% 50% 40% 40%/60% 60% 40% 40%; animation: app-estella 3s ease-in-out infinite; }
.scn-apprenticeship-arranged .pip { position:absolute; bottom:20%; left:20%; width:18px; height:34px; background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%); border-radius: 50% 50% 40% 40%/60% 60% 40% 40%; animation: app-pip 2s ease-in-out infinite; }
.scn-apprenticeship-arranged .scroll { position:absolute; bottom:50%; left:45%; width:40px; height:10px; background: linear-gradient(180deg, #c8a070 0%, #a08050 100%); border-radius: 5px; transform: rotate(-10deg); animation: app-scroll 6s ease-in-out infinite alternate; }
.scn-apprenticeship-arranged .shadow { position:absolute; bottom:15%; left:20%; width:60%; height:10px; background: rgba(0,0,0,0.5); border-radius: 50%; filter: blur(4px); }
@keyframes app-wall { 0% { opacity:0.9 } 50% { opacity:1 } 100% { opacity:0.8 } }
@keyframes app-miss { 0% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(-3px) rotate(1deg) } 100% { transform: translateY(0) rotate(-1deg) } }
@keyframes app-estella { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes app-pip { 0% { transform: translateY(0) rotate(0) } 50% { transform: translateY(-1px) rotate(2deg) } 100% { transform: translateY(0) rotate(-1deg) } }
@keyframes app-scroll { 0% { transform: rotate(-10deg) scaleX(1) } 50% { transform: rotate(-5deg) scaleX(1.05) } 100% { transform: rotate(-15deg) scaleX(0.95) } }

.scn-biddy-orlick-household { background: linear-gradient(180deg, #1a0a0a 0%, #2a1a1a 100%), radial-gradient(ellipse at 50% 80%, #3a2a2a 0%, transparent 70%); }
.scn-biddy-orlick-household .wall { position:absolute; inset:0; background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%); }
.scn-biddy-orlick-household .hearth { position:absolute; bottom:0; left:20%; width:60%; height:30%; background: linear-gradient(180deg, #4a2a1a 0%, #2a1a0a 100%); border-radius: 20% 20% 0 0; box-shadow: inset 0 -10px 20px rgba(200,100,50,0.4); animation: boh-hearth 8s ease-in-out infinite alternate; }
.scn-biddy-orlick-household .table { position:absolute; bottom:25%; left:25%; width:50%; height:10%; background: linear-gradient(180deg, #5a3a2a 0%, #3a2a1a 100%); border-radius: 5%; }
.scn-biddy-orlick-household .biddy { position:absolute; bottom:35%; left:35%; width:22px; height:40px; background: linear-gradient(180deg, #5a6a5a 0%, #3a4a3a 100%); border-radius: 50% 50% 40% 40%/60% 60% 40% 40%; animation: boh-biddy 4s ease-in-out infinite; }
.scn-biddy-orlick-household .pip { position:absolute; bottom:30%; left:20%; width:18px; height:34px; background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%); border-radius: 50% 50% 40% 40%/60% 60% 40% 40%; animation: boh-pip 3s ease-in-out infinite; }
.scn-biddy-orlick-household .joe { position:absolute; bottom:35%; left:55%; width:26px; height:42px; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 50% 50% 40% 40%/60% 60% 40% 40%; animation: boh-joe 5s ease-in-out infinite; }
.scn-biddy-orlick-household .bed { position:absolute; bottom:5%; left:5%; width:30%; height:20%; background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%); border-radius: 10%; }
.scn-biddy-orlick-household .lamp { position:absolute; bottom:60%; left:10%; width:8px; height:16px; background: linear-gradient(180deg, #c8a070 0%, #a08050 100%); border-radius: 50% 50% 20% 20%; }
.scn-biddy-orlick-household .glow { position:absolute; bottom:60%; left:10%; width:30px; height:30px; background: radial-gradient(circle, rgba(255,200,100,0.2) 0%, transparent 100%); border-radius: 50%; animation: boh-glow 3s ease-in-out infinite alternate; }
@keyframes boh-hearth { 0% { opacity:0.8; transform: scaleY(1); } 50% { opacity:1; transform: scaleY(1.02); } 100% { opacity:0.9; transform: scaleY(0.98); } }
@keyframes boh-biddy { 0% { transform: translateY(0) rotate(0) } 50% { transform: translateY(-2px) rotate(2deg) } 100% { transform: translateY(0) rotate(-1deg) } }
@keyframes boh-pip { 0% { transform: translateY(0) } 50% { transform: translateY(-1px) } 100% { transform: translateY(0) } }
@keyframes boh-joe { 0% { transform: translateY(0) rotate(0) } 50% { transform: translateY(-2px) rotate(-1deg) } 100% { transform: translateY(0) rotate(0) } }
@keyframes boh-glow { 0% { opacity:0.5; transform: scale(1); } 50% { opacity:0.8; transform: scale(1.1); } 100% { opacity:0.6; transform: scale(0.9); } }
/* end per-scene blocks */
