.scene-background-video{
  position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none;
  opacity:0;background:#07030c;transition:opacity .22s linear
}

/* The base game's painted BET well needs visible controls at its ends. The
   legacy transparent targets sat over the neighbouring WIN area on desktop. */
@media(min-width:901px) and (orientation:landscape){
  .cabinet[data-video-ready="true"][data-video-scene="base"] .controls>.bet-label button#bet-down,
  .cabinet[data-video-ready="true"][data-video-scene="base"] .controls>.bet-label button#bet-up{
    top:18%;width:16%;height:64%;min-width:24px;min-height:24px;
    opacity:1;pointer-events:auto;background-size:100% 100%!important;
    background-position:center!important;background-repeat:no-repeat!important;
  }
  .cabinet[data-video-ready="true"][data-video-scene="base"] .controls>.bet-label button#bet-down{left:-15%;background-image:url('../../assets/cabinet/bet-minus-v1.webp')!important}
  .cabinet[data-video-ready="true"][data-video-scene="base"] .controls>.bet-label button#bet-up{left:auto;right:-7%;background-image:url('../../assets/cabinet/bet-plus-v1.webp')!important}   /* was -15%: the plus sat 15 px right of the gap centre and covered the WIN plate edge (measured 2026-10-07) */
}
.scene-background-video video{display:block;width:100%;height:100%;object-fit:fill}
.cabinet[data-video-ready="true"]>.scene-background-video{opacity:1}

.video-jackpot-values{display:none}

/* The approved movies are complete 16:9 / 9:16 cabinets. Once playback is
   genuinely ready, every live layer uses the same normalized canvas. */
.cabinet[data-video-ready="true"]{
  position:fixed;left:50%;top:50%;translate:-50% -50%;display:block;
  width:min(100vw,calc(100dvh * 16 / 9));height:min(100dvh,calc(100vw * 9 / 16));
  min-height:0;margin:0;padding:0;overflow:hidden;isolation:isolate;background:#07030c
}
.cabinet[data-video-ready="true"]>.topper-stage,
.cabinet[data-video-ready="true"]>.lower-screen{
  position:absolute;inset:0;width:100%;height:100%;margin:0;aspect-ratio:auto;
  background:none!important;filter:none;border-radius:0
}
.cabinet[data-video-ready="true"]>.topper-stage{z-index:4;overflow:visible;pointer-events:none}
.cabinet[data-video-ready="true"]>.lower-screen{z-index:3;overflow:visible}
.cabinet[data-video-ready="true"]>.lower-screen::before{display:none}
.cabinet[data-video-ready="true"]>.lower-screen>.main-game-logo{display:none}
.cabinet[data-video-ready="true"]>.topper-stage .stage-progress{display:none}
.cabinet[data-video-ready="true"]>.topper-stage .chomper{
  top:1%;bottom:auto;height:27%;aspect-ratio:340/446;translate:-50% 0;filter:none
}
.cabinet[data-video-ready="true"]>.topper-stage .chomper.red{--stage-x:31.3%}
.cabinet[data-video-ready="true"]>.topper-stage .chomper.blue{--stage-x:49.4%;top:.5%;height:26.5%}
.cabinet[data-video-ready="true"]>.topper-stage .chomper.green{--stage-x:69.2%;aspect-ratio:340/446}
.cabinet[data-video-ready="true"]>.topper-stage .chomper em{display:none}
/* Power tags: each Chomper always shows what its full meter gives on its plate.
   Dark plaque, gold lettering and a coloured rim read on every plate; when the meter is full the plaque turns gold
   with dark lettering and pulses. A painted version (CODEX brief) can replace this later without changing the markup. */
