/* Finite public action scenes. The controller owns their readable hold time. */
.action-scene {
  --scene-gold: #e4c88b;
  --scene-accent: #a5c4a2;
  --scene-glow: #829b68;
  --scene-shadow: #0c171a;
  --scene-paper: #fbefd1;
  position: relative;
  isolation: isolate;
  width: 100%; height: 100%; min-width: 0; min-height: 0;
  container-type: size; container-name: action-theatre;
  display: grid; grid-template-rows: auto minmax(0, 1fr) auto;
  padding: 15px 24px 11px;
  overflow: hidden;
  border-radius: inherit;
  color: var(--scene-paper);
  font-family: var(--sans, system-ui, sans-serif);
  background: #172c2c;
  pointer-events: none;
  text-align: center;
}
.action-scene[data-action="assassinate"] { --scene-accent: #e2a292; --scene-glow: #85494d; background: #2b222b; }
.action-scene[data-action="coup"] { --scene-accent: #f1c772; --scene-glow: #a1783f; background: #2e2b24; }
.action-scene[data-action="steal"] { --scene-accent: #a3d0d6; --scene-glow: #3c7d8a; background: #1b3038; }
.action-scene[data-action="exchange"] { --scene-accent: #d2c4a4; --scene-glow: #678274; background: #253331; }
.action-scene[data-mode="block"],.action-scene[data-mode="blocked"] { --scene-accent: #dec5e6; --scene-glow: #916aa0; background: #30263d; }
.action-scene[data-mode="bluff"],.action-scene[data-mode="loss"],.action-scene[data-mode="cancelled"] { --scene-accent: #edb194; --scene-glow: #ad5b4d; background: #382929; }
.action-scene[data-mode="proof"] { --scene-accent: #d2e2ae; --scene-glow: #829463; background: #2a3830; }
.action-scene[data-scene-theme="neon"] { --scene-paper: #e4faff; --scene-gold: #bfd2f0; background: #172030; }
.action-scene[data-scene-theme="neon"] .scene-backdrop { background: radial-gradient(ellipse at 50% 100%,color-mix(in srgb,var(--scene-glow) 48%,transparent),transparent 68%), repeating-linear-gradient(0deg,transparent 0 5px,#131a290c 5px 6px); }
.action-scene[data-scene-theme="woodland"] { --scene-paper: #f1efce; --scene-gold: #d5c59d; }
.scene-backdrop { position: absolute; inset: 0; z-index: -1; overflow: hidden; background: radial-gradient(ellipse at 50% 100%,color-mix(in srgb,var(--scene-glow) 48%,transparent),transparent 70%),repeating-linear-gradient(90deg,transparent 0 77px,#f2e1ac03 77px 78px); }
.scene-backdrop::before,.scene-backdrop::after { content: ''; position: absolute; width: 29%; top: 0; bottom: 0; background: linear-gradient(90deg,#09161b50,transparent); }
.scene-backdrop::before { left: 0; }
.scene-backdrop::after { right: 0; transform: rotate(180deg); }
.scene-arch { position: absolute; left: 50%; bottom: -115px; width: min(74%,570px); height: 370px; transform: translateX(-50%); border: 1px solid #e0d1a21c; border-radius: 50% 50% 0 0; box-shadow: 0 0 0 9px #12202640,0 0 0 10px #e0d1a213,0 0 0 28px #12202620,0 0 0 29px #e0d1a20c; }
.scene-floor { position: absolute; left: -20%; right: -20%; height: 54%; bottom: -30%; border-radius: 50%; border: 1px solid #d9c59930; box-shadow: 0 -8px 0 #cfbf9820,0 -10px 0 #121c2822,0 -29px 0 #a9b07a09; }
.scene-dust { position: absolute; width: 4px; height: 4px; background: var(--scene-accent); border-radius: 50%; opacity: .3; box-shadow: 90px 70px 0 -1px var(--scene-accent),-85px 99px 0 -1px var(--scene-accent),25px 156px 0 -1px var(--scene-accent); animation: scene-dust-rise 1200ms ease-out both; }
.scene-dust-one { left: 32%; top: 13%; }
.scene-dust-two { right: 25%; top: 21%; animation-delay: 80ms; }
.scene-copy { position: relative; z-index: 2; min-width: 0; }
.scene-eyebrow { display: flex; justify-content: center; align-items: center; flex-wrap: wrap; gap: 5px 9px; color: var(--scene-accent); font: 650 9px/1.35 var(--sans,system-ui,sans-serif); letter-spacing: .14em; text-transform: uppercase; }
.scene-eyebrow i { width: 3px; height: 3px; flex: 0 0 3px; border-radius: 50%; background: currentColor; }
.action-scene .scene-headline { margin: 5px auto 4px; max-width: 740px; color: var(--scene-paper); font: 400 clamp(21px,2.3vw,30px)/1.12 var(--serif,Georgia,serif); letter-spacing: -.015em; overflow-wrap: anywhere; }
.action-scene .scene-detail { margin: 0 auto; max-width: 720px; color: #dacfbba8; font: 400 11px/1.45 var(--sans,system-ui,sans-serif); overflow-wrap: anywhere; }
.scene-theatre { position: relative; display: grid; grid-template-columns: minmax(72px,125px) minmax(0,370px) minmax(72px,125px); justify-content: center; align-items: center; gap: clamp(5px,3vw,30px); width: 100%; min-width: 0; min-height: 0; padding-top: 4px; }
.scene-cast { display: flex; flex-direction: column; align-items: center; justify-content: center; min-width: 0; min-height: 0; }
.scene-portrait { position: relative; width: clamp(62px,8vw,98px); height: clamp(77px,9.8vw,120px); min-height: 0; border: 1px solid #d7c79c72; border-radius: 36px 36px 5px 5px; background: linear-gradient(160deg,#7a8b7250,#253b3b); box-shadow: 0 5px 0 #101e2355,0 10px 21px #080d1c30,inset 0 0 0 4px #19212a; overflow: hidden; transform: translateZ(0); animation: scene-portrait-arrive 550ms cubic-bezier(.2,.8,.2,1) both; }
.scene-portrait::after { content: ''; position: absolute; inset: 5px; border: 1px solid #dbc48d40; border-radius: 31px 31px 2px 2px; }
.scene-portrait img { width: 100%; height: 100%; display: block; object-fit: cover; object-position: center 28%; filter: saturate(.78); }
.scene-portrait-role { position: absolute; z-index: 1; bottom: 0; left: 0; right: 0; padding: 15px 3px 6px; color: #ffedc9; background: linear-gradient(transparent,#162024ee 50%); font: 400 16px/1 var(--serif,Georgia,serif); }
.scene-player-emblem { display: grid; place-items: center; width: 100%; height: 100%; }
.scene-player-emblem .scene-motif { width: 250%; max-width: none; height: 100%; opacity: .7; }
.scene-evidence { display: block; color: var(--scene-accent); font: 650 8px/1.3 var(--sans,system-ui,sans-serif); letter-spacing: .12em; margin: 8px 0 3px; }
.scene-player-name { display: block; max-width: 100%; color: var(--scene-paper); font: 600 11px/1.3 var(--sans,system-ui,sans-serif); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.scene-cast-right .scene-portrait { width: 73px; height: 92px; border-color: #ddc5933b; background: linear-gradient(160deg,#647e652a,#1e2e3225); box-shadow: inset 0 0 0 4px #26313b55,0 9px 15px #08162420; animation-delay: 60ms; }
.scene-cast-right .scene-evidence { opacity: .75; }
.scene-motion { position: relative; align-self: stretch; min-width: 0; min-height: 0; display: grid; place-items: center; }
.scene-motif { display: block; width: 100%; height: 100%; max-height: 180px; overflow: visible; filter: drop-shadow(0 7px 8px #07121738); }
.scene-footnote { position: relative; z-index: 2; min-width: 0; display: flex; align-items: center; justify-content: center; gap: 9px; padding-top: 5px; }
.scene-evidence-chip { display: block; padding: 4px 10px; border: 1px solid color-mix(in srgb,var(--scene-accent) 23%,transparent); border-radius: 20px; color: var(--scene-accent); background: #111c231f; font: 600 8px/1.2 var(--sans,system-ui,sans-serif); letter-spacing: .07em; }
.scene-outcome-mark { color: var(--scene-accent); font: 600 15px/1 var(--sans,system-ui,sans-serif); }
.scene-crest { fill: #557466; stroke: #c2c899; stroke-width: 1.8; }
.scene-crest > path:nth-child(2) { fill: #2b4c45; stroke: #829b78; stroke-width: 1; }
.scene-crest > g { fill: #aaae73; stroke: #e0cb92; }
.scene-coin-route { fill: none; stroke: #d8c094; stroke-width: 1; stroke-dasharray: 2 6; opacity: .5; }
.scene-coin { transform-box: fill-box; transform-origin: center; }
.scene-coin-income { animation: scene-income-drop 1050ms cubic-bezier(.2,.65,.4,1) both; }
.scene-coin-landed { animation: scene-income-settle 1150ms ease both; }
.scene-purse { transform-box: fill-box; transform-origin: bottom; animation: scene-purse-receive 1150ms ease both; }
.scene-caravan { transform-box: fill-box; animation: scene-caravan-arrive 1200ms ease-out both; }
.scene-coin-aid { animation: scene-aid-delivery 1000ms var(--coin-delay) ease-out both; }
.scene-portcullis { animation: scene-gate-open 850ms ease-out both; }
.scene-tax-seal { transform-box: fill-box; transform-origin: center; animation: scene-seal-stamp 650ms cubic-bezier(.15,.8,.3,1) both; }
.scene-tax-coin { animation: scene-tax-arrive 870ms var(--coin-delay) cubic-bezier(.1,.8,.3,1) both; }
.scene-stolen-coin { animation: scene-coin-stolen 1040ms var(--coin-delay) ease-in-out both; }
.scene-steal-victim { opacity: .6; }
.scene-dagger { transform-box: fill-box; transform-origin: center; }
.scene-trajectory { stroke: #d9c2a8; stroke-width: 1; stroke-dasharray: 3 8; opacity: .35; }
.scene-dagger-poised { transform: translateX(-20px); animation: scene-dagger-ready 950ms cubic-bezier(.15,.8,.3,1) both; }
.scene-dagger-hit { transform: translateX(36px); animation: scene-dagger-strike 1050ms cubic-bezier(.2,.8,.3,1) both; }
.scene-dagger-blocked { transform: translate(-25px,16px) rotate(-22deg); animation: scene-dagger-deflect 1100ms cubic-bezier(.2,.7,.3,1) both; }
.scene-dagger-glint { opacity: .7; transform-box: fill-box; transform-origin: center; animation: scene-glint 1100ms ease both; }
.scene-hit-crest { opacity: .6; transform: rotate(7deg); transform-box: fill-box; transform-origin: bottom; animation: scene-hit-recoil 1150ms ease both; }
.scene-impact { fill: none; stroke: #ffdc9a; stroke-width: 2; opacity: .4; }
.scene-impact > path,.scene-impact > circle { transform-box: fill-box; transform-origin: center; animation: scene-impact-flare 1100ms ease both; }
.scene-shield-arrival { transform-box: fill-box; transform-origin: bottom; animation: scene-shield-raise 650ms cubic-bezier(.2,.8,.3,1) both; }
.scene-fan { filter: drop-shadow(0 0 10px #cb96d143); }
.scene-block-shield { fill: #8d728c; stroke: #e2c5dd; }
.scene-block-shield > path:nth-child(2) { fill: #4b385e; stroke: #b298c1; }
.scene-coin-rebound { transform: translate(-20px,23px); animation: scene-coin-rebound 1100ms var(--coin-delay) ease both; }
.scene-mask { transform-box: fill-box; transform-origin: center; animation: scene-mask-drop 1200ms ease both; }
.scene-mask-crack { stroke-dasharray: 120; stroke-dashoffset: 0; animation: scene-crack-draw 850ms ease both; }
.scene-mask-fragment { transform: translate(8px,12px); opacity: .6; transform-box: fill-box; transform-origin: center; animation: scene-fragments-fall 1150ms ease both; }
.action-scene[data-mode="bluff"] .scene-cast-left .scene-portrait img { filter: saturate(.25) brightness(.65); }
.action-scene[data-mode="bluff"] .scene-cast-left .scene-portrait-crack { position: absolute; z-index: 2; inset: 0; background: #f0b293; opacity: .8; clip-path: polygon(55% 0,48% 29%,63% 46%,46% 61%,54% 100%,41% 62%,58% 46%,44% 30%,51% 0); animation: scene-portrait-crack 800ms ease both; }
.scene-challenge { transform-box: fill-box; transform-origin: center 35%; animation: scene-scales-tip 1200ms ease both; }
.scene-proof-crest { transform-box: fill-box; transform-origin: center; animation: scene-proof-rise 950ms cubic-bezier(.2,.8,.3,1) both; }
.scene-proof-crest > g { opacity: .2; }
.scene-proof-check { stroke-dasharray: 55; stroke-dashoffset: 0; animation: scene-proof-draw 1100ms ease both; }
.scene-covered-card { transform-box: fill-box; transform-origin: center; }
.scene-card-0 { animation: scene-card-left 1200ms ease both; }
.scene-card-1 { animation: scene-card-centre 1200ms ease both; }
.scene-card-2 { animation: scene-card-right 1200ms ease both; }
.scene-exchange-orbit { stroke-dasharray: 260; stroke-dashoffset: 0; animation: scene-orbit-draw 1200ms ease both; }
.scene-crosshair { fill: none; stroke: #efc170; stroke-width: 1.8; }
.scene-crosshair circle { transform-box: fill-box; transform-origin: center; animation: scene-target-lock 850ms cubic-bezier(.2,.8,.3,1) both; }
.scene-coup-bolt { stroke-dasharray: 180; stroke-dashoffset: 0; animation: scene-coup-fire 1000ms ease both; }
.scene-miss-arc { stroke-dasharray: 100; stroke-dashoffset: 0; animation: scene-miss-flight 1200ms ease both; }
.action-scene[data-mode="miss"] .scene-crosshair { opacity: .4; }
.action-scene[data-mode="miss"] .scene-coup-bolt { opacity: .3; }
.action-scene[data-mode="loss"] .scene-cast-left .scene-portrait { border-color: #e2b187; transform: rotate(-4deg); animation: scene-loss-reveal 1200ms cubic-bezier(.2,.8,.3,1) both; }
.action-scene[data-mode="loss"] .scene-cast-left .scene-portrait img { filter: saturate(.5); }
.scene-lost-crest { opacity: .55; transform: translateY(7px) rotate(8deg); transform-box: fill-box; transform-origin: bottom; animation: scene-crest-fall 1200ms ease both; }
.scene-loss-split { stroke-dasharray: 125; stroke-dashoffset: 0; animation: scene-crack-draw 1100ms ease both; }
.scene-cancel-mark { fill: none; stroke: #d5b49b; stroke-width: 5; }
.scene-cancel-mark > path { stroke-dasharray: 80; animation: scene-proof-draw 800ms ease both; }
.action-scene[data-eliminated="true"] .scene-cast-right .scene-portrait { opacity: .45; filter: grayscale(1); }

@keyframes scene-dust-rise { from { transform: translateY(18px); opacity: 0; } to { transform: translateY(0); opacity: .3; } }
@keyframes scene-portrait-arrive { from { opacity: 0; transform: translateY(10px) rotate(-3deg); } to { opacity: 1; transform: translateY(0) rotate(0); } }
@keyframes scene-income-drop { 0% { transform: translate(-40px,-20px) scale(.65) rotate(-30deg); opacity: 0; } 25% { opacity: 1; } 72% { transform: translate(55px,2px) rotate(135deg); opacity: 1; } 100% { transform: translate(117px,60px) scale(.65) rotate(180deg); opacity: 0; } }
@keyframes scene-income-settle { 0%,55% { opacity: 0; transform: translateY(-30px) scale(.8); } 85% { opacity: 1; transform: translateY(5px) scale(1.1,.8); } 100% { opacity: 1; transform: translateY(0) scale(1); } }
@keyframes scene-purse-receive { 0%,70%,100% { transform: scale(1); } 83% { transform: scale(1.08,.93); } }
@keyframes scene-caravan-arrive { from { transform: translateX(-31px); opacity: .2; } to { transform: translateX(0); opacity: 1; } }
@keyframes scene-aid-delivery { 0% { opacity: 0; transform: translate(-32px,17px) rotate(-40deg); } 40% { opacity: 1; } 100% { opacity: 1; transform: translate(0,0) rotate(0); } }
@keyframes scene-gate-open { from { transform: translateY(22px); } to { transform: translateY(0); } }
@keyframes scene-seal-stamp { from { opacity: 0; transform: scale(1.7) rotate(-15deg); } 65% { opacity: 1; transform: scale(.92) rotate(2deg); } to { transform: scale(1) rotate(0); } }
@keyframes scene-tax-arrive { from { opacity: 0; transform: translateY(28px) scale(.4) rotate(-50deg); } 70% { transform: translateY(-5px) scale(1.07) rotate(7deg); opacity: 1; } to { opacity: 1; transform: translateY(0) scale(1) rotate(0); } }
@keyframes scene-coin-stolen { 0% { transform: translate(65px,28px) rotate(45deg); opacity: 0; } 20% { opacity: 1; } 65% { transform: translate(-20px,-8px) rotate(-40deg); } 100% { transform: translate(-70px,38px) rotate(-100deg); opacity: .4; } }
@keyframes scene-dagger-ready { from { opacity: 0; transform: translateX(-90px) rotate(-12deg); } to { opacity: 1; transform: translateX(-20px) rotate(0); } }
@keyframes scene-dagger-strike { 0% { transform: translateX(-95px) rotate(-8deg); opacity: 0; } 24% { opacity: 1; transform: translateX(-55px) rotate(0); } 43% { transform: translateX(48px); } 55% { transform: translateX(31px); } 100% { transform: translateX(36px); } }
@keyframes scene-dagger-deflect { 0% { transform: translateX(-95px); opacity: 0; } 25% { opacity: 1; } 45% { transform: translateX(22px); } 65% { transform: translate(-16px,8px) rotate(-12deg); } 100% { transform: translate(-25px,16px) rotate(-22deg); } }
@keyframes scene-hit-recoil { 0%,37% { transform: rotate(0); opacity: 1; } 48% { transform: translateX(9px) rotate(14deg); opacity: .7; } 65% { transform: translateX(0) rotate(4deg); } 100% { transform: rotate(7deg); opacity: .6; } }
@keyframes scene-impact-flare { 0%,36% { opacity: 0; transform: scale(.3); } 49% { opacity: 1; transform: scale(1.3); } 100% { opacity: .4; transform: scale(1); } }
@keyframes scene-glint { 0% { opacity: 0; transform: scale(.1) rotate(-60deg); } 50% { opacity: 1; transform: scale(1.2) rotate(0); } 100% { opacity: .7; transform: scale(1) rotate(15deg); } }
@keyframes scene-shield-raise { from { opacity: 0; transform: scale(.25,.7) translateY(30px); } to { opacity: 1; transform: scale(1) translateY(0); } }
@keyframes scene-coin-rebound { 0% { transform: translate(-45px,0); opacity: 0; } 20% { opacity: 1; } 45% { transform: translate(42px,-8px); } to { transform: translate(-20px,23px); } }
@keyframes scene-mask-drop { 0% { opacity: 0; transform: translateY(-13px) rotate(-5deg); } 30% { opacity: 1; transform: translateY(0) rotate(0); } 45% { transform: translateX(-3px); } 55% { transform: translateX(3px); } 65%,100% { transform: translateX(0); } }
@keyframes scene-crack-draw { 0%,25% { stroke-dashoffset: 125; } 100% { stroke-dashoffset: 0; } }
@keyframes scene-fragments-fall { 0%,35% { opacity: 0; transform: translate(0,0); } 45% { opacity: 1; } 100% { opacity: .6; transform: translate(8px,12px); } }
@keyframes scene-portrait-crack { 0%,35% { opacity: 0; transform: scaleY(0); } 100% { opacity: .8; transform: scaleY(1); } }
@keyframes scene-scales-tip { 0% { opacity: 0; transform: rotate(-8deg); } 35% { opacity: 1; transform: rotate(7deg); } 65% { transform: rotate(-3deg); } 100% { transform: rotate(0); } }
@keyframes scene-proof-rise { 0% { opacity: 0; transform: translateY(25px) scale(.8); } 65% { opacity: 1; transform: translateY(-3px) scale(1.05); } 100% { transform: translateY(0) scale(1); } }
@keyframes scene-proof-draw { 0%,30% { stroke-dashoffset: 80; opacity: 0; } 40% { opacity: 1; } 100% { stroke-dashoffset: 0; } }
@keyframes scene-card-left { 0% { transform: translate(50px,12px) rotate(15deg); opacity: 0; } 45% { opacity: 1; transform: translate(-9px,-6px) rotate(-8deg); } 100% { transform: translate(0,0) rotate(0); } }
@keyframes scene-card-centre { 0% { opacity: 0; transform: scale(.75) translateY(16px); } 60% { opacity: 1; transform: scale(1.08) translateY(-7px); } 100% { transform: scale(1) translateY(0); } }
@keyframes scene-card-right { 0% { transform: translate(-50px,12px) rotate(-15deg); opacity: 0; } 45% { opacity: 1; transform: translate(9px,-6px) rotate(8deg); } 100% { transform: translate(0,0) rotate(0); } }
@keyframes scene-orbit-draw { 0% { stroke-dashoffset: 260; opacity: .2; } 100% { stroke-dashoffset: 0; opacity: 1; } }
@keyframes scene-target-lock { 0% { transform: scale(1.6) rotate(30deg); opacity: 0; } 70% { transform: scale(.9) rotate(-5deg); opacity: 1; } 100% { transform: scale(1) rotate(0); } }
@keyframes scene-coup-fire { 0%,20% { stroke-dashoffset: 180; } 70%,100% { stroke-dashoffset: 0; } }
@keyframes scene-miss-flight { 0%,50% { stroke-dashoffset: 100; opacity: 0; } 65% { opacity: 1; } 100% { stroke-dashoffset: 0; } }
@keyframes scene-loss-reveal { 0% { transform: translateY(-7px) rotateY(70deg); opacity: 0; } 42% { transform: translateY(-3px) rotateY(0) rotate(-1deg); opacity: 1; } 100% { transform: translateY(0) rotate(-4deg); } }
@keyframes scene-crest-fall { 0%,35% { transform: translateY(0) rotate(0); opacity: 1; } 100% { transform: translateY(7px) rotate(8deg); opacity: .55; } }

/* A move has a wind-up; only its confirmed outcome earns the bright payoff. */
.action-scene[data-action="tax"]:is([data-mode="attempt"],[data-mode="success"]) { --scene-accent:#eed28b; --scene-glow:#a08642; }
.action-scene[data-action="foreign_aid"]:is([data-mode="attempt"],[data-mode="success"]) { --scene-accent:#c5d89b; }
.scene-copy { animation:scene-copy-arrive 360ms cubic-bezier(.2,.8,.3,1) both; }
.scene-footnote { animation:scene-copy-arrive 420ms 130ms ease both; }
.scene-light-column { position:absolute; inset:-20% 29% -10%; background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--scene-accent) 10%,transparent),transparent); transform:skewX(-13deg); opacity:.5; animation:scene-light-bloom 1250ms ease-out both; }
.scene-horizon { position:absolute; left:18%; right:18%; bottom:19%; height:1px; background:linear-gradient(90deg,transparent,var(--scene-accent),transparent); opacity:.2; transform-origin:center; animation:scene-horizon-draw 1000ms cubic-bezier(.2,.8,.2,1) both; }
.scene-energy { position:absolute; inset:0; display:grid; place-items:center; pointer-events:none; }
.scene-wave { position:absolute; width:42%; aspect-ratio:1; max-width:160px; border:1px solid var(--scene-accent); border-radius:50%; opacity:0; animation:scene-outcome-wave 1050ms 220ms ease-out both; }
.scene-wave-two { border-style:dashed; animation-delay:360ms; }
.scene-spark { position:absolute; left:50%; top:50%; width:3px; height:3px; background:var(--scene-accent); border-radius:1px; opacity:0; box-shadow:0 0 5px var(--scene-accent); animation:scene-spark-flight 820ms var(--spark-delay) ease-out both; }
.scene-payoff { position:absolute; left:50%; bottom:3%; z-index:2; display:flex; gap:6px; align-items:center; justify-content:center; min-width:64px; height:30px; padding:3px 11px; border:1px solid #f1d59198; border-radius:30px; color:#ffecb6; background:linear-gradient(#665c37,#2f372d); box-shadow:0 3px 12px #0e171988,0 0 16px #e1bd5220; transform:translateX(-50%); animation:scene-payoff-land 620ms 470ms cubic-bezier(.2,.85,.25,1) both; }
.scene-payoff b { font:700 21px/1 var(--serif,Georgia,serif); font-variant-numeric:tabular-nums; }
.scene-payoff i { display:grid; place-items:center; width:16px; height:16px; border:1px solid #f6d88a; border-radius:50%; color:#583e17; background:#e0bb64; box-shadow:inset 0 0 0 2px #b18537; font:600 11px/1 var(--serif,Georgia,serif); }
.action-scene[data-mode="attempt"] .scene-tax-coin,.action-scene[data-mode="attempt"] .scene-coin-aid,.action-scene[data-mode="attempt"] .scene-stolen-coin { animation:scene-coin-promise 500ms var(--coin-delay) ease-out both; }
.action-scene[data-mode="attempt"] .scene-coin-income { opacity:.8; animation:scene-coin-promise 500ms ease-out both; }
.action-scene[data-mode="attempt"] .scene-coin-landed { opacity:0; animation:none; }
.action-scene[data-mode="attempt"] .scene-purse { animation:none; }
.action-scene[data-mode="attempt"] .scene-tax-seal { animation-duration:500ms; }
.action-scene[data-mode="attempt"] .scene-coup-bolt { stroke-dasharray:6 7; opacity:.45; animation:scene-aim-trace 600ms ease-out both; }
.action-scene[data-mode="success"][data-action="tax"] .scene-tax-seal { animation:scene-tax-impact 1000ms cubic-bezier(.2,.8,.2,1) both; }
.action-scene[data-mode="success"] .scene-tax-coin { animation:scene-tax-harvest 1120ms var(--coin-delay) cubic-bezier(.2,.7,.25,1) both; }
.action-scene[data-mode="success"][data-action="exchange"] .scene-covered-card { animation:scene-exchange-return 1000ms ease-in-out both; }
.action-scene[data-mode="success"][data-action="exchange"] .scene-card-0 { --return-x:55px; animation-delay:0ms; }
.action-scene[data-mode="success"][data-action="exchange"] .scene-card-1 { --return-x:0px; animation-delay:90ms; }
.action-scene[data-mode="success"][data-action="exchange"] .scene-card-2 { --return-x:-55px; animation-delay:180ms; }
.action-scene[data-mode="exchange"] .scene-card-1 { filter:drop-shadow(0 0 7px #e0d09860); }
.action-scene[data-mode="block"] .scene-shield-arrival,.action-scene[data-mode="blocked"] .scene-shield-arrival { animation:scene-defender-arrive 720ms cubic-bezier(.15,.8,.25,1) both; }
.action-scene[data-mode="blocked"] .scene-fan { animation:scene-fan-unfurl 650ms cubic-bezier(.2,.8,.2,1) both; transform-box:fill-box; transform-origin:50% 100%; }
.action-scene[data-mode="blocked"] .scene-wave { border-width:2px; }
.action-scene[data-mode="miss"] .scene-crosshair { animation:scene-target-evade 950ms ease-in-out both; }
.action-scene[data-mode="bluff"] .scene-light-column { background:linear-gradient(90deg,transparent,#df927b22,transparent); }
.action-scene[data-mode="challenge"] .scene-challenge { animation:scene-challenge-impact 800ms cubic-bezier(.2,.8,.3,1) both; }

/* A tangible two-sided public card: turn, light sweep, then a readable seal. */
.scene-portrait { perspective:750px; overflow:visible; }
.scene-card-turn { position:absolute; inset:0; display:block; transform-style:preserve-3d; border-radius:inherit; }
.scene-card-face,.scene-card-back { position:absolute; inset:0; display:block; border-radius:inherit; overflow:hidden; backface-visibility:hidden; -webkit-backface-visibility:hidden; }
.scene-card-face { transform:rotateY(0deg); background:#203a35; }
.scene-card-back { display:grid; place-items:center; transform:rotateY(180deg); background:repeating-linear-gradient(45deg,#5273591a 0 2px,transparent 2px 6px),linear-gradient(145deg,#45654c,#1b372e); box-shadow:inset 0 0 0 4px #d6c79480,inset 0 0 0 7px #162e24,inset 0 0 0 8px #d6c79455; }
.scene-card-back i { display:grid; place-items:center; width:48%; height:55%; border:1px solid #cbbc86; color:#e0d19b; font:400 32px/1 var(--serif,Georgia,serif); font-style:normal; }
.scene-card-glint { position:absolute; inset:-15% -100%; z-index:2; pointer-events:none; background:linear-gradient(115deg,transparent 42%,#fff0cd90 48%,#ffffffb0 50%,transparent 57%); opacity:0; }
.scene-evidence-aura { position:absolute; inset:-15%; display:grid; place-items:center; pointer-events:none; }
.scene-evidence-aura i { position:absolute; inset:0; border:1px solid var(--scene-accent); border-radius:45%; opacity:0; animation:scene-evidence-wave 1100ms 430ms ease-out both; }
.scene-evidence-aura i:nth-child(2) { animation-delay:570ms; border-style:dotted; }
.scene-card-seal { position:absolute; z-index:3; top:12%; left:50%; padding:3px 5px; border:2px double #f0bc95; color:#ffe4cd; background:#612f27e8; font:800 8px/1 var(--sans,system-ui,sans-serif); letter-spacing:.13em; border-radius:2px; transform:translateX(-50%) rotate(-9deg); box-shadow:0 2px 8px #15101640; animation:scene-seal-land 340ms 1040ms cubic-bezier(.2,.85,.2,1) both; }
.scene-card-fragments { position:absolute; inset:0; pointer-events:none; }
.scene-card-fragments i { display:none; position:absolute; left:50%; top:45%; width:8px; height:14px; clip-path:polygon(0 0,100% 30%,30% 100%); background:#e6b78f; opacity:0; }
.action-scene[data-mode="loss"] .scene-cast-left .scene-portrait,.action-scene[data-mode="proof"] .scene-cast-left .scene-portrait { animation:scene-evidence-lift 1250ms cubic-bezier(.2,.8,.3,1) both; transform:rotate(0deg); }
.action-scene[data-mode="loss"] .scene-cast-left .scene-card-turn,.action-scene[data-mode="proof"] .scene-cast-left .scene-card-turn { animation:scene-public-turn 690ms cubic-bezier(.35,.05,.3,1) both; }
.action-scene[data-mode="loss"] .scene-cast-left .scene-card-glint,.action-scene[data-mode="proof"] .scene-cast-left .scene-card-glint { animation:scene-card-sweep 680ms 490ms ease-in-out both; }
.action-scene[data-mode="loss"] .scene-cast-left .scene-portrait img { animation:scene-card-fade 1700ms ease both; filter:saturate(.32) brightness(.8); }
.action-scene[data-mode="loss"] .scene-cast-left .scene-portrait-crack { position:absolute; z-index:2; inset:0; clip-path:polygon(55% 0,49% 29%,61% 44%,44% 63%,50% 100%,40% 64%,55% 45%,44% 29%,50% 0); background:#ffdbac; opacity:.8; transform-origin:50% 0; animation:scene-card-fracture 420ms 780ms ease both; }
.action-scene[data-mode="loss"][data-eliminated="true"] .scene-cast-left .scene-portrait { animation:scene-final-card-fall 1950ms cubic-bezier(.2,.8,.3,1) both; }
.action-scene[data-mode="loss"][data-eliminated="true"] .scene-cast-left .scene-card-fragments i { display:block; --fragment-x:-39px; --fragment-y:33px; --fragment-r:-90deg; animation:scene-card-fragment 950ms 950ms ease-out both; }
.action-scene[data-mode="loss"][data-eliminated="true"] .scene-cast-left .scene-card-fragments i:nth-child(2) { --fragment-x:45px; --fragment-y:48px; --fragment-r:120deg; animation-delay:1020ms; }
.action-scene[data-mode="loss"][data-eliminated="true"] .scene-cast-left .scene-card-fragments i:nth-child(3) { --fragment-x:-24px; --fragment-y:64px; --fragment-r:65deg; animation-delay:1100ms; }
.action-scene[data-mode="proof"] .scene-card-seal { background:#345442e8; border-color:#dbe9ac; color:#f2facf; animation-delay:670ms; }
.action-scene[data-mode="proof"] .scene-cast-left .scene-portrait img { filter:saturate(1.03); }
.action-scene[data-mode="proof"] .scene-cast-left .scene-portrait { box-shadow:0 0 0 4px #b3c88120,0 0 28px #bde49230,0 8px 12px #101c2455; }

@keyframes scene-copy-arrive { from { opacity:0; transform:translateY(5px); } to { opacity:1; transform:translateY(0); } }
@keyframes scene-light-bloom { 0% { opacity:0; transform:translateX(-12%) skewX(-13deg); } 38% { opacity:.9; } 100% { opacity:.5; transform:translateX(0) skewX(-13deg); } }
@keyframes scene-horizon-draw { from { opacity:0; transform:scaleX(.1); } to { opacity:.2; transform:scaleX(1); } }
@keyframes scene-outcome-wave { 0% { opacity:0; transform:scale(.18); } 22% { opacity:.6; } 100% { opacity:0; transform:scale(1.65); } }
@keyframes scene-spark-flight { 0% { opacity:0; transform:rotate(var(--spark-angle)) translateX(13px) scale(.5); } 15% { opacity:.85; } 100% { opacity:0; transform:rotate(var(--spark-angle)) translateX(94px) scale(.1); } }
@keyframes scene-payoff-land { 0% { opacity:0; transform:translate(-50%,12px) scale(.55); } 58% { opacity:1; transform:translate(-50%,-3px) scale(1.12); } 100% { opacity:1; transform:translate(-50%,0) scale(1); } }
@keyframes scene-coin-promise { from { opacity:0; transform:translateY(12px) rotate(-30deg) scale(.6); } to { opacity:.8; transform:translateY(0) rotate(0deg) scale(1); } }
@keyframes scene-aim-trace { from { stroke-dashoffset:60; opacity:0; } to { stroke-dashoffset:0; opacity:.45; } }
@keyframes scene-tax-impact { 0% { opacity:0; transform:translateY(-24px) scale(1.35) rotate(-12deg); } 35% { opacity:1; transform:translateY(4px) scale(.93) rotate(1deg); } 51% { transform:translateY(-3px) scale(1.04); } 100% { opacity:1; transform:translateY(0) scale(1) rotate(0deg); } }
@keyframes scene-tax-harvest { 0%,12% { opacity:0; transform:translateY(-20px) scale(.45) rotate(-60deg); } 48% { opacity:1; transform:translateY(-9px) scale(1.15) rotate(10deg); } 70% { transform:translateY(3px) scale(.92); } 100% { opacity:1; transform:translateY(0) scale(1); } }
@keyframes scene-exchange-return { 0% { opacity:.6; transform:translate(0,9px) scale(.9); } 25% { opacity:1; transform:translate(0,-6px) scale(1); } 78% { transform:translate(var(--return-x),0) rotate(0deg) scale(.88); } 100% { opacity:1; transform:translate(var(--return-x),0) scale(.92); } }
@keyframes scene-defender-arrive { 0% { opacity:0; transform:translate(18px,18px) scale(.6); } 56% { opacity:1; transform:translate(-3px,-2px) scale(1.04); } 100% { opacity:1; transform:translate(0,0) scale(1); } }
@keyframes scene-fan-unfurl { from { opacity:.3; transform:scaleX(.15); } 70% { opacity:1; transform:scaleX(1.1); } to { transform:scaleX(1); } }
@keyframes scene-target-evade { 0%,35% { opacity:.65; } 65% { opacity:.2; } 100% { opacity:.4; } }
@keyframes scene-challenge-impact { 0% { opacity:0; transform:scale(1.35) rotate(-9deg); } 37% { opacity:1; transform:scale(.96) rotate(4deg); } 65% { transform:scale(1.02) rotate(-2deg); } to { transform:scale(1) rotate(0deg); } }
@keyframes scene-public-turn { 0%,14% { transform:rotateY(180deg) rotateZ(-4deg); } 100% { transform:rotateY(0deg) rotateZ(0deg); } }
@keyframes scene-evidence-lift { 0% { opacity:0; transform:translateY(12px) scale(.85); } 18% { opacity:1; } 52% { transform:translateY(-4px) scale(1.055); } 100% { opacity:1; transform:translateY(0) scale(1); } }
@keyframes scene-card-sweep { 0% { opacity:0; transform:translateX(-55%); } 24% { opacity:.8; } 100% { opacity:0; transform:translateX(55%); } }
@keyframes scene-seal-land { 0% { opacity:0; transform:translateX(-50%) scale(1.6) rotate(-15deg); } 65% { opacity:1; transform:translateX(-50%) scale(.93) rotate(-7deg); } 100% { opacity:1; transform:translateX(-50%) scale(1) rotate(-9deg); } }
@keyframes scene-card-fade { 0%,45% { filter:saturate(1) brightness(1); } 100% { filter:saturate(.32) brightness(.8); } }
@keyframes scene-card-fracture { from { opacity:0; transform:scaleY(0); } to { opacity:.8; transform:scaleY(1); } }
@keyframes scene-final-card-fall { 0% { opacity:0; transform:translateY(12px) scale(.85); } 17% { opacity:1; } 42% { transform:translateY(-4px) scale(1.05); } 55% { transform:translate(-2px,-1px) rotate(-2deg); } 64% { transform:translate(2px,1px) rotate(2deg); } 100% { opacity:1; transform:translateY(5px) rotate(-5deg) scale(.98); } }
@keyframes scene-card-fragment { 0% { opacity:0; transform:translate(0,0) rotate(0deg); } 14% { opacity:1; } 100% { opacity:0; transform:translate(var(--fragment-x),var(--fragment-y)) rotate(var(--fragment-r)); } }
@keyframes scene-evidence-wave { 0% { opacity:0; transform:scale(.65); } 20% { opacity:.75; } 100% { opacity:0; transform:scale(1.4); } }

/* Revealed cards take the centre of the stage, away from ordinary claim portraits. */
.action-scene[data-mode="loss"] .scene-cast-left,.action-scene[data-mode="proof"] .scene-cast-left { grid-column: 2; grid-row: 1; }
.action-scene[data-mode="loss"] .scene-motion,.action-scene[data-mode="proof"] .scene-motion { grid-column: 1; grid-row: 1; }
.action-scene[data-mode="loss"] .scene-cast-right,.action-scene[data-mode="proof"] .scene-cast-right { grid-column: 3; grid-row: 1; }
.action-scene[data-mode="loss"] .scene-cast-left .scene-portrait,.action-scene[data-mode="proof"] .scene-cast-left .scene-portrait { box-shadow: 0 0 0 4px #ddb88c18,0 0 26px #e9b98c25,0 8px 12px #101c2455; }

/* Size containment follows the actual city panel, including broadcast and phone views. */
@container action-theatre (max-width: 600px) {
  .scene-theatre { grid-template-columns: minmax(51px,81px) minmax(0,270px) minmax(51px,81px); gap: 3px; }
  .scene-portrait { width: 63px; height: 80px; }
  .scene-cast-right .scene-portrait { width: 52px; height: 67px; }
  .action-scene .scene-headline { font-size: 22px; line-height: 1.1; }
  .scene-detail { font-size: 10px; }
  .scene-player-name { font-size: 10px; }
  .scene-evidence { font-size: 7px; letter-spacing: .08em; margin-top: 5px; }
  .scene-portrait-role { font-size: 12px; padding-bottom: 4px; }
  .scene-eyebrow { font-size: 8px; letter-spacing: .1em; }
}
@container action-theatre (max-height: 220px) {
  .scene-portrait { width: 56px; height: 68px; }
  .scene-cast-right .scene-portrait { width: 46px; height: 58px; }
  .scene-motif { max-height: 126px; }
  .scene-portrait-role { font-size: 11px; padding-bottom: 4px; }
  .scene-player-name { font-size: 10px; }
  .scene-evidence { font-size: 7px; margin-top: 4px; }
  .action-scene .scene-headline { font-size: 22px; margin-top: 3px; }
  .scene-detail { font-size: 10px; line-height: 1.3; }
  .scene-footnote { padding-top: 3px; }
  .scene-evidence-chip { font-size: 7px; padding: 3px 8px; }
}
@container action-theatre (max-width: 400px) {
  .scene-theatre { grid-template-columns: 55px minmax(0,1fr) 55px; gap: 0; }
  .scene-portrait { width: 49px; height: 65px; }
  .scene-cast-right .scene-portrait { width: 42px; height: 54px; }
  .scene-headline { font-size: 20px; }
  .scene-eyebrow { font-size: 7px; gap: 4px 6px; }
  .scene-detail { max-width: 290px; font-size: 10px; }
  .scene-evidence { font-size: 6px; letter-spacing: .04em; }
  .scene-player-name { font-size: 9px; }
  .scene-portrait-role { font-size: 9px; }
}
@container action-theatre (max-height: 160px) {
  .scene-copy { text-align: left; padding-right: 126px; align-self: center; }
  .scene-eyebrow { justify-content: flex-start; font-size: 7px; }
  .action-scene .scene-headline { font-size: 20px; max-width: none; }
  .action-scene .scene-detail { font-size: 10px; margin: 0; max-width: none; }
  .scene-theatre { position: absolute; right: 6px; top: 3px; bottom: 23px; width: 130px; grid-template-columns: minmax(0,1fr); }
  .scene-cast { display: none; }
  .scene-motion { height: 100%; }
  .action-scene[data-mode="loss"] .scene-motion,.action-scene[data-mode="proof"] .scene-motion { grid-column: 1; }
  .scene-footnote { justify-content: flex-start; align-self: end; }
}
@container action-theatre (max-height: 100px) {
  .scene-copy { padding-right: 73px; }
  .scene-theatre { width: 90px; right: 0; bottom: 12px; }
  .scene-eyebrow { font-size: 6px; letter-spacing: .06em; }
  .action-scene .scene-headline { font-family: var(--sans,system-ui,sans-serif); font-size: 12px; font-weight: 650; margin: 3px 0; line-height: 1.15; }
  .action-scene .scene-detail { font-size: 9px; line-height: 1.25; }
  .scene-footnote { padding-top: 3px; }
  .scene-evidence-chip { font-size: 6px; padding: 2px 6px; }
  .scene-outcome-mark { font-size: 10px; }
}
[data-compact="true"] .action-scene { padding: 6px 9px; }
[data-compact="true"] .action-scene .scene-copy { text-align: left; padding-right: 73px; align-self: center; }
[data-compact="true"] .action-scene .scene-theatre { position: absolute; right: 0; top: 3px; bottom: 12px; width: 90px; grid-template-columns: minmax(0,1fr); }
[data-compact="true"] .action-scene .scene-cast { display: none; }
[data-compact="true"] .action-scene .scene-eyebrow { justify-content: flex-start; font-size: 6px; letter-spacing: .06em; }
[data-compact="true"] .action-scene .scene-headline { font-family: var(--sans,system-ui,sans-serif); font-size: 12px; font-weight: 650; margin: 3px 0; line-height: 1.15; }
[data-compact="true"] .action-scene .scene-detail { font-size: 9px; line-height: 1.25; margin: 0; }
[data-compact="true"] .action-scene .scene-footnote { justify-content: flex-start; padding-top: 3px; }
[data-compact="true"] .action-scene .scene-evidence-chip { font-size: 6px; padding: 2px 6px; }
[data-compact="true"] .action-scene .scene-outcome-mark { font-size: 10px; }
/* Compact recaps keep the actual public card visible instead of a generic crest. */
@container action-theatre (max-height: 160px) {
  .action-scene:is([data-mode="loss"],[data-mode="proof"]) .scene-cast-left { display:flex; position:absolute; inset:0; grid-column:1; }
  .action-scene:is([data-mode="loss"],[data-mode="proof"]) .scene-cast-left .scene-portrait { width:54px; height:68px; }
  .action-scene:is([data-mode="loss"],[data-mode="proof"]) .scene-cast-left .scene-evidence,
  .action-scene:is([data-mode="loss"],[data-mode="proof"]) .scene-cast-left .scene-player-name,
  .action-scene:is([data-mode="loss"],[data-mode="proof"]) .scene-motion { display:none; }
  .scene-payoff { min-width:45px; height:20px; padding:2px 6px; gap:4px; }
  .scene-payoff b { font-size:14px; }
  .scene-payoff i { width:12px; height:12px; font-size:8px; }
  .scene-card-seal { font-size:6px; padding:2px 3px; }
}
@container action-theatre (max-height: 100px) {
  .action-scene:is([data-mode="loss"],[data-mode="proof"]) .scene-cast-left .scene-portrait { width:38px; height:47px; }
  .action-scene:is([data-mode="loss"],[data-mode="proof"]) .scene-portrait-role { font-size:7px; padding:10px 1px 4px; }
  .scene-card-seal { font-size:5px; letter-spacing:.04em; padding:2px; border-width:1px; }
  .scene-card-back i { font-size:19px; }
  .scene-payoff { min-width:35px; height:17px; padding:2px 4px; gap:3px; bottom:0; }
  .scene-payoff b { font-size:11px; }
  .scene-payoff i { width:10px; height:10px; font-size:7px; }
}
[data-compact="true"] .action-scene:is([data-mode="loss"],[data-mode="proof"]) .scene-cast-left { display:flex; position:absolute; inset:0; grid-column:1; }
[data-compact="true"] .action-scene:is([data-mode="loss"],[data-mode="proof"]) .scene-cast-left .scene-portrait { width:38px; height:47px; }
[data-compact="true"] .action-scene:is([data-mode="loss"],[data-mode="proof"]) .scene-cast-left .scene-evidence,
[data-compact="true"] .action-scene:is([data-mode="loss"],[data-mode="proof"]) .scene-cast-left .scene-player-name,
[data-compact="true"] .action-scene:is([data-mode="loss"],[data-mode="proof"]) .scene-motion { display:none; }
[data-compact="true"] .action-scene:is([data-mode="loss"],[data-mode="proof"]) .scene-portrait-role { font-size:7px; padding:10px 1px 4px; }
[data-compact="true"] .action-scene .scene-card-seal { font-size:5px; letter-spacing:.04em; padding:2px; border-width:1px; }
[data-compact="true"] .action-scene .scene-card-back i { font-size:19px; }
@media (max-width: 600px) { .action-scene { padding: 9px 11px 8px; } }
@media (prefers-reduced-motion: reduce) {
  .action-scene *, .action-scene *::before, .action-scene *::after { animation: none !important; transition: none !important; }
  .scene-coin-income { opacity: .65; }
  .scene-coin-landed { opacity: 1; }
}
html[data-motion="reduced"] .action-scene *,html[data-motion="reduced"] .action-scene *::before,html[data-motion="reduced"] .action-scene *::after { animation: none !important; transition: none !important; }
html[data-motion="reduced"] .scene-coin-income { opacity: .65; }
html[data-motion="reduced"] .scene-coin-landed { opacity: 1; }
.action-scene[data-resumed="true"] *,.action-scene[data-resumed="true"] *::before,.action-scene[data-resumed="true"] *::after { animation:none!important; transition:none!important; }
/* Evidence deserves a larger central portrait when the panel has the room. */
@container action-theatre (min-height: 221px) {
  .action-scene[data-mode="loss"] .scene-cast-left .scene-portrait,
  .action-scene[data-mode="proof"] .scene-cast-left .scene-portrait { width: 92px; height: 112px; }
  .action-scene[data-mode="loss"] .scene-cast-left .scene-portrait-role,
  .action-scene[data-mode="proof"] .scene-cast-left .scene-portrait-role { font-size: 13px; }
}
@container action-theatre (min-height: 260px) {
  .action-scene[data-mode="loss"] .scene-cast-left .scene-portrait,
  .action-scene[data-mode="proof"] .scene-cast-left .scene-portrait { width: 107px; height: 132px; }
  .action-scene[data-mode="loss"] .scene-cast-left .scene-portrait-role,
  .action-scene[data-mode="proof"] .scene-cast-left .scene-portrait-role { font-size: 15px; }
}
@container action-theatre (max-width: 600px) and (min-width: 401px) {
  .scene-portrait-role { font-size: 10px; }
}
