/* 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-item-cat-on-corpse {
  background: 
    linear-gradient(180deg, #0e0e1a 0%, #1a0a0a 40%, #0d0505 100%),
    radial-gradient(ellipse at 50% 100%, #2a1010 0%, transparent 70%);
}
.scn-item-cat-on-corpse .bg-wall {
  position: absolute;
  inset: 0 0 30% 0;
  background: linear-gradient(180deg, #1a1a2e 0%, #0d0d1a 80%);
  border-radius: 0 0 20% 20%/0 0 10% 10%;
  animation: icc-wall 20s ease-in-out infinite alternate;
}
.scn-item-cat-on-corpse .floor {
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 30%;
  background: linear-gradient(180deg, #1a0a0a 0%, #0d0505 100%);
  border-radius: 40% 40% 0 0/60% 60% 0 0;
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.6);
  animation: icc-floor 15s ease-in-out infinite alternate;
}
.scn-item-cat-on-corpse .corpse {
  position: absolute;
  bottom: 28%;
  left: 50%;
  width: 40px;
  height: 80px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a10 100%);
  border-radius: 40% 40% 20% 20%/50% 50% 30% 30%;
  box-shadow: 0 4px 10px rgba(0,0,0,0.8);
  animation: icc-corpse-sway 10s ease-in-out infinite;
}
.scn-item-cat-on-corpse .cat {
  position: absolute;
  bottom: 68%;
  left: 50%;
  width: 28px;
  height: 24px;
  transform: translateX(-50%) scale(0.95);
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a1a 100%);
  border-radius: 50% 50% 40% 40%/60% 60% 40% 40%;
  box-shadow: 0 -2px 6px rgba(0,0,0,0.5);
  animation: icc-cat-breathe 4s ease-in-out infinite;
}
.scn-item-cat-on-corpse .eye {
  position: absolute;
  bottom: 74%;
  left: 51%;
  width: 8px;
  height: 8px;
  transform: translateX(-50%);
  background: radial-gradient(circle, #e06030 0%, #b04020 70%);
  border-radius: 50%;
  box-shadow: 0 0 14px 4px rgba(200,80,40,0.7), 0 0 28px 8px rgba(200,80,40,0.3);
  animation: icc-eye-flicker 2.5s ease-in-out infinite;
}
.scn-item-cat-on-corpse .gore {
  position: absolute;
  bottom: 35%;
  left: 45%;
  width: 12px;
  height: 18px;
  background: radial-gradient(ellipse, #702243 0%, #4a1222 70%);
  border-radius: 50%;
  filter: blur(3px);
  opacity: 0.7;
  animation: icc-gore-drip 5s ease-in-out infinite;
}
.scn-item-cat-on-corpse .shadow {
  position: absolute;
  bottom: 26%;
  left: 40%;
  width: 80px;
  height: 40px;
  background: radial-gradient(ellipse, rgba(0,0,0,0.4) 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(8px);
  animation: icc-shadow-pulse 8s ease-in-out infinite alternate;
}
@keyframes icc-wall { 0% { opacity:0.9; } 50% { opacity:1; } 100% { opacity:0.85; } }
@keyframes icc-floor { 0% { opacity:0.6; } 50% { opacity:0.8; } 100% { opacity:0.5; } }
@keyframes icc-corpse-sway {
  0% { transform: translateX(-50%) rotate(0deg); }
  50% { transform: translateX(-50%) rotate(1deg); }
  100% { transform: translateX(-50%) rotate(-0.5deg); }
}
@keyframes icc-cat-breathe {
  0% { transform: translateX(-50%) scale(0.95); }
  50% { transform: translateX(-50%) scale(1.02); }
  100% { transform: translateX(-50%) scale(0.95); }
}
@keyframes icc-eye-flicker {
  0% { opacity:0.6; transform: scale(0.9); }
  50% { opacity:1; transform: scale(1.1); }
  100% { opacity:0.8; transform: scale(1); }
}
@keyframes icc-gore-drip {
  0% { transform: translateY(0) scale(1); opacity:0.5; }
  50% { transform: translateY(4px) scale(0.9); opacity:0.8; }
  100% { transform: translateY(0) scale(1); opacity:0.5; }
}
@keyframes icc-shadow-pulse {
  0% { opacity:0.3; transform: scale(0.95); }
  50% { opacity:0.5; transform: scale(1.05); }
  100% { opacity:0.3; transform: scale(0.95); }
}

.scn-relief-days-pass {
  background:
    linear-gradient(180deg, #0f172a 0%, #1e293b 40%, #334155 100%),
    radial-gradient(ellipse at 50% 80%, #475569 0%, transparent 70%);
}
.scn-relief-days-pass .floor  { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #2d3a4a 0%, #1a2330 100%); border-radius: 8% 8% 0 0 / 12% 12% 0 0; box-shadow: inset 0 6px 12px rgba(0,0,0,.3); }
.scn-relief-days-pass .wall   { position:absolute; inset:0 0 30% 0; background: linear-gradient(135deg, #2a3a4a 0%, #1c2840 100%); }
.scn-relief-days-pass .window { position:absolute; top:18%; left:50%; width:100px; height:130px; transform:translateX(-50%); border:6px solid #3a4a5a; background: linear-gradient(180deg, #0f2a3a 0%, #1a3a4a 100%); border-radius:4% 4% 8% 8%; box-shadow: inset 0 0 40px rgba(100,180,220,.15); overflow:hidden; }
.scn-relief-days-pass .window::after { content:''; position:absolute; inset:0; background: linear-gradient(180deg, transparent 0%, rgba(200,230,255,0.12) 100%); }
.scn-relief-days-pass .moonlight { position:absolute; top:22%; left:50%; width:260px; height:180px; transform:translateX(-50%); background: radial-gradient(ellipse at 50% 0%, rgba(180,220,255,0.1) 0%, transparent 70%); pointer-events:none; animation: rdp-moon 10s ease-in-out infinite alternate; }
.scn-relief-days-pass .bed      { position:absolute; bottom:24%; left:20%; right:20%; height:28%; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a1a 100%); border-radius:20% 20% 6% 6% / 40% 40% 12% 12%; box-shadow: 0 8px 24px rgba(0,0,0,.5); }
.scn-relief-days-pass .pillow   { position:absolute; bottom:40%; left:55%; width:50px; height:30px; background: radial-gradient(ellipse, #8a7a6a 0%, #5a4a3a 100%); border-radius:50%; transform:rotate(-10deg); box-shadow: 0 4px 8px rgba(0,0,0,.4); }
.scn-relief-days-pass .figure   { position:absolute; bottom:28%; left:30%; width:40px; height:100px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a1a 100%); border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%; transform-origin: bottom center; animation: rdp-sleep 6s ease-in-out infinite alternate; }
.scn-relief-days-pass .shadow-bed { position:absolute; bottom:20%; left:15%; right:15%; height:20%; background: radial-gradient(ellipse at 50% 0%, rgba(0,0,0,0.4) 0%, transparent 70%); pointer-events:none; }
@keyframes rdp-moon   { 0% { opacity:.6; transform:translateX(-50%) scale(1); } 50% { opacity:.8; transform:translateX(-50%) scale(1.05); } 100% { opacity:.5; transform:translateX(-50%) scale(.95); } }
@keyframes rdp-sleep   { 0% { transform: translateY(0) rotate(-2deg); } 50% { transform: translateY(-4px) rotate(2deg); } 100% { transform: translateY(0) rotate(0deg); } }

.scn-freedom-breathed {
  background:
    linear-gradient(180deg, #fdf3e0 0%, #fce4c0 30%, #f0c080 70%, #d0a050 100%),
    radial-gradient(ellipse at 70% 50%, #ffe8c0 0%, transparent 60%);
}
.scn-freedom-breathed .wall    { position:absolute; inset:0 0 25% 0; background: linear-gradient(135deg, #e8d0a0 0%, #c8a870 100%); }
.scn-freedom-breathed .window  { position:absolute; top:20%; left:65%; width:140px; height:200px; background: linear-gradient(180deg, #fefdf0 0%, #f0e0a0 100%); border:8px solid #8a6030; border-radius:6% 6% 10% 10%; box-shadow: inset 0 0 60px #fff8d0; }
.scn-freedom-breathed .window::before { content:''; position:absolute; inset:0; background: linear-gradient(135deg, rgba(255,255,200,0.3) 0%, transparent 100%); }
.scn-freedom-breathed .sunbeam { position:absolute; top:25%; left:68%; width:30px; height:200px; background: linear-gradient(180deg, rgba(255,255,200,0.15) 0%, transparent 100%); transform:rotate(-15deg); transform-origin: top center; animation: fbr-beam 8s ease-in-out infinite alternate; }
.scn-freedom-breathed .desk    { position:absolute; bottom:20%; left:10%; right:50%; height:40%; background: linear-gradient(180deg, #6a5040 0%, #4a3020 100%); border-radius:4% 4% 12% 12% / 8% 8% 20% 20%; box-shadow: 0 8px 20px rgba(0,0,0,.5); }
.scn-freedom-breathed .book    { position:absolute; bottom:40%; left:18%; width:40px; height:28px; background: linear-gradient(180deg, #3a2a20 0%, #1a100a 100%); border-radius:10% 10% 20% 20%; transform:rotate(10deg); box-shadow: 0 2px 6px rgba(0,0,0,.4); }
.scn-freedom-breathed .figure  { position:absolute; bottom:22%; left:22%; width:50px; height:140px; background: linear-gradient(180deg, #5a4a3a 0%, #2a1a1a 100%); border-radius: 40% 40% 35% 35% / 55% 55% 35% 35%; transform-origin: bottom center; animation: fbr-stand 4s ease-in-out infinite alternate; }
.scn-freedom-breathed .figure::before { content:''; position:absolute; top:-15px; left:50%; width:40px; height:40px; transform:translateX(-50%); background: linear-gradient(135deg, #4a3a2a 0%, #2a1a1a 100%); border-radius:50%; }
.scn-freedom-breathed .chair   { position:absolute; bottom:20%; left:12%; width:50px; height:60px; background: linear-gradient(180deg, #5a4030 0%, #3a2010 100%); border-radius:20% 20% 10% 10%; transform:rotate(5deg); box-shadow: 0 4px 12px rgba(0,0,0,.4); }
@keyframes fbr-beam  { 0% { opacity:.5; transform:rotate(-15deg) scaleX(1); } 50% { opacity:.8; transform:rotate(-12deg) scaleX(1.2); } 100% { opacity:.6; transform:rotate(-18deg) scaleX(.9); } }
@keyframes fbr-stand  { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-3px) rotate(1deg); } 100% { transform: translateY(0) rotate(-1deg); } }

.scn-police-arrive {
  background:
    linear-gradient(180deg, #ffedd5 0%, #fed7aa 30%, #fdba74 70%, #cbd5e1 100%),
    radial-gradient(ellipse at 30% 40%, #fff7ed 0%, transparent 50%);
}
.scn-police-arrive .floor    { position:absolute; bottom:0; left:0; right:0; height:35%; background: linear-gradient(180deg, #a08060 0%, #704c30 100%); border-radius: 6% 6% 0 0 / 10% 10% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,.3); }
.scn-police-arrive .wall-left  { position:absolute; bottom:35%; left:0; width:30%; height:65%; background: linear-gradient(180deg, #d4c4b0 0%, #b8a088 100%); border-right:4px solid #8a7a6a; }
.scn-police-arrive .wall-right { position:absolute; bottom:35%; right:0; width:30%; height:65%; background: linear-gradient(180deg, #d4c4b0 0%, #b8a088 100%); border-left:4px solid #8a7a6a; }
.scn-police-arrive .door     { position:absolute; bottom:35%; left:50%; width:70px; height:120px; transform:translateX(-50%); background: linear-gradient(180deg, #7a6030 0%, #5a4018 100%); border-radius:8% 8% 4% 4%; box-shadow: 0 4px 12px rgba(0,0,0,.4), inset 0 0 20px rgba(0,0,0,.3); }
.scn-police-arrive .officer-1 { position:absolute; bottom:30%; left:25%; width:40px; height:110px; background: linear-gradient(180deg, #2a3a4a 0%, #1a2835 100%); border-radius: 30% 30% 25% 25% / 50% 50% 30% 30%; transform-origin: bottom center; animation: par-officer1 3s ease-in-out infinite alternate; }
.scn-police-arrive .officer-1::after { content:''; position:absolute; top:-18px; left:50%; width:35px; height:35px; transform:translateX(-50%); background: linear-gradient(135deg, #3a4a5a 0%, #1a2a3a 100%); border-radius:50%; box-shadow: 0 2px 4px rgba(0,0,0,.3); }
.scn-police-arrive .officer-2 { position:absolute; bottom:30%; left:40%; width:40px; height:110px; background: linear-gradient(180deg, #2a3a4a 0%, #1a2835 100%); border-radius: 30% 30% 25% 25% / 50% 50% 30% 30%; transform-origin: bottom center; animation: par-officer2 4s ease-in-out infinite alternate; }
.scn-police-arrive .officer-2::after { content:''; position:absolute; top:-18px; left:50%; width:35px; height:35px; transform:translateX(-50%); background: linear-gradient(135deg, #3a4a5a 0%, #1a2a3a 100%); border-radius:50%; box-shadow: 0 2px 4px rgba(0,0,0,.3); }
.scn-police-arrive .host     { position:absolute; bottom:30%; right:25%; width:45px; height:120px; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 35% 35% 30% 30% / 55% 55% 30% 30%; transform-origin: bottom center; animation: par-host 5s ease-in-out infinite; }
.scn-police-arrive .host::after { content:''; position:absolute; top:-20px; left:50%; width:38px; height:38px; transform:translateX(-50%); background: linear-gradient(135deg, #6a5a4a 0%, #3a2a1a 100%); border-radius:50%; }
.scn-police-arrive .table    { position:absolute; bottom:28%; left:20%; right:20%; height:15%; background: linear-gradient(180deg, #7a6040 0%, #5a4020 100%); border-radius:10% 10% 4% 4% / 30% 30% 10% 10%; box-shadow: 0 4px 12px rgba(0,0,0,.4); }
@keyframes par-officer1 { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-2px) rotate(1deg); } 100% { transform: translateY(0) rotate(-1deg); } }
@keyframes par-officer2 { 0% { transform: translateY(0) rotate(-1deg); } 50% { transform: translateY(-3px) rotate(2deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes par-host     { 0% { transform: translateY(0) rotate(0deg); } 25% { transform: translateY(-2px) rotate(1deg); } 50% { transform: translateY(0) rotate(-1deg); } 75% { transform: translateY(-3px) rotate(0deg); } 100% { transform: translateY(0) rotate(1deg); } }

.scn-police-investigate-cellar {
  background:
    linear-gradient(180deg, #1e1b1a 0%, #2c2826 30%, #3a3432 70%, #4a423e 100%),
    radial-gradient(ellipse at 50% 60%, #3a3432 0%, transparent 70%);
}
.scn-police-investigate-cellar .stone-wall { position:absolute; inset:0 0 25% 0; background: repeating-linear-gradient(90deg, #3a3432 0px, #4a423e 30px, #3a3432 31px, #3a3432 31px); /* simulating stone texture? Better: */ background: linear-gradient(135deg, #4a423e 0%, #2c2826 100%); border-bottom:4px solid #1a1716; }
.scn-police-investigate-cellar .floor     { position:absolute; bottom:0; left:0; right:0; height:25%; background: linear-gradient(180deg, #3a3432 0%, #1e1b1a 100%); border-radius:6% 6% 0 0 / 8% 8% 0 0; box-shadow: inset 0 6px 20px rgba(0,0,0,.6); }
.scn-police-investigate-cellar .arch      { position:absolute; bottom:25%; width:120px; height:150px; background: linear-gradient(180deg, #4a423e 0%, #2c2826 100%); border-radius: 30% 30% 10% 10% / 60% 60% 15% 15%; box-shadow: inset 0 -20px 40px rgba(0,0,0,.5); }
.scn-police-investigate-cellar .left-arch  { left:5%; }
.scn-police-investigate-cellar .right-arch { right:5%; }
.scn-police-investigate-cellar .lantern   { position:absolute; bottom:35%; left:50%; width:20px; height:30px; transform:translateX(-50%); background: radial-gradient(ellipse, #f0c060 0%, #b08030 100%); border-radius:30% 30% 20% 20%; box-shadow: 0 0 30px 8px rgba(180,120,60,0.6), 0 0 60px 15px rgba(180,120,60,0.3); animation: pic-lantern 5s ease-in-out infinite alternate; }
.scn-police-investigate-cellar .figure    { position:absolute; bottom:22%; left:45%; width:40px; height:130px; background: linear-gradient(180deg, #3a2a1a 0%, #1a100a 100%); border-radius: 30% 30% 25% 25% / 50% 50% 30% 30%; transform-origin: bottom center; animation: pic-figure 6s ease-in-out infinite; }
.scn-police-investigate-cellar .figure::before { content:''; position:absolute; top:-20px; left:50%; width:36px; height:36px; transform:translateX(-50%); background: linear-gradient(135deg, #4a3a2a 0%, #1a100a 100%); border-radius:50%; }
.scn-police-investigate-cellar .barrel    { position:absolute; bottom:20%; left:18%; width:50px; height:60px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a10 100%); border-radius:40% 40% 20% 20% / 60% 60% 30% 30%; box-shadow: 0 4px 12px rgba(0,0,0,.5); }
.scn-police-investigate-cellar .shadow    { position:absolute; bottom:20%; left:0; right:0; height:30%; background: radial-gradient(ellipse at 50% 0%, rgba(0,0,0,0.6) 0%, transparent 80%); pointer-events:none; }
@keyframes pic-lantern { 0% { opacity:.7; box-shadow: 0 0 20px 6px rgba(180,120,60,0.5); } 50% { opacity:1; box-shadow: 0 0 40px 12px rgba(200,150,80,0.7); } 100% { opacity:.8; box-shadow: 0 0 25px 8px rgba(180,120,60,0.5); } }
@keyframes pic-figure { 0% { transform: translateY(0) translateX(0) rotate(0deg); } 25% { transform: translateY(-2px) translateX(4px) rotate(1deg); } 50% { transform: translateY(0) translateX(8px) rotate(-1deg); } 75% { transform: translateY(-3px) translateX(4px) rotate(0deg); } 100% { transform: translateY(0) translateX(0) rotate(1deg); } }

.scn-cellar-anger { background: linear-gradient(180deg, #1a1410 0%, #2b221e 40%, #161210 100%), radial-gradient(ellipse at 50% 70%, #3a2e28 0%, transparent 60%); }
.scn-cellar-anger .bg-wall { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #2b221e 0%, #1a1410 100%); box-shadow: inset 0 0 40px rgba(0,0,0,.5); }
.scn-cellar-anger .floor { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #2b1f18 0%, #1a0f0a 100%); }
.scn-cellar-anger .light-glow { position:absolute; top:30%; left:45%; width:60px; height:80px; background: radial-gradient(circle, #d4a060 0%, transparent 70%); border-radius:50%; filter: blur(6px); animation: ca-flicker 2s ease-in-out infinite; }
.scn-cellar-anger .man-figure { position:absolute; bottom:28%; left:30%; width:24px; height:50px; background: linear-gradient(180deg, #2b1f18 0%, #0f0a06 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ca-manrise 3s ease-in-out infinite; }
.scn-cellar-anger .wife-figure { position:absolute; bottom:28%; left:55%; width:20px; height:44px; background: linear-gradient(180deg, #3a2a20 0%, #1a0f0a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ca-wifecower 4s ease-in-out infinite; }
.scn-cellar-anger .chair { position:absolute; bottom:18%; left:42%; width:30px; height:20px; background: linear-gradient(180deg, #3a2a20 0%, #1a0f0a 100%); border-radius: 10% 10% 20% 20%; transform: rotate(5deg); animation: ca-chairshake 5s ease-in-out infinite; }
.scn-cellar-anger .shadow-man { position:absolute; bottom:28%; left:30%; width:28px; height:18px; background: rgba(0,0,0,.4); border-radius: 50%; filter: blur(4px); transform: translateX(2px); animation: ca-shadowmove 3s ease-in-out infinite; }
@keyframes ca-flicker { 0% { opacity:.6; transform: scale(1) } 30% { opacity:1; transform: scale(1.02) } 60% { opacity:.7; transform: scale(.98) } 100% { opacity:.6; transform: scale(1) } }
@keyframes ca-manrise { 0% { transform: translateY(0) rotate(0) } 25% { transform: translateY(-3px) rotate(2deg) } 50% { transform: translateY(0) rotate(-1deg) } 75% { transform: translateY(-2px) rotate(1deg) } 100% { transform: translateY(0) rotate(0) } }
@keyframes ca-wifecower { 0% { transform: translateX(0) scaleY(1) rotate(0) } 25% { transform: translateX(4px) scaleY(.95) rotate(-2deg) } 50% { transform: translateX(-2px) scaleY(1) rotate(0) } 75% { transform: translateX(3px) scaleY(.97) rotate(2deg) } 100% { transform: translateX(0) scaleY(1) rotate(0) } }
@keyframes ca-chairshake { 0% { transform: rotate(5deg) } 25% { transform: rotate(8deg) } 50% { transform: rotate(3deg) } 75% { transform: rotate(7deg) } 100% { transform: rotate(5deg) } }
@keyframes ca-shadowmove { 0% { transform: translateX(2px) scaleX(1) } 50% { transform: translateX(6px) scaleX(1.1) } 100% { transform: translateX(2px) scaleX(1) } }

.scn-item-axe-murder { background: linear-gradient(180deg, #1f1410 0%, #2b1f18 50%, #0f0a06 100%), radial-gradient(ellipse at 50% 30%, #3a2a20 0%, transparent 60%); }
.scn-item-axe-murder .bg-wall { position:absolute; inset:0 0 35% 0; background: linear-gradient(180deg, #2b1f18 0%, #1a0f0a 100%); box-shadow: inset 0 0 30px rgba(0,0,0,.6); }
.scn-item-axe-murder .floor { position:absolute; bottom:0; left:0; right:0; height:35%; background: linear-gradient(180deg, #2b1f18 0%, #0f0a06 100%); }
.scn-item-axe-murder .light-glow { position:absolute; top:20%; left:40%; width:70px; height:90px; background: radial-gradient(circle, #c89050 0%, transparent 70%); border-radius:50%; filter: blur(8px); animation: ax-flicker 5.5s ease-in-out infinite; }
.scn-item-axe-murder .man-arm { position:absolute; bottom:32%; left:32%; width:20px; height:60px; background: linear-gradient(180deg, #2b1f18 0%, #0f0a06 100%); border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%; transform-origin: bottom center; transform: rotate(20deg); animation: ax-armrise 17s ease-in-out infinite; }
.scn-item-axe-murder .axe { position:absolute; bottom:38%; left:28%; width:8px; height:40px; background: linear-gradient(180deg, #5a3a20 0%, #2b1f18 100%); border-radius: 10% 10% 40% 40%; transform-origin: bottom center; transform: rotate(20deg); animation: ax-axeswing 16s ease-in-out infinite; }
.scn-item-axe-murder .wife-figure { position:absolute; bottom:28%; left:55%; width:22px; height:46px; background: linear-gradient(180deg, #3a2a20 0%, #1a0f0a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: ax-wifefall 16s ease-in-out infinite; }
.scn-item-axe-murder .shadow-wife { position:absolute; bottom:28%; left:55%; width:24px; height:16px; background: rgba(0,0,0,.5); border-radius: 50%; filter: blur(4px); transform: translateX(4px); animation: ax-shadowfall 16.5s ease-in-out infinite; }
@keyframes ax-flicker { 0% { opacity:.7; transform: scale(1) } 20% { opacity:1; transform: scale(1.03) } 40% { opacity:.5; transform: scale(.95) } 60% { opacity:.9; transform: scale(1.01) } 80% { opacity:.6; transform: scale(.98) } 100% { opacity:.7; transform: scale(1) } }
@keyframes ax-armrise { 0% { transform: rotate(20deg) } 25% { transform: rotate(-10deg) } 50% { transform: rotate(20deg) } 75% { transform: rotate(0deg) } 100% { transform: rotate(20deg) } }
@keyframes ax-axeswing { 0% { transform: rotate(20deg) translateY(0) } 25% { transform: rotate(-10deg) translateY(-2px) } 50% { transform: rotate(20deg) translateY(0) } 75% { transform: rotate(0deg) translateY(-1px) } 100% { transform: rotate(20deg) translateY(0) } }
@keyframes ax-wifefall { 0% { transform: translateX(0) rotate(0) scaleY(1) } 30% { transform: translateX(-10px) rotate(-5deg) scaleY(.9) } 60% { transform: translateX(-6px) rotate(-2deg) scaleY(.95) } 100% { transform: translateX(0) rotate(0) scaleY(1) } }
@keyframes ax-shadowfall { 0% { transform: translateX(4px) scaleX(1) } 30% { transform: translateX(-6px) scaleX(.8) } 60% { transform: translateX(0) scaleX(.9) } 100% { transform: translateX(4px) scaleX(1) } }

.scn-concealing-body { background: linear-gradient(180deg, #1a1210 0%, #2b1f18 40%, #0f0a06 100%), radial-gradient(ellipse at 40% 60%, #3a2a20 0%, transparent 70%); }
.scn-concealing-body .bg-wall { position:absolute; inset:0 0 25% 0; background: linear-gradient(180deg, #2b1f18 0%, #1a0f0a 100%); box-shadow: inset 0 0 50px rgba(0,0,0,.4); }
.scn-concealing-body .floor { position:absolute; bottom:0; left:0; right:0; height:25%; background: linear-gradient(180deg, #1f1410 0%, #0f0a06 100%); }
.scn-concealing-body .light-glow { position:absolute; top:15%; right:25%; width:55px; height:70px; background: radial-gradient(circle, #b08040 0%, transparent 70%); border-radius:50%; filter: blur(5px); animation: cb-flicker 3s ease-in-out infinite; }
.scn-concealing-body .man-figure { position:absolute; bottom:20%; left:28%; width:22px; height:48px; background: linear-gradient(180deg, #2b1f18 0%, #0f0a06 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: cb-mantremble 2.5s ease-in-out infinite; }
.scn-concealing-body .body-wrapped { position:absolute; bottom:15%; left:48%; width:28px; height:40px; background: linear-gradient(180deg, #a07050 0%, #704030 100%); border-radius: 40% 40% 20% 20%; transform: rotate(5deg); animation: cb-bodyshift 6s ease-in-out infinite; }
.scn-concealing-body .crate { position:absolute; bottom:12%; left:55%; width:50px; height:30px; background: linear-gradient(180deg, #4a2a1a 0%, #2a1a0a 100%); border-radius: 10% 10% 20% 20%; box-shadow: inset 0 0 10px rgba(0,0,0,.6); animation: cb-cratecreak 8s ease-in-out infinite; }
.scn-concealing-body .rope { position:absolute; bottom:22%; left:50%; width:20px; height:2px; background: #704030; border-radius: 2px; transform: rotate(30deg); animation: cb-ropewiggle 4s ease-in-out infinite; }
@keyframes cb-flicker { 0% { opacity:.8; transform: scale(1) } 30% { opacity:1; transform: scale(1.02) } 50% { opacity:.6; transform: scale(.97) } 70% { opacity:.9; transform: scale(1.01) } 100% { opacity:.8; transform: scale(1) } }
@keyframes cb-mantremble { 0% { transform: translateX(0) rotate(0) } 20% { transform: translateX(3px) rotate(2deg) } 40% { transform: translateX(-2px) rotate(-1deg) } 60% { transform: translateX(4px) rotate(1deg) } 80% { transform: translateX(-3px) rotate(-2deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes cb-bodyshift { 0% { transform: rotate(5deg) translateY(0) } 30% { transform: rotate(3deg) translateY(-2px) } 60% { transform: rotate(7deg) translateY(-1px) } 100% { transform: rotate(5deg) translateY(0) } }
@keyframes cb-cratecreak { 0% { transform: scaleY(1) } 25% { transform: scaleY(1.03) } 50% { transform: scaleY(.97) } 75% { transform: scaleY(1.02) } 100% { transform: scaleY(1) } }
@keyframes cb-ropewiggle { 0% { transform: rotate(30deg) } 25% { transform: rotate(35deg) } 50% { transform: rotate(25deg) } 75% { transform: rotate(32deg) } 100% { transform: rotate(30deg) } }

.scn-wall-up-cellar { background: linear-gradient(180deg, #1a1410 0%, #2b1f18 50%, #0f0a06 100%), radial-gradient(ellipse at 50% 40%, #3a2a20 0%, transparent 60%); }
.scn-wall-up-cellar .bg-wall { position:absolute; inset:0 0 20% 0; background: linear-gradient(180deg, #2b1f18 0%, #1a0f0a 100%); box-shadow: inset 0 0 40px rgba(0,0,0,.5); }
.scn-wall-up-cellar .floor { position:absolute; bottom:0; left:0; right:0; height:20%; background: linear-gradient(180deg, #1f1410 0%, #0f0a06 100%); }
.scn-wall-up-cellar .light-glow { position:absolute; top:25%; left:20%; width:60px; height:80px; background: radial-gradient(circle, #c89050 0%, transparent 70%); border-radius:50%; filter: blur(6px); animation: wc-flicker 2.5s ease-in-out infinite; }
.scn-wall-up-cellar .man-figure { position:absolute; bottom:18%; left:28%; width:22px; height:46px; background: linear-gradient(180deg, #2b1f18 0%, #0f0a06 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform-origin: bottom center; animation: wc-manbuild 3s ease-in-out infinite; }
.scn-wall-up-cellar .wall-unfinished { position:absolute; bottom:10%; left:45%; width:50px; height:60px; background: repeating-linear-gradient(0deg, #3a2a20 0px, #3a2a20 8px, #4a3a30 8px, #4a3a30 16px); border-radius: 10% 10% 0 0; box-shadow: inset 0 0 15px rgba(0,0,0,.5); animation: wc-wallrise 10s ease-in-out infinite; }
.scn-wall-up-cellar .trowel { position:absolute; bottom:22%; left:36%; width:4px; height:20px; background: linear-gradient(180deg, #a08060 0%, #604030 100%); border-radius: 10% 10% 40% 40%; transform-origin: bottom center; transform: rotate(-15deg); animation: wc-trowelmove 3s ease-in-out infinite; }
.scn-wall-up-cellar .mortar-stain { position:absolute; bottom:16%; left:52%; width:12px; height:8px; background: #6a5040; border-radius: 50%; filter: blur(2px); animation: wc-stainspread 8s ease-in-out infinite; }
@keyframes wc-flicker { 0% { opacity:.7; transform: scale(1) } 25% { opacity:1; transform: scale(1.02) } 50% { opacity:.5; transform: scale(.95) } 75% { opacity:.9; transform: scale(1.01) } 100% { opacity:.7; transform: scale(1) } }
@keyframes wc-manbuild { 0% { transform: translateY(0) rotate(0) } 25% { transform: translateY(-2px) rotate(2deg) } 50% { transform: translateY(0) rotate(-1deg) } 75% { transform: translateY(-1px) rotate(1deg) } 100% { transform: translateY(0) rotate(0) } }
@keyframes wc-wallrise { 0% { height:60px } 25% { height:65px } 50% { height:55px } 75% { height:62px } 100% { height:60px } }
@keyframes wc-trowelmove { 0% { transform: rotate(-15deg) translateY(0) } 25% { transform: rotate(-10deg) translateY(-2px) } 50% { transform: rotate(-18deg) translateY(0) } 75% { transform: rotate(-12deg) translateY(-1px) } 100% { transform: rotate(-15deg) translateY(0) } }
@keyframes wc-stainspread { 0% { width:12px; height:8px; opacity:.5 } 50% { width:16px; height:10px; opacity:.8 } 100% { width:12px; height:8px; opacity:.5 } }

.scn-cat-recovery {
  background:
    linear-gradient(180deg, #1a1a2e 0%, #2a2a3e 40%, #1e1e2e 100%),
    radial-gradient(ellipse at 50% 80%, #3a3a4e 0%, transparent 60%);
}
.scn-cat-recovery .wall {
  position: absolute; inset: 0 0 35% 0;
  background: linear-gradient(180deg, #2a2a3e 0%, #1a1a2e 100%);
  animation: cr-wall 8s ease-in-out infinite alternate;
}
.scn-cat-recovery .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 35%;
  background: linear-gradient(180deg, #1a1a2a 0%, #100f1f 100%);
  box-shadow: inset 0 8px 20px rgba(0,0,0,.5);
  border-radius: 10% 10% 0 0 / 20% 20% 0 0;
}
.scn-cat-recovery .cat-body {
  position: absolute; bottom: 22%; left: 35%; width: 60px; height: 50px;
  background: linear-gradient(135deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cr-cat-body 6s ease-in-out infinite;
}
.scn-cat-recovery .cat-head {
  position: absolute; bottom: 48%; left: 35%; width: 40px; height: 36px;
  background: linear-gradient(135deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 50% 50%;
  transform-origin: 50% 100%;
  animation: cr-cat-head 6s ease-in-out infinite;
}
.scn-cat-recovery .cat-eye {
  position: absolute; bottom: 58%; left: 44%; width: 10px; height: 14px;
  background: radial-gradient(circle at 40% 40%, #b08040 0%, #806020 70%);
  border-radius: 50%;
  box-shadow: 0 0 8px 2px rgba(176,128,64,.3);
  animation: cr-eye 3s ease-in-out infinite alternate;
}
.scn-cat-recovery .bottle {
  position: absolute; bottom: 12%; left: 62%; width: 24px; height: 50px;
  background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%);
  border-radius: 30% 30% 20% 20% / 40% 40% 20% 20%;
  box-shadow: 0 4px 8px rgba(0,0,0,.4);
  animation: cr-bottle 12s ease-in-out infinite;
}
.scn-cat-recovery .shadow {
  position: absolute; bottom: 18%; left: 30%; width: 80px; height: 10px;
  background: radial-gradient(ellipse, rgba(0,0,0,.4) 0%, transparent 100%);
  border-radius: 50%;
  animation: cr-shadow 6s ease-in-out infinite;
}
.scn-cat-recovery .lamp-glow {
  position: absolute; bottom: 55%; left: 55%; width: 20px; height: 20px;
  background: radial-gradient(circle, #d0a050 0%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 30px 10px rgba(208,160,80,.3), 0 0 60px 20px rgba(208,160,80,.1);
  animation: cr-lamp 4s ease-in-out infinite alternate;
}
@keyframes cr-wall {
  0% { opacity: .9 }
  50% { opacity: 1 }
  100% { opacity: .85 }
}
@keyframes cr-cat-body {
  0% { transform: translateY(0) scaleX(1) }
  25% { transform: translateY(-2px) scaleX(1.02) }
  50% { transform: translateY(0) scaleX(1) }
  75% { transform: translateY(1px) scaleX(.98) }
  100% { transform: translateY(0) scaleX(1) }
}
@keyframes cr-cat-head {
  0%,100% { transform: rotate(0deg) }
  25% { transform: rotate(3deg) }
  75% { transform: rotate(-2deg) }
}
@keyframes cr-eye {
  0% { box-shadow: 0 0 6px 1px rgba(176,128,64,.4); opacity: .8 }
  50% { box-shadow: 0 0 12px 4px rgba(176,128,64,.7); opacity: 1 }
  100% { box-shadow: 0 0 8px 2px rgba(176,128,64,.5); opacity: .9 }
}
@keyframes cr-bottle {
  0%,100% { transform: translateY(0) rotate(0deg) }
  50% { transform: translateY(2px) rotate(2deg) }
}
@keyframes cr-shadow {
  0%,100% { opacity: .6; transform: scaleX(1) }
  50% { opacity: .8; transform: scaleX(1.1) }
}
@keyframes cr-lamp {
  0% { opacity: .5; transform: scale(.8) }
  50% { opacity: 1; transform: scale(1.1) }
  100% { opacity: .6; transform: scale(.9) }
}

.scn-spirit-of-perverseness {
  background:
    linear-gradient(180deg, #1a1a2e 0%, #2a2a3e 50%, #1e1e2e 100%),
    radial-gradient(ellipse at 50% 90%, #3a3a4e 0%, transparent 80%);
}
.scn-spirit-of-perverseness .bg-wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #2a2a3e 0%, #1a1a2e 100%);
  animation: sp-wall 10s ease-in-out infinite alternate;
}
.scn-spirit-of-perverseness .chair {
  position: absolute; bottom: 20%; left: 30%; width: 60px; height: 80px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 10% 10% 5% 5% / 20% 20% 10% 10%;
  box-shadow: 0 6px 12px rgba(0,0,0,.5);
  animation: sp-chair 7s ease-in-out infinite;
}
.scn-spirit-of-perverseness .figure-sit {
  position: absolute; bottom: 30%; left: 33%; width: 30px; height: 50px;
  background: linear-gradient(180deg, #3a3a4a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: sp-figure 6s ease-in-out infinite;
}
.scn-spirit-of-perverseness .spirit-face {
  position: absolute; bottom: 65%; left: 40%; width: 20px; height: 20px;
  background: radial-gradient(circle at 40% 40%, #c08040 0%, transparent 60%);
  border-radius: 50%;
  box-shadow: 0 0 10px 4px rgba(192,128,64,.3);
  animation: sp-face 4s ease-in-out infinite alternate;
}
.scn-spirit-of-perverseness .spirit-arm {
  position: absolute; bottom: 45%; left: 55%; width: 50px; height: 6px;
  background: linear-gradient(90deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 50%;
  transform-origin: left center;
  animation: sp-arm 5s ease-in-out infinite;
}
.scn-spirit-of-perverseness .table {
  position: absolute; bottom: 15%; left: 25%; width: 80px; height: 30px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 5% 5% 10% 10% / 10% 10% 20% 20%;
  box-shadow: 0 4px 8px rgba(0,0,0,.4);
  animation: sp-table 9s ease-in-out infinite;
}
.scn-spirit-of-perverseness .candle {
  position: absolute; bottom: 28%; left: 40%; width: 8px; height: 20px;
  background: linear-gradient(180deg, #d0a050 0%, #a08030 100%);
  border-radius: 20% 20% 10% 10% / 30% 30% 20% 20%;
  box-shadow: 0 0 12px 4px rgba(208,160,80,.3);
  animation: sp-candle 3s ease-in-out infinite alternate;
}
@keyframes sp-wall {
  0% { opacity: .85 }
  50% { opacity: 1 }
  100% { opacity: .9 }
}
@keyframes sp-chair {
  0%,100% { transform: translateY(0) }
  50% { transform: translateY(-3px) }
}
@keyframes sp-figure {
  0% { transform: translateY(0) rotate(-1deg) }
  25% { transform: translateY(-1px) rotate(0deg) }
  50% { transform: translateY(0) rotate(1deg) }
  75% { transform: translateY(-1px) rotate(0deg) }
  100% { transform: translateY(0) rotate(-1deg) }
}
@keyframes sp-face {
  0% { opacity: .5; transform: scale(.8) }
  50% { opacity: 1; transform: scale(1.1) }
  100% { opacity: .6; transform: scale(.9) }
}
@keyframes sp-arm {
  0%,100% { transform: rotate(-10deg) scaleX(1) }
  50% { transform: rotate(10deg) scaleX(1.1) }
}
@keyframes sp-table {
  0%,100% { transform: translateY(0) }
  50% { transform: translateY(-2px) }
}
@keyframes sp-candle {
  0% { box-shadow: 0 0 8px 2px rgba(208,160,80,.2); opacity: .8 }
  50% { box-shadow: 0 0 20px 6px rgba(208,160,80,.6); opacity: 1 }
  100% { box-shadow: 0 0 10px 3px rgba(208,160,80,.3); opacity: .85 }
}

.scn-perverseness-question {
  background:
    linear-gradient(180deg, #15152a 0%, #20203a 40%, #1a1a2e 100%),
    radial-gradient(ellipse at 50% 70%, #2a2a40 0%, transparent 60%);
}
.scn-perverseness-question .bg-room {
  position: absolute; inset: 0 0 20% 0;
  background: linear-gradient(180deg, #20203a 0%, #15152a 100%);
  animation: pq-bg 12s ease-in-out infinite alternate;
}
.scn-perverseness-question .figure-think {
  position: absolute; bottom: 15%; left: 40%; width: 40px; height: 70px;
  background: linear-gradient(180deg, #2a2a3a 0%, #0f0f1f 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pq-figure 7s ease-in-out infinite;
}
.scn-perverseness-question .bubble-base {
  position: absolute; bottom: 65%; left: 45%; width: 40px; height: 30px;
  background: radial-gradient(ellipse at 50% 50%, #3a3a4a 0%, transparent 70%);
  border-radius: 50%;
  animation: pq-bubble 5s ease-in-out infinite;
}
.scn-perverseness-question .bubble-top {
  position: absolute; bottom: 72%; left: 48%; width: 20px; height: 20px;
  background: radial-gradient(circle at 40% 40%, #4a4a5a 0%, transparent 60%);
  border-radius: 50%;
  animation: pq-bubble2 5s ease-in-out infinite reverse;
}
.scn-perverseness-question .bubble-curl {
  position: absolute; bottom: 68%; left: 55%; width: 12px; height: 12px;
  background: radial-gradient(circle at 50% 50%, #3a3a4a 0%, transparent 60%);
  border-radius: 50%;
  animation: pq-curl 4s ease-in-out infinite;
}
.scn-perverseness-question .bubble-dot {
  position: absolute; bottom: 75%; left: 50%; width: 6px; height: 6px;
  background: #4a4a5a;
  border-radius: 50%;
  animation: pq-dot 4s ease-in-out infinite alternate;
}
.scn-perverseness-question .floor-line {
  position: absolute; bottom: 10%; left: 20%; right: 20%; height: 4px;
  background: linear-gradient(90deg, transparent, #2a2a3a 20%, #3a3a4a 50%, #2a2a3a 80%, transparent);
  border-radius: 50%;
  filter: blur(2px);
  animation: pq-floor 9s ease-in-out infinite;
}
@keyframes pq-bg {
  0% { opacity: .85 }
  50% { opacity: 1 }
  100% { opacity: .9 }
}
@keyframes pq-figure {
  0% { transform: translateY(0) rotate(-2deg) }
  25% { transform: translateY(-3px) rotate(1deg) }
  50% { transform: translateY(0) rotate(2deg) }
  75% { transform: translateY(-2px) rotate(-1deg) }
  100% { transform: translateY(0) rotate(-2deg) }
}
@keyframes pq-bubble {
  0%,100% { transform: translateY(0) scale(1) }
  50% { transform: translateY(-10px) scale(1.1) }
}
@keyframes pq-bubble2 {
  0%,100% { transform: translateY(0) scale(.9) }
  50% { transform: translateY(-8px) scale(1.2) }
}
@keyframes pq-curl {
  0%,100% { transform: rotate(0deg) translateY(0) }
  50% { transform: rotate(10deg) translateY(-3px) }
}
@keyframes pq-dot {
  0% { opacity: .4; transform: scale(.6) }
  50% { opacity: 1; transform: scale(1.2) }
  100% { opacity: .5; transform: scale(.8) }
}
@keyframes pq-floor {
  0% { opacity: .3; transform: scaleY(1) }
  50% { opacity: .6; transform: scaleY(2) }
  100% { opacity: .4; transform: scaleY(1) }
}

.scn-perverseness-urge {
  background:
    linear-gradient(180deg, #0f0f1f 0%, #1a1a2e 40%, #141428 100%),
    radial-gradient(ellipse at 50% 80%, #2a2a3e 0%, transparent 70%);
}
.scn-perverseness-urge .bg-deep {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(180deg, #1a1a2e 0%, #0f0f1f 100%);
  animation: pu-bg 9s ease-in-out infinite alternate;
}
.scn-perverseness-urge .scales-base {
  position: absolute; bottom: 20%; left: 50%; width: 20px; height: 80px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 10% 10% 5% 5% / 30% 30% 20% 20%;
  box-shadow: 0 4px 8px rgba(0,0,0,.5);
  animation: pu-base 8s ease-in-out infinite;
}
.scn-perverseness-urge .scales-arm-left {
  position: absolute; bottom: 60%; left: 25%; width: 80px; height: 6px;
  background: linear-gradient(90deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 50%;
  transform-origin: right center;
  animation: pu-arm-left 6s ease-in-out infinite;
}
.scn-perverseness-urge .scales-arm-right {
  position: absolute; bottom: 60%; left: 45%; width: 80px; height: 6px;
  background: linear-gradient(90deg, #1a1a2a 0%, #2a2a3a 100%);
  border-radius: 50%;
  transform-origin: left center;
  animation: pu-arm-right 6s ease-in-out infinite;
}
.scn-perverseness-urge .weight-left {
  position: absolute; bottom: 45%; left: 18%; width: 20px; height: 30px;
  background: linear-gradient(180deg, #2a2a3a 0%, #0f0f1f 100%);
  border-radius: 20% 20% 10% 10% / 30% 30% 20% 20%;
  box-shadow: 0 2px 6px rgba(0,0,0,.4);
  animation: pu-weight-left 6s ease-in-out infinite;
}
.scn-perverseness-urge .weight-right {
  position: absolute; bottom: 45%; left: 62%; width: 20px; height: 30px;
  background: linear-gradient(180deg, #2a2a3a 0%, #0f0f1f 100%);
  border-radius: 20% 20% 10% 10% / 30% 30% 20% 20%;
  box-shadow: 0 2px 6px rgba(0,0,0,.4);
  animation: pu-weight-right 6s ease-in-out infinite;
}
.scn-perverseness-urge .chain-left {
  position: absolute; bottom: 52%; left: 26%; width: 2px; height: 30px;
  background: #2a2a3a;
  border-radius: 50%;
  animation: pu-chain-left 6s ease-in-out infinite;
}
.scn-perverseness-urge .chain-right {
  position: absolute; bottom: 52%; left: 72%; width: 2px; height: 30px;
  background: #2a2a3a;
  border-radius: 50%;
  animation: pu-chain-right 6s ease-in-out infinite;
}
.scn-perverseness-urge .hands {
  position: absolute; bottom: 30%; left: 45%; width: 30px; height: 30px;
  background: radial-gradient(ellipse at 50% 50%, #3a3a4a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 0 4px 8px rgba(0,0,0,.4);
  animation: pu-hands 5s ease-in-out infinite;
}
@keyframes pu-bg {
  0% { opacity: .85 }
  50% { opacity: 1 }
  100% { opacity: .9 }
}
@keyframes pu-base {
  0%,100% { transform: translateX(-50%) scaleY(1) }
  50% { transform: translateX(-50%) scaleY(1.05) }
}
@keyframes pu-arm-left {
  0%,100% { transform: rotate(5deg) }
  50% { transform: rotate(-5deg) }
}
@keyframes pu-arm-right {
  0%,100% { transform: rotate(-5deg) }
  50% { transform: rotate(5deg) }
}
@keyframes pu-weight-left {
  0%,100% { transform: translateY(0) }
  50% { transform: translateY(8px) }
}
@keyframes pu-weight-right {
  0%,100% { transform: translateY(0) }
  50% { transform: translateY(-8px) }
}
@keyframes pu-chain-left {
  0%,100% { transform: scaleY(1) }
  50% { transform: scaleY(0.8) }
}
@keyframes pu-chain-right {
  0%,100% { transform: scaleY(1) }
  50% { transform: scaleY(1.2) }
}
@keyframes pu-hands {
  0% { transform: translateY(0) rotate(-2deg) }
  25% { transform: translateY(-2px) rotate(1deg) }
  50% { transform: translateY(0) rotate(2deg) }
  75% { transform: translateY(-1px) rotate(-1deg) }
  100% { transform: translateY(0) rotate(-2deg) }
}

/* cellar-plan-preparation */
.scn-cellar-plan-preparation {
  background: linear-gradient(180deg, #1a1a2e 0%, #2a2a3e 30%, #3a3a4e 70%, #2a2a3e 100%), radial-gradient(ellipse at 60% 70%, #4a4a5e 0%, transparent 60%);
}
.scn-cellar-plan-preparation .wall {
  position: absolute; inset: 0 0 20% 0;
  background: linear-gradient(90deg, #3a3a4a 0%, #4a4a5a 20%, #3a3a4a 40%, #4a4a5a 60%, #3a3a4a 100%);
  animation: cp-wall-texture 20s ease-in-out infinite alternate;
  box-shadow: inset 0 0 30px rgba(0,0,0,0.5);
}
.scn-cellar-plan-preparation .projection {
  position: absolute; bottom: 30%; left: 55%; width: 60px; height: 120px;
  background: linear-gradient(90deg, #4a4a5a 0%, #5a5a6a 30%, #4a4a5a 100%);
  border-radius: 10% 10% 0 0;
  transform: skewX(-5deg);
  box-shadow: inset -8px 0 12px rgba(0,0,0,0.3);
  animation: cp-projection 12s ease-in-out infinite;
}
.scn-cellar-plan-preparation .table {
  position: absolute; bottom: 20%; left: 20%; width: 120px; height: 40px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 4px;
  box-shadow: 0 6px 12px rgba(0,0,0,0.6);
  animation: cp-table 15s ease-in-out infinite alternate;
}
.scn-cellar-plan-preparation .tool {
  position: absolute; bottom: 28%; left: 32%; width: 14px; height: 30px;
  background: linear-gradient(180deg, #8a7a6a 0%, #6a5a4a 100%);
  border-radius: 30% 30% 20% 20%;
  transform: rotate(10deg);
  box-shadow: 0 2px 4px rgba(0,0,0,0.4);
  animation: cp-tool 8s ease-in-out infinite;
}
.scn-cellar-plan-preparation .figure {
  position: absolute; bottom: 22%; left: 35%; width: 20px; height: 50px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 50%, #0a0a1a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: cp-figure 9s ease-in-out infinite;
}
.scn-cellar-plan-preparation .lantern-glow {
  position: absolute; bottom: 30%; left: 50%; width: 20px; height: 20px;
  background: radial-gradient(circle, #f0c068 0%, #b08040 40%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 40px 15px #c08040, 0 0 80px 30px rgba(192,128,64,0.3);
  animation: cp-glow 4s ease-in-out infinite alternate;
}
.scn-cellar-plan-preparation .shadow {
  position: absolute; bottom: 20%; left: 30%; width: 60px; height: 20px;
  background: radial-gradient(ellipse, rgba(0,0,0,0.6) 0%, transparent 100%);
  animation: cp-shadow 9s ease-in-out infinite;
}
@keyframes cp-wall-texture { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes cp-projection { 0%,100% { transform: skewX(-5deg) scaleY(1); } 50% { transform: skewX(-7deg) scaleY(1.02); } }
@keyframes cp-table { 0% { transform: translateY(0); } 50% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes cp-tool { 0%,100% { transform: rotate(10deg) translateY(0); } 50% { transform: rotate(12deg) translateY(-1px); } }
@keyframes cp-figure { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(8px) rotate(-2deg); } 50% { transform: translateX(0) rotate(0deg); } 75% { transform: translateX(-8px) rotate(2deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes cp-glow { 0% { box-shadow: 0 0 30px 10px #b08040, 0 0 60px 20px rgba(176,128,64,0.2); opacity: 0.8; } 50% { box-shadow: 0 0 50px 20px #f0c068, 0 0 100px 40px rgba(240,192,104,0.4); opacity: 1; } 100% { box-shadow: 0 0 35px 12px #b08040, 0 0 70px 25px rgba(176,128,64,0.25); opacity: 0.9; } }
@keyframes cp-shadow { 0% { transform: translateX(0); opacity: 0.6; } 50% { transform: translateX(5px); opacity: 0.7; } 100% { transform: translateX(0); opacity: 0.6; } }

/* item-crowbar */
.scn-item-crowbar {
  background: linear-gradient(180deg, #0e0e1e 0%, #1a1a2e 40%, #2e2e4e 70%, #1a1a2e 100%), radial-gradient(ellipse at 50% 60%, #3e3e5e 0%, transparent 70%);
}
.scn-item-crowbar .bricks {
  position: absolute; inset: 20% 10% 30% 10%;
  background: repeating-linear-gradient(0deg, #5a4a3a 0px, #5a4a3a 20px, #6a5a4a 20px, #6a5a4a 22px);
  border-radius: 4px;
  box-shadow: inset 0 0 30px rgba(0,0,0,0.7);
  animation: cb-bricks 6s ease-in-out infinite alternate;
}
.scn-item-crowbar .crowbar {
  position: absolute; bottom: 35%; left: 50%; width: 22px; height: 100px;
  background: linear-gradient(180deg, #8a7a6a 0%, #6a5a4a 50%, #4a3a2a 100%);
  border-radius: 10% 10% 5% 5% / 20% 20% 10% 10%;
  transform: rotate(-25deg) translateX(-50%);
  transform-origin: 50% 100%;
  box-shadow: 0 4px 8px rgba(0,0,0,0.6);
  animation: cb-crowbar 2s ease-in-out infinite alternate;
}
.scn-item-crowbar .hands {
  position: absolute; bottom: 28%; left: 40%; width: 30px; height: 30px;
  background: linear-gradient(180deg, #b89986 0%, #a07a6a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  box-shadow: 0 2px 6px rgba(0,0,0,0.5);
  animation: cb-hands 2s ease-in-out infinite alternate;
}
.scn-item-crowbar .debris {
  position: absolute; bottom: 25%; left: 30%; width: 40px; height: 30px;
  background: linear-gradient(180deg, #4a3a2a 0%, #3a2a1a 100%);
  border-radius: 10% 30% 20% 40%;
  transform: rotate(15deg);
  box-shadow: 0 2px 4px rgba(0,0,0,0.4);
  animation: cb-debris 3s ease-in-out infinite;
}
.scn-item-crowbar .dust {
  position: absolute; top: 30%; left: 20%; width: 50px; height: 30px;
  background: radial-gradient(ellipse at 30% 50%, rgba(200,190,180,0.15) 0%, transparent 70%);
  filter: blur(8px);
  animation: cb-dust 4s ease-in-out infinite;
}
.scn-item-crowbar .light-shaft {
  position: absolute; top: 10%; left: 40%; width: 30%; height: 50%;
  background: linear-gradient(180deg, rgba(200,180,160,0.08) 0%, transparent 100%);
  transform: rotate(10deg);
  filter: blur(6px);
  animation: cb-shaft 8s ease-in-out infinite alternate;
}
@keyframes cb-bricks { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.95; } }
@keyframes cb-crowbar { 0% { transform: rotate(-25deg) translateX(-50%) scaleY(1); } 50% { transform: rotate(-20deg) translateX(-45%) scaleY(1.02); } 100% { transform: rotate(-25deg) translateX(-50%) scaleY(1); } }
@keyframes cb-hands { 0%,100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-2px) rotate(3deg); } }
@keyframes cb-debris { 0% { transform: rotate(15deg) translateY(0); } 50% { transform: rotate(10deg) translateY(-2px); } 100% { transform: rotate(15deg) translateY(0); } }
@keyframes cb-dust { 0% { opacity: 0; } 50% { opacity: 0.4; } 100% { opacity: 0; } }
@keyframes cb-shaft { 0% { opacity: 0.3; transform: rotate(8deg); } 50% { opacity: 0.6; transform: rotate(12deg); } 100% { opacity: 0.3; transform: rotate(8deg); } }

/* wall-finished-satisfaction */
.scn-wall-finished-satisfaction {
  background: linear-gradient(180deg, #1e1e2e 0%, #2e2e3e 40%, #3e3e4e 70%, #2e2e3e 100%), radial-gradient(ellipse at 50% 40%, #4e4e5e 0%, transparent 60%);
}
.scn-wall-finished-satisfaction .old-wall {
  position: absolute; inset: 15% 5% 20% 30%;
  background: repeating-linear-gradient(90deg, #4a4a5a 0px, #4a4a5a 24px, #5a5a6a 24px, #5a5a6a 26px);
  border-radius: 4px;
  box-shadow: inset 0 0 20px rgba(0,0,0,0.4);
  animation: wf-old 20s ease-in-out infinite alternate;
}
.scn-wall-finished-satisfaction .new-wall {
  position: absolute; inset: 15% 5% 20% 30%;
  background: linear-gradient(90deg, #5a5a6a 0%, #6a6a7a 20%, #5a5a6a 40%, #6a6a7a 100%);
  border-radius: 4px;
  opacity: 0;
  box-shadow: inset 0 0 20px rgba(0,0,0,0.4);
  animation: wf-new 15s ease-in-out infinite;
}
.scn-wall-finished-satisfaction .mortar {
  position: absolute; top: 30%; left: 45%; width: 16px; height: 8px;
  background: #7a7a8a;
  border-radius: 2px;
  box-shadow: 0 0 4px rgba(0,0,0,0.3);
  animation: wf-mortar 10s ease-in-out infinite;
}
.scn-wall-finished-satisfaction .figure {
  position: absolute; bottom: 22%; left: 25%; width: 22px; height: 55px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 50%, #0a0a1a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: wf-figure 8s ease-in-out infinite;
}
.scn-wall-finished-satisfaction .lantern {
  position: absolute; bottom: 30%; left: 35%; width: 14px; height: 20px;
  background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%);
  border-radius: 10% 10% 15% 15%;
  box-shadow: 0 0 20px 6px #b08040;
  animation: wf-lantern 5s ease-in-out infinite alternate;
}
.scn-wall-finished-satisfaction .glow {
  position: absolute; bottom: 28%; left: 32%; width: 40px; height: 40px;
  background: radial-gradient(circle, rgba(240,192,104,0.3) 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(8px);
  animation: wf-glow 4s ease-in-out infinite alternate;
}
@keyframes wf-old { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.95; } }
@keyframes wf-new { 0%,30% { opacity: 0; } 50% { opacity: 1; } 70%,100% { opacity: 0; } }
@keyframes wf-mortar { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-1px); } }
@keyframes wf-figure { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(6px) rotate(-1deg); } 50% { transform: translateX(0) rotate(0deg); } 75% { transform: translateX(-6px) rotate(1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes wf-lantern { 0% { box-shadow: 0 0 15px 4px #b08040; } 50% { box-shadow: 0 0 25px 8px #f0c068; } 100% { box-shadow: 0 0 15px 4px #b08040; } }
@keyframes wf-glow { 0% { opacity: 0.4; transform: scale(1); } 50% { opacity: 0.7; transform: scale(1.1); } 100% { opacity: 0.4; transform: scale(1); } }

/* seeking-the-beast */
.scn-seeking-the-beast {
  background: linear-gradient(180deg, #0a0a1a 0%, #1a1a2e 40%, #2e2e4e 70%, #1a1a2e 100%), radial-gradient(ellipse at 50% 80%, #3a3a5e 0%, transparent 60%);
}
.scn-seeking-the-beast .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  box-shadow: inset 0 10px 20px rgba(0,0,0,0.6);
  animation: sb-floor 25s ease-in-out infinite alternate;
}
.scn-seeking-the-beast .back-wall {
  position: absolute; inset: 0 0 30% 0;
  background: repeating-linear-gradient(90deg, #3a3a4e 0px, #3a3a4e 30px, #4a4a5e 30px, #4a4a5e 32px);
  box-shadow: inset 0 0 50px rgba(0,0,0,0.7);
  animation: sb-wall 20s ease-in-out infinite alternate;
}
.scn-seeking-the-beast .figure {
  position: absolute; bottom: 25%; left: 30%; width: 24px; height: 55px;
  background: linear-gradient(180deg, #1e1e2e 0%, #0e0e1e 50%, #050510 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: sb-figure 7s ease-in-out infinite;
}
.scn-seeking-the-beast .lantern {
  position: absolute; bottom: 32%; left: 38%; width: 12px; height: 18px;
  background: linear-gradient(180deg, #6a5a4a 0%, #4a3a2a 100%);
  border-radius: 10% 10% 15% 15%;
  box-shadow: 0 0 30px 8px #c08040;
  animation: sb-lantern 4s ease-in-out infinite alternate;
}
.scn-seeking-the-beast .glow {
  position: absolute; bottom: 25%; left: 25%; width: 80px; height: 80px;
  background: radial-gradient(circle, rgba(192,128,64,0.15) 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(12px);
  animation: sb-glow 6s ease-in-out infinite alternate;
}
.scn-seeking-the-beast .beast-eyes {
  position: absolute; bottom: 50%; right: 20%; width: 12px; height: 6px;
  background: radial-gradient(circle, #c8553d 0%, #a0461a 40%, transparent 70%);
  border-radius: 50% 50% 0 0;
  box-shadow: 0 0 16px 4px #c8553d, 0 0 32px 8px rgba(200,85,61,0.3);
  animation: sb-eyes 3s ease-in-out infinite alternate;
}
.scn-seeking-the-beast .shadow {
  position: absolute; bottom: 20%; left: 20%; width: 50px; height: 15px;
  background: radial-gradient(ellipse, rgba(0,0,0,0.7) 0%, transparent 100%);
  animation: sb-shadow 7s ease-in-out infinite;
}
@keyframes sb-floor { 0% { opacity: 1; } 50% { opacity: 0.9; } 100% { opacity: 1; } }
@keyframes sb-wall { 0% { opacity: 0.8; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes sb-figure { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(10px) rotate(-2deg); } 50% { transform: translateX(0) rotate(0deg); } 75% { transform: translateX(-10px) rotate(2deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes sb-lantern { 0% { box-shadow: 0 0 20px 6px #b08040; transform: rotate(-5deg); } 50% { box-shadow: 0 0 40px 12px #f0c068; transform: rotate(5deg); } 100% { box-shadow: 0 0 20px 6px #b08040; transform: rotate(-5deg); } }
@keyframes sb-glow { 0% { opacity: 0.4; transform: scale(1); } 50% { opacity: 0.7; transform: scale(1.2); } 100% { opacity: 0.4; transform: scale(1); } }
@keyframes sb-eyes { 0% { box-shadow: 0 0 10px 2px #c8553d; opacity: 0.6; } 50% { box-shadow: 0 0 24px 8px #c8553d, 0 0 48px 16px rgba(200,85,61,0.4); opacity: 1; } 100% { box-shadow: 0 0 10px 2px #c8553d; opacity: 0.6; } }
@keyframes sb-shadow { 0% { transform: translateX(0); opacity: 0.7; } 50% { transform: translateX(8px); opacity: 0.8; } 100% { transform: translateX(0); opacity: 0.7; } }

/* intemperance-change */
.scn-intemperance-change {
  background: linear-gradient(180deg, #2a1c1a 0%, #1f1110 40%, #140a09 100%),
              radial-gradient(ellipse at 50% 100%, #3a2420 0%, transparent 70%);
}
.scn-intemperance-change .room-bg {
  position: absolute; inset: 0;
  background: linear-gradient(135deg, #3a2a24 0%, #1f1412 60%, #0f0908 100%);
  animation: ic-pulse 8s ease-in-out infinite alternate;
}
.scn-intemperance-change .wall-shadow {
  position: absolute; top: 0; left: 20%; width: 60%; height: 100%;
  background: radial-gradient(ellipse at 50% 30%, transparent 40%, rgba(0,0,0,.6) 100%);
  animation: ic-shift 12s ease-in-out infinite;
}
.scn-intemperance-change .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 25%;
  background: linear-gradient(0deg, #1a1110 0%, #2a1c18 50%, #3a2a24 100%);
  box-shadow: inset 0 10px 30px rgba(0,0,0,.5);
  animation: ic-floor 6s ease-in-out infinite alternate;
}
.scn-intemperance-change .figure-man {
  position: absolute; bottom: 18%; left: 32%; width: 60px; height: 120px;
  background: linear-gradient(180deg, #2d1d1a 0%, #1a0f0d 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ic-man-stance 3s ease-in-out infinite alternate;
}
.scn-intemperance-change .figure-wife {
  position: absolute; bottom: 18%; right: 30%; width: 50px; height: 110px;
  background: linear-gradient(180deg, #3a2a24 0%, #241713 100%);
  border-radius: 45% 45% 35% 35% / 55% 55% 45% 45%;
  transform-origin: bottom center;
  animation: ic-wife-cower 5s ease-in-out infinite;
}
.scn-intemperance-change .candle-glow {
  position: absolute; bottom: 40%; left: 50%; width: 40px; height: 40px;
  transform: translateX(-50%);
  background: radial-gradient(circle, #ddaa55 0%, #b08040 30%, transparent 70%);
  border-radius: 50%;
  box-shadow: 0 0 60px 30px #b08040, 0 0 120px 60px rgba(176,128,64,.3);
  animation: ic-flicker 2s ease-in-out infinite alternate;
}
.scn-intemperance-change .candle {
  position: absolute; bottom: 35%; left: 50%; width: 8px; height: 40px;
  transform: translateX(-50%);
  background: linear-gradient(0deg, #6a4a3a 0%, #8a6040 50%, #ddaa55 100%);
  border-radius: 4px 4px 2px 2px;
}
.scn-intemperance-change .cat-cower {
  position: absolute; bottom: 15%; left: 45%; width: 30px; height: 20px;
  background: linear-gradient(180deg, #1a1412 0%, #0d0a08 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: scale(0.8);
  animation: ic-cat 4s ease-in-out infinite alternate;
}
@keyframes ic-pulse { 0% { opacity: .9 } 100% { opacity: .95 } }
@keyframes ic-shift { 0% { transform: translateX(-5%) } 50% { transform: translateX(5%) } 100% { transform: translateX(-5%) } }
@keyframes ic-floor { 0% { transform: scaleY(1) } 100% { transform: scaleY(1.02) } }
@keyframes ic-man-stance { 0% { transform: translateY(0) rotate(-2deg) } 100% { transform: translateY(-4px) rotate(4deg) } }
@keyframes ic-wife-cower { 0% { transform: translateY(0) rotate(0) scale(1) } 50% { transform: translateY(-3px) rotate(-5deg) scale(0.95) } 100% { transform: translateY(2px) rotate(2deg) scale(1.02) } }
@keyframes ic-flicker { 0% { opacity: .7; transform: translateX(-50%) scale(1) } 100% { opacity: 1; transform: translateX(-50%) scale(1.1) } }
@keyframes ic-cat { 0% { transform: scale(0.8) translateX(0) } 100% { transform: scale(0.85) translateX(-5px) } }

/* abuse-of-pets */
.scn-abuse-of-pets {
  background: linear-gradient(180deg, #1a1412 0%, #0f0c0a 50%, #080606 100%),
              radial-gradient(ellipse at 50% 80%, #2a1e1a 0%, transparent 70%);
}
.scn-abuse-of-pets .bg-dark {
  position: absolute; inset: 0;
  background: linear-gradient(135deg, #1f1815 0%, #120d0b 100%);
  animation: ap-dark 10s ease-in-out infinite alternate;
}
.scn-abuse-of-pets .ground {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(0deg, #1a1412 0%, #2a1e1a 50%, #3a2a24 100%);
  border-radius: 0 0 0 0;
}
.scn-abuse-of-pets .figure-man {
  position: absolute; bottom: 20%; left: 30%; width: 70px; height: 140px;
  background: linear-gradient(180deg, #2d1d1a 0%, #1a0f0d 100%);
  border-radius: 40% 40% 30% 30% / 55% 55% 45% 45%;
  transform-origin: bottom center;
  animation: ap-man 4s ease-in-out infinite alternate;
}
.scn-abuse-of-pets .arm-raised {
  position: absolute; bottom: 65%; left: 28%; width: 20px; height: 50px;
  background: linear-gradient(180deg, #2d1d1a 0%, #1a0f0d 100%);
  border-radius: 30% 30% 40% 40% / 40% 40% 30% 30%;
  transform-origin: bottom right;
  transform: rotate(-30deg) translateX(15px);
  animation: ap-arm 3s ease-in-out infinite alternate;
}
.scn-abuse-of-pets .rabbit {
  position: absolute; bottom: 10%; left: 45%; width: 20px; height: 25px;
  background: linear-gradient(180deg, #3a2a24 0%, #1a1412 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%;
  animation: ap-hop 2s ease-in-out infinite;
}
.scn-abuse-of-pets .monkey {
  position: absolute; bottom: 8%; left: 55%; width: 22px; height: 28px;
  background: linear-gradient(180deg, #4a3a34 0%, #2a1e1a 100%);
  border-radius: 45% 45% 35% 35% / 55% 55% 45% 45%;
  transform: scaleX(-1);
  animation: ap-jerk 1.5s ease-in-out infinite alternate;
}
.scn-abuse-of-pets .dog {
  position: absolute; bottom: 5%; left: 35%; width: 30px; height: 20px;
  background: linear-gradient(180deg, #2a1e1a 0%, #140d0a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: ap-cower 3s ease-in-out infinite alternate;
}
.scn-abuse-of-pets .shadow-man {
  position: absolute; bottom: 20%; left: 28%; width: 80px; height: 150px;
  background: rgba(0,0,0,.4);
  border-radius: 40% 40% 30% 30% / 55% 55% 45% 45%;
  filter: blur(8px);
  transform: translateX(20px) scaleX(1.2);
  animation: ap-shadow 4s ease-in-out infinite alternate;
}
@keyframes ap-dark { 0% { opacity: .85 } 100% { opacity: .95 } }
@keyframes ap-man { 0% { transform: translateY(0) rotate(-1deg) } 100% { transform: translateY(-5px) rotate(3deg) } }
@keyframes ap-arm { 0% { transform: rotate(-30deg) translateX(15px) } 100% { transform: rotate(-40deg) translateX(20px) } }
@keyframes ap-hop { 0% { transform: translateY(0) scaleY(1) } 50% { transform: translateY(-8px) scaleY(0.8) } 100% { transform: translateY(0) scaleY(1) } }
@keyframes ap-jerk { 0% { transform: translateX(0) } 100% { transform: translateX(-4px) } }
@keyframes ap-cower { 0% { transform: scale(1) } 100% { transform: scale(0.95) translateY(2px) } }
@keyframes ap-shadow { 0% { transform: translateX(20px) scaleX(1.2); opacity: .4 } 100% { transform: translateX(25px) scaleX(1.3); opacity: .6 } }

/* attack-on-cat */
.scn-attack-on-cat {
  background: linear-gradient(180deg, #0c1520 0%, #1a2535 40%, #2a3a4a 100%),
              radial-gradient(ellipse at 50% 0%, #3a5a7a 0%, transparent 60%);
}
.scn-attack-on-cat .moonlight-bg {
  position: absolute; inset: 0;
  background: linear-gradient(135deg, #1a2a3a 0%, #0a1520 100%);
  animation: ac-breath 6s ease-in-out infinite alternate;
}
.scn-attack-on-cat .moon {
  position: absolute; top: 8%; right: 15%; width: 50px; height: 50px;
  background: radial-gradient(circle, #c0d8e8 0%, #a0b8c8 60%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 40px 20px #a0b8c8, 0 0 80px 40px rgba(160,184,200,.3);
  animation: ac-moon 20s ease-in-out infinite;
}
.scn-attack-on-cat .window-frame {
  position: absolute; top: 5%; right: 10%; width: 80px; height: 120px;
  border: 6px solid #1a2a3a;
  border-radius: 4px;
  background: rgba(10,20,30,.5);
  filter: blur(1px);
}
.scn-attack-on-cat .figure-man {
  position: absolute; bottom: 15%; left: 25%; width: 70px; height: 130px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0d0d1a 100%);
  border-radius: 40% 40% 30% 30% / 55% 55% 45% 45%;
  transform-origin: bottom center;
  animation: ac-man 3s ease-in-out infinite alternate;
}
.scn-attack-on-cat .arm-grab {
  position: absolute; bottom: 60%; left: 22%; width: 22px; height: 70px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0d0d1a 100%);
  border-radius: 30% 30% 40% 40% / 40% 40% 30% 30%;
  transform-origin: bottom left;
  transform: rotate(40deg) translateX(10px);
  animation: ac-arm 2.5s ease-in-out infinite alternate;
}
.scn-attack-on-cat .cat-struggle {
  position: absolute; bottom: 12%; left: 32%; width: 35px; height: 25px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0d0d1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: rotate(20deg);
  animation: ac-cat-twist 1.8s ease-in-out infinite alternate;
}
.scn-attack-on-cat .cat-bite {
  position: absolute; bottom: 16%; left: 30%; width: 10px; height: 8px;
  background: #3a4a5a;
  border-radius: 50% 20% 20% 50%;
  transform: rotate(30deg);
  animation: ac-bite 2s ease-in-out infinite alternate;
}
.scn-attack-on-cat .shadow-fall {
  position: absolute; bottom: 10%; left: 20%; width: 100px; height: 20px;
  background: rgba(0,0,0,.3);
  filter: blur(10px);
  animation: ac-shadow 3s ease-in-out infinite alternate;
}
@keyframes ac-breath { 0% { opacity: .8 } 100% { opacity: .9 } }
@keyframes ac-moon { 0% { transform: translateX(-2px) translateY(0) } 50% { transform: translateX(2px) translateY(2px) } 100% { transform: translateX(-2px) translateY(0) } }
@keyframes ac-man { 0% { transform: translateY(0) rotate(-2deg) } 100% { transform: translateY(-3px) rotate(3deg) } }
@keyframes ac-arm { 0% { transform: rotate(40deg) translateX(10px) } 100% { transform: rotate(50deg) translateX(12px) } }
@keyframes ac-cat-twist { 0% { transform: rotate(20deg) scale(1) } 100% { transform: rotate(-10deg) scale(1.05) } }
@keyframes ac-bite { 0% { transform: rotate(30deg) } 100% { transform: rotate(60deg) } }
@keyframes ac-shadow { 0% { transform: scaleX(1); opacity: .3 } 100% { transform: scaleX(1.2); opacity: .5 } }

/* item-penknife-attack */
.scn-item-penknife-attack {
  background: linear-gradient(180deg, #0a1218 0%, #14202a 60%, #1a2a38 100%),
              radial-gradient(ellipse at 20% 40%, #1a3040 0%, transparent 70%);
}
.scn-item-penknife-attack .moonlight {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at 70% 30%, rgba(180,210,230,.15) 0%, transparent 60%);
  animation: pk-moon 12s ease-in-out infinite alternate;
}
.scn-item-penknife-attack .hand-knife {
  position: absolute; bottom: 30%; left: 20%; width: 60px; height: 50px;
  background: linear-gradient(135deg, #2a3038 0%, #1a2028 100%);
  border-radius: 60% 30% 40% 50% / 40% 50% 60% 30%;
  transform: rotate(-15deg);
  animation: pk-hand 2s ease-in-out infinite alternate;
}
.scn-item-penknife-attack .blade {
  position: absolute; bottom: 55%; left: 14%; width: 8px; height: 60px;
  background: linear-gradient(180deg, #b0c0c8 0%, #80909a 50%, #607080 100%);
  border-radius: 2px 2px 6px 6px;
  box-shadow: 0 0 10px 2px rgba(160,180,200,.3);
  transform: rotate(-15deg);
  transform-origin: bottom center;
  animation: pk-blade 3s ease-in-out infinite alternate;
}
.scn-item-penknife-attack .cat-head {
  position: absolute; bottom: 18%; left: 35%; width: 40px; height: 30px;
  background: linear-gradient(180deg, #1a222a 0%, #0e141a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform: rotate(10deg);
  animation: pk-head 2.5s ease-in-out infinite alternate;
}
.scn-item-penknife-attack .cat-eye {
  position: absolute; bottom: 30%; left: 36%; width: 8px; height: 6px;
  background: radial-gradient(circle, #a0b8c8 0%, #607080 100%);
  border-radius: 50%;
  box-shadow: 0 0 6px 2px #607080;
  animation: pk-eye 4s ease-in-out infinite;
}
.scn-item-penknife-attack .blood-drop {
  position: absolute; bottom: 25%; left: 32%; width: 6px; height: 8px;
  background: radial-gradient(circle, #b87878 0%, #6a3838 100%);
  border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%;
  opacity: 0;
  animation: pk-blood 5s ease-in-out infinite;
}
.scn-item-penknife-attack .shadow-close {
  position: absolute; bottom: 5%; left: 10%; width: 80%; height: 30%;
  background: rgba(0,0,0,.4);
  filter: blur(20px);
  animation: pk-shadow 3s ease-in-out infinite alternate;
}
.scn-item-penknife-attack .vignette {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at 40% 50%, transparent 50%, rgba(0,0,0,.6) 100%);
  animation: pk-vignette 6s ease-in-out infinite alternate;
}
@keyframes pk-moon { 0% { opacity: .7 } 100% { opacity: .9 } }
@keyframes pk-hand { 0% { transform: rotate(-15deg) translateY(0) } 100% { transform: rotate(-10deg) translateY(-2px) } }
@keyframes pk-blade { 0% { transform: rotate(-15deg) scaleY(1) } 100% { transform: rotate(-5deg) scaleY(1.02) } }
@keyframes pk-head { 0% { transform: rotate(10deg) scale(1) } 100% { transform: rotate(15deg) scale(1.02) } }
@keyframes pk-eye { 0% { opacity: 1; transform: scale(1) } 50% { opacity: .8; transform: scale(0.9) } 100% { opacity: 1; transform: scale(1) } }
@keyframes pk-blood { 0% { opacity: 0; transform: translateY(0) } 40% { opacity: .8; transform: translateY(4px) } 60% { opacity: .6; transform: translateY(8px) } 100% { opacity: 0; transform: translateY(20px) } }
@keyframes pk-shadow { 0% { opacity: .3; transform: scaleX(1) } 100% { opacity: .5; transform: scaleX(1.1) } }
@keyframes pk-vignette { 0% { opacity: .8 } 100% { opacity: 1 } }

/* Scene: humanity-of-animals (tag: hma) */
.scn-humanity-of-animals { 
  background: 
    linear-gradient(180deg, #4a2a1a 0%, #2a1a0a 50%, #1a0a00 100%),
    radial-gradient(ellipse at 50% 80%, #6a3a1a 0%, transparent 60%);
  background-blend-mode: normal;
}
.scn-humanity-of-animals .wall { position:absolute; inset:0 0 40% 0; background: linear-gradient(90deg, #3a2a1a 0%, #5a3a1a 50%, #3a2a1a 100%); }
.scn-humanity-of-animals .floor { position:absolute; bottom:0; left:0; right:0; height:40%; background: linear-gradient(180deg, #2a1a0a 0%, #1a0a00 100%); box-shadow: inset 0 10px 20px rgba(0,0,0,.6); }
.scn-humanity-of-animals .hearth { position:absolute; bottom:20%; left:50%; width:120px; height:60px; transform:translateX(-50%); background: linear-gradient(180deg, #2a1a0a 0%, #1a0a00 100%); border-radius: 30% 30% 10% 10%; box-shadow: inset 0 -10px 20px #3a1a0a; }
.scn-humanity-of-animals .fire-glow { position:absolute; bottom:22%; left:50%; width:80px; height:80px; transform:translateX(-50%); background: radial-gradient(circle, #f09050 0%, #d07030 30%, transparent 70%); border-radius:50%; box-shadow: 0 0 40px 20px #d07030, 0 0 80px 40px rgba(200,100,40,.3); animation: hma-fire 3s ease-in-out infinite alternate; }
.scn-humanity-of-animals .dog-body { position:absolute; bottom:20%; left:30%; width:80px; height:50px; background: linear-gradient(180deg, #6a4a2a 0%, #4a2a1a 100%); border-radius: 50% 50% 30% 30%; transform: rotate(-5deg); animation: hma-breathe 4s ease-in-out infinite; }
.scn-humanity-of-animals .dog-head { position:absolute; bottom:28%; left:20%; width:45px; height:35px; background: linear-gradient(180deg, #6a4a2a 0%, #4a2a1a 100%); border-radius: 50% 50% 40% 40%; transform: rotate(-10deg); animation: hma-head 5s ease-in-out infinite; }
.scn-humanity-of-animals .log { position:absolute; bottom:18%; left:45%; width:60px; height:15px; background: linear-gradient(90deg, #3a1a0a 0%, #5a2a0a 50%, #3a1a0a 100%); border-radius: 30%; transform: rotate(15deg); }
.scn-humanity-of-animals .shadow { position:absolute; bottom:18%; left:15%; width:100px; height:20px; background: rgba(0,0,0,.4); border-radius:50%; filter: blur(8px); animation: hma-shadow 4s ease-in-out infinite; }
.scn-humanity-of-animals .ember-a, .scn-humanity-of-animals .ember-b { position:absolute; width:6px; height:6px; background: #f0a050; border-radius:50%; box-shadow: 0 0 8px 2px #f0a050; animation: hma-ember 2s ease-in-out infinite; }
.scn-humanity-of-animals .ember-a { bottom:28%; left:48%; animation-delay:0s; }
.scn-humanity-of-animals .ember-b { bottom:26%; left:55%; animation-delay:1s; }
@keyframes hma-fire { 0% { transform: translateX(-50%) scale(1); opacity:0.8; } 50% { transform: translateX(-50%) scale(1.1); opacity:1; } 100% { transform: translateX(-50%) scale(0.95); opacity:0.9; } }
@keyframes hma-breathe { 0% { transform: rotate(-5deg) scaleY(1); } 50% { transform: rotate(-5deg) scaleY(1.04); } 100% { transform: rotate(-5deg) scaleY(1); } }
@keyframes hma-head { 0% { transform: rotate(-10deg) translateY(0); } 50% { transform: rotate(-8deg) translateY(-2px); } 100% { transform: rotate(-10deg) translateY(0); } }
@keyframes hma-shadow { 0% { opacity:0.4; transform: scaleX(1); } 50% { opacity:0.6; transform: scaleX(0.95); } 100% { opacity:0.4; transform: scaleX(1); } }
@keyframes hma-ember { 0% { transform: translateY(0) scale(1); opacity:1; } 50% { transform: translateY(-15px) scale(0.8); opacity:0.6; } 100% { transform: translateY(-30px) scale(0.5); opacity:0; } }

/* Scene: cat-acquisition (tag: ca) */
.scn-cat-acquisition {
  background: 
    linear-gradient(180deg, #f5e6d0 0%, #edd5b8 30%, #d4b08c 100%),
    radial-gradient(ellipse at 50% 100%, #d4b08c 0%, transparent 70%);
}
.scn-cat-acquisition .bg-warm { position:absolute; inset:0; background: linear-gradient(180deg, #f0e0c0 0%, #e0c090 50%, #c0a070 100%); }
.scn-cat-acquisition .wall-shelf { position:absolute; top:20%; left:10%; right:10%; height:8px; background: linear-gradient(90deg, #a08060, #c0a080, #a08060); border-radius:2px; box-shadow: 0 4px 8px rgba(0,0,0,.1); }
.scn-cat-acquisition .window-light { position:absolute; top:5%; right:15%; width:90px; height:120px; background: linear-gradient(180deg, rgba(255,255,220,0.8) 0%, rgba(255,255,220,0.3) 100%); border-radius: 10% 10% 40% 40% / 10% 10% 30% 30%; box-shadow: 0 0 60px 20px rgba(255,255,200,0.4); animation: ca-window 6s ease-in-out infinite alternate; }
.scn-cat-acquisition .birdcage { position:absolute; top:25%; left:20%; width:40px; height:50px; background: linear-gradient(180deg, #a08060, #806040); border-radius: 30% 30% 20% 20%; box-shadow: inset 0 0 10px rgba(0,0,0,.3); animation: ca-sway 5s ease-in-out infinite; }
.scn-cat-acquisition .fishbowl { position:absolute; top:35%; left:50%; width:50px; height:40px; background: radial-gradient(circle, #b0d0e0 0%, #7090a0 60%); border-radius: 50% 50% 40% 40%; box-shadow: inset 0 -4px 8px rgba(0,0,0,.2); animation: ca-fish 3s ease-in-out infinite alternate; }
.scn-cat-acquisition .dog-figure { position:absolute; bottom:15%; left:35%; width:60px; height:45px; background: linear-gradient(180deg, #c09870, #906850); border-radius: 50% 50% 30% 30%; transform: rotate(5deg); animation: ca-dog 4s ease-in-out infinite; }
.scn-cat-acquisition .cat-figure { position:absolute; bottom:25%; left:55%; width:45px; height:35px; background: linear-gradient(180deg, #b08060, #906040); border-radius: 50% 50% 40% 40%; transform: rotate(-3deg); animation: ca-cat 6s ease-in-out infinite; }
.scn-cat-acquisition .rabbit { position:absolute; bottom:10%; left:20%; width:30px; height:30px; background: linear-gradient(180deg, #d8c0a0, #b89878); border-radius: 50% 50% 40% 40%; animation: ca-hop 5s ease-in-out infinite; }
.scn-cat-acquisition .monkey { position:absolute; bottom:30%; left:70%; width:35px; height:40px; background: linear-gradient(180deg, #a08060, #806040); border-radius: 50% 50% 20% 20%; transform: rotate(-8deg); animation: ca-swing 7s ease-in-out infinite; }
@keyframes ca-window { 0% { opacity:0.7; } 50% { opacity:1; } 100% { opacity:0.8; } }
@keyframes ca-sway { 0% { transform: rotate(0deg); } 25% { transform: rotate(5deg); } 75% { transform: rotate(-5deg); } 100% { transform: rotate(0deg); } }
@keyframes ca-fish { 0% { transform: rotate(0deg) translateY(0); } 50% { transform: rotate(3deg) translateY(-2px); } 100% { transform: rotate(0deg) translateY(0); } }
@keyframes ca-dog { 0% { transform: rotate(5deg) translateY(0); } 50% { transform: rotate(3deg) translateY(-3px); } 100% { transform: rotate(5deg) translateY(0); } }
@keyframes ca-cat { 0% { transform: rotate(-3deg) scaleX(1); } 50% { transform: rotate(-1deg) scaleX(0.95); } 100% { transform: rotate(-3deg) scaleX(1); } }
@keyframes ca-hop { 0% { transform: translateY(0); } 40% { transform: translateY(-5px) scaleY(0.9); } 60% { transform: translateY(-5px) scaleY(0.9); } 100% { transform: translateY(0); } }
@keyframes ca-swing { 0% { transform: rotate(-8deg) translateX(0); } 50% { transform: rotate(8deg) translateX(5px); } 100% { transform: rotate(-8deg) translateX(0); } }

/* Scene: cat-intelligence (tag: ci) */
.scn-cat-intelligence {
  background: 
    linear-gradient(180deg, #1a1a2e 0%, #0e0e1a 50%, #05050a 100%),
    radial-gradient(ellipse at 50% 120%, #2a2a4e 0%, transparent 70%);
}
.scn-cat-intelligence .bg-dim { position:absolute; inset:0; background: linear-gradient(90deg, #1a1a2e 0%, #0f0f1a 50%, #1a1a2e 100%); }
.scn-cat-intelligence .curtain { position:absolute; top:0; left:20%; right:20%; height:100%; background: linear-gradient(180deg, #2a2a3e 0%, #1a1a2e 50%, #0a0a15 100%); border-radius: 0 0 40% 40% / 0 0 60% 60%; opacity:0.6; }
.scn-cat-intelligence .moonlight { position:absolute; top:5%; right:10%; width:60px; height:60px; background: radial-gradient(circle, rgba(200,200,255,0.4) 0%, transparent 70%); border-radius:50%; box-shadow: 0 0 40px 20px rgba(150,150,255,0.3); animation: ci-moon 8s ease-in-out infinite alternate; }
.scn-cat-intelligence .cat-silhouette { position:absolute; bottom:20%; left:60%; width:65px; height:80px; background: linear-gradient(180deg, #0a0a15 0%, #05050a 100%); border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%; transform: rotate(-5deg); animation: ci-cat 6s ease-in-out infinite; }
.scn-cat-intelligence .cat-eyes { position:absolute; bottom:38%; left:64%; width:10px; height:8px; background: radial-gradient(circle, #c0ff60 0%, #80c020 50%, transparent 70%); border-radius:50%; box-shadow: 0 0 12px 4px #80c020; animation: ci-eyes 3s ease-in-out infinite alternate; }
.scn-cat-intelligence .whisper-shape { position:absolute; bottom:30%; left:40%; width:30px; height:15px; background: linear-gradient(180deg, rgba(150,120,200,0.2) 0%, transparent 100%); border-radius:50%; filter: blur(6px); animation: ci-whisper 10s ease-in-out infinite; }
.scn-cat-intelligence .dust-a, .scn-cat-intelligence .dust-b { position:absolute; width:4px; height:4px; background: rgba(200,180,255,0.6); border-radius:50%; filter: blur(2px); animation: ci-dust 15s linear infinite; }
.scn-cat-intelligence .dust-a { top:40%; left:30%; animation-delay:0s; animation-duration:15s; }
.scn-cat-intelligence .dust-b { top:50%; left:70%; animation-delay:5s; animation-duration:20s; }
@keyframes ci-moon { 0% { opacity:0.6; transform: scale(1); } 50% { opacity:1; transform: scale(1.1); } 100% { opacity:0.8; transform: scale(0.95); } }
@keyframes ci-cat { 0% { transform: rotate(-5deg) translateY(0); } 25% { transform: rotate(-3deg) translateY(-2px); } 50% { transform: rotate(-5deg) translateY(0); } 75% { transform: rotate(-7deg) translateY(-1px); } 100% { transform: rotate(-5deg) translateY(0); } }
@keyframes ci-eyes { 0% { box-shadow: 0 0 8px 2px #80c020; opacity:0.8; } 50% { box-shadow: 0 0 18px 6px #a0e040; opacity:1; } 100% { box-shadow: 0 0 10px 3px #80c020; opacity:0.9; } }
@keyframes ci-whisper { 0% { opacity:0; transform: translateX(0) scale(1); } 50% { opacity:0.4; transform: translateX(10px) scale(1.2); } 100% { opacity:0; transform: translateX(-5px) scale(0.8); } }
@keyframes ci-dust { 0% { transform: translateY(0) translateX(0); opacity:0; } 20% { opacity:0.8; } 80% { opacity:0.8; } 100% { transform: translateY(-60px) translateX(20px); opacity:0; } }

/* Scene: friendship-with-pluto (tag: fwp) */
.scn-friendship-with-pluto {
  background: 
    linear-gradient(180deg, #2a1a0a 0%, #1a0a00 60%, #0a0500 100%),
    radial-gradient(ellipse at 50% 40%, #3a2a1a 0%, transparent 70%);
}
.scn-friendship-with-pluto .room-bg { position:absolute; inset:0; background: linear-gradient(90deg, #2a1a0a 0%, #3a2a1a 50%, #2a1a0a 100%); }
.scn-friendship-with-pluto .candle-glow { position:absolute; bottom:35%; left:20%; width:30px; height:50px; background: radial-gradient(circle, #f0c060 0%, #d09040 40%, transparent 80%); border-radius:50%; box-shadow: 0 0 50px 30px rgba(220,160,80,0.4); animation: fwp-candle 4s ease-in-out infinite alternate; }
.scn-friendship-with-pluto .table-edge { position:absolute; bottom:20%; left:10%; right:50%; height:8px; background: linear-gradient(90deg, #4a2a1a 0%, #5a3a1a 50%, #4a2a1a 100%); border-radius:4px; box-shadow: 0 4px 8px rgba(0,0,0,.5); }
.scn-friendship-with-pluto .person-arm { position:absolute; bottom:18%; left:15%; width:60px; height:30px; background: linear-gradient(180deg, #a08060 0%, #806040 100%); border-radius: 40% 40% 30% 30% / 50% 50% 40% 40%; transform: rotate(10deg); transform-origin: left bottom; animation: fwp-arm 5s ease-in-out infinite; }
.scn-friendship-with-pluto .pluto-body { position:absolute; bottom:15%; left:35%; width:70px; height:55px; background: linear-gradient(180deg, #2a1a0a 0%, #1a0a00 100%); border-radius: 50% 50% 30% 30%; transform: rotate(-3deg); animation: fwp-cat-body 6s ease-in-out infinite; }
.scn-friendship-with-pluto .pluto-head { position:absolute; bottom:28%; left:42%; width:40px; height:35px; background: linear-gradient(180deg, #2a1a0a 0%, #1a0a00 100%); border-radius: 50% 50% 40% 40%; transform: rotate(5deg); animation: fwp-cat-head 4s ease-in-out infinite; }
.scn-friendship-with-pluto .pluto-tail { position:absolute; bottom:22%; left:20%; width:25px; height:10px; background: linear-gradient(90deg, #2a1a0a 0%, #1a0a00 100%); border-radius: 50% 50% 0 0; transform: rotate(-30deg); transform-origin: right center; animation: fwp-tail 3s ease-in-out infinite; }
.scn-friendship-with-pluto .shadow-person { position:absolute; bottom:0; left:10%; width:120px; height:30px; background: rgba(0,0,0,.5); border-radius:50%; filter: blur(12px); animation: fwp-shadow 5s ease-in-out infinite; }
@keyframes fwp-candle { 0% { transform: scaleY(1); opacity:0.9; } 50% { transform: scaleY(1.1); opacity:1; } 100% { transform: scaleY(0.95); opacity:0.85; } }
@keyframes fwp-arm { 0% { transform: rotate(10deg) translateY(0); } 50% { transform: rotate(8deg) translateY(2px); } 100% { transform: rotate(10deg) translateY(0); } }
@keyframes fwp-cat-body { 0% { transform: rotate(-3deg) scaleY(1); } 25% { transform: rotate(-2deg) scaleY(1.03); } 50% { transform: rotate(-3deg) scaleY(1); } 75% { transform: rotate(-4deg) scaleY(0.98); } 100% { transform: rotate(-3deg) scaleY(1); } }
@keyframes fwp-cat-head { 0% { transform: rotate(5deg) translateY(0); } 50% { transform: rotate(3deg) translateY(-2px); } 100% { transform: rotate(5deg) translateY(0); } }
@keyframes fwp-tail { 0% { transform: rotate(-30deg); } 50% { transform: rotate(-15deg); } 100% { transform: rotate(-30deg); } }
@keyframes fwp-shadow { 0% { opacity:0.4; } 50% { opacity:0.6; } 100% { opacity:0.4; } }

/* Scene: bravado-speech – funny, dim-interior */
.scn-bravado-speech {
  background: 
    linear-gradient(180deg, #2c1e0e 0%, #1a1108 60%, #0d0805 100%),
    radial-gradient(ellipse at 70% 50%, #8a5a2a 0%, transparent 50%);
}
.scn-bravado-speech .room-bg {
  position: absolute; inset: 0; background: linear-gradient(135deg, #4a3520 0%, #2c1e0e 100%);
}
.scn-bravado-speech .staircase {
  position: absolute; bottom: 0; left: 10%; width: 35%; height: 50%;
  background: linear-gradient(180deg, #5e4430 0%, #3a2a1a 100%);
  border-radius: 20% 20% 0 0 / 10% 10% 0 0; transform: skewX(-5deg);
  box-shadow: inset 0 -10px 20px rgba(0,0,0,0.6);
}
.scn-bravado-speech .banister {
  position: absolute; bottom: 45%; left: 12%; width: 4px; height: 30%;
  background: linear-gradient(180deg, #a08060 0%, #604020 100%);
  border-radius: 2px; box-shadow: 2px 0 4px rgba(0,0,0,0.4);
  animation: sp-banister 6s ease-in-out infinite alternate;
}
.scn-bravado-speech .figure-speaker {
  position: absolute; bottom: 28%; left: 55%; width: 30px; height: 70px;
  background: linear-gradient(180deg, #1a1a1a 0%, #0e0e0e 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: sp-figure 5s ease-in-out infinite alternate;
}
.scn-bravado-speech .arm-gesture {
  position: absolute; bottom: 52%; left: 62%; width: 28px; height: 6px;
  background: #1a1a1a; border-radius: 50% / 100% 100% 0 0;
  transform-origin: 100% 50%;
  animation: sp-arm 5.5s ease-in-out infinite alternate;
}
.scn-bravado-speech .gentlemen {
  position: absolute; bottom: 22%; right: 15%; width: 18px; height: 50px;
  background: linear-gradient(180deg, #2a2a2a 0%, #111 100%);
  border-radius: 30% 30% 20% 20% / 40% 40% 20% 20%;
  opacity: 0.7;
  animation: sp-gentleman 6s ease-in-out infinite;
}
.scn-bravado-speech .lantern-glow {
  position: absolute; top: 15%; left: 20%; width: 30px; height: 30px;
  background: radial-gradient(circle, #ffcc80 0%, #ffaa44 40%, transparent 70%);
  border-radius: 50%;
  animation: sp-lantern 6s ease-in-out infinite alternate;
}
.scn-bravado-speech .dust-motes {
  position: absolute; top: 10%; left: 0; width: 100%; height: 80%;
  background: radial-gradient(2px 2px at 20% 30%, rgba(200,180,150,0.3) 0%, transparent 100%),
              radial-gradient(3px 3px at 50% 60%, rgba(200,180,150,0.2) 0%, transparent 100%),
              radial-gradient(1px 1px at 80% 20%, rgba(200,180,150,0.25) 0%, transparent 100%);
  animation: sp-dust 8s linear infinite;
}
@keyframes sp-banister { 0% { transform: skewY(-2deg); } 50% { transform: skewY(2deg); } 100% { transform: skewY(-1deg); } }
@keyframes sp-figure { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(3px) rotate(2deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes sp-arm { 0% { transform: rotate(-10deg) scaleX(1); } 50% { transform: rotate(20deg) scaleX(1.1); } 100% { transform: rotate(-10deg) scaleX(1); } }
@keyframes sp-gentleman { 0% { transform: translateY(0) scaleY(1); } 50% { transform: translateY(-4px) scaleY(1.02); } 100% { transform: translateY(0) scaleY(1); } }
@keyframes sp-lantern { 0% { opacity: 0.6; box-shadow: 0 0 20px 5px #ffaa44; } 50% { opacity: 1; box-shadow: 0 0 40px 15px #ffcc66; } 100% { opacity: 0.7; box-shadow: 0 0 25px 8px #ffaa44; } }
@keyframes sp-dust { 0% { background-position: 0 0; } 100% { background-position: 200px -100px; } }

/* Scene: bravado-rap-cane – tense, dim-interior */

.scn-bravado-rap-cane {
  background:
    linear-gradient(90deg, #1a1410 0%, #2c2015 40%, #1a1410 100%),
    radial-gradient(ellipse at 50% 70%, #4a3020 0%, transparent 60%);
}
.scn-bravado-rap-cane .wall-bg {
  position: absolute; inset: 0 0 20% 0; background: linear-gradient(180deg, #3a2a1e 0%, #1a1410 100%);
}
.scn-bravado-rap-cane .bricks {
  position: absolute; bottom: 20%; left: 10%; width: 60%; height: 60%;
  background: repeating-linear-gradient(0deg, #5e3e2a 0px, #5e3e2a 8px, #3a2a1a 8px, #3a2a1a 10px);
  background-size: cover; opacity: 0.6;
}
.scn-bravado-rap-cane .hand-cane {
  position: absolute; bottom: 50%; left: 40%; width: 40px; height: 20px;
  background: linear-gradient(135deg, #2a1a1a 0%, #0d0808 100%);
  border-radius: 40% 40% 20% 20% / 60% 60% 30% 30%;
  transform-origin: 30% 80%;
  animation: rp-hand 8.5s ease-in-out infinite alternate;
}
.scn-bravado-rap-cane .cane-tip {
  position: absolute; bottom: 45%; left: 42%; width: 4px; height: 50px;
  background: linear-gradient(180deg, #604020 0%, #2a1a0a 100%);
  border-radius: 2px;
  animation: rp-cane 9s ease-in-out infinite alternate;
}
.scn-bravado-rap-cane .impact-lines {
  position: absolute; bottom: 43%; left: 45%; width: 20px; height: 20px;
  background: radial-gradient(circle, #ffaa44 0%, transparent 70%);
  border-radius: 50%;
  animation: rp-impact 5s ease-in-out infinite alternate;
}
.scn-bravado-rap-cane .shadow-figure {
  position: absolute; bottom: 25%; right: 20%; width: 40px; height: 90px;
  background: #0a0604; border-radius: 30% 30% 20% 20% / 50% 50% 20% 20%;
  opacity: 0.5;
  animation: rp-shadow 6s ease-in-out infinite;
}
.scn-bravado-rap-cane .wall-crack {
  position: absolute; bottom: 40%; left: 48%; width: 8px; height: 30px;
  background: #2a1a0a; border-radius: 2px;
  transform: rotate(10deg);
  animation: rp-crack 10s ease-in-out infinite alternate;
}
@keyframes rp-hand { 0% { transform: rotate(-5deg) translateY(-2px); } 50% { transform: rotate(5deg) translateY(2px); } 100% { transform: rotate(-3deg) translateY(-1px); } }
@keyframes rp-cane { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-3px) rotate(2deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes rp-impact { 0% { opacity: 0.8; transform: scale(1); } 50% { opacity: 1; transform: scale(1.5); } 100% { opacity: 0.6; transform: scale(1); } }
@keyframes rp-shadow { 0% { transform: translateX(0) scaleX(1); } 50% { transform: translateX(-5px) scaleX(0.9); } 100% { transform: translateX(0) scaleX(1); } }
@keyframes rp-crack { 0% { opacity: 0.3; transform: rotate(8deg) scaleY(1); } 50% { opacity: 0.8; transform: rotate(12deg) scaleY(1.1); } 100% { opacity: 0.4; transform: rotate(10deg) scaleY(1); } }

/* Scene: voice-from-tomb – dark, dim-interior */

.scn-voice-from-tomb {
  background:
    linear-gradient(180deg, #0a0a12 0%, #14141e 60%, #1a1a26 100%),
    radial-gradient(ellipse at 50% 30%, #2a2a3e 0%, transparent 50%);
}
.scn-voice-from-tomb .tomb-chamber {
  position: absolute; inset: 0 0 30% 0; background: linear-gradient(0deg, #1a1a26 0%, #0e0e18 100%);
}
.scn-voice-from-tomb .coffin {
  position: absolute; bottom: 30%; left: 30%; width: 120px; height: 50px;
  background: linear-gradient(135deg, #2a1e18 0%, #0e0a08 100%);
  border-radius: 10% 10% 5% 5% / 30% 30% 10% 10%;
  box-shadow: 0 8px 20px rgba(0,0,0,0.8);
  animation: vt-coffin 4s ease-in-out infinite;
}
.scn-voice-from-tomb .figure-listening {
  position: absolute; bottom: 25%; right: 25%; width: 28px; height: 60px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0a0a12 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  animation: vt-figure 2s ease-in-out infinite alternate;
}
.scn-voice-from-tomb .sound-waves {
  position: absolute; bottom: 38%; left: 35%; width: 80px; height: 80px;
  border: 2px solid rgba(100,120,160,0.2);
  border-radius: 50%;
  animation: vt-sound 3s ease-out infinite;
}
.scn-voice-from-tomb .dust {
  position: absolute; top: 10%; left: 10%; width: 4px; height: 4px;
  background: #a0a0b0; border-radius: 50%; filter: blur(2px);
  animation: vt-dust 12s linear infinite;
}
.scn-voice-from-tomb .candle {
  position: absolute; bottom: 35%; left: 20%; width: 6px; height: 20px;
  background: linear-gradient(180deg, #a08060 0%, #403020 100%);
  border-radius: 2px 2px 0 0;
}
.scn-voice-from-tomb .candle-flame {
  position: absolute; bottom: 55%; left: 19.5%; width: 8px; height: 12px;
  background: radial-gradient(circle at 50% 80%, #ffcc80 0%, #ff8800 30%, transparent 60%);
  border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%;
  animation: vt-flame 1.5s ease-in-out infinite alternate;
}
@keyframes vt-coffin { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-2px) rotate(0.5deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes vt-figure { 0% { transform: translateX(0) scaleX(1); } 50% { transform: translateX(-4px) scaleX(0.95); } 100% { transform: translateX(0) scaleX(1); } }
@keyframes vt-sound { 0% { opacity: 0.6; transform: scale(0.5); } 50% { opacity: 0.3; transform: scale(1.2); } 100% { opacity: 0; transform: scale(2); } }
@keyframes vt-dust { 0% { transform: translate(0, 0) rotate(0deg); } 50% { transform: translate(30px, -10px) rotate(180deg); } 100% { transform: translate(60px, -20px) rotate(360deg); } }
@keyframes vt-flame { 0% { transform: scaleY(1) rotate(-2deg); } 50% { transform: scaleY(1.2) rotate(2deg); } 100% { transform: scaleY(1) rotate(-1deg); } }

/* Scene: aftermath-terror – dark, dim-interior */
.scn-aftermath-terror {
  background:
    linear-gradient(180deg, #0c0806 0%, #1a120e 50%, #0c0806 100%),
    radial-gradient(ellipse at 50% 80%, #2a1a0e 0%, transparent 60%);
}
.scn-aftermath-terror .dark-room {
  position: absolute; inset: 0 0 15% 0; background: linear-gradient(0deg, #1a120e 0%, #0a0705 100%);
}
.scn-aftermath-terror .figure-swoon {
  position: absolute; bottom: 15%; left: 40%; width: 40px; height: 90px;
  background: linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%);
  border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%;
  transform-origin: bottom center;
  animation: at-swoon 2.4s ease-in-out infinite alternate;
}
.scn-aftermath-terror .howl-mouth {
  position: absolute; bottom: 55%; left: 42%; width: 16px; height: 20px;
  background: #0d0805; border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  border: 2px solid #2a1a0a;
  transform: rotate(-10deg);
  animation: at-mouth 1.8s ease-in-out infinite alternate;
}
.scn-aftermath-terror .shriek-lines {
  position: absolute; bottom: 50%; left: 38%; width: 40px; height: 40px;
  background: repeating-linear-gradient(45deg, transparent 0px, transparent 5px, rgba(100,60,40,0.1) 5px, rgba(100,60,40,0.1) 6px);
  animation: at-shriek 1.5s ease-in-out infinite alternate;
}
.scn-aftermath-terror .shadows {
  position: absolute; inset: 0; background: radial-gradient(ellipse at 60% 40%, #1a0e0a 0%, transparent 60%);
  opacity: 0.6; animation: at-shadows 2s ease-in-out infinite alternate;
}
.scn-aftermath-terror .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 15%;
  background: linear-gradient(180deg, #1a120e 0%, #0c0806 100%);
}
.scn-aftermath-terror .blood-drops {
  position: absolute; bottom: 18%; left: 45%; width: 6px; height: 8px;
  background: radial-gradient(circle at 50% 30%, #5e1a1d 0%, #3a0e10 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  animation: at-blood 3s ease-in-out infinite;
}
@keyframes at-swoon { 0% { transform: rotate(0deg) translateY(0); } 50% { transform: rotate(5deg) translateY(-5px); } 100% { transform: rotate(0deg) translateY(0); } }
@keyframes at-mouth { 0% { transform: rotate(-10deg) scaleY(1); } 50% { transform: rotate(-5deg) scaleY(1.3); } 100% { transform: rotate(-10deg) scaleY(1); } }
@keyframes at-shriek { 0% { opacity: 0.3; transform: scaleX(1); } 50% { opacity: 0.7; transform: scaleX(1.2); } 100% { opacity: 0.4; transform: scaleX(1); } }
@keyframes at-shadows { 0% { opacity: 0.5; } 50% { opacity: 0.8; } 100% { opacity: 0.6; } }
@keyframes at-blood { 0% { transform: translateY(0) scaleY(1); } 50% { transform: translateY(4px) scaleY(1.2); } 100% { transform: translateY(0) scaleY(1); } }

.scn-narrator-intro {
  background:
    linear-gradient(180deg, #1a1a2a 0%, #2a1e1a 40%, #3a2a1e 70%, #1e1210 100%),
    radial-gradient(ellipse at 50% 10%, #4a3020 0%, transparent 70%);
  overflow: hidden;
}
.scn-narrator-intro .wall { position:absolute; inset:0 0 30% 0; background: linear-gradient(180deg, #2a1e1a 0%, #1a1210 100%); box-shadow: inset 0 8px 20px rgba(0,0,0,0.6); }
.scn-narrator-intro .floor { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(0deg, #1a1210 0%, #2a1a12 100%); border-radius: 20% 20% 0 0 / 10% 10% 0 0; }
.scn-narrator-intro .desk { position:absolute; bottom:20%; left:30%; width:40%; height:12%; background: linear-gradient(180deg, #4a3020 0%, #2a1a10 100%); border-radius: 2px 2px 0 0; box-shadow: 0 -4px 8px rgba(0,0,0,0.3); }
.scn-narrator-intro .figure { position:absolute; bottom:28%; left:35%; width:16%; height:28%; background: linear-gradient(180deg, #1a1210 0%, #0a0808 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: scr-ni-figure 4s ease-in-out infinite; }
.scn-narrator-intro .candle-glow { position:absolute; bottom:35%; left:46%; width:10px; height:14px; background: radial-gradient(circle, #ffd060 0%, #b08040 50%, transparent 100%); border-radius: 50%; box-shadow: 0 0 30px 8px #b08040, 0 0 60px 16px rgba(176,128,64,0.4); animation: scr-ni-candle 3s ease-in-out infinite alternate; }
.scn-narrator-intro .window { position:absolute; top:8%; right:10%; width:25%; height:40%; background: linear-gradient(180deg, #0a0a2a 0%, #1a1a3a 100%); border: 6px solid #2a1a12; border-radius: 4px; box-shadow: inset 0 0 20px rgba(0,0,0,0.8); }
.scn-narrator-intro .shadow { position:absolute; width:20%; height:80%; background: linear-gradient(90deg, transparent 0%, rgba(0,0,0,0.4) 50%, transparent 100%); filter: blur(8px); }
.scn-narrator-intro .shadow-left { left:0; bottom:0; height:70%; }
.scn-narrator-intro .shadow-right { right:0; bottom:0; height:70%; transform: scaleX(-1); animation: scr-ni-shade 6s ease-in-out infinite; }
@keyframes scr-ni-figure {
  0% { transform: translateX(0) translateY(0) rotate(-1deg); }
  25% { transform: translateX(2%) translateY(-2%) rotate(0deg); }
  50% { transform: translateX(0) translateY(0) rotate(1deg); }
  75% { transform: translateX(-2%) translateY(-1%) rotate(0deg); }
  100% { transform: translateX(0) translateY(0) rotate(-1deg); }
}
@keyframes scr-ni-candle {
  0% { box-shadow: 0 0 20px 4px #b08040, 0 0 40px 8px rgba(176,128,64,0.3); opacity: 0.8; }
  50% { box-shadow: 0 0 35px 10px #e0a050, 0 0 70px 16px rgba(224,160,80,0.5); opacity: 1; }
  100% { box-shadow: 0 0 22px 5px #b08040, 0 0 50px 12px rgba(176,128,64,0.35); opacity: 0.85; }
}
@keyframes scr-ni-shade {
  0%,100% { opacity: 0.3; }
  50% { opacity: 0.7; }
}

.scn-childhood-docility {
  background:
    linear-gradient(180deg, #2a2a3e 0%, #3a2e2a 40%, #2a1e1a 80%, #1a1210 100%),
    radial-gradient(ellipse at 30% 20%, #4a3a2e 0%, transparent 60%);
  overflow: hidden;
}
.scn-childhood-docility .bg-wall { position:absolute; inset:0 0 25% 0; background: linear-gradient(180deg, #3a2e2a 0%, #2a1e1a 100%); box-shadow: inset 0 4px 12px rgba(0,0,0,0.5); }
.scn-childhood-docility .chair { position:absolute; bottom:20%; left:10%; width:20%; height:30%; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a12 100%); border-radius: 10% 10% 5% 5% / 20% 20% 5% 5%; box-shadow: 2px 0 6px rgba(0,0,0,0.4); }
.scn-childhood-docility .figure-seated { position:absolute; bottom:30%; left:12%; width:12%; height:25%; background: linear-gradient(180deg, #1a1210 0%, #0a0808 100%); border-radius: 50% 50% 30% 30% / 60% 60% 20% 20%; transform-origin: bottom center; animation: scr-cd-sit 5s ease-in-out infinite; }
.scn-childhood-docility .lace-curtain { position:absolute; top:0; right:15%; width:18%; height:80%; background: repeating-linear-gradient(180deg, rgba(255,255,255,0.08) 0px, rgba(255,255,255,0.02) 4px, rgba(255,255,255,0.08) 8px); filter: blur(1px); animation: scr-cd-lace 8s ease-in-out infinite alternate; }
.scn-childhood-docility .window-dim { position:absolute; top:5%; right:12%; width:24%; height:55%; background: linear-gradient(180deg, #1a1a2a 0%, #2a2a3e 100%); border: 4px solid #2a1a12; border-radius: 2px; box-shadow: inset 0 0 20px rgba(0,0,0,0.6); }
.scn-childhood-docility .carpet { position:absolute; bottom:0; left:10%; width:80%; height:20%; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a12 100%); border-radius: 30% 30% 0 0 / 50% 50% 0 0; }
.scn-childhood-docility .clock { position:absolute; top:8%; left:20%; width:8%; height:12%; background: radial-gradient(circle at 50% 50%, #5a4a3a 0%, #2a1a12 100%); border-radius: 50%; box-shadow: 0 0 6px rgba(0,0,0,0.4); animation: scr-cd-tick 2s steps(2) infinite; }
@keyframes scr-cd-sit {
  0% { transform: translateY(0) rotate(-1deg); }
  25% { transform: translateY(-2%) rotate(0deg); }
  50% { transform: translateY(0) rotate(1deg); }
  75% { transform: translateY(-1%) rotate(0deg); }
  100% { transform: translateY(0) rotate(-1deg); }
}
@keyframes scr-cd-lace {
  0% { opacity: 0.3; transform: translateX(0); }
  100% { opacity: 0.6; transform: translateX(5%); }
}
@keyframes scr-cd-tick {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(15deg); }
}

.scn-love-of-animals {
  background:
    linear-gradient(180deg, #3a2a1a 0%, #4a3020 30%, #2a1a10 70%, #1a0e0a 100%),
    radial-gradient(ellipse at 50% 60%, #6a4020 0%, transparent 70%);
  overflow: hidden;
}
.scn-love-of-animals .hearth { position:absolute; bottom:10%; left:15%; width:40%; height:50%; background: linear-gradient(180deg, #4a3020 0%, #2a1a10 100%); border-radius: 40% 40% 10% 10% / 60% 60% 20% 20%; box-shadow: inset 0 10px 20px rgba(0,0,0,0.6); }
.scn-love-of-animals .fire-glow { position:absolute; bottom:40%; left:30%; width:15%; height:20%; background: radial-gradient(circle at 50% 50%, #ff9030 0%, #c06020 50%, transparent 100%); box-shadow: 0 0 60px 20px #c06020, 0 0 120px 30px rgba(192,96,32,0.3); border-radius: 50%; animation: scr-la-fire 3s ease-in-out infinite alternate; }
.scn-love-of-animals .figure-warm { position:absolute; bottom:28%; left:25%; width:14%; height:30%; background: linear-gradient(180deg, #2a1a12 0%, #1a0e0a 100%); border-radius: 50% 50% 30% 30% / 60% 60% 20% 20%; transform-origin: bottom center; animation: scr-la-fig 6s ease-in-out infinite; }
.scn-love-of-animals .cat-silhouette { position:absolute; bottom:22%; left:50%; width:8%; height:12%; background: #1a0e0a; border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%; clip-path: polygon(0% 100%, 10% 60%, 30% 50%, 50% 20%, 70% 50%, 90% 60%, 100% 100%); animation: scr-la-cat 4s ease-in-out infinite; }
.scn-love-of-animals .dog-silhouette { position:absolute; bottom:18%; left:58%; width:10%; height:14%; background: #1a0e0a; border-radius: 40% 40% 30% 30% / 50% 50% 20% 20%; clip-path: polygon(10% 100%, 20% 70%, 40% 40%, 60% 40%, 80% 70%, 90% 100%, 50% 80%); animation: scr-la-dog 5s ease-in-out infinite reverse; }
.scn-love-of-animals .armchair { position:absolute; bottom:12%; left:20%; width:25%; height:35%; background: linear-gradient(180deg, #4a3020 0%, #2a1a10 100%); border-radius: 20% 20% 10% 10% / 30% 30% 10% 10%; box-shadow: inset 0 -6px 10px rgba(0,0,0,0.5); }
.scn-love-of-animals .mantle { position:absolute; bottom:60%; left:15%; width:40%; height:6%; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a10 100%); border-radius: 2px; box-shadow: 0 4px 8px rgba(0,0,0,0.5); }
.scn-love-of-animals .framed-portrait { position:absolute; bottom:62%; left:18%; width:10%; height:18%; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border: 2px solid #2a1a10; border-radius: 2px; }
@keyframes scr-la-fire {
  0% { transform: scale(1) translateY(0); opacity: 0.7; }
  50% { transform: scale(1.2) translateY(-5%); opacity: 1; }
  100% { transform: scale(0.9) translateY(2%); opacity: 0.8; }
}
@keyframes scr-la-fig {
  0%,100% { transform: translateX(0) rotate(-2deg); }
  25% { transform: translateX(2%) rotate(0deg); }
  50% { transform: translateX(0) rotate(2deg); }
  75% { transform: translateX(-2%) rotate(0deg); }
}
@keyframes scr-la-cat {
  0% { transform: translateX(0) translateY(0) rotate(0deg); }
  50% { transform: translateX(5%) translateY(-10%) rotate(5deg); }
  100% { transform: translateX(0) translateY(0) rotate(0deg); }
}
@keyframes scr-la-dog {
  0% { transform: translateX(0) translateY(0) rotate(0deg); }
  50% { transform: translateX(-4%) translateY(-8%) rotate(-3deg); }
  100% { transform: translateX(0) translateY(0) rotate(0deg); }
}

.scn-marriage-and-pets {
  background:
    linear-gradient(180deg, #f0e6d0 0%, #e0d4b8 30%, #c4b89a 60%, #a89878 100%),
    linear-gradient(135deg, rgba(255,255,200,0.2) 0%, transparent 50%, rgba(200,220,255,0.1) 100%);
  overflow: hidden;
}
.scn-marriage-and-pets .sunny-wall { position:absolute; inset:0 0 20% 0; background: linear-gradient(180deg, #f0e6d0 0%, #d8c8a8 100%); box-shadow: inset 0 8px 20px rgba(0,0,0,0.1); }
.scn-marriage-and-pets .window-bright { position:absolute; top:5%; left:10%; width:30%; height:60%; background: linear-gradient(180deg, #b8d8e8 0%, #d8e8f0 100%); border: 4px solid #8a7a5a; border-radius: 4px; box-shadow: inset 0 0 30px rgba(255,255,255,0.3), 0 4px 12px rgba(0,0,0,0.1); }
.scn-marriage-and-pets .window-sash { position:absolute; top:5%; left:10%; width:30%; height:60%; background: repeating-linear-gradient(0deg, transparent 0px, transparent 28%, #8a7a5a 28%, #8a7a5a 30%, transparent 30%), repeating-linear-gradient(90deg, transparent 0px, transparent 28%, #8a7a5a 28%, #8a7a5a 30%, transparent 30%); pointer-events: none; }
.scn-marriage-and-pets .child-figure { position:absolute; bottom:32%; left:40%; width:12%; height:25%; background: linear-gradient(180deg, #c8a078 0%, #a08060 100%); border-radius: 50% 50% 30% 30% / 60% 60% 20% 20%; transform-origin: bottom center; animation: scr-mp-child 5s ease-in-out infinite; }
.scn-marriage-and-pets .puppy { position:absolute; bottom:25%; left:55%; width:8%; height:10%; background: #a08060; border-radius: 50% 50% 30% 30% / 60% 60% 20% 20%; clip-path: polygon(0% 100%, 5% 50%, 30% 20%, 60% 20%, 95% 50%, 100% 100%); animation: scr-mp-pup 4s ease-in-out infinite; }
.scn-marriage-and-pets .kitten { position:absolute; bottom:30%; left:48%; width:5%; height:7%; background: #8a6a4a; border-radius: 50% 50% 30% 30% / 60% 60% 20% 20%; clip-path: polygon(0% 100%, 10% 40%, 40% 10%, 70% 10%, 90% 40%, 100% 100%); animation: scr-mp-kit 3.5s ease-in-out infinite alternate; }
.scn-marriage-and-pets .basket { position:absolute; bottom:18%; left:45%; width:15%; height:10%; background: linear-gradient(180deg, #b89878 0%, #907050 100%); border-radius: 20% 20% 5% 5% / 40% 40% 10% 10%; box-shadow: inset 0 -4px 6px rgba(0,0,0,0.2); }
.scn-marriage-and-pets .floor-boards { position:absolute; bottom:0; left:0; right:0; height:20%; background: repeating-linear-gradient(90deg, #a89878 0px, #a89878 2px, #c4b89a 2px, #c4b89a 4px); opacity: 0.6; }
@keyframes scr-mp-child {
  0% { transform: translateX(0) translateY(0) rotate(-2deg); }
  25% { transform: translateX(3%) translateY(-2%) rotate(0deg); }
  50% { transform: translateX(0) translateY(0) rotate(2deg); }
  75% { transform: translateX(-3%) translateY(-1%) rotate(0deg); }
  100% { transform: translateX(0) translateY(0) rotate(-2deg); }
}
@keyframes scr-mp-pup {
  0%,100% { transform: translateX(0) translateY(0) rotate(0deg); }
  25% { transform: translateX(5%) translateY(-5%) rotate(5deg); }
  50% { transform: translateX(0) translateY(0) rotate(0deg); }
  75% { transform: translateX(-3%) translateY(-3%) rotate(-3deg); }
}
@keyframes scr-mp-kit {
  0% { transform: translateX(0) translateY(0) rotate(-10deg); }
  100% { transform: translateX(4%) translateY(-8%) rotate(10deg); }
}

/* scene 1: item-white-mark */
.scn-item-white-mark {
  background: 
    linear-gradient(180deg, #0a0a12 0%, #1a1424 40%, #2a1f2f 100%),
    radial-gradient(ellipse at 50% 60%, #2a1f2f 0%, transparent 70%);
}
.scn-item-white-mark .bg-void { position:absolute; inset:0; background:radial-gradient(circle at 60% 40%, #14101a 0%, #0a0a12 70%); opacity:0.8; }
.scn-item-white-mark .jail-bars { position:absolute; left:0; right:0; top:0; bottom:0; background: repeating-linear-gradient(0deg, transparent 0px, transparent 12px, #1a1a2a 12px, #1a1a2a 14px); filter:blur(1px); opacity:0.25; }
.scn-item-white-mark .cat-head { position:absolute; bottom:30%; left:50%; width:60px; height:50px; transform:translateX(-50%); background:radial-gradient(ellipse 70% 80% at 50% 60%, #2a2230 0%, #18141e 100%); border-radius:50% 50% 45% 45%; box-shadow: 0 8px 20px rgba(0,0,0,0.7); }
.scn-item-white-mark .cat-ears { position:absolute; bottom:70%; left:50%; width:70px; height:20px; transform:translateX(-50%); background:radial-gradient(circle at 20% 0%, #2a2230 0%, transparent 40%), radial-gradient(circle at 80% 0%, #2a2230 0%, transparent 40%); filter: blur(1px); }
.scn-item-white-mark .white-mark { position:absolute; bottom:42%; left:50%; width:18px; height:28px; transform:translateX(-50%); background:radial-gradient(ellipse, #d4c8b8 0%, #9e8c7a 60%, transparent 100%); border-radius:40% 40% 20% 20%; animation: iwm-mark 6s ease-in-out infinite alternate; }
.scn-item-white-mark .eye-left { position:absolute; bottom:46%; left:44%; width:10px; height:10px; background:radial-gradient(circle, #b09020 0%, #5e4a12 80%); border-radius:50%; box-shadow:0 0 12px 2px #b09020; animation: iwm-glow 3s ease-in-out infinite alternate; }
.scn-item-white-mark .eye-right { position:absolute; bottom:46%; right:44%; width:10px; height:10px; background:radial-gradient(circle, #b09020 0%, #5e4a12 80%); border-radius:50%; box-shadow:0 0 12px 2px #b09020; animation: iwm-glow 3s ease-in-out infinite alternate 1.5s; }
.scn-item-white-mark .breath-fog { position:absolute; bottom:20%; left:50%; width:50px; height:30px; transform:translateX(-50%); background:radial-gradient(ellipse, rgba(200,200,230,0.15) 0%, transparent 70%); filter:blur(8px); animation: iwm-breathe 5s ease-in-out infinite; }
.scn-item-white-mark .shadow-stripe { position:absolute; top:0; left:0; right:0; bottom:0; background:linear-gradient(110deg, transparent 30%, rgba(0,0,0,0.3) 30%, rgba(0,0,0,0.3) 35%, transparent 35%); pointer-events:none; }
@keyframes iwm-mark {
  0% { transform: translateX(-50%) scale(1,1); opacity:0.7; }
  50% { transform: translateX(-50%) scale(1.08,1.12); opacity:1; }
  100% { transform: translateX(-50%) scale(1,1); opacity:0.7; }
}
@keyframes iwm-glow {
  0% { box-shadow:0 0 8px 1px #b09020; opacity:0.6; }
  50% { box-shadow:0 0 20px 4px #d0b040; opacity:1; }
  100% { box-shadow:0 0 6px 1px #b09020; opacity:0.6; }
}
@keyframes iwm-breathe {
  0% { transform: translateX(-50%) scaleY(0.6); opacity:0; }
  50% { transform: translateX(-50%) scaleY(1.2); opacity:0.8; }
  100% { transform: translateX(-50%) scaleY(0.6); opacity:0; }
}

/* scene 2: item-gallows-image */
.scn-item-gallows-image {
  background: 
    linear-gradient(180deg, #0e0e1a 0%, #1a1a2e 40%, #2a2040 100%),
    radial-gradient(ellipse at 50% 10%, #2a2040 0%, transparent 60%);
}
.scn-item-gallows-image .sky-gallows { position:absolute; inset:0; background:linear-gradient(180deg, #0e0e1a 0%, #1a1a2e 80%); }
.scn-item-gallows-image .beam { position:absolute; top:20%; left:25%; right:25%; height:6px; background:linear-gradient(90deg, #3a2a1a 0%, #4a3a2a 50%, #2a1a0a 100%); border-radius:2px; box-shadow:0 2px 6px rgba(0,0,0,0.6); animation: igi-sway 8s ease-in-out infinite alternate; }
.scn-item-gallows-image .rope { position:absolute; top:20%; left:50%; width:4px; height:120px; transform:translateX(-50%); background:linear-gradient(180deg, #4a3a2a 0%, #2a1a0a 100%); border-radius:2px; box-shadow:0 0 4px rgba(0,0,0,0.5); animation: igi-sway 8s ease-in-out infinite alternate-reverse; }
.scn-item-gallows-image .noose { position:absolute; top:55%; left:50%; width:30px; height:15px; transform:translateX(-50%) rotate(-5deg); background:radial-gradient(ellipse 70% 50% at 30% 50%, #4a3a2a 0%, #2a1a0a 100%); border-radius:50% 50% 0 0; box-shadow:0 2px 8px rgba(0,0,0,0.4); animation: igi-sway 8s ease-in-out infinite alternate; }
.scn-item-gallows-image .post-left { position:absolute; top:20%; left:25%; width:8px; height:80%; transform:translateX(-50%); background:linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%); border-radius:2px; box-shadow:2px 0 6px rgba(0,0,0,0.5); }
.scn-item-gallows-image .post-right { position:absolute; top:20%; right:25%; width:8px; height:80%; transform:translateX(50%); background:linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%); border-radius:2px; box-shadow:-2px 0 6px rgba(0,0,0,0.5); }
.scn-item-gallows-image .moon { position:absolute; top:8%; right:20%; width:40px; height:40px; background:radial-gradient(circle at 40% 30%, #b8b8d0 0%, #6a6a80 70%, transparent 80%); border-radius:50%; filter:blur(4px); opacity:0.5; animation: igi-moon 20s linear infinite; }
.scn-item-gallows-image .crow-silhouette { position:absolute; top:30%; right:15%; width:20px; height:12px; background:#12101a; border-radius:50% 50% 40% 40%; filter:blur(1px); animation: igi-crow 15s linear infinite; }
.scn-item-gallows-image .haze { position:absolute; top:0; left:0; right:0; bottom:0; background:radial-gradient(ellipse at 50% 0%, rgba(30,25,40,0.4) 0%, transparent 70%); filter:blur(10px); }
@keyframes igi-sway {
  0% { transform: translateX(-50%) rotate(0deg); }
  50% { transform: translateX(-50%) rotate(3deg); }
  100% { transform: translateX(-50%) rotate(-2deg); }
}
@keyframes igi-moon {
  0% { transform: translateX(0); opacity:0.4; }
  50% { transform: translateX(5px); opacity:0.6; }
  100% { transform: translateX(0); opacity:0.4; }
}
@keyframes igi-crow {
  0% { transform: translateY(0) translateX(0); opacity:0.8; }
  50% { transform: translateY(-8px) translateX(-30px); opacity:0.4; }
  100% { transform: translateY(0) translateX(0); opacity:0.2; }
}

/* scene 3: nightmares-wretchedness */
.scn-nightmares-wretchedness {
  background: 
    linear-gradient(180deg, #0a0a12 0%, #1a1222 30%, #2a1a32 100%),
    radial-gradient(ellipse at 50% 70%, #2a1a32 0%, transparent 50%);
}
.scn-nightmares-wretchedness .chamber-wall { position:absolute; inset:0; background:linear-gradient(90deg, #12101a 0%, #1a1424 60%, #12101a 100%); }
.scn-nightmares-wretchedness .bed-frame { position:absolute; bottom:25%; left:10%; right:10%; height:30%; background:linear-gradient(180deg, #2a1a1a 0%, #1a1010 100%); border-radius:5% 5% 0 0; box-shadow:0 -8px 20px rgba(0,0,0,0.6); }
.scn-nightmares-wretchedness .figure-prone { position:absolute; bottom:30%; left:35%; width:80px; height:40px; background:radial-gradient(ellipse 90% 60% at 50% 50%, #1a1a2a 0%, #0a0a12 100%); border-radius:30% 30% 50% 50%; transform:rotate(2deg); box-shadow:inset 0 4px 10px rgba(0,0,0,0.5); animation: nw-figure 10s ease-in-out infinite alternate; }
.scn-nightmares-wretchedness .cat-shadow { position:absolute; bottom:50%; left:45%; width:100px; height:60px; background:radial-gradient(ellipse 80% 70% at 50% 50%, #1a1a2e 0%, #0a0a12 100%); border-radius:50% 50% 40% 40%; box-shadow:0 0 40px rgba(0,0,0,0.8); animation: nw-cat 6s ease-in-out infinite; }
.scn-nightmares-wretchedness .cat-eyes { position:absolute; bottom:60%; left:50%; width:16px; height:8px; transform:translateX(-50%); background:radial-gradient(ellipse 80% 50% at 50% 50%, #c08030 0%, #402010 100%); border-radius:50%; filter:blur(2px); box-shadow:0 0 20px 6px rgba(192,128,48,0.5); animation: nw-eyes 4s ease-in-out infinite alternate; }
.scn-nightmares-wretchedness .candle-glow { position:absolute; top:60%; left:20%; width:80px; height:80px; background:radial-gradient(circle, rgba(255,180,80,0.2) 0%, transparent 70%); filter:blur(15px); animation: nw-flicker 3s ease-in-out infinite; }
.scn-nightmares-wretchedness .candle { position:absolute; top:65%; left:20%; width:6px; height:30px; background:linear-gradient(180deg, #b07030 0%, #705020 100%); border-radius:2px; transform:rotate(5deg); box-shadow:0 0 10px 2px rgba(255,180,80,0.3); }
.scn-nightmares-wretchedness .shadow-arm { position:absolute; bottom:35%; left:20%; width:80px; height:20px; background:linear-gradient(90deg, #0a0a12 0%, #1a1a2a 100%); border-radius:0 50% 50% 0; transform:rotate(-15deg); filter:blur(2px); }
@keyframes nw-figure {
  0% { transform: rotate(2deg) scale(1,1); opacity:0.9; }
  50% { transform: rotate(-1deg) scale(1.02,0.98); opacity:0.8; }
  100% { transform: rotate(2deg) scale(1,1); opacity:0.9; }
}
@keyframes nw-cat {
  0% { transform: translateY(0) scale(1,1); }
  33% { transform: translateY(-4px) scale(1.05,0.95); }
  66% { transform: translateY(-2px) scale(0.98,1.02); }
  100% { transform: translateY(0) scale(1,1); }
}
@keyframes nw-eyes {
  0% { opacity:0.2; transform: translateX(-50%) scaleX(0.8); }
  50% { opacity:1; transform: translateX(-50%) scaleX(1.2); }
  100% { opacity:0.4; transform: translateX(-50%) scaleX(0.8); }
}
@keyframes nw-flicker {
  0% { opacity:0.6; transform:scale(0.95); }
  50% { opacity:0.9; transform:scale(1.1); }
  100% { opacity:0.6; transform:scale(0.95); }
}

/* scene 4: evil-thoughts-wife */
.scn-evil-thoughts-wife {
  background: 
    linear-gradient(180deg, #0e0a0a 0%, #1a1010 40%, #221414 100%),
    radial-gradient(ellipse at 50% 50%, #221414 0%, transparent 60%);
}
.scn-evil-thoughts-wife .room-bg { position:absolute; inset:0; background:radial-gradient(circle at 30% 40%, #1a1212 0%, #0a0808 90%); }
.scn-evil-thoughts-wife .bed-curtains { position:absolute; top:0; left:0; right:0; bottom:40%; background:linear-gradient(180deg, #2a1a1a 0%, transparent 100%); filter:blur(6px); opacity:0.3; }
.scn-evil-thoughts-wife .wife-face { position:absolute; bottom:35%; left:50%; width:50px; height:40px; transform:translateX(-50%); background:radial-gradient(ellipse 70% 80% at 50% 40%, #2a1a18 0%, #1a1010 100%); border-radius:40% 40% 50% 50%; box-shadow:0 -4px 12px rgba(0,0,0,0.6); animation: etw-terror 6s ease-in-out infinite alternate; }
.scn-evil-thoughts-wife .cat-jaw { position:absolute; bottom:50%; left:50%; width:70px; height:40px; transform:translateX(-50%) translateY(-10px); background:radial-gradient(ellipse 80% 50% at 50% 20%, #1a1a2a 0%, #0a0a12 100%); border-radius:40% 40% 20% 20%; box-shadow:0 8px 30px rgba(0,0,0,0.7); animation: etw-jaw 4s ease-in-out infinite; }
.scn-evil-thoughts-wife .hot-breath { position:absolute; bottom:40%; left:50%; width:40px; height:20px; transform:translateX(-50%); background:radial-gradient(ellipse, rgba(200,150,100,0.25) 0%, transparent 70%); filter:blur(10px); animation: etw-breath 5s ease-in-out infinite; }
.scn-evil-thoughts-wife .nightstand { position:absolute; bottom:20%; left:20%; width:30px; height:50px; background:linear-gradient(180deg, #3a2a1a 0%, #2a1a0a 100%); border-radius:4px; box-shadow:2px 0 8px rgba(0,0,0,0.5); }
.scn-evil-thoughts-wife .candle-drip { position:absolute; bottom:45%; left:20%; width:4px; height:20px; background:linear-gradient(180deg, #c08050 0%, #805030 100%); border-radius:1px; animation: etw-drip 8s linear infinite; }
.scn-evil-thoughts-wife .shadow-sheet { position:absolute; bottom:0; left:0; right:0; height:30%; background:linear-gradient(180deg, transparent 0%, #0a0808 100%); }
@keyframes etw-terror {
  0% { transform: translateX(-50%) scale(1,1) rotate(0deg); }
  50% { transform: translateX(-50%) scale(1.05,1.02) rotate(2deg); }
  100% { transform: translateX(-50%) scale(1,1) rotate(0deg); }
}
@keyframes etw-jaw {
  0% { transform: translateX(-50%) translateY(-10px) scale(1,1); }
  33% { transform: translateX(-50%) translateY(-8px) scale(1.04,0.96); }
  66% { transform: translateX(-50%) translateY(-12px) scale(0.97,1.03); }
  100% { transform: translateX(-50%) translateY(-10px) scale(1,1); }
}
@keyframes etw-breath {
  0% { transform: translateX(-50%) scaleY(0.5); opacity:0; }
  50% { transform: translateX(-50%) scaleY(1.3); opacity:0.7; }
  100% { transform: translateX(-50%) scaleY(0.5); opacity:0; }
}
@keyframes etw-drip {
  0% { transform: translateY(0) scaleY(1); opacity:0.8; }
  50% { transform: translateY(10px) scaleY(1.5); opacity:0.3; }
  100% { transform: translateY(0) scaleY(1); opacity:0.8; }
}

.scn-item-cat-figure { background: linear-gradient(180deg, #5c6670 0%, #3b4249 60%, #2a2e33 100%), radial-gradient(ellipse at 50% 0%, #74808c 0%, transparent 70%); }
.scn-item-cat-figure .overcast-bg { position:absolute; inset:0; background: linear-gradient(0deg, rgba(90,100,110,.3) 0%, rgba(70,78,85,.5) 50%, transparent 100%); animation: icf-sky 12s ease-in-out infinite alternate; }
.scn-item-cat-figure .wall { position:absolute; bottom:10%; left:15%; right:15%; height:75%; background: linear-gradient(90deg, #3c4249 0%, #535b63 50%, #3c4249 100%); border-radius: 4px; box-shadow: inset 0 0 30px rgba(0,0,0,.6); }
.scn-item-cat-figure .crowd-back { position:absolute; bottom:12%; left:20%; right:20%; height:30%; background: linear-gradient(180deg, rgba(40,45,50,.7) 0%, rgba(30,35,40,.5) 100%); border-radius: 40% 40% 0 0 / 80% 80% 0 0; filter:blur(2px); animation: icf-crowd 5s ease-in-out infinite alternate; }
.scn-item-cat-figure .crowd-front { position:absolute; bottom:8%; left:25%; right:25%; height:25%; background: radial-gradient(ellipse at 30% 100%, rgba(60,65,72,.8) 0%, rgba(30,35,40,.6) 70%); border-radius: 60% 60% 0 0 / 90% 90% 0 0; filter:blur(1px); animation: icf-crowd 4s ease-in-out infinite alternate-reverse; }
.scn-item-cat-figure .cat-figure { position:absolute; bottom:50%; left:50%; width:40px; height:30px; transform:translate(-50%,0); background: radial-gradient(ellipse, #1a1c1f 0%, #0a0c0e 70%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; box-shadow: 0 0 8px 2px rgba(0,0,0,.5); animation: icf-cat 2s ease-in-out infinite alternate; }
.scn-item-cat-figure .etching-lines { position:absolute; bottom:50%; left:50%; width:60px; height:40px; transform:translate(-50%,-5px); background: repeating-linear-gradient(0deg, transparent 0%, transparent 2px, #6a747e 2px, #6a747e 3px, transparent 3px, transparent 6px); opacity:.4; animation: icf-etch 7s ease-in-out infinite; }
.scn-item-cat-figure .drip { position:absolute; bottom:45%; left:48%; width:4px; height:0; background: linear-gradient(180deg, #6a747e, transparent); border-radius: 2px; animation: icf-drip 4s ease-in-out infinite; }
@keyframes icf-sky { 0% { opacity:.7 } 50% { opacity:1 } 100% { opacity:.6 } }
@keyframes icf-crowd { 0% { transform: scaleY(1) translateY(0) } 50% { transform: scaleY(1.02) translateY(-2px) } 100% { transform: scaleY(.98) translateY(1px) } }
@keyframes icf-cat { 0% { transform: translate(-50%,0) scale(1) } 50% { transform: translate(-50%,-3px) scale(1.05) } 100% { transform: translate(-50%,0) scale(1) } }
@keyframes icf-etch { 0% { opacity:.3 } 50% { opacity:.6 } 100% { opacity:.4; transform: translate(-50%,-5px) rotate(2deg) } }
@keyframes icf-drip { 0% { height:0; opacity:0 } 50% { height:30px; opacity:.6 } 100% { height:0; opacity:0; transform: translateY(10px) } }

.scn-apparition-explanation { background: linear-gradient(180deg, #4a2010 0%, #2a1008 50%, #1a0804 100%), radial-gradient(ellipse at 20% 100%, #8a3a18 0%, transparent 60%); }
.scn-apparition-explanation .room-wall { position:absolute; inset:0 15% 20% 15%; background: linear-gradient(0deg, #3a1a0c 0%, #5a2e18 40%, #3a1a0c 100%); border-radius: 4px; box-shadow: inset 0 0 40px rgba(0,0,0,.7); }
.scn-apparition-explanation .fire-glow { position:absolute; bottom:10%; left:30%; right:30%; height:60%; background: radial-gradient(ellipse at 50% 100%, #ff8844 0%, #cc6622 30%, transparent 70%); opacity:.6; animation: aep-fire 3s ease-in-out infinite alternate; }
.scn-apparition-explanation .fireplace { position:absolute; bottom:5%; left:40%; right:40%; height:25%; background: linear-gradient(180deg, #2a1008 0%, #1a0804 100%); border-radius: 20% 20% 8% 8%; box-shadow: 0 0 20px #aa5522; }
.scn-apparition-explanation .cat-apparition { position:absolute; bottom:45%; left:45%; width:30px; height:25px; background: radial-gradient(ellipse, #ffddaa 0%, #ffaa66 60%, transparent 80%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; opacity:.7; animation: aep-ghost 6s ease-in-out infinite; }
.scn-apparition-explanation .shadow { position:absolute; bottom:8%; left:30%; right:30%; height:20%; background: linear-gradient(180deg, transparent 0%, rgba(10,5,2,.8) 100%); border-radius: 50% 50% 0 0; filter:blur(4px); animation: aep-shadow 8s ease-in-out infinite alternate; }
.scn-apparition-explanation .ember { position:absolute; bottom:18%; left:48%; width:6px; height:6px; background: #ffcc44; border-radius:50%; box-shadow: 0 0 12px 4px #ff8844; animation: aep-ember 2s ease-in-out infinite; }
.scn-apparition-explanation .smoke { position:absolute; bottom:25%; left:42%; width:20px; height:40px; background: radial-gradient(ellipse, rgba(200,160,120,.2) 0%, transparent 70%); filter:blur(6px); animation: aep-smoke 9s linear infinite; }
@keyframes aep-fire { 0% { opacity:.5; transform: scaleY(1) } 50% { opacity:.8; transform: scaleY(1.1) } 100% { opacity:.6; transform: scaleY(.95) } }
@keyframes aep-ghost { 0% { opacity:.3; transform: scale(1) } 25% { opacity:.8; transform: scale(1.1) } 50% { opacity:.5; transform: scale(.9) } 100% { opacity:.4; transform: scale(1) } }
@keyframes aep-shadow { 0% { transform: scaleX(1) } 50% { transform: scaleX(1.2) translateY(2px) } 100% { transform: scaleX(.9) } }
@keyframes aep-ember { 0% { transform: translate(0,0) scale(1) opacity:1 } 50% { transform: translate(8px,-15px) scale(1.3) opacity:.6 } 100% { transform: translate(-4px,-30px) scale(.5) opacity:0 } }
@keyframes aep-smoke { 0% { transform: translateY(0) scale(1); opacity:.3 } 50% { transform: translateY(-40px) scale(2); opacity:.1 } 100% { transform: translateY(-80px) scale(3); opacity:0 } }

.scn-reasoning-conscience { background: linear-gradient(180deg, #4a2a14 0%, #2a140a 50%, #1a0a04 100%), radial-gradient(ellipse at 50% 0%, #aa6a2a 0%, transparent 60%); }
.scn-reasoning-conscience .wall-plaster { position:absolute; inset:10% 10% 10% 10%; background: linear-gradient(0deg, #c8a880 0%, #b89870 30%, #a08860 100%); border-radius: 8px; box-shadow: inset 0 0 20px rgba(0,0,0,.4); }
.scn-reasoning-conscience .imprint { position:absolute; bottom:35%; left:40%; right:40%; height:30%; background: radial-gradient(ellipse, #705838 0%, #4a3420 70%); border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%; box-shadow: inset 0 0 15px rgba(0,0,0,.5); animation: rcn-imprint 8s ease-in-out infinite alternate; }
.scn-reasoning-conscience .plaster-texture { position:absolute; inset:10% 10% 10% 10%; background: repeating-conic-gradient(rgba(0,0,0,.03) 0deg, transparent 1deg 3deg, rgba(0,0,0,.02) 3deg 6deg); opacity:.5; }
.scn-reasoning-conscience .flame-glow { position:absolute; bottom:0; left:20%; right:20%; height:50%; background: radial-gradient(ellipse at 50% 100%, #ff6633 0%, #cc3300 40%, transparent 80%); opacity:.7; animation: rcn-flame 3s ease-in-out infinite alternate; }
.scn-reasoning-conscience .ammonia-haze { position:absolute; top:20%; left:20%; right:20%; height:40%; background: radial-gradient(ellipse, rgba(180,220,120,.15) 0%, transparent 70%); filter:blur(10px); animation: rcn-haze 10s ease-in-out infinite; }
.scn-reasoning-conscience .crack { position:absolute; bottom:40%; left:45%; width:2px; height:60px; background: linear-gradient(180deg, #2a1a0e 0%, #1a0e06 100%); border-radius: 1px; transform:rotate(15deg); animation: rcn-crack 15s ease-in-out infinite; }
.scn-reasoning-conscience .drip { position:absolute; bottom:30%; left:48%; width:4px; height:0; background: linear-gradient(180deg, #6a5a4a, transparent); border-radius: 2px; animation: rcn-drip 5s ease-in-out infinite; }
@keyframes rcn-imprint { 0% { transform: scale(1); filter:brightness(1) } 50% { transform: scale(1.02); filter:brightness(1.2) } 100% { transform: scale(.98); filter:brightness(.9) } }
@keyframes rcn-flame { 0% { opacity:.5; transform: scaleY(1) } 50% { opacity:.9; transform: scaleY(1.1) } 100% { opacity:.6; transform: scaleY(.95) } }
@keyframes rcn-haze { 0% { opacity:.2; transform: scale(1) } 50% { opacity:.4; transform: scale(1.3) } 100% { opacity:.1; transform: scale(.8) } }
@keyframes rcn-crack { 0% { transform: rotate(15deg) scaleX(1) } 50% { transform: rotate(17deg) scaleX(1.2) } 100% { transform: rotate(13deg) scaleX(.9) } }
@keyframes rcn-drip { 0% { height:0; opacity:0 } 30% { height:20px; opacity:.6 } 70% { height:20px; opacity:.6; transform: translateY(5px) } 100% { height:0; opacity:0; transform: translateY(15px) } }

.scn-lingering-remorse { background: linear-gradient(180deg, #1a1420 0%, #0e0c14 50%, #050408 100%), radial-gradient(ellipse at 50% 80%, #2a1e30 0%, transparent 80%); }
.scn-lingering-remorse .room-dark { position:absolute; inset:0; background: linear-gradient(180deg, rgba(20,16,30,.9) 0%, rgba(10,8,18,.8) 100%); }
.scn-lingering-remorse .floor { position:absolute; bottom:0; left:0; right:0; height:25%; background: linear-gradient(180deg, #1a1420 0%, #0a0810 100%); box-shadow: inset 0 8px 15px rgba(0,0,0,.8); }
.scn-lingering-remorse .cat-phantasm { position:absolute; bottom:40%; left:40%; right:40%; height:35%; background: radial-gradient(ellipse, rgba(140,160,180,.3) 0%, transparent 70%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; filter:blur(4px); animation: lgr-phantasm 6s ease-in-out infinite alternate; }
.scn-lingering-remorse .faint-glow { position:absolute; bottom:35%; left:45%; right:45%; height:20%; background: radial-gradient(ellipse, rgba(100,120,200,.1) 0%, transparent 60%); animation: lgr-glow 8s ease-in-out infinite; }
.scn-lingering-remorse .shadow-figure { position:absolute; bottom:15%; left:30%; right:30%; height:40%; background: linear-gradient(180deg, transparent 0%, rgba(5,5,10,.9) 60%, #0a0810 100%); border-radius: 60% 60% 0 0 / 80% 80% 0 0; filter:blur(3px); animation: lgr-shadow 10s ease-in-out infinite alternate; }
.scn-lingering-remorse .curtain { position:absolute; top:0; left:0; bottom:0; width:20%; background: linear-gradient(180deg, #1a1420 0%, #0a0810 100%); box-shadow: 4px 0 10px rgba(0,0,0,.5); animation: lgr-curtain 15s ease-in-out infinite alternate; transform-origin: left center; }
.scn-lingering-remorse .dust { position:absolute; top:10%; left:20%; width:4px; height:4px; background: rgba(200,200,220,.1); border-radius:50%; filter:blur(1px); animation: lgr-dust 8s linear infinite; }
@keyframes lgr-phantasm { 0% { opacity:.2; transform: scale(.9) } 50% { opacity:.5; transform: scale(1.1) } 100% { opacity:.3; transform: scale(1) } }
@keyframes lgr-glow { 0% { opacity:.1; transform: scale(1) } 50% { opacity:.3; transform: scale(1.3) } 100% { opacity:.15; transform: scale(.8) } }
@keyframes lgr-shadow { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.05) translateY(-3px) } 100% { transform: scaleY(.95) } }
@keyframes lgr-curtain { 0% { transform: scaleX(1) } 50% { transform: scaleX(1.05) } 100% { transform: scaleX(.95) } }
@keyframes lgr-dust { 0% { transform: translate(0,0) scale(1); opacity:0 } 20% { opacity:.3 } 80% { opacity:.3 } 100% { transform: translate(30px,-20px) scale(2); opacity:0 } }

/* Scene 1: item-noose-hanging */
.scn-item-noose-hanging {
  background: linear-gradient(180deg, #4a5568 0%, #718096 20%, #a0aec0 40%, #cbd5e0 100%), radial-gradient(ellipse at 50% 100%, #2d3748 0%, transparent 70%);
}
.scn-item-noose-hanging .sky-dawn { position:absolute; inset:0 0 55% 0; background: linear-gradient(180deg, #2d3748 0%, #4a5568 30%, #a0aec0 100%); animation: nh-sky 12s ease-in-out infinite alternate; }
.scn-item-noose-hanging .ground-dark { position:absolute; bottom:0; left:0; right:0; height:55%; background: linear-gradient(180deg, #1a202c 0%, #0f1419 100%); border-radius: 30% 70% 0 0 / 60% 80% 0 0; box-shadow: inset 0 10px 20px rgba(0,0,0,.6); }
.scn-item-noose-hanging .tree-trunk { position:absolute; bottom:40%; left:48%; width:12px; height:60%; background: linear-gradient(180deg, #2d3748 0%, #1a202c 100%); border-radius: 6px 6px 0 0; transform: translateX(-50%); box-shadow: 4px 0 8px rgba(0,0,0,.4); animation: nh-trunk 8s ease-in-out infinite; }
.scn-item-noose-hanging .tree-branch { position:absolute; bottom:72%; left:48%; width:80px; height:12px; transform-origin: left center; background: linear-gradient(90deg, #2d3748 0%, #1a202c 100%); border-radius: 6px; transform: translateX(-50%) rotate(-15deg); box-shadow: 2px 2px 4px rgba(0,0,0,.3); animation: nh-branch 5s ease-in-out infinite alternate; }
.scn-item-noose-hanging .noose-loop { position:absolute; bottom:62%; left:48%; width:16px; height:20px; background: transparent; border: 3px solid #4a5568; border-radius: 50%; transform: translateX(-50%) rotate(5deg); box-shadow: 0 0 4px rgba(0,0,0,.5); animation: nh-swing 4s ease-in-out infinite; }
.scn-item-noose-hanging .noose-rope { position:absolute; bottom:72%; left:48%; width:130px; height:3px; background: #4a5568; transform-origin: left; transform: translateX(-50%) rotate(75deg); border-radius: 2px; box-shadow: 0 0 2px rgba(0,0,0,.4); animation: nh-rope 4s ease-in-out infinite; }
.scn-item-noose-hanging .figure-kneel { position:absolute; bottom:36%; left:44%; width:20px; height:30px; background: radial-gradient(ellipse 60% 70% at 30% 30%, #1a202c 0%, #0f1419 100%); border-radius: 50% 50% 40% 40% / 60% 50% 40% 40%; transform-origin: bottom; animation: nh-figure 6s ease-in-out infinite; }
.scn-item-noose-hanging .leaf-shadow { position:absolute; top:18%; right:10%; width:60px; height:80px; background: radial-gradient(ellipse 50% 50% at 50% 50%, rgba(26,32,44,.6) 0%, transparent 100%); filter: blur(8px); animation: nh-leaf 20s linear infinite; }
.scn-item-noose-hanging .mist { position:absolute; bottom:35%; left:0; right:0; height:20%; background: linear-gradient(90deg, rgba(160,174,192,.3) 0%, transparent 50%, rgba(160,174,192,.2) 100%); filter: blur(12px); animation: nh-mist 15s ease-in-out infinite; }
@keyframes nh-sky { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.7 } }
@keyframes nh-trunk { 0%,100% { transform: translateX(-50%) } 50% { transform: translateX(-50%) translateY(2px) } }
@keyframes nh-branch { 0% { transform: translateX(-50%) rotate(-15deg) } 100% { transform: translateX(-50%) rotate(-10deg) } }
@keyframes nh-swing { 0%,100% { transform: translateX(-50%) rotate(5deg) } 50% { transform: translateX(-50%) rotate(-5deg) } }
@keyframes nh-rope { 0%,100% { transform: translateX(-50%) rotate(75deg) } 50% { transform: translateX(-50%) rotate(80deg) } }
@keyframes nh-figure { 0%,100% { transform: scaleY(1) } 50% { transform: scaleY(1.02) } }
@keyframes nh-leaf { 0% { transform: translateY(0) scale(1) } 50% { transform: translateY(-10px) scale(1.1) } 100% { transform: translateY(0) scale(1) } }
@keyframes nh-mist { 0% { opacity:.3 } 50% { opacity:.6 } 100% { opacity:.3 } }

/* Scene 2: item-curtains-flames */
.scn-item-curtains-flames {
  background: linear-gradient(180deg, #1a1a2e 0%, #2d2d44 40%, #1a1a2e 100%), radial-gradient(ellipse at 50% 20%, #ff7b00 0%, transparent 60%);
}
.scn-item-curtains-flames .room-walls { position:absolute; inset:0; background: linear-gradient(135deg, #2d2d44 0%, #1a1a2e 100%); box-shadow: inset 0 0 80px rgba(0,0,0,.7); }
.scn-item-curtains-flames .curtain-left { position:absolute; top:18%; left:10%; width:30%; height:65%; background: linear-gradient(180deg, #ff4500 0%, #ff7b00 50%, #8b4500 100%); border-radius: 0 40% 40% 0 / 0 30% 30% 0; transform-origin: left; animation: cf-curtain 3s ease-in-out infinite alternate; box-shadow: 10px 0 30px #ff7b00; }
.scn-item-curtains-flames .curtain-right { position:absolute; top:18%; right:10%; width:30%; height:65%; background: linear-gradient(180deg, #ff4500 0%, #ff7b00 50%, #8b4500 100%); border-radius: 40% 0 0 40% / 30% 0 0 30%; transform-origin: right; animation: cf-curtain 3s ease-in-out infinite alternate-reverse; box-shadow: -10px 0 30px #ff7b00; }
.scn-item-curtains-flames .flame-spread { position:absolute; top:22%; left:20%; width:60%; height:50%; background: radial-gradient(ellipse 60% 70% at 50% 60%, #ffcc00 0%, #ff7b00 40%, #cc3300 70%, transparent 100%); filter: blur(6px); animation: cf-flame 2s ease-in-out infinite; }
.scn-item-curtains-flames .bed-frame { position:absolute; bottom:10%; left:25%; width:50%; height:25%; background: linear-gradient(180deg, #4a3728 0%, #2d1f14 100%); border-radius: 8px 8px 4px 4px; box-shadow: 0 8px 20px rgba(0,0,0,.6); }
.scn-item-curtains-flames .smoke-plume { position:absolute; top:5%; left:40%; width:20%; height:20%; background: radial-gradient(ellipse 50% 60% at 50% 100%, rgba(160,140,120,.5) 0%, transparent 100%); filter: blur(15px); animation: cf-smoke 10s ease-in-out infinite; }
.scn-item-curtains-flames .ember-a { position:absolute; top:30%; left:35%; width:4px; height:4px; background: #ffcc00; border-radius:50%; box-shadow: 0 0 8px #ff7b00; animation: cf-ember 2s ease-in-out infinite; }
.scn-item-curtains-flames .ember-b { position:absolute; top:28%; left:60%; width:3px; height:3px; background: #ffa500; border-radius:50%; box-shadow: 0 0 6px #ff7b00; animation: cf-ember 2.5s ease-in-out infinite 0.5s; }
@keyframes cf-curtain { 0% { transform: scaleX(1) } 50% { transform: scaleX(0.95) } 100% { transform: scaleX(1.05) } }
@keyframes cf-flame { 0% { opacity:.8; transform: scaleY(1) } 50% { opacity:1; transform: scaleY(1.15) } 100% { opacity:.7; transform: scaleY(0.95) } }
@keyframes cf-smoke { 0% { transform: translateY(0) scale(1); opacity:.4 } 50% { transform: translateY(-20px) scale(1.2); opacity:.2 } 100% { transform: translateY(0) scale(1); opacity:.4 } }
@keyframes cf-ember { 0% { transform: translateY(0) scale(1); opacity:1 } 50% { transform: translateY(-15px) scale(0.6); opacity:.5 } 100% { transform: translateY(0) scale(1); opacity:1 } }

/* Scene 3: aftermath-despair */
.scn-aftermath-despair {
  background: linear-gradient(180deg, #0f1419 0%, #1a202c 40%, #2d3748 100%), radial-gradient(ellipse at 50% 30%, #2d3748 0%, transparent 70%);
}
.scn-aftermath-despair .room-dim { position:absolute; inset:0; background: linear-gradient(180deg, #1a202c 0%, #0f1419 100%); box-shadow: inset 0 0 60px rgba(0,0,0,.8); }
.scn-aftermath-despair .floor-board { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #3a2a1a 0%, #1a100a 100%); border-radius: 4px 4px 0 0; box-shadow: inset 0 4px 10px rgba(0,0,0,.5); }
.scn-aftermath-despair .table-oak { position:absolute; bottom:30%; left:35%; width:30%; height:12%; background: linear-gradient(180deg, #5a3a2a 0%, #2d1f14 100%); border-radius: 4px; box-shadow: 0 6px 12px rgba(0,0,0,.6); }
.scn-aftermath-despair .candle-glow { position:absolute; bottom:42%; left:48%; width:6px; height:14px; background: linear-gradient(180deg, #ffd700 0%, #ff8c00 100%); border-radius: 3px 3px 2px 2px; box-shadow: 0 0 24px 6px #ff8c00, 0 0 48px 12px rgba(255,140,0,.4); animation: ad-candle 2s ease-in-out infinite; }
.scn-aftermath-despair .figure-slump { position:absolute; bottom:28%; left:40%; width:24px; height:36px; background: radial-gradient(ellipse 50% 60% at 50% 30%, #2d3748 0%, #0f1419 100%); border-radius: 50% 50% 40% 40% / 60% 50% 40% 40%; transform: rotate(10deg); transform-origin: bottom; animation: ad-figure 5s ease-in-out infinite; }
.scn-aftermath-despair .chair-tilt { position:absolute; bottom:22%; left:55%; width:20px; height:30px; background: linear-gradient(180deg, #4a3728 0%, #2d1f14 100%); border-radius: 4px 4px 10px 10px; transform: rotate(-15deg); transform-origin: bottom; animation: ad-chair 7s ease-in-out infinite; }
.scn-aftermath-despair .shadow-sway { position:absolute; bottom:35%; left:35%; width:30%; height:15%; background: radial-gradient(ellipse 50% 50% at 50% 50%, rgba(0,0,0,.5) 0%, transparent 100%); filter: blur(8px); animation: ad-shadow 4s ease-in-out infinite; }
.scn-aftermath-despair .dust-mote { position:absolute; top:20%; left:30%; width:3px; height:3px; background: rgba(200,200,200,.3); border-radius:50%; filter: blur(1px); animation: ad-dust 8s linear infinite; }
@keyframes ad-candle { 0% { box-shadow: 0 0 20px 4px #ff8c00, 0 0 40px 8px rgba(255,140,0,.3) } 50% { box-shadow: 0 0 30px 8px #ffa500, 0 0 60px 15px rgba(255,165,0,.5) } 100% { box-shadow: 0 0 20px 4px #ff8c00, 0 0 40px 8px rgba(255,140,0,.3) } }
@keyframes ad-figure { 0%,100% { transform: rotate(10deg) } 50% { transform: rotate(12deg) } }
@keyframes ad-chair { 0%,100% { transform: rotate(-15deg) } 50% { transform: rotate(-18deg) } }
@keyframes ad-shadow { 0% { opacity:.4 } 50% { opacity:.7 } 100% { opacity:.4 } }
@keyframes ad-dust { 0% { transform: translateY(0) translateX(0); opacity:0 } 20% { opacity:1 } 80% { opacity:1 } 100% { transform: translateY(-30px) translateX(10px); opacity:0 } }

/* Scene 4: wall-ruins */
.scn-wall-ruins {
  background: linear-gradient(180deg, #4a5568 0%, #718096 30%, #a0aec0 60%, #cbd5e0 100%), radial-gradient(ellipse at 50% 100%, #4a5568 0%, transparent 70%);
}
.scn-wall-ruins .sky-overcast { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #a0aec0 0%, #cbd5e0 100%); animation: wr-sky 15s ease-in-out infinite alternate; }
.scn-wall-ruins .rubble-pile { position:absolute; bottom:0; left:0; right:0; height:60%; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 20% 40% 0 0 / 30% 50% 0 0; box-shadow: inset 0 8px 20px rgba(0,0,0,.5); }
.scn-wall-ruins .wall-standing { position:absolute; bottom:20%; left:30%; width:40%; height:65%; background: linear-gradient(180deg, #718096 0%, #4a5568 100%); border-radius: 4px 40px 0 0 / 4px 80% 0 0; box-shadow: 8px 0 20px rgba(0,0,0,.4), inset -4px 0 12px rgba(0,0,0,.2); animation: wr-wall 6s ease-in-out infinite; }
.scn-wall-ruins .plaster-patch { position:absolute; bottom:35%; left:35%; width:20%; height:25%; background: linear-gradient(180deg, #e2e8f0 0%, #cbd5e0 100%); border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,.2); transform: skewX(-5deg); }
.scn-wall-ruins .bed-head { position:absolute; bottom:18%; left:36%; width:8%; height:16%; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 4px 4px 0 0; transform: rotate(-5deg); box-shadow: 0 2px 6px rgba(0,0,0,.5); animation: wr-head 8s ease-in-out infinite; }
.scn-wall-ruins .weed-tuft { position:absolute; bottom:55%; left:45%; width:12px; height:18px; background: radial-gradient(ellipse 50% 80% at 50% 100%, #6b8e23 0%, #4a6a1a 100%); border-radius: 50%; filter: blur(2px); animation: wr-weed 4s ease-in-out infinite; }
.scn-wall-ruins .cloud-drift-a { position:absolute; top:8%; left:10%; width:80px; height:20px; background: linear-gradient(180deg, rgba(255,255,255,.5) 0%, rgba(255,255,255,.1) 100%); border-radius:50%; filter: blur(8px); animation: wr-drift-a 40s linear infinite; }
.scn-wall-ruins .cloud-drift-b { position:absolute; top:15%; right:20%; width:60px; height:15px; background: linear-gradient(180deg, rgba(255,255,255,.4) 0%, rgba(255,255,255,.05) 100%); border-radius:50%; filter: blur(6px); animation: wr-drift-b 50s linear infinite reverse; }
@keyframes wr-sky { 0% { opacity:.7 } 50% { opacity:1 } 100% { opacity:.8 } }
@keyframes wr-wall { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-3px) } }
@keyframes wr-head { 0%,100% { transform: rotate(-5deg) } 50% { transform: rotate(-7deg) } }
@keyframes wr-weed { 0% { transform: rotate(0) scaleY(1) } 50% { transform: rotate(5deg) scaleY(1.1) } 100% { transform: rotate(0) scaleY(1) } }
@keyframes wr-drift-a { 0% { transform: translateX(-30px) } 100% { transform: translateX(120vw) } }
@keyframes wr-drift-b { 0% { transform: translateX(0) } 100% { transform: translateX(-100vw) } }

.scn-growing-dislike {
  background: linear-gradient(180deg, #2a2a2a 0%, #1a1a1a 50%), radial-gradient(ellipse at 50% 100%, #3a3a3a 0%, transparent 60%);
}
.scn-growing-dislike .gd-wall {
  position: absolute; inset: 0 0 30% 0; background: linear-gradient(180deg, #2a2a2a, #1a1a1a); animation: gd-wall 6s ease-in-out infinite alternate;
}
.scn-growing-dislike .gd-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%; background: linear-gradient(0deg, #1a1a1a, #2a2a2a);
}
.scn-growing-dislike .gd-chair {
  position: absolute; bottom: 25%; left: 50%; width: 70px; height: 50px; transform: translateX(-50%); background: linear-gradient(180deg, #4a3a2a, #3a2a1a); border-radius: 6px 6px 2px 2px; box-shadow: 0 4px 8px rgba(0,0,0,0.5);
}
.scn-growing-dislike .gd-figure {
  position: absolute; bottom: 28%; left: 50%; width: 24px; height: 40px; transform: translateX(-50%); background: linear-gradient(180deg, #1a1a1a, #0a0a0a); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: gd-figure 4s ease-in-out infinite;
}
.scn-growing-dislike .gd-cat {
  position: absolute; bottom: 25%; left: 45%; width: 20px; height: 12px; background: linear-gradient(135deg, #222, #111); border-radius: 40% 50% 30% 30% / 50% 60% 40% 40%; transform-origin: bottom center; animation: gd-cat 5s ease-in-out infinite;
}
.scn-growing-dislike .gd-shadow {
  position: absolute; bottom: 22%; left: 42%; width: 30px; height: 8px; background: rgba(0,0,0,0.3); border-radius: 50%; filter: blur(4px); animation: gd-shadow 5s ease-in-out infinite alternate;
}
@keyframes gd-wall { 0% { opacity: 0.9; filter: brightness(1); } 50% { opacity: 1; filter: brightness(1.05); } 100% { opacity: 0.85; filter: brightness(0.95); } }
@keyframes gd-figure { 0% { transform: translateX(-50%) rotate(0deg); } 25% { transform: translateX(-50%) rotate(2deg); } 50% { transform: translateX(-50%) rotate(-1deg); } 75% { transform: translateX(-50%) rotate(3deg); } 100% { transform: translateX(-50%) rotate(0deg); } }
@keyframes gd-cat { 0% { transform: translateX(0) translateY(0); } 33% { transform: translateX(2px) translateY(-1px); } 66% { transform: translateX(-1px) translateY(2px); } 100% { transform: translateX(0) translateY(0); } }
@keyframes gd-shadow { 0% { transform: scaleX(1); opacity: 0.3; } 50% { transform: scaleX(1.1); opacity: 0.5; } 100% { transform: scaleX(0.9); opacity: 0.2; } }

.scn-cats-eye-wife {
  background: linear-gradient(135deg, #1a1a3e 0%, #2c2244 50%, #4a3a6e 100%), radial-gradient(ellipse at 20% 40%, #4a3a6e 0%, transparent 70%);
}
.scn-cats-eye-wife .cew-window-frame {
  position: absolute; inset: 10% 20% 30% 60%; border: 4px solid #3a2a2a; background: transparent; border-radius: 8px; box-shadow: inset 0 0 20px rgba(0,0,0,0.6);
}
.scn-cats-eye-wife .cew-window-glow {
  position: absolute; inset: 12% 22% 32% 62%; background: radial-gradient(ellipse, #fffaee 0%, #e0d0b0 60%, transparent 100%); animation: cew-glow 8s ease-in-out infinite alternate;
}
.scn-cats-eye-wife .cew-light-beam {
  position: absolute; top: 15%; left: 25%; width: 30%; height: 70%; background: linear-gradient(135deg, rgba(255,250,238,0.3) 0%, transparent 100%); transform: skewX(-10deg); filter: blur(8px); animation: cew-beam 5s ease-in-out infinite alternate;
}
.scn-cats-eye-wife .cew-cat-silhouette {
  position: absolute; bottom: 30%; left: 50%; width: 30px; height: 20px; transform: translateX(-50%); background: #111; border-radius: 40% 50% 20% 30% / 50% 60% 30% 40%; box-shadow: 0 0 0 2px #222; animation: cew-cat 4s ease-in-out infinite;
}
.scn-cats-eye-wife .cew-narrator-shadow {
  position: absolute; bottom: 18%; left: 40%; width: 40px; height: 60px; background: rgba(0,0,0,0.5); border-radius: 40% 30% 30% 30% / 60% 50% 50% 50%; filter: blur(6px); animation: cew-shadow 7s ease-in-out infinite alternate;
}
.scn-cats-eye-wife .cew-curtain {
  position: absolute; top: 0; left: 20%; width: 8px; height: 100%; background: linear-gradient(180deg, #2a1a1a, #1a0a0a); border-radius: 0 4px 4px 0; animation: cew-curtain 10s ease-in-out infinite alternate;
}
@keyframes cew-glow { 0% { opacity: 0.7; filter: brightness(0.9); } 50% { opacity: 1; filter: brightness(1.1); } 100% { opacity: 0.8; filter: brightness(0.95); } }
@keyframes cew-beam { 0% { transform: skewX(-10deg) scaleX(0.9); opacity: 0.4; } 50% { transform: skewX(-8deg) scaleX(1.1); opacity: 0.7; } 100% { transform: skewX(-12deg) scaleX(0.95); opacity: 0.3; } }
@keyframes cew-cat { 0% { transform: translateX(-50%) rotate(-2deg); } 30% { transform: translateX(-48%) rotate(3deg); } 60% { transform: translateX(-52%) rotate(-1deg); } 100% { transform: translateX(-50%) rotate(0deg); } }
@keyframes cew-shadow { 0% { transform: scaleY(1) translateY(0); opacity: 0.4; } 50% { transform: scaleY(1.05) translateY(-3px); opacity: 0.6; } 100% { transform: scaleY(0.95) translateY(2px); opacity: 0.3; } }
@keyframes cew-curtain { 0% { transform: translateX(0); } 50% { transform: translateX(2px); } 100% { transform: translateX(0); } }

.scn-cats-partiality {
  background: linear-gradient(180deg, #2a2a30 0%, #1a1a20 50%, #2e2e35 100%), radial-gradient(ellipse at 50% 100%, #2a2a30 0%, transparent 60%);
}
.scn-cats-partiality .cp-wall {
  position: absolute; inset: 0 0 30% 0; background: linear-gradient(180deg, #2a2a30, #1a1a20); animation: cp-wall 12s ease-in-out infinite alternate;
}
.scn-cats-partiality .cp-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%; background: linear-gradient(0deg, #1a1a20, #2a2a30);
}
.scn-cats-partiality .cp-wife {
  position: absolute; bottom: 28%; left: 45%; width: 20px; height: 38px; background: linear-gradient(180deg, #3a3a40, #2a2a30); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: cp-wife 6s ease-in-out infinite;
}
.scn-cats-partiality .cp-cat {
  position: absolute; bottom: 26%; left: 48%; width: 18px; height: 10px; background: linear-gradient(135deg, #1a1a1a, #0a0a0a); border-radius: 40% 50% 30% 30% / 50% 60% 40% 40%; transform-origin: center; animation: cp-cat 4s ease-in-out infinite;
}
.scn-cats-partiality .cp-table {
  position: absolute; bottom: 22%; left: 38%; width: 60px; height: 20px; background: linear-gradient(180deg, #4a3a2a, #3a2a1a); border-radius: 4px; box-shadow: 0 4px 6px rgba(0,0,0,0.3);
}
.scn-cats-partiality .cp-aura {
  position: absolute; bottom: 30%; left: 50%; width: 40px; height: 40px; transform: translateX(-50%); background: radial-gradient(circle, rgba(100,90,80,0.2) 0%, transparent 70%); animation: cp-aura 5s ease-in-out infinite alternate;
}
@keyframes cp-wall { 0% { opacity: 0.9; } 50% { opacity: 1; } 100% { opacity: 0.8; } }
@keyframes cp-wife { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(1px) rotate(2deg); } 50% { transform: translateX(-1px) rotate(-1deg); } 75% { transform: translateX(2px) rotate(3deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes cp-cat { 0% { transform: scale(1) rotate(0deg); } 50% { transform: scale(1.02) rotate(2deg); } 100% { transform: scale(0.98) rotate(-1deg); } }
@keyframes cp-aura { 0% { opacity: 0.2; transform: translateX(-50%) scale(0.9); } 50% { opacity: 0.4; transform: translateX(-50%) scale(1.1); } 100% { opacity: 0.1; transform: translateX(-50%) scale(0.95); } }

.scn-dread-of-beast {
  background: linear-gradient(180deg, #1a1a1a 0%, #2a2a2a 50%, #1a1a1a 100%), radial-gradient(ellipse at 50% 0%, #3a3a3a 0%, transparent 70%);
}
.scn-dread-of-beast .dob-wall {
  position: absolute; inset: 0 0 20% 0; background: linear-gradient(180deg, #1a1a1a, #2a2a2a); animation: dob-wall 8s ease-in-out infinite alternate;
}
.scn-dread-of-beast .dob-floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 20%; background: linear-gradient(0deg, #111, #2a2a2a);
}
.scn-dread-of-beast .dob-leg-left {
  position: absolute; bottom: 15%; left: 30%; width: 12px; height: 45px; background: linear-gradient(180deg, #3a3a3a, #1a1a1a); border-radius: 30% 30% 10% 10% / 40% 40% 20% 20%; animation: dob-leg 3s ease-in-out infinite;
}
.scn-dread-of-beast .dob-leg-right {
  position: absolute; bottom: 15%; left: 50%; width: 12px; height: 45px; background: linear-gradient(180deg, #3a3a3a, #1a1a1a); border-radius: 30% 30% 10% 10% / 40% 40% 20% 20%; animation: dob-leg 3s ease-in-out 1.5s infinite;
}
.scn-dread-of-beast .dob-cat {
  position: absolute; bottom: 16%; left: 40%; width: 25px; height: 14px; background: linear-gradient(135deg, #222, #111); border-radius: 40% 50% 20% 30% / 50% 60% 30% 40%; transform-origin: bottom center; animation: dob-cat 4s ease-in-out infinite;
}
.scn-dread-of-beast .dob-shadow {
  position: absolute; bottom: 12%; left: 38%; width: 30px; height: 6px; background: rgba(0,0,0,0.4); border-radius: 50%; filter: blur(3px); animation: dob-shadow 4s ease-in-out infinite alternate;
}
.scn-dread-of-beast .dob-foot {
  position: absolute; bottom: 12%; left: 48%; width: 14px; height: 8px; background: linear-gradient(180deg, #2a2a2a, #1a1a1a); border-radius: 40% 40% 20% 20% / 50% 50% 30% 30%; animation: dob-foot 3s ease-in-out infinite;
}
@keyframes dob-wall { 0% { opacity: 0.85; } 50% { opacity: 1; } 100% { opacity: 0.9; } }
@keyframes dob-leg { 0% { transform: translateY(0) rotate(0deg); } 25% { transform: translateY(-2px) rotate(2deg); } 50% { transform: translateY(0) rotate(-1deg); } 75% { transform: translateY(-1px) rotate(3deg); } 100% { transform: translateY(0) rotate(0deg); } }
@keyframes dob-cat { 0% { transform: translateX(0) rotate(0deg); } 30% { transform: translateX(3px) rotate(3deg); } 60% { transform: translateX(-2px) rotate(-2deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes dob-shadow { 0% { transform: scaleX(1); opacity: 0.3; } 50% { transform: scaleX(1.2); opacity: 0.5; } 100% { transform: scaleX(0.9); opacity: 0.2; } }
@keyframes dob-foot { 0% { transform: translateY(0) scale(1); } 50% { transform: translateY(-1px) scale(0.95); } 100% { transform: translateY(0) scale(1); } }

/* scene: seeking-replacement (calm, dim-interior) */
.scn-seeking-replacement { background: linear-gradient(180deg, #1a1a2e 0%, #2a1a12 50%, #1a0e0a 100%), radial-gradient(ellipse at 50% 80%, #3a2510 0%, transparent 60%); }
.scn-seeking-replacement .bg { position:absolute; inset:0; background: linear-gradient(135deg, #2a1a12 0%, #1a0e0a 100%); animation: sr-bg-pulse 20s ease-in-out infinite alternate; }
.scn-seeking-replacement .wall { position:absolute; bottom:35%; left:5%; right:5%; height:65%; background: linear-gradient(180deg, #3a2a1a 0%, #2a1a0e 100%); border-radius: 8% 8% 0 0; box-shadow: inset 0 0 20px rgba(0,0,0,.6); }
.scn-seeking-replacement .floor { position:absolute; bottom:0; left:0; right:0; height:35%; background: linear-gradient(180deg, #2a1a0e 0%, #1a0e0a 100%); border-radius: 4% 4% 0 0; }
.scn-seeking-replacement .fireplace { position:absolute; bottom:30%; left:30%; width:40%; height:40%; background: linear-gradient(135deg, #4a2a14 0%, #2a1408 100%); border-radius: 20% 20% 10% 10%; box-shadow: 0 0 30px 10px rgba(200,100,50,.3); animation: sr-fire-glow 3s ease-in-out infinite alternate; }
.scn-seeking-replacement .figure { position:absolute; bottom:20%; left:50%; width:20px; height:40px; transform:translateX(-50%); background: linear-gradient(180deg, #1a0e0a 0%, #0e0604 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: sr-figure-sway 5s ease-in-out infinite; }
.scn-seeking-replacement .chair { position:absolute; bottom:18%; left:60%; width:30px; height:35px; background: linear-gradient(180deg, #2a1a0e 0%, #1a0e0a 100%); border-radius: 8% 8% 4% 4%; transform:rotate(2deg); animation: sr-chair-shift 8s ease-in-out infinite alternate; }
.scn-seeking-replacement .cat-shadow { position:absolute; bottom:15%; left:42%; width:24px; height:16px; background: radial-gradient(ellipse, rgba(0,0,0,.7) 0%, transparent 70%); border-radius: 50%; animation: sr-cat-shadow 6s ease-in-out infinite; }
@keyframes sr-bg-pulse { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.85 } }
@keyframes sr-fire-glow { 0% { box-shadow: 0 0 20px 5px rgba(200,100,50,.2); opacity:.8 } 50% { box-shadow: 0 0 50px 15px rgba(200,100,50,.5); opacity:1 } 100% { box-shadow: 0 0 25px 8px rgba(200,100,50,.3); opacity:.9 } }
@keyframes sr-figure-sway { 0% { transform: translateX(-50%) rotate(-1deg) } 50% { transform: translateX(-48%) rotate(1deg) } 100% { transform: translateX(-50%) rotate(0) } }
@keyframes sr-chair-shift { 0% { transform: rotate(1deg) } 50% { transform: rotate(3deg) } 100% { transform: rotate(0) } }
@keyframes sr-cat-shadow { 0%,100% { opacity:.3; transform: scale(1) } 50% { opacity:.1; transform: scale(.95) } }

/* scene: noticing-black-object (dark, dim-interior) */
.scn-noticing-black-object { background: linear-gradient(180deg, #0a0a14 0%, #120e0e 30%, #1a1410 70%, #0e0a08 100%), radial-gradient(ellipse at 50% 60%, #1a1410 0%, transparent 80%); }
.scn-noticing-black-object .bg { position:absolute; inset:0; background: linear-gradient(135deg, #0a0a14 0%, #0e0806 100%); animation: nbo-bg-pulse 25s ease-in-out infinite alternate; }
.scn-noticing-black-object .barrel { position:absolute; bottom:10%; left:25%; width:50%; height:50%; background: linear-gradient(180deg, #3a281e 0%, #1e140e 100%); border-radius: 0 0 30% 30% / 0 0 40% 40%; box-shadow: 0 8px 16px rgba(0,0,0,.8); }
.scn-noticing-black-object .top { position:absolute; bottom:55%; left:27%; width:46%; height:8%; background: linear-gradient(180deg, #4a382a 0%, #2a1e14 100%); border-radius: 50%; box-shadow: 0 -2px 8px rgba(0,0,0,.5); }
.scn-noticing-black-object .object { position:absolute; bottom:62%; left:38%; width:24%; height:10%; background: #0e0806; border-radius: 50% 50% 40% 40%; animation: nbo-object 4s ease-in-out infinite alternate; }
.scn-noticing-black-object .hand { position:absolute; bottom:55%; left:20%; width:8%; height:18%; background: linear-gradient(180deg, #1a1410 0%, #0e0a08 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: nbo-hand-reach 6s ease-in-out infinite; }
.scn-noticing-black-object .shadow { position:absolute; bottom:0; left:10%; right:10%; height:15%; background: radial-gradient(ellipse, rgba(0,0,0,.6) 0%, transparent 70%); animation: nbo-shadow 8s ease-in-out infinite alternate; }
@keyframes nbo-bg-pulse { 0% { opacity:.9 } 50% { opacity:1 } 100% { opacity:.95 } }
@keyframes nbo-object { 0% { transform: translateY(0) rotate(0) } 50% { transform: translateY(-2px) rotate(3deg) } 100% { transform: translateY(0) rotate(-2deg) } }
@keyframes nbo-hand-reach { 0% { transform: translateY(0) scale(1) } 40% { transform: translateY(-4px) scale(1.05) } 60% { transform: translateY(-2px) scale(1.02) } 100% { transform: translateY(0) scale(1) } }
@keyframes nbo-shadow { 0%,100% { opacity:.4 } 50% { opacity:.8 } }

/* scene: item-black-cat (calm, dim-interior) */
.scn-item-black-cat { background: linear-gradient(180deg, #1a1a2e 0%, #2a1a12 50%, #1a0e0a 100%), radial-gradient(ellipse at 50% 40%, #3a2510 0%, transparent 70%); }
.scn-item-black-cat .bg { position:absolute; inset:0; background: linear-gradient(135deg, #2a1a12 0%, #1a0e0a 100%); }
.scn-item-black-cat .cat-body { position:absolute; bottom:20%; left:30%; width:40%; height:45%; background: radial-gradient(ellipse at 50% 60%, #0e0806 0%, #060402 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: ibc-breathe 4s ease-in-out infinite; }
.scn-item-black-cat .cat-head { position:absolute; bottom:60%; left:35%; width:30%; height:25%; background: radial-gradient(circle, #0e0806 0%, #060402 100%); border-radius: 50%; }
.scn-item-black-cat .ear-l { position:absolute; bottom:75%; left:37%; width:8%; height:12%; background: linear-gradient(135deg, #0e0806 0%, #060402 100%); border-radius: 50% 50% 0 0; transform: rotate(-10deg); animation: ibc-ears 5s ease-in-out infinite alternate; }
.scn-item-black-cat .ear-r { position:absolute; bottom:75%; right:37%; width:8%; height:12%; background: linear-gradient(225deg, #0e0806 0%, #060402 100%); border-radius: 50% 50% 0 0; transform: rotate(10deg); animation: ibc-ears 5s ease-in-out infinite alternate-reverse; }
.scn-item-black-cat .eye-l { position:absolute; bottom:67%; left:42%; width:5%; height:5%; background: radial-gradient(circle, #c8b060 0%, #806020 100%); border-radius: 50%; box-shadow: 0 0 8px 2px rgba(200,176,96,.6); animation: ibc-eyes 3s ease-in-out infinite alternate; }
.scn-item-black-cat .eye-r { position:absolute; bottom:67%; right:42%; width:5%; height:5%; background: radial-gradient(circle, #c8b060 0%, #806020 100%); border-radius: 50%; box-shadow: 0 0 8px 2px rgba(200,176,96,.6); animation: ibc-eyes 3s ease-in-out infinite alternate-reverse; }
.scn-item-black-cat .white-splotch { position:absolute; bottom:28%; left:37%; width:26%; height:20%; background: radial-gradient(ellipse, rgba(240,235,220,.8) 0%, transparent 70%); border-radius: 50% 60% 40% 50%; animation: ibc-splotch 6s ease-in-out infinite alternate; }
@keyframes ibc-breathe { 0%,100% { transform: scaleY(1) } 50% { transform: scaleY(1.02) } }
@keyframes ibc-ears { 0% { transform: rotate(-8deg) } 50% { transform: rotate(-12deg) } 100% { transform: rotate(-6deg) } }
@keyframes ibc-eyes { 0% { box-shadow: 0 0 6px 2px rgba(200,176,96,.4); opacity:.9 } 50% { box-shadow: 0 0 14px 4px rgba(200,176,96,.8); opacity:1 } 100% { box-shadow: 0 0 8px 2px rgba(200,176,96,.5); opacity:.95 } }
@keyframes ibc-splotch { 0% { opacity:.6; transform: scale(1) } 50% { opacity:1; transform: scale(1.05) } 100% { opacity:.7; transform: scale(.98) } }

/* scene: cat-behavior-purchase (warm, dim-interior) */
.scn-cat-behavior-purchase { background: linear-gradient(180deg, #2a1a0e 0%, #3a2010 30%, #2a1408 70%, #1a0e04 100%), radial-gradient(ellipse at 50% 80%, #4a2a14 0%, transparent 60%); }
.scn-cat-behavior-purchase .bg { position:absolute; inset:0; background: linear-gradient(135deg, #3a2010 0%, #1a0e04 100%); animation: cbp-bg-pulse 18s ease-in-out infinite alternate; }
.scn-cat-behavior-purchase .doorway { position:absolute; bottom:0; left:10%; width:80%; height:90%; background: linear-gradient(180deg, #2a1a0e 0%, #1a0e04 100%); border-radius: 40% 40% 0 0; box-shadow: inset 0 0 40px rgba(0,0,0,.7); }
.scn-cat-behavior-purchase .floor { position:absolute; bottom:0; left:0; right:0; height:20%; background: linear-gradient(180deg, #2a1a0e 0%, #1a0e04 100%); }
.scn-cat-behavior-purchase .landlord { position:absolute; bottom:40%; left:15%; width:12%; height:30%; background: linear-gradient(180deg, #1a140e 0%, #0e0a06 100%); border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%; animation: cbp-landlord 10s ease-in-out infinite alternate; }
.scn-cat-behavior-purchase .narrator { position:absolute; bottom:20%; left:50%; width:14%; height:35%; background: linear-gradient(180deg, #1a140e 0%, #0e0a06 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: cbp-narrator-walk 8s ease-in-out infinite; }
.scn-cat-behavior-purchase .cat { position:absolute; bottom:15%; right:25%; width:30px; height:20px; background: #0e0806; border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; animation: cbp-cat-walk 6s ease-in-out infinite; }
.scn-cat-behavior-purchase .lamp { position:absolute; bottom:55%; left:70%; width:10px; height:14px; background: radial-gradient(circle, #c08040 0%, #a06020 100%); border-radius: 30% 30% 10% 10%; box-shadow: 0 0 20px 8px rgba(192,128,64,.4); animation: cbp-lamp-glow 3s ease-in-out infinite alternate; }
@keyframes cbp-bg-pulse { 0% { opacity:.85 } 50% { opacity:1 } 100% { opacity:.9 } }
@keyframes cbp-landlord { 0% { transform: translateY(0) rotate(-1deg) } 50% { transform: translateY(-2px) rotate(1deg) } 100% { transform: translateY(0) rotate(0) } }
@keyframes cbp-narrator-walk { 0% { transform: translateX(0) rotate(0) } 25% { transform: translateX(8%) rotate(2deg) } 50% { transform: translateX(16%) rotate(-1deg) } 75% { transform: translateX(8%) rotate(1deg) } 100% { transform: translateX(0) rotate(0) } }
@keyframes cbp-cat-walk { 0% { transform: translateX(0) rotate(-3deg) } 25% { transform: translateX(-10%) rotate(2deg) } 50% { transform: translateX(-20%) rotate(-1deg) } 75% { transform: translateX(-10%) rotate(3deg) } 100% { transform: translateX(0) rotate(-2deg) } }
@keyframes cbp-lamp-glow { 0% { box-shadow: 0 0 15px 4px rgba(192,128,64,.3); opacity:.8 } 50% { box-shadow: 0 0 30px 12px rgba(192,128,64,.6); opacity:1 } 100% { box-shadow: 0 0 18px 6px rgba(192,128,64,.35); opacity:.9 } }
/* end per-scene blocks */

/* auto-stub: parent tag-classes flagged by CSS audit */
.dark { position: absolute; pointer-events: none; }
.scn { position: absolute; pointer-events: none; }

/* ============ tier A ============ */
/* per-scene blocks (EXP step_scenes) */
.scn-final-horror {
  background: linear-gradient(180deg, #1a1220 0%, #0c0810 40%, #10081a 100%), radial-gradient(ellipse at 30% 50%, #2a0a20 0%, transparent 70%);
}
.scn-final-horror .wall {
  position: absolute; left: 0; top: 0; width: 40%; height: 100%;
  background: linear-gradient(90deg, #2a2028 0%, #1a1218 60%, #0a0608 100%);
  border-right: 4px solid #3a2a30;
  box-shadow: 8px 0 20px rgba(0,0,0,0.7);
  animation: fh-wall-shake 6s ease-in-out infinite;
}
.scn-final-horror .hole {
  position: absolute; left: 30%; top: 25%; width: 22%; height: 60%;
  background: radial-gradient(ellipse at 50% 30%, #2a0a10 0%, #0a0204 80%);
  border: 2px solid #3a1a1a;
  box-shadow: inset 0 0 30px rgba(100,10,10,0.3), 0 0 40px rgba(80,5,5,0.2);
  animation: fh-hole-glow 8s ease-in-out infinite alternate;
}
.scn-final-horror .corpse {
  position: absolute; left: 37%; top: 30%; width: 8%; height: 50%;
  background: linear-gradient(180deg, #3a3038 0%, #1a1218 60%, #080408 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: fh-corpse-sway 7s ease-in-out infinite;
}
.scn-final-horror .beast {
  position: absolute; left: 38.5%; top: 26%; width: 6%; height: 8%;
  background: linear-gradient(180deg, #2a1a22 0%, #120a10 100%);
  border-radius: 50% 50% 60% 60% / 40% 40% 60% 60%;
  transform-origin: center;
  animation: fh-beast-rock 4s ease-in-out infinite;
}
.scn-final-horror .eye {
  position: absolute; left: 40%; top: 27%; width: 2%; height: 3%;
  background: radial-gradient(circle, #d84a2a 0%, #8a1a0a 70%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 20px 6px rgba(200,50,20,0.6), 0 0 40px 12px rgba(200,50,20,0.3);
  animation: fh-eye-pulse 3s ease-in-out infinite;
}
.scn-final-horror .stair {
  position: absolute; right: 5%; bottom: 0; width: 30%; height: 70%;
  background: linear-gradient(135deg, #1a1820 0%, #0a0810 100%);
  clip-path: polygon(0 100%, 100% 100%, 100% 0, 85% 10%, 70% 0, 55% 10%, 40% 0, 25% 10%, 10% 0, 0 10%);
  opacity: 0.6;
  animation: fh-stair-flicker 10s ease-in-out infinite alternate;
}
.scn-final-horror .fig1 {
  position: absolute; right: 20%; bottom: 40%; width: 3%; height: 14%;
  background: linear-gradient(180deg, #2a2228 0%, #100a10 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom;
  animation: fh-fig-tremble 5s ease-in-out infinite;
}
.scn-final-horror .fig2 {
  position: absolute; right: 12%; bottom: 55%; width: 3%; height: 12%;
  background: linear-gradient(180deg, #2a2228 0%, #100a10 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom;
  animation: fh-fig-tremble 5s ease-in-out infinite;
  animation-delay: -2.5s;
}

@keyframes fh-wall-shake {
  0% { transform: translateX(0); }
  25% { transform: translateX(-1px); }
  50% { transform: translateX(0.5px); }
  75% { transform: translateX(-0.5px); }
  100% { transform: translateX(0); }
}
@keyframes fh-hole-glow {
  0% { box-shadow: inset 0 0 30px rgba(100,10,10,0.3), 0 0 40px rgba(80,5,5,0.2); opacity: 0.8; }
  50% { box-shadow: inset 0 0 50px rgba(120,15,15,0.5), 0 0 60px rgba(100,10,10,0.4); opacity: 1; }
  100% { box-shadow: inset 0 0 25px rgba(80,8,8,0.2), 0 0 35px rgba(60,5,5,0.15); opacity: 0.7; }
}
@keyframes fh-corpse-sway {
  0% { transform: rotateZ(0deg); }
  30% { transform: rotateZ(1deg); }
  60% { transform: rotateZ(-0.5deg); }
  100% { transform: rotateZ(0deg); }
}
@keyframes fh-beast-rock {
  0% { transform: rotateZ(0) scale(1); }
  25% { transform: rotateZ(3deg) scale(1.02); }
  50% { transform: rotateZ(-2deg) scale(0.98); }
  75% { transform: rotateZ(1deg) scale(1.01); }
  100% { transform: rotateZ(0) scale(1); }
}
@keyframes fh-eye-pulse {
  0% { box-shadow: 0 0 20px 6px rgba(200,50,20,0.6), 0 0 40px 12px rgba(200,50,20,0.3); opacity: 0.9; }
  50% { box-shadow: 0 0 30px 10px rgba(220,60,30,0.8), 0 0 60px 18px rgba(220,60,30,0.5); opacity: 1; }
  100% { box-shadow: 0 0 15px 4px rgba(180,40,15,0.4), 0 0 30px 8px rgba(180,40,15,0.2); opacity: 0.8; }
}
@keyframes fh-stair-flicker {
  0% { opacity: 0.4; }
  50% { opacity: 0.7; }
  100% { opacity: 0.5; }
}
@keyframes fh-fig-tremble {
  0% { transform: translateX(0) rotateZ(0deg); }
  25% { transform: translateX(1px) rotateZ(1deg); }
  50% { transform: translateX(-0.5px) rotateZ(-0.5deg); }
  75% { transform: translateX(0.5px) rotateZ(1.5deg); }
  100% { transform: translateX(0) rotateZ(0deg); }
}

/* scene: item-gallows-mark */
.scn-item-gallows-mark {
  background: linear-gradient(180deg, #1a1a1a 0%, #2a2a2a 30%, #1c1c1c 70%, #0f0f0f 100%);
}
.scn-item-gallows-mark .wall {
  position: absolute; inset: 30% 10% 20% 10%;
  background: linear-gradient(180deg, #3a3a3a 0%, #2a2a2a 100%);
  border-radius: 2px;
  box-shadow: inset 0 0 20px rgba(0,0,0,.6);
  animation: ig-wall 12s ease-in-out infinite alternate;
}
.scn-item-gallows-mark .floor {
  position: absolute; bottom:0; left:0; right:0; height:20%;
  background: linear-gradient(0deg, #1e1e1e 0%, #2a2a2a 100%);
}
.scn-item-gallows-mark .shadow {
  position: absolute; bottom:20%; left:35%; width:40%; height:15%;
  background: radial-gradient(ellipse at 50% 0%, rgba(0,0,0,.7) 0%, transparent 100%);
  animation: ig-shadow 4s ease-in-out infinite alternate;
}
.scn-item-gallows-mark .cat {
  position: absolute; bottom:20%; left:45%; width:40px; height:30px;
  background: linear-gradient(135deg, #222 0%, #111 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: ig-cat 6s ease-in-out infinite;
}
.scn-item-gallows-mark .mark {
  position: absolute; bottom:28%; left:48%; width:10px; height:12px;
  background: radial-gradient(circle, #c0a0a0 0%, #8a6a6a 100%);
  border-radius: 50%;
  box-shadow: 0 0 8px 2px rgba(192,160,160,.4);
  animation: ig-mark 3s ease-in-out infinite alternate;
}
.scn-item-gallows-mark .lantern {
  position: absolute; bottom:35%; left:20%; width:8px; height:12px;
  background: radial-gradient(circle, #e0a050 0%, #a07030 100%);
  border-radius: 30%;
  box-shadow: 0 0 20px 6px rgba(200,120,60,.6), 0 0 40px 12px rgba(200,120,60,.3);
  animation: ig-lantern 4s ease-in-out infinite alternate;
}
.scn-item-gallows-mark .window {
  position: absolute; top:35%; right:15%; width:25px; height:35px;
  background: radial-gradient(circle, #2a2a4a 0%, #1a1a2a 100%);
  border: 2px solid #3a3a3a;
  border-radius: 2px;
  box-shadow: inset 0 0 10px rgba(0,0,0,.7);
  animation: ig-window 8s ease-in-out infinite alternate;
}
@keyframes ig-wall { 0% { opacity: .8 } 50% { opacity: 1 } 100% { opacity: .7 } }
@keyframes ig-shadow { 0% { transform: scaleY(1) } 50% { transform: scaleY(1.1) } 100% { transform: scaleY(1) } }
@keyframes ig-cat { 0% { transform: translateX(0) translateY(0) rotate(0deg) } 50% { transform: translateX(4px) translateY(-2px) rotate(2deg) } 100% { transform: translateX(0) translateY(0) rotate(0deg) } }
@keyframes ig-mark { 0% { opacity: .6; box-shadow: 0 0 8px 2px rgba(192,160,160,.4); } 50% { opacity: 1; box-shadow: 0 0 16px 4px rgba(192,160,160,.7); } 100% { opacity: .7; box-shadow: 0 0 10px 2px rgba(192,160,160,.5); } }
@keyframes ig-lantern { 0% { transform: translateY(0) rotate(-3deg); opacity: .7; } 50% { transform: translateY(-2px) rotate(3deg); opacity: 1; } 100% { transform: translateY(0) rotate(-3deg); opacity: .8; } }
@keyframes ig-window { 0% { background: #2a2a4a; } 50% { background: #1a1a2a; } 100% { background: #2a2a4a; } }

/* scene: item-axe */
.scn-item-axe {
  background: linear-gradient(180deg, #1e1e1e 0%, #141414 50%, #0a0a0a 100%);
}
.scn-item-axe .cellar-bg {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, #2a2a2a 0%, transparent 100%);
  animation: ia-cellar 20s ease-in-out infinite alternate;
}
.scn-item-axe .floor {
  position: absolute; bottom:0; left:0; right:0; height:15%;
  background: linear-gradient(0deg, #1a1a1a 0%, #2a2a2a 100%);
}
.scn-item-axe .man {
  position: absolute; bottom:15%; left:50%; width:24px; height:40px;
  background: linear-gradient(180deg, #2a2a2a 0%, #1a1a1a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: ia-man 5s ease-in-out infinite;
}
.scn-item-axe .cat {
  position: absolute; bottom:15%; left:35%; width:30px; height:20px;
  background: linear-gradient(135deg, #222 0%, #111 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: ia-cat 7s ease-in-out infinite;
}
.scn-item-axe .axe {
  position: absolute; bottom:30%; left:45%; width:20px; height:8px;
  background: linear-gradient(90deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 2px;
  transform: rotate(20deg);
  box-shadow: 0 2px 4px rgba(0,0,0,.5);
  animation: ia-axe 3s ease-in-out infinite alternate;
}
.scn-item-axe .lantern {
  position: absolute; bottom:45%; left:20%; width:10px; height:14px;
  background: radial-gradient(circle, #c08040 0%, #a06030 100%);
  border-radius: 30%;
  box-shadow: 0 0 20px 6px rgba(192,128,64,.6), 0 0 40px 12px rgba(192,128,64,.3);
  animation: ia-lantern 4s ease-in-out infinite alternate;
}
.scn-item-axe .chain {
  position: absolute; bottom:50%; left:25%; width:2px; height:30px;
  background: linear-gradient(180deg, #4a4a4a 0%, transparent 100%);
  animation: ia-chain 10s ease-in-out infinite;
}
@keyframes ia-cellar { 0% { opacity: .8 } 50% { opacity: 1 } 100% { opacity: .7 } }
@keyframes ia-man { 0% { transform: translateX(0) translateY(0) rotate(0deg); } 33% { transform: translateX(3px) translateY(-1px) rotate(2deg); } 66% { transform: translateX(-3px) translateY(0) rotate(-2deg); } 100% { transform: translateX(0) translateY(0) rotate(0deg); } }
@keyframes ia-cat { 0% { transform: translateX(0) translateY(0); } 50% { transform: translateX(5px) translateY(-2px); } 100% { transform: translateX(0) translateY(0); } }
@keyframes ia-axe { 0% { transform: rotate(20deg) translateY(0); } 50% { transform: rotate(25deg) translateY(-1px); } 100% { transform: rotate(20deg) translateY(0); } }
@keyframes ia-lantern { 0% { transform: translateY(0) rotate(-5deg); opacity: .7; } 50% { transform: translateY(-3px) rotate(5deg); opacity: 1; } 100% { transform: translateY(0) rotate(-5deg); opacity: .8; } }
@keyframes ia-chain { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(2px) rotate(2deg); } 100% { transform: translateY(0) rotate(0deg); } }

/* scene: concealing-body */
.scn-concealing-body {
  background: linear-gradient(180deg, #1c1c1c 0%, #121212 40%, #080808 100%);
}
.scn-concealing-body .wall {
  position: absolute; inset: 25% 10% 10% 10%;
  background: linear-gradient(135deg, #3a3a3a 0%, #2a2a2a 100%);
  border-radius: 4px;
  box-shadow: inset 0 0 30px rgba(0,0,0,.8);
  animation: cb-wall 15s ease-in-out infinite alternate;
}
.scn-concealing-body .floor {
  position: absolute; bottom:0; left:0; right:0; height:15%;
  background: linear-gradient(0deg, #1a1a1a 0%, #2a2a2a 100%);
}
.scn-concealing-body .body {
  position: absolute; bottom:15%; left:45%; width:30px; height:35px;
  background: linear-gradient(180deg, #2a2a2a 0%, #1a1a1a 100%);
  border-radius: 30% 30% 20% 20% / 40% 40% 30% 30%;
  transform: rotate(10deg);
  animation: cb-body 8s ease-in-out infinite;
}
.scn-concealing-body .trowel {
  position: absolute; bottom:18%; left:35%; width:14px; height:4px;
  background: #4a3a2a;
  border-radius: 2px;
  transform: rotate(-30deg);
  animation: cb-trowel 4s ease-in-out infinite alternate;
}
.scn-concealing-body .dust {
  position: absolute; bottom:12%; left:30%; width:40%; height:8%;
  background: radial-gradient(ellipse at 50% 50%, rgba(80,70,60,.3) 0%, transparent 100%);
  filter: blur(3px);
  animation: cb-dust 6s ease-in-out infinite alternate;
}
.scn-concealing-body .lantern {
  position: absolute; bottom:40%; left:20%; width:8px; height:12px;
  background: radial-gradient(circle, #d09050 0%, #a07030 100%);
  border-radius: 30%;
  box-shadow: 0 0 16px 4px rgba(200,120,60,.5), 0 0 32px 8px rgba(200,120,60,.25);
  animation: cb-lantern 4s ease-in-out infinite alternate;
}
.scn-concealing-body .bricks {
  position: absolute; bottom:20%; left:15%; width:40px; height:20px;
  background: repeating-linear-gradient(90deg, #4a3a2a 0px, #4a3a2a 10px, #3a2a1a 10px, #3a2a1a 12px);
  border-radius: 2px;
  animation: cb-bricks 10s ease-in-out infinite alternate;
}
@keyframes cb-wall { 0% { opacity: .8 } 50% { opacity: 1 } 100% { opacity: .7 } }
@keyframes cb-body { 0% { transform: translateY(0) rotate(10deg); } 50% { transform: translateY(-2px) rotate(12deg); } 100% { transform: translateY(0) rotate(10deg); } }
@keyframes cb-trowel { 0% { transform: rotate(-30deg) translateY(0); } 50% { transform: rotate(-25deg) translateY(-1px); } 100% { transform: rotate(-30deg) translateY(0); } }
@keyframes cb-dust { 0% { opacity: .3; transform: scaleY(1); } 50% { opacity: .6; transform: scaleY(1.2); } 100% { opacity: .3; transform: scaleY(1); } }
@keyframes cb-lantern { 0% { transform: translateY(0) rotate(-4deg); opacity: .6; } 50% { transform: translateY(-2px) rotate(4deg); opacity: 1; } 100% { transform: translateY(0) rotate(-4deg); opacity: .7; } }
@keyframes cb-bricks { 0% { transform: translateX(0); } 50% { transform: translateX(2px); } 100% { transform: translateX(0); } }

/* scene: police-visit */
.scn-police-visit {
  background: linear-gradient(180deg, #1c1c2a 0%, #1a1a2a 50%, #161626 100%);
}
.scn-police-visit .wall {
  position: absolute; inset: 30% 10% 15% 10%;
  background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 100%);
  border-radius: 2px;
  box-shadow: inset 0 0 20px rgba(0,0,0,.6);
  animation: pv-wall 10s ease-in-out infinite alternate;
}
.scn-police-visit .floor {
  position: absolute; bottom:0; left:0; right:0; height:18%;
  background: linear-gradient(0deg, #1e1e2a 0%, #2a2a3a 100%);
}
.scn-police-visit .man {
  position: absolute; bottom:18%; left:60%; width:22px; height:38px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pv-man 6s ease-in-out infinite;
}
.scn-police-visit .police-1 {
  position: absolute; bottom:18%; left:25%; width:20px; height:36px;
  background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pv-police 8s ease-in-out infinite alternate;
}
.scn-police-visit .police-2 {
  position: absolute; bottom:18%; left:35%; width:20px; height:36px;
  background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 100%);
  border-radius: 40% 40% 30% 30% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: pv-police 8s ease-in-out infinite alternate-reverse;
}
.scn-police-visit .cat {
  position: absolute; bottom:18%; left:50%; width:28px; height:18px;
  background: linear-gradient(135deg, #222 0%, #111 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 30% 30%;
  transform-origin: bottom center;
  animation: pv-cat 5s ease-in-out infinite;
}
.scn-police-visit .fireplace {
  position: absolute; bottom:15%; left:12%; width:30px; height:40px;
  background: linear-gradient(180deg, #4a3a2a 0%, #2a1a1a 100%);
  border-radius: 4px 4px 0 0;
  box-shadow: inset 0 0 10px rgba(0,0,0,.7);
}
@keyframes pv-wall { 0% { opacity: .8 } 50% { opacity: 1 } 100% { opacity: .7 } }
@keyframes pv-man { 0% { transform: translateX(0) translateY(0) rotate(0deg); } 33% { transform: translateX(2px) translateY(-1px) rotate(1deg); } 66% { transform: translateX(-2px) translateY(0) rotate(-1deg); } 100% { transform: translateX(0) translateY(0) rotate(0deg); } }
@keyframes pv-police { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(1px) rotate(1deg); } 100% { transform: translateX(0) rotate(0deg); } }
@keyframes pv-cat { 0% { transform: translateX(0) translateY(0); } 50% { transform: translateX(3px) translateY(-2px); } 100% { transform: translateX(0) translateY(0); } }

.scn-second-cruelty { background: linear-gradient(180deg, #1a0f1e 0%, #2a1a2e 40%, #0d0a12 100%), radial-gradient(ellipse at 40% 60%, #4a2a4e 0%, transparent 60%); }
.scn-second-cruelty .bg { position:absolute; inset:0; background: radial-gradient(circle at 60% 50%, #2a1a3a 0%, transparent 60%); animation: sc-bg-pulse 12s ease-in-out infinite alternate; }
.scn-second-cruelty .wall { position:absolute; left:0; right:0; top:0; bottom:45%; background: linear-gradient(180deg, #2a1a2e 0%, #1a0f1e 100%); }
.scn-second-cruelty .floor { position:absolute; left:0; right:0; bottom:0; height:45%; background: linear-gradient(180deg, #1a121a 0%, #0d0a12 100%); border-radius: 20% 20% 0 0; }
.scn-second-cruelty .man-figure { position:absolute; bottom:30%; left:30%; width:24px; height:48px; background: linear-gradient(180deg, #0d0a1a 0%, #05040a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: sc-man 5s ease-in-out infinite; }
.scn-second-cruelty .cat-figure { position:absolute; bottom:28%; left:55%; width:20px; height:28px; background: linear-gradient(135deg, #1a1a2a 0%, #0d0a1a 100%); border-radius: 50% 50% 30% 30% / 70% 70% 30% 30%; transform-origin: bottom center; animation: sc-cat 4s ease-in-out infinite; }
.scn-second-cruelty .eye-glow { position:absolute; bottom:40%; left:57%; width:6px; height:6px; background: radial-gradient(circle, #ffe080 0%, #c08040 70%); border-radius:50%; box-shadow: 0 0 12px 4px #c08040, 0 0 24px 8px rgba(192,128,64,.4); animation: sc-eye 1.5s ease-in-out infinite alternate; }
.scn-second-cruelty .chain { position:absolute; bottom:30%; left:50%; width:2px; height:20px; background: #5a4a3a; border-radius: 2px; transform-origin: top center; animation: sc-chain 3s ease-in-out infinite; }
@keyframes sc-bg-pulse { 0% { opacity:.7 } 50% { opacity:1 } 100% { opacity:.8 } }
@keyframes sc-man { 0% { transform: translateX(0) rotate(0deg) } 25% { transform: translateX(-4px) rotate(-2deg) } 50% { transform: translateX(0) rotate(0deg) } 75% { transform: translateX(3px) rotate(1deg) } 100% { transform: translateX(0) rotate(0deg) } }
@keyframes sc-cat { 0% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(-2px) rotate(3deg) } 100% { transform: translateY(0) rotate(-2deg) } }
@keyframes sc-eye { 0% { opacity:.8; transform: scale(1) } 50% { opacity:1; transform: scale(1.2) } 100% { opacity:.9; transform: scale(.9) } }
@keyframes sc-chain { 0% { transform: rotate(0deg) scaleY(1) } 50% { transform: rotate(5deg) scaleY(1.1) } 100% { transform: rotate(-3deg) scaleY(1) } }

.scn-house-fire { background: linear-gradient(180deg, #1a0f0a 0%, #2a1a0e 40%, #0d0a05 100%), radial-gradient(ellipse at 50% 60%, #4a2a1a 0%, transparent 70%); }
.scn-house-fire .sky { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #1a0f0a 0%, #2a1a0e 100%); animation: hf-sky 10s ease-in-out infinite alternate; }
.scn-house-fire .house-silhouette { position:absolute; bottom:30%; left:50%; transform:translateX(-50%); width:120px; height:80px; background: linear-gradient(180deg, #1a0a05 0%, #0d0502 100%); border-radius: 5% 5% 0 0; box-shadow: inset 0 0 20px rgba(255,100,20,.3); animation: hf-house 6s ease-in-out infinite; }
.scn-house-fire .flame-a { position:absolute; bottom:30%; left:42%; width:16px; height:30px; background: linear-gradient(180deg, #ff8030 0%, #cc5020 50%, #8a3010 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: hf-flame 1.5s ease-in-out infinite alternate; }
.scn-house-fire .flame-b { position:absolute; bottom:30%; left:55%; width:20px; height:40px; background: linear-gradient(180deg, #ff9038 0%, #cc6020 50%, #8a3010 100%); border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: hf-flame 2.1s ease-in-out infinite alternate-reverse; }
.scn-house-fire .smoke-a { position:absolute; top:20%; left:40%; width:50px; height:40px; background: radial-gradient(circle, rgba(60,40,30,.6) 0%, transparent 100%); filter: blur(8px); animation: hf-smoke 20s linear infinite; }
.scn-house-fire .smoke-b { position:absolute; top:15%; right:35%; width:40px; height:30px; background: radial-gradient(circle, rgba(60,40,30,.5) 0%, transparent 100%); filter: blur(6px); animation: hf-smoke 25s linear infinite reverse; }
.scn-house-fire .figure-escape { position:absolute; bottom:28%; left:30%; width:18px; height:36px; background: linear-gradient(180deg, #1a1212 0%, #0d0808 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: hf-figure 3s ease-in-out infinite; }
@keyframes hf-sky { 0% { opacity:.6 } 50% { opacity:.9 } 100% { opacity:.7 } }
@keyframes hf-house { 0% { transform: translateX(-50%) scale(1) rotate(0deg) } 25% { transform: translateX(-48%) scale(1.02) rotate(-1deg) } 75% { transform: translateX(-52%) scale(.98) rotate(1deg) } 100% { transform: translateX(-50%) scale(1) rotate(0deg) } }
@keyframes hf-flame { 0% { transform: translateY(0) scaleY(1) rotate(-2deg) } 50% { transform: translateY(-3px) scaleY(1.2) rotate(0deg) } 100% { transform: translateY(0) scaleY(.8) rotate(2deg) } }
@keyframes hf-smoke { 0% { transform: translateX(0) translateY(0) scale(1); opacity:.6 } 50% { transform: translateX(20px) translateY(-10px) scale(1.2); opacity:.3 } 100% { transform: translateX(40px) translateY(-20px) scale(1.5); opacity:0 } }
@keyframes hf-figure { 0% { transform: translateX(0) rotate(0deg) } 30% { transform: translateX(-10px) rotate(-5deg) } 60% { transform: translateX(-5px) rotate(2deg) } 100% { transform: translateX(0) rotate(0deg) } }

.scn-guilt-and-second-cat { background: linear-gradient(180deg, #e0d0b0 0%, #c0b090 40%, #a09070 100%), radial-gradient(ellipse at 30% 20%, #fff0d0 0%, transparent 60%); }
.scn-guilt-and-second-cat .wall { position:absolute; inset:0 0 35% 0; background: linear-gradient(180deg, #e0d0b0 0%, #c0b090 100%); box-shadow: inset 0 0 40px rgba(0,0,0,.1); }
.scn-guilt-and-second-cat .window { position:absolute; top:15%; left:20%; width:50px; height:60px; background: linear-gradient(135deg, #f0e8d0 0%, #d0c8b0 100%); border: 4px solid #8a7a5a; border-radius: 4px; box-shadow: inset 0 0 30px rgba(255,240,200,.6), 0 0 30px rgba(255,240,200,.3); animation: gc-window 12s ease-in-out infinite alternate; }
.scn-guilt-and-second-cat .sunlight-beam { position:absolute; top:15%; left:20%; width:60px; height:200px; background: linear-gradient(135deg, rgba(255,240,200,.4) 0%, transparent 100%); clip-path: polygon(0 0, 100% 0, 60% 100%, 0 100%); animation: gc-beam 10s ease-in-out infinite alternate; }
.scn-guilt-and-second-cat .narrator-figure { position:absolute; bottom:30%; left:35%; width:22px; height:44px; background: linear-gradient(180deg, #2a1a1a 0%, #1a0a0a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform-origin: bottom center; animation: gc-narrator 6s ease-in-out infinite; }
.scn-guilt-and-second-cat .cat-silhouette { position:absolute; bottom:28%; left:55%; width:18px; height:26px; background: linear-gradient(135deg, #2a2a2a 0%, #1a1a1a 100%); border-radius: 50% 50% 30% 30% / 70% 70% 30% 30%; transform-origin: bottom center; animation: gc-cat 4s ease-in-out infinite; }
.scn-guilt-and-second-cat .rope { position:absolute; bottom:32%; left:48%; width:2px; height:16px; background: #5a4a3a; border-radius: 1px; transform-origin: top center; animation: gc-rope 3s ease-in-out infinite; }
.scn-guilt-and-second-cat .shadow-line { position:absolute; bottom:30%; left:30%; width:80px; height:2px; background: rgba(0,0,0,.15); border-radius: 2px; animation: gc-shadow 8s ease-in-out infinite; }
@keyframes gc-window { 0% { box-shadow: inset 0 0 30px rgba(255,240,200,.6), 0 0 30px rgba(255,240,200,.3) } 50% { box-shadow: inset 0 0 50px rgba(255,240,200,.8), 0 0 50px rgba(255,240,200,.5) } 100% { box-shadow: inset 0 0 20px rgba(255,240,200,.4), 0 0 20px rgba(255,240,200,.2) } }
@keyframes gc-beam { 0% { opacity:.5; transform: skewX(0deg) } 50% { opacity:.8; transform: skewX(2deg) } 100% { opacity:.6; transform: skewX(-1deg) } }
@keyframes gc-narrator { 0% { transform: translateX(0) rotate(0deg) } 25% { transform: translateX(3px) rotate(-2deg) } 75% { transform: translateX(-2px) rotate(1deg) } 100% { transform: translateX(0) rotate(0deg) } }
@keyframes gc-cat { 0% { transform: translateY(0) rotate(0deg) } 50% { transform: translateY(-1px) rotate(-2deg) } 100% { transform: translateY(0) rotate(2deg) } }
@keyframes gc-rope { 0% { transform: rotate(0deg) scaleY(1) } 50% { transform: rotate(4deg) scaleY(1.1) } 100% { transform: rotate(-3deg) scaleY(.9) } }
@keyframes gc-shadow { 0% { transform: translateX(0) scaleX(1) } 50% { transform: translateX(5px) scaleX(1.1) } 100% { transform: translateX(-3px) scaleX(.95) } }

.scn-second-cat-found { background: linear-gradient(180deg, #1a1210 0%, #2a1a16 40%, #0d0a08 100%), radial-gradient(ellipse at 50% 70%, #3a2a1a 0%, transparent 60%); }
.scn-second-cat-found .tavern-bg { position:absolute; inset:0; background: radial-gradient(ellipse at 60% 50%, #2a1a12 0%, transparent 70%); animation: scf-ambient 8s ease-in-out infinite alternate; }
.scn-second-cat-found .barrel { position:absolute; bottom:25%; left:40%; width:40px; height:50px; background: linear-gradient(180deg, #4a3a2a 0%, #2a1a12 100%); border-radius: 30% 30% 20% 20% / 40% 40% 20% 20%; box-shadow: 0 4px 8px rgba(0,0,0,.5); animation: scf-barrel 10s ease-in-out infinite; }
.scn-second-cat-found .cat-body { position:absolute; bottom:35%; left:42%; width:22px; height:30px; background: linear-gradient(180deg, #1a1a1a 0%, #0d0d0d 100%); border-radius: 50% 50% 30% 30% / 70% 70% 30% 30%; transform-origin: bottom center; animation: scf-cat 4s ease-in-out infinite; }
.scn-second-cat-found .white-patch { position:absolute; bottom:40%; left:46%; width:8px; height:6px; background: #e0d0c0; border-radius: 50%; filter: blur(1px); animation: scf-patch 3s ease-in-out infinite alternate; }
.scn-second-cat-found .lantern { position:absolute; bottom:50%; left:55%; width:8px; height:12px; background: radial-gradient(circle, #ffd070 0%, #b08030 100%); border-radius: 40% 40% 20% 20%; box-shadow: 0 0 20px 6px #d0a050, 0 0 40px 12px rgba(208,160,80,.4); animation: scf-lantern 2s ease-in-out infinite alternate; }
.scn-second-cat-found .bottles { position:absolute; bottom:25%; right:25%; width:12px; height:20px; background: linear-gradient(180deg, #3a4a3a 0%, #1a2a1a 100%); border-radius: 20% 20% 10% 10%; transform: rotate(10deg); animation: scf-bottle 5s ease-in-out infinite; }
.scn-second-cat-found .floor-planks { position:absolute; bottom:0; left:0; right:0; height:25%; background: repeating-linear-gradient(90deg, #2a1a0e 0px, #1a0e08 4px, #2a1a0e 8px); animation: scf-planks 15s linear infinite; }
@keyframes scf-ambient { 0% { opacity:.7 } 50% { opacity:.9 } 100% { opacity:.75 } }
@keyframes scf-barrel { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes scf-cat { 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 scf-patch { 0% { opacity:.8; transform: scale(1) } 50% { opacity:1; transform: scale(1.1) } 100% { opacity:.9; transform: scale(.95) } }
@keyframes scf-lantern { 0% { box-shadow: 0 0 15px 4px #d0a050, 0 0 30px 8px rgba(208,160,80,.3); transform: rotate(-5deg) } 50% { box-shadow: 0 0 25px 8px #ffd070, 0 0 50px 16px rgba(255,208,112,.5); transform: rotate(5deg) } 100% { box-shadow: 0 0 18px 5px #d0a050, 0 0 35px 10px rgba(208,160,80,.35); transform: rotate(-3deg) } }
@keyframes scf-bottle { 0% { transform: rotate(10deg) translateY(0) } 50% { transform: rotate(12deg) translateY(-2px) } 100% { transform: rotate(8deg) translateY(0) } }
@keyframes scf-planks { 0% { background-position: 0 0 } 100% { background-position: 16px 0 } }

/* scene opening-confession */
.scn-opening-confession {
  background:
    linear-gradient(180deg, #1a1c2a 0%, #242438 40%, #18182a 100%),
    radial-gradient(ellipse at 50% 80%, #2a2a44 0%, transparent 70%);
}
.scn-opening-confession .wall {
  position: absolute; inset: 0 0 30% 0;
  background: linear-gradient(135deg, #2e3040 0%, #1a1c2a 100%);
  border-bottom: 2px solid #0c0e18;
}
.scn-opening-confession .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 30%;
  background: linear-gradient(180deg, #2a2a38 0%, #12121c 100%);
  box-shadow: inset 0 20px 40px rgba(0,0,0,0.6);
}
.scn-opening-confession .table {
  position: absolute; bottom: 28%; left: 50%; transform: translateX(-50%);
  width: 180px; height: 12px;
  background: linear-gradient(180deg, #3c3c4c 0%, #262638 100%);
  border-radius: 4px;
  box-shadow: 0 8px 20px rgba(0,0,0,0.7);
}
.scn-opening-confession .figure {
  position: absolute; bottom: 30%; left: 55%; width: 32px; height: 60px;
  background: linear-gradient(180deg, #1a1c2e 0%, #0c0e1a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: oc-figure 6s ease-in-out infinite alternate;
}
.scn-opening-confession .candle {
  position: absolute; bottom: 33%; left: 42%; width: 12px; height: 30px;
  background: linear-gradient(180deg, #b8a888 0%, #8a7a66 100%);
  border-radius: 4px 4px 6px 6px;
}
.scn-opening-confession .flame {
  position: absolute; bottom: 48%; left: 42%; width: 10px; height: 16px;
  background: radial-gradient(circle, #f0d090 0%, #b06030 70%);
  border-radius: 50% 50% 30% 50% / 60% 60% 40% 40%;
  box-shadow: 0 0 20px 4px #b08040, 0 0 40px 8px rgba(192,128,64,0.4);
  animation: oc-flame 1.6s ease-in-out infinite alternate;
}
.scn-opening-confession .shadow-flicker {
  position: absolute; bottom: 28%; left: 58%; width: 80px; height: 40px;
  background: radial-gradient(ellipse at 50% 0%, rgba(0,0,0,0.6) 0%, transparent 70%);
  filter: blur(6px);
  animation: oc-shadow 4s ease-in-out infinite alternate;
}
@keyframes oc-figure {
  0% { transform: translateX(0) translateY(0) rotate(-2deg); opacity: 0.9; }
  50% { transform: translateX(-4px) translateY(-2px) rotate(1deg); opacity: 1; }
  100% { transform: translateX(0) translateY(0) rotate(-1deg); opacity: 0.85; }
}
@keyframes oc-flame {
  0% { transform: scaleX(1) scaleY(1); box-shadow: 0 0 18px 2px #b08040; }
  30% { transform: scaleX(0.8) scaleY(1.2); box-shadow: 0 0 24px 6px #d09050; }
  60% { transform: scaleX(1.1) scaleY(0.9); box-shadow: 0 0 20px 4px #b07030; }
  100% { transform: scaleX(0.95) scaleY(1.05); box-shadow: 0 0 22px 5px #c08040; }
}
@keyframes oc-shadow {
  0% { transform: scaleX(1) rotate(0deg); opacity: 0.4; }
  50% { transform: scaleX(1.2) rotate(2deg); opacity: 0.7; }
  100% { transform: scaleX(0.9) rotate(-1deg); opacity: 0.5; }
}

/* scene childhood-pets */
.scn-childhood-pets {
  background:
    linear-gradient(180deg, #faf0d0 0%, #e8d4a0 40%, #d0b880 100%),
    radial-gradient(ellipse at 50% 0%, #ffe4a0 0%, transparent 60%);
}
.scn-childhood-pets .window {
  position: absolute; top: 8%; left: 20%; width: 120px; height: 160px;
  background: radial-gradient(ellipse at 60% 40%, #c8e0ff 0%, #a0c8f0 100%);
  border: 6px solid #8a6a4a;
  border-radius: 6px;
  box-shadow: inset 0 0 40px #fff8e0, 0 0 60px rgba(200,224,255,0.3);
  animation: cp-window 12s ease-in-out infinite alternate;
}
.scn-childhood-pets .wall {
  position: absolute; inset: 0 0 32% 0;
  background: linear-gradient(180deg, #f5e6c8 0%, #dcc8a0 100%);
  box-shadow: inset 0 0 80px rgba(200,180,140,0.2);
}
.scn-childhood-pets .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 32%;
  background: linear-gradient(180deg, #c4a878 0%, #a88a60 100%);
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.1);
}
.scn-childhood-pets .boy {
  position: absolute; bottom: 28%; left: 38%; width: 36px; height: 64px;
  background: linear-gradient(180deg, #c8a87a 0%, #a88860 100%);
  border-radius: 45% 45% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: cp-boy 8s ease-in-out infinite;
}
.scn-childhood-pets .cat {
  position: absolute; bottom: 24%; left: 48%; width: 30px; height: 22px;
  background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%);
  border-radius: 50% 50% 30% 30% / 40% 40% 30% 30%;
  animation: cp-cat 5s ease-in-out infinite alternate;
}
.scn-childhood-pets .dog {
  position: absolute; bottom: 25%; left: 56%; width: 36px; height: 28px;
  background: linear-gradient(180deg, #7a6a5a 0%, #4a3a2a 100%);
  border-radius: 50% 40% 30% 30% / 50% 40% 30% 30%;
  animation: cp-dog 6s ease-in-out infinite alternate;
  animation-delay: -2s;
}
.scn-childhood-pets .bird {
  position: absolute; bottom: 40%; left: 58%; width: 16px; height: 12px;
  background: radial-gradient(circle, #d0a060 0%, #a08040 100%);
  border-radius: 50%;
  animation: cp-bird 3s ease-in-out infinite alternate;
}
.scn-childhood-pets .sunbeam {
  position: absolute; top: 0; left: 20%; width: 140px; height: 100%;
  background: linear-gradient(180deg, rgba(255,230,150,0.3) 0%, transparent 60%);
  filter: blur(12px);
  animation: cp-sunbeam 20s ease-in-out infinite alternate;
}
@keyframes cp-window {
  0% { opacity: 0.85; box-shadow: inset 0 0 40px #fff8e0, 0 0 60px rgba(200,224,255,0.2); }
  50% { opacity: 1; box-shadow: inset 0 0 60px #fffce0, 0 0 80px rgba(200,224,255,0.4); }
  100% { opacity: 0.9; box-shadow: inset 0 0 50px #fff8e0, 0 0 70px rgba(200,224,255,0.3); }
}
@keyframes cp-boy {
  0% { transform: translateY(0) rotate(-2deg); }
  25% { transform: translateY(-3px) rotate(2deg); }
  50% { transform: translateY(-1px) rotate(-1deg); }
  75% { transform: translateY(-4px) rotate(1deg); }
  100% { transform: translateY(0) rotate(0); }
}
@keyframes cp-cat {
  0% { transform: translateX(0) translateY(0) scale(1); }
  50% { transform: translateX(8px) translateY(-2px) scale(1.05); }
  100% { transform: translateX(-4px) translateY(0) scale(0.95); }
}
@keyframes cp-dog {
  0% { transform: translateX(0) rotate(0deg); }
  50% { transform: translateX(-6px) rotate(5deg); }
  100% { transform: translateX(4px) rotate(-3deg); }
}
@keyframes cp-bird {
  0% { transform: translate(0, 0) scale(1) rotate(-10deg); }
  30% { transform: translate(8px, -10px) scale(1.1) rotate(5deg); }
  60% { transform: translate(-4px, -4px) scale(0.95) rotate(-5deg); }
  100% { transform: translate(2px, -8px) scale(1) rotate(0deg); }
}
@keyframes cp-sunbeam {
  0% { opacity: 0.4; transform: scaleX(1) rotate(0deg); }
  50% { opacity: 0.8; transform: scaleX(1.2) rotate(2deg); }
  100% { opacity: 0.5; transform: scaleX(0.9) rotate(-1deg); }
}

/* scene friendship-and-change */
.scn-friendship-and-change {
  background:
    linear-gradient(180deg, #f0e6c0 0%, #dcc89a 40%, #c0a86a 100%),
    radial-gradient(ellipse at 30% 20%, #fff0c0 0%, transparent 50%);
}
.scn-friendship-and-change .sunlight {
  position: absolute; top: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, rgba(255,220,120,0.4) 0%, transparent 100%);
  clip-path: polygon(0 0, 100% 0, 90% 100%, 10% 100%);
  animation: fc-sunlight 10s ease-in-out infinite alternate;
}
.scn-friendship-and-change .wall {
  position: absolute; inset: 0 0 28% 0;
  background: linear-gradient(135deg, #c8b898 0%, #a89070 100%);
  box-shadow: inset 0 0 40px rgba(0,0,0,0.15);
}
.scn-friendship-and-change .floor {
  position: absolute; bottom: 0; left: 0; right: 0; height: 28%;
  background: linear-gradient(180deg, #b09878 0%, #887058 100%);
  box-shadow: inset 0 10px 30px rgba(0,0,0,0.2);
}
.scn-friendship-and-change .man {
  position: absolute; bottom: 30%; left: 40%; width: 40px; height: 70px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  transform-origin: bottom center;
  animation: fc-man 4s ease-in-out infinite alternate;
}
.scn-friendship-and-change .pluto {
  position: absolute; bottom: 25%; left: 52%; width: 38px; height: 26px;
  background: linear-gradient(180deg, #1a1a2a 0%, #0c0c1a 100%);
  border-radius: 50% 40% 30% 30% / 50% 40% 30% 30%;
  box-shadow: inset 0 -4px 6px rgba(0,0,0,0.5);
  animation: fc-pluto 3s ease-in-out infinite alternate;
}
.scn-friendship-and-change .shadow-cat {
  position: absolute; bottom: 22%; left: 55%; width: 60px; height: 16px;
  background: radial-gradient(ellipse, rgba(0,0,0,0.4) 0%, transparent 70%);
  filter: blur(4px);
  animation: fc-shadow 6s ease-in-out infinite alternate;
}
.scn-friendship-and-change .tension-lines {
  position: absolute; top: 10%; left: 30%; width: 80px; height: 80px;
  background: repeating-linear-gradient(45deg, transparent, transparent 4px, rgba(180,80,60,0.08) 4px, rgba(180,80,60,0.08) 8px);
  animation: fc-tension 2s ease-in-out infinite alternate;
}
@keyframes fc-sunlight {
  0% { opacity: 0.3; transform: skewX(0deg); }
  50% { opacity: 0.7; transform: skewX(-3deg); }
  100% { opacity: 0.4; transform: skewX(2deg); }
}
@keyframes fc-man {
  0% { transform: translateX(0) rotate(-1deg) scale(1); }
  50% { transform: translateX(4px) rotate(2deg) scale(1.02); }
  100% { transform: translateX(-2px) rotate(-2deg) scale(0.98); }
}
@keyframes fc-pluto {
  0% { transform: translateX(0) translateY(0) rotate(0deg) scale(1); }
  30% { transform: translateX(-6px) translateY(-2px) rotate(-5deg) scale(0.95); }
  60% { transform: translateX(4px) translateY(1px) rotate(3deg) scale(1.05); }
  100% { transform: translateX(-2px) translateY(0) rotate(-2deg) scale(1); }
}
@keyframes fc-shadow {
  0% { transform: scaleX(1) rotate(0deg) translateX(0); }
  50% { transform: scaleX(1.3) rotate(4deg) translateX(8px); opacity: 0.7; }
  100% { transform: scaleX(0.8) rotate(-2deg) translateX(-4px); opacity: 0.4; }
}
@keyframes fc-tension {
  0% { opacity: 0.2; transform: scale(1) rotate(0deg); }
  50% { opacity: 0.5; transform: scale(1.1) rotate(10deg); }
  100% { opacity: 0.3; transform: scale(0.9) rotate(-5deg); }
}

/* scene item-penknife */
.scn-item-penknife {
  background:
    linear-gradient(180deg, #0a0a0e 0%, #14141c 40%, #08080a 100%),
    radial-gradient(ellipse at 50% 50%, #1c1c28 0%, transparent 60%);
}
.scn-item-penknife .void {
  position: absolute; inset: 0;
  background: linear-gradient(135deg, #0c0c12 0%, #161620 50%, #0c0c12 100%);
  opacity: 0.8;
}
.scn-item-penknife .hand {
  position: absolute; bottom: 22%; left: 38%; width: 60px; height: 80px;
  background: linear-gradient(180deg, #2a2a3a 0%, #1a1a2a 100%);
  border-radius: 30% 30% 20% 20% / 50% 50% 30% 30%;
  transform: rotate(-5deg);
  animation: ipk-hand 8s ease-in-out infinite alternate;
}
.scn-item-penknife .knife {
  position: absolute; bottom: 28%; left: 42%; width: 14px; height: 60px;
  background: linear-gradient(180deg, #c0c0c8 20%, #888898 50%, #b0b0b8 80%);
  border-radius: 4px 4px 2px 2px;
  transform: rotate(15deg);
  box-shadow: 0 0 12px 2px rgba(180,180,200,0.3), inset 0 2px 4px #e0e0e8;
  animation: ipk-knife 6s ease-in-out infinite alternate;
}
.scn-item-penknife .eye-glint {
  position: absolute; bottom: 38%; left: 50%; width: 16px; height: 12px;
  background: radial-gradient(circle, #d0d8e0 0%, #a0a8b0 60%, transparent 100%);
  border-radius: 50%;
  box-shadow: 0 0 20px 4px rgba(200,210,220,0.3), 0 0 40px 8px rgba(200,210,220,0.1);
  animation: ipk-eye 3s ease-in-out infinite alternate;
}
.scn-item-penknife .drip {
  position: absolute; bottom: 20%; left: 44%; width: 4px; height: 20px;
  background: linear-gradient(180deg, #5e1a1d 0%, #3a0e10 100%);
  border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%;
  filter: blur(1px);
  animation: ipk-drip 5s ease-in-out infinite;
}
.scn-item-penknife .sweat {
  position: absolute; bottom: 26%; left: 44%; width: 6px; height: 6px;
  background: radial-gradient(circle, rgba(200,210,220,0.2) 0%, transparent 100%);
  border-radius: 50%;
  filter: blur(2px);
  animation: ipk-sweat 4s ease-in-out infinite alternate;
}
@keyframes ipk-hand {
  0% { transform: rotate(-5deg) translateX(0) translateY(0); }
  50% { transform: rotate(-2deg) translateX(2px) translateY(-4px); }
  100% { transform: rotate(-6deg) translateX(-1px) translateY(2px); }
}
@keyframes ipk-knife {
  0% { transform: rotate(15deg) scale(1); box-shadow: 0 0 12px 2px rgba(180,180,200,0.3); }
  50% { transform: rotate(18deg) scale(1.02); box-shadow: 0 0 20px 4px rgba(180,180,200,0.5); }
  100% { transform: rotate(12deg) scale(0.98); box-shadow: 0 0 10px 1px rgba(180,180,200,0.2); }
}
@keyframes ipk-eye {
  0% { opacity: 0.3; transform: scale(1) rotate(0deg); }
  50% { opacity: 0.9; transform: scale(1.3) rotate(10deg); }
  100% { opacity: 0.4; transform: scale(0.8) rotate(-5deg); }
}
@keyframes ipk-drip {
  0% { transform: translateY(0) scaleY(1); opacity: 0.6; }
  30% { transform: translateY(-2px) scaleY(1.1); opacity: 0.8; }
  60% { transform: translateY(6px) scaleY(0.9); opacity: 0.4; }
  100% { transform: translateY(0) scaleY(1); opacity: 0.6; }
}
@keyframes ipk-sweat {
  0% { transform: translate(0, 0) scale(1); opacity: 0.2; }
  50% { transform: translate(-3px, 2px) scale(1.5); opacity: 0.6; }
  100% { transform: translate(2px, -1px) scale(0.8); opacity: 0.3; }
}
/* end per-scene blocks */

/* auto-stub: parent tag-classes flagged by CSS audit */
.bright { position: absolute; pointer-events: none; }
.burgundy { position: absolute; pointer-events: none; }
.dust-particle { position: absolute; pointer-events: none; }
.harsh { position: absolute; pointer-events: none; }
.night { position: absolute; pointer-events: none; }
.warm { position: absolute; pointer-events: none; }

/* ============ tier S ============ */
/* per-scene blocks (EXP step_scenes) */
.scn-gallows-shape-axe-murder { background: linear-gradient(180deg, #1a1423 0%, #2a1a2a 40%, #1e1220 100%), radial-gradient(ellipse at 50% 100%, #2a1a2a 0%, transparent 70%); }
.scn-gallows-shape-axe-murder .room-wall { position:absolute; inset:0 0 30% 0; background: linear-gradient(135deg, #2a1e30 0%, #1a1220 100%); box-shadow: inset 0 0 80px rgba(0,0,0,.6); animation: gll-wall 20s ease-in-out infinite alternate; }
.scn-gallows-shape-axe-murder .floor { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #1e1420 0%, #0e0a10 100%); border-radius: 0 0 40% 40% / 0 0 20% 20%; }
.scn-gallows-shape-axe-murder .fireplace { position:absolute; bottom:28%; left:15%; width:80px; height:100px; background: linear-gradient(180deg, #2a1e1a 0%, #1a0e0a 100%); border-radius: 40% 40% 0 0; box-shadow: inset 0 0 20px rgba(0,0,0,.5); }
.scn-gallows-shape-axe-murder .cat { position:absolute; bottom:32%; left:60%; width:60px; height:40px; background: radial-gradient(ellipse at 50% 60%, #1a1a2a 0%, #0a0a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform: rotate(-5deg); animation: gll-cat-breathe 4s ease-in-out infinite; }
.scn-gallows-shape-axe-murder .gallows-mark { position:absolute; bottom:35%; left:64%; width:20px; height:30px; background: radial-gradient(circle, #8a7a6a 0%, transparent 70%); border-radius: 40% 40% 10% 10%; box-shadow: 0 0 12px 4px rgba(138,122,106,.5); animation: gll-mark-pulse 3s ease-in-out infinite alternate; }
.scn-gallows-shape-axe-murder .man-shadow { position:absolute; bottom:25%; left:30%; width:40px; height:80px; background: linear-gradient(180deg, #0a060a 0%, #000000 100%); border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%; opacity:.6; animation: gll-shadow-sway 6s ease-in-out infinite; }
.scn-gallows-shape-axe-murder .candle-glow { position:absolute; bottom:40%; left:90%; width:10px; height:10px; background: radial-gradient(circle, #c8a860 0%, #a08040 50%, transparent 100%); border-radius:50%; box-shadow: 0 0 30px 10px rgba(200,168,96,.4), 0 0 60px 20px rgba(200,168,96,.1); animation: gll-candle 2s ease-in-out infinite alternate; }
@keyframes gll-wall { 0% { opacity:.8 } 50% { opacity:1 } 100% { opacity:.75 } }
@keyframes gll-cat-breathe { 0%,100% { transform: scaleY(1) rotate(-5deg) } 50% { transform: scaleY(1.05) rotate(-4deg) } }
@keyframes gll-mark-pulse { 0% { opacity:.6; box-shadow: 0 0 8px 2px rgba(138,122,106,.3) } 50% { opacity:1; box-shadow: 0 0 20px 8px rgba(138,122,106,.6) } 100% { opacity:.7; box-shadow: 0 0 12px 4px rgba(138,122,106,.4) } }
@keyframes gll-shadow-sway { 0%,100% { transform: translateX(0) rotate(-1deg) } 25% { transform: translateX(-3px) rotate(0deg) } 50% { transform: translateX(0) rotate(1deg) } 75% { transform: translateX(3px) rotate(0deg) } }
@keyframes gll-candle { 0% { transform: scale(1); opacity:.8 } 50% { transform: scale(1.1); opacity:1 } 100% { transform: scale(1); opacity:.9 } }

.scn-concealment-police-bravado { background: linear-gradient(180deg, #e8d8c0 0%, #c8b8a0 40%, #b0a088 100%), radial-gradient(ellipse at 50% 0%, #f0e8d8 0%, transparent 60%); }
.scn-concealment-police-bravado .cellar-wall { position:absolute; inset:0 0 20% 0; background: linear-gradient(90deg, #9a8a7a 0%, #8a7a6a 50%, #9a8a7a 100%); }
.scn-concealment-police-bravado .brick-row { position:absolute; bottom:30%; left:10%; right:10%; height:8%; background: repeating-linear-gradient(90deg, #7a6a5a 0px, #7a6a5a 30px, #8a7a6a 30px, #8a7a6a 32px); border-radius: 2px; box-shadow: 0 2px 4px rgba(0,0,0,.3); }
.scn-concealment-police-bravado .plaster-patch { position:absolute; bottom:28%; left:40%; width:80px; height:60px; background: radial-gradient(ellipse, #d8c8b8 0%, #b8a898 100%); border-radius: 30% 30% 20% 20%; box-shadow: inset 0 0 10px rgba(0,0,0,.2), 0 4px 8px rgba(0,0,0,.3); animation: cil-plaster 5s ease-in-out infinite; }
.scn-concealment-police-bravado .man-figure { position:absolute; bottom:24%; left:20%; width:30px; height:70px; background: linear-gradient(180deg, #3a2e24 0%, #2a1e14 100%); border-radius: 40% 40% 30% 30% / 60% 60% 30% 30%; transform-origin: bottom center; animation: cil-man 4s ease-in-out infinite; }
.scn-concealment-police-bravado .cat-silhouette { position:absolute; bottom:30%; right:15%; width:40px; height:25px; background: #1a1a1a; border-radius: 50% 50% 30% 30% / 60% 60% 30% 30%; filter: blur(1px); animation: cil-cat 6s ease-in-out infinite; }
.scn-concealment-police-bravado .lamp-light { position:absolute; top:10%; right:20%; width:20px; height:20px; background: radial-gradient(circle, #f0e0a0 0%, #d0c080 50%, transparent 100%); border-radius:50%; box-shadow: 0 0 40px 15px rgba(240,224,160,.5); animation: cil-lamp 3s ease-in-out infinite alternate; }
.scn-concealment-police-bravado .shadow-axe { position:absolute; bottom:26%; left:5%; width:8px; height:40px; background: #1a1a1a; clip-path: polygon(30% 0%, 70% 0%, 100% 100%, 0% 100%); transform: rotate(15deg); opacity:.4; animation: cil-axe 8s ease-in-out infinite; }
@keyframes cil-plaster { 0%,100% { transform: scaleX(1) } 50% { transform: scaleX(1.05) } }
@keyframes cil-man { 0% { transform: translateY(0) rotate(-2deg) } 25% { transform: translateY(-2px) rotate(0) } 50% { transform: translateY(0) rotate(2deg) } 75% { transform: translateY(-1px) rotate(0) } 100% { transform: translateY(0) rotate(-2deg) } }
@keyframes cil-cat { 0%,100% { transform: translateX(0) scaleX(1) } 50% { transform: translateX(-5px) scaleX(-1) } }
@keyframes cil-lamp { 0% { opacity:.7; transform: scale(.95) } 100% { opacity:1; transform: scale(1.1) } }
@keyframes cil-axe { 0%,100% { transform: rotate(15deg) translateY(0) } 50% { transform: rotate(20deg) translateY(-3px) } }

.scn-wall-corpse-revealed { background: linear-gradient(180deg, #1a121a 0%, #2a1a2a 40%, #1a0e1a 100%), radial-gradient(ellipse at 50% 100%, #3a2a3a 0%, transparent 70%); }
.scn-wall-corpse-revealed .stone-wall { position:absolute; inset:0 0 25% 0; background: linear-gradient(135deg, #3a3240 0%, #2a2230 100%); box-shadow: inset 0 0 60px rgba(0,0,0,.7); animation: wcr-wall 15s ease-in-out infinite alternate; }
.scn-wall-corpse-revealed .wall-crack { position:absolute; bottom:30%; left:45%; width:20%; height:40%; background: linear-gradient(90deg, transparent 0%, rgba(100,80,60,.3) 10%, transparent 20%, rgba(100,80,60,.2) 30%, transparent 40%, rgba(100,80,60,.1) 50%, transparent 70%); clip-path: polygon(20% 0%, 80% 0%, 100% 100%, 0% 100%); transform: rotate(-5deg); }
.scn-wall-corpse-revealed .corpse-upright { position:absolute; bottom:22%; left:45%; width:40px; height:100px; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); border-radius: 30% 30% 20% 20% / 50% 50% 20% 20%; box-shadow: inset 0 0 20px rgba(0,0,0,.5); animation: wcr-corpse 8s ease-in-out infinite; }
.scn-wall-corpse-revealed .beast-cat { position:absolute; bottom:40%; left:48%; width:50px; height:35px; background: radial-gradient(ellipse at 50% 60%, #1a1a2a 0%, #0a0a1a 100%); border-radius: 50% 50% 40% 40% / 60% 60% 40% 40%; transform: rotate(-10deg); animation: wcr-beast 5s ease-in-out infinite alternate; }
.scn-wall-corpse-revealed .rubble { position:absolute; bottom:20%; left:30%; right:20%; height:12%; background: linear-gradient(180deg, #5a4a3a 0%, #3a2a1a 100%); clip-path: polygon(10% 0%, 30% 20%, 50% 5%, 70% 30%, 90% 10%, 100% 100%, 0% 100%); border-radius: 20% 20% 0 0; animation: wcr-rubble 12s ease-in-out infinite; }
.scn-wall-corpse-revealed .torch-flame { position:absolute; top:10%; left:20%; width:16px; height:24px; background: radial-gradient(ellipse at 50% 100%, #d08030 0%, #b06020 40%, transparent 100%); border-radius: 50% 50% 20% 20% / 80% 80% 20% 20%; box-shadow: 0 0 30px 10px rgba(208,128,48,.6), 0 0 60px 20px rgba(208,128,48,.3); animation: wcr-torch 2s ease-in-out infinite alternate; }
.scn-wall-corpse-revealed .men-shadows { position:absolute; bottom:8%; left:10%; width:80%; height:30%; background: linear-gradient(90deg, rgba(10,10,10,.4) 0%, transparent 30%, rgba(10,10,10,.3) 50%, transparent 70%, rgba(10,10,10,.2) 100%); clip-path: polygon(0% 100%, 20% 40%, 40% 80%, 60% 30%, 80% 70%, 100% 20%, 100% 100%); animation: wcr-men 20s ease-in-out infinite; }
@keyframes wcr-wall { 0% { opacity:.9 } 100% { opacity:.7 } }
@keyframes wcr-corpse { 0%,100% { transform: translateY(0) rotate(0) } 25% { transform: translateY(-2px) rotate(1deg) } 50% { transform: translateY(0) rotate(-1deg) } 75% { transform: translateY(2px) rotate(0) } }
@keyframes wcr-beast { 0% { transform: rotate(-10deg) scaleX(1) } 50% { transform: rotate(-8deg) scaleX(-1) } 100% { transform: rotate(-10deg) scaleX(1) } }
@keyframes wcr-rubble { 0% { transform: translateY(0) } 50% { transform: translateY(-2px) } 100% { transform: translateY(0) } }
@keyframes wcr-torch { 0% { transform: scaleY(1) scaleX(1); opacity:.8 } 50% { transform: scaleY(1.2) scaleX(.9); opacity:1 } 100% { transform: scaleY(1) scaleX(1); opacity:.9 } }
@keyframes wcr-men { 0% { opacity:.3 } 50% { opacity:.6 } 100% { opacity:.4 } }

/* soul-unburdening */
.scn-soul-unburdening {
  background: linear-gradient(180deg, #0b0b1a 0%, #141428 50%, #1e1e34 100%),
              radial-gradient(ellipse at 50% 0%, #2a2a4a 0%, transparent 70%);
}
.scn-soul-unburdening .bg      { position:absolute; inset:0; background: radial-gradient(ellipse at 50% 80%, #1a1a2e 0%, #0a0a1a 70%); animation: sou-bg 20s ease-in-out infinite alternate; }
.scn-soul-unburdening .wall    { position:absolute; top:0; left:0; right:0; bottom:30%; background: linear-gradient(90deg, #16162a 0%, #1e1e36 50%, #16162a 100%); border-radius:0 0 10% 10%; box-shadow: inset 0 -8px 20px rgba(0,0,0,.5); }
.scn-soul-unburdening .floor   { position:absolute; bottom:0; left:0; right:0; height:30%; background: linear-gradient(180deg, #1a1a28 0%, #0f0f1a 100%); border-radius: 20% 20% 0 0 / 40% 40% 0 0; }
.scn-soul-unburdening .table   { position:absolute; bottom:20%; left:50%; width:100px; height:16px; background: linear-gradient(180deg, #2a1a0a 0%, #1a1008 100%); border-radius: 4px; transform:translateX(-50%) perspective(80px) rotateX(10deg); box-shadow: 0 4px 8px rgba(0,0,0,.6); animation: sou-table 9s ease-in-out infinite; }
.scn-soul-unburdening .candle  { position:absolute; bottom:30%; left:50%; width:14px; height:32px; background: linear-gradient(180deg, #e8d4b0 0%, #c8a870 60%, #8a6a40 100%); border-radius: 6px 6px 3px 3px; transform:translateX(-50%); box-shadow: inset 0 -2px 4px rgba(0,0,0,.4); }
.scn-soul-unburdening .flame   { position:absolute; bottom:54%; left:50%; width:12px; height:24px; background: radial-gradient(ellipse at 50% 80%, #ffd060 0%, #ffa040 40%, #cc4020 80%, transparent 100%); border-radius: 50%; filter: blur(2px); transform:translateX(-50%); animation: sou-flame 2.4s ease-in-out infinite alternate; }
.scn-soul-unburdening .figure  { position:absolute; bottom:12%; left:38%; width:40px; height:70px; background: linear-gradient(180deg, #0a0a18 0%, #040410 100%); border-radius: 50% 50% 45% 45% / 60% 60% 45% 45%; transform: rotate(-2deg); animation: sou-figure 4s ease-in-out infinite; }
.scn-soul-unburdening .shadow  { position:absolute; bottom:10%; left:36%; width:60px; height:12px; background: rgba(0,0,0,.5); border-radius: 50%; filter: blur(6px); transform: rotate(5deg); animation: sou-shadow 3s ease-in-out infinite alternate; }
.scn-soul-unburdening .mote    { position:absolute; width:3px; height:3px; background: rgba(255,220,160,.3); border-radius: 50%; filter: blur(2px); }
.scn-soul-unburdening .mote-a  { top:20%; left:30%; animation: sou-mote 22s linear infinite; animation-delay: 0s; }
@keyframes sou-bg    { 0% { opacity:.6 } 50% { opacity:.85 } 100% { opacity:.7 } }
@keyframes sou-table { 0%,100% { transform:translateX(-50%) perspective(80px) rotateX(10deg) } 50% { transform:translateX(-50%) perspective(80px) rotateX(8deg) scaleY(.98) } }
@keyframes sou-flame { 0% { transform:translateX(-50%) scaleY(1) scaleX(1) translateY(0) } 30% { transform:translateX(-50%) scaleY(1.05) scaleX(.9) translateY(-2px) } 70% { transform:translateX(-50%) scaleY(.95) scaleX(1.1) translateY(1px) } 100% { transform:translateX(-50%) scaleY(1) scaleX(1) translateY(0) } }
@keyframes sou-figure{ 0% { transform: rotate(-2deg) translateY(0) } 25% { transform: rotate(-1deg) translateY(-1px) } 50% { transform: rotate(0deg) translateY(0) } 75% { transform: rotate(-1deg) translateY(-1px) } 100% { transform: rotate(-2deg) translateY(0) } }
@keyframes sou-shadow{ 0% { transform: rotate(5deg) scaleX(1) } 50% { transform: rotate(4deg) scaleX(1.1) } 100% { transform: rotate(5deg) scaleX(1) } }
@keyframes sou-mote  { 0% { transform: translateY(0) translateX(0) } 25% { transform: translateY(-20px) translateX(10px) } 50% { transform: translateY(-40px) translateX(-5px) } 75% { transform: translateY(-20px) translateX(8px) } 100% { transform: translateY(0) translateX(0) } }

/* pluto-the-black-cat */
.scn-pluto-the-black-cat {
  background: linear-gradient(180deg, #080814 0%, #12122a 50%, #1a1a34 100%),
              radial-gradient(ellipse at 50% 100%, #1e1e3a 0%, transparent 70%);
}
.scn-pluto-the-black-cat .bg        { position:absolute; inset:0; background: radial-gradient(ellipse at 50% 30%, #1a1a32 0%, #0a0a1a 80%); animation: plu-bg 18s ease-in-out infinite alternate; }
.scn-pluto-the-black-cat .wall      { position:absolute; top:0; left:0; right:0; bottom:25%; background: linear-gradient(135deg, #12122a 0%, #1a1a36 50%, #12122a 100%); border-radius:0 0 8% 8%; box-shadow: inset 0 -6px 16px rgba(0,0,0,.6); }
.scn-pluto-the-black-cat .floor     { position:absolute; bottom:0; left:0; right:0; height:25%; background: linear-gradient(180deg, #1a1a28 0%, #0e0e1a 100%); border-radius: 30% 30% 0 0 / 50% 50% 0 0; }
.scn-pluto-the-black-cat .table     { position:absolute; bottom:15%; left:50%; width:90px; height:14px; background: linear-gradient(180deg, #2a1a0a 0%, #1a1008 100%); border-radius: 4px; transform:translateX(-50%) perspective(60px) rotateX(12deg); box-shadow: 0 4px 6px rgba(0,0,0,.5); animation: plu-table 9s ease-in-out infinite; }
.scn-pluto-the-black-cat .cat-body  { position:absolute; bottom:15%; left:48%; width:40px; height:36px; background: linear-gradient(180deg, #0e0e1a 0%, #060612 100%); border-radius: 50% 50% 45% 45% / 60% 60% 45% 45%; transform: translateX(-50%); box-shadow: 0 2px 4px rgba(0,0,0,.5); animation: plu-cat 3.5s ease-in-out infinite; }
.scn-pluto-the-black-cat .bottle    { position:absolute; bottom:10%; left:30%; width:16px; height:28px; background: linear-gradient(180deg, #3a3a2a 0%, #2a2a1a 100%); border-radius: 4px 4px 2px 2px; transform: rotate(-8deg); animation: plu-bottle 5s ease-in-out infinite; }
.scn-pluto-the-black-cat .glass     { position:absolute; bottom:8%; left:68%; width:14px; height:20px; background: rgba(60,60,50,.3); border:1px solid rgba(80,80,70,.2); border-radius: 2px 2px 5px 5px; box-shadow: inset 0 2px 4px rgba(0,0,0,.2); animation: plu-glass 7s ease-in-out infinite; }
.scn-pluto-the-black-cat .eye       { position:absolute; bottom:35%; width:6px; height:8px; background: radial-gradient(circle, #f0e060 0%, #c0a030 70%); border-radius: 50%; filter: blur(1px); animation: plu-eye 2s ease-in-out infinite alternate; }
.scn-pluto-the-black-cat .eye-l     { left:46.5%; }
.scn-pluto-the-black-cat .eye-r     { left:50.5%; }
@keyframes plu-bg    { 0% { opacity:.7 } 50% { opacity:.9 } 100% { opacity:.75 } }
@keyframes plu-table { 0%,100% { transform:translateX(-50%) perspective(60px) rotateX(12deg) } 50% { transform:translateX(-50%) perspective(60px) rotateX(10deg) scaleY(.97) } }
@keyframes plu-cat   { 0% { transform: translateX(-50%) rotate(0deg) } 25% { transform: translateX(-50%) rotate(2deg) } 50% { transform: translateX(-50%) rotate(-1deg) } 75% { transform: translateX(-50%) rotate(1deg) } 100% { transform: translateX(-50%) rotate(0deg) } }
@keyframes plu-bottle{ 0%,100% { transform: rotate(-8deg) } 25% { transform: rotate(-5deg) } 50% { transform: rotate(-10deg) } 75% { transform: rotate(-6deg) } }
@keyframes plu-glass { 0%,100% { transform: rotate(0deg) } 50% { transform: rotate(-2deg) translateY(-1px) } }
@keyframes plu-eye   { 0% { opacity:.8; transform:scaleY(1) } 50% { opacity:1; transform:scaleY(1.2) } 100% { opacity:.85; transform:scaleY(1) } }

/* item-penknife-eye */
.scn-item-penknife-eye {
  background: linear-gradient(180deg, #1a0808 0%, #2a0a0a 30%, #4a1a0a 60%, #3a1008 100%),
              radial-gradient(ellipse at 50% 50%, #5a2a10 0%, transparent 70%);
}
.scn-item-penknife-eye .bg-sky     { position:absolute; inset:0 0 40% 0; background: linear-gradient(180deg, #0a0204 0%, #1a0608 60%, #2a1008 100%); animation: pen-sky 25s ease-in-out infinite alternate; }
.scn-item-penknife-eye .house      { position:absolute; bottom:30%; left:35%; width:120px; height:80px; background: linear-gradient(180deg, #1a0a04 0%, #0e0502 100%); border-radius: 6px 6px 2px 2px; box-shadow: inset 0 0 20px rgba(255,80,20,.3); transform: skewX(-2deg); animation: pen-house 6s ease-in-out infinite; }
.scn-item-penknife-eye .flame-core { position:absolute; bottom:50%; left:50%; width:40px; height:60px; background: radial-gradient(ellipse at 50% 80%, #ffd050 0%, #ff8020 40%, #cc3000 70%, transparent 100%); border-radius: 50%; filter: blur(4px); transform:translateX(-50%); animation: pen-flame-core 1.8s ease-in-out infinite alternate; }
.scn-item-penknife-eye .flame-outer{ position:absolute; bottom:45%; left:42%; width:80px; height:80px; background: radial-gradient(ellipse at 50% 80%, #ff6020 0%, #cc2000 40%, transparent 70%); border-radius: 50%; filter: blur(12px); animation: pen-flame-outer 2.4s ease-in-out infinite alternate; }
.scn-item-penknife-eye .smoke      { position:absolute; top:0; left:30%; width:100px; height:60px; background: linear-gradient(180deg, rgba(80,60,50,.4) 0%, rgba(40,30,25,.2) 60%, transparent 100%); border-radius: 50%; filter: blur(10px); animation: pen-smoke 14s ease-in-out infinite; }
.scn-item-penknife-eye .tree       { position:absolute; bottom:20%; left:10%; width:20px; height:80px; background: linear-gradient(180deg, #1a1208 0%, #0e0a04 100%); border-radius: 4px; transform:rotate(-5deg); transform-origin: bottom center; animation: pen-tree 8s ease-in-out infinite; }
.scn-item-penknife-eye .sparks     { position:absolute; top:30%; left:40%; width:160px; height:120px; background: radial-gradient(circle at 30% 40%, #ffa040 0%, transparent 50%), radial-gradient(circle at 70% 60%, #ff8020 0%, transparent 50%); filter: blur(3px); animation: pen-sparks 3s ease-in-out infinite alternate; }
@keyframes pen-sky          { 0% { opacity:.6 } 50% { opacity:.8 } 100% { opacity:.5 } }
@keyframes pen-house        { 0%,100% { transform: skewX(-2deg) scaleY(1) } 50% { transform: skewX(-1.5deg) scaleY(1.05) } }
@keyframes pen-flame-core   { 0% { transform:translateX(-50%) scaleY(1) scaleX(1) } 25% { transform:translateX(-50%) scaleY(1.1) scaleX(.9) } 75% { transform:translateX(-50%) scaleY(.9) scaleX(1.1) } 100% { transform:translateX(-50%) scaleY(1) scaleX(1) } }
@keyframes pen-flame-outer  { 0% { transform: scale(1) } 50% { transform: scale(1.12) } 100% { transform: scale(1) } }
@keyframes pen-smoke        { 0% { transform: translateY(0) scaleX(1) } 50% { transform: translateY(-12px) scaleX(1.3) } 100% { transform: translateY(0) scaleX(1) } }
@keyframes pen-tree         { 0% { transform: rotate(-5deg) } 25% { transform: rotate(-3deg) } 50% { transform: rotate(-6deg) } 75% { transform: rotate(-4deg) } 100% { transform: rotate(-5deg) } }
@keyframes pen-sparks       { 0% { opacity:.7; transform: translateY(0) } 50% { opacity:1; transform: translateY(-4px) rotate(5deg) } 100% { opacity:.8; transform: translateY(0) rotate(0deg) } }

/* item-graven-cat-image */
.scn-item-graven-cat-image {
  background: linear-gradient(180deg, #0a0a14 0%, #12121e 50%, #1a1a28 100%),
              radial-gradient(ellipse at 50% 70%, #1e1e34 0%, transparent 60%);
}
.scn-item-graven-cat-image .bg        { position:absolute; inset:0; background: radial-gradient(ellipse at 50% 50%, #14142a 0%, #0a0a18 80%); animation: gra-bg 15s ease-in-out infinite alternate; }
.scn-item-graven-cat-image .barrel    { position:absolute; bottom:10%; left:50%; width:80px; height:60px; background: linear-gradient(180deg, #2a1a0a 0%, #1a1008 100%); border-radius: 40% 40% 30% 30% / 50% 50% 30% 30%; transform:translateX(-50%) perspective(80px) rotateX(15deg); box-shadow: inset 0 -6px 10px rgba(0,0,0,.5), 0 4px 8px rgba(0,0,0,.4); }
.scn-item-graven-cat-image .cat-body  { position:absolute; bottom:22%; left:46%; width:32px; height:28px; background: linear-gradient(180deg, #0c0c16 0%, #04040a 100%); border-radius: 50% 50% 45% 45% / 55% 55% 45% 45%; transform: rotate(-3deg); animation: gra-body 3.2s ease-in-out infinite; }
.scn-item-graven-cat-image .cat-head  { position:absolute; bottom:33%; left:46%; width:18px; height:16px; background: linear-gradient(180deg, #0c0c16 0%, #04040a 100%); border-radius: 50% 50% 45% 45% / 50% 50% 40% 40%; transform: rotate(-5deg); animation: gra-head 3.6s ease-in-out infinite; }
.scn-item-graven-cat-image .splotch   { position:absolute; bottom:29%; left:52%; width:8px; height:6px; background: linear-gradient(180deg, #b8b8b0 0%, #909090 100%); border-radius: 50%; transform: rotate(10deg); animation: gra-splotch 4s ease-in-out infinite; }
.scn-item-graven-cat-image .eye-left  { position:absolute; bottom:34%; left:47.5%; width:5px; height:7px; background: radial-gradient(circle, #f0e060 0%, #c0a030 70%); border-radius: 50%; filter: blur(1px); animation: gra-eye 1.6s ease-in-out infinite alternate; }
.scn-item-graven-cat-image .eye-right { position:absolute; bottom:34%; left:50.5%; width:5px; height:7px; background: radial-gradient(circle, #f0e060 0%, #c0a030 70%); border-radius: 50%; filter: blur(1px); animation: gra-eye 1.6s ease-in-out infinite alternate; animation-delay: -0.8s; }
.scn-item-graven-cat-image .shadow-cat{ position:absolute; bottom:15%; left:44%; width:40px; height:10px; background: rgba(0,0,0,.5); border-radius: 50%; filter: blur(6px); transform: rotate(2deg); animation: gra-shadow 2.8s ease-in-out infinite alternate; }
.scn-item-graven-cat-image .wall-grain{ position:absolute; top:0; left:0; right:0; bottom:30%; background: repeating-linear-gradient(90deg, transparent 0px, rgba(255,255,255,.02) 2px, transparent 4px); background-size: 4px 100%; opacity:.3; animation: gra-grain 30s linear infinite; }
@keyframes gra-bg     { 0% { opacity:.7 } 50% { opacity:.9 } 100% { opacity:.75 } }
@keyframes gra-body   { 0% { transform: rotate(-3deg) translateY(0) } 25% { transform: rotate(-1deg) translateY(-1px) } 50% { transform: rotate(0deg) translateY(0) } 75% { transform: rotate(-2deg) translateY(-1px) } 100% { transform: rotate(-3deg) translateY(0) } }
@keyframes gra-head   { 0% { transform: rotate(-5deg) } 25% { transform: rotate(-3deg) } 50% { transform: rotate(-4deg) } 75% { transform: rotate(-6deg) } 100% { transform: rotate(-5deg) } }
@keyframes gra-splotch{ 0%,100% { transform: rotate(10deg) scaleX(1) } 50% { transform: rotate(8deg) scaleX(1.2) } }
@keyframes gra-eye    { 0% { opacity:.7; transform:scaleY(1) } 50% { opacity:1; transform:scaleY(1.3) } 100% { opacity:.8; transform:scaleY(1) } }
@keyframes gra-shadow { 0% { transform: rotate(2deg) scaleX(1) } 50% { transform: rotate(1deg) scaleX(1.15) } 100% { transform: rotate(2deg) scaleX(1) } }
@keyframes gra-grain  { 0% { background-position:0 0 } 100% { background-position:100px 0 } }
/* end per-scene blocks */
