/* 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-constance-grief-tent {
  background:
    linear-gradient(180deg, #1a1a1a 0%, #2a1f14 40%, #3a2818 100%),
    radial-gradient(ellipse at 50% 60%, #4a3020 0%, transparent 80%);
}

.scn-constance-grief-tent .tent-wall {
  position: absolute;
  inset: 0;
  background: linear-gradient(160deg, #3a2818 0%, #1f140e 100%);
  clip-path: polygon(0 0, 100% 0, 85% 100%, 15% 100%);
  animation: cgt-wall 12s ease-in-out infinite;
}
.scn-constance-grief-tent .tent-flap {
  position: absolute;
  left: 35%;
  top: 0;
  width: 30%;
  height: 100%;
  background: linear-gradient(180deg, #2a1f14 0%, #1a100a 100%);
  clip-path: polygon(0 0, 100% 0, 80% 100%, 20% 100%);
  transform-origin: top center;
  animation: cgt-flap 8s ease-in-out infinite alternate;
}
.scn-constance-grief-tent .brazier {
  position: absolute;
  bottom: 30%;
  left: 50%;
  width: 50px;
  height: 40px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #5a3a20 0%, #2a1a0e 100%);
  border-radius: 50% 50% 30% 30%;
  box-shadow: inset 0 -6px 10px rgba(0,0,0,0.6);
  animation: cgt-brazier 4s ease-in-out infinite;
}
.scn-constance-grief-tent .brazier-glow {
  position: absolute;
  bottom: 35%;
  left: 50%;
  width: 80px;
  height: 80px;
  transform: translateX(-50%);
  background: radial-gradient(circle, #c08040 0%, #a06030 30%, transparent 70%);
  border-radius: 50%;
  opacity: 0.8;
  animation: cgt-glow 3s ease-in-out infinite alternate;
}
.scn-constance-grief-tent .figure-constance {
  position: absolute;
  bottom: 20%;
  left: 40%;
  width: 30px;
  height: 70px;
  background: linear-gradient(180deg, #1a1a1a 0%, #0f0f0f 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cgt-figure 5s ease-in-out infinite;
}
.scn-constance-grief-tent .shadow {
  position: absolute;
  bottom: 15%;
  left: 35%;
  width: 40%;
  height: 30px;
  background: radial-gradient(ellipse, rgba(0,0,0,0.6) 0%, transparent 100%);
  animation: cgt-shadow 6s ease-in-out infinite alternate;
}
.scn-constance-grief-tent .dust {
  position: absolute;
  top: 20%;
  left: 20%;
  width: 10px;
  height: 10px;
  background: radial-gradient(circle, rgba(200,180,140,0.3), transparent);
  border-radius: 50%;
  animation: cgt-dust 20s linear infinite;
}

@keyframes cgt-wall {
  0%   { opacity: 0.9; }
  50%  { opacity: 1; }
  100% { opacity: 0.85; }
}
@keyframes cgt-flap {
  0%   { transform: rotateY(0deg); }
  50%  { transform: rotateY(8deg); }
  100% { transform: rotateY(0deg); }
}
@keyframes cgt-brazier {
  0%   { transform: translateX(-50%) scaleY(1); }
  50%  { transform: translateX(-50%) scaleY(1.05); }
  100% { transform: translateX(-50%) scaleY(1); }
}
@keyframes cgt-glow {
  0%   { opacity: 0.6; transform: translateX(-50%) scale(1); }
  50%  { opacity: 1; transform: translateX(-50%) scale(1.1); }
  100% { opacity: 0.7; transform: translateX(-50%) scale(1); }
}
@keyframes cgt-figure {
  0%   { transform: translateY(0) rotate(-1deg); }
  25%  { transform: translateY(-2px) rotate(1deg); }
  50%  { transform: translateY(0) rotate(-1deg); }
  75%  { transform: translateY(-1px) rotate(2deg); }
  100% { transform: translateY(0) rotate(0); }
}
@keyframes cgt-shadow {
  0%   { opacity: 0.5; transform: scaleX(1); }
  100% { opacity: 0.8; transform: scaleX(1.2); }
}
@keyframes cgt-dust {
  0%   { transform: translateY(0) translateX(0) scale(1); opacity: 0; }
  10%  { opacity: 0.5; }
  50%  { transform: translateY(-40px) translateX(20px) scale(1.5); opacity: 0.2; }
  100% { transform: translateY(-80px) translateX(40px) scale(2); opacity: 0; }
}

.scn-item-hot-irons {
  background:
    linear-gradient(180deg, #1a1410 0%, #2a1e14 50%, #1a0e0a 100%),
    radial-gradient(ellipse at 50% 70%, #3a2218 0%, transparent 70%);
}

.scn-item-hot-irons .tent-dark {
  position: absolute;
  inset: 0;
  background: linear-gradient(160deg, #2a1e14 0%, #0f0a07 100%);
  animation: ihi-dark 10s ease-in-out infinite alternate;
}
.scn-item-hot-irons .table {
  position: absolute;
  bottom: 25%;
  left: 20%;
  width: 60%;
  height: 20px;
  background: linear-gradient(180deg, #4a3020 0%, #2a1a0a 100%);
  border-radius: 4px;
  box-shadow: 0 4px 8px rgba(0,0,0,0.7);
  animation: ihi-table 6s ease-in-out infinite;
}
.scn-item-hot-irons .irons {
  position: absolute;
  bottom: 30%;
  left: 40%;
  width: 40px;
  height: 30px;
  background: linear-gradient(180deg, #8a3a20 0%, #c06030 100%);
  border-radius: 20% 20% 40% 40%;
  box-shadow: 0 0 20px 6px rgba(192,96,48,0.5);
  animation: ihi-irons 2s ease-in-out infinite alternate;
}
.scn-item-hot-irons .irons-glow {
  position: absolute;
  bottom: 28%;
  left: 38%;
  width: 60px;
  height: 60px;
  background: radial-gradient(circle, #d08040 0%, #a05020 40%, transparent 80%);
  border-radius: 50%;
  opacity: 0.7;
  animation: ihi-glow 2.5s ease-in-out infinite alternate;
}
.scn-item-hot-irons .executioner {
  position: absolute;
  bottom: 20%;
  right: 25%;
  width: 40px;
  height: 80px;
  background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: ihi-exec 4s ease-in-out infinite;
}
.scn-item-hot-irons .arthur {
  position: absolute;
  bottom: 20%;
  left: 35%;
  width: 28px;
  height: 65px;
  background: linear-gradient(180deg, #2a1a1a 0%, #1a0e0e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ihi-arthur 5s ease-in-out infinite;
}
.scn-item-hot-irons .chain {
  position: absolute;
  bottom: 27%;
  left: 32%;
  width: 12px;
  height: 30px;
  background: repeating-linear-gradient(0deg, #6a6a6a 0px, #6a6a6a 4px, transparent 4px, transparent 8px);
  border-radius: 2px;
  animation: ihi-chain 3s ease-in-out infinite;
}

@keyframes ihi-dark {
  0%   { opacity: 0.9; }
  50%  { opacity: 1; }
  100% { opacity: 0.85; }
}
@keyframes ihi-table {
  0%   { transform: translateY(0); }
  50%  { transform: translateY(-2px); }
  100% { transform: translateY(0); }
}
@keyframes ihi-irons {
  0%   { transform: scale(1); opacity: 0.8; }
  50%  { transform: scale(1.05); opacity: 1; }
  100% { transform: scale(1); opacity: 0.9; }
}
@keyframes ihi-glow {
  0%   { opacity: 0.5; transform: scale(1); }
  50%  { opacity: 1; transform: scale(1.1); }
  100% { opacity: 0.6; transform: scale(1); }
}
@keyframes ihi-exec {
  0%   { transform: translateY(0) rotate(-2deg); }
  25%  { transform: translateY(-1px) rotate(2deg); }
  50%  { transform: translateY(0) rotate(-1deg); }
  75%  { transform: translateY(-2px) rotate(1deg); }
  100% { transform: translateY(0) rotate(0); }
}
@keyframes ihi-arthur {
  0%   { transform: translateY(0) rotate(2deg); }
  50%  { transform: translateY(-2px) rotate(-1deg); }
  100% { transform: translateY(0) rotate(0); }
}
@keyframes ihi-chain {
  0%   { transform: translateY(0) rotate(-5deg); }
  50%  { transform: translateY(-2px) rotate(5deg); }
  100% { transform: translateY(0) rotate(0); }
}

.scn-final-hope {
  background:
    linear-gradient(180deg, #7eb8da 0%, #b4d7e8 40%, #f4d4a0 70%, #e8b860 100%),
    radial-gradient(ellipse at 50% 100%, #f4d4a0 0%, transparent 60%);
}
.scn-final-hope .sky-fh {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #7eb8da 0%, #b4d7e8 80%);
  animation: fh-sky 12s ease-in-out infinite alternate;
}
.scn-final-hope .sun-fh {
  position: absolute; top: 12%; left: 50%; width: 60px; height: 60px;
  transform: translateX(-50%);
  background: radial-gradient(circle, #fff5d0 0%, #f4c88a 60%, #e8a040 100%);
  border-radius: 50%;
  box-shadow: 0 0 30px 10px rgba(244, 200, 138, .5), 0 0 60px 20px rgba(232, 160, 64, .3);
  animation: fh-sun 20s ease-in-out infinite alternate;
}
.scn-final-hope .hills-fh {
  position: absolute; bottom: 30%; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #5a7a4a 0%, #3a5a2a 40%, #2a4a1a 100%);
  border-radius: 60% 40% 0 0 / 80% 70% 0 0;
  box-shadow: inset 0 10px 30px rgba(0,0,0,.4);
  animation: fh-hills 16s ease-in-out infinite alternate;
}
.scn-final-hope .figure-fh {
  position: absolute; bottom: 35%; left: 50%; width: 28px; height: 60px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #1a1a2e 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: fh-figure 8s ease-in-out infinite;
}
.scn-final-hope .banner-fh {
  position: absolute; bottom: 38%; left: 50%; width: 30px; height: 40px;
  transform: translateX(18px) translateY(-10px);
  background: linear-gradient(180deg, #c8a040 0%, #a07828 100%);
  border-radius: 2px;
  clip-path: polygon(0 0, 100% 0, 100% 90%, 50% 70%, 0 90%);
  box-shadow: 0 2px 8px rgba(0,0,0,.3);
  animation: fh-banner 5s ease-in-out infinite;
}
.scn-final-hope .shield-fh {
  position: absolute; bottom: 36%; left: 50%; width: 22px; height: 28px;
  transform: translateX(calc(-50% - 30px)) translateY(-8px);
  background: linear-gradient(135deg, #7ea4c4, #4a6a8a);
  border-radius: 8px 8px 40% 40%;
  box-shadow: inset 0 -2px 4px rgba(0,0,0,.5);
  animation: fh-shield 10s ease-in-out infinite;
}
.scn-final-hope .cloud-fh {
  position: absolute;
  background: linear-gradient(180deg, rgba(255,255,255,.6) 0%, rgba(255,255,255,.1) 100%);
  border-radius: 50%;
  filter: blur(6px);
}
.scn-final-hope .cloud-a-fh {
  top: 20%; left: -80px; width: 100px; height: 22px;
  animation: fh-drift-a 40s linear infinite;
}
.scn-final-hope .cloud-b-fh {
  top: 30%; left: -60px; width: 70px; height: 16px;
  animation: fh-drift-b 55s linear infinite reverse;
  animation-delay: -25s;
}
@keyframes fh-sky { 0% { opacity: .8; } 50% { opacity: 1; } 100% { opacity: .85; } }
@keyframes fh-sun { 0% { transform: translateX(-50%) translateY(0) scale(1); } 50% { transform: translateX(-50%) translateY(-4px) scale(1.02); } 100% { transform: translateX(-50%) translateY(0) scale(1); } }
@keyframes fh-hills { 0% { transform: translateY(0); } 50% { transform: translateY(-3px); } 100% { transform: translateY(0); } }
@keyframes fh-figure { 0% { 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); } 100% { transform: translateX(-50%) translateY(0) rotate(0); } }
@keyframes fh-banner { 0% { transform: translateX(18px) translateY(-10px) rotate(-2deg); } 50% { transform: translateX(18px) translateY(-12px) rotate(2deg); } 100% { transform: translateX(18px) translateY(-10px) rotate(-2deg); } }
@keyframes fh-shield { 0% { transform: translateX(calc(-50% - 30px)) translateY(-8px) scale(1); } 50% { transform: translateX(calc(-50% - 30px)) translateY(-10px) scale(1.03); } 100% { transform: translateX(calc(-50% - 30px)) translateY(-8px) scale(1); } }
@keyframes fh-drift-a { 0% { transform: translateX(0); } 100% { transform: translateX(120vw); } }
@keyframes fh-drift-b { 0% { transform: translateX(0); } 100% { transform: translateX(-80vw); } }

/* scene 1: palace-audience – calm, bright interior; wide throne room */
.scn-palace-audience {
  background: linear-gradient(180deg, #f5ebd0 0%, #e0d0b0 40%, #c5b090 100%),
              radial-gradient(ellipse at 50% 10%, #fff8e0 0%, transparent 70%);
}
.scn-palace-audience .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #a09078 0%, #7a6a52 100%);
  border-radius: 60% 60% 0 0 / 40% 40% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.15);
}
.scn-palace-audience .backwall {
  position: absolute; bottom: 35%; left: 10%; right: 10%; height: 60%;
  background: linear-gradient(180deg, #e8dcc8 0%, #d0c0a8 100%);
  border-radius: 20% 20% 0 0;
  box-shadow: inset 0 0 40px rgba(255,240,200,0.3);
}
.scn-palace-audience .throne {
  position: absolute; bottom: 38%; left: 50%; width: 60px; height: 80px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #c8a060 0%, #a08040 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 0 4px 12px rgba(0,0,0,0.2);
}
.scn-palace-audience .pillar-l {
  position: absolute; bottom: 35%; left: 15%; width: 20px; height: 65%;
  background: linear-gradient(180deg, #d4c4ac 0%, #b8a890 100%);
  border-radius: 8px;
  box-shadow: inset -4px 0 8px rgba(0,0,0,0.1);
}
.scn-palace-audience .pillar-r {
  position: absolute; bottom: 35%; right: 15%; width: 20px; height: 65%;
  background: linear-gradient(180deg, #d4c4ac 0%, #b8a890 100%);
  border-radius: 8px;
  box-shadow: inset 4px 0 8px rgba(0,0,0,0.1);
}
.scn-palace-audience .king-figure {
  position: absolute; bottom: 35%; left: 45%; width: 18px; height: 50px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: pau-king 8s ease-in-out infinite;
}
.scn-palace-audience .queen-figure {
  position: absolute; bottom: 35%; left: 55%; width: 16px; height: 46px;
  background: linear-gradient(180deg, #6a5a4a 0%, #3a2a1a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: pau-queen 8s ease-in-out infinite alternate;
}
.scn-palace-audience .light-ray {
  position: absolute; top: 10%; left: 30%; width: 14px; height: 80%;
  background: linear-gradient(180deg, rgba(255,240,200,0.4) 0%, rgba(255,240,200,0) 100%);
  transform: skewX(-8deg);
  filter: blur(3px);
  animation: pau-light 12s ease-in-out infinite alternate;
}
.scn-palace-audience .courtier {
  position: absolute; bottom: 32%; left: 30%; width: 12px; height: 40px;
  background: linear-gradient(180deg, #5a4a3a 0%, #2a1a0a 100%);
  border-radius: 30% 30% 20% 20% / 50% 50% 20% 20%;
  animation: pau-courtier 10s ease-in-out infinite;
}
@keyframes pau-king {
  0%,100% { transform: translateX(0); }
  50% { transform: translateX(-3px) rotate(-1deg); }
}
@keyframes pau-queen {
  0% { transform: translateX(0); }
  100% { transform: translateX(4px) rotate(1deg); }
}
@keyframes pau-light {
  0% { opacity: 0.6; transform: skewX(-8deg) scaleY(1); }
  100% { opacity: 1; transform: skewX(-8deg) scaleY(1.1); }
}
@keyframes pau-courtier {
  0%,100% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
}

/* scene 2: palace-faulconbridge – funny, bright interior; two figures + props */
.scn-palace-faulconbridge {
  background: linear-gradient(180deg, #faf2e0 0%, #e8dcc8 50%, #d0bfa8 100%),
              radial-gradient(ellipse at 50% 80%, #fff4d0 0%, transparent 60%);
}
.scn-palace-faulconbridge .stage {
  position: absolute; bottom: 0; left: 5%; right: 5%; height: 40%;
  background: linear-gradient(180deg, #c8b898 0%, #a08868 100%);
  border-radius: 40% 40% 0 0;
}
.scn-palace-faulconbridge .figure-robert {
  position: absolute; bottom: 20%; left: 30%; width: 20px; height: 55px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 20% 20% / 60% 60% 20% 20%;
  transform-origin: bottom center;
  animation: paf-robert 3s ease-in-out infinite;
}
.scn-palace-faulconbridge .figure-bastard {
  position: absolute; bottom: 20%; right: 30%; width: 22px; height: 60px;
  background: linear-gradient(180deg, #6a5a4a 0%, #3a2a1a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: paf-bastard 2.5s ease-in-out infinite alternate;
}
.scn-palace-faulconbridge .crown-float {
  position: absolute; top: 15%; left: 45%; width: 24px; height: 14px;
  background: linear-gradient(180deg, #f0d060 0%, #c8a030 100%);
  border-radius: 50% 50% 20% 20%;
  box-shadow: 0 0 20px 4px rgba(240,208,96,0.5);
  animation: paf-crown 4s ease-in-out infinite;
}
.scn-palace-faulconbridge .parchment {
  position: absolute; bottom: 25%; left: 45%; width: 30px; height: 20px;
  background: linear-gradient(180deg, #f0e0c0 0%, #d0c0a0 100%);
  border-radius: 4px;
  transform: rotate(10deg);
  box-shadow: 0 2px 4px rgba(0,0,0,0.15);
  animation: paf-parchment 5s ease-in-out infinite alternate;
}
.scn-palace-faulconbridge .sparkle {
  position: absolute; top: 30%; left: 50%; width: 6px; height: 6px;
  background: #fff8d0;
  border-radius: 50%;
  box-shadow: 0 0 12px 3px rgba(255,248,200,0.8);
  animation: paf-sparkle 1.5s ease-in-out infinite;
}
@keyframes paf-robert {
  0%,100% { transform: translateX(0) rotate(0deg); }
  25% { transform: translateX(8px) rotate(5deg); }
  50% { transform: translateX(0) rotate(-2deg); }
  75% { transform: translateX(-8px) rotate(3deg); }
}
@keyframes paf-bastard {
  0% { transform: translateX(0) scaleY(1); }
  50% { transform: translateX(-10px) scaleY(1.05) rotate(-3deg); }
  100% { transform: translateX(0) scaleY(1) rotate(3deg); }
}
@keyframes paf-crown {
  0%,100% { transform: translateY(0) rotate(0deg); }
  30% { transform: translateY(-15px) rotate(-10deg); }
  60% { transform: translateY(-5px) rotate(8deg); }
}
@keyframes paf-parchment {
  0% { transform: rotate(10deg) translateY(0); }
  100% { transform: rotate(-5deg) translateY(-3px); }
}
@keyframes paf-sparkle {
  0%,100% { opacity: 0.3; transform: scale(0.8); }
  50% { opacity: 1; transform: scale(1.2); }
}

/* scene 3: palace-bastard-knighted – warm, bright interior; knighting moment */
.scn-palace-bastard-knighted {
  background: linear-gradient(180deg, #f7e8cd 0%, #e8d0a8 40%, #c8a878 100%),
              radial-gradient(ellipse at 50% 30%, #ffecb0 0%, transparent 65%);
}
.scn-palace-bastard-knighted .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #b09878 0%, #887058 100%);
  border-radius: 50% 50% 0 0 / 30% 30% 0 0;
}
.scn-palace-bastard-knighted .backdrop {
  position: absolute; bottom: 30%; left: 5%; right: 5%; height: 65%;
  background: linear-gradient(180deg, #d8c8a8 0%, #c0b098 100%);
  border-radius: 15% 15% 0 0;
}
.scn-palace-bastard-knighted .king-figure {
  position: absolute; bottom: 25%; left: 40%; width: 20px; height: 60px;
  background: linear-gradient(180deg, #6a4a2a 0%, #4a2a10 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: pbk-king 6s ease-in-out infinite;
}
.scn-palace-bastard-knighted .bastard-kneeling {
  position: absolute; bottom: 20%; left: 52%; width: 18px; height: 40px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 40% 40% 20% 20% / 50% 50% 20% 20%;
  transform-origin: bottom center;
  animation: pbk-kneel 7s ease-in-out infinite alternate;
}
.scn-palace-bastard-knighted .sword {
  position: absolute; bottom: 45%; left: 47%; width: 4px; height: 50px;
  background: linear-gradient(180deg, #e8d8c0 0%, #b8a888 100%);
  border-radius: 2px;
  transform: rotate(-30deg);
  transform-origin: bottom center;
  animation: pbk-sword 5s ease-in-out infinite alternate;
}
.scn-palace-bastard-knighted .light-beam {
  position: absolute; top: 5%; left: 45%; width: 10px; height: 95%;
  background: linear-gradient(180deg, rgba(255,240,200,0.5) 0%, rgba(255,240,200,0) 100%);
  filter: blur(4px);
  animation: pbk-beam 8s ease-in-out infinite;
}
.scn-palace-bastard-knighted .crown-glow {
  position: absolute; top: 8%; left: 45%; width: 20px; height: 12px;
  background: radial-gradient(circle, #f0d880 0%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 20px 8px rgba(240,216,128,0.4);
  animation: pbk-crown-glow 4s ease-in-out infinite alternate;
}
@keyframes pbk-king {
  0%,100% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
}
@keyframes pbk-kneel {
  0% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-1px) rotate(-2deg); }
  100% { transform: translateY(0) rotate(2deg); }
}
@keyframes pbk-sword {
  0% { transform: rotate(-30deg); opacity: 0.8; }
  50% { transform: rotate(-25deg); opacity: 1; }
  100% { transform: rotate(-30deg); opacity: 0.8; }
}
@keyframes pbk-beam {
  0%,100% { opacity: 0.5; transform: scaleY(1); }
  50% { opacity: 1; transform: scaleY(1.05); }
}
@keyframes pbk-crown-glow {
  0% { opacity: 0.6; transform: scale(0.9); }
  100% { opacity: 1; transform: scale(1.1); }
}

/* scene 4: palace-mother-confession – tense, bright interior; confrontation */
.scn-palace-mother-confession {
  background: linear-gradient(180deg, #e8e0d0 0%, #d0c8b8 40%, #b8ae9e 100%),
              radial-gradient(ellipse at 70% 40%, #fff8e8 0%, transparent 60%);
}
.scn-palace-mother-confession .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #a09888 0%, #80786a 100%);
  border-radius: 40% 40% 0 0 / 30% 30% 0 0;
  box-shadow: inset 0 8px 12px rgba(0,0,0,0.1);
}
.scn-palace-mother-confession .backwall {
  position: absolute; bottom: 30%; left: 5%; right: 5%; height: 65%;
  background: linear-gradient(180deg, #d8d0c0 0%, #c0b8a8 100%);
  clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);
  box-shadow: inset 0 0 30px rgba(0,0,0,0.05);
}
.scn-palace-mother-confession .mother-figure {
  position: absolute; bottom: 25%; left: 30%; width: 18px; height: 55px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0c04 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: pmc-mother 3s ease-in-out infinite alternate;
}
.scn-palace-mother-confession .figure-accused {
  position: absolute; bottom: 20%; right: 30%; width: 20px; height: 58px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 20% 20% / 60% 60% 20% 20%;
  transform-origin: bottom center;
  animation: pmc-accused 4s ease-in-out infinite;
}
.scn-palace-mother-confession .dagger-shadow {
  position: absolute; bottom: 50%; left: 43%; width: 3px; height: 40px;
  background: rgba(0,0,0,0.25);
  border-radius: 1px;
  transform: rotate(15deg);
  filter: blur(2px);
  animation: pmc-dagger 2s ease-in-out infinite alternate;
}
.scn-palace-mother-confession .sharp-light {
  position: absolute; top: 5%; left: 35%; width: 8px; height: 90%;
  background: linear-gradient(180deg, rgba(255,255,240,0.4) 0%, rgba(255,255,240,0) 100%);
  transform: skewX(-10deg);
  filter: blur(3px);
  animation: pmc-light 5s ease-in-out infinite alternate;
}
.scn-palace-mother-confession .shadow-stripe {
  position: absolute; top: 0; left: 50%; width: 2px; height: 100%;
  background: linear-gradient(180deg, rgba(0,0,0,0.15), rgba(0,0,0,0.05), rgba(0,0,0,0.15));
  animation: pmc-stripe 6s ease-in-out infinite;
}
@keyframes pmc-mother {
  0% { transform: translateX(0) rotate(0deg); }
  50% { transform: translateX(-5px) rotate(2deg); }
  100% { transform: translateX(0) rotate(-2deg); }
}
@keyframes pmc-accused {
  0%,100% { transform: translateY(0); }
  25% { transform: translateY(-3px); }
  50% { transform: translateY(0); }
  75% { transform: translateY(2px); }
}
@keyframes pmc-dagger {
  0% { transform: rotate(15deg) translateY(0); opacity: 0.5; }
  100% { transform: rotate(10deg) translateY(-5px); opacity: 0.8; }
}
@keyframes pmc-light {
  0% { opacity: 0.3; transform: skewX(-10deg) scaleY(1); }
  100% { opacity: 0.7; transform: skewX(-10deg) scaleY(1.05); }
}
@keyframes pmc-stripe {
  0%,100% { opacity: 0.3; }
  50% { opacity: 0.7; }
}

/* Scene: angiers-parley-questions */
.scn-angiers-parley-questions {
  background: linear-gradient(180deg, #f2e5c6 0%, #d9c89e 30%, #b89a6f 60%, #8c7044 100%),
              radial-gradient(ellipse at 50% 0%, #fff4d6 0%, transparent 60%);
}
.scn-angiers-parley-questions .sky-gold { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #ffe8b0 0%, #f5d89a 50%, transparent 100%); animation: apq-sky 15s ease-in-out infinite alternate; }
.scn-angiers-parley-questions .wall-bg { position:absolute; bottom:30%; left:10%; right:10%; height:35%; background: linear-gradient(180deg, #b2946b 0%, #8a704a 60%, #6b5432 100%); border-radius: 10% 10% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,0.3); animation: apq-wall 20s ease-in-out infinite; }
.scn-angiers-parley-questions .figure-left { position:absolute; bottom:30%; left:25%; width:25px; height:60px; background: linear-gradient(180deg, #3d2b1a 0%, #1d130a 100%); border-radius: 50% 30% 40% 40% / 60% 40% 40% 40%; transform-origin: bottom center; animation: apq-bow 6s ease-in-out infinite; }
.scn-angiers-parley-questions .figure-right { position:absolute; bottom:30%; right:25%; width:28px; height:65px; background: linear-gradient(180deg, #4a3522 0%, #221810 100%); border-radius: 30% 50% 40% 40% / 40% 60% 40% 40%; transform-origin: bottom center; animation: apq-stance 8s ease-in-out infinite; }
.scn-angiers-parley-questions .ground { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #7a603a 0%, #5a4422 80%, #3c2e14 100%); border-radius: 30% 20% 0 0 / 100% 100% 0 0; }
.scn-angiers-parley-questions .hand-gesture { position:absolute; bottom:40%; left:35%; width:12px; height:18px; background: linear-gradient(180deg, #4a3522 0%, #221810 100%); border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%; transform: rotate(15deg); animation: apq-hand 4s ease-in-out infinite alternate; }
.scn-angiers-parley-questions .banner { position:absolute; top:20%; left:48%; width:20px; height:30px; background: linear-gradient(180deg, #b84e2a 0%, #8a3218 100%); border-radius: 0 0 40% 40%; box-shadow: 0 2px 4px rgba(0,0,0,0.3); animation: apq-flag 9s ease-in-out infinite; }

@keyframes apq-sky { 0% { opacity:0.9; } 50% { opacity:1; } 100% { opacity:0.85; } }
@keyframes apq-wall { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes apq-bow { 0% { transform: translateX(0) rotate(-2deg); } 25% { transform: translateX(2px) rotate(0deg); } 50% { transform: translateX(0) rotate(2deg); } 75% { transform: translateX(-1px) rotate(0deg); } 100% { transform: translateX(0) rotate(-2deg); } }
@keyframes apq-stance { 0% { transform: translateX(0) rotate(0deg); } 33% { transform: translateX(0) rotate(-3deg); } 66% { transform: translateX(0) rotate(1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes apq-hand { 0% { transform: rotate(10deg) scaleY(1); } 100% { transform: rotate(30deg) scaleY(1.1); } }
@keyframes apq-flag { 0% { transform: rotate(-5deg); } 50% { transform: rotate(8deg); } 100% { transform: rotate(-5deg); } }

/* Scene: angiers-parley-treaty */
.scn-angiers-parley-treaty {
  background: linear-gradient(180deg, #f1e4c4 0%, #d6be94 40%, #b2986a 70%, #8a7044 100%),
              radial-gradient(ellipse at 50% 100%, #fff0ca 0%, transparent 70%);
}
.scn-angiers-parley-treaty .sky-gold { position:absolute; inset:0 0 55% 0; background: linear-gradient(180deg, #ffe0a0 0%, #f5d08a 50%, transparent 100%); animation: apt-sky 20s ease-in-out infinite alternate; }
.scn-angiers-parley-treaty .wall-bg { position:absolute; bottom:30%; left:5%; right:5%; height:35%; background: linear-gradient(180deg, #a88a64 0%, #7a6440 60%, #5a4828 100%); border-radius: 15% 15% 0 0; box-shadow: inset 0 10px 25px rgba(0,0,0,0.35); animation: apt-wall 15s ease-in-out infinite; }
.scn-angiers-parley-treaty .table { position:absolute; bottom:28%; left:35%; right:35%; height:14%; background: linear-gradient(180deg, #6b4a24 0%, #4a3014 100%); border-radius: 10% 10% 5% 5%; box-shadow: 0 6px 12px rgba(0,0,0,0.4); animation: apt-table 10s ease-in-out infinite; }
.scn-angiers-parley-treaty .scroll { position:absolute; bottom:34%; left:44%; width:40px; height:12px; background: linear-gradient(180deg, #e8dcc0 0%, #c8b898 100%); border-radius: 20% 20% 10% 10%; box-shadow: 0 2px 6px rgba(0,0,0,0.3); animation: apt-scroll 5s ease-in-out infinite alternate; }
.scn-angiers-parley-treaty .hand-left { position:absolute; bottom:30%; left:42%; width:14px; height:22px; background: linear-gradient(180deg, #3d2b1a 0%, #1d130a 100%); border-radius: 40% 40% 20% 20%; transform-origin: bottom right; animation: apt-hand-left 4s ease-in-out infinite alternate; }
.scn-angiers-parley-treaty .hand-right { position:absolute; bottom:30%; right:42%; width:14px; height:22px; background: linear-gradient(180deg, #4a3522 0%, #221810 100%); border-radius: 40% 40% 20% 20%; transform-origin: bottom left; animation: apt-hand-right 4s ease-in-out infinite alternate; }
.scn-angiers-parley-treaty .ground { position:absolute; bottom:0; left:0; right:0; height:28%; background: linear-gradient(180deg, #685434 0%, #44361c 80%, #2c1e0e 100%); border-radius: 20% 20% 0 0 / 100% 100% 0 0; }

@keyframes apt-sky { 0% { opacity:0.9; } 50% { opacity:1; } 100% { opacity:0.8; } }
@keyframes apt-wall { 0% { transform: translateY(0); } 50% { transform: translateY(-1px); } 100% { transform: translateY(0); } }
@keyframes apt-table { 0% { transform: translateY(0) scaleX(1); } 50% { transform: translateY(-1px) scaleX(1.01); } 100% { transform: translateY(0) scaleX(1); } }
@keyframes apt-scroll { 0% { transform: rotate(0deg) scaleY(1); } 100% { transform: rotate(2deg) scaleY(1.05); } }
@keyframes apt-hand-left { 0% { transform: rotate(-15deg) translateY(0); } 100% { transform: rotate(-5deg) translateY(-3px); } }
@keyframes apt-hand-right { 0% { transform: rotate(15deg) translateY(0); } 100% { transform: rotate(5deg) translateY(-3px); } }

/* Scene: angiers-parley-marriage */
.scn-angiers-parley-marriage {
  background: linear-gradient(180deg, #f7e6c8 0%, #e0c49a 30%, #bf9f72 60%, #9a7a4e 100%),
              radial-gradient(ellipse at 50% -10%, #fff7e0 0%, transparent 50%);
}
.scn-angiers-parley-marriage .sky-gold { position:absolute; inset:0 0 60% 0; background: linear-gradient(180deg, #ffecb0 0%, #fad998 40%, transparent 100%); animation: apm-sky 12s ease-in-out infinite alternate; }
.scn-angiers-parley-marriage .chapel-roof { position:absolute; top:5%; left:35%; right:35%; height:25%; background: linear-gradient(180deg, #8a6a3a 0%, #5a4422 100%); clip-path: polygon(50% 0%, 100% 100%, 0% 100%); box-shadow: inset 0 6px 12px rgba(0,0,0,0.3); animation: apm-roof 20s ease-in-out infinite; }
.scn-angiers-parley-marriage .chapel-door { position:absolute; top:20%; left:45%; right:45%; height:30%; background: linear-gradient(180deg, #4a3220 0%, #2a1c0e 100%); border-radius: 50% 50% 10% 10% / 40% 40% 10% 10%; box-shadow: inset 0 4px 8px rgba(0,0,0,0.4); animation: apm-door 15s ease-in-out infinite; }
.scn-angiers-parley-marriage .priest { position:absolute; bottom:28%; left:48%; width:20px; height:50px; background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%; transform: translateX(-50%); animation: apm-priest 6s ease-in-out infinite; }
.scn-angiers-parley-marriage .bride { position:absolute; bottom:28%; left:42%; width:22px; height:55px; background: linear-gradient(180deg, #f0e8d8 0%, #d8c8b0 100%); border-radius: 50% 30% 40% 40% / 60% 40% 40% 40%; animation: apm-bride 8s ease-in-out infinite alternate; }
.scn-angiers-parley-marriage .groom { position:absolute; bottom:28%; right:42%; width:24px; height:58px; background: linear-gradient(180deg, #3a2a1a 0%, #1a0e0a 100%); border-radius: 30% 50% 40% 40% / 40% 60% 40% 40%; animation: apm-groom 8s ease-in-out infinite alternate; }
.scn-angiers-parley-marriage .flower-petal { position:absolute; top:12%; width:10px; height:10px; background: radial-gradient(circle, #e8a0b0 0%, #c87890 100%); border-radius: 50%; box-shadow: 0 0 6px rgba(200,120,144,0.5); animation: apm-petal 12s linear infinite; }
.scn-angiers-parley-marriage .flower-petal.delay { left:60%; animation-delay: -6s; }

@keyframes apm-sky { 0% { opacity:0.9; } 50% { opacity:1; } 100% { opacity:0.85; } }
@keyframes apm-roof { 0% { transform: translateY(0) scaleY(1); } 50% { transform: translateY(-2px) scaleY(1.02); } 100% { transform: translateY(0) scaleY(1); } }
@keyframes apm-door { 0% { transform: translateY(0); } 50% { transform: translateY(-1px); } 100% { transform: translateY(0); } }
@keyframes apm-priest { 0% { transform: translateX(-50%) rotate(-1deg); } 50% { transform: translateX(-50%) rotate(1deg); } 100% { transform: translateX(-50%) rotate(-1deg); } }
@keyframes apm-bride { 0% { transform: translateX(0) rotate(2deg); } 100% { transform: translateX(3px) rotate(-2deg); } }
@keyframes apm-groom { 0% { transform: translateX(0) rotate(-2deg); } 100% { transform: translateX(-3px) rotate(2deg); } }
@keyframes apm-petal { 0% { transform: translate(0, 0) scale(0.8); opacity:0; } 10% { opacity:1; } 90% { opacity:1; } 100% { transform: translate(20vw, 50vh) scale(1.2); opacity:0; } }

/* Scene: angiers-parley-constance-missing */
.scn-angiers-parley-constance-missing {
  background: linear-gradient(180deg, #e8dcc4 0%, #c8b89e 30%, #a8987a 60%, #7a6850 100%),
              radial-gradient(ellipse at 50% 20%, #fff6e0 0%, transparent 60%);
}
.scn-angiers-parley-constance-missing .sky-gold { position:absolute; inset:0 0 55% 0; background: linear-gradient(180deg, #ffe4a0 0%, #f5d08a 50%, transparent 100%); animation: apc-sky 18s ease-in-out infinite alternate; }
.scn-angiers-parley-constance-missing .throne { position:absolute; bottom:30%; left:38%; right:38%; height:40%; background: linear-gradient(180deg, #6a5028 0%, #3a2814 100%); border-radius: 20% 20% 10% 10%; box-shadow: 0 10px 20px rgba(0,0,0,0.4); animation: apc-throne 14s ease-in-out infinite; }
.scn-angiers-parley-constance-missing .messenger { position:absolute; bottom:20%; right:20%; width:20px; height:48px; background: linear-gradient(180deg, #3d2b1a 0%, #1d130a 100%); border-radius: 30% 30% 40% 40% / 40% 40% 50% 50%; transform-origin: bottom center; animation: apc-run 3s ease-in-out infinite; }
.scn-angiers-parley-constance-missing .empty-silhouette { position:absolute; bottom:28%; left:45%; width:18px; height:50px; background: linear-gradient(180deg, #2e1e0e 0%, #160c06 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; opacity:0.4; animation: apc-fade 8s ease-in-out infinite alternate; }
.scn-angiers-parley-constance-missing .ground { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #5a4a2a 0%, #3a2c14 80%, #241a0a 100%); border-radius: 30% 20% 0 0 / 100% 100% 0 0; }
.scn-angiers-parley-constance-missing .dust-puff { position:absolute; bottom:22%; right:28%; width:14px; height:14px; background: radial-gradient(circle, rgba(200,180,150,0.8) 0%, transparent 100%); border-radius: 50%; animation: apc-dust 2.5s ease-out infinite; }

@keyframes apc-sky { 0% { opacity:0.9; } 50% { opacity:1; } 100% { opacity:0.8; } }
@keyframes apc-throne { 0% { transform: translateY(0) scaleY(1); } 50% { transform: translateY(-2px) scaleY(1.02); } 100% { transform: translateY(0) scaleY(1); } }
@keyframes apc-run { 0% { transform: translateX(0) rotate(-3deg); } 25% { transform: translateX(-5px) rotate(2deg); } 50% { transform: translateX(-10px) rotate(-1deg); } 75% { transform: translateX(-5px) rotate(3deg); } 100% { transform: translateX(0) rotate(-3deg); } }
@keyframes apc-fade { 0% { opacity:0.3; transform: scale(0.95); } 100% { opacity:0.5; transform: scale(1.05); } }
@keyframes apc-dust { 0% { transform: translate(0,0) scale(0.5); opacity:1; } 100% { transform: translate(15px, -20px) scale(1.5); opacity:0; } }

.scn-lords-resolve-transition { background: linear-gradient(180deg, #6b4a3a 0%, #4e3a2e 30%, #2a3a4a 70%, #1a2a3a 100%), radial-gradient(ellipse at 50% 100%, #8a7a5a 0%, transparent 70%); }
.scn-lords-resolve-transition .sky-lr { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #c8a06a 0%, #7a6a4a 40%, #3a4a5a 100%); animation: lr-sky 15s ease-in-out infinite alternate; }
.scn-lords-resolve-transition .sea-lr { position:absolute; bottom:0; left:0; right:0; height:50%; background: linear-gradient(180deg, #3a4a5a 0%, #2a3a4a 50%, #1a2a3a 100%); animation: lr-sea 10s ease-in-out infinite; }
.scn-lords-resolve-transition .horizon-lr { position:absolute; bottom:50%; left:0; right:0; height:4px; background: linear-gradient(90deg, transparent 0%, #b08050 50%, transparent 100%); opacity:0.6; }
.scn-lords-resolve-transition .figure-l { position:absolute; bottom:50%; left:30%; width:16px; height:32px; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin:bottom center; animation: lr-fig-l 6s ease-in-out infinite; }
.scn-lords-resolve-transition .figure-r { position:absolute; bottom:50%; left:50%; width:16px; height:32px; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin:bottom center; animation: lr-fig-r 6s ease-in-out infinite 1s; }
.scn-lords-resolve-transition .ship-lr { position:absolute; bottom:40%; left:55%; width:50px; height:20px; background: linear-gradient(180deg, #3a2a1a 0%, #1a1a0a 100%); border-radius:40% 40% 20% 20% / 60% 60% 20% 20%; animation: lr-ship 20s linear infinite; }
.scn-lords-resolve-transition .cloud-lr-a { position:absolute; top:10%; left:20%; width:100px; height:20px; background: rgba(200,180,150,0.25); border-radius:50%; filter:blur(8px); animation: lr-cloud-a 40s linear infinite; }
.scn-lords-resolve-transition .cloud-lr-b { position:absolute; top:15%; left:60%; width:70px; height:14px; background: rgba(200,180,150,0.15); border-radius:50%; filter:blur(6px); animation: lr-cloud-b 50s linear infinite reverse; }
@keyframes lr-sky { 0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.7; } }
@keyframes lr-sea { 0%,100% { transform: translateY(0); } 25% { transform: translateY(-2px); } 50% { transform: translateY(1px); } 75% { transform: translateY(-1px); } }
@keyframes lr-fig-l { 0% { transform: translateX(0) rotate(0); } 25% { transform: translateX(8px) rotate(2deg); } 50% { transform: translateX(16px) rotate(-1deg); } 75% { transform: translateX(8px) rotate(1deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes lr-fig-r { 0%,100% { transform: translateX(0) translateY(0); } 50% { transform: translateX(-6px) translateY(-2px); } }
@keyframes lr-ship { 0% { transform: translateX(0) translateY(0) scale(1); } 50% { transform: translateX(-10px) translateY(-3px) scale(0.95); } 100% { transform: translateX(20px) translateY(1px) scale(1.02); } }
@keyframes lr-cloud-a { 0% { transform: translateX(-30px); } 100% { transform: translateX(120vw); } }
@keyframes lr-cloud-b { 0% { transform: translateX(0); } 100% { transform: translateX(-100vw); } }

.scn-bad-news-lewis { background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 40%, #0a0a1a 100%), radial-gradient(ellipse at 50% 0%, #3a3a5a 0%, transparent 70%); }
.scn-bad-news-lewis .sky-bn { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); animation: bn-sky 12s ease-in-out infinite; }
.scn-bad-news-lewis .ground-bn { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%); }
.scn-bad-news-lewis .tent-bn { position:absolute; bottom:30%; left:20%; width:60px; height:80px; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius:10% 10% 5% 5%; clip-path: polygon(0% 100%, 50% 0%, 100% 100%); animation: bn-tent 8s ease-in-out infinite; }
.scn-bad-news-lewis .flag-bn { position:absolute; bottom:78%; left:42%; width:20px; height:30px; background: linear-gradient(180deg, #5a2a2a 0%, #3a1a1a 100%); border-radius:0 0 20% 20%; animation: bn-flag 4s ease-in-out infinite alternate; }
.scn-bad-news-lewis .figure-lewis { position:absolute; bottom:30%; left:45%; 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: bn-lewis 6s ease-in-out infinite; }
.scn-bad-news-lewis .figure-msg { position:absolute; bottom:30%; left:55%; width:18px; height:36px; background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin:bottom center; animation: bn-msg 8s ease-in-out infinite 2s; }
.scn-bad-news-lewis .torch-bn { position:absolute; bottom:45%; left:50%; width:6px; height:12px; background: radial-gradient(circle, #ffaa50 0%, #d08030 60%, #a06020 100%); border-radius:50%; box-shadow: 0 0 20px 6px #ffaa50, 0 0 40px 12px rgba(255,170,80,0.4); animation: bn-torch 3s ease-in-out infinite alternate; }
@keyframes bn-sky { 0% { opacity:0.6; } 50% { opacity:1; } 100% { opacity:0.7; } }
@keyframes bn-tent { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-2px); } }
@keyframes bn-flag { 0% { transform: translateX(0) rotate(0); } 25% { transform: translateX(3px) rotate(5deg); } 50% { transform: translateX(-2px) rotate(-3deg); } 75% { transform: translateX(4px) rotate(4deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes bn-lewis { 0%,100% { transform: translateX(0) rotate(0); } 30% { transform: translateX(-4px) rotate(-2deg); } 60% { transform: translateX(2px) rotate(1deg); } }
@keyframes bn-msg { 0% { transform: translateX(20px) scale(0.8); opacity:0; } 20% { transform: translateX(10px) scale(0.9); opacity:0.5; } 50% { transform: translateX(0) scale(1); opacity:1; } 80% { transform: translateX(-5px) scale(0.95); opacity:0.8; } 100% { transform: translateX(0) scale(1); opacity:1; } }
@keyframes bn-torch { 0% { box-shadow: 0 0 15px 3px #ffaa50, 0 0 30px 8px rgba(255,170,80,0.3); opacity:0.7; } 50% { box-shadow: 0 0 25px 8px #ffcc70, 0 0 50px 15px rgba(255,204,112,0.5); opacity:1; } 100% { box-shadow: 0 0 18px 4px #ffaa50, 0 0 35px 10px rgba(255,170,80,0.35); opacity:0.8; } }

.scn-lewis-sadness { background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 50%, #000010 100%), radial-gradient(ellipse at 50% 0%, #2a2a3a 0%, transparent 60%); }
.scn-lewis-sadness .sky-ls { position:absolute; inset:0 0 20% 0; background: linear-gradient(180deg, #0a0a1a 0%, #000010 100%); animation: ls-sky 10s ease-in-out infinite alternate; }
.scn-lewis-sadness .ground-ls { position:absolute; bottom:0; left:0; right:0; height:20%; background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%); }
.scn-lewis-sadness .tent-ls { position:absolute; bottom:20%; left:30%; width:80px; height:50px; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius:20% 20% 5% 5%; clip-path: polygon(0% 100%, 10% 0%, 90% 0%, 100% 100%); animation: ls-tent 15s ease-in-out infinite; }
.scn-lewis-sadness .fire-ls { position:absolute; bottom:25%; left:42%; width:20px; height:30px; background: radial-gradient(circle, #ff8840 0%, #b05020 50%, #602010 100%); border-radius:50%; box-shadow: 0 0 30px 8px #ff8840, 0 0 60px 16px rgba(255,136,64,0.4); animation: ls-fire 3s ease-in-out infinite alternate; }
.scn-lewis-sadness .figure-ls { position:absolute; bottom:20%; left:50%; 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: ls-fig 6s ease-in-out infinite; }
.scn-lewis-sadness .rock-ls { position:absolute; bottom:20%; left:35%; width:30px; height:20px; background: linear-gradient(180deg, #2a2a2a 0%, #1a1a1a 100%); border-radius:40% 40% 30% 30% / 60% 60% 40% 40%; animation: ls-rock 20s linear infinite; }
.scn-lewis-sadness .tree-ls { position:absolute; bottom:20%; left:15%; width:40px; height:100px; background: linear-gradient(180deg, #1a2a1a 0%, #0a1a0a 100%); border-radius:50% 50% 10% 10% / 80% 80% 20% 20%; transform-origin:bottom center; animation: ls-tree 12s ease-in-out infinite alternate; }
@keyframes ls-sky { 0% { opacity:0.5; } 50% { opacity:1; } 100% { opacity:0.6; } }
@keyframes ls-tent { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-1px); } }
@keyframes ls-fire { 0% { box-shadow: 0 0 20px 4px #ff8840, 0 0 40px 10px rgba(255,136,64,0.3); opacity:0.8; } 50% { box-shadow: 0 0 40px 12px #ffaa60, 0 0 80px 20px rgba(255,170,96,0.5); opacity:1; } 100% { box-shadow: 0 0 25px 6px #ff8840, 0 0 50px 14px rgba(255,136,64,0.35); opacity:0.9; } }
@keyframes ls-fig { 0%,100% { transform: translateY(0) rotate(0); } 20% { transform: translateY(-4px) rotate(-3deg); } 50% { transform: translateY(2px) rotate(2deg); } 80% { transform: translateY(-2px) rotate(-1deg); } }
@keyframes ls-rock { 0%,100% { transform: translateX(0); } 50% { transform: translateX(-5px); } }
@keyframes ls-tree { 0% { transform: scaleX(0.95) rotate(-1deg); } 50% { transform: scaleX(1.05) rotate(2deg); } 100% { transform: scaleX(0.98) rotate(0); } }

.scn-night-encounter { background: linear-gradient(180deg, #0a0a1a 0%, #000010 50%, #000000 100%), radial-gradient(ellipse at 50% 100%, #1a1a2a 0%, transparent 70%); }
.scn-night-encounter .sky-ne { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #0a0a1a 0%, #000010 100%); animation: ne-sky 8s ease-in-out infinite alternate; }
.scn-night-encounter .trees-ne { position:absolute; bottom:30%; left:0; right:0; height:30%; background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%); clip-path: polygon(0% 100%, 5% 40%, 10% 90%, 20% 30%, 30% 80%, 40% 20%, 50% 70%, 60% 10%, 70% 60%, 80% 15%, 90% 50%, 100% 100%); animation: ne-trees 20s ease-in-out infinite; }
.scn-night-encounter .ground-ne { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #0a0a0a 0%, #000000 100%); }
.scn-night-encounter .figure-ne-a { position:absolute; bottom:30%; left:35%; width:18px; 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: ne-fig-a 4s ease-in-out infinite alternate; }
.scn-night-encounter .figure-ne-b { position:absolute; bottom:30%; left:55%; width:18px; height:38px; background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%); border-radius:50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin:bottom center; animation: ne-fig-b 5s ease-in-out infinite alternate; }
.scn-night-encounter .lantern-ne { position:absolute; bottom:40%; left:45%; width:8px; height:12px; background: radial-gradient(circle, #ffd070 0%, #b08030 70%); border-radius:30% 30% 20% 20% / 50% 50% 40% 40%; box-shadow: 0 0 25px 6px #ffd070, 0 0 50px 12px rgba(255,208,112,0.4); animation: ne-lantern 5s ease-in-out infinite; }
.scn-night-encounter .weapon-ne { position:absolute; bottom:40%; left:40%; width:4px; height:30px; background: linear-gradient(180deg, #3a3a3a 0%, #1a1a1a 100%); border-radius:2px; transform-origin:bottom center; animation: ne-weapon 2s ease-in-out infinite alternate; }
@keyframes ne-sky { 0% { opacity:0.4; } 50% { opacity:0.8; } 100% { opacity:0.5; } }
@keyframes ne-trees { 0%,100% { transform: scaleY(1) translateY(0); } 50% { transform: scaleY(1.02) translateY(-2px); } }
@keyframes ne-fig-a { 0% { transform: translateX(0) rotate(0); } 30% { transform: translateX(10px) rotate(5deg); } 70% { transform: translateX(-5px) rotate(-3deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes ne-fig-b { 0% { transform: translateX(0) rotate(0); } 40% { transform: translateX(-8px) rotate(-4deg); } 80% { transform: translateX(4px) rotate(2deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes ne-lantern { 0%,100% { transform: translateY(0) rotate(-2deg); } 50% { transform: translateY(-3px) rotate(3deg); } }
@keyframes ne-weapon { 0% { transform: rotate(0); } 100% { transform: rotate(15deg); } }

/* ===== news-of-poison ===== */
.scn-news-of-poison {
  background: 
    linear-gradient(135deg, #160b12 0%, #23141d 40%, #0d040a 100%),
    radial-gradient(ellipse at 50% 80%, #3b1a2a 0%, transparent 70%);
}
.scn-news-of-poison .bg-dark {
  position:absolute; inset:0;
  background: linear-gradient(180deg, #0a0205 0%, #14070e 50%, #0a0205 100%);
  animation: np-pulse 12s ease-in-out infinite;
}
.scn-news-of-poison .candle {
  position:absolute; bottom:35%; left:35%; width:10px; height:50px;
  background: linear-gradient(180deg, #f5d6a0 0%, #a06640 100%);
  border-radius: 2px 2px 6px 6px;
  box-shadow: 0 0 20px 8px #f5c890, 0 0 40px 16px rgba(245,200,144,.4);
  animation: np-glow 4s ease-in-out infinite alternate;
}
.scn-news-of-poison .king {
  position:absolute; bottom:25%; left:45%; width:60px; height:90px;
  background: linear-gradient(180deg, #2d1b22 0%, #170d12 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  transform-origin: bottom center;
  animation: np-fall 6s ease-in-out infinite;
}
.scn-news-of-poison .monk {
  position:absolute; bottom:30%; left:65%; width:45px; height:110px;
  background: linear-gradient(180deg, #1a1116 0%, #0e070b 100%);
  border-radius: 30% 30% 20% 20% / 60% 60% 40% 40%;
  transform: perspective(400px) rotateY(-10deg);
  animation: np-shift 10s ease-in-out infinite;
}
.scn-news-of-poison .goblet {
  position:absolute; bottom:32%; left:50%; width:20px; height:25px;
  background: linear-gradient(180deg, #8a4a3a 0%, #5e2a1e 100%);
  border-radius: 0 0 6px 6px;
  clip-path: polygon(10% 0%, 90% 0%, 100% 100%, 0% 100%);
  box-shadow: 0 0 12px 3px #6a3a2a;
  animation: np-topple 7s ease-in-out infinite;
}
.scn-news-of-poison .table {
  position:absolute; bottom:20%; left:30%; width:40%; height:8px;
  background: linear-gradient(180deg, #3a201a 0%, #25100c 100%);
  border-radius: 4px;
  transform-origin: left center;
  animation: np-tilt 5s ease-in-out infinite alternate;
}
.scn-news-of-poison .drape {
  position:absolute; top:0; width:35%; height:100%;
  background: linear-gradient(180deg, #1f0c10 0%, #13070b 100%);
  border-radius: 0 0 20% 20%;
}
.scn-news-of-poison .drape-l { left:0; transform: skewX(4deg); }
.scn-news-of-poison .drape-r { right:0; transform: skewX(-4deg); }

@keyframes np-pulse {
  0%, 100% { opacity: .85; }
  50% { opacity: 1; }
}
@keyframes np-glow {
  0% { box-shadow: 0 0 15px 5px #f5c890, 0 0 30px 10px rgba(245,200,144,.3); }
  50% { box-shadow: 0 0 25px 10px #ffdcaa, 0 0 50px 20px rgba(255,220,170,.5); }
  100% { box-shadow: 0 0 18px 6px #f5c890, 0 0 36px 12px rgba(245,200,144,.4); }
}
@keyframes np-fall {
  0% { transform: translateY(0) rotate(0deg); }
  30% { transform: translateY(-2px) rotate(-2deg); }
  70% { transform: translateY(3px) rotate(4deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes np-shift {
  0%, 100% { transform: perspective(400px) rotateY(-10deg) translateX(0); }
  50% { transform: perspective(400px) rotateY(-5deg) translateX(3px); }
}
@keyframes np-topple {
  0%, 100% { transform: rotate(0deg); }
  50% { transform: rotate(15deg); }
}

/* ===== bastard-resolve ===== */
.scn-bastard-resolve {
  background: 
    linear-gradient(0deg, #081a24 0%, #122a36 30%, #1c3a48 60%, #0e1e28 100%),
    radial-gradient(ellipse at 50% 30%, #1e4a5a 0%, transparent 80%);
}
.scn-bastard-resolve .sky-storm {
  position:absolute; inset:0 0 55% 0;
  background: linear-gradient(180deg, #182a36 0%, #172e3c 30%, #0e1e28 100%);
  animation: br-storm 8s ease-in-out infinite alternate;
}
.scn-bastard-resolve .water {
  position:absolute; bottom:0; left:0; right:0; height:55%;
  background: linear-gradient(180deg, #0a1a22 0%, #061016 100%);
  border-radius: 0 0 40% 40% / 0 0 20% 20%;
  animation: br-water 6s ease-in-out infinite;
}
.scn-bastard-resolve .rider {
  position:absolute; bottom:48%; left:45%; width:40px; height:70px;
  background: linear-gradient(180deg, #232a30 0%, #141a20 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: br-ride 3s ease-in-out infinite;
}
.scn-bastard-resolve .horse {
  position:absolute; bottom:46%; left:40%; width:70px; height:55px;
  background: linear-gradient(180deg, #2a3036 0%, #1a2026 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 50% 50%;
  transform-origin: bottom center;
  animation: br-gallop 0.8s steps(2) infinite;
}
.scn-bastard-resolve .wave {
  position:absolute; bottom:32%; left:0; right:0; height:15%;
  background: linear-gradient(180deg, rgba(10,30,40,.6) 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(3px);
}
.scn-bastard-resolve .wave-a { animation: br-wave 7s ease-in-out infinite; }
.scn-bastard-resolve .wave-b { bottom:38%; height:12%; animation: br-wave 9s ease-in-out infinite reverse; }
.scn-bastard-resolve .reed-bed {
  position:absolute; bottom:0; left:0; right:0; height:20%;
  background: repeating-linear-gradient(90deg, transparent 0px, transparent 15px, #12222a 15px, #12222a 17px);
  opacity: .3;
  animation: br-reed 4s ease-in-out infinite;
}

@keyframes br-storm {
  0% { opacity: .9; background-position: 0 0; }
  100% { opacity: .6; background-position: 0 10px; }
}
@keyframes br-water {
  0%, 100% { transform: scaleY(1) translateY(0); }
  50% { transform: scaleY(1.02) translateY(-2px); }
}
@keyframes br-ride {
  0%, 100% { transform: translateX(0) rotate(0deg); }
  50% { transform: translateX(5px) rotate(-3deg); }
}
@keyframes br-gallop {
  0% { transform: scaleY(1) rotate(0deg); }
  100% { transform: scaleY(0.95) rotate(2deg); }
}
@keyframes br-wave {
  0% { transform: translateX(-20%) scaleX(1); }
  50% { transform: translateX(0%) scaleX(1.1); }
  100% { transform: translateX(20%) scaleX(1); }
}
@keyframes br-reed {
  0%, 100% { opacity: .3; }
  50% { opacity: .5; }
}

/* ===== prince-mourns ===== */
.scn-prince-mourns {
  background: 
    linear-gradient(180deg, #1a1c20 0%, #2a2e34 40%, #1c1e22 100%),
    radial-gradient(ellipse at 30% 70%, #3a4048 0%, transparent 70%);
}
.scn-prince-mourns .floor {
  position:absolute; bottom:0; left:0; right:0; height:25%;
  background: linear-gradient(180deg, #1a1c1e 0%, #121416 100%);
  border-radius: 20% 20% 0 0;
  animation: pm-sink 15s ease-in-out infinite alternate;
}
.scn-prince-mourns .wall {
  position:absolute; inset:0 0 25% 0;
  background: linear-gradient(180deg, #222428 0%, #1a1c20 100%);
}
.scn-prince-mourns .window {
  position:absolute; top:15%; right:15%; width:80px; height:120px;
  background: linear-gradient(180deg, #3a4048 0%, #2a2e36 100%);
  border-radius: 4px;
  box-shadow: inset 0 0 20px rgba(0,0,0,.6);
  animation: pm-window 20s ease-in-out infinite alternate;
}
.scn-prince-mourns .bed {
  position:absolute; bottom:22%; left:15%; width:70%; height:15%;
  background: linear-gradient(180deg, #2a2c30 0%, #1c1e22 100%);
  border-radius: 10px;
  box-shadow: 0 4px 8px rgba(0,0,0,.4);
}
.scn-prince-mourns .king-figure {
  position:absolute; bottom:30%; left:30%; width:55px; height:80px;
  background: linear-gradient(180deg, #2e3036 0%, #1a1c20 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pm-king 6s ease-in-out infinite;
}
.scn-prince-mourns .prince-figure {
  position:absolute; bottom:28%; left:55%; width:45px; height:70px;
  background: linear-gradient(180deg, #2a2c32 0%, #181a1e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pm-prince 8s ease-in-out infinite alternate;
}
.scn-prince-mourns .candle-stick {
  position:absolute; bottom:28%; left:48%; width:8px; height:40px;
  background: linear-gradient(180deg, #a08060 0%, #604030 100%);
  border-radius: 2px;
  box-shadow: 0 0 15px 5px #c0a070;
  animation: pm-candle 5s ease-in-out infinite alternate;
}
.scn-prince-mourns .shadow-pool {
  position:absolute; bottom:0; left:10%; width:80%; height:10%;
  background: radial-gradient(ellipse, #000 0%, transparent 70%);
  opacity: .4;
  animation: pm-shadow 10s ease-in-out infinite;
}

@keyframes pm-sink {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(2px); }
}
@keyframes pm-window {
  0% { opacity: .6; background: linear-gradient(180deg, #3a4048 0%, #2a2e36 100%); }
  100% { opacity: .4; background: linear-gradient(180deg, #4a5058 0%, #3a4048 100%); }
}
@keyframes pm-king {
  0%, 100% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-1px) rotate(2deg); }
}
@keyframes pm-prince {
  0% { transform: translateY(0) rotate(0deg); }
  100% { transform: translateY(-3px) rotate(-1deg); }
}
@keyframes pm-candle {
  0% { box-shadow: 0 0 10px 3px #c0a070; }
  100% { box-shadow: 0 0 20px 8px #d0b080, 0 0 40px 15px rgba(200,160,100,.3); }
}
@keyframes pm-shadow {
  0%, 100% { opacity: .4; }
  50% { opacity: .6; }
}

/* ===== prince-cygnet ===== */
.scn-prince-cygnet {
  background: 
    linear-gradient(180deg, #1c2028 0%, #242a34 50%, #181c24 100%),
    radial-gradient(ellipse at 50% 60%, #2a3240 0%, transparent 70%);
}
.scn-prince-cygnet .bg-void {
  position:absolute; inset:0;
  background: radial-gradient(ellipse at 40% 50%, #2a303a 0%, #10141c 100%);
  animation: pc-void 30s ease-in-out infinite alternate;
}
.scn-prince-cygnet .figure-cyg {
  position:absolute; bottom:25%; left:45%; width:50px; height:80px;
  background: linear-gradient(180deg, #2c323c 0%, #1a1e26 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 40% 40%;
  transform-origin: bottom center;
  animation: pc-figure 12s ease-in-out infinite;
}
.scn-prince-cygnet .phantom {
  position:absolute; top:30%; width:40px; height:60px;
  background: linear-gradient(180deg, rgba(60,70,80,.4) 0%, rgba(40,50,60,.1) 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  filter: blur(6px);
  opacity: .5;
}
.scn-prince-cygnet .phantom-1 { left:15%; animation: pc-phantom 18s ease-in-out infinite; }
.scn-prince-cygnet .phantom-2 { left:70%; top:50%; width:30px; height:50px; animation: pc-phantom 22s ease-in-out infinite reverse; }
.scn-prince-cygnet .phantom-3 { left:80%; top:20%; width:25px; height:40px; animation: pc-phantom 14s ease-in-out infinite 4s; }
.scn-prince-cygnet .drift {
  position:absolute; bottom:10%; width:100px; height:4px;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.15), transparent);
  filter: blur(5px);
  opacity: .3;
}
.scn-prince-cygnet .drift-a { left:0; animation: pc-drift 25s linear infinite; }
.scn-prince-cygnet .drift-b { left:20%; bottom:20%; width:150px; height:3px; animation: pc-drift 35s linear infinite reverse; }
.scn-prince-cygnet .edge-light {
  position:absolute; top:0; left:0; right:0; height:30%;
  background: linear-gradient(180deg, rgba(40,50,60,.15) 0%, transparent 100%);
  animation: pc-edge 10s ease-in-out infinite alternate;
}

@keyframes pc-void {
  0% { background-position: 0 0; opacity: .8; }
  100% { background-position: 20px 30px; opacity: 1; }
}
@keyframes pc-figure {
  0%, 100% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-5px) scale(0.95); }
}
@keyframes pc-phantom {
  0% { transform: translate(0, 0) scale(1); opacity: .4; }
  50% { transform: translate(10px, -20px) scale(1.2); opacity: .7; }
  100% { transform: translate(-5px, 10px) scale(0.9); opacity: .3; }
}
@keyframes pc-drift {
  0% { transform: translateX(-120%); opacity: 0; }
  10% { opacity: .3; }
  90% { opacity: .3; }
  100% { transform: translateX(120vw); opacity: 0; }
}
@keyframes pc-edge {
  0% { opacity: .5; }
  100% { opacity: .8; }
}

.scn-france-marriage-proposal {
  background: linear-gradient(180deg, #fce9d7 0%, #e8cca8 40%, #d4b491 100%),
              radial-gradient(ellipse at 50% 100%, #d4b491 0%, transparent 70%);
}
.scn-france-marriage-proposal .sky {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #ffe8d0 0%, #fdf2e3 100%);
  animation: fmp-sky 8s ease-in-out infinite alternate;
}
.scn-france-marriage-proposal .arch {
  position: absolute; bottom: 20%; left: 50%; width: 160px; height: 120px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #c9b79a 0%, #a58b6d 100%);
  border-radius: 50% 50% 0 0 / 60% 60% 0 0;
  box-shadow: inset 0 -20px 30px rgba(0,0,0,0.15);
}
.scn-france-marriage-proposal .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #8ba87a 0%, #6b8a5a 100%);
  border-radius: 60% 40% 0 0 / 30% 20% 0 0;
}
.scn-france-marriage-proposal .figure-kneeling {
  position: absolute; bottom: 24%; left: 40%; 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: fmp-kneel 3s ease-in-out infinite;
}
.scn-france-marriage-proposal .figure-standing {
  position: absolute; bottom: 26%; left: 52%; width: 22px; height: 48px;
  background: linear-gradient(180deg, #5a4a3a 0%, #2a1a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: fmp-stand 4s ease-in-out infinite;
}
.scn-france-marriage-proposal .ring-glow {
  position: absolute; bottom: 32%; left: 42%; width: 8px; height: 8px;
  background: radial-gradient(circle, #ffd700 0%, #ffaa00 60%);
  border-radius: 50%;
  box-shadow: 0 0 20px 6px #ffd700, 0 0 40px 12px rgba(255,215,0,0.3);
  animation: fmp-ring 2s ease-in-out infinite alternate;
}
.scn-france-marriage-proposal .sunlight-ray {
  position: absolute; top: 0; left: 30%; width: 2px; height: 100%;
  background: linear-gradient(180deg, rgba(255,230,180,0.6) 0%, transparent 100%);
  filter: blur(2px);
}
.scn-france-marriage-proposal .ray-1 {
  left: 35%;
  animation: fmp-ray 7s ease-in-out infinite alternate;
}
.scn-france-marriage-proposal .ray-2 {
  left: 55%;
  animation: fmp-ray 7s ease-in-out infinite alternate-reverse;
}
@keyframes fmp-sky {
  0%,100% { opacity: 0.9; }
  50% { opacity: 1; }
}
@keyframes fmp-kneel {
  0%,100% { transform: translateX(0) rotate(0deg); }
  50% { transform: translateX(2px) rotate(1deg); }
}
@keyframes fmp-stand {
  0%,100% { transform: translateX(0) translateY(0); }
  50% { transform: translateX(-1px) translateY(-1px); }
}
@keyframes fmp-ring {
  0% { transform: scale(1); box-shadow: 0 0 20px 6px #ffd700, 0 0 40px 12px rgba(255,215,0,0.3); }
  100% { transform: scale(1.2); box-shadow: 0 0 30px 10px #ffdd44, 0 0 60px 20px rgba(255,221,68,0.4); }
}
@keyframes fmp-ray {
  0% { transform: rotate(0deg) scaleY(1); }
  50% { transform: rotate(1deg) scaleY(1.05); }
  100% { transform: rotate(-0.5deg) scaleY(0.95); }
}

.scn-item-book-of-beauty {
  background: linear-gradient(180deg, #f5e6c8 0%, #d6b88a 40%, #b8926a 100%),
              radial-gradient(ellipse at 50% 80%, #cfa776 0%, transparent 70%);
}
.scn-item-book-of-beauty .table {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #8b6f4a 0%, #5a4028 100%);
  border-radius: 30% 30% 0 0 / 20% 20% 0 0;
}
.scn-item-book-of-beauty .book-spine {
  position: absolute; bottom: 28%; left: 50%; width: 12px; height: 80px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #7a3a1a 0%, #4a2010 100%);
  border-radius: 4px;
}
.scn-item-book-of-beauty .book-left {
  position: absolute; bottom: 28%; right: 52%; width: 80px; height: 76px;
  background: linear-gradient(135deg, #c89a6a 0%, #b8824a 100%);
  border-radius: 4px 2px 2px 4px;
  transform-origin: right center;
  animation: bob-book 6s ease-in-out infinite;
}
.scn-item-book-of-beauty .book-right {
  position: absolute; bottom: 28%; left: 52%; width: 80px; height: 76px;
  background: linear-gradient(225deg, #d4a87a 0%, #c28e5e 100%);
  border-radius: 2px 4px 4px 2px;
  transform-origin: left center;
  animation: bob-book 6s ease-in-out infinite reverse;
}
.scn-item-book-of-beauty .portrait-glow {
  position: absolute; bottom: 34%; left: 50%; width: 40px; height: 44px;
  transform: translateX(-50%);
  background: radial-gradient(circle, #ffddaa 0%, #eebb77 70%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 0 0 30px 10px #ffcc66, 0 0 60px 20px rgba(255,204,102,0.4);
  animation: bob-portrait 3s ease-in-out infinite alternate;
}
.scn-item-book-of-beauty .hand-reach {
  position: absolute; bottom: 30%; left: 60%; width: 14px; height: 30px;
  background: linear-gradient(180deg, #d4a070 0%, #b08050 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform: rotate(-30deg);
  transform-origin: bottom center;
  animation: bob-hand 4s ease-in-out infinite;
}
.scn-item-book-of-beauty .sparkle {
  position: absolute; width: 4px; height: 4px;
  background: radial-gradient(circle, #fff 0%, #ffdd88 70%);
  border-radius: 50%;
  filter: blur(1px);
}
.scn-item-book-of-beauty .sparkle-a {
  bottom: 40%; left: 38%;
  animation: bob-sparkle 3s ease-in-out infinite;
}
.scn-item-book-of-beauty .sparkle-b {
  bottom: 45%; left: 58%;
  animation: bob-sparkle 3s ease-in-out infinite 1.5s;
}
@keyframes bob-book {
  0%,100% { transform: rotate(0deg); }
  50% { transform: rotate(2deg); }
}
@keyframes bob-portrait {
  0% { filter: blur(2px); transform: translateX(-50%) scale(1); }
  100% { filter: blur(0px); transform: translateX(-50%) scale(1.05); }
}
@keyframes bob-hand {
  0%,100% { transform: rotate(-30deg); }
  50% { transform: rotate(-20deg) translateX(2px); }
}
@keyframes bob-sparkle {
  0%,100% { opacity: 0; transform: translateY(0) scale(0.5); }
  50% { opacity: 1; transform: translateY(-10px) scale(1.2); }
}

.scn-angiers-parley-philip {
  background: linear-gradient(180deg, #f8e4c8 0%, #e0c4a0 40%, #c8a880 100%),
              radial-gradient(ellipse at 50% 0%, #fdf0e0 0%, transparent 60%);
}
.scn-angiers-parley-philip .wall-bg {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(180deg, #dcc8b0 0%, #b49c84 100%);
  border-radius: 0 0 40% 40% / 0 0 30% 30%;
}
.scn-angiers-parley-philip .mirror-frame {
  position: absolute; bottom: 30%; left: 50%; width: 80px; height: 100px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #8a6a4a 0%, #5a3a2a 100%);
  border-radius: 8px;
  box-shadow: 0 4px 12px rgba(0,0,0,0.3);
}
.scn-angiers-parley-philip .mirror-surface {
  position: absolute; bottom: 32%; left: 50%; width: 64px; height: 80px;
  transform: translateX(-50%);
  background: linear-gradient(135deg, #aaccee 0%, #ddeeff 50%, #aaccee 100%);
  border-radius: 4px;
  animation: app-mirror 5s ease-in-out infinite alternate;
}
.scn-angiers-parley-philip .silhouette-left {
  position: absolute; bottom: 26%; left: 36%; width: 18px; height: 50px;
  background: linear-gradient(180deg, #2a1a1a 0%, #0a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: rotate(5deg);
  transform-origin: bottom center;
  animation: app-sway 4s ease-in-out infinite;
}
.scn-angiers-parley-philip .silhouette-right {
  position: absolute; bottom: 26%; right: 36%; width: 18px; height: 50px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: rotate(-5deg);
  transform-origin: bottom center;
  animation: app-sway 4s ease-in-out infinite reverse;
}
.scn-angiers-parley-philip .pool-ripple {
  position: absolute; bottom: 20%; left: 50%; width: 120px; height: 20px;
  transform: translateX(-50%);
  background: radial-gradient(ellipse, rgba(170,200,230,0.3) 0%, transparent 70%);
  border-radius: 50%;
  animation: app-ripple 8s linear infinite;
}
.scn-angiers-parley-philip .light-spot {
  position: absolute; bottom: 35%; left: 50%; width: 20px; height: 20px;
  transform: translateX(-50%);
  background: radial-gradient(circle, rgba(255,240,200,0.8) 0%, transparent 100%);
  border-radius: 50%;
  animation: app-light 3s ease-in-out infinite alternate;
}
@keyframes app-mirror {
  0% { opacity: 0.7; filter: blur(1px); }
  100% { opacity: 1; filter: blur(0px); }
}
@keyframes app-sway {
  0%,100% { transform: rotate(5deg) translateY(0); }
  50% { transform: rotate(3deg) translateY(-2px); }
}
@keyframes app-ripple {
  0% { transform: translateX(-50%) scaleX(1); }
  50% { transform: translateX(-50%) scaleX(1.1); }
  100% { transform: translateX(-50%) scaleX(0.9); }
}
@keyframes app-light {
  0% { transform: translateX(-50%) scale(0.8); opacity: 0.6; }
  100% { transform: translateX(-50%) scale(1.2); opacity: 1; }
}

.scn-angiers-parley-lewis {
  background: linear-gradient(180deg, #e8d4b8 0%, #c8a888 40%, #a88868 100%),
              radial-gradient(ellipse at 50% 100%, #b89878 0%, transparent 70%);
}
.scn-angiers-parley-lewis .sky-dusk {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #f2cdb0 0%, #e8b490 100%);
  animation: apl-sky 12s ease-in-out infinite alternate;
}
.scn-angiers-parley-lewis .tree-canopy {
  position: absolute; top: 0; left: 0; right: 0; height: 40%;
  background: radial-gradient(ellipse at 50% 0%, #4a6a3a 0%, #2a4a2a 60%, #1a2a1a 100%);
  border-radius: 0 0 40% 40% / 0 0 30% 30%;
  animation: apl-canopy 10s ease-in-out infinite;
}
.scn-angiers-parley-lewis .ground-grass {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #7a9a5a 0%, #5a7a3a 100%);
  border-radius: 60% 40% 0 0 / 40% 30% 0 0;
}
.scn-angiers-parley-lewis .figure-left {
  position: absolute; bottom: 24%; left: 40%; width: 20px; height: 48px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: apl-embrace 3s ease-in-out infinite;
}
.scn-angiers-parley-lewis .figure-right {
  position: absolute; bottom: 24%; right: 40%; width: 20px; 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: apl-embrace 3s ease-in-out infinite reverse;
}
.scn-angiers-parley-lewis .embrace-arm {
  position: absolute; bottom: 48%; left: 46%; width: 30px; height: 6px;
  background: linear-gradient(90deg, #3a2a1a 0%, #2a1a0a 50%, #2a1a1a 100%);
  border-radius: 4px;
  transform: rotate(-10deg);
  animation: apl-arm 4s ease-in-out infinite;
}
.scn-angiers-parley-lewis .leaf {
  position: absolute; width: 8px; height: 4px;
  background: #5a7a3a;
  border-radius: 50%;
  filter: blur(1px);
}
.scn-angiers-parley-lewis .leaf-a {
  top: 20%; left: 30%;
  animation: apl-leaf 5s ease-in-out infinite;
}
.scn-angiers-parley-lewis .leaf-b {
  top: 25%; left: 60%;
  animation: apl-leaf 5s ease-in-out infinite 1.7s;
}
.scn-angiers-parley-lewis .leaf-c {
  top: 18%; left: 45%;
  animation: apl-leaf 5s ease-in-out infinite 3.2s;
}
@keyframes apl-sky {
  0%,100% { opacity: 0.85; }
  50% { opacity: 1; }
}
@keyframes apl-canopy {
  0%,100% { transform: scaleY(1); }
  50% { transform: scaleY(1.02); }
}
@keyframes apl-embrace {
  0%,100% { transform: translateX(0) rotate(0deg); }
  50% { transform: translateX(2px) rotate(2deg); }
}
@keyframes apl-arm {
  0%,100% { transform: rotate(-10deg); }
  50% { transform: rotate(-5deg); }
}
@keyframes apl-leaf {
  0% { transform: translateY(0) rotate(0deg); opacity: 0.7; }
  50% { transform: translateY(30px) rotate(30deg); opacity: 0.9; }
  100% { transform: translateY(60px) rotate(60deg); opacity: 0; }
}

.scn-constance-grief-tent {
  background: linear-gradient(180deg, #f5e6d0 0%, #e8d5b0 40%, #c4a882 100%),
              radial-gradient(ellipse at 50% 80%, #fdf4e3 0%, transparent 60%);
}
.scn-constance-grief-tent .tent-wall {
  position: absolute; inset: 0 30% 0 0;
  background: linear-gradient(90deg, #d4b28a 0%, #c2a078 100%);
  border-radius: 0 8% 8% 0 / 0 30% 30% 0;
  box-shadow: inset -4px 0 12px rgba(0,0,0,0.15);
  animation: cg-wall-sway 12s ease-in-out infinite alternate;
}
.scn-constance-grief-tent .tent-opening {
  position: absolute; inset: 10% 0 10% 30%;
  background: #f8e8d0;
  border-radius: 0 20% 20% 0 / 0 40% 40% 0;
  box-shadow: inset 0 0 30px rgba(255,220,180,0.4);
}
.scn-constance-grief-tent .tent-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(0deg, #8b6f4a 0%, #a6845c 40%, #c9aa7e 100%);
  border-radius: 0 0 10% 10%;
}
.scn-constance-grief-tent .chair {
  position: absolute; bottom: 20%; left: 15%; width: 30px; height: 40px;
  background: linear-gradient(180deg, #5e3e2a 0%, #3d2818 100%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 2px 4px 6px rgba(0,0,0,0.3);
  transform: rotate(-2deg);
  animation: cg-chair 8s ease-in-out infinite;
}
.scn-constance-grief-tent .figure-sad {
  position: absolute; bottom: 18%; left: 18%; width: 22px; height: 48px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1e12 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cg-figure 6s ease-in-out infinite;
}
.scn-constance-grief-tent .candle {
  position: absolute; bottom: 25%; left: 40%; width: 8px; height: 16px;
  background: linear-gradient(0deg, #f0d090 0%, #fff8e0 100%);
  border-radius: 50% 50% 20% 20%;
  box-shadow: 0 0 20px 6px rgba(255,200,100,0.6);
  animation: cg-candle-flicker 2s ease-in-out infinite alternate;
}
.scn-constance-grief-tent .drape {
  position: absolute; top: 0; right: 5%; width: 15%; height: 80%;
  background: linear-gradient(180deg, #b89a6a 0%, #8a6e44 100%);
  border-radius: 0 0 30% 30% / 0 0 60% 60%;
  box-shadow: -2px 0 8px rgba(0,0,0,0.2);
  animation: cg-drape-sway 10s ease-in-out infinite alternate;
}
.scn-constance-grief-tent .dust-mote {
  position: absolute; top: 30%; left: 20%; width: 4px; height: 4px;
  background: rgba(255,255,240,0.5);
  border-radius: 50%;
  filter: blur(1px);
  animation: cg-dust 18s linear infinite;
}
@keyframes cg-wall-sway {
  0% { transform: skewY(0deg); opacity:0.9; }
  50% { transform: skewY(0.5deg); opacity:1; }
  100% { transform: skewY(-0.3deg); opacity:0.95; }
}
@keyframes cg-chair {
  0%,100% { transform: rotate(-2deg) translateY(0); }
  50% { transform: rotate(1deg) translateY(-1px); }
}
@keyframes cg-figure {
  0%,100% { transform: translateX(0) rotate(-1deg); }
  50% { transform: translateX(2px) rotate(1deg) translateY(-1px); }
}
@keyframes cg-candle-flicker {
  0% { transform: scaleY(1); opacity:0.8; box-shadow:0 0 15px 4px rgba(255,200,100,0.5); }
  50% { transform: scaleY(1.05) scaleX(0.98); opacity:1; box-shadow:0 0 25px 8px rgba(255,200,100,0.7); }
  100% { transform: scaleY(0.97); opacity:0.85; box-shadow:0 0 12px 3px rgba(255,200,100,0.4); }
}
@keyframes cg-drape-sway {
  0% { transform: rotate(0deg); }
  50% { transform: rotate(2deg); }
  100% { transform: rotate(-1.5deg); }
}
@keyframes cg-dust {
  0% { transform: translate(0, 0) scale(1); opacity:0; }
  20% { opacity:0.6; }
  80% { opacity:0.4; }
  100% { transform: translate(30px, -20px) scale(0.5); opacity:0; }
}

.scn-pandulph-prophesies {
  background: linear-gradient(180deg, #f8f0e0 0%, #eadcc8 30%, #d4c4a8 70%, #b8a888 100%),
              radial-gradient(ellipse at 70% 30%, #fffdf0 0%, transparent 60%);
}
.scn-pandulph-prophesies .room-wall {
  position: absolute; inset: 0;
  background: linear-gradient(90deg, #e6d7bf 0%, #d2c2a8 100%);
  border-radius: 2%;
  box-shadow: inset 0 0 40px rgba(0,0,0,0.08);
}
.scn-pandulph-prophesies .window {
  position: absolute; top: 15%; left: 10%; width: 35%; height: 40%;
  background: linear-gradient(180deg, #b8d8e8 0%, #8fbcd4 100%);
  border-radius: 10% / 15%;
  box-shadow: inset 0 0 30px rgba(255,255,255,0.4), 0 4px 12px rgba(0,0,0,0.1);
}
.scn-pandulph-prophesies .light-beam {
  position: absolute; top: 15%; left: 10%; width: 35%; height: 50%;
  background: linear-gradient(135deg, rgba(255,255,240,0.3) 0%, transparent 100%);
  clip-path: polygon(0 0, 100% 0, 80% 100%, 20% 100%);
  animation: pp-light 12s ease-in-out infinite alternate;
}
.scn-pandulph-prophesies .figure-priest {
  position: absolute; bottom: 25%; left: 50%; width: 28px; height: 60px;
  background: linear-gradient(180deg, #3a2e1e 0%, #1e160e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pp-figure 8s ease-in-out infinite;
}
.scn-pandulph-prophesies .table {
  position: absolute; bottom: 15%; left: 45%; width: 60px; height: 20px;
  background: linear-gradient(180deg, #6b4c2c 0%, #4d351c 100%);
  border-radius: 5% 5% 10% 10%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.2);
  transform: rotate(-1deg);
}
.scn-pandulph-prophesies .book {
  position: absolute; bottom: 22%; left: 48%; width: 12px; height: 16px;
  background: linear-gradient(180deg, #8b5e3c 0%, #5a3a22 100%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 1px 2px 4px rgba(0,0,0,0.3);
  transform: rotate(5deg);
  animation: pp-book 6s ease-in-out infinite alternate;
}
.scn-pandulph-prophesies .dust-mote {
  position: absolute; top: 25%; left: 30%; width: 3px; height: 3px;
  background: rgba(255,240,220,0.6);
  border-radius: 50%;
  filter: blur(1px);
  animation: pp-dust 25s linear infinite;
  animation-delay: -5s;
}
@keyframes pp-light {
  0% { opacity:0.1; transform: skewX(0deg); }
  50% { opacity:0.4; transform: skewX(2deg); }
  100% { opacity:0.2; transform: skewX(-1deg); }
}
@keyframes pp-figure {
  0%,100% { transform: translateX(0) rotate(0deg); }
  50% { transform: translateX(2px) rotate(1deg) translateY(-1px); }
}
@keyframes pp-book {
  0% { transform: rotate(5deg) translateY(0); }
  50% { transform: rotate(2deg) translateY(-1px); }
  100% { transform: rotate(7deg) translateY(0); }
}
@keyframes pp-dust {
  0% { transform: translate(0, 0) scale(1); opacity:0; }
  20% { opacity:0.5; }
  80% { opacity:0.3; }
  100% { transform: translate(-40px, 30px) scale(0.3); opacity:0; }
}

.scn-castle-room-hubert-irons {
  background: linear-gradient(180deg, #2a1a0e 0%, #3a2a1a 20%, #5a3a1a 50%, #3a2a1a 80%, #1a0e06 100%),
              radial-gradient(ellipse at 50% 70%, #ff7a2a 0%, transparent 60%);
}
.scn-castle-room-hubert-irons .bg-stone {
  position: absolute; inset: 0;
  background: repeating-linear-gradient(0deg, #2e1a0e 0px, #3e2a1a 4px, #2e1a0e 8px),
              linear-gradient(180deg, #1a0e06 0%, #3e2a1a 100%);
  opacity: 0.8;
  box-shadow: inset 0 0 60px rgba(0,0,0,0.6);
}
.scn-castle-room-hubert-irons .fireplace {
  position: absolute; bottom: 20%; left: 30%; width: 40%; height: 50%;
  background: linear-gradient(180deg, #4a2a12 0%, #2a1a0a 100%);
  border-radius: 10% 10% 5% 5% / 30% 30% 15% 15%;
  box-shadow: inset 0 -10px 30px #1a0a00, 0 0 40px rgba(255,100,20,0.3);
}
.scn-castle-room-hubert-irons .flames {
  position: absolute; bottom: 30%; left: 35%; width: 30%; height: 30%;
  background: radial-gradient(ellipse at 50% 0%, #ff6000 0%, #ff3000 40%, transparent 70%);
  border-radius: 50%;
  animation: ci-flame 0.3s ease-in-out infinite alternate;
}
.scn-castle-room-hubert-irons .table-irons {
  position: absolute; bottom: 15%; left: 20%; width: 60%; height: 15%;
  background: linear-gradient(180deg, #5a3a1a 0%, #3a2a0a 100%);
  border-radius: 5% 5% 10% 10%;
  box-shadow: 0 6px 12px rgba(0,0,0,0.5);
}
.scn-castle-room-hubert-irons .hubert-figure {
  position: absolute; bottom: 22%; left: 45%; width: 30px; height: 65px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0e06 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ci-hubert 4s ease-in-out infinite;
}
.scn-castle-room-hubert-irons .arthur-figure {
  position: absolute; bottom: 20%; left: 55%; width: 24px; 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: ci-arthur 5s ease-in-out infinite;
}
.scn-castle-room-hubert-irons .chains {
  position: absolute; bottom: 30%; left: 50%; width: 20px; height: 30px;
  border: 2px solid #6a5a4a;
  border-radius: 40%;
  background: transparent;
  box-shadow: 0 0 10px rgba(100,80,60,0.5);
  animation: ci-chains 3s ease-in-out infinite alternate;
}
@keyframes ci-flame {
  0% { transform: scaleY(1) scaleX(0.9); opacity:0.8; }
  100% { transform: scaleY(1.15) scaleX(1.05); opacity:1; }
}
@keyframes ci-hubert {
  0%,100% { transform: translateX(0) rotate(0deg); }
  50% { transform: translateX(3px) rotate(2deg); }
}
@keyframes ci-arthur {
  0%,100% { transform: translateX(0) rotate(0deg) scale(1); }
  50% { transform: translateX(-2px) rotate(-1deg) scale(0.98); }
}
@keyframes ci-chains {
  0% { transform: translateY(0) rotate(-5deg); }
  100% { transform: translateY(2px) rotate(5deg); }
}

.scn-arthur-innocent-plea {
  background: linear-gradient(180deg, #1a0e06 0%, #2a1a0a 40%, #3a2a1a 70%, #1a0e06 100%),
              radial-gradient(ellipse at 50% 60%, #ff6a2a 0%, transparent 50%);
}
.scn-arthur-innocent-plea .bg-shadow {
  position: absolute; inset: 0;
  background: linear-gradient(135deg, #0e0602 0%, #1a0e06 50%, #2a1a0a 100%);
  opacity: 0.9;
}
.scn-arthur-innocent-plea .fire-glow {
  position: absolute; bottom: 30%; left: 20%; width: 60%; height: 50%;
  background: radial-gradient(ellipse at 30% 0%, #ff7a2a 0%, transparent 60%);
  opacity: 0.4;
  animation: ai-fireglow 2s ease-in-out infinite alternate;
}
.scn-arthur-innocent-plea .arthur-profile {
  position: absolute; bottom: 15%; left: 35%; width: 25px; height: 55px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 45% 40% 40% / 60% 50% 40% 40%;
  transform-origin: bottom center;
  animation: ai-profile 6s ease-in-out infinite;
  clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
}
.scn-arthur-innocent-plea .collar-chain {
  position: absolute; bottom: 40%; left: 38%; width: 14px; height: 14px;
  border: 2px solid #6a5a4a;
  border-radius: 50%;
  background: transparent;
  box-shadow: 0 0 8px rgba(100,80,60,0.4);
  animation: ai-collar 3s ease-in-out infinite alternate;
}
.scn-arthur-innocent-plea .bound-hands {
  position: absolute; bottom: 10%; left: 42%; width: 20px; height: 16px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 30% 30% 20% 20%;
  animation: ai-hands 5s ease-in-out infinite;
}
.scn-arthur-innocent-plea .tear {
  position: absolute; bottom: 35%; left: 42%; width: 3px; height: 4px;
  background: rgba(200,220,255,0.4);
  border-radius: 50%;
  filter: blur(1px);
  animation: ai-tear 4s ease-in-out infinite;
}
@keyframes ai-fireglow {
  0% { opacity:0.3; transform: scale(1); }
  100% { opacity:0.6; transform: scale(1.05); }
}
@keyframes ai-profile {
  0%,100% { transform: translateX(0) rotate(0deg) scale(1); }
  50% { transform: translateX(2px) rotate(1deg) scale(1.01); }
}
@keyframes ai-collar {
  0% { transform: rotate(-10deg) translateY(0); }
  100% { transform: rotate(10deg) translateY(1px); }
}
@keyframes ai-hands {
  0%,100% { transform: translateY(0) rotate(-2deg); }
  50% { transform: translateY(1px) rotate(2deg); }
}
@keyframes ai-tear {
  0%,100% { transform: translateY(0) scale(1); opacity:0.4; }
  50% { transform: translateY(8px) scale(0.8); opacity:0; }
}

/* item-altar-saint-edmundsbury */
.scn-item-altar-saint-edmundsbury {
  background: linear-gradient(180deg, #3a3a50 0%, #2a2a3e 40%, #1e1e2e 100%),
              radial-gradient(ellipse at 50% 60%, #4a4a6a 0%, transparent 80%);
}
.scn-item-altar-saint-edmundsbury .bg-arch {
  position: absolute; inset: 0 0 30% 0;
  background: radial-gradient(ellipse at 50% 0%, #6a6a8a 0%, transparent 70%),
              linear-gradient(180deg, #4a4a5a 0%, #2a2a3a 100%);
  border-radius: 50%/40% 40% 0 0;
  animation: ise-arch 20s ease-in-out infinite;
}
.scn-item-altar-saint-edmundsbury .altar {
  position: absolute; bottom: 18%; left: 50%; width: 40%; height: 20%;
  transform: translateX(-50%);
  background: linear-gradient(135deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 4px; box-shadow: 0 4px 12px rgba(0,0,0,.6);
}
.scn-item-altar-saint-edmundsbury .wounded-figure {
  position: absolute; bottom: 16%; left: 40%; width: 14%; height: 30%;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40%/60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ise-figure 8s ease-in-out infinite;
}
.scn-item-altar-saint-edmundsbury .candle-glow {
  position: absolute; bottom: 35%; left: 48%; width: 8px; height: 8px;
  background: radial-gradient(circle, #e0b060 0%, #b08040 60%, transparent 100%);
  border-radius: 50%; box-shadow: 0 0 20px 8px #b08040, 0 0 40px 16px rgba(176,128,64,.4);
  animation: ise-candle 3s ease-in-out infinite alternate;
}
.scn-item-altar-saint-edmundsbury .shadow-overlay {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at 50% 50%, transparent 40%, rgba(0,0,0,.6) 100%);
  animation: ise-shade 12s ease-in-out infinite alternate;
}
.scn-item-altar-saint-edmundsbury .beam-light {
  position: absolute; top: 5%; left: 30%; width: 40%; height: 80%;
  background: linear-gradient(180deg, rgba(220,200,160,.15) 0%, transparent 100%);
  transform: skewX(-5deg); border-radius: 20%;
  animation: ise-beam 6s ease-in-out infinite;
}
.scn-item-altar-saint-edmundsbury .dust {
  position: absolute; top: 10%; left: 20%; width: 20px; height: 20px;
  background: rgba(220,200,180,.05); border-radius: 50%; filter: blur(4px);
  animation: ise-dust 25s linear infinite;
}
@keyframes ise-arch { 0%,100% { transform: scaleY(1) } 50% { transform: scaleY(1.02) } }
@keyframes ise-figure { 0% { transform: translateX(0) translateY(0) rotate(-2deg); opacity:.8 } 25% { transform: translateX(4%) translateY(-4%) rotate(1deg); opacity:1 } 50% { transform: translateX(8%) translateY(0) rotate(-1deg); opacity:.9 } 75% { transform: translateX(12%) translateY(-2%) rotate(2deg); opacity:1 } 100% { transform: translateX(16%) translateY(0) rotate(0); opacity:.85 } }
@keyframes ise-candle { 0% { transform: scale(1); opacity:.8 } 50% { transform: scale(1.3); opacity:1 } 100% { transform: scale(0.9); opacity:.7 } }
@keyframes ise-shade { 0%,100% { opacity:.7 } 50% { opacity:1 } }
@keyframes ise-beam { 0%,100% { opacity:.3; transform: skewX(-5deg) scaleX(1) } 50% { opacity:.6; transform: skewX(-8deg) scaleX(1.1) } }
@keyframes ise-dust { 0% { transform: translate(0,0); opacity:0 } 20% { opacity:.6 } 80% { opacity:.4 } 100% { transform: translate(30vw, -20vh); opacity:0 } }

/* melun-death-contemplation */
.scn-melun-death-contemplation {
  background: linear-gradient(180deg, #1a1a2e 0%, #0e0e1a 40%, #050510 100%),
              radial-gradient(ellipse at 50% 30%, #2a2a4a 0%, transparent 70%);
}
.scn-melun-death-contemplation .bg-dark {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, #2a2a42 0%, #12121e 100%);
  animation: mdc-dark 15s ease-in-out infinite alternate;
}
.scn-melun-death-contemplation .ground {
  position: absolute; bottom: 0; left: -10%; right: -10%; height: 40%;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a12 100%);
  border-radius: 30% 70% 0 0/50% 50% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,.8);
}
.scn-melun-death-contemplation .melun-figure {
  position: absolute; bottom: 15%; left: 45%; width: 12%; height: 25%;
  background: linear-gradient(180deg, #1e1e3a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 30% 30%/60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: mdc-figure 6s ease-in-out infinite;
}
.scn-melun-death-contemplation .wound-drip {
  position: absolute; bottom: 22%; left: 48%; width: 6px; height: 15px;
  background: linear-gradient(180deg, #5e1a1d 0%, #3a0e10 100%);
  border-radius: 50% 50% 0 0;
  animation: mdc-drip 4s ease-in-out infinite;
}
.scn-melun-death-contemplation .candle-melt {
  position: absolute; bottom: 28%; left: 30%; width: 10px; height: 20px;
  background: linear-gradient(180deg, #d0c0a0 0%, #a09080 100%);
  border-radius: 40% 40% 20% 20%;
  box-shadow: 0 -4px 8px rgba(200,180,140,.4);
  animation: mdc-melt 9s ease-in-out infinite alternate;
}
.scn-melun-death-contemplation .puddle-shadow {
  position: absolute; bottom: 8%; left: 20%; width: 60%; height: 12%;
  background: radial-gradient(ellipse, rgba(30,10,10,.8) 0%, transparent 100%);
  border-radius: 50%;
  animation: mdc-puddle 7s ease-in-out infinite;
}
.scn-melun-death-contemplation .flicker {
  position: absolute; top: 25%; left: 30%; width: 4px; height: 4px;
  background: #c8a060; border-radius: 50%;
  box-shadow: 0 0 12px 4px #c8a060, 0 0 24px 8px rgba(200,160,96,.3);
  animation: mdc-flicker 2s ease-in-out infinite alternate;
}
@keyframes mdc-dark { 0%,100% { opacity:.9 } 50% { opacity:1 } }
@keyframes mdc-figure { 0% { transform: translateY(0) rotate(0); opacity:.8 } 30% { transform: translateY(-2%) rotate(2deg); opacity:.9 } 60% { transform: translateY(1%) rotate(-1deg); opacity:1 } 100% { transform: translateY(0) rotate(0); opacity:.85 } }
@keyframes mdc-drip { 0% { height: 15px; opacity:1 } 50% { height: 20px; opacity:.6 } 100% { height: 10px; opacity:.2 } }
@keyframes mdc-melt { 0% { transform: scaleY(1); border-radius: 40% 40% 20% 20% } 50% { transform: scaleY(0.8) scaleX(1.1); border-radius: 30% 30% 10% 10% } 100% { transform: scaleY(1.1) scaleX(0.9); border-radius: 50% 50% 20% 20% } }
@keyframes mdc-puddle { 0%,100% { transform: scale(1); opacity:.6 } 50% { transform: scale(1.1); opacity:.8 } }
@keyframes mdc-flicker { 0% { opacity:.6; transform: scale(1) } 50% { opacity:1; transform: scale(1.5) } 100% { opacity:.5; transform: scale(0.8) } }

/* melun-warning */
.scn-melun-warning {
  background: linear-gradient(180deg, #1a1a3e 0%, #2a2040 30%, #0e0e1a 100%),
              radial-gradient(ellipse at 50% 70%, #4a3060 0%, transparent 80%);
}
.scn-melun-warning .bg-dusk-sky {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(180deg, #2a2050 0%, #1a1a3a 40%, #0e0e1a 100%);
  animation: mw-sky 18s ease-in-out infinite;
}
.scn-melun-warning .sun-disk {
  position: absolute; top: 15%; right: 15%; width: 30px; height: 30px;
  background: radial-gradient(circle, #b07860 0%, #804030 60%, transparent 100%);
  border-radius: 50%; box-shadow: 0 0 40px 20px #804030, 0 0 80px 40px rgba(128,64,48,.3);
  animation: mw-sun 10s ease-in-out infinite alternate;
}
.scn-melun-warning .burning-clouds {
  position: absolute; top: 10%; left: 5%; right: 5%; height: 30%;
  background: linear-gradient(180deg, rgba(180,120,80,.3) 0%, transparent 100%);
  border-radius: 40%; filter: blur(8px);
  animation: mw-clouds 25s linear infinite;
}
.scn-melun-warning .warning-figure {
  position: absolute; bottom: 22%; left: 35%; width: 15%; height: 35%;
  background: linear-gradient(180deg, #0a0a12 0%, #05050a 100%);
  border-radius: 50% 50% 40% 40%/60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: mw-figure 5s ease-in-out infinite;
}
.scn-melun-warning .smoke-plume {
  position: absolute; bottom: 50%; left: 40%; width: 20%; height: 20%;
  background: radial-gradient(ellipse, rgba(120,80,60,.2) 0%, transparent 100%);
  border-radius: 50%; filter: blur(10px);
  animation: mw-smoke 8s ease-in-out infinite alternate;
}
.scn-melun-warning .dark-ground {
  position: absolute; bottom: 0; left: -10%; right: -10%; height: 30%;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a12 100%);
  border-radius: 20% 60% 0 0/30% 40% 0 0;
}
.scn-melun-warning .creeping-night {
  position: absolute; top: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, rgba(10,10,20,.8) 0%, transparent 100%);
  animation: mw-night 30s linear infinite;
}
@keyframes mw-sky { 0%,100% { opacity:.8 } 50% { opacity:1 } }
@keyframes mw-sun { 0% { transform: translate(0,0) scale(1); opacity:.7 } 50% { transform: translate(5%,-5%) scale(0.9); opacity:.5 } 100% { transform: translate(-3%,3%) scale(1.1); opacity:.8 } }
@keyframes mw-clouds { 0% { transform: translateX(-10%); opacity:.6 } 50% { transform: translateX(5%); opacity:1 } 100% { transform: translateX(-10%); opacity:.6 } }
@keyframes mw-figure { 0% { transform: translateX(0) rotate(-2deg); opacity:.7 } 25% { transform: translateX(5%) rotate(2deg); opacity:.85 } 50% { transform: translateX(10%) rotate(-1deg); opacity:1 } 75% { transform: translateX(5%) rotate(1deg); opacity:.8 } 100% { transform: translateX(0) rotate(0); opacity:.7 } }
@keyframes mw-smoke { 0% { transform: translateY(0) scale(1); opacity:.3 } 50% { transform: translateY(-20%) scale(1.5); opacity:.5 } 100% { transform: translateY(10%) scale(0.8); opacity:.2 } }
@keyframes mw-night { 0% { opacity:.6 } 50% { opacity:1 } 100% { opacity:.6 } }

/* melun-prayer-lords-believe */
.scn-melun-prayer-lords-believe {
  background: linear-gradient(180deg, #2a2040 0%, #1a1a3e 40%, #0e0e1a 100%),
              radial-gradient(ellipse at 50% 50%, #3a2a5a 0%, transparent 70%);
}
.scn-melun-prayer-lords-believe .bg-twilight {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, #2a2050 0%, #1a1a3a 60%, #0e0e1a 100%);
  animation: mp-twilight 20s ease-in-out infinite alternate;
}
.scn-melun-prayer-lords-believe .prayer-ellipse {
  position: absolute; bottom: 20%; left: 10%; right: 10%; height: 40%;
  background: radial-gradient(ellipse, rgba(50,40,70,.4) 0%, transparent 100%);
  border-radius: 50%;
}
.scn-melun-prayer-lords-believe .lord-1 {
  position: absolute; bottom: 18%; left: 22%; width: 10%; height: 25%;
  background: linear-gradient(180deg, #1a1a2e 0%, #0a0a1a 100%);
  border-radius: 40% 50% 30% 30%/50% 60% 40% 40%;
  transform-origin: bottom center;
  animation: mp-lord1 6s ease-in-out infinite;
}
.scn-melun-prayer-lords-believe .lord-2 {
  position: absolute; bottom: 18%; left: 45%; width: 10%; height: 28%;
  background: linear-gradient(180deg, #1e1e34 0%, #0e0e1e 100%);
  border-radius: 50% 40% 30% 30%/60% 50% 40% 40%;
  transform-origin: bottom center;
  animation: mp-lord2 7s ease-in-out infinite 0.5s;
}
.scn-melun-prayer-lords-believe .lord-3 {
  position: absolute; bottom: 18%; left: 68%; width: 10%; height: 24%;
  background: linear-gradient(180deg, #1a1a2e 0%, #0a0a1a 100%);
  border-radius: 50% 50% 30% 30%/50% 60% 40% 40%;
  transform-origin: bottom center;
  animation: mp-lord3 8s ease-in-out infinite 1s;
}
.scn-melun-prayer-lords-believe .flame {
  position: absolute; bottom: 40%; left: 48%; width: 6px; height: 12px;
  background: linear-gradient(180deg, #e0a060 0%, #c08040 50%, transparent 100%);
  border-radius: 50% 50% 0 0;
  box-shadow: 0 0 16px 6px #c08040, 0 0 32px 12px rgba(192,128,64,.3);
  animation: mp-flame 1.5s ease-in-out infinite alternate;
}
.scn-melun-prayer-lords-believe .halo {
  position: absolute; bottom: 38%; left: 46%; width: 20px; height: 20px;
  background: radial-gradient(circle, rgba(192,128,64,.15) 0%, transparent 100%);
  border-radius: 50%; filter: blur(8px);
  animation: mp-halo 3s ease-in-out infinite alternate;
}
.scn-melun-prayer-lords-believe .ground-shadow {
  position: absolute; bottom: 0; left: 10%; right: 10%; height: 20%;
  background: radial-gradient(ellipse, rgba(0,0,0,.6) 0%, transparent 100%);
  border-radius: 50%;
  animation: mp-ground 10s ease-in-out infinite;
}
@keyframes mp-twilight { 0%,100% { opacity:.9 } 50% { opacity:1 } }
@keyframes mp-lord1 { 0% { transform: translateY(0) rotate(-1deg); opacity:.7 } 30% { transform: translateY(-2%) rotate(1deg); opacity:.9 } 60% { transform: translateY(1%) rotate(-2deg); opacity:1 } 100% { transform: translateY(0) rotate(0); opacity:.8 } }
@keyframes mp-lord2 { 0% { transform: translateY(0) rotate(1deg); opacity:.8 } 30% { transform: translateY(-3%) rotate(-1deg); opacity:1 } 60% { transform: translateY(2%) rotate(2deg); opacity:.9 } 100% { transform: translateY(0) rotate(0); opacity:.7 } }
@keyframes mp-lord3 { 0% { transform: translateY(1%) rotate(0); opacity:.7 } 40% { transform: translateY(-2%) rotate(1deg); opacity:.9 } 80% { transform: translateY(1%) rotate(-1deg); opacity:1 } 100% { transform: translateY(0) rotate(0); opacity:.8 } }
@keyframes mp-flame { 0% { transform: scaleY(1) scaleX(1); opacity:.8 } 25% { transform: scaleY(1.2) scaleX(0.9); opacity:1 } 50% { transform: scaleY(0.9) scaleX(1.1); opacity:.7 } 75% { transform: scaleY(1.1) scaleX(0.8); opacity:.9 } 100% { transform: scaleY(1) scaleX(1); opacity:.8 } }
@keyframes mp-halo { 0% { transform: scale(1); opacity:.3 } 50% { transform: scale(1.5); opacity:.5 } 100% { transform: scale(0.8); opacity:.2 } }
@keyframes mp-ground { 0%,100% { transform: scaleY(1); opacity:.4 } 50% { transform: scaleY(1.2); opacity:.7 } }

/* Scene: bastard-commodity-soliloquy (tense, sunlit) */
.scn-bastard-commodity-soliloquy {
  background: linear-gradient(180deg, #f8d49a 0%, #eab86c 40%, #c7924a 100%), radial-gradient(ellipse at 50% 0%, #ffefa0 0%, transparent 60%);
  position: relative;
  overflow: hidden;
}
.scn-bastard-commodity-soliloquy .sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #9bc5ff 0%, #5b8fde 100%);
  animation: bcs-sky 8s ease-in-out infinite alternate;
}
.scn-bastard-commodity-soliloquy .sun {
  position: absolute; top: 8%; left: 75%; width: 60px; height: 60px;
  background: radial-gradient(circle, #ffee88 0%, #ffd75e 50%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 80px 30px rgba(255,215,94,0.4);
  animation: bcs-sun 12s linear infinite;
}
.scn-bastard-commodity-soliloquy .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #a67c4e 0%, #7a5c38 100%);
  border-radius: 60% 40% 0 0 / 40% 30% 0 0;
  box-shadow: inset 0 20px 30px rgba(0,0,0,0.3);
}
.scn-bastard-commodity-soliloquy .crown {
  position: absolute; bottom: 38%; left: 30%; width: 40px; height: 25px;
  background: linear-gradient(180deg, #b8903a 0%, #8a6a20 100%);
  border-radius: 8% 8% 0 0;
  box-shadow: 0 4px 8px rgba(0,0,0,0.5);
  animation: bcs-crown 5s ease-in-out infinite;
}
.scn-bastard-commodity-soliloquy .figure {
  position: absolute; bottom: 30%; left: 50%; transform: translateX(-50%);
  width: 30px; height: 70px;
  background: linear-gradient(180deg, #2a1a0a 0%, #1a0a00 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 0 8px 15px rgba(0,0,0,0.6);
  animation: bcs-figure 6s ease-in-out infinite alternate;
}
.scn-bastard-commodity-soliloquy .shadow {
  position: absolute; bottom: 28%; left: 45%; width: 60px; height: 20px;
  background: rgba(0,0,0,0.25);
  border-radius: 50%;
  filter: blur(6px);
  animation: bcs-shadow 6s ease-in-out infinite alternate;
}
.scn-bastard-commodity-soliloquy .particle-1 {
  position: absolute; top: 20%; left: 20%; width: 4px; height: 4px;
  background: #ffd060; border-radius: 50%;
  box-shadow: 0 0 6px 2px rgba(255,208,96,0.6);
  animation: bcs-particle1 15s linear infinite;
}
.scn-bastard-commodity-soliloquy .particle-2 {
  position: absolute; top: 35%; left: 70%; width: 3px; height: 3px;
  background: #ffd060; border-radius: 50%;
  box-shadow: 0 0 4px 1px rgba(255,208,96,0.5);
  animation: bcs-particle2 20s linear infinite;
  animation-delay: -7s;
}

@keyframes bcs-sky { 0% { opacity:0.9 } 50% { opacity:1 } 100% { opacity:0.7 } }
@keyframes bcs-sun { 0% { transform: translate(0, 0) scale(1); opacity:0.8 } 25% { transform: translate(5px, -3px) scale(1.02); opacity:1 } 50% { transform: translate(-2px, 2px) scale(0.98); opacity:0.9 } 75% { transform: translate(3px, -1px) scale(1.01); opacity:0.95 } 100% { transform: translate(0, 0) scale(1); opacity:0.85 } }
@keyframes bcs-crown { 0%,100% { transform: translateY(0) rotate(-2deg) } 25% { transform: translateY(-2px) rotate(2deg) } 50% { transform: translateY(-1px) rotate(0deg) } 75% { transform: translateY(1px) rotate(3deg) } }
@keyframes bcs-figure { 0% { transform: translateX(-50%) translateY(0) rotate(-1deg) } 30% { transform: translateX(-48%) translateY(-2px) rotate(1deg) } 60% { transform: translateX(-52%) translateY(1px) rotate(-2deg) } 100% { transform: translateX(-50%) translateY(0) rotate(0) } }
@keyframes bcs-shadow { 0% { transform: scaleX(1); opacity:0.7 } 30% { transform: scaleX(1.1); opacity:0.5 } 60% { transform: scaleX(0.9); opacity:0.8 } 100% { transform: scaleX(1); opacity:0.7 } }
@keyframes bcs-particle1 { 0% { transform: translate(0,0); opacity:0 } 10% { opacity:1 } 90% { opacity:1 } 100% { transform: translate(-30px, 80px); opacity:0 } }
@keyframes bcs-particle2 { 0% { transform: translate(0,0); opacity:0 } 15% { opacity:0.8 } 85% { opacity:0.8 } 100% { transform: translate(40px, 100px); opacity:0 } }

/* Scene: constance-distress (tense, bright-interior) */
.scn-constance-distress {
  background: linear-gradient(180deg, #e3d5b8 0%, #c9b89a 40%, #a48c6e 100%), radial-gradient(ellipse at 50% 60%, #f0e0c0 0%, transparent 70%);
  position: relative;
  overflow: hidden;
}
.scn-constance-distress .wall {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(90deg, #d6c4a0 0%, #b8a484 50%, #d6c4a0 100%);
  box-shadow: inset 0 0 40px rgba(0,0,0,0.15);
}
.scn-constance-distress .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(180deg, #8a7650 0%, #6a5630 100%);
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.3);
}
.scn-constance-distress .window {
  position: absolute; top: 10%; left: 60%; width: 70px; height: 100px;
  background: linear-gradient(180deg, #b0d0ff 0%, #7aafff 100%);
  border: 6px solid #6a4a2a;
  border-radius: 4px 4px 8px 8px;
  box-shadow: inset 0 0 30px rgba(255,255,200,0.6), 0 0 80px 20px rgba(255,230,150,0.3);
  animation: cd-window 5s ease-in-out infinite alternate;
}
.scn-constance-distress .table {
  position: absolute; bottom: 28%; left: 50%; transform: translateX(-50%);
  width: 100px; height: 15px;
  background: linear-gradient(180deg, #5a3a1a 0%, #3a2a0a 100%);
  border-radius: 4px;
  box-shadow: 0 6px 10px rgba(0,0,0,0.5);
}
.scn-constance-distress .scroll {
  position: absolute; bottom: 33%; left: 45%; width: 30px; height: 40px;
  background: linear-gradient(180deg, #f0e0c0 0%, #c8b080 100%);
  border-radius: 4px 4px 12px 12px;
  transform: rotate(-15deg);
  box-shadow: 0 4px 8px rgba(0,0,0,0.4);
  animation: cd-scroll 8s ease-in-out infinite;
}
.scn-constance-distress .figure {
  position: absolute; bottom: 25%; left: 35%; width: 35px; height: 80px;
  background: linear-gradient(180deg, #3a1a3a 0%, #1a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 0 8px 20px rgba(0,0,0,0.6);
  animation: cd-figure 4s ease-in-out infinite alternate;
}
.scn-constance-distress .chair {
  position: absolute; bottom: 25%; left: 28%; width: 30px; height: 50px;
  background: linear-gradient(180deg, #4a2a1a 0%, #2a1a0a 100%);
  border-radius: 4px 4px 0 0;
  box-shadow: 0 4px 8px rgba(0,0,0,0.4);
  animation: cd-chair 6s ease-in-out infinite;
}
.scn-constance-distress .shadow {
  position: absolute; bottom: 22%; left: 30%; width: 70px; height: 25px;
  background: rgba(0,0,0,0.2);
  border-radius: 50%;
  filter: blur(5px);
  animation: cd-shadow 4s ease-in-out infinite alternate;
}

@keyframes cd-window { 0% { filter: brightness(0.9) } 50% { filter: brightness(1.15) } 100% { filter: brightness(0.95) } }
@keyframes cd-scroll { 0%,100% { transform: rotate(-15deg) translateY(0) } 50% { transform: rotate(-18deg) translateY(-3px) } }
@keyframes cd-figure { 0% { transform: translateX(0) translateY(0) rotate(0) } 30% { transform: translateX(-2px) translateY(-2px) rotate(2deg) } 60% { transform: translateX(2px) translateY(1px) rotate(-1deg) } 100% { transform: translateX(0) translateY(0) rotate(0) } }
@keyframes cd-chair { 0%,100% { transform: translateY(0) } 25% { transform: translateY(-1px) } 75% { transform: translateY(1px) } }
@keyframes cd-shadow { 0% { transform: scaleX(1); opacity:0.6 } 50% { transform: scaleX(1.2); opacity:0.4 } 100% { transform: scaleX(0.9); opacity:0.7 } }

/* Scene: arthur-fairness-lament (dark, bright-interior) */
.scn-arthur-fairness-lament {
  background: linear-gradient(180deg, #2c1a1a 0%, #3a2a2a 30%, #4a3a3a 100%), radial-gradient(ellipse at 50% 20%, #5a4a4a 0%, transparent 70%);
  position: relative;
  overflow: hidden;
}
.scn-arthur-fairness-lament .wall-left {
  position: absolute; inset: 0 50% 0 0;
  background: linear-gradient(180deg, #4a3a3a 0%, #2a1a1a 100%);
  box-shadow: inset -10px 0 20px rgba(0,0,0,0.5);
}
.scn-arthur-fairness-lament .wall-right {
  position: absolute; inset: 0 0 0 50%;
  background: linear-gradient(180deg, #4a3a3a 0%, #2a1a1a 100%);
  box-shadow: inset 10px 0 20px rgba(0,0,0,0.5);
}
.scn-arthur-fairness-lament .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #1a0a0a 0%, #0a0000 100%);
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.7);
}
.scn-arthur-fairness-lament .window {
  position: absolute; top: 8%; left: 50%; transform: translateX(-50%);
  width: 80px; height: 120px;
  background: linear-gradient(180deg, #f0e0b0 0%, #d0b080 100%);
  border: 8px solid #3a2a1a;
  border-radius: 6px;
  box-shadow: 0 0 100px 30px rgba(200,170,120,0.5), inset 0 0 60px #ffe0a0;
  animation: afl-window 7s ease-in-out infinite alternate;
}
.scn-arthur-fairness-lament .beam {
  position: absolute; top: 12%; left: 40%; width: 4px; height: 200px;
  background: linear-gradient(180deg, rgba(255,240,200,0.6) 0%, rgba(255,240,200,0) 100%);
  transform: rotate(10deg);
  filter: blur(3px);
  animation: afl-beam 10s ease-in-out infinite alternate;
}
.scn-arthur-fairness-lament .figure {
  position: absolute; bottom: 20%; left: 40%; width: 40px; height: 90px;
  background: linear-gradient(180deg, #1a0a0a 0%, #0a0000 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 0 8px 20px rgba(0,0,0,0.8);
  animation: afl-figure 5s ease-in-out infinite alternate;
}
.scn-arthur-fairness-lament .hand {
  position: absolute; bottom: 35%; left: 42%; width: 20px; height: 30px;
  background: linear-gradient(180deg, #1a0a0a 0%, #0a0000 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: afl-hand 3s ease-in-out infinite;
}
.scn-arthur-fairness-lament .chain {
  position: absolute; bottom: 24%; left: 52%; width: 4px; height: 40px;
  background: repeating-linear-gradient(0deg, #6a4a2a 0px, #6a4a2a 4px, #8a6a4a 5px, #8a6a4a 8px);
  border-radius: 2px;
  animation: afl-chain 8s linear infinite;
}

@keyframes afl-window { 0% { filter: brightness(0.9) } 50% { filter: brightness(1.2) } 100% { filter: brightness(1.0) } }
@keyframes afl-beam { 0% { transform: rotate(10deg) scaleY(1); opacity:0.4 } 50% { transform: rotate(12deg) scaleY(1.05); opacity:0.6 } 100% { transform: rotate(8deg) scaleY(0.95); opacity:0.5 } }
@keyframes afl-figure { 0% { transform: translateY(0) rotate(0) } 30% { transform: translateY(-2px) rotate(2deg) } 60% { transform: translateY(2px) rotate(-1deg) } 100% { transform: translateY(0) rotate(0) } }
@keyframes afl-hand { 0%,100% { transform: rotate(0deg) } 25% { transform: rotate(-15deg) } 75% { transform: rotate(10deg) } }
@keyframes afl-chain { 0% { transform: translateY(0) } 50% { transform: translateY(3px) } 100% { transform: translateY(0) } }

/* Scene: constance-sits-on-ground (dark, bright-interior) */
.scn-constance-sits-on-ground {
  background: linear-gradient(180deg, #2a1a2a 0%, #3a2a3a 40%, #4a3a4a 100%), radial-gradient(ellipse at 50% 80%, #5a4a5a 0%, transparent 70%);
  position: relative;
  overflow: hidden;
}
.scn-constance-sits-on-ground .wall {
  position: absolute; inset: 0 0 20% 0;
  background: linear-gradient(90deg, #3a2a3a 0%, #2a1a2a 30%, #3a2a3a 70%, #2a1a2a 100%);
  box-shadow: inset 0 0 40px rgba(0,0,0,0.3);
}
.scn-constance-sits-on-ground .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #1a0a1a 0%, #0a000a 100%);
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.6);
}
.scn-constance-sits-on-ground .window {
  position: absolute; top: 8%; left: 55%; width: 70px; height: 100px;
  background: linear-gradient(180deg, #f0d0a0 0%, #d0b080 100%);
  border: 6px solid #3a2a1a;
  border-radius: 4px;
  box-shadow: 0 0 80px 20px rgba(200,160,100,0.4), inset 0 0 50px #ffe0a0;
  animation: csg-window 6s ease-in-out infinite alternate;
}
.scn-constance-sits-on-ground .figure {
  position: absolute; bottom: 5%; left: 45%; width: 50px; height: 70px;
  background: linear-gradient(180deg, #2a1a2a 0%, #1a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 30% 30%;
  box-shadow: 0 8px 20px rgba(0,0,0,0.7);
  animation: csg-figure 4s ease-in-out infinite alternate;
}
.scn-constance-sits-on-ground .crown {
  position: absolute; bottom: 30%; left: 42%; width: 35px; height: 20px;
  background: linear-gradient(180deg, #b08040 0%, #8a6020 100%);
  border-radius: 6% 6% 0 0;
  box-shadow: 0 4px 8px rgba(0,0,0,0.5);
  animation: csg-crown 5s ease-in-out infinite;
}
.scn-constance-sits-on-ground .gown {
  position: absolute; bottom: 0; left: 40%; width: 70px; height: 60px;
  background: linear-gradient(180deg, #3a2a3a 0%, #1a0a1a 100%);
  border-radius: 50% 50% 0 0 / 30% 30% 0 0;
  box-shadow: 0 0 15px rgba(0,0,0,0.5);
  animation: csg-gown 6s ease-in-out infinite;
}
.scn-constance-sits-on-ground .shadow {
  position: absolute; bottom: 0; left: 35%; width: 80px; height: 30px;
  background: rgba(0,0,0,0.3);
  border-radius: 50%;
  filter: blur(8px);
  animation: csg-shadow 4s ease-in-out infinite alternate;
}
.scn-constance-sits-on-ground .chain {
  position: absolute; bottom: 20%; left: 50%; width: 3px; height: 50px;
  background: repeating-linear-gradient(0deg, #6a4a2a 0px, #6a4a2a 3px, #8a6a4a 4px, #8a6a4a 6px);
  border-radius: 1px;
  animation: csg-chain 7s linear infinite;
}

@keyframes csg-window { 0% { filter: brightness(0.9) } 50% { filter: brightness(1.3) } 100% { filter: brightness(1.0) } }
@keyframes csg-figure { 0% { transform: translateY(0) rotate(0) } 25% { transform: translateY(-1px) rotate(2deg) } 50% { transform: translateY(1px) rotate(-2deg) } 75% { transform: translateY(0) rotate(1deg) } 100% { transform: translateY(0) rotate(0) } }
@keyframes csg-crown { 0%,100% { transform: translateY(0) rotate(-2deg) } 25% { transform: translateY(-2px) rotate(3deg) } 75% { transform: translateY(1px) rotate(0deg) } }
@keyframes csg-gown { 0%,100% { transform: scaleY(1) } 50% { transform: scaleY(1.02) } }
@keyframes csg-shadow { 0% { transform: scaleX(1); opacity:0.5 } 50% { transform: scaleX(1.1); opacity:0.7 } 100% { transform: scaleX(0.9); opacity:0.4 } }
@keyframes csg-chain { 0% { transform: translateY(0) } 50% { transform: translateY(2px) } 100% { transform: translateY(0) } }

/* Scene: prison-alone-with-hubert (tense, dim interior) */
.scn-prison-alone-with-hubert {
  background: 
    radial-gradient(ellipse at 50% 30%, #3a2515 0%, transparent 60%),
    linear-gradient(180deg, #1a1008 0%, #2d1c10 50%, #0d0804 100%);
}
.scn-prison-alone-with-hubert .bg-pah { position:absolute; inset:0; background: linear-gradient(180deg, rgba(20,12,4,.8) 0%, transparent 60%); animation: pah-breathe 9s ease-in-out infinite alternate; }
.scn-prison-alone-with-hubert .wall-pah { position:absolute; inset:10% 5% 20% 5%; background: linear-gradient(135deg, #3a2a1a 0%, #1a1008 100%); border-radius:6px; box-shadow: inset 0 0 40px rgba(0,0,0,.7); }
.scn-prison-alone-with-hubert .window-pah { position:absolute; top:15%; left:60%; width:40px; height:60px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius:4px 4px 50% 50%; box-shadow: inset 0 0 20px rgba(80,60,30,.3); animation: pah-window 12s ease-in-out infinite; }
.scn-prison-alone-with-hubert .torch-pah { position:absolute; bottom:35%; left:25%; width:10px; height:20px; background: radial-gradient(circle at 50% 20%, #d09040 0%, #a06020 40%, transparent 70%); border-radius:40%; animation: pah-torch 3s ease-in-out infinite alternate; }
.scn-prison-alone-with-hubert .figure-hubert-pah { position:absolute; bottom:22%; left:40%; width:24px; height:56px; background: linear-gradient(180deg, #1a1210 0%, #0a0806 100%); border-radius: 45% 45% 50% 50% / 55% 55% 40% 40%; transform-origin: bottom center; animation: pah-hubert 8s ease-in-out infinite alternate; }
.scn-prison-alone-with-hubert .figure-arthur-pah { position:absolute; bottom:22%; right:35%; width:18px; height:40px; background: linear-gradient(180deg, #2a1a10 0%, #1a0e08 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: pah-arthur 5s ease-in-out infinite alternate; }
.scn-prison-alone-with-hubert .chains-pah { position:absolute; bottom:30%; left:38%; width:30px; height:4px; background: #5a4a3a; border-radius:2px; box-shadow: 0 8px 0 #5a4a3a, 0 16px 0 #5a4a3a; animation: pah-chain 4s ease-in-out infinite; }
@keyframes pah-breathe { 0% { opacity:.7; } 50% { opacity:.9; } 100% { opacity:.75; } }
@keyframes pah-window { 0% { background: #4a3a2a; } 50% { background: #5a4a3a; } 100% { background: #3a2a1a; } }
@keyframes pah-torch { 0% { transform: scaleY(1) translateY(0); opacity:.8; } 50% { transform: scaleY(1.1) translateY(-2px); opacity:1; } 100% { transform: scaleY(.95) translateY(1px); opacity:.7; } }
@keyframes pah-hubert { 0% { transform: rotate(-1deg) translateY(0); } 50% { transform: rotate(1deg) translateY(-2px); } 100% { transform: rotate(-.5deg) translateY(0); } }
@keyframes pah-arthur { 0% { transform: translateX(0) translateY(0) rotate(2deg); } 50% { transform: translateX(2px) translateY(-1px) rotate(-2deg); } 100% { transform: translateX(0) translateY(0) rotate(1deg); } }
@keyframes pah-chain { 0% { transform: rotate(-3deg); } 50% { transform: rotate(3deg); } 100% { transform: rotate(-2deg); } }

/* Scene: prison-arthur-reasoning (tense, dim interior) */
.scn-prison-arthur-reasoning {
  background: 
    radial-gradient(ellipse at 30% 50%, #2a1a0e 0%, transparent 50%),
    linear-gradient(180deg, #1a1008 0%, #2a1a10 50%, #0a0604 100%);
}
.scn-prison-arthur-reasoning .bg-par { position:absolute; inset:0; background: linear-gradient(180deg, rgba(10,6,4,.6) 0%, transparent 70%); animation: par-bg 10s ease-in-out infinite alternate; }
.scn-prison-arthur-reasoning .wall-par { position:absolute; inset:8% 5% 15% 5%; background: linear-gradient(135deg, #3a2418 0%, #1a1008 100%); border-radius:8px; box-shadow: inset 0 0 30px rgba(0,0,0,.6); }
.scn-prison-arthur-reasoning .window-par { position:absolute; top:12%; left:20%; width:30px; height:50px; background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%); border-radius:2px 2px 40% 40%; box-shadow: inset 0 0 20px rgba(60,40,20,.3); animation: par-window 15s ease-in-out infinite; }
.scn-prison-arthur-reasoning .torch-par { position:absolute; bottom:30%; right:20%; width:8px; height:18px; background: radial-gradient(circle at 50% 20%, #c08030 0%, #905020 40%, transparent 70%); border-radius:30%; animation: par-torch 2.5s ease-in-out infinite alternate; }
.scn-prison-arthur-reasoning .figure-arthur-par { position:absolute; bottom:20%; left:30%; width:16px; height:38px; background: linear-gradient(180deg, #2a1a10 0%, #180e08 100%); border-radius: 50% 50% 40% 40% / 65% 65% 35% 35%; transform-origin: bottom center; animation: par-arthur 6s ease-in-out infinite; }
.scn-prison-arthur-reasoning .figure-hubert-par { position:absolute; bottom:20%; right:28%; width:22px; height:52px; background: linear-gradient(180deg, #1a1210 0%, #0a0806 100%); border-radius: 45% 45% 50% 50% / 55% 55% 40% 40%; animation: par-hubert 7s ease-in-out infinite alternate; }
.scn-prison-arthur-reasoning .iron-par { position:absolute; bottom:30%; left:50%; width:20px; height:6px; background: linear-gradient(90deg, #4a3a2a 0%, #2a1a10 100%); border-radius:3px; transform:rotate(-20deg); transform-origin: left center; animation: par-iron 4s ease-in-out infinite; }
@keyframes par-bg { 0% { opacity:.7; } 50% { opacity:.85; } 100% { opacity:.7; } }
@keyframes par-window { 0% { opacity:.6; } 50% { opacity:.9; } 100% { opacity:.7; } }
@keyframes par-torch { 0% { transform: scaleY(1) translateY(0); opacity:.8; } 50% { transform: scaleY(1.15) translateY(-3px); opacity:1; } 100% { transform: scaleY(.9) translateY(1px); opacity:.7; } }
@keyframes par-arthur { 0% { transform: translateX(0) rotate(2deg); } 25% { transform: translateX(3px) rotate(-1deg); } 50% { transform: translateX(0) rotate(3deg); } 75% { transform: translateX(-3px) rotate(-2deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes par-hubert { 0% { transform: rotate(-2deg) translateY(0); } 50% { transform: rotate(2deg) translateY(-1px); } 100% { transform: rotate(-1deg) translateY(0); } }
@keyframes par-iron { 0% { transform: rotate(-20deg) scaleX(1); } 50% { transform: rotate(-15deg) scaleX(1.2); } 100% { transform: rotate(-22deg) scaleX(.9); } }

/* Scene: item-iron-threat (tense, dim interior, close-up) */
.scn-item-iron-threat {
  background: 
    radial-gradient(ellipse at 40% 50%, #3a1a0a 0%, transparent 60%),
    linear-gradient(180deg, #0a0604 0%, #1a1008 50%, #0a0604 100%);
}
.scn-item-iron-threat .bg-iit { position:absolute; inset:0; background: linear-gradient(180deg, rgba(10,6,4,.8) 0%, transparent 50%); animation: iit-bg 8s ease-in-out infinite alternate; }
.scn-item-iron-threat .hand-iit { position:absolute; bottom:15%; left:20%; width:30px; height:40px; background: linear-gradient(180deg, #2a1a10 0%, #1a1008 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform:rotate(10deg); transform-origin: bottom left; animation: iit-hand 5s ease-in-out infinite; }
.scn-item-iron-threat .iron-head-iit { position:absolute; bottom:28%; left:28%; width:20px; height:20px; background: radial-gradient(circle at 40% 40%, #c06020 0%, #6a2a0a 70%); border-radius:50%; box-shadow: 0 0 30px 8px #b05020, 0 0 60px 15px rgba(160,60,20,.4); animation: iit-iron 2s ease-in-out infinite alternate; }
.scn-item-iron-threat .eye-iit { position:absolute; bottom:30%; right:25%; width:14px; height:12px; background: radial-gradient(circle at 50% 50%, #ffffff 0%, #c09060 60%, transparent 80%); border-radius:50%; border: 3px solid #2a1a10; animation: iit-eye 3s ease-in-out infinite; }
.scn-item-iron-threat .glow-iit { position:absolute; bottom:20%; left:20%; right:0; top:0; background: radial-gradient(ellipse at 30% 40%, rgba(200,80,20,.3) 0%, transparent 70%); pointer-events:none; animation: iit-glow 4s ease-in-out infinite alternate; }
.scn-item-iron-threat .spark-1-iit { position:absolute; bottom:35%; left:35%; width:4px; height:4px; background:#d08030; border-radius:50%; box-shadow:0 0 8px 2px #d08030; animation: iit-spark1 1.5s ease-in-out infinite; }
.scn-item-iron-threat .spark-2-iit { position:absolute; bottom:32%; left:30%; width:3px; height:3px; background:#c07020; border-radius:50%; box-shadow:0 0 6px 1px #c07020; animation: iit-spark2 2s ease-in-out infinite 0.5s; }
@keyframes iit-bg { 0% { opacity:.7; } 50% { opacity:.9; } 100% { opacity:.8; } }
@keyframes iit-hand { 0% { transform: rotate(10deg) translateY(0); } 50% { transform: rotate(12deg) translateY(-2px); } 100% { transform: rotate(8deg) translateY(0); } }
@keyframes iit-iron { 0% { transform: scale(1); box-shadow: 0 0 30px 8px #b05020; } 50% { transform: scale(1.1); box-shadow: 0 0 40px 12px #d06020; } 100% { transform: scale(.95); box-shadow: 0 0 25px 5px #a04818; } }
@keyframes iit-eye { 0% { transform: scaleY(1); } 30% { transform: scaleY(.8); } 60% { transform: scaleY(1); } 100% { transform: scaleY(.9); } }
@keyframes iit-glow { 0% { opacity:.5; } 50% { opacity:.9; } 100% { opacity:.6; } }
@keyframes iit-spark1 { 0% { transform: translate(0,0) scale(1); opacity:1; } 50% { transform: translate(8px,-10px) scale(1.5); opacity:.5; } 100% { transform: translate(15px,-20px) scale(0); opacity:0; } }
@keyframes iit-spark2 { 0% { transform: translate(0,0) scale(1); opacity:1; } 50% { transform: translate(-5px,-8px) scale(1.3); opacity:.6; } 100% { transform: translate(-10px,-16px) scale(0); opacity:0; } }

/* Scene: prison-hubert-spares (calm, dim interior) */
.scn-prison-hubert-spares {
  background: 
    radial-gradient(ellipse at 50% 40%, #2a1a0e 0%, transparent 50%),
    linear-gradient(180deg, #1a1008 0%, #2a1a10 50%, #0a0604 100%);
}
.scn-prison-hubert-spares .bg-phs { position:absolute; inset:0; background: linear-gradient(180deg, rgba(20,12,4,.5) 0%, transparent 60%); animation: phs-bg 12s ease-in-out infinite alternate; }
.scn-prison-hubert-spares .wall-phs { position:absolute; inset:12% 5% 18% 5%; background: linear-gradient(135deg, #3a2418 0%, #1a1008 100%); border-radius:8px; box-shadow: inset 0 0 30px rgba(0,0,0,.5); }
.scn-prison-hubert-spares .window-phs { position:absolute; top:18%; left:55%; width:30px; height:40px; background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%); border-radius:2px 2px 30% 30%; box-shadow: inset 0 0 20px rgba(60,40,20,.3); animation: phs-window 20s ease-in-out infinite; }
.scn-prison-hubert-spares .bench-phs { position:absolute; bottom:15%; left:20%; right:20%; height:8px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a10 100%); border-radius:2px; box-shadow: 0 4px 8px rgba(0,0,0,.4); }
.scn-prison-hubert-spares .figure-arthur-phs { position:absolute; bottom:15%; left:35%; width:16px; height:30px; background: linear-gradient(180deg, #2a1a10 0%, #180e08 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: phs-arthur 10s ease-in-out infinite; }
.scn-prison-hubert-spares .figure-hubert-phs { position:absolute; bottom:18%; right:28%; width:22px; height:48px; background: linear-gradient(180deg, #1a1210 0%, #0a0806 100%); border-radius: 45% 45% 50% 50% / 55% 55% 40% 40%; animation: phs-hubert 12s ease-in-out infinite alternate; }
.scn-prison-hubert-spares .blanket-phs { position:absolute; bottom:15%; left:32%; right:40%; height:12px; background: linear-gradient(90deg, #5a4a3a 0%, #3a2a1a 100%); border-radius:4px 4px 50% 50%; box-shadow: 0 2px 6px rgba(0,0,0,.3); animation: phs-blanket 8s ease-in-out infinite; }
@keyframes phs-bg { 0% { opacity:.7; } 50% { opacity:.85; } 100% { opacity:.75; } }
@keyframes phs-window { 0% { opacity:.6; } 50% { opacity:.8; } 100% { opacity:.65; } }
@keyframes phs-arthur { 0% { transform: translateY(0) rotate(0deg); } 30% { transform: translateY(-1px) rotate(2deg); } 60% { transform: translateY(0) rotate(-1deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes phs-hubert { 0% { transform: rotate(0deg) translateY(0); } 50% { transform: rotate(1deg) translateY(-1px); } 100% { transform: rotate(-1deg) translateY(0); } }
@keyframes phs-blanket { 0% { transform: scaleY(1); } 50% { transform: scaleY(1.05); } 100% { transform: scaleY(.98); } }

.scn-bastard-vengeance {
  background: linear-gradient(180deg, #f7e7c0 0%, #d4b864 50%, #8a6f38 100%), radial-gradient(ellipse at 50% 0%, #fff8e0 0%, transparent 60%);
}
.scn-bastard-vengeance .sky { position:absolute; inset:0 0 45% 0; background: linear-gradient(180deg, #ffe8a0 0%, #c8a050 100%); animation: bv-sky 16s ease-in-out infinite alternate; }
.scn-bastard-vengeance .sun { position:absolute; top:10%; right:20%; width:70px; height:70px; background: radial-gradient(circle, #fff0c0 0%, #f0c060 40%, transparent 70%); border-radius:50%; box-shadow: 0 0 80px 30px #f0c060; animation: bv-sun 8s ease-in-out infinite; }
.scn-bastard-vengeance .hills { position:absolute; bottom:30%; left:0; right:0; height:20%; background: linear-gradient(180deg, #5a7a3a 0%, #2a4a1a 100%); border-radius: 30% 70% 0 0 / 50% 70% 0 0; box-shadow: inset 0 4px 15px rgba(0,0,0,.5); animation: bv-hills 20s ease-in-out infinite alternate; }
.scn-bastard-vengeance .castle { position:absolute; bottom:30%; left:30%; width:80px; height:100px; background: linear-gradient(180deg, #6a5a4a 0%, #3a2a1a 100%); border-radius: 10% 10% 4% 4%; box-shadow: 2px 0 8px rgba(0,0,0,.4); animation: bv-castle 12s ease-in-out infinite; }
.scn-bastard-vengeance .figure { position:absolute; bottom:27%; left:55%; width:24px; height:50px; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: bv-figure 3s ease-in-out infinite; }
.scn-bastard-vengeance .sword { position:absolute; bottom:38%; left:60%; width:4px; height:40px; background: linear-gradient(180deg, #c0c0c0 0%, #808080 100%); border-radius: 2px; box-shadow: 0 0 6px rgba(255,255,200,.4); transform: rotate(15deg); animation: bv-sword 2s ease-in-out infinite alternate; }
.scn-bastard-vengeance .starlight { position:absolute; top:5%; left:10%; width:100px; height:100px; background: radial-gradient(circle, rgba(255,255,200,.6) 0%, transparent 70%); filter: blur(4px); animation: bv-stars 30s linear infinite; }
@keyframes bv-sky { 0% { opacity:.85; } 50% { opacity:1; } 100% { opacity:.75; } }
@keyframes bv-sun { 0% { transform: translate(0,0) scale(1); box-shadow: 0 0 60px 20px #f0c060; } 50% { transform: translate(10px,-5px) scale(1.05); box-shadow: 0 0 100px 40px #f0c060; } 100% { transform: translate(-5px,3px) scale(0.98); box-shadow: 0 0 70px 30px #f0c060; } }
@keyframes bv-hills { 0% { transform: translateY(0) scaleX(1); } 50% { transform: translateY(-4px) scaleX(1.02); } 100% { transform: translateY(2px) scaleX(0.98); } }
@keyframes bv-castle { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-3px); } }
@keyframes bv-figure { 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 bv-sword { 0% { transform: rotate(10deg); } 100% { transform: rotate(20deg); } }
@keyframes bv-stars { 0% { transform: translateX(0) scale(1); opacity:.5; } 50% { transform: translateX(-30px) scale(1.2); opacity:.8; } 100% { transform: translateX(20px) scale(0.9); opacity:.6; } }

.scn-peace-offer {
  background: linear-gradient(180deg, #e8dbb0 0%, #c8b080 50%, #a08060 100%), radial-gradient(ellipse at 50% 100%, #b09870 0%, transparent 70%);
}
.scn-peace-offer .backdrop { position:absolute; inset:0; background: linear-gradient(135deg, #d4c8a8 0%, #b8a080 100%); animation: po-backdrop 30s ease-in-out infinite alternate; }
.scn-peace-offer .table { position:absolute; bottom:20%; left:25%; width:50%; height:20%; background: linear-gradient(180deg, #8a7050 0%, #5a4030 100%); border-radius: 30% 30% 10% 10%; box-shadow: 0 8px 20px rgba(0,0,0,.3); animation: po-table 12s ease-in-out infinite; }
.scn-peace-offer .document { position:absolute; bottom:28%; left:40%; width:12%; height:8%; background: linear-gradient(135deg, #f0e6c0 0%, #d0c0a0 100%); border-radius: 2px; box-shadow: 0 2px 4px rgba(0,0,0,.2); transform: rotate(-2deg); animation: po-doc 10s ease-in-out infinite; }
.scn-peace-offer .quill { position:absolute; bottom:30%; left:55%; width:3px; height:15px; background: linear-gradient(180deg, #c0a080 0%, #806050 100%); border-radius: 50% 50% 0 0; transform: rotate(20deg); animation: po-quill 4s ease-in-out infinite alternate; }
.scn-peace-offer .figure-cardinal { position:absolute; bottom:24%; left:30%; width:20px; height:55px; background: linear-gradient(180deg, #4a3a5a 0%, #2a1a3a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: po-cardinal 8s ease-in-out infinite; }
.scn-peace-offer .figure-king { position:absolute; bottom:24%; right:30%; width:22px; height:55px; background: linear-gradient(180deg, #3a4a3a 0%, #1a2a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: po-king 8s ease-in-out infinite reverse; }
.scn-peace-offer .window { position:absolute; top:15%; left:70%; width:80px; height:100px; background: linear-gradient(180deg, #c0d8f0 0%, #a0b8d0 100%); border-radius: 4px; box-shadow: inset 0 0 20px rgba(255,255,200,.4); animation: po-window 20s ease-in-out infinite alternate; }
.scn-peace-offer .sunbeam { position:absolute; top:15%; left:72%; width:40px; height:200px; background: linear-gradient(180deg, rgba(255,255,200,.5) 0%, transparent 100%); transform: rotate(10deg); filter: blur(6px); animation: po-beam 12s ease-in-out infinite alternate; }
@keyframes po-backdrop { 0% { opacity:.9; } 50% { opacity:1; } 100% { opacity:.85; } }
@keyframes po-table { 0%,100% { transform: translateY(0) scaleX(1); } 50% { transform: translateY(-2px) scaleX(1.01); } }
@keyframes po-doc { 0% { transform: rotate(-2deg) translateX(0); } 50% { transform: rotate(-1deg) translateX(2px); } 100% { transform: rotate(-3deg) translateX(-1px); } }
@keyframes po-quill { 0% { transform: rotate(15deg); } 100% { transform: rotate(25deg); } }
@keyframes po-cardinal { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-4px) rotate(2deg); } 100% { transform: translateY(2px) rotate(-1deg); } }
@keyframes po-king { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-3px) rotate(-2deg); } 100% { transform: translateY(1px) rotate(1deg); } }
@keyframes po-window { 0% { opacity:.75; } 50% { opacity:1; } 100% { opacity:.8; } }
@keyframes po-beam { 0% { opacity:.3; } 50% { opacity:.6; } 100% { opacity:.2; } }

.scn-peace-arrangements {
  background: linear-gradient(180deg, #c8b898 0%, #a89070 50%, #887858 100%), radial-gradient(ellipse at 50% 50%, #b0a080 0%, transparent 60%);
}
.scn-peace-arrangements .table-round { position:absolute; bottom:15%; left:15%; width:70%; height:70%; background: radial-gradient(circle, #6a5a4a 0%, #4a3a2a 100%); border-radius:50%; box-shadow: 0 10px 30px rgba(0,0,0,.5); animation: pa-table 30s ease-in-out infinite; }
.scn-peace-arrangements .document-center { position:absolute; bottom:38%; left:42%; width:16%; height:10%; background: linear-gradient(135deg, #e8dcc0 0%, #c8b8a0 100%); border-radius: 2px; box-shadow: 0 2px 6px rgba(0,0,0,.3); transform: rotate(3deg); animation: pa-doc 20s ease-in-out infinite; }
.scn-peace-arrangements .figure-lord1 { position:absolute; bottom:35%; left:25%; width:18px; height:40px; background: linear-gradient(180deg, #2a3a4a 0%, #0a1a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: pa-lord1 12s ease-in-out infinite; }
.scn-peace-arrangements .figure-lord2 { position:absolute; bottom:38%; right:30%; width:18px; height:40px; background: linear-gradient(180deg, #3a2a4a 0%, #1a0a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: pa-lord2 14s ease-in-out infinite reverse; }
.scn-peace-arrangements .figure-lord3 { position:absolute; bottom:42%; left:50%; width:20px; height:45px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: pa-lord3 16s ease-in-out infinite; }
.scn-peace-arrangements .candle { position:absolute; bottom:40%; left:48%; width:6px; height:14px; background: linear-gradient(180deg, #e8c080 0%, #c09050 100%); border-radius: 50% 50% 0 0; box-shadow: 0 0 20px 8px rgba(255,200,100,.6); animation: pa-candle 4s ease-in-out infinite alternate; }
.scn-peace-arrangements .shadow-ring { position:absolute; bottom:18%; left:18%; width:64%; height:64%; background: radial-gradient(circle, rgba(0,0,0,.15) 0%, transparent 70%); border-radius:50%; pointer-events:none; }
@keyframes pa-table { 0% { transform: scale(1) rotate(0deg); } 50% { transform: scale(1.02) rotate(2deg); } 100% { transform: scale(0.98) rotate(-1deg); } }
@keyframes pa-doc { 0% { transform: rotate(3deg) translateY(0); } 50% { transform: rotate(0deg) translateY(-2px); } 100% { transform: rotate(5deg) translateY(1px); } }
@keyframes pa-lord1 { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-3px) rotate(1deg); } 100% { transform: translateY(2px) rotate(-1deg); } }
@keyframes pa-lord2 { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-4px) rotate(-2deg); } 100% { transform: translateY(1px) rotate(2deg); } }
@keyframes pa-lord3 { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-2px) rotate(1deg); } 100% { transform: translateY(3px) rotate(-1deg); } }
@keyframes pa-candle { 0% { transform: scaleY(1); box-shadow: 0 0 15px 5px rgba(255,200,100,.5); } 50% { transform: scaleY(1.1); box-shadow: 0 0 25px 10px rgba(255,200,100,.7); } 100% { transform: scaleY(0.95); box-shadow: 0 0 20px 8px rgba(255,200,100,.5); } }

.scn-tearful-reconciliation {
  background: linear-gradient(180deg, #e0d0b0 0%, #c0a880 50%, #a08868 100%), radial-gradient(ellipse at 50% 0%, #fff0d0 0%, transparent 70%);
}
.scn-tearful-reconciliation .sky-warm { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #ffe0b0 0%, #d0b888 100%); animation: tr-sky 18s ease-in-out infinite alternate; }
.scn-tearful-reconciliation .ground { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #b09070 0%, #807050 100%); border-radius: 40% 60% 0 0 / 80% 70% 0 0; box-shadow: inset 0 10px 20px rgba(0,0,0,.3); animation: tr-ground 24s ease-in-out infinite alternate; }
.scn-tearful-reconciliation .figure-kneeling { position:absolute; bottom:26%; left:38%; width:20px; height:45px; background: linear-gradient(180deg, #3a2a3a 0%, #1a0a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: tr-kneel 6s ease-in-out infinite; }
.scn-tearful-reconciliation .figure-standing { position:absolute; bottom:28%; left:55%; width:22px; height:55px; background: linear-gradient(180deg, #2a3a2a 0%, #0a1a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: tr-stand 6s ease-in-out infinite reverse; }
.scn-tearful-reconciliation .crown { position:absolute; bottom:42%; left:58%; width:14px; height:8px; background: linear-gradient(180deg, #d0b048 0%, #b09038 100%); border-radius: 50% 50% 0 0; box-shadow: 0 2px 6px rgba(0,0,0,.4); animation: tr-crown 8s ease-in-out infinite; }
.scn-tearful-reconciliation .tear { position:absolute; bottom:30%; left:40%; width:4px; height:4px; background: radial-gradient(circle, #b0d0e0 0%, #6090b0 100%); border-radius:50%; box-shadow: 0 0 8px 2px rgba(96,144,176,.5); animation: tr-tear 3s ease-in-out infinite alternate; }
.scn-tearful-reconciliation .banner { position:absolute; top:20%; left:70%; width:30px; height:40px; background: linear-gradient(180deg, #b07858 0%, #885040 100%); border-radius: 2px; box-shadow: 0 4px 8px rgba(0,0,0,.3); animation: tr-banner 15s ease-in-out infinite; }
@keyframes tr-sky { 0% { opacity:.8; } 50% { opacity:1; } 100% { opacity:.7; } }
@keyframes tr-ground { 0% { transform: translateY(0) scaleX(1); } 50% { transform: translateY(-2px) scaleX(1.01); } 100% { transform: translateY(1px) scaleX(0.99); } }
@keyframes tr-kneel { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-3px) rotate(2deg); } 100% { transform: translateY(1px) rotate(-1deg); } }
@keyframes tr-stand { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-4px) rotate(-2deg); } 100% { transform: translateY(2px) rotate(1deg); } }
@keyframes tr-crown { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-2px) rotate(3deg); } 100% { transform: translateY(1px) rotate(-2deg); } }
@keyframes tr-tear { 0% { transform: translateY(0) scale(1); opacity:.7; } 50% { transform: translateY(-6px) scale(1.2); opacity:1; } 100% { transform: translateY(3px) scale(0.9); opacity:.5; } }
@keyframes tr-banner { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(5px) rotate(2deg); } 100% { transform: translateX(-3px) rotate(-1deg); } }

/* === palace-arthur-death-rumor (tag: adr) === */
.scn-palace-arthur-death-rumor {
  background: 
    linear-gradient(180deg, #3a2a1a 0%, #5a3a2a 30%, #2a1a0a 100%),
    radial-gradient(ellipse at 50% 70%, #b08040 0%, transparent 50%);
}
.scn-palace-arthur-death-rumor .wall-adr {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #6a4a3a 0%, #4a2a1a 100%);
  border-bottom: 6px solid #3a1a0a;
}
.scn-palace-arthur-death-rumor .floor-adr {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #4a2a1a 0%, #2a1a0a 100%);
  box-shadow: inset 0 20px 30px rgba(0,0,0,0.7);
}
.scn-palace-arthur-death-rumor .throne-adr {
  position: absolute; bottom: 28%; left: 50%; width: 100px; height: 120px;
  transform: translateX(-50%) scaleX(0.7);
  background: linear-gradient(135deg, #8a6a4a 20%, #5a3a1a 80%);
  border-radius: 20% 20% 10% 10% / 40% 40% 10% 10%;
  box-shadow: 0 8px 20px rgba(0,0,0,0.6);
}
.scn-palace-arthur-death-rumor .king-silhouette-adr {
  position: absolute; bottom: 34%; left: 50%; width: 40px; height: 80px;
  transform: translateX(-50%);
  background: radial-gradient(ellipse 70% 100% at 50% 0%, #1a0a0a 0%, #0a0000 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: adr-king 8s ease-in-out infinite;
}
@keyframes adr-king {
  0% { transform: translateX(-50%) translateY(0); opacity: 0.9; }
  50% { transform: translateX(-50%) translateY(-4px); opacity: 1; }
  100% { transform: translateX(-50%) translateY(0); opacity: 0.9; }
}
.scn-palace-arthur-death-rumor .attendant-adr {
  position: absolute; bottom: 28%; left: 38%; width: 30px; height: 70px;
  background: linear-gradient(180deg, #3a2a1a 40%, #1a0a0a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  animation: adr-bow 6s ease-in-out infinite alternate;
}
@keyframes adr-bow {
  0% { transform: translateY(0) rotate(0); }
  50% { transform: translateY(-2px) rotate(5deg); }
  100% { transform: translateY(0) rotate(0); }
}
.scn-palace-arthur-death-rumor .candle-adr {
  position: absolute; bottom: 30%; left: 45%; width: 6px; height: 16px;
  background: linear-gradient(180deg, #ddaa55 0%, #cc8844 100%);
  border-radius: 50% 50% 10% 10%;
  box-shadow: 0 0 30px 10px rgba(200,150,80,0.6);
  animation: adr-flame 2s ease-in-out infinite alternate;
}
@keyframes adr-flame {
  0% { box-shadow: 0 0 20px 8px rgba(200,150,80,0.5); transform: scaleY(1); }
  50% { box-shadow: 0 0 35px 15px rgba(200,150,80,0.7); transform: scaleY(1.1); }
  100% { box-shadow: 0 0 20px 8px rgba(200,150,80,0.5); transform: scaleY(1); }
}
.scn-palace-arthur-death-rumor .shadowy-figure-adr {
  position: absolute; bottom: 25%; width: 30px; height: 70px;
  background: radial-gradient(ellipse 80% 100% at 50% 0%, #0a0000 0%, #000000 100%);
  border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%;
  filter: blur(1px);
}
.scn-palace-arthur-death-rumor .shadowy-figure-adr.left {
  left: 20%;
  animation: adr-shadow-left 10s ease-in-out infinite;
}
.scn-palace-arthur-death-rumor .shadowy-figure-adr.right {
  right: 20%;
  animation: adr-shadow-right 10s ease-in-out infinite reverse;
}
@keyframes adr-shadow-left {
  0% { transform: translateX(0) translateY(0) rotate(0); }
  50% { transform: translateX(-5px) translateY(-2px) rotate(-2deg); }
  100% { transform: translateX(0) translateY(0) rotate(0); }
}
@keyframes adr-shadow-right {
  0% { transform: translateX(0) translateY(0) rotate(0); }
  50% { transform: translateX(5px) translateY(-2px) rotate(2deg); }
  100% { transform: translateX(0) translateY(0) rotate(0); }
}
.scn-palace-arthur-death-rumor .window-light-adr {
  position: absolute; top: 10%; right: 15%; width: 80px; height: 100px;
  background: linear-gradient(135deg, rgba(255,200,100,0.3) 0%, rgba(255,200,100,0.1) 100%);
  border-radius: 10% 10% 20% 20% / 20% 20% 30% 30%;
  box-shadow: inset 0 0 40px rgba(255,200,100,0.2);
  animation: adr-window 15s ease-in-out infinite alternate;
}
@keyframes adr-window {
  0% { opacity: 0.6; transform: scale(1); }
  50% { opacity: 0.9; transform: scale(1.02); }
  100% { opacity: 0.6; transform: scale(1); }
}

/* === palace-messenger-france (tag: mfr) === */
.scn-palace-messenger-france {
  background:
    linear-gradient(180deg, #4a3a2a 0%, #6a4a3a 40%, #3a2a1a 100%),
    radial-gradient(ellipse at 30% 50%, #b08040 0%, transparent 60%);
}
.scn-palace-messenger-france .wall-mfr {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(180deg, #5a3a2a 0%, #4a2a1a 100%);
}
.scn-palace-messenger-france .doorway-mfr {
  position: absolute; bottom: 25%; left: 50%; width: 70px; height: 120px;
  transform: translateX(-50%);
  background: radial-gradient(ellipse at 50% 0%, #2a1a0a 0%, #1a0a0a 80%);
  border-radius: 50% 50% 10% 10% / 30% 30% 10% 10%;
  box-shadow: inset 0 0 30px rgba(0,0,0,0.8);
}
.scn-palace-messenger-france .messenger-mfr {
  position: absolute; bottom: 25%; left: 48%; width: 22px; height: 60px;
  background: linear-gradient(180deg, #6a4a3a 0%, #2a1a0a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  animation: mfr-run 4s ease-in-out infinite;
}
@keyframes mfr-run {
  0% { transform: translateX(0) translateY(0) rotate(-5deg); }
  25% { transform: translateX(8px) translateY(-3px) rotate(3deg); }
  50% { transform: translateX(16px) translateY(0) rotate(-5deg); }
  75% { transform: translateX(24px) translateY(-3px) rotate(3deg); }
  100% { transform: translateX(32px) translateY(0) rotate(0); }
}
.scn-palace-messenger-france .guard-left-mfr,
.scn-palace-messenger-france .guard-right-mfr {
  position: absolute; bottom: 20%; width: 25px; height: 65px;
  background: linear-gradient(180deg, #3a2a1a 30%, #1a0a0a 100%);
  border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%;
  animation: mfr-guard 6s ease-in-out infinite alternate;
}
@keyframes mfr-guard {
  0% { transform: rotate(0); }
  50% { transform: rotate(2deg); }
  100% { transform: rotate(0); }
}
.scn-palace-messenger-france .guard-left-mfr {
  left: 25%;
  animation-delay: 0s;
}
.scn-palace-messenger-france .guard-right-mfr {
  right: 25%;
  animation-delay: 2s;
}
.scn-palace-messenger-france .scroll-mfr {
  position: absolute; bottom: 40%; left: 55%; width: 16px; height: 10px;
  background: linear-gradient(135deg, #d0b080 0%, #a08060 100%);
  border-radius: 10% 10% 50% 50% / 30% 30% 70% 70%;
  box-shadow: 0 2px 4px rgba(0,0,0,0.4);
  animation: mfr-scroll 4s ease-in-out infinite alternate;
}
@keyframes mfr-scroll {
  0% { transform: translateY(0) rotate(0); opacity: 0.7; }
  50% { transform: translateY(-5px) rotate(10deg); opacity: 1; }
  100% { transform: translateY(0) rotate(0); opacity: 0.7; }
}
.scn-palace-messenger-france .lantern-mfr {
  position: absolute; bottom: 30%; left: 35%; width: 8px; height: 12px;
  background: radial-gradient(circle, #ffcc66 0%, #cc8844 100%);
  border-radius: 20% 20% 30% 30%;
  box-shadow: 0 0 20px 5px rgba(204,136,68,0.6);
  animation: mfr-lantern 3s ease-in-out infinite alternate;
}
@keyframes mfr-lantern {
  0% { box-shadow: 0 0 15px 3px rgba(204,136,68,0.4); transform: scale(1); }
  50% { box-shadow: 0 0 30px 8px rgba(204,136,68,0.7); transform: scale(1.05); }
  100% { box-shadow: 0 0 15px 3px rgba(204,136,68,0.4); transform: scale(1); }
}
.scn-palace-messenger-france .shadow-strip-mfr {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,0.5) 100%);
  animation: mfr-shadow 12s ease-in-out infinite alternate;
}
@keyframes mfr-shadow {
  0% { opacity: 0.5; }
  50% { opacity: 0.8; }
  100% { opacity: 0.5; }
}

/* === palace-bastard-prophet (tag: bpr) === */
.scn-palace-bastard-prophet {
  background:
    linear-gradient(180deg, #3a2a1a 0%, #5a3a2a 30%, #2a1a0a 100%),
    radial-gradient(ellipse at 60% 40%, #b08040 0%, transparent 50%);
}
.scn-palace-bastard-prophet .wall-bpr {
  position: absolute; inset: 0 0 20% 0;
  background: linear-gradient(180deg, #4a2a1a 0%, #3a1a0a 100%);
  border-bottom: 3px solid #2a0a00;
}
.scn-palace-bastard-prophet .desk-bpr {
  position: absolute; bottom: 20%; left: 50%; width: 120px; height: 40px;
  transform: translateX(-50%);
  background: linear-gradient(135deg, #6a4a2a 0%, #4a2a0a 100%);
  border-radius: 10% 10% 20% 20% / 20% 20% 30% 30%;
  box-shadow: 0 6px 12px rgba(0,0,0,0.6);
}
.scn-palace-bastard-prophet .bastard-bpr {
  position: absolute; bottom: 30%; left: 35%; width: 30px; height: 80px;
  background: linear-gradient(180deg, #2a1a0a 0%, #0a0000 100%);
  border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%;
  animation: bpr-bastard 8s ease-in-out infinite;
}
@keyframes bpr-bastard {
  0% { transform: translateY(0) rotate(-2deg); }
  50% { transform: translateY(-5px) rotate(2deg); }
  100% { transform: translateY(0) rotate(-2deg); }
}
.scn-palace-bastard-prophet .prophet-bpr {
  position: absolute; bottom: 18%; left: 55%; width: 26px; height: 60px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bpr-prophet 6s ease-in-out infinite alternate;
}
@keyframes bpr-prophet {
  0% { transform: rotate(-10deg) translateX(0); }
  50% { transform: rotate(0) translateX(3px); }
  100% { transform: rotate(10deg) translateX(0); }
}
.scn-palace-bastard-prophet .candle-bpr {
  position: absolute; bottom: 28%; left: 48%; width: 5px; height: 14px;
  background: linear-gradient(180deg, #ddbb66 0%, #bb9944 100%);
  border-radius: 50% 50% 10% 10%;
  box-shadow: 0 0 25px 6px rgba(200,150,80,0.5);
  animation: bpr-candle 3s ease-in-out infinite alternate;
}
@keyframes bpr-candle {
  0% { box-shadow: 0 0 20px 4px rgba(200,150,80,0.4); transform: scaleY(1); }
  50% { box-shadow: 0 0 35px 10px rgba(200,150,80,0.7); transform: scaleY(1.15); }
  100% { box-shadow: 0 0 20px 4px rgba(200,150,80,0.4); transform: scaleY(1); }
}
.scn-palace-bastard-prophet .shadow-pool-bpr {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: radial-gradient(ellipse at 50% 100%, rgba(0,0,0,0.6) 0%, transparent 70%);
  animation: bpr-shadowpool 14s ease-in-out infinite alternate;
}
@keyframes bpr-shadowpool {
  0% { opacity: 0.5; }
  50% { opacity: 0.8; }
  100% { opacity: 0.5; }
}
.scn-palace-bastard-prophet .curtain-bpr {
  position: absolute; top: 0; bottom: 0; width: 40px;
  background: linear-gradient(90deg, #5a1a1a 0%, #3a0a0a 100%);
  border-radius: 0 20% 20% 0 / 0 30% 30% 0;
  animation: bpr-curtain 12s ease-in-out infinite alternate;
}
.scn-palace-bastard-prophet .curtain-bpr.left {
  left: 0;
  transform-origin: left center;
}
.scn-palace-bastard-prophet .curtain-bpr.right {
  right: 0;
  transform-origin: right center;
  border-radius: 20% 0 0 20% / 30% 0 0 30%;
}
@keyframes bpr-curtain {
  0% { transform: scaleX(1); }
  50% { transform: scaleX(1.05); }
  100% { transform: scaleX(1); }
}

/* === palace-prophet-response (tag: pre) === */
.scn-palace-prophet-response {
  background:
    linear-gradient(180deg, #2a1a0a 0%, #4a2a1a 40%, #1a0a00 100%),
    radial-gradient(ellipse at 50% 60%, #804020 0%, transparent 50%);
}
.scn-palace-prophet-response .wall-pre {
  position: absolute; inset: 0 0 15% 0;
  background: linear-gradient(180deg, #3a1a0a 0%, #2a0a00 100%);
  border-bottom: 4px solid #1a0000;
}
.scn-palace-prophet-response .hubert-pre {
  position: absolute; bottom: 20%; left: 40%; width: 35px; height: 90px;
  background: linear-gradient(180deg, #2a1a0a 50%, #0a0000 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  animation: pre-hubert 10s ease-in-out infinite;
}
@keyframes pre-hubert {
  0% { transform: translateX(0) rotate(-2deg); }
  50% { transform: translateX(-3px) rotate(2deg); }
  100% { transform: translateX(0) rotate(-2deg); }
}
.scn-palace-prophet-response .prophet-pre {
  position: absolute; bottom: 16%; left: 55%; width: 24px; height: 55px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  animation: pre-prophet 5s ease-in-out infinite alternate;
}
@keyframes pre-prophet {
  0% { transform: translateX(0) translateY(0); }
  50% { transform: translateX(-4px) translateY(2px); }
  100% { transform: translateX(0) translateY(0); }
}
.scn-palace-prophet-response .guard-left-pre,
.scn-palace-prophet-response .guard-right-pre {
  position: absolute; bottom: 18%; width: 28px; height: 70px;
  background: linear-gradient(180deg, #3a2a1a 30%, #1a0a0a 100%);
  border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%;
  animation: pre-guard 7s ease-in-out infinite;
}
@keyframes pre-guard {
  0% { transform: translateY(0); }
  50% { transform: translateY(-3px); }
  100% { transform: translateY(0); }
}
.scn-palace-prophet-response .guard-left-pre {
  left: 32%;
  animation-delay: 0s;
}
.scn-palace-prophet-response .guard-right-pre {
  right: 28%;
  animation-delay: 3s;
}
.scn-palace-prophet-response .chains-pre {
  position: absolute; bottom: 20%; left: 55%; width: 20px; height: 30px;
  background: repeating-linear-gradient(
    90deg,
    #665544 0px, #665544 2px,
    transparent 2px, transparent 5px
  );
  border-radius: 10%;
  animation: pre-chains 4s ease-in-out infinite alternate;
}
@keyframes pre-chains {
  0% { transform: translateY(0) rotate(0); opacity: 0.7; }
  50% { transform: translateY(-2px) rotate(5deg); opacity: 1; }
  100% { transform: translateY(0) rotate(0); opacity: 0.7; }
}
.scn-palace-prophet-response .step-light-pre {
  position: absolute; bottom: 0; left: 0; right: 0; height: 15%;
  background: linear-gradient(180deg, rgba(80,40,20,0.3) 0%, transparent 100%);
  animation: pre-step 9s ease-in-out infinite alternate;
}
@keyframes pre-step {
  0% { opacity: 0.4; }
  50% { opacity: 0.7; }
  100% { opacity: 0.4; }
}
.scn-palace-prophet-response .shadow-cast-pre {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: radial-gradient(ellipse at 50% 100%, rgba(0,0,0,0.6) 0%, transparent 70%);
  animation: pre-shadowcast 12s ease-in-out infinite alternate;
}
@keyframes pre-shadowcast {
  0% { opacity: 0.5; }
  50% { opacity: 0.9; }
  100% { opacity: 0.5; }
}

/* palace-bastard-encouragement — bright interior, tense */
.scn-palace-bastard-encouragement {
  background:
    linear-gradient(180deg, #f5e6c8 0%, #c8b58a 40%, #8a7a5a 100%),
    radial-gradient(ellipse at 30% 30%, rgba(255,230,180,0.6) 0%, transparent 60%);
}
.scn-palace-bastard-encouragement .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 22%;
  background: linear-gradient(180deg, #6b5a40 0%, #4a3e2a 100%);
  border-top: 2px solid #a09070;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.3);
}
.scn-palace-bastard-encouragement .back-wall {
  position: absolute; top: 0; left: 0; right: 0; bottom: 22%;
  background: linear-gradient(180deg, #f0dab0 0%, #c8b58a 100%);
  box-shadow: inset 0 -8px 20px rgba(0,0,0,0.15);
}
.scn-palace-bastard-encouragement .pillar-l {
  position: absolute; bottom: 22%; left: 8%; width: 6%; height: 60%;
  background: linear-gradient(90deg, #a09070 0%, #d0c0a0 30%, #b0a080 70%, #7a6a4a 100%);
  border-radius: 8px; box-shadow: 2px 0 8px rgba(0,0,0,0.2);
  animation: pcb-pillar 14s ease-in-out infinite alternate;
}
.scn-palace-bastard-encouragement .pillar-r {
  position: absolute; bottom: 22%; right: 8%; width: 6%; height: 60%;
  background: linear-gradient(90deg, #7a6a4a 0%, #b0a080 30%, #d0c0a0 70%, #a09070 100%);
  border-radius: 8px; box-shadow: -2px 0 8px rgba(0,0,0,0.2);
  animation: pcb-pillar 14s ease-in-out infinite alternate;
}
@keyframes pcb-pillar {
  0% { filter: brightness(0.95); }
  50% { filter: brightness(1.05); }
  100% { filter: brightness(1); }
}
.scn-palace-bastard-encouragement .throne {
  position: absolute; bottom: 22%; left: 40%; width: 20%; height: 40%;
  background: linear-gradient(180deg, #8a3a2a 0%, #5a2616 40%, #3a1610 100%);
  border-radius: 8px 8px 4px 4px; box-shadow: 0 -6px 20px rgba(0,0,0,0.4);
  transform: translateY(0);
  animation: pcb-throne 8s ease-in-out infinite alternate;
}
@keyframes pcb-throne {
  0% { transform: translateY(0) scaleY(1); }
  50% { transform: translateY(-2px) scaleY(1.02); }
  100% { transform: translateY(0) scaleY(1); }
}
.scn-palace-bastard-encouragement .figure-king {
  position: absolute; bottom: 23%; left: 44%; width: 10%; height: 38%;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a120a 80%);
  border-radius: 40% 40% 20% 20% / 50% 50% 30% 30%;
  box-shadow: -4px 0 8px rgba(0,0,0,0.5);
  animation: pcb-king 3s ease-in-out infinite alternate;
}
@keyframes pcb-king {
  0% { transform: translateX(-1px) rotate(-2deg); }
  33% { transform: translateX(0) rotate(0deg); }
  66% { transform: translateX(1px) rotate(2deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
.scn-palace-bastard-encouragement .figure-bastard {
  position: absolute; bottom: 23%; right: 28%; width: 8%; height: 34%;
  background: linear-gradient(180deg, #2a2010 0%, #0a0804 100%);
  border-radius: 50% 40% 30% 30% / 60% 50% 30% 30%;
  transform-origin: bottom center;
  animation: pcb-bastard 6s ease-in-out infinite;
}
@keyframes pcb-bastard {
  0% { transform: translateX(0) rotate(0deg); }
  25% { transform: translateX(3px) rotate(3deg); }
  50% { transform: translateX(0) rotate(0deg); }
  75% { transform: translateX(-3px) rotate(-3deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
.scn-palace-bastard-encouragement .light-rays {
  position: absolute; top: 0; left: 30%; width: 40%; height: 100%;
  background: linear-gradient(180deg, rgba(255,240,200,0.3) 0%, transparent 80%);
  clip-path: polygon(0% 0%, 100% 0%, 80% 100%, 20% 100%);
  animation: pcb-rays 5s ease-in-out infinite alternate;
}
@keyframes pcb-rays {
  0% { opacity: 0.4; filter: brightness(1); }
  50% { opacity: 0.6; filter: brightness(1.1); }
  100% { opacity: 0.5; filter: brightness(0.9); }
}
.scn-palace-bastard-encouragement .shadow-stripes {
  position: absolute; top: 0; left: 0; right: 0; height: 100%;
  background: repeating-linear-gradient(135deg, rgba(0,0,0,0.06) 0px, rgba(0,0,0,0.06) 12px, transparent 12px, transparent 24px);
  animation: pcb-stripes 12s linear infinite;
}
@keyframes pcb-stripes {
  0% { background-position: 0 0; }
  100% { background-position: 100px 100px; }
}

/* palace-peace-rejected — bright interior, tense */
.scn-palace-peace-rejected {
  background:
    linear-gradient(180deg, #e8dcc8 0%, #c8b89a 35%, #9a8a6a 100%),
    radial-gradient(ellipse at 70% 30%, rgba(255,220,180,0.4) 0%, transparent 60%);
}
.scn-palace-peace-rejected .table {
  position: absolute; bottom: 18%; left: 25%; width: 50%; height: 6%;
  background: linear-gradient(180deg, #6a5a3a 0%, #4a3a1a 100%);
  border-radius: 4px; box-shadow: 0 4px 10px rgba(0,0,0,0.4);
  transform: perspective(400px) rotateX(20deg);
  animation: ppr-table 10s ease-in-out infinite alternate;
}
@keyframes ppr-table {
  0% { transform: perspective(400px) rotateX(20deg) translateY(0); }
  50% { transform: perspective(400px) rotateX(18deg) translateY(-1px); }
  100% { transform: perspective(400px) rotateX(20deg) translateY(0); }
}
.scn-palace-peace-rejected .chair-left {
  position: absolute; bottom: 18%; left: 22%; width: 10%; height: 28%;
  background: linear-gradient(180deg, #5a4a2a 0%, #3a2a10 100%);
  border-radius: 4px; box-shadow: -2px 0 6px rgba(0,0,0,0.3);
  animation: ppr-chair 14s ease-in-out infinite alternate;
}
.scn-palace-peace-rejected .chair-right {
  position: absolute; bottom: 18%; right: 22%; width: 10%; height: 28%;
  background: linear-gradient(180deg, #5a4a2a 0%, #3a2a10 100%);
  border-radius: 4px; box-shadow: 2px 0 6px rgba(0,0,0,0.3);
  animation: ppr-chair 14s ease-in-out infinite alternate-reverse;
}
@keyframes ppr-chair {
  0% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-2px) rotate(1deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
.scn-palace-peace-rejected .scroll {
  position: absolute; bottom: 25%; left: 46%; width: 8%; height: 10%;
  background: #f0e0c0;
  border-radius: 2px; box-shadow: 0 2px 6px rgba(0,0,0,0.3);
  transform: rotate(-5deg);
  animation: ppr-scroll 7s ease-in-out infinite alternate;
}
@keyframes ppr-scroll {
  0% { transform: rotate(-5deg) scaleX(1); }
  50% { transform: rotate(2deg) scaleX(1.05); }
  100% { transform: rotate(-5deg) scaleX(1); }
}
.scn-palace-peace-rejected .figure-legat {
  position: absolute; bottom: 18%; left: 28%; width: 8%; height: 36%;
  background: linear-gradient(180deg, #702243 0%, #3a121a 100%);
  border-radius: 40% 40% 20% 20% / 50% 50% 30% 30%;
  box-shadow: 2px 0 10px rgba(0,0,0,0.4);
  animation: ppr-legat 5s ease-in-out infinite alternate;
}
@keyframes ppr-legat {
  0% { transform: translateX(0) rotate(2deg); }
  25% { transform: translateX(1px) rotate(0deg); }
  50% { transform: translateX(2px) rotate(-2deg); }
  75% { transform: translateX(1px) rotate(0deg); }
  100% { transform: translateX(0) rotate(2deg); }
}
.scn-palace-peace-rejected .figure-king2 {
  position: absolute; bottom: 18%; right: 30%; width: 9%; height: 38%;
  background: linear-gradient(180deg, #1a120a 0%, #0a0804 100%);
  border-radius: 45% 40% 20% 20% / 55% 50% 25% 25%;
  box-shadow: -2px 0 10px rgba(0,0,0,0.5);
  animation: ppr-king 4s ease-in-out infinite alternate;
}
@keyframes ppr-king {
  0% { transform: translateX(0) rotate(-2deg); }
  50% { transform: translateX(-1px) rotate(2deg); }
  100% { transform: translateX(0) rotate(-2deg); }
}
.scn-palace-peace-rejected .candle {
  position: absolute; bottom: 30%; left: 50%; width: 2%; height: 8%;
  background: linear-gradient(180deg, #f0d080 0%, #c8a050 100%);
  border-radius: 2px; transform: translateX(-50%);
  box-shadow: 0 0 8px #d0b060;
  animation: ppr-candle 3s ease-in-out infinite alternate;
}
@keyframes ppr-candle {
  0% { opacity: 0.8; filter: brightness(0.9); }
  50% { opacity: 1; filter: brightness(1.1); }
  100% { opacity: 0.9; filter: brightness(1); }
}
.scn-palace-peace-rejected .candle-glow {
  position: absolute; bottom: 30%; left: 48%; width: 6%; height: 12%;
  background: radial-gradient(ellipse, rgba(255,220,120,0.5) 0%, transparent 70%);
  border-radius: 50%; animation: ppr-glow 3s ease-in-out infinite alternate;
}
@keyframes ppr-glow {
  0% { opacity: 0.3; filter: blur(4px); }
  50% { opacity: 0.5; filter: blur(8px); }
  100% { opacity: 0.4; filter: blur(6px); }
}

/* camp-lewis-speech — overcast, tense */
.scn-camp-lewis-speech {
  background:
    linear-gradient(180deg, #6a7a7a 0%, #4a5a5a 40%, #2a3a3a 100%),
    radial-gradient(ellipse at 40% 20%, rgba(100,120,120,0.3) 0%, transparent 70%);
}
.scn-camp-lewis-speech .tent-bg {
  position: absolute; top: 10%; left: 15%; width: 70%; height: 60%;
  background: linear-gradient(135deg, #5a6a5a 0%, #3a4a3a 100%);
  clip-path: polygon(20% 0%, 80% 0%, 100% 80%, 50% 100%, 0% 80%);
  box-shadow: inset 0 -10px 30px rgba(0,0,0,0.4);
}
.scn-camp-lewis-speech .tent-pole {
  position: absolute; top: 5%; left: 50%; width: 1.5%; height: 70%;
  background: #4a3a2a; transform: translateX(-50%);
  box-shadow: 0 0 6px rgba(0,0,0,0.3);
}
.scn-camp-lewis-speech .flag-1 {
  position: absolute; top: 16%; left: 18%; width: 8%; height: 12%;
  background: #b87878;
  border-radius: 2px; box-shadow: 0 2px 6px rgba(0,0,0,0.3);
  animation: cls-flag 6s ease-in-out infinite alternate;
}
.scn-camp-lewis-speech .flag-2 {
  position: absolute; top: 18%; right: 20%; width: 6%; height: 10%;
  background: #a0461a;
  border-radius: 2px; box-shadow: 0 2px 6px rgba(0,0,0,0.3);
  animation: cls-flag 6s ease-in-out infinite alternate-reverse;
}
@keyframes cls-flag {
  0% { transform: rotate(-5deg); }
  50% { transform: rotate(5deg); }
  100% { transform: rotate(-5deg); }
}
.scn-camp-lewis-speech .soldier-a {
  position: absolute; bottom: 12%; left: 30%; width: 7%; height: 30%;
  background: linear-gradient(180deg, #3a4a3a 0%, #1a2a1a 100%);
  border-radius: 30% 30% 15% 15% / 50% 50% 30% 30%;
  box-shadow: 2px 0 8px rgba(0,0,0,0.5);
  animation: cls-soldier 4s ease-in-out infinite alternate;
}
.scn-camp-lewis-speech .soldier-b {
  position: absolute; bottom: 12%; right: 28%; width: 7%; height: 30%;
  background: linear-gradient(180deg, #2a3a1a 0%, #0a1a0a 100%);
  border-radius: 30% 30% 15% 15% / 50% 50% 30% 30%;
  box-shadow: -2px 0 8px rgba(0,0,0,0.5);
  animation: cls-soldier 5s ease-in-out infinite alternate-reverse;
}
@keyframes cls-soldier {
  0% { transform: translateY(0) rotate(-2deg); }
  33% { transform: translateY(-1px) rotate(0deg); }
  66% { transform: translateY(0) rotate(2deg); }
  100% { transform: translateY(-1px) rotate(0deg); }
}
.scn-camp-lewis-speech .armor-rack {
  position: absolute; bottom: 12%; left: 10%; width: 6%; height: 24%;
  background: linear-gradient(180deg, #5a6a5a 0%, #3a4a3a 100%);
  border-radius: 4px; box-shadow: 0 2px 6px rgba(0,0,0,0.3);
  transform: scaleX(0.8);
}
.scn-camp-lewis-speech .campfire {
  position: absolute; bottom: 16%; left: 50%; width: 8%; height: 8%;
  background: radial-gradient(circle, #c8553d 0%, #8a301a 50%, #2a1008 100%);
  border-radius: 50%;
  transform: translateX(-50%);
  box-shadow: 0 0 30px #c8553d, 0 0 60px rgba(200,85,61,0.3);
  animation: cls-fire 2s ease-in-out infinite alternate;
}
@keyframes cls-fire {
  0% { transform: translateX(-50%) scale(1); filter: brightness(0.9); }
  50% { transform: translateX(-50%) scale(1.1); filter: brightness(1.2); }
  100% { transform: translateX(-50%) scale(0.95); filter: brightness(1); }
}
.scn-camp-lewis-speech .smoke {
  position: absolute; bottom: 22%; left: 48%; width: 8%; height: 20%;
  background: linear-gradient(180deg, rgba(180,180,180,0.2) 0%, transparent 100%);
  filter: blur(10px);
  animation: cls-smoke 20s linear infinite;
}
@keyframes cls-smoke {
  0% { transform: translate(0, 0) scale(1); opacity: 0.5; }
  50% { transform: translate(-10px, -20px) scale(1.5); opacity: 0.2; }
  100% { transform: translate(-20px, -40px) scale(2); opacity: 0; }
}

/* camp-lewis-comfort — overcast, warm */
.scn-camp-lewis-comfort {
  background:
    linear-gradient(180deg, #7a7a5a 0%, #5a5a3a 40%, #3a3a1a 100%),
    radial-gradient(ellipse at 50% 60%, rgba(160,140,80,0.3) 0%, transparent 70%);
}
.scn-camp-lewis-comfort .ground-mid {
  position: absolute; bottom: 20%; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #4a4a2a 0%, #2a2a10 100%);
  border-radius: 30% 30% 0 0 / 60% 60% 0 0;
}
.scn-camp-lewis-comfort .ground-fore {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #3a3a1a 0%, #1a1a0a 100%);
}
.scn-camp-lewis-comfort .figure-melun {
  position: absolute; bottom: 20%; left: 32%; width: 8%; height: 34%;
  background: linear-gradient(180deg, #2a1a0a 0%, #0a0804 100%);
  border-radius: 40% 40% 20% 20% / 50% 50% 30% 30%;
  box-shadow: -2px 0 10px rgba(0,0,0,0.5);
  animation: clc-melun 7s ease-in-out infinite alternate;
}
@keyframes clc-melun {
  0% { transform: translateX(0) rotate(2deg); }
  50% { transform: translateX(3px) rotate(-1deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
.scn-camp-lewis-comfort .figure-lewis {
  position: absolute; bottom: 20%; right: 30%; width: 9%; height: 36%;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a120a 100%);
  border-radius: 45% 40% 20% 20% / 55% 50% 25% 25%;
  box-shadow: 2px 0 10px rgba(0,0,0,0.5);
  animation: clc-lewis 8s ease-in-out infinite alternate;
}
@keyframes clc-lewis {
  0% { transform: translateX(0) rotate(-2deg); }
  50% { transform: translateX(-2px) rotate(3deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
.scn-camp-lewis-comfort .lantern-pole {
  position: absolute; bottom: 20%; left: 50%; width: 1.2%; height: 50%;
  background: #4a3a2a; transform: translateX(-50%); box-shadow: 0 0 4px rgba(0,0,0,0.3);
}
.scn-camp-lewis-comfort .lantern {
  position: absolute; bottom: 58%; left: 49.5%; width: 3%; height: 5%;
  background: radial-gradient(circle, #f0d080 0%, #d0a050 60%, #8a6a2a 100%);
  border-radius: 50%; box-shadow: 0 0 30px #f0d080, 0 0 60px rgba(240,208,128,0.3);
  animation: clc-lantern 3s ease-in-out infinite alternate;
}
@keyframes clc-lantern {
  0% { filter: brightness(0.8); transform: translateX(-50%) scale(1); }
  50% { filter: brightness(1.2); transform: translateX(-50%) scale(1.05); }
  100% { filter: brightness(1); transform: translateX(-50%) scale(1); }
}
.scn-camp-lewis-comfort .cloak {
  position: absolute; bottom: 22%; right: 26%; width: 12%; height: 20%;
  background: linear-gradient(180deg, #8a5a3a 0%, #5a301a 100%);
  border-radius: 50% 20% 0 0; box-shadow: 0 4px 12px rgba(0,0,0,0.4);
  transform: rotate(-10deg); animation: clc-cloak 12s ease-in-out infinite alternate;
}
@keyframes clc-cloak {
  0% { transform: rotate(-10deg) translateY(0); }
  50% { transform: rotate(-8deg) translateY(-2px); }
  100% { transform: rotate(-10deg) translateY(0); }
}
.scn-camp-lewis-comfort .tear-glow {
  position: absolute; bottom: 36%; right: 34%; width: 2%; height: 4%;
  background: radial-gradient(circle, rgba(200,200,255,0.8) 0%, transparent 100%);
  border-radius: 50%;
  animation: clc-tear 6s ease-in-out infinite;
}
@keyframes clc-tear {
  0% { opacity: 0.3; transform: translateY(0); }
  33% { opacity: 0.6; transform: translateY(-2px); }
  66% { opacity: 0.8; transform: translateY(2px); }
  100% { opacity: 0.3; transform: translateY(0); }
}

/* palace-double-crowning */
.scn-palace-double-crowning { background: linear-gradient(180deg, #d9b882 0%, #c49a5e 50%, #a67c3c 100%), radial-gradient(ellipse at 70% 30%, #f0d6a0 0%, transparent 60%); }
.scn-palace-double-crowning .bg-warm { position:absolute; inset:0; background: linear-gradient(135deg, #e8d5b0 0%, #c4a87a 100%); }
.scn-palace-double-crowning .arch { position:absolute; top:8%; left:20%; right:20%; height:45%; background: radial-gradient(ellipse at 50% 100%, #d4b088 0%, #b89660 80%); border-radius: 50% / 60% 60% 20% 20%; box-shadow: inset 0 -8px 20px rgba(120,80,40,.4); transform: scaleX(1.2); animation: pdc-arch 14s ease-in-out infinite; }
.scn-palace-double-crowning .throne { position:absolute; bottom:20%; left:50%; width:60px; height:80px; transform:translateX(-50%); background: linear-gradient(180deg, #806040 0%, #503020 100%); border-radius: 20% 20% 10% 10%; box-shadow: 0 4px 8px rgba(0,0,0,.3); animation: pdc-throne 8s ease-in-out infinite; }
.scn-palace-double-crowning .figure-left { position:absolute; bottom:22%; left:38%; width:20px; height:60px; background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 70% 60% 40% 30%; transform-origin: bottom center; animation: pdc-fig-sway 6s ease-in-out infinite; }
.scn-palace-double-crowning .figure-right { position:absolute; bottom:22%; right:38%; width:20px; height:60px; background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 70% 60% 40% 30%; transform-origin: bottom center; animation: pdc-fig-sway 6s ease-in-out infinite reverse; }
.scn-palace-double-crowning .crown-left { position:absolute; bottom:68%; left:38%; width:14px; height:8px; margin-left:-7px; background: linear-gradient(180deg, #f0d080 0%, #c09050 100%); border-radius: 50% 50% 0 0; clip-path: polygon(0 100%, 25% 20%, 50% 0%, 75% 20%, 100% 100%); animation: pdc-crown-glow 4s ease-in-out infinite alternate; }
.scn-palace-double-crowning .crown-right { position:absolute; bottom:68%; right:38%; width:14px; height:8px; margin-right:-7px; background: linear-gradient(180deg, #f0d080 0%, #c09050 100%); border-radius: 50% 50% 0 0; clip-path: polygon(0 100%, 25% 20%, 50% 0%, 75% 20%, 100% 100%); animation: pdc-crown-glow 4s ease-in-out infinite alternate; animation-delay: 2s; }
.scn-palace-double-crowning .window-glow { position:absolute; top:12%; left:30%; width:40px; height:50px; background: radial-gradient(circle, #fbe8b0 0%, #d4a060 70%); border-radius: 30% / 40% 40% 20% 20%; box-shadow: 0 0 30px 10px #e8b870, 0 0 60px 20px rgba(232,184,112,.3); animation: pdc-window 5s ease-in-out infinite alternate; }
@keyframes pdc-arch { 0%,100% { transform: scaleX(1.2) translateY(0); } 50% { transform: scaleX(1.18) translateY(-2px); } }
@keyframes pdc-throne { 0%,100% { transform: translateX(-50%) translateY(0); } 50% { transform: translateX(-50%) translateY(-3px); } }
@keyframes pdc-fig-sway { 0% { transform: rotate(-2deg) translateY(0); } 25% { transform: rotate(0deg) translateY(-2px); } 50% { transform: rotate(2deg) translateY(0); } 75% { transform: rotate(0deg) translateY(-1px); } 100% { transform: rotate(-2deg) translateY(0); } }
@keyframes pdc-crown-glow { 0% { opacity:.8; transform: scale(1); } 50% { opacity:1; transform: scale(1.05) rotate(5deg); } 100% { opacity:.85; transform: scale(1) rotate(0); } }
@keyframes pdc-window { 0% { box-shadow: 0 0 20px 8px #d4a060; opacity:.85; } 50% { box-shadow: 0 0 40px 15px #f0c880; opacity:1; } 100% { box-shadow: 0 0 25px 10px #d4a060; opacity:.9; } }

/* palace-workmen-analogy */
.scn-palace-workmen-analogy { background: linear-gradient(180deg, #d4c4a0 0%, #b8a488 50%, #9c8870 100%), radial-gradient(ellipse at 50% 80%, #c8b898 0%, transparent 60%); }
.scn-palace-workmen-analogy .bg-workshop { position:absolute; inset:0; background: linear-gradient(180deg, #e0d0b8 0%, #c0b0a0 100%); }
.scn-palace-workmen-analogy .bench { position:absolute; bottom:20%; left:10%; right:10%; height:10%; background: linear-gradient(180deg, #a08068 0%, #806050 100%); border-radius: 4% 4% 0 0; box-shadow: 0 -2px 4px rgba(0,0,0,.3); }
.scn-palace-workmen-analogy .figure-left { position:absolute; bottom:20%; left:15%; width:30px; height:55px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 40% 40% 30% 30% / 60% 50% 40% 40%; transform-origin: bottom; animation: pwa-fig-left 3s ease-in-out infinite; }
.scn-palace-workmen-analogy .figure-right { position:absolute; bottom:20%; right:20%; width:28px; height:50px; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 40% 40% 30% 30% / 60% 50% 40% 40%; transform-origin: bottom; animation: pwa-fig-right 4s ease-in-out infinite; }
.scn-palace-workmen-analogy .hammer { position:absolute; bottom:35%; left:28%; width:6px; height:20px; background: #6a5a4a; border-radius: 20% 20% 0 0; transform-origin: 50% 100%; animation: pwa-hammer 2s ease-in-out infinite; }
.scn-palace-workmen-analogy .hammer::after { content:''; position:absolute; top:-8px; left:-4px; width:14px; height:10px; background: #806050; border-radius: 30% 30% 40% 40%; }
.scn-palace-workmen-analogy .patch { position:absolute; bottom:30%; left:60%; width:22px; height:18px; background: linear-gradient(135deg, #b09880 0%, #907868 100%); border-radius: 10% 10% 20% 20%; border: 1px solid #7a6a5a; animation: pwa-patch 8s ease-in-out infinite; }
.scn-palace-workmen-analogy .lantern { position:absolute; top:30%; left:40%; width:10px; height:14px; background: #c8a880; border-radius: 20% 20% 10% 10%; box-shadow: 0 0 12px 4px #d4b890; animation: pwa-lantern 5s ease-in-out infinite alternate; }
@keyframes pwa-fig-left { 0%,100% { transform: rotate(-3deg); } 25% { transform: rotate(0deg) translateY(-2px); } 50% { transform: rotate(3deg); } 75% { transform: rotate(0deg) translateY(0); } }
@keyframes pwa-fig-right { 0%,100% { transform: rotate(2deg) translateY(0); } 30% { transform: rotate(-1deg) translateY(-3px); } 60% { transform: rotate(1deg) translateY(0); } 100% { transform: rotate(2deg) translateY(0); } }
@keyframes pwa-hammer { 0% { transform: rotate(-30deg); } 25% { transform: rotate(0deg); } 50% { transform: rotate(30deg); } 75% { transform: rotate(0deg); } 100% { transform: rotate(-30deg); } }
@keyframes pwa-patch { 0%,100% { transform: scale(1); opacity:.9; } 50% { transform: scale(1.02); opacity:1; } }
@keyframes pwa-lantern { 0% { box-shadow: 0 0 8px 2px #b09878; transform: scaleY(1); } 50% { box-shadow: 0 0 16px 6px #d4b890; transform: scaleY(1.05); } 100% { box-shadow: 0 0 10px 3px #b09878; transform: scaleY(1); } }

/* palace-arthur-request */
.scn-palace-arthur-request { background: linear-gradient(180deg, #c8b898 0%, #a89070 50%, #8a7050 100%), radial-gradient(ellipse at 50% 40%, #e0c8a0 0%, transparent 60%); }
.scn-palace-arthur-request .bg-throne { position:absolute; inset:0; background: linear-gradient(180deg, #d4c4a8 0%, #bca88c 100%); }
.scn-palace-arthur-request .throne { position:absolute; bottom:25%; left:20%; width:70px; height:90px; background: linear-gradient(180deg, #705840 0%, #4a3828 100%); border-radius: 15% 15% 8% 8%; box-shadow: 6px 0 12px rgba(0,0,0,.4); transform: rotate(2deg); animation: par-throne 5s ease-in-out infinite; }
.scn-palace-arthur-request .king { position:absolute; bottom:28%; left:20%; width:25px; height:70px; background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom; animation: par-king 7s ease-in-out infinite; }
.scn-palace-arthur-request .kneeling { position:absolute; bottom:22%; right:35%; width:20px; height:40px; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 50% 50% 40% 40% / 70% 50% 40% 30%; transform: rotate(15deg); transform-origin: bottom; animation: par-kneel 4s ease-in-out infinite; }
.scn-palace-arthur-request .guard { position:absolute; bottom:25%; right:15%; width:22px; height:65px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 40% 40% 30% 30% / 60% 50% 40% 40%; animation: par-guard 8s ease-in-out infinite; }
.scn-palace-arthur-request .floor-glow { position:absolute; bottom:12%; left:10%; right:10%; height:10%; background: radial-gradient(ellipse at 50% 100%, #e0c090 0%, transparent 80%); opacity: .6; animation: par-floor 6s ease-in-out infinite alternate; }
.scn-palace-arthur-request .ray { position:absolute; top:0%; left:35%; width:8%; height:100%; background: linear-gradient(180deg, rgba(240,220,160,.4) 0%, rgba(240,220,160,.1) 80%, transparent 100%); clip-path: polygon(0 0, 100% 0, 70% 100%, 30% 100%); animation: par-ray 10s ease-in-out infinite alternate; }
@keyframes par-throne { 0%,100% { transform: rotate(2deg) translateY(0); } 50% { transform: rotate(1.5deg) translateY(-2px); } }
@keyframes par-king { 0%,100% { transform: rotate(0) translateY(0); } 30% { transform: rotate(-2deg) translateY(-2px); } 60% { transform: rotate(1deg) translateY(0); } 100% { transform: rotate(0) translateY(0); } }
@keyframes par-kneel { 0% { transform: rotate(15deg) translateY(0); } 25% { transform: rotate(13deg) translateY(-3px); } 50% { transform: rotate(17deg) translateY(0); } 75% { transform: rotate(14deg) translateY(-1px); } 100% { transform: rotate(15deg) translateY(0); } }
@keyframes par-guard { 0%,100% { transform: translateX(0); } 50% { transform: translateX(3px); } }
@keyframes par-floor { 0% { opacity:.4; } 50% { opacity:.7; } 100% { opacity:.5; } }
@keyframes par-ray { 0% { opacity:.6; transform: scaleX(1); } 50% { opacity:1; transform: scaleX(1.05); } 100% { opacity:.7; transform: scaleX(0.95); } }

/* palace-hubert-arrival */
.scn-palace-hubert-arrival { background: linear-gradient(180deg, #c0b098 0%, #a08868 50%, #7a6040 100%), radial-gradient(ellipse at 80% 40%, #d4bc9c 0%, transparent 60%); }
.scn-palace-hubert-arrival .bg-hall { position:absolute; inset:0; background: linear-gradient(180deg, #d0c0a8 0%, #b09878 100%); }
.scn-palace-hubert-arrival .door-arch { position:absolute; top:0; left:30%; right:30%; height:70%; background: radial-gradient(ellipse at 50% 100%, #9a7a5a 0%, #6a4a2a 70%); border-radius: 50% / 60% 60% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,.3); animation: pha-arch 9s ease-in-out infinite; }
.scn-palace-hubert-arrival .hubert { position:absolute; bottom:18%; left:40%; width:22px; height:65px; background: linear-gradient(180deg, #2a1a0a 0%, #0a0000 100%); border-radius: 40% 40% 30% 30% / 60% 50% 40% 40%; transform: translateX(-20px); animation: pha-hubert 4s ease-in-out infinite; }
.scn-palace-hubert-arrival .noble { position:absolute; bottom:20%; right:25%; width:24px; height:70px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom; animation: pha-noble 6s ease-in-out infinite; }
.scn-palace-hubert-arrival .door-shadow { position:absolute; bottom:0; left:30%; right:30%; height:30%; background: linear-gradient(180deg, rgba(40,30,20,.5) 0%, transparent 100%); clip-path: polygon(0 0, 100% 0, 80% 100%, 20% 100%); animation: pha-shadow 7s ease-in-out infinite alternate; }
.scn-palace-hubert-arrival .floor { position:absolute; bottom:0; left:0; right:0; height:15%; background: linear-gradient(180deg, #806850 0%, #5a4838 100%); border-radius: 20% 20% 0 0; }
.scn-palace-hubert-arrival .candle { position:absolute; top:20%; left:55%; width:6px; height:10px; background: linear-gradient(180deg, #f0c860 0%, #c09040 100%); border-radius: 20% 20% 0 0; box-shadow: 0 0 10px 3px #e8b860, 0 0 20px 6px rgba(232,184,96,.3); animation: pha-candle 3s ease-in-out infinite alternate; }
@keyframes pha-arch { 0%,100% { transform: scaleY(1); opacity:.9; } 50% { transform: scaleY(1.02); opacity:1; } }
@keyframes pha-hubert { 0% { transform: translateX(-20px) rotate(0); } 25% { transform: translateX(0) rotate(3deg); } 50% { transform: translateX(-5px) rotate(-2deg); } 75% { transform: translateX(2px) rotate(1deg); } 100% { transform: translateX(-20px) rotate(0); } }
@keyframes pha-noble { 0%,100% { transform: rotate(0) translateY(0); } 30% { transform: rotate(-5deg) translateY(-4px); } 60% { transform: rotate(3deg) translateY(0); } 100% { transform: rotate(0) translateY(0); } }
@keyframes pha-shadow { 0% { opacity:.3; transform: scaleX(1); } 50% { opacity:.6; transform: scaleX(1.05); } 100% { opacity:.4; transform: scaleX(0.95); } }
@keyframes pha-candle { 0% { box-shadow: 0 0 8px 2px #d4a850; transform: scaleY(1); } 50% { box-shadow: 0 0 18px 6px #f0c860; transform: scaleY(1.08); } 100% { box-shadow: 0 0 10px 3px #d4a850; transform: scaleY(1); } }

.scn-king-arrives-orchard {
  background: linear-gradient(180deg, #dbc5a0 0%, #b89b7a 40%, #7a5c3a 100%),
              radial-gradient(ellipse at 60% 20%, rgba(255, 235, 180, 0.3) 0%, transparent 60%);
}
.scn-king-arrives-orchard .sky {
  position: absolute;
  inset: 0 0 55% 0;
  background: linear-gradient(180deg, #d4c8a8 0%, #f0e6cc 30%, transparent 100%);
  animation: kao-sky 14s ease-in-out infinite alternate;
}
.scn-king-arrives-orchard .orchard-tree {
  position: absolute;
  bottom: 40%;
  width: 60px;
  height: 140px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1f12 100%);
  border-radius: 30% 30% 10% 10%;
  box-shadow: inset -8px 0 12px rgba(0,0,0,0.3);
}
.scn-king-arrives-orchard .orchard-tree.left {
  left: 5%;
  transform: skewY(3deg);
  animation: kao-sway 10s ease-in-out infinite;
}
.scn-king-arrives-orchard .orchard-tree.right {
  right: 5%;
  transform: skewY(-3deg);
  animation: kao-sway 12s ease-in-out infinite reverse;
}
.scn-king-arrives-orchard .path {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 45%;
  background: linear-gradient(0deg, #8c6f50 0%, #b3946a 60%, #c8a77e 100%);
  border-radius: 40% 60% 0 0 / 30% 40% 0 0;
  box-shadow: inset 0 20px 30px rgba(0,0,0,0.2);
}
.scn-king-arrives-orchard .chair {
  position: absolute;
  bottom: 18%;
  left: 45%;
  width: 80px;
  height: 90px;
  background: linear-gradient(135deg, #5a3f28 0%, #3f2b18 60%, #2a1a0a 100%);
  border-radius: 10% 10% 20% 20%;
  box-shadow: 8px 10px 20px rgba(0,0,0,0.5);
  animation: kao-chair 6s ease-in-out infinite;
}
.scn-king-arrives-orchard .figure {
  position: absolute;
  bottom: 8%;
  width: 28px;
  height: 70px;
  background: linear-gradient(180deg, #3a3028 0%, #1e1610 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%;
  animation: kao-walk 8s ease-in-out infinite;
}
.scn-king-arrives-orchard .figure.attendant-a {
  left: 30%;
  transform: scale(0.95);
  animation-delay: -2s;
}
.scn-king-arrives-orchard .figure.attendant-b {
  right: 30%;
  transform: scale(1.05);
  animation-delay: -4s;
}
.scn-king-arrives-orchard .king {
  position: absolute;
  bottom: 28%;
  left: 47%;
  width: 40px;
  height: 50px;
  background: linear-gradient(180deg, #4a2e1a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  transform: rotate(5deg);
  animation: kao-king 6s ease-in-out infinite;
}
@keyframes kao-sky {
  0% { opacity: 0.7; }
  50% { opacity: 0.9; }
  100% { opacity: 0.75; }
}
@keyframes kao-sway {
  0%, 100% { transform: skewY(3deg) rotate(0deg); }
  50% { transform: skewY(2deg) rotate(2deg); }
}
@keyframes kao-chair {
  0%, 100% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-4px) rotate(-1deg); }
}
@keyframes kao-walk {
  0% { transform: translateX(-5px) translateY(0) rotate(-2deg); }
  25% { transform: translateX(0) translateY(-3px) rotate(0deg); }
  50% { transform: translateX(5px) translateY(0) rotate(2deg); }
  75% { transform: translateX(0) translateY(-2px) rotate(0deg); }
  100% { transform: translateX(-5px) translateY(0) rotate(-2deg); }
}
@keyframes kao-king {
  0%, 100% { transform: rotate(5deg) translateY(0); }
  50% { transform: rotate(3deg) translateY(-3px); }
}

.scn-king-suffering {
  background: linear-gradient(180deg, #1f1a2a 0%, #3a2e3a 40%, #5a4e4a 100%),
              radial-gradient(ellipse at 70% 30%, rgba(200, 180, 150, 0.15) 0%, transparent 70%);
}
.scn-king-suffering .wall {
  position: absolute;
  inset: 0 0 30% 0;
  background: linear-gradient(270deg, #4a3e3a 0%, #3a2e2a 20%, #2a1e1a 100%);
  box-shadow: inset 0 20px 40px rgba(0,0,0,0.4);
}
.scn-king-suffering .window {
  position: absolute;
  top: 15%;
  right: 15%;
  width: 70px;
  height: 100px;
  background: linear-gradient(135deg, #f0e0c0 0%, #d8c4a0 60%, #b09870 100%);
  border: 6px solid #3a2a1a;
  border-radius: 4px;
  box-shadow: inset 0 0 30px rgba(255, 230, 180, 0.6), 0 0 50px rgba(255, 200, 140, 0.3);
  animation: ks-window 8s ease-in-out infinite alternate;
}
.scn-king-suffering .bed {
  position: absolute;
  bottom: 0;
  left: 5%;
  right: 5%;
  height: 40%;
  background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%);
  border-radius: 30% 30% 0 0 / 50% 50% 0 0;
  box-shadow: inset 0 20px 30px rgba(0,0,0,0.6);
}
.scn-king-suffering .king-body {
  position: absolute;
  bottom: 18%;
  left: 40%;
  width: 100px;
  height: 60px;
  background: linear-gradient(135deg, #4a3a2a 0%, #2a1a10 60%, #1a0e06 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform: rotate(-5deg);
  animation: ks-writhe 4s ease-in-out infinite;
}
.scn-king-suffering .hand {
  position: absolute;
  bottom: 15%;
  left: 55%;
  width: 25px;
  height: 35px;
  background: linear-gradient(180deg, #4a3828 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 40% 40% 60% 60%;
  transform: rotate(20deg);
  animation: ks-clutch 3s ease-in-out infinite;
}
.scn-king-suffering .goblet {
  position: absolute;
  bottom: 25%;
  right: 20%;
  width: 20px;
  height: 30px;
  background: linear-gradient(180deg, #8a6a3a 0%, #5a4220 100%);
  border-radius: 10% 10% 30% 30%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.5);
  animation: ks-goblet 6s ease-in-out infinite alternate;
}
.scn-king-suffering .shadow {
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse at 70% 50%, transparent 40%, rgba(10,5,0,0.5) 100%);
  animation: ks-shadow 10s ease-in-out infinite alternate;
}
@keyframes ks-window {
  0% { opacity: 0.6; box-shadow: inset 0 0 30px rgba(255,230,180,0.4), 0 0 40px rgba(255,200,140,0.2); }
  50% { opacity: 0.9; box-shadow: inset 0 0 40px rgba(255,230,180,0.7), 0 0 60px rgba(255,200,140,0.35); }
  100% { opacity: 0.7; box-shadow: inset 0 0 30px rgba(255,230,180,0.5), 0 0 50px rgba(255,200,140,0.25); }
}
@keyframes ks-writhe {
  0% { transform: rotate(-5deg) translateY(0) scale(1); }
  33% { transform: rotate(-3deg) translateY(-4px) scale(1.02); }
  66% { transform: rotate(-6deg) translateY(2px) scale(0.98); }
  100% { transform: rotate(-5deg) translateY(0) scale(1); }
}
@keyframes ks-clutch {
  0%, 100% { transform: rotate(20deg) translateX(0); }
  50% { transform: rotate(25deg) translateX(3px); }
}
@keyframes ks-goblet {
  0% { transform: rotate(0deg) translateY(0); }
  50% { transform: rotate(5deg) translateY(-2px); }
  100% { transform: rotate(0deg) translateY(0); }
}
@keyframes ks-shadow {
  0% { opacity: 0.7; }
  50% { opacity: 0.5; }
  100% { opacity: 0.8; }
}

.scn-king-poison-pain {
  background: linear-gradient(180deg, #2a1e1a 0%, #4a3a2a 40%, #6a5a3a 100%),
              radial-gradient(ellipse at 50% 30%, rgba(220, 180, 120, 0.2) 0%, transparent 70%);
}
.scn-king-poison-pain .floor {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 30%;
  background: linear-gradient(0deg, #3a2a1a 0%, #5a4a3a 80%);
  border-radius: 10% 10% 0 0 / 40% 40% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.3);
}
.scn-king-poison-pain .column {
  position: absolute;
  bottom: 0;
  width: 30px;
  height: 80%;
  background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 80%, #2a1a0a 100%);
  border-radius: 8% 8% 0 0;
  box-shadow: inset 4px 0 10px rgba(0,0,0,0.4);
}
.scn-king-poison-pain .column.left {
  left: 10%;
  animation: kpp-column 12s ease-in-out infinite alternate;
}
.scn-king-poison-pain .column.right {
  right: 10%;
  animation: kpp-column 14s ease-in-out infinite alternate-reverse;
}
.scn-king-poison-pain .king-figure {
  position: absolute;
  bottom: 22%;
  left: 30%;
  width: 70px;
  height: 80px;
  background: linear-gradient(135deg, #4a3220 0%, #2a1a0a 60%, #1a0e04 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%;
  transform: rotate(10deg);
  animation: kpp-king 5s ease-in-out infinite;
}
.scn-king-poison-pain .cousin-figure {
  position: absolute;
  bottom: 15%;
  right: 25%;
  width: 40px;
  height: 70px;
  background: linear-gradient(180deg, #3a2e28 0%, #1e1612 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  animation: kpp-cousin 7s ease-in-out infinite;
}
.scn-king-poison-pain .heart-thread {
  position: absolute;
  top: 40%;
  left: 35%;
  width: 60px;
  height: 2px;
  background: radial-gradient(ellipse, #c8553d 0%, transparent 80%);
  border-radius: 50%;
  filter: blur(1px);
  animation: kpp-thread 4s ease-in-out infinite;
}
.scn-king-poison-pain .heart-thread::before {
  content: '';
  position: absolute;
  top: -15px;
  left: 0;
  width: 16px;
  height: 16px;
  background: radial-gradient(circle, #c8553d 0%, #8a2a1a 100%);
  border-radius: 50%;
  box-shadow: 0 0 20px 6px rgba(200, 85, 61, 0.4);
  animation: kpp-heartbeat 2s ease-in-out infinite;
}
.scn-king-poison-pain .light-ray {
  position: absolute;
  top: 10%;
  left: 40%;
  width: 120px;
  height: 300px;
  background: linear-gradient(180deg, rgba(240, 210, 160, 0.3) 0%, transparent 100%);
  transform: rotate(-15deg);
  filter: blur(12px);
  animation: kpp-ray 10s ease-in-out infinite alternate;
}
@keyframes kpp-column {
  0% { transform: translateY(0) scale(1); }
  100% { transform: translateY(-6px) scale(1.01); }
}
@keyframes kpp-king {
  0%, 100% { transform: rotate(10deg) translateY(0); }
  50% { transform: rotate(8deg) translateY(-5px); }
}
@keyframes kpp-cousin {
  0% { transform: translateX(0) rotate(0deg); }
  50% { transform: translateX(8px) rotate(-2deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes kpp-thread {
  0% { opacity: 0.3; transform: scaleX(1); }
  50% { opacity: 1; transform: scaleX(1.3); }
  100% { opacity: 0.4; transform: scaleX(1); }
}
@keyframes kpp-heartbeat {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.4); }
}
@keyframes kpp-ray {
  0% { opacity: 0.4; transform: rotate(-15deg) scaleX(1); }
  50% { opacity: 0.8; transform: rotate(-13deg) scaleX(1.1); }
  100% { opacity: 0.3; transform: rotate(-15deg) scaleX(1); }
}

.scn-king-dies-news {
  background: linear-gradient(180deg, #1a1210 0%, #2e1e18 40%, #4a3228 100%),
              radial-gradient(ellipse at 80% 20%, rgba(180, 140, 100, 0.15) 0%, transparent 70%);
}
.scn-king-dies-news .bg-wall {
  position: absolute;
  inset: 0 0 20% 0;
  background: linear-gradient(270deg, #2a1a12 0%, #3a2a22 30%, #2a1a12 100%);
  box-shadow: inset 0 0 60px rgba(0,0,0,0.5);
}
.scn-king-dies-news .window-light {
  position: absolute;
  top: 12%;
  right: 10%;
  width: 80px;
  height: 120px;
  background: linear-gradient(135deg, #e8d4b0 0%, #c8ae80 60%, #a08a60 100%);
  border-radius: 4px;
  box-shadow: 0 0 40px rgba(230, 200, 150, 0.3), inset 0 0 30px rgba(255, 220, 160, 0.5);
  animation: kdn-light 9s ease-in-out infinite alternate;
}
.scn-king-dies-news .throne {
  position: absolute;
  bottom: 5%;
  left: 50%;
  transform: translateX(-50%);
  width: 100px;
  height: 110px;
  background: linear-gradient(180deg, #5a3e2a 0%, #3a2a1a 60%, #1a0e06 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 8px 12px 30px rgba(0,0,0,0.6);
  animation: kdn-throne 8s ease-in-out infinite;
}
.scn-king-dies-news .king-slump {
  position: absolute;
  bottom: 20%;
  left: 46%;
  width: 70px;
  height: 70px;
  background: linear-gradient(135deg, #3a2a1a 0%, #1a0e06 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  transform: rotate(15deg) scale(0.9);
  animation: kdn-slump 6s ease-in-out infinite;
}
.scn-king-dies-news .messenger {
  position: absolute;
  bottom: 18%;
  right: 20%;
  width: 35px;
  height: 60px;
  background: linear-gradient(180deg, #3a2e28 0%, #1e1612 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform: rotate(-5deg);
  animation: kdn-messenger 7s ease-in-out infinite;
}
.scn-king-dies-news .scroll {
  position: absolute;
  bottom: 28%;
  right: 18%;
  width: 18px;
  height: 40px;
  background: linear-gradient(180deg, #b8a080 0%, #9a8060 100%);
  border-radius: 30% 30% 20% 20%;
  transform: rotate(10deg);
  box-shadow: 2px 2px 6px rgba(0,0,0,0.3);
  animation: kdn-scroll 5s ease-in-out infinite alternate;
}
.scn-king-dies-news .shadow-veil {
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse at 60% 40%, transparent 30%, rgba(10,5,0,0.6) 100%);
  animation: kdn-veil 12s ease-in-out infinite alternate;
}
@keyframes kdn-light {
  0% { opacity: 0.5; box-shadow: 0 0 30px rgba(230,200,150,0.2); }
  50% { opacity: 0.8; box-shadow: 0 0 50px rgba(230,200,150,0.4); }
  100% { opacity: 0.6; box-shadow: 0 0 35px rgba(230,200,150,0.25); }
}
@keyframes kdn-throne {
  0%, 100% { transform: translateX(-50%) rotate(0deg); }
  50% { transform: translateX(-50%) rotate(-1deg) translateY(-2px); }
}
@keyframes kdn-slump {
  0% { transform: rotate(15deg) scale(0.9) translateY(0); }
  33% { transform: rotate(17deg) scale(0.88) translateY(4px); }
  66% { transform: rotate(13deg) scale(0.92) translateY(-2px); }
  100% { transform: rotate(15deg) scale(0.9) translateY(0); }
}
@keyframes kdn-messenger {
  0% { transform: rotate(-5deg) translateX(0); }
  50% { transform: rotate(-3deg) translateX(-6px); }
  100% { transform: rotate(-5deg) translateX(0); }
}
@keyframes kdn-scroll {
  0% { transform: rotate(10deg) translateY(0); }
  50% { transform: rotate(12deg) translateY(-3px); }
  100% { transform: rotate(10deg) translateY(0); }
}
@keyframes kdn-veil {
  0% { opacity: 0.6; }
  50% { opacity: 0.8; }
  100% { opacity: 0.5; }
}

/* === camp-lewis-dismissal (cld) === */
.scn-camp-lewis-dismissal {
  background:
    linear-gradient(180deg, #4c4f5a 0%, #3a3d47 40%, #2e3038 100%),
    radial-gradient(ellipse at 50% 60%, #5b5e6a 0%, transparent 70%);
}
.scn-camp-lewis-dismissal .overcast-sky {
  position: absolute; inset: 0 0 65% 0;
  background: linear-gradient(180deg, #5e616e 0%, #3f424d 100%);
  animation: cld-sky 20s ease-in-out infinite alternate;
}
.scn-camp-lewis-dismissal .barren-ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #4a4a3e 0%, #2c2c24 100%);
  box-shadow: inset 0 8px 12px rgba(0,0,0,0.4);
  animation: cld-ground 25s ease-in-out infinite alternate;
}
.scn-camp-lewis-dismissal .tent-left {
  position: absolute; bottom: 22%; left: 12%; width: 110px; height: 80px;
  background: linear-gradient(180deg, #6a6a5e 0%, #3c3c32 100%);
  border-radius: 30% 30% 10% 10% / 50% 50% 10% 10%;
  clip-path: polygon(0% 100%, 20% 0%, 80% 0%, 100% 100%);
  animation: cld-tents 8s ease-in-out infinite alternate;
}
.scn-camp-lewis-dismissal .tent-right {
  position: absolute; bottom: 24%; right: 15%; width: 130px; height: 90px;
  background: linear-gradient(180deg, #5c5c50 0%, #2f2f28 100%);
  border-radius: 30% 30% 10% 10% / 50% 50% 10% 10%;
  clip-path: polygon(0% 100%, 20% 0%, 80% 0%, 100% 100%);
  transform: scaleX(-1);
  animation: cld-tents 9s ease-in-out infinite alternate;
}
.scn-camp-lewis-dismissal .drum {
  position: absolute; bottom: 18%; left: 40%; width: 40px; height: 30px;
  background: linear-gradient(180deg, #8c7a6e 0%, #5a4e44 100%);
  border-radius: 20% / 30%;
  box-shadow: 0 4px 6px rgba(0,0,0,0.5);
  animation: cld-drum 4s ease-in-out infinite;
}
.scn-camp-lewis-dismissal .figure-a {
  position: absolute; bottom: 19%; left: 32%; width: 20px; height: 45px;
  background: linear-gradient(180deg, #2a2a30 0%, #1a1a1e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cld-figure-a 6s ease-in-out infinite;
}
.scn-camp-lewis-dismissal .figure-b {
  position: absolute; bottom: 20%; right: 38%; width: 22px; height: 48px;
  background: linear-gradient(180deg, #22242a 0%, #14161a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cld-figure-b 7s ease-in-out infinite;
}
.scn-camp-lewis-dismissal .flag {
  position: absolute; top: 30%; left: 48%; width: 3px; height: 50px;
  background: #2b2b30;
  transform-origin: bottom;
  animation: cld-flag 5s ease-in-out infinite;
}
.scn-camp-lewis-dismissal .flag::after {
  content: ''; position: absolute; top: -8px; left: 2px;
  width: 30px; height: 22px;
  background: linear-gradient(180deg, #8c6a4a 0%, #5e4028 100%);
  border-radius: 0 50% 50% 0;
  animation: cld-flag-cloth 5s ease-in-out infinite;
}
@keyframes cld-sky {
  0% { opacity: 0.7; }
  50% { opacity: 1; }
  100% { opacity: 0.8; }
}
@keyframes cld-ground {
  0% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
  100% { transform: translateY(1px); }
}
@keyframes cld-tents {
  0% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-5px) rotate(1deg); }
  100% { transform: translateY(2px) rotate(-1deg); }
}
@keyframes cld-drum {
  0% { transform: translateY(0) scale(1); opacity: 0.8; }
  25% { transform: translateY(-3px) scale(1.05); opacity: 1; }
  50% { transform: translateY(0) scale(1); opacity: 0.9; }
  75% { transform: translateY(-2px) scale(1.02); opacity: 1; }
  100% { transform: translateY(0) scale(1); opacity: 0.8; }
}
@keyframes cld-figure-a {
  0% { transform: translateX(0) translateY(0) rotate(-2deg); }
  25% { transform: translateX(4px) translateY(-1px) rotate(1deg); }
  50% { transform: translateX(8px) translateY(0) rotate(-1deg); }
  75% { transform: translateX(12px) translateY(-1px) rotate(2deg); }
  100% { transform: translateX(16px) translateY(0) rotate(0deg); }
}
@keyframes cld-figure-b {
  0% { transform: translateX(0) translateY(0) rotate(2deg); }
  30% { transform: translateX(-4px) translateY(-2px) rotate(-1deg); }
  60% { transform: translateX(-8px) translateY(0) rotate(1deg); }
  100% { transform: translateX(-12px) translateY(-1px) rotate(0deg); }
}
@keyframes cld-flag {
  0% { transform: rotate(-5deg); }
  50% { transform: rotate(10deg); }
  100% { transform: rotate(-5deg); }
}
@keyframes cld-flag-cloth {
  0% { transform: rotate(-5deg) translateX(0); }
  50% { transform: rotate(10deg) translateX(3px); }
  100% { transform: rotate(-5deg) translateX(0); }
}

/* === drum-challenge (dch) === */
.scn-drum-challenge {
  background:
    linear-gradient(180deg, #b3c4d6 0%, #d6e0ed 30%, #e8eff5 100%),
    radial-gradient(ellipse at 20% 30%, #fff7e0 0%, transparent 60%);
}
.scn-drum-challenge .sun {
  position: absolute; top: 6%; right: 15%; width: 50px; height: 50px;
  background: radial-gradient(circle, #ffefc0 0%, #ffd680 50%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 60px 20px rgba(255,214,128,0.5);
  animation: dch-sun 12s ease-in-out infinite;
}
.scn-drum-challenge .bright-sky {
  position: absolute; inset: 0 0 55% 0;
  background: linear-gradient(180deg, #c9d6e6 0%, #b0c4db 100%);
  animation: dch-sky 25s ease-in-out infinite alternate;
}
.scn-drum-challenge .hard-ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 55%;
  background: linear-gradient(180deg, #b09c7a 0%, #7a6a50 100%);
  box-shadow: inset 0 6px 10px rgba(0,0,0,0.3);
  animation: dch-ground 20s ease-in-out infinite alternate;
}
.scn-drum-challenge .drum-left {
  position: absolute; bottom: 28%; left: 30%; width: 50px; height: 35px;
  background: linear-gradient(180deg, #c8a060 0%, #905c28 100%);
  border-radius: 20% / 30%;
  box-shadow: 0 6px 8px rgba(0,0,0,0.4);
  animation: dch-drum 3s ease-in-out infinite;
}
.scn-drum-challenge .drum-right {
  position: absolute; bottom: 28%; right: 30%; width: 50px; height: 35px;
  background: linear-gradient(180deg, #b89050 0%, #7a4a20 100%);
  border-radius: 20% / 30%;
  box-shadow: 0 6px 8px rgba(0,0,0,0.4);
  animation: dch-drum 3.5s ease-in-out infinite;
}
.scn-drum-challenge .drummer-left {
  position: absolute; bottom: 24%; left: 24%; width: 28px; height: 60px;
  background: linear-gradient(180deg, #3a3a42 0%, #1e1e24 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: dch-drummer 4s ease-in-out infinite;
}
.scn-drum-challenge .drummer-right {
  position: absolute; bottom: 24%; right: 24%; width: 28px; height: 60px;
  background: linear-gradient(180deg, #32323a 0%, #18181e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: dch-drummer 4.5s ease-in-out infinite;
}
.scn-drum-challenge .dust-motes {
  position: absolute; inset: 0;
  background: radial-gradient(circle at 20% 40%, rgba(255,255,200,0.15) 0%, transparent 50%),
              radial-gradient(circle at 70% 60%, rgba(255,255,200,0.1) 0%, transparent 50%);
  animation: dch-dust 10s linear infinite;
  pointer-events: none;
}
@keyframes dch-sun {
  0% { transform: scale(1); opacity: 0.9; }
  50% { transform: scale(1.1); opacity: 1; }
  100% { transform: scale(1); opacity: 0.95; }
}
@keyframes dch-sky {
  0% { opacity: 0.8; }
  50% { opacity: 1; }
  100% { opacity: 0.85; }
}
@keyframes dch-ground {
  0% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
  100% { transform: translateY(1px); }
}
@keyframes dch-drum {
  0% { transform: translateY(0) scale(1); }
  25% { transform: translateY(-4px) scale(1.05); }
  50% { transform: translateY(0) scale(1); }
  75% { transform: translateY(-3px) scale(1.03); }
  100% { transform: translateY(0) scale(1); }
}
@keyframes dch-drummer {
  0% { transform: translateX(0) translateY(0) rotate(-3deg); }
  25% { transform: translateX(3px) translateY(-1px) rotate(1deg); }
  50% { transform: translateX(6px) translateY(0) rotate(2deg); }
  75% { transform: translateX(9px) translateY(-1px) rotate(-1deg); }
  100% { transform: translateX(12px) translateY(0) rotate(0deg); }
}
@keyframes dch-dust {
  0% { transform: translateX(0); }
  100% { transform: translateX(20vw); }
}

/* === battlefield-king-ill (bki) === */
.scn-battlefield-king-ill {
  background:
    linear-gradient(180deg, #3a3e44 0%, #2e3238 40%, #1f2226 100%),
    radial-gradient(ellipse at 50% 70%, #4a4e55 0%, transparent 70%);
}
.scn-battlefield-king-ill .overcast-sky {
  position: absolute; inset: 0 0 60% 0;
  background: linear-gradient(180deg, #52565e 0%, #3a3e44 100%);
  animation: bki-sky 30s ease-in-out infinite alternate;
}
.scn-battlefield-king-ill .muddy-ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #4a4234 0%, #2a241a 100%);
  box-shadow: inset 0 6px 12px rgba(0,0,0,0.5);
  animation: bki-ground 35s ease-in-out infinite alternate;
}
.scn-battlefield-king-ill .king-litter {
  position: absolute; bottom: 28%; left: 50%; width: 120px; height: 40px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #5c4a34 0%, #3a2c1c 100%);
  border-radius: 10% 10% 20% 20%;
  box-shadow: 0 8px 12px rgba(0,0,0,0.6);
  animation: bki-litter 8s ease-in-out infinite;
}
.scn-battlefield-king-ill .king-figure {
  position: absolute; bottom: 32%; left: 50%; width: 30px; height: 55px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #3a2a22 0%, #1a100a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bki-king 6s ease-in-out infinite;
}
.scn-battlefield-king-ill .soldier-a {
  position: absolute; bottom: 30%; left: 18%; width: 22px; height: 50px;
  background: linear-gradient(180deg, #2e3238 0%, #1a1c20 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bki-soldier 7s ease-in-out infinite;
}
.scn-battlefield-king-ill .soldier-b {
  position: absolute; bottom: 30%; right: 18%; width: 22px; height: 50px;
  background: linear-gradient(180deg, #262a2e 0%, #141618 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bki-soldier 8s ease-in-out infinite reverse;
}
.scn-battlefield-king-ill .broken-spear {
  position: absolute; bottom: 40%; right: 30%; width: 3px; height: 40px;
  background: #4a3a2a;
  transform: rotate(20deg);
  animation: bki-spear 10s ease-in-out infinite;
}
.scn-battlefield-king-ill .banner {
  position: absolute; top: 20%; left: 30%; width: 4px; height: 70px;
  background: #3a3a2e;
  transform-origin: bottom;
  animation: bki-banner 5s ease-in-out infinite;
}
.scn-battlefield-king-ill .banner::after {
  content: ''; position: absolute; top: -10px; left: 2px;
  width: 40px; height: 30px;
  background: linear-gradient(180deg, #8c5a3a 0%, #5e3820 100%);
  border-radius: 0 50% 50% 0;
  animation: bki-banner-cloth 5s ease-in-out infinite;
}
@keyframes bki-sky {
  0% { opacity: 0.6; }
  50% { opacity: 0.9; }
  100% { opacity: 0.7; }
}
@keyframes bki-ground {
  0% { transform: translateY(0); }
  50% { transform: translateY(-3px); }
  100% { transform: translateY(1px); }
}
@keyframes bki-litter {
  0% { transform: translateX(-50%) translateY(0) rotate(0deg); }
  25% { transform: translateX(-50%) translateY(-3px) rotate(1deg); }
  50% { transform: translateX(-50%) translateY(0) rotate(-1deg); }
  75% { transform: translateX(-50%) translateY(-2px) rotate(0.5deg); }
  100% { transform: translateX(-50%) translateY(0) rotate(0deg); }
}
@keyframes bki-king {
  0% { transform: translateX(-50%) translateY(0) rotate(-2deg); }
  25% { transform: translateX(-50%) translateY(-1px) rotate(1deg); }
  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 bki-soldier {
  0% { transform: translateX(0) translateY(0) rotate(0deg); }
  25% { transform: translateX(3px) translateY(-1px) rotate(1deg); }
  50% { transform: translateX(6px) translateY(0) rotate(-1deg); }
  75% { transform: translateX(9px) translateY(-1px) rotate(1deg); }
  100% { transform: translateX(12px) translateY(0) rotate(0deg); }
}
@keyframes bki-spear {
  0% { transform: rotate(20deg) translateX(0); }
  50% { transform: rotate(25deg) translateX(2px); }
  100% { transform: rotate(20deg) translateX(0); }
}
@keyframes bki-banner {
  0% { transform: rotate(-5deg); }
  50% { transform: rotate(10deg); }
  100% { transform: rotate(-5deg); }
}
@keyframes bki-banner-cloth {
  0% { transform: rotate(-5deg) translateX(0); }
  50% { transform: rotate(10deg) translateX(4px); }
  100% { transform: rotate(-5deg) translateX(0); }
}

/* === item-litter (itl) === */
.scn-item-litter {
  background:
    linear-gradient(180deg, #3a3e44 0%, #2e3238 30%, #1f2226 100%),
    radial-gradient(ellipse at 50% 80%, #4e525a 0%, transparent 75%);
}
.scn-item-litter .overcast-sky {
  position: absolute; inset: 0 0 70% 0;
  background: linear-gradient(180deg, #52565e 0%, #3a3e44 100%);
  animation: itl-sky 25s ease-in-out infinite alternate;
}
.scn-item-litter .uneven-ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #4a4234 0%, #2a241a 100%);
  box-shadow: inset 0 8px 10px rgba(0,0,0,0.5);
  animation: itl-ground 30s ease-in-out infinite alternate;
}
.scn-item-litter .litter-poles {
  position: absolute; bottom: 25%; left: 50%; width: 140px; height: 6px;
  transform: translateX(-50%);
  background: #4a3a2a;
  border-radius: 20%;
  box-shadow: 0 4px 6px rgba(0,0,0,0.4);
  animation: itl-poles 6s ease-in-out infinite;
}
.scn-item-litter .litter-body {
  position: absolute; bottom: 28%; left: 50%; width: 100px; height: 30px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #5c4a34 0%, #3a2c1c 100%);
  border-radius: 10% 10% 20% 20%;
  box-shadow: 0 6px 10px rgba(0,0,0,0.5);
  animation: itl-body 6s ease-in-out infinite;
}
.scn-item-litter .bearer-front {
  position: absolute; bottom: 23%; left: 32%; width: 24px; height: 55px;
  background: linear-gradient(180deg, #3a3a42 0%, #1e1e24 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: itl-bearer-f 5s ease-in-out infinite;
}
.scn-item-litter .bearer-rear {
  position: absolute; bottom: 23%; right: 32%; width: 24px; height: 55px;
  background: linear-gradient(180deg, #32323a 0%, #18181e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: itl-bearer-r 5.5s ease-in-out infinite;
}
.scn-item-litter .king-silhouette {
  position: absolute; bottom: 28%; left: 50%; width: 26px; height: 45px;
  transform: translateX(-50%);
  background: #1a1a1e;
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: itl-king 6s ease-in-out infinite;
}
.scn-item-litter .distant-battle {
  position: absolute; top: 10%; right: 10%; width: 60px; height: 40px;
  background: radial-gradient(circle at 30% 40%, #8a5a3a 0%, #4a2a1a 60%, transparent 70%);
  filter: blur(6px);
  animation: itl-distant 15s ease-in-out infinite;
}
@keyframes itl-sky {
  0% { opacity: 0.7; }
  50% { opacity: 1; }
  100% { opacity: 0.8; }
}
@keyframes itl-ground {
  0% { transform: translateY(0); }
  50% { transform: translateY(-3px); }
  100% { transform: translateY(1px); }
}
@keyframes itl-poles {
  0% { transform: translateX(-50%) translateY(0) rotate(0deg); }
  25% { transform: translateX(-50%) translateY(-2px) rotate(1deg); }
  50% { transform: translateX(-50%) translateY(0) rotate(-1deg); }
  75% { transform: translateX(-50%) translateY(-1px) rotate(0.5deg); }
  100% { transform: translateX(-50%) translateY(0) rotate(0deg); }
}
@keyframes itl-body {
  0% { transform: translateX(-50%) translateY(0) rotate(0deg); }
  25% { transform: translateX(-50%) translateY(-2px) rotate(1deg); }
  50% { transform: translateX(-50%) translateY(0) rotate(-1deg); }
  75% { transform: translateX(-50%) translateY(-1px) rotate(0.5deg); }
  100% { transform: translateX(-50%) translateY(0) rotate(0deg); }
}
@keyframes itl-bearer-f {
  0% { transform: translateX(0) translateY(0) rotate(-2deg); }
  30% { transform: translateX(3px) translateY(-1px) rotate(1deg); }
  60% { transform: translateX(6px) translateY(0) rotate(-1deg); }
  100% { transform: translateX(9px) translateY(-1px) rotate(0deg); }
}
@keyframes itl-bearer-r {
  0% { transform: translateX(0) translateY(0) rotate(2deg); }
  30% { transform: translateX(-3px) translateY(-1px) rotate(-1deg); }
  60% { transform: translateX(-6px) translateY(0) rotate(1deg); }
  100% { transform: translateX(-9px) translateY(-1px) rotate(0deg); }
}
@keyframes itl-king {
  0% { transform: translateX(-50%) translateY(0) rotate(-1deg); }
  25% { transform: translateX(-50%) translateY(-1px) rotate(1deg); }
  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 itl-distant {
  0% { opacity: 0.4; transform: scale(1); }
  50% { opacity: 0.8; transform: scale(1.1); }
  100% { opacity: 0.5; transform: scale(0.95); }
}

/* Scene: lewis-chooses-war (tense, sunlit) */
.scn-lewis-chooses-war {
  background: linear-gradient(180deg, #f9e8c8 0%, #e0c59a 40%, #c9a67a 70%, #a88b65 100%),
              radial-gradient(ellipse at 60% 20%, #ffecb3 0%, transparent 60%);
}
.scn-lewis-chooses-war .sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #ffe6b0 0%, #fddc9c 40%, transparent 100%);
  animation: lcw-sky 10s ease-in-out infinite alternate;
}
.scn-lewis-chooses-war .sun {
  position: absolute; top: 5%; left: 60%; width: 50px; height: 50px;
  background: radial-gradient(circle, #fff5d0 0%, #ffdd80 40%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 40px 20px #ffdd80, 0 0 80px 40px rgba(255,221,128,0.4);
  animation: lcw-sun 15s ease-in-out infinite;
}
.scn-lewis-chooses-war .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #8b7355 0%, #6b5b45 100%);
  border-radius: 40% 30% 0 0 / 20% 15% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.3);
  animation: lcw-ground 8s ease-in-out infinite alternate;
}
.scn-lewis-chooses-war .banner {
  position: absolute; bottom: 42%; left: 30%; width: 8px; height: 90px;
  background: linear-gradient(180deg, #6b4226 0%, #4a2e1a 100%);
  border-radius: 2px;
  transform-origin: bottom center;
  animation: lcw-banner-sway 4s ease-in-out infinite;
}
.scn-lewis-chooses-war .banner::before {
  content: ''; position: absolute; top: 0; left: -12px; width: 40px; height: 28px;
  background: linear-gradient(135deg, #a0461a 0%, #7a3412 100%);
  border-radius: 0 60% 10% 10%;
  filter: drop-shadow(2px 2px 4px rgba(0,0,0,0.4));
  animation: lcw-banner-wave 4s ease-in-out infinite;
}
.scn-lewis-chooses-war .figure-kneeling {
  position: absolute; bottom: 30%; left: 38%; width: 20px; height: 40px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0d0d1a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: lcw-kneel 5s ease-in-out infinite;
}
.scn-lewis-chooses-war .figure-standing {
  position: absolute; bottom: 30%; left: 52%; width: 22px; height: 50px;
  background: linear-gradient(180deg, #2a1a0a 0%, #1a0e05 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: lcw-stand 6s ease-in-out infinite alternate;
}
.scn-lewis-chooses-war .sword {
  position: absolute; bottom: 35%; left: 54%; width: 4px; height: 28px;
  background: linear-gradient(180deg, #b0a090 0%, #7a6a5a 100%);
  border-radius: 2px;
  transform: rotate(15deg);
  box-shadow: 0 0 6px rgba(200,180,130,0.6);
  animation: lcw-sword-gleam 3s ease-in-out infinite alternate;
}
.scn-lewis-chooses-war .dust {
  position: absolute; bottom: 38%; left: 10%; width: 40px; height: 10px;
  background: radial-gradient(ellipse, rgba(200,170,130,0.3) 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(4px);
  animation: lcw-dust 8s ease-in-out infinite;
}
@keyframes lcw-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.7 } }
@keyframes lcw-sun { 0%,100% { transform: scale(1) translateY(0); opacity:0.9 } 50% { transform: scale(1.05) translateY(-2px); opacity:1 } }
@keyframes lcw-ground { 0% { transform: translateY(0) scale(1) } 50% { transform: translateY(-2px) scale(1.01) } 100% { transform: translateY(0) scale(1) } }
@keyframes lcw-banner-sway { 0%,100% { transform: rotate(-2deg) } 50% { transform: rotate(2deg) } }
@keyframes lcw-banner-wave { 0%,100% { transform: skewX(-3deg) } 50% { transform: skewX(3deg) } }
@keyframes lcw-kneel { 0%,100% { transform: rotate(-1deg) translateY(0) } 50% { transform: rotate(1deg) translateY(-1px) } }
@keyframes lcw-stand { 0% { transform: translateX(0) rotate(0) } 50% { transform: translateX(2px) rotate(1deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes lcw-sword-gleam { 0% { box-shadow: 0 0 6px rgba(200,180,130,0.6) } 50% { box-shadow: 0 0 12px rgba(255,220,150,1) } 100% { box-shadow: 0 0 6px rgba(200,180,130,0.6) } }
@keyframes lcw-dust { 0% { transform: translateY(0) scale(1); opacity:0.3 } 50% { transform: translateY(-3px) scale(1.5); opacity:0.6 } 100% { transform: translateY(0) scale(1); opacity:0.3 } }

/* Scene: battle-bastard-austria-head (calm, overcast) */
.scn-battle-bastard-austria-head {
  background: linear-gradient(180deg, #7a8a9a 0%, #9aabb0 40%, #b0b9be 70%, #8a9da5 100%),
              radial-gradient(ellipse at 50% 100%, #b0b9be 0%, transparent 60%);
}
.scn-battle-bastard-austria-head .sky-overcast {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #a0b0b8 0%, #c0c8ce 40%, transparent 100%);
  animation: bba-sky 20s ease-in-out infinite alternate;
}
.scn-battle-bastard-austria-head .horizon {
  position: absolute; bottom: 40%; left: 0; right: 0; height: 10px;
  background: linear-gradient(90deg, #6a7a7a 0%, #8a9a9a 50%, #6a7a7a 100%);
  opacity: 0.5;
}
.scn-battle-bastard-austria-head .figure-side-profile {
  position: absolute; bottom: 20%; left: 35%; width: 28px; height: 55px;
  background: linear-gradient(180deg, #2a3038 0%, #1a2028 100%);
  border-radius: 45% 40% 30% 35% / 55% 50% 40% 45%;
  transform-origin: bottom center;
  animation: bba-figure 8s ease-in-out infinite;
}
.scn-battle-bastard-austria-head .cloak {
  position: absolute; bottom: 20%; left: 30%; width: 40px; height: 50px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 30% 50% 10% 10%;
  transform-origin: bottom right;
  animation: bba-cloak-swing 10s ease-in-out infinite alternate;
}
.scn-battle-bastard-austria-head .helmet-held {
  position: absolute; bottom: 45%; left: 28%; width: 16px; height: 14px;
  background: linear-gradient(180deg, #6a6a72 0%, #4a4a52 100%);
  border-radius: 40% 40% 20% 20%;
  transform: rotate(10deg);
  box-shadow: 0 2px 4px rgba(0,0,0,0.3);
  animation: bba-helmet 6s ease-in-out infinite alternate;
}
.scn-battle-bastard-austria-head .mountain-bg {
  position: absolute; bottom: 40%; left: 10%; right: 10%; height: 15%;
  background: linear-gradient(180deg, #5a6a6a 0%, #3a4a4a 100%);
  border-radius: 60% 70% 0 0 / 80% 80% 0 0;
  opacity: 0.4;
  animation: bba-mtn 30s linear infinite alternate;
}
.scn-battle-bastard-austria-head .mist {
  position: absolute; bottom: 30%; left: 20%; right: 20%; height: 20%;
  background: radial-gradient(ellipse, rgba(200,210,220,0.3) 0%, transparent 100%);
  filter: blur(8px);
  animation: bba-mist 15s ease-in-out infinite;
}
@keyframes bba-sky { 0% { opacity:0.7 } 50% { opacity:0.9 } 100% { opacity:0.6 } }
@keyframes bba-figure { 0%,100% { transform: translateY(0) rotate(0) } 50% { transform: translateY(-1px) rotate(0.5deg) } }
@keyframes bba-cloak-swing { 0% { transform: rotate(-2deg) } 50% { transform: rotate(0deg) } 100% { transform: rotate(2deg) } }
@keyframes bba-helmet { 0% { transform: rotate(8deg) translateY(0) } 50% { transform: rotate(12deg) translateY(-1px) } 100% { transform: rotate(8deg) translateY(0) } }
@keyframes bba-mtn { 0% { transform: translateY(0) } 100% { transform: translateY(2px) } }
@keyframes bba-mist { 0%,100% { opacity:0.3 } 50% { opacity:0.6 } }

/* Scene: john-hubert-plot (tense, firelit) */
.scn-john-hubert-plot {
  background: linear-gradient(180deg, #1a0e05 0%, #2a1a0a 40%, #3a2a1a 100%),
              radial-gradient(ellipse at 50% 70%, #5a3a1a 0%, transparent 70%);
}
.scn-john-hubert-plot .wall-bg {
  position: absolute; inset: 0;
  background: linear-gradient(90deg, #2a1a0a 0%, #3a2a1a 50%, #2a1a0a 100%);
  box-shadow: inset 0 0 80px rgba(0,0,0,0.6);
  animation: jhp-wall 12s ease-in-out infinite alternate;
}
.scn-john-hubert-plot .fireplace {
  position: absolute; bottom: 20%; left: 20%; width: 80px; height: 100px;
  background: linear-gradient(180deg, #4a2a1a 0%, #2a1a0a 100%);
  border-radius: 10px 10px 0 0;
  box-shadow: inset 0 -10px 20px rgba(0,0,0,0.5);
}
.scn-john-hubert-plot .fire-glow {
  position: absolute; bottom: 30%; left: 24%; width: 50px; height: 60px;
  background: radial-gradient(ellipse at center, #d06030 0%, #b04020 40%, transparent 70%);
  border-radius: 40%;
  box-shadow: 0 0 30px 15px #d06030, 0 0 60px 30px rgba(208,96,48,0.4);
  animation: jhp-fire 4s ease-in-out infinite alternate;
}
.scn-john-hubert-plot .figure-john {
  position: absolute; bottom: 20%; left: 42%; width: 24px; height: 50px;
  background: linear-gradient(180deg, #1a1a28 0%, #0a0a18 100%);
  border-radius: 45% 40% 30% 35% / 60% 55% 40% 45%;
  transform-origin: bottom center;
  animation: jhp-fig1 6s ease-in-out infinite;
}
.scn-john-hubert-plot .figure-hubert {
  position: absolute; bottom: 20%; left: 55%; width: 22px; height: 48px;
  background: linear-gradient(180deg, #2a2a38 0%, #1a1a28 100%);
  border-radius: 40% 45% 35% 30% / 55% 60% 45% 40%;
  transform-origin: bottom center;
  animation: jhp-fig2 7s ease-in-out infinite reverse;
}
.scn-john-hubert-plot .table {
  position: absolute; bottom: 12%; left: 40%; width: 80px; height: 14px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 4px;
  box-shadow: 0 -2px 6px rgba(0,0,0,0.5);
}
.scn-john-hubert-plot .candle {
  position: absolute; bottom: 30%; left: 52%; width: 6px; height: 18px;
  background: linear-gradient(180deg, #d0c0a0 0%, #a09070 100%);
  border-radius: 2px;
  animation: jhp-candle-flicker 3s ease-in-out infinite;
}
.scn-john-hubert-plot .candle::before {
  content: ''; position: absolute; top: -8px; left: -2px; width: 10px; height: 10px;
  background: radial-gradient(circle, #ffd080 0%, #ffa040 60%, transparent);
  border-radius: 50%;
  box-shadow: 0 0 12px 4px #ffa040;
  animation: jhp-flame 2s ease-in-out infinite alternate;
}
.scn-john-hubert-plot .shadow-pool {
  position: absolute; bottom: 0; left: 30%; right: 20%; height: 20%;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,0.4) 100%);
  border-radius: 50% 50% 0 0;
  animation: jhp-shadow 10s ease-in-out infinite;
}
.scn-john-hubert-plot .smoke {
  position: absolute; top: 20%; left: 25%; width: 30px; height: 40px;
  background: radial-gradient(ellipse, rgba(200,180,150,0.2) 0%, transparent 100%);
  filter: blur(6px);
  animation: jhp-smoke 8s linear infinite;
}
@keyframes jhp-wall { 0%,100% { opacity:0.9 } 50% { opacity:1 } }
@keyframes jhp-fire { 0% { transform: scale(1) translateY(0); opacity:0.8 } 50% { transform: scale(1.05) translateY(-2px); opacity:1 } 100% { transform: scale(0.95) translateY(0); opacity:0.8 } }
@keyframes jhp-fig1 { 0%,100% { transform: rotate(0) translateY(0) } 50% { transform: rotate(1deg) translateY(-1px) } }
@keyframes jhp-fig2 { 0%,100% { transform: rotate(0) translateY(0) } 50% { transform: rotate(-1deg) translateY(-1px) } }
@keyframes jhp-candle-flicker { 0%,100% { opacity:0.9 } 50% { opacity:1 } }
@keyframes jhp-flame { 0% { transform: scale(1) rotate(-2deg) } 100% { transform: scale(1.2) rotate(2deg) } }
@keyframes jhp-shadow { 0%,100% { opacity:0.6 } 50% { opacity:0.8 } }
@keyframes jhp-smoke { 0% { transform: translateY(0) scale(1); opacity:0.2 } 100% { transform: translateY(-20px) scale(2); opacity:0 } }

/* Scene: french-tent-lewis-despair (tense, bright-interior) */
.scn-french-tent-lewis-despair {
  background: linear-gradient(180deg, #d4c4a0 0%, #c4b490 40%, #b4a480 100%),
              radial-gradient(ellipse at 50% 30%, #e0d0b0 0%, transparent 60%);
}
.scn-french-tent-lewis-despair .tent-roof {
  position: absolute; top: 0; left: 10%; right: 10%; height: 50%;
  background: linear-gradient(180deg, #c4b090 0%, #a89070 100%);
  border-radius: 50% 50% 0 0 / 80% 80% 0 0;
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.2);
  animation: ftd-roof 15s ease-in-out infinite alternate;
}
.scn-french-tent-lewis-despair .tent-floor {
  position: absolute; bottom: 0; left: 5%; right: 5%; height: 20%;
  background: linear-gradient(180deg, #8a7a6a 0%, #6a5a4a 100%);
  border-radius: 10px 10px 0 0;
  opacity: 0.8;
}
.scn-french-tent-lewis-despair .figure-lewis {
  position: absolute; bottom: 15%; left: 38%; width: 26px; height: 45px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 40% 35% 25% 30% / 50% 45% 35% 40%;
  transform: rotate(-5deg);
  transform-origin: bottom center;
  animation: ftd-lewis 6s ease-in-out infinite;
}
.scn-french-tent-lewis-despair .figure-pandulph {
  position: absolute; bottom: 30%; left: 55%; width: 24px; height: 50px;
  background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%);
  border-radius: 45% 40% 30% 35% / 60% 55% 40% 45%;
  transform-origin: bottom center;
  animation: ftd-pandulph 8s ease-in-out infinite alternate;
}
.scn-french-tent-lewis-despair .candle-light {
  position: absolute; bottom: 35%; left: 50%; width: 8px; height: 20px;
  background: linear-gradient(180deg, #e0c080 0%, #c0a060 100%);
  border-radius: 2px;
  box-shadow: 0 0 20px 10px rgba(224,192,128,0.6), 0 0 40px 20px rgba(224,192,128,0.3);
  animation: ftd-candle 3s ease-in-out infinite alternate;
}
.scn-french-tent-lewis-despair .armor-stand {
  position: absolute; bottom: 20%; left: 70%; width: 20px; height: 50px;
  background: linear-gradient(180deg, #5a5a62 0%, #3a3a42 100%);
  border-radius: 30% 30% 10% 10%;
  opacity: 0.6;
  animation: ftd-armor 10s ease-in-out infinite;
}
.scn-french-tent-lewis-despair .map {
  position: absolute; bottom: 30%; left: 30%; width: 60px; height: 40px;
  background: linear-gradient(135deg, #d0b890 0%, #b09870 100%);
  border-radius: 2px;
  transform: rotate(-2deg);
  box-shadow: 0 2px 6px rgba(0,0,0,0.2);
  animation: ftd-map 12s ease-in-out infinite alternate;
}
.scn-french-tent-lewis-despair .shadow-lewis {
  position: absolute; bottom: 5%; left: 35%; width: 40px; height: 15px;
  background: radial-gradient(ellipse, rgba(0,0,0,0.3) 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(4px);
  animation: ftd-shadow 6s ease-in-out infinite;
}
@keyframes ftd-roof { 0%,100% { transform: scale(1) translateY(0) } 50% { transform: scale(1.01) translateY(-1px) } }
@keyframes ftd-lewis { 0%,100% { transform: rotate(-5deg) translateY(0) } 50% { transform: rotate(-5deg) translateY(-1px) } }
@keyframes ftd-pandulph { 0% { transform: translateX(0) } 50% { transform: translateX(2px) } 100% { transform: translateX(0) } }
@keyframes ftd-candle { 0% { transform: scaleY(1); opacity:0.9 } 100% { transform: scaleY(1.1); opacity:1 } }
@keyframes ftd-armor { 0%,100% { transform: rotate(0) } 50% { transform: rotate(1deg) } }
@keyframes ftd-map { 0% { transform: rotate(-2deg) } 100% { transform: rotate(2deg) } }
@keyframes ftd-shadow { 0%,100% { opacity:0.5 } 50% { opacity:0.8 } }

/* item-paper-warrant */
.scn-item-paper-warrant {
  background: linear-gradient(180deg, #1a0e0a 0%, #2a1a10 100%), radial-gradient(ellipse at 50% 80%, #c85a3d 0%, transparent 60%);
}
.scn-item-paper-warrant .bg-back {
  position: absolute; inset: 0; background: linear-gradient(180deg, #1a0e0a 0%, #2a1a10 100%); animation: ipw-flicker 4s ease-in-out infinite alternate;
}
.scn-item-paper-warrant .bg-fire {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%; background: linear-gradient(180deg, transparent 0%, #c85a3d 40%, #8a2a1a 100%); animation: ipw-flicker 2s ease-in-out infinite alternate;
}
.scn-item-paper-warrant .figure {
  position: absolute; bottom: 10%; left: 30%; width: 45px; height: 90px; background: linear-gradient(180deg, #2a1a10 0%, #0e0a06 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ipw-sway 6s ease-in-out infinite;
}
.scn-item-paper-warrant .arm-hand {
  position: absolute; bottom: 28%; left: 42%; width: 30px; height: 12px; background: linear-gradient(180deg, #2a1a10 0%, #1a0e0a 100%); border-radius: 50% 0 0 50%; transform: rotate(-10deg); transform-origin: right center; animation: ipw-tremble 3s ease-in-out infinite;
}
.scn-item-paper-warrant .scroll {
  position: absolute; bottom: 25%; left: 52%; width: 50px; height: 15px; background: linear-gradient(180deg, #c8a86a 0%, #a08048 100%); border-radius: 4px; transform: rotate(-5deg); box-shadow: 0 2px 6px rgba(0,0,0,.5); animation: ipw-wiggle 4s ease-in-out infinite;
}
.scn-item-paper-warrant .candle {
  position: absolute; bottom: 5%; left: 55%; width: 8px; height: 20px; background: linear-gradient(180deg, #d0a050 0%, #705020 100%); border-radius: 2px 2px 0 0; animation: ipw-flame 2s ease-in-out infinite;
}
.scn-item-paper-warrant .glow {
  position: absolute; bottom: 8%; left: 50%; width: 120px; height: 120px; background: radial-gradient(circle, #d08040 0%, transparent 70%); transform: translateX(-50%); animation: ipw-glow-pulse 3s ease-in-out infinite alternate;
}
@keyframes ipw-flicker { 0% { opacity: 0.7; } 50% { opacity: 1; } 100% { opacity: 0.8; } }
@keyframes ipw-sway { 0% { transform: rotate(1deg); } 50% { transform: rotate(-1deg); } 100% { transform: rotate(0deg); } }
@keyframes ipw-tremble { 0% { transform: rotate(-12deg); } 25% { transform: rotate(-8deg) translateY(1px); } 50% { transform: rotate(-14deg); } 75% { transform: rotate(-10deg) translateY(-1px); } 100% { transform: rotate(-12deg); } }
@keyframes ipw-wiggle { 0% { transform: rotate(-6deg); } 50% { transform: rotate(-3deg) translateX(2px); } 100% { transform: rotate(-6deg); } }
@keyframes ipw-flame { 0% { height: 18px; opacity: 0.8; } 50% { height: 22px; opacity: 1; } 100% { height: 18px; opacity: 0.9; } }
@keyframes ipw-glow-pulse { 0% { opacity: 0.5; transform: translateX(-50%) scale(0.9); } 50% { opacity: 1; transform: translateX(-50%) scale(1.1); } 100% { opacity: 0.6; transform: translateX(-50%) scale(1); } }

/* prison-arthur-plea */
.scn-prison-arthur-plea {
  background: linear-gradient(180deg, #1c1c1c 0%, #2a2a2a 100%), radial-gradient(ellipse at 50% 100%, #3a3a3a 0%, transparent 60%);
}
.scn-prison-arthur-plea .bg-wall {
  position: absolute; inset: 0; background: linear-gradient(180deg, #1c1c1c 0%, #121212 100%); animation: pap-dark-amb 8s ease-in-out infinite alternate;
}
.scn-prison-arthur-plea .window-bars {
  position: absolute; top: 10%; left: 5%; right: 5%; height: 30%; display: flex; flex-direction: column; justify-content: space-between;
}
.scn-prison-arthur-plea .window-bars::before,
.scn-prison-arthur-plea .window-bars::after {
  content: ''; position: absolute; left: 0; right: 0; height: 4px; background: #3a3a3a; box-shadow: 0 0 8px rgba(0,0,0,.6);
}
.scn-prison-arthur-plea .window-bars::before { top: 0; }
.scn-prison-arthur-plea .window-bars::after { bottom: 0; }
.scn-prison-arthur-plea .figure {
  position: absolute; bottom: 5%; left: 40%; width: 50px; height: 80px; background: linear-gradient(180deg, #2a2a2a 0%, #0e0e0e 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: pap-shiver 4s ease-in-out infinite;
}
.scn-prison-arthur-plea .head {
  position: absolute; bottom: 62%; left: 46%; width: 20px; height: 22px; background: linear-gradient(180deg, #2a2a2a 0%, #1a1a1a 100%); border-radius: 50%; animation: pap-breathe 3s ease-in-out infinite;
}
.scn-prison-arthur-plea .hand {
  position: absolute; bottom: 43%; left: 48%; width: 14px; height: 18px; background: linear-gradient(180deg, #2a2a2a 0%, #1a1a1a 100%); border-radius: 50% 50% 30% 30%; transform: rotate(10deg); transform-origin: bottom center; animation: pap-touch 5s ease-in-out infinite;
}
.scn-prison-arthur-plea .cup {
  position: absolute; bottom: 3%; left: 55%; width: 16px; height: 14px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 4px 4px 0 0; box-shadow: 0 2px 4px rgba(0,0,0,.5);
}
.scn-prison-arthur-plea .shadow {
  position: absolute; bottom: 0; left: 25%; width: 60%; height: 10px; background: radial-gradient(ellipse, rgba(0,0,0,.6) 0%, transparent 70%); animation: pap-drip 6s ease-in-out infinite;
}
@keyframes pap-dark-amb { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes pap-shiver { 0% { transform: rotate(1deg); } 20% { transform: rotate(-2deg) translateX(2px); } 40% { transform: rotate(2deg) translateX(-1px); } 60% { transform: rotate(-1deg) translateX(1px); } 80% { transform: rotate(0deg) translateX(-2px); } 100% { transform: rotate(1deg); } }
@keyframes pap-breathe { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes pap-touch { 0% { transform: rotate(10deg) translateY(0); } 50% { transform: rotate(5deg) translateY(-3px); } 100% { transform: rotate(10deg) translateY(0); } }
@keyframes pap-drip { 0% { opacity: 0.5; transform: scaleY(0.8); } 50% { opacity: 1; transform: scaleY(1.2); } 100% { opacity: 0.5; transform: scaleY(0.9); } }

/* item-hot-irons */
.scn-item-hot-irons {
  background: linear-gradient(180deg, #0a0a0a 0%, #1a0a0a 100%), radial-gradient(ellipse at 50% 60%, #5a2a1a 0%, transparent 60%);
}
.scn-item-hot-irons .bg-dark {
  position: absolute; inset: 0; background: linear-gradient(180deg, #0a0a0a 0%, #120a0a 100%); animation: hip-dark-flicker 5s ease-in-out infinite alternate;
}
.scn-item-hot-irons .brazier {
  position: absolute; bottom: 10%; left: 10%; width: 70px; height: 50px; background: linear-gradient(180deg, #4a2a1a 0%, #2a1a0a 100%); border-radius: 10px 10px 0 0; box-shadow: 0 4px 10px rgba(0,0,0,.8); animation: hip-fire 3s ease-in-out infinite;
}
.scn-item-hot-irons .brazier::before {
  content: ''; position: absolute; top: -8px; left: 10%; width: 80%; height: 12px; background: radial-gradient(ellipse, #c85a3d 0%, #8a2a1a 100%); border-radius: 50%; animation: hip-fire 2s ease-in-out infinite alternate;
}
.scn-item-hot-irons .irons {
  position: absolute; bottom: 20%; left: 25%; width: 6px; height: 30px; background: linear-gradient(180deg, #7a3a2a 0%, #3a1a0a 100%); border-radius: 2px; box-shadow: 0 0 8px #a04a2a; transform: rotate(-15deg); animation: hip-iron-glow 4s ease-in-out infinite;
}
.scn-item-hot-irons .irons:nth-child(3) { left: 35%; transform: rotate(10deg); animation-delay: 0.5s; }
.scn-item-hot-irons .figure-bound {
  position: absolute; bottom: 5%; right: 25%; width: 50px; height: 75px; background: linear-gradient(180deg, #1a1a1a 0%, #080808 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: hip-figure-shake 3s ease-in-out infinite;
}
.scn-item-hot-irons .figure-bound::after {
  content: ''; position: absolute; bottom: 0; left: 50%; width: 40px; height: 8px; background: #3a2a1a; border-radius: 4px; transform: translateX(-50%); animation: hip-cord-tension 2s ease-in-out infinite alternate;
}
.scn-item-hot-irons .cord {
  position: absolute; bottom: 12%; right: 35%; width: 60px; height: 3px; background: #4a3a2a; border-radius: 2px; transform: rotate(20deg); transform-origin: left center; animation: hip-cord-tension 2s ease-in-out infinite;
}
.scn-item-hot-irons .executioner {
  position: absolute; bottom: 5%; right: 5%; width: 35px; height: 90px; background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%); border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%; animation: hip-executioner-sway 7s ease-in-out infinite;
}
.scn-item-hot-irons .glow {
  position: absolute; bottom: 5%; left: 5%; width: 200px; height: 200px; background: radial-gradient(circle, #c85a3d 0%, transparent 70%); transform: translate(-10%, 10%); animation: hip-glow-pulse 2s ease-in-out infinite alternate;
}
@keyframes hip-dark-flicker { 0% { opacity: 0.7; } 50% { opacity: 1; } 100% { opacity: 0.8; } }
@keyframes hip-fire { 0% { transform: scaleY(1); } 50% { transform: scaleY(1.05); opacity: 0.9; } 100% { transform: scaleY(1); opacity: 1; } }
@keyframes hip-iron-glow { 0% { box-shadow: 0 0 4px #a04a2a; } 50% { box-shadow: 0 0 12px #c85a3d; } 100% { box-shadow: 0 0 6px #a04a2a; } }
@keyframes hip-figure-shake { 0%,100% { transform: rotate(2deg); } 20% { transform: rotate(-3deg) translateX(3px); } 40% { transform: rotate(1deg) translateX(-2px); } 60% { transform: rotate(-2deg) translateX(1px); } 80% { transform: rotate(0deg) translateX(-1px); } }
@keyframes hip-cord-tension { 0% { transform: rotate(18deg) scaleY(1); } 100% { transform: rotate(22deg) scaleY(0.8); } }
@keyframes hip-executioner-sway { 0% { transform: rotate(1deg); } 50% { transform: rotate(-1deg); } 100% { transform: rotate(0deg); } }
@keyframes hip-glow-pulse { 0% { opacity: 0.5; } 100% { opacity: 1; } }

/* prison-arthur-bargain */
.scn-prison-arthur-bargain {
  background: linear-gradient(180deg, #1a1a1a 0%, #0e0e0e 100%), radial-gradient(ellipse at 20% 30%, #2a3a4a 0%, transparent 50%);
}
.scn-prison-arthur-bargain .bg-cell {
  position: absolute; inset: 0; background: linear-gradient(180deg, #1a1a1a 0%, #0e0e0e 100%); animation: pab-dim 10s ease-in-out infinite alternate;
}
.scn-prison-arthur-bargain .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 15%; background: linear-gradient(180deg, #2a2a2a 0%, #1a1a1a 100%); border-radius: 0 0 0 0;
}
.scn-prison-arthur-bargain .figure {
  position: absolute; bottom: 15%; left: 30%; width: 55px; height: 100px; background: linear-gradient(180deg, #2a2a2a 0%, #0e0e0e 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: pab-still 6s ease-in-out infinite;
}
.scn-prison-arthur-bargain .hands-up {
  position: absolute; bottom: 55%; left: 28%; width: 20px; height: 30px; background: linear-gradient(180deg, #2a2a2a 0%, #1a1a1a 100%); border-radius: 50% 50% 30% 30%; transform: rotate(20deg); transform-origin: bottom center; animation: pab-implore 4s ease-in-out infinite;
}
.scn-prison-arthur-bargain .hands-up::after {
  content: ''; position: absolute; top: -10px; left: 0; width: 100%; height: 20px; background: linear-gradient(180deg, #1a1a1a 0%, #2a2a2a 100%); border-radius: 50%; transform: rotate(-20deg);
}
.scn-prison-arthur-bargain .shadow {
  position: absolute; bottom: 0; left: 20%; width: 70%; height: 20px; background: radial-gradient(ellipse, rgba(0,0,0,.7) 0%, transparent 70%); animation: pab-shadow-drift 8s ease-in-out infinite;
}
.scn-prison-arthur-bargain .light-shaft {
  position: absolute; top: 0; left: 5%; width: 30%; height: 100%; background: linear-gradient(180deg, rgba(100,130,160,0.15) 0%, transparent 70%); transform: skewX(-5deg); animation: pab-light-flicker 3s ease-in-out infinite alternate;
}
@keyframes pab-dim { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes pab-still { 0% { transform: translateY(0); } 50% { transform: translateY(-1px); } 100% { transform: translateY(1px); } }
@keyframes pab-implore { 0% { transform: rotate(18deg) translateY(0); } 50% { transform: rotate(22deg) translateY(-2px) scale(1.02); } 100% { transform: rotate(18deg) translateY(0); } }
@keyframes pab-shadow-drift { 0% { transform: translateX(0); } 50% { transform: translateX(5px); } 100% { transform: translateX(-3px); } }
@keyframes pab-light-flicker { 0% { opacity: 0.1; } 50% { opacity: 0.3; } 100% { opacity: 0.15; } }

.scn-castle-hubert-defends {
  background: linear-gradient(180deg, #0b0e2a 0%, #141738 40%, #1c2150 100%), radial-gradient(ellipse at 50% 100%, #2a3050 0%, transparent 70%);
}
.scn-castle-hubert-defends .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #0b0e2a 0%, #1c2150 60%, transparent 100%);
  animation: chd-sky 10s ease-in-out infinite alternate;
}
.scn-castle-hubert-defends .moon {
  position: absolute; top: 8%; left: 70%;
  width: 50px; height: 50px;
  background: radial-gradient(circle at 40% 40%, #e0eaf5 0%, #a0b8d0 70%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 40px 10px rgba(160,184,208,0.4);
  animation: chd-moon 8s ease-in-out infinite alternate;
}
.scn-castle-hubert-defends .cloud-a {
  position: absolute; top: 12%; left: 10%;
  width: 100px; height: 20px;
  background: linear-gradient(180deg, rgba(180,200,220,0.5) 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(8px);
  animation: chd-cloud-a 40s linear infinite;
}
.scn-castle-hubert-defends .cloud-b {
  position: absolute; top: 18%; right: 5%;
  width: 70px; height: 15px;
  background: linear-gradient(180deg, rgba(180,200,220,0.3) 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(6px);
  animation: chd-cloud-b 50s linear infinite reverse;
  animation-delay: -10s;
}
.scn-castle-hubert-defends .tower {
  position: absolute; bottom: 30%; left: 15%; right: 15%; height: 50%;
  background: linear-gradient(180deg, #2a2f4a 0%, #1a1f3a 50%, #0e1224 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: inset 0 -10px 30px rgba(0,0,0,0.6);
  transform: scale(0.95, 1);
}
.scn-castle-hubert-defends .window {
  position: absolute; bottom: 55%; left: 40%; width: 20px; height: 30px;
  background: radial-gradient(circle, #c0d0e0 0%, #8098b0 70%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 0 0 20px 6px rgba(128,152,176,0.5), 0 0 40px 12px rgba(128,152,176,0.3);
  animation: chd-window 2s ease-in-out infinite alternate;
}
.scn-castle-hubert-defends .figure {
  position: absolute; bottom: 30%; left: 45%; width: 20px; height: 40px;
  background: linear-gradient(180deg, #1a1f2e 0%, #0a0e1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: chd-figure 0.8s ease-in-out infinite alternate;
}
.scn-castle-hubert-defends .cord {
  position: absolute; bottom: 40%; left: 42%; width: 2px; height: 50px;
  background: linear-gradient(180deg, #4a4a5a 0%, #2a2a3a 100%);
  transform-origin: top left;
  transform: rotate(15deg);
  border-radius: 50%;
  box-shadow: 0 0 4px 1px rgba(74,74,90,0.5);
  animation: chd-cord 1.2s ease-in-out infinite alternate;
}
@keyframes chd-sky { 0% { opacity: 0.8 } 50% { opacity: 1 } 100% { opacity: 0.7 } }
@keyframes chd-moon { 0% { transform: translateY(0) scale(1) } 50% { transform: translateY(-4px) scale(1.02) } 100% { transform: translateY(2px) scale(0.98) } }
@keyframes chd-cloud-a { 0% { transform: translateX(-50px) } 100% { transform: translateX(120vw) } }
@keyframes chd-cloud-b { 0% { transform: translateX(0) } 100% { transform: translateX(-100vw) } }
@keyframes chd-window { 0% { opacity: 0.7; box-shadow: 0 0 15px 4px rgba(128,152,176,0.4); } 50% { opacity: 1; box-shadow: 0 0 25px 8px rgba(128,152,176,0.6); } 100% { opacity: 0.8; box-shadow: 0 0 20px 6px rgba(128,152,176,0.5); } }
@keyframes chd-figure { 0% { transform: translateX(0) rotate(-2deg) } 50% { transform: translateX(3px) rotate(1deg) } 100% { transform: translateX(-2px) rotate(-1deg) } }
@keyframes chd-cord { 0% { transform: rotate(10deg) scaleY(1) } 50% { transform: rotate(20deg) scaleY(1.05) } 100% { transform: rotate(12deg) scaleY(0.95) } }

.scn-castle-bastard-laments {
  background: linear-gradient(180deg, #05081a 0%, #12152e 50%, #1c2040 100%), radial-gradient(ellipse at 50% 100%, #1a1e3a 0%, transparent 70%);
}
.scn-castle-bastard-laments .sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #0a0d22 0%, #15183a 60%, transparent 100%);
  animation: cbl-sky 15s ease-in-out infinite alternate;
}
.scn-castle-bastard-laments .moon {
  position: absolute; top: 5%; left: 65%;
  width: 45px; height: 45px;
  background: radial-gradient(circle at 30% 30%, #d0d8e8 0%, #8498b0 70%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 30px 8px rgba(132,152,176,0.3);
  animation: cbl-moon 12s ease-in-out infinite alternate;
}
.scn-castle-bastard-laments .cloud-a {
  position: absolute; top: 10%; left: 0%;
  width: 80px; height: 16px;
  background: linear-gradient(180deg, rgba(160,180,200,0.4) 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(6px);
  animation: cbl-cloud-a 45s linear infinite;
}
.scn-castle-bastard-laments .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #1a1e2e 0%, #0e121e 50%, #050810 100%);
  border-radius: 30% 70% 0 0 / 40% 60% 0 0;
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.7);
}
.scn-castle-bastard-laments .thorns {
  position: absolute; bottom: 30%; left: 10%; right: 10%; height: 25%;
  background: 
    linear-gradient(90deg, transparent 0%, #1a2a1a 15%, transparent 30%, #1a2a1a 45%, transparent 60%, #1a2a1a 75%, transparent 90%),
    linear-gradient(180deg, #1a2a1a 0%, #0e1a0e 100%);
  border-radius: 50% 50% 0 0;
  transform: scale(1.1, 0.6);
  opacity: 0.8;
  animation: cbl-thorns 6s ease-in-out infinite alternate;
}
.scn-castle-bastard-laments .figure-carrier {
  position: absolute; bottom: 15%; left: 40%; width: 22px; height: 42px;
  background: linear-gradient(180deg, #181c2a 0%, #0a0e16 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cbl-carrier 3s ease-in-out infinite;
}
.scn-castle-bastard-laments .figure-body {
  position: absolute; bottom: 18%; left: 38%; width: 18px; height: 30px;
  background: linear-gradient(180deg, #1c2030 0%, #10141e 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 30% 30%;
  transform: rotate(25deg);
  transform-origin: bottom center;
  animation: cbl-body 3s ease-in-out infinite;
}
@keyframes cbl-sky { 0% { opacity: 0.7 } 50% { opacity: 1 } 100% { opacity: 0.6 } }
@keyframes cbl-moon { 0% { transform: translateY(0) } 50% { transform: translateY(-3px) } 100% { transform: translateY(2px) } }
@keyframes cbl-cloud-a { 0% { transform: translateX(-60px) } 100% { transform: translateX(120vw) } }
@keyframes cbl-thorns { 0% { opacity: 0.6; transform: scale(1.1, 0.6) rotate(-2deg) } 50% { opacity: 0.9; transform: scale(1.12, 0.62) rotate(0deg) } 100% { opacity: 0.7; transform: scale(1.08, 0.58) rotate(2deg) } }
@keyframes cbl-carrier { 0% { transform: translateX(0) translateY(0) rotate(-1deg) } 25% { transform: translateX(4px) translateY(-2px) rotate(1deg) } 50% { transform: translateX(8px) translateY(0) rotate(-1deg) } 75% { transform: translateX(4px) translateY(-1px) rotate(1deg) } 100% { transform: translateX(0) translateY(0) rotate(0) } }
@keyframes cbl-body { 0% { transform: rotate(20deg) translateX(0) } 25% { transform: rotate(25deg) translateX(-2px) } 50% { transform: rotate(30deg) translateX(0) } 75% { transform: rotate(25deg) translateX(2px) } 100% { transform: rotate(20deg) translateX(0) } }

.scn-palace-yield-crown {
  background: linear-gradient(180deg, #e8dcc8 0%, #c4b49a 30%, #9a8a6e 100%), radial-gradient(ellipse at 50% 0%, #f0e6d0 0%, transparent 60%);
}
.scn-palace-yield-crown .bg-wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #d8ccb6 0%, #b8a88c 50%, #9a8868 100%);
  box-shadow: inset 0 20px 40px rgba(0,0,0,0.1);
  animation: pyc-wall 6s ease-in-out infinite alternate;
}
.scn-palace-yield-crown .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #8a7a5e 0%, #6e5e42 100%);
  border-radius: 20% 80% 0 0 / 30% 70% 0 0;
  box-shadow: inset 0 20px 40px rgba(0,0,0,0.3);
}
.scn-palace-yield-crown .altar {
  position: absolute; bottom: 25%; left: 30%; right: 30%; height: 20%;
  background: linear-gradient(180deg, #c8b89a 0%, #a89878 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: 0 -10px 20px rgba(0,0,0,0.2);
  transform: scale(0.95, 1);
}
.scn-palace-yield-crown .crown {
  position: absolute; bottom: 40%; left: 45%; width: 30px; height: 25px;
  background: radial-gradient(circle at 50% 30%, #f0d080 0%, #c0a050 70%);
  border-radius: 30% 30% 10% 10%;
  box-shadow: 0 0 20px 6px rgba(192,160,80,0.5), 0 0 40px 12px rgba(192,160,80,0.3);
  animation: pyc-crown 0.8s ease-in-out infinite alternate;
}
.scn-palace-yield-crown .hand-left {
  position: absolute; bottom: 35%; left: 38%; width: 16px; height: 30px;
  background: linear-gradient(180deg, #d4c0a0 0%, #b8a080 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform: rotate(-15deg);
  transform-origin: bottom;
  animation: pyc-hand-left 1s ease-in-out infinite alternate;
}
.scn-palace-yield-crown .hand-right {
  position: absolute; bottom: 35%; right: 38%; width: 16px; height: 30px;
  background: linear-gradient(180deg, #d4c0a0 0%, #b8a080 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform: rotate(15deg);
  transform-origin: bottom;
  animation: pyc-hand-right 1.2s ease-in-out infinite alternate;
}
.scn-palace-yield-crown .window {
  position: absolute; top: 5%; left: 45%; width: 50px; height: 80px;
  background: radial-gradient(circle at 50% 30%, #fff8e0 0%, #e8dcc0 60%, transparent 100%);
  border-radius: 30% 30% 10% 10%;
  box-shadow: inset 0 0 30px 10px rgba(255,248,224,0.3);
  animation: pyc-window 3s ease-in-out infinite alternate;
}
.scn-palace-yield-crown .light-ray {
  position: absolute; top: 0; left: 48%; width: 20px; height: 60%;
  background: linear-gradient(180deg, rgba(255,248,224,0.4) 0%, transparent 100%);
  transform-origin: top;
  transform: rotate(5deg);
  filter: blur(10px);
  animation: pyc-light 4s ease-in-out infinite alternate;
}
@keyframes pyc-wall { 0% { opacity: 0.9 } 50% { opacity: 1 } 100% { opacity: 0.95 } }
@keyframes pyc-crown { 0% { transform: translateY(0) rotate(-2deg) } 50% { transform: translateY(-3px) rotate(2deg) } 100% { transform: translateY(0) rotate(-1deg) } }
@keyframes pyc-hand-left { 0% { transform: rotate(-20deg) translateX(0) } 50% { transform: rotate(-10deg) translateX(-2px) } 100% { transform: rotate(-15deg) translateX(0) } }
@keyframes pyc-hand-right { 0% { transform: rotate(20deg) translateX(0) } 50% { transform: rotate(10deg) translateX(2px) } 100% { transform: rotate(15deg) translateX(0) } }
@keyframes pyc-window { 0% { opacity: 0.7; box-shadow: inset 0 0 20px 5px rgba(255,248,224,0.2); } 50% { opacity: 1; box-shadow: inset 0 0 40px 15px rgba(255,248,224,0.5); } 100% { opacity: 0.8; box-shadow: inset 0 0 30px 10px rgba(255,248,224,0.3); } }
@keyframes pyc-light { 0% { transform: rotate(3deg) scaleY(0.9); opacity: 0.3; } 50% { transform: rotate(7deg) scaleY(1.1); opacity: 0.6; } 100% { transform: rotate(5deg) scaleY(1); opacity: 0.4; } }

.scn-palace-cardinal-advice {
  background: linear-gradient(180deg, #f0e8d8 0%, #d8ccb4 50%, #b8a88c 100%), radial-gradient(ellipse at 50% 0%, #faf4e8 0%, transparent 60%);
}
.scn-palace-cardinal-advice .bg-wall {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(180deg, #ece0cc 0%, #cebea2 50%, #b0a082 100%);
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.1);
  animation: pca-wall 8s ease-in-out infinite alternate;
}
.scn-palace-cardinal-advice .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(180deg, #a09070 0%, #80704e 100%);
  border-radius: 30% 70% 0 0 / 20% 80% 0 0;
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.2);
}
.scn-palace-cardinal-advice .column {
  position: absolute; bottom: 25%; left: 20%; width: 30px; height: 80%;
  background: linear-gradient(90deg, #c8bc9e 0%, #e2d6ba 20%, #c8bc9e 40%, #b0a080 60%, #c8bc9e 100%);
  border-radius: 20% 20% 0 0;
  box-shadow: inset 0 0 10px rgba(0,0,0,0.1), 0 0 15px rgba(0,0,0,0.1);
  transform: scale(0.9, 1);
}
.scn-palace-cardinal-advice .figure {
  position: absolute; bottom: 20%; left: 42%; width: 24px; height: 50px;
  background: linear-gradient(180deg, #a08868 0%, #7a6a4a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pca-figure 4s ease-in-out infinite alternate;
  box-shadow: 0 0 10px 2px rgba(0,0,0,0.2);
}
.scn-palace-cardinal-advice .book {
  position: absolute; bottom: 28%; left: 50%; width: 12px; height: 16px;
  background: linear-gradient(180deg, #8a7a5a 0%, #6e5e3e 100%);
  border-radius: 10%;
  transform: rotate(10deg);
  animation: pca-book 6s ease-in-out infinite;
}
.scn-palace-cardinal-advice .light-beam {
  position: absolute; top: 0; left: 52%; width: 30px; height: 70%;
  background: linear-gradient(180deg, rgba(255,248,230,0.5) 0%, transparent 100%);
  transform-origin: top;
  transform: rotate(8deg);
  filter: blur(12px);
  animation: pca-beam 5s ease-in-out infinite alternate;
}
.scn-palace-cardinal-advice .dove {
  position: absolute; top: 15%; left: 55%; width: 20px; height: 14px;
  background: radial-gradient(circle at 40% 30%, #f0e8dc 0%, #d8ccb6 70%);
  border-radius: 50%;
  box-shadow: 0 0 10px 2px rgba(216,204,182,0.5);
  animation: pca-dove 7s ease-in-out infinite;
}
@keyframes pca-wall { 0% { opacity: 0.9 } 50% { opacity: 1 } 100% { opacity: 0.95 } }
@keyframes pca-figure { 0% { transform: translateX(0) rotate(-1deg) } 50% { transform: translateX(3px) rotate(1deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes pca-book { 0% { transform: rotate(8deg) translateY(0) } 50% { transform: rotate(12deg) translateY(-2px) } 100% { transform: rotate(10deg) translateY(0) } }
@keyframes pca-beam { 0% { transform: rotate(6deg) scaleY(0.9); opacity: 0.3; } 50% { transform: rotate(10deg) scaleY(1.1); opacity: 0.6; } 100% { transform: rotate(8deg) scaleY(1); opacity: 0.4; } }
@keyframes pca-dove { 0% { transform: translateX(0) translateY(0) scale(1) } 25% { transform: translateX(10px) translateY(-5px) scale(1.05) } 50% { transform: translateX(20px) translateY(-10px) scale(0.95) } 75% { transform: translateX(30px) translateY(-5px) scale(1) } 100% { transform: translateX(40px) translateY(0) scale(1) } }

/* camp-lewis-promises - warm overcast */
.scn-camp-lewis-promises {
  background: linear-gradient(180deg, #7a7a7a 0%, #9a8a7a 40%, #8a7a5a 70%, #6a5a3a 100%),
              radial-gradient(ellipse at 50% 0%, #aaa090 0%, transparent 60%);
}
.scn-camp-lewis-promises .sky {
  position: absolute; inset: 0 0 55% 0;
  background: linear-gradient(180deg, #8a8a7a 0%, #6a5a3a 100%);
  animation: clp-sky 15s ease-in-out infinite alternate;
}
.scn-camp-lewis-promises .ground {
  position: absolute; inset: 55% 0 0 0;
  background: linear-gradient(0deg, #4a3a2a 0%, #5a4a3a 50%, #6a5a4a 100%);
  border-radius: 40% 20% 0 0 / 20% 10% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.3);
}
.scn-camp-lewis-promises .tent {
  position: absolute; bottom: 30%; left: 20%; width: 140px; height: 100px;
  background: linear-gradient(135deg, #6a5a3a 0%, #4a3a2a 100%);
  clip-path: polygon(0 100%, 50% 0%, 100% 100%);
  box-shadow: -5px 5px 10px rgba(0,0,0,0.4);
  animation: clp-tent 8s ease-in-out infinite;
}
.scn-camp-lewis-promises .banner {
  position: absolute; bottom: 70%; left: 55%; width: 30px; height: 50px;
  background: linear-gradient(0deg, #5a4a3a 0%, #8a6a4a 100%);
  border-radius: 0 0 40% 40%;
  transform-origin: bottom center;
  animation: clp-flag 6s ease-in-out infinite;
}
.scn-camp-lewis-promises .figure-lewis {
  position: absolute; bottom: 28%; left: 35%; width: 40px; height: 80px;
  background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: clp-lewis 4s ease-in-out infinite;
}
.scn-camp-lewis-promises .figure-cardinal {
  position: absolute; bottom: 28%; left: 60%; width: 35px; height: 75px;
  background: linear-gradient(180deg, #5a3a2a 0%, #3a1a1a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  box-shadow: 0 0 12px rgba(100,60,30,0.5);
  transform-origin: bottom center;
  animation: clp-cardinal 5s ease-in-out infinite alternate;
}
.scn-camp-lewis-promises .campfire {
  position: absolute; bottom: 28%; left: 15%; width: 40px; height: 30px;
  background: radial-gradient(ellipse at 50% 100%, #c08040 0%, #8a5a2a 40%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 30px 10px rgba(200,128,60,0.4);
  animation: clp-fire 3s ease-in-out infinite alternate;
}
.scn-camp-lewis-promises .spark-a,
.scn-camp-lewis-promises .spark-b {
  position: absolute; bottom: 45%; width: 5px; height: 5px;
  background: #e0a050;
  border-radius: 50%;
  box-shadow: 0 0 6px #ffb060;
}
.scn-camp-lewis-promises .spark-a {
  left: 16%; animation: clp-spark 3s ease-in-out infinite;
}
.scn-camp-lewis-promises .spark-b {
  left: 18%; animation: clp-spark 3.5s ease-in-out 0.5s infinite;
}
@keyframes clp-sky { 0% { opacity: 0.7 } 50% { opacity: 1 } 100% { opacity: 0.8 } }
@keyframes clp-tent { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-2px) } }
@keyframes clp-flag { 0%,100% { transform: rotate(0deg) } 50% { transform: rotate(10deg) } }
@keyframes clp-lewis {
  0% { transform: translateX(0) translateY(0) rotate(-2deg) }
  50% { transform: translateX(3px) translateY(-1px) rotate(1deg) }
  100% { transform: translateX(0) translateY(0) rotate(-2deg) }
}
@keyframes clp-cardinal {
  0% { transform: translateX(0) rotate(0deg) }
  50% { transform: translateX(-2px) rotate(2deg) }
  100% { transform: translateX(0) rotate(-2deg) }
}
@keyframes clp-fire {
  0% { box-shadow: 0 0 20px 5px rgba(200,128,60,0.3); opacity: 0.8 }
  50% { box-shadow: 0 0 40px 12px rgba(200,128,60,0.6); opacity: 1 }
  100% { box-shadow: 0 0 25px 8px rgba(200,128,60,0.4); opacity: 0.85 }
}
@keyframes clp-spark {
  0% { transform: translateY(0) scale(1); opacity: 0 }
  30% { opacity: 1 }
  70% { opacity: 1 }
  100% { transform: translateY(-40px) scale(0.5); opacity: 0 }
}

/* camp-lewis-defiance - tense overcast */
.scn-camp-lewis-defiance {
  background: linear-gradient(180deg, #5a5a5a 0%, #4a4a5a 30%, #3a3a4a 60%, #2a2a3a 100%),
              radial-gradient(ellipse at 30% 40%, #6b5b5b 0%, transparent 70%);
}
.scn-camp-lewis-defiance .sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #4a4a5a 0%, #2a2a3a 100%);
  animation: cld-sky 18s ease-in-out infinite alternate;
}
.scn-camp-lewis-defiance .ground {
  position: absolute; inset: 50% 0 0 0;
  background: linear-gradient(0deg, #1a1a2a 0%, #2a2a3a 50%, #3a3a4a 100%);
  border-radius: 30% 70% 0 0 / 40% 40% 0 0;
  box-shadow: inset 0 15px 25px rgba(0,0,0,0.5);
}
.scn-camp-lewis-defiance .tent {
  position: absolute; bottom: 25%; left: 25%; width: 120px; height: 90px;
  background: linear-gradient(135deg, #3a3a4a 0%, #1a1a2a 100%);
  clip-path: polygon(0 100%, 50% 0%, 100% 100%);
  box-shadow: 0 0 20px rgba(0,0,0,0.6);
  animation: cld-tent 10s ease-in-out infinite;
}
.scn-camp-lewis-defiance .figure-lewis {
  position: absolute; bottom: 20%; left: 45%; width: 45px; height: 90px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  box-shadow: 2px 0 10px rgba(0,0,0,0.5);
  animation: cld-lewis 4s ease-in-out infinite alternate;
}
.scn-camp-lewis-defiance .sword {
  position: absolute; bottom: 35%; left: 55%; width: 4px; height: 60px;
  background: linear-gradient(180deg, #8a8a8a 0%, #4a4a4a 100%);
  border-radius: 2px;
  transform-origin: bottom center;
  box-shadow: 0 0 6px rgba(200,200,200,0.3);
  animation: cld-sword 3s ease-in-out infinite;
}
.scn-camp-lewis-defiance .shield {
  position: absolute; bottom: 30%; left: 30%; width: 30px; height: 40px;
  background: linear-gradient(135deg, #4a3a3a 0%, #2a1a1a 100%);
  border-radius: 20% 20% 40% 40% / 30% 30% 40% 40%;
  box-shadow: inset 0 0 10px #5e1a1d; /* desaturated red accent */
  transform: rotate(10deg);
  animation: cld-shield 5s ease-in-out infinite alternate;
}
.scn-camp-lewis-defiance .shadow-figure {
  position: absolute; bottom: 20%; left: 65%; width: 30px; height: 70px;
  background: linear-gradient(180deg, #4a4a4a 0%, #2a2a2a 100%);
  border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%;
  opacity: 0.5;
  transform: scaleX(-1);
  animation: cld-shadow 8s ease-in-out infinite;
}
@keyframes cld-sky { 0% { opacity: 0.6 } 50% { opacity: 0.9 } 100% { opacity: 0.7 } }
@keyframes cld-tent { 0%,100% { transform: translateY(0) } 50% { transform: translateY(3px) } }
@keyframes cld-lewis {
  0% { transform: translateX(0) rotate(-3deg) }
  50% { transform: translateX(-2px) rotate(3deg) }
  100% { transform: translateX(0) rotate(-3deg) }
}
@keyframes cld-sword {
  0% { transform: rotate(0deg) }
  50% { transform: rotate(15deg) }
  100% { transform: rotate(0deg) }
}
@keyframes cld-shield {
  0% { transform: rotate(10deg) scale(1) }
  50% { transform: rotate(15deg) scale(1.05) }
  100% { transform: rotate(10deg) scale(1) }
}
@keyframes cld-shadow {
  0% { opacity: 0.3; transform: scaleX(-1) translateY(0) }
  50% { opacity: 0.6; transform: scaleX(-1) translateY(-3px) }
  100% { opacity: 0.3; transform: scaleX(-1) translateY(0) }
}

/* camp-cardinal-plea - calm overcast */
.scn-camp-cardinal-plea {
  background: linear-gradient(180deg, #8a8a8a 0%, #7a7a7a 30%, #6a6a6a 60%, #5a5a5a 100%),
              radial-gradient(ellipse at 50% 20%, #9a9a9a 0%, transparent 60%);
}
.scn-camp-cardinal-plea .sky {
  position: absolute; inset: 0 0 60% 0;
  background: linear-gradient(180deg, #7a7a7a 0%, #5a5a5a 100%);
  animation: ccp-sky 20s ease-in-out infinite alternate;
}
.scn-camp-cardinal-plea .ground {
  position: absolute; inset: 60% 0 0 0;
  background: linear-gradient(0deg, #3a3a3a 0%, #4a4a4a 50%, #5a5a5a 100%);
  border-radius: 50% 30% 0 0 / 20% 10% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.2);
}
.scn-camp-cardinal-plea .tent-opening {
  position: absolute; bottom: 30%; left: 35%; width: 100px; height: 80px;
  background: linear-gradient(135deg, #4a4a4a 0%, #3a3a3a 100%);
  clip-path: polygon(0 100%, 50% 0%, 100% 100%);
  box-shadow: 0 0 15px rgba(0,0,0,0.3);
  animation: ccp-tent 12s ease-in-out infinite;
}
.scn-camp-cardinal-plea .figure-cardinal {
  position: absolute; bottom: 25%; left: 45%; width: 30px; height: 70px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ccp-cardinal 6s ease-in-out infinite alternate;
}
.scn-camp-cardinal-plea .kneeling-figure {
  position: absolute; bottom: 20%; left: 30%; width: 25px; height: 50px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%;
  transform: skewX(-5deg);
  animation: ccp-kneel 8s ease-in-out infinite;
}
.scn-camp-cardinal-plea .cross {
  position: absolute; bottom: 45%; left: 55%; width: 6px; height: 50px;
  background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%);
  border-radius: 3px;
  transform: rotate(5deg);
  animation: ccp-cross 9s ease-in-out infinite;
}
.scn-camp-cardinal-plea .cross::before {
  content: '';
  position: absolute; top: 10px; left: -10px; width: 26px; height: 6px;
  background: inherit;
  border-radius: 3px;
}
.scn-camp-cardinal-plea .halo {
  position: absolute; bottom: 55%; left: 48%; width: 20px; height: 20px;
  background: radial-gradient(circle, #8a8a6a 0%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 20px 5px rgba(138,138,106,0.3);
  animation: ccp-halo 7s ease-in-out infinite alternate;
}
@keyframes ccp-sky { 0% { opacity: 0.7 } 50% { opacity: 0.95 } 100% { opacity: 0.8 } }
@keyframes ccp-tent { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-2px) } }
@keyframes ccp-cardinal {
  0% { transform: translateX(0) rotate(-2deg) }
  50% { transform: translateX(-1px) rotate(1deg) }
  100% { transform: translateX(0) rotate(-2deg) }
}
@keyframes ccp-kneel {
  0% { transform: translateY(0) skewX(-5deg) }
  50% { transform: translateY(-2px) skewX(-3deg) }
  100% { transform: translateY(0) skewX(-5deg) }
}
@keyframes ccp-cross {
  0% { transform: rotate(5deg) }
  50% { transform: rotate(3deg) }
  100% { transform: rotate(5deg) }
}
@keyframes ccp-halo {
  0% { box-shadow: 0 0 15px 3px rgba(138,138,106,0.2); opacity: 0.7 }
  50% { box-shadow: 0 0 25px 8px rgba(138,138,106,0.4); opacity: 1 }
  100% { box-shadow: 0 0 18px 5px rgba(138,138,106,0.25); opacity: 0.8 }
}

/* camp-bastard-challenge - tense overcast */
.scn-camp-bastard-challenge {
  background: linear-gradient(180deg, #4a4a4a 0%, #3a3a3a 30%, #2a2a2a 60%, #1a1a1a 100%),
              radial-gradient(ellipse at 70% 30%, #5a4a4a 0%, transparent 60%);
}
.scn-camp-bastard-challenge .sky {
  position: absolute; inset: 0 0 55% 0;
  background: linear-gradient(180deg, #3a3a3a 0%, #2a2a2a 100%);
  animation: cbc-sky 14s ease-in-out infinite alternate;
}
.scn-camp-bastard-challenge .ground {
  position: absolute; inset: 55% 0 0 0;
  background: linear-gradient(0deg, #1a1a1a 0%, #2a2a2a 50%, #3a3a3a 100%);
  border-radius: 20% 60% 0 0 / 30% 30% 0 0;
  box-shadow: inset 0 20px 30px rgba(0,0,0,0.6);
}
.scn-camp-bastard-challenge .tent {
  position: absolute; bottom: 30%; left: 60%; width: 110px; height: 80px;
  background: linear-gradient(135deg, #2a2a2a 0%, #1a1a1a 100%);
  clip-path: polygon(0 100%, 50% 0%, 100% 100%);
  box-shadow: 0 0 25px rgba(0,0,0,0.5);
  animation: cbc-tent 9s ease-in-out infinite;
}
.scn-camp-bastard-challenge .figure-bastard {
  position: absolute; bottom: 25%; left: 30%; width: 40px; height: 85px;
  background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%);
  border-radius: 35% 35% 25% 25% / 55% 55% 35% 35%;
  transform-origin: bottom center;
  box-shadow: 2px 0 12px rgba(100,40,30,0.4); /* rust tint */
  animation: cbc-bastard 5s ease-in-out infinite alternate;
}
.scn-camp-bastard-challenge .sword {
  position: absolute; bottom: 40%; left: 35%; width: 5px; height: 70px;
  background: linear-gradient(180deg, #8a7a7a 0%, #4a3a3a 100%);
  border-radius: 2px;
  transform-origin: bottom center;
  box-shadow: 0 0 8px rgba(200,180,180,0.2);
  animation: cbc-sword 3.5s ease-in-out infinite;
}
.scn-camp-bastard-challenge .attendant-a,
.scn-camp-bastard-challenge .attendant-b {
  position: absolute; bottom: 20%; width: 25px; height: 65px;
  background: linear-gradient(180deg, #2a2a2a 0%, #1a1a1a 100%);
  border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%;
  transform-origin: bottom center;
}
.scn-camp-bastard-challenge .attendant-a {
  left: 20%; animation: cbc-att 7s ease-in-out infinite;
}
.scn-camp-bastard-challenge .attendant-b {
  left: 45%; animation: cbc-att 7s ease-in-out 1.5s infinite;
}
.scn-camp-bastard-challenge .banner {
  position: absolute; bottom: 70%; left: 65%; width: 20px; height: 40px;
  background: linear-gradient(0deg, #5e3a2a 0%, #8a5a3a 100%); /* terracotta */
  border-radius: 0 0 30% 30%;
  transform-origin: bottom center;
  box-shadow: 0 0 10px rgba(200,100,60,0.3);
  animation: cbc-banner 6s ease-in-out infinite alternate;
}
@keyframes cbc-sky { 0% { opacity: 0.5 } 50% { opacity: 0.85 } 100% { opacity: 0.6 } }
@keyframes cbc-tent { 0%,100% { transform: translateY(0) } 50% { transform: translateY(4px) } }
@keyframes cbc-bastard {
  0% { transform: translateX(0) rotate(-2deg) }
  50% { transform: translateX(2px) rotate(2deg) }
  100% { transform: translateX(0) rotate(-2deg) }
}
@keyframes cbc-sword {
  0% { transform: rotate(20deg) }
  50% { transform: rotate(25deg) }
  100% { transform: rotate(20deg) }
}
@keyframes cbc-att {
  0% { transform: translateY(0) }
  50% { transform: translateY(-3px) }
  100% { transform: translateY(0) }
}
@keyframes cbc-banner {
  0% { transform: rotate(-5deg) }
  100% { transform: rotate(10deg) }
}

.scn-constance-curses-pandulph {
  background:
    linear-gradient(180deg, #f9e1b0 0%, #d4a76a 40%, #8b5e3c 100%),
    radial-gradient(ellipse at 50% 20%, #fff8e0 0%, transparent 60%);
}
.scn-constance-curses-pandulph .sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #f9e1b0 0%, #e8c48a 100%);
  animation: ccp-sky 15s ease-in-out infinite alternate;
}
.scn-constance-curses-pandulph .sun {
  position: absolute; top: 5%; left: 70%; width: 50px; height: 50px;
  background: radial-gradient(circle, #ffe680 0%, #f0c040 60%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 60px 20px rgba(240,192,64,0.5);
  animation: ccp-sun 12s ease-in-out infinite alternate;
}
.scn-constance-curses-pandulph .hills {
  position: absolute; bottom: 20%; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #5a3a2a 0%, #3a2212 100%);
  border-radius: 60% 40% 0 0 / 80% 70% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.4);
  animation: ccp-hills 20s ease-in-out infinite alternate;
}
.scn-constance-curses-pandulph .figure-left {
  position: absolute; bottom: 22%; left: 30%; width: 20px; height: 50px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ccp-figleft 6s ease-in-out infinite;
}
.scn-constance-curses-pandulph .figure-right {
  position: absolute; bottom: 20%; left: 55%; width: 22px; height: 55px;
  background: linear-gradient(180deg, #5e1a1d 0%, #2a080a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ccp-figright 8s ease-in-out infinite;
}
.scn-constance-curses-pandulph .cross {
  position: absolute; bottom: 25%; left: 50%; width: 4px; height: 60px;
  background: linear-gradient(180deg, #6a4a3a 0%, #3a2a1a 100%);
  transform: translateX(-50%);
  box-shadow: 0 0 10px rgba(0,0,0,0.3);
}
.scn-constance-curses-pandulph .cross::before {
  content: ''; position: absolute; top: 10px; left: -12px; width: 28px; height: 4px;
  background: inherit;
}
.scn-constance-curses-pandulph .cloud-a {
  position: absolute; top: 12%; left: 10%; width: 90px; height: 20px;
  background: linear-gradient(180deg, rgba(255,255,230,0.6) 0%, rgba(255,255,230,0.1) 100%);
  border-radius: 50%;
  filter: blur(6px);
  animation: ccp-drift-a 45s linear infinite;
}
.scn-constance-curses-pandulph .cloud-b {
  position: absolute; top: 18%; right: 8%; width: 70px; height: 16px;
  background: linear-gradient(180deg, rgba(255,255,230,0.4) 0%, rgba(255,255,230,0.05) 100%);
  border-radius: 50%;
  filter: blur(5px);
  animation: ccp-drift-b 60s linear infinite reverse;
}
@keyframes ccp-sky { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.7; } }
@keyframes ccp-sun { 0% { transform: scale(0.95); opacity: 0.9; } 50% { transform: scale(1.05); opacity: 1; } 100% { transform: scale(0.95); opacity: 0.9; } }
@keyframes ccp-hills { 0% { transform: translateY(0); } 50% { transform: translateY(-3px); } 100% { transform: translateY(0); } }
@keyframes ccp-figleft { 0% { transform: translateX(0) rotate(0deg); } 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 ccp-figright { 0% { transform: translateX(0) translateY(0) rotate(-1deg); } 50% { transform: translateX(-3px) translateY(-2px) rotate(2deg); } 100% { transform: translateX(0) translateY(0) rotate(-1deg); } }
@keyframes ccp-drift-a { 0% { transform: translateX(-40px); } 100% { transform: translateX(120vw); } }
@keyframes ccp-drift-b { 0% { transform: translateX(0); } 100% { transform: translateX(-110vw); } }

.scn-pandulph-threatens-france {
  background:
    linear-gradient(180deg, #f2e0c0 0%, #c8a87a 50%, #7a5a3a 100%),
    radial-gradient(ellipse at 30% 60%, #fff4d0 0%, transparent 70%);
}
.scn-pandulph-threatens-france .bg-church {
  position: absolute; inset: 0 0 20% 0;
  background:
    linear-gradient(180deg, transparent 0%, rgba(100,60,30,0.3) 100%),
    repeating-linear-gradient(90deg, transparent 0%, transparent 3%, rgba(0,0,0,0.05) 3%, rgba(0,0,0,0.05) 6%);
  animation: ptf-bg 25s ease-in-out infinite alternate;
}
.scn-pandulph-threatens-france .figure-pandulph {
  position: absolute; bottom: 18%; left: 25%; width: 24px; height: 60px;
  background: linear-gradient(180deg, #702243 0%, #3a101a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ptf-pandulph 4s ease-in-out infinite;
}
.scn-pandulph-threatens-france .figure-philip {
  position: absolute; bottom: 20%; left: 55%; width: 22px; 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: ptf-philip 3.5s ease-in-out infinite;
}
.scn-pandulph-threatens-france .staff {
  position: absolute; bottom: 25%; left: 35%; width: 3px; height: 70px;
  background: linear-gradient(180deg, #8a6a4a 0%, #4a2a1a 100%);
  transform: rotate(-15deg);
  transform-origin: bottom;
  animation: ptf-staff 5s ease-in-out infinite alternate;
}
.scn-pandulph-threatens-france .light-ray {
  position: absolute; top: 0; left: 20%; width: 60%; height: 100%;
  background: linear-gradient(135deg, rgba(255,240,200,0.3) 0%, transparent 100%);
  clip-path: polygon(0 0, 100% 0, 60% 100%, 0% 100%);
  animation: ptf-ray 8s ease-in-out infinite;
}
.scn-pandulph-threatens-france .dust-1 {
  position: absolute; bottom: 15%; left: 40%; width: 4px; height: 4px;
  background: rgba(200,180,150,0.6);
  border-radius: 50%;
  animation: ptf-dust1 7s ease-in-out infinite;
}
.scn-pandulph-threatens-france .dust-2 {
  position: absolute; bottom: 12%; left: 50%; width: 3px; height: 3px;
  background: rgba(200,180,150,0.4);
  border-radius: 50%;
  animation: ptf-dust2 9s ease-in-out infinite alternate;
}
@keyframes ptf-bg { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.7; } }
@keyframes ptf-pandulph { 0% { transform: translateX(0) rotate(-1deg); } 30% { transform: translateX(8px) rotate(3deg) scale(1.02); } 60% { transform: translateX(-2px) rotate(-2deg); } 100% { transform: translateX(0) rotate(-1deg); } }
@keyframes ptf-philip { 0% { transform: translateX(0) translateY(0) rotate(0deg); } 30% { transform: translateX(-5px) translateY(-2px) rotate(2deg); } 60% { transform: translateX(3px) translateY(1px) rotate(-1deg); } 100% { transform: translateX(0) translateY(0) rotate(0deg); } }
@keyframes ptf-staff { 0% { transform: rotate(-15deg); } 50% { transform: rotate(-10deg); } 100% { transform: rotate(-15deg); } }
@keyframes ptf-ray { 0% { opacity: 0.3; } 50% { opacity: 0.6; } 100% { opacity: 0.3; } }
@keyframes ptf-dust1 { 0% { transform: translate(0,0); opacity: 0; } 50% { transform: translate(10px, -15px); opacity: 1; } 100% { transform: translate(20px, -30px); opacity: 0; } }
@keyframes ptf-dust2 { 0% { transform: translate(0,0); opacity: 0; } 50% { transform: translate(-8px, -10px); opacity: 0.8; } 100% { transform: translate(-16px, -20px); opacity: 0; } }

.scn-philip-perplexed {
  background:
    linear-gradient(180deg, #e8d8b0 0%, #b89e70 50%, #6a4a2a 100%),
    radial-gradient(ellipse at 50% 30%, #fff8e0 0%, transparent 60%);
}
.scn-philip-perplexed .bg-tent {
  position: absolute; inset: 0 0 10% 0;
  background:
    linear-gradient(135deg, #d8c8a0 0%, #a08860 100%),
    repeating-linear-gradient(45deg, transparent 0%, transparent 2%, rgba(0,0,0,0.03) 2%, rgba(0,0,0,0.03) 4%);
  clip-path: polygon(0 0, 100% 0, 80% 100%, 20% 100%);
  animation: ppx-tent 20s ease-in-out infinite alternate;
}
.scn-philip-perplexed .figure-philip {
  position: absolute; bottom: 20%; left: 50%; width: 24px; height: 58px;
  background: linear-gradient(180deg, #5a4a3a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: translateX(-50%);
  transform-origin: bottom center;
  animation: ppx-philip 5s ease-in-out infinite;
}
.scn-philip-perplexed .table {
  position: absolute; bottom: 15%; left: 45%; width: 50px; height: 8px;
  background: linear-gradient(180deg, #8a6a4a 0%, #4a2a1a 100%);
  border-radius: 2px;
  transform: translateX(-50%);
  animation: ppx-table 10s ease-in-out infinite alternate;
}
.scn-philip-perplexed .candle {
  position: absolute; bottom: 22%; left: 48%; width: 6px; height: 20px;
  background: linear-gradient(180deg, #f0d080 0%, #c8a050 100%);
  border-radius: 3px;
  animation: ppx-candle 3s ease-in-out infinite;
}
.scn-philip-perplexed .candle::before {
  content: ''; position: absolute; top: -8px; left: -2px; width: 10px; height: 10px;
  background: radial-gradient(circle, #ffe080 0%, #f0a030 50%, transparent 100%);
  border-radius: 50%;
  animation: ppx-flame 0.5s ease-in-out infinite alternate;
}
.scn-philip-perplexed .scroll {
  position: absolute; bottom: 17%; left: 60%; width: 30px; height: 12px;
  background: linear-gradient(180deg, #e8d8b0 0%, #c8b090 100%);
  border-radius: 2px;
  box-shadow: 0 2px 4px rgba(0,0,0,0.2);
  animation: ppx-scroll 7s ease-in-out infinite;
}
.scn-philip-perplexed .wall-left {
  position: absolute; top: 0; left: 0; width: 15%; height: 100%;
  background: linear-gradient(0deg, #4a3a2a 0%, #2a1a0a 100%);
  box-shadow: 2px 0 10px rgba(0,0,0,0.3);
}
.scn-philip-perplexed .wall-right {
  position: absolute; top: 0; right: 0; width: 15%; height: 100%;
  background: linear-gradient(0deg, #4a3a2a 0%, #2a1a0a 100%);
  box-shadow: -2px 0 10px rgba(0,0,0,0.3);
}
@keyframes ppx-tent { 0% { clip-path: polygon(0 0, 100% 0, 80% 100%, 20% 100%); } 50% { clip-path: polygon(0 0, 100% 0, 78% 100%, 22% 100%); } 100% { clip-path: polygon(0 0, 100% 0, 80% 100%, 20% 100%); } }
@keyframes ppx-philip { 0% { transform: translateX(-50%) rotate(0deg); } 30% { transform: translateX(-50%) translateY(-2px) rotate(3deg); } 60% { transform: translateX(-50%) translateY(1px) rotate(-2deg); } 100% { transform: translateX(-50%) rotate(0deg); } }
@keyframes ppx-table { 0% { transform: translateX(-50%) scaleX(1); } 50% { transform: translateX(-50%) scaleX(1.02); } 100% { transform: translateX(-50%) scaleX(1); } }
@keyframes ppx-candle { 0% { transform: scaleX(1); } 50% { transform: scaleX(1.1); } 100% { transform: scaleX(1); } }
@keyframes ppx-flame { 0% { transform: scale(1) rotate(-2deg); } 100% { transform: scale(1.2) rotate(2deg); } }
@keyframes ppx-scroll { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(-3px) rotate(2deg); } 100% { transform: translateX(0) rotate(0deg); } }

.scn-pandulph-orders-war {
  background:
    linear-gradient(180deg, #c8a070 0%, #a07848 40%, #5a3a1a 100%),
    radial-gradient(ellipse at 60% 20%, #ffe8b0 0%, transparent 50%);
}
.scn-pandulph-orders-war .bg-battle {
  position: absolute; inset: 0 0 30% 0;
  background:
    linear-gradient(180deg, transparent 0%, rgba(40,20,5,0.3) 100%),
    repeating-linear-gradient(0deg, transparent 0%, transparent 4%, rgba(0,0,0,0.05) 4%, rgba(0,0,0,0.05) 8%);
  animation: pow-bg 30s linear infinite alternate;
}
.scn-pandulph-orders-war .figure-pandulph {
  position: absolute; bottom: 18%; left: 45%; width: 26px; height: 62px;
  background: linear-gradient(180deg, #702243 0%, #3a101a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pow-pandulph 4s ease-in-out infinite;
}
.scn-pandulph-orders-war .figure-pandulph::after {
  content: ''; position: absolute; top: -10px; left: 5px; width: 16px; height: 16px;
  background: radial-gradient(circle, #ffd080 0%, transparent 100%);
  border-radius: 50%;
  animation: pow-halo 3s ease-in-out infinite alternate;
}
.scn-pandulph-orders-war .soldier-1 {
  position: absolute; bottom: 15%; left: 25%; width: 18px; height: 45px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pow-soldier1 6s ease-in-out infinite;
}
.scn-pandulph-orders-war .soldier-2 {
  position: absolute; bottom: 16%; left: 65%; width: 18px; height: 44px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pow-soldier2 6.5s ease-in-out infinite alternate;
}
.scn-pandulph-orders-war .banner {
  position: absolute; bottom: 30%; left: 48%; width: 4px; height: 80px;
  background: linear-gradient(180deg, #5a3a1a 0%, #2a1a0a 100%);
  transform: translateX(-50%);
}
.scn-pandulph-orders-war .banner::after {
  content: ''; position: absolute; top: 0; left: 2px; width: 25px; height: 18px;
  background: linear-gradient(180deg, #a0461a 0%, #5e1a1d 100%);
  border-radius: 0 40% 0 0;
  box-shadow: 2px 2px 6px rgba(0,0,0,0.4);
  animation: pow-banner 7s ease-in-out infinite;
}
.scn-pandulph-orders-war .sun-back {
  position: absolute; top: 2%; right: 10%; width: 80px; height: 80px;
  background: radial-gradient(circle, #ffd080 0%, #f0a030 40%, transparent 80%);
  border-radius: 50%;
  animation: pow-sun 15s ease-in-out infinite alternate;
}
.scn-pandulph-orders-war .smoke-1 {
  position: absolute; bottom: 10%; left: 30%; width: 30px; height: 30px;
  background: radial-gradient(circle, rgba(180,160,120,0.3) 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(8px);
  animation: pow-smoke1 12s ease-in-out infinite;
}
.scn-pandulph-orders-war .smoke-2 {
  position: absolute; bottom: 8%; left: 55%; width: 40px; height: 40px;
  background: radial-gradient(circle, rgba(180,160,120,0.2) 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(10px);
  animation: pow-smoke2 14s ease-in-out infinite alternate;
}
@keyframes pow-bg { 0% { opacity: 0.7; } 50% { opacity: 0.9; } 100% { opacity: 0.7; } }
@keyframes pow-pandulph { 0% { transform: translateX(0) rotate(0deg); } 30% { transform: translateX(5px) rotate(-3deg) scale(1.03); } 60% { transform: translateX(-3px) rotate(2deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes pow-halo { 0% { opacity: 0.6; transform: scale(1); } 100% { opacity: 1; transform: scale(1.3); } }
@keyframes pow-soldier1 { 0% { transform: translateX(0) translateY(0); } 50% { transform: translateX(4px) translateY(-2px); } 100% { transform: translateX(0) translateY(0); } }
@keyframes pow-soldier2 { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(-3px) rotate(2deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes pow-banner { 0% { transform: rotate(0deg); } 50% { transform: rotate(5deg); } 100% { transform: rotate(0deg); } }
@keyframes pow-sun { 0% { transform: scale(0.95); opacity: 0.8; } 50% { transform: scale(1.05); opacity: 1; } 100% { transform: scale(0.95); opacity: 0.8; } }
@keyframes pow-smoke1 { 0% { transform: translateY(0) scale(1); opacity: 0.3; } 50% { transform: translateY(-20px) scale(1.5); opacity: 0.1; } 100% { transform: translateY(0) scale(1); opacity: 0.3; } }
@keyframes pow-smoke2 { 0% { transform: translateY(0) scale(1); opacity: 0.2; } 50% { transform: translateY(-15px) scale(1.3); opacity: 0.05; } 100% { transform: translateY(0) scale(1); opacity: 0.2; } }

/* Scene 1: item-lion-robe */
.scn-item-lion-robe {
  background: linear-gradient(180deg, #7ea8c4 0%, #d4b96a 40%, #c8983a 65%, #7a5a2a 100%),
              radial-gradient(ellipse at 50% 0%, #f4e3a0 0%, transparent 50%);
}
.scn-item-lion-robe .sky { position:absolute; inset:0 0 45% 0; background: linear-gradient(180deg, #6a9fc4 0%, #b8d8f0 40%, transparent 100%); animation: lr-sky 12s ease-in-out infinite alternate; }
.scn-item-lion-robe .sun { position:absolute; top:15%; left:70%; width:60px; height:60px; background: radial-gradient(circle, #fff8d0 0%, #f0c060 50%, transparent 70%); border-radius:50%; filter: blur(8px); animation: lr-sun 6s ease-in-out infinite; }
.scn-item-lion-robe .castle { position:absolute; bottom:35%; left:10%; width:120px; height:100px; background: linear-gradient(180deg, #8a7a6a 0%, #5a4a3a 100%), linear-gradient(90deg, transparent 10%, #4a3a2a 10%, #4a3a2a 15%, transparent 15%, transparent 20%, #4a3a2a 20%, #4a3a2a 25%, transparent 25%); background-blend-mode: overlay; border-radius:10% 10% 0 0; box-shadow: inset 0 -8px 20px rgba(0,0,0,.5); animation: lr-castle 20s ease-in-out infinite; }
.scn-item-lion-robe .banner { position:absolute; bottom:30%; left:40%; width:140px; height:160px; background: linear-gradient(180deg, #c8553d 0%, #a0461a 70%, #702243 100%); border-radius:5% 5% 40% 40%; clip-path: polygon(0 0, 100% 0, 90% 80%, 50% 100%, 10% 80%); box-shadow: 0 20px 30px rgba(0,0,0,.6); animation: lr-banner 3s ease-in-out infinite alternate; }
.scn-item-lion-robe .lion-emblem { position:absolute; bottom:45%; left:45%; width:60px; height:80px; background: radial-gradient(ellipse at 50% 30%, #f0d080 0%, #b08040 50%, #5a3a1a 100%); border-radius:50% 50% 30% 30%/ 60% 60% 40% 40%; clip-path: polygon(30% 0, 70% 0, 80% 30%, 60% 50%, 70% 70%, 50% 100%, 30% 70%, 40% 50%, 20% 30%); animation: lr-lion 2s ease-in-out infinite; }
.scn-item-lion-robe .soldier-left { position:absolute; bottom:30%; left:10%; width:30px; height:120px; background: linear-gradient(180deg, #4a5a6a 0%, #2a3a4a 100%); border-radius:40% 40% 0 0/ 60% 60% 0 0; transform-origin: bottom center; animation: lr-soldier 1.5s ease-in-out infinite alternate; }
.scn-item-lion-robe .soldier-right { position:absolute; bottom:30%; right:15%; width:30px; height:120px; background: linear-gradient(180deg, #4a5a6a 0%, #2a3a4a 100%); border-radius:40% 40% 0 0/ 60% 60% 0 0; transform-origin: bottom center; animation: lr-soldier 1.8s ease-in-out infinite alternate-reverse; }
.scn-item-lion-robe .spear-left { position:absolute; bottom:40%; left:12%; width:4px; height:90px; background: linear-gradient(180deg, #8a7a6a 0%, #4a3a2a 100%); border-radius:2px; animation: lr-spear 2s ease-in-out infinite; }
.scn-item-lion-robe .spear-right { position:absolute; bottom:40%; right:17%; width:4px; height:90px; background: linear-gradient(180deg, #8a7a6a 0%, #4a3a2a 100%); border-radius:2px; animation: lr-spear 2.2s ease-in-out infinite reverse; }
@keyframes lr-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.9 } }
@keyframes lr-sun { 0% { transform: scale(1); opacity:0.9 } 50% { transform: scale(1.1) rotate(15deg); opacity:1 } 100% { transform: scale(0.95) rotate(-10deg); opacity:0.8 } }
@keyframes lr-castle { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-3px) } }
@keyframes lr-banner { 0% { transform: rotate(-3deg) } 50% { transform: rotate(5deg) scale(1.02) } 100% { transform: rotate(-2deg) } }
@keyframes lr-lion { 0% { transform: scale(1) rotate(0) } 50% { transform: scale(1.05) rotate(5deg) } 100% { transform: scale(0.95) rotate(-3deg) } }
@keyframes lr-soldier { 0% { transform: rotate(0) } 50% { transform: rotate(4deg) translateY(-2px) } 100% { transform: rotate(-2deg) } }
@keyframes lr-spear { 0% { transform: translateY(0) rotate(0) } 50% { transform: translateY(-5px) rotate(2deg) } 100% { transform: translateY(2px) rotate(-1deg) } }

/* Scene 2: france-meeting */
.scn-france-meeting {
  background: linear-gradient(180deg, #e8d8b0 0%, #c4b080 30%, #a08050 60%, #5a4a2a 100%),
              radial-gradient(ellipse at 50% 0%, #fff8e0 0%, transparent 50%);
}
.scn-france-meeting .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #f0e0c0 0%, #d4c080 50%, transparent 100%); animation: fm-sky 15s ease-in-out infinite alternate; }
.scn-france-meeting .sun-glow { position:absolute; top:12%; left:50%; width:120px; height:120px; background: radial-gradient(circle, #fffce0 0%, #f0d080 40%, transparent 70%); border-radius:50%; filter: blur(15px); animation: fm-sun 9s ease-in-out infinite; }
.scn-france-meeting .ground { position:absolute; bottom:0; left:0; right:0; height:50%; background: linear-gradient(180deg, #7a6a4a 0%, #4a3a1a 100%); border-radius:30% 70% 0 0/ 20% 40% 0 0; }
.scn-france-meeting .figure-left { position:absolute; bottom:30%; left:35%; width:40px; height:110px; background: linear-gradient(180deg, #2a3a4a 0%, #1a2a3a 100%); border-radius:50% 50% 30% 30%/ 60% 60% 40% 40%; transform-origin: bottom center; animation: fm-figure 6s ease-in-out infinite alternate; }
.scn-france-meeting .figure-right { position:absolute; bottom:30%; left:52%; width:45px; height:120px; background: linear-gradient(180deg, #3a4a5a 0%, #1a2a3a 100%); border-radius:50% 50% 30% 30%/ 60% 60% 40% 40%; transform-origin: bottom center; animation: fm-figure 7s ease-in-out infinite alternate-reverse; }
.scn-france-meeting .banner-left { position:absolute; bottom:35%; left:20%; width:60px; height:80px; background: linear-gradient(180deg, #b87878 0%, #8a5a5a 100%); border-radius:5% 5% 50% 50%/ 10% 10% 80% 80%; transform-origin: bottom left; animation: fm-banner 10s ease-in-out infinite; }
.scn-france-meeting .banner-right { position:absolute; bottom:35%; right:20%; width:60px; height:80px; background: linear-gradient(180deg, #7a8a7a 0%, #4a5a4a 100%); border-radius:5% 5% 50% 50%/ 10% 10% 80% 80%; transform-origin: bottom right; animation: fm-banner 11s ease-in-out infinite reverse; }
.scn-france-meeting .grass { position:absolute; bottom:10%; left:0; right:0; height:40px; background: repeating-linear-gradient(45deg, #5a7a3a 0px, #5a7a3a 4px, #6a8a3a 4px, #6a8a3a 8px); border-radius:0 0 50% 50%; filter: blur(2px); animation: fm-grass 8s linear infinite; }
@keyframes fm-sky { 0% { opacity:0.9 } 50% { opacity:1 } 100% { opacity:0.85 } }
@keyframes fm-sun { 0% { transform: scale(1) rotate(0); opacity:0.8 } 50% { transform: scale(1.08) rotate(10deg); opacity:1 } 100% { transform: scale(0.92) rotate(-5deg); opacity:0.7 } }
@keyframes fm-figure { 0% { transform: translateX(0) rotate(0) } 50% { transform: translateX(5px) rotate(2deg) } 100% { transform: translateX(-3px) rotate(-1deg) } }
@keyframes fm-banner { 0% { transform: rotate(0) scaleY(1) } 50% { transform: rotate(8deg) scaleY(1.05) } 100% { transform: rotate(-4deg) scaleY(0.95) } }
@keyframes fm-grass { 0% { background-position: 0 0 } 100% { background-position: 40px 0 } }

/* Scene 3: france-parley */
.scn-france-parley {
  background: linear-gradient(180deg, #8aacbe 0%, #c0a060 30%, #a08040 60%, #4a3a1a 100%),
              radial-gradient(ellipse at 50% 0%, #f8f0d0 0%, transparent 40%);
}
.scn-france-parley .sky { position:absolute; inset:0 0 45% 0; background: linear-gradient(180deg, #c0d8e0 0%, #b0c8d8 35%, transparent 100%); animation: fp-sky 18s ease-in-out infinite alternate; }
.scn-france-parley .ground { position:absolute; bottom:0; left:0; right:0; height:55%; background: linear-gradient(180deg, #7a6a4a 0%, #3a2a0a 100%); border-radius:20% 80% 0 0/ 10% 30% 0 0; }
.scn-france-parley .army-left { position:absolute; bottom:25%; left:5%; width:120px; height:140px; background: repeating-linear-gradient(90deg, #2a3a4a 0px, #2a3a4a 12px, #1a2a3a 12px, #1a2a3a 24px); clip-path: polygon(0 0, 100% 0, 80% 100%, 0 100%); opacity:0.8; animation: fp-army 3s ease-in-out infinite; }
.scn-france-parley .army-right { position:absolute; bottom:25%; right:5%; width:120px; height:140px; background: repeating-linear-gradient(90deg, #3a2a2a 0px, #3a2a2a 12px, #2a1a1a 12px, #2a1a1a 24px); clip-path: polygon(20% 0, 100% 0, 100% 100%, 0 100%); opacity:0.8; animation: fp-army 3.5s ease-in-out infinite reverse; }
.scn-france-parley .herald { position:absolute; bottom:30%; left:50%; width:30px; height:130px; transform: translateX(-50%); background: linear-gradient(180deg, #4a5a6a 0%, #2a3a4a 100%); border-radius:40% 40% 0 0/ 60% 60% 0 0; transform-origin: bottom center; animation: fp-herald 2s ease-in-out infinite; }
.scn-france-parley .flag-parley { position:absolute; bottom:45%; left:50%; width:80px; height:60px; transform: translateX(-50%); background: linear-gradient(180deg, #e8e0d0 0%, #c0b0a0 100%); border-radius:0 60% 60% 0; clip-path: polygon(0 0, 100% 10%, 100% 90%, 0 100%); box-shadow: 0 0 20px rgba(255,255,200,.6); animation: fp-flag 2.5s ease-in-out infinite alternate; }
.scn-france-parley .dust { position:absolute; bottom:15%; left:30%; right:30%; height:30px; background: radial-gradient(ellipse, rgba(200,180,120,.4) 0%, transparent 70%); filter: blur(8px); animation: fp-dust 4s linear infinite; }
@keyframes fp-sky { 0% { opacity:0.85 } 50% { opacity:1 } 100% { opacity:0.75 } }
@keyframes fp-army { 0% { transform: translateX(0) } 50% { transform: translateX(5px) } 100% { transform: translateX(-3px) } }
@keyframes fp-herald { 0% { transform: translateX(-50%) rotate(0) } 50% { transform: translateX(-50%) rotate(3deg) } 100% { transform: translateX(-50%) rotate(-2deg) } }
@keyframes fp-flag { 0% { transform: translateX(-50%) rotate(0) } 50% { transform: translateX(-50%) rotate(10deg) scaleX(1.05) } 100% { transform: translateX(-50%) rotate(-5deg) } }
@keyframes fp-dust { 0% { transform: translateX(-20px) scale(1); opacity:0.6 } 50% { transform: translateX(20px) scale(1.2); opacity:1 } 100% { transform: translateX(-20px) scale(0.8); opacity:0.4 } }

/* Scene 4: france-constance-rant */
.scn-france-constance-rant {
  background: linear-gradient(180deg, #d4c0a0 0%, #b09878 40%, #6a5a3a 70%, #2a1a0a 100%),
              radial-gradient(ellipse at 50% 0%, #fff8e0 0%, transparent 30%);
}
.scn-france-constance-rant .sky { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #e8dcc0 0%, #c8b898 50%, transparent 100%); animation: fc-sky 20s ease-in-out infinite alternate; }
.scn-france-constance-rant .sun-harsh { position:absolute; top:5%; left:70%; width:80px; height:80px; background: radial-gradient(circle, #fff8e0 0%, #f0d080 40%, transparent 70%); border-radius:50%; filter: blur(12px); animation: fc-sun 5s ease-in-out infinite; }
.scn-france-constance-rant .ground { position:absolute; bottom:0; left:0; right:0; height:55%; background: linear-gradient(180deg, #4a3a2a 0%, #1a0a0a 100%); border-radius:40% 60% 0 0/ 20% 30% 0 0; }
.scn-france-constance-rant .constance { position:absolute; bottom:30%; left:35%; width:55px; height:150px; background: linear-gradient(180deg, #2a1a1a 0%, #0a0a0a 100%); border-radius:50% 50% 30% 30%/ 60% 60% 40% 40%; transform-origin: bottom center; animation: fc-constance 4s ease-in-out infinite; }
.scn-france-constance-rant .arthur { position:absolute; bottom:25%; left:48%; width:30px; height:90px; background: linear-gradient(180deg, #3a2a2a 0%, #1a0a0a 100%); border-radius:50% 50% 30% 30%/ 60% 60% 40% 40%; transform-origin: bottom center; animation: fc-arthur 3.5s ease-in-out infinite alternate; }
.scn-france-constance-rant .tear { position:absolute; width:6px; height:10px; background: radial-gradient(circle, #e0e0f0 0%, #a0b0d0 100%); border-radius:50% 50% 50% 50%/ 60% 60% 40% 40%; filter: blur(1px); opacity:0.8; }
.scn-france-constance-rant .tear-1 { top:28%; left:40%; animation: fc-tear 2s ease-in infinite; }
.scn-france-constance-rant .tear-2 { top:32%; left:43%; animation: fc-tear 2.5s ease-in infinite 0.4s; }
.scn-france-constance-rant .tear-3 { top:30%; left:46%; animation: fc-tear 3s ease-in infinite 0.8s; }
@keyframes fc-sky { 0% { opacity:0.8; filter:brightness(1.2) } 50% { opacity:1; filter:brightness(1.5) } 100% { opacity:0.7; filter:brightness(1) } }
@keyframes fc-sun { 0% { transform: scale(1); opacity:0.9 } 50% { transform: scale(1.1); opacity:1 } 100% { transform: scale(0.9); opacity:0.7 } }
@keyframes fc-constance { 0% { transform: translateX(0) rotate(0) } 50% { transform: translateX(-5px) rotate(3deg) } 100% { transform: translateX(3px) rotate(-2deg) } }
@keyframes fc-arthur { 0% { transform: translateX(0) scaleY(1) } 50% { transform: translateX(2px) scaleY(1.02) } 100% { transform: translateX(-1px) scaleY(0.98) } }
@keyframes fc-tear { 0% { transform: translateY(0) scale(1); opacity:0.9 } 50% { transform: translateY(30vh) scale(0.8); opacity:0.6 } 100% { transform: translateY(60vh) scale(0.4); opacity:0 } }

/* castle-arthur-dead */
.scn-castle-arthur-dead {
  background: linear-gradient(160deg, #0b0d1a 0%, #1a1f30 40%, #121624 80%),
              radial-gradient(ellipse at 50% 40%, #2a3b5c 0%, transparent 70%);
}
.scn-castle-arthur-dead .bg-dark {
  position: absolute; inset: 0; background: linear-gradient(180deg, rgba(10,12,25,0.95) 0%, rgba(15,18,35,0.8) 70%, transparent 100%);
  animation: cad-fade 16s ease-in-out infinite alternate;
}
.scn-castle-arthur-dead .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 28%; 
  background: linear-gradient(0deg, #1a1f2e 0%, #2a3150 30%, #3a4468 100%);
  border-radius: 60% 40% 0 0 / 20% 30% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.7);
}
.scn-castle-arthur-dead .moonbeam {
  position: absolute; top: 10%; left: 35%; width: 30%; height: 55%;
  background: linear-gradient(180deg, rgba(100,120,180,0.25) 0%, rgba(80,100,160,0.1) 50%, transparent 100%);
  clip-path: polygon(0% 0%, 60% 0%, 40% 100%, 0% 100%);
  filter: blur(8px);
  animation: cad-beam 20s ease-in-out infinite alternate;
}
.scn-castle-arthur-dead .arthur-body {
  position: absolute; bottom: 15%; left: 40%; width: 40px; height: 70px;
  background: linear-gradient(180deg, #1a1a2e 0%, #2a2a44 100%);
  border-radius: 30% 30% 20% 20% / 40% 40% 30% 30%;
  transform: rotate(-15deg);
  box-shadow: 0 4px 12px rgba(0,0,0,0.8);
  animation: cad-rest 6s ease-in-out infinite;
}
.scn-castle-arthur-dead .crown {
  position: absolute; bottom: 58%; left: 42%; width: 20px; height: 12px;
  background: linear-gradient(180deg, #b8860b 0%, #735a0a 100%);
  border-radius: 50% 50% 10% 10%;
  transform: rotate(-15deg) translateY(4px);
  box-shadow: 0 0 10px rgba(184,134,11,0.4);
  animation: cad-gleam 4s ease-in-out infinite;
}
.scn-castle-arthur-dead .shadow-figure {
  position: absolute; bottom: 22%; left: 20%; width: 30px; height: 80px;
  background: radial-gradient(ellipse at 50% 100%, #0a0c15 0%, transparent 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 30% 30%;
  transform: rotate(5deg);
  filter: blur(2px);
  animation: cad-stand 12s ease-in-out infinite alternate;
}
.scn-castle-arthur-dead .chain {
  position: absolute; bottom: 20%; left: 10%; width: 100px; height: 4px;
  background: repeating-linear-gradient(90deg, #4a4a6a 0px, #4a4a6a 4px, #2a2a4a 4px, #2a2a4a 8px);
  border-radius: 2px;
  transform: rotate(-10deg);
  filter: blur(1px);
  animation: cad-sway 8s ease-in-out infinite;
}

@keyframes cad-fade { 0% { opacity: 0.9 } 50% { opacity: 1 } 100% { opacity: 0.8 } }
@keyframes cad-beam { 0% { opacity: 0.3; transform: skewX(-3deg) } 50% { opacity: 0.7; transform: skewX(0deg) } 100% { opacity: 0.4; transform: skewX(3deg) } }
@keyframes cad-rest { 0%,100% { transform: rotate(-15deg) translateY(0) } 50% { transform: rotate(-14deg) translateY(-1px) } }
@keyframes cad-gleam { 0%,100% { box-shadow: 0 0 8px rgba(184,134,11,0.3) } 50% { box-shadow: 0 0 20px 4px rgba(184,134,11,0.6) } }
@keyframes cad-stand { 0% { transform: rotate(5deg) scaleY(1) } 50% { transform: rotate(6deg) scaleY(0.98) } 100% { transform: rotate(4deg) scaleY(1) } }
@keyframes cad-sway { 0%,100% { transform: rotate(-10deg) translateX(0) } 25% { transform: rotate(-8deg) translateX(2px) } 75% { transform: rotate(-12deg) translateX(-2px) } }

/* castle-vow-revenge */
.scn-castle-vow-revenge {
  background: linear-gradient(170deg, #0e111f 0%, #1c2036 50%, #0f1322 100%),
              radial-gradient(ellipse at 30% 60%, #25345c 0%, transparent 60%);
}
.scn-castle-vow-revenge .bg-vault {
  position: absolute; inset: 0; background: linear-gradient(0deg, #131827 0%, #1f253f 50%, #2a3150 100%);
  clip-path: polygon(0% 20%, 100% 0%, 100% 100%, 0% 100%);
  animation: cvr-drift 30s ease-in-out infinite alternate;
}
.scn-castle-vow-revenge .altar-stone {
  position: absolute; bottom: 10%; left: 10%; width: 80%; height: 12%;
  background: linear-gradient(180deg, #3a405a 0%, #2a2f45 100%);
  border-radius: 2% 2% 0 0;
  box-shadow: 0 -8px 20px rgba(0,0,0,0.6);
}
.scn-castle-vow-revenge .moonlight-shaft {
  position: absolute; top: 0; left: 20%; width: 60%; height: 65%;
  background: linear-gradient(180deg, rgba(130,150,200,0.12) 0%, rgba(100,120,170,0.06) 50%, transparent 100%);
  clip-path: polygon(20% 0%, 80% 0%, 70% 100%, 30% 100%);
  filter: blur(6px);
  animation: cvr-shaft 22s ease-in-out infinite;
}
.scn-castle-vow-revenge .kneeling-figure {
  position: absolute; bottom: 20%; left: 25%; width: 45px; height: 80px;
  background: linear-gradient(180deg, #1a1c2a 0%, #0e101a 100%);
  border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%;
  transform: rotate(5deg);
  box-shadow: 0 8px 20px rgba(0,0,0,0.7);
  animation: cvr-kneel 8s ease-in-out infinite;
}
.scn-castle-vow-revenge .dead-body {
  position: absolute; bottom: 10%; left: 55%; width: 50px; height: 30px;
  background: linear-gradient(180deg, #2a2a42 0%, #1a1a2e 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 40% 40%;
  transform: rotate(-10deg);
  filter: blur(2px);
  animation: cvr-still 12s ease-in-out infinite;
}
.scn-castle-vow-revenge .holy-book {
  position: absolute; bottom: 25%; left: 38%; width: 16px; height: 24px;
  background: linear-gradient(180deg, #6a5a3a 0%, #4a3a1a 100%);
  border-radius: 10% 10% 20% 20%;
  transform: rotate(-20deg);
  box-shadow: 0 2px 6px rgba(0,0,0,0.5);
  animation: cvr-open 10s ease-in-out infinite;
}
.scn-castle-vow-revenge .vow-sword {
  position: absolute; bottom: 18%; left: 15%; width: 6px; height: 50px;
  background: linear-gradient(180deg, #8a8a9a 0%, #4a4a5a 100%);
  border-radius: 2px;
  transform: rotate(-30deg);
  box-shadow: 0 0 8px rgba(138,138,154,0.3);
  animation: cvr-sword 6s ease-in-out infinite alternate;
}

@keyframes cvr-drift { 0% { opacity: 0.7 } 50% { opacity: 0.9 } 100% { opacity: 0.6 } }
@keyframes cvr-shaft { 0% { opacity: 0.15; transform: scaleX(1) } 50% { opacity: 0.4; transform: scaleX(1.1) } 100% { opacity: 0.2; transform: scaleX(1) } }
@keyframes cvr-kneel { 0%,100% { transform: rotate(5deg) translateY(0) } 50% { transform: rotate(3deg) translateY(-2px) } }
@keyframes cvr-still { 0%,100% { opacity: 0.8 } 50% { opacity: 1 } }
@keyframes cvr-open { 0%,100% { transform: rotate(-20deg) scaleY(1) } 50% { transform: rotate(-22deg) scaleY(0.95) } }
@keyframes cvr-sword { 0% { transform: rotate(-30deg) translateX(0) } 50% { transform: rotate(-28deg) translateX(2px) } 100% { transform: rotate(-32deg) translateX(-2px) } }

/* castle-hubert-accused */
.scn-castle-hubert-accused {
  background: linear-gradient(180deg, #0f1220 0%, #1a1f35 50%, #141829 100%),
              radial-gradient(ellipse at 50% 20%, #2a3a5a 0%, transparent 60%);
}
.scn-castle-hubert-accused .bg-hall {
  position: absolute; inset: 0; background: linear-gradient(90deg, #0b0e1a 0%, #1a1f30 50%, #0b0e1a 100%);
  animation: cha-pulse 14s ease-in-out infinite alternate;
}
.scn-castle-hubert-accused .pillar-left {
  position: absolute; top: 0; left: 10%; width: 8%; height: 100%;
  background: linear-gradient(180deg, #2a3050 0%, #1a1e38 100%);
  border-radius: 10px 10px 0 0;
  box-shadow: 4px 0 20px rgba(0,0,0,0.6);
}
.scn-castle-hubert-accused .pillar-right {
  position: absolute; top: 0; right: 10%; width: 8%; height: 100%;
  background: linear-gradient(180deg, #2a3050 0%, #1a1e38 100%);
  border-radius: 10px 10px 0 0;
  box-shadow: -4px 0 20px rgba(0,0,0,0.6);
}
.scn-castle-hubert-accused .moon-window {
  position: absolute; top: 15%; left: 40%; width: 20%; height: 30%;
  background: linear-gradient(180deg, rgba(120,140,200,0.15) 0%, rgba(80,100,160,0.08) 100%);
  clip-path: polygon(0% 0%, 100% 0%, 80% 100%, 20% 100%);
  filter: blur(8px);
  animation: cha-beam 18s ease-in-out infinite;
}
.scn-castle-hubert-accused .hubert {
  position: absolute; bottom: 22%; left: 30%; width: 35px; height: 80px;
  background: linear-gradient(180deg, #1a1c2a 0%, #0e101a 100%);
  border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%;
  transform: rotate(3deg);
  animation: cha-stance 5s ease-in-out infinite;
}
.scn-castle-hubert-accused .lord {
  position: absolute; bottom: 20%; right: 25%; width: 38px; height: 82px;
  background: linear-gradient(180deg, #1a1a2e 0%, #0e0e1a 100%);
  border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%;
  transform: rotate(-5deg);
  animation: cha-lunge 4s ease-in-out infinite;
}
.scn-castle-hubert-accused .sword-h {
  position: absolute; bottom: 35%; left: 36%; width: 4px; height: 45px;
  background: linear-gradient(180deg, #8a8aaa 0%, #4a4a62 100%);
  border-radius: 2px;
  transform: rotate(20deg);
  box-shadow: 0 0 6px rgba(138,138,170,0.4);
  animation: cha-sword-h 3s ease-in-out infinite alternate;
}
.scn-castle-hubert-accused .sword-l {
  position: absolute; bottom: 32%; right: 28%; width: 4px; height: 45px;
  background: linear-gradient(180deg, #8a8aaa 0%, #4a4a62 100%);
  border-radius: 2px;
  transform: rotate(-25deg);
  box-shadow: 0 0 6px rgba(138,138,170,0.3);
  animation: cha-sword-l 3.5s ease-in-out infinite alternate;
}

@keyframes cha-pulse { 0% { opacity: 0.8 } 50% { opacity: 1 } 100% { opacity: 0.7 } }
@keyframes cha-beam { 0% { opacity: 0.1; transform: scaleX(1) } 50% { opacity: 0.4; transform: scaleX(1.2) } 100% { opacity: 0.2; transform: scaleX(1) } }
@keyframes cha-stance { 0%,100% { transform: rotate(3deg) translateX(0) } 30% { transform: rotate(2deg) translateX(2px) } 70% { transform: rotate(4deg) translateX(-2px) } }
@keyframes cha-lunge { 0%,100% { transform: rotate(-5deg) translateX(0) } 25% { transform: rotate(-4deg) translateX(-3px) } 75% { transform: rotate(-6deg) translateX(3px) } }
@keyframes cha-sword-h { 0% { transform: rotate(20deg) translateY(0) } 50% { transform: rotate(25deg) translateY(-2px) } 100% { transform: rotate(15deg) translateY(2px) } }
@keyframes cha-sword-l { 0% { transform: rotate(-25deg) translateY(0) } 50% { transform: rotate(-30deg) translateY(-1px) } 100% { transform: rotate(-20deg) translateY(1px) } }

/* castle-departure */
.scn-castle-departure {
  background: linear-gradient(180deg, #0a0d18 0%, #13172b 50%, #0c0f1e 100%),
              radial-gradient(ellipse at 70% 30%, #1e2a44 0%, transparent 60%);
}
.scn-castle-departure .bg-gate {
  position: absolute; inset: 0; background: radial-gradient(ellipse at 50% 100%, #141829 0%, transparent 70%);
  animation: cdp-darken 20s ease-in-out infinite alternate;
}
.scn-castle-departure .stone-arch {
  position: absolute; top: 0; left: 20%; width: 60%; height: 60%;
  background: linear-gradient(180deg, #2a304a 0%, #1a1e34 100%);
  clip-path: polygon(0% 0%, 100% 0%, 100% 80%, 0% 80%);
  border-radius: 50% 50% 0 0 / 40% 40% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.5);
}
.scn-castle-departure .moon-path {
  position: absolute; top: 20%; left: 35%; width: 30%; height: 60%;
  background: linear-gradient(180deg, rgba(100,120,180,0.2) 0%, rgba(80,100,160,0.08) 60%, transparent 100%);
  clip-path: polygon(30% 0%, 70% 0%, 60% 100%, 40% 100%);
  filter: blur(10px);
  animation: cdp-path 25s ease-in-out infinite;
}
.scn-castle-departure .king-figure {
  position: absolute; bottom: 25%; left: 30%; width: 45px; height: 90px;
  background: linear-gradient(180deg, #1a1c2a 0%, #0e101a 100%);
  border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%;
  transform: rotate(-2deg);
  box-shadow: 0 8px 20px rgba(0,0,0,0.7);
  animation: cdp-king 10s ease-in-out infinite alternate;
}
.scn-castle-departure .kneeling-man {
  position: absolute; bottom: 15%; right: 25%; width: 40px; height: 70px;
  background: linear-gradient(180deg, #1a1c2a 0%, #0e101a 100%);
  border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%;
  transform: rotate(8deg);
  animation: cdp-kneel 7s ease-in-out infinite;
}
.scn-castle-departure .child-body {
  position: absolute; bottom: 8%; left: 45%; width: 30px; height: 40px;
  background: linear-gradient(180deg, #2a2a44 0%, #1a1a2e 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 40% 40%;
  transform: rotate(-12deg);
  filter: blur(3px);
  animation: cdp-child 15s ease-in-out infinite;
}
.scn-castle-departure .broken-chain {
  position: absolute; bottom: 20%; left: 50%; width: 60px; height: 3px;
  background: repeating-linear-gradient(90deg, #5a5a7a 0px, #5a5a7a 6px, #2a2a4a 6px, #2a2a4a 10px);
  border-radius: 2px;
  transform: rotate(15deg);
  filter: blur(1px);
  animation: cdp-break 12s ease-in-out infinite;
}

@keyframes cdp-darken { 0% { opacity: 0.7 } 50% { opacity: 1 } 100% { opacity: 0.6 } }
@keyframes cdp-path { 0% { opacity: 0.15; transform: scaleX(1) } 50% { opacity: 0.4; transform: scaleX(1.15) } 100% { opacity: 0.2; transform: scaleX(1) } }
@keyframes cdp-king { 0%,100% { transform: rotate(-2deg) translateY(0) } 50% { transform: rotate(-1deg) translateY(-3px) } }
@keyframes cdp-kneel { 0%,100% { transform: rotate(8deg) translateX(0) } 30% { transform: rotate(6deg) translateX(-2px) } 70% { transform: rotate(10deg) translateX(2px) } }
@keyframes cdp-child { 0%,100% { opacity: 0.7 } 50% { opacity: 0.9 } }
@keyframes cdp-break { 0%,100% { transform: rotate(15deg) translateX(0) } 25% { transform: rotate(13deg) translateX(3px) } 75% { transform: rotate(17deg) translateX(-3px) } }

/* ===== palace-hubert-reveals ===== */
.scn-palace-hubert-reveals {
  background: linear-gradient(180deg, #e8d5b0 0%, #c9a96e 100%), radial-gradient(ellipse at 30% 60%, #f5e6c8 0%, transparent 70%);
}
.scn-palace-hubert-reveals .wall-bg {
  position:absolute; inset:0; background: linear-gradient(180deg, #d4c3a0 0%, #b8a07a 100%);
}
.scn-palace-hubert-reveals .floor {
  position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #8b6f47 0%, #5a3d1a 100%); border-radius: 20% 20% 0 0;
}
.scn-palace-hubert-reveals .window {
  position:absolute; top:15%; left:50%; width:40%; height:40%; background: radial-gradient(ellipse, #ffffff 0%, #a0c4ff 100%); border: 4px solid #6b4c2a; border-radius: 8px; transform: translateX(-50%); filter: blur(1px);
}
.scn-palace-hubert-reveals .table {
  position:absolute; bottom:28%; left:40%; width:30%; height:8%; background: linear-gradient(180deg, #5a3d1a 0%, #2c1a0a 100%); border-radius: 4px; transform: perspective(200px) rotateX(10deg);
}
.scn-palace-hubert-reveals .candle {
  position:absolute; bottom:34%; left:55%; width:4%; height:10%; background: linear-gradient(180deg, #ffd700 0%, #ff8c00 100%); border-radius: 50% 50% 10% 10%; box-shadow: 0 0 20px 10px rgba(255,200,0,0.6); animation: phr-flicker 2s ease-in-out infinite;
}
.scn-palace-hubert-reveals .curtain-left {
  position:absolute; top:0; left:0; width:20%; height:70%; background: linear-gradient(90deg, #7a5a3a 0%, #5a3a1a 100%); border-radius: 0 60% 60% 0 / 0 20% 20% 0; transform-origin: left center; animation: phr-curtain 8s ease-in-out infinite alternate;
}
.scn-palace-hubert-reveals .curtain-right {
  position:absolute; top:0; right:0; width:20%; height:70%; background: linear-gradient(90deg, #5a3a1a 0%, #7a5a3a 100%); border-radius: 60% 0 0 60% / 20% 0 0 20%; transform-origin: right center; animation: phr-curtain 8s ease-in-out infinite alternate-reverse;
}
.scn-palace-hubert-reveals .figure-hubert {
  position:absolute; bottom:22%; left:30%; width:12%; height:35%; background: linear-gradient(180deg, #2c2c3a 0%, #1a1a24 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: phr-bow 6s ease-in-out infinite;
}
.scn-palace-hubert-reveals .figure-king {
  position:absolute; bottom:22%; left:55%; width:14%; height:38%; background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: phr-seated 8s ease-in-out infinite;
}
@keyframes phr-flicker {
  0% { opacity:1; transform: scaleY(1); }
  50% { opacity:0.7; transform: scaleY(0.9); box-shadow: 0 0 12px 6px rgba(255,200,0,0.4); }
  100% { opacity:1; transform: scaleY(1); box-shadow: 0 0 20px 10px rgba(255,200,0,0.6); }
}
@keyframes phr-curtain {
  0% { transform: translateX(0) rotate(0deg); }
  50% { transform: translateX(-10px) rotate(2deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes phr-bow {
  0% { transform: rotate(0deg) translateY(0); }
  50% { transform: rotate(5deg) translateY(-3px); }
  100% { transform: rotate(0deg) translateY(0); }
}
@keyframes phr-seated {
  0% { transform: rotate(0deg) translateY(0); }
  50% { transform: rotate(-3deg) translateY(-2px); }
  100% { transform: rotate(0deg) translateY(0); }
}

/* ===== palace-king-relieved ===== */
.scn-palace-king-relieved {
  background: linear-gradient(180deg, #f0d8a0 0%, #d4b080 100%), radial-gradient(ellipse at 50% 30%, #fff8e0 0%, transparent 60%);
}
.scn-palace-king-relieved .bg-sunlight {
  position:absolute; inset:0; background: linear-gradient(180deg, rgba(255,240,200,0.4) 0%, transparent 100%);
}
.scn-palace-king-relieved .floor {
  position:absolute; bottom:0; left:0; right:0; height:25%; background: linear-gradient(180deg, #a08060 0%, #604020 100%); border-radius: 30% 30% 0 0;
}
.scn-palace-king-relieved .throne {
  position:absolute; bottom:20%; left:50%; width:20%; height:40%; background: linear-gradient(180deg, #8b6914 0%, #5c450a 100%); border-radius: 20% 20% 10% 10%; transform: translateX(-50%); box-shadow: 0 4px 12px rgba(0,0,0,0.5); animation: pkr-throne 10s ease-in-out infinite alternate;
}
.scn-palace-king-relieved .figure-king {
  position:absolute; bottom:22%; left:50%; width:12%; height:35%; background: linear-gradient(180deg, #4a3020 0%, #2a1808 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform: translateX(-50%); transform-origin: bottom center; animation: pkr-king 6s ease-in-out infinite;
}
.scn-palace-king-relieved .light-beam {
  position:absolute; top:0; left:40%; width:20%; height:100%; background: linear-gradient(180deg, rgba(255,255,200,0.3) 0%, transparent 80%); filter: blur(4px); animation: pkr-beam 5s ease-in-out infinite alternate;
}
.scn-palace-king-relieved .sparkle {
  position:absolute; top:25%; left:45%; width:3%; height:3%; background: radial-gradient(circle, #ffffff 0%, #ffd700 100%); border-radius: 50%; box-shadow: 0 0 12px 4px rgba(255,215,0,0.8); animation: pkr-sparkle 3s ease-in-out infinite;
}
@keyframes pkr-throne {
  0% { transform: translateX(-50%) scale(1); }
  50% { transform: translateX(-50%) scale(1.02) translateY(-2px); }
  100% { transform: translateX(-50%) scale(1); }
}
@keyframes pkr-king {
  0% { transform: translateX(-50%) rotate(0deg); }
  50% { transform: translateX(-50%) rotate(5deg) translateY(-4px); }
  100% { transform: translateX(-50%) rotate(0deg); }
}
@keyframes pkr-beam {
  0% { opacity:0.3; transform: scaleY(0.95); }
  50% { opacity:0.6; transform: scaleY(1.05); }
  100% { opacity:0.3; transform: scaleY(0.95); }
}
@keyframes pkr-sparkle {
  0% { transform: scale(1) rotate(0deg); opacity:1; }
  50% { transform: scale(1.5) rotate(180deg); opacity:0.5; }
  100% { transform: scale(1) rotate(360deg); opacity:1; }
}

/* ===== castle-arthur-escape ===== */
.scn-castle-arthur-escape {
  background: linear-gradient(180deg, #0a0a2e 0%, #1a1a4a 50%, #2a2a6e 100%), radial-gradient(ellipse at 20% 40%, #3a3a7e 0%, transparent 70%);
}
.scn-castle-arthur-escape .sky {
  position:absolute; inset:0; background: linear-gradient(180deg, #0a0a2e 0%, #151540 100%); animation: cae-sky 20s ease-in-out infinite alternate;
}
.scn-castle-arthur-escape .moon {
  position:absolute; top:12%; right:20%; width:12%; height:12%; background: radial-gradient(circle, #ffffff 0%, #c0c0ff 100%); border-radius: 50%; box-shadow: 0 0 40px 20px rgba(192,192,255,0.3); animation: cae-moon 8s ease-in-out infinite alternate;
}
.scn-castle-arthur-escape .wall {
  position:absolute; bottom:0; left:0; width:100%; height:60%; background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%); border-radius: 10% 10% 0 0 / 20% 20% 0 0; box-shadow: inset 0 10px 30px rgba(0,0,0,0.8);
}
.scn-castle-arthur-escape .figure-arthur {
  position:absolute; bottom:55%; left:60%; width:8%; height:20%; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: cae-arthur 4s ease-in-out infinite;
}
.scn-castle-arthur-escape .shadow {
  position:absolute; bottom:40%; left:58%; width:12%; height:20%; background: rgba(0,0,0,0.5); border-radius: 50%; filter: blur(6px); animation: cae-shadow 4s ease-in-out infinite;
}
.scn-castle-arthur-escape .stars {
  position:absolute; inset:0; background: radial-gradient(2px 2px at 20% 30%, #ffffff, transparent),
                      radial-gradient(2px 2px at 40% 20%, #ffffff, transparent),
                      radial-gradient(1px 1px at 60% 50%, #ffffff, transparent),
                      radial-gradient(2px 2px at 80% 15%, #ffffff, transparent),
                      radial-gradient(1px 1px at 10% 70%, #ffffff, transparent);
  background-size: 200px 200px; animation: cae-stars 30s linear infinite;
}
.scn-castle-arthur-escape .rope {
  position:absolute; bottom:58%; left:65%; width:2%; height:30%; background: linear-gradient(180deg, #8b6914 0%, #5c450a 100%); border-radius: 2px; transform-origin: top center; animation: cae-rope 3s ease-in-out infinite alternate;
}
@keyframes cae-sky {
  0% { opacity:0.8; }
  50% { opacity:1; }
  100% { opacity:0.8; }
}
@keyframes cae-moon {
  0% { transform: scale(0.95); box-shadow: 0 0 30px 15px rgba(192,192,255,0.2); }
  50% { transform: scale(1.05); box-shadow: 0 0 50px 25px rgba(192,192,255,0.4); }
  100% { transform: scale(0.95); box-shadow: 0 0 30px 15px rgba(192,192,255,0.2); }
}
@keyframes cae-arthur {
  0% { transform: translateX(0) rotate(0deg); }
  50% { transform: translateX(5px) rotate(-5deg) translateY(-2px); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes cae-shadow {
  0% { opacity:0.5; transform: scaleX(1); }
  50% { opacity:0.3; transform: scaleX(0.8); }
  100% { opacity:0.5; transform: scaleX(1); }
}
@keyframes cae-stars {
  0% { background-position: 0 0; }
  100% { background-position: 200px 200px; }
}
@keyframes cae-rope {
  0% { transform: rotate(0deg); }
  50% { transform: rotate(5deg); }
  100% { transform: rotate(0deg); }
}

/* ===== castle-lords-discover ===== */
.scn-castle-lords-discover {
  background: linear-gradient(180deg, #0a0a14 0%, #1a1a2e 50%, #2a2a3e 100%), radial-gradient(ellipse at 80% 10%, #3a3a5e 0%, transparent 60%);
}
.scn-castle-lords-discover .wall-dark {
  position:absolute; inset:0; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
}
.scn-castle-lords-discover .table {
  position:absolute; bottom:20%; left:50%; width:60%; height:10%; background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%); border-radius: 10px; transform: translateX(-50%) perspective(300px) rotateX(20deg);
}
.scn-castle-lords-discover .candle {
  position:absolute; bottom:28%; left:50%; width:3%; height:8%; background: linear-gradient(180deg, #ffd700 0%, #ff8c00 100%); border-radius: 50% 50% 10% 10%; box-shadow: 0 0 15px 8px rgba(255,200,0,0.5); animation: cld-candle 2s ease-in-out infinite;
}
.scn-castle-lords-discover .lord-1 {
  position:absolute; bottom:22%; left:30%; width:10%; height:30%; background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: cld-lord1 8s ease-in-out infinite alternate;
}
.scn-castle-lords-discover .lord-2 {
  position:absolute; bottom:22%; left:45%; width:10%; height:30%; background: linear-gradient(180deg, #3a2a2a 0%, #2a1a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: cld-lord2 9s ease-in-out infinite alternate;
}
.scn-castle-lords-discover .lord-3 {
  position:absolute; bottom:22%; left:60%; width:10%; height:30%; background: linear-gradient(180deg, #2a2a2a 0%, #1a1a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: cld-lord3 7s ease-in-out infinite alternate;
}
.scn-castle-lords-discover .moonbeam {
  position:absolute; top:0; left:70%; width:10%; height:100%; background: linear-gradient(180deg, rgba(192,192,255,0.15) 0%, transparent 100%); filter: blur(5px); animation: cld-moonbeam 6s ease-in-out infinite alternate;
}
@keyframes cld-candle {
  0% { opacity:1; transform: scaleY(1); }
  50% { opacity:0.7; transform: scaleY(0.9); box-shadow: 0 0 8px 4px rgba(255,200,0,0.3); }
  100% { opacity:1; transform: scaleY(1); box-shadow: 0 0 15px 8px rgba(255,200,0,0.5); }
}
@keyframes cld-lord1 {
  0% { transform: rotate(0deg) translateY(0); }
  50% { transform: rotate(-4deg) translateY(-2px); }
  100% { transform: rotate(0deg) translateY(0); }
}
@keyframes cld-lord2 {
  0% { transform: rotate(0deg) translateY(0); }
  50% { transform: rotate(6deg) translateY(-3px); }
  100% { transform: rotate(0deg) translateY(0); }
}
@keyframes cld-lord3 {
  0% { transform: rotate(0deg) translateY(0); }
  50% { transform: rotate(-5deg) translateY(-1px); }
  100% { transform: rotate(0deg) translateY(0); }
}
@keyframes cld-moonbeam {
  0% { opacity:0.1; transform: scaleX(0.8); }
  50% { opacity:0.3; transform: scaleX(1.2); }
  100% { opacity:0.1; transform: scaleX(0.8); }
}

.scn-kings-enter-constance-curses {
  background: 
    linear-gradient(180deg, #f9e6b0 0%, #eccf7a 40%, #b98a4a 100%),
    radial-gradient(ellipse at 50% 0%, #fff6d0 0%, transparent 70%);
}
.scn-kings-enter-constance-curses .sun {
  position: absolute;
  top: 5%; left: 20%; width: 120px; height: 120px;
  background: radial-gradient(circle, #fff5c0 0%, #f2c94c 40%, #d19a2a 80%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 80px 40px rgba(242, 201, 76, .5), 0 0 160px 80px rgba(242, 201, 76, .2);
  animation: kecc-sun 10s ease-in-out infinite alternate;
}
.scn-kings-enter-constance-curses .king {
  position: absolute;
  bottom: 25%; left: 30%; width: 30px; height: 70px;
  background: linear-gradient(180deg, #4a3828 0%, #2c1e0e 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: kecc-figure 6s ease-in-out infinite;
}
.scn-kings-enter-constance-curses .king::before {
  content: ''; position: absolute; top: -12px; left: 2px;
  width: 26px; height: 16px;
  background: linear-gradient(180deg, #c8a84a 0%, #a07830 100%);
  border-radius: 50% 50% 0 0;
}
.scn-kings-enter-constance-curses .queen {
  position: absolute;
  bottom: 25%; left: 50%; width: 28px; height: 68px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a120a 100%);
  border-radius: 45% 45% 35% 35% / 55% 55% 35% 35%;
  transform: translateX(-50%);
  animation: kecc-figure-reverse 7s ease-in-out infinite;
}
.scn-kings-enter-constance-curses .queen::after {
  content: ''; position: absolute; top: -8px; left: 4px;
  width: 20px; height: 12px;
  background: linear-gradient(180deg, #8b6b3a 0%, #5a4220 100%);
  border-radius: 50% 50% 0 0;
}
.scn-kings-enter-constance-curses .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(180deg, #cba66b 0%, #8a6a3a 50%, #5a4220 100%);
  border-radius: 30% 70% 0 0 / 60% 40% 0 0;
  box-shadow: inset 0 20px 40px rgba(0,0,0,.3);
}
.scn-kings-enter-constance-curses .banner {
  position: absolute; bottom: 38%; left: 55%; width: 16px; height: 50px;
  background: linear-gradient(180deg, #c8553d 0%, #a03a2a 100%);
  border-radius: 2px;
  transform-origin: bottom center;
  animation: kecc-banner 4s ease-in-out infinite alternate;
}
.scn-kings-enter-constance-curses .rays {
  position: absolute; top: 0; left: 0; width: 100%; height: 100%;
  background: repeating-linear-gradient(
    45deg,
    transparent 0px, transparent 30px,
    rgba(255,245,200,.1) 30px, rgba(255,245,200,.1) 32px
  );
  pointer-events: none;
  animation: kecc-rays 20s linear infinite;
}
@keyframes kecc-sun {
  0%, 100% { transform: scale(1) translateY(0); opacity: .9; }
  50% { transform: scale(1.08) translateY(-5px); opacity: 1; }
}
@keyframes kecc-figure {
  0%, 100% { transform: translateX(0) rotate(0deg); }
  50% { transform: translateX(8px) rotate(2deg); }
}
@keyframes kecc-figure-reverse {
  0%, 100% { transform: translateX(-50%) rotate(0deg); }
  50% { transform: translateX(-50%) translateY(-3px) rotate(-2deg); }
}
@keyframes kecc-banner {
  0% { transform: rotate(-5deg); }
  100% { transform: rotate(5deg); }
}
@keyframes kecc-rays {
  0% { transform: translateX(0); }
  100% { transform: translateX(-32px); }
}

.scn-constance-curses-austria {
  background:
    linear-gradient(180deg, #f5e6b0 0%, #e0c878 100%),
    radial-gradient(ellipse at 60% 20%, #fffff0 0%, transparent 70%);
}
.scn-constance-curses-austria .sun-harsh {
  position: absolute; top: 0; left: 30%; width: 100px; height: 100px;
  background: radial-gradient(circle, #ffffff 0%, #ffe066 40%, #cc8800 80%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 100px 60px rgba(255,224,102,.6);
  animation: ccau-sun 8s ease-in-out infinite;
}
.scn-constance-curses-austria .austria {
  position: absolute; bottom: 20%; left: 20%; width: 50px; height: 100px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a12 100%);
  border-radius: 30% 30% 40% 40% / 40% 40% 60% 60%;
  clip-path: polygon(10% 0%, 90% 0%, 80% 100%, 20% 100%);
  animation: ccau-austria 5s ease-in-out infinite alternate;
}
.scn-constance-curses-austria .constance {
  position: absolute; bottom: 10%; right: 30%; width: 30px; height: 70px;
  background: linear-gradient(180deg, #2a1a12 0%, #140a06 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: ccau-constance 3s ease-in-out infinite;
}
.scn-constance-curses-austria .constance::after {
  content: ''; position: absolute; top: -30px; left: -5px;
  width: 40px; height: 20px;
  background: linear-gradient(180deg, #2a1a12 0%, #140a06 100%);
  border-radius: 50% 50% 0 0;
  transform: rotate(-30deg);
  transform-origin: bottom right;
}
.scn-constance-curses-austria .sword {
  position: absolute; bottom: 25%; left: 55%; width: 4px; height: 60px;
  background: linear-gradient(180deg, #b09070 0%, #705040 100%);
  border-radius: 2px;
  transform: rotate(-20deg);
  transform-origin: bottom center;
  box-shadow: 0 2px 4px rgba(0,0,0,.4);
  animation: ccau-sword 4s ease-in-out infinite alternate;
}
.scn-constance-curses-austria .sword::before {
  content: ''; position: absolute; top: -8px; left: -6px;
  width: 16px; height: 8px;
  background: #b09070;
  border-radius: 50% 50% 0 0;
}
.scn-constance-curses-austria .shadow-dark {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, rgba(0,0,0,.5) 0%, rgba(0,0,0,.8) 100%);
  border-radius: 40% 60% 0 0 / 80% 70% 0 0;
  animation: ccau-shadow 10s ease-in-out infinite alternate;
}
.scn-constance-curses-austria .sparks {
  position: absolute; top: 40%; left: 40%; width: 100%; height: 100%;
  pointer-events: none;
  background: radial-gradient(circle 2px at 20% 30%, #ffd700 0%, transparent 100%) 0 0 / 60px 60px,
              radial-gradient(circle 2px at 80% 70%, #ffa500 0%, transparent 100%) 0 0 / 80px 80px;
  animation: ccau-sparks 2s ease-in-out infinite;
}
@keyframes ccau-sun {
  0%, 100% { transform: scale(1) translateY(0); opacity: .9; }
  50% { transform: scale(1.05) translateY(-3px); opacity: 1; }
}
@keyframes ccau-austria {
  0% { transform: translateX(0) rotate(0deg); }
  100% { transform: translateX(-10px) rotate(1deg); }
}
@keyframes ccau-constance {
  0% { transform: translateX(0) rotate(0deg); }
  25% { transform: translateX(-3px) rotate(-3deg); }
  50% { transform: translateX(-6px) rotate(0deg); }
  75% { transform: translateX(-3px) rotate(3deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes ccau-sword {
  0% { transform: rotate(-15deg); }
  100% { transform: rotate(-25deg); }
}
@keyframes ccau-shadow {
  0% { opacity: .6; }
  100% { opacity: .9; }
}
@keyframes ccau-sparks {
  0%, 100% { opacity: .3; }
  50% { opacity: .8; }
}

.scn-cardinal-pandulph-arrives {
  background:
    linear-gradient(180deg, #c6d8e0 0%, #a4bcc8 40%, #7a9aaa 100%),
    radial-gradient(ellipse at 50% 30%, #e8f0f5 0%, transparent 80%);
}
.scn-cardinal-pandulph-arrives .cardinal {
  position: absolute; bottom: 20%; left: 40%; width: 40px; height: 90px;
  background: linear-gradient(180deg, #8b1a1a 0%, #4a0e0e 100%);
  border-radius: 30% 30% 40% 40% / 50% 50% 40% 40%;
  animation: cpar-figure 8s ease-in-out infinite;
}
.scn-cardinal-pandulph-arrives .cardinal::after {
  content: ''; position: absolute; top: -20px; left: 5px;
  width: 30px; height: 25px;
  background: linear-gradient(180deg, #ffd700 0%, #b8860b 100%);
  border-radius: 50% 50% 30% 30%;
  clip-path: polygon(10% 0%, 90% 0%, 80% 100%, 20% 100%);
}
.scn-cardinal-pandulph-arrives .halo {
  position: absolute; bottom: 75%; left: 43%; width: 36px; height: 36px;
  background: radial-gradient(circle, #fff5d0 0%, #f0c050 50%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 30px 15px rgba(240,192,80,.5);
  animation: cpar-halo 4s ease-in-out infinite alternate;
}
.scn-cardinal-pandulph-arrives .staff {
  position: absolute; bottom: 20%; left: 55%; width: 6px; height: 80px;
  background: linear-gradient(180deg, #b09070 0%, #705040 100%);
  border-radius: 3px;
  transform-origin: bottom center;
  animation: cpar-staff 5s ease-in-out infinite;
}
.scn-cardinal-pandulph-arrives .staff::before {
  content: ''; position: absolute; top: -10px; left: -4px;
  width: 14px; height: 14px;
  background: gold;
  border-radius: 50%;
  box-shadow: 0 0 10px 4px gold;
}
.scn-cardinal-pandulph-arrives .light-beams {
  position: absolute; top: 0; left: 0; width: 100%; height: 100%;
  background: linear-gradient(135deg, transparent 40%, rgba(255,255,200,.15) 40%, rgba(255,255,200,.15) 45%, transparent 45%),
              linear-gradient(225deg, transparent 40%, rgba(255,255,200,.1) 40%, rgba(255,255,200,.1) 44%, transparent 44%);
  animation: cpar-beams 12s linear infinite;
}
.scn-cardinal-pandulph-arrives .meadow {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #7db87a 0%, #4a7a4a 100%);
  border-radius: 60% 40% 0 0 / 80% 30% 0 0;
}
.scn-cardinal-pandulph-arrives .dove {
  position: absolute; top: 10%; right: 30%; width: 30px; height: 18px;
  background: radial-gradient(ellipse at 50% 50%, #f5f5f5 0%, #d0d0d0 100%);
  border-radius: 50% 50% 30% 30%;
  clip-path: polygon(5% 20%, 50% 0%, 95% 20%, 90% 80%, 50% 60%, 10% 80%);
  transform: rotate(-15deg);
  animation: cpar-dove 25s linear infinite;
}
@keyframes cpar-figure {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-4px); }
}
@keyframes cpar-halo {
  0% { opacity: .7; transform: scale(.95); }
  100% { opacity: 1; transform: scale(1.05); }
}
@keyframes cpar-staff {
  0% { transform: rotate(-2deg); }
  50% { transform: rotate(2deg); }
  100% { transform: rotate(-2deg); }
}
@keyframes cpar-beams {
  0% { opacity: .3; }
  50% { opacity: .6; }
  100% { opacity: .3; }
}
@keyframes cpar-dove {
  0% { transform: translateX(0) rotate(-15deg); opacity: 0; }
  10% { opacity: 1; }
  90% { opacity: 1; }
  100% { transform: translateX(300px) rotate(-10deg); opacity: 0; }
}

.scn-john-defies-pope {
  background:
    linear-gradient(180deg, #e8d5a0 0%, #c4a870 50%, #9a7d4a 100%),
    radial-gradient(ellipse at 50% 20%, #fffbe0 0%, transparent 80%);
}
.scn-john-defies-pope .king-defiant {
  position: absolute; bottom: 20%; left: 35%; width: 50px; height: 100px;
  background: linear-gradient(180deg, #2a1e0e 0%, #0f0a04 100%);
  border-radius: 30% 30% 40% 40% / 40% 40% 60% 60%;
  transform-origin: bottom center;
  animation: jdp-king 5s ease-in-out infinite alternate;
}
.scn-john-defies-pope .king-defiant::after {
  content: ''; position: absolute; top: -15px; left: 5px;
  width: 40px; height: 20px;
  background: linear-gradient(180deg, #c8a84a 0%, #7a6030 100%);
  border-radius: 50% 50% 0 0;
  clip-path: polygon(10% 0%, 90% 0%, 80% 100%, 20% 100%);
  transform: rotate(5deg);
}
.scn-john-defies-pope .crown-glow {
  position: absolute; top: 10%; left: 42%; width: 20px; height: 20px;
  background: radial-gradient(circle, #ffd700 0%, #ffc125 50%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 40px 20px rgba(255,215,0,.6);
  animation: jdp-crown 3s ease-in-out infinite alternate;
}
.scn-john-defies-pope .throne {
  position: absolute; bottom: 15%; left: 30%; width: 70px; height: 80px;
  background: linear-gradient(180deg, #5a3a1a 0%, #3a2a1a 100%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 0 10px 20px rgba(0,0,0,.5);
  transform: perspective(500px) rotateX(10deg);
}
.scn-john-defies-pope .sun-glare {
  position: absolute; top: -20px; left: 20%; width: 200px; height: 200px;
  background: radial-gradient(circle, #ffffff 0%, #fff5c0 30%, transparent 70%);
  border-radius: 50%;
  filter: blur(10px);
  animation: jdp-glare 8s ease-in-out infinite;
}
.scn-john-defies-pope .chains {
  position: absolute; bottom: 35%; left: 45%; width: 8px; height: 50px;
  background: repeating-linear-gradient(0deg, #9a8a70 0px, #9a8a70 4px, transparent 4px, transparent 8px);
  transform: rotate(10deg);
  animation: jdp-chains 4s ease-in-out infinite alternate;
}
.scn-john-defies-pope .shadow-deep {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, rgba(0,0,0,.6) 0%, rgba(0,0,0,.9) 100%);
  border-radius: 30% 70% 0 0 / 60% 40% 0 0;
}
.scn-john-defies-pope .scepter {
  position: absolute; bottom: 50%; left: 55%; width: 4px; height: 40px;
  background: linear-gradient(180deg, #c8a84a 0%, #7a6030 100%);
  border-radius: 2px;
  transform: rotate(15deg);
  transform-origin: bottom center;
  box-shadow: 0 2px 4px rgba(0,0,0,.4);
  animation: jdp-scepter 3s ease-in-out infinite;
}
.scn-john-defies-pope .scepter::before {
  content: ''; position: absolute; top: -8px; left: -4px;
  width: 12px; height: 12px;
  background: radial-gradient(circle, #ffd700 0%, #cc8800 100%);
  border-radius: 50%;
  box-shadow: 0 0 10px 4px rgba(255,215,0,.5);
}
@keyframes jdp-king {
  0% { transform: translateX(0) rotate(0deg); }
  50% { transform: translateX(5px) rotate(2deg); }
  100% { transform: translateX(-5px) rotate(-2deg); }
}
@keyframes jdp-crown {
  0% { opacity: .7; transform: scale(.9); }
  100% { opacity: 1; transform: scale(1.1); }
}
@keyframes jdp-glare {
  0%, 100% { opacity: .5; transform: scale(1); }
  50% { opacity: .9; transform: scale(1.05); }
}
@keyframes jdp-chains {
  0% { transform: rotate(5deg); }
  100% { transform: rotate(15deg); }
}
@keyframes jdp-scepter {
  0% { transform: rotate(10deg); }
  50% { transform: rotate(20deg); }
  100% { transform: rotate(10deg); }
}

/* item-will */
.scn-item-will { background: linear-gradient(180deg, #87CEEB 0%, #f0e68c 50%, #ffd700 100%), radial-gradient(ellipse at 30% 50%, #ffa500 0%, transparent 70%); }
.scn-item-will .iw-sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #87CEEB 0%, #b0e0e6 100%); animation: iw-sky 15s ease-in-out infinite alternate; }
.scn-item-will .iw-sun { position:absolute; top:10%; left:70%; width:60px; height:60px; background: radial-gradient(circle, #ffffcc 0%, #ffd700 50%, transparent 70%); border-radius:50%; animation: iw-sun 12s ease-in-out infinite alternate; }
.scn-item-will .iw-wall { position:absolute; bottom:30%; left:0; right:0; height:40%; background: linear-gradient(180deg, #a08060 0%, #806040 100%); border-radius:10% 10% 0 0; box-shadow: inset 0 10px 20px rgba(0,0,0,.5); animation: iw-wall 8s ease-in-out infinite; }
.scn-item-will .iw-figure { position:absolute; bottom:35%; left:20%; width:20px; height:40px; background: linear-gradient(180deg, #333 0%, #222 100%); border-radius: 50% 50% 40% 40%; transform-origin: bottom; animation: iw-figure 5s ease-in-out infinite; }
.scn-item-will .iw-trumpet { position:absolute; bottom:50%; left:25%; width:30px; height:10px; background: linear-gradient(90deg, #b8860b 0%, #daa520 100%); border-radius:50% 50% 0 0; transform: rotate(-20deg); animation: iw-trumpet 3s ease-in-out infinite; }
.scn-item-will .iw-banner { position:absolute; bottom:50%; left:28%; width:15px; height:30px; background: linear-gradient(180deg, #c8553d 0%, #a0461a 100%); clip-path: polygon(0 0,100% 0,100% 100%,50% 80%,0 100%); animation: iw-banner 6s ease-in-out infinite; }
.scn-item-will .iw-cloud { position:absolute; top:15%; left:20%; width:80px; height:20px; background: rgba(255,255,255,.6); border-radius:50%; filter: blur(5px); animation: iw-cloud 30s linear infinite; }
@keyframes iw-sky { 0%{opacity:.8}50%{opacity:1}100%{opacity:.7} }
@keyframes iw-sun { 0%{transform:translateY(0) scale(1)}50%{transform:translateY(-5px) scale(1.05)}100%{transform:translateY(0) scale(1)} }
@keyframes iw-wall { 0%,100%{transform:translateX(0)}50%{transform:translateX(-5px)} }
@keyframes iw-figure { 0%{transform:translateY(0) rotate(0)}25%{transform:translateY(-2px) rotate(2deg)}50%{transform:translateY(0) rotate(0)}75%{transform:translateY(-2px) rotate(-2deg)}100%{transform:translateY(0) rotate(0)} }
@keyframes iw-trumpet { 0%,100%{transform:rotate(-20deg)}50%{transform:rotate(-15deg)} }
@keyframes iw-banner { 0%,100%{transform:rotate(0)}50%{transform:rotate(5deg) scaleX(1.1)} }
@keyframes iw-cloud { 0%{transform:translateX(-80px)}100%{transform:translateX(120vw)} }

/* france-citizens */
.scn-france-citizens { background: linear-gradient(180deg, #87CEEB 0%, #f0e68c 50%, #ffd700 100%), radial-gradient(ellipse at 70% 30%, #ffa500 0%, transparent 70%); }
.scn-france-citizens .fc-sky { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #87CEEB 0%, #b0e0e6 100%); animation: fc-sky 18s ease-in-out infinite alternate; }
.scn-france-citizens .fc-sun { position:absolute; top:8%; left:65%; width:50px; height:50px; background: radial-gradient(circle, #ffffcc 0%, #ffd700 50%, transparent 70%); border-radius:50%; animation: fc-sun 14s ease-in-out infinite alternate; }
.scn-france-citizens .fc-wall { position:absolute; bottom:25%; left:0; right:0; height:50%; background: linear-gradient(180deg, #a08060 0%, #806040 100%); border-radius:5% 5% 0 0; box-shadow: inset 0 15px 25px rgba(0,0,0,.5); animation: fc-wall 10s ease-in-out infinite; }
.scn-france-citizens .fc-cannon { position:absolute; bottom:30%; left:15%; width:60px; height:20px; background: linear-gradient(90deg, #555 0%, #333 100%); border-radius:10px; transform: rotate(-10deg); animation: fc-cannon 6s ease-in-out infinite; }
.scn-france-citizens .fc-flag { position:absolute; bottom:55%; left:25%; width:20px; height:40px; background: linear-gradient(180deg, #1e90ff 0%, #fff 50%, #ff4500 100%); clip-path: polygon(0 0,100% 0,100% 100%,50% 85%,0 100%); animation: fc-flag 7s ease-in-out infinite; }
.scn-france-citizens .fc-flagpole { position:absolute; bottom:30%; left:25%; width:4px; height:70px; background: #8B4513; border-radius:2px; animation: fc-flagpole 3s ease-in-out infinite; }
.scn-france-citizens .fc-soldier { position:absolute; bottom:25%; left:40%; width:18px; height:40px; background: linear-gradient(180deg, #444 0%, #222 100%); border-radius:50% 50% 40% 40%; animation: fc-soldier 4s ease-in-out infinite; }
.scn-france-citizens .fc-cannonball { position:absolute; bottom:35%; left:10%; width:12px; height:12px; background: radial-gradient(circle, #666 0%, #333 100%); border-radius:50%; animation: fc-cannonball 8s linear infinite; }
@keyframes fc-sky { 0%{opacity:.7}50%{opacity:1}100%{opacity:.8} }
@keyframes fc-sun { 0%{transform:translateY(0) scale(1)}50%{transform:translateY(-8px) scale(1.1)}100%{transform:translateY(0) scale(1)} }
@keyframes fc-wall { 0%{transform:translateX(0)}50%{transform:translateX(-3px)}100%{transform:translateX(0)} }
@keyframes fc-cannon { 0%,100%{transform:rotate(-10deg) translateY(0)}50%{transform:rotate(-5deg) translateY(-2px)} }
@keyframes fc-flag { 0%{transform:rotate(0)}25%{transform:rotate(8deg)}50%{transform:rotate(0)}75%{transform:rotate(-8deg)}100%{transform:rotate(0)} }
@keyframes fc-flagpole { 0%,100%{transform:rotate(0)}50%{transform:rotate(2deg)} }
@keyframes fc-soldier { 0%{transform:translateY(0) rotate(0)}25%{transform:translateY(-3px) rotate(3deg)}50%{transform:translateY(0) rotate(0)}75%{transform:translateY(-3px) rotate(-3deg)}100%{transform:translateY(0) rotate(0)} }
@keyframes fc-cannonball { 0%{transform:translateX(0) translateY(0)}50%{transform:translateX(100px) translateY(-50px)}100%{transform:translateX(200px) translateY(-100px)} }

/* item-crown */
.scn-item-crown { background: linear-gradient(180deg, #87CEEB 0%, #f0e68c 50%, #ffd700 100%), radial-gradient(ellipse at 50% 30%, #ffa500 0%, transparent 70%); }
.scn-item-crown .ic-sky { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #87CEEB 0%, #b0e0e6 100%); animation: ic-sky 20s ease-in-out infinite alternate; }
.scn-item-crown .ic-sun { position:absolute; top:5%; left:50%; width:80px; height:80px; background: radial-gradient(circle, #ffffcc 0%, #ffd700 40%, transparent 70%); border-radius:50%; animation: ic-sun 16s ease-in-out infinite alternate; }
.scn-item-crown .ic-pedestal { position:absolute; bottom:30%; left:50%; width:60px; height:40px; transform:translateX(-50%); background: linear-gradient(180deg, #ccc 0%, #999 100%); border-radius:5px; box-shadow: 0 5px 10px rgba(0,0,0,.4); animation: ic-pedestal 9s ease-in-out infinite; }
.scn-item-crown .ic-crown { position:absolute; bottom:50%; left:50%; width:40px; height:25px; transform:translateX(-50%); background: linear-gradient(180deg, #ffd700 0%, #b8860b 100%); clip-path: polygon(0 100%, 20% 0, 40% 100%, 60% 0, 80% 100%, 100% 0, 100% 100%); animation: ic-crown 5s ease-in-out infinite; }
.scn-item-crown .ic-figure-l { position:absolute; bottom:35%; left:35%; width:20px; height:50px; background: linear-gradient(180deg, #333 0%, #111 100%); border-radius:50% 50% 40% 40%; transform-origin: bottom; animation: ic-figure-l 6s ease-in-out infinite; }
.scn-item-crown .ic-figure-r { position:absolute; bottom:35%; right:35%; width:20px; height:50px; background: linear-gradient(180deg, #333 0%, #111 100%); border-radius:50% 50% 40% 40%; transform-origin: bottom; animation: ic-figure-r 6s ease-in-out infinite reverse; }
.scn-item-crown .ic-ray { position:absolute; top:10%; left:45%; width:20px; height:60px; background: linear-gradient(180deg, rgba(255,215,0,0.5) 0%, transparent 100%); transform: rotate(20deg); animation: ic-ray 4s ease-in-out infinite; }
@keyframes ic-sky { 0%{opacity:.7}50%{opacity:1}100%{opacity:.8} }
@keyframes ic-sun { 0%{transform:translateY(0) scale(1)}50%{transform:translateY(-10px) scale(1.1)}100%{transform:translateY(0) scale(1)} }
@keyframes ic-pedestal { 0%,100%{transform:translateX(-50%) translateY(0)}50%{transform:translateX(-50%) translateY(-3px)} }
@keyframes ic-crown { 0%,100%{transform:translateX(-50%) rotate(0)}50%{transform:translateX(-50%) rotate(5deg) scale(1.05)} }
@keyframes ic-figure-l { 0%{transform:translateY(0) rotate(0)}25%{transform:translateY(-2px) rotate(3deg)}50%{transform:translateY(0) rotate(0)}75%{transform:translateY(-2px) rotate(-3deg)}100%{transform:translateY(0) rotate(0)} }
@keyframes ic-figure-r { 0%{transform:translateY(0) rotate(0)}25%{transform:translateY(-2px) rotate(-3deg)}50%{transform:translateY(0) rotate(0)}75%{transform:translateY(-2px) rotate(3deg)}100%{transform:translateY(0) rotate(0)} }
@keyframes ic-ray { 0%{opacity:0.3; transform:rotate(20deg) scaleY(1)}50%{opacity:0.8; transform:rotate(25deg) scaleY(1.2)}100%{opacity:0.3; transform:rotate(20deg) scaleY(1)} }

/* france-battle-alarm */
.scn-france-battle-alarm { background: linear-gradient(180deg, #87CEEB 0%, #f0e68c 50%, #ffd700 100%), radial-gradient(ellipse at 20% 40%, #ffa500 0%, transparent 70%); }
.scn-france-battle-alarm .fba-sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #87CEEB 0%, #b0e0e6 100%); animation: fba-sky 12s ease-in-out infinite alternate; }
.scn-france-battle-alarm .fba-sun { position:absolute; top:12%; left:30%; width:60px; height:60px; background: radial-gradient(circle, #ffffcc 0%, #ffd700 50%, transparent 70%); border-radius:50%; animation: fba-sun 15s ease-in-out infinite alternate; }
.scn-france-battle-alarm .fba-ground { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, #8B7355 0%, #6B5340 100%); border-radius:30% 70% 0 0; box-shadow: inset 0 10px 20px rgba(0,0,0,.5); animation: fba-ground 20s ease-in-out infinite; }
.scn-france-battle-alarm .fba-lion { position:absolute; bottom:30%; left:50%; width:60px; height:40px; transform:translateX(-50%); background: linear-gradient(180deg, #c8553d 0%, #a0461a 100%); border-radius:50% 50% 30% 30%; clip-path: polygon(0 50%, 20% 0, 50% 30%, 80% 0, 100% 50%, 100% 100%, 0 100%); animation: fba-lion 6s ease-in-out infinite; }
.scn-france-battle-alarm .fba-banner { position:absolute; bottom:50%; left:30%; width:15px; height:35px; background: linear-gradient(180deg, #1e90ff 0%, #fff 50%, #ff4500 100%); clip-path: polygon(0 0,100% 0,100% 100%,50% 80%,0 100%); animation: fba-banner 8s ease-in-out infinite; }
.scn-france-battle-alarm .fba-trumpeter { position:absolute; bottom:30%; left:30%; width:18px; height:38px; background: linear-gradient(180deg, #444 0%, #222 100%); border-radius:50% 50% 40% 40%; transform-origin: bottom; animation: fba-trumpeter 4s ease-in-out infinite; }
.scn-france-battle-alarm .fba-soldier { position:absolute; bottom:30%; right:30%; width:18px; height:38px; background: linear-gradient(180deg, #555 0%, #333 100%); border-radius:50% 50% 40% 40%; transform-origin: bottom; animation: fba-soldier 5s ease-in-out infinite; }
.scn-france-battle-alarm .fba-dust { position:absolute; bottom:5%; left:20%; width:100px; height:20px; background: rgba(200,180,150,.5); border-radius:50%; filter: blur(10px); animation: fba-dust 10s ease-in-out infinite; }
@keyframes fba-sky { 0%{opacity:.6}50%{opacity:1}100%{opacity:.7} }
@keyframes fba-sun { 0%{transform:translateY(0) scale(1)}50%{transform:translateY(-6px) scale(1.1)}100%{transform:translateY(0) scale(1)} }
@keyframes fba-ground { 0%{transform:translateY(0) scaleY(1)}50%{transform:translateY(-5px) scaleY(0.98)}100%{transform:translateY(0) scaleY(1)} }
@keyframes fba-lion { 0%{transform:translateX(-50%) scale(1) rotate(0)}25%{transform:translateX(-50%) scale(1.05) rotate(3deg)}50%{transform:translateX(-50%) scale(1) rotate(0)}75%{transform:translateX(-50%) scale(1.05) rotate(-3deg)}100%{transform:translateX(-50%) scale(1) rotate(0)} }
@keyframes fba-banner { 0%,100%{transform:rotate(0) scaleY(1)}25%{transform:rotate(10deg) scaleY(1.1)}75%{transform:rotate(-10deg) scaleY(1.1)} }
@keyframes fba-trumpeter { 0%{transform:translateY(0) rotate(0)}25%{transform:translateY(-3px) rotate(5deg)}50%{transform:translateY(0) rotate(0)}75%{transform:translateY(-3px) rotate(-5deg)}100%{transform:translateY(0) rotate(0)} }
@keyframes fba-soldier { 0%{transform:translateY(0) rotate(0)}25%{transform:translateY(-3px) rotate(-3deg)}50%{transform:translateY(0) rotate(0)}75%{transform:translateY(-3px) rotate(3deg)}100%{transform:translateY(0) rotate(0)} }
@keyframes fba-dust { 0%{opacity:0; transform:translateX(0)}50%{opacity:0.6; transform:translateX(50px) scale(1.5)}100%{opacity:0; transform:translateX(100px) scale(2)} }

.scn-palace-bastard-news {
  background: linear-gradient(180deg,#6a4a2a 0%,#3a2210 50%,#1a0e05 100%),radial-gradient(ellipse at 70% 30%,#c8a060 0%,transparent 60%);
}
.scn-palace-bastard-news .bg-wall { position:absolute;inset:0 0 45% 0;background:linear-gradient(180deg,#8c6f4a 0%,#5a3d22 100%); }
.scn-palace-bastard-news .floor { position:absolute;bottom:0;left:0;right:0;height:45%;background:linear-gradient(180deg,#4a3020 0%,#2a1a10 100%);box-shadow:inset 0 8px 12px rgba(0,0,0,.5); }
.scn-palace-bastard-news .window-panel { position:absolute;top:10%;right:8%;width:20%;height:35%;background:radial-gradient(ellipse at center,#ffe0a0 0%,#d4a060 50%,transparent 70%);border-radius:5px;box-shadow:0 0 40px 10px #d4a060;animation:pbn-windowglow 4s ease-in-out infinite alternate; }
.scn-palace-bastard-news .table { position:absolute;bottom:40%;left:35%;width:30%;height:8%;background:linear-gradient(180deg,#6a4a2a 0%,#3a2210 100%);border-radius:4px;box-shadow:0 4px 8px rgba(0,0,0,.6);animation:pbn-table 6s ease-in-out infinite; }
.scn-palace-bastard-news .figure-bastard { position:absolute;bottom:44%;left:42%;width:24px;height:48px;background:linear-gradient(180deg,#2a1a10 0%,#1a0e05 100%);border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;transform-origin:bottom center;animation:pbn-bastard 3s ease-in-out infinite alternate; }
.scn-palace-bastard-news .figure-messenger { position:absolute;bottom:44%;left:55%;width:20px;height:40px;background:linear-gradient(180deg,#3a2a1a 0%,#1a0e05 100%);border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;transform-origin:bottom center;animation:pbn-messenger 2s ease-in-out infinite; }
.scn-palace-bastard-news .candle { position:absolute;bottom:38%;left:48%;width:6px;height:16px;background:linear-gradient(180deg,#d4a060 0%,#804020 100%);border-radius:20% 20% 10% 10% / 60% 60% 20% 20%;box-shadow:0 0 16px 6px rgba(212,160,96,.6);animation:pbn-candle 1.5s ease-in-out infinite alternate; }
.scn-palace-bastard-news .letter { position:absolute;bottom:39%;left:38%;width:20px;height:14px;background:#e8d5b7;border-radius:2px;box-shadow:0 2px 4px rgba(0,0,0,.3);animation:pbn-letter 5s ease-in-out infinite; }
@keyframes pbn-windowglow { 0%{opacity:.7;transform:scale(1)} 50%{opacity:1;transform:scale(1.05)} 100%{opacity:.8;transform:scale(.95)} }
@keyframes pbn-table { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-2px)} }
@keyframes pbn-bastard { 0%{transform:rotate(-2deg) translateY(0)} 50%{transform:rotate(0) translateY(-1px)} 100%{transform:rotate(2deg) translateY(0)} }
@keyframes pbn-messenger { 0%{transform:translateX(0) rotate(-3deg)} 25%{transform:translateX(4px) rotate(0)} 50%{transform:translateX(8px) rotate(3deg)} 75%{transform:translateX(4px) rotate(0)} 100%{transform:translateX(0) rotate(-3deg)} }
@keyframes pbn-candle { 0%{transform:scaleY(1) scaleX(1);opacity:.8} 50%{transform:scaleY(1.1) scaleX(.9);opacity:1} 100%{transform:scaleY(.95) scaleX(1.05);opacity:.85} }
@keyframes pbn-letter { 0%,100%{transform:rotate(0)} 50%{transform:rotate(5deg)} }

.scn-palace-king-urgent {
  background: linear-gradient(180deg,#f0e0c0 0%,#c8a060 50%,#a08040 100%),radial-gradient(ellipse at 50% 10%,#ffe8c0 0%,transparent 60%);
}
.scn-palace-king-urgent .throne-room-wall { position:absolute;inset:0 0 40% 0;background:linear-gradient(180deg,#d4b896 0%,#b89870 100%); }
.scn-palace-king-urgent .throne-floor { position:absolute;bottom:0;left:0;right:0;height:40%;background:linear-gradient(180deg,#8a6a4a 0%,#5a3a22 100%);box-shadow:inset 0 8px 12px rgba(0,0,0,.4); }
.scn-palace-king-urgent .throne { position:absolute;bottom:38%;left:38%;width:24%;height:20%;background:linear-gradient(180deg,#6a4a2a 0%,#3a2210 100%);border-radius:30% 30% 10% 10% / 50% 50% 20% 20%;box-shadow:0 8px 16px rgba(0,0,0,.5);animation:pku-throne 8s ease-in-out infinite; }
.scn-palace-king-urgent .king-figure { position:absolute;bottom:42%;left:43%;width:22px;height:50px;background:linear-gradient(180deg,#4a3020 0%,#2a1a10 100%);border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;transform-origin:bottom center;animation:pku-king 3s ease-in-out infinite alternate; }
.scn-palace-king-urgent .messenger-figure { position:absolute;bottom:42%;right:25%;width:18px;height:42px;background:linear-gradient(180deg,#3a2a1a 0%,#1a0e05 100%);border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;transform-origin:bottom center;animation:pku-messenger 1.8s ease-in-out infinite; }
.scn-palace-king-urgent .scroll { position:absolute;bottom:35%;right:30%;width:16px;height:10px;background:#e8d5b7;border-radius:2px 2px 6px 6px;box-shadow:0 2px 4px rgba(0,0,0,.3);animation:pku-scroll 4s ease-in-out infinite; }
.scn-palace-king-urgent .door { position:absolute;top:25%;left:8%;width:12%;height:50%;background:linear-gradient(180deg,#5a3d22 0%,#3a2210 100%);border-radius:10% 10% 0 0 / 20% 20% 0 0;box-shadow:inset 0 0 20px rgba(0,0,0,.3);animation:pku-door 6s ease-in-out infinite alternate; }
@keyframes pku-throne { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-2px)} }
@keyframes pku-king { 0%{transform:rotate(-3deg) translateY(0)} 50%{transform:rotate(0) translateY(-1px)} 100%{transform:rotate(3deg) translateY(0)} }
@keyframes pku-messenger { 0%{transform:translateX(0) rotate(-5deg)} 25%{transform:translateX(-6px) rotate(0)} 50%{transform:translateX(-12px) rotate(5deg)} 75%{transform:translateX(-6px) rotate(0)} 100%{transform:translateX(0) rotate(-5deg)} }
@keyframes pku-scroll { 0%,100%{transform:rotate(0)} 50%{transform:rotate(6deg)} }
@keyframes pku-door { 0%{transform:scaleX(1)} 50%{transform:scaleX(1.1)} 100%{transform:scaleX(0.9)} }

.scn-palace-five-moons {
  background: linear-gradient(180deg,#0a0a2e 0%,#1a1a4a 50%,#0a0a2e 100%),radial-gradient(ellipse at 70% 20%,#c0d0ff 0%,transparent 60%);
}
.scn-palace-five-moons .night-sky { position:absolute;inset:0 0 50% 0;background:linear-gradient(180deg,#2a2a5e 0%,transparent 100%);animation:pfm-sky 15s ease-in-out infinite alternate; }
.scn-palace-five-moons .moon-beam { position:absolute;top:5%;left:65%;width:30%;height:40%;background:linear-gradient(135deg,rgba(192,208,255,.2) 0%,transparent 100%);filter:blur(8px);animation:pfm-beam 20s ease-in-out infinite; }
.scn-palace-five-moons .street { position:absolute;bottom:0;left:0;right:0;height:50%;background:linear-gradient(180deg,#3a3a5a 0%,#1a1a2e 100%);border-radius:60% 40% 0 0 / 20% 30% 0 0;box-shadow:inset 0 -20px 30px rgba(0,0,0,.7); }
.scn-palace-five-moons .building-left { position:absolute;bottom:40%;left:10%;width:25%;height:30%;background:linear-gradient(180deg,#4a4a6a 0%,#2a2a4a 100%);border-radius:5% 5% 0 0;box-shadow:0 8px 16px rgba(0,0,0,.4);animation:pfm-building 10s ease-in-out infinite alternate; }
.scn-palace-five-moons .building-right { position:absolute;bottom:40%;right:10%;width:20%;height:25%;background:linear-gradient(180deg,#3a3a5a 0%,#1a1a3a 100%);border-radius:8% 8% 0 0;box-shadow:0 8px 16px rgba(0,0,0,.4);animation:pfm-building2 12s ease-in-out infinite alternate; }
.scn-palace-five-moons .old-man-1 { position:absolute;bottom:42%;left:28%;width:16px;height:34px;background:linear-gradient(180deg,#2a2a4a 0%,#0a0a1a 100%);border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;transform-origin:bottom center;animation:pfm-figure1 4s ease-in-out infinite; }
.scn-palace-five-moons .old-man-2 { position:absolute;bottom:44%;left:48%;width:15px;height:32px;background:linear-gradient(180deg,#2a2a4a 0%,#0a0a1a 100%);border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;transform-origin:bottom center;animation:pfm-figure2 5s ease-in-out infinite 0.5s; }
.scn-palace-five-moons .old-man-3 { position:absolute;bottom:42%;right:28%;width:17px;height:36px;background:linear-gradient(180deg,#2a2a4a 0%,#0a0a1a 100%);border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;transform-origin:bottom center;animation:pfm-figure3 6s ease-in-out infinite 1s; }
.scn-palace-five-moons .crescent-moon { position:absolute;top:8%;left:70%;width:40px;height:40px;background:transparent;border-radius:50%;box-shadow:8px 8px 0 0 #e0e0e0,0 0 30px 10px rgba(224,224,224,.3);animation:pfm-moon 7s ease-in-out infinite alternate; }
@keyframes pfm-sky { 0%{opacity:.9} 50%{opacity:1} 100%{opacity:.8} }
@keyframes pfm-beam { 0%{opacity:.3;transform:translateX(0)} 50%{opacity:.6;transform:translateX(-10px)} 100%{opacity:.3;transform:translateX(10px)} }
@keyframes pfm-building { 0%{transform:scaleY(1)} 50%{transform:scaleY(1.02)} 100%{transform:scaleY(.98)} }
@keyframes pfm-building2 { 0%{transform:scaleY(1)} 50%{transform:scaleY(.98)} 100%{transform:scaleY(1.02)} }
@keyframes pfm-figure1 { 0%,100%{transform:rotate(-3deg) translateY(0)} 50%{transform:rotate(3deg) translateY(-2px)} }
@keyframes pfm-figure2 { 0%,100%{transform:rotate(2deg) translateY(0)} 50%{transform:rotate(-4deg) translateY(-1px)} }
@keyframes pfm-figure3 { 0%,100%{transform:rotate(-1deg) translateY(0)} 50%{transform:rotate(5deg) translateY(-3px)} }
@keyframes pfm-moon { 0%{opacity:.8;transform:scale(1)} 50%{opacity:1;transform:scale(1.05)} 100%{opacity:.9;transform:scale(.95)} }

.scn-palace-king-accuses {
  background: linear-gradient(180deg,#d4b896 0%,#b89870 30%,#8a6a4a 100%),radial-gradient(ellipse at 40% 50%,#ffe8c0 0%,transparent 70%);
}
.scn-palace-king-accuses .accuse-wall { position:absolute;inset:0 0 45% 0;background:linear-gradient(180deg,#a88060 0%,#6a4a32 100%); }
.scn-palace-king-accuses .accuse-floor { position:absolute;bottom:0;left:0;right:0;height:45%;background:linear-gradient(180deg,#5a3a22 0%,#2a1a10 100%);box-shadow:inset 0 8px 16px rgba(0,0,0,.5); }
.scn-palace-king-accuses .throne-large { position:absolute;bottom:42%;left:32%;width:36%;height:22%;background:linear-gradient(180deg,#6a4a2a 0%,#3a2210 100%);border-radius:40% 40% 20% 20% / 60% 60% 30% 30%;box-shadow:0 12px 24px rgba(0,0,0,.6);animation:pka-throne 7s ease-in-out infinite; }
.scn-palace-king-accuses .king-accuser { position:absolute;bottom:48%;left:40%;width:24px;height:54px;background:linear-gradient(180deg,#3a2210 0%,#1a0e05 100%);border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;transform-origin:bottom center;animation:pka-king 2s ease-in-out infinite alternate; }
.scn-palace-king-accuses .kneeling-figure { position:absolute;bottom:30%;left:52%;width:18px;height:28px;background:linear-gradient(180deg,#2a1a10 0%,#0a0500 100%);border-radius:50% 50% 40% 40% / 60% 60% 40% 40%;transform-origin:bottom center;animation:pka-kneel 1.5s ease-in-out infinite; }
.scn-palace-king-accuses .scepter { position:absolute;bottom:50%;left:45%;width:4px;height:30px;background:linear-gradient(180deg,#d4a060 0%,#804020 100%);border-radius:10% 10% 50% 50%;transform-origin:top center;animation:pka-scepter 3s ease-in-out infinite alternate; }
.scn-palace-king-accuses .shadow-pool { position:absolute;bottom:15%;left:35%;width:30%;height:20%;background:radial-gradient(ellipse at center,rgba(0,0,0,.4) 0%,transparent 70%);animation:pka-shadow 5s ease-in-out infinite; }
@keyframes pka-throne { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-3px)} }
@keyframes pka-king { 0%{transform:rotate(-5deg) translateY(0)} 50%{transform:rotate(5deg) translateY(-1px)} 100%{transform:rotate(-3deg) translateY(0)} }
@keyframes pka-kneel { 0%,100%{transform:translateY(0) rotate(0)} 25%{transform:translateY(-2px) rotate(-2deg)} 50%{transform:translateY(0) rotate(0)} 75%{transform:translateY(-3px) rotate(2deg)} }
@keyframes pka-scepter { 0%{transform:rotate(0) scaleX(1)} 50%{transform:rotate(8deg) scaleX(.8)} 100%{transform:rotate(0) scaleX(1)} }
@keyframes pka-shadow { 0%{opacity:.5;transform:scaleX(1)} 50%{opacity:1;transform:scaleX(1.1)} 100%{opacity:.6;transform:scaleX(.95)} }
/* end per-scene blocks */

/* auto-stub: parent tag-classes flagged by CSS audit */
.attendant { position: absolute; pointer-events: none; }
.cloud { position: absolute; pointer-events: none; }
.scn { position: absolute; pointer-events: none; }
.soldier { position: absolute; pointer-events: none; }
.spark { position: absolute; pointer-events: none; }

/* ============ tier A ============ */
/* per-scene blocks (EXP step_scenes) */
/* Scene: king-johns-palace */
.scn-king-johns-palace {
  background: linear-gradient(180deg, #e8c99b 0%, #c89a5e 40%, #7a5a2e 100%),
              radial-gradient(ellipse at 50% 30%, #f0d8a0 0%, transparent 60%);
}
.scn-king-johns-palace .floor        { position:absolute; bottom:0; left:0; right:0; height:35%; background: linear-gradient(180deg, #5a3e1a 0%, #3a2a0a 100%); }
.scn-king-johns-palace .back-wall    { position:absolute; inset:0 0 35% 0; background: linear-gradient(90deg, #b08050 0%, #d0a870 30%, #c89860 70%, #a07040 100%); }
.scn-king-johns-palace .window.left  { position:absolute; top:10%; left:12%; width:18%; height:40%; background: radial-gradient(ellipse at 50% 60%, #88bbdd 0%, #446688 70%, transparent 100%); border-radius: 8%/4%; box-shadow: inset 0 0 30px rgba(255,220,160,.3); }
.scn-king-johns-palace .window.right { position:absolute; top:10%; right:12%; width:18%; height:40%; background: radial-gradient(ellipse at 50% 60%, #88bbdd 0%, #446688 70%, transparent 100%); border-radius: 8%/4%; box-shadow: inset 0 0 30px rgba(255,220,160,.3); }
.scn-king-johns-palace .throne       { position:absolute; bottom:35%; left:50%; width:70px; height:100px; transform:translate(-50%,0); background: linear-gradient(180deg, #c8a060 0%, #9a7a3a 60%, #6a4a1a 100%); border-radius: 20% 20% 10% 10%; box-shadow: 0 -8px 20px rgba(0,0,0,.5); }
.scn-king-johns-palace .king         { position:absolute; bottom:40%; left:50%; width:40px; height:60px; transform:translate(-50%,0); background: linear-gradient(180deg, #d4b080 0%, #a08050 100%); border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%; animation: kp-king 6s ease-in-out infinite; }
.scn-king-johns-palace .queen        { position:absolute; bottom:40%; left:30%; width:36px; height:56px; background: linear-gradient(180deg, #c08868 0%, #906858 100%); border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%; animation: kp-queen 8s ease-in-out infinite; }
.scn-king-johns-palace .ambassador   { position:absolute; bottom:40%; right:30%; width:32px; height:58px; background: linear-gradient(180deg, #b08060 0%, #7a5a40 100%); border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%; animation: kp-amb 9s ease-in-out infinite; }
.scn-king-johns-palace .shadow-sharp { position:absolute; inset:0; background: radial-gradient(ellipse at 50% 80%, rgba(0,0,0,.15) 0%, transparent 70%); animation: kp-shadow 4s ease-in-out infinite alternate; }
@keyframes kp-king { 0% { transform: translate(-50%,0) rotate(0) } 50% { transform: translate(-50%,-2px) rotate(1deg) } 100% { transform: translate(-50%,0) rotate(0) } }
@keyframes kp-queen { 0% { transform: translate(0,0) rotate(-2deg) } 50% { transform: translate(3px,-1px) rotate(1deg) } 100% { transform: translate(0,0) rotate(-2deg) } }
@keyframes kp-amb { 0% { transform: translate(0,0) rotate(0) } 50% { transform: translate(-2px,-3px) rotate(2deg) } 100% { transform: translate(0,0) rotate(0) } }
@keyframes kp-shadow { 0% { opacity:0.6 } 50% { opacity:1 } 100% { opacity:0.7 } }

/* Scene: sheriff-comes */
.scn-sheriff-comes {
  background: linear-gradient(180deg, #d4b080 0%, #b08850 40%, #705030 100%),
              radial-gradient(ellipse at 70% 50%, #f0c8a0 0%, transparent 60%);
}
.scn-sheriff-comes .floor     { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #4a321a 0%, #2a1a0a 100%); }
.scn-sheriff-comes .back-wall { position:absolute; inset:0 0 30% 0; background: linear-gradient(90deg, #a07848 0%, #b89058 30%, #a07848 70%, #886838 100%); }
.scn-sheriff-comes .door      { position:absolute; left:50%; bottom:30%; width:80px; height:90px; transform:translate(-50%,0); background: linear-gradient(180deg, #6a4a2e 0%, #3a2a1a 100%); border-radius: 10% 10% 0 0; box-shadow: -4px 0 8px rgba(0,0,0,.5), 4px 0 8px rgba(0,0,0,.5); animation: sc-door 3s ease-in-out infinite alternate; }
.scn-sheriff-comes .sheriff  { position:absolute; left:38%; bottom:30%; width:40px; height:70px; background: linear-gradient(180deg, #4a6a3a 0%, #2a3a1a 100%); border-radius: 30% 30% 20% 20% / 40% 40% 30% 30%; animation: sc-sheriff 6s ease-in-out infinite; }
.scn-sheriff-comes .men-a    { position:absolute; left:28%; bottom:30%; width:34px; height:60px; background: linear-gradient(180deg, #4a4a3a 0%, #2a2a1a 100%); border-radius: 30% 30% 20% 20% / 40% 40% 30% 30%; animation: sc-men 7s ease-in-out infinite; }
.scn-sheriff-comes .men-b    { position:absolute; left:50%; bottom:30%; width:34px; height:60px; transform:translateX(60px); background: linear-gradient(180deg, #4a4a3a 0%, #2a2a1a 100%); border-radius: 30% 30% 20% 20% / 40% 40% 30% 30%; animation: sc-men 7s ease-in-out infinite 0.5s; }
.scn-sheriff-comes .lantern  { position:absolute; left:50%; bottom:70%; width:12px; height:12px; transform:translate(-50%,0); background: radial-gradient(circle, #f0e080 0%, #c8a030 70%); border-radius:50%; box-shadow: 0 0 20px 8px rgba(200,160,48,.6); animation: sc-lantern 2s ease-in-out infinite alternate; }
@keyframes sc-door   { 0% { transform:translate(-50%,0) scaleX(1) } 50% { transform:translate(-50%,-2px) scaleX(1.02) } 100% { transform:translate(-50%,0) scaleX(1) } }
@keyframes sc-sheriff{ 0% { transform:translate(0,0) rotate(0) } 50% { transform:translate(4px,-2px) rotate(2deg) } 100% { transform:translate(0,0) rotate(0) } }
@keyframes sc-men    { 0% { transform:translate(0,0) } 50% { transform:translate(2px,-1px) } 100% { transform:translate(0,0) } }
@keyframes sc-lantern{ 0% { opacity:0.7; box-shadow:0 0 15px 4px rgba(200,160,48,.4) } 50% { opacity:1; box-shadow:0 0 30px 12px rgba(200,160,48,.8) } 100% { opacity:0.8; box-shadow:0 0 20px 6px rgba(200,160,48,.5) } }

/* Scene: faulconbridge-brothers */
.scn-faulconbridge-brothers {
  background: linear-gradient(180deg, #c8b088 0%, #a88860 40%, #705838 100%),
              radial-gradient(ellipse at 50% 40%, #e0c8a0 0%, transparent 60%);
}
.scn-faulconbridge-brothers .floor          { position:absolute; bottom:0; left:0; right:0; height:28%; background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%); }
.scn-faulconbridge-brothers .back-wall      { position:absolute; inset:0 0 28% 0; background: linear-gradient(90deg, #906848 0%, #b08858 30%, #a07848 70%, #806038 100%); }
.scn-faulconbridge-brothers .window         { position:absolute; top:12%; left:50%; width:30%; height:35%; transform:translate(-50%,0); background: radial-gradient(ellipse at 50% 60%, #aacce0 0%, #4477aa 70%, transparent 100%); border-radius: 10% / 6%; box-shadow: inset 0 0 20px rgba(255,230,180,.2); }
.scn-faulconbridge-brothers .brother-elder  { position:absolute; left:35%; bottom:28%; width:38px; height:64px; background: linear-gradient(180deg, #5a3a2a 0%, #3a2a1a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%; animation: fb-elder 5s ease-in-out infinite; }
.scn-faulconbridge-brothers .brother-younger{ position:absolute; left:55%; bottom:28%; width:34px; height:58px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%; animation: fb-younger 7s ease-in-out infinite; }
.scn-faulconbridge-brothers .mother         { position:absolute; left:45%; bottom:40%; width:32px; height:50px; background: linear-gradient(180deg, #6a4a3a 0%, #4a2a1a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%; animation: fb-mother 8s ease-in-out infinite; }
.scn-faulconbridge-brothers .halo           { position:absolute; left:35%; bottom:50%; width:50px; height:20px; background: radial-gradient(ellipse, rgba(255,210,140,.4) 0%, transparent 70%); border-radius:50%; filter: blur(8px); animation: fb-halo 4s ease-in-out infinite alternate; }
@keyframes fb-elder   { 0% { transform:translate(0,0) rotate(-2deg) } 50% { transform:translate(-3px,-2px) rotate(2deg) } 100% { transform:translate(0,0) rotate(-2deg) } }
@keyframes fb-younger { 0% { transform:translate(0,0) rotate(2deg) } 50% { transform:translate(3px,-1px) rotate(-2deg) } 100% { transform:translate(0,0) rotate(2deg) } }
@keyframes fb-mother  { 0% { transform:translate(0,0) } 50% { transform:translate(-2px,-1px) } 100% { transform:translate(0,0) } }
@keyframes fb-halo    { 0% { opacity:0.5; transform:scale(0.9) } 50% { opacity:1; transform:scale(1.1) } 100% { opacity:0.6; transform:scale(0.95) } }

/* Scene: bastard-claims-earldom (funny mood) */
.scn-bastard-claims-earldom {
  background: linear-gradient(180deg, #f0d8a0 0%, #d8b878 40%, #b09058 100%),
              radial-gradient(ellipse at 50% 30%, #ffe8c0 0%, transparent 60%);
}
.scn-bastard-claims-earldom .floor   { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #6a4a2a 0%, #3a2a12 100%); }
.scn-bastard-claims-earldom .back-wall{ position:absolute; inset:0 0 30% 0; background: linear-gradient(90deg, #c8a068 0%, #e0c080 30%, #c8a068 70%, #a88850 100%); }
.scn-bastard-claims-earldom .window  { position:absolute; top:15%; right:18%; width:22%; height:38%; background: radial-gradient(ellipse at 50% 40%, #aaccdd 0%, #5588bb 60%, transparent 100%); border-radius: 10% / 6%; box-shadow: inset 0 0 30px rgba(255,240,200,.4); }
.scn-bastard-claims-earldom .bastard { position:absolute; left:35%; bottom:30%; width:44px; height:68px; background: linear-gradient(180deg, #b08060 0%, #7a5a40 100%); border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%; animation: bc-bastard 2s ease-in-out infinite; }
.scn-bastard-claims-earldom .king    { position:absolute; left:55%; bottom:30%; width:42px; height:66px; background: linear-gradient(180deg, #c8a070 0%, #907050 100%); border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%; animation: bc-king 4s ease-in-out infinite; }
.scn-bastard-claims-earldom .letter  { position:absolute; left:38%; bottom:60%; width:16px; height:20px; background: linear-gradient(180deg, #f0e0b0 0%, #d0c090 100%); border-radius: 10%; transform-origin: bottom left; animation: bc-letter 2.5s ease-in-out infinite alternate; }
.scn-bastard-claims-earldom .sparkle { position:absolute; left:38%; bottom:75%; width:30px; height:30px; background: radial-gradient(circle, rgba(255,220,100,.6) 0%, transparent 70%); border-radius:50%; filter: blur(6px); animation: bc-sparkle 1.5s ease-in-out infinite alternate; }
@keyframes bc-bastard { 0% { transform:translate(0,0) rotate(-5deg) scale(1) } 25% { transform:translate(8px,-4px) rotate(3deg) scale(1.05) } 50% { transform:translate(-3px,-8px) rotate(-2deg) scale(0.95) } 75% { transform:translate(5px,-2px) rotate(4deg) scale(1.02) } 100% { transform:translate(0,0) rotate(-5deg) scale(1) } }
@keyframes bc-king    { 0% { transform:translate(0,0) rotate(0) } 50% { transform:translate(-2px,-3px) rotate(2deg) } 100% { transform:translate(0,0) rotate(0) } }
@keyframes bc-letter  { 0% { transform:rotate(0) translate(0,0) } 50% { transform:rotate(20deg) translate(2px,-2px) } 100% { transform:rotate(-10deg) translate(-1px,-1px) } }
@keyframes bc-sparkle { 0% { opacity:0.3; transform:scale(0.8) } 50% { opacity:1; transform:scale(1.3) } 100% { opacity:0.5; transform:scale(0.9) } }

/* scene: bastard-knighted */
.scn-bastard-knighted {
  background: linear-gradient(180deg, #d4a76a 0%, #8b5e3c 50%, #4a2c1a 100%),
              radial-gradient(ellipse at 50% 60%, #f0d080 0%, transparent 70%);
}
.scn-bastard-knighted .bk-wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(90deg, #7a5a3a 0%, #b08050 30%, #c09060 70%, #7a5a3a 100%);
  border-bottom: 4px solid #4a2c1a;
}
.scn-bastard-knighted .bk-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #5a3a2a 0%, #3a2210 100%);
}
.scn-bastard-knighted .bk-throne {
  position: absolute; bottom: 25%; left: 50%; width: 80px; height: 100px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #6a4a3a 0%, #3a2a1a 100%);
  border-radius: 8px 8px 4px 4px;
  box-shadow: 0 8px 16px rgba(0,0,0,0.5);
}
.scn-bastard-knighted .bk-throne::before {
  content: ''; position: absolute; top: -20px; left: 10px; right: 10px; height: 20px;
  background: linear-gradient(180deg, #8a6a4a 0%, #6a4a3a 100%);
  border-radius: 50% 50% 0 0;
}
.scn-bastard-knighted .bk-figure {
  position: absolute; bottom: 30%; left: 45%; width: 30px; height: 60px;
  transform: translateX(-50%) rotate(10deg);
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: bk-kneel 6s ease-in-out infinite alternate;
}
.scn-bastard-knighted .bk-sword {
  position: absolute; bottom: 32%; left: 48%; width: 6px; height: 50px;
  background: linear-gradient(180deg, #c0c0c0 0%, #808080 50%, #c0c0c0 100%);
  transform: rotate(-15deg);
  border-radius: 2px;
  box-shadow: 0 0 8px 2px rgba(255,215,0,0.3);
  animation: bk-sword 4s ease-in-out infinite alternate;
}
.scn-bastard-knighted .bk-candle {
  position: absolute; bottom: 35%; right: 30%; width: 8px; height: 20px;
  background: linear-gradient(180deg, #f0d080 0%, #d4a76a 50%, #8b5e3c 100%);
  border-radius: 2px 2px 4px 4px;
  box-shadow: 0 0 16px 8px rgba(240,208,128,0.6);
  animation: bk-flicker 2s ease-in-out infinite alternate;
}
.scn-bastard-knighted .bk-window {
  position: absolute; top: 10%; right: 20%; width: 50px; height: 70px;
  background: radial-gradient(ellipse at 50% 50%, #f0e0c0 0%, #c0a080 100%);
  border: 4px solid #4a2c1a;
  border-radius: 4px;
  box-shadow: inset 0 0 20px rgba(240,224,192,0.3);
}
.scn-bastard-knighted .bk-light {
  position: absolute; bottom: 30%; left: 40%; width: 120px; height: 120px;
  background: radial-gradient(circle, rgba(240,208,128,0.4) 0%, transparent 70%);
  animation: bk-glow 4s ease-in-out infinite alternate;
}
@keyframes bk-kneel {
  0% { transform: translateX(-50%) rotate(10deg) translateY(0); }
  50% { transform: translateX(-50%) rotate(5deg) translateY(-2px); }
  100% { transform: translateX(-50%) rotate(10deg) translateY(0); }
}
@keyframes bk-sword {
  0% { transform: rotate(-18deg) translateX(0); }
  50% { transform: rotate(-12deg) translateX(2px); }
  100% { transform: rotate(-18deg) translateX(0); }
}
@keyframes bk-flicker {
  0% { opacity: 0.8; box-shadow: 0 0 12px 6px rgba(240,208,128,0.5); }
  50% { opacity: 1; box-shadow: 0 0 24px 12px rgba(255,224,160,0.7); }
  100% { opacity: 0.8; box-shadow: 0 0 12px 6px rgba(240,208,128,0.5); }
}
@keyframes bk-glow {
  0% { opacity: 0.3; transform: scale(1); }
  50% { opacity: 0.6; transform: scale(1.05); }
  100% { opacity: 0.3; transform: scale(1); }
}

/* scene: bastard-soliloquy */
.scn-bastard-soliloquy {
  background: linear-gradient(180deg, #e8d8b0 0%, #c8b090 50%, #a88870 100%),
              radial-gradient(ellipse at 50% 40%, #f0e0c0 0%, transparent 60%);
}
.scn-bastard-soliloquy .bs-bg {
  position: absolute; inset: 0 0 20% 0;
  background: linear-gradient(90deg, #b09070 0%, #d0b090 30%, #c0a080 70%, #b09070 100%);
}
.scn-bastard-soliloquy .bs-table {
  position: absolute; bottom: 20%; left: 30%; right: 10%; height: 20px;
  background: linear-gradient(180deg, #8a6a4a 0%, #6a4a3a 100%);
  border-radius: 4px;
  box-shadow: 0 4px 8px rgba(0,0,0,0.3);
}
.scn-bastard-soliloquy .bs-figure {
  position: absolute; bottom: 22%; left: 35%; width: 40px; height: 60px;
  transform: translateX(-50%) rotate(-5deg);
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: bs-lean 4s ease-in-out infinite alternate;
}
.scn-bastard-soliloquy .bs-toothpick {
  position: absolute; bottom: 30%; left: 38%; width: 2px; height: 12px;
  background: #c0a080;
  transform: rotate(30deg);
  animation: bs-pick 3s ease-in-out infinite alternate;
}
.scn-bastard-soliloquy .bs-goblet {
  position: absolute; bottom: 20%; left: 45%; width: 14px; height: 18px;
  background: linear-gradient(180deg, #d0c0a0 0%, #a08870 100%);
  border-radius: 0 0 4px 4px;
  box-shadow: 0 2px 4px rgba(0,0,0,0.2);
}
.scn-bastard-soliloquy .bs-plate {
  position: absolute; bottom: 20%; left: 40%; width: 30px; height: 4px;
  background: #a08060;
  border-radius: 50%;
}
.scn-bastard-soliloquy .bs-candle {
  position: absolute; bottom: 22%; right: 25%; width: 6px; height: 16px;
  background: linear-gradient(180deg, #f0d080 0%, #d4a76a 50%, #8b5e3c 100%);
  box-shadow: 0 0 12px 6px rgba(240,208,128,0.5);
  animation: bs-flicker 2.5s ease-in-out infinite alternate;
}
@keyframes bs-lean {
  0% { transform: translateX(-50%) rotate(-5deg) translateY(0); }
  50% { transform: translateX(-50%) rotate(0deg) translateY(-2px); }
  100% { transform: translateX(-50%) rotate(-5deg) translateY(0); }
}
@keyframes bs-pick {
  0% { transform: rotate(25deg) translateX(0); }
  50% { transform: rotate(35deg) translateX(2px); }
  100% { transform: rotate(25deg) translateX(0); }
}
@keyframes bs-flicker {
  0% { opacity: 0.8; box-shadow: 0 0 8px 4px rgba(240,208,128,0.4); }
  50% { opacity: 1; box-shadow: 0 0 18px 8px rgba(255,224,160,0.6); }
  100% { opacity: 0.8; box-shadow: 0 0 8px 4px rgba(240,208,128,0.4); }
}

/* scene: mother-and-bastard */
.scn-mother-and-bastard {
  background: linear-gradient(180deg, #8a7a6a 0%, #6a5a4a 50%, #4a3a2a 100%),
              radial-gradient(ellipse at 50% 70%, #b0a090 0%, transparent 60%);
}
.scn-mother-and-bastard .mb-wall {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(90deg, #5a4a3a 0%, #7a6a5a 30%, #6a5a4a 70%, #5a4a3a 100%);
  border-bottom: 6px solid #3a2a1a;
}
.scn-mother-and-bastard .mb-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
}
.scn-mother-and-bastard .mb-figure-a,
.scn-mother-and-bastard .mb-figure-b {
  position: absolute; bottom: 35%; width: 30px; height: 60px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
}
.scn-mother-and-bastard .mb-figure-a {
  left: 35%;
  transform: translateX(-50%);
  animation: mb-turn-a 5s ease-in-out infinite alternate;
}
.scn-mother-and-bastard .mb-figure-b {
  left: 65%;
  transform: translateX(-50%) scaleX(-1);
  animation: mb-turn-b 5s ease-in-out infinite alternate;
}
.scn-mother-and-bastard .mb-shadow-a,
.scn-mother-and-bastard .mb-shadow-b {
  position: absolute; bottom: 32%; width: 40px; height: 10px;
  background: rgba(0,0,0,0.3);
  border-radius: 50%;
}
.scn-mother-and-bastard .mb-shadow-a { left: 35%; transform: translateX(-50%); }
.scn-mother-and-bastard .mb-shadow-b { left: 65%; transform: translateX(-50%); }
.scn-mother-and-bastard .mb-candle {
  position: absolute; bottom: 40%; left: 50%; width: 6px; height: 20px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #d0a070 0%, #8b5e3c 50%, #4a2c1a 100%);
  box-shadow: 0 0 20px 10px rgba(200,160,120,0.4);
  animation: mb-flicker 2s ease-in-out infinite alternate;
}
.scn-mother-and-bastard .mb-light {
  position: absolute; bottom: 35%; left: 45%; width: 100px; height: 100px;
  background: radial-gradient(circle, rgba(200,160,120,0.2) 0%, transparent 70%);
  animation: mb-glow 3s ease-in-out infinite alternate;
}
@keyframes mb-turn-a {
  0% { transform: translateX(-50%) rotate(0deg) translateY(0); }
  50% { transform: translateX(-50%) rotate(10deg) translateY(-2px); }
  100% { transform: translateX(-50%) rotate(0deg) translateY(0); }
}
@keyframes mb-turn-b {
  0% { transform: translateX(-50%) scaleX(-1) rotate(0deg) translateY(0); }
  50% { transform: translateX(-50%) scaleX(-1) rotate(-10deg) translateY(-2px); }
  100% { transform: translateX(-50%) scaleX(-1) rotate(0deg) translateY(0); }
}
@keyframes mb-flicker {
  0% { opacity: 0.7; box-shadow: 0 0 12px 6px rgba(200,160,120,0.3); }
  50% { opacity: 1; box-shadow: 0 0 24px 12px rgba(220,180,140,0.5); }
  100% { opacity: 0.7; box-shadow: 0 0 12px 6px rgba(200,160,120,0.3); }
}
@keyframes mb-glow {
  0% { opacity: 0.2; transform: scale(1); }
  50% { opacity: 0.5; transform: scale(1.1); }
  100% { opacity: 0.2; transform: scale(1); }
}

/* scene: france-before-angiers */
.scn-france-before-angiers {
  background: linear-gradient(180deg, #87ceeb 0%, #b0e0e6 30%, #f0e68c 60%, #f5deb3 100%),
              radial-gradient(ellipse at 50% 20%, #fff8dc 0%, transparent 50%);
}
.scn-france-before-angiers .fa-sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #87ceeb 0%, #b0e0e6 50%, #f0e68c 100%);
  animation: fa-sky 20s ease-in-out infinite alternate;
}
.scn-france-before-angiers .fa-sun {
  position: absolute; top: 10%; left: 60%; width: 50px; height: 50px;
  background: radial-gradient(circle, #fff8dc 0%, #f0e68c 50%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 40px 20px rgba(240,230,140,0.4);
  animation: fa-sun 8s ease-in-out infinite alternate;
}
.scn-france-before-angiers .fa-hills {
  position: absolute; bottom: 30%; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #6b8e23 0%, #556b2f 100%);
  border-radius: 60% 40% 0 0 / 80% 60% 0 0;
  box-shadow: inset 0 4px 10px rgba(0,0,0,0.2);
  animation: fa-hills 12s ease-in-out infinite alternate;
}
.scn-france-before-angiers .fa-city {
  position: absolute; bottom: 30%; left: 30%; right: 30%; height: 25%;
  background: linear-gradient(180deg, #c4a882 0%, #a08060 100%);
  border-radius: 4px 4px 0 0;
  box-shadow: 0 4px 8px rgba(0,0,0,0.3);
}
.scn-france-before-angiers .fa-city::before {
  content: ''; position: absolute; top: -10px; left: 10%; width: 20px; height: 20px;
  background: #a08060; border-radius: 2px 2px 0 0;
}
.scn-france-before-angiers .fa-figure-a,
.scn-france-before-angiers .fa-figure-b {
  position: absolute; bottom: 28%; width: 30px; height: 50px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: fa-figures 6s ease-in-out infinite alternate;
}
.scn-france-before-angiers .fa-figure-a {
  left: 25%; transform: translateX(-50%);
}
.scn-france-before-angiers .fa-figure-b {
  left: 75%; transform: translateX(-50%) scaleX(-1);
  animation-delay: 1s;
}
.scn-france-before-angiers .fa-flag {
  position: absolute; bottom: 30%; left: 50%; width: 4px; height: 40px;
  background: #4a3a2a;
  transform: translateX(-50%);
}
.scn-france-before-angiers .fa-flag::after {
  content: ''; position: absolute; top: -10px; left: 0; width: 20px; height: 14px;
  background: linear-gradient(180deg, #d4a76a 0%, #8b5e3c 100%);
  clip-path: polygon(0 0, 100% 0, 100% 100%, 0 85%);
}
.scn-france-before-angiers .fa-ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 28%;
  background: linear-gradient(180deg, #7c9c6e 0%, #5a7a4a 100%);
}
.scn-france-before-angiers .fa-dust {
  position: absolute; bottom: 25%; left: 20%; width: 80px; height: 20px;
  background: radial-gradient(ellipse at 50% 50%, rgba(200,180,150,0.3) 0%, transparent 70%);
  filter: blur(4px);
  animation: fa-dust 15s ease-in-out infinite alternate;
}
@keyframes fa-sky {
  0% { opacity: 0.8; }
  50% { opacity: 1; }
  100% { opacity: 0.9; }
}
@keyframes fa-sun {
  0% { transform: translateY(0); opacity: 0.9; }
  50% { transform: translateY(-4px); opacity: 1; }
  100% { transform: translateY(2px); opacity: 0.9; }
}
@keyframes fa-hills {
  0% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
  100% { transform: translateY(0); }
}
@keyframes fa-figures {
  0% { transform: translateX(-50%) rotate(0deg); }
  50% { transform: translateX(-50%) rotate(5deg) translateY(-2px); }
  100% { transform: translateX(-50%) rotate(0deg); }
}
@keyframes fa-dust {
  0% { transform: translateX(0) scale(1); opacity: 0.3; }
  50% { transform: translateX(10px) scale(1.1); opacity: 0.5; }
  100% { transform: translateX(-5px) scale(0.9); opacity: 0.2; }
}

.scn-after-battle-heralds {
  background: linear-gradient(180deg, #87CEEB 0%, #F0E68C 40%, #B8860B 70%, #8B4513 100%), radial-gradient(ellipse at 50% 0%, #FFF8DC 0%, transparent 60%);
}
.scn-after-battle-heralds .sky { position:absolute; inset:0 0 45% 0; background: linear-gradient(180deg, #87CEEB 0%, transparent 100%); animation: abh-sky 15s ease-in-out infinite alternate; }
.scn-after-battle-heralds .sun { position:absolute; top:8%; left:70%; width:60px; height:60px; background: radial-gradient(circle, #FFF8DC 0%, #FFD700 50%, transparent 70%); border-radius:50%; animation: abh-sun 10s ease-in-out infinite alternate; }
.scn-after-battle-heralds .ground { position:absolute; bottom:0; left:0; right:0; height:45%; background: linear-gradient(180deg, #8B4513 0%, #2F1E0E 100%); border-radius: 30% 70% 0 0 / 50% 50% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,.5); }
.scn-after-battle-heralds .bodies { position:absolute; bottom:12%; left:10%; right:10%; height:18%; background: repeating-linear-gradient(90deg, #2F1E0E 0px, #2F1E0E 20px, transparent 20px, transparent 40px), radial-gradient(ellipse at 30% 50%, #1A1108 0%, transparent 60%); border-radius: 30% 30% 0 0; opacity:0.7; animation: abh-bodies 12s ease-in-out infinite; }
.scn-after-battle-heralds .herald { position:absolute; bottom:18%; left:50%; width:20px; height:70px; transform:translateX(-50%); background: linear-gradient(180deg, #1A1108 0%, #0A0502 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; animation: abh-herald 8s ease-in-out infinite; }
.scn-after-battle-heralds .banner { position:absolute; bottom:38%; left:50%; width:40px; height:30px; transform:translateX(10px); background: linear-gradient(135deg, #B8860B 0%, #8B6508 100%); border-radius: 0 60% 60% 0; clip-path: polygon(0 0, 100% 10%, 100% 90%, 0 100%); animation: abh-banner 4s ease-in-out infinite alternate; }
.scn-after-battle-heralds .spear { position:absolute; bottom:18%; left:50%; width:4px; height:100px; transform:translateX(-10px); background: linear-gradient(180deg, #8B6508 0%, #4A3A1A 100%); border-radius: 2px; animation: abh-spear 6s ease-in-out infinite; }

@keyframes abh-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.7 } }
@keyframes abh-sun { 0% { transform: scale(1); opacity:0.9 } 50% { transform: scale(1.05); opacity:1 } 100% { transform: scale(0.98); opacity:0.85 } }
@keyframes abh-bodies { 0%,100% { transform: translateY(0); opacity:0.7 } 50% { transform: translateY(-2px); opacity:0.6 } }
@keyframes abh-herald { 0%,100% { transform: translateX(-50%) rotate(0deg) } 25% { transform: translateX(-48%) rotate(2deg) } 75% { transform: translateX(-52%) rotate(-2deg) } }
@keyframes abh-banner { 0% { transform: translateX(10px) rotate(0deg) scaleY(1) } 50% { transform: translateX(12px) rotate(5deg) scaleY(1.05) } 100% { transform: translateX(8px) rotate(-5deg) scaleY(0.95) } }
@keyframes abh-spear { 0%,100% { transform: translateX(-10px) rotate(0deg) } 50% { transform: translateX(-12px) rotate(2deg) } }

/* -------------------------------------------------------------- */

.scn-second-parle {
  background: linear-gradient(180deg, #87CEEB 0%, #F0E68C 40%, #B8860B 70%, #6B4226 100%), radial-gradient(ellipse at 50% 0%, #FFF8DC 0%, transparent 60%);
}
.scn-second-parle .sky { position:absolute; inset:0 0 50% 0; background: linear-gradient(180deg, #87CEEB 0%, #E0D5A0 100%); animation: sec-sky 14s ease-in-out infinite alternate; }
.scn-second-parle .sun { position:absolute; top:10%; left:55%; width:70px; height:70px; background: radial-gradient(circle, #FFF8DC 0%, #FFD700 50%, transparent 70%); border-radius:50%; animation: sec-sun 18s ease-in-out infinite alternate; }
.scn-second-parle .plain { position:absolute; bottom:0; left:0; right:0; height:50%; background: linear-gradient(180deg, #B8860B 0%, #6B4226 100%); box-shadow: inset 0 10px 30px rgba(0,0,0,.4); border-radius: 20% 80% 0 0 / 40% 60% 0 0; }
.scn-second-parle .left-figure { position:absolute; bottom:20%; left:25%; width:22px; height:80px; background: linear-gradient(180deg, #1A1108 0%, #0A0502 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: sec-left 12s ease-in-out infinite; }
.scn-second-parle .right-figure { position:absolute; bottom:20%; right:25%; width:22px; height:80px; background: linear-gradient(180deg, #1A1108 0%, #0A0502 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: sec-right 12s ease-in-out infinite; }
.scn-second-parle .standard { position:absolute; bottom:32%; left:50%; width:30px; height:60px; transform:translateX(-50%); background: linear-gradient(180deg, #8B6508 0%, #5A3A1A 100%); clip-path: polygon(0 0, 100% 10%, 100% 90%, 0 100%); animation: sec-standard 6s ease-in-out infinite alternate; }

@keyframes sec-sky { 0% { opacity:0.85 } 50% { opacity:1 } 100% { opacity:0.75 } }
@keyframes sec-sun { 0% { transform: scale(1) translateY(0); opacity:0.9 } 50% { transform: scale(1.03) translateY(-2px); opacity:1 } 100% { transform: scale(0.98) translateY(0); opacity:0.85 } }
@keyframes sec-left { 0%,100% { transform: translateX(0) rotate(0deg) } 30% { transform: translateX(-8px) rotate(3deg) } 70% { transform: translateX(4px) rotate(-2deg) } }
@keyframes sec-right { 0%,100% { transform: translateX(0) rotate(0deg) } 30% { transform: translateX(8px) rotate(-3deg) } 70% { transform: translateX(-4px) rotate(2deg) } }
@keyframes sec-standard { 0% { transform: translateX(-50%) scaleY(1) rotate(0deg) } 50% { transform: translateX(-50%) scaleY(1.03) rotate(2deg) } 100% { transform: translateX(-50%) scaleY(0.97) rotate(-2deg) } }

/* -------------------------------------------------------------- */

.scn-citizen-offers-marriage {
  background: linear-gradient(180deg, #F5DEB3 0%, #FFF8DC 30%, #E0C9A0 60%, #8B7355 100%), radial-gradient(ellipse at 50% 0%, #FFFACD 0%, transparent 50%);
}
.scn-citizen-offers-marriage .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #F5DEB3 0%, transparent 100%); animation: com-sky 20s ease-in-out infinite alternate; }
.scn-citizen-offers-marriage .hills { position:absolute; bottom:25%; left:0; right:0; height:20%; background: linear-gradient(180deg, #BDB76B 0%, #6B8E23 100%); border-radius: 60% 40% 0 0 / 80% 70% 0 0; box-shadow: inset 0 6px 15px rgba(0,0,0,.2); animation: com-hills 18s ease-in-out infinite alternate; }
.scn-citizen-offers-marriage .path { position:absolute; bottom:20%; left:30%; right:30%; height:10%; background: linear-gradient(90deg, #C4A882 0%, #E6D5B8 50%, #C4A882 100%); border-radius: 50%; transform: scaleX(1.5); filter: blur(2px); animation: com-path 30s ease-in-out infinite alternate; }
.scn-citizen-offers-marriage .figure-left { position:absolute; bottom:22%; left:35%; width:20px; height:70px; background: linear-gradient(180deg, #4A3A2A 0%, #2A1A0A 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: com-left 10s ease-in-out infinite; }
.scn-citizen-offers-marriage .figure-right { position:absolute; bottom:22%; right:35%; width:20px; height:70px; background: linear-gradient(180deg, #4A3A2A 0%, #2A1A0A 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: com-right 10s ease-in-out infinite; }
.scn-citizen-offers-marriage .scroll { position:absolute; bottom:36%; left:48%; width:30px; height:10px; background: #F5DEB3; border-radius: 20%; box-shadow: 0 0 6px rgba(0,0,0,.3); transform: rotate(10deg); animation: com-scroll 8s ease-in-out infinite alternate; }
.scn-citizen-offers-marriage .tree { position:absolute; bottom:30%; left:15%; width:40px; height:80px; background: linear-gradient(180deg, #6B4226 0%, #3A2A1A 100%); border-radius: 40% 40% 20% 20%; transform-origin: bottom center; animation: com-tree 25s ease-in-out infinite alternate; }

@keyframes com-sky { 0% { opacity:0.9 } 50% { opacity:1 } 100% { opacity:0.8 } }
@keyframes com-hills { 0% { transform: translateY(0) } 50% { transform: translateY(-3px) } 100% { transform: translateY(0) } }
@keyframes com-path { 0% { transform: scaleX(1.5) rotate(0deg) } 50% { transform: scaleX(1.6) rotate(2deg) } 100% { transform: scaleX(1.4) rotate(-2deg) } }
@keyframes com-left { 0%,100% { transform: translateX(0) rotate(0deg) } 30% { transform: translateX(5px) rotate(5deg) } 70% { transform: translateX(-3px) rotate(-3deg) } }
@keyframes com-right { 0%,100% { transform: translateX(0) rotate(0deg) } 30% { transform: translateX(-5px) rotate(-5deg) } 70% { transform: translateX(3px) rotate(3deg) } }
@keyframes com-scroll { 0% { transform: rotate(5deg) scaleX(1) } 50% { transform: rotate(15deg) scaleX(1.1) } 100% { transform: rotate(10deg) scaleX(1) } }
@keyframes com-tree { 0% { transform: scaleY(1) rotate(0deg) } 50% { transform: scaleY(1.02) rotate(1deg) } 100% { transform: scaleY(0.98) rotate(-1deg) } }

/* -------------------------------------------------------------- */

.scn-marriage-agreed {
  background: linear-gradient(180deg, #FF8C00 0%, #FFD700 30%, #FFF8DC 60%, #F5DEB3 100%), radial-gradient(ellipse at 50% 0%, #FFA500 0%, transparent 60%);
}
.scn-marriage-agreed .sky { position:absolute; inset:0 0 45% 0; background: linear-gradient(180deg, #FF8C00 0%, #FFD700 60%, transparent 100%); animation: mag-sky 12s ease-in-out infinite alternate; }
.scn-marriage-agreed .sunset-glow { position:absolute; top:5%; left:50%; width:120px; height:120px; transform:translateX(-50%); background: radial-gradient(circle, #FFD700 0%, #FF8C00 30%, transparent 60%); border-radius:50%; filter: blur(10px); animation: mag-glow 15s ease-in-out infinite alternate; }
.scn-marriage-agreed .arch { position:absolute; bottom:15%; left:50%; width:100px; height:90px; transform:translateX(-50%); background: linear-gradient(180deg, #DEB887 0%, #D2B48C 100%); border-radius: 50% 50% 0 0 / 80% 80% 0 0; box-shadow: inset 0 -8px 20px rgba(0,0,0,.3), 0 4px 10px rgba(0,0,0,.2); animation: mag-arch 8s ease-in-out infinite; }
.scn-marriage-agreed .figure-groom { position:absolute; bottom:12%; left:38%; width:24px; height:80px; background: linear-gradient(180deg, #2A1A0A 0%, #1A0A00 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: mag-groom 6s ease-in-out infinite; }
.scn-marriage-agreed .figure-bride { position:absolute; bottom:12%; right:38%; width:22px; height:80px; background: linear-gradient(180deg, #3A2A1A 0%, #1A0A00 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: mag-bride 6s ease-in-out infinite; }
.scn-marriage-agreed .joined-hands { position:absolute; bottom:28%; left:50%; width:30px; height:10px; transform:translateX(-50%); background: #D2B48C; border-radius: 40%; box-shadow: 0 0 10px rgba(255,215,0,.6); animation: mag-hands 4s ease-in-out infinite alternate; }
.scn-marriage-agreed .petals { position:absolute; top:10%; left:0; right:0; height:20px; background: repeating-linear-gradient(90deg, #FFB6C1 0px, #FFB6C1 8px, transparent 8px, transparent 16px), repeating-linear-gradient(45deg, #FFC0CB 0px, #FFC0CB 4px, transparent 4px, transparent 12px); background-size: 100% 100%; filter: blur(1px); animation: mag-petals 20s linear infinite; }

@keyframes mag-sky { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.7 } }
@keyframes mag-glow { 0% { transform: translateX(-50%) scale(1); opacity:0.8 } 50% { transform: translateX(-50%) scale(1.05); opacity:1 } 100% { transform: translateX(-50%) scale(0.95); opacity:0.7 } }
@keyframes mag-arch { 0%,100% { transform: translateX(-50%) scaleY(1) } 50% { transform: translateX(-50%) scaleY(1.02) } }
@keyframes mag-groom { 0%,100% { transform: translateX(0) rotate(0deg) } 25% { transform: translateX(4px) rotate(3deg) } 75% { transform: translateX(-2px) rotate(-2deg) } }
@keyframes mag-bride { 0%,100% { transform: translateX(0) rotate(0deg) } 25% { transform: translateX(-4px) rotate(-3deg) } 75% { transform: translateX(2px) rotate(2deg) } }
@keyframes mag-hands { 0% { transform: translateX(-50%) scaleX(1) } 50% { transform: translateX(-50%) scaleX(1.15) } 100% { transform: translateX(-50%) scaleX(0.95) } }
@keyframes mag-petals { 0% { transform: translateY(0) } 100% { transform: translateY(100vh) } }

/* CSS block per scene id, appended to style.css */

/* ========== Scene 1: bastard-on-commodity ========== */
.scn-bastard-on-commodity {
  background: linear-gradient(180deg, #0c0a1a 0%, #1a1428 40%, #2a1e3a 100%), radial-gradient(ellipse at 30% 70%, #3a2a1a 0%, transparent 60%);
}
.scn-bastard-on-commodity .bg-walls {
  position: absolute; inset: 0; background: linear-gradient(180deg, #0c0a1a 0%, #1a1428 100%); opacity: 0.8;
}
.scn-bastard-on-commodity .floor-boards {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%; background: linear-gradient(180deg, #2a1e3a 0%, #1a1428 100%); border-radius: 10% 10% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,0.6);
}
.scn-bastard-on-commodity .table-wood {
  position: absolute; bottom: 10%; left: 50%; width: 120px; height: 12px; transform: translateX(-50%); background: linear-gradient(90deg, #4a3a2a 0%, #5a4a3a 50%, #4a3a2a 100%); border-radius: 20%; box-shadow: 0 6px 12px rgba(0,0,0,0.5);
}
.scn-bastard-on-commodity .candle-wax {
  position: absolute; bottom: 14%; left: 50%; width: 18px; height: 40px; transform: translateX(-50%); background: linear-gradient(180deg, #8a7a6a 0%, #6a5a4a 100%); border-radius: 30% 30% 10% 10%; box-shadow: 0 0 8px rgba(0,0,0,0.4);
  animation: boc-sway 6s ease-in-out infinite;
}
.scn-bastard-on-commodity .candle-flame {
  position: absolute; bottom: calc(14% + 40px); left: 50%; width: 12px; height: 24px; transform: translateX(-50%); background: radial-gradient(circle at 50% 100%, #ffcc80 0%, #ff9966 40%, #ff6633 70%, transparent 100%); border-radius: 50%; box-shadow: 0 0 30px 10px #ff7733, 0 0 60px 20px rgba(255,119,51,0.3);
  animation: boc-flicker 1.5s ease-in-out infinite alternate;
}
.scn-bastard-on-commodity .figure-silhouette {
  position: absolute; bottom: 12%; left: 30%; width: 45px; height: 80px; transform: rotate(-5deg); background: linear-gradient(180deg, #0a0a1a 0%, #1a1a2a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; box-shadow: 0 0 10px rgba(0,0,0,0.8);
  animation: boc-breathe 4s ease-in-out infinite;
}
.scn-bastard-on-commodity .shadow-pool {
  position: absolute; bottom: 10%; left: 25%; width: 120px; height: 20px; background: radial-gradient(ellipse, #000000 0%, transparent 100%); opacity: 0.5; filter: blur(4px);
}

@keyframes boc-sway {
  0% { transform: translateX(-50%) rotate(0deg); }
  50% { transform: translateX(-48%) rotate(1deg); }
  100% { transform: translateX(-50%) rotate(0deg); }
}
@keyframes boc-flicker {
  0% { transform: translateX(-50%) scale(1); opacity: 0.9; }
  25% { transform: translateX(-50%) scale(1.1, 0.9); opacity: 1; }
  50% { transform: translateX(-50%) scale(0.95, 1.05); opacity: 0.85; }
  75% { transform: translateX(-50%) scale(1.05, 0.95); opacity: 0.95; }
  100% { transform: translateX(-50%) scale(1); opacity: 0.9; }
}
@keyframes boc-breathe {
  0% { transform: rotate(-5deg) scale(1); }
  50% { transform: rotate(-4deg) scale(1.005, 0.995); }
  100% { transform: rotate(-5deg) scale(1); }
}

/* ========== Scene 2: constance-mourns ========== */
.scn-constance-mourns {
  background: linear-gradient(180deg, #12101e 0%, #1a162c 40%, #2a2038 100%), radial-gradient(ellipse at 70% 40%, #3a2a3e 0%, transparent 70%);
}
.scn-constance-mourns .bg-chamber {
  position: absolute; inset: 0; background: linear-gradient(135deg, #0e0c1a 0%, #1a162c 100%); opacity: 0.7;
}
.scn-constance-mourns .window-arch {
  position: absolute; top: 20%; left: 60%; width: 80px; height: 120px; background: #1a1a2e; border-radius: 40% 40% 0 0; box-shadow: inset 0 0 30px rgba(0,0,0,0.6);
}
.scn-constance-mourns .window-light {
  position: absolute; top: 23%; left: 63%; width: 50px; height: 90px; background: linear-gradient(180deg, #3a4a6a 0%, #2a3a5a 100%); opacity: 0.3; border-radius: 30% 30% 0 0; animation: cm-light 12s ease-in-out infinite alternate;
}
.scn-constance-mourns .figure-kneeling {
  position: absolute; bottom: 10%; left: 40%; width: 70px; height: 100px; background: linear-gradient(180deg, #1a1a2a 0%, #0e0e1e 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center;
  animation: cm-kneel 8s ease-in-out infinite;
}
.scn-constance-mourns .veil-drape {
  position: absolute; top: 20%; left: 38%; width: 80px; height: 60px; background: linear-gradient(180deg, rgba(30,30,50,0.8) 0%, rgba(20,20,40,0.4) 100%); border-radius: 50%; filter: blur(2px);
  animation: cm-veil 6s ease-in-out infinite alternate;
}
.scn-constance-mourns .hands-clasped {
  position: absolute; bottom: 25%; left: 42%; width: 20px; height: 20px; background: #2a2a3a; border-radius: 50%; box-shadow: 0 0 8px rgba(0,0,0,0.5);
}
.scn-constance-mourns .shadow-form {
  position: absolute; bottom: 8%; left: 35%; width: 100px; height: 30px; background: radial-gradient(ellipse, #000 0%, transparent 100%); opacity: 0.4; filter: blur(5px);
}

@keyframes cm-light {
  0% { opacity: 0.2; }
  50% { opacity: 0.4; }
  100% { opacity: 0.25; }
}
@keyframes cm-kneel {
  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 cm-veil {
  0% { transform: translateX(0) scale(1); opacity: 0.6; }
  50% { transform: translateX(4px) scale(1.05); opacity: 0.8; }
  100% { transform: translateX(-2px) scale(0.98); opacity: 0.65; }
}

/* ========== Scene 3: wedding-solemnity ========== */
.scn-wedding-solemnity {
  background: linear-gradient(180deg, #f2d084 0%, #e8b85a 30%, #d9a54a 60%, #bf8a3a 100%), radial-gradient(ellipse at 50% 0%, #fff5d0 0%, transparent 60%);
}
.scn-wedding-solemnity .sky-gold {
  position: absolute; inset: 0 0 40% 0; background: linear-gradient(180deg, #ffeeb5 0%, #f2d084 100%); opacity: 0.9;
}
.scn-wedding-solemnity .sun-glorious {
  position: absolute; top: 10%; left: 50%; width: 120px; height: 120px; transform: translateX(-50%); background: radial-gradient(circle, #fff6d0 0%, #f0c868 50%, transparent 70%); border-radius: 50%; box-shadow: 0 0 100px 40px #f0c868, 0 0 200px 80px rgba(240,200,104,0.4);
  animation: ws-pulse 4s ease-in-out infinite alternate;
}
.scn-wedding-solemnity .sun-rays {
  position: absolute; top: 10%; left: 50%; width: 300px; height: 300px; transform: translate(-50%, -50%); background: repeating-conic-gradient(transparent 0deg, rgba(255,230,150,0.15) 5deg, transparent 10deg); border-radius: 50%;
  animation: ws-rotate 30s linear infinite;
}
.scn-wedding-solemnity .couple-left {
  position: absolute; bottom: 20%; left: 35%; width: 30px; height: 80px; background: #3a2a1a; border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%; transform: rotate(2deg);
  animation: ws-sway 6s ease-in-out infinite;
}
.scn-wedding-solemnity .couple-right {
  position: absolute; bottom: 20%; right: 35%; width: 30px; height: 80px; background: #4a3a2a; border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%; transform: rotate(-2deg);
  animation: ws-sway 6s ease-in-out infinite 1.5s;
}
.scn-wedding-solemnity .ground-green {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%; background: linear-gradient(180deg, #5a6a3a 0%, #3a4a2a 100%); border-radius: 20% 20% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,0.2);
}
.scn-wedding-solemnity .altar-stone {
  position: absolute; bottom: 25%; left: 50%; width: 50px; height: 30px; transform: translateX(-50%); background: linear-gradient(135deg, #8a7a6a 0%, #6a5a4a 100%); border-radius: 20%; box-shadow: 0 4px 10px rgba(0,0,0,0.3);
}

@keyframes ws-pulse {
  0% { transform: translateX(-50%) scale(1); opacity: 0.9; }
  50% { transform: translateX(-50%) scale(1.08, 1.05); opacity: 1; }
  100% { transform: translateX(-50%) scale(1); opacity: 0.95; }
}
@keyframes ws-rotate {
  0% { transform: translate(-50%, -50%) rotate(0deg); }
  100% { transform: translate(-50%, -50%) rotate(360deg); }
}
@keyframes ws-sway {
  0% { transform: rotate(2deg) scale(1); }
  50% { transform: rotate(-1deg) scale(1.01, 0.99); }
  100% { transform: rotate(2deg) scale(1); }
}

/* ========== Scene 4: pandulph-arrives ========== */
.scn-pandulph-arrives {
  background: linear-gradient(180deg, #bfd0e0 0%, #8aabd0 40%, #5a7a9a 100%), radial-gradient(ellipse at 50% 0%, #fff5e0 0%, transparent 60%);
}
.scn-pandulph-arrives .bright-sky {
  position: absolute; inset: 0 0 20% 0; background: linear-gradient(180deg, #dfe8f0 0%, #bfd0e0 100%); opacity: 0.8;
}
.scn-pandulph-arrives .harsh-sun {
  position: absolute; top: 5%; right: 20%; width: 100px; height: 100px; background: radial-gradient(circle, #fff8e0 0%, #ffe0a0 40%, transparent 70%); border-radius: 50%; box-shadow: 0 0 80px 30px #ffe0a0;
  animation: pa-flash 3s ease-in-out infinite alternate;
}
.scn-pandulph-arrives .figure-cardinal {
  position: absolute; bottom: 15%; left: 40%; width: 50px; height: 100px; background: linear-gradient(180deg, #5e1a1d 0%, #3a1012 100%); border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%; box-shadow: 0 8px 20px rgba(0,0,0,0.5);
  animation: pa-arrive 8s ease-in-out infinite;
}
.scn-pandulph-arrives .staff-cross {
  position: absolute; bottom: 25%; left: 45%; width: 6px; height: 70px; background: #4a3a2a; border-radius: 10%; transform: rotate(5deg);
  animation: pa-staff 8s ease-in-out infinite;
}
.scn-pandulph-arrives .shadow-cast {
  position: absolute; bottom: 12%; left: 30%; width: 140px; height: 30px; background: linear-gradient(90deg, #2a3a4a 0%, transparent 100%); opacity: 0.5; filter: blur(4px);
  animation: pa-shadow 8s ease-in-out infinite;
}
.scn-pandulph-arrives .dust-motes {
  position: absolute; top: 20%; left: 30%; width: 200px; height: 200px; background: radial-gradient(circle, rgba(255,255,230,0.15) 0%, transparent 70%); filter: blur(3px);
  animation: pa-dust 12s linear infinite;
}
.scn-pandulph-arrives .ground-dirt {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%; background: linear-gradient(180deg, #7a6a5a 0%, #5a4a3a 100%); border-radius: 10% 10% 0 0;
}

@keyframes pa-flash {
  0% { transform: scale(1); opacity: 0.95; }
  50% { transform: scale(1.05, 0.95); opacity: 1; }
  100% { transform: scale(1); opacity: 0.9; }
}
@keyframes pa-arrive {
  0% { transform: translateX(0) translateY(0) rotate(0deg); }
  25% { transform: translateX(8px) translateY(-2px) rotate(1deg); }
  50% { transform: translateX(15px) translateY(0) rotate(0deg); }
  75% { transform: translateX(22px) translateY(-2px) rotate(-1deg); }
  100% { transform: translateX(30px) translateY(0) rotate(0deg); }
}
@keyframes pa-staff {
  0% { transform: rotate(5deg); }
  50% { transform: rotate(2deg); }
  100% { transform: rotate(5deg); }
}
@keyframes pa-shadow {
  0% { opacity: 0.4; transform: scaleX(1); }
  50% { opacity: 0.6; transform: scaleX(1.1); }
  100% { opacity: 0.45; transform: scaleX(1); }
}
@keyframes pa-dust {
  0% { transform: translate(0, 0); opacity: 0.2; }
  50% { transform: translate(10px, -10px); opacity: 0.4; }
  100% { transform: translate(0, 0); opacity: 0.2; }
}

/* peace-concluded */
.scn-peace-concluded {
  background: linear-gradient(145deg, #2c1e16 0%, #0f0a08 100%),
              radial-gradient(ellipse at 30% 60%, rgba(200,150,80,0.15) 0%, transparent 60%);
}

.scn-peace-concluded .wall {
  position: absolute;
  inset: 0 0 20% 0;
  background: linear-gradient(180deg, #3a2e24 0%, #1f1612 100%);
}

.scn-peace-concluded .floor {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 20%;
  background: linear-gradient(180deg, #1a1210 0%, #0d0a08 100%);
}

.scn-peace-concluded .window {
  position: absolute;
  top: 10%;
  left: 10%;
  width: 18%;
  height: 30%;
  background: radial-gradient(circle, #b0a090 0%, #4a3a30 70%);
  border: 2px solid #2e1e12;
  box-shadow: inset 0 0 20px #b0a090;
  animation: pc-window-pulse 6s ease-in-out infinite alternate;
}

.scn-peace-concluded .candle {
  position: absolute;
  bottom: 25%;
  left: 35%;
  width: 8px;
  height: 20px;
  background: linear-gradient(180deg, #f0e0a0 0%, #c08030 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 0 0 30px 10px rgba(240,200,100,0.5);
  animation: pc-candle-flicker 2s ease-in-out infinite;
}

.scn-peace-concluded .desk {
  position: absolute;
  bottom: 20%;
  left: 20%;
  right: 20%;
  height: 10%;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 4px;
  box-shadow: 0 4px 8px rgba(0,0,0,0.6);
}

.scn-peace-concluded .figure {
  position: absolute;
  bottom: 25%;
  left: 30%;
  width: 18%;
  height: 28%;
  background: linear-gradient(180deg, #0a0808 0%, #0a0a0a 100%);
  border-radius: 50% 40% 30% 30% / 60% 50% 40% 40%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.4);
  animation: pc-figure-breathe 5s ease-in-out infinite;
}

.scn-peace-concluded .map {
  position: absolute;
  bottom: 22%;
  left: 40%;
  width: 15%;
  height: 8%;
  background: #c8b888;
  border-radius: 5% / 20%;
  transform: rotate(-5deg);
  animation: pc-map-unfold 10s ease-in-out infinite alternate;
}

@keyframes pc-window-pulse {
  0% { box-shadow: inset 0 0 20px #b0a090; }
  50% { box-shadow: inset 0 0 30px #c0b0a0; }
  100% { box-shadow: inset 0 0 20px #b0a090; }
}

@keyframes pc-candle-flicker {
  0% { opacity: 0.8; transform: scaleY(1); }
  50% { opacity: 1; transform: scaleY(1.03); }
  100% { opacity: 0.8; transform: scaleY(1); }
}

@keyframes pc-figure-breathe {
  0% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-1px) scale(1.01); }
  100% { transform: translateY(0) scale(1); }
}

@keyframes pc-map-unfold {
  0% { transform: rotate(-5deg) scale(1); }
  50% { transform: rotate(0deg) scale(1.05); }
  100% { transform: rotate(-5deg) scale(1); }
}

/* final-speech */
.scn-final-speech {
  background: linear-gradient(180deg, #1a1628 0%, #0f0c1a 100%),
              radial-gradient(ellipse at 50% 30%, rgba(180,150,80,0.1) 0%, transparent 60%);
}

.scn-final-speech .wall-back {
  position: absolute;
  inset: 0 0 15% 0;
  background: linear-gradient(180deg, #2a2440 0%, #1a1630 100%);
}

.scn-final-speech .floor {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 15%;
  background: linear-gradient(180deg, #1a1628 0%, #0d0a14 100%);
}

.scn-final-speech .pillar-l {
  position: absolute;
  top: 5%;
  left: 5%;
  width: 8%;
  height: 90%;
  background: linear-gradient(180deg, #4a3a5a 0%, #2a1e3a 100%);
  border-radius: 5% 5% 0 0;
  box-shadow: 2px 0 8px rgba(0,0,0,0.5);
}

.scn-final-speech .pillar-r {
  position: absolute;
  top: 5%;
  right: 5%;
  width: 8%;
  height: 90%;
  background: linear-gradient(180deg, #4a3a5a 0%, #2a1e3a 100%);
  border-radius: 5% 5% 0 0;
  box-shadow: -2px 0 8px rgba(0,0,0,0.5);
}

.scn-final-speech .figure {
  position: absolute;
  bottom: 15%;
  left: 50%;
  width: 12%;
  height: 35%;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #0a0808 0%, #0a0a0a 100%);
  border-radius: 50% 40% 30% 30% / 60% 50% 40% 40%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.5);
  animation: fs-figure-address 7s ease-in-out infinite;
}

.scn-final-speech .crown {
  position: absolute;
  bottom: 45%;
  left: 50%;
  width: 8%;
  height: 6%;
  transform: translateX(-50%);
  background: #b09040;
  border-radius: 0 0 50% 50%;
  box-shadow: 0 0 10px #b09040;
  animation: fs-crown-glow 4s ease-in-out infinite alternate;
}

.scn-final-speech .banner {
  position: absolute;
  top: 20%;
  left: 65%;
  width: 15%;
  height: 40%;
  background: linear-gradient(180deg, #2a1a3a 0%, #1a0a2a 100%);
  border-radius: 10% / 5%;
  box-shadow: -2px 0 8px rgba(0,0,0,0.4);
  animation: fs-banner-sway 6s ease-in-out infinite alternate;
}

.scn-final-speech .light-shaft {
  position: absolute;
  top: 0;
  left: 45%;
  width: 10%;
  height: 100%;
  background: linear-gradient(180deg, rgba(255,240,180,0.15) 0%, transparent 80%);
  animation: fs-light-pulse 5s ease-in-out infinite alternate;
}

@keyframes fs-figure-address {
  0% { transform: translateX(-50%) translateY(0) rotate(0); }
  50% { transform: translateX(-50%) translateY(-2px) rotate(1deg); }
  100% { transform: translateX(-50%) translateY(0) rotate(0); }
}

@keyframes fs-crown-glow {
  0% { box-shadow: 0 0 10px #b09040; opacity: 0.8; }
  50% { box-shadow: 0 0 25px #d4b060; opacity: 1; }
  100% { box-shadow: 0 0 10px #b09040; opacity: 0.8; }
}

@keyframes fs-banner-sway {
  0% { transform: rotate(-2deg) scale(1); }
  50% { transform: rotate(2deg) scale(1.02); }
  100% { transform: rotate(-2deg) scale(1); }
}

@keyframes fs-light-pulse {
  0% { opacity: 0.5; }
  50% { opacity: 0.9; }
  100% { opacity: 0.5; }
}

/* after-battle-orders */
.scn-after-battle-orders {
  background: linear-gradient(180deg, #f5e6c8 0%, #d4a867 40%, #b08040 100%), radial-gradient(ellipse at 60% 20%, #fff5d0 0%, transparent 70%);
}
.scn-after-battle-orders .sky-warm {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #ffeac2 0%, #f5d59a 60%, transparent 100%);
  animation: abo-sky 10s ease-in-out infinite alternate;
}
.scn-after-battle-orders .sun-glow {
  position: absolute; top: 10%; left: 65%; width: 80px; height: 80px;
  background: radial-gradient(circle, #fff7e0 0%, #f5c06a 40%, transparent 70%);
  border-radius: 50%;
  filter: blur(12px);
  animation: abo-sunpulse 6s ease-in-out infinite alternate;
}
.scn-after-battle-orders .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 55%;
  background: linear-gradient(180deg, #7a5a3a 0%, #4a3a2a 100%);
  border-radius: 80% 20% 0 0 / 50% 30% 0 0;
  box-shadow: inset 0 20px 40px rgba(0,0,0,0.4);
}
.scn-after-battle-orders .tent {
  position: absolute; bottom: 35%; left: 20%; width: 120px; height: 100px;
  background: linear-gradient(135deg, #c8a878 0%, #a88858 50%, #705030 100%);
  clip-path: polygon(0% 100%, 50% 0%, 100% 100%);
  box-shadow: -8px 0 16px rgba(0,0,0,0.5);
  transform-origin: bottom center;
  animation: abo-tentflutter 8s ease-in-out infinite;
}
.scn-after-battle-orders .flag {
  position: absolute; bottom: 60%; left: 18%; width: 30px; height: 40px;
  background: linear-gradient(180deg, #a0461a 0%, #702243 100%);
  border-radius: 0 0 80% 80%;
  transform-origin: top left;
  animation: abo-flagwave 3s ease-in-out infinite;
}
.scn-after-battle-orders .figure-cmd {
  position: absolute; bottom: 28%; left: 35%; width: 24px; height: 48px;
  background: linear-gradient(180deg, #2a1a0a 0%, #1a0a00 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: scaleX(1.2);
  animation: abo-cmdgesture 4s ease-in-out infinite;
}
.scn-after-battle-orders .figure-knight {
  position: absolute; bottom: 28%; left: 50%; width: 22px; height: 50px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: scaleX(0.9) rotate(-5deg);
  animation: abo-knightbow 5s ease-in-out infinite;
}
.scn-after-battle-orders .shadow-stripe {
  position: absolute; bottom: 30%; left: 30%; width: 60%; height: 8px;
  background: linear-gradient(90deg, transparent, rgba(0,0,0,0.15), transparent);
  filter: blur(3px);
  animation: abo-shadowmove 12s ease-in-out infinite alternate;
}
@keyframes abo-sky { 0% { opacity: 0.85; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes abo-sunpulse { 0% { transform: scale(0.95); opacity: 0.8; } 50% { transform: scale(1.1); opacity: 1; } 100% { transform: scale(1); opacity: 0.9; } }
@keyframes abo-tentflutter { 0% { transform: rotate(0deg); } 25% { transform: rotate(1deg); } 50% { transform: rotate(0deg); } 75% { transform: rotate(-1deg); } 100% { transform: rotate(0deg); } }
@keyframes abo-flagwave { 0% { transform: rotate(0deg); } 25% { transform: rotate(8deg); } 50% { transform: rotate(-4deg); } 75% { transform: rotate(6deg); } 100% { transform: rotate(0deg); } }
@keyframes abo-cmdgesture { 0% { transform: scaleX(1.2) translateY(0) rotate(0deg); } 30% { transform: scaleX(1.2) translateY(-3px) rotate(5deg); } 60% { transform: scaleX(1.2) translateY(0) rotate(-3deg); } 100% { transform: scaleX(1.2) translateY(0) rotate(0deg); } }
@keyframes abo-knightbow { 0% { transform: scaleX(0.9) rotate(-5deg) translateY(0); } 30% { transform: scaleX(0.9) rotate(-5deg) translateY(-2px); } 60% { transform: scaleX(0.9) rotate(-8deg) translateY(1px); } 100% { transform: scaleX(0.9) rotate(-5deg) translateY(0); } }
@keyframes abo-shadowmove { 0% { transform: translateX(-10px); opacity: 0.3; } 50% { transform: translateX(20px); opacity: 0.6; } 100% { transform: translateX(-5px); opacity: 0.3; } }

/* john-hints-murder */
.scn-john-hints-murder {
  background: linear-gradient(180deg, #1a1828 0%, #2c2438 40%, #1e1628 100%), radial-gradient(ellipse at 50% 80%, #2a2040 0%, transparent 70%);
}
.scn-john-hints-murder .wall-dark {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #2a2a3e 0%, #1a1a2e 100%);
  box-shadow: inset 0 0 30px rgba(0,0,0,0.6);
}
.scn-john-hints-murder .floor-dark {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #1a1a2a 0%, #0e0e1a 100%);
  border-radius: 10% 10% 0 0;
}
.scn-john-hints-murder .table {
  position: absolute; bottom: 22%; left: 50%; width: 100px; height: 20px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #3a2a1a 0%, #221810 100%);
  border-radius: 4px;
  box-shadow: 0 4px 12px rgba(0,0,0,0.6);
}
.scn-john-hints-murder .candle {
  position: absolute; bottom: 35%; left: 48%; width: 10px; height: 24px;
  background: linear-gradient(180deg, #d4a060 0%, #b08040 60%, #6a4020 100%);
  border-radius: 40%;
  transform-origin: bottom center;
  animation: jhm-candleflicker 1.5s ease-in-out infinite alternate;
}
.scn-john-hints-murder .glow-ring {
  position: absolute; bottom: 28%; left: 50%; width: 80px; height: 80px;
  transform: translate(-50%, 50%);
  background: radial-gradient(circle, rgba(192,128,64,0.3) 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(20px);
  animation: jhm-glow 3s ease-in-out infinite alternate;
}
.scn-john-hints-murder .figure-john {
  position: absolute; bottom: 24%; left: 38%; width: 26px; height: 54px;
  background: linear-gradient(180deg, #2a2030 0%, #0e0a18 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: rotate(5deg);
  animation: jhm-johnlean 6s ease-in-out infinite;
}
.scn-john-hints-murder .figure-hubert {
  position: absolute; bottom: 24%; left: 55%; width: 24px; height: 50px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a14 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: rotate(-3deg);
  animation: jhm-hubertstart 8s ease-in-out infinite;
}
@keyframes jhm-candleflicker { 0% { transform: scaleY(1); opacity: 1; } 25% { transform: scaleY(1.1); opacity: 0.9; } 75% { transform: scaleY(0.95); opacity: 0.95; } 100% { transform: scaleY(1); opacity: 1; } }
@keyframes jhm-glow { 0% { transform: translate(-50%, 50%) scale(1); opacity: 0.4; } 50% { transform: translate(-50%, 50%) scale(1.2); opacity: 0.7; } 100% { transform: translate(-50%, 50%) scale(1); opacity: 0.4; } }
@keyframes jhm-johnlean { 0% { transform: rotate(5deg) translateY(0); } 30% { transform: rotate(8deg) translateY(-2px); } 60% { transform: rotate(3deg) translateY(1px); } 100% { transform: rotate(5deg) translateY(0); } }
@keyframes jhm-hubertstart { 0% { transform: rotate(-3deg) translateY(0); } 20% { transform: rotate(-3deg) translateY(-3px); } 40% { transform: rotate(-6deg) translateY(0); } 70% { transform: rotate(-1deg) translateY(2px); } 100% { transform: rotate(-3deg) translateY(0); } }

/* french-camp-after-battle */
.scn-french-camp-after-battle {
  background: linear-gradient(180deg, #3a2a4a 0%, #2a1a3a 30%, #1a0a2a 100%), radial-gradient(ellipse at 50% 0%, #4a3a5a 0%, transparent 70%);
}
.scn-french-camp-after-battle .sky-dusk {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #5a4a6a 0%, #3a2a4a 60%, #1a0a2a 100%);
  animation: fcb-skydim 14s ease-in-out infinite alternate;
}
.scn-french-camp-after-battle .sea-dusk {
  position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, #1a1a2e 0%, #0e0e1a 100%);
  border-radius: 60% 40% 0 0 / 30% 20% 0 0;
  animation: fcb-seaswell 20s ease-in-out infinite alternate;
}
.scn-french-camp-after-battle .wreck-hull {
  position: absolute; bottom: 25%; left: 30%; width: 140px; height: 60px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a1008 100%);
  border-radius: 20% 80% 50% 50% / 60% 60% 40% 40%;
  transform: rotate(-10deg);
  box-shadow: 0 8px 20px rgba(0,0,0,0.6);
  animation: fcb-hulllist 12s ease-in-out infinite;
}
.scn-french-camp-after-battle .wreck-mast {
  position: absolute; bottom: 35%; left: 35%; width: 8px; height: 80px;
  background: linear-gradient(180deg, #2a1a0a 0%, #1a0a00 100%);
  border-radius: 4px;
  transform: rotate(5deg);
  transform-origin: bottom center;
  animation: fcb-mastsway 10s ease-in-out infinite;
}
.scn-french-camp-after-battle .torn-flag {
  position: absolute; bottom: 72%; left: 33%; width: 30px; height: 20px;
  background: linear-gradient(180deg, #5e1a1d 0%, #3a1012 100%);
  clip-path: polygon(0% 0%, 100% 0%, 90% 50%, 100% 100%, 0% 90%, 10% 50%);
  animation: fcb-flagrip 4s ease-in-out infinite alternate;
}
.scn-french-camp-after-battle .lone-soldier {
  position: absolute; bottom: 18%; left: 55%; width: 20px; height: 42px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: fcb-soldiersink 8s ease-in-out infinite;
}
.scn-french-camp-after-battle .drift-log {
  position: absolute; bottom: 15%; left: 10%; width: 60px; height: 6px;
  background: linear-gradient(90deg, #3a2a1a, #1a1008);
  border-radius: 50%;
  filter: blur(2px);
  animation: fcb-logdrift 22s linear infinite;
}
@keyframes fcb-skydim { 0% { opacity: 0.8; } 50% { opacity: 0.6; } 100% { opacity: 0.75; } }
@keyframes fcb-seaswell { 0% { transform: translateY(0); } 50% { transform: translateY(-4px); } 100% { transform: translateY(0); } }
@keyframes fcb-hulllist { 0% { transform: rotate(-10deg) translateX(0); } 25% { transform: rotate(-12deg) translateX(2px); } 50% { transform: rotate(-8deg) translateX(-2px); } 75% { transform: rotate(-14deg) translateX(1px); } 100% { transform: rotate(-10deg) translateX(0); } }
@keyframes fcb-mastsway { 0% { transform: rotate(5deg); } 30% { transform: rotate(8deg); } 60% { transform: rotate(2deg); } 100% { transform: rotate(5deg); } }
@keyframes fcb-flagrip { 0% { transform: scaleX(1) translateY(0); } 50% { transform: scaleX(0.8) translateY(3px); } 100% { transform: scaleX(1) translateY(0); } }
@keyframes fcb-soldiersink { 0% { transform: translateY(0); } 30% { transform: translateY(-2px); } 60% { transform: translateY(1px); } 100% { transform: translateY(0); } }
@keyframes fcb-logdrift { 0% { transform: translateX(0); } 100% { transform: translateX(120vw); } }

/* constance-despairs */
.scn-constance-despairs {
  background: linear-gradient(180deg, #1a1428 0%, #2a2038 30%, #0e0a1a 100%), radial-gradient(ellipse at 30% 70%, #3a2a4a 0%, transparent 60%);
}
.scn-constance-despairs .sky-grief {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #3a2a4a 0%, #1a1428 60%, transparent 100%);
  animation: cdp-skymourn 12s ease-in-out infinite alternate;
}
.scn-constance-despairs .hills-grief {
  position: absolute; bottom: 30%; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #2a2038 0%, #1a1428 100%);
  border-radius: 60% 40% 0 0 / 50% 30% 0 0;
  box-shadow: inset 0 12px 30px rgba(0,0,0,0.5);
  animation: cdp-hillsshift 18s ease-in-out infinite alternate;
}
.scn-constance-despairs .barren-tree {
  position: absolute; bottom: 38%; left: 25%; width: 8px; height: 90px;
  background: linear-gradient(180deg, #1a0a00 0%, #0e0600 100%);
  border-radius: 4px;
  transform-origin: bottom center;
}
.scn-constance-despairs .barren-tree::after {
  content: '';
  position: absolute; top: 0; left: 50%; width: 40px; height: 40px;
  background: radial-gradient(circle, #1a0a00 0%, transparent 70%);
  border-radius: 50%;
  transform: translateX(-50%);
  filter: blur(4px);
}
.scn-constance-despairs .grave-mound {
  position: absolute; bottom: 24%; left: 45%; width: 80px; height: 30px;
  background: linear-gradient(180deg, #2a2030 0%, #1a1420 100%);
  border-radius: 50% 50% 20% 20% / 60% 60% 20% 20%;
  box-shadow: 0 4px 12px rgba(0,0,0,0.5);
}
.scn-constance-despairs .stone-cross {
  position: absolute; bottom: 32%; left: 48%; width: 20px; height: 40px;
  background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 100%);
  border-radius: 4px;
  transform: rotate(-2deg);
}
.scn-constance-despairs .stone-cross::before {
  content: '';
  position: absolute; top: 0; left: -12px; width: 44px; height: 8px;
  background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 100%);
  border-radius: 4px;
  top: 8px;
}
.scn-constance-despairs .figure-constance {
  position: absolute; bottom: 20%; left: 60%; width: 22px; height: 50px;
  background: linear-gradient(180deg, #2a2038 0%, #0e0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: rotate(-5deg);
  animation: cdp-constancefall 7s ease-in-out infinite;
}
.scn-constance-despairs .veil-wisp {
  position: absolute; bottom: 28%; left: 62%; width: 30px; height: 30px;
  background: radial-gradient(circle, rgba(255,255,255,0.05) 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(10px);
  animation: cdp-veil 9s ease-in-out infinite alternate;
}
@keyframes cdp-skymourn { 0% { opacity: 0.7; } 50% { opacity: 0.9; } 100% { opacity: 0.75; } }
@keyframes cdp-hillsshift { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes cdp-constancefall { 0% { transform: rotate(-5deg) translateY(0); } 25% { transform: rotate(-8deg) translateY(-3px); } 50% { transform: rotate(-3deg) translateY(1px); } 75% { transform: rotate(-7deg) translateY(-1px); } 100% { transform: rotate(-5deg) translateY(0); } }
@keyframes cdp-veil { 0% { transform: scale(1) translate(0, 0); opacity: 0.3; } 50% { transform: scale(1.2) translate(3px, -5px); opacity: 0.6; } 100% { transform: scale(0.9) translate(-2px, 2px); opacity: 0.2; } }

/* Scene: hubert-relents - dim interior, tense */
.scn-hubert-relents {
  background:
    linear-gradient(180deg, #1a1423 0%, #2c1e2e 40%, #3a2838 100%),
    radial-gradient(ellipse at 50% 30%, #4a3030 0%, transparent 70%);
}
.scn-hubert-relents .bg-wall { position:absolute; inset:0 0 35% 0; background: linear-gradient(135deg, #2a1c2a 0%, #3a2838 100%); box-shadow: inset 0 0 30px #0d0d0d; }
.scn-hubert-relents .bg-floor { position:absolute; bottom:0; left:0; right:0; height:35%; background: linear-gradient(180deg, #2a1c1a 0%, #1a0e0c 100%); border-radius: 0 0 20% 20% / 0 0 10% 10%; }
.scn-hubert-relents .fire { position:absolute; bottom:25%; left:20%; width:40px; height:60px; background: radial-gradient(ellipse at 50% 100%, #ff7a40 0%, #b85230 50%, transparent 70%); border-radius: 50%; filter: blur(2px); box-shadow: 0 -20px 40px 20px rgba(255,122,64,0.3); animation: hrl-fire 2s ease-in-out infinite alternate; }
.scn-hubert-relents .figure-hubert { position:absolute; bottom:25%; right:15%; width:30px; height:80px; background: linear-gradient(180deg, #2a1a1a 0%, #0e0a0a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: hrl-fig 6s ease-in-out infinite; }
.scn-hubert-relents .figure-arthur { position:absolute; bottom:25%; left:40%; width:22px; height:50px; background: linear-gradient(180deg, #3a2020 0%, #1a0e0e 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: hrl-kneel 4s ease-in-out infinite; }
.scn-hubert-relents .window-bars { position:absolute; top:10%; left:5%; width:60px; height:80px; border: 4px solid #1a1212; background: linear-gradient(135deg, #4a3a3a 0%, transparent 100%); border-radius: 8% 8% 4% 4%; box-shadow: inset 0 0 20px #0d0d0d; animation: hrl-bars 8s ease-in-out infinite alternate; }
.scn-hubert-relents .shadow-crawl { position:absolute; bottom:15%; left:10%; right:10%; height:20%; background: linear-gradient(180deg, transparent 0%, #0d0808 100%); border-radius: 50%; filter: blur(4px); animation: hrl-shadow 10s ease-in-out infinite alternate; }
@keyframes hrl-fire {
  0% { transform: scaleY(1) scaleX(1); opacity: 0.9; }
  50% { transform: scaleY(1.3) scaleX(0.8); opacity: 1; }
  100% { transform: scaleY(0.9) scaleX(1.1); opacity: 0.8; }
}
@keyframes hrl-fig {
  0% { transform: translateX(0) rotate(-2deg); }
  50% { transform: translateX(-5px) rotate(1deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes hrl-kneel {
  0% { transform: translateY(0) rotate(3deg); }
  50% { transform: translateY(-2px) rotate(-1deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes hrl-bars {
  0% { box-shadow: inset 0 0 10px #0d0d0d; }
  100% { box-shadow: inset 0 0 30px #0d0d0d; }
}
@keyframes hrl-shadow {
  0% { opacity: 0.6; transform: scaleY(1); }
  100% { opacity: 0.9; transform: scaleY(1.2); }
}

/* Scene: second-coronation - bright interior, calm */
.scn-second-coronation {
  background:
    linear-gradient(180deg, #fdf8f0 0%, #f5ebd8 40%, #e8d4b0 100%),
    radial-gradient(ellipse at 50% 0%, #fff8ee 0%, transparent 70%);
}
.scn-second-coronation .bg-curtain { position:absolute; inset:0 0 30% 0; background: linear-gradient(135deg, #c8553d 0%, #d46b4a 50%, #b83e2a 100%); border-radius: 0 0 60% 60% / 0 0 40% 40%; box-shadow: 0 8px 30px rgba(0,0,0,0.2); animation: sco-drape 12s ease-in-out infinite alternate; }
.scn-second-coronation .throne-left { position:absolute; bottom:25%; left:20%; width:70px; height:100px; background: linear-gradient(180deg, #b8860b 0%, #8b6508 100%); border-radius: 20% 20% 10% 10%; box-shadow: 0 4px 15px rgba(0,0,0,0.3); transform: rotate(-3deg); animation: sco-throne 8s ease-in-out infinite; }
.scn-second-coronation .throne-right { position:absolute; bottom:25%; right:20%; width:70px; height:100px; background: linear-gradient(180deg, #b8860b 0%, #8b6508 100%); border-radius: 20% 20% 10% 10%; box-shadow: 0 4px 15px rgba(0,0,0,0.3); transform: rotate(3deg); animation: sco-throne 8s ease-in-out infinite reverse; }
.scn-second-coronation .figure-crowned { position:absolute; bottom:30%; left:35%; width:40px; height:90px; background: linear-gradient(180deg, #f0e0c0 0%, #d4a86a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: sco-stand 6s ease-in-out infinite; }
.scn-second-coronation .figure-crowned::before { content:''; position:absolute; top:-8px; left:50%; transform:translateX(-50%); width:20px; height:8px; background: gold; border-radius: 50% 50% 0 0; box-shadow: 0 0 10px gold; }
.scn-second-coronation .figure-kneeling { position:absolute; bottom:25%; left:55%; width:30px; height:60px; background: linear-gradient(180deg, #e0c8a0 0%, #b89860 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: sco-kneel 5s ease-in-out infinite; }
.scn-second-coronation .light-ray { position:absolute; top:0; left:30%; right:30%; height:100%; background: linear-gradient(180deg, rgba(255,255,240,0.4) 0%, transparent 80%); clip-path: polygon(30% 0, 70% 0, 60% 100%, 40% 100%); animation: sco-ray 3s ease-in-out infinite alternate; }
.scn-second-coronation .floor-tiles { position:absolute; bottom:0; left:0; right:0; height:25%; background: repeating-conic-gradient(#e8d4b0 0% 25%, #c8b090 0% 50%) 0 0 / 30px 30px; border-radius: 0 0 10% 10%; opacity: 0.5; animation: sco-tiles 20s linear infinite; }
@keyframes sco-drape {
  0% { border-radius: 0 0 60% 60% / 0 0 40% 40%; }
  50% { border-radius: 0 0 50% 50% / 0 0 30% 30%; }
  100% { border-radius: 0 0 55% 55% / 0 0 35% 35%; }
}
@keyframes sco-throne {
  0% { transform: rotate(-3deg) translateY(0); }
  50% { transform: rotate(0deg) translateY(-3px); }
  100% { transform: rotate(3deg) translateY(0); }
}
@keyframes sco-stand {
  0% { transform: translateY(0) rotate(-1deg); }
  50% { transform: translateY(-3px) rotate(1deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes sco-kneel {
  0% { transform: translateY(0) rotate(5deg); }
  50% { transform: translateY(-2px) rotate(0deg); }
  100% { transform: translateY(0) rotate(-5deg); }
}
@keyframes sco-ray {
  0% { opacity: 0.3; }
  100% { opacity: 0.7; }
}
@keyframes sco-tiles {
  0% { background-position: 0 0; }
  100% { background-position: 30px 30px; }
}

/* Scene: petitioners-for-arthur - bright interior, tense */
.scn-petitioners-for-arthur {
  background:
    linear-gradient(180deg, #fdf8f0 0%, #eee2ce 50%, #d6c4a8 100%),
    radial-gradient(ellipse at 50% 0%, #fff8ee 0%, transparent 70%);
}
.scn-petitioners-for-arthur .bg-hall { position:absolute; inset:0 0 35% 0; background: linear-gradient(135deg, #dac8b0 0%, #ba9e80 100%); border-radius: 0 0 20% 20% / 0 0 10% 10%; box-shadow: inset 0 -10px 30px rgba(0,0,0,0.2); }
.scn-petitioners-for-arthur .floor { position:absolute; bottom:0; left:0; right:0; height:35%; background: linear-gradient(180deg, #8a7a60 0%, #6a5a40 100%); border-radius: 0 0 30% 30% / 0 0 20% 20%; }
.scn-petitioners-for-arthur .figure-king { position:absolute; bottom:30%; left:15%; width:35px; height:80px; background: linear-gradient(180deg, #b09870 0%, #8a7050 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; box-shadow: 0 0 10px #4a3a2a; animation: pet-king 5s ease-in-out infinite; }
.scn-petitioners-for-arthur .petitioner { position:absolute; bottom:25%; right:20%; width:25px; height:65px; background: linear-gradient(180deg, #d4c0a0 0%, #b09a78 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; }
.scn-petitioners-for-arthur .pet-1 { right:25%; animation: pet-bow 3s ease-in-out infinite; }
.scn-petitioners-for-arthur .pet-2 { right:15%; animation: pet-bow 3.5s ease-in-out infinite 0.5s; }
.scn-petitioners-for-arthur .pet-3 { right:5%; animation: pet-bow 4s ease-in-out infinite 1s; }
.scn-petitioners-for-arthur .document { position:absolute; bottom:35%; left:25%; width:30px; height:20px; background: linear-gradient(135deg, #f0e0c0 0%, #c8b090 100%); border-radius: 4px; box-shadow: 0 2px 6px rgba(0,0,0,0.3); transform: rotate(-15deg); animation: pet-doc 7s ease-in-out infinite; }
@keyframes pet-king {
  0% { transform: translateY(0) rotate(-2deg); }
  50% { transform: translateY(-4px) rotate(2deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes pet-bow {
  0% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(6px) rotate(15deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes pet-doc {
  0% { transform: rotate(-15deg) translateX(0); }
  50% { transform: rotate(10deg) translateX(3px); }
  100% { transform: rotate(-15deg) translateX(0); }
}

/* Scene: hubert-reports - bright interior, dark mood */
.scn-hubert-reports {
  background:
    linear-gradient(180deg, #f5ebd8 0%, #dcc8a8 50%, #b89a78 100%),
    radial-gradient(ellipse at 50% 100%, #4a3a2a 0%, transparent 70%);
}
.scn-hubert-reports .bg-room { position:absolute; inset:0; background: linear-gradient(135deg, #c8b8a0 0%, #a08868 100%); clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%); }
.scn-hubert-reports .table { position:absolute; bottom:20%; left:30%; right:30%; height:10%; background: linear-gradient(180deg, #6a5a40 0%, #4a3a28 100%); border-radius: 10% 10% 0 0; box-shadow: 0 4px 15px #1a0e0e; }
.scn-hubert-reports .figure-hubert { position:absolute; bottom:25%; left:20%; width:35px; height:80px; background: linear-gradient(180deg, #2a1a1a 0%, #0e0808 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: hre-fig1 4s ease-in-out infinite; }
.scn-hubert-reports .figure-other { position:absolute; bottom:25%; right:20%; width:30px; height:75px; background: linear-gradient(180deg, #3a2a20 0%, #1a100a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: hre-fig2 5s ease-in-out infinite; }
.scn-hubert-reports .warrant { position:absolute; bottom:32%; left:43%; width:40px; height:28px; background: linear-gradient(135deg, #f0e0c0 0%, #c8b090 100%); border-radius: 4px; box-shadow: 0 2px 8px rgba(0,0,0,0.4); transform: rotate(-20deg); animation: hre-warr 3s ease-in-out infinite; }
.scn-hubert-reports .candle { position:absolute; bottom:32%; left:35%; width:8px; height:20px; background: linear-gradient(180deg, #f0d0a0 0%, #c8a070 100%); border-radius: 4px 4px 2px 2px; box-shadow: 0 0 12px 4px #ffd080; }
.scn-hubert-reports .candle::before { content:''; position:absolute; top:-6px; left:50%; transform:translateX(-50%); width:4px; height:6px; background: radial-gradient(circle, #ffd080 0%, #ffa040 50%, transparent 70%); border-radius: 50%; animation: hre-flame 1.5s ease-in-out infinite alternate; }
.scn-hubert-reports .shadow-dark { position:absolute; inset:0; background: linear-gradient(180deg, transparent 40%, #0d0808 100%); opacity: 0.6; animation: hre-shadow 8s ease-in-out infinite alternate; }
@keyframes hre-fig1 {
  0% { transform: translateX(0) rotate(-1deg); }
  50% { transform: translateX(5px) rotate(2deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes hre-fig2 {
  0% { transform: translateX(0) rotate(1deg); }
  50% { transform: translateX(-4px) rotate(-2deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes hre-warr {
  0% { transform: rotate(-20deg) scale(1); }
  50% { transform: rotate(15deg) scale(1.05); }
  100% { transform: rotate(-20deg) scale(1); }
}
@keyframes hre-flame {
  0% { transform: translate(-50%, 0) scaleY(1); opacity: 0.8; }
  100% { transform: translate(-50%, -3px) scaleY(1.4); opacity: 1; }
}
@keyframes hre-shadow {
  0% { opacity: 0.5; }
  100% { opacity: 0.8; }
}

.scn-chatillon-returns {
  background: linear-gradient(180deg, #c8d8e8 0%, #a0b8d0 40%, #8098b0 100%),
              radial-gradient(ellipse at 70% 20%, #f0e8c0 0%, transparent 60%);
}
.scn-chatillon-returns .bg-walls { position:absolute; inset:0 0 30% 0; background: linear-gradient(90deg, #b0a898 0%, #c8b8a8 50%, #d0c0b0 100%); animation: ch-bg 15s ease-in-out infinite alternate; }
.scn-chatillon-returns .floor { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #685858 0%, #403838 100%); border-radius: 20% 20% 0 0 / 40% 40% 0 0; }
.scn-chatillon-returns .arch-left { position:absolute; bottom:30%; left:10%; width:15%; height:50%; background: radial-gradient(ellipse at 50% 100%, #908070 0%, #706060 60%); border-radius: 40% 40% 0 0 / 80% 80% 0 0; box-shadow: inset 0 -20px 30px rgba(0,0,0,.3); animation: ch-arch 8s ease-in-out infinite alternate; }
.scn-chatillon-returns .arch-right { position:absolute; bottom:30%; right:10%; width:15%; height:50%; background: radial-gradient(ellipse at 50% 100%, #908070 0%, #706060 60%); border-radius: 40% 40% 0 0 / 80% 80% 0 0; box-shadow: inset 0 -20px 30px rgba(0,0,0,.3); animation: ch-arch 8s ease-in-out infinite alternate-reverse; }
.scn-chatillon-returns .sunbeam { position:absolute; top:0; left:40%; width:20%; height:100%; background: linear-gradient(180deg, rgba(255,255,200,.6) 0%, transparent 70%); filter: blur(8px); transform: skewX(-10deg); animation: ch-beam 4s ease-in-out infinite alternate; }
.scn-chatillon-returns .figure-herald { position:absolute; bottom:30%; left:38%; width:12px; height:40px; background: linear-gradient(180deg, #605050 0%, #302828 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: ch-walk 3s ease-in-out infinite; }
.scn-chatillon-returns .figure-king { position:absolute; bottom:30%; left:58%; width:16px; height:44px; background: linear-gradient(180deg, #504040 0%, #201818 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; filter: brightness(1.1); animation: ch-stand 5s ease-in-out infinite alternate; }
.scn-chatillon-returns .banner-a { position:absolute; bottom:44%; left:10%; width:8px; height:30px; background: linear-gradient(180deg, #c8553d 0%, #a0461a 100%); border-radius: 2px; transform: rotate(12deg); animation: ch-flag 2s ease-in-out infinite alternate; }
.scn-chatillon-returns .banner-b { position:absolute; bottom:44%; right:10%; width:8px; height:30px; background: linear-gradient(180deg, #c8553d 0%, #a0461a 100%); border-radius: 2px; transform: rotate(-8deg); animation: ch-flag 2.5s ease-in-out infinite alternate-reverse; }
@keyframes ch-bg { 0% { opacity: .7; } 50% { opacity: 1; } 100% { opacity: .8; } }
@keyframes ch-arch { 0% { transform: scaleY(1); } 50% { transform: scaleY(1.02); } 100% { transform: scaleY(0.98); } }
@keyframes ch-beam { 0% { opacity: .6; transform: skewX(-10deg) translateX(0); } 50% { opacity: 1; transform: skewX(-8deg) translateX(5px); } 100% { opacity: .7; transform: skewX(-12deg) translateX(-3px); } }
@keyframes ch-walk { 0% { transform: translateX(0) rotate(-2deg); } 25% { transform: translateX(8px) rotate(1deg); } 50% { transform: translateX(16px) rotate(-2deg); } 75% { transform: translateX(24px) rotate(1deg); } 100% { transform: translateX(32px) rotate(0); } }
@keyframes ch-stand { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(1px); } }
@keyframes ch-flag { 0% { transform: rotate(12deg) scaleX(1); } 50% { transform: rotate(16deg) scaleX(0.95); } 100% { transform: rotate(10deg) scaleX(1); } }

.scn-king-john-arrives-france {
  background: linear-gradient(180deg, #b0d0f0 0%, #7088b0 40%, #405070 100%),
              radial-gradient(ellipse at 50% 0%, #ffffff 0%, transparent 50%);
}
.scn-king-john-arrives-france .sea-bg { position:absolute; inset:40% 0 0 0; background: linear-gradient(180deg, #4878a0 0%, #205070 100%); animation: kj-sea 12s ease-in-out infinite alternate; }
.scn-king-john-arrives-france .sky-horizon { position:absolute; top:20%; left:0; right:0; height:20%; background: linear-gradient(180deg, #d0e8f8 0%, #b0d0f0 100%); border-radius: 0 0 60% 60% / 0 0 40% 40%; animation: kj-sky 20s linear infinite alternate; }
.scn-king-john-arrives-france .cliff { position:absolute; bottom:15%; right:5%; width:30%; height:50%; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 60% 0 0 60% / 80% 0 0 60%; box-shadow: -10px 0 20px rgba(0,0,0,.4); animation: kj-cliff 15s ease-in-out infinite alternate; }
.scn-king-john-arrives-france .ship { position:absolute; bottom:35%; left:20%; width:60px; height:24px; background: linear-gradient(180deg, #5a3a2a 0%, #3a2218 100%); border-radius: 30% 30% 50% 50% / 40% 40% 60% 60%; transform-origin: bottom center; animation: kj-ship 6s ease-in-out infinite; }
.scn-king-john-arrives-france .sail-fore { position:absolute; bottom:35%; left:22%; width:18px; height:36px; background: linear-gradient(180deg, #f0e8d0 0%, #d0c8b0 100%); border-radius: 10% 10% 30% 30% / 20% 20% 40% 40%; transform-origin: bottom center; animation: kj-sail 4s ease-in-out infinite alternate; }
.scn-king-john-arrives-france .sail-aft { position:absolute; bottom:35%; left:30%; width:14px; height:28px; background: linear-gradient(180deg, #f0e8d0 0%, #d0c8b0 100%); border-radius: 10% 10% 30% 30% / 20% 20% 40% 40%; transform-origin: bottom center; animation: kj-sail 4.5s ease-in-out infinite alternate-reverse; }
.scn-king-john-arrives-france .wave-1 { position:absolute; bottom:42%; left:0; width:100%; height:12px; background: radial-gradient(ellipse at 50% 50%, rgba(255,255,255,.3) 0%, transparent 70%); filter: blur(3px); animation: kj-wave1 8s linear infinite; }
.scn-king-john-arrives-france .wave-2 { position:absolute; bottom:48%; left:0; width:100%; height:10px; background: radial-gradient(ellipse at 50% 50%, rgba(255,255,255,.2) 0%, transparent 70%); filter: blur(2px); animation: kj-wave2 10s linear infinite reverse; }
.scn-king-john-arrives-france .spray { position:absolute; bottom:50%; left:15%; width:20px; height:14px; background: radial-gradient(circle, rgba(255,255,255,.6) 0%, transparent 60%); filter: blur(4px); animation: kj-spray 3s ease-in-out infinite alternate; }
@keyframes kj-sea { 0% { background-position: 0% 0%; } 50% { background-position: 10% 5%; } 100% { background-position: -5% 2%; } }
@keyframes kj-sky { 0% { opacity: .8; } 50% { opacity: 1; } 100% { opacity: .9; } }
@keyframes kj-cliff { 0% { transform: translateX(0) scaleY(1); } 50% { transform: translateX(4px) scaleY(1.02); } 100% { transform: translateX(-2px) scaleY(0.98); } }
@keyframes kj-ship { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(8px) rotate(2deg); } 100% { transform: translateX(0) rotate(-2deg); } }
@keyframes kj-sail { 0% { transform: rotate(-5deg) scaleX(1); } 50% { transform: rotate(3deg) scaleX(0.9); } 100% { transform: rotate(-4deg) scaleX(1); } }
@keyframes kj-wave1 { 0% { transform: translateX(0); } 100% { transform: translateX(-100%); } }
@keyframes kj-wave2 { 0% { transform: translateX(0); } 100% { transform: translateX(100%); } }
@keyframes kj-spray { 0% { opacity: .3; transform: translateY(0); } 50% { opacity: .7; transform: translateY(-6px); } 100% { opacity: .4; transform: translateY(-2px); } }

.scn-constance-curses-elinor {
  background: linear-gradient(180deg, #d0c8b8 0%, #b0a890 30%, #807060 100%),
              radial-gradient(ellipse at 40% 30%, #f0e8d0 0%, transparent 60%);
}
.scn-constance-curses-elinor .courtyard-wall { position:absolute; top:0; left:15%; right:15%; height:55%; background: linear-gradient(180deg, #b0a090 0%, #908070 100%); border-radius: 0 0 20% 20% / 0 0 10% 10%; box-shadow: inset 0 -20px 40px rgba(0,0,0,.3); animation: ce-wall 10s ease-in-out infinite alternate; }
.scn-constance-curses-elinor .ground { position:absolute; bottom:0; left:0; right:0; height:45%; background: linear-gradient(180deg, #807060 0%, #605040 100%); border-radius: 30% 30% 0 0 / 20% 20% 0 0; }
.scn-constance-curses-elinor .shadow-slab { position:absolute; bottom:20%; left:30%; width:40%; height:60%; background: linear-gradient(180deg, rgba(0,0,0,.3) 0%, rgba(0,0,0,.1) 100%); border-radius: 20% 20% 40% 40% / 30% 30% 50% 50%; filter: blur(12px); animation: ce-shadow 8s ease-in-out infinite alternate; }
.scn-constance-curses-elinor .figure-constance { position:absolute; bottom:25%; left:38%; width:18px; 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: ce-constance 4s ease-in-out infinite; }
.scn-constance-curses-elinor .figure-elinor { position:absolute; bottom:25%; left:52%; width:20px; height:48px; background: linear-gradient(180deg, #3a2a2a 0%, #1a1010 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ce-elinor 5s ease-in-out infinite alternate; }
.scn-constance-curses-elinor .dust-mote.mote-a { position:absolute; top:30%; left:20%; width:4px; height:4px; background: #e0d0c0; border-radius: 50%; filter: blur(2px); animation: ce-mote 7s linear infinite; }
.scn-constance-curses-elinor .dust-mote.mote-b { position:absolute; top:50%; left:60%; width:3px; height:3px; background: #e0d0c0; border-radius: 50%; filter: blur(1px); animation: ce-mote 9s linear infinite reverse; }
.scn-constance-curses-elinor .dust-mote.mote-c { position:absolute; top:40%; left:40%; width:5px; height:5px; background: #e0d0c0; border-radius: 50%; filter: blur(2px); animation: ce-mote 11s ease-in-out infinite; }
.scn-constance-curses-elinor .light-shaft { position:absolute; top:0; left:35%; width:30%; height:100%; background: linear-gradient(180deg, rgba(255,255,220,.4) 0%, transparent 60%); filter: blur(10px); transform: skewX(-8deg); animation: ce-shaft 6s ease-in-out infinite alternate; }
@keyframes ce-wall { 0% { transform: scaleY(1); } 50% { transform: scaleY(1.02); } 100% { transform: scaleY(0.98); } }
@keyframes ce-shadow { 0% { opacity: .5; transform: translateX(0); } 50% { opacity: .8; transform: translateX(8px); } 100% { opacity: .6; transform: translateX(-5px); } }
@keyframes ce-constance { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(-4px) rotate(-4deg); } 50% { transform: translateX(2px) rotate(2deg); } 75% { transform: translateX(-6px) rotate(-3deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes ce-elinor { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-4px) rotate(2deg); } 100% { transform: translateY(2px) rotate(-1deg); } }
@keyframes ce-mote { 0% { transform: translate(0, 0) rotate(0deg); } 25% { transform: translate(10px, -20px) rotate(90deg); } 50% { transform: translate(-5px, -40px) rotate(180deg); } 75% { transform: translate(15px, -60px) rotate(270deg); } 100% { transform: translate(0, -80px) rotate(360deg); } }
@keyframes ce-shaft { 0% { opacity: .5; transform: skewX(-8deg) scaleX(1); } 50% { opacity: .8; transform: skewX(-6deg) scaleX(1.1); } 100% { opacity: .6; transform: skewX(-10deg) scaleX(0.9); } }

.scn-parle-with-angiers {
  background: linear-gradient(180deg, #d0e0f0 0%, #a0b8d0 40%, #7088a0 100%),
              radial-gradient(ellipse at 50% 10%, #e8f0f8 0%, transparent 50%);
}
.scn-parle-with-angiers .sky-bright { position:absolute; top:0; left:0; right:0; height:50%; background: linear-gradient(180deg, #e8f0f8 0%, #d0e0f0 100%); animation: pa-sky 20s linear infinite alternate; }
.scn-parle-with-angiers .city-wall { position:absolute; bottom:20%; left:0; right:0; height:30%; background: linear-gradient(180deg, #908070 0%, #706050 100%); border-radius: 0 0 20% 20% / 0 0 30% 30%; box-shadow: inset 0 10px 30px rgba(0,0,0,.4); animation: pa-wall 12s ease-in-out infinite alternate; }
.scn-parle-with-angiers .gate-arch { position:absolute; bottom:20%; left:50%; width:25%; height:40%; background: radial-gradient(ellipse at 50% 100%, #807060 0%, #504030 60%); transform: translateX(-50%); border-radius: 50% 50% 0 0 / 80% 80% 0 0; box-shadow: inset 0 -20px 30px rgba(0,0,0,.5); animation: pa-gate 10s ease-in-out infinite alternate; }
.scn-parle-with-angiers .tower-left { position:absolute; bottom:20%; left:8%; width:16%; height:60%; background: linear-gradient(180deg, #908070 0%, #605040 100%); border-radius: 20% 20% 0 0 / 30% 30% 0 0; animation: pa-tower 15s ease-in-out infinite alternate; }
.scn-parle-with-angiers .tower-right { position:absolute; bottom:20%; right:8%; width:16%; height:60%; background: linear-gradient(180deg, #908070 0%, #605040 100%); border-radius: 20% 20% 0 0 / 30% 30% 0 0; animation: pa-tower 15s ease-in-out infinite alternate-reverse; }
.scn-parle-with-angiers .figure-france { position:absolute; bottom:20%; left:36%; width:14px; height:38px; background: linear-gradient(180deg, #404040 0%, #202020 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: pa-figure 5s ease-in-out infinite; }
.scn-parle-with-angiers .figure-england { position:absolute; bottom:20%; right:36%; width:15px; height:40px; background: linear-gradient(180deg, #404040 0%, #202020 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: pa-figure 5.5s ease-in-out infinite alternate; }
.scn-parle-with-angiers .herald { position:absolute; bottom:20%; left:50%; width:10px; height:30px; background: linear-gradient(180deg, #c8553d 0%, #a0461a 100%); border-radius: 50% 50% 20% 20% / 60% 60% 20% 20%; transform: translateX(-50%); animation: pa-herald 3s ease-in-out infinite alternate; }
.scn-parle-with-angiers .standard { position:absolute; bottom:45%; left:50%; width:6px; height:30px; background: linear-gradient(180deg, #b87878 0%, #6a4040 100%); transform: translateX(-50%); border-radius: 2px; animation: pa-flag 4s ease-in-out infinite alternate; }
@keyframes pa-sky { 0% { opacity: .7; } 50% { opacity: 1; } 100% { opacity: .8; } }
@keyframes pa-wall { 0% { transform: scaleY(1); } 50% { transform: scaleY(1.02); } 100% { transform: scaleY(0.98); } }
@keyframes pa-gate { 0% { transform: translateX(-50%) scaleX(1); } 50% { transform: translateX(-50%) scaleX(1.05); } 100% { transform: translateX(-50%) scaleX(0.95); } }
@keyframes pa-tower { 0% { transform: translateY(0) scaleY(1); } 50% { transform: translateY(-3px) scaleY(1.03); } 100% { transform: translateY(2px) scaleY(0.97); } }
@keyframes pa-figure { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(4px) rotate(2deg); } 50% { transform: translateX(-2px) rotate(-1deg); } 75% { transform: translateX(6px) rotate(3deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes pa-herald { 0% { transform: translateX(-50%) rotate(-3deg); } 50% { transform: translateX(-50%) rotate(4deg); } 100% { transform: translateX(-50%) rotate(-2deg); } }
@keyframes pa-flag { 0% { transform: translateX(-50%) rotate(0deg); } 50% { transform: translateX(-50%) rotate(10deg); } 100% { transform: translateX(-50%) rotate(-5deg); } }

/* lords-depart */
.scn-lords-depart {
  background: 
    linear-gradient(180deg, #2a1a0a 0%, #4a2a1a 40%, #1a0a00 100%),
    radial-gradient(ellipse at 50% 80%, #6a3a1a 0%, transparent 60%);
}
.scn-lords-depart .bg-wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%);
  animation: ld-wall 15s ease-in-out infinite alternate;
}
.scn-lords-depart .bg-floor {
  position: absolute; inset: 60% 0 0 0;
  background: linear-gradient(0deg, #2a1a0a 0%, #4a3a2a 100%);
  border-radius: 30% 70% 0 0 / 20% 40% 0 0;
  animation: ld-floor 12s ease-in-out infinite alternate;
}
.scn-lords-depart .table {
  position: absolute; bottom: 32%; left: 20%; width: 60%; height: 12%;
  background: linear-gradient(180deg, #5a3a1a 0%, #3a2a0a 100%);
  border-radius: 4% 4% 20% 20%;
  box-shadow: 0 8px 20px rgba(0,0,0,0.6);
  animation: ld-table 8s ease-in-out infinite alternate;
}
.scn-lords-depart .candle {
  position: absolute; bottom: 42%; left: 50%; width: 6px; height: 20px;
  background: linear-gradient(180deg, #c08040 0%, #8a5a2a 100%);
  border-radius: 2px; transform: translateX(-50%);
  animation: ld-candle-sway 4s ease-in-out infinite;
}
.scn-lords-depart .candle::after {
  content: '';
  position: absolute; top: -8px; left: -4px; width: 14px; height: 16px;
  background: radial-gradient(circle at 50% 30%, #ffd070 0%, #ffa030 40%, transparent 100%);
  border-radius: 50%;
  animation: ld-flame 2s ease-in-out infinite alternate;
}
.scn-lords-depart .king {
  position: absolute; bottom: 30%; left: 30%; width: 60px; height: 90px;
  background: linear-gradient(180deg, #2a1a0a 0%, #1a0a00 100%);
  border-radius: 50% 50% 40% 40% / 40% 40% 60% 60%;
  transform-origin: bottom center;
  animation: ld-figure-stand 6s ease-in-out infinite alternate;
  box-shadow: inset 0 -10px 10px rgba(0,0,0,0.3);
}
.scn-lords-depart .lord1 {
  position: absolute; bottom: 30%; left: 50%; width: 40px; height: 70px;
  background: linear-gradient(180deg, #5a3a2a 0%, #3a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 40% 40% 60% 60%;
  transform: rotate(-3deg);
  animation: ld-figure-bow 7s ease-in-out infinite;
}
.scn-lords-depart .lord2 {
  position: absolute; bottom: 30%; left: 58%; width: 42px; height: 72px;
  background: linear-gradient(180deg, #4a2a1a 0%, #2a1a0a 100%);
  border-radius: 50% 50% 40% 40% / 40% 40% 60% 60%;
  transform: rotate(2deg);
  animation: ld-figure-depart 9s ease-in-out infinite;
}
.scn-lords-depart .window-light {
  position: absolute; top: 10%; left: 10%; width: 40%; height: 50%;
  background: linear-gradient(135deg, rgba(200,150,80,0.3) 0%, transparent 100%);
  clip-path: polygon(20% 0%, 80% 0%, 100% 100%, 0% 100%);
  animation: ld-light 10s ease-in-out infinite alternate;
  filter: blur(8px);
}
@keyframes ld-wall { 0% { opacity:0.9 } 50% { opacity:1 } 100% { opacity:0.85 } }
@keyframes ld-floor { 0% { transform:scaleY(1) } 50% { transform:scaleY(1.02) } 100% { transform:scaleY(0.98) } }
@keyframes ld-table { 0% { box-shadow: 0 8px 20px rgba(0,0,0,0.6) } 50% { box-shadow: 0 12px 30px rgba(0,0,0,0.8) } 100% { box-shadow: 0 6px 15px rgba(0,0,0,0.5) } }
@keyframes ld-candle-sway { 0% { transform: translateX(-50%) rotate(-1deg) } 50% { transform: translateX(-50%) rotate(1.5deg) } 100% { transform: translateX(-50%) rotate(-1deg) } }
@keyframes ld-flame { 0% { transform: scale(1) translateY(0); opacity:0.8 } 50% { transform: scale(1.15) translateY(-2px); opacity:1 } 100% { transform: scale(0.95) translateY(0); opacity:0.7 } }
@keyframes ld-figure-stand { 0% { transform: translateX(0) translateY(0) scale(1) } 50% { transform: translateX(-2px) translateY(-3px) scale(1.02) } 100% { transform: translateX(0) translateY(0) scale(1) } }
@keyframes ld-figure-bow { 0% { transform: rotate(-3deg) translateX(0) } 30% { transform: rotate(-8deg) translateX(2px) } 60% { transform: rotate(-5deg) translateX(-1px) } 100% { transform: rotate(-3deg) translateX(0) } }
@keyframes ld-figure-depart { 0% { transform: rotate(2deg) translateX(0) } 50% { transform: rotate(0deg) translateX(10px) } 100% { transform: rotate(2deg) translateX(0) } }
@keyframes ld-light { 0% { opacity:0.3 } 50% { opacity:0.6 } 100% { opacity:0.2 } }

/* john-repents */
.scn-john-repents {
  background: 
    linear-gradient(180deg, #1a1a2a 0%, #2a2a3a 40%, #0a0a1a 100%),
    radial-gradient(ellipse at 50% 20%, #4a4a5a 0%, transparent 70%);
}
.scn-john-repents .bg-window {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 100%);
  clip-path: polygon(30% 0, 70% 0, 80% 100%, 20% 100%);
  animation: jr-window 20s ease-in-out infinite alternate;
}
.scn-john-repents .bg-altar {
  position: absolute; bottom: 0; left: 20%; width: 60%; height: 40%;
  background: linear-gradient(180deg, #4a3a2a 0%, #3a2a1a 100%);
  border-radius: 20% 20% 0 0;
  box-shadow: 0 -10px 20px rgba(0,0,0,0.5);
}
.scn-john-repents .beam {
  position: absolute; top: 5%; left: 42%; width: 16%; height: 60%;
  background: linear-gradient(180deg, rgba(255,220,150,0.4) 0%, transparent 100%);
  clip-path: polygon(30% 0, 70% 0, 100% 100%, 0% 100%);
  animation: jr-beam 5s ease-in-out infinite alternate;
  filter: blur(3px);
}
.scn-john-repents .figure-kneeling {
  position: absolute; bottom: 15%; left: 40%; width: 50px; height: 80px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 30% 30% 60% 60%;
  transform: rotate(5deg);
  transform-origin: bottom center;
  animation: jr-kneel 8s ease-in-out infinite;
}
.scn-john-repents .candle-flame {
  position: absolute; bottom: 38%; left: 50%; width: 10px; height: 12px;
  background: radial-gradient(circle at 50% 30%, #ffd080 0%, #ffa030 40%, transparent 100%);
  border-radius: 50%;
  animation: jr-flame 3s ease-in-out infinite alternate;
  filter: blur(2px);
}
.scn-john-repents .blood-stain {
  position: absolute; bottom: 8%; left: 35%; width: 40px; height: 12px;
  background: radial-gradient(ellipse at 50% 50%, #a0461a 0%, #5a1a0a 70%);
  border-radius: 50%;
  animation: jr-spread 12s ease-in-out infinite alternate;
  opacity: 0.6;
}
.scn-john-repents .pillar-left {
  position: absolute; bottom: 0; left: 10%; width: 8%; height: 90%;
  background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%);
  border-radius: 4px;
  box-shadow: 2px 0 10px rgba(0,0,0,0.3);
}
.scn-john-repents .pillar-right {
  position: absolute; bottom: 0; right: 10%; width: 8%; height: 90%;
  background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%);
  border-radius: 4px;
  box-shadow: -2px 0 10px rgba(0,0,0,0.3);
  animation: jr-pillar 9s ease-in-out infinite alternate;
}
@keyframes jr-window { 0% { opacity:0.7 } 50% { opacity:1 } 100% { opacity:0.6 } }
@keyframes jr-beam { 0% { opacity:0.1 } 50% { opacity:0.5 } 100% { opacity:0.2 } }
@keyframes jr-kneel { 0% { transform: rotate(5deg) translateX(0) } 25% { transform: rotate(3deg) translateX(-5px) } 50% { transform: rotate(6deg) translateX(2px) } 75% { transform: rotate(4deg) translateX(-3px) } 100% { transform: rotate(5deg) translateX(0) } }
@keyframes jr-flame { 0% { transform: scale(1) translateY(0); opacity:0.8 } 50% { transform: scale(1.2) translateY(-3px); opacity:1 } 100% { transform: scale(0.95) translateY(0); opacity:0.7 } }
@keyframes jr-spread { 0% { transform: scaleX(1) scaleY(1) } 50% { transform: scaleX(1.3) scaleY(1.1) } 100% { transform: scaleX(0.9) scaleY(0.95) } }
@keyframes jr-pillar { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.03) } 100% { transform: scaleY(0.98) } }

/* bad-news-from-france */
.scn-bad-news-from-france {
  background: 
    linear-gradient(180deg, #1a1a2a 0%, #3a2a2a 40%, #0a0a1a 100%),
    radial-gradient(ellipse at 50% 30%, #5a3a2a 0%, transparent 60%);
}
.scn-bad-news-from-france .bg-wall {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  animation: bf-wall 14s ease-in-out infinite alternate;
}
.scn-bad-news-from-france .bg-arch {
  position: absolute; inset: 5% 10% 35% 10%;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a1a 100%);
  clip-path: ellipse(50% 60% at 50% 0);
  animation: bf-arch 18s ease-in-out infinite alternate;
}
.scn-bad-news-from-france .king-throne {
  position: absolute; bottom: 25%; left: 20%; width: 70px; height: 100px;
  background: linear-gradient(180deg, #3a2a2a 0%, #1a1a1a 100%);
  border-radius: 40% 40% 20% 20% / 50% 50% 30% 30%;
  transform: rotate(-2deg);
  animation: bf-king 6s ease-in-out infinite alternate;
  box-shadow: 0 10px 20px rgba(0,0,0,0.7);
}
.scn-bad-news-from-france .messenger {
  position: absolute; bottom: 22%; left: 55%; width: 40px; height: 70px;
  background: linear-gradient(180deg, #5a3a2a 0%, #3a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 40% 40% 60% 60%;
  transform: rotate(8deg);
  animation: bf-messenger 5s ease-in-out infinite;
}
.scn-bad-news-from-france .scroll {
  position: absolute; bottom: 30%; left: 58%; width: 18px; height: 24px;
  background: linear-gradient(180deg, #c8a060 0%, #a08040 100%);
  border-radius: 10% 10% 30% 30%;
  transform: rotate(15deg);
  animation: bf-scroll 4s ease-in-out infinite alternate;
}
.scn-bad-news-from-france .candle {
  position: absolute; bottom: 38%; left: 40%; width: 6px; height: 18px;
  background: linear-gradient(180deg, #b08040 0%, #7a5a2a 100%);
  border-radius: 2px;
  animation: bf-candle 5s ease-in-out infinite;
}
.scn-bad-news-from-france .candle::after {
  content: '';
  position: absolute; top: -10px; left: -5px; width: 16px; height: 20px;
  background: radial-gradient(circle at 50% 40%, #ffd080 0%, #ffa030 50%, transparent 100%);
  border-radius: 50%;
  animation: bf-flame 2.5s ease-in-out infinite alternate;
}
.scn-bad-news-from-france .shadow-figure {
  position: absolute; bottom: 20%; left: 75%; width: 30px; height: 60px;
  background: linear-gradient(180deg, rgba(30,30,30,0.8) 0%, transparent 100%);
  border-radius: 50% 50% 40% 40% / 40% 40% 60% 60%;
  filter: blur(4px);
  animation: bf-shadow 10s ease-in-out infinite alternate;
}
@keyframes bf-wall { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.7 } }
@keyframes bf-arch { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.05) } 100% { transform: scaleY(0.95) } }
@keyframes bf-king { 0% { transform: rotate(-2deg) translateX(0) } 50% { transform: rotate(-4deg) translateX(3px) } 100% { transform: rotate(-2deg) translateX(0) } }
@keyframes bf-messenger { 0% { transform: rotate(8deg) translateX(0) } 25% { transform: rotate(5deg) translateX(-5px) } 50% { transform: rotate(10deg) translateX(3px) } 75% { transform: rotate(6deg) translateX(-2px) } 100% { transform: rotate(8deg) translateX(0) } }
@keyframes bf-scroll { 0% { transform: rotate(15deg) scaleX(1) } 50% { transform: rotate(10deg) scaleX(1.1) } 100% { transform: rotate(15deg) scaleX(1) } }
@keyframes bf-candle { 0% { transform: translateX(0) } 50% { transform: translateX(-2px) } 100% { transform: translateX(0) } }
@keyframes bf-flame { 0% { transform: scale(1) translateY(0); opacity:0.8 } 50% { transform: scale(1.3) translateY(-4px); opacity:1 } 100% { transform: scale(0.9) translateY(0); opacity:0.6 } }
@keyframes bf-shadow { 0% { opacity:0.3; transform: scaleY(1) } 50% { opacity:0.6; transform: scaleY(1.1) } 100% { opacity:0.2; transform: scaleY(0.9) } }

/* peter-of-pomfret */
.scn-peter-of-pomfret {
  background: 
    linear-gradient(180deg, #1a0a00 0%, #3a1a0a 40%, #0a0000 100%),
    radial-gradient(ellipse at 50% 50%, #4a2a1a 0%, transparent 80%);
}
.scn-peter-of-pomfret .bg-cell {
  position: absolute; inset: 0 0 20% 0;
  background: linear-gradient(180deg, #2a1a0a 0%, #1a0a00 100%);
  animation: pp-cell 16s ease-in-out infinite alternate;
}
.scn-peter-of-pomfret .chain {
  position: absolute; top: 30%; left: 10%; width: 80%; height: 4px;
  background: linear-gradient(90deg, #8a7a6a 0%, #5a4a3a 50%, #8a7a6a 100%);
  border-radius: 2px;
  filter: blur(1px);
  animation: pp-chain 7s ease-in-out infinite;
}
.scn-peter-of-pomfret .figure-bound {
  position: absolute; bottom: 15%; left: 35%; width: 60px; height: 90px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a0a00 100%);
  border-radius: 50% 50% 40% 40% / 40% 40% 60% 60%;
  transform: rotate(-5deg);
  animation: pp-figure 8s ease-in-out infinite alternate;
  box-shadow: inset 0 -10px 20px rgba(0,0,0,0.5);
}
.scn-peter-of-pomfret .lantern {
  position: absolute; bottom: 30%; left: 50%; width: 8px; height: 8px;
  background: radial-gradient(circle at 50% 50%, #ffd060 0%, #c08020 80%);
  border-radius: 50%;
  box-shadow: 0 0 20px 6px rgba(255,208,96,0.4);
  animation: pp-lantern 4s ease-in-out infinite alternate;
}
.scn-peter-of-pomfret .rat {
  position: absolute; bottom: 8%; left: 60%; width: 20px; height: 10px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: pp-rat 5s ease-in-out infinite;
}
.scn-peter-of-pomfret .shadow-bar {
  position: absolute; top: 0; left: 20%; width: 4px; height: 100%;
  background: linear-gradient(180deg, #0a0a0a 0%, transparent 80%);
  animation: pp-bar 12s ease-in-out infinite alternate;
}
.scn-peter-of-pomfret .floor-straw {
  position: absolute; bottom: 0; left: 0; right: 0; height: 8%;
  background: repeating-linear-gradient(45deg, #6a5a3a 0px, #5a4a2a 4px, #4a3a1a 8px);
  opacity: 0.5;
  animation: pp-straw 10s ease-in-out infinite alternate;
}
@keyframes pp-cell { 0% { opacity:0.8 } 50% { opacity:1 } 100% { opacity:0.7 } }
@keyframes pp-chain { 0% { transform: translateY(0) } 50% { transform: translateY(2px) } 100% { transform: translateY(0) } }
@keyframes pp-figure { 0% { transform: rotate(-5deg) translateX(0) } 50% { transform: rotate(-3deg) translateX(-4px) } 100% { transform: rotate(-5deg) translateX(0) } }
@keyframes pp-lantern { 0% { box-shadow: 0 0 20px 6px rgba(255,208,96,0.4); opacity:0.7 } 50% { box-shadow: 0 0 30px 10px rgba(255,208,96,0.7); opacity:1 } 100% { box-shadow: 0 0 15px 4px rgba(255,208,96,0.3); opacity:0.6 } }
@keyframes pp-rat { 0% { transform: translateX(0) scaleX(1) } 25% { transform: translateX(8px) scaleX(1.1) } 50% { transform: translateX(16px) scaleX(0.9) } 75% { transform: translateX(8px) scaleX(1) } 100% { transform: translateX(0) scaleX(1) } }
@keyframes pp-bar { 0% { opacity:0.2; transform: scaleY(1) } 50% { opacity:0.5; transform: scaleY(1.05) } 100% { opacity:0.1; transform: scaleY(0.95) } }
@keyframes pp-straw { 0% { opacity:0.4 } 50% { opacity:0.6 } 100% { opacity:0.3 } }

/* scene: lewis-defies-pandulph */
.scn-lewis-defies-pandulph {
  background: linear-gradient(180deg, #e8d5b0 0%, #c9a87c 50%, #8a6e4e 100%), radial-gradient(ellipse at 40% 60%, #fff8e0 0%, transparent 70%);
}
.scn-lewis-defies-pandulph .hall-back { position:absolute; inset:0; background: linear-gradient(135deg, #dcc8a8 0%, #a48460 100%); }
.scn-lewis-defies-pandulph .window {
  position:absolute; top:15%; left:20%; width:120px; height:160px;
  background: radial-gradient(ellipse at 30% 40%, #fffbe0 0%, #eedab0 60%, transparent);
  border:6px solid #7a5a3a; border-radius: 6px;
  box-shadow: inset 0 0 40px 10px rgba(255,240,180,0.5);
  animation: ldp-window-glow 4s ease-in-out infinite alternate;
}
.scn-lewis-defies-pandulph .light-ray {
  position:absolute; top:20%; left:25%; width:300px; height:400px;
  background: linear-gradient(135deg, rgba(255,255,220,0.4) 0%, rgba(255,255,220,0) 100%);
  clip-path: polygon(0 0, 100% 0, 60% 100%, 20% 100%);
  transform-origin: top left;
  animation: ldp-ray-pulse 6s ease-in-out infinite;
}
.scn-lewis-defies-pandulph .legate-figure {
  position:absolute; bottom:22%; left:30%; width:40px; height:90px;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a100a 100%);
  border-radius: 40% 40% 35% 35% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ldp-legate-walk 10s ease-in-out infinite;
}
.scn-lewis-defies-pandulph .king-figure {
  position:absolute; bottom:22%; left:55%; width:45px; height:95px;
  background: linear-gradient(180deg, #5a3a2a 0%, #2a1a10 100%);
  border-radius: 45% 45% 35% 35% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ldp-king-tremble 3s ease-in-out infinite;
  box-shadow: 0 8px 20px rgba(0,0,0,0.6);
}
.scn-lewis-defies-pandulph .crown {
  position:absolute; bottom:80%; left:58%; width:18px; height:14px;
  background: #c8a050;
  clip-path: polygon(0 100%, 15% 0, 30% 40%, 50% 0, 70% 40%, 85% 0, 100% 100%);
  animation: ldp-crown-glow 2s ease-in-out infinite alternate;
}
.scn-lewis-defies-pandulph .floor {
  position:absolute; bottom:0; left:0; right:0; height:22%;
  background: linear-gradient(180deg, #8a6e4e 0%, #5a4430 100%);
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.4);
}
@keyframes ldp-window-glow {
  0% { opacity:0.7; box-shadow: inset 0 0 30px 8px rgba(255,240,180,0.4); }
  50% { opacity:1; box-shadow: inset 0 0 60px 20px rgba(255,240,180,0.7); }
  100% { opacity:0.8; box-shadow: inset 0 0 40px 12px rgba(255,240,180,0.5); }
}
@keyframes ldp-ray-pulse {
  0% { opacity:0.5; transform: scaleX(1) rotate(0deg); }
  50% { opacity:0.9; transform: scaleX(1.05) rotate(2deg); }
  100% { opacity:0.6; transform: scaleX(0.95) rotate(-1deg); }
}
@keyframes ldp-legate-walk {
  0% { transform: translateX(-20px) rotate(0deg); }
  25% { transform: translateX(-10px) rotate(2deg); }
  50% { transform: translateX(0) rotate(0deg); }
  75% { transform: translateX(10px) rotate(-2deg); }
  100% { transform: translateX(20px) rotate(0deg); }
}
@keyframes ldp-king-tremble {
  0% { transform: rotate(0deg) scaleY(1); }
  25% { transform: rotate(1deg) scaleY(1.005); }
  50% { transform: rotate(0deg) scaleY(1); }
  75% { transform: rotate(-1deg) scaleY(0.995); }
  100% { transform: rotate(0deg) scaleY(1); }
}
@keyframes ldp-crown-glow {
  0% { filter: brightness(1); }
  100% { filter: brightness(1.2); }
}

/* scene: bastards-challenge */
.scn-bastards-challenge {
  background: linear-gradient(180deg, #f5e8c8 0%, #e0c8a0 40%, #b09070 100%), radial-gradient(ellipse at 60% 30%, #fff8e8 0%, transparent 60%);
}
.scn-bastards-challenge .sky {
  position:absolute; inset:0 0 30% 0;
  background: linear-gradient(180deg, #c8d8f0 0%, #f0e8d0 100%);
  animation: bc-sky-shift 15s ease-in-out infinite alternate;
}
.scn-bastards-challenge .ground {
  position:absolute; bottom:0; left:0; right:0; height:30%;
  background: linear-gradient(180deg, #7a5a3a 0%, #3a2a18 100%);
  border-radius: 30% 0 0 0;
}
.scn-bastards-challenge .herald-body {
  position:absolute; bottom:28%; left:50%; width:40px; height:100px;
  background: linear-gradient(180deg, #4a3a2a 0%, #1a100a 100%);
  border-radius: 40% 40% 35% 35% / 60% 60% 40% 40%;
  transform: translateX(-50%);
  animation: bc-body-sway 4s ease-in-out infinite;
}
.scn-bastards-challenge .trumpet {
  position:absolute; bottom:60%; left:52%; width:60px; height:18px;
  background: linear-gradient(135deg, #c8a050 0%, #8a6e2e 100%);
  border-radius: 50% 30% 30% 50%;
  transform-origin: left center;
  animation: bc-trumpet-blast 2s ease-in-out infinite alternate;
  box-shadow: 0 4px 8px rgba(0,0,0,0.3);
}
.scn-bastards-challenge .hand {
  position:absolute; bottom:65%; left:48%; width:12px; height:16px;
  background: #2a1a10;
  border-radius: 50% 50% 40% 40%;
  animation: bc-hand-lift 3s ease-in-out infinite;
}
.scn-bastards-challenge .banner {
  position:absolute; bottom:50%; left:70%; width:8px; height:70px;
  background: #8a5a3a;
  transform-origin: bottom center;
  animation: bc-banner-wave 5s ease-in-out infinite;
}
.scn-bastards-challenge .sunburst {
  position:absolute; top:8%; right:10%; width:100px; height:100px;
  background: radial-gradient(circle, rgba(255,255,200,0.6) 0%, transparent 70%);
  animation: bc-sunburst-rotate 20s linear infinite;
}
@keyframes bc-sky-shift {
  0% { background-position: 0% 0%; }
  100% { background-position: 100% 0%; }
}
@keyframes bc-body-sway {
  0% { transform: translateX(-50%) rotate(-2deg); }
  50% { transform: translateX(-50%) rotate(2deg); }
  100% { transform: translateX(-50%) rotate(-2deg); }
}
@keyframes bc-trumpet-blast {
  0% { transform: scaleX(1) rotate(-5deg); box-shadow: 0 0 10px rgba(200,160,80,0.3); }
  50% { transform: scaleX(1.1) rotate(0deg); box-shadow: 0 0 25px rgba(200,160,80,0.6); }
  100% { transform: scaleX(0.9) rotate(5deg); box-shadow: 0 0 10px rgba(200,160,80,0.3); }
}
@keyframes bc-hand-lift {
  0% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-6px) rotate(10deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes bc-banner-wave {
  0% { transform: rotate(-3deg) scaleY(1); }
  50% { transform: rotate(3deg) scaleY(1.02); }
  100% { transform: rotate(-3deg) scaleY(1); }
}
@keyframes bc-sunburst-rotate {
  0% { transform: rotate(0deg) scale(1); }
  50% { transform: rotate(180deg) scale(0.95); }
  100% { transform: rotate(360deg) scale(1); }
}

/* scene: john-ill */
.scn-john-ill {
  background: linear-gradient(180deg, #3a3a5a 0%, #2a2a44 40%, #1a1a2e 100%), radial-gradient(ellipse at 70% 60%, #4a4a6a 0%, transparent 70%);
}
.scn-john-ill .room-back {
  position:absolute; inset:0;
  background: linear-gradient(135deg, #2a2a44 0%, #1a1a2e 100%);
}
.scn-john-ill .bed {
  position:absolute; bottom:10%; left:20%; right:20%; height:40%;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a10 100%);
  border-radius: 8px;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.6);
}
.scn-john-ill .king-body {
  position:absolute; bottom:18%; left:35%; width:50px; height:70px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ji-breathing 6s ease-in-out infinite;
}
.scn-john-ill .pillow {
  position:absolute; bottom:48%; left:42%; width:40px; height:20px;
  background: #6a5a4a;
  border-radius: 50%;
  box-shadow: 0 2px 6px rgba(0,0,0,0.4);
  animation: ji-pillow-shift 8s ease-in-out infinite;
}
.scn-john-ill .window-dusk {
  position:absolute; top:10%; right:8%; width:100px; height:120px;
  background: radial-gradient(ellipse at 50% 40%, #6a5a7a 0%, #2a2a44 70%);
  border:4px solid #4a3a5a;
  border-radius: 4px;
  box-shadow: inset 0 0 30px rgba(100,90,120,0.5);
  animation: ji-window-dim 10s ease-in-out infinite alternate;
}
.scn-john-ill .lamp {
  position:absolute; bottom:35%; left:12%; width:14px; height:28px;
  background: radial-gradient(ellipse at 50% 30%, #c8a060 0%, #8a6a3a 100%);
  border-radius: 50% 50% 30% 30%;
  box-shadow: 0 0 20px 6px rgba(200,160,96,0.4);
  animation: ji-lamp-flicker 2s ease-in-out infinite alternate;
}
.scn-john-ill .curtain {
  position:absolute; top:0; right:5%; width:30px; height:100%;
  background: linear-gradient(180deg, #4a3a5a 0%, #2a1a3a 100%);
  border-radius: 0 0 20% 20%;
  transform-origin: top center;
  animation: ji-curtain-sway 7s ease-in-out infinite;
}
@keyframes ji-breathing {
  0% { transform: scaleY(1) translateY(0); }
  50% { transform: scaleY(1.03) translateY(-2px); }
  100% { transform: scaleY(1) translateY(0); }
}
@keyframes ji-pillow-shift {
  0% { transform: translateX(0) rotate(0deg); }
  50% { transform: translateX(3px) rotate(5deg); }
  100% { transform: translateX(0) rotate(0deg); }
}
@keyframes ji-window-dim {
  0% { opacity:0.6; background: radial-gradient(ellipse at 50% 40%, #6a5a7a 0%, #2a2a44 70%); }
  50% { opacity:0.8; background: radial-gradient(ellipse at 50% 40%, #8a7a9a 0%, #2a2a44 70%); }
  100% { opacity:0.4; background: radial-gradient(ellipse at 50% 40%, #4a3a5a 0%, #1a1a2e 70%); }
}
@keyframes ji-lamp-flicker {
  0% { opacity:0.8; box-shadow: 0 0 15px 4px rgba(200,160,96,0.3); }
  50% { opacity:1; box-shadow: 0 0 30px 10px rgba(200,160,96,0.6); }
  100% { opacity:0.9; box-shadow: 0 0 20px 6px rgba(200,160,96,0.4); }
}
@keyframes ji-curtain-sway {
  0% { transform: rotate(0deg) scaleX(1); }
  50% { transform: rotate(4deg) scaleX(1.02); }
  100% { transform: rotate(0deg) scaleX(1); }
}

/* scene: meluns-warning */
.scn-meluns-warning {
  background: linear-gradient(180deg, #5a3a4a 0%, #3a2a3a 40%, #1a1020 100%), radial-gradient(ellipse at 30% 70%, #7a4a5a 0%, transparent 70%);
}
.scn-meluns-warning .sky-dusk {
  position:absolute; inset:0 0 30% 0;
  background: linear-gradient(180deg, #7a5a6a 0%, #4a3a4a 100%);
  animation: mw-sky-darken 12s ease-in-out infinite alternate;
}
.scn-meluns-warning .ground {
  position:absolute; bottom:0; left:0; right:0; height:30%;
  background: linear-gradient(180deg, #2a1a2a 0%, #0a0a10 100%);
  border-radius: 40% 0 0 0;
}
.scn-meluns-warning .figure-left {
  position:absolute; bottom:25%; left:30%; width:35px; height:95px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 45% 45% 35% 35% / 55% 55% 45% 45%;
  transform-origin: bottom center;
  animation: mw-figure-left-warn 5s ease-in-out infinite;
}
.scn-meluns-warning .figure-right {
  position:absolute; bottom:25%; left:55%; width:35px; height:95px;
  background: linear-gradient(180deg, #2a1a2a 0%, #0a0a1a 100%);
  border-radius: 45% 45% 35% 35% / 55% 55% 45% 45%;
  transform-origin: bottom center;
  animation: mw-figure-right-step 6s ease-in-out infinite;
}
.scn-meluns-warning .torch {
  position:absolute; bottom:40%; left:45%; width:12px; height:40px;
  background: linear-gradient(180deg, #8a6a3a 0%, #4a2a1a 100%);
  border-radius: 20% 20% 20% 20%;
  box-shadow: 0 0 25px 10px rgba(200,120,60,0.5);
  animation: mw-torch-flicker 1.5s ease-in-out infinite alternate;
}
.scn-meluns-warning .shadow-pool {
  position:absolute; bottom:18%; left:35%; right:35%; height:20px;
  background: radial-gradient(ellipse at 50% 0%, #0a0a10 0%, transparent 70%);
  animation: mw-shadow-pulse 4s ease-in-out infinite;
}
.scn-meluns-warning .tent {
  position:absolute; bottom:30%; right:10%; width:80px; height:100px;
  background: linear-gradient(135deg, #2a1a30 0%, #0a0a18 100%);
  clip-path: polygon(0 100%, 50% 0, 100% 100%);
  opacity:0.6;
  animation: mw-tent-shift 10s ease-in-out infinite;
}
@keyframes mw-sky-darken {
  0% { opacity:0.7; }
  50% { opacity:1; }
  100% { opacity:0.5; }
}
@keyframes mw-figure-left-warn {
  0% { transform: translateX(0) rotate(-2deg); }
  50% { transform: translateX(5px) rotate(4deg); }
  100% { transform: translateX(0) rotate(-2deg); }
}
@keyframes mw-figure-right-step {
  0% { transform: translateY(0) translateX(0); }
  25% { transform: translateY(-2px) translateX(-3px); }
  50% { transform: translateY(0) translateX(0); }
  75% { transform: translateY(-2px) translateX(3px); }
  100% { transform: translateY(0) translateX(0); }
}
@keyframes mw-torch-flicker {
  0% { opacity:0.7; box-shadow: 0 0 15px 5px rgba(200,120,60,0.4); }
  50% { opacity:1; box-shadow: 0 0 35px 15px rgba(200,120,60,0.7); }
  100% { opacity:0.8; box-shadow: 0 0 20px 8px rgba(200,120,60,0.5); }
}
@keyframes mw-shadow-pulse {
  0% { transform: scaleX(1) scaleY(1); opacity:0.6; }
  50% { transform: scaleX(1.1) scaleY(1.2); opacity:1; }
  100% { transform: scaleX(1) scaleY(1); opacity:0.6; }
}
@keyframes mw-tent-shift {
  0% { transform: translateX(0) rotate(0deg); }
  50% { transform: translateX(-4px) rotate(2deg); }
  100% { transform: translateX(0) rotate(0deg); }
}

.scn-lewis-news-of-loss {
  background:
    linear-gradient(180deg, #2a1a3a 0%, #5a2a3a 30%, #b85a3a 60%, #d08a4a 80%, #a06a40 100%),
    radial-gradient(ellipse at 50% 100%, #d08a4a 0%, transparent 70%);
}
.scn-lewis-news-of-loss .sky-dusk {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(180deg, #2a1a3a 0%, #6a3a4a 40%, #b85a3a 100%);
  animation: lnl-sky 12s ease-in-out infinite alternate;
}
.scn-lewis-news-of-loss .sun-glow {
  position: absolute; bottom: 40%; left: 55%; width: 60px; height: 60px;
  background: radial-gradient(circle, #f0a040 0%, #d08030 40%, transparent 80%);
  border-radius: 50%;
  box-shadow: 0 0 80px 30px rgba(208,128,48,0.6);
  animation: lnl-sun 9s ease-in-out infinite alternate;
}
.scn-lewis-news-of-loss .hills-back {
  position: absolute; bottom: 20%; left: 0; right: 0; height: 25%;
  background: linear-gradient(180deg, #1a1a2a 0%, #2a2a3a 100%);
  border-radius: 60% 40% 0 0 / 70% 80% 0 0;
  box-shadow: inset 0 8px 20px rgba(0,0,0,0.6);
  animation: lnl-hills 18s ease-in-out infinite alternate;
}
.scn-lewis-news-of-loss .soldier1 {
  position: absolute; bottom: 18%; left: 30%; width: 14px; height: 32px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: lnl-soldier 7s ease-in-out infinite;
}
.scn-lewis-news-of-loss .soldier2 {
  position: absolute; bottom: 16%; left: 45%; width: 16px; height: 34px;
  background: linear-gradient(180deg, #2a2a3a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: lnl-soldier2 9s ease-in-out infinite;
}
.scn-lewis-news-of-loss .embers {
  position: absolute; bottom: 14%; left: 20%; width: 8px; height: 8px;
  background: #ff8030;
  border-radius: 50%;
  box-shadow: 0 0 12px 4px rgba(255,128,48,0.7), 0 0 24px 8px rgba(255,128,48,0.3);
  animation: lnl-ember 2s ease-in-out infinite alternate;
}
.scn-lewis-news-of-loss .flag-fallen {
  position: absolute; bottom: 10%; left: 55%; width: 20px; height: 30px;
  background: linear-gradient(180deg, #a0461a 0%, #5a1a0a 100%);
  clip-path: polygon(0 0, 100% 0, 50% 100%);
  transform: rotate(10deg);
  animation: lnl-flag 15s ease-in-out infinite alternate;
}
@keyframes lnl-sky     { 0% { opacity: 0.7; } 50% { opacity: 1; } 100% { opacity: 0.6; } }
@keyframes lnl-sun     { 0% { transform: translate(0, 0) scale(1); opacity: 0.8; } 50% { transform: translate(4px, -2px) scale(1.05); opacity: 1; } 100% { transform: translate(0, 0) scale(0.95); opacity: 0.7; } }
@keyframes lnl-hills   { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes lnl-soldier { 0% { transform: translateX(0) rotate(-2deg); } 25% { transform: translateX(3px) rotate(0deg); } 50% { transform: translateX(6px) rotate(2deg); } 75% { transform: translateX(9px) rotate(0deg); } 100% { transform: translateX(12px) rotate(-2deg); } }
@keyframes lnl-soldier2 { 0% { transform: translateX(0) rotate(1deg); } 33% { transform: translateX(-2px) rotate(-1deg); } 67% { transform: translateX(2px) rotate(2deg); } 100% { transform: translateX(0) rotate(1deg); } }
@keyframes lnl-ember  { 0% { opacity: 0.3; transform: scale(0.8); } 50% { opacity: 1; transform: scale(1.2); } 100% { opacity: 0.4; transform: scale(0.9); } }
@keyframes lnl-flag   { 0% { transform: rotate(10deg) translateY(0); } 50% { transform: rotate(5deg) translateY(-3px); } 100% { transform: rotate(15deg) translateY(0); } }

.scn-bastards-night-search {
  background:
    linear-gradient(180deg, #0a0a1a 0%, #1a1a2e 40%, #0a0a1a 100%),
    radial-gradient(ellipse at 50% 0%, #1a1a3e 0%, transparent 60%);
}
.scn-bastards-night-search .night-sky {
  position: absolute; inset: 0 0 20% 0;
  background: linear-gradient(180deg, #151530 0%, #0a0a1a 100%);
  animation: bns-sky 20s ease-in-out infinite alternate;
}
.scn-bastards-night-search .night-sky::after {
  content: '';
  position: absolute; top: 10%; right: 15%; width: 4px; height: 4px;
  background: #ddd;
  border-radius: 50%;
  box-shadow: 0 0 6px 2px rgba(255,255,255,0.3);
  animation: bns-star 3s ease-in-out infinite alternate;
}
.scn-bastards-night-search .wall-left {
  position: absolute; left: 0; top: 20%; width: 20%; height: 80%;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 0 20% 20% 0 / 0 10% 10% 0;
  box-shadow: inset 0 0 40px rgba(0,0,0,0.8);
  animation: bns-wall 14s ease-in-out infinite alternate;
}
.scn-bastards-night-search .figure-search {
  position: absolute; bottom: 10%; left: 30%; width: 18px; height: 36px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: bns-fig1 5s ease-in-out infinite;
}
.scn-bastards-night-search .figure-held {
  position: absolute; bottom: 12%; left: 38%; width: 16px; 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: bns-fig2 6s ease-in-out infinite;
}
.scn-bastards-night-search .lantern-swing {
  position: absolute; bottom: 25%; left: 20%; width: 12px; height: 16px;
  background: radial-gradient(ellipse at 50% 30%, #d0a050 0%, #a07020 100%);
  border-radius: 30% 30% 40% 40%;
  box-shadow: 0 0 40px 10px rgba(160,112,32,0.5);
  animation: bns-lantern 2s ease-in-out infinite alternate;
}
.scn-bastards-night-search .ground-dark {
  position: absolute; bottom: 0; left: 0; right: 0; height: 15%;
  background: linear-gradient(180deg, #0a0a1a 0%, #1a1a2a 100%);
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.7);
  animation: bns-ground 22s ease-in-out infinite alternate;
}
.scn-bastards-night-search .torch-flare {
  position: absolute; bottom: 20%; left: 50%; width: 10px; height: 10px;
  background: #ffa040;
  border-radius: 50%;
  box-shadow: 0 0 30px 8px #ff8020, 0 0 60px 16px rgba(255,128,0,0.4);
  animation: bns-flare 1.5s ease-in-out infinite alternate;
}
@keyframes bns-sky    { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.7; } }
@keyframes bns-star   { 0% { opacity: 0.2; transform: scale(0.8); } 50% { opacity: 1; transform: scale(1.2); } 100% { opacity: 0.3; transform: scale(0.9); } }
@keyframes bns-wall   { 0% { transform: translateX(0); } 50% { transform: translateX(-5px); } 100% { transform: translateX(0); } }
@keyframes bns-fig1   { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(6px) rotate(-3deg); } 50% { transform: translateX(12px) rotate(0deg); } 75% { transform: translateX(18px) rotate(3deg); } 100% { transform: translateX(24px) rotate(0deg); } }
@keyframes bns-fig2   { 0% { transform: translateX(0) rotate(2deg); } 33% { transform: translateX(-4px) rotate(-1deg); } 66% { transform: translateX(4px) rotate(3deg); } 100% { transform: translateX(0) rotate(2deg); } }
@keyframes bns-lantern { 0% { transform: translate(0, 0) rotate(-5deg); } 50% { transform: translate(3px, -2px) rotate(5deg); } 100% { transform: translate(0, 0) rotate(-5deg); } }
@keyframes bns-ground { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.8; } }
@keyframes bns-flare  { 0% { opacity: 0.7; transform: scale(0.9); } 50% { opacity: 1; transform: scale(1.3); } 100% { opacity: 0.6; transform: scale(1); } }

.scn-king-john-dying {
  background:
    linear-gradient(180deg, #1a1a2e 0%, #2a2a3e 40%, #1a1a2e 100%),
    radial-gradient(ellipse at 40% 60%, #3a3a4e 0%, transparent 60%);
}
.scn-king-john-dying .room-wall {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  box-shadow: inset 0 0 100px rgba(0,0,0,0.6);
  animation: kjd-wall 24s ease-in-out infinite alternate;
}
.scn-king-john-dying .bed-king {
  position: absolute; bottom: 10%; left: 25%; width: 50%; height: 35%;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 0 10px 30px rgba(0,0,0,0.5);
  animation: kjd-bed 16s ease-in-out infinite alternate;
}
.scn-king-john-dying .figure-lying {
  position: absolute; bottom: 15%; left: 40%; width: 20%; height: 20%;
  background: linear-gradient(180deg, #4a4a5a 0%, #2a2a3a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: kjd-fig 8s ease-in-out infinite alternate;
}
.scn-king-john-dying .candle-flick {
  position: absolute; bottom: 30%; left: 15%; width: 8px; height: 12px;
  background: radial-gradient(ellipse at 50% 70%, #f0c060 0%, #c08030 100%);
  border-radius: 20% 20% 10% 10%;
  box-shadow: 0 0 40px 12px rgba(192,128,48,0.6);
  animation: kjd-candle 1.8s ease-in-out infinite alternate;
}
.scn-king-john-dying .window-cold {
  position: absolute; top: 10%; right: 10%; width: 18%; height: 25%;
  background: linear-gradient(135deg, #6a8a9a 0%, #3a5a6a 100%);
  border-radius: 10% / 15%;
  box-shadow: 0 0 40px 10px rgba(58,90,106,0.4);
  animation: kjd-window 20s ease-in-out infinite alternate;
}
.scn-king-john-dying .curtain-drap {
  position: absolute; top: 5%; right: 5%; width: 5%; height: 30%;
  background: linear-gradient(180deg, #5a3a2a 0%, #2a1a0a 100%);
  border-radius: 0 20% 20% 0;
  animation: kjd-curtain 18s ease-in-out infinite alternate;
}
@keyframes kjd-wall    { 0% { opacity: 0.8; } 50% { opacity: 0.9; } 100% { opacity: 0.7; } }
@keyframes kjd-bed     { 0% { transform: translateY(0); } 50% { transform: translateY(-3px); } 100% { transform: translateY(0); } }
@keyframes kjd-fig     { 0% { transform: translateX(0) scaleY(1); } 33% { transform: translateX(2px) scaleY(0.98); } 67% { transform: translateX(-1px) scaleY(1.02); } 100% { transform: translateX(0) scaleY(1); } }
@keyframes kjd-candle  { 0% { opacity: 0.6; transform: scale(0.9); } 50% { opacity: 1; transform: scale(1.1); } 100% { opacity: 0.7; transform: scale(1); } }
@keyframes kjd-window  { 0% { opacity: 0.3; transform: scale(0.95); } 50% { opacity: 0.6; transform: scale(1); } 100% { opacity: 0.4; transform: scale(0.98); } }
@keyframes kjd-curtain { 0% { transform: translateX(0) scaleY(1); } 50% { transform: translateX(-2px) scaleY(1.05); } 100% { transform: translateX(0) scaleY(1); } }

.scn-king-john-dies {
  background:
    linear-gradient(180deg, #0a0a1a 0%, #1a1a2e 50%, #0a0a1a 100%),
    radial-gradient(ellipse at 50% 60%, #1a1a3e 0%, transparent 50%);
}
.scn-king-john-dies .room-close {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  box-shadow: inset 0 0 120px rgba(0,0,0,0.8);
  animation: kjds-room 20s ease-in-out infinite alternate;
}
.scn-king-john-dies .crown-fall {
  position: absolute; bottom: 30%; left: 45%; width: 30px; height: 14px;
  background: linear-gradient(135deg, #d0a040 0%, #a07020 100%);
  clip-path: polygon(0 0, 25% 0, 30% 100%, 70% 100%, 75% 0, 100% 0, 100% 100%, 0 100%);
  transform: rotate(-15deg);
  animation: kjds-crown 4s ease-in-out infinite alternate;
}
.scn-king-john-dies .king-hands {
  position: absolute; bottom: 12%; left: 35%; width: 30%; height: 15%;
  background: linear-gradient(180deg, #4a4a5a 0%, #2a2a3a 100%);
  border-radius: 20% 20% 40% 40% / 30% 30% 50% 50%;
  animation: kjds-hands 8s ease-in-out infinite alternate;
}
.scn-king-john-dies .candle-die {
  position: absolute; bottom: 20%; left: 50%; width: 6px; height: 20px;
  background: radial-gradient(ellipse at 50% 80%, #d06020 0%, #803010 100%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 0 0 20px 6px rgba(128,48,16,0.4);
  animation: kjds-candle 1.5s ease-in-out infinite alternate;
}
.scn-king-john-dies .smoke-wisp {
  position: absolute; top: 10%; left: 48%; width: 30px; height: 60px;
  background: radial-gradient(ellipse at 50% 0%, rgba(100,90,80,0.4) 0%, transparent 100%);
  filter: blur(6px);
  animation: kjds-smoke 12s ease-in-out infinite alternate;
}
.scn-king-john-dies .dawn-edge {
  position: absolute; top: -5%; left: 0; right: 0; height: 15%;
  background: linear-gradient(180deg, #4a6a7a 0%, transparent 100%);
  opacity: 0.1;
  animation: kjds-dawn 30s ease-in-out infinite alternate;
}
@keyframes kjds-room   { 0% { opacity: 0.85; } 50% { opacity: 1; } 100% { opacity: 0.8; } }
@keyframes kjds-crown  { 0% { transform: rotate(-15deg) translateY(0); } 50% { transform: rotate(-10deg) translateY(-5px); } 100% { transform: rotate(-20deg) translateY(0); } }
@keyframes kjds-hands  { 0% { transform: translateY(0) scaleY(1); } 33% { transform: translateY(2px) scaleY(0.98); } 67% { transform: translateY(-1px) scaleY(1.02); } 100% { transform: translateY(0) scaleY(1); } }
@keyframes kjds-candle { 0% { opacity: 0.4; transform: scale(0.8); } 50% { opacity: 0.8; transform: scale(1.1); } 100% { opacity: 0.3; transform: scale(0.9); } }
@keyframes kjds-smoke  { 0% { transform: translate(0, 0) scale(0.8); opacity: 0.2; } 50% { transform: translate(5px, -15px) scale(1.2); opacity: 0.5; } 100% { transform: translate(-3px, -10px) scale(1); opacity: 0.1; } }
@keyframes kjds-dawn   { 0% { opacity: 0.05; } 50% { opacity: 0.2; } 100% { opacity: 0.08; } }

/* Scene 1: john-sends-bastard – tense, bright interior */
.scn-john-sends-bastard {
  background: 
    linear-gradient(180deg, #f5e6c8 0%, #d9b882 30%, #c49a5e 60%, #8b6f3c 100%),
    radial-gradient(ellipse at 50% 0%, #fff5d6 0%, transparent 70%);
}
.scn-john-sends-bastard .wall       { position:absolute; inset:0 0 30% 0; background: linear-gradient(90deg, #b5956a 0%, #d4b88a 50%, #b5956a 100%); box-shadow: inset 0 -20px 40px rgba(0,0,0,.15); }
.scn-john-sends-bastard .floor      { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #a08050 0%, #7a6030 100%); box-shadow: inset 0 12px 24px rgba(0,0,0,.3); }
.scn-john-sends-bastard .window-frame { position:absolute; top:10%; left:15%; width:25%; height:45%; border:8px solid #5a3a1a; border-radius:6px; background: radial-gradient(circle at 50% 30%, #f0dbb0 0%, #b8a080 60%, transparent 100%); box-shadow: 0 0 30px 10px rgba(240,219,176,.3); }
.scn-john-sends-bastard .door       { position:absolute; bottom:30%; right:20%; width:18%; height:70%; background: linear-gradient(90deg, #4a3a2a 0%, #5a4a3a 50%, #4a3a2a 100%); border-radius:4px 4px 0 0; box-shadow: -6px 0 12px rgba(0,0,0,.4); transform-origin: right center; animation: jsb-door 2s ease-in-out infinite alternate; }
.scn-john-sends-bastard .figure     { position:absolute; bottom:30%; left:35%; width:20px; height:60px; background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: jsb-walk 3s ease-in-out infinite; }
.scn-john-sends-bastard .shadow     { position:absolute; bottom:30%; left:35%; width:40px; height:8px; background: rgba(0,0,0,.5); border-radius:50%; transform: translateX(10px); filter: blur(6px); animation: jsb-shadow 3s ease-in-out infinite; }
.scn-john-sends-bastard .light-patch { position:absolute; top:8%; left:12%; width:30%; height:50%; background: radial-gradient(ellipse at 50% 50%, rgba(255,235,180,.3) 0%, transparent 70%); animation: jsb-light 6s ease-in-out infinite alternate; }
.scn-john-sends-bastard .dust-motes  { position:absolute; inset:0; background: radial-gradient(circle at 20% 30%, rgba(255,230,180,.08) 0%, transparent 30%), radial-gradient(circle at 70% 60%, rgba(255,230,180,.06) 0%, transparent 30%); animation: jsb-dust 12s linear infinite; filter: blur(2px); }

@keyframes jsb-door { 0% { transform: rotate(0deg) } 100% { transform: rotate(-25deg) } }
@keyframes jsb-walk { 0% { transform: translateX(0) rotate(-2deg) } 25% { transform: translateX(12px) rotate(1deg) } 50% { transform: translateX(24px) rotate(-1deg) } 75% { transform: translateX(36px) rotate(2deg) } 100% { transform: translateX(48px) rotate(0) } }
@keyframes jsb-shadow { 0% { transform: translateX(10px) scale(1) opacity:.5 } 50% { transform: translateX(22px) scale(1.1) opacity:.3 } 100% { transform: translateX(34px) scale(1) opacity:.5 } }
@keyframes jsb-light { 0% { opacity:.3 } 50% { opacity:.7 } 100% { opacity:.4 } }
@keyframes jsb-dust { 0% { background-position: 0 0, 0 0 } 100% { background-position: 100px -50px, -80px 50px } }

/* Scene 2: strange-signs – dark, night sky with multiple moons */
.scn-strange-signs {
  background: 
    linear-gradient(180deg, #0a0a1a 0%, #14142a 40%, #1a1a3a 70%, #0a0a1a 100%),
    radial-gradient(ellipse at 50% 100%, #1a1a3a 0%, transparent 60%);
}
.scn-strange-signs .night-sky       { position:absolute; inset:0; background: radial-gradient(circle at 30% 40%, #2a2a4e 0%, transparent 50%), radial-gradient(circle at 70% 60%, #1a1a3e 0%, transparent 50%); animation: ss-sky 15s ease-in-out infinite alternate; }
.scn-strange-signs .moon-main       { position:absolute; top:15%; left:20%; width:60px; height:60px; background: radial-gradient(circle at 35% 35%, #f0e8c0 0%, #c8b888 60%, #806840 100%); border-radius:50%; box-shadow: 0 0 40px 12px rgba(200,184,136,.5), 0 0 80px 24px rgba(200,184,136,.2); animation: ss-glow 4s ease-in-out infinite alternate; }
.scn-strange-signs .moon-orbit      { position:absolute; top:5%; left:40%; width:40px; height:40px; background: radial-gradient(circle at 30% 30%, #e8d8a0 0%, #b09868 80%); border-radius:50%; box-shadow: 0 0 30px 8px rgba(200,184,136,.4); animation: ss-orbit 12s linear infinite; }
.scn-strange-signs .moon-whirl      { position:absolute; top:25%; left:60%; width:35px; height:35px; background: radial-gradient(circle at 40% 40%, #f0d8a0 0%, #a08050 80%); border-radius:50%; box-shadow: 0 0 25px 6px rgba(200,184,136,.4); animation: ss-whirl 8s linear infinite; }
.scn-strange-signs .star-1          { position:absolute; top:12%; left:10%; width:4px; height:4px; background:#fff; border-radius:50%; box-shadow: 0 0 6px 2px rgba(255,255,200,.6); animation: ss-twinkle 3s ease-in-out infinite; }
.scn-strange-signs .star-2          { position:absolute; top:35%; left:75%; width:3px; height:3px; background:#fff; border-radius:50%; box-shadow: 0 0 4px 1px rgba(255,255,200,.6); animation: ss-twinkle 4s ease-in-out 1s infinite; }
.scn-strange-signs .prophet-silhouette { position:absolute; bottom:20%; left:25%; width:30px; height:80px; background: linear-gradient(180deg, #0a0a1a 0%, #1a1a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ss-prophet 5s ease-in-out infinite; }
.scn-strange-signs .crowd-silhouette  { position:absolute; bottom:15%; left:10%; right:10%; height:60px; background: linear-gradient(180deg, rgba(10,10,26,.8) 0%, rgba(20,20,40,.9) 100%); border-radius: 40% 40% 0 0; filter: blur(3px); animation: ss-crowd 7s ease-in-out infinite alternate; }

@keyframes ss-sky { 0% { opacity:.6 } 50% { opacity:1 } 100% { opacity:.7 } }
@keyframes ss-glow { 0% { box-shadow: 0 0 30px 10px rgba(200,184,136,.4), 0 0 60px 20px rgba(200,184,136,.1) } 50% { box-shadow: 0 0 50px 15px rgba(200,184,136,.6), 0 0 100px 30px rgba(200,184,136,.2) } 100% { box-shadow: 0 0 35px 12px rgba(200,184,136,.5), 0 0 70px 24px rgba(200,184,136,.15) } }
@keyframes ss-orbit { 0% { transform: translate(0,0) } 25% { transform: translate(30px, -20px) } 50% { transform: translate(60px, 0) } 75% { transform: translate(30px, 20px) } 100% { transform: translate(0,0) } }
@keyframes ss-whirl { 0% { transform: rotate(0deg) translate(40px) rotate(0deg) } 100% { transform: rotate(360deg) translate(40px) rotate(-360deg) } }
@keyframes ss-twinkle { 0% { opacity:.2 } 50% { opacity:1 } 100% { opacity:.3 } }
@keyframes ss-prophet { 0% { transform: translateY(0) rotate(-3deg) } 25% { transform: translateY(-4px) rotate(2deg) } 50% { transform: translateY(0) rotate(5deg) } 75% { transform: translateY(-2px) rotate(-1deg) } 100% { transform: translateY(0) rotate(0) } }
@keyframes ss-crowd { 0% { transform: translateX(-5px) scaleY(1) } 50% { transform: translateX(5px) scaleY(1.05) } 100% { transform: translateX(-3px) scaleY(0.95) } }

/* Scene 3: john-accuses-hubert – dark, tense accusation */
.scn-john-accuses-hubert {
  background: 
    linear-gradient(180deg, #1a0a0a 0%, #2a1a1a 40%, #1a0a0a 100%),
    radial-gradient(ellipse at 50% 50%, #3a2a2a 0%, transparent 60%);
}
.scn-john-accuses-hubert .pillar-l  { position:absolute; bottom:0; left:8%; width:8%; height:100%; background: linear-gradient(90deg, #2a1a1a 0%, #3a2a2a 50%, #2a1a1a 100%); box-shadow: inset -4px 0 8px rgba(0,0,0,.5); }
.scn-john-accuses-hubert .pillar-r  { position:absolute; bottom:0; right:8%; width:8%; height:100%; background: linear-gradient(90deg, #2a1a1a 0%, #3a2a2a 50%, #2a1a1a 100%); box-shadow: inset 4px 0 8px rgba(0,0,0,.5); }
.scn-john-accuses-hubert .throne    { position:absolute; bottom:28%; left:40%; width:20%; height:50%; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a1a 100%); border-radius: 20% 20% 10% 10%; box-shadow: 0 0 20px 4px rgba(0,0,0,.6); clip-path: polygon(0 20%, 100% 20%, 100% 100%, 0 100%); }
.scn-john-accuses-hubert .king-figure { position:absolute; bottom:30%; left:42%; width:25px; height:70px; background: linear-gradient(180deg, #3a1a1a 0%, #1a0a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: jah-king 4s ease-in-out infinite; }
.scn-john-accuses-hubert .hubert-figure { position:absolute; bottom:30%; left:55%; width:22px; height:65px; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: jah-hubert 3s ease-in-out infinite; }
.scn-john-accuses-hubert .candle-flame { position:absolute; bottom:40%; left:50%; width:8px; height:16px; background: radial-gradient(ellipse at 50% 30%, #ffd080 0%, #c06020 70%, transparent 100%); border-radius:50% 50% 50% 50% / 60% 60% 40% 40%; box-shadow: 0 0 20px 6px rgba(192,96,32,.6); animation: jah-candle 1.5s ease-in-out infinite alternate; }
.scn-john-accuses-hubert .shadow-king { position:absolute; bottom:30%; left:42%; width:30px; height:10px; background: rgba(0,0,0,.6); border-radius:50%; filter: blur(8px); transform: translateX(5px); animation: jah-shadow 4s ease-in-out infinite; }
.scn-john-accuses-hubert .shadow-hubert { position:absolute; bottom:30%; left:55%; width:28px; height:10px; background: rgba(0,0,0,.6); border-radius:50%; filter: blur(8px); transform: translateX(3px); animation: jah-shadow 3s ease-in-out infinite; }

@keyframes jah-king { 0% { transform: translateY(0) rotate(-5deg) } 25% { transform: translateY(-3px) rotate(-2deg) } 50% { transform: translateY(0) rotate(0deg) } 75% { transform: translateY(-2px) rotate(3deg) } 100% { transform: translateY(0) rotate(5deg) } }
@keyframes jah-hubert { 0% { transform: translateX(0) scale(1) } 25% { transform: translateX(-4px) scale(0.95) } 50% { transform: translateX(0) scale(1) } 75% { transform: translateX(2px) scale(0.98) } 100% { transform: translateX(0) scale(1) } }
@keyframes jah-candle { 0% { height:14px; opacity:.8 } 50% { height:18px; opacity:1 } 100% { height:15px; opacity:.9 } }
@keyframes jah-shadow { 0% { opacity:.4 } 50% { opacity:.7 } 100% { opacity:.5 } }

/* Scene 4: hubert-confesses-arthur-lives – tense, dark, hope */
.scn-hubert-confesses-arthur-lives {
  background: 
    linear-gradient(180deg, #0a0a1a 0%, #14142a 40%, #1a1a2a 100%),
    radial-gradient(ellipse at 50% 0%, #2a2a4e 0%, transparent 70%);
}
.scn-hubert-confesses-arthur-lives .wall-dark { position:absolute; inset:0; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); }
.scn-hubert-confesses-arthur-lives .window-arch { position:absolute; top:10%; left:35%; width:30%; height:50%; border-radius: 50% 50% 6% 6% / 60% 60% 10% 10%; background: radial-gradient(ellipse at 50% 30%, #2a3a4a 0%, #0a0a1a 100%); border: 6px solid #2a2a3a; box-shadow: inset 0 0 40px 20px rgba(0,0,0,.8); }
.scn-hubert-confesses-arthur-lives .moonlight { position:absolute; top:12%; left:38%; width:24%; height:20%; background: linear-gradient(100deg, rgba(200,210,230,.4) 0%, transparent 100%); filter: blur(12px); animation: hca-moonlight 6s ease-in-out infinite alternate; transform: skewX(-20deg); }
.scn-hubert-confesses-arthur-lives .king-kneeling { position:absolute; bottom:30%; left:42%; width:28px; height:70px; background: linear-gradient(180deg, #3a2a3a 0%, #1a1a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: hca-kneel 5s ease-in-out infinite; }
.scn-hubert-confesses-arthur-lives .hubert-standing { position:absolute; bottom:30%; left:55%; width:24px; height:75px; background: linear-gradient(180deg, #1a2a3a 0%, #0a1a2a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: hca-stand 6s ease-in-out infinite; }
.scn-hubert-confesses-arthur-lives .praying-hands { position:absolute; bottom:45%; left:54%; width:18px; height:22px; background: radial-gradient(ellipse at 50% 30%, #3a4a5a 0%, #1a2a3a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%; transform-origin: bottom center; animation: hca-hands 3s ease-in-out infinite; box-shadow: 0 0 12px 2px rgba(100,130,180,.3); }
.scn-hubert-confesses-arthur-lives .shadow-floor { position:absolute; bottom:30%; left:40%; right:10%; height:12px; background: linear-gradient(90deg, rgba(0,0,0,.5) 0%, transparent 100%); filter: blur(6px); }
.scn-hubert-confesses-arthur-lives .hope-glow { position:absolute; bottom:40%; left:50%; width:80px; height:80px; background: radial-gradient(circle, rgba(60,80,120,.15) 0%, transparent 70%); transform: translate(-50%, 50%); animation: hca-glow 5s ease-in-out infinite alternate; }

@keyframes hca-moonlight { 0% { opacity:.3; transform: skewX(-20deg) translateX(0) } 50% { opacity:.6; transform: skewX(-20deg) translateX(10px) } 100% { opacity:.4; transform: skewX(-20deg) translateX(-5px) } }
@keyframes hca-kneel { 0% { transform: translateY(0) rotate(-10deg) } 25% { transform: translateY(-5px) rotate(-5deg) } 50% { transform: translateY(0) rotate(0) } 75% { transform: translateY(-3px) rotate(5deg) } 100% { transform: translateY(0) rotate(10deg) } }
@keyframes hca-stand { 0% { transform: translateY(0) rotate(0) } 25% { transform: translateY(-2px) rotate(2deg) } 50% { transform: translateY(0) rotate(0) } 75% { transform: translateY(-1px) rotate(-2deg) } 100% { transform: translateY(0) rotate(0) } }
@keyframes hca-hands { 0% { transform: scale(1) rotate(-5deg) } 50% { transform: scale(1.05) rotate(0) } 100% { transform: scale(0.98) rotate(5deg) } }
@keyframes hca-glow { 0% { opacity:.2; transform: translate(-50%, 50%) scale(0.8) } 50% { opacity:.4; transform: translate(-50%, 50%) scale(1.2) } 100% { opacity:.3; transform: translate(-50%, 50%) scale(0.9) } }

.scn-constance-departs {
  background:
    linear-gradient(180deg, #1f1a3a 0%, #3a2a4e 40%, #6a4a3a 65%, #b08050 100%),
    radial-gradient(ellipse at 30% 80%, #d09850 0%, transparent 50%);
}
.scn-constance-departs .sky-cd {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #2a2040 0%, #4a3868 60%, transparent 100%);
  animation: cd-sky 20s ease-in-out infinite alternate;
}
.scn-constance-departs .sun-cd {
  position: absolute; bottom: 42%; left: 30%; width: 40px; height: 40px;
  background: radial-gradient(circle, #f0b060 0%, #d08030 70%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 60px 20px rgba(240,176,96,.6), 0 0 120px 40px rgba(208,128,48,.3);
  animation: cd-sun 30s ease-in-out infinite alternate;
}
.scn-constance-departs .land-cd {
  position: absolute; bottom: 20%; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #3a4a2a 0%, #1a2a0a 100%);
  border-radius: 60% 40% 0 0 / 70% 50% 0 0;
  box-shadow: inset 0 12px 30px rgba(0,0,0,.5);
  animation: cd-land 15s ease-in-out infinite;
}
.scn-constance-departs .path-cd {
  position: absolute; bottom: 18%; left: 35%; width: 30%; height: 12%;
  background: linear-gradient(180deg, #6a5a3a 0%, #4a3a1a 100%);
  border-radius: 20% 20% 50% 50%;
  transform: perspective(200px) rotateX(20deg);
  animation: cd-path 10s ease-in-out infinite;
}
.scn-constance-departs .figure-cd {
  position: absolute; bottom: 17%; left: 45%; width: 14px; height: 36px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cd-figure 6s ease-in-out infinite;
}
.scn-constance-departs .tree-a-cd,
.scn-constance-departs .tree-b-cd {
  position: absolute; bottom: 22%; width: 20px; height: 50px;
  background: linear-gradient(180deg, #2a3a1a 0%, #1a2a0a 100%);
  border-radius: 40% 40% 20% 20%;
  box-shadow: inset 0 -8px 12px rgba(0,0,0,.4);
}
.scn-constance-departs .tree-a-cd { left: 20%; height: 55px; animation: cd-tree 8s ease-in-out infinite; }
.scn-constance-departs .tree-b-cd { right: 18%; height: 45px; animation: cd-tree 10s ease-in-out infinite reverse; }
.scn-constance-departs .cloud-a-cd, .cloud-b-cd {
  position: absolute; height: 16px;
  background: linear-gradient(180deg, rgba(200,180,220,.4) 0%, rgba(200,180,220,.05) 100%);
  border-radius: 50%;
  filter: blur(4px);
}
.scn-constance-departs .cloud-a-cd { top: 12%; left: 10%; width: 90px; animation: cd-cloud 40s linear infinite; }
.scn-constance-departs .cloud-b-cd { top: 20%; right: 5%; width: 60px; animation: cd-cloud 50s linear infinite reverse; }
@keyframes cd-sky { 0% { opacity:.7 } 50% { opacity:1 } 100% { opacity:.6 } }
@keyframes cd-sun { 0% { transform: translateY(0) scale(1); opacity:.9 } 50% { transform: translateY(-6px) scale(1.02); opacity:1 } 100% { transform: translateY(3px) scale(.97); opacity:.85 } }
@keyframes cd-land { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes cd-path { 0%,100% { transform: perspective(200px) rotateX(20deg) translateX(0) } 50% { transform: perspective(200px) rotateX(20deg) translateX(4px) } }
@keyframes cd-figure { 0% { transform: translateX(0) translateY(0) rotate(-1deg) } 25% { transform: translateX(8px) translateY(-1px) rotate(1deg) } 50% { transform: translateX(16px) translateY(0) rotate(-1deg) } 75% { transform: translateX(24px) translateY(-1px) rotate(1deg) } 100% { transform: translateX(32px) translateY(0) rotate(0) } }
@keyframes cd-tree { 0% { transform: rotate(-2deg) } 50% { transform: rotate(2deg) } 100% { transform: rotate(-2deg) } }
@keyframes cd-cloud { 0% { transform: translateX(-30px) } 100% { transform: translateX(120vw) } }

.scn-pandulph-plots {
  background:
    linear-gradient(180deg, #1a1a2a 0%, #2a2230 40%, #4a3a3a 100%),
    radial-gradient(ellipse at 70% 30%, #b08040 0%, transparent 60%);
}
.scn-pandulph-plots .bg-wall-pp {
  position: absolute; inset: 0 0 20% 0;
  background: linear-gradient(135deg, #2a2030 0%, #1a1020 100%);
  box-shadow: inset 0 0 80px rgba(0,0,0,.6);
  animation: pp-wall 20s ease-in-out infinite alternate;
}
.scn-pandulph-plots .floor-pp {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #3a2a2a 0%, #1a0a0a 100%);
  transform: perspective(300px) rotateX(30deg);
  animation: pp-floor 15s ease-in-out infinite;
}
.scn-pandulph-plots .throne-pp {
  position: absolute; bottom: 16%; left: 55%; width: 60px; height: 100px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 20% 20% 10% 10% / 40% 40% 20% 20%;
  box-shadow: 0 8px 16px rgba(0,0,0,.5);
  transform: perspective(200px) rotateY(-5deg);
  animation: pp-throne 12s ease-in-out infinite;
}
.scn-pandulph-plots .figure-pp {
  position: absolute; bottom: 10%; left: 45%; width: 20px; height: 60px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: pp-figure 8s ease-in-out infinite;
}
.scn-pandulph-plots .figure-pp::after {
  content: ''; position: absolute; top: 6px; left: -8px; width: 18px; height: 4px;
  background: #1a1a2a; border-radius: 50%; transform: rotate(-20deg);
  animation: pp-arm 4s ease-in-out infinite alternate;
}
.scn-pandulph-plots .staff-pp {
  position: absolute; bottom: 6%; left: 42%; width: 4px; height: 70px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 2px;
  transform-origin: bottom center;
  animation: pp-staff 5s ease-in-out infinite;
}
.scn-pandulph-plots .dust-1-pp, .dust-2-pp, .dust-3-pp {
  position: absolute; width: 6px; height: 6px;
  background: radial-gradient(circle, rgba(200,180,160,.6) 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(1px);
}
.scn-pandulph-plots .dust-1-pp { top: 30%; left: 20%; animation: pp-dust 20s linear infinite; }
.scn-pandulph-plots .dust-2-pp { top: 50%; left: 40%; animation: pp-dust 25s linear infinite -5s; }
.scn-pandulph-plots .dust-3-pp { top: 35%; left: 65%; animation: pp-dust 18s linear infinite -10s; }
@keyframes pp-wall { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.7 } }
@keyframes pp-floor { 0% { transform: perspective(300px) rotateX(30deg) } 50% { transform: perspective(300px) rotateX(28deg) } 100% { transform: perspective(300px) rotateX(30deg) } }
@keyframes pp-throne { 0%,100% { transform: perspective(200px) rotateY(-5deg) } 50% { transform: perspective(200px) rotateY(-3deg) translateY(-2px) } }
@keyframes pp-figure { 0% { transform: translateY(0) rotate(0) } 50% { transform: translateY(-2px) rotate(1deg) } 100% { transform: translateY(0) rotate(0) } }
@keyframes pp-arm { 0% { transform: rotate(-25deg) } 100% { transform: rotate(5deg) } }
@keyframes pp-staff { 0% { transform: rotate(-3deg) } 50% { transform: rotate(2deg) } 100% { transform: rotate(-3deg) } }
@keyframes pp-dust { 0% { transform: translateY(0) translateX(0) scale(1); opacity:.6 } 50% { transform: translateY(-30px) translateX(10px) scale(1.5); opacity:.8 } 100% { transform: translateY(-60px) translateX(20px) scale(.5); opacity:0 } }

.scn-hubert-and-executioners {
  background:
    linear-gradient(180deg, #0a0a0a 0%, #1a0a0a 40%, #2a0a0a 100%),
    radial-gradient(circle at 50% 50%, #c04020 0%, transparent 60%);
}
.scn-hubert-and-executioners .bg-dark-he {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at 50% 60%, #1a0a0a 0%, #0a0a0a 100%);
  animation: he-bg 10s ease-in-out infinite alternate;
}
.scn-hubert-and-executioners .brazier-he {
  position: absolute; bottom: 30%; left: 50%; width: 80px; height: 40px;
  margin-left: -40px;
  background: radial-gradient(circle at 50% 60%, #e08040 0%, #a04020 60%, #1a0a0a 100%);
  border-radius: 50%;
  box-shadow: 0 0 60px 20px rgba(200,80,40,.5), 0 0 120px 40px rgba(200,80,40,.2);
  animation: he-brazier 5s ease-in-out infinite;
}
.scn-hubert-and-executioners .coals-he {
  position: absolute; bottom: 32%; left: 50%; width: 50px; height: 20px;
  margin-left: -25px;
  background: radial-gradient(circle, #ff8040 0%, #c04020 70%, transparent 100%);
  border-radius: 50%;
  filter: blur(2px);
  animation: he-coals 3s ease-in-out infinite alternate;
}
.scn-hubert-and-executioners .irons-he {
  position: absolute; bottom: 37%; left: 45%; width: 4px; height: 40px;
  background: linear-gradient(180deg, #a04020 0%, #f06020 60%, #a04020 100%);
  border-radius: 2px;
  box-shadow: 0 0 20px 4px rgba(240,96,32,.6);
  transform-origin: bottom center;
  animation: he-irons 4s ease-in-out infinite;
}
.scn-hubert-and-executioners .chair-he {
  position: absolute; bottom: 10%; left: 50%; width: 50px; height: 80px;
  margin-left: -25px;
  background: linear-gradient(180deg, #2a1a0a 0%, #0a0a0a 100%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 0 10px 20px rgba(0,0,0,.8);
  animation: he-chair 12s ease-in-out infinite;
}
.scn-hubert-and-executioners .shadow-l-he {
  position: absolute; bottom: 10%; left: 15%; width: 30px; height: 70px;
  background: linear-gradient(180deg, rgba(0,0,0,.8) 0%, transparent 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  animation: he-shadow 6s ease-in-out infinite;
}
.scn-hubert-and-executioners .shadow-r-he {
  position: absolute; bottom: 10%; right: 15%; width: 30px; height: 70px;
  background: linear-gradient(180deg, rgba(0,0,0,.8) 0%, transparent 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  animation: he-shadow 7s ease-in-out infinite reverse;
}
@keyframes he-bg { 0% { opacity:.7 } 50% { opacity:1 } 100% { opacity:.6 } }
@keyframes he-brazier { 0%,100% { transform: scale(1) } 50% { transform: scale(1.04) } }
@keyframes he-coals { 0% { opacity:.6; filter: blur(1px) } 50% { opacity:1; filter: blur(2px) } 100% { opacity:.7; filter: blur(1px) } }
@keyframes he-irons { 0% { transform: rotate(-10deg) } 50% { transform: rotate(10deg) } 100% { transform: rotate(-10deg) } }
@keyframes he-chair { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-3px) } }
@keyframes he-shadow { 0% { transform: translateX(0) } 50% { transform: translateX(8px) } 100% { transform: translateX(0) } }

.scn-arthur-pleads {
  background:
    linear-gradient(180deg, #1a1a2a 0%, #2a2020 40%, #3a2a2a 100%),
    radial-gradient(ellipse at 60% 30%, #d0a060 0%, transparent 50%);
}
.scn-arthur-pleads .bg-wall-ap {
  position: absolute; inset: 0 0 10% 0;
  background: linear-gradient(135deg, #2a2020 0%, #1a1010 100%);
  box-shadow: inset 0 0 60px rgba(0,0,0,.5);
  animation: ap-wall 15s ease-in-out infinite alternate;
}
.scn-arthur-pleads .window-ap {
  position: absolute; top: 20%; left: 30%; width: 50px; height: 70px;
  background: radial-gradient(ellipse at 50% 50%, #d0a060 0%, #806040 80%, transparent 100%);
  border-radius: 10px;
  box-shadow: 0 0 40px 10px rgba(208,160,96,.4);
  animation: ap-window 8s ease-in-out infinite;
}
.scn-arthur-pleads .hubert-ap {
  position: absolute; bottom: 10%; left: 30%; width: 18px; height: 60px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: ap-hubert 6s ease-in-out infinite;
}
.scn-arthur-pleads .arthur-ap {
  position: absolute; bottom: 10%; left: 50%; width: 14px; height: 36px;
  background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ap-arthur 8s ease-in-out infinite;
}
.scn-arthur-pleads .table-ap {
  position: absolute; bottom: 8%; left: 35%; width: 40px; height: 8px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 30%;
  box-shadow: 0 4px 8px rgba(0,0,0,.5);
  animation: ap-table 10s ease-in-out infinite;
}
.scn-arthur-pleads .book-ap {
  position: absolute; bottom: 10%; left: 38%; width: 12px; height: 6px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 2px;
  transform: rotate(15deg);
  animation: ap-book 12s ease-in-out infinite;
}
@keyframes ap-wall { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.7 } }
@keyframes ap-window { 0% { opacity:.7 } 50% { opacity:1 } 100% { opacity:.8 } }
@keyframes ap-hubert { 0% { transform: translateY(0) rotate(0) } 50% { transform: translateY(-2px) rotate(1deg) } 100% { transform: translateY(0) rotate(0) } }
@keyframes ap-arthur { 0% { transform: translateY(0) rotate(0) } 50% { transform: translateY(-1px) rotate(-1deg) } 100% { transform: translateY(0) rotate(0) } }
@keyframes ap-table { 0%,100% { transform: translateX(0) } 50% { transform: translateX(2px) } }
@keyframes ap-book { 0% { transform: rotate(15deg) } 50% { transform: rotate(18deg) } 100% { transform: rotate(15deg) } }

/* Arthur Leaps */
.scn-arthur-leaps { background: linear-gradient(180deg, #0a0a2e 0%, #1a1a3e 40%, #2a2a5e 100%), radial-gradient(ellipse at 80% 20%, #6a6a9e 0%, transparent 60%); }
.scn-arthur-leaps .wall { position:absolute; left:0; top:0; width:35%; height:100%; background: linear-gradient(180deg, #2a2a3e 0%, #1a1a2e 100%); border-right:6px solid #4a4a5e; box-shadow:inset -12px 0 20px rgba(0,0,0,.4); animation:al-wall 8s ease-in-out infinite alternate; }
.scn-arthur-leaps .moon { position:absolute; top:8%; right:12%; width:60px; height:60px; background: radial-gradient(circle, #d0d0f0 0%, #8a8abe 40%, transparent 60%); border-radius:50%; box-shadow:0 0 40px 10px #8a8abe; animation:al-moon 12s ease-in-out infinite alternate; }
.scn-arthur-leaps .figure { position:absolute; bottom:30%; left:38%; width:30px; height:50px; background: linear-gradient(180deg, #3a3a5e 0%, #1a1a2e 100%); border-radius:40% 40% 30% 30% / 50% 50% 30% 30%; transform-origin: bottom center; animation:al-leap 4s ease-in-out infinite; box-shadow:0 4px 8px rgba(0,0,0,.5); }
.scn-arthur-leaps .shadow { position:absolute; bottom:30%; left:35%; width:40px; height:6px; background: rgba(0,0,0,.3); border-radius:50%; filter:blur(3px); animation:al-shadow 4s ease-in-out infinite; }
.scn-arthur-leaps .ground { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #2a2a3e 0%, #0a0a1e 100%); border-radius:60% 40% 0 0 / 20% 30% 0 0; box-shadow:inset 0 12px 20px rgba(0,0,0,.6); }
.scn-arthur-leaps .stars { position:absolute; top:5%; left:5%; right:5%; bottom:70%; background: radial-gradient(2px 2px at 20% 30%, #fff, transparent), radial-gradient(2px 2px at 70% 50%, #e0e0f0, transparent), radial-gradient(1px 1px at 40% 10%, #fff, transparent), radial-gradient(1px 1px at 90% 15%, #e0e0f0, transparent); animation:al-stars 20s linear infinite; }
@keyframes al-wall { 0% { opacity:.9; } 50% { opacity:1; } 100% { opacity:.85; } }
@keyframes al-moon { 0% { transform: translate(0,0) scale(1); } 50% { transform: translate(-4px,2px) scale(1.02); } 100% { transform: translate(2px,-3px) scale(.98); } }
@keyframes al-leap { 0% { transform: translateX(0) translateY(0) rotate(0deg); } 25% { transform: translateX(12px) translateY(-15px) rotate(-8deg); } 50% { transform: translateX(24px) translateY(-5px) rotate(4deg); } 75% { transform: translateX(36px) translateY(-10px) rotate(-12deg); } 100% { transform: translateX(48px) translateY(0) rotate(0deg); } }
@keyframes al-shadow { 0% { opacity:.3; transform: translateX(0) scaleX(1); } 25% { opacity:.5; transform: translateX(12px) scaleX(1.2); } 50% { opacity:.2; transform: translateX(24px) scaleX(.8); } 75% { opacity:.4; transform: translateX(36px) scaleX(1.1); } 100% { opacity:.3; transform: translateX(48px) scaleX(1); } }
@keyframes al-stars { 0% { opacity:.4; } 50% { opacity:1; } 100% { opacity:.4; } }

/* Lords Find Arthur */
.scn-lords-find-arthur { background: linear-gradient(180deg, #0a0a2e 0%, #15153e 50%, #2a2a5e 100%), radial-gradient(ellipse at 20% 15%, #6a6a9e 0%, transparent 50%); }
.scn-lords-find-arthur .castle { position:absolute; left:10%; top:10%; width:60%; height:75%; background: linear-gradient(180deg, #3a3a5e 0%, #1a1a2e 100%); border-radius:20% 20% 0 0 / 40% 40% 0 0; box-shadow:inset 0 20px 30px rgba(0,0,0,.5); animation:lfa-castle 15s ease-in-out infinite alternate; }
.scn-lords-find-arthur .lord-a { position:absolute; bottom:28%; left:30%; width:22px; height:45px; background: linear-gradient(180deg, #4a4a6e 0%, #2a2a4e 100%); border-radius:40% 40% 30% 30% / 50% 50% 30% 30%; animation:lfa-lord 6s ease-in-out infinite; }
.scn-lords-find-arthur .lord-b { position:absolute; bottom:28%; left:38%; width:20px; height:42px; background: linear-gradient(180deg, #5a5a7e 0%, #3a3a5e 100%); border-radius:40% 40% 30% 30% / 50% 50% 30% 30%; animation:lfa-lord 6s ease-in-out infinite 0.5s; }
.scn-lords-find-arthur .lord-c { position:absolute; bottom:28%; right:30%; width:24px; height:48px; background: linear-gradient(180deg, #6a6a8e 0%, #4a4a6e 100%); border-radius:40% 40% 30% 30% / 50% 50% 30% 30%; animation:lfa-lord 6s ease-in-out infinite 1s; }
.scn-lords-find-arthur .messenger { position:absolute; bottom:25%; left:45%; width:18px; height:30px; background: linear-gradient(180deg, #2a2a4e 0%, #0a0a2e 100%); border-radius:40% 40% 30% 30% / 50% 50% 30% 30%; transform:rotate(10deg); animation:lfa-letter 8s ease-in-out infinite; box-shadow:0 2px 6px rgba(0,0,0,.4); }
.scn-lords-find-arthur .moon { position:absolute; top:5%; right:15%; width:50px; height:50px; background: radial-gradient(circle, #d0d0f0 0%, #8a8abe 40%, transparent 60%); border-radius:50%; box-shadow:0 0 30px 8px #8a8abe; animation:lfa-moon 12s ease-in-out infinite alternate; }
.scn-lords-find-arthur .ground { position:absolute; bottom:0; left:0; right:0; height:25%; background: linear-gradient(180deg, #2a2a3e 0%, #0a0a1e 100%); border-radius:50% 50% 0 0 / 30% 30% 0 0; }
@keyframes lfa-castle { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes lfa-lord { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(2px) rotate(2deg); } 50% { transform: translateX(0) rotate(0deg); } 75% { transform: translateX(-2px) rotate(-2deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes lfa-letter { 0% { transform: rotate(10deg) translateY(0); } 25% { transform: rotate(15deg) translateY(-2px); } 50% { transform: rotate(10deg) translateY(0); } 75% { transform: rotate(5deg) translateY(-1px); } 100% { transform: rotate(10deg) translateY(0); } }
@keyframes lfa-moon { 0% { transform: translate(0,0) scale(1); box-shadow:0 0 30px 8px #8a8abe; } 50% { transform: translate(3px,-2px) scale(1.03); box-shadow:0 0 40px 12px #8a8abe; } 100% { transform: translate(-2px,1px) scale(.97); box-shadow:0 0 25px 6px #8a8abe; } }

/* Hubert Accused */
.scn-hubert-accused { background: linear-gradient(180deg, #0a0a2e 0%, #1a1a3e 40%, #2a2a5e 100%), radial-gradient(ellipse at 50% 25%, #7a7a9e 0%, transparent 60%); }
.scn-hubert-accused .fighter-l { position:absolute; bottom:25%; left:20%; width:30px; height:55px; background: linear-gradient(180deg, #4a4a6e 0%, #2a2a4e 100%); border-radius:40% 40% 30% 30% / 50% 50% 30% 30%; transform-origin: bottom center; animation:ha-fight-l 5s ease-in-out infinite; }
.scn-hubert-accused .fighter-r { position:absolute; bottom:25%; right:20%; width:32px; height:55px; background: linear-gradient(180deg, #5a5a7e 0%, #3a3a5e 100%); border-radius:40% 40% 30% 30% / 50% 50% 30% 30%; transform-origin: bottom center; animation:ha-fight-r 5s ease-in-out infinite; }
.scn-hubert-accused .sword-l { position:absolute; bottom:38%; left:25%; width:5px; height:40px; background: linear-gradient(180deg, #c0c0d0 0%, #8a8a9e 100%); border-radius:2px; transform:rotate(-20deg); transform-origin: bottom left; animation:ha-sword-l 5s ease-in-out infinite; box-shadow:0 0 6px #a0a0b0; }
.scn-hubert-accused .sword-r { position:absolute; bottom:38%; right:25%; width:5px; height:40px; background: linear-gradient(180deg, #c0c0d0 0%, #8a8a9e 100%); border-radius:2px; transform:rotate(20deg); transform-origin: bottom right; animation:ha-sword-r 5s ease-in-out infinite; box-shadow:0 0 6px #a0a0b0; }
.scn-hubert-accused .ground { position:absolute; bottom:0; left:0; right:0; height:25%; background: linear-gradient(180deg, #2a2a3e 0%, #0a0a1e 100%); border-radius:40% 60% 0 0 / 30% 40% 0 0; }
.scn-hubert-accused .moon { position:absolute; top:5%; right:10%; width:45px; height:45px; background: radial-gradient(circle, #d0d0f0 0%, #8a8abe 40%, transparent 60%); border-radius:50%; box-shadow:0 0 25px 6px #8a8abe; animation:ha-moon 10s ease-in-out infinite alternate; }
.scn-hubert-accused .sparks { position:absolute; bottom:40%; left:48%; width:10px; height:10px; background: radial-gradient(circle, #e0e0f0 0%, transparent 70%); border-radius:50%; animation:ha-sparks 2s ease-in-out infinite; }
@keyframes ha-fight-l { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(-2px) rotate(3deg); } 50% { transform: translateX(0) rotate(0deg); } 75% { transform: translateX(2px) rotate(-3deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes ha-fight-r { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(2px) rotate(-3deg); } 50% { transform: translateX(0) rotate(0deg); } 75% { transform: translateX(-2px) rotate(3deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes ha-sword-l { 0% { transform: rotate(-20deg) translateY(0); } 25% { transform: rotate(-15deg) translateY(-2px); } 50% { transform: rotate(-20deg) translateY(0); } 75% { transform: rotate(-25deg) translateY(-1px); } 100% { transform: rotate(-20deg) translateY(0); } }
@keyframes ha-sword-r { 0% { transform: rotate(20deg) translateY(0); } 25% { transform: rotate(15deg) translateY(-2px); } 50% { transform: rotate(20deg) translateY(0); } 75% { transform: rotate(25deg) translateY(-1px); } 100% { transform: rotate(20deg) translateY(0); } }
@keyframes ha-moon { 0% { transform: scale(1); opacity:.9; } 50% { transform: scale(1.03); opacity:1; } 100% { transform: scale(.97); opacity:.85; } }
@keyframes ha-sparks { 0% { opacity:0; transform: scale(1); } 50% { opacity:1; transform: scale(1.5); } 100% { opacity:0; transform: scale(2); } }

/* Lords Join Dauphin */
.scn-lords-join-dauphin { background: linear-gradient(180deg, #0a0a2e 0%, #1a1a3e 50%, #2a2a5e 100%), radial-gradient(ellipse at 30% 10%, #6a6a9e 0%, transparent 70%); }
.scn-lords-join-dauphin .road { position:absolute; bottom:25%; left:0; right:0; height:30%; background: linear-gradient(180deg, #2a2a3e 0%, #0a0a1e 100%); border-radius:50% 50% 0 0 / 40% 40% 0 0; transform:skewX(-10deg); animation:ljd-road 20s linear infinite; }
.scn-lords-join-dauphin .moon { position:absolute; top:5%; left:15%; width:55px; height:55px; background: radial-gradient(circle, #d0d0f0 0%, #8a8abe 40%, transparent 60%); border-radius:50%; box-shadow:0 0 35px 10px #8a8abe; animation:ljd-moon 12s ease-in-out infinite alternate; }
.scn-lords-join-dauphin .figures { position:absolute; bottom:20%; left:10%; width:70%; height:40px; background: linear-gradient(90deg, transparent 0%, #3a3a5e 20%, #4a4a6e 40%, #5a5a7e 60%, transparent 100%); border-radius:30% 30% 50% 50% / 60% 60% 40% 40%; filter:blur(2px); animation:ljd-march 15s linear infinite; }
.scn-lords-join-dauphin .torches { position:absolute; bottom:22%; left:20%; width:8px; height:8px; background: radial-gradient(circle, #d0d0f0 0%, #8a8abe 60%, transparent 100%); border-radius:50%; box-shadow:0 0 12px 4px #8a8abe; animation:ljd-torch 3s ease-in-out infinite; }
.scn-lords-join-dauphin .torches + .torches { left:40%; animation-delay:1s; } /* duplicate via CSS? We'll use another div in HTML: added in template? Actually we only have one .torches div. Let's add a second in JS: "torch-a" and "torch-b" */
.scn-lords-join-dauphin .castle-far { position:absolute; right:5%; bottom:30%; width:60px; height:80px; background: linear-gradient(180deg, #3a3a5e 0%, #1a1a2e 100%); border-radius:30% 30% 0 0 / 50% 50% 0 0; box-shadow:inset 0 8px 12px rgba(0,0,0,.5); animation:ljd-castle 20s ease-in-out infinite alternate; }
.scn-lords-join-dauphin .dust { position:absolute; bottom:20%; left:5%; width:20px; height:10px; background: rgba(100,100,120,.2); border-radius:50%; filter:blur(4px); animation:ljd-dust 10s linear infinite; }
/* We need two torches: modify JS to include two divs: .torch-a and .torch-b, define CSS for each. Let's adjust JS: */
.scn-lords-join-dauphin .torch-a { position:absolute; bottom:22%; left:20%; width:8px; height:8px; background: radial-gradient(circle, #d0d0f0 0%, #8a8abe 60%, transparent 100%); border-radius:50%; box-shadow:0 0 12px 4px #8a8abe; animation:ljd-torch 3s ease-in-out infinite; }
.scn-lords-join-dauphin .torch-b { position:absolute; bottom:22%; left:40%; width:8px; height:8px; background: radial-gradient(circle, #d0d0f0 0%, #8a8abe 60%, transparent 100%); border-radius:50%; box-shadow:0 0 12px 4px #8a8abe; animation:ljd-torch 3s ease-in-out infinite 1s; }
@keyframes ljd-road { 0% { transform: skewX(-10deg) translateX(0); } 100% { transform: skewX(-10deg) translateX(-20px); } }
@keyframes ljd-moon { 0% { transform: translate(0,0) scale(1); } 50% { transform: translate(2px,-3px) scale(1.02); } 100% { transform: translate(-2px,1px) scale(.98); } }
@keyframes ljd-march { 0% { transform: translateX(0) scaleX(1); } 50% { transform: translateX(10px) scaleX(1.05); } 100% { transform: translateX(20px) scaleX(1); } }
@keyframes ljd-torch { 0% { opacity:.7; transform: scale(1); } 50% { opacity:1; transform: scale(1.3); } 100% { opacity:.7; transform: scale(1); } }
@keyframes ljd-castle { 0% { transform: translateY(0); } 50% { transform: translateY(-3px); } 100% { transform: translateY(0); } }
@keyframes ljd-dust { 0% { transform: translateX(0) scale(1); opacity:.3; } 50% { transform: translateX(30px) scale(1.5); opacity:.5; } 100% { transform: translateX(60px) scale(2); opacity:0; } }

.scn-philip-hesitates {
  background: linear-gradient(180deg, #2a1b20 0%, #4a2c2a 40%, #1a0f12 100%), radial-gradient(ellipse at 30% 20%, #e8c080 0%, transparent 60%);
}
.scn-philip-hesitates .window {
  position: absolute; inset: 8% 15% 50% 15%;
  background: linear-gradient(180deg, #c8b06a 0%, #8a7a4a 100%);
  border-radius: 40% 40% 10% 10% / 60% 60% 20% 20%;
  box-shadow: inset 0 0 20px rgba(255,220,140,.3);
  animation: ph-window 6s ease-in-out infinite alternate;
}
.scn-philip-hesitates .sunbeam {
  position: absolute; top: 0; left: 20%; width: 40%; height: 70%;
  background: linear-gradient(135deg, rgba(255,230,160,.35) 0%, transparent 60%);
  filter: blur(8px);
  animation: ph-sunbeam 4s ease-in-out infinite alternate;
}
.scn-philip-hesitates .column-left {
  position: absolute; bottom: 25%; left: 12%; width: 8%; height: 55%;
  background: linear-gradient(90deg, #5a3a2a 0%, #7a4a3a 40%, #5a3a2a 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: 4px 0 8px rgba(0,0,0,.4);
  animation: ph-column 12s ease-in-out infinite;
}
.scn-philip-hesitates .column-right {
  position: absolute; bottom: 25%; right: 12%; width: 8%; height: 55%;
  background: linear-gradient(90deg, #5a3a2a 0%, #7a4a3a 40%, #5a3a2a 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: -4px 0 8px rgba(0,0,0,.4);
  animation: ph-column 12s ease-in-out infinite 6s;
}
.scn-philip-hesitates .figure {
  position: absolute; bottom: 25%; left: 45%; width: 10%; height: 40%;
  background: radial-gradient(ellipse 60% 100% at 50% 0%, #1a1520 0%, #0a0a12 100%);
  border-radius: 50% 50% 30% 30% / 70% 70% 30% 30%;
  transform-origin: bottom center;
  animation: ph-figure 3s ease-in-out infinite alternate;
}
.scn-philip-hesitates .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(180deg, #3a2a1a 0%, #1a120a 100%);
  box-shadow: inset 0 8px 12px rgba(0,0,0,.5);
}
.scn-philip-hesitates .dust-a {
  position: absolute; bottom: 50%; left: 30%; width: 4px; height: 4px;
  background: rgba(255,240,200,.6); border-radius: 50%;
  filter: blur(2px);
  animation: ph-dust 8s linear infinite;
}
.scn-philip-hesitates .dust-b {
  position: absolute; bottom: 45%; left: 50%; width: 3px; height: 3px;
  background: rgba(255,240,200,.5); border-radius: 50%;
  filter: blur(2px);
  animation: ph-dust 10s linear infinite 3s;
}
@keyframes ph-window {
  0% { opacity: .7; transform: scaleY(1); }
  50% { opacity: 1; transform: scaleY(1.02); }
  100% { opacity: .8; transform: scaleY(.98); }
}
@keyframes ph-sunbeam {
  0% { opacity: .4; transform: translateX(-5px) rotate(-1deg); }
  50% { opacity: .7; transform: translateX(3px) rotate(1deg); }
  100% { opacity: .5; transform: translateX(0) rotate(0); }
}
@keyframes ph-column {
  0% { transform: scaleY(1); }
  25% { transform: scaleY(1.01) translateY(-1px); }
  50% { transform: scaleY(.99); }
  75% { transform: scaleY(1) translateY(0); }
  100% { transform: scaleY(1.005); }
}
@keyframes ph-figure {
  0% { transform: translateX(0) translateY(0) rotate(-1deg); }
  30% { transform: translateX(2px) translateY(-2px) rotate(1deg); }
  60% { transform: translateX(-1px) translateY(-1px) rotate(-.5deg); }
  100% { transform: translateX(0) translateY(0) rotate(0); }
}
@keyframes ph-dust {
  0% { transform: translate(0, 0) scale(1); opacity:1; }
  50% { transform: translate(20px, -15px) scale(1.5); opacity:.4; }
  100% { transform: translate(40px, -30px) scale(0.8); opacity:0; }
}

.scn-lewis-decides-war {
  background: linear-gradient(180deg, #1a2030 0%, #2a3040 40%, #1a1820 100%), radial-gradient(ellipse at 50% 30%, #c8a060 0%, transparent 70%);
}
.scn-lewis-decides-war .tent-wall {
  position: absolute; inset: 10% 5% 0 5%;
  background: linear-gradient(135deg, #4a3a2a 0%, #6a4e3a 50%, #3a2a1a 100%);
  border-radius: 40% 40% 0 0 / 60% 60% 0 0;
  box-shadow: inset 0 -10px 20px rgba(0,0,0,.5);
  animation: ld-wall 15s ease-in-out infinite alternate;
}
.scn-lewis-decides-war .figure-male {
  position: absolute; bottom: 20%; left: 30%; width: 12%; height: 45%;
  background: radial-gradient(ellipse 50% 100% at 50% 0%, #2a2a3a 0%, #0a0a12 100%);
  border-radius: 50% 50% 30% 30% / 70% 70% 30% 30%;
  transform-origin: bottom center;
  animation: ld-male 4s ease-in-out infinite alternate;
}
.scn-lewis-decides-war .figure-female {
  position: absolute; bottom: 20%; left: 50%; width: 10%; height: 40%;
  background: radial-gradient(ellipse 50% 100% at 50% 0%, #3a2a3a 0%, #1a0a1a 100%);
  border-radius: 50% 50% 40% 40% / 70% 70% 40% 40%;
  transform-origin: bottom center;
  animation: ld-female 3s ease-in-out infinite alternate 1s;
}
.scn-lewis-decides-war .flag {
  position: absolute; bottom: 55%; left: 42%; width: 4%; height: 25%;
  background: linear-gradient(180deg, #a0461a 0%, #702243 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: 2px 0 6px rgba(0,0,0,.3);
  animation: ld-flag 2s ease-in-out infinite alternate;
}
.scn-lewis-decides-war .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #2a221a 0%, #1a120a 100%);
  box-shadow: inset 0 5px 10px rgba(0,0,0,.6);
}
.scn-lewis-decides-war .trumpet {
  position: absolute; bottom: 28%; left: 38%; width: 8%; height: 6%;
  background: linear-gradient(90deg, #c8a060 0%, #e8c080 40%, #a08040 100%);
  border-radius: 50% 20% 20% 50% / 80% 20% 20% 80%;
  transform: rotate(-15deg);
  box-shadow: 0 2px 4px rgba(0,0,0,.4);
  animation: ld-trumpet 5s ease-in-out infinite;
}
@keyframes ld-wall {
  0% { opacity: .8; transform: scaleY(1); }
  50% { opacity: 1; transform: scaleY(1.02) translateY(-3px); }
  100% { opacity: .85; transform: scaleY(.98); }
}
@keyframes ld-male {
  0% { transform: translateX(0) translateY(0) rotate(-2deg); }
  30% { transform: translateX(3px) translateY(-3px) rotate(2deg); }
  70% { transform: translateX(-2px) translateY(-1px) rotate(-1deg); }
  100% { transform: translateX(0) translateY(0) rotate(0); }
}
@keyframes ld-female {
  0% { transform: translateX(0) translateY(0) rotate(2deg); }
  40% { transform: translateX(-2px) translateY(-2px) rotate(-2deg); }
  80% { transform: translateX(1px) translateY(-1px) rotate(1deg); }
  100% { transform: translateX(0) translateY(0) rotate(0); }
}
@keyframes ld-flag {
  0% { transform: scaleX(1) rotate(2deg); }
  50% { transform: scaleX(1.1) rotate(-2deg); }
  100% { transform: scaleX(0.9) rotate(3deg); }
}
@keyframes ld-trumpet {
  0% { transform: rotate(-15deg) translateX(0); }
  50% { transform: rotate(-10deg) translateX(4px); }
  100% { transform: rotate(-18deg) translateX(0); }
}

.scn-battle-approaches {
  background: linear-gradient(180deg, #3a4a6a 0%, #6a8aba 40%, #1a2a3a 100%), radial-gradient(ellipse at 50% 10%, #e0c080 0%, transparent 50%);
}
.scn-battle-approaches .sky {
  position: absolute; inset: 0 0 50% 0;
  background: linear-gradient(180deg, #4a6a8a 0%, #8ab0d0 60%, transparent 100%);
  animation: ba-sky 20s ease-in-out infinite alternate;
}
.scn-battle-approaches .sun {
  position: absolute; top: 8%; left: 70%; width: 12%; height: 12%;
  background: radial-gradient(circle, #ffd080 0%, #e8b060 50%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 40px 15px #ffd080, 0 0 80px 30px rgba(255,208,128,.3);
  animation: ba-sun 6s ease-in-out infinite alternate;
}
.scn-battle-approaches .hills {
  position: absolute; bottom: 30%; left: 0; right: 0; height: 20%;
  background: linear-gradient(180deg, #3a4a3a 0%, #1a2a1a 100%);
  border-radius: 50% 50% 0 0 / 80% 70% 0 0;
  box-shadow: inset 0 5px 15px rgba(0,0,0,.4);
  animation: ba-hills 18s ease-in-out infinite;
}
.scn-battle-approaches .castle {
  position: absolute; bottom: 30%; left: 20%; width: 18%; height: 25%;
  background: linear-gradient(0deg, #5a4a3a 0%, #7a6a4a 40%, #4a3a2a 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: 4px 0 8px rgba(0,0,0,.5), inset 0 0 20px #2a1a0a;
  animation: ba-castle 12s ease-in-out infinite alternate;
}
.scn-battle-approaches .soldiers {
  position: absolute; bottom: 28%; left: 5%; right: 5%; height: 15%;
  background: repeating-linear-gradient(90deg, #1a1a2a 0px, #1a1a2a 8px, transparent 8px, transparent 12px);
  mask-image: radial-gradient(ellipse 80% 100% at 50% 100%, black 0%, transparent 100%);
  -webkit-mask-image: radial-gradient(ellipse 80% 100% at 50% 100%, black 0%, transparent 100%);
  animation: ba-soldiers 25s linear infinite;
}
.scn-battle-approaches .banner {
  position: absolute; bottom: 50%; left: 22%; width: 3%; height: 18%;
  background: linear-gradient(180deg, #a0461a 0%, #5e1a1d 100%);
  border-radius: 20% 20% 0 0;
  animation: ba-banner 3s ease-in-out infinite alternate;
}
.scn-battle-approaches .dust-cloud {
  position: absolute; bottom: 28%; left: 40%; width: 30%; height: 8%;
  background: radial-gradient(ellipse, rgba(200,180,140,.4) 0%, transparent 100%);
  filter: blur(10px);
  animation: ba-dust 15s linear infinite;
}
@keyframes ba-sky {
  0% { opacity: .7; transform: scaleY(1); }
  50% { opacity: 1; transform: scaleY(1.02); }
  100% { opacity: .8; transform: scaleY(.98); }
}
@keyframes ba-sun {
  0% { transform: scale(1); opacity: .8; }
  50% { transform: scale(1.05); opacity: 1; }
  100% { transform: scale(.95); opacity: .9; }
}
@keyframes ba-hills {
  0% { transform: translateY(0); }
  30% { transform: translateY(-2px); }
  60% { transform: translateY(1px); }
  100% { transform: translateY(0); }
}
@keyframes ba-castle {
  0% { transform: scaleY(1) translateY(0); }
  50% { transform: scaleY(1.02) translateY(-2px); }
  100% { transform: scaleY(.98) translateY(0); }
}
@keyframes ba-soldiers {
  0% { transform: translateX(0); }
  100% { transform: translateX(-20%); }
}
@keyframes ba-banner {
  0% { transform: rotate(-3deg); }
  50% { transform: rotate(3deg); }
  100% { transform: rotate(-2deg); }
}
@keyframes ba-dust {
  0% { transform: translateY(0) scaleX(1); opacity: .3; }
  50% { transform: translateY(-5px) scaleX(1.2); opacity: .6; }
  100% { transform: translateY(0) scaleX(1); opacity: .3; }
}

.scn-battle-austrias-head {
  background: linear-gradient(180deg, #1a1a2e 0%, #2a2a4a 30%, #3a3a5a 70%, #1a1a2e 100%), radial-gradient(ellipse at 50% 20%, #b08050 0%, transparent 60%);
}
.scn-battle-austrias-head .sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #2a2a4a 0%, #4a4a6a 60%, transparent 100%);
  animation: bh-sky 15s ease-in-out infinite alternate;
}
.scn-battle-austrias-head .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #3a3a2a 0%, #1a1a0a 100%);
  box-shadow: inset 0 8px 20px rgba(0,0,0,.6);
  animation: bh-ground 12s ease-in-out infinite alternate;
}
.scn-battle-austrias-head .figure {
  position: absolute; bottom: 25%; left: 35%; width: 14%; height: 45%;
  background: radial-gradient(ellipse 50% 100% at 50% 0%, #2a2a3a 0%, #0a0a12 100%);
  border-radius: 50% 50% 30% 30% / 70% 70% 30% 30%;
  transform-origin: bottom center;
  animation: bh-figure 4s ease-in-out infinite alternate;
}
.scn-battle-austrias-head .head {
  position: absolute; bottom: 10%; left: 50%; width: 6%; height: 6%;
  background: radial-gradient(ellipse, #4a3a2a 0%, #2a1a0a 100%);
  border-radius: 50%;
  box-shadow: 0 0 15px rgba(160,60,30,.3);
  animation: bh-head 6s ease-in-out infinite;
}
.scn-battle-austrias-head .sword {
  position: absolute; bottom: 35%; left: 32%; width: 2%; height: 30%;
  background: linear-gradient(180deg, #8a7a5a 0%, #c8b090 40%, #8a7a5a 100%);
  border-radius: 10% 10% 20% 20%;
  transform: rotate(15deg);
  box-shadow: 0 2px 4px rgba(0,0,0,.4);
  animation: bh-sword 3s ease-in-out infinite alternate;
}
.scn-battle-austrias-head .tent {
  position: absolute; bottom: 20%; right: 10%; width: 20%; height: 30%;
  background: linear-gradient(135deg, #4a3a2a 0%, #6a4e3a 50%, #3a2a1a 100%);
  border-radius: 40% 40% 0 0 / 60% 60% 0 0;
  box-shadow: inset 0 -8px 15px rgba(0,0,0,.5);
  animation: bh-tent 20s ease-in-out infinite;
}
@keyframes bh-sky {
  0% { opacity: .7; }
  50% { opacity: 1; }
  100% { opacity: .8; }
}
@keyframes bh-ground {
  0% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
  100% { transform: translateY(0); }
}
@keyframes bh-figure {
  0% { transform: translateX(0) translateY(0) rotate(-1deg); }
  30% { transform: translateX(2px) translateY(-2px) rotate(1deg); }
  70% { transform: translateX(-1px) translateY(-1px) rotate(-.5deg); }
  100% { transform: translateX(0) translateY(0) rotate(0); }
}
@keyframes bh-head {
  0% { transform: translate(0, 0) rotate(0); }
  30% { transform: translate(2px, -2px) rotate(5deg); }
  60% { transform: translate(-1px, 1px) rotate(-3deg); }
  100% { transform: translate(0, 0) rotate(0); }
}
@keyframes bh-sword {
  0% { transform: rotate(15deg) translateX(0); }
  50% { transform: rotate(10deg) translateX(3px); }
  100% { transform: rotate(18deg) translateX(0); }
}
@keyframes bh-tent {
  0% { opacity: .8; }
  50% { opacity: 1; }
  100% { opacity: .85; }
}

.scn-bastard-mourns-arthur { background: linear-gradient(180deg, #0f0f2a 0%, #1a1a3e 30%, #2c2250 70%, #0f0f2a 100%), radial-gradient(ellipse at 30% 10%, #3a4a6a 0%, transparent 50%); }
.scn-bastard-mourns-arthur .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #14142e 0%, transparent 100%); animation: bm-sky 15s ease-in-out infinite alternate; }
.scn-bastard-mourns-arthur .moon { position:absolute; top:8%; left:70%; width:60px; height:60px; background: radial-gradient(circle, #d8e8ff 0%, #80a0d0 70%); border-radius:50%; box-shadow: 0 0 40px 20px rgba(128,160,208,.5); animation: bm-moon 8s ease-in-out infinite alternate; }
.scn-bastard-mourns-arthur .castle-wall { position:absolute; bottom:0; left:10%; right:10%; height:70%; background: linear-gradient(180deg, #2a2838 0%, #181624 50%, #0e0c1a 100%); border-radius: 20% 20% 0 0 / 10% 10% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,.6); animation: bm-wall 20s ease-in-out infinite; }
.scn-bastard-mourns-arthur .window { position:absolute; bottom:40%; left:50%; width:30px; height:40px; transform:translateX(-50%); background: linear-gradient(135deg, #6a8ab0 0%, #305078 100%); border-radius: 8% 8% 12% 12%; box-shadow: 0 0 30px 10px #3a5a80, 0 0 60px 20px rgba(58,90,128,.3); animation: bm-window-glow 4s ease-in-out infinite alternate; }
.scn-bastard-mourns-arthur .figure-kneeling { position:absolute; bottom:18%; left:38%; width:20px; height:40px; background: linear-gradient(180deg, #1a1a2e 0%, #0a0a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: bm-kneel 6s ease-in-out infinite; }
.scn-bastard-mourns-arthur .figure-lying { position:absolute; bottom:12%; left:50%; width:60px; height:18px; background: linear-gradient(180deg, #2a2a3e 0%, #12121e 100%); border-radius: 50% 50% 40% 40% / 30% 30% 30% 30%; transform: rotate(-5deg); animation: bm-lying 12s ease-in-out infinite; }
.scn-bastard-mourns-arthur .shadow { position:absolute; bottom:5%; left:30%; width:120px; height:20px; background: radial-gradient(ellipse, rgba(0,0,0,.5) 0%, transparent 70%); animation: bm-shadow 10s ease-in-out infinite alternate; }
@keyframes bm-sky { 0% { opacity: .6; } 50% { opacity: .9; } 100% { opacity: .7; } }
@keyframes bm-moon { 0% { transform: scale(1) translate(0,0); opacity: .8; } 50% { transform: scale(1.04) translate(-2px, -1px); opacity: 1; } 100% { transform: scale(0.97) translate(1px, 1px); opacity: .85; } }
@keyframes bm-wall { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes bm-window-glow { 0% { box-shadow:0 0 20px 6px #3a5a80,0 0 40px 12px rgba(58,90,128,.3); } 50% { box-shadow:0 0 40px 14px #5a8ab0,0 0 80px 30px rgba(90,138,176,.5); } 100% { box-shadow:0 0 25px 8px #3a5a80,0 0 50px 16px rgba(58,90,128,.3); } }
@keyframes bm-kneel { 0% { transform: translate(0,0) rotate(-2deg); } 25% { transform: translate(3px,-1px) rotate(1deg); } 50% { transform: translate(6px,0) rotate(-2deg); } 75% { transform: translate(9px,-1px) rotate(1deg); } 100% { transform: translate(12px,0) rotate(0); } }
@keyframes bm-lying { 0%,100% { transform: rotate(-5deg) translateY(0); opacity: .8; } 50% { transform: rotate(-6deg) translateY(-1px); opacity: .95; } }
@keyframes bm-shadow { 0% { opacity: .4; transform: scaleX(1); } 50% { opacity: .7; transform: scaleX(1.1); } 100% { opacity: .5; transform: scaleX(0.95); } }

.scn-john-submits-to-pope { background: linear-gradient(180deg, #f5e6c8 0%, #d4c4a0 40%, #b8a884 100%), radial-gradient(ellipse at 50% 80%, #fff7e0 0%, transparent 50%); }
.scn-john-submits-to-pope .throne { position:absolute; bottom:20%; left:50%; width:120px; height:90px; transform:translateX(-50%); background: linear-gradient(180deg, #c8a868 0%, #947840 100%); border-radius: 12% 12% 8% 8%; box-shadow: 0 8px 16px rgba(0,0,0,.4), inset 0 2px 4px rgba(255,215,0,.4); animation: jp-throne 9s ease-in-out infinite; }
.scn-john-submits-to-pope .crown { position:absolute; bottom:55%; left:50%; width:30px; height:20px; transform:translateX(-50%); background: radial-gradient(ellipse, #f0c060 0%, #b08030 70%); border-radius: 50% 50% 10% 10%; box-shadow: 0 0 24px 8px #c0a040, 0 0 48px 16px rgba(192,160,64,.3); animation: jp-crown 5s ease-in-out infinite alternate; }
.scn-john-submits-to-pope .figure-john { position:absolute; bottom:12%; left:40%; width:22px; height:44px; background: linear-gradient(180deg, #5e1a1d 0%, #3a0e10 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: jp-bow 7s ease-in-out infinite; }
.scn-john-submits-to-pope .figure-pope { position:absolute; bottom:15%; left:58%; width:24px; height:50px; background: linear-gradient(180deg, #f0ead8 0%, #c8b898 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: jp-stand 9s ease-in-out infinite; }
.scn-john-submits-to-pope .floor { position:absolute; bottom:0; left:0; right:0; height:25%; background: linear-gradient(180deg, #c8b088 0%, #a88868 100%); box-shadow: inset 0 6px 12px rgba(0,0,0,.3); animation: jp-floor 15s linear infinite; }
.scn-john-submits-to-pope .column-l { position:absolute; bottom:20%; left:8%; width:18px; height:80%; background: linear-gradient(180deg, #c8b8a0 0%, #a09078 100%); border-radius: 10% 10% 0 0; box-shadow: inset -4px 0 8px rgba(0,0,0,.2); animation: jp-columns 12s ease-in-out infinite alternate; }
.scn-john-submits-to-pope .column-r { position:absolute; bottom:20%; right:8%; width:18px; height:80%; background: linear-gradient(180deg, #c8b8a0 0%, #a09078 100%); border-radius: 10% 10% 0 0; box-shadow: inset 4px 0 8px rgba(0,0,0,.2); animation: jp-columns 12s ease-in-out infinite alternate-reverse; }
.scn-john-submits-to-pope .window-arch { position:absolute; top:5%; left:40%; width:80px; height:60px; background: radial-gradient(ellipse at 50% 100%, #ffe8c0 0%, #d0b890 100%); border-radius: 50% 50% 0 0; box-shadow: inset 0 4px 12px rgba(0,0,0,.15); animation: jp-arch 20s ease-in-out infinite; }
@keyframes jp-throne { 0%,100% { transform: translateX(-50%) translateY(0); } 50% { transform: translateX(-50%) translateY(-2px); } }
@keyframes jp-crown { 0% { box-shadow:0 0 20px 6px #c0a040,0 0 40px 12px rgba(192,160,64,.3); } 50% { box-shadow:0 0 35px 12px #f0d070,0 0 70px 24px rgba(240,208,112,.5); } 100% { box-shadow:0 0 25px 8px #c0a040,0 0 50px 16px rgba(192,160,64,.3); } }
@keyframes jp-bow { 0% { transform: translateX(0) rotate(0); } 25% { transform: translateX(-2px) rotate(-8deg); } 50% { transform: translateX(-4px) rotate(-12deg); } 75% { transform: translateX(-2px) rotate(-8deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes jp-stand { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-2px); } }
@keyframes jp-floor { 0% { background-position: 0 0; } 100% { background-position: 100% 0; } }
@keyframes jp-columns { 0% { transform: scaleY(1); } 50% { transform: scaleY(1.01); } 100% { transform: scaleY(1); } }
@keyframes jp-arch { 0%,100% { opacity: .9; } 50% { opacity: 1; } }

.scn-all-england-yields { background: linear-gradient(180deg, #e8d8b0 0%, #c8b888 30%, #a89868 60%, #887858 100%), radial-gradient(ellipse at 40% 30%, #fff8e0 0%, transparent 50%); }
.scn-all-england-yields .table { position:absolute; bottom:12%; left:15%; right:15%; height:18%; background: linear-gradient(180deg, #8a7a5a 0%, #6a5a3a 100%); border-radius: 4% 4% 8% 8%; box-shadow: 0 6px 12px rgba(0,0,0,.5); animation: ae-table 10s ease-in-out infinite; }
.scn-all-england-yields .map { position:absolute; bottom:22%; left:35%; width:30%; height:10%; background: linear-gradient(135deg, #e0d0a0 0%, #c0b080 100%); border-radius: 2% 4% 6% 2%; box-shadow: 0 2px 6px rgba(0,0,0,.3); animation: ae-map 4s ease-in-out infinite alternate; }
.scn-all-england-yields .figure-left { position:absolute; bottom:8%; left:22%; width:22px; height:48px; background: linear-gradient(180deg, #3a3020 0%, #1a140a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ae-fleft 3s ease-in-out infinite; }
.scn-all-england-yields .figure-right { position:absolute; bottom:10%; right:20%; width:24px; height:50px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: ae-fright 3.5s ease-in-out infinite; }
.scn-all-england-yields .chair-left { position:absolute; bottom:5%; left:18%; width:40px; height:60px; background: linear-gradient(180deg, #7a6a4a 0%, #5a4a2a 100%); border-radius: 20% 20% 10% 10% / 40% 40% 20% 20%; box-shadow: 0 4px 8px rgba(0,0,0,.4); animation: ae-chairl 12s ease-in-out infinite; }
.scn-all-england-yields .chair-right { position:absolute; bottom:7%; right:16%; width:42px; height:58px; background: linear-gradient(180deg, #8a7a5a 0%, #6a5a3a 100%); border-radius: 20% 20% 10% 10% / 40% 40% 20% 20%; box-shadow: 0 4px 8px rgba(0,0,0,.4); animation: ae-chairr 12s ease-in-out infinite alternate; }
.scn-all-england-yields .candle { position:absolute; bottom:28%; left:52%; width:8px; height:28px; background: linear-gradient(180deg, #f0e0c0 0%, #c8b898 100%); border-radius: 2px 2px 4px 4px; box-shadow: inset 0 -4px 6px rgba(0,0,0,.2); animation: ae-candle 8s ease-in-out infinite; }
.scn-all-england-yields .flame { position:absolute; bottom:48%; left:50%; width:10px; height:14px; transform:translateX(-50%); background: radial-gradient(ellipse, #ffd080 0%, #ffa040 60%, transparent 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; box-shadow: 0 0 20px 8px #ffa040, 0 0 40px 16px rgba(255,160,64,.4); animation: ae-flame 1.5s ease-in-out infinite alternate; }
@keyframes ae-table { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-2px); } }
@keyframes ae-map { 0% { transform: scale(1) rotate(0); } 50% { transform: scale(1.02) rotate(-0.5deg); } 100% { transform: scale(0.98) rotate(0.5deg); } }
@keyframes ae-fleft { 0% { transform: translateX(0) rotate(0); } 25% { transform: translateX(2px) rotate(-3deg); } 50% { transform: translateX(4px) rotate(0); } 75% { transform: translateX(2px) rotate(3deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes ae-fright { 0% { transform: translateX(0) rotate(0); } 33% { transform: translateX(-3px) rotate(2deg); } 66% { transform: translateX(2px) rotate(-2deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes ae-chairl { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-1px); } }
@keyframes ae-chairr { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-1px); } }
@keyframes ae-candle { 0%,100% { opacity: .9; } 50% { opacity: 1; } }
@keyframes ae-flame { 0% { transform: translateX(-50%) scale(1) rotate(0); } 50% { transform: translateX(-50%) scale(1.15) rotate(5deg); } 100% { transform: translateX(-50%) scale(0.9) rotate(-5deg); } }

.scn-lewis-camp { background: linear-gradient(180deg, #e7d9b5 0%, #cbb999 40%, #a58c6e 100%), radial-gradient(ellipse at 50% 70%, #fce8c0 0%, transparent 50%); }
.scn-lewis-camp .tent-canvas { position:absolute; top:0; left:0; right:0; height:35%; background: linear-gradient(180deg, #d4c4a0 0%, #b8a884 100%); border-radius: 0 0 40% 40% / 0 0 20% 20%; box-shadow: inset 0 -10px 20px rgba(0,0,0,.15); animation: lc-canvas 25s ease-in-out infinite; }
.scn-lewis-camp .desk { position:absolute; bottom:18%; left:25%; right:25%; height:14%; background: linear-gradient(180deg, #a09070 0%, #807050 100%); border-radius: 4% 4% 6% 6%; box-shadow: 0 4px 8px rgba(0,0,0,.4); animation: lc-desk 14s ease-in-out infinite; }
.scn-lewis-camp .figure-scribe { position:absolute; bottom:12%; left:42%; width:20px; height:44px; background: linear-gradient(180deg, #3a3020 0%, #1a140a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: lc-scribe 8s ease-in-out infinite; }
.scn-lewis-camp .paper { position:absolute; bottom:28%; left:43%; width:14%; height:8%; background: linear-gradient(135deg, #f5edd0 0%, #d5c5a0 100%); border-radius: 2% 4% 6% 2%; box-shadow: 0 2px 4px rgba(0,0,0,.2); animation: lc-paper 6s ease-in-out infinite alternate; }
.scn-lewis-camp .inkwell { position:absolute; bottom:26%; left:56%; width:12px; height:16px; background: radial-gradient(ellipse, #2a2a3a 0%, #0a0a1a 100%); border-radius: 50% 50% 20% 20% / 60% 60% 20% 20%; box-shadow: 0 2px 4px rgba(0,0,0,.5); animation: lc-inkwell 12s ease-in-out infinite; }
.scn-lewis-camp .lantern { position:absolute; bottom:22%; left:20%; width:14px; height:22px; background: linear-gradient(180deg, #c8a868 0%, #a08040 100%); border-radius: 20% 20% 30% 30%; box-shadow: inset 0 -2px 6px rgba(0,0,0,.3); animation: lc-lantern 5s ease-in-out infinite alternate; }
.scn-lewis-camp .lamp-glow { position:absolute; bottom:18%; left:18%; width:50px; height:50px; background: radial-gradient(circle, rgba(255,200,80,.4) 0%, rgba(255,200,80,.1) 40%, transparent 70%); border-radius: 50%; animation: lc-glow 3s ease-in-out infinite alternate; }
.scn-lewis-camp .shadow { position:absolute; bottom:6%; left:30%; width:100px; height:16px; background: radial-gradient(ellipse, rgba(0,0,0,.4) 0%, transparent 70%); animation: lc-shadow 10s ease-in-out infinite; }
@keyframes lc-canvas { 0% { transform: translateY(0) skewX(0); } 50% { transform: translateY(-3px) skewX(1deg); } 100% { transform: translateY(0) skewX(-0.5deg); } }
@keyframes lc-desk { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-2px); } }
@keyframes lc-scribe { 0% { transform: translate(0,0) rotate(-2deg); } 25% { transform: translate(2px,-1px) rotate(0); } 50% { transform: translate(4px,0) rotate(2deg); } 75% { transform: translate(2px,-1px) rotate(0); } 100% { transform: translate(0,0) rotate(-2deg); } }
@keyframes lc-paper { 0% { transform: scale(1) rotate(0); } 50% { transform: scale(1.03) rotate(1deg); } 100% { transform: scale(0.97) rotate(-1deg); } }
@keyframes lc-inkwell { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-1px); } }
@keyframes lc-lantern { 0% { box-shadow: inset 0 -2px 6px rgba(0,0,0,.3), 0 0 12px 4px #d0a050; } 50% { box-shadow: inset 0 -2px 6px rgba(0,0,0,.3), 0 0 20px 8px #f0b060; } 100% { box-shadow: inset 0 -2px 6px rgba(0,0,0,.3), 0 0 14px 5px #d0a050; } }
@keyframes lc-glow { 0% { opacity: .6; transform: scale(1); } 50% { opacity: 1; transform: scale(1.05); } 100% { opacity: .7; transform: scale(0.95); } }
@keyframes lc-shadow { 0%,100% { opacity: .4; transform: scaleX(1); } 50% { opacity: .6; transform: scaleX(1.08); } }
/* end per-scene blocks */

/* auto-stub: parent tag-classes flagged by CSS audit */
.sil { position: absolute; pointer-events: none; }

/* ============ tier S ============ */
/* per-scene blocks (EXP step_scenes) */
.scn-rebels-return-lewis-defection { background: linear-gradient(180deg, #1a1028 0%, #2a1a30 40%, #3a2028 100%), radial-gradient(ellipse at 40% 50%, #2a1a30 0%, transparent 70%); }
.scn-rebels-return-lewis-defection .wall-back { position:absolute; inset:0 0 25% 0; background: linear-gradient(180deg, #3a3030 0%, #2a2020 100%); box-shadow: inset 0 0 60px rgba(0,0,0,.6); }
.scn-rebels-return-lewis-defection .wall-left { position:absolute; inset:0 50% 25% auto; background: linear-gradient(180deg, #4a3838 0%, #2a1e1e 100%); transform: skewY(4deg) scaleX(.85); transform-origin: bottom right; }
.scn-rebels-return-lewis-defection .wall-right { position:absolute; inset:0 auto 25% 50%; background: linear-gradient(180deg, #3a2a2a 0%, #1a1212 100%); transform: skewY(-4deg) scaleX(.85); transform-origin: bottom left; }
.scn-rebels-return-lewis-defection .floor { position:absolute; bottom:0; left:0; right:0; height:25%; background: linear-gradient(180deg, #4a3a3a 0%, #2a1a1a 100%); box-shadow: inset 0 8px 20px rgba(0,0,0,.5); }
.scn-rebels-return-lewis-defection .throne { position:absolute; bottom:25%; left:50%; transform:translateX(-50%); width:60px; height:90px; background: linear-gradient(180deg, #6a4a3a 0%, #3a2a1a 100%); border-radius: 10% 10% 4% 4%; box-shadow: 0 4px 8px rgba(0,0,0,.7); }
.scn-rebels-return-lewis-defection .figure-dying { position:absolute; bottom:28%; left:47%; width:20px; height:40px; background: radial-gradient(ellipse at 50% 30%, #2a1e1e 0%, #0a0606 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; transform: rotate(-15deg); animation: re-figure 6s ease-in-out infinite; }
.scn-rebels-return-lewis-defection .figure-standing { position:absolute; bottom:30%; left:35%; width:18px; height:50px; background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: re-stand 4s ease-in-out infinite alternate; }
.scn-rebels-return-lewis-defection .torch { position:absolute; bottom:42%; left:25%; width:8px; height:16px; background: linear-gradient(180deg, #8a6a3a 0%, #4a3a1a 100%); border-radius: 4px; box-shadow: 0 0 12px 4px #b07040; animation: re-torch 2s ease-in-out infinite alternate; }
.scn-rebels-return-lewis-defection .glow-overlay { position:absolute; bottom:35%; left:20%; width:80px; height:80px; background: radial-gradient(circle, rgba(200,160,100,.15) 0%, transparent 70%); pointer-events: none; animation: re-glow 3s ease-in-out infinite alternate; }
@keyframes re-figure { 0% { transform: rotate(-15deg) scaleY(1); opacity:.8 } 50% { transform: rotate(-12deg) scaleY(.95); opacity:1 } 100% { transform: rotate(-15deg) scaleY(1); opacity:.8 } }
@keyframes re-stand { 0% { transform: translateY(0) rotate(0) } 100% { transform: translateY(-2px) rotate(2deg) } }
@keyframes re-torch { 0% { box-shadow: 0 0 8px 2px #b07040; } 50% { box-shadow: 0 0 16px 6px #d09050; } 100% { box-shadow: 0 0 10px 3px #b07040; } }
@keyframes re-glow { 0% { opacity:.3; transform: scale(1); } 100% { opacity:.6; transform: scale(1.2); } }

.scn-john-dies-bastard-unity { background: linear-gradient(180deg, #f8e8c0 0%, #e0c888 50%, #c8a868 100%), radial-gradient(ellipse at 50% 0%, #fff8e0 0%, transparent 60%); }
.scn-john-dies-bastard-unity .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #aad4e0 0%, #c8e8f0 100%); animation: jd-sky 20s ease-in-out infinite alternate; }
.scn-john-dies-bastard-unity .window-frame { position:absolute; top:10%; left:50%; transform:translateX(-50%); width:120px; height:180px; background: linear-gradient(180deg, #8a6a4a 0%, #5a3a2a 100%); border-radius: 8% 8% 4% 4%; box-shadow: 0 4px 12px rgba(0,0,0,.3); }
.scn-john-dies-bastard-unity .window-light { position:absolute; top:14%; left:50%; transform:translateX(-50%); width:96px; height:144px; background: radial-gradient(ellipse at 50% 30%, #fff8d0 0%, #e8d8a0 70%, transparent 100%); animation: jd-light 6s ease-in-out infinite alternate; }
.scn-john-dies-bastard-unity .bed { position:absolute; bottom:18%; left:50%; transform:translateX(-50%); width:100px; height:40px; background: linear-gradient(180deg, #6a5a4a 0%, #3a2a1a 100%); border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,.4); }
.scn-john-dies-bastard-unity .figure-king { position:absolute; bottom:20%; left:45%; width:22px; height:50px; background: radial-gradient(ellipse at 50% 30%, #4a3a3a 0%, #1a1212 100%); border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%; transform: rotate(-10deg); animation: jd-king 5s ease-in-out infinite; }
.scn-john-dies-bastard-unity .figure-bastard { position:absolute; bottom:22%; left:60%; width:20px; height:55px; background: linear-gradient(180deg, #3a2a4a 0%, #1a122a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: jd-bastard 8s ease-in-out infinite alternate; }
.scn-john-dies-bastard-unity .crest { position:absolute; top:25%; left:50%; transform:translateX(-50%); width:30px; height:40px; background: radial-gradient(circle at 50% 50%, #c8a050 0%, #8a6a30 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: jd-crest 4s ease-in-out infinite; }
@keyframes jd-sky { 0% { opacity:.85; } 50% { opacity:1; } 100% { opacity:.9; } }
@keyframes jd-light { 0% { opacity:.7; transform:translateX(-50%) scale(1); } 50% { opacity:1; transform:translateX(-50%) scale(1.02); } 100% { opacity:.8; transform:translateX(-50%) scale(.98); } }
@keyframes jd-king { 0% { transform: rotate(-10deg) translateY(0); } 50% { transform: rotate(-8deg) translateY(-1px); } 100% { transform: rotate(-10deg) translateY(0); } }
@keyframes jd-bastard { 0% { transform: translateY(0) rotate(0); } 100% { transform: translateY(-3px) rotate(2deg); } }
@keyframes jd-crest { 0% { transform:translateX(-50%) scale(1); opacity:.8; } 50% { transform:translateX(-50%) scale(1.1); opacity:1; } 100% { transform:translateX(-50%) scale(1); opacity:.8; } }

.scn-constance-grief-tent {
  background:
    linear-gradient(180deg, #1a1a1a 0%, #2a1f14 40%, #3a2818 100%),
    radial-gradient(ellipse at 50% 60%, #4a3020 0%, transparent 80%);
}

.scn-constance-grief-tent .tent-wall {
  position: absolute;
  inset: 0;
  background: linear-gradient(160deg, #3a2818 0%, #1f140e 100%);
  clip-path: polygon(0 0, 100% 0, 85% 100%, 15% 100%);
  animation: cgt-wall 12s ease-in-out infinite;
}
.scn-constance-grief-tent .tent-flap {
  position: absolute;
  left: 35%;
  top: 0;
  width: 30%;
  height: 100%;
  background: linear-gradient(180deg, #2a1f14 0%, #1a100a 100%);
  clip-path: polygon(0 0, 100% 0, 80% 100%, 20% 100%);
  transform-origin: top center;
  animation: cgt-flap 8s ease-in-out infinite alternate;
}
.scn-constance-grief-tent .brazier {
  position: absolute;
  bottom: 30%;
  left: 50%;
  width: 50px;
  height: 40px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #5a3a20 0%, #2a1a0e 100%);
  border-radius: 50% 50% 30% 30%;
  box-shadow: inset 0 -6px 10px rgba(0,0,0,0.6);
  animation: cgt-brazier 4s ease-in-out infinite;
}
.scn-constance-grief-tent .brazier-glow {
  position: absolute;
  bottom: 35%;
  left: 50%;
  width: 80px;
  height: 80px;
  transform: translateX(-50%);
  background: radial-gradient(circle, #c08040 0%, #a06030 30%, transparent 70%);
  border-radius: 50%;
  opacity: 0.8;
  animation: cgt-glow 3s ease-in-out infinite alternate;
}
.scn-constance-grief-tent .figure-constance {
  position: absolute;
  bottom: 20%;
  left: 40%;
  width: 30px;
  height: 70px;
  background: linear-gradient(180deg, #1a1a1a 0%, #0f0f0f 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cgt-figure 5s ease-in-out infinite;
}
.scn-constance-grief-tent .shadow {
  position: absolute;
  bottom: 15%;
  left: 35%;
  width: 40%;
  height: 30px;
  background: radial-gradient(ellipse, rgba(0,0,0,0.6) 0%, transparent 100%);
  animation: cgt-shadow 6s ease-in-out infinite alternate;
}
.scn-constance-grief-tent .dust {
  position: absolute;
  top: 20%;
  left: 20%;
  width: 10px;
  height: 10px;
  background: radial-gradient(circle, rgba(200,180,140,0.3), transparent);
  border-radius: 50%;
  animation: cgt-dust 20s linear infinite;
}

@keyframes cgt-wall {
  0%   { opacity: 0.9; }
  50%  { opacity: 1; }
  100% { opacity: 0.85; }
}
@keyframes cgt-flap {
  0%   { transform: rotateY(0deg); }
  50%  { transform: rotateY(8deg); }
  100% { transform: rotateY(0deg); }
}
@keyframes cgt-brazier {
  0%   { transform: translateX(-50%) scaleY(1); }
  50%  { transform: translateX(-50%) scaleY(1.05); }
  100% { transform: translateX(-50%) scaleY(1); }
}
@keyframes cgt-glow {
  0%   { opacity: 0.6; transform: translateX(-50%) scale(1); }
  50%  { opacity: 1; transform: translateX(-50%) scale(1.1); }
  100% { opacity: 0.7; transform: translateX(-50%) scale(1); }
}
@keyframes cgt-figure {
  0%   { transform: translateY(0) rotate(-1deg); }
  25%  { transform: translateY(-2px) rotate(1deg); }
  50%  { transform: translateY(0) rotate(-1deg); }
  75%  { transform: translateY(-1px) rotate(2deg); }
  100% { transform: translateY(0) rotate(0); }
}
@keyframes cgt-shadow {
  0%   { opacity: 0.5; transform: scaleX(1); }
  100% { opacity: 0.8; transform: scaleX(1.2); }
}
@keyframes cgt-dust {
  0%   { transform: translateY(0) translateX(0) scale(1); opacity: 0; }
  10%  { opacity: 0.5; }
  50%  { transform: translateY(-40px) translateX(20px) scale(1.5); opacity: 0.2; }
  100% { transform: translateY(-80px) translateX(40px) scale(2); opacity: 0; }
}

.scn-item-hot-irons {
  background:
    linear-gradient(180deg, #1a1410 0%, #2a1e14 50%, #1a0e0a 100%),
    radial-gradient(ellipse at 50% 70%, #3a2218 0%, transparent 70%);
}

.scn-item-hot-irons .tent-dark {
  position: absolute;
  inset: 0;
  background: linear-gradient(160deg, #2a1e14 0%, #0f0a07 100%);
  animation: ihi-dark 10s ease-in-out infinite alternate;
}
.scn-item-hot-irons .table {
  position: absolute;
  bottom: 25%;
  left: 20%;
  width: 60%;
  height: 20px;
  background: linear-gradient(180deg, #4a3020 0%, #2a1a0a 100%);
  border-radius: 4px;
  box-shadow: 0 4px 8px rgba(0,0,0,0.7);
  animation: ihi-table 6s ease-in-out infinite;
}
.scn-item-hot-irons .irons {
  position: absolute;
  bottom: 30%;
  left: 40%;
  width: 40px;
  height: 30px;
  background: linear-gradient(180deg, #8a3a20 0%, #c06030 100%);
  border-radius: 20% 20% 40% 40%;
  box-shadow: 0 0 20px 6px rgba(192,96,48,0.5);
  animation: ihi-irons 2s ease-in-out infinite alternate;
}
.scn-item-hot-irons .irons-glow {
  position: absolute;
  bottom: 28%;
  left: 38%;
  width: 60px;
  height: 60px;
  background: radial-gradient(circle, #d08040 0%, #a05020 40%, transparent 80%);
  border-radius: 50%;
  opacity: 0.7;
  animation: ihi-glow 2.5s ease-in-out infinite alternate;
}
.scn-item-hot-irons .executioner {
  position: absolute;
  bottom: 20%;
  right: 25%;
  width: 40px;
  height: 80px;
  background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: ihi-exec 4s ease-in-out infinite;
}
.scn-item-hot-irons .arthur {
  position: absolute;
  bottom: 20%;
  left: 35%;
  width: 28px;
  height: 65px;
  background: linear-gradient(180deg, #2a1a1a 0%, #1a0e0e 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ihi-arthur 5s ease-in-out infinite;
}
.scn-item-hot-irons .chain {
  position: absolute;
  bottom: 27%;
  left: 32%;
  width: 12px;
  height: 30px;
  background: repeating-linear-gradient(0deg, #6a6a6a 0px, #6a6a6a 4px, transparent 4px, transparent 8px);
  border-radius: 2px;
  animation: ihi-chain 3s ease-in-out infinite;
}

@keyframes ihi-dark {
  0%   { opacity: 0.9; }
  50%  { opacity: 1; }
  100% { opacity: 0.85; }
}
@keyframes ihi-table {
  0%   { transform: translateY(0); }
  50%  { transform: translateY(-2px); }
  100% { transform: translateY(0); }
}
@keyframes ihi-irons {
  0%   { transform: scale(1); opacity: 0.8; }
  50%  { transform: scale(1.05); opacity: 1; }
  100% { transform: scale(1); opacity: 0.9; }
}
@keyframes ihi-glow {
  0%   { opacity: 0.5; transform: scale(1); }
  50%  { opacity: 1; transform: scale(1.1); }
  100% { opacity: 0.6; transform: scale(1); }
}
@keyframes ihi-exec {
  0%   { transform: translateY(0) rotate(-2deg); }
  25%  { transform: translateY(-1px) rotate(2deg); }
  50%  { transform: translateY(0) rotate(-1deg); }
  75%  { transform: translateY(-2px) rotate(1deg); }
  100% { transform: translateY(0) rotate(0); }
}
@keyframes ihi-arthur {
  0%   { transform: translateY(0) rotate(2deg); }
  50%  { transform: translateY(-2px) rotate(-1deg); }
  100% { transform: translateY(0) rotate(0); }
}
@keyframes ihi-chain {
  0%   { transform: translateY(0) rotate(-5deg); }
  50%  { transform: translateY(-2px) rotate(5deg); }
  100% { transform: translateY(0) rotate(0); }
}

.scn-john-second-crowning {
  background:
    linear-gradient(180deg, #1a141a 0%, #2a2028 50%, #3a2a34 100%),
    radial-gradient(ellipse at 50% 40%, #4a3a44 0%, transparent 70%);
}

.scn-john-second-crowning .castle-room {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, #3a2a34 0%, #1a101a 100%);
  animation: jsc-room 14s ease-in-out infinite alternate;
}
.scn-john-second-crowning .throne {
  position: absolute;
  bottom: 20%;
  left: 50%;
  width: 80px;
  height: 90px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #5a3a3a 0%, #3a1a1a 100%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 0 8px 16px rgba(0,0,0,0.6);
  animation: jsc-throne 8s ease-in-out infinite;
}
.scn-john-second-crowning .figure-john {
  position: absolute;
  bottom: 22%;
  left: 50%;
  width: 32px;
  height: 80px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #4a2a2a 0%, #2a1414 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: jsc-john 4s ease-in-out infinite;
}
.scn-john-second-crowning .crown {
  position: absolute;
  bottom: 62%;
  left: 50%;
  width: 30px;
  height: 12px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #c0a050 0%, #8a7020 100%);
  border-radius: 20% 20% 40% 40%;
  box-shadow: 0 0 12px 4px rgba(192,160,80,0.4);
  animation: jsc-crown 3s ease-in-out infinite alternate;
}
.scn-john-second-crowning .figure-bishop {
  position: absolute;
  bottom: 22%;
  left: 30%;
  width: 28px;
  height: 75px;
  background: linear-gradient(180deg, #2a1a2a 0%, #1a0e1a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: jsc-bishop 5s ease-in-out infinite;
}
.scn-john-second-crowning .window-light {
  position: absolute;
  top: 10%;
  left: 20%;
  width: 40px;
  height: 60px;
  background: linear-gradient(180deg, rgba(200,180,160,0.4) 0%, rgba(255,230,200,0.1) 100%);
  border-radius: 10% 10% 20% 20%;
  box-shadow: 0 0 30px 10px rgba(255,230,200,0.2);
  animation: jsc-window 6s ease-in-out infinite alternate;
}
.scn-john-second-crowning .tapestry {
  position: absolute;
  top: 5%;
  right: 10%;
  width: 60px;
  height: 90px;
  background: linear-gradient(180deg, #5a3a2a 0%, #2a1a14 100%);
  border-radius: 4px;
  box-shadow: inset 0 0 10px rgba(0,0,0,0.5);
  animation: jsc-tapestry 10s ease-in-out infinite;
}

@keyframes jsc-room {
  0%   { opacity: 0.9; }
  50%  { opacity: 1; }
  100% { opacity: 0.85; }
}
@keyframes jsc-throne {
  0%   { transform: translateX(-50%) scaleY(1); }
  50%  { transform: translateX(-50%) scaleY(1.02); }
  100% { transform: translateX(-50%) scaleY(1); }
}
@keyframes jsc-john {
  0%   { transform: translateX(-50%) translateY(0) rotate(-1deg); }
  25%  { transform: translateX(-50%) translateY(-1px) rotate(1deg); }
  50%  { transform: translateX(-50%) translateY(0) rotate(-1deg); }
  75%  { transform: translateX(-50%) translateY(-2px) rotate(2deg); }
  100% { transform: translateX(-50%) translateY(0) rotate(0); }
}
@keyframes jsc-crown {
  0%   { transform: translateX(-50%) rotate(0deg) scale(1); }
  50%  { transform: translateX(-50%) rotate(5deg) scale(1.1); }
  100% { transform: translateX(-50%) rotate(0deg) scale(1); }
}
@keyframes jsc-bishop {
  0%   { transform: translateY(0) rotate(0deg); }
  50%  { transform: translateY(-1px) rotate(-3deg); }
  100% { transform: translateY(0) rotate(0deg); }
}
@keyframes jsc-window {
  0%   { opacity: 0.4; }
  50%  { opacity: 0.8; }
  100% { opacity: 0.5; }
}
@keyframes jsc-tapestry {
  0%   { transform: scaleY(1); }
  50%  { transform: scaleY(1.05); }
  100% { transform: scaleY(1); }
}

.scn-french-landing-news {
  background:
    linear-gradient(180deg, #1a1418 0%, #2a1e22 50%, #3a2a2e 100%),
    radial-gradient(ellipse at 50% 60%, #4a3034 0%, transparent 70%);
}

.scn-french-landing-news .room-dark {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, #3a2a2e 0%, #1a0e12 100%);
  animation: fln-room 12s ease-in-out infinite alternate;
}
.scn-french-landing-news .figure-hubert {
  position: absolute;
  bottom: 22%;
  left: 45%;
  width: 32px;
  height: 78px;
  background: linear-gradient(180deg, #2a1a1e 0%, #1a0e10 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: fln-hubert 4s ease-in-out infinite;
}
.scn-french-landing-news .figure-messenger {
  position: absolute;
  bottom: 22%;
  left: 25%;
  width: 28px;
  height: 70px;
  background: linear-gradient(180deg, #3a2a2a 0%, #1a1414 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: fln-messenger 5s ease-in-out infinite;
}
.scn-french-landing-news .door {
  position: absolute;
  left: 15%;
  bottom: 10%;
  width: 50px;
  height: 80px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1e14 100%);
  border-radius: 4px;
  box-shadow: inset 0 0 10px rgba(0,0,0,0.7);
  animation: fln-door 7s ease-in-out infinite;
}
.scn-french-landing-news .scroll {
  position: absolute;
  bottom: 30%;
  left: 35%;
  width: 20px;
  height: 30px;
  background: linear-gradient(180deg, #c0a080 0%, #a08060 100%);
  border-radius: 10% 10% 20% 20%;
  transform: rotate(-15deg);
  box-shadow: 0 2px 6px rgba(0,0,0,0.4);
  animation: fln-scroll 3s ease-in-out infinite alternate;
}
.scn-french-landing-news .shadow-guard {
  position: absolute;
  bottom: 15%;
  left: 60%;
  width: 30px;
  height: 60px;
  background: rgba(0,0,0,0.3);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  animation: fln-guard 8s ease-in-out infinite alternate;
}
.scn-french-landing-news .torch {
  position: absolute;
  top: 20%;
  right: 15%;
  width: 8px;
  height: 30px;
  background: linear-gradient(180deg, #c08030 0%, #a05010 50%, #5a2a08 100%);
  border-radius: 20% 20% 40% 40%;
  box-shadow: 0 0 24px 8px rgba(192,128,48,0.6);
  animation: fln-torch 2s ease-in-out infinite alternate;
}

@keyframes fln-room {
  0%   { opacity: 0.9; }
  50%  { opacity: 1; }
  100% { opacity: 0.85; }
}
@keyframes fln-hubert {
  0%   { transform: translateY(0) rotate(-2deg); }
  25%  { transform: translateY(-1px) rotate(2deg); }
  50%  { transform: translateY(0) rotate(-1deg); }
  75%  { transform: translateY(-2px) rotate(1deg); }
  100% { transform: translateY(0) rotate(0); }
}
@keyframes fln-messenger {
  0%   { transform: translateY(0) rotate(1deg); }
  50%  { transform: translateY(-3px) rotate(-2deg); }
  100% { transform: translateY(0) rotate(0); }
}
@keyframes fln-door {
  0%   { transform: scaleX(1); }
  50%  { transform: scaleX(1.05); }
  100% { transform: scaleX(1); }
}
@keyframes fln-scroll {
  0%   { transform: rotate(-15deg) translateY(0); }
  50%  { transform: rotate(-10deg) translateY(-2px); }
  100% { transform: rotate(-15deg) translateY(0); }
}
@keyframes fln-guard {
  0%   { opacity: 0.3; }
  50%  { opacity: 0.6; }
  100% { opacity: 0.4; }
}
@keyframes fln-torch {
  0%   { transform: scale(1); opacity: 0.8; }
  50%  { transform: scale(1.1); opacity: 1; }
  100% { transform: scale(1); opacity: 0.9; }
}

/* item-lions-skin – tense, sunlit */
.scn-item-lions-skin {
  background:
    linear-gradient(180deg, #f5d9a0 0%, #c8a06a 30%, #8a6030 70%, #4a2a10 100%),
    radial-gradient(ellipse at 50% 0%, #ffe0a0 0%, transparent 60%);
}
.scn-item-lions-skin .ground {
  position:absolute; bottom:0; left:0; right:0; height:40%;
  background: linear-gradient(180deg, #7a4a20 0%, #3a1a08 100%);
  border-radius: 30% 70% 0 0 / 40% 60% 0 0;
  box-shadow: inset 0 -10px 30px rgba(0,0,0,.6);
  animation: li1-ground 8s ease-in-out infinite alternate;
}
.scn-item-lions-skin .sun-glow {
  position:absolute; top:5%; left:35%; width:150px; height:150px;
  background: radial-gradient(circle, rgba(255,200,100,0.8) 0%, rgba(255,180,60,0.3) 50%, transparent 70%);
  border-radius:50%;
  filter: blur(30px);
  animation: li1-sun 4s ease-in-out infinite alternate;
}
.scn-item-lions-skin .king-left {
  position:absolute; bottom:38%; left:20%; width:30px; height:70px;
  background: linear-gradient(180deg, #2a1a0a 0%, #0a0500 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  box-shadow: -5px 0 10px rgba(0,0,0,.5);
  animation: li1-figure 0.8s ease-in-out infinite alternate;
}
.scn-item-lions-skin .king-right {
  position:absolute; bottom:38%; right:22%; width:30px; height:70px;
  background: linear-gradient(180deg, #2a1a0a 0%, #0a0500 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  box-shadow: 5px 0 10px rgba(0,0,0,.5);
  animation: li1-figure 0.8s ease-in-out infinite alternate-reverse;
}
.scn-item-lions-skin .lion-skin {
  position:absolute; bottom:40%; left:50%; width:50px; height:35px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #b08050 0%, #8a6030 50%, #5a3a1a 100%);
  border-radius: 20% 80% 30% 70% / 50% 50% 50% 50%;
  box-shadow: 0 4px 8px rgba(0,0,0,.4);
  animation: li1-skin 3s ease-in-out infinite alternate;
}
.scn-item-lions-skin .spears-bg {
  position:absolute; top:10%; left:10%; right:10%; bottom:45%;
  background:
    linear-gradient(90deg, transparent 48%, #6a4a20 48%, #6a4a20 50%, transparent 50%),
    linear-gradient(90deg, transparent 28%, #6a4a20 28%, #6a4a20 30%, transparent 30%),
    linear-gradient(90deg, transparent 68%, #6a4a20 68%, #6a4a20 70%, transparent 70%);
  background-size: 100% 100%, 100% 100%, 100% 100%;
  animation: li1-spears 0.5s ease-in-out infinite alternate;
}
@keyframes li1-ground { 0% { transform: skewX(-2deg); } 50% { transform: skewX(2deg); } 100% { transform: skewX(-1deg); } }
@keyframes li1-sun { 0% { opacity:0.7; transform: scale(1); } 50% { opacity:1; transform: scale(1.05); } 100% { opacity:0.8; transform: scale(0.98); } }
@keyframes li1-figure { 0% { transform: translateY(0) rotate(-2deg); } 50% { transform: translateY(-4px) rotate(3deg); } 100% { transform: translateY(0) rotate(-1deg); } }
@keyframes li1-skin { 0% { transform: translateX(-50%) rotate(-5deg); } 50% { transform: translateX(-50%) rotate(5deg); } 100% { transform: translateX(-50%) rotate(-2deg); } }
@keyframes li1-spears { 0% { opacity:0.9; } 50% { opacity:1; } 100% { opacity:0.8; } }

/* constance-rails-citizens – dark, sunlit */
.scn-constance-rails-citizens {
  background:
    linear-gradient(180deg, #4a3a20 0%, #6a5030 30%, #8a7040 70%, #a08850 100%),
    radial-gradient(ellipse at 50% 100%, #b09860 0%, transparent 60%);
}
.scn-constance-rails-citizens .wall-bg {
  position:absolute; top:20%; left:5%; right:5%; bottom:20%;
  background: linear-gradient(180deg, #5a4020 0%, #3a2808 100%);
  border-radius: 20px 20px 0 0;
  box-shadow: inset 0 10px 30px rgba(0,0,0,.7);
  animation: crc-wall 12s ease-in-out infinite alternate;
}
.scn-constance-rails-citizens .citizen.left {
  position:absolute; top:22%; left:15%; width:12px; height:30px;
  background: #2a1a0a;
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  animation: crc-citizen 6s ease-in-out infinite alternate;
}
.scn-constance-rails-citizens .citizen.right {
  position:absolute; top:24%; right:18%; width:12px; height:28px;
  background: #1a0a00;
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  animation: crc-citizen 6s ease-in-out infinite alternate-reverse;
}
.scn-constance-rails-citizens .constance {
  position:absolute; bottom:30%; left:40%; width:35px; height:80px;
  background: linear-gradient(180deg, #1a1008 0%, #0a0500 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: crc-body 3s ease-in-out infinite alternate;
}
.scn-constance-rails-citizens .arms {
  position:absolute; bottom:50%; left:38%; width:50px; height:20px;
  background: linear-gradient(180deg, #2a1a0a 0%, #0a0500 100%);
  border-radius: 50% 50% 0 0;
  transform-origin: 100% 100%;
  animation: crc-arms 1.5s ease-in-out infinite alternate;
}
.scn-constance-rails-citizens .shadow-woman {
  position:absolute; bottom:28%; left:38%; width:50px; height:60px;
  background: radial-gradient(ellipse at 50% 50%, rgba(0,0,0,0.6) 0%, transparent 70%);
  border-radius:50%;
  filter: blur(10px);
  animation: crc-shadow 4s ease-in-out infinite alternate;
}
@keyframes crc-wall { 0% { opacity:0.7; } 50% { opacity:1; } 100% { opacity:0.8; } }
@keyframes crc-citizen { 0% { transform: translateY(0) scale(1); } 50% { transform: translateY(-3px) scale(1.05); } 100% { transform: translateY(0) scale(0.95); } }
@keyframes crc-body { 0% { transform: translateX(-2px) rotate(-3deg); } 50% { transform: translateX(2px) rotate(3deg); } 100% { transform: translateX(0) rotate(-1deg); } }
@keyframes crc-arms { 0% { transform: rotate(-30deg) translateY(0); } 50% { transform: rotate(10deg) translateY(-5px); } 100% { transform: rotate(-20deg) translateY(0); } }
@keyframes crc-shadow { 0% { opacity:0.5; transform: scaleX(0.8); } 50% { opacity:0.8; transform: scaleX(1.2); } 100% { opacity:0.6; transform: scaleX(0.9); } }

/* prepare-batter-angiers – tense, sunlit */
.scn-prepare-batter-angiers {
  background:
    linear-gradient(180deg, #e8c890 0%, #c8a060 30%, #a07840 70%, #705028 100%),
    radial-gradient(ellipse at 50% 0%, #f0d8a0 0%, transparent 50%);
}
.scn-prepare-batter-angiers .gate {
  position:absolute; bottom:20%; left:30%; right:30%; top:40%;
  background: linear-gradient(180deg, #4a3018 0%, #2a1808 100%);
  border-radius: 20% 20% 0 0;
  box-shadow: inset 0 10px 30px rgba(0,0,0,.6);
  animation: pba-gate 1s ease-in-out infinite alternate;
}
.scn-prepare-batter-angiers .ram {
  position:absolute; bottom:35%; left:40%; right:40%; height:20px;
  background: linear-gradient(90deg, #6a4a28 0%, #8a6038 50%, #6a4a28 100%);
  border-radius: 10px;
  transform-origin: center center;
  animation: pba-ram 0.6s ease-in-out infinite alternate;
}
.scn-prepare-batter-angiers .king-john {
  position:absolute; bottom:38%; left:18%; width:28px; height:65px;
  background: linear-gradient(180deg, #1a0a00 0%, #0a0500 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  box-shadow: -4px 0 8px rgba(0,0,0,.5);
  animation: pba-king 0.9s ease-in-out infinite alternate;
}
.scn-prepare-batter-angiers .king-philip {
  position:absolute; bottom:38%; right:18%; width:28px; height:65px;
  background: linear-gradient(180deg, #1a0a00 0%, #0a0500 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  box-shadow: 4px 0 8px rgba(0,0,0,.5);
  animation: pba-king 0.9s ease-in-out infinite alternate-reverse;
}
.scn-prepare-batter-angiers .banner-left {
  position:absolute; top:10%; left:10%; width:15px; height:50px;
  background: linear-gradient(180deg, #a06030 0%, #602810 100%);
  border-radius: 0 0 10px 10px;
  transform-origin: top center;
  animation: pba-banner 3s ease-in-out infinite alternate;
}
.scn-prepare-batter-angiers .banner-right {
  position:absolute; top:12%; right:12%; width:15px; height:50px;
  background: linear-gradient(180deg, #a06030 0%, #602810 100%);
  border-radius: 0 0 10px 10px;
  transform-origin: top center;
  animation: pba-banner 3s ease-in-out infinite alternate-reverse;
}
.scn-prepare-batter-angiers .dust {
  position:absolute; bottom:25%; left:30%; right:30%; height:20px;
  background: radial-gradient(ellipse at 50% 50%, rgba(180,140,80,0.4) 0%, transparent 70%);
  filter: blur(8px);
  animation: pba-dust 2s ease-in-out infinite alternate;
}
@keyframes pba-gate { 0% { transform: scaleY(1); } 50% { transform: scaleY(0.98); } 100% { transform: scaleY(1); } }
@keyframes pba-ram { 0% { transform: translateX(-10px) rotate(-5deg); } 50% { transform: translateX(10px) rotate(5deg); } 100% { transform: translateX(-8px) rotate(-3deg); } }
@keyframes pba-king { 0% { transform: translateY(0) rotate(-2deg); } 50% { transform: translateY(-3px) rotate(3deg); } 100% { transform: translateY(0) rotate(-1deg); } }
@keyframes pba-banner { 0% { transform: rotate(-10deg) scaleY(1); } 50% { transform: rotate(10deg) scaleY(1.05); } 100% { transform: rotate(-5deg) scaleY(0.98); } }
@keyframes pba-dust { 0% { opacity:0.3; transform: translateY(0) scale(1); } 50% { opacity:0.6; transform: translateY(-5px) scale(1.2); } 100% { opacity:0.4; transform: translateY(0) scale(0.9); } }

/* peace-marriage-proposal – calm, sunlit */
.scn-peace-marriage-proposal {
  background:
    linear-gradient(180deg, #ffe8c0 0%, #f0d8a0 30%, #d4b880 70%, #b89860 100%),
    radial-gradient(ellipse at 50% 80%, #fff0d0 0%, transparent 60%);
}
.scn-peace-marriage-proposal .arch {
  position:absolute; top:5%; left:25%; right:25%; bottom:30%;
  background: linear-gradient(180deg, #c8a860 0%, #a08040 100%);
  border-radius: 50% 50% 0 0 / 80% 80% 0 0;
  box-shadow: 0 8px 20px rgba(0,0,0,.3);
  animation: pmp-arch 20s ease-in-out infinite alternate;
}
.scn-peace-marriage-proposal .figure-left {
  position:absolute; bottom:30%; left:30%; width:30px; height:70px;
  background: linear-gradient(180deg, #5a4030 0%, #2a1808 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pmp-figure 8s ease-in-out infinite alternate;
}
.scn-peace-marriage-proposal .figure-right {
  position:absolute; bottom:30%; right:30%; width:30px; height:70px;
  background: linear-gradient(180deg, #5a4030 0%, #2a1808 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pmp-figure 8s ease-in-out infinite alternate-reverse;
}
.scn-peace-marriage-proposal .hands {
  position:absolute; bottom:35%; left:50%; width:40px; height:20px;
  transform: translateX(-50%);
  background: radial-gradient(ellipse at 50% 50%, #d4b880 0%, #a08040 100%);
  border-radius: 50%;
  box-shadow: 0 0 15px 5px rgba(200,180,120,0.5);
  animation: pmp-hands 6s ease-in-out infinite alternate;
}
.scn-peace-marriage-proposal .dove-1 {
  position:absolute; top:15%; left:15%; width:30px; height:15px;
  background: radial-gradient(ellipse at 50% 50%, #fff8e0 0%, #f0e0c0 100%);
  border-radius: 50% 50% 40% 40% / 60% 40% 60% 40%;
  animation: pmp-dove 12s linear infinite alternate;
}
.scn-peace-marriage-proposal .dove-2 {
  position:absolute; top:18%; right:18%; width:30px; height:15px;
  background: radial-gradient(ellipse at 50% 50%, #fff8e0 0%, #f0e0c0 100%);
  border-radius: 50% 50% 40% 40% / 60% 40% 60% 40%;
  animation: pmp-dove 14s linear infinite alternate-reverse;
}
.scn-peace-marriage-proposal .sunrays {
  position:absolute; top:0; left:0; right:0; bottom:0;
  background: radial-gradient(ellipse at 50% 30%, rgba(255,220,150,0.3) 0%, transparent 70%);
  animation: pmp-rays 10s ease-in-out infinite alternate;
}
@keyframes pmp-arch { 0% { transform: scaleY(1) translateY(0); } 50% { transform: scaleY(1.02) translateY(-5px); } 100% { transform: scaleY(0.99) translateY(0); } }
@keyframes pmp-figure { 0% { transform: translateY(0) rotate(-2deg) scale(1); } 50% { transform: translateY(-3px) rotate(2deg) scale(1.02); } 100% { transform: translateY(0) rotate(-1deg) scale(0.99); } }
@keyframes pmp-hands { 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.85; } }
@keyframes pmp-dove { 0% { transform: translate(0,0) rotate(-10deg); } 50% { transform: translate(20px,-15px) rotate(5deg); } 100% { transform: translate(-10px,-5px) rotate(-5deg); } }
@keyframes pmp-rays { 0% { opacity:0.5; } 50% { opacity:0.8; } 100% { opacity:0.6; } }

/* scene 1: item-seal-and-warrant */
.scn-item-seal-and-warrant {
  background: linear-gradient(180deg, #fff9e6 0%, #e8d5a8 60%, #c8a870 100%), radial-gradient(ellipse at 30% 20%, #fff5d1 0%, transparent 60%);
}
.scn-item-seal-and-warrant .window {
  position: absolute; right: 8%; top: 12%; width: 80px; height: 100px;
  background: linear-gradient(135deg, #b0d4f0 0%, #7aadcf 100%);
  border-radius: 4% 4% 10% 10%; box-shadow: inset 0 0 20px #5a8db5;
  animation: s1-window 6s ease-in-out infinite alternate;
}
.scn-item-seal-and-warrant .sunbeam {
  position: absolute; left: 45%; top: 0; width: 40%; height: 60%;
  background: linear-gradient(180deg, rgba(255,245,200,.5) 0%, rgba(255,235,180,.2) 100%);
  clip-path: polygon(50% 0, 100% 100%, 0 100%);
  animation: s1-beam 3s ease-in-out infinite alternate;
}
.scn-item-seal-and-warrant .desk {
  position: absolute; bottom: 8%; left: 10%; right: 10%; height: 18%;
  background: linear-gradient(180deg, #a07850 0%, #6a4a2a 100%);
  border-radius: 2% 2% 0 0; box-shadow: 0 -6px 12px rgba(0,0,0,.3);
  animation: s1-desk-pulse 7s ease-in-out infinite;
}
.scn-item-seal-and-warrant .seal {
  position: absolute; bottom: 18%; left: 40%; width: 30px; height: 30px;
  background: radial-gradient(circle at 40% 40%, #c8553d 0%, #8a2a1a 100%);
  border-radius: 50%; box-shadow: 0 2px 8px #4a1a0a;
  animation: s1-seal 4s ease-in-out infinite;
}
.scn-item-seal-and-warrant .warrant {
  position: absolute; bottom: 22%; left: 30%; width: 80px; height: 12px;
  background: linear-gradient(180deg, #f5e6c8 0%, #ddd0aa 100%);
  border-radius: 2px; box-shadow: 0 1px 4px rgba(0,0,0,.3);
  transform: rotate(-6deg);
  animation: s1-paper 5s ease-in-out infinite alternate;
}
.scn-item-seal-and-warrant .hand-john {
  position: absolute; bottom: 14%; left: 28%; width: 24px; height: 40px;
  background: linear-gradient(180deg, #d4b896 0%, #b89a7a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform: rotate(20deg);
  animation: s1-hand 3s ease-in-out infinite;
  transform-origin: bottom;
}
.scn-item-seal-and-warrant .hand-hubert {
  position: absolute; bottom: 14%; right: 32%; width: 24px; height: 40px;
  background: linear-gradient(180deg, #c8a882 0%, #a8886a 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%;
  transform: rotate(-15deg);
  animation: s1-hand 3.2s ease-in-out infinite alternate;
  transform-origin: bottom;
}
@keyframes s1-window { 0% { opacity:.7; transform: scaleY(1) } 50% { opacity:1; transform: scaleY(1.02) } 100% { opacity:.8; transform: scaleY(.98) } }
@keyframes s1-beam { 0% { opacity:.3; transform: scaleX(1) } 50% { opacity:.6; transform: scaleX(1.1) } 100% { opacity:.35; transform: scaleX(.95) } }
@keyframes s1-desk-pulse { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-2px) } }
@keyframes s1-seal { 0%,100% { transform: scale(1) rotate(0deg) } 33% { transform: scale(1.08) rotate(-3deg) } 66% { transform: scale(.95) rotate(2deg) } }
@keyframes s1-paper { 0% { transform: rotate(-6deg) translateX(0) } 50% { transform: rotate(-4deg) translateX(3px) } 100% { transform: rotate(-8deg) translateX(-2px) } }
@keyframes s1-hand { 0%,100% { transform: rotate(20deg) translateY(0) } 50% { transform: rotate(15deg) translateY(-3px) } }

/* scene 2: nobles-revolt-hubert */
.scn-nobles-revolt-hubert {
  background: linear-gradient(180deg, #c8d8e0 0%, #a8b8c0 50%, #7a8a90 100%), radial-gradient(ellipse at 80% 20%, #d8e8f0 0%, transparent 50%);
}
.scn-nobles-revolt-hubert .bg-ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #5a6a60 0%, #3a4a3a 100%);
  border-radius: 20% 20% 0 0 / 40% 40% 0 0;
  animation: s2-ground 8s ease-in-out infinite alternate;
}
.scn-nobles-revolt-hubert .bastard {
  position: absolute; bottom: 20%; left: 30%; width: 30px; height: 60px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 45% 45% 35% 35% / 55% 55% 35% 35%;
  box-shadow: 0 8px 12px rgba(0,0,0,.4);
  animation: s2-figure 4s ease-in-out infinite;
  transform-origin: bottom;
}
.scn-nobles-revolt-hubert .hubert {
  position: absolute; bottom: 18%; left: 48%; width: 28px; height: 56px;
  background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 100%);
  border-radius: 45% 45% 35% 35% / 55% 55% 35% 35%;
  box-shadow: 0 6px 10px rgba(0,0,0,.3);
  animation: s2-figure 4.2s ease-in-out infinite alternate;
  transform-origin: bottom;
}
.scn-nobles-revolt-hubert .noble-left {
  position: absolute; bottom: 22%; left: 16%; width: 26px; height: 58px;
  background: linear-gradient(180deg, #4a4a5a 0%, #3a3a4a 100%);
  border-radius: 45% 45% 35% 35% / 55% 55% 35% 35%;
  transform: rotate(-8deg);
  animation: s2-noble 3.5s ease-in-out infinite;
  transform-origin: bottom;
}
.scn-nobles-revolt-hubert .noble-right {
  position: absolute; bottom: 22%; right: 18%; width: 26px; height: 58px;
  background: linear-gradient(180deg, #4a4a5a 0%, #3a3a4a 100%);
  border-radius: 45% 45% 35% 35% / 55% 55% 35% 35%;
  transform: rotate(8deg);
  animation: s2-noble 3.7s ease-in-out infinite reverse;
  transform-origin: bottom;
}
.scn-nobles-revolt-hubert .sword-flash {
  position: absolute; bottom: 20%; left: 20%; width: 4px; height: 16px;
  background: linear-gradient(180deg, #e0e0e0 0%, #868686 100%);
  border-radius: 2px; transform: rotate(30deg);
  box-shadow: 0 0 8px 2px rgba(255,255,255,.6);
  animation: s2-sword 0.3s infinite alternate;
}
@keyframes s2-ground { 0%,100% { transform: translateY(0) } 50% { transform: translateY(2px) } }
@keyframes s2-figure { 0% { transform: translateX(0) rotate(0deg) } 25% { transform: translateX(2px) rotate(-1deg) } 50% { transform: translateX(-1px) rotate(1deg) } 75% { transform: translateX(1px) rotate(-1deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes s2-noble { 0%,100% { transform: rotate(-8deg) translateY(0) } 50% { transform: rotate(-5deg) translateY(-2px) } }
@keyframes s2-sword { 0% { opacity:.3; transform: rotate(25deg) scaleY(1) } 100% { opacity:1; transform: rotate(35deg) scaleY(1.3) } }

/* scene 3: bastard-leads-defense */
.scn-bastard-leads-defense {
  background: linear-gradient(180deg, #f7e8c8 0%, #e0c898 50%, #b89868 100%), radial-gradient(ellipse at 30% 120%, #ffe0a0 0%, transparent 70%);
}
.scn-bastard-leads-defense .tent {
  position: absolute; bottom: 12%; left: 22%; width: 120px; height: 80px;
  background: linear-gradient(135deg, #c8a878 0%, #9a7a4a 100%);
  clip-path: polygon(0% 100%, 20% 0%, 80% 0%, 100% 100%);
  animation: s3-tent 9s ease-in-out infinite alternate;
}
.scn-bastard-leads-defense .flag {
  position: absolute; top: 4%; left: 48%; width: 12px; height: 40px;
  background: #c8553d;
  border-radius: 2px;
  box-shadow: 0 0 8px 2px #8a2a1a;
  animation: s3-flag 1.2s ease-in-out infinite alternate;
  transform-origin: bottom;
}
.scn-bastard-leads-defense .bastard {
  position: absolute; bottom: 16%; left: 40%; width: 30px; height: 64px;
  background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%);
  border-radius: 45% 45% 35% 35% / 55% 55% 35% 35%;
  box-shadow: 0 8px 16px rgba(0,0,0,.4);
  animation: s3-bastard 5s ease-in-out infinite;
}
.scn-bastard-leads-defense .sword {
  position: absolute; bottom: 14%; left: 30%; width: 6px; height: 28px;
  background: linear-gradient(180deg, #d0d0d0 0%, #808080 100%);
  border-radius: 3px; transform: rotate(25deg);
  animation: s3-sword 0.4s ease-in-out infinite alternate;
}
.scn-bastard-leads-defense .horizon {
  position: absolute; bottom: 40%; left: 0; right: 0; height: 4px;
  background: linear-gradient(180deg, #a08060 0%, #806040 100%);
  filter: blur(2px);
  animation: s3-horizon 15s linear infinite;
}
.scn-bastard-leads-defense .sun {
  position: absolute; top: 12%; right: 26%; width: 40px; height: 40px;
  background: radial-gradient(circle, #ffe680 0%, #f0b040 100%);
  border-radius: 50%;
  box-shadow: 0 0 40px 10px rgba(255,200,50,.5);
  animation: s3-sun 6s ease-in-out infinite alternate;
}
.scn-bastard-leads-defense .cloud-tense {
  position: absolute; top: 18%; left: -20%; width: 100px; height: 20px;
  background: linear-gradient(180deg, rgba(120,80,40,.25) 0%, rgba(120,80,40,.05) 100%);
  border-radius: 50%; filter: blur(5px);
  animation: s3-cloud 25s linear infinite;
}
@keyframes s3-tent { 0%,100% { transform: scaleX(1) } 50% { transform: scaleX(1.03) } }
@keyframes s3-flag { 0% { transform: rotate(-8deg) } 100% { transform: rotate(8deg) } }
@keyframes s3-bastard { 0% { transform: translateX(0) rotate(0deg) } 25% { transform: translateX(4px) rotate(-2deg) } 50% { transform: translateX(-2px) rotate(1deg) } 75% { transform: translateX(3px) rotate(-1deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes s3-sword { 0% { transform: rotate(20deg) translateY(0) } 100% { transform: rotate(30deg) translateY(-4px) } }
@keyframes s3-horizon { 0%,100% { opacity:.4 } 50% { opacity:.7 } }
@keyframes s3-sun { 0% { transform: scale(.9); box-shadow: 0 0 30px 8px rgba(255,200,50,.3) } 50% { transform: scale(1.05); box-shadow: 0 0 60px 15px rgba(255,200,50,.6) } 100% { transform: scale(.95); box-shadow: 0 0 35px 10px rgba(255,200,50,.4) } }
@keyframes s3-cloud { 0% { transform: translateX(0) } 100% { transform: translateX(140vw) } }

/* scene 4: battle-poison-melun-warning */
.scn-battle-poison-melun-warning {
  background: linear-gradient(180deg, #8696a0 0%, #5a6a7a 50%, #3a4a5a 100%), radial-gradient(ellipse at 50% 80%, #6a7a8a 0%, transparent 60%);
}
.scn-battle-poison-melun-warning .sky {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #b0c0c6 0%, #7a8a94 100%);
  animation: s4-sky 10s ease-in-out infinite alternate;
}
.scn-battle-poison-melun-warning .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #5a6650 0%, #3a4a30 100%);
  border-radius: 30% 30% 0 0 / 60% 60% 0 0;
  animation: s4-ground 6s ease-in-out infinite alternate;
}
.scn-battle-poison-melun-warning .melun {
  position: absolute; bottom: 18%; left: 30%; width: 30px; height: 50px;
  background: linear-gradient(180deg, #4a5a6a 0%, #2a3a4a 100%);
  border-radius: 45% 45% 35% 35% / 55% 55% 35% 35%;
  transform: rotate(12deg);
  box-shadow: 0 6px 12px rgba(0,0,0,.5);
  animation: s4-melun 4s ease-in-out infinite alternate;
  transform-origin: bottom;
}
.scn-battle-poison-melun-warning .messenger {
  position: absolute; bottom: 20%; right: 28%; width: 26px; height: 54px;
  background: linear-gradient(180deg, #5a5a6a 0%, #3a3a4a 100%);
  border-radius: 45% 45% 35% 35% / 55% 55% 35% 35%;
  animation: s4-messenger 4.5s ease-in-out infinite;
  transform-origin: bottom;
}
.scn-battle-poison-melun-warning .wreck {
  position: absolute; bottom: 30%; right: 10%; width: 80px; height: 30px;
  background: linear-gradient(180deg, #6a4a2a 0%, #3a2a1a 100%);
  clip-path: polygon(0% 100%, 20% 0%, 80% 10%, 100% 100%);
  opacity: .6;
  animation: s4-wreck 20s linear infinite;
}
.scn-battle-poison-melun-warning .cup-poison {
  position: absolute; bottom: 10%; left: 20%; width: 16px; height: 20px;
  background: linear-gradient(180deg, #a07850 0%, #684030 100%);
  border-radius: 0 0 20% 20%; clip-path: polygon(10% 0, 90% 0, 100% 100%, 0% 100%);
  box-shadow: 0 4px 8px rgba(0,0,0,.4);
  animation: s4-cup 3s ease-in-out infinite alternate;
}
@keyframes s4-sky { 0%,100% { opacity:.8 } 50% { opacity:1 } }
@keyframes s4-ground { 0%,100% { transform: translateY(0) } 50% { transform: translateY(2px) } }
@keyframes s4-melun { 0%,100% { transform: rotate(12deg) scaleY(1) } 50% { transform: rotate(5deg) scaleY(.95) } }
@keyframes s4-messenger { 0% { transform: translateX(0) rotate(0deg) } 25% { transform: translateX(3px) rotate(-2deg) } 50% { transform: translateX(-1px) rotate(1deg) } 75% { transform: translateX(2px) rotate(-1deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes s4-wreck { 0% { transform: translateX(0) } 100% { transform: translateX(-10px) } }
@keyframes s4-cup { 0% { transform: rotate(-4deg) } 100% { transform: rotate(4deg) } }

.scn-commodity-soliloquy {
  background: linear-gradient(180deg, #f7d49e 0%, #d4a55a 40%, #8c6e3c 100%),
              radial-gradient(ellipse at 50% 100%, #f0c878 0%, transparent 70%);
}
.scn-commodity-soliloquy .sky {
  position: absolute; inset: 0 0 45% 0;
  background: linear-gradient(180deg, #ffe7b0 0%, #f7d49e 60%, transparent 100%);
  animation: cs1-sky 18s ease-in-out infinite alternate;
}
.scn-commodity-soliloquy .sun {
  position: absolute; top: 8%; left: 70%; width: 60px; height: 60px;
  background: radial-gradient(circle, #fffbe0 0%, #f7d49e 60%, transparent 100%);
  border-radius: 50%;
  animation: cs1-sun 8s ease-in-out infinite alternate;
}
.scn-commodity-soliloquy .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, #6a5330 0%, #3d2d1a 100%);
  border-radius: 30% 70% 0 0 / 40% 60% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.5);
}
.scn-commodity-soliloquy .figure {
  position: absolute; bottom: 38%; left: 45%; width: 24px; height: 60px;
  background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: cs1-figure 6s ease-in-out infinite;
}
.scn-commodity-soliloquy .shadow {
  position: absolute; bottom: 20%; left: 30%; width: 80px; height: 12px;
  background: linear-gradient(90deg, transparent, #1a1410 30%, transparent);
  border-radius: 50%;
  filter: blur(6px);
  animation: cs1-shadow 6s ease-in-out infinite;
}
.scn-commodity-soliloquy .cloud-a {
  position: absolute; top: 12%; left: 10%; width: 100px; height: 20px;
  background: linear-gradient(180deg, rgba(255,255,240,0.7), rgba(255,255,240,0.1));
  border-radius: 50%;
  filter: blur(8px);
  animation: cs1-drift-a 40s linear infinite;
}
.scn-commodity-soliloquy .cloud-b {
  position: absolute; top: 20%; right: 5%; width: 70px; height: 14px;
  background: linear-gradient(180deg, rgba(255,255,240,0.5), rgba(255,255,240,0.05));
  border-radius: 50%;
  filter: blur(6px);
  animation: cs1-drift-b 55s linear infinite reverse;
}
@keyframes cs1-sky { 0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.7; } }
@keyframes cs1-sun { 0% { transform: scale(0.95); box-shadow: 0 0 30px #f7d49e; } 50% { transform: scale(1.05); box-shadow: 0 0 50px #ffe7b0; } 100% { transform: scale(0.98); box-shadow: 0 0 40px #f0c878; } }
@keyframes cs1-figure { 0% { transform: translateX(0) rotate(-1deg); } 25% { transform: translateX(4px) rotate(1deg); } 50% { transform: translateX(0) rotate(-1deg); } 75% { transform: translateX(-4px) rotate(1deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes cs1-shadow { 0% { transform: scaleX(1) translateX(-5px); opacity:0.6; } 50% { transform: scaleX(0.9) translateX(5px); opacity:0.8; } 100% { transform: scaleX(1) translateX(-5px); opacity:0.6; } }
@keyframes cs1-drift-a { 0% { transform: translateX(-50px); } 50% { transform: translateX(30vw); } 100% { transform: translateX(120vw); } }
@keyframes cs1-drift-b { 0% { transform: translateX(0); } 50% { transform: translateX(-40vw); } 100% { transform: translateX(-100vw); } }

.scn-constance-denounces-perjured-kings {
  background: linear-gradient(180deg, #1e1a18 0%, #2a221c 40%, #3a2e28 100%),
              radial-gradient(ellipse at 30% 60%, #4a3e34 0%, transparent 70%);
}
.scn-constance-denounces-perjured-kings .wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(90deg, #2a221c 0%, #3a2e28 30%, #2a221c 70%, #1e1a18 100%);
  box-shadow: inset 0 15px 30px rgba(0,0,0,0.6);
  animation: cdk-wall 20s ease-in-out infinite alternate;
}
.scn-constance-denounces-perjured-kings .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #3a2e28 0%, #1e1a18 100%);
  border-radius: 10% 10% 0 0;
  box-shadow: inset 0 8px 16px rgba(0,0,0,0.7);
}
.scn-constance-denounces-perjured-kings .window {
  position: absolute; top: 15%; left: 20%; width: 40px; height: 60px;
  background: radial-gradient(circle at 50% 30%, #d4a55a 0%, #7a5a30 60%, transparent);
  border: 3px solid #4a3e34;
  border-radius: 10% 10% 20% 20%;
  box-shadow: 0 0 30px #c89050, 0 0 60px rgba(200,144,80,0.3);
  animation: cdk-window 4s ease-in-out infinite alternate;
}
.scn-constance-denounces-perjured-kings .constance {
  position: absolute; bottom: 25%; left: 30%; width: 30px; height: 70px;
  background: linear-gradient(180deg, #3a2e28 0%, #1e1a18 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  animation: cdk-figure 5s ease-in-out infinite;
}
.scn-constance-denounces-perjured-kings .bastard {
  position: absolute; bottom: 25%; left: 55%; width: 28px; height: 65px;
  background: linear-gradient(180deg, #2a221c 0%, #1a1614 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 35% 35%;
  animation: cdk-figure 6s ease-in-out infinite reverse;
}
.scn-constance-denounces-perjured-kings .candle {
  position: absolute; top: 35%; left: 45%; width: 8px; height: 20px;
  background: linear-gradient(180deg, #e0b060 0%, #b08840 100%);
  border-radius: 20% 20% 10% 10%;
  animation: cdk-candle 3s ease-in-out infinite;
}
.scn-constance-denounces-perjured-kings .glow {
  position: absolute; top: 33%; left: 42%; width: 40px; height: 40px;
  background: radial-gradient(circle, #e0b060 0%, transparent 70%);
  border-radius: 50%;
  animation: cdk-glow 3s ease-in-out infinite alternate;
}
@keyframes cdk-wall { 0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.7; } }
@keyframes cdk-window { 0% { box-shadow: 0 0 20px #7a5a30, 0 0 40px rgba(200,144,80,0.1); } 50% { box-shadow: 0 0 40px #d4a55a, 0 0 80px rgba(212,165,90,0.4); } 100% { box-shadow: 0 0 25px #7a5a30, 0 0 50px rgba(200,144,80,0.2); } }
@keyframes cdk-figure { 0% { transform: translateY(0) rotate(-1deg); } 25% { transform: translateY(-2px) rotate(1deg); } 50% { transform: translateY(0) rotate(-1deg); } 75% { transform: translateY(-1px) rotate(1deg); } 100% { transform: translateY(0) rotate(0); } }
@keyframes cdk-candle { 0% { transform: scaleY(1); } 50% { transform: scaleY(1.1); } 100% { transform: scaleY(1); } }
@keyframes cdk-glow { 0% { opacity:0.6; } 50% { opacity:1; } 100% { opacity:0.7; } }

.scn-pandulph-argument-alliance {
  background: linear-gradient(180deg, #121018 0%, #1c1824 40%, #2a2230 100%),
              radial-gradient(ellipse at 50% 40%, #3a304a 0%, transparent 70%);
}
.scn-pandulph-argument-alliance .bg-dark {
  position: absolute; inset: 0 0 25% 0;
  background: linear-gradient(180deg, #1c1824 0%, #121018 100%);
  animation: paa-dim 20s ease-in-out infinite alternate;
}
.scn-pandulph-argument-alliance .floor-dark {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(180deg, #2a2230 0%, #121018 100%);
  border-radius: 8% 8% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.8);
}
.scn-pandulph-argument-alliance .altar {
  position: absolute; bottom: 12%; left: 50%; transform: translateX(-50%); width: 50px; height: 30px;
  background: linear-gradient(180deg, #4a3e5a 0%, #2a2230 100%);
  border-radius: 10% 10% 5% 5%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.5);
  animation: paa-altar 10s ease-in-out infinite;
}
.scn-pandulph-argument-alliance .constance {
  position: absolute; bottom: 20%; left: 28%; width: 26px; height: 65px;
  background: linear-gradient(180deg, #3a304a 0%, #1c1824 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 35% 35%;
  animation: paa-figure 4s ease-in-out infinite;
}
.scn-pandulph-argument-alliance .pandulph {
  position: absolute; bottom: 20%; left: 40%; width: 28px; height: 70px;
  background: linear-gradient(180deg, #4a3e5a 0%, #2a2230 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  animation: paa-figure 5s ease-in-out infinite reverse;
}
.scn-pandulph-argument-alliance .philip {
  position: absolute; bottom: 20%; left: 55%; width: 30px; height: 68px;
  background: linear-gradient(180deg, #2a2230 0%, #121018 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 35% 35%;
  animation: paa-figure 6s ease-in-out infinite;
}
.scn-pandulph-argument-alliance .lewis {
  position: absolute; bottom: 20%; left: 70%; width: 24px; height: 62px;
  background: linear-gradient(180deg, #3a304a 0%, #1c1824 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 35% 35%;
  animation: paa-figure 4.5s ease-in-out infinite reverse;
}
.scn-pandulph-argument-alliance .flame {
  position: absolute; top: 60%; left: 50%; width: 10px; height: 15px;
  background: radial-gradient(ellipse at 50% 100%, #e0a040 0%, transparent 60%);
  border-radius: 50%;
  animation: paa-flame 0.8s ease-in-out infinite alternate;
}
@keyframes paa-dim { 0% { opacity:0.7; } 50% { opacity:1; } 100% { opacity:0.8; } }
@keyframes paa-altar { 0% { transform: translateX(-50%) scale(1); } 50% { transform: translateX(-50%) scale(1.02); } 100% { transform: translateX(-50%) scale(1); } }
@keyframes paa-figure { 0% { transform: translateY(0) rotate(-1deg); } 25% { transform: translateY(-1px) rotate(1deg); } 50% { transform: translateY(0) rotate(-1deg); } 75% { transform: translateY(-2px) rotate(1deg); } 100% { transform: translateY(0) rotate(0); } }
@keyframes paa-flame { 0% { transform: scaleY(0.9) scaleX(1.1); opacity:0.7; } 50% { transform: scaleY(1.1) scaleX(0.9); opacity:1; } 100% { transform: scaleY(0.95) scaleX(1.05); opacity:0.8; } }

.scn-item-austrias-head {
  background: linear-gradient(180deg, #f0c878 0%, #d4a55a 40%, #8c6e3c 100%),
              radial-gradient(ellipse at 50% 100%, #f7d49e 0%, transparent 70%);
}
.scn-item-austrias-head .sky-battle {
  position: absolute; inset: 0 0 40% 0;
  background: linear-gradient(180deg, #f7d49e 0%, #d4a55a 80%, transparent 100%);
  animation: iah-sky 15s ease-in-out infinite alternate;
}
.scn-item-austrias-head .ground-battle {
  position: absolute; bottom: 0; left: 0; right: 0; height: 40%;
  background: linear-gradient(180deg, #6a5330 0%, #3d2d1a 100%);
  border-radius: 20% 80% 0 0 / 30% 70% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.5);
}
.scn-item-austrias-head .bastard {
  position: absolute; bottom: 32%; left: 35%; width: 30px; height: 65px;
  background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  animation: iah-figure 5s ease-in-out infinite;
}
.scn-item-austrias-head .head {
  position: absolute; bottom: 38%; left: 38%; width: 20px; height: 20px;
  background: radial-gradient(circle, #6a4a3a 0%, #3a2a1a 100%);
  border-radius: 50%;
  box-shadow: inset 0 3px 6px rgba(0,0,0,0.6);
  animation: iah-head 4s ease-in-out infinite;
}
.scn-item-austrias-head .spear {
  position: absolute; bottom: 30%; left: 36%; width: 4px; height: 50px;
  background: linear-gradient(180deg, #5a4a3a 0%, #2a1a0a 100%);
  border-radius: 10% 10% 0 0;
  animation: iah-spear 4s ease-in-out infinite;
}
.scn-item-austrias-head .blood-pool {
  position: absolute; bottom: 20%; left: 30%; width: 40px; height: 10px;
  background: radial-gradient(ellipse, #702243 0%, transparent 80%);
  border-radius: 50%;
  filter: blur(4px);
  animation: iah-blood 8s ease-in-out infinite alternate;
}
.scn-item-austrias-head .c1 {
  position: absolute; top: 12%; left: 15%; width: 90px; height: 16px;
  background: linear-gradient(180deg, rgba(255,255,240,0.6), rgba(255,255,240,0.1));
  border-radius: 50%;
  filter: blur(6px);
  animation: iah-drift-a 35s linear infinite;
}
.scn-item-austrias-head .c2 {
  position: absolute; top: 22%; right: 10%; width: 60px; height: 12px;
  background: linear-gradient(180deg, rgba(255,255,240,0.4), rgba(255,255,240,0.05));
  border-radius: 50%;
  filter: blur(5px);
  animation: iah-drift-b 50s linear infinite reverse;
}
@keyframes iah-sky { 0% { opacity:0.8; } 50% { opacity:1; } 100% { opacity:0.7; } }
@keyframes iah-figure { 0% { transform: translateX(0) rotate(-1deg); } 25% { transform: translateX(5px) rotate(1deg); } 50% { transform: translateX(0) rotate(-1deg); } 75% { transform: translateX(-5px) rotate(1deg); } 100% { transform: translateX(0) rotate(0); } }
@keyframes iah-head { 0% { transform: translateY(0) rotate(-5deg); } 50% { transform: translateY(-3px) rotate(5deg); } 100% { transform: translateY(0) rotate(-3deg); } }
@keyframes iah-spear { 0% { transform: rotate(-2deg); } 50% { transform: rotate(2deg); } 100% { transform: rotate(-2deg); } }
@keyframes iah-blood { 0% { opacity:0.5; transform: scale(1); } 50% { opacity:0.8; transform: scale(1.1); } 100% { opacity:0.6; transform: scale(1); } }
@keyframes iah-drift-a { 0% { transform: translateX(-30px); } 50% { transform: translateX(40vw); } 100% { transform: translateX(120vw); } }
@keyframes iah-drift-b { 0% { transform: translateX(0); } 50% { transform: translateX(-30vw); } 100% { transform: translateX(-100vw); } }

.scn-king-john-receives-ambassador { background: linear-gradient(180deg, #1a1a3e 0%, #3a2a5e 50%, #c87a2a 100%), radial-gradient(ellipse at 30% 20%, #ffd060 0%, transparent 60%); }
.scn-king-john-receives-ambassador .wall { position:absolute; inset:0 0 45% 0; background: linear-gradient(135deg, #2a1a3a 0%, #4a3a6a 50%, #2a1a3a 100%), repeating-linear-gradient(90deg, transparent, transparent 40px, rgba(255,255,255,.03) 40px, rgba(255,255,255,.03) 41px); }
.scn-king-john-receives-ambassador .floor { position:absolute; bottom:0; left:0; right:0; height:45%; background: linear-gradient(180deg, #4a3a3a 0%, #1a1a1a 100%), repeating-linear-gradient(90deg, #5a4a4a 0px, #5a4a4a 20px, #3a2a2a 20px, #3a2a2a 40px); opacity:.85; transform: perspective(400px) rotateX(30deg); transform-origin: bottom; }
.scn-king-john-receives-ambassador .throne { position:absolute; bottom:40%; left:45%; width:80px; height:90px; background: linear-gradient(135deg, #c87a2a 0%, #8a5a1a 60%, #5a3a0a 100%); border-radius: 30% 30% 10% 10% / 40% 40% 10% 10%; box-shadow: 0 10px 20px rgba(0,0,0,.6); transform: perspective(200px) rotateY(5deg); animation: kja-throne 6s ease-in-out infinite alternate; }
.scn-king-john-receives-ambassador .king-john { position:absolute; bottom:34%; left:48%; width:30px; height:45px; background: linear-gradient(180deg, #8a7a5a 0%, #4a3a2a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; box-shadow: 0 4px 8px rgba(0,0,0,.5); animation: kja-seated 4s ease-in-out infinite; }
.scn-king-john-receives-ambassador .king-john::before { content:''; position:absolute; top:-8px; left:50%; transform:translateX(-50%); width:20px; height:12px; background: linear-gradient(180deg, #c87a2a 0%, #ffd060 100%); border-radius: 50% 50% 0 0 / 100% 100% 0 0; box-shadow: 0 2px 8px #ffd060; }
.scn-king-john-receives-ambassador .ambassador { position:absolute; bottom:30%; left:25%; width:28px; height:55px; background: linear-gradient(180deg, #6a5a7a 0%, #2a1a3a 100%); border-radius: 40% 40% 20% 20% / 50% 50% 20% 20%; transform-origin: bottom center; animation: kja-bow 8s ease-in-out infinite; }
.scn-king-john-receives-ambassador .ambassador::after { content:''; position:absolute; bottom:5px; right:-15px; width:25px; height:4px; background: linear-gradient(90deg, #c87a2a 0%, #ffd060 100%); border-radius: 2px; transform: rotate(-30deg); box-shadow: 0 2px 4px rgba(0,0,0,.4); }
.scn-king-john-receives-ambassador .light-beam { position:absolute; top:-10%; left:20%; width:120%; height:60%; background: linear-gradient(135deg, rgba(255,255,255,.25) 0%, rgba(255,208,96,.15) 40%, transparent 60%); clip-path: polygon(20% 0%, 80% 0%, 100% 100%, 0% 100%); animation: kja-beam 5s ease-in-out infinite alternate; }
.scn-king-john-receives-ambassador .shadow-overlay { position:absolute; inset:0; background: linear-gradient(135deg, transparent 40%, rgba(0,0,0,.5) 70%, rgba(0,0,0,.8) 100%); pointer-events: none; animation: kja-shadow 7s ease-in-out infinite alternate; }
.scn-king-john-receives-ambassador .dust { position:absolute; inset:0; background-image: radial-gradient(2px 2px at 20% 30%, rgba(255,255,255,.4) 0%, transparent 100%), radial-gradient(1px 1px at 40% 70%, rgba(255,255,255,.3) 0%, transparent 100%), radial-gradient(3px 3px at 60% 20%, rgba(255,255,255,.2) 0%, transparent 100%), radial-gradient(1px 1px at 80% 50%, rgba(255,255,255,.3) 0%, transparent 100%); background-size: 200% 200%; animation: kja-dust 12s linear infinite; }
@keyframes kja-throne { 0% { transform: perspective(200px) rotateY(5deg); } 50% { transform: perspective(200px) rotateY(3deg) translateY(-2px); } 100% { transform: perspective(200px) rotateY(5deg); } }
@keyframes kja-seated { 0% { transform: translateY(0); } 50% { transform: translateY(-1px); } 100% { transform: translateY(0); } }
@keyframes kja-bow { 0% { transform: rotate(0deg) translateX(0); } 30% { transform: rotate(-8deg) translateX(3px); } 60% { transform: rotate(2deg) translateX(-1px); } 100% { transform: rotate(0deg) translateX(0); } }
@keyframes kja-beam { 0% { opacity:.6; transform: scale(1); } 50% { opacity:1; transform: scale(1.02); } 100% { opacity:.7; transform: scale(.98); } }
@keyframes kja-shadow { 0% { opacity:.3; } 50% { opacity:.5; } 100% { opacity:.2; } }
@keyframes kja-dust { 0% { background-position: 0% 0%; } 100% { background-position: 100% 100%; } }

.scn-sheriff-brothers-dispute { background: linear-gradient(180deg, #2a2a4e 0%, #4a4a6e 40%, #c8c8d0 100%), radial-gradient(ellipse at 50% 0%, #ffffff 0%, transparent 60%); }
.scn-sheriff-brothers-dispute .bg-hall { position:absolute; inset:0 0 40% 0; background: linear-gradient(135deg, #3a3a5a 0%, #5a5a7a 50%, #3a3a5a 100%), repeating-linear-gradient(90deg, transparent, transparent 60px, rgba(255,255,255,.05) 60px, rgba(255,255,255,.05) 61px); }
.scn-sheriff-brothers-dispute .columns { position:absolute; bottom:20%; left:10%; width:15px; height:80%; background: linear-gradient(90deg, #7a7a8a 0%, #c8c8d0 30%, #7a7a8a 100%); border-radius: 4px; box-shadow: 0 0 20px rgba(0,0,0,.3); }
.scn-sheriff-brothers-dispute .columns::after { content:''; position:absolute; left:500%; width:15px; height:100%; background: linear-gradient(90deg, #7a7a8a 0%, #c8c8d0 30%, #7a7a8a 100%); border-radius: 4px; }
.scn-sheriff-brothers-dispute .floor-tile { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, #5a5a6a 0%, #2a2a3a 100%), repeating-conic-gradient(#6a6a7a 0% 25%, #4a4a5a 0% 50%) 0 0 / 40px 40px; transform: perspective(300px) rotateX(25deg); transform-origin: bottom; opacity:.8; }
.scn-sheriff-brothers-dispute .robert { position:absolute; bottom:25%; left:30%; width:25px; height:50px; background: linear-gradient(180deg, #6a7a6a 0%, #3a4a3a 100%); border-radius: 40% 40% 20% 20% / 50% 50% 20% 20%; animation: sbd-point 6s ease-in-out infinite; }
.scn-sheriff-brothers-dispute .robert::before { content:''; position:absolute; top:10%; right:-15px; width:20px; height:4px; background: #8a7a5a; border-radius: 2px; transform: rotate(-20deg); transform-origin: left; animation: sbd-arm 6s ease-in-out infinite; }
.scn-sheriff-brothers-dispute .philip { position:absolute; bottom:25%; left:55%; width:28px; height:52px; background: linear-gradient(180deg, #5a6a7a 0%, #2a3a4a 100%); border-radius: 40% 40% 20% 20% / 50% 50% 20% 20%; transform-origin: center bottom; animation: sbd-defiant 8s ease-in-out infinite; }
.scn-sheriff-brothers-dispute .philip::before { content:''; position:absolute; top:15%; left:-8px; width:18px; height:18px; background: radial-gradient(circle at 50% 50%, #8a7a5a 0%, #5a4a3a 100%); border-radius: 50%; }
.scn-sheriff-brothers-dispute .sheriff { position:absolute; bottom:25%; left:42%; width:30px; height:55px; background: linear-gradient(180deg, #7a6a5a 0%, #4a3a2a 100%); border-radius: 30% 30% 20% 20% / 40% 40% 20% 20%; animation: sbd-look 10s ease-in-out infinite; }
.scn-sheriff-brothers-dispute .harsh-light { position:absolute; top:0; left:35%; width:30%; height:100%; background: linear-gradient(180deg, rgba(255,255,255,.4) 0%, rgba(255,255,255,.1) 50%, transparent 100%); clip-path: polygon(30% 0%, 70% 0%, 100% 100%, 0% 100%); animation: sbd-flicker 4s ease-in-out infinite alternate; }
.scn-sheriff-brothers-dispute .shackles { position:absolute; bottom:30%; left:40%; width:20px; height:15px; border: 3px solid #6a6a7a; border-radius: 4px; background: #4a4a5a; box-shadow: 0 2px 4px rgba(0,0,0,.5); animation: sbd-shake 7s ease-in-out infinite; }
@keyframes sbd-point { 0% { transform: translateX(0); } 25% { transform: translateX(3px); } 50% { transform: translateX(0); } 75% { transform: translateX(2px); } 100% { transform: translateX(0); } }
@keyframes sbd-arm { 0% { transform: rotate(-20deg); } 25% { transform: rotate(-40deg); } 50% { transform: rotate(-15deg); } 75% { transform: rotate(-35deg); } 100% { transform: rotate(-20deg); } }
@keyframes sbd-defiant { 0% { transform: rotate(0deg) scaleX(1); } 25% { transform: rotate(3deg) scaleX(.95); } 50% { transform: rotate(-2deg) scaleX(1); } 75% { transform: rotate(4deg) scaleX(.95); } 100% { transform: rotate(0deg) scaleX(1); } }
@keyframes sbd-look { 0% { transform: translateX(0); } 30% { transform: translateX(5px); } 60% { transform: translateX(-5px); } 100% { transform: translateX(0); } }
@keyframes sbd-flicker { 0% { opacity:.3; } 50% { opacity:.9; } 100% { opacity:.4; } }
@keyframes sbd-shake { 0%,100% { transform: rotate(0deg); } 25% { transform: rotate(5deg); } 75% { transform: rotate(-5deg); } }

.scn-philip-chooses-bastard { background: linear-gradient(180deg, #5a2a1a 0%, #8a4a2a 30%, #c87a2a 60%, #ffd060 100%), radial-gradient(ellipse at 50% 30%, #ffd060 0%, transparent 70%); }
.scn-philip-chooses-bastard .canopy { position:absolute; top:0; left:20%; width:60%; height:30%; background: linear-gradient(135deg, #8a2a1a 0%, #c8553d 50%, #8a2a1a 100%); border-radius: 0 0 40% 40% / 0 0 60% 60%; box-shadow: 0 10px 30px rgba(0,0,0,.4); animation: pcb-sway 15s ease-in-out infinite; }
.scn-philip-chooses-bastard .backdrop { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #c87a2a 0%, #ffd060 50%, #ffe8a0 100%), radial-gradient(circle at 50% 80%, #ffe8a0 0%, transparent 50%); }
.scn-philip-chooses-bastard .elinor { position:absolute; bottom:30%; left:35%; width:35px; height:60px; background: linear-gradient(180deg, #7a5a3a 0%, #4a3a2a 100%); border-radius: 40% 40% 20% 20% / 50% 50% 20% 20%; box-shadow: 0 4px 8px rgba(0,0,0,.4); animation: pcb-offer 6s ease-in-out infinite; }
.scn-philip-chooses-bastard .elinor::before { content:''; position:absolute; top:-5px; left:50%; transform:translateX(-50%); width:30px; height:15px; background: linear-gradient(180deg, #8a5a3a 0%, #c87a2a 100%); border-radius: 50% 50% 0 0; }
.scn-philip-chooses-bastard .philip-kneeling { position:absolute; bottom:22%; left:52%; width:30px; height:50px; background: linear-gradient(180deg, #4a5a6a 0%, #2a3a4a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%; transform-origin: bottom center; animation: pcb-reach 7s ease-in-out infinite; }
.scn-philip-chooses-bastard .philip-kneeling::after { content:''; position:absolute; bottom:-15px; left:50%; transform:translateX(-50%); width:20px; height:15px; background: #2a3a4a; border-radius: 0 0 30% 30%; }
.scn-philip-chooses-bastard .scroll { position:absolute; bottom:40%; left:37%; width:8px; height:25px; background: linear-gradient(180deg, #e8d0a0 0%, #c8b080 100%); border-radius: 2px; box-shadow: 0 2px 4px rgba(0,0,0,.3); transform: rotate(-15deg); animation: pcb-offer-item 6s ease-in-out infinite; }
.scn-philip-chooses-bastard .sword { position:absolute; bottom:40%; left:42%; width:5px; height:35px; background: linear-gradient(180deg, #c8c8d0 0%, #8a8a90 100%); border-radius: 1px; box-shadow: 0 2px 4px rgba(0,0,0,.3); transform: rotate(15deg); animation: pcb-offer-item 6s ease-in-out infinite reverse; }
.scn-philip-chooses-bastard .warm-glow { position:absolute; bottom:30%; left:50%; width:120px; height:120px; transform:translateX(-50%); background: radial-gradient(circle, rgba(255,208,96,.6) 0%, rgba(255,208,96,.1) 40%, transparent 70%); animation: pcb-glow 4s ease-in-out infinite alternate; pointer-events: none; }
.scn-philip-chooses-bastard .base { position:absolute; bottom:0; left:0; right:0; height:25%; background: linear-gradient(180deg, #5a3a2a 0%, #2a1a0a 100%); border-radius: 40% 40% 0 0 / 20% 20% 0 0; }
@keyframes pcb-sway { 0% { transform: rotate(-1deg); } 50% { transform: rotate(1deg); } 100% { transform: rotate(-1deg); } }
@keyframes pcb-offer { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-3px) rotate(2deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes pcb-reach { 0% { transform: translateY(0) rotate(0deg) scaleY(1); } 30% { transform: translateY(-4px) rotate(-3deg) scaleY(1.02); } 60% { transform: translateY(2px) rotate(2deg) scaleY(.98); } 100% { transform: translateY(0) rotate(0deg) scaleY(1); } }
@keyframes pcb-offer-item { 0% { transform: rotate(-15deg) translateY(0); } 50% { transform: rotate(-10deg) translateY(-5px); } 100% { transform: rotate(-15deg) translateY(0); } }
@keyframes pcb-glow { 0% { opacity:.6; transform: translateX(-50%) scale(.9); } 100% { opacity:1; transform: translateX(-50%) scale(1.2); } }

.scn-lady-faulconbridge-confession { background: linear-gradient(180deg, #87ceeb 0%, #ffd060 30%, #ffb347 60%, #6a8a3a 100%), radial-gradient(ellipse at 70% 20%, #ffffff 0%, transparent 50%); }
.scn-lady-faulconbridge-confession .sky-sunlit { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #b0d4f1 0%, #ffd060 100%); animation: lfc-sky 12s ease-in-out infinite alternate; }
.scn-lady-faulconbridge-confession .garden-hedge { position:absolute; bottom:30%; left:0; right:0; height:20%; background: linear-gradient(180deg, #6a8a3a 0%, #4a6a2a 100%); border-radius: 60% 40% 0 0 / 100% 80% 0 0; box-shadow: inset 0 10px 20px rgba(0,0,0,.2); }
.scn-lady-faulconbridge-confession .path { position:absolute; bottom:0; left:30%; width:40%; height:35%; background: linear-gradient(180deg, #d0c8a0 0%, #a09870 100%); border-radius: 20% 20% 0 0 / 40% 40% 0 0; transform: perspective(200px) rotateX(20deg); }
.scn-lady-faulconbridge-confession .lady-faulconbridge { position:absolute; bottom:28%; left:45%; width:30px; height:55px; background: linear-gradient(180deg, #8a7a6a 0%, #5a4a3a 100%); border-radius: 40% 40% 20% 20% / 50% 50% 20% 20%; animation: lfc-turn 8s ease-in-out infinite; }
.scn-lady-faulconbridge-confession .lady-faulconbridge::before { content:''; position:absolute; top:5px; left:50%; transform:translateX(-50%); width:22px; height:20px; background: #7a6a5a; border-radius: 50%; }
.scn-lady-faulconbridge-confession .bastard-son { position:absolute; bottom:25%; left:55%; width:32px; height:58px; background: linear-gradient(180deg, #4a5a6a 0%, #2a3a4a 100%); border-radius: 40% 40% 20% 20% / 50% 50% 20% 20%; animation: lfc-stand 10s ease-in-out infinite; }
.scn-lady-faulconbridge-confession .bastard-son::before { content:''; position:absolute; top:5px; left:50%; transform:translateX(-50%); width:24px; height:22px; background: #3a4a5a; border-radius: 50%; }
.scn-lady-faulconbridge-confession .sun-flare { position:absolute; top:10%; left:70%; width:100px; height:100px; background: radial-gradient(circle, rgba(255,255,255,.8) 0%, rgba(255,255,255,.2) 30%, transparent 70%); border-radius: 50%; transform: translate(-50%, -50%); animation: lfc-flare 6s ease-in-out infinite alternate; }
.scn-lady-faulconbridge-confession .leaves { position:absolute; top:20%; left:10%; width:100%; height:100%; background-image: radial-gradient(4px 6px at 10% 20%, #6a8a3a 0%, transparent 100%), radial-gradient(3px 5px at 30% 40%, #8aaa5a 0%, transparent 100%), radial-gradient(5px 8px at 60% 10%, #4a6a2a 0%, transparent 100%), radial-gradient(4px 6px at 80% 30%, #6a8a3a 0%, transparent 100%); background-size: 200% 200%; animation: lfc-leaves 25s linear infinite; pointer-events: none; }
@keyframes lfc-sky { 0% { opacity:.8; } 50% { opacity:1; } 100% { opacity:.9; } }
@keyframes lfc-turn { 0% { transform: rotate(0deg) translateX(0); } 30% { transform: rotate(-15deg) translateX(-5px); } 60% { transform: rotate(5deg) translateX(2px); } 100% { transform: rotate(0deg) translateX(0); } }
@keyframes lfc-stand { 0% { transform: translateY(0); } 25% { transform: translateY(-3px); } 50% { transform: translateY(1px); } 75% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes lfc-flare { 0% { opacity:.4; transform: translate(-50%, -50%) scale(.8); } 100% { opacity:1; transform: translate(-50%, -50%) scale(1.2); } }
@keyframes lfc-leaves { 0% { background-position: 0% 0%; } 100% { background-position: 100% 100%; } }
/* end per-scene blocks */