.cabinet[data-video-ready="true"]>.topper-stage .chomper em{display:flex;align-items:center;justify-content:center;position:absolute;z-index:7;left:50%;right:auto;bottom:4%;translate:-50% 0;
  min-width:72%;min-height:1.55em;padding:.2em .45em .16em;border-radius:999px;white-space:nowrap;letter-spacing:.025em;font-style:normal;
  font:900 clamp(9px,.9vw,15px)/1.1 CarnivalCoin,Georgia,serif;color:#ffe9a6;text-shadow:0 1px 0 #000;
  background:linear-gradient(#4a1219,#1a060b);border:1.5px solid var(--stage-color,#ffd36b);
  box-shadow:0 0 8px 1px color-mix(in srgb,var(--stage-color,#ffd36b) 70%,transparent),inset 0 1px 0 #ffffff33;pointer-events:none}
.cabinet[data-video-ready="true"]>.topper-stage .chomper[data-armed="true"] em{color:#4a1305;text-shadow:0 1px 0 #fff8;
  background:linear-gradient(#fff0a0,#f0b429);border-color:#fff4c2;
  box-shadow:0 0 14px 3px var(--stage-color,#ffd36b),inset 0 1px 0 #fff;animation:armed-badge 1s ease-in-out infinite alternate}
@media(max-width:900px) and (orientation:portrait){
  /* The phone movie's jackpot plaques start under the characters' feet. Keep each
     power name on its stand, above that row, so MINI/MINOR/MAJOR/GRAND stay readable. */
  .cabinet[data-video-ready="true"]>.topper-stage .chomper em{
    top:78%;bottom:auto;min-width:0;max-width:100%;
    font-size:clamp(7px,2.05vw,10px);padding:.12em .32em .08em
  }
}
@media(prefers-reduced-motion:reduce){.cabinet[data-video-ready="true"]>.topper-stage .chomper[data-armed="true"] em{animation:none}}

/* On the wide movie the jackpot plaques occupy the upper band. Keep the
   live identity poses large, but plant their hats below that band so the
   MINI/MINOR/MAJOR/GRAND values stay readable. Portrait has its own tighter
   placement below. */
@media(orientation:landscape){
  /* Coordinates measured from the approved 1916 x 1080 movie. The live
     matrix and characters must land on its painted opening and stage wells. */
  .cabinet[data-video-ready="true"] .lower-screen{
    --window-x:17.6%;--window-y:39.3%;--window-w:64%;--window-h:39.5%
  }
  .cabinet[data-video-ready="true"]>.topper-stage .chomper.red{--rig-body-scale:1}
  .cabinet[data-video-ready="true"]>.topper-stage .chomper.blue{--rig-body-scale:.94}
  .cabinet[data-video-ready="true"]>.topper-stage .chomper.green{--rig-body-scale:1.08}
}

.cabinet[data-video-ready="true"] .lower-screen{
  --window-x:17.6%;--window-y:39.3%;--window-w:64%;--window-h:39.5%;
  --message-x:35.8%;--message-top:79.55%;--message-w:28.8%;--message-h:5.15%;
  /* The source movie's ring is narrower than the old square hit box. Keep
     the live target centered on the painted ring and wholly inside the
     normalized 16:9 cabinet. */
  /* Measured on the current base movie (v3): the painted SPIN ring spans 70%-80.6% wide, centre 89.1% high. */
  --spin-right:19.4%;--spin-top:79.7%;--spin-width:10.6%
}
.cabinet[data-video-ready="true"] .lower-screen>.reel-stage{
  left:var(--window-x);top:var(--window-y);width:var(--window-w);height:var(--window-h)
}
.cabinet[data-video-ready="true"] .reels,
.cabinet[data-video-ready="true"] .reel{gap:0}
.cabinet[data-video-ready="true"] .symbol,
.cabinet[data-video-ready="true"] .art-symbol{border-radius:0;background:transparent}
.cabinet[data-video-ready="true"] .lower-screen>.status{
  left:var(--message-x);top:var(--message-top);width:var(--message-w);height:var(--message-h);
  /* The message plaque carries wins and the SCATTER suspense text; measured to fit the longest line. */
  font-size:clamp(11px,1.9dvh,22px);letter-spacing:.025em
}
.cabinet[data-video-ready="true"] .controls{z-index:12}
.cabinet[data-video-ready="true"] .controls>label{top:87.3%;height:7.4%;padding:0;align-items:center}
.cabinet[data-video-ready="true"] .controls>.balance-label{left:16.8%;width:14.5%}
.cabinet[data-video-ready="true"] .controls>.bet-label{left:33.7%;width:15.8%}
.cabinet[data-video-ready="true"] .controls>.win-label{left:50.8%;width:16.8%}
.cabinet[data-video-ready="true"] .controls output{
  max-width:100%;font-size:clamp(10px,2.05dvh,22px);line-height:1;white-space:nowrap;
  font-variant-numeric:tabular-nums
}
.cabinet[data-video-ready="true"] .controls>.bet-label button#bet-down,
.cabinet[data-video-ready="true"] .controls>.bet-label button#bet-up{
  top:0;width:52%;height:100%;min-width:0;min-height:0;transform:none;
  background:none!important;opacity:0
}
.cabinet[data-video-ready="true"] .controls>.bet-label button#bet-down{left:123%}
.cabinet[data-video-ready="true"] .controls>.bet-label button#bet-up{left:184%}
.cabinet[data-video-ready="true"] .controls>.spin{
  right:var(--spin-right);top:var(--spin-top);width:var(--spin-width);height:auto;aspect-ratio:1;
  min-width:0;min-height:0;color:transparent!important;text-shadow:none
}
.cabinet[data-video-ready="true"] .controls>.bonus-demo{
  left:2%;right:auto;top:84.6%;width:11.4%;height:12.2%;aspect-ratio:auto;
  min-width:0;min-height:0;color:transparent!important
}
/* The painted BUY BONUS, AUTO and gear sit at the same place in the base and bonus movies. The old targets
   (tuned for an earlier movie) covered the BALANCE well and the gear instead. */
.cabinet[data-video-ready="true"] .controls>.auto-button{right:auto;left:82%;top:86%;width:10.2%;height:8%;aspect-ratio:auto;min-width:0;min-height:0}
.cabinet[data-video-ready="true"] .controls>.how-to-button{display:none}
.cabinet[data-video-ready="true"]>footer{
  position:absolute;inset:0;z-index:30;width:100%;height:100%;padding:0;
  overflow:visible;pointer-events:none;color:transparent;font-size:0
}
/* Desktop: the painted gear is the sound control (bonus review D10). Muted shows a red strike. */
.cabinet[data-video-ready="true"]>footer #sound-toggle{
  display:block;position:absolute;left:93.5%;top:86.4%;width:4.4%;height:auto;aspect-ratio:1;padding:0;
  border-radius:50%;pointer-events:auto;color:transparent;font-size:0;background:transparent;cursor:pointer
}
.cabinet[data-video-ready="true"]>footer #sound-toggle:focus-visible{outline:2px solid #fff1b3;outline-offset:2px}
.cabinet[data-video-ready="true"]>footer #sound-toggle[aria-pressed="false"]::after{
  content:"";position:absolute;left:14%;top:50%;width:72%;height:3px;
  border-radius:2px;box-shadow:none;background:#ef342c;transform:rotate(-45deg);pointer-events:none
}

/* Hold & Spin is a full-screen takeover. The live Chompers belong to the base
   game and disappear here so they never cover the baked feature heading. */
.cabinet[data-video-ready="true"][data-video-scene="feature"]>.topper-stage{display:none}
.cabinet[data-video-ready="true"][data-video-scene="feature"] .lower-screen{
  --window-x:17.95%;--window-y:38.9%;--window-w:63.4%;--window-h:37.35%;
  --message-x:34%;--message-top:77.1%;--message-w:32%;--message-h:4.5%;
  --spin-right:19.4%;--spin-top:79.7%;--spin-width:10.6%;--spin-height:18.8%
}
/* Values remain live in the bonus. These are its painted wells, not the base
   movie's wider control deck. Only desktop needs live captions. */
.cabinet[data-video-ready="true"][data-video-scene="feature"] .controls>label{display:flex;top:87.9%;height:5.2%;container-type:size}
.cabinet[data-video-ready="true"][data-video-scene="feature"] .controls>.balance-label{left:17%;width:14.4%}
.cabinet[data-video-ready="true"][data-video-scene="feature"] .controls>.bet-label{left:34.2%;width:14.4%}
.cabinet[data-video-ready="true"][data-video-scene="feature"] .controls>.win-label{left:51.3%;width:15.2%}
.cabinet[data-video-ready="true"][data-video-scene="feature"] .controls>label>span{display:none}
.cabinet[data-video-ready="true"][data-video-scene="feature"] .controls output{font-size:min(16px,17cqw)}
.cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-screen{
  background:transparent!important;box-shadow:none!important;filter:none!important
}
.cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-screen::before{
  content:none!important;display:none!important
}
/* The painted DOUBLE BOARD / RANDOM BOOST / EXTRA RESPIN signs are always lit, so the live state is shown
   on top of them: an inactive modifier's sign is dimmed; an active one gets a gold frame and an ACTIVE tag
   (bonus review D6). Positions match the painted signs of the feature movie. */
.cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-screen>.feature-modifiers{
  display:block;position:absolute;inset:0;left:0;top:0;width:auto;height:auto;font-size:0;pointer-events:none;z-index:3
}
.cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-modifiers>span{
  position:absolute;top:30.3%;height:6.5%;visibility:visible;opacity:1;display:block;color:transparent;font-size:0;
  border-radius:12px;background:#12041cb8;filter:none;box-shadow:none;transition:background .3s ease,box-shadow .3s ease
}
.cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-modifiers>.mod-red{left:22.1%;width:17.3%}
.cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-modifiers>.mod-blue{left:42%;width:15.8%}
.cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-modifiers>.mod-green{left:60.5%;width:16.8%}
.cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-modifiers>span.armed{
  background:transparent;filter:none;box-shadow:0 0 0 3px #ffe58a,0 0 22px 6px #ffd24acc;animation:modifier-live 1.1s ease-in-out infinite alternate
}
.cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-modifiers>span.armed::after{
  /* The painted ACTIVE badge (assets/ui/active-badge-v1, drawn new by Cursor 2026-10-07); the word is in the picture. */
  content:"";position:absolute;right:-2%;top:-44%;width:32%;aspect-ratio:360/112;
  background:url("../../assets/ui/active-badge-v1.webp") center/100% 100% no-repeat;filter:drop-shadow(0 2px 3px #000a)
}
@keyframes modifier-live{from{box-shadow:0 0 0 3px #ffe58a,0 0 14px 3px #ffd24a99}to{box-shadow:0 0 0 3px #fff6c7,0 0 26px 8px #ffd24add}}
@media(prefers-reduced-motion:reduce){.cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-modifiers>span.armed{animation:none}}
.cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-screen>.feature-board{
  left:var(--window-x);top:var(--window-y);width:var(--window-w);height:var(--window-h);gap:0
}
.cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-board>.feature-cell{background:transparent!important;box-shadow:none}
.cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-board>.feature-cell.locked{background:transparent!important;box-shadow:none}
.cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-readout{
  left:var(--message-x);top:var(--message-top);width:var(--message-w);height:var(--message-h)
}
/* Readable over the marquee bulbs at 1280x800 (bonus review D11). */
.cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-readout>small{font-size:clamp(9px,1.5dvh,14px)}
.cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-readout>div{font-size:clamp(13px,2.5dvh,24px);text-shadow:0 2px 2px #200,0 0 6px #000}
.cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-screen>.feature-close{
  left:24.65%;right:auto;top:87.55%;width:6.6%;height:auto;aspect-ratio:1;
  min-width:0;min-height:0;color:transparent;background:none
}
.cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-meter>.feature-spin,
.cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-screen>.feature-collect-shortcut{
  left:auto;right:var(--spin-right);top:var(--spin-top);width:var(--spin-width);height:var(--spin-height);aspect-ratio:auto;
  min-width:0;min-height:0;padding:0;transform:none;
  color:#fff3a4;font-size:clamp(11px,1.8vw,30px)
}
.cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-screen[data-action="collect"] .feature-spin{left:var(--message-x);top:var(--message-top);width:var(--message-w);height:var(--message-h);right:auto;min-height:0;transform:none;font-size:clamp(13px,2.4dvh,24px)}
/* The painted SPIN owns its lettering; the live button stays an accessible, invisible hit target (D19). */
.cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-screen[data-action="spin"] .feature-spin,
.cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-screen>.feature-collect-shortcut{color:transparent;text-shadow:none;-webkit-text-stroke:0}
/* GRAND and MAX WIN are celebrated on the collect plaque instead of a plain "COLLECT n×" (D11). */
.cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-screen[data-win-tier] .feature-spin{
  color:#3a0906;background:linear-gradient(180deg,#fff3a4,#ffc83a);border-radius:.5em;box-shadow:0 0 0 2px #7a3a06,0 0 18px 4px #ffd24acc;
  animation:win-tier-pulse .9s ease-in-out infinite alternate
}
@keyframes win-tier-pulse{from{filter:brightness(1)}to{filter:brightness(1.18)}}
@media(prefers-reduced-motion:reduce){.cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-screen[data-win-tier] .feature-spin{animation:none}}
.cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-screen[data-action="collect"] .feature-spin::after{content:none}
/* TOTAL owns the completed amount. This is only its transparent collect hit
   target; video-layout and win-tier rules must not paint a second amount. */
.cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-screen[data-action="collect"] .feature-meter>.feature-spin{
  color:transparent;-webkit-text-fill-color:transparent;-webkit-text-stroke:0;text-shadow:none;
  background:none;box-shadow:none;animation:none
}
.cabinet[data-video-ready="true"][data-video-scene="feature"] .lower-screen>.main-game-logo{display:none}

@media(max-width:900px) and (orientation:portrait){
  .cabinet[data-video-ready="true"]{
    width:min(100vw,calc(100dvh * 9 / 16));height:min(100dvh,calc(100vw * 16 / 9))
  }
  .cabinet[data-video-ready="true"] .lower-screen{
    --window-x:13%;--window-y:44.6%;--window-w:73.6%;--window-h:31.35%;
    --message-x:8.7%;--message-top:76.8%;--message-w:81.6%;--message-h:5.05%;
    --spin-right:37.25%;--spin-top:89.9%;--spin-width:25.5%
  }
  /* Keep the invisible hit target inside the 9:16 movie. The painted ring
     remains untouched; only its keyboard/pointer target is tightened. */
  /* Phone base movie: the painted ring starts at 89.7% and is clipped by the cabinet edge. This square covers
     the ring and its SPIN lettering, stays inside the cabinet and clear of the BET buttons above (<=88.5%). */
  .cabinet[data-video-ready="true"] .controls>.spin{right:41.25%;top:89.5%;width:18.5%;height:auto;aspect-ratio:1}
  .cabinet[data-video-ready="true"]>.topper-stage .chomper{
    top:3%;bottom:auto;height:23%;aspect-ratio:340/446
  }
  .cabinet[data-video-ready="true"]>.topper-stage .chomper.red{--stage-x:21%}
  .cabinet[data-video-ready="true"]>.topper-stage .chomper.blue{--stage-x:50%;top:2%;height:22%}
  .cabinet[data-video-ready="true"]>.topper-stage .chomper.green{--stage-x:79%}
  .cabinet[data-video-ready="true"] .lower-screen>.status{font-size:clamp(11px,3.7vw,17px)}
  .cabinet[data-video-ready="true"] .controls>label{top:85.25%;height:4.35%}
  .cabinet[data-video-ready="true"] .controls>.balance-label{left:11.2%;width:23.2%}
  .cabinet[data-video-ready="true"] .controls>.bet-label{left:38.05%;width:23.2%}
  .cabinet[data-video-ready="true"] .controls>.win-label{left:64.95%;width:23.2%}
  .cabinet[data-video-ready="true"] .controls output{font-size:clamp(11px,3.8vw,17px)}
  /* The phone movie leaves the BET value well without baked +/- controls. Keep
     the value centered and place the approved live controls inside its side
     margins, clear of the painted SPIN ring. */
  .cabinet[data-video-ready="true"] .controls>.bet-label{z-index:14}
  .cabinet[data-video-ready="true"] .controls>.bet-label button{
    display:grid;position:absolute;pointer-events:auto;
    min-width:28px;min-height:24px;transform:none;
    background-color:transparent!important;background-size:contain!important;
    background-repeat:no-repeat!important;border:0!important;cursor:pointer
  }
  .cabinet[data-video-ready="true"] .controls>.bet-label button#bet-down,
  .cabinet[data-video-ready="true"] .controls>.bet-label button#bet-up{
    top:50%!important;width:clamp(20px,5.5vw,48px)!important;
    height:clamp(20px,5.5vw,48px)!important;opacity:1!important;
    transform:translateY(-50%)!important;background-size:contain!important;
    background-position:center!important;background-repeat:no-repeat!important
  }
  .cabinet[data-video-ready="true"] .controls>.bet-label button#bet-down{
    left:0!important;background-image:url('../../assets/cabinet/bet-minus-v1.webp')!important
  }
  .cabinet[data-video-ready="true"] .controls>.bet-label button#bet-up{
    left:auto!important;right:0!important;background-image:url('../../assets/cabinet/bet-plus-v1.webp')!important
  }
  .cabinet[data-video-ready="true"] .controls>.bonus-demo{
    left:1%;right:auto;top:61%;width:12%;height:7%;aspect-ratio:auto;
    min-width:44px;min-height:44px;padding:3px 1px;border:2px solid #ffd36b!important;
    border-radius:12px!important;background:linear-gradient(#bd302d,#6f1019)!important;
    color:#fff1b0!important;font:900 clamp(7px,2.2vw,10px)/.92 CarnivalCoin,Georgia,serif;
    white-space:normal;text-align:center;box-shadow:inset 0 0 0 2px #6a170e,0 2px 7px #0008!important
  }
  .cabinet[data-video-ready="true"] .controls>.auto-button{left:auto;right:10.4%;top:91.25%;width:10.6%;height:auto;aspect-ratio:1}
  .cabinet[data-video-ready="true"] .controls>.how-to-button{
    display:block;left:10.4%;top:91.25%;width:10.6%;height:auto;aspect-ratio:1;
    min-width:0;min-height:0;opacity:0
  }
  .cabinet[data-video-ready="true"]>footer #sound-toggle{
    display:block;position:absolute;left:23.2%;top:91.25%;width:10.6%;height:5.8%;
    pointer-events:auto;opacity:0
  }
  .cabinet[data-video-ready="true"][data-video-scene="feature"] .lower-screen{
    --window-x:10.6%;--window-y:44%;--window-w:78.7%;--window-h:26.65%;
    --message-x:10%;--message-top:72.2%;--message-w:80%;--message-h:4.5%;
    --spin-right:35.8%;--spin-top:84.9%;--spin-width:28.4%;--spin-height:12.3%
  }
  .cabinet[data-video-ready="true"][data-video-scene="feature"] .lower-screen>.main-game-logo{display:none}
  .cabinet[data-video-ready="true"][data-video-scene="feature"] .controls>label{top:79.6%;height:5.1%}
  .cabinet[data-video-ready="true"][data-video-scene="feature"] .controls>.balance-label{left:9.6%;width:24.2%}
  .cabinet[data-video-ready="true"][data-video-scene="feature"] .controls>.bet-label{left:37.7%;width:24.2%}
  .cabinet[data-video-ready="true"][data-video-scene="feature"] .controls>.win-label{left:65.8%;width:24.2%}
  .cabinet[data-video-ready="true"][data-video-scene="feature"] .controls>label>span{display:none}
  .cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-readout>small{font-size:clamp(6px,1.8vw,9px)}
  .cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-readout>div{font-size:clamp(9px,2.7vw,13px)}
  .cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-screen>.feature-close{
    left:9%;top:86.4%;width:10.6%;height:auto;aspect-ratio:1
  }
  .cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-meter>.feature-spin,
  .cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-screen>.feature-collect-shortcut{
    font-size:clamp(9px,2.6vw,13px)
  }
  /* Phone bonus SPIN is painted in the movie; do not print it a second time. */
  .cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-screen[data-action="spin"] .feature-spin{color:transparent;text-shadow:none}
  .cabinet[data-video-ready="true"][data-video-scene="feature"]>.video-jackpot-values{
    position:absolute;z-index:8;left:14.3%;top:37.7%;width:71.7%;height:3.8%;
    display:grid;grid-template-columns:repeat(4,1fr);align-items:center;text-align:center;
    color:#fff0a1;font-family:CarnivalCoin,Georgia,serif;font-weight:700;
    font-size:clamp(11px,4vw,20px);text-shadow:0 2px 1px #5a140a,0 0 6px #ffb93a;
    pointer-events:none
  }
}

/* The movie's first frame sits under the movie, so a loading, swapping, blocked or reduced-motion movie
   still shows the painted cabinet instead of the legacy layout (bonus review D12). */
.scene-background-video{background-image:var(--scene-poster,none),url('../../assets/video-backgrounds/posters/carnival-base-desktop-v3-poster.webp');background-size:100% 100%,100% 100%;background-repeat:no-repeat}
@media(max-width:900px) and (orientation:portrait){
  .scene-background-video{background-image:var(--scene-poster,none),url('../../assets/video-backgrounds/posters/carnival-base-phone-v1-poster.webp')}
}
.cabinet[data-video-playing="false"]>.scene-background-video video{opacity:0}
@media(prefers-reduced-motion:reduce){
  .scene-background-video video{display:none}
}

/* Input locks must preserve the approved painted faces. State text communicates
   the current action; a disabled transparent target must not paint a dark disc. */
.cabinet[data-video-ready="true"] .controls>:is(.spin,.bonus-demo,.auto-button){transition:background-color .18s ease .15s,box-shadow .18s ease .15s;border-radius:50%}
.cabinet[data-video-ready="true"] .controls>:is(.bonus-demo,.auto-button){border-radius:999px}
.cabinet[data-video-ready="true"] .controls>:is(.spin,.bonus-demo,.auto-button):disabled{background-color:transparent!important;box-shadow:none;filter:none;cursor:default}
@media(prefers-reduced-motion:reduce){.cabinet[data-video-ready="true"] .controls>:is(.spin,.bonus-demo,.auto-button){transition:none}}

@media(max-width:900px) and (orientation:portrait){
  /* The base movie's jackpot values do not belong on the bonus signs (bonus review D5). */
  .cabinet[data-video-ready="true"][data-video-scene="feature"]>.video-jackpot-values{display:none}
  .cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-modifiers>span{top:35.4%;height:5.4%;border-radius:10px}
  .cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-modifiers>.mod-red{left:7.4%;width:25.3%}
  .cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-modifiers>.mod-blue{left:36.8%;width:26%}
  .cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-modifiers>.mod-green{left:66.7%;width:25.4%}
  .cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-modifiers>span.armed::after{width:54%;top:-50%;right:-4%}
  .cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-readout>small{font-size:clamp(8px,2.3vw,11px)}
  .cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-readout>div{font-size:clamp(11px,3.4vw,16px)}
}

/* Codex lit sign overlays (full-canvas, registered to the single-board bonus movie): an armed modifier
   lights its painted sign; the dim/ACTIVE layer above keeps inactive signs visibly off. */
.cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-screen>.feature-modifiers{
  background-image:var(--lit-red,none),var(--lit-blue,none),var(--lit-green,none);background-size:100% 100%;background-repeat:no-repeat
}
.cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-modifiers:has(>.mod-red.armed){--lit-red:url("../../assets/video-backgrounds/modifier-lit-v1/double-board-desktop-v1.png")}
.cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-modifiers:has(>.mod-blue.armed){--lit-blue:url("../../assets/video-backgrounds/modifier-lit-v1/random-boost-desktop-v1.png")}
.cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-modifiers:has(>.mod-green.armed){--lit-green:url("../../assets/video-backgrounds/modifier-lit-v1/extra-respin-desktop-v1.png")}

/* RED DOUBLE: Codex's two-board scene replaces the single-board movie. Board windows were measured from
   the art's 30 painted cells (cell pitch includes the gutters) so each coin lands centred in its cell. */
.cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"])>.scene-background-video{background-image:url("../../assets/video-backgrounds/carnival-feature-double-desktop-v1.webp")}
.cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-screen>.feature-modifiers{background-image:none}
.cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-modifiers>span{top:31.5%;height:6%}
.cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-modifiers>.mod-red{left:23.6%;width:16.3%}
.cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-modifiers>.mod-blue{left:42.5%;width:14.7%}
.cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-modifiers>.mod-green{left:59.4%;width:16.3%}
.cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-screen>.feature-board{
  left:8.46%;top:40.6%;width:82.66%;height:33.2%;gap:0;
  grid-template-columns:repeat(5,7.954fr) 3.12fr repeat(5,7.954fr);grid-template-rows:repeat(3,1fr)
}
.cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-board>.feature-cell:nth-child(16){box-shadow:none}
.cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-board>.feature-cell[data-board="0"]:nth-child(5n+1){grid-column:1}
.cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-board>.feature-cell[data-board="0"]:nth-child(5n+2){grid-column:2}
.cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-board>.feature-cell[data-board="0"]:nth-child(5n+3){grid-column:3}
.cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-board>.feature-cell[data-board="0"]:nth-child(5n+4){grid-column:4}
.cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-board>.feature-cell[data-board="0"]:nth-child(5n){grid-column:5}
.cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-board>.feature-cell[data-board="0"]:nth-child(n+1):nth-child(-n+5){grid-row:1}
.cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-board>.feature-cell[data-board="0"]:nth-child(n+6):nth-child(-n+10){grid-row:2}
.cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-board>.feature-cell[data-board="0"]:nth-child(n+11):nth-child(-n+15){grid-row:3}
.cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-board>.feature-cell[data-board="1"]:nth-child(5n+1){grid-column:7}
.cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-board>.feature-cell[data-board="1"]:nth-child(5n+2){grid-column:8}
.cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-board>.feature-cell[data-board="1"]:nth-child(5n+3){grid-column:9}
.cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-board>.feature-cell[data-board="1"]:nth-child(5n+4){grid-column:10}
.cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-board>.feature-cell[data-board="1"]:nth-child(5n){grid-column:11}
.cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-board>.feature-cell[data-board="1"]:nth-child(n+16):nth-child(-n+20){grid-row:1}
.cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-board>.feature-cell[data-board="1"]:nth-child(n+21):nth-child(-n+25){grid-row:2}
.cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-board>.feature-cell[data-board="1"]:nth-child(n+26):nth-child(-n+30){grid-row:3}
/* Respins and the locked total move onto the painted RESPINS / TOTAL plaques. */
.cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-readout{left:0;top:0;width:100%;height:100%;pointer-events:none}
.cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-readout>small{display:none}
.cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-readout>div>span{position:absolute;display:flex;align-items:center;justify-content:center;font-size:0;height:7.2%;top:24.7%}
.cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-readout>div>span:first-child{left:7.2%;width:15.8%}
.cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-readout>div>span:last-child{left:77.2%;width:15.9%}
.cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-readout output{font-size:clamp(16px,3.4dvh,34px);color:#fff3a4;text-shadow:0 2px 2px #200,0 0 8px #ffb93a}
.cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) #feature-total::after{content:none}   /* the total is an amount in money since 2026-09-29; a trailing multiplier sign made it read "€8×" */

@media(max-width:900px) and (orientation:portrait){
  .cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-modifiers:has(>.mod-red.armed){--lit-red:url("../../assets/video-backgrounds/modifier-lit-v1/double-board-phone-v1.png")}
  .cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-modifiers:has(>.mod-blue.armed){--lit-blue:url("../../assets/video-backgrounds/modifier-lit-v1/random-boost-phone-v1.png")}
  .cabinet[data-video-ready="true"][data-video-scene="feature"] .feature-modifiers:has(>.mod-green.armed){--lit-green:url("../../assets/video-backgrounds/modifier-lit-v1/extra-respin-phone-v1.png")}
  .cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"])>.scene-background-video{background-image:url("../../assets/video-backgrounds/carnival-feature-double-phone-v2.webp")}
  .cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-modifiers>span{top:23.7%;height:4.4%}
  /* The phone double scene has no room above its signs; the lit sign and gold frame carry the state. */
  .cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-modifiers>span.armed::after{content:none}
  .cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-modifiers>.mod-red{left:11.7%;width:22.8%}
  .cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-modifiers>.mod-blue{left:37.9%;width:23.6%}
  .cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-modifiers>.mod-green{left:65.3%;width:22.8%}
  .cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-screen>.feature-board{
    left:11.62%;top:36.11%;width:76.65%;height:39.23%;
    grid-template-columns:repeat(5,1fr);grid-template-rows:repeat(3,6.13fr) 2.45fr repeat(3,6.13fr)
  }
  .cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-board>.feature-cell[data-board="0"]:nth-child(5n+1){grid-column:1}
  .cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-board>.feature-cell[data-board="0"]:nth-child(5n+2){grid-column:2}
  .cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-board>.feature-cell[data-board="0"]:nth-child(5n+3){grid-column:3}
  .cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-board>.feature-cell[data-board="0"]:nth-child(5n+4){grid-column:4}
  .cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-board>.feature-cell[data-board="0"]:nth-child(5n){grid-column:5}
  .cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-board>.feature-cell[data-board="0"]:nth-child(n+1):nth-child(-n+5){grid-row:1}
  .cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-board>.feature-cell[data-board="0"]:nth-child(n+6):nth-child(-n+10){grid-row:2}
  .cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-board>.feature-cell[data-board="0"]:nth-child(n+11):nth-child(-n+15){grid-row:3}
  .cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-board>.feature-cell[data-board="1"]:nth-child(5n+1){grid-column:1}
  .cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-board>.feature-cell[data-board="1"]:nth-child(5n+2){grid-column:2}
  .cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-board>.feature-cell[data-board="1"]:nth-child(5n+3){grid-column:3}
  .cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-board>.feature-cell[data-board="1"]:nth-child(5n+4){grid-column:4}
  .cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-board>.feature-cell[data-board="1"]:nth-child(5n){grid-column:5}
  .cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-board>.feature-cell[data-board="1"]:nth-child(n+16):nth-child(-n+20){grid-row:5}
  .cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-board>.feature-cell[data-board="1"]:nth-child(n+21):nth-child(-n+25){grid-row:6}
  .cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-board>.feature-cell[data-board="1"]:nth-child(n+26):nth-child(-n+30){grid-row:7}
  .cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-readout>div>span{top:30.9%;height:3%}
  .cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-readout>div>span:first-child{left:16.6%;width:27%}
  .cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-readout>div>span:last-child{left:55.7%;width:27.7%}
  .cabinet[data-video-ready="true"][data-video-scene="feature"]:has(.feature-board[data-board-count="2"]) .feature-readout output{font-size:clamp(13px,4.2vw,22px)}
}

/* Phone base jackpots in euros (2026-09-29). The movie paints "15x … 5000x" on its four plaques; this layer lays the
   same plaques with the numbers removed (cut from the movie's first frame, faces refilled) over them and writes the
   euro amount at the current bet. Coordinates are percentages of the 1080x1920 movie, which fills the cabinet. */
.phone-jackpot-values{display:none}
/* Stake launch (html.plain-prizes): the movie paints four prize plaques (15x to 5000x); a fixed ladder of prizes reads like a jackpot meter,
   so a new FEED THE CHOMPERS banner (phone-banner-v1, drawn new by Cursor 2026-10-07) covers the whole row. 1000x130 at x 40, y 505 of the 1080x1920 movie. */
.phone-plaque-cover{display:none}
@media(max-width:900px) and (orientation:portrait){
  html.plain-prizes .cabinet[data-video-ready="true"][data-video-scene="base"]>.phone-plaque-cover{
    display:block;position:absolute;z-index:9;left:3.7037%;top:26.3021%;width:92.5926%;height:6.7708%;pointer-events:none
  }
  .phone-plaque-cover>img{position:absolute;inset:0;width:100%;height:100%;display:block}
  .cabinet[data-video-ready="true"][data-video-scene="base"]>.phone-jackpot-values{
    display:block;position:absolute;z-index:8;left:10.185%;top:28.958%;width:79.63%;height:3.021%;
    container-type:size;pointer-events:none
  }
  .phone-jackpot-values>img{position:absolute;inset:0;width:100%;height:100%;display:block}
  .phone-jackpot-values>span{
    position:absolute;top:49%;translate:-50% -50%;white-space:nowrap;line-height:1;
    font-family:CarnivalCoin,Georgia,serif;font-weight:900;letter-spacing:-.02em;
    font-size:min(80cqh,calc(var(--w) / (var(--len,3) * .62)));
    color:#ffd84a;-webkit-text-fill-color:#ffd84a;-webkit-text-stroke:.09em #4a1805;paint-order:stroke fill;
    text-shadow:0 .07em 0 #3a1204,0 0 .25em #ffb4308a
  }
  .phone-jackpot-values>span::first-letter{font-size:.74em}
  .phone-jackpot-values>.jp-mini{left:8.26%;--w:14.66cqw}
  .phone-jackpot-values>.jp-minor{left:34.83%;--w:15cqw}
  .phone-jackpot-values>.jp-major{left:62.45%;--w:16.5cqw}
  .phone-jackpot-values>.jp-grand{left:90.06%;--w:16.4cqw}
}

/* Keep live desktop wallet values readable in their existing painted wells. */
@media(min-width:600px) and (orientation:landscape){
 .cabinet[data-video-ready="true"] .controls output{text-shadow:0 1px 2px #170508}
}
