/* style.css -- merged from per-tier scene CSS by wizard2.stages.build_deploy */
/* Scene root must fill its positioning container. */
.scn { position: absolute; inset: 0; }

/* ============ tier U ============ */
/* per-scene blocks (EXP step_scenes) */
.scn-westminster-abbey-funeral {
  background:
    linear-gradient(180deg, #1a1818 0%, #2c2828 30%, #1e1c1c 100%),
    radial-gradient(ellipse at 50% 0%, #2a2525 0%, #0f0e0e 70%);
}
.scn-westminster-abbey-funeral .abbey-wall {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(90deg, #2a2626 0%, #3a3535 20%, #2a2626 40%, #1f1c1c 100%);
  opacity: 0.9;
  animation: wf-wall 12s ease-in-out infinite alternate;
}
.scn-westminster-abbey-funeral .abbey-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 28%;
  background: linear-gradient(180deg, #1a1818 0%, #0f0e0e 100%);
  box-shadow: inset 0 8px 15px rgba(0,0,0,0.6);
}
.scn-westminster-abbey-funeral .catafalque {
  position: absolute; bottom: 22%; left: 50%; width: 120px; height: 50px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #4a3a3a 0%, #2a1a1a 100%);
  border-radius: 8px 8px 4px 4px;
  box-shadow: 0 6px 20px rgba(0,0,0,0.7), inset 0 2px 4px rgba(80,60,60,0.3);
  animation: wf-catafalque 8s ease-in-out infinite;
}
.scn-westminster-abbey-funeral .mourner.left {
  position: absolute; bottom: 28%; left: 20%; 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: wf-mourner-left 6s ease-in-out infinite;
}
.scn-westminster-abbey-funeral .mourner.right {
  position: absolute; bottom: 28%; right: 20%; 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: wf-mourner-right 6s ease-in-out infinite alternate;
}
.scn-westminster-abbey-funeral .candle.left {
  position: absolute; bottom: 35%; left: 35%; width: 6px; height: 20px;
  background: linear-gradient(180deg, #8a7a6a 0%, #4a3a2a 100%);
  border-radius: 2px 2px 1px 1px;
  box-shadow: 0 0 10px 3px #d4a050;
  animation: wf-candle-flicker 2s ease-in-out infinite;
}
.scn-westminster-abbey-funeral .candle.right {
  position: absolute; bottom: 35%; right: 35%; width: 6px; height: 20px;
  background: linear-gradient(180deg, #8a7a6a 0%, #4a3a2a 100%);
  border-radius: 2px 2px 1px 1px;
  box-shadow: 0 0 10px 3px #d4a050;
  animation: wf-candle-flicker 2.3s ease-in-out infinite reverse;
}
.scn-westminster-abbey-funeral .stained-glass {
  position: absolute; top: 5%; left: 35%; right: 35%; height: 30%;
  background:
    radial-gradient(circle at 30% 40%, rgba(100,60,140,0.4) 0%, transparent 60%),
    radial-gradient(circle at 70% 60%, rgba(60,100,140,0.3) 0%, transparent 50%);
  border-radius: 20% / 10%;
  filter: blur(3px);
  opacity: 0.6;
  animation: wf-glass 15s ease-in-out infinite alternate;
}
@keyframes wf-wall {
  0% { opacity: 0.85; }
  50% { opacity: 0.95; }
  100% { opacity: 0.8; }
}
@keyframes wf-catafalque {
  0%, 100% { transform: translateX(-50%) translateY(0); }
  50% { transform: translateX(-50%) translateY(-1px); }
}
@keyframes wf-mourner-left {
  0% { transform: translateX(0) translateY(0) rotate(-2deg); }
  25% { transform: translateX(2px) translateY(-1px) rotate(1deg); }
  50% { transform: translateX(0) translateY(0) rotate(-1deg); }
  75% { transform: translateX(-2px) translateY(-1px) rotate(2deg); }
  100% { transform: translateX(0) translateY(0) rotate(-2deg); }
}
@keyframes wf-mourner-right {
  0% { transform: translateX(0) translateY(0) rotate(2deg); }
  25% { transform: translateX(-2px) translateY(-1px) rotate(-1deg); }
  50% { transform: translateX(0) translateY(0) rotate(1deg); }
  75% { transform: translateX(2px) translateY(-1px) rotate(-2deg); }
  100% { transform: translateX(0) translateY(0) rotate(2deg); }
}
@keyframes wf-candle-flicker {
  0% { transform: translateY(0) scaleY(1); opacity: 0.9; box-shadow: 0 0 8px 2px #d4a050; }
  25% { transform: translateY(-1px) scaleY(1.05); opacity: 1; box-shadow: 0 0 14px 4px #e8b860; }
  50% { transform: translateY(0) scaleY(0.98); opacity: 0.85; box-shadow: 0 0 10px 3px #c09040; }
  75% { transform: translateY(-1px) scaleY(1.02); opacity: 0.95; box-shadow: 0 0 12px 4px #d4a050; }
  100% { transform: translateY(0) scaleY(1); opacity: 0.9; box-shadow: 0 0 8px 2px #d4a050; }
}
@keyframes wf-glass {
  0% { opacity: 0.5; filter: blur(4px); }
  50% { opacity: 0.7; filter: blur(2px); }
  100% { opacity: 0.55; filter: blur(4px); }
}

/* Scene: accusations-sorcery  (dim interior, tense) */

.scn-london-suffolk-soliloquy { background: linear-gradient(180deg, #f5e6d0 0%, #d4b896 60%, #a68364 100%), radial-gradient(ellipse at 30% 30%, rgba(255,240,200,0.8) 0%, transparent 60%); }
.scn-london-suffolk-soliloquy .bg-deep    { position:absolute; inset:0; background: linear-gradient(90deg, rgba(0,0,0,0.1) 0%, transparent 50%, rgba(0,0,0,0.15) 100%); animation: lsu-wall 20s ease-in-out infinite alternate; }
.scn-london-suffolk-soliloquy .floor      { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #b09070 0%, #7a5c40 100%); border-radius: 10% 10% 0 0 / 20% 20% 0 0; box-shadow: inset 0 10px 20px rgba(0,0,0,0.3); animation: lsu-floor 15s ease-in-out infinite alternate; }
.scn-london-suffolk-soliloquy .window     { position:absolute; top:10%; left:15%; width:30%; height:50%; background: radial-gradient(ellipse at center, #fff8e0 0%, #f0e0b0 70%, transparent 100%); border-radius: 5% / 10%; box-shadow: 0 0 30px 10px rgba(255,240,200,0.5); animation: lsu-window 6s ease-in-out infinite alternate; }
.scn-london-suffolk-soliloquy .figure     { position:absolute; bottom:25%; left:40%; width:20px; height:50px; background: linear-gradient(180deg, #2a2a30 0%, #1a1a20 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; box-shadow: 0 4px 8px rgba(0,0,0,0.4); animation: lsu-figure 4s ease-in-out infinite alternate; }
.scn-london-suffolk-soliloquy .column     { position:absolute; bottom:20%; left:65%; width:15px; height:60%; background: linear-gradient(90deg, #c8b090, #a08060, #c8b090); border-radius: 20% / 5%; box-shadow: 2px 0 5px rgba(0,0,0,0.2); animation: lsu-column 12s ease-in-out infinite alternate; }
.scn-london-suffolk-soliloquy .drapery    { position:absolute; top:0; right:10%; width:40%; height:90%; background: radial-gradient(ellipse at top, #b85a3a 0%, #8a3a2a 70%, transparent 100%); border-radius: 20% 20% 50% 50% / 10% 10% 30% 30%; clip-path: polygon(20% 0%, 80% 0%, 100% 100%, 0% 100%); filter: blur(2px); opacity:0.7; animation: lsu-drape 8s ease-in-out infinite alternate; }
.scn-london-suffolk-soliloquy .light-ray  { position:absolute; top:10%; left:15%; width:20%; height:100%; background: linear-gradient(180deg, rgba(255,255,230,0.3) 0%, rgba(255,240,200,0) 100%); clip-path: polygon(0% 0%, 100% 0%, 70% 100%, 30% 100%); animation: lsu-ray 6s ease-in-out infinite alternate; }
@keyframes lsu-wall   { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.85 } }
@keyframes lsu-floor  { 0% { transform: scaleY(1) } 50% { transform: scaleY(0.98) } 100% { transform: scaleY(1) } }
@keyframes lsu-window { 0% { opacity:0.7; transform: scale(0.95) } 50% { opacity:1; transform: scale(1.02) } 100% { opacity:0.8; transform: scale(0.98) } }
@keyframes lsu-figure { 0% { transform: translateY(0) rotate(-2deg) } 50% { transform: translateY(-3px) rotate(1deg) } 100% { transform: translateY(0) rotate(-2deg) } }
@keyframes lsu-column { 0% { transform: scaleY(1); opacity:0.9 } 50% { transform: scaleY(1.01); opacity:1 } 100% { transform: scaleY(1); opacity:0.9 } }
@keyframes lsu-drape  { 0% { transform: translateX(0) rotate(-1deg) } 50% { transform: translateX(4px) rotate(2deg) } 100% { transform: translateX(0) rotate(-1deg) } }
@keyframes lsu-ray    { 0% { opacity:0.3; transform: scaleX(1) } 50% { opacity:0.6; transform: scaleX(1.1) } 100% { opacity:0.4; transform: scaleX(0.95) } }

.scn-camp-escape-plea {
  background: linear-gradient(180deg, #f4d9a0 0%, #d4a76a 40%, #a67c4e 70%, #6b4a2a 100%),
              radial-gradient(ellipse at 60% 20%, #fff3c4 0%, transparent 60%);
}
.scn-camp-escape-plea .sky { position:absolute; inset:0 0 55% 0; background: linear-gradient(180deg, #ffe8b0 0%, #f0c878 100%); animation: sc1-sky 10s ease-in-out infinite alternate; }
.scn-camp-escape-plea .ground { position:absolute; bottom:0; left:0; right:0; height:55%; background: linear-gradient(180deg, #a67c4e 0%, #6b4a2a 50%, #3d2a14 100%); border-radius: 0 0 30% 20% / 0 0 40% 30%; }
.scn-camp-escape-plea .path { position:absolute; bottom:35%; left:10%; width:80%; height:8%; background: linear-gradient(90deg, #c8a060 0%, #b08040 50%, #906828 100%); clip-path: polygon(0 0, 100% 30%, 100% 70%, 0 100%); animation: sc1-path 6s ease-in-out infinite alternate; }
.scn-camp-escape-plea .father-figure { position:absolute; bottom:42%; left:25%; width:28px; height:50px; background: linear-gradient(180deg, #2a1a0a 0%, #1a0e05 100%); border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: sc1-father 2s ease-in-out infinite; }
.scn-camp-escape-plea .son-figure { position:absolute; bottom:42%; left:45%; width:24px; height:45px; background: linear-gradient(180deg, #3d2a14 0%, #2a1a0a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: sc1-son 3s ease-in-out infinite; }
.scn-camp-escape-plea .horse { position:absolute; bottom:33%; right:15%; width:50px; height:35px; background: linear-gradient(180deg, #6b4a2a 0%, #4a3018 100%); border-radius: 30% 40% 20% 20% / 50% 60% 20% 20%; animation: sc1-horse 4s ease-in-out infinite; }
.scn-camp-escape-plea .dust { position:absolute; bottom:30%; left:40%; width:20px; height:10px; background: rgba(200,160,96,0.6); border-radius: 50%; filter: blur(4px); animation: sc1-dust 2s ease-in-out infinite; }
.scn-camp-escape-plea .sun-glare { position:absolute; top:5%; right:10%; width:40px; height:40px; background: radial-gradient(circle, #fff3c4 0%, #f0d080 40%, transparent 70%); border-radius: 50%; animation: sc1-glare 5s ease-in-out infinite alternate; }
@keyframes sc1-sky { 0% { opacity:0.9 } 50% { opacity:1 } 100% { opacity:0.8 } }
@keyframes sc1-path { 0% { transform: scaleY(1) } 50% { transform: scaleY(0.95) } 100% { transform: scaleY(1) } }
@keyframes sc1-father { 0% { transform: translateX(0) rotate(-2deg) } 50% { transform: translateX(3px) rotate(0deg) } 100% { transform: translateX(0) rotate(-2deg) } }
@keyframes sc1-son { 0% { transform: translateX(0) rotate(2deg) } 50% { transform: translateX(-2px) rotate(0deg) } 100% { transform: translateX(0) rotate(2deg) } }
@keyframes sc1-horse { 0% { transform: translateX(0) rotate(0) } 50% { transform: translateX(4px) rotate(-1deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes sc1-dust { 0% { opacity:0.6; transform: translateY(0) scale(1) } 50% { opacity:0.2; transform: translateY(-8px) scale(1.5) } 100% { opacity:0.6; transform: translateY(0) scale(1) } }
@keyframes sc1-glare { 0% { opacity:0.8; transform: scale(1) } 50% { opacity:1; transform: scale(1.1) } 100% { opacity:0.8; transform: scale(1) } }

/* ---- scene 2 ---- */
.scn-camp-john-heroism {
  background: linear-gradient(180deg, #f0d080 0%, #d4a76a 30%, #a67c4e 60%, #6b4a2a 100%),
              radial-gradient(ellipse at 70% 30%, #ffe8b0 0%, transparent 50%);
}
.scn-camp-john-heroism .sky { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #ffe8b0 0%, #f0c878 100%); animation: sc2-sky 12s ease-in-out infinite alternate; }
.scn-camp-john-heroism .ground { position:absolute; bottom:0; left:0; right:0; height:55%; background: linear-gradient(180deg, #c8a060 0%, #906828 50%, #5a3a1a 100%); border-radius: 0 0 40% 20% / 0 0 50% 30%; }
.scn-camp-john-heroism .banner { position:absolute; bottom:55%; left:35%; width:40px; height:60px; background: linear-gradient(180deg, #b87878 0%, #8a5858 100%); clip-path: polygon(0 0, 100% 0, 70% 50%, 100% 100%, 0 100%); animation: sc2-banner 3s ease-in-out infinite alternate; }
.scn-camp-john-heroism .john-figure { position:absolute; bottom:35%; left:50%; width:30px; height:55px; margin-left:-15px; background: linear-gradient(180deg, #3d2a14 0%, #1a0e05 100%); border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: sc2-john 2.5s ease-in-out infinite; }
.scn-camp-john-heroism .shield { position:absolute; bottom:40%; left:50%; width:22px; height:26px; margin-left:-28px; background: linear-gradient(180deg, #a0461a 0%, #6b2a08 100%); border-radius: 20% 20% 10% 10%; box-shadow: 2px 2px 0 rgba(0,0,0,0.5); animation: sc2-shield 1.8s ease-in-out infinite alternate; }
.scn-camp-john-heroism .spear { position:absolute; bottom:50%; left:50%; width:4px; height:80px; background: linear-gradient(180deg, #5a3a1a 0%, #2a1a0a 100%); border-radius: 2px; transform-origin: bottom center; animation: sc2-spear 3s ease-in-out infinite; }
.scn-camp-john-heroism .shadow-cast { position:absolute; bottom:35%; left:40%; width:40px; height:10px; background: rgba(0,0,0,0.3); border-radius: 50%; filter: blur(3px); animation: sc2-shadow 4s ease-in-out infinite alternate; }
@keyframes sc2-sky { 0% { opacity:0.85 } 50% { opacity:1 } 100% { opacity:0.8 } }
@keyframes sc2-banner { 0% { transform: rotate(-3deg) } 50% { transform: rotate(3deg) } 100% { transform: rotate(-3deg) } }
@keyframes sc2-john { 0% { transform: translateY(0) rotate(0) } 50% { transform: translateY(-3px) rotate(1deg) } 100% { transform: translateY(0) rotate(0) } }
@keyframes sc2-shield { 0% { transform: translateX(0) } 50% { transform: translateX(3px) } 100% { transform: translateX(0) } }
@keyframes sc2-spear { 0% { transform: rotate(-5deg) } 50% { transform: rotate(5deg) } 100% { transform: rotate(-5deg) } }
@keyframes sc2-shadow { 0% { opacity:0.3; transform: scale(1) } 50% { opacity:0.5; transform: scale(1.1) } 100% { opacity:0.3; transform: scale(1) } }

/* ---- scene 3 ---- */
.scn-camp-flight-shame {
  background: linear-gradient(180deg, #f4d9a0 0%, #c8a060 40%, #906828 70%, #5a3a1a 100%),
              radial-gradient(ellipse at 30% 50%, #ffe8b0 0%, transparent 60%);
}
.scn-camp-flight-shame .sky { position:absolute; inset:0 0 45% 0; background: linear-gradient(180deg, #ffe8b0 0%, #f0c878 100%); animation: sc3-sky 14s ease-in-out infinite alternate; }
.scn-camp-flight-shame .ground { position:absolute; bottom:0; left:0; right:0; height:60%; background: linear-gradient(180deg, #a67c4e 0%, #6b4a2a 40%, #3d2a14 100%); border-radius: 0 0 50% 30% / 0 0 60% 40%; }
.scn-camp-flight-shame .son-figure { position:absolute; bottom:40%; left:30%; width:26px; height:48px; background: linear-gradient(180deg, #3d2a14 0%, #1a0e05 100%); border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: sc3-son 3s ease-in-out infinite; }
.scn-camp-flight-shame .shadow-self { position:absolute; bottom:35%; left:20%; width:30px; height:40px; background: rgba(0,0,0,0.25); border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%; filter: blur(5px); animation: sc3-shadow 4s ease-in-out infinite alternate; }
.scn-camp-flight-shame .path-away { position:absolute; bottom:30%; right:10%; width:60%; height:6%; background: linear-gradient(90deg, #c8a060 0%, #b08040 50%, #906828 100%); clip-path: polygon(0 0, 100% 20%, 100% 80%, 0 100%); animation: sc3-path 8s ease-in-out infinite alternate; }
.scn-camp-flight-shame .clouds-shame { position:absolute; top:15%; right:5%; width:80px; height:16px; background: rgba(255,232,176,0.3); filter: blur(8px); border-radius: 50%; animation: sc3-clouds 20s linear infinite; }
@keyframes sc3-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.7 } }
@keyframes sc3-son { 0% { transform: translateX(0) rotate(0) } 25% { transform: translateX(2px) rotate(2deg) } 50% { transform: translateX(0) rotate(0) } 75% { transform: translateX(-2px) rotate(-2deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes sc3-shadow { 0% { opacity:0.2; transform: translateX(0) scale(1) } 50% { opacity:0.4; transform: translateX(3px) scale(1.05) } 100% { opacity:0.2; transform: translateX(0) scale(1) } }
@keyframes sc3-path { 0% { transform: scaleX(1) } 50% { transform: scaleX(0.95) } 100% { transform: scaleX(1) } }
@keyframes sc3-clouds { 0% { transform: translateX(0) } 100% { transform: translateX(-100vw) } }

/* ---- scene 4 ---- */
.scn-camp-mortality-kneel {
  background: linear-gradient(180deg, #f4d9a0 0%, #d4a76a 30%, #b08040 60%, #7a5a30 100%),
              radial-gradient(ellipse at 80% 30%, #fff3c4 0%, transparent 60%);
}
.scn-camp-mortality-kneel .sky { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #ffe8b0 0%, #f0c878 100%); animation: sc4-sky 15s ease-in-out infinite alternate; }
.scn-camp-mortality-kneel .ground { position:absolute; bottom:0; left:0; right:0; height:55%; background: linear-gradient(180deg, #c8a060 0%, #906828 40%, #5a3a1a 100%); border-radius: 0 0 30% 40% / 0 0 40% 50%; }
.scn-camp-mortality-kneel .kneeling-son { position:absolute; bottom:30%; left:55%; width:22px; height:40px; background: linear-gradient(180deg, #3d2a14 0%, #1a0e05 100%); border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: sc4-kneel 3s ease-in-out infinite; }
.scn-camp-mortality-kneel .father-hand { position:absolute; bottom:42%; left:45%; width:16px; height:20px; background: linear-gradient(180deg, #4a3018 0%, #2a1a0a 100%); border-radius: 30% 30% 20% 20% / 40% 40% 20% 20%; transform-origin: bottom center; animation: sc4-hand 2s ease-in-out infinite alternate; }
.scn-camp-mortality-kneel .sword { position:absolute; bottom:50%; left:30%; width:4px; height:60px; background: linear-gradient(180deg, #8a6a3a 0%, #5a3a1a 100%); border-radius: 2px; transform-origin: bottom center; animation: sc4-sword 4s ease-in-out infinite; }
.scn-camp-mortality-kneel .dust { position:absolute; bottom:25%; left:50%; width:15px; height:8px; background: rgba(200,160,96,0.5); border-radius: 50%; filter: blur(3px); animation: sc4-dust 2s ease-in-out infinite; }
.scn-camp-mortality-kneel .light-rays { position:absolute; top:5%; left:20%; width:30px; height:50px; background: linear-gradient(135deg, rgba(255,243,196,0.6) 0%, transparent 100%); clip-path: polygon(0 0, 100% 0, 50% 100%); animation: sc4-rays 5s ease-in-out infinite alternate; }
@keyframes sc4-sky { 0% { opacity:0.85 } 50% { opacity:1 } 100% { opacity:0.75 } }
@keyframes sc4-kneel { 0% { transform: translateY(0) rotate(0) } 50% { transform: translateY(-2px) rotate(2deg) } 100% { transform: translateY(0) rotate(0) } }
@keyframes sc4-hand { 0% { transform: translateY(0) rotate(0) } 50% { transform: translateY(-3px) rotate(5deg) } 100% { transform: translateY(0) rotate(0) } }
@keyframes sc4-sword { 0% { transform: rotate(-4deg) } 50% { transform: rotate(4deg) } 100% { transform: rotate(-4deg) } }
@keyframes sc4-dust { 0% { opacity:0.5; transform: translateY(0) scale(1) } 50% { opacity:0.2; transform: translateY(-6px) scale(1.3) } 100% { opacity:0.5; transform: translateY(0) scale(1) } }
@keyframes sc4-rays { 0% { opacity:0.3; transform: scale(1) } 50% { opacity:0.7; transform: scale(1.1) } 100% { opacity:0.3; transform: scale(1) } }

/* countess-feasts-talbot */
.scn-countess-feasts-talbot {
  background: linear-gradient(180deg, #6a3a2a 0%, #4a2a1a 40%, #2a1a0a 100%),
              radial-gradient(ellipse at 50% 20%, #a06030 0%, transparent 60%);
}
.scn-countess-feasts-talbot .wall {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #8a5a3a 0%, #5a3a2a 100%);
  animation: cft-wall 12s ease-in-out infinite alternate;
}
.scn-countess-feasts-talbot .table {
  position: absolute; bottom: 20%; left: 10%; right: 10%; height: 18%;
  background: linear-gradient(180deg, #7a4a2a 0%, #4a2a1a 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: 0 -4px 12px rgba(0,0,0,0.6);
}
.scn-countess-feasts-talbot .goblet {
  position: absolute; bottom: 30%; width: 16px; height: 24px;
  background: linear-gradient(180deg, #b08040 0%, #8a6028 60%, #5a3a18 100%);
  border-radius: 10% 10% 20% 20% / 30% 30% 20% 20%;
  box-shadow: 0 2px 6px rgba(0,0,0,0.5);
}
.scn-countess-feasts-talbot .goblet-1 { left: 30%; animation: cft-goblet 6s ease-in-out infinite; }
.scn-countess-feasts-talbot .goblet-2 { right: 30%; animation: cft-goblet 6s ease-in-out infinite 1.5s; }
.scn-countess-feasts-talbot .candle {
  position: absolute; bottom: 32%; left: 50%; transform: translateX(-50%);
  width: 8px; height: 32px;
  background: linear-gradient(180deg, #f0e0c0 0%, #c0a080 50%, #8a6a4a 100%);
  border-radius: 20% 20% 10% 10%;
  animation: cft-candle 4s ease-in-out infinite alternate;
}
.scn-countess-feasts-talbot .flame {
  position: absolute; bottom: 62%; left: 50%; transform: translateX(-50%);
  width: 12px; height: 16px;
  background: radial-gradient(circle, #ffd080 0%, #c06020 70%, transparent 100%);
  border-radius: 50% 50% 20% 20% / 60% 60% 40% 40%;
  box-shadow: 0 0 24px 8px #c06020, 0 0 48px 16px rgba(192,96,32,0.3);
  animation: cft-flame 1.2s ease-in-out infinite alternate;
}
.scn-countess-feasts-talbot .steam {
  position: absolute; bottom: 36%; left: 44%; width: 20px; height: 24px;
  background: radial-gradient(circle, rgba(255,240,220,0.4) 0%, transparent 70%);
  filter: blur(4px);
  animation: cft-steam 5s ease-out infinite;
}
.scn-countess-feasts-talbot .figure {
  position: absolute; bottom: 20%; left: 20%; 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: cft-figure 8s ease-in-out infinite;
}
@keyframes cft-wall { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.85 } }
@keyframes cft-goblet { 0%,100% { transform: rotate(0deg) } 50% { transform: rotate(-3deg) translateY(-1px) } }
@keyframes cft-candle { 0% { transform: translateX(-50%) scaleY(1) } 50% { transform: translateX(-50%) scaleY(1.02) } 100% { transform: translateX(-50%) scaleY(0.98) } }
@keyframes cft-flame { 0% { transform: translateX(-50%) scale(0.9) rotate(-5deg) } 50% { transform: translateX(-50%) scale(1.1) rotate(5deg) } 100% { transform: translateX(-50%) scale(0.95) rotate(0deg) } }
@keyframes cft-steam { 0% { transform: translateY(0) scale(1); opacity:0.6 } 50% { transform: translateY(-30px) scale(1.5); opacity:0.2 } 100% { transform: translateY(-60px) scale(2); opacity:0 } }
@keyframes cft-figure { 0% { transform: translateX(0) rotate(0deg) } 25% { transform: translateX(4px) rotate(2deg) } 50% { transform: translateX(0) rotate(0deg) } 75% { transform: translateX(-4px) rotate(-2deg) } 100% { transform: translateX(0) rotate(0deg) } }

/* plantagenet-challenges */
.scn-plantagenet-challenges {
  background: linear-gradient(180deg, #87ceeb 0%, #5b9bd5 50%, #3a7bb5 100%),
              radial-gradient(ellipse at 50% 100%, #8fb5d5 0%, transparent 60%);
}
.scn-plantagenet-challenges .sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #b0d8f0 0%, #7bb5d5 100%);
  animation: pc-sky 15s ease-in-out infinite alternate;
}
.scn-plantagenet-challenges .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #6a8a4a 0%, #3a5a2a 100%);
  border-radius: 30% 70% 0 0 / 20% 40% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.3);
}
.scn-plantagenet-challenges .figure-left,
.scn-plantagenet-challenges .figure-right {
  position: absolute; bottom: 25%; width: 22px; height: 55px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
}
.scn-plantagenet-challenges .figure-left { left: 30%; animation: pc-figure-left 4s ease-in-out infinite; }
.scn-plantagenet-challenges .figure-right { right: 30%; animation: pc-figure-right 4s ease-in-out infinite 0.5s; }
.scn-plantagenet-challenges .rose {
  position: absolute; bottom: 32%; left: 50%; transform: translateX(-50%);
  width: 12px; height: 12px;
  background: radial-gradient(circle, #b87878 0%, #8a5a5a 70%);
  border-radius: 50%;
  box-shadow: 0 0 10px 3px rgba(184,120,120,0.5);
  animation: pc-rose 6s ease-in-out infinite;
}
.scn-plantagenet-challenges .rose-shadow {
  position: absolute; bottom: 30%; left: 48%; width: 20px; height: 6px;
  background: radial-gradient(ellipse, rgba(0,0,0,0.3) 0%, transparent 80%);
  animation: pc-shadow 6s ease-in-out infinite;
}
@keyframes pc-sky { 0% { opacity:0.7 } 50% { opacity:1 } 100% { opacity:0.8 } }
@keyframes pc-figure-left { 0% { transform: translateX(0) rotate(-2deg) } 25% { transform: translateX(5px) rotate(3deg) } 50% { transform: translateX(0) rotate(0deg) } 75% { transform: translateX(-5px) rotate(-3deg) } 100% { transform: translateX(0) rotate(2deg) } }
@keyframes pc-figure-right { 0% { transform: translateX(0) rotate(2deg) } 25% { transform: translateX(-5px) rotate(-3deg) } 50% { transform: translateX(0) rotate(0deg) } 75% { transform: translateX(5px) rotate(3deg) } 100% { transform: translateX(0) rotate(-2deg) } }
@keyframes pc-rose { 0%,100% { transform: translateX(-50%) scale(1) rotate(0deg) } 50% { transform: translateX(-50%) scale(1.1) rotate(15deg) } }
@keyframes pc-shadow { 0%,100% { opacity:0.5 } 50% { opacity:0.8 } }

/* warwick-hawking-metaphor */
.scn-warwick-hawking-metaphor {
  background: linear-gradient(180deg, #87ceeb 0%, #6bb5d0 50%, #4a9ab5 100%),
              radial-gradient(ellipse at 70% 20%, #c0e8f0 0%, transparent 50%);
}
.scn-warwick-hawking-metaphor .sky {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #b0e0f0 0%, #8ac4d8 100%);
  animation: whm-sky 20s ease-in-out infinite alternate;
}
.scn-warwick-hawking-metaphor .hills {
  position: absolute; bottom: 20%; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #5a8a3a 0%, #2a5a1a 100%);
  border-radius: 50% 50% 0 0 / 30% 30% 0 0;
  box-shadow: inset 0 6px 15px rgba(0,0,0,0.3);
  animation: whm-hills 12s ease-in-out infinite alternate;
}
.scn-warwick-hawking-metaphor .hawk {
  position: absolute; width: 40px; height: 20px;
  background: radial-gradient(ellipse at 30% 50%, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 0 0 / 60% 60% 40% 40%;
  transform-origin: center center;
}
.scn-warwick-hawking-metaphor .hawk-1 { top: 15%; left: 20%; animation: whm-hawk1 8s ease-in-out infinite; }
.scn-warwick-hawking-metaphor .hawk-2 { top: 25%; right: 25%; animation: whm-hawk2 8s ease-in-out infinite 2s; }
.scn-warwick-hawking-metaphor .arm {
  position: absolute; bottom: 25%; left: 15%; width: 50px; height: 8px;
  background: linear-gradient(180deg, #8a6a4a 0%, #5a3a2a 100%);
  border-radius: 20% 80% 50% 50%;
  transform-origin: left center;
  animation: whm-arm 6s ease-in-out infinite;
}
.scn-warwick-hawking-metaphor .glove {
  position: absolute; bottom: 27%; left: 18%; width: 12px; height: 14px;
  background: #6a4a3a;
  border-radius: 20% 80% 50% 50% / 50% 50% 40% 40%;
  box-shadow: 0 0 6px rgba(0,0,0,0.3);
  animation: whm-glove 6s ease-in-out infinite;
}
@keyframes whm-sky { 0% { opacity:0.7 } 50% { opacity:1 } 100% { opacity:0.8 } }
@keyframes whm-hills { 0% { transform: translateY(0) } 50% { transform: translateY(-4px) } 100% { transform: translateY(0) } }
@keyframes whm-hawk1 { 0% { transform: translate(0,0) rotate(-10deg) } 25% { transform: translate(30px,-20px) rotate(5deg) } 50% { transform: translate(60px,0) rotate(-10deg) } 75% { transform: translate(30px,10px) rotate(15deg) } 100% { transform: translate(0,0) rotate(-10deg) } }
@keyframes whm-hawk2 { 0% { transform: translate(0,0) rotate(10deg) } 25% { transform: translate(-30px,-15px) rotate(-5deg) } 50% { transform: translate(-60px,0) rotate(10deg) } 75% { transform: translate(-30px,8px) rotate(-15deg) } 100% { transform: translate(0,0) rotate(10deg) } }
@keyframes whm-arm { 0% { transform: rotate(-20deg) } 50% { transform: rotate(10deg) } 100% { transform: rotate(-20deg) } }
@keyframes whm-glove { 0% { transform: translate(0,0) } 50% { transform: translate(4px,-2px) } 100% { transform: translate(0,0) } }

/* richard-asserts-truth */
.scn-richard-asserts-truth {
  background: linear-gradient(180deg, #b0c8d0 0%, #7aa0b0 50%, #4a7080 100%),
              radial-gradient(ellipse at 50% 30%, #d0e8f0 0%, transparent 70%);
}
.scn-richard-asserts-truth .backdrop {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(180deg, #c0d8e0 0%, #8ab0c0 100%);
  animation: rat-backdrop 15s ease-in-out infinite alternate;
}
.scn-richard-asserts-truth .lightray {
  position: absolute; top: 0; left: 45%; width: 10%; height: 100%;
  background: linear-gradient(180deg, rgba(255,255,200,0.4) 0%, transparent 80%);
  filter: blur(8px);
  animation: rat-lightray 4s ease-in-out infinite alternate;
}
.scn-richard-asserts-truth .figure {
  position: absolute; bottom: 15%; left: 50%; transform: translateX(-50%);
  width: 30px; height: 70px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: rat-figure 8s ease-in-out infinite;
}
.scn-richard-asserts-truth .arm {
  position: absolute; bottom: 40%; left: 55%; width: 30px; height: 6px;
  background: #1a1a2a;
  border-radius: 0 80% 20% 0 / 50% 50% 50% 50%;
  transform-origin: left center;
  animation: rat-arm 6s ease-in-out infinite;
}
.scn-richard-asserts-truth .glint {
  position: absolute; bottom: 42%; left: 58%; width: 4px; height: 4px;
  background: #ffffff;
  border-radius: 50%;
  box-shadow: 0 0 12px 4px rgba(255,255,255,0.6);
  animation: rat-glint 2s ease-in-out infinite alternate;
}
.scn-richard-asserts-truth .shadow {
  position: absolute; bottom: 10%; left: 40%; width: 20%; height: 10px;
  background: radial-gradient(ellipse, rgba(0,0,0,0.3) 0%, transparent 80%);
  animation: rat-shadow 8s ease-in-out infinite;
}
@keyframes rat-backdrop { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.85 } }
@keyframes rat-lightray { 0% { opacity:0.3; transform: scaleY(0.9) } 50% { opacity:0.7; transform: scaleY(1.1) } 100% { opacity:0.4; transform: scaleY(0.95) } }
@keyframes rat-figure { 0% { transform: translateX(-50%) rotate(0deg) } 25% { transform: translateX(-50%) rotate(3deg) } 50% { transform: translateX(-50%) rotate(0deg) } 75% { transform: translateX(-50%) rotate(-3deg) } 100% { transform: translateX(-50%) rotate(0deg) } }
@keyframes rat-arm { 0% { transform: rotate(-30deg) } 50% { transform: rotate(10deg) } 100% { transform: rotate(-30deg) } }
@keyframes rat-glint { 0% { opacity:0.3 } 100% { opacity:1 } }
@keyframes rat-shadow { 0%,100% { opacity:0.4 } 50% { opacity:0.8 } }

.scn-camp-renown-vs-shame { background: linear-gradient(180deg, #f9e7c0 0%, #d4a373 40%, #a67c52 100%), radial-gradient(ellipse at 50% 0%, #fff0d0 0%, transparent 60%); }
.scn-camp-renown-vs-shame .sky { position:absolute; inset:0 0 55% 0; background: linear-gradient(180deg, #87ceeb 0%, #c2e0ff 80%); animation: crs-sky 20s ease-in-out infinite alternate; }
.scn-camp-renown-vs-shame .ground { position:absolute; bottom:0; left:0; right:0; height:55%; background: linear-gradient(180deg, #c4a882 0%, #6b4f32 100%); border-radius: 30% 70% 0 0 / 40% 60% 0 0; box-shadow: inset 0 20px 30px rgba(60,40,20,0.7); animation: crs-ground 15s ease-in-out infinite; }
.scn-camp-renown-vs-shame .tent { position:absolute; bottom:30%; left:25%; width:100px; height:80px; background: linear-gradient(135deg, #8a6a4a 0%, #5a3a2a 100%); clip-path: polygon(20% 100%, 50% 0%, 80% 100%); box-shadow: 0 10px 15px rgba(0,0,0,0.4); }
.scn-camp-renown-vs-shame .figure-left { position:absolute; bottom:28%; left:38%; width:20px; height:50px; background: linear-gradient(180deg, #2c2c2c 0%, #151515 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform: scaleX(-1); animation: crs-figure-right 3s ease-in-out infinite; }
.scn-camp-renown-vs-shame .figure-right { position:absolute; bottom:28%; right:38%; width:20px; height:50px; background: linear-gradient(180deg, #2c2c2c 0%, #151515 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: crs-figure-left 3s ease-in-out infinite; }
.scn-camp-renown-vs-shame .banner { position:absolute; bottom:35%; left:50%; width:40px; height:30px; background: linear-gradient(180deg, #b8553d 0%, #8a3a2a 100%); clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 80%); transform: translateX(-50%); box-shadow: 0 5px 8px rgba(0,0,0,0.3); animation: crs-banner 4s ease-in-out infinite alternate; }
.scn-camp-renown-vs-shame .dust { position:absolute; bottom:15%; left:20%; width:120px; height:40px; background: radial-gradient(ellipse, rgba(200,180,150,0.4) 0%, transparent 70%); filter: blur(8px); animation: crs-dust 6s ease-in-out infinite; }
@keyframes crs-sky { 0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.7; } }
@keyframes crs-ground { 0% { transform: translateY(0) scaleY(1); } 50% { transform: translateY(-3px) scaleY(1.02); } 100% { transform: translateY(0) scaleY(1); } }
@keyframes crs-figure-left { 0%,100% { transform: translateX(0) rotate(-0.5deg); } 25% { transform: translateX(4px) rotate(1deg); } 50% { transform: translateX(0) rotate(-1deg); } 75% { transform: translateX(-4px) rotate(0.5deg); } }
@keyframes crs-figure-right { 0%,100% { transform: translateX(0) rotate(0.5deg); } 25% { transform: translateX(-4px) rotate(-1deg); } 50% { transform: translateX(0) rotate(1deg); } 75% { transform: translateX(4px) rotate(-0.5deg); } }
@keyframes crs-banner { 0% { transform: translateX(-50%) rotate(-5deg); } 50% { transform: translateX(-50%) rotate(3deg); } 100% { transform: translateX(-50%) rotate(-2deg); } }
@keyframes crs-dust { 0% { opacity:0.2; transform: scale(1); } 50% { opacity:0.5; transform: scale(1.1); } 100% { opacity:0.1; transform: scale(0.9); } }

.scn-camp-indivisible-bond { background: linear-gradient(180deg, #ffe9c4 0%, #f2d0a2 40%, #c4956a 100%), radial-gradient(ellipse at 50% 100%, #ffd58c 0%, transparent 70%); }
.scn-camp-indivisible-bond .sky { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #add8e6 0%, #87ceeb 100%); animation: cib-sky 15s ease-in-out infinite alternate; }
.scn-camp-indivisible-bond .sun { position:absolute; top:10%; left:70%; width:50px; height:50px; background: radial-gradient(circle, #fff5b0 0%, #ffd700 60%, transparent 100%); border-radius:50%; box-shadow: 0 0 40px 10px #ffd700; animation: cib-sun 8s ease-in-out infinite; }
.scn-camp-indivisible-bond .horizon { position:absolute; bottom:50%; left:0; right:0; height:2px; background: linear-gradient(90deg, transparent, #d4a373, transparent); animation: cib-horizon 20s linear infinite; }
.scn-camp-indivisible-bond .figure-a { position:absolute; bottom:25%; left:40%; width:22px; height:55px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 45% 55% 40% 40% / 60% 60% 40% 40%; transform: rotate(2deg); animation: cib-figure-a 4s ease-in-out infinite; }
.scn-camp-indivisible-bond .figure-b { position:absolute; bottom:25%; left:47%; width:22px; height:55px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 55% 45% 40% 40% / 60% 60% 40% 40%; transform: rotate(-2deg); animation: cib-figure-b 4s ease-in-out infinite; }
.scn-camp-indivisible-bond .bond-glow { position:absolute; bottom:28%; left:44%; width:30px; height:30px; background: radial-gradient(circle, #ffdd88 0%, #ffaa33 50%, transparent 80%); border-radius:50%; box-shadow: 0 0 30px 8px #ffaa33; animation: cib-glow 3s ease-in-out infinite alternate; }
@keyframes cib-sky { 0% { opacity:0.85; } 50% { opacity:1; } 100% { opacity:0.9; } }
@keyframes cib-sun { 0% { transform: translateY(0) scale(1); } 50% { transform: translateY(-3px) scale(1.05); } 100% { transform: translateY(0) scale(1); } }
@keyframes cib-horizon { 0% { background-position-x: 0%; } 100% { background-position-x: 100%; } }
@keyframes cib-figure-a { 0%,100% { transform: translateX(0) rotate(2deg); } 50% { transform: translateX(2px) rotate(0deg); } }
@keyframes cib-figure-b { 0%,100% { transform: translateX(0) rotate(-2deg); } 50% { transform: translateX(-2px) rotate(0deg); } }
@keyframes cib-glow { 0% { opacity:0.7; transform: scale(1); } 100% { opacity:1; transform: scale(1.15); } }

.scn-battlefield-john-rescued { background: linear-gradient(180deg, #b0c4de 0%, #8fbc8f 40%, #6b8e23 100%), radial-gradient(ellipse at 50% 60%, #e0e0a0 0%, transparent 70%); }
.scn-battlefield-john-rescued .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #f0e68c 0%, #bdb76b 100%); animation: bjr-sky 12s ease-in-out infinite alternate; }
.scn-battlefield-john-rescued .dust-cloud { position:absolute; bottom:20%; left:10%; width:180px; height:100px; background: radial-gradient(ellipse, rgba(210,180,140,0.5) 0%, transparent 70%); filter: blur(10px); animation: bjr-dust 5s ease-in-out infinite; }
.scn-battlefield-john-rescued .talbot { position:absolute; bottom:15%; left:30%; width:25px; height:60px; background: linear-gradient(180deg, #3a2a1a 0%, #1a0e05 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: bjr-fight 2s ease-in-out infinite; }
.scn-battlefield-john-rescued .john { position:absolute; bottom:15%; right:30%; width:24px; height:58px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform: scaleX(-1); animation: bjr-fight 2s ease-in-out infinite reverse; }
.scn-battlefield-john-rescued .sword-clash { position:absolute; bottom:35%; left:50%; width:10px; height:40px; background: linear-gradient(180deg, #ffd700 0%, #ffa500 100%); border-radius:5px; transform: translateX(-50%) rotate(-30deg); box-shadow: 0 0 20px 8px #ffa500; animation: bjr-clash 1.5s ease-in-out infinite alternate; }
.scn-battlefield-john-rescued .sparks { position:absolute; bottom:38%; left:48%; width:60px; height:60px; background: radial-gradient(circle, #ffdd44 0%, transparent 70%); filter: blur(4px); animation: bjr-sparks 0.8s steps(2) infinite; }
@keyframes bjr-sky { 0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.7; } }
@keyframes bjr-dust { 0% { opacity:0.3; transform: scale(1) translateY(0); } 50% { opacity:0.6; transform: scale(1.2) translateY(-5px); } 100% { opacity:0.2; transform: scale(0.9) translateY(2px); } }
@keyframes bjr-fight { 0%,100% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(5px) rotate(5deg); } 50% { transform: translateX(-3px) rotate(-5deg); } 75% { transform: translateX(3px) rotate(3deg); } }
@keyframes bjr-clash { 0% { opacity:0.8; transform: translateX(-50%) rotate(-30deg) scaleY(1); } 100% { opacity:1; transform: translateX(-50%) rotate(30deg) scaleY(1.2); } }
@keyframes bjr-sparks { 0% { opacity:0; } 50% { opacity:1; } 100% { opacity:0; } }

.scn-battlefield-dauphin-crest { background: linear-gradient(180deg, #87ceeb 0%, #b0e0e6 40%, #f5deb3 100%), radial-gradient(ellipse at 50% 0%, #fffacd 0%, transparent 70%); }
.scn-battlefield-dauphin-crest .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #ffebcd 0%, #ffe4b5 100%); animation: bdc-sky 18s ease-in-out infinite alternate; }
.scn-battlefield-dauphin-crest .ground { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, #c4a882 0%, #7a5a3a 100%); border-radius: 60% 40% 0 0 / 80% 70% 0 0; box-shadow: inset 0 10px 20px rgba(40,20,10,0.5); }
.scn-battlefield-dauphin-crest .shield { position:absolute; bottom:25%; left:50%; width:100px; height:120px; background: linear-gradient(135deg, #8b4513 0%, #5a2a0a 60%, #2a1000 100%); clip-path: polygon(50% 0%, 100% 30%, 80% 100%, 20% 100%, 0% 30%); transform: translateX(-50%); box-shadow: 0 0 40px 10px #ffa500; }
.scn-battlefield-dauphin-crest .crest-fire { position:absolute; bottom:30%; left:50%; width:60px; height:80px; background: radial-gradient(ellipse at 50% 100%, #ff4500 0%, #ff8c00 50%, transparent 80%); transform: translateX(-50%); animation: bdc-fire 2s ease-in-out infinite alternate; }
.scn-battlefield-dauphin-crest .sparkle1 { position:absolute; bottom:35%; left:45%; width:8px; height:8px; background: #ffd700; border-radius:50%; box-shadow: 0 0 10px 3px #ffd700; animation: bdc-spark 1.2s ease-in-out infinite; }
.scn-battlefield-dauphin-crest .sparkle2 { position:absolute; bottom:32%; left:55%; width:6px; height:6px; background: #ffaa00; border-radius:50%; box-shadow: 0 0 8px 2px #ffaa00; animation: bdc-spark 1.5s ease-in-out infinite 0.5s; }
@keyframes bdc-sky { 0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.7; } }
@keyframes bdc-fire { 0% { transform: translateX(-50%) scaleY(0.9) rotate(-2deg); } 50% { transform: translateX(-50%) scaleY(1.1) rotate(2deg); } 100% { transform: translateX(-50%) scaleY(0.95) rotate(-1deg); } }
@keyframes bdc-spark { 0% { opacity:0; transform: translateY(0); } 50% { opacity:1; transform: translateY(-10px); } 100% { opacity:0; transform: translateY(-20px); } }

.scn-angiers-suffolk-warrant {
  background: 
    linear-gradient(180deg, #87ceeb 0%, #b0d4e8 30%, #e8f0f8 60%, #f5f0e0 100%),
    radial-gradient(ellipse at 30% 20%, #fff8e7 0%, transparent 70%);
}
.scn-angiers-suffolk-warrant .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #b0d4e8 0%, transparent 80%);
  animation: aw-sky 15s ease-in-out infinite alternate;
}
.scn-angiers-suffolk-warrant .sun {
  position: absolute; top: 8%; left: 22%; width: 60px; height: 60px;
  background: radial-gradient(circle, #fff0b0 0%, #ffd080 40%, transparent 70%);
  border-radius: 50%;
  animation: aw-sun 10s ease-in-out infinite alternate;
}
.scn-angiers-suffolk-warrant .castle-wall {
  position: absolute; bottom: 30%; left: 10%; right: 10%; height: 40%;
  background: linear-gradient(180deg, #b8a080 0%, #8a7a5a 40%, #6a5a3a 100%);
  border-radius: 20% 20% 0 0 / 30% 30% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.3);
}
.scn-angiers-suffolk-warrant .tower {
  position: absolute; bottom: 40%; left: 30%; width: 80px; height: 120px;
  background: linear-gradient(180deg, #c8b090 0%, #8a7a5a 100%);
  border-radius: 8% 8% 0 0;
  box-shadow: 0 4px 12px rgba(0,0,0,0.2);
}
.scn-angiers-suffolk-warrant .window {
  position: absolute; bottom: 70%; left: 34%; width: 16px; height: 24px;
  background: radial-gradient(circle, #ffe8b0 0%, #d0a080 70%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 0 0 20px 4px rgba(255,232,176,0.5);
  animation: aw-glow 4s ease-in-out infinite alternate;
}
.scn-angiers-suffolk-warrant .banner {
  position: absolute; bottom: 50%; left: 37%; width: 20px; height: 40px;
  background: linear-gradient(180deg, #c8553d 0%, #a0461a 100%);
  border-radius: 0 0 20% 20%;
  transform-origin: top center;
  animation: aw-banner 6s ease-in-out infinite;
}
.scn-angiers-suffolk-warrant .figure {
  position: absolute; bottom: 24%; left: 35%; width: 20px; height: 50px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a120a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: aw-descend 8s ease-in-out infinite, aw-walk 4s ease-in-out infinite;
}
.scn-angiers-suffolk-warrant .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #6a8a4a 0%, #4a6a2a 100%);
}
@keyframes aw-sky { 0% { opacity:0.7 } 50% { opacity:1 } 100% { opacity:0.8 } }
@keyframes aw-sun { 0% { transform: translate(0,0) scale(1); opacity:0.9 } 50% { transform: translate(10px,-5px) scale(1.05); opacity:1 } 100% { transform: translate(5px,2px) scale(0.98); opacity:0.85 } }
@keyframes aw-glow { 0% { box-shadow: 0 0 10px 2px rgba(255,232,176,0.4); opacity:0.8 } 50% { box-shadow: 0 0 30px 8px rgba(255,232,176,0.7); opacity:1 } 100% { box-shadow: 0 0 15px 4px rgba(255,232,176,0.5); opacity:0.9 } }
@keyframes aw-banner { 0% { transform: rotate(-5deg) } 50% { transform: rotate(5deg) } 100% { transform: rotate(-5deg) } }
@keyframes aw-descend { 0% { top: 20%; opacity:0 } 30% { top: 24%; opacity:1 } 70% { top: 24%; opacity:1 } 100% { top: 30%; opacity:0 } }
@keyframes aw-walk { 0% { transform: translateX(0) translateY(0) rotate(-2deg) } 25% { transform: translateX(5px) translateY(-1px) rotate(2deg) } 50% { transform: translateX(10px) translateY(0) rotate(-2deg) } 75% { transform: translateX(15px) translateY(-1px) rotate(2deg) } 100% { transform: translateX(20px) translateY(0) rotate(0) } }

.scn-angiers-maine-conditions {
  background: 
    linear-gradient(135deg, #f5e6cc 0%, #d4c4a8 30%, #b8a88a 60%, #a09070 100%),
    radial-gradient(circle at 70% 20%, #fff8e7 0%, transparent 50%);
}
.scn-angiers-maine-conditions .arch {
  position: absolute; bottom: 20%; left: 15%; right: 15%; height: 70%;
  background: linear-gradient(180deg, #b8a080 0%, #8a7a5a 100%);
  border-radius: 50% 50% 0 0 / 40% 40% 0 0;
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.3);
}
.scn-angiers-maine-conditions .window {
  position: absolute; top: 5%; left: 40%; width: 80px; height: 60px;
  background: radial-gradient(circle, #ffe8b0 0%, #d0a080 60%);
  border-radius: 20% 20% 40% 40%;
  box-shadow: 0 0 40px 10px rgba(255,232,176,0.4);
  animation: ac-window 5s ease-in-out infinite alternate;
}
.scn-angiers-maine-conditions .light-beam {
  position: absolute; top: 5%; left: 30%; width: 40%; height: 60%;
  background: linear-gradient(180deg, rgba(255,248,224,0.3) 0%, transparent 100%);
  transform: skewX(-10deg);
  animation: ac-beam 7s ease-in-out infinite alternate;
}
.scn-angiers-maine-conditions .figure-left {
  position: absolute; bottom: 22%; left: 25%; width: 30px; height: 80px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a120a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ac-nod 6s ease-in-out infinite;
}
.scn-angiers-maine-conditions .figure-right {
  position: absolute; bottom: 22%; right: 25%; width: 30px; height: 80px;
  background: linear-gradient(180deg, #5a4a3a 0%, #2a1a0a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ac-nod 6s ease-in-out infinite reverse;
}
.scn-angiers-maine-conditions .table {
  position: absolute; bottom: 20%; left: 35%; right: 35%; height: 4%;
  background: linear-gradient(90deg, #6a4a2a 0%, #8a6a4a 50%, #6a4a2a 100%);
  border-radius: 20%;
  box-shadow: 0 2px 8px rgba(0,0,0,0.3);
}
@keyframes ac-window { 0% { box-shadow: 0 0 20px 5px rgba(255,232,176,0.3); opacity:0.8 } 50% { box-shadow: 0 0 50px 15px rgba(255,232,176,0.6); opacity:1 } 100% { box-shadow: 0 0 30px 8px rgba(255,232,176,0.4); opacity:0.9 } }
@keyframes ac-beam { 0% { opacity:0.4; transform: skewX(-15deg) translateX(0) } 50% { opacity:0.7; transform: skewX(-5deg) translateX(10px) } 100% { opacity:0.5; transform: skewX(-10deg) translateX(5px) } }
@keyframes ac-nod { 0% { transform: rotate(0deg) } 50% { transform: rotate(3deg) } 100% { transform: rotate(0deg) } }

.scn-angiers-treaty-sealed {
  background: 
    linear-gradient(135deg, #e8dcc8 0%, #c8b8a0 30%, #a89880 60%, #887868 100%),
    radial-gradient(ellipse at 50% 60%, #fff8e7 0%, transparent 70%);
}
.scn-angiers-treaty-sealed .hand-left {
  position: absolute; bottom: 20%; left: 25%; width: 70px; height: 90px;
  background: linear-gradient(135deg, #e0c8a0 0%, #b8a080 100%);
  border-radius: 50% 40% 30% 30% / 60% 50% 50% 40%;
  transform: rotate(-20deg);
  animation: at-hand 4s ease-in-out infinite alternate;
}
.scn-angiers-treaty-sealed .hand-right {
  position: absolute; bottom: 20%; right: 25%; width: 70px; height: 90px;
  background: linear-gradient(225deg, #e0c8a0 0%, #b8a080 100%);
  border-radius: 40% 50% 30% 30% / 50% 60% 40% 50%;
  transform: rotate(20deg);
  animation: at-hand 4s ease-in-out infinite alternate-reverse;
}
.scn-angiers-treaty-sealed .scroll {
  position: absolute; bottom: 25%; left: 35%; right: 35%; height: 20px;
  background: linear-gradient(90deg, #d4b88a 0%, #f0e0c0 50%, #d4b88a 100%);
  border-radius: 20%;
  box-shadow: 0 2px 6px rgba(0,0,0,0.2);
  animation: at-scroll 8s ease-in-out infinite;
}
.scn-angiers-treaty-sealed .seal {
  position: absolute; bottom: 30%; left: 48%; width: 30px; height: 30px;
  background: radial-gradient(circle, #c8553d 0%, #a0461a 100%);
  border-radius: 50%;
  box-shadow: 0 0 12px 4px rgba(200,85,61,0.4);
  animation: at-seal 5s ease-in-out infinite;
}
.scn-angiers-treaty-sealed .quill {
  position: absolute; bottom: 40%; left: 70%; width: 6px; height: 60px;
  background: linear-gradient(180deg, #e0d0c0 0%, #b8a080 100%);
  border-radius: 40%;
  transform-origin: bottom center;
  animation: at-quill 3s ease-in-out infinite;
}
.scn-angiers-treaty-sealed .ink-pot {
  position: absolute; bottom: 15%; right: 15%; width: 20px; height: 16px;
  background: #4a3a2a;
  border-radius: 50% 50% 30% 30%;
}
@keyframes at-hand { 0% { transform: rotate(-20deg) translateY(0) } 50% { transform: rotate(-18deg) translateY(-3px) } 100% { transform: rotate(-22deg) translateY(2px) } }
@keyframes at-scroll { 0% { transform: scaleX(1) } 50% { transform: scaleX(1.05) } 100% { transform: scaleX(0.98) } }
@keyframes at-seal { 0% { box-shadow: 0 0 8px 2px rgba(200,85,61,0.3); opacity:0.9 } 50% { box-shadow: 0 0 20px 6px rgba(200,85,61,0.6); opacity:1 } 100% { box-shadow: 0 0 12px 4px rgba(200,85,61,0.4); opacity:0.95 } }
@keyframes at-quill { 0% { transform: rotate(10deg) } 50% { transform: rotate(-10deg) } 100% { transform: rotate(10deg) } }

.scn-angiers-suffolk-regret {
  background: 
    linear-gradient(180deg, #e8c8a0 0%, #d4a878 30%, #b88858 60%, #a07048 100%),
    radial-gradient(ellipse at 40% 30%, #ffe8c0 0%, transparent 60%);
}
.scn-angiers-suffolk-regret .hand {
  position: absolute; bottom: 10%; left: 35%; right: 35%; height: 50%;
  background: linear-gradient(180deg, #e0c8a0 0%, #c8a880 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 30% 30%;
  transform: rotate(5deg);
  animation: ar-hand 6s ease-in-out infinite alternate;
}
.scn-angiers-suffolk-regret .diamond {
  position: absolute; top: 30%; left: 45%; width: 40px; height: 40px;
  background: linear-gradient(135deg, #fff8e0 0%, #f0d8a0 50%, #d0b080 100%);
  clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
  box-shadow: 0 0 30px 10px rgba(255,232,176,0.6);
  animation: ar-diamond 3s ease-in-out infinite;
}
.scn-angiers-suffolk-regret .glow {
  position: absolute; top: 20%; left: 40%; right: 40%; bottom: 40%;
  background: radial-gradient(circle, rgba(255,232,176,0.4) 0%, transparent 70%);
  animation: ar-glow 4s ease-in-out infinite alternate;
}
.scn-angiers-suffolk-regret .rays {
  position: absolute; top: 15%; left: 38%; right: 38%; bottom: 50%;
  background: conic-gradient(from 0deg, transparent 0deg, rgba(255,232,176,0.1) 30deg, transparent 60deg, rgba(255,232,176,0.1) 90deg, transparent 120deg, rgba(255,232,176,0.1) 150deg, transparent 180deg, rgba(255,232,176,0.1) 210deg, transparent 240deg, rgba(255,232,176,0.1) 270deg, transparent 300deg, rgba(255,232,176,0.1) 330deg, transparent 360deg);
  animation: ar-rays 8s linear infinite;
}
.scn-angiers-suffolk-regret .bg-castle {
  position: absolute; bottom: 0; left: 10%; right: 10%; height: 30%;
  background: linear-gradient(180deg, #6a5a3a 0%, #4a3a1a 100%);
  border-radius: 30% 30% 0 0;
  opacity: 0.6;
}
@keyframes ar-hand { 0% { transform: rotate(5deg) translateY(0) } 50% { transform: rotate(3deg) translateY(-5px) } 100% { transform: rotate(6deg) translateY(2px) } }
@keyframes ar-diamond { 0% { transform: rotate(0deg) scale(1); opacity:0.9 } 50% { transform: rotate(180deg) scale(1.1); opacity:1 } 100% { transform: rotate(360deg) scale(1); opacity:0.9 } }
@keyframes ar-glow { 0% { opacity:0.3; transform: scale(1) } 50% { opacity:0.7; transform: scale(1.2) } 100% { opacity:0.4; transform: scale(0.9) } }
@keyframes ar-rays { 0% { transform: rotate(0deg) } 100% { transform: rotate(360deg) } }

.scn-richard-obscured {
  background:
    linear-gradient(180deg, #1a1210 0%, #2a1e1a 40%, #3a2a24 100%),
    radial-gradient(ellipse at 40% 60%, #4a3a34 0%, transparent 70%);
}
.scn-richard-obscured .bg-deep { position:absolute; inset:0; background:radial-gradient(ellipse at 30% 40%, #2a1e1a 0%, transparent 100%); }
.scn-richard-obscured .wall-shadow { position:absolute; left:0; top:0; bottom:0; width:35%; background:linear-gradient(90deg, #1a1210 0%, transparent 100%); animation:r1-wall 8s ease-in-out infinite alternate; }
.scn-richard-obscured .figure { position:absolute; bottom:20%; left:45%; width:28px; height:60px; background:linear-gradient(180deg, #2a2220 0%, #1a1210 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation:r1-figure 6s ease-in-out infinite; }
.scn-richard-obscured .window-glow { position:absolute; top:25%; right:15%; width:40px; height:60px; background:radial-gradient(ellipse, #8a6a4a 0%, #5a3a2a 70%); border:2px solid #6a4a3a; border-radius:4px; box-shadow: 0 0 30px 10px #8a6a4a, 0 0 60px 20px rgba(138,106,74,.4); animation:r1-window 4s ease-in-out infinite alternate; }
.scn-richard-obscured .dust-a { position:absolute; top:30%; left:20%; width:4px; height:4px; background:rgba(200,180,160,.15); border-radius:50%; filter:blur(1px); animation:r1-dust 12s linear infinite; }
.scn-richard-obscured .dust-b { position:absolute; top:50%; right:30%; width:3px; height:3px; background:rgba(200,180,160,.1); border-radius:50%; filter:blur(1px); animation:r1-dustb 14s linear infinite; }
@keyframes r1-wall { 0% { opacity:.7 } 50% { opacity:.9 } 100% { opacity:.8 } }
@keyframes r1-figure { 0%, 100% { transform: translateY(0) rotate(0) scale(1); } 50% { transform: translateY(-2px) rotate(1deg) scale(1.01); } }
@keyframes r1-window { 0% { box-shadow: 0 0 20px 6px #8a6a4a, 0 0 40px 12px rgba(138,106,74,.3); opacity:.85; } 50% { box-shadow: 0 0 40px 12px #b08060, 0 0 80px 24px rgba(176,128,96,.5); opacity:1; } 100% { box-shadow: 0 0 25px 8px #8a6a4a, 0 0 50px 15px rgba(138,106,74,.35); opacity:.9; } }
@keyframes r1-dust { 0% { transform: translateY(0) translateX(0); opacity:0; } 20% { opacity:0.4; } 80% { opacity:0.2; } 100% { transform: translateY(-200px) translateX(60px); opacity:0; } }
@keyframes r1-dustb { 0% { transform: translateY(0) translateX(0); opacity:0; } 15% { opacity:0.3; } 85% { opacity:0.1; } 100% { transform: translateY(-250px) translateX(-40px); opacity:0; } }

.scn-richard-visits-mortimer {
  background:
    linear-gradient(180deg, #161010 0%, #2a1e1a 40%, #3a2a24 100%),
    radial-gradient(ellipse at 60% 70%, #4a3a34 0%, transparent 60%);
}
.scn-richard-visits-mortimer .cell-wall-l { position:absolute; left:0; top:0; bottom:0; width:20%; background:linear-gradient(90deg, #1a1210 60%, transparent 100%); border-right:4px solid #2a1e1a; }
.scn-richard-visits-mortimer .cell-wall-r { position:absolute; right:0; top:0; bottom:0; width:20%; background:linear-gradient(270deg, #1a1210 60%, transparent 100%); border-left:4px solid #2a1e1a; }
.scn-richard-visits-mortimer .floor { position:absolute; bottom:0; left:20%; right:20%; height:15%; background:linear-gradient(180deg, #2a1e1a 0%, #1a1210 100%); border-top:2px solid #3a2a24; }
.scn-richard-visits-mortimer .figure-richard { position:absolute; bottom:15%; left:35%; width:26px; height:55px; background:linear-gradient(180deg, #3a2a24 0%, #1a1210 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation:r2-fr 7s ease-in-out infinite; }
.scn-richard-visits-mortimer .figure-mortimer { position:absolute; bottom:15%; left:55%; width:24px; height:52px; background:linear-gradient(180deg, #4a3a34 0%, #2a1e1a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation:r2-fm 7s ease-in-out infinite alternate; }
.scn-richard-visits-mortimer .lantern-glow { position:absolute; bottom:22%; left:45%; width:16px; height:16px; background:radial-gradient(circle, #d0a080 0%, #a07050 40%, transparent 100%); border-radius:50%; box-shadow: 0 0 30px 15px #b08060, 0 0 60px 30px rgba(176,128,96,.4); animation:r2-lantern 3s ease-in-out infinite alternate; }
.scn-richard-visits-mortimer .chain-left { position:absolute; bottom:30%; left:22%; width:6px; height:40px; background:linear-gradient(180deg, #6a5a50 0%, #4a3a34 100%); border-radius:3px; box-shadow: 2px 0 4px rgba(0,0,0,.3); animation:r2-chain 9s ease-in-out infinite; }
@keyframes r2-fr { 0%,100% { transform: translateX(0) rotate(0); } 50% { transform: translateX(4px) rotate(1deg); } }
@keyframes r2-fm { 0%,100% { transform: translateX(0) rotate(0); } 50% { transform: translateX(-4px) rotate(-1deg); } }
@keyframes r2-lantern { 0% { box-shadow: 0 0 20px 10px #b08060, 0 0 40px 20px rgba(176,128,96,.3); opacity:.85; } 50% { box-shadow: 0 0 40px 18px #d0a080, 0 0 80px 36px rgba(208,160,128,.5); opacity:1; } 100% { box-shadow: 0 0 25px 12px #b08060, 0 0 50px 25px rgba(176,128,96,.35); opacity:.9; } }
@keyframes r2-chain { 0%,100% { transform: rotate(0); } 50% { transform: rotate(3deg); } }

.scn-mortimer-asks-cause {
  background:
    linear-gradient(180deg, #1a1410 0%, #2a201c 30%, #3a2e28 100%),
    radial-gradient(ellipse at 50% 60%, #4a3a34 0%, transparent 70%);
}
.scn-mortimer-asks-cause .wall-bg { position:absolute; inset:0; background:repeating-linear-gradient(0deg, #2a201c 0px, #2a201c 3px, #3a2e28 3px, #3a2e28 6px); opacity:.5; animation:r3-wall 15s ease-in-out infinite alternate; }
.scn-mortimer-asks-cause .old-man { position:absolute; bottom:15%; left:40%; width:28px; height:50px; background:linear-gradient(180deg, #4a3a34 0%, #2a201c 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform:rotate(5deg); transform-origin:bottom left; animation:r3-oldman 8s ease-in-out infinite; }
.scn-mortimer-asks-cause .richard-arm { position:absolute; bottom:28%; left:42%; width:40px; height:12px; background:linear-gradient(90deg, #3a2e28 0%, #2a201c 80%, transparent 100%); border-radius:20px 0 0 20px; transform-origin:left center; animation:r3-arm 8s ease-in-out infinite alternate; }
.scn-mortimer-asks-cause .candle-light { position:absolute; bottom:30%; left:55%; width:8px; height:14px; background:linear-gradient(180deg, #e0b080 0%, #c09060 100%); border-radius:2px; box-shadow: 0 0 20px 8px #e0b080, 0 0 50px 20px rgba(224,176,128,.3); animation:r3-candle 2s ease-in-out infinite alternate; }
.scn-mortimer-asks-cause .smoke-a { position:absolute; bottom:40%; left:55%; width:6px; height:6px; background:rgba(200,180,160,.08); border-radius:50%; filter:blur(2px); animation:r3-smoke 10s linear infinite; }
.scn-mortimer-asks-cause .smoke-b { position:absolute; bottom:38%; left:52%; width:8px; height:8px; background:rgba(200,180,160,.05); border-radius:50%; filter:blur(2px); animation:r3-smokeb 12s linear infinite; }
@keyframes r3-wall { 0% { opacity:.4 } 50% { opacity:.6 } 100% { opacity:.5 } }
@keyframes r3-oldman { 0%,100% { transform: rotate(5deg) translateY(0); } 50% { transform: rotate(4deg) translateY(-1px); } }
@keyframes r3-arm { 0%,100% { transform: rotate(0); } 50% { transform: rotate(-2deg); } }
@keyframes r3-candle { 0% { box-shadow: 0 0 15px 6px #e0b080, 0 0 40px 15px rgba(224,176,128,.25); opacity:.8; } 50% { box-shadow: 0 0 25px 10px #ffcca0, 0 0 60px 25px rgba(255,204,160,.4); opacity:1; } 100% { box-shadow: 0 0 18px 8px #e0b080, 0 0 45px 18px rgba(224,176,128,.3); opacity:.9; } }
@keyframes r3-smoke { 0% { transform: translateY(0) translateX(0); opacity:0; } 25% { opacity:0.3; } 75% { opacity:0.1; } 100% { transform: translateY(-180px) translateX(30px); opacity:0; } }
@keyframes r3-smokeb { 0% { transform: translateY(0) translateX(0); opacity:0; } 30% { opacity:0.2; } 70% { opacity:0.05; } 100% { transform: translateY(-200px) translateX(-20px); opacity:0; } }

.scn-richard-asks-fathers-cause {
  background:
    linear-gradient(180deg, #1a1210 0%, #2a1e1a 40%, #3a2a24 100%),
    radial-gradient(ellipse at 40% 30%, #4a3a34 0%, transparent 60%);
}
.scn-richard-asks-fathers-cause .dungeon-bg { position:absolute; inset:0; background:radial-gradient(ellipse at 35% 50%, #3a2a24 0%, #1a1210 100%); }
.scn-richard-asks-fathers-cause .bars-foreground { position:absolute; left:10%; top:0; bottom:0; width:4px; background:#6a5a50; box-shadow: 30px 0 0 #6a5a50, 60px 0 0 #6a5a50, 90px 0 0 #6a5a50, 120px 0 0 #6a5a50; opacity:.6; animation:r4-bars 10s ease-in-out infinite alternate; }
.scn-richard-asks-fathers-cause .bars-shadow { position:absolute; bottom:0; left:10%; right:auto; width:120px; height:40%; background:linear-gradient(90deg, #1a1210 0%, transparent 100%); filter:blur(6px); animation:r4-shadow 10s ease-in-out infinite; }
.scn-richard-asks-fathers-cause .figure-richard-2 { position:absolute; bottom:18%; left:45%; width:26px; height:55px; background:linear-gradient(180deg, #3a2a24 0%, #1a1210 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation:r4-fr 5s ease-in-out infinite; }
.scn-richard-asks-fathers-cause .figure-mortimer-2 { position:absolute; bottom:18%; left:58%; width:24px; height:52px; background:linear-gradient(180deg, #4a3a34 0%, #2a1e1a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation:r4-fm 6s ease-in-out infinite alternate; }
.scn-richard-asks-fathers-cause .torch-glow { position:absolute; top:20%; left:70%; width:14px; height:20px; background:radial-gradient(ellipse, #d08040 0%, #a05020 60%, transparent 100%); border-radius:50%; box-shadow: 0 0 40px 20px #c07030, 0 0 80px 40px rgba(192,112,48,.3); animation:r4-torch 2.5s ease-in-out infinite alternate; }
@keyframes r4-bars { 0%,100% { opacity:.5 } 50% { opacity:.8 } }
@keyframes r4-shadow { 0%,100% { transform: translateX(0) scaleY(1); } 50% { transform: translateX(4px) scaleY(1.05); } }
@keyframes r4-fr { 0%,100% { transform: translateX(0) rotate(0); } 50% { transform: translateX(2px) rotate(2deg); } }
@keyframes r4-fm { 0%,100% { transform: translateX(0) rotate(0); } 50% { transform: translateX(-2px) rotate(-2deg); } }
@keyframes r4-torch { 0% { box-shadow: 0 0 30px 15px #c07030, 0 0 60px 30px rgba(192,112,48,.25); opacity:.85; } 50% { box-shadow: 0 0 50px 25px #e09050, 0 0 100px 50px rgba(224,144,80,.4); opacity:1; } 100% { box-shadow: 0 0 35px 18px #c07030, 0 0 70px 35px rgba(192,112,48,.3); opacity:.9; } }

/* battlefield-bastard-blood - warm sunlit duel */
.scn-battlefield-bastard-blood {
  background: radial-gradient(ellipse at 50% 20%, #f5c842 0%, #d49a3a 40%, #9a6a2a 70%, #4a2a1a 100%);
}
.scn-battlefield-bastard-blood .sun {
  position: absolute; top: -10%; left: 20%; width: 30%; height: 50%;
  background: radial-gradient(circle, #ffe680 0%, #f5c842 60%, transparent 100%);
  animation: bb1-sun 10s ease-in-out infinite alternate;
}
.scn-battlefield-bastard-blood .sky {
  position: absolute; top: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #f5d87a 0%, #c8963a 100%);
  opacity: 0.6;
}
.scn-battlefield-bastard-blood .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 60%;
  background: linear-gradient(180deg, #8a6a2a 0%, #5a3a1a 50%, #3a2a0a 100%);
  border-radius: 60% 40% 0 0 / 30% 20% 0 0;
}
.scn-battlefield-bastard-blood .dust {
  position: absolute; bottom: 35%; left: 10%; right: 10%; height: 20%;
  background: radial-gradient(ellipse at 50% 50%, rgba(200,150,60,0.4) 0%, transparent 70%);
  filter: blur(8px);
  animation: bb1-dust 6s ease-in-out infinite alternate;
}
.scn-battlefield-bastard-blood .figure-left {
  position: absolute; bottom: 25%; left: 30%; width: 20px; height: 50px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1a0a 100%);
  border-radius: 50% 50% 45% 45% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bb1-left 1.5s ease-in-out infinite alternate;
}
.scn-battlefield-bastard-blood .figure-right {
  position: absolute; bottom: 25%; right: 30%; width: 20px; height: 50px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1a0a 100%);
  border-radius: 50% 50% 45% 45% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bb1-right 1.5s ease-in-out infinite alternate;
}
.scn-battlefield-bastard-blood .sword-left {
  position: absolute; bottom: 55%; left: 32%; width: 4px; height: 30px;
  background: linear-gradient(180deg, #c8a050 0%, #806828 100%);
  border-radius: 2px;
  transform-origin: bottom center;
  animation: bb1-sword-left 1.5s ease-in-out infinite alternate;
}
.scn-battlefield-bastard-blood .sword-right {
  position: absolute; bottom: 55%; right: 32%; width: 4px; height: 30px;
  background: linear-gradient(180deg, #c8a050 0%, #806828 100%);
  border-radius: 2px;
  transform-origin: bottom center;
  animation: bb1-sword-right 1.5s ease-in-out infinite alternate;
}
@keyframes bb1-sun { 0% { transform: scale(1); opacity: 0.9; } 50% { transform: scale(1.05); opacity: 1; } 100% { transform: scale(0.98); opacity: 0.85; } }
@keyframes bb1-dust { 0% { opacity: 0.3; transform: translateY(0) scaleY(1); } 50% { opacity: 0.6; transform: translateY(-5px) scaleY(1.2); } 100% { opacity: 0.2; transform: translateY(2px) scaleY(0.9); } }
@keyframes bb1-left { 0% { transform: translateX(0) rotate(-2deg); } 50% { transform: translateX(3px) rotate(2deg); } 100% { transform: translateX(0) rotate(-1deg); } }
@keyframes bb1-right { 0% { transform: translateX(0) rotate(2deg); } 50% { transform: translateX(-3px) rotate(-2deg); } 100% { transform: translateX(0) rotate(1deg); } }
@keyframes bb1-sword-left { 0% { transform: rotate(10deg); } 50% { transform: rotate(-10deg); } 100% { transform: rotate(5deg); } }
@keyframes bb1-sword-right { 0% { transform: rotate(-10deg); } 50% { transform: rotate(10deg); } 100% { transform: rotate(-5deg); } }

/* battlefield-bastard-insult - tense sunlit father-son on hill */
.scn-battlefield-bastard-insult {
  background: radial-gradient(ellipse at 70% 30%, #f5d87a 0%, #c8963a 40%, #7a5a1a 70%, #3a2a0a 100%);
}
.scn-battlefield-bastard-insult .sky {
  position: absolute; top: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #f5e0a0 0%, #d4b060 100%);
}
.scn-battlefield-bastard-insult .sun {
  position: absolute; top: 5%; left: 60%; width: 25%; height: 40%;
  background: radial-gradient(circle, #ffe680 0%, #f5c842 60%, transparent 100%);
  animation: bb2-sun 8s ease-in-out infinite alternate;
}
.scn-battlefield-bastard-insult .mountains {
  position: absolute; bottom: 30%; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #6a5a3a 0%, #4a3a1a 100%);
  border-radius: 80% 40% 0 0 / 60% 30% 0 0;
  filter: blur(2px);
}
.scn-battlefield-bastard-insult .field {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #8a7a3a 0%, #5a4a1a 100%);
  border-radius: 20% 30% 0 0 / 40% 50% 0 0;
}
.scn-battlefield-bastard-insult .father {
  position: absolute; bottom: 15%; left: 40%; width: 22px; height: 55px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1a0a 100%);
  border-radius: 50% 50% 45% 45% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bb2-father 4s ease-in-out infinite;
}
.scn-battlefield-bastard-insult .son {
  position: absolute; bottom: 18%; left: 48%; width: 16px; height: 40px;
  background: linear-gradient(180deg, #4a3a1a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 45% 45% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bb2-son 4s ease-in-out infinite;
}
.scn-battlefield-bastard-insult .banner {
  position: absolute; bottom: 35%; left: 35%; width: 6px; height: 40px;
  background: linear-gradient(180deg, #5a3a1a 0%, #a0461a 100%);
  border-radius: 2px;
  transform-origin: bottom center;
  animation: bb2-banner 5s ease-in-out infinite;
}
.scn-battlefield-bastard-insult .cloud-a {
  position: absolute; top: 8%; left: 15%; width: 80px; height: 20px;
  background: radial-gradient(ellipse, rgba(255,255,255,0.5) 0%, transparent 100%);
  filter: blur(8px);
  animation: bb2-cloud-a 40s linear infinite;
}
.scn-battlefield-bastard-insult .cloud-b {
  position: absolute; top: 15%; right: 10%; width: 60px; height: 15px;
  background: radial-gradient(ellipse, rgba(255,255,255,0.3) 0%, transparent 100%);
  filter: blur(6px);
  animation: bb2-cloud-b 50s linear infinite;
}
@keyframes bb2-sun { 0% { transform: scale(1); opacity: 0.9; } 50% { transform: scale(1.03); opacity: 1; } 100% { transform: scale(0.97); opacity: 0.8; } }
@keyframes bb2-father { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(2px) rotate(1deg); } 50% { transform: translateX(0) rotate(-1deg); } 75% { transform: translateX(-2px) rotate(0deg); } 100% { transform: translateX(0) rotate(1deg); } }
@keyframes bb2-son { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(-1px) rotate(-1deg); } 50% { transform: translateX(0) rotate(1deg); } 75% { transform: translateX(1px) rotate(0deg); } 100% { transform: translateX(0) rotate(-1deg); } }
@keyframes bb2-banner { 0% { transform: rotate(-5deg); } 50% { transform: rotate(5deg); } 100% { transform: rotate(-3deg); } }
@keyframes bb2-cloud-a { 0% { transform: translateX(-60px); } 100% { transform: translateX(120vw); } }
@keyframes bb2-cloud-b { 0% { transform: translateX(40vw); } 100% { transform: translateX(-60vw); } }

/* battlefield-folly-boat - tense sunlit small boat on sea */
.scn-battlefield-folly-boat {
  background: radial-gradient(ellipse at 50% 30%, #f5d87a 0%, #c8963a 30%, #7a6a4a 60%, #4a4a6a 100%);
}
.scn-battlefield-folly-boat .sky {
  position: absolute; top: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #f5e0a0 0%, #d4b060 60%, #9a8a5a 100%);
}
.scn-battlefield-folly-boat .sun {
  position: absolute; top: 2%; left: 40%; width: 20%; height: 35%;
  background: radial-gradient(circle, #ffe680 0%, #f5c842 50%, transparent 100%);
  animation: bb3-sun 6s ease-in-out infinite alternate;
}
.scn-battlefield-folly-boat .sea {
  position: absolute; bottom: 0; left: 0; right: 0; height: 55%;
  background: linear-gradient(180deg, #5a7a8a 0%, #2a4a5a 100%);
  border-radius: 30% 70% 0 0 / 20% 40% 0 0;
}
.scn-battlefield-folly-boat .boat-hull {
  position: absolute; bottom: 20%; left: 45%; width: 50px; height: 20px;
  background: linear-gradient(180deg, #6a4a2a 0%, #3a2a1a 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 20% 20%;
  transform-origin: center bottom;
  animation: bb3-boat 3s ease-in-out infinite;
}
.scn-battlefield-folly-boat .mast {
  position: absolute; bottom: 35%; left: 48%; width: 4px; height: 30px;
  background: linear-gradient(180deg, #5a3a1a 0%, #2a1a0a 100%);
  border-radius: 2px;
}
.scn-battlefield-folly-boat .sail {
  position: absolute; bottom: 25%; left: 47%; width: 20px; height: 25px;
  background: linear-gradient(135deg, #d4a050 0%, #a07830 100%);
  border-radius: 20% 80% 50% 50% / 30% 70% 30% 70%;
  transform-origin: bottom left;
  animation: bb3-sail 5s ease-in-out infinite alternate;
}
.scn-battlefield-folly-boat .wave-1 {
  position: absolute; bottom: 18%; left: 0; right: 0; height: 15%;
  background: linear-gradient(90deg, transparent 0%, #4a7a8a 30%, #5a8a9a 50%, #3a6a7a 70%, transparent 100%);
  filter: blur(3px);
  animation: bb3-wave1 4s ease-in-out infinite;
}
.scn-battlefield-folly-boat .wave-2 {
  position: absolute; bottom: 10%; left: 0; right: 0; height: 12%;
  background: linear-gradient(90deg, transparent 0%, #3a6a7a 30%, #4a7a8a 50%, #2a5a6a 70%, transparent 100%);
  filter: blur(4px);
  animation: bb3-wave2 5s ease-in-out infinite;
}
.scn-battlefield-folly-boat .spray {
  position: absolute; bottom: 28%; left: 42%; width: 20px; height: 10px;
  background: radial-gradient(ellipse, rgba(255,255,255,0.3) 0%, transparent 100%);
  filter: blur(4px);
  animation: bb3-spray 2s ease-in-out infinite;
}
@keyframes bb3-sun { 0% { transform: scale(1); opacity: 0.8; } 50% { transform: scale(1.05); opacity: 1; } 100% { transform: scale(0.95); opacity: 0.7; } }
@keyframes bb3-boat { 0% { transform: translateY(0) rotate(-2deg); } 50% { transform: translateY(3px) rotate(2deg); } 100% { transform: translateY(0) rotate(-1deg); } }
@keyframes bb3-sail { 0% { transform: rotate(0deg) scaleX(1); } 50% { transform: rotate(5deg) scaleX(1.1); } 100% { transform: rotate(-3deg) scaleX(0.9); } }
@keyframes bb3-wave1 { 0% { transform: translateX(0); opacity: 0.5; } 50% { transform: translateX(10px); opacity: 0.8; } 100% { transform: translateX(-10px); opacity: 0.6; } }
@keyframes bb3-wave2 { 0% { transform: translateX(0); opacity: 0.6; } 50% { transform: translateX(-10px); opacity: 0.9; } 100% { transform: translateX(10px); opacity: 0.5; } }
@keyframes bb3-spray { 0% { transform: translateY(0) scaleY(1); opacity: 0.3; } 50% { transform: translateY(-5px) scaleY(1.5); opacity: 0.7; } 100% { transform: translateY(0) scaleY(0.8); opacity: 0.2; } }

/* battlefield-plot-loss - dark sunlit grieving figure under tree */
.scn-battlefield-plot-loss {
  background: radial-gradient(ellipse at 50% 20%, #f5c842 0%, #c8963a 30%, #7a5a1a 60%, #2a1a0a 100%);
}
.scn-battlefield-plot-loss .sky {
  position: absolute; top: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #d4a050 0%, #9a7a3a 100%);
  opacity: 0.5;
}
.scn-battlefield-plot-loss .sun {
  position: absolute; top: 10%; left: 30%; width: 30%; height: 45%;
  background: radial-gradient(circle, #ffe680 0%, #f5c842 60%, transparent 100%);
  animation: bb4-sun 12s ease-in-out infinite alternate;
  mix-blend-mode: overlay;
}
.scn-battlefield-plot-loss .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 60%;
  background: linear-gradient(180deg, #5a3a1a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 0 0 / 30% 30% 0 0;
}
.scn-battlefield-plot-loss .tree-base {
  position: absolute; bottom: 25%; left: 45%; width: 20px; height: 40px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1a0a 100%);
  border-radius: 20% 20% 10% 10%;
}
.scn-battlefield-plot-loss .tree-canopy {
  position: absolute; bottom: 50%; left: 35%; width: 80px; height: 70px;
  background: radial-gradient(ellipse at 50% 60%, #3a4a2a 0%, #1a2a0a 100%);
  border-radius: 50%;
  filter: blur(4px);
  animation: bb4-canopy 7s ease-in-out infinite alternate;
}
.scn-battlefield-plot-loss .figure {
  position: absolute; bottom: 20%; left: 48%; width: 18px; height: 35px;
  background: linear-gradient(180deg, #1a1a0a 0%, #0a0a05 100%);
  border-radius: 50% 50% 45% 45% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bb4-figure 5s ease-in-out infinite;
}
.scn-battlefield-plot-loss .shadow {
  position: absolute; bottom: 15%; left: 38%; width: 50px; height: 20px;
  background: radial-gradient(ellipse, rgba(0,0,0,0.5) 0%, transparent 100%);
  filter: blur(6px);
  animation: bb4-shadow 5s ease-in-out infinite;
}
.scn-battlefield-plot-loss .dust {
  position: absolute; bottom: 10%; left: 20%; right: 20%; height: 10%;
  background: radial-gradient(ellipse at 50% 0%, rgba(200,150,60,0.2) 0%, transparent 100%);
  filter: blur(10px);
  animation: bb4-dust 8s ease-in-out infinite;
}
@keyframes bb4-sun { 0% { transform: scale(1); opacity: 0.6; } 50% { transform: scale(1.05); opacity: 0.9; } 100% { transform: scale(0.95); opacity: 0.5; } }
@keyframes bb4-canopy { 0% { transform: scale(1) translateY(0); } 50% { transform: scale(1.05) translateY(-3px); } 100% { transform: scale(0.95) translateY(2px); } }
@keyframes bb4-figure { 0% { transform: translateX(0) rotate(0deg) scaleY(1); } 25% { transform: translateX(2px) rotate(-2deg) scaleY(1.02); } 50% { transform: translateX(-1px) rotate(1deg) scaleY(0.98); } 75% { transform: translateX(1px) rotate(-1deg) scaleY(1.01); } 100% { transform: translateX(0) rotate(0deg) scaleY(1); } }
@keyframes bb4-shadow { 0% { transform: scaleX(1); opacity: 0.4; } 50% { transform: scaleX(1.1); opacity: 0.6; } 100% { transform: scaleX(0.9); opacity: 0.3; } }
@keyframes bb4-dust { 0% { opacity: 0.2; transform: translateY(0); } 50% { opacity: 0.4; transform: translateY(-4px); } 100% { opacity: 0.1; transform: translateY(2px); } }

.scn-battlefield-coward-horse {
  background: linear-gradient(180deg, #4a6a9a 0%, #7a9ac0 40%, #c0b078 100%),
              radial-gradient(ellipse at 70% 10%, #ffd680 0%, transparent 60%);
}
.scn-battlefield-coward-horse .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #5a7aaa 0%, transparent 100%);
  animation: bch-sky 6s ease-in-out infinite alternate;
}
.scn-battlefield-coward-horse .sun {
  position: absolute; top: 5%; right: 20%; width: 40px; height: 40px;
  background: radial-gradient(circle, #ffd680 0%, #ffa030 60%, transparent 80%);
  border-radius: 50%;
  box-shadow: 0 0 40px 20px rgba(255,160,48,0.5);
  animation: bch-sun 12s ease-in-out infinite alternate;
}
.scn-battlefield-coward-horse .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #6a7a4a 0%, #4a5a2a 100%);
  border-radius: 30% 70% 0 0 / 50% 60% 0 0;
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.4);
}
.scn-battlefield-coward-horse .horse {
  position: absolute; bottom: 20%; left: 50%; width: 80px; height: 60px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #5a4030 0%, #3a2820 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  box-shadow: 0 6px 12px rgba(0,0,0,0.6);
  animation: bch-horse 4s ease-in-out infinite alternate;
}
.scn-battlefield-coward-horse .rider {
  position: absolute; bottom: 37%; left: 50%; width: 20px; height: 30px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: bch-rider 4s ease-in-out infinite alternate;
}
.scn-battlefield-coward-horse .sword {
  position: absolute; bottom: 42%; left: 55%; width: 4px; height: 36px;
  background: linear-gradient(180deg, #c0c0c0 0%, #808080 100%);
  border-radius: 20% 20% 40% 40%;
  transform: rotate(25deg);
  box-shadow: 0 0 6px #aaa;
  animation: bch-sword 2s ease-in-out infinite alternate;
}
.scn-battlefield-coward-horse .dust-a {
  position: absolute; bottom: 18%; left: 30%; width: 30px; height: 20px;
  background: rgba(180,160,120,0.4);
  border-radius: 50%;
  filter: blur(8px);
  animation: bch-dust-a 3s ease-in-out infinite alternate;
}
.scn-battlefield-coward-horse .dust-b {
  position: absolute; bottom: 20%; right: 25%; width: 40px; height: 24px;
  background: rgba(180,160,120,0.3);
  border-radius: 50%;
  filter: blur(10px);
  animation: bch-dust-b 4s ease-in-out infinite alternate;
  animation-delay: 1.5s;
}
@keyframes bch-sky { 0% { opacity: 0.8 } 50% { opacity: 1 } 100% { opacity: 0.7 } }
@keyframes bch-sun { 0% { transform: scale(0.9) translateX(0); opacity: 0.7 } 50% { transform: scale(1.1) translateX(-5px); opacity: 1 } 100% { transform: scale(0.95) translateX(3px); opacity: 0.8 } }
@keyframes bch-horse { 0% { transform: translateX(-50%) translateY(0) rotate(0deg) } 50% { transform: translateX(-50%) translateY(-4px) rotate(1deg) } 100% { transform: translateX(-50%) translateY(0) rotate(-1deg) } }
@keyframes bch-rider { 0% { transform: translateX(-50%) translateY(0) rotate(-2deg) } 50% { transform: translateX(-50%) translateY(-2px) rotate(2deg) } 100% { transform: translateX(-50%) translateY(0) rotate(0deg) } }
@keyframes bch-sword { 0% { transform: rotate(20deg) scaleX(1) } 50% { transform: rotate(30deg) scaleX(1.05) } 100% { transform: rotate(22deg) scaleX(0.95) } }
@keyframes bch-dust-a { 0% { transform: translateX(0) scale(1); opacity: 0.3 } 50% { transform: translateX(-10px) scale(1.2); opacity: 0.5 } 100% { transform: translateX(5px) scale(0.8); opacity: 0.2 } }
@keyframes bch-dust-b { 0% { transform: translateX(0) scale(1); opacity: 0.2 } 50% { transform: translateX(8px) scale(1.3); opacity: 0.4 } 100% { transform: translateX(-3px) scale(0.9); opacity: 0.1 } }

.scn-battlefield-icarus-pride {
  background: linear-gradient(180deg, #6a8ac0 0%, #9ab0d0 40%, #e0c080 100%),
              radial-gradient(ellipse at 60% 15%, #ffe070 0%, transparent 50%);
}
.scn-battlefield-icarus-pride .sky {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(180deg, #7a9ac0 0%, transparent 100%);
  animation: bip-sky 8s ease-in-out infinite alternate;
}
.scn-battlefield-icarus-pride .sun {
  position: absolute; top: 8%; left: 55%; width: 50px; height: 50px;
  background: radial-gradient(circle, #ffe080 0%, #d0a040 60%, transparent 80%);
  border-radius: 50%;
  box-shadow: 0 0 60px 30px rgba(255,224,128,0.5);
  animation: bip-sun 15s ease-in-out infinite alternate;
}
.scn-battlefield-icarus-pride .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #5a6a3a 0%, #3a4a1a 100%);
  border-radius: 40% 60% 0 0 / 60% 40% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.3);
}
.scn-battlefield-icarus-pride .figure-father {
  position: absolute; bottom: 22%; left: 40%; width: 24px; height: 40px;
  background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bip-father 6s ease-in-out infinite alternate;
}
.scn-battlefield-icarus-pride .figure-son {
  position: absolute; bottom: 22%; left: 52%; width: 20px; height: 36px;
  background: linear-gradient(180deg, #2a2a3a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bip-son 6s ease-in-out infinite alternate;
  animation-delay: 0.3s;
}
.scn-battlefield-icarus-pride .shield {
  position: absolute; bottom: 28%; left: 36%; width: 16px; height: 20px;
  background: radial-gradient(circle at 40% 40%, #b0a080 0%, #6a5a40 100%);
  border-radius: 30% 30% 40% 40% / 40% 40% 30% 30%;
  box-shadow: 0 2px 6px rgba(0,0,0,0.5);
  animation: bip-shield 4s ease-in-out infinite alternate;
}
.scn-battlefield-icarus-pride .wing {
  position: absolute; bottom: 35%; left: 50%; width: 60px; height: 30px;
  background: linear-gradient(135deg, #ffd080 0%, transparent 70%);
  border-radius: 50% 10% 50% 10%;
  transform-origin: left center;
  opacity: 0.7;
  filter: blur(2px);
  animation: bip-wing 5s ease-in-out infinite alternate;
}
@keyframes bip-sky { 0% { opacity: 0.7 } 50% { opacity: 1 } 100% { opacity: 0.8 } }
@keyframes bip-sun { 0% { transform: scale(0.95) rotate(0deg) } 50% { transform: scale(1.1) rotate(5deg) } 100% { transform: scale(1) rotate(-3deg) } }
@keyframes bip-father { 0% { transform: translateX(0) rotate(-1deg) } 50% { transform: translateX(3px) rotate(1deg) } 100% { transform: translateX(0) rotate(-2deg) } }
@keyframes bip-son { 0% { transform: translateX(0) rotate(1deg) } 50% { transform: translateX(-2px) rotate(-1deg) } 100% { transform: translateX(0) rotate(0deg) } }
@keyframes bip-shield { 0% { transform: translateY(0) scale(1) } 50% { transform: translateY(-2px) scale(1.05) } 100% { transform: translateY(0) scale(0.95) } }
@keyframes bip-wing { 0% { transform: rotate(-5deg) scaleX(0.9) } 50% { transform: rotate(5deg) scaleX(1.1) } 100% { transform: rotate(-3deg) scaleX(1) } }

.scn-battlefield-young-talbot-valor {
  background: linear-gradient(180deg, #5a7aaa 0%, #8aacd0 50%, #d0b880 100%),
              radial-gradient(ellipse at 50% 20%, #ffd080 0%, transparent 60%);
}
.scn-battlefield-young-talbot-valor .sky {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #6a8aba 0%, transparent 100%);
  animation: ytv-sky 7s ease-in-out infinite alternate;
}
.scn-battlefield-young-talbot-valor .sun {
  position: absolute; top: 10%; right: 25%; width: 45px; height: 45px;
  background: radial-gradient(circle, #ffe080 0%, #d0a040 60%, transparent 80%);
  border-radius: 50%;
  box-shadow: 0 0 50px 25px rgba(255,224,128,0.5);
  animation: ytv-sun 18s ease-in-out infinite alternate;
}
.scn-battlefield-young-talbot-valor .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #5a6a3a 0%, #2a3a1a 100%);
  border-radius: 30% 70% 0 0 / 50% 60% 0 0;
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.4);
}
.scn-battlefield-young-talbot-valor .figure-young {
  position: absolute; bottom: 30%; left: 40%; width: 28px; height: 44px;
  background: linear-gradient(180deg, #2a2a3a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ytv-figure 4s ease-in-out infinite alternate;
}
.scn-battlefield-young-talbot-valor .sword {
  position: absolute; bottom: 42%; left: 46%; width: 5px; height: 40px;
  background: linear-gradient(180deg, #c0c0c0 0%, #808080 100%);
  border-radius: 20% 20% 40% 40%;
  transform: rotate(-15deg);
  box-shadow: 0 0 8px #aaa;
  animation: ytv-sword 2.5s ease-in-out infinite alternate;
}
.scn-battlefield-young-talbot-valor .lion-head {
  position: absolute; bottom: 35%; left: 35%; width: 24px; height: 20px;
  background: radial-gradient(circle at 30% 30%, #a07050 0%, #5a3a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 0 2px 6px rgba(0,0,0,0.5);
  animation: ytv-lion 3s ease-in-out infinite alternate;
}
.scn-battlefield-young-talbot-valor .banner {
  position: absolute; bottom: 40%; left: 52%; width: 16px; height: 26px;
  background: linear-gradient(180deg, #7a5a3a 0%, #4a2a1a 100%);
  border-radius: 20% 20% 30% 30% / 30% 30% 20% 20%;
  transform-origin: bottom center;
  animation: ytv-banner 5s ease-in-out infinite alternate;
}
@keyframes ytv-sky { 0% { opacity: 0.8 } 50% { opacity: 1 } 100% { opacity: 0.7 } }
@keyframes ytv-sun { 0% { transform: scale(0.9) rotate(0deg) } 50% { transform: scale(1.1) rotate(3deg) } 100% { transform: scale(1) rotate(-2deg) } }
@keyframes ytv-figure { 0% { transform: translateX(0) rotate(-2deg) scaleY(1) } 50% { transform: translateX(5px) rotate(2deg) scaleY(1.05) } 100% { transform: translateX(0) rotate(-1deg) scaleY(0.95) } }
@keyframes ytv-sword { 0% { transform: rotate(-10deg) scaleX(1) } 50% { transform: rotate(-20deg) scaleX(1.1) } 100% { transform: rotate(-12deg) scaleX(0.9) } }
@keyframes ytv-lion { 0% { transform: translateY(0) scale(1) } 50% { transform: translateY(-2px) scale(1.05) } 100% { transform: translateY(0) scale(0.95) } }
@keyframes ytv-banner { 0% { transform: rotate(-3deg) scaleX(1) } 50% { transform: rotate(3deg) scaleX(1.1) } 100% { transform: rotate(-1deg) scaleX(0.95) } }

.scn-battlefield-sea-of-blood {
  background: linear-gradient(180deg, #2a2a3a 0%, #3a2a2a 50%, #4a2a1a 100%),
              radial-gradient(ellipse at 50% 100%, #5a2a1a 0%, transparent 70%);
}
.scn-battlefield-sea-of-blood .sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 100%);
  animation: sob-sky 10s ease-in-out infinite alternate;
}
.scn-battlefield-sea-of-blood .ground-blood {
  position: absolute; bottom: 0; left: 0; right: 0; height: 55%;
  background: linear-gradient(180deg, #5a2a1a 0%, #3a1a0a 100%);
  border-radius: 50% 50% 0 0 / 80% 80% 0 0;
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.6);
}
.scn-battlefield-sea-of-blood .blood-1 {
  position: absolute; bottom: 30%; left: 0; right: 0; height: 20%;
  background: linear-gradient(90deg, transparent 0%, #6a3a2a 20%, transparent 40%, #6a3a2a 60%, transparent 100%);
  background-size: 200% 100%;
  filter: blur(4px);
  animation: sob-wave-1 8s ease-in-out infinite alternate;
}
.scn-battlefield-sea-of-blood .blood-2 {
  position: absolute; bottom: 20%; left: 0; right: 0; height: 15%;
  background: linear-gradient(90deg, transparent 0%, #4a2a1a 30%, transparent 50%, #4a2a1a 70%, transparent 100%);
  background-size: 200% 100%;
  filter: blur(6px);
  animation: sob-wave-2 10s ease-in-out infinite alternate;
  animation-delay: 2s;
}
.scn-battlefield-sea-of-blood .fallen-figure {
  position: absolute; bottom: 15%; left: 45%; width: 24px; height: 36px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: rotate(90deg);
  box-shadow: 0 2px 8px rgba(0,0,0,0.6);
  animation: sob-fallen 5s ease-in-out infinite alternate;
}
.scn-battlefield-sea-of-blood .helmet {
  position: absolute; bottom: 22%; left: 50%; width: 18px; height: 14px;
  background: linear-gradient(180deg, #6a5a4a 0%, #3a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 40% 40% 60% 60%;
  box-shadow: 0 2px 6px rgba(0,0,0,0.5);
  animation: sob-helmet 4s ease-in-out infinite alternate;
}
.scn-battlefield-sea-of-blood .sword {
  position: absolute; bottom: 25%; left: 42%; width: 4px; height: 32px;
  background: linear-gradient(180deg, #888 0%, #444 100%);
  border-radius: 20% 20% 40% 40%;
  transform: rotate(40deg);
  box-shadow: 0 0 4px #666;
  animation: sob-sword 3s ease-in-out infinite alternate;
}
@keyframes sob-sky { 0% { opacity: 0.6 } 50% { opacity: 0.8 } 100% { opacity: 0.5 } }
@keyframes sob-wave-1 { 0% { background-position: 0% 50% } 50% { background-position: 100% 50% } 100% { background-position: 50% 50% } }
@keyframes sob-wave-2 { 0% { background-position: 100% 50% } 50% { background-position: 0% 50% } 100% { background-position: 50% 50% } }
@keyframes sob-fallen { 0% { transform: rotate(85deg) translateY(0) } 50% { transform: rotate(95deg) translateY(-3px) } 100% { transform: rotate(90deg) translateY(0) } }
@keyframes sob-helmet { 0% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(-2px) rotate(5deg) } 100% { transform: translateY(0) rotate(-3deg) } }
@keyframes sob-sword { 0% { transform: rotate(35deg) scaleX(1) } 50% { transform: rotate(45deg) scaleX(1.05) } 100% { transform: rotate(38deg) scaleX(0.95) } }

.scn-basset-threatens { background: linear-gradient(180deg, #d4c8a8 0%, #b8a88a 50%, #8a7a5a 100%), radial-gradient(ellipse at 60% 30%, #f0e0b0 0%, transparent 70%); }
.scn-basset-threatens .wall { position:absolute; inset:0 0 30% 0; background: linear-gradient(90deg, #c8b898 0%, #e0d0b0 50%, #c8b898 100%); }
.scn-basset-threatens .floor { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #8a7a5a 0%, #6a5a3a 100%); }
.scn-basset-threatens .villain { position:absolute; bottom:32%; left:15%; width:60px; height:160px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 40% 40% 20% 20% / 60% 60% 30% 30%; transform-origin: bottom center; animation: bt-villain 4s ease-in-out infinite alternate; box-shadow: -8px 0 12px rgba(0,0,0,.3); }
.scn-basset-threatens .hero { position:absolute; bottom:32%; right:20%; width:50px; height:150px; background: linear-gradient(180deg, #6a5a3a 0%, #3a2a1a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: bt-hero 5s ease-in-out infinite; }
.scn-basset-threatens .sword { position:absolute; bottom:38%; left:22%; width:8px; height:100px; background: linear-gradient(180deg, #d0c0a0 0%, #a09070 100%); border-radius: 4px; transform: rotate(-15deg); transform-origin: bottom; box-shadow: 0 4px 8px rgba(0,0,0,.4); animation: bt-sword 2s ease-in-out infinite alternate; }
.scn-basset-threatens .window-light { position:absolute; top:5%; left:10%; width:80px; height:100px; background: radial-gradient(ellipse, rgba(255,240,200,.6) 0%, transparent 70%); filter: blur(4px); animation: bt-light 8s ease-in-out infinite alternate; }
.scn-basset-threatens .shadow { position:absolute; bottom:28%; left:12%; width:100px; height:20px; background: rgba(0,0,0,.2); border-radius: 50%; filter: blur(6px); animation: bt-shadow 4s ease-in-out infinite alternate; }
.scn-basset-threatens .dust { position:absolute; top:20%; left:30%; width:4px; height:4px; background: rgba(255,255,200,.5); border-radius: 50%; box-shadow: 0 0 6px 2px rgba(255,255,200,.4); animation: bt-dust 12s linear infinite; }
@keyframes bt-villain { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-2px) rotate(2deg); } 100% { transform: translateY(1px) rotate(-1deg); } }
@keyframes bt-hero { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-3px) rotate(-1deg); } 100% { transform: translateY(1px) rotate(1deg); } }
@keyframes bt-sword { 0% { transform: rotate(-15deg) scaleX(1); } 50% { transform: rotate(-10deg) scaleX(1.05); } 100% { transform: rotate(-18deg) scaleX(1); } }
@keyframes bt-light { 0% { opacity: .6; } 50% { opacity: 1; } 100% { opacity: .7; } }
@keyframes bt-shadow { 0% { transform: scaleX(1) translateX(0); } 50% { transform: scaleX(1.1) translateX(5px); } 100% { transform: scaleX(0.9) translateX(-3px); } }
@keyframes bt-dust { 0% { transform: translate(0, 0) scale(1); opacity: .6; } 50% { transform: translate(40px, -20px) scale(0.8); opacity: .2; } 100% { transform: translate(80px, -40px) scale(0.5); opacity: 0; } }

.scn-henry-crowned-paris { background: linear-gradient(180deg, #c8b898 0%, #a09070 30%, #7a6a4a 70%, #5a4a2a 100%), radial-gradient(ellipse at 50% 20%, #f0e0b0 0%, transparent 60%); }
.scn-henry-crowned-paris .throne-wall { position:absolute; inset:0 0 25% 0; background: linear-gradient(180deg, #b8a888 0%, #9a8a6a 100%); box-shadow: inset 0 0 40px rgba(0,0,0,.2); }
.scn-henry-crowned-paris .floor { position:absolute; bottom:0; left:0; right:0; height:25%; background: linear-gradient(180deg, #6a5a3a 0%, #4a3a1a 100%); box-shadow: inset 0 10px 20px rgba(0,0,0,.3); }
.scn-henry-crowned-paris .throne { position:absolute; bottom:30%; left:50%; width:80px; height:120px; transform:translateX(-50%); background: linear-gradient(180deg, #8a7a5a 0%, #6a5a3a 100%); border-radius: 20% 20% 10% 10%; box-shadow: 0 8px 16px rgba(0,0,0,.5); }
.scn-henry-crowned-paris .king { position:absolute; bottom:36%; left:50%; width:50px; height:100px; transform:translateX(-50%); background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; animation: hcp-king 6s ease-in-out infinite; }
.scn-henry-crowned-paris .bishop { position:absolute; bottom:32%; left:60%; width:40px; height:130px; background: linear-gradient(180deg, #7a6a5a 0%, #4a3a2a 100%); border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%; transform-origin: bottom; animation: hcp-bishop 8s ease-in-out infinite; }
.scn-henry-crowned-paris .courtier { position:absolute; bottom:28%; width:30px; height:110px; background: linear-gradient(180deg, #6a5a4a 0%, #3a2a1a 100%); border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%; }
.scn-henry-crowned-paris .courtier.left { left:20%; animation: hcp-courtier-l 9s ease-in-out infinite; }
.scn-henry-crowned-paris .courtier.right { right:20%; animation: hcp-courtier-r 7s ease-in-out infinite; }
.scn-henry-crowned-paris .crown-glow { position:absolute; bottom:52%; left:50%; width:30px; height:20px; transform:translateX(-50%); background: radial-gradient(ellipse, #f0d080 0%, #d0b060 50%, transparent 100%); border-radius: 50%; box-shadow: 0 0 30px 10px rgba(240,208,128,.5); animation: hcp-glow 4s ease-in-out infinite alternate; }
.scn-henry-crowned-paris .chandelier { position:absolute; top:5%; left:45%; width:40px; height:60px; background: linear-gradient(180deg, #b8a888 0%, #8a7a5a 100%); border-radius: 10% 10% 50% 50%; clip-path: polygon(30% 0%, 70% 0%, 100% 100%, 0% 100%); filter: blur(2px); animation: hcp-chandelier 15s ease-in-out infinite alternate; }
@keyframes hcp-king { 0% { transform: translateX(-50%) translateY(0) rotate(0deg); } 50% { transform: translateX(-50%) translateY(-2px) rotate(1deg); } 100% { transform: translateX(-50%) translateY(0) rotate(0deg); } }
@keyframes hcp-bishop { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-1px) rotate(2deg); } 100% { transform: translateY(1px) rotate(-2deg); } }
@keyframes hcp-courtier-l { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-1px) rotate(-1deg); } 100% { transform: translateY(0) rotate(1deg); } }
@keyframes hcp-courtier-r { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-1px) rotate(1deg); } 100% { transform: translateY(0) rotate(-1deg); } }
@keyframes hcp-glow { 0% { opacity: .7; transform: translateX(-50%) scale(1); } 50% { opacity: 1; transform: translateX(-50%) scale(1.2); } 100% { opacity: .8; transform: translateX(-50%) scale(.9); } }
@keyframes hcp-chandelier { 0% { transform: translateY(0) rotate(-2deg); } 50% { transform: translateY(-2px) rotate(2deg); } 100% { transform: translateY(1px) rotate(-1deg); } }

.scn-court-fastolfe-degradation { background: linear-gradient(180deg, #b8a888 0%, #9a8a6a 30%, #7a6a4a 60%, #5a4a2a 100%), radial-gradient(ellipse at 50% 40%, #e0d0b0 0%, transparent 70%); }
.scn-court-fastolfe-degradation .column { position:absolute; top:0; bottom:20%; width:30px; background: linear-gradient(90deg, #a09070 0%, #c8b898 50%, #a09070 100%); box-shadow: inset -2px 0 8px rgba(0,0,0,.2); }
.scn-court-fastolfe-degradation .column.left { left:15%; }
.scn-court-fastolfe-degradation .column.right { right:15%; }
.scn-court-fastolfe-degradation .wall-back { position:absolute; inset:0 0 20% 0; background: linear-gradient(180deg, #b8a888 0%, #9a8a6a 100%); }
.scn-court-fastolfe-degradation .floor { position:absolute; bottom:0; left:0; right:0; height:20%; background: linear-gradient(180deg, #6a5a3a 0%, #4a3a1a 100%); }
.scn-court-fastolfe-degradation .accuser { position:absolute; bottom:28%; left:35%; width:50px; height:140px; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 40% 40% 20% 20% / 60% 60% 30% 30%; transform-origin: bottom; animation: cfd-accuser 3s ease-in-out infinite alternate; }
.scn-court-fastolfe-degradation .fastolfe { position:absolute; bottom:25%; left:50%; width:40px; height:100px; transform:translateX(-50%); background: linear-gradient(180deg, #6a5a4a 0%, #2a1a0a 100%); border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%; animation: cfd-fastolfe 4s ease-in-out infinite; }
.scn-court-fastolfe-degradation .garter { position:absolute; bottom:35%; left:48%; width:20px; height:6px; background: #702243; border-radius: 40%; box-shadow: 0 2px 4px rgba(0,0,0,.5); animation: cfd-garter 2s ease-in-out infinite; }
.scn-court-fastolfe-degradation .witness { position:absolute; bottom:28%; right:30%; width:30px; height:120px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%; animation: cfd-witness 5s ease-in-out infinite alternate; }
@keyframes cfd-accuser { 0% { transform: translateY(0) rotate(2deg); } 50% { transform: translateY(-3px) rotate(-1deg); } 100% { transform: translateY(1px) rotate(3deg); } }
@keyframes cfd-fastolfe { 0% { transform: translateX(-50%) translateY(0) rotate(0deg); } 50% { transform: translateX(-50%) translateY(-2px) rotate(-2deg); } 100% { transform: translateX(-50%) translateY(1px) rotate(2deg); } }
@keyframes cfd-garter { 0% { transform: translateY(0) scaleX(1); opacity: .8; } 50% { transform: translateY(-3px) scaleX(1.3); opacity: 1; } 100% { transform: translateY(1px) scaleX(0.8); opacity: .6; } }
@keyframes cfd-witness { 0% { transform: translateY(0) rotate(-1deg); } 50% { transform: translateY(-1px) rotate(1deg); } 100% { transform: translateY(1px) rotate(-2deg); } }

.scn-court-fastolfe-plea { background: linear-gradient(180deg, #c8b898 0%, #a09070 30%, #7a6a4a 60%, #5a4a2a 100%), radial-gradient(ellipse at 30% 40%, #e8d8b8 0%, transparent 70%); }
.scn-court-fastolfe-plea .step { position:absolute; bottom:0; left:20%; right:20%; height:15%; background: linear-gradient(180deg, #6a5a3a 0%, #4a3a1a 100%); border-radius: 10% 10% 0 0; box-shadow: 0 -4px 8px rgba(0,0,0,.3); }
.scn-court-fastolfe-plea .king-throne { position:absolute; bottom:30%; left:50%; width:70px; height:130px; transform:translateX(-50%); background: linear-gradient(180deg, #8a7a5a 0%, #5a4a2a 100%); border-radius: 20% 20% 10% 10%; box-shadow: 0 8px 16px rgba(0,0,0,.5); }
.scn-court-fastolfe-plea .fastolfe-kneel { position:absolute; bottom:5%; left:50%; width:40px; height:80px; transform:translateX(-50%); background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 30% 30% 40% 40% / 50% 50% 40% 40%; transform-origin: bottom; animation: cfp-kneel 4s ease-in-out infinite; }
.scn-court-fastolfe-plea .guard { position:absolute; bottom:10%; width:35px; height:130px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%; }
.scn-court-fastolfe-plea .guard.left { left:25%; animation: cfp-guard-l 6s ease-in-out infinite alternate; }
.scn-court-fastolfe-plea .guard.right { right:25%; animation: cfp-guard-r 6s ease-in-out infinite alternate; }
.scn-court-fastolfe-plea .torch { position:absolute; top:5%; left:20%; width:10px; height:20px; background: radial-gradient(ellipse, #f0c060 0%, #d08020 60%, transparent 100%); border-radius: 50%; box-shadow: 0 0 30px 10px rgba(240,192,96,.5), 0 0 60px 20px rgba(208,128,32,.3); animation: cfp-torch 2s ease-in-out infinite alternate; }
.scn-court-fastolfe-plea .shadow { position:absolute; bottom:10%; left:40%; width:60px; height:15px; background: rgba(0,0,0,.2); border-radius: 50%; filter: blur(5px); animation: cfp-shadow 4s ease-in-out infinite alternate; }
@keyframes cfp-kneel { 0% { transform: translateX(-50%) translateY(0) rotate(-2deg); } 50% { transform: translateX(-50%) translateY(-1px) rotate(0deg); } 100% { transform: translateX(-50%) translateY(2px) rotate(2deg); } }
@keyframes cfp-guard-l { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-1px) rotate(1deg); } 100% { transform: translateY(1px) rotate(-1deg); } }
@keyframes cfp-guard-r { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-1px) rotate(-1deg); } 100% { transform: translateY(1px) rotate(1deg); } }
@keyframes cfp-torch { 0% { opacity: .7; transform: scaleY(1); } 50% { opacity: 1; transform: scaleY(1.2); } 100% { opacity: .6; transform: scaleY(0.9); } }
@keyframes cfp-shadow { 0% { transform: scaleX(1) translateX(0); opacity: .5; } 50% { transform: scaleX(1.2) translateX(3px); opacity: .7; } 100% { transform: scaleX(0.8) translateX(-2px); opacity: .4; } }

.scn-somerset-rose-threat {
  background: linear-gradient(180deg, #f9e4b7 0%, #d4a85a 40%, #8a5a2a 100%), radial-gradient(ellipse at 70% 20%, #fff4d4 0%, transparent 50%);
}
.scn-somerset-rose-threat .sky { position:absolute; inset:0 0 60% 0; background: linear-gradient(180deg, #ffe8c0 0%, #d4a85a 100%); animation: sr1-sky 8s ease-in-out infinite alternate; }
.scn-somerset-rose-threat .sun { position:absolute; top:8%; left:72%; width:60px; height:60px; background: radial-gradient(circle, #fff8e0 0%, #ffd580 50%, transparent 80%); border-radius:50%; filter: blur(4px); animation: sr1-sun 6s ease-in-out infinite; }
.scn-somerset-rose-threat .rose-stem { position:absolute; bottom:18%; left:45%; width:8px; height:120px; background: linear-gradient(180deg, #3a5a2a 0%, #1a3a1a 100%); border-radius:4px; transform-origin: bottom center; animation: sr1-stem 5s ease-in-out infinite; }
.scn-somerset-rose-threat .rose.bloom { position:absolute; bottom:58%; left:42%; width:70px; height:70px; background: radial-gradient(circle at 40% 40%, #c8553d 0%, #a0461a 40%, #5e1a1d 80%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; box-shadow: 0 0 30px 10px rgba(200,85,61,0.5); filter: blur(1px); animation: sr1-rose 4s ease-in-out infinite alternate; }
.scn-somerset-rose-threat .thorn { position:absolute; width:12px; height:24px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); clip-path: polygon(50% 0%, 0% 100%, 100% 100%); }
.scn-somerset-rose-threat .thorn-a { bottom:35%; left:48%; transform: rotate(-20deg); animation: sr1-thorn-a 3s ease-in-out infinite; }
.scn-somerset-rose-threat .thorn-b { bottom:25%; left:46%; transform: rotate(15deg); animation: sr1-thorn-b 3.5s ease-in-out infinite; }
.scn-somerset-rose-threat .hand { position:absolute; bottom:22%; left:38%; width:40px; height:60px; background: linear-gradient(180deg, #d4a85a 0%, #8a5a2a 100%); border-radius: 30% 30% 50% 50% / 40% 40% 60% 60%; transform: rotate(10deg); box-shadow: inset 0 -4px 10px rgba(0,0,0,0.4); animation: sr1-hand 6s ease-in-out infinite; }
.scn-somerset-rose-threat .shadow-ground { position:absolute; bottom:0; left:0; right:0; height:25%; background: linear-gradient(180deg, rgba(0,0,0,0.2) 0%, transparent 100%); animation: sr1-shadow 7s ease-in-out infinite; }
@keyframes sr1-sky { 0% { opacity:0.7; } 50% { opacity:1; } 100% { opacity:0.8; } }
@keyframes sr1-sun { 0% { transform: scale(1); } 50% { transform: scale(1.05); filter: blur(3px); } 100% { transform: scale(1); } }
@keyframes sr1-stem { 0% { transform: rotate(-2deg); } 50% { transform: rotate(2deg); } 100% { transform: rotate(-2deg); } }
@keyframes sr1-rose { 0% { transform: scale(1) rotate(-3deg); } 50% { transform: scale(1.05) rotate(3deg); } 100% { transform: scale(1) rotate(-1deg); } }
@keyframes sr1-thorn-a { 0%,100% { transform: rotate(-20deg) translateY(0); } 50% { transform: rotate(-25deg) translateY(-2px); } }
@keyframes sr1-thorn-b { 0%,100% { transform: rotate(15deg) translateY(0); } 50% { transform: rotate(10deg) translateY(-2px); } }
@keyframes sr1-hand { 0% { transform: rotate(10deg) translateX(0); } 50% { transform: rotate(5deg) translateX(3px); } 100% { transform: rotate(10deg) translateX(0); } }
@keyframes sr1-shadow { 0%,100% { opacity:0.3; } 50% { opacity:0.5; } }

.scn-somerset-exits {
  background: linear-gradient(180deg, #2a1a0a 0%, #5a3a1a 40%, #8a6a3a 100%), radial-gradient(ellipse at 30% 60%, #d4a85a 0%, transparent 60%);
}
.scn-somerset-exits .wall-left { position:absolute; top:0; left:0; width:30%; height:100%; background: linear-gradient(90deg, #3a2a1a 0%, #5a3a1a 100%); box-shadow: inset -10px 0 20px rgba(0,0,0,0.5); animation: se2-wall-left 10s ease-in-out infinite; }
.scn-somerset-exits .wall-right { position:absolute; top:0; right:0; width:30%; height:100%; background: linear-gradient(90deg, #5a3a1a 0%, #3a2a1a 100%); box-shadow: inset 10px 0 20px rgba(0,0,0,0.5); animation: se2-wall-right 10s ease-in-out infinite alternate; }
.scn-somerset-exits .doorway { position:absolute; bottom:0; left:35%; width:30%; height:70%; background: linear-gradient(180deg, #1a0a00 0%, #2a1a0a 100%); border-radius: 10% 10% 0 0; box-shadow: inset 0 10px 20px rgba(0,0,0,0.8); animation: se2-doorway 5s ease-in-out infinite; }
.scn-somerset-exits .figure-silhouette { position:absolute; bottom:20%; left:45%; width:30px; height:80px; background: linear-gradient(180deg, #0a0a00 0%, #1a1a00 100%); border-radius: 30% 30% 40% 40% / 50% 50% 40% 40%; transform-origin: bottom center; animation: se2-figure 4s ease-in-out infinite; }
.scn-somerset-exits .floor { position:absolute; bottom:0; left:0; right:0; height:20%; background: linear-gradient(180deg, #5a3a1a 0%, #3a2a1a 100%); box-shadow: inset 0 8px 20px rgba(0,0,0,0.6); }
.scn-somerset-exits .shadow-figure { position:absolute; bottom:5%; left:42%; width:50px; height:15px; background: rgba(0,0,0,0.3); border-radius:50%; filter: blur(6px); animation: se2-shadow 4s ease-in-out infinite; }
.scn-somerset-exits .dust { position:absolute; width:6px; height:6px; background: rgba(200,180,150,0.5); border-radius:50%; filter: blur(2px); }
.scn-somerset-exits .particle-a { top:60%; left:50%; animation: se2-dust-a 8s linear infinite; }
.scn-somerset-exits .particle-b { top:70%; left:55%; animation: se2-dust-b 10s linear infinite; }
@keyframes se2-wall-left { 0%,100% { opacity:0.8; } 50% { opacity:1; } }
@keyframes se2-wall-right { 0%,100% { opacity:0.8; } 50% { opacity:1; } }
@keyframes se2-doorway { 0%,100% { transform: scaleY(1); } 50% { transform: scaleY(0.98); } }
@keyframes se2-figure { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(10px) rotate(-2deg); } 50% { transform: translateX(20px) rotate(0deg); } 75% { transform: translateX(30px) rotate(2deg); } 100% { transform: translateX(40px) rotate(0deg); opacity:0; } }
@keyframes se2-shadow { 0% { opacity:0.3; transform: scaleX(1); } 50% { opacity:0.5; transform: scaleX(1.2); } 100% { opacity:0.1; transform: scaleX(0.8); } }
@keyframes se2-dust-a { 0% { transform: translateY(0) translateX(0); opacity:0; } 20% { opacity:0.5; } 100% { transform: translateY(-60px) translateX(-20px); opacity:0; } }
@keyframes se2-dust-b { 0% { transform: translateY(0) translateX(0); opacity:0; } 30% { opacity:0.4; } 100% { transform: translateY(-80px) translateX(30px); opacity:0; } }

.scn-richard-braved {
  background: linear-gradient(180deg, #3a2a1a 0%, #8a5a2a 40%, #d4a85a 100%), radial-gradient(ellipse at 60% 30%, #ffd580 0%, transparent 50%);
}
.scn-richard-braved .sky-storm { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #2a1a0a 0%, #5a3a1a 50%, transparent 100%); animation: rb3-sky 6s ease-in-out infinite alternate; }
.scn-richard-braved .sun-burst { position:absolute; top:10%; left:55%; width:80px; height:80px; background: radial-gradient(circle, #fff4d4 0%, #ffd580 30%, transparent 70%); border-radius:50%; filter: blur(6px); animation: rb3-sun 4s ease-in-out infinite; }
.scn-richard-braved .figure-richard { position:absolute; bottom:25%; left:40%; width:40px; height:90px; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 30% 30% 40% 40% / 50% 50% 40% 40%; transform-origin: bottom center; box-shadow: -5px 0 15px rgba(0,0,0,0.5); animation: rb3-figure 5s ease-in-out infinite; }
.scn-richard-braved .cloak { position:absolute; bottom:28%; left:38%; width:70px; height:60px; background: linear-gradient(180deg, #5e1a1d 0%, #702243 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; transform-origin: top center; clip-path: polygon(0 0, 100% 10%, 80% 100%, 20% 100%); animation: rb3-cloak 3s ease-in-out infinite alternate; }
.scn-richard-braved .sword-hand { position:absolute; bottom:30%; left:44%; width:18px; height:40px; background: linear-gradient(180deg, #d4a85a 0%, #8a5a2a 100%); border-radius: 10% 10% 20% 20%; transform: rotate(15deg); box-shadow: 2px 0 4px rgba(0,0,0,0.4); animation: rb3-sword 2s ease-in-out infinite; }
.scn-richard-braved .banner { position:absolute; top:20%; left:20%; width:60px; height:90px; background: linear-gradient(180deg, #c8553d 0%, #a0461a 100%); border-radius: 5% 5% 20% 20%; transform-origin: top left; animation: rb3-banner 4s ease-in-out infinite; }
.scn-richard-braved .ground-stones { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 10% 10% 0 0; box-shadow: inset 0 10px 20px rgba(0,0,0,0.5); }
.scn-richard-braved .lightning.flash { position:absolute; top:5%; left:30%; width:100px; height:4px; background: #fff8e0; filter: blur(2px); animation: rb3-lightning 8s ease-in-out infinite; }
@keyframes rb3-sky { 0% { opacity:0.7; } 50% { opacity:1; } 100% { opacity:0.8; } }
@keyframes rb3-sun { 0% { transform: scale(1); } 50% { transform: scale(1.03); filter: blur(5px); } 100% { transform: scale(1); } }
@keyframes rb3-figure { 0%,100% { transform: translateY(0) rotate(-1deg); } 50% { transform: translateY(-3px) rotate(1deg); } }
@keyframes rb3-cloak { 0% { transform: rotate(0deg) scaleX(1); } 100% { transform: rotate(5deg) scaleX(0.95); } }
@keyframes rb3-sword { 0%,100% { transform: rotate(15deg) scaleY(1); } 50% { transform: rotate(20deg) scaleY(1.05); } }
@keyframes rb3-banner { 0% { transform: rotate(0deg) scaleY(1); } 50% { transform: rotate(8deg) scaleY(1.1); } 100% { transform: rotate(-5deg) scaleY(0.95); } }
@keyframes rb3-lightning { 0%,90%,100% { opacity:0; } 70% { opacity:0.8; } 75% { opacity:1; } 80% { opacity:0.2; } }

.scn-warwick-prophecy-roses {
  background: linear-gradient(180deg, #0a0a1a 0%, #1a1a3e 40%, #2a2a4e 100%), radial-gradient(ellipse at 50% 80%, #4a3a6e 0%, transparent 60%);
}
.scn-warwick-prophecy-roses .sky-night { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #0a0a2a 0%, #1a1a3e 100%); animation: wp4-sky 12s ease-in-out infinite alternate; }
.scn-warwick-prophecy-roses .moon { position:absolute; top:5%; left:70%; width:45px; height:45px; background: radial-gradient(circle, #c0c0d0 0%, #6a6a8a 100%); border-radius:50%; box-shadow: 0 0 30px 10px rgba(106,106,138,0.4); animation: wp4-moon 8s ease-in-out infinite; }
.scn-warwick-prophecy-roses .garden-wall { position:absolute; bottom:30%; left:20%; right:20%; height:70%; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 20% 20% 0 0; box-shadow: inset 0 10px 30px rgba(0,0,0,0.6); animation: wp4-wall 6s ease-in-out infinite; }
.scn-warwick-prophecy-roses .rose-red { position:absolute; bottom:45%; left:35%; width:30px; height:30px; background: radial-gradient(circle at 30% 30%, #c8553d 0%, #a0461a 60%, #5e1a1d 100%); border-radius:50%; box-shadow: 0 0 20px 8px rgba(200,85,61,0.4); animation: wp4-redrose 4s ease-in-out infinite; }
.scn-warwick-prophecy-roses .rose-white { position:absolute; bottom:50%; right:35%; width:30px; height:30px; background: radial-gradient(circle at 30% 30%, #f0f0f0 0%, #c0c0c0 60%, #8a8a8a 100%); border-radius:50%; box-shadow: 0 0 20px 8px rgba(200,200,200,0.3); animation: wp4-whiterose 4s ease-in-out infinite alternate; }
.scn-warwick-prophecy-roses .vines { position:absolute; bottom:30%; left:30%; right:30%; height:40%; background: repeating-linear-gradient(0deg, transparent, transparent 20px, #3a5a2a 20px, #4a6a3a 22px); mask-image: linear-gradient(180deg, #000 0%, transparent 100%); animation: wp4-vines 10s linear infinite; }
.scn-warwick-prophecy-roses .tombstone { position:absolute; bottom:20%; left:45%; width:50px; height:60px; background: linear-gradient(180deg, #6a6a7a 0%, #4a4a5a 100%); border-radius: 10% 10% 5% 5%; box-shadow: 0 4px 10px rgba(0,0,0,0.5); animation: wp4-tomb 8s ease-in-out infinite; }
.scn-warwick-prophecy-roses .skull.shadow { position:absolute; bottom:25%; left:48%; width:20px; height:20px; background: rgba(0,0,0,0.3); border-radius:50% 50% 40% 40%; filter: blur(4px); animation: wp4-skull 6s ease-in-out infinite; }
@keyframes wp4-sky { 0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.7; } }
@keyframes wp4-moon { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-5px); } }
@keyframes wp4-wall { 0% { transform: scaleY(1); } 50% { transform: scaleY(0.97); } 100% { transform: scaleY(1); } }
@keyframes wp4-redrose { 0%,100% { transform: scale(1) rotate(0deg); } 50% { transform: scale(1.05) rotate(5deg); } }
@keyframes wp4-whiterose { 0% { transform: scale(1) rotate(0deg); } 100% { transform: scale(1.03) rotate(-5deg); } }
@keyframes wp4-vines { 0% { background-position: 0 0; } 100% { background-position: 0 40px; } }
@keyframes wp4-tomb { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-2px); } }
@keyframes wp4-skull { 0%,100% { opacity:0.2; } 50% { opacity:0.5; } }

/* camp-joan-speech */
.scn-camp-joan-speech { background: linear-gradient(180deg, #4a4e5c 0%, #2d303a 60%, #1a1c24 100%), radial-gradient(ellipse at 50% 0%, #6a7080 0%, transparent 70%); }
.scn-camp-joan-speech .cjs-sky { position: absolute; inset: 0 0 60% 0; background: linear-gradient(180deg, #5c6270 0%, #3a3e4a 100%); animation: cjs-clouds 40s linear infinite alternate; }
.scn-camp-joan-speech .cjs-ground { position: absolute; bottom: 0; height: 40%; width: 100%; background: linear-gradient(180deg, #4a5034 0%, #2a2e1a 100%); border-radius: 30% 70% 0 0 / 40% 60% 0 0; }
.scn-camp-joan-speech .cjs-tent-left { position: absolute; bottom: 30%; left: 8%; width: 90px; height: 80px; background: linear-gradient(180deg, #6a6a5a 0%, #4a4a3a 100%); clip-path: polygon(0% 100%, 50% 0%, 100% 100%); animation: cjs-tent-sway 9s ease-in-out infinite; }
.scn-camp-joan-speech .cjs-tent-right { position: absolute; bottom: 30%; right: 8%; width: 90px; height: 80px; background: linear-gradient(180deg, #5a5a4a 0%, #3a3a2a 100%); clip-path: polygon(0% 100%, 50% 0%, 100% 100%); animation: cjs-tent-sway 9s ease-in-out infinite reverse; }
.scn-camp-joan-speech .cjs-figure { position: absolute; bottom: 36%; left: 50%; width: 20px; height: 44px; transform: translateX(-50%); background: linear-gradient(180deg, #2a2e3a 0%, #141820 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; animation: cjs-figure-move 6s ease-in-out infinite; }
.scn-camp-joan-speech .cjs-banner { position: absolute; bottom: 46%; left: 50%; width: 8px; height: 30px; transform: translateX(-50%); background: #4a4030; border-radius: 4px; animation: cjs-banner-wave 4s ease-in-out infinite; }
.scn-camp-joan-speech .cjs-fire { position: absolute; bottom: 33%; left: 46%; width: 30px; height: 30px; background: radial-gradient(circle, #c47040 0%, #a05030 50%, transparent 70%); border-radius: 50%; box-shadow: 0 0 20px 8px rgba(160,80,48,0.6); animation: cjs-fire-flicker 3s ease-in-out infinite alternate; }
.scn-camp-joan-speech .cjs-cloud { position: absolute; top: 12%; left: 20%; width: 100px; height: 20px; background: linear-gradient(180deg, rgba(160,168,176,0.6) 0%, rgba(160,168,176,0.1) 100%); border-radius: 50%; filter: blur(8px); animation: cjs-drift 50s linear infinite; }
@keyframes cjs-clouds { 0% { opacity: 0.7; } 50% { opacity: 1; } 100% { opacity: 0.6; } }
@keyframes cjs-tent-sway { 0% { transform: rotate(0deg); } 25% { transform: rotate(1deg); } 50% { transform: rotate(0deg); } 75% { transform: rotate(-1deg); } 100% { transform: rotate(0deg); } }
@keyframes cjs-figure-move { 0% { transform: translateX(-50%) translateY(0) rotate(-2deg); } 30% { transform: translateX(-50%) translateY(-2px) rotate(0deg); } 60% { transform: translateX(-50%) translateY(1px) rotate(2deg); } 100% { transform: translateX(-50%) translateY(0) rotate(-2deg); } }
@keyframes cjs-banner-wave { 0% { transform: translateX(-50%) rotate(-5deg); } 50% { transform: translateX(-50%) rotate(5deg); } 100% { transform: translateX(-50%) rotate(-5deg); } }
@keyframes cjs-fire-flicker { 0% { transform: scale(1); opacity: 0.8; } 50% { transform: scale(1.15); opacity: 1; } 100% { transform: scale(0.95); opacity: 0.7; } }
@keyframes cjs-drift { 0% { transform: translateX(-30px); } 100% { transform: translateX(130vw); } }

/* item-execution-stake */
.scn-item-execution-stake { background: linear-gradient(180deg, #3a3e46 0%, #24282e 50%, #12161a 100%), radial-gradient(ellipse at 50% 80%, #2a2e34 0%, transparent 80%); }
.scn-item-execution-stake .ies-sky { position: absolute; inset: 0 0 50% 0; background: linear-gradient(180deg, #4a4e56 0%, #2e323a 100%); animation: ies-clouds 30s linear infinite alternate; }
.scn-item-execution-stake .ies-ground { position: absolute; bottom: 0; height: 50%; width: 100%; background: linear-gradient(180deg, #3a3a30 0%, #1e1e18 100%); }
.scn-item-execution-stake .ies-stake { position: absolute; bottom: 20%; left: 50%; width: 10px; height: 80px; margin-left: -5px; background: linear-gradient(180deg, #5a4a3a 0%, #2a1e14 100%); border-radius: 3px; animation: ies-stake-shake 8s ease-in-out infinite; }
.scn-item-execution-stake .ies-figure { position: absolute; bottom: 28%; left: 50%; width: 22px; height: 40px; margin-left: -11px; background: linear-gradient(180deg, #1a1e1a 0%, #0a0e0a 100%); border-radius: 40% 40% 20% 20% / 50% 50% 30% 30%; animation: ies-figure-struggle 4s ease-in-out infinite; }
.scn-item-execution-stake .ies-fire { position: absolute; bottom: 18%; left: 50%; width: 28px; height: 28px; margin-left: -14px; background: radial-gradient(circle, #b05030 0%, #803020 50%, transparent 70%); border-radius: 50%; box-shadow: 0 0 12px 6px rgba(128,48,32,0.6); animation: ies-fire-flicker 3s ease-in-out infinite alternate; }
.scn-item-execution-stake .ies-smoke { position: absolute; bottom: 50%; left: 48%; width: 30px; height: 60px; background: linear-gradient(180deg, rgba(100,100,100,0.4) 0%, transparent 100%); border-radius: 50%; filter: blur(10px); animation: ies-smoke-rise 6s ease-out infinite; }
.scn-item-execution-stake .ies-crow { position: absolute; top: 30%; right: 20%; width: 24px; height: 12px; background: #1a1a1a; border-radius: 50%; animation: ies-crow-fly 12s linear infinite; }
@keyframes ies-clouds { 0% { opacity: 0.6; } 50% { opacity: 1; } 100% { opacity: 0.5; } }
@keyframes ies-stake-shake { 0% { transform: rotate(0deg); } 20% { transform: rotate(1deg); } 40% { transform: rotate(-1deg); } 60% { transform: rotate(0.5deg); } 100% { transform: rotate(0deg); } }
@keyframes ies-figure-struggle { 0% { transform: translateY(0) rotate(0deg); } 30% { transform: translateY(-4px) rotate(2deg); } 60% { transform: translateY(2px) rotate(-3deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes ies-fire-flicker { 0% { transform: scale(1); opacity: 0.8; box-shadow: 0 0 10px 5px rgba(128,48,32,0.5); } 50% { transform: scale(1.2); opacity: 1; box-shadow: 0 0 20px 10px rgba(128,48,32,0.7); } 100% { transform: scale(0.9); opacity: 0.6; box-shadow: 0 0 8px 4px rgba(128,48,32,0.4); } }
@keyframes ies-smoke-rise { 0% { transform: translateY(0) scale(1); opacity: 0.6; } 50% { transform: translateY(-30px) scale(1.5); opacity: 0.3; } 100% { transform: translateY(-60px) scale(2); opacity: 0; } }
@keyframes ies-crow-fly { 0% { transform: translateX(0) translateY(0) rotate(10deg); } 25% { transform: translateX(-30px) translateY(-10px) rotate(0deg); } 50% { transform: translateX(-60px) translateY(-20px) rotate(-10deg); } 75% { transform: translateX(-90px) translateY(-15px) rotate(0deg); } 100% { transform: translateX(-120px) translateY(0) rotate(10deg); } }

/* camp-joan-pregnancy */
.scn-camp-joan-pregnancy { background: linear-gradient(180deg, #3a3e48 0%, #282c34 50%, #1a1c24 100%), radial-gradient(ellipse at 50% 50%, #2a2e38 0%, transparent 80%); }
.scn-camp-joan-pregnancy .cjp-tent { position: absolute; bottom: 0; left: 50%; width: 120px; height: 100px; margin-left: -60px; background: linear-gradient(180deg, #5a5a4a 0%, #3a3a2a 100%); clip-path: polygon(0% 100%, 50% 0%, 100% 100%); animation: cjp-tent-sway 12s ease-in-out infinite; }
.scn-camp-joan-pregnancy .cjp-cover { position: absolute; bottom: 10%; left: 50%; width: 100px; height: 60px; margin-left: -50px; background: linear-gradient(180deg, #4a4a3a 0%, #2a2a1a 100%); border-radius: 50% 50% 20% 20%; animation: cjp-cover-pulse 8s ease-in-out infinite; }
.scn-camp-joan-pregnancy .cjp-figure-right { position: absolute; bottom: 25%; right: 15%; width: 18px; height: 42px; background: linear-gradient(180deg, #2a2e3a 0%, #12161a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; animation: cjp-figure-accuse 5s ease-in-out infinite; }
.scn-camp-joan-pregnancy .cjp-figure-left { position: absolute; bottom: 25%; left: 15%; width: 20px; height: 40px; background: linear-gradient(180deg, #2a2e3a 0%, #12161a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; animation: cjp-figure-sway 7s ease-in-out infinite; }
.scn-camp-joan-pregnancy .cjp-belly { position: absolute; bottom: 30%; left: 18%; width: 16px; height: 14px; background: linear-gradient(180deg, #4a4a3a 0%, #2a2a1a 100%); border-radius: 50%; transform: translate(-50%, -50%); animation: cjp-belly-grow 6s ease-in-out infinite; }
.scn-camp-joan-pregnancy .cjp-candle { position: absolute; bottom: 15%; left: 48%; width: 6px; height: 20px; background: linear-gradient(180deg, #d0c0a0 0%, #a09070 100%); border-radius: 2px; box-shadow: 0 0 8px 4px rgba(160,144,112,0.4); animation: cjp-candle-flicker 3s ease-in-out infinite alternate; }
.scn-camp-joan-pregnancy .cjp-shadow { position: absolute; bottom: 0; left: 30%; width: 60px; height: 40px; background: radial-gradient(ellipse, rgba(10,10,10,0.8) 0%, transparent 70%); animation: cjp-shadow-ghost 9s ease-in-out infinite; }
@keyframes cjp-tent-sway { 0% { transform: rotate(0deg); } 30% { transform: rotate(1deg); } 60% { transform: rotate(-1deg); } 100% { transform: rotate(0deg); } }
@keyframes cjp-cover-pulse { 0% { transform: scale(1); } 50% { transform: scale(1.02); } 100% { transform: scale(1); } }
@keyframes cjp-figure-accuse { 0% { transform: translateY(0) rotate(2deg); } 30% { transform: translateY(-3px) rotate(6deg); } 60% { transform: translateY(0) rotate(0deg); } 100% { transform: translateY(0) rotate(2deg); } }
@keyframes cjp-figure-sway { 0% { transform: translateY(0) rotate(-1deg); } 50% { transform: translateY(-4px) rotate(1deg); } 100% { transform: translateY(0) rotate(-1deg); } }
@keyframes cjp-belly-grow { 0% { transform: scale(1); } 50% { transform: scale(1.2); } 100% { transform: scale(1); } }
@keyframes cjp-candle-flicker { 0% { opacity: 0.6; box-shadow: 0 0 4px 2px rgba(160,144,112,0.2); } 50% { opacity: 1; box-shadow: 0 0 12px 6px rgba(160,144,112,0.6); } 100% { opacity: 0.8; box-shadow: 0 0 6px 3px rgba(160,144,112,0.3); } }
@keyframes cjp-shadow-ghost { 0% { opacity: 0.3; transform: scale(1); } 50% { opacity: 0.7; transform: scale(1.1); } 100% { opacity: 0.3; transform: scale(1); } }

/* item-cardinal-letters */
.scn-item-cardinal-letters { background: linear-gradient(180deg, #2a2e38 0%, #1a1c24 50%, #0e1016 100%), radial-gradient(ellipse at 50% 80%, #1e202a 0%, transparent 80%); }
.scn-item-cardinal-letters .icl-wall { position: absolute; inset: 0; background: linear-gradient(180deg, #3a3a44 0%, #1e1e28 100%); animation: icl-wall-sweep 30s linear infinite alternate; }
.scn-item-cardinal-letters .icl-floor { position: absolute; bottom: 0; height: 20%; width: 100%; background: linear-gradient(180deg, #2a2a30 0%, #121216 100%); }
.scn-item-cardinal-letters .icl-desk { position: absolute; bottom: 15%; left: 50%; width: 80px; height: 30px; margin-left: -40px; background: linear-gradient(180deg, #5a4a3a 0%, #3a2e1e 100%); border-radius: 4px; box-shadow: 0 4px 8px rgba(0,0,0,0.5); animation: icl-desk-shift 10s ease-in-out infinite; }
.scn-item-cardinal-letters .icl-cardinal { position: absolute; bottom: 18%; left: 40%; width: 26px; height: 50px; background: linear-gradient(180deg, #5a2a2a 0%, #2a1010 100%); border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%; animation: icl-cardinal-turn 8s ease-in-out infinite; }
.scn-item-cardinal-letters .icl-letter { position: absolute; bottom: 24%; left: 48%; width: 22px; height: 14px; background: #d0c0a8; border-radius: 2px; box-shadow: 0 2px 4px rgba(0,0,0,0.3); animation: icl-letter-flutter 5s ease-in-out infinite; }
.scn-item-cardinal-letters .icl-candle { position: absolute; bottom: 22%; left: 52%; width: 5px; height: 18px; background: linear-gradient(180deg, #d0b080 0%, #a08060 100%); border-radius: 2px 2px 0 0; box-shadow: 0 0 10px 4px rgba(160,128,96,0.4); animation: icl-candle-flicker 3s ease-in-out infinite alternate; }
.scn-item-cardinal-letters .icl-wax { position: absolute; bottom: 22%; left: 55%; width: 3px; height: 4px; background: #b09070; border-radius: 50%; animation: icl-wax-drip 6s ease-in-out infinite; }
@keyframes icl-wall-sweep { 0% { opacity: 0.5; } 50% { opacity: 0.8; } 100% { opacity: 0.5; } }
@keyframes icl-desk-shift { 0% { transform: translateY(0); } 33% { transform: translateY(-1px); } 67% { transform: translateY(1px); } 100% { transform: translateY(0); } }
@keyframes icl-cardinal-turn { 0% { transform: rotate(0deg); } 25% { transform: rotate(3deg); } 50% { transform: rotate(0deg); } 75% { transform: rotate(-3deg); } 100% { transform: rotate(0deg); } }
@keyframes icl-letter-flutter { 0% { transform: rotate(0deg) translateY(0); } 30% { transform: rotate(5deg) translateY(-2px); } 60% { transform: rotate(-3deg) translateY(1px); } 100% { transform: rotate(0deg) translateY(0); } }
@keyframes icl-candle-flicker { 0% { opacity: 0.7; box-shadow: 0 0 6px 3px rgba(160,128,96,0.3); } 50% { opacity: 1; box-shadow: 0 0 14px 7px rgba(160,128,96,0.6); } 100% { opacity: 0.8; box-shadow: 0 0 8px 4px rgba(160,128,96,0.3); } }
@keyframes icl-wax-drip { 0% { transform: translateY(0) scale(1); opacity: 0.8; } 50% { transform: translateY(6px) scale(1.2); opacity: 0.5; } 100% { transform: translateY(12px) scale(0.8); opacity: 0; } }

/* london-peace-impiety */
.scn-london-peace-impiety {
  background: linear-gradient(180deg, #e8dcc8 0%, #d4c4a8 40%, #bfa98a 100%), radial-gradient(ellipse at 80% 20%, #f5eedc 0%, transparent 60%);
}
.scn-london-peace-impiety .wall {
  position: absolute; inset: 0 0 15% 0;
  background: linear-gradient(180deg, #dcc8ac 0%, #b59a7a 100%);
  border-radius: 0 0 10% 10%;
}
.scn-london-peace-impiety .window-frame {
  position: absolute; top: 8%; left: 12%; width: 30%; height: 40%;
  background: linear-gradient(180deg, #8b7355 0%, #6b5a42 100%);
  border-radius: 4%;
  box-shadow: inset 0 6px 12px rgba(0,0,0,0.15);
}
.scn-london-peace-impiety .window-pane {
  position: absolute; top: 11%; left: 15%; width: 24%; height: 33%;
  background: linear-gradient(135deg, #f5f0e0 0%, #e0d5be 50%, #f0e8d0 100%);
  border-radius: 3%;
  opacity: 0.6;
  animation: lpi-pane 8s ease-in-out infinite alternate;
}
.scn-london-peace-impiety .desk {
  position: absolute; bottom: 15%; left: 10%; width: 60%; height: 20%;
  background: linear-gradient(180deg, #a0835a 0%, #7a5f40 100%);
  border-radius: 4% 4% 0 0;
  box-shadow: 0 10px 20px rgba(0,0,0,0.2);
}
.scn-london-peace-impiety .book-stack {
  position: absolute; bottom: 22%; left: 20%; width: 18%; height: 16%;
  background: repeating-linear-gradient(0deg, #6b4a2e 0px, #6b4a2e 10%, #523a22 10%, #523a22 20%, #7a5f40 20%, #7a5f40 30%);
  border-radius: 4%;
  border-left: 4px solid #3c2a14;
  box-shadow: 4px 4px 8px rgba(0,0,0,0.3);
  animation: lpi-book 12s ease-in-out infinite;
}
.scn-london-peace-impiety .candle {
  position: absolute; bottom: 30%; left: 45%; width: 4%; height: 20%;
  background: linear-gradient(180deg, #e8d4b0 0%, #c8a87a 100%);
  border-radius: 30% 30% 10% 10%;
  box-shadow: 0 0 12px 6px rgba(255,180,60,0.3);
}
.scn-london-peace-impiety .shadow-figure {
  position: absolute; bottom: 15%; left: 55%; width: 12%; height: 25%;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom;
  animation: lpi-figure 4s ease-in-out infinite alternate;
}
.scn-london-peace-impiety .flame-glow {
  position: absolute; bottom: 48%; left: 46%; width: 6%; height: 10%;
  background: radial-gradient(circle, #ffcc60 0%, #ffa030 60%, transparent 80%);
  border-radius: 50%;
  filter: blur(3px);
  animation: lpi-glow 2s ease-in-out infinite alternate;
}
@keyframes lpi-pane { 0% { opacity: 0.5; transform: scale(1); } 50% { opacity: 0.7; transform: scale(1.02); } 100% { opacity: 0.4; transform: scale(0.98); } }
@keyframes lpi-book { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes lpi-figure { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(8px) rotate(2deg); } 100% { transform: translateX(0) rotate(-2deg); } }
@keyframes lpi-glow { 0% { opacity: 0.6; transform: scale(0.9); } 50% { opacity: 1; transform: scale(1.1); } 100% { opacity: 0.7; transform: scale(0.95); } }

/* london-marriage-proposal */
.scn-london-marriage-proposal {
  background: linear-gradient(180deg, #f2e8d0 0%, #ddd0b0 50%, #c4b090 100%), radial-gradient(ellipse at 70% 30%, #fcf6e8 0%, transparent 60%);
}
.scn-london-marriage-proposal .room-back {
  position: absolute; inset: 0 0 20% 0;
  background: linear-gradient(180deg, #cfbea0 0%, #a89170 100%);
  border-radius: 0 0 30% 30%;
}
.scn-london-marriage-proposal .bookshelf {
  position: absolute; top: 10%; left: 8%; width: 20%; height: 50%;
  background: linear-gradient(90deg, #6b5238 0%, #4c3720 50%, #6b5238 100%);
  border-radius: 4%;
  box-shadow: inset 0 0 20px rgba(0,0,0,0.2);
}
.scn-london-marriage-proposal .bookshelf::before {
  content: ''; position: absolute; top: 10%; left: 10%; width: 80%; height: 80%;
  background: repeating-linear-gradient(0deg, #7a6040 0px, #7a6040 8%, #a08050 8%, #a08050 16%);
  border-radius: 2%;
}
.scn-london-marriage-proposal .study-desk {
  position: absolute; bottom: 15%; left: 30%; width: 45%; height: 18%;
  background: linear-gradient(180deg, #b89670 0%, #8a6d4a 100%);
  border-radius: 6% 6% 0 0;
  box-shadow: 0 8px 16px rgba(0,0,0,0.15);
}
.scn-london-marriage-proposal .open-book {
  position: absolute; bottom: 25%; left: 40%; width: 14%; height: 12%;
  background: linear-gradient(180deg, #f0e4c0 0%, #ddd0a8 100%);
  border-radius: 2% 2% 8% 8%;
  transform: perspective(400px) rotateX(-10deg);
  box-shadow: 2px 4px 6px rgba(0,0,0,0.1);
  animation: lmp-book 14s ease-in-out infinite;
}
.scn-london-marriage-proposal .quill {
  position: absolute; bottom: 28%; left: 48%; width: 2%; height: 20%;
  background: linear-gradient(180deg, #e0d4c0 0%, #bca88a 60%, #4a3a2a 100%);
  border-radius: 0 0 60% 60%;
  transform: rotate(20deg);
  transform-origin: bottom;
  animation: lmp-quill 3s ease-in-out infinite alternate;
}
.scn-london-marriage-proposal .inkwell {
  position: absolute; bottom: 22%; left: 52%; width: 6%; height: 8%;
  background: radial-gradient(circle at 30% 30%, #3a2a1a 0%, #1a0a00 100%);
  border-radius: 50%;
  box-shadow: 0 2px 4px rgba(0,0,0,0.4);
}
.scn-london-marriage-proposal .maiden-silhouette {
  position: absolute; bottom: 15%; left: 60%; width: 10%; height: 28%;
  background: linear-gradient(180deg, #2a1a1a 0%, #0a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 40% 40%;
  transform-origin: bottom;
  animation: lmp-maiden 6s ease-in-out infinite;
}
.scn-london-marriage-proposal .window-light {
  position: absolute; top: 12%; right: 10%; width: 25%; height: 35%;
  background: linear-gradient(135deg, #fff8e0 0%, #f0e0c0 60%, transparent 80%);
  border-radius: 4%;
  opacity: 0.3;
  filter: blur(8px);
  animation: lmp-light 10s ease-in-out infinite alternate;
}
@keyframes lmp-book { 0% { transform: perspective(400px) rotateX(-10deg) translateY(0); } 50% { transform: perspective(400px) rotateX(-5deg) translateY(-2px); } 100% { transform: perspective(400px) rotateX(-10deg) translateY(0); } }
@keyframes lmp-quill { 0% { transform: rotate(15deg); } 50% { transform: rotate(25deg); } 100% { transform: rotate(18deg); } }
@keyframes lmp-maiden { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-3px) rotate(1deg); } 100% { transform: translateY(0) rotate(-1deg); } }
@keyframes lmp-light { 0% { opacity: 0.2; transform: scale(1); } 50% { opacity: 0.4; transform: scale(1.05); } 100% { opacity: 0.25; transform: scale(0.95); } }

/* london-cardinal-entrance */
.scn-london-cardinal-entrance {
  background: linear-gradient(180deg, #2a1a1a 0%, #4a2a2a 30%, #6a3a3a 60%, #4a2a2a 100%), radial-gradient(ellipse at 50% 40%, #7a4a4a 0%, transparent 70%);
}
.scn-london-cardinal-entrance .hall-back {
  position: absolute; inset: 0 0 15% 0;
  background: linear-gradient(180deg, #3a2a2a 0%, #1a0a0a 100%);
  border-radius: 0 0 20% 20%;
}
.scn-london-cardinal-entrance .pillar-left {
  position: absolute; top: 5%; left: 10%; width: 8%; height: 80%;
  background: linear-gradient(90deg, #5a2a2a 0%, #7a3a3a 30%, #5a2a2a 100%);
  border-radius: 6%;
  box-shadow: 8px 0 20px rgba(0,0,0,0.5);
}
.scn-london-cardinal-entrance .pillar-right {
  position: absolute; top: 5%; right: 10%; width: 8%; height: 80%;
  background: linear-gradient(90deg, #5a2a2a 0%, #7a3a3a 30%, #5a2a2a 100%);
  border-radius: 6%;
  box-shadow: -8px 0 20px rgba(0,0,0,0.5);
}
.scn-london-cardinal-entrance .cardinal-figure {
  position: absolute; bottom: 12%; left: 44%; width: 12%; height: 35%;
  background: linear-gradient(180deg, #702243 0%, #5e1a1d 50%, #3a1010 100%);
  border-radius: 50% 50% 30% 30% / 80% 80% 30% 30%;
  transform-origin: bottom;
  animation: lce-figure 1.5s ease-in-out infinite alternate;
}
.scn-london-cardinal-entrance .cardinal-robe {
  position: absolute; bottom: 10%; left: 40%; width: 20%; height: 18%;
  background: radial-gradient(ellipse at 50% 50%, #a0461a 0%, #702243 70%, #3a1010 100%);
  border-radius: 50%;
  transform: scaleX(1.2);
  animation: lce-robe 2s ease-in-out infinite alternate;
}
.scn-london-cardinal-entrance .mitre {
  position: absolute; bottom: 40%; left: 46%; width: 6%; height: 12%;
  background: linear-gradient(180deg, #e0c080 0%, #c8a060 100%);
  border-radius: 30% 30% 10% 10%;
  clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
  animation: lce-mitre 1s ease-in-out infinite alternate;
}
.scn-london-cardinal-entrance .legates-shadow {
  position: absolute; bottom: 10%; left: 52%; width: 10%; height: 25%;
  background: linear-gradient(180deg, rgba(0,0,0,0.4) 0%, rgba(0,0,0,0.6) 100%);
  border-radius: 50%;
  filter: blur(6px);
  animation: lce-shadow 2.5s ease-in-out infinite alternate;
}
.scn-london-cardinal-entrance .floor-reflection {
  position: absolute; bottom: 0; left: 20%; width: 60%; height: 12%;
  background: linear-gradient(180deg, rgba(70,30,30,0.3) 0%, rgba(30,10,10,0.1) 100%);
  border-radius: 50%;
  filter: blur(8px);
  animation: lce-floor 4s ease-in-out infinite;
}
.scn-london-cardinal-entrance .tense-glow {
  position: absolute; top: 20%; left: 40%; width: 20%; height: 30%;
  background: radial-gradient(circle, rgba(200,80,30,0.3) 0%, transparent 70%);
  filter: blur(10px);
  animation: lce-glow 0.8s ease-in-out infinite alternate;
}
@keyframes lce-figure { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-4px) rotate(2deg); } 100% { transform: translateY(0) rotate(-2deg); } }
@keyframes lce-robe { 0% { transform: scaleX(1.2) translateX(0); } 50% { transform: scaleX(1.25) translateX(4px); } 100% { transform: scaleX(1.15) translateX(-2px); } }
@keyframes lce-mitre { 0% { transform: translateY(0) rotate(-3deg); } 50% { transform: translateY(-5px) rotate(3deg); } 100% { transform: translateY(-2px) rotate(-1deg); } }
@keyframes lce-shadow { 0% { opacity: 0.3; transform: scale(1); } 50% { opacity: 0.6; transform: scale(1.1); } 100% { opacity: 0.4; transform: scale(0.9); } }
@keyframes lce-floor { 0% { opacity: 0.5; } 50% { opacity: 0.8; } 100% { opacity: 0.4; } }
@keyframes lce-glow { 0% { opacity: 0.2; filter: blur(12px); } 50% { opacity: 0.5; filter: blur(8px); } 100% { opacity: 0.3; filter: blur(10px); } }

/* london-peace-terms */
.scn-london-peace-terms {
  background: linear-gradient(180deg, #e8dcc0 0%, #d5c4a0 40%, #bca88a 100%), radial-gradient(ellipse at 70% 60%, #f2ecd8 0%, transparent 50%);
}
.scn-london-peace-terms .peace-wall {
  position: absolute; inset: 0 0 20% 0;
  background: linear-gradient(180deg, #cfbea0 0%, #a89170 100%);
  border-radius: 0 0 25% 25%;
}
.scn-london-peace-terms .tapestry {
  position: absolute; top: 8%; left: 15%; width: 70%; height: 50%;
  background: linear-gradient(135deg, #2a5a3a 0%, #4a7a5a 30%, #2a5a3a 60%, #1a3a2a 100%);
  border-radius: 6%;
  border: 6px solid #8b7355;
  box-shadow: inset 0 0 30px rgba(0,0,0,0.2);
  opacity: 0.7;
  animation: lpt-tapestry 20s ease-in-out infinite alternate;
}
.scn-london-peace-terms .table {
  position: absolute; bottom: 15%; left: 20%; width: 60%; height: 18%;
  background: linear-gradient(180deg, #b89670 0%, #8a6d4a 100%);
  border-radius: 6% 6% 0 0;
  box-shadow: 0 8px 20px rgba(0,0,0,0.2);
}
.scn-london-peace-terms .treaty-scroll {
  position: absolute; bottom: 25%; left: 35%; width: 20%; height: 12%;
  background: linear-gradient(180deg, #f5ecd0 0%, #e0d0a8 100%);
  border-radius: 8% 8% 20% 20%;
  transform: perspective(300px) rotateX(10deg);
  box-shadow: 0 4px 8px rgba(0,0,0,0.1);
  animation: lpt-scroll 8s ease-in-out infinite;
}
.scn-london-peace-terms .seal {
  position: absolute; bottom: 27%; left: 48%; width: 6%; height: 6%;
  background: radial-gradient(circle at 40% 40%, #c8553d 0%, #a0461a 50%, #702243 100%);
  border-radius: 50%;
  border: 2px solid #d4a050;
  animation: lpt-seal 4s ease-in-out infinite alternate;
}
.scn-london-peace-terms .ambassador-silhouette {
  position: absolute; bottom: 15%; left: 62%; width: 10%; height: 28%;
  background: linear-gradient(180deg, #2a1a1a 0%, #0a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 40% 40%;
  transform-origin: bottom;
  animation: lpt-ambassador 6s ease-in-out infinite;
}
.scn-london-peace-terms .candle-pair {
  position: absolute; bottom: 30%; left: 30%; width: 4%; height: 18%;
  background: linear-gradient(180deg, #e8d4b0 0%, #c8a87a 100%);
  border-radius: 30% 30% 10% 10%;
  box-shadow: 0 0 12px 6px rgba(255,180,60,0.3);
}
.scn-london-peace-terms .wax-drip {
  position: absolute; bottom: 28%; left: 31%; width: 2%; height: 6%;
  background: linear-gradient(180deg, #e8d0b0 0%, #b08040 100%);
  border-radius: 40% 40% 20% 20%;
  animation: lpt-wax 3s ease-in-out infinite alternate;
}
@keyframes lpt-tapestry { 0% { opacity: 0.6; transform: scale(1); } 50% { opacity: 0.8; transform: scale(1.02); } 100% { opacity: 0.65; transform: scale(0.98); } }
@keyframes lpt-scroll { 0% { transform: perspective(300px) rotateX(10deg) translateY(0); } 50% { transform: perspective(300px) rotateX(5deg) translateY(-2px); } 100% { transform: perspective(300px) rotateX(10deg) translateY(0); } }
@keyframes lpt-seal { 0% { transform: scale(1); } 50% { transform: scale(1.1); } 100% { transform: scale(0.95); } }
@keyframes lpt-ambassador { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-2px) rotate(1deg); } 100% { transform: translateY(0) rotate(-1deg); } }
@keyframes lpt-wax { 0% { transform: translateY(0); } 50% { transform: translateY(2px); } 100% { transform: translateY(-1px); } }

.scn-fastolfe-flees {
  background: 
    linear-gradient(180deg, #fae8c8 0%, #d4a050 40%, #b07030 100%),
    radial-gradient(ellipse at 80% 20%, #ffe0a0 0%, transparent 60%);
}
.scn-fastolfe-flees .sky {
  position: absolute;
  inset: 0 0 50% 0;
  background: linear-gradient(180deg, #f0d8b0 0%, #d4b080 100%);
  animation: ff-sky 6s ease-in-out infinite alternate;
}
.scn-fastolfe-flees .sun {
  position: absolute;
  top: 8%;
  right: 15%;
  width: 60px;
  height: 60px;
  background: radial-gradient(circle, #ffe080 0%, #ffcc40 40%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 100px 40px rgba(255,200,80,0.5);
  animation: ff-sun 5s ease-in-out infinite alternate;
}
.scn-fastolfe-flees .road {
  position: absolute;
  bottom: 20%;
  left: -10%;
  right: 0;
  height: 30%;
  background: linear-gradient(180deg, #a07850 0%, #7a5a3a 100%);
  border-radius: 40% 20% 0 0 / 80% 60% 0 0;
  transform: skewY(-4deg);
}
.scn-fastolfe-flees .figure-horse {
  position: absolute;
  bottom: 22%;
  left: 30%;
  width: 60px;
  height: 50px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 40% 60% 20% 80% / 60% 40% 60% 40%;
  animation: ff-horse 0.8s steps(3) infinite;
}
.scn-fastolfe-flees .figure-rider {
  position: absolute;
  bottom: 52%;
  left: 33%;
  width: 24px;
  height: 30px;
  background: linear-gradient(180deg, #6a4a2a 0%, #3a2a1a 100%);
  border-radius: 40% 40% 50% 50% / 40% 40% 30% 30%;
  transform: rotate(10deg);
  animation: ff-rider 1s ease-in-out infinite alternate;
}
.scn-fastolfe-flees .dust {
  position: absolute;
  bottom: 20%;
  left: 28%;
  width: 40px;
  height: 20px;
  background: radial-gradient(ellipse, rgba(200,170,130,0.4) 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(4px);
  animation: ff-dust 0.5s ease-out infinite;
}
.scn-fastolfe-flees .spear {
  position: absolute;
  bottom: 60%;
  left: 37%;
  width: 4px;
  height: 40px;
  background: linear-gradient(180deg, #8a6a4a 0%, #5a3a2a 100%);
  border-radius: 2px;
  transform: rotate(-30deg);
  transform-origin: bottom center;
  animation: ff-spear 0.5s ease-in-out infinite alternate;
}
.scn-fastolfe-flees .shadow {
  position: absolute;
  bottom: 20%;
  left: 25%;
  width: 80px;
  height: 10px;
  background: radial-gradient(ellipse, rgba(60,40,20,0.5) 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(3px);
  animation: ff-shadow 0.8s ease-in-out infinite alternate;
}

@keyframes ff-sky {
  0% { opacity: 0.9; }
  100% { opacity: 1; }
}
@keyframes ff-sun {
  0% { transform: scale(0.9) translateX(-5px); opacity: 0.8; }
  50% { transform: scale(1) translateX(0); opacity: 1; }
  100% { transform: scale(0.95) translateX(5px); opacity: 0.9; }
}
@keyframes ff-horse {
  0% { transform: translateX(0) scaleY(1); }
  25% { transform: translateX(3px) scaleY(0.95); }
  50% { transform: translateX(6px) scaleY(1); }
  75% { transform: translateX(9px) scaleY(0.95); }
  100% { transform: translateX(12px) scaleY(1); }
}
@keyframes ff-rider {
  0% { transform: rotate(8deg) translateX(0); }
  50% { transform: rotate(12deg) translateX(2px); }
  100% { transform: rotate(8deg) translateX(0); }
}
@keyframes ff-dust {
  0% { transform: scale(1) translateY(0); opacity: 1; }
  100% { transform: scale(1.5) translateY(-10px); opacity: 0; }
}
@keyframes ff-spear {
  0% { transform: rotate(-28deg); }
  100% { transform: rotate(-32deg); }
}
@keyframes ff-shadow {
  0% { transform: scaleX(1); opacity: 0.7; }
  100% { transform: scaleX(0.9); opacity: 0.5; }
}
/* --- */
.scn-bedford-dies-seeing-victory {
  background:
    linear-gradient(180deg, #e8d4b0 0%, #c4a878 40%, #8a6848 100%),
    radial-gradient(ellipse at 50% 10%, #f0e0c0 0%, transparent 60%);
}
.scn-bedford-dies-seeing-victory .sky {
  position: absolute;
  inset: 0 0 45% 0;
  background: linear-gradient(180deg, #d4c0a0 0%, #f0e0c0 100%);
  animation: bd-sky 14s ease-in-out infinite alternate;
}
.scn-bedford-dies-seeing-victory .sun-haze {
  position: absolute;
  top: 12%;
  left: 50%;
  width: 80px;
  height: 60px;
  background: radial-gradient(ellipse, rgba(255,230,180,0.6) 0%, transparent 70%);
  transform: translateX(-50%);
  border-radius: 50%;
  filter: blur(10px);
  animation: bd-haze 8s ease-in-out infinite alternate;
}
.scn-bedford-dies-seeing-victory .hill {
  position: absolute;
  bottom: 30%;
  left: 0;
  right: 0;
  height: 30%;
  background: linear-gradient(180deg, #9a7a5a 0%, #5a3a2a 100%);
  border-radius: 60% 40% 0 0 / 100% 80% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.2);
}
.scn-bedford-dies-seeing-victory .figure-body {
  position: absolute;
  bottom: 32%;
  left: 30%;
  width: 40px;
  height: 50px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform: rotate(-5deg);
  animation: bd-body 12s ease-in-out infinite;
}
.scn-bedford-dies-seeing-victory .figure-arm {
  position: absolute;
  bottom: 45%;
  left: 32%;
  width: 30px;
  height: 6px;
  background: linear-gradient(180deg, #5a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 20% 20% 50%;
  transform: rotate(30deg);
  transform-origin: left center;
  animation: bd-arm 10s ease-in-out infinite alternate;
}
.scn-bedford-dies-seeing-victory .crown-offer {
  position: absolute;
  bottom: 55%;
  left: 25%;
  width: 20px;
  height: 12px;
  background: radial-gradient(ellipse at 50% 40%, #e0c060 0%, #b09040 60%, #7a5a20 100%);
  border-radius: 50% 50% 20% 20%;
  transform: rotate(20deg);
  box-shadow: 0 0 15px 5px rgba(224,192,96,0.3);
  animation: bd-crown 14s ease-in-out infinite alternate;
}
.scn-bedford-dies-seeing-victory .banners {
  position: absolute;
  bottom: 45%;
  left: 60%;
  width: 30px;
  height: 50px;
  background: linear-gradient(180deg, #c8a060 0%, #a08040 100%);
  border-radius: 10% 10% 0 0;
  transform: skewX(-10deg);
  box-shadow: 0 5px 10px rgba(0,0,0,0.1);
  animation: bd-banners 12s ease-in-out infinite alternate;
}
.scn-bedford-dies-seeing-victory .clouds {
  position: absolute;
  top: 18%;
  left: 10%;
  width: 120px;
  height: 20px;
  background: linear-gradient(180deg, rgba(240,230,210,0.4) 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(8px);
  animation: bd-clouds 30s linear infinite;
}

@keyframes bd-sky { 0% { opacity: 0.9; } 100% { opacity: 1; } }
@keyframes bd-haze {
  0% { transform: translateX(-50%) scale(0.9); opacity: 0.7; }
  50% { transform: translateX(-50%) scale(1.1); opacity: 1; }
  100% { transform: translateX(-50%) scale(0.95); opacity: 0.8; }
}
@keyframes bd-body {
  0%, 100% { transform: rotate(-5deg) translateY(0); }
  50% { transform: rotate(-5deg) translateY(-2px); }
}
@keyframes bd-arm {
  0% { transform: rotate(25deg); }
  50% { transform: rotate(35deg); }
  100% { transform: rotate(30deg); }
}
@keyframes bd-crown {
  0% { transform: rotate(15deg) translateY(0); opacity: 0.8; }
  50% { transform: rotate(25deg) translateY(-3px); opacity: 1; }
  100% { transform: rotate(20deg) translateY(0); opacity: 0.9; }
}
@keyframes bd-banners {
  0% { transform: skewX(-8deg) scaleY(1); }
  100% { transform: skewX(-12deg) scaleY(1.05); }
}
@keyframes bd-clouds {
  0% { transform: translateX(-30px); }
  100% { transform: translateX(120vw); }
}
/* --- */
.scn-talbot-recaptures-rouen {
  background:
    linear-gradient(180deg, #f0e0c8 0%, #c4a878 40%, #8a6848 100%),
    radial-gradient(ellipse at 50% 20%, #ffe8c8 0%, transparent 60%);
}
.scn-talbot-recaptures-rouen .sky {
  position: absolute;
  inset: 0 0 40% 0;
  background: linear-gradient(180deg, #d4c0a0 0%, #f0e0c8 100%);
  animation: tr-sky 12s ease-in-out infinite alternate;
}
.scn-talbot-recaptures-rouen .city-wall {
  position: absolute;
  bottom: 25%;
  left: 20%;
  right: 20%;
  height: 40%;
  background: linear-gradient(180deg, #a08060 0%, #6a4a2a 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: inset 0 -10px 20px rgba(0,0,0,0.3);
}
.scn-talbot-recaptures-rouen .city-towers {
  position: absolute;
  bottom: 45%;
  left: 25%;
  width: 20px;
  height: 50px;
  background: linear-gradient(180deg, #8a6a4a 0%, #5a3a2a 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: -5px 0 10px rgba(0,0,0,0.2);
}
.city-towers::before {
  content: '';
  position: absolute;
  bottom: 0;
  left: 30px;
  width: 20px;
  height: 60px;
  background: linear-gradient(180deg, #8a6a4a 0%, #5a3a2a 100%);
  border-radius: 20% 20% 10% 10%;
}
.scn-talbot-recaptures-rouen .flag {
  position: absolute;
  bottom: 60%;
  left: 28%;
  width: 4px;
  height: 30px;
  background: linear-gradient(180deg, #6a4a2a 0%, #3a2a1a 100%);
  transform-origin: bottom center;
  animation: tr-flag 4s ease-in-out infinite alternate;
}
.scn-talbot-recaptures-rouen .flag::after {
  content: '';
  position: absolute;
  top: 0;
  left: 4px;
  width: 20px;
  height: 14px;
  background: linear-gradient(180deg, #c8a060 0%, #a08040 100%);
  border-radius: 0 40% 40% 0;
}
.scn-talbot-recaptures-rouen .figure-talbot {
  position: absolute;
  bottom: 28%;
  left: 15%;
  width: 30px;
  height: 50px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform: rotate(5deg);
  animation: tr-figure1 9s ease-in-out infinite alternate;
}
.scn-talbot-recaptures-rouen .figure-burgundy {
  position: absolute;
  bottom: 28%;
  left: 55%;
  width: 30px;
  height: 50px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform: rotate(-3deg);
  animation: tr-figure2 9s ease-in-out infinite alternate;
}
.scn-talbot-recaptures-rouen .ground {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 25%;
  background: linear-gradient(180deg, #6a4a2a 0%, #4a2a1a 100%);
  border-radius: 30% 70% 0 0 / 50% 50% 0 0;
}
.scn-talbot-recaptures-rouen .light-rays {
  position: absolute;
  top: 10%;
  left: 30%;
  width: 100px;
  height: 100px;
  background: radial-gradient(ellipse, rgba(255,230,180,0.3) 0%, transparent 70%);
  transform: rotate(25deg);
  filter: blur(15px);
  animation: tr-rays 8s ease-in-out infinite alternate;
}

@keyframes tr-sky { 0% { opacity: 0.95; } 100% { opacity: 1; } }
@keyframes tr-flag {
  0% { transform: rotate(-5deg); }
  50% { transform: rotate(5deg); }
  100% { transform: rotate(-3deg); }
}
@keyframes tr-figure1 {
  0% { transform: rotate(3deg) translateY(0); }
  50% { transform: rotate(7deg) translateY(-2px); }
  100% { transform: rotate(5deg) translateY(0); }
}
@keyframes tr-figure2 {
  0% { transform: rotate(-1deg) translateY(0); }
  50% { transform: rotate(-5deg) translateY(-1px); }
  100% { transform: rotate(-3deg) translateY(0); }
}
@keyframes tr-rays {
  0% { transform: rotate(20deg) scale(0.9); opacity: 0.6; }
  50% { transform: rotate(30deg) scale(1.1); opacity: 1; }
  100% { transform: rotate(25deg) scale(1); opacity: 0.8; }
}
/* --- */
.scn-talbot-orders-paris {
  background:
    linear-gradient(180deg, #e0c8b0 0%, #b09070 40%, #7a5a3a 100%),
    radial-gradient(ellipse at 30% 40%, #f0d8c0 0%, transparent 60%);
}
.scn-talbot-orders-paris .interior-bg {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, #c8b098 0%, #8a6a4a 100%);
  border-radius: 5% / 10%;
  box-shadow: inset 0 0 50px rgba(0,0,0,0.3);
  animation: to-bg 18s ease-in-out infinite alternate;
}
.scn-talbot-orders-paris .table {
  position: absolute;
  bottom: 20%;
  left: 10%;
  right: 10%;
  height: 10%;
  background: linear-gradient(180deg, #6a4a2a 0%, #4a2a1a 100%);
  border-radius: 10px;
  box-shadow: 0 -5px 15px rgba(0,0,0,0.3);
}
.scn-talbot-orders-paris .map {
  position: absolute;
  bottom: 22%;
  left: 25%;
  width: 50%;
  height: 6%;
  background: linear-gradient(180deg, #c8b078 0%, #a08858 100%);
  border-radius: 4px;
  transform: rotate(2deg);
  box-shadow: 1px 1px 5px rgba(0,0,0,0.2);
  animation: to-map 8s ease-in-out infinite alternate;
}
.scn-talbot-orders-paris .figure-talbot-order {
  position: absolute;
  bottom: 28%;
  left: 20%;
  width: 28px;
  height: 50px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform: rotate(5deg);
  animation: to-figure1 7s ease-in-out infinite alternate;
}
.scn-talbot-orders-paris .figure-officer {
  position: absolute;
  bottom: 28%;
  left: 60%;
  width: 24px;
  height: 48px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform: rotate(-5deg);
  animation: to-figure2 9s ease-in-out infinite alternate;
}
.scn-talbot-orders-paris .lamp {
  position: absolute;
  top: 15%;
  left: 45%;
  width: 20px;
  height: 30px;
  background: radial-gradient(ellipse at 50% 30%, #ffe080 0%, #b08040 60%, transparent 100%);
  border-radius: 50% 50% 40% 40%;
  box-shadow: 0 0 40px 15px rgba(255,200,80,0.4);
  animation: to-lamp 4s ease-in-out infinite alternate;
}
.scn-talbot-orders-paris .window {
  position: absolute;
  top: 12%;
  right: 12%;
  width: 50px;
  height: 60px;
  background: linear-gradient(180deg, #d4c0a0 0%, #b09070 100%);
  border-radius: 10% 10% 20% 20%;
  border: 3px solid #4a2a1a;
  box-shadow: inset 0 0 20px rgba(255,230,180,0.6);
  animation: to-window 12s ease-in-out infinite alternate;
}
.scn-talbot-orders-paris .shadow {
  position: absolute;
  bottom: 0;
  left: 10%;
  right: 10%;
  height: 20%;
  background: linear-gradient(180deg, rgba(0,0,0,0.15) 0%, transparent 100%);
  border-radius: 0 0 10% 10%;
}

@keyframes to-bg { 0% { opacity: 0.9; } 100% { opacity: 1; } }
@keyframes to-map {
  0% { transform: rotate(0deg) scale(1); }
  50% { transform: rotate(2deg) scale(1.02); }
  100% { transform: rotate(1deg) scale(1); }
}
@keyframes to-figure1 {
  0% { transform: rotate(3deg) translateY(0); }
  50% { transform: rotate(7deg) translateY(-2px); }
  100% { transform: rotate(5deg) translateY(0); }
}
@keyframes to-figure2 {
  0% { transform: rotate(-3deg) translateY(0); }
  50% { transform: rotate(-7deg) translateY(-1px); }
  100% { transform: rotate(-5deg) translateY(0); }
}
@keyframes to-lamp {
  0% { box-shadow: 0 0 30px 10px rgba(255,200,80,0.3); opacity: 0.8; }
  50% { box-shadow: 0 0 50px 20px rgba(255,200,80,0.6); opacity: 1; }
  100% { box-shadow: 0 0 35px 12px rgba(255,200,80,0.35); opacity: 0.9; }
}
@keyframes to-window {
  0% { box-shadow: inset 0 0 10px rgba(255,230,180,0.4); }
  50% { box-shadow: inset 0 0 30px rgba(255,230,180,0.8); }
  100% { box-shadow: inset 0 0 15px rgba(255,230,180,0.5); }
}

.scn-angiers-quid-pro-quo {
  background:
    linear-gradient(180deg, #f8f2dc 0%, #e3d7b5 40%, #cbb08a 100%),
    radial-gradient(ellipse at 30% 60%, #f5e6c8 0%, transparent 60%);
}
.scn-angiers-quid-pro-quo .bg-wall {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(180deg, #d9cea0 0%, #c2b48a 100%);
  animation: aqp-wall 12s ease-in-out infinite alternate;
}
.scn-angiers-quid-pro-quo .bg-arch {
  position: absolute; top: 5%; left: 20%; width: 60%; height: 50%;
  background: radial-gradient(ellipse at 50% 0%, #f0e6c0 0%, transparent 70%);
  border-radius: 50% 50% 0 0; opacity: 0.5;
  animation: aqp-arch 18s ease-in-out infinite;
}
.scn-angiers-quid-pro-quo .table {
  position: absolute; bottom: 28%; left: 30%; width: 35%; height: 8%;
  background: linear-gradient(180deg, #9c7a5a 0%, #7a5c3c 100%);
  border-radius: 4px; box-shadow: 0 4px 8px rgba(0,0,0,0.3);
  transform: perspective(600px) rotateX(20deg);
  animation: aqp-table 9s ease-in-out infinite;
}
.scn-angiers-quid-pro-quo .candle {
  position: absolute; bottom: 36%; left: 48%; width: 4%; height: 12%;
  background: linear-gradient(180deg, #f0d080 0%, #c09040 100%);
  border-radius: 2px 2px 6px 6px;
  animation: aqp-candle 4s ease-in-out infinite alternate;
}
.scn-angiers-quid-pro-quo .glow-candle {
  position: absolute; bottom: 36%; left: 46%; width: 10%; height: 6%;
  background: radial-gradient(circle, #ffd060 0%, transparent 100%);
  border-radius: 50%; opacity: 0.6;
  animation: aqp-glow 2s ease-in-out infinite alternate;
}
.scn-angiers-quid-pro-quo .figure-princess {
  position: absolute; bottom: 25%; left: 25%; width: 12%; height: 35%;
  background: linear-gradient(180deg, #c09060 0%, #a07040 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: aqp-princess 6s ease-in-out infinite;
}
.scn-angiers-quid-pro-quo .gown {
  position: absolute; bottom: 22%; left: 22%; width: 18%; height: 30%;
  background: linear-gradient(180deg, #7a5c3c 0%, #4a3420 100%);
  border-radius: 40% 40% 20% 20% / 40% 40% 80% 80%;
  animation: aqp-gown 8s ease-in-out infinite alternate;
}
.scn-angiers-quid-pro-quo .scarf {
  position: absolute; bottom: 42%; left: 26%; width: 8%; height: 6%;
  background: linear-gradient(180deg, #d0a060 0%, #b08050 100%);
  border-radius: 50% 50% 0 0; transform: rotate(-10deg);
  animation: aqp-scarf 5s ease-in-out infinite alternate;
}
@keyframes aqp-wall { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.85 } }
@keyframes aqp-arch { 0% { transform: translateY(0) scale(1) } 50% { transform: translateY(-4px) scale(1.02) } 100% { transform: translateY(0) scale(1) } }
@keyframes aqp-table { 0% { transform: perspective(600px) rotateX(20deg) translateY(0) } 50% { transform: perspective(600px) rotateX(22deg) translateY(-1px) } 100% { transform: perspective(600px) rotateX(20deg) translateY(0) } }
@keyframes aqp-candle { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.05) } 100% { transform: scaleY(0.95) } }
@keyframes aqp-glow { 0% { opacity:0.4; transform: scale(0.8) } 50% { opacity:0.7; transform: scale(1.1) } 100% { opacity:0.5; transform: scale(0.9) } }
@keyframes aqp-princess { 0% { transform: translateX(0) rotate(-1deg) } 25% { transform: translateX(2%) rotate(0deg) } 50% { transform: translateX(0) rotate(1deg) } 75% { transform: translateX(-1%) rotate(0deg) } 100% { transform: translateX(0) rotate(-1deg) } }
@keyframes aqp-gown { 0% { transform: scale(1) translateY(0) } 50% { transform: scale(1.02) translateY(-2px) } 100% { transform: scale(1) translateY(0) } }
@keyframes aqp-scarf { 0% { transform: rotate(-10deg) } 50% { transform: rotate(-8deg) translateY(-1px) } 100% { transform: rotate(-12deg) } }

.scn-angiers-marriage-offer {
  background:
    linear-gradient(180deg, #f5e6c8 0%, #e3cca0 40%, #c8b080 100%),
    radial-gradient(ellipse at 40% 60%, #ffe0a0 0%, transparent 60%);
}
.scn-angiers-marriage-offer .bg-throne {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #c8b080 0%, #a88860 100%);
  animation: amo-bg 12s ease-in-out infinite alternate;
}
.scn-angiers-marriage-offer .throne-back {
  position: absolute; bottom: 20%; left: 35%; width: 30%; height: 50%;
  background: linear-gradient(180deg, #b09060 0%, #806040 100%);
  border-radius: 30% 30% 10% 10% / 40% 40% 20% 20%;
  box-shadow: inset 0 -10px 20px rgba(0,0,0,0.2);
  animation: amo-throne 15s ease-in-out infinite;
}
.scn-angiers-marriage-offer .throne-arm {
  position: absolute; bottom: 28%; left: 30%; width: 8%; height: 20%;
  background: linear-gradient(180deg, #a08050 0%, #705030 100%);
  border-radius: 20% 20% 10% 10%;
  animation: amo-arm 9s ease-in-out infinite alternate;
}
.scn-angiers-marriage-offer .crown {
  position: absolute; bottom: 55%; left: 45%; width: 10%; height: 8%;
  background: linear-gradient(180deg, #ffd060 0%, #c09040 100%);
  border-radius: 50% 50% 10% 10%;
  box-shadow: 0 0 20px 5px #ffd060, 0 0 40px 10px rgba(255,208,96,0.4);
  animation: amo-crown 4s ease-in-out infinite alternate;
}
.scn-angiers-marriage-offer .king-figure {
  position: absolute; bottom: 22%; left: 38%; width: 14%; height: 40%;
  background: linear-gradient(180deg, #806040 0%, #503020 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: amo-king 6s ease-in-out infinite;
}
.scn-angiers-marriage-offer .king-arm {
  position: absolute; bottom: 35%; left: 50%; width: 6%; height: 15%;
  background: linear-gradient(180deg, #806040 0%, #503020 100%);
  border-radius: 20% 20% 10% 10%;
  transform-origin: top left; transform: rotate(30deg);
  animation: amo-armExtend 5s ease-in-out infinite;
}
.scn-angiers-marriage-offer .offering-light {
  position: absolute; bottom: 50%; left: 40%; width: 20%; height: 10%;
  background: radial-gradient(ellipse, #ffd060 0%, transparent 100%);
  opacity: 0.5;
  animation: amo-light 3s ease-in-out infinite alternate;
}
.scn-angiers-marriage-offer .shadow-floor {
  position: absolute; bottom: 0; left: 20%; width: 60%; height: 15%;
  background: linear-gradient(180deg, rgba(0,0,0,0.2) 0%, transparent 100%);
  border-radius: 50%;
  animation: amo-shadow 8s ease-in-out infinite;
}
@keyframes amo-bg { 0% { opacity:0.9 } 50% { opacity:1 } 100% { opacity:0.85 } }
@keyframes amo-throne { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.02) } 100% { transform: scaleY(0.98) } }
@keyframes amo-arm { 0% { transform: rotate(0deg) } 50% { transform: rotate(2deg) } 100% { transform: rotate(-1deg) } }
@keyframes amo-crown { 0% { transform: translateY(0) scale(1) } 50% { transform: translateY(-2px) scale(1.05) } 100% { transform: translateY(1px) scale(0.95) } }
@keyframes amo-king { 0% { transform: rotate(0deg) } 25% { transform: rotate(1deg) } 50% { transform: rotate(-1deg) } 75% { transform: rotate(0.5deg) } 100% { transform: rotate(0deg) } }
@keyframes amo-armExtend { 0% { transform: rotate(30deg) } 50% { transform: rotate(35deg) } 100% { transform: rotate(28deg) } }
@keyframes amo-light { 0% { opacity:0.3; transform: scale(0.8) } 50% { opacity:0.6; transform: scale(1.2) } 100% { opacity:0.4; transform: scale(0.9) } }
@keyframes amo-shadow { 0% { opacity:0.4 } 50% { opacity:0.6 } 100% { opacity:0.3 } }

.scn-angiers-margaret-consent {
  background:
    linear-gradient(180deg, #b8d8e8 0%, #e0e8d8 30%, #c8d0a0 100%),
    radial-gradient(ellipse at 30% 80%, #f8e8c0 0%, transparent 60%);
}
.scn-angiers-margaret-consent .sky-castle {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #a0c8e0 0%, #c8d8c0 100%);
  animation: amc-sky 12s ease-in-out infinite alternate;
}
.scn-angiers-margaret-consent .wall-stone {
  position: absolute; bottom: 30%; left: 10%; right: 10%; height: 40%;
  background: linear-gradient(180deg, #a89878 0%, #807060 100%);
  border-radius: 20% 20% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.2);
  animation: amc-wall 15s ease-in-out infinite;
}
.scn-angiers-margaret-consent .battlements {
  position: absolute; bottom: 60%; left: 10%; right: 10%; height: 10%;
  background: linear-gradient(180deg, #908070 0%, #706050 100%);
  border-radius: 50% 50% 0 0;
  animation: amc-battle 18s ease-in-out infinite alternate;
}
.scn-angiers-margaret-consent .parley-figure-a {
  position: absolute; bottom: 35%; left: 30%; width: 10%; height: 30%;
  background: linear-gradient(180deg, #806040 0%, #503020 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: amc-figureA 7s ease-in-out infinite;
}
.scn-angiers-margaret-consent .parley-figure-b {
  position: absolute; bottom: 35%; right: 30%; width: 10%; height: 30%;
  background: linear-gradient(180deg, #908070 0%, #605040 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: amc-figureB 9s ease-in-out infinite;
}
.scn-angiers-margaret-consent .banner-pole {
  position: absolute; bottom: 60%; left: 50%; width: 2%; height: 30%;
  background: linear-gradient(180deg, #705030 0%, #402010 100%);
  transform: translateX(-50%);
  animation: amc-pole 20s ease-in-out infinite;
}
.scn-angiers-margaret-consent .banner-cloth {
  position: absolute; bottom: 70%; left: 49%; width: 8%; height: 12%;
  background: linear-gradient(180deg, #c8553d 0%, #a0461a 100%);
  border-radius: 0 20% 20% 0;
  transform-origin: left center;
  animation: amc-banner 6s ease-in-out infinite alternate;
}
.scn-angiers-margaret-consent .sunburst {
  position: absolute; top: 10%; left: 35%; width: 30%; height: 20%;
  background: radial-gradient(ellipse, #ffe0a0 0%, transparent 100%);
  opacity: 0.4;
  animation: amc-sun 30s linear infinite;
}
@keyframes amc-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.7 } }
@keyframes amc-wall { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes amc-battle { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.03) } 100% { transform: scaleY(0.97) } }
@keyframes amc-figureA { 0% { transform: rotate(-2deg) } 25% { transform: rotate(1deg) } 50% { transform: rotate(0deg) } 75% { transform: rotate(-1deg) } 100% { transform: rotate(2deg) } }
@keyframes amc-figureB { 0% { transform: rotate(2deg) } 25% { transform: rotate(-1deg) } 50% { transform: rotate(0deg) } 75% { transform: rotate(1deg) } 100% { transform: rotate(-2deg) } }
@keyframes amc-pole { 0% { transform: translateX(-50%) rotate(0deg) } 50% { transform: translateX(-50%) rotate(1deg) } 100% { transform: translateX(-50%) rotate(-0.5deg) } }
@keyframes amc-banner { 0% { transform: rotate(-5deg) } 50% { transform: rotate(5deg) } 100% { transform: rotate(-2deg) } }
@keyframes amc-sun { 0% { transform: translateX(-10px) } 50% { transform: translateX(10px) } 100% { transform: translateX(-10px) } }

.scn-angiers-reignier-parley {
  background:
    linear-gradient(180deg, #e8b878 0%, #d09850 40%, #c08040 100%),
    radial-gradient(ellipse at 50% 100%, #f0c860 0%, transparent 70%);
}
.scn-angiers-reignier-parley .sky-flare {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #f0d080 0%, #e0b060 100%);
  animation: arp-sky 10s ease-in-out infinite alternate;
}
.scn-angiers-reignier-parley .ground-sharp {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #806040 0%, #503020 100%);
  clip-path: polygon(0% 30%, 10% 0%, 20% 40%, 40% 10%, 60% 25%, 80% 5%, 100% 20%, 100% 100%, 0% 100%);
  animation: arp-ground 8s ease-in-out infinite;
}
.scn-angiers-reignier-parley .silhouette-king {
  position: absolute; bottom: 25%; left: 20%; width: 18%; height: 60%;
  background: #1a1a1a;
  border-radius: 50% 50% 40% 40% / 50% 50% 40% 40%;
  transform: rotate(-5deg);
  animation: arp-king 4s ease-in-out infinite;
}
.scn-angiers-reignier-parley .silhouette-reignier {
  position: absolute; bottom: 25%; right: 20%; width: 16%; height: 55%;
  background: #1a1a1a;
  border-radius: 50% 50% 40% 40% / 50% 50% 40% 40%;
  transform: rotate(5deg);
  animation: arp-reignier 5s ease-in-out infinite alternate;
}
.scn-angiers-reignier-parley .hand-gesture {
  position: absolute; bottom: 40%; right: 22%; width: 8%; height: 12%;
  background: #1a1a1a;
  border-radius: 40% 40% 20% 20% / 50% 50% 30% 30%;
  transform: rotate(-20deg);
  animation: arp-hand 3s ease-in-out infinite;
}
.scn-angiers-reignier-parley .shadow-stripe {
  position: absolute; top: 0; left: 5%; width: 90%; height: 100%;
  background: linear-gradient(180deg, rgba(0,0,0,0.3) 0%, transparent 50%);
  pointer-events: none;
  animation: arp-stripe 6s ease-in-out infinite alternate;
}
.scn-angiers-reignier-parley .spear {
  position: absolute; bottom: 40%; left: 30%; width: 2%; height: 50%;
  background: linear-gradient(180deg, #a08050 0%, #705030 100%);
  transform: rotate(15deg);
  transform-origin: bottom center;
  animation: arp-spear 9s ease-in-out infinite;
}
@keyframes arp-sky { 0% { opacity:0.9 } 50% { opacity:1 } 100% { opacity:0.8 } }
@keyframes arp-ground { 0% { clip-path: polygon(0% 30%, 10% 0%, 20% 40%, 40% 10%, 60% 25%, 80% 5%, 100% 20%, 100% 100%, 0% 100%) } 50% { clip-path: polygon(0% 25%, 10% 5%, 20% 35%, 40% 15%, 60% 20%, 80% 10%, 100% 15%, 100% 100%, 0% 100%) } 100% { clip-path: polygon(0% 30%, 10% 0%, 20% 40%, 40% 10%, 60% 25%, 80% 5%, 100% 20%, 100% 100%, 0% 100%) } }
@keyframes arp-king { 0% { transform: rotate(-5deg) translateY(0) } 50% { transform: rotate(-7deg) translateY(-2px) } 100% { transform: rotate(-5deg) translateY(0) } }
@keyframes arp-reignier { 0% { transform: rotate(5deg) scale(1) } 50% { transform: rotate(8deg) scale(1.02) } 100% { transform: rotate(5deg) scale(1) } }
@keyframes arp-hand { 0% { transform: rotate(-20deg) translateX(0) } 50% { transform: rotate(-15deg) translateX(5px) } 100% { transform: rotate(-20deg) translateX(0) } }
@keyframes arp-stripe { 0% { opacity:0.5 } 50% { opacity:0.8 } 100% { opacity:0.4 } }
@keyframes arp-spear { 0% { transform: rotate(15deg) } 50% { transform: rotate(20deg) } 100% { transform: rotate(15deg) } }

/* battlefield-charles-mercy */
.scn-battlefield-charles-mercy {
  background: linear-gradient(180deg, #7ab3cf 0%, #c0d8e0 40%, #e8d4b0 80%, #cfb28a 100%);
}
.scn-battlefield-charles-mercy .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #b0d4ee 0%, #d4e8f0 60%, transparent);
  animation: bcm-sky 15s ease-in-out infinite alternate;
}
.scn-battlefield-charles-mercy .sun {
  position: absolute; top: 12%; right: 20%; width: 60px; height: 60px;
  background: radial-gradient(circle, #ffecb3 0%, #ffd780 50%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 40px 20px rgba(255, 215, 128, 0.6);
  animation: bcm-sun 8s ease-in-out infinite;
}
.scn-battlefield-charles-mercy .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #8c9e6b 0%, #6a7a4a 100%);
  border-radius: 60% 70% 0 0 / 30% 40% 0 0;
}
.scn-battlefield-charles-mercy .tent {
  position: absolute; bottom: 20%; left: 25%; width: 120px; height: 90px;
  background: linear-gradient(135deg, #cbae9a 0%, #9b7b65 100%);
  border-radius: 30% 30% 10% 10% / 50% 50% 10% 10%;
  clip-path: polygon(0% 0%, 50% 0%, 100% 0%, 85% 100%, 15% 100%);
  box-shadow: 0 8px 20px rgba(0,0,0,0.2);
  animation: bcm-tent 12s ease-in-out infinite alternate;
}
.scn-battlefield-charles-mercy .herald {
  position: absolute; bottom: 22%; left: 38%; width: 20px; height: 40px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bcm-herald 4s ease-in-out infinite;
}
.scn-battlefield-charles-mercy .flag {
  position: absolute; bottom: 26%; left: 42%; width: 4px; height: 30px;
  background: #6a4a2a; transform-origin: bottom;
}
.scn-battlefield-charles-mercy .flag::after {
  content: ''; position: absolute; top: 0; left: 4px; width: 20px; height: 14px;
  background: #b8865e; border-radius: 0 40% 40% 0;
  animation: bcm-flag-wave 3s ease-in-out infinite alternate;
}
.scn-battlefield-charles-mercy .grass {
  position: absolute; bottom: 10%; left: 5%; right: 5%; height: 10%;
  background: linear-gradient(90deg, #5e6b3e 0%, #7a8a4a 50%, #5e6b3e 100%);
  border-radius: 50% 50% 0 0; filter: blur(3px);
  animation: bcm-grass 5s ease-in-out infinite alternate;
}
@keyframes bcm-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.7 } }
@keyframes bcm-sun { 0% { transform: scale(1) } 50% { transform: scale(1.05) } 100% { transform: scale(0.95) } }
@keyframes bcm-tent { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(1px) } }
@keyframes bcm-herald { 0%,100% { transform: translateX(0) rotate(-1deg) } 50% { transform: translateX(5px) rotate(1deg) } }
@keyframes bcm-flag-wave { 0% { transform: skewX(-5deg) } 100% { transform: skewX(5deg) } }
@keyframes bcm-grass { 0% { transform: scaleY(1) } 100% { transform: scaleY(0.9) } }

/* battlefield-lucy-defiance */
.scn-battlefield-lucy-defiance {
  background: linear-gradient(180deg, #6a9fc0 0%, #aaccdd 40%, #edd9b0 80%, #c0a080 100%);
}
.scn-battlefield-lucy-defiance .sky {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(180deg, #8cbbd4 0%, #bfd9e6 60%, transparent);
  animation: bld-sky 10s ease-in-out infinite alternate;
}
.scn-battlefield-lucy-defiance .sun-hard {
  position: absolute; top: 10%; left: 30%; width: 50px; height: 50px;
  background: radial-gradient(circle, #fff0c0 0%, #ffe088 50%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 30px 15px rgba(255, 224, 136, 0.5);
}
.scn-battlefield-lucy-defiance .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(0deg, #6a7a4a 0%, #8a9a5a 100%);
  border-radius: 70% 50% 0 0 / 30% 20% 0 0;
}
.scn-battlefield-lucy-defiance .lucy {
  position: absolute; bottom: 18%; left: 35%; width: 22px; height: 44px;
  background: linear-gradient(180deg, #2a3a4a 0%, #0a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bld-lucy 3s ease-in-out infinite;
}
.scn-battlefield-lucy-defiance .herald-defiant {
  position: absolute; bottom: 18%; left: 55%; width: 20px; height: 42px;
  background: linear-gradient(180deg, #4a2a1a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bld-herald 3.5s ease-in-out infinite reverse;
}
.scn-battlefield-lucy-defiance .shadow-fight {
  position: absolute; bottom: 10%; left: 30%; right: 30%; height: 20%;
  background: linear-gradient(90deg, transparent, rgba(0,0,0,0.3) 50%, transparent);
  filter: blur(10px);
  animation: bld-shadow 4s ease-in-out infinite alternate;
}
.scn-battlefield-lucy-defiance .banner {
  position: absolute; bottom: 22%; left: 50%; width: 3px; height: 30px;
  background: #5a3a1a;
}
.scn-battlefield-lucy-defiance .banner::after {
  content: ''; position: absolute; top: 0; left: 3px; width: 18px; height: 12px;
  background: #b86a3a; border-radius: 0 30% 30% 0;
  animation: bld-banner 2s ease-in-out infinite alternate;
}
@keyframes bld-sky { 0% { opacity:0.9 } 50% { opacity:1 } 100% { opacity:0.8 } }
@keyframes bld-lucy { 0%,100% { transform: translateX(0) rotate(-2deg) } 50% { transform: translateX(3px) rotate(2deg) scaleY(1.05) } }
@keyframes bld-herald { 0%,100% { transform: translateX(0) rotate(2deg) } 50% { transform: translateX(-3px) rotate(-2deg) scaleY(0.95) } }
@keyframes bld-shadow { 0% { opacity:0.3 } 50% { opacity:0.6 } 100% { opacity:0.2 } }
@keyframes bld-banner { 0% { transform: skewX(-8deg) } 100% { transform: skewX(8deg) } }

/* battlefield-talbot-titles */
.scn-battlefield-talbot-titles {
  background: linear-gradient(180deg, #c8924a 0%, #e0b870 30%, #f0d8a0 60%, #d8b86a 100%);
  background-size: cover;
}
.scn-battlefield-talbot-titles .sky-gold {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #f2d89e 0%, #ffeac2 50%, transparent);
  animation: btt-sky 20s ease-in-out infinite alternate;
}
.scn-battlefield-talbot-titles .sun-majestic {
  position: absolute; top: 8%; left: 50%; width: 70px; height: 70px;
  background: radial-gradient(circle, #fff4d0 0%, #ffe088 50%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 60px 30px rgba(255, 224, 136, 0.7);
  animation: btt-sun 15s ease-in-out infinite;
}
.scn-battlefield-talbot-titles .clouds {
  position: absolute; top: 15%; left: 0; right: 0; height: 20%;
  background: radial-gradient(ellipse at 20% 100%, rgba(255,255,255,0.4) 0%, transparent 70%);
  filter: blur(8px);
  animation: btt-clouds 40s linear infinite;
}
.scn-battlefield-talbot-titles .talbot {
  position: absolute; bottom: 20%; left: 50%; width: 30px; height: 50px;
  background: linear-gradient(180deg, #5a3a2a 0%, #3a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: btt-talbot 6s ease-in-out infinite;
}
.scn-battlefield-talbot-titles .shield-1 {
  position: absolute; bottom: 35%; left: 25%; width: 40px; height: 48px;
  background: linear-gradient(135deg, #b86a3a 0%, #8a4a1a 100%);
  clip-path: polygon(0% 0%, 100% 0%, 80% 100%, 20% 100%);
  box-shadow: 0 4px 12px rgba(0,0,0,0.3);
  animation: btt-shield 8s ease-in-out infinite alternate;
}
.scn-battlefield-talbot-titles .shield-2 {
  position: absolute; bottom: 38%; left: 45%; width: 36px; height: 44px;
  background: linear-gradient(135deg, #a06a3a 0%, #6a3a1a 100%);
  clip-path: polygon(0% 0%, 100% 0%, 80% 100%, 20% 100%);
  box-shadow: 0 4px 12px rgba(0,0,0,0.2);
  animation: btt-shield 10s ease-in-out infinite alternate-reverse;
}
.scn-battlefield-talbot-titles .shield-3 {
  position: absolute; bottom: 32%; left: 65%; width: 38px; height: 46px;
  background: linear-gradient(135deg, #c08050 0%, #9a602a 100%);
  clip-path: polygon(0% 0%, 100% 0%, 80% 100%, 20% 100%);
  box-shadow: 0 4px 12px rgba(0,0,0,0.25);
  animation: btt-shield 9s ease-in-out infinite alternate;
  animation-delay: -3s;
}
.scn-battlefield-talbot-titles .banner-row {
  position: absolute; bottom: 30%; left: 10%; right: 10%; height: 8px;
  background: linear-gradient(90deg, #c08040 0%, #e0a060 50%, #c08040 100%);
  border-radius: 50%;
  filter: blur(2px);
  animation: btt-banner 5s ease-in-out infinite alternate;
}
@keyframes btt-sky { 0% { opacity:0.9 } 50% { opacity:1 } 100% { opacity:0.85 } }
@keyframes btt-sun { 0% { transform: scale(0.95) } 50% { transform: scale(1.05) } 100% { transform: scale(0.98) } }
@keyframes btt-clouds { 0% { transform: translateX(-20px) } 100% { transform: translateX(100vw) } }
@keyframes btt-talbot { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-3px) } }
@keyframes btt-shield { 0% { transform: translateY(0) rotate(-2deg) } 50% { transform: translateY(-2px) rotate(2deg) } 100% { transform: translateY(1px) rotate(-1deg) } }
@keyframes btt-banner { 0% { transform: scaleX(1) } 50% { transform: scaleX(1.2) } 100% { transform: scaleX(0.9) } }

/* battlefield-marshal-titles */
.scn-battlefield-marshal-titles {
  background: linear-gradient(180deg, #7a6a5a 0%, #9a8a6a 30%, #b8a07a 60%, #8a7a5a 100%);
}
.scn-battlefield-marshal-titles .sky-dim {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(180deg, #b0a090 0%, #c8b8a0 60%, transparent);
  animation: bmt-sky 12s ease-in-out infinite alternate;
}
.scn-battlefield-marshal-titles .sun-pale {
  position: absolute; top: 15%; left: 40%; width: 45px; height: 45px;
  background: radial-gradient(circle, #f0e0c0 0%, #d0c0a0 50%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 30px 15px rgba(208, 192, 160, 0.4);
  animation: bmt-sun 10s ease-in-out infinite;
}
.scn-battlefield-marshal-titles .dead-marshal {
  position: absolute; bottom: 0; left: 40%; width: 50px; height: 30px;
  background: linear-gradient(180deg, #6a5a4a 0%, #3a2a1a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 20% 20%;
  transform: rotate(10deg);
  box-shadow: inset 0 -4px 8px rgba(0,0,0,0.3);
  animation: bmt-dead 7s ease-in-out infinite alternate;
}
.scn-battlefield-marshal-titles .fly-blown {
  position: absolute; bottom: 8%; left: 38%; width: 10px; height: 6px;
  background: #5a4a3a; border-radius: 50%;
  filter: blur(2px);
  animation: bmt-fly 2s ease-in-out infinite;
}
.scn-battlefield-marshal-titles .title-scroll {
  position: absolute; bottom: 30%; left: 20%; width: 80px; height: 60px;
  background: linear-gradient(135deg, #d0b080 0%, #b09060 100%);
  border-radius: 5% 5% 20% 20%;
  box-shadow: 0 4px 12px rgba(0,0,0,0.3);
  animation: bmt-scroll 9s ease-in-out infinite alternate;
}
.scn-battlefield-marshal-titles .lucy-witness {
  position: absolute; bottom: 15%; left: 60%; width: 20px; height: 42px;
  background: linear-gradient(180deg, #3a4a5a 0%, #1a2a3a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bmt-lucy 4s ease-in-out infinite;
}
.scn-battlefield-marshal-titles .mud {
  position: absolute; bottom: 0; left: 0; right: 0; height: 8%;
  background: linear-gradient(0deg, #4a3a2a 0%, #6a5a4a 100%);
  border-radius: 50% 50% 0 0;
  filter: blur(4px);
  animation: bmt-mud 6s ease-in-out infinite alternate;
}
@keyframes bmt-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.7 } }
@keyframes bmt-sun { 0% { transform: scale(0.95) } 50% { transform: scale(1.02) } 100% { transform: scale(0.98) } }
@keyframes bmt-dead { 0% { transform: rotate(8deg) translateY(0) } 50% { transform: rotate(12deg) translateY(-2px) } 100% { transform: rotate(10deg) translateY(1px) } }
@keyframes bmt-fly { 0% { transform: translate(0,0) } 50% { transform: translate(2px,-3px) } 100% { transform: translate(-1px,1px) } }
@keyframes bmt-scroll { 0% { transform: translateY(0) rotate(-2deg) } 50% { transform: translateY(-3px) rotate(2deg) scale(1.02) } 100% { transform: translateY(1px) rotate(-1deg) } }
@keyframes bmt-lucy { 0%,100% { transform: translateX(0) } 50% { transform: translateX(4px) rotate(3deg) } }
@keyframes bmt-mud { 0% { opacity:0.6 } 50% { opacity:1 } 100% { opacity:0.7 } }

/* ===== gascony-lucy-plea (tense, sunlit) ===== */
.scn-gascony-lucy-plea {
  background:
    linear-gradient(180deg, #f0e6c0 0%, #c8b880 40%, #a08850 100%),
    radial-gradient(ellipse at 60% 80%, #e0d090 0%, transparent 70%),
    linear-gradient(0deg, #806040 0%, #c8b880 30%);
}
.scn-gascony-lucy-plea .sun-burst {
  position: absolute; top: 0; left: 0; right: 0; bottom: 0;
  background: radial-gradient(ellipse at 70% 20%, rgba(255,220,150,0.6) 0%, rgba(255,200,100,0.3) 40%, transparent 70%);
  animation: glp-sun 5s ease-in-out infinite alternate;
}
.scn-gascony-lucy-plea .landscape {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #7a6a4a 0%, #5a4a2a 60%, #3a2a10 100%);
  border-radius: 0 0 60% 40% / 0 0 20% 30%;
  clip-path: polygon(0% 20%, 20% 10%, 40% 25%, 60% 15%, 80% 30%, 100% 20%, 100% 100%, 0% 100%);
  animation: glp-land 12s ease-in-out infinite alternate;
}
.scn-gascony-lucy-plea .spear-wall {
  position: absolute; bottom: 35%; left: 15%; right: 15%;
  display: flex; justify-content: space-evenly; height: 30%;
  background: repeating-conic-gradient(#8a7030 0% 1%, #5a4020 1% 2%, transparent 2% 4%) 0 0 / 100% 20%;
  filter: blur(1px);
  animation: glp-spear 3s ease-in-out infinite alternate;
}
.scn-gascony-lucy-plea .pleading-figure {
  position: absolute; bottom: 22%; left: 38%; width: 30px; height: 60px;
  background: linear-gradient(180deg, #3a2a2a 0%, #1a1a1a 50%, #0a0a0a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: glp-plead 2s ease-in-out infinite;
}
.scn-gascony-lucy-plea .tear-drop {
  position: absolute; bottom: 30%; left: 50%; width: 6px; height: 10px;
  background: radial-gradient(circle at 50% 30%, #a0c8e0, #6090b0);
  border-radius: 50% 50% 50% 50% / 30% 30% 70% 70%;
  animation: glp-tear 4s ease-in-out infinite;
}
.scn-gascony-lucy-plea .dust-dune {
  position: absolute; bottom: 0; left: 0; right: 0; height: 15%;
  background: #8a7030;
  clip-path: polygon(0% 40%, 15% 20%, 30% 35%, 50% 10%, 70% 30%, 85% 15%, 100% 25%, 100% 100%, 0% 100%);
  opacity: 0.4;
  animation: glp-dune 8s ease-in-out infinite alternate;
}
@keyframes glp-sun {
  0% { opacity: 0.7; transform: scale(0.95); }
  50% { opacity: 1; transform: scale(1.05); }
  100% { opacity: 0.8; transform: scale(1); }
}
@keyframes glp-land {
  0% { transform: translateY(0); }
  50% { transform: translateY(-4px); }
  100% { transform: translateY(2px); }
}
@keyframes glp-spear {
  0% { opacity: 0.6; filter: blur(1px); }
  50% { opacity: 1; filter: blur(0px); }
  100% { opacity: 0.7; filter: blur(2px); }
}
@keyframes glp-plead {
  0% { transform: rotate(-5deg) translateY(0); }
  50% { transform: rotate(3deg) translateY(-5px); }
  100% { transform: rotate(-2deg) translateY(0); }
}
@keyframes glp-tear {
  0% { transform: translate(0,0) scale(1); opacity: 0.8; }
  50% { transform: translate(8px,-6px) scale(1.3); opacity: 1; }
  100% { transform: translate(16px,-12px) scale(0.7); opacity: 0.3; }
}
@keyframes glp-dune {
  0% { transform: translateX(0); clip-path: polygon(0% 40%, 15% 20%, 30% 35%, 50% 10%, 70% 30%, 85% 15%, 100% 25%, 100% 100%, 0% 100%); }
  50% { transform: translateX(5px); clip-path: polygon(0% 45%, 15% 25%, 30% 40%, 50% 15%, 70% 35%, 85% 20%, 100% 30%, 100% 100%, 0% 100%); }
  100% { transform: translateX(-3px); clip-path: polygon(0% 35%, 15% 15%, 30% 30%, 50% 5%, 70% 25%, 85% 10%, 100% 20%, 100% 100%, 0% 100%); }
}

/* ===== gascony-york-tears (dark, sunlit) ===== */
.scn-gascony-york-tears {
  background:
    linear-gradient(180deg, #2a3a4a 0%, #4a5a6a 30%, #6a7a8a 60%, #8a9a9a 100%),
    radial-gradient(ellipse at 20% 30%, #a0b0c0 0%, transparent 60%);
}
.scn-gascony-york-tears .dusk-sky {
  position: absolute; inset: 0 0 0 0;
  background: linear-gradient(180deg, #6a7a8a 0%, #8a9a9a 40%, #a0b0c0 100%);
  opacity: 0.5;
  animation: gyt-sky 10s ease-in-out infinite alternate;
}
.scn-gascony-york-tears .weeping-figure {
  position: absolute; bottom: 20%; left: 40%; width: 40px; height: 70px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 60%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: center bottom;
  animation: gyt-weep 3s ease-in-out infinite;
}
.scn-gascony-york-tears .tear-stream {
  position: absolute; bottom: 35%; width: 4px; height: 20px;
  background: radial-gradient(ellipse at 50% 0%, #a0c8e0, #406090);
  border-radius: 0 0 50% 50%;
  animation: gyt-tear 3s ease-in-out infinite;
}
.scn-gascony-york-tears .tear-a { left: 44%; animation-delay: 0s; }
.scn-gascony-york-tears .tear-b { left: 50%; animation-delay: 1.5s; }
.scn-gascony-york-tears .ground-shadow {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 30% 30% 0 0;
  opacity: 0.8;
  animation: gyt-shadow 8s ease-in-out infinite alternate;
}
.scn-gascony-york-tears .broken-banner {
  position: absolute; top: 20%; right: 15%; width: 30px; height: 50px;
  background: linear-gradient(90deg, #a08060 0%, #705030 100%);
  clip-path: polygon(0% 0%, 100% 10%, 90% 50%, 100% 100%, 0% 90%);
  transform: rotate(15deg);
  animation: gyt-banner 5s ease-in-out infinite alternate;
}
@keyframes gyt-sky {
  0% { opacity: 0.4; transform: scale(1); }
  50% { opacity: 0.6; transform: scale(1.02); }
  100% { opacity: 0.5; transform: scale(0.98); }
}
@keyframes gyt-weep {
  0% { transform: rotate(0) translateY(0); }
  25% { transform: rotate(3deg) translateY(-2px); }
  50% { transform: rotate(0) translateY(0); }
  75% { transform: rotate(-3deg) translateY(-2px); }
  100% { transform: rotate(0) translateY(0); }
}
@keyframes gyt-tear {
  0% { transform: translateY(0) scaleX(1); opacity: 1; }
  50% { transform: translateY(15px) scaleX(0.5); opacity: 0.6; }
  100% { transform: translateY(30px) scaleX(0.2); opacity: 0.1; }
}
@keyframes gyt-shadow {
  0% { opacity: 0.7; transform: translateY(0); }
  50% { opacity: 0.9; transform: translateY(-3px); }
  100% { opacity: 0.8; transform: translateY(2px); }
}
@keyframes gyt-banner {
  0% { transform: rotate(15deg) scale(1); }
  50% { transform: rotate(20deg) scale(1.1); }
  100% { transform: rotate(10deg) scale(0.9); }
}

/* ===== gascony-young-john-news (dark, sunlit) ===== */
.scn-gascony-young-john-news {
  background:
    linear-gradient(180deg, #4a3a2a 0%, #6a5a4a 30%, #8a7a6a 60%, #a09080 100%),
    radial-gradient(ellipse at 50% 10%, #c0a080 0%, transparent 60%);
}
.scn-gascony-young-john-news .low-sun {
  position: absolute; top: 5%; left: 50%; width: 60px; height: 60px;
  margin-left: -30px;
  background: radial-gradient(circle, #d0b080 0%, #b09060 40%, transparent 70%);
  border-radius: 50%;
  animation: gyj-sun 15s ease-in-out infinite alternate;
}
.scn-gascony-young-john-news .harsh-land {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  clip-path: polygon(0% 30%, 10% 20%, 25% 35%, 40% 15%, 55% 25%, 70% 10%, 85% 20%, 100% 30%, 100% 100%, 0% 100%);
  animation: gyj-land 8s ease-in-out infinite alternate;
}
.scn-gascony-young-john-news .father-son {
  position: absolute; bottom: 25%; left: 40%; width: 50px; height: 60px;
  background: transparent;
}
.scn-gascony-young-john-news .father-son::before,
.scn-gascony-young-john-news .father-son::after {
  content: '';
  position: absolute;
  bottom: 0;
  width: 30px; height: 50px;
  background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
}
.scn-gascony-young-john-news .father-son::before {
  left: 0;
  transform: rotate(10deg);
  animation: gyj-father 4s ease-in-out infinite;
}
.scn-gascony-young-john-news .father-son::after {
  left: 20px;
  transform: rotate(-10deg) scaleY(0.8);
  animation: gyj-son 4s ease-in-out infinite alternate;
}
.scn-gascony-young-john-news .embrace-shadow {
  position: absolute; bottom: 20%; left: 35%; width: 60px; height: 30px;
  background: rgba(0,0,0,0.3);
  border-radius: 50%;
  filter: blur(4px);
  animation: gyj-shade 5s ease-in-out infinite alternate;
}
.scn-gascony-young-john-news .dust-sparkle {
  position: absolute; top: 30%; left: 20%; width: 4px; height: 4px;
  background: #e0c080;
  border-radius: 50%;
  box-shadow: 0 0 6px 2px rgba(224,192,128,0.5);
  animation: gyj-spark 3s ease-in-out infinite;
}
.scn-gascony-young-john-news .fate-feather {
  position: absolute; top: 15%; right: 20%; width: 20px; height: 6px;
  background: #a09080;
  clip-path: polygon(0% 0%, 100% 40%, 80% 100%, 0% 100%);
  transform: rotate(30deg);
  animation: gyj-feather 7s linear infinite;
}
@keyframes gyj-sun {
  0% { transform: scale(1); opacity: 0.7; }
  50% { transform: scale(1.1); opacity: 0.9; }
  100% { transform: scale(0.95); opacity: 0.8; }
}
@keyframes gyj-land {
  0% { transform: translateY(0); }
  50% { transform: translateY(-5px); }
  100% { transform: translateY(3px); }
}
@keyframes gyj-father {
  0% { transform: rotate(10deg) translateY(0); }
  50% { transform: rotate(12deg) translateY(-3px); }
  100% { transform: rotate(8deg) translateY(0); }
}
@keyframes gyj-son {
  0% { transform: rotate(-10deg) scaleY(0.8); }
  50% { transform: rotate(-12deg) scaleY(0.75); }
  100% { transform: rotate(-8deg) scaleY(0.85); }
}
@keyframes gyj-shade {
  0% { transform: translateX(0) scale(1); opacity: 0.3; }
  50% { transform: translateX(5px) scale(1.2); opacity: 0.5; }
  100% { transform: translateX(-3px) scale(0.9); opacity: 0.4; }
}
@keyframes gyj-spark {
  0% { transform: translate(0,0) scale(1); opacity: 1; }
  50% { transform: translate(10px,-10px) scale(1.5); opacity: 0.6; }
  100% { transform: translate(20px,-20px) scale(0.5); opacity: 0; }
}
@keyframes gyj-feather {
  0% { transform: rotate(30deg) translateY(0); opacity: 0.8; }
  50% { transform: rotate(40deg) translateY(-15px); opacity: 1; }
  100% { transform: rotate(20deg) translateY(-30px); opacity: 0.2; }
}

/* ===== gascony-curse-somerset (dark, sunlit) ===== */
.scn-gascony-curse-somerset {
  background:
    linear-gradient(180deg, #3a2a2a 0%, #5a3a3a 30%, #7a5a4a 60%, #9a7a6a 100%),
    radial-gradient(ellipse at 80% 20%, #b0a090 0%, transparent 60%);
}
.scn-gascony-curse-somerset .sun-scorch {
  position: absolute; top: 10%; right: 10%; width: 50px; height: 50px;
  background: radial-gradient(circle, #d0c0a0 0%, #b0a080 40%, transparent 70%);
  border-radius: 50%;
  animation: gcs-sun 6s ease-in-out infinite alternate;
}
.scn-gascony-curse-somerset .vulture-wing {
  position: absolute; top: 30%; width: 80px; height: 30px;
  background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%);
  border-radius: 30% 70% 30% 70% / 60% 40% 60% 40%;
  filter: blur(1px);
  animation: gcs-wing 4s ease-in-out infinite alternate;
}
.scn-gascony-curse-somerset .wing-left {
  left: 10%;
  transform: rotate(20deg) scaleX(-1);
  animation-delay: 0s;
}
.scn-gascony-curse-somerset .wing-right {
  right: 10%;
  transform: rotate(-20deg);
  animation-delay: 2s;
}
.scn-gascony-curse-somerset .cursed-hand {
  position: absolute; bottom: 30%; left: 45%; width: 20px; height: 30px;
  background: linear-gradient(180deg, #3a2a2a 0%, #1a1a1a 100%);
  border-radius: 30% 30% 50% 50% / 20% 20% 60% 60%;
  transform-origin: bottom center;
  animation: gcs-hand 3s ease-in-out infinite;
}
.scn-gascony-curse-somerset .broken-chain {
  position: absolute; bottom: 20%; left: 30%; right: 30%; height: 15px;
  background: repeating-linear-gradient(90deg, #6a5a4a 0px, #6a5a4a 6px, transparent 6px, transparent 10px);
  transform: rotate(-5deg);
  animation: gcs-chain 5s ease-in-out infinite alternate;
}
.scn-gascony-curse-somerset .shadow-bind {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, transparent 0%, rgba(10,10,10,0.6) 100%);
  animation: gcs-shade 8s ease-in-out infinite alternate;
}
@keyframes gcs-sun {
  0% { transform: scale(1) translate(0,0); opacity: 0.7; }
  50% { transform: scale(1.1) translate(5px,-5px); opacity: 1; }
  100% { transform: scale(0.95) translate(-3px,3px); opacity: 0.8; }
}
@keyframes gcs-wing {
  0% { transform: rotate(20deg) scaleX(-1) translateY(0); }
  50% { transform: rotate(25deg) scaleX(-1) translateY(-5px); }
  100% { transform: rotate(15deg) scaleX(-1) translateY(2px); }
}
@keyframes gcs-hand {
  0% { transform: translateX(0) rotate(0); }
  25% { transform: translateX(-5px) rotate(-10deg); }
  50% { transform: translateX(0) rotate(0); }
  75% { transform: translateX(5px) rotate(10deg); }
  100% { transform: translateX(0) rotate(0); }
}
@keyframes gcs-chain {
  0% { transform: rotate(-5deg) translateX(0); opacity: 0.6; }
  50% { transform: rotate(-8deg) translateX(3px); opacity: 0.8; }
  100% { transform: rotate(-2deg) translateX(-2px); opacity: 0.7; }
}
@keyframes gcs-shade {
  0% { opacity: 0.4; transform: translateY(0); }
  50% { opacity: 0.6; transform: translateY(-5px); }
  100% { opacity: 0.5; transform: translateY(3px); }
}

/* burgundy-lags-behind - tense overcast */
.scn-burgundy-lags-behind {
  background: linear-gradient(180deg, #3a3a3f 0%, #4a4a50 30%, #2f2f33 100%),
              radial-gradient(ellipse at 50% 0%, #5a5a60 0%, transparent 60%);
}
.scn-burgundy-lags-behind .sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #444450 0%, #3a3a40 100%);
  animation: blb-sky 6s ease-in-out infinite alternate;
}
.scn-burgundy-lags-behind .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #2a2a2e 0%, #1e1e22 100%);
  border-radius: 20% 40% 0 0 / 10% 20% 0 0;
  animation: blb-ground 12s ease-in-out infinite;
}
.scn-burgundy-lags-behind .troops-back {
  position: absolute; bottom: 40%; left: 5%; width: 30%; height: 20%;
  background: repeating-linear-gradient(90deg, #3a3a3e 0px, #3a3a3e 8px, transparent 8px, transparent 12px);
  mask: linear-gradient(90deg, transparent 0%, #000 20%, #000 80%, transparent 100%);
  animation: blb-march 3s ease-in-out infinite;
}
.scn-burgundy-lags-behind .troops-front {
  position: absolute; bottom: 35%; left: 10%; width: 40%; height: 25%;
  background: repeating-linear-gradient(90deg, #2f2f33 0px, #2f2f33 10px, transparent 10px, transparent 14px);
  mask: linear-gradient(90deg, transparent 5%, #000 30%, #000 70%, transparent 95%);
  animation: blb-march 2.5s ease-in-out infinite reverse;
}
.scn-burgundy-lags-behind .burgundy-horseman {
  position: absolute; bottom: 32%; left: 70%; width: 30px; height: 40px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 40% 40% 20% 20% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: blb-lag 8s ease-in-out infinite;
}
.scn-burgundy-lags-behind .banner {
  position: absolute; bottom: 38%; left: 72%; width: 20px; height: 30px;
  background: linear-gradient(180deg, #c8553d 0%, #a0461a 100%);
  border-radius: 4px 4px 2px 2px;
  transform-origin: left bottom;
  animation: blb-flap 1.2s ease-in-out infinite;
}
.scn-burgundy-lags-behind .trumpet-sound {
  position: absolute; bottom: 50%; left: 78%; width: 8px; height: 20px;
  background: radial-gradient(circle, #c8a040 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(3px);
  opacity: 0.6;
  animation: blb-trumpet 3s ease-in-out infinite alternate;
}
@keyframes blb-sky { 0% { opacity: 0.7 } 50% { opacity: 0.9 } 100% { opacity: 0.6 } }
@keyframes blb-ground { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes blb-march { 0% { transform: translateX(0) } 25% { transform: translateX(3px) } 50% { transform: translateX(0) } 75% { transform: translateX(-2px) } 100% { transform: translateX(0) } }
@keyframes blb-lag { 0% { transform: translateX(0) translateY(0) } 50% { transform: translateX(-10px) translateY(-3px) } 100% { transform: translateX(0) translateY(0) } }
@keyframes blb-flap { 0% { transform: rotate(-5deg) } 25% { transform: rotate(10deg) } 50% { transform: rotate(-8deg) } 75% { transform: rotate(12deg) } 100% { transform: rotate(-5deg) } }
@keyframes blb-trumpet { 0% { opacity: 0.3; transform: scale(1) } 50% { opacity: 0.9; transform: scale(1.2) } 100% { opacity: 0.4; transform: scale(1) } }

/* joan-addresses-burgundy - calm overcast */
.scn-joan-addresses-burgundy {
  background: linear-gradient(180deg, #3f4045 0%, #4b4c52 40%, #35363a 100%),
              radial-gradient(ellipse at 50% 100%, #4f5058 0%, transparent 70%);
}
.scn-joan-addresses-burgundy .sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #4e4f56 0%, #3e3f44 100%);
  animation: jab-sky 18s ease-in-out infinite alternate;
}
.scn-joan-addresses-burgundy .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #2d2e32 0%, #1f2024 100%);
  border-radius: 30% 10% 0 0 / 40% 20% 0 0;
  animation: jab-ground 20s ease-in-out infinite;
}
.scn-joan-addresses-burgundy .joan-figure {
  position: absolute; bottom: 28%; left: 30%; width: 22px; height: 45px;
  background: linear-gradient(180deg, #3a3a3e 0%, #2a2a2e 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: jab-joan 8s ease-in-out infinite alternate;
}
.scn-joan-addresses-burgundy .burgundy-figure {
  position: absolute; bottom: 28%; left: 55%; width: 28px; height: 50px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 40% 40% 20% 20% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: jab-burgundy 8s ease-in-out infinite alternate-reverse;
}
.scn-joan-addresses-burgundy .speech-glow {
  position: absolute; bottom: 40%; left: 35%; width: 16px; height: 12px;
  background: radial-gradient(circle, #b0a080 0%, transparent 80%);
  filter: blur(4px);
  opacity: 0.5;
  animation: jab-speech 6s ease-in-out infinite alternate;
}
.scn-joan-addresses-burgundy .distant-hill {
  position: absolute; bottom: 35%; left: 0; right: 0; height: 15%;
  background: linear-gradient(180deg, #3a3b40 0%, #2e2f34 100%);
  border-radius: 60% 40% 0 0 / 80% 50% 0 0;
  animation: jab-hill 25s ease-in-out infinite;
}
@keyframes jab-sky { 0% { opacity: 0.85 } 50% { opacity: 0.95 } 100% { opacity: 0.8 } }
@keyframes jab-ground { 0% { transform: translateY(0) } 50% { transform: translateY(-1px) } 100% { transform: translateY(0) } }
@keyframes jab-joan { 0% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(-2px) rotate(2deg) } 100% { transform: translateY(0) rotate(-1deg) } }
@keyframes jab-burgundy { 0% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(-1px) rotate(-3deg) } 100% { transform: translateY(0) rotate(1deg) } }
@keyframes jab-speech { 0% { opacity: 0.3; transform: scale(0.9) } 50% { opacity: 0.7; transform: scale(1.1) } 100% { opacity: 0.4; transform: scale(1) } }
@keyframes jab-hill { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }

/* burgundy-relents - calm overcast */
.scn-burgundy-relents {
  background: linear-gradient(180deg, #404146 0%, #4d4e55 35%, #37383d 100%),
              radial-gradient(ellipse at 50% 100%, #52535c 0%, transparent 60%);
}
.scn-burgundy-relents .sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #505156 0%, #3e3f44 100%);
  animation: br-sky 22s ease-in-out infinite alternate;
}
.scn-burgundy-relents .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #2e2f34 0%, #1b1c20 100%);
  border-radius: 20% 30% 0 0 / 30% 40% 0 0;
  animation: br-ground 18s ease-in-out infinite;
}
.scn-burgundy-relents .joan-figure {
  position: absolute; bottom: 28%; left: 38%; width: 22px; height: 45px;
  background: linear-gradient(180deg, #3a3a3e 0%, #2a2a2e 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: br-embrace 8s ease-in-out infinite alternate;
}
.scn-burgundy-relents .burgundy-figure {
  position: absolute; bottom: 28%; left: 50%; width: 28px; height: 50px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 40% 40% 20% 20% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: br-embrace 8s ease-in-out infinite alternate-reverse;
}
.scn-burgundy-relents .embrace-shadow {
  position: absolute; bottom: 26%; left: 38%; width: 40%; height: 5%;
  background: radial-gradient(ellipse, rgba(0,0,0,0.3) 0%, transparent 80%);
  filter: blur(4px);
  animation: br-shadow 10s ease-in-out infinite alternate;
}
.scn-burgundy-relents .banner-lowered {
  position: absolute; bottom: 33%; left: 45%; width: 16px; height: 24px;
  background: linear-gradient(180deg, #c8553d 0%, #a0461a 100%);
  border-radius: 2px;
  transform-origin: left bottom;
  animation: br-lower 12s ease-in-out infinite;
}
.scn-burgundy-relents .light-burst {
  position: absolute; bottom: 40%; left: 44%; width: 30px; height: 30px;
  background: radial-gradient(circle, #d0c0a0 0%, transparent 60%);
  filter: blur(6px);
  opacity: 0.6;
  animation: br-light 8s ease-in-out infinite alternate;
}
@keyframes br-sky { 0% { opacity: 0.9 } 50% { opacity: 0.95 } 100% { opacity: 0.85 } }
@keyframes br-ground { 0% { transform: translateY(0) } 50% { transform: translateY(-1px) } 100% { transform: translateY(0) } }
@keyframes br-embrace { 0% { transform: translateX(0) translateY(0) } 50% { transform: translateX(2px) translateY(-2px) } 100% { transform: translateX(0) translateY(0) } }
@keyframes br-shadow { 0% { opacity: 0.4; transform: scaleY(0.8) } 50% { opacity: 0.6; transform: scaleY(1) } 100% { opacity: 0.3; transform: scaleY(0.9) } }
@keyframes br-lower { 0% { transform: rotate(-20deg) translateY(0) } 50% { transform: rotate(-10deg) translateY(3px) } 100% { transform: rotate(-20deg) translateY(0) } }
@keyframes br-light { 0% { opacity: 0.4; transform: scale(0.9) } 50% { opacity: 0.8; transform: scale(1.1) } 100% { opacity: 0.5; transform: scale(1) } }

/* burgundy-defects - calm overcast */
.scn-burgundy-defects {
  background: linear-gradient(180deg, #424348 0%, #505159 30%, #383940 100%),
              radial-gradient(ellipse at 50% 100%, #555660 0%, transparent 60%);
}
.scn-burgundy-defects .sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #525358 0%, #404145 100%);
  animation: bd-sky 20s ease-in-out infinite alternate;
}
.scn-burgundy-defects .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #303135 0%, #1c1d21 100%);
  border-radius: 10% 20% 0 0 / 20% 30% 0 0;
  animation: bd-ground 16s ease-in-out infinite;
}
.scn-burgundy-defects .burgundy-figure {
  position: absolute; bottom: 30%; left: 35%; width: 28px; height: 48px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 40% 40% 20% 20% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: bd-turn 10s ease-in-out infinite;
}
.scn-burgundy-defects .talbot-figure {
  position: absolute; bottom: 30%; left: 55%; width: 26px; height: 46px;
  background: linear-gradient(180deg, #3a3a3e 0%, #2a2a2e 100%);
  border-radius: 40% 40% 20% 20% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: bd-turn 10s ease-in-out infinite reverse;
}
.scn-burgundy-defects .troops-turning {
  position: absolute; bottom: 35%; left: 5%; width: 25%; height: 20%;
  background: repeating-linear-gradient(90deg, #3a3a3e 0px, #3a3a3e 6px, transparent 6px, transparent 10px);
  mask: linear-gradient(90deg, transparent 0%, #000 30%, #000 70%, transparent 100%);
  animation: bd-turn 8s ease-in-out infinite alternate;
}
.scn-burgundy-defects .banner-turning {
  position: absolute; bottom: 37%; left: 40%; width: 18px; height: 28px;
  background: linear-gradient(180deg, #a0461a 0%, #7a2e0a 100%);
  border-radius: 2px;
  transform-origin: left bottom;
  animation: bd-banner 6s ease-in-out infinite alternate;
}
.scn-burgundy-defects .parting-mist {
  position: absolute; bottom: 20%; left: 0; right: 0; height: 20%;
  background: linear-gradient(90deg, rgba(120,125,130,0.3) 0%, transparent 40%, transparent 60%, rgba(120,125,130,0.2) 100%);
  filter: blur(8px);
  animation: bd-mist 30s ease-in-out infinite alternate;
}
@keyframes bd-sky { 0% { opacity: 0.9 } 50% { opacity: 0.8 } 100% { opacity: 0.95 } }
@keyframes bd-ground { 0% { transform: translateY(0) } 50% { transform: translateY(-1px) } 100% { transform: translateY(0) } }
@keyframes bd-turn { 0% { transform: rotate(0deg) translateX(0) } 25% { transform: rotate(5deg) translateX(3px) } 50% { transform: rotate(0deg) translateX(0) } 75% { transform: rotate(-5deg) translateX(-3px) } 100% { transform: rotate(0deg) translateX(0) } }
@keyframes bd-banner { 0% { transform: rotate(-15deg) } 50% { transform: rotate(15deg) } 100% { transform: rotate(-15deg) } }
@keyframes bd-mist { 0% { opacity: 0.3; transform: translateX(0) } 50% { opacity: 0.5; transform: translateX(5%) } 100% { opacity: 0.2; transform: translateX(-5%) } }

.scn-yield-ultimatum {
  background: linear-gradient(180deg, #f5e6c8 0%, #d4b896 20%, #c9a67b 100%),
              radial-gradient(ellipse at 30% 20%, #fff0d0 0%, transparent 60%);
}
.scn-yield-ultimatum .wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(90deg, #e8d4b0 0%, #dac3a0 50%, #e0c8a8 100%);
  box-shadow: inset 0 0 120px rgba(0,0,0,.15);
  animation: yu-wall 12s ease-in-out infinite alternate;
}
.scn-yield-ultimatum .window-arch {
  position: absolute; top: 8%; left: 10%; width: 28%; height: 40%;
  background: radial-gradient(ellipse at 50% 30%, #ffe8b0 0%, #ccb080 70%);
  border-radius: 50% 50% 10% 10% / 60% 60% 20% 20%;
  box-shadow: 0 0 60px 20px rgba(255,200,100,.4);
  animation: yu-window 8s ease-in-out infinite alternate;
}
.scn-yield-ultimatum .light-beam {
  position: absolute; top: 5%; left: 15%; width: 8%; height: 60%;
  background: linear-gradient(180deg, rgba(255,230,180,.6) 0%, transparent 100%);
  filter: blur(8px);
  animation: yu-beam 6s ease-in-out infinite alternate;
}
.scn-yield-ultimatum .throne {
  position: absolute; bottom: 20%; left: 50%; transform: translateX(-50%);
  width: 120px; height: 130px;
  background: linear-gradient(180deg, #b09060 0%, #8a6a40 100%);
  border-radius: 40% 40% 5% 5% / 60% 60% 20% 20%;
  box-shadow: 0 10px 30px rgba(0,0,0,.3);
  animation: yu-throne 4s ease-in-out infinite;
}
.scn-yield-ultimatum .figure-york {
  position: absolute; bottom: 18%; left: 30%;
  width: 32px; height: 70px;
  background: linear-gradient(180deg, #4a3828 0%, #2a1a0e 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: yu-figure-y 3s ease-in-out infinite;
}
.scn-yield-ultimatum .figure-winchester {
  position: absolute; bottom: 18%; right: 28%;
  width: 36px; height: 72px;
  background: linear-gradient(180deg, #5a3a2a 0%, #3a1a0a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: yu-figure-w 3.5s ease-in-out infinite;
}
.scn-yield-ultimatum .crown {
  position: absolute; bottom: 50%; left: 50%; transform: translateX(-50%);
  width: 20px; height: 14px;
  background: radial-gradient(circle at 50% 30%, #ffd700 0%, #b8860b 100%);
  border-radius: 50% 50% 0 0;
  box-shadow: 0 0 20px 6px rgba(255,215,0,.4);
  animation: yu-crown 5s ease-in-out infinite;
}
.scn-yield-ultimatum .sword {
  position: absolute; bottom: 12%; left: 38%;
  width: 4px; height: 50px;
  background: linear-gradient(180deg, #c0c0c0 0%, #808080 100%);
  border-radius: 2px;
  transform: rotate(-15deg);
  animation: yu-sword 2s ease-in-out infinite alternate;
}
.scn-yield-ultimatum .dust {
  position: absolute; top: 20%; left: 20%;
  width: 100px; height: 100px;
  background: radial-gradient(circle, rgba(255,220,180,.3) 0%, transparent 70%);
  filter: blur(4px);
  animation: yu-dust 15s linear infinite;
}
@keyframes yu-wall { 0% { opacity:.9 } 50%{ opacity:1 } 100%{ opacity:.85 } }
@keyframes yu-window { 0%{ transform: scaleY(1); opacity:.8 } 50%{ transform: scaleY(1.02); opacity:1 } 100%{ transform: scaleY(.98); opacity:.9 } }
@keyframes yu-beam { 0%{ opacity:.3; transform: translateX(0) } 50%{ opacity:.6; transform: translateX(4px) } 100%{ opacity:.4; transform: translateX(-2px) } }
@keyframes yu-throne { 0%,100%{ transform: translateX(-50%) } 50%{ transform: translateX(-50%) translateY(-3px) } }
@keyframes yu-figure-y { 0%{ transform: translateX(0) rotate(-2deg) } 25%{ transform: translateX(3px) rotate(1deg) } 50%{ transform: translateX(0) rotate(-1deg) } 75%{ transform: translateX(-3px) rotate(2deg) } 100%{ transform: translateX(0) rotate(-2deg) } }
@keyframes yu-figure-w { 0%{ transform: translateX(0) rotate(2deg) } 25%{ transform: translateX(-3px) rotate(-1deg) } 50%{ transform: translateX(0) rotate(1deg) } 75%{ transform: translateX(3px) rotate(-2deg) } 100%{ transform: translateX(0) rotate(2deg) } }
@keyframes yu-crown { 0%,100%{ transform: translateX(-50%) } 50%{ transform: translateX(-50%) translateY(-2px) scale(1.02) } }
@keyframes yu-sword { 0%{ transform: rotate(-15deg) translateY(0) } 100%{ transform: rotate(-10deg) translateY(-4px) } }
@keyframes yu-dust { 0%{ transform: translate(0,0) scale(1); opacity:.2 } 33%{ transform: translate(20px,-10px) scale(1.2); opacity:.4 } 66%{ transform: translate(-10px,8px) scale(.8); opacity:.3 } 100%{ transform: translate(0,0) scale(1); opacity:.2 } }

.scn-gloucester-relents {
  background: linear-gradient(180deg, #fae8d0 0%, #e0c8a8 30%, #c8a880 100%),
              radial-gradient(ellipse at 40% 10%, #fff5e0 0%, transparent 70%);
}
.scn-gloucester-relents .sky-gr {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #f0d8b0 0%, transparent 100%);
  animation: gr-sky 14s ease-in-out infinite alternate;
}
.scn-gloucester-relents .sun-glow {
  position: absolute; top: 5%; left: 30%; width: 100px; height: 100px;
  background: radial-gradient(circle, #ffeecc 0%, #ffdd99 30%, transparent 70%);
  animation: gr-sun 16s ease-in-out infinite alternate;
}
.scn-gloucester-relents .figure-gloucester {
  position: absolute; bottom: 20%; left: 40%;
  width: 44px; height: 80px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: gr-figure 8s ease-in-out infinite;
}
.scn-gloucester-relents .royal-robe {
  position: absolute; bottom: 15%; left: 35%;
  width: 90px; height: 50px;
  background: linear-gradient(135deg, #8a1a2a 0%, #4a1020 100%);
  border-radius: 70% 30% 20% 80% / 60% 40% 60% 40%;
  transform: rotate(5deg);
  animation: gr-robe 10s ease-in-out infinite;
}
.scn-gloucester-relents .olive-branch {
  position: absolute; bottom: 28%; right: 25%;
  width: 40px; height: 10px;
  background: linear-gradient(90deg, #5a7a3a 0%, #3a5a2a 100%);
  border-radius: 50%;
  transform: rotate(-20deg);
  animation: gr-olive 6s ease-in-out infinite alternate;
}
.scn-gloucester-relents .shadow-dove {
  position: absolute; top: 12%; right: 20%;
  width: 28px; height: 18px;
  background: radial-gradient(circle at 40% 50%, #708090 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(3px);
  animation: gr-dove 20s linear infinite;
}
@keyframes gr-sky { 0%{ opacity:.85 } 50%{ opacity:1 } 100%{ opacity:.9 } }
@keyframes gr-sun { 0%{ transform: scale(1) translateY(0); opacity:.7 } 50%{ transform: scale(1.05) translateY(-4px); opacity:1 } 100%{ transform: scale(.95) translateY(2px); opacity:.8 } }
@keyframes gr-figure { 0%{ transform: translateX(0) rotate(1deg) } 25%{ transform: translateX(-4px) rotate(-2deg) } 50%{ transform: translateX(0) rotate(0deg) } 75%{ transform: translateX(4px) rotate(2deg) } 100%{ transform: translateX(0) rotate(1deg) } }
@keyframes gr-robe { 0%,100%{ transform: rotate(5deg) translateY(0) } 50%{ transform: rotate(3deg) translateY(-2px) } }
@keyframes gr-olive { 0%{ transform: rotate(-20deg) scaleX(1) } 50%{ transform: rotate(-15deg) scaleX(1.1) } 100%{ transform: rotate(-20deg) scaleX(1) } }
@keyframes gr-dove { 0%{ transform: translate(0,0) scale(1); opacity:.2 } 25%{ transform: translate(30px,-15px) scale(1.2); opacity:.4 } 50%{ transform: translate(60px,0) scale(.8); opacity:.3 } 75%{ transform: translate(30px,15px) scale(1.1); opacity:.4 } 100%{ transform: translate(0,0) scale(1); opacity:.2 } }

.scn-bishop-reluctantly-accepts {
  background: linear-gradient(180deg, #e0c8a8 0%, #c0a080 40%, #a08060 100%),
              radial-gradient(ellipse at 60% 80%, #f0d0a0 0%, transparent 60%);
}
.scn-bishop-reluctantly-accepts .apse {
  position: absolute; bottom: 10%; left: 20%; width: 60%; height: 60%;
  background: radial-gradient(ellipse at 50% 30%, #d4b890 0%, #b89870 60%);
  border-radius: 50% 50% 5% 5% / 70% 70% 10% 10%;
  box-shadow: inset 0 20px 60px rgba(0,0,0,.2);
  animation: br-apse 15s ease-in-out infinite alternate;
}
.scn-bishop-reluctantly-accepts .altar {
  position: absolute; bottom: 15%; left: 50%; transform: translateX(-50%);
  width: 80px; height: 30px;
  background: linear-gradient(180deg, #8a7050 0%, #6a5030 100%);
  border-radius: 4px;
  box-shadow: 0 4px 12px rgba(0,0,0,.3);
  animation: br-altar 6s ease-in-out infinite alternate;
}
.scn-bishop-reluctantly-accepts .bishop-figure {
  position: absolute; bottom: 22%; left: 25%;
  width: 40px; height: 70px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: br-bishop 5s ease-in-out infinite;
}
.scn-bishop-reluctantly-accepts .king-figure {
  position: absolute; bottom: 20%; right: 22%;
  width: 34px; height: 60px;
  background: linear-gradient(180deg, #4a3828 0%, #2a1a0e 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: br-king 4.5s ease-in-out infinite;
}
.scn-bishop-reluctantly-accepts .stained-glass {
  position: absolute; top: 5%; left: 10%; width: 35%; height: 40%;
  background: radial-gradient(circle at 30% 40%, #6a3a7a 0%, #3a1a4a 40%, transparent 70%);
  border-radius: 40% 40% 20% 20% / 60% 60% 30% 30%;
  box-shadow: 0 0 40px 10px rgba(100,50,120,.3);
  animation: br-glass 12s ease-in-out infinite alternate;
}
.scn-bishop-reluctantly-accepts .candle {
  position: absolute; bottom: 30%; left: 45%;
  width: 8px; height: 20px;
  background: linear-gradient(180deg, #e0c0a0 0%, #c0a080 100%);
  border-radius: 2px;
  animation: br-candle 4s ease-in-out infinite;
}
.scn-bishop-reluctantly-accepts .censer {
  position: absolute; bottom: 35%; left: 55%;
  width: 14px; height: 14px;
  background: radial-gradient(circle, #b09060 0%, #8a6a40 100%);
  border-radius: 50%;
  animation: br-censer 3s ease-in-out infinite alternate;
}
@keyframes br-apse { 0%{ transform: scale(.98); opacity:.9 } 50%{ transform: scale(1.02); opacity:1 } 100%{ transform: scale(1); opacity:.95 } }
@keyframes br-altar { 0%,100%{ transform: translateX(-50%) } 50%{ transform: translateX(-50%) translateY(-2px) } }
@keyframes br-bishop { 0%{ transform: translateX(0) rotate(-1deg) } 25%{ transform: translateX(3px) rotate(2deg) } 50%{ transform: translateX(0) rotate(0) } 75%{ transform: translateX(-3px) rotate(-2deg) } 100%{ transform: translateX(0) rotate(-1deg) } }
@keyframes br-king { 0%{ transform: translateX(0) rotate(2deg) } 25%{ transform: translateX(-2px) rotate(-1deg) } 50%{ transform: translateX(0) rotate(0) } 75%{ transform: translateX(2px) rotate(1deg) } 100%{ transform: translateX(0) rotate(2deg) } }
@keyframes br-glass { 0%{ opacity:.6; filter: blur(2px) } 50%{ opacity:1; filter: blur(0) } 100%{ opacity:.8; filter: blur(1px) } }
@keyframes br-candle { 0%,100%{ transform: translateY(0) scaleY(1) } 50%{ transform: translateY(-2px) scaleY(1.05) } }
@keyframes br-censer { 0%{ transform: translate(0,0) rotate(-5deg) } 100%{ transform: translate(2px,-3px) rotate(5deg) } }

.scn-hollow-peace {
  background: linear-gradient(180deg, #f0e0c0 0%, #c8b090 50%, #a08868 100%),
              radial-gradient(ellipse at 50% 30%, #ffe8b8 0%, transparent 60%);
}
.scn-hollow-peace .table {
  position: absolute; bottom: 15%; left: 15%; width: 70%; height: 8%;
  background: linear-gradient(180deg, #b09060 0%, #8a6a40 100%);
  border-radius: 4px;
  box-shadow: 0 8px 20px rgba(0,0,0,.3);
  animation: hp-table 7s ease-in-out infinite alternate;
}
.scn-hollow-peace .handshake-left {
  position: absolute; bottom: 30%; left: 40%; width: 20px; height: 24px;
  background: radial-gradient(circle at 40% 50%, #d4b890 0%, #b89870 100%);
  border-radius: 30% 30% 40% 40% / 40% 40% 30% 30%;
  transform: rotate(15deg);
  animation: hp-hand-l 4s ease-in-out infinite alternate;
}
.scn-hollow-peace .handshake-right {
  position: absolute; bottom: 30%; left: 44%; width: 20px; height: 24px;
  background: radial-gradient(circle at 60% 50%, #c8a880 0%, #a08860 100%);
  border-radius: 30% 30% 40% 40% / 40% 40% 30% 30%;
  transform: rotate(-15deg);
  animation: hp-hand-r 4s ease-in-out infinite alternate;
}
.scn-hollow-peace .dagger {
  position: absolute; bottom: 28%; left: 46%; width: 4px; height: 30px;
  background: linear-gradient(180deg, #c0c0c0 0%, #808080 100%);
  border-radius: 2px;
  transform: rotate(10deg);
  animation: hp-dagger 2.5s ease-in-out infinite alternate;
}
.scn-hollow-peace .flag-of-truce {
  position: absolute; top: 10%; left: 30%; width: 40px; height: 50px;
  background: radial-gradient(circle at 30% 50%, #f0f0e8 0%, #d0c8b8 100%);
  border-radius: 20% 20% 0 0 / 30% 30% 0 0;
  box-shadow: 0 0 20px 6px rgba(255,255,240,.3);
  animation: hp-flag 8s ease-in-out infinite;
}
.scn-hollow-peace .shadow-aside {
  position: absolute; top: 40%; left: 10%; width: 80%; height: 20%;
  background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,.1) 100%);
  border-radius: 0 0 50% 50% / 0 0 30% 30%;
  animation: hp-shadow 6s ease-in-out infinite alternate;
}
@keyframes hp-table { 0%,100%{ transform: translateY(0) } 50%{ transform: translateY(-2px) } }
@keyframes hp-hand-l { 0%{ transform: rotate(15deg) translateX(0) } 50%{ transform: rotate(10deg) translateX(-2px) } 100%{ transform: rotate(15deg) translateX(0) } }
@keyframes hp-hand-r { 0%{ transform: rotate(-15deg) translateX(0) } 50%{ transform: rotate(-10deg) translateX(2px) } 100%{ transform: rotate(-15deg) translateX(0) } }
@keyframes hp-dagger { 0%{ transform: rotate(10deg) translateY(0); opacity:.4 } 50%{ transform: rotate(8deg) translateY(-3px); opacity:.8 } 100%{ transform: rotate(10deg) translateY(0); opacity:.5 } }
@keyframes hp-flag { 0%{ transform: translateY(0) rotate(-3deg) } 25%{ transform: translateY(-4px) rotate(2deg) } 50%{ transform: translateY(0) rotate(-1deg) } 75%{ transform: translateY(-2px) rotate(1deg) } 100%{ transform: translateY(0) rotate(-3deg) } }
@keyframes hp-shadow { 0%{ opacity:.3; transform: scaleY(1) } 50%{ opacity:.5; transform: scaleY(1.05) } 100%{ opacity:.35; transform: scaleY(.95) } }

.scn-battlefield-two-talbot-bond {
  background: linear-gradient(180deg, #7a8ba8 0%, #a6b7c8 30%, #c8d6e0 60%), radial-gradient(ellipse at 70% 20%, #f0e6c0 0%, transparent 50%);
}
.scn-battlefield-two-talbot-bond .sky {
  position: absolute; inset: 0 0 55% 0;
  background: linear-gradient(180deg, #4a5a6a 0%, #7a8ba8 30%, transparent 100%);
  animation: bt-sky 15s ease-in-out infinite alternate;
}
.scn-battlefield-two-talbot-bond .sun-halo {
  position: absolute; top: 10%; right: 25%; width: 120px; height: 120px;
  background: radial-gradient(circle, #ffe084 0%, #f0c860 30%, transparent 70%);
  filter: blur(8px); animation: bt-halo 8s ease-in-out infinite alternate;
}
.scn-battlefield-two-talbot-bond .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 55%;
  background: linear-gradient(180deg, #4a5a3a 0%, #2a3a1a 50%, #1a2a0a 100%);
  animation: bt-ground 12s ease-in-out infinite alternate;
}
.scn-battlefield-two-talbot-bond .father {
  position: absolute; bottom: 30%; left: 30%; width: 60px; height: 120px;
  background: linear-gradient(180deg, #2a2a2a 0%, #1a1a1a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bt-father 6s ease-in-out infinite;
}
.scn-battlefield-two-talbot-bond .son {
  position: absolute; bottom: 28%; left: 38%; width: 40px; height: 80px;
  background: linear-gradient(180deg, #3a3a3a 0%, #1a1a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bt-son 6s ease-in-out infinite;
}
.scn-battlefield-two-talbot-bond .spear {
  position: absolute; bottom: 30%; left: 25%; width: 4px; height: 130px;
  background: linear-gradient(180deg, #5a4a3a 0%, #2a1a0a 100%);
  border-radius: 2px;
  animation: bt-spear 9s ease-in-out infinite;
}
.scn-battlefield-two-talbot-bond .dust-a {
  position: absolute; bottom: 40%; left: 20%; width: 30px; height: 20px;
  background: radial-gradient(circle, rgba(180,160,130,0.4) 0%, transparent 100%);
  filter: blur(4px);
  animation: bt-drift-a 20s linear infinite;
}
.scn-battlefield-two-talbot-bond .dust-b {
  position: absolute; bottom: 45%; right: 30%; width: 40px; height: 25px;
  background: radial-gradient(circle, rgba(180,160,130,0.3) 0%, transparent 100%);
  filter: blur(5px);
  animation: bt-drift-b 30s linear infinite reverse;
}

@keyframes bt-sky { 0% { opacity:0.6; } 50% { opacity:0.9; } 100% { opacity:0.7; } }
@keyframes bt-halo { 0% { transform: scale(0.9); opacity:0.6; } 50% { transform: scale(1.1); opacity:0.9; } 100% { transform: scale(0.95); opacity:0.7; } }
@keyframes bt-ground { 0% { transform: translateY(0); } 50% { transform: translateY(-4px); } 100% { transform: translateY(0); } }
@keyframes bt-father { 0% { transform: translate(0,0) rotate(-2deg); } 50% { transform: translate(-5px,2px) rotate(1deg); } 100% { transform: translate(0,0) rotate(-2deg); } }
@keyframes bt-son { 0% { transform: translate(0,0) rotate(2deg); } 50% { transform: translate(5px,-2px) rotate(-1deg); } 100% { transform: translate(0,0) rotate(2deg); } }
@keyframes bt-spear { 0% { transform: rotate(-3deg); } 50% { transform: rotate(2deg); } 100% { transform: rotate(-3deg); } }
@keyframes bt-drift-a { 0% { transform: translateX(-20px); } 50% { transform: translateX(120px); opacity:0.3; } 100% { transform: translateX(300px); opacity:0; } }
@keyframes bt-drift-b { 0% { transform: translateX(200px); opacity:0; } 50% { transform: translateX(100px); opacity:0.5; } 100% { transform: translateX(-50px); opacity:0; } }

.scn-battlefield-son-smiles {
  background: linear-gradient(180deg, #c8a860 0%, #dbb878 40%, #eae0b0 80%), radial-gradient(ellipse at 50% 30%, #ffe080 0%, transparent 60%);
}
.scn-battlefield-son-smiles .sky-warm {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #b09050 0%, #d8b870 40%, transparent 100%);
  animation: ss-sky 12s ease-in-out infinite alternate;
}
.scn-battlefield-son-smiles .sun-glow {
  position: absolute; top: 15%; left: 60%; width: 140px; height: 140px;
  background: radial-gradient(circle, #ffdd66 0%, #ffb030 30%, transparent 70%);
  filter: blur(12px); animation: ss-sun 10s ease-in-out infinite alternate;
}
.scn-battlefield-son-smiles .ground-warm {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #5a4a2a 0%, #3a2a1a 50%, #1a100a 100%);
  animation: ss-ground 14s ease-in-out infinite alternate;
}
.scn-battlefield-son-smiles .father-arm {
  position: absolute; bottom: 25%; left: 35%; width: 80px; height: 100px;
  background: linear-gradient(180deg, #2a2a2a 0%, #151515 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom left;
  animation: ss-arm 6s ease-in-out infinite;
}
.scn-battlefield-son-smiles .son-body {
  position: absolute; bottom: 25%; left: 45%; width: 50px; 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: ss-son 6s ease-in-out infinite;
}
.scn-battlefield-son-smiles .son-face {
  position: absolute; bottom: 40%; left: 47%; width: 16px; height: 20px;
  background: radial-gradient(circle, #e0c080 0%, #b09050 60%);
  border-radius: 50%;
  box-shadow: 0 3px 6px rgba(0,0,0,0.3);
  animation: ss-face 4s ease-in-out infinite alternate;
}
.scn-battlefield-son-smiles .father-hand {
  position: absolute; bottom: 32%; left: 38%; width: 12px; height: 18px;
  background: #2a2a2a;
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: top left;
  animation: ss-hand 5s ease-in-out infinite;
}
.scn-battlefield-son-smiles .ember-a {
  position: absolute; bottom: 50%; left: 20%; width: 8px; height: 8px;
  background: #ffa040;
  border-radius: 50%;
  box-shadow: 0 0 20px #ffa040;
  animation: ss-ember 4s ease-in-out infinite;
}
.scn-battlefield-son-smiles .ember-b {
  position: absolute; bottom: 45%; right: 25%; width: 6px; height: 6px;
  background: #ffc060;
  border-radius: 50%;
  box-shadow: 0 0 15px #ffc060;
  animation: ss-ember 5s ease-in-out infinite 0.5s;
}

@keyframes ss-sky { 0% { opacity:0.7; } 50% { opacity:1; } 100% { opacity:0.8; } }
@keyframes ss-sun { 0% { transform: scale(0.9); opacity:0.5; } 50% { transform: scale(1.2); opacity:0.9; } 100% { transform: scale(1); opacity:0.7; } }
@keyframes ss-ground { 0% { transform: translateY(0); } 50% { transform: translateY(-3px); } 100% { transform: translateY(0); } }
@keyframes ss-arm { 0% { transform: rotate(10deg); } 50% { transform: rotate(5deg) translateX(-5px); } 100% { transform: rotate(10deg); } }
@keyframes ss-son { 0% { transform: translateY(0) rotate(2deg); } 50% { transform: translateY(-3px) rotate(-1deg); } 100% { transform: translateY(0) rotate(2deg); } }
@keyframes ss-face { 0% { box-shadow: 0 3px 6px rgba(0,0,0,0.3); opacity:0.9; } 50% { box-shadow: 0 6px 12px rgba(0,0,0,0.1); opacity:1; } 100% { box-shadow: 0 3px 6px rgba(0,0,0,0.3); opacity:0.9; } }
@keyframes ss-hand { 0% { transform: rotate(-5deg); } 50% { transform: rotate(2deg) translateY(-2px); } 100% { transform: rotate(-5deg); } }
@keyframes ss-ember { 0% { transform: translateY(0) scale(1); opacity:0.8; } 50% { transform: translateY(-20px) scale(1.5); opacity:0.2; } 100% { transform: translateY(0) scale(1); opacity:0.8; } }

.scn-battlefield-french-victory {
  background: linear-gradient(180deg, #a0b8c8 0%, #c8dae8 40%, #e0f0f8 80%), radial-gradient(ellipse at 80% 40%, #d0d8e0 0%, transparent 60%);
}
.scn-battlefield-french-victory .sky-calm {
  position: absolute; inset: 0 0 60% 0;
  background: linear-gradient(180deg, #708090 0%, #a0b8c8 40%, transparent 100%);
  animation: fv-sky 20s ease-in-out infinite alternate;
}
.scn-battlefield-french-victory .sun-soft {
  position: absolute; top: 12%; left: 70%; width: 100px; height: 100px;
  background: radial-gradient(circle, #f0e0c0 0%, #d8c8a0 30%, transparent 70%);
  filter: blur(10px); animation: fv-sun 15s ease-in-out infinite alternate;
}
.scn-battlefield-french-victory .field {
  position: absolute; bottom: 0; left: 0; right: 0; height: 60%;
  background: linear-gradient(180deg, #5a6a4a 0%, #3a4a2a 50%, #1a2a0a 100%);
  animation: fv-field 18s ease-in-out infinite alternate;
}
.scn-battlefield-french-victory .french-soldier {
  position: absolute; bottom: 25%; left: 40%; width: 55px; height: 110px;
  background: linear-gradient(180deg, #3a4a5a 0%, #1a2a3a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: fv-soldier 8s ease-in-out infinite;
}
.scn-battlefield-french-victory .fallen-flag {
  position: absolute; bottom: 20%; left: 55%; width: 6px; height: 100px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 2px;
  transform: rotate(15deg);
  animation: fv-flag 10s ease-in-out infinite;
}
.scn-battlefield-french-victory .spear-planted {
  position: absolute; bottom: 20%; left: 35%; width: 4px; height: 120px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 2px;
  animation: fv-spear 12s ease-in-out infinite;
}
.scn-battlefield-french-victory .cloud-a {
  position: absolute; top: 18%; left: 10%; width: 90px; height: 20px;
  background: linear-gradient(180deg, rgba(255,255,255,0.4) 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(6px);
  animation: fv-cloud-a 40s linear infinite;
}
.scn-battlefield-french-victory .cloud-b {
  position: absolute; top: 25%; right: 15%; width: 70px; height: 16px;
  background: linear-gradient(180deg, rgba(255,255,255,0.3) 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(5px);
  animation: fv-cloud-b 50s linear infinite reverse;
}

@keyframes fv-sky { 0% { opacity:0.7; } 50% { opacity:1; } 100% { opacity:0.8; } }
@keyframes fv-sun { 0% { transform: scale(0.95); opacity:0.6; } 50% { transform: scale(1.05); opacity:0.8; } 100% { transform: scale(0.98); opacity:0.7; } }
@keyframes fv-field { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes fv-soldier { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-4px) rotate(1deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes fv-flag { 0% { transform: rotate(12deg) translateY(0); } 50% { transform: rotate(18deg) translateY(-3px); } 100% { transform: rotate(12deg) translateY(0); } }
@keyframes fv-spear { 0% { transform: rotate(-2deg); } 50% { transform: rotate(3deg) translateX(-2px); } 100% { transform: rotate(-2deg); } }
@keyframes fv-cloud-a { 0% { transform: translateX(-30px); } 50% { transform: translateX(80px); } 100% { transform: translateX(200px); } }
@keyframes fv-cloud-b { 0% { transform: translateX(150px); } 50% { transform: translateX(60px); } 100% { transform: translateX(-40px); } }

.scn-battlefield-maiden-scorn {
  background: linear-gradient(180deg, #8a9ab0 0%, #b0c4d0 30%, #d0e0e8 60%), radial-gradient(ellipse at 40% 30%, #e8d8c0 0%, transparent 50%);
}
.scn-battlefield-maiden-scorn .sky-tense {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #4a5a6a 0%, #708090 40%, transparent 100%);
  animation: ms-sky 10s ease-in-out infinite alternate;
}
.scn-battlefield-maiden-scorn .sun-hard {
  position: absolute; top: 10%; left: 30%; width: 110px; height: 110px;
  background: radial-gradient(circle, #ffe080 0%, #f0c040 20%, transparent 60%);
  filter: blur(6px);
  animation: ms-sun 6s ease-in-out infinite alternate;
}
.scn-battlefield-maiden-scorn .ground-tense {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #3a4a3a 0%, #1a2a1a 50%, #0a1a0a 100%);
  animation: ms-ground 8s ease-in-out infinite alternate;
}
.scn-battlefield-maiden-scorn .maiden-silhouette {
  position: absolute; bottom: 25%; left: 45%; width: 50px; height: 110px;
  background: linear-gradient(180deg, #151515 0%, #0a0a0a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ms-maiden 4s ease-in-out infinite;
}
.scn-battlefield-maiden-scorn .sword {
  position: absolute; bottom: 35%; left: 52%; width: 5px; height: 100px;
  background: linear-gradient(180deg, #c0c0c0 0%, #707070 100%);
  border-radius: 2px;
  transform: rotate(-20deg);
  animation: ms-sword 3s ease-in-out infinite;
}
.scn-battlefield-maiden-scorn .opponent-shadow {
  position: absolute; bottom: 20%; left: 35%; width: 60px; height: 90px;
  background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: ms-opponent 5s ease-in-out infinite;
}
.scn-battlefield-maiden-scorn .spark-a {
  position: absolute; bottom: 40%; left: 48%; width: 6px; height: 6px;
  background: #ffb040;
  border-radius: 50%;
  box-shadow: 0 0 12px #ffb040;
  animation: ms-spark 2s ease-in-out infinite;
}
.scn-battlefield-maiden-scorn .spark-b {
  position: absolute; bottom: 38%; left: 50%; width: 4px; height: 4px;
  background: #ffa030;
  border-radius: 50%;
  box-shadow: 0 0 10px #ffa030;
  animation: ms-spark 2.5s ease-in-out infinite 0.3s;
}
.scn-battlefield-maiden-scorn .spark-c {
  position: absolute; bottom: 42%; left: 52%; width: 5px; height: 5px;
  background: #ff9040;
  border-radius: 50%;
  box-shadow: 0 0 14px #ff9040;
  animation: ms-spark 3s ease-in-out infinite 0.6s;
}

@keyframes ms-sky { 0% { opacity:0.5; } 50% { opacity:0.8; } 100% { opacity:0.6; } }
@keyframes ms-sun { 0% { transform: scale(0.95) rotate(0deg); opacity:0.7; } 50% { transform: scale(1.1) rotate(5deg); opacity:1; } 100% { transform: scale(0.95) rotate(0deg); opacity:0.7; } }
@keyframes ms-ground { 0% { transform: translateY(0); } 50% { transform: translateY(-5px); } 100% { transform: translateY(0); } }
@keyframes ms-maiden { 0% { transform: translate(0,0) rotate(-3deg); } 50% { transform: translate(8px,-4px) rotate(2deg); } 100% { transform: translate(0,0) rotate(-3deg); } }
@keyframes ms-sword { 0% { transform: rotate(-20deg) translateY(0); } 50% { transform: rotate(-15deg) translateY(-8px); } 100% { transform: rotate(-20deg) translateY(0); } }
@keyframes ms-opponent { 0% { transform: translateX(0) scale(1); } 50% { transform: translateX(-10px) scale(0.95); opacity:0.7; } 100% { transform: translateX(0) scale(1); } }
@keyframes ms-spark { 0% { transform: translateY(0) scale(1); opacity:1; } 50% { transform: translateY(-25px) scale(1.8); opacity:0.3; } 100% { transform: translateY(0) scale(1); opacity:1; } }

.scn-court-revolt-outrage {
  background: linear-gradient(180deg, #1a0c0a 0%, #3a1e14 40%, #5a3020 100%), radial-gradient(ellipse at 50% 20%, #8a4a2a 0%, transparent 70%);
}
.scn-court-revolt-outrage .bg {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #2a1410 0%, #4a2a1a 50%, #3a1e14 100%);
  animation: cro-bg 12s ease-in-out infinite alternate;
}
.scn-court-revolt-outrage .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #2a1810 0%, #1a0e08 100%);
  border-radius: 30% 30% 0 0 / 20% 20% 0 0;
  box-shadow: inset 0 20px 30px rgba(0,0,0,0.6);
}
.scn-court-revolt-outrage .throne-shadow {
  position: absolute; bottom: 30%; left: 50%; width: 120px; height: 100px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #3a2218 0%, #1a0e08 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 0 10px 20px rgba(0,0,0,0.7);
  animation: cro-throne 8s ease-in-out infinite;
}
.scn-court-revolt-outrage .figure-rebel {
  position: absolute; bottom: 25%; left: 30%; width: 30px; height: 70px;
  background: linear-gradient(180deg, #5a3a28 0%, #2a1a10 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  transform-origin: center bottom;
  animation: cro-rebel 6s ease-in-out infinite;
}
.scn-court-revolt-outrage .figure-king {
  position: absolute; bottom: 30%; left: 55%; width: 35px; height: 80px;
  background: linear-gradient(180deg, #7a5a3a 0%, #3a2a18 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  transform-origin: center bottom;
  animation: cro-king 8s ease-in-out infinite;
}
.scn-court-revolt-outrage .torch {
  position: absolute; bottom: 45%; left: 70%; width: 8px; height: 60px;
  background: linear-gradient(0deg, #2a1a10 0%, #5a3020 100%);
  border-radius: 4px;
  box-shadow: 0 0 30px 10px #d08040, 0 0 60px 20px rgba(208,128,64,0.5);
  animation: cro-torch 3s ease-in-out infinite alternate;
}
.scn-court-revolt-outrage .banner {
  position: absolute; bottom: 50%; left: 15%; width: 50px; height: 90px;
  background: linear-gradient(180deg, #804030 0%, #5a2a1e 100%);
  border-radius: 0 0 20% 20%;
  box-shadow: 0 5px 10px rgba(0,0,0,0.4);
  animation: cro-banner 10s ease-in-out infinite;
}
@keyframes cro-bg { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.85; } }
@keyframes cro-throne { 0%,100% { transform: translateX(-50%) scale(1); } 50% { transform: translateX(-50%) scale(1.02) translateY(-2px); } }
@keyframes cro-rebel { 0% { transform: translateX(0) translateY(0) rotate(0deg); } 25% { transform: translateX(5px) translateY(-2px) rotate(2deg); } 50% { transform: translateX(0) translateY(0) rotate(0deg); } 75% { transform: translateX(-5px) translateY(-2px) rotate(-2deg); } 100% { transform: translateX(0) translateY(0) rotate(0deg); } }
@keyframes cro-king { 0%,100% { transform: rotate(0deg); } 50% { transform: rotate(2deg) translateY(-3px); } }
@keyframes cro-torch { 0% { box-shadow: 0 0 25px 8px #d08040, 0 0 50px 15px rgba(208,128,64,0.4); opacity: 0.9; } 50% { box-shadow: 0 0 40px 12px #e09050, 0 0 70px 20px rgba(224,144,80,0.6); opacity: 1; } 100% { box-shadow: 0 0 30px 10px #c07030, 0 0 55px 18px rgba(192,112,48,0.5); opacity: 0.85; } }
@keyframes cro-banner { 0%,100% { transform: rotate(0deg); } 50% { transform: rotate(3deg) translateX(2px); } }

.scn-court-talbot-employment {
  background: linear-gradient(135deg, #2a1a10 0%, #4a3020 30%, #6a4a32 100%), radial-gradient(ellipse at 30% 80%, #8a6a4a 0%, transparent 60%);
}
.scn-court-talbot-employment .bg {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #3a2218 0%, #6a4a32 60%, #8a6a4a 100%);
  animation: cte-bg 15s ease-in-out infinite alternate;
}
.scn-court-talbot-employment .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #5a3a28 0%, #2a1a10 100%);
  border-radius: 20% 20% 0 0 / 15% 15% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.5);
}
.scn-court-talbot-employment .throne {
  position: absolute; bottom: 25%; left: 50%; width: 100px; height: 80px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #8a6a4a 0%, #5a3a28 100%);
  border-radius: 15% 15% 8% 8%;
  box-shadow: 0 8px 16px rgba(0,0,0,0.4);
  animation: cte-throne 12s ease-in-out infinite;
}
.scn-court-talbot-employment .figure-talbot {
  position: absolute; bottom: 20%; left: 35%; width: 28px; height: 65px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a10 100%);
  border-radius: 50% 50% 40% 40% / 55% 55% 30% 30%;
  animation: cte-talbot 10s ease-in-out infinite;
}
.scn-court-talbot-employment .figure-king {
  position: absolute; bottom: 28%; left: 52%; width: 32px; height: 75px;
  background: linear-gradient(180deg, #7a5a3a 0%, #4a2a18 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  animation: cte-king 14s ease-in-out infinite;
}
.scn-court-talbot-employment .window-glow {
  position: absolute; bottom: 50%; left: 20%; width: 40px; height: 60px;
  background: radial-gradient(ellipse, #c0a070 0%, #8a6a4a 70%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 0 0 40px 15px #b08050, 0 0 80px 30px rgba(176,128,80,0.3);
  animation: cte-window 8s ease-in-out infinite alternate;
}
.scn-court-talbot-employment .carpet {
  position: absolute; bottom: 10%; left: 10%; right: 10%; height: 20%;
  background: linear-gradient(90deg, #802030 0%, #5a1820 50%, #802030 100%);
  border-radius: 10% 10% 20% 20% / 50% 50% 30% 30%;
  box-shadow: 0 -5px 15px rgba(0,0,0,0.3);
  animation: cte-carpet 20s ease-in-out infinite;
}
@keyframes cte-bg { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.85; } }
@keyframes cte-throne { 0%,100% { transform: translateX(-50%) scale(1); } 50% { transform: translateX(-50%) scale(1.01) translateY(-2px); } }
@keyframes cte-talbot { 0%,100% { transform: translateX(0) translateY(0); } 25% { transform: translateX(3px) translateY(-2px); } 50% { transform: translateX(0) translateY(0); } 75% { transform: translateX(-3px) translateY(-2px); } }
@keyframes cte-king { 0%,100% { transform: rotate(0deg); } 50% { transform: rotate(1deg) translateY(-2px); } }
@keyframes cte-window { 0% { box-shadow: 0 0 30px 10px #b08050, 0 0 60px 20px rgba(176,128,80,0.3); opacity: 0.9; } 50% { box-shadow: 0 0 50px 15px #c09060, 0 0 90px 30px rgba(192,144,96,0.5); opacity: 1; } 100% { box-shadow: 0 0 35px 12px #b08050, 0 0 65px 25px rgba(176,128,80,0.3); opacity: 0.9; } }
@keyframes cte-carpet { 0%,100% { transform: scaleX(1); } 50% { transform: scaleX(1.02); } }

.scn-court-vernon-basset-combat {
  background: linear-gradient(180deg, #1a0e0a 0%, #3a2218 40%, #5a3a2a 100%), radial-gradient(ellipse at 60% 30%, #804020 0%, transparent 60%);
}
.scn-court-vernon-basset-combat .bg {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #2a1810 0%, #4a2e1e 50%, #6a4a32 100%);
  animation: cvc-bg 10s ease-in-out infinite alternate;
}
.scn-court-vernon-basset-combat .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #3a2218 0%, #1a0e08 100%);
  border-radius: 40% 40% 0 0 / 30% 30% 0 0;
  box-shadow: inset 0 20px 30px rgba(0,0,0,0.7);
}
.scn-court-vernon-basset-combat .figure-left {
  position: absolute; bottom: 25%; left: 25%; width: 30px; height: 70px;
  background: linear-gradient(180deg, #4a3222 0%, #2a1a10 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  animation: cvc-left 4s ease-in-out infinite;
}
.scn-court-vernon-basset-combat .figure-right {
  position: absolute; bottom: 25%; left: 55%; width: 30px; height: 70px;
  background: linear-gradient(180deg, #5a3a28 0%, #2a1a10 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  animation: cvc-right 4s ease-in-out infinite reverse;
}
.scn-court-vernon-basset-combat .sword-left {
  position: absolute; bottom: 55%; left: 30%; width: 4px; height: 50px;
  background: linear-gradient(0deg, #8a6a4a 0%, #d0b090 100%);
  border-radius: 2px;
  transform-origin: bottom center;
  animation: cvc-sword-left 3s ease-in-out infinite;
}
.scn-court-vernon-basset-combat .sword-right {
  position: absolute; bottom: 55%; left: 58%; width: 4px; height: 50px;
  background: linear-gradient(0deg, #8a6a4a 0%, #d0b090 100%);
  border-radius: 2px;
  transform-origin: bottom center;
  animation: cvc-sword-right 3s ease-in-out infinite;
}
.scn-court-vernon-basset-combat .torch-flame {
  position: absolute; bottom: 48%; left: 70%; width: 12px; height: 20px;
  background: radial-gradient(circle, #f0a060 0%, #d08040 60%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  box-shadow: 0 0 30px 10px #d08040, 0 0 60px 20px rgba(208,128,64,0.5);
  animation: cvc-flame 2s ease-in-out infinite alternate;
}
@keyframes cvc-bg { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.85; } }
@keyframes cvc-left { 0%,100% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(-3px) rotate(-3deg); } 50% { transform: translateX(0) rotate(0deg); } 75% { transform: translateX(3px) rotate(3deg); } }
@keyframes cvc-right { 0%,100% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(3px) rotate(3deg); } 50% { transform: translateX(0) rotate(0deg); } 75% { transform: translateX(-3px) rotate(-3deg); } }
@keyframes cvc-sword-left { 0%,100% { transform: rotate(-10deg); } 50% { transform: rotate(10deg); } }
@keyframes cvc-sword-right { 0%,100% { transform: rotate(10deg); } 50% { transform: rotate(-10deg); } }
@keyframes cvc-flame { 0% { transform: scale(1) translateY(0); } 50% { transform: scale(1.2) translateY(-5px); } 100% { transform: scale(0.9) translateY(3px); } }

.scn-court-rose-quarrel {
  background: linear-gradient(180deg, #1a0e08 0%, #3a1e14 30%, #5a3020 100%), radial-gradient(ellipse at 50% 60%, #803020 0%, transparent 60%);
}
.scn-court-rose-quarrel .bg {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #2a1410 0%, #4a2a1a 40%, #6a3a2a 100%);
  animation: crq-bg 14s ease-in-out infinite alternate;
}
.scn-court-rose-quarrel .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #3a1e14 0%, #1a0c08 100%);
  border-radius: 30% 30% 0 0 / 20% 20% 0 0;
  box-shadow: inset 0 15px 25px rgba(0,0,0,0.6);
}
.scn-court-rose-quarrel .figure-one {
  position: absolute; bottom: 25%; left: 25%; width: 28px; height: 68px;
  background: linear-gradient(180deg, #4a2e1e 0%, #2a1810 100%);
  border-radius: 50% 50% 40% 40% / 55% 55% 30% 30%;
  animation: crq-one 5s ease-in-out infinite;
}
.scn-court-rose-quarrel .figure-two {
  position: absolute; bottom: 25%; left: 55%; width: 28px; height: 68px;
  background: linear-gradient(180deg, #5a3a28 0%, #2a1810 100%);
  border-radius: 50% 50% 40% 40% / 55% 55% 30% 30%;
  animation: crq-two 5s ease-in-out infinite reverse;
}
.scn-court-rose-quarrel .rose {
  position: absolute; bottom: 35%; left: 50%; width: 20px; height: 20px;
  transform: translateX(-50%);
  background: radial-gradient(circle, #b04030 0%, #802820 70%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  box-shadow: 0 0 20px 5px rgba(176,64,48,0.5);
  animation: crq-rose 6s ease-in-out infinite;
}
.scn-court-rose-quarrel .table {
  position: absolute; bottom: 28%; left: 40%; right: 40%; height: 10px;
  background: linear-gradient(180deg, #6a4a32 0%, #3a2218 100%);
  border-radius: 5px;
  box-shadow: 0 3px 6px rgba(0,0,0,0.3);
  animation: crq-table 12s ease-in-out infinite;
}
.scn-court-rose-quarrel .shadow {
  position: absolute; bottom: 20%; left: 20%; right: 20%; height: 30px;
  background: radial-gradient(ellipse at 50% 0%, rgba(0,0,0,0.5) 0%, transparent 100%);
  animation: crq-shadow 8s ease-in-out infinite;
}
@keyframes crq-bg { 0% { opacity: 0.85; } 50% { opacity: 1; } 100% { opacity: 0.8; } }
@keyframes crq-one { 0%,100% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(-4px) rotate(-4deg); } 50% { transform: translateX(0) rotate(0deg); } 75% { transform: translateX(4px) rotate(4deg); } }
@keyframes crq-two { 0%,100% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(4px) rotate(4deg); } 50% { transform: translateX(0) rotate(0deg); } 75% { transform: translateX(-4px) rotate(-4deg); } }
@keyframes crq-rose { 0%,100% { transform: translateX(-50%) scale(1); } 50% { transform: translateX(-50%) scale(1.15) rotate(10deg); } }
@keyframes crq-table { 0%,100% { transform: scaleX(1); } 50% { transform: scaleX(0.98) translateY(-2px); } }
@keyframes crq-shadow { 0%,100% { opacity: 0.2; } 50% { opacity: 0.4; } }

/* Scene: joan-encourages-princes (overcast, calm) */
.scn-joan-encourages-princes {
  background:
    linear-gradient(180deg, #9a9a8c 0%, #b0b0a0 30%, #8a8a7a 60%, #6a6a5e 100%),
    radial-gradient(ellipse at 50% 0%, #c0c0b0 0%, transparent 60%);
}
.scn-joan-encourages-princes .sky-overcast { position:absolute; inset:0 0 55% 0; background: linear-gradient(180deg, #b8b8a8 0%, #a0a090 40%, #c8c8b8 100%); animation: enc-sky 12s ease-in-out infinite alternate; }
.scn-joan-encourages-princes .hills-distant { position:absolute; bottom:40%; left:0; right:0; height:30%; background: linear-gradient(180deg, #7a7a6a 0%, #5a5a4e 100%); border-radius: 30% 70% 0 0 / 40% 50% 0 0; box-shadow: inset 0 4px 10px rgba(0,0,0,0.3); animation: enc-hills 20s ease-in-out infinite alternate; }
.scn-joan-encourages-princes .tent-left { position:absolute; bottom:38%; left:12%; width:60px; height:70px; background: linear-gradient(135deg, #6a5a4a 0%, #4a3a2a 100%); border-radius: 40% 40% 10% 10% / 60% 60% 20% 20%; transform: skewX(3deg); box-shadow: -2px 0 8px rgba(0,0,0,0.2); }
.scn-joan-encourages-princes .tent-right { position:absolute; bottom:38%; right:10%; width:55px; height:65px; background: linear-gradient(135deg, #5a5a4a 0%, #3a3a2a 100%); border-radius: 40% 40% 10% 10% / 60% 60% 20% 20%; transform: skewX(-3deg); box-shadow: 2px 0 8px rgba(0,0,0,0.2); }
.scn-joan-encourages-princes .figure-joan { position:absolute; bottom:35%; left:40%; width:20px; height:45px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a12 100%); border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%; transform-origin: bottom center; animation: enc-walk 6s ease-in-out infinite; }
.scn-joan-encourages-princes .figure-prince { position:absolute; bottom:35%; right:40%; width:22px; height:48px; background: linear-gradient(180deg, #3a4a5a 0%, #1a2a3a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%; transform-origin: bottom center; animation: enc-walk2 6s ease-in-out infinite 1s; }
.scn-joan-encourages-princes .banner { position:absolute; bottom:45%; left:45%; width:8px; height:60px; background: #5a3a2a; border-radius: 2px; transform: rotate(10deg); }
.scn-joan-encourages-princes .banner::after { content:''; position:absolute; top:0; left:8px; width:28px; height:20px; background: #8a6a3a; border-radius: 0 30% 50% 0; }
.scn-joan-encourages-princes .ground { position:absolute; bottom:0; left:0; right:0; height:35%; background: linear-gradient(180deg, #6a6a5e 0%, #4a4a3e 100%); }
@keyframes enc-sky { 0%{ opacity:0.7 } 50%{ opacity:1 } 100%{ opacity:0.8 } }
@keyframes enc-hills { 0%{ transform: translateY(0) } 50%{ transform: translateY(-2px) } 100%{ transform: translateY(0) } }
@keyframes enc-walk { 0%{ transform: translateX(0) translateY(0) rotate(-1deg) } 25%{ transform: translateX(3px) translateY(-1px) rotate(1deg) } 50%{ transform: translateX(0) translateY(0) rotate(0) } 75%{ transform: translateX(-3px) translateY(-1px) rotate(-1deg) } 100%{ transform: translateX(0) translateY(0) rotate(0) } }
@keyframes enc-walk2 { 0%{ transform: translateX(0) translateY(0) rotate(0) } 33%{ transform: translateX(-2px) translateY(-1px) rotate(-1deg) } 66%{ transform: translateX(2px) translateY(0) rotate(1deg) } 100%{ transform: translateX(0) translateY(0) rotate(0) } }

/* Scene: charles-trusts-joan (overcast, calm) */
.scn-charles-trusts-joan {
  background:
    linear-gradient(180deg, #8a8a7a 0%, #a0a090 30%, #7a7a6a 60%, #5a5a4e 100%),
    radial-gradient(ellipse at 50% 20%, #c0c0b0 0%, transparent 50%);
}
.scn-charles-trusts-joan .sky-pale { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #b0b0a0 0%, #9a9a8c 100%); animation: trs-sky 15s ease-in-out infinite alternate; }
.scn-charles-trusts-joan .dais { position:absolute; bottom:30%; left:35%; width:100px; height:15px; background: linear-gradient(180deg, #7a6a5a 0%, #5a4a3a 100%); border-radius: 10px; box-shadow: 0 4px 8px rgba(0,0,0,0.3); }
.scn-charles-trusts-joan .figure-charles { position:absolute; bottom:45%; left:40%; width:24px; height:50px; background: linear-gradient(180deg, #4a3a5a 0%, #2a1a3a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%; transform-origin: bottom center; animation: trs-bow 8s ease-in-out infinite; }
.scn-charles-trusts-joan .figure-joan2 { position:absolute; bottom:45%; left:55%; width:20px; height:44px; background: linear-gradient(180deg, #3a4a3a 0%, #1a2a1a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%; transform-origin: bottom center; animation: trs-bow2 8s ease-in-out infinite 2s; }
.scn-charles-trusts-joan .statue-base { position:absolute; bottom:30%; left:30%; width:30px; height:10px; background: #5a4a3a; border-radius: 4px; }
.scn-charles-trusts-joan .statue-shape { position:absolute; bottom:40%; left:30%; width:20px; height:40px; margin-left:5px; background: #6a5a4a; border-radius: 30% 30% 20% 20% / 40% 40% 30% 30%; }
.scn-charles-trusts-joan .attendant { position:absolute; bottom:40%; left:70%; width:18px; height:42px; background: linear-gradient(180deg, #5a5a4a 0%, #3a3a2a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%; animation: trs-idle 10s ease-in-out infinite; }
.scn-charles-trusts-joan .ground2 { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #5a5a4e 0%, #4a4a3e 100%); }
@keyframes trs-sky { 0%{ opacity:.8 } 50%{ opacity:1 } 100%{ opacity:.85 } }
@keyframes trs-bow { 0%{ transform: translateY(0) rotate(0) } 25%{ transform: translateY(-3px) rotate(2deg) } 50%{ transform: translateY(0) rotate(0) } 75%{ transform: translateY(-2px) rotate(-2deg) } 100%{ transform: translateY(0) rotate(0) } }
@keyframes trs-bow2 { 0%{ transform: translateY(0) rotate(0) } 30%{ transform: translateY(-2px) rotate(-1deg) } 60%{ transform: translateY(0) rotate(0) } 100%{ transform: translateY(-1px) rotate(1deg) } }
@keyframes trs-idle { 0%,100%{ transform: scaleY(1) } 50%{ transform: scaleY(0.98) translateY(1px) } }

/* Scene: joan-plans-enticement (overcast, calm, interior tent) */
.scn-joan-plans-enticement {
  background:
    linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 30%, #3a2a1a 70%, #2a1a12 100%),
    radial-gradient(ellipse at 50% 100%, #8a7a5a 0%, transparent 60%);
}
.scn-joan-plans-enticement .bg-tent { position:absolute; inset:0; background: repeating-linear-gradient(45deg, #5a4a3a 0px, #5a4a3a 10px, #4a3a2a 10px, #4a3a2a 12px); opacity:0.4; }
.scn-joan-plans-enticement .table-map { position:absolute; bottom:25%; left:20%; width:120px; height:40px; background: linear-gradient(135deg, #7a6a4a 0%, #5a4a2a 100%); border-radius: 8px; transform: perspective(200px) rotateX(30deg); box-shadow: 0 8px 12px rgba(0,0,0,0.5); }
.scn-joan-plans-enticement .scroll { position:absolute; bottom:35%; left:35%; width:50px; height:15px; background: #b0a080; border-radius: 10% 10% 40% 40%; transform: rotate(-10deg); animation: pln-scroll 6s ease-in-out infinite alternate; }
.scn-joan-plans-enticement .hand-joan { position:absolute; bottom:30%; left:28%; width:16px; height:30px; background: linear-gradient(180deg, #6a4a3a 0%, #3a2a1a 100%); border-radius: 40% 40% 20% 20% / 50% 50% 30% 30%; transform: rotate(15deg); transform-origin: bottom center; animation: pln-hand 4s ease-in-out infinite; }
.scn-joan-plans-enticement .cup { position:absolute; bottom:30%; left:60%; width:18px; height:20px; background: linear-gradient(180deg, #8a6a4a 0%, #5a3a2a 100%); border-radius: 20% 20% 10% 10%; box-shadow: 0 2px 4px rgba(0,0,0,0.4); }
.scn-joan-plans-enticement .candle { position:absolute; bottom:35%; left:70%; width:6px; height:30px; background: #5a4a3a; border-radius: 30% 30% 10% 10%; animation: pln-flicker 2s ease-in-out infinite; }
.scn-joan-plans-enticement .glow-soft { position:absolute; bottom:30%; left:68%; width:40px; height:40px; background: radial-gradient(circle, rgba(255,200,100,0.3) 0%, transparent 70%); border-radius: 50%; animation: pln-glow 3s ease-in-out infinite alternate; }
@keyframes pln-scroll { 0%{ transform: rotate(-10deg) translateX(0) } 50%{ transform: rotate(-5deg) translateX(4px) } 100%{ transform: rotate(-10deg) translateX(0) } }
@keyframes pln-hand { 0%{ transform: rotate(15deg) translateY(0) } 30%{ transform: rotate(18deg) translateY(-2px) } 60%{ transform: rotate(12deg) translateY(0) } 100%{ transform: rotate(15deg) translateY(0) } }
@keyframes pln-flicker { 0%{ opacity:0.8; transform: scaleY(1) } 50%{ opacity:1; transform: scaleY(1.05) } 100%{ opacity:0.9; transform: scaleY(0.95) } }
@keyframes pln-glow { 0%{ opacity:0.5; transform: scale(1) } 100%{ opacity:0.8; transform: scale(1.2) } }

/* Scene: french-aim-expulse-english (overcast, tense) */
.scn-french-aim-expulse-english {
  background:
    linear-gradient(180deg, #6a6a5e 0%, #8a8a7a 20%, #5a5a4e 50%, #3a3a34 100%),
    radial-gradient(ellipse at 50% 0%, #9a9a8c 0%, transparent 50%);
}
.scn-french-aim-expulse-english .bg-march { position:absolute; inset:0; background: repeating-linear-gradient(0deg, #4a4a3e 0px, #4a4a3e 2px, #3a3a2e 2px, #3a3a2e 4px); opacity:0.3; animation: exp-bg 0.5s steps(2) infinite; }
.scn-french-aim-expulse-english .drum { position:absolute; bottom:40%; left:30%; width:30px; height:20px; background: linear-gradient(180deg, #a06040 0%, #804020 100%); border-radius: 20%; transform: perspective(100px) rotateY(20deg); box-shadow: 0 4px 8px rgba(0,0,0,0.5); }
.scn-french-aim-expulse-english .drummer { position:absolute; bottom:35%; left:25%; width:22px; height:50px; background: linear-gradient(180deg, #3a2a1a 0%, #1a0a0a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%; transform-origin: bottom center; animation: exp-drum 0.5s ease-in-out infinite; }
.scn-french-aim-expulse-english .soldier-1 { position:absolute; bottom:35%; left:48%; width:20px; height:48px; background: linear-gradient(180deg, #4a4a3a 0%, #2a2a1a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%; transform-origin: bottom center; animation: exp-march 0.6s ease-in-out infinite; }
.scn-french-aim-expulse-english .soldier-2 { position:absolute; bottom:35%; right:30%; width:20px; height:48px; background: linear-gradient(180deg, #4a3a3a 0%, #2a1a1a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%; transform-origin: bottom center; animation: exp-march2 0.6s ease-in-out infinite 0.3s; }
.scn-french-aim-expulse-english .spear-1 { position:absolute; bottom:40%; left:50%; width:4px; height:70px; background: #5a4a2a; transform: rotate(15deg); transform-origin: bottom; animation: exp-spear 0.5s ease-in-out infinite alternate; }
.scn-french-aim-expulse-english .spear-2 { position:absolute; bottom:40%; right:32%; width:4px; height:70px; background: #5a4a2a; transform: rotate(-10deg); transform-origin: bottom; animation: exp-spear2 0.5s ease-in-out infinite alternate 0.2s; }
.scn-french-aim-expulse-english .dust { position:absolute; bottom:30%; left:0; right:0; height:10px; background: radial-gradient(ellipse at 50% 100%, #6a5a4a 0%, transparent 70%); animation: exp-dust 1s ease-in-out infinite alternate; }
.scn-french-aim-expulse-english .flag { position:absolute; bottom:50%; left:55%; width:6px; height:50px; background: #4a3a2a; transform: rotate(5deg); animation: exp-flag 0.7s ease-in-out infinite alternate; }
.scn-french-aim-expulse-english .flag::after { content:''; position:absolute; top:0; left:6px; width:30px; height:18px; background: #5a3a2a; border-radius: 0 30% 50% 0; }
@keyframes exp-bg { 0%{ opacity:0.2 } 100%{ opacity:0.35 } }
@keyframes exp-drum { 0%{ transform: translateY(0) rotate(0deg) } 25%{ transform: translateY(-2px) rotate(2deg) } 50%{ transform: translateY(0) rotate(0deg) } 75%{ transform: translateY(-2px) rotate(-2deg) } 100%{ transform: translateY(0) rotate(0deg) } }
@keyframes exp-march { 0%{ transform: translateX(0) translateY(0) rotate(0) } 25%{ transform: translateX(3px) translateY(-2px) rotate(2deg) } 50%{ transform: translateX(6px) translateY(0) rotate(0) } 75%{ transform: translateX(3px) translateY(-2px) rotate(-2deg) } 100%{ transform: translateX(0) translateY(0) rotate(0) } }
@keyframes exp-march2 { 0%{ transform: translateX(0) translateY(0) rotate(0) } 25%{ transform: translateX(-3px) translateY(-2px) rotate(-2deg) } 50%{ transform: translateX(-6px) translateY(0) rotate(0) } 75%{ transform: translateX(-3px) translateY(-2px) rotate(2deg) } 100%{ transform: translateX(0) translateY(0) rotate(0) } }
@keyframes exp-spear { 0%{ transform: rotate(15deg) } 100%{ transform: rotate(18deg) } }
@keyframes exp-spear2 { 0%{ transform: rotate(-10deg) } 100%{ transform: rotate(-13deg) } }
@keyframes exp-dust { 0%{ opacity:0.4; transform: scaleY(1) } 100%{ opacity:0.7; transform: scaleY(1.5) } }
@keyframes exp-flag { 0%{ transform: rotate(5deg) scaleX(1) } 100%{ transform: rotate(8deg) scaleX(1.1) } }

.scn-henry-joyful { background: linear-gradient(180deg, #fce4a8 0%, #f6d186 40%, #e8b86e 100%), radial-gradient(circle at 70% 20%, #fff8e0 0%, transparent 60%); }
.scn-henry-joyful .sun-glow { position:absolute; top:5%; left:50%; width:120px; height:120px; transform:translateX(-50%); background: radial-gradient(circle, #ffe680 0%, #f0c040 40%, transparent 70%); border-radius:50%; box-shadow: 0 0 80px 40px rgba(255,230,128,.3); animation: hj-glow 4s ease-in-out infinite alternate; }
.scn-henry-joyful .figure-henry { position:absolute; bottom:25%; left:45%; width:28px; height:60px; background: linear-gradient(180deg, #8a6a4a 0%, #5a3a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: hj-figure 6s ease-in-out infinite; }
.scn-henry-joyful .figure-gloucester { position:absolute; bottom:25%; left:55%; width:26px; height:56px; background: linear-gradient(180deg, #6a5a4a 0%, #3a2a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: hj-figure 6s ease-in-out infinite reverse; }
.scn-henry-joyful .scroll { position:absolute; top:45%; left:50%; width:70px; height:20px; transform:translateX(-50%); background: linear-gradient(180deg, #f5e6c8 0%, #d4b896 100%); border-radius: 20% 20% 30% 30% / 40% 40% 30% 30%; box-shadow: 0 4px 8px rgba(0,0,0,.2); animation: hj-scroll 8s ease-in-out infinite; }
.scn-henry-joyful .particle { position:absolute; width:8px; height:8px; background: radial-gradient(circle, #ffe680 0%, #e8b040 100%); border-radius:50%; box-shadow: 0 0 6px #e8b040; }
.scn-henry-joyful .p1 { top:30%; left:30%; animation: hj-float 3s ease-in-out infinite; }
.scn-henry-joyful .p2 { top:25%; left:60%; animation: hj-float 4s ease-in-out infinite 1s; }
.scn-henry-joyful .p3 { top:35%; left:45%; animation: hj-float 3.5s ease-in-out infinite 0.5s; }
@keyframes hj-glow { 0% { opacity:.7; transform:translateX(-50%) scale(1); } 50% { opacity:1; transform:translateX(-50%) scale(1.1); } 100% { opacity:.8; transform:translateX(-50%) scale(0.95); } }
@keyframes hj-figure { 0%,100% { transform: translateX(0) translateY(0) rotate(-2deg); } 25% { transform: translateX(8px) translateY(-3px) rotate(2deg); } 50% { transform: translateX(16px) translateY(0) rotate(-1deg); } 75% { transform: translateX(8px) translateY(-1px) rotate(1deg); } }
@keyframes hj-scroll { 0%,100% { transform: translateX(-50%) scaleY(1); } 50% { transform: translateX(-50%) scaleY(1.2) rotate(2deg); } }
@keyframes hj-float { 0%,100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-20px) rotate(15deg); } }

.scn-restoreration-richard { background: linear-gradient(180deg, #f2e8d0 0%, #e0d0b8 40%, #c8b898 100%), linear-gradient(135deg, #fff8e8 0%, #e8d8c0 50%, #b8a888 100%); }
.scn-restoreration-richard .throne { position:absolute; bottom:15%; left:50%; width:120px; height:120px; transform:translateX(-50%); background: linear-gradient(180deg, #9a8a6a 0%, #7a6a4a 100%); border-radius: 20% 20% 10% 10% / 30% 30% 20% 20%; box-shadow: 0 8px 16px rgba(0,0,0,.3); animation: rr-throne 10s ease-in-out infinite; }
.scn-restoreration-richard .king-silhouette { position:absolute; bottom:20%; left:45%; width:30px; height:70px; background: linear-gradient(180deg, #3a2a2a 0%, #1a1a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: rr-bow 8s ease-in-out infinite; }
.scn-restoreration-richard .richard-silhouette { position:absolute; bottom:20%; left:55%; width:28px; height:65px; background: linear-gradient(180deg, #4a3a3a 0%, #2a1a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: rr-bow 8s ease-in-out infinite reverse; }
.scn-restoreration-richard .scroll { position:absolute; top:30%; left:50%; width:80px; height:22px; transform:translateX(-50%) rotate(-5deg); background: linear-gradient(180deg, #f5e6c8 0%, #d4b896 100%); border-radius: 10% 10% 20% 20% / 30% 30% 20% 20%; box-shadow: 0 4px 8px rgba(0,0,0,.2); animation: rr-scroll 12s ease-in-out infinite; }
.scn-restoreration-richard .crown { position:absolute; top:15%; left:50%; width:50px; height:30px; transform:translateX(-50%); background: radial-gradient(ellipse at 50% 100%, #f0d060 0%, #b89840 100%); border-radius: 50% 50% 20% 20% / 40% 40% 20% 20%; box-shadow: 0 0 20px 6px rgba(240,208,96,.4); animation: rr-crown 6s ease-in-out infinite alternate; }
.scn-restoreration-richard .window-light { position:absolute; top:0; left:30%; width:40%; height:50%; background: linear-gradient(180deg, rgba(255,248,224,.4) 0%, transparent 100%); filter: blur(30px); animation: rr-light 15s ease-in-out infinite; }
.scn-restoreration-richard .pillar { position:absolute; bottom:0; width:30px; height:80%; background: linear-gradient(180deg, #c8b898 0%, #a89070 100%); }
.scn-restoreration-richard .pillar.left { left:10%; }
.scn-restoreration-richard .pillar.right { right:10%; }
@keyframes rr-throne { 0%,100% { transform: translateX(-50%) translateY(0); } 50% { transform: translateX(-50%) translateY(-3px); } }
@keyframes rr-bow { 0%,100% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(0) rotate(5deg); } }
@keyframes rr-scroll { 0%,100% { transform: translateX(-50%) rotate(-5deg) scaleY(1); } 50% { transform: translateX(-50%) rotate(2deg) scaleY(1.1); } }
@keyframes rr-crown { 0% { opacity:.8; transform:translateX(-50%) scale(1); box-shadow: 0 0 20px 6px rgba(240,208,96,.4); } 100% { opacity:1; transform:translateX(-50%) scale(1.05); box-shadow: 0 0 30px 10px rgba(240,208,96,.6); } }
@keyframes rr-light { 0%,100% { opacity:.3; } 50% { opacity:.6; } }

.scn-henry-orders-restoration { background: linear-gradient(180deg, #f5ead0 0%, #e2d4b8 40%, #c8b898 100%), radial-gradient(ellipse at 50% 20%, #fff5e0 0%, transparent 70%); }
.scn-henry-orders-restoration .document { position:absolute; top:30%; left:50%; width:120px; height:80px; transform:translateX(-50%) rotate(-2deg); background: linear-gradient(180deg, #fdf5e8 0%, #e8dcc8 100%); border:2px solid #c8b898; border-radius: 4% 4% 6% 6% / 5% 5% 7% 7%; box-shadow: 0 6px 12px rgba(0,0,0,.15); animation: hor-doc 14s ease-in-out infinite; }
.scn-henry-orders-restoration .seal { position:absolute; top:45%; left:70%; width:20px; height:20px; background: radial-gradient(circle, #c8553d 0%, #84362a 100%); border-radius:50%; box-shadow: 0 2px 4px rgba(0,0,0,.3); animation: hor-seal 6s ease-in-out infinite; }
.scn-henry-orders-restoration .hand { position:absolute; top:35%; left:40%; width:24px; height:34px; background: linear-gradient(180deg, #d4b896 0%, #b89878 100%); border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%; transform-origin: top center; animation: hor-hand 8s ease-in-out infinite alternate; }
.scn-henry-orders-restoration .figure-henry { position:absolute; bottom:20%; left:25%; width:28px; height:58px; background: linear-gradient(180deg, #6a4a3a 0%, #3a2a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: hor-henry 10s ease-in-out infinite; }
.scn-henry-orders-restoration .table { position:absolute; bottom:22%; left:30%; width:60%; height:20px; background: linear-gradient(180deg, #8a7a5a 0%, #6a5a3a 100%); border-radius: 5% 5% 10% 10% / 20% 20% 30% 30%; box-shadow: 0 4px 8px rgba(0,0,0,.2); }
.scn-henry-orders-restoration .candle { position:absolute; top:25%; left:55%; width:8px; height:30px; background: linear-gradient(180deg, #f0e0c0 0%, #d4c0a0 100%); border-radius: 10%; box-shadow: 0 0 10px 2px rgba(255,200,100,.3); animation: hor-candle 5s ease-in-out infinite; }
.scn-henry-orders-restoration .light-beam { position:absolute; top:0; left:55%; width:60%; height:60%; background: linear-gradient(180deg, rgba(255,248,224,.15) 0%, transparent 100%); transform: skewX(-10deg); filter: blur(10px); animation: hor-beam 20s ease-in-out infinite; }
@keyframes hor-doc { 0%,100% { transform: translateX(-50%) rotate(-2deg) scaleX(1); } 50% { transform: translateX(-50%) rotate(1deg) scaleX(1.02); } }
@keyframes hor-seal { 0%,100% { transform: translate(0,0) scale(1); } 50% { transform: translate(2px,-2px) scale(1.1); } }
@keyframes hor-hand { 0% { transform: rotate(0deg); } 100% { transform: rotate(15deg); } }
@keyframes hor-henry { 0%,100% { transform: translateX(0) translateY(0); } 50% { transform: translateX(5px) translateY(-2px); } }
@keyframes hor-candle { 0%,100% { opacity:.8; transform: scaleY(1); } 50% { opacity:1; transform: scaleY(1.05); } }
@keyframes hor-beam { 0%,100% { opacity:.2; } 50% { opacity:.4; } }

.scn-richard-knighted-york { background: linear-gradient(180deg, #f2dca8 0%, #e8c888 40%, #d4a868 100%), radial-gradient(circle at 50% 30%, #fff0d0 0%, transparent 60%); }
.scn-richard-knighted-york .kneeling-richard { position:absolute; bottom:20%; left:40%; width:26px; height:50px; background: linear-gradient(180deg, #5a3a2a 0%, #2a1a0a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: rky-kneel 8s ease-in-out infinite; }
.scn-richard-knighted-york .king-henry { position:absolute; bottom:25%; left:55%; width:30px; height:70px; background: linear-gradient(180deg, #7a5a4a 0%, #4a2a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: rky-king 10s ease-in-out infinite; }
.scn-richard-knighted-york .sword { position:absolute; top:10%; left:50%; width:10px; height:70px; transform:translateX(-50%) rotate(-10deg); background: linear-gradient(180deg, #c8c0b0 0%, #a09880 100%); border-radius: 10% 10% 20% 20% / 10% 10% 30% 30%; box-shadow: 0 0 6px rgba(192,176,144,.5); animation: rky-sword 6s ease-in-out infinite alternate; }
.scn-richard-knighted-york .crown { position:absolute; top:5%; left:50%; width:50px; height:25px; transform:translateX(-50%); background: radial-gradient(ellipse at 50% 100%, #f0d060 0%, #b89840 100%); border-radius: 50% 50% 20% 20% / 40% 40% 20% 20%; box-shadow: 0 0 20px 6px rgba(240,208,96,.4); animation: rky-crown 4s ease-in-out infinite alternate; }
.scn-richard-knighted-york .mantle { position:absolute; bottom:15%; left:45%; width:60px; height:40px; background: linear-gradient(180deg, #a0461a 0%, #5e1a1d 100%); border-radius: 30% 30% 10% 10% / 40% 40% 20% 20%; box-shadow: 0 4px 8px rgba(0,0,0,.3); animation: rky-mantle 12s ease-in-out infinite; }
.scn-richard-knighted-york .sunbeam { position:absolute; top:0; left:30%; width:40%; height:80%; background: linear-gradient(180deg, rgba(255,248,224,.2) 0%, transparent 100%); filter: blur(20px); animation: rky-beam 15s ease-in-out infinite; }
.scn-richard-knighted-york .step { position:absolute; bottom:15%; left:35%; width:30%; height:12px; background: linear-gradient(180deg, #b09878 0%, #907858 100%); border-radius: 10% 10% 20% 20% / 30% 30% 20% 20%; box-shadow: 0 2px 4px rgba(0,0,0,.2); }
@keyframes rky-kneel { 0%,100% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(-5px) rotate(5deg); } }
@keyframes rky-king { 0%,100% { transform: translateX(0) translateY(0); } 50% { transform: translateX(3px) translateY(-2px); } }
@keyframes rky-sword { 0% { transform: translateX(-50%) rotate(-10deg); } 100% { transform: translateX(-50%) rotate(-5deg); } }
@keyframes rky-crown { 0% { opacity:.8; transform:translateX(-50%) scale(1); box-shadow: 0 0 20px 6px rgba(240,208,96,.4); } 100% { opacity:1; transform:translateX(-50%) scale(1.05); box-shadow: 0 0 30px 10px rgba(240,208,96,.6); } }
@keyframes rky-mantle { 0%,100% { transform: scaleX(1) rotate(0deg); } 50% { transform: scaleX(1.05) rotate(2deg); } }
@keyframes rky-beam { 0%,100% { opacity:.2; } 50% { opacity:.4; } }

.scn-angiers-suffolk-captures-margaret {
  background:
    radial-gradient(ellipse at 50% 0%, #ffefc0 0%, transparent 50%),
    linear-gradient(180deg, #b0d4e8 0%, #f4e4b0 50%, #c0b080 100%);
}
.scn-angiers-suffolk-captures-margaret .sky-garden {
  position:absolute;inset:0 0 50% 0;
  background:linear-gradient(180deg, #ffe8b0 0%, #f0d8a0 100%);
  animation: ascm-sky 18s ease-in-out infinite alternate;
}
.scn-angiers-suffolk-captures-margaret .wall-stone {
  position:absolute;bottom:40%;left:10%;width:35%;height:30%;
  background:linear-gradient(180deg, #b09880 0%, #8a7a6a 100%);
  border-radius:4% 4% 0 0;box-shadow:inset 0 6px 12px rgba(0,0,0,.2);
  animation: ascm-wall 12s ease-in-out infinite alternate;
}
.scn-angiers-suffolk-captures-margaret .grass {
  position:absolute;bottom:0;left:0;right:0;height:15%;
  background:linear-gradient(180deg, #7a9a5a 0%, #5a7a4a 100%);
  border-radius:60% 40% 0 0 / 100% 80% 0 0;
  animation: ascm-grass 8s ease-in-out infinite;
}
.scn-angiers-suffolk-captures-margaret .knight {
  position:absolute;bottom:18%;left:25%;width:24px;height:50px;
  background:linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%);
  border-radius:30% 30% 20% 20% / 50% 50% 20% 20%;
  transform-origin:bottom center;
  animation: ascm-knight 5s ease-in-out infinite alternate;
}
.scn-angiers-suffolk-captures-margaret .lady {
  position:absolute;bottom:18%;left:55%;width:22px;height:48px;
  background:linear-gradient(180deg, #c8a880 0%, #a07860 100%);
  border-radius:40% 40% 30% 30% / 60% 60% 30% 30%;
  transform-origin:bottom center;
  animation: ascm-lady 6s ease-in-out infinite;
}
.scn-angiers-suffolk-captures-margaret .hand-reach {
  position:absolute;bottom:38%;left:32%;width:12px;height:8px;
  background:linear-gradient(180deg, #d0b8a0 0%, #a09080 100%);
  border-radius:50% 50% 30% 30%;
  transform-origin:right center;
  animation: ascm-hand 3s ease-in-out infinite alternate;
}
.scn-angiers-suffolk-captures-margaret .roses {
  position:absolute;bottom:22%;left:48%;width:16px;height:14px;
  background:radial-gradient(circle at 50% 40%, #c8553d 0%, #a0461a 70%);
  border-radius:50%;filter:blur(1px);
  animation: ascm-rose 4s ease-in-out infinite;
}
.scn-angiers-suffolk-captures-margaret .sun-rays {
  position:absolute;top:5%;right:10%;width:60px;height:60px;
  background:radial-gradient(circle, #ffdda0 0%, transparent 60%);
  filter:blur(8px);opacity:.6;
  animation: ascm-rays 14s ease-in-out infinite alternate;
}
@keyframes ascm-sky {0%{opacity:.9}50%{opacity:1}100%{opacity:.8}}
@keyframes ascm-wall {0%{transform:translateY(0)}50%{transform:translateY(-3px)}100%{transform:translateY(0)}}
@keyframes ascm-grass {0%,100%{transform:scaleY(1)}50%{transform:scaleY(0.97)}}
@keyframes ascm-knight {0%{transform:rotate(-2deg)}50%{transform:rotate(2deg) translateY(-2px)}100%{transform:rotate(-1deg)}}
@keyframes ascm-lady {0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
@keyframes ascm-hand {0%{transform:rotate(-10deg) translateX(0)}50%{transform:rotate(-5deg) translateX(4px)}100%{transform:rotate(-15deg) translateX(2px)}}
@keyframes ascm-rose {0%,100%{opacity:.8}50%{opacity:1}}
@keyframes ascm-rays {0%{opacity:.4}50%{opacity:.7}100%{opacity:.5}}

/* --- angiers-suffolk-reverence --- */
.scn-angiers-suffolk-reverence {
  background:
    radial-gradient(ellipse at 50% 10%, #ffecb0 0%, transparent 50%),
    linear-gradient(180deg, #a0c8e0 0%, #d0e0f0 40%, #b0d0e0 100%);
}
.scn-angiers-suffolk-reverence .sky-lake {
  position:absolute;inset:0 0 50% 0;
  background:linear-gradient(180deg, #c0d8f0 0%, #e0f0ff 100%);
  animation: asrv-sky 20s ease-in-out infinite alternate;
}
.scn-angiers-suffolk-reverence .water {
  position:absolute;bottom:0;left:0;right:0;height:55%;
  background:linear-gradient(180deg, #80a0c0 0%, #b0c8e0 100%);
  border-top:2px solid rgba(255,255,200,.3);
  animation: asrv-water 15s ease-in-out infinite;
}
.scn-angiers-suffolk-reverence .swan-body {
  position:absolute;bottom:30%;left:40%;width:50px;height:40px;
  background:radial-gradient(ellipse at 50% 60%, #ffffff 0%, #e0e0e0 100%);
  border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow:0 4px 8px rgba(0,0,0,.1);
  animation: asrv-swan-body 8s ease-in-out infinite;
}
.scn-angiers-suffolk-reverence .swan-neck {
  position:absolute;bottom:50%;left:42%;width:10px;height:40px;
  background:linear-gradient(180deg, #ffffff 0%, #e8e8e8 100%);
  border-radius:50% 50% 20% 20%;
  transform-origin:bottom center;
  animation: asrv-swan-neck 6s ease-in-out infinite alternate;
}
.scn-angiers-suffolk-reverence .cygnet-1 {
  position:absolute;bottom:28%;left:54%;width:20px;height:15px;
  background:radial-gradient(ellipse at 50% 50%, #f0e8e0 0%, #c0b8b0 100%);
  border-radius:50%;
  animation: asrv-cygnet 5s ease-in-out infinite;
  animation-delay:0s;
}
.scn-angiers-suffolk-reverence .cygnet-2 {
  position:absolute;bottom:26%;left:62%;width:18px;height:13px;
  background:radial-gradient(ellipse at 50% 50%, #f0e8e0 0%, #c0b8b0 100%);
  border-radius:50%;
  animation: asrv-cygnet 5s ease-in-out infinite;
  animation-delay:1.5s;
}
.scn-angiers-suffolk-reverence .reeds {
  position:absolute;bottom:18%;left:10%;width:8px;height:40px;
  background:linear-gradient(180deg, #6a8a4a 0%, #4a6a2a 100%);
  border-radius:20% 20% 10% 10%;
  transform-origin:bottom center;
  animation: asrv-reeds 4s ease-in-out infinite alternate;
}
.scn-angiers-suffolk-reverence .ripple-1 {
  position:absolute;bottom:20%;left:30%;width:40px;height:6px;
  background:rgba(255,255,200,.2);border-radius:50%;filter:blur(2px);
  animation: asrv-ripple 7s ease-in-out infinite;
}
.scn-angiers-suffolk-reverence .ripple-2 {
  position:absolute;bottom:22%;left:50%;width:30px;height:5px;
  background:rgba(255,255,200,.15);border-radius:50%;filter:blur(2px);
  animation: asrv-ripple 7s ease-in-out infinite;
  animation-delay:3.5s;
}
@keyframes asrv-sky {0%{opacity:.85}50%{opacity:1}100%{opacity:.9}}
@keyframes asrv-water {0%,100%{transform:translateY(0)}50%{transform:translateY(-2px)}}
@keyframes asrv-swan-body {0%,100%{transform:translateX(0)}50%{transform:translateX(4px)}}
@keyframes asrv-swan-neck {0%{transform:rotate(-10deg)}50%{transform:rotate(5deg)}100%{transform:rotate(-8deg)}}
@keyframes asrv-cygnet {0%,100%{transform:translateY(0)}50%{transform:translateY(-2px) rotate(5deg)}}
@keyframes asrv-reeds {0%,100%{transform:rotate(-5deg)}50%{transform:rotate(5deg)}}
@keyframes asrv-ripple {0%{opacity:0;transform:scaleX(0.5)}50%{opacity:1;transform:scaleX(1)}100%{opacity:0;transform:scaleX(1.2)}}

/* --- angiers-suffolk-desire --- */
.scn-angiers-suffolk-desire {
  background:
    radial-gradient(ellipse at 30% 60%, #ffe8c0 0%, transparent 60%),
    linear-gradient(180deg, #b09070 0%, #7a6a5a 100%);
}
.scn-angiers-suffolk-desire .wall-interior {
  position:absolute;inset:0;
  background:linear-gradient(180deg, #b8a080 0%, #8a7a6a 50%, #6a5a4a 100%);
  animation: asde-wall 20s ease-in-out infinite alternate;
}
.scn-angiers-suffolk-desire .window-arch {
  position:absolute;top:10%;left:20%;width:45%;height:55%;
  background:linear-gradient(180deg, #d0e8f0 0%, #a0c0d8 100%);
  border-radius:40% 40% 10% 10%;
  box-shadow:inset 0 0 20px rgba(255,255,200,.4);
  animation: asde-window 16s ease-in-out infinite;
}
.scn-angiers-suffolk-desire .desk {
  position:absolute;bottom:15%;left:25%;width:40%;height:8%;
  background:linear-gradient(180deg, #705040 0%, #503020 100%);
  border-radius:4px;
  animation: asde-desk 12s ease-in-out infinite;
}
.scn-angiers-suffolk-desire .inkpot {
  position:absolute;bottom:22%;left:35%;width:12px;height:16px;
  background:linear-gradient(180deg, #4a3a3a 0%, #2a1a1a 100%);
  border-radius:0 0 30% 30%;
  box-shadow:0 2px 4px rgba(0,0,0,.3);
  animation: asde-ink 6s ease-in-out infinite;
}
.scn-angiers-suffolk-desire .quill {
  position:absolute;bottom:24%;left:40%;width:6px;height:30px;
  background:linear-gradient(180deg, #f0e0c0 0%, #c0b080 100%);
  border-radius:10% 10% 50% 50%;
  transform-origin:bottom center;
  animation: asde-quill 3s ease-in-out infinite alternate;
}
.scn-angiers-suffolk-desire .paper {
  position:absolute;bottom:16%;left:28%;width:25%;height:12%;
  background:linear-gradient(180deg, #f8f0e0 0%, #e0d0c0 100%);
  border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.1);
  animation: asde-paper 5s ease-in-out infinite;
}
.scn-angiers-suffolk-desire .sunbeam {
  position:absolute;top:5%;left:30%;width:10px;height:70%;
  background:linear-gradient(180deg, rgba(255,255,200,.6) 0%, rgba(255,255,200,0) 100%);
  transform:rotate(-15deg);filter:blur(4px);
  animation: asde-beam 9s ease-in-out infinite alternate;
}
.scn-angiers-suffolk-desire .glow-spot {
  position:absolute;top:30%;right:25%;width:30px;height:30px;
  background:radial-gradient(circle, #ffe080 0%, transparent 60%);
  filter:blur(6px);opacity:.7;
  animation: asde-glow 4s ease-in-out infinite alternate;
}
@keyframes asde-wall {0%{opacity:.9}50%{opacity:1}100%{opacity:.85}}
@keyframes asde-window {0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
@keyframes asde-desk {0%,100%{transform:translateY(0)}50%{transform:translateY(-1px)}}
@keyframes asde-ink {0%,100%{transform:translateY(0)}50%{transform:translateY(-2px)}}
@keyframes asde-quill {0%{transform:rotate(-15deg) translateY(0)}50%{transform:rotate(5deg) translateY(-3px)}100%{transform:rotate(-10deg) translateY(0)}}
@keyframes asde-paper {0%,100%{transform:scaleY(1)}50%{transform:scaleY(0.98)}}
@keyframes asde-beam {0%{opacity:.3;transform:rotate(-20deg) translateX(0)}50%{opacity:.6;transform:rotate(-10deg) translateX(10px)}100%{opacity:.4;transform:rotate(-15deg) translateX(5px)}}
@keyframes asde-glow {0%{opacity:.5;transform:scale(1)}50%{opacity:.9;transform:scale(1.2)}100%{opacity:.6;transform:scale(1.05)}}

/* --- angiers-beauty-majesty --- */
.scn-angiers-beauty-majesty {
  background:
    radial-gradient(ellipse at 50% 20%, #ffdda0 0%, transparent 50%),
    linear-gradient(180deg, #ffe8b0 0%, #f0ce80 30%, #c09050 100%);
}
.scn-angiers-beauty-majesty .sky-bright {
  position:absolute;inset:0 0 30% 0;
  background:linear-gradient(180deg, #ffe0a0 0%, #f0c080 100%);
  animation: abmj-sky 18s ease-in-out infinite alternate;
}
.scn-angiers-beauty-majesty .sun-glow {
  position:absolute;top:5%;left:50%;width:80px;height:80px;
  background:radial-gradient(circle, #ffec80 0%, #ffd060 40%, transparent 70%);
  transform:translateX(-50%);filter:blur(10px);
  animation: abmj-sun 6s ease-in-out infinite alternate;
}
.scn-angiers-beauty-majesty .throne {
  position:absolute;bottom:20%;left:50%;width:80px;height:60px;
  background:linear-gradient(180deg, #b08860 0%, #806040 100%);
  transform:translateX(-50%);
  border-radius:10% 10% 5% 5%;box-shadow:0 6px 12px rgba(0,0,0,.3);
  animation: abmj-throne 14s ease-in-out infinite;
}
.scn-angiers-beauty-majesty .crown {
  position:absolute;bottom:55%;left:50%;width:30px;height:20px;
  background:linear-gradient(180deg, #e0b040 0%, #c09030 100%);
  transform:translateX(-50%);
  border-radius:30% 30% 10% 10%;box-shadow:0 2px 6px rgba(0,0,0,.2);
  animation: abmj-crown 5s ease-in-out infinite;
}
.scn-angiers-beauty-majesty .figure-profile {
  position:absolute;bottom:22%;left:50%;width:20px;height:50px;
  background:linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%);
  transform:translateX(-50%);
  border-radius:40% 20% 20% 30% / 60% 20% 30% 30%;
  animation: abmj-figure 7s ease-in-out infinite;
}
.scn-angiers-beauty-majesty .drapery-left {
  position:absolute;bottom:18%;left:30%;width:30px;height:50px;
  background:linear-gradient(180deg, #8a6a4a 0%, #5a3a2a 100%);
  border-radius:0 40% 30% 0;
  transform:rotate(10deg);
  animation: abmj-drape 9s ease-in-out infinite alternate;
}
.scn-angiers-beauty-majesty .drapery-right {
  position:absolute;bottom:18%;right:30%;width:30px;height:50px;
  background:linear-gradient(180deg, #8a6a4a 0%, #5a3a2a 100%);
  border-radius:40% 0 0 30%;
  transform:rotate(-10deg);
  animation: abmj-drape 9s ease-in-out infinite alternate;
  animation-delay:3s;
}
.scn-angiers-beauty-majesty .halo {
  position:absolute;top:18%;left:50%;width:50px;height:50px;
  background:radial-gradient(circle, rgba(255,220,140,.5) 0%, transparent 60%);
  transform:translateX(-50%);filter:blur(8px);
  animation: abmj-halo 4s ease-in-out infinite alternate;
}
@keyframes abmj-sky {0%{opacity:.8}50%{opacity:1}100%{opacity:.9}}
@keyframes abmj-sun {0%{transform:translateX(-50%) scale(1);opacity:.8}50%{transform:translateX(-50%) scale(1.1);opacity:1}100%{transform:translateX(-50%) scale(0.95);opacity:.85}}
@keyframes abmj-throne {0%,100%{transform:translateX(-50%) translateY(0)}50%{transform:translateX(-50%) translateY(-2px)}}
@keyframes abmj-crown {0%,100%{transform:translateX(-50%) rotate(-3deg)}50%{transform:translateX(-50%) rotate(3deg)}}
@keyframes abmj-figure {0%,100%{transform:translateX(-50%) translateY(0)}50%{transform:translateX(-50%) translateY(-4px)}}
@keyframes abmj-drape {0%{transform:rotate(10deg) translateY(0)}50%{transform:rotate(15deg) translateY(-3px)}100%{transform:rotate(8deg) translateY(2px)}}
@keyframes abmj-halo {0%{opacity:.4;transform:translateX(-50%) scale(1)}50%{opacity:.8;transform:translateX(-50%) scale(1.2)}100%{opacity:.5;transform:translateX(-50%) scale(0.9)}}

.scn-somerset-threatens-blood {
  background:
    linear-gradient(180deg, #87ceeb 0%, #f0d58c 50%, #c49a6c 100%),
    radial-gradient(ellipse at 50% 0%, #ffdb58 0%, transparent 60%);
  isolation: isolate;
}
.scn-somerset-threatens-blood .sky {
  position: absolute; inset: 0 0 55% 0;
  background: linear-gradient(180deg, #9acdff 0%, #ffe4b5 100%);
  animation: stb-sky 10s ease-in-out infinite alternate;
}
.scn-somerset-threatens-blood .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #4a5a3a 0%, #2a3a1a 100%);
  border-radius: 80% 70% 0 0;
  box-shadow: inset 0 8px 25px rgba(0,0,0,0.4);
}
.scn-somerset-threatens-blood .figure-left {
  position: absolute; bottom: 22%; left: 25%; width: 40px; height: 70px;
  background: linear-gradient(180deg, #1a1a2a 0%, #050510 100%);
  border-radius: 45% 45% 35% 35% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: stb-figure-l 5s ease-in-out infinite;
}
.scn-somerset-threatens-blood .figure-right {
  position: absolute; bottom: 22%; right: 25%; width: 42px; height: 72px;
  background: linear-gradient(180deg, #2a1a2a 0%, #0a050a 100%);
  border-radius: 45% 45% 35% 35% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: stb-figure-r 5s ease-in-out infinite 0.4s;
}
.scn-somerset-threatens-blood .rose-white {
  position: absolute; bottom: 38%; left: 30%; width: 16px; height: 16px;
  background: radial-gradient(circle, #fffaf0 0%, #f0e0c0 60%);
  border-radius: 50% 50% 30% 50%;
  box-shadow: 0 0 8px 2px rgba(255,250,240,0.5);
  animation: stb-rose 4s ease-in-out infinite;
}
.scn-somerset-threatens-blood .rose-red {
  position: absolute; bottom: 38%; right: 30%; width: 16px; height: 16px;
  background: radial-gradient(circle, #c8553d 0%, #a0461a 70%);
  border-radius: 50% 50% 50% 30%;
  box-shadow: 0 0 8px 2px rgba(200,85,61,0.6);
  animation: stb-rose 4s ease-in-out infinite 1.2s;
}
.scn-somerset-threatens-blood .blood-drop {
  position: absolute; bottom: 44%; right: 28%; width: 6px; height: 12px;
  background: radial-gradient(circle, #7a2e2e 0%, #4a1a1a 100%);
  border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%;
  animation: stb-drop 3s ease-in-out infinite;
  filter: blur(1px);
}
@keyframes stb-sky { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes stb-figure-l { 0%,100% { transform: translateX(0) rotate(-2deg); } 50% { transform: translateX(3px) rotate(2deg); } }
@keyframes stb-figure-r { 0%,100% { transform: translateX(0) rotate(2deg); } 50% { transform: translateX(-3px) rotate(-2deg); } }
@keyframes stb-rose { 0%,100% { transform: scale(1) rotate(0deg); } 50% { transform: scale(1.1) rotate(15deg); } }
@keyframes stb-drop { 0% { transform: translateY(0) scaleY(1); opacity: 1; } 50% { transform: translateY(-4px) scaleY(1.3); opacity: 0.9; } 100% { transform: translateY(0) scaleY(1); opacity: 1; } }

.scn-richard-vs-somerset {
  background:
    linear-gradient(180deg, #ffe4b5 0%, #f5deb3 40%, #8f7a5a 100%),
    radial-gradient(ellipse at 50% 100%, #c49a6c 0%, transparent 70%);
}
.scn-richard-vs-somerset .bg-sun {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #ffdb58 0%, #ffe4b5 80%);
  animation: rvs-sun 8s ease-in-out infinite alternate;
}
.scn-richard-vs-somerset .silhouette-left {
  position: absolute; bottom: 20%; left: 20%; width: 50px; height: 80px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 45% 45% 35% 35% / 50% 50% 40% 40%;
  animation: rvs-fig-l 6s ease-in-out infinite;
}
.scn-richard-vs-somerset .silhouette-right {
  position: absolute; bottom: 18%; right: 20%; width: 55px; height: 85px;
  background: linear-gradient(180deg, #2a1a2a 0%, #0a050a 100%);
  border-radius: 45% 45% 35% 35% / 50% 50% 40% 40%;
  animation: rvs-fig-r 6s ease-in-out infinite 0.5s;
}
.scn-richard-vs-somerset .sword-fore {
  position: absolute; bottom: 32%; left: 45%; width: 4px; height: 60px;
  background: linear-gradient(180deg, #b0b0b0 0%, #606060 50%, #303030 100%);
  transform-origin: bottom center;
  border-radius: 0 0 20% 20%;
  box-shadow: 0 0 6px 1px rgba(255,215,0,0.3);
  animation: rvs-sword 3s ease-in-out infinite;
}
.scn-richard-vs-somerset .rose-white {
  position: absolute; bottom: 40%; left: 22%; width: 14px; height: 14px;
  background: radial-gradient(circle, #fffaf0 0%, #f0e0c0 70%);
  border-radius: 50% 50% 30% 50%;
  animation: rvs-rose 4s ease-in-out infinite;
}
.scn-richard-vs-somerset .rose-red {
  position: absolute; bottom: 38%; right: 22%; width: 14px; height: 14px;
  background: radial-gradient(circle, #c8553d 0%, #a0461a 70%);
  border-radius: 50% 50% 50% 30%;
  animation: rvs-rose 4s ease-in-out infinite 1s;
}
@keyframes rvs-sun { 0% { opacity: 0.85; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes rvs-fig-l { 0%,100% { transform: translateX(0) rotate(0deg) scaleY(1); } 25% { transform: translateX(2px) rotate(-3deg) scaleY(0.98); } 50% { transform: translateX(5px) rotate(0deg) scaleY(1.02); } 75% { transform: translateX(2px) rotate(3deg) scaleY(0.98); } }
@keyframes rvs-fig-r { 0%,100% { transform: translateX(0) rotate(0deg) scaleY(1); } 25% { transform: translateX(-2px) rotate(3deg) scaleY(0.98); } 50% { transform: translateX(-5px) rotate(0deg) scaleY(1.02); } 75% { transform: translateX(-2px) rotate(-3deg) scaleY(0.98); } }
@keyframes rvs-sword { 0%,100% { transform: rotate(10deg); } 50% { transform: rotate(-10deg); } }
@keyframes rvs-rose { 0%,100% { transform: scale(1) rotate(0deg); } 50% { transform: scale(1.15) rotate(20deg); } }

.scn-roses-canker-thorn {
  background:
    linear-gradient(180deg, #6b8e23 0%, #556b2f 60%, #3e4f2a 100%),
    radial-gradient(ellipse at 50% 30%, #8fbc8f 0%, transparent 70%);
}
.scn-roses-canker-thorn .bg-garden {
  position: absolute; inset: 0;
  background: radial-gradient(circle at 50% 30%, rgba(255,235,205,0.2) 0%, transparent 60%);
  animation: rct-glow 12s ease-in-out infinite alternate;
}
.scn-roses-canker-thorn .rose-white {
  position: absolute; bottom: 40%; left: 20%; width: 40px; height: 40px;
  background: radial-gradient(circle, #fffaf0 0%, #f5e6cc 60%, #d4c4a0 100%);
  border-radius: 40% 60% 50% 50%;
  box-shadow: 0 0 12px 3px rgba(255,250,240,0.3);
  animation: rct-rose-w 6s ease-in-out infinite;
}
.scn-roses-canker-thorn .rose-red {
  position: absolute; bottom: 38%; right: 20%; width: 42px; height: 42px;
  background: radial-gradient(circle, #c8553d 0%, #a0461a 50%, #6b2e0e 100%);
  border-radius: 60% 40% 50% 50%;
  box-shadow: 0 0 12px 3px rgba(200,85,61,0.4);
  animation: rct-rose-r 6s ease-in-out infinite 1s;
}
.scn-roses-canker-thorn .canker {
  position: absolute; bottom: 48%; left: 20%; width: 12px; height: 12px;
  background: radial-gradient(circle, #3a2a1a 0%, #2a1a0a 100%);
  border-radius: 50%;
  animation: rct-canker 4s ease-in-out infinite;
  box-shadow: 0 0 4px 1px rgba(0,0,0,0.5);
}
.scn-roses-canker-thorn .thorn-1 {
  position: absolute; bottom: 45%; right: 20%; width: 4px; height: 12px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 50% 50% 0 0;
  transform: rotate(-20deg);
  animation: rct-thorn 5s ease-in-out infinite;
}
.scn-roses-canker-thorn .thorn-2 {
  position: absolute; bottom: 40%; right: 20%; width: 4px; height: 12px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 50% 50% 0 0;
  transform: rotate(30deg);
  animation: rct-thorn 5s ease-in-out infinite 2s;
}
.scn-roses-canker-thorn .petal {
  position: absolute; bottom: 35%; left: 35%; width: 16px; height: 10px;
  background: radial-gradient(ellipse at 50% 50%, #c8553d 0%, #a0461a 100%);
  border-radius: 50% 50% 20% 20%;
  animation: rct-petal 8s linear infinite;
}
@keyframes rct-glow { 0% { opacity: 0.3; } 50% { opacity: 0.6; } 100% { opacity: 0.4; } }
@keyframes rct-rose-w { 0%,100% { transform: scale(1) rotate(0deg); } 50% { transform: scale(1.05) rotate(5deg); } }
@keyframes rct-rose-r { 0%,100% { transform: scale(1) rotate(0deg); } 50% { transform: scale(1.05) rotate(-5deg); } }
@keyframes rct-canker { 0%,100% { transform: scale(1) translate(0,0); } 50% { transform: scale(1.3) translate(2px,-2px); opacity: 0.9; } }
@keyframes rct-thorn { 0%,100% { transform: rotate(-20deg) scaleY(1); } 25% { transform: rotate(-10deg) scaleY(1.1); } 50% { transform: rotate(-20deg) scaleY(1); } 75% { transform: rotate(-30deg) scaleY(1.1); } }
@keyframes rct-petal { 0% { transform: translateY(0) rotate(0deg); opacity: 1; } 100% { transform: translateY(120px) rotate(360deg); opacity: 0; } }

.scn-richard-defends-truth {
  background:
    linear-gradient(180deg, #87ceeb 0%, #b0e0e6 40%, #f5deb3 100%),
    radial-gradient(ellipse at 50% 100%, #f0d58c 0%, transparent 70%);
}
.scn-richard-defends-truth .sky-bright {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #9acdff 0%, #ffe4b5 100%);
  animation: rdt-sky 10s ease-in-out infinite alternate;
}
.scn-richard-defends-truth .ground-dark {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #3a4a3a 0%, #1a2a1a 100%);
  border-radius: 70% 80% 0 0;
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.5);
}
.scn-richard-defends-truth .richard-silhouette {
  position: absolute; bottom: 28%; left: 50%; width: 45px; height: 90px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 45% 45% 35% 35% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: rdt-richard 4s ease-in-out infinite;
}
.scn-richard-defends-truth .sword {
  position: absolute; bottom: 30%; left: 50%; width: 3px; height: 65px;
  background: linear-gradient(180deg, #c0c0c0 0%, #808080 50%, #404040 100%);
  transform-origin: bottom center;
  border-radius: 0 0 20% 20%;
  box-shadow: 0 0 10px 2px rgba(255,215,0,0.4);
  animation: rdt-sword 2.5s ease-in-out infinite;
}
.scn-richard-defends-truth .rose-bleeding1 {
  position: absolute; bottom: 35%; left: 30%; width: 18px; height: 18px;
  background: radial-gradient(circle, #c8553d 0%, #a0461a 60%, #6b2e0e 100%);
  border-radius: 50% 50% 30% 50%;
  animation: rdt-bleed 5s ease-in-out infinite;
  box-shadow: 0 0 10px 3px rgba(200,85,61,0.5);
}
.scn-richard-defends-truth .rose-bleeding2 {
  position: absolute; bottom: 33%; right: 30%; width: 18px; height: 18px;
  background: radial-gradient(circle, #c8553d 0%, #a0461a 60%, #6b2e0e 100%);
  border-radius: 50% 50% 50% 30%;
  animation: rdt-bleed 5s ease-in-out infinite 2s;
  box-shadow: 0 0 10px 3px rgba(200,85,61,0.5);
}
.scn-richard-defends-truth .blood-spatter {
  position: absolute; bottom: 38%; left: 45%; width: 8px; height: 8px;
  background: radial-gradient(circle, #7a2e2e 0%, #4a1a1a 100%);
  border-radius: 50%;
  animation: rdt-spatter 2s ease-in-out infinite;
  filter: blur(1px);
}
@keyframes rdt-sky { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes rdt-richard { 0%,100% { transform: translateX(-50%) rotate(0deg) scaleY(1); } 25% { transform: translateX(-50%) rotate(-2deg) scaleY(0.98); } 50% { transform: translateX(-50%) rotate(2deg) scaleY(1.02); } 75% { transform: translateX(-50%) rotate(-2deg) scaleY(0.98); } }
@keyframes rdt-sword { 0%,100% { transform: translateX(-50%) rotate(5deg); } 50% { transform: translateX(-50%) rotate(-5deg); } }
@keyframes rdt-bleed { 0%,100% { transform: scale(1) rotate(0deg); } 50% { transform: scale(1.1) rotate(10deg); opacity: 0.9; } }
@keyframes rdt-spatter { 0%,100% { transform: translate(0,0) scale(1); } 50% { transform: translate(-3px, -5px) scale(1.5); opacity: 0.6; } }

.scn-french-rejoice {
  background:
    linear-gradient(180deg, #8a7a5a 0%, #5a4a3a 40%, #2a2218 100%),
    radial-gradient(ellipse at 50% 30%, #b09a6a 0%, transparent 60%);
}
.scn-french-rejoice .bg-overcast {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, rgba(180,170,130,0.4) 0%, transparent 100%);
  animation: frj-cloud 16s ease-in-out infinite alternate;
}
.scn-french-rejoice .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a120a 100%);
  border-radius: 30% 70% 0 0 / 40% 60% 0 0;
}
.scn-french-rejoice .throne {
  position: absolute; bottom: 28%; left: 50%; width: 80px; height: 100px; transform: translateX(-50%);
  background: linear-gradient(180deg, #8a6a42 0%, #5a3a1a 100%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 0 8px 20px rgba(0,0,0,0.6);
  animation: frj-throne 8s ease-in-out infinite;
}
.scn-french-rejoice .figure-kneel {
  position: absolute; bottom: 26%; left: 42%; width: 22px; 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: frj-kneel 5s ease-in-out infinite alternate;
}
.scn-french-rejoice .crown {
  position: absolute; bottom: 60%; left: 50%; width: 30px; height: 12px;
  background: linear-gradient(180deg, #e0b860 0%, #b09040 100%);
  border-radius: 50% 50% 0 0;
  transform: translateX(-50%) translateY(-10px);
  box-shadow: 0 0 20px 6px rgba(224,184,96,0.6);
  animation: frj-crown 4s ease-in-out infinite alternate;
}
.scn-french-rejoice .banner {
  position: absolute; bottom: 45%; width: 16px; height: 40px;
  background: linear-gradient(180deg, #6a4a2a 0%, #3a2a1a 100%);
  border-radius: 2px 2px 8px 8px;
  animation: frj-banner 10s ease-in-out infinite;
}
.scn-french-rejoice .banner-l { left: 20%; animation-delay: -2s; }
.scn-french-rejoice .banner-r { right: 20%; animation-delay: 0s; }
.scn-french-rejoice .light-pool {
  position: absolute; bottom: 20%; left: 35%; width: 30%; height: 30%;
  background: radial-gradient(ellipse, rgba(200,180,120,0.2) 0%, transparent 70%);
  animation: frj-pool 7s ease-in-out infinite alternate;
}
.scn-french-rejoice .drift-smoke {
  position: absolute; top: 15%; left: 10%; width: 80px; height: 20px;
  background: rgba(200,180,140,0.15);
  border-radius: 50%;
  filter: blur(8px);
  animation: frj-smoke 30s linear infinite;
}
@keyframes frj-cloud {
  0% { opacity: 0.6; }
  50% { opacity: 0.85; }
  100% { opacity: 0.5; }
}
@keyframes frj-throne {
  0%, 100% { transform: translateX(-50%) translateY(0); }
  50% { transform: translateX(-50%) translateY(-2px); }
}
@keyframes frj-kneel {
  0% { transform: rotate(-2deg) translateX(0); }
  50% { transform: rotate(0deg) translateX(2px); }
  100% { transform: rotate(2deg) translateX(0); }
}
@keyframes frj-crown {
  0% { transform: translateX(-50%) translateY(-10px) rotate(-5deg); opacity: 0.8; }
  50% { transform: translateX(-50%) translateY(-12px) rotate(0deg); opacity: 1; }
  100% { transform: translateX(-50%) translateY(-8px) rotate(5deg); opacity: 0.9; }
}
@keyframes frj-banner {
  0% { transform: translateY(0) rotate(-3deg); }
  50% { transform: translateY(-4px) rotate(3deg); }
  100% { transform: translateY(0) rotate(-2deg); }
}
@keyframes frj-pool {
  0% { opacity: 0.3; transform: scale(0.95); }
  50% { opacity: 0.6; transform: scale(1.05); }
  100% { opacity: 0.3; transform: scale(0.95); }
}
@keyframes frj-smoke {
  0% { transform: translateX(-40px); opacity: 0; }
  20% { opacity: 0.5; }
  80% { opacity: 0.3; }
  100% { transform: translateX(120vw); opacity: 0; }
}

.scn-talbot-kneels-to-king {
  background:
    linear-gradient(180deg, #c8b898 0%, #b0a080 30%, #8a7a5a 60%, #4a3a2a 100%),
    radial-gradient(ellipse at 50% 0%, #d8c8a8 0%, transparent 70%);
}
.scn-talbot-kneels-to-king .bg-interior {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(200,190,160,0.3) 0%, transparent 100%);
  animation: tkt-glow 12s ease-in-out infinite alternate;
}
.scn-talbot-kneels-to-king .pillar {
  position: absolute; bottom: 0; width: 14px; height: 60%;
  background: linear-gradient(180deg, #c0a888 0%, #8a7058 100%);
  border-radius: 4px;
  box-shadow: inset -2px 0 6px rgba(0,0,0,0.3);
}
.scn-talbot-kneels-to-king .pillar-l { left: 10%; }
.scn-talbot-kneels-to-king .pillar-r { right: 10%; }
.scn-talbot-kneels-to-king .king-throne {
  position: absolute; bottom: 28%; left: 50%; transform: translateX(-50%);
  width: 70px; height: 80px;
  background: linear-gradient(180deg, #b09870 0%, #685038 100%);
  border-radius: 8% 8% 4% 4%;
  box-shadow: 0 10px 20px rgba(0,0,0,0.5);
  animation: tkt-throne 8s ease-in-out infinite;
}
.scn-talbot-kneels-to-king .king-figure {
  position: absolute; bottom: 32%; left: 50%; transform: translateX(-50%);
  width: 24px; height: 48px;
  background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
}
.scn-talbot-kneels-to-king .talbot-figure {
  position: absolute; bottom: 24%; left: 35%; width: 20px; height: 36px;
  background: linear-gradient(180deg, #2a2a2a 0%, #121212 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: tkt-kneel 6s ease-in-out infinite alternate;
}
.scn-talbot-kneels-to-king .floor-tile {
  position: absolute; bottom: 0; left: 0; right: 0; height: 28%;
  background: repeating-linear-gradient(90deg, #6a5a4a 0px, #6a5a4a 12px, #5a4a3a 12px, #5a4a3a 24px);
  border-radius: 20% 20% 0 0;
  opacity: 0.4;
}
.scn-talbot-kneels-to-king .light-ray {
  position: absolute; top: 0; left: 35%; width: 30%; height: 100%;
  background: linear-gradient(180deg, rgba(255,240,200,0.15) 0%, transparent 100%);
  clip-path: polygon(0 0, 100% 0, 80% 100%, 20% 100%);
  animation: tkt-ray 5s ease-in-out infinite alternate;
}
@keyframes tkt-glow {
  0% { opacity: 0.7; }
  50% { opacity: 1; }
  100% { opacity: 0.8; }
}
@keyframes tkt-throne {
  0%, 100% { transform: translateX(-50%) translateY(0); }
  50% { transform: translateX(-50%) translateY(-3px); }
}
@keyframes tkt-kneel {
  0% { transform: rotate(-3deg) translateX(0); }
  50% { transform: rotate(0deg) translateX(3px); }
  100% { transform: rotate(3deg) translateX(0); }
}
@keyframes tkt-ray {
  0% { opacity: 0.2; transform: scaleY(0.95); }
  50% { opacity: 0.4; transform: scaleY(1.05); }
  100% { opacity: 0.25; transform: scaleY(0.95); }
}

.scn-henry-welcomes-talbot {
  background:
    linear-gradient(180deg, #d8c8a8 0%, #c0b090 30%, #a09070 60%, #6a5a4a 100%),
    radial-gradient(ellipse at 50% 10%, #e8d8c0 0%, transparent 60%);
}
.scn-henry-welcomes-talbot .bg-warmhall {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(220,200,170,0.2) 0%, transparent 100%);
  animation: hwt-warm 14s ease-in-out infinite alternate;
}
.scn-henry-welcomes-talbot .arch {
  position: absolute; bottom: 0; left: 50%; transform: translateX(-50%);
  width: 120px; height: 80px;
  border: 6px solid #8a7058;
  border-radius: 50% 50% 0 0;
  border-bottom: none;
  background: transparent;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.3);
}
.scn-henry-welcomes-talbot .arch-back {
  bottom: 5%; width: 160px; height: 100px; border-color: #6a5a4a;
  opacity: 0.5;
}
.scn-henry-welcomes-talbot .king-stand {
  position: absolute; bottom: 34%; left: 40%; width: 22px; height: 46px;
  background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: hwt-stand 7s ease-in-out infinite alternate;
}
.scn-henry-welcomes-talbot .talbot-stand {
  position: absolute; bottom: 32%; left: 52%; width: 20px; height: 42px;
  background: linear-gradient(180deg, #2a2a2a 0%, #121212 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: hwt-stand 7s ease-in-out infinite alternate-reverse;
}
.scn-henry-welcomes-talbot .handshake {
  position: absolute; bottom: 42%; left: 50%; transform: translateX(-50%);
  width: 12px; height: 8px;
  background: #3a3a3a;
  border-radius: 40% 40% 0 0;
  animation: hwt-shake 3s ease-in-out infinite;
}
.scn-henry-welcomes-talbot .torch {
  position: absolute; bottom: 50%; width: 8px; height: 20px;
  background: linear-gradient(180deg, #c08040 0%, #4a2a1a 100%);
  border-radius: 4px 4px 2px 2px;
  box-shadow: 0 0 14px 4px rgba(192,128,64,0.5);
}
.scn-henry-welcomes-talbot .torch-l { left: 15%; animation: hwt-torch 4s ease-in-out infinite; }
.scn-henry-welcomes-talbot .torch-r { right: 15%; animation: hwt-torch 4s ease-in-out infinite -2s; }
.scn-henry-welcomes-talbot .sparkle {
  position: absolute; top: 15%; left: 45%; width: 6px; height: 6px;
  background: #ffd080;
  border-radius: 50%;
  box-shadow: 0 0 20px 8px rgba(255,208,128,0.4);
  animation: hwt-spark 5s ease-in-out infinite alternate;
}
@keyframes hwt-warm {
  0% { opacity: 0.7; }
  50% { opacity: 1; }
  100% { opacity: 0.8; }
}
@keyframes hwt-stand {
  0% { transform: rotate(-2deg) translateY(0); }
  50% { transform: rotate(0deg) translateY(-3px); }
  100% { transform: rotate(2deg) translateY(0); }
}
@keyframes hwt-shake {
  0%, 100% { transform: translateX(-50%) rotate(-5deg); }
  50% { transform: translateX(-50%) rotate(5deg); }
}
@keyframes hwt-torch {
  0% { opacity: 0.7; transform: scale(0.9); box-shadow: 0 0 10px 2px rgba(192,128,64,0.3); }
  50% { opacity: 1; transform: scale(1.1); box-shadow: 0 0 20px 6px rgba(192,128,64,0.6); }
  100% { opacity: 0.8; transform: scale(0.95); box-shadow: 0 0 12px 3px rgba(192,128,64,0.4); }
}
@keyframes hwt-spark {
  0% { opacity: 0.2; transform: scale(0.5); }
  50% { opacity: 0.8; transform: scale(1.2); }
  100% { opacity: 0.3; transform: scale(0.6); }
}

.scn-vernon-challenges-basset {
  background:
    linear-gradient(180deg, #b0a090 0%, #8a7a6a 30%, #5a4a3a 60%, #2a2218 100%),
    radial-gradient(ellipse at 50% 40%, #c8b8a8 0%, transparent 60%);
}
.scn-vernon-challenges-basset .bg-tense {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(50,40,30,0.3) 0%, transparent 100%);
  animation: vch-tense 5s ease-in-out infinite alternate;
}
.scn-vernon-challenges-basset .pillar {
  position: absolute; bottom: 0; width: 16px; height: 70%;
  background: linear-gradient(180deg, #6a5a4a 0%, #3a2a1a 100%);
  border-radius: 4px;
  box-shadow: 10px 0 20px rgba(0,0,0,0.4);
}
.scn-vernon-challenges-basset .pillar.left { left: 5%; }
.scn-vernon-challenges-basset .pillar.right { right: 5%; }
.scn-vernon-challenges-basset .figure-york {
  position: absolute; bottom: 30%; left: 28%; width: 22px; height: 44px;
  background: linear-gradient(180deg, #3a2a2a 0%, #1a0a0a 100%); /* dark burgundy */
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vch-york 2s ease-in-out infinite alternate;
}
.scn-vernon-challenges-basset .figure-lancaster {
  position: absolute; bottom: 30%; left: 60%; width: 22px; height: 44px;
  background: linear-gradient(180deg, #2a1a1a 0%, #0a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: vch-lancaster 2s ease-in-out infinite alternate -0.5s;
}
.scn-vernon-challenges-basset .sword-york {
  position: absolute; bottom: 40%; left: 32%; width: 4px; height: 30px;
  background: linear-gradient(180deg, #c0b090 0%, #6a5a4a 100%);
  border-radius: 2px;
  transform-origin: bottom center;
  animation: vch-sword 1.5s ease-in-out infinite alternate;
}
.scn-vernon-challenges-basset .sword-lancaster {
  position: absolute; bottom: 40%; left: 58%; width: 4px; height: 30px;
  background: linear-gradient(180deg, #c0b090 0%, #6a5a4a 100%);
  border-radius: 2px;
  transform-origin: bottom center;
  animation: vch-sword 1.5s ease-in-out infinite alternate -0.75s;
}
.scn-vernon-challenges-basset .floor-shadow {
  position: absolute; bottom: 0; left: 10%; right: 10%; height: 30%;
  background: radial-gradient(ellipse at 50% 100%, rgba(0,0,0,0.6) 0%, transparent 70%);
}
.scn-vernon-challenges-basset .dust-mot {
  position: absolute; top: 20%; left: 20%; width: 40px; height: 40px;
  background: radial-gradient(circle, rgba(200,180,160,0.2) 0%, transparent 80%);
  filter: blur(4px);
  animation: vch-dust 8s linear infinite;
}
@keyframes vch-tense {
  0% { opacity: 0.8; }
  50% { opacity: 1; }
  100% { opacity: 0.7; }
}
@keyframes vch-york {
  0% { transform: rotate(-8deg) translateX(0); }
  50% { transform: rotate(0deg) translateX(3px); }
  100% { transform: rotate(8deg) translateX(0); }
}
@keyframes vch-lancaster {
  0% { transform: rotate(8deg) translateX(0); }
  50% { transform: rotate(0deg) translateX(-3px); }
  100% { transform: rotate(-8deg) translateX(0); }
}
@keyframes vch-sword {
  0% { transform: rotate(-15deg) translateY(0); }
  50% { transform: rotate(5deg) translateY(-2px); }
  100% { transform: rotate(-10deg) translateY(0); }
}
@keyframes vch-dust {
  0% { transform: translate(0, 0) scale(1); opacity: 0; }
  20% { opacity: 0.5; }
  80% { opacity: 0.2; }
  100% { transform: translate(80px, -40px) scale(2); opacity: 0; }
}

/* bordeaux-dauphin-ambush – tense, sunlit ambush */
.scn-bordeaux-dauphin-ambush {
  background: 
    linear-gradient(180deg, #a8d8ea 0%, #f9d977 40%, #d49a5a 100%),
    radial-gradient(ellipse at 40% 20%, #ffdd88 0%, transparent 60%);
}
.scn-bordeaux-dauphin-ambush .sky { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #7db8d0 0%, transparent 100%); animation: bda-sky 14s ease-in-out infinite alternate; }
.scn-bordeaux-dauphin-ambush .sun { position:absolute; top:15%; left:30%; width:50px; height:50px; background: radial-gradient(circle, #ffe680 0%, #ffb347 50%, transparent 80%); border-radius:50%; animation: bda-sun 20s linear infinite; }
.scn-bordeaux-dauphin-ambush .path { position:absolute; bottom:0; left:10%; right:10%; height:25%; background: linear-gradient(90deg, #8b6b4f 0%, #a7845c 30%, #8b6b4f 70%, #6b4f37 100%); border-radius:40% 40% 0 0; box-shadow: inset 0 6px 12px rgba(0,0,0,0.3); }
.scn-bordeaux-dauphin-ambush .bush-left { position:absolute; bottom:20%; left:5%; width:22%; height:30%; background: radial-gradient(ellipse at 50% 100%, #3f613a 0%, #1e3a1c 100%); border-radius: 50% 50% 40% 40%; transform: scaleX(0.8); animation: bda-bush 6s ease-in-out infinite alternate; }
.scn-bordeaux-dauphin-ambush .bush-right { position:absolute; bottom:20%; right:5%; width:22%; height:30%; background: radial-gradient(ellipse at 50% 100%, #3f613a 0%, #1e3a1c 100%); border-radius: 50% 50% 40% 40%; transform: scaleX(0.8); animation: bda-bush 6s ease-in-out infinite alternate-reverse; }
.scn-bordeaux-dauphin-ambush .soldier-left { position:absolute; bottom:24%; left:18%; width:12px; height:30px; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%; transform-origin: bottom; animation: bda-figure 3s ease-in-out infinite; }
.scn-bordeaux-dauphin-ambush .soldier-right { position:absolute; bottom:24%; right:18%; width:12px; height:30px; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%; transform-origin: bottom; animation: bda-figure 3.5s ease-in-out infinite 0.5s; }
.scn-bordeaux-dauphin-ambush .glint { position:absolute; bottom:42%; right:22%; width:4px; height:4px; background: #ffeda0; border-radius:50%; box-shadow: 0 0 10px 4px #ffe074; animation: bda-glint 1.8s ease-in-out infinite; }
@keyframes bda-sky { 0% { opacity:0.85; } 50% { opacity:1; } 100% { opacity:0.7; } }
@keyframes bda-sun { 0% { transform: translateX(0); } 50% { transform: translateX(10px); opacity:0.9; } 100% { transform: translateX(0); } }
@keyframes bda-bush { 0% { transform: scaleX(0.8) rotate(-2deg); } 50% { transform: scaleX(0.85) rotate(2deg); } 100% { transform: scaleX(0.8) rotate(-2deg); } }
@keyframes bda-figure { 0% { transform: translateY(0) rotate(-1deg); } 50% { transform: translateY(-2px) rotate(1deg); } 100% { transform: translateY(0) rotate(-1deg); } }
@keyframes bda-glint { 0% { opacity:0; transform: scale(0.8); } 50% { opacity:1; transform: scale(1.2); } 100% { opacity:0; transform: scale(0.8); } }

/* bordeaux-sacrament-oath – dark mood, sunlit ceremony */
.scn-bordeaux-sacrament-oath {
  background: 
    linear-gradient(180deg, #c9b16d 0%, #8a7548 30%, #4a3e2a 70%, #2b2315 100%),
    radial-gradient(ellipse at 50% 20%, #f5e6b0 0%, transparent 50%);
}
.scn-bordeaux-sacrament-oath .sky { position:absolute; inset:0 0 45% 0; background: linear-gradient(180deg, #b8a064 0%, #6f5c36 100%); animation: bso-sky 18s ease-in-out infinite alternate; }
.scn-bordeaux-sacrament-oath .field { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #5c4a2e 0%, #3a2f1e 100%); border-radius: 30% 30% 0 0; }
.scn-bordeaux-sacrament-oath .cross { position:absolute; bottom:28%; left:50%; width:6px; height:50px; background: #5a3e2a; transform: translateX(-50%); border-radius: 2px; box-shadow: 0 0 12px 2px rgba(200,180,100,0.3); animation: bso-cross 12s ease-in-out infinite; }
.scn-bordeaux-sacrament-oath .cross::before { content:''; position:absolute; top:10px; left:-12px; width:30px; height:6px; background: #5a3e2a; border-radius: 2px; }
.scn-bordeaux-sacrament-oath .figure-left { position:absolute; bottom:24%; left:36%; width:16px; height:28px; background: linear-gradient(180deg, #2a221a 0%, #14100a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%; transform-origin: bottom; animation: bso-kneel 8s ease-in-out infinite; }
.scn-bordeaux-sacrament-oath .figure-right { position:absolute; bottom:24%; right:36%; width:16px; height:28px; background: linear-gradient(180deg, #2a221a 0%, #14100a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%; transform-origin: bottom; animation: bso-kneel 8s ease-in-out infinite 2s; }
.scn-bordeaux-sacrament-oath .banner { position:absolute; bottom:45%; left:20%; width:5px; height:40px; background: #4a3e2a; animation: bso-banner 6s ease-in-out infinite; }
.scn-bordeaux-sacrament-oath .banner::after { content:''; position:absolute; top:2px; left:-10px; width:25px; height:18px; background: linear-gradient(180deg, #7a6a3a 0%, #5a4a2a 100%); border-radius: 2px; transform: skewX(-10deg); }
@keyframes bso-sky { 0% { opacity:0.6; } 50% { opacity:0.85; } 100% { opacity:0.5; } }
@keyframes bso-cross { 0% { transform: translateX(-50%) scaleY(1); } 50% { transform: translateX(-50%) scaleY(1.02); } 100% { transform: translateX(-50%) scaleY(1); } }
@keyframes bso-kneel { 0% { transform: translateY(0) rotate(-2deg); } 50% { transform: translateY(-1px) rotate(2deg); } 100% { transform: translateY(0) rotate(-2deg); } }
@keyframes bso-banner { 0% { transform: rotate(-3deg); } 50% { transform: rotate(3deg); } 100% { transform: rotate(-3deg); } }

/* bordeaux-death-prophesy – dark, moonlit prophesy */
.scn-bordeaux-death-prophesy {
  background: 
    linear-gradient(180deg, #0f1922 0%, #1b2735 40%, #2a3b4a 100%),
    radial-gradient(ellipse at 60% 20%, #3b5268 0%, transparent 70%);
}
.scn-bordeaux-death-prophesy .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #0d1c2b 0%, #152433 100%); animation: bdp-sky 20s ease-in-out infinite alternate; }
.scn-bordeaux-death-prophesy .moon { position:absolute; top:12%; right:25%; width:40px; height:40px; background: radial-gradient(circle, #d4dde8 0%, #7a8a9e 80%); border-radius:50%; box-shadow: 0 0 30px 8px rgba(180,200,220,0.15); animation: bdp-moon 16s linear infinite; }
.scn-bordeaux-death-prophesy .cloud-a { position:absolute; top:8%; left:10%; width:80px; height:20px; background: rgba(40,60,80,0.6); filter: blur(6px); border-radius:40%; animation: bdp-drift 35s linear infinite; }
.scn-bordeaux-death-prophesy .cloud-b { position:absolute; top:18%; right:8%; width:60px; height:14px; background: rgba(50,70,90,0.4); filter: blur(5px); border-radius:40%; animation: bdp-drift 45s linear infinite reverse; }
.scn-bordeaux-death-prophesy .ground { position:absolute; bottom:0; left:0; right:0; height:35%; background: linear-gradient(180deg, #1a2a3a 0%, #0d1520 100%); border-radius: 50% 50% 0 0; }
.scn-bordeaux-death-prophesy .figure { position:absolute; bottom:18%; left:45%; width:16px; height:40px; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%; transform-origin: bottom; animation: bdp-fig 12s ease-in-out infinite; }
.scn-bordeaux-death-prophesy .ghost { position:absolute; bottom:35%; left:45%; width:18px; height:30px; background: rgba(200,220,240,0.1); border-radius: 50% 50% 40% 40%; filter: blur(3px); animation: bdp-ghost 8s ease-in-out infinite; }
@keyframes bdp-sky { 0% { opacity:0.7; } 50% { opacity:0.9; } 100% { opacity:0.6; } }
@keyframes bdp-moon { 0% { transform: translateX(0); opacity:0.9; } 50% { transform: translateX(-5px); opacity:1; } 100% { transform: translateX(0); opacity:0.9; } }
@keyframes bdp-drift { 0% { transform: translateX(-30px); } 100% { transform: translateX(120vw); } }
@keyframes bdp-fig { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-3px) rotate(1deg); opacity:0.8; } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes bdp-ghost { 0% { transform: translateY(0) scale(0.9); opacity:0; } 50% { transform: translateY(-10px) scale(1.1); opacity:0.6; } 100% { transform: translateY(0) scale(0.9); opacity:0; } }

/* bordeaux-english-preparation – tense, sunlit camp */
.scn-bordeaux-english-preparation {
  background: 
    linear-gradient(180deg, #9ac7e0 0%, #d4b87a 40%, #b88a5a 100%),
    radial-gradient(ellipse at 30% 30%, #ffe084 0%, transparent 60%);
}
.scn-bordeaux-english-preparation .sky { position:absolute; inset:0 0 45% 0; background: linear-gradient(180deg, #7db8d0 0%, #c9a05a 100%); animation: bep-sky 12s ease-in-out infinite alternate; }
.scn-bordeaux-english-preparation .ground { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #6a8a4a 0%, #4a6a2a 100%); border-radius: 30% 30% 0 0; }
.scn-bordeaux-english-preparation .tent-left { position:absolute; bottom:22%; left:10%; width:0; height:0; border-left:30px solid transparent; border-right:30px solid transparent; border-bottom:40px solid #4a3a2a; transform:scaleY(0.8); animation: bep-tent 8s ease-in-out infinite; }
.scn-bordeaux-english-preparation .tent-right { position:absolute; bottom:22%; right:10%; width:0; height:0; border-left:30px solid transparent; border-right:30px solid transparent; border-bottom:40px solid #4a3a2a; transform:scaleY(0.8); animation: bep-tent 8s ease-in-out infinite 2s; }
.scn-bordeaux-english-preparation .soldier { position:absolute; bottom:20%; left:35%; width:14px; height:32px; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%; transform-origin: bottom; animation: bep-march 3s ease-in-out infinite; }
.scn-bordeaux-english-preparation .horse { position:absolute; bottom:22%; left:48%; width:30px; height:20px; background: radial-gradient(ellipse at 50% 60%, #4a3a2a 0%, #2a1a0a 100%); border-radius: 40% 50% 30% 30%; transform: scaleX(1.2); animation: bep-horse 4s ease-in-out infinite; }
.scn-bordeaux-english-preparation .flag { position:absolute; bottom:40%; left:53%; width:3px; height:30px; background: #2a2a3a; animation: bep-flag 2s ease-in-out infinite; }
.scn-bordeaux-english-preparation .flag::after { content:''; position:absolute; top:-2px; left:-8px; width:20px; height:12px; background: linear-gradient(90deg, #c8553d 0%, #a0461a 100%); border-radius: 2px; transform: skewX(-10deg); }
@keyframes bep-sky { 0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.7; } }
@keyframes bep-tent { 0% { transform: scaleY(0.8) rotate(-2deg); } 50% { transform: scaleY(0.85) rotate(2deg); } 100% { transform: scaleY(0.8) rotate(-2deg); } }
@keyframes bep-march { 0% { transform: translateY(0) rotate(-1deg); } 50% { transform: translateY(-2px) rotate(1deg); } 100% { transform: translateY(0) rotate(-1deg); } }
@keyframes bep-horse { 0% { transform: scaleX(1.2) translateY(0); } 50% { transform: scaleX(1.22) translateY(-2px); } 100% { transform: scaleX(1.2) translateY(0); } }
@keyframes bep-flag { 0% { transform: rotate(-5deg); } 50% { transform: rotate(5deg); } 100% { transform: rotate(-5deg); } }

.scn-gascony-lucy-elegy { background: linear-gradient(180deg, #c87a3a 0%, #e8b86a 30%, #b07040 60%, #3a2a1a 100%), radial-gradient(ellipse at 50% 120%, #f0c070 0%, transparent 60%); }
.scn-gascony-lucy-elegy .sky   { position:absolute; inset:0 0 45% 0; background: linear-gradient(180deg, #d09040 0%, #e0b060 40%, #f0c870 70%, transparent 100%); animation: gle-sky 15s ease-in-out infinite alternate; }
.scn-gascony-lucy-elegy .sun   { position:absolute; top:20%; left:70%; width:60px; height:60px; background: radial-gradient(circle, #ffd080 0%, #e0a040 50%, transparent 70%); border-radius:50%; animation: gle-sun 20s ease-in-out infinite; }
.scn-gascony-lucy-elegy .hills { position:absolute; bottom:32%; left:0; right:0; height:18%; background: linear-gradient(180deg, #2a2a0a 0%, #1a1a0a 100%); border-radius: 20% 60% 0 0 / 40% 70% 0 0; animation: gle-hills 25s ease-in-out infinite alternate; }
.scn-gascony-lucy-elegy .cross { position:absolute; bottom:38%; left:30%; width:4px; height:50px; background: #4a3a1a; border-radius:2px; box-shadow: 0 0 8px 2px #4a3a1a; animation: gle-cross 4s ease-in-out infinite; }
.scn-gascony-lucy-elegy .cross::before { content:''; position:absolute; top:10px; left:-8px; width:20px; height:4px; background: #4a3a1a; border-radius:2px; box-shadow: 0 0 6px 1px #4a3a1a; }
.scn-gascony-lucy-elegy .figure-1 { position:absolute; bottom:32%; left:45%; width:16px; height:40px; background: linear-gradient(180deg, #1a1a0e 0%, #0a0a05 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: gle-fig1 6s ease-in-out infinite; }
.scn-gascony-lucy-elegy .figure-2 { position:absolute; bottom:32%; left:55%; width:18px; height:38px; background: linear-gradient(180deg, #1a1a0e 0%, #0a0a05 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: gle-fig2 5s ease-in-out infinite; }
.scn-gascony-lucy-elegy .cloud-a { position:absolute; top:15%; left:10%; width:70px; height:16px; background: linear-gradient(180deg, rgba(230,180,100,.6) 0%, rgba(230,180,100,.1) 100%); border-radius:50%; filter:blur(5px); animation: gle-cloud-a 40s linear infinite; }
.scn-gascony-lucy-elegy .cloud-b { position:absolute; top:10%; right:20%; width:50px; height:12px; background: linear-gradient(180deg, rgba(230,180,100,.5) 0%, rgba(230,180,100,.05) 100%); border-radius:50%; filter:blur(4px); animation: gle-cloud-b 50s linear infinite reverse; }
@keyframes gle-sky     { 0% { opacity:0.7; } 50% { opacity:1; } 100% { opacity:0.6; } }
@keyframes gle-sun     { 0%,100% { transform:scale(1) translate(0,0); opacity:0.8; } 50% { transform:scale(1.1) translate(2px,-2px); opacity:1; } }
@keyframes gle-hills   { 0% { transform:translateY(0) scaleY(1); } 50% { transform:translateY(-2px) scaleY(1.03); } 100% { transform:translateY(0) scaleY(1); } }
@keyframes gle-cross   { 0%,100% { transform:rotate(-1deg); } 50% { transform:rotate(2deg) scaleY(1.02); } }
@keyframes gle-fig1    { 0%,100% { transform:translateY(0) rotate(0); } 50% { transform:translateY(-2px) rotate(1deg); } }
@keyframes gle-fig2    { 0%,100% { transform:translateX(0) rotate(0); } 25% { transform:translateX(3px) rotate(-1deg); } 50% { transform:translateX(0) rotate(0); } 75% { transform:translateX(-3px) rotate(1deg); } }
@keyframes gle-cloud-a { 0% { transform:translateX(-30px); } 100% { transform:translateX(120vw); } }
@keyframes gle-cloud-b { 0% { transform:translateX(0); } 100% { transform:translateX(-100vw); } }

.scn-gascony-somerset-excuse { background: linear-gradient(180deg, #3a4a5a 0%, #2a3a4a 40%, #1a2a3a 100%), radial-gradient(ellipse at 50% 30%, #4a5a6a 0%, transparent 70%); }
.scn-gascony-somerset-excuse .tent   { position:absolute; top:5%; left:15%; right:15%; bottom:20%; background: linear-gradient(180deg, #5a6a7a 0%, #3a4a5a 100%); clip-path: polygon(0% 100%, 10% 0%, 90% 0%, 100% 100%); animation: gse-tent 12s ease-in-out infinite alternate; }
.scn-gascony-somerset-excuse .table  { position:absolute; bottom:28%; left:38%; right:32%; height:20px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius:4px; box-shadow:0 4px 10px rgba(0,0,0,.5); animation: gse-table 20s ease-in-out infinite; }
.scn-gascony-somerset-excuse .map    { position:absolute; bottom:35%; left:42%; right:30%; height:12px; background: linear-gradient(180deg, #8a7a5a 0%, #6a5a3a 100%); border-radius:2px; transform:rotate(-3deg); animation: gse-map 8s ease-in-out infinite alternate; }
.scn-gascony-somerset-excuse .figure-left  { position:absolute; bottom:24%; left:35%; width:18px; height:45px; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: gse-fig-l 4s ease-in-out infinite; }
.scn-gascony-somerset-excuse .figure-right { position:absolute; bottom:24%; right:35%; width:18px; height:45px; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: gse-fig-r 4.5s ease-in-out infinite; }
.scn-gascony-somerset-excuse .lantern{ position:absolute; top:8%; left:50%; width:10px; height:14px; background: radial-gradient(circle, #c0a060 0%, #806030 70%); border-radius:30% 30% 20% 20%; box-shadow: 0 0 20px 6px #906040; animation: gse-lantern 3s ease-in-out infinite alternate; }
.scn-gascony-somerset-excuse .shadow { position:absolute; bottom:20%; left:30%; right:30%; height:30px; background: radial-gradient(ellipse, rgba(0,0,0,.3) 0%, transparent 70%); animation: gse-shadow 5s ease-in-out infinite alternate; }
@keyframes gse-tent     { 0% { transform:scaleY(1); opacity:0.9; } 50% { transform:scaleY(1.02); opacity:1; } 100% { transform:scaleY(1); opacity:0.85; } }
@keyframes gse-table    { 0%,100% { transform:translateY(0) scaleX(1); } 50% { transform:translateY(-1px) scaleX(1.02); } }
@keyframes gse-map      { 0% { transform:rotate(-4deg) scale(1); } 50% { transform:rotate(-2deg) scale(1.03); } 100% { transform:rotate(-3deg) scale(1); } }
@keyframes gse-fig-l    { 0%,100% { transform:translateX(0) rotate(0); } 25% { transform:translateX(2px) rotate(2deg); } 50% { transform:translateX(0) rotate(0); } 75% { transform:translateX(-2px) rotate(-2deg); } }
@keyframes gse-fig-r    { 0%,100% { transform:translateX(0) rotate(0); } 33% { transform:translateX(-3px) rotate(-3deg); } 66% { transform:translateX(3px) rotate(3deg); } }
@keyframes gse-lantern  { 0% { box-shadow: 0 0 15px 4px #906040; opacity:0.7; } 50% { box-shadow: 0 0 30px 10px #b08060; opacity:1; } 100% { box-shadow: 0 0 20px 6px #906040; opacity:0.8; } }
@keyframes gse-shadow   { 0% { transform:scaleX(1) translateX(0); opacity:0.3; } 50% { transform:scaleX(1.1) translateX(5px); opacity:0.5; } 100% { transform:scaleX(1) translateX(0); opacity:0.2; } }

.scn-gascony-lucy-return { background: linear-gradient(180deg, #4a5a6a 0%, #5a6a7a 30%, #3a4a5a 60%, #2a3a4a 100%), radial-gradient(ellipse at 50% 150%, #6a7a8a 0%, transparent 60%); }
.scn-gascony-lucy-return .sky    { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #5a6a7a 0%, #7a8a9a 40%, #4a5a6a 100%); animation: glr-sky 18s ease-in-out infinite alternate; }
.scn-gascony-lucy-return .ground { position:absolute; bottom:0; left:0; right:0; height:50%; background: linear-gradient(180deg, #3a4a3a 0%, #2a3a2a 100%); border-radius: 30% 0 0 0 / 60% 0 0 0; }
.scn-gascony-lucy-return .horse  { position:absolute; bottom:28%; left:20%; width:50px; height:35px; background: linear-gradient(180deg, #2a2a1a 0%, #1a1a0a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; animation: glr-horse 2s steps(4) infinite; }
.scn-gascony-lucy-return .rider  { position:absolute; bottom:42%; left:24%; width:14px; height:30px; background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: glr-rider 2s steps(4) infinite; }
.scn-gascony-lucy-return .cloud-a{ position:absolute; top:12%; left:5%; width:80px; height:18px; background: linear-gradient(180deg, rgba(200,210,220,.5) 0%, rgba(200,210,220,.1) 100%); border-radius:50%; filter:blur(6px); animation: glr-cloud-a 35s linear infinite; }
.scn-gascony-lucy-return .cloud-b{ position:absolute; top:18%; right:10%; width:60px; height:14px; background: linear-gradient(180deg, rgba(200,210,220,.4) 0%, rgba(200,210,220,.05) 100%); border-radius:50%; filter:blur(5px); animation: glr-cloud-b 45s linear infinite reverse; }
.scn-gascony-lucy-return .wind-line-1 { position:absolute; top:30%; left:-10%; width:20%; height:2px; background: linear-gradient(90deg, transparent, rgba(200,210,220,.3), transparent); animation: glr-wind1 10s linear infinite; }
.scn-gascony-lucy-return .wind-line-2 { position:absolute; top:40%; left:-20%; width:30%; height:1px; background: linear-gradient(90deg, transparent, rgba(200,210,220,.2), transparent); animation: glr-wind2 14s linear infinite; }
@keyframes glr-sky      { 0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.7; } }
@keyframes glr-horse    { 0% { transform:translateX(0) scaleY(1); } 25% { transform:translateX(3px) scaleY(0.95); } 50% { transform:translateX(6px) scaleY(1); } 75% { transform:translateX(3px) scaleY(0.95); } 100% { transform:translateX(0) scaleY(1); } }
@keyframes glr-rider    { 0%,100% { transform:translateY(0) rotate(0); } 25% { transform:translateY(-1px) rotate(2deg); } 50% { transform:translateY(0) rotate(0); } 75% { transform:translateY(-1px) rotate(-2deg); } }
@keyframes glr-cloud-a  { 0% { transform:translateX(-30px); } 100% { transform:translateX(120vw); } }
@keyframes glr-cloud-b  { 0% { transform:translateX(0); } 100% { transform:translateX(-100vw); } }
@keyframes glr-wind1    { 0% { left:-10%; } 100% { left:110%; } }
@keyframes glr-wind2    { 0% { left:-20%; } 100% { left:120%; } }

.scn-gascony-talbot-agony { background: linear-gradient(180deg, #1a1a2a 0%, #2a1a1a 40%, #1a0a0a 100%), radial-gradient(ellipse at 50% 80%, #2a1a1a 0%, transparent 70%); }
.scn-gascony-talbot-agony .bg    { position:absolute; inset:0; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); animation: gta-bg 20s ease-in-out infinite alternate; }
.scn-gascony-talbot-agony .ground{ position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #1a1a0a 0%, #0a0a05 100%); }
.scn-gascony-talbot-agony .figure{ position:absolute; bottom:15%; left:40%; width:40px; height:70px; background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: gta-figure 5s ease-in-out infinite; }
.scn-gascony-talbot-agony .sword { position:absolute; bottom:10%; left:48%; width:6px; height:40px; background: linear-gradient(180deg, #5a5a6a 0%, #3a3a4a 100%); border-radius:3px; transform:rotate(15deg); transform-origin: bottom center; box-shadow: 0 0 6px 2px rgba(180,180,200,.2); animation: gta-sword 4s ease-in-out infinite alternate; }
.scn-gascony-talbot-agony .blood-drop { position:absolute; bottom:50%; left:45%; width:5px; height:5px; background: radial-gradient(circle, #8a3a2a 0%, #5a1a0a 100%); border-radius:50%; box-shadow: 0 0 8px 2px #6a2a1a; animation: gta-blood 3s ease-in-out infinite; }
.scn-gascony-talbot-agony .cloud { position:absolute; top:5%; left:20%; width:90px; height:20px; background: linear-gradient(180deg, rgba(60,40,40,.4) 0%, rgba(60,40,40,.05) 100%); border-radius:50%; filter:blur(8px); animation: gta-cloud 40s linear infinite; }
@keyframes gta-bg    { 0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.7; } }
@keyframes gta-figure{ 0%,100% { transform:translateY(0) rotate(0) scaleY(1); } 50% { transform:translateY(-2px) rotate(2deg) scaleY(1.02); } }
@keyframes gta-sword { 0% { transform:rotate(13deg) scaleY(1); } 50% { transform:rotate(17deg) scaleY(1.03); } 100% { transform:rotate(15deg) scaleY(1); } }
@keyframes gta-blood { 0% { transform:translateY(0) scale(1); opacity:1; } 50% { transform:translateY(-5px) scale(0.8); opacity:0.6; } 100% { transform:translateY(0) scale(1); opacity:1; } }
@keyframes gta-cloud { 0% { transform:translateX(-30px); } 100% { transform:translateX(120vw); } }

.scn-court-color-insult { background: linear-gradient(180deg, #d4c8a8 0%, #c4b898 20%, #b0a080 50%, #908060 100%), radial-gradient(ellipse at 50% 0%, #e8dcc0 0%, transparent 60%); }
.scn-court-color-insult .floor-tiles { position:absolute; bottom:0; left:0; right:0; height:20%; background: repeating-linear-gradient(90deg, #7a6a50 0px, #7a6a50 2px, #8a7a60 2px, #8a7a60 4px, #7a6a50 4px, #7a6a50 30px), repeating-linear-gradient(0deg, #7a6a50 0px, #8a7a60 2px, #7a6a50 4px); background-blend-mode:multiply; opacity:.6; }
.scn-court-color-insult .wall-panel { position:absolute; top:10%; width:15%; height:70%; background: linear-gradient(180deg, #a09070 0%, #8a7a5a 100%); border-left:2px solid #6a5a3a; border-right:2px solid #6a5a3a; }
.scn-court-color-insult .wall-panel.left { left:5%; border-radius:4px 0 0 4px; }
.scn-court-color-insult .wall-panel.right { right:5%; border-radius:0 4px 4px 0; }
.scn-court-color-insult .figure-accuser { position:absolute; bottom:18%; left:30%; width:32px; height:60px; background: linear-gradient(180deg, #704030 0%, #4a2010 60%, #2a1008 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin:bottom center; animation: ci-fig-accuse 4s ease-in-out infinite; }
.scn-court-color-insult .figure-defendant { position:absolute; bottom:18%; right:30%; width:30px; height:58px; background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 60%, #0a0604 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin:bottom center; animation: ci-fig-defend 4.5s ease-in-out infinite 0.5s; }
.scn-court-color-insult .rose-red { position:absolute; bottom:38%; left:38%; width:14px; height:14px; background: radial-gradient(circle at 40% 35%, #c8553d 0%, #a0461a 60%, #702010 100%); border-radius:50%; box-shadow: 0 0 8px 2px rgba(200,85,61,.4); animation: ci-rose-red 3s ease-in-out infinite; }
.scn-court-color-insult .rose-white { position:absolute; bottom:38%; right:38%; width:12px; height:12px; background: radial-gradient(circle at 40% 35%, #f0e8dc 0%, #d0c8b8 60%, #b0a898 100%); border-radius:50%; box-shadow: 0 0 6px 2px rgba(240,232,220,.3); animation: ci-rose-white 3.2s ease-in-out infinite 0.3s; }
.scn-court-color-insult .chandelier { position:absolute; top:2%; left:50%; width:60px; height:40px; transform:translateX(-50%); background: radial-gradient(ellipse at 50% 0%, #c8b888 0%, #a09060 40%, #706040 100%); border-radius:50% 50% 30% 30%; box-shadow: 0 4px 20px rgba(160,140,80,.5); animation: ci-chandelier 6s ease-in-out infinite; }
.scn-court-color-insult .shadow-stripes { position:absolute; inset:0; background: linear-gradient(90deg, transparent 0%, rgba(0,0,0,.08) 20%, transparent 40%, rgba(0,0,0,.06) 55%, transparent 70%, rgba(0,0,0,.1) 85%, transparent 100%); animation: ci-shadows 8s ease-in-out infinite alternate; }
@keyframes ci-fig-accuse { 0% { transform: translateX(0) rotate(0deg); } 30% { transform: translateX(8px) rotate(2deg); } 50% { transform: translateX(10px) rotate(-1deg); } 70% { transform: translateX(6px) rotate(1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes ci-fig-defend { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(-6px) rotate(-2deg); } 50% { transform: translateX(-10px) rotate(1deg); } 75% { transform: translateX(-4px) rotate(-1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes ci-rose-red { 0% { transform: scale(1) rotate(0deg); opacity:.85; } 50% { transform: scale(1.15) rotate(10deg); opacity:1; } 100% { transform: scale(1) rotate(0deg); opacity:.85; } }
@keyframes ci-rose-white { 0% { transform: scale(1) rotate(0deg); opacity:.8; } 50% { transform: scale(1.1) rotate(-8deg); opacity:1; } 100% { transform: scale(1) rotate(0deg); opacity:.8; } }
@keyframes ci-chandelier { 0% { transform: translateX(-50%) rotate(-1deg); } 50% { transform: translateX(-50%) rotate(1deg); } 100% { transform: translateX(-50%) rotate(-1deg); } }
@keyframes ci-shadows { 0% { opacity:.5; } 50% { opacity:1; } 100% { opacity:.6; } }

.scn-court-pale-rose-retort { background: linear-gradient(180deg, #d8ccb0 0%, #c8bca0 20%, #b0a488 50%, #908468 100%), radial-gradient(ellipse at 50% 0%, #ece4d0 0%, transparent 55%); }
.scn-court-pale-rose-retort .floor-tiles { position:absolute; bottom:0; left:0; right:0; height:20%; background: repeating-linear-gradient(90deg, #807050 0px, #807050 2px, #908060 2px, #908060 4px, #807050 4px, #807050 30px), repeating-linear-gradient(0deg, #807050 0px, #908060 2px, #807050 4px); background-blend-mode:multiply; opacity:.5; }
.scn-court-pale-rose-retort .wall-panel { position:absolute; top:8%; width:16%; height:72%; background: linear-gradient(180deg, #a89878 0%, #8a7a5a 100%); border-left:2px solid #6a5a3a; border-right:2px solid #6a5a3a; }
.scn-court-pale-rose-retort .wall-panel.left { left:4%; border-radius:4px 0 0 4px; }
.scn-court-pale-rose-retort .wall-panel.right { right:4%; border-radius:0 4px 4px 0; }
.scn-court-pale-rose-retort .figure-speaker { position:absolute; bottom:18%; left:28%; width:34px; height:62px; background: linear-gradient(180deg, #5a3a2a 0%, #3a2218 60%, #1a0e08 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin:bottom center; animation: pr-fig-speak 3.5s ease-in-out infinite; }
.scn-court-pale-rose-retort .figure-listener { position:absolute; bottom:18%; right:32%; width:30px; height:56px; background: linear-gradient(180deg, #4a3222 0%, #2a1a10 60%, #0e0804 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin:bottom center; animation: pr-fig-listen 4s ease-in-out infinite 0.6s; }
.scn-court-pale-rose-retort .rose-pale { position:absolute; bottom:40%; left:40%; width:12px; height:12px; background: radial-gradient(circle at 40% 35%, #e8ddd0 0%, #c8bda8 60%, #a89878 100%); border-radius:50%; box-shadow: 0 0 10px 3px rgba(232,221,208,.5); animation: pr-rose-pale 3.8s ease-in-out infinite; }
.scn-court-pale-rose-retort .rose-bright { position:absolute; bottom:40%; right:36%; width:13px; height:13px; background: radial-gradient(circle at 40% 35%, #f0e8dc 0%, #d8ccb8 50%, #b8a890 100%); border-radius:50%; box-shadow: 0 0 12px 4px rgba(240,232,220,.6); animation: pr-rose-bright 3.2s ease-in-out infinite 0.4s; }
.scn-court-pale-rose-retort .window-glow { position:absolute; top:12%; left:40%; width:20%; height:35%; background: radial-gradient(ellipse at 50% 30%, rgba(240,232,220,.15) 0%, transparent 70%); border-radius:8px; box-shadow: inset 0 0 40px rgba(240,232,220,.1); animation: pr-window 7s ease-in-out infinite alternate; }
.scn-court-pale-rose-retort .shadow-fall { position:absolute; inset:0; background: linear-gradient(90deg, rgba(0,0,0,.05) 0%, transparent 20%, rgba(0,0,0,.03) 45%, transparent 65%, rgba(0,0,0,.08) 80%, transparent 100%); animation: pr-shadow 9s ease-in-out infinite alternate; }
@keyframes pr-fig-speak { 0% { transform: translateX(0) rotate(0deg) scaleY(1); } 20% { transform: translateX(6px) rotate(2deg) scaleY(1.02); } 40% { transform: translateX(8px) rotate(-1deg) scaleY(0.98); } 60% { transform: translateX(4px) rotate(1deg) scaleY(1.01); } 100% { transform: translateX(0) rotate(0deg) scaleY(1); } }
@keyframes pr-fig-listen { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(-4px) rotate(-1deg); } 50% { transform: translateX(-8px) rotate(1deg); } 75% { transform: translateX(-3px) rotate(-0.5deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes pr-rose-pale { 0% { transform: scale(1) rotate(0deg); box-shadow: 0 0 8px 2px rgba(232,221,208,.4); } 50% { transform: scale(1.1) rotate(-12deg); box-shadow: 0 0 14px 5px rgba(232,221,208,.6); } 100% { transform: scale(1) rotate(0deg); box-shadow: 0 0 8px 2px rgba(232,221,208,.4); } }
@keyframes pr-rose-bright { 0% { transform: scale(1) rotate(0deg); opacity:.9; } 50% { transform: scale(1.2) rotate(8deg); opacity:1; } 100% { transform: scale(1) rotate(0deg); opacity:.9; } }
@keyframes pr-window { 0% { opacity:.6; transform: scaleY(1); } 50% { opacity:1; transform: scaleY(1.05); } 100% { opacity:.7; transform: scaleY(0.98); } }
@keyframes pr-shadow { 0% { opacity:.4; } 50% { opacity:.8; } 100% { opacity:.5; } }

.scn-court-private-grudge { background: linear-gradient(180deg, #c8bca0 0%, #b8ac90 20%, #a09478 50%, #807458 100%), radial-gradient(ellipse at 50% 0%, #dcd0b8 0%, transparent 65%); }
.scn-court-private-grudge .floor-tiles { position:absolute; bottom:0; left:0; right:0; height:22%; background: repeating-linear-gradient(90deg, #7a6a4a 0px, #7a6a4a 2px, #8a7a5a 2px, #8a7a5a 4px, #7a6a4a 4px, #7a6a4a 30px), repeating-linear-gradient(0deg, #7a6a4a 0px, #8a7a5a 2px, #7a6a4a 4px); background-blend-mode:multiply; opacity:.55; }
.scn-court-private-grudge .wall-panel { position:absolute; top:8%; width:14%; height:70%; background: linear-gradient(180deg, #a09070 0%, #7a6a4a 100%); border-left:2px solid #5a4a2a; border-right:2px solid #5a4a2a; }
.scn-court-private-grudge .wall-panel.left { left:3%; border-radius:4px 0 0 4px; }
.scn-court-private-grudge .wall-panel.right { right:3%; border-radius:0 4px 4px 0; }
.scn-court-private-grudge .figure-york { position:absolute; bottom:18%; left:24%; width:32px; height:60px; background: linear-gradient(180deg, #5a3a28 0%, #3a2218 60%, #1a0e08 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin:bottom center; animation: pg-york 3.8s ease-in-out infinite; }
.scn-court-private-grudge .figure-somerset { position:absolute; bottom:18%; right:24%; width:32px; height:60px; background: linear-gradient(180deg, #4a3020 0%, #2a1a10 60%, #100804 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin:bottom center; animation: pg-somerset 4.2s ease-in-out infinite 0.5s; }
.scn-court-private-grudge .figure-king { position:absolute; bottom:20%; left:50%; width:36px; height:66px; transform:translateX(-50%); background: linear-gradient(180deg, #7a5a3a 0%, #5a3a22 50%, #2a1a0e 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; box-shadow: 0 0 20px rgba(200,180,140,.3); animation: pg-king 6s ease-in-out infinite; }
.scn-court-private-grudge .rose-york { position:absolute; bottom:40%; left:30%; width:13px; height:13px; background: radial-gradient(circle at 40% 35%, #e8ddd0 0%, #c8bda8 60%, #a89878 100%); border-radius:50%; box-shadow: 0 0 8px 2px rgba(232,221,208,.4); animation: pg-rose-york 3.5s ease-in-out infinite; }
.scn-court-private-grudge .rose-somerset { position:absolute; bottom:40%; right:30%; width:13px; height:13px; background: radial-gradient(circle at 40% 35%, #c8553d 0%, #a0461a 60%, #702010 100%); border-radius:50%; box-shadow: 0 0 8px 2px rgba(200,85,61,.4); animation: pg-rose-somerset 3.5s ease-in-out infinite 0.3s; }
.scn-court-private-grudge .throne-shadow { position:absolute; bottom:14%; left:43%; width:14%; height:6%; background: radial-gradient(ellipse, rgba(0,0,0,.2) 0%, transparent 70%); animation: pg-throne 8s ease-in-out infinite alternate; }
@keyframes pg-york { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(6px) rotate(2deg); } 50% { transform: translateX(10px) rotate(-1deg); } 75% { transform: translateX(4px) rotate(1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes pg-somerset { 0% { transform: translateX(0) rotate(0deg); } 20% { transform: translateX(-8px) rotate(-2deg); } 40% { transform: translateX(-12px) rotate(1deg); } 60% { transform: translateX(-6px) rotate(-1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes pg-king { 0% { transform: translateX(-50%) scale(1); } 50% { transform: translateX(-50%) scale(1.03); } 100% { transform: translateX(-50%) scale(1); } }
@keyframes pg-rose-york { 0% { transform: scale(1) rotate(0deg); opacity:.8; } 50% { transform: scale(1.12) rotate(-10deg); opacity:1; } 100% { transform: scale(1) rotate(0deg); opacity:.8; } }
@keyframes pg-rose-somerset { 0% { transform: scale(1) rotate(0deg); opacity:.8; } 50% { transform: scale(1.15) rotate(10deg); opacity:1; } 100% { transform: scale(1) rotate(0deg); opacity:.8; } }
@keyframes pg-throne { 0% { opacity:.3; transform: scaleX(1); } 50% { opacity:.6; transform: scaleX(1.2); } 100% { opacity:.4; transform: scaleX(0.9); } }

.scn-court-pledge-exchange { background: linear-gradient(180deg, #d0c4a8 0%, #c0b498 20%, #a89878 50%, #887858 100%), radial-gradient(ellipse at 50% 0%, #e8dcc4 0%, transparent 60%); }
.scn-court-pledge-exchange .floor-tiles { position:absolute; bottom:0; left:0; right:0; height:20%; background: repeating-linear-gradient(90deg, #7a6a4a 0px, #7a6a4a 2px, #8a7a5a 2px, #8a7a5a 4px, #7a6a4a 4px, #7a6a4a 28px), repeating-linear-gradient(0deg, #7a6a4a 0px, #8a7a5a 2px, #7a6a4a 4px); background-blend-mode:multiply; opacity:.5; }
.scn-court-pledge-exchange .wall-panel { position:absolute; top:10%; width:15%; height:70%; background: linear-gradient(180deg, #a89878 0%, #887858 100%); border-left:2px solid #6a5a3a; border-right:2px solid #6a5a3a; }
.scn-court-pledge-exchange .wall-panel.left { left:4%; border-radius:4px 0 0 4px; }
.scn-court-pledge-exchange .wall-panel.right { right:4%; border-radius:0 4px 4px 0; }
.scn-court-pledge-exchange .figure-pledger { position:absolute; bottom:18%; left:30%; width:32px; height:60px; background: linear-gradient(180deg, #5a3a28 0%, #3a2218 60%, #1a0e08 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin:bottom center; animation: pe-pledger 4s ease-in-out infinite; }
.scn-court-pledge-exchange .figure-receiver { position:absolute; bottom:18%; right:30%; width:32px; height:60px; background: linear-gradient(180deg, #4a3020 0%, #2a1a10 60%, #100804 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin:bottom center; animation: pe-receiver 4.2s ease-in-out infinite 0.4s; }
.scn-court-pledge-exchange .glove-pledge { position:absolute; bottom:38%; left:36%; width:20px; height:26px; background: linear-gradient(180deg, #c8b898 0%, #a09070 60%, #706040 100%); border-radius:30% 30% 20% 20% / 40% 40% 20% 20%; box-shadow: 0 2px 6px rgba(0,0,0,.3); transform-origin:bottom center; animation: pe-glove 3.2s ease-in-out infinite; }
.scn-court-pledge-exchange .rose-witness { position:absolute; bottom:42%; right:30%; width:12px; height:12px; background: radial-gradient(circle at 40% 35%, #e8ddd0 0%, #c8bda8 60%, #a89878 100%); border-radius:50%; box-shadow: 0 0 8px 2px rgba(232,221,208,.4); animation: pe-witness 3.8s ease-in-out infinite 0.6s; }
.scn-court-pledge-exchange .light-shaft { position:absolute; top:0; left:40%; width:20%; height:80%; background: linear-gradient(180deg, rgba(232,220,200,.12) 0%, transparent 70%); transform-origin:top center; animation: pe-shaft 7s ease-in-out infinite alternate; }
.scn-court-pledge-exchange .dust-motes { position:absolute; top:10%; left:20%; width:60%; height:40%; background: radial-gradient(circle at 30% 40%, rgba(232,220,200,.04) 0%, transparent 50%), radial-gradient(circle at 70% 60%, rgba(232,220,200,.03) 0%, transparent 40%), radial-gradient(circle at 50% 30%, rgba(240,232,220,.05) 0%, transparent 45%); animation: pe-dust 12s ease-in-out infinite alternate; }
@keyframes pe-pledger { 0% { transform: translateX(0) rotate(0deg); } 30% { transform: translateX(8px) rotate(2deg); } 50% { transform: translateX(12px) rotate(-1deg); } 70% { transform: translateX(6px) rotate(1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes pe-receiver { 0% { transform: translateX(0) rotate(0deg); } 20% { transform: translateX(-6px) rotate(-2deg); } 40% { transform: translateX(-10px) rotate(1deg); } 60% { transform: translateX(-4px) rotate(-1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes pe-glove { 0% { transform: translateY(0) rotate(0deg); opacity:.9; } 30% { transform: translateY(-4px) rotate(-3deg); opacity:1; } 50% { transform: translateY(-6px) rotate(2deg); opacity:1; } 70% { transform: translateY(-2px) rotate(-1deg); opacity:.95; } 100% { transform: translateY(0) rotate(0deg); opacity:.9; } }
@keyframes pe-witness { 0% { transform: scale(1) rotate(0deg); opacity:.8; } 50% { transform: scale(1.1) rotate(8deg); opacity:1; } 100% { transform: scale(1) rotate(0deg); opacity:.8; } }
@keyframes pe-shaft { 0% { opacity:.3; transform: rotate(-1deg); } 50% { opacity:.7; transform: rotate(0deg); } 100% { opacity:.4; transform: rotate(1deg); } }
@keyframes pe-dust { 0% { opacity:.3; transform: translateY(0); } 50% { opacity:.6; transform: translateY(-8px); } 100% { opacity:.4; transform: translateY(-4px); } }

.scn-richard-dinner-threat {
  background: 
    linear-gradient(180deg, #f5e6c8 0%, #d4a76a 40%, #b38a4a 100%),
    radial-gradient(ellipse at 70% 30%, #ffeebb 0%, transparent 60%);
  overflow: hidden;
}
.scn-richard-dinner-threat .bg { position: absolute; inset: 0; background: linear-gradient(135deg, #f5e6c8 0%, #e0c48a 50%, #c8a45a 100%); animation: rdt-bg 15s ease-in-out infinite; }
.scn-richard-dinner-threat .table { position: absolute; bottom: 10%; left: 10%; right: 10%; height: 35%; background: linear-gradient(180deg, #8b5e3c 0%, #5a3a1e 100%); border-radius: 8% 8% 0 0; box-shadow: 0 -6px 20px rgba(0,0,0,0.4); }
.scn-richard-dinner-threat .figure-left { position: absolute; bottom: 28%; left: 18%; width: 20%; height: 45%; background: linear-gradient(180deg, #2a1a0a 0%, #1a0e04 100%); border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: rdt-figure-l 8s ease-in-out infinite; }
.scn-richard-dinner-threat .figure-right { position: absolute; bottom: 25%; right: 18%; width: 22%; height: 50%; background: linear-gradient(180deg, #3a2a1a 0%, #1a0e04 100%); border-radius: 45% 35% 30% 30% / 55% 65% 30% 30%; transform-origin: bottom center; animation: rdt-figure-r 9s ease-in-out infinite; }
.scn-richard-dinner-threat .wine-glass { position: absolute; bottom: 36%; left: 42%; width: 4%; height: 18%; background: radial-gradient(ellipse at 50% 30%, #b87878 0%, #7a3a3a 70%) no-repeat; background-size: 100% 100%; border-radius: 50% 50% 20% 20% / 60% 60% 20% 20%; box-shadow: 0 4px 6px rgba(0,0,0,0.3); animation: rdt-wine 5s ease-in-out infinite; }
.scn-richard-dinner-threat .knife { position: absolute; bottom: 26%; left: 48%; width: 2%; height: 12%; background: linear-gradient(180deg, #c8b090 0%, #a08060 100%); border-radius: 0 0 20% 20% / 0 0 40% 40%; transform: rotate(-20deg); transform-origin: 50% 100%; animation: rdt-knife 4s ease-in-out infinite; box-shadow: 0 0 4px #a08060; }
.scn-richard-dinner-threat .candle { position: absolute; bottom: 38%; left: 52%; width: 3%; height: 15%; background: linear-gradient(180deg, #f0e0c0 0%, #d0b090 100%); border-radius: 10% 10% 20% 20%; box-shadow: 0 0 12px #ffd080; animation: rdt-candle 3s ease-in-out infinite alternate; }
@keyframes rdt-bg { 0%,100% { opacity:0.8 } 50% { opacity:1 } }
@keyframes rdt-figure-l { 0% { transform: translateX(0) rotate(-1deg) } 33% { transform: translateX(-2px) rotate(1deg) } 66% { transform: translateX(1px) rotate(-2deg) } 100% { transform: translateX(0) rotate(0deg) } }
@keyframes rdt-figure-r { 0% { transform: translateX(0) rotate(1deg) } 50% { transform: translateX(3px) rotate(-1deg) } 100% { transform: translateX(0) rotate(0deg) } }
@keyframes rdt-wine { 0%,100% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(-3px) rotate(2deg) } }
@keyframes rdt-knife { 0%,100% { transform: rotate(-20deg) } 50% { transform: rotate(-15deg) translateY(-2px) } }
@keyframes rdt-candle { 0% { opacity:0.7; box-shadow:0 0 8px #ffd080 } 50% { opacity:1; box-shadow:0 0 18px #ffd080 } 100% { opacity:0.8; box-shadow:0 0 12px #ffd080 } }

.scn-mortimer-imprisoned {
  background: 
    linear-gradient(180deg, #1a1a2e 0%, #0f0f1a 50%, #05050a 100%),
    radial-gradient(ellipse at 50% 20%, #2a2a4e 0%, transparent 70%);
  overflow: hidden;
}
.scn-mortimer-imprisoned .cell-wall { position: absolute; inset: 0; background: linear-gradient(135deg, #1e1e2e 0%, #12121a 50%, #08080c 100%); animation: mip-wall 20s ease-in-out infinite; }
.scn-mortimer-imprisoned .window-bars { position: absolute; top: 10%; left: 40%; width: 20%; height: 30%; background: repeating-linear-gradient(90deg, #2a2a3a 0%, #2a2a3a 8%, transparent 8%, transparent 20%); border: 4px solid #3a3a4a; border-radius: 6%; box-shadow: inset 0 0 20px #0a0a12; animation: mip-bars 15s ease-in-out infinite; }
.scn-mortimer-imprisoned .chair { position: absolute; bottom: 18%; left: 30%; width: 40%; height: 35%; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 20% 20% 10% 10% / 40% 40% 20% 20%; box-shadow: 0 8px 20px rgba(0,0,0,0.8); }
.scn-mortimer-imprisoned .mortimer-figure { position: absolute; bottom: 22%; left: 35%; width: 30%; height: 45%; background: linear-gradient(180deg, #3a2a1a 0%, #1a0e04 100%); border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: mip-mortimer 10s ease-in-out infinite; }
.scn-mortimer-imprisoned .chain { position: absolute; bottom: 30%; left: 32%; width: 8%; height: 40%; background: repeating-linear-gradient(180deg, #5a4a3a 0%, #5a4a3a 6px, transparent 6px, transparent 12px); border-radius: 20%; animation: mip-chain 6s ease-in-out infinite; }
.scn-mortimer-imprisoned .floor { position: absolute; bottom: 0; left: 0; right: 0; height: 15%; background: linear-gradient(180deg, #1a1a22 0%, #0a0a0e 100%); border-radius: 20% 20% 0 0; }
.scn-mortimer-imprisoned .shadow { position: absolute; bottom: 10%; left: 20%; width: 60%; height: 40%; background: radial-gradient(ellipse at 50% 100%, #000 0%, transparent 70%); opacity: 0.6; animation: mip-shadow 12s ease-in-out infinite; }
@keyframes mip-wall { 0%,100% { opacity:0.9 } 50% { opacity:1 } }
@keyframes mip-bars { 0% { opacity:0.5; box-shadow: inset 0 0 10px #0a0a12 } 50% { opacity:0.7; box-shadow: inset 0 0 30px #0a0a12 } 100% { opacity:0.5; box-shadow: inset 0 0 10px #0a0a12 } }
@keyframes mip-mortimer { 0% { transform: translateY(0) scale(1) } 25% { transform: translateY(-2px) scale(0.98) } 50% { transform: translateY(0) scale(1) } 75% { transform: translateY(2px) scale(0.97) } 100% { transform: translateY(0) scale(1) } }
@keyframes mip-chain { 0% { transform: rotate(0deg) } 50% { transform: rotate(2deg) translateY(2px) } 100% { transform: rotate(0deg) } }
@keyframes mip-shadow { 0% { opacity:0.5; transform: scale(0.95) } 50% { opacity:0.7; transform: scale(1.05) } 100% { opacity:0.5; transform: scale(0.95) } }

.scn-mortimer-laments-age {
  background: 
    linear-gradient(180deg, #1a1a2e 0%, #0f0f1a 40%, #05050a 100%),
    radial-gradient(ellipse at 50% 70%, #2a2a3e 0%, transparent 60%);
  overflow: hidden;
}
.scn-mortimer-laments-age .lamp { position: absolute; bottom: 35%; left: 20%; width: 12%; height: 20%; background: radial-gradient(ellipse at 50% 30%, #b09060 0%, #5a4a2a 80%); border-radius: 30% 30% 10% 10% / 50% 50% 20% 20%; box-shadow: 0 0 20px #8a6a3a; animation: mla-lamp 8s ease-in-out infinite; }
.scn-mortimer-laments-age .flame { position: absolute; bottom: 50%; left: 23%; width: 4%; height: 12%; background: radial-gradient(ellipse, #ffd080 0%, #d09040 60%, transparent 100%); border-radius: 50%; box-shadow: 0 0 30px #ffb060; animation: mla-flame 3s ease-in-out infinite alternate; }
.scn-mortimer-laments-age .vine-pots { position: absolute; bottom: 10%; left: 40%; width: 30%; height: 50%; background: linear-gradient(180deg, #3a2a1a 0%, #1a0e04 100%); border-radius: 40% 40% 10% 10% / 60% 60% 20% 20%; clip-path: polygon(0% 20%, 100% 20%, 80% 80%, 20% 80%); animation: mla-vine 12s ease-in-out infinite; }
.scn-mortimer-laments-age .figure-shoulder { position: absolute; bottom: 20%; right: 20%; width: 30%; height: 40%; background: linear-gradient(180deg, #2a1a0a 0%, #0a0502 100%); border-radius: 40% 30% 20% 20% / 50% 40% 20% 20%; transform-origin: bottom right; animation: mla-shoulder 10s ease-in-out infinite; }
.scn-mortimer-laments-age .hand { position: absolute; bottom: 30%; right: 22%; width: 8%; height: 12%; background: linear-gradient(180deg, #3a2a1a 0%, #1a0e04 100%); border-radius: 50% 50% 20% 20% / 60% 60% 20% 20%; transform: rotate(30deg); transform-origin: 50% 100%; animation: mla-hand 6s ease-in-out infinite; }
.scn-mortimer-laments-age .shadow-deep { position: absolute; inset: 0; background: radial-gradient(ellipse at 50% 50%, transparent 40%, #000 100%); opacity: 0.4; animation: mla-shadow 15s ease-in-out infinite; }
@keyframes mla-lamp { 0%,100% { box-shadow:0 0 15px #8a6a3a; opacity:0.8 } 50% { box-shadow:0 0 30px #8a6a3a; opacity:1 } }
@keyframes mla-flame { 0% { transform: scale(0.9) translateY(0); opacity:0.6 } 50% { transform: scale(1.1) translateY(-4px); opacity:1 } 100% { transform: scale(0.95) translateY(-2px); opacity:0.7 } }
@keyframes mla-vine { 0% { transform: translateY(0) scale(1) } 33% { transform: translateY(-3px) scale(0.95) } 66% { transform: translateY(2px) scale(1.02) } 100% { transform: translateY(0) scale(1) } }
@keyframes mla-shoulder { 0% { transform: rotate(0deg) } 50% { transform: rotate(2deg) translateX(-2px) } 100% { transform: rotate(0deg) } }
@keyframes mla-hand { 0% { transform: rotate(30deg) } 33% { transform: rotate(25deg) translateX(1px) } 66% { transform: rotate(35deg) translateY(-2px) } 100% { transform: rotate(30deg) } }
@keyframes mla-shadow { 0% { opacity:0.3 } 50% { opacity:0.5 } 100% { opacity:0.3 } }

.scn-mortimer-awaits-richard {
  background: 
    linear-gradient(180deg, #1a1a2e 0%, #0f0f1a 40%, #05050a 100%),
    radial-gradient(ellipse at 50% 80%, #1e1e32 0%, transparent 70%);
  overflow: hidden;
}
.scn-mortimer-awaits-richard .cell-wall { position: absolute; inset: 0; background: linear-gradient(135deg, #18182a 0%, #0e0e1a 100%); animation: mar-wall 25s ease-in-out infinite; }
.scn-mortimer-awaits-richard .door-arch { position: absolute; bottom: 10%; left: 35%; width: 30%; height: 60%; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 30% 30% 0 0 / 40% 40% 0 0; box-shadow: inset 0 0 20px rgba(0,0,0,0.8); animation: mar-door 20s ease-in-out infinite; }
.scn-mortimer-awaits-richard .seated-figure { position: absolute; bottom: 18%; left: 25%; width: 20%; height: 30%; background: linear-gradient(180deg, #3a2a1a 0%, #1a0e04 100%); border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: mar-seated 12s ease-in-out infinite; }
.scn-mortimer-awaits-richard .floor { position: absolute; bottom: 0; left: 0; right: 0; height: 12%; background: linear-gradient(180deg, #12121a 0%, #08080c 100%); border-radius: 10% 10% 0 0; }
.scn-mortimer-awaits-richard .lantern { position: absolute; bottom: 30%; left: 60%; width: 8%; height: 15%; background: radial-gradient(ellipse at 50% 50%, #b0a070 0%, #5a4a2a 80%); border-radius: 30% 30% 10% 10% / 50% 50% 20% 20%; box-shadow: 0 0 25px #8a7a4a; animation: mar-lantern 6s ease-in-out infinite alternate; }
.scn-mortimer-awaits-richard .dust-mote-a { position: absolute; top: 20%; left: 20%; width: 6px; height: 6px; background: radial-gradient(circle, #aabbdd 0%, transparent 100%); border-radius: 50%; opacity: 0.4; animation: mar-dust-a 15s linear infinite; }
.scn-mortimer-awaits-richard .dust-mote-b { position: absolute; top: 50%; right: 30%; width: 4px; height: 4px; background: radial-gradient(circle, #aabbdd 0%, transparent 100%); border-radius: 50%; opacity: 0.3; animation: mar-dust-b 20s linear infinite reverse; }
@keyframes mar-wall { 0%,100% { opacity:0.9 } 50% { opacity:1 } }
@keyframes mar-door { 0% { box-shadow: inset 0 0 10px rgba(0,0,0,0.6) } 50% { box-shadow: inset 0 0 30px rgba(0,0,0,0.8) } 100% { box-shadow: inset 0 0 10px rgba(0,0,0,0.6) } }
@keyframes mar-seated { 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 mar-lantern { 0% { opacity:0.6; box-shadow:0 0 15px #8a7a4a } 50% { opacity:0.9; box-shadow:0 0 35px #8a7a4a } 100% { opacity:0.7; box-shadow:0 0 20px #8a7a4a } }
@keyframes mar-dust-a { 0% { transform: translate(0,0) scale(1); opacity:0.3 } 50% { transform: translate(30px, -20px) scale(1.2); opacity:0.6 } 100% { transform: translate(60px, -40px) scale(0.8); opacity:0.2 } }
@keyframes mar-dust-b { 0% { transform: translate(0,0) scale(1); opacity:0.2 } 50% { transform: translate(-20px, 10px) scale(1.3); opacity:0.5 } 100% { transform: translate(-40px, 20px) scale(0.7); opacity:0.1 } }

/* ----- tower-preparation ----- */
.scn-tower-preparation {
  background: linear-gradient(180deg, #1a1a2e 0%, #2a2444 40%, #3a2e5e 80%) , radial-gradient(ellipse at 50% 20%, #4a3a6e 0%, transparent 70%);
}
.scn-tower-preparation .wall-back { position:absolute; inset:0; background: linear-gradient(180deg, rgba(30,20,40,.6) 0%, transparent 70%); animation: tp-wall 20s ease-in-out infinite alternate; }
.scn-tower-preparation .floor { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #2a1a12 0%, #1a0e08 100%); border-radius: 10% 10% 0 0 / 5% 5% 0 0; box-shadow: inset 0 10px 20px #0a0604; }
.scn-tower-preparation .window { position:absolute; top:18%; left:22%; width:26%; height:35%; background: radial-gradient(ellipse at 50% 50%, #4a6a8a 0%, #2a3a5a 70%); border-radius: 4%; box-shadow: inset 0 0 40px #3a4a6a, 0 0 60px rgba(80,120,180,.3); animation: tp-window 8s ease-in-out infinite alternate; }
.scn-tower-preparation .table { position:absolute; bottom:24%; left:30%; width:30%; height:8%; background: linear-gradient(90deg, #4a2a1a 0%, #5a3a2a 50%, #3a1a0a 100%); border-radius: 2%; box-shadow: 0 4px 12px #0a0604; }
.scn-tower-preparation .candle { position:absolute; bottom:30%; left:37%; width:4%; height:14%; background: linear-gradient(180deg, #c8a060 0%, #8a6030 100%); border-radius: 50% 50% 20% 20% / 30% 30% 20% 20%; box-shadow: 0 0 20px 6px #ffb040, 0 0 40px 12px rgba(255,176,64,.4); animation: tp-candle 3s ease-in-out infinite alternate; }
.scn-tower-preparation .figure { position:absolute; bottom:22%; left:45%; width:14%; height:40%; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: tp-figure 6s ease-in-out infinite alternate; }
.scn-tower-preparation .shadow { position:absolute; bottom:22%; left:42%; width:20%; height:6%; background: rgba(10,6,4,.6); filter: blur(8px); border-radius: 50%; animation: tp-shadow 6s ease-in-out infinite alternate; }

@keyframes tp-wall  { 0% { opacity:.8 } 50% { opacity:.95 } 100% { opacity:.7 } }
@keyframes tp-window { 0% { box-shadow: inset 0 0 30px #4a6a8a, 0 0 40px rgba(80,120,180,.2); } 50% { box-shadow: inset 0 0 60px #6a8aaa, 0 0 80px rgba(100,150,200,.4); } 100% { box-shadow: inset 0 0 35px #4a6a8a, 0 0 50px rgba(80,120,180,.25); } }
@keyframes tp-candle { 0% { transform: scaleY(1) ; box-shadow: 0 0 15px 4px #ffb040, 0 0 30px 8px rgba(255,176,64,.3); } 50% { transform: scaleY(1.03) ; box-shadow: 0 0 25px 8px #ffc860, 0 0 50px 16px rgba(255,200,96,.5); } 100% { transform: scaleY(0.98) ; box-shadow: 0 0 18px 5px #ffb040, 0 0 35px 10px rgba(255,176,64,.35); } }
@keyframes tp-figure { 0% { transform: translateX(0) rotate(-2deg); } 50% { transform: translateX(8px) rotate(2deg); } 100% { transform: translateX(-4px) rotate(-1deg); } }
@keyframes tp-shadow { 0% { transform: translateX(0) scaleX(1); } 50% { transform: translateX(6px) scaleX(1.15); } 100% { transform: translateX(-3px) scaleX(0.95); } }

/* ----- orleans-french-camp ----- */
.scn-orleans-french-camp {
  background: linear-gradient(180deg, #6a9abc 0%, #8abce0 40%, #b0d4f0 80%), radial-gradient(ellipse at 50% 0%, #e0f0ff 0%, transparent 60%);
}
.scn-orleans-french-camp .sky     { position:absolute; inset:0 0 35% 0; background: linear-gradient(180deg, #8abce0 0%, transparent 100%); animation: ofc-sky 15s ease-in-out infinite alternate; }
.scn-orleans-french-camp .sun     { position:absolute; top:8%; left:70%; width:14%; height:14%; background: radial-gradient(circle, #ffed80 0%, #ffd050 50%, transparent 70%); border-radius:50%; box-shadow: 0 0 80px 30px #ffd050, 0 0 150px 60px rgba(255,208,80,.3); animation: ofc-sun 12s ease-in-out infinite alternate; }
.scn-orleans-french-camp .ground  { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, #6a8a3a 0%, #4a6a2a 100%); border-radius: 30% 70% 0 0 / 20% 40% 0 0; box-shadow: inset 0 8px 20px #2a4a1a; }
.scn-orleans-french-camp .tent-a  { position:absolute; bottom:25%; left:15%; width:20%; height:28%; background: linear-gradient(180deg, #c8a060 0%, #8a6830 100%); border-radius: 10% 10% 20% 20% / 40% 40% 10% 10%; clip-path: polygon(0% 100%, 50% 0%, 100% 100%); animation: ofc-tent 8s ease-in-out infinite alternate; }
.scn-orleans-french-camp .tent-b  { position:absolute; bottom:28%; left:55%; width:18%; height:24%; background: linear-gradient(180deg, #b89050 0%, #6a4820 100%); border-radius: 10% 10% 20% 20% / 40% 40% 10% 10%; clip-path: polygon(0% 100%, 50% 0%, 100% 100%); animation: ofc-tent 8s ease-in-out infinite alternate-reverse; }
.scn-orleans-french-camp .banner  { position:absolute; bottom:50%; left:32%; width:6%; height:20%; background: linear-gradient(180deg, #f0d0a0 0%, #c8a060 100%); border-radius: 4% / 10%; transform-origin: top center; animation: ofc-banner 4s ease-in-out infinite alternate; }
.scn-orleans-french-camp .marcher-a { position:absolute; bottom:18%; left:8%; width:8%; height:18%; background: linear-gradient(180deg, #4a4a5a 0%, #2a2a3a 100%); border-radius: 50% 40% 40% 40% / 60% 50% 30% 30%; animation: ofc-march-a 5s linear infinite; }
.scn-orleans-french-camp .marcher-b { position:absolute; bottom:18%; left:20%; width:8%; height:18%; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 50% 40% 40% 40% / 60% 50% 30% 30%; animation: ofc-march-b 5.3s linear infinite; animation-delay: -1.2s; }
.scn-orleans-french-camp .marcher-c { position:absolute; bottom:18%; left:34%; width:8%; height:18%; background: linear-gradient(180deg, #3a4a5a 0%, #1a2a3a 100%); border-radius: 50% 40% 40% 40% / 60% 50% 30% 30%; animation: ofc-march-c 5.7s linear infinite; animation-delay: -2.5s; }

@keyframes ofc-sky      { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.85 } }
@keyframes ofc-sun      { 0% { box-shadow: 0 0 60px 20px #ffd050, 0 0 120px 40px rgba(255,208,80,.2); } 50% { box-shadow: 0 0 100px 40px #ffed80, 0 0 180px 60px rgba(255,237,128,.4); } 100% { box-shadow: 0 0 70px 25px #ffd050, 0 0 140px 50px rgba(255,208,80,.25); } }
@keyframes ofc-tent     { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.02) } 100% { transform: scaleY(0.98) } }
@keyframes ofc-banner   { 0% { transform: rotate(-8deg) } 50% { transform: rotate(0deg) } 100% { transform: rotate(8deg) } }
@keyframes ofc-march-a  { 0% { transform: translateX(0) translateY(0) rotate(-1deg); } 25% { transform: translateX(12px) translateY(-2px) rotate(1deg); } 50% { transform: translateX(24px) translateY(0) rotate(-1deg); } 75% { transform: translateX(36px) translateY(-2px) rotate(1deg); } 100% { transform: translateX(48px) translateY(0) rotate(0); } }
@keyframes ofc-march-b  { 0% { transform: translateX(0) translateY(0) rotate(1deg); } 25% { transform: translateX(12px) translateY(-2px) rotate(-1deg); } 50% { transform: translateX(24px) translateY(0) rotate(1deg); } 75% { transform: translateX(36px) translateY(-2px) rotate(-1deg); } 100% { transform: translateX(48px) translateY(0) rotate(0); } }
@keyframes ofc-march-c  { 0% { transform: translateX(0) translateY(0) rotate(0); } 25% { transform: translateX(12px) translateY(-2px) rotate(1deg); } 50% { transform: translateX(24px) translateY(0) rotate(-1deg); } 75% { transform: translateX(36px) translateY(-2px) rotate(0); } 100% { transform: translateX(48px) translateY(0) rotate(1deg); } }

/* ----- orleans-battle-beaten ----- */
.scn-orleans-battle-beaten {
  background: linear-gradient(180deg, #4a3a20 0%, #6a5a3a 30%, #8a7a5a 70%, #a09070 100%) , radial-gradient(ellipse at 50% 0%, #c0b090 0%, transparent 70%);
}
.scn-orleans-battle-beaten .sky { position:absolute; inset:0 0 45% 0; background: linear-gradient(180deg, #8a7a5a 0%, transparent 100%); animation: obb-sky 12s ease-in-out infinite alternate; }
.scn-orleans-battle-beaten .sun-hard { position:absolute; top:10%; left:60%; width:14%; height:14%; background: radial-gradient(circle, #ffe080 0%, #e0c060 40%, transparent 70%); border-radius:50%; box-shadow: 0 0 90px 30px #e0c060, 0 0 180px 60px rgba(224,192,96,.4); animation: obb-sun 10s ease-in-out infinite alternate; }
.scn-orleans-battle-beaten .ground-bare { position:absolute; bottom:0; left:0; right:0; height:50%; background: linear-gradient(180deg, #8a7a4a 0%, #6a5a3a 60%, #4a3a20 100%); border-radius: 40% 60% 0 0 / 30% 50% 0 0; box-shadow: inset 0 10px 30px #3a2a10; }
.scn-orleans-battle-beaten .fallen-figure { position:absolute; bottom:20%; left:25%; width:12%; height:22%; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 40% 40% 20% 20%; transform: rotate(20deg); animation: obb-fallen 8s ease-in-out infinite alternate; }
.scn-orleans-battle-beaten .broken-sword { position:absolute; bottom:25%; left:15%; width:4%; height:26%; background: linear-gradient(180deg, #a09070 0%, #6a5a40 100%); border-radius: 2%; transform: rotate(-30deg) translateY(-10%); animation: obb-sword 12s ease-in-out infinite; }
.scn-orleans-battle-beaten .dust { position:absolute; bottom:30%; left:10%; width:60%; height:30%; background: radial-gradient(ellipse, rgba(160,140,100,.3) 0%, transparent 70%); filter: blur(12px); animation: obb-dust 20s ease-in-out infinite alternate; }
.scn-orleans-battle-beaten .flag-down { position:absolute; bottom:35%; left:40%; width:5%; height:28%; background: linear-gradient(180deg, #6a4a3a 0%, #4a2a1a 100%); border-radius: 2% / 10%; transform: rotate(45deg); transform-origin: bottom left; animation: obb-flag 6s ease-in-out infinite; }
.scn-orleans-battle-beaten .crows { position:absolute; top:20%; left:30%; width:12%; height:12%; background: radial-gradient(circle, #1a1a1a 0%, transparent 70%); filter: blur(4px); animation: obb-crows 30s linear infinite; }

@keyframes obb-sky    { 0% { opacity:.9 } 50% { opacity:1 } 100% { opacity:.8 } }
@keyframes obb-sun    { 0% { box-shadow: 0 0 60px 20px #e0c060, 0 0 120px 40px rgba(224,192,96,.3); } 50% { box-shadow: 0 0 120px 50px #ffe080, 0 0 200px 80px rgba(255,224,128,.5); } 100% { box-shadow: 0 0 80px 30px #e0c060, 0 0 160px 50px rgba(224,192,96,.35); } }
@keyframes obb-fallen { 0% { transform: rotate(15deg) translateY(0); } 50% { transform: rotate(20deg) translateY(-4px); } 100% { transform: rotate(18deg) translateY(2px); } }
@keyframes obb-sword  { 0% { transform: rotate(-30deg) translateY(-10%); } 25% { transform: rotate(-28deg) translateY(-8%); } 50% { transform: rotate(-32deg) translateY(-12%); } 75% { transform: rotate(-29deg) translateY(-9%); } 100% { transform: rotate(-30deg) translateY(-10%); } }
@keyframes obb-dust   { 0% { opacity:.2; transform: scaleX(1); } 50% { opacity:.5; transform: scaleX(1.3); } 100% { opacity:.3; transform: scaleX(0.9); } }
@keyframes obb-flag   { 0% { transform: rotate(45deg) skewX(0); } 50% { transform: rotate(50deg) skewX(5deg); } 100% { transform: rotate(40deg) skewX(-3deg); } }
@keyframes obb-crows  { 0% { transform: translateX(0) translateY(0); } 50% { transform: translateX(30px) translateY(-10px); } 100% { transform: translateX(60px) translateY(0); } }

/* ----- arrival-of-joan ----- */
.scn-arrival-of-joan {
  background: linear-gradient(180deg, #6a9abc 0%, #8abce0 40%, #b0d4f0 80%, #e0f0ff 100%) , radial-gradient(ellipse at 50% 30%, #e0f0ff 0%, transparent 60%);
}
.scn-arrival-of-joan .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #b0d4f0 0%, transparent 100%); animation: aj-sky 18s ease-in-out infinite alternate; }
.scn-arrival-of-joan .sun-rays { position:absolute; top:5%; left:45%; width:20%; height:30%; background: radial-gradient(ellipse at 50% 0%, #fff0a0 0%, transparent 60%); border-radius: 50%; filter: blur(20px); animation: aj-sunrays 12s ease-in-out infinite alternate; }
.scn-arrival-of-joan .ground { position:absolute; bottom:0; left:0; right:0; height:45%; background: linear-gradient(180deg, #6a8a3a 0%, #4a6a2a 60%, #2a4a1a 100%); border-radius: 30% 70% 0 0 / 20% 30% 0 0; box-shadow: inset 0 8px 20px #1a3a0a; }
.scn-arrival-of-joan .joan-silhouette { position:absolute; bottom:20%; left:35%; width:18%; height:40%; background: linear-gradient(180deg, #2a2a3a 0%, #0a0a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%; transform: scaleX(-1); animation: aj-joan 8s ease-in-out infinite alternate; }
.scn-arrival-of-joan .dauphin-silhouette { position:absolute; bottom:20%; left:55%; width:20%; height:38%; background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%; transform: scaleX(1); animation: aj-dauphin 8s ease-in-out infinite alternate-reverse; }
.scn-arrival-of-joan .banner { position:absolute; bottom:48%; left:48%; width:5%; height:25%; background: linear-gradient(180deg, #c8a060 0%, #8a6830 100%); border-radius: 2% / 10%; transform-origin: bottom center; animation: aj-banner 5s ease-in-out infinite alternate; }
.scn-arrival-of-joan .grass-blades { position:absolute; bottom:18%; left:20%; width:60%; height:8%; background: radial-gradient(ellipse, #4a6a2a 0%, transparent 70%); border-radius: 50%; filter: blur(6px); animation: aj-grass 20s ease-in-out infinite; }
.scn-arrival-of-joan .light-spot { position:absolute; bottom:25%; left:30%; width:40%; height:40%; background: radial-gradient(ellipse, rgba(255,240,200,.2) 0%, transparent 70%); border-radius: 50%; filter: blur(30px); animation: aj-lightspot 15s ease-in-out infinite alternate; }

@keyframes aj-sky    { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.85 } }
@keyframes aj-sunrays { 0% { opacity:.4; transform: scaleY(1); } 50% { opacity:.8; transform: scaleY(1.05); } 100% { opacity:.5; transform: scaleY(0.95); } }
@keyframes aj-joan   { 0% { transform: scaleX(-1) translateX(0) translateY(0); } 50% { transform: scaleX(-1) translateX(-8px) translateY(-2px); } 100% { transform: scaleX(-1) translateX(4px) translateY(0); } }
@keyframes aj-dauphin { 0% { transform: scaleX(1) translateX(0) translateY(0); } 50% { transform: scaleX(1) translateX(6px) translateY(-2px); } 100% { transform: scaleX(1) translateX(-3px) translateY(0); } }
@keyframes aj-banner { 0% { transform: rotate(-5deg); } 50% { transform: rotate(0deg); } 100% { transform: rotate(5deg); } }
@keyframes aj-grass  { 0% { opacity:.2; transform: scaleX(1); } 50% { opacity:.4; transform: scaleX(1.2); } 100% { opacity:.3; transform: scaleX(0.8); } }
@keyframes aj-lightspot { 0% { opacity:.2; transform: scale(1); } 50% { opacity:.5; transform: scale(1.2); } 100% { opacity:.3; transform: scale(0.9); } }

/* joan-prophecy - warm sunlit interior */
.scn-joan-prophecy {
  background: linear-gradient(180deg, #f5d0a0 0%, #e0b080 50%, #c09060 100%), radial-gradient(ellipse at 50% 0, #ffeedd 0%, transparent 60%);
}
.scn-joan-prophecy .bg-warm {
  position: absolute; inset: 0; background: linear-gradient(180deg, #ffddbb 0%, #ddaa77 100%);
  animation: jp-bg 12s ease-in-out infinite alternate;
}
.scn-joan-prophecy .window {
  position: absolute; top: 8%; left: 15%; width: 50px; height: 70px; background: radial-gradient(ellipse at 50% 30%, #fffbe6 0%, #f0d080 60%, transparent 70%); border-radius: 50% 50% 20% 20%; box-shadow: 0 0 30px 10px rgba(240,208,128,0.5);
  animation: jp-window 8s ease-in-out infinite alternate;
}
.scn-joan-prophecy .throne {
  position: absolute; bottom: 25%; left: 50%; transform: translateX(-50%); width: 80px; height: 60px; background: linear-gradient(180deg, #7a5a3a 0%, #4a2a1a 100%); border-radius: 10% 10% 8% 8%; box-shadow: 0 8px 20px rgba(0,0,0,0.4);
  animation: jp-throne 14s ease-in-out infinite;
}
.scn-joan-prophecy .figure-joan {
  position: absolute; bottom: 28%; left: 38%; width: 20px; height: 50px; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center;
  animation: jp-figure 6s ease-in-out infinite;
}
.scn-joan-prophecy .figure-dauphin {
  position: absolute; bottom: 30%; left: 55%; width: 18px; height: 42px; background: linear-gradient(180deg, #3a2a2a 0%, #1a1a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center;
  animation: jp-figure 7s ease-in-out infinite 1s;
}
.scn-joan-prophecy .banner {
  position: absolute; top: 10%; right: 20%; width: 12px; height: 40px; background: linear-gradient(180deg, #b87878 0%, #8a5050 100%); border-radius: 4px;
  animation: jp-banner 10s ease-in-out infinite;
}
.scn-joan-prophecy .shadow {
  position: absolute; bottom: 20%; left: 30%; width: 120px; height: 12px; background: radial-gradient(ellipse, rgba(0,0,0,0.3) 0%, transparent 70%); border-radius: 50%;
  animation: jp-shadow 18s ease-in-out infinite alternate;
}
@keyframes jp-bg {
  0%,100% { opacity: 0.9; }
  50% { opacity: 1; }
}
@keyframes jp-window {
  0% { box-shadow: 0 0 20px 5px rgba(240,208,128,0.3); opacity: 0.8; }
  50% { box-shadow: 0 0 40px 15px rgba(255,224,160,0.6); opacity: 1; }
  100% { box-shadow: 0 0 25px 8px rgba(240,208,128,0.4); opacity: 0.85; }
}
@keyframes jp-throne {
  0%,100% { transform: translateX(-50%) translateY(0); }
  50% { transform: translateX(-50%) translateY(-3px); }
}
@keyframes jp-figure {
  0% { transform: translateX(0) translateY(0) rotate(-2deg); }
  30% { transform: translateX(4px) translateY(-1px) rotate(1deg); }
  70% { transform: translateX(8px) translateY(0) rotate(-1deg); }
  100% { transform: translateX(12px) translateY(0) rotate(0deg); }
}
@keyframes jp-banner {
  0%,100% { transform: skewX(0deg); }
  50% { transform: skewX(-5deg); }
}
@keyframes jp-shadow {
  0%,100% { transform: scaleX(1) translateX(0); opacity: 0.5; }
  50% { transform: scaleX(1.1) translateX(10px); opacity: 0.7; }
}

/* joan-combat - determined sunlit field */
.scn-joan-combat {
  background: linear-gradient(180deg, #87CEEB 0%, #5ba3d9 50%, #3a7ab5 100%), radial-gradient(ellipse at 50% 100%, #f0e68c 0%, transparent 70%);
}
.scn-joan-combat .sky {
  position: absolute; inset: 0 0 40% 0; background: linear-gradient(180deg, #b0d4f0 0%, #87CEEB 100%);
  animation: jc-sky 20s ease-in-out infinite alternate;
}
.scn-joan-combat .field {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%; background: linear-gradient(180deg, #c8a84c 0%, #7a5a1a 100%); border-radius: 60% 40% 0 0 / 80% 60% 0 0;
  animation: jc-field 12s ease-in-out infinite alternate;
}
.scn-joan-combat .figure {
  position: absolute; bottom: 30%; left: 40%; width: 24px; height: 56px; background: linear-gradient(180deg, #2c2c3c 0%, #1a1a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center;
  animation: jc-figure 4s ease-in-out infinite;
}
.scn-joan-combat .sword {
  position: absolute; bottom: 38%; left: 44%; width: 40px; height: 6px; background: linear-gradient(90deg, #d0d0d0 0%, #a0a0a0 100%); border-radius: 2px; transform-origin: left center; box-shadow: 0 0 6px 2px rgba(255,255,200,0.4);
  animation: jc-sword 4s ease-in-out infinite;
}
.scn-joan-combat .sun {
  position: absolute; top: 12%; right: 18%; width: 40px; height: 40px; background: radial-gradient(circle, #fff5c0 0%, #f0d060 40%, transparent 70%); border-radius: 50%;
  animation: jc-sun 6s ease-in-out infinite alternate;
}
.scn-joan-combat .cloud {
  position: absolute; top: 22%; left: 10%; width: 90px; height: 20px; background: linear-gradient(180deg, rgba(255,255,255,0.6) 0%, rgba(255,255,255,0.1) 100%); border-radius: 50%; filter: blur(6px);
  animation: jc-cloud 40s linear infinite;
}
@keyframes jc-sky {
  0%,100% { opacity: 0.85; }
  50% { opacity: 1; }
}
@keyframes jc-field {
  0% { transform: translateY(0); }
  50% { transform: translateY(-4px); }
  100% { transform: translateY(0); }
}
@keyframes jc-figure {
  0% { transform: translateX(0) translateY(0) rotate(-5deg); }
  30% { transform: translateX(15px) translateY(-4px) rotate(5deg); }
  60% { transform: translateX(30px) translateY(-2px) rotate(-3deg); }
  100% { transform: translateX(45px) translateY(0) rotate(0deg); }
}
@keyframes jc-sword {
  0% { transform: rotate(-30deg); opacity: 0.7; }
  30% { transform: rotate(20deg); opacity: 1; }
  60% { transform: rotate(-10deg); opacity: 0.9; }
  100% { transform: rotate(-30deg); opacity: 0.7; }
}
@keyframes jc-sun {
  0% { box-shadow: 0 0 20px 5px rgba(240,208,96,0.5); transform: scale(1); }
  50% { box-shadow: 0 0 40px 15px rgba(255,224,128,0.7); transform: scale(1.05); }
  100% { box-shadow: 0 0 25px 8px rgba(240,208,96,0.5); transform: scale(1); }
}
@keyframes jc-cloud {
  0% { transform: translateX(0); }
  100% { transform: translateX(120vw); }
}

/* london-tower-confrontation - tense dim interior */
.scn-london-tower-confrontation {
  background: linear-gradient(180deg, #2c2c2c 0%, #1a1a1a 50%, #0e0e0e 100%), radial-gradient(ellipse at 50% 0, #4a3a2a 0%, transparent 70%);
}
.scn-london-tower-confrontation .bg-dark {
  position: absolute; inset: 0; background: linear-gradient(180deg, #2a2a2a 0%, #111111 100%);
  animation: lt-bg 18s ease-in-out infinite alternate;
}
.scn-london-tower-confrontation .wall {
  position: absolute; top: 10%; left: 5%; right: 5%; bottom: 10%; background: linear-gradient(90deg, #4a3a2a 0%, #3a2a1a 50%, #4a3a2a 100%); border-radius: 8px; box-shadow: inset 0 0 30px rgba(0,0,0,0.6);
  animation: lt-wall 0s none; /* static wall */
}
.scn-london-tower-confrontation .gate {
  position: absolute; bottom: 18%; left: 50%; transform: translateX(-50%); width: 60px; height: 80px; background: #1a0e0e; border-radius: 50% 50% 10% 10% / 60% 60% 10% 10%; box-shadow: inset 0 0 20px rgba(0,0,0,0.8);
  animation: lt-gate 20s ease-in-out infinite alternate;
}
.scn-london-tower-confrontation .guard-left {
  position: absolute; bottom: 20%; left: 30%; width: 20px; height: 50px; background: linear-gradient(180deg, #3a3a3a 0%, #1a1a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center;
  animation: lt-guard 8s ease-in-out infinite;
}
.scn-london-tower-confrontation .guard-right {
  position: absolute; bottom: 20%; right: 30%; width: 20px; height: 50px; background: linear-gradient(180deg, #3a3a3a 0%, #1a1a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center;
  animation: lt-guard 9s ease-in-out infinite 1.5s;
}
.scn-london-tower-confrontation .torch {
  position: absolute; bottom: 32%; left: 48%; width: 6px; height: 16px; background: linear-gradient(180deg, #8a5a2a 0%, #3a2a1a 100%); border-radius: 2px;
  animation: lt-torch 4s ease-in-out infinite alternate;
}
.scn-london-tower-confrontation .torch-glow {
  position: absolute; bottom: 28%; left: 46%; width: 24px; height: 24px; background: radial-gradient(circle, #ffb060 0%, rgba(255,176,96,0.3) 40%, transparent 70%); border-radius: 50%;
  animation: lt-glow 3s ease-in-out infinite alternate;
}
@keyframes lt-bg {
  0%,100% { opacity: 0.9; }
  50% { opacity: 1; }
}
@keyframes lt-gate {
  0% { transform: translateX(-50%) scaleY(1); }
  50% { transform: translateX(-50%) scaleY(0.98); }
  100% { transform: translateX(-50%) scaleY(1); }
}
@keyframes lt-guard {
  0% { transform: translateX(0) translateY(0) rotate(-1deg); }
  30% { transform: translateX(4px) translateY(-2px) rotate(2deg); }
  70% { transform: translateX(-2px) translateY(0) rotate(-2deg); }
  100% { transform: translateX(0) translateY(0) rotate(0deg); }
}
@keyframes lt-torch {
  0% { transform: rotate(-3deg); }
  50% { transform: rotate(3deg); }
  100% { transform: rotate(-2deg); }
}
@keyframes lt-glow {
  0% { box-shadow: 0 0 10px 3px rgba(255,176,96,0.5); opacity: 0.8; }
  50% { box-shadow: 0 0 20px 8px rgba(255,200,120,0.8); opacity: 1; }
  100% { box-shadow: 0 0 12px 4px rgba(255,176,96,0.5); opacity: 0.85; }
}

/* orleans-wall-survey - tense sunlit wall */
.scn-orleans-wall-survey {
  background: linear-gradient(180deg, #b0d4f0 0%, #87CEEB 40%, #5a8ab5 100%), radial-gradient(ellipse at 50% 0, #ffe8c0 0%, transparent 60%);
}
.scn-orleans-wall-survey .sky {
  position: absolute; inset: 0 0 50% 0; background: linear-gradient(180deg, #c8e4f8 0%, #a0c8e8 100%);
  animation: ow-sky 20s ease-in-out infinite alternate;
}
.scn-orleans-wall-survey .wall {
  position: absolute; bottom: 20%; left: 10%; right: 10%; height: 40%; background: linear-gradient(180deg, #8a7a5a 0%, #6a5a3a 100%); border-radius: 10% 10% 0 0; box-shadow: inset 0 6px 20px rgba(0,0,0,0.3);
  animation: ow-wall 10s ease-in-out infinite alternate;
}
.scn-orleans-wall-survey .cannon {
  position: absolute; bottom: 28%; left: 35%; width: 50px; height: 12px; background: linear-gradient(90deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 6px; transform-origin: right center;
  animation: ow-cannon 12s ease-in-out infinite;
}
.scn-orleans-wall-survey .gunner {
  position: absolute; bottom: 32%; left: 30%; width: 18px; height: 44px; background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center;
  animation: ow-gunner 5s ease-in-out infinite;
}
.scn-orleans-wall-survey .boy {
  position: absolute; bottom: 30%; left: 42%; width: 14px; height: 34px; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center;
  animation: ow-gunner 6s ease-in-out infinite 1s;
}
.scn-orleans-wall-survey .rampart {
  position: absolute; bottom: 20%; left: 10%; right: 10%; height: 8%; background: linear-gradient(180deg, #6a5a3a 0%, #4a3a2a 100%); border-radius: 4px 4px 0 0;
}
.scn-orleans-wall-survey .shadow-wall {
  position: absolute; bottom: 12%; left: 15%; right: 15%; height: 14%; background: radial-gradient(ellipse, rgba(0,0,0,0.3) 0%, transparent 80%);
  animation: ow-shadow 15s ease-in-out infinite alternate;
}
@keyframes ow-sky {
  0%,100% { opacity: 0.85; }
  50% { opacity: 1; }
}
@keyframes ow-wall {
  0% { transform: translateY(0) scaleY(1); }
  50% { transform: translateY(-2px) scaleY(1.01); }
  100% { transform: translateY(0) scaleY(1); }
}
@keyframes ow-cannon {
  0%,100% { transform: rotate(0deg); }
  50% { transform: rotate(3deg); }
}
@keyframes ow-gunner {
  0% { transform: translateX(0) translateY(0) rotate(-2deg); }
  30% { transform: translateX(6px) translateY(-3px) rotate(3deg); }
  70% { transform: translateX(-2px) translateY(0) rotate(-1deg); }
  100% { transform: translateX(0) translateY(0) rotate(0deg); }
}
@keyframes ow-shadow {
  0% { opacity: 0.3; transform: scaleX(1); }
  50% { opacity: 0.5; transform: scaleX(1.05); }
  100% { opacity: 0.3; transform: scaleX(1); }
}

/* angiers-spirits-refuse */
.scn-angiers-spirits-refuse { background: linear-gradient(180deg, #0a0a1e 0%, #1a1a3a 30%, #2a2a4e 60%, #1a1a2a 100%), radial-gradient(ellipse at 50% 100%, #2a2a4e 0%, transparent 80%); }
.scn-angiers-spirits-refuse .moon { position:absolute; top:8%; left:62%; width:50px; height:50px; background: radial-gradient(circle at 30% 30%, #c8d0e0 0%, #a0a8c0 60%, #7078a0 100%); border-radius:50%; box-shadow: 0 0 40px 10px rgba(160,168,192,.3), 0 0 80px 20px rgba(160,168,192,.15); animation: asr-moon 14s ease-in-out infinite alternate; }
.scn-angiers-spirits-refuse .sky { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #121230 0%, #1a1a3a 50%, #222244 100%); animation: asr-sky 20s ease-in-out infinite alternate; }
.scn-angiers-spirits-refuse .ground { position:absolute; bottom:0; left:0; right:0; height:55%; background: linear-gradient(180deg, #0a0a18 0%, #141430 100%); border-radius: 30% 70% 0 0 / 40% 60% 0 0; box-shadow: inset 0 10px 30px rgba(0,0,0,.6); animation: asr-ground 25s ease-in-out infinite alternate; }
.scn-angiers-spirits-refuse .figure { position:absolute; bottom:30%; width:22px; height:60px; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%; transform-origin: bottom center; }
.scn-angiers-spirits-refuse .figure-left { left:24%; animation: asr-hang 4s ease-in-out infinite; }
.scn-angiers-spirits-refuse .figure-center { left:48%; margin-left:-11px; animation: asr-hang 4s ease-in-out infinite 0.5s; }
.scn-angiers-spirits-refuse .figure-right { right:24%; animation: asr-hang 4s ease-in-out infinite 1s; }
.scn-angiers-spirits-refuse .spirit-mist { position:absolute; top:15%; left:20%; right:20%; height:40%; background: radial-gradient(ellipse at 50% 50%, rgba(160,168,192,.15) 0%, transparent 60%); filter: blur(8px); animation: asr-mist 12s ease-in-out infinite alternate; }
.scn-angiers-spirits-refuse .rock { position:absolute; bottom:38%; left:10%; width:30px; height:20px; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 40% 40% 20% 20%; box-shadow: 0 4px 8px rgba(0,0,0,.5); animation: asr-rock 30s ease-in-out infinite; }
@keyframes asr-moon   { 0% { box-shadow: 0 0 30px 8px rgba(160,168,192,.2); opacity:.9 } 50% { box-shadow: 0 0 50px 12px rgba(160,168,192,.4); opacity:1 } 100% { box-shadow: 0 0 35px 10px rgba(160,168,192,.25); opacity:.95 } }
@keyframes asr-sky    { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.9 } }
@keyframes asr-ground { 0% { transform: translateY(0) } 50% { transform: translateY(-4px) } 100% { transform: translateY(0) } }
@keyframes asr-hang   { 0% { transform: translateY(0) rotate(0) } 25% { transform: translateY(-3px) rotate(-4deg) } 50% { transform: translateY(0) rotate(2deg) } 75% { transform: translateY(-2px) rotate(-2deg) } 100% { transform: translateY(0) rotate(0) } }
@keyframes asr-mist   { 0% { opacity:.3; filter: blur(6px) } 50% { opacity:.6; filter: blur(10px) } 100% { opacity:.4; filter: blur(7px) } }
@keyframes asr-rock   { 0% { transform: scale(1) } 50% { transform: scale(1.02) translateY(-1px) } 100% { transform: scale(1) } }

/* angiers-fall-of-france */
.scn-angiers-fall-of-france { background: linear-gradient(180deg, #0e0e28 0%, #1c1c3e 40%, #2a2a4e 80%, #1a1a2a 100%), radial-gradient(ellipse at 60% 30%, #303060 0%, transparent 70%); }
.scn-angiers-fall-of-france .moon { position:absolute; top:6%; left:70%; width:55px; height:55px; background: radial-gradient(circle at 35% 35%, #c0c8d8 0%, #a0a8b8 60%, #7078a0 100%); border-radius:50%; box-shadow: 0 0 50px 12px rgba(160,168,184,.3), 0 0 100px 25px rgba(160,168,184,.15); animation: aff-moon 12s ease-in-out infinite alternate; }
.scn-angiers-fall-of-france .sky { position:absolute; inset:0 0 45% 0; background: linear-gradient(180deg, #141435 0%, #1e1e40 50%, #282850 100%); animation: aff-sky 18s ease-in-out infinite alternate; }
.scn-angiers-fall-of-france .clouds { position:absolute; top:12%; left:0; right:0; height:20%; background: linear-gradient(180deg, rgba(160,168,184,.2) 0%, transparent 100%); filter: blur(8px); animation: aff-clouds 25s linear infinite; }
.scn-angiers-fall-of-france .plume { position:absolute; top:22%; left:45%; width:40px; height:80px; background: linear-gradient(180deg, #6a6a8a 0%, #4a4a6a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%; transform-origin: bottom center; box-shadow: 0 0 15px rgba(100,100,140,.3); animation: aff-plume 4s ease-in-out infinite; }
.scn-angiers-fall-of-france .castle { position:absolute; bottom:25%; left:20%; width:70px; height:50px; background: linear-gradient(180deg, #3a3a5a 0%, #2a2a4a 100%); border-radius: 6% 6% 4% 4%; box-shadow: 0 6px 12px rgba(0,0,0,.5); animation: aff-castle 10s ease-in-out infinite; }
.scn-angiers-fall-of-france .debris { position:absolute; bottom:35%; left:30%; width:20px; height:20px; background: #4a4a6a; border-radius: 20% 50% 30% 40%; animation: aff-debris 3s ease-in-out infinite; }
.scn-angiers-fall-of-france .ground { position:absolute; bottom:0; left:0; right:0; height:50%; background: linear-gradient(180deg, #0a0a18 0%, #141430 100%); border-radius: 20% 80% 0 0 / 30% 70% 0 0; box-shadow: inset 0 8px 24px rgba(0,0,0,.6); }
@keyframes aff-moon    { 0% { box-shadow: 0 0 40px 10px rgba(160,168,184,.2); opacity:.9 } 50% { box-shadow: 0 0 60px 15px rgba(160,168,184,.4); opacity:1 } 100% { box-shadow: 0 0 45px 12px rgba(160,168,184,.25); opacity:.95 } }
@keyframes aff-sky     { 0% { opacity:.85 } 50% { opacity:1 } 100% { opacity:.9 } }
@keyframes aff-clouds  { 0% { transform: translateX(-20px) } 50% { transform: translateX(20px) } 100% { transform: translateX(-20px) } }
@keyframes aff-plume   { 0% { transform: translateY(0) rotate(0); opacity:1 } 25% { transform: translateY(-10px) rotate(8deg) scale(1.1); opacity:.9 } 50% { transform: translateY(0) rotate(-4deg) scale(1); opacity:1 } 75% { transform: translateY(-5px) rotate(5deg) scale(1.05); opacity:.95 } 100% { transform: translateY(0) rotate(0); opacity:1 } }
@keyframes aff-castle  { 0% { transform: translateY(0) scale(1) } 50% { transform: translateY(-3px) scale(1.02) } 100% { transform: translateY(0) scale(1) } }
@keyframes aff-debris  { 0% { transform: translate(0,0) rotate(0) } 25% { transform: translate(8px,-12px) rotate(45deg) } 50% { transform: translate(10px,-20px) rotate(-30deg) opacity:.7 } 75% { transform: translate(4px,-8px) rotate(15deg) } 100% { transform: translate(0,0) rotate(0) } }

/* angiers-york-captures-joan */
.scn-angiers-york-captures-joan { background: linear-gradient(180deg, #dce0e8 0%, #b8c0d0 30%, #a0a8b8 60%, #8890a0 100%), radial-gradient(ellipse at 70% 20%, #f0e8c0 0%, transparent 60%); }
.scn-angiers-york-captures-joan .sun { position:absolute; top:5%; left:75%; width:60px; height:60px; background: radial-gradient(circle at 30% 30%, #ffe8b0 0%, #f0c860 60%, #d0a030 100%); border-radius:50%; box-shadow: 0 0 60px 15px rgba(240,200,96,.3), 0 0 120px 30px rgba(240,200,96,.15); animation: ycj-sun 12s ease-in-out infinite alternate; }
.scn-angiers-york-captures-joan .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #c8d0dc 0%, #b0bcc8 50%, #a0a8b8 100%); animation: ycj-sky 15s ease-in-out infinite alternate; }
.scn-angiers-york-captures-joan .ground { position:absolute; bottom:0; left:0; right:0; height:45%; background: linear-gradient(180deg, #7a8a6a 0%, #5a6a4a 100%); border-radius: 60% 40% 0 0 / 50% 50% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,.2); }
.scn-angiers-york-captures-joan .york { position:absolute; bottom:30%; left:38%; width:30px; height:80px; background: linear-gradient(180deg, #5a6a7a 0%, #3a4a5a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%; transform-origin: bottom center; box-shadow: 0 0 10px rgba(0,0,0,.4); animation: ycj-york 3s ease-in-out infinite; }
.scn-angiers-york-captures-joan .joan { position:absolute; bottom:25%; left:52%; width:20px; height:70px; background: linear-gradient(180deg, #b87878 0%, #a06060 100%); border-radius: 50% 50% 40% 40% / 55% 55% 35% 35%; transform-origin: bottom center; box-shadow: 0 0 8px rgba(0,0,0,.3); animation: ycj-joan 2s ease-in-out infinite; }
.scn-angiers-york-captures-joan .chains { position:absolute; bottom:35%; left:44%; width:16px; height:40px; background: linear-gradient(180deg, #808890 0%, #606870 100%); border-radius: 4px; box-shadow: 0 0 6px rgba(0,0,0,.3); animation: ycj-chains 1.5s ease-in-out infinite alternate; }
.scn-angiers-york-captures-joan .sparks { position:absolute; bottom:40%; left:48%; width:12px; height:12px; background: radial-gradient(circle, #f0d080 0%, #d0a040 60%, transparent 100%); border-radius:50%; box-shadow: 0 0 20px 5px rgba(240,208,128,.5); animation: ycj-sparks 0.8s ease-in-out infinite; }
@keyframes ycj-sun    { 0% { box-shadow: 0 0 50px 12px rgba(240,200,96,.2); opacity:.95 } 50% { box-shadow: 0 0 70px 18px rgba(240,200,96,.4); opacity:1 } 100% { box-shadow: 0 0 55px 14px rgba(240,200,96,.25); opacity:.97 } }
@keyframes ycj-sky    { 0% { opacity:.9 } 50% { opacity:1 } 100% { opacity:.92 } }
@keyframes ycj-york   { 0% { transform: translateY(0) rotate(0) } 25% { transform: translateY(-2px) rotate(2deg) } 50% { transform: translateY(0) rotate(-1deg) } 75% { transform: translateY(-1px) rotate(1deg) } 100% { transform: translateY(0) rotate(0) } }
@keyframes ycj-joan   { 0% { transform: translate(0,0) rotate(-2deg) } 25% { transform: translate(4px,-6px) rotate(5deg) } 50% { transform: translate(8px,-10px) rotate(3deg) } 75% { transform: translate(4px,-6px) rotate(-2deg) } 100% { transform: translate(0,0) rotate(-2deg) } }
@keyframes ycj-chains { 0% { transform: translateY(0) scaleY(1) } 50% { transform: translateY(2px) scaleY(1.05) } 100% { transform: translateY(0) scaleY(1) } }
@keyframes ycj-sparks { 0% { transform: scale(1); opacity:.8 } 50% { transform: scale(1.5); opacity:1 } 100% { transform: scale(1); opacity:.7 } }

/* angiers-circe-insult */
.scn-angiers-circe-insult { background: linear-gradient(180deg, #d0d8e0 0%, #b0b8c8 30%, #98a0b0 60%, #808890 100%), radial-gradient(ellipse at 50% 30%, #f0e8c0 0%, transparent 50%); }
.scn-angiers-circe-insult .sun { position:absolute; top:4%; left:80%; width:55px; height:55px; background: radial-gradient(circle at 30% 30%, #ffe0a0 0%, #e8c050 60%, #c89830 100%); border-radius:50%; box-shadow: 0 0 55px 14px rgba(232,192,80,.3), 0 0 110px 28px rgba(232,192,80,.15); animation: ci-sun 14s ease-in-out infinite alternate; }
.scn-angiers-circe-insult .sky { position:absolute; inset:0 0 45% 0; background: linear-gradient(180deg, #c0c8d4 0%, #a8b0c0 50%, #98a0b0 100%); animation: ci-sky 16s ease-in-out infinite alternate; }
.scn-angiers-circe-insult .ground { position:absolute; bottom:0; left:0; right:0; height:50%; background: linear-gradient(180deg, #7a8a6a 0%, #5a6a4a 100%); border-radius: 50% 50% 0 0 / 40% 60% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,.15); }
.scn-angiers-circe-insult .york { position:absolute; bottom:28%; left:35%; width:28px; height:75px; background: linear-gradient(180deg, #5a6a7a 0%, #3a4a5a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 35% 35%; transform-origin: bottom center; animation: ci-york 3.5s ease-in-out infinite; }
.scn-angiers-circe-insult .joan-2 { position:absolute; bottom:25%; left:55%; width:20px; height:70px; background: linear-gradient(180deg, #b87878 0%, #a06060 100%); border-radius: 50% 50% 40% 40% / 55% 55% 35% 35%; transform-origin: bottom center; animation: ci-joan 2.5s ease-in-out infinite; }
.scn-angiers-circe-insult .magic-swirl { position:absolute; bottom:38%; left:45%; width:30px; height:30px; background: radial-gradient(circle, rgba(200,160,100,.4) 0%, transparent 70%); border-radius:50%; filter: blur(4px); animation: ci-swirl 4s ease-in-out infinite; }
.scn-angiers-circe-insult .sparks { position:absolute; bottom:42%; left:48%; width:10px; height:10px; background: radial-gradient(circle, #f0d080 0%, #d0a040 60%, transparent 100%); border-radius:50%; box-shadow: 0 0 20px 5px rgba(240,208,128,.6); animation: ci-sparks 1.2s ease-in-out infinite; }
@keyframes ci-sun     { 0% { box-shadow: 0 0 45px 11px rgba(232,192,80,.2); opacity:.95 } 50% { box-shadow: 0 0 65px 16px rgba(232,192,80,.4); opacity:1 } 100% { box-shadow: 0 0 50px 13px rgba(232,192,80,.25); opacity:.97 } }
@keyframes ci-sky     { 0% { opacity:.9 } 50% { opacity:1 } 100% { opacity:.92 } }
@keyframes ci-york    { 0% { transform: translateY(0) rotate(0) } 25% { transform: translateY(-2px) rotate(3deg) } 50% { transform: translateY(0) rotate(-2deg) } 75% { transform: translateY(-1px) rotate(1deg) } 100% { transform: translateY(0) rotate(0) } }
@keyframes ci-joan    { 0% { transform: translate(0,0) rotate(2deg) } 25% { transform: translate(-3px,-5px) rotate(-3deg) } 50% { transform: translate(-6px,-8px) rotate(0) } 75% { transform: translate(-3px,-5px) rotate(1deg) } 100% { transform: translate(0,0) rotate(2deg) } }
@keyframes ci-swirl   { 0% { transform: scale(1) rotate(0); opacity:.5 } 50% { transform: scale(1.4) rotate(180deg); opacity:.8 } 100% { transform: scale(1) rotate(360deg); opacity:.5 } }
@keyframes ci-sparks   { 0% { transform: scale(1); opacity:.7 } 50% { transform: scale(1.6) translate(3px,-2px); opacity:1 } 100% { transform: scale(1); opacity:.6 } }

/* Scene 1: Westminster Abbey Funeral – dark nave, procession */
.scn-westminster-abbey-funeral {
  background: linear-gradient(180deg, #0f0f2a 0%, #1a1a3a 40%, #2c1c2a 100%),
              radial-gradient(ellipse at 50% 30%, #3a2a3a 0%, transparent 70%);
}
.scn-westminster-abbey-funeral .pillar-left,
.scn-westminster-abbey-funeral .pillar-right {
  position: absolute; top: 10%; width: 6%; height: 75%;
  background: linear-gradient(90deg, #2a2a3a 0%, #3a3a4a 50%, #2a2a3a 100%);
  border-radius: 4% / 2%; box-shadow: inset -2px 0 6px rgba(0,0,0,.6);
}
.scn-westminster-abbey-funeral .pillar-left { left: 15%; }
.scn-westminster-abbey-funeral .pillar-right { right: 15%; }
/* arched top – using pseudo or extra div? I'll add a pseudo element later if needed; instead simulate arch with border-radius on top. Pillars already have top border-radius. Acceptable. */
.scn-westminster-abbey-funeral .coffin {
  position: absolute; bottom: 25%; left: 42%; width: 16%; height: 12%;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%);
  border-radius: 6% 6% 3% 3%; box-shadow: 0 6px 20px rgba(0,0,0,.7);
  animation: wf-coffin 12s ease-in-out infinite;
}
.scn-westminster-abbey-funeral .cross {
  position: absolute; bottom: 37%; left: 48%; width: 4%; height: 20%;
  background: linear-gradient(180deg, #c8a060 0%, #a08040 100%);
  border-radius: 10%; transform: translateX(-50%);
}
.scn-westminster-abbey-funeral .cross::after {
  content: ''; position: absolute; top: 20%; left: -60%; width: 220%; height: 25%;
  background: inherit; border-radius: 10%;
}
.scn-westminster-abbey-funeral .mourner-a,
.scn-westminster-abbey-funeral .mourner-b {
  position: absolute; bottom: 22%; width: 8%; height: 28%;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 80%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  animation: wf-bow 6s ease-in-out infinite alternate;
}
.scn-westminster-abbey-funeral .mourner-a { left: 24%; }
.scn-westminster-abbey-funeral .mourner-b { right: 24%; animation-delay: 1s; }
.scn-westminster-abbey-funeral .candle {
  position: absolute; bottom: 30%; left: 32%; width: 2%; height: 10%;
  background: linear-gradient(180deg, #f0d080 0%, #c8a040 100%);
  border-radius: 20% 20% 5% 5%; box-shadow: 0 0 20px 10px #f0d080, 0 0 40px 20px rgba(240,208,128,.3);
  animation: wf-flicker 2s ease-in-out infinite;
}
.scn-westminster-abbey-funeral .incense {
  position: absolute; top: 28%; left: 38%; width: 20%; height: 10%;
  background: radial-gradient(ellipse, rgba(200,180,160,.3) 0%, transparent 100%);
  filter: blur(12px); animation: wf-drift 30s linear infinite;
}
@keyframes wf-coffin {
  0% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-3px) rotate(0.5deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes wf-bow {
  0% { transform: scaleY(1) translateY(0); }
  50% { transform: scaleY(0.95) translateY(2px); }
  100% { transform: scaleY(1) translateY(0); }
}
@keyframes wf-flicker {
  0% { opacity: 0.8; box-shadow: 0 0 15px 8px #f0d080, 0 0 30px 15px rgba(240,208,128,.2); }
  50% { opacity: 1; box-shadow: 0 0 25px 12px #ffd090, 0 0 50px 25px rgba(255,208,144,.4); }
  100% { opacity: 0.85; box-shadow: 0 0 18px 9px #f0d080, 0 0 35px 18px rgba(240,208,128,.25); }
}
@keyframes wf-drift {
  0% { transform: translateX(-20px) scale(1); opacity: 0.6; }
  50% { transform: translateX(40px) scale(1.2); opacity: 0.3; }
  100% { transform: translateX(80px) scale(1); opacity: 0.6; }
}

/* Scene 2: Messenger First Bad News – tense council chamber */
.scn-messenger-first-bad-news {
  background: linear-gradient(135deg, #1a1a28 0%, #2a2020 40%, #1a1212 100%),
              radial-gradient(ellipse at 60% 70%, #3a2828 0%, transparent 60%);
}
.scn-messenger-first-bad-news .table {
  position: absolute; bottom: 20%; left: 20%; width: 60%; height: 6%;
  background: linear-gradient(180deg, #3a3020 0%, #1a150a 100%);
  border-radius: 4%; box-shadow: 0 4px 10px rgba(0,0,0,.6);
  animation: m1-table 8s ease-in-out infinite alternate;
}
.scn-messenger-first-bad-news .lord-left,
.scn-messenger-first-bad-news .lord-right {
  position: absolute; bottom: 22%; width: 12%; height: 28%;
  background: linear-gradient(180deg, #2a2030 0%, #14101a 100%);
  border-radius: 50% 50% 20% 20% / 60% 60% 20% 20%;
  box-shadow: 0 -4px 8px rgba(0,0,0,.4);
}
.scn-messenger-first-bad-news .lord-left { left: 14%; }
.scn-messenger-first-bad-news .lord-right { right: 14%; }
.scn-messenger-first-bad-news .messenger {
  position: absolute; bottom: 15%; left: 44%; width: 12%; height: 24%;
  background: linear-gradient(180deg, #1c1c28 0%, #0c0c14 100%);
  border-radius: 60% 60% 20% 20% / 80% 80% 20% 20%;
  transform-origin: bottom center;
  animation: m1-kneel 4s ease-in-out infinite alternate;
}
.scn-messenger-first-bad-news .torch {
  position: absolute; bottom: 30%; left: 22%; width: 3%; height: 12%;
  background: linear-gradient(180deg, #f0b060 0%, #a06020 100%);
  border-radius: 30% 30% 10% 10%; box-shadow: 0 0 20px 10px #f0b060, 0 0 40px 20px rgba(240,176,96,.3);
  animation: m1-torch 1.5s ease-in-out infinite;
}
.scn-messenger-first-bad-news .scroll {
  position: absolute; bottom: 18%; left: 72%; width: 10%; height: 8%;
  background: linear-gradient(180deg, #c8b090 0%, #a08060 100%);
  border-radius: 10% 10% 20% 20%; transform: rotate(-10deg);
  animation: m1-scroll 10s ease-in-out infinite;
}
.scn-messenger-first-bad-news .parchment-ash {
  position: absolute; top: 20%; left: 50%; width: 30%; height: 10%;
  background: radial-gradient(ellipse, rgba(180,160,140,.15) 0%, transparent 100%);
  filter: blur(8px); animation: m1-ash 40s linear infinite;
}
@keyframes m1-kneel {
  0% { transform: scaleY(1) translateY(0); }
  50% { transform: scaleY(0.97) translateY(3px) rotate(1deg); }
  100% { transform: scaleY(1) translateY(0); }
}
@keyframes m1-table {
  0% { transform: translateY(0); }
  50% { transform: translateY(-1px); }
  100% { transform: translateY(0); }
}
@keyframes m1-torch {
  0% { opacity: 0.8; box-shadow: 0 0 15px 6px #f0b060, 0 0 30px 15px rgba(240,176,96,.2); }
  50% { opacity: 1; box-shadow: 0 0 25px 12px #ffc070, 0 0 50px 25px rgba(255,192,112,.4); }
  100% { opacity: 0.85; box-shadow: 0 0 18px 8px #f0b060, 0 0 35px 18px rgba(240,176,96,.25); }
}
@keyframes m1-scroll {
  0% { transform: rotate(-10deg) translateY(0); }
  50% { transform: rotate(-8deg) translateY(-2px); }
  100% { transform: rotate(-10deg) translateY(0); }
}
@keyframes m1-ash {
  0% { transform: translateX(-40px) scale(1); opacity: 0.5; }
  50% { transform: translateX(20px) scale(1.3); opacity: 0.2; }
  100% { transform: translateX(80px) scale(1); opacity: 0.5; }
}

/* Scene 3: Messenger Second Bad News – throne room, fallen letters */
.scn-messenger-second-bad-news {
  background: linear-gradient(180deg, #12121e 0%, #1c1c2a 40%, #2a2020 100%),
              radial-gradient(ellipse at 30% 20%, #2a2a3e 0%, transparent 60%);
}
.scn-messenger-second-bad-news .window-arch {
  position: absolute; top: 5%; left: 38%; width: 24%; height: 30%;
  background: linear-gradient(180deg, #2a2a3e 0%, #1a1a2e 100%);
  border-radius: 10% 10% 0 0 / 20% 20% 0 0;
  box-shadow: inset 0 0 20px rgba(0,0,0,.5);
}
.scn-messenger-second-bad-news .window-sky {
  position: absolute; top: 8%; left: 40%; width: 20%; height: 25%;
  background: linear-gradient(180deg, #0c0c2a 0%, #1a1a3a 100%);
  border-radius: 6% 6% 0 0; opacity: 0.8;
  animation: m2-sky 12s ease-in-out infinite alternate;
}
.scn-messenger-second-bad-news .raven {
  position: absolute; top: 12%; left: 60%; width: 6%; height: 8%;
  background: linear-gradient(180deg, #1a1a2a 0%, #0e0e1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: m2-raven 8s ease-in-out infinite;
}
.scn-messenger-second-bad-news .letter-a,
.scn-messenger-second-bad-news .letter-b {
  position: absolute; top: 20%; width: 8%; height: 10%;
  background: linear-gradient(180deg, #c8b098 0%, #a08068 100%);
  border-radius: 4%; box-shadow: 0 4px 6px rgba(0,0,0,.3);
  animation: m2-fall 6s ease-in infinite;
}
.scn-messenger-second-bad-news .letter-a { left: 22%; animation-delay: 0s; }
.scn-messenger-second-bad-news .letter-b { left: 50%; animation-delay: 2s; }
.scn-messenger-second-bad-news .throne {
  position: absolute; bottom: 15%; left: 40%; width: 20%; height: 30%;
  background: linear-gradient(180deg, #3a3020 0%, #1a150a 100%);
  border-radius: 10% 10% 5% 5% / 20% 20% 5% 5%;
  box-shadow: 0 0 20px rgba(0,0,0,.5);
  animation: m2-throne 14s ease-in-out infinite alternate;
}
.scn-messenger-second-bad-news .crown-fallen {
  position: absolute; bottom: 10%; left: 28%; width: 8%; height: 6%;
  background: linear-gradient(180deg, #c8a040 0%, #806020 100%);
  border-radius: 10% 10% 30% 30% / 20% 20% 40% 40%;
  transform: rotate(-30deg); box-shadow: 0 4px 10px rgba(0,0,0,.4);
  animation: m2-crown 10s ease-in-out infinite;
}
.scn-messenger-second-bad-news .shadow-stripe {
  position: absolute; bottom: 0; left: 0; width: 100%; height: 20%;
  background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,.6) 100%);
}
@keyframes m2-sky {
  0% { opacity: 0.6; }
  50% { opacity: 0.9; }
  100% { opacity: 0.6; }
}
@keyframes m2-raven {
  0% { transform: translate(0, 0) rotate(0deg); }
  30% { transform: translate(-10px, -5px) rotate(-5deg); }
  60% { transform: translate(8px, -2px) rotate(3deg); }
  100% { transform: translate(0, 0) rotate(0deg); }
}
@keyframes m2-fall {
  0% { transform: translateY(0) rotate(0deg); opacity: 1; }
  50% { transform: translateY(40px) rotate(15deg); opacity: 0.7; }
  100% { transform: translateY(80px) rotate(30deg); opacity: 0; }
}
@keyframes m2-throne {
  0% { transform: scaleY(1) translateY(0); }
  50% { transform: scaleY(0.97) translateY(-2px); }
  100% { transform: scaleY(1) translateY(0); }
}
@keyframes m2-crown {
  0% { transform: rotate(-30deg) translateY(0); }
  50% { transform: rotate(-25deg) translateY(-2px); }
  100% { transform: rotate(-30deg) translateY(0); }
}

/* Scene 4: Messenger Third Bad News – battlefield remains */
.scn-messenger-third-bad-news {
  background: linear-gradient(180deg, #1a0e0e 0%, #2a1414 40%, #1c0c0c 100%),
              radial-gradient(ellipse at 20% 80%, #3a1a1a 0%, transparent 50%);
}
.scn-messenger-third-bad-news .shield {
  position: absolute; top: 10%; left: 15%; width: 20%; height: 30%;
  background: linear-gradient(135deg, #4a3a2a 0%, #2a1a10 100%);
  border-radius: 20% 20% 30% 30% / 30% 30% 40% 40%;
  box-shadow: 0 8px 20px rgba(0,0,0,.5);
  animation: m3-shield 7s ease-in-out infinite alternate;
}
.scn-messenger-third-bad-news .sword {
  position: absolute; top: 15%; right: 20%; width: 8%; height: 40%;
  background: linear-gradient(180deg, #808088 0%, #505058 100%);
  border-radius: 2% 2% 10% 10% / 5% 5% 20% 20%;
  transform: rotate(25deg); box-shadow: 0 4px 10px rgba(0,0,0,.4);
  animation: m3-sword 5s ease-in-out infinite;
}
.scn-messenger-third-bad-news .banner-torn {
  position: absolute; top: 5%; left: 50%; width: 18%; height: 20%;
  background: linear-gradient(180deg, #5e1a1d 0%, #3a0e10 100%);
  border-radius: 0 0 20% 20% / 0 0 30% 30%;
  clip-path: polygon(0 0, 100% 0, 100% 60%, 80% 80%, 60% 40%, 40% 80%, 20% 40%, 0 60%);
  animation: m3-banner 12s ease-in-out infinite alternate;
}
.scn-messenger-third-bad-news .helmet {
  position: absolute; bottom: 20%; left: 38%; width: 14%; height: 14%;
  background: linear-gradient(180deg, #606068 0%, #303038 100%);
  border-radius: 50% 50% 10% 10% / 60% 60% 20% 20%;
  box-shadow: 0 4px 10px rgba(0,0,0,.5);
  animation: m3-helmet 8s ease-in-out infinite;
}
.scn-messenger-third-bad-news .campfire {
  position: absolute; bottom: 5%; left: 30%; width: 12%; height: 8%;
  background: radial-gradient(circle, #f0a050 0%, #c07030 40%, #a04010 70%, transparent 100%);
  border-radius: 50%; box-shadow: 0 0 30px 15px #f0a050, 0 0 60px 30px rgba(240,160,80,.3);
  animation: m3-fire 1.8s ease-in-out infinite alternate;
}
.scn-messenger-third-bad-news .ember-a,
.scn-messenger-third-bad-news .ember-b {
  position: absolute; bottom: 10%; width: 1.5%; height: 1.5%;
  background: #ffa050; border-radius: 50%; box-shadow: 0 0 6px 3px rgba(255,160,80,.6);
  animation: m3-ember 3s linear infinite;
}
.scn-messenger-third-bad-news .ember-a { left: 33%; animation-delay: 0s; }
.scn-messenger-third-bad-news .ember-b { left: 38%; animation-delay: 1.5s; }
@keyframes m3-shield {
  0% { transform: translateX(0) rotate(0deg); }
  50% { transform: translateX(5px) rotate(2deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes m3-sword {
  0% { transform: rotate(25deg) translateY(0); }
  50% { transform: rotate(30deg) translateY(-3px); }
  100% { transform: rotate(25deg) translateY(0); }
}
@keyframes m3-banner {
  0% { transform: translateX(0) scaleY(1); }
  50% { transform: translateX(-5px) scaleY(1.05); }
  100% { transform: translateX(0) scaleY(1); }
}
@keyframes m3-helmet {
  0% { transform: rotate(0deg) translateY(0); }
  50% { transform: rotate(-3deg) translateY(2px); }
  100% { transform: rotate(0deg) translateY(0); }
}
@keyframes m3-fire {
  0% { opacity: 0.8; box-shadow: 0 0 20px 10px #f0a050, 0 0 40px 20px rgba(240,160,80,.2); }
  50% { opacity: 1; box-shadow: 0 0 30px 15px #ffb060, 0 0 60px 30px rgba(255,176,96,.4); }
  100% { opacity: 0.85; box-shadow: 0 0 24px 12px #f0a050, 0 0 45px 22px rgba(240,160,80,.25); }
}
@keyframes m3-ember {
  0% { transform: translateY(0) scale(1); opacity: 1; }
  50% { transform: translateY(-20px) scale(0.8); opacity: 0.6; }
  100% { transform: translateY(-40px) scale(0.3); opacity: 0; }
}

/* Scene: angiers-farewell-margaret */
.scn-angiers-farewell-margaret {
  background: linear-gradient(180deg, #f9d89e 0%, #f7c06a 40%, #e8a24b 70%, #c8823a 100%),
              radial-gradient(ellipse at 30% 10%, #ffeeb0 0%, transparent 60%);
}
.scn-angiers-farewell-margaret .sky {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #87ceeb 0%, #b0e0e6 40%, #f0e68c 80%, transparent 100%);
  animation: an1-sky 20s ease-in-out infinite alternate;
}
.scn-angiers-farewell-margaret .sun {
  position: absolute; top: 12%; left: 35%; width: 70px; height: 70px;
  background: radial-gradient(circle, #fff5b0 0%, #ffd700 50%, #ffb347 100%);
  border-radius: 50%; box-shadow: 0 0 60px 30px rgba(255,215,0,0.6), 0 0 100px 50px rgba(255,180,50,0.3);
  animation: an1-sun 30s ease-in-out infinite alternate;
}
.scn-angiers-farewell-margaret .castle-wall {
  position: absolute; bottom: 10%; left: 15%; right: 15%; height: 50%;
  background: linear-gradient(180deg, #c9a96e 0%, #a8824a 30%, #7a5d2e 70%, #4a3a1a 100%);
  border-radius: 10% 10% 0 0; box-shadow: inset 0 -20px 30px rgba(0,0,0,0.5);
}
.scn-angiers-farewell-margaret .balcony {
  position: absolute; bottom: 40%; left: 50%; width: 120px; height: 40px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #d4a865 0%, #b8883a 100%);
  border-radius: 20% 20% 0 0; box-shadow: 0 4px 8px rgba(0,0,0,0.4);
}
.scn-angiers-farewell-margaret .figure-left {
  position: absolute; bottom: 44%; left: 30%; width: 22px; height: 50px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a120a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: an1-walk-left 10s ease-in-out infinite;
}
.scn-angiers-farewell-margaret .figure-right {
  position: absolute; bottom: 44%; right: 30%; width: 20px; height: 48px;
  background: linear-gradient(180deg, #5c4a3a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: an1-walk-right 10s ease-in-out infinite reverse;
}
.scn-angiers-farewell-margaret .flowers {
  position: absolute; bottom: 44%; left: 48%; width: 40px; height: 20px;
  background: radial-gradient(circle at 20% 50%, #e8a74f 0%, #c87a2a 50%, transparent 100%);
  border-radius: 50%; filter: blur(1px);
  animation: an1-sway 5s ease-in-out infinite;
}
.scn-angiers-farewell-margaret .cloud {
  position: absolute; top: 8%; right: 10%; width: 90px; height: 20px;
  background: linear-gradient(180deg, rgba(255,255,240,0.8) 0%, rgba(255,255,240,0.2) 100%);
  border-radius: 50%; filter: blur(4px);
  animation: an1-drift 40s linear infinite;
}
@keyframes an1-sky { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.7; } }
@keyframes an1-sun { 0% { transform: scale(0.95) translateY(0); } 50% { transform: scale(1.05) translateY(-5px); } 100% { transform: scale(0.98) translateY(2px); } }
@keyframes an1-walk-left { 0% { transform: translateX(0) translateY(0) rotate(0deg); } 25% { transform: translateX(-8px) translateY(-2px) rotate(-3deg); } 50% { transform: translateX(-16px) translateY(0) rotate(0deg); } 75% { transform: translateX(-24px) translateY(-2px) rotate(3deg); } 100% { transform: translateX(-32px) translateY(0) rotate(0deg); } }
@keyframes an1-walk-right { 0% { transform: translateX(0) translateY(0) rotate(0deg); } 25% { transform: translateX(8px) translateY(-2px) rotate(3deg); } 50% { transform: translateX(16px) translateY(0) rotate(0deg); } 75% { transform: translateX(24px) translateY(-2px) rotate(-3deg); } 100% { transform: translateX(32px) translateY(0) rotate(0deg); } }
@keyframes an1-sway { 0% { transform: rotate(0deg) scale(1); } 50% { transform: rotate(5deg) scale(1.05); } 100% { transform: rotate(-5deg) scale(0.95); } }
@keyframes an1-drift { 0% { transform: translateX(0); } 100% { transform: translateX(-130vw); } }

/* Scene: suffolk-woos-margaret */
.scn-suffolk-woos-margaret {
  background: linear-gradient(180deg, #fdf3cf 0%, #f5e1a5 40%, #d4b47a 80%, #b08a5a 100%),
              radial-gradient(ellipse at 50% 20%, #fff8d6 0%, transparent 70%);
}
.scn-suffolk-woos-margaret .bg {
  position: absolute; inset: 0;
  background: linear-gradient(135deg, #f5e1a5 0%, #e8c880 50%, #d0a860 100%);
  animation: sw-bg 15s ease-in-out infinite alternate;
}
.scn-suffolk-woos-margaret .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(180deg, #c49a5a 0%, #8a6a3a 100%);
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.4);
  transform: perspective(600px) rotateX(15deg);
}
.scn-suffolk-woos-margaret .pillar-left {
  position: absolute; bottom: 10%; left: 8%; width: 30px; height: 60%;
  background: linear-gradient(90deg, #e0c080 0%, #c8a860 50%, #b09040 100%);
  border-radius: 6px; box-shadow: 4px 0 8px rgba(0,0,0,0.3);
  animation: sw-pillar 8s ease-in-out infinite alternate;
}
.scn-suffolk-woos-margaret .pillar-right {
  position: absolute; bottom: 10%; right: 8%; width: 30px; height: 60%;
  background: linear-gradient(90deg, #e0c080 0%, #c8a860 50%, #b09040 100%);
  border-radius: 6px; box-shadow: -4px 0 8px rgba(0,0,0,0.3);
  animation: sw-pillar 8s ease-in-out infinite alternate-reverse;
}
.scn-suffolk-woos-margaret .throne {
  position: absolute; bottom: 35%; left: 50%; width: 50px; height: 60px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #c8a060 0%, #8a6a3a 100%);
  border-radius: 10% 10% 20% 20% / 30% 30% 20% 20%;
  box-shadow: 0 8px 12px rgba(0,0,0,0.5);
}
.scn-suffolk-woos-margaret .table {
  position: absolute; bottom: 28%; left: 50%; width: 60px; height: 18px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #b89850 0%, #8a6a3a 100%);
  border-radius: 4px; box-shadow: 0 4px 6px rgba(0,0,0,0.4);
}
.scn-suffolk-woos-margaret .candle {
  position: absolute; bottom: 42%; left: 50%; width: 8px; height: 30px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #f5e1a5 0%, #e0c080 50%, #c0a060 100%);
  border-radius: 2px; box-shadow: 0 0 12px 4px #ffd88a;
  animation: sw-candle 3s ease-in-out infinite alternate;
}
.scn-suffolk-woos-margaret .shadow-cast {
  position: absolute; bottom: 20%; left: 30%; right: 30%; height: 10%;
  background: linear-gradient(180deg, rgba(0,0,0,0.3) 0%, transparent 100%);
  filter: blur(4px);
  animation: sw-shadow 6s ease-in-out infinite alternate;
}
@keyframes sw-bg { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.85; } }
@keyframes sw-pillar { 0% { transform: scaleY(1) rotate(0deg); } 50% { transform: scaleY(1.02) rotate(1deg); } 100% { transform: scaleY(0.98) rotate(-1deg); } }
@keyframes sw-candle { 0% { transform: translateX(-50%) rotate(-2deg); box-shadow: 0 0 12px 4px #ffd88a; } 50% { transform: translateX(-50%) rotate(2deg); box-shadow: 0 0 16px 6px #ffcc66; } 100% { transform: translateX(-50%) rotate(-1deg); box-shadow: 0 0 10px 3px #ffd88a; } }
@keyframes sw-shadow { 0% { transform: scaleX(0.8); opacity: 0.7; } 50% { transform: scaleX(1.1); opacity: 1; } 100% { transform: scaleX(0.9); opacity: 0.6; } }

/* Scene: camp-joan-trial */
.scn-camp-joan-trial {
  background: linear-gradient(180deg, #5c5c6e 0%, #3a3a4a 40%, #1a1a2a 80%, #0a0a12 100%),
              radial-gradient(ellipse at 50% 10%, #6a6a7e 0%, transparent 70%);
}
.scn-camp-joan-trial .sky {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(180deg, #7a7a8a 0%, #4a4a5a 50%, #2a2a3a 100%);
  animation: cj-sky 18s ease-in-out infinite alternate;
}
.scn-camp-joan-trial .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 30% 20% 0 0 / 50% 30% 0 0;
}
.scn-camp-joan-trial .stake {
  position: absolute; bottom: 30%; left: 50%; width: 12px; height: 60px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #8a6a3a 0%, #5a4020 100%);
  border-radius: 2px; box-shadow: 2px 2px 4px rgba(0,0,0,0.5);
  animation: cj-stake 6s ease-in-out infinite alternate;
}
.scn-camp-joan-trial .figure-joan {
  position: absolute; bottom: 32%; left: 50%; width: 20px; height: 45px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #3a2a1a 0%, #1a120a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cj-joan 12s ease-in-out infinite;
}
.scn-camp-joan-trial .guard-left {
  position: absolute; bottom: 25%; left: 20%; width: 24px; height: 55px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 40% 40% 40% / 60% 50% 50% 60%;
  animation: cj-guard 10s ease-in-out infinite alternate;
}
.scn-camp-joan-trial .guard-right {
  position: absolute; bottom: 25%; right: 20%; width: 24px; height: 55px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 40% 50% 40% 40% / 50% 60% 60% 50%;
  animation: cj-guard 10s ease-in-out infinite alternate-reverse;
}
.scn-camp-joan-trial .fire {
  position: absolute; bottom: 30%; left: 50%; width: 30px; height: 40px;
  transform: translateX(-50%);
  background: radial-gradient(ellipse at 50% 100%, #c8553d 0%, #a0461a 50%, transparent 100%);
  border-radius: 50% 50% 20% 20%; filter: blur(2px);
  box-shadow: 0 0 20px 10px rgba(200,85,61,0.5), 0 0 40px 20px rgba(160,70,26,0.3);
  animation: cj-fire 4s ease-in-out infinite alternate;
}
.scn-camp-joan-trial .chains {
  position: absolute; bottom: 35%; left: 50%; width: 40px; height: 8px;
  transform: translateX(-50%);
  background: repeating-linear-gradient(90deg, #6a6a6a 0px, #6a6a6a 3px, transparent 3px, transparent 6px);
  animation: cj-chains 5s ease-in-out infinite alternate;
}
@keyframes cj-sky { 0% { opacity: 0.7; } 50% { opacity: 1; } 100% { opacity: 0.6; } }
@keyframes cj-stake { 0% { transform: translateX(-50%) rotate(0deg); } 50% { transform: translateX(-50%) rotate(1deg); } 100% { transform: translateX(-50%) rotate(-1deg); } }
@keyframes cj-joan { 0% { transform: translateX(-50%) translateY(0) rotate(0deg); } 25% { transform: translateX(-50%) translateY(-2px) rotate(2deg); } 50% { transform: translateX(-50%) translateY(0) rotate(-2deg); } 75% { transform: translateX(-50%) translateY(-1px) rotate(1deg); } 100% { transform: translateX(-50%) translateY(0) rotate(0deg); } }
@keyframes cj-guard { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-3px) rotate(2deg); } 100% { transform: translateY(0) rotate(-2deg); } }
@keyframes cj-fire { 0% { transform: translateX(-50%) scale(1); opacity: 0.8; } 50% { transform: translateX(-50%) scale(1.1) translateY(-2px); opacity: 1; } 100% { transform: translateX(-50%) scale(0.95); opacity: 0.7; } }
@keyframes cj-chains { 0% { transform: translateX(-50%) translateY(0); } 50% { transform: translateX(-50%) translateY(2px); } 100% { transform: translateX(-50%) translateY(-1px); } }

/* Scene: camp-shepherd-curse */
.scn-camp-shepherd-curse {
  background: linear-gradient(180deg, #1a1a2a 0%, #0f0f1a 40%, #050510 80%, #000005 100%),
              radial-gradient(ellipse at 50% 20%, #2a2a3a 0%, transparent 80%);
}
.scn-camp-shepherd-curse .sky {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 50%, #0a0a12 100%);
  animation: cs-sky 25s ease-in-out infinite alternate;
}
.scn-camp-shepherd-curse .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #2a1a0a 0%, #1a120a 100%);
  border-radius: 20% 10% 0 0 / 40% 20% 0 0;
}
.scn-camp-shepherd-curse .cross {
  position: absolute; bottom: 20%; left: 50%; width: 6px; height: 50px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 2px;
  animation: cs-cross 10s ease-in-out infinite alternate;
}
.scn-camp-shepherd-curse .figure-father {
  position: absolute; bottom: 10%; left: 30%; width: 24px; height: 60px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a120a 100%);
  border-radius: 50% 40% 40% 40% / 60% 50% 50% 60%;
  transform-origin: bottom center;
  animation: cs-father 8s ease-in-out infinite;
}
.scn-camp-shepherd-curse .figure-daughter {
  position: absolute; bottom: 15%; right: 25%; width: 20px; height: 50px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cs-daughter 6s ease-in-out infinite alternate;
}
.scn-camp-shepherd-curse .lightning {
  position: absolute; top: 5%; left: 10%; width: 2px; height: 40%;
  background: white;
  filter: blur(1px);
  animation: cs-lightning 12s ease-in-out infinite;
}
.scn-camp-shepherd-curse .rain {
  position: absolute; inset: 0;
  background: repeating-linear-gradient(180deg, transparent 0px, transparent 6px, rgba(255,255,255,0.05) 6px, rgba(255,255,255,0.05) 8px);
  animation: cs-rain 0.8s linear infinite;
}
@keyframes cs-sky { 0% { opacity: 0.6; } 50% { opacity: 1; } 100% { opacity: 0.5; } }
@keyframes cs-cross { 0% { transform: translateX(-50%) rotate(0deg); } 50% { transform: translateX(-50%) rotate(1deg); } 100% { transform: translateX(-50%) rotate(-1deg); } }
@keyframes cs-father { 0% { transform: translateY(0) rotate(0deg); } 25% { transform: translateY(-3px) rotate(2deg); } 50% { transform: translateY(0) rotate(-2deg); } 75% { transform: translateY(-1px) rotate(1deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes cs-daughter { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-4px) rotate(3deg); } 100% { transform: translateY(0) rotate(-3deg); } }
@keyframes cs-lightning { 0% { opacity: 0; } 10% { opacity: 1; } 11% { opacity: 0.5; } 12% { opacity: 1; } 13% { opacity: 0; } 100% { opacity: 0; } }
@keyframes cs-rain { 0% { background-position: 0 0; } 100% { background-position: 0 10px; } }

/* one block per scene id. Append to style.css. */
.scn-angiers-wooing-pause { background: linear-gradient(180deg, #f2d5a0 0%, #e8c47a 40%, #d4a052 100%), radial-gradient(ellipse at 50% 100%, #e8c47a 0%, transparent 70%); }
.scn-angiers-wooing-pause .sky    { position:absolute; inset:0 0 45% 0; background: linear-gradient(180deg, #b8d8f0 0%, #d6e8d8 100%); animation: awp-sky 12s ease-in-out infinite alternate; }
.scn-angiers-wooing-pause .grass  { position:absolute; bottom:0; left:0; right:0; height:45%; background: linear-gradient(180deg, #7c9a6a 0%, #5a7a4a 100%); border-radius: 30% 70% 0 0 / 60% 50% 0 0; box-shadow: inset 0 8px 16px rgba(0,0,0,.2); animation: awp-grass 18s ease-in-out infinite alternate; }
.scn-angiers-wooing-pause .tree   { position:absolute; bottom:30%; left:20%; width:40px; height:90px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 12% 12% 20% 20%; transform-origin: bottom center; box-shadow: -4px 0 8px rgba(0,0,0,.3); animation: awp-tree 9s ease-in-out infinite; }
.scn-angiers-wooing-pause .tree   { position:absolute; bottom:30%; left:20%; width:40px; height:90px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 12% 12% 20% 20%; transform-origin: bottom center; box-shadow: -4px 0 8px rgba(0,0,0,.3); animation: awp-tree 9s ease-in-out infinite; }
.scn-angiers-wooing-pause .wall   { position:absolute; bottom:20%; right:10%; width:120px; height:80px; background: linear-gradient(135deg, #c8a87a 0%, #a88a5a 100%); border-radius: 8% 8% 4% 4%; box-shadow: 0 4px 12px rgba(0,0,0,.3); transform: skewY(-2deg); animation: awp-wall 15s ease-in-out infinite alternate; }
.scn-angiers-wooing-pause .figure-left { position:absolute; bottom:15%; left:35%; width:20px; height:50px; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: awp-figure-left 5s ease-in-out infinite; }
.scn-angiers-wooing-pause .figure-right{ position:absolute; bottom:18%; left:50%; width:18px; height:46px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: awp-figure-right 5s ease-in-out infinite 2.5s; }
.scn-angiers-wooing-pause .glow   { position:absolute; bottom:30%; left:60%; width:30px; height:30px; background: radial-gradient(circle, #fce8a0 0%, #e0c070 40%, transparent 80%); border-radius:50%; filter: blur(4px); animation: awp-glow 4s ease-in-out infinite alternate; }
@keyframes awp-sky  { 0% { opacity:.85 } 50% { opacity:1 } 100% { opacity:.9 } }
@keyframes awp-grass{ 0% { transform: translateY(0) scale(1) } 50% { transform: translateY(-2px) scale(1.01) } 100% { transform: translateY(0) scale(1) } }
@keyframes awp-tree { 0%,100% { transform: rotate(0deg) } 50% { transform: rotate(1deg) scaleY(1.005) } }
@keyframes awp-wall { 0% { transform: skewY(-2deg) translateX(0) } 50% { transform: skewY(-1deg) translateX(2px) } 100% { transform: skewY(-2deg) translateX(0) } }
@keyframes awp-figure-left  { 0% { transform: translateX(0) translateY(0) rotate(-1deg) } 25% { transform: translateX(4px) translateY(-1px) rotate(1deg) } 50% { transform: translateX(8px) translateY(0) rotate(-1deg) } 75% { transform: translateX(12px) translateY(-1px) rotate(1deg) } 100% { transform: translateX(16px) translateY(0) rotate(0) } }
@keyframes awp-figure-right { 0% { transform: translateX(0) translateY(0) rotate(1deg) } 25% { transform: translateX(-4px) translateY(-1px) rotate(-1deg) } 50% { transform: translateX(-8px) translateY(0) rotate(1deg) } 75% { transform: translateX(-12px) translateY(-1px) rotate(-1deg) } 100% { transform: translateX(-16px) translateY(0) rotate(0) } }
@keyframes awp-glow { 0% { transform: scale(.8); opacity:.6 } 50% { transform: scale(1.2); opacity:1 } 100% { transform: scale(.9); opacity:.7 } }

.scn-angiers-king-plan { background: linear-gradient(180deg, #d4b898 0%, #b89878 40%, #9a7a5a 100%), radial-gradient(ellipse at 50% 80%, #b89878 0%, transparent 60%); }
.scn-angiers-king-plan .floor  { position:absolute; bottom:0; left:0; right:0; height:25%; background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%); border-radius: 10% 10% 0 0; box-shadow: inset 0 8px 16px rgba(0,0,0,.3); animation: akp-floor 20s ease-in-out infinite alternate; }
.scn-angiers-king-plan .wall   { position:absolute; inset:0 0 25% 0; background: linear-gradient(180deg, #c8b088 0%, #a88868 100%); border-radius: 0 0 20% 20% / 0 0 10% 10%; animation: akp-wall 15s ease-in-out infinite alternate; }
.scn-angiers-king-plan .window { position:absolute; top:12%; left:55%; width:60px; height:80px; background: linear-gradient(180deg, #e0f0e8 0%, #c0d8c8 100%); border: 3px solid #6a4a2a; border-radius: 4% 4% 6% 6%; box-shadow: inset 0 0 20px rgba(255,255,200,.5); animation: akp-window 8s ease-in-out infinite alternate; }
.scn-angiers-king-plan .table  { position:absolute; bottom:26%; left:30%; width:80px; height:12px; background: linear-gradient(180deg, #5a3a1a 0%, #3a2a0a 100%); border-radius: 8% 8% 4% 4%; box-shadow: 0 4px 8px rgba(0,0,0,.4); transform: perspective(400px) rotateX(30deg); animation: akp-table 10s ease-in-out infinite alternate; }
.scn-angiers-king-plan .map    { position:absolute; bottom:32%; left:32%; width:60px; height:50px; background: linear-gradient(135deg, #e8d8b0 0%, #d0b890 100%); border-radius: 4% 6% 6% 4%; transform: skewX(-5deg); box-shadow: 0 2px 6px rgba(0,0,0,.2); animation: akp-map 12s ease-in-out infinite alternate; }
.scn-angiers-king-plan .crown  { position:absolute; bottom:38%; left:42%; width:24px; height:18px; background: linear-gradient(180deg, #f0d060 0%, #c8a040 100%); border-radius: 50% 50% 20% 20% / 60% 60% 20% 20%; clip-path: polygon(0% 40%, 20% 0%, 40% 40%, 60% 0%, 80% 40%, 100% 0%, 100% 100%, 0% 100%); box-shadow: 0 0 8px rgba(200,160,64,.6); animation: akp-crown 6s ease-in-out infinite; }
.scn-angiers-king-plan .hand   { position:absolute; bottom:28%; left:35%; width:14px; height:30px; background: linear-gradient(180deg, #e8b890 0%, #c89870 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: 60% 80%; animation: akp-hand 4s ease-in-out infinite; }
@keyframes akp-floor{ 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes akp-wall { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.005) } 100% { transform: scaleY(1) } }
@keyframes akp-window{ 0% { background: linear-gradient(180deg, #e0f0e8 0%, #c0d8c8 100%); box-shadow: inset 0 0 20px rgba(255,255,200,.5); } 50% { background: linear-gradient(180deg, #f0f8f0 0%, #d0e8d0 100%); box-shadow: inset 0 0 30px rgba(255,255,200,.7); } 100% { background: linear-gradient(180deg, #e0f0e8 0%, #c0d8c8 100%); box-shadow: inset 0 0 20px rgba(255,255,200,.5); } }
@keyframes akp-table{ 0% { transform: perspective(400px) rotateX(30deg) translateY(0); } 50% { transform: perspective(400px) rotateX(28deg) translateY(-1px); } 100% { transform: perspective(400px) rotateX(30deg) translateY(0); } }
@keyframes akp-map  { 0% { transform: skewX(-5deg) translateY(0); } 50% { transform: skewX(-4deg) translateY(-2px); } 100% { transform: skewX(-5deg) translateY(0); } }
@keyframes akp-crown{ 0% { transform: scale(1) rotate(-3deg); } 33% { transform: scale(1.05) rotate(0deg); } 66% { transform: scale(0.98) rotate(3deg); } 100% { transform: scale(1) rotate(-3deg); } }
@keyframes akp-hand { 0% { transform: rotate(-10deg) translate(0,0); } 25% { transform: rotate(0deg) translate(2px,-2px); } 50% { transform: rotate(10deg) translate(4px,0); } 75% { transform: rotate(0deg) translate(2px,-1px); } 100% { transform: rotate(-10deg) translate(0,0); } }

.scn-angiers-dowry-scruple { background: linear-gradient(180deg, #a08060 0%, #806040 40%, #604020 100%), radial-gradient(ellipse at 50% 100%, #806040 0%, transparent 70%); }
.scn-angiers-dowry-scruple .floor     { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 20% 60% 0 0 / 40% 50% 0 0; box-shadow: inset 0 10px 20px rgba(0,0,0,.5); animation: ads-floor 20s ease-in-out infinite alternate; }
.scn-angiers-dowry-scruple .throne    { position:absolute; bottom:35%; left:20%; width:50px; height:70px; background: linear-gradient(180deg, #7a5a3a 0%, #4a2a1a 100%); border-radius: 20% 20% 10% 10%; box-shadow: 0 6px 12px rgba(0,0,0,.5); transform: perspective(300px) rotateY(-10deg); animation: ads-throne 9s ease-in-out infinite; }
.scn-angiers-dowry-scruple .king      { position:absolute; bottom:30%; left:22%; width:22px; 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: ads-king 6s ease-in-out infinite; }
.scn-angiers-dowry-scruple .noble     { position:absolute; bottom:28%; right:18%; width:20px; height:50px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ads-noble 5s ease-in-out infinite 1s; }
.scn-angiers-dowry-scruple .parchment { position:absolute; bottom:40%; left:45%; width:40px; height:30px; background: linear-gradient(135deg, #e8d8b8 0%, #c8b898 100%); border-radius: 4% 4% 8% 8%; transform: rotate(-12deg); box-shadow: 0 2px 6px rgba(0,0,0,.3); animation: ads-parchment 12s ease-in-out infinite alternate; }
.scn-angiers-dowry-scruple .coin-bag  { position:absolute; bottom:36%; left:60%; width:30px; height:20px; background: linear-gradient(180deg, #9a7a5a 0%, #6a4a2a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; box-shadow: 0 2px 4px rgba(0,0,0,.4); animation: ads-coin-bag 4s ease-in-out infinite; }
.scn-angiers-dowry-scruple .shadow    { position:absolute; inset:0; background: radial-gradient(ellipse at 50% 60%, rgba(0,0,0,0) 0%, rgba(0,0,0,0.3) 60%, rgba(0,0,0,0.6) 100%); animation: ads-shadow 18s ease-in-out infinite alternate; }
@keyframes ads-floor  { 0% { transform: translateY(0) } 50% { transform: translateY(-3px) } 100% { transform: translateY(0) } }
@keyframes ads-throne { 0%,100% { transform: perspective(300px) rotateY(-10deg) } 50% { transform: perspective(300px) rotateY(-8deg) translateY(-2px) } }
@keyframes ads-king   { 0% { transform: translateY(0) rotate(0deg) } 25% { transform: translateY(-1px) rotate(-2deg) } 50% { transform: translateY(0) rotate(0deg) } 75% { transform: translateY(-1px) rotate(2deg) } 100% { transform: translateY(0) rotate(0deg) } }
@keyframes ads-noble  { 0% { transform: translateX(0) translateY(0) rotate(1deg) } 33% { transform: translateX(-6px) translateY(-2px) rotate(-2deg) } 66% { transform: translateX(-12px) translateY(0) rotate(1deg) } 100% { transform: translateX(-18px) translateY(0) rotate(0deg) } }
@keyframes ads-parchment { 0% { transform: rotate(-12deg) translateY(0) } 50% { transform: rotate(-10deg) translateY(-3px) } 100% { transform: rotate(-12deg) translateY(0) } }
@keyframes ads-coin-bag { 0%,100% { transform: scale(1) translateY(0) } 50% { transform: scale(1.08) translateY(-2px) } }
@keyframes ads-shadow  { 0% { opacity:.6 } 50% { opacity:.85 } 100% { opacity:.6 } }

.scn-angiers-margaret-uncertain { background: linear-gradient(180deg, #c8d8e8 0%, #a8c0d0 40%, #88a8b8 100%), radial-gradient(ellipse at 50% 80%, #a8c0d0 0%, transparent 70%); }
.scn-angiers-margaret-uncertain .sky     { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #d0e0f0 0%, #b0c8d8 100%); animation: amu-sky 15s ease-in-out infinite alternate; }
.scn-angiers-margaret-uncertain .balcony{ position:absolute; bottom:25%; left:30%; right:30%; height:40px; background: linear-gradient(180deg, #8a7a6a 0%, #6a5a4a 100%); border-radius: 10% 10% 4% 4%; box-shadow: 0 -4px 8px rgba(0,0,0,.2); animation: amu-balcony 12s ease-in-out infinite alternate; }
.scn-angiers-margaret-uncertain .figure { position:absolute; bottom:32%; left:45%; width:18px; height:48px; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: amu-figure 7s ease-in-out infinite; }
.scn-angiers-margaret-uncertain .dove   { position:absolute; top:15%; right:20%; width:16px; height:12px; background: radial-gradient(ellipse at 50% 40%, #e8e0d0 0%, #d0c8b8 100%); border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%; clip-path: polygon(0% 50%, 30% 0%, 70% 50%, 100% 20%, 80% 80%, 50% 100%, 20% 80%); filter: blur(0.5px); animation: amu-dove 20s linear infinite; }
.scn-angiers-margaret-uncertain .flower { position:absolute; bottom:30%; left:35%; width:10px; height:6px; background: radial-gradient(circle, #e0b0a0 0%, #c89080 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; box-shadow: 0 0 6px rgba(200,144,128,.5); animation: amu-flower 4s ease-in-out infinite alternate; }
.scn-angiers-margaret-uncertain .curtain{ position:absolute; top:0; left:15%; width:30px; height:100%; background: linear-gradient(180deg, rgba(200,180,160,.6) 0%, rgba(160,140,120,.4) 100%); border-radius: 0 20% 20% 0; transform-origin: top left; animation: amu-curtain 8s ease-in-out infinite alternate; }
.scn-angiers-margaret-uncertain .sunbeam{ position:absolute; top:0; left:50%; width:8px; height:100%; background: linear-gradient(180deg, rgba(255,255,200,.3) 0%, rgba(255,255,200,0) 100%); transform: rotate(10deg); filter: blur(2px); animation: amu-sunbeam 6s ease-in-out infinite alternate; }
@keyframes amu-sky    { 0% { opacity:.85 } 50% { opacity:1 } 100% { opacity:.9 } }
@keyframes amu-balcony{ 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes amu-figure { 0% { transform: translateY(0) rotate(0deg) } 30% { transform: translateY(-2px) rotate(-3deg) } 60% { transform: translateY(0) rotate(1deg) } 100% { transform: translateY(0) rotate(0deg) } }
@keyframes amu-dove   { 0% { transform: translateX(0) translateY(0) scale(1); opacity:0 } 10% { opacity:1 } 90% { opacity:1 } 100% { transform: translateX(-100vw) translateY(-5px) scale(.8); opacity:0 } }
@keyframes amu-flower { 0% { transform: scale(1) rotate(0deg) } 50% { transform: scale(1.2) rotate(15deg) } 100% { transform: scale(1) rotate(0deg) } }
@keyframes amu-curtain{ 0% { transform: rotate(0deg) scaleX(1) } 50% { transform: rotate(3deg) scaleX(1.05) } 100% { transform: rotate(0deg) scaleX(1) } }
@keyframes amu-sunbeam{ 0% { transform: rotate(10deg) translateX(0); opacity:.3 } 50% { transform: rotate(12deg) translateX(10px); opacity:.5 } 100% { transform: rotate(10deg) translateX(0); opacity:.3 } }

/* scene 1 */
.scn-parliament-gloucester-winchester {
  background: linear-gradient(180deg, #e8dcc8 0%, #d4c4a8 40%, #b8a88c 100%), radial-gradient(ellipse at 30% 20%, #fff8e8 0%, transparent 60%);
}
.scn-parliament-gloucester-winchester .wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(90deg, #d4c4a8 0%, #e8dcc8 30%, #d4c4a8 70%, #c8b898 100%);
  animation: pgw-wall 12s ease-in-out infinite alternate;
}
.scn-parliament-gloucester-winchester .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #8a7a6a 0%, #6a5a4a 100%);
  box-shadow: inset 0 20px 30px rgba(0,0,0,0.3);
}
.scn-parliament-gloucester-winchester .pillar-left {
  position: absolute; bottom: 30%; left: 8%; width: 6%; height: 70%;
  background: linear-gradient(90deg, #c8b898 0%, #e0d0b8 50%, #c8b898 100%);
  border-radius: 4px; box-shadow: 2px 0 8px rgba(0,0,0,0.2);
}
.scn-parliament-gloucester-winchester .pillar-right {
  position: absolute; bottom: 30%; right: 8%; width: 6%; height: 70%;
  background: linear-gradient(90deg, #c8b898 0%, #e0d0b8 50%, #c8b898 100%);
  border-radius: 4px; box-shadow: -2px 0 8px rgba(0,0,0,0.2);
}
.scn-parliament-gloucester-winchester .throne {
  position: absolute; bottom: 30%; left: 50%; width: 16%; height: 40%;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #a08060 0%, #705040 100%);
  border-radius: 6px 6px 4px 4px;
  box-shadow: 0 8px 16px rgba(0,0,0,0.4), inset 0 2px 4px rgba(255,255,240,0.3);
  animation: pgw-throne 6s ease-in-out infinite alternate;
}
.scn-parliament-gloucester-winchester .figure-king {
  position: absolute; bottom: 30%; left: 50%; width: 10%; height: 38%;
  transform: translateX(-50%) scale(0.95);
  background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 70%, #3a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.3);
  animation: pgw-king 8s ease-in-out infinite;
}
.scn-parliament-gloucester-winchester .figure-gloucester {
  position: absolute; bottom: 30%; left: 30%; width: 8%; height: 32%;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pgw-gloucester 4s ease-in-out infinite;
}
.scn-parliament-gloucester-winchester .figure-winchester {
  position: absolute; bottom: 30%; right: 30%; width: 8%; height: 32%;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pgw-winchester 4s ease-in-out infinite 1s;
}
.scn-parliament-gloucester-winchester .torn-paper {
  position: absolute; top: 35%; left: 38%; width: 12%; height: 8%;
  background: #e8dcc8;
  border-radius: 2px;
  box-shadow: 0 2px 6px rgba(0,0,0,0.3);
  clip-path: polygon(0% 0%, 80% 0%, 100% 30%, 90% 100%, 10% 100%, 0% 70%);
  animation: pgw-paper 3s ease-in-out infinite alternate;
}
@keyframes pgw-wall { 0% { opacity: 0.85; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes pgw-throne { 0% { transform: translateX(-50%) scale(1); } 50% { transform: translateX(-50%) scale(1.02) rotate(-1deg); } 100% { transform: translateX(-50%) scale(1); } }
@keyframes pgw-king { 0%,100% { transform: translateX(-50%) scale(0.95); } 50% { transform: translateX(-50%) scale(0.97) rotate(2deg); } }
@keyframes pgw-gloucester { 0% { transform: translateX(0) rotate(-2deg); } 25% { transform: translateX(4px) rotate(0deg); } 50% { transform: translateX(8px) rotate(2deg); } 75% { transform: translateX(4px) rotate(0deg); } 100% { transform: translateX(0) rotate(-2deg); } }
@keyframes pgw-winchester { 0% { transform: translateX(0) rotate(2deg); } 25% { transform: translateX(-4px) rotate(0deg); } 50% { transform: translateX(-8px) rotate(-2deg); } 75% { transform: translateX(-4px) rotate(0deg); } 100% { transform: translateX(0) rotate(2deg); } }
@keyframes pgw-paper { 0% { transform: translate(0,0) rotate(0deg); } 50% { transform: translate(3px,-4px) rotate(15deg); } 100% { transform: translate(2px,2px) rotate(-5deg); } }

/* scene 2 */
.scn-winchester-bishop-accuses {
  background: linear-gradient(180deg, #e0ceb8 0%, #c8b89c 40%, #a89878 100%), radial-gradient(ellipse at 50% 30%, #fff4e0 0%, transparent 70%);
}
.scn-winchester-bishop-accuses .wall {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(90deg, #c8b89c, #ddd0b8, #c8b89c);
  animation: wba-wall 10s ease-in-out infinite alternate;
}
.scn-winchester-bishop-accuses .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(180deg, #7a6a5a, #5a4a3a);
  box-shadow: inset 0 15px 25px rgba(0,0,0,0.4);
}
.scn-winchester-bishop-accuses .pulpit {
  position: absolute; bottom: 25%; left: 50%; width: 10%; height: 45%;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #8a6a4a 0%, #5a3a2a 100%);
  border-radius: 4px 4px 2px 2px;
  box-shadow: 0 6px 12px rgba(0,0,0,0.5);
  animation: wba-pulpit 9s ease-in-out infinite;
}
.scn-winchester-bishop-accuses .figure-bishop {
  position: absolute; bottom: 25%; left: 42%; width: 8%; height: 40%;
  background: linear-gradient(180deg, #5a3a2a 0%, #3a2a1a 70%, #2a1a0a 100%);
  border-radius: 40% 40% 35% 35% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: wba-bishop 4s ease-in-out infinite;
}
.scn-winchester-bishop-accuses .figure-gloucester {
  position: absolute; bottom: 25%; right: 28%; width: 8%; height: 32%;
  background: linear-gradient(180deg, #4a3a2a, #2a1a0a);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: wba-gloucester 3.5s ease-in-out infinite 0.5s;
}
.scn-winchester-bishop-accuses .candle-left {
  position: absolute; bottom: 45%; left: 20%; width: 2%; height: 15%;
  background: linear-gradient(180deg, #e8dcc8 0%, #c8b898 100%);
  border-radius: 4px; box-shadow: 0 0 8px 4px #ffd080;
  animation: wba-candle 2s ease-in-out infinite alternate;
}
.scn-winchester-bishop-accuses .candle-right {
  position: absolute; bottom: 45%; right: 20%; width: 2%; height: 15%;
  background: linear-gradient(180deg, #e8dcc8 0%, #c8b898 100%);
  border-radius: 4px; box-shadow: 0 0 8px 4px #ffd080;
  animation: wba-candle 2s ease-in-out infinite alternate-reverse;
}
.scn-winchester-bishop-accuses .shadow-figure {
  position: absolute; bottom: 25%; left: 60%; width: 6%; height: 28%;
  background: rgba(0,0,0,0.25);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  filter: blur(4px);
  animation: wba-shadow 5s ease-in-out infinite;
}
@keyframes wba-wall { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.85; } }
@keyframes wba-pulpit { 0% { transform: translateX(-50%) scaleY(1); } 50% { transform: translateX(-50%) scaleY(1.02); } 100% { transform: translateX(-50%) scaleY(1); } }
@keyframes wba-bishop { 0% { transform: translateX(0) rotate(1deg); } 33% { transform: translateX(5px) rotate(-2deg); } 66% { transform: translateX(-3px) rotate(3deg); } 100% { transform: translateX(0) rotate(1deg); } }
@keyframes wba-gloucester { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(-8px) rotate(-3deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes wba-candle { 0% { transform: scaleY(1) scaleX(1); opacity: 0.8; } 50% { transform: scaleY(1.1) scaleX(0.9); opacity: 1; } 100% { transform: scaleY(0.95) scaleX(1.05); opacity: 0.9; } }
@keyframes wba-shadow { 0% { transform: translateX(0); opacity: 0.3; } 50% { transform: translateX(5px); opacity: 0.5; } 100% { transform: translateX(-3px); opacity: 0.3; } }

/* scene 3 */
.scn-gloucester-accuses-bishop {
  background: linear-gradient(180deg, #dcccb0 0%, #c0b090 40%, #a09070 100%), radial-gradient(ellipse at 60% 30%, #fff0d0 0%, transparent 60%);
}
.scn-gloucester-accuses-bishop .wall {
  position: absolute; inset: 0 0 28% 0;
  background: linear-gradient(135deg, #c0b090, #e0d0b8, #c0b090);
  animation: gab-wall 14s ease-in-out infinite alternate;
}
.scn-gloucester-accuses-bishop .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 28%;
  background: linear-gradient(180deg, #7a6a5a, #5a4a3a);
  box-shadow: inset 0 18px 28px rgba(0,0,0,0.3);
}
.scn-gloucester-accuses-bishop .table {
  position: absolute; bottom: 28%; left: 50%; width: 30%; height: 12%;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #6a5a4a, #4a3a2a);
  border-radius: 6px;
  box-shadow: 0 6px 12px rgba(0,0,0,0.5);
  animation: gab-table 7s ease-in-out infinite alternate;
}
.scn-gloucester-accuses-bishop .figure-gloucester {
  position: absolute; bottom: 28%; left: 30%; width: 10%; height: 38%;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 70%, #2a1a0a 100%);
  border-radius: 40% 40% 35% 35% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: gab-gloucester 5s ease-in-out infinite;
}
.scn-gloucester-accuses-bishop .figure-bishop {
  position: absolute; bottom: 28%; right: 30%; width: 10%; height: 38%;
  background: linear-gradient(180deg, #5a3a2a 0%, #3a2a1a 70%, #2a1a0a 100%);
  border-radius: 40% 40% 35% 35% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: gab-bishop 5s ease-in-out infinite 2s;
}
.scn-gloucester-accuses-bishop .figure-suffolk {
  position: absolute; bottom: 28%; left: 55%; width: 8%; height: 30%;
  background: linear-gradient(180deg, #4a3a2a, #2a1a0a);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: gab-suffolk 4s ease-in-out infinite 1s;
}
.scn-gloucester-accuses-bishop .banner {
  position: absolute; top: 15%; right: 15%; width: 12%; height: 25%;
  background: linear-gradient(180deg, #a08060 0%, #806040 100%);
  clip-path: polygon(0% 0%, 100% 0%, 80% 50%, 100% 100%, 0% 100%);
  box-shadow: -2px 0 6px rgba(0,0,0,0.3);
  animation: gab-banner 10s ease-in-out infinite alternate;
}
.scn-gloucester-accuses-bishop .light-ray {
  position: absolute; top: 0; left: 40%; width: 20%; height: 100%;
  background: linear-gradient(180deg, rgba(255,240,200,0.3) 0%, transparent 60%);
  clip-path: polygon(20% 0%, 80% 0%, 60% 100%, 40% 100%);
  animation: gab-ray 8s ease-in-out infinite alternate;
}
@keyframes gab-wall { 0% { opacity: 0.85; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes gab-table { 0% { transform: translateX(-50%) scaleX(1); } 50% { transform: translateX(-50%) scaleX(1.03); } 100% { transform: translateX(-50%) scaleX(0.98); } }
@keyframes gab-gloucester { 0% { transform: translateX(0) rotate(-3deg); } 33% { transform: translateX(8px) rotate(1deg); } 66% { transform: translateX(-4px) rotate(-1deg); } 100% { transform: translateX(0) rotate(-3deg); } }
@keyframes gab-bishop { 0% { transform: translateX(0) rotate(3deg); } 33% { transform: translateX(-8px) rotate(-1deg); } 66% { transform: translateX(4px) rotate(1deg); } 100% { transform: translateX(0) rotate(3deg); } }
@keyframes gab-suffolk { 0%,100% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(6px) rotate(2deg); } }
@keyframes gab-banner { 0% { transform: scaleY(1); } 50% { transform: scaleY(1.05) rotate(2deg); } 100% { transform: scaleY(0.95) rotate(-2deg); } }
@keyframes gab-ray { 0% { opacity: 0.3; transform: translateX(0); } 50% { opacity: 0.6; transform: translateX(10px); } 100% { opacity: 0.4; transform: translateX(-10px); } }

/* scene 4 */
.scn-bishop-defends {
  background: linear-gradient(180deg, #e0ceb8 0%, #c8b89c 40%, #a89878 100%), radial-gradient(ellipse at 40% 40%, #fff4e0 0%, transparent 60%);
}
.scn-bishop-defends .wall {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(90deg, #c8b89c, #ddd0b8, #c8b89c);
  animation: bde-wall 12s ease-in-out infinite alternate;
}
.scn-bishop-defends .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(180deg, #7a6a5a, #5a4a3a);
  box-shadow: inset 0 15px 25px rgba(0,0,0,0.4);
}
.scn-bishop-defends .arch {
  position: absolute; bottom: 25%; left: 50%; width: 30%; height: 60%;
  transform: translateX(-50%);
  background: radial-gradient(ellipse at 50% 0%, transparent 60%, #a89878 60%);
  clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);
  opacity: 0.2;
  animation: bde-arch 15s ease-in-out infinite;
}
.scn-bishop-defends .figure-bishop {
  position: absolute; bottom: 25%; left: 40%; width: 10%; height: 42%;
  background: linear-gradient(180deg, #5a3a2a 0%, #3a2a1a 70%, #2a1a0a 100%);
  border-radius: 40% 40% 35% 35% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bde-bishop 5s ease-in-out infinite;
}
.scn-bishop-defends .figure-exeter {
  position: absolute; bottom: 25%; right: 25%; width: 8%; height: 30%;
  background: linear-gradient(180deg, #4a3a2a, #2a1a0a);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bde-exeter 4.5s ease-in-out infinite 1s;
}
.scn-bishop-defends .figure-warwick {
  position: absolute; bottom: 25%; left: 60%; width: 8%; height: 30%;
  background: linear-gradient(180deg, #4a3a2a, #2a1a0a);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bde-warwick 4.5s ease-in-out infinite 2s;
}
.scn-bishop-defends .candle-center {
  position: absolute; bottom: 40%; left: 50%; width: 3%; height: 18%;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #e8dcc8 0%, #c8b898 100%);
  border-radius: 6px; box-shadow: 0 0 12px 6px #ffd080;
  animation: bde-candle 2.5s ease-in-out infinite alternate;
}
.scn-bishop-defends .scroll {
  position: absolute; bottom: 40%; left: 45%; width: 8%; height: 6%;
  background: #e0d0b8;
  border-radius: 2px;
  box-shadow: 0 2px 6px rgba(0,0,0,0.3);
  transform: rotate(-10deg);
  animation: bde-scroll 6s ease-in-out infinite alternate;
}
@keyframes bde-wall { 0% { opacity: 0.85; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes bde-arch { 0% { opacity: 0.15; transform: translateX(-50%) scaleY(0.95); } 50% { opacity: 0.25; transform: translateX(-50%) scaleY(1.05); } 100% { opacity: 0.2; transform: translateX(-50%) scaleY(1); } }
@keyframes bde-bishop { 0% { transform: translateX(0) rotate(0deg); } 33% { transform: translateX(4px) rotate(2deg); } 66% { transform: translateX(-4px) rotate(-2deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes bde-exeter { 0%,100% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(-6px) rotate(3deg); } }
@keyframes bde-warwick { 0%,100% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(6px) rotate(-3deg); } }
@keyframes bde-candle { 0% { transform: translateX(-50%) scaleY(1) scaleX(1); opacity: 0.9; } 50% { transform: translateX(-50%) scaleY(1.15) scaleX(0.85); opacity: 1; } 100% { transform: translateX(-50%) scaleY(0.95) scaleX(1.05); opacity: 0.85; } }
@keyframes bde-scroll { 0% { transform: rotate(-10deg) translateX(0); } 50% { transform: rotate(-5deg) translateX(3px); } 100% { transform: rotate(-15deg) translateX(-2px); } }

/* Scene: orleans-town-morning (calm, dawn) */
.scn-orleans-town-morning {
  background: linear-gradient(180deg, #f5d2a0 0%, #fce4b8 30%, #c8d8e8 60%, #a0b8d0 100%), radial-gradient(ellipse at 60% 20%, #ffe0a0 0%, transparent 60%);
}
.scn-orleans-town-morning .sky-glow { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #ffd080 0%, #fce4b8 30%, transparent 100%); animation: otm-skyglow 15s ease-in-out infinite alternate; }
.scn-orleans-town-morning .horizon { position:absolute; bottom:50%; left:0; right:0; height:12px; background: linear-gradient(180deg, #f0c080 0%, #d0a060 100%); border-radius: 50% 50% 0 0 / 100% 100% 0 0; filter: blur(2px); box-shadow: 0 -4px 20px #ffd080; animation: otm-horizon 10s ease-in-out infinite alternate; }
.scn-orleans-town-morning .town-silhouette { position:absolute; bottom:30%; left:5%; right:5%; height:20%; background: linear-gradient(180deg, #3a3a5a 0%, #2a2a3a 100%); border-radius: 30% 40% 0 0; box-shadow: inset 0 8px 12px rgba(0,0,0,0.4); animation: otm-town 20s ease-in-out infinite alternate; }
.scn-orleans-town-morning .church-spire { position:absolute; bottom:35%; left:50%; width:20px; height:40px; transform:translateX(-50%); background: linear-gradient(180deg, #3a3a5a 0%, #2a2a3a 100%); clip-path: polygon(20% 100%, 80% 100%, 60% 0%, 40% 0%); animation: otm-spire 25s ease-in-out infinite alternate; }
.scn-orleans-town-morning .tree { position:absolute; bottom:30%; left:20%; width:40px; height:50px; background: radial-gradient(ellipse at 50% 40%, #5a6a3a 0%, #3a4a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; box-shadow: 0 4px 8px rgba(0,0,0,0.3); animation: otm-tree 12s ease-in-out infinite alternate; transform-origin: bottom center; }
.scn-orleans-town-morning .road { position:absolute; bottom:20%; left:30%; right:30%; height:10%; background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%); border-radius: 40% 40% 0 0; box-shadow: 0 -2px 6px rgba(0,0,0,0.3); animation: otm-road 30s linear infinite alternate; }
.scn-orleans-town-morning .bird-1 { position:absolute; top:15%; left:30%; width:12px; height:8px; background: #2a2a3a; border-radius: 50% 50% 20% 20%; filter: blur(1px); animation: otm-bird1 18s ease-in-out infinite; }
.scn-orleans-town-morning .bird-2 { position:absolute; top:18%; left:60%; width:10px; height:6px; background: #2a2a3a; border-radius: 50% 50% 20% 20%; filter: blur(1px); animation: otm-bird2 22s ease-in-out infinite 5s; }
@keyframes otm-skyglow { 0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.6; } }
@keyframes otm-horizon { 0% { height:10px; filter:blur(1px); } 50% { height:14px; filter:blur(3px); } 100% { height:10px; filter:blur(2px); } }
@keyframes otm-town { 0% { transform:translateY(0px); } 50% { transform:translateY(-2px); } 100% { transform:translateY(0px); } }
@keyframes otm-spire { 0% { transform:translateX(-50%) rotate(0deg); } 50% { transform:translateX(-50%) rotate(0.5deg); } 100% { transform:translateX(-50%) rotate(0deg); } }
@keyframes otm-tree { 0% { transform:rotate(-1deg); } 50% { transform:rotate(1.5deg) scale(1.02); } 100% { transform:rotate(-1deg); } }
@keyframes otm-road { 0% { width:40%; left:30%; } 50% { width:44%; left:28%; } 100% { width:38%; left:31%; } }
@keyframes otm-bird1 { 0% { transform:translateX(0) translateY(0); } 25% { transform:translateX(30px) translateY(-5px); } 50% { transform:translateX(60px) translateY(5px); } 75% { transform:translateX(90px) translateY(-3px); } 100% { transform:translateX(120px) translateY(0); } }
@keyframes otm-bird2 { 0% { transform:translateX(0) translateY(0); } 33% { transform:translateX(-40px) translateY(8px); } 66% { transform:translateX(-80px) translateY(-2px); } 100% { transform:translateX(-120px) translateY(0); } }

/* Scene: auvergne-castle-plot (determined, dim interior) */
.scn-auvergne-castle-plot {
  background: linear-gradient(180deg, #2a2020 0%, #3a2828 40%, #4a3030 100%), radial-gradient(ellipse at 50% 100%, #5a3a2a 0%, transparent 70%);
}
.scn-auvergne-castle-plot .wall-left { position:absolute; top:0; left:0; width:25%; height:100%; background: linear-gradient(90deg, #3a2a2a 0%, #4a3838 50%, #3a2a2a 100%); box-shadow: inset -4px 0 8px rgba(0,0,0,0.5); animation: acp-wallleft 12s ease-in-out infinite alternate; }
.scn-auvergne-castle-plot .wall-right { position:absolute; top:0; right:0; width:25%; height:100%; background: linear-gradient(270deg, #3a2a2a 0%, #4a3838 50%, #3a2a2a 100%); box-shadow: inset 4px 0 8px rgba(0,0,0,0.5); animation: acp-wallright 12s ease-in-out infinite alternate-reverse; }
.scn-auvergne-castle-plot .floor { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #3a3028 0%, #2a1a18 100%); box-shadow: inset 0 12px 20px rgba(0,0,0,0.7); }
.scn-auvergne-castle-plot .doorway { position:absolute; bottom:30%; left:50%; width:80px; height:70px; transform:translateX(-50%); background: radial-gradient(ellipse at 50% 60%, #1a1a1a 0%, #0a0a0a 100%); border-radius: 30% 30% 10% 10%; box-shadow: inset 0 0 20px #000; border: 4px solid #4a3020; animation: acp-door 8s ease-in-out infinite alternate; }
.scn-auvergne-castle-plot .torch { position:absolute; bottom:55%; left:45%; width:12px; height:18px; background: radial-gradient(circle at 50% 30%, #ffa040 0%, #c06020 60%, #3a2010 100%); border-radius: 50% 50% 20% 20%; box-shadow: 0 0 30px 8px #ffa040, 0 0 60px 16px rgba(255,160,64,0.3); animation: acp-torch 0.5s ease-in-out infinite alternate; }
.scn-auvergne-castle-plot .figure-countess { position:absolute; bottom:25%; left:38%; width:22px; height:50px; background: linear-gradient(180deg, #5a4040 0%, #3a2828 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; box-shadow: 0 4px 8px rgba(0,0,0,0.6); animation: acp-figure 6s ease-in-out infinite alternate; }
.scn-auvergne-castle-plot .table-keys { position:absolute; bottom:22%; left:55%; width:30px; height:14px; background: linear-gradient(180deg, #6a4a3a 0%, #4a2a1a 100%); border-radius: 4px 4px 8px 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.5); animation: acp-table 10s ease-in-out infinite alternate; }
.scn-auvergne-castle-plot .dust-1 { position:absolute; top:20%; left:30%; width:6px; height:6px; background: rgba(100,80,60,0.3); border-radius: 50%; filter: blur(2px); animation: acp-dust1 15s linear infinite; }
.scn-auvergne-castle-plot .dust-2 { position:absolute; top:35%; left:70%; width:4px; height:4px; background: rgba(100,80,60,0.25); border-radius: 50%; filter: blur(2px); animation: acp-dust2 20s linear infinite 5s; }
@keyframes acp-wallleft { 0% { opacity:0.9; } 50% { opacity:1; } 100% { opacity:0.8; } }
@keyframes acp-wallright { 0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.9; } }
@keyframes acp-door { 0% { transform:translateX(-50%) scaleY(1); } 50% { transform:translateX(-50%) scaleY(0.98); } 100% { transform:translateX(-50%) scaleY(1); } }
@keyframes acp-torch { 0% { box-shadow:0 0 25px 6px #ffa040,0 0 50px 12px rgba(255,160,64,0.3); opacity:0.8; } 50% { box-shadow:0 0 35px 10px #ffb050,0 0 70px 20px rgba(255,160,64,0.45); opacity:1; } 100% { box-shadow:0 0 20px 4px #ff9020,0 0 40px 8px rgba(255,160,64,0.25); opacity:0.7; } }
@keyframes acp-figure { 0% { transform:rotate(-1deg) translateY(0); } 50% { transform:rotate(2deg) translateY(-2px); } 100% { transform:rotate(-1deg) translateY(0); } }
@keyframes acp-table { 0% { transform:translateY(0); } 50% { transform:translateY(-1px); } 100% { transform:translateY(0); } }
@keyframes acp-dust1 { 0% { transform:translateY(0) translateX(0) scale(1); opacity:0; } 10% { opacity:1; } 90% { opacity:1; } 100% { transform:translateY(-200px) translateX(30px) scale(0.5); opacity:0; } }
@keyframes acp-dust2 { 0% { transform:translateY(0) translateX(0) scale(1); opacity:0; } 10% { opacity:1; } 90% { opacity:1; } 100% { transform:translateY(-150px) translateX(-40px) scale(0.5); opacity:0; } }

/* Scene: talbot-reveals-substance (tense, bright interior) */
.scn-talbot-reveals-substance {
  background: linear-gradient(180deg, #e8dcc8 0%, #d4c8b0 40%, #b8a890 100%), radial-gradient(ellipse at 70% 30%, #fff0d0 0%, transparent 60%);
}
.scn-talbot-reveals-substance .wall-bg { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #c4b8a0 0%, #a89880 100%); box-shadow: inset 0 20px 40px rgba(0,0,0,0.2); }
.scn-talbot-reveals-substance .picture-frame { position:absolute; top:10%; left:65%; width:60px; height:80px; border: 6px solid #7a5a3a; background: linear-gradient(180deg, #5a3a2a 0%, #3a2a1a 100%); border-radius: 4px; box-shadow: 0 8px 16px rgba(0,0,0,0.5); animation: trs-frame 4s ease-in-out infinite alternate; }
.scn-talbot-reveals-substance .window-light { position:absolute; bottom:35%; left:10%; width:40px; height:60px; background: radial-gradient(ellipse at 50% 50%, #fff8e0 0%, #e8dcc0 70%, transparent 100%); border-radius: 10% 10% 20% 20%; box-shadow: 0 0 20px 10px rgba(255,248,224,0.4), 0 0 40px 20px rgba(255,248,224,0.2); animation: trs-window 5s ease-in-out infinite alternate; }
.scn-talbot-reveals-substance .figure-talbot { position:absolute; bottom:20%; left:30%; width:28px; height:60px; background: linear-gradient(180deg, #4a4a5a 0%, #2a2a3a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; box-shadow: 0 4px 8px rgba(0,0,0,0.4); animation: trs-talbot 3s ease-in-out infinite alternate; }
.scn-talbot-reveals-substance .chains { position:absolute; bottom:22%; left:32%; width:20px; height:30px; background: linear-gradient(180deg, #6a6a6a 0%, #4a4a4a 100%); border-radius: 10% 10% 40% 40%; box-shadow: inset 0 2px 4px #888; animation: trs-chains 1.5s ease-in-out infinite alternate; }
.scn-talbot-reveals-substance .figure-lord { position:absolute; bottom:20%; left:55%; width:26px; height:60px; background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; box-shadow: 0 4px 8px rgba(0,0,0,0.4); animation: trs-lord 4s ease-in-out infinite alternate; }
.scn-talbot-reveals-substance .shadow-on-wall { position:absolute; bottom:20%; left:25%; width:30px; height:80px; background: rgba(0,0,0,0.15); filter: blur(6px); border-radius: 40% 40% 0 0; transform: skewX(-10deg); animation: trs-shadow 6s ease-in-out infinite alternate; }
@keyframes trs-frame { 0% { transform:rotate(0deg); box-shadow:0 8px 16px rgba(0,0,0,0.5); } 50% { transform:rotate(1deg); box-shadow:0 10px 20px rgba(0,0,0,0.6); } 100% { transform:rotate(-1deg); box-shadow:0 6px 12px rgba(0,0,0,0.4); } }
@keyframes trs-window { 0% { opacity:0.8; } 50% { opacity:1; transform:scale(1.05); } 100% { opacity:0.7; } }
@keyframes trs-talbot { 0% { transform:rotate(0deg) translateY(0); } 50% { transform:rotate(1deg) translateY(-2px); } 100% { transform:rotate(-1deg) translateY(0); } }
@keyframes trs-chains { 0% { transform:translateY(0) rotate(0deg); } 50% { transform:translateY(2px) rotate(2deg); } 100% { transform:translateY(0) rotate(-2deg); } }
@keyframes trs-lord { 0% { transform:rotate(0deg) translateY(0); } 50% { transform:rotate(-2deg) translateY(-1px); } 100% { transform:rotate(1deg) translateY(0); } }
@keyframes trs-shadow { 0% { opacity:0.2; transform:skewX(-10deg) scaleY(1); } 50% { opacity:0.3; transform:skewX(-8deg) scaleY(1.05); } 100% { opacity:0.15; transform:skewX(-12deg) scaleY(0.95); } }

/* Scene: countess-mocks-shadow (funny, bright interior) */
.scn-countess-mocks-shadow {
  background: linear-gradient(180deg, #f5e8c8 0%, #eadcc0 50%, #d4c8a0 100%), radial-gradient(ellipse at 50% 30%, #fff8e0 0%, transparent 70%);
}
.scn-countess-mocks-shadow .room-bg { position:absolute; inset:0 0 25% 0; background: linear-gradient(180deg, #d8c8a8 0%, #b8a890 100%); box-shadow: inset 0 20px 40px rgba(0,0,0,0.1); }
.scn-countess-mocks-shadow .window { position:absolute; top:10%; right:15%; width:50px; height:70px; background: radial-gradient(ellipse at 50% 50%, #fff8e0 0%, #e0d4b8 70%, transparent 100%); border: 4px solid #8a7a5a; border-radius: 8px; box-shadow: 0 0 20px rgba(255,248,224,0.5); }
.scn-countess-mocks-shadow .figure-countess { position:absolute; bottom:20%; left:35%; width:30px; height:65px; background: linear-gradient(180deg, #b8a090 0%, #8a7060 100%); border-radius: 40% 40% 30% 30% / 70% 70% 30% 30%; transform-origin: bottom center; box-shadow: 0 4px 8px rgba(0,0,0,0.3); animation: cms-countess 2s ease-in-out infinite; }
.scn-countess-mocks-shadow .figure-talbot { position:absolute; bottom:20%; left:55%; width:28px; height:62px; background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; box-shadow: 0 4px 8px rgba(0,0,0,0.4); animation: cms-talbot 4s ease-in-out infinite alternate; }
.scn-countess-mocks-shadow .shadow-projected { position:absolute; bottom:20%; left:65%; width:40px; height:80px; background: rgba(0,0,0,0.12); filter: blur(8px); border-radius: 40% 40% 0 0; transform: skewX(-15deg); animation: cms-shadow 3s ease-in-out infinite alternate; }
.scn-countess-mocks-shadow .chair { position:absolute; bottom:18%; left:70%; width:20px; height:30px; background: linear-gradient(180deg, #6a4a3a 0%, #4a2a1a 100%); border-radius: 20% 20% 10% 10%; box-shadow: 0 2px 4px rgba(0,0,0,0.3); animation: cms-chair 8s ease-in-out infinite alternate; }
.scn-countess-mocks-shadow .lamp-glow { position:absolute; bottom:25%; left:30%; width:10px; height:12px; background: radial-gradient(circle at 50% 50%, #ffe080 0%, #c0a060 60%, transparent 100%); border-radius: 50%; box-shadow: 0 0 20px 6px #ffe080; animation: cms-lamp 1s ease-in-out infinite alternate; }
.scn-countess-mocks-shadow .particle-1 { position:absolute; top:30%; left:20%; width:4px; height:4px; background: rgba(255,224,128,0.4); border-radius: 50%; filter: blur(1px); animation: cms-p1 12s linear infinite; }
.scn-countess-mocks-shadow .particle-2 { position:absolute; top:20%; left:60%; width:3px; height:3px; background: rgba(255,224,128,0.3); border-radius: 50%; filter: blur(1px); animation: cms-p2 15s linear infinite 4s; }
@keyframes cms-countess { 0% { transform:rotate(-3deg) translateY(0) scaleY(1); } 25% { transform:rotate(5deg) translateY(-4px) scaleY(1.05); } 50% { transform:rotate(-2deg) translateY(-2px) scaleY(0.98); } 75% { transform:rotate(3deg) translateY(-5px) scaleY(1.02); } 100% { transform:rotate(-3deg) translateY(0) scaleY(1); } }
@keyframes cms-talbot { 0% { transform:rotate(0deg) translateY(0); } 50% { transform:rotate(-1deg) translateY(-1px); } 100% { transform:rotate(1deg) translateY(0); } }
@keyframes cms-shadow { 0% { transform:skewX(-15deg) scaleY(1); opacity:0.2; } 50% { transform:skewX(-10deg) scaleY(1.1); opacity:0.35; } 100% { transform:skewX(-20deg) scaleY(0.9); opacity:0.15; } }
@keyframes cms-chair { 0% { transform:translateY(0); } 50% { transform:translateY(1px); } 100% { transform:translateY(-1px); } }
@keyframes cms-lamp { 0% { box-shadow:0 0 15px 4px #ffe080; opacity:0.8; } 50% { box-shadow:0 0 25px 8px #ffe080; opacity:1; } 100% { box-shadow:0 0 18px 5px #ffe080; opacity:0.9; } }
@keyframes cms-p1 { 0% { transform:translateY(0) translateX(0) scale(1); opacity:0; } 10% { opacity:1; } 90% { opacity:1; } 100% { transform:translateY(-150px) translateX(30px) scale(0.5); opacity:0; } }
@keyframes cms-p2 { 0% { transform:translateY(0) translateX(0) scale(1); opacity:0; } 10% { opacity:1; } 90% { opacity:1; } 100% { transform:translateY(-180px) translateX(-20px) scale(0.5); opacity:0; } }

/* scene: court-king-rebuke (tense, bright interior) */
.scn-court-king-rebuke {
  background: linear-gradient(180deg, #f5e6d0 0%, #d4b896 50%, #a8836a 100%),
              radial-gradient(ellipse at 50% 30%, #f5e6d0 0%, transparent 70%);
}
.scn-court-king-rebuke .bg {
  position: absolute; inset: 0; background: linear-gradient(135deg, #e8d5b8 0%, #c9b091 100%);
  animation: cr-bg 8s ease-in-out infinite alternate;
}
.scn-court-king-rebuke .pillar-left {
  position: absolute; left: 8%; top: 0; width: 6%; height: 100%;
  background: linear-gradient(180deg, #b8a080 0%, #7a5f42 100%);
  border-radius: 4% / 2%; box-shadow: inset -4px 0 8px rgba(0,0,0,0.2);
  animation: cr-pillar 6s ease-in-out infinite alternate;
}
.scn-court-king-rebuke .pillar-right {
  position: absolute; right: 8%; top: 0; width: 6%; height: 100%;
  background: linear-gradient(180deg, #b8a080 0%, #7a5f42 100%);
  border-radius: 4% / 2%; box-shadow: inset 4px 0 8px rgba(0,0,0,0.2);
  animation: cr-pillar 6s ease-in-out infinite alternate-reverse;
}
.scn-court-king-rebuke .throne {
  position: absolute; bottom: 25%; left: 50%; transform: translateX(-50%);
  width: 120px; height: 180px;
  background: linear-gradient(180deg, #8a6e4a 0%, #5a3e2a 100%);
  border-radius: 10% / 20%; box-shadow: 0 8px 20px rgba(0,0,0,0.5);
  animation: cr-throne 4s ease-in-out infinite;
}
.scn-court-king-rebuke .king {
  position: absolute; bottom: 25%; left: 50%; transform: translateX(-60%);
  width: 40px; height: 120px;
  background: linear-gradient(180deg, #2a1a0a 0%, #1a0e04 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 2px 0 6px rgba(0,0,0,0.4);
  animation: cr-king-sway 3s ease-in-out infinite;
}
.scn-court-king-rebuke .vassal {
  position: absolute; bottom: 22%; left: 42%; transform: translateX(-50%);
  width: 30px; height: 80px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1e14 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: cr-vassal-cower 2.5s ease-in-out infinite;
}
.scn-court-king-rebuke .shadow {
  position: absolute; bottom: 0; left: 5%; right: 5%; height: 15%;
  background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,0.25) 100%);
  border-radius: 50%; filter: blur(8px);
  animation: cr-shadow-pulse 5s ease-in-out infinite;
}
.scn-court-king-rebuke .glint {
  position: absolute; top: 20%; left: 30%; width: 8px; height: 8px;
  background: radial-gradient(circle, #fff5e0 0%, transparent 70%);
  border-radius: 50%; box-shadow: 0 0 20px 6px rgba(255,245,224,0.6);
  animation: cr-glint 2s ease-in-out infinite alternate;
}
@keyframes cr-bg { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.85; } }
@keyframes cr-pillar { 0% { transform: scaleY(1); } 50% { transform: scaleY(1.02); } 100% { transform: scaleY(1); } }
@keyframes cr-throne { 0%, 100% { transform: translateX(-50%) translateY(0); } 50% { transform: translateX(-50%) translateY(-3px) rotate(-1deg); } }
@keyframes cr-king-sway { 0% { transform: translateX(-60%) rotate(-2deg); } 50% { transform: translateX(-60%) rotate(0deg) translateY(-1px); } 100% { transform: translateX(-60%) rotate(2deg); } }
@keyframes cr-vassal-cower { 0% { transform: translateX(-50%) scaleY(1); } 50% { transform: translateX(-50%) scaleY(0.95) translateY(2px); } 100% { transform: translateX(-50%) scaleY(1); } }
@keyframes cr-shadow-pulse { 0% { opacity: 0.6; } 50% { opacity: 1; } 100% { opacity: 0.7; } }
@keyframes cr-glint { 0% { opacity: 0.3; transform: scale(0.8); } 100% { opacity: 1; transform: scale(1.2); } }

/* scene: court-king-plea-peace (calm, bright interior) */
.scn-court-king-plea-peace {
  background: linear-gradient(180deg, #f0e5d0 0%, #dac9b5 50%, #b8a58c 100%),
              radial-gradient(ellipse at 50% 40%, #f8efdd 0%, transparent 70%);
}
.scn-court-king-plea-peace .bg {
  position: absolute; inset: 0; background: linear-gradient(135deg, #e8dac5 0%, #c8b59e 100%);
  animation: cp-bg 12s ease-in-out infinite alternate;
}
.scn-court-king-plea-peace .window-arch {
  position: absolute; top: 5%; left: 10%; right: 10%; height: 35%;
  background: linear-gradient(180deg, #d6c8b2 0%, #f0e5d0 50%, #d6c8b2 100%);
  border-radius: 80% 80% 20% 20% / 100% 100% 20% 20%;
  box-shadow: inset 0 0 30px rgba(255,245,224,0.3);
  animation: cp-window 15s ease-in-out infinite;
}
.scn-court-king-plea-peace .figure-left {
  position: absolute; bottom: 20%; left: 35%; width: 35px; height: 110px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a120a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cp-figure-left 8s ease-in-out infinite;
}
.scn-court-king-plea-peace .figure-right {
  position: absolute; bottom: 20%; right: 35%; width: 35px; height: 110px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a120a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cp-figure-right 8s ease-in-out infinite;
}
.scn-court-king-plea-peace .hands-clasped {
  position: absolute; bottom: 38%; left: 48%; width: 14px; height: 14px;
  background: radial-gradient(circle, #e0c8a0 0%, #8a6e4a 100%);
  border-radius: 50%; box-shadow: 0 0 10px 2px rgba(200,170,120,0.5);
  animation: cp-hands 6s ease-in-out infinite;
}
.scn-court-king-plea-peace .glow {
  position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
  width: 60px; height: 60px;
  background: radial-gradient(circle, rgba(255,245,200,0.4) 0%, transparent 70%);
  border-radius: 50%; filter: blur(15px);
  animation: cp-glow-pulse 4s ease-in-out infinite alternate;
}
.scn-court-king-plea-peace .candle {
  position: absolute; bottom: 10%; left: 15%; width: 6px; height: 20px;
  background: linear-gradient(180deg, #e8d0a0 0%, #8a6e3a 100%);
  border-radius: 10% / 20%; box-shadow: 0 0 12px 4px rgba(255,200,100,0.6);
  animation: cp-candle 3s ease-in-out infinite;
}
@keyframes cp-bg { 0% { opacity: 0.92; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes cp-window { 0% { transform: scaleY(1); } 50% { transform: scaleY(1.02); } 100% { transform: scaleY(1); } }
@keyframes cp-figure-left { 0% { transform: translateX(0) rotate(-1deg); } 50% { transform: translateX(5px) rotate(1deg) translateY(-1px); } 100% { transform: translateX(0) rotate(-1deg); } }
@keyframes cp-figure-right { 0% { transform: translateX(0) rotate(1deg); } 50% { transform: translateX(-5px) rotate(-1deg) translateY(-1px); } 100% { transform: translateX(0) rotate(1deg); } }
@keyframes cp-hands { 0% { transform: scale(1); } 50% { transform: scale(1.1); } 100% { transform: scale(1); } }
@keyframes cp-glow-pulse { 0% { opacity: 0.5; transform: translate(-50%, -50%) scale(0.95); } 100% { opacity: 0.8; transform: translate(-50%, -50%) scale(1.05); } }
@keyframes cp-candle { 0% { transform: scaleY(1); } 50% { transform: scaleY(1.05); } 100% { transform: scaleY(1); } }

/* scene: court-france-rebellion-warning (tense, bright interior) */
.scn-court-france-rebellion-warning {
  background: linear-gradient(135deg, #e0c8b0 0%, #b89a7a 50%, #8a6e4a 100%),
              radial-gradient(ellipse at 40% 50%, #f0dbc5 0%, transparent 80%);
}
.scn-court-france-rebellion-warning .bg {
  position: absolute; inset: 0; background: linear-gradient(180deg, #dcc5ae 0%, #b89a7a 100%);
  animation: fr-bg 10s ease-in-out infinite alternate;
}
.scn-court-france-rebellion-warning .pillar-left {
  position: absolute; left: 5%; top: 0; width: 5%; height: 100%;
  background: linear-gradient(135deg, #9b826a 0%, #6a523c 100%);
  border-radius: 4%; box-shadow: inset -3px 0 6px rgba(0,0,0,0.3);
  animation: fr-pillar 6s ease-in-out infinite;
}
.scn-court-france-rebellion-warning .pillar-right {
  position: absolute; right: 5%; top: 0; width: 5%; height: 100%;
  background: linear-gradient(135deg, #9b826a 0%, #6a523c 100%);
  border-radius: 4%; box-shadow: inset 3px 0 6px rgba(0,0,0,0.3);
  animation: fr-pillar 6s ease-in-out infinite reverse;
}
.scn-court-france-rebellion-warning .crowd-back {
  position: absolute; bottom: 15%; left: 10%; right: 10%; height: 40%;
  background: repeating-linear-gradient(
    90deg,
    transparent 0px, transparent 8px,
    rgba(30,20,10,0.4) 8px, rgba(30,20,10,0.4) 12px
  );
  filter: blur(2px);
  animation: fr-crowd 8s ease-in-out infinite;
}
.scn-court-france-rebellion-warning .crowd-front {
  position: absolute; bottom: 10%; left: 8%; right: 8%; height: 30%;
  background: repeating-linear-gradient(
    90deg,
    transparent 0px, transparent 14px,
    rgba(40,30,20,0.6) 14px, rgba(40,30,20,0.6) 18px
  );
  filter: blur(1px);
  animation: fr-crowd 6s ease-in-out infinite alternate;
}
.scn-court-france-rebellion-warning .leader {
  position: absolute; bottom: 20%; left: 25%; width: 40px; height: 130px;
  background: linear-gradient(180deg, #1a0e04 0%, #0a0602 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: fr-leader 3s ease-in-out infinite;
}
.scn-court-france-rebellion-warning .speaker {
  position: absolute; bottom: 22%; right: 30%; width: 30px; height: 100px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a120a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: fr-speaker 2.5s ease-in-out infinite;
}
.scn-court-france-rebellion-warning .banner {
  position: absolute; top: 30%; left: 50%; transform: translateX(-50%);
  width: 30px; height: 50px;
  background: linear-gradient(180deg, #a0461a 0%, #6a2a0e 100%);
  border-radius: 10% / 20%; box-shadow: 0 0 10px rgba(0,0,0,0.4);
  animation: fr-banner 4s ease-in-out infinite;
}
.scn-court-france-rebellion-warning .shadow {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,0.3) 100%);
  border-radius: 50% 50% 0 0; filter: blur(10px);
  animation: fr-shadow 7s ease-in-out infinite alternate;
}
@keyframes fr-bg { 0% { opacity: 0.85; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes fr-pillar { 0% { transform: scaleY(1); } 50% { transform: scaleY(1.01); } 100% { transform: scaleY(1); } }
@keyframes fr-crowd { 0% { opacity: 0.6; transform: translateX(0); } 50% { opacity: 1; transform: translateX(-5px); } 100% { opacity: 0.6; transform: translateX(5px); } }
@keyframes fr-leader { 0% { transform: rotate(-3deg); } 50% { transform: rotate(2deg) translateY(-1px); } 100% { transform: rotate(-3deg); } }
@keyframes fr-speaker { 0% { transform: scaleY(1); } 50% { transform: scaleY(0.95) translateY(2px); } 100% { transform: scaleY(1); } }
@keyframes fr-banner { 0% { transform: translateX(-50%) rotate(-5deg); } 50% { transform: translateX(-50%) rotate(5deg); } 100% { transform: translateX(-50%) rotate(-5deg); } }
@keyframes fr-shadow { 0% { opacity: 0.5; } 50% { opacity: 0.8; } 100% { opacity: 0.5; } }

/* scene: court-fathers-conquest (warm, bright interior) */
.scn-court-fathers-conquest {
  background: linear-gradient(135deg, #f0dbb0 0%, #d4b878 50%, #b08848 100%),
              radial-gradient(ellipse at 60% 30%, #f8e8c0 0%, transparent 70%);
}
.scn-court-fathers-conquest .bg {
  position: absolute; inset: 0; background: linear-gradient(180deg, #e8d09a 0%, #c8a85a 100%);
  animation: fc-bg 14s ease-in-out infinite alternate;
}
.scn-court-fathers-conquest .figure {
  position: absolute; bottom: 20%; left: 50%; transform: translateX(-50%);
  width: 45px; height: 140px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1e14 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: -2px 0 8px rgba(0,0,0,0.4);
  animation: fc-figure 6s ease-in-out infinite;
}
.scn-court-fathers-conquest .rose {
  position: absolute; bottom: 40%; left: 52%; width: 16px; height: 16px;
  background: radial-gradient(circle, #c8553d 0%, #a0461a 60%, #6a2a0e 100%);
  border-radius: 50%; box-shadow: 0 0 12px 3px rgba(200,85,61,0.5);
  animation: fc-rose 4s ease-in-out infinite;
}
.scn-court-fathers-conquest .crown {
  position: absolute; top: 20%; left: 50%; transform: translateX(-50%);
  width: 28px; height: 16px;
  background: linear-gradient(135deg, #f0d080 0%, #c8a040 100%);
  border-radius: 40% 40% 10% 10% / 80% 80% 20% 20%;
  box-shadow: 0 2px 8px rgba(0,0,0,0.3);
  animation: fc-crown 5s ease-in-out infinite;
}
.scn-court-fathers-conquest .light-beam {
  position: absolute; top: 0; left: 40%; width: 20%; height: 100%;
  background: linear-gradient(180deg, rgba(255,245,200,0.15) 0%, transparent 100%);
  transform: rotate(10deg); filter: blur(5px);
  animation: fc-light 8s ease-in-out infinite alternate;
}
.scn-court-fathers-conquest .shadow {
  position: absolute; bottom: 0; left: 5%; right: 5%; height: 25%;
  background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,0.15) 100%);
  border-radius: 50%; filter: blur(12px);
  animation: fc-shadow 6s ease-in-out infinite alternate;
}
.scn-court-fathers-conquest .tapestry {
  position: absolute; top: 10%; left: 10%; width: 15%; height: 50%;
  background: linear-gradient(180deg, #9b7a5a 0%, #6a4e34 100%);
  border-radius: 8%; box-shadow: inset 0 0 10px rgba(0,0,0,0.3);
  animation: fc-tapestry 10s ease-in-out infinite;
}
@keyframes fc-bg { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.92; } }
@keyframes fc-figure { 0% { transform: translateX(-50%) rotate(-1deg); } 50% { transform: translateX(-50%) rotate(0deg) translateY(-2px); } 100% { transform: translateX(-50%) rotate(1deg); } }
@keyframes fc-rose { 0% { transform: scale(1) rotate(-10deg); } 50% { transform: scale(1.1) rotate(10deg); } 100% { transform: scale(1) rotate(-10deg); } }
@keyframes fc-crown { 0% { transform: translateX(-50%) scaleY(1); } 50% { transform: translateX(-50%) scaleY(1.05) translateY(-1px); } 100% { transform: translateX(-50%) scaleY(1); } }
@keyframes fc-light { 0% { opacity: 0.4; transform: rotate(8deg); } 100% { opacity: 0.7; transform: rotate(12deg); } }
@keyframes fc-shadow { 0% { opacity: 0.4; } 50% { opacity: 0.6; } 100% { opacity: 0.4; } }
@keyframes fc-tapestry { 0% { transform: scaleX(1); } 50% { transform: scaleX(1.02); } 100% { transform: scaleX(1); } }

/* richard-vows-silence */
.scn-richard-vows-silence {
  background:
    linear-gradient(180deg, #1a1010 0%, #2a1a10 40%, #3a2010 100%),
    radial-gradient(ellipse at 50% 80%, #3a2010 0%, transparent 70%);
}
.scn-richard-vows-silence .bg-sv {
  position: absolute; inset: 0; background:
    radial-gradient(ellipse at 30% 60%, #2a1a10 0%, transparent 80%),
    linear-gradient(0deg, #1a1010 0%, transparent 60%);
  animation: sv-breathe 6s ease-in-out infinite alternate;
}
.scn-richard-vows-silence .floor-sv {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(0deg, #1a0a05 0%, #2a1a10 100%);
  border-radius: 20% 20% 0 0 / 40% 40% 0 0; box-shadow: inset 0 10px 30px rgba(0,0,0,0.6);
}
.scn-richard-vows-silence .table-sv {
  position: absolute; bottom: 28%; left: 30%; width: 100px; height: 12px;
  background: linear-gradient(180deg, #5a3a2a 0%, #3a2a1a 100%);
  border-radius: 4px; box-shadow: 0 4px 10px rgba(0,0,0,0.5);
  animation: sv-table 12s ease-in-out infinite alternate;
}
.scn-richard-vows-silence .candle-sv {
  position: absolute; bottom: 35%; left: 42%; width: 8px; height: 50px;
  background: linear-gradient(180deg, #e0c070 0%, #c0a060 30%, #6a4a2a 100%);
  border-radius: 4px 4px 2px 2px; box-shadow: 0 0 8px rgba(200,160,100,0.3);
}
.scn-richard-vows-silence .flame-sv {
  position: absolute; bottom: 55%; left: 42%; width: 12px; height: 18px;
  background: radial-gradient(ellipse at 50% 30%, #ffe080 0%, #ffa040 60%, transparent 100%);
  border-radius: 50%; filter: blur(2px); box-shadow: 0 0 20px 6px #ffa040, 0 0 40px 12px rgba(255,160,64,0.3);
  animation: sv-flame 3s ease-in-out infinite alternate;
}
.scn-richard-vows-silence .figure-sv {
  position: absolute; bottom: 20%; left: 50%; width: 36px; height: 70px;
  background: linear-gradient(180deg, #2a1a10 0%, #1a0a05 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center; box-shadow: 0 0 12px rgba(0,0,0,0.5);
  animation: sv-figure 8s ease-in-out infinite;
}
.scn-richard-vows-silence .shadow-sv {
  position: absolute; bottom: 15%; left: 44%; width: 60px; height: 8px;
  background: radial-gradient(ellipse, rgba(0,0,0,0.4) 0%, transparent 100%);
  border-radius: 50%; animation: sv-shadow 8s ease-in-out infinite;
}
@keyframes sv-breathe {
  0% { opacity: 0.8; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.02); }
  100% { opacity: 0.9; transform: scale(0.98); }
}
@keyframes sv-table {
  0% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
  100% { transform: translateY(1px); }
}
@keyframes sv-flame {
  0% { transform: scale(1) translateY(0); opacity: 0.9; box-shadow: 0 0 20px 6px #ffa040, 0 0 40px 12px rgba(255,160,64,0.3); }
  33% { transform: scale(1.1) translateY(-2px); opacity: 1; box-shadow: 0 0 28px 10px #ffb050, 0 0 50px 16px rgba(255,176,80,0.35); }
  66% { transform: scale(0.95) translateY(1px); opacity: 0.85; box-shadow: 0 0 15px 4px #ff9020, 0 0 30px 8px rgba(255,144,32,0.2); }
  100% { transform: scale(1.05) translateY(-1px); opacity: 0.95; box-shadow: 0 0 22px 8px #ffa040, 0 0 42px 14px rgba(255,160,64,0.25); }
}
@keyframes sv-figure {
  0% { transform: rotate(-2deg); }
  25% { transform: rotate(1deg) translateY(-1px); }
  50% { transform: rotate(-1deg) translateY(0); }
  75% { transform: rotate(2deg) translateY(1px); }
  100% { transform: rotate(0deg); }
}
@keyframes sv-shadow {
  0% { transform: scaleX(0.9); opacity: 0.5; }
  50% { transform: scaleX(1.1); opacity: 0.7; }
  100% { transform: scaleX(0.95); opacity: 0.4; }
}

/* mortimer-dies */
.scn-mortimer-dies {
  background:
    linear-gradient(180deg, #0a0505 0%, #1a0a05 40%, #2a1008 100%),
    radial-gradient(ellipse at 50% 60%, #2a1008 0%, transparent 70%);
}
.scn-mortimer-dies .bg-md {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at 40% 70%, #1a0a05 0%, transparent 80%);
  animation: md-shadow 10s ease-in-out infinite alternate;
}
.scn-mortimer-dies .bed-md {
  position: absolute; bottom: 10%; left: 20%; right: 20%; height: 20%;
  background: linear-gradient(180deg, #3a2010 0%, #1a0a05 100%);
  border-radius: 10% 10% 4% 4% / 60% 60% 20% 20%;
  box-shadow: 0 10px 30px rgba(0,0,0,0.7);
}
.scn-mortimer-dies .body-md {
  position: absolute; bottom: 12%; left: 30%; width: 40%; height: 16%;
  background: linear-gradient(180deg, #1a1010 0%, #0a0505 100%);
  border-radius: 30% 30% 40% 40% / 50% 50% 40% 40%;
  box-shadow: inset 0 4px 10px rgba(0,0,0,0.3);
  animation: md-body 15s ease-in-out infinite;
}
.scn-mortimer-dies .pillow-md {
  position: absolute; bottom: 25%; left: 25%; width: 50px; height: 20px;
  background: linear-gradient(180deg, #4a3020 0%, #2a1a10 100%);
  border-radius: 50%; box-shadow: 0 4px 8px rgba(0,0,0,0.5);
  animation: md-pillow 4s ease-in-out infinite alternate;
}
.scn-mortimer-dies .candle-md {
  position: absolute; bottom: 22%; right: 25%; width: 8px; height: 60px;
  background: linear-gradient(180deg, #c0a050 0%, #8a6020 50%, #3a2010 100%);
  border-radius: 4px; box-shadow: 0 0 6px rgba(200,160,80,0.2);
}
.scn-mortimer-dies .flame-md {
  position: absolute; bottom: 42%; right: 25%; width: 14px; height: 22px;
  background: radial-gradient(ellipse at 50% 30%, #ffe070 0%, #ff9030 60%, transparent 100%);
  border-radius: 50%; filter: blur(3px);
  box-shadow: 0 0 30px 8px #ff9030, 0 0 50px 16px rgba(255,144,48,0.2);
  animation: md-flame 2.5s ease-in-out infinite alternate;
}
.scn-mortimer-dies .hand-md {
  position: absolute; bottom: 16%; left: 42%; width: 14px; height: 24px;
  background: linear-gradient(180deg, #1a0a05 0%, #0a0505 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: md-hand 6s ease-in-out infinite;
}
@keyframes md-shadow {
  0% { opacity: 0.7; }
  50% { opacity: 1; }
  100% { opacity: 0.8; }
}
@keyframes md-body {
  0% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
  100% { transform: translateY(1px); }
}
@keyframes md-pillow {
  0% { transform: translateY(0) rotate(-2deg); }
  50% { transform: translateY(-2px) rotate(1deg); }
  100% { transform: translateY(0) rotate(2deg); }
}
@keyframes md-flame {
  0% { transform: scale(1) translateY(0); box-shadow: 0 0 30px 8px #ff9030, 0 0 50px 16px rgba(255,144,48,0.2); opacity: 0.85; }
  50% { transform: scale(1.15) translateY(-3px); box-shadow: 0 0 40px 12px #ffa040, 0 0 60px 20px rgba(255,160,64,0.3); opacity: 1; }
  100% { transform: scale(0.9) translateY(2px); box-shadow: 0 0 25px 6px #ff8020, 0 0 40px 10px rgba(255,128,32,0.15); opacity: 0.75; }
}
@keyframes md-hand {
  0% { transform: translateX(0) rotate(0deg); }
  25% { transform: translateX(4px) rotate(5deg); }
  50% { transform: translateX(0) rotate(0deg); }
  75% { transform: translateX(-4px) rotate(-5deg); }
  100% { transform: translateX(0) rotate(0deg); }
}

/* richard-mourns-uncle */
.scn-richard-mourns-uncle {
  background:
    linear-gradient(180deg, #0a0a0a 0%, #1a1010 40%, #2a1a10 100%),
    radial-gradient(ellipse at 50% 70%, #2a1a10 0%, transparent 60%);
}
.scn-richard-mourns-uncle .bg-mu {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at 20% 50%, #1a0a0a 0%, transparent 80%);
  animation: mu-dim 12s ease-in-out infinite alternate;
}
.scn-richard-mourns-uncle .floor-mu {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(0deg, #0a0505 0%, #1a1010 100%);
  border-radius: 30% 30% 0 0 / 50% 50% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.5);
}
.scn-richard-mourns-uncle .coffin-mu {
  position: absolute; bottom: 22%; left: 25%; width: 50%; height: 15%;
  background: linear-gradient(180deg, #3a2010 0%, #1a0a05 100%);
  border-radius: 8% 8% 20% 20% / 40% 40% 30% 30%;
  box-shadow: 0 6px 20px rgba(0,0,0,0.6);
  animation: mu-coffin 10s ease-in-out infinite alternate;
}
.scn-richard-mourns-uncle .kneeling-mu {
  position: absolute; bottom: 18%; left: 38%; width: 30px; height: 50px;
  background: linear-gradient(180deg, #2a1a10 0%, #1a0a05 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: mu-kneel 7s ease-in-out infinite;
}
.scn-richard-mourns-uncle .candle-mu {
  position: absolute; bottom: 30%; right: 30%; width: 6px; height: 40px;
  background: linear-gradient(180deg, #d0b060 0%, #a08030 50%, #3a2010 100%);
  border-radius: 3px; box-shadow: 0 0 6px rgba(200,160,80,0.2);
}
.scn-richard-mourns-uncle .flame-mu {
  position: absolute; bottom: 46%; right: 30%; width: 10px; height: 16px;
  background: radial-gradient(ellipse at 50% 20%, #ffd070 0%, #ff9020 60%, transparent 100%);
  border-radius: 50%; filter: blur(2px);
  box-shadow: 0 0 24px 6px #ff9020, 0 0 40px 12px rgba(255,144,32,0.25);
  animation: mu-flame 3.5s ease-in-out infinite alternate;
}
.scn-richard-mourns-uncle .cross-mu {
  position: absolute; bottom: 30%; left: 15%; width: 16px; height: 60px;
  background: linear-gradient(180deg, #4a3020 0%, #2a1a10 100%);
  border-radius: 2px; box-shadow: 0 4px 10px rgba(0,0,0,0.3);
}
.scn-richard-mourns-uncle .cross-mu::after {
  content: ""; position: absolute; top: 10px; left: -10px; width: 36px; height: 12px;
  background: inherit; border-radius: 2px;
}
@keyframes mu-dim {
  0% { opacity: 0.8; }
  50% { opacity: 1; }
  100% { opacity: 0.7; }
}
@keyframes mu-coffin {
  0% { transform: translateY(0); }
  33% { transform: translateY(-2px); }
  66% { transform: translateY(1px); }
  100% { transform: translateY(0); }
}
@keyframes mu-kneel {
  0% { transform: rotate(2deg); }
  25% { transform: rotate(-1deg) translateY(-1px); }
  50% { transform: rotate(0deg) translateY(0); }
  75% { transform: rotate(-2deg) translateY(1px); }
  100% { transform: rotate(1deg); }
}
@keyframes mu-flame {
  0% { transform: scale(1) translateY(0); box-shadow: 0 0 24px 6px #ff9020, 0 0 40px 12px rgba(255,144,32,0.25); opacity: 0.8; }
  33% { transform: scale(1.1) translateY(-2px); box-shadow: 0 0 30px 8px #ffa030, 0 0 50px 16px rgba(255,160,48,0.3); opacity: 1; }
  66% { transform: scale(0.95) translateY(1px); box-shadow: 0 0 18px 4px #ff8010, 0 0 32px 8px rgba(255,128,16,0.2); opacity: 0.7; }
  100% { transform: scale(1.05) translateY(-1px); box-shadow: 0 0 26px 7px #ff9020, 0 0 44px 14px rgba(255,144,32,0.22); opacity: 0.9; }
}

/* richard-resolve */
.scn-richard-resolve {
  background:
    linear-gradient(180deg, #0a050a 0%, #1a1010 40%, #2a1a18 100%),
    radial-gradient(ellipse at 50% 60%, #2a1a18 0%, transparent 70%);
}
.scn-richard-resolve .bg-rr {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at 60% 70%, #1a0a0a 0%, transparent 80%);
  animation: rr-ambient 8s ease-in-out infinite alternate;
}
.scn-richard-resolve .throne-rr {
  position: absolute; bottom: 10%; left: 35%; width: 120px; height: 140px;
  background:
    linear-gradient(180deg, #3a2010 0%, #2a1a10 100%);
  border-radius: 20% 20% 10% 10% / 30% 30% 20% 20%;
  box-shadow: 0 10px 30px rgba(0,0,0,0.6);
  transform: perspective(300px) rotateX(5deg);
}
.scn-richard-resolve .throne-rr::before {
  content: ""; position: absolute; top: 0; left: 10%; width: 80%; height: 20%;
  background: linear-gradient(180deg, #4a3020 0%, #3a2010 100%);
  border-radius: 30% 30% 0 0 / 50% 50% 0 0;
}
.scn-richard-resolve .figure-rr {
  position: absolute; bottom: 12%; left: 43%; width: 40px; height: 100px;
  background: linear-gradient(180deg, #1a1010 0%, #0a0505 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  box-shadow: 0 0 20px rgba(0,0,0,0.4);
  animation: rr-figure 6s ease-in-out infinite;
}
.scn-richard-resolve .sword-rr {
  position: absolute; bottom: 30%; left: 48%; width: 4px; height: 60px;
  background: linear-gradient(180deg, #a08050 0%, #6a4a2a 50%, #3a2010 100%);
  border-radius: 2px; box-shadow: 0 0 6px rgba(160,128,80,0.3);
  transform-origin: bottom center;
  animation: rr-sword 4s ease-in-out infinite alternate;
}
.scn-richard-resolve .sword-rr::after {
  content: ""; position: absolute; top: -6px; left: -4px; width: 12px; height: 6px;
  background: linear-gradient(180deg, #c0a060 0%, #8a6a30 100%);
  border-radius: 2px 2px 1px 1px;
}
.scn-richard-resolve .torch-rr {
  position: absolute; bottom: 20%; right: 25%; width: 8px; height: 80px;
  background: linear-gradient(180deg, #5a3a2a 0%, #2a1a10 100%);
  border-radius: 4px; box-shadow: 0 0 4px rgba(0,0,0,0.2);
}
.scn-richard-resolve .torch-flame-rr {
  position: absolute; bottom: 58%; right: 25%; width: 18px; height: 30px;
  background: radial-gradient(ellipse at 50% 20%, #ffe070 0%, #ff9020 50%, transparent 100%);
  border-radius: 50%; filter: blur(3px);
  box-shadow: 0 0 40px 12px #ff9020, 0 0 70px 20px rgba(255,144,32,0.3);
  animation: rr-torch 2s ease-in-out infinite alternate;
}
.scn-richard-resolve .shadow-rr {
  position: absolute; bottom: 6%; left: 35%; width: 120px; height: 10px;
  background: radial-gradient(ellipse, rgba(0,0,0,0.5) 0%, transparent 100%);
  border-radius: 50%; animation: rr-shadow 8s ease-in-out infinite;
}
@keyframes rr-ambient {
  0% { opacity: 0.85; }
  50% { opacity: 1; }
  100% { opacity: 0.9; }
}
@keyframes rr-figure {
  0% { transform: rotate(0deg) translateY(0); }
  25% { transform: rotate(1deg) translateY(-1px); }
  50% { transform: rotate(-1deg) translateY(0); }
  75% { transform: rotate(1deg) translateY(1px); }
  100% { transform: rotate(0deg); }
}
@keyframes rr-sword {
  0% { transform: rotate(-2deg); }
  33% { transform: rotate(1deg); }
  66% { transform: rotate(-1deg); }
  100% { transform: rotate(0deg); }
}
@keyframes rr-torch {
  0% { transform: scale(1) translateY(0); box-shadow: 0 0 40px 12px #ff9020, 0 0 70px 20px rgba(255,144,32,0.3); opacity: 0.9; }
  50% { transform: scale(1.2) translateY(-4px); box-shadow: 0 0 50px 16px #ffa030, 0 0 80px 24px rgba(255,160,48,0.4); opacity: 1; }
  100% { transform: scale(0.9) translateY(2px); box-shadow: 0 0 30px 8px #ff8010, 0 0 50px 14px rgba(255,128,16,0.2); opacity: 0.8; }
}
@keyframes rr-shadow {
  0% { transform: scaleX(0.9); opacity: 0.4; }
  50% { transform: scaleX(1.1); opacity: 0.6; }
  100% { transform: scaleX(0.95); opacity: 0.5; }
}

/* ---- london-palace ---- */
.scn-london-palace {
  background:
    linear-gradient(180deg, #f5e6c8 0%, #d4b88a 30%, #b8915e 60%, #8a6a3e 100%),
    radial-gradient(ellipse at 50% 20%, #f0d8a8 0%, transparent 60%);
}
.scn-london-palace .throne {
  position: absolute; bottom: 22%; left: 50%; width: 60px; height: 80px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #c8a060 0%, #a07840 60%, #806030 100%);
  border-radius: 10% 10% 20% 20% / 30% 30% 20% 20%;
  box-shadow: 0 8px 20px rgba(0,0,0,.4);
  animation: lp-throne 6s ease-in-out infinite alternate;
}
.scn-london-palace .pillar-left {
  position: absolute; bottom: 20%; left: 12%; width: 20px; height: 100px;
  background: linear-gradient(90deg, #c8b08a 0%, #e0d0b0 30%, #b89870 70%, #a08060 100%);
  border-radius: 4px;
  box-shadow: 8px 0 10px rgba(0,0,0,.2);
  animation: lp-pillar 12s ease-in-out infinite alternate;
}
.scn-london-palace .pillar-right {
  position: absolute; bottom: 20%; right: 12%; width: 20px; height: 100px;
  background: linear-gradient(270deg, #c8b08a 0%, #e0d0b0 30%, #b89870 70%, #a08060 100%);
  border-radius: 4px;
  box-shadow: -8px 0 10px rgba(0,0,0,.2);
  animation: lp-pillar 12s ease-in-out infinite alternate-reverse;
}
.scn-london-palace .window-glow {
  position: absolute; bottom: 50%; left: 50%; width: 80px; height: 60px;
  transform: translate(-50%, -50%);
  background: radial-gradient(circle, #ffe8b0 0%, #f0c060 40%, transparent 70%);
  border-radius: 10%;
  box-shadow: 0 0 40px 20px rgba(240,192,96,.5);
  animation: lp-glow 5s ease-in-out infinite alternate;
}
.scn-london-palace .carpet {
  position: absolute; bottom: 12%; left: 10%; right: 10%; height: 18%;
  background: linear-gradient(90deg, #6a3a2a 0%, #8a4a3a 25%, #6a3a2a 50%, #8a4a3a 75%, #6a3a2a 100%);
  border-radius: 30% 30% 0 0 / 60% 60% 0 0;
  box-shadow: inset 0 8px 12px rgba(0,0,0,.3);
  animation: lp-carpet 8s ease-in-out infinite;
}
.scn-london-palace .curtain-left {
  position: absolute; top: 5%; left: 4%; width: 12%; height: 90%;
  background: linear-gradient(90deg, #a05040 0%, #c07050 30%, #b06050 70%, #804030 100%);
  border-radius: 0 40% 40% 0 / 0 20% 20% 0;
  box-shadow: 6px 0 10px rgba(0,0,0,.3);
  animation: lp-curtain 10s ease-in-out infinite alternate;
}
.scn-london-palace .curtain-right {
  position: absolute; top: 5%; right: 4%; width: 12%; height: 90%;
  background: linear-gradient(270deg, #a05040 0%, #c07050 30%, #b06050 70%, #804030 100%);
  border-radius: 40% 0 0 40% / 20% 0 0 20%;
  box-shadow: -6px 0 10px rgba(0,0,0,.3);
  animation: lp-curtain 10s ease-in-out infinite alternate-reverse;
}
.scn-london-palace .chandelier {
  position: absolute; top: 8%; left: 50%; width: 40px; height: 50px;
  transform: translateX(-50%);
  background: radial-gradient(circle at 50% 30%, #f0d080 0%, #c8a050 40%, #a08030 80%);
  border-radius: 50% 50% 20% 20% / 60% 60% 20% 20%;
  box-shadow: 0 0 30px 8px rgba(200,160,80,.6);
  animation: lp-chandelier 4s ease-in-out infinite alternate;
}
@keyframes lp-throne {
  0% { transform: translateX(-50%) translateY(0); }
  50% { transform: translateX(-50%) translateY(-2px); }
  100% { transform: translateX(-50%) translateY(0); }
}
@keyframes lp-pillar {
  0% { opacity: .8; transform: scaleY(1); }
  50% { opacity: 1; transform: scaleY(1.02); }
  100% { opacity: .9; transform: scaleY(1); }
}
@keyframes lp-glow {
  0% { opacity: .6; transform: translate(-50%, -50%) scale(.95); }
  50% { opacity: 1; transform: translate(-50%, -50%) scale(1.05); }
  100% { opacity: .7; transform: translate(-50%, -50%) scale(1); }
}
@keyframes lp-carpet {
  0% { background-position: 0% 0%; }
  50% { background-position: 100% 0%; }
  100% { background-position: 0% 0%; }
}
@keyframes lp-curtain {
  0% { transform: translateX(0) scaleY(1); }
  50% { transform: translateX(4px) scaleY(1.02); }
  100% { transform: translateX(0) scaleY(1); }
}
@keyframes lp-chandelier {
  0% { transform: translateX(-50%) rotate(-2deg); }
  50% { transform: translateX(-50%) rotate(2deg); }
  100% { transform: translateX(-50%) rotate(-2deg); }
}

/* ---- london-debate ---- */
.scn-london-debate {
  background:
    linear-gradient(180deg, #c8b898 0%, #b09878 30%, #907858 70%, #786050 100%),
    radial-gradient(ellipse at 60% 30%, #d8c8a8 0%, transparent 50%);
}
.scn-london-debate .head-a {
  position: absolute; bottom: 50%; left: 22%; width: 24px; height: 26px;
  background: linear-gradient(135deg, #3a2a1a 0%, #1a1008 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: rotate(10deg);
  animation: ldb-head 0.8s ease-in-out infinite alternate;
}
.scn-london-debate .body-a {
  position: absolute; bottom: 28%; left: 20%; width: 28px; height: 40px;
  background: linear-gradient(180deg, #5a3a2a 0%, #2a1a10 100%);
  border-radius: 30% 30% 20% 20% / 40% 40% 20% 20%;
  transform: rotate(5deg);
  animation: ldb-body 1.2s ease-in-out infinite alternate;
}
.scn-london-debate .head-b {
  position: absolute; bottom: 52%; left: 44%; width: 22px; height: 24px;
  background: linear-gradient(135deg, #4a3a2a 0%, #2a1a10 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: rotate(-15deg);
  animation: ldb-head 1.0s ease-in-out infinite alternate-reverse;
}
.scn-london-debate .body-b {
  position: absolute; bottom: 30%; left: 42%; width: 26px; height: 38px;
  background: linear-gradient(180deg, #6a4a3a 0%, #3a2a1a 100%);
  border-radius: 30% 30% 20% 20% / 40% 40% 20% 20%;
  transform: rotate(-8deg);
  animation: ldb-body 1.4s ease-in-out infinite alternate-reverse;
}
.scn-london-debate .head-c {
  position: absolute; bottom: 48%; left: 66%; width: 20px; height: 22px;
  background: linear-gradient(135deg, #3a2a1a 0%, #1a1008 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: rotate(20deg);
  animation: ldb-head 1.1s ease-in-out infinite alternate;
}
.scn-london-debate .body-c {
  position: absolute; bottom: 26%; left: 64%; width: 24px; height: 36px;
  background: linear-gradient(180deg, #5a3a2a 0%, #2a1a10 100%);
  border-radius: 30% 30% 20% 20% / 40% 40% 20% 20%;
  transform: rotate(12deg);
  animation: ldb-body 0.9s ease-in-out infinite alternate;
}
.scn-london-debate .table {
  position: absolute; bottom: 22%; left: 15%; right: 15%; height: 12%;
  background: linear-gradient(180deg, #8a6a4a 0%, #6a4a2a 100%);
  border-radius: 10% / 20%;
  box-shadow: 0 6px 12px rgba(0,0,0,.4);
  animation: ldb-table 4s ease-in-out infinite;
}
.scn-london-debate .window-bar {
  position: absolute; top: 8%; left: 35%; right: 35%; height: 4px;
  background: #b08860;
  border-radius: 2px;
  box-shadow: 0 40px 0 #b08860, 0 80px 0 #b08860;
  animation: ldb-bar 3s ease-in-out infinite alternate;
}
@keyframes ldb-head {
  0% { transform: rotate(8deg) translateX(0); }
  50% { transform: rotate(-8deg) translateX(2px); }
  100% { transform: rotate(8deg) translateX(0); }
}
@keyframes ldb-body {
  0% { transform: rotate(3deg) scaleY(1); }
  50% { transform: rotate(-3deg) scaleY(1.02); }
  100% { transform: rotate(3deg) scaleY(1); }
}
@keyframes ldb-table {
  0% { box-shadow: 0 6px 12px rgba(0,0,0,.4); }
  50% { box-shadow: 0 10px 18px rgba(0,0,0,.6); }
  100% { box-shadow: 0 6px 12px rgba(0,0,0,.4); }
}
@keyframes ldb-bar {
  0% { opacity: .6; }
  50% { opacity: 1; }
  100% { opacity: .6; }
}

/* ---- london-henry-speech ---- */
.scn-london-henry-speech {
  background:
    linear-gradient(180deg, #e8d4b0 0%, #c8a880 40%, #a07858 80%, #806040 100%),
    radial-gradient(ellipse at 50% 40%, #f0d8b0 0%, transparent 60%);
}
.scn-london-henry-speech .figure-body {
  position: absolute; bottom: 20%; left: 50%; width: 34px; height: 60px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #6a4a3a 0%, #3a2a1a 100%);
  border-radius: 20% 20% 30% 30% / 40% 40% 30% 30%;
  box-shadow: 0 8px 12px rgba(0,0,0,.3);
  animation: lhs-body 5s ease-in-out infinite alternate;
}
.scn-london-henry-speech .figure-head {
  position: absolute; bottom: 55%; left: 50%; width: 22px; height: 24px;
  transform: translateX(-50%);
  background: linear-gradient(135deg, #4a3a2a 0%, #2a1a10 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: lhs-head 3s ease-in-out infinite alternate;
}
.scn-london-henry-speech .arm-left {
  position: absolute; bottom: 40%; left: 42%; width: 14px; height: 6px;
  background: #4a3a2a;
  border-radius: 30% 30% 10% 10%;
  transform: rotate(-40deg);
  transform-origin: right center;
  animation: lhs-arm 2s ease-in-out infinite alternate;
}
.scn-london-henry-speech .arm-right {
  position: absolute; bottom: 40%; right: 42%; width: 14px; height: 6px;
  background: #4a3a2a;
  border-radius: 30% 30% 10% 10%;
  transform: rotate(40deg);
  transform-origin: left center;
  animation: lhs-arm 2s ease-in-out infinite alternate-reverse;
}
.scn-london-henry-speech .podium {
  position: absolute; bottom: 16%; left: 50%; width: 40px; height: 14px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #a08060 0%, #806040 100%);
  border-radius: 10% 10% 0 0 / 30% 30% 0 0;
  box-shadow: 0 4px 8px rgba(0,0,0,.3);
  animation: lhs-podium 6s ease-in-out infinite;
}
.scn-london-henry-speech .window-rays {
  position: absolute; top: 0; left: 20%; right: 20%; height: 60%;
  background: linear-gradient(135deg, rgba(255,220,160,.4) 0%, transparent 50%);
  clip-path: polygon(0 0, 100% 0, 80% 100%, 20% 100%);
  animation: lhs-rays 8s ease-in-out infinite alternate;
}
.scn-london-henry-speech .halo {
  position: absolute; top: 45%; left: 50%; width: 40px; height: 20px;
  transform: translate(-50%, -50%);
  background: radial-gradient(circle, rgba(255,200,100,.6) 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(4px);
  animation: lhs-halo 4s ease-in-out infinite alternate;
}
@keyframes lhs-body {
  0% { transform: translateX(-50%) scaleY(1); }
  50% { transform: translateX(-50%) scaleY(1.03); }
  100% { transform: translateX(-50%) scaleY(1); }
}
@keyframes lhs-head {
  0% { transform: translateX(-50%) rotate(-2deg); }
  50% { transform: translateX(-50%) rotate(2deg); }
  100% { transform: translateX(-50%) rotate(-2deg); }
}
@keyframes lhs-arm {
  0% { transform: rotate(-35deg); }
  50% { transform: rotate(-55deg); }
  100% { transform: rotate(-35deg); }
}
@keyframes lhs-podium {
  0% { box-shadow: 0 4px 8px rgba(0,0,0,.3); }
  50% { box-shadow: 0 8px 16px rgba(0,0,0,.5); }
  100% { box-shadow: 0 4px 8px rgba(0,0,0,.3); }
}
@keyframes lhs-rays {
  0% { opacity: .4; transform: scaleY(1); }
  50% { opacity: .8; transform: scaleY(1.1); }
  100% { opacity: .4; transform: scaleY(1); }
}
@keyframes lhs-halo {
  0% { opacity: .5; transform: translate(-50%, -50%) scale(.9); }
  50% { opacity: 1; transform: translate(-50%, -50%) scale(1.1); }
  100% { opacity: .5; transform: translate(-50%, -50%) scale(.9); }
}

/* ---- london-decision ---- */
.scn-london-decision {
  background:
    linear-gradient(180deg, #f0e8d0 0%, #d8c8a8 30%, #b8a080 70%, #9a8868 100%),
    radial-gradient(ellipse at 50% 30%, #fff8e0 0%, transparent 50%);
}
.scn-london-decision .window-arch {
  position: absolute; top: 10%; left: 30%; right: 30%; height: 40%;
  background: radial-gradient(ellipse at 50% 100%, #e0d8c0 0%, #c0b098 60%, transparent 100%);
  border-radius: 50% 50% 0 0 / 60% 60% 0 0;
  box-shadow: inset 0 -20px 40px rgba(0,0,0,.2);
  animation: ldc-arch 10s ease-in-out infinite alternate;
}
.scn-london-decision .light-beam {
  position: absolute; top: 0; left: 40%; right: 40%; height: 60%;
  background: linear-gradient(180deg, rgba(255,240,200,.6) 0%, transparent 80%);
  clip-path: polygon(30% 0, 70% 0, 55% 100%, 45% 100%);
  animation: ldc-beam 7s ease-in-out infinite alternate;
}
.scn-london-decision .figure-kneeling {
  position: absolute; bottom: 22%; left: 35%; width: 20px; height: 28px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 30% 30% 50% 50% / 40% 40% 30% 30%;
  transform: scaleX(0.8);
  animation: ldc-kneel 6s ease-in-out infinite alternate;
}
.scn-london-decision .figure-standing {
  position: absolute; bottom: 18%; left: 60%; width: 22px; height: 40px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a10 100%);
  border-radius: 30% 30% 20% 20% / 40% 40% 30% 30%;
  transform: rotate(5deg);
  animation: ldc-stand 4s ease-in-out infinite alternate;
}
.scn-london-decision .crown-float {
  position: absolute; top: 30%; left: 50%; width: 24px; height: 16px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #e0a040 0%, #c08020 60%, #a06010 100%);
  border-radius: 40% 40% 10% 10% / 60% 60% 20% 20%;
  box-shadow: 0 0 20px 6px rgba(224,160,64,.5);
  animation: ldc-crown 8s ease-in-out infinite alternate;
}
.scn-london-decision .particles-up {
  position: absolute; bottom: 0; left: 0; right: 0; height: 100%;
  background: radial-gradient(circle at 50% 100%, rgba(180,140,60,.3) 0%, transparent 50%);
  animation: ldc-particles 12s linear infinite;
}
.scn-london-decision .prayer-dots {
  position: absolute; bottom: 35%; left: 38%; width: 4px; height: 4px;
  background: #d0b080;
  border-radius: 50%;
  box-shadow: 8px -6px 0 #d0b080, 16px -12px 0 #d0b080, 24px -18px 0 #d0b080;
  animation: ldc-dots 5s ease-in-out infinite alternate;
}
@keyframes ldc-arch {
  0% { opacity: .7; transform: scaleY(.98); }
  50% { opacity: 1; transform: scaleY(1.02); }
  100% { opacity: .8; transform: scaleY(1); }
}
@keyframes ldc-beam {
  0% { opacity: .3; transform: translateY(0) scaleY(.9); }
  50% { opacity: .8; transform: translateY(-4px) scaleY(1.1); }
  100% { opacity: .4; transform: translateY(0) scaleY(1); }
}
@keyframes ldc-kneel {
  0% { transform: scaleX(0.8) translateY(0); }
  50% { transform: scaleX(0.85) translateY(-2px); }
  100% { transform: scaleX(0.8) translateY(0); }
}
@keyframes ldc-stand {
  0% { transform: rotate(3deg) translateY(0); }
  50% { transform: rotate(-3deg) translateY(-3px); }
  100% { transform: rotate(3deg) translateY(0); }
}
@keyframes ldc-crown {
  0% { transform: translateX(-50%) rotate(-5deg) scale(.95); }
  50% { transform: translateX(-50%) rotate(5deg) scale(1.05); }
  100% { transform: translateX(-50%) rotate(-5deg) scale(.95); }
}
@keyframes ldc-particles {
  0% { background-position: 0% 100%; opacity: .3; }
  50% { background-position: 50% 0%; opacity: .6; }
  100% { background-position: 100% 100%; opacity: .3; }
}
@keyframes ldc-dots {
  0% { opacity: .4; transform: translateY(0); }
  50% { opacity: 1; transform: translateY(-4px); }
  100% { opacity: .6; transform: translateY(0); }
}

.scn-court-exeter-prophecy {
  background: linear-gradient(180deg, #1a0f0a 0%, #2a1a10 40%, #3a2a1a 70%, #2a1a10 100%),
              radial-gradient(ellipse at 50% 80%, #4a3a2a 0%, transparent 60%);
  box-shadow: inset 0 0 120px rgba(0,0,0,.6);
}
.scn-court-exeter-prophecy .cep-throne {
  position: absolute; bottom: 20%; left: 50%; width: 100px; height: 140px;
  transform: translateX(-50%);
  background: linear-gradient(135deg, #4a3020 0%, #2a1a10 50%, #1a0e08 100%);
  border-radius: 10% 10% 30% 30% / 20% 20% 60% 60%;
  box-shadow: 0 10px 30px rgba(0,0,0,.5), inset 0 0 30px rgba(200,150,80,.2);
  animation: cep-throne 8s ease-in-out infinite alternate;
}
.scn-court-exeter-prophecy .cep-courtier-left {
  position: absolute; bottom: 18%; left: 20%; width: 40px; height: 90px;
  background: linear-gradient(90deg, #1a0e08 30%, #2a1a10 70%, #1a0e08 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cep-courtier 6s ease-in-out infinite;
}
.scn-court-exeter-prophecy .cep-courtier-right {
  position: absolute; bottom: 18%; right: 20%; width: 40px; height: 90px;
  background: linear-gradient(-90deg, #1a0e08 30%, #2a1a10 70%, #1a0e08 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cep-courtier 6s ease-in-out infinite 3s;
}
.scn-court-exeter-prophecy .cep-herald {
  position: absolute; bottom: 26%; left: 45%; width: 30px; height: 80px;
  background: linear-gradient(180deg, #3a2a1a 0%, #2a1a10 60%, #1a0e08 100%);
  border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%;
  animation: cep-herald 10s ease-in-out infinite;
}
.scn-court-exeter-prophecy .cep-banner {
  position: absolute; top: 10%; left: 60%; width: 60px; height: 40px;
  background: linear-gradient(135deg, #c8553d 0%, #a0461a 50%, #6a2e12 100%);
  border-radius: 0 20% 20% 0;
  transform: rotate(-5deg);
  box-shadow: 2px 2px 8px rgba(0,0,0,.4);
  animation: cep-banner 12s ease-in-out infinite alternate;
}
.scn-court-exeter-prophecy .cep-glow {
  position: absolute; bottom: 35%; left: 45%; width: 80px; height: 80px;
  background: radial-gradient(circle, #ffd080 0%, #b08040 40%, transparent 70%);
  border-radius: 50%;
  mix-blend-mode: screen;
  animation: cep-glow 4s ease-in-out infinite alternate;
}
.scn-court-exeter-prophecy .cep-shadow {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,.7) 100%);
  pointer-events: none;
}

@keyframes cep-throne {
  0% { transform: translateX(-50%) translateY(0) rotate(0deg); }
  50% { transform: translateX(-50%) translateY(-4px) rotate(1deg); }
  100% { transform: translateX(-50%) translateY(0) rotate(0deg); }
}
@keyframes cep-courtier {
  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(8px) translateY(-3px) rotate(2deg); }
  100% { transform: translateX(0) translateY(0) rotate(-2deg); }
}
@keyframes cep-herald {
  0%,100% { transform: translateX(0) rotate(0deg); }
  33% { transform: translateX(-5px) rotate(-3deg) scale(1.02); }
  66% { transform: translateX(5px) rotate(3deg) scale(0.98); }
}
@keyframes cep-banner {
  0% { transform: rotate(-5deg) scaleY(1); }
  50% { transform: rotate(3deg) scaleY(1.05); }
  100% { transform: rotate(-7deg) scaleY(0.95); }
}
@keyframes cep-glow {
  0% { opacity: 0.6; transform: scale(0.9); }
  50% { opacity: 1; transform: scale(1.1); }
  100% { opacity: 0.7; transform: scale(0.95); }
}

.scn-court-exeter-omen {
  background: linear-gradient(180deg, #1a1210 0%, #2a1e1a 40%, #1a1210 100%),
              radial-gradient(ellipse at 30% 70%, #3a2a24 0%, transparent 60%);
  box-shadow: inset 0 0 80px rgba(0,0,0,.5);
}
.scn-court-exeter-omen .ceo-window {
  position: absolute; top: 5%; left: 10%; width: 120px; height: 150px;
  background: linear-gradient(180deg, #1a1a2a 0%, #2a2a3a 50%, #0a0a1a 100%);
  border: 4px solid #2a1a10;
  border-radius: 4px;
  box-shadow: inset 0 0 40px rgba(0,0,0,.8), 0 0 20px rgba(0,0,0,.3);
  animation: ceo-window 20s ease-in-out infinite alternate;
}
.scn-court-exeter-omen .ceo-rain {
  position: absolute; top: 5%; left: 10%; width: 120px; height: 150px;
  background: repeating-linear-gradient(180deg, rgba(180,200,220,0.3) 0px, rgba(180,200,220,0.3) 2px, transparent 2px, transparent 6px);
  animation: ceo-rain 0.8s linear infinite;
  pointer-events: none;
}
.scn-court-exeter-omen .ceo-soldier {
  position: absolute; bottom: 22%; left: 40%; width: 50px; height: 120px;
  background: linear-gradient(180deg, #2a1a10 0%, #1a0e08 100%);
  border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: ceo-soldier 8s ease-in-out infinite;
}
.scn-court-exeter-omen .ceo-trumpet {
  position: absolute; bottom: 40%; left: 38%; width: 8px; height: 40px;
  background: linear-gradient(180deg, #b08040 0%, #806030 100%);
  border-radius: 30% 30% 10% 10%;
  transform: rotate(20deg);
  animation: ceo-trumpet 3s ease-in-out infinite alternate;
}
.scn-court-exeter-omen .ceo-drum {
  position: absolute; bottom: 20%; left: 55%; width: 40px; height: 30px;
  background: linear-gradient(180deg, #5e1a1d 0%, #3a0e10 100%);
  border-radius: 50%;
  border: 2px solid #2a1a10;
  box-shadow: 0 4px 8px rgba(0,0,0,.4);
  animation: ceo-drum 4s ease-in-out infinite;
}
.scn-court-exeter-omen .ceo-owl {
  position: absolute; top: 10%; right: 15%; width: 30px; height: 40px;
  background: radial-gradient(ellipse at 50% 30%, #2a2a2a 30%, #1a1a1a 70%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 0 0 20px rgba(0,0,0,.5);
  animation: ceo-owl 12s ease-in-out infinite alternate;
}
.scn-court-exeter-omen .ceo-flash {
  position: absolute; top: 0; left: 0; right: 0; bottom: 0;
  background: radial-gradient(circle at 20% 30%, rgba(220,220,255,0.6) 0%, transparent 60%);
  mix-blend-mode: screen;
  opacity: 0;
  animation: ceo-flash 8s ease-in-out infinite;
  pointer-events: none;
}

@keyframes ceo-window {
  0% { opacity: 0.8; }
  50% { opacity: 0.6; box-shadow: 0 0 30px rgba(0,0,0,.9); }
  100% { opacity: 0.9; }
}
@keyframes ceo-rain {
  0% { background-position: 0 0; }
  100% { background-position: 0 10px; }
}
@keyframes ceo-soldier {
  0%,100% { transform: translateX(0) rotate(0deg); }
  25% { transform: translateX(-10px) rotate(-3deg); }
  50% { transform: translateX(0) rotate(0deg); }
  75% { transform: translateX(10px) rotate(3deg); }
}
@keyframes ceo-trumpet {
  0% { transform: rotate(15deg) scaleX(1); }
  50% { transform: rotate(25deg) scaleX(0.9); }
  100% { transform: rotate(18deg) scaleX(1); }
}
@keyframes ceo-drum {
  0%,100% { transform: scaleY(1); }
  50% { transform: scaleY(0.8); }
}
@keyframes ceo-owl {
  0% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-10px) rotate(5deg); }
  100% { transform: translateY(0) rotate(-5deg); }
}
@keyframes ceo-flash {
  0%,90%,100% { opacity: 0; }
  10% { opacity: 0.4; }
  20% { opacity: 0.1; }
}

.scn-bordeaux-summon {
  background: linear-gradient(180deg, #f5d6a0 0%, #e8b87a 30%, #c89050 60%, #a06a30 100%),
              radial-gradient(ellipse at 80% 20%, #ffd080 0%, transparent 50%);
  box-shadow: inset 0 0 100px rgba(0,0,0,.3);
}
.scn-bordeaux-summon .bs-sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #8ab8e0 0%, #b0d0f0 50%, #d0e8ff 100%);
  opacity: 0.8;
  animation: bs-sky 15s ease-in-out infinite alternate;
}
.scn-bordeaux-summon .bs-wall {
  position: absolute; bottom: 20%; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #8a6a40 0%, #6a4a2a 100%);
  border-radius: 20% 20% 0 0 / 40% 40% 0 0;
  box-shadow: 0 -10px 30px rgba(0,0,0,.4);
  animation: bs-wall 20s ease-in-out infinite alternate;
}
.scn-bordeaux-summon .bs-gate {
  position: absolute; bottom: 20%; left: 50%; width: 60px; height: 80px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #4a2a1a 0%, #2a1a0e 100%);
  border-radius: 30% 30% 10% 10% / 50% 50% 20% 20%;
  box-shadow: inset 0 0 20px rgba(0,0,0,.5);
  animation: bs-gate 6s ease-in-out infinite;
}
.scn-bordeaux-summon .bs-tower-left {
  position: absolute; bottom: 20%; left: 15%; width: 40px; height: 120px;
  background: linear-gradient(180deg, #7a5a3a 0%, #4a2a1a 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: 2px 0 10px rgba(0,0,0,.3);
  animation: bs-tower 12s ease-in-out infinite alternate;
}
.scn-bordeaux-summon .bs-tower-right {
  position: absolute; bottom: 20%; right: 15%; width: 40px; height: 120px;
  background: linear-gradient(180deg, #7a5a3a 0%, #4a2a1a 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: -2px 0 10px rgba(0,0,0,.3);
  animation: bs-tower 12s ease-in-out infinite alternate 6s;
}
.scn-bordeaux-summon .bs-herald {
  position: absolute; bottom: 15%; left: 30%; width: 30px; height: 100px;
  background: linear-gradient(180deg, #2a1a0e 0%, #1a0e08 100%);
  border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: bs-herald 8s ease-in-out infinite;
}
.scn-bordeaux-summon .bs-spear {
  position: absolute; bottom: 45%; left: 32%; width: 4px; height: 70px;
  background: linear-gradient(180deg, #a08060 0%, #6a4a2a 100%);
  border-radius: 2px;
  transform: rotate(-15deg);
  animation: bs-spear 5s ease-in-out infinite alternate;
}
.scn-bordeaux-summon .bs-dust {
  position: absolute; bottom: 10%; left: 20%; width: 80px; height: 20px;
  background: radial-gradient(ellipse, rgba(180,140,80,0.4) 0%, transparent 70%);
  filter: blur(6px);
  animation: bs-dust 30s linear infinite;
}

@keyframes bs-sky {
  0% { opacity: 0.7; }
  50% { opacity: 1; }
  100% { opacity: 0.8; }
}
@keyframes bs-wall {
  0% { transform: translateY(0); }
  50% { transform: translateY(-3px); }
  100% { transform: translateY(0); }
}
@keyframes bs-gate {
  0%,100% { transform: translateX(-50%) scaleY(1); }
  50% { transform: translateX(-50%) scaleY(1.02); }
}
@keyframes bs-tower {
  0% { transform: skewX(0deg); }
  50% { transform: skewX(-2deg); }
  100% { transform: skewX(0deg); }
}
@keyframes bs-herald {
  0% { transform: translateX(0) rotate(0deg); }
  33% { transform: translateX(-8px) rotate(-4deg); }
  66% { transform: translateX(8px) rotate(4deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes bs-spear {
  0% { transform: rotate(-15deg) translateY(0); }
  50% { transform: rotate(-10deg) translateY(-5px); }
  100% { transform: rotate(-15deg) translateY(0); }
}
@keyframes bs-dust {
  0% { transform: translateX(0) scaleX(1); }
  50% { transform: translateX(30px) scaleX(1.2); }
  100% { transform: translateX(0) scaleX(1); }
}

.scn-bordeaux-defiance {
  background: linear-gradient(180deg, #f0c080 0%, #d0a060 30%, #a07840 60%, #705030 100%),
              radial-gradient(ellipse at 30% 60%, #ffd0a0 0%, transparent 50%);
  box-shadow: inset 0 0 100px rgba(0,0,0,.5);
}
.scn-bordeaux-defiance .bd-sky {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #d0a060 0%, #f0d0a0 40%, #ffe0c0 70%, #ffd0a0 100%);
  opacity: 0.9;
  animation: bd-sky 15s ease-in-out infinite alternate;
}
.scn-bordeaux-defiance .bd-wall {
  position: absolute; bottom: 10%; left: 0; right: 0; height: 60%;
  background: linear-gradient(180deg, #5a3a20 0%, #3a2a10 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: inset 0 10px 30px rgba(0,0,0,.6);
  animation: bd-wall 25s ease-in-out infinite alternate;
}
.scn-bordeaux-defiance .bd-tower {
  position: absolute; bottom: 10%; left: 50%; width: 50px; height: 130px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #6a4a2a 0%, #3a2a10 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: 0 0 20px rgba(0,0,0,.4);
  animation: bd-tower 8s ease-in-out infinite alternate;
}
.scn-bordeaux-defiance .bd-rampart {
  position: absolute; bottom: 30%; left: 20%; right: 20%; height: 20px;
  background: linear-gradient(90deg, #5a3a20, #7a5a3a, #5a3a20);
  border-radius: 20% 20% 0 0;
  box-shadow: 0 -4px 8px rgba(0,0,0,.3);
  animation: bd-rampart 12s ease-in-out infinite alternate;
}
.scn-bordeaux-defiance .bd-figure {
  position: absolute; bottom: 5%; left: 35%; width: 40px; height: 110px;
  background: linear-gradient(180deg, #1a0e08 0%, #0a0502 100%);
  border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: bd-figure 10s ease-in-out infinite;
}
.scn-bordeaux-defiance .bd-owl {
  position: absolute; top: 15%; right: 20%; width: 30px; height: 35px;
  background: radial-gradient(ellipse at 50% 40%, #2a2a2a 30%, #1a1a1a 70%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 0 0 15px rgba(0,0,0,.6);
  animation: bd-owl 14s ease-in-out infinite alternate;
}
.scn-bordeaux-defiance .bd-flag {
  position: absolute; top: 10%; left: 55%; width: 30px; height: 50px;
  background: linear-gradient(135deg, #c8553d 0%, #a0461a 50%, #6a2e12 100%);
  border-radius: 0 20% 20% 0;
  transform: rotate(-10deg);
  box-shadow: 0 0 10px rgba(0,0,0,.3);
  animation: bd-flag 6s ease-in-out infinite alternate;
}
.scn-bordeaux-defiance .bd-light {
  position: absolute; top: 0; left: 0; right: 0; bottom: 0;
  background: radial-gradient(circle at 40% 50%, rgba(255,200,100,0.15) 0%, transparent 60%);
  mix-blend-mode: overlay;
  animation: bd-light 8s ease-in-out infinite alternate;
  pointer-events: none;
}

@keyframes bd-sky {
  0% { opacity: 0.8; }
  50% { opacity: 1; }
  100% { opacity: 0.7; }
}
@keyframes bd-wall {
  0% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
  100% { transform: translateY(0); }
}
@keyframes bd-tower {
  0% { transform: translateX(-50%) skewX(0deg); }
  50% { transform: translateX(-50%) skewX(1deg) scaleY(1.01); }
  100% { transform: translateX(-50%) skewX(0deg); }
}
@keyframes bd-rampart {
  0% { transform: translateY(0); }
  50% { transform: translateY(-3px); }
  100% { transform: translateY(0); }
}
@keyframes bd-figure {
  0% { transform: translateX(0) rotate(0deg); }
  25% { transform: translateX(8px) rotate(-2deg); }
  50% { transform: translateX(0) rotate(0deg); }
  75% { transform: translateX(-8px) rotate(2deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes bd-owl {
  0% { transform: translateY(0) rotate(0deg); }
  33% { transform: translateY(-15px) rotate(5deg); }
  66% { transform: translateY(-5px) rotate(-5deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes bd-flag {
  0% { transform: rotate(-10deg) scaleY(1); }
  50% { transform: rotate(5deg) scaleY(0.95); }
  100% { transform: rotate(-12deg) scaleY(1); }
}
@keyframes bd-light {
  0% { opacity: 0.3; }
  50% { opacity: 0.7; }
  100% { opacity: 0.4; }
}

/* bordeaux-stag-analogy */
.scn-bordeaux-stag-analogy {
  background: linear-gradient(180deg, #f0c87a 0%, #b87a3e 40%, #6a4a1a 100%), 
              radial-gradient(ellipse at 30% 20%, #fff4b0 0%, transparent 60%);
}
.scn-bordeaux-stag-analogy .sky { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #a8d0e0 0%, transparent 100%); animation: sta-sky 8s ease-in-out infinite alternate; }
.scn-bordeaux-stag-analogy .sun { position:absolute; top:8%; left:22%; width:50px; height:50px; background: radial-gradient(circle, #ffe680 0%, #f0b040 60%, transparent 70%); border-radius:50%; box-shadow:0 0 80px 30px rgba(240,192,64,.4); animation: sta-sun 6s ease-in-out infinite; }
.scn-bordeaux-stag-analogy .ground { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #7a5a2a 0%, #4a3a1a 100%); border-radius:30% 70% 0 0 / 60% 40% 0 0; box-shadow:inset 0 12px 24px rgba(0,0,0,.3); }
.scn-bordeaux-stag-analogy .stag-body { position:absolute; bottom:22%; left:55%; width:36px; height:44px; background: linear-gradient(180deg, #3a3a2a 0%, #1a1a0a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: sta-stag 2s ease-in-out infinite; }
.scn-bordeaux-stag-analogy .antler-left { position:absolute; bottom:56%; left:51%; width:4px; height:20px; background:#3a3a2a; border-radius:0 0 50% 50%; transform: rotate(-25deg); transform-origin: bottom center; animation: sta-antler 2s ease-in-out infinite; }
.scn-bordeaux-stag-analogy .antler-right { position:absolute; bottom:56%; left:61%; width:4px; height:22px; background:#3a3a2a; border-radius:0 0 50% 50%; transform: rotate(25deg); transform-origin: bottom center; animation: sta-antler 2s ease-in-out infinite reverse; }
.scn-bordeaux-stag-analogy .hound-1 { position:absolute; bottom:18%; left:20%; width:28px; height:18px; background: #2a2a1a; border-radius:50% 50% 30% 30% / 60% 60% 40% 40%; transform-origin: center; animation: sta-hound 3s ease-in-out infinite; }
.scn-bordeaux-stag-analogy .hound-2 { position:absolute; bottom:20%; left:8%; width:24px; height:16px; background: #1a1a0a; border-radius:50% 50% 30% 30% / 60% 60% 40% 40%; transform-origin: center; animation: sta-hound 3s ease-in-out infinite 0.5s; }
@keyframes sta-sky { 0% { opacity:.7 } 50% { opacity:1 } 100% { opacity:.8 } }
@keyframes sta-sun { 0% { transform:scale(1) } 50% { transform:scale(1.1) translate(2px, -2px) } 100% { transform:scale(0.95) translate(-1px,1px) } }
@keyframes sta-stag { 0% { transform: translateY(0) rotate(-2deg) } 50% { transform: translateY(-4px) rotate(3deg) scaleX(0.95) } 100% { transform: translateY(0) rotate(-2deg) } }
@keyframes sta-antler { 0% { transform: rotate(-25deg) } 50% { transform: rotate(-30deg) } 100% { transform: rotate(-25deg) } }
@keyframes sta-hound { 0% { transform: translateX(0) scaleX(1) } 50% { transform: translateX(30px) scaleX(1.1) } 100% { transform: translateX(60px) scaleX(1) } }

/* gascony-york-scouts */
.scn-gascony-york-scouts {
  background: linear-gradient(180deg, #c8d0b0 0%, #9aa87a 30%, #6a7a4a 100%), 
              radial-gradient(ellipse at 50% 10%, #e8f0c0 0%, transparent 70%);
}
.scn-gascony-york-scouts .sky { position:absolute; inset:0 0 35% 0; background: linear-gradient(180deg, #b0c0a0 0%, transparent 100%); animation: ys-sky 12s ease-in-out infinite alternate; }
.scn-gascony-york-scouts .ground { position:absolute; bottom:0; left:0; right:0; height:35%; background: linear-gradient(180deg, #7a8a4a 0%, #4a5a2a 100%); border-radius:20% 80% 0 0 / 50% 50% 0 0; box-shadow:inset 0 8px 16px rgba(0,0,0,.2); }
.scn-gascony-york-scouts .scout-left { position:absolute; bottom:22%; left:15%; width:20px; height:30px; background: #3a3a2a; border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ys-scout 4s ease-in-out infinite; }
.scn-gascony-york-scouts .scout-right { position:absolute; bottom:24%; right:20%; width:22px; height:32px; background: #2a2a1a; border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ys-scout 4s ease-in-out infinite 1s; }
.scn-gascony-york-scouts .trumpet { position:absolute; bottom:44%; left:20%; width:20px; height:6px; background: #c0a060; border-radius:0 0 50% 50%; transform: rotate(35deg); transform-origin: left center; animation: ys-trumpet 2s ease-in-out infinite; }
.scn-gascony-york-scouts .flag { position:absolute; bottom:48%; right:25%; width:4px; height:24px; background: #8a4a3a; border-radius:0; transform-origin: bottom; animation: ys-flag 6s ease-in-out infinite; }
.scn-gascony-york-scouts .flag::after { content:''; position:absolute; top:-2px; left:4px; width:16px; height:10px; background: #b86a4a; border-radius:0 4px 4px 0; animation: ys-flag-wave 6s ease-in-out infinite; }
.scn-gascony-york-scouts .dust-cloud { position:absolute; bottom:20%; left:40%; width:40px; height:20px; background: rgba(200,180,140,.3); border-radius:50%; filter: blur(6px); animation: ys-dust 15s linear infinite; }
@keyframes ys-sky { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.7 } }
@keyframes ys-scout { 0% { transform: translateX(0) rotate(-2deg) } 50% { transform: translateX(8px) rotate(2deg) } 100% { transform: translateX(0) rotate(-2deg) } }
@keyframes ys-trumpet { 0% { transform: rotate(35deg) scaleY(1) } 50% { transform: rotate(40deg) scaleY(1.3) } 100% { transform: rotate(35deg) scaleY(1) } }
@keyframes ys-flag { 0% { transform: rotate(-3deg) } 50% { transform: rotate(3deg) } 100% { transform: rotate(-3deg) } }
@keyframes ys-flag-wave { 0% { transform: scaleX(1) } 50% { transform: scaleX(1.2) } 100% { transform: scaleX(1) } }
@keyframes ys-dust { 0% { transform: translateX(0) scale(1); opacity:.5 } 50% { transform: translateX(60px) scale(0.8); opacity:.3 } 100% { transform: translateX(120px) scale(1.2); opacity:0 } }

/* gascony-reinforcement-delay */
.scn-gascony-reinforcement-delay {
  background: linear-gradient(180deg, #8a7a5a 0%, #5a4a2a 50%, #3a2a1a 100%), 
              radial-gradient(ellipse at 50% 100%, #6a5a3a 0%, transparent 70%);
}
.scn-gascony-reinforcement-delay .bg-plains { position:absolute; inset:0; background: linear-gradient(180deg, #7a6a4a 0%, #4a3a1a 100%); animation: rd-plains 20s ease-in-out infinite alternate; }
.scn-gascony-reinforcement-delay .army-left { position:absolute; bottom:15%; left:5%; width:40%; height:20%; background: linear-gradient(90deg, #3a2a1a, #2a1a0a 60%, transparent); border-radius:0 50% 0 0 / 0 100% 0 0; transform-origin: left; animation: rd-army 12s ease-in-out infinite; }
.scn-gascony-reinforcement-delay .army-right { position:absolute; bottom:15%; right:5%; width:40%; height:20%; background: linear-gradient(270deg, #3a2a1a, #2a1a0a 60%, transparent); border-radius:50% 0 0 0 / 100% 0 0 0; transform-origin: right; animation: rd-army 12s ease-in-out infinite 6s; }
.scn-gascony-reinforcement-delay .crossroad { position:absolute; bottom:25%; left:50%; width:40px; height:40px; background: #6a5a3a; clip-path: polygon(45% 0, 55% 0, 55% 45%, 100% 45%, 100% 55%, 55% 55%, 55% 100%, 45% 100%, 45% 55%, 0 55%, 0 45%, 45% 45%); transform: translateX(-50%); animation: rd-cross 8s ease-in-out infinite; }
.scn-gascony-reinforcement-delay .delay-symbol { position:absolute; bottom:40%; left:50%; width:16px; height:16px; background: radial-gradient(circle, #c0a060 0%, #8a6a3a 60%, transparent); border-radius:50%; transform: translateX(-50%); box-shadow:0 0 20px 4px rgba(192,160,96,.3); animation: rd-symbol 4s ease-in-out infinite; }
.scn-gascony-reinforcement-delay .dust-overlay { position:absolute; inset:0; background: radial-gradient(ellipse at 30% 50%, rgba(180,160,120,.15) 0%, transparent 70%); animation: rd-dust 30s linear infinite; }
.scn-gascony-reinforcement-delay .crow { position:absolute; top:10%; left:60%; width:10px; height:8px; background: #1a1a0a; border-radius:50% 50% 40% 40%; animation: rd-crow 9s ease-in-out infinite; }
@keyframes rd-plains { 0% { filter:brightness(1) } 50% { filter:brightness(0.8) } 100% { filter:brightness(1.1) } }
@keyframes rd-army { 0% { transform: scaleY(1) translateY(0); opacity:.6 } 50% { transform: scaleY(1.2) translateY(-5px); opacity:1 } 100% { transform: scaleY(1) translateY(0); opacity:.6 } }
@keyframes rd-cross { 0% { transform: translateX(-50%) rotate(0deg) } 50% { transform: translateX(-50%) rotate(5deg) } 100% { transform: translateX(-50%) rotate(-5deg) } }
@keyframes rd-symbol { 0% { box-shadow:0 0 10px 2px rgba(192,160,96,.2); opacity:.7 } 50% { box-shadow:0 0 30px 8px rgba(192,160,96,.5); opacity:1 } 100% { box-shadow:0 0 15px 3px rgba(192,160,96,.3); opacity:.8 } }
@keyframes rd-dust { 0% { transform: scale(1) } 50% { transform: scale(1.05) } 100% { transform: scale(0.95) } }
@keyframes rd-crow { 0% { transform: translate(0, 0) rotate(0deg) } 25% { transform: translate(20px, -10px) rotate(5deg) } 50% { transform: translate(40px, -20px) rotate(10deg) } 75% { transform: translate(60px, -10px) rotate(5deg) } 100% { transform: translate(80px, 0) rotate(0deg) } }

/* gascony-traitor-blame */
.scn-gascony-traitor-blame {
  background: linear-gradient(180deg, #5a5a4a 0%, #3a3a2a 40%, #1a1a0a 100%), 
              radial-gradient(ellipse at 50% 80%, #4a4a3a 0%, transparent 60%);
}
.scn-gascony-traitor-blame .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #6a6a5a 0%, transparent 100%); animation: tb-sky 10s ease-in-out infinite alternate; }
.scn-gascony-traitor-blame .castle { position:absolute; bottom:40%; left:10%; width:40%; height:30%; background: linear-gradient(180deg, #4a4a3a 0%, #2a2a1a 100%); border-radius:20% 20% 0 0; box-shadow:inset 0 8px 16px rgba(0,0,0,.4); animation: tb-castle 15s ease-in-out infinite; }
.scn-gascony-traitor-blame .knight-body { position:absolute; bottom:18%; left:55%; width:30px; height:36px; background: linear-gradient(180deg, #3a3a2a 0%, #1a1a0a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: tb-knight 4s ease-in-out infinite; }
.scn-gascony-traitor-blame .knight-sword { position:absolute; bottom:36%; left:68%; width:4px; height:30px; background: #8a7a6a; border-radius:0 0 50% 50%; transform: rotate(15deg); transform-origin: bottom center; animation: tb-sword 2s ease-in-out infinite; }
.scn-gascony-traitor-blame .ground { position:absolute; bottom:0; left:0; right:0; height:25%; background: linear-gradient(180deg, #3a3a2a 0%, #1a1a0a 100%); border-radius:40% 60% 0 0 / 70% 30% 0 0; box-shadow:inset 0 12px 20px rgba(0,0,0,.5); }
.scn-gascony-traitor-blame .flag-half { position:absolute; bottom:44%; left:20%; width:4px; height:24px; background: #5a3a2a; transform-origin: bottom; animation: tb-flag 6s ease-in-out infinite; }
.scn-gascony-traitor-blame .flag-half::after { content:''; position:absolute; top:0; left:4px; width:14px; height:8px; background: #6a4a3a; border-radius:0 4px 4px 0; animation: tb-flag-wave 6s ease-in-out infinite; }
.scn-gascony-traitor-blame .shadow-overlay { position:absolute; inset:0; background: radial-gradient(ellipse at 30% 40%, transparent 0%, rgba(0,0,0,.3) 100%); animation: tb-shadow 8s ease-in-out infinite alternate; }
@keyframes tb-sky { 0% { opacity:.6 } 50% { opacity:.9 } 100% { opacity:.7 } }
@keyframes tb-castle { 0% { transform: scaleY(1) } 50% { transform: scaleY(0.95) } 100% { transform: scaleY(1) } }
@keyframes tb-knight { 0% { transform: translateY(0) rotate(1deg) } 50% { transform: translateY(-3px) rotate(-1deg) } 100% { transform: translateY(0) rotate(1deg) } }
@keyframes tb-sword { 0% { transform: rotate(15deg) } 50% { transform: rotate(20deg) } 100% { transform: rotate(15deg) } }
@keyframes tb-flag { 0% { transform: rotate(-2deg) } 50% { transform: rotate(2deg) } 100% { transform: rotate(-2deg) } }
@keyframes tb-flag-wave { 0% { transform: scaleX(1) } 50% { transform: scaleX(1.1) } 100% { transform: scaleX(1) } }
@keyframes tb-shadow { 0% { opacity:0.3 } 50% { opacity:0.5 } 100% { opacity:0.4 } }

/* === Scene 1: court-king-reason === */
.scn-court-king-reason {
  background: 
    linear-gradient(180deg, #f5e6d0 0%, #d4bba5 40%, #b89a7a 100%),
    radial-gradient(ellipse at 30% 80%, #fff8f0 0%, transparent 60%),
    linear-gradient(0deg, #7a5a3a 0%, #5a3a2a 100%);
  background-blend-mode: overlay, normal, normal;
}
.scn-court-king-reason .floor {
  position: absolute; inset: auto 0 0 0; height: 30%;
  background: repeating-linear-gradient(90deg, #4a3a2a 0px, #4a3a2a 30px, #3a2a1a 30px, #3a2a1a 60px);
  opacity: 0.7;
  animation: c1-floor 12s ease-in-out infinite;
}
.scn-court-king-reason .wall-bg {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #e8d5c0 0%, #c8b098 100%);
  border-radius: 0 0 20% 20% / 0 0 10% 10%;
}
.scn-court-king-reason .throne {
  position: absolute; bottom: 30%; left: 50%; transform: translateX(-50%);
  width: 100px; height: 140px;
  background: linear-gradient(180deg, #b09070 0%, #806050 50%, #604030 100%);
  border-radius: 20% 20% 10% 10% / 30% 30% 20% 20%;
  box-shadow: 8px 8px 20px rgba(0,0,0,0.4);
  animation: c1-throne 6s ease-in-out infinite alternate;
}
.scn-court-king-reason .king {
  position: absolute; bottom: 34%; left: 50%; transform: translateX(-50%);
  width: 40px; height: 80px;
  background: radial-gradient(ellipse at 50% 20%, #2a1a1a 0%, #0a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  animation: c1-king 8s ease-in-out infinite;
}
.scn-court-king-reason .scepter {
  position: absolute; bottom: 50%; left: 58%; transform-origin: bottom center;
  width: 6px; height: 50px;
  background: linear-gradient(180deg, #d4af37 0%, #b8860b 100%);
  border-radius: 2px;
  animation: c1-scepter 4s ease-in-out infinite alternate;
}
.scn-court-king-reason .banner-l {
  position: absolute; top: 12%; left: 5%; width: 50px; height: 100px;
  background: linear-gradient(180deg, #2c3e50 0%, #1a252f 100%);
  border-radius: 4px;
  box-shadow: 2px 2px 8px rgba(0,0,0,0.5);
  animation: c1-banner 10s ease-in-out infinite;
}
.scn-court-king-reason .window-r {
  position: absolute; top: 15%; right: 8%; width: 60px; height: 90px;
  background: linear-gradient(180deg, #ffe8c0 0%, #ffd8a0 100%);
  border: 4px solid #806050;
  border-radius: 10% 10% 30% 30%;
  box-shadow: 0 0 30px 10px rgba(255,232,192,0.4);
  animation: c1-window 7s ease-in-out infinite alternate;
}
.scn-court-king-reason .candle-sconce {
  position: absolute; top: 22%; left: 48%; width: 8px; height: 16px;
  background: radial-gradient(circle, #ffcc80 0%, #d49a5a 100%);
  border-radius: 50%;
  box-shadow: 0 0 20px 6px #d49a5a;
  animation: c1-candle 3s ease-in-out infinite;
}
@keyframes c1-floor {
  0% { opacity: 0.6; transform: scaleY(1); }
  50% { opacity: 0.75; transform: scaleY(1.02); }
  100% { opacity: 0.65; transform: scaleY(0.98); }
}
@keyframes c1-throne {
  0% { transform: translateX(-50%) scale(1) rotate(-0.5deg); }
  50% { transform: translateX(-50%) scale(1.01) rotate(0.5deg); }
  100% { transform: translateX(-50%) scale(0.99) rotate(-0.2deg); }
}
@keyframes c1-king {
  0% { transform: translateX(-50%) translateY(0) rotate(-1deg); }
  50% { transform: translateX(-50%) translateY(-2px) rotate(1deg); }
  100% { transform: translateX(-50%) translateY(0) rotate(0); }
}
@keyframes c1-scepter {
  0% { transform: rotate(-5deg); }
  50% { transform: rotate(5deg); }
  100% { transform: rotate(-3deg); }
}
@keyframes c1-banner {
  0% { transform: rotate(-2deg) scaleX(0.98); }
  50% { transform: rotate(3deg) scaleX(1.02); }
  100% { transform: rotate(-1deg) scaleX(0.99); }
}
@keyframes c1-window {
  0% { box-shadow: 0 0 20px 6px rgba(255,232,192,0.3); opacity: 0.85; }
  50% { box-shadow: 0 0 40px 15px rgba(255,232,192,0.6); opacity: 1; }
  100% { box-shadow: 0 0 25px 8px rgba(255,232,192,0.35); opacity: 0.9; }
}
@keyframes c1-candle {
  0% { box-shadow: 0 0 12px 4px #d49a5a; opacity: 0.8; }
  50% { box-shadow: 0 0 24px 10px #ffcc80; opacity: 1; }
  100% { box-shadow: 0 0 15px 5px #d49a5a; opacity: 0.85; }
}

/* === Scene 2: court-york-regent === */
.scn-court-york-regent {
  background: 
    linear-gradient(180deg, #f0e6d8 0%, #d6c4b0 40%, #b8a088 100%),
    radial-gradient(ellipse at 70% 20%, #fffcf5 0%, transparent 50%);
}
.scn-court-york-regent .floor {
  position: absolute; inset: auto 0 0 0; height: 25%;
  background: linear-gradient(180deg, #5a4030 0%, #3a2818 100%);
  border-radius: 0 0 0 0;
}
.scn-court-york-regent .wall-bg {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(180deg, #e2d2c0 0%, #c4b098 100%);
  border-radius: 0 0 30% 30% / 0 0 15% 15%;
}
.scn-court-york-regent .table {
  position: absolute; bottom: 25%; left: 50%; transform: translateX(-50%);
  width: 120px; height: 30px;
  background: linear-gradient(180deg, #6a5040 0%, #4a3020 100%);
  border-radius: 8px;
  box-shadow: 0 6px 10px rgba(0,0,0,0.4);
  animation: c2-table 15s ease-in-out infinite;
}
.scn-court-york-regent .york {
  position: absolute; bottom: 32%; left: 38%; width: 30px; height: 70px;
  background: radial-gradient(ellipse at 50% 30%, #2a1a1a 0%, #0a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  animation: c2-york 6s ease-in-out infinite;
}
.scn-court-york-regent .regent {
  position: absolute; bottom: 32%; right: 38%; width: 28px; height: 68px;
  background: radial-gradient(ellipse at 50% 30%, #3a2a1a 0%, #1a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  animation: c2-regent 6s ease-in-out infinite reverse;
}
.scn-court-york-regent .candle {
  position: absolute; bottom: 45%; left: 50%; transform: translateX(-50%);
  width: 6px; height: 18px;
  background: linear-gradient(180deg, #ffcc80 0%, #d49a5a 100%);
  border-radius: 40%;
  box-shadow: 0 0 20px 8px #d49a5a;
  animation: c2-candle 2.5s ease-in-out infinite;
}
.scn-court-york-regent .tapestry {
  position: absolute; top: 10%; left: 10%; width: 80px; height: 110px;
  background: linear-gradient(180deg, #4a3a5a 0%, #2a1a3a 100%);
  border-radius: 4px;
  box-shadow: 0 2px 6px rgba(0,0,0,0.3);
  animation: c2-tapestry 12s ease-in-out infinite;
}
.scn-court-york-regent .chair {
  position: absolute; bottom: 28%; left: 30%; width: 30px; height: 50px;
  background: linear-gradient(180deg, #5a4030 0%, #3a2818 100%);
  border-radius: 10% 10% 20% 20% / 30% 30% 10% 10%;
  animation: c2-chair 8s ease-in-out infinite;
}
@keyframes c2-table {
  0% { transform: translateX(-50%) scaleX(1); }
  50% { transform: translateX(-50%) scaleX(1.02) rotate(0.5deg); }
  100% { transform: translateX(-50%) scaleX(0.98); }
}
@keyframes c2-york {
  0% { transform: translateX(0) rotate(-1deg); }
  50% { transform: translateX(2px) rotate(1deg); }
  100% { transform: translateX(-1px) rotate(-0.5deg); }
}
@keyframes c2-regent {
  0% { transform: translateX(0) rotate(1deg); }
  50% { transform: translateX(-2px) rotate(-1deg); }
  100% { transform: translateX(1px) rotate(0.5deg); }
}
@keyframes c2-candle {
  0% { box-shadow: 0 0 15px 5px #d49a5a; opacity: 0.9; }
  40% { box-shadow: 0 0 28px 12px #ffcc80; opacity: 1; }
  70% { box-shadow: 0 0 18px 6px #d49a5a; opacity: 0.85; }
  100% { box-shadow: 0 0 22px 8px #d49a5a; opacity: 0.95; }
}
@keyframes c2-tapestry {
  0% { transform: rotate(-0.5deg) scaleY(1); }
  50% { transform: rotate(0.5deg) scaleY(1.01); }
  100% { transform: rotate(-0.3deg) scaleY(0.99); }
}
@keyframes c2-chair {
  0% { transform: rotate(0deg); }
  50% { transform: rotate(1deg) scale(1.01); }
  100% { transform: rotate(-0.5deg); }
}

/* === Scene 3: court-return-to-england === */
.scn-court-return-to-england {
  background: 
    linear-gradient(180deg, #f8efe8 0%, #ddd0c0 35%, #bfa898 100%),
    radial-gradient(ellipse at 20% 60%, #ffffff 0%, transparent 50%);
}
.scn-court-return-to-england .floor {
  position: absolute; inset: auto 0 0 0; height: 28%;
  background: linear-gradient(90deg, #5a4030 0%, #4a3020 30%, #5a4030 100%);
  opacity: 0.8;
  border-radius: 0 0 0 0;
}
.scn-court-return-to-england .wall-bg {
  position: absolute; inset: 0 0 28% 0;
  background: linear-gradient(180deg, #e8dac8 0%, #c9b8a0 100%);
  border-radius: 0 0 25% 25% / 0 0 12% 12%;
}
.scn-court-return-to-england .doorway {
  position: absolute; bottom: 28%; left: 50%; transform: translateX(-50%);
  width: 80px; height: 130px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a100a 100%);
  border-radius: 40% 40% 5% 5% / 60% 60% 5% 5%;
  box-shadow: inset 0 0 20px rgba(0,0,0,0.8);
  animation: c3-doorway 14s ease-in-out infinite;
}
.scn-court-return-to-england .figure-enter {
  position: absolute; bottom: 30%; left: 46%; width: 22px; height: 60px;
  background: radial-gradient(ellipse at 50% 20%, #1a1a1a 0%, #0a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  animation: c3-enter 5s ease-in-out infinite;
}
.scn-court-return-to-england .figure-follow {
  position: absolute; bottom: 30%; left: 52%; width: 20px; height: 55px;
  background: radial-gradient(ellipse at 50% 20%, #2a2a1a 0%, #0a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  animation: c3-follow 5s ease-in-out infinite 0.8s;
}
.scn-court-return-to-england .banner-arch {
  position: absolute; top: 8%; left: 25%; width: 60px; height: 80px;
  background: linear-gradient(180deg, #2c3e50 0%, #1a252f 100%);
  border-radius: 50% 50% 0 0 / 40% 40% 0 0;
  box-shadow: 0 4px 12px rgba(0,0,0,0.4);
  animation: c3-banner 11s ease-in-out infinite;
}
.scn-court-return-to-england .torch {
  position: absolute; bottom: 55%; left: 48%; width: 8px; height: 14px;
  background: radial-gradient(circle, #ffd080 0%, #d49a5a 100%);
  border-radius: 50%;
  box-shadow: 0 0 20px 10px #d49a5a;
  animation: c3-torch 1.8s ease-in-out infinite alternate;
}
.scn-court-return-to-england .step {
  position: absolute; bottom: 28%; left: 50%; transform: translateX(-50%);
  width: 100px; height: 6px;
  background: linear-gradient(180deg, #7a6040 0%, #5a4020 100%);
  border-radius: 4px;
  opacity: 0.9;
  animation: c3-step 20s linear infinite;
}
@keyframes c3-doorway {
  0% { transform: translateX(-50%) scaleX(1) rotate(0deg); }
  50% { transform: translateX(-50%) scaleX(1.02) rotate(0.5deg); }
  100% { transform: translateX(-50%) scaleX(0.98) rotate(-0.3deg); }
}
@keyframes c3-enter {
  0% { transform: translateX(-50%) translateY(0) rotate(-2deg); }
  25% { transform: translateX(-50%) translateY(-2px) rotate(1deg); }
  50% { transform: translateX(-50%) translateY(-4px) rotate(0deg); }
  75% { transform: translateX(-50%) translateY(-2px) rotate(-1deg); }
  100% { transform: translateX(-50%) translateY(0) rotate(2deg); }
}
@keyframes c3-follow {
  0% { transform: translateX(0) translateY(0) rotate(2deg); }
  25% { transform: translateX(2px) translateY(-1px) rotate(-1deg); }
  50% { transform: translateX(4px) translateY(-3px) rotate(0deg); }
  75% { transform: translateX(2px) translateY(-2px) rotate(1deg); }
  100% { transform: translateX(0) translateY(0) rotate(-2deg); }
}
@keyframes c3-banner {
  0% { transform: rotate(-1deg) scaleY(0.99); }
  50% { transform: rotate(2deg) scaleY(1.02); }
  100% { transform: rotate(-0.5deg) scaleY(0.98); }
}
@keyframes c3-torch {
  0% { box-shadow: 0 0 15px 6px #d49a5a; opacity: 0.85; }
  50% { box-shadow: 0 0 30px 15px #ffd080; opacity: 1; }
  100% { box-shadow: 0 0 18px 7px #d49a5a; opacity: 0.9; }
}
@keyframes c3-step {
  0% { opacity: 0.8; transform: translateX(-50%) scaleY(1); }
  50% { opacity: 0.9; transform: translateX(-50%) scaleY(1.05); }
  100% { opacity: 0.85; transform: translateX(-50%) scaleY(0.95); }
}

/* === Scene 4: court-york-displeasure === */
.scn-court-york-displeasure {
  background: 
    linear-gradient(180deg, #2a2028 0%, #1a141c 40%, #0a0a0e 100%),
    radial-gradient(ellipse at 70% 40%, #3a2a3a 0%, transparent 60%),
    linear-gradient(0deg, #0a0a0a 0%, #1a1414 100%);
  background-blend-mode: normal, overlay, normal;
}
.scn-court-york-displeasure .floor {
  position: absolute; inset: auto 0 0 0; height: 20%;
  background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%);
  opacity: 0.8;
  border-radius: 0 0 0 0;
}
.scn-court-york-displeasure .wall-bg {
  position: absolute; inset: 0 0 20% 0;
  background: linear-gradient(180deg, #2a2028 0%, #1a141c 100%);
  border-radius: 0 0 20% 20% / 0 0 10% 10%;
  box-shadow: inset 0 4px 20px rgba(0,0,0,0.6);
}
.scn-court-york-displeasure .exeter {
  position: absolute; bottom: 20%; left: 30%; width: 34px; height: 80px;
  background: radial-gradient(ellipse at 50% 20%, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  animation: c4-exeter 2.5s ease-in-out infinite;
}
.scn-court-york-displeasure .shadow-block {
  position: absolute; bottom: 20%; left: 55%; width: 60px; height: 100px;
  background: linear-gradient(180deg, rgba(0,0,0,0.6) 0%, rgba(0,0,0,0.9) 100%);
  border-radius: 10% 10% 0 0;
  filter: blur(3px);
  animation: c4-shadow 4s ease-in-out infinite alternate;
}
.scn-court-york-displeasure .throne-dark {
  position: absolute; bottom: 22%; left: 68%; transform: translateX(-50%);
  width: 70px; height: 110px;
  background: linear-gradient(180deg, #3a2a2a 0%, #1a0a0a 100%);
  border-radius: 15% 15% 5% 5% / 30% 30% 10% 10%;
  box-shadow: 0 0 20px rgba(0,0,0,0.8);
  animation: c4-throne 5s ease-in-out infinite;
}
.scn-court-york-displeasure .candle-tense {
  position: absolute; bottom: 42%; left: 35%; width: 6px; height: 16px;
  background: radial-gradient(circle, #ff8844 0%, #b84a1a 100%);
  border-radius: 40%;
  box-shadow: 0 0 18px 8px #b84a1a;
  animation: c4-candle 0.6s ease-in-out infinite alternate;
}
.scn-court-york-displeasure .curtain {
  position: absolute; top: 0; right: 0; width: 50px; height: 100%;
  background: linear-gradient(180deg, #5a1a1a 0%, #3a0a0a 100%);
  border-radius: 0 0 0 30%;
  box-shadow: -6px 0 12px rgba(0,0,0,0.5);
  animation: c4-curtain 8s ease-in-out infinite;
}
.scn-court-york-displeasure .dagger-hand {
  position: absolute; bottom: 38%; left: 42%; width: 20px; height: 28px;
  background: radial-gradient(ellipse at 50% 60%, #8a8a8a 0%, #4a4a4a 100%);
  border-radius: 40% 40% 50% 50% / 30% 30% 60% 60%;
  clip-path: polygon(0 30%, 30% 0, 70% 0, 100% 30%, 100% 70%, 70% 100%, 30% 100%, 0 70%);
  transform: rotate(30deg);
  animation: c4-dagger 1.2s ease-in-out infinite;
}
@keyframes c4-exeter {
  0% { transform: rotate(-2deg) translateY(0); }
  50% { transform: rotate(2deg) translateY(-2px); }
  100% { transform: rotate(-1deg) translateY(1px); }
}
@keyframes c4-shadow {
  0% { opacity: 0.5; transform: scaleX(0.95); }
  50% { opacity: 0.8; transform: scaleX(1.05); }
  100% { opacity: 0.6; transform: scaleX(0.98); }
}
@keyframes c4-throne {
  0% { transform: translateX(-50%) rotate(-1deg); }
  50% { transform: translateX(-50%) rotate(1deg) scale(1.02); }
  100% { transform: translateX(-50%) rotate(0deg); }
}
@keyframes c4-candle {
  0% { box-shadow: 0 0 10px 4px #b84a1a; opacity: 0.7; transform: scaleY(1); }
  50% { box-shadow: 0 0 25px 12px #ff8844; opacity: 1; transform: scaleY(1.05); }
  100% { box-shadow: 0 0 12px 5px #b84a1a; opacity: 0.8; transform: scaleY(0.95); }
}
@keyframes c4-curtain {
  0% { transform: rotate(0deg); }
  50% { transform: rotate(2deg) scaleY(1.02); }
  100% { transform: rotate(-1deg) scaleY(0.98); }
}
@keyframes c4-dagger {
  0% { transform: rotate(25deg) translateY(0); }
  50% { transform: rotate(35deg) translateY(-1px); }
  100% { transform: rotate(28deg) translateY(0); }
}

/* talbot-riddle-substance */
.scn-talbot-riddle-substance {
  background:
    linear-gradient(180deg, #3a2a1a 0%, #5a4a3a 30%, #8a7a6a 70%, #babaaa 100%),
    radial-gradient(ellipse at 30% 60%, #fff4e0 0%, transparent 70%);
}
.scn-talbot-riddle-substance .wall-bg {
  position: absolute; inset: 0; background: linear-gradient(135deg, #5a4a3a 0%, #8a7a6a 50%, #6a5a4a 100%);
  animation: trs-wall 20s ease-in-out infinite alternate;
}
.scn-talbot-riddle-substance .window {
  position: absolute; top: 10%; left: 65%; width: 80px; height: 110px;
  background: radial-gradient(circle at 40% 30%, #fff8f0 0%, #d0c0a0 80%);
  border-radius: 4px; box-shadow: inset 0 0 20px rgba(255,255,200,0.6), 0 0 30px rgba(255,240,200,0.3);
  animation: trs-window 8s ease-in-out infinite alternate;
}
.scn-talbot-riddle-substance .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(180deg, #7a6a5a 0%, #4a3a2a 100%);
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.5);
}
.scn-talbot-riddle-substance .shadow-figure {
  position: absolute; bottom: 25%; left: 30%; width: 50px; height: 120px;
  background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: trs-shadow-fig 6s ease-in-out infinite;
  filter: blur(1px);
}
.scn-talbot-riddle-substance .substance-glow {
  position: absolute; bottom: 55%; left: 38%; width: 12px; height: 12px;
  background: radial-gradient(circle, #ffe080 0%, #c0a060 80%);
  border-radius: 50%; box-shadow: 0 0 20px 8px rgba(255,224,128,0.7), 0 0 40px 15px rgba(255,224,128,0.3);
  animation: trs-subst 4s ease-in-out infinite alternate;
}
.scn-talbot-riddle-substance .spear {
  position: absolute; bottom: 25%; left: 15%; width: 4px; height: 130px;
  background: linear-gradient(180deg, #8a7a6a 0%, #5a4a3a 100%);
  border-radius: 2px; box-shadow: 0 0 8px 2px rgba(0,0,0,0.5);
  transform: rotate(10deg);
  animation: trs-spear 10s ease-in-out infinite alternate;
}
.scn-talbot-riddle-substance .crack {
  position: absolute; top: 30%; left: 40%; width: 60px; height: 4px;
  background: linear-gradient(90deg, transparent, #3a2a1a 40%, #5a4a3a 60%, transparent);
  border-radius: 2px; filter: blur(1px);
  animation: trs-crack 12s ease-in-out infinite alternate;
}
@keyframes trs-wall { 0%{ opacity:0.9 } 50%{ opacity:1 } 100%{ opacity:0.85 } }
@keyframes trs-window { 0%{ box-shadow: inset 0 0 15px rgba(255,255,200,0.4), 0 0 20px rgba(255,240,200,0.2); } 50%{ box-shadow: inset 0 0 30px rgba(255,255,200,0.8), 0 0 40px rgba(255,240,200,0.5); } 100%{ box-shadow: inset 0 0 20px rgba(255,255,200,0.6), 0 0 25px rgba(255,240,200,0.3); } }
@keyframes trs-shadow-fig { 0%{ transform: scale(1) translateX(0) rotate(0deg); } 33%{ transform: scale(1.02) translateX(5px) rotate(2deg); } 66%{ transform: scale(0.98) translateX(-3px) rotate(-1deg); } 100%{ transform: scale(1) translateX(0) rotate(0deg); } }
@keyframes trs-subst { 0%{ opacity:0.6; transform: scale(0.8); } 50%{ opacity:1; transform: scale(1.2); } 100%{ opacity:0.7; transform: scale(0.9); } }
@keyframes trs-spear { 0%{ transform: rotate(8deg) translateY(0); } 50%{ transform: rotate(12deg) translateY(-3px); } 100%{ transform: rotate(8deg) translateY(0); } }
@keyframes trs-crack { 0%{ width:50px; opacity:0.5; } 50%{ width:70px; opacity:1; } 100%{ width:55px; opacity:0.6; } }

/* talbot-summons-soldiers */
.scn-talbot-summons-soldiers {
  background:
    linear-gradient(180deg, #4a3a2a 0%, #7a6a5a 40%, #9a8a7a 70%, #babaa0 100%),
    radial-gradient(ellipse at 20% 50%, #d0c0a0 0%, transparent 80%);
}
.scn-talbot-summons-soldiers .wall-bg {
  position: absolute; inset: 0; background: linear-gradient(135deg, #6a5a4a 0%, #8a7a6a 50%, #5a4a3a 100%);
  animation: tss-wall 15s ease-in-out infinite alternate;
}
.scn-talbot-summons-soldiers .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #8a7a6a 0%, #5a4a3a 100%);
  box-shadow: inset 0 8px 16px rgba(0,0,0,0.4);
}
.scn-talbot-summons-soldiers .talbot-horn {
  position: absolute; bottom: 20%; left: 15%; width: 55px; height: 130px;
  background: linear-gradient(180deg, #3a3a3a 0%, #1a1a1a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: tss-talbot 5s ease-in-out infinite;
}
.scn-talbot-summons-soldiers .horn-sound {
  position: absolute; bottom: 45%; left: 12%; width: 20px; height: 20px;
  background: radial-gradient(circle, #d0b080 0%, transparent 100%);
  border-radius: 50%;
  animation: tss-horn-sound 2s ease-in-out infinite;
}
.scn-talbot-summons-soldiers .soldier-left {
  position: absolute; bottom: 20%; left: 55%; width: 30px; height: 80px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 30% 30% 20% 20% / 40% 40% 30% 30%;
  animation: tss-soldier-left 8s ease-in-out infinite;
}
.scn-talbot-summons-soldiers .soldier-right {
  position: absolute; bottom: 20%; left: 72%; width: 30px; height: 80px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 30% 30% 20% 20% / 40% 40% 30% 30%;
  animation: tss-soldier-right 8s ease-in-out infinite 2s;
}
.scn-talbot-summons-soldiers .drum {
  position: absolute; bottom: 25%; left: 40%; width: 30px; height: 30px;
  border-radius: 50%;
  background: radial-gradient(circle, #a08060 0%, #6a5040 70%);
  box-shadow: 0 4px 8px rgba(0,0,0,0.5);
  animation: tss-drum 6s ease-in-out infinite alternate;
}
.scn-talbot-summons-soldiers .door {
  position: absolute; bottom: 20%; right: 10%; width: 60px; height: 120px;
  background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%);
  border-radius: 4px 4px 0 0;
  box-shadow: inset 0 0 10px rgba(0,0,0,0.4);
  animation: tss-door 12s ease-in-out infinite;
}
@keyframes tss-wall { 0%{ opacity:0.8 } 50%{ opacity:1 } 100%{ opacity:0.9 } }
@keyframes tss-talbot { 0%{ transform: scale(1) translateY(0) rotate(0deg); } 25%{ transform: scale(1.03) translateY(-2px) rotate(2deg); } 50%{ transform: scale(0.97) translateY(1px) rotate(-2deg); } 75%{ transform: scale(1.01) translateY(-1px) rotate(1deg); } 100%{ transform: scale(1) translateY(0) rotate(0deg); } }
@keyframes tss-horn-sound { 0%{ opacity:0.4; transform: scale(0.8); } 50%{ opacity:1; transform: scale(1.5); } 100%{ opacity:0.4; transform: scale(0.8); } }
@keyframes tss-soldier-left { 0%{ transform: translateX(0) scale(1); } 50%{ transform: translateX(15px) scale(1.05); } 100%{ transform: translateX(0) scale(1); } }
@keyframes tss-soldier-right { 0%{ transform: translateX(0) scale(1); } 50%{ transform: translateX(-10px) scale(0.95); } 100%{ transform: translateX(0) scale(1); } }
@keyframes tss-drum { 0%{ box-shadow: 0 4px 8px rgba(0,0,0,0.4); } 50%{ box-shadow: 0 6px 12px rgba(0,0,0,0.7); transform: scale(1.1); } 100%{ box-shadow: 0 4px 8px rgba(0,0,0,0.4); transform: scale(1); } }
@keyframes tss-door { 0%{ opacity:0.7; } 50%{ opacity:1; } 100%{ opacity:0.8; } }

/* countess-apologizes */
.scn-countess-apologizes {
  background:
    linear-gradient(180deg, #3a2a1a 0%, #6a5a4a 40%, #8a7a6a 70%, #babaaa 100%),
    radial-gradient(ellipse at 50% 30%, #d0c0a0 0%, transparent 70%);
}
.scn-countess-apologizes .wall-bg {
  position: absolute; inset: 0; background: linear-gradient(135deg, #6a5a4a 0%, #8a7a6a 50%, #5a4a3a 100%);
  animation: ca-wall 25s ease-in-out infinite alternate;
}
.scn-countess-apologizes .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #8a7a6a 0%, #5a4a3a 100%);
  box-shadow: inset 0 8px 16px rgba(0,0,0,0.3);
}
.scn-countess-apologizes .window-soft {
  position: absolute; top: 15%; left: 70%; width: 70px; height: 100px;
  background: radial-gradient(circle at 40% 30%, #fff8f0 0%, #d0c0a0 80%);
  border-radius: 4px; box-shadow: inset 0 0 20px rgba(255,255,200,0.5), 0 0 30px rgba(255,240,200,0.2);
  animation: ca-window 12s ease-in-out infinite alternate;
}
.scn-countess-apologizes .talbot {
  position: absolute; bottom: 20%; left: 25%; width: 45px; height: 110px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: ca-talbot 8s ease-in-out infinite;
}
.scn-countess-apologizes .countess {
  position: absolute; bottom: 20%; left: 50%; width: 40px; height: 90px;
  background: linear-gradient(180deg, #5a4a4a 0%, #3a2a2a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: ca-countess 8s ease-in-out infinite 1s;
  transform: translateY(5px) scale(0.9);
}
.scn-countess-apologizes .candle {
  position: absolute; bottom: 25%; left: 40%; width: 8px; height: 30px;
  background: linear-gradient(180deg, #e0c080 0%, #c0a060 100%);
  border-radius: 4px 4px 2px 2px;
  animation: ca-candle 3s ease-in-out infinite alternate;
}
.scn-countess-apologizes .candle::after {
  content: ''; position: absolute; top: -6px; left: -2px; width: 12px; height: 12px;
  background: radial-gradient(circle, #ffd060 0%, #c08040 80%);
  border-radius: 50%;
  box-shadow: 0 0 12px 6px rgba(255,208,96,0.6);
}
.scn-countess-apologizes .rug {
  position: absolute; bottom: 20%; left: 20%; width: 60%; height: 15%;
  background: linear-gradient(135deg, #5a3a2a 0%, #7a5a4a 50%, #5a3a2a 100%);
  border-radius: 20% / 50%;
  transform: scaleX(1.2);
  animation: ca-rug 20s ease-in-out infinite alternate;
}
@keyframes ca-wall { 0%{ opacity:0.85 } 50%{ opacity:1 } 100%{ opacity:0.9 } }
@keyframes ca-window { 0%{ box-shadow: inset 0 0 15px rgba(255,255,200,0.4), 0 0 20px rgba(255,240,200,0.1); } 50%{ box-shadow: inset 0 0 25px rgba(255,255,200,0.7), 0 0 35px rgba(255,240,200,0.4); } 100%{ box-shadow: inset 0 0 18px rgba(255,255,200,0.5), 0 0 25px rgba(255,240,200,0.2); } }
@keyframes ca-talbot { 0%{ transform: scale(1) translateX(0) rotate(0deg); } 33%{ transform: scale(1.01) translateX(2px) rotate(1deg); } 66%{ transform: scale(0.99) translateX(-1px) rotate(-1deg); } 100%{ transform: scale(1) translateX(0) rotate(0deg); } }
@keyframes ca-countess { 0%{ transform: translateY(5px) scale(0.9) rotate(0deg); } 50%{ transform: translateY(2px) scale(0.92) rotate(2deg); } 100%{ transform: translateY(5px) scale(0.9) rotate(0deg); } }
@keyframes ca-candle { 0%{ transform: scaleY(0.9); } 50%{ transform: scaleY(1.1); } 100%{ transform: scaleY(0.95); } }
@keyframes ca-rug { 0%{ transform: scaleX(1.2) translateX(0); } 50%{ transform: scaleX(1.22) translateX(10px); } 100%{ transform: scaleX(1.2) translateX(0); } }

/* talbot-gracious */
.scn-talbot-gracious {
  background:
    linear-gradient(180deg, #3a2a1a 0%, #6a5a4a 40%, #8a7a6a 70%, #babaaa 100%),
    radial-gradient(ellipse at 60% 40%, #d0c0a0 0%, transparent 70%);
}
.scn-talbot-gracious .wall-bg {
  position: absolute; inset: 0; background: linear-gradient(135deg, #6a5a4a 0%, #8a7a6a 50%, #5a4a3a 100%);
  animation: tg-wall 30s ease-in-out infinite alternate;
}
.scn-talbot-gracious .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 15%;
  background: linear-gradient(180deg, #7a6a5a 0%, #4a3a2a 100%);
  box-shadow: inset 0 8px 16px rgba(0,0,0,0.3);
}
.scn-talbot-gracious .table {
  position: absolute; bottom: 15%; left: 25%; width: 50%; height: 10%;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 4px;
  box-shadow: 0 4px 8px rgba(0,0,0,0.4);
  animation: tg-table 15s ease-in-out infinite alternate;
}
.scn-talbot-gracious .wine-goblet {
  position: absolute; bottom: 28%; left: 35%; width: 14px; height: 24px;
  background: linear-gradient(180deg, #c0a080 0%, #8a7050 100%);
  border-radius: 4px 4px 30% 30%;
  transform: rotate(-10deg);
  animation: tg-goblet 6s ease-in-out infinite;
}
.scn-talbot-gracious .wine-goblet::after {
  content: ''; position: absolute; top: -4px; left: -2px; width: 18px; height: 10px;
  background: radial-gradient(circle, #d0a070 0%, #a08060 100%);
  border-radius: 50%;
}
.scn-talbot-gracious .plate {
  position: absolute; bottom: 25%; left: 50%; width: 40px; height: 40px;
  background: radial-gradient(circle, #c0b0a0 0%, #a09080 80%);
  border-radius: 50%;
  box-shadow: 0 2px 6px rgba(0,0,0,0.3);
  animation: tg-plate 10s ease-in-out infinite alternate;
}
.scn-talbot-gracious .food-bread {
  position: absolute; bottom: 30%; left: 48%; width: 18px; height: 12px;
  background: radial-gradient(circle, #d0a060 0%, #b08040 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform: rotate(15deg);
  animation: tg-bread 8s ease-in-out infinite;
}
.scn-talbot-gracious .food-cheese {
  position: absolute; bottom: 28%; left: 55%; width: 14px; height: 10px;
  background: radial-gradient(circle, #e0c060 0%, #c0a040 100%);
  border-radius: 30% 30% 20% 20% / 40% 40% 20% 20%;
  transform: rotate(-10deg);
  animation: tg-cheese 9s ease-in-out infinite 2s;
}
.scn-talbot-gracious .talbot-seated {
  position: absolute; bottom: 15%; left: 10%; width: 40px; height: 100px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: tg-talbot 12s ease-in-out infinite;
}
.scn-talbot-gracious .countess-seated {
  position: absolute; bottom: 15%; left: 72%; width: 38px; height: 85px;
  background: linear-gradient(180deg, #5a4a4a 0%, #3a2a2a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: tg-countess 12s ease-in-out infinite 3s;
}
@keyframes tg-wall { 0%{ opacity:0.85 } 50%{ opacity:1 } 100%{ opacity:0.9 } }
@keyframes tg-table { 0%{ transform: scale(1) translateX(0); } 50%{ transform: scale(1.01) translateX(5px); } 100%{ transform: scale(1) translateX(0); } }
@keyframes tg-goblet { 0%{ transform: rotate(-12deg) translateY(0); } 33%{ transform: rotate(-8deg) translateY(-2px); } 66%{ transform: rotate(-14deg) translateY(1px); } 100%{ transform: rotate(-12deg) translateY(0); } }
@keyframes tg-plate { 0%{ transform: scale(1); } 50%{ transform: scale(1.05); } 100%{ transform: scale(1); } }
@keyframes tg-bread { 0%{ transform: rotate(15deg) scale(1); } 50%{ transform: rotate(20deg) scale(1.03); } 100%{ transform: rotate(15deg) scale(1); } }
@keyframes tg-cheese { 0%{ transform: rotate(-10deg) scale(1); } 33%{ transform: rotate(-5deg) scale(0.97); } 66%{ transform: rotate(-12deg) scale(1.02); } 100%{ transform: rotate(-10deg) scale(1); } }
@keyframes tg-talbot { 0%{ transform: scale(1) translateX(0) rotate(0deg); } 25%{ transform: scale(1.01) translateX(2px) rotate(1deg); } 50%{ transform: scale(0.99) translateX(-1px) rotate(-1deg); } 75%{ transform: scale(1.01) translateX(1px) rotate(0.5deg); } 100%{ transform: scale(1) translateX(0) rotate(0deg); } }
@keyframes tg-countess { 0%{ transform: scale(1) translateX(0) rotate(0deg); } 33%{ transform: scale(0.98) translateX(3px) rotate(1.5deg); } 66%{ transform: scale(1.02) translateX(-2px) rotate(-1deg); } 100%{ transform: scale(1) translateX(0) rotate(0deg); } }

/* mortimer-narrates-hal – calm dim-interior, two figures in stone chamber */
.scn-mortimer-narrates-hal {
  background: 
    linear-gradient(180deg, #1a1520 0%, #2a1e28 30%, #3c2e2a 60%, #2a2018 100%),
    radial-gradient(ellipse at 50% 60%, #4a3e32 0%, transparent 80%);
}
.scn-mortimer-narrates-hal .wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #2a2228 0%, #3a2e2a 40%, #4a3e38 100%);
  box-shadow: inset 0 0 40px rgba(0,0,0,.5);
}
.scn-mortimer-narrates-hal .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(0deg, #1a1410 0%, #2a2018 50%, #3a2e24 100%);
  box-shadow: inset 0 12px 20px rgba(0,0,0,.6);
}
.scn-mortimer-narrates-hal .candle {
  position: absolute; bottom: 42%; left: 50%; width: 8px; height: 28px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #f0c878 0%, #d4a050 60%, #8a6030 100%);
  border-radius: 2px 2px 4px 4px;
  box-shadow: 0 0 12px 4px rgba(240,200,120,.3);
  animation: mn-candle 4s ease-in-out infinite alternate;
}
.scn-mortimer-narrates-hal .candle-glow {
  position: absolute; bottom: 38%; left: 50%; width: 60px; height: 60px;
  transform: translate(-50%, -50%);
  background: radial-gradient(circle, rgba(240,200,120,.25) 0%, rgba(240,200,120,.08) 40%, transparent 70%);
  border-radius: 50%;
  animation: mn-glow-pulse 3s ease-in-out infinite alternate;
}
.scn-mortimer-narrates-hal .figure-old {
  position: absolute; bottom: 22%; left: 30%; width: 40px; height: 70px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2e22 60%, #1a1410 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  box-shadow: -4px 0 12px rgba(0,0,0,.4);
  animation: mn-sit 8s ease-in-out infinite alternate;
}
.scn-mortimer-narrates-hal .figure-young {
  position: absolute; bottom: 18%; right: 22%; width: 34px; height: 80px;
  transform: translateX(50%);
  background: linear-gradient(180deg, #4a3e32 0%, #2a221c 60%, #1a1410 100%);
  border-radius: 50% 50% 20% 20% / 60% 60% 20% 20%;
  box-shadow: 4px 0 12px rgba(0,0,0,.3);
  animation: mn-stand 6s ease-in-out infinite alternate;
}
.scn-mortimer-narrates-hal .shadow-wall {
  position: absolute; bottom: 28%; left: 28%; width: 80px; height: 90px;
  background: radial-gradient(ellipse at 50% 100%, rgba(0,0,0,.35) 0%, transparent 70%);
  filter: blur(6px);
  animation: mn-shadow-drift 12s ease-in-out infinite alternate;
}
@keyframes mn-candle { 0% { transform: translateX(-50%) scaleY(1); opacity: .9; } 50% { transform: translateX(-50%) scaleY(1.04); opacity: 1; } 100% { transform: translateX(-50%) scaleY(.96); opacity: .85; } }
@keyframes mn-glow-pulse { 0% { opacity: .3; transform: translate(-50%, -50%) scale(.95); } 50% { opacity: .5; transform: translate(-50%, -50%) scale(1.05); } 100% { opacity: .25; transform: translate(-50%, -50%) scale(.9); } }
@keyframes mn-sit { 0% { transform: translateX(-50%) translateY(0) rotate(-2deg); } 50% { transform: translateX(-50%) translateY(-2px) rotate(0deg); } 100% { transform: translateX(-50%) translateY(0) rotate(2deg); } }
@keyframes mn-stand { 0% { transform: translateX(50%) translateY(0) rotate(0deg); } 50% { transform: translateX(50%) translateY(-3px) rotate(1deg); } 100% { transform: translateX(50%) translateY(0) rotate(-1deg); } }
@keyframes mn-shadow-drift { 0% { transform: scaleX(1); opacity: .3; } 50% { transform: scaleX(1.08); opacity: .4; } 100% { transform: scaleX(.92); opacity: .25; } }

/* mortimer-claims-title – calm dim-interior, figure with scroll showing lineage */
.scn-mortimer-claims-title {
  background: 
    linear-gradient(180deg, #1e1a18 0%, #2a2420 30%, #3a322a 60%, #2a2420 100%),
    radial-gradient(ellipse at 50% 50%, #4a3e32 0%, transparent 80%);
}
.scn-mortimer-claims-title .wall {
  position: absolute; inset: 0 0 28% 0;
  background: linear-gradient(135deg, #2a221e 0%, #3a322a 50%, #2a221e 100%);
  box-shadow: inset 0 0 30px rgba(0,0,0,.4);
}
.scn-mortimer-claims-title .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 28%;
  background: linear-gradient(0deg, #1a1410 0%, #2a2018 60%, #3a2e22 100%);
  box-shadow: inset 0 8px 16px rgba(0,0,0,.5);
}
.scn-mortimer-claims-title .scroll {
  position: absolute; bottom: 34%; left: 50%; width: 120px; height: 90px;
  transform: translateX(-50%) perspective(400px) rotateX(5deg);
  background: linear-gradient(180deg, #d4c8a0 0%, #c0b48a 30%, #a89870 60%, #8a7a58 100%);
  border-radius: 2% 2% 8% 8%;
  box-shadow: 0 4px 20px rgba(0,0,0,.5), inset 0 1px 4px rgba(255,255,230,.3);
  animation: mn-scroll 10s ease-in-out infinite alternate;
}
.scn-mortimer-claims-title .scroll-tree {
  position: absolute; bottom: 38%; left: 50%; width: 100px; height: 70px;
  transform: translateX(-50%) perspective(400px) rotateX(5deg);
  background: 
    linear-gradient(90deg, transparent 46%, #5a4a32 48%, #5a4a32 52%, transparent 54%) 0 10% / 100% 12% no-repeat,
    linear-gradient(90deg, transparent 44%, #5a4a32 46%, #5a4a32 54%, transparent 56%) 0 25% / 100% 10% no-repeat,
    linear-gradient(90deg, transparent 42%, #5a4a32 44%, #5a4a32 56%, transparent 58%) 0 40% / 100% 10% no-repeat,
    linear-gradient(90deg, transparent 40%, #5a4a32 42%, #5a4a32 58%, transparent 60%) 0 55% / 100% 10% no-repeat,
    linear-gradient(180deg, transparent 0%, transparent 8%, #5a4a32 8%, #5a4a32 12%, transparent 12%) 50% 0 / 4px 100% no-repeat;
  background-color: transparent;
  opacity: .6;
  animation: mn-tree-fade 8s ease-in-out infinite alternate;
}
.scn-mortimer-claims-title .figure-point {
  position: absolute; bottom: 20%; left: 32%; width: 36px; height: 76px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #4a3e32 0%, #2a221c 60%, #1a1410 100%);
  border-radius: 50% 50% 20% 20% / 60% 60% 20% 20%;
  box-shadow: -2px 0 10px rgba(0,0,0,.3);
  animation: mn-point 5s ease-in-out infinite alternate;
}
.scn-mortimer-claims-title .candle {
  position: absolute; bottom: 40%; right: 28%; width: 7px; height: 24px;
  background: linear-gradient(180deg, #f0c878 0%, #d4a050 60%, #8a6030 100%);
  border-radius: 2px 2px 3px 3px;
  box-shadow: 0 0 10px 3px rgba(240,200,120,.3);
  animation: mn-candle2 4.5s ease-in-out infinite alternate;
}
.scn-mortimer-claims-title .candle-glow {
  position: absolute; bottom: 36%; right: 28%; width: 50px; height: 50px;
  transform: translate(50%, -50%);
  background: radial-gradient(circle, rgba(240,200,120,.2) 0%, rgba(240,200,120,.06) 40%, transparent 70%);
  border-radius: 50%;
  animation: mn-glow2 3.5s ease-in-out infinite alternate;
}
.scn-mortimer-claims-title .shadow-figure {
  position: absolute; bottom: 16%; left: 30%; width: 50px; height: 70px;
  background: radial-gradient(ellipse at 50% 0%, rgba(0,0,0,.3) 0%, transparent 70%);
  filter: blur(8px);
  animation: mn-shadow-point 6s ease-in-out infinite alternate;
}
@keyframes mn-scroll { 0% { transform: translateX(-50%) perspective(400px) rotateX(5deg) scaleY(1); } 50% { transform: translateX(-50%) perspective(400px) rotateX(7deg) scaleY(1.02); } 100% { transform: translateX(-50%) perspective(400px) rotateX(3deg) scaleY(.98); } }
@keyframes mn-tree-fade { 0% { opacity: .4; } 50% { opacity: .65; } 100% { opacity: .5; } }
@keyframes mn-point { 0% { transform: translateX(-50%) translateY(0) rotate(-3deg); } 50% { transform: translateX(-50%) translateY(-2px) rotate(0deg); } 100% { transform: translateX(-50%) translateY(0) rotate(3deg); } }
@keyframes mn-candle2 { 0% { transform: scaleY(1); opacity: .8; } 50% { transform: scaleY(1.05); opacity: 1; } 100% { transform: scaleY(.95); opacity: .75; } }
@keyframes mn-glow2 { 0% { opacity: .2; transform: translate(50%, -50%) scale(.9); } 50% { opacity: .35; transform: translate(50%, -50%) scale(1.1); } 100% { opacity: .15; transform: translate(50%, -50%) scale(.85); } }
@keyframes mn-shadow-point { 0% { transform: translateX(0) scaleX(1); opacity: .3; } 50% { transform: translateX(4px) scaleX(1.1); opacity: .4; } 100% { transform: translateX(-4px) scaleX(.9); opacity: .25; } }

/* mortimer-lost-liberty – dark dim-interior, figure in chains, vertical bars */
.scn-mortimer-lost-liberty {
  background: 
    linear-gradient(180deg, #0a080a 0%, #141018 30%, #1a1620 60%, #0e0c10 100%),
    radial-gradient(ellipse at 50% 40%, #1a1620 0%, transparent 80%);
}
.scn-mortimer-lost-liberty .wall {
  position: absolute; inset: 0 0 20% 0;
  background: linear-gradient(135deg, #141018 0%, #1a1620 40%, #221e28 60%, #141018 100%);
  box-shadow: inset 0 0 50px rgba(0,0,0,.7);
}
.scn-mortimer-lost-liberty .bars {
  position: absolute; inset: 0 0 20% 0;
  background: repeating-linear-gradient(0deg, transparent 0px, transparent 22px, #3a3a3a 22px, #4a4a4a 24px, transparent 24px, transparent 46px);
  opacity: .15;
  animation: ml-bars 20s linear infinite;
}
.scn-mortimer-lost-liberty .figure-crouch {
  position: absolute; bottom: 28%; left: 50%; width: 40px; height: 60px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #2a2220 0%, #1a1412 60%, #0a0808 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  box-shadow: 0 0 20px rgba(0,0,0,.5);
  animation: ml-crouch 7s ease-in-out infinite alternate;
}
.scn-mortimer-lost-liberty .chains-hands {
  position: absolute; bottom: 30%; left: 44%; width: 30px; height: 16px;
  transform: translateY(-50%);
  background: repeating-linear-gradient(90deg, #5a5a5a 0px, #6a6a6a 3px, #5a5a5a 6px, transparent 6px, transparent 10px);
  border-radius: 20%;
  animation: ml-chain-rattle 2.5s ease-in-out infinite;
}
.scn-mortimer-lost-liberty .shackle {
  position: absolute; bottom: 28%; left: 42%; width: 14px; height: 10px;
  background: radial-gradient(circle, #6a6a6a 0%, #4a4a4a 60%, #2a2a2a 100%);
  border-radius: 30%;
  box-shadow: 0 0 4px rgba(0,0,0,.5);
  animation: ml-shackle 2.5s ease-in-out infinite;
}
.scn-mortimer-lost-liberty .light-shaft {
  position: absolute; top: 0; left: 38%; width: 24%; height: 60%;
  background: linear-gradient(180deg, rgba(200,180,140,.08) 0%, rgba(200,180,140,.03) 40%, transparent 100%);
  filter: blur(4px);
  animation: ml-light 12s ease-in-out infinite alternate;
}
.scn-mortimer-lost-liberty .shadow-cell {
  position: absolute; bottom: 20%; left: 30%; width: 40%; height: 30%;
  background: radial-gradient(ellipse at 50% 0%, rgba(0,0,0,.4) 0%, transparent 70%);
  filter: blur(10px);
  animation: ml-shadow 8s ease-in-out infinite alternate;
}
@keyframes ml-bars { 0% { background-position: 0 0; } 100% { background-position: 0 -46px; } }
@keyframes ml-crouch { 0% { transform: translateX(-50%) translateY(0) rotate(-2deg); } 50% { transform: translateX(-50%) translateY(-3px) rotate(0deg); } 100% { transform: translateX(-50%) translateY(0) rotate(2deg); } }
@keyframes ml-chain-rattle { 0% { transform: translateY(-50%) translateX(0); } 25% { transform: translateY(-50%) translateX(2px); } 50% { transform: translateY(-50%) translateX(-2px); } 75% { transform: translateY(-50%) translateX(1px); } 100% { transform: translateY(-50%) translateX(0); } }
@keyframes ml-shackle { 0% { transform: rotate(0deg); } 25% { transform: rotate(4deg); } 50% { transform: rotate(-4deg); } 75% { transform: rotate(2deg); } 100% { transform: rotate(0deg); } }
@keyframes ml-light { 0% { opacity: .3; transform: scaleX(1); } 50% { opacity: .6; transform: scaleX(1.08); } 100% { opacity: .2; transform: scaleX(.92); } }
@keyframes ml-shadow { 0% { transform: scale(1); opacity: .4; } 50% { transform: scale(1.05); opacity: .55; } 100% { transform: scale(.95); opacity: .3; } }

/* father-beheaded – dark dim-interior, execution scene */
.scn-father-beheaded {
  background: 
    linear-gradient(180deg, #0a0608 0%, #140a0e 30%, #1a0e10 50%, #0e080a 100%),
    radial-gradient(ellipse at 50% 30%, #1a0e10 0%, transparent 80%);
}
.scn-father-beheaded .sky-dark {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(180deg, #0a0608 0%, #140a0e 40%, #1a0e10 100%);
  box-shadow: inset 0 0 60px rgba(0,0,0,.8);
}
.scn-father-beheaded .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(0deg, #0a0608 0%, #120c0a 40%, #1a120e 100%);
  box-shadow: inset 0 12px 24px rgba(0,0,0,.7);
}
.scn-father-beheaded .block {
  position: absolute; bottom: 28%; left: 45%; width: 50px; height: 30px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #3a2a20 0%, #2a1a12 60%, #1a0e08 100%);
  border-radius: 6% 6% 10% 10%;
  box-shadow: 0 4px 12px rgba(0,0,0,.6), inset 0 1px 2px rgba(0,0,0,.3);
  animation: fb-block 12s ease-in-out infinite alternate;
}
.scn-father-beheaded .axe-raised {
  position: absolute; bottom: 52%; left: 42%; width: 8px; height: 50px;
  transform: rotate(8deg);
  background: linear-gradient(180deg, #4a3a30 0%, #2a1e14 60%, #1a1208 100%);
  border-radius: 4px 4px 2px 2px;
  box-shadow: 0 0 8px rgba(0,0,0,.4);
  animation: fb-axe 4s ease-in-out infinite alternate;
}
.scn-father-beheaded .figure-kneel {
  position: absolute; bottom: 26%; left: 42%; width: 34px; height: 50px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #2a1e1a 0%, #1a100e 60%, #0a0606 100%);
  border-radius: 50% 50% 20% 20% / 60% 60% 20% 20%;
  box-shadow: 0 0 16px rgba(0,0,0,.5);
  animation: fb-kneel 6s ease-in-out infinite alternate;
}
.scn-father-beheaded .figure-hood {
  position: absolute; bottom: 42%; left: 52%; width: 42px; height: 64px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #1a1210 0%, #0e0a08 60%, #060404 100%);
  border-radius: 50% 50% 30% 30% / 50% 50% 30% 30%;
  box-shadow: 0 0 20px rgba(0,0,0,.6);
  animation: fb-hood 4s ease-in-out infinite alternate;
}
.scn-father-beheaded .pool-dark {
  position: absolute; bottom: 24%; left: 40%; width: 40px; height: 12px;
  background: radial-gradient(ellipse at 50% 50%, #4a1a1a 0%, #2a0e0e 50%, transparent 80%);
  border-radius: 50%;
  box-shadow: 0 0 12px rgba(74,26,26,.3);
  animation: fb-pool 8s ease-in-out infinite alternate;
}
.scn-father-beheaded .shadow-exec {
  position: absolute; bottom: 20%; right: 28%; width: 80px; height: 80px;
  background: radial-gradient(ellipse at 50% 0%, rgba(0,0,0,.45) 0%, transparent 70%);
  filter: blur(10px);
  animation: fb-shadow 10s ease-in-out infinite alternate;
}
@keyframes fb-block { 0% { transform: translateX(-50%) scaleY(1); } 50% { transform: translateX(-50%) scaleY(.97); } 100% { transform: translateX(-50%) scaleY(1.03); } }
@keyframes fb-axe { 0% { transform: rotate(8deg) translateY(0); } 25% { transform: rotate(10deg) translateY(-2px); } 50% { transform: rotate(6deg) translateY(0); } 75% { transform: rotate(12deg) translateY(-1px); } 100% { transform: rotate(8deg) translateY(0); } }
@keyframes fb-kneel { 0% { transform: translateX(-50%) translateY(0) rotate(-1deg); } 50% { transform: translateX(-50%) translateY(-2px) rotate(1deg); } 100% { transform: translateX(-50%) translateY(0) rotate(-1deg); } }
@keyframes fb-hood { 0% { transform: translateX(-50%) translateY(0) rotate(0deg); } 50% { transform: translateX(-50%) translateY(-3px) rotate(2deg); } 100% { transform: translateX(-50%) translateY(0) rotate(-2deg); } }
@keyframes fb-pool { 0% { opacity: .3; transform: scaleX(1) scaleY(1); } 50% { opacity: .45; transform: scaleX(1.08) scaleY(1.04); } 100% { opacity: .25; transform: scaleX(.95) scaleY(.95); } }
@keyframes fb-shadow { 0% { transform: scaleX(1); opacity: .3; } 50% { transform: scaleX(1.1); opacity: .45; } 100% { transform: scaleX(.9); opacity: .25; } }

/* Scene: camp-cardinal-arrival */
.scn-camp-cardinal-arrival {
  background: linear-gradient(180deg, #3b3b4f 0%, #5a5a70 50%, #4a4a5e 100%),
              radial-gradient(ellipse at 50% 100%, #6b6b80 0%, transparent 60%);
}
.scn-camp-cardinal-arrival .sky {
  position:absolute; inset:0 0 40% 0;
  background: linear-gradient(180deg, #4b4b60 0%, #2a2a3e 100%);
  animation: cc-sky 15s ease-in-out infinite alternate;
}
.scn-camp-cardinal-arrival .ground {
  position:absolute; bottom:0; left:0; right:0; height:40%;
  background: linear-gradient(0deg, #2e2e20 0%, #3a3a2a 50%, #4a4a3a 100%);
  border-radius: 20% 20% 0 0 / 10% 10% 0 0;
  animation: cc-ground 20s ease-in-out infinite;
}
.scn-camp-cardinal-arrival .tent {
  position:absolute; bottom:30%; left:25%; width:80px; height:60px;
  background: linear-gradient(135deg, #5a4a3a 0%, #3a2a1a 100%);
  clip-path: polygon(0% 100%, 20% 0%, 80% 0%, 100% 100%);
  box-shadow: 4px 0 8px rgba(0,0,0,0.4);
  animation: cc-tent 8s ease-in-out infinite;
}
.scn-camp-cardinal-arrival .cardinal {
  position:absolute; bottom:25%; left:15%; width:20px; height:40px;
  background: linear-gradient(180deg, #1a1a2a 0%, #2a2a3a 50%, #0a0a1a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: cc-walk1 6s ease-in-out infinite;
}
.scn-camp-cardinal-arrival .figure2 {
  position:absolute; bottom:27%; left:42%; width:18px; height:35px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: cc-walk2 7s ease-in-out infinite;
}
.scn-camp-cardinal-arrival .flag {
  position:absolute; bottom:52%; left:27%; width:4px; height:20px;
  background: #4a3a2a;
  transform: rotate(10deg);
  animation: cc-flag 3s ease-in-out infinite alternate;
}
.scn-camp-cardinal-arrival .flag::after {
  content:''; position:absolute; top:0; left:0; width:14px; height:8px;
  background: #6a5a3a;
  border-radius: 0 50% 50% 0;
}
.scn-camp-cardinal-arrival .cloud-a {
  position:absolute; top:15%; left:10%; width:60px; height:14px;
  background: linear-gradient(180deg, rgba(255,255,255,0.3) 0%, rgba(255,255,255,0.05) 100%);
  border-radius: 50%;
  filter: blur(6px);
  animation: cc-drift1 40s linear infinite;
}
.scn-camp-cardinal-arrival .cloud-b {
  position:absolute; top:25%; right:20%; width:50px; height:10px;
  background: linear-gradient(180deg, rgba(255,255,255,0.25) 0%, rgba(255,255,255,0.03) 100%);
  border-radius: 50%;
  filter: blur(5px);
  animation: cc-drift2 55s linear infinite reverse;
}
@keyframes cc-sky    { 0% { opacity:0.7 } 50% { opacity:1 } 100% { opacity:0.8 } }
@keyframes cc-ground { 0%,100% { transform: translateY(0) scaleY(1) } 50% { transform: translateY(-2px) scaleY(1.02) } }
@keyframes cc-tent   { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-1px) } }
@keyframes cc-walk1  { 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 cc-walk2  { 0% { transform: translateX(0) rotate(1deg) } 33% { transform: translateX(6px) rotate(-1deg) } 66% { transform: translateX(12px) rotate(1deg) } 100% { transform: translateX(18px) rotate(-1deg) } }
@keyframes cc-flag   { 0% { transform: rotate(5deg) } 100% { transform: rotate(20deg) } }
@keyframes cc-drift1 { 0% { left:-60px } 100% { left:120vw } }
@keyframes cc-drift2 { 0% { right:-50px } 100% { right:120vw } }

/* Scene: camp-peace-terms */
.scn-camp-peace-terms {
  background: linear-gradient(180deg, #2d2d3a 0%, #1f1f2a 40%, #3a3a4e 100%),
              radial-gradient(circle at 50% 20%, #4a4a5e 0%, transparent 60%);
}
.scn-camp-peace-terms .tent-bg {
  position:absolute; inset:0; background: linear-gradient(180deg, #1a1a22 0%, #2a2a36 100%);
  animation: pt-breathe 12s ease-in-out infinite;
}
.scn-camp-peace-terms .tent-roof {
  position:absolute; top:0; left:10%; right:10%; height:30%;
  background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 100%);
  clip-path: polygon(0% 100%, 20% 0%, 80% 0%, 100% 100%);
  box-shadow: inset 0 -4px 8px rgba(0,0,0,0.5);
}
.scn-camp-peace-terms .table {
  position:absolute; bottom:25%; left:20%; right:20%; height:8%;
  background: linear-gradient(180deg, #4a3a2a 0%, #3a2a1a 100%);
  border-radius: 8px;
  animation: pt-table 10s ease-in-out infinite;
}
.scn-camp-peace-terms .figure-left {
  position:absolute; bottom:15%; left:18%; width:18px; height:30px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pt-lean 5s ease-in-out infinite;
}
.scn-camp-peace-terms .figure-right {
  position:absolute; bottom:15%; right:18%; width:18px; height:30px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pt-lean 5.5s ease-in-out infinite reverse;
}
.scn-camp-peace-terms .figure-center {
  position:absolute; bottom:20%; left:50%; width:22px; height:38px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #3a2a2a 0%, #2a1a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: pt-sway 4s ease-in-out infinite;
}
.scn-camp-peace-terms .candle {
  position:absolute; bottom:33%; left:50%; width:6px; height:12px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a1a 100%);
  border-radius: 2px;
}
.scn-camp-peace-terms .candle::after {
  content:''; position:absolute; top:-4px; left:-1px; width:8px; height:8px;
  background: radial-gradient(circle, #ffcc66 0%, #ff9933 60%, transparent 70%);
  border-radius: 50%;
  animation: pt-flicker 0.5s steps(4) infinite;
}
.scn-camp-peace-terms .shadow {
  position:absolute; bottom:20%; left:10%; right:10%; height:20%;
  background: linear-gradient(180deg, rgba(0,0,0,0.6) 0%, transparent 100%);
  filter: blur(6px);
  animation: pt-shift 7s ease-in-out infinite;
}
@keyframes pt-breathe { 0%,100% { opacity:0.8 } 50% { opacity:1 } }
@keyframes pt-table   { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-1px) } }
@keyframes pt-lean    { 0%,100% { transform: translateX(0) rotate(0deg) } 50% { transform: translateX(2px) rotate(3deg) } }
@keyframes pt-sway    { 0%,100% { transform: translateX(-50%) rotate(0deg) } 50% { transform: translateX(-48%) rotate(-2deg) } }
@keyframes pt-flicker { 0% { transform: scale(1) } 25% { transform: scale(1.2) } 50% { transform: scale(0.9) } 75% { transform: scale(1.1) } 100% { transform: scale(1) } }
@keyframes pt-shift   { 0%,100% { transform: translateX(0) scaleX(1) } 50% { transform: translateX(-2px) scaleX(1.05) } }

/* Scene: item-coronet */
.scn-item-coronet {
  background: linear-gradient(135deg, #2a2a36 0%, #1a1a24 50%, #3a3a4a 100%),
              radial-gradient(circle at 50% 40%, #4a4a5e 0%, transparent 60%);
}
.scn-item-coronet .bg {
  position:absolute; inset:0; background: linear-gradient(180deg, #1a1a24 0%, #2a2a36 100%);
}
.scn-item-coronet .cushion {
  position:absolute; bottom:20%; left:50%; width:60%; height:25%;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #6a4a3a 0%, #4a2a1a 100%);
  border-radius: 50% / 80% 80% 20% 20%;
  box-shadow: 0 8px 16px rgba(0,0,0,0.5);
  animation: ic-cushion 8s ease-in-out infinite;
}
.scn-item-coronet .crown-brim {
  position:absolute; bottom:30%; left:50%; width:50%; height:10%;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #d4a55e 0%, #b08040 100%);
  border-radius: 4px;
  box-shadow: 0 2px 4px rgba(0,0,0,0.3);
  animation: ic-glow 4s ease-in-out infinite alternate;
}
.scn-item-coronet .crown-point {
  position:absolute; bottom:38%; left:50%; width:4%; height:12%;
  transform: translateX(-50%);
  background: radial-gradient(ellipse at center, #e6c080 0%, #c09040 100%);
  border-radius: 50% 50% 0 0;
  box-shadow: 0 -2px 4px rgba(0,0,0,0.2);
  animation: ic-point 6s ease-in-out infinite;
}
.scn-item-coronet .gem-1 {
  position:absolute; bottom:35%; left:40%; width:6%; height:6%;
  background: radial-gradient(circle, #a03030 0%, #5a1a1a 100%);
  border-radius: 50%;
  box-shadow: 0 0 8px 2px rgba(160,48,48,0.5);
  animation: ic-gem 5s ease-in-out infinite;
}
.scn-item-coronet .gem-2 {
  position:absolute; bottom:35%; left:50%; width:6%; height:6%;
  background: radial-gradient(circle, #3060a0 0%, #1a3a5a 100%);
  border-radius: 50%;
  box-shadow: 0 0 8px 2px rgba(48,96,160,0.5);
  animation: ic-gem 5.5s ease-in-out infinite reverse;
}
.scn-item-coronet .gem-3 {
  position:absolute; bottom:35%; left:60%; width:6%; height:6%;
  background: radial-gradient(circle, #60a030 0%, #2a5a1a 100%);
  border-radius: 50%;
  box-shadow: 0 0 8px 2px rgba(96,160,48,0.5);
  animation: ic-gem 6s ease-in-out infinite;
}
.scn-item-coronet .light-glow {
  position:absolute; bottom:30%; left:50%; width:80%; height:40%;
  transform: translateX(-50%);
  background: radial-gradient(ellipse at 50% 0%, rgba(200,170,100,0.15) 0%, transparent 70%);
  animation: ic-light 7s ease-in-out infinite alternate;
}
@keyframes ic-cushion { 0%,100% { transform: translateX(-50%) scaleY(1) } 50% { transform: translateX(-50%) scaleY(1.03) } }
@keyframes ic-glow   { 0% { box-shadow: 0 2px 4px rgba(0,0,0,0.3) } 100% { box-shadow: 0 2px 8px rgba(180,140,60,0.6) } }
@keyframes ic-point  { 0%,100% { transform: translateX(-50%) rotate(0deg) } 50% { transform: translateX(-50%) rotate(-2deg) } }
@keyframes ic-gem    { 0%,100% { opacity:0.8; transform: scale(1) } 50% { opacity:1; transform: scale(1.2) } }
@keyframes ic-light  { 0% { opacity:0.6 } 100% { opacity:1 } }

/* Scene: camp-peace-final */
.scn-camp-peace-final {
  background: linear-gradient(180deg, #3a3a4e 0%, #2a2a3e 40%, #4a4a5e 100%),
              radial-gradient(ellipse at 50% 0%, #5a5a6e 0%, transparent 50%);
}
.scn-camp-peace-final .bg-sky {
  position:absolute; inset:0 0 35% 0;
  background: linear-gradient(180deg, #3a3a4e 0%, #2a2a3e 100%);
  animation: pf-sky 20s ease-in-out infinite alternate;
}
.scn-camp-peace-final .bg-ground {
  position:absolute; bottom:0; left:0; right:0; height:35%;
  background: linear-gradient(0deg, #1a1a1e 0%, #2e2e3a 50%, #3e3e4a 100%);
  border-radius: 30% 30% 0 0 / 20% 20% 0 0;
}
.scn-camp-peace-final .group-left {
  position:absolute; bottom:20%; left:5%; width:25%; height:30%;
  background: radial-gradient(ellipse at 50% 80%, #1a1a24 0%, #2a2a36 60%, transparent 90%);
  border-radius: 50%;
  filter: blur(3px);
  animation: pf-group1 12s ease-in-out infinite;
}
.scn-camp-peace-final .group-right {
  position:absolute; bottom:20%; right:5%; width:25%; height:30%;
  background: radial-gradient(ellipse at 50% 80%, #2a2a36 0%, #1a1a24 60%, transparent 90%);
  border-radius: 50%;
  filter: blur(3px);
  animation: pf-group2 14s ease-in-out infinite reverse;
}
.scn-camp-peace-final .figure-king {
  position:absolute; bottom:15%; left:50%; width:24px; height:42px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: pf-king 4s ease-in-out infinite;
}
.scn-camp-peace-final .spear {
  position:absolute; bottom:35%; left:40%; width:3px; height:28px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  transform: rotate(-15deg);
  animation: pf-spear 3s ease-in-out infinite alternate;
}
.scn-camp-peace-final .spear::after {
  content:''; position:absolute; top:-4px; left:-3px; width:9px; height:6px;
  background: #5a4a3a;
  clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
}
.scn-camp-peace-final .dust {
  position:absolute; bottom:15%; left:30%; width:20%; height:10%;
  background: radial-gradient(ellipse at 50% 100%, rgba(200,180,160,0.2) 0%, transparent 70%);
  filter: blur(8px);
  animation: pf-dust 8s ease-in-out infinite;
}
.scn-camp-peace-final .clouds {
  position:absolute; top:10%; left:0; right:0; height:20%;
  background: repeating-linear-gradient(90deg, rgba(255,255,255,0.05) 0px, transparent 40px, rgba(255,255,255,0.03) 80px);
  filter: blur(10px);
  animation: pf-clouds 60s linear infinite;
}
@keyframes pf-sky   { 0% { opacity:0.6 } 50% { opacity:1 } 100% { opacity:0.7 } }
@keyframes pf-group1 { 0%,100% { transform: translateY(0) scale(1) } 50% { transform: translateY(-3px) scale(1.05) } }
@keyframes pf-group2 { 0%,100% { transform: translateY(0) scale(1) } 50% { transform: translateY(2px) scale(0.95) } }
@keyframes pf-king  { 0%,100% { transform: translateX(-50%) rotate(0deg) } 25% { transform: translateX(-48%) rotate(2deg) } 75% { transform: translateX(-52%) rotate(-2deg) } }
@keyframes pf-spear { 0% { transform: rotate(-12deg) } 100% { transform: rotate(-20deg) } }
@keyframes pf-dust  { 0%,100% { transform: translateX(0) scaleY(1) } 50% { transform: translateX(8px) scaleY(1.3) } }
@keyframes pf-clouds { 0% { background-position: 0 0 } 100% { background-position: 200px 0 } }

/* battlefield-nemesis-outrage */
.scn-battlefield-nemesis-outrage {
  background: linear-gradient(180deg, #1e3a4e 0%, #d68a3e 40%, #f5c040 70%, #b8651a 100%),
              radial-gradient(ellipse at 50% 28%, #ffd85a 0%, transparent 60%);
}
.scn-battlefield-nemesis-outrage .sky     { position:absolute; inset:0 0 60% 0; background: linear-gradient(180deg, #2a5a7a 0%, #6a9aba 100%); animation: bno-sky-fade 12s ease-in-out infinite alternate; }
.scn-battlefield-nemesis-outrage .sun     { position:absolute; top:8%; left:50%; width:60px; height:60px; transform:translateX(-50%); background: radial-gradient(circle, #ffe080 0%, #f5b040 70%); border-radius:50%; box-shadow:0 0 40px 10px #f5b040, 0 0 80px 40px rgba(245,176,64,.3); animation: bno-sun-pulse 4s ease-in-out infinite; }
.scn-battlefield-nemesis-outrage .figure  { position:absolute; bottom:30%; left:50%; width:40px; height:80px; transform:translateX(-50%); background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: bno-rage 6s ease-in-out infinite; }
.scn-battlefield-nemesis-outrage .sword   { position:absolute; bottom:52%; left:50%; width:4px; height:50px; background: linear-gradient(180deg, #aaa 0%, #ddd 50%, #888 100%); transform-origin:bottom center; border-radius:2px; box-shadow:0 0 6px #ccc; animation: bno-rage 6s ease-in-out infinite; }
.scn-battlefield-nemesis-outrage .ground  { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #3a2a1a 0%, #4a3a2a 50%, #2a1a0a 100%); border-radius:60% 40% 0 0 / 40% 30% 0 0; }
.scn-battlefield-nemesis-outrage .body-1  { position:absolute; bottom:12%; left:20%; width:50px; height:14px; background: linear-gradient(90deg, #1a1a2a 0%, #2a2a3a 100%); border-radius:60% 40% 40% 60% / 50% 50% 50% 50%; animation: bno-body-fade 8s ease-in-out infinite; }
.scn-battlefield-nemesis-outrage .body-2  { position:absolute; bottom:8%; right:18%; width:42px; height:12px; background: linear-gradient(90deg, #2a2a3a 0%, #1a1a2a 100%); border-radius:40% 60% 60% 40% / 50% 50% 50% 50%; animation: bno-body-fade 10s ease-in-out infinite 2s; }

@keyframes bno-sky-fade { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.9 } }
@keyframes bno-sun-pulse { 0% { transform:translateX(-50%) scale(1) } 50% { transform:translateX(-50%) scale(1.08) } 100% { transform:translateX(-50%) scale(1) } }
@keyframes bno-rage { 0% { transform:translateX(0) rotate(0) } 25% { transform:translateX(2px) translateY(-1px) rotate(2deg) } 50% { transform:translateX(-1px) translateY(1px) rotate(-3deg) } 75% { transform:translateX(3px) translateY(0) rotate(2deg) } 100% { transform:translateX(0) rotate(0) } }
@keyframes bno-body-fade { 0% { opacity:.3 } 50% { opacity:.6 } 100% { opacity:.3 } }

/* battlefield-burial-request */

.scn-battlefield-burial-request {
  background: linear-gradient(180deg, #5a7a9a 0%, #b0c8d8 30%, #e0d8b0 70%, #b0a070 100%),
              radial-gradient(ellipse at 50% 10%, #ffe8b0 0%, transparent 60%);
}
.scn-battlefield-burial-request .sky       { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #7a9aba 0%, #c0d8e0 100%); animation: bbr-sky 20s ease-in-out infinite alternate; }
.scn-battlefield-burial-request .sun-soft  { position:absolute; top:12%; left:50%; width:50px; height:50px; transform:translateX(-50%); background: radial-gradient(circle, #fff0c0 0%, #e0c070 70%); border-radius:50%; box-shadow:0 0 30px 6px #e0c070, 0 0 60px 20px rgba(224,192,112,.2); animation: bbr-sun 7s ease-in-out infinite; }
.scn-battlefield-burial-request .hill      { position:absolute; bottom:30%; left:0; right:0; height:20%; background: linear-gradient(180deg, #5a6a3a 0%, #4a5a2a 100%); border-radius:50% 50% 0 0 / 60% 60% 0 0; animation: bbr-hill 20s ease-in-out infinite alternate; }
.scn-battlefield-burial-request .cross     { position:absolute; bottom:35%; left:50%; width:6px; height:50px; transform:translateX(-50%); background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%); border-radius:2px; animation: bbr-cross-sway 12s ease-in-out infinite; }
.scn-battlefield-burial-request .figure-kneel { position:absolute; bottom:28%; left:42%; width:30px; height:45px; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; animation: bbr-kneel 8s ease-in-out infinite; }
.scn-battlefield-burial-request .figure-stand { position:absolute; bottom:30%; left:58%; width:20px; height:55px; background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; animation: bbr-stand 10s ease-in-out infinite; }
.scn-battlefield-burial-request .body      { position:absolute; bottom:15%; left:20%; width:60px; height:12px; background: linear-gradient(90deg, #3a2a3a 0%, #2a1a2a 100%); border-radius:40% 60% 60% 40% / 50% 50% 50% 50%; animation: bbr-body 15s ease-in-out infinite; }

@keyframes bbr-sky { 0% { opacity:.85 } 50% { opacity:1 } 100% { opacity:.9 } }
@keyframes bbr-sun { 0% { transform:translateX(-50%) scale(1) } 50% { transform:translateX(-50%) scale(1.04) } 100% { transform:translateX(-50%) scale(1) } }
@keyframes bbr-hill { 0% { transform:translateY(0) } 50% { transform:translateY(-2px) } 100% { transform:translateY(0) } }
@keyframes bbr-cross-sway { 0% { transform:translateX(-50%) rotate(-1deg) } 50% { transform:translateX(-50%) rotate(1deg) } 100% { transform:translateX(-50%) rotate(-1deg) } }
@keyframes bbr-kneel { 0%,100% { transform:translateY(0) rotate(-2deg) } 50% { transform:translateY(-1px) rotate(2deg) } }
@keyframes bbr-stand { 0%,100% { transform:translateY(0) } 50% { transform:translateY(-2px) } }
@keyframes bbr-body { 0%,100% { opacity:.4 } 50% { opacity:.7 } }

/* battlefield-phoenix-omen */
.scn-battlefield-phoenix-omen {
  background: linear-gradient(180deg, #a04020 0%, #d06030 20%, #e08040 40%, #f0a050 70%, #f5c060 100%),
              radial-gradient(ellipse at 50% 30%, #ffc060 0%, transparent 50%);
}
.scn-battlefield-phoenix-omen .sky-warm   { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #b05030 0%, #e08040 100%); animation: bpo-sky 15s ease-in-out infinite alternate; }
.scn-battlefield-phoenix-omen .sun-warm   { position:absolute; top:6%; left:50%; width:70px; height:70px; transform:translateX(-50%); background: radial-gradient(circle, #ffd080 0%, #e06020 70%); border-radius:50%; box-shadow:0 0 50px 15px #e06020, 0 0 100px 40px rgba(224,96,32,.4); animation: bpo-sun-pulse 3s ease-in-out infinite; }
.scn-battlefield-phoenix-omen .wings-left { position:absolute; top:20%; left:30%; width:80px; height:50px; background: linear-gradient(135deg, #d06030 0%, #f0a050 80%); border-radius:80% 20% 50% 50% / 60% 20% 80% 40%; transform-origin:right center; animation: bpo-wing 5s ease-in-out infinite alternate; }
.scn-battlefield-phoenix-omen .wings-right { position:absolute; top:20%; right:30%; width:80px; height:50px; background: linear-gradient(225deg, #d06030 0%, #f0a050 80%); border-radius:20% 80% 50% 50% / 20% 60% 40% 80%; transform-origin:left center; animation: bpo-wing 5s ease-in-out infinite alternate-reverse; }
.scn-battlefield-phoenix-omen .flames     { position:absolute; bottom:30%; left:50%; width:40px; height:60px; transform:translateX(-50%); background: linear-gradient(180deg, #f5c040 0%, #d06020 50%, #a04010 100%); border-radius:50% 50% 30% 30% / 60% 60% 40% 40%; filter:blur(2px); animation: bpo-flame 2s ease-in-out infinite; }
.scn-battlefield-phoenix-omen .core       { position:absolute; top:40%; left:50%; width:20px; height:20px; transform:translate(-50%,-50%); background: radial-gradient(circle, #ffe080 0%, #f0a040 70%); border-radius:50%; box-shadow:0 0 20px 6px #f0a040; animation: bpo-core 4s ease-in-out infinite; }

@keyframes bpo-sky { 0% { opacity:.9 } 50% { opacity:1 } 100% { opacity:.85 } }
@keyframes bpo-sun-pulse { 0% { transform:translateX(-50%) scale(1) } 50% { transform:translateX(-50%) scale(1.1) } 100% { transform:translateX(-50%) scale(1) } }
@keyframes bpo-wing { 0% { transform:rotate(-10deg) scaleY(1) } 50% { transform:rotate(5deg) scaleY(1.05) } 100% { transform:rotate(-10deg) scaleY(1) } }
@keyframes bpo-flame { 0% { transform:translateX(-50%) scaleY(1) } 50% { transform:translateX(-50%) scaleY(1.12) } 100% { transform:translateX(-50%) scaleY(1) } }
@keyframes bpo-core { 0% { transform:translate(-50%,-50%) scale(1) } 50% { transform:translate(-50%,-50%) scale(1.06) } 100% { transform:translate(-50%,-50%) scale(1) } }

/* london-palace-royal-council */
.scn-london-palace-royal-council {
  background: linear-gradient(135deg, #c8b088 0%, #e8d8b0 40%, #f0e0c0 70%, #d8c098 100%),
              radial-gradient(ellipse at 50% 60%, #fff0d0 0%, transparent 70%);
}
.scn-london-palace-royal-council .wall         { position:absolute; inset:0 0 20% 0; background: linear-gradient(135deg, #d8c8a8 0%, #c8b898 100%); border-bottom:2px solid #b09878; animation: lpc-wall 30s ease-in-out infinite alternate; }
.scn-london-palace-royal-council .column-left  { position:absolute; top:0; left:8%; width:20px; height:100%; background: linear-gradient(135deg, #b89878 0%, #d8c8a8 50%, #c8b088 100%); border-radius:4px; box-shadow:2px 0 4px rgba(0,0,0,.1); animation: lpc-column 25s ease-in-out infinite; }
.scn-london-palace-royal-council .column-right { position:absolute; top:0; right:8%; width:20px; height:100%; background: linear-gradient(225deg, #b89878 0%, #d8c8a8 50%, #c8b088 100%); border-radius:4px; box-shadow:-2px 0 4px rgba(0,0,0,.1); animation: lpc-column 25s ease-in-out infinite reverse; }
.scn-london-palace-royal-council .throne       { position:absolute; bottom:22%; left:50%; width:50px; height:60px; transform:translateX(-50%); background: linear-gradient(135deg, #a08060 0%, #c0a080 50%, #d0b090 100%); border-radius:8px 8px 4px 4px; box-shadow:0 4px 8px rgba(0,0,0,.15); animation: lpc-throne 40s ease-in-out infinite; }
.scn-london-palace-royal-council .king         { position:absolute; bottom:30%; left:50%; width:30px; height:55px; transform:translateX(-50%); background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; animation: lpc-king 6s ease-in-out infinite; }
.scn-london-palace-royal-council .attendant-1  { position:absolute; bottom:28%; left:38%; width:14px; height:40px; background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; animation: lpc-attendant 12s ease-in-out infinite; }
.scn-london-palace-royal-council .attendant-2  { position:absolute; bottom:28%; right:38%; width:14px; height:40px; background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; animation: lpc-attendant 12s ease-in-out infinite 3s; }
.scn-london-palace-royal-council .floor        { position:absolute; bottom:0; left:0; right:0; height:22%; background: linear-gradient(180deg, #b09878 0%, #908060 50%, #a09070 100%); border-radius:20% 20% 0 0 / 10% 10% 0 0; animation: lpc-floor 30s ease-in-out infinite alternate; }

@keyframes lpc-wall { 0% { opacity:.95 } 50% { opacity:1 } 100% { opacity:.9 } }
@keyframes lpc-column { 0% { transform:translateY(0) } 50% { transform:translateY(-3px) } 100% { transform:translateY(0) } }
@keyframes lpc-throne { 0% { transform:translateX(-50%) scaleY(1) } 50% { transform:translateX(-50%) scaleY(1.02) } 100% { transform:translateX(-50%) scaleY(1) } }
@keyframes lpc-king { 0% { transform:translateX(-50%) rotate(-1deg) } 50% { transform:translateX(-50%) rotate(1deg) } 100% { transform:translateX(-50%) rotate(-1deg) } }
@keyframes lpc-attendant { 0% { transform:translateX(-3px) } 50% { transform:translateX(3px) } 100% { transform:translateX(-3px) } }
@keyframes lpc-floor { 0% { transform:scaleY(1) } 50% { transform:scaleY(1.01) } 100% { transform:scaleY(1) } }

/* gascony-enemy-encirclement */
.scn-gascony-enemy-encirclement {
  background: linear-gradient(180deg, #4a4a5a 0%, #2a2a3a 40%, #1a1a2a 100%), radial-gradient(ellipse at 50% 100%, #0a0a1a 0%, transparent 70%);
}
.scn-gascony-enemy-encirclement .sky {
  position: absolute; inset: 0 0 60% 0;
  background: linear-gradient(180deg, #6a6a7a 0%, #3a3a4a 100%);
  animation: ge1-sky 20s ease-in-out infinite alternate;
}
.scn-gascony-enemy-encirclement .fog {
  position: absolute; bottom: 50%; left: 0; right: 0; height: 40%;
  background: linear-gradient(0deg, rgba(100,100,120,0.4) 0%, transparent 100%);
  filter: blur(10px);
  animation: ge1-fog 15s linear infinite;
}
.scn-gascony-enemy-encirclement .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #2a3a2a 0%, #1a2a1a 100%);
  clip-path: polygon(0 30%, 100% 20%, 100% 100%, 0 100%);
}
.scn-gascony-enemy-encirclement .talbot {
  position: absolute; bottom: 30%; left: 50%; width: 30px; height: 60px;
  background: linear-gradient(180deg, #3a4a5a 0%, #1a2a3a 100%);
  border-radius: 40% 40% 20% 20% / 50% 50% 30% 30%;
  transform: translateX(-50%);
  animation: ge1-talbot 4s ease-in-out infinite alternate;
}
.scn-gascony-enemy-encirclement .enemy1,
.scn-gascony-enemy-encirclement .enemy2,
.scn-gascony-enemy-encirclement .enemy3 {
  position: absolute; width: 25px; height: 50px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 40% 40% 20% 20%;
  animation: ge1-enemy 6s ease-in-out infinite alternate;
}
.scn-gascony-enemy-encirclement .enemy1 { left: 20%; bottom: 35%; }
.scn-gascony-enemy-encirclement .enemy2 { left: 70%; bottom: 32%; animation-delay: 2s; }
.scn-gascony-enemy-encirclement .enemy3 { left: 50%; bottom: 55%; animation-delay: 4s; }
@keyframes ge1-sky {
  0% { opacity: 0.8; transform: scaleY(1); }
  50% { opacity: 0.9; transform: scaleY(1.02); }
  100% { opacity: 0.7; transform: scaleY(0.98); }
}
@keyframes ge1-fog {
  0% { transform: translateX(-20px); opacity: 0.3; }
  50% { transform: translateX(10px); opacity: 0.5; }
  100% { transform: translateX(30px); opacity: 0.2; }
}
@keyframes ge1-talbot {
  0% { transform: translateX(-50%) translateY(0) rotate(0deg); }
  50% { transform: translateX(-50%) translateY(-4px) rotate(2deg); }
  100% { transform: translateX(-50%) translateY(0) rotate(-1deg); }
}
@keyframes ge1-enemy {
  0% { transform: translateY(0) rotate(-2deg); opacity: 0.9; }
  50% { transform: translateY(-3px) rotate(2deg); opacity: 1; }
  100% { transform: translateY(0) rotate(-1deg); opacity: 0.85; }
}

/* gascony-blame-exchange */
.scn-gascony-blame-exchange {
  background: linear-gradient(180deg, #5a5a6a 0%, #3a3a4a 50%, #1a1a2a 100%), radial-gradient(ellipse at 50% 0%, #7a7a8a 0%, transparent 70%);
}
.scn-gascony-blame-exchange .sky {
  position: absolute; inset: 0 0 55% 0;
  background: linear-gradient(180deg, #7a7a8a 0%, #4a4a5a 100%);
  animation: gb2-sky 18s ease-in-out infinite alternate;
}
.scn-gascony-blame-exchange .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #2a3a2a 0%, #1a2a1a 100%);
}
.scn-gascony-blame-exchange .figure1,
.scn-gascony-blame-exchange .figure2 {
  position: absolute; bottom: 25%; width: 28px; height: 55px;
  background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%);
  border-radius: 40% 40% 20% 20% / 50% 50% 30% 30%;
  animation: gb2-figure 3s ease-in-out infinite alternate;
}
.scn-gascony-blame-exchange .figure1 { left: 35%; transform-origin: bottom; }
.scn-gascony-blame-exchange .figure2 { right: 35%; transform-origin: bottom; animation-delay: 0.5s; }
.scn-gascony-blame-exchange .banner {
  position: absolute; top: 20%; left: 50%; width: 40px; height: 20px;
  background: linear-gradient(90deg, #6a4a3a 0%, #8a6a5a 50%, #6a4a3a 100%);
  transform: translateX(-50%);
  clip-path: polygon(0 0, 100% 20%, 100% 80%, 0 100%);
  animation: gb2-banner 4s ease-in-out infinite;
}
.scn-gascony-blame-exchange .shadow-line {
  position: absolute; top: 40%; left: 0; right: 0; height: 2px;
  background: linear-gradient(90deg, transparent 10%, rgba(0,0,0,0.6) 50%, transparent 90%);
  animation: gb2-shadow 2s ease-in-out infinite alternate;
}
@keyframes gb2-sky {
  0% { opacity: 0.85; }
  50% { opacity: 0.95; }
  100% { opacity: 0.8; }
}
@keyframes gb2-figure {
  0% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-2px) rotate(3deg); }
  100% { transform: translateY(0) rotate(-2deg); }
}
@keyframes gb2-banner {
  0% { transform: translateX(-50%) rotate(-5deg); }
  50% { transform: translateX(-50%) rotate(8deg); }
  100% { transform: translateX(-50%) rotate(-3deg); }
}
@keyframes gb2-shadow {
  0% { opacity: 0.3; transform: scaleX(0.9); }
  100% { opacity: 0.7; transform: scaleX(1.1); }
}

/* gascony-late-rescue */
.scn-gascony-late-rescue {
  background: linear-gradient(180deg, #6a6a7a 0%, #4a4a5a 40%, #2a2a3a 100%), radial-gradient(ellipse at 50% 80%, #3a3a4a 0%, transparent 60%);
}
.scn-gascony-late-rescue .sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #8a8a9a 0%, #5a5a6a 100%);
  animation: gl3-sky 15s ease-in-out infinite alternate;
}
.scn-gascony-late-rescue .ground-r {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #3a4a3a 0%, #1a2a1a 100%);
  border-radius: 60% 40% 0 0 / 30% 20% 0 0;
}
.scn-gascony-late-rescue .horse {
  position: absolute; bottom: 20%; left: 20%; width: 60px; height: 40px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 40% 30% 20% 20%;
  animation: gl3-horse 0.8s linear infinite;
}
.scn-gascony-late-rescue .rider {
  position: absolute; bottom: 30%; left: 22%; width: 20px; height: 30px;
  background: linear-gradient(180deg, #2a3a4a 0%, #1a2a3a 100%);
  border-radius: 40% 40% 20% 20% / 50% 50% 30% 30%;
  animation: gl3-rider 0.8s linear infinite;
}
.scn-gascony-late-rescue .dust {
  position: absolute; bottom: 15%; left: 10%; width: 80px; height: 20px;
  background: radial-gradient(ellipse, rgba(150,140,120,0.6) 0%, transparent 70%);
  filter: blur(6px);
  animation: gl3-dust 1.5s linear infinite;
}
.scn-gascony-late-rescue .castle {
  position: absolute; top: 15%; right: 10%; width: 40px; height: 60px;
  background: linear-gradient(180deg, #4a4a5a 0%, #2a2a3a 100%);
  border-radius: 10% 10% 0 0;
  clip-path: polygon(0 0, 20% 100%, 40% 0, 60% 100%, 80% 0, 100% 100%);
  opacity: 0.4;
  animation: gl3-castle 20s ease-in-out infinite;
}
@keyframes gl3-sky {
  0% { opacity: 0.7; transform: scaleY(1); }
  50% { opacity: 0.85; transform: scaleY(1.02); }
  100% { opacity: 0.7; transform: scaleY(0.98); }
}
@keyframes gl3-horse {
  0% { transform: translate(0,0) rotate(-2deg); }
  25% { transform: translate(3px,-2px) rotate(2deg); }
  50% { transform: translate(6px,0) rotate(-1deg); }
  75% { transform: translate(9px,-2px) rotate(1deg); }
  100% { transform: translate(12px,0) rotate(0); }
}
@keyframes gl3-rider {
  0% { transform: translate(0,0) rotate(-5deg); }
  50% { transform: translate(6px,-3px) rotate(5deg); }
  100% { transform: translate(12px,0) rotate(0); }
}
@keyframes gl3-dust {
  0% { transform: translateX(0) scale(1); opacity: 0.5; }
  50% { transform: translateX(20px) scale(1.3); opacity: 0.3; }
  100% { transform: translateX(40px) scale(1.6); opacity: 0; }
}
@keyframes gl3-castle {
  0% { opacity: 0.2; transform: scale(0.95); }
  50% { opacity: 0.5; transform: scale(1.05); }
  100% { opacity: 0.3; transform: scale(0.95); }
}

/* english-camp-father-son */
.scn-english-camp-father-son {
  background: linear-gradient(180deg, #f0d8a0 0%, #c8a060 50%, #907040 100%), radial-gradient(ellipse at 50% 80%, #e0c080 0%, transparent 70%);
}
.scn-english-camp-father-son .sky-warm {
  position: absolute; inset: 0 0 60% 0;
  background: linear-gradient(180deg, #fae8c0 0%, #d4b070 100%);
  animation: ef4-sky 25s ease-in-out infinite alternate;
}
.scn-english-camp-father-son .sun {
  position: absolute; top: 10%; left: 70%; width: 40px; height: 40px;
  background: radial-gradient(circle, #ffd580 0%, #ffb040 50%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 60px 30px rgba(255,180,64,0.4);
  animation: ef4-sun 30s linear infinite;
}
.scn-english-camp-father-son .ground-camp {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #8a7a5a 0%, #5a4a3a 100%);
  border-radius: 30% 70% 0 0 / 40% 60% 0 0;
}
.scn-english-camp-father-son .tent {
  position: absolute; bottom: 25%; left: 20%; width: 80px; height: 70px;
  background: linear-gradient(180deg, #c8a870 0%, #a08050 100%);
  clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
  opacity: 0.85;
  animation: ef4-tent 8s ease-in-out infinite;
}
.scn-english-camp-father-son .father {
  position: absolute; bottom: 15%; left: 46%; width: 30px; height: 65px;
  background: linear-gradient(180deg, #4a5a3a 0%, #2a3a1a 100%);
  border-radius: 40% 40% 20% 20% / 50% 50% 30% 30%;
  transform-origin: bottom;
  animation: ef4-father 6s ease-in-out infinite alternate;
}
.scn-english-camp-father-son .son {
  position: absolute; bottom: 18%; left: 54%; width: 22px; height: 45px;
  background: linear-gradient(180deg, #5a6a4a 0%, #3a4a2a 100%);
  border-radius: 40% 40% 20% 20% / 50% 50% 30% 30%;
  transform-origin: bottom;
  animation: ef4-son 6s ease-in-out infinite alternate 1s;
}
.scn-english-camp-father-son .campfire {
  position: absolute; bottom: 10%; left: 45%; width: 30px; height: 30px;
  background: radial-gradient(circle, #ff8040 0%, #ff6000 40%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 40px 20px rgba(255,96,0,0.5);
  animation: ef4-fire 2s ease-in-out infinite alternate;
}
@keyframes ef4-sky {
  0% { opacity: 0.9; transform: scaleY(1); }
  50% { opacity: 1; transform: scaleY(1.01); }
  100% { opacity: 0.95; transform: scaleY(0.99); }
}
@keyframes ef4-sun {
  0% { transform: translateX(0) translateY(0); }
  50% { transform: translateX(-10px) translateY(5px); }
  100% { transform: translateX(0) translateY(0); }
}
@keyframes ef4-tent {
  0% { transform: scale(1) rotate(0deg); }
  50% { transform: scale(1.02) rotate(1deg); }
  100% { transform: scale(1) rotate(0deg); }
}
@keyframes ef4-father {
  0% { transform: translateY(0) rotate(-2deg); }
  50% { transform: translateY(-3px) rotate(1deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes ef4-son {
  0% { transform: translateY(0) rotate(3deg); }
  50% { transform: translateY(-2px) rotate(-1deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes ef4-fire {
  0% { transform: scale(1); opacity: 0.8; box-shadow: 0 0 30px 15px rgba(255,96,0,0.4); }
  50% { transform: scale(1.1); opacity: 1; box-shadow: 0 0 50px 25px rgba(255,96,0,0.6); }
  100% { transform: scale(0.95); opacity: 0.7; box-shadow: 0 0 20px 10px rgba(255,96,0,0.3); }
}

/* Scene: richard-swears-loyalty (mood warm, bright interior) */
.scn-richard-swears-loyalty {
  background: linear-gradient(180deg, #f2d5a0 0%, #e6b87e 40%, #d9a065 100%),
    radial-gradient(ellipse at 60% 30%, #ffd699 0%, rgba(230,184,126,0) 60%);
}
.scn-richard-swears-loyalty .bg {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(242,213,160,0.3) 0%, transparent 50%, rgba(0,0,0,0.15) 100%);
  animation: rl-bg 7s ease-in-out infinite alternate;
}
.scn-richard-swears-loyalty .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(0deg, #8b5e3c 0%, #a6784b 40%, #c4935a 100%);
  border-radius: 20% 20% 0 0;
}
.scn-richard-swears-loyalty .sunlight {
  position: absolute; top: 0; left: 20%; width: 30%; height: 100%;
  background: linear-gradient(135deg, rgba(255,220,150,0.5) 0%, transparent 70%);
  clip-path: polygon(0 0, 100% 0, 80% 100%, 0 80%);
  animation: rl-light 9s ease-in-out infinite alternate;
}
.scn-richard-swears-loyalty .figure-richard {
  position: absolute; bottom: 28%; left: 40%; width: 30px; height: 50px;
  background: linear-gradient(180deg, #2a1f14 0%, #1c120a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: rl-bow 4s ease-in-out infinite;
}
.scn-richard-swears-loyalty .figure-york {
  position: absolute; bottom: 28%; left: 60%; width: 24px; height: 44px;
  background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%);
  border-radius: 50% 50% 30% 30% / 55% 55% 35% 35%;
  transform-origin: bottom center;
  animation: rl-york 6s ease-in-out infinite alternate;
}
.scn-richard-swears-loyalty .crown {
  position: absolute; bottom: 70%; left: 42%; width: 26px; height: 15px;
  background: radial-gradient(ellipse at 50% 30%, #ffd700 0%, #b8860b 70%);
  clip-path: polygon(0% 100%, 20% 40%, 50% 0%, 80% 40%, 100% 100%);
  animation: rl-crown 3s ease-in-out infinite alternate;
  box-shadow: 0 0 10px 2px rgba(255,215,0,0.4);
}
.scn-richard-swears-loyalty .torch-flame {
  position: absolute; bottom: 40%; left: 25%; width: 8px; height: 20px;
  background: radial-gradient(ellipse at 50% 80%, #ff6600 0%, #ffaa00 40%, transparent 80%);
  border-radius: 50% 50% 20% 20%;
  animation: rl-torch 1.2s ease-in-out infinite alternate;
  box-shadow: 0 0 12px 4px rgba(255,120,0,0.5);
}
.scn-richard-swears-loyalty .shadow-drapes {
  position: absolute; top: 0; left: 0; width: 100%; height: 100%;
  background: radial-gradient(ellipse at 70% 50%, transparent 40%, rgba(0,0,0,0.2) 100%);
  pointer-events: none;
}

/* Scene: henry-plans-france (calm, bright interior) */
.scn-henry-plans-france {
  background: linear-gradient(180deg, #d9e2e8 0%, #b0c4d0 40%, #91a6b5 100%),
    radial-gradient(ellipse at 30% 40%, #e6f0f5 0%, transparent 60%);
}
.scn-henry-plans-france .bg {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(255,255,245,0.2) 0%, transparent 60%, rgba(0,0,0,0.08) 100%);
  animation: hp-bg 10s ease-in-out infinite alternate;
}
.scn-henry-plans-france .table {
  position: absolute; bottom: 12%; left: 15%; right: 15%; height: 14%;
  background: linear-gradient(180deg, #6b4e3a 0%, #543e2e 100%);
  border-radius: 4% 4% 8% 8%;
  box-shadow: 0 4px 10px rgba(0,0,0,0.3);
}
.scn-henry-plans-france .map {
  position: absolute; bottom: 18%; left: 22%; width: 40%; height: 8%;
  background: linear-gradient(135deg, #deb887 0%, #c4a265 50%, #b0894a 100%);
  clip-path: polygon(0% 0%, 100% 0%, 90% 100%, 10% 100%);
  animation: hp-map 12s ease-in-out infinite alternate;
  box-shadow: inset 0 0 6px rgba(0,0,0,0.2);
}
.scn-henry-plans-france .figure-henry {
  position: absolute; bottom: 18%; left: 30%; width: 28px; height: 48px;
  background: linear-gradient(180deg, #1e2a3a 0%, #0f1620 100%);
  border-radius: 45% 45% 35% 35% / 55% 55% 35% 35%;
  transform-origin: bottom center;
  animation: hp-henry 5s ease-in-out infinite;
}
.scn-henry-plans-france .figure-gloucester {
  position: absolute; bottom: 18%; left: 50%; width: 24px; height: 42px;
  background: linear-gradient(180deg, #243033 0%, #131c1e 100%);
  border-radius: 50% 50% 30% 30% / 55% 55% 35% 35%;
  transform-origin: bottom center;
  animation: hp-gloucester 6s ease-in-out infinite alternate;
}
.scn-henry-plans-france .ship-model {
  position: absolute; bottom: 22%; left: 55%; width: 20px; height: 10px;
  background: linear-gradient(90deg, #4a3728 0%, #5e4834 100%);
  clip-path: polygon(0% 100%, 30% 20%, 50% 0%, 70% 20%, 100% 100%);
  animation: hp-ship 8s ease-in-out infinite;
  box-shadow: 0 2px 4px rgba(0,0,0,0.3);
}
.scn-henry-plans-france .window-light {
  position: absolute; top: 8%; left: 10%; width: 14%; height: 40%;
  background: linear-gradient(180deg, rgba(255,255,200,0.2) 0%, transparent 100%);
  clip-path: polygon(0% 0%, 100% 0%, 80% 100%, 20% 100%);
  animation: hp-window 15s ease-in-out infinite alternate;
}
.scn-henry-plans-france .candle-flicker {
  position: absolute; bottom: 22%; left: 25%; width: 4px; height: 8px;
  background: radial-gradient(ellipse at 50% 100%, #ffaa33 0%, #ffd966 40%, transparent 70%);
  border-radius: 50% 50% 20% 20%;
  animation: hp-candle 1.5s ease-in-out infinite alternate;
  box-shadow: 0 0 6px 2px rgba(255,170,51,0.5);
}

/* Scene: exeter-prophecy (dark, dim interior) */
.scn-exeter-prophecy {
  background: linear-gradient(180deg, #1a1015 0%, #2a1a1f 30%, #1c1217 100%),
    radial-gradient(ellipse at 50% 100%, #3a2525 0%, transparent 70%);
}
.scn-exeter-prophecy .bg {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, transparent 60%, rgba(0,0,0,0.5) 100%);
  animation: ep-bg 6s ease-in-out infinite alternate;
}
.scn-exeter-prophecy .fireplace {
  position: absolute; bottom: 10%; left: 35%; right: 35%; height: 30%;
  background: linear-gradient(180deg, #2a1a1a 0%, #1a0f0f 100%);
  border-radius: 30% 30% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.8);
}
.scn-exeter-prophecy .embers {
  position: absolute; bottom: 14%; left: 40%; width: 12px; height: 12px;
  background: radial-gradient(circle, #ff4500 0%, #cc3300 60%, transparent 80%);
  border-radius: 50%;
  box-shadow: 0 0 10px 4px rgba(255,69,0,0.4);
  animation: ep-embers 2s ease-in-out infinite alternate;
}
.scn-exeter-prophecy .ashes {
  position: absolute; bottom: 12%; left: 38%; right: 38%; height: 6%;
  background: linear-gradient(0deg, #3a2a2a 0%, #4a3a3a 50%, transparent 100%);
  border-radius: 50%;
  animation: ep-ashes 4s ease-in-out infinite alternate;
}
.scn-exeter-prophecy .figure-exeter {
  position: absolute; bottom: 20%; left: 42%; width: 26px; height: 50px;
  background: linear-gradient(180deg, #0f0f0f 0%, #050505 100%);
  border-radius: 50% 50% 30% 30% / 55% 55% 35% 35%;
  transform-origin: bottom center;
  animation: ep-exeter 7s ease-in-out infinite;
}
.scn-exeter-prophecy .flame-core {
  position: absolute; bottom: 12%; left: 46%; width: 6px; height: 18px;
  background: linear-gradient(0deg, #ff6600 0%, #ffaa00 50%, transparent 100%);
  border-radius: 50% 50% 10% 10%;
  animation: ep-flame 1s ease-in-out infinite alternate;
  box-shadow: 0 0 8px 3px rgba(255,102,0,0.6);
}
.scn-exeter-prophecy .shadow-hand {
  position: absolute; bottom: 22%; left: 48%; width: 14px; height: 10px;
  background: #0a0a0a;
  border-radius: 50% 30% 20% 20%;
  transform: rotate(-20deg);
  animation: ep-hand 4s ease-in-out infinite alternate;
}

/* Scene: joan-disguised-marketmen (tense, dawn) */
.scn-joan-disguised-marketmen {
  background: linear-gradient(180deg, #2a2a4a 0%, #4a5070 30%, #7a8a9a 60%, #b0a080 85%, #dac6a0 100%),
    radial-gradient(ellipse at 50% 0%, #9a8a70 0%, transparent 60%);
}
.scn-joan-disguised-marketmen .bg-dawn {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(255,200,150,0.1) 0%, transparent 40%, rgba(0,0,0,0.2) 100%);
  animation: jd-dawn 12s ease-in-out infinite alternate;
}
.scn-joan-disguised-marketmen .gate-arch {
  position: absolute; bottom: 10%; left: 20%; right: 20%; height: 60%;
  background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 100%);
  clip-path: inset(0 0 0 0 round 0% 0% 0% 0% / 0% 0% 0% 0%);
  border-radius: 40% 40% 0 0 / 30% 30% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.6);
}
.scn-joan-disguised-marketmen .figure-joan {
  position: absolute; bottom: 8%; left: 30%; width: 20px; height: 38px;
  background: linear-gradient(180deg, #1c1c1c 0%, #0e0e0e 100%);
  border-radius: 45% 45% 30% 30% / 55% 55% 35% 35%;
  transform-origin: bottom center;
  animation: jd-joan 3s ease-in-out infinite;
}
.scn-joan-disguised-marketmen .soldier-one {
  position: absolute; bottom: 8%; left: 38%; width: 22px; height: 40px;
  background: linear-gradient(180deg, #2a2a2a 0%, #1a1a1a 100%);
  border-radius: 40% 40% 25% 25% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: jd-soldier1 3.6s ease-in-out infinite alternate;
}
.scn-joan-disguised-marketmen .soldier-two {
  position: absolute; bottom: 8%; left: 50%; width: 20px; height: 36px;
  background: linear-gradient(180deg, #222222 0%, #111111 100%);
  border-radius: 45% 45% 25% 25% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: jd-soldier2 4s ease-in-out infinite;
}
.scn-joan-disguised-marketmen .sack-joan {
  position: absolute; bottom: 10%; left: 28%; width: 14px; height: 18px;
  background: #6b5b4a;
  border-radius: 20% 20% 40% 40%;
  transform: rotate(10deg);
  animation: jd-sack1 2.5s ease-in-out infinite alternate;
}
.scn-joan-disguised-marketmen .sack-two {
  position: absolute; bottom: 10%; left: 48%; width: 14px; height: 16px;
  background: #7a6a5a;
  border-radius: 20% 20% 30% 30%;
  transform: rotate(-8deg);
  animation: jd-sack2 3s ease-in-out infinite alternate;
}
.scn-joan-disguised-marketmen .lantern {
  position: absolute; bottom: 15%; left: 35%; width: 6px; height: 10px;
  background: radial-gradient(circle at 50% 50%, #ffd700 0%, #b8860b 100%);
  border-radius: 30% 30% 10% 10%;
  box-shadow: 0 0 12px 4px rgba(255,215,0,0.5);
  animation: jd-lantern 2s ease-in-out infinite alternate;
}
.scn-joan-disguised-marketmen .road {
  position: absolute; bottom: 0; left: 0; right: 0; height: 10%;
  background: linear-gradient(0deg, #4a4a3a 0%, #3a3a2a 100%);
  border-radius: 10% 10% 0 0;
}

/* ---------- Keyframes for scene: richard-swears-loyalty ---------- */
@keyframes rl-bg { 0% { opacity:0.6 } 50% { opacity:1 } 100% { opacity:0.7 } }
@keyframes rl-light { 0% { opacity:0.4; transform:scaleX(1) } 50% { opacity:0.8; transform:scaleX(1.1) } 100% { opacity:0.5; transform:scaleX(0.9) } }
@keyframes rl-bow { 0% { transform: rotate(0deg) } 25% { transform: rotate(-5deg) } 50% { transform: rotate(0deg) } 75% { transform: rotate(5deg) } 100% { transform: rotate(0deg) } }
@keyframes rl-york { 0% { transform: translateX(0) scaleY(1); opacity:0.7 } 50% { transform: translateX(-2px) scaleY(0.95); opacity:1 } 100% { transform: translateX(0) scaleY(1); opacity:0.7 } }
@keyframes rl-crown { 0% { transform: translateY(0) rotate(-3deg); opacity:0.8 } 50% { transform: translateY(-3px) rotate(0deg); opacity:1 } 100% { transform: translateY(0) rotate(3deg); opacity:0.8 } }
@keyframes rl-torch { 0% { transform: scaleY(1) scaleX(0.8); opacity:0.8 } 50% { transform: scaleY(1.3) scaleX(1); opacity:1 } 100% { transform: scaleY(1) scaleX(0.8); opacity:0.8 } }

/* ---------- Keyframes for scene: henry-plans-france ---------- */
@keyframes hp-bg { 0% { opacity:0.5 } 50% { opacity:0.8 } 100% { opacity:0.6 } }
@keyframes hp-map { 0% { transform: rotate(0deg); opacity:0.9 } 50% { transform: rotate(2deg); opacity:1 } 100% { transform: rotate(-1deg); opacity:0.9 } }
@keyframes hp-henry { 0% { transform: rotate(0deg); opacity:1 } 25% { transform: rotate(-3deg); opacity:0.95 } 50% { transform: rotate(0deg); opacity:1 } 75% { transform: rotate(3deg); opacity:0.95 } 100% { transform: rotate(0deg); opacity:1 } }
@keyframes hp-gloucester { 0% { transform: translateX(0) scaleY(1); opacity:0.8 } 50% { transform: translateX(2px) scaleY(0.95); opacity:1 } 100% { transform: translateX(0) scaleY(1); opacity:0.8 } }
@keyframes hp-ship { 0% { transform: translateY(0) rotate(2deg) } 50% { transform: translateY(-2px) rotate(-2deg) } 100% { transform: translateY(0) rotate(2deg) } }
@keyframes hp-window { 0% { opacity:0.3 } 50% { opacity:0.6 } 100% { opacity:0.2 } }
@keyframes hp-candle { 0% { transform: scaleY(0.8); opacity:0.7 } 50% { transform: scaleY(1.2); opacity:1 } 100% { transform: scaleY(0.8); opacity:0.7 } }

/* ---------- Keyframes for scene: exeter-prophecy ---------- */
@keyframes ep-bg { 0% { opacity:0.3 } 50% { opacity:0.7 } 100% { opacity:0.4 } }
@keyframes ep-embers { 0% { transform: translateY(0) scale(0.8); opacity:0.6 } 50% { transform: translateY(-4px) scale(1.2); opacity:1 } 100% { transform: translateY(0) scale(0.8); opacity:0.6 } }
@keyframes ep-ashes { 0% { opacity:0.2; transform: scaleY(1) } 50% { opacity:0.6; transform: scaleY(1.2) } 100% { opacity:0.2; transform: scaleY(1) } }
@keyframes ep-exeter { 0% { transform: translateX(0) rotate(0deg); opacity:0.9 } 50% { transform: translateX(1px) rotate(2deg); opacity:1 } 100% { transform: translateX(0) rotate(0deg); opacity:0.9 } }
@keyframes ep-flame { 0% { transform: scaleY(0.6) scaleX(0.8); opacity:0.7 } 50% { transform: scaleY(1.1) scaleX(1); opacity:1 } 100% { transform: scaleY(0.6) scaleX(0.8); opacity:0.7 } }
@keyframes ep-hand { 0% { transform: rotate(-20deg) translateX(0); opacity:0.5 } 50% { transform: rotate(-10deg) translateX(3px); opacity:0.8 } 100% { transform: rotate(-20deg) translateX(0); opacity:0.5 } }

/* ---------- Keyframes for scene: joan-disguised-marketmen ---------- */
@keyframes jd-dawn { 0% { opacity:0.4; background:linear-gradient(180deg, rgba(255,200,150,0.05) 0%, transparent 40%, rgba(0,0,0,0.3) 100%) } 50% { opacity:0.8; background:linear-gradient(180deg, rgba(255,200,150,0.2) 0%, transparent 40%, rgba(0,0,0,0.15) 100%) } 100% { opacity:0.5; background:linear-gradient(180deg, rgba(255,200,150,0.1) 0%, transparent 40%, rgba(0,0,0,0.25) 100%) } }
@keyframes jd-joan { 0% { transform: translateX(0) rotate(0deg); opacity:0.9 } 25% { transform: translateX(2px) rotate(-2deg); opacity:1 } 50% { transform: translateX(0) rotate(0deg); opacity:0.95 } 75% { transform: translateX(-2px) rotate(2deg); opacity:1 } 100% { transform: translateX(0) rotate(0deg); opacity:0.9 } }
@keyframes jd-soldier1 { 0% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(-1px) rotate(3deg) } 100% { transform: translateY(0) rotate(0deg) } }
@keyframes jd-soldier2 { 0% { transform: translateX(0) scaleY(1); opacity:0.8 } 50% { transform: translateX(1px) scaleY(0.95); opacity:1 } 100% { transform: translateX(0) scaleY(1); opacity:0.8 } }
@keyframes jd-sack1 { 0% { transform: rotate(10deg) translateX(0); opacity:0.8 } 50% { transform: rotate(5deg) translateX(2px); opacity:1 } 100% { transform: rotate(10deg) translateX(0); opacity:0.8 } }
@keyframes jd-sack2 { 0% { transform: rotate(-8deg) translateX(0); opacity:0.7 } 50% { transform: rotate(-12deg) translateX(-2px); opacity:1 } 100% { transform: rotate(-8deg) translateX(0); opacity:0.7 } }
@keyframes jd-lantern { 0% { transform: rotate(-4deg) scale(0.9); opacity:0.7 } 50% { transform: rotate(4deg) scale(1.1); opacity:1 } 100% { transform: rotate(-4deg) scale(0.9); opacity:0.7 } }

.scn-salisbury-death {
  background: linear-gradient(180deg, #f7e3c0 0%, #d4a97a 40%, #8b6f4c 70%, #3a2a1a 100%);
  background-blend-mode: overlay;
  position: relative;
  overflow: hidden;
  height: 100%;
}
.scn-salisbury-death .sunlight {
  position: absolute;
  inset: 0 0 50% 0;
  background: radial-gradient(ellipse at 50% 0%, #fff9e6 0%, #f7e3c0 40%, transparent 70%);
  animation: sd-sun 14s ease-in-out infinite alternate;
}
.scn-salisbury-death .sky {
  position: absolute;
  inset: 0 0 40% 0;
  background: linear-gradient(180deg, #b8d4d9 0%, #9bb0b5 60%, transparent 100%);
  animation: sd-sky 20s ease-in-out infinite alternate;
}
.scn-salisbury-death .ground {
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 40%;
  background: linear-gradient(180deg, #5c4a3a 0%, #2a1f14 100%);
  border-radius: 60% 40% 0 0 / 30% 20% 0 0;
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.6);
  animation: sd-ground 12s ease-in-out infinite;
}
.scn-salisbury-death .fallen-knight {
  position: absolute;
  bottom: 18%;
  left: 38%;
  width: 40px;
  height: 60px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a100a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform: rotate(15deg) scale(1.1);
  box-shadow: 0 4px 12px rgba(0,0,0,0.5);
  animation: sd-fall 6s ease-in-out infinite alternate;
}
.scn-salisbury-death .sword {
  position: absolute;
  bottom: 20%;
  left: 44%;
  width: 4px;
  height: 30px;
  background: linear-gradient(180deg, #c0b0a0 0%, #8a7a6a 100%);
  border-radius: 20%;
  transform: rotate(45deg) translateX(10px);
  box-shadow: 0 2px 4px rgba(0,0,0,0.4);
  animation: sd-sword 5s ease-in-out infinite;
}
.scn-salisbury-death .shield {
  position: absolute;
  bottom: 22%;
  left: 34%;
  width: 20px;
  height: 24px;
  background: linear-gradient(180deg, #6a4a3a 0%, #3a2212 100%);
  border-radius: 10% 10% 30% 30%;
  transform: rotate(-20deg);
  box-shadow: 0 2px 6px rgba(0,0,0,0.5);
  animation: sd-shield 8s ease-in-out infinite alternate;
}
.scn-salisbury-death .blood-pool {
  position: absolute;
  bottom: 12%;
  left: 36%;
  width: 30px;
  height: 10px;
  background: radial-gradient(ellipse, #5a1a1a 0%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 12px 4px #3a1010;
  animation: sd-blood 4s ease-in-out infinite;
}
.scn-salisbury-death .cloud {
  position: absolute;
  top: 12%;
  right: 10%;
  width: 70px;
  height: 16px;
  background: linear-gradient(180deg, rgba(255,255,255,0.6) 0%, rgba(255,255,255,0.1) 100%);
  border-radius: 50%;
  filter: blur(5px);
  animation: sd-cloud 35s linear infinite reverse;
}
@keyframes sd-sun { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.8; } }
@keyframes sd-sky { 0% { opacity: 0.85; } 50% { opacity: 1; } 100% { opacity: 0.75; } }
@keyframes sd-ground { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-4px); } }
@keyframes sd-fall { 0% { transform: rotate(12deg) translateX(0); } 50% { transform: rotate(18deg) translateX(2px); } 100% { transform: rotate(14deg) translateX(0); } }
@keyframes sd-sword { 0%,100% { transform: rotate(40deg) translateX(10px); } 50% { transform: rotate(50deg) translateX(12px); } }
@keyframes sd-shield { 0% { transform: rotate(-15deg); } 50% { transform: rotate(-25deg) translateY(-2px); } 100% { transform: rotate(-20deg); } }
@keyframes sd-blood { 0%,100% { opacity: 0.7; } 50% { opacity: 1; } }
@keyframes sd-cloud { 0% { transform: translateX(0); } 100% { transform: translateX(-120vw); } }

.scn-talbot-joan-skirmish {
  background: linear-gradient(180deg, #d4c4a0 0%, #b8a080 40%, #8a6a50 70%, #4a3a2a 100%);
  position: relative;
  overflow: hidden;
  height: 100%;
}
.scn-talbot-joan-skirmish .sky-bright {
  position: absolute;
  inset: 0 0 30% 0;
  background: linear-gradient(180deg, #f0e4c0 0%, #d4c4a0 100%);
  animation: tjs-sky 10s ease-in-out infinite alternate;
}
.scn-talbot-joan-skirmish .ground-dusty {
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 35%;
  background: linear-gradient(180deg, #9a8060 0%, #6a5a40 100%);
  border-radius: 30% 70% 0 0 / 50% 40% 0 0;
  box-shadow: inset 0 6px 20px rgba(0,0,0,0.3);
  animation: tjs-ground 16s ease-in-out infinite;
}
.scn-talbot-joan-skirmish .talbot {
  position: absolute;
  bottom: 20%;
  left: 20%;
  width: 30px;
  height: 50px;
  background: linear-gradient(180deg, #5a3a2a 0%, #2a1a10 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform: rotate(5deg);
  box-shadow: 0 4px 8px rgba(0,0,0,0.5);
  animation: tjs-talbot 3s ease-in-out infinite alternate;
}
.scn-talbot-joan-skirmish .joan {
  position: absolute;
  bottom: 20%;
  right: 20%;
  width: 28px;
  height: 48px;
  background: linear-gradient(180deg, #c8553d 0%, #802a1a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform: rotate(-5deg) scaleX(-1);
  box-shadow: 0 4px 8px rgba(0,0,0,0.5);
  animation: tjs-joan 3.2s ease-in-out infinite alternate;
}
.scn-talbot-joan-skirmish .dust-left {
  position: absolute;
  bottom: 18%;
  left: 15%;
  width: 20px;
  height: 14px;
  background: radial-gradient(ellipse, #b8a080 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(8px);
  animation: tjs-dust1 4s ease-in-out infinite;
}
.scn-talbot-joan-skirmish .dust-right {
  position: absolute;
  bottom: 18%;
  right: 15%;
  width: 20px;
  height: 14px;
  background: radial-gradient(ellipse, #b8a080 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(8px);
  animation: tjs-dust2 4.5s ease-in-out infinite;
}
.scn-talbot-joan-skirmish .sun-orb {
  position: absolute;
  top: 6%;
  left: 45%;
  width: 24px;
  height: 24px;
  background: radial-gradient(circle, #fff9e6 0%, #f0d080 50%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 40px 16px rgba(240,208,128,0.6);
  animation: tjs-sun 8s ease-in-out infinite alternate;
}
@keyframes tjs-sky { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.85; } }
@keyframes tjs-ground { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-5px); } }
@keyframes tjs-talbot { 0% { transform: rotate(3deg) translateX(0); } 50% { transform: rotate(6deg) translateX(4px); } 100% { transform: rotate(4deg) translateX(0); } }
@keyframes tjs-joan { 0% { transform: rotate(-3deg) translateX(0) scaleX(-1); } 50% { transform: rotate(-6deg) translateX(-4px) scaleX(-1); } 100% { transform: rotate(-4deg) translateX(0) scaleX(-1); } }
@keyframes tjs-dust1 { 0%,100% { opacity: 0.2; transform: scale(1); } 50% { opacity: 0.6; transform: scale(1.5); } }
@keyframes tjs-dust2 { 0%,100% { opacity: 0.1; transform: scale(0.8); } 50% { opacity: 0.5; transform: scale(1.8); } }
@keyframes tjs-sun { 0% { box-shadow: 0 0 30px 12px rgba(240,208,128,0.4); } 50% { box-shadow: 0 0 50px 20px rgba(240,208,128,0.7); } 100% { box-shadow: 0 0 35px 14px rgba(240,208,128,0.5); } }

.scn-orleans-victory-celebration {
  background: linear-gradient(180deg, #f5e6b0 0%, #d4b080 50%, #8a6a40 100%);
  position: relative;
  overflow: hidden;
  height: 100%;
}
.scn-orleans-victory-celebration .sky-gold {
  position: absolute;
  inset: 0 0 35% 0;
  background: linear-gradient(180deg, #ffe8a0 0%, #f5e6b0 60%, transparent 100%);
  animation: ovc-sky 12s ease-in-out infinite alternate;
}
.scn-orleans-victory-celebration .city-wall {
  position: absolute;
  bottom: 15%; left: 10%; right: 10%;
  height: 40%;
  background: linear-gradient(180deg, #b09878 0%, #887058 100%);
  border-radius: 4% 4% 0 0;
  box-shadow: 0 -4px 12px rgba(0,0,0,0.4);
  animation: ovc-wall 20s ease-in-out infinite;
}
.scn-orleans-victory-celebration .battlement {
  position: absolute;
  bottom: 53%; left: 10%; right: 10%;
  height: 5%;
  background: #705840;
  border-radius: 0;
  box-shadow: 0 4px 8px rgba(0,0,0,0.3);
  animation: ovc-battle 18s ease-in-out infinite alternate;
}
.scn-orleans-victory-celebration .joan-victory {
  position: absolute;
  bottom: 20%;
  left: 45%;
  width: 20px;
  height: 40px;
  background: linear-gradient(180deg, #a06040 0%, #5a3018 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform: scale(1.1);
  box-shadow: 0 4px 10px rgba(0,0,0,0.5);
  animation: ovc-joan 6s ease-in-out infinite alternate;
}
.scn-orleans-victory-celebration .charles-crown {
  position: absolute;
  bottom: 24%;
  left: 52%;
  width: 14px;
  height: 10px;
  background: linear-gradient(180deg, #e8c040 0%, #c09820 100%);
  border-radius: 30% 30% 10% 10%;
  box-shadow: 0 2px 6px rgba(0,0,0,0.4);
  animation: ovc-crown 7s ease-in-out infinite;
}
.scn-orleans-victory-celebration .banner-left {
  position: absolute;
  bottom: 30%;
  left: 14%;
  width: 12px;
  height: 30px;
  background: linear-gradient(180deg, #c8553d 0%, #802a1a 100%);
  border-radius: 0 0 20% 20%;
  transform: rotate(-5deg);
  box-shadow: 0 2px 4px rgba(0,0,0,0.3);
  animation: ovc-banner1 10s ease-in-out infinite alternate;
}
.scn-orleans-victory-celebration .banner-right {
  position: absolute;
  bottom: 30%;
  right: 14%;
  width: 12px;
  height: 30px;
  background: linear-gradient(180deg, #5a3018 0%, #2a140a 100%);
  border-radius: 0 0 20% 20%;
  transform: rotate(5deg);
  box-shadow: 0 2px 4px rgba(0,0,0,0.3);
  animation: ovc-banner2 12s ease-in-out infinite alternate;
}
.scn-orleans-victory-celebration .torch-glow {
  position: absolute;
  bottom: 28%;
  left: 30%;
  width: 12px;
  height: 16px;
  background: radial-gradient(ellipse, #ffd060 0%, transparent 80%);
  border-radius: 50%;
  box-shadow: 0 0 30px 12px rgba(255,208,96,0.5);
  animation: ovc-torch 3s ease-in-out infinite alternate;
}
@keyframes ovc-sky { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.85; } }
@keyframes ovc-wall { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-2px); } }
@keyframes ovc-battle { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes ovc-joan { 0% { transform: scale(1.1) translateY(0); } 50% { transform: scale(1.15) translateY(-2px); } 100% { transform: scale(1.1) translateY(0); } }
@keyframes ovc-crown { 0%,100% { transform: rotate(0); } 50% { transform: rotate(5deg); } }
@keyframes ovc-banner1 { 0% { transform: rotate(-3deg); } 50% { transform: rotate(-8deg); } 100% { transform: rotate(-5deg); } }
@keyframes ovc-banner2 { 0% { transform: rotate(3deg); } 50% { transform: rotate(8deg); } 100% { transform: rotate(5deg); } }
@keyframes ovc-torch { 0% { opacity: 0.7; box-shadow: 0 0 20px 8px rgba(255,208,96,0.4); } 50% { opacity: 1; box-shadow: 0 0 40px 16px rgba(255,208,96,0.7); } 100% { opacity: 0.8; box-shadow: 0 0 25px 10px rgba(255,208,96,0.5); } }

.scn-before-orleans-night-attack {
  background: linear-gradient(180deg, #0a0a1e 0%, #16162e 40%, #20203e 100%);
  position: relative;
  overflow: hidden;
  height: 100%;
}
.scn-before-orleans-night-attack .night-sky {
  position: absolute;
  inset: 0 0 25% 0;
  background: linear-gradient(180deg, #12122a 0%, #0a0a1e 100%);
  animation: bona-sky 30s ease-in-out infinite alternate;
}
.scn-before-orleans-night-attack .stars {
  position: absolute;
  top: 2%; left: 0; right: 0;
  height: 20%;
  width: 100%;
  background: transparent;
  box-shadow:
    10px 10px 0 0 rgba(255,255,255,0.5),
    40px 30px 0 0 rgba(255,255,255,0.4),
    70px 50px 0 0 rgba(255,255,255,0.6),
    120px 80px 0 0 rgba(255,255,255,0.3),
    160px 20px 0 0 rgba(255,255,255,0.5),
    200px 60px 0 0 rgba(255,255,255,0.4),
    240px 90px 0 0 rgba(255,255,255,0.6),
    280px 40px 0 0 rgba(255,255,255,0.3);
  animation: bona-stars 60s linear infinite;
}
.scn-before-orleans-night-attack .moon-crescent {
  position: absolute;
  top: 5%;
  left: 70%;
  width: 20px;
  height: 20px;
  background: radial-gradient(circle at 60% 50%, #e8e4d8 0%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 30px 10px rgba(232,228,216,0.5);
  animation: bona-moon 15s ease-in-out infinite alternate;
}
.scn-before-orleans-night-attack .wall-dark {
  position: absolute;
  bottom: 5%; left: 5%; right: 5%;
  height: 40%;
  background: linear-gradient(180deg, #2a2a3e 0%, #1a1a2a 100%);
  border-radius: 4% 4% 0 0;
  box-shadow: inset 0 6px 20px rgba(0,0,0,0.6), 0 -2px 8px rgba(0,0,0,0.5);
  animation: bona-wall 25s ease-in-out infinite;
}
.scn-before-orleans-night-attack .sentry-left {
  position: absolute;
  bottom: 20%;
  left: 18%;
  width: 18px;
  height: 30px;
  background: linear-gradient(180deg, #1e1e2e 0%, #0e0e1a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform: scale(0.9);
  box-shadow: 0 2px 6px rgba(0,0,0,0.5);
  animation: bona-sentry 8s ease-in-out infinite alternate;
}
.scn-before-orleans-night-attack .sentry-right {
  position: absolute;
  bottom: 20%;
  right: 18%;
  width: 18px;
  height: 30px;
  background: linear-gradient(180deg, #1e1e2e 0%, #0e0e1a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform: scale(0.9) scaleX(-1);
  box-shadow: 0 2px 6px rgba(0,0,0,0.5);
  animation: bona-sentry 9s ease-in-out infinite alternate;
}
.scn-before-orleans-night-attack .torch-left {
  position: absolute;
  bottom: 30%;
  left: 16%;
  width: 8px;
  height: 12px;
  background: radial-gradient(ellipse, #ff8030 0%, transparent 80%);
  border-radius: 50%;
  box-shadow: 0 0 20px 8px rgba(255,128,48,0.4);
  animation: bona-torch 3s ease-in-out infinite alternate;
}
.scn-before-orleans-night-attack .torch-right {
  position: absolute;
  bottom: 30%;
  right: 16%;
  width: 8px;
  height: 12px;
  background: radial-gradient(ellipse, #ff8030 0%, transparent 80%);
  border-radius: 50%;
  box-shadow: 0 0 20px 8px rgba(255,128,48,0.4);
  animation: bona-torch 3.5s ease-in-out infinite alternate;
}
.scn-before-orleans-night-attack .watch-fire {
  position: absolute;
  bottom: 8%;
  left: 45%;
  width: 20px;
  height: 20px;
  background: radial-gradient(circle, #ff6030 0%, #ff4000 40%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 40px 20px rgba(255,64,0,0.3);
  animation: bona-fire 5s ease-in-out infinite;
}
@keyframes bona-sky { 0% { opacity: 0.7; } 50% { opacity: 0.9; } 100% { opacity: 0.8; } }
@keyframes bona-stars { 0% { opacity: 0.6; } 50% { opacity: 0.9; } 100% { opacity: 0.7; } }
@keyframes bona-moon { 0% { box-shadow: 0 0 20px 6px rgba(232,228,216,0.3); } 50% { box-shadow: 0 0 40px 14px rgba(232,228,216,0.6); } 100% { box-shadow: 0 0 25px 8px rgba(232,228,216,0.4); } }
@keyframes bona-wall { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-2px); } }
@keyframes bona-sentry { 0% { transform: scale(0.9) translateY(0); } 50% { transform: scale(0.95) translateY(-3px); } 100% { transform: scale(0.9) translateY(0); } }
@keyframes bona-torch { 0% { opacity: 0.7; box-shadow: 0 0 14px 6px rgba(255,128,48,0.3); } 50% { opacity: 1; box-shadow: 0 0 28px 12px rgba(255,128,48,0.6); } 100% { opacity: 0.8; box-shadow: 0 0 18px 8px rgba(255,128,48,0.4); } }
@keyframes bona-fire { 0%,100% { transform: scale(1); opacity: 0.8; } 50% { transform: scale(1.3); opacity: 1; } }

.scn-court-king-judgment {
  background:
    linear-gradient(180deg, #d4c4a4 0%, #b8945c 25%, #8a6a3a 55%, #5a4020 100%),
    radial-gradient(ellipse at 50% 30%, rgba(220,200,160,0.6) 0%, transparent 70%);
}
.scn-court-king-judgment .bg-warm {
  position: absolute; inset: 0; background: linear-gradient(180deg, rgba(200,180,140,0.3) 0%, transparent 40%, rgba(60,40,20,0.5) 90%);
  animation: ckj-bg-pulse 6s ease-in-out infinite alternate;
}
.scn-court-king-judgment .pillar-left {
  position: absolute; top: 8%; left: 6%; width: 5%; height: 82%;
  background: linear-gradient(90deg, #b09878 0%, #d4c0a0 30%, #c8b090 60%, #908060 100%);
  border-radius: 4px; box-shadow: 4px 0 12px rgba(0,0,0,0.3);
  animation: ckj-pillar-sway 10s ease-in-out infinite;
}
.scn-court-king-judgment .pillar-right {
  position: absolute; top: 8%; right: 6%; width: 5%; height: 82%;
  background: linear-gradient(90deg, #908060 0%, #c8b090 30%, #d4c0a0 70%, #b09878 100%);
  border-radius: 4px; box-shadow: -4px 0 12px rgba(0,0,0,0.3);
  animation: ckj-pillar-sway 10s ease-in-out infinite -3s;
}
.scn-court-king-judgment .throne-base {
  position: absolute; bottom: 22%; left: 50%; width: 30%; height: 18%;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #7a5a2a 0%, #5a3a1a 40%, #3a2a10 100%);
  border-radius: 12% 12% 6% 6% / 30% 30% 10% 10%;
  box-shadow: 0 -8px 20px rgba(0,0,0,0.4), inset 0 4px 8px rgba(200,160,100,0.3);
  animation: ckj-throne 8s ease-in-out infinite alternate;
}
.scn-court-king-judgment .king-figure {
  position: absolute; bottom: 34%; left: 50%; width: 14%; height: 26%;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #8a2a1a 0%, #5a1a0e 60%, #2a0a06 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 0 8px 24px rgba(60,30,10,0.6), inset 0 -6px 12px rgba(0,0,0,0.4);
  animation: ckj-king-stern 4s ease-in-out infinite alternate;
}
.scn-court-king-judgment .knight-figure {
  position: absolute; bottom: 18%; left: 32%; width: 12%; height: 22%;
  background: linear-gradient(180deg, #c0b0a0 0%, #908070 40%, #604840 100%);
  border-radius: 50% 50% 30% 30% / 70% 70% 30% 30%;
  transform: rotate(8deg) translateX(-10px);
  box-shadow: -4px 0 12px rgba(0,0,0,0.3);
  animation: ckj-knight-kneel 5s ease-in-out infinite alternate;
}
.scn-court-king-judgment .light-shaft {
  position: absolute; top: 0; left: 30%; width: 40%; height: 100%;
  background: linear-gradient(180deg, rgba(255,230,180,0.35) 0%, rgba(255,230,180,0.08) 40%, transparent 80%);
  clip-path: polygon(20% 0%, 80% 0%, 65% 100%, 35% 100%);
  filter: blur(6px);
  animation: ckj-light-shaft 7s ease-in-out infinite alternate;
}
.scn-court-king-judgment .shadow-harsh {
  position: absolute; bottom: 18%; left: 28%; width: 20%; height: 40%;
  background: linear-gradient(180deg, rgba(30,20,10,0.5) 0%, transparent 100%);
  clip-path: polygon(0% 0%, 100% 0%, 80% 100%, 20% 100%);
  filter: blur(3px);
  animation: ckj-shadow-shift 5s ease-in-out infinite alternate;
}
@keyframes ckj-bg-pulse {
  0% { opacity: 0.7; } 50% { opacity: 1; } 100% { opacity: 0.8; }
}
@keyframes ckj-pillar-sway {
  0%, 100% { transform: scaleX(1) translateY(0); } 50% { transform: scaleX(1.02) translateY(-2px); }
}
@keyframes ckj-throne {
  0% { transform: translateX(-50%) scaleY(1); } 50% { transform: translateX(-50%) scaleY(1.02); } 100% { transform: translateX(-48%) scaleY(0.98); }
}
@keyframes ckj-king-stern {
  0% { transform: translateX(-50%) rotate(0deg) scale(1); } 50% { transform: translateX(-50%) rotate(-1deg) scale(1.01); } 100% { transform: translateX(-50%) rotate(1deg) scale(0.99); }
}
@keyframes ckj-knight-kneel {
  0% { transform: rotate(6deg) translateX(-8px) scale(1); } 50% { transform: rotate(10deg) translateX(-12px) scale(1.02); } 100% { transform: rotate(6deg) translateX(-8px) scale(1); }
}
@keyframes ckj-light-shaft {
  0% { opacity: 0.6; transform: skewX(-2deg); } 50% { opacity: 1; transform: skewX(0deg); } 100% { opacity: 0.7; transform: skewX(2deg); }
}
@keyframes ckj-shadow-shift {
  0% { opacity: 0.6; transform: skewX(-3deg); } 50% { opacity: 0.9; transform: skewX(1deg); } 100% { opacity: 0.7; transform: skewX(-1deg); }
}

.scn-court-knightly-virtues {
  background:
    linear-gradient(180deg, #e8dcc8 0%, #d4c4a8 30%, #b8a484 60%, #9a8a6a 100%),
    radial-gradient(ellipse at 50% 40%, rgba(255,240,200,0.5) 0%, transparent 70%);
}
.scn-court-knightly-virtues .bg-soft {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(255,245,220,0.4) 0%, transparent 50%, rgba(120,100,70,0.2) 100%);
  animation: ckv-bg-breathe 15s ease-in-out infinite alternate;
}
.scn-court-knightly-virtues .niche-left {
  position: absolute; bottom: 10%; left: 8%; width: 20%; height: 60%;
  background: linear-gradient(180deg, #c8b898 0%, #a09070 60%, #7a6a4a 100%);
  border-radius: 30% 30% 10% 10% / 40% 40% 10% 10%;
  box-shadow: inset 0 -10px 20px rgba(0,0,0,0.2);
  animation: ckv-niche 14s ease-in-out infinite alternate;
}
.scn-court-knightly-virtues .niche-right {
  position: absolute; bottom: 10%; right: 8%; width: 20%; height: 60%;
  background: linear-gradient(180deg, #c8b898 0%, #a09070 60%, #7a6a4a 100%);
  border-radius: 30% 30% 10% 10% / 40% 40% 10% 10%;
  box-shadow: inset 0 -10px 20px rgba(0,0,0,0.2);
  animation: ckv-niche 14s ease-in-out infinite alternate -7s;
}
.scn-court-knightly-virtues .knight-left {
  position: absolute; bottom: 18%; left: 14%; width: 10%; height: 28%;
  background: linear-gradient(180deg, #a09080 0%, #807060 50%, #504030 100%);
  border-radius: 50% 50% 30% 30% / 70% 70% 30% 30%;
  transform: rotate(-4deg);
  box-shadow: 0 4px 12px rgba(0,0,0,0.2);
  animation: ckv-knight-left 8s ease-in-out infinite alternate;
}
.scn-court-knightly-virtues .knight-right {
  position: absolute; bottom: 18%; right: 14%; width: 10%; height: 28%;
  background: linear-gradient(180deg, #a09080 0%, #807060 50%, #504030 100%);
  border-radius: 50% 50% 30% 30% / 70% 70% 30% 30%;
  transform: rotate(4deg);
  box-shadow: 0 4px 12px rgba(0,0,0,0.2);
  animation: ckv-knight-right 8s ease-in-out infinite alternate;
}
.scn-court-knightly-virtues .shield-center {
  position: absolute; bottom: 30%; left: 50%; width: 12%; height: 16%;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #b89878 0%, #8a7050 40%, #6a5030 100%);
  border-radius: 20% 20% 30% 30% / 30% 30% 40% 40%;
  box-shadow: 0 6px 16px rgba(0,0,0,0.3), inset 0 0 20px rgba(200,180,140,0.3);
  animation: ckv-shield 12s ease-in-out infinite;
}
.scn-court-knightly-virtues .banner-drape {
  position: absolute; top: 10%; left: 50%; width: 8%; height: 30%;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #c8553d 0%, #a03a2a 40%, #7a2a1a 100%);
  border-radius: 0 0 30% 30% / 0 0 20% 20%;
  clip-path: polygon(0% 0%, 100% 0%, 90% 100%, 70% 80%, 50% 100%, 30% 80%, 10% 100%);
  animation: ckv-banner 9s ease-in-out infinite alternate;
}
.scn-court-knightly-virtues .glow-diffuse {
  position: absolute; top: 20%; left: 25%; width: 50%; height: 40%;
  background: radial-gradient(ellipse, rgba(255,230,180,0.45) 0%, rgba(255,230,180,0.1) 40%, transparent 70%);
  filter: blur(15px);
  animation: ckv-glow 10s ease-in-out infinite alternate;
}
@keyframes ckv-bg-breathe {
  0% { opacity: 0.7; } 50% { opacity: 0.9; } 100% { opacity: 0.75; }
}
@keyframes ckv-niche {
  0%, 100% { transform: scaleY(1); } 50% { transform: scaleY(1.03); }
}
@keyframes ckv-knight-left {
  0% { transform: rotate(-4deg) translateY(0); } 50% { transform: rotate(-2deg) translateY(-3px); } 100% { transform: rotate(-4deg) translateY(0); }
}
@keyframes ckv-knight-right {
  0% { transform: rotate(4deg) translateY(0); } 50% { transform: rotate(2deg) translateY(-3px); } 100% { transform: rotate(4deg) translateY(0); }
}
@keyframes ckv-shield {
  0%, 100% { transform: translateX(-50%) scale(1); } 50% { transform: translateX(-50%) scale(1.04); }
}
@keyframes ckv-banner {
  0% { transform: translateX(-50%) skewX(0deg); } 50% { transform: translateX(-50%) skewX(2deg); } 100% { transform: translateX(-50%) skewX(-2deg); }
}
@keyframes ckv-glow {
  0% { opacity: 0.5; transform: scale(0.95); } 50% { opacity: 0.8; transform: scale(1.05); } 100% { opacity: 0.6; transform: scale(0.98); }
}

.scn-court-fastolfe-banished {
  background:
    linear-gradient(180deg, #c8b898 0%, #a89070 25%, #8a7050 55%, #5a4030 100%),
    radial-gradient(ellipse at 30% 60%, rgba(220,180,120,0.4) 0%, transparent 60%);
}
.scn-court-fastolfe-banished .bg-dim {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(60,40,30,0.3) 0%, transparent 40%, rgba(30,20,10,0.6) 100%);
  animation: cfb-bg-dim 7s ease-in-out infinite alternate;
}
.scn-court-fastolfe-banished .arch-door {
  position: absolute; bottom: 6%; right: 8%; width: 22%; height: 70%;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 60%, #1a0e06 100%);
  border-radius: 30% 30% 0 0 / 50% 50% 0 0;
  box-shadow: inset 0 0 30px rgba(0,0,0,0.6);
  animation: cfb-arch 9s ease-in-out infinite alternate;
}
.scn-court-fastolfe-banished .figure-exiting {
  position: absolute; bottom: 10%; right: 18%; width: 10%; height: 26%;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0e06 60%, #0a0602 100%);
  border-radius: 50% 50% 30% 30% / 70% 70% 30% 30%;
  transform: rotate(8deg) translateX(10px);
  animation: cfb-exit 5s ease-in-out infinite alternate;
}
.scn-court-fastolfe-banished .accuser-arm {
  position: absolute; bottom: 26%; left: 32%; width: 6%; height: 20%;
  background: linear-gradient(180deg, #a09080 0%, #605040 70%, #30201a 100%);
  border-radius: 30% 30% 20% 20% / 40% 40% 20% 20%;
  transform: rotate(-30deg) translateY(-10px);
  transform-origin: bottom center;
  animation: cfb-point 3s ease-in-out infinite alternate;
}
.scn-court-fastolfe-banished .shadow-cast {
  position: absolute; bottom: 6%; left: 20%; width: 40%; height: 14%;
  background: linear-gradient(90deg, rgba(20,10,5,0.6) 0%, rgba(20,10,5,0.2) 100%);
  clip-path: polygon(0% 0%, 100% 0%, 85% 100%, 15% 100%);
  filter: blur(4px);
  animation: cfb-shadow 6s ease-in-out infinite alternate;
}
.scn-court-fastolfe-banished .seal-broken {
  position: absolute; top: 20%; left: 18%; width: 8%; height: 8%;
  background: radial-gradient(circle, #c8553d 0%, #8a2a1a 60%, #4a0e06 100%);
  border-radius: 50%;
  box-shadow: 0 0 12px 3px rgba(200,80,50,0.4);
  animation: cfb-seal 4s ease-in-out infinite alternate;
}
.scn-court-fastolfe-banished .torch-flame {
  position: absolute; bottom: 30%; left: 10%; width: 4%; height: 10%;
  background: linear-gradient(180deg, #ffd060 0%, #f08030 40%, #a04020 80%, #4a1a0a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  filter: blur(1px);
  animation: cfb-torch-flame 0.8s ease-in-out infinite alternate;
}
.scn-court-fastolfe-banished .torch-glow {
  position: absolute; bottom: 24%; left: 6%; width: 12%; height: 20%;
  background: radial-gradient(ellipse, rgba(255,200,80,0.35) 0%, rgba(255,200,80,0.08) 50%, transparent 80%);
  filter: blur(8px);
  animation: cfb-torch-glow 2s ease-in-out infinite alternate;
}
@keyframes cfb-bg-dim {
  0% { opacity: 0.6; } 50% { opacity: 0.85; } 100% { opacity: 0.7; }
}
@keyframes cfb-arch {
  0%, 100% { transform: scaleX(1); } 50% { transform: scaleX(1.03); }
}
@keyframes cfb-exit {
  0% { transform: rotate(6deg) translateX(6px) scale(1); } 50% { transform: rotate(10deg) translateX(14px) scale(1.02); } 100% { transform: rotate(6deg) translateX(6px) scale(1); }
}
@keyframes cfb-point {
  0% { transform: rotate(-28deg) translateY(-8px); } 50% { transform: rotate(-34deg) translateY(-12px); } 100% { transform: rotate(-28deg) translateY(-8px); }
}
@keyframes cfb-shadow {
  0% { transform: skewX(-2deg); opacity: 0.7; } 50% { transform: skewX(2deg); opacity: 0.9; } 100% { transform: skewX(-1deg); opacity: 0.75; }
}
@keyframes cfb-seal {
  0% { transform: scale(0.95) rotate(0deg); } 50% { transform: scale(1.05) rotate(8deg); } 100% { transform: scale(0.98) rotate(-4deg); }
}
@keyframes cfb-torch-flame {
  0% { transform: scaleY(0.9) translateY(0); } 50% { transform: scaleY(1.1) translateY(-3px); } 100% { transform: scaleY(0.95) translateY(0); }
}
@keyframes cfb-torch-glow {
  0% { opacity: 0.5; transform: scale(0.95); } 50% { opacity: 0.8; transform: scale(1.08); } 100% { opacity: 0.6; transform: scale(0.98); }
}

.scn-court-burgundy-revolt {
  background:
    linear-gradient(180deg, #d4c4a8 0%, #b8a488 25%, #9a8060 55%, #6a5038 100%),
    radial-gradient(ellipse at 60% 50%, rgba(200,170,130,0.5) 0%, transparent 60%);
}
.scn-court-burgundy-revolt .bg-rich {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(200,180,150,0.3) 0%, transparent 40%, rgba(50,35,20,0.4) 100%);
  animation: cbr-bg-rich 8s ease-in-out infinite alternate;
}
.scn-court-burgundy-revolt .table-horizon {
  position: absolute; bottom: 20%; left: 5%; right: 5%; height: 4%;
  background: linear-gradient(180deg, #6a5038 0%, #4a3828 100%);
  border-radius: 2px;
  box-shadow: 0 6px 20px rgba(0,0,0,0.4);
  animation: cbr-table 12s ease-in-out infinite alternate;
}
.scn-court-burgundy-revolt .letter-scroll {
  position: absolute; bottom: 24%; left: 50%; width: 18%; height: 12%;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #e8dcc4 0%, #c8b898 30%, #d4c4a8 70%, #b8a484 100%);
  border-radius: 4px 4px 8% 8% / 4px 4px 20% 20%;
  box-shadow: 0 4px 16px rgba(0,0,0,0.3);
  animation: cbr-letter 6s ease-in-out infinite alternate;
}
.scn-court-burgundy-revolt .figure-left {
  position: absolute; bottom: 22%; left: 20%; width: 12%; height: 28%;
  background: linear-gradient(180deg, #a09080 0%, #807060 50%, #504030 100%);
  border-radius: 50% 50% 30% 30% / 70% 70% 30% 30%;
  transform: rotate(-6deg);
  box-shadow: 0 4px 12px rgba(0,0,0,0.3);
  animation: cbr-fig-left 5s ease-in-out infinite alternate;
}
.scn-court-burgundy-revolt .figure-right {
  position: absolute; bottom: 22%; right: 20%; width: 12%; height: 28%;
  background: linear-gradient(180deg, #5a4030 0%, #3a2818 50%, #1a1008 100%);
  border-radius: 50% 50% 30% 30% / 70% 70% 30% 30%;
  transform: rotate(6deg);
  box-shadow: 0 4px 12px rgba(0,0,0,0.4);
  animation: cbr-fig-right 5s ease-in-out infinite alternate;
}
.scn-court-burgundy-revolt .seal-wax {
  position: absolute; bottom: 27%; left: 50%; width: 6%; height: 5%;
  transform: translateX(-50%);
  background: radial-gradient(circle, #c8553d 0%, #9a3a2a 50%, #6a1a0e 100%);
  border-radius: 50%;
  box-shadow: 0 0 10px 2px rgba(200,80,50,0.4);
  animation: cbr-seal-wax 7s ease-in-out infinite;
}
.scn-court-burgundy-revolt .candle-flame {
  position: absolute; bottom: 32%; left: 38%; width: 2.5%; height: 6%;
  background: linear-gradient(180deg, #ffd060 0%, #f08030 50%, #a04020 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  filter: blur(0.5px);
  animation: cbr-candle 1.2s ease-in-out infinite alternate;
}
.scn-court-burgundy-revolt .candle-base {
  position: absolute; bottom: 31%; left: 37%; width: 4%; height: 3%;
  background: linear-gradient(180deg, #e8dcc4 0%, #c8b898 100%);
  border-radius: 4px 4px 2px 2px;
  animation: cbr-candle-base 4s ease-in-out infinite alternate;
}
@keyframes cbr-bg-rich {
  0% { opacity: 0.7; } 50% { opacity: 0.95; } 100% { opacity: 0.75; }
}
@keyframes cbr-table {
  0%, 100% { transform: scaleY(1); } 50% { transform: scaleY(1.15); }
}
@keyframes cbr-letter {
  0% { transform: translateX(-50%) rotate(0deg) scale(1); } 50% { transform: translateX(-50%) rotate(1deg) scale(1.02); } 100% { transform: translateX(-48%) rotate(-1deg) scale(0.98); }
}
@keyframes cbr-fig-left {
  0% { transform: rotate(-6deg) translateY(0); } 50% { transform: rotate(-4deg) translateY(-4px); } 100% { transform: rotate(-6deg) translateY(0); }
}
@keyframes cbr-fig-right {
  0% { transform: rotate(6deg) translateY(0); } 50% { transform: rotate(8deg) translateY(-3px); } 100% { transform: rotate(6deg) translateY(0); }
}
@keyframes cbr-seal-wax {
  0%, 100% { transform: translateX(-50%) scale(1) rotate(0deg); } 50% { transform: translateX(-50%) scale(1.06) rotate(6deg); }
}
@keyframes cbr-candle {
  0% { transform: scaleY(0.9) translateY(0); } 50% { transform: scaleY(1.15) translateY(-4px); } 100% { transform: scaleY(0.95) translateY(0); }
}
@keyframes cbr-candle-base {
  0%, 100% { transform: scaleY(1); } 50% { transform: scaleY(0.9); }
}

/* Scene anjou-english-united (aeu) – tense, sunlit */
.scn-anjou-english-united {
  background:
    linear-gradient(180deg, #87ceeb 0%, #f0e68c 40%, #c3903b 70%, #8b5e3c 100%),
    radial-gradient(ellipse at 50% 0%, #fff8dc 0%, transparent 60%);
}
.scn-anjou-english-united .sky-aeu {
  position: absolute; inset: 0 0 55% 0;
  background: linear-gradient(180deg, #b0d4f0 0%, #87ceeb 100%);
  animation: aeu-sky 15s ease-in-out infinite alternate;
}
.scn-anjou-english-united .sun-aeu {
  position: absolute; top: 8%; left: 50%; width: 60px; height: 60px;
  transform: translateX(-50%);
  background: radial-gradient(circle, #fff8dc 0%, #ffd700 60%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 40px 20px rgba(255,215,0,0.3);
  animation: aeu-sun 4s ease-in-out infinite alternate;
}
.scn-anjou-english-united .hills-aeu {
  position: absolute; bottom: 35%; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #6b8e23 0%, #556b2f 100%);
  border-radius: 50% 50% 0 0 / 100% 100% 0 0;
  animation: aeu-hills 20s ease-in-out infinite;
}
.scn-anjou-english-united .left-army-aeu {
  position: absolute; bottom: 30%; left: 5%; width: 20%; height: 15%;
  background: linear-gradient(90deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 30% 10% 10% 30% / 50% 20% 20% 50%;
  clip-path: polygon(10% 100%, 0 0, 100% 0, 90% 100%);
  animation: aeu-army-left 6s ease-in-out infinite alternate;
}
.scn-anjou-english-united .right-army-aeu {
  position: absolute; bottom: 30%; right: 5%; width: 20%; height: 15%;
  background: linear-gradient(270deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 10% 30% 30% 10% / 20% 50% 50% 20%;
  clip-path: polygon(0 0, 90% 100%, 100% 0, 10% 100%);
  animation: aeu-army-right 6s ease-in-out infinite alternate;
}
.scn-anjou-english-united .banner-aeu {
  position: absolute; bottom: 40%; left: 50%; width: 8px; height: 30px;
  transform: translateX(-50%);
  background: #5e2a1a;
  border-radius: 2px;
}
.scn-anjou-english-united .banner-aeu::after {
  content: ''; position: absolute; top: -12px; left: 4px; width: 24px; height: 18px;
  background: #c8553d;
  border-radius: 0 60% 60% 0;
  transform-origin: left center;
  animation: aeu-flag 2s ease-in-out infinite alternate;
}
.scn-anjou-english-united .dust-aeu {
  position: absolute; bottom: 28%; left: 0; right: 0; height: 10%;
  background: rgba(200,170,130,0.15);
  filter: blur(8px);
  animation: aeu-dust 8s linear infinite;
}
.scn-anjou-english-united .ground-aeu {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #7a5a3a 0%, #4a3a2a 100%);
  border-radius: 10% 10% 0 0;
}
@keyframes aeu-sky { 0% { opacity: 0.7 } 50% { opacity: 1 } 100% { opacity: 0.8 } }
@keyframes aeu-sun { 0% { transform: translateX(-50%) scale(0.95); box-shadow: 0 0 30px 15px rgba(255,215,0,0.2); } 50% { transform: translateX(-50%) scale(1.05); box-shadow: 0 0 50px 25px rgba(255,215,0,0.4); } 100% { transform: translateX(-50%) scale(0.98); box-shadow: 0 0 35px 18px rgba(255,215,0,0.25); } }
@keyframes aeu-hills { 0% { transform: translateY(0) scaleY(1); } 50% { transform: translateY(-3px) scaleY(1.02); } 100% { transform: translateY(0) scaleY(1); } }
@keyframes aeu-army-left { 0% { transform: translateX(0) scaleX(1); } 50% { transform: translateX(8%) scaleX(1.05); } 100% { transform: translateX(0) scaleX(1); } }
@keyframes aeu-army-right { 0% { transform: translateX(0) scaleX(1); } 50% { transform: translateX(-8%) scaleX(1.05); } 100% { transform: translateX(0) scaleX(1); } }
@keyframes aeu-flag { 0% { transform: rotate(0deg); } 100% { transform: rotate(25deg); } }
@keyframes aeu-dust { 0% { transform: translateX(-10%); opacity: 0.3; } 50% { transform: translateX(5%); opacity: 0.7; } 100% { transform: translateX(-10%); opacity: 0.3; } }

/* Scene anjou-fear-dismissed (afd) – tense, sunlit; figure conquering */
.scn-anjou-fear-dismissed {
  background:
    linear-gradient(180deg, #87ceeb 0%, #f0e68c 30%, #daa520 60%, #8b5e3c 100%),
    radial-gradient(ellipse at 50% 0%, #fffacd 0%, transparent 70%);
}
.scn-anjou-fear-dismissed .sky-afd {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #b0d4f0 0%, #87ceeb 100%);
  animation: afd-sky 20s ease-in-out infinite alternate;
}
.scn-anjou-fear-dismissed .sun-afd {
  position: absolute; top: 5%; left: 70%; width: 70px; height: 70px;
  background: radial-gradient(circle, #fff8dc 0%, #ffb347 70%, transparent 80%);
  border-radius: 50%;
  box-shadow: 0 0 60px 30px rgba(255,179,71,0.3);
  animation: afd-sun 5s ease-in-out infinite alternate;
}
.scn-anjou-fear-dismissed .ground-afd {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #6b8e23 0%, #556b2f 100%);
  border-radius: 40% 40% 0 0;
}
.scn-anjou-fear-dismissed .figure-afd {
  position: absolute; bottom: 25%; left: 45%; width: 30px; height: 70px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: afd-figure 4s ease-in-out infinite;
}
.scn-anjou-fear-dismissed .cape-afd {
  position: absolute; bottom: 22%; left: 40%; width: 60px; height: 50px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #5e2a1a 0%, #3a1a0a 100%);
  border-radius: 0 80% 80% 0 / 50% 80% 80% 0;
  transform-origin: top left;
  animation: afd-cape 3s ease-in-out infinite;
}
.scn-anjou-fear-dismissed .crown-afd {
  position: absolute; bottom: 78%; left: 45%; width: 20px; height: 12px;
  transform: translateX(-50%);
  background: #daa520;
  clip-path: polygon(10% 100%, 50% 0%, 90% 100%, 70% 80%, 30% 80%);
  animation: afd-crown 2s ease-in-out infinite alternate;
}
.scn-anjou-fear-dismissed .grass-left-afd {
  position: absolute; bottom: 31%; left: 10%; width: 3px; height: 20px;
  background: #556b2f;
  border-radius: 50% 50% 0 0;
  transform: rotate(-15deg);
  box-shadow: 8px 0 #556b2f, 16px 2px #556b2f, 24px -1px #556b2f;
  animation: afd-grass 6s ease-in-out infinite;
}
.scn-anjou-fear-dismissed .grass-right-afd {
  position: absolute; bottom: 31%; right: 15%; width: 3px; height: 18px;
  background: #556b2f;
  border-radius: 50% 50% 0 0;
  transform: rotate(10deg);
  box-shadow: -8px 1px #556b2f, -16px -2px #556b2f, -24px 0 #556b2f;
  animation: afd-grass 6s ease-in-out infinite reverse;
}
@keyframes afd-sky { 0% { opacity: 0.8 } 50% { opacity: 1 } 100% { opacity: 0.75 } }
@keyframes afd-sun { 0% { transform: scale(0.95); opacity: 0.9; box-shadow: 0 0 40px 20px rgba(255,179,71,0.2); } 50% { transform: scale(1.05); opacity: 1; box-shadow: 0 0 60px 30px rgba(255,179,71,0.4); } 100% { transform: scale(0.98); opacity: 0.95; box-shadow: 0 0 50px 25px rgba(255,179,71,0.25); } }
@keyframes afd-figure { 0%,100% { transform: translateX(-50%) rotate(-1deg); } 50% { transform: translateX(-50%) rotate(2deg); } }
@keyframes afd-cape { 0%,100% { transform: translateX(-50%) rotate(-3deg); } 50% { transform: translateX(-50%) rotate(8deg); } }
@keyframes afd-crown { 0% { transform: translateX(-50%) scaleY(1); } 100% { transform: translateX(-50%) scaleY(1.1); } }
@keyframes afd-grass { 0%,100% { transform: rotate(-15deg); } 50% { transform: rotate(-5deg); } }

/* Scene angiers-joan-invocation (aji) – dark, moonlit; ritual circle */
.scn-angiers-joan-invocation {
  background:
    linear-gradient(180deg, #0a0a2e 0%, #1a1a4e 50%, #2a2a5e 100%),
    radial-gradient(ellipse at 50% 80%, #3a3a7e 0%, transparent 60%);
}
.scn-angiers-joan-invocation .sky-aji {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #0a0a2e 0%, #1a1a4e 100%);
  animation: aji-sky 12s ease-in-out infinite alternate;
}
.scn-angiers-joan-invocation .moon-aji {
  position: absolute; top: 10%; right: 20%; width: 50px; height: 50px;
  background: radial-gradient(circle at 40% 40%, #c0d0e0 0%, #8090a0 70%);
  border-radius: 50%;
  box-shadow: 0 0 30px 10px rgba(128,144,160,0.4);
  animation: aji-moon 8s ease-in-out infinite alternate;
}
.scn-angiers-joan-invocation .ground-aji {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #1a1a2e 0%, #0a0a1a 100%);
  border-radius: 30% 30% 0 0;
}
.scn-angiers-joan-invocation .circle-aji {
  position: absolute; bottom: 20%; left: 50%; width: 120px; height: 120px;
  transform: translateX(-50%);
  background: radial-gradient(circle, rgba(128,160,255,0.1) 0%, transparent 70%);
  border: 2px solid rgba(128,160,255,0.3);
  border-radius: 50%;
  animation: aji-circle 10s ease-in-out infinite;
}
.scn-angiers-joan-invocation .joan-aji {
  position: absolute; bottom: 18%; left: 50%; width: 20px; height: 40px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #2a2a4a 0%, #1a1a3a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: aji-joan 4s ease-in-out infinite;
}
.scn-angiers-joan-invocation .fiend-1-aji {
  position: absolute; bottom: 30%; left: 30%; width: 30px; height: 50px;
  background: linear-gradient(180deg, #3a1a2a 0%, #1a0a1a 100%);
  border-radius: 60% 40% 30% 70% / 50% 60% 40% 50%;
  filter: blur(2px);
  animation: aji-fiend1 5s ease-in-out infinite alternate;
}
.scn-angiers-joan-invocation .fiend-2-aji {
  position: absolute; bottom: 32%; right: 25%; width: 35px; height: 45px;
  background: linear-gradient(180deg, #2a1a3a 0%, #0a0a1a 100%);
  border-radius: 40% 60% 50% 30% / 50% 40% 60% 50%;
  filter: blur(2px);
  animation: aji-fiend2 5s ease-in-out infinite alternate reverse;
}
.scn-angiers-joan-invocation .candle-1-aji {
  position: absolute; bottom: 15%; left: 38%; width: 4px; height: 12px;
  background: #fffacd;
  border-radius: 2px;
  box-shadow: 0 0 10px 4px #fffacd, 0 0 20px 8px rgba(255,250,205,0.3);
  animation: aji-candle 3s ease-in-out infinite alternate;
}
.scn-angiers-joan-invocation .candle-2-aji {
  position: absolute; bottom: 15%; right: 38%; width: 4px; height: 12px;
  background: #fffacd;
  border-radius: 2px;
  box-shadow: 0 0 10px 4px #fffacd, 0 0 20px 8px rgba(255,250,205,0.3);
  animation: aji-candle 3s ease-in-out infinite alternate-reverse;
}
@keyframes aji-sky { 0% { opacity: 0.5 } 50% { opacity: 0.8 } 100% { opacity: 0.6 } }
@keyframes aji-moon { 0% { transform: translateY(0) scale(0.9); box-shadow: 0 0 20px 8px rgba(128,144,160,0.2); } 50% { transform: translateY(-2px) scale(1); box-shadow: 0 0 40px 15px rgba(128,144,160,0.5); } 100% { transform: translateY(1px) scale(0.95); box-shadow: 0 0 25px 10px rgba(128,144,160,0.3); } }
@keyframes aji-circle { 0% { transform: translateX(-50%) rotate(0deg) scale(1); opacity: 0.7; } 50% { transform: translateX(-50%) rotate(180deg) scale(1.05); opacity: 1; } 100% { transform: translateX(-50%) rotate(360deg) scale(1); opacity: 0.7; } }
@keyframes aji-joan { 0%,100% { transform: translateX(-50%) translateY(0) rotate(-2deg); } 50% { transform: translateX(-50%) translateY(-3px) rotate(2deg); } }
@keyframes aji-fiend1 { 0% { transform: translateX(-5%) scaleY(0.9); opacity: 0.6; } 50% { transform: translateX(5%) scaleY(1.1); opacity: 1; } 100% { transform: translateX(-5%) scaleY(0.9); opacity: 0.6; } }
@keyframes aji-fiend2 { 0% { transform: translateX(5%) scaleY(0.9); opacity: 0.6; } 50% { transform: translateX(-5%) scaleY(1.1); opacity: 1; } 100% { transform: translateX(5%) scaleY(0.9); opacity: 0.6; } }
@keyframes aji-candle { 0% { opacity: 0.4; box-shadow: 0 0 5px 2px #fffacd; } 50% { opacity: 1; box-shadow: 0 0 15px 6px #fffacd, 0 0 30px 12px rgba(255,250,205,0.5); } 100% { opacity: 0.6; box-shadow: 0 0 8px 3px #fffacd; } }

/* Scene angiers-fiends-silence (afs) – dark, moonlit; silent procession */
.scn-angiers-fiends-silence {
  background:
    linear-gradient(180deg, #0a0a2e 0%, #1a1a3e 50%, #2a2a5e 100%),
    radial-gradient(ellipse at 50% 30%, #3a3a6e 0%, transparent 70%);
}
.scn-angiers-fiends-silence .sky-afs {
  position: absolute; inset: 0 0 60% 0;
  background: linear-gradient(180deg, #0a0a2e 0%, #1a1a4e 100%);
  animation: afs-sky 18s ease-in-out infinite alternate;
}
.scn-angiers-fiends-silence .moon-afs {
  position: absolute; top: 8%; left: 50%; width: 60px; height: 60px;
  transform: translateX(-50%);
  background: radial-gradient(circle at 35% 35%, #c0d0e0 0%, #8090a0 70%);
  border-radius: 50%;
  box-shadow: 0 0 30px 10px rgba(128,144,160,0.3);
  animation: afs-moon 10s ease-in-out infinite alternate;
}
.scn-angiers-fiends-silence .ground-afs {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #1a1a2e 0%, #0a0a1a 100%);
  border-radius: 20% 20% 0 0;
}
.scn-angiers-fiends-silence .fiend-a-afs {
  position: absolute; bottom: 20%; left: 20%; width: 40px; height: 60px;
  background: linear-gradient(180deg, #2a1a3a 0%, #0a0a1a 100%);
  border-radius: 40% 60% 30% 50% / 50% 50% 40% 60%;
  transform: skewX(5deg);
  animation: afs-fiend-a 12s linear infinite;
}
.scn-angiers-fiends-silence .fiend-b-afs {
  position: absolute; bottom: 22%; left: 40%; width: 35px; height: 55px;
  background: linear-gradient(180deg, #3a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 40% 50% 30% / 50% 60% 40% 50%;
  transform: skewX(-3deg);
  animation: afs-fiend-b 12s linear infinite reverse;
}
.scn-angiers-fiends-silence .fiend-c-afs {
  position: absolute; bottom: 21%; left: 60%; width: 45px; height: 65px;
  background: linear-gradient(180deg, #2a2a4a 0%, #0a0a1a 100%);
  border-radius: 30% 50% 40% 50% / 40% 50% 60% 50%;
  transform: skewX(2deg);
  animation: afs-fiend-c 12s linear infinite 4s;
}
.scn-angiers-fiends-silence .shadow-afs {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: rgba(0,0,0,0.4);
  filter: blur(8px);
  animation: afs-shadow 6s ease-in-out infinite;
}
.scn-angiers-fiends-silence .aura-afs {
  position: absolute; bottom: 18%; left: 50%; width: 200px; height: 100px;
  transform: translateX(-50%);
  background: radial-gradient(ellipse, rgba(128,160,255,0.05) 0%, transparent 70%);
  filter: blur(10px);
  animation: afs-aura 8s ease-in-out infinite;
}
@keyframes afs-sky { 0% { opacity: 0.6 } 50% { opacity: 0.9 } 100% { opacity: 0.7 } }
@keyframes afs-moon { 0% { transform: translateX(-50%) scale(0.95); box-shadow: 0 0 20px 8px rgba(128,144,160,0.2); } 50% { transform: translateX(-50%) scale(1.05); box-shadow: 0 0 40px 15px rgba(128,144,160,0.5); } 100% { transform: translateX(-50%) scale(0.98); box-shadow: 0 0 25px 10px rgba(128,144,160,0.3); } }
@keyframes afs-fiend-a { 0% { transform: skewX(5deg) translateX(0); } 50% { transform: skewX(5deg) translateX(30px); } 100% { transform: skewX(5deg) translateX(0); } }
@keyframes afs-fiend-b { 0% { transform: skewX(-3deg) translateX(0); } 50% { transform: skewX(-3deg) translateX(-30px); } 100% { transform: skewX(-3deg) translateX(0); } }
@keyframes afs-fiend-c { 0% { transform: skewX(2deg) translateX(0); } 50% { transform: skewX(2deg) translateX(20px); } 100% { transform: skewX(2deg) translateX(0); } }
@keyframes afs-shadow { 0%,100% { opacity: 0.3; } 50% { opacity: 0.6; } }
@keyframes afs-aura { 0% { opacity: 0.1; transform: translateX(-50%) scaleX(0.9); } 50% { opacity: 0.3; transform: translateX(-50%) scaleX(1.1); } 100% { opacity: 0.15; transform: translateX(-50%) scaleX(0.95); } }

.scn-talbot-rages-treason {
  background: linear-gradient(180deg, #2a1a3e 0%, #4a2a5e 30%, #8a5a3a 65%, #c08050 100%),
              radial-gradient(ellipse at 50% 100%, #e0a060 0%, transparent 70%);
}
.scn-talbot-rages-treason .tr-sky {
  position:absolute; inset:0 0 50% 0;
  background: linear-gradient(180deg, #1a1a3e 0%, #3a2a5e 60%, transparent 100%);
  animation: tr-sky 15s ease-in-out infinite alternate;
}
.scn-talbot-rages-treason .tr-sun {
  position:absolute; top:8%; left:70%; width:50px; height:50px;
  background: radial-gradient(circle, #ffd080 0%, #e09040 60%, transparent 100%);
  border-radius:50%;
  animation: tr-sun 20s linear infinite;
}
.scn-talbot-rages-treason .tr-ground {
  position:absolute; bottom:0; left:0; right:0; height:50%;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1a0a 100%);
  border-radius: 20% 30% 0 0 / 10% 15% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,.6);
  animation: tr-ground 8s ease-in-out infinite;
}
.scn-talbot-rages-treason .tr-figure {
  position:absolute; bottom:45%; left:35%; width:24px; height:50px;
  background: linear-gradient(180deg, #2a2a3e 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: tr-figure 4s ease-in-out infinite;
}
.scn-talbot-rages-treason .tr-sword {
  position:absolute; bottom:47%; left:38%; width:6px; height:40px;
  background: linear-gradient(180deg, #888 0%, #ccc 100%);
  border-radius: 2px;
  transform-origin: 50% 100%;
  box-shadow: 0 0 4px #aaa;
  animation: tr-sword 2s ease-in-out infinite;
}
.scn-talbot-rages-treason .tr-dust {
  position:absolute; bottom:48%; left:30%; width:8px; height:8px;
  background: radial-gradient(circle, rgba(200,160,120,.6) 0%, transparent 100%);
  border-radius:50%;
  animation: tr-dust 3s linear infinite;
}
@keyframes tr-sky { 0% { opacity:.7 } 50% { opacity:1 } 100% { opacity:.8 } }
@keyframes tr-sun { 0% { transform: translate(0,0) scale(1) } 25% { transform: translate(5px,-5px) scale(1.1) } 50% { transform: translate(10px,0) scale(1) } 75% { transform: translate(5px,5px) scale(.95) } 100% { transform: translate(0,0) scale(1) } }
@keyframes tr-ground { 0% { transform: translateY(0) } 50% { transform: translateY(-4px) } 100% { transform: translateY(0) } }
@keyframes tr-figure { 0% { transform: translate(0,0) rotate(-3deg) } 25% { transform: translate(2px,-1px) rotate(3deg) } 50% { transform: translate(0,0) rotate(-1deg) } 75% { transform: translate(-2px,-2px) rotate(2deg) } 100% { transform: translate(0,0) rotate(-3deg) } }
@keyframes tr-sword { 0% { transform: rotate(-30deg) } 25% { transform: rotate(10deg) } 50% { transform: rotate(-20deg) } 75% { transform: rotate(5deg) } 100% { transform: rotate(-30deg) } }
@keyframes tr-dust { 0% { opacity:.6; transform: translate(0,0) scale(1) } 50% { opacity:.2; transform: translate(10px,-8px) scale(0.5) } 100% { opacity:0; transform: translate(20px,-16px) scale(0) } }

.scn-pucelle-taunts-from-walls {
  background: linear-gradient(180deg, #6a9aca 0%, #8abaea 40%, #d8e8f0 70%, #f0e0c0 100%),
              radial-gradient(ellipse at 50% 80%, #f0e0c0 0%, transparent 60%);
}
.scn-pucelle-taunts-from-walls .pt-wall {
  position:absolute; bottom:0; left:0; right:0; height:55%;
  background: linear-gradient(180deg, #b09870 0%, #7a6a50 50%, #4a3a2a 100%);
  border-radius: 5% 5% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,.4);
}
.scn-pucelle-taunts-from-walls .pt-chair {
  position:absolute; bottom:10%; left:20%; width:30px; height:35px;
  background: linear-gradient(180deg, #6a4a2a 0%, #3a2a1a 100%);
  border-radius: 4px;
  box-shadow: 0 4px 8px rgba(0,0,0,.5);
  animation: pt-chair 5s ease-in-out infinite;
}
.scn-pucelle-taunts-from-walls .pt-figure-wall {
  position:absolute; bottom:55%; left:45%; width:20px; height:40px;
  background: linear-gradient(180deg, #2a2a3e 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pt-taunt 3s ease-in-out infinite;
}
.scn-pucelle-taunts-from-walls .pt-figure-chair {
  position:absolute; bottom:12%; left:21%; width:18px; height:30px;
  background: linear-gradient(180deg, #3a3a4e 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pt-slump 6s ease-in-out infinite;
}
.scn-pucelle-taunts-from-walls .pt-lance {
  position:absolute; bottom:60%; left:48%; width:4px; height:50px;
  background: linear-gradient(180deg, #aaa 0%, #666 100%);
  border-radius: 2px;
  transform-origin: 50% 100%;
  animation: pt-lance 4s ease-in-out infinite;
}
.scn-pucelle-taunts-from-walls .pt-sunbeam {
  position:absolute; top:0; left:30%; width:40%; height:100%;
  background: linear-gradient(135deg, rgba(255,255,200,.3) 0%, transparent 100%);
  filter: blur(4px);
  animation: pt-beam 8s linear infinite;
}
@keyframes pt-chair { 0% { transform: translateY(0) rotate(0) } 25% { transform: translateY(-2px) rotate(2deg) } 50% { transform: translateY(0) rotate(-2deg) } 75% { transform: translateY(-1px) rotate(1deg) } 100% { transform: translateY(0) rotate(0) } }
@keyframes pt-taunt { 0% { transform: translate(0,0) rotate(-5deg) } 25% { transform: translate(3px,-2px) rotate(5deg) } 50% { transform: translate(0,0) rotate(-3deg) } 75% { transform: translate(-3px,-1px) rotate(3deg) } 100% { transform: translate(0,0) rotate(-5deg) } }
@keyframes pt-slump { 0% { transform: translate(0,0) rotate(0) } 50% { transform: translate(1px,3px) rotate(8deg) } 100% { transform: translate(0,0) rotate(0) } }
@keyframes pt-lance { 0% { transform: rotate(-20deg) } 25% { transform: rotate(15deg) } 50% { transform: rotate(-10deg) } 75% { transform: rotate(5deg) } 100% { transform: rotate(-20deg) } }
@keyframes pt-beam { 0% { left:0; opacity:.3 } 50% { left:50%; opacity:.6 } 100% { left:100%; opacity:.3 } }

.scn-bedford-taunted {
  background: linear-gradient(180deg, #c8daf0 0%, #e8eef8 30%, #f8f8ff 60%, #f0f0f0 100%),
              radial-gradient(ellipse at 50% 100%, #d0d8e0 0%, transparent 70%);
}
.scn-bedford-taunted .bt-sky {
  position:absolute; inset:0 0 30% 0;
  background: linear-gradient(180deg, #e8f0ff 0%, transparent 100%);
  animation: bt-sky 10s ease-in-out infinite alternate;
}
.scn-bedford-taunted .bt-sun {
  position:absolute; top:5%; right:15%; width:60px; height:60px;
  background: radial-gradient(circle, #fff 0%, #ffe0a0 40%, transparent 100%);
  border-radius:50%;
  box-shadow: 0 0 40px 15px rgba(255,224,160,.5);
  animation: bt-sun 4s ease-in-out infinite alternate;
}
.scn-bedford-taunted .bt-chair {
  position:absolute; bottom:20%; left:40%; width:40px; height:45px;
  background: linear-gradient(180deg, #4a3a2a 0%, #1a1a0a 100%);
  border-radius: 4px;
  box-shadow: 0 8px 16px rgba(0,0,0,.6);
  animation: bt-chair 8s ease-in-out infinite;
}
.scn-bedford-taunted .bt-figure {
  position:absolute; bottom:24%; left:42%; width:22px; height:42px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bt-fig 5s ease-in-out infinite;
}
.scn-bedford-taunted .bt-shadows {
  position:absolute; bottom:20%; left:25%; width:30px; height:60px;
  background: radial-gradient(ellipse, rgba(0,0,0,.4) 0%, transparent 100%);
  filter: blur(6px);
  animation: bt-shadows 6s ease-in-out infinite;
}
.scn-bedford-taunted .bt-skull {
  position:absolute; bottom:30%; left:35%; width:12px; height:14px;
  background: radial-gradient(circle, #ddd 0%, #888 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  box-shadow: 0 0 8px 2px rgba(200,200,200,.5);
  animation: bt-skull 3s ease-in-out infinite;
}
@keyframes bt-sky { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.6 } }
@keyframes bt-sun { 0% { opacity:.7; transform: scale(1) } 50% { opacity:1; transform: scale(1.15) } 100% { opacity:.8; transform: scale(.95) } }
@keyframes bt-chair { 0% { transform: translateY(0) rotate(0) } 25% { transform: translateY(-3px) rotate(-2deg) } 50% { transform: translateY(1px) rotate(3deg) } 75% { transform: translateY(-2px) rotate(-1deg) } 100% { transform: translateY(0) rotate(0) } }
@keyframes bt-fig { 0% { transform: translate(0,0) rotate(0) } 25% { transform: translate(2px,-1px) rotate(2deg) } 50% { transform: translate(0,0) rotate(-1deg) } 75% { transform: translate(-2px,1px) rotate(1deg) } 100% { transform: translate(0,0) rotate(0) } }
@keyframes bt-shadows { 0% { opacity:.3; transform: translate(0,0) scale(1) } 50% { opacity:.7; transform: translate(10px,-5px) scale(1.2) } 100% { opacity:.3; transform: translate(0,0) scale(1) } }
@keyframes bt-skull { 0% { transform: translate(0,0) rotate(-5deg) } 50% { transform: translate(2px,-1px) rotate(5deg) } 100% { transform: translate(0,0) rotate(-5deg) } }

.scn-pucelle-rain-threat {
  background: linear-gradient(180deg, #4a7a9a 0%, #6a9aba 30%, #9ac4d0 60%, #d0e8e8 100%),
              radial-gradient(ellipse at 50% 30%, #b0d0e0 0%, transparent 70%);
}
.scn-pucelle-rain-threat .pr-sky {
  position:absolute; inset:0 0 40% 0;
  background: linear-gradient(180deg, #6a9aca 0%, #8abaea 50%, transparent 100%);
  animation: pr-sky 12s ease-in-out infinite alternate;
}
.scn-pucelle-rain-threat .pr-cloud-a {
  position:absolute; top:10%; left:10%; width:100px; height:24px;
  background: linear-gradient(180deg, rgba(255,255,255,.6) 0%, rgba(255,255,255,.1) 100%);
  border-radius:50%;
  filter: blur(6px);
  animation: pr-drift-a 35s linear infinite;
}
.scn-pucelle-rain-threat .pr-cloud-b {
  position:absolute; top:18%; right:5%; width:80px; height:20px;
  background: linear-gradient(180deg, rgba(200,210,220,.5) 0%, rgba(200,210,220,.1) 100%);
  border-radius:50%;
  filter: blur(5px);
  animation: pr-drift-b 45s linear infinite reverse;
}
.scn-pucelle-rain-threat .pr-sun {
  position:absolute; top:5%; left:45%; width:40px; height:40px;
  background: radial-gradient(circle, #ffe080 0%, #d0a050 60%, transparent 100%);
  border-radius:50%;
  box-shadow: 0 0 20px 8px rgba(255,224,128,.5);
  animation: pr-sun 7s ease-in-out infinite alternate;
}
.scn-pucelle-rain-threat .pr-pucelle {
  position:absolute; bottom:30%; left:25%; width:20px; height:40px;
  background: linear-gradient(180deg, #2a2a3e 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pr-pucelle 4s ease-in-out infinite;
}
.scn-pucelle-rain-threat .pr-talbot {
  position:absolute; bottom:30%; right:30%; width:22px; 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: pr-talbot 3s ease-in-out infinite;
}
.scn-pucelle-rain-threat .pr-drop {
  position:absolute; top:0; width:2px; height:12px;
  background: linear-gradient(180deg, rgba(180,210,240,.8) 0%, transparent 100%);
  border-radius:40%;
  animation: pr-rain 1.5s linear infinite;
}
.scn-pucelle-rain-threat .drop1 { left:20%; animation-delay:0s; }
.scn-pucelle-rain-threat .drop2 { left:50%; animation-delay:0.5s; }
.scn-pucelle-rain-threat .drop3 { left:80%; animation-delay:1s; }
@keyframes pr-sky { 0% { opacity:.7 } 50% { opacity:1 } 100% { opacity:.8 } }
@keyframes pr-drift-a { 0% { transform: translateX(-50px) } 100% { transform: translateX(120vw) } }
@keyframes pr-drift-b { 0% { transform: translateX(0) } 100% { transform: translateX(-100vw) } }
@keyframes pr-sun { 0% { opacity:.6; transform: scale(1) } 50% { opacity:1; transform: scale(1.1) } 100% { opacity:.7; transform: scale(.95) } }
@keyframes pr-pucelle { 0% { transform: translate(0,0) rotate(-5deg) } 25% { transform: translate(4px,-2px) rotate(8deg) } 50% { transform: translate(0,0) rotate(-3deg) } 75% { transform: translate(-4px,-1px) rotate(5deg) } 100% { transform: translate(0,0) rotate(-5deg) } }
@keyframes pr-talbot { 0% { transform: translate(0,0) rotate(0) scaleY(1) } 25% { transform: translate(2px,-1px) rotate(2deg) scaleY(1.05) } 50% { transform: translate(0,0) rotate(-1deg) scaleY(1) } 75% { transform: translate(-2px,1px) rotate(-2deg) scaleY(1.05) } 100% { transform: translate(0,0) rotate(0) scaleY(1) } }
@keyframes pr-rain { 0% { transform: translateY(-20px); opacity:0 } 50% { opacity:.8 } 100% { transform: translateY(100vh); opacity:0 } }

.scn-item-white-rose {
  background: 
    linear-gradient(180deg, #e8d5a3 0%, #b8cce0 40%, #d4b87a 100%),
    radial-gradient(ellipse at 60% 20%, #fff8d0 0%, transparent 70%);
}
.scn-item-white-rose .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #cde0f0 0%, transparent 100%);
  animation: wr-sky 20s ease-in-out infinite alternate;
}
.scn-item-white-rose .sun {
  position: absolute; top: 8%; right: 18%; width: 60px; height: 60px;
  background: radial-gradient(circle, #fff4a0 0%, #ffe880 40%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 60px 20px rgba(255,232,128,0.3);
  animation: wr-sun 4s ease-in-out infinite;
}
.scn-item-white-rose .brier {
  position: absolute; bottom: 18%; left: 40%; width: 100px; height: 8px;
  background: linear-gradient(90deg, #4a3a1a 0%, #6a5a2a 50%, #3a2a0a 100%);
  border-radius: 40% / 100%;
  box-shadow: 0 2px 6px rgba(0,0,0,0.5);
  transform: rotate(-15deg);
  animation: wr-brier 6s ease-in-out infinite;
}
.scn-item-white-rose .vine {
  position: absolute; bottom: 22%; left: 35%; width: 6px; height: 60px;
  background: linear-gradient(180deg, #5a4a2a, #3a2a0a);
  border-radius: 50%;
  transform: rotate(10deg);
  animation: wr-vine 8s ease-in-out infinite alternate;
}
.scn-item-white-rose .rose-white {
  position: absolute; bottom: 32%; left: 42%; width: 34px; height: 34px;
  background: radial-gradient(circle at 40% 35%, #fffff0 0%, #f0e8d0 40%, #d4c8a8 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 0 0 20px 10px rgba(255,255,240,0.3), inset 0 -4px 8px rgba(0,0,0,0.1);
  animation: wr-rose 2s ease-in-out infinite;
}
.scn-item-white-rose .thorn {
  position: absolute; bottom: 27%; left: 46%; width: 4px; height: 12px;
  background: linear-gradient(180deg, #6a5a2a, #3a2a0a);
  clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
  transform: rotate(-30deg);
  animation: wr-thorn 1.5s ease-in-out infinite;
}
.scn-item-white-rose .hand-shadow {
  position: absolute; bottom: 22%; left: 28%; width: 40px; height: 50px;
  background: rgba(20,15,10,0.8);
  border-radius: 50% 30% 20% 20% / 60% 40% 50% 50%;
  box-shadow: 0 0 20px 10px rgba(0,0,0,0.3);
  transform: rotate(20deg);
  animation: wr-hand 5s ease-in-out infinite;
}
.scn-item-white-rose .glint {
  position: absolute; bottom: 34%; left: 44%; width: 6px; height: 6px;
  background: white;
  border-radius: 50%;
  box-shadow: 0 0 18px 6px white;
  animation: wr-glint 2s ease-in-out infinite;
}
.scn-item-white-rose .leaf {
  position: absolute; bottom: 24%; left: 50%; width: 20px; height: 10px;
  background: linear-gradient(180deg, #5a7a3a, #3a5a1a);
  border-radius: 50% 50% 0 0;
  transform: rotate(40deg);
  animation: wr-leaf 7s ease-in-out infinite alternate;
}

@keyframes wr-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.85 } }
@keyframes wr-sun { 0% { transform:scale(1) rotate(0deg) } 50% { transform:scale(1.05) rotate(5deg) } 100% { transform:scale(0.95) rotate(-5deg) } }
@keyframes wr-brier { 0% { transform:rotate(-15deg) translateY(0) } 50% { transform:rotate(-12deg) translateY(-2px) } 100% { transform:rotate(-17deg) translateY(0) } }
@keyframes wr-vine { 0% { transform:rotate(10deg) } 50% { transform:rotate(14deg) } 100% { transform:rotate(8deg) } }
@keyframes wr-rose { 0% { transform:translateY(0) rotate(0deg) scale(1) } 50% { transform:translateY(-3px) rotate(3deg) scale(1.02) } 100% { transform:translateY(0) rotate(-2deg) scale(0.98) } }
@keyframes wr-thorn { 0% { transform:rotate(-30deg) scaleY(1) } 50% { transform:rotate(-35deg) scaleY(1.2) } 100% { transform:rotate(-25deg) scaleY(0.9) } }
@keyframes wr-hand { 0% { transform:translateX(0) rotate(20deg) } 50% { transform:translateX(-8px) rotate(18deg) } 100% { transform:translateX(0) rotate(22deg) } }
@keyframes wr-glint { 0% { opacity:0; transform:scale(0) } 50% { opacity:1; transform:scale(1.5) } 100% { opacity:0; transform:scale(0) } }
@keyframes wr-leaf { 0% { transform:rotate(40deg) } 50% { transform:rotate(45deg) } 100% { transform:rotate(35deg) } }

.scn-item-red-rose {
  background: 
    linear-gradient(180deg, #e8d5a3 0%, #b8cce0 40%, #d4b87a 100%),
    radial-gradient(ellipse at 70% 30%, #fff8d0 0%, transparent 70%);
}
.scn-item-red-rose .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #cde0f0 0%, transparent 100%);
  animation: rr-sky 22s ease-in-out infinite alternate;
}
.scn-item-red-rose .sun {
  position: absolute; top: 10%; left: 70%; width: 50px; height: 50px;
  background: radial-gradient(circle, #fff4a0 0%, #ffe880 40%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 50px 15px rgba(255,232,128,0.25);
  animation: rr-sun 5s ease-in-out infinite;
}
.scn-item-red-rose .brier {
  position: absolute; bottom: 15%; left: 50%; width: 120px; height: 10px;
  background: linear-gradient(90deg, #4a3a1a 0%, #6a5a2a 50%, #3a2a0a 100%);
  border-radius: 40% / 100%;
  box-shadow: 0 2px 6px rgba(0,0,0,0.5);
  transform: rotate(10deg);
  animation: rr-brier 7s ease-in-out infinite;
}
.scn-item-red-rose .vine {
  position: absolute; bottom: 20%; left: 45%; width: 5px; height: 70px;
  background: linear-gradient(180deg, #5a4a2a, #3a2a0a);
  border-radius: 50%;
  transform: rotate(-8deg);
  animation: rr-vine 9s ease-in-out infinite alternate;
}
.scn-item-red-rose .rose-red {
  position: absolute; bottom: 30%; left: 52%; width: 38px; height: 38px;
  background: radial-gradient(circle at 40% 35%, #c8553d 0%, #a0461a 40%, #5e1a1d 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 0 0 20px 10px rgba(200,85,61,0.4), inset 0 -4px 8px rgba(0,0,0,0.2);
  animation: rr-rose 2.5s ease-in-out infinite;
}
.scn-item-red-rose .thorn {
  position: absolute; bottom: 24%; left: 56%; width: 5px; height: 14px;
  background: linear-gradient(180deg, #6a5a2a, #3a2a0a);
  clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
  transform: rotate(20deg);
  animation: rr-thorn 1.8s ease-in-out infinite;
}
.scn-item-red-rose .hand-shadow {
  position: absolute; bottom: 18%; left: 35%; width: 45px; height: 55px;
  background: rgba(20,15,10,0.85);
  border-radius: 50% 30% 20% 20% / 60% 40% 50% 50%;
  box-shadow: 0 0 20px 10px rgba(0,0,0,0.3);
  transform: rotate(-15deg);
  animation: rr-hand 4.5s ease-in-out infinite;
}
.scn-item-red-rose .drip {
  position: absolute; bottom: 20%; left: 54%; width: 3px; height: 8px;
  background: #8a3030;
  border-radius: 50%;
  box-shadow: 0 0 4px 1px #8a3030;
  animation: rr-drip 3s ease-in-out infinite;
}
.scn-item-red-rose .leaf {
  position: absolute; bottom: 22%; left: 40%; width: 22px; height: 11px;
  background: linear-gradient(180deg, #5a7a3a, #3a5a1a);
  border-radius: 50% 50% 0 0;
  transform: rotate(-30deg);
  animation: rr-leaf 8s ease-in-out infinite alternate;
}

@keyframes rr-sky { 0% { opacity:0.75 } 50% { opacity:1 } 100% { opacity:0.8 } }
@keyframes rr-sun { 0% { transform:scale(1) rotate(0deg) } 50% { transform:scale(1.08) rotate(-3deg) } 100% { transform:scale(0.92) rotate(3deg) } }
@keyframes rr-brier { 0% { transform:rotate(10deg) translateY(0) } 50% { transform:rotate(13deg) translateY(-2px) } 100% { transform:rotate(8deg) translateY(0) } }
@keyframes rr-vine { 0% { transform:rotate(-8deg) } 50% { transform:rotate(-12deg) } 100% { transform:rotate(-5deg) } }
@keyframes rr-rose { 0% { transform:translateY(0) rotate(0deg) scale(1) } 50% { transform:translateY(-4px) rotate(-3deg) scale(1.03) } 100% { transform:translateY(0) rotate(2deg) scale(0.97) } }
@keyframes rr-thorn { 0% { transform:rotate(20deg) scaleY(1) } 50% { transform:rotate(25deg) scaleY(1.3) } 100% { transform:rotate(15deg) scaleY(0.8) } }
@keyframes rr-hand { 0% { transform:translateX(0) rotate(-15deg) } 50% { transform:translateX(10px) rotate(-13deg) } 100% { transform:translateX(0) rotate(-17deg) } }
@keyframes rr-drip { 0% { transform:translateY(0) scaleX(1) } 50% { transform:translateY(15px) scaleX(0.5) opacity:0.6 } 100% { transform:translateY(0) scaleX(1) opacity:1 } }
@keyframes rr-leaf { 0% { transform:rotate(-30deg) } 50% { transform:rotate(-35deg) } 100% { transform:rotate(-25deg) } }

.scn-warwick-proposes-count {
  background: 
    linear-gradient(180deg, #d9c9a0 0%, #b8a87a 30%, #a09060 100%),
    radial-gradient(ellipse at 50% 100%, #c8b88a 0%, transparent 80%);
}
.scn-warwick-proposes-count .sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #c8dae8 0%, transparent 100%);
  animation: wc-sky 25s ease-in-out infinite alternate;
}
.scn-warwick-proposes-count .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #7a6a4a 0%, #5a4a2a 100%);
  border-radius: 30% 70% 0 0;
}
.scn-warwick-proposes-count .table {
  position: absolute; bottom: 18%; left: 20%; right: 20%; height: 8%;
  background: linear-gradient(180deg, #8a7a5a 0%, #6a5a3a 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: 0 4px 12px rgba(0,0,0,0.3);
  animation: wc-table 12s ease-in-out infinite alternate;
}
.scn-warwick-proposes-count .rose-white {
  position: absolute; bottom: 24%; left: 30%; width: 12px; height: 12px;
  background: radial-gradient(circle at 40% 35%, #fffff0 0%, #f0e8d0 40%, #d4c8a8 100%);
  border-radius: 50%;
  box-shadow: 0 0 8px 3px rgba(255,255,240,0.3);
  animation: wc-rose-white 3s ease-in-out infinite;
}
.scn-warwick-proposes-count .rose-red {
  position: absolute; bottom: 24%; left: 55%; width: 12px; height: 12px;
  background: radial-gradient(circle at 40% 35%, #c8553d 0%, #a0461a 40%, #5e1a1d 100%);
  border-radius: 50%;
  box-shadow: 0 0 8px 3px rgba(200,85,61,0.3);
  animation: wc-rose-red 3.5s ease-in-out infinite;
}
.scn-warwick-proposes-count .hand {
  position: absolute; bottom: 22%; left: 45%; width: 30px; height: 40px;
  background: rgba(80,60,40,0.8);
  border-radius: 50% 30% 20% 20% / 60% 40% 50% 50%;
  transform: rotate(10deg);
  animation: wc-hand 6s ease-in-out infinite;
}
.scn-warwick-proposes-count .shadow {
  position: absolute; bottom: 15%; left: 35%; right: 35%; height: 5%;
  background: rgba(0,0,0,0.2);
  border-radius: 50%;
  filter: blur(4px);
  animation: wc-shadow 12s ease-in-out infinite alternate;
}
.scn-warwick-proposes-count .scroll {
  position: absolute; bottom: 26%; left: 20%; width: 20px; height: 14px;
  background: linear-gradient(180deg, #e8d8b0 0%, #c8b890 100%);
  border-radius: 20% 20% 20% 20% / 40% 40% 40% 40%;
  transform: rotate(-5deg);
  box-shadow: 0 2px 4px rgba(0,0,0,0.2);
  animation: wc-scroll 8s ease-in-out infinite alternate;
}

@keyframes wc-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.85 } }
@keyframes wc-table { 0% { transform:translateY(0) } 50% { transform:translateY(-2px) } 100% { transform:translateY(0) } }
@keyframes wc-rose-white { 0% { transform:translateY(0) rotate(0deg) } 50% { transform:translateY(-2px) rotate(10deg) } 100% { transform:translateY(0) rotate(-5deg) } }
@keyframes wc-rose-red { 0% { transform:translateY(0) rotate(0deg) } 50% { transform:translateY(-3px) rotate(-8deg) } 100% { transform:translateY(0) rotate(5deg) } }
@keyframes wc-hand { 0% { transform:translateX(0) rotate(10deg) } 50% { transform:translateX(-5px) rotate(8deg) } 100% { transform:translateX(0) rotate(12deg) } }
@keyframes wc-shadow { 0% { transform:scaleX(1) } 50% { transform:scaleX(1.2) } 100% { transform:scaleX(0.9) } }
@keyframes wc-scroll { 0% { transform:rotate(-5deg) } 50% { transform:rotate(0deg) } 100% { transform:rotate(-8deg) } }

.scn-lawyer-plucks-white {
  background: 
    linear-gradient(180deg, #e8d5a3 0%, #b8cce0 40%, #d4b87a 100%),
    radial-gradient(ellipse at 50% 30%, #fff8d0 0%, transparent 70%);
}
.scn-lawyer-plucks-white .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #cde0f0 0%, transparent 100%);
  animation: lw-sky 18s ease-in-out infinite alternate;
}
.scn-lawyer-plucks-white .sun {
  position: absolute; top: 12%; left: 20%; width: 55px; height: 55px;
  background: radial-gradient(circle, #fff4a0 0%, #ffe880 40%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 55px 18px rgba(255,232,128,0.3);
  animation: lw-sun 6s ease-in-out infinite;
}
.scn-lawyer-plucks-white .brier {
  position: absolute; bottom: 20%; left: 28%; width: 90px; height: 7px;
  background: linear-gradient(90deg, #4a3a1a 0%, #6a5a2a 50%, #3a2a0a 100%);
  border-radius: 40% / 100%;
  box-shadow: 0 2px 6px rgba(0,0,0,0.5);
  transform: rotate(-20deg);
  animation: lw-brier 8s ease-in-out infinite;
}
.scn-lawyer-plucks-white .rose-white {
  position: absolute; bottom: 30%; left: 22%; width: 30px; height: 30px;
  background: radial-gradient(circle at 40% 35%, #fffff0 0%, #f0e8d0 40%, #d4c8a8 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 0 0 15px 8px rgba(255,255,240,0.3), inset 0 -4px 8px rgba(0,0,0,0.1);
  animation: lw-rose 3s ease-in-out infinite;
}
.scn-lawyer-plucks-white .thorn {
  position: absolute; bottom: 25%; left: 26%; width: 4px; height: 10px;
  background: linear-gradient(180deg, #6a5a2a, #3a2a0a);
  clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
  transform: rotate(15deg);
  animation: lw-thorn 2s ease-in-out infinite;
}
.scn-lawyer-plucks-white .lawyer-silhouette {
  position: absolute; bottom: 18%; left: 10%; width: 60px; height: 100px;
  background: linear-gradient(180deg, #2a2520 0%, #15100a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  box-shadow: 0 0 20px 8px rgba(0,0,0,0.4);
  animation: lw-body 7s ease-in-out infinite;
}
.scn-lawyer-plucks-white .arm {
  position: absolute; bottom: 32%; left: 22%; width: 12px; height: 30px;
  background: #2a2520;
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform: rotate(-30deg);
  transform-origin: bottom left;
  animation: lw-arm 4s ease-in-out infinite;
}
.scn-lawyer-plucks-white .parchment {
  position: absolute; bottom: 22%; left: 8%; width: 30px; height: 20px;
  background: linear-gradient(180deg, #e8d8b0 0%, #c8b890 100%);
  border-radius: 10% 10% 20% 20% / 20% 20% 30% 30%;
  box-shadow: 0 2px 4px rgba(0,0,0,0.3);
  transform: rotate(5deg);
  animation: lw-parchment 9s ease-in-out infinite alternate;
}
.scn-lawyer-plucks-white .glow {
  position: absolute; bottom: 32%; left: 24%; width: 8px; height: 8px;
  background: white;
  border-radius: 50%;
  box-shadow: 0 0 20px 8px rgba(255,255,240,0.3);
  animation: lw-glow 2.5s ease-in-out infinite;
}

@keyframes lw-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.85 } }
@keyframes lw-sun { 0% { transform:scale(1) rotate(0deg) } 50% { transform:scale(1.04) rotate(-2deg) } 100% { transform:scale(0.96) rotate(2deg) } }
@keyframes lw-brier { 0% { transform:rotate(-20deg) translateY(0) } 50% { transform:rotate(-17deg) translateY(-3px) } 100% { transform:rotate(-23deg) translateY(0) } }
@keyframes lw-rose { 0% { transform:translateY(0) rotate(0deg) scale(1) } 50% { transform:translateY(-2px) rotate(2deg) scale(1.01) } 100% { transform:translateY(0) rotate(-1deg) scale(0.99) } }
@keyframes lw-thorn { 0% { transform:rotate(15deg) scaleY(1) } 50% { transform:rotate(20deg) scaleY(1.1) } 100% { transform:rotate(10deg) scaleY(0.9) } }
@keyframes lw-body { 0% { transform:translateY(0) rotate(0deg) } 50% { transform:translateY(-2px) rotate(-1deg) } 100% { transform:translateY(0) rotate(1deg) } }
@keyframes lw-arm { 0% { transform:rotate(-30deg) } 50% { transform:rotate(-25deg) } 100% { transform:rotate(-32deg) } }
@keyframes lw-parchment { 0% { transform:rotate(5deg) } 50% { transform:rotate(0deg) } 100% { transform:rotate(8deg) } }
@keyframes lw-glow { 0% { opacity:0.7; transform:scale(1) } 50% { opacity:1; transform:scale(1.3) } 100% { opacity:0.8; transform:scale(0.9) } }

/* richard-scorns-somerset */
.scn-richard-scorns-somerset{background:linear-gradient(180deg,#4a6ae0,#1a2a6e),radial-gradient(circle at 30% 40%,#ffb84d,transparent 60%);}
.scn-richard-scorns-somerset .sky{position:absolute;inset:0 0 65% 0;background:linear-gradient(0deg,#87ceeb,#f0e68c);animation:rs-sky 10s ease-in-out infinite alternate;}
.scn-richard-scorns-somerset .sun{position:absolute;top:20%;left:30%;width:40px;height:40px;border-radius:50%;background:radial-gradient(circle,#fff,#ffd700);box-shadow:0 0 30px 10px #ffa500,0 0 60px 20px rgba(255,165,0,.5);animation:rs-sun 4s ease-in-out infinite;}
.scn-richard-scorns-somerset .ground{position:absolute;bottom:0;height:35%;left:0;right:0;background:linear-gradient(0deg,#4a3a1a,#6b5b3b);border-radius:50% 50% 0 0 / 30% 30% 0 0;animation:rs-ground 3s infinite alternate;}
.scn-richard-scorns-somerset .fig1{position:absolute;bottom:30%;left:25%;width:20px;height:50px;background:linear-gradient(180deg,#1a1a2a,#0a0a1a);border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;animation:rs-fig1 2s ease-in-out infinite;}
.scn-richard-scorns-somerset .fig2{position:absolute;bottom:30%;right:25%;width:20px;height:50px;background:linear-gradient(180deg,#2a1a1a,#1a0a0a);border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;animation:rs-fig2 2s ease-in-out infinite alternate;}
@keyframes rs-sky{0%{opacity:.8}50%{opacity:1}100%{opacity:.6}}
@keyframes rs-sun{0%{transform:scale(1)}50%{transform:scale(1.1)}100%{transform:scale(.95)}}
@keyframes rs-ground{0%{transform:translateY(0)}50%{transform:translateY(-2px)}100%{transform:translateY(1px)}}
@keyframes rs-fig1{0%{transform:translateX(0) rotate(0)}50%{transform:translateX(4px) rotate(5deg)}100%{transform:translateX(0) rotate(0)}}
@keyframes rs-fig2{0%{transform:translateX(0) rotate(0)}50%{transform:translateX(-4px) rotate(-5deg)}100%{transform:translateX(0) rotate(0)}}

/* sully-somerset */
.scn-sully-somerset{background:linear-gradient(180deg,#5a6a8a,#2a3a5a),radial-gradient(circle at 50% 30%,#e0c080,transparent 70%);}
.scn-sully-somerset .bg{position:absolute;inset:0 0 20% 0;background:linear-gradient(90deg,#3a4a5a 0%,#4a5a7a 30%,#3a4a5a 100%);animation:ss-bg 12s ease-in-out infinite alternate;}
.scn-sully-somerset .col-l{position:absolute;bottom:20%;left:10%;width:6%;height:80%;background:linear-gradient(180deg,#6a7a6a,#2a3a2a);border-radius:5%;animation:ss-col 15s infinite alternate;}
.scn-sully-somerset .col-r{position:absolute;bottom:20%;right:10%;width:6%;height:80%;background:linear-gradient(180deg,#6a7a6a,#2a3a2a);border-radius:5%;animation:ss-col 15s infinite alternate-reverse;}
.scn-sully-somerset .floor{position:absolute;bottom:0;height:20%;left:0;right:0;background:linear-gradient(0deg,#3a2a1a,#5a4a3a);border-radius:20% 20% 0 0;animation:ss-floor 8s infinite alternate;}
.scn-sully-somerset .king{position:absolute;bottom:20%;left:45%;width:24px;height:60px;background:linear-gradient(180deg,#1a1a3a,#0a0a1a);border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;animation:ss-king 3s ease-in-out infinite;}
.scn-sully-somerset .courtier{position:absolute;bottom:20%;left:55%;width:18px;height:50px;background:linear-gradient(180deg,#2a2a1a,#1a1a0a);border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;animation:ss-court 4s ease-in-out infinite alternate;}
@keyframes ss-bg{0%{opacity:.7}50%{opacity:1}100%{opacity:.8}}
@keyframes ss-col{0%{transform:scaleY(1)}50%{transform:scaleY(1.02)}100%{transform:scaleY(1)}}
@keyframes ss-floor{0%{transform:translateY(0)}50%{transform:translateY(-1px)}100%{transform:translateY(0)}}
@keyframes ss-king{0%{transform:translateY(0) rotate(0)}50%{transform:translateY(-2px) rotate(2deg)}100%{transform:translateY(0) rotate(0)}}
@keyframes ss-court{0%{transform:translateX(0) rotate(0)}50%{transform:translateX(3px) rotate(-3deg)}100%{transform:translateX(0) rotate(0)}}

/* plantagenet-heritage */
.scn-plantagenet-heritage{background:linear-gradient(180deg,#4a5a7a,#1a2a4a),radial-gradient(circle at 70% 20%,#f0d080,transparent 50%);}
.scn-plantagenet-heritage .sky{position:absolute;inset:0 0 50% 0;background:linear-gradient(0deg,#b0c4de,#87ceeb);animation:ph-sky 14s ease-in-out infinite alternate;}
.scn-plantagenet-heritage .tower{position:absolute;bottom:20%;left:50%;width:30px;height:80px;transform:translateX(-50%);background:linear-gradient(90deg,#5a4a3a,#3a2a1a);border-radius:10% 10% 5% 5%;box-shadow:0 0 20px rgba(0,0,0,.5);animation:ph-tower 6s ease-in-out infinite;}
.scn-plantagenet-heritage .banner{position:absolute;top:30%;left:50%;width:6px;height:40px;transform:translateX(-50%);background:#a08060;border-radius:2px;animation:ph-banner 5s ease-out infinite alternate;}
.scn-plantagenet-heritage .shield{position:absolute;bottom:35%;left:50%;width:14px;height:18px;transform:translateX(-50%);background:#b08040;border-radius:50% 50% 30% 30% / 60% 60% 30% 30%;box-shadow:0 0 10px 2px #e0b060;animation:ph-shield 7s ease-in-out infinite;}
.scn-plantagenet-heritage .light{position:absolute;top:15%;left:65%;width:30px;height:30px;border-radius:50%;background:radial-gradient(circle,#fff,#ffd700);box-shadow:0 0 40px 15px rgba(255,215,0,.6);animation:ph-light 4s ease-in-out infinite alternate;}
.scn-plantagenet-heritage .cloud{position:absolute;top:10%;left:10%;width:60px;height:14px;background:rgba(255,255,255,.3);border-radius:50%;filter:blur(4px);animation:ph-cloud 40s linear infinite;}
@keyframes ph-sky{0%{opacity:.7}50%{opacity:1}100%{opacity:.8}}
@keyframes ph-tower{0%{transform:translateX(-50%) scaleY(1)}50%{transform:translateX(-50%) scaleY(1.02)}100%{transform:translateX(-50%) scaleY(1)}}
@keyframes ph-banner{0%{transform:translateX(-50%) rotate(-5deg)}50%{transform:translateX(-50%) rotate(5deg)}100%{transform:translateX(-50%) rotate(-5deg)}}
@keyframes ph-shield{0%{transform:translateX(-50%) scale(1)}50%{transform:translateX(-50%) scale(1.05)}100%{transform:translateX(-50%) scale(1)}}
@keyframes ph-light{0%{opacity:.7;transform:scale(1)}50%{opacity:1;transform:scale(1.1)}100%{opacity:.8;transform:scale(1)}}
@keyframes ph-cloud{0%{transform:translateX(-60px)}100%{transform:translateX(120vw)}}

/* richard-defends-father */
.scn-richard-defends-father{background:linear-gradient(180deg,#3a2a1a,#1a0a0a),radial-gradient(circle at 50% 40%,#d0a060,transparent 60%);}
.scn-richard-defends-father .bg{position:absolute;inset:0 0 30% 0;background:linear-gradient(180deg,#4a3a2a,#2a1a0a);animation:rd-bg 15s ease-in-out infinite alternate;}
.scn-richard-defends-father .figure{position:absolute;bottom:25%;left:50%;width:30px;height:70px;transform:translateX(-50%);background:linear-gradient(180deg,#2a1a1a,#0a0a0a);border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;animation:rd-fig 4s ease-in-out infinite;}
.scn-richard-defends-father .scroll{position:absolute;bottom:30%;left:45%;width:40px;height:8px;background:#c8a878;border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.3);animation:rd-scroll 6s ease-in-out infinite alternate;}
.scn-richard-defends-father .glow{position:absolute;top:40%;left:50%;width:20px;height:20px;transform:translateX(-50%);border-radius:50%;background:radial-gradient(circle,#ffd080,transparent);box-shadow:0 0 30px 10px #c08040;animation:rd-glow 3s ease-in-out infinite alternate;}
.scn-richard-defends-father .dust{position:absolute;top:30%;left:30%;width:4px;height:4px;background:rgba(200,180,120,.4);border-radius:50%;box-shadow:10px 20px 0 rgba(200,180,120,.3),20px 10px 0 rgba(200,180,120,.2);animation:rd-dust 20s linear infinite;}
@keyframes rd-bg{0%{opacity:.6}50%{opacity:.9}100%{opacity:.7}}
@keyframes rd-fig{0%{transform:translateX(-50%) translateY(0) rotate(0)}50%{transform:translateX(-50%) translateY(-3px) rotate(2deg)}100%{transform:translateX(-50%) translateY(0) rotate(0)}}
@keyframes rd-scroll{0%{transform:scaleX(1)}50%{transform:scaleX(1.1)}100%{transform:scaleX(1)}}
@keyframes rd-glow{0%{opacity:.7;box-shadow:0 0 20px 5px #c08040}50%{opacity:1;box-shadow:0 0 40px 15px #e0a060}100%{opacity:.8;box-shadow:0 0 25px 8px #c08040}}
@keyframes rd-dust{0%{transform:translate(0,0);opacity:.5}50%{transform:translate(30px,-20px);opacity:.2}100%{transform:translate(60px,-40px);opacity:.5}}

/* talbot-challenges-alencon – tense, sunlit, duel scene */
.scn-talbot-challenges-alencon {
  background:
    linear-gradient(180deg, #b0c8e0 0%, #e0d4a0 40%, #c8a060 100%),
    radial-gradient(ellipse at 50% 0%, #fff2c0 0%, transparent 60%);
}
.scn-talbot-challenges-alencon .sky    { position:absolute; inset:0 0 45% 0; background: linear-gradient(180deg, #c0d8f0 0%, #f0e8c0 100%); animation: tb-sky 8s ease-in-out infinite alternate; }
.scn-talbot-challenges-alencon .ground { position:absolute; bottom:0; left:0; right:0; height:45%; background: linear-gradient(180deg, #c8a060 0%, #a08040 100%); border-radius: 30% 70% 0 0; box-shadow: inset 0 10px 30px rgba(0,0,0,0.3); }
.scn-talbot-challenges-alencon .sun    { position:absolute; top:8%; left:60%; width:70px; height:70px; background: radial-gradient(circle, #fff8e0 0%, #f0d080 50%, transparent 70%); border-radius:50%; box-shadow: 0 0 60px 30px rgba(255,200,100,0.4); animation: tb-sun 6s ease-in-out infinite alternate; }
.scn-talbot-challenges-alencon .sunrays{ position:absolute; top:0; left:0; width:100%; height:100%; background: repeating-linear-gradient(135deg, rgba(255,255,200,0.15) 0px, transparent 20px, rgba(255,255,200,0.05) 40px, transparent 60px); animation: tb-rays 12s linear infinite; }
.scn-talbot-challenges-alencon .talbot { position:absolute; bottom:20%; left:25%; width:40px; height:80px; background: linear-gradient(180deg, #5a3a2a 0%, #2a1a0a 100%); border-radius: 50% 50% 45% 45% / 60% 60% 40% 40%; transform-origin: bottom center; box-shadow: 4px 0 8px rgba(0,0,0,0.4); animation: tb-talbot 4s ease-in-out infinite; }
.scn-talbot-challenges-alencon .alencon{ position:absolute; bottom:20%; left:55%; width:32px; height:72px; background: linear-gradient(180deg, #4a3a30 0%, #2a1a10 100%); border-radius: 50% 50% 45% 45% / 55% 55% 45% 45%; transform-origin: bottom center; box-shadow: -3px 0 6px rgba(0,0,0,0.3); animation: tb-alencon 3s ease-in-out infinite; }
.scn-talbot-challenges-alencon .flag   { position:absolute; bottom:52%; left:45%; width:4px; height:50px; background: #6a4a2a; transform-origin: bottom center; animation: tb-flag 2s ease-in-out infinite; }
.scn-talbot-challenges-alencon .flag::after{ content:''; position:absolute; top:0; left:4px; width:24px; height:14px; background: linear-gradient(90deg, #c8553d, #a0461a); border-radius: 0 50% 50% 0; }
.scn-talbot-challenges-alencon .dust   { position:absolute; bottom:22%; left:40%; width:60px; height:60px; background: radial-gradient(circle, rgba(200,160,80,0.3) 0%, transparent 70%); border-radius:50%; filter: blur(8px); animation: tb-dust 5s ease-out infinite; }
@keyframes tb-sky    { 0% { opacity:0.75 } 50% { opacity:1 } 100% { opacity:0.85 } }
@keyframes tb-sun    { 0% { transform: scale(1); box-shadow:0 0 40px 20px rgba(255,200,100,0.4) } 50% { transform: scale(1.05); box-shadow:0 0 70px 35px rgba(255,200,100,0.6) } 100% { transform: scale(0.95); box-shadow:0 0 50px 25px rgba(255,200,100,0.35) } }
@keyframes tb-rays   { 0% { transform: rotate(0deg) } 100% { transform: rotate(360deg) } }
@keyframes tb-talbot  { 0% { transform: translateY(0) rotate(-2deg) } 25% { transform: translateY(-2px) rotate(4deg) scaleX(1.02) } 50% { transform: translateY(0) rotate(-1deg) } 75% { transform: translateY(-1px) rotate(3deg) } 100% { transform: translateY(0) rotate(-2deg) } }
@keyframes tb-alencon { 0% { transform: translateX(0) scaleX(1) } 25% { transform: translateX(-6px) scaleX(0.95) rotate(2deg) } 50% { transform: translateX(-12px) scaleX(0.9) rotate(5deg) } 75% { transform: translateX(-6px) scaleX(0.95) rotate(2deg) } 100% { transform: translateX(0) scaleX(1) } }
@keyframes tb-flag    { 0% { transform: rotate(-5deg) } 50% { transform: rotate(8deg) } 100% { transform: rotate(-5deg) } }
@keyframes tb-dust    { 0% { transform: translateY(0) scale(0.5); opacity:0.7 } 50% { transform: translateY(-20px) scale(1.2); opacity:0.4 } 100% { transform: translateY(-40px) scale(2); opacity:0 } }

/* french-exit-walls – funny, sunlit, retreat scene */
.scn-french-exit-walls {
  background:
    linear-gradient(180deg, #c8e0f0 0%, #f0e8c0 60%, #d0b080 100%),
    radial-gradient(ellipse at 70% 20%, #fffbe0 0%, transparent 50%);
}
.scn-french-exit-walls .sky        { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #d0e8ff 0%, #f0e8c0 100%); animation: fe-sky 10s ease-in-out infinite alternate; }
.scn-french-exit-walls .wall       { position:absolute; bottom:30%; left:10%; right:10%; height:20%; background: linear-gradient(180deg, #b09880 0%, #907060 100%); border-radius: 8% 8% 0 0; box-shadow: 0 -4px 12px rgba(0,0,0,0.3); animation: fe-wall 3s ease-in-out infinite; }
.scn-french-exit-walls .wall::before{ content:''; position:absolute; top:-8px; left:0; right:0; height:12px; background: repeating-linear-gradient(90deg, #a08870 0px, #a08870 12px, transparent 12px, transparent 20px); }
.scn-french-exit-walls .ground     { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #c8a878 0%, #a08858 100%); }
.scn-french-exit-walls .captain-a  { position:absolute; bottom:25%; left:50%; width:30px; height:70px; background: linear-gradient(180deg, #6a5a4a 0%, #3a2a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: fe-captain-a 2.5s ease-in-out infinite; }
.scn-french-exit-walls .captain-b  { position:absolute; bottom:25%; left:35%; width:28px; height:65px; background: linear-gradient(180deg, #7a6a5a 0%, #4a3a2a 100%); border-radius: 50% 50% 40% 40% / 55% 55% 45% 45%; transform-origin: bottom center; animation: fe-captain-b 2.8s ease-in-out infinite; }
.scn-french-exit-walls .helmet     { position:absolute; bottom:42%; left:45%; width:16px; height:16px; background: radial-gradient(circle, #b0a090 0%, #807060 100%); border-radius:50%; box-shadow: 0 2px 4px rgba(0,0,0,0.3); animation: fe-helmet 1.5s ease-in-out infinite; }
.scn-french-exit-walls .dust-cloud { position:absolute; bottom:22%; left:30%; width:80px; height:40px; background: radial-gradient(ellipse, rgba(200,180,140,0.5) 0%, transparent 70%); filter: blur(6px); animation: fe-dust 4s ease-out infinite; }
@keyframes fe-sky        { 0% { opacity:0.9 } 50% { opacity:1 } 100% { opacity:0.85 } }
@keyframes fe-wall       { 0% { transform: translateY(0) } 25% { transform: translateY(-2px) skewX(-1deg) } 50% { transform: translateY(0) } 75% { transform: translateY(-1px) skewX(1deg) } 100% { transform: translateY(0) } }
@keyframes fe-captain-a  { 0% { transform: translateX(0) rotate(0deg) } 20% { transform: translateX(8px) rotate(-5deg) scaleX(0.95) } 40% { transform: translateX(16px) rotate(-10deg) scaleX(0.9) } 60% { transform: translateX(24px) rotate(-6deg) scaleX(0.95) } 80% { transform: translateX(32px) rotate(-3deg) } 100% { transform: translateX(40px) rotate(0deg) } }
@keyframes fe-captain-b  { 0% { transform: translateX(0) rotate(0deg) } 15% { transform: translateX(-5px) rotate(15deg) scaleX(0.9) } 30% { transform: translateX(-10px) rotate(30deg) scaleX(0.8) } 45% { transform: translateX(-5px) rotate(15deg) scaleX(0.9) } 60% { transform: translateX(0) rotate(0deg) } 80% { transform: translateX(5px) rotate(-10deg) } 100% { transform: translateX(10px) rotate(0deg) } }
@keyframes fe-helmet     { 0% { transform: translateY(0) rotate(0deg) } 30% { transform: translateY(-10px) rotate(40deg) } 60% { transform: translateY(-20px) rotate(80deg) } 100% { transform: translateY(0) rotate(360deg) } }
@keyframes fe-dust       { 0% { transform: translateY(0) scale(0.8); opacity:0.6 } 50% { transform: translateY(-15px) scale(1.5); opacity:0.3 } 100% { transform: translateY(-30px) scale(2.5); opacity:0 } }

/* burgundy-pledges – tense, sunlit, oath scene with dying Bedford */
.scn-burgundy-pledges {
  background:
    linear-gradient(180deg, #a0b8d0 0%, #d0c8a0 50%, #b09870 100%),
    radial-gradient(ellipse at 30% 70%, #f0e8d0 0%, transparent 60%);
}
.scn-burgundy-pledges .sky      { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #b8cce0 0%, #e8dcc0 100%); animation: bp-sky 12s ease-in-out infinite alternate; }
.scn-burgundy-pledges .ground   { position:absolute; bottom:0; left:0; right:0; height:50%; background: linear-gradient(180deg, #b09870 0%, #8a7050 100%); border-radius: 40% 60% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,0.3); }
.scn-burgundy-pledges .tent     { position:absolute; bottom:35%; left:20%; width:120px; height:90px; background: linear-gradient(180deg, #c8b080 0%, #a08860 100%); clip-path: polygon(20% 0%, 80% 0%, 100% 100%, 0% 100%); box-shadow: 0 8px 16px rgba(0,0,0,0.4); animation: bp-tent 7s ease-in-out infinite; }
.scn-burgundy-pledges .burgundy { position:absolute; bottom:22%; left:35%; width:34px; height:76px; background: linear-gradient(180deg, #5a4a3a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 55% 55% 45% 45%; transform-origin: bottom center; animation: bp-burgundy 5s ease-in-out infinite; }
.scn-burgundy-pledges .bedford  { position:absolute; bottom:20%; left:55%; width:36px; height:60px; background: linear-gradient(180deg, #6a5a4a 0%, #3a2a1a 100%); border-radius: 50% 50% 30% 30% / 70% 70% 30% 30%; transform-origin: bottom center; animation: bp-bedford 4s ease-in-out infinite; }
.scn-burgundy-pledges .talbot   { position:absolute; bottom:22%; left:70%; width:30px; height:74px; background: linear-gradient(180deg, #4a3a30 0%, #2a1a10 100%); border-radius: 50% 50% 45% 45% / 60% 60% 40% 40%; transform-origin: bottom center; animation: bp-talbot 6s ease-in-out infinite; }
.scn-burgundy-pledges .candle   { position:absolute; bottom:50%; left:50%; width:6px; height:18px; background: linear-gradient(180deg, #f0e0c0 0%, #c8a060 100%); border-radius: 2px; box-shadow: 0 0 20px 7px rgba(255,200,100,0.5); animation: bp-candle 2s ease-in-out infinite; }
@keyframes bp-sky      { 0% { opacity:0.85 } 50% { opacity:1 } 100% { opacity:0.9 } }
@keyframes bp-tent     { 0% { transform: skewX(0deg) scaleY(1) } 25% { transform: skewX(2deg) scaleY(0.98) } 50% { transform: skewX(0deg) scaleY(1) } 75% { transform: skewX(-2deg) scaleY(0.98) } 100% { transform: skewX(0deg) scaleY(1) } }
@keyframes bp-burgundy { 0% { transform: translateY(0) rotate(0deg) scaleX(1) } 20% { transform: translateY(-2px) rotate(6deg) scaleX(0.95) } 40% { transform: translateY(0) rotate(0deg) scaleX(1) } 60% { transform: translateY(-1px) rotate(4deg) scaleX(0.97) } 80% { transform: translateY(-2px) rotate(5deg) scaleX(0.95) } 100% { transform: translateY(0) rotate(0deg) scaleX(1) } }
@keyframes bp-bedford  { 0% { transform: translateY(0) rotate(0deg) } 30% { transform: translateY(-1px) rotate(3deg) } 60% { transform: translateY(0) rotate(0deg) } 100% { transform: translateY(-1px) rotate(-2deg) } }
@keyframes bp-talbot   { 0% { transform: translateY(0) rotate(0deg) } 25% { transform: translateY(-1px) rotate(1deg) scaleX(1.01) } 50% { transform: translateY(0) rotate(0deg) } 75% { transform: translateY(-1px) rotate(-1deg) scaleX(1.01) } 100% { transform: translateY(0) rotate(0deg) } }
@keyframes bp-candle   { 0% { transform: scaleY(1); box-shadow:0 0 15px 5px rgba(255,200,100,0.4) } 25% { transform: scaleY(0.9); box-shadow:0 0 25px 8px rgba(255,200,100,0.6) } 50% { transform: scaleY(1.05); box-shadow:0 0 20px 6px rgba(255,200,100,0.5) } 75% { transform: scaleY(0.95); box-shadow:0 0 18px 5px rgba(255,200,100,0.45) } 100% { transform: scaleY(1); box-shadow:0 0 15px 5px rgba(255,200,100,0.4) } }

/* bedford-remembers-pendragon – tense, sunlit, sick Bedford with ghost */
.scn-bedford-remembers-pendragon {
  background:
    linear-gradient(180deg, #90b0d0 0%, #c8c0a0 50%, #a89070 100%),
    radial-gradient(ellipse at 50% 30%, #f0e8c0 0%, transparent 60%);
}
.scn-bedford-remembers-pendragon .sky     { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #a8c8e0 0%, #e0d8b8 100%); animation: brp-sky 14s ease-in-out infinite alternate; }
.scn-bedford-remembers-pendragon .ground  { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, #a89070 0%, #7a6040 100%); border-radius: 50% 50% 0 0; box-shadow: inset 0 6px 18px rgba(0,0,0,0.3); }
.scn-bedford-remembers-pendragon .litter  { position:absolute; bottom:18%; left:35%; width:80px; height:50px; background: linear-gradient(180deg, #8a7050 0%, #5a4020 100%); border-radius: 4px; box-shadow: 0 4px 8px rgba(0,0,0,0.4); animation: brp-litter 6s ease-in-out infinite; }
.scn-bedford-remembers-pendragon .bedford { position:absolute; bottom:22%; left:40%; width:28px; height:52px; background: linear-gradient(180deg, #6a5a4a 0%, #3a2a1a 100%); border-radius: 50% 50% 35% 35% / 70% 70% 30% 30%; transform-origin: bottom center; animation: brp-bedford 4.5s ease-in-out infinite; }
.scn-bedford-remembers-pendragon .soldier-l { position:absolute; bottom:20%; left:20%; width:28px; height:68px; background: linear-gradient(180deg, #5a4a3a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 55% 55% 45% 45%; transform-origin: bottom center; animation: brp-soldier-l 5s ease-in-out infinite; }
.scn-bedford-remembers-pendragon .soldier-r { position:absolute; bottom:20%; right:20%; width:28px; height:68px; background: linear-gradient(180deg, #5a4a3a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 55% 55% 45% 45%; transform-origin: bottom center; animation: brp-soldier-r 5s ease-in-out infinite 1s; }
.scn-bedford-remembers-pendragon .pendragon-ghost { position:absolute; bottom:30%; left:55%; width:40px; height:90px; background: radial-gradient(ellipse at 50% 60%, rgba(255,220,180,0.4) 0%, rgba(255,220,180,0.1) 60%, transparent 80%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; filter: blur(4px); animation: brp-pendragon 8s ease-in-out infinite; }
.scn-bedford-remembers-pendragon .sunrays { position:absolute; top:0; left:0; width:100%; height:100%; background: repeating-linear-gradient(110deg, rgba(255,240,200,0.1) 0px, transparent 30px, rgba(255,240,200,0.05) 60px, transparent 90px); animation: brp-rays 20s linear infinite; }
@keyframes brp-sky      { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.85 } }
@keyframes brp-litter   { 0% { transform: translateY(0) rotate(0deg) } 25% { transform: translateY(-2px) rotate(1deg) } 50% { transform: translateY(0) rotate(0deg) } 75% { transform: translateY(-1px) rotate(-1deg) } 100% { transform: translateY(0) rotate(0deg) } }
@keyframes brp-bedford  { 0% { transform: translateY(0) rotate(0deg) } 30% { transform: translateY(-2px) rotate(4deg) scaleX(0.97) } 60% { transform: translateY(0) rotate(0deg) } 80% { transform: translateY(-1px) rotate(2deg) scaleX(0.98) } 100% { transform: translateY(0) rotate(0deg) } }
@keyframes brp-soldier-l { 0% { transform: translateY(0) rotate(0deg) } 20% { transform: translateY(-1px) rotate(1deg) } 40% { transform: translateY(0) rotate(0deg) } 60% { transform: translateY(-1px) rotate(-1deg) } 80% { transform: translateY(0) rotate(0deg) } 100% { transform: translateY(-1px) rotate(2deg) } }
@keyframes brp-soldier-r { 0% { transform: translateY(0) rotate(0deg) } 20% { transform: translateY(-1px) rotate(-1deg) } 40% { transform: translateY(0) rotate(0deg) } 60% { transform: translateY(-1px) rotate(2deg) } 80% { transform: translateY(0) rotate(0deg) } 100% { transform: translateY(-1px) rotate(-2deg) } }
@keyframes brp-pendragon { 0% { opacity:0; transform: scale(0.8) } 25% { opacity:0.6; transform: scale(1) } 50% { opacity:0.8; transform: scale(1.05) } 75% { opacity:0.4; transform: scale(0.95) } 100% { opacity:0; transform: scale(0.8) } }
@keyframes brp-rays   { 0% { transform: rotate(0deg) } 100% { transform: rotate(360deg) } }

.scn-london-lady-virtues { background: linear-gradient(180deg,#f5e6c8,#d4b896,#b89a7a),radial-gradient(ellipse 50% 30%,#f0d8b0,transparent 60%); }
.scn-london-lady-virtues .room-bg{position:absolute;inset:0;background:linear-gradient(180deg,#c4a882,#9a7a5a);}
.scn-london-lady-virtues .window{position:absolute;top:15%;left:20%;width:40%;height:35%;background:linear-gradient(180deg,#e0f0ff,#b0d0f0);border-radius:4%;box-shadow:inset 0 0 30px rgba(255,255,200,.3);}
.scn-london-lady-virtues .curtain{position:absolute;top:10%;right:10%;width:15%;height:80%;background:linear-gradient(180deg,#c8553d,#7a3326);border-radius:0 20% 20% 0;animation:lv-curtain-sway 4s ease-in-out infinite;}
.scn-london-lady-virtues .table{position:absolute;bottom:25%;left:10%;width:60%;height:8%;background:linear-gradient(180deg,#8b6b46,#5a3d2b);border-radius:4%;}
.scn-london-lady-virtues .jewel{position:absolute;bottom:40%;left:35%;width:6%;height:10%;background:radial-gradient(circle,#ffd700,#b8860b);border-radius:50%;box-shadow:0 0 30px 10px rgba(255,215,0,.5);animation:lv-jewel-glow 3s ease-in-out infinite alternate;}
.scn-london-lady-virtues .lady{position:absolute;bottom:20%;left:25%;width:12%;height:30%;background:linear-gradient(180deg,#4a3a2a,#2a1e14);border-radius:50% 50% 40% 40%/60% 60% 40% 40%;transform-origin:bottom center;animation:lv-lady-breathe 5s ease-in-out infinite;}
.scn-london-lady-virtues .candle{position:absolute;bottom:30%;left:60%;width:2%;height:12%;background:linear-gradient(180deg,#f5deb3,#d2b48c);border-radius:10%;}
.scn-london-lady-virtues .glow{position:absolute;inset:0;background:radial-gradient(ellipse at 60% 35%,rgba(255,200,150,.15),transparent 50%);pointer-events:none;animation:lv-glow-pulse 6s ease-in-out infinite;}
@keyframes lv-curtain-sway{0%{transform:translateX(0)}50%{transform:translateX(-5px)}100%{transform:translateX(0)}}
@keyframes lv-jewel-glow{0%{box-shadow:0 0 20px 5px rgba(255,215,0,.4);opacity:.8}50%{box-shadow:0 0 40px 15px rgba(255,215,0,.7);opacity:1}100%{box-shadow:0 0 20px 5px rgba(255,215,0,.4);opacity:.8}}
@keyframes lv-lady-breathe{0%{transform:translateY(0)}50%{transform:translateY(-2px)}100%{transform:translateY(0)}}
@keyframes lv-glow-pulse{0%{opacity:.5}50%{opacity:1}100%{opacity:.5}}

.scn-london-cardinal-plot { background: linear-gradient(180deg,#1a1412,#2b1e1a,#1a1412),radial-gradient(ellipse 50% 60%,#4a2f2a,transparent 70%); }
.scn-london-cardinal-plot .dark-bg{position:absolute;inset:0;background:linear-gradient(180deg,#1f1a18,#0f0c0b);}
.scn-london-cardinal-plot .desk{position:absolute;bottom:20%;left:10%;width:80%;height:6%;background:linear-gradient(180deg,#5a3d2b,#3a2517);border-radius:2%;}
.scn-london-cardinal-plot .candle{position:absolute;bottom:25%;left:30%;width:2%;height:15%;background:linear-gradient(180deg,#f5deb3,#d2b48c);border-radius:10%;animation:cp-candle-flicker 0.5s infinite alternate;}
.scn-london-cardinal-plot .candle-glow{position:absolute;bottom:30%;left:29%;width:4%;height:4%;background:radial-gradient(circle,rgba(255,200,100,.8),transparent 70%);border-radius:50%;animation:cp-candle-glow 1s ease-in-out infinite;}
.scn-london-cardinal-plot .money-bag{position:absolute;bottom:20%;left:40%;width:8%;height:10%;background:linear-gradient(180deg,#8b7355,#5a4a35);border-radius:30% 30% 40% 40%;animation:cp-bag-bob 3s ease-in-out infinite;}
.scn-london-cardinal-plot .cardinal{position:absolute;bottom:15%;left:50%;width:10%;height:40%;background:linear-gradient(180deg,#4a1a1a,#2a0e0e);border-radius:40% 40% 30% 30%/50% 50% 40% 40%;transform:rotate(5deg);animation:cp-figure-shift 4s ease-in-out infinite;}
.scn-london-cardinal-plot .legate{position:absolute;bottom:15%;left:65%;width:10%;height:38%;background:linear-gradient(180deg,#2a2a3a,#1a1a24);border-radius:40% 40% 30% 30%/50% 50% 40% 40%;transform:rotate(-5deg);animation:cp-figure-shift 4s ease-in-out infinite 2s;}
@keyframes cp-candle-flicker{0%{height:15%;opacity:1}50%{height:12%;opacity:.8}100%{height:15%;opacity:1}}
@keyframes cp-candle-glow{0%{transform:scale(1);opacity:.6}50%{transform:scale(1.2);opacity:1}100%{transform:scale(1);opacity:.6}}
@keyframes cp-bag-bob{0%{transform:translateY(0)}50%{transform:translateY(-3px)}100%{transform:translateY(0)}}
@keyframes cp-figure-shift{0%{transform:translateY(0) rotate(5deg)}50%{transform:translateY(-5px) rotate(3deg)}100%{transform:translateY(0) rotate(5deg)}}

.scn-london-cardinal-threat { background: linear-gradient(180deg,#12151a,#1e222b,#12151a),radial-gradient(ellipse 50% 50%,#2a2f3a,transparent 70%); }
.scn-london-cardinal-threat .dark-bg{position:absolute;inset:0;background:linear-gradient(180deg,#16191f,#0d0f14);}
.scn-london-cardinal-threat .table{position:absolute;bottom:20%;left:15%;width:70%;height:5%;background:linear-gradient(180deg,#4a3a2a,#2a1e14);border-radius:2%;}
.scn-london-cardinal-threat .candle{position:absolute;bottom:24%;left:45%;width:2%;height:12%;background:linear-gradient(180deg,#f5deb3,#d2b48c);border-radius:10%;animation:ct-candle-flicker 0.4s infinite alternate;}
.scn-london-cardinal-threat .candle-glow{position:absolute;bottom:28%;left:44%;width:4%;height:4%;background:radial-gradient(circle,rgba(255,200,100,.7),transparent 70%);border-radius:50%;animation:ct-candle-glow 0.8s ease-in-out infinite;}
.scn-london-cardinal-threat .document{position:absolute;bottom:24%;left:25%;width:10%;height:8%;background:linear-gradient(180deg,#f5deb3,#e0c9a6);border-radius:2%;transform:rotate(-10deg);animation:ct-document-flutter 5s ease-in-out infinite;}
.scn-london-cardinal-threat .cardinal{position:absolute;bottom:15%;left:30%;width:12%;height:40%;background:linear-gradient(180deg,#4a1a1a,#2a0e0e);border-radius:40% 40% 30% 30%/50% 50% 40% 40%;transform:rotate(10deg);animation:ct-figure-threat 3s ease-in-out infinite;}
.scn-london-cardinal-threat .gloucester{position:absolute;bottom:15%;left:55%;width:12%;height:40%;background:linear-gradient(180deg,#2a2a3a,#1a1a24);border-radius:40% 40% 30% 30%/50% 50% 40% 40%;transform:rotate(-15deg);animation:ct-figure-threat 3s ease-in-out infinite 1.5s;}
@keyframes ct-candle-flicker{0%{height:12%;opacity:1}50%{height:9%;opacity:.8}100%{height:12%;opacity:1}}
@keyframes ct-candle-glow{0%{transform:scale(1);opacity:.5}50%{transform:scale(1.3);opacity:1}100%{transform:scale(1);opacity:.5}}
@keyframes ct-document-flutter{0%{transform:rotate(-10deg) translateY(0)}50%{transform:rotate(-5deg) translateY(-2px)}100%{transform:rotate(-10deg) translateY(0)}}
@keyframes ct-figure-threat{0%{transform:translateY(0) rotate(10deg)}50%{transform:translateY(-4px) rotate(15deg)}100%{transform:translateY(0) rotate(10deg)}}

.scn-anjou-paris-revolt { background: linear-gradient(180deg,#87ceeb,#b0e0e6,#f0e68c,#deb887),radial-gradient(ellipse 20% 20%,#fff8dc,transparent 60%); }
.scn-anjou-paris-revolt .sky{position:absolute;inset:0 0 40% 0;background:linear-gradient(180deg,transparent,rgba(255,255,255,.1));animation:pr-sky-drift 20s linear infinite;}
.scn-anjou-paris-revolt .sun{position:absolute;top:10%;left:10%;width:8%;height:8%;background:radial-gradient(circle,#ffd700,#ffa500);border-radius:50%;box-shadow:0 0 80px 20px rgba(255,200,100,.5);animation:pr-sun-pulse 6s ease-in-out infinite;}
.scn-anjou-paris-revolt .hills{position:absolute;bottom:35%;left:0;right:0;height:25%;background:linear-gradient(180deg,#5a7a5a,#3a5a3a);border-radius:40% 60% 0 0;animation:pr-hills-move 15s ease-in-out infinite;}
.scn-anjou-paris-revolt .road{position:absolute;bottom:20%;left:40%;width:20%;height:10%;background:linear-gradient(180deg,#c4a882,#8b7355);border-radius:50%/50% 50% 0 0;animation:pr-road-glow 8s ease-in-out infinite alternate;}
.scn-anjou-paris-revolt .figure-charles{position:absolute;bottom:15%;left:45%;width:8%;height:25%;background:linear-gradient(180deg,#1a1a2a,#0a0a1a);border-radius:40% 40% 30% 30%/50% 50% 40% 40%;transform-origin:bottom center;animation:pr-charles-march 4s ease-in-out infinite;}
.scn-anjou-paris-revolt .soldiers{position:absolute;bottom:15%;left:20%;width:6%;height:20%;background:linear-gradient(180deg,#2a2a3a,#1a1a24);border-radius:40% 40% 30% 30%;animation:pr-soldiers-march 4s ease-in-out infinite 0.5s;}
.scn-anjou-paris-revolt .banner{position:absolute;bottom:30%;left:50%;width:2%;height:20%;background:#5a3a2a;animation:pr-banner-wave 3s ease-in-out infinite;}
@keyframes pr-sky-drift{0%{opacity:.3}50%{opacity:.6}100%{opacity:.3}}
@keyframes pr-sun-pulse{0%{transform:scale(1);opacity:.8}50%{transform:scale(1.1);opacity:1}100%{transform:scale(1);opacity:.8}}
@keyframes pr-hills-move{0%{transform:translateY(0)}50%{transform:translateY(-3px)}100%{transform:translateY(0)}}
@keyframes pr-road-glow{0%{opacity:.9}100%{opacity:1}}
@keyframes pr-charles-march{0%{transform:translateX(0) translateY(0)}25%{transform:translateX(5px) translateY(-1px)}50%{transform:translateX(10px) translateY(0)}75%{transform:translateX(5px) translateY(-1px)}100%{transform:translateX(0) translateY(0)}}
@keyframes pr-soldiers-march{0%{transform:translateX(0)}50%{transform:translateX(8px)}100%{transform:translateX(0)}}
@keyframes pr-banner-wave{0%{transform:rotate(-5deg)}50%{transform:rotate(5deg)}100%{transform:rotate(-5deg)}}

/* Scene: soldiers-knock (tense, dawn) */
.scn-soldiers-knock { background: linear-gradient(180deg, #1a2a3a 0%, #4a3a2a 50%, #8a6a3a 100%), radial-gradient(ellipse at 30% 100%, #c08040 0%, transparent 60%); }
.scn-soldiers-knock .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #2a4a6a 0%, transparent 100%); animation: sk-sky 12s ease-in-out infinite alternate; }
.scn-soldiers-knock .sun-glow { position:absolute; bottom:35%; left:20%; width:80px; height:80px; background: radial-gradient(circle, #ffd060 0%, #c08040 40%, transparent 70%); border-radius:50%; animation: sk-sun 4s ease-in-out infinite alternate; }
.scn-soldiers-knock .city-wall { position:absolute; bottom:15%; left:0; right:0; height:50%; background: linear-gradient(90deg, #2a2a3a 0%, #4a3a2a 30%, #2a2a3a 100%); box-shadow: inset 0 8px 20px rgba(0,0,0,.6); border-radius: 10% 10% 0 0 / 20% 20% 0 0; }
.scn-soldiers-knock .gate { position:absolute; bottom:15%; left:50%; width:100px; height:90px; transform:translateX(-50%); background: linear-gradient(90deg, #1a1a2a 0%, #3a2a1a 50%, #1a1a2a 100%); border-radius: 40% 40% 10% 10% / 60% 60% 10% 10%; box-shadow: inset 0 0 30px #0a0a1a; animation: sk-gate 0.5s ease-in-out infinite; }
.scn-soldiers-knock .soldier-1 { position:absolute; bottom:30%; left:38%; width:20px; height:40px; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: sk-soldier 2s ease-in-out infinite; }
.scn-soldiers-knock .soldier-2 { position:absolute; bottom:30%; left:55%; width:22px; height:42px; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: sk-soldier 2.3s ease-in-out infinite 0.5s; }
.scn-soldiers-knock .cart { position:absolute; bottom:22%; left:50%; width:40px; height:25px; transform:translateX(-50%); background: linear-gradient(180deg, #4a3a2a 0%, #2a1a1a 100%); border-radius: 10% 10% 30% 30%; box-shadow: 0 4px 8px rgba(0,0,0,.5); animation: sk-cart 3s ease-in-out infinite; }
.scn-soldiers-knock .dust { position:absolute; bottom:20%; left:20%; width:60px; height:20px; background: radial-gradient(ellipse, rgba(200,180,160,.3) 0%, transparent 100%); border-radius:50%; filter: blur(3px); animation: sk-dust 8s linear infinite; }
@keyframes sk-sky { 0% { opacity:.7 } 50% { opacity:1 } 100% { opacity:.6 } }
@keyframes sk-sun { 0% { transform: scale(.9) translateY(0); opacity:.8 } 50% { transform: scale(1.1) translateY(-5px); opacity:1 } 100% { transform: scale(.95) translateY(2px); opacity:.7 } }
@keyframes sk-gate { 0% { transform: translateX(-50%) rotate(0deg) } 25% { transform: translateX(-50%) rotate(1deg) } 50% { transform: translateX(-50%) rotate(-1deg) } 75% { transform: translateX(-50%) rotate(1deg) } 100% { transform: translateX(-50%) rotate(0deg) } }
@keyframes sk-soldier { 0% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(-3px) rotate(2deg) } 100% { transform: translateY(0) rotate(0deg) } }
@keyframes sk-cart { 0% { transform: translateX(-50%) translateY(0) } 50% { transform: translateX(-50%) translateY(-2px) } 100% { transform: translateX(-50%) translateY(0) } }
@keyframes sk-dust { 0% { transform: translateX(0) scale(1); opacity:.4 } 50% { transform: translateX(30px) scale(1.5); opacity:.1 } 100% { transform: translateX(60px) scale(1); opacity:.4 } }

/* Scene: charles-waits-for-signal (tense, dawn) */
.scn-charles-waits-for-signal { background: linear-gradient(180deg, #2a2a3a 0%, #3a2a2a 50%, #2a1a1a 100%), radial-gradient(ellipse at 50% 0%, #4a4a6a 0%, transparent 60%); }
.scn-charles-waits-for-signal .tent-bg { position:absolute; inset:0; background: linear-gradient(135deg, #4a3a2a 0%, #2a1a1a 100%); transform: perspective(800px) rotateX(5deg); transform-origin: bottom center; }
.scn-charles-waits-for-signal .table { position:absolute; bottom:15%; left:50%; width:120px; height:30px; transform:translateX(-50%); background: linear-gradient(180deg, #5a3a2a 0%, #2a1a1a 100%); border-radius: 20% 20% 5% 5%; box-shadow: 0 8px 16px rgba(0,0,0,.6); animation: cw-table 6s ease-in-out infinite; }
.scn-charles-waits-for-signal .map { position:absolute; bottom:20%; left:50%; width:80px; height:20px; transform:translateX(-50%); background: linear-gradient(180deg, #8a7a5a 0%, #6a5a3a 100%); border-radius: 5px; box-shadow: inset 0 0 10px rgba(0,0,0,.4); animation: cw-map 8s ease-in-out infinite; }
.scn-charles-waits-for-signal .charles { position:absolute; bottom:25%; left:35%; width:24px; height:45px; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: cw-fig 3s ease-in-out infinite; }
.scn-charles-waits-for-signal .bastard { position:absolute; bottom:25%; left:45%; width:22px; height:40px; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: cw-fig 3.5s ease-in-out infinite 0.5s; }
.scn-charles-waits-for-signal .alencon { position:absolute; bottom:25%; left:55%; width:20px; height:38px; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: cw-fig 4s ease-in-out infinite 1s; }
.scn-charles-waits-for-signal .candle { position:absolute; bottom:18%; left:48%; width:8px; height:18px; background: linear-gradient(180deg, #8a7a5a 0%, #5a4a3a 100%); border-radius: 2px; transform: rotate(5deg); }
.scn-charles-waits-for-signal .candle::after { content:''; position:absolute; top:-8px; left:50%; width:6px; height:8px; transform:translateX(-50%); background: radial-gradient(circle, #ffd060 0%, #c08040 100%); border-radius:50% 50% 20% 20%; box-shadow: 0 0 20px 5px #ffd060; animation: cw-candle 2s ease-in-out infinite alternate; }
.scn-charles-waits-for-signal .dawn-light { position:absolute; top:0; left:20%; width:30%; height:100%; background: linear-gradient(180deg, rgba(200,180,255,.15) 0%, transparent 100%); filter: blur(10px); animation: cw-dawn 12s ease-in-out infinite alternate; }
@keyframes cw-table { 0% { transform: translateX(-50%) translateY(0) } 50% { transform: translateX(-50%) translateY(-2px) } 100% { transform: translateX(-50%) translateY(0) } }
@keyframes cw-map { 0% { transform: translateX(-50%) scale(1) } 50% { transform: translateX(-50%) scale(1.02) } 100% { transform: translateX(-50%) scale(1) } }
@keyframes cw-fig { 0% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(-4px) rotate(2deg) } 100% { transform: translateY(0) rotate(0deg) } }
@keyframes cw-candle { 0% { transform: translateX(-50%) scale(1); opacity:.8 } 50% { transform: translateX(-50%) scale(1.1); opacity:1 } 100% { transform: translateX(-50%) scale(.9); opacity:.7 } }
@keyframes cw-dawn { 0% { opacity:.1 } 50% { opacity:.4 } 100% { opacity:.15 } }

/* Scene: item-torch-signal (tense, dark) */
.scn-item-torch-signal { background: linear-gradient(180deg, #0a0a1a 0%, #1a1a2a 50%, #0a0a1a 100%), radial-gradient(ellipse at 50% 0%, #2a1a1a 0%, transparent 70%); }
.scn-item-torch-signal .tower-shaft { position:absolute; inset:0; background: radial-gradient(ellipse at 50% 100%, #1a1a2a 0%, #0a0a1a 70%); transform: perspective(400px) rotateX(15deg); transform-origin: bottom center; }
.scn-item-torch-signal .arch-top { position:absolute; top:0; left:50%; width:100%; height:20%; transform:translateX(-50%); background: radial-gradient(ellipse at 50% 100%, transparent 0%, #0a0a1a 70%); border-radius: 0 0 50% 50%; }
.scn-item-torch-signal .pucelle { position:absolute; top:5%; left:50%; width:20px; height:35px; transform:translateX(-50%); background: linear-gradient(180deg, #0a0a1a 0%, #1a1a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: it-pucelle 4s ease-in-out infinite; }
.scn-item-torch-signal .torch { position:absolute; top:0%; left:50%; width:12px; height:18px; transform:translateX(-50%); background: radial-gradient(circle at 50% 0%, #ffd060 0%, #c8553d 50%, #5e1a1d 100%); border-radius: 50% 50% 20% 20% / 60% 60% 20% 20%; box-shadow: 0 0 40px 10px #c8553d; animation: it-torch 1.5s ease-in-out infinite alternate; }
.scn-item-torch-signal .torch-glow { position:absolute; top:-20%; left:50%; width:80px; height:80px; transform:translateX(-50%); background: radial-gradient(circle, rgba(200,85,61,.4) 0%, transparent 70%); border-radius:50%; animation: it-glow 3s ease-in-out infinite alternate; }
.scn-item-torch-signal .spark-1 { position:absolute; top:10%; left:48%; width:4px; height:4px; background: #ffd060; border-radius:50%; filter: blur(1px); animation: it-spark 2s linear infinite; }
.scn-item-torch-signal .spark-2 { position:absolute; top:15%; left:52%; width:3px; height:3px; background: #ffd060; border-radius:50%; filter: blur(1px); animation: it-spark 2.5s linear infinite 0.5s; }
.scn-item-torch-signal .smoke { position:absolute; top:0%; left:50%; width:30px; height:20px; transform:translateX(-50%); background: radial-gradient(ellipse, rgba(100,80,60,.3) 0%, transparent 100%); filter: blur(5px); animation: it-smoke 6s ease-out infinite; }
@keyframes it-pucelle { 0% { transform: translateX(-50%) translateY(0) } 50% { transform: translateX(-50%) translateY(-2px) } 100% { transform: translateX(-50%) translateY(0) } }
@keyframes it-torch { 0% { transform: translateX(-50%) scale(1) rotate(-5deg); opacity:.9 } 50% { transform: translateX(-50%) scale(1.2) rotate(5deg); opacity:1 } 100% { transform: translateX(-50%) scale(.95) rotate(0deg); opacity:.8 } }
@keyframes it-glow { 0% { transform: translateX(-50%) scale(.9); opacity:.5 } 50% { transform: translateX(-50%) scale(1.2); opacity:.8 } 100% { transform: translateX(-50%) scale(1); opacity:.6 } }
@keyframes it-spark { 0% { transform: translateY(0) translateX(0) scale(1); opacity:1 } 50% { transform: translateY(20px) translateX(5px) scale(.5); opacity:.4 } 100% { transform: translateY(40px) translateX(-5px) scale(0); opacity:0 } }
@keyframes it-smoke { 0% { transform: translateX(-50%) translateY(0) scale(1); opacity:.4 } 50% { transform: translateX(-50%) translateY(-15px) scale(1.5); opacity:.2 } 100% { transform: translateX(-50%) translateY(-30px) scale(2); opacity:0 } }

/* Scene: charles-sees-beacon (tense, dark) */
.scn-charles-sees-beacon { background: linear-gradient(180deg, #0a0a1a 0%, #1a1a2a 40%, #2a1a1a 100%), radial-gradient(ellipse at 70% 20%, #2a1a1a 0%, transparent 50%); }
.scn-charles-sees-beacon .night-sky { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #0a0a1a 0%, #1a1a3a 50%, #2a1a2a 100%); animation: cs-sky 15s ease-in-out infinite alternate; }
.scn-charles-sees-beacon .distant-tower { position:absolute; bottom:30%; left:70%; width:40px; height:60px; transform:translateX(-50%); background: linear-gradient(180deg, #0a0a1a 0%, #1a1a2a 100%); clip-path: polygon(20% 0%, 80% 0%, 100% 100%, 0% 100%); }
.scn-charles-sees-beacon .beacon { position:absolute; bottom:85%; left:70%; width:10px; height:15px; transform:translateX(-50%); background: radial-gradient(circle at 50% 0%, #ffd060 0%, #c8553d 50%, #5e1a1d 100%); border-radius: 50% 50% 20% 20% / 60% 60% 20% 20%; box-shadow: 0 0 60px 20px #c8553d; animation: cs-beacon 2s ease-in-out infinite alternate; }
.scn-charles-sees-beacon .beacon-glow { position:absolute; bottom:60%; left:70%; width:120px; height:120px; transform:translateX(-50%); background: radial-gradient(circle, rgba(200,85,61,.3) 0%, transparent 70%); border-radius:50%; animation: cs-glow 4s ease-in-out infinite alternate; }
.scn-charles-sees-beacon .charles-fig { position:absolute; bottom:20%; left:30%; width:30px; height:55px; transform:translateX(-50%); background: linear-gradient(180deg, #0a0a1a 0%, #1a1a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: cs-charles 5s ease-in-out infinite; }
.scn-charles-sees-beacon .horse { position:absolute; bottom:18%; left:35%; width:45px; height:30px; transform:translateX(-50%); background: linear-gradient(180deg, #0a0a1a 0%, #1a1a2a 100%); border-radius: 40% 40% 20% 20% / 60% 60% 20% 20%; animation: cs-horse 5s ease-in-out infinite 0.2s; }
.scn-charles-sees-beacon .ground { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #0a0a1a 0%, #1a1a1a 100%); border-radius: 30% 70% 0 0 / 50% 50% 0 0; box-shadow: inset 0 10px 30px rgba(0,0,0,.8); }
.scn-charles-sees-beacon .wind-sweep { position:absolute; top:10%; left:0; width:100%; height:2px; background: linear-gradient(90deg, transparent 0%, rgba(200,180,160,.1) 50%, transparent 100%); filter: blur(1px); animation: cs-wind 6s linear infinite; }
@keyframes cs-sky { 0% { opacity:.7 } 50% { opacity:1 } 100% { opacity:.8 } }
@keyframes cs-beacon { 0% { transform: translateX(-50%) scale(.9); box-shadow: 0 0 40px 10px #c8553d; opacity:.8 } 50% { transform: translateX(-50%) scale(1.15); box-shadow: 0 0 80px 30px #c8553d; opacity:1 } 100% { transform: translateX(-50%) scale(1); box-shadow: 0 0 60px 20px #c8553d; opacity:.9 } }
@keyframes cs-glow { 0% { transform: translateX(-50%) scale(.8); opacity:.3 } 50% { transform: translateX(-50%) scale(1.3); opacity:.6 } 100% { transform: translateX(-50%) scale(1); opacity:.4 } }
@keyframes cs-charles { 0% { transform: translateX(-50%) translateY(0) rotate(0deg) } 50% { transform: translateX(-50%) translateY(-5px) rotate(1deg) } 100% { transform: translateX(-50%) translateY(0) rotate(0deg) } }
@keyframes cs-horse { 0% { transform: translateX(-50%) translateY(0) } 50% { transform: translateX(-50%) translateY(-4px) } 100% { transform: translateX(-50%) translateY(0) } }
@keyframes cs-wind { 0% { transform: translateX(-10px) scaleX(1); opacity:.1 } 50% { transform: translateX(10px) scaleX(1.5); opacity:.3 } 100% { transform: translateX(20px) scaleX(1); opacity:.1 } }

.scn-london-uproar { background: linear-gradient(180deg, #4a7c9e 0%, #87ceeb 30%, #f0e68c 100%), radial-gradient(ellipse at 50% 0%, #fffff0 0%, transparent 50%); }
.scn-london-uproar .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #87ceeb 0%, #f0e68c 100%); animation: lu-sky 8s ease-in-out infinite alternate; }
.scn-london-uproar .sun { position:absolute; top:8%; left:70%; width:60px; height:60px; background: radial-gradient(circle, #fff 0%, #ffd700 50%, transparent 70%); border-radius:50%; box-shadow: 0 0 40px 20px rgba(255,215,0,.5), 0 0 80px 40px rgba(255,215,0,.2); animation: lu-sun 6s ease-in-out infinite alternate; }
.scn-london-uproar .buildings { position:absolute; bottom:30%; left:0; right:0; height:40%; background: linear-gradient(180deg, #2c3e50 0%, #1a252f 100%); clip-path: polygon(0% 100%, 0% 60%, 5% 50%, 10% 60%, 10% 40%, 15% 30%, 20% 40%, 20% 60%, 25% 50%, 30% 60%, 30% 30%, 35% 20%, 40% 30%, 40% 60%, 45% 50%, 50% 60%, 50% 40%, 55% 30%, 60% 40%, 60% 60%, 65% 50%, 70% 60%, 70% 20%, 75% 10%, 80% 20%, 80% 60%, 85% 50%, 90% 60%, 90% 40%, 95% 30%, 100% 40%, 100% 100%); box-shadow: inset 0 20px 30px rgba(0,0,0,.6); animation: lu-buildings 10s ease-in-out infinite alternate; }
.scn-london-uproar .crowd-back { position:absolute; bottom:22%; left:5%; right:5%; height:12%; background: #2c3e50; border-radius: 50% 50% 0 0 / 100% 100% 0 0; box-shadow: 0 -10px 20px rgba(0,0,0,.5); animation: lu-crowd-b 2s ease-in-out infinite alternate; }
.scn-london-uproar .crowd-front { position:absolute; bottom:15%; left:15%; right:15%; height:14%; background: #1a252f; border-radius: 50% 50% 0 0 / 100% 100% 0 0; box-shadow: 0 -10px 30px rgba(0,0,0,.7); animation: lu-crowd-f 1.5s ease-in-out infinite alternate; }
.scn-london-uproar .projectile { position:absolute; bottom:50%; left:20%; width:12px; height:12px; background: #a0461a; border-radius: 50%; box-shadow: -10px -20px 0 2px #a0461a, 15px -10px 0 1px #a0461a; animation: lu-stone 0.8s ease-in-out infinite; }
.scn-london-uproar .dust { position:absolute; bottom:20%; left:0; right:0; height:20%; background: radial-gradient(ellipse at 30% 100%, rgba(255,255,200,.2) 0%, transparent 50%), radial-gradient(ellipse at 70% 100%, rgba(255,255,200,.15) 0%, transparent 50%); filter: blur(8px); animation: lu-dust 4s ease-in-out infinite alternate; }
@keyframes lu-sky { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.7 } }
@keyframes lu-sun { 0% { transform:scale(.9); box-shadow:0 0 30px 10px rgba(255,215,0,.4) } 50% { transform:scale(1.05); box-shadow:0 0 60px 30px rgba(255,215,0,.6) } 100% { transform:scale(.95); box-shadow:0 0 40px 15px rgba(255,215,0,.45) } }
@keyframes lu-buildings { 0% { transform: translateX(-2px) } 50% { transform: translateX(2px) } 100% { transform: translateX(-1px) } }
@keyframes lu-crowd-b { 0% { transform: translateX(0) scale(1) } 50% { transform: translateX(-8px) scale(1.03) } 100% { transform: translateX(8px) scale(.97) } }
@keyframes lu-crowd-f { 0% { transform: translateX(0) scale(1) } 50% { transform: translateX(6px) scale(1.02) } 100% { transform: translateX(-6px) scale(.98) } }
@keyframes lu-stone { 0% { transform: translate(0,0) rotate(0deg) } 25% { transform: translate(20px,-30px) rotate(90deg) } 50% { transform: translate(40px,0) rotate(180deg) } 75% { transform: translate(60px,-15px) rotate(270deg) } 100% { transform: translate(80px,10px) rotate(360deg) } }
@keyframes lu-dust { 0% { opacity:.3 } 50% { opacity:.6 } 100% { opacity:.2 } }

.scn-servingmen-skirmish { background: linear-gradient(180deg, #2c1e1a 0%, #4a3e3a 50%, #6a5a4a 100%), radial-gradient(ellipse at 30% 50%, #fffff0 0%, transparent 60%); }
.scn-servingmen-skirmish .bg-deep { position:absolute; inset:0; background: linear-gradient(180deg, #2c1e1a 0%, #1a0f0c 100%); animation: ss-deep 10s ease-in-out infinite alternate; }
.scn-servingmen-skirmish .bg-mid { position:absolute; inset:10% 10% 10% 10%; background: linear-gradient(135deg, #b08060 0%, #8a6050 100%); clip-path: polygon(0 0, 100% 0, 90% 100%, 10% 100%); box-shadow: inset 0 0 30px rgba(0,0,0,.5); animation: ss-mid 8s ease-in-out infinite alternate; }
.scn-servingmen-skirmish .fig-left { position:absolute; bottom:10%; left:20%; width:80px; height:140px; background: #1a1a1a; border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; box-shadow: -30px 20px 0 0 #1a1a1a; transform-origin: bottom center; animation: ss-fight-l 0.8s ease-in-out infinite alternate; }
.scn-servingmen-skirmish .fig-right { position:absolute; bottom:10%; right:20%; width:80px; height:150px; background: #2a2a2a; border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; box-shadow: 30px 20px 0 0 #2a2a2a; transform-origin: bottom center; animation: ss-fight-r 0.9s ease-in-out infinite alternate; }
.scn-servingmen-skirmish .weapon { position:absolute; bottom:40%; left:45%; width:40px; height:10px; background: #5a3a1a; border-radius: 0 80% 80% 0; transform-origin: left center; box-shadow: 0 0 4px rgba(0,0,0,.8); animation: ss-weapon 0.6s ease-in-out infinite; }
.scn-servingmen-skirmish .blood { position:absolute; bottom:75%; left:25%; width:20px; height:8px; background: #a0461a; border-radius: 50%; filter: blur(3px); box-shadow: 10px 15px 0 4px #a0461a, -5px 10px 0 2px #c8553d; animation: ss-blood 2s ease-in-out infinite; }
.scn-servingmen-skirmish .dust { position:absolute; bottom:0; left:0; right:0; height:30%; background: radial-gradient(ellipse at 50% 100%, rgba(255,255,200,.15) 0%, transparent 70%); filter: blur(10px); animation: ss-dust 4s ease-in-out infinite alternate; }
@keyframes ss-deep { 0% { opacity:.9 } 50% { opacity:1 } 100% { opacity:.8 } }
@keyframes ss-mid { 0% { transform: translateX(0) } 50% { transform: translateX(5px) } 100% { transform: translateX(-5px) } }
@keyframes ss-fight-l { 0% { transform: translateX(0) translateY(0) rotate(-2deg) } 50% { transform: translateX(15px) translateY(-5px) rotate(4deg) } 100% { transform: translateX(0) translateY(0) rotate(-2deg) } }
@keyframes ss-fight-r { 0% { transform: translateX(0) translateY(0) rotate(2deg) } 50% { transform: translateX(-15px) translateY(-5px) rotate(-4deg) } 100% { transform: translateX(0) translateY(0) rotate(2deg) } }
@keyframes ss-weapon { 0% { transform: rotate(-30deg) } 50% { transform: rotate(60deg) } 100% { transform: rotate(-30deg) } }
@keyframes ss-blood { 0% { opacity:.3 } 50% { opacity:.8 } 100% { opacity:.2 } }
@keyframes ss-dust { 0% { opacity:.4; transform:scale(1) } 50% { opacity:.7; transform:scale(1.1) } 100% { opacity:.3; transform:scale(.9) } }

.scn-servingmen-loyalty { background: linear-gradient(180deg, #8a7a5a 0%, #c8b89a 40%, #f5f0e1 100%), radial-gradient(ellipse at 80% 20%, #fffff0 0%, transparent 60%); }
.scn-servingmen-loyalty .floor { position:absolute; bottom:0; left:0; right:0; height:30%; background: repeating-linear-gradient(45deg, #c8b89a 0px, #c8b89a 15px, #e0d4c0 15px, #e0d4c0 30px); box-shadow: inset 0 20px 30px rgba(0,0,0,.3); animation: sl-floor 20s linear infinite; }
.scn-servingmen-loyalty .wall { position:absolute; top:0; left:0; right:0; height:70%; background: linear-gradient(90deg, #6a5a4a 0%, #8a7a5a 50%, #6a5a4a 100%); clip-path: polygon(0 0, 100% 0, 85% 100%, 15% 100%); animation: sl-wall 15s ease-in-out infinite alternate; }
.scn-servingmen-loyalty .light-beam { position:absolute; top:0; left:30%; width:40%; height:90%; background: linear-gradient(135deg, rgba(255,255,255,.35) 0%, transparent 100%); clip-path: polygon(20% 0, 80% 0, 60% 100%, 40% 100%); animation: sl-light 6s ease-in-out infinite alternate; }
.scn-servingmen-loyalty .kneeler { position:absolute; bottom:15%; left:25%; width:60px; height:100px; background: #3a4a5a; border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; box-shadow: 20px 0 0 0 #3a4a5a; transform-origin: bottom center; animation: sl-kneel 3s ease-in-out infinite alternate; }
.scn-servingmen-loyalty .sovereign { position:absolute; bottom:5%; right:20%; width:100px; height:180px; background: #1a252f; border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; box-shadow: -30px 10px 0 0 #1a252f; animation: sl-sovereign 4s ease-in-out infinite alternate; }
.scn-servingmen-loyalty .banner { position:absolute; top:10%; left:15%; width:50px; height:80px; background: #c8553d; clip-path: polygon(0 0, 100% 0, 90% 100%, 10% 100%); box-shadow: 2px 2px 6px rgba(0,0,0,.4); animation: sl-banner 7s ease-in-out infinite alternate; }
.scn-servingmen-loyalty .seal { position:absolute; bottom:20%; left:40%; width:24px; height:24px; background: #a0461a; border-radius: 50%; box-shadow: 0 0 8px 2px rgba(160,70,26,.6); animation: sl-seal 5s ease-in-out infinite; }
@keyframes sl-floor { 0% { background-position: 0 0 } 100% { background-position: 100px 0 } }
@keyframes sl-wall { 0% { transform: translateX(0) } 50% { transform: translateX(-5px) } 100% { transform: translateX(5px) } }
@keyframes sl-light { 0% { opacity:.5; transform: translateX(-10px) } 50% { opacity:1; transform: translateX(0) } 100% { opacity:.7; transform: translateX(10px) } }
@keyframes sl-kneel { 0% { transform: translateY(0) rotate(-1deg) } 50% { transform: translateY(-3px) rotate(0deg) } 100% { transform: translateY(1px) rotate(1deg) } }
@keyframes sl-sovereign { 0% { transform: translateY(0) scale(1) } 50% { transform: translateY(-4px) scale(1.01) } 100% { transform: translateY(2px) scale(.99) } }
@keyframes sl-banner { 0% { transform: translateX(0) rotate(0deg) } 50% { transform: translateX(-4px) rotate(-2deg) } 100% { transform: translateX(4px) rotate(2deg) } }
@keyframes sl-seal { 0% { transform: scale(1); opacity:.8 } 50% { transform: scale(1.1); opacity:1 } 100% { transform: scale(.95); opacity:.7 } }

.scn-henry-sighs-discord { background: linear-gradient(180deg, #4a6b7a 0%, #8a9a9a 40%, #c8b89a 100%), radial-gradient(ellipse at 50% 100%, #e0d4c0 0%, transparent 70%); }
.scn-henry-sighs-discord .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #4a6b7a 0%, #8a9a9a 100%); animation: hs-sky 12s ease-in-out infinite alternate; }
.scn-henry-sighs-discord .ground { position:absolute; bottom:0; left:0; right:0; height:45%; background: #3a4a4a; clip-path: polygon(0 40%, 100% 20%, 100% 100%, 0 100%); box-shadow: inset 0 20px 40px rgba(0,0,0,.5); animation: hs-ground 10s ease-in-out infinite alternate; }
.scn-henry-sighs-discord .figure { position:absolute; bottom:15%; left:50%; width:80px; height:180px; transform: translateX(-50%); background: #1a2a2a; border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; box-shadow: 0 20px 40px rgba(0,0,0,.5); transform-origin: bottom center; animation: hs-figure 8s ease-in-out infinite; }
.scn-henry-sighs-discord .sigh { position:absolute; bottom:55%; left:45%; width:80px; height:60px; background: radial-gradient(circle, rgba(255,255,255,.3) 0%, transparent 70%); filter: blur(10px); animation: hs-sigh 6s ease-in-out infinite; }
.scn-henry-sighs-discord .tears { position:absolute; bottom:60%; left:48%; width:4px; height:12px; background: rgba(180,220,255,.6); border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%; box-shadow: 15px 20px 0 0 rgba(180,220,255,.5), -10px 35px 0 0 rgba(180,220,255,.4); animation: hs-tears 2s ease-in-out infinite; }
.scn-henry-sighs-discord .crown { position:absolute; bottom:5%; left:42%; width:60px; height:30px; background: #b08060; clip-path: polygon(10% 0, 30% 40%, 50% 0, 70% 40%, 90% 0, 100% 100%, 0 100%); box-shadow: 0 8px 16px rgba(0,0,0,.6); animation: hs-crown 15s ease-in-out infinite alternate; }
@keyframes hs-sky { 0% { opacity:.7 } 50% { opacity:1 } 100% { opacity:.8 } }
@keyframes hs-ground { 0% { transform: translateY(0) } 50% { transform: translateY(3px) } 100% { transform: translateY(-2px) } }
@keyframes hs-figure { 0% { transform: translateX(-50%) translateY(0) rotate(0deg) } 30% { transform: translateX(-50%) translateY(-3px) rotate(1deg) } 60% { transform: translateX(-50%) translateY(2px) rotate(-1deg) } 100% { transform: translateX(-50%) translateY(0) rotate(0deg) } }
@keyframes hs-sigh { 0% { transform: scale(.5) translateY(0); opacity:.6 } 50% { transform: scale(1.5) translateY(-30px); opacity:0 } 100% { transform: scale(.5) translateY(0); opacity:.6 } }
@keyframes hs-tears { 0% { transform: translateY(0) scaleX(1); opacity:0 } 30% { opacity:1 } 70% { opacity:1 } 100% { transform: translateY(80px) scaleX(.5); opacity:0 } }
@keyframes hs-crown { 0% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(-5px) rotate(3deg) } 100% { transform: translateY(2px) rotate(-2deg) } }

.scn-gloucester-insults-bishop {
  background: linear-gradient(180deg, #e6d5b8 0%, #c9b290 40%, #a58c6f 100%), radial-gradient(ellipse at 50% 20%, #f5e6cc 0%, transparent 60%);
}
.scn-gloucester-insults-bishop .bg-wall {
  position: absolute; inset: 0; background: linear-gradient(135deg, #c4a77d 0%, #b08966 50%, #9a7553 100%); border-radius: 0 0 30% 30% / 0 0 10% 10%; box-shadow: inset 0 0 30px #6b4f33;
  animation: gi-pulse 5s ease-in-out infinite;
}
.scn-gloucester-insults-bishop .arch-left {
  position: absolute; left: 5%; top: 10%; width: 30%; height: 70%; background: linear-gradient(180deg, #e6d5b8 0%, #d4bfa0 50%, #bfa384 100%); border-radius: 50% 50% 0 0 / 80% 80% 0 0; box-shadow: 0 0 10px #6b4f33;
  animation: gi-sway 6s ease-in-out infinite;
}
.scn-gloucester-insults-bishop .arch-right {
  position: absolute; right: 5%; top: 10%; width: 30%; height: 70%; background: linear-gradient(180deg, #e6d5b8 0%, #d4bfa0 50%, #bfa384 100%); border-radius: 50% 50% 0 0 / 80% 80% 0 0; box-shadow: 0 0 10px #6b4f33;
  animation: gi-sway 6s ease-in-out infinite alternate-reverse;
}
.scn-gloucester-insults-bishop .figure.gloster {
  position: absolute; left: 30%; bottom: 20%; width: 12%; height: 50%; background: linear-gradient(180deg, #4a3b2a 0%, #2e2418 100%); border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%; transform-origin: bottom center;
  animation: gi-figure 3s ease-in-out infinite, gi-shake 0.5s infinite;
}
.scn-gloucester-insults-bishop .figure.bishop {
  position: absolute; right: 30%; bottom: 20%; width: 12%; height: 55%; background: linear-gradient(180deg, #6b4f33 0%, #4a3b2a 100%); border-radius: 30% 30% 20% 20% / 40% 40% 30% 30%; transform-origin: bottom center;
  animation: gi-figure 3s ease-in-out infinite 1.5s, gi-shake 0.5s infinite 0.25s;
}
.scn-gloucester-insults-bishop .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%; background: linear-gradient(0deg, #8b7355 0%, #a58c6f 100%); box-shadow: inset 0 8px 15px #3d2e1d;
  animation: gi-floor 8s ease-in-out infinite alternate;
}
.scn-gloucester-insults-bishop .light-beam {
  position: absolute; left: 35%; top: 0; width: 30%; height: 100%; background: linear-gradient(180deg, rgba(245,230,204,0.3) 0%, rgba(245,230,204,0.1) 50%, transparent 100%); clip-path: polygon(30% 0, 70% 0, 55% 100%, 45% 100%);
  animation: gi-light 10s ease-in-out infinite alternate;
}
@keyframes gi-pulse { 0%{opacity:0.9}50%{opacity:1}100%{opacity:0.85} }
@keyframes gi-sway { 0%{transform:rotate(0deg)}50%{transform:rotate(1deg)}100%{transform:rotate(-1deg)} }
@keyframes gi-figure { 0%{transform:scaleY(1)}50%{transform:scaleY(0.98)}100%{transform:scaleY(1)} }
@keyframes gi-shake { 0%{transform:translateX(0)}25%{transform:translateX(-1px)}75%{transform:translateX(1px)}100%{transform:translateX(0)} }
@keyframes gi-floor { 0%{opacity:0.8}50%{opacity:0.9}100%{opacity:0.95} }
@keyframes gi-light { 0%{opacity:0.3}50%{opacity:0.5}100%{opacity:0.25} }

.scn-king-intervenes {
  background: linear-gradient(180deg, #f5e6cc 0%, #d4c5a9 50%, #b89a6e 100%), radial-gradient(ellipse at 50% 30%, #fff5e6 0%, transparent 60%);
}
.scn-king-intervenes .bg-wall {
  position: absolute; inset: 0 0 20% 0; background: linear-gradient(135deg, #d4c5a9 0%, #b89a6e 50%, #9a7a5a 100%); border-radius: 0 0 20% 20%; box-shadow: inset 0 0 40px #6b4f33;
  animation: ki-bg 20s ease-in-out infinite;
}
.scn-king-intervenes .throne-back {
  position: absolute; left: 35%; bottom: 20%; width: 30%; height: 60%; background: linear-gradient(180deg, #8b7355 0%, #6b4f33 100%); border-radius: 30% 30% 10% 10%; box-shadow: 0 0 20px #3d2e1d;
  animation: ki-throne 12s ease-in-out infinite alternate;
}
.scn-king-intervenes .king {
  position: absolute; left: 40%; bottom: 25%; width: 20%; height: 40%; background: linear-gradient(180deg, #4a3b2a 0%, #2e2418 100%); border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%; transform-origin: bottom center;
  animation: ki-king 15s ease-in-out infinite;
}
.scn-king-intervenes .noble-left {
  position: absolute; left: 15%; bottom: 20%; width: 15%; height: 45%; background: linear-gradient(180deg, #6b4f33 0%, #4a3b2a 100%); border-radius: 30% 30% 20% 20% / 40% 40% 30% 30%;
  animation: ki-noble 18s ease-in-out infinite;
}
.scn-king-intervenes .noble-right {
  position: absolute; right: 15%; bottom: 20%; width: 15%; height: 45%; background: linear-gradient(180deg, #6b4f33 0%, #4a3b2a 100%); border-radius: 30% 30% 20% 20% / 40% 40% 30% 30%;
  animation: ki-noble 18s ease-in-out infinite 6s;
}
.scn-king-intervenes .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%; background: linear-gradient(0deg, #8b7355 0%, #a58c6f 100%); box-shadow: inset 0 8px 15px #3d2e1d;
  animation: ki-floor 25s ease-in-out infinite alternate;
}
.scn-king-intervenes .pillar-left {
  position: absolute; left: 5%; top: 0; width: 8%; height: 100%; background: linear-gradient(180deg, #d4c5a9 0%, #b89a6e 50%, #9a7a5a 100%); border-radius: 0 0 10% 10%;
  animation: ki-pillar 30s ease-in-out infinite alternate;
}
.scn-king-intervenes .pillar-right {
  position: absolute; right: 5%; top: 0; width: 8%; height: 100%; background: linear-gradient(180deg, #d4c5a9 0%, #b89a6e 50%, #9a7a5a 100%); border-radius: 0 0 10% 10%;
  animation: ki-pillar 30s ease-in-out infinite alternate-reverse;
}
@keyframes ki-bg { 0%{opacity:0.9}50%{opacity:1}100%{opacity:0.95} }
@keyframes ki-throne { 0%{transform:scaleY(1)}50%{transform:scaleY(0.99)}100%{transform:scaleY(1)} }
@keyframes ki-king { 0%{transform:translateY(0) rotate(0deg)}50%{transform:translateY(-2px) rotate(0.5deg)}100%{transform:translateY(0) rotate(0deg)} }
@keyframes ki-noble { 0%{transform:translateY(0) scaleY(1)}50%{transform:translateY(-1px) scaleY(0.98)}100%{transform:translateY(0) scaleY(1)} }
@keyframes ki-floor { 0%{opacity:0.85}50%{opacity:0.9}100%{opacity:1} }
@keyframes ki-pillar { 0%{opacity:0.7}50%{opacity:0.9}100%{opacity:0.7} }

.scn-nobles-quarrel {
  background: linear-gradient(180deg, #d4c5a9 0%, #b89a6e 40%, #9a7a5a 100%), radial-gradient(ellipse at 40% 30%, #f5e6cc 0%, transparent 50%);
}
.scn-nobles-quarrel .bg-wall {
  position: absolute; inset: 0 0 15% 0; background: linear-gradient(135deg, #a58c6f 0%, #8b7355 50%, #6b4f33 100%); border-radius: 0 0 15% 15%; box-shadow: inset 0 0 30px #3d2e1d;
  animation: nq-bg 4s ease-in-out infinite;
}
.scn-nobles-quarrel .window {
  position: absolute; left: 25%; top: 5%; width: 50%; height: 50%; background: radial-gradient(circle at center, #f5e6cc 0%, #c9b290 50%, #a58c6f 100%); border-radius: 50% 50% 0 0 / 60% 60% 0 0; box-shadow: inset 0 0 20px #6b4f33;
  animation: nq-window 8s ease-in-out infinite alternate;
}
.scn-nobles-quarrel .figure-left {
  position: absolute; left: 20%; bottom: 15%; width: 18%; height: 55%; background: linear-gradient(180deg, #2e2418 0%, #1a120b 100%); border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  animation: nq-figure 2s ease-in-out infinite, nq-shake 0.3s infinite;
}
.scn-nobles-quarrel .figure-right {
  position: absolute; right: 20%; bottom: 15%; width: 18%; height: 60%; background: linear-gradient(180deg, #4a3b2a 0%, #2e2418 100%); border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  animation: nq-figure 2s ease-in-out infinite 1s, nq-shake 0.3s infinite 0.15s;
}
.scn-nobles-quarrel .table {
  position: absolute; left: 30%; bottom: 20%; width: 40%; height: 10%; background: linear-gradient(180deg, #6b4f33 0%, #4a3b2a 100%); border-radius: 10% 10% 5% 5%; box-shadow: 0 5px 10px #3d2e1d;
  animation: nq-table 6s ease-in-out infinite;
}
.scn-nobles-quarrel .candle {
  position: absolute; left: 48%; bottom: 28%; width: 4%; height: 8%; background: linear-gradient(180deg, #f5e6cc 0%, #d4c5a9 100%); border-radius: 50% 50% 20% 20%; animation: nq-candle 1.5s ease-in-out infinite alternate;
}
.scn-nobles-quarrel .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 15%; background: linear-gradient(0deg, #8b7355 0%, #a58c6f 100%); box-shadow: inset 0 8px 15px #3d2e1d;
  animation: nq-floor 8s ease-in-out infinite alternate;
}
@keyframes nq-bg { 0%{opacity:0.8}50%{opacity:1}100%{opacity:0.85} }
@keyframes nq-window { 0%{opacity:0.5}50%{opacity:0.7}100%{opacity:0.45} }
@keyframes nq-figure { 0%{transform:scaleY(1) rotate(0deg)}50%{transform:scaleY(0.95) rotate(1deg)}100%{transform:scaleY(1) rotate(-1deg)} }
@keyframes nq-shake { 0%{transform:translateX(0)}25%{transform:translateX(-2px)}75%{transform:translateX(2px)}100%{transform:translateX(0)} }
@keyframes nq-table { 0%{transform:scaleX(1)}50%{transform:scaleX(0.98)}100%{transform:scaleX(1)} }
@keyframes nq-candle { 0%{opacity:0.8;transform:scaleY(1)}50%{opacity:1;transform:scaleY(1.1)}100%{opacity:0.9;transform:scaleY(0.95)} }
@keyframes nq-floor { 0%{opacity:0.8}50%{opacity:0.9}100%{opacity:0.95} }

.scn-henry-peace-appeal {
  background: linear-gradient(180deg, #f5e6cc 0%, #e6d5b8 50%, #c9b290 100%), radial-gradient(ellipse at 50% 40%, #fff5e6 0%, transparent 60%);
}
.scn-henry-peace-appeal .bg-wall {
  position: absolute; inset: 0 0 20% 0; background: linear-gradient(135deg, #d4c5a9 0%, #b89a6e 50%, #9a7a5a 100%); border-radius: 0 0 10% 10%; box-shadow: inset 0 0 40px #6b4f33;
  animation: hp-bg 30s ease-in-out infinite;
}
.scn-henry-peace-appeal .throne {
  position: absolute; left: 35%; bottom: 20%; width: 30%; height: 65%; background: linear-gradient(180deg, #8b7355 0%, #6b4f33 50%, #3d2e1d 100%); border-radius: 30% 30% 10% 10%; box-shadow: 0 0 30px #3d2e1d;
  animation: hp-throne 20s ease-in-out infinite alternate;
}
.scn-henry-peace-appeal .king {
  position: absolute; left: 40%; bottom: 25%; width: 20%; height: 45%; background: linear-gradient(180deg, #4a3b2a 0%, #2e2418 100%); border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  animation: hp-king 25s ease-in-out infinite;
}
.scn-henry-peace-appeal .uncle-left {
  position: absolute; left: 15%; bottom: 20%; width: 14%; height: 50%; background: linear-gradient(180deg, #6b4f33 0%, #4a3b2a 100%); border-radius: 30% 30% 20% 20% / 40% 40% 30% 30%;
  animation: hp-uncle 30s ease-in-out infinite;
}
.scn-henry-peace-appeal .uncle-right {
  position: absolute; right: 15%; bottom: 20%; width: 14%; height: 50%; background: linear-gradient(180deg, #6b4f33 0%, #4a3b2a 100%); border-radius: 30% 30% 20% 20% / 40% 40% 30% 30%;
  animation: hp-uncle 30s ease-in-out infinite 10s;
}
.scn-henry-peace-appeal .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%; background: linear-gradient(0deg, #8b7355 0%, #a58c6f 100%); box-shadow: inset 0 8px 15px #3d2e1d;
  animation: hp-floor 40s ease-in-out infinite alternate;
}
.scn-henry-peace-appeal .dais {
  position: absolute; left: 30%; bottom: 20%; width: 40%; height: 5%; background: linear-gradient(0deg, #6b4f33 0%, #8b7355 100%); border-radius: 5%;
  animation: hp-dais 35s ease-in-out infinite alternate;
}
.scn-henry-peace-appeal .column-left {
  position: absolute; left: 8%; top: 0; width: 6%; height: 100%; background: linear-gradient(180deg, #d4c5a9 0%, #b89a6e 50%, #9a7a5a 100%); border-radius: 0 0 5% 5%;
  animation: hp-column 45s ease-in-out infinite alternate;
}
.scn-henry-peace-appeal .column-right {
  position: absolute; right: 8%; top: 0; width: 6%; height: 100%; background: linear-gradient(180deg, #d4c5a9 0%, #b89a6e 50%, #9a7a5a 100%); border-radius: 0 0 5% 5%;
  animation: hp-column 45s ease-in-out infinite alternate-reverse;
}
@keyframes hp-bg { 0%{opacity:0.9}50%{opacity:1}100%{opacity:0.95} }
@keyframes hp-throne { 0%{transform:scaleY(1)}50%{transform:scaleY(0.995)}100%{transform:scaleY(1)} }
@keyframes hp-king { 0%{transform:translateY(0) rotate(0deg)}50%{transform:translateY(-1px) rotate(0.3deg)}100%{transform:translateY(0) rotate(0deg)} }
@keyframes hp-uncle { 0%{transform:translateY(0) scaleY(1)}50%{transform:translateY(-0.5px) scaleY(0.99)}100%{transform:translateY(0) scaleY(1)} }
@keyframes hp-floor { 0%{opacity:0.85}50%{opacity:0.9}100%{opacity:1} }
@keyframes hp-dais { 0%{opacity:0.8}50%{opacity:0.9}100%{opacity:0.85} }
@keyframes hp-column { 0%{opacity:0.7}50%{opacity:0.8}100%{opacity:0.7} }
/* end per-scene blocks */

/* auto-stub: parent tag-classes flagged by CSS audit */
.bird { position: absolute; pointer-events: none; }
.marcher { position: absolute; pointer-events: none; }
.scn { position: absolute; pointer-events: none; }
.wave { position: absolute; pointer-events: none; }

/* ============ tier A ============ */
/* per-scene blocks (EXP step_scenes) */
.scn-gloucester-laments {
  background:
    radial-gradient(ellipse at 50% 100%, #1a1310 0%, #2a1e18 50%, transparent 80%),
    linear-gradient(180deg, #0d0a08 0%, #1a1410 50%, #2a1e18 100%);
}
.scn-gloucester-laments .bg-walls {
  position:absolute; inset:0 0 0 0;
  background: linear-gradient(135deg, #1c1512 0%, #231a16 25%, #1a1410 50%, #120e0b 100%);
  border-radius: 4% 4% 0 0;
  box-shadow: inset 0 0 80px 20px rgba(0,0,0,.6);
  animation: gl-walls 20s ease-in-out infinite;
}
.scn-gloucester-laments .floor {
  position:absolute; bottom:0; left:0; right:0; height:25%;
  background: linear-gradient(180deg, #2a1e18 0%, #1a1310 100%);
  border-radius: 0 0 8% 8%;
  box-shadow: inset 0 8px 20px rgba(0,0,0,.5);
}
.scn-gloucester-laments .table {
  position:absolute; bottom:15%; left:50%; width:120px; height:18px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #3a2a1e 0%, #2a1a0e 100%);
  border-radius: 4% 4% 2% 2%;
  box-shadow: 0 4px 8px rgba(0,0,0,.4);
}
.scn-gloucester-laments .candle-body {
  position:absolute; bottom:22%; left:50%; width:12px; height:40px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #e8d0a0 0%, #c8a870 50%, #a08050 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 0 2px 6px rgba(0,0,0,.3);
}
.scn-gloucester-laments .candle-wax {
  position:absolute; bottom:29%; left:50%; width:14px; height:6px;
  transform: translateX(-50%);
  background: radial-gradient(ellipse, #f0e0b0 0%, #d0b880 100%);
  border-radius: 50%;
  opacity: 0.8;
  animation: gl-wax 6s ease-in-out infinite alternate;
}
.scn-gloucester-laments .flame-glow {
  position:absolute; bottom:32%; left:50%; width:80px; height:80px;
  transform: translate(-50%, -10px);
  background: radial-gradient(circle, rgba(255,180,80,.35) 0%, rgba(255,140,40,.15) 40%, transparent 70%);
  border-radius: 50%;
  animation: gl-flicker-glow 2s ease-in-out infinite alternate;
}
.scn-gloucester-laments .flame-core {
  position:absolute; bottom:32%; left:50%; width:12px; height:28px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #ffe080 0%, #ffa040 40%, #d06020 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 30% 30%;
  box-shadow: 0 0 30px 15px rgba(255,160,64,.4), 0 0 60px 30px rgba(255,120,20,.2);
  animation: gl-flame 1.5s ease-in-out infinite alternate;
}
.scn-gloucester-laments .figure {
  position:absolute; bottom:18%; left:38%; width:30px; height:70px;
  background: linear-gradient(180deg, #1a1410 0%, #0d0a08 60%, #080604 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: gl-figure 8s ease-in-out infinite;
}
.scn-gloucester-laments .shadow {
  position:absolute; bottom:15%; left:55%; width:60px; height:20px;
  background: radial-gradient(ellipse, rgba(0,0,0,.6) 0%, transparent 100%);
  border-radius: 50%;
  transform: rotate(-10deg);
  filter: blur(2px);
  animation: gl-shadow 8s ease-in-out infinite;
}
@keyframes gl-walls {
  0% { opacity: 0.85; }
  50% { opacity: 0.95; }
  100% { opacity: 0.85; }
}
@keyframes gl-wax {
  0% { transform: translateX(-50%) scaleY(1) rotate(-1deg); }
  50% { transform: translateX(-50%) scaleY(1.1) rotate(1deg); }
  100% { transform: translateX(-50%) scaleY(1) rotate(0deg); }
}
@keyframes gl-flicker-glow {
  0% { opacity: 0.7; transform: translate(-50%, -10px) scale(1); }
  50% { opacity: 1; transform: translate(-50%, -12px) scale(1.1); }
  100% { opacity: 0.8; transform: translate(-50%, -8px) scale(0.95); }
}
@keyframes gl-flame {
  0% { transform: translateX(-50%) scaleY(1) rotate(-2deg); opacity: 0.9; }
  30% { transform: translateX(-50%) scaleY(1.1) rotate(1deg); opacity: 1; }
  60% { transform: translateX(-50%) scaleY(0.9) rotate(-1deg); opacity: 0.85; }
  100% { transform: translateX(-50%) scaleY(1.05) rotate(0deg); opacity: 0.95; }
}
@keyframes gl-figure {
  0% { transform: translateX(0) scaleY(1) rotate(0deg); }
  25% { transform: translateX(2px) scaleY(1.01) rotate(-2deg); }
  50% { transform: translateX(0) scaleY(0.98) rotate(1deg); }
  75% { transform: translateX(-2px) scaleY(1.01) rotate(-1deg); }
  100% { transform: translateX(0) scaleY(1) rotate(0deg); }
}
@keyframes gl-shadow {
  0% { transform: rotate(-10deg) scaleX(1); opacity: 0.6; }
  50% { transform: rotate(-8deg) scaleX(1.05); opacity: 0.5; }
  100% { transform: rotate(-10deg) scaleX(1); opacity: 0.6; }
}

.scn-suffolk-returns {
  background: 
    linear-gradient(180deg, #f5e6ca 0%, #e2d0b0 100%),
    radial-gradient(ellipse at 50% 70%, #fff8e0 0%, transparent 60%);
}
.scn-suffolk-returns .bg-wall {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(135deg, #e8dcc0 0%, #d4c4a0 50%, #c4b490 100%);
}
.scn-suffolk-returns .bg-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #b8a080 0%, #a08a70 100%);
  border-radius: 20% 80% 0 0 / 10% 90% 0 0;
  box-shadow: inset 0 20px 30px rgba(0,0,0,0.15);
}
.scn-suffolk-returns .column-left {
  position: absolute; left: 15%; bottom: 20%; width: 30px; height: 70%;
  background: linear-gradient(180deg, #f0e8d0 0%, #d8c8a8 100%);
  border-radius: 10px; box-shadow: 4px 0 12px rgba(0,0,0,0.1);
}
.scn-suffolk-returns .column-right {
  position: absolute; right: 15%; bottom: 20%; width: 30px; height: 70%;
  background: linear-gradient(180deg, #f0e8d0 0%, #d8c8a8 100%);
  border-radius: 10px; box-shadow: -4px 0 12px rgba(0,0,0,0.1);
}
.scn-suffolk-returns .throne {
  position: absolute; bottom: 18%; left: 50%; transform: translateX(-50%);
  width: 80px; height: 60px;
  background: linear-gradient(135deg, #d4b878 0%, #b89858 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 0 8px 20px rgba(0,0,0,0.2);
  animation: sr-throne 8s ease-in-out infinite;
}
.scn-suffolk-returns .king-figure {
  position: absolute; bottom: 22%; left: 50%; transform: translateX(-50%);
  width: 24px; height: 50px;
  background: linear-gradient(180deg, #f0d8b0 0%, #c8a870 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 2px 0 8px rgba(0,0,0,0.15);
  animation: sr-king 6s ease-in-out infinite;
}
.scn-suffolk-returns .window-light {
  position: absolute; top: 10%; left: 50%; transform: translateX(-50%);
  width: 80px; height: 100px;
  background: radial-gradient(ellipse, #fff8e0 0%, transparent 70%);
  opacity: 0.3; mix-blend-mode: overlay;
  animation: sr-light 12s ease-in-out infinite alternate;
}
@keyframes sr-throne {
  0% { transform: translateX(-50%) scaleY(1); }
  50% { transform: translateX(-50%) scaleY(0.97); }
  100% { transform: translateX(-50%) scaleY(1); }
}
@keyframes sr-king {
  0%,100% { transform: translateX(-50%) translateY(0); }
  50% { transform: translateX(-50%) translateY(-2px); }
}
@keyframes sr-light {
  0% { opacity: 0.2; transform: translateX(-50%) scale(0.95); }
  50% { opacity: 0.4; transform: translateX(-50%) scale(1.05); }
  100% { opacity: 0.25; transform: translateX(-50%) scale(1); }
}

.scn-gloucester-objects {
  background: 
    linear-gradient(180deg, #d4c4a0 0%, #c0ac88 100%),
    radial-gradient(ellipse at 50% 60%, #e8dcc0 0%, transparent 70%);
}
.scn-gloucester-objects .bg-panel {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(90deg, #b8a080 0%, #d4c4a0 40%, #c0ac88 100%);
}
.scn-gloucester-objects .bg-wall-dark {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #8a7a60 0%, #706050 100%);
  border-radius: 30% 70% 0 0 / 20% 80% 0 0;
}
.scn-gloucester-objects .figure-king {
  position: absolute; bottom: 25%; left: 35%; width: 26px; height: 52px;
  background: linear-gradient(180deg, #e8dcc0 0%, #c8b898 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 3px 0 12px rgba(0,0,0,0.2);
  animation: go-king 4s ease-in-out infinite;
}
.scn-gloucester-objects .figure-gloucester {
  position: absolute; bottom: 25%; left: 55%; width: 24px; height: 50px;
  background: linear-gradient(180deg, #c8a870 0%, #a08050 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: -3px 0 12px rgba(0,0,0,0.2);
  transform-origin: bottom center;
  animation: go-gloucester 3s ease-in-out infinite;
}
.scn-gloucester-objects .shadow-king {
  position: absolute; bottom: 22%; left: 33%; width: 40px; height: 10px;
  background: radial-gradient(ellipse, rgba(0,0,0,0.15) 0%, transparent 70%);
  animation: go-shadow 4s ease-in-out infinite;
}
.scn-gloucester-objects .shadow-gloucester {
  position: absolute; bottom: 22%; left: 52%; width: 38px; height: 10px;
  background: radial-gradient(ellipse, rgba(0,0,0,0.15) 0%, transparent 70%);
  animation: go-shadow 3s ease-in-out infinite reverse;
}
.scn-gloucester-objects .candle-flicker {
  position: absolute; top: 18%; left: 50%; transform: translateX(-50%);
  width: 12px; height: 20px;
  background: radial-gradient(circle, #e0a040 0%, #c08030 60%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 24px 8px #d09040, 0 0 48px 16px rgba(208,144,64,0.3);
  animation: go-candle 2s ease-in-out infinite alternate;
}
@keyframes go-king {
  0%,100% { transform: translateX(0) translateY(0); }
  50% { transform: translateX(-3px) translateY(-1px); }
}
@keyframes go-gloucester {
  0%,100% { transform: translateX(0) translateY(0) rotate(0); }
  50% { transform: translateX(4px) translateY(-2px) rotate(3deg); }
}
@keyframes go-shadow {
  0%,100% { opacity: 0.4; transform: scaleX(1); }
  50% { opacity: 0.7; transform: scaleX(1.1); }
}
@keyframes go-candle {
  0% { transform: translateX(-50%) scale(0.8); opacity: 0.6; }
  30% { transform: translateX(-50%) scale(1.1); opacity: 1; }
  70% { transform: translateX(-48%) scale(1); opacity: 0.8; }
  100% { transform: translateX(-52%) scale(0.9); opacity: 0.7; }
}

.scn-henry-chooses-love {
  background: 
    linear-gradient(180deg, #f5e6ca 0%, #e8dcc0 50%, #d8c8a8 100%),
    radial-gradient(ellipse at 50% 30%, #ffe8c0 0%, transparent 60%);
}
.scn-henry-chooses-love .bg-arch {
  position: absolute; top: 0; left: 20%; right: 20%; height: 50%;
  background: linear-gradient(180deg, #d4c4a0 0%, #c0ac88 100%);
  border-radius: 40% 40% 0 0 / 100% 100% 0 0;
  box-shadow: inset 0 -20px 30px rgba(0,0,0,0.1);
}
.scn-henry-chooses-love .bg-tapestry {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #b8a080 0%, #9a8868 100%);
  border-radius: 0 0 30% 70% / 0 0 10% 20%;
}
.scn-henry-chooses-love .figure-henry {
  position: absolute; bottom: 30%; left: 35%; width: 26px; height: 52px;
  background: linear-gradient(180deg, #f0d8b0 0%, #c8a870 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: hcl-henry 10s ease-in-out infinite;
}
.scn-henry-chooses-love .vision-portrait {
  position: absolute; bottom: 35%; left: 55%; width: 30px; height: 40px;
  background: radial-gradient(circle, #ffe0b0 0%, #d8b890 60%, transparent 100%);
  border-radius: 10%;
  box-shadow: 0 0 30px 12px rgba(255,200,100,0.5);
  animation: hcl-portrait 6s ease-in-out infinite alternate;
}
.scn-henry-chooses-love .golden-haze {
  position: absolute; bottom: 0; left: 0; right: 0; top: 0;
  background: radial-gradient(ellipse at 50% 40%, rgba(255,220,150,0.15) 0%, transparent 60%);
  mix-blend-mode: overlay;
  animation: hcl-haze 15s ease-in-out infinite alternate;
}
.scn-henry-chooses-love .rose-petal {
  position: absolute; bottom: 20%; left: 20%; width: 10px; height: 14px;
  background: radial-gradient(ellipse, #c8553d 0%, #a0461a 100%);
  border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%;
  animation: hcl-petal 20s linear infinite;
}
.scn-henry-chooses-love .rose-petal.late {
  left: 70%; animation-delay: -7s; animation-duration: 18s;
}
@keyframes hcl-henry {
  0%,100% { transform: translateY(0); }
  50% { transform: translateY(-4px) scale(1.02); }
}
@keyframes hcl-portrait {
  0% { transform: scale(1); opacity: 0.3; }
  50% { transform: scale(1.2); opacity: 0.8; }
  100% { transform: scale(0.9); opacity: 0.5; }
}
@keyframes hcl-haze {
  0% { opacity: 0.1; transform: scale(0.95); }
  50% { opacity: 0.3; transform: scale(1.05); }
  100% { opacity: 0.15; transform: scale(1); }
}
@keyframes hcl-petal {
  0% { transform: translate(0, 0) rotate(0deg); opacity: 0.7; }
  25% { transform: translate(10px, -20px) rotate(45deg); opacity: 0.6; }
  50% { transform: translate(20px, -40px) rotate(90deg); opacity: 0.5; }
  75% { transform: translate(10px, -60px) rotate(135deg); opacity: 0.3; }
  100% { transform: translate(0, -80px) rotate(180deg); opacity: 0; }
}

.scn-henry-agrees {
  background: 
    linear-gradient(180deg, #f0e0c8 0%, #dcc8a8 100%),
    radial-gradient(ellipse at 50% 70%, #fff8e0 0%, transparent 70%);
}
.scn-henry-agrees .bg-window {
  position: absolute; inset: 0;
  background: linear-gradient(135deg, #c4b490 0%, #b8a080 100%);
}
.scn-henry-agrees .window-frame {
  position: absolute; top: 10%; left: 30%; right: 30%; height: 60%;
  background: linear-gradient(180deg, #8a7a60 0%, #706050 100%);
  border-radius: 10% 10% 20% 20%;
  box-shadow: 0 8px 20px rgba(0,0,0,0.2);
}
.scn-henry-agrees .sunbeam {
  position: absolute; bottom: 0; left: 35%; width: 60px; height: 70%;
  background: linear-gradient(180deg, rgba(255,240,180,0.4) 0%, transparent 100%);
  clip-path: polygon(0% 0%, 100% 0%, 80% 100%, 20% 100%);
  animation: ha-sunbeam 8s ease-in-out infinite alternate;
}
.scn-henry-agrees .figure-henry-kneel {
  position: absolute; bottom: 20%; left: 50%; transform: translateX(-50%);
  width: 26px; height: 48px;
  background: linear-gradient(180deg, #f0d8b0 0%, #c8a870 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ha-kneel 6s ease-in-out infinite;
}
.scn-henry-agrees .letter-scroll {
  position: absolute; bottom: 22%; left: 48%; width: 30px; height: 15px;
  background: linear-gradient(180deg, #f5e6ca 0%, #d4c4a0 100%);
  border-radius: 5%;
  box-shadow: 2px 2px 6px rgba(0,0,0,0.1);
  animation: ha-scroll 10s ease-in-out infinite;
}
.scn-henry-agrees .dust-motes {
  position: absolute; top: 20%; left: 30%; width: 4px; height: 4px;
  background: rgba(255,240,200,0.5); border-radius: 50%;
  animation: ha-dust 15s linear infinite;
}
.scn-henry-agrees .dust-motes.late {
  left: 60%; animation-delay: -5s; animation-duration: 20s;
}
@keyframes ha-sunbeam {
  0% { transform: translateX(0) scaleY(1); opacity: 0.3; }
  50% { transform: translateX(3px) scaleY(1.05); opacity: 0.5; }
  100% { transform: translateX(-2px) scaleY(0.95); opacity: 0.4; }
}
@keyframes ha-kneel {
  0%,100% { transform: translateX(-50%) scaleY(1); }
  50% { transform: translateX(-50%) scaleY(0.97) translateY(1px); }
}
@keyframes ha-scroll {
  0% { transform: translateX(0) rotate(0deg); }
  50% { transform: translateX(-2px) rotate(-2deg); }
  100% { transform: translateX(1px) rotate(1deg); }
}
@keyframes ha-dust {
  0% { transform: translate(0, 0); opacity: 0.6; }
  25% { transform: translate(8px, -12px); opacity: 0.5; }
  50% { transform: translate(15px, -25px); opacity: 0.3; }
  75% { transform: translate(8px, -38px); opacity: 0.2; }
  100% { transform: translate(0, -50px); opacity: 0; }
}

/* Scene: forced-reconciliation */
.scn-forced-reconciliation { background: linear-gradient(180deg, #e8dcc8 0%, #c9b89a 100%), radial-gradient(ellipse at 50% 30%, #f0e4d0 0%, transparent 70%); }
.scn-forced-reconciliation .wall { position:absolute; inset:0 0 35% 0; background: linear-gradient(180deg, #d4c5a8 0%, #bfae8f 100%); box-shadow: inset 0 12px 30px rgba(0,0,0,0.15); }
.scn-forced-reconciliation .floor { position:absolute; bottom:0; left:0; right:0; height:35%; background: linear-gradient(180deg, #8a704c 0%, #6b5438 100%); }
.scn-forced-reconciliation .window { position:absolute; top:8%; left:50%; width:28%; height:40%; transform:translateX(-50%); background: linear-gradient(180deg, #f8f0e0 0%, #ede0c8 100%); border-radius:4% 4% 0 0; box-shadow: inset 0 -20px 40px rgba(255,255,255,0.3); animation: fr-window 12s ease-in-out infinite; }
.scn-forced-reconciliation .table { position:absolute; bottom:30%; left:50%; width:45%; height:8%; transform:translateX(-50%); background: linear-gradient(180deg, #a08060 0%, #7a5e40 100%); border-radius:4px; box-shadow: 0 6px 14px rgba(0,0,0,0.3), inset 0 2px 4px rgba(255,255,255,0.2); }
.scn-forced-reconciliation .figure-left { position:absolute; bottom:30%; left:28%; width:20%; height:40%; background: linear-gradient(180deg, #4a2a1a 0%, #2a1a0a 100%); border-radius: 40% 40% 20% 20% / 60% 60% 30% 30%; transform-origin: bottom center; animation: fr-figure-left 4s ease-in-out infinite alternate; }
.scn-forced-reconciliation .figure-right { position:absolute; bottom:30%; right:28%; width:20%; height:42%; background: linear-gradient(180deg, #5a3a2a 0%, #3a2a1a 100%); border-radius: 40% 40% 20% 20% / 60% 60% 30% 30%; transform-origin: bottom center; animation: fr-figure-right 4.2s ease-in-out infinite alternate; }
.scn-forced-reconciliation .candle { position:absolute; bottom:38%; width:2%; height:10%; border-radius: 10% 10% 50% 50%; animation: fr-candle 0.8s ease-in-out infinite alternate; }
.scn-forced-reconciliation .candle-1 { left:38%; background: linear-gradient(180deg, #e0a060 0%, #c08040 100%); box-shadow: 0 0 20px 6px rgba(224,160,96,0.4); }
.scn-forced-reconciliation .candle-2 { left:52%; background: linear-gradient(180deg, #e0a060 0%, #c08040 100%); box-shadow: 0 0 20px 6px rgba(224,160,96,0.4); animation-delay: 0.2s; }
.scn-forced-reconciliation .shadow-flicker { position:absolute; inset:0; background: radial-gradient(ellipse at 45% 50%, transparent 50%, rgba(0,0,0,0.2) 100%); animation: fr-flicker 0.6s ease-in-out infinite alternate; mix-blend-mode: multiply; }
@keyframes fr-window { 0%,100% { opacity:0.9; transform:translateX(-50%) scaleY(1); } 50% { opacity:1; transform:translateX(-50%) scaleY(1.02); } }
@keyframes fr-figure-left { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(-2px) rotate(-2deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes fr-figure-right { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(3px) rotate(2deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes fr-candle { 0% { transform: scaleY(1) scaleX(1); opacity:0.9; } 50% { transform: scaleY(1.05) scaleX(1.1); opacity:1; } 100% { transform: scaleY(1) scaleX(1); opacity:0.9; } }
@keyframes fr-flicker { 0% { opacity:0.8; } 50% { opacity:0.5; } 100% { opacity:0.8; } }

/* Scene: handshake-false */
.scn-handshake-false { background: linear-gradient(135deg, #e2d4ba 0%, #c4b096 100%), radial-gradient(circle at 60% 40%, #f0e4d4 0%, transparent 60%); }
.scn-handshake-false .bg-panel { position:absolute; inset:0; background: linear-gradient(180deg, #d8c8ae 0%, #b8a48a 100%); }
.scn-handshake-false .hand-left { position:absolute; bottom:38%; left:30%; width:30%; height:25%; background: linear-gradient(180deg, #d5aa70 0%, #b8895a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; transform-origin: right center; animation: hf-hand-left 3s ease-in-out infinite alternate; }
.scn-handshake-false .hand-right { position:absolute; bottom:38%; right:30%; width:30%; height:25%; background: linear-gradient(180deg, #b8895a 0%, #9a6a3a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; transform-origin: left center; animation: hf-hand-right 3.5s ease-in-out infinite alternate; }
.scn-handshake-false .sleeve-left { position:absolute; bottom:48%; left:20%; width:20%; height:35%; background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%); border-radius: 40% 20% 0 0 / 60% 30% 0 0; }
.scn-handshake-false .sleeve-right { position:absolute; bottom:48%; right:20%; width:20%; height:35%; background: linear-gradient(180deg, #2a1a0a 0%, #0a0000 100%); border-radius: 20% 40% 0 0 / 30% 60% 0 0; }
.scn-handshake-false .cuff-left { position:absolute; bottom:43%; left:26%; width:8%; height:4%; background: #f0e0c8; border-radius:4px; box-shadow: 0 1px 4px rgba(0,0,0,0.2); }
.scn-handshake-false .cuff-right { position:absolute; bottom:43%; right:26%; width:8%; height:4%; background: #e8d4b8; border-radius:4px; box-shadow: 0 1px 4px rgba(0,0,0,0.2); }
.scn-handshake-false .dagger-hint { position:absolute; bottom:52%; right:28%; width:3%; height:12%; background: linear-gradient(180deg, #a0a0a0 0%, #606060 100%); border-radius: 0 0 50% 50% / 0 0 60% 60%; transform: rotate(15deg); box-shadow: 0 0 8px 2px rgba(0,0,0,0.3); animation: hf-dagger 2s ease-in-out infinite alternate; }
@keyframes hf-hand-left { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(-5px) rotate(-5deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes hf-hand-right { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(5px) rotate(5deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes hf-dagger { 0% { opacity:0.3; transform: rotate(15deg) translateY(0); } 50% { opacity:0.8; transform: rotate(25deg) translateY(-2px); } 100% { opacity:0.3; transform: rotate(15deg) translateY(0); } }

/* Scene: richard-petition */
.scn-richard-petition { background: linear-gradient(180deg, #f5ede0 0%, #dfd2be 100%), radial-gradient(ellipse at 50% 20%, #faf3e8 0%, transparent 70%); }
.scn-richard-petition .throne-back { position:absolute; top:10%; left:50%; width:30%; height:50%; transform:translateX(-50%); background: linear-gradient(180deg, #6a4a2a 0%, #4a2a0a 100%); border-radius: 20% 20% 0 0 / 40% 40% 0 0; }
.scn-richard-petition .throne-seat { position:absolute; bottom:40%; left:50%; width:45%; height:8%; transform:translateX(-50%); background: linear-gradient(180deg, #3a2010 0%, #2a1000 100%); border-radius:10px; }
.scn-richard-petition .king-figure { position:absolute; bottom:30%; left:50%; width:18%; height:35%; transform:translateX(-50%); background: linear-gradient(180deg, #5a3a2a 0%, #2a1a0a 100%); border-radius: 40% 40% 20% 20% / 60% 60% 30% 30%; }
.scn-richard-petition .kneeling-figure { position:absolute; bottom:15%; left:35%; width:16%; height:30%; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform: skewX(-5deg); }
.scn-richard-petition .scroll { position:absolute; bottom:25%; left:36%; width:8%; height:6%; background: linear-gradient(180deg, #f0e0c8 0%, #d0b898 100%); border-radius: 20% 20% 10% 10% / 40% 40% 30% 30%; transform: rotate(-15deg); box-shadow: 0 2px 6px rgba(0,0,0,0.2); animation: rp-scroll 6s ease-in-out infinite; }
.scn-richard-petition .carpet { position:absolute; bottom:5%; left:15%; width:70%; height:12%; background: linear-gradient(180deg, #7a4a3a 0%, #5a2a1a 100%); border-radius: 50% / 100% 100% 0 0; }
.scn-richard-petition .pillar-left { position:absolute; top:0; left:5%; width:8%; height:50%; background: linear-gradient(180deg, #a08060 0%, #7a5a3a 100%); border-radius: 10% 10% 0 0; box-shadow: 2px 0 6px rgba(0,0,0,0.2); }
.scn-richard-petition .pillar-right { position:absolute; top:0; right:5%; width:8%; height:50%; background: linear-gradient(180deg, #a08060 0%, #7a5a3a 100%); border-radius: 10% 10% 0 0; box-shadow: -2px 0 6px rgba(0,0,0,0.2); }
@keyframes rp-scroll { 0% { transform: rotate(-15deg) translateY(0); } 50% { transform: rotate(-10deg) translateY(-2px); } 100% { transform: rotate(-15deg) translateY(0); } }

/* Scene: richard-duke-of-york */
.scn-richard-duke-of-york { background: linear-gradient(180deg, #f0e8d8 0%, #d8c8b0 100%), radial-gradient(ellipse at 50% 30%, #fdf5ea 0%, transparent 70%); }
.scn-richard-duke-of-york .chamber-wall { position:absolute; inset:0 0 20% 0; background: linear-gradient(180deg, #e8dcc8 0%, #c8b8a0 100%); box-shadow: inset 0 10px 30px rgba(0,0,0,0.1); }
.scn-richard-duke-of-york .floor-tiles { position:absolute; bottom:0; left:0; right:0; height:20%; background: repeating-linear-gradient(90deg, #a0886a 0px, #a0886a 20px, #b8a080 20px, #b8a080 40px); }
.scn-richard-duke-of-york .standing-figure { position:absolute; bottom:20%; left:55%; width:18%; height:45%; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 40% 40% 20% 20% / 60% 60% 30% 30%; transform-origin: bottom center; animation: ry-stand 8s ease-in-out infinite; }
.scn-richard-duke-of-york .kneeling-figure { position:absolute; bottom:10%; left:30%; width:16%; height:30%; background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform: skewX(-10deg); animation: ry-kneel 6s ease-in-out infinite; }
.scn-richard-duke-of-york .hand-on-shoulder { position:absolute; bottom:24%; left:42%; width:8%; height:12%; background: linear-gradient(180deg, #6a4a2a 0%, #4a2a0a 100%); border-radius: 40% 40% 20% 20% / 60% 60% 30% 30%; transform: rotate(20deg); animation: ry-hand 4s ease-in-out infinite alternate; }
.scn-richard-duke-of-york .banner { position:absolute; top:10%; right:10%; width:20%; height:30%; background: linear-gradient(180deg, #b05030 0%, #803020 100%); border-radius: 0 0 20% 20% / 0 0 40% 40%; box-shadow: 0 4px 8px rgba(0,0,0,0.3); animation: ry-banner 10s ease-in-out infinite; }
.scn-richard-duke-of-york .light-ray { position:absolute; top:5%; left:20%; width:60%; height:70%; background: linear-gradient(180deg, rgba(255,255,240,0.3) 0%, transparent 100%); transform: rotate(-10deg); animation: ry-light 12s ease-in-out infinite alternate; }
@keyframes ry-stand { 0%,100% { transform: translateX(0); } 50% { transform: translateX(-2px); } }
@keyframes ry-kneel { 0%,100% { transform: skewX(-10deg) translateY(0); } 50% { transform: skewX(-8deg) translateY(-2px); } }
@keyframes ry-hand { 0% { transform: rotate(20deg) translateY(0); } 50% { transform: rotate(25deg) translateY(-1px); } 100% { transform: rotate(20deg) translateY(0); } }
@keyframes ry-banner { 0% { transform: scaleY(1); } 50% { transform: scaleY(1.05); } 100% { transform: scaleY(1); } }
@keyframes ry-light { 0% { opacity:0.6; transform: rotate(-10deg) translateX(0); } 50% { opacity:0.9; transform: rotate(-12deg) translateX(5px); } 100% { opacity:0.6; transform: rotate(-10deg) translateX(0); } }

/* talbots-defeat — dark night, encircled knight */
.scn-talbots-defeat {
  background: linear-gradient(180deg, #0f0f2e 0%, #1a1a3e 40%, #2a2a4a 100%), radial-gradient(ellipse at 50% 120%, #3a3a5a 0%, transparent 70%);
}
.scn-talbots-defeat .sky { position: absolute; inset: 0; background: linear-gradient(180deg, #1a1a3e 0%, transparent 50%, #0a0a1e 100%); box-shadow: inset 0 0 60px #0a0a1e; animation: td-sky 15s ease-in-out infinite alternate; }
.scn-talbots-defeat .mountains { position: absolute; bottom: 20%; left: 0; right: 0; height: 30%; background: linear-gradient(180deg, #1a2a1a 0%, #0e1a0e 100%); border-radius: 60% 40% 0 0; box-shadow: inset 0 10px 20px rgba(0,0,0,0.6); }
.scn-talbots-defeat .knight-silhouette { position: absolute; bottom: 15%; left: 40%; width: 40px; height: 70px; background: linear-gradient(180deg, #0e0e1e, #05050c); border-radius: 20% 20% 10% 10% / 50% 50% 30% 30%; transform-origin: bottom center; animation: td-knight 6s ease-in-out infinite; }
.scn-talbots-defeat .spear { position: absolute; bottom: 15%; width: 4px; height: 60px; background: linear-gradient(180deg, #4a3a3a, #2a1a1a); border-radius: 2px; animation: td-spears 4s ease-in-out infinite alternate; }
.scn-talbots-defeat .spear-1 { left: 25%; transform: rotate(-15deg); animation-delay: 0s; }
.scn-talbots-defeat .spear-2 { left: 55%; transform: rotate(10deg); animation-delay: 0.5s; }
.scn-talbots-defeat .spear-3 { left: 45%; bottom: 18%; width: 3px; height: 50px; transform: rotate(20deg); animation-delay: 1s; }
.scn-talbots-defeat .banner { position: absolute; bottom: 20%; left: 42%; width: 20px; height: 30px; background: linear-gradient(180deg, #5e2a1a, #3a1a0a); border-radius: 0 10% 0 0; transform: rotate(-10deg); animation: td-banner 8s ease-in-out infinite; }
.scn-talbots-defeat .dust { position: absolute; bottom: 10%; left: 30%; right: 30%; height: 10%; background: radial-gradient(ellipse at 50% 0%, rgba(100,80,60,0.3), transparent); filter: blur(8px); animation: td-dust 10s linear infinite; }
@keyframes td-sky { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.7; } }
@keyframes td-knight { 0%, 100% { transform: translateY(0) rotate(-2deg); } 50% { transform: translateY(-3px) rotate(2deg); } }
@keyframes td-spears { 0% { transform: rotate(-15deg) translateY(0); } 100% { transform: rotate(5deg) translateY(-2px); } }
@keyframes td-banner { 0%, 100% { transform: rotate(-10deg) scaleY(1); } 50% { transform: rotate(-15deg) scaleY(0.9); } }
@keyframes td-dust { 0% { opacity: 0.2; transform: scale(1); } 50% { opacity: 0.4; transform: scale(1.3); } 100% { opacity: 0.2; transform: scale(1); } }

/* talbots-valour — bright sunlit charge */
.scn-talbots-valour {
  background: linear-gradient(180deg, #87CEEB 0%, #FFD700 50%, #F4A460 100%), radial-gradient(ellipse at 70% 30%, #FFF8DC 0%, transparent 60%);
}
.scn-talbots-valour .sky-bright { position: absolute; inset: 0 0 40% 0; background: linear-gradient(180deg, #87CEEB 0%, #B0E0E6 80%); animation: tv-sky 10s ease-in-out infinite alternate; }
.scn-talbots-valour .sun { position: absolute; top: 8%; right: 20%; width: 50px; height: 50px; background: radial-gradient(circle, #FFD700 0%, #FFA500 60%, transparent 70%); border-radius: 50%; box-shadow: 0 0 80px 30px rgba(255,215,0,0.4); animation: tv-sun 12s ease-in-out infinite; }
.scn-talbots-valour .ground { position: absolute; bottom: 0; left: 0; right: 0; height: 40%; background: linear-gradient(180deg, #8B7355 0%, #6B4226 100%); border-radius: 40% 0 0 0; }
.scn-talbots-valour .knight-charge { position: absolute; bottom: 20%; left: 35%; width: 50px; height: 80px; background: linear-gradient(180deg, #C8553D 0%, #7a3a2a 100%); border-radius: 10% 10% 30% 30% / 40% 40% 20% 20%; transform-origin: bottom center; animation: tv-knight 2s ease-in-out infinite; }
.scn-talbots-valour .lance { position: absolute; bottom: 35%; left: 35%; width: 60px; height: 6px; background: linear-gradient(90deg, #a0522d, #6b3a1a); transform: rotate(-20deg); transform-origin: left center; animation: tv-lance 0.8s ease-in-out infinite alternate; }
.scn-talbots-valour .sword-slash { position: absolute; bottom: 50%; left: 45%; width: 8px; height: 40px; background: linear-gradient(180deg, #b08040, #705020); border-radius: 4px; transform: rotate(45deg); transform-origin: bottom center; animation: tv-sword 0.4s ease-in-out infinite alternate; }
.scn-talbots-valour .enemy-silhouette { position: absolute; bottom: 15%; right: 20%; width: 40px; height: 70px; background: linear-gradient(180deg, #2a2a3a, #151520); border-radius: 10% 10% 20% 20% / 30% 30% 20% 20%; transform: scaleX(-1); animation: tv-enemy 3s ease-in-out infinite; }
.scn-talbots-valour .dust-debris { position: absolute; bottom: 15%; left: 10%; right: 10%; height: 8%; background: radial-gradient(ellipse at 50% 0%, rgba(200,180,150,0.5), transparent); filter: blur(12px); animation: tv-dust 2s linear infinite; }
@keyframes tv-sky { 0% { opacity: 0.9; } 100% { opacity: 1; } }
@keyframes tv-sun { 0% { box-shadow: 0 0 60px 20px rgba(255,215,0,0.3); } 50% { box-shadow: 0 0 120px 40px rgba(255,215,0,0.6); } 100% { box-shadow: 0 0 60px 20px rgba(255,215,0,0.3); } }
@keyframes tv-knight { 0%,100% { transform: translateY(0) scale(1); } 25% { transform: translateY(-4px) scale(1.02); } 50% { transform: translateY(2px) scale(0.98); } 75% { transform: translateY(-2px) scale(1.01); } }
@keyframes tv-lance { 0% { transform: rotate(-25deg); } 100% { transform: rotate(-15deg); } }
@keyframes tv-sword { 0% { transform: rotate(30deg); } 100% { transform: rotate(60deg); } }
@keyframes tv-enemy { 0%,100% { opacity: 0.6; transform: scaleX(-1) translateX(0); } 50% { opacity: 1; transform: scaleX(-1) translateX(-5px); } }
@keyframes tv-dust { 0% { transform: scale(1) translateY(0); } 50% { transform: scale(1.5) translateY(-5px); } 100% { transform: scale(1) translateY(0); } }

/* fastolfe-cowardice — bright battlefield, coward fleeing */
.scn-fastolfe-cowardice {
  background: linear-gradient(180deg, #E8D5B7 0%, #D2B48C 40%, #A08860 100%), radial-gradient(ellipse at 40% 50%, #FFFACD 0%, transparent 80%);
}
.scn-fastolfe-cowardice .sky-blazing { position: absolute; inset: 0 0 30% 0; background: linear-gradient(180deg, #FFD700 0%, #E8D5B7 100%); animation: fc-sky 12s ease-in-out infinite alternate; }
.scn-fastolfe-cowardice .battlefield { position: absolute; bottom: 0; left: 0; right: 0; height: 30%; background: linear-gradient(180deg, #8B7355, #6B4226, #5a3a1a); border-radius: 20% 20% 0 0; box-shadow: inset 0 10px 20px rgba(0,0,0,0.3); }
.scn-fastolfe-cowardice .fastolfe-flee { position: absolute; bottom: 10%; left: 20%; width: 40px; height: 70px; background: linear-gradient(180deg, #4a6a4a, #1a3a1a); border-radius: 10% 10% 30% 30% / 40% 40% 20% 20%; transform-origin: bottom center; animation: fc-flee 1.5s ease-in-out infinite; }
.scn-fastolfe-cowardice .sword-dropped { position: absolute; bottom: 8%; left: 30%; width: 30px; height: 5px; background: linear-gradient(90deg, #a0a0a0, #606060); transform: rotate(30deg); border-radius: 2px; animation: fc-sword 2s ease-in-out infinite; }
.scn-fastolfe-cowardice .advancing-soldiers { position: absolute; bottom: 5%; right: 10%; width: 60px; height: 50px; background: linear-gradient(180deg, #3a4a3a, #1a2a1a); border-radius: 10% 10% 20% 20% / 30% 30% 20% 20%; clip-path: polygon(0% 100%, 20% 40%, 40% 100%, 60% 20%, 80% 100%, 100% 30%); animation: fc-advance 4s ease-in-out infinite alternate; }
.scn-fastolfe-cowardice .dust-puff { position: absolute; bottom: 10%; left: 25%; width: 20px; height: 20px; background: radial-gradient(circle, rgba(200,180,150,0.6), transparent); border-radius: 50%; filter: blur(4px); animation: fc-dust 1s linear infinite; }
.scn-fastolfe-cowardice .shadow-stretch { position: absolute; bottom: 0; left: 15%; width: 60px; height: 30px; background: linear-gradient(180deg, rgba(0,0,0,0.2), transparent); transform: skewX(-20deg); animation: fc-shadow 3s ease-in-out infinite; }
@keyframes fc-sky { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes fc-flee { 0%,100% { transform: translateX(0) rotate(-3deg); } 25% { transform: translateX(8px) rotate(3deg); } 50% { transform: translateX(16px) rotate(-2deg); } 75% { transform: translateX(8px) rotate(4deg); } }
@keyframes fc-sword { 0%,100% { transform: rotate(30deg) translateX(0); } 50% { transform: rotate(20deg) translateX(5px); } }
@keyframes fc-advance { 0% { transform: translateX(0); } 100% { transform: translateX(-10px); } }
@keyframes fc-dust { 0% { opacity: 0.3; transform: scale(0.8); } 50% { opacity: 0.7; transform: scale(1.2); } 100% { opacity: 0.3; transform: scale(0.8); } }
@keyframes fc-shadow { 0%,100% { transform: skewX(-20deg) scaleY(1); } 50% { transform: skewX(-25deg) scaleY(1.2); } }

/* talbot-captured — dark dungeon, captive and chains */
.scn-talbot-captured {
  background: linear-gradient(180deg, #0e0e1e 0%, #1a1a2e 40%, #2a2a3e 100%), radial-gradient(ellipse at 30% 50%, #2a2a3e 0%, transparent 70%);
}
.scn-talbot-captured .dungeon-wall { position: absolute; inset: 0; background: linear-gradient(90deg, #1a1a2e 0%, #0e0e1e 30%, #1a1a2e 70%, #0e0e1e 100%); box-shadow: inset 0 0 80px #000; }
.scn-talbot-captured .floor { position: absolute; bottom: 0; left: 0; right: 0; height: 25%; background: linear-gradient(180deg, #2a2a3e, #15151e); border-radius: 30% 30% 0 0; }
.scn-talbot-captured .talbot-captive { position: absolute; bottom: 10%; left: 40%; width: 45px; height: 75px; background: linear-gradient(180deg, #3a3a4a, #1a1a2a); border-radius: 10% 10% 20% 20% / 30% 30% 20% 20%; transform-origin: bottom center; animation: tc-captive 5s ease-in-out infinite; }
.scn-talbot-captured .chain { position: absolute; bottom: 20%; width: 6px; height: 40px; background: linear-gradient(180deg, #5a5a5a, #3a3a3a); border-radius: 3px; box-shadow: inset 0 2px 4px rgba(255,255,255,0.1); animation: tc-chain 3s ease-in-out infinite alternate; }
.scn-talbot-captured .chain-left { left: 35%; transform: rotate(15deg); animation-delay: 0s; }
.scn-talbot-captured .chain-right { left: 50%; transform: rotate(-10deg); animation-delay: 0.5s; }
.scn-talbot-captured .torch-glow { position: absolute; top: 15%; left: 15%; width: 40px; height: 40px; background: radial-gradient(circle, #b08040 0%, #704020 50%, transparent 80%); border-radius: 50%; box-shadow: 0 0 60px 30px rgba(176,128,64,0.3), 0 0 100px 50px rgba(112,64,32,0.2); animation: tc-torch 2s ease-in-out infinite alternate; }
.scn-talbot-captured .shadow-figure { position: absolute; bottom: 5%; right: 20%; width: 35px; height: 60px; background: linear-gradient(180deg, #0a0a0a, transparent); border-radius: 10% 10% 20% 20% / 30% 30% 20% 20%; opacity: 0.4; animation: tc-shadow 6s ease-in-out infinite; }
@keyframes tc-captive { 0%,100% { transform: translateY(0) rotate(0); } 25% { transform: translateY(-2px) rotate(3deg); } 50% { transform: translateY(1px) rotate(-2deg); } 75% { transform: translateY(-1px) rotate(1deg); } }
@keyframes tc-chain { 0% { transform: rotate(15deg) translateY(0); } 100% { transform: rotate(5deg) translateY(2px); } }
@keyframes tc-torch { 0% { opacity: 0.7; box-shadow: 0 0 40px 20px rgba(176,128,64,0.2); } 50% { opacity: 1; box-shadow: 0 0 80px 40px rgba(176,128,64,0.4); } 100% { opacity: 0.8; box-shadow: 0 0 50px 25px rgba(176,128,64,0.3); } }
@keyframes tc-shadow { 0%,100% { opacity: 0.3; transform: scale(1); } 50% { opacity: 0.5; transform: scale(1.1); } }

/* somerset-blames */
.scn-somerset-blames {
  background:
    linear-gradient(180deg, #87ceeb 0%, #b0e0e6 40%, #f0e68c 100%),
    radial-gradient(ellipse at 50% 100%, #f0e68c 0%, transparent 70%);
}
.scn-somerset-blames .sky { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #87ceeb 0%, #b0e0e6 100%); animation: sb-sky 8s ease-in-out infinite alternate; }
.scn-somerset-blames .sun { position:absolute; top:5%; right:20%; width:60px; height:60px; background: radial-gradient(circle, #fff8dc 0%, #f0e68c 60%, transparent 80%); border-radius:50%; box-shadow: 0 0 80px 40px rgba(240,230,140,.5); animation: sb-sun 6s ease-in-out infinite; }
.scn-somerset-blames .hills { position:absolute; bottom:40%; left:0; right:0; height:20%; background: linear-gradient(180deg, #6b8e23 0%, #556b2f 100%); border-radius: 30% 50% 0 0 / 60% 80% 0 0; box-shadow: inset 0 -10px 20px rgba(0,0,0,.3); animation: sb-hills 12s ease-in-out infinite alternate; }
.scn-somerset-blames .ground { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, #8fbc8f 0%, #6b8e23 100%); }
.scn-somerset-blames .tent { position:absolute; bottom:35%; left:30%; width:80px; height:60px; background: linear-gradient(180deg, #deb887 0%, #d2b48c 100%); border-radius: 50% 50% 20% 20% / 80% 80% 20% 20%; transform-origin: bottom center; box-shadow: 0 4px 8px rgba(0,0,0,.3); animation: sb-tent 4s ease-in-out infinite; }
.scn-somerset-blames .banner { position:absolute; bottom:55%; left:35%; width:4px; height:40px; background: #8b4513; animation: sb-banner 3s ease-in-out infinite; }
.scn-somerset-blames .banner::after { content:''; position:absolute; top:0; left:0; width:20px; height:14px; background: #cd5c5c; border-radius: 0 50% 50% 0; animation: sb-flag 1s ease-in-out infinite; }
.scn-somerset-blames .captain { position:absolute; bottom:25%; left:45%; width:14px; height:28px; background: linear-gradient(180deg, #800020 0%, #4a0000 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: sb-captain 3s ease-in-out infinite; }
.scn-somerset-blames .somerset { position:absolute; bottom:25%; left:55%; width:16px; height:30px; background: linear-gradient(180deg, #2e8b57 0%, #006400 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: sb-somerset 4s ease-in-out infinite; }
@keyframes sb-sky { 0% { opacity:0.9 } 50% { opacity:1 } 100% { opacity:0.8 } }
@keyframes sb-sun { 0% { transform: scale(1); box-shadow: 0 0 80px 40px rgba(240,230,140,.5); } 50% { transform: scale(1.05); box-shadow: 0 0 100px 50px rgba(240,230,140,.6); } 100% { transform: scale(0.95); box-shadow: 0 0 60px 30px rgba(240,230,140,.4); } }
@keyframes sb-hills { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes sb-tent { 0% { transform: rotate(-1deg); } 50% { transform: rotate(1deg); } 100% { transform: rotate(-1deg); } }
@keyframes sb-banner { 0% { transform: rotate(-2deg); } 50% { transform: rotate(2deg); } 100% { transform: rotate(-2deg); } }
@keyframes sb-flag { 0%,100% { transform: scaleX(1); } 50% { transform: scaleX(1.2); } }
@keyframes sb-captain { 0% { transform: translateX(0) rotate(0); } 50% { transform: translateX(2px) rotate(2deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes sb-somerset { 0% { transform: translateX(0) rotate(0); } 50% { transform: translateX(-2px) rotate(-2deg); } 100% { transform: translateX(0) rotate(0); } }

/* lucy-rebukes-somerset */
.scn-lucy-rebukes-somerset {
  background:
    linear-gradient(180deg, #f0e68c 0%, #b0e0e6 50%, #87ceeb 100%),
    radial-gradient(ellipse at 20% 30%, #fff8dc 0%, transparent 60%);
}
.scn-lucy-rebukes-somerset .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #b0e0e6 0%, #87ceeb 100%); animation: lrs-sky 10s ease-in-out infinite alternate; }
.scn-lucy-rebukes-somerset .sun-hard { position:absolute; top:8%; left:70%; width:50px; height:50px; background: radial-gradient(circle, #fff8dc 0%, #f0e68c 70%, transparent 80%); border-radius:50%; box-shadow: 0 0 60px 30px rgba(240,230,140,.6); animation: lrs-sun 5s ease-in-out infinite; }
.scn-lucy-rebukes-somerset .ground { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, #8fbc8f 0%, #6b8e23 100%); }
.scn-lucy-rebukes-somerset .lucy { position:absolute; bottom:25%; left:30%; width:16px; height:32px; background: linear-gradient(180deg, #2e8b57 0%, #006400 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: lrs-lucy 3s ease-in-out infinite; }
.scn-lucy-rebukes-somerset .lucy::after { content:''; position:absolute; top:-14px; left:2px; width:8px; height:10px; background: #deb887; border-radius: 50%; animation: lrs-head-l 1s ease-in-out infinite; }
.scn-lucy-rebukes-somerset .somerset { position:absolute; bottom:25%; left:55%; width:18px; height:34px; background: linear-gradient(180deg, #800020 0%, #4a0000 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: lrs-somerset 4s ease-in-out infinite; }
.scn-lucy-rebukes-somerset .somerset::after { content:''; position:absolute; top:-15px; left:3px; width:10px; height:12px; background: #d2b48c; border-radius: 50%; animation: lrs-head-s 1.5s ease-in-out infinite; }
.scn-lucy-rebukes-somerset .shadow { position:absolute; bottom:20%; left:25%; width:120px; height:20px; background: rgba(0,0,0,.3); border-radius:50%; filter: blur(4px); animation: lrs-shadow 6s ease-in-out infinite; }
.scn-lucy-rebukes-somerset .dust { position:absolute; bottom:28%; left:45%; width:6px; height:6px; background: rgba(255,255,200,.4); border-radius:50%; filter: blur(3px); animation: lrs-dust 4s ease-in-out infinite; }
@keyframes lrs-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.7 } }
@keyframes lrs-sun { 0% { transform: scale(1); } 50% { transform: scale(1.03); } 100% { transform: scale(0.97); } }
@keyframes lrs-lucy { 0% { transform: translateX(0) rotate(0); } 50% { transform: translateX(1px) rotate(3deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes lrs-head-l { 0%,100% { transform: rotate(0); } 50% { transform: rotate(-5deg); } }
@keyframes lrs-somerset { 0% { transform: translateX(0) rotate(0); } 50% { transform: translateX(-2px) rotate(-4deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes lrs-head-s { 0%,100% { transform: rotate(0); } 50% { transform: rotate(5deg); } }
@keyframes lrs-shadow { 0% { transform: scaleX(1); opacity:0.5; } 50% { transform: scaleX(1.2); opacity:0.3; } 100% { transform: scaleX(0.8); opacity:0.6; } }
@keyframes lrs-dust { 0% { transform: translate(0,0) scale(1); opacity:0.6; } 50% { transform: translate(5px,-3px) scale(1.5); opacity:0.3; } 100% { transform: translate(0,0) scale(1); opacity:0.6; } }

/* stalemate */
.scn-stalemate {
  background:
    linear-gradient(180deg, #4682b4 0%, #87ceeb 50%, #b0e0e6 100%),
    radial-gradient(ellipse at 50% 70%, #5f9ea0 0%, transparent 60%);
}
.scn-stalemate .sky { position:absolute; inset:0 0 45% 0; background: linear-gradient(180deg, #4682b4 0%, #87ceeb 100%); animation: st-sky 12s ease-in-out infinite alternate; }
.scn-stalemate .sun-pale { position:absolute; top:10%; left:50%; width:40px; height:40px; background: radial-gradient(circle, #e0e8f0 0%, #b0c4de 60%, transparent 80%); border-radius:50%; box-shadow: 0 0 40px 20px rgba(176,196,222,.4); animation: st-sun 8s ease-in-out infinite; }
.scn-stalemate .ground { position:absolute; bottom:0; left:0; right:0; height:45%; background: linear-gradient(180deg, #6b8e23 0%, #556b2f 100%); }
.scn-stalemate .fallen { position:absolute; bottom:20%; left:35%; width:18px; height:10px; background: #5c4033; border-radius: 50% 50% 20% 20%; transform: rotate(-20deg); animation: st-fallen 10s ease-in-out infinite; }
.scn-stalemate .figure { position:absolute; bottom:28%; left:50%; width:16px; height:30px; background: linear-gradient(180deg, #2f4f4f 0%, #1a1a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: st-figure 5s ease-in-out infinite; }
.scn-stalemate .spear { position:absolute; bottom:45%; left:52%; width:3px; height:40px; background: #8b4513; transform: rotate(15deg); animation: st-spear 4s ease-in-out infinite; }
.scn-stalemate .flag { position:absolute; bottom:55%; left:50%; width:10px; height:6px; background: #800020; border-radius: 0 50% 0 50%; animation: st-flag 3s ease-in-out infinite; }
@keyframes st-sky { 0% { opacity:0.7 } 50% { opacity:1 } 100% { opacity:0.6 } }
@keyframes st-sun { 0% { transform: scale(1); } 50% { transform: scale(1.04); } 100% { transform: scale(0.96); } }
@keyframes st-fallen { 0%,100% { transform: rotate(-20deg) translateX(0); } 50% { transform: rotate(-25deg) translateX(2px); } }
@keyframes st-figure { 0% { transform: translateX(0) rotate(0); } 50% { transform: translateX(-1px) rotate(-2deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes st-spear { 0% { transform: rotate(15deg); } 50% { transform: rotate(20deg); } 100% { transform: rotate(15deg); } }
@keyframes st-flag { 0%,100% { transform: rotate(0) scaleX(1); } 50% { transform: rotate(10deg) scaleX(1.2); } }

/* father-son-talbot */
.scn-father-son-talbot {
  background:
    linear-gradient(180deg, #daa520 0%, #b8860b 40%, #8b4513 100%),
    radial-gradient(ellipse at 50% 30%, #f0e68c 0%, transparent 60%);
}
.scn-father-son-talbot .sky { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #f0e68c 0%, #daa520 100%); animation: fst-sky 10s ease-in-out infinite alternate; }
.scn-father-son-talbot .sun-gold { position:absolute; top:5%; left:40%; width:55px; height:55px; background: radial-gradient(circle, #fff8dc 0%, #daa520 70%, transparent 85%); border-radius:50%; box-shadow: 0 0 70px 35px rgba(218,165,32,.5); animation: fst-sun 7s ease-in-out infinite; }
.scn-father-son-talbot .ground { position:absolute; bottom:0; left:0; right:0; height:50%; background: linear-gradient(180deg, #8b4513 0%, #5c4033 100%); }
.scn-father-son-talbot .father { position:absolute; bottom:25%; left:35%; width:20px; height:36px; background: linear-gradient(180deg, #708090 0%, #2f4f4f 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: fst-father 4s ease-in-out infinite; }
.scn-father-son-talbot .father::after { content:''; position:absolute; top:-16px; left:3px; width:12px; height:14px; background: #d2b48c; border-radius: 50%; animation: fst-head-f 2s ease-in-out infinite; }
.scn-father-son-talbot .son { position:absolute; bottom:27%; left:55%; width:16px; height:30px; background: linear-gradient(180deg, #a0a0a0 0%, #505050 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: fst-son 3s ease-in-out infinite; }
.scn-father-son-talbot .son::after { content:''; position:absolute; top:-14px; left:2px; width:10px; height:12px; background: #deb887; border-radius: 50%; animation: fst-head-s 2.5s ease-in-out infinite; }
.scn-father-son-talbot .armor { position:absolute; bottom:33%; left:38%; width:8px; height:12px; background: #cd853f; border-radius: 20%; box-shadow: 0 2px 4px rgba(0,0,0,.5); animation: fst-armor 6s ease-in-out infinite; }
.scn-father-son-talbot .sword { position:absolute; bottom:45%; left:40%; width:3px; height:25px; background: #c0c0c0; transform: rotate(-30deg); animation: fst-sword 5s ease-in-out infinite; }
.scn-father-son-talbot .dust { position:absolute; bottom:30%; left:45%; width:4px; height:4px; background: rgba(255,255,200,.3); border-radius:50%; filter: blur(2px); animation: fst-dust 8s ease-in-out infinite; }
@keyframes fst-sky { 0% { opacity:0.85 } 50% { opacity:1 } 100% { opacity:0.75 } }
@keyframes fst-sun { 0% { transform: scale(1); } 50% { transform: scale(1.02); } 100% { transform: scale(0.98); } }
@keyframes fst-father { 0% { transform: translateX(0) rotate(0); } 50% { transform: translateX(-1px) rotate(-3deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes fst-head-f { 0%,100% { transform: rotate(0); } 50% { transform: rotate(-5deg); } }
@keyframes fst-son { 0% { transform: translateX(0) rotate(0); } 50% { transform: translateX(2px) rotate(4deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes fst-head-s { 0%,100% { transform: rotate(0); } 50% { transform: rotate(5deg); } }
@keyframes fst-armor { 0% { transform: scaleY(1); } 50% { transform: scaleY(1.1); } 100% { transform: scaleY(1); } }
@keyframes fst-sword { 0% { transform: rotate(-30deg); } 50% { transform: rotate(-25deg); } 100% { transform: rotate(-30deg); } }
@keyframes fst-dust { 0% { transform: translate(0,0) scale(1); opacity:0.4; } 50% { transform: translate(3px,-2px) scale(1.5); opacity:0.2; } 100% { transform: translate(0,0) scale(1); opacity:0.4; } }

.scn-joan-challenges-combat {
  background: linear-gradient(180deg, #1a1424 0%, #2a1f30 40%, #1e1628 100%), radial-gradient(ellipse at 50% 70%, #3a2e44 0%, transparent 60%);
}
.scn-joan-challenges-combat .arch-back {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(180deg, #2a1f30 0%, #1a1424 100%);
  border-radius: 50% 50% 0 0;
  animation: jc1-arch 12s ease-in-out infinite alternate;
}
.scn-joan-challenges-combat .arch-mid {
  position: absolute; bottom: 35%; left: 50%; width: 60%; height: 45%;
  transform: translateX(-50%);
  background: linear-gradient(135deg, #3a2e44 0%, #2a1f30 70%);
  border-radius: 50% 50% 0 0;
  box-shadow: inset 0 0 40px rgba(0,0,0,0.6);
}
.scn-joan-challenges-combat .figure-jc1 {
  position: absolute; bottom: 28%; left: 50%; width: 30px; height: 80px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #4a384a 0%, #2a1a2a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  animation: jc1-figure 4s ease-in-out infinite;
}
.scn-joan-challenges-combat .sword-jc1 {
  position: absolute; bottom: 60%; left: 50%; width: 4px; height: 50px;
  transform: translateX(-50%) rotate(-15deg);
  background: linear-gradient(180deg, #c0b090 0%, #8a7a5a 100%);
  border-radius: 2px;
  box-shadow: -2px 0 4px rgba(192,176,144,0.5);
  animation: jc1-sword 3s ease-in-out infinite alternate;
}
.scn-joan-challenges-combat .candle-jc1 {
  position: absolute; bottom: 30%; left: 35%; width: 8px; height: 20px;
  background: linear-gradient(180deg, #f0d080 0%, #c09040 100%);
  border-radius: 4px 4px 2px 2px;
  box-shadow: 0 0 10px 2px rgba(240,208,128,0.6);
  animation: jc1-candle 2s ease-in-out infinite alternate;
}
.scn-joan-challenges-combat .glow-jc1 {
  position: absolute; bottom: 30%; left: 35%; width: 50px; height: 50px;
  transform: translate(-35%, -25%);
  background: radial-gradient(circle, rgba(240,208,128,0.3) 0%, transparent 70%);
  animation: jc1-glow 2s ease-in-out infinite alternate;
}
.scn-joan-challenges-combat .dust-jc1 {
  position: absolute; top: 20%; left: 20%; width: 4px; height: 4px;
  background: rgba(200,180,160,0.3);
  border-radius: 50%;
  filter: blur(2px);
  animation: jc1-dust 15s linear infinite;
}
@keyframes jc1-arch { 0% { opacity: 0.9; transform: scaleY(1); } 50% { opacity: 1; transform: scaleY(1.02); } 100% { opacity: 0.85; transform: scaleY(0.98); } }
@keyframes jc1-figure { 0% { transform: translateX(-50%) translateY(0) rotate(-1deg); } 50% { transform: translateX(-50%) translateY(-2px) rotate(1deg); } 100% { transform: translateX(-50%) translateY(0) rotate(0); } }
@keyframes jc1-sword { 0% { transform: translateX(-50%) rotate(-18deg) scaleY(1); } 50% { transform: translateX(-50%) rotate(-12deg) scaleY(0.98); } 100% { transform: translateX(-50%) rotate(-15deg) scaleY(1); } }
@keyframes jc1-candle { 0% { height: 18px; box-shadow: 0 0 8px 2px rgba(240,208,128,0.5); } 50% { height: 22px; box-shadow: 0 0 14px 4px rgba(240,208,128,0.8); } 100% { height: 20px; box-shadow: 0 0 10px 2px rgba(240,208,128,0.6); } }
@keyframes jc1-glow { 0% { opacity: 0.6; transform: translate(-35%, -25%) scale(1); } 50% { opacity: 1; transform: translate(-35%, -25%) scale(1.1); } 100% { opacity: 0.7; transform: translate(-35%, -25%) scale(0.95); } }
@keyframes jc1-dust { 0% { transform: translate(0,0) scale(1); opacity: 0; } 10% { opacity: 1; } 90% { opacity: 1; } 100% { transform: translate(60px, -40px) scale(0.5); opacity: 0; } }

.scn-joan-chooses-sword {
  background: linear-gradient(180deg, #1a1424 0%, #2a1f30 60%, #1e1628 100%), radial-gradient(ellipse at 50% 80%, #3a2e44 0%, transparent 70%);
}
.scn-joan-chooses-sword .wall-jc2 {
  position: absolute; inset: 0 0 20% 0;
  background: linear-gradient(90deg, #2a1f30 0%, #3a2e44 50%, #2a1f30 100%);
}
.scn-joan-chooses-sword .dais-jc2 {
  position: absolute; bottom: 15%; left: 30%; width: 40%; height: 10%;
  background: linear-gradient(180deg, #4a384a 0%, #2a1a2a 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: inset 0 4px 8px rgba(0,0,0,0.5);
}
.scn-joan-chooses-sword .hand-jc2 {
  position: absolute; bottom: 25%; left: 50%; width: 14px; height: 20px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #5a4a5a 0%, #3a2a3a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  animation: jc2-hand 4s ease-in-out infinite;
}
.scn-joan-chooses-sword .sword-jc2 {
  position: absolute; bottom: 40%; left: 50%; width: 4px; height: 40px;
  transform: translateX(-50%) rotate(10deg);
  background: linear-gradient(180deg, #c0b090 0%, #8a7a5a 100%);
  border-radius: 2px;
  box-shadow: 2px 0 6px rgba(192,176,144,0.4);
  animation: jc2-sword 5s ease-in-out infinite alternate;
}
.scn-joan-chooses-sword .lightray-jc2 {
  position: absolute; top: 0; left: 40%; width: 20%; height: 60%;
  background: linear-gradient(180deg, rgba(240,220,180,0.15) 0%, transparent 100%);
  clip-path: polygon(30% 0, 70% 0, 80% 100%, 20% 100%);
  animation: jc2-ray 8s ease-in-out infinite alternate;
}
.scn-joan-chooses-sword .mote-jc2 {
  position: absolute; top: 10%; left: 20%; width: 3px; height: 3px;
  background: rgba(240,220,180,0.4);
  border-radius: 50%;
  filter: blur(1px);
  animation: jc2-mote 20s linear infinite;
}
.scn-joan-chooses-sword .mote-delay {
  left: 70%; top: 30%;
  animation-delay: -7s;
  animation-duration: 25s;
}
@keyframes jc2-hand { 0% { transform: translateX(-50%) rotate(0deg); } 50% { transform: translateX(-50%) rotate(3deg); } 100% { transform: translateX(-50%) rotate(-2deg); } }
@keyframes jc2-sword { 0% { transform: translateX(-50%) rotate(8deg) scaleY(1); } 50% { transform: translateX(-50%) rotate(12deg) scaleY(0.97); } 100% { transform: translateX(-50%) rotate(10deg) scaleY(1); } }
@keyframes jc2-ray { 0% { opacity: 0.5; transform: scaleX(0.9); } 50% { opacity: 1; transform: scaleX(1.1); } 100% { opacity: 0.6; transform: scaleX(0.95); } }
@keyframes jc2-mote { 0% { transform: translate(0,0) scale(1); opacity: 0; } 10% { opacity: 1; } 90% { opacity: 1; } 100% { transform: translate(50px, -80px) scale(0.3); opacity: 0; } }

.scn-joan-victory-amazement {
  background: linear-gradient(180deg, #1a1424 0%, #2a1f30 50%, #3a2e44 100%), radial-gradient(ellipse at 50% 60%, #5a3e4a 0%, transparent 70%);
}
.scn-joan-victory-amazement .bg-jv {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #2a1f30 0%, #1a1424 100%);
  animation: jv-bg 15s ease-in-out infinite alternate;
}
.scn-joan-victory-amazement .ray-jv {
  position: absolute; top: 0; left: 30%; width: 40%; height: 70%;
  background: linear-gradient(180deg, rgba(240,200,150,0.2) 0%, transparent 100%);
  clip-path: polygon(20% 0, 80% 0, 60% 100%, 40% 100%);
  animation: jv-ray 6s ease-in-out infinite alternate;
}
.scn-joan-victory-amazement .figure-jv {
  position: absolute; bottom: 25%; left: 50%; width: 28px; height: 70px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #4a384a 0%, #2a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: jv-figure 4s ease-in-out infinite;
}
.scn-joan-victory-amazement .halo-jv {
  position: absolute; top: 30%; left: 50%; width: 40px; height: 40px;
  transform: translateX(-50%);
  background: radial-gradient(circle, rgba(240,200,150,0.4) 0%, transparent 70%);
  border-radius: 50%;
  animation: jv-halo 3s ease-in-out infinite alternate;
}
.scn-joan-victory-amazement .ground-jv {
  position: absolute; bottom: 15%; left: 10%; width: 80%; height: 15%;
  background: linear-gradient(180deg, #2a1f30 0%, #1a1424 100%);
  border-radius: 30% 70% 0 0 / 50% 50% 0 0;
  box-shadow: inset 0 4px 10px rgba(0,0,0,0.4);
}
.scn-joan-victory-amazement .flower-jv {
  position: absolute; bottom: 18%; left: 30%; width: 6px; height: 6px;
  background: #8a6a4a;
  border-radius: 50%;
  box-shadow: 0 0 4px rgba(138,106,74,0.5);
  animation: jv-flower 5s ease-in-out infinite alternate;
}
.scn-joan-victory-amazement .flower-delay {
  left: 60%; bottom: 20%;
  animation-delay: -2s;
  background: #6a5a3a;
}
@keyframes jv-bg { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.75; } }
@keyframes jv-ray { 0% { opacity: 0.3; transform: scaleY(0.9); } 50% { opacity: 0.7; transform: scaleY(1.1); } 100% { opacity: 0.4; transform: scaleY(0.95); } }
@keyframes jv-figure { 0% { transform: translateX(-50%) translateY(0) rotate(-2deg); } 50% { transform: translateX(-50%) translateY(-3px) rotate(2deg); } 100% { transform: translateX(-50%) translateY(0) rotate(0); } }
@keyframes jv-halo { 0% { transform: translateX(-50%) scale(0.95); opacity: 0.5; } 50% { transform: translateX(-50%) scale(1.1); opacity: 1; } 100% { transform: translateX(-50%) scale(1); opacity: 0.7; } }
@keyframes jv-flower { 0% { transform: scale(1) rotate(0deg); } 50% { transform: scale(1.2) rotate(15deg); } 100% { transform: scale(0.9) rotate(-10deg); } }

.scn-joan-rejects-love {
  background: linear-gradient(180deg, #1a1424 0%, #2a1f30 60%, #1e1628 100%), radial-gradient(ellipse at 50% 70%, #3a2e44 0%, transparent 70%);
}
.scn-joan-rejects-love .col-jr {
  position: absolute; top: 5%; left: 45%; width: 10%; height: 90%;
  background: linear-gradient(180deg, #4a384a 0%, #2a1a2a 100%);
  border-radius: 4px;
  box-shadow: 2px 0 8px rgba(0,0,0,0.5);
}
.scn-joan-rejects-love .figure-jr {
  position: absolute; bottom: 25%; left: 30%; width: 28px; height: 75px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #5a4a5a 0%, #3a2a3a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: jr-figure 6s ease-in-out infinite;
}
.scn-joan-rejects-love .suitor-jr {
  position: absolute; bottom: 10%; left: 60%; width: 30px; height: 40px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #4a384a 0%, #2a1a2a 100%);
  border-radius: 50% 50% 20% 20% / 70% 70% 30% 30%;
  animation: jr-suitor 8s ease-in-out infinite alternate;
}
.scn-joan-rejects-love .lantern-jr {
  position: absolute; bottom: 35%; left: 40%; width: 10px; height: 16px;
  background: linear-gradient(180deg, #f0d080 0%, #c09040 100%);
  border-radius: 4px;
  box-shadow: 0 0 20px 6px rgba(240,208,128,0.4);
  animation: jr-lantern 3s ease-in-out infinite alternate;
}
.scn-joan-rejects-love .shadow-jr {
  position: absolute; bottom: 10%; left: 20%; width: 60%; height: 15%;
  background: linear-gradient(180deg, rgba(0,0,0,0.3) 0%, transparent 100%);
  border-radius: 50%;
  animation: jr-shadow 10s ease-in-out infinite alternate;
}
@keyframes jr-figure { 0% { transform: translateX(-50%) translateY(0) rotate(2deg); } 50% { transform: translateX(-50%) translateY(-2px) rotate(-2deg); } 100% { transform: translateX(-50%) translateY(0) rotate(0); } }
@keyframes jr-suitor { 0% { transform: translateX(-50%) scaleY(1) rotate(0deg); } 50% { transform: translateX(-50%) scaleY(0.95) rotate(5deg); } 100% { transform: translateX(-50%) scaleY(1) rotate(-3deg); } }
@keyframes jr-lantern { 0% { box-shadow: 0 0 15px 4px rgba(240,208,128,0.3); } 50% { box-shadow: 0 0 25px 8px rgba(240,208,128,0.6); } 100% { box-shadow: 0 0 18px 5px rgba(240,208,128,0.4); } }
@keyframes jr-shadow { 0% { opacity: 0.4; transform: scaleX(1); } 50% { opacity: 0.7; transform: scaleX(1.05); } 100% { opacity: 0.5; transform: scaleX(0.95); } }

.scn-gloucester-forces-entry {
  background: 
    linear-gradient(180deg, #1a1822 0%, #2a2530 30%, #1f1b28 100%),
    radial-gradient(ellipse at 20% 40%, #3a2a20 0%, transparent 70%);
  position: relative;
  overflow: hidden;
}
.scn-gloucester-forces-entry .gate-bars {
  position: absolute;
  bottom: 10%;
  left: 25%;
  right: 25%;
  height: 60%;
  background: linear-gradient(90deg, #2a2520 0%, #3a3228 30%, #2a2520 60%, #3a3228 100%);
  border-radius: 6px 6px 0 0;
  box-shadow: inset 0 0 20px rgba(0,0,0,0.7), 0 8px 20px rgba(0,0,0,0.6);
  clip-path: polygon(0% 0%, 20% 0%, 20% 100%, 30% 100%, 30% 0%, 50% 0%, 50% 100%, 70% 0%, 70% 100%, 80% 0%, 100% 0%, 100% 100%, 0% 100%);
  animation: gf-gatebrace 4s ease-in-out infinite;
}
.scn-gloucester-forces-entry .gate-shadow {
  position: absolute;
  bottom: 10%;
  left: 25%;
  right: 25%;
  height: 60%;
  background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,0.6) 100%);
  pointer-events: none;
  animation: gf-shadowpulse 3s ease-in-out infinite alternate;
}
.scn-gloucester-forces-entry .gate-light {
  position: absolute;
  bottom: 15%;
  left: 35%;
  width: 30%;
  height: 30%;
  background: radial-gradient(ellipse at 50% 100%, #c07040 0%, #8a4a2a 30%, transparent 70%);
  opacity: 0.6;
  animation: gf-torchflicker 0.5s ease-in-out infinite alternate;
}
.scn-gloucester-forces-entry .gloucester-silhouette {
  position: absolute;
  bottom: 22%;
  left: 10%;
  width: 12%;
  height: 40%;
  background: linear-gradient(180deg, #0f0d11 0%, #1a1620 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 20% 20%;
  transform: scaleX(-1);
  animation: gf-advance 6s ease-in-out infinite;
}
.scn-gloucester-forces-entry .men-silhouettes {
  position: absolute;
  bottom: 20%;
  right: 15%;
  width: 20%;
  height: 35%;
  background: linear-gradient(180deg, #1a1620 0%, #0f0d11 100%);
  border-radius: 30% 30% 10% 10% / 50% 50% 20% 20%;
  box-shadow: 0 0 30px rgba(0,0,0,0.5);
  animation: gf-men 8s ease-in-out infinite;
}
.scn-gloucester-forces-entry .torch-glow {
  position: absolute;
  bottom: 40%;
  left: 5%;
  width: 8%;
  height: 12%;
  background: radial-gradient(circle, #ffb060 0%, #c06020 50%, transparent 100%);
  border-radius: 50%;
  opacity: 0.5;
  animation: gf-torchpulse 1s ease-in-out infinite alternate;
}
.scn-gloucester-forces-entry .floor-stones {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 15%;
  background: linear-gradient(180deg, #2a2520 0%, #1f1b18 100%);
  border-top: 4px solid #3a3228;
  clip-path: polygon(0% 0%, 10% 0%, 10% 100%, 20% 100%, 20% 0%, 30% 0%, 30% 100%, 40% 100%, 40% 0%, 50% 0%, 50% 100%, 60% 100%, 60% 0%, 70% 0%, 70% 100%, 80% 100%, 80% 0%, 90% 0%, 90% 100%, 100% 100%, 100% 0%);
  animation: gf-stonepulse 10s ease-in-out infinite;
}
@keyframes gf-gatebrace {
  0%, 100% { transform: translateY(0) scaleY(1); }
  50% { transform: translateY(-2px) scaleY(1.02); }
}
@keyframes gf-shadowpulse {
  0% { opacity: 0.8; }
  100% { opacity: 1; }
}
@keyframes gf-torchflicker {
  0% { opacity: 0.5; transform: scale(1); }
  100% { opacity: 0.75; transform: scale(1.05); }
}
@keyframes gf-advance {
  0% { transform: scaleX(-1) translateX(0); }
  25% { transform: scaleX(-1) translateX(5px) translateY(-1px) rotate(2deg); }
  50% { transform: scaleX(-1) translateX(12px); }
  75% { transform: scaleX(-1) translateX(18px) translateY(1px) rotate(-1deg); }
  100% { transform: scaleX(-1) translateX(24px); }
}
@keyframes gf-men {
  0% { transform: translateX(0) scaleY(1); }
  50% { transform: translateX(-4px) scaleY(0.98); }
  100% { transform: translateX(0) scaleY(1); }
}
@keyframes gf-torchpulse {
  0% { opacity: 0.4; transform: scale(0.9); }
  100% { opacity: 0.7; transform: scale(1.1); }
}
@keyframes gf-stonepulse {
  0% { filter: brightness(1); }
  50% { filter: brightness(0.9); }
  100% { filter: brightness(1); }
}

.scn-gloucester-vs-woodvile {
  background: 
    linear-gradient(90deg, #1e1a22 0%, #2a2530 50%, #1e1a22 100%),
    radial-gradient(ellipse at 50% 60%, #2f2838 0%, transparent 70%);
  position: relative;
  overflow: hidden;
}
.scn-gloucester-vs-woodvile .wall-left {
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 15%;
  background: linear-gradient(90deg, #2a2528 0%, #1f1b20 100%);
  box-shadow: inset -10px 0 15px rgba(0,0,0,0.5);
}
.scn-gloucester-vs-woodvile .wall-right {
  position: absolute;
  right: 0;
  top: 0;
  bottom: 0;
  width: 15%;
  background: linear-gradient(90deg, #1f1b20 0%, #2a2528 100%);
  box-shadow: inset 10px 0 15px rgba(0,0,0,0.5);
}
.scn-gloucester-vs-woodvile .woodvile-figure {
  position: absolute;
  bottom: 25%;
  left: 30%;
  width: 10%;
  height: 40%;
  background: linear-gradient(180deg, #2a3038 0%, #1a1e22 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 30% 30%;
  transform: rotate(8deg);
  animation: gw-woodvile 5s ease-in-out infinite;
}
.scn-gloucester-vs-woodvile .gloucester-figure {
  position: absolute;
  bottom: 25%;
  right: 30%;
  width: 12%;
  height: 45%;
  background: linear-gradient(180deg, #2a2220 0%, #1a1615 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 30% 30%;
  transform: scaleX(-1) rotate(-5deg);
  animation: gw-gloucester 6s ease-in-out infinite;
}
.scn-gloucester-vs-woodvile .floor-shadow {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 25%;
  background: linear-gradient(180deg, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);
  clip-path: polygon(0% 0%, 100% 0%, 80% 100%, 20% 100%);
}
.scn-gloucester-vs-woodvile .torch-flame {
  position: absolute;
  bottom: 50%;
  left: 48%;
  width: 4%;
  height: 10%;
  background: radial-gradient(ellipse at 50% 100%, #ffb060 0%, #c06020 40%, transparent 80%);
  border-radius: 50%;
  animation: gw-flame 0.8s ease-in-out infinite alternate;
}
@keyframes gw-woodvile {
  0%, 100% { transform: rotate(8deg) translateY(0); }
  50% { transform: rotate(10deg) translateY(-3px); }
}
@keyframes gw-gloucester {
  0%, 100% { transform: scaleX(-1) rotate(-5deg) translateY(0); }
  50% { transform: scaleX(-1) rotate(-7deg) translateY(-4px); }
}
@keyframes gw-flame {
  0% { opacity: 0.6; transform: scaleY(0.9); }
  50% { opacity: 1; transform: scaleY(1.1); }
  100% { opacity: 0.8; transform: scaleY(1); }
}

.scn-winchester-appears {
  background: 
    linear-gradient(180deg, #1a1a22 0%, #28242e 50%, #1a1a22 100%),
    radial-gradient(ellipse at 50% 30%, #4a3a38 0%, transparent 70%);
  position: relative;
  overflow: hidden;
}
.scn-winchester-appears .door-arch {
  position: absolute;
  bottom: 10%;
  left: 30%;
  right: 30%;
  height: 50%;
  background: linear-gradient(90deg, #3a3228 0%, #4a3a30 40%, #3a3228 100%);
  border-radius: 50% 50% 0 0 / 80% 80% 0 0;
  box-shadow: inset 0 20px 40px rgba(0,0,0,0.6);
  clip-path: polygon(0% 0%, 20% 0%, 20% 100%, 80% 100%, 80% 0%, 100% 0%, 100% 100%, 0% 100%);
}
.scn-winchester-appears .doorway-open {
  position: absolute;
  bottom: 10%;
  left: 35%;
  right: 35%;
  height: 45%;
  background: #0d0b10;
  border-radius: 0 0 10% 10%;
  box-shadow: inset 0 0 30px rgba(0,0,0,0.8);
}
.scn-winchester-appears .winchester-shape {
  position: absolute;
  bottom: 20%;
  left: 40%;
  width: 20%;
  height: 50%;
  background: linear-gradient(180deg, #5e1a1d 0%, #3a1012 50%, #20100a 100%);
  border-radius: 30% 30% 10% 10% / 70% 70% 20% 20%;
  clip-path: polygon(0% 0%, 100% 0%, 80% 100%, 20% 100%);
  animation: wa-enter 8s ease-in-out infinite;
  box-shadow: 0 0 30px rgba(0,0,0,0.5);
}
.scn-winchester-appears .men-in-tawny {
  position: absolute;
  bottom: 18%;
  left: 20%;
  width: 60%;
  height: 35%;
  background: linear-gradient(90deg, transparent 0%, #2a2015 20%, #2a2015 80%, transparent 100%);
  clip-path: polygon(10% 0%, 90% 0%, 100% 100%, 0% 100%);
  opacity: 0.7;
  animation: wa-men 10s ease-in-out infinite;
}
.scn-winchester-appears .cross-processional {
  position: absolute;
  bottom: 40%;
  left: 44%;
  width: 12%;
  height: 8%;
  background: linear-gradient(180deg, #8a6a30 0%, #5a4220 100%);
  clip-path: polygon(0% 0%, 100% 0%, 50% 100%);
  transform: rotate(20deg);
  animation: wa-cross 6s ease-in-out infinite alternate;
}
.scn-winchester-appears .candle-glow {
  position: absolute;
  bottom: 35%;
  left: 46%;
  width: 8%;
  height: 10%;
  background: radial-gradient(ellipse at 50% 0%, #ffd060 0%, #c08030 40%, transparent 70%);
  animation: wa-candle 2s ease-in-out infinite alternate;
}
.scn-winchester-appears .stone-wall {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 20%;
  background: linear-gradient(180deg, #2a2a30 0%, #1f1f24 100%);
  clip-path: polygon(0% 0%, 100% 0%, 95% 100%, 5% 100%);
}
@keyframes wa-enter {
  0% { transform: translateX(-20px) scaleX(0.95); opacity: 0.7; }
  50% { transform: translateX(0) scaleX(1); opacity: 1; }
  100% { transform: translateX(10px) scaleX(1.02); opacity: 0.8; }
}
@keyframes wa-men {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
}
@keyframes wa-cross {
  0% { transform: rotate(20deg) translateY(0); }
  100% { transform: rotate(25deg) translateY(-3px); }
}
@keyframes wa-candle {
  0% { opacity: 0.5; transform: scaleY(0.8); }
  100% { opacity: 0.9; transform: scaleY(1.1); }
}

.scn-winchester-defies {
  background: 
    linear-gradient(90deg, #1a1820 0%, #24202a 50%, #1a1820 100%),
    radial-gradient(ellipse at 70% 50%, #2a2520 0%, transparent 80%);
  position: relative;
  overflow: hidden;
}
.scn-winchester-defies .bg-wall {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 30%;
  background: linear-gradient(180deg, #24202a 0%, #1a1820 100%);
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.4);
}
.scn-winchester-defies .gloucester-arm {
  position: absolute;
  bottom: 25%;
  left: 20%;
  width: 15%;
  height: 35%;
  background: linear-gradient(180deg, #2a2220 0%, #1a1615 100%);
  border-radius: 50% 50% 20% 20% / 60% 60% 30% 30%;
  transform: rotate(-10deg);
  animation: wd-arm 4s ease-in-out infinite;
}
.scn-winchester-defies .winchester-robe {
  position: absolute;
  bottom: 20%;
  right: 25%;
  width: 20%;
  height: 50%;
  background: linear-gradient(180deg, #702243 0%, #4a1628 50%, #2a0e18 100%);
  border-radius: 30% 30% 10% 10% / 60% 60% 20% 20%;
  transform: scaleX(-1);
  animation: wd-robe 5s ease-in-out infinite;
  box-shadow: 0 0 20px rgba(0,0,0,0.6);
}
.scn-winchester-defies .cain-shadow {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 30%;
  background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,0.6) 100%);
  clip-path: polygon(0% 0%, 100% 0%, 80% 100%, 20% 100%);
  animation: wd-shadow 8s ease-in-out infinite;
}
.scn-winchester-defies .floor-slab {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 10%;
  background: linear-gradient(180deg, #2a2520 0%, #1f1b18 100%);
  border-top: 3px solid #3a3228;
}
.scn-winchester-defies .torch-spark {
  position: absolute;
  bottom: 50%;
  left: 50%;
  width: 5%;
  height: 5%;
  background: radial-gradient(circle, #ffc060 0%, transparent 100%);
  animation: wd-spark 0.3s ease-in-out infinite alternate;
}
.scn-winchester-defies .dust-motes {
  position: absolute;
  top: 10%;
  left: 10%;
  width: 80%;
  height: 80%;
  background: radial-gradient(circle at 30% 40%, rgba(255,255,255,0.05) 0%, transparent 50%);
  animation: wd-dust 12s linear infinite;
}
@keyframes wd-arm {
  0%, 100% { transform: rotate(-10deg) translateY(0); }
  50% { transform: rotate(-15deg) translateY(-5px); }
}
@keyframes wd-robe {
  0%, 100% { transform: scaleX(-1) translateX(0); }
  50% { transform: scaleX(-1) translateX(-8px); }
}
@keyframes wd-shadow {
  0%, 100% { opacity: 0.6; }
  50% { opacity: 0.9; }
}
@keyframes wd-spark {
  0% { opacity: 0; transform: scale(0.5); }
  100% { opacity: 1; transform: scale(1.2); }
}
@keyframes wd-dust {
  0% { transform: translateY(0); }
  100% { transform: translateY(-100vh); }
}

.scn-salisbury-struck {
  background: linear-gradient(180deg, #f4d8a8 0%, #b8926a 40%, #5a3e2a 100%), radial-gradient(ellipse at 50% 0%, #ffeebb 30%, transparent 70%);
}
.scn-salisbury-struck .sky { position:absolute; inset:0 0 55% 0; background: linear-gradient(180deg, #d4b88a 0%, #9a7a52 100%); }
.scn-salisbury-struck .sun { position:absolute; top:8%; left:60%; width:60px; height:60px; background: radial-gradient(circle, #ffeebb 0%, #f4c26a 60%, transparent 80%); border-radius:50%; box-shadow: 0 0 50px 20px rgba(255,238,187,.5); animation: ss-sun 6s ease-in-out infinite alternate; }
.scn-salisbury-struck .ground { position:absolute; bottom:0; left:0; right:0; height:55%; background: linear-gradient(180deg, #6a4e32 0%, #3a2a1a 100%); border-radius: 30% 20% 0 0 / 50% 30% 0 0; }
.scn-salisbury-struck .fig-l { position:absolute; bottom:40%; left:30%; width:24px; height:50px; background: linear-gradient(180deg, #4a3a2a 0%, #1a120a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ss-fall-l 4s ease-in-out infinite; }
.scn-salisbury-struck .fig-r { position:absolute; bottom:42%; left:60%; width:24px; height:45px; background: linear-gradient(180deg, #4a3a2a 0%, #1a120a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ss-fall-r 4.5s ease-in-out infinite 0.5s; }
.scn-salisbury-struck .spear { position:absolute; bottom:38%; left:45%; width:4px; height:30px; background: linear-gradient(180deg, #7a5a3a 0%, #4a2a1a 100%); border-radius: 2px; transform: rotate(25deg); animation: ss-spear 3s ease-in-out infinite; }
@keyframes ss-sun { 0% { transform: scale(1); opacity: .9; } 50% { transform: scale(1.08); opacity: 1; } 100% { transform: scale(.95); opacity: .8; } }
@keyframes ss-fall-l { 0% { transform: translateY(0) rotate(0deg); } 25% { transform: translateY(6px) rotate(-8deg); } 50% { transform: translateY(12px) rotate(-15deg); } 75% { transform: translateY(18px) rotate(-20deg); } 100% { transform: translateY(24px) rotate(-12deg); } }
@keyframes ss-fall-r { 0% { transform: translateY(0) rotate(0deg); } 25% { transform: translateY(5px) rotate(10deg); } 50% { transform: translateY(10px) rotate(20deg); } 75% { transform: translateY(15px) rotate(15deg); } 100% { transform: translateY(20px) rotate(5deg); } }
@keyframes ss-spear { 0% { transform: rotate(25deg) translateY(0); } 50% { transform: rotate(30deg) translateY(3px); } 100% { transform: rotate(22deg) translateY(0); } }

.scn-salisbury-dying {
  background: linear-gradient(180deg, #ffeebb 0%, #d4b070 50%, #8a6a42 100%), radial-gradient(ellipse at 50% 30%, #ffddaa 20%, transparent 80%);
}
.scn-salisbury-dying .bg-deep { position:absolute; inset:0; background: linear-gradient(135deg, #c8a87a 0%, #8a6a42 100%); opacity:0.6; }
.scn-salisbury-dying .head { position:absolute; bottom:30%; left:35%; width:60px; height:70px; background: linear-gradient(180deg, #b8926a 0%, #7a5a3a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform: rotate(-20deg); box-shadow: inset 0 -10px 20px rgba(0,0,0,.4); animation: sd-head 8s ease-in-out infinite; }
.scn-salisbury-dying .eye { position:absolute; bottom:42%; left:45%; width:14px; height:10px; background: radial-gradient(circle, #ffeebb 0%, #d4a050 70%); border-radius: 50%; box-shadow: 0 0 12px 4px #d4a050; animation: sd-eye 3s ease-in-out infinite alternate; }
.scn-salisbury-dying .ground-pillow { position:absolute; bottom:20%; left:30%; width:80px; height:30px; background: linear-gradient(180deg, #5a3e2a 0%, #3a2a1a 100%); border-radius: 50% 50% 30% 30% / 80% 80% 20% 20%; box-shadow: 0 4px 10px rgba(0,0,0,.6); }
.scn-salisbury-dying .ray { position:absolute; top:5%; left:45%; width:12px; height:80px; background: linear-gradient(0deg, transparent 0%, rgba(255,238,187,.6) 50%, rgba(255,238,187,.1) 100%); transform: rotate(30deg); filter: blur(3px); animation: sd-ray 10s ease-in-out infinite; }
@keyframes sd-head { 0% { transform: rotate(-20deg) translateY(0); } 50% { transform: rotate(-18deg) translateY(2px); } 100% { transform: rotate(-22deg) translateY(0); } }
@keyframes sd-eye { 0% { box-shadow: 0 0 8px 2px #d4a050; opacity:.8; } 50% { box-shadow: 0 0 20px 8px #ffddaa; opacity:1; } 100% { box-shadow: 0 0 10px 4px #d4a050; opacity:.85; } }
@keyframes sd-ray { 0% { transform: rotate(30deg) scaleY(1); opacity:.6; } 50% { transform: rotate(35deg) scaleY(1.2); opacity:.9; } 100% { transform: rotate(28deg) scaleY(.9); opacity:.5; } }

.scn-new-threat {
  background: linear-gradient(180deg, #1a1a3a 0%, #2a2a4a 40%, #3a2a2a 100%), radial-gradient(ellipse at 50% 0%, #4a3a5a 20%, transparent 70%);
}
.scn-new-threat .storm-sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #0a0a1a 0%, #1a1a3a 60%, #2a2a4a 100%); animation: nt-sky 12s ease-in-out infinite; }
.scn-new-threat .lightning { position:absolute; top:10%; left:40%; width:3px; height:50px; background: #fff; box-shadow: 0 0 20px 8px #d0d0ff; transform: rotate(20deg); animation: nt-lightning 4s ease-in-out infinite; }
.scn-new-threat .messenger { position:absolute; bottom:25%; left:20%; width:22px; height:48px; background: linear-gradient(180deg, #2a1a1a 0%, #0a0a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: nt-run 2s ease-in-out infinite; }
.scn-new-threat .ground-mud { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, #3a2a1a 0%, #1a120a 100%); border-radius: 40% 60% 0 0 / 80% 40% 0 0; }
.scn-new-threat .cloud-left { position:absolute; top:8%; left:10%; width:120px; height:30px; background: linear-gradient(180deg, rgba(255,255,255,.3) 0%, rgba(0,0,0,.2) 100%); border-radius: 50%; filter: blur(6px); animation: nt-drift-l 35s linear infinite; }
.scn-new-threat .cloud-right { position:absolute; top:5%; right:5%; width:100px; height:25px; background: linear-gradient(180deg, rgba(255,255,255,.25) 0%, rgba(0,0,0,.15) 100%); border-radius: 50%; filter: blur(5px); animation: nt-drift-r 40s linear infinite; }
@keyframes nt-sky { 0% { opacity:.7; } 50% { opacity:1; } 100% { opacity:.6; } }
@keyframes nt-lightning { 0% { opacity:0; transform: rotate(20deg) scaleY(1); } 10% { opacity:1; } 20% { opacity:0; } 30% { opacity:1; } 40% { opacity:0; } 100% { opacity:0; } }
@keyframes nt-run { 0% { transform: translateX(0) translateY(0) rotate(0deg); } 25% { transform: translateX(10px) translateY(-2px) rotate(3deg); } 50% { transform: translateX(20px) translateY(0) rotate(0deg); } 75% { transform: translateX(30px) translateY(-2px) rotate(-3deg); } 100% { transform: translateX(40px) translateY(0) rotate(0deg); } }
@keyframes nt-drift-l { 0% { transform: translateX(0); } 100% { transform: translateX(150vw); } }
@keyframes nt-drift-r { 0% { transform: translateX(0); } 100% { transform: translateX(-120vw); } }

.scn-talbot-vs-joan {
  background: linear-gradient(180deg, #d4b88a 0%, #b8926a 50%, #6a4e32 100%), radial-gradient(ellipse at 50% 80%, #c8a87a 20%, transparent 70%);
}
.scn-talbot-vs-joan .battle-sky { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #e0c89a 0%, #c8a87a 100%); }
.scn-talbot-vs-joan .ground-battle { position:absolute; bottom:0; left:0; right:0; height:50%; background: linear-gradient(180deg, #6a4e32 0%, #3a2a1a 100%); border-radius: 20% 30% 0 0 / 40% 50% 0 0; }
.scn-talbot-vs-joan .talbot { position:absolute; bottom:35%; left:25%; width:28px; height:55px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: tj-lunge 2.5s ease-in-out infinite; }
.scn-talbot-vs-joan .joan { position:absolute; bottom:35%; left:60%; width:24px; height:52px; background: linear-gradient(180deg, #2a1a3a 0%, #1a0a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: tj-lunge 2.5s ease-in-out infinite -1.25s; }
.scn-talbot-vs-joan .spark { position:absolute; bottom:48%; left:44%; width:12px; height:12px; background: radial-gradient(circle, #fff 0%, #ffddaa 60%, transparent 100%); border-radius:50%; box-shadow: 0 0 24px 8px #ffddaa; animation: tj-spark 0.8s ease-in-out infinite; }
.scn-talbot-vs-joan .dust-a { position:absolute; bottom:32%; left:35%; width:40px; height:20px; background: rgba(180,140,100,.4); border-radius: 50%; filter: blur(4px); animation: tj-dust 3s ease-in-out infinite; }
.scn-talbot-vs-joan .dust-b { position:absolute; bottom:30%; left:55%; width:30px; height:15px; background: rgba(180,140,100,.3); border-radius: 50%; filter: blur(3px); animation: tj-dust 3.5s ease-in-out infinite -1s; }
@keyframes tj-lunge { 0% { transform: translateX(0) translateY(0) rotate(-5deg); } 25% { transform: translateX(8px) translateY(-3px) rotate(5deg); } 50% { transform: translateX(16px) translateY(0) rotate(-3deg); } 75% { transform: translateX(8px) translateY(-2px) rotate(3deg); } 100% { transform: translateX(0) translateY(0) rotate(-5deg); } }
@keyframes tj-spark { 0% { opacity:.3; transform: scale(.5); } 50% { opacity:1; transform: scale(1.8); } 100% { opacity:.2; transform: scale(.6); } }
@keyframes tj-dust { 0% { opacity:.4; transform: translateY(0) scale(1); } 50% { opacity:.8; transform: translateY(-6px) scale(1.3); } 100% { opacity:.3; transform: translateY(0) scale(.9); } }

/* scene: lucy-arrives (dark + sunlit) */
.scn-lucy-arrives { background: linear-gradient(180deg, #f9d976 0%, #b88444 30%, #3a2a1a 100%), radial-gradient(ellipse at 50% 30%, #fff4c0 0%, transparent 60%); }
.scn-lucy-arrives .sky-la { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #d4a23a 0%, #b88444 100%); animation: la-sky 12s ease-in-out infinite alternate; }
.scn-lucy-arrives .sun-la { position:absolute; top:8%; left:70%; width:60px; height:60px; background: radial-gradient(circle, #fff8d0 0%, #f9d976 60%, transparent 100%); border-radius:50%; box-shadow: 0 0 80px 30px rgba(249,217,118,.5); animation: la-sun 18s ease-in-out infinite; }
.scn-lucy-arrives .ground-la { position:absolute; bottom:0; left:0; right:0; height:50%; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 30% 70% 0 0 / 50% 50% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,.6); }
.scn-lucy-arrives .figure-lucy-la { position:absolute; bottom:30%; left:35%; width:30px; height:70px; background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: la-walk 5s ease-in-out infinite; }
.scn-lucy-arrives .figure-herald-la { position:absolute; bottom:30%; left:55%; width:26px; height:65px; background: linear-gradient(180deg, #2a2a2a 0%, #1a1a1a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: la-walk 5s ease-in-out infinite 0.5s; }
.scn-lucy-arrives .flag-la { position:absolute; bottom:55%; left:58%; width:4px; height:60px; background: linear-gradient(180deg, #5e1a1d 0%, #3a0c0e 100%); border-radius: 2px; transform-origin: bottom center; animation: la-flag-wave 4s ease-in-out infinite; }
.scn-lucy-arrives .flag-la::after { content:''; position:absolute; top:0; left:4px; width:30px; height:20px; background: linear-gradient(135deg, #8c3a2a 0%, #5e1a1d 100%); border-radius: 0 50% 50% 0; transform-origin: left center; animation: la-flag-flap 4s ease-in-out infinite; }
.scn-lucy-arrives .shadow-la { position:absolute; bottom:30%; left:30%; width:60px; height:10px; background: rgba(0,0,0,.4); border-radius:50%; filter:blur(6px); animation: la-shadow 5s ease-in-out infinite; }
@keyframes la-sky { 0% { opacity:0.6; } 50% { opacity:1; } 100% { opacity:0.7; } }
@keyframes la-sun { 0% { transform: scale(1) translateY(0); } 50% { transform: scale(1.05) translateY(-5px); } 100% { transform: scale(1) translateY(0); } }
@keyframes la-walk { 0% { transform: translateX(0) rotate(-2deg); } 25% { transform: translateX(6px) rotate(1deg); } 50% { transform: translateX(12px) rotate(-2deg); } 75% { transform: translateX(18px) rotate(1deg); } 100% { transform: translateX(24px) rotate(0deg); } }
@keyframes la-flag-wave { 0%,100% { transform: rotate(-3deg); } 50% { transform: rotate(3deg); } }
@keyframes la-flag-flap { 0%,100% { transform: scaleX(1); } 50% { transform: scaleX(1.2) rotate(5deg); } }
@keyframes la-shadow { 0%,100% { transform: translateX(0) scaleX(1); } 50% { transform: translateX(10px) scaleX(0.8); } }

/* scene: talbots-body (dark + sunlit) */
.scn-talbots-body { background: linear-gradient(180deg, #d4a23a 0%, #8c6a2a 40%, #3a2a1a 100%), radial-gradient(ellipse at 50% 40%, #f9d976 0%, transparent 50%); }
.scn-talbots-body .sky-tb { position:absolute; inset:0 0 45% 0; background: linear-gradient(180deg, #c4a040 0%, #8c6a2a 100%); animation: tb-sky 10s ease-in-out infinite alternate; }
.scn-talbots-body .ground-tb { position:absolute; bottom:0; left:0; right:0; height:55%; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 20% 80% 0 0 / 40% 60% 0 0; box-shadow: inset 0 10px 30px rgba(0,0,0,.7); }
.scn-talbots-body .body-talbot-tb { position:absolute; bottom:30%; left:45%; width:40px; height:60px; background: linear-gradient(180deg, #3a2a1a 0%, #1a0a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%; transform: rotate(-10deg); box-shadow: 0 4px 8px rgba(0,0,0,.5); animation: tb-body 15s ease-in-out infinite; }
.scn-talbots-body .flies-tb { position:absolute; bottom:55%; left:40%; width:100px; height:50px; background: transparent; }
.scn-talbots-body .flies-tb::before, .scn-talbots-body .flies-tb::after { content:''; position:absolute; width:4px; height:4px; background: #1a1a1a; border-radius:50%; animation: tb-fly 2s ease-in-out infinite; }
.scn-talbots-body .flies-tb::before { top:20%; left:20%; animation-delay:0s; }
.scn-talbots-body .flies-tb::after { top:60%; left:60%; animation-delay:0.5s; }
.scn-talbots-body .sword-tb { position:absolute; bottom:35%; left:52%; width:50px; height:6px; background: linear-gradient(90deg, #4a4a4a 0%, #6a6a6a 100%); border-radius: 2px; transform: rotate(25deg); transform-origin: left center; box-shadow: 0 0 4px rgba(255,255,200,0.3); }
.scn-talbots-body .stain-tb { position:absolute; bottom:30%; left:40%; width:30px; height:20px; background: radial-gradient(ellipse, #5e1a1d 0%, transparent 70%); border-radius:50%; filter:blur(4px); animation: tb-stain 8s ease-in-out infinite; }
@keyframes tb-sky { 0% { opacity:0.5; } 50% { opacity:0.9; } 100% { opacity:0.6; } }
@keyframes tb-body { 0%,100% { transform: rotate(-10deg) translateY(0); } 25% { transform: rotate(-8deg) translateY(-2px); } 50% { transform: rotate(-12deg) translateY(0); } 75% { transform: rotate(-6deg) translateY(-1px); } }
@keyframes tb-fly { 0% { transform: translate(0,0) scale(1); } 25% { transform: translate(15px,-10px) scale(1.2); } 50% { transform: translate(-5px,5px) scale(0.8); } 75% { transform: translate(20px,0) scale(1); } 100% { transform: translate(0,0) scale(1); } }
@keyframes tb-stain { 0%,100% { opacity:0.3; transform: scale(1); } 50% { opacity:0.7; transform: scale(1.5); } }

/* scene: peace-proposal (calm + bright-interior) */
.scn-peace-proposal { background: linear-gradient(180deg, #f5e6c8 0%, #dcc4a0 50%, #b8a080 100%), radial-gradient(ellipse at 50% 20%, #fff8e0 0%, transparent 70%); }
.scn-peace-proposal .wall-pp { position:absolute; inset:0 0 20% 0; background: linear-gradient(180deg, #e0d0b0 0%, #c8b898 100%); box-shadow: inset 0 0 40px rgba(0,0,0,0.1); }
.scn-peace-proposal .throne-pp { position:absolute; bottom:25%; left:50%; width:80px; height:90px; transform: translateX(-50%); background: linear-gradient(180deg, #c8a87a 0%, #a08060 100%); border-radius: 10% 10% 50% 50% / 20% 20% 60% 60%; box-shadow: 0 8px 16px rgba(0,0,0,0.3); animation: pp-throne 8s ease-in-out infinite; }
.scn-peace-proposal .king-pp { position:absolute; bottom:30%; left:50%; width:28px; height:50px; transform: translateX(-50%); background: linear-gradient(180deg, #5e1a1d 0%, #3a0c0e 100%); border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%; animation: pp-king 6s ease-in-out infinite; }
.scn-peace-proposal .advisor1-pp { position:absolute; bottom:28%; left:30%; width:24px; height:46px; background: linear-gradient(180deg, #2a4a3a 0%, #1a2a1a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%; transform: rotate(5deg); animation: pp-advisor 8s ease-in-out infinite 0.5s; }
.scn-peace-proposal .advisor2-pp { position:absolute; bottom:28%; left:65%; width:24px; height:46px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%; transform: rotate(-5deg); animation: pp-advisor 8s ease-in-out infinite 1.5s; }
.scn-peace-proposal .letter-pp { position:absolute; bottom:40%; left:48%; width:30px; height:20px; background: linear-gradient(135deg, #f5e6c8 0%, #dcc4a0 100%); border:1px solid #a08060; transform: rotate(10deg); box-shadow: 2px 2px 4px rgba(0,0,0,0.2); animation: pp-letter 12s ease-in-out infinite; }
.scn-peace-proposal .table-pp { position:absolute; bottom:15%; left:50%; width:100px; height:10px; transform: translateX(-50%); background: linear-gradient(180deg, #a08060 0%, #806040 100%); border-radius: 4px; box-shadow: 0 4px 8px rgba(0,0,0,0.3); }
@keyframes pp-throne { 0%,100% { transform: translateX(-50%) translateY(0); } 50% { transform: translateX(-50%) translateY(-3px); } }
@keyframes pp-king { 0%,100% { transform: translateX(-50%) rotate(0deg); } 50% { transform: translateX(-50%) rotate(2deg) translateY(-1px); } }
@keyframes pp-advisor { 0%,100% { transform: rotate(5deg) translateY(0); } 50% { transform: rotate(3deg) translateY(-2px); } }
@keyframes pp-letter { 0%,100% { transform: rotate(10deg) scale(1); } 50% { transform: rotate(15deg) scale(1.05); } }

/* scene: marriage-proposal (calm + bright-interior) */
.scn-marriage-proposal { background: linear-gradient(180deg, #fce8d0 0%, #e8d0b0 50%, #d0b890 100%), radial-gradient(ellipse at 50% 30%, #fff4e8 0%, transparent 60%); }
.scn-marriage-proposal .wall-mp { position:absolute; inset:0 0 20% 0; background: linear-gradient(180deg, #f0dcc8 0%, #dcc4a0 100%); box-shadow: inset 0 0 30px rgba(0,0,0,0.08); }
.scn-marriage-proposal .window-mp { position:absolute; top:15%; left:15%; width:60px; height:80px; background: linear-gradient(180deg, #c8e0f0 0%, #a0c8e0 100%); border:4px solid #b09878; border-radius: 4px; box-shadow: inset 0 0 20px rgba(255,255,255,0.3), 0 4px 8px rgba(0,0,0,0.2); animation: mp-window 15s ease-in-out infinite; }
.scn-marriage-proposal .portrait-mp { position:absolute; top:25%; left:25%; width:40px; height:50px; background: linear-gradient(180deg, #d0a080 0%, #b08060 100%); border:2px solid #a08060; border-radius: 4px; transform: rotate(-2deg); box-shadow: 2px 2px 6px rgba(0,0,0,0.2); animation: mp-portrait 10s ease-in-out infinite; }
.scn-marriage-proposal .king-mp { position:absolute; bottom:30%; left:45%; width:28px; height:50px; background: linear-gradient(180deg, #8c3a2a 0%, #5e1a1d 100%); border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%; transform: rotate(3deg); animation: mp-king 6s ease-in-out infinite; }
.scn-marriage-proposal .letter-mp { position:absolute; bottom:40%; left:55%; width:25px; height:15px; background: linear-gradient(135deg, #fce8d0 0%, #e8d0b0 100%); border:1px solid #b09878; transform: rotate(-5deg); box-shadow: 1px 1px 3px rgba(0,0,0,0.15); animation: mp-letter 8s ease-in-out infinite; }
.scn-marriage-proposal .table-mp { position:absolute; bottom:15%; left:50%; width:80px; height:8px; transform: translateX(-50%); background: linear-gradient(180deg, #b09878 0%, #906848 100%); border-radius: 4px; box-shadow: 0 4px 8px rgba(0,0,0,0.25); }
@keyframes mp-window { 0%,100% { opacity:0.9; } 50% { opacity:1; transform: scale(1.01); } }
@keyframes mp-portrait { 0%,100% { transform: rotate(-2deg) translateY(0); } 50% { transform: rotate(0deg) translateY(-2px); } }
@keyframes mp-king { 0%,100% { transform: rotate(3deg) translateY(0); } 50% { transform: rotate(0deg) translateY(-1px); } }
@keyframes mp-letter { 0%,100% { transform: rotate(-5deg) scale(1); } 50% { transform: rotate(-8deg) scale(1.1); } }

.scn-plucking-red-rose {
  background: linear-gradient(180deg, #d4a56e 0%, #f5dbb0 40%, #fff5e0 100%),
              radial-gradient(ellipse at 60% 20%, #ffd080 0%, transparent 50%);
}
.scn-plucking-red-rose .bg-sun {
  position:absolute; inset:0; background: radial-gradient(ellipse at 70% 30%, #fff8e0 0%, transparent 60%);
  animation: prr-sun 4s ease-in-out infinite alternate;
}
.scn-plucking-red-rose .stem {
  position:absolute; bottom:20%; left:55%; width:4px; height:140px; top:20%; background: linear-gradient(180deg, #3a6a3a, #1a3a1a); border-radius:0 0 2px 2px; transform-origin:bottom; animation: prr-stem 6s ease-in-out infinite;
}
.scn-plucking-red-rose .thorn1 {
  position:absolute; bottom:60%; left:53%; width:12px; height:4px; background: #2a4a2a; border-radius:50% 0 0 50%; transform: rotate(30deg); animation: prr-thorn 3s ease-in-out infinite alternate;
}
.scn-plucking-red-rose .thorn2 {
  position:absolute; bottom:70%; left:57%; width:12px; height:4px; background: #2a4a2a; border-radius:0 50% 50% 0; transform: rotate(-20deg); animation: prr-thorn 3s ease-in-out infinite alternate-reverse;
}
.scn-plucking-red-rose .rose {
  position:absolute; top:18%; left:50%; width:40px; height:40px; transform:translateX(-50%); background: radial-gradient(circle at 40% 40%, #c8553d 0%, #a04030 60%, #6a2018 100%); border-radius:50% 50% 50% 50% / 60% 60% 40% 40%; box-shadow: 0 0 20px 6px #d06040, inset 0 -6px 12px #4a1010; animation: prr-rose 4s ease-in-out infinite;
}
.scn-plucking-red-rose .hand {
  position:absolute; bottom:28%; left:45%; width:30px; height:50px; background: linear-gradient(180deg, #eac8a0 0%, #d4a56e 100%); border-radius:40% 40% 50% 50% / 60% 60% 40% 40%; transform-origin:bottom; animation: prr-hand 2.5s ease-in-out infinite;
}
.scn-plucking-red-rose .glint {
  position:absolute; top:15%; left:48%; width:8px; height:8px; background: #fff; border-radius:50%; box-shadow:0 0 18px 6px #fff; opacity:0.3; animation: prr-glint 3s ease-in-out infinite alternate;
}
@keyframes prr-sun { 0% { opacity:0.6 } 50% { opacity:0.9 } 100% { opacity:0.7 } }
@keyframes prr-stem { 0%,100% { transform:rotate(-2deg) } 50% { transform:rotate(2deg) scaleY(0.98) } }
@keyframes prr-thorn { 0% { transform:rotate(25deg) } 100% { transform:rotate(35deg) } }
@keyframes prr-rose { 0% { transform:translateX(-50%) rotate(0deg) scale(1) } 50% { transform:translateX(-50%) rotate(8deg) scale(1.05) } 100% { transform:translateX(-50%) rotate(0deg) scale(1) } }
@keyframes prr-hand { 0% { transform:translateX(0) rotate(-3deg) } 30% { transform:translateX(4px) rotate(2deg) } 60% { transform:translateX(-2px) rotate(-1deg) } 100% { transform:translateX(0) rotate(-3deg) } }
@keyframes prr-glint { 0% { opacity:0.2; transform:scale(0.8) } 100% { opacity:0.5; transform:scale(1.2) } }

.scn-roses-counted {
  background: linear-gradient(180deg, #b8a080 0%, #d4c0a0 60%, #eee8d0 100%),
              radial-gradient(ellipse at 50% 80%, #d4c0a0 0%, transparent 70%);
}
.scn-roses-counted .surface {
  position:absolute; bottom:0; left:0; right:0; top:65%; background: linear-gradient(180deg, #a08868, #c0a880); border-radius:20% 20% 0 0 / 10% 10% 0 0; animation: rcnt-surf 8s ease-in-out infinite alternate;
}
.scn-roses-counted .hand-l {
  position:absolute; bottom:40%; left:20%; width:28px; height:50px; background: linear-gradient(180deg, #e0c8a8, #c0a080); border-radius:40% 40% 50% 50% / 60% 60% 40% 40%; transform-origin:bottom; animation: rcnt-hand 6s ease-in-out infinite;
}
.scn-roses-counted .hand-r {
  position:absolute; bottom:40%; right:20%; width:28px; height:50px; background: linear-gradient(180deg, #e0c8a8, #c0a080); border-radius:40% 40% 50% 50% / 60% 60% 40% 40%; transform-origin:bottom; animation: rcnt-hand 6s ease-in-out infinite reverse;
}
.scn-roses-counted .rose-l {
  position:absolute; bottom:50%; left:24%; width:20px; height:20px; background: radial-gradient(circle at 40% 40%, #c8553d 0%, #a04030 70%); border-radius:50%; box-shadow:0 0 12px 4px #b04030; animation: rcnt-rose 4s ease-in-out infinite;
}
.scn-roses-counted .rose-r {
  position:absolute; bottom:50%; right:24%; width:20px; height:20px; background: radial-gradient(circle at 40% 40%, #c8553d 0%, #a04030 70%); border-radius:50%; box-shadow:0 0 12px 4px #b04030; animation: rcnt-rose 4s ease-in-out infinite 2s;
}
.scn-roses-counted .count-glow {
  position:absolute; bottom:55%; left:50%; width:30px; height:30px; transform:translateX(-50%); background: radial-gradient(circle, #ffe8c0 0%, transparent 60%); animation: rcnt-glow 5s ease-in-out infinite alternate;
}
@keyframes rcnt-surf { 0% { transform:translateY(0) } 50% { transform:translateY(2px) } 100% { transform:translateY(0) } }
@keyframes rcnt-hand { 0% { transform:rotate(-5deg) translateY(0) } 50% { transform:rotate(5deg) translateY(-4px) } 100% { transform:rotate(-5deg) translateY(0) } }
@keyframes rcnt-rose { 0% { transform:scale(1) rotate(0deg); opacity:0.8 } 50% { transform:scale(1.1) rotate(10deg); opacity:1 } 100% { transform:scale(1) rotate(0deg); opacity:0.8 } }
@keyframes rcnt-glow { 0% { opacity:0.3; transform:translateX(-50%) scale(0.8) } 100% { opacity:0.6; transform:translateX(-50%) scale(1.2) } }

.scn-more-white-roses {
  background: linear-gradient(180deg, #e0dcc8 0%, #f5f0e0 60%, #fffaf0 100%),
              radial-gradient(ellipse at 40% 30%, #fff5e0 0%, transparent 60%);
}
.scn-more-white-roses .bg-soft {
  position:absolute; inset:0; background: radial-gradient(ellipse at 50% 100%, #e8e0d0 0%, transparent 60%); animation: mwr-soft 10s ease-in-out infinite alternate;
}
.scn-more-white-roses .stem-white {
  position:absolute; bottom:30%; left:50%; width:3px; height:90px; top:35%; background: linear-gradient(180deg, #5a7a5a, #3a5a3a); border-radius:0 0 2px 2px; transform-origin:bottom; animation: mwr-stem 8s ease-in-out infinite;
}
.scn-more-white-roses .bloom-white {
  position:absolute; top:28%; left:50%; width:32px; height:32px; transform:translateX(-50%); background: radial-gradient(circle at 40% 40%, #fff 0%, #e8e0d0 70%, #c8b8a0 100%); border-radius:50% 50% 50% 50% / 60% 60% 40% 40%; box-shadow: 0 0 14px 4px #ddd0b0; animation: mwr-bloom 6s ease-in-out infinite;
}
.scn-more-white-roses .leaf {
  position:absolute; bottom:55%; left:48%; width:16px; height:10px; background: linear-gradient(180deg, #4a7a4a, #2a5a2a); border-radius:0 50% 50% 0; transform:rotate(-30deg); animation: mwr-leaf 5s ease-in-out infinite alternate;
}
.scn-more-white-roses .petal-fall {
  position:absolute; top:25%; left:45%; width:6px; height:6px; background: #fff; border-radius:50%; opacity:0.3; animation: mwr-petal1 12s linear infinite;
}
.scn-more-white-roses .count-line {
  position:absolute; bottom:30%; left:42%; width:20%; height:2px; background: linear-gradient(90deg, transparent, #8a7a60, transparent); animation: mwr-line 7s ease-in-out infinite;
}
@keyframes mwr-soft { 0% { opacity:0.5 } 50% { opacity:0.8 } 100% { opacity:0.6 } }
@keyframes mwr-stem { 0%,100% { transform:rotate(-2deg) scaleY(1) } 50% { transform:rotate(2deg) scaleY(0.96) } }
@keyframes mwr-bloom { 0% { transform:translateX(-50%) rotate(0deg) scale(1) } 50% { transform:translateX(-50%) rotate(5deg) scale(1.03) } 100% { transform:translateX(-50%) rotate(0deg) scale(1) } }
@keyframes mwr-leaf { 0% { transform:rotate(-35deg) } 100% { transform:rotate(-25deg) } }
@keyframes mwr-petal1 { 0% { transform:translateY(0) rotate(0deg); opacity:0.3 } 50% { transform:translateY(40px) rotate(180deg); opacity:0.6 } 100% { transform:translateY(80px) rotate(360deg); opacity:0 } }
@keyframes mwr-line { 0% { transform:scaleX(0.8); opacity:0.5 } 50% { transform:scaleX(1.2); opacity:1 } 100% { transform:scaleX(0.8); opacity:0.5 } }

.scn-insults-exchange {
  background: linear-gradient(180deg, #b58a6a 0%, #d4b08a 50%, #e8c8a8 100%),
              radial-gradient(ellipse at 30% 20%, #f0d8b0 0%, transparent 60%);
}
.scn-insults-exchange .sky-tense {
  position:absolute; inset:0; background: linear-gradient(180deg, #c09878 0%, transparent 100%); animation: iex-sky 3s ease-in-out infinite alternate;
}
.scn-insults-exchange .profile-left {
  position:absolute; bottom:25%; left:30%; width:40px; height:70px; background: linear-gradient(180deg, #c8a888, #a08060); border-radius:60% 40% 50% 50% / 60% 50% 50% 40%; transform-origin:bottom center; animation: iex-profile-l 0.6s ease-in-out infinite;
}
.scn-insults-exchange .profile-right {
  position:absolute; bottom:25%; right:30%; width:40px; height:70px; background: linear-gradient(180deg, #c8a888, #a08060); border-radius:40% 60% 50% 50% / 50% 60% 40% 50%; transform-origin:bottom center; animation: iex-profile-r 0.7s ease-in-out infinite;
}
.scn-insults-exchange .blush-left {
  position:absolute; bottom:30%; left:28%; width:18px; height:12px; background: radial-gradient(circle, #b87878 0%, transparent 70%); border-radius:50%; animation: iex-blush 1.2s ease-in-out infinite alternate;
}
.scn-insults-exchange .blush-right {
  position:absolute; bottom:30%; right:28%; width:18px; height:12px; background: radial-gradient(circle, #b87878 0%, transparent 70%); border-radius:50%; animation: iex-blush 1.4s ease-in-out infinite alternate;
}
.scn-insults-exchange .spark {
  position:absolute; bottom:50%; left:48%; width:6px; height:6px; background: #ffe080; border-radius:50%; box-shadow:0 0 14px 4px #ffe080; animation: iex-spark 0.8s ease-in-out infinite;
}
@keyframes iex-sky { 0% { opacity:0.6 } 50% { opacity:1 } 100% { opacity:0.7 } }
@keyframes iex-profile-l { 0% { transform:rotate(-2deg) translateX(-1px) } 25% { transform:rotate(3deg) translateX(1px) } 50% { transform:rotate(-1deg) translateX(0) } 75% { transform:rotate(4deg) translateX(-1px) } 100% { transform:rotate(-2deg) translateX(-1px) } }
@keyframes iex-profile-r { 0% { transform:rotate(2deg) translateX(1px) } 25% { transform:rotate(-3deg) translateX(-1px) } 50% { transform:rotate(1deg) translateX(0) } 75% { transform:rotate(-4deg) translateX(1px) } 100% { transform:rotate(2deg) translateX(1px) } }
@keyframes iex-blush { 0% { opacity:0.4; transform:scale(0.9) } 100% { opacity:0.8; transform:scale(1.2) } }
@keyframes iex-spark { 0% { opacity:0; transform:scale(0.5) } 50% { opacity:1; transform:scale(1.5) } 100% { opacity:0; transform:scale(0.5) } }

.scn-joan-conjures {
  background: linear-gradient(180deg, #0d0d1a 0%, #1a0f2e 50%, #2a1a4a 100%), radial-gradient(ellipse at 70% 30%, #4a2a6a 0%, transparent 60%);
}
.scn-joan-conjures .jco-figure {
  position: absolute; bottom: 20%; left: 50%; width: 40px; height: 70px;
  background: linear-gradient(180deg, #2a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  transform: translateX(-50%);
  animation: jco-figure 4s ease-in-out infinite;
}
.scn-joan-conjures .jco-periapt {
  position: absolute; bottom: 48%; left: 50%; width: 12px; height: 12px;
  background: radial-gradient(circle, #f0c068 0%, #b08040 60%);
  border-radius: 50%;
  transform: translateX(-50%);
  box-shadow: 0 0 20px 6px #c08040, 0 0 40px 12px rgba(192,128,64,.3);
  animation: jco-glow 1.2s ease-in-out infinite alternate;
}
.scn-joan-conjures .jco-spirit1 {
  position: absolute; top: 25%; left: 20%; width: 30px; height: 30px;
  background: radial-gradient(circle, rgba(200,180,255,.4) 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(4px);
  animation: jco-spirit1 3s ease-in-out infinite;
}
.scn-joan-conjures .jco-spirit2 {
  position: absolute; top: 30%; right: 25%; width: 20px; height: 20px;
  background: radial-gradient(circle, rgba(200,180,255,.3) 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(3px);
  animation: jco-spirit2 4s ease-in-out infinite alternate;
}
.scn-joan-conjures .jco-flash {
  position: absolute; inset: 0; opacity: 0;
  background: linear-gradient(180deg, rgba(255,220,180,.8) 0%, transparent 100%);
  animation: jco-flash 3s ease-in-out infinite;
}
.scn-joan-conjures .jco-ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 30% 70% 0 0 / 50% 50% 0 0;
}
.scn-joan-conjures .jco-cloud {
  position: absolute; top: 10%; left: 0; width: 120px; height: 30px;
  background: linear-gradient(90deg, rgba(20,10,40,.5) 0%, rgba(40,20,60,.3) 100%);
  border-radius: 50%;
  filter: blur(8px);
  animation: jco-cloud 25s linear infinite;
}
@keyframes jco-figure {
  0% { transform: translateX(-50%) rotate(-2deg); }
  25% { transform: translateX(-50%) translateY(-3px) rotate(2deg); }
  50% { transform: translateX(-50%) rotate(-1deg); }
  75% { transform: translateX(-50%) translateY(-1px) rotate(1deg); }
  100% { transform: translateX(-50%) rotate(0deg); }
}
@keyframes jco-glow {
  0% { box-shadow: 0 0 15px 4px #c08040, 0 0 30px 8px rgba(192,128,64,.2); opacity: .7; }
  50% { box-shadow: 0 0 25px 8px #ffd060, 0 0 50px 16px rgba(255,208,96,.4); opacity: 1; }
  100% { box-shadow: 0 0 18px 5px #c08040, 0 0 35px 10px rgba(192,128,64,.3); opacity: .8; }
}
@keyframes jco-spirit1 {
  0% { transform: translate(0, 0) scale(0.8); opacity: .3; }
  50% { transform: translate(20px, -15px) scale(1.2); opacity: .6; }
  100% { transform: translate(-10px, 10px) scale(0.9); opacity: .4; }
}
@keyframes jco-spirit2 {
  0% { transform: translate(0, 0) scale(1); opacity: .5; }
  100% { transform: translate(-30px, 20px) scale(0.7); opacity: .2; }
}
@keyframes jco-flash {
  0%, 90%, 100% { opacity: 0; }
  30% { opacity: 0.6; }
  60% { opacity: 0.2; }
}
@keyframes jco-cloud {
  0% { transform: translateX(-120px); }
  100% { transform: translateX(120vw); }
}

.scn-spirits-desert {
  background: linear-gradient(180deg, #05050f 0%, #0a0a1a 40%, #0d0d1a 100%), radial-gradient(ellipse at 50% 100%, #1a1a2e 0%, transparent 70%);
}
.scn-spirits-desert .spd-figure {
  position: absolute; bottom: 15%; left: 50%; width: 35px; height: 60px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  transform: translateX(-50%) scaleX(-1);
  animation: spd-figure 6s ease-in-out infinite;
}
.scn-spirits-desert .spd-spirit1 {
  position: absolute; bottom: 40%; left: 30%; width: 25px; height: 25px;
  background: radial-gradient(circle, rgba(180,160,220,.3) 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(4px);
  animation: spd-spirit1 7s ease-in-out infinite;
}
.scn-spirits-desert .spd-spirit2 {
  position: absolute; bottom: 35%; right: 25%; width: 20px; height: 20px;
  background: radial-gradient(circle, rgba(180,160,220,.2) 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(3px);
  animation: spd-spirit2 9s ease-in-out infinite alternate;
}
.scn-spirits-desert .spd-ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 15%;
  background: linear-gradient(180deg, #0a0a1a 0%, #030308 100%);
  border-radius: 40% 60% 0 0 / 50% 50% 0 0;
}
.scn-spirits-desert .spd-void {
  position: absolute; top: 20%; left: 40%; width: 60px; height: 80px;
  background: radial-gradient(ellipse, #1a1a2e 0%, transparent 80%);
  border-radius: 50%;
  filter: blur(10px);
  animation: spd-void 5s ease-in-out infinite alternate;
}
@keyframes spd-figure {
  0% { transform: translateX(-50%) scaleX(-1) translateY(0); }
  50% { transform: translateX(-50%) scaleX(-1) translateY(-2px); }
  100% { transform: translateX(-50%) scaleX(-1) translateY(0); }
}
@keyframes spd-spirit1 {
  0% { transform: translate(0, 0) scale(1); opacity: .5; }
  50% { transform: translate(-15px, 10px) scale(0.7); opacity: .2; }
  100% { transform: translate(10px, -5px) scale(1.1); opacity: .4; }
}
@keyframes spd-spirit2 {
  0% { transform: translate(0, 0) scale(1); opacity: .4; }
  100% { transform: translate(20px, -10px) scale(0.6); opacity: .1; }
}
@keyframes spd-void {
  0% { opacity: .5; transform: scale(1); }
  100% { opacity: .2; transform: scale(1.2); }
}

.scn-joan-captured {
  background: linear-gradient(180deg, #87ceeb 0%, #f0e68c 40%, #f5deb3 70%), radial-gradient(ellipse at 50% 0%, #fff5e0 0%, transparent 60%);
}
.scn-joan-captured .jca-sun {
  position: absolute; top: 5%; left: 50%; width: 80px; height: 80px;
  background: radial-gradient(circle, #fff8dc 0%, #f0c060 50%, transparent 70%);
  border-radius: 50%;
  transform: translateX(-50%);
  animation: jca-sunburst 8s ease-in-out infinite;
}
.scn-joan-captured .jca-figure-joan {
  position: absolute; bottom: 15%; left: 35%; width: 40px; height: 70px;
  background: linear-gradient(180deg, #4a3520 0%, #2a1a0a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  box-shadow: inset 0 0 10px rgba(0,0,0,.5);
  animation: jca-capture 2s ease-in-out infinite alternate;
}
.scn-joan-captured .jca-figure-york {
  position: absolute; bottom: 15%; right: 30%; width: 45px; height: 75px;
  background: linear-gradient(180deg, #5a4030 0%, #3a2515 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  box-shadow: inset 0 0 10px rgba(0,0,0,.4);
  animation: jca-york 2s ease-in-out infinite alternate;
}
.scn-joan-captured .jca-chains {
  position: absolute; bottom: 35%; left: 30%; width: 40px; height: 4px;
  background: #a09080;
  border-radius: 2px;
  animation: jca-chains 3s ease-in-out infinite;
}
.scn-joan-captured .jca-dust {
  position: absolute; top: 40%; left: 10%; width: 100px; height: 20px;
  background: linear-gradient(90deg, rgba(200,180,150,.3) 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(5px);
  animation: jca-dust 15s linear infinite;
}
.scn-joan-captured .jca-ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 15%;
  background: linear-gradient(180deg, #8b7355 0%, #6b5b3a 100%);
  border-radius: 40% 60% 0 0 / 50% 50% 0 0;
}
@keyframes jca-sunburst {
  0% { transform: translateX(-50%) scale(0.95); opacity: .8; }
  50% { transform: translateX(-50%) scale(1.05); opacity: 1; }
  100% { transform: translateX(-50%) scale(1); opacity: .9; }
}
@keyframes jca-capture {
  0% { transform: translateY(0) rotate(-2deg); }
  100% { transform: translateY(-2px) rotate(2deg); }
}
@keyframes jca-york {
  0% { transform: translateY(0) rotate(1deg); }
  100% { transform: translateY(-1px) rotate(-1deg); }
}
@keyframes jca-chains {
  0% { transform: translateX(0); }
  50% { transform: translateX(5px); }
  100% { transform: translateX(0); }
}
@keyframes jca-dust {
  0% { transform: translateX(-100px); opacity: 0; }
  50% { opacity: .3; }
  100% { transform: translateX(120vw); opacity: 0; }
}

.scn-suffolk-captures-margaret {
  background: linear-gradient(180deg, #f5deb3 0%, #e8c59a 30%, #d4a574 60%), radial-gradient(ellipse at 50% 0%, #fff5e0 0%, transparent 50%);
}
.scn-suffolk-captures-margaret .smc-sun {
  position: absolute; top: 5%; left: 50%; width: 70px; height: 70px;
  background: radial-gradient(circle, #fff8dc 0%, #f5d69a 40%, transparent 70%);
  border-radius: 50%;
  transform: translateX(-50%);
  animation: smc-sun 10s ease-in-out infinite alternate;
}
.scn-suffolk-captures-margaret .smc-figure-suffolk {
  position: absolute; bottom: 10%; left: 40%; width: 40px; height: 65px;
  background: linear-gradient(180deg, #6a4a3a 0%, #4a2a1a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  transform: rotate(5deg);
  animation: smc-suffolk 5s ease-in-out infinite alternate;
}
.scn-suffolk-captures-margaret .smc-figure-margaret {
  position: absolute; bottom: 10%; right: 35%; width: 35px; height: 60px;
  background: linear-gradient(180deg, #b8a090 0%, #8a7a6a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  box-shadow: 0 0 15px rgba(255,215,140,.3);
  animation: smc-margaret 5s ease-in-out infinite alternate;
}
.scn-suffolk-captures-margaret .smc-grass {
  position: absolute; bottom: 0; left: 0; right: 0; height: 12%;
  background: linear-gradient(180deg, #8a9a5a 0%, #5a6a3a 100%);
  border-radius: 60% 40% 0 0 / 50% 50% 0 0;
}
.scn-suffolk-captures-margaret .smc-flowers {
  position: absolute; bottom: 12%; left: 30%; width: 15px; height: 15px;
  background: radial-gradient(circle, #d4a574 0%, #b8886a 100%);
  border-radius: 50%;
  box-shadow: 0 0 10px rgba(200,150,100,.4);
  animation: smc-flowers 4s ease-in-out infinite;
}
.scn-suffolk-captures-margaret .smc-light {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at 50% 20%, rgba(255,230,180,.15) 0%, transparent 60%);
  pointer-events: none;
  animation: smc-light 7s ease-in-out infinite alternate;
}
@keyframes smc-sun {
  0% { transform: translateX(-50%) scale(0.98); opacity: .85; }
  100% { transform: translateX(-50%) scale(1.02); opacity: 1; }
}
@keyframes smc-suffolk {
  0% { transform: rotate(5deg) translateY(0); }
  50% { transform: rotate(3deg) translateY(-2px); }
  100% { transform: rotate(5deg) translateY(0); }
}
@keyframes smc-margaret {
  0% { transform: translateY(0) rotate(-3deg); }
  50% { transform: translateY(-3px) rotate(-1deg); }
  100% { transform: translateY(0) rotate(-3deg); }
}
@keyframes smc-flowers {
  0% { transform: scale(1); opacity: .6; }
  50% { transform: scale(1.3); opacity: 1; }
  100% { transform: scale(1); opacity: .6; }
}
@keyframes smc-light {
  0% { opacity: .5; }
  100% { opacity: .8; }
}

/* parliament-hearing */
.scn-parliament-hearing {
  background: linear-gradient(180deg, #d4c8a0 0%, #b89e70 60%, #8c6e40 100%), radial-gradient(ellipse at 50% 40%, #f0e4c0 0%, transparent 70%);
}
.scn-parliament-hearing .bg-hall { position:absolute; inset:0; background: linear-gradient(180deg, #c8b890 0%, #a08050 100%); }
.scn-parliament-hearing .throne { position:absolute; bottom:20%; left:50%; width:120px; height:160px; transform:translateX(-50%); background: linear-gradient(180deg, #b09050 0%, #806030 100%); border-radius:20% 20% 10% 10% / 30% 30% 10% 10%; box-shadow: 0 10px 20px rgba(0,0,0,.3); animation: ph-throne 8s ease-in-out infinite; }
.scn-parliament-hearing .pillar-l { position:absolute; bottom:0; left:10%; width:30px; height:70%; background: linear-gradient(180deg, #ac8e60 0%, #7e5e30 100%); border-radius:5% / 10%; box-shadow: 0 0 15px rgba(0,0,0,.2); animation: ph-pillar 12s ease-in-out infinite; }
.scn-parliament-hearing .pillar-r { position:absolute; bottom:0; right:10%; width:30px; height:70%; background: linear-gradient(180deg, #ac8e60 0%, #7e5e30 100%); border-radius:5% / 10%; box-shadow: 0 0 15px rgba(0,0,0,.2); animation: ph-pillar 12s ease-in-out infinite reverse; }
.scn-parliament-hearing .figure-king { position:absolute; bottom:20%; left:38%; width:40px; height:130px; background: linear-gradient(180deg, #3a2a1a 0%, #1a0e00 100%); border-radius:40% 40% 30% 30% / 50% 50% 30% 30%; transform-origin: bottom center; animation: ph-king 4s ease-in-out infinite; }
.scn-parliament-hearing .figure-bishop { position:absolute; bottom:20%; right:35%; width:36px; height:120px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius:40% 40% 30% 30% / 50% 50% 30% 30%; transform-origin: bottom center; animation: ph-bishop 5s ease-in-out infinite; }
.scn-parliament-hearing .document-torn { position:absolute; bottom:50%; left:50%; width:40px; height:30px; transform:translate(-50%,-50%); background: linear-gradient(135deg, #f0e0c0 0%, #d0b080 100%); clip-path: polygon(0% 0%, 80% 0%, 100% 100%, 0% 80%); border-radius:4px; box-shadow: 0 2px 6px rgba(0,0,0,.3); animation: ph-doc 2s ease-in-out infinite alternate; }
.scn-parliament-hearing .glow-spot { position:absolute; top:10%; left:50%; width:200px; height:100px; transform:translateX(-50%); background: radial-gradient(ellipse, rgba(255,230,180,.6) 0%, transparent 70%); filter: blur(8px); animation: ph-glow 6s ease-in-out infinite alternate; }
@keyframes ph-throne { 0%{transform:translateX(-50%) translateY(0) scale(1)} 50%{transform:translateX(-50%) translateY(-2px) scale(1.01)} 100%{transform:translateX(-50%) translateY(0) scale(1)} }
@keyframes ph-pillar { 0%{opacity:.9;transform:translateY(0)} 50%{opacity:1;transform:translateY(-4px)} 100%{opacity:.9;transform:translateY(0)} }
@keyframes ph-king { 0%{transform:translateX(0) rotate(-2deg)} 50%{transform:translateX(3px) rotate(2deg)} 100%{transform:translateX(0) rotate(-2deg)} }
@keyframes ph-bishop { 0%{transform:translateX(0) rotate(1deg)} 50%{transform:translateX(-4px) rotate(-1deg)} 100%{transform:translateX(0) rotate(1deg)} }
@keyframes ph-doc { 0%{opacity:.8;transform:translate(-50%,-50%) rotate(0)} 50%{opacity:1;transform:translate(-45%,-55%) rotate(5deg)} 100%{opacity:.7;transform:translate(-50%,-50%) rotate(0)} }
@keyframes ph-glow { 0%{opacity:.6;transform:translateX(-50%) scaleY(1)} 50%{opacity:1;transform:translateX(-50%) scaleY(1.1)} 100%{opacity:.7;transform:translateX(-50%) scaleY(1)} }

/* bishop-defends */
.scn-bishop-defends {
  background: linear-gradient(180deg, #dcc8a0 0%, #b89e70 50%, #8c6e40 100%), radial-gradient(ellipse at 30% 50%, #f0e4c0 0%, transparent 70%);
}
.scn-bishop-defends .bg-chamber { position:absolute; inset:0; background: linear-gradient(180deg, #b8a480 0%, #907050 100%); }
.scn-bishop-defends .pulpit { position:absolute; bottom:15%; left:30%; width:60px; height:100px; background: linear-gradient(180deg, #9a7a50 0%, #6a4a20 100%); border-radius:10% 10% 5% 5%; box-shadow: 0 6px 12px rgba(0,0,0,.4); animation: bd-pulpit 7s ease-in-out infinite; }
.scn-bishop-defends .figure-bishop2 { position:absolute; bottom:15%; left:28%; width:30px; height:110px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius:40% 40% 30% 30% / 50% 50% 30% 30%; transform-origin: bottom center; animation: bd-bishop 6s ease-in-out infinite; }
.scn-bishop-defends .hands-raised { position:absolute; bottom:40%; left:28%; width:20px; height:30px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius:40% 40% 20% 20%; animation: bd-hands 3s ease-in-out infinite alternate; }
.scn-bishop-defends .light-beam { position:absolute; top:5%; left:28%; width:40px; height:60%; background: linear-gradient(180deg, rgba(255,240,200,.5) 0%, rgba(255,240,200,0) 100%); filter: blur(3px); transform-origin: top center; animation: bd-beam 8s ease-in-out infinite alternate; }
.scn-bishop-defends .gem { position:absolute; top:20%; left:30%; width:12px; height:12px; background: radial-gradient(circle, #f0c060 0%, #c08030 70%); border-radius:50%; box-shadow: 0 0 20px 6px rgba(240,192,96,.6); animation: bd-gem 4s ease-in-out infinite alternate; }
@keyframes bd-pulpit { 0%{transform:translateY(0)} 50%{transform:translateY(-2px)} 100%{transform:translateY(0)} }
@keyframes bd-bishop { 0%{transform:translateY(0) rotate(0)} 50%{transform:translateY(1px) rotate(2deg)} 100%{transform:translateY(0) rotate(0)} }
@keyframes bd-hands { 0%{transform:translateY(0) rotate(0)} 50%{transform:translateY(-5px) rotate(10deg)} 100%{transform:translateY(0) rotate(0)} }
@keyframes bd-beam { 0%{opacity:.3;transform:scaleY(.9)} 50%{opacity:.6;transform:scaleY(1.2)} 100%{opacity:.3;transform:scaleY(.9)} }
@keyframes bd-gem { 0%{opacity:.7;box-shadow:0 0 15px 4px rgba(240,192,96,.4)} 50%{opacity:1;box-shadow:0 0 30px 10px rgba(240,192,96,.8)} 100%{opacity:.8;box-shadow:0 0 20px 6px rgba(240,192,96,.5)} }

/* insults-fly */
.scn-insults-fly {
  background: linear-gradient(180deg, #c4b088 0%, #a08050 50%, #705030 100%), radial-gradient(ellipse at 60% 50%, #e0c8a0 0%, transparent 70%);
}
.scn-insults-fly .bg-stone { position:absolute; inset:0; background: linear-gradient(180deg, #b0a080 0%, #907050 100%); }
.scn-insults-fly .figure-left { position:absolute; bottom:20%; left:15%; width:35px; height:130px; background: linear-gradient(180deg, #3a2a1a 0%, #1a0e00 100%); border-radius:40% 40% 30% 30% / 50% 50% 30% 30%; transform-origin: bottom center; animation: if-left 3s ease-in-out infinite; }
.scn-insults-fly .figure-right { position:absolute; bottom:20%; right:15%; width:35px; height:130px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius:40% 40% 30% 30% / 50% 50% 30% 30%; transform-origin: bottom center; animation: if-right 3.5s ease-in-out infinite; }
.scn-insults-fly .shield { position:absolute; bottom:30%; left:50%; width:50px; height:60px; transform:translateX(-50%); background: linear-gradient(180deg, #c8553d 0%, #a0461a 100%); border-radius:10% 10% 30% 30%; box-shadow: 0 4px 10px rgba(0,0,0,.4); animation: if-shield 2s ease-in-out infinite alternate; }
.scn-insults-fly .cape { position:absolute; bottom:18%; left:50%; width:40px; height:50px; transform:translateX(-50%); background: linear-gradient(180deg, #702243 0%, #5e1a1d 100%); border-radius:0 0 30% 30%; animation: if-cape 4s ease-in-out infinite; }
.scn-insults-fly .sparks { position:absolute; top:30%; left:50%; width:80px; height:30px; transform:translateX(-50%); background: radial-gradient(circle, #f0c060 0%, #d09040 50%, transparent 70%); filter: blur(4px); animation: if-sparks 0.8s ease-in-out infinite alternate; }
@keyframes if-left { 0%{transform:translateX(0) rotate(-3deg)} 25%{transform:translateX(5px) rotate(0)} 50%{transform:translateX(0) rotate(3deg)} 75%{transform:translateX(-5px) rotate(0)} 100%{transform:translateX(0) rotate(-3deg)} }
@keyframes if-right { 0%{transform:translateX(0) rotate(3deg)} 25%{transform:translateX(-5px) rotate(0)} 50%{transform:translateX(0) rotate(-3deg)} 75%{transform:translateX(5px) rotate(0)} 100%{transform:translateX(0) rotate(3deg)} }
@keyframes if-shield { 0%{transform:translateX(-50%) scale(1) rotate(0)} 50%{transform:translateX(-45%) scale(1.05) rotate(5deg)} 100%{transform:translateX(-50%) scale(1) rotate(0)} }
@keyframes if-cape { 0%{transform:translateX(-50%) rotate(0)} 50%{transform:translateX(-50%) rotate(-10deg)} 100%{transform:translateX(-50%) rotate(0)} }
@keyframes if-sparks { 0%{opacity:.3;transform:translateX(-50%) scale(.8)} 50%{opacity:1;transform:translateX(-50%) scale(1.2)} 100%{opacity:.3;transform:translateX(-50%) scale(.8)} }

/* lords-intervene */
.scn-lords-intervene {
  background: linear-gradient(180deg, #e0d0b0 0%, #c0a880 60%, #a08050 100%), radial-gradient(ellipse at 50% 30%, #f8f0d0 0%, transparent 70%);
}
.scn-lords-intervene .bg-panel { position:absolute; inset:0; background: linear-gradient(180deg, #d0c099 0%, #b09870 100%); }
.scn-lords-intervene .table { position:absolute; bottom:10%; left:20%; right:20%; height:15%; background: linear-gradient(180deg, #9a7a50 0%, #6a4a20 100%); border-radius:20% 20% 0 0; box-shadow: 0 -4px 10px rgba(0,0,0,.3); animation: li-table 10s ease-in-out infinite; }
.scn-lords-intervene .figure-lord1 { position:absolute; bottom:15%; left:28%; width:32px; height:100px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius:40% 40% 30% 30% / 50% 50% 30% 30%; transform-origin: bottom center; animation: li-lord1 6s ease-in-out infinite; }
.scn-lords-intervene .figure-lord2 { position:absolute; bottom:15%; right:28%; width:32px; height:100px; background: linear-gradient(180deg, #3a2a1a 0%, #1a0e00 100%); border-radius:40% 40% 30% 30% / 50% 50% 30% 30%; transform-origin: bottom center; animation: li-lord2 7s ease-in-out infinite; }
.scn-lords-intervene .gavel { position:absolute; bottom:40%; left:50%; width:20px; height:40px; transform:translateX(-50%); background: linear-gradient(180deg, #b89560 0%, #806030 100%); border-radius:30% 30% 10% 10%; box-shadow: 0 2px 6px rgba(0,0,0,.3); animation: li-gavel 3s ease-in-out infinite alternate; }
.scn-lords-intervene .papers { position:absolute; bottom:15%; left:45%; width:30px; height:20px; background: linear-gradient(135deg, #f8ecc0 0%, #d8c090 100%); border-radius:3px; box-shadow: 0 1px 4px rgba(0,0,0,.2); animation: li-papers 9s ease-in-out infinite; }
.scn-lords-intervene .candle { position:absolute; bottom:25%; left:50%; width:8px; height:30px; transform:translateX(-50%); background: linear-gradient(180deg, #f0d0a0 0%, #c89860 100%); border-radius:2px; box-shadow: 0 0 10px 3px rgba(255,220,150,.5); animation: li-candle 5s ease-in-out infinite alternate; }
@keyframes li-table { 0%{opacity:.9;transform:translateY(0)} 50%{opacity:1;transform:translateY(-2px)} 100%{opacity:.9;transform:translateY(0)} }
@keyframes li-lord1 { 0%{transform:rotate(0)} 50%{transform:rotate(2deg)} 100%{transform:rotate(0)} }
@keyframes li-lord2 { 0%{transform:rotate(0)} 50%{transform:rotate(-2deg)} 100%{transform:rotate(0)} }
@keyframes li-gavel { 0%{transform:translateX(-50%) rotate(-5deg)} 50%{transform:translateX(-50%) rotate(5deg)} 100%{transform:translateX(-50%) rotate(-5deg)} }
@keyframes li-papers { 0%{transform:translateY(0) rotate(0)} 50%{transform:translateY(-3px) rotate(3deg)} 100%{transform:translateY(0) rotate(0)} }
@keyframes li-candle { 0%{opacity:.8;box-shadow:0 0 8px 2px rgba(255,220,150,.4)} 50%{opacity:1;box-shadow:0 0 16px 6px rgba(255,220,150,.7)} 100%{opacity:.8;box-shadow:0 0 10px 3px rgba(255,220,150,.5)} }

.scn-john-refuses-flight {
  background: linear-gradient(180deg, #4a6a8a 0%, #c8a860 60%, #d4b870 100%), radial-gradient(ellipse at 50% 0%, #f0d898 0%, transparent 70%);
}
.scn-john-refuses-flight .sky {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(180deg, #6a8aaa 0%, transparent 100%);
  animation: jrf-sky 12s ease-in-out infinite alternate;
}
.scn-john-refuses-flight .sun {
  position: absolute; top: 8%; left: 55%; width: 50px; height: 50px;
  background: radial-gradient(circle, #ffe080 0%, #e8a030 50%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 80px 20px #e8a030, 0 0 160px 40px rgba(232,160,48,.4);
  animation: jrf-sun 5s ease-in-out infinite alternate;
}
.scn-john-refuses-flight .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #7a6a40 0%, #4a3a20 100%);
  border-radius: 30% 70% 0 0 / 60% 80% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,.6);
}
.scn-john-refuses-flight .father {
  position: absolute; bottom: 30%; left: 20%; width: 30px; height: 60px;
  background: linear-gradient(180deg, #2a2a2a 0%, #0a0a0a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: jrf-father 6s ease-in-out infinite;
}
.scn-john-refuses-flight .son {
  position: absolute; bottom: 30%; left: 55%; width: 28px; height: 55px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: jrf-son 4s ease-in-out infinite;
}
.scn-john-refuses-flight .banner {
  position: absolute; bottom: 35%; left: 42%; width: 8px; height: 40px;
  background: linear-gradient(180deg, #a0461a 0%, #5e1a1d 100%);
  transform-origin: bottom center;
  animation: jrf-banner 3s ease-in-out infinite alternate;
}
.scn-john-refuses-flight .dust {
  position: absolute; bottom: 25%; left: 30%; width: 60px; height: 20px;
  background: radial-gradient(ellipse, rgba(180,150,100,.4) 0%, transparent 100%);
  filter: blur(6px);
  animation: jrf-dust 10s linear infinite;
}
@keyframes jrf-sky { 0% { opacity: .7 } 50% { opacity: 1 } 100% { opacity: .8 } }
@keyframes jrf-sun { 0% { transform: scale(1); opacity: .8 } 100% { transform: scale(1.1); opacity: 1 } }
@keyframes jrf-father { 0% { transform: translateX(0) rotate(-2deg) } 25% { transform: translateX(5px) rotate(2deg) } 50% { transform: translateX(0) rotate(-1deg) } 75% { transform: translateX(-5px) rotate(1deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes jrf-son { 0% { transform: translateX(0) rotate(1deg) } 50% { transform: translateX(-3px) rotate(-2deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes jrf-banner { 0% { transform: rotate(0) } 50% { transform: rotate(15deg) } 100% { transform: rotate(-10deg) } }
@keyframes jrf-dust { 0% { transform: translateX(0) scale(1); opacity: .5 } 50% { transform: translateX(-20px) scale(1.2); opacity: .2 } 100% { transform: translateX(20px) scale(.8); opacity: .4 } }

.scn-talbot-commands-fly {
  background: linear-gradient(180deg, #507090 0%, #c8a860 50%, #d0b070 100%), radial-gradient(ellipse at 60% 0%, #f0d898 0%, transparent 70%);
}
.scn-talbot-commands-fly .sky {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #6080a0 0%, transparent 100%);
  animation: tcf-sky 15s ease-in-out infinite alternate;
}
.scn-talbot-commands-fly .sun {
  position: absolute; top: 5%; right: 20%; width: 45px; height: 45px;
  background: radial-gradient(circle, #ffd870 0%, #d49530 50%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 70px 15px #d49530, 0 0 140px 30px rgba(212,149,48,.35);
  animation: tcf-sun 7s ease-in-out infinite alternate;
}
.scn-talbot-commands-fly .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #7a6a40 0%, #5a4a2a 100%);
  border-radius: 20% 80% 0 0 / 50% 90% 0 0;
  box-shadow: inset 0 8px 15px rgba(0,0,0,.5);
}
.scn-talbot-commands-fly .tower {
  position: absolute; bottom: 25%; left: 10%; width: 40px; height: 70px;
  background: linear-gradient(180deg, #6a5a4a 0%, #3a2a1a 100%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 0 4px 8px rgba(0,0,0,.6);
}
.scn-talbot-commands-fly .father-command {
  position: absolute; bottom: 28%; left: 45%; width: 32px; height: 65px;
  background: linear-gradient(180deg, #2a2a2a 0%, #0a0a0a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: tcf-father 5s ease-in-out infinite;
}
.scn-talbot-commands-fly .son-reply {
  position: absolute; bottom: 28%; left: 60%; width: 25px; height: 50px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: tcf-son 3s ease-in-out infinite;
}
.scn-talbot-commands-fly .flag {
  position: absolute; bottom: 30%; left: 52%; width: 6px; height: 30px;
  background: linear-gradient(180deg, #c8553d 0%, #702243 100%);
  transform-origin: bottom center;
  animation: tcf-flag 4s ease-in-out infinite alternate;
}
@keyframes tcf-sky { 0% { opacity: .8 } 50% { opacity: 1 } 100% { opacity: .7 } }
@keyframes tcf-sun { 0% { transform: scale(.95); opacity: .8 } 50% { transform: scale(1.05); opacity: 1 } 100% { transform: scale(.98); opacity: .9 } }
@keyframes tcf-father { 0% { transform: translateX(0) rotate(2deg) } 25% { transform: translateX(3px) rotate(-2deg) } 50% { transform: translateX(0) rotate(0) } 75% { transform: translateX(-3px) rotate(1deg) } 100% { transform: translateX(0) rotate(-1deg) } }
@keyframes tcf-son { 0% { transform: translateX(0) rotate(-1deg) } 50% { transform: translateX(2px) rotate(2deg) } 100% { transform: translateX(0) rotate(-1deg) } }
@keyframes tcf-flag { 0% { transform: rotate(0) } 50% { transform: rotate(20deg) } 100% { transform: rotate(-15deg) } }

.scn-john-devotion {
  background: linear-gradient(180deg, #5a7a9a 0%, #c8a860 50%, #d4b870 100%), radial-gradient(ellipse at 50% 0%, #f0d898 0%, transparent 60%);
}
.scn-john-devotion .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #7a9aba 0%, transparent 100%);
  animation: jd-sky 10s ease-in-out infinite alternate;
}
.scn-john-devotion .sun {
  position: absolute; top: 10%; left: 30%; width: 40px; height: 40px;
  background: radial-gradient(circle, #ffe080 0%, #e0a030 50%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 60px 15px #e0a030, 0 0 120px 30px rgba(224,160,48,.3);
  animation: jd-sun 6s ease-in-out infinite alternate;
}
.scn-john-devotion .hill {
  position: absolute; bottom: 20%; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #6a7a4a 0%, #3a4a2a 100%);
  border-radius: 50% 50% 0 0 / 80% 80% 0 0;
  box-shadow: inset 0 6px 12px rgba(0,0,0,.4);
}
.scn-john-devotion .father-close {
  position: absolute; bottom: 25%; left: 35%; width: 28px; height: 55px;
  background: linear-gradient(180deg, #2a2a2a 0%, #0a0a0a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: jd-father 7s ease-in-out infinite;
}
.scn-john-devotion .son-close {
  position: absolute; bottom: 25%; left: 50%; width: 26px; height: 52px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: jd-son 5s ease-in-out infinite;
}
.scn-john-devotion .tree {
  position: absolute; bottom: 28%; left: 15%; width: 30px; height: 60px;
  background: linear-gradient(180deg, #2a4a2a 0%, #0a1a0a 100%);
  border-radius: 50% 50% 20% 20% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: jd-tree 12s ease-in-out infinite alternate;
}
.scn-john-devotion .cloak {
  position: absolute; bottom: 30%; left: 42%; width: 14px; height: 30px;
  background: linear-gradient(180deg, #702243 0%, #3a0f1a 100%);
  border-radius: 50% 50% 20% 20% / 70% 70% 30% 30%;
  transform-origin: bottom left;
  animation: jd-cloak 4s ease-in-out infinite alternate;
}
@keyframes jd-sky { 0% { opacity: .8 } 50% { opacity: 1 } 100% { opacity: .75 } }
@keyframes jd-sun { 0% { transform: scale(1); opacity: .8 } 50% { transform: scale(1.08); opacity: 1 } 100% { transform: scale(.95); opacity: .9 } }
@keyframes jd-father { 0% { transform: translateX(0) rotate(-1deg) } 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 jd-son { 0% { transform: translateX(0) rotate(1deg) } 50% { transform: translateX(-2px) rotate(-2deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes jd-tree { 0% { transform: rotate(0) } 50% { transform: rotate(-5deg) } 100% { transform: rotate(3deg) } }
@keyframes jd-cloak { 0% { transform: rotate(0) } 50% { transform: rotate(10deg) } 100% { transform: rotate(-5deg) } }

.scn-rescue-in-battle {
  background: linear-gradient(180deg, #4a6a8a 0%, #b89050 40%, #c8a860 100%), radial-gradient(ellipse at 30% 0%, #f0d898 0%, transparent 70%);
}
.scn-rescue-in-battle .sky {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #5a7a9a 0%, transparent 100%);
  animation: rib-sky 8s ease-in-out infinite alternate;
}
.scn-rescue-in-battle .sun {
  position: absolute; top: 5%; left: 40%; width: 55px; height: 55px;
  background: radial-gradient(circle, #ffd860 0%, #d49a30 50%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 90px 25px #d49a30, 0 0 180px 50px rgba(212,154,48,.4);
  animation: rib-sun 4s ease-in-out infinite alternate;
}
.scn-rescue-in-battle .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #6a5a3a 0%, #3a2a1a 100%);
  border-radius: 10% 90% 0 0 / 40% 80% 0 0;
  box-shadow: inset 0 12px 20px rgba(0,0,0,.5);
}
.scn-rescue-in-battle .dust-cloud {
  position: absolute; bottom: 20%; left: 20%; width: 80px; height: 50px;
  background: radial-gradient(ellipse, rgba(180,150,100,.5) 0%, transparent 100%);
  filter: blur(10px);
  animation: rib-dust 6s linear infinite;
}
.scn-rescue-in-battle .knight-john {
  position: absolute; bottom: 25%; left: 30%; width: 30px; height: 70px;
  background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%);
  border-radius: 30% 30% 20% 20% / 40% 40% 30% 30%;
  transform-origin: bottom center;
  animation: rib-john 2s ease-in-out infinite alternate;
}
.scn-rescue-in-battle .knight-talbot {
  position: absolute; bottom: 25%; left: 55%; width: 32px; height: 72px;
  background: linear-gradient(180deg, #2a2a3a 0%, #0a0a1a 100%);
  border-radius: 30% 30% 20% 20% / 40% 40% 30% 30%;
  transform-origin: bottom center;
  animation: rib-talbot 2s ease-in-out infinite alternate-reverse;
}
.scn-rescue-in-battle .sword-clash {
  position: absolute; bottom: 35%; left: 48%; width: 20px; height: 20px;
  background: radial-gradient(circle, #ffd080 0%, #e0a030 50%, transparent 80%);
  border-radius: 50%;
  box-shadow: 0 0 40px 10px #e0a030, 0 0 80px 20px rgba(224,160,48,.5);
  animation: rib-clash .6s ease-in-out infinite alternate;
}
@keyframes rib-sky { 0% { opacity: .7 } 50% { opacity: 1 } 100% { opacity: .8 } }
@keyframes rib-sun { 0% { transform: scale(1); opacity: .8 } 50% { transform: scale(1.15); opacity: 1 } 100% { transform: scale(.9); opacity: .7 } }
@keyframes rib-dust { 0% { transform: translateX(0) scale(1); opacity: .4 } 50% { transform: translateX(-15px) scale(1.1); opacity: .2 } 100% { transform: translateX(15px) scale(.9); opacity: .3 } }
@keyframes rib-john { 0% { transform: translateX(0) rotate(-3deg) } 100% { transform: translateX(8px) rotate(3deg) } }
@keyframes rib-talbot { 0% { transform: translateX(0) rotate(2deg) } 100% { transform: translateX(-6px) rotate(-2deg) } }
@keyframes rib-clash { 0% { transform: scale(.5); opacity: .5 } 50% { transform: scale(1.5); opacity: 1 } 100% { transform: scale(.8); opacity: .7 } }

.scn-torch-signal {
  background: 
    linear-gradient(180deg, #2a1a3e 0%, #4a2a5e 30%, #7a4a3a 60%, #b07040 80%, #d09050 100%),
    radial-gradient(ellipse at 40% 60%, #d09050 0%, transparent 50%);
}
.scn-torch-signal .sky-dusk { position:absolute; inset:0 0 45% 0; background: linear-gradient(180deg, #1a0a2e 0%, transparent 100%); animation: ts-sky 12s ease-in-out infinite alternate; }
.scn-torch-signal .turret { position:absolute; bottom:20%; left:20%; width:60px; height:120px; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius:4px 4px 0 0; box-shadow: -4px 0 8px rgba(0,0,0,.5); animation: ts-turret 6s ease-in-out infinite; }
.scn-torch-signal .torch { position:absolute; bottom:85%; left:25%; width:8px; height:30px; background: linear-gradient(180deg, #8a6a3a 0%, #5a3a1a 100%); border-radius:2px; transform-origin: bottom center; animation: ts-torch 1.5s ease-in-out infinite alternate; }
.scn-torch-signal .flame-glow { position:absolute; bottom:88%; left:25%; width:20px; height:20px; margin-left:-6px; background: radial-gradient(circle, #ffa050 0%, #ff7030 30%, #ff4020 60%, transparent 100%); border-radius:50%; box-shadow: 0 0 30px 10px #ff7030, 0 0 60px 20px rgba(255,112,48,.4); animation: ts-flame 0.8s ease-in-out infinite alternate; }
.scn-torch-signal .figure-joan { position:absolute; bottom:22%; left:18%; width:16px; height:40px; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ts-walk 4s ease-in-out infinite; }
.scn-torch-signal .signal-sparks { position:absolute; bottom:88%; left:26%; width:4px; height:4px; background:#ffd080; border-radius:50%; box-shadow: 0 0 8px 2px #ffa050; animation: ts-sparks 1.2s linear infinite; }
@keyframes ts-sky { 0% { opacity:.7 } 50% { opacity:1 } 100% { opacity:.6 } }
@keyframes ts-turret { 0%,100% { transform: scaleY(1) } 50% { transform: scaleY(1.02) } }
@keyframes ts-torch { 0% { transform: rotate(-8deg) } 100% { transform: rotate(8deg) } }
@keyframes ts-flame { 0% { transform: scale(1) translateY(0); opacity:.9 } 50% { transform: scale(1.15) translateY(-2px); opacity:1 } 100% { transform: scale(1) translateY(0); opacity:.8 } }
@keyframes ts-walk { 0% { transform: translateX(0) rotate(0) } 50% { transform: translateX(4px) rotate(-3deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes ts-sparks { 0% { transform: translate(0,0) scale(1); opacity:1 } 50% { transform: translate(-2px, -8px) scale(1.2); opacity:.7 } 100% { transform: translate(2px, -16px) scale(0.5); opacity:0 } }

.scn-attack-signal {
  background: 
    linear-gradient(180deg, #2a1a3e 0%, #4a2a5e 30%, #7a4a3a 60%, #b07040 80%, #d09050 100%),
    radial-gradient(ellipse at 60% 55%, #d09050 0%, transparent 40%);
}
.scn-attack-signal .sky-dusk { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #1a0a2e 0%, transparent 100%); animation: as-sky 15s ease-in-out infinite alternate; }
.scn-attack-signal .castle-wall { position:absolute; bottom:15%; right:15%; width:80px; height:100px; background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%); border-radius:4px 4px 0 0; box-shadow: 4px 0 8px rgba(0,0,0,.5); animation: as-wall 8s ease-in-out infinite; }
.scn-attack-signal .beacon { position:absolute; bottom:80%; right:20%; width:10px; height:40px; background: linear-gradient(180deg, #8a6a3a 0%, #5a3a1a 100%); border-radius:2px; transform-origin: bottom center; animation: as-beacon 2s ease-in-out infinite alternate; }
.scn-attack-signal .beacon-glow { position:absolute; bottom:82%; right:20%; width:24px; height:24px; margin-left:-7px; background: radial-gradient(circle, #ffa050 0%, #ff7030 30%, #ff4020 60%, transparent 100%); border-radius:50%; box-shadow: 0 0 40px 15px #ff7030, 0 0 80px 30px rgba(255,112,48,.5); animation: as-glow 1s ease-in-out infinite alternate; }
.scn-attack-signal .soldiers { position:absolute; bottom:18%; left:10%; width:40px; height:50px; background: linear-gradient(135deg, #1a1a2a 0%, #0a0a1a 100%); border-radius:30% 30% 40% 40% / 50% 50% 40% 40%; clip-path: polygon(10% 0%, 90% 0%, 100% 100%, 0% 100%); animation: as-march 4s ease-in-out infinite; }
.scn-attack-signal .banner { position:absolute; bottom:70%; left:15%; width:20px; height:30px; background: linear-gradient(180deg, #c8553d 0%, #a0461a 100%); border-radius:2px; transform-origin: bottom left; animation: as-banner 3s ease-in-out infinite; }
.scn-attack-signal .ground-mist { position:absolute; bottom:0; left:0; right:0; height:15%; background: linear-gradient(0deg, rgba(180,140,100,.4) 0%, transparent 100%); filter: blur(8px); animation: as-mist 20s ease-in-out infinite alternate; }
@keyframes as-sky { 0% { opacity:.6 } 50% { opacity:1 } 100% { opacity:.7 } }
@keyframes as-wall { 0%,100% { transform: scaleX(1) } 50% { transform: scaleX(1.01) } }
@keyframes as-beacon { 0% { transform: rotate(-10deg) } 100% { transform: rotate(10deg) } }
@keyframes as-glow { 0% { transform: scale(1); opacity:.8 } 50% { transform: scale(1.2); opacity:1 } 100% { transform: scale(0.9); opacity:.7 } }
@keyframes as-march { 0% { transform: translateX(0) rotate(0) } 50% { transform: translateX(8px) rotate(-2deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes as-banner { 0% { transform: rotate(-5deg) scaleY(1) } 50% { transform: rotate(5deg) scaleY(1.1) } 100% { transform: rotate(-5deg) scaleY(1) } }
@keyframes as-mist { 0% { opacity:.3; transform: translateY(0) } 50% { opacity:.6; transform: translateY(-4px) } 100% { opacity:.3; transform: translateY(2px) } }

.scn-talbot-raging {
  background: 
    linear-gradient(180deg, #0a0a2e 0%, #1a1a4e 30%, #2a2a6e 60%, #3a3a7e 80%, #2a2a5e 100%),
    radial-gradient(ellipse at 50% 30%, #4a4a8e 0%, transparent 50%);
}
.scn-talbot-raging .sky-moon { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #1a1a3e 0%, transparent 100%); animation: tr-sky 18s ease-in-out infinite alternate; }
.scn-talbot-raging .moon { position:absolute; top:15%; left:70%; width:40px; height:40px; background: radial-gradient(circle, #c0c0e0 0%, #8080b0 100%); border-radius:50%; box-shadow: 0 0 40px 10px #a0a0c0, 0 0 80px 20px rgba(160,160,192,.4); animation: tr-moon 8s ease-in-out infinite; }
.scn-talbot-raging .clouds { position:absolute; top:20%; left:0; right:0; height:30%; background: linear-gradient(180deg, rgba(255,255,255,.1) 0%, transparent 100%); filter: blur(12px); animation: tr-clouds 30s linear infinite; }
.scn-talbot-raging .ground { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(0deg, #0a0a1a 0%, #1a1a2e 100%); animation: tr-ground 12s ease-in-out infinite alternate; }
.scn-talbot-raging .talbot-figure { position:absolute; bottom:28%; left:40%; width:30px; height:80px; background: linear-gradient(180deg, #0a0a1a 0%, #000 100%); border-radius:40% 40% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: tr-rage 3s ease-in-out infinite; }
.scn-talbot-raging .sword { position:absolute; bottom:40%; left:38%; width:4px; height:50px; background: linear-gradient(180deg, #404060 0%, #606080 100%); border-radius:2px; transform-origin: bottom center; animation: tr-sword 1.5s ease-in-out infinite alternate; }
.scn-talbot-raging .fallen-banner { position:absolute; bottom:5%; left:60%; width:30px; height:20px; background: linear-gradient(180deg, #5e1a1d 0%, #3a0a0a 100%); border-radius:2px 2px 50% 50% / 2px 2px 60% 60%; transform: rotate(-30deg); animation: tr-banner 6s ease-in-out infinite; }
@keyframes tr-sky { 0% { opacity:.5 } 50% { opacity:1 } 100% { opacity:.6 } }
@keyframes tr-moon { 0% { transform: scale(1); opacity:.8 } 50% { transform: scale(1.05); opacity:1 } 100% { transform: scale(1); opacity:.9 } }
@keyframes tr-clouds { 0% { transform: translateX(0) scaleX(1) } 50% { transform: translateX(30px) scaleX(1.2) } 100% { transform: translateX(-20px) scaleX(0.9) } }
@keyframes tr-ground { 0% { transform: translateY(0) } 50% { transform: translateY(-3px) } 100% { transform: translateY(0) } }
@keyframes tr-rage { 0% { transform: rotate(-5deg) translateY(0) } 25% { transform: rotate(8deg) translateY(-4px) } 50% { transform: rotate(-6deg) translateY(-2px) } 75% { transform: rotate(10deg) translateY(-5px) } 100% { transform: rotate(-5deg) translateY(0) } }
@keyframes tr-sword { 0% { transform: rotate(-20deg) scaleY(1) } 100% { transform: rotate(20deg) scaleY(1.1) } }
@keyframes tr-banner { 0% { transform: rotate(-30deg) scaleX(1) } 50% { transform: rotate(-20deg) scaleX(1.15) } 100% { transform: rotate(-30deg) scaleX(1) } }

.scn-bedford-sick {
  background: 
    linear-gradient(180deg, #1a1a3e 0%, #2a2a5e 30%, #3a3a6e 60%, #2a2a5e 80%, #1a1a3e 100%),
    radial-gradient(ellipse at 50% 20%, #6060a0 0%, transparent 50%);
}
.scn-bedford-sick .sky-moon { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #0a0a2e 0%, transparent 100%); animation: bs-sky 20s ease-in-out infinite alternate; }
.scn-bedford-sick .castle-interior { position:absolute; inset:10% 5% 5% 5%; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius:10px; box-shadow: inset 0 0 30px rgba(0,0,0,.6); animation: bs-interior 6s ease-in-out infinite; }
.scn-bedford-sick .bedford-chair { position:absolute; bottom:10%; left:30%; width:50px; height:70px; background: linear-gradient(180deg, #6a4a3a 0%, #3a2a1a 100%); border-radius:20% 20% 10% 10% / 30% 30% 20% 20%; animation: bs-chair 8s ease-in-out infinite; }
.scn-bedford-sick .nightcap { position:absolute; bottom:75%; left:32%; width:20px; height:30px; background: linear-gradient(180deg, #e0e0f0 0%, #a0a0c0 100%); border-radius:50% 50% 10% 10% / 60% 60% 20% 20%; animation: bs-cap 3s ease-in-out infinite; }
.scn-bedford-sick .wall-figures { position:absolute; top:20%; right:10%; width:30px; height:40px; background: linear-gradient(135deg, #1a1a2a 0%, #0a0a1a 100%); border-radius:40% 40% 30% 30% / 50% 50% 40% 40%; clip-path: polygon(20% 0%, 80% 0%, 100% 100%, 0% 100%); animation: bs-figures 5s ease-in-out infinite; }
.scn-bedford-sick .chamber-pot { position:absolute; bottom:8%; left:50%; width:14px; height:10px; background: radial-gradient(ellipse at 50% 30%, #c0c0d0 0%, #8080a0 100%); border-radius:40% 40% 20% 20% / 60% 60% 30% 30%; transform: rotate(15deg); animation: bs-pot 4s ease-in-out infinite; }
.scn-bedford-sick .medicine-bottle { position:absolute; bottom:20%; left:45%; width:8px; height:16px; background: linear-gradient(180deg, #b87878 0%, #904040 100%); border-radius:2px 2px 4px 4px; animation: bs-bottle 2s ease-in-out infinite; }
@keyframes bs-sky { 0% { opacity:.6 } 50% { opacity:1 } 100% { opacity:.7 } }
@keyframes bs-interior { 0%,100% { transform: scale(1) } 50% { transform: scale(0.98) } }
@keyframes bs-chair { 0% { transform: translateY(0) rotate(0) } 50% { transform: translateY(-3px) rotate(-2deg) } 100% { transform: translateY(0) rotate(0) } }
@keyframes bs-cap { 0% { transform: rotate(-8deg) scaleY(1) } 50% { transform: rotate(8deg) scaleY(1.1) } 100% { transform: rotate(-8deg) scaleY(1) } }
@keyframes bs-figures { 0% { transform: translateX(0) rotate(0) } 50% { transform: translateX(4px) rotate(-3deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes bs-pot { 0% { transform: rotate(15deg) translateY(0) } 50% { transform: rotate(-5deg) translateY(-2px) } 100% { transform: rotate(15deg) translateY(0) } }
@keyframes bs-bottle { 0% { transform: translateY(0) scaleY(1) } 50% { transform: translateY(-5px) scaleY(1.15) } 100% { transform: translateY(0) scaleY(1) } }

.scn-talbot-fights-joan {
  background:
    linear-gradient(180deg, #4a90d9 0%, #87ceeb 40%, #fffde7 70%),
    radial-gradient(circle at 60% 20%, rgba(255,255,200,0.6) 0%, transparent 60%);
}
.scn-talbot-fights-joan .sky { position:absolute; inset:0 0 40% 0; background:linear-gradient(180deg, #5a9fff 0%, transparent 100%); animation:ti1-sky 6s ease-in-out infinite alternate; }
.scn-talbot-fights-joan .sun { position:absolute; top:12%; left:55%; width:60px; height:60px; background:radial-gradient(circle, #fff9c4 0%, #ffd54f 40%, transparent 70%); border-radius:50%; animation:ti1-sun 4s ease-in-out infinite; }
.scn-talbot-fights-joan .ground { position:absolute; bottom:0; left:0; right:0; height:40%; background:linear-gradient(180deg, #8d6e63 0%, #4e342e 100%); border-radius:60% 40% 0 0 / 30% 20% 0 0; }
.scn-talbot-fights-joan .talbot { position:absolute; bottom:18%; left:20%; width:36px; height:64px; background:linear-gradient(135deg, #1a1a2e 40%, #0a0a14 100%); border-radius:40% 40% 20% 20% / 60% 60% 30% 30%; transform-origin:bottom center; animation:ti1-fight 0.4s ease-in-out infinite alternate; }
.scn-talbot-fights-joan .joan { position:absolute; bottom:18%; right:20%; width:34px; height:62px; background:linear-gradient(135deg, #2c1a0e 40%, #4a2a1a 100%); border-radius:40% 40% 20% 20% / 60% 60% 30% 30%; transform-origin:bottom center; animation:ti1-fight 0.35s ease-in-out infinite alternate-reverse; }
.scn-talbot-fights-joan .clash { position:absolute; bottom:52%; left:50%; width:12px; height:12px; background:radial-gradient(circle, #ffe082 0%, #ff8f00 60%, transparent 80%); border-radius:50%; transform:translate(-50%,-50%); animation:ti1-spark 0.2s ease-in-out infinite; }
.scn-talbot-fights-joan .dust-a { position:absolute; bottom:22%; left:30%; width:20px; height:12px; background:rgba(200,180,150,0.5); border-radius:50%; filter:blur(4px); animation:ti1-dust 1.5s ease-in-out infinite; }
.scn-talbot-fights-joan .dust-b { position:absolute; bottom:20%; right:35%; width:16px; height:10px; background:rgba(200,180,150,0.4); border-radius:50%; filter:blur(3px); animation:ti1-dust 2s ease-in-out infinite 0.5s; }
@keyframes ti1-sky { 0% { opacity:.7; } 50% { opacity:1; } 100% { opacity:.8; } }
@keyframes ti1-sun { 0% { transform:scale(1); opacity:.9; } 50% { transform:scale(1.15); opacity:1; } 100% { transform:scale(1); opacity:.9; } }
@keyframes ti1-fight { 0% { transform:translateX(0) translateY(0) rotate(-3deg); } 50% { transform:translateX(2px) translateY(-2px) rotate(2deg); } 100% { transform:translateX(-1px) translateY(0) rotate(-1deg); } }
@keyframes ti1-spark { 0% { transform:translate(-50%,-50%) scale(1); opacity:1; } 50% { transform:translate(-50%,-50%) scale(2); opacity:0.6; } 100% { transform:translate(-50%,-50%) scale(1); opacity:0; } }
@keyframes ti1-dust { 0% { transform:translateY(0) scale(1); opacity:0.5; } 50% { transform:translateY(-8px) scale(1.2); opacity:0.3; } 100% { transform:translateY(10px) scale(0.8); opacity:0; } }

.scn-despair-after-joan {
  background:
    linear-gradient(180deg, #1a237e 0%, #3949ab 30%, #90caf9 60%, #fff9c4 90%),
    radial-gradient(ellipse at 50% 0%, #fff9c4 0%, transparent 50%);
}
.scn-despair-after-joan .sky { position:absolute; inset:0 0 50% 0; background:linear-gradient(180deg, #3949ab 0%, #90caf9 50%, transparent 100%); animation:dj2-sky 20s linear infinite alternate; }
.scn-despair-after-joan .sun { position:absolute; top:10%; left:80%; width:50px; height:50px; background:radial-gradient(circle, #fff9c4 0%, #ffeb3b 40%, transparent 70%); border-radius:50%; animation:dj2-sun 12s ease-in-out infinite; }
.scn-despair-after-joan .field { position:absolute; bottom:0; left:0; right:0; height:50%; background:linear-gradient(180deg, #4e342e 0%, #2c1a0e 60%, #1a0e06 100%); border-radius:70% 30% 0 0 / 40% 10% 0 0; }
.scn-despair-after-joan .figure { position:absolute; bottom:22%; left:50%; width:30px; height:50px; background:linear-gradient(135deg, #1a1a2e 40%, #0a0a14 100%); border-radius:50% 50% 30% 30% / 60% 60% 40% 40%; transform:translateX(-50%); transform-origin:bottom center; animation:dj2-figure 5s ease-in-out infinite; }
.scn-despair-after-joan .shadow { position:absolute; bottom:17%; left:50%; width:50px; height:10px; background:rgba(0,0,0,0.3); border-radius:50%; transform:translateX(-50%); filter:blur(2px); animation:dj2-shadow 5s ease-in-out infinite; }
.scn-despair-after-joan .swirl { position:absolute; bottom:40%; left:50%; width:120px; height:120px; background:radial-gradient(circle, rgba(255,255,200,0.15) 0%, transparent 70%); border-radius:50%; transform:translateX(-50%); animation:dj2-swirl 16s linear infinite; }
@keyframes dj2-sky { 0% { background-position:0 0; } 50% { background-position:0 10%; } 100% { background-position:0 0; } }
@keyframes dj2-sun { 0% { transform:scale(1); filter:brightness(1); } 50% { transform:scale(1.05); filter:brightness(1.2); } 100% { transform:scale(1); filter:brightness(0.9); } }
@keyframes dj2-figure { 0% { transform:translateX(-50%) rotate(0deg) translateY(0); } 25% { transform:translateX(-40%) rotate(-5deg) translateY(-2px); } 50% { transform:translateX(-60%) rotate(3deg) translateY(0); } 75% { transform:translateX(-45%) rotate(-2deg) translateY(-1px); } 100% { transform:translateX(-50%) rotate(0deg) translateY(0); } }
@keyframes dj2-shadow { 0% { transform:translateX(-50%) scale(1); opacity:0.3; } 25% { transform:translateX(-40%) scale(1.1); opacity:0.2; } 50% { transform:translateX(-60%) scale(0.9); opacity:0.4; } 75% { transform:translateX(-45%) scale(1.05); opacity:0.25; } 100% { transform:translateX(-50%) scale(1); opacity:0.3; } }
@keyframes dj2-swirl { 0% { transform:translateX(-50%) rotate(0deg); opacity:0; } 20% { opacity:0.3; } 50% { transform:translateX(-50%) rotate(180deg) scale(1.1); opacity:0.1; } 80% { opacity:0.3; } 100% { transform:translateX(-50%) rotate(360deg); opacity:0; } }

.scn-defeat-and-shame {
  background:
    linear-gradient(180deg, #263238 0%, #455a64 30%, #90a4ae 60%, #cfd8dc 100%),
    radial-gradient(ellipse at 30% 100%, #b0bec5 0%, transparent 60%);
}
.scn-defeat-and-shame .sky { position:absolute; inset:0 0 30% 0; background:linear-gradient(180deg, #546e7a 0%, transparent 100%); animation:ds3-sky 30s linear infinite alternate; }
.scn-defeat-and-shame .sun { position:absolute; top:15%; left:20%; width:40px; height:40px; background:radial-gradient(circle, #fff9c4 0%, #ffe082 40%, transparent 70%); border-radius:50%; animation:ds3-sun 8s ease-in-out infinite; }
.scn-defeat-and-shame .trench { position:absolute; bottom:0; left:0; right:0; height:30%; background:linear-gradient(180deg, #3e2723 0%, #1a0e06 100%); border-radius:30% 70% 0 0 / 20% 40% 0 0; }
.scn-defeat-and-shame .soldier1 { position:absolute; bottom:25%; left:30%; width:24px; height:44px; background:linear-gradient(135deg, #1a1a2e 50%, #0a0a14 100%); border-radius:40% 40% 20% 20% / 60% 60% 30% 30%; transform-origin:bottom center; animation:ds3-soldier 8s ease-in-out infinite; }
.scn-defeat-and-shame .soldier2 { position:absolute; bottom:24%; left:45%; width:22px; height:40px; background:linear-gradient(135deg, #1a1a2e 50%, #0a0a14 100%); border-radius:40% 40% 20% 20% / 60% 60% 30% 30%; transform-origin:bottom center; animation:ds3-soldier 9s ease-in-out infinite 1s; }
.scn-defeat-and-shame .flag { position:absolute; bottom:45%; left:55%; width:8px; height:50px; background:linear-gradient(180deg, #5e1a1d 0%, #3a0e10 100%); border-radius:2px; transform-origin:bottom center; animation:ds3-flag 6s ease-in-out infinite; }
.scn-defeat-and-shame .spear { position:absolute; bottom:30%; left:55%; width:4px; height:60px; background:linear-gradient(180deg, #78909c 0%, #455a64 100%); border-radius:2px; transform:translateX(-50%); animation:ds3-spear 8s ease-in-out infinite; }
@keyframes ds3-sky { 0% { opacity:0.6; } 50% { opacity:0.8; } 100% { opacity:0.5; } }
@keyframes ds3-sun { 0% { transform:scale(1); filter:brightness(0.8); } 50% { transform:scale(1.1); filter:brightness(1); } 100% { transform:scale(0.95); filter:brightness(0.7); } }
@keyframes ds3-soldier { 0% { transform:translateY(0) rotate(0deg); } 25% { transform:translateY(-2px) rotate(-2deg); } 50% { transform:translateY(0) rotate(0deg); } 75% { transform:translateY(1px) rotate(1deg); } 100% { transform:translateY(0) rotate(0deg); } }
@keyframes ds3-flag { 0% { transform:rotate(0deg) scaleY(1); } 25% { transform:rotate(-10deg) scaleY(0.9); } 50% { transform:rotate(0deg) scaleY(1); } 75% { transform:rotate(5deg) scaleY(0.95); } 100% { transform:rotate(0deg) scaleY(1); } }
@keyframes ds3-spear { 0% { transform:translateX(-50%) rotate(0deg); } 50% { transform:translateX(-50%) rotate(2deg); } 100% { transform:translateX(-50%) rotate(0deg); } }

.scn-joan-triumph {
  background:
    linear-gradient(180deg, #1a237e 0%, #3949ab 40%, #64b5f6 60%, #fff9c4 100%),
    radial-gradient(ellipse at 80% 20%, #fff9c4 0%, transparent 50%);
}
.scn-joan-triumph .sky { position:absolute; inset:0 0 40% 0; background:linear-gradient(180deg, #3949ab 0%, #64b5f6 40%, transparent 100%); animation:jt4-sky 15s ease-in-out infinite alternate; }
.scn-joan-triumph .sun { position:absolute; top:8%; right:15%; width:70px; height:70px; background:radial-gradient(circle, #fff9c4 0%, #ffeb3b 40%, #ff8f00 70%, transparent 90%); border-radius:50%; animation:jt4-sun 6s ease-in-out infinite; }
.scn-joan-triumph .wall { position:absolute; bottom:20%; left:10%; right:10%; height:40%; background:linear-gradient(180deg, #8d6e63 0%, #5d4037 100%); border-radius:10% 10% 0 0 / 20% 20% 0 0; box-shadow: inset 0 6px 12px rgba(0,0,0,0.4); }
.scn-joan-triumph .joan { position:absolute; bottom:22%; left:45%; width:34px; height:60px; background:linear-gradient(135deg, #c8553d 40%, #a0461a 100%); border-radius:40% 40% 20% 20% / 60% 60% 30% 30%; transform-origin:bottom center; animation:jt4-joan 4s ease-in-out infinite; }
.scn-joan-triumph .banner { position:absolute; bottom:60%; left:48%; width:10px; height:50px; background:linear-gradient(180deg, #702243 0%, #5e1a1d 100%); border-radius:3px; transform-origin:bottom center; animation:jt4-banner 3s ease-in-out infinite; }
.scn-joan-triumph .ray-a { position:absolute; top:10%; left:20%; width:40%; height:4px; background:linear-gradient(90deg, transparent, rgba(255,255,200,0.5), transparent); transform:rotate(20deg); animation:jt4-ray 4s ease-in-out infinite; }
.scn-joan-triumph .ray-b { position:absolute; top:10%; left:20%; width:40%; height:3px; background:linear-gradient(90deg, transparent, rgba(255,255,200,0.3), transparent); transform:rotate(-15deg); animation:jt4-ray 5s ease-in-out infinite 1s; }
@keyframes jt4-sky { 0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.9; } }
@keyframes jt4-sun { 0% { transform:scale(1); } 50% { transform:scale(1.2); } 100% { transform:scale(1); } }
@keyframes jt4-joan { 0% { transform:translateX(-50%) rotate(0deg) translateY(0); } 25% { transform:translateX(-45%) rotate(-2deg) translateY(-2px); } 50% { transform:translateX(-50%) rotate(0deg) translateY(0); } 75% { transform:translateX(-55%) rotate(2deg) translateY(-1px); } 100% { transform:translateX(-50%) rotate(0deg) translateY(0); } }
@keyframes jt4-banner { 0% { transform:rotate(0deg) scaleY(1); } 25% { transform:rotate(8deg) scaleY(1.1); } 50% { transform:rotate(-4deg) scaleY(0.9); } 75% { transform:rotate(6deg) scaleY(1.05); } 100% { transform:rotate(0deg) scaleY(1); } }
@keyframes jt4-ray { 0% { opacity:0.2; transform:translateX(-30px); } 50% { opacity:0.6; transform:translateX(10px); } 100% { opacity:0.2; transform:translateX(-30px); } }

.scn-welcome-and-envy {
  background: linear-gradient(180deg, #f5e6c8 0%, #e8d4a8 40%, #d4b88a 100%),
              radial-gradient(ellipse at 30% 70%, #f0d89a 0%, transparent 60%);
}
.scn-welcome-and-envy .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(180deg, #c4a882 0%, #b09068 100%);
  border-radius: 4% 4% 0 0;
  box-shadow: inset 0 8px 12px rgba(0,0,0,0.15);
}
.scn-welcome-and-envy .throne {
  position: absolute; bottom: 25%; left: 50%; width: 80px; height: 110px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #a87a52 0%, #7a5432 100%);
  border-radius: 8% 8% 4% 4% / 10% 10% 4% 4%;
  box-shadow: 0 6px 20px rgba(0,0,0,0.3);
  animation: wi1-throne 8s ease-in-out infinite;
}
.scn-welcome-and-envy .king {
  position: absolute; bottom: 28%; left: 50%; width: 30px; height: 60px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #2a1a0a 0%, #1a0e05 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: wi1-king 6s ease-in-out infinite;
}
.scn-welcome-and-envy .courtier {
  position: absolute; bottom: 27%; left: 35%; width: 22px; height: 48px;
  background: linear-gradient(180deg, #4a3a28 0%, #2a1e12 100%);
  border-radius: 45% 45% 35% 35% / 55% 55% 35% 35%;
  transform-origin: bottom center;
  animation: wi1-courtier 10s ease-in-out infinite;
}
.scn-welcome-and-envy .banner-left {
  position: absolute; bottom: 32%; left: 18%; width: 12px; height: 80px;
  background: linear-gradient(180deg, #c8553d 0%, #9a3d2a 100%);
  border-radius: 2%;
  transform-origin: bottom left;
  animation: wi1-banner-left 7s ease-in-out infinite alternate;
}
.scn-welcome-and-envy .banner-right {
  position: absolute; bottom: 32%; right: 18%; width: 12px; height: 80px;
  background: linear-gradient(180deg, #c8553d 0%, #9a3d2a 100%);
  border-radius: 2%;
  transform-origin: bottom right;
  animation: wi1-banner-right 7s ease-in-out infinite alternate;
}
.scn-welcome-and-envy .window {
  position: absolute; top: 12%; left: 60%; width: 40px; height: 60px;
  background: radial-gradient(circle, #ffe080 0%, #f0c860 70%, transparent 100%);
  border-radius: 4%;
  border: 3px solid #8a704a;
  box-shadow: 0 0 30px 10px rgba(255,224,128,0.6);
  animation: wi1-window 4s ease-in-out infinite alternate;
}
@keyframes wi1-throne {
  0% { transform: translateX(-50%) scaleY(1); }
  50% { transform: translateX(-50%) scaleY(1.02); }
  100% { transform: translateX(-50%) scaleY(1); }
}
@keyframes wi1-king {
  0%, 100% { transform: translateX(-50%) rotate(-2deg); }
  50% { transform: translateX(-50%) rotate(2deg) translateY(-1px); }
}
@keyframes wi1-courtier {
  0%, 100% { transform: translate(0, 0) rotate(0); }
  25% { transform: translate(4px, -2px) rotate(2deg); }
  50% { transform: translate(8px, 0) rotate(-1deg); }
  75% { transform: translate(4px, -1px) rotate(1deg); }
}
@keyframes wi1-banner-left {
  0% { transform: rotate(-5deg); }
  50% { transform: rotate(8deg); }
  100% { transform: rotate(-3deg); }
}
@keyframes wi1-banner-right {
  0% { transform: rotate(5deg); }
  50% { transform: rotate(-8deg); }
  100% { transform: rotate(3deg); }
}
@keyframes wi1-window {
  0%, 100% { opacity: 0.7; box-shadow: 0 0 20px 8px rgba(255,224,128,0.4); }
  50% { opacity: 1; box-shadow: 0 0 40px 16px rgba(255,224,128,0.7); }
}

.scn-exeter-prophecy {
  background: linear-gradient(180deg, #1c1828 0%, #282440 50%, #1c1828 100%),
              radial-gradient(ellipse at 50% 60%, #4a3840 0%, transparent 70%);
}
.scn-exeter-prophecy .wall {
  position: absolute; inset: 0; background: linear-gradient(90deg, #2e2a3a 0%, #1c1828 50%, #2e2a3a 100%);
}
.scn-exeter-prophecy .fireplace {
  position: absolute; bottom: 20%; left: 50%; width: 100px; height: 80px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0e08 100%);
  border-radius: 8% 8% 4% 4% / 10% 10% 6% 6%;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.6);
}
.scn-exeter-prophecy .embers {
  position: absolute; bottom: 18%; left: 50%; width: 40px; height: 30px;
  transform: translateX(-50%);
  background: radial-gradient(circle at 50% 100%, #ff6a30 0%, #c04020 60%, transparent 80%);
  border-radius: 50%;
  filter: blur(3px);
  animation: ep-ember 2s ease-in-out infinite alternate;
}
.scn-exeter-prophecy .prophet {
  position: absolute; bottom: 24%; left: 35%; width: 28px; height: 70px;
  background: linear-gradient(180deg, #2a1a20 0%, #120a0e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ep-prophet 9s ease-in-out infinite;
}
.scn-exeter-prophecy .shadow {
  position: absolute; bottom: 20%; left: 30%; width: 80px; height: 40px;
  background: radial-gradient(ellipse at 50% 100%, rgba(0,0,0,0.5) 0%, transparent 70%);
  animation: ep-shadow 6s ease-in-out infinite alternate;
}
.scn-exeter-prophecy .chain {
  position: absolute; bottom: 22%; right: 30%; width: 6px; height: 50px;
  background: linear-gradient(180deg, #444 0%, #222 100%);
  border-radius: 30%;
  box-shadow: 0 2px 4px rgba(0,0,0,0.4);
  animation: ep-chain 4s ease-in-out infinite;
}
@keyframes ep-ember {
  0% { opacity: 0.6; transform: scale(0.9); }
  50% { opacity: 1; transform: scale(1.1); }
  100% { opacity: 0.7; transform: scale(0.95); }
}
@keyframes ep-prophet {
  0%, 100% { transform: translateY(0) rotate(-2deg); }
  30% { transform: translateY(2px) rotate(1deg); }
  60% { transform: translateY(-1px) rotate(-1deg); }
}
@keyframes ep-shadow {
  0% { transform: scaleX(0.8); opacity: 0.4; }
  50% { transform: scaleX(1.2); opacity: 0.7; }
  100% { transform: scaleX(0.9); opacity: 0.5; }
}
@keyframes ep-chain {
  0%, 100% { transform: rotate(0); }
  50% { transform: rotate(5deg); }
}

.scn-joan-disguised {
  background: linear-gradient(180deg, #4a325a 0%, #6a4a6a 30%, #8a6a5a 60%, #b08a6a 100%),
              radial-gradient(ellipse at 50% 0%, #6a4a6a 0%, transparent 70%);
}
.scn-joan-disguised .sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #3a2a4a 0%, #6a4a6a 100%);
  animation: jd-sky 20s ease-in-out infinite alternate;
}
.scn-joan-disguised .gates {
  position: absolute; bottom: 20%; left: 30%; right: 30%; height: 60%;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 8% 8% 0 0;
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.5);
  clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);
  animation: jd-gate 3s ease-in-out infinite alternate;
}
.scn-joan-disguised .joan {
  position: absolute; bottom: 25%; left: 45%; width: 24px; height: 58px;
  background: linear-gradient(180deg, #1a1a2e 0%, #0e0e1a 100%);
  border-radius: 45% 45% 35% 35% / 55% 55% 35% 35%;
  transform-origin: bottom center;
  animation: jd-joan 4s ease-in-out infinite;
}
.scn-joan-disguised .soldier-a {
  position: absolute; bottom: 22%; left: 55%; width: 22px; height: 54px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1210 100%);
  border-radius: 45% 45% 35% 35% / 55% 55% 35% 35%;
  animation: jd-soldier-a 6s ease-in-out infinite;
}
.scn-joan-disguised .soldier-b {
  position: absolute; bottom: 22%; left: 38%; width: 22px; height: 54px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1210 100%);
  border-radius: 45% 45% 35% 35% / 55% 55% 35% 35%;
  animation: jd-soldier-b 6s ease-in-out infinite 3s;
}
.scn-joan-disguised .sack {
  position: absolute; bottom: 18%; left: 62%; width: 18px; height: 22px;
  background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%);
  border-radius: 30% 30% 20% 20%;
  box-shadow: 0 2px 6px rgba(0,0,0,0.4);
  animation: jd-sack 8s ease-in-out infinite alternate;
}
.scn-joan-disguised .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 6% 6% 0 0;
}
@keyframes jd-sky {
  0% { opacity: 0.6; }
  50% { opacity: 1; }
  100% { opacity: 0.7; }
}
@keyframes jd-gate {
  0% { transform: scaleY(1); }
  50% { transform: scaleY(0.98); }
  100% { transform: scaleY(1.02); }
}
@keyframes jd-joan {
  0%, 100% { transform: translateX(0) rotate(-3deg); }
  25% { transform: translateX(4px) rotate(3deg); }
  50% { transform: translateX(8px) rotate(-2deg); }
  75% { transform: translateX(4px) rotate(2deg); }
}
@keyframes jd-soldier-a {
  0%, 100% { transform: translateY(0) rotate(0); }
  30% { transform: translateY(2px) rotate(-2deg); }
  60% { transform: translateY(-1px) rotate(1deg); }
}
@keyframes jd-soldier-b {
  0%, 100% { transform: translateY(0) rotate(0); }
  30% { transform: translateY(2px) rotate(2deg); }
  60% { transform: translateY(-1px) rotate(-1deg); }
}
@keyframes jd-sack {
  0% { transform: translateY(0) scaleX(1); }
  50% { transform: translateY(-2px) scaleX(1.05); }
  100% { transform: translateY(0) scaleX(1); }
}

.scn-gaining-entry {
  background: linear-gradient(180deg, #4a3050 0%, #6a4a5a 40%, #8a5a4a 70%, #a07a5a 100%),
              radial-gradient(ellipse at 50% 0%, #6a4a5a 0%, transparent 60%);
}
.scn-gaining-entry .street {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 6% 6% 0 0;
  perspective: 600px;
}
.scn-gaining-entry .stall-left {
  position: absolute; bottom: 20%; left: 10%; width: 50px; height: 40px;
  background: linear-gradient(180deg, #6a5a42 0%, #4a3a2a 100%);
  border-radius: 4%;
  box-shadow: 2px 4px 8px rgba(0,0,0,0.3);
  animation: ge-stall 10s ease-in-out infinite alternate;
}
.scn-gaining-entry .stall-right {
  position: absolute; bottom: 20%; right: 10%; width: 50px; height: 40px;
  background: linear-gradient(180deg, #6a5a42 0%, #4a3a2a 100%);
  border-radius: 4%;
  box-shadow: -2px 4px 8px rgba(0,0,0,0.3);
  animation: ge-stall 10s ease-in-out infinite alternate 5s;
}
.scn-gaining-entry .figure-1 {
  position: absolute; bottom: 22%; left: 25%; width: 20px; height: 48px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0e0e14 100%);
  border-radius: 45% 45% 35% 35% / 55% 55% 35% 35%;
  animation: ge-figure1 5s ease-in-out infinite;
}
.scn-gaining-entry .figure-2 {
  position: absolute; bottom: 22%; right: 25%; width: 20px; height: 48px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0e0e14 100%);
  border-radius: 45% 45% 35% 35% / 55% 55% 35% 35%;
  animation: ge-figure2 5s ease-in-out infinite 2.5s;
}
.scn-gaining-entry .bell {
  position: absolute; top: 10%; left: 50%; width: 30px; height: 40px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #6a5a3a 0%, #4a3a22 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 20% 20%;
  box-shadow: 0 4px 12px rgba(0,0,0,0.3);
  animation: ge-bell 2s ease-in-out infinite alternate;
}
.scn-gaining-entry .shadow {
  position: absolute; bottom: 15%; left: 20%; right: 20%; height: 10%;
  background: linear-gradient(180deg, rgba(0,0,0,0.2) 0%, transparent 100%);
  animation: ge-shadow 8s ease-in-out infinite alternate;
}
@keyframes ge-stall {
  0% { transform: translateY(0) scaleX(1); }
  50% { transform: translateY(-2px) scaleX(1.02); }
  100% { transform: translateY(0) scaleX(1); }
}
@keyframes ge-figure1 {
  0%, 100% { transform: translateX(0) rotate(-1deg); }
  20% { transform: translateX(3px) rotate(2deg); }
  40% { transform: translateX(6px) rotate(-1deg); }
  60% { transform: translateX(3px) rotate(0deg); }
}
@keyframes ge-figure2 {
  0%, 100% { transform: translateX(0) rotate(1deg); }
  20% { transform: translateX(-3px) rotate(-2deg); }
  40% { transform: translateX(-6px) rotate(1deg); }
  60% { transform: translateX(-3px) rotate(0deg); }
}
@keyframes ge-bell {
  0% { transform: translateX(-50%) rotate(0); }
  25% { transform: translateX(-50%) rotate(8deg); }
  50% { transform: translateX(-50%) rotate(0deg); }
  75% { transform: translateX(-50%) rotate(-8deg); }
  100% { transform: translateX(-50%) rotate(0); }
}
@keyframes ge-shadow {
  0% { opacity: 0.3; transform: scaleY(0.8); }
  50% { opacity: 0.6; transform: scaleY(1.2); }
  100% { opacity: 0.4; transform: scaleY(0.9); }
}

.scn-introduction-of-joan {
  background:
    linear-gradient(180deg, #fce4b8 0%, #c4a87a 40%, #7a6a4a 100%),
    radial-gradient(ellipse at 40% 30%, #ffedb0 0%, transparent 40%);
}

.scn-introduction-of-joan .sky {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #8cb0d8 0%, transparent 100%);
  opacity: 0.5; animation: ioj-sky 20s ease-in-out infinite;
}

.scn-introduction-of-joan .sun {
  position: absolute; top: 12%; left: 28%;
  width: 60px; height: 60px;
  background: radial-gradient(circle, #fff7d6 0%, #f8d88a 50%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 40px 20px #f8d88a, 0 0 80px 40px rgba(248,216,138,0.4);
  animation: ioj-sun 6s ease-in-out infinite alternate;
}

.scn-introduction-of-joan .castle {
  position: absolute; bottom: 30%; left: 50%;
  width: 120px; height: 100px;
  transform: translateX(-50%);
  background:
    linear-gradient(180deg, #8a6a4a 0%, #5a3a2a 100%);
  border-radius: 6% 6% 0 0;
  box-shadow: 0 4px 12px rgba(0,0,0,0.5);
}

.scn-introduction-of-joan .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #6a7a3a 0%, #3a4a1a 100%);
  border-radius: 80% 60% 0 0 / 60% 40% 0 0;
}

.scn-introduction-of-joan .figure {
  position: absolute; bottom: 28%; left: 20%;
  width: 22px; height: 50px;
  background: linear-gradient(180deg, #2a2a1a 0%, #0a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ioj-figure 8s ease-in-out infinite;
}

.scn-introduction-of-joan .ray-a,
.scn-introduction-of-joan .ray-b {
  position: absolute; top: 18%;
  width: 120px; height: 4px;
  background: linear-gradient(90deg, transparent 0%, rgba(255,237,176,0.6) 50%, transparent 100%);
  filter: blur(2px);
  transform-origin: left center;
  animation: ioj-rays 10s ease-in-out infinite alternate;
}

.scn-introduction-of-joan .ray-a { left: 32%; transform: rotate(-15deg); }
.scn-introduction-of-joan .ray-b { left: 38%; transform: rotate(10deg); animation-delay: -3s; }

@keyframes ioj-sky {
  0% { opacity: 0.4; }
  50% { opacity: 0.7; }
  100% { opacity: 0.4; }
}

@keyframes ioj-sun {
  0% { transform: scale(1); box-shadow: 0 0 40px 20px #f8d88a, 0 0 80px 40px rgba(248,216,138,0.4); }
  50% { transform: scale(1.08); box-shadow: 0 0 60px 30px #ffda8a, 0 0 100px 50px rgba(255,218,138,0.5); }
  100% { transform: scale(0.96); box-shadow: 0 0 30px 15px #f8d88a, 0 0 60px 30px rgba(248,216,138,0.3); }
}

@keyframes ioj-figure {
  0% { transform: translateX(0) translateY(0) rotate(-1deg); }
  25% { transform: translateX(8px) translateY(-2px) rotate(0deg); }
  50% { transform: translateX(16px) translateY(0) rotate(1deg); }
  75% { transform: translateX(24px) translateY(-1px) rotate(0deg); }
  100% { transform: translateX(32px) translateY(0) rotate(-1deg); }
}

@keyframes ioj-rays {
  0% { opacity: 0.2; transform: scaleX(0.6); }
  50% { opacity: 0.8; transform: scaleX(1.4); }
  100% { opacity: 0.3; transform: scaleX(0.8); }
}

/* SCENE 2 */
.scn-test-of-joan {
  background:
    linear-gradient(180deg, #1a1a2e 0%, #2a203a 40%, #0e0e1a 100%),
    radial-gradient(ellipse at 50% 60%, #2a203a 0%, transparent 70%);
}

.scn-test-of-joan .bg-deep {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, transparent 0%, rgba(10,10,20,0.6) 100%);
  animation: toj-dark 12s ease-in-out infinite;
}

.scn-test-of-joan .pillar-left,
.scn-test-of-joan .pillar-right {
  position: absolute; bottom: 0;
  width: 18px; height: 80%;
  background: linear-gradient(90deg, #3a2a4a 0%, #5a4a6a 50%, #3a2a4a 100%);
  border-radius: 4px;
  box-shadow: 0 0 20px rgba(0,0,0,0.6);
}

.scn-test-of-joan .pillar-left { left: 12%; }
.scn-test-of-joan .pillar-right { right: 12%; }

.scn-test-of-joan .throne {
  position: absolute; bottom: 20%; left: 50%;
  width: 70px; height: 80px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 10% 10% 80% 80% / 20% 20% 60% 60%;
  box-shadow: 0 6px 20px rgba(0,0,0,0.7);
  animation: toj-throne 10s ease-in-out infinite alternate;
}

.scn-test-of-joan .figure-joan {
  position: absolute; bottom: 22%; left: 28%;
  width: 20px; height: 46px;
  background: linear-gradient(180deg, #1a1a2e 0%, #0a0a1a 100%);
  border-radius: 40% 40% 50% 50% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: toj-joan 6s ease-in-out infinite;
}

.scn-test-of-joan .figure-reignier {
  position: absolute; bottom: 24%; left: 58%;
  width: 22px; height: 50px;
  background: linear-gradient(180deg, #2a2a3e 0%, #0e0e1a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: toj-reignier 8s ease-in-out infinite alternate;
}

.scn-test-of-joan .shadow {
  position: absolute; bottom: 10%; left: 30%;
  width: 80px; height: 12px;
  background: radial-gradient(ellipse, rgba(0,0,0,0.6) 0%, transparent 80%);
  border-radius: 50%;
  animation: toj-shadow 6s ease-in-out infinite;
}

@keyframes toj-dark {
  0% { opacity: 0.7; }
  50% { opacity: 0.9; }
  100% { opacity: 0.7; }
}

@keyframes toj-throne {
  0% { transform: translateX(-50%) scale(1); }
  50% { transform: translateX(-50%) scale(1.02) translateY(-2px); }
  100% { transform: translateX(-50%) scale(0.98); }
}

@keyframes toj-joan {
  0% { transform: translateX(0) translateY(0) rotate(-2deg); }
  25% { transform: translateX(4px) translateY(-1px) rotate(0deg); }
  50% { transform: translateX(8px) translateY(1px) rotate(2deg); }
  75% { transform: translateX(4px) translateY(2px) rotate(1deg); }
  100% { transform: translateX(0) translateY(0) rotate(-2deg); }
}

@keyframes toj-reignier {
  0% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-3px) rotate(2deg); }
  100% { transform: translateY(2px) rotate(-1deg); }
}

@keyframes toj-shadow {
  0% { transform: scaleX(1); opacity: 0.5; }
  50% { transform: scaleX(1.2); opacity: 0.7; }
  100% { transform: scaleX(0.9); opacity: 0.4; }
}

/* SCENE 3 */
.scn-joan-recognizes-dauphin {
  background:
    linear-gradient(180deg, #1c1828 0%, #2a203a 50%, #0e0c1a 100%),
    radial-gradient(ellipse at 50% 70%, #3a2e4e 0%, transparent 60%);
}

.scn-joan-recognizes-dauphin .bg-dim {
  position: absolute; inset: 0;
  background: linear-gradient(135deg, rgba(0,0,0,0.3) 0%, transparent 40%, rgba(0,0,0,0.4) 100%);
  animation: jrd-dim 15s ease-in-out infinite;
}

.scn-joan-recognizes-dauphin .curtain-left,
.scn-joan-recognizes-dauphin .curtain-right {
  position: absolute; bottom: 0;
  width: 25%; height: 100%;
  background: linear-gradient(180deg, #4a3a4e 0%, #2a1a2e 100%);
  border-radius: 0 10% 0 0 / 0 80% 0 0;
  box-shadow: -6px 0 20px rgba(0,0,0,0.6);
  animation: jrd-curtain 8s ease-in-out infinite alternate;
}

.scn-joan-recognizes-dauphin .curtain-left { left: 0; transform-origin: left center; }
.scn-joan-recognizes-dauphin .curtain-right { right: 0; transform-origin: right center; animation-delay: -4s; }

.scn-joan-recognizes-dauphin .figure-joan {
  position: absolute; bottom: 22%; left: 38%;
  width: 20px; height: 50px;
  background: linear-gradient(180deg, #1a1a2e 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: jrd-joan 5s ease-in-out infinite;
}

.scn-joan-recognizes-dauphin .figure-dauphin {
  position: absolute; bottom: 24%; left: 56%;
  width: 22px; height: 48px;
  background: linear-gradient(180deg, #2a2a3e 0%, #10101a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: jrd-dauphin 7s ease-in-out infinite alternate;
}

.scn-joan-recognizes-dauphin .spotlight {
  position: absolute; top: 10%; left: 40%; width: 60px; height: 80px;
  background: radial-gradient(ellipse at center, rgba(200,180,120,0.3) 0%, transparent 70%);
  pointer-events: none;
  animation: jrd-spotlight 9s ease-in-out infinite alternate;
}

@keyframes jrd-dim {
  0% { opacity: 0.6; }
  50% { opacity: 0.8; }
  100% { opacity: 0.6; }
}

@keyframes jrd-curtain {
  0% { transform: scaleX(1); }
  50% { transform: scaleX(0.95) translateY(-2px); }
  100% { transform: scaleX(1.02); }
}

@keyframes jrd-joan {
  0% { transform: translateX(0) translateY(0) rotate(-1deg); }
  25% { transform: translateX(-4px) translateY(-2px) rotate(0deg); }
  50% { transform: translateX(-8px) translateY(0) rotate(1deg); }
  75% { transform: translateX(-4px) translateY(1px) rotate(0deg); }
  100% { transform: translateX(0) translateY(0) rotate(-1deg); }
}

@keyframes jrd-dauphin {
  0% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-4px) scale(1.02); }
  100% { transform: translateY(2px) scale(0.98); }
}

@keyframes jrd-spotlight {
  0% { opacity: 0.2; transform: scale(0.8); }
  50% { opacity: 0.6; transform: scale(1.3); }
  100% { opacity: 0.3; transform: scale(1); }
}

/* SCENE 4 */
.scn-joan-tells-her-story {
  background:
    linear-gradient(180deg, #0e0a1a 0%, #1c1428 40%, #0a0812 100%),
    radial-gradient(ellipse at 50% 80%, #2a1a3a 0%, transparent 70%);
}

.scn-joan-tells-her-story .bg-night {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at 30% 50%, rgba(40,30,60,0.4) 0%, transparent 60%);
  animation: jts-night 20s ease-in-out infinite;
}

.scn-joan-tells-her-story .candle {
  position: absolute; bottom: 30%; left: 20%;
  width: 10px; height: 20px;
  background: linear-gradient(180deg, #f0c868 0%, #c09040 100%);
  border-radius: 2px 2px 4px 4px;
  box-shadow: 0 0 10px 5px #c09040, 0 0 30px 15px rgba(192,144,64,0.4);
  animation: jts-candle 3s ease-in-out infinite alternate;
}

.scn-joan-tells-her-story .staff {
  position: absolute; bottom: 18%; left: 28%;
  width: 6px; height: 60px;
  background: linear-gradient(180deg, #5a3a1a 0%, #2a1a0a 100%);
  border-radius: 3px;
  transform: rotate(-10deg);
  transform-origin: bottom center;
  animation: jts-staff 6s ease-in-out infinite;
}

.scn-joan-tells-her-story .sheep {
  position: absolute; bottom: 10%; left: 60%;
  width: 30px; height: 18px;
  background: radial-gradient(ellipse at 40% 30%, #8a7a6a 0%, #5a4a3a 100%);
  border-radius: 50% 50% 30% 30% / 70% 70% 30% 30%;
  animation: jts-sheep 12s ease-in-out infinite;
}

.scn-joan-tells-her-story .figure-joan {
  position: absolute; bottom: 24%; left: 42%;
  width: 20px; height: 50px;
  background: linear-gradient(180deg, #1a1a2e 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: jts-joan 8s ease-in-out infinite;
}

.scn-joan-tells-her-story .halo {
  position: absolute; top: 10%; left: 36%;
  width: 40px; height: 40px;
  background: radial-gradient(circle, rgba(200,180,140,0.25) 0%, transparent 70%);
  border-radius: 50%;
  animation: jts-halo 7s ease-in-out infinite alternate;
}

@keyframes jts-night {
  0% { opacity: 0.5; }
  50% { opacity: 0.8; }
  100% { opacity: 0.5; }
}

@keyframes jts-candle {
  0% { transform: scaleY(0.9); box-shadow: 0 0 8px 4px #c09040, 0 0 20px 10px rgba(192,144,64,0.3); }
  50% { transform: scaleY(1.1); box-shadow: 0 0 14px 6px #d4a850, 0 0 40px 20px rgba(212,168,80,0.5); }
  100% { transform: scaleY(0.95); box-shadow: 0 0 10px 5px #c09040, 0 0 25px 12px rgba(192,144,64,0.4); }
}

@keyframes jts-staff {
  0% { transform: rotate(-10deg) translateY(0); }
  50% { transform: rotate(-8deg) translateY(-3px); }
  100% { transform: rotate(-12deg) translateY(1px); }
}

@keyframes jts-sheep {
  0% { transform: translateX(0) scale(1); }
  25% { transform: translateX(8px) scale(0.95); }
  50% { transform: translateX(16px) scale(1.02); }
  75% { transform: translateX(8px) scale(0.98); }
  100% { transform: translateX(0) scale(1); }
}

@keyframes jts-joan {
  0% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-3px) rotate(1deg); }
  100% { transform: translateY(2px) rotate(-1deg); }
}

@keyframes jts-halo {
  0% { opacity: 0.1; transform: scale(0.8); }
  50% { opacity: 0.5; transform: scale(1.4); }
  100% { opacity: 0.2; transform: scale(1); }
}

.scn-master-gunner-plan {
  background:
    linear-gradient(180deg, #e8d5a0 0%, #c8a86a 30%, #9a7a4a 60%, #6a5230 100%),
    radial-gradient(ellipse at 30% 60%, #f0d890 0%, transparent 60%);
}
.scn-master-gunner-plan .wall-bg { position:absolute; inset:0 0 0 0; background: linear-gradient(180deg, #c8b078 0%, #a08858 50%, #7a6a40 100%); }
.scn-master-gunner-plan .wall-stone { position:absolute; bottom:40%; left:0; right:0; height:60%; background: linear-gradient(180deg, #8a7648 0%, #5a4a2a 100%); box-shadow: inset 0 12px 20px rgba(0,0,0,.3); border-radius:10% 10% 0 0 / 30% 30% 0 0; }
.scn-master-gunner-plan .cannon { position:absolute; bottom:48%; left:28%; width:80px; height:20px; background: linear-gradient(90deg, #3a3a2a 0%, #5a4a3a 50%, #3a3a2a 100%); border-radius:10px 40px 40px 10px; transform: rotate(-8deg); box-shadow: -2px 2px 8px rgba(0,0,0,.5); }
.scn-master-gunner-plan .master-fig { position:absolute; bottom:42%; left:50%; width:28px; height:44px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius:45% 45% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: mgp-walk 5s ease-in-out infinite; animation-delay:0s; }
.scn-master-gunner-plan .boy-fig { position:absolute; bottom:40%; left:62%; width:16px; 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: mgp-walk 5s ease-in-out infinite; animation-delay:-1.2s; }
.scn-master-gunner-plan .sunray { position:absolute; top:8%; left:20%; width:140%; height:60%; background: linear-gradient(135deg, rgba(255,230,160,.25) 0%, transparent 50%, rgba(200,170,100,.08) 100%); transform: rotate(-10deg); animation: mgp-sweep 14s ease-in-out infinite alternate; }
.scn-master-gunner-plan .shadow-stripe { position:absolute; bottom:45%; right:10%; width:30%; height:8%; background: linear-gradient(90deg, rgba(0,0,0,.35) 0%, transparent 100%); transform: skewX(-20deg); animation: mgp-stretch 10s ease-in-out infinite alternate; }
.scn-master-gunner-plan .cannon-smoke { position:absolute; bottom:54%; left:22%; width:20px; height:16px; background: radial-gradient(circle, rgba(200,190,170,.3) 0%, transparent 70%); filter: blur(6px); animation: mgp-puff 6s ease-in-out infinite; }
@keyframes mgp-walk { 0% { transform: translateX(0) rotate(-1deg) } 30% { transform: translateX(3px) translateY(-1px) rotate(1deg) } 60% { transform: translateX(-2px) translateY(0) rotate(-1deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes mgp-sweep { 0% { opacity:.3; transform: rotate(-15deg) translateX(-5%) } 50% { opacity:.7; transform: rotate(-5deg) translateX(2%) } 100% { opacity:.4; transform: rotate(-10deg) translateX(-2%) } }
@keyframes mgp-stretch { 0% { transform: skewX(-25deg) scaleX(1) } 50% { transform: skewX(-15deg) scaleX(1.2) } 100% { transform: skewX(-20deg) scaleX(.9) } }
@keyframes mgp-puff { 0% { opacity:.1; transform: scale(.8) translateX(0) } 40% { opacity:.5; transform: scale(1.4) translateX(12px) } 100% { opacity:0; transform: scale(1.8) translateX(30px) } }

.scn-gunner-boy-watch {
  background:
    linear-gradient(180deg, #d4c49a 0%, #b8a478 30%, #a08858 60%, #7a6a40 100%),
    radial-gradient(ellipse at 60% 80%, #e8d4a0 0%, transparent 50%);
}
.scn-gunner-boy-watch .tower-bg { position:absolute; inset:0 0 0 0; background: linear-gradient(180deg, #c0ac80 0%, #8a7a50 100%); }
.scn-gunner-boy-watch .arch-grate { position:absolute; top:12%; left:10%; right:10%; bottom:15%; background: linear-gradient(180deg, #6a5a3a 0%, #4a3a1a 100%); border-radius:40% 40% 8% 8% / 60% 60% 4% 4%; box-shadow: inset 0 0 0 8px #3a2a1a, inset 0 0 0 16px #5a4a2a, 0 8px 20px rgba(0,0,0,.4); }
.scn-gunner-boy-watch .boy-watch { position:absolute; top:22%; left:30%; width:14px; height:32px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius:45% 45% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: gbw-peek 4s ease-in-out infinite; }
.scn-gunner-boy-watch .town-distant { position:absolute; bottom:20%; left:5%; right:5%; height:28%; background: linear-gradient(90deg, #b09868 0%, #c8ac78 20%, #9a7a4a 50%, #b8a068 80%, #a08858 100%); border-radius:30% 30% 0 0 / 80% 80% 0 0; box-shadow: inset 0 6px 12px rgba(0,0,0,.2); animation: gbw-haze 12s ease-in-out infinite alternate; }
.scn-gunner-boy-watch .pennant { position:absolute; top:8%; right:22%; width:4px; height:18px; background: #a0461a; border-radius:0 0 2px 2px; animation: gbw-flag 2s ease-in-out infinite; }
.scn-gunner-boy-watch .pennant::before { content:''; position:absolute; top:-2px; left:2px; width:16px; height:10px; background: #c8553d; border-radius:0 60% 40% 0 / 0 80% 60% 0; clip-path: polygon(0 0, 90% 20%, 100% 50%, 90% 80%, 0 100%); }
.scn-gunner-boy-watch .dove { position:absolute; top:30%; left:55%; width:12px; height:8px; background: #c8b898; border-radius:50% 50% 40% 40%; animation: gbw-dove 8s ease-in-out infinite; }
.scn-gunner-boy-watch .sun-gleam { position:absolute; top:5%; right:10%; width:40px; height:40px; background: radial-gradient(circle, rgba(255,230,180,.4) 0%, rgba(255,210,140,.15) 40%, transparent 70%); filter: blur(4px); animation: gbw-flash 6s ease-in-out infinite alternate; }
@keyframes gbw-peek { 0% { transform: translateX(0) rotate(0) } 40% { transform: translateX(4px) rotate(4deg) } 60% { transform: translateX(-2px) rotate(-2deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes gbw-haze { 0% { opacity:.7 } 50% { opacity:1 } 100% { opacity:.8 } }
@keyframes gbw-flag { 0% { transform: rotate(-5deg) } 50% { transform: rotate(12deg) } 100% { transform: rotate(-5deg) } }
@keyframes gbw-dove { 0% { transform: translate(0, 0) rotate(-3deg) } 30% { transform: translate(20px, -8px) rotate(5deg) } 60% { transform: translate(-10px, -4px) rotate(-2deg) } 100% { transform: translate(0, 0) rotate(0) } }
@keyframes gbw-flash { 0% { opacity:.2; transform: scale(.9) } 50% { opacity:.8; transform: scale(1.2) } 100% { opacity:.3; transform: scale(1) } }

.scn-talbots-ordeal {
  background:
    linear-gradient(180deg, #e8dcc0 0%, #c8b898 30%, #8a7a5a 70%, #4a3a2a 100%),
    radial-gradient(ellipse at 50% 20%, #f0e0c0 0%, transparent 50%);
}
.scn-talbots-ordeal .market-sky { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #d4c8a8 0%, #b8a888 60%, transparent 100%); animation: tlo-blast 15s ease-in-out infinite alternate; }
.scn-talbots-ordeal .market-ground { position:absolute; bottom:0; left:0; right:0; height:55%; background: linear-gradient(180deg, #8a7a5a 0%, #5a4a2a 40%, #3a2a1a 100%); border-radius:20% 30% 0 0 / 40% 50% 0 0; box-shadow: inset 0 20px 40px rgba(0,0,0,.5); }
.scn-talbots-ordeal .talbot-fig { position:absolute; bottom:32%; left:50%; width:30px; height:52px; background: linear-gradient(180deg, #2a1a0a 0%, #0a0a00 100%); border-radius:45% 45% 40% 40% / 60% 60% 40% 40%; transform: translateX(-50%); box-shadow: -2px 0 12px rgba(0,0,0,.4); animation: tlo-bound 5s ease-in-out infinite; }
.scn-talbots-ordeal .jeer-fig-1 { position:absolute; bottom:30%; left:18%; width:22px; height:40px; background: linear-gradient(180deg, #3a2a1a 0%, #1a0a0a 100%); border-radius:45% 45% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: tlo-jeer 6s ease-in-out infinite; animation-delay:0s; }
.scn-talbots-ordeal .jeer-fig-2 { position:absolute; bottom:30%; left:72%; width:22px; height:40px; background: linear-gradient(180deg, #3a2a1a 0%, #1a0a0a 100%); border-radius:45% 45% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: tlo-jeer 6s ease-in-out infinite; animation-delay:-2s; }
.scn-talbots-ordeal .jeer-fig-3 { position:absolute; bottom:30%; right:10%; width:22px; height:40px; background: linear-gradient(180deg, #3a2a1a 0%, #1a0a0a 100%); border-radius:45% 45% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: tlo-jeer 6s ease-in-out infinite; animation-delay:-4s; }
.scn-talbots-ordeal .stocks-post { position:absolute; bottom:36%; left:46%; width:6px; height:24px; background: linear-gradient(180deg, #5a4a2a 0%, #3a2a1a 100%); border-radius:2px; box-shadow: 0 4px 6px rgba(0,0,0,.3); animation: tlo-stock 8s ease-in-out infinite; }
.scn-talbots-ordeal .shadow-scar { position:absolute; bottom:28%; left:25%; right:25%; height:20%; background: linear-gradient(90deg, transparent 0%, rgba(0,0,0,.15) 20%, rgba(0,0,0,.25) 50%, transparent 80%); transform: skewX(-15deg); animation: tlo-scar 12s ease-in-out infinite alternate; }
@keyframes tlo-blast { 0% { opacity:.6 } 50% { opacity:1 } 100% { opacity:.7 } }
@keyframes tlo-bound { 0% { transform: translateX(-50%) translateY(0) rotate(-2deg) } 25% { transform: translateX(-45%) translateY(-2px) rotate(3deg) } 50% { transform: translateX(-50%) translateY(0) rotate(-1deg) } 75% { transform: translateX(-55%) translateY(-1px) rotate(2deg) } 100% { transform: translateX(-50%) translateY(0) rotate(0) } }
@keyframes tlo-jeer { 0% { transform: translateX(0) rotate(0) scaleY(1) } 20% { transform: translateX(3px) translateY(-3px) rotate(5deg) scaleY(1.05) } 40% { transform: translateX(-2px) translateY(-1px) rotate(-3deg) scaleY(1) } 60% { transform: translateX(4px) translateY(-4px) rotate(6deg) scaleY(1.08) } 80% { transform: translateX(-1px) translateY(-2px) rotate(-2deg) scaleY(1) } 100% { transform: translateX(0) rotate(0) scaleY(1) } }
@keyframes tlo-stock { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.2) } 100% { transform: scaleY(1) } }
@keyframes tlo-scar { 0% { opacity:.3; transform: skewX(-20deg) translateX(-2%) } 50% { opacity:.7; transform: skewX(-10deg) translateX(2%) } 100% { opacity:.4; transform: skewX(-15deg) translateX(-1%) } }

.scn-salisbury-view {
  background:
    linear-gradient(180deg, #e8d8b0 0%, #d0be90 30%, #b09e72 60%, #8a7650 100%),
    radial-gradient(ellipse at 50% 100%, #f0dcb0 0%, transparent 60%);
}
.scn-salisbury-view .grate-wall { position:absolute; inset:0 0 0 0; background: linear-gradient(180deg, #7a6a48 0%, #5a4a2a 50%, #3a2a1a 100%); box-shadow: inset 0 0 0 12px #4a3a1a, inset 0 0 0 24px #6a5a3a; }
.scn-salisbury-view .grate-bars { position:absolute; top:8%; left:8%; right:8%; bottom:8%; background: linear-gradient(180deg, transparent 48%, #4a3a1a 48%, #4a3a1a 52%, transparent 52%), linear-gradient(90deg, transparent 48%, #4a3a1a 48%, #4a3a1a 52%, transparent 52%); background-size:100% 20%, 20% 100%; opacity:.35; animation: svw-bars 20s linear infinite; }
.scn-salisbury-view .evening-sky { position:absolute; top:5%; left:15%; right:15%; bottom:15%; background: linear-gradient(180deg, #e8d4a0 0%, #d8c090 40%, #c0a878 70%, #a89060 100%); border-radius:30% 30% 10% 10% / 50% 50% 20% 20%; animation: svw-dusk 14s ease-in-out infinite alternate; }
.scn-salisbury-view .town-roofs { position:absolute; bottom:18%; left:18%; right:18%; height:15%; background: linear-gradient(90deg, #8a7650 0%, #a08a5e 20%, #7a6840 50%, #9a8460 80%, #887250 100%); border-radius:0 0 40% 40% / 0 0 60% 60%; box-shadow: inset 0 4px 8px rgba(0,0,0,.2); }
.scn-salisbury-view .supper-glow { position:absolute; bottom:24%; left:30%; width:30px; height:20px; background: radial-gradient(circle, #f0c868 0%, #d4a84a 30%, transparent 70%); border-radius:50%; filter: blur(8px); animation: svw-warm 5s ease-in-out infinite alternate; }
.scn-salisbury-view .tiny-figures { position:absolute; bottom:22%; left:25%; right:25%; height:6%; background: radial-gradient(circle at 20% 50%, #2a1a0a 0%, transparent 8%), radial-gradient(circle at 50% 50%, #2a1a0a 0%, transparent 8%), radial-gradient(circle at 75% 50%, #2a1a0a 0%, transparent 8%); animation: svw-bustle 8s ease-in-out infinite; }
.scn-salisbury-view .distant-spire { position:absolute; bottom:20%; left:55%; width:8px; height:40px; background: linear-gradient(180deg, #6a5a3a 0%, #8a7648 40%, #6a5a3a 100%); border-radius:4px 4px 2px 2px; transform: skewX(4deg); box-shadow: -2px 0 6px rgba(0,0,0,.2); }
.scn-salisbury-view .warm-haze { position:absolute; top:8%; left:20%; right:20%; height:30%; background: radial-gradient(ellipse at 50% 20%, rgba(240,220,170,.15) 0%, transparent 70%); filter: blur(10px); animation: svw-glow 12s ease-in-out infinite alternate; }
@keyframes svw-bars { 0% { opacity:.3 } 50% { opacity:.5 } 100% { opacity:.3 } }
@keyframes svw-dusk { 0% { opacity:.7; transform: scaleY(1) } 50% { opacity:1; transform: scaleY(1.02) } 100% { opacity:.85; transform: scaleY(.98) } }
@keyframes svw-warm { 0% { opacity:.4; transform: scale(.9) } 50% { opacity:.8; transform: scale(1.3) } 100% { opacity:.5; transform: scale(1) } }
@keyframes svw-bustle { 0% { opacity:.3 } 30% { opacity:.6 } 60% { opacity:.4 } 100% { opacity:.5 } }
@keyframes svw-glow { 0% { opacity:.2; transform: translateY(-2%) } 50% { opacity:.6; transform: translateY(2%) } 100% { opacity:.3; transform: translateY(0) } }

.scn-impatience-of-lords {
  background: 
    linear-gradient(135deg, #1a1a2e 0%, #2a2a3e 50%, #0e0e1a 100%),
    radial-gradient(ellipse at 60% 80%, #3a2a2a 0%, transparent 60%);
  position: relative; overflow: hidden;
}
.scn-impatience-of-lords .panel-wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #2a1e14 0%, #1a0e08 100%);
  border-radius: 0 0 20% 20% / 0 0 10% 10%;
  box-shadow: inset 0 20px 40px rgba(0,0,0,0.7);
}
.scn-impatience-of-lords .table {
  position: absolute; bottom: 2%; left: 10%; right: 10%; height: 20%;
  background: linear-gradient(135deg, #3a2a1a 0%, #1a0e08 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: 0 -4px 20px rgba(0,0,0,0.6);
  animation: il-table 14s ease-in-out infinite alternate;
}
.scn-impatience-of-lords .lord-main {
  position: absolute; bottom: 22%; left: 50%; width: 50px; height: 70px;
  margin-left: -25px;
  background: linear-gradient(180deg, #2e1a0e 0%, #1a0e08 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: il-lord-main 6s ease-in-out infinite;
}
.scn-impatience-of-lords .lord-left {
  position: absolute; bottom: 24%; left: 22%; width: 35px; height: 55px;
  background: linear-gradient(180deg, #1e120a 0%, #0a0604 100%);
  border-radius: 45% 45% 35% 35% / 55% 55% 35% 35%;
  transform-origin: bottom center;
  animation: il-lord-side 8s ease-in-out infinite reverse;
}
.scn-impatience-of-lords .lord-right {
  position: absolute; bottom: 20%; right: 18%; width: 40px; height: 65px;
  background: linear-gradient(180deg, #3a2215 0%, #1a0e08 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: il-lord-side 7s ease-in-out infinite;
}
.scn-impatience-of-lords .candle {
  position: absolute; bottom: 35%; left: 48%; width: 6px; height: 20px;
  background: linear-gradient(180deg, #c8a060 0%, #806030 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 0 0 20px 6px #ffd070, 0 0 40px 12px rgba(255,208,112,0.4);
  animation: il-candle 3s ease-in-out infinite alternate;
}
.scn-impatience-of-lords .shadow {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(0deg, rgba(0,0,0,0.6) 0%, transparent 100%);
  pointer-events: none;
}
@keyframes il-table { 0% { transform: scaleY(1) } 50% { transform: scaleY(0.98) } 100% { transform: scaleY(1.02) } }
@keyframes il-lord-main { 0% { transform: translateX(0) rotate(-2deg) } 25% { transform: translateX(3px) rotate(2deg) } 50% { transform: translateX(0) rotate(0deg) } 75% { transform: translateX(-3px) rotate(-2deg) } 100% { transform: translateX(0) rotate(2deg) } }
@keyframes il-lord-side { 0% { transform: translateY(0) } 50% { transform: translateY(-5px) } 100% { transform: translateY(0) } }
@keyframes il-candle { 0% { opacity: 0.8; transform: scaleY(1); box-shadow: 0 0 15px 4px #ffd070, 0 0 30px 8px rgba(255,208,112,0.3); } 50% { opacity: 1; transform: scaleY(1.05); box-shadow: 0 0 30px 8px #ffd070, 0 0 60px 16px rgba(255,208,112,0.5); } 100% { opacity: 0.9; transform: scaleY(0.97); box-shadow: 0 0 18px 5px #ffd070, 0 0 36px 10px rgba(255,208,112,0.35); } }

.scn-joan-encourages {
  background: 
    linear-gradient(180deg, #2a1e14 0%, #3a2a1a 30%, #4a3a2a 70%, #1a0e08 100%),
    radial-gradient(ellipse at 50% 80%, #5a3a1a 0%, transparent 60%);
  position: relative; overflow: hidden;
}
.scn-joan-encourages .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(0deg, #1a1208 0%, #2a1e10 100%);
  border-radius: 20% 20% 0 0;
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.5);
}
.scn-joan-encourages .joan {
  position: absolute; bottom: 20%; left: 50%; width: 30px; height: 50px;
  margin-left: -15px;
  background: linear-gradient(180deg, #3a2215 0%, #1a0e08 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: je-joan 5s ease-in-out infinite;
}
.scn-joan-encourages .banner {
  position: absolute; bottom: 38%; left: 46%; width: 8px; height: 40px;
  background: linear-gradient(180deg, #5a3a1a 0%, #3a2210 100%);
  border-radius: 10%;
  transform-origin: bottom center;
  animation: je-banner 6s ease-in-out infinite alternate;
}
.scn-joan-encourages .torch-left {
  position: absolute; bottom: 30%; left: 20%; width: 8px; height: 30px;
  background: linear-gradient(180deg, #6a4a2a 0%, #3a2210 100%);
  border-radius: 20%;
  box-shadow: 0 0 25px 8px #ffb060, 0 0 50px 16px rgba(255,176,96,0.4);
  animation: je-torch 3s ease-in-out infinite alternate;
}
.scn-joan-encourages .torch-right {
  position: absolute; bottom: 30%; right: 20%; width: 8px; height: 30px;
  background: linear-gradient(180deg, #6a4a2a 0%, #3a2210 100%);
  border-radius: 20%;
  box-shadow: 0 0 25px 8px #ffb060, 0 0 50px 16px rgba(255,176,96,0.4);
  animation: je-torch 3s ease-in-out infinite alternate;
  animation-delay: -1.5s;
}
.scn-joan-encourages .soldier {
  position: absolute; bottom: 18%; left: 70%; width: 25px; height: 45px;
  background: linear-gradient(180deg, #2a1e14 0%, #1a0e08 100%);
  border-radius: 40% 40% 30% 30% / 55% 55% 30% 30%;
  transform-origin: bottom center;
  animation: je-soldier 8s ease-in-out infinite;
}
.scn-joan-encourages .glow {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at 50% 60%, rgba(255,200,120,0.15) 0%, transparent 60%);
  pointer-events: none;
  animation: je-glow 12s ease-in-out infinite alternate;
}
@keyframes je-joan { 0% { transform: translateY(0) rotate(-1deg) } 25% { transform: translateY(-3px) rotate(1deg) } 50% { transform: translateY(0) rotate(0deg) } 75% { transform: translateY(-2px) rotate(1deg) } 100% { transform: translateY(0) rotate(-1deg) } }
@keyframes je-banner { 0% { transform: rotate(-5deg) } 50% { transform: rotate(5deg) } 100% { transform: rotate(-5deg) } }
@keyframes je-torch { 0% { box-shadow: 0 0 20px 5px #ffb060, 0 0 40px 10px rgba(255,176,96,0.3); } 50% { box-shadow: 0 0 35px 10px #ffd080, 0 0 60px 18px rgba(255,208,128,0.5); } 100% { box-shadow: 0 0 22px 6px #ffb060, 0 0 44px 12px rgba(255,176,96,0.35); } }
@keyframes je-soldier { 0% { transform: translateY(0) } 50% { transform: translateY(-4px) } 100% { transform: translateY(0) } }
@keyframes je-glow { 0% { opacity: 0.5; } 50% { opacity: 0.8; } 100% { opacity: 0.6; } }

.scn-praise-of-joan {
  background: 
    linear-gradient(180deg, #1a1a2e 0%, #2a2a3e 30%, #3a2a3a 60%, #1a0e1a 100%),
    radial-gradient(ellipse at 50% 70%, #4a2a3a 0%, transparent 70%);
  position: relative; overflow: hidden;
}
.scn-praise-of-joan .bg-arch {
  position: absolute; top: 0; left: 0; right: 0; bottom: 30%;
  background: linear-gradient(135deg, #2a1e2a 0%, #1a0e1a 50%, #0a060a 100%);
  border-radius: 0 0 40% 40%;
  box-shadow: inset 0 15px 40px rgba(0,0,0,0.6);
}
.scn-praise-of-joan .joan-center {
  position: absolute; bottom: 28%; left: 50%; width: 35px; height: 55px;
  margin-left: -17.5px;
  background: linear-gradient(180deg, #4a2a2a 0%, #2a1a1a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: pj-joan 6s ease-in-out infinite;
}
.scn-praise-of-joan .kneeler-a {
  position: absolute; bottom: 18%; left: 25%; width: 30px; height: 40px;
  background: linear-gradient(180deg, #3a2a2a 0%, #1a0e0e 100%);
  border-radius: 40% 40% 35% 35% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: pj-kneel 7s ease-in-out infinite;
}
.scn-praise-of-joan .kneeler-b {
  position: absolute; bottom: 15%; right: 20%; width: 28px; height: 38px;
  background: linear-gradient(180deg, #3a2a2a 0%, #1a0e0e 100%);
  border-radius: 40% 40% 35% 35% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: pj-kneel 7s ease-in-out infinite reverse;
  animation-delay: -2s;
}
.scn-praise-of-joan .ray-left {
  position: absolute; top: 0; left: 0; width: 50%; height: 100%;
  background: linear-gradient(135deg, rgba(255,200,150,0.15) 0%, transparent 80%);
  pointer-events: none;
  animation: pj-ray 10s ease-in-out infinite alternate;
}
.scn-praise-of-joan .ray-right {
  position: absolute; top: 0; right: 0; width: 50%; height: 100%;
  background: linear-gradient(225deg, rgba(255,200,150,0.15) 0%, transparent 80%);
  pointer-events: none;
  animation: pj-ray 10s ease-in-out infinite alternate-reverse;
}
.scn-praise-of-joan .halo {
  position: absolute; top: 25%; left: 50%; width: 40px; height: 40px;
  margin-left: -20px;
  background: radial-gradient(circle, #ffd080 0%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 30px 10px #ffd080, 0 0 60px 20px rgba(255,208,128,0.3);
  animation: pj-halo 5s ease-in-out infinite alternate;
}
@keyframes pj-joan { 0% { transform: translateY(0) } 50% { transform: translateY(-4px) scale(1.02) } 100% { transform: translateY(0) } }
@keyframes pj-kneel { 0% { transform: translateY(0) rotate(-2deg) } 25% { transform: translateY(-3px) rotate(1deg) } 50% { transform: translateY(0) rotate(0deg) } 75% { transform: translateY(-2px) rotate(2deg) } 100% { transform: translateY(0) rotate(-2deg) } }
@keyframes pj-ray { 0% { opacity: 0.3; } 50% { opacity: 0.7; } 100% { opacity: 0.4; } }
@keyframes pj-halo { 0% { box-shadow: 0 0 25px 8px #ffd080, 0 0 50px 15px rgba(255,208,128,0.2); } 50% { box-shadow: 0 0 40px 15px #ffe0a0, 0 0 80px 25px rgba(255,224,160,0.4); } 100% { box-shadow: 0 0 28px 10px #ffd080, 0 0 55px 18px rgba(255,208,128,0.25); } }

.scn-gloucester-tower {
  background: 
    linear-gradient(180deg, #1a1e2a 0%, #2a2e3e 40%, #3a2e3e 70%, #1a1e2a 100%),
    radial-gradient(ellipse at 30% 60%, #3a2e3e 0%, transparent 70%);
  position: relative; overflow: hidden;
}
.scn-gloucester-tower .stone-wall {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #2a2e3e 0%, #1a1e2a 100%);
  border-radius: 0 0 30% 30% / 0 0 15% 15%;
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.7);
}
.scn-gloucester-tower .gate {
  position: absolute; bottom: 25%; left: 50%; width: 60px; height: 70px;
  margin-left: -30px;
  background: linear-gradient(180deg, #1a1e2a 0%, #0e0e1a 100%);
  border-radius: 10% 10% 5% 5%;
  border: 4px solid #3a3e4e;
  box-shadow: inset 0 0 20px rgba(0,0,0,0.8);
  animation: gt-gate 15s ease-in-out infinite alternate;
}
.scn-gloucester-tower .gloucester {
  position: absolute; bottom: 12%; left: 40%; width: 30px; height: 55px;
  background: linear-gradient(180deg, #3a2e3e 0%, #1a1e2a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: gt-glou 8s ease-in-out infinite;
}
.scn-gloucester-tower .warder-a {
  position: absolute; bottom: 15%; left: 20%; width: 25px; height: 50px;
  background: linear-gradient(180deg, #2a2e3e 0%, #1a1e2a 100%);
  border-radius: 45% 45% 35% 35% / 55% 55% 35% 35%;
  transform-origin: bottom center;
  animation: gt-warder 10s ease-in-out infinite;
}
.scn-gloucester-tower .warder-b {
  position: absolute; bottom: 15%; right: 18%; width: 25px; height: 50px;
  background: linear-gradient(180deg, #2a2e3e 0%, #1a1e2a 100%);
  border-radius: 45% 45% 35% 35% / 55% 55% 35% 35%;
  transform-origin: bottom center;
  animation: gt-warder 10s ease-in-out infinite reverse;
  animation-delay: -3s;
}
.scn-gloucester-tower .lantern-gt {
  position: absolute; bottom: 45%; left: 48%; width: 10px; height: 15px;
  background: linear-gradient(180deg, #c8a060 0%, #806030 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 0 0 25px 8px #ffd070, 0 0 50px 15px rgba(255,208,112,0.3);
  animation: gt-lantern 4s ease-in-out infinite alternate;
}
.scn-gloucester-tower .chain {
  position: absolute; bottom: 40%; left: 48.5%; width: 2px; height: 20px;
  background: #8a7a6a;
  transform-origin: top center;
  animation: gt-chain 6s ease-in-out infinite alternate;
}
@keyframes gt-gate { 0% { transform: scaleY(1) } 50% { transform: scaleY(0.98) } 100% { transform: scaleY(1.02) } }
@keyframes gt-glou { 0% { transform: translateY(0) rotate(-1deg) } 25% { transform: translateY(-4px) rotate(1deg) } 50% { transform: translateY(0) rotate(0deg) } 75% { transform: translateY(-2px) rotate(2deg) } 100% { transform: translateY(0) rotate(-1deg) } }
@keyframes gt-warder { 0% { transform: translateY(0) } 50% { transform: translateY(-5px) } 100% { transform: translateY(0) } }
@keyframes gt-lantern { 0% { box-shadow: 0 0 20px 5px #ffd070, 0 0 40px 10px rgba(255,208,112,0.2); } 50% { box-shadow: 0 0 35px 10px #ffe090, 0 0 60px 18px rgba(255,224,144,0.4); } 100% { box-shadow: 0 0 22px 6px #ffd070, 0 0 44px 12px rgba(255,208,112,0.3); } }
@keyframes gt-chain { 0% { transform: rotate(-5deg); } 50% { transform: rotate(5deg); } 100% { transform: rotate(-5deg); } }

/* coronation-paris – calm, bright interior, soft gold and cream */
.scn-coronation-paris {
  background:
    linear-gradient(180deg, #f5e6c8 0%, #e8d5a8 30%, #d4bc8c 70%, #bfa67a 100%),
    radial-gradient(ellipse at 50% 0%, #fff5e0 0%, transparent 60%);
}
.scn-coronation-paris .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: linear-gradient(0deg, #a08060 0%, #c8a87c 100%);
  border-radius: 20% 20% 0 0;
  animation: cp-float 20s ease-in-out infinite alternate;
}
.scn-coronation-paris .throne {
  position: absolute; bottom: 14%; left: 50%; transform: translateX(-50%);
  width: 100px; height: 130px;
  background: linear-gradient(180deg, #8a6a4a 0%, #5a3a2a 100%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 6px 8px 20px rgba(0,0,0,0.3);
  animation: cp-breathe 12s ease-in-out infinite;
}
.scn-coronation-paris .canopy {
  position: absolute; bottom: 60%; left: 50%; transform: translateX(-50%);
  width: 140px; height: 50px;
  background: linear-gradient(180deg, #b08050 0%, #7a5a3a 100%);
  border-radius: 50% 50% 0 0 / 80% 80% 0 0;
  box-shadow: 0 4px 12px rgba(0,0,0,0.2);
  animation: cp-sway 18s ease-in-out infinite alternate;
}
.scn-coronation-paris .pillar {
  position: absolute; bottom: 0; width: 30px; height: 80%;
  background: linear-gradient(90deg, #d8c8a8 0%, #e8dcc0 30%, #c8b898 70%, #b8a888 100%);
  border-radius: 4px;
  box-shadow: inset -2px 0 6px rgba(0,0,0,0.15);
}
.scn-coronation-paris .pillar.left { left: 12%; }
.scn-coronation-paris .pillar.right { right: 12%; }
.scn-coronation-paris .king {
  position: absolute; bottom: 16%; left: 50%; transform: translateX(-50%);
  width: 40px; height: 80px;
  background: linear-gradient(180deg, #5a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  animation: cp-stand 15s ease-in-out infinite alternate;
}
.scn-coronation-paris .sceptre {
  position: absolute; bottom: 38%; left: 54%;
  width: 4px; height: 50px;
  background: #d4a860;
  border-radius: 2px;
  box-shadow: 0 0 8px 2px rgba(212,168,96,0.5);
  animation: cp-sceptre 10s ease-in-out infinite;
}
.scn-coronation-paris .curtain {
  position: absolute; bottom: 20%; width: 60px; height: 70%;
  background: linear-gradient(180deg, #b06030 0%, #804020 100%);
  border-radius: 10% 10% 30% 30% / 20% 20% 60% 60%;
  opacity: 0.7;
}
.scn-coronation-paris .left-curtain { left: 8%; animation: cp-curtain-l 16s ease-in-out infinite alternate; }
.scn-coronation-paris .right-curtain { right: 8%; animation: cp-curtain-r 16s ease-in-out infinite alternate; }

@keyframes cp-float { 0% { background-position: 0 0; } 100% { background-position: 0 6px; } }
@keyframes cp-breathe { 0%,100% { transform: translateX(-50%) scale(1); } 50% { transform: translateX(-50%) scale(1.01); } }
@keyframes cp-sway { 0% { transform: translateX(-50%) rotate(-1deg); } 50% { transform: translateX(-50%) rotate(0.5deg); } 100% { transform: translateX(-50%) rotate(-0.5deg); } }
@keyframes cp-stand { 0% { transform: translateX(-50%) rotate(0deg); } 50% { transform: translateX(-50%) rotate(1deg); } 100% { transform: translateX(-50%) rotate(-0.5deg); } }
@keyframes cp-sceptre { 0%,100% { transform: rotate(-2deg); } 50% { transform: rotate(2deg); } }
@keyframes cp-curtain-l { 0% { transform: skewX(0deg); } 100% { transform: skewX(-3deg); } }
@keyframes cp-curtain-r { 0% { transform: skewX(0deg); } 100% { transform: skewX(3deg); } }

/* fastolfe-returns – tense, bright interior, sharper shadows and red-brown accents */
.scn-fastolfe-returns {
  background:
    linear-gradient(180deg, #f0ddc0 0%, #e0c8a0 40%, #c8a878 80%, #b09060 100%),
    radial-gradient(ellipse at 30% 30%, #fff8e8 0%, transparent 60%);
}
.scn-fastolfe-returns .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(0deg, #806040 0%, #a08060 100%);
  border-radius: 10% 10% 0 0;
}
.scn-fastolfe-returns .throne-shadow {
  position: absolute; bottom: 20%; left: 50%; transform: translateX(-50%);
  width: 120px; height: 140px;
  background: linear-gradient(180deg, #685030 0%, #3a2a18 100%);
  border-radius: 8% 8% 4% 4%;
  box-shadow: 8px 10px 24px rgba(0,0,0,0.5);
  animation: fr-throne 5s ease-in-out infinite alternate;
}
.scn-fastolfe-returns .king {
  position: absolute; bottom: 25%; left: 44%; width: 36px; height: 80px;
  background: linear-gradient(180deg, #5a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  animation: fr-king 6s ease-in-out infinite;
}
.scn-fastolfe-returns .fastolfe {
  position: absolute; bottom: 22%; left: 60%; width: 40px; height: 90px;
  background: linear-gradient(180deg, #7a4a3a 0%, #3a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  transform: rotate(5deg);
  animation: fr-fastolfe 4s ease-in-out infinite;
}
.scn-fastolfe-returns .letter {
  position: absolute; bottom: 40%; left: 65%;
  width: 30px; height: 20px;
  background: #f0e0c0;
  border-radius: 2px;
  box-shadow: 0 2px 6px rgba(0,0,0,0.3);
  animation: fr-letter 3s ease-in-out infinite alternate;
}
.scn-fastolfe-returns .guard {
  position: absolute; bottom: 20%; width: 28px; height: 70px;
  background: linear-gradient(180deg, #3a4a5a 0%, #1a2a3a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
}
.scn-fastolfe-returns .left-guard { left: 15%; animation: fr-guard-l 7s ease-in-out infinite; }
.scn-fastolfe-returns .right-guard { right: 15%; animation: fr-guard-r 7s ease-in-out infinite; }
.scn-fastolfe-returns .chandelier {
  position: absolute; top: 5%; left: 50%; transform: translateX(-50%);
  width: 80px; height: 40px;
  background: linear-gradient(180deg, #d4b080 0%, #a08060 100%);
  border-radius: 20% 20% 40% 40% / 30% 30% 60% 60%;
  box-shadow: 0 0 20px 8px rgba(200,160,100,0.3);
  animation: fr-chandelier 8s ease-in-out infinite alternate;
}
.scn-fastolfe-returns .candle-glow {
  position: absolute; top: 12%; left: 50%; transform: translateX(-50%);
  width: 12px; height: 12px;
  background: radial-gradient(circle, #ffd080 0%, #ffa030 60%, transparent 80%);
  border-radius: 50%;
  box-shadow: 0 0 30px 12px rgba(255,160,48,0.5);
  animation: fr-glow 2s ease-in-out infinite alternate;
}

@keyframes fr-throne { 0% { box-shadow: 8px 10px 24px rgba(0,0,0,0.5); } 100% { box-shadow: 12px 14px 30px rgba(0,0,0,0.7); } }
@keyframes fr-king { 0%,100% { transform: scale(1) rotate(0deg); } 50% { transform: scale(1.02) rotate(1deg); } }
@keyframes fr-fastolfe { 0% { transform: rotate(5deg) translateX(0); } 50% { transform: rotate(3deg) translateX(4px); } 100% { transform: rotate(5deg) translateX(0); } }
@keyframes fr-letter { 0% { transform: rotate(-10deg); } 100% { transform: rotate(10deg); } }
@keyframes fr-guard-l { 0% { transform: scale(1); } 50% { transform: scale(1.02); } 100% { transform: scale(1); } }
@keyframes fr-guard-r { 0% { transform: scale(1); } 50% { transform: scale(1.02); } 100% { transform: scale(1); } }
@keyframes fr-chandelier { 0% { transform: translateX(-50%) rotate(-2deg); } 100% { transform: translateX(-50%) rotate(2deg); } }
@keyframes fr-glow { 0% { opacity: 0.8; box-shadow: 0 0 20px 8px rgba(255,160,48,0.4); } 100% { opacity: 1; box-shadow: 0 0 40px 16px rgba(255,160,48,0.6); } }

/* fastolfe-disgraced – tense, bright interior, sharp shadows and terracotta accents */
.scn-fastolfe-disgraced {
  background:
    linear-gradient(180deg, #e8d4b8 0%, #d4b898 40%, #b89870 80%, #a08058 100%),
    radial-gradient(ellipse at 40% 40%, #f0e0c8 0%, transparent 60%);
}
.scn-fastolfe-disgraced .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 22%;
  background: linear-gradient(0deg, #705030 0%, #906848 100%);
  border-radius: 8% 8% 0 0;
}
.scn-fastolfe-disgraced .wall {
  position: absolute; inset: 0 0 22% 0;
  background: linear-gradient(90deg, #c8b090 0%, #dcc8b0 50%, #c8b090 100%);
  opacity: 0.7;
}
.scn-fastolfe-disgraced .king-throne {
  position: absolute; bottom: 20%; left: 50%; transform: translateX(-50%);
  width: 100px; height: 130px;
  background: linear-gradient(180deg, #704830 0%, #402820 100%);
  border-radius: 8% 8% 4% 4%;
  box-shadow: 10px 12px 30px rgba(0,0,0,0.6);
}
.scn-fastolfe-disgraced .fastolfe-kneeling {
  position: absolute; bottom: 22%; left: 35%; width: 38px; height: 70px;
  background: linear-gradient(180deg, #7a3a2a 0%, #3a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 20% 20%;
  transform: rotate(10deg);
  animation: fd-kneel 4s ease-in-out infinite;
}
.scn-fastolfe-disgraced .garter {
  position: absolute; bottom: 40%; left: 38%;
  width: 14px; height: 8px;
  background: linear-gradient(90deg, #a0461a 0%, #c8553d 100%);
  border-radius: 50%;
  box-shadow: 0 2px 6px rgba(192,85,61,0.5);
  animation: fd-garter 3s ease-in-out infinite alternate;
}
.scn-fastolfe-disgraced .noble {
  position: absolute; bottom: 18%; width: 30px; height: 80px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
}
.scn-fastolfe-disgraced .left-noble { left: 15%; animation: fd-noble-l 6s ease-in-out infinite; }
.scn-fastolfe-disgraced .right-noble { right: 15%; animation: fd-noble-r 6s ease-in-out infinite; }
.scn-fastolfe-disgraced .shadow-beam {
  position: absolute; top: 0; left: 20%; width: 60%; height: 100%;
  background: linear-gradient(180deg, rgba(0,0,0,0.15) 0%, transparent 40%, rgba(0,0,0,0.2) 100%);
  pointer-events: none;
  animation: fd-beam 5s ease-in-out infinite alternate;
}

@keyframes fd-kneel { 0% { transform: rotate(10deg) translateY(0); } 50% { transform: rotate(8deg) translateY(-2px); } 100% { transform: rotate(10deg) translateY(0); } }
@keyframes fd-garter { 0% { transform: rotate(-15deg) scaleX(1); } 100% { transform: rotate(15deg) scaleX(1.1); } }
@keyframes fd-noble-l { 0% { transform: scale(1); } 50% { transform: scale(1.02); } 100% { transform: scale(1); } }
@keyframes fd-noble-r { 0% { transform: scale(1); } 50% { transform: scale(1.02); } 100% { transform: scale(1); } }
@keyframes fd-beam { 0% { opacity: 0.3; } 100% { opacity: 0.6; } }

/* burgundy-revolt – tense, bright interior, sharp shadows with dark burgundy accents */
.scn-burgundy-revolt {
  background:
    linear-gradient(180deg, #e8d0b0 0%, #d4b890 40%, #b89870 80%, #a08058 100%),
    radial-gradient(ellipse at 60% 40%, #f0dcc0 0%, transparent 70%);
}
.scn-burgundy-revolt .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: linear-gradient(0deg, #604830 0%, #806048 100%);
  border-radius: 5% 5% 0 0;
}
.scn-burgundy-revolt .table {
  position: absolute; bottom: 18%; left: 50%; transform: translateX(-50%);
  width: 160px; height: 30px;
  background: linear-gradient(180deg, #6a4a2a 0%, #3a2a1a 100%);
  border-radius: 4px;
  box-shadow: 0 6px 16px rgba(0,0,0,0.4);
  animation: br-table 7s ease-in-out infinite alternate;
}
.scn-burgundy-revolt .letter-unfurled {
  position: absolute; bottom: 28%; left: 50%; transform: translateX(-50%);
  width: 100px; height: 50px;
  background: #f0e0c0;
  border-radius: 2px;
  box-shadow: 0 2px 8px rgba(0,0,0,0.3);
  animation: br-letter 5s ease-in-out infinite;
}
.scn-burgundy-revolt .king-seal {
  position: absolute; bottom: 35%; left: 55%;
  width: 14px; height: 14px;
  background: radial-gradient(circle, #b04030 0%, #5e1a1d 100%);
  border-radius: 50%;
  box-shadow: 0 0 10px 4px rgba(94,26,29,0.5);
  animation: br-seal 4s ease-in-out infinite alternate;
}
.scn-burgundy-revolt .council {
  position: absolute; bottom: 14%; width: 32px; height: 70px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
}
.scn-burgundy-revolt .left-council { left: 20%; animation: br-council-l 8s ease-in-out infinite; }
.scn-burgundy-revolt .right-council { right: 20%; animation: br-council-r 8s ease-in-out infinite; }
.scn-burgundy-revolt .candle {
  position: absolute; top: 8%; left: 50%; transform: translateX(-50%);
  width: 6px; height: 20px;
  background: linear-gradient(180deg, #f0e0c0 0%, #d4b890 100%);
  border-radius: 2px;
  box-shadow: 0 0 12px 6px rgba(212,184,144,0.4);
  animation: br-candle 3s ease-in-out infinite alternate;
}
.scn-burgundy-revolt .inkwell {
  position: absolute; bottom: 28%; left: 42%;
  width: 16px; height: 16px;
  background: #2a1a0a;
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  box-shadow: inset 0 -2px 4px rgba(0,0,0,0.5);
  animation: br-ink 10s ease-in-out infinite;
}

@keyframes br-table { 0% { transform: translateX(-50%) translateY(0); } 100% { transform: translateX(-50%) translateY(-2px); } }
@keyframes br-letter { 0%,100% { transform: translateX(-50%) rotate(-1deg); } 50% { transform: translateX(-50%) rotate(1deg); } }
@keyframes br-seal { 0% { box-shadow: 0 0 8px 2px rgba(94,26,29,0.4); } 100% { box-shadow: 0 0 16px 6px rgba(94,26,29,0.6); } }
@keyframes br-council-l { 0% { transform: scale(1); } 50% { transform: scale(1.02); } 100% { transform: scale(1); } }
@keyframes br-council-r { 0% { transform: scale(1); } 50% { transform: scale(1.02); } 100% { transform: scale(1); } }
@keyframes br-candle { 0% { opacity: 0.8; box-shadow: 0 0 8px 4px rgba(212,184,144,0.3); } 100% { opacity: 1; box-shadow: 0 0 16px 8px rgba(212,184,144,0.5); } }
@keyframes br-ink { 0%,100% { transform: rotate(0deg); } 50% { transform: rotate(5deg); } }

.scn-challenge-to-combat {
  background:
    linear-gradient(180deg, #4b8bb5 0%, #87ceeb 40%, #f9e79f 70%, #f5cba7 100%),
    radial-gradient(ellipse at 50% 0%, #f9e79f 0%, transparent 60%);
}
.scn-challenge-to-combat .sky { position:absolute; inset:0 0 60% 0; background: linear-gradient(180deg, #5499c7 0%, #aed6f1 100%); animation: sc1-sky 12s ease-in-out infinite alternate; }
.scn-challenge-to-combat .sun { position:absolute; top:10%; left:80%; width:60px; height:60px; background: radial-gradient(circle, #fdfefe 0%, #f9e79f 60%, transparent 100%); border-radius:50%; box-shadow: 0 0 80px 30px #f9e79f; animation: sc1-sun 8s ease-in-out infinite alternate; }
.scn-challenge-to-combat .ground { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, #7b7d42 0%, #4a5d23 30%, #2c3e15 100%); border-radius: 20% 20% 0 0 / 40% 40% 0 0; animation: sc1-ground 10s ease-in-out infinite alternate; }
.scn-challenge-to-combat .figure-left { position:absolute; bottom:15%; left:25%; width:40px; height:80px; background: linear-gradient(180deg, #1a1a2e 0%, #0f0f1a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: sc1-fig-l 6s ease-in-out infinite; }
.scn-challenge-to-combat .figure-right { position:absolute; bottom:15%; right:25%; width:40px; height:80px; background: linear-gradient(180deg, #1b1b30 0%, #111120 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: sc1-fig-r 6s ease-in-out infinite; }
.scn-challenge-to-combat .sword-left { position:absolute; bottom:25%; left:33%; width:4px; height:60px; background: linear-gradient(180deg, #c0c0c0 0%, #808080 100%); border-radius: 2px; transform-origin: bottom center; animation: sc1-sword-l 6s ease-in-out infinite; }
.scn-challenge-to-combat .sword-right { position:absolute; bottom:25%; right:33%; width:4px; height:60px; background: linear-gradient(180deg, #c0c0c0 0%, #808080 100%); border-radius: 2px; transform-origin: bottom center; animation: sc1-sword-r 6s ease-in-out infinite; }
.scn-challenge-to-combat .dust { position:absolute; bottom:20%; left:0; right:0; height:10%; background: linear-gradient(180deg, rgba(255,255,200,0.3) 0%, transparent 100%); filter: blur(8px); animation: sc1-dust 4s ease-in-out infinite alternate; }
@keyframes sc1-sky { 0% { opacity: 0.8; transform: scaleY(1); } 50% { opacity: 1; transform: scaleY(1.02); } 100% { opacity: 0.85; transform: scaleY(0.98); } }
@keyframes sc1-sun { 0% { transform: scale(1) translate(0,0); opacity: 0.9; } 50% { transform: scale(1.1) translate(-5px, -2px); opacity: 1; } 100% { transform: scale(0.95) translate(3px,2px); opacity: 0.85; } }
@keyframes sc1-ground { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(1px); } }
@keyframes sc1-fig-l { 0% { transform: translateX(0) rotate(0deg) scaleX(1); } 25% { transform: translateX(8px) rotate(-2deg) scaleX(0.95); } 50% { transform: translateX(0) rotate(0deg) scaleX(1); } 75% { transform: translateX(-8px) rotate(2deg) scaleX(1.05); } 100% { transform: translateX(0) rotate(0deg) scaleX(1); } }
@keyframes sc1-fig-r { 0% { transform: translateX(0) rotate(0deg) scaleX(1); } 25% { transform: translateX(-8px) rotate(2deg) scaleX(1.05); } 50% { transform: translateX(0) rotate(0deg) scaleX(1); } 75% { transform: translateX(8px) rotate(-2deg) scaleX(0.95); } 100% { transform: translateX(0) rotate(0deg) scaleX(1); } }
@keyframes sc1-sword-l { 0% { transform: rotate(10deg) translateY(0); } 50% { transform: rotate(-10deg) translateY(-5px); } 100% { transform: rotate(10deg) translateY(0); } }
@keyframes sc1-sword-r { 0% { transform: rotate(-10deg) translateY(0); } 50% { transform: rotate(10deg) translateY(-5px); } 100% { transform: rotate(-10deg) translateY(0); } }
@keyframes sc1-dust { 0% { opacity: 0.3; transform: translateY(0) scaleY(1); } 100% { opacity: 0.6; transform: translateY(-10px) scaleY(0.8); } }

.scn-mention-of-treason {
  background:
    linear-gradient(180deg, #d4c3a3 0%, #e8dcc4 30%, #f5efdc 60%, #fff8e7 100%),
    radial-gradient(ellipse at 30% 50%, #f5e6ca 0%, transparent 70%);
}
.scn-mention-of-treason .wall { position:absolute; inset:0 0 0 0; background: linear-gradient(180deg, #c9b99a 0%, #a8957a 100%); animation: sc2-wall 20s ease-in-out infinite alternate; }
.scn-mention-of-treason .window { position:absolute; top:15%; left:35%; width:80px; height:120px; background: linear-gradient(180deg, #87ceeb 0%, #b8dff5 100%); border:6px solid #6b5b45; border-radius: 8px; box-shadow: inset 0 0 20px #fff; animation: sc2-window 8s ease-in-out infinite alternate; }
.scn-mention-of-treason .sunbeam { position:absolute; top:25%; left:35%; width:80px; height:200px; background: linear-gradient(180deg, rgba(255,255,200,0.5) 0%, transparent 100%); transform: skewX(-10deg); filter: blur(12px); animation: sc2-beam 6s ease-in-out infinite alternate; }
.scn-mention-of-treason .figure-speaker { position:absolute; bottom:20%; left:20%; width:45px; height:90px; background: linear-gradient(180deg, #2c2c3e 0%, #1a1a28 100%); border-radius: 45% 45% 35% 35% / 55% 55% 45% 45%; transform-origin: bottom center; animation: sc2-speak 5s ease-in-out infinite; }
.scn-mention-of-treason .figure-listener { position:absolute; bottom:20%; right:25%; width:40px; height:80px; background: linear-gradient(180deg, #2f2f42 0%, #1d1d2d 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: sc2-listen 5s ease-in-out infinite; }
.scn-mention-of-treason .pillar-left { position:absolute; bottom:0; left:5%; width:20px; height:100%; background: linear-gradient(90deg, #8b7a64 0%, #b8a48c 50%, #a08d75 100%); border-radius: 6px; box-shadow: 4px 0 8px rgba(0,0,0,0.2); }
.scn-mention-of-treason .pillar-right { position:absolute; bottom:0; right:5%; width:20px; height:100%; background: linear-gradient(90deg, #8b7a64 0%, #b8a48c 50%, #a08d75 100%); border-radius: 6px; box-shadow: -4px 0 8px rgba(0,0,0,0.2); }
.scn-mention-of-treason .shadow-on-floor { position:absolute; bottom:0; left:10%; right:10%; height:15%; background: linear-gradient(180deg, rgba(0,0,0,0.15) 0%, transparent 100%); border-radius: 50%; filter: blur(15px); animation: sc2-shadow 8s ease-in-out infinite alternate; }
@keyframes sc2-wall { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.85; } }
@keyframes sc2-window { 0% { box-shadow: inset 0 0 10px #fff, 0 0 20px rgba(255,255,200,0.3); } 50% { box-shadow: inset 0 0 30px #fff, 0 0 40px rgba(255,255,200,0.5); } 100% { box-shadow: inset 0 0 15px #fff, 0 0 25px rgba(255,255,200,0.35); } }
@keyframes sc2-beam { 0% { opacity: 0.4; transform: skewX(-12deg) translateX(0); } 50% { opacity: 0.7; transform: skewX(-8deg) translateX(5px); } 100% { opacity: 0.5; transform: skewX(-10deg) translateX(-5px); } }
@keyframes sc2-speak { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(5px) rotate(-2deg); } 50% { transform: translateX(0) rotate(0deg); } 75% { transform: translateX(-5px) rotate(2deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes sc2-listen { 0% { transform: translateX(0) rotate(0deg) scaleX(1); } 35% { transform: translateX(-3px) rotate(0deg) scaleX(0.98); } 70% { transform: translateX(3px) rotate(0deg) scaleX(1.02); } 100% { transform: translateX(0) rotate(0deg) scaleX(1); } }
@keyframes sc2-shadow { 0% { opacity: 0.2; transform: scaleX(1); } 100% { opacity: 0.4; transform: scaleX(1.1); } }

.scn-vow-of-enmity {
  background:
    linear-gradient(180deg, #3d3a2e 0%, #5b533f 30%, #7a6f55 60%, #9a8b6c 100%),
    radial-gradient(ellipse at 50% 20%, #c4a35a 0%, transparent 60%);
}
.scn-vow-of-enmity .desk { position:absolute; bottom:15%; left:20%; right:20%; height:20%; background: linear-gradient(180deg, #5c422b 0%, #3e2b1a 100%); border-radius: 4px; box-shadow: 0 8px 16px rgba(0,0,0,0.5); }
.scn-vow-of-enmity .book { position:absolute; bottom:22%; left:50%; width:50px; height:70px; background: linear-gradient(180deg, #8b4513 0%, #a0522d 100%); border-radius:2px; transform:translateX(-50%); box-shadow: 2px 2px 6px rgba(0,0,0,0.6); animation: sc3-book 10s ease-in-out infinite alternate; }
.scn-vow-of-enmity .inkwell { position:absolute; bottom:28%; left:43%; width:12px; height:18px; background: #1a1a1a; border-radius: 30% 30% 20% 20%; box-shadow: 0 2px 4px #000; animation: sc3-ink 6s ease-in-out infinite; }
.scn-vow-of-enmity .figure-writer { position:absolute; bottom:15%; left:50%; width:40px; height:80px; background: linear-gradient(180deg, #2a2520 0%, #1a1510 100%); border-radius: 40% 40% 30% 30% / 55% 55% 45% 45%; transform-origin: bottom center; transform: translateX(-50%); animation: sc3-writer 4s ease-in-out infinite; }
.scn-vow-of-enmity .lantern { position:absolute; bottom:35%; left:60%; width:10px; height:16px; background: radial-gradient(circle, #f0c040 0%, #a08020 100%); border-radius: 30%; box-shadow: 0 0 30px 10px rgba(240,192,64,0.4); animation: sc3-lantern 3s ease-in-out infinite alternate; }
.scn-vow-of-enmity .wall-dark { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #2a271f 0%, #3d382b 100%); animation: sc3-wall 15s ease-in-out infinite alternate; }
.scn-vow-of-enmity .light-spot { position:absolute; bottom:30%; left:50%; width:100px; height:100px; background: radial-gradient(circle, rgba(240,192,64,0.3) 0%, transparent 100%); transform:translateX(-50%); filter: blur(20px); animation: sc3-spot 3s ease-in-out infinite alternate; }
@keyframes sc3-book { 0% { transform: translateX(-50%) rotate(-1deg); } 50% { transform: translateX(-50%) rotate(1deg) scale(1.02); } 100% { transform: translateX(-50%) rotate(-0.5deg); } }
@keyframes sc3-ink { 0% { transform: translateY(0) rotate(0); } 50% { transform: translateY(-2px) rotate(5deg); } 100% { transform: translateY(0) rotate(-5deg); } }
@keyframes sc3-writer { 0% { transform: translateX(-50%) rotate(0deg) scaleX(1); } 25% { transform: translateX(-50%) rotate(-2deg) scaleX(0.95); } 50% { transform: translateX(-50%) rotate(0deg) scaleX(1); } 75% { transform: translateX(-50%) rotate(2deg) scaleX(1.05); } 100% { transform: translateX(-50%) rotate(0deg) scaleX(1); } }
@keyframes sc3-lantern { 0% { opacity: 0.7; box-shadow: 0 0 20px 5px rgba(240,192,64,0.3); } 50% { opacity: 1; box-shadow: 0 0 40px 15px rgba(240,192,64,0.6); } 100% { opacity: 0.8; box-shadow: 0 0 25px 8px rgba(240,192,64,0.4); } }
@keyframes sc3-wall { 0% { opacity: 0.85; } 100% { opacity: 0.95; } }
@keyframes sc3-spot { 0% { opacity: 0.4; transform: translateX(-50%) scale(1); } 100% { opacity: 0.7; transform: translateX(-50%) scale(1.2); } }

.scn-somerset-leaves {
  background:
    linear-gradient(180deg, #e8d5b0 0%, #f2e4c8 30%, #f8eeda 60%, #fff5e6 100%),
    radial-gradient(ellipse at 70% 20%, #f7e3b5 0%, transparent 60%);
}
.scn-somerset-leaves .arch { position:absolute; bottom:0; left:30%; right:30%; height:100%; background: linear-gradient(180deg, #9a8a72 0%, #7c6b54 100%); clip-path: polygon(0% 100%, 15% 0%, 85% 0%, 100% 100%); animation: sc4-arch 15s ease-in-out infinite alternate; }
.scn-somerset-leaves .floor { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #b8a88a 0%, #9a8a72 100%); box-shadow: inset 0 10px 20px rgba(0,0,0,0.1); }
.scn-somerset-leaves .figure-left { position:absolute; bottom:12%; left:20%; width:35px; height:70px; background: linear-gradient(180deg, #1a1a2e 0%, #10101c 100%); border-radius: 40% 40% 30% 30% / 55% 55% 45% 45%; transform-origin: bottom center; animation: sc4-exit-l 6s ease-in-out infinite; }
.scn-somerset-leaves .figure-right { position:absolute; bottom:12%; left:35%; width:35px; height:70px; background: linear-gradient(180deg, #1d1d30 0%, #12121e 100%); border-radius: 40% 40% 30% 30% / 55% 55% 45% 45%; transform-origin: bottom center; animation: sc4-exit-r 6s ease-in-out infinite; }
.scn-somerset-leaves .figure-standing { position:absolute; bottom:10%; right:20%; width:40px; height:85px; background: linear-gradient(180deg, #2c2c40 0%, #1a1a28 100%); border-radius: 45% 45% 35% 35% / 60% 60% 40% 40%; transform-origin: bottom center; animation: sc4-standing 4s ease-in-out infinite; }
.scn-somerset-leaves .shadow-long { position:absolute; bottom:5%; right:15%; width:60px; height:80px; background: linear-gradient(180deg, rgba(0,0,0,0.1) 0%, transparent 100%); transform: skewX(-30deg); border-radius: 50%; filter: blur(8px); animation: sc4-shadow 8s ease-in-out infinite; }
.scn-somerset-leaves .sunlight-beam { position:absolute; top:10%; left:55%; width:100px; height:200px; background: linear-gradient(180deg, rgba(255,255,220,0.4) 0%, transparent 100%); transform: skewX(-15deg); filter: blur(20px); animation: sc4-beam 7s ease-in-out infinite alternate; }
@keyframes sc4-arch { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.85; } }
@keyframes sc4-exit-l { 0% { transform: translateX(0) rotate(0deg); } 30% { transform: translateX(30px) rotate(-2deg); opacity: 0.9; } 60% { transform: translateX(60px) rotate(-4deg); opacity: 0.7; } 100% { transform: translateX(0) rotate(0deg); opacity: 0; } }
@keyframes sc4-exit-r { 0% { transform: translateX(0) rotate(0deg); } 30% { transform: translateX(-30px) rotate(2deg); opacity: 0.9; } 60% { transform: translateX(-60px) rotate(4deg); opacity: 0.7; } 100% { transform: translateX(0) rotate(0deg); opacity: 0; } }
@keyframes sc4-standing { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(-2px) rotate(1deg); } 50% { transform: translateX(0) rotate(0deg); } 75% { transform: translateX(2px) rotate(-1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes sc4-shadow { 0% { opacity: 0.2; transform: skewX(-30deg) scaleX(1); } 50% { opacity: 0.4; transform: skewX(-28deg) scaleX(1.1); } 100% { opacity: 0.25; transform: skewX(-32deg) scaleX(0.9); } }
@keyframes sc4-beam { 0% { opacity: 0.3; transform: skewX(-15deg) translateX(0); } 50% { opacity: 0.6; transform: skewX(-12deg) translateX(10px); } 100% { opacity: 0.4; transform: skewX(-18deg) translateX(-5px); } }

/* ---------- suffolk-woos ---------- */
.scn-suffolk-woos {
  background:
    linear-gradient(180deg, #f9e7c0 0%, #f0d4a0 40%, #d4b080 70%, #a88454 100%),
    radial-gradient(ellipse at 30% 20%, #fff6e0 0%, transparent 50%);
}
.scn-suffolk-woos .room {
  position:absolute; inset:0; background: linear-gradient(180deg, #ebd3b0 0%, #c9a870 50%, #8b6e3a 100%); opacity:.6;
}
.scn-suffolk-woos .desk {
  position:absolute; bottom:20%; left:30%; width:250px; height:140px;
  background: linear-gradient(180deg, #6a4e2e 0%, #4a3420 100%);
  border-radius: 4% 4% 8% 8%; box-shadow: 0 12px 20px rgba(0,0,0,.4);
  animation: sw-desk-breathe 8s ease-in-out infinite alternate;
}
.scn-suffolk-woos .paper {
  position:absolute; bottom:38%; left:35%; width:80px; height:60px;
  background: radial-gradient(ellipse, #faf0d8 0%, #e8d4b0 70%);
  border-radius: 2%; box-shadow: 0 2px 6px rgba(0,0,0,.2);
}
.scn-suffolk-woos .quill {
  position:absolute; bottom:48%; left:32%; width:6px; height:80px;
  background: linear-gradient(180deg, #f0e8d0 0%, #b8a080 50%, #8a6e4a 100%);
  transform-origin: bottom center; border-radius: 50% 50% 10% 10%;
  animation: sw-quill 2s ease-in-out infinite;
}
.scn-suffolk-woos .inkwell {
  position:absolute; bottom:34%; left:28%; width:20px; height:24px;
  background: radial-gradient(circle at 30% 20%, #3a2a1a 0%, #1a0e06 80%);
  border-radius: 50% 50% 30% 30%; box-shadow: 0 4px 8px rgba(0,0,0,.5);
}
.scn-suffolk-woos .hand {
  position:absolute; bottom:34%; left:36%; width:28px; height:40px;
  background: radial-gradient(ellipse at 50% 30%, #e8c8a0 0%, #c09070 60%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: sw-hand 3s ease-in-out infinite;
}
.scn-suffolk-woos .window {
  position:absolute; top:10%; right:15%; width:120px; height:200px;
  background: linear-gradient(180deg, #ffeac0 0%, #f0d4a0 100%);
  border: 8px solid #7a5e3a; border-radius: 6% 6% 4% 4%;
  box-shadow: inset 0 0 30px rgba(255,255,200,.4);
}
.scn-suffolk-woos .sunbeam {
  position:absolute; top:10%; right:15%; width:120px; height:200px;
  background: linear-gradient(135deg, rgba(255, 230, 170, 0.3) 0%, transparent 70%);
  opacity:0.5; animation: sw-sunbeam 12s ease-in-out infinite alternate;
}
.scn-suffolk-woos .lady-silhouette {
  position:absolute; top:12%; right:35%; width:30px; height:70px;
  background: linear-gradient(180deg, #1a0e08 0%, #0a0604 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 30% 30%;
  animation: sw-lady 6s ease-in-out infinite alternate;
}
@keyframes sw-desk-breathe { 0% { transform: translateY(0); } 50% { transform: translateY(-3px); } 100% { transform: translateY(0); } }
@keyframes sw-quill { 0% { transform: rotate(-10deg) translateY(0); } 25% { transform: rotate(-6deg) translateY(-5px); } 50% { transform: rotate(0deg) translateY(0); } 75% { transform: rotate(4deg) translateY(-3px); } 100% { transform: rotate(-10deg) translateY(0); } }
@keyframes sw-hand { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(8px) rotate(3deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes sw-sunbeam { 0% { opacity:0.3; transform: scale(1); } 50% { opacity:0.6; transform: scale(1.05); } 100% { opacity:0.3; transform: scale(1); } }
@keyframes sw-lady { 0% { opacity:0.7; transform: translateY(0) rotate(-1deg); } 50% { opacity:0.9; transform: translateY(-4px) rotate(1deg); } 100% { opacity:0.7; transform: translateY(0) rotate(-1deg); } }

/* ---------- suffolk-plans ---------- */
.scn-suffolk-plans {
  background:
    linear-gradient(180deg, #f3e3c8 0%, #e0cfb0 30%, #c0a67a 60%, #907050 100%),
    radial-gradient(ellipse at 70% 30%, #fff0d0 0%, transparent 40%);
}
.scn-suffolk-plans .table {
  position:absolute; bottom:10%; left:10%; right:10%; top:30%;
  background: linear-gradient(180deg, #7a5e3a 0%, #4a3420 100%);
  border-radius: 12% 12% 4% 4%; box-shadow: 0 20px 30px rgba(0,0,0,.4);
  transform: perspective(600px) rotateX(30deg);
}
.scn-suffolk-plans .map {
  position:absolute; bottom:15%; left:20%; width:60%; height:55%;
  background: radial-gradient(ellipse, #e8d4b0 0%, #d0b890 60%, #b89868 100%);
  border-radius: 20% 10% 15% 10%;
  box-shadow: inset 0 0 20px rgba(0,0,0,.2);
  animation: sp-map 16s ease-in-out infinite alternate;
}
.scn-suffolk-plans .piece {
  position:absolute; bottom:40%; left:40%; width:28px; height:32px;
  background: linear-gradient(180deg, #d4a060 0%, #a07440 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  animation: sp-piece 4s ease-in-out infinite;
}
.scn-suffolk-plans .hand-a {
  position:absolute; bottom:22%; left:25%; width:30px; height:44px;
  background: radial-gradient(ellipse at 50% 40%, #eac8b0 0%, #c09870 60%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: sp-hand-l 5s ease-in-out infinite;
}
.scn-suffolk-plans .hand-b {
  position:absolute; bottom:22%; right:30%; width:30px; height:44px;
  background: radial-gradient(ellipse at 50% 40%, #eac8b0 0%, #c09870 60%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: sp-hand-r 5s ease-in-out infinite 1s;
}
.scn-suffolk-plans .crown {
  position:absolute; bottom:50%; left:55%; width:40px; height:24px;
  background: linear-gradient(180deg, #f0d060 0%, #c8a030 60%);
  border-radius: 50% 50% 20% 20%; box-shadow: 0 4px 8px rgba(0,0,0,.3);
  animation: sp-crown 7s ease-in-out infinite;
}
.scn-suffolk-plans .shadow {
  position:absolute; bottom:8%; left:10%; right:10%; height:20%;
  background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,.15) 100%);
}
.scn-suffolk-plans .chandelier {
  position:absolute; top:5%; left:40%; width:80px; height:60px;
  background: radial-gradient(ellipse at 50% 20%, #f0d060 0%, #a08030 70%);
  border-radius: 50% 50% 20% 20%; opacity:.4;
  animation: sp-chandelier 20s ease-in-out infinite alternate;
}
@keyframes sp-map { 0% { transform: scale(1); } 50% { transform: scale(1.02); } 100% { transform: scale(1); } }
@keyframes sp-piece { 0% { transform: translateY(0) rotate(0deg); } 25% { transform: translateY(-8px) rotate(15deg); } 50% { transform: translateY(0) rotate(0deg); } 75% { transform: translateY(-4px) rotate(-10deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes sp-hand-l { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(10px) rotate(5deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes sp-hand-r { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(-10px) rotate(-5deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes sp-crown { 0% { transform: translateY(0) rotate(-2deg); } 25% { transform: translateY(-4px) rotate(2deg); } 50% { transform: translateY(0) rotate(-1deg); } 75% { transform: translateY(-2px) rotate(3deg); } 100% { transform: translateY(0) rotate(-2deg); } }
@keyframes sp-chandelier { 0% { opacity:.3; transform: translateY(0); } 50% { opacity:.5; transform: translateY(-3px); } 100% { opacity:.3; transform: translateY(0); } }

/* ---------- negotiating-queenship ---------- */
.scn-negotiating-queenship {
  background:
    linear-gradient(180deg, #d6e4d0 0%, #b8cfa8 30%, #7a9a6a 60%, #4a5e3a 100%),
    radial-gradient(ellipse at 60% 20%, #e8f4e0 0%, transparent 50%);
}
.scn-negotiating-queenship .sky {
  position:absolute; inset:0 0 45% 0;
  background: linear-gradient(180deg, #c0d8b0 0%, #a0c090 100%);
  animation: nq-sky 10s ease-in-out infinite alternate;
}
.scn-negotiating-queenship .castle {
  position:absolute; bottom:40%; left:10%; width:180px; height:100px;
  background: linear-gradient(180deg, #8a7a5e 0%, #5a4a34 100%);
  border-radius: 8% 8% 4% 4%; box-shadow: 0 6px 12px rgba(0,0,0,.3);
}
.scn-negotiating-queenship .wall {
  position:absolute; bottom:45%; left:0; right:70%; height:50%;
  background: linear-gradient(180deg, #7a6a4e 0%, #4a3a24 100%);
  border-radius: 0 20% 0% 0;
}
.scn-negotiating-queenship .figure-left {
  position:absolute; bottom:32%; left:25%; width:24px; height:56px;
  background: linear-gradient(180deg, #2a1a0e 0%, #1a0e06 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 30% 30%;
  animation: nq-fig-l 5s ease-in-out infinite;
}
.scn-negotiating-queenship .figure-right {
  position:absolute; bottom:32%; right:28%; width:24px; height:56px;
  background: linear-gradient(180deg, #2a1e12 0%, #1a0e08 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 30% 30%;
  animation: nq-fig-r 5s ease-in-out infinite 2s;
}
.scn-negotiating-queenship .banner {
  position:absolute; bottom:44%; left:22%; width:8px; height:50px;
  background: linear-gradient(180deg, #b87a4a 0%, #8a5a2a 100%);
  border-radius: 20% 20% 0 0;
  animation: nq-banner 8s ease-in-out infinite;
}
.scn-negotiating-queenship .ground {
  position:absolute; bottom:0; left:0; right:0; height:30%;
  background: linear-gradient(180deg, #5a7a4a 0%, #3a5a2a 100%);
  border-radius: 30% 70% 0 0 / 40% 40% 0 0;
}
.scn-negotiating-queenship .tree {
  position:absolute; bottom:35%; right:15%; width:40px; height:130px;
  background: linear-gradient(180deg, #4a6a3a 0%, #2a3a1a 100%);
  border-radius: 50% 50% 30% 30% / 80% 80% 20% 20%;
  animation: nq-tree 20s ease-in-out infinite alternate;
}
@keyframes nq-sky { 0% { opacity:.8; } 50% { opacity:1; } 100% { opacity:.85; } }
@keyframes nq-fig-l { 0% { transform: translateY(0) rotate(-1deg); } 25% { transform: translateY(-4px) rotate(1deg); } 50% { transform: translateY(0) rotate(0deg); } 75% { transform: translateY(-2px) rotate(-1deg); } 100% { transform: translateY(0) rotate(-1deg); } }
@keyframes nq-fig-r { 0% { transform: translateY(0) rotate(1deg); } 25% { transform: translateY(-3px) rotate(-1deg); } 50% { transform: translateY(0) rotate(0deg); } 75% { transform: translateY(-2px) rotate(1deg); } 100% { transform: translateY(0) rotate(1deg); } }
@keyframes nq-banner { 0% { transform: translateX(0) rotate(-2deg); } 25% { transform: translateX(4px) rotate(2deg); } 50% { transform: translateX(0) rotate(0deg); } 75% { transform: translateX(-4px) rotate(-2deg); } 100% { transform: translateX(0) rotate(-2deg); } }
@keyframes nq-tree { 0% { transform: scaleY(1); } 50% { transform: scaleY(0.97); } 100% { transform: scaleY(1); } }

/* ---------- parley-with-reignier ---------- */
.scn-parley-with-reignier {
  background:
    linear-gradient(180deg, #e0d4b8 0%, #c8b898 30%, #a08868 60%, #706040 100%),
    radial-gradient(ellipse at 30% 60%, #f0e0c0 0%, transparent 40%);
}
.scn-parley-with-reignier .sky {
  position:absolute; inset:0 0 50% 0;
  background: linear-gradient(180deg, #d6c8a8 0%, #b8a888 100%);
  animation: pr-sky 14s ease-in-out infinite alternate;
}
.scn-parley-with-reignier .castle-walls {
  position:absolute; bottom:30%; left:5%; right:5%; height:45%;
  background: linear-gradient(180deg, #8a7a5e 0%, #5a4a34 100%);
  border-radius: 10% 10% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,.3);
}
.scn-parley-with-reignier .turret {
  position:absolute; bottom:30%; left:15%; width:50px; height:120px;
  background: linear-gradient(180deg, #7a6a4e 0%, #4a3a24 100%);
  border-radius: 20% 20% 10% 10%; box-shadow: 0 0 10px rgba(0,0,0,.4);
  animation: pr-turret 6s ease-in-out infinite alternate;
}
.scn-parley-with-reignier .figure-a {
  position:absolute; bottom:22%; left:30%; width:22px; height:50px;
  background: linear-gradient(180deg, #1e120e 0%, #0e0806 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  animation: pr-fig-a 4s ease-in-out infinite;
}
.scn-parley-with-reignier .figure-b {
  position:absolute; bottom:22%; right:35%; width:22px; height:50px;
  background: linear-gradient(180deg, #2a1e14 0%, #1a0e08 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  animation: pr-fig-b 4s ease-in-out infinite 1.5s;
}
.scn-parley-with-reignier .horse {
  position:absolute; bottom:18%; left:22%; width:60px; height:40px;
  background: radial-gradient(ellipse at 50% 40%, #4a3a24 0%, #2a1e12 80%);
  border-radius: 40% 60% 30% 30% / 60% 60% 20% 20%;
  animation: pr-horse 10s ease-in-out infinite;
}
.scn-parley-with-reignier .dust {
  position:absolute; bottom:16%; left:25%; width:80px; height:20px;
  background: radial-gradient(ellipse, rgba(180,160,120,.3) 0%, transparent 70%);
  filter: blur(6px); animation: pr-dust 8s ease-in-out infinite alternate;
}
.scn-parley-with-reignier .flag-flourish {
  position:absolute; bottom:38%; left:18%; width:6px; height:70px;
  background: linear-gradient(180deg, #c8783a 0%, #a05a1a 100%);
  border-radius: 20% 20% 0 0;
  animation: pr-flag 3s ease-in-out infinite;
}
@keyframes pr-sky { 0% { opacity:.8; } 50% { opacity:1; } 100% { opacity:.85; } }
@keyframes pr-turret { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes pr-fig-a { 0% { transform: translateX(0) rotate(-1deg); } 25% { transform: translateX(6px) rotate(1deg); } 50% { transform: translateX(0) rotate(0deg); } 75% { transform: translateX(-4px) rotate(-2deg); } 100% { transform: translateX(0) rotate(-1deg); } }
@keyframes pr-fig-b { 0% { transform: translateX(0) rotate(1deg); } 25% { transform: translateX(-6px) rotate(-1deg); } 50% { transform: translateX(0) rotate(0deg); } 75% { transform: translateX(4px) rotate(2deg); } 100% { transform: translateX(0) rotate(1deg); } }
@keyframes pr-horse { 0% { transform: translateY(0) rotate(-1deg); } 25% { transform: translateY(-3px) rotate(0deg); } 50% { transform: translateY(0) rotate(1deg); } 75% { transform: translateY(-2px) rotate(0deg); } 100% { transform: translateY(0) rotate(-1deg); } }
@keyframes pr-dust { 0% { opacity:.2; transform: scale(1); } 50% { opacity:.4; transform: scale(1.1); } 100% { opacity:.2; transform: scale(1); } }
@keyframes pr-flag { 0% { transform: rotate(-8deg) translateY(0); } 25% { transform: rotate(4deg) translateY(-2px); } 50% { transform: rotate(-4deg) translateY(0); } 75% { transform: rotate(6deg) translateY(-1px); } 100% { transform: rotate(-8deg) translateY(0); } }

/* york-dissatisfied (interior, tense) */
.scn-york-dissatisfied {
  background: 
    linear-gradient(180deg, #4a3a2a 0%, #5c4a3c 40%, #3a2a1a 100%),
    radial-gradient(ellipse at 40% 60%, #7a6a5a 0%, transparent 60%);
}
.scn-york-dissatisfied .wall { position:absolute; inset:0; background: linear-gradient(180deg, #5c4a3c 0%, #3a2a1a 100%); }
.scn-york-dissatisfied .window { position:absolute; top:12%; left:30%; width:40%; height:30%; background: radial-gradient(ellipse at 50% 50%, #c8b090 0%, #8a7050 70%); border-radius: 30% 30% 20% 20%; box-shadow: inset 0 0 40px #3a2a1a; animation: yk-window 8s ease-in-out infinite alternate; }
.scn-york-dissatisfied .figure-york { position:absolute; bottom:20%; left:50%; width:60px; height:110px; transform:translateX(-50%); background: linear-gradient(180deg, #2a1a0a 0%, #0a0500 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; box-shadow: -12px 0 20px rgba(0,0,0,0.6); animation: yk-figure 4s ease-in-out infinite; }
.scn-york-dissatisfied .table { position:absolute; bottom:15%; left:20%; width:60%; height:6%; background: linear-gradient(90deg, #4a3020 0%, #6a4a38 50%, #4a3020 100%); border-radius: 10% 10% 0 0; box-shadow: 0 6px 10px rgba(0,0,0,0.5); }
.scn-york-dissatisfied .candle-flame { position:absolute; bottom:26%; left:55%; width:8px; height:18px; background: radial-gradient(circle, #ffe070 0%, #e0a030 50%, #b06020 100%); border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%; box-shadow: 0 0 20px 8px #e0a030; animation: yk-candle 0.6s ease-in-out infinite alternate; }
.scn-york-dissatisfied .shadow { position:absolute; bottom:15%; left:0; width:100%; height:20%; background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,0.5) 100%); }
.scn-york-dissatisfied .badge { position:absolute; top:14%; left:35%; width:20px; height:24px; background: radial-gradient(circle, #8a6040 0%, #5a3820 100%); border-radius: 30% 30% 20% 20%; transform: rotate(10deg); box-shadow: 0 0 8px rgba(0,0,0,0.4); animation: yk-badge 5s ease-in-out infinite alternate; }
@keyframes yk-window { 0% { opacity:0.6; transform: scale(1); } 50% { opacity:1; transform: scale(1.02); } 100% { opacity:0.5; transform: scale(0.98); } }
@keyframes yk-figure { 0% { transform: translateX(-50%) rotate(-1deg); } 30% { transform: translateX(-48%) rotate(1deg); } 60% { transform: translateX(-52%) rotate(-0.5deg); } 100% { transform: translateX(-50%) rotate(0deg); } }
@keyframes yk-candle { 0% { transform: scale(1) translateY(0); opacity:0.8; } 50% { transform: scale(1.2) translateY(-2px); opacity:1; } 100% { transform: scale(0.9) translateY(1px); opacity:0.7; } }
@keyframes yk-badge { 0% { transform: rotate(10deg) scale(1); } 50% { transform: rotate(6deg) scale(1.1); } 100% { transform: rotate(14deg) scale(0.9); } }

/* summon-bourdeaux (sunlit, tense – before city wall) */
.scn-summon-bourdeaux {
  background: 
    linear-gradient(180deg, #87ceeb 0%, #b0d4f0 30%, #e0f0ff 60%, #c8d8e8 100%),
    radial-gradient(ellipse at 80% 20%, #fff5e0 0%, transparent 50%);
}
.scn-summon-bourdeaux .sky-sb { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #a0c8e0 0%, #d0e0f0 100%); animation: sb-sky 20s linear infinite; }
.scn-summon-bourdeaux .wall-city { position:absolute; bottom:20%; left:0; right:0; height:45%; background: linear-gradient(180deg, #6a6a5a 0%, #4a4a3a 100%); border-radius: 60% 40% 0 0 / 100% 80% 0 0; box-shadow: inset 0 10px 40px rgba(0,0,0,0.3); animation: sb-wall 12s ease-in-out infinite alternate; }
.scn-summon-bourdeaux .gate { position:absolute; bottom:20%; left:40%; width:20%; height:30%; background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%); border-radius: 30% 30% 0 0 / 50% 50% 0 0; box-shadow: 0 8px 20px rgba(0,0,0,0.5); }
.scn-summon-bourdeaux .figure-talbott { position:absolute; bottom:35%; left:22%; width:40px; height:80px; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: sb-talbot 6s ease-in-out infinite; }
.scn-summon-bourdeaux .trumpet-blast { position:absolute; bottom:40%; left:19%; width:30px; height:8px; background: radial-gradient(ellipse at 0% 50%, #ffe080 0%, transparent 70%); border-radius: 50%; animation: sb-trumpet 1.5s ease-in-out infinite alternate; }
.scn-summon-bourdeaux .drum-beat { position:absolute; bottom:33%; left:30%; width:20px; height:16px; background: radial-gradient(circle, #a08060 0%, #604020 100%); border-radius: 50%; box-shadow: 0 0 20px rgba(0,0,0,0.3); animation: sb-drum 0.8s ease-in-out infinite alternate; }
@keyframes sb-sky { 0% { background-position: 0% 0%; } 100% { background-position: 100% 0%; } }
@keyframes sb-wall { 0% { transform: translateY(0) scale(1); } 50% { transform: translateY(-4px) scale(1.01); } 100% { transform: translateY(2px) scale(0.99); } }
@keyframes sb-talbot { 0% { transform: rotate(-2deg); } 40% { transform: rotate(1deg); } 70% { transform: rotate(-1deg); } 100% { transform: rotate(0deg); } }
@keyframes sb-trumpet { 0% { transform: scale(1) rotate(0deg); opacity:0.6; } 50% { transform: scale(1.3) rotate(5deg); opacity:1; } 100% { transform: scale(0.8) rotate(-3deg); opacity:0.4; } }
@keyframes sb-drum { 0% { transform: scale(1) translateY(0); } 50% { transform: scale(1.2) translateY(-2px); } 100% { transform: scale(0.9) translateY(1px); } }

/* general-defies (sunlit dark mood – fortress defiance) */
.scn-general-defies {
  background: 
    linear-gradient(180deg, #4a5a6a 0%, #7a8a9a 30%, #b0c0d0 60%, #8a9aaa 100%),
    radial-gradient(ellipse at 60% 30%, #ffd080 0%, transparent 60%);
}
.scn-general-defies .sky-gd { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #8a9ab0 0%, #b0c8d8 100%); animation: gd-sky 25s linear infinite; }
.scn-general-defies .fort-wall { position:absolute; bottom:15%; left:0; right:0; height:55%; background: linear-gradient(180deg, #5a4a3a 0%, #2a1a0a 100%); border-radius: 20% 40% 0 0 / 50% 60% 0 0; box-shadow: inset 0 12px 30px rgba(0,0,0,0.6); animation: gd-wall 10s ease-in-out infinite alternate; }
.scn-general-defies .general-shadow { position:absolute; bottom:30%; left:25%; width:50px; height:100px; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%; box-shadow: -10px 0 15px rgba(0,0,0,0.7); animation: gd-general 7s ease-in-out infinite; }
.scn-general-defies .owl-of-death { position:absolute; top:15%; left:60%; width:40px; height:30px; background: radial-gradient(ellipse, #2a2a3a 0%, #1a1a2a 70%); border-radius: 50% 50% 30% 30%; box-shadow: 0 4px 12px rgba(0,0,0,0.5); animation: gd-owl 4s ease-in-out infinite alternate; }
.scn-general-defies .spear-row { position:absolute; bottom:28%; left:20%; width:4px; height:60px; background: linear-gradient(180deg, #6a6a5a 0%, #3a3a2a 100%); transform: rotate(8deg); box-shadow: 8px 0 0 #4a4a3a, 16px 0 0 #5a5a4a; animation: gd-spear 3s ease-in-out infinite; }
.scn-general-defies .banner-torn { position:absolute; bottom:35%; left:32%; width:30px; height:20px; background: linear-gradient(180deg, #a04228 0%, #5e1a1d 100%); clip-path: polygon(0 0, 100% 0, 80% 100%, 0 100%); animation: gd-banner 6s ease-in-out infinite; }
@keyframes gd-sky { 0% { background-position: 0% 0%; } 100% { background-position: 100% 0%; } }
@keyframes gd-wall { 0% { transform: translateY(0) scale(1); } 50% { transform: translateY(-3px) scale(1.02); } 100% { transform: translateY(2px) scale(0.98); } }
@keyframes gd-general { 0% { transform: rotate(-3deg) translateX(0); } 40% { transform: rotate(1deg) translateX(2px); } 70% { transform: rotate(-2deg) translateX(-1px); } 100% { transform: rotate(0deg) translateX(0); } }
@keyframes gd-owl { 0% { transform: scale(1) rotate(-5deg); } 50% { transform: scale(1.1) rotate(3deg); } 100% { transform: scale(0.8) rotate(-8deg); } }
@keyframes gd-spear { 0% { transform: rotate(8deg) translateY(0); } 50% { transform: rotate(6deg) translateY(-3px); } 100% { transform: rotate(10deg) translateY(0); } }
@keyframes gd-banner { 0% { transform: skewX(0deg); } 50% { transform: skewX(5deg); } 100% { transform: skewX(-5deg); } }

/* drum-signal (tense, sunlit – distant enemy) */
.scn-drum-signal {
  background: 
    linear-gradient(180deg, #7a9ab0 0%, #a0c0d0 30%, #d0e0f0 60%, #b8c8d8 100%),
    radial-gradient(ellipse at 30% 60%, #fff5e0 0%, transparent 60%);
}
.scn-drum-signal .sky-ds { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #b0c8d8 0%, #d0e0f0 100%); animation: ds-sky 30s linear infinite; }
.scn-drum-signal .horizon-hill { position:absolute; bottom:30%; left:0; right:0; height:15%; background: linear-gradient(180deg, #6a7a5a 0%, #4a5a3a 100%); border-radius: 40% 60% 0 0 / 80% 70% 0 0; animation: ds-hill 15s ease-in-out infinite alternate; }
.scn-drum-signal .drum-shape { position:absolute; bottom:38%; left:20%; width:30px; height:24px; background: radial-gradient(circle, #8a7050 0%, #5a3820 100%); border-radius: 40% 40% 20% 20%; box-shadow: 0 6px 12px rgba(0,0,0,0.4); animation: ds-drum 0.5s ease-in-out infinite alternate; }
.scn-drum-signal .figure-talbott-ds { position:absolute; bottom:30%; left:18%; width:36px; height:70px; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ds-figure 8s ease-in-out infinite; }
.scn-drum-signal .horseman-distant { position:absolute; bottom:35%; right:15%; width:20px; height:18px; background: linear-gradient(180deg, #2a1a0a 0%, #0a0500 100%); border-radius: 50% 50% 30% 30%; animation: ds-horse 4s linear infinite; }
.scn-drum-signal .sound-ripple { position:absolute; top:25%; left:22%; width:60px; height:60px; border: 2px solid rgba(255,255,240,0.3); border-radius: 50%; animation: ds-ripple 3s ease-out infinite; box-shadow: 0 0 20px rgba(255,255,240,0.1); }
@keyframes ds-sky { 0% { background-position: 0% 0%; } 100% { background-position: 100% 0%; } }
@keyframes ds-hill { 0% { transform: translateY(0); } 50% { transform: translateY(-3px); } 100% { transform: translateY(2px); } }
@keyframes ds-drum { 0% { transform: scale(1) translateY(0); opacity:0.9; } 50% { transform: scale(1.15) translateY(-3px); opacity:1; } 100% { transform: scale(0.85) translateY(2px); opacity:0.7; } }
@keyframes ds-figure { 0% { transform: rotate(-1deg); } 30% { transform: rotate(1deg); } 60% { transform: rotate(-0.5deg); } 100% { transform: rotate(0deg); } }
@keyframes ds-horse { 0% { transform: translateX(0) scale(1); } 50% { transform: translateX(-20px) scale(0.95); } 100% { transform: translateX(-40px) scale(1); } }
@keyframes ds-ripple { 0% { transform: scale(0.5); opacity:1; } 50% { transform: scale(1.5); opacity:0.5; } 100% { transform: scale(2); opacity:0; } }

/* Scene: king-arrives-paris */
.scn-king-arrives-paris {
  background:
    linear-gradient(180deg, #f5e6c8 0%, #d4b896 40%, #b3926e 100%),
    radial-gradient(ellipse at 50% 30%, #fff8e7 0%, transparent 60%);
}
.scn-king-arrives-paris .bg-walls {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #e8d2b0 0%, #c9ad8a 100%);
  border-bottom: 2px solid #a38560;
  animation: ka-walls 20s ease-in-out infinite alternate;
}
.scn-king-arrives-paris .bg-pillar-left {
  position: absolute; bottom: 30%; left: 5%; width: 12%; top: 0;
  background: linear-gradient(90deg, #d4b896, #b3926e, #d4b896);
  border-radius: 4px;
  box-shadow: 2px 0 6px rgba(0,0,0,0.2);
  animation: ka-pillar 12s ease-in-out infinite alternate;
}
.scn-king-arrives-paris .bg-pillar-right {
  position: absolute; bottom: 30%; right: 5%; width: 12%; top: 0;
  background: linear-gradient(90deg, #d4b896, #b3926e, #d4b896);
  border-radius: 4px;
  box-shadow: -2px 0 6px rgba(0,0,0,0.2);
  animation: ka-pillar 12s ease-in-out infinite alternate-reverse;
}
.scn-king-arrives-paris .throne {
  position: absolute; bottom: 30%; left: 50%; transform: translateX(-50%);
  width: 30%; height: 20%;
  background: linear-gradient(135deg, #c9a87a 0%, #a5845a 50%, #7a5e3a 100%);
  border-radius: 20% 20% 8% 8%;
  box-shadow: 0 -4px 8px rgba(0,0,0,0.3);
  animation: ka-throne 8s ease-in-out infinite;
}
.scn-king-arrives-paris .king-silhouette {
  position: absolute; bottom: 30%; left: 50%; transform: translateX(-50%);
  width: 16%; height: 25%;
  background: linear-gradient(180deg, #2a1e12 0%, #1a120a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 0 2px 4px rgba(0,0,0,0.5);
  animation: ka-king 6s ease-in-out infinite alternate;
}
.scn-king-arrives-paris .courtier-left {
  position: absolute; bottom: 30%; left: 22%; width: 12%; height: 22%;
  background: linear-gradient(180deg, #3a2a1a 0%, #241810 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  animation: ka-courtier 10s ease-in-out infinite alternate;
}
.scn-king-arrives-paris .courtier-right {
  position: absolute; bottom: 30%; right: 22%; width: 12%; height: 22%;
  background: linear-gradient(180deg, #3a2a1a 0%, #241810 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  animation: ka-courtier 10s ease-in-out infinite alternate-reverse;
}
.scn-king-arrives-paris .banner {
  position: absolute; top: 5%; left: 50%; transform: translateX(-50%);
  width: 15%; height: 8%;
  background: linear-gradient(90deg, #c8553d, #a0461a, #c8553d);
  border-radius: 2px;
  box-shadow: 0 2px 4px rgba(0,0,0,0.3);
  animation: ka-banner 14s ease-in-out infinite;
}
.scn-king-arrives-paris .light-beam {
  position: absolute; top: 0; left: 40%; width: 20%; bottom: 30%;
  background: linear-gradient(180deg, rgba(255,240,200,0.4) 0%, transparent 100%);
  filter: blur(8px);
  animation: ka-beam 7s ease-in-out infinite alternate;
}
@keyframes ka-walls { 0% { opacity:0.9 } 50% { opacity:1 } 100% { opacity:0.85 } }
@keyframes ka-pillar { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.02) } 100% { transform: scaleY(0.98) } }
@keyframes ka-throne { 0%,100% { transform: translateX(-50%) translateY(0) } 50% { transform: translateX(-50%) translateY(-2px) } }
@keyframes ka-king { 0% { transform: translateX(-50%) rotate(-1deg) } 50% { transform: translateX(-50%) rotate(1deg) } 100% { transform: translateX(-50%) rotate(0) } }
@keyframes ka-courtier { 0% { transform: translateY(0) } 50% { transform: translateY(-3px) } 100% { transform: translateY(0) } }
@keyframes ka-banner { 0%,100% { transform: translateX(-50%) scaleX(1) } 50% { transform: translateX(-50%) scaleX(1.05) } }
@keyframes ka-beam { 0% { opacity:0.3 } 50% { opacity:0.7 } 100% { opacity:0.4 } }

/* Scene: talbot-honoured */
.scn-talbot-honoured {
  background:
    linear-gradient(180deg, #f3e0c0 0%, #d2b898 50%, #b0926e 100%),
    radial-gradient(ellipse at 50% 20%, #ffe8d0 0%, transparent 50%);
}
.scn-talbot-honoured .bg-arch {
  position: absolute; top: 0; left: 5%; right: 5%; bottom: 35%;
  background: linear-gradient(180deg, #e0c9a8 0%, #c8af8a 100%);
  border-radius: 50% 50% 0 0 / 30% 30% 0 0;
  box-shadow: inset 0 -4px 8px rgba(0,0,0,0.2);
  animation: th-arch 18s ease-in-out infinite alternate;
}
.scn-talbot-honoured .floor-tiles {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: repeating-linear-gradient(90deg, #b0926e 0px, #b0926e 8px, #c8af8a 8px, #c8af8a 16px);
  background-size: 16px 100%;
  animation: th-tiles 30s linear infinite;
}
.scn-talbot-honoured .king-throne {
  position: absolute; bottom: 35%; left: 25%; width: 25%; height: 25%;
  background: linear-gradient(135deg, #d4b896 0%, #b3926e 50%, #7a5e3a 100%);
  border-radius: 30% 30% 10% 10%;
  box-shadow: 0 -6px 12px rgba(0,0,0,0.3);
  animation: th-king 9s ease-in-out infinite alternate;
}
.scn-talbot-honoured .talbot-kneeling {
  position: absolute; bottom: 35%; left: 55%; width: 15%; height: 20%;
  background: linear-gradient(180deg, #2a1e12 0%, #1a120a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: th-kneel 8s ease-in-out infinite;
}
.scn-talbot-honoured .reward-hand {
  position: absolute; bottom: 48%; left: 43%; width: 8%; height: 12%;
  background: linear-gradient(180deg, #d4b896 0%, #b08960 100%);
  border-radius: 50% 50% 40% 40% / 30% 30% 50% 50%;
  transform: rotate(-20deg);
  animation: th-hand 6s ease-in-out infinite alternate;
}
.scn-talbot-honoured .courtiers {
  position: absolute; bottom: 35%; left: 5%; right: 5%; height: 18%;
  background: linear-gradient(180deg, #3a2a1a 0%, #241810 100%);
  border-radius: 40% 40% 20% 20% / 50% 50% 20% 20%;
  opacity: 0.7;
  animation: th-court 15s ease-in-out infinite alternate;
}
.scn-talbot-honoured .banner-left {
  position: absolute; top: 5%; left: 10%; width: 12%; height: 10%;
  background: linear-gradient(180deg, #a0461a, #c8553d, #a0461a);
  border-radius: 2px;
  transform: skewX(-10deg);
  animation: th-banner 12s ease-in-out infinite alternate;
}
.scn-talbot-honoured .banner-right {
  position: absolute; top: 5%; right: 10%; width: 12%; height: 10%;
  background: linear-gradient(180deg, #a0461a, #c8553d, #a0461a);
  border-radius: 2px;
  transform: skewX(10deg);
  animation: th-banner 12s ease-in-out infinite alternate-reverse;
}
.scn-talbot-honoured .warm-glow {
  position: absolute; top: 15%; left: 30%; width: 40%; height: 30%;
  background: radial-gradient(ellipse, rgba(255,220,150,0.3) 0%, transparent 70%);
  filter: blur(10px);
  animation: th-glow 5s ease-in-out infinite alternate;
}
@keyframes th-arch { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.01) } 100% { transform: scaleY(0.99) } }
@keyframes th-tiles { 0% { background-position: 0 0 } 100% { background-position: 16px 0 } }
@keyframes th-king { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes th-kneel { 0%,100% { transform: translateY(0) rotate(0) } 25% { transform: translateY(-2px) rotate(2deg) } 75% { transform: translateY(2px) rotate(-2deg) } }
@keyframes th-hand { 0% { transform: rotate(-20deg) } 50% { transform: rotate(-15deg) } 100% { transform: rotate(-25deg) } }
@keyframes th-court { 0% { opacity:0.6 } 50% { opacity:0.8 } 100% { opacity:0.5 } }
@keyframes th-banner { 0% { transform: skewX(-10deg) scaleY(1) } 50% { transform: skewX(-8deg) scaleY(1.05) } 100% { transform: skewX(-12deg) scaleY(0.95) } }
@keyframes th-glow { 0% { opacity:0.2 } 50% { opacity:0.5 } 100% { opacity:0.3 } }

/* Scene: quarrel-at-sea */
.scn-quarrel-at-sea {
  background:
    linear-gradient(180deg, #4a5a6a 0%, #2a3a4a 40%, #1a2a3a 100%),
    radial-gradient(ellipse at 50% 20%, #6a7a8a 0%, transparent 60%);
}
.scn-quarrel-at-sea .bg-cabin {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-bottom: 2px solid #1a120a;
  animation: qs-cabin 20s ease-in-out infinite alternate;
}
.scn-quarrel-at-sea .window-port {
  position: absolute; top: 10%; left: 10%; width: 20%; height: 25%;
  background: radial-gradient(circle, #8aacda 0%, #3a5a7a 70%);
  border: 4px solid #1a120a;
  border-radius: 50%;
  animation: qs-window 14s ease-in-out infinite;
}
.scn-quarrel-at-sea .table {
  position: absolute; bottom: 25%; left: 20%; right: 20%; height: 8%;
  background: linear-gradient(180deg, #8a6a4a 0%, #5a3a2a 100%);
  border-radius: 2px;
  box-shadow: 0 2px 4px rgba(0,0,0,0.5);
}
.scn-quarrel-at-sea .figure-1 {
  position: absolute; bottom: 25%; left: 20%; width: 18%; height: 30%;
  background: linear-gradient(180deg, #2a1e12 0%, #1a120a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: qs-fig1 4s ease-in-out infinite;
}
.scn-quarrel-at-sea .figure-2 {
  position: absolute; bottom: 25%; right: 20%; width: 18%; height: 30%;
  background: linear-gradient(180deg, #2a1e12 0%, #1a120a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: qs-fig2 4s ease-in-out infinite reverse;
}
.scn-quarrel-at-sea .sword-1 {
  position: absolute; bottom: 35%; left: 28%; width: 4%; height: 18%;
  background: linear-gradient(180deg, #8a8a8a 0%, #5a5a5a 50%, #3a3a3a 100%);
  border-radius: 2px;
  transform: rotate(-30deg);
  animation: qs-sword1 3s ease-in-out infinite;
}
.scn-quarrel-at-sea .sword-2 {
  position: absolute; bottom: 35%; right: 28%; width: 4%; height: 18%;
  background: linear-gradient(180deg, #8a8a8a 0%, #5a5a5a 50%, #3a3a3a 100%);
  border-radius: 2px;
  transform: rotate(30deg);
  animation: qs-sword2 3s ease-in-out infinite;
}
.scn-quarrel-at-sea .map {
  position: absolute; bottom: 28%; left: 40%; width: 20%; height: 12%;
  background: repeating-linear-gradient(45deg, #d4b896 0px, #d4b896 4px, #c8af8a 4px, #c8af8a 8px);
  border-radius: 2px;
  transform: rotate(-5deg);
  animation: qs-map 18s linear infinite;
}
.scn-quarrel-at-sea .lantern-swing {
  position: absolute; top: 10%; left: 50%; transform: translateX(-50%);
  width: 8px; height: 8px;
  background: #ffd680;
  border-radius: 50%;
  box-shadow: 0 0 16px 4px rgba(255,214,128,0.6);
  animation: qs-lantern 4s ease-in-out infinite;
}
@keyframes qs-cabin { 0% { opacity:0.9 } 50% { opacity:1 } 100% { opacity:0.8 } }
@keyframes qs-window { 0%,100% { opacity:0.7 } 50% { opacity:1 } }
@keyframes qs-fig1 { 0% { transform: translateX(0) rotate(0) } 25% { transform: translateX(5px) rotate(3deg) } 50% { transform: translateX(0) rotate(-2deg) } 75% { transform: translateX(-5px) rotate(0) } 100% { transform: translateX(0) rotate(0) } }
@keyframes qs-fig2 { 0% { transform: translateX(0) rotate(0) } 25% { transform: translateX(-5px) rotate(-3deg) } 50% { transform: translateX(0) rotate(2deg) } 75% { transform: translateX(5px) rotate(0) } 100% { transform: translateX(0) rotate(0) } }
@keyframes qs-sword1 { 0% { transform: rotate(-30deg) } 50% { transform: rotate(-20deg) } 100% { transform: rotate(-40deg) } }
@keyframes qs-sword2 { 0% { transform: rotate(30deg) } 50% { transform: rotate(20deg) } 100% { transform: rotate(40deg) } }
@keyframes qs-map { 0% { transform: rotate(-5deg) } 50% { transform: rotate(5deg) } 100% { transform: rotate(-5deg) } }
@keyframes qs-lantern { 0% { transform: translateX(-50%) rotate(-15deg) } 50% { transform: translateX(-50%) rotate(15deg) } 100% { transform: translateX(-50%) rotate(-15deg) } }

/* Scene: basset-retorts */
.scn-basset-retorts {
  background:
    linear-gradient(180deg, #5a6a7a 0%, #3a4a5a 40%, #2a3a4a 100%),
    radial-gradient(ellipse at 50% 30%, #7a8a9a 0%, transparent 60%);
}
.scn-basset-retorts .bg-hall {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a12 100%);
  border-bottom: 2px solid #1a0e08;
  animation: br-hall 22s ease-in-out infinite alternate;
}
.scn-basset-retorts .pillar-left {
  position: absolute; bottom: 25%; left: 8%; width: 8%; top: 0;
  background: linear-gradient(90deg, #5a4a3a, #3a2a1a, #5a4a3a);
  border-radius: 4px;
  box-shadow: 2px 0 6px rgba(0,0,0,0.4);
  animation: br-pillar 12s ease-in-out infinite alternate;
}
.scn-basset-retorts .pillar-right {
  position: absolute; bottom: 25%; right: 8%; width: 8%; top: 0;
  background: linear-gradient(90deg, #5a4a3a, #3a2a1a, #5a4a3a);
  border-radius: 4px;
  box-shadow: -2px 0 6px rgba(0,0,0,0.4);
  animation: br-pillar 12s ease-in-out infinite alternate-reverse;
}
.scn-basset-retorts .basset-silhouette {
  position: absolute; bottom: 25%; left: 28%; width: 14%; height: 28%;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: br-basset 5s ease-in-out infinite;
}
.scn-basset-retorts .retort-silhouette {
  position: absolute; bottom: 25%; right: 28%; width: 14%; height: 28%;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: br-retort 5s ease-in-out infinite reverse;
}
.scn-basset-retorts .challenge-glove {
  position: absolute; bottom: 32%; left: 38%; width: 6%; height: 6%;
  background: #5a3a2a;
  border-radius: 20% 20% 50% 50%;
  animation: br-glove 3s ease-in-out infinite;
}
.scn-basset-retorts .shadow-sharp {
  position: absolute; bottom: 25%; left: 20%; right: 20%; height: 5%;
  background: linear-gradient(90deg, transparent 0%, rgba(0,0,0,0.5) 50%, transparent 100%);
  animation: br-shadow 4s ease-in-out infinite alternate;
}
.scn-basset-retorts .dust-motes {
  position: absolute; top: 10%; left: 0; right: 0; height: 10%;
  background: radial-gradient(circle, rgba(255,255,240,0.15) 0%, transparent 70%);
  filter: blur(6px);
  animation: br-dust 25s linear infinite;
}
@keyframes br-hall { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.7 } }
@keyframes br-pillar { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.02) } 100% { transform: scaleY(0.98) } }
@keyframes br-basset { 0% { transform: translateX(0) rotate(-1deg) } 25% { transform: translateX(3px) rotate(2deg) } 50% { transform: translateX(0) rotate(-2deg) } 75% { transform: translateX(-3px) rotate(1deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes br-retort { 0% { transform: translateX(0) rotate(1deg) } 25% { transform: translateX(-3px) rotate(-2deg) } 50% { transform: translateX(0) rotate(2deg) } 75% { transform: translateX(3px) rotate(-1deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes br-glove { 0% { transform: translateY(0) } 50% { transform: translateY(-4px) } 100% { transform: translateY(0) } }
@keyframes br-shadow { 0% { opacity:0.2 } 50% { opacity:0.5 } 100% { opacity:0.3 } }
@keyframes br-dust { 0% { transform: translateY(0) } 50% { transform: translateY(-10px) } 100% { transform: translateY(0) } }

.scn-john-steadfast {
  background: linear-gradient(180deg, #4a7a9a 0%, #6a9aba 30%, #8abada 60%, #c8e0c8 100%),
              radial-gradient(ellipse at 70% 20%, #fff0c0 0%, transparent 50%);
  background-blend-mode: normal, overlay;
  overflow: hidden;
}
.scn-john-steadfast .sun { position:absolute; top:8%; right:20%; width:60px; height:60px; background:radial-gradient(circle, #fff8e0 0%, #ffd080 40%, transparent 70%); border-radius:50%; box-shadow:0 0 80px 40px rgba(255,208,128,0.4); animation:jst-sun 20s ease-in-out infinite alternate; }
.scn-john-steadfast .sky { position:absolute; inset:0 0 50% 0; background:linear-gradient(180deg, rgba(74,122,154,0.6) 0%, transparent 100%); }
.scn-john-steadfast .distant-hills { position:absolute; bottom:42%; left:0; right:0; height:18%; background:linear-gradient(180deg, #5a7a5a 0%, #3a5a3a 100%); border-radius:30% 70% 0 0 / 60% 80% 0 0; box-shadow:inset 0 4px 16px rgba(0,0,0,0.3); animation:jst-hills 18s ease-in-out infinite alternate; }
.scn-john-steadfast .ground { position:absolute; bottom:0; left:0; right:0; height:55%; background:linear-gradient(180deg, #7a9a6a 0%, #5a7a4a 40%, #3a5a2a 100%); border-radius:20% 30% 0 0 / 10% 15% 0 0; box-shadow:inset 0 12px 30px rgba(0,0,0,0.5); }
.scn-john-steadfast .figure { position:absolute; bottom:30%; left:40%; width:28px; height:60px; background:linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%); border-radius:50% 50% 30% 30% / 60% 60% 30% 30%; transform-origin:bottom center; box-shadow: inset 0 -4px 8px rgba(0,0,0,0.6); animation:jst-figure 4s ease-in-out infinite; }
.scn-john-steadfast .sword { position:absolute; bottom:42%; left:43%; width:4px; height:40px; background:linear-gradient(180deg, #d0d0e0 0%, #9090a0 60%, #606070 100%); border-radius:2px; transform-origin:bottom center; box-shadow:0 0 6px 2px rgba(200,200,220,0.4); animation:jst-sword 2s ease-in-out infinite alternate; }
.scn-john-steadfast .cape { position:absolute; bottom:30%; left:36%; width:30px; height:40px; background:linear-gradient(180deg, #8a3a2a 0%, #5a2a1a 100%); border-radius:0 60% 50% 40% / 0 80% 60% 50%; transform-origin:top center; animation:jst-cape 3.5s ease-in-out infinite; }
.scn-john-steadfast .dust-far { position:absolute; bottom:35%; left:20%; width:100px; height:30px; background:radial-gradient(ellipse, rgba(200,180,140,0.3) 0%, transparent 70%); filter:blur(8px); animation:jst-dust-f 18s linear infinite; }
.scn-john-steadfast .dust-near { position:absolute; bottom:28%; right:15%; width:60px; height:20px; background:radial-gradient(ellipse, rgba(200,180,140,0.25) 0%, transparent 60%); filter:blur(5px); animation:jst-dust-n 12s linear infinite; }
@keyframes jst-sun { 0% { transform:scale(0.95); opacity:0.8; } 50% { transform:scale(1.05); opacity:1; } 100% { transform:scale(0.98); opacity:0.85; } }
@keyframes jst-hills { 0% { transform:translateY(0); } 50% { transform:translateY(-2px); } 100% { transform:translateY(1px); } }
@keyframes jst-figure { 0% { transform:translateX(0) translateY(0) rotate(-1deg); } 30% { transform:translateX(3px) translateY(-2px) rotate(0deg); } 60% { transform:translateX(-2px) translateY(-1px) rotate(1deg); } 100% { transform:translateX(0) translateY(0) rotate(-0.5deg); } }
@keyframes jst-sword { 0% { transform:rotate(-5deg) translateX(0); } 50% { transform:rotate(8deg) translateX(2px); } 100% { transform:rotate(-3deg) translateX(-1px); } }
@keyframes jst-cape { 0% { transform:rotate(0deg) scaleX(1); } 25% { transform:rotate(8deg) scaleX(1.05); } 50% { transform:rotate(-5deg) scaleX(0.95); } 75% { transform:rotate(6deg) scaleX(1.02); } 100% { transform:rotate(-2deg) scaleX(1); } }
@keyframes jst-dust-f { 0% { transform:translateX(-40px) translateY(0); opacity:0; } 10% { opacity:0.4; } 90% { opacity:0.3; } 100% { transform:translateX(120vw) translateY(-8px); opacity:0; } }
@keyframes jst-dust-n { 0% { transform:translateX(20px) translateY(0); opacity:0; } 15% { opacity:0.35; } 85% { opacity:0.3; } 100% { transform:translateX(-100vw) translateY(6px); opacity:0; } }

.scn-talbot-falls {
  background: linear-gradient(180deg, #2a3a4a 0%, #4a5a6a 30%, #6a7a8a 55%, #8a9a8a 85%, #5a6a4a 100%),
              radial-gradient(ellipse at 30% 40%, #8a9a7a 0%, transparent 60%);
  background-blend-mode: normal, overlay;
  overflow: hidden;
}
.scn-talbot-falls .bg-sky { position:absolute; inset:0 0 45% 0; background:linear-gradient(180deg, rgba(42,58,74,0.7) 0%, rgba(106,122,138,0.3) 100%); }
.scn-talbot-falls .sun-haze { position:absolute; top:15%; left:25%; width:80px; height:80px; background:radial-gradient(circle, rgba(200,180,140,0.15) 0%, transparent 70%); border-radius:50%; filter:blur(12px); animation:tbf-haze 25s ease-in-out infinite alternate; }
.scn-talbot-falls .battle-field { position:absolute; bottom:0; left:0; right:0; height:55%; background:linear-gradient(180deg, #5a6a3a 0%, #3a4a2a 50%, #1a2a1a 100%); border-radius:15% 25% 0 0 / 8% 12% 0 0; box-shadow:inset 0 10px 30px rgba(0,0,0,0.6); }
.scn-talbot-falls .fallen-figure { position:absolute; bottom:28%; left:50%; width:30px; height:28px; background:linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius:50% 40% 30% 40% / 50% 40% 30% 40%; transform:translateX(-50%) rotate(15deg); box-shadow:inset 0 -3px 6px rgba(0,0,0,0.5); animation:tbf-fallen 6s ease-in-out infinite; }
.scn-talbot-falls .arm-outstretched { position:absolute; bottom:25%; left:48%; width:22px; height:6px; background:linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%); border-radius:50% 30% 30% 50% / 80% 40% 40% 80%; transform:translateX(-50%) rotate(-25deg); transform-origin:right center; animation:tbf-arm 8s ease-in-out infinite; }
.scn-talbot-falls .spear-broken { position:absolute; bottom:30%; left:55%; width:3px; height:35px; background:linear-gradient(180deg, #6a6a5a 0%, #4a4a3a 60%, #2a2a1a 100%); border-radius:1px; transform:rotate(40deg); transform-origin:bottom center; box-shadow:0 0 4px 1px rgba(100,100,80,0.3); animation:tbf-spear 10s ease-in-out infinite alternate; }
.scn-talbot-falls .dust-cloud { position:absolute; bottom:25%; right:20%; width:70px; height:30px; background:radial-gradient(ellipse, rgba(180,160,130,0.2) 0%, transparent 70%); filter:blur(10px); animation:tbf-dust 15s linear infinite; }
.scn-talbot-falls .shadow-long { position:absolute; bottom:5%; left:30%; width:120px; height:20px; background:radial-gradient(ellipse, rgba(0,0,0,0.25) 0%, transparent 70%); filter:blur(6px); animation:tbf-shadow 12s ease-in-out infinite alternate; }
@keyframes tbf-haze { 0% { transform:scale(0.9) translateX(0); opacity:0.5; } 50% { transform:scale(1.1) translateX(10px); opacity:0.8; } 100% { transform:scale(0.95) translateX(-5px); opacity:0.6; } }
@keyframes tbf-fallen { 0% { transform:translateX(-50%) rotate(12deg) translateY(0); } 50% { transform:translateX(-50%) rotate(18deg) translateY(-3px); } 100% { transform:translateX(-50%) rotate(14deg) translateY(0); } }
@keyframes tbf-arm { 0% { transform:translateX(-50%) rotate(-25deg); } 30% { transform:translateX(-50%) rotate(-30deg); } 60% { transform:translateX(-50%) rotate(-20deg); } 100% { transform:translateX(-50%) rotate(-27deg); } }
@keyframes tbf-spear { 0% { transform:rotate(38deg) translateX(0); } 50% { transform:rotate(45deg) translateX(3px); } 100% { transform:rotate(40deg) translateX(-2px); } }
@keyframes tbf-dust { 0% { transform:translateX(0) translateY(0); opacity:0; } 10% { opacity:0.3; } 90% { opacity:0.25; } 100% { transform:translateX(-110vw) translateY(-10px); opacity:0; } }
@keyframes tbf-shadow { 0% { transform:scaleX(0.95) translateX(0); opacity:0.6; } 50% { transform:scaleX(1.1) translateX(8px); opacity:0.8; } 100% { transform:scaleX(1) translateX(-4px); opacity:0.7; } }

.scn-talbot-mourns-son {
  background: linear-gradient(180deg, #0a0a1a 0%, #1a1a2e 25%, #2a1a2e 50%, #1a1a2e 75%, #0a0a1a 100%),
              radial-gradient(ellipse at 50% 30%, #3a2a4a 0%, transparent 70%);
  background-blend-mode: normal, screen;
  overflow: hidden;
}
.scn-talbot-mourns-son .bg-night { position:absolute; inset:0; background:linear-gradient(180deg, rgba(10,10,26,0.8) 0%, rgba(26,26,46,0.4) 100%); }
.scn-talbot-mourns-son .moon-glow { position:absolute; top:12%; left:60%; width:50px; height:50px; background:radial-gradient(circle, #c0c0e0 0%, #8080a0 40%, transparent 70%); border-radius:50%; box-shadow:0 0 60px 30px rgba(192,192,224,0.2); animation:tms-moon 25s ease-in-out infinite alternate; }
.scn-talbot-mourns-son .figure-kneeling { position:absolute; bottom:28%; left:38%; width:26px; height:42px; background:linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin:bottom center; box-shadow:inset 0 -4px 8px rgba(0,0,0,0.5); animation:tms-kneel 5s ease-in-out infinite; }
.scn-talbot-mourns-son .body-son { position:absolute; bottom:26%; left:50%; width:34px; height:22px; background:linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius:40% 50% 30% 40% / 30% 40% 30% 40%; transform:translateX(-50%) rotate(12deg); box-shadow:inset 0 -3px 6px rgba(0,0,0,0.4); animation:tms-body 7s ease-in-out infinite; }
.scn-talbot-mourns-son .arm-embrace { position:absolute; bottom:30%; left:42%; width:18px; height:5px; background:linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%); border-radius:60% 20% 20% 60% / 80% 30% 30% 80%; transform:rotate(35deg); transform-origin:left center; animation:tms-arm 4s ease-in-out infinite alternate; }
.scn-talbot-mourns-son .torch-light { position:absolute; bottom:35%; left:25%; width:8px; height:10px; background:radial-gradient(circle, #ffcc80 0%, #e08040 50%, transparent 80%); border-radius:50%; box-shadow:0 0 30px 15px rgba(255,200,128,0.3), 0 0 60px 30px rgba(224,128,64,0.15); animation:tms-torch 2.5s ease-in-out infinite alternate; }
.scn-talbot-mourns-son .ground-dark { position:absolute; bottom:0; left:0; right:0; height:30%; background:linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius:30% 40% 0 0 / 20% 25% 0 0; box-shadow:inset 0 8px 20px rgba(0,0,0,0.7); }
.scn-talbot-mourns-son .tear-drops { position:absolute; bottom:36%; left:36%; width:3px; height:3px; background:rgba(160,180,200,0.4); border-radius:50%; box-shadow: 0 6px 0 rgba(160,180,200,0.3), 0 12px 0 rgba(160,180,200,0.2), 0 18px 0 rgba(160,180,200,0.1); animation:tms-tear 3s ease-in infinite; }
@keyframes tms-moon { 0% { transform:scale(0.95) translateX(0); opacity:0.6; } 50% { transform:scale(1.05) translateX(5px); opacity:0.8; } 100% { transform:scale(0.98) translateX(-3px); opacity:0.7; } }
@keyframes tms-kneel { 0% { transform:translateX(0) translateY(0) rotate(-1deg); } 25% { transform:translateX(-2px) translateY(-2px) rotate(1deg); } 50% { transform:translateX(0) translateY(-3px) rotate(0deg); } 75% { transform:translateX(2px) translateY(-1px) rotate(-1deg); } 100% { transform:translateX(0) translateY(0) rotate(0.5deg); } }
@keyframes tms-body { 0% { transform:translateX(-50%) rotate(10deg) translateY(0); } 50% { transform:translateX(-50%) rotate(14deg) translateY(-1px); } 100% { transform:translateX(-50%) rotate(12deg) translateY(0); } }
@keyframes tms-arm { 0% { transform:rotate(30deg) scaleX(1); } 50% { transform:rotate(40deg) scaleX(1.1); } 100% { transform:rotate(35deg) scaleX(0.95); } }
@keyframes tms-torch { 0% { transform:scale(0.9); opacity:0.7; } 50% { transform:scale(1.15); opacity:1; } 100% { transform:scale(0.95); opacity:0.8; } }
@keyframes tms-tear { 0% { transform:translateY(0); opacity:0.6; } 50% { transform:translateY(20px); opacity:0.2; } 100% { transform:translateY(40px); opacity:0; } }

.scn-french-triumph {
  background: linear-gradient(180deg, #7ab0d0 0%, #a0d0e8 30%, #c8e8f0 55%, #e0d8a0 80%, #c8b870 100%),
              radial-gradient(ellipse at 50% 20%, #fff8e0 0%, transparent 60%);
  background-blend-mode: normal, overlay;
  overflow: hidden;
}
.scn-french-triumph .bg-sky-bright { position:absolute; inset:0 0 40% 0; background:linear-gradient(180deg, rgba(122,176,208,0.5) 0%, transparent 100%); }
.scn-french-triumph .sunburst { position:absolute; top:5%; left:45%; width:100px; height:100px; background:radial-gradient(circle, #fff8d0 0%, #ffe8a0 25%, #ffd060 50%, transparent 80%); border-radius:50%; box-shadow:0 0 100px 50px rgba(255,232,160,0.3); animation:frt-sun 20s ease-in-out infinite alternate; }
.scn-french-triumph .ground-gold { position:absolute; bottom:0; left:0; right:0; height:45%; background:linear-gradient(180deg, #d0c080 0%, #b8a060 40%, #a08840 100%); border-radius:20% 30% 0 0 / 10% 15% 0 0; box-shadow:inset 0 8px 30px rgba(0,0,0,0.3); }
.scn-french-triumph .banner-left { position:absolute; bottom:35%; left:20%; width:8px; height:60px; background:linear-gradient(180deg, #6a5a3a 0%, #4a3a2a 100%); border-radius:2px; transform-origin:bottom center; animation:frt-banner-l 3s ease-in-out infinite; }
.scn-french-triumph .banner-right { position:absolute; bottom:35%; right:22%; width:8px; height:55px; background:linear-gradient(180deg, #6a5a3a 0%, #4a3a2a 100%); border-radius:2px; transform-origin:bottom center; animation:frt-banner-r 3.5s ease-in-out infinite; }
.scn-french-triumph .figure-joan { position:absolute; bottom:30%; left:45%; width:22px; height:50px; background:linear-gradient(180deg, #8a7a6a 0%, #5a4a3a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin:bottom center; box-shadow:inset 0 -4px 8px rgba(0,0,0,0.3); animation:frt-joan 4s ease-in-out infinite; }
.scn-french-triumph .raised-sword { position:absolute; bottom:40%; left:48%; width:3px; height:30px; background:linear-gradient(180deg, #e0e0e0 0%, #a0a0a0 60%, #707070 100%); border-radius:1px; transform-origin:bottom center; box-shadow:0 0 8px 3px rgba(255,255,200,0.4); animation:frt-sword 2s ease-in-out infinite alternate; }
.scn-french-triumph .confetti { position:absolute; bottom:40%; left:30%; width:6px; height:6px; background:#e8c060; border-radius:30% 70% 50% 50% / 40% 60% 40% 60%; box-shadow: 20px -10px 0 #e8a060, -15px -25px 0 #d0e080, 35px -15px 0 #e8c060, -30px -8px 0 #c8a050, 10px -35px 0 #e0b060; animation:frt-confetti 6s linear infinite; }
.scn-french-triumph .shadow-troop { position:absolute; bottom:22%; left:55%; width:80px; height:30px; background:radial-gradient(ellipse, rgba(0,0,0,0.15) 0%, transparent 70%); filter:blur(8px); animation:frt-shadow 12s ease-in-out infinite alternate; }
@keyframes frt-sun { 0% { transform:scale(0.9) translateX(0); opacity:0.7; } 50% { transform:scale(1.1) translateX(8px); opacity:1; } 100% { transform:scale(0.95) translateX(-4px); opacity:0.85; } }
@keyframes frt-banner-l { 0% { transform:rotate(-3deg); } 25% { transform:rotate(-10deg); } 50% { transform:rotate(-5deg); } 75% { transform:rotate(-8deg); } 100% { transform:rotate(-3deg); } }
@keyframes frt-banner-r { 0% { transform:rotate(2deg) translateY(0); } 33% { transform:rotate(9deg) translateY(-2px); } 66% { transform:rotate(4deg) translateY(-1px); } 100% { transform:rotate(2deg) translateY(0); } }
@keyframes frt-joan { 0% { transform:translateX(0) translateY(0) rotate(0deg); } 30% { transform:translateX(3px) translateY(-3px) rotate(2deg); } 60% { transform:translateX(-2px) translateY(-2px) rotate(-1deg); } 100% { transform:translateX(0) translateY(0) rotate(0deg); } }
@keyframes frt-sword { 0% { transform:rotate(-8deg) translateX(0); } 50% { transform:rotate(12deg) translateX(3px); } 100% { transform:rotate(-5deg) translateX(-1px); } }
@keyframes frt-confetti { 0% { transform:translateY(0) rotate(0deg); opacity:0; } 20% { opacity:0.8; } 80% { opacity:0.6; } 100% { transform:translateY(-80px) rotate(360deg); opacity:0; } }
@keyframes frt-shadow { 0% { transform:scaleX(0.9) translateX(0); opacity:0.4; } 50% { transform:scaleX(1.1) translateX(10px); opacity:0.6; } 100% { transform:scaleX(1) translateX(-5px); opacity:0.5; } }

.scn-ransom-pay {
  background: linear-gradient(180deg, #1a0f0a 0%, #2a150a 40%, #0d0503 100%), radial-gradient(ellipse at 50% 20%, #4a2a15 0%, transparent 70%);
}
.scn-ransom-pay .sky-dark {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #1a0f0a 0%, #0a0505 100%);
  animation: rp-sky 20s ease-in-out infinite alternate;
}
.scn-ransom-pay .bonfire-glow {
  position: absolute; bottom: 30%; left: 50%; width: 120px; height: 160px; transform: translateX(-50%);
  background: radial-gradient(ellipse, #d06020 0%, #b04010 40%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 60px 30px #d06020, 0 0 120px 60px rgba(208,96,32,0.4);
  animation: rp-glow 3s ease-in-out infinite alternate;
}
.scn-ransom-pay .bonfire-base {
  position: absolute; bottom: 28%; left: 50%; width: 80px; height: 30px; transform: translateX(-50%);
  background: linear-gradient(180deg, #4a2a10 0%, #2a150a 100%);
  border-radius: 50% 50% 30% 30% / 80% 80% 20% 20%;
  box-shadow: inset 0 4px 10px rgba(0,0,0,0.6);
}
.scn-ransom-pay .bonfire-flame {
  position: absolute; bottom: 30%; left: 50%; width: 40px; height: 80px; transform: translateX(-50%);
  background: linear-gradient(0deg, #d06020 0%, #f08030 30%, #ffcc40 50%, #ffe080 70%, transparent 100%);
  border-radius: 50% 50% 30% 30% / 80% 80% 20% 20%;
  filter: blur(2px);
  animation: rp-flame 2s ease-in-out infinite alternate;
}
.scn-ransom-pay .figure-king {
  position: absolute; bottom: 25%; left: 30%; width: 30px; height: 70px;
  background: linear-gradient(180deg, #1a0a05 0%, #0a0502 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: rp-figure 6s ease-in-out infinite;
}
.scn-ransom-pay .throne {
  position: absolute; bottom: 25%; left: 38%; width: 50px; height: 60px;
  background: linear-gradient(180deg, #2a1a0a 0%, #1a0a05 100%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 0 6px 12px rgba(0,0,0,0.6);
  transform: skewX(-5deg);
}
.scn-ransom-pay .spark {
  position: absolute; width: 4px; height: 4px;
  background: radial-gradient(circle, #ffe080 0%, #d06020 100%);
  border-radius: 50%;
  box-shadow: 0 0 6px 2px #ffe080;
  animation: rp-spark 3s ease-in-out infinite;
}
.scn-ransom-pay .spark-1 { bottom: 32%; left: 45%; animation-delay: 0s; }
.scn-ransom-pay .spark-2 { bottom: 34%; left: 55%; animation-delay: 1s; }

@keyframes rp-sky { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.8; } }
@keyframes rp-glow { 0% { box-shadow: 0 0 40px 20px #d06020, 0 0 80px 40px rgba(208,96,32,0.3); opacity: 0.8; } 50% { box-shadow: 0 0 70px 40px #e07030, 0 0 140px 80px rgba(224,112,48,0.5); opacity: 1; } 100% { box-shadow: 0 0 45px 25px #d06020, 0 0 90px 50px rgba(208,96,32,0.35); opacity: 0.85; } }
@keyframes rp-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 rp-figure { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(8px) rotate(2deg); } 100% { transform: translateX(-4px) rotate(-1deg); } }
@keyframes rp-spark { 0% { transform: translate(0, 0) scale(1); opacity: 0; } 30% { opacity: 1; } 50% { transform: translate(-10px, -20px) scale(0.5); } 80% { opacity: 0; } 100% { transform: translate(30px, -40px) scale(0); opacity: 0; } }

.scn-orleans-besieged {
  background: linear-gradient(180deg, #87ceeb 0%, #b0d4e8 30%, #e0f0ff 60%, #fff8dc 100%), radial-gradient(ellipse at 20% 30%, #fffacd 0%, transparent 50%);
}
.scn-orleans-besieged .sky-sun {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #e0f0ff 0%, #fff8dc 100%);
  animation: ob-sky 15s ease-in-out infinite alternate;
}
.scn-orleans-besieged .sun {
  position: absolute; top: 15%; right: 25%; width: 60px; height: 60px;
  background: radial-gradient(circle, #fff8dc 0%, #ffe066 50%, transparent 80%);
  border-radius: 50%;
  box-shadow: 0 0 70px 30px rgba(255,224,102,0.5);
  animation: ob-sun 8s ease-in-out infinite alternate;
}
.scn-orleans-besieged .city-wall {
  position: absolute; bottom: 30%; left: 10%; right: 10%; height: 45%;
  background: linear-gradient(180deg, #8b7355 0%, #6b5a3a 50%, #4a3a2a 100%);
  border-radius: 20% 20% 0 0 / 30% 30% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.5);
}
.scn-orleans-besieged .city-tower {
  position: absolute; bottom: 30%; left: 35%; width: 40px; height: 80px;
  background: linear-gradient(180deg, #7a6548 0%, #5a4a30 100%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 0 4px 10px rgba(0,0,0,0.4);
  animation: ob-tower 12s ease-in-out infinite alternate;
}
.scn-orleans-besieged .soldiers-foreground {
  position: absolute; bottom: 15%; left: 5%; width: 90%; height: 20%;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 0 0 / 100% 100% 0 0;
  box-shadow: inset 0 -8px 20px rgba(0,0,0,0.6);
  animation: ob-soldiers 5s ease-in-out infinite alternate;
}
.scn-orleans-besieged .banner {
  position: absolute; bottom: 48%; width: 20px; height: 40px;
  background: linear-gradient(180deg, #a0461a 0%, #702243 100%);
  border-radius: 5% 5% 10% 10%;
  transform-origin: bottom center;
  animation: ob-banner 4s ease-in-out infinite;
}
.scn-orleans-besieged .banner-left { left: 25%; animation-delay: 0s; }
.scn-orleans-besieged .banner-right { left: 60%; animation-delay: 1.5s; }
.scn-orleans-besieged .arrow {
  position: absolute; bottom: 40%; width: 20px; height: 4px;
  background: linear-gradient(180deg, #5a3a1a 0%, #3a2a0a 100%);
  border-radius: 2px;
  box-shadow: 0 0 2px #3a2a0a;
  animation: ob-arrow 3s ease-in-out infinite;
}
.scn-orleans-besieged .arrow-1 { left: 20%; animation-delay: 0s; }
.scn-orleans-besieged .arrow-2 { left: 50%; animation-delay: 0.8s; }

@keyframes ob-sky { 0% { opacity: 0.9; background-position: 0% 0%; } 50% { opacity: 1; background-position: 10% 5%; } 100% { opacity: 0.85; background-position: 0% 0%; } }
@keyframes ob-sun { 0% { transform: scale(0.95); opacity: 0.9; } 50% { transform: scale(1.05); opacity: 1; } 100% { transform: scale(0.98); opacity: 0.92; } }
@keyframes ob-tower { 0% { transform: translateY(0) scaleY(1); } 50% { transform: translateY(-3px) scaleY(1.02); } 100% { transform: translateY(0) scaleY(1); } }
@keyframes ob-soldiers { 0% { transform: scaleX(1) translateY(0); } 50% { transform: scaleX(1.02) translateY(-1px); } 100% { transform: scaleX(1) translateY(0); } }
@keyframes ob-banner { 0% { transform: rotate(-10deg); } 50% { transform: rotate(10deg); } 100% { transform: rotate(-8deg); } }
@keyframes ob-arrow { 0% { transform: translateX(0) rotate(0deg); opacity: 0; } 30% { opacity: 1; } 50% { transform: translateX(40px) rotate(-15deg); opacity: 0.8; } 100% { transform: translateX(80px) rotate(-30deg); opacity: 0; } }

.scn-preparations-for-war {
  background: linear-gradient(180deg, #2a1f18 0%, #3a2a1a 40%, #1a100a 100%), radial-gradient(ellipse at 50% 30%, #4a3018 0%, transparent 70%);
}
.scn-preparations-for-war .wall-dark {
  position: absolute; inset: 0 0 10% 0;
  background: linear-gradient(180deg, #2a1a10 0%, #1a0f08 100%);
  box-shadow: inset 0 0 30px rgba(0,0,0,0.8);
}
.scn-preparations-for-war .torch-light {
  position: absolute; top: 20%; left: 20%; width: 20px; height: 40px;
  background: radial-gradient(ellipse, #d07030 0%, #b05020 40%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 40px 20px #d07030, 0 0 80px 40px rgba(208,112,48,0.3);
  animation: pw-torch 3s ease-in-out infinite alternate;
}
.scn-preparations-for-war .cannon {
  position: absolute; bottom: 20%; left: 50%; width: 90px; height: 30px; transform: translateX(-50%);
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a10 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 40% 40%;
  box-shadow: 0 4px 12px rgba(0,0,0,0.5);
  animation: pw-cannon 10s ease-in-out infinite alternate;
}
.scn-preparations-for-war .cannonball-stack {
  position: absolute; bottom: 25%; left: 40%; width: 30px; height: 30px;
  background: radial-gradient(circle at 30% 30%, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 50%;
  box-shadow: 0 3px 6px rgba(0,0,0,0.6);
}
.scn-preparations-for-war .barrel {
  position: absolute; bottom: 18%; left: 30%; width: 40px; height: 50px;
  background: linear-gradient(90deg, #4a3a2a 0%, #6a5a3a 50%, #4a3a2a 100%);
  border-radius: 30% 30% 20% 20% / 40% 40% 30% 30%;
  box-shadow: inset 0 4px 10px rgba(0,0,0,0.4);
}
.scn-preparations-for-war .figure-armorer {
  position: absolute; bottom: 20%; left: 60%; width: 25px; height: 60px;
  background: linear-gradient(180deg, #2a1a10 0%, #1a0f08 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pw-armorer 5s ease-in-out infinite;
}
.scn-preparations-for-war .tool-rack {
  position: absolute; bottom: 15%; left: 70%; width: 30px; height: 60px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%);
  border-radius: 5% 5% 10% 10%;
  box-shadow: 0 2px 8px rgba(0,0,0,0.5);
  animation: pw-rack 15s ease-in-out infinite alternate;
}

@keyframes pw-torch { 0% { opacity: 0.8; transform: scaleY(0.9); } 50% { opacity: 1; transform: scaleY(1.1); } 100% { opacity: 0.85; transform: scaleY(0.95); } }
@keyframes pw-cannon { 0% { transform: translateX(-50%) rotate(-2deg); } 50% { transform: translateX(-50%) rotate(2deg); } 100% { transform: translateX(-50%) rotate(-1deg); } }
@keyframes pw-armorer { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(5px) rotate(3deg); } 100% { transform: translateX(-3px) rotate(-2deg); } }
@keyframes pw-rack { 0% { transform: scaleY(1); } 50% { transform: scaleY(0.95); } 100% { transform: scaleY(1.02); } }

.scn-before-orleans-french {
  background: linear-gradient(180deg, #87ceeb 0%, #b0d4e8 30%, #e0f0ff 60%, #fff8dc 100%), radial-gradient(ellipse at 50% 20%, #fffacd 0%, transparent 50%);
}
.scn-before-orleans-french .sky-clear {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #b0d4e8 0%, #e0f0ff 100%);
  animation: bf-sky 20s ease-in-out infinite alternate;
}
.scn-before-orleans-french .sun-bright {
  position: absolute; top: 10%; left: 30%; width: 70px; height: 70px;
  background: radial-gradient(circle, #fff8dc 0%, #ffe066 30%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 80px 40px rgba(255,224,102,0.5);
  animation: bf-sun 12s ease-in-out infinite alternate;
}
.scn-before-orleans-french .field {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #6b8e23 0%, #556b2f 30%, #3a5a1a 100%);
  border-radius: 40% 60% 0 0 / 30% 40% 0 0;
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.3);
  animation: bf-field 15s ease-in-out infinite alternate;
}
.scn-before-orleans-french .king-charles {
  position: absolute; bottom: 28%; left: 50%; width: 35px; height: 80px; transform: translateX(-50%);
  background: linear-gradient(180deg, #1a2a4a 0%, #0a1a3a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  box-shadow: 0 4px 12px rgba(0,0,0,0.4);
  transform-origin: bottom center;
  animation: bf-king 8s ease-in-out infinite;
}
.scn-before-orleans-french .banner-fleur {
  position: absolute; bottom: 40%; left: 50%; width: 30px; height: 50px; transform: translateX(-50%);
  background: linear-gradient(180deg, #1a3a6a 0%, #0a2a5a 100%);
  border-radius: 10% 10% 20% 20%;
  box-shadow: inset 0 2px 6px rgba(255,255,255,0.2);
  animation: bf-banner 6s ease-in-out infinite alternate;
}
.scn-before-orleans-french .soldier-squad {
  position: absolute; bottom: 20%; left: 15%; width: 70%; height: 20%;
  background: linear-gradient(180deg, #4a6a3a 0%, #2a4a1a 100%);
  border-radius: 50% 50% 0 0 / 80% 80% 0 0;
  box-shadow: inset 0 -4px 10px rgba(0,0,0,0.3);
  animation: bf-squad 10s ease-in-out infinite alternate;
}
.scn-before-orleans-french .spear {
  position: absolute; bottom: 40%; width: 4px; height: 60px;
  background: linear-gradient(180deg, #6b5a3a 0%, #4a3a2a 100%);
  border-radius: 2px;
  transform-origin: bottom center;
  animation: bf-spear 5s ease-in-out infinite;
}
.scn-before-orleans-french .spear-1 { left: 30%; animation-delay: 0s; }
.scn-before-orleans-french .spear-2 { left: 60%; animation-delay: 1s; }

@keyframes bf-sky { 0% { opacity: 0.9; background-position: 0% 0%; } 50% { opacity: 1; background-position: 5% 2%; } 100% { opacity: 0.95; background-position: 0% 0%; } }
@keyframes bf-sun { 0% { transform: scale(0.95); opacity: 0.9; } 50% { transform: scale(1.03); opacity: 1; } 100% { transform: scale(0.97); opacity: 0.92; } }
@keyframes bf-field { 0% { transform: translateY(0) scaleX(1); } 50% { transform: translateY(-2px) scaleX(1.01); } 100% { transform: translateY(0) scaleX(1); } }
@keyframes bf-king { 0% { transform: translateX(-50%) rotate(-1deg); } 50% { transform: translateX(-50%) rotate(2deg); } 100% { transform: translateX(-50%) rotate(-1deg); } }
@keyframes bf-banner { 0% { transform: translateX(-50%) rotate(-5deg); } 50% { transform: translateX(-50%) rotate(5deg); } 100% { transform: translateX(-50%) rotate(-3deg); } }
@keyframes bf-squad { 0% { transform: scaleX(1) translateY(0); } 50% { transform: scaleX(1.01) translateY(-1px); } 100% { transform: scaleX(1) translateY(0); } }
@keyframes bf-spear { 0% { transform: rotate(-3deg); } 50% { transform: rotate(3deg); } 100% { transform: rotate(-2deg); } }

.scn-talbot-leaves { background: linear-gradient(180deg, #2a1e12 0%, #1f1610 40%, #0f0b08 100%), radial-gradient(ellipse at 80% 20%, #3a2a18 0%, transparent 70%); }
.scn-talbot-leaves .bg-wall { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #3a2a1a 0%, #1f1610 100%); }
.scn-talbot-leaves .window { position:absolute; top:20%; left:65%; width:80px; height:100px; background: radial-gradient(ellipse at 50% 30%, #8a7a5a 0%, #3a2a1a 80%); border-radius: 20% 20% 0 0; box-shadow: inset 0 0 30px #5a4a2a, 0 0 20px rgba(138,122,90,0.3); animation: tl-window 10s ease-in-out infinite; }
.scn-talbot-leaves .door { position:absolute; bottom:30%; left:20%; width:70px; height:120px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 0 0 10% 10%; box-shadow: 4px 0 12px rgba(0,0,0,0.6); animation: tl-door 8s ease-in-out infinite; }
.scn-talbot-leaves .table { position:absolute; bottom:30%; left:45%; width:100px; height:20px; background: linear-gradient(90deg, #4a3a2a 0%, #6a5a3a 50%, #4a3a2a 100%); border-radius: 4px; box-shadow: 0 4px 8px rgba(0,0,0,0.5); }
.scn-talbot-leaves .candle { position:absolute; bottom:48%; left:48%; width:8px; height:30px; background: linear-gradient(180deg, #d0b080 0%, #a08050 60%, #503810 100%); border-radius: 50% 50% 10% 10% / 60% 60% 20% 20%; box-shadow: 0 0 20px 6px #d0b080; animation: tl-candle 2s ease-in-out infinite; }
.scn-talbot-leaves .figure { position:absolute; bottom:30%; left:15%; width:20px; height:50px; background: linear-gradient(180deg, #2a1a0a 0%, #0f0b08 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: tl-walk 4s ease-in-out infinite; }
@keyframes tl-window { 0% { opacity:0.7; box-shadow: inset 0 0 20px #5a4a2a, 0 0 10px rgba(138,122,90,0.2); } 50% { opacity:1; box-shadow: inset 0 0 40px #6a5a3a, 0 0 30px rgba(138,122,90,0.4); } 100% { opacity:0.8; box-shadow: inset 0 0 25px #5a4a2a, 0 0 15px rgba(138,122,90,0.25); } }
@keyframes tl-door { 0% { transform: rotateY(0deg); } 50% { transform: rotateY(-8deg); } 100% { transform: rotateY(0deg); } }
@keyframes tl-candle { 0% { transform: scaleY(1) rotate(0deg); box-shadow: 0 0 15px 4px #d0b080; } 50% { transform: scaleY(1.05) rotate(2deg); box-shadow: 0 0 25px 8px #e0c090; } 100% { transform: scaleY(1) rotate(-1deg); box-shadow: 0 0 18px 5px #d0b080; } }
@keyframes tl-walk { 0% { transform: translateX(0) translateY(0) rotate(-2deg); } 25% { transform: translateX(8px) translateY(-1px) rotate(1deg); } 50% { transform: translateX(16px) translateY(0) rotate(-2deg); } 75% { transform: translateX(24px) translateY(-1px) rotate(1deg); } 100% { transform: translateX(32px) translateY(0) rotate(0deg); } }

.scn-talbot-prisoner { background: linear-gradient(180deg, #0a0a12 0%, #14141e 40%, #0a0a12 100%), radial-gradient(ellipse at 30% 50%, #1a1a2e 0%, transparent 70%); }
.scn-talbot-prisoner .bg-dark { position:absolute; inset:0; background: linear-gradient(90deg, #0a0a12 0%, #1a1a2e 50%, #0a0a12 100%); }
.scn-talbot-prisoner .bars { position:absolute; top:0; bottom:40%; left:30%; right:70%; background: repeating-linear-gradient(0deg, #2a2a3e 0px, #2a2a3e 6px, transparent 6px, transparent 12px); border-right: 4px solid #2a2a3e; box-shadow: 4px 0 12px rgba(0,0,0,0.8); animation: tp-bars 6s ease-in-out infinite; }
.scn-talbot-prisoner .chains-left { position:absolute; top:30%; left:35%; width:4px; height:60px; background: linear-gradient(180deg, #4a4a5e 0%, #2a2a3e 100%); border-radius: 2px; box-shadow: 2px 0 6px rgba(0,0,0,0.5); transform-origin: top left; animation: tp-chain 3s ease-in-out infinite; }
.scn-talbot-prisoner .chains-right { position:absolute; top:30%; left:55%; width:4px; height:60px; background: linear-gradient(180deg, #4a4a5e 0%, #2a2a3e 100%); border-radius: 2px; box-shadow: -2px 0 6px rgba(0,0,0,0.5); transform-origin: top right; animation: tp-chain 3s ease-in-out infinite 0.5s; }
.scn-talbot-prisoner .figure-prisoner { position:absolute; bottom:40%; left:42%; width:30px; height:70px; background: linear-gradient(180deg, #1a1a2e 0%, #0a0a12 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; box-shadow: 0 0 20px rgba(0,0,0,0.8); animation: tp-figure 4s ease-in-out infinite; }
.scn-talbot-prisoner .torch { position:absolute; top:15%; right:20%; width:10px; height:30px; background: linear-gradient(180deg, #e08030 0%, #a05010 50%, #401000 100%); border-radius: 30% 30% 10% 10%; box-shadow: 0 0 30px 10px #e08030, 0 0 60px 20px rgba(224,128,48,0.3); animation: tp-torch 1.5s ease-in-out infinite; }
.scn-talbot-prisoner .hand-key { position:absolute; top:40%; left:60%; width:12px; height:20px; background: linear-gradient(180deg, #2a2a3e 0%, #1a1a2e 100%); border-radius: 30% 30% 20% 20%; transform: rotate(20deg); animation: tp-hand 3s ease-in-out infinite; box-shadow: 0 0 6px rgba(0,0,0,0.5); }
@keyframes tp-bars { 0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.9; } }
@keyframes tp-chain { 0% { transform: rotate(0deg); } 50% { transform: rotate(8deg); } 100% { transform: rotate(0deg); } }
@keyframes tp-figure { 0% { transform: translateY(0) rotate(-2deg); } 50% { transform: translateY(-4px) rotate(2deg); } 100% { transform: translateY(0) rotate(-2deg); } }
@keyframes tp-torch { 0% { transform: scaleY(1) rotate(-3deg); box-shadow: 0 0 20px 8px #e08030, 0 0 40px 15px rgba(224,128,48,0.2); } 50% { transform: scaleY(1.1) rotate(3deg); box-shadow: 0 0 35px 12px #f09040, 0 0 60px 25px rgba(224,128,48,0.4); } 100% { transform: scaleY(1) rotate(0deg); box-shadow: 0 0 25px 10px #e08030, 0 0 45px 18px rgba(224,128,48,0.25); } }
@keyframes tp-hand { 0% { transform: rotate(15deg) translateY(0); } 50% { transform: rotate(25deg) translateY(-2px); } 100% { transform: rotate(15deg) translateY(0); } }

.scn-talbot-laughs { background: linear-gradient(180deg, #2a1e12 0%, #1f1610 30%, #0f0b08 100%), radial-gradient(ellipse at 50% 40%, #3a2a18 0%, transparent 70%); }
.scn-talbot-laughs .bg-room { position:absolute; inset:0; background: linear-gradient(135deg, #3a2a1a 0%, #1f1610 100%); }
.scn-talbot-laughs .floor { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #2a1e12 0%, #0f0804 100%); border-radius: 20% 20% 0 0; }
.scn-talbot-laughs .shadow-laugh { position:absolute; bottom:30%; left:50%; width:50px; height:80px; background: radial-gradient(ellipse at 50% 30%, rgba(0,0,0,0.6) 0%, transparent 70%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: tlaugh-shadow 3s ease-in-out infinite; box-shadow: 0 0 30px rgba(0,0,0,0.4); }
.scn-talbot-laughs .candle-laugh { position:absolute; bottom:40%; left:30%; width:8px; height:25px; background: linear-gradient(180deg, #d0b080 0%, #a08050 60%, #503810 100%); border-radius: 50% 50% 10% 10% / 60% 60% 20% 20%; box-shadow: 0 0 15px 4px #d0b080; animation: tlaugh-candle 1.5s ease-in-out infinite; }
.scn-talbot-laughs .picture-frame { position:absolute; top:15%; right:15%; width:60px; height:80px; border: 4px solid #4a3a2a; background: linear-gradient(135deg, #2a1e12 0%, #1f1610 100%); border-radius: 8px; box-shadow: 0 0 12px rgba(0,0,0,0.6); transform: rotate(3deg); animation: tlaugh-frame 5s ease-in-out infinite; }
.scn-talbot-laughs .table-laugh { position:absolute; bottom:30%; left:25%; width:120px; height:15px; background: linear-gradient(90deg, #4a3a2a 0%, #6a5a3a 50%, #4a3a2a 100%); border-radius: 4px; box-shadow: 0 4px 8px rgba(0,0,0,0.5); }
@keyframes tlaugh-shadow { 0% { transform: scaleX(1) scaleY(1) rotate(-5deg); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; } 25% { transform: scaleX(1.2) scaleY(0.9) rotate(0deg); border-radius: 40% 60% 20% 40% / 70% 50% 40% 30%; } 50% { transform: scaleX(1) scaleY(1.1) rotate(5deg); border-radius: 60% 40% 40% 20% / 50% 70% 30% 50%; } 75% { transform: scaleX(1.1) scaleY(0.95) rotate(-3deg); border-radius: 45% 55% 25% 35% / 65% 55% 35% 30%; } 100% { transform: scaleX(1) scaleY(1) rotate(0deg); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; } }
@keyframes tlaugh-candle { 0% { transform: scaleY(1) rotate(-2deg); box-shadow: 0 0 10px 2px #d0b080; } 50% { transform: scaleY(1.15) rotate(3deg); box-shadow: 0 0 25px 8px #e0c090; } 100% { transform: scaleY(1) rotate(0deg); box-shadow: 0 0 15px 4px #d0b080; } }
@keyframes tlaugh-frame { 0% { transform: rotate(2deg) translateX(0); } 50% { transform: rotate(-1deg) translateX(5px); } 100% { transform: rotate(2deg) translateX(0); } }

.scn-talbon-soldiers-arrive { background: linear-gradient(180deg, #1e1610 0%, #15100a 40%, #0a0805 100%), radial-gradient(ellipse at 50% 80%, #2a1e12 0%, transparent 70%); }
.scn-talbon-soldiers-arrive .bg-arch { position:absolute; inset:0 20% 30% 20%; background: linear-gradient(135deg, #2a1e12 0%, #1f1610 100%); border-radius: 40% 40% 0 0; box-shadow: inset 0 0 30px rgba(0,0,0,0.8); }
.scn-talbon-soldiers-arrive .soldier1 { position:absolute; bottom:30%; left:30%; width:18px; height:50px; background: linear-gradient(180deg, #2a1e12 0%, #0f0b08 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: tsa-soldier 6s ease-in-out infinite; }
.scn-talbon-soldiers-arrive .soldier2 { position:absolute; bottom:30%; left:50%; width:18px; height:50px; background: linear-gradient(180deg, #2a1e12 0%, #0f0b08 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: tsa-soldier 6s ease-in-out infinite 1s; }
.scn-talbon-soldiers-arrive .drum { position:absolute; bottom:30%; left:42%; width:30px; height:20px; background: linear-gradient(90deg, #4a3a2a 0%, #6a5a3a 50%, #4a3a2a 100%); border-radius: 10%; box-shadow: 0 4px 8px rgba(0,0,0,0.5); animation: tsa-drum 4s ease-in-out infinite; }
.scn-talbon-soldiers-arrive .lantern-arrival { position:absolute; top:20%; left:50%; width:12px; height:18px; background: radial-gradient(circle, #e0b060 0%, #a08040 70%); border-radius: 20%; box-shadow: 0 0 20px 6px #e0b060, 0 0 40px 12px rgba(224,176,96,0.3); animation: tsa-lantern 3s ease-in-out infinite; }
.scn-talbon-soldiers-arrive .floor-shadow-arrival { position:absolute; bottom:30%; left:25%; right:55%; height:4px; background: radial-gradient(ellipse, rgba(0,0,0,0.4) 0%, transparent 70%); animation: tsa-shadow 6s ease-in-out infinite; }
@keyframes tsa-soldier { 0% { transform: translateX(0) translateY(0); } 50% { transform: translateX(10px) translateY(-2px); } 100% { transform: translateX(20px) translateY(0); } }
@keyframes tsa-drum { 0% { transform: scaleX(1) scaleY(1); } 50% { transform: scaleX(1.05) scaleY(1.02); } 100% { transform: scaleX(1) scaleY(1); } }
@keyframes tsa-lantern { 0% { opacity:0.8; box-shadow: 0 0 15px 4px #e0b060, 0 0 30px 8px rgba(224,176,96,0.2); } 50% { opacity:1; box-shadow: 0 0 30px 10px #f0c070, 0 0 50px 18px rgba(224,176,96,0.4); } 100% { opacity:0.85; box-shadow: 0 0 20px 6px #e0b060, 0 0 35px 10px rgba(224,176,96,0.25); } }
@keyframes tsa-shadow { 0% { opacity:0.3; transform: scaleX(1); } 50% { opacity:0.5; transform: scaleX(1.2); } 100% { opacity:0.3; transform: scaleX(1); } }

/* ===== burgundy-lags — calm + sunlit wide horizon ===== */
.scn-burgundy-lags {
  background:
    linear-gradient(180deg, #b8d4e8 0%, #e8e0c0 40%, #d4c080 70%, #a08050 100%),
    radial-gradient(ellipse at 50% 100%, #c8b070 0%, transparent 70%);
}
.scn-burgundy-lags .sky-bg {
  position: absolute; inset: 0 0 55% 0;
  background: linear-gradient(180deg, #7aabcc 0%, #b8d4e8 50%, transparent 100%);
  animation: bl1-skyb 20s ease-in-out infinite alternate;
}
.scn-burgundy-lags .distant-hills {
  position: absolute; bottom: 45%; left: 0; right: 0; height: 18%;
  background: linear-gradient(180deg, #7a8a6a 0%, #5a6a4a 100%);
  border-radius: 60% 40% 0 0 / 70% 50% 0 0;
  box-shadow: inset 0 6px 18px rgba(0,0,0,.25);
  animation: bl1-hills 25s ease-in-out infinite alternate;
}
.scn-burgundy-lags .field {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #8a9a6a 0%, #6a7a4a 40%, #4a5a2a 100%);
  border-radius: 20% 30% 0 0 / 10% 15% 0 0;
  box-shadow: inset 0 10px 30px rgba(0,0,0,.3);
}
.scn-burgundy-lags .march-figures {
  position: absolute; bottom: 42%; left: 20%; width: 60%; height: 8%;
  background:
    linear-gradient(90deg, transparent 0%, #3a2a1a 10%, transparent 12%, #3a2a1a 18%, transparent 20%, #3a2a1a 28%, transparent 30%, #3a2a1a 38%, transparent 40%, #3a2a1a 48%, transparent 50%, #3a2a1a 58%, transparent 60%, #3a2a1a 68%, transparent 70%, #3a2a1a 78%, transparent 80%, #3a2a1a 88%, transparent 90%, #3a2a1a 98%, transparent 100%);
  background-size: 12% 100%;
  filter: blur(1px);
  animation: bl1-march 12s linear infinite;
}
.scn-burgundy-lags .banner-set {
  position: absolute; bottom: 44%; left: 25%; width: 4%; height: 12%;
  background:
    radial-gradient(ellipse 60% 100% at 50% 0%, #c04030 0%, #802010 100%);
  clip-path: polygon(50% 0%, 20% 100%, 80% 100%);
  filter: blur(0.5px);
  animation: bl1-banner 6s ease-in-out infinite alternate;
}
.scn-burgundy-lags .cloud-drift-a {
  position: absolute; top: 10%; left: 0; width: 120px; height: 20px;
  background: linear-gradient(90deg, rgba(255,255,240,.6) 0%, rgba(255,255,240,.2) 100%);
  border-radius: 50%; filter: blur(8px);
  animation: bl1-drift-a 40s linear infinite;
}
.scn-burgundy-lags .cloud-drift-b {
  position: absolute; top: 18%; left: 0; width: 90px; height: 14px;
  background: linear-gradient(90deg, rgba(255,255,240,.4) 0%, rgba(255,255,240,.1) 100%);
  border-radius: 50%; filter: blur(6px);
  animation: bl1-drift-b 55s linear infinite reverse;
}
.scn-burgundy-lags .dust-haze {
  position: absolute; bottom: 38%; left: 10%; width: 80%; height: 12%;
  background: radial-gradient(ellipse at 50% 50%, rgba(200,180,120,.3) 0%, transparent 70%);
  filter: blur(10px);
  animation: bl1-dust 8s ease-in-out infinite alternate;
}
@keyframes bl1-skyb { 0% { opacity:.85 } 50% { opacity:1 } 100% { opacity:.9 } }
@keyframes bl1-hills { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(1px) } }
@keyframes bl1-march { 0% { background-position: 0 0 } 100% { background-position: 60% 0 } }
@keyframes bl1-banner { 0% { transform: translateY(0) rotate(-2deg) } 50% { transform: translateY(-4px) rotate(2deg) } 100% { transform: translateY(-1px) rotate(-1deg) } }
@keyframes bl1-drift-a { 0% { transform: translateX(-60px) } 100% { transform: translateX(110vw) } }
@keyframes bl1-drift-b { 0% { transform: translateX(40vw) } 100% { transform: translateX(-80vw) } }
@keyframes bl1-dust { 0% { opacity:.3; transform: translateY(0) } 50% { opacity:.6; transform: translateY(-5px) } 100% { opacity:.4; transform: translateY(2px) } }

/* ===== joan-woos-burgundy — calm + sunlit encounter ===== */
.scn-joan-woos-burgundy {
  background:
    linear-gradient(180deg, #c8d8b0 0%, #f0e8c0 30%, #e0d098 60%, #b8a068 100%),
    radial-gradient(ellipse at 40% 30%, #f8f0d0 0%, transparent 50%);
}
.scn-joan-woos-burgundy .clearing-bg {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at 50% 40%, #f0e8c0 0%, #c8d8b0 60%, #a0b080 100%);
  animation: jw1-clear 16s ease-in-out infinite alternate;
}
.scn-joan-woos-burgundy .sun-glow {
  position: absolute; top: 8%; left: 42%; width: 18%; height: 30%;
  background: radial-gradient(circle, #fff8e0 0%, #f0d890 40%, transparent 70%);
  filter: blur(12px);
  animation: jw1-sun 8s ease-in-out infinite alternate;
}
.scn-joan-woos-burgundy .left-figure {
  position: absolute; bottom: 28%; left: 30%; width: 20px; height: 44px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 60%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  box-shadow: 0 0 12px rgba(0,0,0,.3);
  animation: jw1-left 5s ease-in-out infinite;
}
.scn-joan-woos-burgundy .right-figure {
  position: absolute; bottom: 28%; right: 30%; width: 22px; height: 48px;
  background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 60%, #1a0a00 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  box-shadow: 0 0 16px rgba(0,0,0,.35);
  animation: jw1-right 5s ease-in-out infinite;
}
.scn-joan-woos-burgundy .ground-line {
  position: absolute; bottom: 25%; left: 15%; right: 15%; height: 4%;
  background: linear-gradient(90deg, transparent, #6a7a3a 20%, #7a8a4a 50%, #6a7a3a 80%, transparent);
  border-radius: 50%;
  filter: blur(3px);
}
.scn-joan-woos-burgundy .petal-drift {
  position: absolute; top: 40%; left: 20%; width: 12px; height: 12px;
  background: radial-gradient(circle, #f0d8c8 0%, #e0c0a8 100%);
  border-radius: 50% 0 50% 0;
  filter: blur(1px);
  animation: jw1-petal 7s ease-in-out infinite;
}
.scn-joan-woos-burgundy .petal-drift-b {
  position: absolute; top: 48%; left: 55%; width: 10px; height: 10px;
  background: radial-gradient(circle, #f8e0d0 0%, #e8c8b0 100%);
  border-radius: 50% 0 50% 0;
  filter: blur(1px);
  animation: jw1-petalb 9s ease-in-out infinite reverse;
}
@keyframes jw1-clear { 0% { opacity:.9 } 50% { opacity:1 } 100% { opacity:.92 } }
@keyframes jw1-sun { 0% { transform: scale(.85) translateY(0); opacity:.7 } 50% { transform: scale(1.05) translateY(-4px); opacity:.95 } 100% { transform: scale(.9) translateY(-2px); opacity:.8 } }
@keyframes jw1-left { 0% { transform: translateX(0) rotate(-2deg) } 30% { transform: translateX(4px) rotate(0deg) } 60% { transform: translateX(8px) rotate(1deg) } 100% { transform: translateX(0) rotate(-2deg) } }
@keyframes jw1-right { 0% { transform: translateX(0) rotate(1deg) } 30% { transform: translateX(-3px) rotate(0deg) } 60% { transform: translateX(-6px) rotate(-1deg) } 100% { transform: translateX(0) rotate(1deg) } }
@keyframes jw1-petal { 0% { transform: translate(0,0) rotate(0deg); opacity:.6 } 50% { transform: translate(20px,-30px) rotate(180deg); opacity:.3 } 100% { transform: translate(40px,10px) rotate(360deg); opacity:.6 } }
@keyframes jw1-petalb { 0% { transform: translate(0,0) rotate(0deg); opacity:.5 } 50% { transform: translate(-15px,-25px) rotate(180deg); opacity:.2 } 100% { transform: translate(-35px,15px) rotate(360deg); opacity:.5 } }

/* ===== burgundy-relents — warm + sunlit emotional turn ===== */
.scn-burgundy-relents {
  background:
    linear-gradient(180deg, #e8a050 0%, #d08830 30%, #b07020 60%, #804010 100%),
    radial-gradient(ellipse at 30% 40%, #f8c870 0%, transparent 60%);
}
.scn-burgundy-relents .sky-ember {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #f0b860 0%, #e89840 50%, transparent 100%);
  animation: br1-sky 18s ease-in-out infinite alternate;
}
.scn-burgundy-relents .horizon-line {
  position: absolute; bottom: 48%; left: 0; right: 0; height: 12%;
  background: linear-gradient(180deg, #6a4a2a 0%, #4a2a10 100%);
  border-radius: 40% 60% 0 0 / 30% 50% 0 0;
  box-shadow: inset 0 8px 25px rgba(0,0,0,.4);
  animation: br1-horizon 22s ease-in-out infinite alternate;
}
.scn-burgundy-relents .figure-kneel {
  position: absolute; bottom: 30%; left: 48%; width: 24px; height: 46px;
  background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 60%, #1a0a00 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  box-shadow: 0 0 20px rgba(0,0,0,.5);
  animation: br1-kneel 6s ease-in-out infinite;
}
.scn-burgundy-relents .light-ray {
  position: absolute; top: 5%; left: 35%; width: 30%; height: 55%;
  background: linear-gradient(180deg, rgba(255,220,120,.5) 0%, transparent 100%);
  clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
  filter: blur(8px);
  animation: br1-ray 7s ease-in-out infinite alternate;
}
.scn-burgundy-relents .ground-dark {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #5a3a1a 0%, #3a200a 60%, #1a0a00 100%);
  border-radius: 30% 20% 0 0 / 15% 10% 0 0;
  box-shadow: inset 0 12px 30px rgba(0,0,0,.5);
}
.scn-burgundy-relents .mote-glow {
  position: absolute; top: 20%; left: 40%; width: 8px; height: 8px;
  background: radial-gradient(circle, #ffe880 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(2px);
  animation: br1-mote 4s ease-in-out infinite;
}
.scn-burgundy-relents .mote-glow-b {
  position: absolute; top: 28%; left: 55%; width: 6px; height: 6px;
  background: radial-gradient(circle, #ffe880 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(2px);
  animation: br1-moteb 5s ease-in-out infinite reverse;
}
.scn-burgundy-relents .shadow-sweep {
  position: absolute; bottom: 30%; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,.3) 100%);
  animation: br1-shadow 9s ease-in-out infinite alternate;
}
@keyframes br1-sky { 0% { opacity:.75 } 50% { opacity:.95 } 100% { opacity:.8 } }
@keyframes br1-horizon { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(1px) } }
@keyframes br1-kneel { 0% { transform: translateX(0) rotate(-1deg) } 30% { transform: translateX(-4px) rotate(2deg) translateY(-2px) } 60% { transform: translateX(-8px) rotate(1deg) translateY(-1px) } 100% { transform: translateX(0) rotate(-1deg) } }
@keyframes br1-ray { 0% { opacity:.3; transform: rotate(-2deg) } 50% { opacity:.8; transform: rotate(0deg) } 100% { opacity:.4; transform: rotate(2deg) } }
@keyframes br1-mote { 0% { transform: translate(0,0); opacity:.4 } 50% { transform: translate(10px,-15px); opacity:.9 } 100% { transform: translate(-5px,-8px); opacity:.5 } }
@keyframes br1-moteb { 0% { transform: translate(0,0); opacity:.3 } 50% { transform: translate(-8px,-12px); opacity:.7 } 100% { transform: translate(6px,-4px); opacity:.4 } }
@keyframes br1-shadow { 0% { opacity:.4 } 50% { opacity:.8 } 100% { opacity:.5 } }

/* ===== burgundy-joins-french — warm + sunlit embrace ===== */
.scn-burgundy-joins-french {
  background:
    linear-gradient(180deg, #f0c068 0%, #d8a048 30%, #c08030 60%, #a06020 100%),
    radial-gradient(ellipse at 50% 30%, #ffe8a0 0%, transparent 50%);
}
.scn-burgundy-joins-french .bg-radiant {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at 50% 35%, #ffe8a0 0%, #d8a048 50%, #a06020 100%);
  animation: bj1-rad 20s ease-in-out infinite alternate;
}
.scn-burgundy-joins-french .folk-left {
  position: absolute; bottom: 25%; left: 28%; width: 20px; height: 44px;
  background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 60%, #1a0a00 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  box-shadow: 0 0 18px rgba(0,0,0,.4);
  animation: bj1-left 6s ease-in-out infinite;
}
.scn-burgundy-joins-french .folk-right {
  position: absolute; bottom: 25%; right: 28%; width: 20px; height: 44px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 60%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  box-shadow: 0 0 18px rgba(0,0,0,.4);
  animation: bj1-right 6s ease-in-out infinite;
}
.scn-burgundy-joins-french .embrace-center {
  position: absolute; bottom: 28%; left: 50%; width: 26px; height: 36px;
  background: radial-gradient(ellipse 100% 60% at 50% 50%, #a08060 0%, #6a4a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: translateX(-50%);
  box-shadow: 0 4px 20px rgba(0,0,0,.5);
  animation: bj1-embrace 4s ease-in-out infinite alternate;
}
.scn-burgundy-joins-french .banner-lily {
  position: absolute; top: 10%; left: 45%; width: 10%; height: 20%;
  background: radial-gradient(ellipse 50% 100% at 50% 0%, #f0c840 0%, #c08020 100%);
  clip-path: polygon(50% 0%, 30% 30%, 50% 20%, 70% 30%, 50% 0%, 20% 50%, 50% 40%, 80% 50%, 50% 0%);
  filter: blur(1px);
  animation: bj1-lily 8s ease-in-out infinite alternate;
}
.scn-burgundy-joins-french .sparkle-up {
  position: absolute; bottom: 40%; left: 40%; width: 6px; height: 6px;
  background: radial-gradient(circle, #fff0c0 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(1px);
  animation: bj1-spark 5s ease-in-out infinite;
}
.scn-burgundy-joins-french .sparkle-up-b {
  position: absolute; bottom: 35%; left: 55%; width: 5px; height: 5px;
  background: radial-gradient(circle, #fff0c0 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(1px);
  animation: bj1-sparkb 6s ease-in-out infinite reverse;
}
.scn-burgundy-joins-french .ground-union {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(180deg, #7a5a2a 0%, #4a2a10 60%, #2a1000 100%);
  border-radius: 50% 50% 0 0 / 20% 20% 0 0;
  box-shadow: inset 0 10px 30px rgba(0,0,0,.5);
  animation: bj1-ground 20s ease-in-out infinite alternate;
}
@keyframes bj1-rad { 0% { opacity:.88 } 50% { opacity:1 } 100% { opacity:.92 } }
@keyframes bj1-left { 0% { transform: translateX(0) rotate(-2deg) } 50% { transform: translateX(6px) rotate(1deg) translateY(-3px) } 100% { transform: translateX(0) rotate(-2deg) } }
@keyframes bj1-right { 0% { transform: translateX(0) rotate(2deg) } 50% { transform: translateX(-6px) rotate(-1deg) translateY(-3px) } 100% { transform: translateX(0) rotate(2deg) } }
@keyframes bj1-embrace { 0% { transform: translateX(-50%) scaleX(.95); opacity:.8 } 50% { transform: translateX(-50%) scaleX(1.05); opacity:1 } 100% { transform: translateX(-50%) scaleX(.98); opacity:.9 } }
@keyframes bj1-lily { 0% { transform: translateY(0) rotate(-3deg) } 50% { transform: translateY(-6px) rotate(3deg) } 100% { transform: translateY(-2px) rotate(-1deg) } }
@keyframes bj1-spark { 0% { transform: translate(0,0); opacity:.4 } 50% { transform: translate(8px,-25px); opacity:.9 } 100% { transform: translate(-4px,-12px); opacity:.5 } }
@keyframes bj1-sparkb { 0% { transform: translate(0,0); opacity:.3 } 50% { transform: translate(-6px,-20px); opacity:.8 } 100% { transform: translate(4px,-8px); opacity:.4 } }
@keyframes bj1-ground { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(1px) } }

/* reignier-consents */
.scn-reignier-consents { background: linear-gradient(180deg, #f9e8c0 0%, #d6b87a 50%, #b8924f 100%), radial-gradient(ellipse at 70% 20%, #ffeaa7 0%, transparent 60%); }
.scn-reignier-consents .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #fce5b3 0%, #e6c888 100%); animation: rc1-sky 12s ease-in-out infinite alternate; }
.scn-reignier-consents .castle-wall { position:absolute; bottom:30%; left:10%; right:10%; height:40%; background: linear-gradient(90deg, #b89a6b 0%, #d4b88a 50%, #b89a6b 100%); border-radius: 0 0 8% 8% / 0 0 20% 20%; box-shadow: inset 0 -20px 40px rgba(0,0,0,.2); animation: rc1-wall 20s ease-in-out infinite alternate; }
.scn-reignier-consents .gate { position:absolute; bottom:30%; left:50%; width:60px; height:50px; transform:translateX(-50%); background: #6b4f2a; border-radius: 50% 50% 8% 8% / 60% 60% 10% 10%; box-shadow: inset 0 5px 15px rgba(0,0,0,.5); }
.scn-reignier-consents .figure-descend { position:absolute; bottom:45%; left:50%; width:16px; height:40px; transform:translateX(-50%); background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%); border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%; animation: rc1-descend 8s ease-in-out infinite alternate; }
.scn-reignier-consents .sun-glow { position:absolute; top:10%; right:20%; width:60px; height:60px; background: radial-gradient(circle, #ffeaa7 0%, #f9c97a 40%, transparent 70%); border-radius:50%; animation: rc1-sun 6s ease-in-out infinite alternate; }
.scn-reignier-consents .cloud { position:absolute; background: linear-gradient(90deg, rgba(255,255,230,.6) 0%, rgba(255,255,230,.2) 100%); border-radius: 50%; filter: blur(5px); }
.scn-reignier-consents .cloud.rc1-a { top:12%; left:15%; width:80px; height:16px; animation: rc1-drift-a 40s linear infinite; }
.scn-reignier-consents .cloud.rc1-b { top:22%; right:10%; width:70px; height:14px; animation: rc1-drift-b 35s linear infinite reverse; }
.scn-reignier-consents .banner { position:absolute; top:20%; left:20%; width:24px; height:36px; background: linear-gradient(180deg, #c8553d 0%, #a0461a 100%); border-radius: 0 0 20% 20% / 0 0 40% 40%; transform-origin: top right; animation: rc1-banner 4s ease-in-out infinite alternate; }
@keyframes rc1-sky { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.85 } }
@keyframes rc1-wall { 0% { transform: translateX(-3px) } 50% { transform: translateX(3px) } 100% { transform: translateX(-2px) } }
@keyframes rc1-descend { 0% { transform: translateX(-50%) translateY(0) scaleY(1) } 50% { transform: translateX(-50%) translateY(6px) scaleY(1.02) } 100% { transform: translateX(-50%) translateY(0) scaleY(.98) } }
@keyframes rc1-sun { 0% { opacity:.7; transform: scale(.95) } 50% { opacity:1; transform: scale(1.05) } 100% { opacity:.8; transform: scale(1) } }
@keyframes rc1-drift-a { 0% { transform: translateX(-30px) } 50% { transform: translateX(60vw) } 100% { transform: translateX(120vw) } }
@keyframes rc1-drift-b { 0% { transform: translateX(0) } 50% { transform: translateX(-50vw) } 100% { transform: translateX(-100vw) } }
@keyframes rc1-banner { 0% { transform: rotate(0) } 50% { transform: rotate(5deg) } 100% { transform: rotate(-3deg) } }

/* suffolk-envies */
.scn-suffolk-envies { background: linear-gradient(135deg, #c89b3e 0%, #e8c35a 50%, #b8802b 100%), radial-gradient(circle at 30% 70%, #ffd966 0%, transparent 70%); }
.scn-suffolk-envies .bg-gold { position:absolute; inset:0; background: linear-gradient(180deg, #d9b14a 0%, #bf8a30 100%); opacity:.6; animation: se2-bg 15s ease-in-out infinite alternate; }
.scn-suffolk-envies .arch-stone { position:absolute; bottom:20%; left:15%; right:15%; height:55%; background: linear-gradient(180deg, #8a7a5a 0%, #5a4a2a 100%); border-radius: 50% 50% 8% 8% / 80% 80% 10% 10%; box-shadow: inset 0 10px 30px rgba(0,0,0,.4); animation: se2-arch 20s ease-in-out infinite alternate; }
.scn-suffolk-envies .throne { position:absolute; bottom:20%; left:50%; width:70px; height:50px; transform:translateX(-50%); background: linear-gradient(135deg, #b8833a 0%, #664a20 100%); border-radius: 12% 12% 6% 6%; box-shadow: 0 8px 20px rgba(0,0,0,.3); animation: se2-throne 9s ease-in-out infinite; }
.scn-suffolk-envies .suffolk-profile { position:absolute; bottom:25%; left:38%; width:20px; height:48px; background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: se2-figure 6s ease-in-out infinite; }
.scn-suffolk-envies .diamond-gem { position:absolute; top:35%; left:55%; width:14px; height:14px; background: radial-gradient(circle, #ffe680 0%, #d9b14a 60%); border-radius: 10%; box-shadow: 0 0 20px 6px #ffd966, 0 0 40px 12px rgba(255,217,102,.4); animation: se2-gem 4s ease-in-out infinite alternate; }
.scn-suffolk-envies .halo-glow { position:absolute; top:30%; left:52%; width:40px; height:40px; background: radial-gradient(circle, #ffeaa7 0%, transparent 70%); border-radius: 50%; animation: se2-halo 8s ease-in-out infinite alternate; }
.scn-suffolk-envies .column { position:absolute; bottom:10%; left:30%; width:10px; height:70%; background: linear-gradient(180deg, #7a6a4a 0%, #4a3a1a 100%); border-radius: 4px; box-shadow: 4px 0 8px rgba(0,0,0,.3); animation: se2-column 25s ease-in-out infinite alternate; }
@keyframes se2-bg { 0% { opacity:.5 } 50% { opacity:.7 } 100% { opacity:.6 } }
@keyframes se2-arch { 0% { transform: scale(.98) translateY(2px) } 50% { transform: scale(1.01) translateY(-2px) } 100% { transform: scale(.99) translateY(1px) } }
@keyframes se2-throne { 0%,100% { transform: translateX(-50%) } 50% { transform: translateX(-50%) translateY(-3px) } }
@keyframes se2-figure { 0% { transform: translateX(0) rotate(0) } 25% { transform: translateX(4px) rotate(2deg) } 50% { transform: translateX(8px) rotate(0) } 75% { transform: translateX(4px) rotate(-2deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes se2-gem { 0% { box-shadow: 0 0 15px 4px #ffd966; transform: scale(1) } 50% { box-shadow: 0 0 30px 10px #ffe680; transform: scale(1.15) } 100% { box-shadow: 0 0 20px 6px #ffd966; transform: scale(1.05) } }
@keyframes se2-halo { 0% { opacity:.4; transform: scale(.9) } 50% { opacity:.8; transform: scale(1.1) } 100% { opacity:.5; transform: scale(1.05) } }
@keyframes se2-column { 0% { transform: rotate(.5deg) } 50% { transform: rotate(-.5deg) } 100% { transform: rotate(.3deg) } }

/* kiss-of-ambition */
.scn-kiss-of-ambition { background: linear-gradient(180deg, #d9b14a 0%, #bf8a30 50%, #a06a1e 100%), radial-gradient(circle at 50% 60%, #ffeaa7 0%, transparent 70%); }
.scn-kiss-of-ambition .bg-warm { position:absolute; inset:0; background: linear-gradient(135deg, #c89b3e 0%, #e8c35a 50%, #b8802b 100%); opacity:.5; animation: ka3-bg 18s ease-in-out infinite alternate; }
.scn-kiss-of-ambition .arch-kiss { position:absolute; bottom:15%; left:10%; right:10%; height:60%; background: linear-gradient(180deg, #7a6a4a 0%, #4a3a1a 100%); border-radius: 50% 50% 10% 10% / 90% 90% 10% 10%; box-shadow: inset 0 10px 30px rgba(0,0,0,.5); animation: ka3-arch 22s ease-in-out infinite alternate; }
.scn-kiss-of-ambition .figure-left { position:absolute; bottom:25%; left:40%; width:18px; height:50px; background: linear-gradient(180deg, #2a1a0a 0%, #0a0502 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ka3-left 6s ease-in-out infinite; }
.scn-kiss-of-ambition .figure-right { position:absolute; bottom:25%; right:40%; width:18px; height:50px; background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ka3-right 6s ease-in-out infinite; }
.scn-kiss-of-ambition .kiss-halo { position:absolute; bottom:30%; left:50%; width:50px; height:50px; transform:translate(-50%, -20px); background: radial-gradient(circle, #ffeaa7 0%, transparent 70%); border-radius: 50%; animation: ka3-halo 5s ease-in-out infinite alternate; }
.scn-kiss-of-ambition .labyrinth-border { position:absolute; inset:5%; border: 2px solid #a06a1e; border-radius: 20% 80% 20% 80% / 60% 40% 60% 40%; background: repeating-linear-gradient(45deg, transparent, transparent 10px, #8a6a2a 10px, #8a6a2a 12px); opacity:.3; animation: ka3-pattern 30s linear infinite; }
@keyframes ka3-bg { 0% { opacity:.4 } 50% { opacity:.6 } 100% { opacity:.5 } }
@keyframes ka3-arch { 0% { transform: scaleY(.98) } 50% { transform: scaleY(1.02) } 100% { transform: scaleY(.99) } }
@keyframes ka3-left { 0% { transform: translateX(0) rotate(3deg) } 25% { transform: translateX(-2px) rotate(2deg) } 50% { transform: translateX(0) rotate(1deg) } 75% { transform: translateX(2px) rotate(3deg) } 100% { transform: translateX(0) rotate(3deg) } }
@keyframes ka3-right { 0% { transform: translateX(0) rotate(-3deg) } 25% { transform: translateX(2px) rotate(-2deg) } 50% { transform: translateX(0) rotate(-1deg) } 75% { transform: translateX(-2px) rotate(-3deg) } 100% { transform: translateX(0) rotate(-3deg) } }
@keyframes ka3-halo { 0% { opacity:.5; transform: translate(-50%, -20px) scale(.9) } 50% { opacity:.9; transform: translate(-50%, -25px) scale(1.1) } 100% { opacity:.6; transform: translate(-50%, -20px) scale(1) } }
@keyframes ka3-pattern { 0% { transform: rotate(0) } 50% { transform: rotate(180deg) } 100% { transform: rotate(360deg) } }

/* joan-condemned */
.scn-joan-condemned { background: linear-gradient(180deg, #1a0c02 0%, #2a1505 50%, #0e0601 100%), radial-gradient(circle at 30% 40%, #4a2a10 0%, transparent 80%); }
.scn-joan-condemned .bg-dungeon { position:absolute; inset:0; background: linear-gradient(135deg, #1a0c02 0%, #0e0601 100%); opacity:.7; animation: jc4-bg 25s ease-in-out infinite alternate; }
.scn-joan-condemned .wall-stone { position:absolute; bottom:0; left:0; right:0; height:70%; background: linear-gradient(180deg, #2a1a0a 0%, #1a0c02 100%); border-radius: 10% 10% 0 0 / 30% 30% 0 0; box-shadow: inset 0 20px 40px rgba(0,0,0,.6); animation: jc4-wall 12s ease-in-out infinite alternate; }
.scn-joan-condemned .floor { position:absolute; bottom:0; left:0; right:0; height:15%; background: linear-gradient(0deg, #1a0c02 0%, #2a1505 50%, #1a0c02 100%); border-radius: 0 0 30% 30% / 0 0 50% 50%; }
.scn-joan-condemned .joan-figure { position:absolute; bottom:15%; left:50%; width:18px; height:55px; transform:translateX(-50%); background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: jc4-figure 6s ease-in-out infinite; }
.scn-joan-condemned .chains { position:absolute; bottom:30%; left:40%; width:8px; height:30px; background: linear-gradient(180deg, #5a4a3a 0%, #2a1a0a 100%); border-radius: 4px / 8px; box-shadow: 0 0 6px rgba(0,0,0,.5); animation: jc4-chains 4s ease-in-out infinite alternate; }
.scn-joan-condemned .torch-flame { position:absolute; top:20%; right:15%; width:20px; height:40px; background: radial-gradient(circle, #ffa060 0%, #d06020 50%, transparent 80%); border-radius: 50%; filter: blur(2px); animation: jc4-torch 3s ease-in-out infinite alternate; }
.scn-joan-condemned .cast-shadow { position:absolute; bottom:0; left:30%; width:40%; height:20%; background: rgba(0,0,0,.7); border-radius: 50% 50% 0 0 / 100% 100% 0 0; filter: blur(8px); animation: jc4-shadow 5s ease-in-out infinite alternate; }
@keyframes jc4-bg { 0% { opacity:.6 } 50% { opacity:.8 } 100% { opacity:.7 } }
@keyframes jc4-wall { 0% { transform: translateY(2px) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes jc4-figure { 0% { transform: translateX(-50%) rotate(0) } 25% { transform: translateX(-50%) rotate(2deg) } 50% { transform: translateX(-50%) rotate(-1deg) } 75% { transform: translateX(-50%) rotate(3deg) } 100% { transform: translateX(-50%) rotate(0) } }
@keyframes jc4-chains { 0% { transform: rotate(-2deg) translateY(0) } 50% { transform: rotate(2deg) translateY(2px) } 100% { transform: rotate(-1deg) translateY(0) } }
@keyframes jc4-torch { 0% { opacity:.5; transform: scale(.9) rotate(-5deg) } 50% { opacity:1; transform: scale(1.1) rotate(5deg) } 100% { opacity:.6; transform: scale(.95) rotate(0) } }
@keyframes jc4-shadow { 0% { opacity:.6; transform: scale(1) } 50% { opacity:.9; transform: scale(1.05) } 100% { opacity:.7; transform: scale(1.02) } }

.scn-taunting-bedford {
  background: linear-gradient(180deg, #1a1a3e 0%, #2c2244 50%, #4a3a6e 100%), radial-gradient(ellipse at 50% 100%, #4a3a6e 0%, transparent 70%);
}
.scn-taunting-bedford .moon {
  position: absolute; top: 8%; left: 75%; width: 50px; height: 50px;
  background: radial-gradient(circle, #e8e8f0 0%, #b0b0c0 70%);
  border-radius: 50%; box-shadow: 0 0 30px 10px rgba(200,200,230,0.3);
  animation: tb-moon 8s ease-in-out infinite alternate;
}
.scn-taunting-bedford .window {
  position: absolute; top: 5%; left: 10%; width: 60px; height: 90px;
  background: linear-gradient(180deg, #3a3a5e 0%, #2a2a4e 100%);
  border: 2px solid #5a5a7a; border-radius: 4px;
  animation: tb-window 12s ease-in-out infinite;
}
.scn-taunting-bedford .chair {
  position: absolute; bottom: 20%; left: 35%; width: 70px; height: 80px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 20% 20% 10% 10% / 40% 40% 20% 20%;
  transform-origin: bottom center;
  animation: tb-chair 4s ease-in-out infinite;
}
.scn-taunting-bedford .old-man {
  position: absolute; bottom: 22%; left: 37%; width: 40px; height: 60px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: tb-old 5s ease-in-out infinite;
}
.scn-taunting-bedford .taunter {
  position: absolute; bottom: 25%; left: 55%; width: 35px; height: 70px;
  background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom left;
  animation: tb-taunt 3s ease-in-out infinite;
}
.scn-taunting-bedford .lance {
  position: absolute; bottom: 18%; left: 48%; width: 80px; height: 4px;
  background: linear-gradient(90deg, #6a5a4a 0%, #8a7a6a 50%, #6a5a4a 100%);
  border-radius: 2px; transform: rotate(-5deg);
  animation: tb-lance 6s ease-in-out infinite alternate;
}
.scn-taunting-bedford .shadow-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,0.3) 100%);
  border-radius: 50% 50% 0 0;
}

@keyframes tb-moon {
  0% { transform: translateY(0); opacity: 0.8; }
  50% { transform: translateY(-5px); opacity: 1; }
  100% { transform: translateY(0); opacity: 0.9; }
}
@keyframes tb-window {
  0% { box-shadow: inset 0 0 10px rgba(200,200,230,0.1); }
  50% { box-shadow: inset 0 0 20px rgba(200,200,230,0.3); }
  100% { box-shadow: inset 0 0 10px rgba(200,200,230,0.1); }
}
@keyframes tb-chair {
  0% { transform: rotate(0deg); }
  25% { transform: rotate(1deg); }
  50% { transform: rotate(-1deg); }
  75% { transform: rotate(1deg); }
  100% { transform: rotate(0deg); }
}
@keyframes tb-old {
  0% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-2px) rotate(2deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes tb-taunt {
  0% { transform: rotate(0deg) translateY(0); }
  25% { transform: rotate(-10deg) translateY(-3px); }
  50% { transform: rotate(0deg) translateY(0); }
  75% { transform: rotate(10deg) translateY(-3px); }
  100% { transform: rotate(0deg) translateY(0); }
}
@keyframes tb-lance {
  0% { transform: rotate(-5deg) translateX(0); }
  50% { transform: rotate(-2deg) translateX(10px); }
  100% { transform: rotate(-5deg) translateX(0); }
}

.scn-challenge-refused {
  background: linear-gradient(180deg, #1a1a3e 0%, #2c2244 50%, #4a3a6e 100%), radial-gradient(ellipse at 50% 100%, #4a3a6e 0%, transparent 70%);
}
.scn-challenge-refused .moon {
  position: absolute; top: 8%; right: 15%; width: 45px; height: 45px;
  background: radial-gradient(circle, #e8e8f0 0%, #b0b0c0 70%);
  border-radius: 50%; box-shadow: 0 0 25px 8px rgba(200,200,230,0.3);
  animation: cr-moon 10s ease-in-out infinite alternate;
}
.scn-challenge-refused .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #2a2a4e 0%, transparent 100%);
  animation: cr-sky 15s ease-in-out infinite;
}
.scn-challenge-refused .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%);
  border-radius: 30% 70% 0 0;
  animation: cr-ground 20s ease-in-out infinite;
}
.scn-challenge-refused .soldier-a {
  position: absolute; bottom: 25%; left: 25%; width: 30px; height: 65px;
  background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%);
  border-radius: 30% 30% 20% 20% / 50% 50% 40% 40%;
  transform-origin: bottom;
  animation: cr-soldier-a 5s ease-in-out infinite;
}
.scn-challenge-refused .soldier-b {
  position: absolute; bottom: 25%; right: 25%; width: 30px; height: 65px;
  background: linear-gradient(180deg, #4a4a5a 0%, #2a2a3a 100%);
  border-radius: 30% 30% 20% 20% / 50% 50% 40% 40%;
  transform-origin: bottom;
  animation: cr-soldier-b 5s ease-in-out infinite;
}
.scn-challenge-refused .flag-a {
  position: absolute; bottom: 30%; left: 20%; width: 25px; height: 35px;
  background: linear-gradient(180deg, #5a4a6a 0%, #3a2a4a 100%);
  transform-origin: bottom left;
  animation: cr-flag-a 3s ease-in-out infinite;
}
.scn-challenge-refused .flag-b {
  position: absolute; bottom: 30%; right: 20%; width: 25px; height: 35px;
  background: linear-gradient(180deg, #5a4a6a 0%, #3a2a4a 100%);
  transform-origin: bottom left;
  animation: cr-flag-b 3s ease-in-out infinite 1s;
}

@keyframes cr-moon {
  0% { transform: translateY(0) scale(1); opacity: 0.8; }
  50% { transform: translateY(-4px) scale(1.02); opacity: 1; }
  100% { transform: translateY(0) scale(1); opacity: 0.9; }
}
@keyframes cr-sky {
  0% { opacity: 0.6; }
  50% { opacity: 1; }
  100% { opacity: 0.7; }
}
@keyframes cr-ground {
  0% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
  100% { transform: translateY(0); }
}
@keyframes cr-soldier-a {
  0% { transform: rotate(0deg); }
  25% { transform: rotate(5deg) translateY(-2px); }
  50% { transform: rotate(0deg); }
  75% { transform: rotate(-5deg) translateY(-2px); }
  100% { transform: rotate(0deg); }
}
@keyframes cr-soldier-b {
  0% { transform: rotate(0deg); }
  25% { transform: rotate(-5deg) translateY(-2px); }
  50% { transform: rotate(0deg); }
  75% { transform: rotate(5deg) translateY(-2px); }
  100% { transform: rotate(0deg); }
}
@keyframes cr-flag-a {
  0% { transform: rotate(-5deg) scaleY(1); }
  50% { transform: rotate(5deg) scaleY(1.05); }
  100% { transform: rotate(-5deg) scaleY(1); }
}
@keyframes cr-flag-b {
  0% { transform: rotate(-5deg) scaleY(1); }
  50% { transform: rotate(5deg) scaleY(1.05); }
  100% { transform: rotate(-5deg) scaleY(1); }
}

.scn-vow-to-recapture {
  background: linear-gradient(180deg, #1a1a3e 0%, #2c2244 50%, #4a3a6e 100%), radial-gradient(ellipse at 50% 100%, #4a3a6e 0%, transparent 70%);
}
.scn-vow-to-recapture .moon {
  position: absolute; top: 8%; left: 20%; width: 40px; height: 40px;
  background: radial-gradient(circle, #e8e8f0 0%, #b0b0c0 70%);
  border-radius: 50%; box-shadow: 0 0 20px 6px rgba(200,200,230,0.3);
  animation: vt-moon 12s ease-in-out infinite alternate;
}
.scn-vow-to-recapture .sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #2a2a4e 0%, transparent 100%);
  animation: vt-sky 8s ease-in-out infinite;
}
.scn-vow-to-recapture .wall {
  position: absolute; bottom: 30%; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #4a3a3a 0%, #2a1a1a 100%);
  border-radius: 20% 20% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.5);
  animation: vt-wall 10s ease-in-out infinite;
}
.scn-vow-to-recapture .kneeling-figure {
  position: absolute; bottom: 25%; left: 30%; width: 35px; height: 50px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom;
  animation: vt-kneel 3s ease-in-out infinite;
}
.scn-vow-to-recapture .standing-figure {
  position: absolute; bottom: 28%; right: 30%; width: 35px; height: 70px;
  background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom;
  animation: vt-stand 4s ease-in-out infinite;
}
.scn-vow-to-recapture .sword {
  position: absolute; bottom: 30%; left: 48%; width: 4px; height: 50px;
  background: linear-gradient(180deg, #b0b0c0 0%, #707080 50%, #b0b0c0 100%);
  border-radius: 2px; box-shadow: 0 0 10px 2px rgba(200,200,230,0.2);
  transform-origin: bottom center;
  animation: vt-sword 2s ease-in-out infinite;
}
.scn-vow-to-recapture .banner {
  position: absolute; bottom: 35%; right: 20%; width: 30px; height: 40px;
  background: linear-gradient(180deg, #5a4a6a 0%, #3a2a4a 100%);
  transform-origin: bottom left;
  animation: vt-banner 3s ease-in-out infinite 0.5s;
}

@keyframes vt-moon {
  0% { transform: translateX(0); opacity: 0.7; }
  50% { transform: translateX(3px); opacity: 1; }
  100% { transform: translateX(0); opacity: 0.8; }
}
@keyframes vt-sky {
  0% { opacity: 0.8; }
  50% { opacity: 1; }
  100% { opacity: 0.7; }
}
@keyframes vt-wall {
  0% { transform: scaleY(1); }
  50% { transform: scaleY(0.97); }
  100% { transform: scaleY(1); }
}
@keyframes vt-kneel {
  0% { transform: rotate(0deg) translateY(0); }
  25% { transform: rotate(5deg) translateY(-2px); }
  50% { transform: rotate(0deg) translateY(0); }
  75% { transform: rotate(-5deg) translateY(-2px); }
  100% { transform: rotate(0deg) translateY(0); }
}
@keyframes vt-stand {
  0% { transform: rotate(0deg); }
  25% { transform: rotate(-3deg) translateY(-3px); }
  75% { transform: rotate(3deg) translateY(-3px); }
  100% { transform: rotate(0deg); }
}
@keyframes vt-sword {
  0% { transform: rotate(0deg) translateX(0); }
  25% { transform: rotate(5deg) translateX(2px); }
  50% { transform: rotate(0deg) translateX(0); }
  75% { transform: rotate(-5deg) translateX(-2px); }
  100% { transform: rotate(0deg) translateX(0); }
}
@keyframes vt-banner {
  0% { transform: rotate(-5deg) scaleY(1); }
  50% { transform: rotate(5deg) scaleY(1.05); }
  100% { transform: rotate(-5deg) scaleY(1); }
}

.scn-bedford-refuses {
  background: linear-gradient(180deg, #1a1a3e 0%, #2c2244 50%, #4a3a6e 100%), radial-gradient(ellipse at 50% 100%, #4a3a6e 0%, transparent 70%);
}
.scn-bedford-refuses .moon {
  position: absolute; top: 8%; right: 10%; width: 45px; height: 45px;
  background: radial-gradient(circle, #e8e8f0 0%, #b0b0c0 70%);
  border-radius: 50%; box-shadow: 0 0 25px 8px rgba(200,200,230,0.3);
  animation: br-moon 14s ease-in-out infinite alternate;
}
.scn-bedford-refuses .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #2a2a4e 0%, transparent 100%);
  animation: br-sky 10s ease-in-out infinite;
}
.scn-bedford-refuses .wall {
  position: absolute; bottom: 20%; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #4a3a3a 0%, #2a1a1a 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.5);
  animation: br-wall 12s ease-in-out infinite;
}
.scn-bedford-refuses .litter {
  position: absolute; bottom: 18%; left: 25%; width: 80px; height: 50px;
  background: linear-gradient(180deg, #3a2a4a 0%, #1a0a2a 100%);
  border-radius: 20% 20% 10% 10% / 40% 40% 20% 20%;
  box-shadow: 0 5px 15px rgba(0,0,0,0.4);
  animation: br-litter 5s ease-in-out infinite;
}
.scn-bedford-refuses .sick-figure {
  position: absolute; bottom: 20%; left: 30%; width: 30px; height: 40px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom;
  animation: br-sick 4s ease-in-out infinite;
}
.scn-bedford-refuses .persuader {
  position: absolute; bottom: 22%; right: 25%; width: 30px; height: 65px;
  background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom;
  animation: br-persuade 3s ease-in-out infinite;
}
.scn-bedford-refuses .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 18%;
  background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 0 0;
}

@keyframes br-moon {
  0% { transform: translateY(0) scale(1); opacity: 0.7; }
  50% { transform: translateY(-5px) scale(1.02); opacity: 1; }
  100% { transform: translateY(0) scale(1); opacity: 0.8; }
}
@keyframes br-sky {
  0% { opacity: 0.6; }
  50% { opacity: 1; }
  100% { opacity: 0.7; }
}
@keyframes br-wall {
  0% { transform: scaleY(1); }
  50% { transform: scaleY(0.96); }
  100% { transform: scaleY(1); }
}
@keyframes br-litter {
  0% { transform: rotate(0deg) translateY(0); }
  25% { transform: rotate(1deg) translateY(-2px); }
  50% { transform: rotate(0deg) translateY(0); }
  75% { transform: rotate(-1deg) translateY(-2px); }
  100% { transform: rotate(0deg) translateY(0); }
}
@keyframes br-sick {
  0% { transform: rotate(0deg) translateX(0); }
  25% { transform: rotate(3deg) translateX(2px); }
  50% { transform: rotate(0deg) translateX(0); }
  75% { transform: rotate(-3deg) translateX(-2px); }
  100% { transform: rotate(0deg) translateX(0); }
}
@keyframes br-persuade {
  0% { transform: rotate(0deg) translateY(0); }
  25% { transform: rotate(-8deg) translateY(-3px); }
  50% { transform: rotate(0deg) translateY(0); }
  75% { transform: rotate(8deg) translateY(-3px); }
  100% { transform: rotate(0deg) translateY(0); }
}

/* Scene 1: cardinal-installed */
.scn-cardinal-installed {
  background:
    linear-gradient(180deg, #4a3a2a 0%, #6a5a4a 40%, #8a7a6a 100%),
    radial-gradient(ellipse at 50% 100%, #4a3a2a 0%, transparent 70%);
}
.scn-cardinal-installed .wall-bg {
  position:absolute; inset:0 0 30% 0;
  background: linear-gradient(180deg, #7a6a5a 0%, #5a4a3a 100%);
  box-shadow: inset 0 8px 20px rgba(0,0,0,.3);
  animation: crd-wall 12s ease-in-out infinite alternate;
}
.scn-cardinal-installed .floor {
  position:absolute; bottom:0; left:0; right:0; height:30%;
  background: linear-gradient(0deg, #3a2a1a 0%, #5a4a2a 100%);
  border-radius: 30% 70% 0 0 / 20% 40% 0 0;
  animation: crd-floor 18s ease-in-out infinite alternate;
}
.scn-cardinal-installed .cardinal-figure {
  position:absolute; bottom:30%; left:50%; width:40px; height:80px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 0 4px 8px rgba(0,0,0,.5);
  animation: crd-figure 6s ease-in-out infinite;
}
.scn-cardinal-installed .cardinal-hat {
  position:absolute; bottom:85%; left:50%; width:30px; height:12px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #8a1a1a 0%, #5a0a0a 100%);
  border-radius: 50% 50% 0 0;
  box-shadow: 0 0 8px rgba(138,26,26,.4);
  animation: crd-hat 4s ease-in-out infinite alternate;
}
.scn-cardinal-installed .candle {
  position:absolute; bottom:30%; left:70%; width:6px; height:20px;
  background: linear-gradient(180deg, #e0c080 0%, #c0a060 100%);
  border-radius: 4px;
  box-shadow: 0 -10px 12px 4px #ffd060;
  animation: crd-candle 3s ease-in-out infinite;
}
.scn-cardinal-installed .window-light {
  position:absolute; top:15%; right:15%; width:50px; height:60px;
  background: radial-gradient(ellipse, #ffeed0 0%, #e0c080 50%, transparent 80%);
  border-radius: 40% 40% 10% 10%;
  box-shadow: 0 0 30px 15px #ffe0a0;
  animation: crd-window 8s ease-in-out infinite alternate;
}
@keyframes crd-wall { 0% { opacity:.9 } 50% { opacity:1 } 100% { opacity:.95 } }
@keyframes crd-floor { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes crd-figure { 0% { transform: translateX(-50%) rotate(-1deg) } 50% { transform: translateX(-50%) rotate(1deg) } 100% { transform: translateX(-50%) rotate(0) } }
@keyframes crd-hat { 0% { transform: translateX(-50%) translateY(0) } 50% { transform: translateX(-50%) translateY(-3px) } 100% { transform: translateX(-50%) translateY(0) } }
@keyframes crd-candle { 0% { box-shadow: 0 -10px 12px 4px #ffd060; opacity:.8 } 50% { box-shadow: 0 -12px 18px 6px #ffc040; opacity:1 } 100% { box-shadow: 0 -10px 12px 4px #ffd060; opacity:.85 } }
@keyframes crd-window { 0% { opacity:.7 } 50% { opacity:1 } 100% { opacity:.8 } }

/* Scene 2: henry-gives-jewel */
.scn-henry-gives-jewel {
  background:
    linear-gradient(180deg, #4a3a5a 0%, #6a5a7a 40%, #8a7a9a 100%),
    radial-gradient(ellipse at 50% 50%, #6a5a7a 0%, transparent 70%);
}
.scn-henry-gives-jewel .bg-curtain {
  position:absolute; inset:0;
  background: linear-gradient(135deg, #5a4a6a 0%, #7a6a8a 50%, #5a4a6a 100%);
  animation: jwl-curtain 15s ease-in-out infinite alternate;
}
.scn-henry-gives-jewel .jewel {
  position:absolute; top:40%; left:50%; width:40px; height:40px;
  transform: translate(-50%, -50%);
  background: radial-gradient(circle, #80e0e0 0%, #40a0c0 40%, #2060a0 100%);
  border-radius: 50%;
  box-shadow: 0 0 30px 10px rgba(64,160,192,.6), 0 0 60px 20px rgba(64,160,192,.3);
  animation: jwl-glow 4s ease-in-out infinite alternate;
}
.scn-henry-gives-jewel .hand-left {
  position:absolute; top:45%; left:35%; width:30px; height:50px;
  background: linear-gradient(180deg, #d0c0b0 0%, #b0a090 100%);
  border-radius: 40% 20% 30% 50% / 50% 30% 40% 60%;
  transform: rotate(-15deg);
  animation: jwl-hand-l 5s ease-in-out infinite;
}
.scn-henry-gives-jewel .hand-right {
  position:absolute; top:42%; left:55%; width:30px; height:50px;
  background: linear-gradient(180deg, #d0c0b0 0%, #b0a090 100%);
  border-radius: 20% 40% 50% 30% / 30% 50% 60% 40%;
  transform: rotate(15deg) scaleX(-1);
  animation: jwl-hand-r 5s ease-in-out infinite 0.5s;
}
.scn-henry-gives-jewel .royal-cloth {
  position:absolute; bottom:20%; left:30%; right:30%; height:40%;
  background: linear-gradient(180deg, #4a3a5a 0%, #2a1a3a 100%);
  border-radius: 50% 50% 20% 20%;
  box-shadow: 0 4px 12px rgba(0,0,0,.4);
  animation: jwl-cloth 8s ease-in-out infinite alternate;
}
@keyframes jwl-curtain { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.85 } }
@keyframes jwl-glow { 0% { box-shadow: 0 0 20px 5px rgba(64,160,192,.4); transform: translate(-50%, -50%) scale(.95); } 50% { box-shadow: 0 0 40px 15px rgba(64,160,192,.7); transform: translate(-50%, -50%) scale(1.05); } 100% { box-shadow: 0 0 25px 8px rgba(64,160,192,.5); transform: translate(-50%, -50%) scale(1); } }
@keyframes jwl-hand-l { 0% { transform: rotate(-15deg) translateY(0); } 50% { transform: rotate(-12deg) translateY(-3px); } 100% { transform: rotate(-15deg) translateY(0); } }
@keyframes jwl-hand-r { 0% { transform: rotate(15deg) scaleX(-1) translateY(0); } 50% { transform: rotate(12deg) scaleX(-1) translateY(-3px); } 100% { transform: rotate(15deg) scaleX(-1) translateY(0); } }
@keyframes jwl-cloth { 0% { transform: scaleY(1); } 50% { transform: scaleY(1.02); } 100% { transform: scaleY(1); } }

/* Scene 3: parisians-revolt */
.scn-parisians-revolt {
  background:
    linear-gradient(180deg, #6a8ac0 0%, #8aaaee 40%, #aaccff 100%),
    radial-gradient(ellipse at 50% 0%, #aaccff 0%, transparent 60%);
}
.scn-parisians-revolt .sky-rev {
  position:absolute; inset:0 0 40% 0;
  background: linear-gradient(180deg, #8aaeff 0%, #b0ceff 100%);
  animation: rev-sky 10s ease-in-out infinite alternate;
}
.scn-parisians-revolt .sun-rev {
  position:absolute; top:10%; left:20%; width:60px; height:60px;
  background: radial-gradient(circle, #ffe080 0%, #ffc040 50%, #ff8800 80%);
  border-radius: 50%;
  box-shadow: 0 0 40px 20px #ffc040, 0 0 80px 40px rgba(255,192,64,.4);
  animation: rev-sun 20s ease-in-out infinite;
}
.scn-parisians-revolt .ground-rev {
  position:absolute; bottom:0; left:0; right:0; height:40%;
  background: linear-gradient(0deg, #4a6a3a 0%, #6a9a5a 100%);
  border-radius: 40% 60% 0 0 / 60% 80% 0 0;
  animation: rev-ground 12s ease-in-out infinite alternate;
}
.scn-parisians-revolt .castle-wall {
  position:absolute; bottom:40%; left:5%; width:80px; height:100px;
  background: linear-gradient(180deg, #8a7a6a 0%, #6a5a4a 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: 0 4px 8px rgba(0,0,0,.3);
  animation: rev-wall 15s ease-in-out infinite alternate;
}
.scn-parisians-revolt .crowd-left {
  position:absolute; bottom:38%; left:25%; width:40px; height:50px;
  background: radial-gradient(ellipse at 50% 20%, #3a2a1a 0%, #1a0a0a 100%);
  border-radius: 30% 30% 20% 20%;
  mask: radial-gradient(ellipse at 50% 10%, transparent 5px, black 5px) repeat; /* simulate heads */
  animation: rev-crowd 4s ease-in-out infinite;
}
.scn-parisians-revolt .crowd-right {
  position:absolute; bottom:38%; right:25%; width:40px; height:50px;
  background: radial-gradient(ellipse at 50% 20%, #3a2a1a 0%, #1a0a0a 100%);
  border-radius: 30% 30% 20% 20%;
  mask: radial-gradient(ellipse at 50% 10%, transparent 5px, black 5px) repeat;
  animation: rev-crowd 4s ease-in-out infinite 0.5s;
}
.scn-parisians-revolt .flag-center {
  position:absolute; bottom:38%; left:50%; width:6px; height:60px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #8a5a3a 0%, #5a3a2a 100%);
  border-radius: 2px;
}
.scn-parisians-revolt .flag-center::before { /* simple flag shape */
  content:''; position:absolute; top:0; left:6px; width:20px; height:20px;
  background: linear-gradient(135deg, #c8553d 0%, #a0461a 100%);
  border-radius: 0 20% 40% 0;
  animation: rev-flag 3s ease-in-out infinite alternate;
}
@keyframes rev-sky { 0% { opacity:.9 } 50% { opacity:1 } 100% { opacity:.95 } }
@keyframes rev-sun { 0% { transform: scale(1); } 50% { transform: scale(1.05); } 100% { transform: scale(1); } }
@keyframes rev-ground { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes rev-wall { 0% { transform: translateY(0) } 50% { transform: translateY(-3px) } 100% { transform: translateY(0) } }
@keyframes rev-crowd { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes rev-flag { 0% { transform: rotate(-5deg) } 50% { transform: rotate(5deg) } 100% { transform: rotate(0) } }

/* Scene 4: scout-news */
.scn-scout-news {
  background:
    linear-gradient(180deg, #6a7080 0%, #8a90a0 40%, #b0b8c0 100%),
    radial-gradient(ellipse at 50% 100%, #6a7080 0%, transparent 70%);
}
.scn-scout-news .sky-sct {
  position:absolute; inset:0 0 50% 0;
  background: linear-gradient(180deg, #a0a8b0 0%, #c0c8d0 100%);
  animation: sct-sky 14s ease-in-out infinite alternate;
}
.scn-scout-news .hills-bg {
  position:absolute; bottom:40%; left:0; right:0; height:20%;
  background: linear-gradient(180deg, #5a6a5a 0%, #3a4a3a 100%);
  border-radius: 60% 40% 0 0 / 40% 60% 0 0;
  animation: sct-hills 20s ease-in-out infinite alternate;
}
.scn-scout-news .hill-mid {
  position:absolute; bottom:30%; left:10%; right:10%; height:25%;
  background: linear-gradient(180deg, #4a5a4a 0%, #2a3a2a 100%);
  border-radius: 50% 50% 0 0;
  animation: sct-hill-mid 18s ease-in-out infinite alternate;
}
.scn-scout-news .scout-figure {
  position:absolute; bottom:45%; left:40%; width:20px; height:40px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: sct-scout 4s ease-in-out infinite;
}
.scn-scout-news .army-left {
  position:absolute; bottom:30%; left:5%; width:80px; height:30px;
  background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%);
  border-radius: 30% 30% 20% 20%;
  mask: radial-gradient(ellipse at 10% 50%, transparent 6px, black 6px) repeat-x;
  animation: sct-army 8s ease-in-out infinite alternate;
}
.scn-scout-news .army-right {
  position:absolute; bottom:30%; right:5%; width:80px; height:30px;
  background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%);
  border-radius: 30% 30% 20% 20%;
  mask: radial-gradient(ellipse at 10% 50%, transparent 6px, black 6px) repeat-x;
  animation: sct-army 8s ease-in-out infinite alternate 0.3s;
}
.scn-scout-news .cloud-sct1 {
  position:absolute; top:15%; left:10%; width:80px; height:20px;
  background: radial-gradient(ellipse, rgba(255,255,255,.6) 0%, rgba(200,200,210,.2) 100%);
  border-radius: 50%; filter: blur(8px);
  animation: sct-cloud1 40s linear infinite;
}
.scn-scout-news .cloud-sct2 {
  position:absolute; top:22%; right:20%; width:60px; height:15px;
  background: radial-gradient(ellipse, rgba(255,255,255,.5) 0%, rgba(200,200,210,.15) 100%);
  border-radius: 50%; filter: blur(6px);
  animation: sct-cloud2 50s linear infinite;
}
@keyframes sct-sky { 0% { opacity:.85 } 50% { opacity:1 } 100% { opacity:.9 } }
@keyframes sct-hills { 0% { transform: translateY(0) } 50% { transform: translateY(-3px) } 100% { transform: translateY(0) } }
@keyframes sct-hill-mid { 0% { transform: translateY(0) scale(.98) } 50% { transform: translateY(-2px) scale(1) } 100% { transform: translateY(0) scale(.98) } }
@keyframes sct-scout { 0% { transform: translateX(0) rotate(-2deg) } 25% { transform: translateX(4px) rotate(2deg) } 50% { transform: translateX(8px) rotate(-2deg) } 75% { transform: translateX(12px) rotate(2deg) } 100% { transform: translateX(16px) rotate(0) } }
@keyframes sct-army { 0% { transform: translateX(0) } 50% { transform: translateX(5px) } 100% { transform: translateX(0) } }
@keyframes sct-cloud1 { 0% { transform: translateX(-30px) } 100% { transform: translateX(120vw) } }
@keyframes sct-cloud2 { 0% { transform: translateX(0) } 100% { transform: translateX(-100vw) } }

/* celebration */
.scn-celebration { background: linear-gradient(180deg, #7ec8e3 0%, #b0d8f0 30%, #fce68a 70%, #f5c942 100%), radial-gradient(ellipse at 50% 0%, #fdeb57 0%, transparent 60%); }
.scn-celebration .sky { position:absolute; inset:0 0 60% 0; background: linear-gradient(180deg, #b0d8f0 0%, #fce68a 90%); animation: cel-sky 8s ease-in-out infinite alternate; }
.scn-celebration .sun { position:absolute; top:15%; left:40%; width:80px; height:80px; background: radial-gradient(circle, #fffbe0 0%, #fce68a 60%, transparent 80%); border-radius:50%; box-shadow: 0 0 60px 30px rgba(255,230,138,.4); animation: cel-sun 6s ease-in-out infinite; }
.scn-celebration .banners { position:absolute; top:10%; left:5%; width:200px; height:200px; background: repeating-linear-gradient(45deg, #f5c542 0%, #f5c542 10px, #b89b3a 10px, #b89b3a 20px); clip-path: polygon(0 0, 100% 0, 80% 100%, 20% 100%); animation: cel-banners 12s ease-in-out infinite alternate; }
.scn-celebration .crowd { position:absolute; bottom:20%; left:10%; right:10%; height:120px; display:flex; justify-content:space-around; }
.scn-celebration .crowd::before, .scn-celebration .crowd::after { content:''; display:block; width:20px; height:60px; background: linear-gradient(180deg, #4a6741 0%, #2e4a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: cel-crowd 4s ease-in-out infinite; }
.scn-celebration .crown { position:absolute; top:12%; left:48%; width:50px; height:20px; background: linear-gradient(180deg, #d4af37 0%, #b8860b 100%); clip-path: polygon(0 100%, 10% 0, 25% 30%, 40% 0, 50% 30%, 60% 0, 75% 30%, 90% 0, 100% 100%); animation: cel-crown 2s ease-in-out infinite; }
.scn-celebration .pennants { position:absolute; top:8%; left:20%; right:20%; height:30px; background: repeating-linear-gradient(90deg, #f0d78a 0%, #f0d78a 30px, transparent 30px, transparent 40px); animation: cel-pennants 20s linear infinite; }
@keyframes cel-sky { 0% { opacity:0.7 } 50% { opacity:1 } 100% { opacity:0.8 } }
@keyframes cel-sun { 0% { transform:scale(0.95); box-shadow: 0 0 40px 20px rgba(255,230,138,.3) } 50% { transform:scale(1.05); box-shadow: 0 0 80px 40px rgba(255,230,138,.6) } 100% { transform:scale(1); box-shadow: 0 0 50px 25px rgba(255,230,138,.4) } }
@keyframes cel-banners { 0% { transform: translateX(0) rotate(-2deg) } 50% { transform: translateX(10px) rotate(2deg) } 100% { transform: translateX(0) rotate(-1deg) } }
@keyframes cel-crowd { 0% { transform: translateY(0) rotate(-1deg) } 50% { transform: translateY(-5px) rotate(1deg) } 100% { transform: translateY(0) rotate(0deg) } }
@keyframes cel-crown { 0% { transform: translateY(0) scale(1) } 50% { transform: translateY(-2px) scale(1.1) } 100% { transform: translateY(0) scale(1) } }
@keyframes cel-pennants { 0% { background-position: 0 0 } 100% { background-position: -400px 0 } }

/* monument-for-joan */
.scn-monument-for-joan { background: linear-gradient(180deg, #8fc5e0 0%, #d0e6f2 40%, #fce68a 70%, #d4af37 100%), radial-gradient(ellipse at 50% 0%, #fffbe0 0%, transparent 50%); }
.scn-monument-for-joan .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #d0e6f2 0%, #fce68a 80%); animation: mon-sky 10s ease-in-out infinite alternate; }
.scn-monument-for-joan .sun { position:absolute; top:10%; left:35%; width:120px; height:120px; background: radial-gradient(circle, #fff7d6 0%, #fce68a 50%, transparent 80%); border-radius:50%; box-shadow: 0 0 80px 40px rgba(252,230,138,.3); animation: mon-sun 8s ease-in-out infinite; }
.scn-monument-for-joan .monument { position:absolute; bottom:30%; left:50%; width:40px; height:250px; transform:translateX(-50%); background: linear-gradient(180deg, #d4af37 0%, #b8860b 40%, #a0760a 100%); clip-path: polygon(10% 0, 90% 0, 100% 100%, 0% 100%); box-shadow: -8px 0 12px rgba(0,0,0,.2); animation: mon-monument 6s ease-in-out infinite; }
.scn-monument-for-joan .urn { position:absolute; bottom:42%; left:50%; width:30px; height:30px; transform:translateX(-50%); background: radial-gradient(circle at 50% 30%, #d4af37 0%, #b8860b 60%, #8b6914 100%); border-radius:50% 50% 10% 10%; box-shadow: 0 0 20px 10px rgba(212,175,55,.5); animation: mon-urn 4s ease-in-out infinite alternate; }
.scn-monument-for-joan .steps { position:absolute; bottom:20%; left:43%; right:43%; height:40px; background: repeating-linear-gradient(0deg, #c0a060 0px, #c0a060 10px, #a8873e 10px, #a8873e 20px, #8b6f2a 20px, #8b6f2a 30px, #70581e 30px, #70581e 40px); border-radius:2px; animation: mon-steps 12s ease-in-out infinite; }
.scn-monument-for-joan .banners { position:absolute; top:8%; left:10%; right:10%; height:40px; background: repeating-linear-gradient(45deg, #f5c542 0%, #f5c542 15px, #d4af37 15px, #d4af37 30px); clip-path: polygon(0 0, 100% 0, 90% 100%, 10% 100%); animation: mon-banners 20s ease-in-out infinite alternate; }
.scn-monument-for-joan .rays { position:absolute; top:5%; left:30%; right:30%; height:200px; background: repeating-linear-gradient(45deg, transparent 0%, transparent 20%, rgba(255,255,200,.1) 20%, rgba(255,255,200,.1) 30%, transparent 30%, transparent 50%); animation: mon-rays 30s linear infinite; }
@keyframes mon-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.9 } }
@keyframes mon-sun { 0% { transform:scale(0.95); box-shadow: 0 0 50px 25px rgba(252,230,138,.2) } 50% { transform:scale(1.1); box-shadow: 0 0 100px 50px rgba(252,230,138,.5) } 100% { transform:scale(1); box-shadow: 0 0 60px 30px rgba(252,230,138,.3) } }
@keyframes mon-monument { 0% { transform: translateX(-50%) translateY(0) } 50% { transform: translateX(-50%) translateY(-3px) } 100% { transform: translateX(-50%) translateY(0) } }
@keyframes mon-urn { 0% { box-shadow: 0 0 15px 5px rgba(212,175,55,.3); opacity:0.8 } 50% { box-shadow: 0 0 30px 15px rgba(212,175,55,.6); opacity:1 } 100% { box-shadow: 0 0 20px 10px rgba(212,175,55,.4); opacity:0.9 } }
@keyframes mon-steps { 0% { opacity:0.9 } 50% { opacity:1 } 100% { opacity:0.95 } }
@keyframes mon-banners { 0% { transform: rotate(-2deg) } 50% { transform: rotate(2deg) } 100% { transform: rotate(-1deg) } }
@keyframes mon-rays { 0% { transform: rotate(0deg) } 100% { transform: rotate(360deg) } }

/* night-watch */
.scn-night-watch { background: linear-gradient(180deg, #0a1128 0%, #1a1a3e 30%, #2c2c5e 60%, #3b3b6e 100%), radial-gradient(ellipse at 50% 0%, #5b7bba 0%, transparent 60%); }
.scn-night-watch .sky { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #1a1a3e 0%, #2c2c5e 80%); animation: nig-sky 8s ease-in-out infinite alternate; }
.scn-night-watch .moon { position:absolute; top:12%; left:40%; width:60px; height:60px; background: radial-gradient(circle at 40% 35%, #e0e8f0 0%, #a0b0d0 60%, transparent 80%); border-radius:50%; box-shadow: 0 0 40px 20px rgba(160,176,208,.3); animation: nig-moon 10s ease-in-out infinite; }
.scn-night-watch .wall { position:absolute; bottom:30%; left:5%; right:5%; height:100px; background: linear-gradient(180deg, #3a3a5a 0%, #2a2a4a 100%); border-radius:5px; box-shadow: inset 0 0 20px rgba(0,0,0,.5); animation: nig-wall 14s ease-in-out infinite; }
.scn-night-watch .rampart { position:absolute; bottom:40%; left:10%; right:10%; height:20px; background: repeating-linear-gradient(90deg, #3a3a5a 0px, #3a3a5a 30px, #2a2a4a 30px, #2a2a4a 35px, #3a3a5a 35px, #3a3a5a 60px); animation: nig-rampart 6s ease-in-out infinite alternate; }
.scn-night-watch .sentinel { position:absolute; bottom:24%; left:48%; width:18px; height:50px; background: linear-gradient(180deg, #2a2a4a 0%, #1a1a3a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: nig-sentinel 4s ease-in-out infinite; }
.scn-night-watch .torch { position:absolute; bottom:30%; left:45%; width:10px; height:15px; background: radial-gradient(circle at 50% 100%, #ff8c42 0%, #ff6000 50%, transparent 100%); border-radius:50% 50% 0 0; box-shadow: 0 0 20px 8px rgba(255,96,0,.4); animation: nig-torch 1s ease-in-out infinite alternate; }
.scn-night-watch .shadows { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,.4) 100%); animation: nig-shadows 20s ease-in-out infinite; }
@keyframes nig-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.85 } }
@keyframes nig-moon { 0% { transform:scale(0.9); box-shadow: 0 0 20px 10px rgba(160,176,208,.2) } 50% { transform:scale(1.1); box-shadow: 0 0 50px 25px rgba(160,176,208,.5) } 100% { transform:scale(1); box-shadow: 0 0 30px 15px rgba(160,176,208,.3) } }
@keyframes nig-wall { 0% { transform: translateY(0) } 50% { transform: translateY(2px) } 100% { transform: translateY(0) } }
@keyframes nig-rampart { 0% { transform: scaleX(1) } 50% { transform: scaleX(1.02) } 100% { transform: scaleX(1) } }
@keyframes nig-sentinel { 0% { transform: translateX(0) rotate(-2deg) } 25% { transform: translateX(5px) rotate(2deg) } 50% { transform: translateX(10px) rotate(-1deg) } 75% { transform: translateX(5px) rotate(1deg) } 100% { transform: translateX(0) rotate(0deg) } }
@keyframes nig-torch { 0% { opacity:0.8; transform: scaleY(0.9) } 50% { opacity:1; transform: scaleY(1.1) } 100% { opacity:0.85; transform: scaleY(1) } }
@keyframes nig-shadows { 0% { opacity:0.6 } 50% { opacity:0.8 } 100% { opacity:0.7 } }

/* talbot-plans-attack */
.scn-talbot-plans-attack { background: linear-gradient(180deg, #0f1a2e 0%, #1c2a42 40%, #2a3a5a 80%, #3a4a6a 100%), radial-gradient(ellipse at 50% 0%, #4a6a9a 0%, transparent 60%); }
.scn-talbot-plans-attack .sky { position:absolute; inset:0 0 60% 0; background: linear-gradient(180deg, #1c2a42 0%, #2a3a5a 80%); animation: tal-sky 12s ease-in-out infinite alternate; }
.scn-talbot-plans-attack .moon { position:absolute; top:8%; left:35%; width:70px; height:70px; background: radial-gradient(circle at 40% 35%, #d0d8e8 0%, #8090b0 60%, transparent 80%); border-radius:50%; box-shadow: 0 0 50px 25px rgba(128,144,176,.3); animation: tal-moon 10s ease-in-out infinite; }
.scn-talbot-plans-attack .tent { position:absolute; bottom:35%; left:5%; width:30%; height:80px; background: linear-gradient(135deg, #3a4a5a 0%, #2a3a4a 100%); clip-path: polygon(10% 100%, 50% 0%, 90% 100%); box-shadow: inset 0 0 20px rgba(0,0,0,.4); animation: tal-tent 8s ease-in-out infinite alternate; }
.scn-talbot-plans-attack .ladder { position:absolute; bottom:20%; left:60%; width:15px; height:100px; background: repeating-linear-gradient(0deg, #5a4a3a 0px, #5a4a3a 5px, #4a3a2a 5px, #4a3a2a 10px); transform: rotate(10deg); transform-origin: bottom left; animation: tal-ladder 6s ease-in-out infinite; }
.scn-talbot-plans-attack .figures { position:absolute; bottom:20%; left:10%; width:20px; height:40px; background: linear-gradient(180deg, #2a3a4a 0%, #1a2a3a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: tal-figures 4s ease-in-out infinite; }
.scn-talbot-plans-attack .map { position:absolute; bottom:40%; left:30%; width:80px; height:50px; background: linear-gradient(135deg, #c8a85a 0%, #a8883a 100%); border-radius: 5px; box-shadow: 0 0 10px 2px rgba(200,168,90,.3); animation: tal-map 3s ease-in-out infinite alternate; }
.scn-talbot-plans-attack .torch { position:absolute; bottom:22%; left:28%; width:8px; height:12px; background: radial-gradient(circle at 50% 100%, #ff8c42 0%, #ff6000 50%, transparent 100%); border-radius:50% 50% 0 0; box-shadow: 0 0 15px 5px rgba(255,96,0,.4); animation: tal-torch 1s ease-in-out infinite alternate; }
@keyframes tal-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.85 } }
@keyframes tal-moon { 0% { transform:scale(0.9); box-shadow: 0 0 30px 15px rgba(128,144,176,.2) } 50% { transform:scale(1.1); box-shadow: 0 0 60px 30px rgba(128,144,176,.5) } 100% { transform:scale(1); box-shadow: 0 0 40px 20px rgba(128,144,176,.3) } }
@keyframes tal-tent { 0% { transform: rotate(-1deg) scaleX(1) } 50% { transform: rotate(1deg) scaleX(1.02) } 100% { transform: rotate(-0.5deg) scaleX(1) } }
@keyframes tal-ladder { 0% { transform: rotate(8deg) translateY(0) } 50% { transform: rotate(12deg) translateY(2px) } 100% { transform: rotate(10deg) translateY(0) } }
@keyframes tal-figures { 0% { transform: translateX(0) rotate(-2deg) } 25% { transform: translateX(8px) rotate(2deg) } 50% { transform: translateX(16px) rotate(-1deg) } 75% { transform: translateX(8px) rotate(1deg) } 100% { transform: translateX(0) rotate(0deg) } }
@keyframes tal-map { 0% { opacity:0.9; transform: scale(0.95) rotate(-2deg) } 50% { opacity:1; transform: scale(1.05) rotate(2deg) } 100% { opacity:0.95; transform: scale(1) rotate(0deg) } }
@keyframes tal-torch { 0% { opacity:0.7; transform: scaleY(0.8) } 50% { opacity:1; transform: scaleY(1.2) } 100% { opacity:0.8; transform: scaleY(1) } }

.scn-messenger-to-talbot {
  background: linear-gradient(180deg, #f5cba0 0%, #e8b87a 30%, #c8945a 60%, #8a6240 100%),
              radial-gradient(ellipse at 50% 0%, #ffd7a0 0%, transparent 60%);
}
.scn-messenger-to-talbot .sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #ffe8c0 0%, #ffb880 50%, #c07a48 100%);
  animation: mt1-sky 12s ease-in-out infinite alternate;
}
.scn-messenger-to-talbot .sun {
  position: absolute; top: 12%; left: 20%; width: 50px; height: 50px;
  background: radial-gradient(circle, #ffe680 0%, #ffa040 70%);
  border-radius: 50%; box-shadow: 0 0 60px 20px rgba(255,160,64,0.5);
  animation: mt1-sun 18s ease-in-out infinite alternate;
}
.scn-messenger-to-talbot .distant-castle {
  position: absolute; bottom: 40%; left: 40%; width: 120px; height: 80px;
  background: linear-gradient(180deg, #6a4a3a 0%, #3a2a1a 100%);
  border-radius: 20% 20% 10% 10% / 40% 40% 20% 20%;
  clip-path: polygon(0% 100%, 10% 50%, 20% 70%, 30% 30%, 40% 60%, 50% 20%, 60% 50%, 70% 30%, 80% 60%, 90% 40%, 100% 100%);
  box-shadow: 0 4px 8px rgba(0,0,0,0.3);
  animation: mt1-castle 20s ease-in-out infinite alternate;
}
.scn-messenger-to-talbot .trees-back {
  position: absolute; bottom: 42%; left: 0; right: 0; height: 15%;
  background: linear-gradient(180deg, #4a6a3a 0%, #2a4a1a 100%);
  border-radius: 60% 40% 0 0 / 100% 80% 0 0;
  filter: blur(2px);
  animation: mt1-trees 25s ease-in-out infinite alternate;
}
.scn-messenger-to-talbot .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #7a5a3a 0%, #4a2a1a 100%);
  border-radius: 30% 70% 0 0 / 50% 50% 0 0;
}
.scn-messenger-to-talbot .figure-messenger {
  position: absolute; bottom: 18%; left: 30%; width: 24px; height: 48px;
  background: linear-gradient(180deg, #2a3a4a 0%, #1a2a3a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: mt1-fig-left 8s ease-in-out infinite;
}
.scn-messenger-to-talbot .figure-talbot {
  position: absolute; bottom: 20%; left: 55%; width: 28px; height: 52px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1a0a 100%);
  border-radius: 45% 45% 35% 35% / 55% 55% 45% 45%;
  transform-origin: bottom center;
  animation: mt1-fig-right 8s ease-in-out infinite 0.5s;
}
.scn-messenger-to-talbot .mist {
  position: absolute; inset: 0; background: radial-gradient(ellipse at 70% 60%, rgba(255,200,150,0.15) 0%, transparent 70%);
  animation: mt1-mist 15s ease-in-out infinite alternate;
}
@keyframes mt1-sky { 0% { opacity:0.9; background-position: 0% 0%; } 50% { opacity:1; background-position: 10% 0%; } 100% { opacity:0.85; background-position: 0% 0%; } }
@keyframes mt1-sun { 0% { transform: scale(1) translateY(0); box-shadow: 0 0 50px 15px rgba(255,160,64,0.4); } 50% { transform: scale(1.05) translateY(-2px); box-shadow: 0 0 70px 25px rgba(255,160,64,0.6); } 100% { transform: scale(0.98) translateY(2px); box-shadow: 0 0 55px 18px rgba(255,160,64,0.45); } }
@keyframes mt1-castle { 0% { transform: scaleY(1); opacity:0.7; } 50% { transform: scaleY(1.02); opacity:0.8; } 100% { transform: scaleY(0.98); opacity:0.7; } }
@keyframes mt1-trees { 0% { transform: translateX(0) scaleY(1); } 33% { transform: translateX(2px) scaleY(1.01); } 66% { transform: translateX(-1px) scaleY(0.99); } 100% { transform: translateX(0) scaleY(1); } }
@keyframes mt1-fig-left { 0% { transform: translateX(0) translateY(0) rotate(-2deg); } 25% { transform: translateX(5px) translateY(-1px) rotate(1deg); } 50% { transform: translateX(10px) translateY(0) rotate(-2deg); } 75% { transform: translateX(15px) translateY(-1px) rotate(1deg); } 100% { transform: translateX(20px) translateY(0) rotate(0deg); } }
@keyframes mt1-fig-right { 0% { transform: translateX(0) translateY(0) rotate(1deg); } 25% { transform: translateX(-4px) translateY(-1px) rotate(-1deg); } 50% { transform: translateX(-8px) translateY(0) rotate(1deg); } 75% { transform: translateX(-12px) translateY(-1px) rotate(-1deg); } 100% { transform: translateX(-16px) translateY(0) rotate(0deg); } }
@keyframes mt1-mist { 0% { opacity:0.3; transform: scale(1); } 50% { opacity:0.6; transform: scale(1.05); } 100% { opacity:0.2; transform: scale(0.95); } }

.scn-talbot-accepts-invitation {
  background: linear-gradient(180deg, #d4b880 0%, #b8945a 30%, #8a6a3a 60%, #5a3a1a 100%),
              radial-gradient(ellipse at 50% 0%, #ffe8b0 0%, transparent 50%);
}
.scn-talbot-accepts-invitation .wall-back {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #c8a86a 0%, #a07848 100%);
  border-radius: 10% 10% 0 0 / 20% 20% 0 0;
  animation: ta2-wall 20s ease-in-out infinite alternate;
}
.scn-talbot-accepts-invitation .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #5a3a1a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 0 0 / 30% 30% 0 0;
}
.scn-talbot-accepts-invitation .window-left {
  position: absolute; top: 10%; left: 15%; width: 60px; height: 100px;
  background: linear-gradient(180deg, #ffe0a0 0%, #d4a060 100%);
  border: 6px solid #6a4a2a; border-radius: 8px;
  box-shadow: inset 0 0 30px rgba(255,200,100,0.5);
  animation: ta2-window 15s ease-in-out infinite alternate;
}
.scn-talbot-accepts-invitation .window-right {
  position: absolute; top: 10%; right: 15%; width: 60px; height: 100px;
  background: linear-gradient(180deg, #ffe0a0 0%, #d4a060 100%);
  border: 6px solid #6a4a2a; border-radius: 8px;
  box-shadow: inset 0 0 30px rgba(255,200,100,0.5);
  animation: ta2-window 15s ease-in-out infinite alternate 2s;
}
.scn-talbot-accepts-invitation .column-left {
  position: absolute; top: 5%; left: 25%; width: 20px; height: 65%;
  background: linear-gradient(180deg, #a08860 0%, #7a603a 100%);
  border-radius: 20% 20% 10% 10% / 40% 40% 20% 20%;
  box-shadow: 4px 0 8px rgba(0,0,0,0.3);
}
.scn-talbot-accepts-invitation .column-right {
  position: absolute; top: 5%; right: 25%; width: 20px; height: 65%;
  background: linear-gradient(180deg, #a08860 0%, #7a603a 100%);
  border-radius: 20% 20% 10% 10% / 40% 40% 20% 20%;
  box-shadow: -4px 0 8px rgba(0,0,0,0.3);
}
.scn-talbot-accepts-invitation .figure-countess {
  position: absolute; bottom: 22%; left: 35%; width: 22px; height: 50px;
  background: linear-gradient(180deg, #c07050 0%, #a04828 100%);
  border-radius: 45% 45% 35% 35% / 55% 55% 45% 45%;
  transform-origin: bottom center;
  animation: ta2-fig-left 10s ease-in-out infinite;
}
.scn-talbot-accepts-invitation .figure-talbot {
  position: absolute; bottom: 20%; right: 35%; width: 26px; height: 54px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 45% 45% 35% 35% / 55% 55% 45% 45%;
  transform-origin: bottom center;
  animation: ta2-fig-right 10s ease-in-out infinite 1s;
}
.scn-talbot-accepts-invitation .sunbeam {
  position: absolute; top: 0; left: 40%; width: 80px; height: 100%;
  background: linear-gradient(135deg, rgba(255,224,160,0.3) 0%, transparent 80%);
  filter: blur(8px);
  animation: ta2-beam 12s ease-in-out infinite alternate;
}
@keyframes ta2-wall { 0% { opacity:0.9; } 50% { opacity:1; } 100% { opacity:0.85; } }
@keyframes ta2-window { 0% { transform: scaleY(0.98); opacity:0.8; } 50% { transform: scaleY(1.02); opacity:1; } 100% { transform: scaleY(0.98); opacity:0.85; } }
@keyframes ta2-fig-left { 0% { transform: translateX(0) rotate(-2deg); } 25% { transform: translateX(3px) rotate(1deg); } 50% { transform: translateX(6px) rotate(-2deg); } 75% { transform: translateX(9px) rotate(1deg); } 100% { transform: translateX(12px) rotate(0deg); } }
@keyframes ta2-fig-right { 0% { transform: translateX(0) rotate(1deg); } 25% { transform: translateX(-3px) rotate(-1deg); } 50% { transform: translateX(-6px) rotate(1deg); } 75% { transform: translateX(-9px) rotate(-1deg); } 100% { transform: translateX(-12px) rotate(0deg); } }
@keyframes ta2-beam { 0% { opacity:0.4; transform: skewX(5deg); } 50% { opacity:0.7; transform: skewX(0deg); } 100% { opacity:0.3; transform: skewX(-5deg); } }

.scn-countess-plot {
  background: linear-gradient(180deg, #1a1a2a 0%, #2a1a1a 40%, #3a2a1a 70%, #1a0a0a 100%),
              radial-gradient(ellipse at 50% 80%, #3a2a1a 0%, transparent 60%);
}
.scn-countess-plot .wall {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%);
  border-radius: 10% 10% 0 0 / 15% 15% 0 0;
  box-shadow: inset 0 0 40px rgba(0,0,0,0.8);
}
.scn-countess-plot .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #1a0a0a 0%, #0a0a0a 100%);
  border-radius: 30% 70% 0 0 / 40% 60% 0 0;
}
.scn-countess-plot .table {
  position: absolute; bottom: 28%; left: 40%; width: 80px; height: 30px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1a0a 100%);
  border-radius: 10% 10% 40% 40% / 20% 20% 30% 30%;
  box-shadow: 0 6px 12px rgba(0,0,0,0.5);
}
.scn-countess-plot .candle {
  position: absolute; bottom: 42%; left: 48%; width: 8px; height: 24px;
  background: linear-gradient(180deg, #c08040 0%, #8a6020 100%);
  border-radius: 20% 20% 10% 10% / 40% 40% 20% 20%;
  transform-origin: bottom center;
  animation: cp3-candle 2s ease-in-out infinite alternate;
}
.scn-countess-plot .candle-glow {
  position: absolute; bottom: 35%; left: 44%; width: 60px; height: 60px;
  background: radial-gradient(circle, #ffd060 0%, rgba(255,208,96,0.3) 50%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 40px 20px rgba(255,208,96,0.4);
  animation: cp3-glow 2.5s ease-in-out infinite alternate;
}
.scn-countess-plot .figure-countess {
  position: absolute; bottom: 18%; left: 30%; width: 24px; height: 48px;
  background: linear-gradient(180deg, #5a3a2a 0%, #3a1a0a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: cp3-fig-left 0.8s ease-in-out infinite alternate;
}
.scn-countess-plot .figure-porter {
  position: absolute; bottom: 20%; right: 30%; width: 26px; height: 52px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 45% 45% 35% 35% / 55% 55% 45% 45%;
  transform-origin: bottom center;
  animation: cp3-fig-right 1.2s ease-in-out infinite alternate;
}
.scn-countess-plot .shadow-pool {
  position: absolute; bottom: 0; left: 20%; right: 20%; height: 30%;
  background: radial-gradient(ellipse at 50% 100%, rgba(0,0,0,0.6) 0%, transparent 80%);
  animation: cp3-shadow 3s ease-in-out infinite alternate;
}
@keyframes cp3-candle { 0% { transform: scaleY(1) rotate(0deg); } 50% { transform: scaleY(0.9) rotate(2deg); } 100% { transform: scaleY(1.1) rotate(-1deg); } }
@keyframes cp3-glow { 0% { opacity:0.7; transform: scale(1); } 50% { opacity:1; transform: scale(1.1); } 100% { opacity:0.8; transform: scale(0.95); } }
@keyframes cp3-fig-left { 0% { transform: translateX(0) rotate(-1deg); } 50% { transform: translateX(2px) rotate(2deg); } 100% { transform: translateX(-1px) rotate(-1deg); } }
@keyframes cp3-fig-right { 0% { transform: translateX(0) rotate(1deg); } 50% { transform: translateX(-2px) rotate(-2deg); } 100% { transform: translateX(1px) rotate(1deg); } }
@keyframes cp3-shadow { 0% { opacity:0.5; transform: scaleX(1); } 50% { opacity:0.8; transform: scaleX(1.05); } 100% { opacity:0.6; transform: scaleX(0.95); } }

.scn-talbot-arrives {
  background: linear-gradient(180deg, #1a1a0a 0%, #2a1a0a 40%, #3a2a1a 70%, #1a0a0a 100%),
              radial-gradient(ellipse at 50% 60%, #4a3020 0%, transparent 70%);
}
.scn-talbot-arrives .wall-bg {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #2a1a0a 0%, #1a0a00 100%);
  border-radius: 15% 15% 0 0 / 20% 20% 0 0;
  box-shadow: inset 0 0 30px rgba(0,0,0,0.7);
}
.scn-talbot-arrives .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #1a0a00 0%, #0a0000 100%);
  border-radius: 40% 60% 0 0 / 30% 40% 0 0;
}
.scn-talbot-arrives .fireplace {
  position: absolute; bottom: 30%; left: 45%; width: 80px; height: 100px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1a0a 100%);
  border-radius: 40% 40% 20% 20% / 30% 30% 10% 10%;
  box-shadow: inset 0 0 20px rgba(0,0,0,0.5);
}
.scn-talbot-arrives .fire-glow {
  position: absolute; bottom: 35%; left: 48%; width: 50px; height: 50px;
  background: radial-gradient(circle, #ff8030 0%, #c05020 50%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 60px 30px rgba(255,128,48,0.5);
  animation: ta4-fire 4s ease-in-out infinite alternate;
}
.scn-talbot-arrives .figure-talbot {
  position: absolute; bottom: 15%; left: 30%; width: 28px; height: 56px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1a0a 100%);
  border-radius: 45% 45% 35% 35% / 55% 55% 45% 45%;
  transform-origin: bottom center;
  animation: ta4-fig-left 12s ease-in-out infinite;
}
.scn-talbot-arrives .figure-countess {
  position: absolute; bottom: 18%; right: 30%; width: 24px; height: 50px;
  background: linear-gradient(180deg, #6a4a2a 0%, #4a2a1a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: ta4-fig-right 12s ease-in-out infinite 1s;
}
.scn-talbot-arrives .chair {
  position: absolute; bottom: 22%; right: 40%; width: 30px; height: 40px;
  background: linear-gradient(180deg, #4a2a1a 0%, #2a1a0a 100%);
  border-radius: 30% 30% 20% 20% / 40% 40% 20% 20%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.4);
  animation: ta4-chair 8s ease-in-out infinite alternate;
}
@keyframes ta4-fire { 0% { transform: scale(1) rotate(0deg); opacity:0.8; } 50% { transform: scale(1.15) rotate(3deg); opacity:1; } 100% { transform: scale(0.9) rotate(-2deg); opacity:0.7; } }
@keyframes ta4-fig-left { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(3px) rotate(-1deg); } 50% { transform: translateX(6px) rotate(0deg); } 75% { transform: translateX(3px) rotate(1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes ta4-fig-right { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(-3px) rotate(1deg); } 50% { transform: translateX(-6px) rotate(0deg); } 75% { transform: translateX(-3px) rotate(-1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes ta4-chair { 0% { transform: translateY(0) rotate(-2deg); } 50% { transform: translateY(-2px) rotate(0deg); } 100% { transform: translateY(1px) rotate(2deg); } }

/* Scene: peace-negotiations (tense, bright interior) */
.scn-peace-negotiations { background: linear-gradient(180deg, #f5e6c8 0%, #d9c2a0 40%, #b89d7a 100%), radial-gradient(ellipse at 50% 30%, #ffe9b0 0%, transparent 60%); }
.scn-peace-negotiations .wall { position:absolute; inset:0 0 40% 0; background: linear-gradient(90deg, #c8b89a 0%, #e0cfa8 50%, #c8b89a 100%); box-shadow: inset 0 -4px 12px rgba(0,0,0,.2); animation: pn-wall 12s ease-in-out infinite alternate; }
.scn-peace-negotiations .floor { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, #8a7055 0%, #5c4a36 100%); border-radius: 50% 50% 0 0 / 20% 20% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,.5); }
.scn-peace-negotiations .table { position:absolute; bottom:30%; left:50%; width:60%; height:8%; transform:translate(-50%,0); background: linear-gradient(90deg, #6b4e3a, #8a6a50, #6b4e3a); border-radius:10px; box-shadow: 0 4px 8px rgba(0,0,0,.4); animation: pn-table 6s ease-in-out infinite; }
.scn-peace-negotiations .figure-left { position:absolute; bottom:28%; left:28%; width:12%; height:24%; background: linear-gradient(180deg, #5e1a1d 0%, #3a0e10 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: pn-figure-l 4s ease-in-out infinite alternate; }
.scn-peace-negotiations .figure-right { position:absolute; bottom:28%; right:28%; width:12%; height:24%; background: linear-gradient(180deg, #702243 0%, #4a142a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: pn-figure-r 4s ease-in-out infinite alternate; }
.scn-peace-negotiations .candle { position:absolute; bottom:38%; left:50%; width:2%; height:8%; transform:translateX(-50%); background: linear-gradient(180deg, #ffe080 0%, #e8a030 100%); border-radius:4px; box-shadow: 0 0 10px #ffcc66; animation: pn-candle 0.8s ease-in-out infinite alternate; }
.scn-peace-negotiations .candle-glow { position:absolute; bottom:36%; left:46%; width:8%; height:12%; background: radial-gradient(circle, rgba(255,200,80,.6) 0%, transparent 70%); filter: blur(8px); animation: pn-glow 2s ease-in-out infinite alternate; }
.scn-peace-negotiations .banner { position:absolute; top:10%; left:70%; width:16%; height:30%; background: linear-gradient(180deg, #c8553d 0%, #8a2e1a 100%); border-radius: 0 0 30% 30%; box-shadow: 0 4px 8px rgba(0,0,0,.3); transform-origin: top center; animation: pn-banner 7s ease-in-out infinite alternate; }
@keyframes pn-wall { 0% { opacity:.8; filter:brightness(.95) } 50% { opacity:1; filter:brightness(1.05) } 100% { opacity:.85; filter:brightness(.9) } }
@keyframes pn-table { 0%,100% { transform:translate(-50%,0) scale(1) } 50% { transform:translate(-50%,-2px) scale(1.01) } }
@keyframes pn-figure-l { 0% { transform:rotate(-2deg) translateX(0) } 50% { transform:rotate(2deg) translateX(2px) } 100% { transform:rotate(-1deg) translateX(-1px) } }
@keyframes pn-figure-r { 0% { transform:rotate(2deg) translateX(0) } 50% { transform:rotate(-2deg) translateX(-2px) } 100% { transform:rotate(1deg) translateX(1px) } }
@keyframes pn-candle { 0% { height:7%; opacity:.8 } 50% { height:9%; opacity:1 } 100% { height:7.5%; opacity:.9 } }
@keyframes pn-glow { 0% { opacity:.5; transform:scale(.9) } 50% { opacity:1; transform:scale(1.1) } 100% { opacity:.6; transform:scale(.95) } }
@keyframes pn-banner { 0% { transform:rotate(-4deg) scaleX(1) } 50% { transform:rotate(2deg) scaleX(1.02) } 100% { transform:rotate(-1deg) scaleX(.98) } }

/* Scene: treaty-proposals (calm, bright interior) */
.scn-treaty-proposals { background: linear-gradient(180deg, #d4c8a0 0%, #b8a882 50%, #9a8a66 100%), radial-gradient(ellipse at 70% 40%, #fff0c0 0%, transparent 50%); }
.scn-treaty-proposals .hall-bg { position:absolute; inset:0 0 30% 0; background: linear-gradient(90deg, #c0b090, #e0d0b0, #c0b090); }
.scn-treaty-proposals .pillar { position:absolute; bottom:30%; width:6%; height:70%; background: linear-gradient(180deg, #a08870, #7a6a56); border-radius:8px; box-shadow: inset -4px 0 8px rgba(0,0,0,.3); }
.scn-treaty-proposals .pillar.left { left:15%; }
.scn-treaty-proposals .pillar.right { right:15%; }
.scn-treaty-proposals .throne { position:absolute; bottom:30%; left:50%; width:20%; height:40%; transform:translateX(-50%); background: linear-gradient(180deg, #b89878, #8a7055); border-radius: 30% 30% 10% 10%; box-shadow: 0 8px 20px rgba(0,0,0,.4); animation: tp-throne 12s ease-in-out infinite alternate; }
.scn-treaty-proposals .king { position:absolute; bottom:40%; left:50%; width:12%; height:30%; transform:translateX(-50%); background: linear-gradient(180deg, #2a2a4e 0%, #1a1a3a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: tp-king 8s ease-in-out infinite; }
.scn-treaty-proposals .scroll { position:absolute; bottom:45%; left:50%; width:8%; height:3%; transform:translateX(-50%); background: linear-gradient(90deg, #f0e0b0, #fff7e0, #f0e0b0); border-radius:2px; box-shadow: 0 2px 4px rgba(0,0,0,.2); animation: tp-scroll 15s ease-in-out infinite; }
.scn-treaty-proposals .window-light { position:absolute; top:5%; left:30%; width:20%; height:50%; background: linear-gradient(180deg, rgba(255,245,200,.8) 0%, transparent 100%); filter: blur(30px); animation: tp-window-light 20s ease-in-out infinite alternate; }
.scn-treaty-proposals .curtain { position:absolute; top:0; left:0; width:100%; height:100%; background: linear-gradient(90deg, rgba(180,100,80,.3) 0%, transparent 20%, transparent 80%, rgba(180,100,80,.3) 100%); pointer-events:none; animation: tp-curtain 25s ease-in-out infinite alternate; }
@keyframes tp-throne { 0% { box-shadow: 0 8px 20px rgba(0,0,0,.4); filter:brightness(1) } 50% { box-shadow: 0 8px 30px rgba(0,0,0,.3), 0 0 40px rgba(180,140,100,.3); filter:brightness(1.05) } 100% { box-shadow: 0 8px 20px rgba(0,0,0,.4); filter:brightness(.95) } }
@keyframes tp-king { 0%,100% { transform:translateX(-50%) translateY(0) rotate(0); } 25% { transform:translateX(-50%) translateY(-1px) rotate(1deg); } 50% { transform:translateX(-50%) translateY(0) rotate(0); } 75% { transform:translateX(-50%) translateY(-1px) rotate(-1deg); } }
@keyframes tp-scroll { 0% { width:8%; } 50% { width:12%; height:4%; } 100% { width:8%; } }
@keyframes tp-window-light { 0% { opacity:.6; transform:translateX(0); } 50% { opacity:1; transform:translateX(10px); } 100% { opacity:.7; transform:translateX(-5px); } }
@keyframes tp-curtain { 0% { transform:scaleX(1); } 50% { transform:scaleX(1.03); } 100% { transform:scaleX(.97); } }

/* Scene: charles-rejects (tense, bright interior) */
.scn-charles-rejects { background: linear-gradient(180deg, #e8d8b8 0%, #c8b090 40%, #a08060 100%), radial-gradient(ellipse at 60% 20%, #ffe8b0 0%, transparent 70%); }
.scn-charles-rejects .wall { position:absolute; inset:0 0 35% 0; background: linear-gradient(90deg, #b8a080, #d0b898, #b8a080); box-shadow: inset 0 -4px 12px rgba(0,0,0,.3); animation: cr-wall 8s ease-in-out infinite alternate; }
.scn-charles-rejects .floor { position:absolute; bottom:0; left:0; right:0; height:35%; background: linear-gradient(180deg, #7a6650 0%, #4a3a2a 100%); border-radius: 30% 70% 0 0 / 30% 40% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,.5); }
.scn-charles-rejects .table { position:absolute; bottom:25%; left:50%; width:60%; height:6%; transform:translate(-50%,0); background: linear-gradient(90deg, #5a4a3a, #7a6a5a, #5a4a3a); border-radius:6px; box-shadow: 0 4px 8px rgba(0,0,0,.5); animation: cr-table 3s ease-in-out infinite; }
.scn-charles-rejects .charles { position:absolute; bottom:28%; left:50%; width:14%; height:30%; transform:translateX(-50%); background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: cr-charles 2s ease-in-out infinite alternate; }
.scn-charles-rejects .courtiers { position:absolute; bottom:28%; left:18%; width:12%; height:22%; background: linear-gradient(180deg, #5e3a2a 0%, #3a2216 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: cr-courtiers 2.5s ease-in-out infinite alternate; }
.scn-charles-rejects .goblet { position:absolute; bottom:31%; left:42%; width:4%; height:6%; background: linear-gradient(180deg, #c8a858, #8a7030); border-radius: 0 0 40% 40%; box-shadow: 0 2px 4px rgba(0,0,0,.4); transform-origin: bottom left; animation: cr-goblet 1.5s ease-in-out infinite; }
.scn-charles-rejects .torch { position:absolute; top:5%; left:80%; width:2%; height:15%; background: linear-gradient(180deg, #6a5a3a, #4a3a22); border-radius:2px; box-shadow: 0 0 12px #e08030; animation: cr-torch 0.6s ease-in-out infinite alternate; }
.scn-charles-rejects .torch-glow { position:absolute; top:2%; left:75%; width:12%; height:20%; background: radial-gradient(circle, rgba(240,120,40,.5) 0%, transparent 70%); filter: blur(10px); animation: cr-torch-glow 1.2s ease-in-out infinite alternate; }
@keyframes cr-wall { 0% { filter:brightness(1); } 50% { filter:brightness(1.1); } 100% { filter:brightness(.9); } }
@keyframes cr-table { 0%,100% { transform:translate(-50%,0) scale(1); } 50% { transform:translate(-50%,1px) scale(1.01); } }
@keyframes cr-charles { 0% { transform:translateX(-50%) rotate(-3deg) translateY(0); } 50% { transform:translateX(-50%) rotate(4deg) translateY(-3px); } 100% { transform:translateX(-50%) rotate(-2deg) translateY(0); } }
@keyframes cr-courtiers { 0% { transform:rotate(0) translateX(0); } 50% { transform:rotate(5deg) translateX(4px); } 100% { transform:rotate(-2deg) translateX(0); } }
@keyframes cr-goblet { 0% { transform:rotate(0) scale(1); } 25% { transform:rotate(10deg) scale(1.05); } 50% { transform:rotate(0) scale(1); } 75% { transform:rotate(-5deg) scale(.95); } 100% { transform:rotate(0) scale(1); } }
@keyframes cr-torch { 0% { height:14%; opacity:.8; } 50% { height:16%; opacity:1; } 100% { height:14.5%; opacity:.9; } }
@keyframes cr-torch-glow { 0% { opacity:.6; transform:scale(.9); } 50% { opacity:1; transform:scale(1.2); } 100% { opacity:.7; transform:scale(1); } }

/* Scene: treaty-accepted (calm, bright interior) */
.scn-treaty-accepted { background: linear-gradient(180deg, #f0e4c0 0%, #d8c8a0 40%, #b8a47e 100%), radial-gradient(ellipse at 50% 50%, #fff8e0 0%, transparent 60%); }
.scn-treaty-accepted .arch { position:absolute; top:0; left:20%; width:60%; height:100%; background: linear-gradient(180deg, #c8b898, #a8a088); border-radius: 50% 50% 0 0 / 40% 40% 0 0; box-shadow: inset 0 0 40px rgba(0,0,0,.15); }
.scn-treaty-accepted .light-beam { position:absolute; top:0; left:40%; width:20%; height:100%; background: linear-gradient(180deg, rgba(255,250,220,.7) 0%, transparent 80%); filter: blur(20px); animation: ta-light-beam 18s ease-in-out infinite alternate; }
.scn-treaty-accepted .altar { position:absolute; bottom:40%; left:42%; width:16%; height:8%; background: linear-gradient(90deg, #a09070, #c0b090, #a09070); border-radius:4px; box-shadow: 0 4px 10px rgba(0,0,0,.3); }
.scn-treaty-accepted .hands { position:absolute; bottom:48%; left:46%; width:8%; height:6%; background: linear-gradient(180deg, #c8a888, #b89878); border-radius: 50% 50% 20% 20% / 60% 60% 20% 20%; transform-origin: bottom center; animation: ta-hands 6s ease-in-out infinite; }
.scn-treaty-accepted .treaty { position:absolute; bottom:43%; left:50%; width:12%; height:3%; transform:translateX(-50%); background: linear-gradient(180deg, #f5e8c0, #fff5e0, #f5e8c0); border-radius:2px; box-shadow: 0 2px 6px rgba(0,0,0,.2); animation: ta-treaty 15s ease-in-out infinite; }
.scn-treaty-accepted .seal { position:absolute; bottom:43%; left:43%; width:3%; height:3%; background: radial-gradient(circle, #c8553d, #8a2e1a); border-radius:50%; box-shadow: 0 0 6px rgba(200,85,61,.5); animation: ta-seal 12s ease-in-out infinite alternate; }
.scn-treaty-accepted .rose { position:absolute; bottom:55%; left:55%; width:4%; height:4%; background: radial-gradient(circle, #b87878, #702243); border-radius:50%; box-shadow: 0 0 20px rgba(184,120,120,.4); transform-origin: center; animation: ta-rose 5s ease-in-out infinite; }
@keyframes ta-light-beam { 0% { opacity:.6; transform:skewX(-2deg); } 50% { opacity:1; transform:skewX(2deg); } 100% { opacity:.7; transform:skewX(0); } }
@keyframes ta-hands { 0%,100% { transform:translateY(0) scale(1); } 25% { transform:translateY(-1px) scale(1.02); } 50% { transform:translateY(0) scale(1); } 75% { transform:translateY(-1px) scale(.98); } }
@keyframes ta-treaty { 0% { transform:translateX(-50%) scaleY(1); } 50% { transform:translateX(-50%) scaleY(1.08); } 100% { transform:translateX(-50%) scaleY(1); } }
@keyframes ta-seal { 0% { opacity:.8; transform:scale(.95); } 50% { opacity:1; transform:scale(1.05); } 100% { opacity:.85; transform:scale(1); } }
@keyframes ta-rose { 0% { transform:rotate(0) scale(1); } 25% { transform:rotate(15deg) scale(1.1); } 50% { transform:rotate(0) scale(1); } 75% { transform:rotate(-15deg) scale(.9); } 100% { transform:rotate(0) scale(1); } }

/* ---- Scene: funeral-henry-v ---- */
.scn-funeral-henry-v {
  background: linear-gradient(180deg, #0d0d1a 0%, #1a1a2e 40%, #0a0a18 100%),
    radial-gradient(ellipse at 50% 100%, #2a1a3a 0%, transparent 60%);
}
.scn-funeral-henry-v .sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #0d0d3a 0%, #1a1a4e 50%, #10102a 100%);
  animation: fn-sky 12s ease-in-out infinite alternate;
}
.scn-funeral-henry-v .bier {
  position: absolute; bottom: 22%; left: 50%; transform: translateX(-50%);
  width: 80px; height: 35px;
  background: linear-gradient(180deg, #4a3a2a, #2a1a0a);
  border-radius: 6px;
  box-shadow: 0 4px 12px rgba(0,0,0,.8);
  animation: fn-bier 14s ease-in-out infinite;
}
.scn-funeral-henry-v .candle {
  position: absolute; bottom: 35%; width: 6px; height: 18px;
  background: linear-gradient(180deg, #c08040, #a06020);
  border-radius: 50% 50% 0 0;
  box-shadow: 0 0 12px 4px rgba(192,128,64,.5);
  animation: fn-candle 3.5s ease-in-out infinite alternate;
}
.scn-funeral-henry-v .candle-l { left: 38%; }
.scn-funeral-henry-v .candle-r { left: 62%; }
.scn-funeral-henry-v .figure {
  position: absolute; bottom: 26%; width: 16px; height: 40px;
  background: linear-gradient(180deg, #1a1a2e, #0a0a1a);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: fn-figure 6s ease-in-out infinite;
}
.scn-funeral-henry-v .figure-l { left: 30%; }
.scn-funeral-henry-v .figure-r { left: 70%; }
.scn-funeral-henry-v .drape {
  position: absolute; top: 0; left: 0; right: 0; height: 30%;
  background: repeating-linear-gradient(90deg, #2a1a3a 0px, #1a0a2a 10px);
  animation: fn-drape 8s ease-in-out infinite alternate;
}
@keyframes fn-sky { 0% { opacity:.7 } 50% { opacity:1 } 100% { opacity:.8 } }
@keyframes fn-bier { 0% { transform: translateX(-50%) translateY(0) } 50% { transform: translateX(-50%) translateY(-2px) } 100% { transform: translateX(-50%) translateY(0) } }
@keyframes fn-candle { 0% { transform: scaleY(1); opacity:.8 } 50% { transform: scaleY(1.1) scaleX(0.9); opacity:1 } 100% { transform: scaleY(1); opacity:.85 } }
@keyframes fn-figure { 0% { transform: translateX(0) rotate(-2deg) } 25% { transform: translateX(4px) rotate(2deg) } 50% { transform: translateX(8px) rotate(-2deg) } 75% { transform: translateX(12px) rotate(2deg) } 100% { transform: translateX(16px) rotate(0) } }
@keyframes fn-drape { 0% { background-position: 0 0 } 100% { background-position: 20px 0 } }

/* ---- Scene: debate-church-prayers ---- */
.scn-debate-church-prayers {
  background: linear-gradient(180deg, #0e0e1a 0%, #18182e 45%, #0a0a18 100%),
    radial-gradient(ellipse at 50% 100%, #1a1a2e 0%, transparent 70%);
}
.scn-debate-church-prayers .bg {
  position: absolute; inset: 0;
  background: linear-gradient(135deg, #1a1a2e 0%, #0d0d1a 50%, #1a1a2e 100%);
  animation: dp-bg 15s ease-in-out infinite alternate;
}
.scn-debate-church-prayers .pulpit {
  position: absolute; bottom: 30%; left: 50%; transform: translateX(-50%);
  width: 24px; height: 50px;
  background: linear-gradient(180deg, #3a2a1a, #2a1a0a);
  border-radius: 4px 4px 0 0;
  box-shadow: 0 2px 8px rgba(0,0,0,.6);
  animation: dp-pulpit 12s ease-in-out infinite alternate;
}
.scn-debate-church-prayers .figure-preacher {
  position: absolute; bottom: 30%; left: 40%; width: 18px; height: 44px;
  background: linear-gradient(180deg, #1a1a2e, #0a0a1a);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: dp-figure 4s ease-in-out infinite;
}
.scn-debate-church-prayers .figure-bishop {
  position: absolute; bottom: 30%; left: 60%; width: 18px; height: 44px;
  background: linear-gradient(180deg, #2a1a2e, #1a0a1a);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: dp-figure 4.5s ease-in-out infinite;
}
.scn-debate-church-prayers .cross {
  position: absolute; bottom: 45%; left: 50%; transform: translateX(-50%);
  width: 10px; height: 40px;
  background: linear-gradient(180deg, #4a3a2a, #3a2a1a);
  border-radius: 2px;
  box-shadow: 0 0 6px rgba(74,58,42,.4);
  animation: dp-cross 8s ease-in-out infinite alternate;
}
.scn-debate-church-prayers .candle {
  position: absolute; bottom: 35%; left: 30%; width: 6px; height: 16px;
  background: linear-gradient(180deg, #c08040, #a06020);
  border-radius: 50% 50% 0 0;
  box-shadow: 0 0 10px 3px rgba(192,128,64,.5);
  animation: dp-candle 2.8s ease-in-out infinite alternate;
}
@keyframes dp-bg { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.7 } }
@keyframes dp-pulpit { 0% { transform: translateX(-50%) scaleY(1) } 50% { transform: translateX(-50%) scaleY(1.03) } 100% { transform: translateX(-50%) scaleY(1) } }
@keyframes dp-figure { 0% { transform: translateX(-2px) rotate(-1deg) } 33% { transform: translateX(2px) rotate(1deg) } 66% { transform: translateX(-1px) rotate(0) } 100% { transform: translateX(2px) rotate(1deg) } }
@keyframes dp-cross { 0% { box-shadow: 0 0 6px rgba(74,58,42,.4); transform: translateX(-50%) scaleY(1) } 50% { box-shadow: 0 0 12px rgba(74,58,42,.7); transform: translateX(-50%) scaleY(1.05) } 100% { box-shadow: 0 0 6px rgba(74,58,42,.4); transform: translateX(-50%) scaleY(1) } }
@keyframes dp-candle { 0% { transform: scaleY(1); opacity:.75 } 50% { transform: scaleY(1.15) scaleX(0.9); opacity:1 } 100% { transform: scaleY(1); opacity:.8 } }

/* ---- Scene: appeal-for-peace ---- */
.scn-appeal-for-peace {
  background: linear-gradient(180deg, #1a1a2e 0%, #2a2a3e 40%, #0f0f1a 100%),
    radial-gradient(ellipse at 50% 100%, #3a2a1a 0%, transparent 60%);
}
.scn-appeal-for-peace .altar {
  position: absolute; bottom: 28%; left: 50%; transform: translateX(-50%);
  width: 70px; height: 30px;
  background: linear-gradient(180deg, #4a3a2a, #2a1a0a);
  border-radius: 6px;
  box-shadow: 0 4px 10px rgba(0,0,0,.6);
  animation: ap-altar 10s ease-in-out infinite alternate;
}
.scn-appeal-for-peace .figure-kneeling {
  position: absolute; bottom: 28%; left: 42%; width: 20px; height: 36px;
  background: linear-gradient(180deg, #1a1a2e, #0a0a1a);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ap-kneel 4.5s ease-in-out infinite;
}
.scn-appeal-for-peace .sword {
  position: absolute; bottom: 36%; left: 45%; width: 4px; height: 28px;
  background: linear-gradient(180deg, #6a5a4a, #4a3a2a);
  border-radius: 2px 2px 0 0;
  box-shadow: 0 0 4px rgba(74,58,42,.5);
  transform: rotate(30deg);
  animation: ap-sword 6s ease-in-out infinite;
}
.scn-appeal-for-peace .shield {
  position: absolute; bottom: 36%; left: 55%; width: 18px; height: 22px;
  background: linear-gradient(180deg, #4a3a2a, #2a1a0a);
  border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%;
  transform: rotate(-20deg);
  animation: ap-shield 6s ease-in-out infinite;
}
.scn-appeal-for-peace .candle {
  position: absolute; bottom: 35%; width: 6px; height: 18px;
  background: linear-gradient(180deg, #d0a060, #b08040);
  border-radius: 50% 50% 0 0;
  box-shadow: 0 0 14px 5px rgba(208,160,96,.6);
  animation: ap-candle 4.2s ease-in-out infinite alternate;
}
.scn-appeal-for-peace .candle-l { left: 32%; }
.scn-appeal-for-peace .candle-r { left: 68%; }
@keyframes ap-altar { 0% { transform: translateX(-50%) scale(1) } 50% { transform: translateX(-50%) scale(1.02) translateY(-1px) } 100% { transform: translateX(-50%) scale(1) } }
@keyframes ap-kneel { 0% { transform: translateY(0) rotate(0) } 25% { transform: translateY(-1px) rotate(1deg) } 50% { transform: translateY(0) rotate(0) } 75% { transform: translateY(-1px) rotate(-1deg) } 100% { transform: translateY(0) rotate(0) } }
@keyframes ap-sword { 0% { transform: rotate(30deg) } 50% { transform: rotate(35deg) } 100% { transform: rotate(30deg) } }
@keyframes ap-shield { 0% { transform: rotate(-20deg) } 50% { transform: rotate(-25deg) } 100% { transform: rotate(-20deg) } }
@keyframes ap-candle { 0% { transform: scaleY(1); opacity:.75 } 50% { transform: scaleY(1.12) scaleX(0.9); opacity:1 } 100% { transform: scaleY(1); opacity:.8 } }

/* ---- Scene: grief-and-anger ---- */
.scn-grief-and-anger {
  background: linear-gradient(180deg, #0a0a1a 0%, #1a1025 40%, #0a0515 100%),
    radial-gradient(ellipse at 50% 100%, #2a1a2a 0%, transparent 60%);
}
.scn-grief-and-anger .bg {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, #0a0a1a 0%, #1a1025 50%, #0a0515 100%);
  animation: gr-bg 12s ease-in-out infinite alternate;
}
.scn-grief-and-anger .bier {
  position: absolute; bottom: 20%; left: 50%; transform: translateX(-50%);
  width: 70px; height: 35px;
  background: linear-gradient(180deg, #3a2a2a, #1a0a0a);
  border-radius: 6px;
  box-shadow: 0 4px 12px rgba(0,0,0,.8);
  animation: gr-bier 15s ease-in-out infinite;
}
.scn-grief-and-anger .corpse {
  position: absolute; bottom: 24%; left: 50%; transform: translateX(-50%);
  width: 50px; height: 20px;
  background: linear-gradient(180deg, #2a1a1a, #1a0a0a);
  border-radius: 4px;
  box-shadow: inset 0 2px 4px rgba(90,50,50,.2);
  animation: gr-corpse 10s ease-in-out infinite alternate;
}
.scn-grief-and-anger .figure-grieving {
  position: absolute; bottom: 26%; left: 30%; width: 20px; height: 44px;
  background: linear-gradient(180deg, #1a1025, #0a0520);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: gr-grief 4.5s ease-in-out infinite;
}
.scn-grief-and-anger .ghost {
  position: absolute; bottom: 40%; left: 50%; transform: translateX(-50%);
  width: 28px; height: 40px;
  background: radial-gradient(ellipse at 50% 80%, rgba(200,180,160,0.15) 0%, transparent 70%);
  border-radius: 50% 50% 40% 40% / 50% 50% 40% 40%;
  filter: blur(3px);
  animation: gr-ghost 9s ease-in-out infinite;
}
.scn-grief-and-anger .shadow {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,.6) 100%);
  animation: gr-shadow 11s ease-in-out infinite alternate;
}
.scn-grief-and-anger .candle {
  position: absolute; bottom: 35%; left: 60%; width: 6px; height: 16px;
  background: linear-gradient(180deg, #b07040, #905020);
  border-radius: 50% 50% 0 0;
  box-shadow: 0 0 10px 3px rgba(176,112,64,.5);
  animation: gr-candle 3.2s ease-in-out infinite alternate;
}
@keyframes gr-bg { 0% { opacity:.7 } 50% { opacity:.9 } 100% { opacity:.7 } }
@keyframes gr-bier { 0% { transform: translateX(-50%) translateY(0) } 50% { transform: translateX(-50%) translateY(-2px) scaleY(1.02) } 100% { transform: translateX(-50%) translateY(0) } }
@keyframes gr-corpse { 0% { transform: translateX(-50%) scaleY(1) } 50% { transform: translateX(-50%) scaleY(1.03) translateY(-1px) } 100% { transform: translateX(-50%) scaleY(1) } }
@keyframes gr-grief { 0% { transform: translateX(0) rotate(-3deg) translateY(0) } 25% { transform: translateX(4px) rotate(3deg) translateY(-2px) } 50% { transform: translateX(8px) rotate(-3deg) translateY(0) } 75% { transform: translateX(12px) rotate(3deg) translateY(-2px) } 100% { transform: translateX(16px) rotate(0) translateY(0) } }
@keyframes gr-ghost { 0% { opacity:.3; transform: translateX(-50%) scale(0.9) translateY(0) } 50% { opacity:.6; transform: translateX(-50%) scale(1.1) translateY(-10px) } 100% { opacity:.3; transform: translateX(-50%) scale(0.9) translateY(0) } }
@keyframes gr-shadow { 0% { opacity:.5 } 50% { opacity:1 } 100% { opacity:.6 } }
@keyframes gr-candle { 0% { transform: scaleY(1); opacity:.8 } 50% { transform: scaleY(1.15) scaleX(0.9); opacity:1 } 100% { transform: scaleY(1); opacity:.85 } }

.scn-joan-defends {
  background: linear-gradient(180deg, #0f1628 0%, #1b2440 40%, #263a5c 100%),
              radial-gradient(ellipse at 30% 40%, #3b5998 0%, transparent 60%);
}
.scn-joan-defends .tent-back {
  position: absolute; inset: 0; background: linear-gradient(135deg, #1a1f2e 0%, #0c101c 100%);
  border-radius: 0 0 40% 40% / 0 0 20% 20%; box-shadow: inset 0 0 60px rgba(0,0,0,0.7);
  animation: jd-tent 12s ease-in-out infinite alternate;
}
.scn-joan-defends .tent-pole {
  position: absolute; bottom: 0; left: 50%; width: 4px; height: 70%; background: #2a2a3e;
  transform: translateX(-50%); border-radius: 50% 50% 0 0; box-shadow: 0 0 8px #4a4a6e;
  animation: jd-pole 18s ease-in-out infinite;
}
.scn-joan-defends .joan {
  position: absolute; bottom: 18%; left: 30%; width: 22px; height: 60px;
  background: linear-gradient(180deg, #2a3050 0%, #101528 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center;
  animation: jd-joan 6s ease-in-out infinite alternate;
}
.scn-joan-defends .charles {
  position: absolute; bottom: 20%; left: 58%; width: 20px; height: 56px;
  background: linear-gradient(180deg, #3a3e50 0%, #1a1e30 100%);
  border-radius: 50% 50% 30% 30% / 55% 55% 35% 35%; transform-origin: bottom center;
  animation: jd-charles 7s ease-in-out infinite alternate;
}
.scn-joan-defends .torch {
  position: absolute; bottom: 45%; left: 43%; width: 8px; height: 14px;
  background: radial-gradient(circle at 50% 0%, #c8a050 0%, #8a6520 50%, transparent 100%);
  border-radius: 50% 50% 20% 20%; box-shadow: 0 0 30px 10px #a07830, 0 0 60px 20px rgba(160,120,48,0.3);
  animation: jd-torch 2s ease-in-out infinite alternate;
}
.scn-joan-defends .shadow-line {
  position: absolute; bottom: 28%; left: 15%; right: 15%; height: 4px;
  background: linear-gradient(90deg, transparent 0%, #203045 30%, #304058 50%, #203045 70%, transparent 100%);
  filter: blur(4px); animation: jd-shadow 8s ease-in-out infinite alternate;
}
.scn-joan-defends .moonlight-spot {
  position: absolute; top: 12%; left: 40%; width: 120px; height: 100px;
  background: radial-gradient(ellipse, rgba(180,200,240,0.1) 0%, transparent 80%);
  filter: blur(20px); animation: jd-moon 15s ease-in-out infinite alternate;
}
.scn-joan-defends .dust-mote {
  position: absolute; top: 50%; left: 20%; width: 3px; height: 3px;
  background: rgba(200,210,240,0.4); border-radius: 50%; filter: blur(1px);
  animation: jd-dust 9s linear infinite;
}
@keyframes jd-tent { 0% { opacity: 0.9; transform: scaleY(1); } 50% { opacity: 0.95; transform: scaleY(0.98); } 100% { opacity: 0.85; transform: scaleY(1.02); } }
@keyframes jd-pole { 0%,100% { transform: translateX(-50%) rotate(0deg); } 50% { transform: translateX(-50%) rotate(1deg); } }
@keyframes jd-joan { 0% { transform: translateX(0) rotate(-1deg); } 33% { transform: translateX(2px) rotate(2deg); } 66% { transform: translateX(-1px) rotate(-2deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes jd-charles { 0% { transform: translateX(0) rotate(1deg); } 50% { transform: translateX(-2px) rotate(-1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes jd-torch { 0% { opacity: 0.8; box-shadow: 0 0 20px 8px #a07830, 0 0 50px 15px rgba(160,120,48,0.2); } 50% { opacity: 1; box-shadow: 0 0 40px 12px #c09040, 0 0 80px 25px rgba(192,144,64,0.4); } 100% { opacity: 0.85; box-shadow: 0 0 25px 10px #a07830, 0 0 60px 20px rgba(160,120,48,0.3); } }
@keyframes jd-shadow { 0% { opacity: 0.3; transform: scaleX(1); } 50% { opacity: 0.5; transform: scaleX(1.1); } 100% { opacity: 0.2; transform: scaleX(0.9); } }
@keyframes jd-moon { 0% { opacity: 0.4; transform: translate(0,0); } 50% { opacity: 0.6; transform: translate(5px,-5px); } 100% { opacity: 0.3; transform: translate(-3px,3px); } }
@keyframes jd-dust { 0% { transform: translateY(0) translateX(0) scale(1); opacity: 0.4; } 50% { transform: translateY(-20px) translateX(10px) scale(0.5); opacity: 0.1; } 100% { transform: translateY(-40px) translateX(20px) scale(0); opacity: 0; } }

.scn-each-blames-other {
  background: linear-gradient(180deg, #101a2e 0%, #1c2844 40%, #2c3c5c 100%),
              radial-gradient(ellipse at 50% 100%, #3a4a6e 0%, transparent 70%);
}
.scn-each-blames-other .sky {
  position: absolute; inset: 0 0 35% 0; background: linear-gradient(180deg, #18243e 0%, #243458 100%);
  animation: eb-sky 20s ease-in-out infinite alternate;
}
.scn-each-blames-other .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #2a3244 0%, #0f1424 100%);
  border-radius: 40% 60% 0 0 / 60% 40% 0 0; box-shadow: inset 0 10px 30px rgba(0,0,0,0.6);
  animation: eb-ground 15s ease-in-out infinite alternate;
}
.scn-each-blames-other .figure-left {
  position: absolute; bottom: 28%; left: 20%; width: 18px; height: 50px;
  background: linear-gradient(180deg, #2a3050 0%, #0e1228 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center;
  animation: eb-left 5s ease-in-out infinite alternate;
}
.scn-each-blames-other .figure-right {
  position: absolute; bottom: 28%; right: 20%; width: 18px; height: 50px;
  background: linear-gradient(180deg, #2a3050 0%, #0e1228 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center;
  animation: eb-right 6s ease-in-out infinite alternate;
}
.scn-each-blames-other .table {
  position: absolute; bottom: 26%; left: 38%; right: 38%; height: 8px;
  background: linear-gradient(90deg, #1a1e2e 0%, #2c3048 50%, #1a1e2e 100%);
  border-radius: 10% 10% 20% 20%; box-shadow: 0 4px 8px rgba(0,0,0,0.5);
  animation: eb-table 12s ease-in-out infinite;
}
.scn-each-blames-other .map {
  position: absolute; bottom: 30%; left: 42%; width: 32px; height: 22px;
  background: linear-gradient(135deg, #4a5030 0%, #2c3020 100%);
  border-radius: 4px; transform: rotate(-2deg) scale(0.95);
  box-shadow: 0 2px 6px rgba(0,0,0,0.6); animation: eb-map 8s ease-in-out infinite alternate;
}
.scn-each-blames-other .candle {
  position: absolute; bottom: 34%; left: 48%; width: 4px; height: 10px;
  background: linear-gradient(180deg, #c8b060 0%, #8a7a30 100%);
  border-radius: 50% 50% 0 0; box-shadow: 0 0 16px 6px #b8a050, 0 0 30px 10px rgba(184,160,80,0.3);
  animation: eb-candle 3s ease-in-out infinite alternate;
}
.scn-each-blames-other .shadow-crawl {
  position: absolute; bottom: 0; left: 10%; right: 10%; height: 20%;
  background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,0.4) 100%);
  filter: blur(8px); animation: eb-shadow 20s linear infinite;
}
@keyframes eb-sky { 0% { opacity: 0.7; } 50% { opacity: 1; } 100% { opacity: 0.6; } }
@keyframes eb-ground { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes eb-left { 0% { transform: translateX(0) rotate(1deg); } 33% { transform: translateX(-3px) rotate(-2deg); } 66% { transform: translateX(2px) rotate(2deg); } 100% { transform: translateX(0) rotate(-1deg); } }
@keyframes eb-right { 0% { transform: translateX(0) rotate(-1deg); } 33% { transform: translateX(3px) rotate(2deg); } 66% { transform: translateX(-2px) rotate(-2deg); } 100% { transform: translateX(0) rotate(1deg); } }
@keyframes eb-table { 0%,100% { transform: translateX(0) scaleY(1); } 50% { transform: translateX(-1px) scaleY(0.95); } }
@keyframes eb-map { 0% { transform: rotate(-2deg) scale(0.95); } 50% { transform: rotate(2deg) scale(1); } 100% { transform: rotate(-1deg) scale(0.9); } }
@keyframes eb-candle { 0% { opacity: 0.7; box-shadow: 0 0 12px 4px #b8a050, 0 0 24px 8px rgba(184,160,80,0.2); } 50% { opacity: 1; box-shadow: 0 0 20px 8px #d0b860, 0 0 40px 15px rgba(208,184,96,0.4); } 100% { opacity: 0.8; box-shadow: 0 0 14px 5px #b8a050, 0 0 28px 10px rgba(184,160,80,0.25); } }
@keyframes eb-shadow { 0% { opacity: 0.3; transform: translateX(0); } 50% { opacity: 0.6; transform: translateX(5px); } 100% { opacity: 0.3; transform: translateX(0); } }

.scn-dawn-after-battle {
  background: linear-gradient(180deg, #7a8a9e 0%, #bcc8d8 30%, #e0e6f0 60%, #f2e6d0 100%),
              radial-gradient(ellipse at 80% 10%, #f0d8b0 0%, transparent 60%);
}
.scn-dawn-after-battle .sky {
  position: absolute; inset: 0 0 30% 0; background: linear-gradient(180deg, #b4c4d8 0%, #d8dce8 100%);
  animation: db-sky 25s ease-in-out infinite alternate;
}
.scn-dawn-after-battle .sun {
  position: absolute; top: 15%; right: 18%; width: 60px; height: 40px;
  background: radial-gradient(circle, #fce8b0 0%, #f0c880 50%, transparent 100%);
  border-radius: 50%; box-shadow: 0 0 40px 20px #f0c880, 0 0 80px 40px rgba(240,200,128,0.3);
  animation: db-sun 30s ease-in-out infinite alternate;
}
.scn-dawn-after-battle .horizon-fog {
  position: absolute; bottom: 30%; left: 0; right: 0; height: 15%;
  background: linear-gradient(180deg, rgba(220,210,200,0.6) 0%, transparent 100%);
  filter: blur(12px); animation: db-fog 40s linear infinite alternate;
}
.scn-dawn-after-battle .hill {
  position: absolute; bottom: 24%; left: 10%; right: 10%; height: 18%;
  background: linear-gradient(180deg, #6a7a6a 0%, #3a4a3a 100%);
  border-radius: 60% 40% 0 0 / 80% 70% 0 0; box-shadow: inset 0 5px 20px rgba(0,0,0,0.3);
  animation: db-hill 20s ease-in-out infinite alternate;
}
.scn-dawn-after-battle .fallen-body {
  position: absolute; bottom: 18%; left: 38%; width: 24px; height: 14px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 30% 30% 20% 20% / 40% 40% 20% 20%; transform: rotate(15deg);
  box-shadow: 0 2px 6px rgba(0,0,0,0.5); animation: db-body 8s ease-in-out infinite;
}
.scn-dawn-after-battle .banner {
  position: absolute; bottom: 26%; left: 55%; width: 30px; height: 40px;
  background: linear-gradient(180deg, #8a6a3a 0%, #5a4020 100%);
  border-radius: 0 40% 40% 0 / 0 60% 60% 0; transform-origin: left bottom;
  box-shadow: 0 4px 8px rgba(0,0,0,0.4); animation: db-banner 6s ease-in-out infinite alternate;
}
.scn-dawn-after-battle .spear {
  position: absolute; bottom: 20%; left: 52%; width: 3px; height: 50px;
  background: linear-gradient(180deg, #7a7a6a 0%, #4a4a3a 100%);
  border-radius: 0 0 50% 50%; transform: rotate(-5deg); transform-origin: bottom center;
  box-shadow: 0 0 4px rgba(0,0,0,0.4); animation: db-spear 12s ease-in-out infinite;
}
@keyframes db-sky { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.7; } }
@keyframes db-sun { 0% { transform: translate(0,0) scale(0.9); opacity: 0.8; } 50% { transform: translate(5px,-5px) scale(1.1); opacity: 1; } 100% { transform: translate(0,0) scale(0.95); opacity: 0.9; } }
@keyframes db-fog { 0% { opacity: 0.4; transform: translateX(0); } 50% { opacity: 0.7; transform: translateX(10px); } 100% { opacity: 0.3; transform: translateX(-10px); } }
@keyframes db-hill { 0% { transform: translateY(0) scaleX(1); } 50% { transform: translateY(-2px) scaleX(1.02); } 100% { transform: translateY(0) scaleX(0.98); } }
@keyframes db-body { 0%,100% { transform: rotate(15deg) translateX(0); } 50% { transform: rotate(13deg) translateX(-2px); } }
@keyframes db-banner { 0% { transform: rotate(0deg); } 50% { transform: rotate(5deg); } 100% { transform: rotate(-3deg); } }
@keyframes db-spear { 0%,100% { transform: rotate(-5deg); } 50% { transform: rotate(-2deg); } }

.scn-missing-joan-charles {
  background: linear-gradient(180deg, #9aaca8 0%, #c2ccbe 30%, #d8d4c0 60%, #e2d8b8 100%),
              radial-gradient(ellipse at 70% 20%, #f0d8a0 0%, transparent 70%);
}
.scn-missing-joan-charles .sky-dawn {
  position: absolute; inset: 0 0 25% 0; background: linear-gradient(180deg, #c4ccc0 0%, #d8d4c8 100%);
  animation: mj-sky 20s ease-in-out infinite alternate;
}
.scn-missing-joan-charles .sun-low {
  position: absolute; top: 18%; left: 12%; width: 50px; height: 30px;
  background: radial-gradient(circle, #fce8b0 0%, #e8c880 50%, transparent 100%);
  border-radius: 50%; box-shadow: 0 0 30px 15px #e8c880, 0 0 60px 30px rgba(232,200,128,0.3);
  animation: mj-sun 25s ease-in-out infinite alternate;
}
.scn-missing-joan-charles .ground-waste {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(180deg, #8a9280 0%, #5a5e4a 100%);
  border-radius: 60% 40% 0 0 / 50% 60% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,0.3);
  animation: mj-ground 15s ease-in-out infinite alternate;
}
.scn-missing-joan-charles .talbot-silhouette {
  position: absolute; bottom: 16%; left: 30%; width: 24px; height: 60px;
  background: linear-gradient(180deg, #2a2e2a 0%, #0e120e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center;
  box-shadow: 0 0 6px rgba(0,0,0,0.5); animation: mj-talbot 5s ease-in-out infinite alternate;
}
.scn-missing-joan-charles .horse-back {
  position: absolute; bottom: 18%; left: 60%; width: 50px; height: 30px;
  background: linear-gradient(180deg, #3a3e30 0%, #1a1e14 100%);
  border-radius: 40% 60% 30% 30% / 50% 70% 20% 20%; transform: scaleX(-1);
  box-shadow: 0 4px 8px rgba(0,0,0,0.4); animation: mj-horse 8s ease-in-out infinite;
}
.scn-missing-joan-charles .distant-tents {
  position: absolute; bottom: 22%; left: 45%; width: 40px; height: 30px;
  background: linear-gradient(180deg, #6a6a56 0%, #3a3a2a 100%);
  border-radius: 30% 30% 10% 10% / 40% 40% 10% 10%; box-shadow: 0 0 8px rgba(0,0,0,0.3);
  animation: mj-tents 12s ease-in-out infinite alternate;
}
.scn-missing-joan-charles .dust-cloud {
  position: absolute; bottom: 12%; left: 20%; right: 20%; height: 15%;
  background: radial-gradient(ellipse, rgba(200,190,160,0.2) 0%, transparent 70%);
  filter: blur(10px); animation: mj-dust 30s linear infinite;
}
@keyframes mj-sky { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.7; } }
@keyframes mj-sun { 0% { transform: translate(0,0) scale(0.9); opacity: 0.7; } 50% { transform: translate(-3px,3px) scale(1.1); opacity: 1; } 100% { transform: translate(0,0) scale(0.95); opacity: 0.8; } }
@keyframes mj-ground { 0% { transform: translateY(0); } 50% { transform: translateY(-3px); } 100% { transform: translateY(0); } }
@keyframes mj-talbot { 0% { transform: translateX(0) rotate(2deg); } 33% { transform: translateX(-3px) rotate(-1deg); } 66% { transform: translateX(2px) rotate(3deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes mj-horse { 0%,100% { transform: scaleX(-1) translateX(0) rotate(0deg); } 50% { transform: scaleX(-1) translateX(2px) rotate(1deg); } }
@keyframes mj-tents { 0% { transform: scaleY(1); } 50% { transform: scaleY(1.05); } 100% { transform: scaleY(0.95); } }
@keyframes mj-dust { 0% { opacity: 0.2; transform: translateX(0); } 50% { opacity: 0.4; transform: translateX(10px); } 100% { opacity: 0.1; transform: translateX(-10px); } }

/* Scene: burgundy-questions-joan */
.scn-burgundy-questions-joan {
  background: linear-gradient(180deg, #0b0b1a 0%, #1a1a3a 30%, #2a2a5a 70%, #0a0a14 100%);
}
.scn-burgundy-questions-joan .moon-sky {
  position: absolute; inset: 0 0 40% 0;
  background: radial-gradient(ellipse at 50% 100%, #3a3a6a 0%, transparent 70%),
              linear-gradient(180deg, #1a1a3a 0%, #0f0f2b 100%);
  animation: bqj-sky 12s ease-in-out infinite alternate;
}
.scn-burgundy-questions-joan .moon {
  position: absolute; top: 10%; left: 65%; width: 70px; height: 70px;
  background: radial-gradient(circle, #d0d0e0 0%, #8080a0 60%, transparent 100%);
  border-radius: 50%; box-shadow: 0 0 40px 20px rgba(160,160,200,0.4), 0 0 80px 40px rgba(160,160,200,0.2);
  animation: bqj-moon 20s ease-in-out infinite alternate;
}
.scn-burgundy-questions-joan .cloud-bqj-1 {
  position: absolute; top: 18%; right: 10%; width: 90px; height: 20px;
  background: linear-gradient(180deg, rgba(200,200,220,0.6) 0%, rgba(200,200,220,0.1) 100%);
  border-radius: 50%; filter: blur(8px);
  animation: bqj-drift 40s linear infinite;
}
.scn-burgundy-questions-joan .cloud-bqj-2 {
  position: absolute; top: 25%; left: 5%; width: 70px; height: 16px;
  background: linear-gradient(180deg, rgba(200,200,220,0.5) 0%, rgba(200,200,220,0.05) 100%);
  border-radius: 50%; filter: blur(6px);
  animation: bqj-drift 50s linear infinite reverse;
}
.scn-burgundy-questions-joan .castle-wall {
  position: absolute; bottom: 20%; left: 20%; width: 60%; height: 50%;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 50%, #0f0f1a 100%);
  border-radius: 10% 10% 0 0 / 20% 20% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.6);
  animation: bqj-wall 8s ease-in-out infinite alternate;
}
.scn-burgundy-questions-joan .sentry-figure {
  position: absolute; bottom: 25%; left: 35%; width: 22px; height: 50px;
  background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bqj-sentry 3s ease-in-out infinite;
}
.scn-burgundy-questions-joan .spear {
  position: absolute; bottom: 28%; left: 38%; width: 2px; height: 60px;
  background: linear-gradient(180deg, #707080 0%, #404050 100%);
  transform: rotate(20deg);
  transform-origin: bottom center;
  animation: bqj-spear 3s ease-in-out infinite;
}
.scn-burgundy-questions-joan .joan-shadow {
  position: absolute; bottom: 22%; right: 25%; width: 18px; height: 40px;
  background: linear-gradient(180deg, #2a2a3a 0%, #0f0f1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  opacity: 0.8;
  animation: bqj-joan 6s ease-in-out infinite alternate;
}
.scn-burgundy-questions-joan .glow-bqj {
  position: absolute; bottom: 22%; right: 25%; width: 30px; height: 30px;
  background: radial-gradient(circle, rgba(180,180,200,0.3) 0%, transparent 100%);
  border-radius: 50%;
  animation: bqj-glow 4s ease-in-out infinite alternate;
}

@keyframes bqj-sky { 0% { opacity: 0.7 } 50% { opacity: 1 } 100% { opacity: 0.8 } }
@keyframes bqj-moon { 0% { transform: translateY(0) scale(1) } 50% { transform: translateY(-5px) scale(1.02) } 100% { transform: translateY(0) scale(1) } }
@keyframes bqj-drift { 0% { transform: translateX(-40px) } 100% { transform: translateX(120vw) } }
@keyframes bqj-wall { 0% { transform: translateY(0) } 50% { transform: translateY(-3px) } 100% { transform: translateY(0) } }
@keyframes bqj-sentry { 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 bqj-spear { 0% { transform: rotate(18deg) } 25% { transform: rotate(22deg) } 50% { transform: rotate(18deg) } 75% { transform: rotate(20deg) } 100% { transform: rotate(18deg) } }
@keyframes bqj-joan { 0% { opacity: 0.6; transform: translateX(0) } 50% { opacity: 0.9; transform: translateX(-3px) } 100% { opacity: 0.6; transform: translateX(0) } }
@keyframes bqj-glow { 0% { opacity: 0.3; transform: scale(0.8) } 50% { opacity: 0.6; transform: scale(1.2) } 100% { opacity: 0.3; transform: scale(0.8) } }

/* Scene: scaling-the-walls */
.scn-scaling-the-walls {
  background: linear-gradient(180deg, #0a0a1a 0%, #151530 40%, #20204a 70%, #0d0d1a 100%);
}
.scn-scaling-the-walls .sky-st {
  position: absolute; inset: 0 0 35% 0;
  background: radial-gradient(ellipse at 50% 100%, #252550 0%, transparent 70%),
              linear-gradient(180deg, #0f0f2a 0%, #1a1a3a 100%);
  animation: st-sky 10s ease-in-out infinite alternate;
}
.scn-scaling-the-walls .moon-st {
  position: absolute; top: 8%; left: 75%; width: 60px; height: 60px;
  background: radial-gradient(circle, #c0c0d0 0%, #707090 60%, transparent 100%);
  border-radius: 50%; box-shadow: 0 0 30px 15px rgba(150,150,180,0.5);
  animation: st-moon 15s ease-in-out infinite alternate;
}
.scn-scaling-the-walls .wall-st {
  position: absolute; bottom: 15%; left: 10%; width: 80%; height: 60%;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 50%, #0e0e1a 100%);
  border-radius: 5% 5% 0 0 / 10% 10% 0 0;
  box-shadow: inset 0 10px 25px rgba(0,0,0,0.7);
  animation: st-wall 12s ease-in-out infinite alternate;
}
.scn-scaling-the-walls .ladder {
  position: absolute; bottom: 15%; left: 40%; width: 5px; height: 70%;
  background: linear-gradient(180deg, #505060 0%, #303040 100%);
  transform: rotate(10deg);
  transform-origin: bottom center;
  animation: st-ladder 4s ease-in-out infinite;
}
.scn-scaling-the-walls .talbot-climb {
  position: absolute; bottom: 30%; left: 41%; width: 20px; height: 40px;
  background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: st-climb 3s ease-in-out infinite;
}
.scn-scaling-the-walls .soldier-below {
  position: absolute; bottom: 10%; left: 30%; width: 18px; height: 35px;
  background: linear-gradient(180deg, #2a2a3a 0%, #0f0f1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: st-below 4s ease-in-out infinite alternate;
}
.scn-scaling-the-walls .dust-st {
  position: absolute; bottom: 12%; left: 35%; width: 40px; height: 10px;
  background: radial-gradient(ellipse, rgba(80,80,100,0.4) 0%, transparent 100%);
  filter: blur(4px);
  animation: st-dust 2s ease-in-out infinite;
}
.scn-scaling-the-walls .cloud-st-1 {
  position: absolute; top: 15%; left: 10%; width: 80px; height: 18px;
  background: linear-gradient(180deg, rgba(180,180,210,0.5) 0%, rgba(180,180,210,0.05) 100%);
  border-radius: 50%; filter: blur(7px);
  animation: st-cloud 30s linear infinite;
}
.scn-scaling-the-walls .cloud-st-2 {
  position: absolute; top: 22%; right: 15%; width: 60px; height: 14px;
  background: linear-gradient(180deg, rgba(180,180,210,0.4) 0%, rgba(180,180,210,0.03) 100%);
  border-radius: 50%; filter: blur(5px);
  animation: st-cloud 40s linear infinite reverse;
}

@keyframes st-sky { 0% { opacity: 0.7 } 50% { opacity: 1 } 100% { opacity: 0.8 } }
@keyframes st-moon { 0% { transform: translateY(0) scale(1) } 50% { transform: translateY(-4px) scale(1.03) } 100% { transform: translateY(0) scale(1) } }
@keyframes st-wall { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes st-ladder { 0% { transform: rotate(8deg) } 25% { transform: rotate(12deg) } 50% { transform: rotate(8deg) } 75% { transform: rotate(10deg) } 100% { transform: rotate(8deg) } }
@keyframes st-climb { 0% { transform: translateY(0) rotate(-1deg) } 25% { transform: translateY(-3px) rotate(0deg) } 50% { transform: translateY(0) rotate(1deg) } 75% { transform: translateY(-2px) rotate(0deg) } 100% { transform: translateY(0) rotate(-1deg) } }
@keyframes st-below { 0% { transform: translateY(0) scale(1) } 50% { transform: translateY(-2px) scale(1.02) } 100% { transform: translateY(0) scale(1) } }
@keyframes st-dust { 0% { opacity: 0.3; transform: scale(1) } 50% { opacity: 0.7; transform: scale(1.2) translateY(-5px) } 100% { opacity: 0.3; transform: scale(1) } }
@keyframes st-cloud { 0% { transform: translateX(-30px) } 100% { transform: translateX(120vw) } }

/* Scene: french-awakened */
.scn-french-awakened {
  background: linear-gradient(180deg, #0a0a1a 0%, #1a1a35 40%, #2a2a50 70%, #0f0f1a 100%);
}
.scn-french-awakened .sky-fa {
  position: absolute; inset: 0 0 30% 0;
  background: radial-gradient(ellipse at 50% 100%, #303060 0%, transparent 60%),
              linear-gradient(180deg, #121230 0%, #1a1a3a 100%);
  animation: fa-sky 8s ease-in-out infinite alternate;
}
.scn-french-awakened .moon-fa {
  position: absolute; top: 12%; left: 20%; width: 50px; height: 50px;
  background: radial-gradient(circle, #b0b0c0 0%, #606080 60%, transparent 100%);
  border-radius: 50%; box-shadow: 0 0 25px 10px rgba(120,120,150,0.4);
  animation: fa-moon 12s ease-in-out infinite alternate;
}
.scn-french-awakened .wall-fa {
  position: absolute; bottom: 10%; left: 0; width: 100%; height: 50%;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 60%, #0d0d1a 100%);
  border-radius: 20% 20% 0 0 / 30% 30% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.6);
  animation: fa-wall 10s ease-in-out infinite alternate;
}
.scn-french-awakened .french-leap-1 {
  position: absolute; bottom: 20%; left: 25%; width: 20px; height: 40px;
  background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: fa-leap1 2.5s ease-in-out infinite;
}
.scn-french-awakened .french-leap-2 {
  position: absolute; bottom: 18%; left: 45%; width: 18px; height: 38px;
  background: linear-gradient(180deg, #353545 0%, #151525 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: fa-leap2 3s ease-in-out infinite;
}
.scn-french-awakened .french-leap-3 {
  position: absolute; bottom: 22%; left: 65%; width: 19px; height: 36px;
  background: linear-gradient(180deg, #303040 0%, #101020 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: fa-leap3 2.8s ease-in-out infinite;
}
.scn-french-awakened .torch-fa {
  position: absolute; bottom: 25%; left: 35%; width: 8px; height: 12px;
  background: radial-gradient(circle, #ffa060 0%, #cc7030 70%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 20px 8px rgba(204,112,48,0.6);
  animation: fa-torch 1.5s ease-in-out infinite alternate;
}
.scn-french-awakened .shield-fa {
  position: absolute; bottom: 20%; left: 55%; width: 14px; height: 20px;
  background: linear-gradient(180deg, #505060 0%, #303040 100%);
  border-radius: 30% 30% 20% 20% / 40% 40% 30% 30%;
  transform: rotate(-15deg);
  animation: fa-shield 3s ease-in-out infinite;
}
.scn-french-awakened .cloud-fa {
  position: absolute; top: 20%; right: 5%; width: 70px; height: 16px;
  background: linear-gradient(180deg, rgba(160,160,190,0.5) 0%, rgba(160,160,190,0.05) 100%);
  border-radius: 50%; filter: blur(6px);
  animation: fa-cloud 35s linear infinite;
}

@keyframes fa-sky { 0% { opacity: 0.7 } 50% { opacity: 1 } 100% { opacity: 0.8 } }
@keyframes fa-moon { 0% { transform: translateY(0) scale(1) } 50% { transform: translateY(-3px) scale(1.02) } 100% { transform: translateY(0) scale(1) } }
@keyframes fa-wall { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes fa-leap1 { 0% { transform: translateY(0) rotate(-5deg) } 25% { transform: translateY(-8px) rotate(0deg) } 50% { transform: translateY(0) rotate(5deg) } 75% { transform: translateY(-6px) rotate(0deg) } 100% { transform: translateY(0) rotate(-5deg) } }
@keyframes fa-leap2 { 0% { transform: translateY(0) rotate(4deg) } 25% { transform: translateY(-10px) rotate(0deg) } 50% { transform: translateY(0) rotate(-4deg) } 75% { transform: translateY(-8px) rotate(0deg) } 100% { transform: translateY(0) rotate(4deg) } }
@keyframes fa-leap3 { 0% { transform: translateY(0) rotate(-3deg) } 25% { transform: translateY(-7px) rotate(0deg) } 50% { transform: translateY(0) rotate(3deg) } 75% { transform: translateY(-5px) rotate(0deg) } 100% { transform: translateY(0) rotate(-3deg) } }
@keyframes fa-torch { 0% { transform: scale(1); opacity: 0.8 } 50% { transform: scale(1.2); opacity: 1 } 100% { transform: scale(0.9); opacity: 0.7 } }
@keyframes fa-shield { 0% { transform: rotate(-15deg) } 50% { transform: rotate(-10deg) translateY(-2px) } 100% { transform: rotate(-15deg) } }
@keyframes fa-cloud { 0% { transform: translateX(0) } 100% { transform: translateX(-120vw) } }

/* Scene: fear-of-talbot */
.scn-fear-of-talbot {
  background: linear-gradient(180deg, #050510 0%, #0f0f20 40%, #1a1a30 70%, #050510 100%);
}
.scn-fear-of-talbot .sky-fot {
  position: absolute; inset: 0 0 40% 0;
  background: radial-gradient(ellipse at 50% 100%, #1a1a30 0%, transparent 70%),
              linear-gradient(180deg, #0a0a1a 0%, #101025 100%);
  animation: fot-sky 15s ease-in-out infinite alternate;
}
.scn-fear-of-talbot .moon-fot {
  position: absolute; top: 5%; left: 70%; width: 55px; height: 55px;
  background: radial-gradient(circle, #a0a0b0 0%, #505070 60%, transparent 100%);
  border-radius: 50%; box-shadow: 0 0 20px 10px rgba(100,100,130,0.3);
  animation: fot-moon 18s ease-in-out infinite alternate;
}
.scn-fear-of-talbot .talbot-monster {
  position: absolute; bottom: 15%; left: 30%; width: 60px; height: 90px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 50%, #000010 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  box-shadow: 0 10px 30px rgba(0,0,0,0.8);
  animation: fot-talbot 4s ease-in-out infinite;
}
.scn-fear-of-talbot .charles-cower {
  position: absolute; bottom: 12%; left: 55%; width: 22px; height: 45px;
  background: linear-gradient(180deg, #2a2a3a 0%, #0f0f1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: fot-charles 3s ease-in-out infinite alternate;
}
.scn-fear-of-talbot .ground-fot {
  position: absolute; bottom: 0; left: 0; width: 100%; height: 15%;
  background: linear-gradient(180deg, #101020 0%, #050510 100%);
  border-radius: 0 0 0 0;
}
.scn-fear-of-talbot .shadow-fot {
  position: absolute; bottom: 10%; left: 25%; width: 80px; height: 20px;
  background: radial-gradient(ellipse, rgba(0,0,0,0.5) 0%, transparent 100%);
  filter: blur(6px);
  animation: fot-shadow 4s ease-in-out infinite;
}
.scn-fear-of-talbot .cloud-fot-1 {
  position: absolute; top: 18%; left: 15%; width: 75px; height: 18px;
  background: linear-gradient(180deg, rgba(100,100,130,0.4) 0%, rgba(100,100,130,0.05) 100%);
  border-radius: 50%; filter: blur(8px);
  animation: fot-drift 45s linear infinite;
}
.scn-fear-of-talbot .cloud-fot-2 {
  position: absolute; top: 28%; right: 10%; width: 55px; height: 14px;
  background: linear-gradient(180deg, rgba(100,100,130,0.3) 0%, rgba(100,100,130,0.03) 100%);
  border-radius: 50%; filter: blur(5px);
  animation: fot-drift 55s linear infinite reverse;
}
.scn-fear-of-talbot .glow-fot {
  position: absolute; bottom: 20%; left: 30%; width: 80px; height: 80px;
  background: radial-gradient(circle, rgba(80,80,120,0.15) 0%, transparent 100%);
  border-radius: 50%;
  animation: fot-glow 6s ease-in-out infinite alternate;
}

@keyframes fot-sky { 0% { opacity: 0.6 } 50% { opacity: 1 } 100% { opacity: 0.7 } }
@keyframes fot-moon { 0% { transform: translateY(0) scale(1) } 50% { transform: translateY(-4px) scale(1.02) } 100% { transform: translateY(0) scale(1) } }
@keyframes fot-talbot { 0% { transform: translateY(0) rotate(-2deg) scale(1) } 25% { transform: translateY(-4px) rotate(2deg) scale(1.02) } 50% { transform: translateY(0) rotate(0deg) scale(1) } 75% { transform: translateY(-3px) rotate(-1deg) scale(1.01) } 100% { transform: translateY(0) rotate(-2deg) scale(1) } }
@keyframes fot-charles { 0% { transform: translateX(0) translateY(0) rotate(-3deg) scale(1) } 50% { transform: translateX(-5px) translateY(-2px) rotate(3deg) scale(0.95) } 100% { transform: translateX(0) translateY(0) rotate(-3deg) scale(1) } }
@keyframes fot-shadow { 0% { opacity: 0.5; transform: scale(1) } 50% { opacity: 0.8; transform: scale(1.1) } 100% { opacity: 0.5; transform: scale(1) } }
@keyframes fot-drift { 0% { transform: translateX(-20px) } 100% { transform: translateX(120vw) } }
@keyframes fot-glow { 0% { opacity: 0.3; transform: scale(0.8) } 50% { opacity: 0.6; transform: scale(1.3) } 100% { opacity: 0.3; transform: scale(0.8) } }

/* ---------- Scene: henry-shocked ---------- */
.scn-henry-shocked {
  background: 
    linear-gradient(135deg, #3a2e28 0%, #5c4a3a 40%, #7a6048 100%),
    radial-gradient(ellipse at 60% 30%, #8a6a50 0%, transparent 60%);
}
.scn-henry-shocked .bg-wall {
  position: absolute; inset: 0 0 15% 0;
  background: linear-gradient(90deg, #4a3a2e 0%, #6a5a4a 50%, #4a3a2e 100%);
  border-bottom: 2px solid #2a1a0e;
  animation: hs-wall 12s ease-in-out infinite alternate;
}
@keyframes hs-wall {
  0% { opacity: 0.85; }
  50% { opacity: 1; box-shadow: inset 0 -10px 30px rgba(0,0,0,0.3); }
  100% { opacity: 0.9; }
}
.scn-henry-shocked .king-shadow {
  position: absolute; bottom: 20%; left: 50%; transform: translateX(-50%);
  width: 100px; height: 140px;
  background: radial-gradient(ellipse at 50% 100%, rgba(0,0,0,0.4) 0%, transparent 70%);
  border-radius: 50% 50% 40% 40%;
  animation: hs-shadow 4s ease-in-out infinite;
}
@keyframes hs-shadow {
  0% { transform: translateX(-50%) scaleX(1); opacity: 0.5; }
  25% { transform: translateX(-50%) scaleX(1.2); opacity: 0.7; }
  50% { transform: translateX(-50%) scaleX(0.9); opacity: 0.4; }
  75% { transform: translateX(-50%) scaleX(1.1); opacity: 0.6; }
  100% { transform: translateX(-50%) scaleX(1); opacity: 0.5; }
}
.scn-henry-shocked .king-figure {
  position: absolute; bottom: 20%; left: 50%; transform: translateX(-50%);
  width: 80px; height: 130px;
  background: linear-gradient(180deg, #2a1a0e 0%, #1a0e06 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  clip-path: polygon(20% 0%, 80% 0%, 85% 20%, 70% 30%, 70% 60%, 90% 70%, 80% 100%, 20% 100%, 10% 70%, 30% 60%, 30% 30%, 15% 20%);
  animation: hs-figure 0.8s ease-in-out infinite alternate;
}
@keyframes hs-figure {
  0% { transform: translateX(-50%) rotate(-2deg) scaleX(1); }
  50% { transform: translateX(-50%) rotate(3deg) scaleX(1.05); }
  100% { transform: translateX(-50%) rotate(-1deg) scaleX(0.95); }
}
.scn-henry-shocked .crown {
  position: absolute; bottom: 65%; left: 50%; transform: translateX(-50%);
  width: 40px; height: 20px;
  background: linear-gradient(135deg, #c8a060 0%, #f0d080 40%, #c8a060 100%);
  border-radius: 20% 20% 10% 10% / 40% 40% 20% 20%;
  box-shadow: 0 4px 10px rgba(0,0,0,0.5);
  animation: hs-crown 3s ease-in-out infinite;
}
@keyframes hs-crown {
  0% { transform: translateX(-50%) rotate(-5deg) translateY(0); }
  33% { transform: translateX(-50%) rotate(2deg) translateY(-2px); }
  66% { transform: translateX(-50%) rotate(-3deg) translateY(1px); }
  100% { transform: translateX(-50%) rotate(0deg) translateY(0); }
}
.scn-henry-shocked .letter {
  position: absolute; bottom: 45%; left: 42%;
  width: 30px; height: 20px;
  background: #e8dcc8;
  border: 1px solid #8a7a68;
  border-radius: 2px;
  box-shadow: 2px 2px 8px rgba(0,0,0,0.4);
  animation: hs-letter 6s ease-in-out infinite;
}
@keyframes hs-letter {
  0% { transform: translate(0,0) rotate(0deg); }
  30% { transform: translate(-5px, 3px) rotate(-8deg); }
  60% { transform: translate(3px, -2px) rotate(5deg); }
  100% { transform: translate(0,0) rotate(0deg); }
}
.scn-henry-shocked .lantern-light {
  position: absolute; top: 10%; right: 15%;
  width: 50px; height: 50px;
  background: radial-gradient(circle, #ffd080 0%, #c89550 40%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 40px 20px rgba(200,149,80,0.5);
  animation: hs-light 2s ease-in-out infinite alternate;
}
@keyframes hs-light {
  0% { opacity: 0.7; transform: scale(0.8); }
  50% { opacity: 1; transform: scale(1.1); }
  100% { opacity: 0.85; transform: scale(0.9); }
}
.scn-henry-shocked .floor-cast {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #3a2a1e 0%, #2a1a0e 100%);
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.6);
  animation: hs-floor 15s linear infinite;
}
@keyframes hs-floor {
  0% { background-position: 0% 0%; }
  50% { background-position: 5% 2%; }
  100% { background-position: 0% 0%; }
}

/* ---------- Scene: servants-quarrel ---------- */
.scn-servants-quarrel {
  background:
    linear-gradient(90deg, #4a362a 0%, #6a5240 30%, #5a4232 70%, #4a362a 100%),
    radial-gradient(ellipse at 50% 20%, #8a7258 0%, transparent 60%);
}
.scn-servants-quarrel .bg-arches {
  position: absolute; inset: 0 0 20% 0;
  background:
    linear-gradient(180deg, #2a1e12 0%, #5a4232 30%, #7a6248 60%, #5a4232 100%);
  clip-path: polygon(0% 0%, 100% 0%, 90% 20%, 80% 0%, 70% 20%, 60% 0%, 50% 20%, 40% 0%, 30% 20%, 20% 0%, 10% 20%, 0% 0%);
  animation: sq-arches 20s ease-in-out infinite alternate;
}
@keyframes sq-arches {
  0% { background-position: 0% 0%; }
  50% { background-position: 10% 5%; }
  100% { background-position: -5% -2%; }
}
.scn-servants-quarrel .figure-left {
  position: absolute; bottom: 20%; left: 30%;
  width: 70px; height: 130px;
  background: linear-gradient(180deg, #1a0e06 0%, #2a1a0e 100%);
  border-radius: 30% 40% 30% 30% / 50% 60% 30% 40%;
  transform-origin: bottom center;
  animation: sq-fig-left 2s ease-in-out infinite alternate;
}
@keyframes sq-fig-left {
  0% { transform: translateX(0) rotate(-3deg) scaleY(1); }
  50% { transform: translateX(-8px) rotate(2deg) scaleY(1.02); }
  100% { transform: translateX(0) rotate(-1deg) scaleY(0.98); }
}
.scn-servants-quarrel .figure-right {
  position: absolute; bottom: 20%; right: 30%;
  width: 70px; height: 130px;
  background: linear-gradient(180deg, #1a0e06 0%, #2a1a0e 100%);
  border-radius: 40% 30% 30% 40% / 60% 50% 40% 30%;
  transform-origin: bottom center;
  animation: sq-fig-right 2.5s ease-in-out infinite alternate;
}
@keyframes sq-fig-right {
  0% { transform: translateX(0) rotate(3deg) scaleY(1); }
  50% { transform: translateX(8px) rotate(-2deg) scaleY(1.02); }
  100% { transform: translateX(0) rotate(1deg) scaleY(0.98); }
}
.scn-servants-quarrel .badge-shield {
  position: absolute; bottom: 45%; left: 50%; transform: translateX(-50%);
  width: 40px; height: 50px;
  background: linear-gradient(135deg, #8a6248 0%, #b08860 40%, #6a4a30 100%);
  border-radius: 20% 20% 10% 10% / 30% 30% 20% 20%;
  clip-path: polygon(20% 0%, 80% 0%, 100% 30%, 80% 100%, 20% 100%, 0% 30%);
  box-shadow: 0 4px 12px rgba(0,0,0,0.5);
  animation: sq-badge 4s ease-in-out infinite;
}
@keyframes sq-badge {
  0% { transform: translateX(-50%) scaleX(1) rotate(0deg); }
  25% { transform: translateX(-50%) scaleX(1.1) rotate(5deg); }
  50% { transform: translateX(-50%) scaleX(0.95) rotate(-3deg); }
  75% { transform: translateX(-50%) scaleX(1.05) rotate(2deg); }
  100% { transform: translateX(-50%) scaleX(1) rotate(0deg); }
}
.scn-servants-quarrel .floor-shadow {
  position: absolute; bottom: 0; left: 10%; right: 10%; height: 20%;
  background: linear-gradient(180deg, #2a1a0e 0%, transparent 100%);
  border-radius: 50% 50% 0 0 / 100% 100% 0 0;
  animation: sq-shadow 5s ease-in-out infinite alternate;
}
@keyframes sq-shadow {
  0% { opacity: 0.6; transform: scaleY(1); }
  50% { opacity: 0.8; transform: scaleY(0.9); }
  100% { opacity: 0.5; transform: scaleY(1.05); }
}
.scn-servants-quarrel .court-light {
  position: absolute; top: 5%; left: 50%; transform: translateX(-50%);
  width: 120px; height: 120px;
  background: radial-gradient(ellipse, #ffd090 0%, #e8b060 30%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 60px 30px rgba(232,176,96,0.4);
  animation: sq-light 3s ease-in-out infinite alternate;
}
@keyframes sq-light {
  0% { opacity: 0.7; transform: translateX(-50%) scale(0.8); }
  50% { opacity: 1; transform: translateX(-50%) scale(1.15); }
  100% { opacity: 0.8; transform: translateX(-50%) scale(0.9); }
}

/* ---------- Scene: basset-counters ---------- */
.scn-basset-counters {
  background:
    linear-gradient(180deg, #3a2e22 0%, #5a4a3a 50%, #7a6852 100%),
    radial-gradient(ellipse at 40% 60%, #8a7260 0%, transparent 70%);
}
.scn-basset-counters .bg-panels {
  position: absolute; inset: 0 0 15% 0;
  background: repeating-linear-gradient(90deg, #4a3a2e 0px, #4a3a2e 30px, #5a4a3a 30px, #5a4a3a 60px);
  opacity: 0.3;
  animation: bc-panels 25s linear infinite;
}
@keyframes bc-panels {
  0% { background-position: 0% 0%; }
  100% { background-position: 100% 0%; }
}
.scn-basset-counters .basset-silhouette {
  position: absolute; bottom: 20%; left: 35%;
  width: 80px; height: 140px;
  background: linear-gradient(180deg, #1a0e06 0%, #2a1a0e 100%);
  border-radius: 30% 40% 30% 30% / 50% 60% 30% 40%;
  transform-origin: bottom center;
  animation: bc-basset 3s ease-in-out infinite alternate;
}
@keyframes bc-basset {
  0% { transform: translateX(0) rotate(-1deg) scaleY(1); }
  30% { transform: translateX(5px) rotate(2deg) scaleY(1.02); }
  60% { transform: translateX(-3px) rotate(-1deg) scaleY(0.98); }
  100% { transform: translateX(0) rotate(0deg) scaleY(1); }
}
.scn-basset-counters .vernon-partial {
  position: absolute; bottom: 20%; right: 35%;
  width: 70px; height: 120px;
  background: linear-gradient(180deg, #1a0e06 0%, #2a1a0e 100%);
  border-radius: 40% 30% 30% 40% / 60% 50% 30% 40%;
  clip-path: inset(0 0 20% 0 round 50% 30% 0 0);
  transform-origin: bottom center;
  animation: bc-vernon 2.5s ease-in-out infinite alternate;
}
@keyframes bc-vernon {
  0% { transform: translateX(0) rotate(1deg) scaleY(1); }
  50% { transform: translateX(-8px) rotate(-2deg) scaleY(1.03); }
  100% { transform: translateX(0) rotate(0deg) scaleY(0.97); }
}
.scn-basset-counters .flower-pale {
  position: absolute; bottom: 50%; left: 38%;
  width: 20px; height: 25px;
  background: radial-gradient(circle at 50% 30%, #f0e8d0 0%, #d0c8b0 50%, #a09880 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 0 0 15px 5px rgba(200,180,140,0.5);
  animation: bc-flower 4s ease-in-out infinite;
}
@keyframes bc-flower {
  0% { transform: rotate(0deg) scale(1); }
  25% { transform: rotate(10deg) scale(1.05); }
  50% { transform: rotate(-5deg) scale(0.95); }
  75% { transform: rotate(8deg) scale(1.02); }
  100% { transform: rotate(0deg) scale(1); }
}
.scn-basset-counters .petal-fall {
  position: absolute; bottom: 35%; left: 40%;
  width: 8px; height: 6px;
  background: #e0d4c0;
  border-radius: 50% 50% 20% 20%;
  box-shadow: 0 0 6px 2px rgba(200,180,140,0.3);
  animation: bc-petal 6s ease-in-out infinite;
}
@keyframes bc-petal {
  0% { transform: translate(0,0) rotate(0deg); opacity: 1; }
  30% { transform: translate(10px, 20px) rotate(45deg); opacity: 0.7; }
  60% { transform: translate(-5px, 40px) rotate(90deg); opacity: 0.4; }
  100% { transform: translate(0, 60px) rotate(180deg); opacity: 0; }
}
.scn-basset-counters .spotlight {
  position: absolute; top: 0; left: 35%; width: 30%; height: 100%;
  background: linear-gradient(180deg, rgba(255,220,160,0.4) 0%, transparent 60%);
  clip-path: polygon(20% 0%, 80% 0%, 70% 100%, 30% 100%);
  animation: bc-spotlight 7s ease-in-out infinite alternate;
}
@keyframes bc-spotlight {
  0% { opacity: 0.5; transform: scaleX(0.9); }
  50% { opacity: 0.8; transform: scaleX(1.1); }
  100% { opacity: 0.6; transform: scaleX(0.95); }
}
.scn-basset-counters .shadow-side {
  position: absolute; bottom: 0; left: 20%; right: 20%; height: 25%;
  background: linear-gradient(180deg, rgba(0,0,0,0.3) 0%, transparent 100%);
  border-radius: 50% 50% 0 0 / 30% 30% 0 0;
  animation: bc-shadow 8s ease-in-out infinite alternate;
}
@keyframes bc-shadow {
  0% { opacity: 0.4; transform: scaleY(1); }
  50% { opacity: 0.7; transform: scaleY(0.85); }
  100% { opacity: 0.5; transform: scaleY(1.1); }
}

/* ---------- Scene: king-wears-red-rose ---------- */
.scn-king-wears-red-rose {
  background:
    linear-gradient(135deg, #2a2218 0%, #4a3a2a 40%, #6a5a48 100%),
    radial-gradient(ellipse at 50% 30%, #7a6a58 0%, transparent 70%);
}
.scn-king-wears-red-rose .bg-canopy {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #1a120a 0%, #3a2a1e 50%, #5a4a38 100%);
  border-radius: 0 0 60% 60% / 0 0 40% 40%;
  animation: kr-canopy 15s ease-in-out infinite alternate;
}
@keyframes kr-canopy {
  0% { background-position: 0% 0%; }
  50% { background-position: 5% 3%; }
  100% { background-position: 0% 0%; }
}
.scn-king-wears-red-rose .throne-base {
  position: absolute; bottom: 15%; left: 50%; transform: translateX(-50%);
  width: 120px; height: 100px;
  background: linear-gradient(135deg, #4a3828 0%, #6a5240 40%, #3a2818 100%);
  border-radius: 10% 10% 5% 5% / 20% 20% 10% 10%;
  box-shadow: 0 8px 20px rgba(0,0,0,0.6), inset 0 4px 8px rgba(255,255,255,0.1);
  animation: kr-throne 20s ease-in-out infinite alternate;
}
@keyframes kr-throne {
  0% { transform: translateX(-50%) scale(1); box-shadow: 0 8px 20px rgba(0,0,0,0.6); }
  50% { transform: translateX(-50%) scale(0.98); box-shadow: 0 4px 10px rgba(0,0,0,0.5); }
  100% { transform: translateX(-50%) scale(1.01); box-shadow: 0 10px 25px rgba(0,0,0,0.7); }
}
.scn-king-wears-red-rose .king-serene {
  position: absolute; bottom: 25%; left: 50%; transform: translateX(-50%);
  width: 90px; height: 130px;
  background: linear-gradient(180deg, #2a1a0e 0%, #1a0e06 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  clip-path: polygon(30% 0%, 70% 0%, 80% 20%, 70% 40%, 75% 60%, 80% 80%, 70% 100%, 30% 100%, 20% 80%, 25% 60%, 30% 40%, 20% 20%);
  animation: kr-king 8s ease-in-out infinite alternate;
}
@keyframes kr-king {
  0% { transform: translateX(-50%) rotate(0deg) scaleY(1); }
  50% { transform: translateX(-50%) rotate(1deg) scaleY(1.01); }
  100% { transform: translateX(-50%) rotate(-1deg) scaleY(0.99); }
}
.scn-king-wears-red-rose .rose-accents {
  position: absolute; bottom: 50%; left: 50%; transform: translateX(-50%);
  width: 20px; height: 20px;
  background: radial-gradient(circle at 50% 40%, #c8553d 0%, #8a3a2a 50%, #5a1e1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 0 0 12px 4px rgba(200,85,61,0.3);
  animation: kr-rose 6s ease-in-out infinite alternate;
}
@keyframes kr-rose {
  0% { transform: translateX(-50%) rotate(-5deg) scale(1); }
  30% { transform: translateX(-50%) rotate(3deg) scale(1.05); }
  60% { transform: translateX(-50%) rotate(-2deg) scale(0.95); }
  100% { transform: translateX(-50%) rotate(0deg) scale(1); }
}
.scn-king-wears-red-rose .soft-glow {
  position: absolute; top: 20%; left: 30%; right: 30%; height: 60%;
  background: radial-gradient(ellipse, rgba(255,220,160,0.2) 0%, transparent 70%);
  border-radius: 50%;
  animation: kr-glow 10s ease-in-out infinite alternate;
}
@keyframes kr-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); }
}
.scn-king-wears-red-rose .pillar-left {
  position: absolute; bottom: 10%; left: 5%; width: 20px; height: 80%;
  background: linear-gradient(90deg, #4a3828 0%, #6a5240 30%, #4a3828 100%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 2px 0 10px rgba(0,0,0,0.5);
  animation: kr-pillar-l 30s linear infinite alternate;
}
@keyframes kr-pillar-l {
  0% { transform: scaleY(1); }
  50% { transform: scaleY(0.98); }
  100% { transform: scaleY(1.01); }
}
.scn-king-wears-red-rose .pillar-right {
  position: absolute; bottom: 10%; right: 5%; width: 20px; height: 80%;
  background: linear-gradient(90deg, #4a3828 0%, #6a5240 30%, #4a3828 100%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: -2px 0 10px rgba(0,0,0,0.5);
  animation: kr-pillar-r 30s linear infinite alternate 5s;
}
@keyframes kr-pillar-r {
  0% { transform: scaleY(1); }
  50% { transform: scaleY(1.02); }
  100% { transform: scaleY(0.98); }
}

/* countess-submits – dim interior, warm mood */
.scn-countess-submits {
  background: linear-gradient(180deg, #1a0f0a 0%, #2c1a10 40%, #4a2a1a 100%),
              radial-gradient(ellipse at 30% 20%, rgba(220,180,100,0.3) 0%, transparent 70%);
}
.scn-countess-submits .bg-wall {
  position:absolute; inset:0; background:linear-gradient(135deg,#3a2a1a 0%,#2a1a0e 100%);
}
.scn-countess-submits .bg-window {
  position:absolute; top:10%; left:25%; width:30%; height:40%;
  background:rgba(200,170,120,0.1); border:2px solid #5a3a1a; border-radius:2% 2% 6% 6%;
  animation: cs-window 8s ease-in-out infinite;
}
.scn-countess-submits .candle {
  position:absolute; bottom:30%; left:50%; width:8px; height:40px;
  background:linear-gradient(180deg,#a08040 0%,#6a4a1a 100%); border-radius:4px;
  transform-origin:bottom; animation: cs-candle 3s ease-in-out infinite;
}
.scn-countess-submits .candle-glow {
  position:absolute; bottom:32%; left:50%; width:20px; height:20px;
  background:radial-gradient(circle,rgba(255,200,100,0.8) 0%,transparent 70%);
  animation: cs-glow 2s ease-in-out infinite alternate;
}
.scn-countess-submits .table {
  position:absolute; bottom:25%; left:30%; width:40%; height:10%;
  background:linear-gradient(180deg,#4a2a1a 0%,#2a1a0e 100%); border-radius:2% 2% 0 0;
}
.scn-countess-submits .figure-bowing {
  position:absolute; bottom:25%; left:60%; width:30px; height:50px;
  background:radial-gradient(ellipse at 50% 0%,#3a2a2a 0%,#1a0f0a 100%);
  border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin:bottom center;
  animation: cs-bow 6s ease-in-out infinite;
}
.scn-countess-submits .shadow {
  position:absolute; bottom:25%; left:55%; width:40px; height:8px;
  background:rgba(0,0,0,0.4); border-radius:50%;
  animation: cs-shadow 6s ease-in-out infinite;
}
@keyframes cs-window { 0%{opacity:0.7} 50%{opacity:0.9} 100%{opacity:0.8} }
@keyframes cs-candle { 0%{transform:scaleY(1) rotate(0)} 50%{transform:scaleY(0.95) rotate(2deg)} 100%{transform:scaleY(1) rotate(-2deg)} }
@keyframes cs-glow { 0%{transform:scale(0.8);opacity:0.6} 50%{transform:scale(1);opacity:0.8} 100%{transform:scale(1.2);opacity:1} }
@keyframes cs-bow { 0%{transform:rotate(0)} 50%{transform:rotate(20deg)} 100%{transform:rotate(0)} }
@keyframes cs-shadow { 0%{transform:scaleX(1) translateX(0)} 50%{transform:scaleX(1.3) translateX(5px)} 100%{transform:scaleX(1) translateX(0)} }

/* temple-garden – tense, sunlit */
.scn-temple-garden {
  background: linear-gradient(180deg, #87CEEB 0%, #4682B4 60%, #2F4F4F 100%);
  box-shadow: inset 0 0 20px rgba(0,0,0,0.3);
}
.scn-temple-garden .garden-sky {
  position:absolute; inset:0; background:radial-gradient(ellipse at 50% 0%, rgba(255,255,200,0.4) 0%, transparent 60%);
  animation: tg-sky 6s ease-in-out infinite alternate;
}
.scn-temple-garden .sun {
  position:absolute; top:5%; left:50%; width:60px; height:60px;
  background:radial-gradient(circle, #FFD700 0%, #FFA500 40%, transparent 70%);
  transform:translateX(-50%); animation: tg-sun 4s ease-in-out infinite alternate;
}
.scn-temple-garden .temple-col {
  position:absolute; bottom:0; left:50%; width:20px; height:60%;
  background:linear-gradient(180deg, #D2B48C 0%, #8B4513 100%);
  transform:translateX(-50%); border-radius:4% 4% 0 0;
  box-shadow: 4px 0 6px rgba(0,0,0,0.4), -4px 0 6px rgba(0,0,0,0.4);
}
.scn-temple-garden .figure-left {
  position:absolute; bottom:25%; left:30%; width:22px; height:45px;
  background:radial-gradient(ellipse at 50% 0%, #a0461a 0%, #4a1a0a 100%);
  border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin:bottom center; animation: tg-figL 3s ease-in-out infinite;
}
.scn-temple-garden .figure-right {
  position:absolute; bottom:25%; right:30%; width:22px; height:45px;
  background:radial-gradient(ellipse at 50% 0%, #6b3a1a 0%, #2a0f0a 100%);
  border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin:bottom center; animation: tg-figR 3.2s ease-in-out infinite reverse;
}
.scn-temple-garden .shadows {
  position:absolute; bottom:25%; left:25%; right:25%; height:6px;
  background:rgba(0,0,0,0.3); filter:blur(2px);
  animation: tg-shadows 4s ease-in-out infinite;
}
.scn-temple-garden .leaves {
  position:absolute; top:20%; left:10%; width:80%; height:50%;
  background:radial-gradient(ellipse at 40% 30%, #2E8B57 0%, transparent 70%);
  opacity:0.3; filter:blur(4px); animation: tg-leaves 8s ease-in-out infinite alternate;
}
@keyframes tg-sky { 0%{opacity:0.7} 50%{opacity:1} 100%{opacity:0.8} }
@keyframes tg-sun { 0%{transform:translateX(-50%) scale(0.9);opacity:0.8} 50%{transform:translateX(-50%) scale(1.1);opacity:1} 100%{transform:translateX(-50%) scale(0.95);opacity:0.9} }
@keyframes tg-figL { 0%{transform:rotate(-2deg)} 50%{transform:rotate(4deg)} 100%{transform:rotate(-2deg)} }
@keyframes tg-figR { 0%{transform:rotate(2deg)} 50%{transform:rotate(-4deg)} 100%{transform:rotate(2deg)} }
@keyframes tg-shadows { 0%{transform:scaleY(1)} 50%{transform:scaleY(1.5)} 100%{transform:scaleY(1)} }
@keyframes tg-leaves { 0%{transform:translateX(0) rotate(0)} 50%{transform:translateX(-10px) rotate(5deg)} 100%{transform:translateX(10px) rotate(-5deg)} }

/* warwick-arbitrates – calm, sunlit golden hour */
.scn-warwick-arbitrates {
  background: linear-gradient(180deg, #FFEFD5 0%, #FFD700 40%, #B8860B 100%),
              radial-gradient(ellipse at 50% 0%, rgba(255,215,0,0.2) 0%, transparent 60%);
}
.scn-warwick-arbitrates .golden-sky {
  position:absolute; inset:0; background:linear-gradient(180deg, rgba(255,255,200,0.3) 0%, transparent 100%);
}
.scn-warwick-arbitrates .warwick-fig {
  position:absolute; bottom:25%; left:50%; width:30px; height:55px;
  background:radial-gradient(ellipse at 50% 0%, #8B4513 0%, #3a1a0a 100%);
  border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform:translateX(-50%);
  transform-origin:bottom center; animation: wa-warwick 8s ease-in-out infinite;
}
.scn-warwick-arbitrates .petitioner-a {
  position:absolute; bottom:25%; left:30%; width:18px; height:40px;
  background:radial-gradient(ellipse at 50% 0%, #c8553d 0%, #5a1a0a 100%);
  border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin:bottom center;
  animation: wa-petA 6s ease-in-out infinite;
}
.scn-warwick-arbitrates .petitioner-b {
  position:absolute; bottom:25%; right:30%; width:18px; height:40px;
  background:radial-gradient(ellipse at 50% 0%, #b87878 0%, #4a1a1a 100%);
  border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin:bottom center;
  animation: wa-petB 6.5s ease-in-out infinite reverse;
}
.scn-warwick-arbitrates .banner {
  position:absolute; top:10%; left:50%; width:12px; height:60px;
  background:linear-gradient(180deg, #FFD700 0%, #B8860B 100%); transform:translateX(-50%);
  border-radius:2px; transform-origin:top center; animation: wa-banner 10s ease-in-out infinite;
}
.scn-warwick-arbitrates .tree {
  position:absolute; bottom:30%; left:10%; width:40px; height:80px;
  background:radial-gradient(ellipse at 50% 100%, #2E8B57 0%, #1a4a1a 100%);
  border-radius:50% 50% 0 0; transform-origin:bottom center;
  animation: wa-tree 12s ease-in-out infinite alternate;
}
.scn-warwick-arbitrates .soft-clouds {
  position:absolute; top:8%; left:0; right:0; height:20%;
  background:radial-gradient(ellipse at 30% 50%, rgba(255,255,255,0.4) 0%, transparent 60%),
             radial-gradient(ellipse at 70% 50%, rgba(255,255,255,0.3) 0%, transparent 50%);
  filter:blur(4px); animation: wa-clouds 30s linear infinite;
}
@keyframes wa-warwick { 0%{transform:translateX(-50%) rotate(0)} 50%{transform:translateX(-50%) rotate(3deg)} 100%{transform:translateX(-50%) rotate(0)} }
@keyframes wa-petA { 0%{transform:rotate(-5deg)} 50%{transform:rotate(2deg)} 100%{transform:rotate(-5deg)} }
@keyframes wa-petB { 0%{transform:rotate(5deg)} 50%{transform:rotate(-2deg)} 100%{transform:rotate(5deg)} }
@keyframes wa-banner { 0%{transform:translateX(-50%) rotate(-2deg)} 50%{transform:translateX(-50%) rotate(4deg)} 100%{transform:translateX(-50%) rotate(-2deg)} }
@keyframes wa-tree { 0%{transform:rotate(-3deg)} 50%{transform:rotate(5deg)} 100%{transform:rotate(0)} }
@keyframes wa-clouds { 0%{transform:translateX(0)} 50%{transform:translateX(20px)} 100%{transform:translateX(-10px)} }

/* richard-claims-truth – calm, sunlit with light beam */
.scn-richard-claims-truth {
  background: linear-gradient(180deg, #FFFEF0 0%, #F0E68C 40%, #DAA520 100%),
              radial-gradient(ellipse at 50% 0%, rgba(255,215,0,0.15) 0%, transparent 60%);
}
.scn-richard-claims-truth .light-bg {
  position:absolute; inset:0; background:radial-gradient(ellipse at 50% 30%, rgba(255,250,220,0.2) 0%, transparent 70%);
}
.scn-richard-claims-truth .richard-fig {
  position:absolute; bottom:20%; left:50%; width:25px; height:50px;
  background:radial-gradient(ellipse at 50% 0%, #4a3a2a 0%, #1a0f0a 100%);
  border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform:translateX(-50%);
  transform-origin:bottom center; animation: rc-fig 7s ease-in-out infinite;
}
.scn-richard-claims-truth .light-beam {
  position:absolute; top:0; left:40%; width:20%; height:100%;
  background:linear-gradient(180deg, rgba(255,255,200,0.6) 0%, transparent 80%);
  clip-path: polygon(30% 0, 70% 0, 80% 100%, 20% 100%);
  animation: rc-beam 4s ease-in-out infinite alternate;
}
.scn-richard-claims-truth .book {
  position:absolute; bottom:25%; left:45%; width:20px; height:12px;
  background:linear-gradient(135deg, #D2B48C 0%, #8B4513 100%);
  border-radius:2px; transform:rotate(-5deg); animation: rc-book 6s ease-in-out infinite;
}
.scn-richard-claims-truth .halo {
  position:absolute; top:15%; left:50%; width:40px; height:40px;
  background:radial-gradient(circle, rgba(255,215,0,0.5) 0%, transparent 70%);
  transform:translateX(-50%); animation: rc-halo 5s ease-in-out infinite alternate;
}
.scn-richard-claims-truth .sparkles {
  position:absolute; top:10%; left:30%; width:40%; height:40%;
  background:radial-gradient(circle at 20% 30%, rgba(255,255,255,0.6) 0%, transparent 30%),
             radial-gradient(circle at 70% 20%, rgba(255,255,255,0.5) 0%, transparent 25%),
             radial-gradient(circle at 50% 70%, rgba(255,255,200,0.4) 0%, transparent 35%);
  filter:blur(1px); animation: rc-sparkles 3s ease-in-out infinite;
}
@keyframes rc-fig { 0%{transform:translateX(-50%) rotate(0)} 50%{transform:translateX(-50%) rotate(4deg)} 100%{transform:translateX(-50%) rotate(0)} }
@keyframes rc-beam { 0%{opacity:0.6; transform:scaleY(0.95)} 50%{opacity:0.9; transform:scaleY(1.05)} 100%{opacity:0.7; transform:scaleY(1)} }
@keyframes rc-book { 0%{transform:rotate(-5deg) translateY(0)} 50%{transform:rotate(-3deg) translateY(-2px)} 100%{transform:rotate(-5deg) translateY(0)} }
@keyframes rc-halo { 0%{transform:translateX(-50%) scale(0.9);opacity:0.7} 50%{transform:translateX(-50%) scale(1.1);opacity:1} 100%{transform:translateX(-50%) scale(0.95);opacity:0.8} }
@keyframes rc-sparkles { 0%{opacity:0.5; transform:scale(0.8)} 50%{opacity:1; transform:scale(1.2)} 100%{opacity:0.6; transform:scale(0.9)} }

.scn-york-delayed {
  background:
    linear-gradient(180deg, #6b9ed4 0%, #b0c4de 40%, #f5deb3 80%, #d2b48c 100%),
    radial-gradient(ellipse at 50% 0%, #ffd700 0%, transparent 60%);
  position: relative; overflow: hidden; width: 100%; height: 100%;
}
.scn-york-delayed .sky { position: absolute; inset: 0 0 55% 0; background: linear-gradient(180deg, #87ceeb 0%, #f0e68c 100%); animation: yd-sky 12s ease-in-out infinite alternate; }
.scn-york-delayed .sun { position: absolute; top: 8%; left: 60%; width: 40px; height: 40px; background: radial-gradient(circle, #fffacd 0%, #ffd700 60%, transparent 100%); border-radius: 50%; box-shadow: 0 0 40px 20px #ffd700, 0 0 80px 40px rgba(255,215,0,0.4); animation: yd-sun 8s ease-in-out infinite alternate; }
.scn-york-delayed .plains { position: absolute; bottom: 0; left: 0; right: 0; height: 55%; background: linear-gradient(180deg, #89a94b 0%, #6b8e23 50%, #556b2f 100%); border-radius: 30% 70% 0 0 / 40% 60% 0 0; box-shadow: inset 0 10px 20px rgba(0,0,0,0.3); animation: yd-plains 15s ease-in-out infinite alternate; }
.scn-york-delayed .york-figure { position: absolute; bottom: 35%; left: 30%; width: 20px; height: 60px; background: linear-gradient(180deg, #4a3e2e 0%, #2a1e0e 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: yd-york 4s ease-in-out infinite; }
.scn-york-delayed .trumpet { position: absolute; bottom: 40%; left: 38%; width: 25px; height: 8px; background: #b8860b; border-radius: 0 50% 50% 0 / 0 100% 100% 0; transform: rotate(30deg); transform-origin: left center; box-shadow: 0 0 4px #daa520; animation: yd-trumpet 0.8s ease-in-out infinite alternate; }
.scn-york-delayed .messenger { position: absolute; bottom: 35%; right: 25%; width: 14px; height: 40px; background: linear-gradient(180deg, #3a2a1a 0%, #1a0e00 100%); border-radius: 50% 50% 40% 40% / 50% 50% 40% 40%; transform-origin: bottom center; animation: yd-messenger 3s ease-in-out infinite; }
.scn-york-delayed .dust { position: absolute; bottom: 32%; left: 10%; width: 80px; height: 20px; background: radial-gradient(ellipse at 50% 50%, rgba(255,255,224,0.6) 0%, transparent 100%); filter: blur(8px); animation: yd-dust 6s ease-in-out infinite alternate; }
@keyframes yd-sky { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.7; } }
@keyframes yd-sun { 0% { transform: scale(1); box-shadow: 0 0 30px 10px #ffd700; } 50% { transform: scale(1.1) translateY(-3px); box-shadow: 0 0 60px 30px #ffd700; } 100% { transform: scale(0.95); box-shadow: 0 0 25px 5px #ffd700; } }
@keyframes yd-plains { 0% { transform: translateY(0); } 50% { transform: translateY(-5px) perspective(200px) rotateX(1deg); } 100% { transform: translateY(2px); } }
@keyframes yd-york { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(1px) rotate(-2deg); } 50% { transform: translateX(2px) rotate(2deg); } 75% { transform: translateX(-1px) rotate(-1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes yd-trumpet { 0% { transform: rotate(20deg) scaleY(1); } 50% { transform: rotate(35deg) scaleY(1.1); } 100% { transform: rotate(25deg) scaleY(0.95); } }
@keyframes yd-messenger { 0% { transform: translateY(0) rotate(0deg); } 30% { transform: translateY(-2px) rotate(-3deg); } 60% { transform: translateY(-4px) rotate(3deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes yd-dust { 0% { opacity: 0.2; transform: translateX(0); } 50% { opacity: 0.6; transform: translateX(20px); } 100% { opacity: 0.3; transform: translateX(-10px); } }

.scn-lucy-brings-news {
  background:
    linear-gradient(180deg, #5c85a5 0%, #87ceeb 30%, #f0e68c 70%, #d2b48c 100%),
    radial-gradient(ellipse at 30% 0%, #ffd700 0%, transparent 50%);
  position: relative; overflow: hidden; width: 100%; height: 100%;
}
.scn-lucy-brings-news .sky { position: absolute; inset: 0 0 50% 0; background: linear-gradient(180deg, #b0c4de 0%, #f5deb3 100%); animation: lbn-sky 10s ease-in-out infinite alternate; }
.scn-lucy-brings-news .sun { position: absolute; top: 5%; left: 70%; width: 35px; height: 35px; background: radial-gradient(circle, #fff8dc 0%, #ffd700 70%, transparent 100%); border-radius: 50%; box-shadow: 0 0 50px 25px #ffd700, 0 0 100px 50px rgba(255,215,0,0.3); animation: lbn-sun 6s ease-in-out infinite alternate; }
.scn-lucy-brings-news .plains { position: absolute; bottom: 0; left: 0; right: 0; height: 50%; background: linear-gradient(180deg, #7ab048 0%, #558b2f 60%, #33691e 100%); border-radius: 40% 60% 0 0 / 30% 70% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,0.4); animation: lbn-plains 20s ease-in-out infinite alternate; }
.scn-lucy-brings-news .york-figure { position: absolute; bottom: 30%; left: 20%; width: 22px; height: 65px; background: linear-gradient(180deg, #5a4a3a 0%, #2a1a0a 100%); border-radius: 50% 50% 35% 35% / 60% 60% 40% 40%; transform-origin: bottom center; animation: lbn-york 4s ease-in-out infinite; }
.scn-lucy-brings-news .lucy-rider { position: absolute; bottom: 30%; right: 20%; width: 30px; height: 50px; background: linear-gradient(180deg, #6a5a4a 0%, #3a2a1a 100%); border-radius: 30% 30% 20% 20% / 50% 50% 40% 40%; transform-origin: bottom center; animation: lbn-rider 2.5s ease-in-out infinite; }
.scn-lucy-brings-news .horse { position: absolute; bottom: 28%; right: 15%; width: 50px; height: 30px; background: linear-gradient(180deg, #8b6f47 0%, #5c4033 100%); border-radius: 40% 40% 20% 20% / 60% 60% 30% 30%; transform-origin: bottom center; animation: lbn-horse 2.5s ease-in-out infinite; }
.scn-lucy-brings-news .banner { position: absolute; bottom: 38%; right: 28%; width: 8px; height: 40px; background: #c8553d; border-radius: 2px; transform: rotate(-10deg); transform-origin: bottom center; box-shadow: 0 0 6px rgba(200,85,61,0.5); animation: lbn-banner 3s ease-in-out infinite alternate; }
.scn-lucy-brings-news .dust { position: absolute; bottom: 25%; left: 50%; width: 120px; height: 25px; background: radial-gradient(ellipse at 50% 50%, rgba(255,255,224,0.5) 0%, transparent 100%); filter: blur(10px); animation: lbn-dust 4s ease-in-out infinite alternate; }
@keyframes lbn-sky { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.8; } }
@keyframes lbn-sun { 0% { transform: scale(1) translateY(0); } 50% { transform: scale(1.08) translateY(-2px); } 100% { transform: scale(0.92) translateY(1px); } }
@keyframes lbn-plains { 0% { transform: translateY(0); } 50% { transform: translateY(-6px) perspective(300px) rotateX(2deg); } 100% { transform: translateY(3px); } }
@keyframes lbn-york { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(5px) rotate(-3deg); } 50% { transform: translateX(10px) rotate(3deg); } 75% { transform: translateX(5px) rotate(-1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes lbn-rider { 0% { transform: translateY(0) rotate(0deg); } 30% { transform: translateY(-3px) rotate(2deg); } 60% { transform: translateY(-5px) rotate(-2deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes lbn-horse { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(-3px) rotate(2deg); } 50% { transform: translateX(-6px) rotate(-2deg); } 75% { transform: translateX(-3px) rotate(1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes lbn-banner { 0% { transform: rotate(-15deg) scaleY(1); } 50% { transform: rotate(-5deg) scaleY(1.2); } 100% { transform: rotate(-20deg) scaleY(0.9); } }
@keyframes lbn-dust { 0% { opacity: 0.3; transform: translateX(-20px); } 50% { opacity: 0.7; transform: translateX(30px); } 100% { opacity: 0.4; transform: translateX(-10px); } }

.scn-york-curses {
  background:
    linear-gradient(180deg, #3a4a5a 0%, #6b8e8e 30%, #a0b0b0 60%, #c0c8c0 100%),
    radial-gradient(ellipse at 80% 20%, #ffd700 0%, transparent 50%);
  position: relative; overflow: hidden; width: 100%; height: 100%;
}
.scn-york-curses .sky { position: absolute; inset: 0 0 40% 0; background: linear-gradient(180deg, #4a5a6a 0%, #7a8a8a 50%, #b0c0c0 100%); animation: yc-sky 15s ease-in-out infinite alternate; }
.scn-york-curses .sun { position: absolute; top: 15%; left: 80%; width: 30px; height: 30px; background: radial-gradient(circle, #fff8dc 0%, #ffd700 60%, transparent 100%); border-radius: 50%; box-shadow: 0 0 30px 15px #ffd700, 0 0 60px 30px rgba(255,215,0,0.4); animation: yc-sun 10s ease-in-out infinite alternate; }
.scn-york-curses .cliff { position: absolute; bottom: 20%; left: 10%; width: 60%; height: 40%; background: linear-gradient(135deg, #5a4a3a 0%, #3a2a1a 60%, #1a1000 100%); border-radius: 30% 70% 0 0 / 40% 60% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,0.5); animation: yc-cliff 20s ease-in-out infinite alternate; }
.scn-york-curses .york-figure { position: absolute; bottom: 30%; left: 35%; width: 24px; height: 70px; background: linear-gradient(180deg, #3a2a1a 0%, #1a0e00 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: yc-york 5s ease-in-out infinite; }
.scn-york-curses .york-sword { position: absolute; bottom: 35%; left: 42%; width: 30px; height: 6px; background: #c0c0c0; border-radius: 0 50% 50% 0 / 0 100% 100% 0; transform: rotate(45deg); transform-origin: left center; box-shadow: 0 0 6px #fff; animation: yc-sword 1.2s ease-in-out infinite alternate; }
.scn-york-curses .york-shadow { position: absolute; bottom: 28%; left: 30%; width: 40px; height: 10px; background: rgba(0,0,0,0.3); border-radius: 50%; filter: blur(4px); animation: yc-shadow 5s ease-in-out infinite; }
.scn-york-curses .storm-clouds { position: absolute; top: 5%; left: 0; width: 120%; height: 20%; background: repeating-linear-gradient(90deg, rgba(80,80,80,0.4) 0px, rgba(80,80,80,0.8) 40px, transparent 60px); filter: blur(6px); animation: yc-clouds 25s linear infinite; }
@keyframes yc-sky { 0% { opacity: 0.7; } 50% { opacity: 0.9; } 100% { opacity: 0.6; } }
@keyframes yc-sun { 0% { transform: scale(1) translateY(0); opacity: 0.8; } 50% { transform: scale(1.15) translateY(-4px); opacity: 1; } 100% { transform: scale(0.9) translateY(2px); opacity: 0.7; } }
@keyframes yc-cliff { 0% { transform: translateY(0); } 50% { transform: translateY(-8px) perspective(400px) rotateX(2deg); } 100% { transform: translateY(4px); } }
@keyframes yc-york { 0% { transform: translateX(0) rotate(0deg) scaleY(1); } 25% { transform: translateX(-2px) rotate(-5deg) scaleY(0.95); } 50% { transform: translateX(0) rotate(5deg) scaleY(1.05); } 75% { transform: translateX(2px) rotate(-3deg) scaleY(0.95); } 100% { transform: translateX(0) rotate(0deg) scaleY(1); } }
@keyframes yc-sword { 0% { transform: rotate(30deg) scaleX(1); } 50% { transform: rotate(60deg) scaleX(1.2); } 100% { transform: rotate(40deg) scaleX(0.9); } }
@keyframes yc-shadow { 0% { opacity: 0.3; transform: scale(1) translateX(0); } 50% { opacity: 0.6; transform: scale(1.2) translateX(5px); } 100% { opacity: 0.4; transform: scale(0.9) translateX(-3px); } }
@keyframes yc-clouds { 0% { transform: translateX(0); } 100% { transform: translateX(-100px); } }

.scn-lucy-laments {
  background:
    linear-gradient(180deg, #4a5a6a 0%, #7a8a8a 30%, #a5b5b5 60%, #c0c8c0 100%),
    radial-gradient(ellipse at 20% 80%, #ffd700 0%, transparent 70%);
  position: relative; overflow: hidden; width: 100%; height: 100%;
}
.scn-lucy-laments .sky { position: absolute; inset: 0 0 50% 0; background: linear-gradient(180deg, #5a6a7a 0%, #8a9a9a 50%, #b0c0c0 100%); animation: ll-sky 14s ease-in-out infinite alternate; }
.scn-lucy-laments .sun { position: absolute; bottom: 60%; left: 20%; width: 30px; height: 30px; background: radial-gradient(circle, #fffacd 0%, #ffd700 60%, transparent 100%); border-radius: 50%; box-shadow: 0 0 40px 20px #ffd700, 0 0 80px 40px rgba(255,215,0,0.3); animation: ll-sun 9s ease-in-out infinite alternate; }
.scn-lucy-laments .ground { position: absolute; bottom: 0; left: 0; right: 0; height: 50%; background: linear-gradient(180deg, #6b8e4b 0%, #4a6b2a 60%, #2a4a10 100%); border-radius: 50% 50% 0 0 / 20% 20% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,0.4); animation: ll-ground 18s ease-in-out infinite alternate; }
.scn-lucy-laments .lucy-figure { position: absolute; bottom: 30%; left: 45%; width: 22px; height: 60px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ll-lucy 6s ease-in-out infinite; }
.scn-lucy-laments .vulture { position: absolute; top: 20%; left: 60%; width: 30px; height: 40px; background: #3a2a1a; clip-path: polygon(50% 0%, 0% 100%, 100% 100%); border-radius: 0 0 50% 50%; transform: rotate(-15deg); animation: ll-vulture 7s ease-in-out infinite alternate; }
.scn-lucy-laments .vulture-shadow { position: absolute; top: 25%; left: 62%; width: 20px; height: 15px; background: rgba(0,0,0,0.3); border-radius: 50%; filter: blur(5px); animation: ll-vshadow 7s ease-in-out infinite alternate; }
.scn-lucy-laments .drooping-banner { position: absolute; bottom: 35%; left: 35%; width: 6px; height: 50px; background: #702243; border-radius: 2px; transform: rotate(15deg); transform-origin: bottom center; box-shadow: 0 0 4px rgba(112,34,67,0.5); animation: ll-banner 4s ease-in-out infinite alternate; }
@keyframes ll-sky { 0% { opacity: 0.8; } 50% { opacity: 0.95; } 100% { opacity: 0.7; } }
@keyframes ll-sun { 0% { transform: scale(0.95) translateY(0); opacity: 0.7; } 50% { transform: scale(1.1) translateY(-3px); opacity: 0.95; } 100% { transform: scale(0.9) translateY(2px); opacity: 0.6; } }
@keyframes ll-ground { 0% { transform: translateY(0); } 50% { transform: translateY(-4px) perspective(300px) rotateX(1deg); } 100% { transform: translateY(2px); } }
@keyframes ll-lucy { 0% { transform: translateX(0) rotate(0deg) scaleY(1); } 25% { transform: translateX(-2px) rotate(-4deg) scaleY(0.95); } 50% { transform: translateX(0) rotate(4deg) scaleY(1.05); } 75% { transform: translateX(2px) rotate(-2deg) scaleY(0.95); } 100% { transform: translateX(0) rotate(0deg) scaleY(1); } }
@keyframes ll-vulture { 0% { transform: translateX(0) rotate(-20deg); } 50% { transform: translateX(15px) rotate(10deg); } 100% { transform: translateX(0) rotate(-15deg); } }
@keyframes ll-vshadow { 0% { transform: translateX(0) scale(1); opacity: 0.3; } 50% { transform: translateX(15px) scale(1.2); opacity: 0.6; } 100% { transform: translateX(0) scale(0.9); opacity: 0.4; } }
@keyframes ll-banner { 0% { transform: rotate(10deg) scaleY(1); } 50% { transform: rotate(20deg) scaleY(1.1); } 100% { transform: rotate(5deg) scaleY(0.95); } }

.scn-warwick-pledges-support {
  background: linear-gradient(180deg, #87CEEB 0%, #f0d9a0 40%, #c8a96e 70%), radial-gradient(ellipse at 20% 60%, #fff5d0 0%, transparent 60%);
  overflow: hidden;
}
.scn-warwick-pledges-support .sky {
  position: absolute; inset: 0 0 60% 0;
  background: linear-gradient(180deg, #7ec8e3 0%, #b5d4e8 60%, transparent);
  animation: wp-sky 12s ease-in-out infinite alternate;
}
.scn-warwick-pledges-support .garden-wall {
  position: absolute; bottom: 30%; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #8b7355 0%, #6b5b3a 100%);
  border-radius: 40% 40% 0 0;
  box-shadow: inset 0 4px 15px rgba(0,0,0,0.3);
  animation: wp-wall 20s ease-in-out infinite;
}
.scn-warwick-pledges-support .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #4a6e3a 0%, #2d4a2a 100%);
  animation: wp-ground 14s ease-in-out infinite alternate;
}
.scn-warwick-pledges-support .figure-left {
  position: absolute; bottom: 22%; left: 28%; width: 40px; height: 80px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: wp-fig-l 4s ease-in-out infinite;
}
.scn-warwick-pledges-support .figure-right {
  position: absolute; bottom: 22%; right: 28%; width: 40px; height: 80px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: wp-fig-r 4s ease-in-out infinite;
}
.scn-warwick-pledges-support .rose-left {
  position: absolute; bottom: 35%; left: 32%; width: 10px; height: 14px;
  background: radial-gradient(circle, #c8553d 0%, #8a2a1a 100%);
  border-radius: 50%;
  box-shadow: 0 0 6px 2px rgba(200,85,61,0.5);
  animation: wp-rose 3s ease-in-out infinite alternate;
}
.scn-warwick-pledges-support .rose-right {
  position: absolute; bottom: 35%; right: 32%; width: 10px; height: 14px;
  background: radial-gradient(circle, #f0e0d0 0%, #c0b0a0 100%);
  border-radius: 50%;
  box-shadow: 0 0 6px 2px rgba(240,224,208,0.5);
  animation: wp-rose 3s ease-in-out infinite alternate reverse;
}
.scn-warwick-pledges-support .sun-glare {
  position: absolute; top: 8%; right: 15%; width: 60px; height: 60px;
  background: radial-gradient(circle, #fff5d0 0%, #f0c060 30%, transparent 70%);
  border-radius: 50%;
  filter: blur(8px);
  animation: wp-sun 5s ease-in-out infinite alternate;
}
@keyframes wp-sky { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.85; } }
@keyframes wp-wall { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes wp-ground { 0% { opacity: 0.95; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes wp-fig-l { 0% { transform: translateX(0) translateY(0) rotate(0deg); } 25% { transform: translateX(2px) translateY(-1px) rotate(1deg); } 50% { transform: translateX(0) translateY(0) rotate(-1deg); } 75% { transform: translateX(-2px) translateY(-1px) rotate(1deg); } 100% { transform: translateX(0) translateY(0) rotate(0deg); } }
@keyframes wp-fig-r { 0% { transform: translateX(0) translateY(0) rotate(0deg) scaleX(-1); } 25% { transform: translateX(-2px) translateY(-1px) rotate(-1deg) scaleX(-1); } 50% { transform: translateX(0) translateY(0) rotate(1deg) scaleX(-1); } 75% { transform: translateX(2px) translateY(-1px) rotate(-1deg) scaleX(-1); } 100% { transform: translateX(0) translateY(0) rotate(0deg) scaleX(-1); } }
@keyframes wp-rose { 0% { transform: rotate(-5deg) scale(0.95); } 50% { transform: rotate(0deg) scale(1.05); } 100% { transform: rotate(5deg) scale(0.95); } }
@keyframes wp-sun { 0% { transform: scale(1) skewX(0deg); opacity: 0.8; } 50% { transform: scale(1.05) skewX(-2deg); opacity: 1; } 100% { transform: scale(0.98) skewX(2deg); opacity: 0.85; } }

.scn-mortimer-in-prison {
  background: linear-gradient(180deg, #0a0a14 0%, #141420 40%, #1a1a2a 100%), radial-gradient(ellipse at 20% 30%, #2a2a3a 0%, transparent 70%);
  overflow: hidden;
}
.scn-mortimer-in-prison .cell-wall {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, #1a1a24 0%, #0e0e18 100%);
  box-shadow: inset 0 0 60px 10px rgba(0,0,0,0.8);
  animation: mp-wall 20s ease-in-out infinite alternate;
}
.scn-mortimer-in-prison .cell-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 15%;
  background: linear-gradient(180deg, #2a2a34 0%, #10101a 100%);
  animation: mp-floor 25s ease-in-out infinite;
}
.scn-mortimer-in-prison .window {
  position: absolute; top: 18%; left: 10%; width: 40px; height: 60px;
  background: #1a2a3a;
  border: 4px solid #4a4a5a;
  border-radius: 4px;
  box-shadow: inset 0 0 30px 10px rgba(100,140,200,0.2);
  animation: mp-window 8s ease-in-out infinite alternate;
}
.scn-mortimer-in-prison .moonlight {
  position: absolute; top: 18%; left: 10%; width: 40px; height: 60px;
  background: linear-gradient(180deg, rgba(180,210,255,0.15) 0%, transparent 80%);
  filter: blur(6px);
  animation: mp-moon 12s ease-in-out infinite alternate;
}
.scn-mortimer-in-prison .chair {
  position: absolute; bottom: 16%; right: 30%; width: 60px; height: 80px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%);
  border-radius: 8% 8% 4% 4%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.6);
  animation: mp-chair 15s ease-in-out infinite;
}
.scn-mortimer-in-prison .figure {
  position: absolute; bottom: 26%; right: 32%; width: 30px; height: 60px;
  background: linear-gradient(180deg, #2a2a34 0%, #0e0e18 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: mp-fig 5s ease-in-out infinite;
}
.scn-mortimer-in-prison .chains {
  position: absolute; bottom: 36%; right: 28%; width: 2px; height: 30px;
  background: #6a6a7a;
  box-shadow: -8px 8px 0 #6a6a7a, -16px 0 0 #6a6a7a;
  border-radius: 2px;
  animation: mp-chains 3s ease-in-out infinite alternate;
}
.scn-mortimer-in-prison .dust {
  position: absolute; top: 40%; left: 40%; width: 4px; height: 4px;
  background: rgba(200,200,220,0.3);
  border-radius: 50%;
  filter: blur(1px);
  animation: mp-dust 18s linear infinite;
}
@keyframes mp-wall { 0% { opacity: 0.95; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes mp-floor { 0% { transform: scaleY(1); } 50% { transform: scaleY(0.98); } 100% { transform: scaleY(1); } }
@keyframes mp-window { 0% { opacity: 0.7; } 50% { opacity: 1; } 100% { opacity: 0.8; } }
@keyframes mp-moon { 0% { transform: translateY(0) scaleX(1); } 50% { transform: translateY(2px) scaleX(1.05); } 100% { transform: translateY(-1px) scaleX(0.95); } }
@keyframes mp-chair { 0% { transform: translateY(0); } 50% { transform: translateY(-1px); } 100% { transform: translateY(0); } }
@keyframes mp-fig { 0% { transform: translateY(0) rotate(0deg); } 25% { transform: translateY(-1px) rotate(1deg); } 50% { transform: translateY(0) rotate(-1deg); } 75% { transform: translateY(-1px) rotate(0deg); } 100% { transform: translateY(0) rotate(1deg); } }
@keyframes mp-chains { 0% { transform: rotate(-3deg); } 50% { transform: rotate(2deg); } 100% { transform: rotate(-1deg); } }
@keyframes mp-dust { 0% { transform: translateY(0) translateX(0) scale(0.5); opacity: 0; } 20% { opacity: 0.4; } 80% { opacity: 0.2; } 100% { transform: translateY(-80px) translateX(40px) scale(1.2); opacity: 0; } }

.scn-mortimer-awaits-richard {
  background: linear-gradient(180deg, #0a0a14 0%, #141420 50%, #1a1a2a 100%), radial-gradient(ellipse at 80% 50%, #1a1a2a 0%, transparent 60%);
  overflow: hidden;
}
.scn-mortimer-awaits-richard .corridor-wall {
  position: absolute; inset: 0;
  background: linear-gradient(90deg, #1a1a24 0%, #0e0e18 100%);
  box-shadow: inset 20px 0 40px rgba(0,0,0,0.7);
  animation: ma-wall 25s ease-in-out infinite alternate;
}
.scn-mortimer-awaits-richard .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 12%;
  background: linear-gradient(180deg, #2a2a34 0%, #10101a 100%);
  animation: ma-floor 30s ease-in-out infinite;
}
.scn-mortimer-awaits-richard .door-arch {
  position: absolute; top: 15%; left: 65%; width: 70px; height: 100px;
  background: #0e0e18;
  border: 3px solid #4a4a5a;
  border-radius: 50% 50% 0 0 / 60% 60% 0 0;
  box-shadow: inset 0 0 20px 5px rgba(0,0,0,0.8);
  animation: ma-door 10s ease-in-out infinite alternate;
}
.scn-mortimer-awaits-richard .figure-seated {
  position: absolute; bottom: 14%; left: 20%; width: 35px; height: 70px;
  background: linear-gradient(180deg, #2a2a34 0%, #0e0e18 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ma-fig 6s ease-in-out infinite;
}
.scn-mortimer-awaits-richard .shadow-long {
  position: absolute; bottom: 14%; left: 20%; width: 70px; height: 120px;
  background: linear-gradient(180deg, rgba(0,0,0,0.4) 0%, transparent 100%);
  border-radius: 0 0 40% 40%;
  transform: skewX(-20deg);
  filter: blur(4px);
  animation: ma-shadow 8s ease-in-out infinite alternate;
}
.scn-mortimer-awaits-richard .candle {
  position: absolute; bottom: 18%; left: 45%; width: 8px; height: 30px;
  background: linear-gradient(180deg, #e0d0a0 0%, #8a7a5a 100%);
  border-radius: 4px 4px 0 0;
  animation: ma-candle 5s ease-in-out infinite;
}
.scn-mortimer-awaits-richard .flame {
  position: absolute; bottom: 38%; left: 45.5%; width: 10px; height: 12px;
  background: radial-gradient(circle, #ffe080 0%, #e08040 60%, transparent 100%);
  border-radius: 50%;
  filter: blur(2px);
  animation: ma-flame 2s ease-in-out infinite alternate;
}
.scn-mortimer-awaits-richard .light-pool {
  position: absolute; bottom: 0; left: 35%; width: 80px; height: 40px;
  background: radial-gradient(ellipse at 50% 0%, rgba(255,200,120,0.15) 0%, transparent 100%);
  filter: blur(8px);
  animation: ma-pool 4s ease-in-out infinite alternate;
}
@keyframes ma-wall { 0% { opacity: 0.95; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes ma-floor { 0% { transform: scaleY(1); } 50% { transform: scaleY(0.97); } 100% { transform: scaleY(1); } }
@keyframes ma-door { 0% { transform: scaleY(1); } 50% { transform: scaleY(0.98); } 100% { transform: scaleY(1); } }
@keyframes ma-fig { 0% { transform: translateY(0) rotate(0deg); } 25% { transform: translateY(-1px) rotate(1deg); } 50% { transform: translateY(0) rotate(-1deg); } 75% { transform: translateY(-1px) rotate(0deg); } 100% { transform: translateY(0) rotate(1deg); } }
@keyframes ma-shadow { 0% { transform: skewX(-20deg) scaleY(1); opacity: 0.6; } 50% { transform: skewX(-18deg) scaleY(1.02); opacity: 0.8; } 100% { transform: skewX(-22deg) scaleY(0.98); opacity: 0.5; } }
@keyframes ma-candle { 0% { transform: rotate(0deg); } 50% { transform: rotate(1deg); } 100% { transform: rotate(-1deg); } }
@keyframes ma-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.9; } }
@keyframes ma-pool { 0% { transform: scaleX(1); opacity: 0.5; } 50% { transform: scaleX(1.05); opacity: 0.7; } 100% { transform: scaleX(0.95); opacity: 0.4; } }

.scn-richard-arrives {
  background: linear-gradient(180deg, #0f0f1a 0%, #1a1a2a 40%, #2a2a3a 100%), radial-gradient(ellipse at 50% 30%, #3a2a1a 0%, transparent 60%);
  overflow: hidden;
}
.scn-richard-arrives .room-wall {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, #1a1a24 0%, #0e0e18 100%);
  box-shadow: inset 0 0 50px 10px rgba(0,0,0,0.7);
  animation: ra-wall 22s ease-in-out infinite alternate;
}
.scn-richard-arrives .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 15%;
  background: linear-gradient(180deg, #2a2a34 0%, #10101a 100%);
  animation: ra-floor 28s ease-in-out infinite;
}
.scn-richard-arrives .lamp {
  position: absolute; top: 10%; left: 10%; width: 20px; height: 30px;
  background: linear-gradient(180deg, #8a6a3a 0%, #4a3a1a 100%);
  border-radius: 4px;
  box-shadow: 0 0 20px 10px rgba(200,150,80,0.3);
  animation: ra-lamp 8s ease-in-out infinite alternate;
}
.scn-richard-arrives .light-cone {
  position: absolute; top: 20%; left: 5%; width: 80px; height: 120px;
  background: linear-gradient(180deg, rgba(200,150,80,0.15) 0%, transparent 100%);
  filter: blur(10px);
  transform: rotate(10deg);
  transform-origin: top left;
  animation: ra-cone 6s ease-in-out infinite alternate;
}
.scn-richard-arrives .figure-mortimer {
  position: absolute; bottom: 18%; right: 30%; width: 35px; height: 70px;
  background: linear-gradient(180deg, #2a2a34 0%, #0e0e18 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ra-fig1 5s ease-in-out infinite;
}
.scn-richard-arrives .figure-richard {
  position: absolute; bottom: 18%; left: 30%; width: 35px; 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: ra-fig2 5s ease-in-out infinite reverse;
}
.scn-richard-arrives .embrace {
  position: absolute; bottom: 26%; left: 48%; width: 40px; height: 20px;
  background: transparent;
  border: 2px solid rgba(200,150,80,0.4);
  border-radius: 50%;
  transform: rotate(-5deg);
  animation: ra-embrace 7s ease-in-out infinite;
}
.scn-richard-arrives .warm-glow {
  position: absolute; top: 30%; left: 25%; right: 25%; bottom: 20%;
  background: radial-gradient(ellipse at 50% 60%, rgba(255,200,120,0.08) 0%, transparent 100%);
  filter: blur(15px);
  animation: ra-glow 12s ease-in-out infinite alternate;
}
@keyframes ra-wall { 0% { opacity: 0.95; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes ra-floor { 0% { transform: scaleY(1); } 50% { transform: scaleY(0.98); } 100% { transform: scaleY(1); } }
@keyframes ra-lamp { 0% { transform: rotate(-1deg); } 50% { transform: rotate(2deg); } 100% { transform: rotate(0deg); } }
@keyframes ra-cone { 0% { transform: rotate(10deg) scaleX(1); opacity: 0.6; } 50% { transform: rotate(8deg) scaleX(1.05); opacity: 0.8; } 100% { transform: rotate(12deg) scaleX(0.95); opacity: 0.5; } }
@keyframes ra-fig1 { 0% { transform: translateY(0) rotate(0deg); } 25% { transform: translateY(-1px) rotate(1deg); } 50% { transform: translateY(0) rotate(-1deg); } 75% { transform: translateY(-1px) rotate(0deg); } 100% { transform: translateY(0) rotate(1deg); } }
@keyframes ra-fig2 { 0% { transform: translateY(0) rotate(0deg); } 25% { transform: translateY(1px) rotate(-1deg); } 50% { transform: translateY(0) rotate(1deg); } 75% { transform: translateY(1px) rotate(0deg); } 100% { transform: translateY(0) rotate(-1deg); } }
@keyframes ra-embrace { 0% { transform: rotate(-5deg) scale(0.95); opacity: 0.3; } 50% { transform: rotate(0deg) scale(1.05); opacity: 0.6; } 100% { transform: rotate(5deg) scale(0.95); opacity: 0.3; } }
@keyframes ra-glow { 0% { opacity: 0.5; } 50% { opacity: 0.8; } 100% { opacity: 0.4; } }

/* mocking-english */
.scn-mocking-english {
  background: linear-gradient(180deg, #ffd580 0%, #ffa040 50%, #e07020 100%), radial-gradient(ellipse at 50% 100%, #f0a030 0%, transparent 80%);
}
.scn-mocking-english .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #ffe8b0 0%, #ffc060 100%);
  animation: me-sky 6s ease-in-out infinite;
}
.scn-mocking-english .sun {
  position: absolute; top: 8%; right: 20%; width: 50px; height: 50px;
  background: radial-gradient(circle, #ffee88 0%, #ffcc44 50%, #ff9900 100%);
  border-radius: 50%;
  animation: me-sun 4s ease-in-out infinite;
}
.scn-mocking-english .hill {
  position: absolute; bottom: 30%; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #a0c060 0%, #608020 100%);
  border-radius: 40% 60% 0 0 / 60% 70% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.2);
  animation: me-hill 8s ease-in-out infinite;
}
.scn-mocking-english .cauldron {
  position: absolute; bottom: 35%; left: 30%; width: 70px; height: 50px;
  background: radial-gradient(ellipse 60% 40% at 50% 50%, #4a3020 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: me-cauldron 2s ease-in-out infinite;
}
.scn-mocking-english .mule {
  position: absolute; bottom: 32%; left: 55%; width: 40px; height: 50px;
  background: #3a2a1a;
  border-radius: 30% 30% 40% 40% / 50% 50% 30% 30%;
  animation: me-mule 3s ease-in-out infinite;
}
.scn-mocking-english .mule::before {
  content: ''; position: absolute; top: -10px; left: 5px;
  width: 12px; height: 20px; background: #3a2a1a;
  border-radius: 50% 50% 0 0;
  transform: rotate(-10deg);
  animation: me-ear 1.5s ease-in-out infinite alternate;
}
.scn-mocking-english .mule::after {
  content: ''; position: absolute; top: -10px; right: 5px;
  width: 12px; height: 20px; background: #3a2a1a;
  border-radius: 50% 50% 0 0;
  transform: rotate(10deg);
  animation: me-ear 1.5s ease-in-out infinite alternate-reverse;
}
.scn-mocking-english .mouse {
  position: absolute; bottom: 30%; left: 40%; width: 12px; height: 8px;
  background: #6a4a2a;
  border-radius: 50%;
  animation: me-mouse 4s ease-in-out infinite;
}
.scn-mocking-english .figure {
  position: absolute; bottom: 25%; left: 20%; width: 24px; height: 50px;
  background: #2a1a0a;
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  animation: me-figure 1.2s ease-in-out infinite;
}
@keyframes me-sky {
  0% { opacity: 0.7; }
  50% { opacity: 1; }
  100% { opacity: 0.8; }
}
@keyframes me-sun {
  0% { transform: scale(1) rotate(0deg); }
  50% { transform: scale(1.1) rotate(10deg); }
  100% { transform: scale(1) rotate(0deg); }
}
@keyframes me-hill {
  0% { transform: translateY(0); }
  50% { transform: translateY(-5px) scaleY(1.02); }
  100% { transform: translateY(0); }
}
@keyframes me-cauldron {
  0% { transform: scale(1) translateY(0); }
  30% { transform: scale(1.03) translateY(-2px); }
  60% { transform: scale(0.98) translateY(1px); }
  100% { transform: scale(1) translateY(0); }
}
@keyframes me-mule {
  0% { transform: translateX(0) rotate(0deg); }
  30% { transform: translateX(-2px) rotate(-2deg); }
  60% { transform: translateX(2px) rotate(2deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes me-ear {
  0% { transform: rotate(-10deg); }
  100% { transform: rotate(10deg); }
}
@keyframes me-mouse {
  0% { transform: translateX(0) translateY(0); }
  25% { transform: translateX(8px) translateY(-2px); }
  50% { transform: translateX(16px) translateY(0); }
  75% { transform: translateX(8px) translateY(-3px); }
  100% { transform: translateX(0) translateY(0); }
}
@keyframes me-figure {
  0% { transform: translateY(0) rotate(-3deg); }
  25% { transform: translateY(-3px) rotate(3deg); }
  50% { transform: translateY(0) rotate(-1deg); }
  75% { transform: translateY(-4px) rotate(4deg); }
  100% { transform: translateY(0) rotate(0deg); }
}

/* alarum-and-defeat */
.scn-alarum-and-defeat {
  background: linear-gradient(180deg, #b0d0f0 0%, #e0e8f0 30%, #f0e0c0 100%), radial-gradient(ellipse at 50% 0%, #f0f8ff 0%, transparent 70%);
}
.scn-alarum-and-defeat .sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #c0d8f0 0%, #fff0d0 100%);
  animation: ad-sky 10s ease-in-out infinite;
}
.scn-alarum-and-defeat .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 55%;
  background: linear-gradient(180deg, #d0b070 0%, #b08a50 100%);
  clip-path: polygon(0 20%, 10% 10%, 20% 22%, 30% 8%, 40% 18%, 50% 12%, 60% 20%, 70% 9%, 80% 17%, 90% 11%, 100% 19%, 100% 100%, 0 100%);
  animation: ad-ground 3s ease-in-out infinite;
}
.scn-alarum-and-defeat .french-flag {
  position: absolute; bottom: 35%; left: 20%; width: 8px; height: 40px;
  background: #a0461a;
  border-radius: 2px;
  transform-origin: bottom center;
  animation: ad-flag 2s ease-in-out infinite alternate;
}
.scn-alarum-and-defeat .french-soldier {
  position: absolute; bottom: 30%; left: 15%; width: 20px; height: 45px;
  background: #2a1a0a;
  border-radius: 30% 30% 20% 20% / 40% 40% 20% 20%;
  animation: ad-soldier-f 2.5s ease-in-out infinite;
}
.scn-alarum-and-defeat .english-flag {
  position: absolute; bottom: 35%; right: 25%; width: 8px; height: 40px;
  background: #c8553d;
  border-radius: 2px;
  transform-origin: bottom center;
  animation: ad-flag 1.8s ease-in-out infinite alternate-reverse;
}
.scn-alarum-and-defeat .english-soldier {
  position: absolute; bottom: 30%; right: 20%; width: 22px; height: 48px;
  background: #1a0a00;
  border-radius: 30% 30% 20% 20% / 40% 40% 20% 20%;
  animation: ad-soldier-e 2s ease-in-out infinite;
}
.scn-alarum-and-defeat .dust {
  position: absolute; bottom: 25%; left: 35%; width: 60px; height: 20px;
  background: rgba(200,160,100,0.4);
  border-radius: 50%;
  filter: blur(6px);
  animation: ad-dust 6s ease-in-out infinite;
}
@keyframes ad-sky {
  0% { opacity: 0.8; }
  50% { opacity: 0.6; }
  100% { opacity: 0.9; }
}
@keyframes ad-ground {
  0% { transform: translateX(0); }
  50% { transform: translateX(-3px); }
  100% { transform: translateX(0); }
}
@keyframes ad-flag {
  0% { transform: rotate(-15deg); }
  100% { transform: rotate(15deg); }
}
@keyframes ad-soldier-f {
  0% { transform: translateX(0) rotate(0deg); }
  25% { transform: translateX(-5px) rotate(-5deg); }
  50% { transform: translateX(-10px) rotate(0deg); }
  75% { transform: translateX(-15px) rotate(5deg); }
  100% { transform: translateX(-20px) rotate(0deg); }
}
@keyframes ad-soldier-e {
  0% { transform: translateX(0) rotate(0deg); }
  25% { transform: translateX(5px) rotate(5deg); }
  50% { transform: translateX(10px) rotate(0deg); }
  75% { transform: translateX(15px) rotate(-5deg); }
  100% { transform: translateX(20px) rotate(0deg); }
}
@keyframes ad-dust {
  0% { transform: scale(1) translateX(0); opacity: 0.4; }
  50% { transform: scale(1.3) translateX(10px); opacity: 0.2; }
  100% { transform: scale(1) translateX(20px); opacity: 0.4; }
}

/* salisbury-ferocity */
.scn-salisbury-ferocity {
  background: linear-gradient(180deg, #f0e8b0 0%, #e0c870 30%, #d0a040 100%), radial-gradient(ellipse at 30% 40%, #ffe080 0%, transparent 70%);
}
.scn-salisbury-ferocity .sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #ffe8a0 0%, #ffd060 100%);
  animation: sf-sky 5s ease-in-out infinite;
}
.scn-salisbury-ferocity .sun {
  position: absolute; top: 10%; left: 15%; width: 40px; height: 40px;
  background: radial-gradient(circle, #ffee88 0%, #ffcc44 50%, #ff8800 100%);
  border-radius: 50%;
  animation: sf-sun 3s ease-in-out infinite;
}
.scn-salisbury-ferocity .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #b09050 0%, #7a5a30 100%);
  border-radius: 30% 20% 0 0 / 40% 30% 0 0;
  animation: sf-ground 4s ease-in-out infinite;
}
.scn-salisbury-ferocity .salisbury {
  position: absolute; bottom: 20%; left: 25%; width: 40px; height: 80px;
  background: #1a0a00;
  border-radius: 30% 30% 20% 20% / 50% 50% 20% 20%;
  transform-origin: bottom center;
  animation: sf-salisbury 1.8s ease-in-out infinite;
}
.scn-salisbury-ferocity .lion {
  position: absolute; bottom: 25%; left: 50%; width: 60px; height: 40px;
  background: #4a2a10;
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  clip-path: polygon(20% 0%, 80% 0%, 100% 30%, 90% 50%, 70% 60%, 50% 70%, 30% 60%, 10% 50%, 0% 30%);
  animation: sf-lion 2.5s ease-in-out infinite;
}
.scn-salisbury-ferocity .sword {
  position: absolute; bottom: 55%; left: 35%; width: 6px; height: 50px;
  background: linear-gradient(180deg, #d0d0d0 0%, #707070 100%);
  border-radius: 2px;
  transform-origin: bottom center;
  animation: sf-sword 1.5s ease-in-out infinite;
}
.scn-salisbury-ferocity .shield {
  position: absolute; bottom: 28%; left: 20%; width: 30px; height: 40px;
  background: #8a3010;
  border-radius: 30% 30% 20% 20% / 40% 40% 20% 20%;
  animation: sf-shield 2s ease-in-out infinite alternate;
}
@keyframes sf-sky {
  0% { opacity: 0.9; }
  50% { opacity: 0.6; }
  100% { opacity: 0.8; }
}
@keyframes sf-sun {
  0% { transform: scale(1) rotate(0deg); }
  50% { transform: scale(1.15) rotate(15deg); }
  100% { transform: scale(1) rotate(0deg); }
}
@keyframes sf-ground {
  0% { transform: translateY(0); }
  50% { transform: translateY(-4px) scaleY(1.03); }
  100% { transform: translateY(0); }
}
@keyframes sf-salisbury {
  0% { transform: translateY(0) rotate(-5deg); }
  25% { transform: translateY(-8px) rotate(5deg); }
  50% { transform: translateY(-4px) rotate(-3deg); }
  75% { transform: translateY(-12px) rotate(8deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes sf-lion {
  0% { transform: translateX(0) scaleX(1); }
  50% { transform: translateX(10px) scaleX(1.1); }
  100% { transform: translateX(0) scaleX(1); }
}
@keyframes sf-sword {
  0% { transform: rotate(-20deg); }
  50% { transform: rotate(30deg); }
  100% { transform: rotate(-20deg); }
}
@keyframes sf-shield {
  0% { transform: translateX(0) rotate(0deg); }
  100% { transform: translateX(-5px) rotate(-10deg); }
}

/* fear-of-english */
.scn-fear-of-english {
  background: linear-gradient(180deg, #c0d8e8 0%, #e8e0c0 50%, #b08040 100%), radial-gradient(ellipse at 20% 40%, #f0e0c0 0%, transparent 70%);
}
.scn-fear-of-english .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #d0e0f0 0%, #f0e8c0 100%);
  animation: fe-sky 8s ease-in-out infinite;
}
.scn-fear-of-english .wall {
  position: absolute; bottom: 20%; left: 10%; right: 10%; height: 50%;
  background: repeating-linear-gradient(0deg, #7a5a3a 0px, #7a5a3a 15px, #5a3a1a 15px, #5a3a1a 30px);
  border-radius: 20% 20% 0 0;
  animation: fe-wall 6s ease-in-out infinite;
}
.scn-fear-of-english .clockwork {
  position: absolute; bottom: 15%; left: 30%; width: 50px; height: 90px;
  background: linear-gradient(180deg, #4a4a4a 0%, #2a2a2a 50%, #1a1a1a 100%);
  border-radius: 20% 20% 10% 10% / 30% 30% 10% 10%;
  transform-origin: bottom center;
  animation: fe-clockwork 2s ease-in-out infinite;
}
.scn-fear-of-english .gear-a {
  position: absolute; bottom: 55%; left: 35%; width: 30px; height: 30px;
  background: radial-gradient(circle, #d0a060 30%, #8a6020 60%, #4a3010 100%);
  border-radius: 50%;
  animation: fe-gear 3s linear infinite;
}
.scn-fear-of-english .gear-b {
  position: absolute; bottom: 55%; left: 45%; width: 20px; height: 20px;
  background: radial-gradient(circle, #d0a060 30%, #8a6020 60%, #4a3010 100%);
  border-radius: 50%;
  animation: fe-gear 2.5s linear infinite reverse;
}
.scn-fear-of-english .french-flee {
  position: absolute; bottom: 20%; right: 15%; width: 22px; height: 50px;
  background: #2a1a0a;
  border-radius: 30% 30% 20% 20% / 40% 40% 20% 20%;
  animation: fe-flee 2s ease-in-out infinite;
}
@keyframes fe-sky {
  0% { opacity: 0.8; }
  50% { opacity: 0.5; }
  100% { opacity: 0.9; }
}
@keyframes fe-wall {
  0% { transform: scaleY(1) scaleX(1); }
  50% { transform: scaleY(1.02) scaleX(0.98); }
  100% { transform: scaleY(1) scaleX(1); }
}
@keyframes fe-clockwork {
  0% { transform: translateY(0) rotate(-2deg) scaleY(1); }
  25% { transform: translateY(-5px) rotate(2deg) scaleY(1.02); }
  50% { transform: translateY(2px) rotate(-1deg) scaleY(0.98); }
  75% { transform: translateY(-8px) rotate(3deg) scaleY(1.03); }
  100% { transform: translateY(0) rotate(0deg) scaleY(1); }
}
@keyframes fe-gear {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}
@keyframes fe-flee {
  0% { transform: translateX(0) rotate(0deg); }
  33% { transform: translateX(-8px) rotate(-10deg); }
  66% { transform: translateX(-16px) rotate(5deg); }
  100% { transform: translateX(-24px) rotate(0deg); }
}

.scn-fastolfe-flees { background: linear-gradient(180deg, #0a0a2a 0%, #1a1a3e 40%, #2c2244 70%, #4a3a6e 100%), radial-gradient(ellipse at 50% 0%, #2c2244 0%, transparent 50%); }
.scn-fastolfe-flees .moon { position:absolute; top:8%; left:70%; width:40px; height:40px; background: radial-gradient(circle, #c0d0e0 0%, #a0b0c0 70%, transparent 100%); border-radius:50%; box-shadow: 0 0 30px 10px rgba(160,176,192,0.3); animation: ff-moon 20s ease-in-out infinite alternate; }
.scn-fastolfe-flees .sky { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #0a0a2a 0%, #1a1a3e 50%, transparent 100%); }
.scn-fastolfe-flees .ground { position:absolute; bottom:0; left:0; right:0; height:50%; background: linear-gradient(180deg, #1a2a1a 0%, #0a1a0a 100%); border-radius: 30% 70% 0 0 / 50% 50% 0 0; }
.scn-fastolfe-flees .figure { position:absolute; bottom:20%; left:20%; width:20px; height:50px; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ff-figure 2s ease-in-out infinite; }
.scn-fastolfe-flees .cape { position:absolute; bottom:38%; left:18%; width:30px; height:20px; background: linear-gradient(180deg, #3a2a4a 0%, #2a1a3a 100%); border-radius: 50% 50% 0 0; transform-origin: top center; animation: ff-cape 0.8s ease-in-out infinite alternate; }
.scn-fastolfe-flees .shadow { position:absolute; bottom:18%; left:20%; width:30px; height:8px; background: rgba(0,0,0,0.5); border-radius:50%; animation: ff-shadow 2s ease-in-out infinite; }
.scn-fastolfe-flees .tree-1, .scn-fastolfe-flees .tree-2 { position:absolute; bottom:30%; width:10px; height:60px; background: linear-gradient(180deg, #2a3a2a 0%, #1a2a1a 100%); border-radius: 5px; transform-origin: bottom center; animation: ff-tree 6s ease-in-out infinite alternate; }
.scn-fastolfe-flees .tree-1 { left:60%; animation-delay: 0s; }
.scn-fastolfe-flees .tree-2 { left:80%; width:8px; height:45px; animation-delay: 2s; }
@keyframes ff-moon { 0% { opacity:0.7; transform: translateY(0); } 50% { opacity:0.9; transform: translateY(-5px); } 100% { opacity:0.7; transform: translateY(0); } }
@keyframes ff-figure { 0% { transform: translateX(0) translateY(0) rotate(-2deg); } 25% { transform: translateX(10px) translateY(-2px) rotate(2deg); } 50% { transform: translateX(20px) translateY(0) rotate(-2deg); } 75% { transform: translateX(30px) translateY(-2px) rotate(2deg); } 100% { transform: translateX(40px) translateY(0) rotate(0); } }
@keyframes ff-cape { 0% { transform: rotate(-10deg); } 50% { transform: rotate(10deg); } 100% { transform: rotate(-10deg); } }
@keyframes ff-shadow { 0% { transform: scaleY(1); opacity:0.6; } 50% { transform: scaleY(1.2); opacity:0.4; } 100% { transform: scaleY(1); opacity:0.6; } }
@keyframes ff-tree { 0% { transform: rotate(-2deg); } 50% { transform: rotate(2deg); } 100% { transform: rotate(-2deg); } }

.scn-bedford-dies { background: linear-gradient(180deg, #0a0a1a 0%, #10102a 50%, #151530 100%), radial-gradient(ellipse at 50% 80%, #151530 0%, transparent 60%); }
.scn-bedford-dies .bg-dark { position:absolute; inset:0; background: radial-gradient(ellipse at 50% 70%, #1a1a30 0%, #0a0a1a 100%); }
.scn-bedford-dies .chair { position:absolute; bottom:20%; left:50%; width:60px; height:80px; background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%); border-radius: 10px; transform: translateX(-50%); box-shadow: 0 5px 10px rgba(0,0,0,0.7); }
.scn-bedford-dies .body { position:absolute; bottom:35%; left:50%; width:30px; height:40px; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform: translateX(-50%); animation: bd-body 4s ease-in-out infinite; }
.scn-bedford-dies .carrier-l, .scn-bedford-dies .carrier-r { position:absolute; bottom:20%; width:20px; height:50px; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; animation: bd-carrier 3s ease-in-out infinite; }
.scn-bedford-dies .carrier-l { left:35%; }
.scn-bedford-dies .carrier-r { right:35%; animation-delay: 1.5s; }
.scn-bedford-dies .torch { position:absolute; bottom:15%; left:50%; width:6px; height:20px; background: linear-gradient(180deg, #a08060 0%, #604020 100%); border-radius: 3px; transform: translateX(-50%); }
.scn-bedford-dies .glow { position:absolute; bottom:15%; left:50%; width:40px; height:40px; background: radial-gradient(circle, #c08040 0%, rgba(192,128,64,0.3) 50%, transparent 100%); border-radius:50%; transform: translate(-50%, 30%); animation: bd-torch 2s ease-in-out infinite alternate; }
@keyframes bd-body { 0% { transform: translateX(-50%) scaleY(1); } 50% { transform: translateX(-50%) scaleY(0.95); } 100% { transform: translateX(-50%) scaleY(1); } }
@keyframes bd-carrier { 0% { transform: translateY(0) rotate(-1deg); } 25% { transform: translateY(-2px) rotate(1deg); } 50% { transform: translateY(0) rotate(-1deg); } 75% { transform: translateY(-2px) rotate(1deg); } 100% { transform: translateY(0) rotate(0); } }
@keyframes bd-torch { 0% { opacity:0.7; transform: translate(-50%, 30%) scale(0.9); } 50% { opacity:1; transform: translate(-50%, 30%) scale(1.1); } 100% { opacity:0.7; transform: translate(-50%, 30%) scale(0.9); } }

.scn-victory-joy { background: linear-gradient(180deg, #1a0a1a 0%, #2a1a0a 40%, #3a2a1a 70%, #4a3a2a 100%), radial-gradient(ellipse at 50% 0%, #2a1a0a 0%, transparent 50%); }
.scn-victory-joy .moon { position:absolute; top:8%; right:65%; width:35px; height:35px; background: radial-gradient(circle, #e0c0a0 0%, #c0a080 70%, transparent 100%); border-radius:50%; box-shadow: 0 0 20px 8px rgba(192,160,128,0.4); animation: vj-moon 20s ease-in-out infinite alternate; }
.scn-victory-joy .sky-joy { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #0a0a1a 0%, #1a1a2a 50%, transparent 100%); }
.scn-victory-joy .ground-joy { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, #2a3a2a 0%, #1a2a1a 100%); border-radius: 40% 60% 0 0 / 60% 40% 0 0; }
.scn-victory-joy .talbot { position:absolute; bottom:25%; left:30%; width:25px; height:55px; background: linear-gradient(180deg, #3a3a2a 0%, #2a2a1a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: vj-figure 4s ease-in-out infinite; }
.scn-victory-joy .burgundy { position:absolute; bottom:25%; right:30%; width:25px; height:55px; background: linear-gradient(180deg, #4a3a2a 0%, #3a2a1a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: vj-figure 4s ease-in-out infinite alternate; }
.scn-victory-joy .banner { position:absolute; bottom:40%; left:50%; width:8px; height:60px; background: linear-gradient(180deg, #c0a060 0%, #a08040 100%); transform-origin: bottom center; animation: vj-banner 3s ease-in-out infinite; }
.scn-victory-joy .sparkle-1, .scn-victory-joy .sparkle-2 { position:absolute; width:6px; height:6px; background: radial-gradient(circle, #e0c080 0%, transparent 100%); border-radius:50%; animation: vj-sparkle 2s ease-in-out infinite; }
.scn-victory-joy .sparkle-1 { top:20%; left:20%; animation-delay: 0s; }
.scn-victory-joy .sparkle-2 { top:15%; right:25%; animation-delay: 1s; }
@keyframes vj-moon { 0% { opacity:0.8; transform: translateY(0); } 50% { opacity:1; transform: translateY(-3px); } 100% { opacity:0.8; transform: translateY(3px); } }
@keyframes vj-figure { 0% { transform: translateY(0) rotate(-2deg); } 25% { transform: translateY(-5px) rotate(2deg); } 50% { transform: translateY(0) rotate(-2deg); } 75% { transform: translateY(-5px) rotate(2deg); } 100% { transform: translateY(0) rotate(0); } }
@keyframes vj-banner { 0% { transform: rotate(-5deg); } 25% { transform: rotate(5deg); } 50% { transform: rotate(-3deg); } 75% { transform: rotate(3deg); } 100% { transform: rotate(-5deg); } }
@keyframes vj-sparkle { 0% { opacity:0; transform: scale(0.5); } 50% { opacity:1; transform: scale(1.5); } 100% { opacity:0; transform: scale(0.5); } }

.scn-plot-to-burgundy { background: linear-gradient(180deg, #e0d0b0 0%, #c0b090 50%, #a09070 100%), radial-gradient(ellipse at 50% 0%, #f0e0c0 0%, transparent 70%); }
.scn-plot-to-burgundy .wall { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #d0c0a0 0%, #b0a080 100%); }
.scn-plot-to-burgundy .window { position:absolute; top:10%; left:70%; width:30px; height:50px; background: linear-gradient(180deg, #a0c0e0 0%, #80a0c0 100%); border: 2px solid #8a7a6a; box-shadow: inset 0 0 10px rgba(255,255,200,0.3); animation: pb-sunbeam 10s ease-in-out infinite; }
.scn-plot-to-burgundy .floor { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #8a7a6a 0%, #6a5a4a 100%); }
.scn-plot-to-burgundy .table { position:absolute; bottom:15%; left:40%; width:60px; height:20px; background: linear-gradient(180deg, #6a5a4a 0%, #5a4a3a 100%); border-radius: 5px; transform: translateX(-50%); }
.scn-plot-to-burgundy .joan { position:absolute; bottom:25%; left:35%; width:20px; height:40px; background: linear-gradient(180deg, #3a4a5a 0%, #2a3a4a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: pb-joan 2s ease-in-out infinite alternate; }
.scn-plot-to-burgundy .map { position:absolute; bottom:18%; left:42%; width:30px; height:20px; background: #c0b090; border-radius: 2px; transform: rotate(5deg); animation: pb-map 4s ease-in-out infinite alternate; }
.scn-plot-to-burgundy .quill { position:absolute; bottom:28%; left:45%; width:4px; height:20px; background: linear-gradient(180deg, #e0d0c0 0%, #c0b0a0 100%); border-radius: 2px; transform-origin: bottom center; animation: pb-quill 1.5s ease-in-out infinite alternate; }
@keyframes pb-sunbeam { 0% { opacity:0.7; transform: rotate(-2deg); } 50% { opacity:1; transform: rotate(2deg); } 100% { opacity:0.7; transform: rotate(-2deg); } }
@keyframes pb-joan { 0% { transform: translateY(0) rotate(-3deg); } 50% { transform: translateY(-2px) rotate(3deg); } 100% { transform: translateY(0) rotate(-3deg); } }
@keyframes pb-map { 0% { transform: rotate(3deg); } 50% { transform: rotate(7deg); } 100% { transform: rotate(3deg); } }
@keyframes pb-quill { 0% { transform: rotate(-15deg); } 50% { transform: rotate(15deg); } 100% { transform: rotate(-15deg); } }

.scn-king-urges-peace{background:linear-gradient(180deg,#f5e6c8,#d4b896,#b89a70),radial-gradient(ellipse at 50%80%,#e8d5b0,transparent 70%)}
.scn-king-urges-peace .bg{position:absolute;inset:0 0 30% 0;background:linear-gradient(180deg,#d4c4a8,#b89a70 60%,#8a6e50);animation:kp-bg 30s ease infinite}
.scn-king-urges-peace .floor{position:absolute;bottom:0;left:0;right:0;height:30%;background:linear-gradient(180deg,#8a6e50,#5a4a34);border-radius:30% 30% 0 0;animation:kp-floor 20s ease-in-out infinite alternate}
.scn-king-urges-peace .window-ll{position:absolute;top:10%;left:10%;width:20%;height:40%;background:linear-gradient(135deg,#d4c4a8 20%,#f5e6c8 50%,#d4c4a8 80%);border-radius:5%;box-shadow:inset 0 0 20px rgba(0,0,0,.2);animation:kp-window 25s ease infinite}
.scn-king-urges-peace .throne{position:absolute;bottom:30%;left:50%;width:120px;height:80px;transform:translateX(-50%);background:linear-gradient(180deg,#b89a70,#8a6e50);border-radius:10% 10% 5% 5%;box-shadow:0 5px 15px rgba(0,0,0,.4);animation:kp-throne 12s ease-in-out infinite alternate}
.scn-king-urges-peace .king{position:absolute;bottom:35%;left:50%;width:50px;height:70px;transform:translateX(-50%) translateY(-10px);background:radial-gradient(ellipse at 50%30%,#e8d5b0 0%,#b89a70 60%,#5a4a34 100%);border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;animation:kp-king 8s ease-in-out infinite}
.scn-king-urges-peace .peer-left{position:absolute;bottom:30%;left:30%;width:40px;height:65px;background:linear-gradient(180deg,#8a6e50,#5a4a34);border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;animation:kp-peer 10s ease-in-out infinite}
.scn-king-urges-peace .peer-right{position:absolute;bottom:30%;right:30%;width:40px;height:65px;background:linear-gradient(180deg,#8a6e50,#5a4a34);border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;animation:kp-peer 10s ease-in-out infinite reverse}
.scn-king-urges-peace .candle-1{position:absolute;bottom:30%;left:20%;width:8px;height:25px;background:linear-gradient(180deg,#f5e6c8 30%,#d4c4a8 60%,#8a6e50);border-radius:2px;box-shadow:0 0 10px #f5e6c8;animation:kp-flame 3s ease-in-out infinite}
.scn-king-urges-peace .candle-2{position:absolute;bottom:30%;right:20%;width:8px;height:25px;background:linear-gradient(180deg,#f5e6c8 30%,#d4c4a8 60%,#8a6e50);border-radius:2px;box-shadow:0 0 10px #f5e6c8;animation:kp-flame 3s ease-in-out infinite reverse}
@keyframes kp-bg{0%,100%{opacity:.9}50%{opacity:1}}
@keyframes kp-floor{0%{transform:translateY(0)}50%{transform:translateY(-2px)}100%{transform:translateY(0)}}
@keyframes kp-window{0%{opacity:.95;transform:scale(1)}50%{opacity:1;transform:scale(1.02)}100%{opacity:.95;transform:scale(1)}}
@keyframes kp-throne{0%{transform:translateX(-50%) translateY(0)}50%{transform:translateX(-50%) translateY(-3px)}100%{transform:translateX(-50%) translateY(0)}}
@keyframes kp-king{0%{transform:translateX(-50%) translateY(-10px) rotate(-1deg)}25%{transform:translateX(-48%) translateY(-12px) rotate(1deg)}50%{transform:translateX(-50%) translateY(-10px) rotate(-1deg)}75%{transform:translateX(-52%) translateY(-12px) rotate(1deg)}100%{transform:translateX(-50%) translateY(-10px) rotate(0)}}
@keyframes kp-peer{0%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-3px) rotate(2deg)}100%{transform:translateY(0) rotate(-2deg)}}
@keyframes kp-flame{0%{transform:scaleY(1);opacity:.9}50%{transform:scaleY(1.2);opacity:1}100%{transform:scaleY(1);opacity:.9}}

.scn-mayor-complains{background:linear-gradient(180deg,#e8d5b0,#d4c4a8,#b89a70),radial-gradient(ellipse at 40%30%,#f5e6c8,transparent 60%)}
.scn-mayor-complains .bg{position:absolute;inset:0 0 25% 0;background:linear-gradient(180deg,#d4c4a8,#8a6e50);animation:mc-bg 10s ease infinite}
.scn-mayor-complains .floor{position:absolute;bottom:0;left:0;right:0;height:25%;background:linear-gradient(180deg,#8a6e50,#5a4a34);border-radius:20% 20% 0 0}
.scn-mayor-complains .wall{position:absolute;top:10%;left:5%;width:30%;height:50%;background:linear-gradient(180deg,#e8d5b0,#d4c4a8);border:2px solid #b89a70;box-shadow:inset 0 0 10px rgba(0,0,0,.3);animation:mc-wall 12s ease-in-out infinite alternate}
.scn-mayor-complains .mayor{position:absolute;bottom:25%;left:35%;width:45px;height:70px;background:radial-gradient(ellipse at 50%20%,#b89a70 0%,#5a4a34 80%);border-radius:50% 50% 30% 30% / 60% 60% 40% 40%;transform-origin:bottom center;animation:mc-mayor 4s ease-in-out infinite}
.scn-mayor-complains .citizen-1{position:absolute;bottom:22%;left:50%;width:40px;height:60px;background:linear-gradient(180deg,#8a6e50,#3a2a1a);border-radius:50% 50% 30% 30% / 60% 60% 40% 40%;animation:mc-citizen 5s ease-in-out infinite}
.scn-mayor-complains .citizen-2{position:absolute;bottom:20%;right:25%;width:40px;height:55px;background:linear-gradient(180deg,#8a6e50,#3a2a1a);border-radius:50% 50% 30% 30% / 60% 60% 40% 40%;animation:mc-citizen 5s ease-in-out infinite .5s}
.scn-mayor-complains .stones{position:absolute;bottom:28%;left:55%;width:20px;height:15px;background:radial-gradient(circle,#5a4a34 30%,#3a2a1a 80%);border-radius:50%;animation:mc-stones 3s ease-in-out infinite}
.scn-mayor-complains .torch{position:absolute;top:15%;left:60%;width:10px;height:30px;background:linear-gradient(180deg,#f5e6c8 20%,#e8d5b0 50%,#b89a70);border-radius:3px;box-shadow:0 0 20px #f5e6c8;animation:mc-torch 4s ease-in-out infinite}
@keyframes mc-bg{0%,100%{opacity:.9}50%{opacity:1}}
@keyframes mc-wall{0%{transform:rotate(-1deg)}50%{transform:rotate(1deg)}100%{transform:rotate(-1deg)}}
@keyframes mc-mayor{0%{transform:rotate(-5deg) translateY(0)}25%{transform:rotate(2deg) translateY(-2px)}50%{transform:rotate(-3deg) translateY(0)}75%{transform:rotate(4deg) translateY(-2px)}100%{transform:rotate(-5deg) translateY(0)}}
@keyframes mc-citizen{0%{transform:translateY(0) rotate(-2deg)}25%{transform:translateY(-3px) rotate(1deg)}50%{transform:translateY(0) rotate(2deg)}75%{transform:translateY(-3px) rotate(-1deg)}100%{transform:translateY(0) rotate(-2deg)}}
@keyframes mc-stones{0%{transform:translate(0,0) rotate(0)}25%{transform:translate(2px,-2px) rotate(10deg)}50%{transform:translate(-1px,1px) rotate(-5deg)}75%{transform:translate(3px,-1px) rotate(15deg)}100%{transform:translate(0,0) rotate(0)}}
@keyframes mc-torch{0%{transform:scaleY(1);opacity:.9}50%{transform:scaleY(1.3);opacity:1}100%{transform:scaleY(1);opacity:.9}}

.scn-servingmen-brawl{background:linear-gradient(180deg,#d4c4a8,#b89a70,#8a6e50),radial-gradient(ellipse at 60%50%,#e8d5b0,transparent 80%)}
.scn-servingmen-brawl .bg{position:absolute;inset:0 0 35% 0;background:linear-gradient(180deg,#b89a70,#5a4a34);animation:sb-bg 8s ease infinite}
.scn-servingmen-brawl .floor{position:absolute;bottom:0;left:0;right:0;height:35%;background:linear-gradient(180deg,#5a4a34,#3a2a1a);border-radius:10% 10% 0 0}
.scn-servingmen-brawl .s1-left{position:absolute;bottom:30%;left:30%;width:50px;height:70px;background:radial-gradient(ellipse at 50%30%,#8a6e50 0%,#3a2a1a 80%);border-radius:50% 50% 30% 30% / 60% 60% 40% 40%;transform-origin:bottom center;animation:sb-fight 2s ease-in-out infinite}
.scn-servingmen-brawl .s1-right{position:absolute;bottom:30%;right:30%;width:50px;height:70px;background:radial-gradient(ellipse at 50%30%,#8a6e50 0%,#3a2a1a 80%);border-radius:50% 50% 30% 30% / 60% 60% 40% 40%;transform-origin:bottom center;animation:sb-fight 2s ease-in-out infinite .7s}
.scn-servingmen-brawl .blood-spot-1{position:absolute;bottom:35%;left:40%;width:10px;height:10px;background:radial-gradient(circle,#702243 0%,#5e1a1d 70%);border-radius:50%;animation:sb-blood 3s ease-in-out infinite}
.scn-servingmen-brawl .blood-spot-2{position:absolute;bottom:32%;right:45%;width:8px;height:8px;background:radial-gradient(circle,#702243 0%,#5e1a1d 70%);border-radius:50%;animation:sb-blood 3s ease-in-out infinite 1.5s}
.scn-servingmen-brawl .weapon-1{position:absolute;bottom:35%;left:35%;width:3px;height:20px;background:#5a4a34;border-radius:2px;transform:rotate(30deg);animation:sb-weapon 1.5s ease-in-out infinite}
.scn-servingmen-brawl .weapon-2{position:absolute;bottom:35%;right:35%;width:3px;height:20px;background:#5a4a34;border-radius:2px;transform:rotate(-30deg);animation:sb-weapon 1.5s ease-in-out infinite .75s}
@keyframes sb-bg{0%,100%{opacity:.85}50%{opacity:1}}
@keyframes sb-fight{0%{transform:translateX(0) rotate(-5deg)}25%{transform:translateX(8px) rotate(3deg)}50%{transform:translateX(0) rotate(5deg)}75%{transform:translateX(-8px) rotate(-3deg)}100%{transform:translateX(0) rotate(-5deg)}}
@keyframes sb-blood{0%{opacity:0;transform:scale(0)}50%{opacity:1;transform:scale(1.5)}100%{opacity:0;transform:scale(0)}}
@keyframes sb-weapon{0%{transform:rotate(30deg) translateY(0)}50%{transform:rotate(20deg) translateY(-3px)}100%{transform:rotate(30deg) translateY(0)}}

.scn-king-begs-for-peace{background:linear-gradient(180deg,#f5e6c8,#e8d5b0,#d4c4a8),radial-gradient(ellipse at 50%60%,#f5e6c8,transparent 60%)}
.scn-king-begs-for-peace .bg{position:absolute;inset:0 0 20% 0;background:linear-gradient(180deg,#d4c4a8,#8a6e50);animation:kb-bg 20s ease infinite}
.scn-king-begs-for-peace .floor{position:absolute;bottom:0;left:0;right:0;height:20%;background:linear-gradient(180deg,#8a6e50,#5a4a34);border-radius:40% 40% 0 0}
.scn-king-begs-for-peace .window-arch{position:absolute;top:10%;left:20%;width:30%;height:50%;background:linear-gradient(135deg,#f5e6c8 20%,#e8d5b0 50%,#d4c4a8 80%);border-radius:50% 50% 10% 10% / 30% 30% 10% 10%;box-shadow:inset 0 0 30px rgba(0,0,0,.3);animation:kb-arch 30s ease-in-out infinite alternate}
.scn-king-begs-for-peace .king-kneeling{position:absolute;bottom:20%;left:45%;width:50px;height:60px;background:radial-gradient(ellipse at 50%30%,#e8d5b0 0%,#8a6e50 70%,#3a2a1a 100%);border-radius:50% 50% 30% 30% / 60% 60% 40% 40%;transform-origin:bottom center;animation:kb-king 6s ease-in-out infinite}
.scn-king-begs-for-peace .lord-left{position:absolute;bottom:25%;left:25%;width:45px;height:70px;background:linear-gradient(180deg,#b89a70,#5a4a34);border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;animation:kb-lord 10s ease-in-out infinite}
.scn-king-begs-for-peace .lord-right{position:absolute;bottom:25%;right:25%;width:45px;height:70px;background:linear-gradient(180deg,#b89a70,#5a4a34);border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;animation:kb-lord 10s ease-in-out infinite reverse}
.scn-king-begs-for-peace .tear-1{position:absolute;bottom:40%;left:48%;width:4px;height:4px;background:radial-gradient(circle,#e8d5b0 30%,transparent 70%);border-radius:50%;animation:kb-tear 4s ease-in-out infinite}
.scn-king-begs-for-peace .tear-2{position:absolute;bottom:38%;left:52%;width:4px;height:4px;background:radial-gradient(circle,#e8d5b0 30%,transparent 70%);border-radius:50%;animation:kb-tear 4s ease-in-out infinite 2s}
.scn-king-begs-for-peace .candle{position:absolute;bottom:20%;left:10%;width:8px;height:25px;background:linear-gradient(180deg,#f5e6c8 20%,#e8d5b0 50%,#b89a70);border-radius:2px;box-shadow:0 0 15px #f5e6c8;animation:kb-flame 3s ease-in-out infinite}
@keyframes kb-bg{0%,100%{opacity:.9}50%{opacity:1}}
@keyframes kb-arch{0%{transform:scale(1) rotate(-1deg)}50%{transform:scale(1.02) rotate(1deg)}100%{transform:scale(1) rotate(-1deg)}}
@keyframes kb-king{0%{transform:translateY(0) rotate(-3deg)}25%{transform:translateY(-2px) rotate(2deg)}50%{transform:translateY(0) rotate(-1deg)}75%{transform:translateY(-2px) rotate(3deg)}100%{transform:translateY(0) rotate(-3deg)}}
@keyframes kb-lord{0%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-3px) rotate(2deg)}100%{transform:translateY(0) rotate(-2deg)}}
@keyframes kb-tear{0%{opacity:0;transform:translateY(0) scale(0)}25%{opacity:1;transform:translateY(5px) scale(1)}50%{opacity:1;transform:translateY(10px) scale(.8)}75%{opacity:.5;transform:translateY(15px) scale(.5)}100%{opacity:0;transform:translateY(20px) scale(0)}}
@keyframes kb-flame{0%{transform:scaleY(1);opacity:.9}50%{transform:scaleY(1.2);opacity:1}100%{transform:scaleY(1);opacity:.9}}

.scn-mortimer-explains {
  background: linear-gradient(180deg, #1a1410 0%, #2a1e18 50%, #0f0a08 100%), radial-gradient(ellipse at 50% 100%, #2a1e18 0%, transparent 80%);
}
.scn-mortimer-explains .wall-bg { position: absolute; inset: 0; background: radial-gradient(ellipse at 50% 50%, #3a2820 0%, #1a1410 80%); }
.scn-mortimer-explains .wall-fg-left { position: absolute; top: 0; left: 0; width: 15%; height: 100%; background: linear-gradient(90deg, #0f0a08, #1a1410, #0f0a08); border-radius: 4px; box-shadow: 4px 0 8px rgba(0,0,0,0.6); }
.scn-mortimer-explains .wall-fg-right { position: absolute; top: 0; right: 0; width: 15%; height: 100%; background: linear-gradient(90deg, #0f0a08, #1a1410, #0f0a08); border-radius: 4px; box-shadow: -4px 0 8px rgba(0,0,0,0.6); }
.scn-mortimer-explains .torch { position: absolute; top: 25%; right: 22%; width: 20px; height: 30px; background: radial-gradient(circle, #ffd060 0%, #c08040 50%, #2a1e18 100%); border-radius: 50% 50% 20% 20%; animation: me-burn 2s ease-in-out infinite alternate; }
.scn-mortimer-explains .torch-light { position: absolute; top: 15%; right: 10%; width: 120px; height: 120px; background: radial-gradient(circle, rgba(192,128,64,0.4) 0%, transparent 70%); border-radius: 50%; animation: me-flicker 0.8s ease-in-out infinite alternate; }
.scn-mortimer-explains .figure-mortimer { position: absolute; bottom: 22%; left: 28%; width: 14%; height: 45%; background: linear-gradient(180deg, #3a2a1a, #1a1410); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: me-speak 5s ease-in-out infinite; }
.scn-mortimer-explains .figure-richard { position: absolute; bottom: 22%; right: 28%; width: 13%; height: 40%; background: linear-gradient(180deg, #2a1e18, #0f0a08); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: me-listen 5s ease-in-out infinite; }
.scn-mortimer-explains .window-bars { position: absolute; top: 12%; left: 10%; width: 12%; height: 22%; border: 6px solid #4a3a2a; background: radial-gradient(circle, #4a5a6a 0%, #2a3a4a 80%); border-radius: 4px; box-shadow: inset 0 0 20px rgba(0,0,0,0.6); animation: me-dawn 20s ease-in-out infinite alternate; }
@keyframes me-burn { 0% { transform: scaleY(1) scaleX(1); box-shadow: 0 0 20px 4px #c08040; } 50% { transform: scaleY(1.05) scaleX(0.95); box-shadow: 0 0 30px 6px #ffd060; } 100% { transform: scaleY(0.95) scaleX(1.05); box-shadow: 0 0 15px 2px #a06030; } }
@keyframes me-flicker { 0% { opacity: 0.7; transform: scale(0.95); } 50% { opacity: 1; transform: scale(1.05); } 100% { opacity: 0.8; transform: scale(1); } }
@keyframes me-speak { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(-6px) rotate(-3deg); } 100% { transform: translateX(2px) rotate(2deg); } }
@keyframes me-listen { 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 me-dawn { 0% { opacity: 0.4; box-shadow: inset 0 0 30px rgba(0,0,0,0.8); } 50% { opacity: 0.8; box-shadow: inset 0 0 10px rgba(100,120,140,0.3); } 100% { opacity: 0.5; box-shadow: inset 0 0 40px rgba(0,0,0,0.9); } }

.scn-cambridge-rebellion {
  background: linear-gradient(180deg, #0a0a0f 0%, #1a1512 50%, #0f0a08 100%), radial-gradient(ellipse at 50% 0%, #2a2218 0%, transparent 70%);
}
.scn-cambridge-rebellion .tent-wall { position: absolute; top: 0; left: 0; right: 0; height: 70%; background: linear-gradient(135deg, #1a1512, #2a2218, #1a1512); clip-path: polygon(0 0, 100% 0, 85% 100%, 15% 100%); }
.scn-cambridge-rebellion .table { position: absolute; bottom: 0; left: 5%; right: 5%; height: 35%; background: linear-gradient(180deg, #2a1a10, #1a0f08); border-radius: 12px 12px 0 0; box-shadow: inset 0 8px 12px rgba(0,0,0,0.6); }
.scn-cambridge-rebellion .map { position: absolute; bottom: 22%; left: 15%; right: 15%; height: 20%; background: radial-gradient(ellipse, #4a3a2a, #2a2218); border-radius: 4px; border: 3px solid #6a5a4a; box-shadow: 0 4px 8px rgba(0,0,0,0.4); animation: cr-breathe 8s ease-in-out infinite; }
.scn-cambridge-rebellion .candle { position: absolute; bottom: 36%; left: 25%; width: 14px; height: 45px; background: linear-gradient(180deg, #e0c080, #8a6a3a, #4a3a2a); border-radius: 4px; transform-origin: bottom center; animation: cr-flicker 0.6s ease-in-out infinite alternate; }
.scn-cambridge-rebellion .candle-light { position: absolute; bottom: 30%; left: 20%; width: 80px; height: 80px; background: radial-gradient(circle, #ffd060 0%, #c08040 30%, transparent 70%); border-radius: 50%; animation: cr-glow 3s ease-in-out infinite alternate; }
.scn-cambridge-rebellion .dagger { position: absolute; bottom: 28%; right: 28%; width: 80px; height: 10px; background: linear-gradient(90deg, #8a8a9a, #c0c0d0, #6a6a7a); border-radius: 4px; transform: rotate(-15deg); box-shadow: 0 2px 4px rgba(0,0,0,0.5); animation: cr-polish 10s ease-in-out infinite; }
.scn-cambridge-rebellion .goblet { position: absolute; bottom: 26%; right: 18%; width: 24px; height: 32px; background: linear-gradient(180deg, #6a6a7a, #3a3a4a); border-radius: 0 0 8px 8px; box-shadow: 0 4px 6px rgba(0,0,0,0.5); animation: cr-breathe 8s ease-in-out infinite 2s; }
@keyframes cr-glow { 0% { opacity: 0.6; transform: scale(0.95); box-shadow: 0 0 30px 8px #c08040; } 50% { opacity: 1; transform: scale(1.1); box-shadow: 0 0 60px 16px #ffd060; } 100% { opacity: 0.7; transform: scale(1); box-shadow: 0 0 40px 10px #a06030; } }
@keyframes cr-flicker { 0% { transform: scaleY(1) scaleX(1); opacity: 0.9; } 50% { transform: scaleY(1.08) scaleX(0.95); opacity: 1; } 100% { transform: scaleY(0.95) scaleX(1.02); opacity: 0.85; } }
@keyframes cr-breathe { 0% { transform: scale(1); box-shadow: 0 4px 8px rgba(0,0,0,0.4); } 50% { transform: scale(1.02); box-shadow: 0 6px 12px rgba(0,0,0,0.5); } 100% { transform: scale(0.98); box-shadow: 0 2px 6px rgba(0,0,0,0.3); } }
@keyframes cr-polish { 0% { transform: rotate(-15deg) translateX(0); } 33% { transform: rotate(-10deg) translateX(4px); } 66% { transform: rotate(-20deg) translateX(-2px); } 100% { transform: rotate(-15deg) translateX(0); } }

.scn-mortimers-advice {
  background: linear-gradient(180deg, #6a7a8a 0%, #8a9aaa 50%, #4a5a6a 100%), radial-gradient(ellipse at 50% 20%, #9aaabb 0%, transparent 70%);
}
.scn-mortimers-advice .sky-mist { position: absolute; inset: 0; background: radial-gradient(ellipse at 50% 100%, #8a9aaa 0%, transparent 70%); filter: blur(8px); animation: ma-mist 15s ease-in-out infinite alternate; }
.scn-mortimers-advice .mountain { position: absolute; bottom: 20%; left: 10%; right: 10%; height: 50%; background: linear-gradient(180deg, #3a4a5a, #2a3a4a); clip-path: polygon(20% 100%, 40% 20%, 50% 40%, 70% 10%, 80% 50%, 100% 100%); animation: ma-peak 20s ease-in-out infinite; }
.scn-mortimers-advice .window-frame { position: absolute; inset: 8%; border: 24px solid #2a1e18; background: transparent; box-shadow: inset 0 0 60px rgba(0,0,0,0.8), 0 0 30px rgba(0,0,0,0.6); border-radius: 4px; }
.scn-mortimers-advice .sill { position: absolute; bottom: 8%; left: 5%; right: 5%; height: 12%; background: linear-gradient(180deg, #3a2a1a, #1a1410); border-radius: 8px 8px 0 0; box-shadow: 0 -4px 12px rgba(0,0,0,0.5); }
.scn-mortimers-advice .figure-mortimer-ma { position: absolute; bottom: 20%; left: 22%; width: 12%; height: 45%; background: linear-gradient(180deg, #1a1a2a, #0a0a1a); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ma-advise 6s ease-in-out infinite; }
.scn-mortimers-advice .figure-richard-ma { position: absolute; bottom: 20%; right: 22%; width: 12%; height: 38%; background: linear-gradient(180deg, #1a1a2a, #0a0a1a); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ma-nod 6s ease-in-out infinite; }
.scn-mortimers-advice .coat-of-arms { position: absolute; top: 12%; left: 50%; transform: translateX(-50%); width: 70px; height: 90px; background: linear-gradient(135deg, #c8553d, #8a3a2a, #a0461a); clip-path: polygon(0 0, 100% 0, 100% 80%, 50% 100%, 0 80%); box-shadow: 0 4px 12px rgba(0,0,0,0.6); animation: ma-shimmer 8s ease-in-out infinite alternate; }
@keyframes ma-mist { 0% { opacity: 0.6; transform: translateY(0); } 50% { opacity: 0.9; transform: translateY(-10px); } 100% { opacity: 0.7; transform: translateY(5px); } }
@keyframes ma-peak { 0% { transform: translateY(0) scaleY(1); } 50% { transform: translateY(-4px) scaleY(1.02); } 100% { transform: translateY(2px) scaleY(0.98); } }
@keyframes ma-advise { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(-4px) rotate(-4deg); } 100% { transform: translateX(2px) rotate(2deg); } }
@keyframes ma-nod { 0% { transform: translateY(0) rotate(0deg); } 33% { transform: translateY(-2px) rotate(2deg); } 66% { transform: translateY(1px) rotate(-1deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes ma-shimmer { 0% { box-shadow: 0 4px 12px rgba(0,0,0,0.6); opacity: 0.8; } 50% { box-shadow: 0 0 24px 6px #c8553d; opacity: 1; } 100% { box-shadow: 0 4px 12px rgba(0,0,0,0.6); opacity: 0.85; } }

.scn-richard-mourns {
  background: linear-gradient(180deg, #1a1a2a 0%, #0f0f1a 50%, #05050a 100%), radial-gradient(ellipse at 50% 0%, #2a2a3a 0%, transparent 70%);
}
.scn-richard-mourns .floor { position: absolute; bottom: 0; left: 0; right: 0; height: 20%; background: linear-gradient(180deg, #2a2a3a, #1a1a2a); box-shadow: inset 0 8px 20px rgba(0,0,0,0.6); }
.scn-richard-mourns .pillar-left { position: absolute; top: 0; left: 5%; width: 12%; height: 100%; background: linear-gradient(90deg, #1a1a2a, #2a2a3a, #1a1a2a); border-radius: 8px; box-shadow: 4px 0 12px rgba(0,0,0,0.4); animation: rm-shadow 12s ease-in-out infinite alternate; }
.scn-richard-mourns .pillar-right { position: absolute; top: 0; right: 5%; width: 12%; height: 100%; background: linear-gradient(90deg, #1a1a2a, #2a2a3a, #1a1a2a); border-radius: 8px; box-shadow: -4px 0 12px rgba(0,0,0,0.4); animation: rm-shadow 12s ease-in-out infinite alternate 4s; }
.scn-richard-mourns .divine-light { position: absolute; top: 0; left: 30%; width: 40%; height: 60%; background: radial-gradient(ellipse at 50% 0%, rgba(200,200,220,0.4) 0%, transparent 70%); animation: rm-light 8s ease-in-out infinite alternate; }
.scn-richard-mourns .figure-kneeling { position: absolute; bottom: 20%; left: 44%; width: 12%; height: 35%; background: linear-gradient(180deg, #2a2a3a, #0a0a1a); border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%; transform-origin: bottom center; animation: rm-pray 6s ease-in-out infinite alternate; }
.scn-richard-mourns .doorway { position: absolute; bottom: 20%; left: 35%; width: 30%; height: 50%; background: #05050a; border-radius: 50% 50% 0 0 / 20% 20% 0 0; box-shadow: inset 0 0 60px rgba(0,0,0,0.9); }
.scn-richard-mourns .doorway-light { position: absolute; bottom: 20%; left: 35%; width: 30%; height: 50%; background: radial-gradient(ellipse at 50% 100%, rgba(150,150,180,0.3) 0%, transparent 70%); border-radius: 50% 50% 0 0 / 20% 20% 0 0; animation: rm-door-glow 10s ease-in-out infinite alternate; }
@keyframes rm-light { 0% { opacity: 0.3; transform: scaleY(0.95); } 50% { opacity: 0.8; transform: scaleY(1.1); } 100% { opacity: 0.4; transform: scaleY(1); } }
@keyframes rm-pray { 0% { transform: rotateX(0deg) translateY(0); } 50% { transform: rotateX(15deg) translateY(-4px); } 100% { transform: rotateX(5deg) translateY(2px); } }
@keyframes rm-door-glow { 0% { opacity: 0.2; } 50% { opacity: 0.6; } 100% { opacity: 0.3; } }
@keyframes rm-shadow { 0% { box-shadow: inset 0 0 20px rgba(0,0,0,0.3); } 50% { box-shadow: inset 0 0 40px rgba(0,0,0,0.6); } 100% { box-shadow: inset 0 0 10px rgba(0,0,0,0.2); } }

.scn-joan-denies-father { background: linear-gradient(180deg, #1a1018 0%, #2a1820 30%, #1a1018 70%, #0d080a 100%), radial-gradient(ellipse at 50% 60%, #4a2a3a 0%, transparent 80%); }
.scn-joan-denies-father .bg-deep { position:absolute; inset:0; background: linear-gradient(135deg, #0d080a 0%, #1a1018 50%, #120c10 100%); animation: jdf-bg 8s ease-in-out infinite alternate; }
.scn-joan-denies-father .bg-mid { position:absolute; inset:10% 5% 30% 5%; background: linear-gradient(180deg, #2a1820 0%, #1a1018 100%); border-radius: 20% 20% 0 0; box-shadow: inset 0 0 30px rgba(0,0,0,.6); animation: jdf-mid 12s ease-in-out infinite alternate; }
.scn-joan-denies-father .father { position:absolute; bottom:20%; left:20%; width:40px; height:70px; background: linear-gradient(180deg, #2a1a2a 0%, #1a0a1a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: jdf-father 4s ease-in-out infinite; }
.scn-joan-denies-father .joan { position:absolute; bottom:20%; right:25%; width:35px; height:65px; background: linear-gradient(180deg, #2a1a2a 0%, #1a0a1a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: jdf-joan 3s ease-in-out infinite; }
.scn-joan-denies-father .candle { position:absolute; bottom:22%; left:50%; width:6px; height:20px; background: linear-gradient(180deg, #e0c080 0%, #a08040 100%); border-radius: 20% 20% 10% 10% / 40% 40% 20% 20%; transform: translateX(-50%); animation: jdf-candle 2s ease-in-out infinite alternate; }
.scn-joan-denies-father .glow { position:absolute; bottom:22%; left:50%; width:40px; height:40px; background: radial-gradient(circle, rgba(240,200,120,0.3) 0%, transparent 70%); transform: translate(-50%, 50%); animation: jdf-glow 2s ease-in-out infinite alternate; pointer-events:none; }
.scn-joan-denies-father .floor { position:absolute; bottom:0; left:0; right:0; height:20%; background: linear-gradient(180deg, #1a1018 0%, #0d080a 100%); border-radius: 30% 30% 0 0 / 20% 20% 0 0; animation: jdf-floor 6s ease-in-out infinite alternate; }
@keyframes jdf-bg { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.7 } }
@keyframes jdf-mid { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes jdf-father { 0%,100% { transform: rotate(0) } 25% { transform: rotate(-2deg) translateY(-1px) } 50% { transform: rotate(1deg) translateY(0) } 75% { transform: rotate(-1deg) translateY(-2px) } }
@keyframes jdf-joan { 0%,100% { transform: rotate(0) } 30% { transform: rotate(3deg) translateY(-1px) } 70% { transform: rotate(-2deg) translateY(0) } }
@keyframes jdf-candle { 0% { transform: translateX(-50%) scaleY(1) } 30% { transform: translateX(-50%) scaleY(0.8) } 60% { transform: translateX(-50%) scaleY(1.1) } 100% { transform: translateX(-50%) scaleY(0.9) } }
@keyframes jdf-glow { 0% { opacity:.4; transform: translate(-50%,50%) scale(1) } 50% { opacity:.8; transform: translate(-50%,50%) scale(1.2) } 100% { opacity:.5; transform: translate(-50%,50%) scale(0.9) } }
@keyframes jdf-floor { 0% { opacity:.9 } 50% { opacity:1 } 100% { opacity:.8 } }

.scn-joan-claims-virginity { background: linear-gradient(180deg, #0a0f1a 0%, #141a2a 40%, #1a2230 100%), radial-gradient(ellipse at 50% 0%, #2a3a5a 0%, transparent 60%); }
.scn-joan-claims-virginity .bg-deep { position:absolute; inset:0; background: linear-gradient(180deg, #0a0f1a 0%, #141a2a 100%); animation: jcv-bg 10s ease-in-out infinite alternate; }
.scn-joan-claims-virginity .bg-mid { position:absolute; inset:15% 20% 25% 20%; background: linear-gradient(180deg, #1a2230 0%, #141a2a 100%); border-radius: 30% 30% 10% 10% / 50% 50% 20% 20%; box-shadow: inset 0 0 20px rgba(0,0,0,.5); animation: jcv-mid 8s ease-in-out infinite alternate; }
.scn-joan-claims-virginity .light-beam { position:absolute; top:0; left:45%; width:10%; height:70%; background: linear-gradient(180deg, rgba(255,255,240,0.15) 0%, transparent 100%); filter: blur(4px); animation: jcv-beam 6s ease-in-out infinite alternate; }
.scn-joan-claims-virginity .joan { position:absolute; bottom:20%; left:50%; width:30px; height:70px; background: linear-gradient(180deg, #2a1a2a 0%, #1a0a1a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform: translateX(-50%) scale(1.1); animation: jcv-joan 4s ease-in-out infinite; }
.scn-joan-claims-virginity .halo { position:absolute; top:15%; left:50%; width:40px; height:10px; background: radial-gradient(ellipse, rgba(200,200,180,0.2) 0%, transparent 70%); transform: translateX(-50%); animation: jcv-halo 5s ease-in-out infinite alternate; }
.scn-joan-claims-virginity .ground { position:absolute; bottom:0; left:0; right:0; height:20%; background: linear-gradient(180deg, #141a2a 0%, #0a0f1a 100%); border-radius: 40% 40% 0 0 / 30% 30% 0 0; animation: jcv-ground 12s ease-in-out infinite alternate; }
@keyframes jcv-bg { 0% { opacity:.7 } 50% { opacity:1 } 100% { opacity:.8 } }
@keyframes jcv-mid { 0% { transform: translateY(0) } 50% { transform: translateY(-3px) } 100% { transform: translateY(0) } }
@keyframes jcv-beam { 0% { opacity:.3 } 50% { opacity:.6 } 100% { opacity:.2 } }
@keyframes jcv-joan { 0%,100% { transform: translateX(-50%) scale(1.1) rotate(0) } 30% { transform: translateX(-50%) scale(1.1) rotate(2deg) } 60% { transform: translateX(-50%) scale(1.1) rotate(-1deg) } }
@keyframes jcv-halo { 0% { opacity:.2; transform: translateX(-50%) scale(1) } 50% { opacity:.5; transform: translateX(-50%) scale(1.3) } 100% { opacity:.3; transform: translateX(-50%) scale(0.8) } }
@keyframes jcv-ground { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.7 } }

.scn-joan-pretends-pregnancy { background: linear-gradient(180deg, #0d0505 0%, #1a0d0a 40%, #0d0505 100%), radial-gradient(ellipse at 50% 80%, #3a1a0a 0%, transparent 70%); }
.scn-joan-pretends-pregnancy .bg-deep { position:absolute; inset:0; background: linear-gradient(180deg, #0d0505 0%, #1a0d0a 100%); animation: jpp-bg 8s ease-in-out infinite alternate; }
.scn-joan-pretends-pregnancy .bg-mid { position:absolute; inset:10% 10% 30% 10%; background: linear-gradient(180deg, #1a0d0a 0%, #0d0505 100%); border-radius: 30% 30% 0 0; box-shadow: inset 0 0 40px rgba(0,0,0,.7); animation: jpp-mid 12s ease-in-out infinite alternate; }
.scn-joan-pretends-pregnancy .stake { position:absolute; bottom:25%; left:50%; width:8px; height:60%; background: linear-gradient(180deg, #3a2a1a 0%, #1a100a 100%); transform: translateX(-50%); border-radius: 10% 10% 0 0; animation: jpp-stake 10s ease-in-out infinite; }
.scn-joan-pretends-pregnancy .joan { position:absolute; bottom:28%; left:50%; width:30px; height:50px; background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform: translateX(-50%); animation: jpp-joan 3s ease-in-out infinite; }
.scn-joan-pretends-pregnancy .flames { position:absolute; bottom:0%; left:30%; right:30%; height:30%; background: radial-gradient(ellipse at 50% 100%, #c8553d 0%, #a0461a 40%, #3a1a0a 80%, transparent 100%); filter: blur(2px); animation: jpp-flames 1.5s ease-in-out infinite alternate; }
.scn-joan-pretends-pregnancy .smoke-a { position:absolute; top:15%; left:45%; width:40px; height:60px; background: radial-gradient(ellipse, rgba(100,100,100,0.3) 0%, transparent 70%); filter: blur(8px); animation: jpp-smoke 30s linear infinite; }
.scn-joan-pretends-pregnancy .smoke-b { position:absolute; top:10%; left:55%; width:30px; height:50px; background: radial-gradient(ellipse, rgba(100,100,100,0.2) 0%, transparent 70%); filter: blur(6px); animation: jpp-smoke 40s linear infinite reverse; animation-delay: -15s; }
.scn-joan-pretends-pregnancy .ground { position:absolute; bottom:0; left:0; right:0; height:15%; background: linear-gradient(180deg, #1a100a 0%, #0d0505 100%); border-radius: 30% 30% 0 0 / 20% 20% 0 0; animation: jpp-ground 5s ease-in-out infinite alternate; }
@keyframes jpp-bg { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.7 } }
@keyframes jpp-mid { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes jpp-stake { 0%,100% { transform: translateX(-50%) } 50% { transform: translateX(-50%) translateY(-2px) } }
@keyframes jpp-joan { 0%,100% { transform: translateX(-50%) rotate(0) } 30% { transform: translateX(-50%) rotate(3deg) } 60% { transform: translateX(-50%) rotate(-2deg) } }
@keyframes jpp-flames { 0% { opacity:.6; transform: scaleY(1) } 50% { opacity:1; transform: scaleY(1.2) } 100% { opacity:.7; transform: scaleY(0.9) } }
@keyframes jpp-smoke { 0% { transform: translateY(0) scale(1); opacity:.3 } 50% { transform: translateY(-30px) scale(1.5); opacity:.1 } 100% { transform: translateY(-60px) scale(2); opacity:0 } }
@keyframes jpp-ground { 0% { opacity:.9 } 50% { opacity:1 } 100% { opacity:.8 } }

.scn-joan-confesses-to-many { background: linear-gradient(180deg, #1a1010 0%, #2a1a1a 30%, #1a1010 70%, #0d0808 100%), radial-gradient(ellipse at 50% 50%, #3a2a2a 0%, transparent 80%); }
.scn-joan-confesses-to-many .bg-deep { position:absolute; inset:0; background: linear-gradient(180deg, #0d0808 0%, #1a1010 100%); animation: jcm-bg 10s ease-in-out infinite alternate; }
.scn-joan-confesses-to-many .bg-mid { position:absolute; inset:5% 10% 20% 10%; background: linear-gradient(180deg, #2a1a1a 0%, #1a1010 100%); border-radius: 20% 20% 10% 10% / 40% 40% 20% 20%; box-shadow: inset 0 0 30px rgba(0,0,0,.5); animation: jcm-mid 8s ease-in-out infinite alternate; }
.scn-joan-confesses-to-many .crowd-left { position:absolute; bottom:15%; left:5%; width:25%; height:80%; background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%); border-radius: 40% 40% 0 0 / 60% 60% 0 0; clip-path: polygon(0% 100%, 0% 10%, 20% 0%, 40% 10%, 50% 0%, 70% 15%, 100% 5%, 100% 100%); filter: blur(1px); animation: jcm-crowd 6s ease-in-out infinite; }
.scn-joan-confesses-to-many .crowd-right { position:absolute; bottom:15%; right:5%; width:25%; height:80%; background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%); border-radius: 40% 40% 0 0 / 60% 60% 0 0; clip-path: polygon(0% 5%, 30% 15%, 50% 0%, 60% 10%, 80% 0%, 100% 10%, 100% 100%, 0% 100%); filter: blur(1px); animation: jcm-crowd 6s ease-in-out infinite 2s; }
.scn-joan-confesses-to-many .joan { position:absolute; bottom:20%; left:50%; width:35px; height:70px; background: linear-gradient(180deg, #3a2a2a 0%, #1a1010 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform: translateX(-50%); animation: jcm-joan 4s ease-in-out infinite; }
.scn-joan-confesses-to-many .floor { position:absolute; bottom:0; left:0; right:0; height:15%; background: linear-gradient(180deg, #1a1010 0%, #0d0808 100%); border-radius: 30% 30% 0 0 / 20% 20% 0 0; animation: jcm-floor 7s ease-in-out infinite alternate; }
.scn-joan-confesses-to-many .shadow { position:absolute; bottom:15%; left:40%; width:20%; height:10%; background: radial-gradient(ellipse, rgba(0,0,0,0.5) 0%, transparent 70%); transform: translateX(-50%); animation: jcm-shadow 5s ease-in-out infinite alternate; }
@keyframes jcm-bg { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.7 } }
@keyframes jcm-mid { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes jcm-crowd { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-3px) } }
@keyframes jcm-joan { 0%,100% { transform: translateX(-50%) rotate(0) } 30% { transform: translateX(-50%) rotate(2deg) } 60% { transform: translateX(-50%) rotate(-1deg) } }
@keyframes jcm-floor { 0% { opacity:.9 } 50% { opacity:1 } 100% { opacity:.8 } }
@keyframes jcm-shadow { 0% { opacity:.3; transform: translateX(-50%) scale(1) } 50% { opacity:.5; transform: translateX(-50%) scale(1.2) } 100% { opacity:.4; transform: translateX(-50%) scale(0.8) } }

/* --- treachery-and-blame (tense/dark interior) --- */
.scn-treachery-and-blame { background: linear-gradient(180deg, #141010 0%, #241a15 40%, #0f0a08 100%), radial-gradient(ellipse at 50% 100%, #3a1f14 0%, transparent 60%); }
.scn-treachery-and-blame .hall-bg { position:absolute; inset:0; background: linear-gradient(180deg, #1a1412 0%, #0e0a08 100%); animation: tb-haze 20s ease-in-out infinite; }
.scn-treachery-and-blame .pillar-l { position:absolute; left:8%; top:0; bottom:15%; width:6%; background: linear-gradient(90deg, #2a201c 0%, #3a2e28 30%, #1a1412 100%); border-radius:4px; box-shadow: 8px 0 12px rgba(0,0,0,.6); }
.scn-treachery-and-blame .pillar-r { position:absolute; right:8%; top:0; bottom:15%; width:6%; background: linear-gradient(90deg, #1a1412 0%, #3a2e28 70%, #2a201c 100%); border-radius:4px; box-shadow: -8px 0 12px rgba(0,0,0,.6); }
.scn-treachery-and-blame .table { position:absolute; bottom:12%; left:20%; right:20%; height:6%; background: linear-gradient(180deg, #3a2a20 0%, #1e1410 100%); border-radius: 50% 50% 40% 40% / 80% 80% 20% 20%; box-shadow: 0 8px 20px rgba(0,0,0,.8); }
.scn-treachery-and-blame .figure-l { position:absolute; bottom:18%; left:26%; width:12%; height:22%; background: linear-gradient(180deg, #2a2220 0%, #14100e 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: tb-breathe-l 4s ease-in-out infinite; }
.scn-treachery-and-blame .figure-r { position:absolute; bottom:18%; right:26%; width:14%; height:24%; background: linear-gradient(180deg, #322824 0%, #1a1412 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: tb-breathe-r 3.5s ease-in-out infinite; }
.scn-treachery-and-blame .candle { position:absolute; bottom:18%; left:50%; width:1.5%; height:8%; transform: translateX(-50%); background: linear-gradient(180deg, #c8a070 0%, #8a6040 40%, #3a2a20 100%); border-radius: 30% 30% 10% 10%; }
.scn-treachery-and-blame .candle-glow { position:absolute; bottom:20%; left:50%; width:20%; height:30%; transform: translateX(-50%); background: radial-gradient(circle, #d0a070 0%, #c08040 30%, transparent 70%); box-shadow: 0 0 40px 12px #c08040, 0 0 80px 24px rgba(192,128,64,.3); animation: tb-flicker 2s ease-in-out infinite alternate; }
.scn-treachery-and-blame .shadow { position:absolute; bottom:12%; left:15%; right:15%; height:10%; background: radial-gradient(ellipse at 50% 50%, #0a0604 0%, transparent 70%); opacity: .6; animation: tb-sway 6s ease-in-out infinite; }
@keyframes tb-haze { 0% { opacity:.7 } 50% { opacity:1 } 100% { opacity:.8 } }
@keyframes tb-breathe-l { 0% { transform: translateY(0) rotate(-1deg) } 50% { transform: translateY(-2px) rotate(0deg) } 100% { transform: translateY(0) rotate(-1deg) } }
@keyframes tb-breathe-r { 0% { transform: translateY(0) rotate(1deg) } 50% { transform: translateY(-3px) rotate(0deg) } 100% { transform: translateY(0) rotate(1deg) } }
@keyframes tb-flicker { 0% { opacity:.6; transform: translateX(-50%) scale(.95) } 50% { opacity:1; transform: translateX(-50%) scale(1.05) } 100% { opacity:.7; transform: translateX(-50%) scale(.98) } }
@keyframes tb-sway { 0% { transform: rotate(-2deg) scaleX(.9); opacity:.4 } 50% { transform: rotate(2deg) scaleX(1.1); opacity:.7 } 100% { transform: rotate(-2deg) scaleX(.9); opacity:.4 } }

/* --- second-messenger-revolt (dark/dark wide horizon) --- */
.scn-second-messenger-revolt { background: linear-gradient(180deg, #080c14 0%, #121a24 30%, #080c14 100%), radial-gradient(ellipse at 50% 0%, #1a2a3a 0%, transparent 60%); }
.scn-second-messenger-revolt .night-sky { position:absolute; inset:0; background: linear-gradient(180deg, #0a0e1a 0%, #141e2e 50%, #0a0e14 100%); animation: smr-stars 20s linear infinite; }
.scn-second-messenger-revolt .moon { position:absolute; top:8%; right:20%; width:8%; height:16%; background: radial-gradient(circle at 50% 50%, #c8d0e0 0%, #a0a8b8 70%, transparent 100%); border-radius:50%; box-shadow: 0 0 30px 10px rgba(160,168,184,.4); animation: smr-pass 40s linear infinite alternate; }
.scn-second-messenger-revolt .ruins { position:absolute; bottom:30%; left:5%; width:25%; height:20%; background: linear-gradient(180deg, #141a1e 0%, #0a0e10 100%); border-radius: 10% 30% 0 0 / 20% 60% 0 0; clip-path: polygon(0% 100%, 10% 40%, 20% 100%, 30% 60%, 50% 100%, 70% 30%, 85% 100%, 100% 50%, 100% 100%); }
.scn-second-messenger-revolt .rider { position:absolute; bottom:30%; left:-10%; width:8%; height:16%; background: linear-gradient(180deg, #1a1e24 0%, #0e1014 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: smr-gallop 12s linear infinite; }
.scn-second-messenger-revolt .horse { position:absolute; bottom:24%; left:-12%; width:16%; height:10%; background: linear-gradient(180deg, #1a1e24 0%, #0e1014 100%); border-radius: 50% 20% 20% 50% / 80% 40% 40% 80%; animation: smr-gallop 12s linear infinite; }
.scn-second-messenger-revolt .distant-fire { position:absolute; bottom:32%; right:15%; width:6%; height:8%; background: radial-gradient(circle, #c8553d 0%, #a0461a 40%, transparent 70%); box-shadow: 0 0 30px 10px #a0461a; animation: smr-flicker 3s ease-in-out infinite alternate; }
.scn-second-messenger-revolt .ground-mist { position:absolute; bottom:15%; left:0; right:0; height:20%; background: linear-gradient(0deg, rgba(20,30,40,.5) 0%, transparent 100%); animation: smr-drift 18s ease-in-out infinite; }
.scn-second-messenger-revolt .spear { position:absolute; bottom:38%; left:-8%; width:2%; height:20%; background: linear-gradient(180deg, #4a4e54 0%, #2a2e34 100%); transform-origin: bottom center; border-radius: 10%; animation: smr-gallop-spear 12s linear infinite; }
@keyframes smr-stars { 0% { opacity:.6 } 50% { opacity:1 } 100% { opacity:.7 } }
@keyframes smr-pass { 0% { transform: translateX(0) scale(1) } 50% { transform: translateX(-20vw) scale(1.05) } 100% { transform: translateX(0) scale(1) } }
@keyframes smr-gallop { 0% { transform: translateX(0) rotate(-1deg) } 25% { transform: translateX(25vw) rotate(1deg) } 50% { transform: translateX(50vw) rotate(-1deg) } 75% { transform: translateX(75vw) rotate(2deg) } 100% { transform: translateX(calc(100vw + 150px)) rotate(-1deg) } }
@keyframes smr-gallop-spear { 0% { transform: translateX(0) rotate(10deg) } 25% { transform: translateX(25vw) rotate(15deg) } 50% { transform: translateX(50vw) rotate(8deg) } 75% { transform: translateX(75vw) rotate(12deg) } 100% { transform: translateX(calc(100vw + 150px)) rotate(10deg) } }
@keyframes smr-flicker { 0% { opacity:.3; transform: scale(.9) } 50% { opacity:.8; transform: scale(1.2) } 100% { opacity:.4; transform: scale(1) } }
@keyframes smr-drift { 0% { transform: translateY(0) scaleY(1); opacity:.2 } 50% { transform: translateY(-5px) scaleY(1.1); opacity:.5 } 100% { transform: translateY(0) scaleY(1); opacity:.2 } }

/* --- desperation-and-defiance (tense/dark vertical/close-up) --- */
.scn-desperation-and-defiance { background: linear-gradient(180deg, #0e0a0a 0%, #1a100e 40%, #2a150a 100%), radial-gradient(ellipse at 50% 70%, #4a2210 0%, transparent 60%); }
.scn-desperation-and-defiance .brazier { position:absolute; bottom:15%; left:50%; width:20%; height:10%; transform: translateX(-50%); background: linear-gradient(180deg, #d07030 0%, #a0461a 40%, #2a150a 100%); border-radius: 50% 50% 30% 30% / 80% 80% 20% 20%; box-shadow: inset 0 -10px 20px rgba(0,0,0,.8); }
.scn-desperation-and-defiance .brazier-glow { position:absolute; bottom:15%; left:50%; width:40%; height:40%; transform: translateX(-50%); background: radial-gradient(circle, #d07030 0%, #a0461a 30%, transparent 70%); box-shadow: 0 0 60px 20px #a0461a, 0 0 120px 40px rgba(160,70,26,.3); animation: dd-flame 2s ease-in-out infinite alternate; }
.scn-desperation-and-defiance .armor-l { position:absolute; bottom:25%; left:15%; width:15%; height:35%; background: linear-gradient(180deg, #3a3e42 0%, #1a1c1e 100%); border-radius: 50% 50% 40% 40% / 50% 50% 50% 50%; box-shadow: 4px 0 8px rgba(0,0,0,.5); transform-origin: bottom center; animation: dd-advance-l 5s ease-in-out infinite; }
.scn-desperation-and-defiance .armor-r { position:absolute; bottom:25%; right:15%; width:15%; height:35%; background: linear-gradient(180deg, #3a3e42 0%, #1a1c1e 100%); border-radius: 50% 50% 40% 40% / 50% 50% 50% 50%; box-shadow: -4px 0 8px rgba(0,0,0,.5); transform-origin: bottom center; animation: dd-advance-r 5s ease-in-out infinite; }
.scn-desperation-and-defiance .shield-l { position:absolute; bottom:30%; left:18%; width:12%; height:18%; background: linear-gradient(180deg, #4a3a2a 0%, #2a1e14 100%); border-radius: 50%; border: 2px solid #5a4a3a; box-shadow: inset 0 0 12px rgba(0,0,0,.6); animation: dd-pound-l 3s ease-in-out infinite; }
.scn-desperation-and-defiance .shield-r { position:absolute; bottom:30%; right:18%; width:12%; height:18%; background: linear-gradient(180deg, #4a3a2a 0%, #2a1e14 100%); border-radius: 50%; border: 2px solid #5a4a3a; box-shadow: inset 0 0 12px rgba(0,0,0,.6); animation: dd-pound-r 3s ease-in-out infinite 1.5s; }
.scn-desperation-and-defiance .sword-1 { position:absolute; bottom:35%; left:22%; width:3%; height:30%; background: linear-gradient(180deg, #6a6e72 0%, #2a2e32 100%); transform-origin: bottom center; border-radius: 20% 20% 10% 10%; box-shadow: 0 0 4px rgba(255,255,255,.2); animation: dd-raise-l 4s ease-in-out infinite; }
.scn-desperation-and-defiance .sword-2 { position:absolute; bottom:35%; right:22%; width:3%; height:28%; background: linear-gradient(180deg, #6a6e72 0%, #2a2e32 100%); transform-origin: bottom center; border-radius: 20% 20% 10% 10%; box-shadow: 0 0 4px rgba(255,255,255,.2); animation: dd-raise-r 4s ease-in-out infinite 2s; }
@keyframes dd-flame { 0% { transform: translateX(-50%) scaleY(1) scaleX(1) } 25% { transform: translateX(-50%) scaleY(1.15) scaleX(.9) } 50% { transform: translateX(-50%) scaleY(.95) scaleX(1.1) } 75% { transform: translateX(-50%) scaleY(1.1) scaleX(.95) } 100% { transform: translateX(-50%) scaleY(1) scaleX(1) } }
@keyframes dd-advance-l { 0% { transform: translateX(0) rotate(0deg) } 50% { transform: translateX(12px) rotate(2deg) } 100% { transform: translateX(0) rotate(0deg) } }
@keyframes dd-advance-r { 0% { transform: translateX(0) rotate(0deg) } 50% { transform: translateX(-12px) rotate(-2deg) } 100% { transform: translateX(0) rotate(0deg) } }
@keyframes dd-pound-l { 0% { transform: translateY(0) scale(1) } 25% { transform: translateY(-4px) scale(1.03) } 50% { transform: translateY(0) scale(1) } 75% { transform: translateY(-2px) scale(1.01) } 100% { transform: translateY(0) scale(1) } }
@keyframes dd-pound-r { 0% { transform: translateY(0) scale(1) } 25% { transform: translateY(-4px) scale(1.03) } 50% { transform: translateY(0) scale(1) } 75% { transform: translateY(-2px) scale(1.01) } 100% { transform: translateY(0) scale(1) } }
@keyframes dd-raise-l { 0% { transform: rotate(-15deg) translateY(0) } 25% { transform: rotate(-5deg) translateY(-5px) } 50% { transform: rotate(-15deg) translateY(0) } 75% { transform: rotate(-10deg) translateY(-2px) } 100% { transform: rotate(-15deg) translateY(0) } }
@keyframes dd-raise-r { 0% { transform: rotate(15deg) translateY(0) } 25% { transform: rotate(5deg) translateY(-5px) } 50% { transform: rotate(15deg) translateY(0) } 75% { transform: rotate(10deg) translateY(-2px) } 100% { transform: rotate(15deg) translateY(0) } }

/* --- talbot-news (dark/dark profile/action) --- */
.scn-talbot-news { background: linear-gradient(180deg, #18181a 0%, #1e1c1d 30%, #121112 100%), radial-gradient(ellipse at 50% 100%, #2a1c1a 0%, transparent 60%); }
.scn-talbot-news .tent-wall { position:absolute; inset:0; background: linear-gradient(135deg, #1e1c1d 0%, #2a2422 30%, #141213 100%); clip-path: polygon(0% 0%, 100% 0%, 85% 100%, 15% 100%); animation: tn-sway 12s ease-in-out infinite; }
.scn-talbot-news .tent-pole { position:absolute; left:50%; top:0; bottom:0; width:1.5%; transform: translateX(-50%); background: linear-gradient(180deg, #3a3432 0%, #1a1614 100%); border-radius: 20%; box-shadow: 0 0 8px rgba(0,0,0,.6); }
.scn-talbot-news .figure-talbot { position:absolute; bottom:15%; left:20%; width:16%; height:34%; background: linear-gradient(180deg, #2e2826 0%, #141210 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); }
.scn-talbot-news .figure-messenger { position:absolute; bottom:15%; right:20%; width:14%; height:30%; background: linear-gradient(180deg, #2a2422 0%, #12100e 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: tn-bow 6s ease-in-out infinite; }
.scn-talbot-news .scroll { position:absolute; bottom:30%; right:22%; width:8%; height:3%; background: linear-gradient(90deg, #c8b89a 0%, #a8987a 50%, #c8b89a 100%); border-radius: 10% 40% 40% 10% / 50% 50% 50% 50%; box-shadow: 0 2px 4px rgba(0,0,0,.4); animation: tn-read 6s ease-in-out infinite; }
.scn-talbot-news .brazier-small { position:absolute; bottom:18%; left:50%; width:8%; height:12%; transform: translateX(-50%); background: radial-gradient(circle, #c8553d 0%, #702243 40%, transparent 70%); box-shadow: 0 0 30px 8px #702243; animation: tn-flicker 3.5s ease-in-out infinite alternate; }
.scn-talbot-news .shadow-stripe { position:absolute; bottom:10%; left:10%; right:10%; height:8%; background: linear-gradient(90deg, transparent 0%, #0a0808 30%, #0a0808 70%, transparent 100%); opacity: .6; animation: tn-stripe 8s ease-in-out infinite; }
@keyframes tn-sway { 0% { opacity:.85; transform: skewX(0deg) } 50% { opacity:1; transform: skewX(1deg) } 100% { opacity:.85; transform: skewX(0deg) } }
@keyframes tn-bow { 0% { transform: rotate(0deg) translateY(0) } 30% { transform: rotate(-12deg) translateY(3px) } 60% { transform: rotate(-12deg) translateY(3px) } 100% { transform: rotate(0deg) translateY(0) } }
@keyframes tn-read { 0% { opacity:0; transform: translateY(4px) scaleX(.8) } 20% { opacity:1; transform: translateY(0) scaleX(1) } 80% { opacity:1; transform: translateY(0) scaleX(1) } 100% { opacity:0; transform: translateY(-4px) scaleX(.8) } }
@keyframes tn-flicker { 0% { opacity:.4; transform: translateX(-50%) scale(.9) } 50% { opacity:.8; transform: translateX(-50%) scale(1.1) } 100% { opacity:.5; transform: translateX(-50%) scale(.95) } }
@keyframes tn-stripe { 0% { opacity:.4; transform: scaleX(.95) } 50% { opacity:.7; transform: scaleX(1.05) } 100% { opacity:.4; transform: scaleX(.95) } }

/* Scene 1: brawl-interrupted */
.scn-brawl-interrupted {
    background: linear-gradient(180deg, #1a1a2e 0%, #2a1a0e 50%, #1a0a0a 100%), radial-gradient(ellipse at 50% 60%, #4a2a1a 0%, transparent 70%);
}
.scn-brawl-interrupted .bg-wall {
    position: absolute; inset: 0 0 40% 0;
    background: linear-gradient(180deg, #2a1a0e 0%, #1a0a00 100%);
    animation: bi-wall 20s ease-in-out infinite alternate;
}
.scn-brawl-interrupted .bg-floor {
    position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
    background: linear-gradient(180deg, #2a1a0a 0%, #0a0500 100%);
}
.scn-brawl-interrupted .fig-left-1 {
    position: absolute; bottom: 32%; left: 18%; width: 22px; height: 80px;
    background: #0a0a0a;
    border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
    transform-origin: bottom center;
    animation: bi-fight-l1 0.8s ease-in-out infinite alternate;
}
.scn-brawl-interrupted .fig-left-2 {
    position: absolute; bottom: 30%; left: 10%; width: 20px; height: 78px;
    background: #0a0a0a;
    border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
    transform-origin: bottom center;
    animation: bi-fight-l2 0.9s ease-in-out infinite alternate;
}
.scn-brawl-interrupted .fig-right-1 {
    position: absolute; bottom: 32%; right: 18%; width: 22px; height: 80px;
    background: #0a0a0a;
    border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
    transform-origin: bottom center;
    animation: bi-fight-r1 0.85s ease-in-out infinite alternate;
}
.scn-brawl-interrupted .fig-right-2 {
    position: absolute; bottom: 30%; right: 10%; width: 20px; height: 78px;
    background: #0a0a0a;
    border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
    transform-origin: bottom center;
    animation: bi-fight-r2 0.75s ease-in-out infinite alternate;
}
.scn-brawl-interrupted .fig-center {
    position: absolute; bottom: 26%; left: 50%; width: 24px; height: 90px;
    background: #1a1a1a;
    border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
    transform: translateX(-50%);
    transform-origin: bottom center;
    animation: bi-enter 4s ease-out forwards;
}
.scn-brawl-interrupted .lantern {
    position: absolute; top: 20%; left: 45%; width: 10px; height: 12px;
    background: radial-gradient(circle, #f0c080 0%, #b08040 50%, transparent 70%);
    border-radius: 50%;
    box-shadow: 0 0 30px 10px #c08040, 0 0 60px 20px rgba(192,128,64,0.3);
    animation: bi-glow 2s ease-in-out infinite alternate;
}
@keyframes bi-wall {
    0% { opacity: 0.9; }
    50% { opacity: 1; }
    100% { opacity: 0.85; }
}
@keyframes bi-fight-l1 {
    0% { transform: rotate(-5deg) translateX(0); }
    50% { transform: rotate(10deg) translateX(8px) scale(1.05); }
    100% { transform: rotate(-5deg) translateX(0); }
}
@keyframes bi-fight-l2 {
    0% { transform: rotate(5deg) translateX(0); }
    50% { transform: rotate(-8deg) translateX(-6px) scale(1.03); }
    100% { transform: rotate(5deg) translateX(0); }
}
@keyframes bi-fight-r1 {
    0% { transform: rotate(5deg) translateX(0); }
    50% { transform: rotate(-10deg) translateX(-8px) scale(1.05); }
    100% { transform: rotate(5deg) translateX(0); }
}
@keyframes bi-fight-r2 {
    0% { transform: rotate(-5deg) translateX(0); }
    50% { transform: rotate(12deg) translateX(6px) scale(1.03); }
    100% { transform: rotate(-5deg) translateX(0); }
}
@keyframes bi-enter {
    0% { transform: translateX(-50%) translateX(120px); opacity: 0; }
    60% { transform: translateX(-50%) translateX(-5px); opacity: 1; }
    80% { transform: translateX(-50%) translateX(3px); }
    100% { transform: translateX(-50%) translateX(0); opacity: 1; }
}
@keyframes bi-glow {
    0% { box-shadow: 0 0 20px 8px #c08040, 0 0 40px 12px rgba(192,128,64,0.2); opacity: 0.8; }
    50% { box-shadow: 0 0 40px 15px #f0c080, 0 0 80px 30px rgba(240,192,128,0.4); opacity: 1; }
    100% { box-shadow: 0 0 25px 10px #c08040, 0 0 50px 18px rgba(192,128,64,0.25); opacity: 0.85; }
}

/* Scene 2: mayor-proclamation */
.scn-mayor-proclamation {
    background: linear-gradient(180deg, #2a1a0e 0%, #3a2a1a 50%, #1a0a00 100%), radial-gradient(ellipse at 50% 30%, #4a3a2a 0%, transparent 70%);
}
.scn-mayor-proclamation .bg-interior {
    position: absolute; inset: 0 0 35% 0;
    background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%);
    animation: mp-bg 15s ease-in-out infinite alternate;
}
.scn-mayor-proclamation .floor {
    position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
    background: linear-gradient(180deg, #2a1a0a 0%, #0a0500 100%);
}
.scn-mayor-proclamation .podium {
    position: absolute; bottom: 25%; left: 30%; width: 60px; height: 20px;
    background: linear-gradient(180deg, #5a3a1a 0%, #3a2a0a 100%);
    border-radius: 4px;
    box-shadow: 0 4px 8px rgba(0,0,0,0.6);
}
.scn-mayor-proclamation .figure-bishop {
    position: absolute; bottom: 32%; left: 32%; width: 22px; height: 85px;
    background: #0a0a0a;
    border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
    transform-origin: bottom center;
    animation: mp-speak 6s ease-in-out infinite alternate;
}
.scn-mayor-proclamation .figure-mayor {
    position: absolute; bottom: 32%; right: 30%; width: 24px; height: 80px;
    background: #1a1a1a;
    border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
    transform-origin: bottom center;
    animation: mp-listen 8s ease-in-out infinite alternate;
}
.scn-mayor-proclamation .crowd-front {
    position: absolute; bottom: 20%; left: 20%; right: 20%; height: 50px;
    display: flex; justify-content: space-around;
    background: radial-gradient(circle at 10% 50%, #0a0a0a 6px, transparent 6px),
                radial-gradient(circle at 25% 50%, #0a0a0a 7px, transparent 7px),
                radial-gradient(circle at 40% 50%, #0a0a0a 6px, transparent 6px),
                radial-gradient(circle at 55% 50%, #0a0a0a 7px, transparent 7px),
                radial-gradient(circle at 70% 50%, #0a0a0a 6px, transparent 6px),
                radial-gradient(circle at 85% 50%, #0a0a0a 7px, transparent 7px);
    background-size: 20px 20px;
    background-repeat: no-repeat;
    background-position: 0 0;
    animation: mp-crowd-heads 10s ease-in-out infinite alternate;
}
.scn-mayor-proclamation .crowd-back {
    position: absolute; bottom: 30%; left: 15%; right: 15%; height: 30px;
    background: radial-gradient(circle at 12% 50%, rgba(20,20,20,0.8) 4px, transparent 4px),
                radial-gradient(circle at 28% 50%, rgba(20,20,20,0.8) 5px, transparent 5px),
                radial-gradient(circle at 44% 50%, rgba(20,20,20,0.8) 4px, transparent 4px),
                radial-gradient(circle at 60% 50%, rgba(20,20,20,0.8) 5px, transparent 5px),
                radial-gradient(circle at 76% 50%, rgba(20,20,20,0.8) 4px, transparent 4px),
                radial-gradient(circle at 92% 50%, rgba(20,20,20,0.8) 5px, transparent 5px);
    background-size: 15px 15px;
    background-repeat: no-repeat;
    background-position: 0 0;
    animation: mp-crowd-heads 12s ease-in-out infinite alternate-reverse;
}
.scn-mayor-proclamation .candle {
    position: absolute; top: 15%; left: 50%; width: 4px; height: 12px;
    background: linear-gradient(180deg, #f0e0c0 0%, #c08040 100%);
    border-radius: 2px;
    box-shadow: 0 0 20px 6px #f0c080, 0 0 40px 12px rgba(240,192,128,0.3);
    animation: mp-candle 3s ease-in-out infinite alternate;
}
@keyframes mp-bg {
    0% { opacity: 0.85; }
    50% { opacity: 1; }
    100% { opacity: 0.9; }
}
@keyframes mp-speak {
    0% { transform: rotate(0deg) translateY(0); }
    50% { transform: rotate(3deg) translateY(-2px); }
    100% { transform: rotate(-2deg) translateY(1px); }
}
@keyframes mp-listen {
    0% { transform: rotate(0deg) translateY(0); }
    50% { transform: rotate(-2deg) translateY(1px); }
    100% { transform: rotate(1deg) translateY(-1px); }
}
@keyframes mp-crowd-heads {
    0% { background-position-x: 0; }
    100% { background-position-x: 5px; }
}
@keyframes mp-candle {
    0% { opacity: 0.8; box-shadow: 0 0 15px 4px #f0c080, 0 0 30px 8px rgba(240,192,128,0.2); }
    50% { opacity: 1; box-shadow: 0 0 25px 8px #f0c080, 0 0 50px 16px rgba(240,192,128,0.4); }
    100% { opacity: 0.85; box-shadow: 0 0 18px 5px #f0c080, 0 0 35px 10px rgba(240,192,128,0.3); }
}

/* Scene 3: proclamation-needed */
.scn-proclamation-needed {
    background: linear-gradient(180deg, #1a1a0e 0%, #2a2a1a 50%, #0a0a00 100%), radial-gradient(ellipse at 50% 50%, #3a3a2a 0%, transparent 70%);
}
.scn-proclamation-needed .bg-hall {
    position: absolute; inset: 0 0 40% 0;
    background: linear-gradient(180deg, #2a2a1a 0%, #1a1a0a 100%);
    animation: pn-bg 20s ease-in-out infinite alternate;
}
.scn-proclamation-needed .floor-dark {
    position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
    background: linear-gradient(180deg, #1a1a0a 0%, #0a0a00 100%);
}
.scn-proclamation-needed .platform {
    position: absolute; bottom: 30%; left: 50%; transform: translateX(-50%); width: 80px; height: 15px;
    background: linear-gradient(180deg, #4a3a1a 0%, #2a1a0a 100%);
    border-radius: 4px;
    box-shadow: 0 4px 8px rgba(0,0,0,0.5);
}
.scn-proclamation-needed .figure-declarer {
    position: absolute; bottom: 40%; left: 50%; transform: translateX(-50%); width: 26px; height: 90px;
    background: #0a0a0a;
    border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
    transform-origin: bottom center;
    animation: pn-declare 7s ease-in-out infinite alternate;
}
.scn-proclamation-needed .audience-front {
    position: absolute; bottom: 25%; left: 10%; right: 10%; height: 40px;
    background: radial-gradient(circle at 8% 50%, #151515 5px, transparent 5px),
                radial-gradient(circle at 20% 50%, #151515 6px, transparent 6px),
                radial-gradient(circle at 32% 50%, #151515 5px, transparent 5px),
                radial-gradient(circle at 44% 50%, #151515 6px, transparent 6px),
                radial-gradient(circle at 56% 50%, #151515 5px, transparent 5px),
                radial-gradient(circle at 68% 50%, #151515 6px, transparent 6px),
                radial-gradient(circle at 80% 50%, #151515 5px, transparent 5px),
                radial-gradient(circle at 92% 50%, #151515 6px, transparent 6px);
    background-size: 15px 15px;
    background-repeat: no-repeat;
    animation: pn-audience 9s ease-in-out infinite alternate;
}
.scn-proclamation-needed .audience-back {
    position: absolute; bottom: 35%; left: 5%; right: 5%; height: 25px;
    background: radial-gradient(circle at 10% 50%, rgba(10,10,10,0.6) 3px, transparent 3px),
                radial-gradient(circle at 25% 50%, rgba(10,10,10,0.6) 4px, transparent 4px),
                radial-gradient(circle at 40% 50%, rgba(10,10,10,0.6) 3px, transparent 3px),
                radial-gradient(circle at 55% 50%, rgba(10,10,10,0.6) 4px, transparent 4px),
                radial-gradient(circle at 70% 50%, rgba(10,10,10,0.6) 3px, transparent 3px),
                radial-gradient(circle at 85% 50%, rgba(10,10,10,0.6) 4px, transparent 4px);
    background-size: 12px 12px;
    background-repeat: no-repeat;
    animation: pn-audience 11s ease-in-out infinite alternate-reverse;
}
.scn-proclamation-needed .light-source {
    position: absolute; top: 10%; left: 50%; transform: translateX(-50%); width: 30px; height: 30px;
    background: radial-gradient(circle, #e0c080 0%, #c0a060 30%, transparent 70%);
    border-radius: 50%;
    box-shadow: 0 0 50px 20px #c0a060, 0 0 100px 40px rgba(192,160,96,0.3);
    animation: pn-light 4s ease-in-out infinite alternate;
}
.scn-proclamation-needed .pillar {
    position: absolute; bottom: 35%; right: 5%; width: 15px; height: 70%;
    background: linear-gradient(180deg, #3a3a2a 0%, #2a2a1a 100%);
    border-radius: 2px;
    box-shadow: 3px 0 8px rgba(0,0,0,0.5);
}
@keyframes pn-bg {
    0% { opacity: 0.8; }
    50% { opacity: 1; }
    100% { opacity: 0.9; }
}
@keyframes pn-declare {
    0% { transform: translateX(-50%) rotate(0deg) scaleY(1); }
    50% { transform: translateX(-50%) rotate(2deg) scaleY(1.02); }
    100% { transform: translateX(-50%) rotate(-1deg) scaleY(0.98); }
}
@keyframes pn-audience {
    0% { background-position-x: 0; }
    100% { background-position-x: 6px; }
}
@keyframes pn-light {
    0% { box-shadow: 0 0 40px 15px #c0a060, 0 0 80px 30px rgba(192,160,96,0.2); opacity: 0.8; }
    50% { box-shadow: 0 0 60px 25px #e0c080, 0 0 120px 50px rgba(224,192,128,0.4); opacity: 1; }
    100% { box-shadow: 0 0 45px 18px #c0a060, 0 0 90px 35px rgba(192,160,96,0.25); opacity: 0.85; }
}

/* Scene 4: mayor-departs */
.scn-mayor-departs {
    background: linear-gradient(180deg, #1a0a0a 0%, #2a1a0e 50%, #1a0a0a 100%), radial-gradient(ellipse at 40% 50%, #3a2a1a 0%, transparent 70%);
}
.scn-mayor-departs .bg-chamber {
    position: absolute; inset: 0 0 40% 0;
    background: linear-gradient(180deg, #2a1a0e 0%, #1a0a00 100%);
    animation: md-bg 25s ease-in-out infinite alternate;
}
.scn-mayor-departs .archway {
    position: absolute; bottom: 25%; left: 50%; transform: translateX(-50%); width: 80px; height: 120px;
    background: radial-gradient(ellipse at 50% 100%, #0a0a00 0%, transparent 70%);
    border: 4px solid #3a2a1a;
    border-radius: 50% 50% 0 0;
    box-shadow: inset 0 0 20px rgba(0,0,0,0.8);
}
.scn-mayor-departs .figure-leaving-1 {
    position: absolute; bottom: 28%; left: 45%; width: 22px; height: 75px;
    background: #0a0a0a;
    border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
    transform-origin: bottom center;
    animation: md-leave1 6s ease-in-out infinite alternate;
}
.scn-mayor-departs .figure-leaving-2 {
    position: absolute; bottom: 28%; left: 55%; width: 20px; height: 72px;
    background: #0a0a0a;
    border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
    transform-origin: bottom center;
    animation: md-leave2 5s ease-in-out infinite alternate;
    animation-delay: -2s;
}
.scn-mayor-departs .figure-staying {
    position: absolute; bottom: 28%; left: 30%; width: 24px; height: 80px;
    background: #1a1a1a;
    border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
    transform-origin: bottom center;
    animation: md-stay 10s ease-in-out infinite alternate;
}
.scn-mayor-departs .lantern-depart {
    position: absolute; top: 15%; left: 30%; width: 8px; height: 10px;
    background: radial-gradient(circle, #f0c080 0%, #b08040 50%, transparent 70%);
    border-radius: 50%;
    box-shadow: 0 0 20px 8px #c08040, 0 0 40px 15px rgba(192,128,64,0.3);
    animation: md-lantern 3s ease-in-out infinite alternate;
}
.scn-mayor-departs .drape {
    position: absolute; top: 0; right: 10%; width: 30px; height: 80%;
    background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%);
    border-radius: 0 0 20% 20%;
    box-shadow: -4px 0 8px rgba(0,0,0,0.5);
    animation: md-drape 8s ease-in-out infinite alternate;
}
.scn-mayor-departs .shadow {
    position: absolute; bottom: 0; left: 30%; right: 20%; height: 20%;
    background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,0.6) 100%);
    filter: blur(6px);
    animation: md-shadow 12s ease-in-out infinite alternate;
}
@keyframes md-bg {
    0% { opacity: 0.85; }
    50% { opacity: 1; }
    100% { opacity: 0.9; }
}
@keyframes md-leave1 {
    0% { transform: translateX(0) rotate(0deg); }
    50% { transform: translateX(-20px) rotate(-3deg); opacity: 0.7; }
    100% { transform: translateX(-40px) rotate(-5deg); opacity: 0; }
}
@keyframes md-leave2 {
    0% { transform: translateX(0) rotate(0deg); }
    50% { transform: translateX(-15px) rotate(2deg); opacity: 0.8; }
    100% { transform: translateX(-35px) rotate(4deg); opacity: 0.2; }
}
@keyframes md-stay {
    0% { transform: rotate(0deg) scaleY(1); }
    50% { transform: rotate(2deg) scaleY(1.02); }
    100% { transform: rotate(-1deg) scaleY(0.98); }
}
@keyframes md-lantern {
    0% { box-shadow: 0 0 15px 5px #c08040, 0 0 30px 10px rgba(192,128,64,0.2); opacity: 0.8; }
    50% { box-shadow: 0 0 25px 10px #f0c080, 0 0 50px 20px rgba(240,192,128,0.4); opacity: 1; }
    100% { box-shadow: 0 0 18px 6px #c08040, 0 0 35px 12px rgba(192,128,64,0.25); opacity: 0.85; }
}
@keyframes md-drape {
    0% { transform: rotate(0deg) scaleX(1); }
    50% { transform: rotate(2deg) scaleX(0.98); }
    100% { transform: rotate(-2deg) scaleX(1.02); }
}
@keyframes md-shadow {
    0% { opacity: 0.5; }
    50% { opacity: 0.7; }
    100% { opacity: 0.4; }
}
/* end per-scene blocks */

/* auto-stub: parent tag-classes flagged by CSS audit */
.motes { position: absolute; pointer-events: none; }
.smoke-1 { position: absolute; pointer-events: none; }

/* ============ tier S ============ */
/* per-scene blocks (EXP step_scenes) */
.scn-talbot-cries-rescue { background: linear-gradient(180deg, #4a5a5a 0%, #3a4a4a 40%, #2a3a3a 100%), radial-gradient(ellipse at 50% 0%, #5a6a6a 0%, transparent 70%); }
.scn-talbot-cries-rescue .overcast-sky { position:absolute; inset:0 0 45% 0; background: linear-gradient(180deg, #5a6a6a 0%, #3a4a4a 100%); animation: tcr-sky 14s ease-in-out infinite alternate; }
.scn-talbot-cries-rescue .distant-hill { position:absolute; bottom:40%; left:0; right:0; height:18%; background: linear-gradient(180deg, #3a4a3a 0%, #2a3a2a 100%); border-radius: 30% 70% 0 0 / 70% 60% 0 0; box-shadow: inset 0 6px 12px rgba(0,0,0,.3); animation: tcr-hill 20s ease-in-out infinite alternate; }
.scn-talbot-cries-rescue .battlefield { position:absolute; bottom:0; left:0; right:0; height:45%; background: linear-gradient(180deg, #4a4a3a 0%, #3a3a2a 100%); clip-path: polygon(0 30%, 20% 20%, 40% 35%, 55% 15%, 70% 30%, 85% 10%, 100% 25%, 100% 100%, 0 100%); animation: tcr-field 22s ease-in-out infinite; }
.scn-talbot-cries-rescue .talbot-figure { position:absolute; bottom:32%; left:38%; width:20px; height:38px; background: linear-gradient(180deg, #2a2a2a 0%, #1a1a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: tcr-cry 3s ease-in-out infinite; }
.scn-talbot-cries-rescue .talbot-figure::before { content:''; position:absolute; top:-8px; left:50%; width:14px; height:10px; background: radial-gradient(ellipse, #4a3a2a 0%, transparent 70%); transform:translateX(-50%); border-radius:50%; box-shadow: 0 0 8px 2px rgba(74,58,42,.5); animation: tcr-mouth 3s ease-in-out infinite; }
.scn-talbot-cries-rescue .noble-left { position:absolute; bottom:28%; left:22%; width:16px; height:34px; background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: tcr-noble-l 6s ease-in-out infinite; }
.scn-talbot-cries-rescue .noble-right { position:absolute; bottom:28%; right:18%; width:16px; height:34px; background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: tcr-noble-r 6s ease-in-out infinite 3s; }
.scn-talbot-cries-rescue .noble-left::after, .scn-talbot-cries-rescue .noble-right::after { content:''; position:absolute; top:-12px; left:50%; width:12px; height:8px; background: #5a5a6a; border-radius:50%; transform:translateX(-50%); }
.scn-talbot-cries-rescue .dust-plume { position:absolute; bottom:20%; left:50%; width:60px; height:30px; background: radial-gradient(ellipse, rgba(90,80,60,.3) 0%, transparent 70%); filter: blur(4px); animation: tcr-dust 8s ease-in-out infinite alternate; }
@keyframes tcr-sky { 0%,100% { opacity:.75 } 50% { opacity:.95 } }
@keyframes tcr-hill { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(1px) } }
@keyframes tcr-field { 0%,100% { opacity:.85 } 50% { opacity:1 } }
@keyframes tcr-cry { 0% { transform: translateX(0) translateY(0) rotate(-2deg) } 25% { transform: translateX(-2px) translateY(-3px) rotate(2deg) } 50% { transform: translateX(0) translateY(-5px) rotate(0) } 75% { transform: translateX(2px) translateY(-3px) rotate(-2deg) } 100% { transform: translateX(0) translateY(0) rotate(1deg) } }
@keyframes tcr-mouth { 0%,100% { transform:translateX(-50%) scale(1) } 50% { transform:translateX(-50%) scale(1.3) } }
@keyframes tcr-noble-l { 0%,100% { transform: translateX(0) rotate(0) } 50% { transform: translateX(-4px) rotate(-5deg) } }
@keyframes tcr-noble-r { 0%,100% { transform: translateX(0) rotate(0) } 50% { transform: translateX(4px) rotate(5deg) } }
@keyframes tcr-dust { 0% { transform: translateX(-50%) scale(1); opacity:.4 } 50% { transform: translateX(-50%) translateY(-6px) scale(1.2); opacity:.6 } 100% { transform: translateX(-50%) scale(.9); opacity:.3 } }

.scn-john-refuses-flee { background: linear-gradient(180deg, #3a4a4a 0%, #2a3a3a 50%, #1a2a2a 100%), radial-gradient(ellipse at 50% 30%, #4a5a5a 0%, transparent 60%); }
.scn-john-refuses-flee .storm-sky { position:absolute; inset:0 0 55% 0; background: linear-gradient(180deg, #4a5a5a 0%, #2a3a3a 100%); animation: jrf-sky 16s ease-in-out infinite alternate; }
.scn-john-refuses-flee .ground-slab { position:absolute; bottom:0; left:0; right:0; height:55%; background: linear-gradient(180deg, #3a3a2a 0%, #2a2a1a 100%); clip-path: polygon(0 20%, 15% 15%, 30% 25%, 45% 10%, 60% 20%, 75% 8%, 90% 18%, 100% 12%, 100% 100%, 0 100%); animation: jrf-ground 25s ease-in-out infinite; }
.scn-john-refuses-flee .talbot-arm { position:absolute; bottom:38%; left:35%; width:12px; height:50px; background: linear-gradient(180deg, #2a2a2a 0%, #1a1a1a 100%); border-radius: 30% 30% 20% 20%; transform-origin: bottom center; transform: rotate(30deg); animation: jrf-arm 4s ease-in-out infinite; }
.scn-john-refuses-flee .john-standing { position:absolute; bottom:25%; right:30%; width:24px; height:48px; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: jrf-stand 5s ease-in-out infinite; }
.scn-john-refuses-flee .john-shield { position:absolute; bottom:30%; right:28%; width:20px; height:28px; background: linear-gradient(135deg, #4a3a2a 0%, #2a1a1a 100%); border-radius: 10% 10% 30% 30%; border: 1px solid #5a4a3a; transform: rotate(-10deg); transform-origin: center right; animation: jrf-shield 5s ease-in-out infinite; }
.scn-john-refuses-flee .sword-glint { position:absolute; bottom:42%; right:36%; width:4px; height:30px; background: linear-gradient(180deg, #8a8a9a 0%, #5a5a6a 100%); border-radius: 20% 20% 10% 10%; box-shadow: 0 0 6px 2px rgba(138,138,154,.5); animation: jrf-glint 3s ease-in-out infinite alternate; }
@keyframes jrf-sky { 0%,100% { opacity:.8 } 50% { opacity:.95 } }
@keyframes jrf-ground { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-2px) } }
@keyframes jrf-arm { 0% { transform: rotate(25deg) } 25% { transform: rotate(40deg) } 50% { transform: rotate(30deg) } 75% { transform: rotate(45deg) } 100% { transform: rotate(25deg) } }
@keyframes jrf-stand { 0%,100% { transform: translateX(0) rotate(0) } 30% { transform: translateX(-2px) rotate(-2deg) } 60% { transform: translateX(1px) rotate(1deg) } }
@keyframes jrf-shield { 0%,100% { transform: rotate(-10deg) } 50% { transform: rotate(-5deg) translateX(1px) } }
@keyframes jrf-glint { 0% { opacity:.4; box-shadow: 0 0 4px 1px rgba(138,138,154,.3) } 50% { opacity:1; box-shadow: 0 0 10px 3px rgba(138,138,154,.7) } 100% { opacity:.5; box-shadow: 0 0 5px 2px rgba(138,138,154,.4) } }

.scn-talbot-icarus { background: linear-gradient(180deg, #1a1a2a 0%, #2a2a3a 40%, #3a3a4a 80%, #4a4a5a 100%), radial-gradient(ellipse at 50% 15%, #3a3a4a 0%, #1a1a2a 70%); }
.scn-talbot-icarus .void-sky { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #1a1a2a 0%, #2a2a3a 100%); animation: tic-sky 18s ease-in-out infinite alternate; }
.scn-talbot-icarus .sun-disc { position:absolute; top:10%; left:50%; width:40px; height:40px; background: radial-gradient(circle, #c0a060 0%, #806040 50%, transparent 70%); border-radius:50%; transform: translateX(-50%); box-shadow: 0 0 30px 10px rgba(192,160,96,.3), 0 0 60px 20px rgba(192,160,96,.1); animation: tic-sun 20s ease-in-out infinite alternate; }
.scn-talbot-icarus .falling-body { position:absolute; top:20%; left:50%; width:22px; height:44px; background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform: translateX(-50%) rotate(15deg); transform-origin: center center; animation: tic-fall 6s ease-in-out infinite; }
.scn-talbot-icarus .wing-left { position:absolute; top:22%; left:45%; width:50px; height:20px; background: linear-gradient(135deg, rgba(40,30,20,.6) 0%, rgba(30,20,10,.3) 100%); border-radius: 60% 20% 40% 40% / 80% 40% 60% 40%; transform: rotate(-30deg); transform-origin: right center; filter: blur(1px); animation: tic-wing-l 4s ease-in-out infinite; }
.scn-talbot-icarus .wing-right { position:absolute; top:22%; right:45%; width:50px; height:20px; background: linear-gradient(225deg, rgba(40,30,20,.6) 0%, rgba(30,20,10,.3) 100%); border-radius: 20% 60% 40% 40% / 40% 80% 40% 60%; transform: rotate(30deg); transform-origin: left center; filter: blur(1px); animation: tic-wing-r 4s ease-in-out infinite; }
.scn-talbot-icarus .spark-trail { position:absolute; top:35%; left:45%; width:8px; height:60px; background: linear-gradient(180deg, rgba(200,160,80,.6) 0%, rgba(200,160,80,.1) 100%); border-radius:50%; filter: blur(3px); animation: tic-spark 3s ease-in-out infinite; }
.scn-talbot-icarus .cloud-wrack { position:absolute; top:5%; left:0; right:0; height:30%; background: linear-gradient(180deg, rgba(60,50,60,.4) 0%, transparent 100%); filter: blur(8px); animation: tic-cloud 40s linear infinite; }
@keyframes tic-sky { 0%,100% { opacity:.7 } 50% { opacity:.9 } }
@keyframes tic-sun { 0% { transform: translateX(-50%) scale(1); opacity:.6 } 50% { transform: translateX(-50%) scale(1.1); opacity:.9 } 100% { transform: translateX(-50%) scale(.95); opacity:.7 } }
@keyframes tic-fall { 0% { transform: translateX(-50%) rotate(15deg) translateY(0) } 25% { transform: translateX(-50%) rotate(10deg) translateY(10%) } 50% { transform: translateX(-50%) rotate(20deg) translateY(20%) } 75% { transform: translateX(-50%) rotate(5deg) translateY(30%) } 100% { transform: translateX(-50%) rotate(15deg) translateY(40%) } }
@keyframes tic-wing-l { 0%,100% { transform: rotate(-30deg) scale(1) } 50% { transform: rotate(-50deg) scale(.8) } }
@keyframes tic-wing-r { 0%,100% { transform: rotate(30deg) scale(1) } 50% { transform: rotate(50deg) scale(.8) } }
@keyframes tic-spark { 0% { opacity:1 } 50% { opacity:.3 } 100% { opacity:.7 } }
@keyframes tic-cloud { 0% { transform: translateX(-10%) } 100% { transform: translateX(10%) } }

.scn-talbots-death-lament { background: linear-gradient(90deg, #2a2a3a 0%, #3a3a4a 50%, #2a2a3a 100%), radial-gradient(ellipse at 50% 50%, #3a3a4a 0%, #1a1a2a 70%); }
.scn-talbots-death-lament .hall-wall { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #4a3a3a 0%, #3a2a2a 100%); box-shadow: inset 0 20px 40px rgba(0,0,0,.5); }
.scn-talbots-death-lament .hall-floor { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #3a2a2a 0%, #2a1a1a 100%); }
.scn-talbots-death-lament .pillar-left { position:absolute; bottom:0; left:15%; width:20px; height:80%; background: linear-gradient(90deg, #4a3a3a 0%, #5a4a4a 50%, #4a3a3a 100%); border-radius: 6px 6px 0 0; box-shadow: -4px 0 8px rgba(0,0,0,.3); animation: tdl-pillar 20s ease-in-out infinite alternate; }
.scn-talbots-death-lament .pillar-right { position:absolute; bottom:0; right:15%; width:20px; height:80%; background: linear-gradient(90deg, #4a3a3a 0%, #5a4a4a 50%, #4a3a3a 100%); border-radius: 6px 6px 0 0; box-shadow: 4px 0 8px rgba(0,0,0,.3); animation: tdl-pillar 20s ease-in-out infinite alternate 10s; }
.scn-talbots-death-lament .talbot-body { position:absolute; bottom:15%; left:35%; width:50px; height:20px; background: linear-gradient(180deg, #2a2a2a 0%, #1a1a1a 100%); border-radius: 10% 10% 30% 30%; transform: rotate(-5deg); animation: tdl-body 8s ease-in-out infinite; }
.scn-talbots-death-lament .john-body { position:absolute; bottom:18%; left:48%; width:40px; height:16px; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 10% 10% 30% 30%; transform: rotate(3deg); animation: tdl-body 8s ease-in-out infinite 4s; }
.scn-talbots-death-lament .talbot-body::before, .scn-talbots-death-lament .john-body::before { content:''; position:absolute; top:-10px; left:20%; width:12px; height:14px; background: radial-gradient(ellipse, #2a2a2a 0%, transparent 70%); border-radius:50%; }
.scn-talbots-death-lament .lucy-figure { position:absolute; bottom:22%; left:50%; width:18px; height:40px; background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform: translateX(-50%); transform-origin: bottom center; animation: tdl-lucy 6s ease-in-out infinite; }
.scn-talbots-death-lament .lamp-globe { position:absolute; top:5%; left:50%; width:24px; height:24px; background: radial-gradient(circle, #806040 0%, #4a3020 60%, transparent 80%); border-radius:50%; transform: translateX(-50%); box-shadow: 0 0 40px 10px rgba(128,96,64,.3), 0 0 80px 20px rgba(128,96,64,.1); animation: tdl-lamp 5s ease-in-out infinite alternate; }
@keyframes tdl-pillar { 0%,100% { transform: scaleY(1) } 50% { transform: scaleY(.98) } }
@keyframes tdl-body { 0%,100% { opacity:.7 } 50% { opacity:.85 } }
@keyframes tdl-lucy { 0%,100% { transform: translateX(-50%) rotate(0) } 30% { transform: translateX(-50%) translateY(-2px) rotate(-2deg) } 60% { transform: translateX(-50%) translateY(0) rotate(1deg) } }
@keyframes tdl-lamp { 0% { opacity:.7; box-shadow: 0 0 30px 8px rgba(128,96,64,.2), 0 0 60px 15px rgba(128,96,64,.1) } 50% { opacity:1; box-shadow: 0 0 50px 15px rgba(128,96,64,.4), 0 0 100px 25px rgba(128,96,64,.15) } 100% { opacity:.8; box-shadow: 0 0 35px 10px rgba(128,96,64,.25), 0 0 70px 18px rgba(128,96,64,.12) } }

.scn-suffolk-ambition {
  background:
    linear-gradient(180deg, #4a4a5a 0%, #2a2a3a 50%, #1a1a2a 100%),
    radial-gradient(ellipse at 50% 100%, #3a3a4a 0%, #1a1a2a 70%);
}
.scn-suffolk-ambition .sky-overcast {
  position: absolute; inset: 0 0 50% 0; background: linear-gradient(180deg, #5a5a6a 0%, transparent 100%);
  animation: sa-sky 14s ease-in-out infinite alternate;
}
.scn-suffolk-ambition .maze-bg {
  position: absolute; inset: 0; background: repeating-linear-gradient(90deg, #2a2a3a 0px, #2a2a3a 20px, #3a3a4a 20px, #3a3a4a 24px);
  mask: radial-gradient(ellipse at 50% 60%, transparent 40%, black 65%);
  -webkit-mask: radial-gradient(ellipse at 50% 60%, transparent 40%, black 65%);
  opacity: 0.4; animation: sa-maze 25s linear infinite;
}
.scn-suffolk-ambition .figure-suffolk {
  position: absolute; bottom: 20%; left: 30%; width: 24px; height: 48px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: sa-figure 6s ease-in-out infinite;
}
.scn-suffolk-ambition .shadow-figure {
  position: absolute; bottom: 18%; left: 30%; width: 30px; height: 10px;
  background: rgba(0,0,0,0.5); border-radius: 50%; filter: blur(4px);
  animation: sa-shadow 6s ease-in-out infinite;
}
.scn-suffolk-ambition .glow-ambition {
  position: absolute; bottom: 24%; left: 34%; width: 10px; height: 10px;
  background: radial-gradient(circle, #c0a060 0%, transparent 70%);
  border-radius: 50%; box-shadow: 0 0 20px 10px rgba(192,160,96,0.3);
  animation: sa-glow 3s ease-in-out infinite alternate;
}
.scn-suffolk-ambition .minotaur {
  position: absolute; bottom: 20%; right: 20%; width: 40px; height: 50px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform: rotate(-10deg); animation: sa-minotaur 7s ease-in-out infinite;
}
.scn-suffolk-ambition .dust-spiral {
  position: absolute; bottom: 15%; left: 10%; width: 5px; height: 40px;
  background: linear-gradient(180deg, rgba(200,190,170,0.6) 0%, transparent 100%);
  border-radius: 50%; filter: blur(3px);
  animation: sa-dust 10s linear infinite;
}
.scn-suffolk-ambition .dust-spiral.slow { left: 70%; animation-duration: 15s; animation-delay: -5s; }

@keyframes sa-sky { 0%{ opacity:0.7 } 50%{ opacity:0.9 } 100%{ opacity:0.6 } }
@keyframes sa-maze { 0%{ transform: translateX(0) } 100%{ transform: translateX(-60px) } }
@keyframes sa-figure { 0%{ transform: translateY(0) rotate(-1deg) } 25%{ transform: translateY(-2px) rotate(0deg) } 50%{ transform: translateY(-1px) rotate(1deg) } 75%{ transform: translateY(-2px) rotate(0deg) } 100%{ transform: translateY(0) rotate(-1deg) } }
@keyframes sa-shadow { 0%{ transform: scale(1) } 50%{ transform: scale(1.2) } 100%{ transform: scale(1) } }
@keyframes sa-glow { 0%{ opacity:0.5; box-shadow: 0 0 15px 5px rgba(192,160,96,0.2) } 50%{ opacity:1; box-shadow: 0 0 30px 15px rgba(192,160,96,0.5) } 100%{ opacity:0.6; box-shadow: 0 0 20px 8px rgba(192,160,96,0.3) } }
@keyframes sa-minotaur { 0%{ transform: rotate(-10deg) translateY(0) } 50%{ transform: rotate(-5deg) translateY(-3px) } 100%{ transform: rotate(-10deg) translateY(0) } }
@keyframes sa-dust { 0%{ transform: translateY(20px) rotate(0deg); opacity:0 } 30%{ opacity:1 } 70%{ opacity:1 } 100%{ transform: translateY(-40px) rotate(360deg); opacity:0 } }

.scn-joan-execution {
  background:
    linear-gradient(180deg, #1a1a2a 0%, #2a2a3a 30%, #0a0a1a 100%),
    radial-gradient(ellipse at 50% 20%, #3a3a4a 0%, transparent 70%);
}
.scn-joan-execution .sky-dark {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  animation: je-sky 20s ease-in-out infinite alternate;
}
.scn-joan-execution .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(0deg, #0a0a0a 0%, #1a1a1a 50%, #2a2a2a 100%);
  border-radius: 0 0 30% 70% / 0 0 10% 20%;
}
.scn-joan-execution .stake {
  position: absolute; bottom: 15%; left: 50%; transform: translateX(-50%);
  width: 8px; height: 60px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 4px;
}
.scn-joan-execution .figure-joan {
  position: absolute; bottom: 18%; left: 50%; transform: translateX(-50%);
  width: 22px; height: 50px;
  background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: je-joan 5s ease-in-out infinite;
}
.scn-joan-execution .rope {
  position: absolute; bottom: 40%; left: 47%; width: 30px; height: 2px;
  background: #5a4a3a; border-radius: 1px;
  transform: rotate(20deg); animation: je-rope 4s ease-in-out infinite;
}
.scn-joan-execution .smoke {
  position: absolute; bottom: 10%; left: 30%; width: 40px; height: 40px;
  background: radial-gradient(circle, rgba(180,170,160,0.3) 0%, transparent 70%);
  border-radius: 50%; filter: blur(8px);
  animation: je-smoke 8s ease-out infinite;
}
.scn-joan-execution .smoke-2 { left: 60%; animation-delay: -3s; }

@keyframes je-sky { 0%{ opacity:0.8 } 50%{ opacity:1 } 100%{ opacity:0.7 } }
@keyframes je-joan { 0%,100%{ transform: translateX(-50%) scaleY(1) } 50%{ transform: translateX(-50%) scaleY(0.95) translateY(2px) } }
@keyframes je-rope { 0%,100%{ transform: rotate(20deg) } 50%{ transform: rotate(15deg) } }
@keyframes je-smoke { 0%{ transform: translateY(0) scale(0.5); opacity:0.3 } 30%{ opacity:0.6 } 100%{ transform: translateY(-80px) scale(2); opacity:0 } }

.scn-peace-treaty {
  background:
    linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 50%, #1a1a2a 100%),
    radial-gradient(ellipse at 50% 100%, #2a2a3a 0%, transparent 60%);
}
.scn-peace-treaty .sky-overcast {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #4a4a5a 0%, transparent 100%);
  animation: pt-sky 18s ease-in-out infinite alternate;
}
.scn-peace-treaty .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(0deg, #2a2a2a 0%, #3a3a3a 100%);
  border-radius: 0 0 40% 60% / 0 0 20% 20%;
}
.scn-peace-treaty .table {
  position: absolute; bottom: 25%; left: 50%; transform: translateX(-50%);
  width: 80px; height: 8px;
  background: linear-gradient(90deg, #5a4a3a 0%, #4a3a2a 50%, #5a4a3a 100%);
  border-radius: 4px; box-shadow: 0 4px 8px rgba(0,0,0,0.5);
  animation: pt-table 12s ease-in-out infinite;
}
.scn-peace-treaty .figure-york {
  position: absolute; bottom: 20%; left: 35%; width: 24px; height: 48px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pt-york 7s ease-in-out infinite;
}
.scn-peace-treaty .figure-charles {
  position: absolute; bottom: 20%; right: 35%; width: 24px; height: 48px;
  background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pt-charles 7s ease-in-out infinite;
}
.scn-peace-treaty .choler-burst {
  position: absolute; bottom: 24%; left: 35%; width: 30px; height: 30px;
  background: radial-gradient(circle, #6a4a3a 0%, transparent 70%);
  border-radius: 50%; filter: blur(6px);
  animation: pt-choler 3s ease-in-out infinite alternate;
}
.scn-peace-treaty .scroll {
  position: absolute; bottom: 26%; left: 50%; transform: translateX(-50%);
  width: 30px; height: 6px;
  background: linear-gradient(90deg, #6a5a4a 0%, #8a7a6a 50%, #6a5a4a 100%);
  border-radius: 3px;
  animation: pt-scroll 8s ease-in-out infinite;
}

@keyframes pt-sky { 0%{ opacity:0.7 } 50%{ opacity:0.9 } 100%{ opacity:0.6 } }
@keyframes pt-table { 0%,100%{ transform: translateX(-50%) scaleX(1) } 50%{ transform: translateX(-50%) scaleX(0.95) } }
@keyframes pt-york { 0%{ transform: translateX(0) rotate(0deg) } 25%{ transform: translateX(-3px) rotate(-2deg) } 50%{ transform: translateX(0) rotate(0deg) } 75%{ transform: translateX(3px) rotate(2deg) } 100%{ transform: translateX(0) rotate(0deg) } }
@keyframes pt-charles { 0%{ transform: translateX(0) rotate(0deg) } 25%{ transform: translateX(3px) rotate(2deg) } 50%{ transform: translateX(0) rotate(0deg) } 75%{ transform: translateX(-3px) rotate(-2deg) } 100%{ transform: translateX(0) rotate(0deg) } }
@keyframes pt-choler { 0%{ opacity:0.2; transform: scale(0.8) } 50%{ opacity:0.6; transform: scale(1.2) } 100%{ opacity:0.3; transform: scale(1) } }
@keyframes pt-scroll { 0%,100%{ transform: translateX(-50%) scaleY(1) } 50%{ transform: translateX(-50%) scaleY(1.5) } }

.scn-suffolk-king-rule {
  background:
    linear-gradient(180deg, #c0a080 0%, #a08868 40%, #807060 100%),
    radial-gradient(ellipse at 50% 20%, #e0c0a0 0%, transparent 70%);
}
.scn-suffolk-king-rule .wall-bright {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #d0b090 0%, #b09878 100%);
  border-bottom: 2px solid #8a7a6a;
  animation: sk-wall 15s ease-in-out infinite alternate;
}
.scn-suffolk-king-rule .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(0deg, #705040 0%, #806050 100%);
  border-radius: 0 0 10% 10%;
}
.scn-suffolk-king-rule .throne {
  position: absolute; bottom: 15%; left: 50%; transform: translateX(-50%);
  width: 50px; height: 40px;
  background: linear-gradient(180deg, #9a7a5a 0%, #7a5a3a 100%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 0 8px 16px rgba(0,0,0,0.5);
  animation: sk-throne 4s ease-in-out infinite;
}
.scn-suffolk-king-rule .figure-henry {
  position: absolute; bottom: 22%; left: 50%; transform: translateX(-50%);
  width: 28px; height: 36px;
  background: linear-gradient(180deg, #b0a090 0%, #908070 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: sk-henry 6s ease-in-out infinite;
}
.scn-suffolk-king-rule .figure-suffolk2 {
  position: absolute; bottom: 20%; left: 25%; width: 22px; height: 46px;
  background: linear-gradient(180deg, #4a4a5a 0%, #2a2a3a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: sk-suffolk 5s ease-in-out infinite;
}
.scn-suffolk-king-rule .crown-glow {
  position: absolute; bottom: 30%; left: 50%; transform: translateX(-50%);
  width: 18px; height: 8px;
  background: radial-gradient(ellipse at 50% 50%, #ffe080 0%, transparent 70%);
  border-radius: 50%; box-shadow: 0 0 20px 8px rgba(255,224,128,0.4);
  animation: sk-crown 2s ease-in-out infinite alternate;
}
.scn-suffolk-king-rule .shadow-columns {
  position: absolute; top: 0; left: 0; width: 20%; height: 100%;
  background: linear-gradient(90deg, rgba(0,0,0,0.3) 0%, transparent 100%);
  animation: sk-columns 10s ease-in-out infinite alternate;
}

@keyframes sk-wall { 0%{ opacity:0.9 } 50%{ opacity:1 } 100%{ opacity:0.85 } }
@keyframes sk-throne { 0%,100%{ transform: translateX(-50%) scaleY(1) } 50%{ transform: translateX(-50%) scaleY(1.02) } }
@keyframes sk-henry { 0%,100%{ transform: translateX(-50%) rotate(0deg) } 25%{ transform: translateX(-48%) rotate(-1deg) } 50%{ transform: translateX(-50%) rotate(0deg) } 75%{ transform: translateX(-52%) rotate(1deg) } }
@keyframes sk-suffolk { 0%{ transform: translateY(0) rotate(-1deg) } 50%{ transform: translateY(-2px) rotate(2deg) } 100%{ transform: translateY(0) rotate(-1deg) } }
@keyframes sk-crown { 0%{ opacity:0.6; box-shadow: 0 0 15px 5px rgba(255,224,128,0.3) } 50%{ opacity:1; box-shadow: 0 0 30px 12px rgba(255,224,128,0.6) } 100%{ opacity:0.7; box-shadow: 0 0 20px 8px rgba(255,224,128,0.4) } }
@keyframes sk-columns { 0%{ opacity:0.3 } 50%{ opacity:0.5 } 100%{ opacity:0.2 } }

.scn-item-joans-torch {
  background: linear-gradient(180deg, #1a1a3e 0%, #3a1a1a 40%, #2a0a0a 100%), radial-gradient(ellipse at 60% 50%, #c8553d 0%, transparent 60%);
}
.scn-item-joans-torch .sky { position:absolute; inset:0 0 40% 0; background:linear-gradient(180deg, #2a2a4e 0%, transparent 100%); animation: jt-sky 12s ease-in-out infinite alternate; }
.scn-item-joans-torch .wall { position:absolute; bottom:30%; left:0; right:0; height:30%; background:linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius:20% 20% 0 0; box-shadow:inset 0 8px 20px rgba(0,0,0,.6); animation: jt-wall 20s ease-in-out infinite alternate; }
.scn-item-joans-torch .figure { position:absolute; bottom:28%; left:55%; width:22px; height:42px; background:linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin:bottom center; animation: jt-figure 3s ease-in-out infinite; }
.scn-item-joans-torch .torch { position:absolute; bottom:32%; left:58%; width:8px; height:16px; background:linear-gradient(180deg, #6a4a2a 0%, #3a2a1a 100%); border-radius:40% 40% 20% 20%; transform-origin:bottom center; animation: jt-torch 1.5s ease-in-out infinite alternate; }
.scn-item-joans-torch .flame { position:absolute; bottom:36%; left:58%; width:12px; height:20px; background:radial-gradient(circle, #ffd060 0%, #c8553d 70%, transparent 100%); border-radius:50% 50% 40% 40%; filter:blur(2px); animation: jt-flame 0.8s ease-in-out infinite alternate; }
.scn-item-joans-torch .comet { position:absolute; top:10%; left:0; width:60px; height:20px; background:linear-gradient(90deg, transparent, #ffd06080, #ff8040); border-radius:50%; filter:blur(6px); animation: jt-comet 25s linear infinite; }
.scn-item-joans-torch .spark-1 { position:absolute; bottom:36%; left:57%; width:4px; height:4px; background:#ffd060; border-radius:50%; box-shadow:0 0 8px 4px #ffd06080; animation: jt-spark1 2s ease-out infinite; }
.scn-item-joans-torch .spark-2 { position:absolute; bottom:36%; left:60%; width:3px; height:3px; background:#ff8040; border-radius:50%; box-shadow:0 0 6px 3px #ff804080; animation: jt-spark2 2.5s ease-out infinite; }
@keyframes jt-sky   { 0% { opacity:.7 } 50% { opacity:1 } 100% { opacity:.8 } }
@keyframes jt-wall  { 0%,100% { transform:translateY(0) } 50% { transform:translateY(-2px) } }
@keyframes jt-figure{ 0% { transform:translateX(0) rotate(-1deg) } 50% { transform:translateX(2px) rotate(1deg) } 100% { transform:translateX(-1px) rotate(0) } }
@keyframes jt-torch { 0% { transform:rotate(-3deg) } 50% { transform:rotate(3deg) } 100% { transform:rotate(-2deg) } }
@keyframes jt-flame { 0% { transform:scale(1) translateY(0); opacity:.9 } 50% { transform:scale(1.2) translateY(-3px); opacity:1 } 100% { transform:scale(0.9) translateY(2px); opacity:.7 } }
@keyframes jt-comet { 0% { transform:translateX(-80px) } 100% { transform:translateX(120vw) } }
@keyframes jt-spark1{ 0% { transform:translate(0,0) scale(1); opacity:1 } 50% { transform:translate(8px,-12px) scale(1.4); opacity:.6 } 100% { transform:translate(18px,-24px) scale(0.6); opacity:0 } }
@keyframes jt-spark2{ 0% { transform:translate(0,0) scale(1); opacity:1 } 50% { transform:translate(-6px,-18px) scale(1.2); opacity:.5 } 100% { transform:translate(-14px,-34px) scale(0.4); opacity:0 } }

.scn-talbot-challenge {
  background: linear-gradient(180deg, #f5e6d0 0%, #d4b896 50%, #a3805e 100%), radial-gradient(ellipse at 50% 40%, #f5e6d0 0%, transparent 70%);
}
.scn-talbot-challenge .bg { position:absolute; inset:0 0 20% 0; background:linear-gradient(180deg, #e8d5b0 0%, #c4a885 100%); }
.scn-talbot-challenge .floor { position:absolute; bottom:0; left:0; right:0; height:20%; background:linear-gradient(180deg, #8b6f50 0%, #5a4028 100%); box-shadow:inset 0 10px 20px rgba(0,0,0,.5); }
.scn-talbot-challenge .column-left { position:absolute; bottom:20%; left:10%; width:30px; height:60%; background:linear-gradient(180deg, #b59a7a 0%, #8b6f50 100%); border-radius:4px; box-shadow:inset -4px 0 8px rgba(0,0,0,.3); }
.scn-talbot-challenge .column-right { position:absolute; bottom:20%; right:10%; width:30px; height:60%; background:linear-gradient(180deg, #b59a7a 0%, #8b6f50 100%); border-radius:4px; box-shadow:inset 4px 0 8px rgba(0,0,0,.3); }
.scn-talbot-challenge .talbot { position:absolute; bottom:18%; left:48%; width:28px; height:52px; background:linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin:bottom center; animation: tc-figure 4s ease-in-out infinite; }
.scn-talbot-challenge .banner { position:absolute; bottom:35%; left:45%; width:12px; height:30px; background:#c8553d; border-radius:2px; transform-origin:bottom center; animation: tc-banner 3s ease-in-out infinite alternate; }
.scn-talbot-challenge .light-beam { position:absolute; top:10%; left:35%; width:30%; height:5%; background:linear-gradient(90deg, transparent, rgba(255,255,200,.4), transparent); filter:blur(8px); animation: tc-beam 6s ease-in-out infinite alternate; }
@keyframes tc-figure { 0% { transform:translateX(-2px) rotate(-1deg) } 50% { transform:translateX(0) rotate(2deg) } 100% { transform:translateX(2px) rotate(0deg) } }
@keyframes tc-banner { 0% { transform:rotate(-8deg) } 50% { transform:rotate(8deg) } 100% { transform:rotate(-4deg) } }
@keyframes tc-beam   { 0% { transform:translateX(-10px) scaleX(1) } 50% { transform:translateX(10px) scaleX(1.2) } 100% { transform:translateX(-5px) scaleX(0.9) } }

.scn-joan-entices-burgundy {
  background: linear-gradient(180deg, #808080 0%, #606060 50%, #404040 100%), radial-gradient(ellipse at 50% 80%, #808080 0%, transparent 70%);
}
.scn-joan-entices-burgundy .sky-overcast { position:absolute; inset:0 0 50% 0; background:linear-gradient(180deg, #a0a0b0 0%, #707080 100%); animation: jb-sky 20s ease-in-out infinite alternate; }
.scn-joan-entices-burgundy .hills { position:absolute; bottom:30%; left:0; right:0; height:25%; background:linear-gradient(180deg, #5a5a4a 0%, #3a3a2a 100%); border-radius:50% 50% 0 0 / 80% 80% 0 0; box-shadow:inset 0 6px 12px rgba(0,0,0,.4); animation: jb-hills 25s ease-in-out infinite alternate; }
.scn-joan-entices-burgundy .castle { position:absolute; bottom:28%; left:60%; width:70px; height:40px; background:linear-gradient(180deg, #7a6a5a 0%, #4a3a2a 100%); border-radius:6px 6px 2px 2px; box-shadow:0 4px 8px rgba(0,0,0,.5); animation: jb-castle 30s ease-in-out infinite alternate; }
.scn-joan-entices-burgundy .joan { position:absolute; bottom:22%; left:35%; width:20px; height:38px; background:linear-gradient(180deg, #2a1a1a 0%, #0a0a0a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin:bottom center; animation: jb-figure 6s ease-in-out infinite; }
.scn-joan-entices-burgundy .burgundy { position:absolute; bottom:22%; left:45%; width:24px; height:42px; background:linear-gradient(180deg, #3a2a1a 0%, #1a0a0a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin:bottom center; animation: jb-figure 6s ease-in-out infinite reverse; }
.scn-joan-entices-burgundy .messenger { position:absolute; bottom:24%; left:30%; width:16px; height:30px; background:linear-gradient(180deg, #4a3a2a 0%, #2a1a1a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; animation: jb-messenger 8s ease-in-out infinite; }
@keyframes jb-sky  { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.7 } }
@keyframes jb-hills{ 0% { transform:translateY(0) } 50% { transform:translateY(-2px) } 100% { transform:translateY(0) } }
@keyframes jb-castle{ 0% { transform:scale(1) } 50% { transform:scale(1.02) } 100% { transform:scale(0.98) } }
@keyframes jb-figure{ 0% { transform:translateX(-1px) rotate(-1deg) } 50% { transform:translateX(1px) rotate(1deg) } 100% { transform:translateX(0) rotate(0) } }
@keyframes jb-messenger{ 0% { transform:translateX(0) rotate(0) } 50% { transform:translateX(4px) rotate(2deg) } 100% { transform:translateX(-2px) rotate(-1deg) } }

.scn-paris-court-roses-quarrel {
  background: linear-gradient(180deg, #f0e8d8 0%, #d4b896 50%, #b09878 100%), radial-gradient(ellipse at 50% 30%, #ffe8c0 0%, transparent 60%);
}
.scn-paris-court-roses-quarrel .court-bg { position:absolute; inset:0 0 15% 0; background:linear-gradient(180deg, #e8d5b0 0%, #c4a885 100%); }
.scn-paris-court-roses-quarrel .throne { position:absolute; bottom:25%; left:20%; width:40px; height:50px; background:linear-gradient(180deg, #c8a060 0%, #8a6030 100%); border-radius:30% 30% 10% 10%; box-shadow:0 4px 8px rgba(0,0,0,.4); animation: pc-throne 10s ease-in-out infinite alternate; }
.scn-paris-court-roses-quarrel .vernon { position:absolute; bottom:12%; left:40%; width:22px; height:48px; background:linear-gradient(180deg, #4a3a2a 0%, #1a0a00 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin:bottom center; animation: pc-fight 2s ease-in-out infinite; }
.scn-paris-court-roses-quarrel .basset { position:absolute; bottom:12%; left:48%; width:22px; height:48px; background:linear-gradient(180deg, #3a2a1a 0%, #0a0a0a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin:bottom center; animation: pc-fight 2s ease-in-out infinite reverse; }
.scn-paris-court-roses-quarrel .rose-1 { position:absolute; top:30%; left:35%; width:14px; height:14px; background:radial-gradient(circle, #b87878 0%, #702243 100%); border-radius:50%; box-shadow:0 0 10px 4px #b8787860; animation: pc-rose 5s ease-in infinite; }
.scn-paris-court-roses-quarrel .rose-2 { position:absolute; top:40%; left:45%; width:10px; height:10px; background:radial-gradient(circle, #b87878 0%, #702243 100%); border-radius:50%; box-shadow:0 0 8px 3px #b8787860; animation: pc-rose 6s ease-in infinite 1s; }
.scn-paris-court-roses-quarrel .rose-3 { position:absolute; top:35%; left:55%; width:12px; height:12px; background:radial-gradient(circle, #b87878 0%, #702243 100%); border-radius:50%; box-shadow:0 0 9px 3px #b8787860; animation: pc-rose 5.5s ease-in infinite 2.5s; }
@keyframes pc-throne{ 0% { transform:scale(1) rotate(0) } 50% { transform:scale(1.03) rotate(0.5deg) } 100% { transform:scale(0.97) rotate(-0.5deg) } }
@keyframes pc-fight{ 0% { transform:translateX(-2px) rotate(-2deg) } 50% { transform:translateX(2px) rotate(2deg) } 100% { transform:translateX(-1px) rotate(-1deg) } }
@keyframes pc-rose { 0% { transform:translateY(0) rotate(0) scale(1) } 50% { transform:translateY(30px) rotate(180deg) scale(0.8) } 100% { transform:translateY(60px) rotate(360deg) scale(0.3) } }

/* talbots-shadow (ts) */
.scn-talbots-shadow { background: linear-gradient(180deg, #f9d77e 0%, #d4a54a 40%, #b08030 100%), radial-gradient(ellipse at 50% 100%, #e5b860 0%, transparent 60%); }
.scn-talbots-shadow .bg-sky { position:absolute; inset:0 0 45% 0; background: linear-gradient(180deg, #fae08c 0%, #f5d06a 100%); animation: ts-sky 12s ease-in-out infinite alternate; }
.scn-talbots-shadow .bg-floor { position:absolute; bottom:0; left:0; right:0; height:45%; background: linear-gradient(180deg, #c9a05a 0%, #8e6a30 100%); border-radius: 40% 0 0 0 / 20% 0 0 0; box-shadow: inset 0 20px 40px rgba(0,0,0,.2); }
.scn-talbots-shadow .talbot { position:absolute; bottom:30%; left:35%; width:40px; height:70px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a1a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%; transform-origin: bottom center; animation: ts-figure 6s ease-in-out infinite; box-shadow: 0 4px 8px rgba(0,0,0,.3); }
.scn-talbots-shadow .shadow { position:absolute; bottom:15%; left:32%; width:70px; height:25px; background: radial-gradient(ellipse at 50% 100%, rgba(0,0,0,.4) 0%, transparent 70%); border-radius: 50%; animation: ts-shadow 6s ease-in-out infinite; opacity: .7; }
.scn-talbots-shadow .soldiers { position:absolute; bottom:28%; right:10%; width:80px; height:50px; background: linear-gradient(90deg, #3a2a1a 0%, #4a3a2a 20%, #3a2a1a 40%, #4a3a2a 60%, #3a2a1a 80%, #4a3a2a 100%); border-radius: 20% 20% 0 0; clip-path: polygon(10% 0%, 20% 0%, 30% 0%, 40% 0%, 50% 0%, 60% 0%, 70% 0%, 80% 0%, 90% 0%, 100% 0%, 95% 100%, 5% 100%); animation: ts-march 4s ease-in-out infinite; }
.scn-talbots-shadow .horn { position:absolute; bottom:40%; left:45%; width:12px; height:8px; background: linear-gradient(180deg, #c8a040 0%, #a08020 100%); border-radius: 50% 50% 0 0; transform: rotate(-15deg); animation: ts-horn 3s ease-in-out infinite; }
.scn-talbots-shadow .drum { position:absolute; bottom:34%; right:20%; width:30px; height:20px; background: linear-gradient(180deg, #8a6020 0%, #6a4010 100%); border-radius: 10% 10% 20% 20%; box-shadow: inset 0 -4px 6px rgba(0,0,0,.3); animation: ts-drum 2s ease-in-out infinite; }

@keyframes ts-sky { 0% { opacity:.9 } 50% { opacity:1 } 100% { opacity:.8 } }
@keyframes ts-figure { 0% { transform: translateY(0) rotate(-2deg); } 50% { transform: translateY(-3px) rotate(1deg); } 100% { transform: translateY(0) rotate(-2deg); } }
@keyframes ts-shadow { 0% { transform: scaleX(1) translateX(0); } 50% { transform: scaleX(1.1) translateX(5px); } 100% { transform: scaleX(1) translateX(0); } }
@keyframes ts-march { 0% { transform: translateX(0) rotate(0); } 25% { transform: translateX(-10px) rotate(-1deg); } 75% { transform: translateX(10px) rotate(1deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes ts-horn { 0%,100% { transform: rotate(-15deg) scale(1); } 50% { transform: rotate(-10deg) scale(1.1); } }
@keyframes ts-drum { 0%,100% { transform: scale(1); } 50% { transform: scale(1.05) translateY(-1px); } }

/* item-rose-contest (rc) */
.scn-item-rose-contest { background: linear-gradient(180deg, #f9e5a0 0%, #d4b86a 50%, #a08040 100%), radial-gradient(ellipse at 50% 0%, #fff0c0 0%, transparent 70%); }
.scn-item-rose-contest .bg-sky { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #fae5a0 0%, #f5d06a 100%); animation: rc-sky 15s ease-in-out infinite alternate; }
.scn-item-rose-contest .bg-ground { position:absolute; bottom:0; left:0; right:0; height:50%; background: linear-gradient(180deg, #b0a060 0%, #7a6a30 100%); border-radius: 60% 40% 0 0 / 30% 20% 0 0; box-shadow: inset 0 10px 20px rgba(0,0,0,.15); }
.scn-item-rose-contest .bush-left { position:absolute; bottom:20%; left:15%; width:80px; height:60px; background: radial-gradient(ellipse at 50% 60%, #5a7a3a 0%, #3a5a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%; animation: rc-bush-left 8s ease-in-out infinite; }
.scn-item-rose-contest .bush-right { position:absolute; bottom:20%; right:15%; width:80px; height:60px; background: radial-gradient(ellipse at 50% 60%, #5a7a3a 0%, #3a5a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%; animation: rc-bush-right 8s ease-in-out infinite; animation-delay: 2s; }
.scn-item-rose-contest .figure-left { position:absolute; bottom:30%; left:20%; width:20px; height:50px; background: linear-gradient(180deg, #3a2a1a 0%, #1a1a0a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 20% 20%; transform-origin: bottom; animation: rc-figure-left 5s ease-in-out infinite; }
.scn-item-rose-contest .figure-right { position:absolute; bottom:30%; right:20%; width:20px; height:50px; background: linear-gradient(180deg, #3a2a1a 0%, #1a1a0a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 20% 20%; transform-origin: bottom; animation: rc-figure-right 5s ease-in-out infinite; animation-delay: 1s; }
.scn-item-rose-contest .rose-center { position:absolute; bottom:35%; left:50%; width:20px; height:20px; transform: translateX(-50%); background: radial-gradient(circle, #c8553d 0%, #8b3a2a 70%); border-radius: 50%; box-shadow: 0 0 12px 6px rgba(200,85,61,.4); animation: rc-rose 3s ease-in-out infinite; }

@keyframes rc-sky { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.85 } }
@keyframes rc-bush-left { 0%,100% { transform: scale(1) translateY(0); } 50% { transform: scale(1.03) translateY(-2px); } }
@keyframes rc-bush-right { 0%,100% { transform: scale(1) translateY(0); } 50% { transform: scale(1.03) translateY(-2px); } }
@keyframes rc-figure-left { 0% { transform: translateY(0) rotate(-3deg); } 33% { transform: translateY(-5px) rotate(0deg); } 66% { transform: translateY(2px) rotate(3deg); } 100% { transform: translateY(0) rotate(-3deg); } }
@keyframes rc-figure-right { 0% { transform: translateY(0) rotate(3deg); } 33% { transform: translateY(-5px) rotate(0deg); } 66% { transform: translateY(2px) rotate(-3deg); } 100% { transform: translateY(0) rotate(3deg); } }
@keyframes rc-rose { 0%,100% { transform: translateX(-50%) scale(1); opacity:.9; } 50% { transform: translateX(-50%) scale(1.2); opacity:1; } }

/* plantagenet-rose-vow (pr) */
.scn-plantagenet-rose-vow { background: linear-gradient(180deg, #1a1a2e 0%, #2c2238 40%, #3a2a4a 100%), radial-gradient(ellipse at 50% 80%, #4a3a5a 0%, transparent 70%); }
.scn-plantagenet-rose-vow .bg-wall { position:absolute; inset:0; background: linear-gradient(90deg, #2a223a 0%, #3a2a4a 50%, #2a223a 100%); animation: pr-wall 20s ease-in-out infinite alternate; }
.scn-plantagenet-rose-vow .bg-floor { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, #2a1a2a 0%, #1a0a1a 100%); border-radius: 50% 50% 0 0 / 20% 20% 0 0; box-shadow: inset 0 10px 30px rgba(0,0,0,.5); }
.scn-plantagenet-rose-vow .window { position:absolute; top:15%; left:50%; transform:translateX(-50%); width:60px; height:80px; background: linear-gradient(180deg, #4a3a5a 0%, #2a1a3a 100%); border: 3px solid #6a4a6a; border-radius: 10%; box-shadow: inset 0 0 20px rgba(0,0,0,.4); animation: pr-window 8s ease-in-out infinite; }
.scn-plantagenet-rose-vow .window::before { content:''; position:absolute; top:10px; left:10px; right:10px; bottom:10px; background: radial-gradient(ellipse at 50% 50%, #5a4a6a 0%, transparent 70%); box-shadow: 0 0 30px 10px rgba(90,74,106,.3); }
.scn-plantagenet-rose-vow .plantagenet { position:absolute; bottom:30%; left:30%; width:30px; height:60px; background: linear-gradient(180deg, #3a2a3a 0%, #1a0a1a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%; transform-origin: bottom; animation: pr-figure 6s ease-in-out infinite; }
.scn-plantagenet-rose-vow .warwick { position:absolute; bottom:30%; right:30%; width:30px; height:55px; background: linear-gradient(180deg, #2a1a2a 0%, #0a0a0a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%; transform-origin: bottom; animation: pr-figure 6s ease-in-out infinite; animation-delay: 2s; }
.scn-plantagenet-rose-vow .rose-symbol { position:absolute; bottom:40%; left:40%; width:15px; height:15px; background: radial-gradient(circle, #c8553d 0%, #8b3a2a 70%); border-radius: 50%; box-shadow: 0 0 15px 5px rgba(200,85,61,.5); animation: pr-rose 4s ease-in-out infinite; }

@keyframes pr-wall { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.9 } }
@keyframes pr-window { 0%,100% { transform: translateX(-50%) scale(1); } 50% { transform: translateX(-50%) scale(1.02); } }
@keyframes pr-figure { 0% { transform: translateY(0) rotate(-2deg); } 50% { transform: translateY(-4px) rotate(1deg); } 100% { transform: translateY(0) rotate(-2deg); } }
@keyframes pr-rose { 0%,100% { transform: scale(1); opacity:.8; } 50% { transform: scale(1.3); opacity:1; } }

/* mortimer-revelation (mr) */
.scn-mortimer-revelation { background: linear-gradient(180deg, #0a0a1a 0%, #1a1a2e 50%, #2a1a2a 100%), radial-gradient(ellipse at 50% 50%, #1a1a2e 0%, transparent 70%); }
.scn-mortimer-revelation .bg-wall { position:absolute; inset:0; background: linear-gradient(180deg, #1a1a2e 0%, #2a1a2a 100%); animation: mr-wall 25s ease-in-out infinite alternate; box-shadow: inset 0 0 100px rgba(0,0,0,.7); }
.scn-mortimer-revelation .bg-floor { position:absolute; bottom:0; left:0; right:0; height:35%; background: linear-gradient(180deg, #1a0a1a 0%, #0a0a0a 100%); border-radius: 60% 40% 0 0 / 30% 20% 0 0; }
.scn-mortimer-revelation .prison-bars { position:absolute; top:0; left:30%; right:30%; bottom:0; background: linear-gradient(90deg, transparent 0%, #3a3a4a 10%, transparent 15%, #3a3a4a 25%, transparent 30%, #3a3a4a 40%, transparent 45%, #3a3a4a 55%, transparent 60%, #3a3a4a 70%, transparent 75%, #3a3a4a 85%, transparent 90%, #3a3a4a 100%); opacity: .5; animation: mr-bars 10s ease-in-out infinite; }
.scn-mortimer-revelation .chair { position:absolute; bottom:20%; left:50%; transform:translateX(-50%); width:50px; height:60px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a1a 100%); border-radius: 10% 10% 20% 20%; box-shadow: 0 8px 16px rgba(0,0,0,.5); animation: mr-chair 8s ease-in-out infinite; }
.scn-mortimer-revelation .mortimer { position:absolute; bottom:25%; left:45%; width:30px; height:50px; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 20% 20%; transform-origin: bottom; animation: mr-figure 6s ease-in-out infinite; }
.scn-mortimer-revelation .richard { position:absolute; bottom:25%; right:30%; width:25px; height:55px; background: linear-gradient(180deg, #3a2a3a 0%, #1a0a1a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 20% 20%; transform-origin: bottom; animation: mr-figure 6s ease-in-out infinite; animation-delay: 3s; }
.scn-mortimer-revelation .lantern { position:absolute; top:40%; left:20%; width:8px; height:10px; background: radial-gradient(circle, #ffd680 0%, #b08040 70%); border-radius: 50%; box-shadow: 0 0 20px 6px rgba(255,214,128,.5); animation: mr-lantern 4s ease-in-out infinite; }

@keyframes mr-wall { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.9 } }
@keyframes mr-bars { 0%,100% { opacity:.4; } 50% { opacity:.6; } }
@keyframes mr-chair { 0% { transform: translateX(-50%) scale(1); } 50% { transform: translateX(-50%) scale(1.02); } 100% { transform: translateX(-50%) scale(1); } }
@keyframes mr-figure { 0% { transform: translateY(0) rotate(-1deg); } 50% { transform: translateY(-3px) rotate(1deg); } 100% { transform: translateY(0) rotate(-1deg); } }
@keyframes mr-lantern { 0%,100% { transform: scale(1); opacity:.8; } 50% { transform: scale(1.2); opacity:1; } }

/* Scene: westminster-abbey-funeral  (dim interior, dark) */
.scn-westminster-abbey-funeral {
  background:
    linear-gradient(180deg, #1a1818 0%, #2c2828 30%, #1e1c1c 100%),
    radial-gradient(ellipse at 50% 0%, #2a2525 0%, #0f0e0e 70%);
}
.scn-westminster-abbey-funeral .abbey-wall {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(90deg, #2a2626 0%, #3a3535 20%, #2a2626 40%, #1f1c1c 100%);
  opacity: 0.9;
  animation: wf-wall 12s ease-in-out infinite alternate;
}
.scn-westminster-abbey-funeral .abbey-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 28%;
  background: linear-gradient(180deg, #1a1818 0%, #0f0e0e 100%);
  box-shadow: inset 0 8px 15px rgba(0,0,0,0.6);
}
.scn-westminster-abbey-funeral .catafalque {
  position: absolute; bottom: 22%; left: 50%; width: 120px; height: 50px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #4a3a3a 0%, #2a1a1a 100%);
  border-radius: 8px 8px 4px 4px;
  box-shadow: 0 6px 20px rgba(0,0,0,0.7), inset 0 2px 4px rgba(80,60,60,0.3);
  animation: wf-catafalque 8s ease-in-out infinite;
}
.scn-westminster-abbey-funeral .mourner.left {
  position: absolute; bottom: 28%; left: 20%; 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: wf-mourner-left 6s ease-in-out infinite;
}
.scn-westminster-abbey-funeral .mourner.right {
  position: absolute; bottom: 28%; right: 20%; 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: wf-mourner-right 6s ease-in-out infinite alternate;
}
.scn-westminster-abbey-funeral .candle.left {
  position: absolute; bottom: 35%; left: 35%; width: 6px; height: 20px;
  background: linear-gradient(180deg, #8a7a6a 0%, #4a3a2a 100%);
  border-radius: 2px 2px 1px 1px;
  box-shadow: 0 0 10px 3px #d4a050;
  animation: wf-candle-flicker 2s ease-in-out infinite;
}
.scn-westminster-abbey-funeral .candle.right {
  position: absolute; bottom: 35%; right: 35%; width: 6px; height: 20px;
  background: linear-gradient(180deg, #8a7a6a 0%, #4a3a2a 100%);
  border-radius: 2px 2px 1px 1px;
  box-shadow: 0 0 10px 3px #d4a050;
  animation: wf-candle-flicker 2.3s ease-in-out infinite reverse;
}
.scn-westminster-abbey-funeral .stained-glass {
  position: absolute; top: 5%; left: 35%; right: 35%; height: 30%;
  background:
    radial-gradient(circle at 30% 40%, rgba(100,60,140,0.4) 0%, transparent 60%),
    radial-gradient(circle at 70% 60%, rgba(60,100,140,0.3) 0%, transparent 50%);
  border-radius: 20% / 10%;
  filter: blur(3px);
  opacity: 0.6;
  animation: wf-glass 15s ease-in-out infinite alternate;
}
@keyframes wf-wall {
  0% { opacity: 0.85; }
  50% { opacity: 0.95; }
  100% { opacity: 0.8; }
}
@keyframes wf-catafalque {
  0%, 100% { transform: translateX(-50%) translateY(0); }
  50% { transform: translateX(-50%) translateY(-1px); }
}
@keyframes wf-mourner-left {
  0% { transform: translateX(0) translateY(0) rotate(-2deg); }
  25% { transform: translateX(2px) translateY(-1px) rotate(1deg); }
  50% { transform: translateX(0) translateY(0) rotate(-1deg); }
  75% { transform: translateX(-2px) translateY(-1px) rotate(2deg); }
  100% { transform: translateX(0) translateY(0) rotate(-2deg); }
}
@keyframes wf-mourner-right {
  0% { transform: translateX(0) translateY(0) rotate(2deg); }
  25% { transform: translateX(-2px) translateY(-1px) rotate(-1deg); }
  50% { transform: translateX(0) translateY(0) rotate(1deg); }
  75% { transform: translateX(2px) translateY(-1px) rotate(-2deg); }
  100% { transform: translateX(0) translateY(0) rotate(2deg); }
}
@keyframes wf-candle-flicker {
  0% { transform: translateY(0) scaleY(1); opacity: 0.9; box-shadow: 0 0 8px 2px #d4a050; }
  25% { transform: translateY(-1px) scaleY(1.05); opacity: 1; box-shadow: 0 0 14px 4px #e8b860; }
  50% { transform: translateY(0) scaleY(0.98); opacity: 0.85; box-shadow: 0 0 10px 3px #c09040; }
  75% { transform: translateY(-1px) scaleY(1.02); opacity: 0.95; box-shadow: 0 0 12px 4px #d4a050; }
  100% { transform: translateY(0) scaleY(1); opacity: 0.9; box-shadow: 0 0 8px 2px #d4a050; }
}
@keyframes wf-glass {
  0% { opacity: 0.5; filter: blur(4px); }
  50% { opacity: 0.7; filter: blur(2px); }
  100% { opacity: 0.55; filter: blur(4px); }
}

/* Scene: accusations-sorcery  (dim interior, tense) */
.scn-accusations-sorcery {
  background:
    linear-gradient(180deg, #1a1218 0%, #2a1e22 40%, #120e12 100%),
    radial-gradient(ellipse at 50% 80%, #3a282e 0%, transparent 70%);
}
.scn-accusations-sorcery .table {
  position: absolute; bottom: 18%; left: 30%; right: 30%; height: 8%;
  background: linear-gradient(180deg, #3a2a2a 0%, #1a1010 100%);
  border-radius: 4px 4px 2px 2px;
  box-shadow: 0 6px 12px rgba(0,0,0,0.6);
}
.scn-accusations-sorcery .figure.accuser-left {
  position: absolute; bottom: 20%; left: 22%; width: 40px; height: 70px;
  background: linear-gradient(180deg, #1a1a22 0%, #0a0a12 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: as-figure-left 2.5s ease-in-out infinite;
}
.scn-accusations-sorcery .figure.accuser-right {
  position: absolute; bottom: 20%; right: 22%; width: 40px; height: 70px;
  background: linear-gradient(180deg, #1a1a22 0%, #0a0a12 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: as-figure-right 2.8s ease-in-out infinite;
}
.scn-accusations-sorcery .fire {
  position: absolute; bottom: 20%; left: 50%; width: 20px; height: 40px;
  transform: translateX(-50%);
  background: radial-gradient(ellipse at 50% 100%, #e07030 0%, #b04010 60%, #802000 100%);
  border-radius: 50% 50% 30% 30% / 70% 70% 30% 30%;
  box-shadow: 0 0 30px 8px #d05020, 0 0 60px 15px rgba(200,80,30,0.5);
  animation: as-fire 1.2s ease-in-out infinite alternate;
}
.scn-accusations-sorcery .sorcery-glow {
  position: absolute; top: 35%; left: 30%; right: 30%; height: 30%;
  background: radial-gradient(circle at 50% 50%, rgba(120,40,180,0.25) 0%, transparent 70%);
  mix-blend-mode: screen;
  animation: as-glow 3s ease-in-out infinite alternate;
}
.scn-accusations-sorcery .book {
  position: absolute; bottom: 23%; left: 35%; width: 40px; height: 20px;
  background: linear-gradient(135deg, #5a3a2a 0%, #3a1a0a 100%);
  border-radius: 2px;
  transform: rotate(-5deg);
  box-shadow: 2px 2px 6px rgba(0,0,0,0.5);
  animation: as-book 6s ease-in-out infinite;
}
@keyframes as-figure-left {
  0% { transform: translateX(0) translateY(0) rotate(-5deg) scaleY(1); }
  25% { transform: translateX(8px) translateY(-3px) rotate(3deg) scaleY(1.02); }
  50% { transform: translateX(0) translateY(0) rotate(-3deg) scaleY(1); }
  75% { transform: translateX(-6px) translateY(-2px) rotate(4deg) scaleY(1.01); }
  100% { transform: translateX(0) translateY(0) rotate(-5deg) scaleY(1); }
}
@keyframes as-figure-right {
  0% { transform: translateX(0) translateY(0) rotate(5deg) scaleY(1); }
  25% { transform: translateX(-6px) translateY(-2px) rotate(-3deg) scaleY(1.01); }
  50% { transform: translateX(0) translateY(0) rotate(4deg) scaleY(1); }
  75% { transform: translateX(8px) translateY(-3px) rotate(-4deg) scaleY(1.02); }
  100% { transform: translateX(0) translateY(0) rotate(5deg) scaleY(1); }
}
@keyframes as-fire {
  0% { transform: translateX(-50%) scaleY(1) scaleX(1); opacity: 0.9; }
  25% { transform: translateX(-50%) scaleY(1.1) scaleX(1.05); opacity: 1; }
  50% { transform: translateX(-50%) scaleY(0.95) scaleX(0.95); opacity: 0.85; }
  75% { transform: translateX(-50%) scaleY(1.05) scaleX(1.02); opacity: 0.95; }
  100% { transform: translateX(-50%) scaleY(1) scaleX(1); opacity: 0.9; }
}
@keyframes as-glow {
  0% { opacity: 0.3; filter: blur(8px); }
  50% { opacity: 0.7; filter: blur(5px); }
  100% { opacity: 0.4; filter: blur(10px); }
}
@keyframes as-book {
  0%, 100% { transform: rotate(-5deg) translateY(0); }
  50% { transform: rotate(-3deg) translateY(-2px); }
}

/* Scene: bad-news-cascade  (dim interior, dark) */
.scn-bad-news-cascade {
  background:
    linear-gradient(180deg, #101012 0%, #1a181c 40%, #0c0c0e 100%),
    radial-gradient(ellipse at 50% 100%, #1a1818 0%, transparent 70%);
}
.scn-bad-news-cascade .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #1a1818 0%, #0e0c0c 100%);
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.7);
}
.scn-bad-news-cascade .figure.collapsing {
  position: absolute; bottom: 18%; left: 30%; width: 40px; height: 70px;
  background: linear-gradient(180deg, #1c1a1a 0%, #0a0808 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom right;
  animation: bn-collapse 4s ease-in-out infinite;
}
.scn-bad-news-cascade .messenger {
  position: absolute; bottom: 25%; right: 25%; width: 30px; height: 55px;
  background: linear-gradient(180deg, #222022 0%, #100e10 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bn-messenger 3s ease-in-out infinite;
}
.scn-bad-news-cascade .scroll.falling {
  position: absolute; top: 10%; left: 45%; width: 18px; height: 70px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 4px;
  transform: rotate(15deg);
  box-shadow: 0 4px 10px rgba(0,0,0,0.6);
  animation: bn-scroll 5s linear infinite;
}
.scn-bad-news-cascade .debris {
  position: absolute; bottom: 12%; left: 20%; right: 20%; height: 6%;
  background: linear-gradient(135deg, #2a2220 0%, #1a1210 50%, #2a2220 100%);
  border-radius: 30% 70% 50% 50%;
  opacity: 0.4;
  animation: bn-debris 8s ease-in-out infinite alternate;
}
@keyframes bn-collapse {
  0% { transform: rotate(0deg) translateY(0) scaleY(1); }
  25% { transform: rotate(10deg) translateY(5px) scaleY(0.95); }
  50% { transform: rotate(20deg) translateY(15px) scaleY(0.85); }
  75% { transform: rotate(10deg) translateY(10px) scaleY(0.9); }
  100% { transform: rotate(0deg) translateY(0) scaleY(1); }
}
@keyframes bn-messenger {
  0% { transform: translateX(0) translateY(0) rotate(-3deg); }
  25% { transform: translateX(-10px) translateY(-2px) rotate(5deg); }
  50% { transform: translateX(0) translateY(0) rotate(2deg); }
  75% { transform: translateX(8px) translateY(-1px) rotate(-4deg); }
  100% { transform: translateX(0) translateY(0) rotate(-3deg); }
}
@keyframes bn-scroll {
  0% { transform: rotate(15deg) translateY(0); opacity: 1; }
  30% { transform: rotate(10deg) translateY(20vh); opacity: 0.9; }
  60% { transform: rotate(20deg) translateY(40vh); opacity: 0.7; }
  100% { transform: rotate(5deg) translateY(80vh); opacity: 0; }
}
@keyframes bn-debris {
  0% { transform: translateY(0) scale(1); opacity: 0.3; }
  50% { transform: translateY(-5px) scale(1.05); opacity: 0.5; }
  100% { transform: translateY(3px) scale(0.95); opacity: 0.3; }
}

/* Scene: bedfords-vow  (dim interior, tense) */
.scn-bedfords-vow {
  background:
    linear-gradient(180deg, #1a1420 0%, #2a2230 35%, #120e18 100%),
    radial-gradient(ellipse at 50% 80%, #3a2a48 0%, transparent 70%);
}
.scn-bedfords-vow .vow-figure {
  position: absolute; bottom: 18%; left: 50%; width: 40px; height: 75px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #1c1a24 0%, #0a0812 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bv-figure 5s ease-in-out infinite;
}
.scn-bedfords-vow .banner {
  position: absolute; bottom: 45%; left: 55%; width: 20px; height: 70px;
  background: linear-gradient(180deg, #5a3030 0%, #3a1a1a 100%);
  border-radius: 2px;
  transform-origin: bottom left;
  animation: bv-banner 3s ease-in-out infinite alternate;
}
.scn-bedfords-vow .sword {
  position: absolute; bottom: 35%; left: 45%; width: 6px; height: 60px;
  background: linear-gradient(180deg, #a0a0a0 0%, #606060 100%);
  border-radius: 2px;
  transform: rotate(20deg);
  box-shadow: 0 0 6px 2px rgba(160,160,160,0.3);
  animation: bv-sword 2s ease-in-out infinite alternate;
}
.scn-bedfords-vow .map-table {
  position: absolute; bottom: 10%; left: 25%; right: 25%; height: 10%;
  background: linear-gradient(180deg, #3a2a2a 0%, #1a1010 100%);
  border-radius: 6px 6px 2px 2px;
  box-shadow: 0 -4px 10px rgba(0,0,0,0.5);
}
.scn-bedfords-vow .vow-glow {
  position: absolute; top: 20%; left: 35%; right: 35%; height: 40%;
  background: radial-gradient(circle at 50% 50%, rgba(180,120,60,0.15) 0%, transparent 70%);
  mix-blend-mode: screen;
  animation: bv-glow 4s ease-in-out infinite alternate;
}
@keyframes bv-figure {
  0% { transform: translateX(-50%) translateY(0) rotate(0deg) scaleY(1); }
  25% { transform: translateX(-50%) translateY(-2px) rotate(2deg) scaleY(1.02); }
  50% { transform: translateX(-50%) translateY(0) rotate(0deg) scaleY(1); }
  75% { transform: translateX(-50%) translateY(-1px) rotate(-2deg) scaleY(1.01); }
  100% { transform: translateX(-50%) translateY(0) rotate(0deg) scaleY(1); }
}
@keyframes bv-banner {
  0% { transform: rotate(0deg) scaleY(1); }
  25% { transform: rotate(3deg) scaleY(1.05); }
  50% { transform: rotate(0deg) scaleY(0.95); }
  75% { transform: rotate(-3deg) scaleY(1.02); }
  100% { transform: rotate(0deg) scaleY(1); }
}
@keyframes bv-sword {
  0% { transform: rotate(15deg) translateY(0); opacity: 0.7; }
  50% { transform: rotate(25deg) translateY(-2px); opacity: 1; }
  100% { transform: rotate(15deg) translateY(0); opacity: 0.7; }
}
@keyframes bv-glow {
  0% { opacity: 0.2; filter: blur(10px); }
  50% { opacity: 0.5; filter: blur(6px); }
  100% { opacity: 0.3; filter: blur(12px); }
}

/* orleans-gunner-plot */
.scn-orleans-gunner-plot {
  background: linear-gradient(180deg, #4a5a6a 0%, #2a3a4a 40%, #1a2a3a 80%),
              radial-gradient(ellipse at 50% 100%, #2a3a4a 0%, transparent 70%);
}
.scn-orleans-gunner-plot .sky-ogp {
  position:absolute; inset:0 0 35% 0;
  background: linear-gradient(180deg, #5a6a7a 0%, #3a4a5a 100%);
  animation: ogp-sky 12s ease-in-out infinite alternate;
}
.scn-orleans-gunner-plot .tower-ogp {
  position:absolute; bottom:30%; left:30%; right:30%; height:45%;
  background: linear-gradient(180deg, #3a4a4a 0%, #2a3a3a 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: 0 4px 12px rgba(0,0,0,0.5);
  animation: ogp-tower 15s ease-in-out infinite alternate;
}
.scn-orleans-gunner-plot .figure-master-ogp {
  position:absolute; bottom:32%; 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 center;
  animation: ogp-figure 4s ease-in-out infinite;
}
.scn-orleans-gunner-plot .figure-boy-ogp {
  position:absolute; bottom:32%; left:50%; width:12px; height:26px;
  background: linear-gradient(180deg, #1a2a2a 0%, #0a1a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ogp-figure 4s ease-in-out infinite 0.5s;
}
.scn-orleans-gunner-plot .spyglass-ogp {
  position:absolute; bottom:50%; left:42%; width:20px; height:4px;
  background: #5a4a3a;
  border-radius: 2px;
  transform: rotate(15deg);
  animation: ogp-glass 6s ease-in-out infinite;
}
.scn-orleans-gunner-plot .cloud-ogp {
  position:absolute; top:15%; left:10%; width:60px; height:15px;
  background: linear-gradient(180deg, rgba(200,200,210,0.4) 0%, rgba(200,200,210,0.1) 100%);
  border-radius: 50%;
  filter: blur(5px);
  animation: ogp-cloud 40s linear infinite;
}
@keyframes ogp-sky { 0% { opacity:0.7 } 50% { opacity:1 } 100% { opacity:0.8 } }
@keyframes ogp-tower { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.02) } 100% { transform: scaleY(0.98) } }
@keyframes ogp-figure { 0% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(-2px) rotate(3deg) } 100% { transform: translateY(0) rotate(0deg) } }
@keyframes ogp-glass { 0% { transform: rotate(10deg) } 50% { transform: rotate(20deg) } 100% { transform: rotate(10deg) } }
@keyframes ogp-cloud { 0% { transform: translateX(-30px) } 100% { transform: translateX(120vw) } }

/* item-linstock-shot */
.scn-item-linstock-shot {
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 50%, #050510 100%),
              radial-gradient(ellipse at 50% 60%, #2a2a3a 0%, transparent 70%);
}
.scn-item-linstock-shot .bg-dark-ils {
  position:absolute; inset:0;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  animation: ils-dark 20s ease-in-out infinite alternate;
}
.scn-item-linstock-shot .cannon-ils {
  position:absolute; bottom:25%; left:30%; width:80px; height:30px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 30% 30% 10% 10%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.6);
  animation: ils-cannon 10s ease-in-out infinite;
}
.scn-item-linstock-shot .linstock-ils {
  position:absolute; bottom:40%; left:25%; width:4px; height:20px;
  background: #3a2a1a;
  border-radius: 2px;
  transform: rotate(-15deg);
  animation: ils-linstock 3s ease-in-out infinite alternate;
}
.scn-item-linstock-shot .boy-ils {
  position:absolute; bottom:28%; left:20%; width:12px; height:24px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ils-boy 5s ease-in-out infinite;
}
.scn-item-linstock-shot .falling1-ils {
  position:absolute; bottom:35%; right:35%; width:16px; height:30px;
  background: #2a2a3a;
  border-radius: 30% 30% 10% 10%;
  transform: rotate(45deg);
  animation: ils-fall 4s ease-in-out infinite;
}
.scn-item-linstock-shot .falling2-ils {
  position:absolute; bottom:30%; right:25%; width:16px; height:30px;
  background: #2a2a3a;
  border-radius: 30% 30% 10% 10%;
  transform: rotate(-30deg);
  animation: ils-fall 4s ease-in-out infinite 0.5s;
}
.scn-item-linstock-shot .smoke-ils {
  position:absolute; bottom:45%; left:40%; width:40px; height:20px;
  background: rgba(150,150,160,0.3);
  border-radius: 50%;
  filter: blur(8px);
  animation: ils-smoke 6s ease-out infinite;
}
@keyframes ils-dark { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.9 } }
@keyframes ils-cannon { 0% { transform: translateX(0) } 50% { transform: translateX(-3px) } 100% { transform: translateX(0) } }
@keyframes ils-linstock { 0% { box-shadow: 0 0 6px 2px rgba(255,200,80,0.6) } 50% { box-shadow: 0 0 12px 4px rgba(255,200,80,0.9) } 100% { box-shadow: 0 0 6px 2px rgba(255,200,80,0.6) } }
@keyframes ils-boy { 0% { transform: translateY(0) } 50% { transform: translateY(-1px) } 100% { transform: translateY(0) } }
@keyframes ils-fall { 0% { transform: rotate(40deg) translateY(0) } 50% { transform: rotate(50deg) translateY(5px) } 100% { transform: rotate(40deg) translateY(0) } }
@keyframes ils-smoke { 0% { opacity:0.6; transform: scale(1) translateY(0) } 50% { opacity:0.3; transform: scale(1.3) translateY(-10px) } 100% { opacity:0; transform: scale(1.5) translateY(-20px) } }

/* talbot-chased-by-woman */
.scn-talbot-chased-by-woman {
  background: linear-gradient(180deg, #4a5a6a 0%, #2a3a4a 50%, #1a2a3a 100%),
              radial-gradient(ellipse at 50% 80%, #2a3a4a 0%, transparent 70%);
}
.scn-talbot-chased-by-woman .sky-tcw {
  position:absolute; inset:0 0 40% 0;
  background: linear-gradient(180deg, #5a6a7a 0%, #3a4a5a 100%);
  animation: tcw-sky 14s ease-in-out infinite alternate;
}
.scn-talbot-chased-by-woman .ground-tcw {
  position:absolute; bottom:0; left:0; right:0; height:40%;
  background: linear-gradient(180deg, #3a4a3a 0%, #2a3a2a 100%);
  border-radius: 30% 70% 0 0 / 40% 60% 0 0;
  animation: tcw-ground 18s ease-in-out infinite alternate;
}
.scn-talbot-chased-by-woman .figure-talbot-tcw {
  position:absolute; bottom:30%; left:30%; width:16px; height:32px;
  background: linear-gradient(180deg, #1a2a2a 0%, #0a1a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: tcw-talbot 4s ease-in-out infinite;
}
.scn-talbot-chased-by-woman .figure-joan-tcw {
  position:absolute; bottom:30%; left:55%; width:18px; height:34px;
  background: linear-gradient(180deg, #2a3a3a 0%, #1a2a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: tcw-joan 4s ease-in-out infinite 0.2s;
}
.scn-talbot-chased-by-woman .wind-tcw {
  position:absolute; top:20%; left:0; right:0; height:4px;
  background: rgba(200,210,220,0.2);
  filter: blur(2px);
  animation: tcw-wind 8s linear infinite;
}
.scn-talbot-chased-by-woman .dust-tcw {
  position:absolute; bottom:35%; left:20%; width:30px; height:15px;
  background: rgba(180,180,170,0.2);
  border-radius: 50%;
  filter: blur(6px);
  animation: tcw-dust 5s ease-in-out infinite;
}
@keyframes tcw-sky { 0% { opacity:0.7 } 50% { opacity:1 } 100% { opacity:0.8 } }
@keyframes tcw-ground { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes tcw-talbot { 0% { transform: translateX(0) rotate(0deg) } 50% { transform: translateX(-8px) rotate(-5deg) } 100% { transform: translateX(0) rotate(0deg) } }
@keyframes tcw-joan { 0% { transform: translateX(0) rotate(0deg) } 50% { transform: translateX(8px) rotate(5deg) } 100% { transform: translateX(0) rotate(0deg) } }
@keyframes tcw-wind { 0% { transform: translateX(0) } 100% { transform: translateX(-100vw) } }
@keyframes tcw-dust { 0% { transform: translate(0,0) scale(1) } 50% { transform: translate(10px,-5px) scale(1.2) } 100% { transform: translate(0,0) scale(1) } }

/* night-assault-plan */
.scn-night-assault-plan {
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 40%, #0a0a1a 80%),
              radial-gradient(ellipse at 50% 100%, #3a3a4a 0%, transparent 70%);
}
.scn-night-assault-plan .sky-nap {
  position:absolute; inset:0 0 30% 0;
  background: linear-gradient(180deg, #4a3a3a 0%, #2a1a1a 100%);
  animation: nap-sky 20s ease-in-out infinite alternate;
}
.scn-night-assault-plan .tent-nap {
  position:absolute; bottom:25%; left:20%; right:20%; height:40%;
  background: linear-gradient(180deg, #3a2a2a 0%, #1a1a1a 100%);
  clip-path: polygon(0% 100%, 50% 20%, 100% 100%);
  animation: nap-tent 12s ease-in-out infinite alternate;
}
.scn-night-assault-plan .table-nap {
  position:absolute; bottom:30%; left:35%; right:35%; height:8px;
  background: #2a1a1a;
  border-radius: 2px;
  animation: nap-table 15s ease-in-out infinite;
}
.scn-night-assault-plan .figure-talbot-nap {
  position:absolute; bottom:30%; left:32%; width:14px; height:28px;
  background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: nap-figure 4s ease-in-out infinite;
}
.scn-night-assault-plan .figure-bedford-nap {
  position:absolute; bottom:30%; left:45%; width:14px; height:28px;
  background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: nap-figure 4s ease-in-out infinite 0.4s;
}
.scn-night-assault-plan .figure-burgundy-nap {
  position:absolute; bottom:30%; left:58%; width:14px; height:28px;
  background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: nap-figure 4s ease-in-out infinite 0.8s;
}
.scn-night-assault-plan .lantern-nap {
  position:absolute; bottom:40%; left:50%; width:12px; height:16px;
  background: radial-gradient(circle, #c08040 0%, #a06020 70%);
  border-radius: 30% 30% 20% 20%;
  box-shadow: 0 0 20px 6px rgba(192,128,64,0.6), 0 0 40px 12px rgba(192,128,64,0.3);
  transform: translateX(-50%);
  animation: nap-lantern 3s ease-in-out infinite alternate;
}
@keyframes nap-sky { 0% { opacity:0.8; transform: translateY(0) } 50% { opacity:1; transform: translateY(-5px) } 100% { opacity:0.9; transform: translateY(0) } }
@keyframes nap-tent { 0% { transform: scaleX(1) } 50% { transform: scaleX(1.05) } 100% { transform: scaleX(0.95) } }
@keyframes nap-table { 0% { transform: scaleX(1) } 50% { transform: scaleX(0.95) } 100% { transform: scaleX(1) } }
@keyframes nap-figure { 0% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(-1px) rotate(2deg) } 100% { transform: translateY(0) rotate(0deg) } }
@keyframes nap-lantern { 0% { box-shadow: 0 0 15px 4px rgba(192,128,64,0.5), 0 0 30px 8px rgba(192,128,64,0.3); opacity:0.8 } 50% { box-shadow: 0 0 25px 8px rgba(192,128,64,0.8), 0 0 50px 15px rgba(192,128,64,0.5); opacity:1 } 100% { box-shadow: 0 0 18px 5px rgba(192,128,64,0.6), 0 0 35px 10px rgba(192,128,64,0.4); opacity:0.85 } }

.scn-assault-and-escape {
  background: linear-gradient(180deg, #0a0a1a 0%, #1a1a3e 40%, #2a1a2e 70%, #1e1218 100%), radial-gradient(ellipse at 20% 80%, #4a2a1a 0%, transparent 60%);
}
.scn-assault-and-escape .night-sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #0a0a2a 0%, #1a1a4e 100%);
  animation: ae-sky 12s ease-in-out infinite alternate;
}
.scn-assault-and-escape .moon {
  position: absolute; top: 8%; left: 70%; width: 30px; height: 30px;
  background: radial-gradient(circle, #d0d0e0 0%, #a0a0c0 70%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 40px 10px rgba(200,200,230,0.3);
  animation: ae-moon 20s ease-in-out infinite alternate;
}
.scn-assault-and-escape .wall-left {
  position: absolute; bottom: 10%; left: -5%; width: 45%; height: 60%;
  background: linear-gradient(180deg, #3a2a2a 0%, #1a1212 100%);
  border-radius: 0 20% 20% 0/0 30% 30% 0;
  box-shadow: inset 0 0 30px rgba(0,0,0,0.8);
  animation: ae-wall 6s ease-in-out infinite alternate;
}
.scn-assault-and-escape .wall-right {
  position: absolute; bottom: 10%; right: -5%; width: 45%; height: 60%;
  background: linear-gradient(180deg, #3a2a2a 0%, #1a1212 100%);
  border-radius: 20% 0 0 20%/30% 0 0 30%;
  box-shadow: inset 0 0 30px rgba(0,0,0,0.8);
  animation: ae-wall 6s ease-in-out infinite alternate-reverse;
}
.scn-assault-and-escape .torch {
  position: absolute; bottom: 40%; width: 8px; height: 80px;
  background: linear-gradient(180deg, #c06030 0%, #4a2010 100%);
  border-radius: 4px;
}
.scn-assault-and-escape .torch-a { left: 20%; animation: ae-torch 2s ease-in-out infinite; }
.scn-assault-and-escape .torch-b { left: 70%; animation: ae-torch 2s ease-in-out infinite 1s; }
.scn-assault-and-escape .sentinel {
  position: absolute; bottom: 40%; left: 32%; width: 14px; height: 40px;
  background: linear-gradient(180deg, #2a1a1a 0%, #0e0a0a 100%);
  border-radius: 50% 50% 30% 30%/60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: ae-sentinel 3s ease-in-out infinite;
}
.scn-assault-and-escape .figure-leap {
  position: absolute; bottom: 38%; left: 55%; width: 16px; height: 36px;
  background: linear-gradient(180deg, #1a2a1a 0%, #0a1a0a 100%);
  border-radius: 50% 40% 40% 50%/60% 50% 50% 60%;
  transform-origin: center bottom;
  animation: ae-leap 4s cubic-bezier(0.68,-0.55,0.27,1.55) infinite;
}
.scn-assault-and-escape .alarm-lines {
  position: absolute; top: 10%; left: 40%; width: 18px; height: 18px;
  background: transparent;
  border-left: 2px solid #c86030;
  border-right: 2px solid #c86030;
  border-radius: 50%;
  opacity: 0.6;
  animation: ae-alarm 1.5s ease-out infinite;
}
@keyframes ae-sky {
  0% { opacity: 1; }
  50% { opacity: 0.8; }
  100% { opacity: 1; }
}
@keyframes ae-moon {
  0% { transform: translateY(0) scale(1); box-shadow: 0 0 40px 10px rgba(200,200,230,0.3); }
  50% { transform: translateY(-4px) scale(1.02); box-shadow: 0 0 50px 15px rgba(200,200,230,0.4); }
  100% { transform: translateY(2px) scale(0.98); box-shadow: 0 0 35px 8px rgba(200,200,230,0.25); }
}
@keyframes ae-wall {
  0% { transform: skewY(0deg); }
  50% { transform: skewY(1deg); }
  100% { transform: skewY(-1deg); }
}
@keyframes ae-torch {
  0% { opacity: 0.7; transform: scaleY(1) rotate(-5deg); }
  50% { opacity: 1; transform: scaleY(1.1) rotate(5deg); }
  100% { opacity: 0.7; transform: scaleY(1) rotate(-5deg); }
}
@keyframes ae-sentinel {
  0% { transform: translateY(0) rotate(0deg); }
  33% { transform: translateY(-2px) rotate(-2deg); }
  66% { transform: translateY(1px) rotate(3deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes ae-leap {
  0% { transform: translateY(0) rotate(0deg) scaleX(1); }
  20% { transform: translateY(-20px) rotate(-15deg) scaleX(0.8); }
  40% { transform: translateY(-30px) rotate(10deg) scaleX(1.2); }
  60% { transform: translateY(-15px) rotate(-5deg) scaleX(0.9); }
  80% { transform: translateY(-5px) rotate(5deg) scaleX(1.1); }
  100% { transform: translateY(0) rotate(0deg) scaleX(1); }
}
@keyframes ae-alarm {
  0% { opacity: 0.8; transform: scale(1); }
  100% { opacity: 0; transform: scale(3); }
}

.scn-joan-chides-charles {
  background: linear-gradient(180deg, #4a6a8a 0%, #7a9aba 30%, #c0c8d0 55%, #d0b880 80%, #a08050 100%), radial-gradient(ellipse at 50% 0%, #d0d8e0 0%, transparent 70%);
}
.scn-joan-chides-charles .dawn-sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #6a8aaa 0%, #a0b8d0 40%, #c8d0d8 80%, #e0c890 100%);
  animation: jc-sky 15s ease-in-out infinite alternate;
}
.scn-joan-chides-charles .sun-disc {
  position: absolute; top: 25%; left: 70%; width: 40px; height: 40px;
  background: radial-gradient(circle, #ffd080 0%, #ffb860 40%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 60px 20px rgba(255,184,96,0.4), 0 0 120px 40px rgba(255,184,96,0.2);
  animation: jc-sun 12s ease-in-out infinite alternate;
}
.scn-joan-chides-charles .horizon {
  position: absolute; bottom: 40%; left: 0; right: 0; height: 8px;
  background: linear-gradient(90deg, #6a7040, #8a9050, #6a7040);
  box-shadow: 0 0 10px #8a9050;
  animation: jc-horizon 6s ease-in-out infinite;
}
.scn-joan-chides-charles .tent-charles {
  position: absolute; bottom: 30%; left: 35%; width: 80px; height: 100px;
  background: linear-gradient(180deg, #c0a080 0%, #906040 100%);
  clip-path: polygon(0% 100%, 10% 20%, 50% 0%, 90% 20%, 100% 100%);
  animation: jc-tent 7s ease-in-out infinite alternate;
}
.scn-joan-chides-charles .figure-joan {
  position: absolute; bottom: 28%; left: 28%; width: 16px; height: 44px;
  background: linear-gradient(180deg, #4a6a5a 0%, #2a4a3a 100%);
  border-radius: 50% 50% 40% 40%/70% 70% 40% 40%;
  transform-origin: bottom center;
  animation: jc-figure-joan 3s ease-in-out infinite;
}
.scn-joan-chides-charles .figure-charles {
  position: absolute; bottom: 28%; left: 50%; width: 18px; height: 46px;
  background: linear-gradient(180deg, #6a4a3a 0%, #3a2a1a 100%);
  border-radius: 50% 50% 40% 40%/70% 70% 40% 40%;
  transform-origin: bottom center;
  animation: jc-figure-charles 4s ease-in-out infinite;
}
.scn-joan-chides-charles .campfire {
  position: absolute; bottom: 30%; left: 43%; width: 20px; height: 20px;
  background: radial-gradient(circle, #ffa040 0%, #c06020 60%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 30px 10px rgba(255,160,64,0.5);
  animation: jc-fire 2s ease-in-out infinite alternate;
}
.scn-joan-chides-charles .smoke {
  position: absolute; bottom: 36%; left: 44%; width: 30px; height: 20px;
  background: radial-gradient(circle, rgba(200,200,200,0.3) 0%, transparent 100%);
  filter: blur(6px);
  animation: jc-smoke 5s linear infinite;
}
@keyframes jc-sky { 0% { opacity: 0.7; } 50% { opacity: 1; } 100% { opacity: 0.8; } }
@keyframes jc-sun {
  0% { transform: scale(0.95) translateX(-5px); box-shadow: 0 0 50px 15px rgba(255,184,96,0.3); }
  50% { transform: scale(1.05) translateX(5px); box-shadow: 0 0 70px 25px rgba(255,184,96,0.5); }
  100% { transform: scale(1) translateX(0); box-shadow: 0 0 60px 20px rgba(255,184,96,0.4); }
}
@keyframes jc-horizon { 0%,100% { opacity: 0.6; } 50% { opacity: 1; } }
@keyframes jc-tent { 0%,100% { transform: scaleY(1); } 50% { transform: scaleY(1.02); } }
@keyframes jc-figure-joan {
  0% { transform: translateY(0) rotate(-2deg); }
  33% { transform: translateY(-2px) rotate(0deg); }
  66% { transform: translateY(1px) rotate(2deg); }
  100% { transform: translateY(0) rotate(-2deg); }
}
@keyframes jc-figure-charles {
  0% { transform: translateY(0) rotate(2deg); }
  25% { transform: translateY(-1px) rotate(1deg); }
  50% { transform: translateY(-3px) rotate(0deg); }
  75% { transform: translateY(0) rotate(-1deg); }
  100% { transform: translateY(0) rotate(2deg); }
}
@keyframes jc-fire {
  0% { transform: scale(0.9) rotate(-5deg); opacity: 0.9; }
  50% { transform: scale(1.1) rotate(5deg); opacity: 1; }
  100% { transform: scale(0.9) rotate(-5deg); opacity: 0.9; }
}
@keyframes jc-smoke {
  0% { transform: translateY(0) scale(1); opacity: 1; }
  100% { transform: translateY(-60px) scale(2); opacity: 0; }
}

.scn-retreat-and-message {
  background: linear-gradient(180deg, #5a7a8a 0%, #8a9aaa 30%, #b0b8b8 55%, #c0a868 80%, #907040 100%), radial-gradient(ellipse at 30% 0%, #d0d8d0 0%, transparent 60%);
}
.scn-retreat-and-message .dawn-sky-b {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #7a9aaa 0%, #aabbc0 40%, #c0c8c0 70%, #d0b870 100%);
  animation: rm-sky 18s ease-in-out infinite alternate;
}
.scn-retreat-and-message .sunrise-glow {
  position: absolute; top: 20%; left: 60%; width: 50px; height: 50px;
  background: radial-gradient(circle, #ffe080 0%, #ffc860 40%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 80px 30px rgba(255,200,96,0.3);
  animation: rm-glow 10s ease-in-out infinite alternate;
}
.scn-retreat-and-message .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #8a7850 0%, #5a4830 100%);
  border-radius: 40% 30% 0 0/20% 15% 0 0;
  box-shadow: inset 0 20px 40px rgba(0,0,0,0.4);
  animation: rm-ground 7s ease-in-out infinite alternate;
}
.scn-retreat-and-message .retreat-figures {
  position: absolute; bottom: 20%; left: 10%; width: 40%; height: 30%;
  background: radial-gradient(ellipse at 50% 50%, #4a3a2a 0%, transparent 100%);
  filter: blur(4px);
  animation: rm-retreat 8s ease-in-out infinite;
}
.scn-retreat-and-message .messenger {
  position: absolute; bottom: 25%; right: 20%; width: 14px; height: 38px;
  background: linear-gradient(180deg, #4a4a2a 0%, #2a2a1a 100%);
  border-radius: 50% 50% 40% 40%/70% 70% 40% 40%;
  transform-origin: bottom center;
  animation: rm-messenger 4s ease-in-out infinite;
}
.scn-retreat-and-message .std-bearer {
  position: absolute; bottom: 22%; left: 55%; width: 12px; height: 42px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40%/70% 70% 40% 40%;
  transform-origin: bottom center;
  animation: rm-bearer 5s ease-in-out infinite;
}
.scn-retreat-and-message .dust {
  position: absolute; bottom: 15%; left: 30%; width: 40px; height: 20px;
  background: radial-gradient(ellipse at 50% 50%, rgba(180,160,120,0.3) 0%, transparent 100%);
  filter: blur(5px);
  animation: rm-dust 6s linear infinite;
}
@keyframes rm-sky { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes rm-glow {
  0% { transform: scale(0.95) rotate(0deg); box-shadow: 0 0 80px 30px rgba(255,200,96,0.3); }
  50% { transform: scale(1.05) rotate(5deg); box-shadow: 0 0 100px 40px rgba(255,200,96,0.4); }
  100% { transform: scale(1) rotate(-5deg); box-shadow: 0 0 80px 30px rgba(255,200,96,0.3); }
}
@keyframes rm-ground {
  0% { transform: translateY(0); }
  50% { transform: translateY(-3px); }
  100% { transform: translateY(0); }
}
@keyframes rm-retreat {
  0% { transform: translateX(0) scaleX(1); }
  50% { transform: translateX(-10px) scaleX(0.9); }
  100% { transform: translateX(0) scaleX(1); }
}
@keyframes rm-messenger {
  0% { transform: translateY(0) rotate(0deg); }
  33% { transform: translateY(-2px) rotate(-3deg); }
  66% { transform: translateY(1px) rotate(2deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes rm-bearer {
  0% { transform: translateY(0) rotate(3deg); }
  25% { transform: translateY(-1px) rotate(1deg); }
  50% { transform: translateY(-3px) rotate(-2deg); }
  75% { transform: translateY(0) rotate(-1deg); }
  100% { transform: translateY(0) rotate(3deg); }
}
@keyframes rm-dust {
  0% { transform: translateX(0) scale(1); opacity: 0.5; }
  100% { transform: translateX(-80px) scale(2); opacity: 0; }
}

.scn-item-countess-keys {
  background: linear-gradient(180deg, #1a1212 0%, #2a1e1e 40%, #3a2a22 70%, #2a1a12 100%), radial-gradient(ellipse at 50% 80%, #6a3a1a 0%, transparent 60%);
}
.scn-item-countess-keys .interior-wall {
  position: absolute; inset: 0 0 20% 0;
  background: linear-gradient(180deg, #3a2a22 0%, #2a1a12 100%);
  box-shadow: inset 0 0 100px rgba(0,0,0,0.6);
  animation: ck-wall 10s ease-in-out infinite alternate;
}
.scn-item-countess-keys .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 30% 30% 0 0/20% 20% 0 0;
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.7);
  animation: ck-floor 8s ease-in-out infinite alternate;
}
.scn-item-countess-keys .table {
  position: absolute; bottom: 22%; left: 35%; width: 80px; height: 40px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 4px;
  box-shadow: 0 8px 20px rgba(0,0,0,0.5);
  transform: perspective(200px) rotateX(5deg);
  animation: ck-table 6s ease-in-out infinite alternate;
}
.scn-item-countess-keys .keys-glow {
  position: absolute; bottom: 25%; left: 42%; width: 10px; height: 6px;
  background: radial-gradient(circle, #d0a060 0%, #a08040 100%);
  border-radius: 50%;
  box-shadow: 0 0 20px 6px rgba(208,160,96,0.5), 0 0 40px 12px rgba(208,160,96,0.2);
  animation: ck-keys 3s ease-in-out infinite alternate;
}
.scn-item-countess-keys .figure-countess {
  position: absolute; bottom: 20%; left: 22%; width: 18px; height: 48px;
  background: linear-gradient(180deg, #6a4a3a 0%, #3a2a1a 100%);
  border-radius: 50% 50% 40% 40%/70% 70% 40% 40%;
  transform-origin: bottom center;
  animation: ck-countess 4s ease-in-out infinite;
}
.scn-item-countess-keys .figure-porter {
  position: absolute; bottom: 20%; right: 22%; width: 16px; height: 42px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40%/70% 70% 40% 40%;
  transform-origin: bottom center;
  animation: ck-porter 5s ease-in-out infinite;
}
.scn-item-countess-keys .candle {
  position: absolute; bottom: 28%; left: 58%; width: 4px; height: 20px;
  background: linear-gradient(180deg, #d0a060 0%, #604020 100%);
  border-radius: 2px;
  animation: ck-candle 2s ease-in-out infinite alternate;
}
.scn-item-countess-keys .candle-halo {
  position: absolute; bottom: 30%; left: 57%; width: 18px; height: 18px;
  background: radial-gradient(circle, #ffe080 0%, #d0a060 40%, transparent 80%);
  border-radius: 50%;
  filter: blur(4px);
  animation: ck-halo 2s ease-in-out infinite alternate;
}
@keyframes ck-wall { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.95; } }
@keyframes ck-floor { 0% { transform: skewX(0deg); } 50% { transform: skewX(1deg); } 100% { transform: skewX(-1deg); } }
@keyframes ck-table {
  0% { transform: perspective(200px) rotateX(4deg) translateY(0); }
  50% { transform: perspective(200px) rotateX(6deg) translateY(-2px); }
  100% { transform: perspective(200px) rotateX(4deg) translateY(0); }
}
@keyframes ck-keys {
  0% { opacity: 0.8; box-shadow: 0 0 20px 6px rgba(208,160,96,0.4); }
  50% { opacity: 1; box-shadow: 0 0 30px 10px rgba(208,160,96,0.6); }
  100% { opacity: 0.8; box-shadow: 0 0 20px 6px rgba(208,160,96,0.4); }
}
@keyframes ck-countess {
  0% { transform: translateY(0) rotate(0deg); }
  33% { transform: translateY(-2px) rotate(-2deg); }
  66% { transform: translateY(1px) rotate(1deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes ck-porter {
  0% { transform: translateY(0) rotate(2deg); }
  25% { transform: translateY(-1px) rotate(0deg); }
  50% { transform: translateY(-2px) rotate(-1deg); }
  75% { transform: translateY(0) rotate(1deg); }
  100% { transform: translateY(0) rotate(2deg); }
}
@keyframes ck-candle {
  0% { transform: scaleY(0.95) rotate(-3deg); opacity: 0.9; }
  50% { transform: scaleY(1.05) rotate(3deg); opacity: 1; }
  100% { transform: scaleY(0.95) rotate(-3deg); opacity: 0.9; }
}
@keyframes ck-halo {
  0% { transform: scale(0.9); opacity: 0.7; }
  50% { transform: scale(1.1); opacity: 1; }
  100% { transform: scale(0.9); opacity: 0.7; }
}

.scn-joan-inspires{background:linear-gradient(180deg,#f5d6a8 0%,#d4a76a#7da6b8 45%,#2a5a6a 100%),radial-gradient(ellipse at 20% 20%,#ffe8b0 0%,transparent 60%);}
.scn-joan-inspires .sun{position:absolute;top:8%;left:18%;width:40px;height:40px;background:radial-gradient(circle,#fff5d0 0%,#f0c860 40%,transparent 70%);border-radius:50%;box-shadow:0 0 40px 20px rgba(240,200,96,.4);animation:ji-sun 6s ease-in-out infinite alternate}
.scn-joan-inspires .sky{position:absolute;inset:0;background:linear-gradient(180deg,#b8d8f0 0%,transparent 100%);animation:ji-sky 20s ease-in-out infinite}
.scn-joan-inspires .landscape{position:absolute;bottom:25%;left:0;right:0;height:30%;background:linear-gradient(180deg,#6a8a5a 0%,#3a5a2a 100%);border-radius:30% 70% 0 0;box-shadow:inset 0 10px 30px rgba(0,0,0,.3);animation:ji-land 12s ease-in-out infinite alternate}
.scn-joan-inspires .figure-joan{position:absolute;bottom:30%;left:42%;width:20px;height:50px;background:linear-gradient(180deg,#d4a76a 0%,#b08050 40%,#7a5030 100%);border-radius:50% 50% 40% 40%/60% 60% 40% 40%;transform-origin:bottom center;box-shadow:0 0 20px 8px rgba(240,200,96,.3);animation:ji-figure 4s ease-in-out infinite}
.scn-joan-inspires .eagle-shadow{position:absolute;top:12%;left:60%;width:50px;height:15px;background:rgba(0,0,0,.15);border-radius:50%;filter:blur(4px);animation:ji-eagle 15s linear infinite}
.scn-joan-inspires .banner{position:absolute;bottom:40%;left:48%;width:8px;height:30px;background:#5a3a2a;border-radius:2px;transform-origin:bottom;animation:ji-banner 3s ease-in-out infinite}
.scn-joan-inspires .banner::after{content:"";position:absolute;top:0;left:8px;width:25px;height:18px;background:linear-gradient(135deg,#c08050 0%,#a06030 100%);border-radius:0 60% 40% 0;animation:ji-banner-flag 3s ease-in-out infinite}
.scn-joan-inspires .dust{position:absolute;bottom:20%;left:10%;width:40px;height:40px;background:radial-gradient(circle,rgba(240,220,180,.6) 0%,transparent 100%);border-radius:50%;filter:blur(8px);animation:ji-dust 8s ease-in-out infinite}
@keyframes ji-sun{0%,100%{transform:scale(1);opacity:.8}50%{transform:scale(1.1);opacity:1}}
@keyframes ji-sky{0%,100%{opacity:.7}50%{opacity:1}}
@keyframes ji-land{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
@keyframes ji-figure{0%,100%{transform:rotate(-2deg)}50%{transform:rotate(2deg)}}
@keyframes ji-eagle{0%{transform:translateX(0)}100%{transform:translateX(80vw)}}
@keyframes ji-banner{0%,100%{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}
@keyframes ji-banner-flag{0%,100%{transform:scaleX(1)}50%{transform:scaleX(1.3)}}
@keyframes ji-dust{0%,100%{transform:translateY(0) scale(1);opacity:.5}50%{transform:translateY(-10px) scale(1.2);opacity:.8}}

.scn-gloucester-tower-blocked{background:linear-gradient(180deg,#1c1c2a 0%,#2c2a3a 40%,#3e3d4a 100%),radial-gradient(ellipse at 50% 80%,#4a3a2a 0%,transparent 50%);}
.scn-gloucester-tower-blocked .wall-bg{position:absolute;inset:0;background:repeating-linear-gradient(0deg,#2a2838 0px,#2a2838 2px,#222030 2px,#222030 4px);animation:gt-wall 30s linear infinite}
.scn-gloucester-tower-blocked .gate{position:absolute;bottom:15%;left:38%;width:120px;height:140px;background:radial-gradient(ellipse at 50% 100%,#3a2a1a 0%,#1a0a0a 100%);border-radius:50% 50% 10% 10%/60% 60% 10% 10%;box-shadow:0 -10px 30px rgba(0,0,0,.7);animation:gt-gate 4s ease-in-out infinite}
.scn-gloucester-tower-blocked .torch-glow{position:absolute;bottom:45%;left:15%;width:30px;height:30px;background:radial-gradient(circle,#ff8040 0%,#b04a20 40%,transparent 70%);border-radius:50%;animation:gt-torch 2s ease-in-out infinite}
.scn-gloucester-tower-blocked .figure-gloucester{position:absolute;bottom:18%;left:25%;width:18px;height:42px;background:linear-gradient(180deg,#0a0a1a 0%,#1a1a2a 100%);border-radius:50% 50% 40% 40%/60% 60% 40% 40%;transform-origin:bottom center;animation:gt-gloucester 3s ease-in-out infinite}
.scn-gloucester-tower-blocked .figure-warder{position:absolute;bottom:18%;left:52%;width:18px;height:40px;background:linear-gradient(180deg,#1a1a2a 0%,#2a2a3a 100%);border-radius:50% 50% 40% 40%/60% 60% 40% 40%;transform-origin:bottom center;animation:gt-warder 3s ease-in-out infinite}
.scn-gloucester-tower-blocked .door-bars{position:absolute;bottom:20%;left:38%;width:120px;height:80px;border:3px solid #3a2a1a;border-left:none;border-right:none;border-radius:20px 20px 0 0;animation:gt-bars 5s ease-in-out infinite}
.scn-gloucester-tower-blocked .shadows{position:absolute;inset:0;background:linear-gradient(135deg,rgba(0,0,0,.5) 0%,transparent 100%);animation:gt-shadow 8s ease-in-out infinite}
@keyframes gt-wall{0%,100%{background-position:0 0}50%{background-position:0 10px}}
@keyframes gt-gate{0%,100%{transform:scaleY(1)}50%{transform:scaleY(.97)}}
@keyframes gt-torch{0%,100%{opacity:.6;transform:scale(1)}50%{opacity:1;transform:scale(1.2)}}
@keyframes gt-gloucester{0%,100%{transform:translateX(0) rotate(-1deg)}50%{transform:translateX(8px) rotate(1deg)}}
@keyframes gt-warder{0%,100%{transform:translateX(0)}50%{transform:translateX(-4px)}}
@keyframes gt-bars{0%,100%{opacity:.8}50%{opacity:1}}
@keyframes gt-shadow{0%,100%{opacity:.3}50%{opacity:.5}}

.scn-item-cardinals-hat{background:linear-gradient(180deg,#2e151a 0%,#1a0a0d 100%),radial-gradient(circle at 50% 40%,#3a1a1a 0%,transparent 70%);}
.scn-item-cardinals-hat .bg-dark{position:absolute;inset:0;background:linear-gradient(135deg,#1a0a0d 30%,transparent 100%);}
.scn-item-cardinals-hat .hat{position:absolute;top:30%;left:45%;width:70px;height:40px;background:radial-gradient(ellipse at 50% 60%,#702243 0%,#4a152a 100%);border-radius:50% 50% 40% 40%/60% 60% 40% 40%;box-shadow:0 10px 25px rgba(0,0,0,.6);animation:ch-hat 6s ease-in-out infinite;transform-origin:center bottom}
.scn-item-cardinals-hat .hat::after{content:"";position:absolute;bottom:-8px;left:50%;transform:translateX(-50%);width:10px;height:8px;background:#702243;border-radius:0 0 50% 50%;}
.scn-item-cardinals-hat .hat-shadow{position:absolute;top:50%;left:44%;width:80px;height:20px;background:rgba(0,0,0,.4);border-radius:50%;filter:blur(10px);animation:ch-shadow 6s ease-in-out infinite}
.scn-item-cardinals-hat .figure-winchester{position:absolute;bottom:12%;left:35%;width:22px;height:50px;background:linear-gradient(180deg,#1a0a0d 0%,#2a1015 100%);border-radius:50% 50% 40% 40%/60% 60% 40% 40%;transform-origin:bottom center;animation:ch-winchester 4s ease-in-out infinite}
.scn-item-cardinals-hat .figure-gloucester-2{position:absolute;bottom:12%;left:55%;width:20px;height:48px;background:linear-gradient(180deg,#0a0a1a 0%,#1a1a2a 100%);border-radius:50% 50% 40% 40%/60% 60% 40% 40%;transform-origin:bottom center;animation:ch-gloucester2 3.5s ease-in-out infinite}
.scn-item-cardinals-hat .staff{position:absolute;bottom:18%;left:32%;width:4px;height:60px;background:#4a2a1a;border-radius:2px;transform:rotate(10deg);animation:ch-staff 8s ease-in-out infinite}
.scn-item-cardinals-hat .candle{position:absolute;bottom:45%;left:60%;width:6px;height:20px;background:#d4a76a;border-radius:2px;box-shadow:0 0 20px 8px rgba(212,167,106,.5);animation:ch-candle 2s ease-in-out infinite}
@keyframes ch-hat{0%,100%{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}
@keyframes ch-shadow{0%,100%{transform:translateX(-2px);opacity:.4}50%{transform:translateX(2px);opacity:.6}}
@keyframes ch-winchester{0%,100%{transform:rotate(-1deg)}50%{transform:rotate(2deg)}}
@keyframes ch-gloucester2{0%,100%{transform:translateX(0)}50%{transform:translateX(5px)}}
@keyframes ch-staff{0%,100%{transform:rotate(8deg)}50%{transform:rotate(12deg)}}
@keyframes ch-candle{0%,100%{opacity:.7;transform:scaleY(1)}50%{opacity:1;transform:scaleY(1.1)}}

.scn-mayor-intervenes{background:linear-gradient(180deg,#1a1a2e 0%,#0d0d1a 50%,#121212 100%),radial-gradient(ellipse at 30% 50%,#4a2a1a 0%,transparent 70%);}
.scn-mayor-intervenes .bg-night{position:absolute;inset:0;background:linear-gradient(135deg,#0d0d1a 30%,transparent 100%);}
.scn-mayor-intervenes .street{position:absolute;bottom:10%;left:0;right:0;height:20%;background:linear-gradient(180deg,#2a2a3a 0%,#1a1a2a 100%);border-radius:20% 80% 0 0;animation:mi-street 15s ease-in-out infinite}
.scn-mayor-intervenes .torchlight{position:absolute;bottom:50%;left:20%;width:25px;height:25px;background:radial-gradient(circle,#e07040 0%,#b04a20 30%,transparent 70%);border-radius:50%;animation:mi-torch 1.8s ease-in-out infinite}
.scn-mayor-intervenes .figure-mayor{position:absolute;bottom:22%;left:40%;width:20px;height:50px;background:linear-gradient(180deg,#2a2a3a 0%,#1a1a2a 100%);border-radius:50% 50% 40% 40%/60% 60% 40% 40%;transform-origin:bottom center;animation:mi-mayor 4s ease-in-out infinite}
.scn-mayor-intervenes .figure-officer{position:absolute;bottom:22%;left:48%;width:18px;height:48px;background:linear-gradient(180deg,#2a2a3a 0%,#1a1a2a 100%);border-radius:50% 50% 40% 40%/60% 60% 40% 40%;transform-origin:bottom center;animation:mi-officer 3.5s ease-in-out infinite}
.scn-mayor-intervenes .figure-crowd{position:absolute;bottom:22%;left:55%;width:15px;height:45px;background:linear-gradient(180deg,#1a1a2a 0%,#0a0a1a 100%);border-radius:50% 50% 40% 40%/60% 60% 40% 40%;transform-origin:bottom center;animation:mi-crowd 5s ease-in-out infinite}
.scn-mayor-intervenes .baton{position:absolute;bottom:38%;left:43%;width:3px;height:25px;background:#6a4a3a;border-radius:2px;transform-origin:bottom center;animation:mi-baton 2s ease-in-out infinite}
@keyframes mi-street{0%,100%{opacity:.8}50%{opacity:1}}
@keyframes mi-torch{0%,100%{opacity:.6;transform:scale(1)}50%{opacity:1;transform:scale(1.15)}}
@keyframes mi-mayor{0%,100%{transform:rotate(-2deg)}50%{transform:rotate(2deg)}}
@keyframes mi-officer{0%,100%{transform:translateX(0)}50%{transform:translateX(-3px)}}
@keyframes mi-crowd{0%,100%{transform:translateY(0)}50%{transform:translateY(-2px)}}
@keyframes mi-baton{0%,100%{transform:rotate(-10deg)}50%{transform:rotate(10deg)}}

.scn-gloucester-tower-jealousy {
  background: linear-gradient(180deg, #2a1a18 0%, #140a08 50%, #0a0505 100%), radial-gradient(ellipse at 50% 100%, #3a2520 0%, transparent 70%);
}
.scn-gloucester-tower-jealousy .wall-bg {
  position: absolute; inset: 0; background: repeating-linear-gradient(90deg, #2a1a18 0px, #2a1a18 2px, #1f110f 2px, #1f110f 4px); filter: blur(1px); animation: gtj-wall 12s ease infinite alternate;
}
.scn-gloucester-tower-jealousy .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%; background: linear-gradient(0deg, #1a0d0a 0%, #261512 100%); box-shadow: inset 0 8px 12px rgba(0,0,0,.6);
}
.scn-gloucester-tower-jealousy .arch {
  position: absolute; bottom: 20%; left: 50%; transform: translateX(-50%); width: 40%; height: 60%; border-radius: 50% 50% 0 0; border: 6px solid #3a2520; background: transparent; box-shadow: inset 0 0 60px rgba(200,100,40,.1);
}
.scn-gloucester-tower-jealousy .window-light {
  position: absolute; top: 10%; left: 30%; width: 12%; height: 18%; background: radial-gradient(ellipse, #c08050 0%, #a06030 60%, transparent 100%); border-radius: 30%; box-shadow: 0 0 40px 20px rgba(192,128,80,.3); animation: gtj-flicker 1.5s infinite alternate;
}
.scn-gloucester-tower-jealousy .gloucester {
  position: absolute; bottom: 25%; left: 20%; width: 8%; height: 30%; background: linear-gradient(180deg, #3a2a20 0%, #1a100a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom; animation: gtj-figure 4s ease-in-out infinite;
}
.scn-gloucester-tower-jealousy .winchester {
  position: absolute; bottom: 25%; right: 25%; width: 8%; height: 30%; background: linear-gradient(180deg, #2a1a10 0%, #0a0505 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; opacity: 0.7; animation: gtj-figure 5s ease-in-out infinite alternate;
}
.scn-gloucester-tower-jealousy .table {
  position: absolute; bottom: 20%; left: 50%; transform: translateX(-50%); width: 30%; height: 8%; background: linear-gradient(0deg, #4a3020 0%, #3a2015 100%); border-radius: 5px; box-shadow: 0 4px 8px rgba(0,0,0,.5);
}
.scn-gloucester-tower-jealousy .candle {
  position: absolute; bottom: 30%; left: 48%; width: 1%; height: 8%; background: linear-gradient(0deg, #a06030 0%, #c08040 50%, #e0a050 100%); border-radius: 20%; animation: gtj-flame 0.3s infinite alternate; box-shadow: 0 0 20px 10px rgba(200,100,40,.5);
}
@keyframes gtj-wall { 0% { opacity: .8 } 50% { opacity: .9 } 100% { opacity: .85 } }
@keyframes gtj-flicker { 0% { opacity: .7; transform: scaleY(1) } 50% { opacity: 1; transform: scaleY(1.05) } 100% { opacity: .8; transform: scaleY(.95) } }
@keyframes gtj-figure { 0% { transform: translateY(0) rotate(-1deg) } 30% { transform: translateY(-3px) rotate(1deg) } 60% { transform: translateY(1px) rotate(-1deg) } 100% { transform: translateY(0) rotate(0) } }
@keyframes gtj-flame { 0% { transform: scaleY(1) scaleX(1) translateX(0) } 25% { transform: scaleY(1.1) scaleX(.8) translateX(1px) } 50% { transform: scaleY(.9) scaleX(1.1) translateX(-1px) } 75% { transform: scaleY(1.05) scaleX(.9) translateX(.5px) } 100% { transform: scaleY(1) scaleX(1) translateX(0) } }

.scn-france-before-orleans {
  background: linear-gradient(180deg, #5a5a5a 0%, #3a3a3a 30%, #2a2a2a 70%, #1a1a1a 100%), radial-gradient(ellipse at 50% 0%, #7a7a7a 0%, transparent 70%);
}
.scn-france-before-orleans .sky-overcast {
  position: absolute; inset: 0 0 55% 0; background: linear-gradient(180deg, #6a6a6a 0%, #4a4a4a 100%); animation: fbo-sky 20s ease infinite alternate;
}
.scn-france-before-orleans .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%; background: linear-gradient(0deg, #2a3a2a 0%, #4a5a3a 100%); animation: fbo-ground 30s linear infinite;
}
.scn-france-before-orleans .city-wall {
  position: absolute; bottom: 30%; left: 10%; width: 20%; height: 30%; background: linear-gradient(180deg, #5a4a3a 0%, #2a1a1a 100%); border-radius: 0 0 5% 5%; box-shadow: inset 0 8px 12px rgba(0,0,0,.5);
}
.scn-france-before-orleans .soldiers-advance {
  position: absolute; bottom: 25%; left: -10%; width: 60%; height: 20%; background: repeating-linear-gradient(90deg, #3a4a3a 0px, #3a4a3a 10px, transparent 10px, transparent 20px); animation: fbo-march 15s linear infinite;
}
.scn-france-before-orleans .flag-england {
  position: absolute; bottom: 40%; left: 30%; width: 2%; height: 15%; background: #4a3a2a; animation: fbo-wave 2s ease-in-out infinite;
}
.scn-france-before-orleans .flag-france {
  position: absolute; bottom: 40%; right: 20%; width: 2%; height: 15%; background: #4a3a2a; animation: fbo-wave 2.5s ease-in-out infinite reverse;
}
.scn-france-before-orleans .cannon {
  position: absolute; bottom: 30%; left: 45%; width: 8%; height: 6%; background: linear-gradient(0deg, #2a2a2a 0%, #4a4a4a 100%); border-radius: 30% 30% 10% 10%; animation: fbo-cannon 8s ease-in-out infinite;
}
@keyframes fbo-sky { 0% { opacity: .6 } 50% { opacity: .9 } 100% { opacity: .7 } }
@keyframes fbo-ground { 0% { background-position: 0% 0% } 100% { background-position: 100% 0% } }
@keyframes fbo-march { 0% { transform: translateX(0) } 100% { transform: translateX(150%) } }
@keyframes fbo-wave { 0% { transform: rotate(-5deg) } 50% { transform: rotate(5deg) } 100% { transform: rotate(-5deg) } }
@keyframes fbo-cannon { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }

.scn-joan-arrives {
  background: linear-gradient(180deg, #87ceeb 0%, #b0e0e6 30%, #f0e68c 70%, #fff8dc 100%), radial-gradient(ellipse at 50% 30%, #ffebcd 0%, transparent 60%);
}
.scn-joan-arrives .sky-sunlit {
  position: absolute; inset: 0 0 40% 0; background: linear-gradient(180deg, #87ceeb 0%, #b0e0e6 100%); animation: jar-sky 15s ease-in-out infinite alternate;
}
.scn-joan-arrives .fields {
  position: absolute; bottom: 0; left: 0; right: 0; height: 60%; background: linear-gradient(180deg, #9acd32 0%, #6b8e23 100%); border-radius: 40% 40% 0 0 / 20% 20% 0 0; animation: jar-fields 20s ease infinite;
}
.scn-joan-arrives .joan-figure {
  position: absolute; bottom: 25%; left: 35%; width: 10%; height: 40%; background: linear-gradient(180deg, #fff0d0 0%, #f0c0a0 40%, #d08060 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom; animation: jar-joan 6s ease-in-out infinite;
}
.scn-joan-arrives .charles-figure {
  position: absolute; bottom: 25%; right: 30%; width: 10%; height: 40%; background: linear-gradient(180deg, #c0a070 0%, #8a6030 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: jar-charles 7s ease-in-out infinite alternate;
}
.scn-joan-arrives .halo-light {
  position: absolute; top: 5%; left: 35%; width: 12%; height: 12%; background: radial-gradient(circle, #ffe4b5 0%, #ffd700 30%, transparent 70%); border-radius: 50%; animation: jar-halo 4s ease-in-out infinite; box-shadow: 0 0 60px 30px rgba(255,215,0,.3);
}
.scn-joan-arrives .sword {
  position: absolute; bottom: 45%; left: 38%; width: 2%; height: 20%; background: linear-gradient(180deg, #c0c0c0 0%, #808080 100%); transform: rotate(30deg); animation: jar-sword 8s ease-in-out infinite;
}
.scn-joan-arrives .daisies {
  position: absolute; bottom: 15%; left: 20%; width: 5%; height: 4%; background: radial-gradient(circle, #ffffff 30%, #ffd700 70%); border-radius: 50%; animation: jar-daisies 3s ease-in-out infinite;
}
@keyframes jar-sky { 0% { opacity: .8 } 50% { opacity: 1 } 100% { opacity: .9 } }
@keyframes jar-fields { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.02) } 100% { transform: scaleY(1) } }
@keyframes jar-joan { 0% { transform: translateY(0) rotate(-1deg) } 30% { transform: translateY(-4px) rotate(2deg) } 60% { transform: translateY(2px) rotate(-1deg) } 100% { transform: translateY(0) rotate(0) } }
@keyframes jar-charles { 0% { transform: translateX(0) rotate(0) } 50% { transform: translateX(5px) rotate(1deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes jar-halo { 0% { transform: scale(1); opacity: .8 } 50% { transform: scale(1.1); opacity: 1 } 100% { transform: scale(1); opacity: .8 } }
@keyframes jar-sword { 0% { transform: rotate(25deg) } 50% { transform: rotate(35deg) } 100% { transform: rotate(25deg) } }
@keyframes jar-daisies { 0% { transform: scale(1) } 50% { transform: scale(1.2) } 100% { transform: scale(1) } }

.scn-item-joans-sword {
  background: linear-gradient(180deg, #f5deb3 0%, #deb887 40%, #a0522d 70%, #3e2723 100%), radial-gradient(ellipse at 50% 0%, #ffebcd 0%, transparent 60%);
}
.scn-item-joans-sword .churchyard-bg {
  position: absolute; inset: 0; background: repeating-linear-gradient(90deg, #8b4513 0px, #8b4513 3px, #a0522d 3px, #a0522d 6px); opacity: 0.4; animation: ijs-bg 30s linear infinite;
}
.scn-item-joans-sword .iron-gate {
  position: absolute; top: 10%; left: 20%; width: 60%; height: 80%; border: 8px solid #3e2723; border-radius: 10% 10% 0 0; background: linear-gradient(180deg, transparent 0%, rgba(62,39,35,.3) 100%); box-shadow: inset 0 0 40px rgba(0,0,0,.4);
}
.scn-item-joans-sword .joan-sword {
  position: absolute; bottom: 30%; left: 30%; width: 3%; height: 50%; background: linear-gradient(180deg, #c0c0c0 0%, #808080 50%, #606060 100%); transform: rotate(15deg); animation: ijs-sword 6s ease-in-out infinite; box-shadow: 0 0 20px 8px rgba(255,215,0,.3);
}
.scn-item-joans-sword .charles-silhouette {
  position: absolute; bottom: 20%; right: 25%; width: 12%; height: 45%; background: linear-gradient(180deg, #2a1a10 0%, #0a0505 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: ijs-charles 8s ease-in-out infinite alternate;
}
.scn-item-joans-sword .sword-glow {
  position: absolute; bottom: 30%; left: 30%; width: 8%; height: 8%; background: radial-gradient(circle, #ffd700 0%, transparent 70%); border-radius: 50%; animation: ijs-glow 2s ease-in-out infinite; box-shadow: 0 0 40px 20px rgba(255,215,0,.5);
}
.scn-item-joans-sword .cobblestones {
  position: absolute; bottom: 0; left: 0; right: 0; height: 15%; background: repeating-conic-gradient(#6b4423 0%, #6b4423 10%, #5a3a1a 10%, #5a3a1a 20%); animation: ijs-stones 5s ease-in-out infinite;
}
.scn-item-joans-sword .cross {
  position: absolute; bottom: 50%; left: 55%; width: 2%; height: 20%; background: linear-gradient(180deg, #8b4513 0%, #3e2723 100%); border-radius: 10%; animation: ijs-cross 4s ease-in-out infinite;
}
@keyframes ijs-bg { 0% { background-position: 0 0 } 100% { background-position: 100px 0 } }
@keyframes ijs-sword { 0% { transform: rotate(10deg); opacity: .9 } 50% { transform: rotate(20deg); opacity: 1 } 100% { transform: rotate(10deg); opacity: .9 } }
@keyframes ijs-charles { 0% { transform: translateY(0) rotate(0) } 50% { transform: translateY(-4px) rotate(2deg) } 100% { transform: translateY(0) rotate(0) } }
@keyframes ijs-glow { 0% { transform: scale(1); opacity: .6 } 50% { transform: scale(1.5); opacity: 1 } 100% { transform: scale(1); opacity: .6 } }
@keyframes ijs-stones { 0% { opacity: .8 } 50% { opacity: 1 } 100% { opacity: .8 } }
@keyframes ijs-cross { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.05) } 100% { transform: scaleY(1) } }

.scn-peace-suit-and-marriage { background: linear-gradient(180deg,#f5e6c8 0%,#d4b896 100%), radial-gradient(ellipse at 50% 100%,#e0c9a0 0%,transparent 70%); }
.scn-peace-suit-and-marriage .psm-wall { position:absolute; inset:0; background:linear-gradient(90deg,#d4b896 0%,#c8a882 50%,#b8956a 100%); }
.scn-peace-suit-and-marriage .psm-window { position:absolute; top:15%; left:20%; width:60%; height:40%; background:linear-gradient(180deg,#fff8e7 0%,#f0d9b5 100%); border-radius:50% 50% 0 0/100% 100% 0 0; box-shadow:inset 0 0 30px rgba(255,200,100,.3); animation:psm-window-glow 8s ease-in-out infinite alternate; }
.scn-peace-suit-and-marriage .psm-table { position:absolute; bottom:20%; left:10%; width:80%; height:8%; background:linear-gradient(180deg,#6b4226 0%,#4a2c1a 100%); border-radius:4px; }
.scn-peace-suit-and-marriage .psm-scroll { position:absolute; bottom:25%; left:40%; width:30%; height:10%; background:linear-gradient(180deg,#f5deb3 0%,#d4b896 100%); border-radius:20% 20% 10% 10%; animation:psm-scroll 6s ease-in-out infinite; }
.scn-peace-suit-and-marriage .psm-figure-king { position:absolute; bottom:28%; left:20%; width:12%; height:30%; background:linear-gradient(180deg,#2a1a0a 0%,#1a0f05 100%); border-radius:50% 50% 40% 40%/60% 60% 30% 30%; transform-origin:bottom center; animation:psm-figure-king 9s ease-in-out infinite; }
.scn-peace-suit-and-marriage .psm-figure-ambassador { position:absolute; bottom:23%; left:55%; width:10%; height:25%; background:linear-gradient(180deg,#3a2a1a 0%,#1a1a0a 100%); border-radius:50% 50% 30% 30%/70% 70% 40% 40%; transform-origin:bottom center; animation:psm-figure-ambassador 7s ease-in-out infinite; }
.scn-peace-suit-and-marriage .psm-candle { position:absolute; bottom:15%; left:45%; width:3%; height:15%; background:linear-gradient(180deg,#f5e6c8 0%,#b8926a 100%); border-radius:0 0 10% 10%; }
.scn-peace-suit-and-marriage .psm-candle-glow { position:absolute; bottom:15%; left:44.5%; width:4%; height:4%; background:radial-gradient(circle,#ffd700 0%,#ffb347 40%,transparent 70%); box-shadow:0 0 20px 10px #ffb347; animation:psm-flicker 1.5s ease-in-out infinite alternate; }
@keyframes psm-window-glow { 0%{opacity:.8;box-shadow:0 0 20px rgba(255,200,100,.2)} 50%{opacity:1;box-shadow:0 0 40px rgba(255,200,100,.5)} 100%{opacity:.9;box-shadow:0 0 30px rgba(255,200,100,.3)} }
@keyframes psm-scroll { 0%{transform:translateY(0)} 50%{transform:translateY(-2px)} 100%{transform:translateY(0)} }
@keyframes psm-figure-king { 0%{transform:translateY(0) rotate(0)} 50%{transform:translateY(-1px) rotate(1deg)} 100%{transform:translateY(0) rotate(0)} }
@keyframes psm-figure-ambassador { 0%{transform:translateY(0) rotate(0) scaleY(1)} 50%{transform:translateY(-2px) rotate(-1deg) scaleY(.98)} 100%{transform:translateY(0) rotate(0) scaleY(1)} }
@keyframes psm-flicker { 0%{opacity:.6;transform:scale(.9)} 50%{opacity:1;transform:scale(1.1)} 100%{opacity:.8;transform:scale(1)} }

.scn-york-captures-joan { background: linear-gradient(180deg,#2a2a3e 0%,#3a3a4e 50%,#4a4a5e 100%), radial-gradient(ellipse at 50% 100%,#1a1a2e 0%,transparent 70%); }
.scn-york-captures-joan .ycj-sky { position:absolute; inset:0 0 60% 0; background:linear-gradient(180deg,#4a4a5e 0%,transparent 100%); animation:ycj-sky 12s ease-in-out infinite alternate; }
.scn-york-captures-joan .ycj-ground { position:absolute; bottom:0; left:0; right:0; height:40%; background:linear-gradient(180deg,#2e2e3c 0%,#1a1a2e 100%); border-radius:20% 20% 0 0; }
.scn-york-captures-joan .ycj-horse { position:absolute; bottom:30%; left:30%; width:25%; height:35%; background:linear-gradient(180deg,#111 0%,#222 100%); border-radius:50% 50% 40% 40%/60% 60% 30% 30%; box-shadow:0 4px 8px rgba(0,0,0,.6); transform-origin:bottom center; animation:ycj-horse 4s ease-in-out infinite; }
.scn-york-captures-joan .ycj-figure-york { position:absolute; bottom:55%; left:32%; width:8%; height:15%; background:linear-gradient(180deg,#333 0%,#111 100%); border-radius:50% 50% 40% 40%/60% 60% 30% 30%; transform-origin:bottom center; animation:ycj-york 4s ease-in-out infinite; }
.scn-york-captures-joan .ycj-figure-joan { position:absolute; bottom:22%; left:50%; width:6%; height:18%; background:linear-gradient(180deg,#4a3a3a 0%,#2a1a1a 100%); border-radius:50% 50% 30% 30%/70% 70% 40% 40%; transform-origin:bottom center; animation:ycj-joan 2s ease-in-out infinite alternate; }
.scn-york-captures-joan .ycj-banner { position:absolute; bottom:40%; left:45%; width:4%; height:20%; background:linear-gradient(180deg,#8a6a4a 0%,#5a3a2a 100%); animation:ycj-banner 5s ease-in-out infinite; }
.scn-york-captures-joan .ycj-sword { position:absolute; bottom:50%; left:38%; width:1.5%; height:12%; background:linear-gradient(180deg,#ccc 0%,#666 100%); border-radius:20% 20% 0 0; transform:rotate(30deg); animation:ycj-sword 3s ease-in-out infinite; }
.scn-york-captures-joan .ycj-dust { position:absolute; bottom:10%; left:10%; width:80%; height:10%; background:rgba(200,180,160,.3); filter:blur(8px); animation:ycj-dust 10s linear infinite; }
@keyframes ycj-sky { 0%{opacity:.6} 50%{opacity:1} 100%{opacity:.7} }
@keyframes ycj-horse { 0%{transform:translateY(0) rotate(-2deg)} 50%{transform:translateY(-3px) rotate(0)} 100%{transform:translateY(0) rotate(2deg)} }
@keyframes ycj-york { 0%{transform:translateY(0) rotate(0)} 50%{transform:translateY(-1px) rotate(2deg)} 100%{transform:translateY(0) rotate(0)} }
@keyframes ycj-joan { 0%{transform:translateY(0) translateX(0)} 50%{transform:translateY(-2px) translateX(1px)} 100%{transform:translateY(0) translateX(0)} }
@keyframes ycj-banner { 0%{transform:rotate(0) scaleY(1)} 50%{transform:rotate(5deg) scaleY(1.1)} 100%{transform:rotate(0) scaleY(1)} }
@keyframes ycj-sword { 0%{transform:rotate(25deg)} 50%{transform:rotate(35deg)} 100%{transform:rotate(25deg)} }
@keyframes ycj-dust { 0%{transform:translateX(0) scale(1)} 50%{transform:translateX(20px) scale(1.2)} 100%{transform:translateX(40px) scale(1)} }

.scn-suffolk-captures-margaret { background: linear-gradient(180deg,#d2b48c 0%,#b5956b 100%), radial-gradient(ellipse at 50% 80%,#e0c9a0 0%,transparent 60%); }
.scn-suffolk-captures-margaret .scm-sky { position:absolute; inset:0 0 50% 0; background:linear-gradient(180deg,#d2b48c 0%,transparent 100%); animation:scm-sky 10s ease-in-out infinite alternate; }
.scn-suffolk-captures-margaret .scm-wall { position:absolute; bottom:20%; left:5%; width:30%; height:60%; background:linear-gradient(180deg,#a58e75 0%,#7a6a55 100%); box-shadow:inset 0 0 20px rgba(0,0,0,.3); }
.scn-suffolk-captures-margaret .scm-figure-suffolk { position:absolute; bottom:30%; left:25%; width:10%; height:30%; background:linear-gradient(180deg,#3a2a1a 0%,#1a0f05 100%); border-radius:50% 50% 40% 40%/60% 60% 30% 30%; transform-origin:bottom center; animation:scm-suffolk 7s ease-in-out infinite; }
.scn-suffolk-captures-margaret .scm-figure-margaret { position:absolute; bottom:30%; left:45%; width:8%; height:28%; background:linear-gradient(180deg,#5a4a3a 0%,#3a2a1a 100%); border-radius:50% 50% 30% 30%/70% 70% 40% 40%; transform-origin:bottom center; animation:scm-margaret 9s ease-in-out infinite; }
.scn-suffolk-captures-margaret .scm-veil { position:absolute; bottom:55%; left:46%; width:10%; height:6%; background:rgba(200,180,160,.5); border-radius:50% 50% 0 0; filter:blur(2px); animation:scm-veil 4s ease-in-out infinite; }
.scn-suffolk-captures-margaret .scm-flowers { position:absolute; bottom:25%; left:35%; width:15%; height:15%; background:radial-gradient(circle at 30% 40%,#b87878 0%,transparent 50%),radial-gradient(circle at 70% 60%,#c8553d 0%,transparent 50%); animation:scm-flowers 12s ease-in-out infinite; }
.scn-suffolk-captures-margaret .scm-sunbeam { position:absolute; top:15%; left:20%; width:20%; height:60%; background:linear-gradient(135deg,rgba(255,200,100,.15) 0%,transparent 70%); animation:scm-sunbeam 8s linear infinite; }
@keyframes scm-sky { 0%{opacity:.7} 50%{opacity:1} 100%{opacity:.8} }
@keyframes scm-suffolk { 0%{transform:translateY(0) rotate(0)} 50%{transform:translateY(-2px) rotate(1deg)} 100%{transform:translateY(0) rotate(0)} }
@keyframes scm-margaret { 0%{transform:translateY(0) rotate(0)} 50%{transform:translateY(-1px) rotate(-1deg) scaleY(.99)} 100%{transform:translateY(0) rotate(0)} }
@keyframes scm-veil { 0%{transform:translateX(0) rotate(0)} 50%{transform:translateX(3px) rotate(3deg)} 100%{transform:translateX(0) rotate(0)} }
@keyframes scm-flowers { 0%{transform:scale(1)} 50%{transform:scale(1.05)} 100%{transform:scale(1)} }
@keyframes scm-sunbeam { 0%{opacity:0} 50%{opacity:.3} 100%{opacity:0} }

.scn-margaret-consent { background: linear-gradient(180deg,#d2b48c 0%,#b5956b 100%), radial-gradient(ellipse at 50% 90%,#d4b896 0%,transparent 70%); }
.scn-margaret-consent .mcs-sky { position:absolute; inset:0 0 50% 0; background:linear-gradient(180deg,#d2b48c 0%,transparent 100%); animation:mcs-sky 10s ease-in-out infinite alternate; }
.scn-margaret-consent .mcs-wall { position:absolute; bottom:10%; left:40%; width:40%; height:90%; background:linear-gradient(180deg,#b5956b 0%,#8a7a5a 100%); box-shadow:inset 0 0 30px rgba(0,0,0,.3); }
.scn-margaret-consent .mcs-figure-reignier { position:absolute; top:10%; left:55%; width:12%; height:40%; background:linear-gradient(180deg,#4a3a2a 0%,#2a1a0a 100%); border-radius:50% 50% 30% 30%/70% 70% 40% 40%; transform-origin:top center; animation:mcs-reignier 8s ease-in-out infinite; }
.scn-margaret-consent .mcs-figure-margaret { position:absolute; bottom:20%; left:20%; width:8%; height:30%; background:linear-gradient(180deg,#5a4a3a 0%,#3a2a1a 100%); border-radius:50% 50% 30% 30%/70% 70% 40% 40%; transform-origin:bottom center; animation:mcs-margaret 9s ease-in-out infinite; }
.scn-margaret-consent .mcs-figure-suffolk { position:absolute; bottom:20%; left:35%; width:10%; height:32%; background:linear-gradient(180deg,#3a2a1a 0%,#1a0f05 100%); border-radius:50% 50% 40% 40%/60% 60% 30% 30%; transform-origin:bottom center; animation:mcs-suffolk 7s ease-in-out infinite; }
.scn-margaret-consent .mcs-dowry { position:absolute; bottom:25%; left:50%; width:10%; height:10%; background:linear-gradient(135deg,#c8a882 0%,#a58e75 100%); box-shadow:0 2px 6px rgba(0,0,0,.4); animation:mcs-dowry 6s ease-in-out infinite; }
.scn-margaret-consent .mcs-gate { position:absolute; bottom:0; left:45%; width:10%; height:90%; background:linear-gradient(180deg,#7a6a55 0%,#5a4a3a 100%); border-radius:50% 50% 0 0; }
@keyframes mcs-sky { 0%{opacity:.7} 50%{opacity:1} 100%{opacity:.8} }
@keyframes mcs-reignier { 0%{transform:translateY(0) rotate(0)} 50%{transform:translateY(10px) rotate(2deg)} 100%{transform:translateY(0) rotate(0)} }
@keyframes mcs-margaret { 0%{transform:translateY(0) rotate(0)} 50%{transform:translateY(-1px) rotate(-1deg)} 100%{transform:translateY(0) rotate(0)} }
@keyframes mcs-suffolk { 0%{transform:translateY(0) rotate(0)} 50%{transform:translateY(-2px) rotate(1deg) scaleY(.99)} 100%{transform:translateY(0) rotate(0)} }
@keyframes mcs-dowry { 0%{transform:scale(1)} 50%{transform:scale(1.05)} 100%{transform:scale(1)} }

.scn-item-burgundy-letter {
  background: linear-gradient(180deg, #4a5a6a 0%, #3a4a5a 50%, #2a3a4a 100%), radial-gradient(ellipse at 50% 100%, #2a3a4a 0%, transparent 70%);
}
.scn-item-burgundy-letter .bg-overcast {
  position:absolute; inset:0;
  background: linear-gradient(180deg, #5a6a7a 0%, #4a5a6a 100%);
  animation: bl-sky 12s ease-in-out infinite alternate;
}
.scn-item-burgundy-letter .floor {
  position:absolute; bottom:0; left:0; right:0; height:30%;
  background: linear-gradient(180deg, #3a4a4a 0%, #2a3a3a 100%);
}
.scn-item-burgundy-letter .figure-left {
  position:absolute; bottom:10%; left:25%; width:30px; height:80px;
  background: linear-gradient(180deg, #1a2a2a 0%, #0a1a1a 100%);
  border-radius: 50% 30% 40% 40% / 60% 40% 40% 40%;
  transform-origin: bottom center;
  animation: bl-figure-left 3s ease-in-out infinite;
}
.scn-item-burgundy-letter .figure-right {
  position:absolute; bottom:10%; right:25%; width:30px; height:80px;
  background: linear-gradient(180deg, #2a3a3a 0%, #1a2a2a 100%);
  border-radius: 30% 50% 40% 40% / 40% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bl-figure-right 3.5s ease-in-out infinite;
}
.scn-item-burgundy-letter .letter {
  position:absolute; bottom:25%; left:48%; width:50px; height:35px;
  background: linear-gradient(135deg, #d4c4a8 0%, #c4b498 100%);
  border: 1px solid #a09080; border-radius:2px; transform:rotate(-5deg);
  animation: bl-letter 2s ease-in-out infinite;
}
.scn-item-burgundy-letter .seal {
  position:absolute; bottom:25%; left:48%; width:12px; height:12px;
  background: radial-gradient(circle, #a04020 0%, #6a2010 100%);
  border-radius:50%; transform:translate(30px, 10px);
  animation: bl-seal 3s ease-in-out infinite;
}
.scn-item-burgundy-letter .shadow {
  position:absolute; bottom:0; left:0; right:0; height:20%;
  background: linear-gradient(180deg, transparent, rgba(0,0,0,0.4));
}
@keyframes bl-sky { 0%{opacity:0.9} 50%{opacity:1} 100%{opacity:0.8} }
@keyframes bl-figure-left { 0%,100%{transform:translateY(0) rotate(2deg)} 50%{transform:translateY(-3px) rotate(-2deg)} }
@keyframes bl-figure-right { 0%,100%{transform:translateY(0) rotate(-2deg)} 50%{transform:translateY(-2px) rotate(1deg)} }
@keyframes bl-letter { 0%,100%{transform:rotate(-5deg)} 50%{transform:rotate(2deg)} }
@keyframes bl-seal { 0%,100%{opacity:0.9} 50%{opacity:1; box-shadow:0 0 6px 2px rgba(160,64,32,0.4)} }

.scn-henry-wears-red-rose {
  background: linear-gradient(135deg, #f5ead0 0%, #e8d4b0 50%, #d4b888 100%), radial-gradient(ellipse at 50% 0%, #fff8e0 0%, transparent 50%);
}
.scn-henry-wears-red-rose .room-bg {
  position:absolute; inset:0;
  background: linear-gradient(180deg, #e8d4b0 0%, #d8c4a0 50%, #c8b490 100%);
  animation: hr-ambient 10s ease-in-out infinite;
}
.scn-henry-wears-red-rose .window {
  position:absolute; top:10%; left:10%; width:80%; height:40%;
  background: linear-gradient(180deg, #fff8e0 0%, #f5ead0 100%);
  border-radius:10% 10% 0 0; box-shadow:inset 0 -20px 20px rgba(0,0,0,0.1);
  animation: hr-window 8s ease-in-out infinite;
}
.scn-henry-wears-red-rose .throne {
  position:absolute; bottom:10%; left:50%; transform:translateX(-50%);
  width:100px; height:80px;
  background: linear-gradient(180deg, #8a6a4a 0%, #6a4a2a 100%);
  border-radius:10% 10% 50% 50% / 5% 5% 80% 80%;
  box-shadow:0 10px 20px rgba(0,0,0,0.3);
}
.scn-henry-wears-red-rose .henry {
  position:absolute; bottom:20%; left:50%; transform:translateX(-50%);
  width:40px; height:90px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius:40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin:bottom center;
  animation: hr-henry 4s ease-in-out infinite;
}
.scn-henry-wears-red-rose .rose {
  position:absolute; bottom:30%; left:50%; transform:translateX(-50%) translateX(10px) translateY(-10px);
  width:16px; height:16px;
  background: radial-gradient(circle at 40% 30%, #b84c4c 0%, #802a2a 70%, #4a1010 100%);
  border-radius:50%; box-shadow:0 0 8px 2px rgba(184,76,76,0.5);
  animation: hr-rose 3s ease-in-out infinite;
}
.scn-henry-wears-red-rose .courtier-left {
  position:absolute; bottom:10%; left:15%; width:30px; height:75px;
  background: linear-gradient(180deg, #3a4a3a 0%, #1a2a1a 100%);
  border-radius:30% 30% 40% 40% / 50% 50% 40% 40%;
  transform-origin:bottom center;
  animation: hr-courtier-l 5s ease-in-out infinite;
}
.scn-henry-wears-red-rose .courtier-right {
  position:absolute; bottom:10%; right:15%; width:30px; height:75px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius:30% 30% 40% 40% / 50% 50% 40% 40%;
  transform-origin:bottom center;
  animation: hr-courtier-r 5.5s ease-in-out infinite;
}
@keyframes hr-ambient { 0%,100%{opacity:0.9} 50%{opacity:1} }
@keyframes hr-window { 0%,100%{opacity:0.85} 50%{opacity:1} }
@keyframes hr-henry { 0%,100%{transform:translateX(-50%) translateY(0) rotate(0deg)} 25%{transform:translateX(-50%) translateY(-2px) rotate(1deg)} 75%{transform:translateX(-50%) translateY(-1px) rotate(-1deg)} }
@keyframes hr-rose { 0%,100%{transform:translateX(-50%) translateX(10px) translateY(-10px) scale(1)} 50%{transform:translateX(-50%) translateX(10px) translateY(-12px) scale(1.1)} }
@keyframes hr-courtier-l { 0%,100%{transform:translateY(0) rotate(2deg)} 50%{transform:translateY(-3px) rotate(-1deg)} }
@keyframes hr-courtier-r { 0%,100%{transform:translateY(0) rotate(-2deg)} 50%{transform:translateY(-2px) rotate(1deg)} }

.scn-bourdeaux-siege {
  background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 40%, #1a1a2a 100%), radial-gradient(ellipse at 50% 100%, #1a1a2a 0%, transparent 70%);
}
.scn-bourdeaux-siege .bg-storm {
  position:absolute; inset:0;
  background: linear-gradient(180deg, #4a4a5a 0%, #3a3a4a 100%);
  animation: bs-storm 15s ease-in-out infinite alternate;
}
.scn-bourdeaux-siege .clouds {
  position:absolute; top:0; left:0; right:0; height:35%;
  background: linear-gradient(180deg, rgba(255,255,255,0.1) 0%, rgba(0,0,0,0.3) 100%);
  filter:blur(8px); animation: bs-clouds 30s linear infinite;
}
.scn-bourdeaux-siege .castle-wall {
  position:absolute; bottom:30%; left:10%; right:10%; height:40%;
  background: linear-gradient(180deg, #5a4a4a 0%, #3a2a2a 100%);
  border-radius:5% 5% 0 0; box-shadow:inset 0 10px 20px rgba(0,0,0,0.5);
}
.scn-bourdeaux-siege .talbot-horse {
  position:absolute; bottom:10%; left:20%; width:60px; height:45px;
  background: linear-gradient(180deg, #3a2a2a 0%, #1a0a0a 100%);
  border-radius:50% 40% 30% 40% / 60% 50% 50% 40%;
  transform-origin:bottom center;
  animation: bs-horse 2.5s ease-in-out infinite;
}
.scn-bourdeaux-siege .talbot {
  position:absolute; bottom:20%; left:23%; width:25px; height:55px;
  background: linear-gradient(180deg, #4a3a3a 0%, #2a1a1a 100%);
  border-radius:40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin:bottom center;
  animation: bs-talbot 3s ease-in-out infinite;
}
.scn-bourdeaux-siege .enemy {
  position:absolute; bottom:32%; right:30%; width:30px; height:70px;
  background: linear-gradient(180deg, #2a2a3a 0%, #0a0a1a 100%);
  border-radius:30% 30% 40% 40% / 50% 50% 40% 40%;
  transform-origin:bottom center;
  animation: bs-enemy 4s ease-in-out infinite;
}
.scn-bourdeaux-siege .spear {
  position:absolute; bottom:32%; right:32%; width:4px; height:90px;
  background: linear-gradient(180deg, #8a7a6a 0%, #4a3a2a 100%);
  transform:rotate(15deg); transform-origin:bottom;
  animation: bs-spear 2s ease-in-out infinite;
}
.scn-bourdeaux-siege .flag {
  position:absolute; bottom:60%; right:30%; width:8px; height:30px;
  background: #6a4a3a;
  animation: bs-flag 3s ease-in-out infinite;
}
@keyframes bs-storm { 0%{opacity:0.8} 50%{opacity:1} 100%{opacity:0.7} }
@keyframes bs-clouds { 0%{transform:translateX(0)} 100%{transform:translateX(-100%)} }
@keyframes bs-horse { 0%,100%{transform:translateY(0) rotate(0deg)} 50%{transform:translateY(-4px) rotate(2deg)} }
@keyframes bs-talbot { 0%,100%{transform:translateY(0) rotate(-2deg)} 50%{transform:translateY(-5px) rotate(1deg)} }
@keyframes bs-enemy { 0%,100%{transform:translateY(0) rotate(0deg)} 50%{transform:translateY(-2px) rotate(3deg)} }
@keyframes bs-spear { 0%,100%{transform:rotate(15deg)} 50%{transform:rotate(10deg)} }
@keyframes bs-flag { 0%,100%{transform:scaleY(1)} 50%{transform:scaleY(1.1)} }

.scn-york-refuses-aid {
  background: linear-gradient(180deg, #2a3a3a 0%, #1a2a2a 50%, #0a1a1a 100%), radial-gradient(ellipse at 50% 80%, #2a4a3a 0%, transparent 70%);
}
.scn-york-refuses-aid .bg-camp {
  position:absolute; inset:0;
  background: linear-gradient(180deg, #3a4a4a 0%, #2a3a3a 100%);
  animation: ya-bg 12s ease-in-out infinite alternate;
}
.scn-york-refuses-aid .tent {
  position:absolute; bottom:0; left:20%; right:20%; height:60%;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius:5% 5% 0 0; box-shadow:0 -5px 15px rgba(0,0,0,0.5);
}
.scn-york-refuses-aid .table {
  position:absolute; bottom:20%; left:50%; transform:translateX(-50%);
  width:80px; height:40px;
  background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%);
  border-radius:5px;
}
.scn-york-refuses-aid .map {
  position:absolute; bottom:22%; left:50%; transform:translateX(-50%);
  width:60px; height:30px;
  background: linear-gradient(135deg, #d4c8a0 0%, #b8a880 100%);
  border-radius:2px;
  animation: ya-map 4s ease-in-out infinite;
}
.scn-york-refuses-aid .york {
  position:absolute; bottom:10%; left:35%; width:30px; height:80px;
  background: linear-gradient(180deg, #2a2a1a 0%, #0a0a00 100%);
  border-radius:40% 30% 40% 40% / 60% 50% 40% 40%;
  transform-origin:bottom center;
  animation: ya-york 3s ease-in-out infinite;
}
.scn-york-refuses-aid .lucy {
  position:absolute; bottom:10%; right:35%; width:28px; height:75px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%);
  border-radius:30% 40% 40% 40% / 50% 60% 40% 40%;
  transform-origin:bottom center;
  animation: ya-lucy 3.5s ease-in-out infinite;
}
.scn-york-refuses-aid .candle {
  position:absolute; bottom:25%; left:50%; transform:translateX(-50%) translateY(-30px);
  width:6px; height:20px;
  background: linear-gradient(180deg, #d4a060 0%, #8a6020 100%);
  border-radius:50% 50% 10% 10%;
}
.scn-york-refuses-aid .flame {
  position:absolute; bottom:25%; left:50%; transform:translateX(-50%) translateY(-40px);
  width:8px; height:12px;
  background: radial-gradient(circle, #ffe080 0%, #ffa040 50%, transparent 100%);
  border-radius:50%;
  animation: ya-flame 1.5s ease-in-out infinite;
}
@keyframes ya-bg { 0%{opacity:0.9} 50%{opacity:1} 100%{opacity:0.8} }
@keyframes ya-map { 0%,100%{transform:translateX(-50%) rotate(0deg)} 50%{transform:translateX(-50%) rotate(2deg)} }
@keyframes ya-york { 0%,100%{transform:translateY(0) rotate(2deg)} 50%{transform:translateY(-3px) rotate(-1deg)} }
@keyframes ya-lucy { 0%,100%{transform:translateY(0) rotate(-2deg)} 50%{transform:translateY(-2px) rotate(1deg)} }
@keyframes ya-flame { 0%,100%{transform:translateX(-50%) translateY(-40px) scale(1);opacity:0.9} 50%{transform:translateX(-50%) translateY(-42px) scale(1.2);opacity:1} }

.scn-temple-garden-return {
  background: linear-gradient(180deg, #f5deb3 0%, #f0e68c 50%, #bdb76b 100%),
              radial-gradient(ellipse at 70% 20%, #ffffff 0%, transparent 60%);
}
.scn-temple-garden-return .sun {
  position: absolute; top: 15%; left: 70%; width: 60px; height: 60px;
  background: radial-gradient(circle, #fff5ee 0%, #ffd700 50%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 80px 20px rgba(255,215,0,0.5);
  animation: tg-sun 4s ease-in-out infinite alternate;
}
.scn-temple-garden-return .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #6b8e23 0%, #556b2f 40%, #2f4f2f 100%);
  clip-path: polygon(0% 30%, 20% 20%, 40% 28%, 60% 22%, 80% 26%, 100% 20%, 100% 100%, 0% 100%);
}
.scn-temple-garden-return .tree-l {
  position: absolute; bottom: 40%; left: 10%; width: 40px; height: 120px;
  background: linear-gradient(180deg, #2d1b00 0%, #3e2723 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 40% 40%;
  box-shadow: -10px 0 15px rgba(0,0,0,0.3);
  animation: tg-tree 6s ease-in-out infinite;
}
.scn-temple-garden-return .tree-r {
  position: absolute; bottom: 40%; right: 12%; width: 50px; height: 140px;
  background: linear-gradient(180deg, #2d1b00 0%, #3e2723 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 40% 40%;
  box-shadow: 10px 0 15px rgba(0,0,0,0.3);
  animation: tg-tree 7s ease-in-out infinite reverse;
}
.scn-temple-garden-return .monument {
  position: absolute; bottom: 30%; left: 40%; width: 60px; height: 50px;
  background: linear-gradient(135deg, #8b7355 0%, #6b5b45 100%);
  border-radius: 20% 20% 0 0 / 40% 40% 0 0;
  box-shadow: 0 5px 10px rgba(0,0,0,0.5), inset 0 -10px 15px rgba(0,0,0,0.3);
}
.scn-temple-garden-return .figure {
  position: absolute; bottom: 25%; left: 45%; 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: tg-figure 0.8s ease-in-out infinite;
}
.scn-temple-garden-return .sword {
  position: absolute; bottom: 27%; left: 44%; width: 4px; height: 50px;
  background: linear-gradient(180deg, #c0c0c0, #808080);
  border-radius: 0 0 50% 50%;
  transform: rotate(15deg);
  animation: tg-sword 0.8s ease-in-out infinite;
}
.scn-temple-garden-return .petals {
  position: absolute; top: 50%; left: 20%; width: 6px; height: 6px;
  background: #ffb6c1; border-radius: 50%;
  box-shadow: 20px 30px 0 #ffb6c1, 40px 10px 0 #ffb6c1, 60px 40px 0 #ffb6c1;
  animation: tg-petals 12s linear infinite;
}
@keyframes tg-sun {
  0% { opacity: 0.9; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.1); }
  100% { opacity: 0.85; transform: scale(0.95); }
}
@keyframes tg-tree {
  0% { transform: rotate(0deg); }
  50% { transform: rotate(3deg); }
  100% { transform: rotate(0deg); }
}
@keyframes tg-figure {
  0% { transform: translateY(0) rotate(-1deg); }
  30% { transform: translateY(-1px) rotate(1deg); }
  60% { transform: translateY(0) rotate(-1deg); }
  100% { transform: translateY(1px) rotate(1deg); }
}
@keyframes tg-sword {
  0% { transform: rotate(15deg) translateX(0); }
  50% { transform: rotate(18deg) translateX(2px); }
  100% { transform: rotate(15deg) translateX(0); }
}
@keyframes tg-petals {
  0% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-30px) rotate(10deg); }
  100% { transform: translateY(-60px) rotate(20deg); }
}

.scn-mayor-peace-plea {
  background: linear-gradient(180deg, #f5deb3 0%, #deb887 40%, #d2b48c 100%),
              radial-gradient(ellipse at 50% 0%, #fff9e6 0%, transparent 50%);
}
.scn-mayor-peace-plea .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #8b7355 0%, #6b5b45 100%);
  clip-path: polygon(0% 20%, 100% 20%, 100% 100%, 0% 100%);
}
.scn-mayor-peace-plea .wall-left {
  position: absolute; top: 0; left: 0; width: 20%; height: 100%;
  background: linear-gradient(180deg, #a0845c 0%, #7a6645 100%);
  box-shadow: inset -5px 0 10px rgba(0,0,0,0.3);
}
.scn-mayor-peace-plea .wall-right {
  position: absolute; top: 0; right: 0; width: 20%; height: 100%;
  background: linear-gradient(180deg, #a0845c 0%, #7a6645 100%);
  box-shadow: inset 5px 0 10px rgba(0,0,0,0.3);
}
.scn-mayor-peace-plea .window {
  position: absolute; top: 10%; left: 50%; width: 120px; height: 80px;
  transform: translateX(-50%);
  background: radial-gradient(ellipse, #fff9e6 0%, #f0e68c 60%, transparent 100%);
  border-radius: 10px;
  box-shadow: 0 0 40px 10px rgba(255,249,230,0.5);
  animation: mp-light 3s ease-in-out infinite alternate;
}
.scn-mayor-peace-plea .figure-mayor {
  position: absolute; bottom: 20%; left: 50%; transform: translateX(-50%);
  width: 24px; height: 50px;
  background: linear-gradient(180deg, #2c2c2c 0%, #0d0d0d 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: mp-mayor 1.2s ease-in-out infinite;
}
.scn-mayor-peace-plea .figure-left {
  position: absolute; bottom: 20%; left: 25%; width: 80px; height: 50px;
  background: linear-gradient(90deg, #1a1a1a 0%, #333 50%, #1a1a1a 100%);
  border-radius: 50%;
  box-shadow: 0 0 0 1px rgba(255,255,255,0.1);
  animation: mp-fig 0.9s ease-in-out infinite;
}
.scn-mayor-peace-plea .figure-right {
  position: absolute; bottom: 20%; right: 25%; width: 80px; height: 50px;
  background: linear-gradient(90deg, #1a1a1a 0%, #333 50%, #1a1a1a 100%);
  border-radius: 50%;
  box-shadow: 0 0 0 1px rgba(255,255,255,0.1);
  animation: mp-fig 1.1s ease-in-out infinite reverse;
}
.scn-mayor-peace-plea .stones {
  position: absolute; bottom: 30%; left: 30%; width: 6px; height: 6px;
  background: #555; border-radius: 2px;
  box-shadow: 15px -5px 0 #555, 30px 5px 0 #555, 45px -10px 0 #555, 60px 2px 0 #555;
  animation: mp-stones 0.4s ease-in-out infinite;
}
@keyframes mp-light {
  0% { opacity: 0.9; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.05); }
  100% { opacity: 0.8; transform: scale(0.95); }
}
@keyframes mp-mayor {
  0% { transform: translateX(-50%) rotate(0deg); }
  25% { transform: translateX(-48%) rotate(2deg); }
  50% { transform: translateX(-50%) rotate(-1deg); }
  75% { transform: translateX(-52%) rotate(1deg); }
  100% { transform: translateX(-50%) rotate(0deg); }
}
@keyframes mp-fig {
  0% { transform: translateY(0); }
  50% { transform: translateY(-3px); }
  100% { transform: translateY(0); }
}
@keyframes mp-stones {
  0% { transform: translateX(0) translateY(0); }
  25% { transform: translateX(2px) translateY(-2px); }
  50% { transform: translateX(-1px) translateY(1px); }
  75% { transform: translateX(3px) translateY(-3px); }
  100% { transform: translateX(0) translateY(0); }
}

.scn-king-reconciliation {
  background: linear-gradient(180deg, #f0e6d3 0%, #d4b895 40%, #b8956b 100%),
              radial-gradient(ellipse at 50% 30%, #fff9e6 0%, transparent 40%);
}
.scn-king-reconciliation .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #8b7355 0%, #5c4a33 100%);
}
.scn-king-reconciliation .throne {
  position: absolute; bottom: 25%; left: 20%; width: 100px; height: 120px;
  background: linear-gradient(135deg, #c0a060 0%, #8b6500 100%);
  border-radius: 20% 20% 10% 10% / 30% 30% 20% 20%;
  box-shadow: 0 10px 20px rgba(0,0,0,0.4);
}
.scn-king-reconciliation .king {
  position: absolute; bottom: 28%; left: 25%; width: 30px; height: 50px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
}
.scn-king-reconciliation .gloucester {
  position: absolute; bottom: 20%; left: 45%; width: 20px; height: 40px;
  background: linear-gradient(180deg, #3a3a3a 0%, #1a1a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: kr-fig 6s ease-in-out infinite;
}
.scn-king-reconciliation .winchester {
  position: absolute; bottom: 20%; left: 55%; width: 20px; height: 40px;
  background: linear-gradient(180deg, #3a3a3a 0%, #1a1a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: kr-fig 6s ease-in-out infinite reverse;
}
.scn-king-reconciliation .handshake {
  position: absolute; bottom: 24%; left: 48%; width: 16px; height: 8px;
  background: #c0a060; border-radius: 50%;
  box-shadow: 0 0 5px rgba(0,0,0,0.3);
}
.scn-king-reconciliation .warwick {
  position: absolute; bottom: 20%; left: 70%; width: 20px; height: 40px;
  background: linear-gradient(180deg, #2e2e2e 0%, #0e0e0e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: kr-warwick 8s ease-in-out infinite;
}
.scn-king-reconciliation .scroll {
  position: absolute; bottom: 30%; left: 70%; width: 30px; height: 10px;
  background: #f5deb3; border-radius: 2px;
  box-shadow: 0 2px 4px rgba(0,0,0,0.2);
  animation: kr-scroll 8s ease-in-out infinite;
}
@keyframes kr-fig {
  0% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
  100% { transform: translateY(0); }
}
@keyframes kr-warwick {
  0% { transform: rotate(0deg); }
  50% { transform: rotate(3deg); }
  100% { transform: rotate(0deg); }
}
@keyframes kr-scroll {
  0% { transform: rotate(0deg) translateX(0); }
  50% { transform: rotate(5deg) translateX(5px); }
  100% { transform: rotate(0deg) translateX(0); }
}

.scn-prophecy-and-joan-disguise {
  background: linear-gradient(180deg, #2c2c3e 0%, #1a1a2e 40%, #0d0d1a 100%),
              radial-gradient(ellipse at 40% 60%, #4a3a3a 0%, transparent 70%);
}
.scn-prophecy-and-joan-disguise .wall {
  position: absolute; top: 0; left: 0; right: 0; height: 70%;
  background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 100%);
  box-shadow: inset 0 0 30px rgba(0,0,0,0.5);
}
.scn-prophecy-and-joan-disguise .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #2a1a10 0%, #1a0a05 100%);
}
.scn-prophecy-and-joan-disguise .candle {
  position: absolute; bottom: 40%; left: 30%; width: 6px; height: 20px;
  background: linear-gradient(180deg, #f5deb3 0%, #d2b48c 100%);
  border-radius: 2px;
  box-shadow: 0 0 20px 8px rgba(255, 200, 100, 0.6);
  animation: pj-candle 1.5s ease-in-out infinite alternate;
}
.scn-prophecy-and-joan-disguise .basket {
  position: absolute; bottom: 20%; left: 15%; width: 40px; height: 20px;
  background: linear-gradient(135deg, #5c4033 0%, #3e2723 100%);
  border-radius: 10% 10% 30% 30% / 20% 20% 40% 40%;
}
.scn-prophecy-and-joan-disguise .figure-joan {
  position: absolute; bottom: 20%; left: 45%; width: 22px; height: 44px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: pj-fig 0.6s ease-in-out infinite;
}
.scn-prophecy-and-joan-disguise .figure-other1 {
  position: absolute; bottom: 20%; left: 60%; width: 20px; height: 40px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: pj-fig 0.7s ease-in-out infinite reverse;
}
.scn-prophecy-and-joan-disguise .figure-other2 {
  position: absolute; bottom: 18%; left: 35%; width: 18px; height: 36px;
  background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: pj-fig 0.8s ease-in-out infinite 0.2s;
}
.scn-prophecy-and-joan-disguise .prophecy-scroll {
  position: absolute; top: 20%; left: 50%; transform: translateX(-50%);
  width: 80px; height: 12px;
  background: #f5deb3; border-radius: 2px;
  box-shadow: 0 0 15px rgba(255,215,0,0.3);
  animation: pj-scroll 10s ease-in-out infinite;
}
@keyframes pj-candle {
  0% { opacity: 0.7; transform: scaleY(1); }
  50% { opacity: 1; transform: scaleY(1.1); }
  100% { opacity: 0.8; transform: scaleY(0.9); }
}
@keyframes pj-fig {
  0% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-1px) rotate(1deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes pj-scroll {
  0% { transform: translateX(-50%) rotate(0deg); }
  50% { transform: translateX(-45%) rotate(3deg); }
  100% { transform: translateX(-50%) rotate(0deg); }
}
/* end per-scene blocks */
