/*
 * TMC Bonus Reveal runtime — Plinko ("TMC Coin Storm") + Treasure Pusher.
 * Visual language ported from the approved games-v3 cinematic demo:
 * sunburst backdrop, neon-framed screen, WordArt gold titles, 3D red buttons.
 */

.tmcrv-wrap{
  position:relative;
  overflow:hidden;
  color:#fff;
  font-family:"Arial Black","Segoe UI",Arial,sans-serif;
  background:#0a0b12;
  border-radius:18px;
  isolation:isolate;
}
.tmcrv-wrap *{ box-sizing:border-box; }

/* ---------- sunburst backdrops ---------- */
.tmcrv-burst{
  position:absolute; left:50%; top:50%; width:calc(100vw + 100vh); height:calc(100vw + 100vh);
  transform:translate(-50%,-50%);
  z-index:0; pointer-events:none;
  animation:tmcrvSpin 90s linear infinite;
  animation-play-state:paused;
}
.tmcrv-wrap.is-live .tmcrv-burst{ animation-play-state:running; }
@keyframes tmcrvSpin{ to{ transform:translate(-50%,-50%) rotate(360deg); } }
.tmcrv-skin-plinko{ background:#101a4a; }
.tmcrv-skin-plinko .tmcrv-burst{
  background:repeating-conic-gradient(from 0deg,
    #1c2b86 0deg 7.5deg, #cfd9ff 7.5deg 15deg);
}
.tmcrv-skin-plinko .tmcrv-burst-glow{
  position:absolute; inset:0; z-index:1; pointer-events:none;
  background:
    radial-gradient(ellipse 46% 42% at 50% 44%, rgba(255,251,224,.7), rgba(190,214,255,.35) 40%, rgba(255,255,255,0) 66%),
    radial-gradient(ellipse 82% 78% at 50% 46%, rgba(10,18,60,0) 52%, rgba(6,10,38,.62) 100%);
}
.tmcrv-skin-pusher{ background:#12060a; }
.tmcrv-skin-pusher .tmcrv-burst{
  background:repeating-conic-gradient(from 0deg, #59080e 0deg 9deg, #200308 9deg 18deg);
  opacity:.9; animation-duration:140s;
}
.tmcrv-skin-pusher .tmcrv-vignette{
  position:absolute; inset:0; z-index:2; pointer-events:none;
  background:radial-gradient(ellipse 75% 70% at 50% 42%, rgba(0,0,0,0) 35%, rgba(8,1,3,.78) 100%);
}

/* ---------- stage + camera shake ---------- */
.tmcrv-stage{
  position:relative; z-index:5;
  max-width:820px; margin:0 auto;
  padding:22px 18px 30px;
  display:flex; flex-direction:column; gap:14px;
}
@keyframes tmcrvCamShake{
  0%,100%{ transform:translate(0,0); }
  20%{ transform:translate(-3px,2px); }
  40%{ transform:translate(3px,-2px); }
  60%{ transform:translate(-2px,-2px); }
  80%{ transform:translate(2px,1px); }
}
.tmcrv-stage.is-shaking{ animation:tmcrvCamShake .15s linear; }

/* ---------- header, WordArt title, HUD ---------- */
.tmcrv-head{
  display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap;
}
.tmcrv-title{ position:relative; overflow:hidden; flex:1 1 auto; }
.tmcrv-wordart-text{
  display:inline-block;
  font-size:clamp(26px, 5.2vw, 50px);
  letter-spacing:2.5px; line-height:1.02;
  text-transform:uppercase;
  background:linear-gradient(#fffdf0 6%, #ffe873 34%, #ffb60d 60%, #f28a00 82%, #cf6a00 100%);
  -webkit-background-clip:text; background-clip:text; color:transparent;
  -webkit-text-stroke:1.4px rgba(74,22,4,.95);
  filter:
    drop-shadow(0 2px 0 #5a1a04)
    drop-shadow(0 3px 0 #3a1002)
    drop-shadow(0 0 1px #4a1604)
    drop-shadow(0 8px 10px rgba(0,0,0,.5));
}
.tmcrv-title-sub{
  display:block; margin-top:2px;
  font-size:12px; letter-spacing:1.6px; text-transform:uppercase; color:#ffecec;
  text-shadow:0 1px 0 #58120b, 0 -1px 0 #58120b, 1px 0 0 #58120b, -1px 0 0 #58120b, 0 3px 5px rgba(0,0,0,.55);
}
/* light sweep across the WordArt title */
.tmcrv-title .tmcrv-sweepbar{
  content:""; position:absolute; top:0; bottom:0; left:0; width:18%;
  transform:translateX(-160%) skewX(-14deg);
  background:linear-gradient(100deg, rgba(255,255,255,0), rgba(255,255,255,.65), rgba(255,255,255,0));
  opacity:0; pointer-events:none; mix-blend-mode:screen; will-change:transform,opacity;
}
.tmcrv-title.is-sweeping .tmcrv-sweepbar{ animation:tmcrvSweep 1.15s ease-in-out; }
@keyframes tmcrvSweep{
  0%{ opacity:0; transform:translateX(-160%) skewX(-14deg); }
  15%{ opacity:1; }
  85%{ opacity:1; }
  100%{ opacity:0; transform:translateX(680%) skewX(-14deg); }
}
.tmcrv-hud{ display:flex; gap:8px; flex-wrap:wrap; align-items:center; }
.tmcrv-hud-chip{
  display:inline-flex; align-items:center; gap:7px;
  padding:7px 12px; border-radius:9px;
  background:linear-gradient(#0c1444, #050a26);
  border:2px solid #2a49b8;
  font-size:12px; font-style:italic; letter-spacing:.6px; color:#e9efff;
  white-space:nowrap;
}
.tmcrv-skin-pusher .tmcrv-hud-chip{ background:#0d1118; border-color:#39404e; }
.tmcrv-hud-chip b{ color:#4dff6a; font-size:15px; text-shadow:0 0 8px rgba(77,255,106,.6); }
.tmcrv-skin-pusher .tmcrv-hud-chip b{ color:#2dff9e; }

/* ---------- sound + turbo toggles ---------- */
.tmcrv-sound,
.tmcrv-turbo{
  cursor:pointer;
  font-family:inherit; font-size:15px; line-height:1;
  padding:8px 13px 9px; border-radius:9px;
  background:#0d1424; border:1px solid #2c3556; color:#e8c96a;
  box-shadow:0 3px 8px rgba(0,0,0,.5);
}
.tmcrv-sound:hover,
.tmcrv-turbo:hover{ background:#141d33; }
.tmcrv-sound.is-off{ color:#5a6482; }
.tmcrv-turbo{
  font-size:12px; letter-spacing:1.4px; text-transform:uppercase;
}
.tmcrv-turbo.is-on{
  color:#0a0b12; background:linear-gradient(#8dff57, #1f9e2e);
  border-color:#1f9e2e;
  box-shadow:0 0 14px rgba(62,224,57,.55), 0 3px 8px rgba(0,0,0,.5);
}

/* ---------- game screen ---------- */
.tmcrv-board{ position:relative; }
.tmcrv-board svg.tmcrv-screen{
  width:100%; height:auto; display:block;
  filter:drop-shadow(0 18px 30px rgba(0,0,10,.55));
}
/* neon "breathing" while live */
.tmcrv-wrap.is-live .tmcrv-screen--plinko{ animation:tmcrvNeonBreath 3.4s ease-in-out infinite; }
@keyframes tmcrvNeonBreath{
  0%,100%{ filter:drop-shadow(0 18px 30px rgba(0,0,10,.55)); }
  50%{ filter:drop-shadow(0 18px 30px rgba(0,0,10,.55)) drop-shadow(0 0 20px rgba(62,224,110,.5)); }
}
.tmcrv-wrap.is-live .tmcrv-screen--pusher{ animation:tmcrvNeonBreathT 3.8s ease-in-out infinite; }
@keyframes tmcrvNeonBreathT{
  0%,100%{ filter:drop-shadow(0 18px 30px rgba(0,0,10,.55)); }
  50%{ filter:drop-shadow(0 18px 30px rgba(0,0,10,.55)) drop-shadow(0 0 20px rgba(18,216,174,.5)); }
}
/* pusher shelf constantly working while the board is live */
.tmcrv-wrap.is-live .tmcrv-shelf{ animation:tmcrvShelf 2s ease-in-out infinite; will-change:transform; }
@keyframes tmcrvShelf{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(15px); } }
.tmcrv-wrap.is-live .tmcrv-pile{ animation:tmcrvPileNudge 2s ease-in-out infinite; }
@keyframes tmcrvPileNudge{ 0%,40%,100%{ transform:translateY(0); } 60%{ transform:translateY(4px); } }
/* turbo skips decorative loops */
.tmcrv-wrap.tmcrv-turbo-on .tmcrv-shelf,
.tmcrv-wrap.tmcrv-turbo-on .tmcrv-pile,
.tmcrv-wrap.tmcrv-turbo-on .tmcrv-screen--plinko,
.tmcrv-wrap.tmcrv-turbo-on .tmcrv-screen--pusher{ animation:none; }

.tmcrv-peg-ring{ opacity:0; transition:opacity .35s ease-out; }
.tmcrv-slot-flash{ opacity:0; transition:opacity .4s ease-out; }

/* ---------- status line ---------- */
.tmcrv-status{
  min-height:22px; text-align:center;
  font-family:Arial,sans-serif; font-weight:700;
  font-size:14px; letter-spacing:.4px; color:#e9efff;
  text-shadow:0 1px 2px rgba(0,0,0,.7);
}
.tmcrv-status[data-kind="error"]{ color:#ff8a8a; }
.tmcrv-status[data-kind="won"]{ color:#ffe259; }
.tmcrv-status[data-kind="lose"]{ color:#c9d2ea; }
.tmcrv-status[data-kind="loading"]{ color:#7fe0ff; }

/* ---------- control buttons (3D red, from v3) ---------- */
.tmcrv-controls{
  display:flex; gap:12px; justify-content:center; align-items:stretch; flex-wrap:wrap;
  position:relative;
  z-index:20;
}
.tmcrv-btn{
  position:relative; display:inline-block; cursor:pointer;
  font-family:inherit; font-size:19px; letter-spacing:1.6px; color:#fff;
  padding:14px 34px 16px; border-radius:999px;
  border:2px solid #6d0606;
  background:linear-gradient(#ff8a72 0%, #f0402b 18%, #d31212 55%, #9c0808 100%);
  box-shadow:0 6px 0 #5e0404, 0 12px 22px rgba(0,0,0,.55),
    inset 0 2px 2px rgba(255,255,255,.65), inset 0 -6px 10px rgba(90,0,0,.55);
  text-shadow:0 2px 0 #7a0808, 0 4px 6px rgba(0,0,0,.5);
}
.tmcrv-btn::before{
  content:""; position:absolute; left:12%; right:12%; top:5px; height:38%;
  border-radius:999px;
  background:linear-gradient(rgba(255,255,255,.65), rgba(255,255,255,0));
  pointer-events:none;
}
.tmcrv-btn:hover:not(:disabled){ filter:brightness(1.07); }
.tmcrv-btn:active:not(:disabled){ transform:translateY(3px); box-shadow:0 3px 0 #5e0404, 0 8px 16px rgba(0,0,0,.5), inset 0 2px 2px rgba(255,255,255,.65); }
.tmcrv-btn:disabled{ cursor:not-allowed; filter:grayscale(.55) brightness(.75); }
.tmcrv-wrap.is-live.tmcrv-has-pending .tmcrv-btn-drop:not(:disabled){ animation:tmcrvBtnPulse 1.5s ease-in-out infinite; }
@keyframes tmcrvBtnPulse{ 0%,100%{ transform:scale(1); } 50%{ transform:scale(1.05); } }
.tmcrv-btn--all{
  background:linear-gradient(#ffe27a 0%, #f5b81e 24%, #d98a00 60%, #9c5e00 100%);
  border-color:#6d4a06;
  box-shadow:0 6px 0 #5e4004, 0 12px 22px rgba(0,0,0,.55),
    inset 0 2px 2px rgba(255,255,255,.65), inset 0 -6px 10px rgba(90,58,0,.55);
  text-shadow:0 2px 0 #7a5a08, 0 4px 6px rgba(0,0,0,.5);
}
.tmcrv-btn--more{ font-size:17px; padding:12px 28px 14px; margin-top:14px; }

/* ---------- summary overlay pop ---------- */
.tmcrv-summary{ position:relative; z-index:7; }
.tmcrv-summary-pop{
  position:relative; margin:6px auto 0; max-width:560px;
  padding:18px 30px 22px; border-radius:16px; text-align:center;
  background:rgba(6,9,18,.9); border:2.5px solid #ffd23e;
  box-shadow:0 0 34px rgba(255,210,62,.5), 0 14px 30px rgba(0,0,0,.55);
  animation:tmcrvPopIn .55s cubic-bezier(.25,1.4,.4,1) both;
}
@keyframes tmcrvPopIn{
  0%{ transform:scale(.45); }
  55%{ transform:scale(1.15); }
  70%{ transform:scale(.97) translate(2px,-2px); }
  82%{ transform:scale(1.04) translate(-2px,1px); }
  92%{ transform:scale(.99) translate(1px,0); }
  100%{ transform:scale(1) translate(0,0); }
}
.tmcrv-summary-title{
  display:block; font-size:clamp(18px, 3.4vw, 28px); letter-spacing:1px;
}
.tmcrv-summary-list{
  margin-top:10px;
  font-family:Arial,sans-serif; font-weight:700; font-size:13.5px;
  line-height:1.7; color:#ffe9a0;
}

/* ---------- win feed ---------- */
.tmcrv-feed{ display:flex; flex-direction:column; gap:5px; }
.tmcrv-feed:empty{ display:none; }
.tmcrv-feed-row{
  display:flex; align-items:center; gap:10px;
  padding:6px 12px; border-radius:9px;
  background:rgba(6,9,18,.72); border:1px solid #2a3352;
  font-family:Arial,sans-serif; font-size:13px; font-weight:700;
}
.tmcrv-feed-ticket{ color:#7fe0ff; }
.tmcrv-feed-name{ flex:1 1 auto; color:#e9efff; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.tmcrv-feed-amount{ color:#ffe259; }

/* ---------- upsell hook (content injected server-side later) ---------- */
.tmcrv-upsell{
  margin-top:6px; padding:16px;
  border-radius:14px;
  background:rgba(6,9,18,.72); border:1px dashed #caa63f;
}
.tmcrv-upsell[hidden]{ display:none; }

/* ---------- fine print ---------- */
.tmcrv-fine{
  text-align:center; margin:0;
  font-family:Arial,sans-serif; font-weight:400;
  font-size:12px; letter-spacing:.6px; color:rgba(255,235,235,.62);
  text-shadow:0 1px 2px rgba(0,0,0,.8);
}
.tmcrv-skin-plinko .tmcrv-fine{ color:#2c3a6e; text-shadow:0 1px 0 rgba(255,255,255,.55); }

/* ---------- mobile (<=560px): full-width board, controls pinned bottom ---------- */
@media (max-width: 560px){
  .tmcrv-wrap{ border-radius:0; }
  .tmcrv-stage{ padding:14px 8px 18px; }
  .tmcrv-board{ margin:0 -8px; }
  .tmcrv-board svg.tmcrv-screen{ width:100vw; max-width:100%; }
  .tmcrv-head{ gap:8px; }
  .tmcrv-hud{ width:100%; justify-content:space-between; }
  .tmcrv-hud-chip{ padding:6px 9px; font-size:11px; }
  /* controls pinned to the cabinet bottom, in flow — the game board and its
     buttons share one screen. Owner's law: NEVER a viewport-fixed overlay (it
     floats over the add-to-basket bar and the prize list below the game).
     position:sticky inside the overflow:hidden cabinet intentionally behaves
     as in-flow — visual design identical to the shipped redesign. */
  .tmcrv-controls{
    position:sticky; left:0; right:0; bottom:max(8px, env(safe-area-inset-bottom, 0px)); z-index:80;
    margin:4px 0 0;
    padding:10px 10px calc(10px + env(safe-area-inset-bottom, 0px));
    border-radius:18px;
    background:linear-gradient(180deg, rgba(13,17,26,.72), rgba(5,7,12,.96));
    border:1px solid rgba(255,212,95,.24);
    box-shadow:0 -10px 26px rgba(0,0,0,.36), inset 0 1px 0 rgba(255,255,255,.10);
    backdrop-filter:blur(16px) saturate(150%);
    gap:8px;
  }
  .tmcrv-btn{ flex:1 1 auto; font-size:15px; padding:12px 10px 14px; letter-spacing:1px; }
  .tmcrv-turbo{ flex:0 0 auto; }
  .tmcrv-summary-pop{ padding:14px 16px 18px; }
}

/* ---------- reduced motion: no shakes, sweeps, parallax or pulse loops ---------- */
@media (prefers-reduced-motion: reduce){
  .tmcrv-burst,
  .tmcrv-wrap.is-live .tmcrv-burst,
  .tmcrv-wrap.is-live .tmcrv-shelf,
  .tmcrv-wrap.is-live .tmcrv-pile,
  .tmcrv-wrap.is-live .tmcrv-screen--plinko,
  .tmcrv-wrap.is-live .tmcrv-screen--pusher,
  .tmcrv-wrap.is-live.tmcrv-has-pending .tmcrv-btn-drop:not(:disabled),
  .tmcrv-stage.is-shaking,
  .tmcrv-title.is-sweeping .tmcrv-sweepbar{
    animation:none !important;
  }
  .tmcrv-summary-pop{ animation:none; }
  .tmcrv-peg-ring,
  .tmcrv-slot-flash{ transition:none; }
}

/* ---------- casino cabinet direction (2026-07 local design pass) ---------- */
.tmcrv-wrap{
  --tmcrv-gold:#ffd45f;
  --tmcrv-gold-deep:#9a5a00;
  --tmcrv-green:#19d66f;
  --tmcrv-green-deep:#087a3b;
  --tmcrv-red:#ff274e;
  --tmcrv-blue:#1592ff;
  border-radius:28px;
  background:
    radial-gradient(circle at 50% -12%, rgba(255,212,95,.26), transparent 34%),
    radial-gradient(circle at 14% 24%, rgba(255,39,78,.18), transparent 26%),
    radial-gradient(circle at 88% 28%, rgba(21,146,255,.18), transparent 28%),
    linear-gradient(180deg,#17100c 0%,#070911 46%,#03050a 100%);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.16),
    inset 0 -42px 90px rgba(0,0,0,.72),
    0 28px 80px rgba(3,8,18,.38);
}
.tmcrv-wrap::before{
  content:"";
  position:absolute;
  inset:8px;
  border-radius:24px;
  border:2px solid rgba(255,212,95,.48);
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,.12),
    inset 0 0 26px rgba(255,212,95,.12),
    0 0 34px rgba(255,212,95,.18);
  pointer-events:none;
  z-index:3;
}
.tmcrv-wrap::after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  z-index:2;
  background:
    linear-gradient(90deg, rgba(255,39,78,.48), transparent 10%, transparent 90%, rgba(21,146,255,.48)),
    radial-gradient(ellipse 75% 42% at 50% 100%, rgba(255,212,95,.18), transparent 62%);
  opacity:.75;
}
.tmcrv-skin-plinko,
.tmcrv-skin-pusher{ background:#06070d; }
.tmcrv-skin-plinko .tmcrv-burst,
.tmcrv-skin-pusher .tmcrv-burst{
  opacity:.18;
  background:
    repeating-conic-gradient(from 0deg, rgba(255,212,95,.26) 0deg 5deg, rgba(255,39,78,.15) 5deg 10deg, rgba(21,146,255,.12) 10deg 15deg, transparent 15deg 22deg);
}
.tmcrv-skin-plinko .tmcrv-burst-glow,
.tmcrv-skin-pusher .tmcrv-vignette{
  background:
    radial-gradient(ellipse 48% 30% at 50% 8%, rgba(255,212,95,.25), transparent 66%),
    radial-gradient(ellipse 86% 76% at 50% 48%, rgba(0,0,0,0) 42%, rgba(0,0,0,.7) 100%);
}
.tmcrv-stage{
  max-width:1040px;
  padding:30px 28px 34px;
  gap:16px;
}
.tmcrv-head{
  position:relative;
  justify-content:center;
  padding:18px 148px 16px;
  border-radius:28px 28px 18px 18px;
  background:
    linear-gradient(180deg, rgba(255,212,95,.25), rgba(255,212,95,.05) 22%, rgba(4,7,12,.82) 78%),
    linear-gradient(90deg, rgba(255,39,78,.44), rgba(255,212,95,.13), rgba(21,146,255,.44));
  border:2px solid rgba(255,212,95,.58);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.28),
    inset 0 -14px 32px rgba(0,0,0,.42),
    0 12px 28px rgba(0,0,0,.34);
}
.tmcrv-title{
  flex:0 1 auto;
  text-align:center;
  min-width:min(100%, 360px);
}
.tmcrv-wordart-text{
  font-size:clamp(40px, 7vw, 82px);
  letter-spacing:4px;
  background:linear-gradient(#fffef1 0%, #fff2a6 26%, #ffd45f 44%, #e58d08 68%, #7a3600 100%);
  -webkit-text-stroke:1.8px rgba(83,44,0,.96);
  filter:
    drop-shadow(0 2px 0 #6d3900)
    drop-shadow(0 5px 0 #2b1300)
    drop-shadow(0 0 14px rgba(255,212,95,.62))
    drop-shadow(0 18px 18px rgba(0,0,0,.65));
}
.tmcrv-title-sub{
  display:inline-flex;
  justify-content:center;
  min-width:210px;
  margin-top:4px;
  padding:3px 16px 5px;
  border-radius:999px;
  background:rgba(0,0,0,.46);
  border:1px solid rgba(255,212,95,.46);
  color:#ffe9a0;
  font-size:14px;
  letter-spacing:2px;
  text-shadow:0 1px 0 #160800, 0 0 12px rgba(255,212,95,.48);
}
.tmcrv-hud{
  position:absolute;
  left:22px;
  right:22px;
  top:50%;
  transform:translateY(-50%);
  justify-content:space-between;
  pointer-events:none;
}
.tmcrv-hud-chip{
  min-width:108px;
  justify-content:center;
  flex-direction:column;
  gap:2px;
  padding:10px 12px;
  border-radius:18px;
  background:linear-gradient(180deg, rgba(22,28,36,.92), rgba(5,7,12,.92));
  border:1px solid rgba(255,212,95,.46);
  color:#d8e1ed;
  font-size:10px;
  font-style:normal;
  letter-spacing:.8px;
  text-transform:uppercase;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.12), 0 10px 22px rgba(0,0,0,.32);
}
.tmcrv-hud-chip b{
  color:#ffe9a0;
  font-size:20px;
  line-height:1;
  text-shadow:0 0 13px rgba(255,212,95,.54);
}
.tmcrv-sound{
  position:absolute;
  right:22px;
  bottom:18px;
  z-index:6;
  width:42px;
  height:42px;
  padding:0;
  border-radius:14px;
  background:linear-gradient(180deg,#252b35,#090c12);
  border:1px solid rgba(255,212,95,.4);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.14),0 10px 18px rgba(0,0,0,.35);
}
.tmcrv-board{
  border-radius:26px;
  padding:10px;
  background:linear-gradient(180deg, rgba(255,255,255,.08), rgba(255,255,255,.02));
  border:1px solid rgba(255,212,95,.22);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.12);
}
.tmcrv-board svg.tmcrv-screen{
  filter:drop-shadow(0 24px 42px rgba(0,0,10,.72));
}
.tmcrv-status{
  min-height:28px;
  font-size:16px;
  color:#ffe9a0;
}
.tmcrv-controls{
  padding:12px;
  border-radius:24px;
  background:linear-gradient(180deg, rgba(255,255,255,.1), rgba(255,255,255,.04));
  border:1px solid rgba(255,212,95,.22);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.1);
}
.tmcrv-btn{
  min-width:210px;
  border:2px solid rgba(224,255,205,.7);
  color:#fff;
  background:linear-gradient(180deg,#6eff8d 0%, #19d66f 24%, #0b9e4b 64%, #087a3b 100%);
  box-shadow:
    0 7px 0 #045425,
    0 0 24px rgba(25,214,111,.42),
    0 16px 32px rgba(0,0,0,.55),
    inset 0 2px 2px rgba(255,255,255,.72),
    inset 0 -8px 16px rgba(0,63,28,.6);
  text-shadow:0 2px 0 #055124, 0 4px 8px rgba(0,0,0,.5);
}
.tmcrv-btn:hover:not(:disabled){
  filter:brightness(1.08) saturate(1.05);
  box-shadow:
    0 7px 0 #045425,
    0 0 34px rgba(25,214,111,.62),
    0 18px 36px rgba(0,0,0,.58),
    inset 0 2px 2px rgba(255,255,255,.72),
    inset 0 -8px 16px rgba(0,63,28,.6);
}
.tmcrv-btn--all{
  background:linear-gradient(180deg,#ffe9a0 0%, #ffd45f 24%, #d99314 64%, #9a5a00 100%);
  border-color:#fff1b8;
  color:#120d05;
  text-shadow:0 1px 0 rgba(255,255,255,.5);
  box-shadow:
    0 7px 0 #6b3b00,
    0 0 24px rgba(255,212,95,.44),
    0 16px 32px rgba(0,0,0,.55),
    inset 0 2px 2px rgba(255,255,255,.7),
    inset 0 -8px 16px rgba(110,58,0,.48);
}
.tmcrv-turbo{
  min-width:118px;
  border-radius:999px;
  border-color:rgba(255,212,95,.46);
  color:#ffe9a0;
  background:linear-gradient(180deg,#252b35,#090c12);
}
.tmcrv-feed-row,
.tmcrv-upsell,
.tmcrv-summary-pop{
  border-color:rgba(255,212,95,.4);
  background:rgba(3,6,12,.82);
}
.tmcrv-fine{
  color:rgba(218,229,244,.55);
  text-shadow:none;
}
.tmcrv-stage.is-shaking{
  animation:tmcrvCasinoImpact .32s cubic-bezier(.16,.9,.26,1);
}
.tmcrv-wrap.is-impacting::after{
  animation:tmcrvImpactFlash .46s ease-out;
}
@keyframes tmcrvCasinoImpact{
  0%,100%{ transform:translate3d(0,0,0) rotate(0deg); }
  12%{ transform:translate3d(-8px,5px,0) rotate(-.45deg); }
  25%{ transform:translate3d(7px,-4px,0) rotate(.4deg); }
  38%{ transform:translate3d(-6px,-5px,0) rotate(-.3deg); }
  52%{ transform:translate3d(5px,4px,0) rotate(.25deg); }
  68%{ transform:translate3d(-3px,2px,0) rotate(-.16deg); }
  84%{ transform:translate3d(2px,-1px,0) rotate(.1deg); }
}
@keyframes tmcrvImpactFlash{
  0%{ opacity:.75; filter:brightness(1); }
  18%{ opacity:1; filter:brightness(1.8) saturate(1.4); }
  100%{ opacity:.75; filter:brightness(1); }
}

@media (max-width: 760px){
  .tmcrv-stage{ padding:18px 12px 118px; }
  .tmcrv-head{ padding:16px 58px 68px; }
  .tmcrv-wordart-text{ font-size:clamp(34px, 13vw, 58px); }
  .tmcrv-hud{
    top:auto;
    bottom:12px;
    left:12px;
    right:12px;
    transform:none;
    gap:6px;
  }
  .tmcrv-hud-chip{
    min-width:0;
    flex:1 1 30%;
    padding:8px 6px;
    font-size:9px;
  }
  .tmcrv-hud-chip b{ font-size:15px; }
  .tmcrv-sound{ right:12px; top:14px; bottom:auto; }
  .tmcrv-board{ margin:0; padding:6px; }
  .tmcrv-board svg.tmcrv-screen{ width:100%; }
  .tmcrv-btn{ min-width:0; }
}

/* Art-backed casino cabinet layer: generated cabinets provide the rich scene,
   runtime SVG only paints dynamic balls, coins, labels and win flashes. */
.tmcrv-board.is-casino-art{
  position:relative;
  width:min(100%, 820px);
  margin:0 auto;
  aspect-ratio:4 / 5;
  padding:0;
  overflow:hidden;
  border-radius:28px;
  background-color:#05070c;
  background-position:center;
  background-size:cover;
  border:2px solid rgba(255,212,95,.52);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.2),
    inset 0 -30px 64px rgba(0,0,0,.48),
    0 24px 50px rgba(0,0,0,.52);
}
.tmcrv-skin-plinko .tmcrv-board.is-casino-art{
  background-image:url("images/reveal-casino-plinko.png");
}
.tmcrv-skin-pusher .tmcrv-board.is-casino-art{
  background-image:url("images/reveal-casino-dropzone.png");
}
.tmcrv-skin-pusher .tmcrv-board.is-casino-art{
  background-size:cover;
  background-position:center;
}
.tmcrv-skin-pusher .tmcrv-board.is-live-drawn-table{
  background-image:none;
  background:
    radial-gradient(circle at 50% 12%, rgba(43,178,255,.22), transparent 23%),
    radial-gradient(circle at 50% 72%, rgba(255,196,61,.2), transparent 32%),
    linear-gradient(145deg, #02050b 0%, #071322 45%, #02060d 100%);
}
.tmcrv-board.is-casino-art::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:1;
  pointer-events:none;
  background:
    linear-gradient(180deg, rgba(0,0,0,.04), rgba(0,0,0,.18) 68%, rgba(0,0,0,.02)),
    radial-gradient(circle at 50% 91%, rgba(35,255,114,.16), transparent 16%);
}
.tmcrv-board.is-casino-art .tmcrv-screen{
  position:absolute;
  inset:0;
  z-index:2;
  width:100%;
  height:100%;
  filter:none;
}
.tmcrv-board.is-casino-art text{
  paint-order:stroke;
}
.tmcrv-board.is-casino-art .tmcrv-slot-flash{
  mix-blend-mode:screen;
}
.tmcrv-wrap.is-live .tmcrv-board.is-casino-art{
  animation:tmcrvCabinetGlow 3.2s ease-in-out infinite;
}
.tmcrv-pusher-coin-bed{
  pointer-events:none;
}
.tmcrv-pusher-bed-coin{
  transform:translate(var(--x), var(--y)) rotate(var(--r)) scale(var(--s));
  transform-box:view-box;
  transform-origin:center;
  opacity:.84;
  filter:saturate(1.22) contrast(1.16) brightness(1.12) drop-shadow(0 7px 7px rgba(0,0,0,.52)) drop-shadow(0 0 10px rgba(255,211,86,.34));
  will-change:transform, filter, opacity;
}
.tmcrv-pusher-bed-coin.is-back{
  opacity:.64;
  filter:saturate(1.14) contrast(1.08) brightness(1.08) drop-shadow(0 4px 5px rgba(0,0,0,.42)) drop-shadow(0 0 7px rgba(255,211,86,.22));
}
.tmcrv-pusher-bed-coin.is-mid{
  opacity:.78;
}
.tmcrv-pusher-bed-coin.is-front{
  opacity:.9;
  filter:saturate(1.28) contrast(1.2) brightness(1.16) drop-shadow(0 8px 8px rgba(0,0,0,.56)) drop-shadow(0 0 12px rgba(255,211,86,.4));
}
.tmcrv-pusher-bed-coin.is-pushing{
  animation:tmcrvPusherBedPush 980ms cubic-bezier(.18,.78,.24,1) var(--push-delay,0s) both;
}
.tmcrv-pusher-bed-glint{
  opacity:.78;
}
.tmcrv-casino-ambient{
  pointer-events:none;
  mix-blend-mode:screen;
}
.tmcrv-casino-sweep{
  opacity:.58;
  animation:tmcrvCasinoSweep 2.45s cubic-bezier(.45,0,.2,1) infinite;
}
.tmcrv-casino-bulb{
  opacity:.45;
  animation:tmcrvCasinoBulb 1.05s steps(2,end) infinite;
  transform-box:fill-box;
  transform-origin:center;
}
.tmcrv-casino-bulb:nth-child(2n){
  animation-delay:.35s;
}
.tmcrv-casino-bulb:nth-child(3n){
  animation-delay:.7s;
}
.tmcrv-casino-spark{
  opacity:.35;
  animation:tmcrvCasinoSpark 1.35s ease-in-out infinite;
  transform-box:fill-box;
  transform-origin:center;
}
.tmcrv-casino-spark:nth-child(2n){
  animation-delay:.42s;
}
.tmcrv-casino-spark:nth-child(3n){
  animation-delay:.8s;
}
.tmcrv-mech{
  pointer-events:none;
  mix-blend-mode:screen;
}
.tmcrv-pusher-mech{
  mix-blend-mode:normal;
}
.tmcrv-pusher-drawn-cabinet{
  pointer-events:none;
}
.tmcrv-pusher-active-table{
  animation:tmcrvPusherActiveTable 3.4s ease-in-out infinite;
  transform-box:view-box;
  transform-origin:center;
  filter:drop-shadow(0 0 12px rgba(47,183,255,.13));
}
.tmcrv-pusher-drawn-lane{
  animation:tmcrvPusherLaneFlow 1.8s ease-in-out infinite;
  animation-delay:var(--d,0s);
}
.tmcrv-pusher-drawn-led{
  animation:tmcrvPusherLedRun 1.08s steps(3,end) infinite;
  animation-delay:var(--d,0s);
  filter:drop-shadow(0 0 8px currentColor);
}
.tmcrv-pusher-cabinet-dot{
  animation:tmcrvPusherCabinetDot 1.24s steps(2,end) infinite;
  animation-delay:var(--d,0s);
  filter:drop-shadow(0 0 7px currentColor);
}
.tmcrv-pusher-prize-cell{
  animation:tmcrvPusherPrizeCell 2.6s ease-in-out infinite;
  animation-delay:var(--d,0s);
  transform-box:view-box;
  transform-origin:center;
}
.tmcrv-plinko-runner{
  opacity:.36;
  animation:tmcrvPlinkoRunner .9s steps(2,end) infinite;
  animation-delay:var(--d,0s);
  filter:drop-shadow(0 0 8px currentColor);
}
.tmcrv-plinko-idle-ball{
  opacity:0;
  animation:tmcrvPlinkoIdleBall 4.2s cubic-bezier(.18,.88,.25,1) infinite;
  animation-delay:var(--d,0s);
  transform-box:view-box;
  transform-origin:center;
  filter:drop-shadow(0 0 12px rgba(255,255,255,.76));
}
.tmcrv-plinko-bumper{
  animation:tmcrvPlinkoBumper 1.1s ease-in-out infinite;
  animation-delay:var(--d,0s);
  transform-box:fill-box;
  transform-origin:center;
}
.tmcrv-pusher-shelf{
  animation:tmcrvPusherShelf 2.15s cubic-bezier(.42,0,.2,1) infinite;
  transform-box:view-box;
  transform-origin:center;
  filter:drop-shadow(0 0 18px rgba(255,212,95,.38));
}
.tmcrv-pusher-living-field,
.tmcrv-pusher-box-deck,
.tmcrv-pusher-glass-flares{
  transform-box:view-box;
  transform-origin:center;
}
.tmcrv-pusher-table-veil{
  animation:tmcrvPusherTableBreath 2.9s ease-in-out infinite;
}
.tmcrv-pusher-table-light{
  animation:tmcrvPusherTableLight 1.4s ease-in-out infinite;
  animation-delay:var(--d,0s);
  transform-box:view-box;
  transform-origin:center;
}
.tmcrv-pusher-live-piece{
  animation:tmcrvPusherLivePiece var(--dur,2.6s) cubic-bezier(.22,1,.36,1) infinite;
  animation-delay:var(--d,0s);
  transform:translate(var(--x), var(--y)) rotate(var(--r)) scale(var(--s));
  transform-box:view-box;
  transform-origin:center;
  opacity:.72;
  filter:drop-shadow(0 10px 10px rgba(0,0,0,.58));
}
.tmcrv-pusher-live-piece.is-back-shelf{
  animation-name:tmcrvPusherBackShelfPiece;
  opacity:.52;
}
.tmcrv-pusher-live-piece.is-front-shelf{
  animation-name:tmcrvPusherFrontShelfPiece;
  opacity:.7;
}
.tmcrv-pusher-live-piece.is-gem,
.tmcrv-pusher-live-piece.is-ruby{
  animation-name:tmcrvPusherGemDrift;
  filter:drop-shadow(0 0 9px rgba(75,195,255,.34)) drop-shadow(0 10px 10px rgba(0,0,0,.55));
}
.tmcrv-pusher-piece-glint{
  animation:tmcrvPusherGlint 1.25s ease-in-out infinite;
  animation-delay:var(--d,0s);
}
.tmcrv-pusher-live-box{
  animation:tmcrvPusherLiveBox 2.8s cubic-bezier(.22,1,.36,1) infinite;
  animation-delay:var(--d,0s);
  transform:translate(var(--x), var(--y)) rotate(var(--r)) scale(var(--s));
  transform-box:view-box;
  transform-origin:center;
  opacity:.82;
  filter:drop-shadow(0 18px 18px rgba(0,0,0,.64)) drop-shadow(0 0 8px rgba(255,212,95,.22));
}
.tmcrv-pusher-live-box.is-back-box{
  animation-name:tmcrvPusherBackBox;
}
.tmcrv-pusher-live-box.is-front-box{
  animation-name:tmcrvPusherFrontBox;
}
.tmcrv-pusher-box-spark{
  animation:tmcrvPusherBoxSpark 1.18s ease-in-out infinite;
  animation-delay:var(--d,0s);
  transform-box:fill-box;
  transform-origin:center;
}
.tmcrv-pusher-flare{
  opacity:.12;
  animation:tmcrvPusherFlare 1.65s ease-in-out infinite;
  animation-delay:var(--d,0s);
  transform-box:fill-box;
  transform-origin:center;
  filter:drop-shadow(0 0 12px currentColor);
}
.tmcrv-pusher-shelf-coin{
  animation:tmcrvPusherShelfCoin 1.92s cubic-bezier(.22,1,.36,1) infinite;
  animation-delay:var(--d,0s);
  transform:translate(var(--x), var(--y)) rotate(var(--r)) scale(var(--s));
  transform-box:view-box;
  transform-origin:center;
}
.tmcrv-pusher-contact-coin{
  animation-name:tmcrvPusherContactCoin;
  animation-duration:1.78s;
  filter:drop-shadow(0 0 12px rgba(255,212,95,.5)) drop-shadow(0 8px 8px rgba(0,0,0,.48));
}
.tmcrv-pusher-piece{
  animation:tmcrvPusherPiece 2.35s ease-in-out infinite;
  animation-delay:var(--d,0s);
  transform:translate(var(--x), var(--y)) rotate(var(--r));
  transform-box:view-box;
  transform-origin:center;
  filter:drop-shadow(0 9px 10px rgba(0,0,0,.42));
}
.tmcrv-pusher-hero-token{
  animation:tmcrvPusherHeroToken 2.05s cubic-bezier(.22,1,.36,1) infinite;
  animation-delay:var(--d,0s);
  transform:translate(var(--x), var(--y)) rotate(var(--r)) scale(var(--s));
  transform-box:view-box;
  transform-origin:center;
  opacity:.86;
  filter:brightness(1.05) saturate(1.04) drop-shadow(0 12px 12px rgba(0,0,0,.58));
}
.tmcrv-pusher-hero-token.is-gem,
.tmcrv-pusher-hero-token.is-ruby{
  filter:brightness(1.08) saturate(1.12) drop-shadow(0 0 10px rgba(70,200,255,.28)) drop-shadow(0 12px 12px rgba(0,0,0,.58));
}
.tmcrv-pusher-rain-coin{
  opacity:0;
  animation:tmcrvPusherCoinRain 3.2s cubic-bezier(.3,.72,.34,1) infinite;
  animation-delay:var(--d,0s);
  transform-box:view-box;
  transform-origin:center;
  filter:drop-shadow(0 0 12px rgba(255,212,95,.58));
}
.tmcrv-wrap.is-live .tmcrv-btn:not(:disabled){
  animation:tmcrvCasinoButtonPulse 1.25s ease-in-out infinite;
}
.tmcrv-wrap.is-revealing-now .tmcrv-board.is-casino-art{
  filter:saturate(1.16) brightness(1.08);
}
.tmcrv-wrap.tmcrv-turbo-on .tmcrv-pusher-active-table,
.tmcrv-wrap.tmcrv-turbo-on .tmcrv-pusher-drawn-lane,
.tmcrv-wrap.tmcrv-turbo-on .tmcrv-pusher-drawn-led,
.tmcrv-wrap.tmcrv-turbo-on .tmcrv-pusher-cabinet-dot,
.tmcrv-wrap.tmcrv-turbo-on .tmcrv-pusher-prize-cell,
.tmcrv-wrap.tmcrv-turbo-on .tmcrv-pusher-shelf,
.tmcrv-wrap.tmcrv-turbo-on .tmcrv-pusher-table-veil,
.tmcrv-wrap.tmcrv-turbo-on .tmcrv-pusher-table-light,
.tmcrv-wrap.tmcrv-turbo-on .tmcrv-pusher-live-piece,
.tmcrv-wrap.tmcrv-turbo-on .tmcrv-pusher-piece-glint,
.tmcrv-wrap.tmcrv-turbo-on .tmcrv-pusher-live-box,
.tmcrv-wrap.tmcrv-turbo-on .tmcrv-pusher-box-spark,
.tmcrv-wrap.tmcrv-turbo-on .tmcrv-pusher-flare,
.tmcrv-wrap.tmcrv-turbo-on .tmcrv-pusher-shelf-coin,
.tmcrv-wrap.tmcrv-turbo-on .tmcrv-pusher-piece,
.tmcrv-wrap.tmcrv-turbo-on .tmcrv-pusher-hero-token,
.tmcrv-wrap.tmcrv-turbo-on .tmcrv-pusher-rain-coin{
  animation:none !important;
}
@keyframes tmcrvCabinetGlow{
  0%,100%{ box-shadow:inset 0 1px 0 rgba(255,255,255,.2), inset 0 -30px 64px rgba(0,0,0,.48), 0 24px 50px rgba(0,0,0,.52); }
  50%{ box-shadow:inset 0 1px 0 rgba(255,255,255,.2), inset 0 -30px 64px rgba(0,0,0,.48), 0 24px 56px rgba(0,0,0,.58), 0 0 34px rgba(255,212,95,.22); }
}
@keyframes tmcrvCasinoSweep{
  0%{ transform:translateX(-760px) skewX(-18deg); opacity:0; }
  18%{ opacity:.5; }
  62%{ opacity:.62; }
  100%{ transform:translateX(780px) skewX(-18deg); opacity:0; }
}
@keyframes tmcrvCasinoBulb{
  0%,100%{ opacity:.28; filter:drop-shadow(0 0 2px currentColor); }
  50%{ opacity:1; filter:drop-shadow(0 0 10px currentColor) drop-shadow(0 0 20px currentColor); }
}
@keyframes tmcrvPusherActiveTable{
  0%,100%{ transform:translateY(0) scale(1); filter:drop-shadow(0 0 12px rgba(47,183,255,.13)); }
  42%{ transform:translateY(5px) scale(1.002); filter:drop-shadow(0 0 16px rgba(255,212,95,.16)); }
  58%{ transform:translateY(-2px) scale(.998); }
}
@keyframes tmcrvPusherLaneFlow{
  0%,100%{ opacity:.13; stroke-dasharray:5 16; stroke-dashoffset:0; }
  50%{ opacity:.34; stroke-dasharray:20 8; stroke-dashoffset:-34; }
}
@keyframes tmcrvPusherLedRun{
  0%,100%{ opacity:.28; transform:scaleX(.72); }
  45%{ opacity:.96; transform:scaleX(1.18); }
}
@keyframes tmcrvPusherCabinetDot{
  0%,100%{ opacity:.28; transform:scale(.82); }
  50%{ opacity:.95; transform:scale(1.18); }
}
@keyframes tmcrvPusherPrizeCell{
  0%,100%{ transform:translateY(0); filter:drop-shadow(0 0 0 rgba(255,212,95,0)); }
  50%{ transform:translateY(-2px); filter:drop-shadow(0 0 11px rgba(255,212,95,.28)); }
}
@keyframes tmcrvCasinoSpark{
  0%,100%{ opacity:.18; transform:scale(.62) rotate(0deg); }
  50%{ opacity:1; transform:scale(1.15) rotate(28deg); }
}
@keyframes tmcrvCasinoButtonPulse{
  0%,100%{ transform:translateY(0) scale(1); filter:brightness(1); }
  50%{ transform:translateY(-1px) scale(1.018); filter:brightness(1.12); }
}
@keyframes tmcrvPlinkoRunner{
  0%,100%{ opacity:.22; transform:scale(.8); }
  50%{ opacity:1; transform:scale(1.28); }
}
@keyframes tmcrvPlinkoIdleBall{
  0%{ opacity:0; transform:translate(var(--x0), var(--y0)) scale(.72) rotate(0deg); }
  10%{ opacity:.96; }
  30%{ transform:translate(var(--x1), var(--y1)) scale(.9) rotate(130deg); }
  57%{ transform:translate(var(--x2), var(--y2)) scale(.82) rotate(272deg); }
  82%{ opacity:.92; transform:translate(var(--x3), var(--y3)) scale(.72) rotate(430deg); }
  100%{ opacity:0; transform:translate(var(--x3), calc(var(--y3) + 38px)) scale(.48) rotate(520deg); }
}
@keyframes tmcrvPlinkoBumper{
  0%,100%{ opacity:.38; transform:scale(.86); filter:drop-shadow(0 0 4px currentColor); }
  52%{ opacity:1; transform:scale(1.24); filter:drop-shadow(0 0 14px currentColor) drop-shadow(0 0 24px currentColor); }
}
@keyframes tmcrvPusherShelf{
  0%,100%{ transform:translateY(-12px); }
  38%{ transform:translateY(12px); }
  52%{ transform:translateY(30px); }
  66%{ transform:translateY(25px); }
  86%{ transform:translateY(-5px); }
}
@keyframes tmcrvPusherTableBreath{
  0%,100%{ opacity:.88; transform:scale(1); }
  50%{ opacity:.98; transform:scale(1.006); }
}
@keyframes tmcrvPusherTableLight{
  0%,100%{ opacity:.12; transform:translateY(0); }
  50%{ opacity:.55; transform:translateY(8px); }
}
@keyframes tmcrvPusherLivePiece{
  0%,100%{ opacity:1; transform:translate(var(--x), var(--y)) rotate(var(--r)) scale(var(--s)); }
  42%{ opacity:1; transform:translate(calc(var(--x) + var(--dx)), calc(var(--y) + var(--dy))) rotate(calc(var(--r) + 9deg)) scale(var(--s)); }
  66%{ opacity:1; transform:translate(calc(var(--x) + var(--dx)), calc(var(--y) + var(--dy))) rotate(calc(var(--r) + 14deg)) scale(var(--s)); }
}
@keyframes tmcrvPusherBackShelfPiece{
  0%,100%{ opacity:.96; transform:translate(var(--x), var(--y)) rotate(var(--r)) scale(var(--s)); }
  50%{ opacity:1; transform:translate(calc(var(--x) + var(--dx)), calc(var(--y) + 4px)) rotate(calc(var(--r) + 5deg)) scale(var(--s)); }
}
@keyframes tmcrvPusherFrontShelfPiece{
  0%,100%{ opacity:1; transform:translate(var(--x), var(--y)) rotate(var(--r)) scale(var(--s)); }
  37%{ transform:translate(calc(var(--x) + var(--dx)), calc(var(--y) + 5px)) rotate(calc(var(--r) + 4deg)) scale(var(--s)); }
  55%{ transform:translate(calc(var(--x) + var(--dx)), calc(var(--y) + var(--dy))) rotate(calc(var(--r) + 13deg)) scale(var(--s)); }
  74%{ transform:translate(calc(var(--x) + var(--dx) * .45), calc(var(--y) + var(--dy) + 5px)) rotate(calc(var(--r) + 17deg)) scale(var(--s)); }
}
@keyframes tmcrvPusherGemDrift{
  0%,100%{ opacity:.76; transform:translate(var(--x), var(--y)) rotate(var(--r)) scale(var(--s)); filter:drop-shadow(0 0 7px rgba(75,195,255,.25)) drop-shadow(0 10px 10px rgba(0,0,0,.5)); }
  45%{ opacity:.9; transform:translate(calc(var(--x) + var(--dx)), calc(var(--y) + var(--dy))) rotate(calc(var(--r) - 8deg)) scale(var(--s)); filter:drop-shadow(0 0 10px rgba(90,218,255,.34)) drop-shadow(0 12px 12px rgba(0,0,0,.52)); }
}
@keyframes tmcrvPusherGlint{
  0%,100%{ opacity:.2; transform:translateX(-5px) scale(.8); }
  48%{ opacity:.95; transform:translateX(5px) scale(1.08); }
}
@keyframes tmcrvPusherLiveBox{
  0%,100%{ transform:translate(var(--x), var(--y)) rotate(var(--r)) scale(var(--s)); filter:drop-shadow(0 16px 16px rgba(0,0,0,.5)); }
  42%{ transform:translate(calc(var(--x) + 5px), calc(var(--y) + 9px)) rotate(calc(var(--r) + 4deg)) scale(var(--s)); filter:drop-shadow(0 18px 18px rgba(0,0,0,.52)); }
  70%{ transform:translate(calc(var(--x) + 1px), calc(var(--y) + 14px)) rotate(calc(var(--r) - 2deg)) scale(var(--s)); }
}
@keyframes tmcrvPusherBackBox{
  0%,100%{ transform:translate(var(--x), var(--y)) rotate(var(--r)) scale(var(--s)); }
  50%{ transform:translate(calc(var(--x) + 3px), calc(var(--y) + 5px)) rotate(calc(var(--r) + 2deg)) scale(var(--s)); }
}
@keyframes tmcrvPusherFrontBox{
  0%,100%{ transform:translate(var(--x), var(--y)) rotate(var(--r)) scale(var(--s)); }
  42%{ transform:translate(calc(var(--x) + 7px), calc(var(--y) + 12px)) rotate(calc(var(--r) + 5deg)) scale(var(--s)); }
  66%{ transform:translate(calc(var(--x) + 3px), calc(var(--y) + 20px)) rotate(calc(var(--r) - 2deg)) scale(var(--s)); }
}
@keyframes tmcrvPusherBoxSpark{
  0%,100%{ opacity:.18; transform:scale(.6); }
  48%{ opacity:1; transform:scale(1.65); }
}
@keyframes tmcrvPusherFlare{
  0%,100%{ opacity:.08; transform:scale(.38) rotate(0deg); }
  50%{ opacity:.88; transform:scale(1.12) rotate(35deg); }
}
@keyframes tmcrvPusherShelfCoin{
  0%,100%{ transform:translate(var(--x), var(--y)) rotate(var(--r)) scale(var(--s)); }
  46%{ transform:translate(calc(var(--x) + 4px), calc(var(--y) + 18px)) rotate(calc(var(--r) + 42deg)) scale(var(--s)); }
  78%{ transform:translate(calc(var(--x) + 1px), calc(var(--y) + 24px)) rotate(calc(var(--r) + 68deg)) scale(var(--s)); }
}
@keyframes tmcrvPusherContactCoin{
  0%,100%{ transform:translate(var(--x), var(--y)) rotate(var(--r)) scale(var(--s)); }
  36%{ transform:translate(calc(var(--x) + 3px), calc(var(--y) + 10px)) rotate(calc(var(--r) + 28deg)) scale(var(--s)); }
  54%{ transform:translate(calc(var(--x) + 9px), calc(var(--y) + 31px)) rotate(calc(var(--r) + 76deg)) scale(var(--s)); }
  72%{ transform:translate(calc(var(--x) + 5px), calc(var(--y) + 42px)) rotate(calc(var(--r) + 108deg)) scale(var(--s)); }
}
@keyframes tmcrvPusherPiece{
  0%,100%{ opacity:.86; transform:translate(var(--x), var(--y)) rotate(var(--r)); }
  45%{ opacity:1; transform:translate(calc(var(--x) + 4px), calc(var(--y) + 10px)) rotate(calc(var(--r) + 5deg)); }
  72%{ transform:translate(calc(var(--x) + 1px), calc(var(--y) + 14px)) rotate(calc(var(--r) - 3deg)); }
}
@keyframes tmcrvPusherHeroToken{
  0%,100%{ transform:translate(var(--x), var(--y)) rotate(var(--r)) scale(var(--s)); }
  38%{ transform:translate(calc(var(--x) + 3px), calc(var(--y) + 5px)) rotate(calc(var(--r) + 3deg)) scale(var(--s)); }
  56%{ transform:translate(calc(var(--x) + 8px), calc(var(--y) + 16px)) rotate(calc(var(--r) + 10deg)) scale(var(--s)); }
  74%{ transform:translate(calc(var(--x) + 4px), calc(var(--y) + 20px)) rotate(calc(var(--r) + 14deg)) scale(var(--s)); }
}
@keyframes tmcrvPusherCoinRain{
  0%{ opacity:0; transform:translate(var(--x), var(--y0)) scale(.8) rotate(0deg); }
  12%{ opacity:1; }
  74%{ opacity:1; transform:translate(calc(var(--x) + 26px), var(--y1)) scale(.98) rotate(380deg); }
  100%{ opacity:0; transform:translate(calc(var(--x) + 42px), var(--y2)) scale(.62) rotate(520deg); }
}
@keyframes tmcrvPusherBedIdle{
  0%,100%{ transform:translate(var(--x), var(--y)) rotate(var(--r)) scale(var(--s)); }
  48%{ transform:translate(calc(var(--x) + 1.8px), calc(var(--y) + 2.4px)) rotate(calc(var(--r) + 2deg)) scale(var(--s)); }
}
@keyframes tmcrvPusherBedPush{
  0%{ transform:translate(var(--x), var(--y)) rotate(var(--r)) scale(var(--s)); filter:brightness(1) drop-shadow(0 9px 9px rgba(0,0,0,.5)); }
  18%{ transform:translate(calc(var(--x) + var(--push-dx-a)), calc(var(--y) - 5px)) rotate(calc(var(--r) + var(--push-r-a))) scale(var(--s)); filter:brightness(1.22) drop-shadow(0 12px 12px rgba(0,0,0,.58)); }
  62%{ transform:translate(calc(var(--x) + var(--push-dx)), calc(var(--y) + var(--push-dy))) rotate(calc(var(--r) + var(--push-r))) scale(var(--s)); filter:brightness(1.08) drop-shadow(0 13px 13px rgba(0,0,0,.58)); }
  100%{ transform:translate(calc(var(--x) + var(--push-dx)), calc(var(--y) + var(--push-dy))) rotate(calc(var(--r) + var(--push-r))) scale(var(--s)); filter:brightness(1) drop-shadow(0 10px 10px rgba(0,0,0,.54)); }
}
@keyframes tmcrvPusherBedGlint{
  0%,100%{ opacity:.24; transform:translateX(-4px) scale(.84); }
  45%{ opacity:.82; transform:translateX(5px) scale(1.05); }
}
.tmcrv-casino-art .tmcrv-head,
.tmcrv-wrap:has(.tmcrv-board.is-casino-art) .tmcrv-head{
  position:absolute;
  z-index:8;
  top:150px;
  left:50%;
  width:min(84%, 760px);
  transform:translateX(-50%);
  min-height:0;
  padding:0;
  border:0;
  background:transparent;
  box-shadow:none;
  pointer-events:none;
}
.tmcrv-casino-art .tmcrv-title,
.tmcrv-wrap:has(.tmcrv-board.is-casino-art) .tmcrv-title{
  display:none;
}
.tmcrv-casino-art .tmcrv-hud,
.tmcrv-wrap:has(.tmcrv-board.is-casino-art) .tmcrv-hud{
  position:static;
  transform:none;
  display:grid;
  grid-template-columns:150px 150px;
  justify-content:space-between;
  gap:10px;
  width:100%;
  pointer-events:none;
}
.tmcrv-casino-art .tmcrv-hud-chip:nth-child(2),
.tmcrv-wrap:has(.tmcrv-board.is-casino-art) .tmcrv-hud-chip:nth-child(2){
  display:none;
}
.tmcrv-casino-art .tmcrv-hud-chip,
.tmcrv-wrap:has(.tmcrv-board.is-casino-art) .tmcrv-hud-chip{
  min-width:0;
  border-radius:16px;
  background:rgba(3,7,13,.78);
  backdrop-filter:blur(8px);
  padding:8px 10px;
  font-size:9px;
}
.tmcrv-casino-art .tmcrv-sound,
.tmcrv-wrap:has(.tmcrv-board.is-casino-art) .tmcrv-sound{
  top:184px;
  right:44px;
  bottom:auto;
  pointer-events:auto;
}

@media (prefers-reduced-motion: reduce){
  .tmcrv-board.is-casino-art,
  .tmcrv-casino-sweep,
  .tmcrv-casino-bulb,
  .tmcrv-casino-spark,
  .tmcrv-plinko-runner,
  .tmcrv-plinko-idle-ball,
  .tmcrv-plinko-bumper,
  .tmcrv-pusher-active-table,
  .tmcrv-pusher-drawn-lane,
  .tmcrv-pusher-drawn-led,
  .tmcrv-pusher-cabinet-dot,
  .tmcrv-pusher-prize-cell,
  .tmcrv-pusher-shelf,
  .tmcrv-pusher-live-piece,
  .tmcrv-pusher-piece-glint,
  .tmcrv-pusher-live-box,
  .tmcrv-pusher-box-spark,
  .tmcrv-pusher-flare,
  .tmcrv-pusher-bed-coin,
  .tmcrv-pusher-bed-glint,
  .tmcrv-pusher-shelf-coin,
  .tmcrv-pusher-piece,
  .tmcrv-pusher-rain-coin,
  .tmcrv-pusher-table-veil,
  .tmcrv-pusher-table-light,
  .tmcrv-pusher-hero-token,
  .tmcrv-wrap.is-live .tmcrv-btn:not(:disabled){
    animation:none !important;
  }
}

/* ---------- keyboard focus: designed ring instead of UA default on dark cabinet ---------- */
.tmcrv-btn:focus-visible,
.tmcrv-turbo:focus-visible,
.tmcrv-sound:focus-visible,
.tmcbx-box:focus-visible{
  outline:3px solid #ffd45f;
  outline-offset:3px;
  border-radius:14px;
}

/* ============================================================
   Drop Zone live-render pusher skin (tmc-reveal-pusher-skin.js)
   Photoreal cabinet render + canvas FX layer + cabinet overlays.
   ============================================================ */
.tmcrv-board.is-live-render{ width:100%; max-width:560px; padding:0; margin:0 auto; border:none; background:none; box-shadow:none; }
.tmcpu-scene{
  position:relative; width:100%; aspect-ratio:1080/1350;
  border-radius:18px; overflow:hidden; background:#0a0812;
  box-shadow:0 0 0 1px rgba(247,201,72,.3), 0 14px 46px rgba(0,0,0,.8), 0 0 55px rgba(40,80,255,.16);
  will-change:transform;
}
.tmcpu-bg{ position:absolute; inset:0; width:100%; height:100%; display:block; user-select:none; pointer-events:none; }
.tmcpu-fx{ position:absolute; inset:0; width:100%; height:100%; display:block; pointer-events:none; }
.tmcpu-title{ position:absolute; top:4.2%; left:0; right:0; text-align:center; z-index:6; pointer-events:none; }
.tmcpu-title-main{
  display:block; font-family:Impact,"Arial Black",sans-serif;
  font-size:clamp(24px,7.4cqw,46px); letter-spacing:4px; line-height:1;
  background:linear-gradient(180deg,#eef6ff 0%,#bcdcff 30%,#4d8ce8 55%,#1e4fbe 78%,#0d2e7d 100%);
  -webkit-background-clip:text; background-clip:text; color:transparent;
  -webkit-text-stroke:1.2px rgba(247,201,72,.85);
  filter:drop-shadow(0 2px 0 rgba(0,0,0,.9)) drop-shadow(0 0 16px rgba(80,140,255,.55));
}
.tmcpu-title-tag{
  display:inline-block; margin-top:1.2%;
  font-size:clamp(7px,1.8cqw,11px); font-weight:800; letter-spacing:4px; color:#ffe9a3;
  text-shadow:0 0 8px rgba(247,201,72,.9), 0 1px 2px #000;
}
.tmcpu-scene{ container-type:inline-size; }
.tmcpu-side{ position:absolute; z-index:6; width:16.5%; display:flex; flex-direction:column; gap:6%; }
.tmcpu-side--left{ left:1.2%; top:23%; }
.tmcpu-side--right{ right:1.2%; top:23%; }
.tmcpu-plq{
  background:linear-gradient(180deg,rgba(26,22,40,.94),rgba(10,8,18,.94));
  border:1px solid rgba(247,201,72,.75); border-radius:10px;
  padding:6% 4% 8%; text-align:center;
  box-shadow:0 0 16px rgba(0,0,0,.75), inset 0 1px 0 rgba(255,255,255,.09), 0 0 10px rgba(247,201,72,.18);
}
.tmcpu-lbl{ font-size:clamp(6px,1.5cqw,9px); letter-spacing:1.6px; color:#b9a86a; font-weight:800; }
.tmcpu-val{
  font-family:Consolas,monospace; font-weight:800; color:#ffe9a3;
  font-size:clamp(12px,3.4cqw,20px); text-shadow:0 0 10px rgba(247,201,72,.75);
  overflow-wrap:anywhere;
}
.tmcpu-plq.is-win .tmcpu-val{ color:#7dffa9; text-shadow:0 0 10px rgba(80,255,150,.75); font-size:clamp(10px,2.8cqw,16px); }
.tmcpu-lad{ display:flex; flex-direction:column; gap:3px; margin-top:6%; }
.tmcpu-lad-row{
  position:relative; font-size:clamp(6px,1.7cqw,10px); font-weight:900; letter-spacing:.5px;
  border-radius:6px; padding:3px 0; border:1px solid rgba(255,255,255,.12);
  background:rgba(10,8,18,.8); color:#6f6a84;
}
.tmcpu-lad-row.is-t1{ color:#7dffa9; border-color:rgba(70,230,130,.55); text-shadow:0 0 6px rgba(70,230,130,.8); }
.tmcpu-lad-row.is-t2{ color:#7db9ff; border-color:rgba(90,160,255,.55); text-shadow:0 0 6px rgba(90,160,255,.8); }
.tmcpu-lad-row.is-t3{ color:#ffd76a; border-color:rgba(247,201,72,.55); text-shadow:0 0 6px rgba(247,201,72,.8); }
.tmcpu-lad-row.is-myst{ color:#c99bff; border-color:rgba(170,110,255,.55); text-shadow:0 0 6px rgba(170,110,255,.8); }
.tmcpu-lad-flash{
  position:absolute; inset:-1px; border-radius:6px; background:rgba(255,244,200,.85);
  opacity:0; transition:opacity .18s ease-out; pointer-events:none; mix-blend-mode:screen;
}
.tmcpu-pops{ position:absolute; inset:0; pointer-events:none; overflow:hidden; z-index:8; }
.tmcpu-pop{
  position:absolute; transform:translate(-50%,0) scale(.4);
  padding:4px 13px; border-radius:99px; font-weight:900; font-size:clamp(11px,2.8cqw,15px);
  letter-spacing:1px; white-space:nowrap; opacity:0;
  animation:tmcpuPopUp 1.5s cubic-bezier(.2,1.4,.4,1) forwards;
  border:1px solid rgba(255,255,255,.35);
  box-shadow:0 4px 18px rgba(0,0,0,.6);
}
.tmcpu-pop.is-miss{ background:#2a2536; color:#9d97b3; }
.tmcpu-pop.is-win{ background:linear-gradient(180deg,#ffe9a3,#f7c948 55%,#c98f14); color:#3a2503; box-shadow:0 0 22px rgba(247,201,72,.9); }
.tmcpu-pop.is-big{ background:linear-gradient(180deg,#b7ffcf,#22b14c 60%,#0c7a30); color:#04310f; box-shadow:0 0 26px rgba(60,255,140,.95); }
.tmcpu-pop.is-myst{ background:linear-gradient(180deg,#e2b6ff,#8a2be2 60%,#4b0f86); color:#fff; box-shadow:0 0 26px rgba(190,90,255,1); }
@keyframes tmcpuPopUp{
  0%{opacity:0; transform:translate(-50%,14px) scale(.4)}
  18%{opacity:1; transform:translate(-50%,-6px) scale(1.12)}
  30%{transform:translate(-50%,-2px) scale(1)}
  78%{opacity:1; transform:translate(-50%,-14px) scale(1)}
  100%{opacity:0; transform:translate(-50%,-30px) scale(.92)}
}
.tmcpu-myst{ position:absolute; inset:0; z-index:20; display:none; align-items:center; justify-content:center; pointer-events:none; }
.tmcpu-myst.is-show{ display:flex; }
.tmcpu-myst-card{
  background:linear-gradient(180deg,#3b1668,#1c0836);
  border:2px solid #c17bff; border-radius:18px; padding:20px 32px; text-align:center;
  box-shadow:0 0 60px rgba(170,60,255,.95), inset 0 0 30px rgba(190,110,255,.3);
  animation:tmcpuMystIn .45s cubic-bezier(.2,1.5,.4,1);
}
@keyframes tmcpuMystIn{ 0%{transform:scale(.3) rotate(-6deg);opacity:0} 100%{transform:scale(1);opacity:1} }
.tmcpu-myst-t1{ font-size:11px; letter-spacing:4px; color:#d9a9ff; font-weight:800; }
.tmcpu-myst-t2{
  font-family:Impact,"Arial Black",sans-serif; font-size:clamp(18px,5cqw,28px); letter-spacing:1px; margin-top:6px;
  background:linear-gradient(180deg,#fff,#ffd76a 60%,#c98f14);
  -webkit-background-clip:text; background-clip:text; color:transparent;
  filter:drop-shadow(0 0 14px rgba(255,215,106,.85));
}
@media (max-width: 560px){
  .tmcrv-board.is-live-render{ margin:0 auto; max-width:100%; }
  .tmcpu-scene{ border-radius:12px; }
}
@media (prefers-reduced-motion: reduce){
  .tmcpu-pop{ animation:none; opacity:1; transform:translate(-50%,-10px) scale(1); }
  .tmcpu-myst-card{ animation:none; }
  .tmcpu-scene{ transform:none !important; }
}

/* pusher live-render: the cabinet render already carries the game title, so the
   external WordArt title is hidden and the HUD row sits on a compact dark plaque */
.tmcrv-wrap[data-skin="pusher"] .tmcrv-title{ display:none; }
.tmcrv-wrap[data-skin="pusher"] .tmcrv-head{
  padding:12px 70px 12px 16px;
  border-radius:18px;
  background:linear-gradient(180deg, rgba(24,21,36,.96), rgba(9,8,16,.96));
  border:1px solid rgba(247,201,72,.4);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.08), 0 6px 16px rgba(0,0,0,.45);
}
.tmcrv-wrap[data-skin="pusher"] .tmcrv-hud{
  position:static; transform:none; width:100%;
  justify-content:center; gap:10px; pointer-events:auto;
}
.tmcrv-wrap[data-skin="pusher"] .tmcrv-sound{ top:50%; bottom:auto; margin-top:-21px; right:16px; }

/* ===== Plinko live-render skin (DROP & WIN) ===== */
.tmcrv-plinko-live-render .tmcrv-board.is-live-render{padding:0;background:none}
.tmcpl-scene{position:relative;width:100%;aspect-ratio:1080/1350;max-width:640px;margin:0 auto;border-radius:14px;overflow:hidden;background:#0a0710}
.tmcpl-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}
.tmcpl-scene.tmcpl-nobg{background:radial-gradient(120% 90% at 50% 0%,#241226 0%,#0a0710 70%)}
.tmcpl-scene.tmcpl-hasart .tmcpl-title{display:none}

/* ===== Mystery Box reveal skin ===== */
.tmcrv-box-render .tmcrv-board.is-live-render{padding:0;background:none}
.tmcbx-scene{position:relative;width:100%;max-width:640px;margin:0 auto;padding:18px 12px 22px;border-radius:14px;overflow:hidden;background:radial-gradient(120% 90% at 50% 0%,#241226 0%,#0a0710 72%)}
.tmcbx-title{text-align:center;font-weight:900;line-height:1;margin-bottom:14px}
.tmcbx-title-main{display:block;font-size:clamp(20px,6vw,40px);letter-spacing:2px;color:#ffd76a;text-shadow:0 2px 0 #7a3,0 0 18px rgba(255,80,80,.5)}
.tmcbx-title-tag{display:block;font-size:clamp(8px,2vw,13px);letter-spacing:3px;color:#ffe9a0;opacity:.9;margin-top:3px}
.tmcbx-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;max-width:440px;margin:0 auto}
.tmcbx-box{position:relative;aspect-ratio:1/1;border:0;background:none;cursor:default;perspective:600px}
.tmcbx-body{position:absolute;inset:14% 8% 6% 8%;border-radius:10px;background:linear-gradient(180deg,#b8801f,#7a4d0c);box-shadow:inset 0 -6px 12px rgba(0,0,0,.4),0 6px 14px rgba(0,0,0,.5);border:2px solid #ffdf8a}
.tmcbx-body::after{content:"?";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:clamp(22px,7vw,40px);font-weight:900;color:#fff3c4;text-shadow:0 2px 4px rgba(0,0,0,.5)}
.tmcbx-lid{position:absolute;left:6%;right:6%;top:4%;height:26%;border-radius:9px 9px 4px 4px;background:linear-gradient(180deg,#ffdf8a,#c9901f);border:2px solid #ffe9a0;transform-origin:bottom center;transition:transform .45s cubic-bezier(.34,1.56,.64,1);z-index:3}
.tmcbx-prize{position:absolute;inset:26% 10% 12% 10%;display:flex;align-items:center;justify-content:center;text-align:center;font-weight:900;font-size:clamp(12px,3.4vw,20px);color:#fff;opacity:0;transform:scale(.5);transition:opacity .3s .18s,transform .3s .18s;z-index:2}
.tmcbx-glow{position:absolute;inset:0;border-radius:12px;opacity:0;pointer-events:none;box-shadow:0 0 26px 6px rgba(255,215,110,.8);transition:opacity .3s;z-index:1}
.tmcbx-box.is-shaking{animation:tmcbxShake .5s ease}
@keyframes tmcbxShake{0%,100%{transform:translateX(0) rotate(0)}20%{transform:translateX(-4px) rotate(-3deg)}40%{transform:translateX(4px) rotate(3deg)}60%{transform:translateX(-3px) rotate(-2deg)}80%{transform:translateX(3px) rotate(2deg)}}
.tmcbx-box.is-open .tmcbx-lid{transform:rotateX(-118deg) translateY(-4px)}
.tmcbx-box.is-open .tmcbx-body::after{opacity:0}
.tmcbx-box.is-open .tmcbx-prize{opacity:1;transform:scale(1)}
.tmcbx-box.is-open.is-win .tmcbx-glow,.tmcbx-box.is-open.is-big .tmcbx-glow{opacity:1}
.tmcbx-box.is-open.is-win .tmcbx-body{background:linear-gradient(180deg,#2e8b57,#155e35)}
.tmcbx-box.is-open.is-big .tmcbx-body{background:linear-gradient(180deg,#ffd76a,#c98f1f)}
.tmcbx-box.is-open.is-big .tmcbx-prize{color:#420}
.tmcbx-box.is-open.is-miss{opacity:.55}
.tmcbx-pops{position:absolute;inset:0;pointer-events:none}
.tmcbx-pop{position:absolute;left:50%;top:46%;transform:translate(-50%,-50%);font-weight:900;font-size:clamp(15px,4vw,26px);padding:5px 12px;border-radius:12px;white-space:nowrap;animation:tmcbxPop 1.7s ease forwards}
.tmcbx-pop.is-win{color:#052;background:rgba(124,246,176,.96)}
.tmcbx-pop.is-big{color:#420;background:rgba(255,215,110,.98);font-size:clamp(18px,5vw,32px)}
.tmcbx-pop.is-myst{color:#fff;background:rgba(160,60,220,.95)}
.tmcbx-pop.is-miss{color:#fff;background:rgba(80,80,100,.9)}
@keyframes tmcbxPop{0%{opacity:0;transform:translate(-50%,-20%) scale(.6)}20%{opacity:1;transform:translate(-50%,-60%) scale(1.05)}80%{opacity:1;transform:translate(-50%,-72%) scale(1)}100%{opacity:0;transform:translate(-50%,-120%) scale(.95)}}
@media (prefers-reduced-motion:reduce){.tmcbx-box.is-shaking,.tmcbx-pop{animation:none}.tmcbx-box .tmcbx-lid,.tmcbx-box .tmcbx-prize{transition:none}}

/* ===== Box Vault reveal skin — grid layout (crate visuals from tmc-box-vault-runtime.css) ===== */
.tmcrv-boxvault .tmcrv-board.is-live-render{padding:10px;background:none}
.tmcrv-boxvault-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;max-width:760px;margin:0 auto;padding:8px;list-style:none}
.tmcrv-boxvault-grid .tmvb-box{aspect-ratio:1/1;width:100%;margin:0}
@media (max-width:560px){.tmcrv-boxvault-grid{grid-template-columns:repeat(3,1fr);gap:10px}}
.tmcpl-fx{position:absolute;inset:0;width:100%;height:100%;z-index:2}
.tmcpl-title{position:absolute;top:2.5%;left:0;right:0;z-index:3;text-align:center;pointer-events:none;font-weight:900;line-height:1}
.tmcpl-title-main{display:block;font-size:clamp(20px,6vw,44px);letter-spacing:2px;color:#ffd76a;text-shadow:0 2px 0 #7a3, 0 0 18px rgba(255,80,80,.5)}
.tmcpl-title-tag{display:block;font-size:clamp(8px,2vw,13px);letter-spacing:3px;color:#ffe9a0;opacity:.9;margin-top:2px}
.tmcpl-side{position:absolute;top:18%;z-index:3;display:flex;flex-direction:column;gap:8px;width:20%}
.tmcpl-side--left{left:1.5%}.tmcpl-side--right{right:1.5%}
.tmcpl-plq{background:rgba(8,6,14,.72);border:1px solid rgba(247,201,72,.35);border-radius:10px;padding:6px 8px;backdrop-filter:blur(2px)}
.tmcpl-plq.is-win{border-color:rgba(110,255,170,.5)}
.tmcpl-lbl{font-size:9px;letter-spacing:1.5px;color:#99bdb4;text-transform:uppercase}
.tmcpl-val{font-size:clamp(13px,3vw,20px);font-weight:800;color:#ffe9a0}
.tmcpl-plq.is-win .tmcpl-val{color:#7cf6b0}
.tmcpl-xp{height:5px;border-radius:3px;background:rgba(255,255,255,.12);overflow:hidden;margin-top:4px}
.tmcpl-xp-fill{display:block;height:100%;width:0;background:linear-gradient(90deg,#f7c948,#7cf6b0);transition:width .5s ease}
.tmcpl-lad{display:flex;flex-direction:column;gap:3px;margin-top:4px}
.tmcpl-lad-row{position:relative;font-size:11px;font-weight:700;color:#ffe9a0;padding:2px 6px;border-radius:6px;background:rgba(255,255,255,.05);overflow:hidden}
.tmcpl-lad-row.is-t1{background:linear-gradient(90deg,rgba(255,80,80,.25),transparent)}
.tmcpl-lad-row.is-t2{background:linear-gradient(90deg,rgba(247,201,72,.22),transparent)}
.tmcpl-lad-row.is-myst{background:linear-gradient(90deg,rgba(190,90,255,.25),transparent);color:#e6c4ff}
.tmcpl-lad-row.is-miss{color:#9aa}
.tmcpl-lad-flash{position:absolute;inset:0;background:rgba(255,255,255,.85);opacity:0;pointer-events:none}
.tmcpl-lad-flash.is-lit{animation:tmcplLad .5s ease}
@keyframes tmcplLad{0%{opacity:.8}100%{opacity:0}}
.tmcpl-pops{position:absolute;inset:0;z-index:4;pointer-events:none}
.tmcpl-pop{position:absolute;transform:translate(-50%,-50%);font-weight:900;font-size:clamp(13px,3.4vw,22px);padding:4px 10px;border-radius:10px;white-space:nowrap;animation:tmcplPop 1.6s ease forwards}
.tmcpl-pop.is-win{color:#052;background:rgba(124,246,176,.95)}
.tmcpl-pop.is-big{color:#420;background:rgba(255,215,110,.97);font-size:clamp(16px,4.4vw,30px)}
.tmcpl-pop.is-myst{color:#fff;background:rgba(160,60,220,.95)}
.tmcpl-pop.is-miss{color:#fff;background:rgba(80,80,100,.9)}
@keyframes tmcplPop{0%{opacity:0;transform:translate(-50%,-30%) scale(.6)}20%{opacity:1;transform:translate(-50%,-60%) scale(1.05)}80%{opacity:1;transform:translate(-50%,-70%) scale(1)}100%{opacity:0;transform:translate(-50%,-110%) scale(.95)}}
@media (prefers-reduced-motion: reduce){.tmcpl-pop,.tmcpl-lad-flash.is-lit{animation:none}}

/* Mobile form containment for reveal games: keep title, HUD chips, sound and
   control buttons inside the game frame without changing the wheel runtime. */
@media (max-width:760px){
  .tmcrv-wrap,
  .tmcrv-wrap *,
  .tmcrv-wrap *::before,
  .tmcrv-wrap *::after{
    box-sizing:border-box;
  }
  .tmcrv-wrap{
    max-width:100%;
    overflow:hidden;
  }
  .tmcrv-stage{
    width:100%;
    max-width:100%;
    padding:14px 10px 20px !important;
    gap:10px !important;
    overflow:hidden;
  }
  .tmcrv-head{
    display:grid !important;
    grid-template-columns:minmax(0,1fr) auto;
    grid-template-areas:
      "title sound"
      "hud hud";
    align-items:center;
    justify-content:stretch;
    gap:9px 10px !important;
    width:100%;
    max-width:100%;
    min-width:0;
    padding:12px 10px !important;
    overflow:hidden;
  }
  .tmcrv-title{
    grid-area:title;
    min-width:0 !important;
    max-width:100%;
    text-align:left;
    overflow:hidden;
  }
  .tmcrv-wordart-text{
    max-width:100%;
    font-size:clamp(28px, 10vw, 46px) !important;
    line-height:.94 !important;
    letter-spacing:1.5px !important;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:clip;
    -webkit-text-stroke:1.15px rgba(83,44,0,.96);
  }
  .tmcrv-title-sub{
    min-width:0 !important;
    max-width:100%;
    padding:3px 10px 4px !important;
    font-size:10px !important;
    letter-spacing:1.2px !important;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  .tmcrv-sound{
    grid-area:sound;
    position:static !important;
    width:42px !important;
    height:42px !important;
    min-width:42px !important;
    margin:0 !important;
    place-self:center end;
  }
  .tmcrv-hud{
    grid-area:hud;
    position:static !important;
    left:auto !important;
    right:auto !important;
    top:auto !important;
    bottom:auto !important;
    transform:none !important;
    display:grid !important;
    grid-template-columns:repeat(3,minmax(0,1fr));
    width:100%;
    max-width:100%;
    gap:6px !important;
    justify-content:stretch !important;
    pointer-events:auto;
  }
  .tmcrv-hud-chip{
    width:auto;
    min-width:0 !important;
    max-width:100%;
    flex:none !important;
    padding:7px 4px !important;
    border-radius:14px !important;
    overflow:hidden;
    font-size:8.5px !important;
    line-height:1.05 !important;
    letter-spacing:.45px !important;
    white-space:nowrap;
  }
  .tmcrv-hud-chip b{
    display:block;
    max-width:100%;
    overflow:hidden;
    text-overflow:ellipsis;
    font-size:14px !important;
    line-height:1.05 !important;
  }
  .tmcrv-board{
    max-width:100%;
    margin-left:0 !important;
    margin-right:0 !important;
    overflow:hidden;
  }
  .tmcrv-controls{
    max-width:100%;
    justify-content:center;
    align-items:stretch;
  }
  .tmcrv-btn,
  .tmcrv-turbo{
    min-width:0 !important;
    max-width:100%;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
}

@media (max-width:380px){
  .tmcrv-wordart-text{
    font-size:clamp(25px, 9.2vw, 38px) !important;
    letter-spacing:1px !important;
  }
  .tmcrv-hud{
    gap:5px !important;
  }
  .tmcrv-hud-chip{
    padding:6px 3px !important;
    font-size:7.8px !important;
    letter-spacing:.25px !important;
  }
  .tmcrv-hud-chip b{
    font-size:13px !important;
  }
  .tmcrv-btn{
    font-size:13px !important;
    letter-spacing:.6px !important;
  }
}

/* Confirmed ticket results after Reveal (owner 2026-10-16: dark like the game page, buttons that read clearly). */
.tmcrv-summary .tmcrv-result-report { width: 100%; max-width: none; box-sizing: border-box; padding: clamp(16px,3vw,28px); border: 2px solid rgba(255,212,95,.55); border-radius: 14px; background: rgba(4,7,14,.95); color: #e8eef8; text-shadow: none; transform: none; text-align: left; box-shadow: 0 0 28px rgba(255,212,95,.18), 0 14px 30px rgba(0,0,0,.55); }
.tmcrv-result-report .tmcrv-summary-title { display: block; margin: 0 0 18px; color: #ffd45f; font-size: clamp(21px,3.5vw,30px); line-height: 1.3; text-shadow: 0 0 14px rgba(255,212,95,.35); text-align: center; }
.tmcrv-result-report section { margin-top: 22px; }
.tmcrv-result-report h4 { margin: 0 0 10px; font-size: 18px; line-height: 1.4; }
.tmcrv-result-report p { margin: 12px 0; font-size: 15px; line-height: 1.5; color: #cfd9e8; }
.tmcrv-result-rows { padding: 0; margin: 0; list-style: none; }
.tmcrv-result-rows li { display: grid; grid-template-columns: minmax(100px,1fr) minmax(0,2fr); gap: 16px; padding: 13px 0; border-bottom: 1px solid rgba(255,255,255,.12); font-size: 16px; line-height: 1.5; overflow-wrap: anywhere; }
.tmcrv-result-rows li > span { text-align: right; }
.tmcrv-result-report [data-result-group="wins"] { color: #4be38f; }
.tmcrv-result-report [data-result-group="non_winners"] { color: #b6c3d8; }
.tmcrv-result-report nav, .tmcrv-result-links { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; margin-top: 22px; }
.tmcrv-result-report button[data-result-page], .tmcrv-summary .tmcrv-result-links a { display: inline-flex; align-items: center; justify-content: center; box-sizing: border-box; min-height: 48px; padding: 10px 18px; border: 2px solid rgba(255,255,255,.8) !important; border-radius: 10px; background: transparent !important; color: #fff !important; font-size: 15px; font-weight: 800; letter-spacing: .4px; line-height: 1.3; text-transform: uppercase; text-decoration: none !important; text-shadow: none; box-shadow: none; cursor: pointer; transition: background-color .15s ease, transform .1s ease; }
.tmcrv-result-report button[data-result-page]:hover, .tmcrv-summary .tmcrv-result-links a:hover { background: rgba(255,255,255,.12) !important; }
.tmcrv-summary .tmcrv-result-links a:last-child { border-color: #19d66f !important; background: #19d66f !important; color: #03230f !important; }
.tmcrv-summary .tmcrv-result-links a:last-child:hover { background: #3ee88a !important; }
/* owner 2026-10-17: the game's own AGAIN button (OPEN SAFE AGAIN...) sits under OPEN MORE, not on top of it */
.tmcrv-summary .tmcrv-btn--again { display: flex; margin-top: 12px; }

/* Owner 2026-10-17 "на мобиле тормозят конкурсы при массовой анимации" (white, missing crates during REVEAL ALL): phones keep the
   same crates and the same bang, drawn without filter layers. Soft glows are already gradients, so their blur goes; the
   explosion pieces (is-lite, tmc-reveal-box-skin.js) lose the big glow shadows that made every piece a costly layer. */
@media (max-width: 1023px), (pointer: coarse) {
  .tmcrv-boxvault .tmvb-luxe-corner,
  .tmcrv-boxvault .tmvb-luxe-aura,
  .tmcrv-boxvault .tmvb-luxe-ribbon { filter: none !important; }
  .tmcrv-boxvault .tmvb-luxe-shadow { filter: none !important; background: radial-gradient(ellipse at 50% 50%, rgba(0,0,0,.8), rgba(0,0,0,.38) 46%, transparent 72%) !important; }
  .tmvb-explosion.is-lite .tmvb-spark { height: 4px; box-shadow: none; background: linear-gradient(90deg, #fff, #ffe68c 30%, #ff6a00 64%, rgba(255,0,170,0)); }
  .tmvb-explosion.is-lite .tmvb-coin { width: 15px; height: 15px; margin: -7.5px 0 0 -7.5px; box-shadow: none; background: radial-gradient(circle at 35% 30%, #fffbe0, #f3c95a 42%, #b57a1c 72%, #6c4719); }
  .tmvb-explosion.is-lite .tmvb-shard { box-shadow: none; }
  .tmvb-explosion.is-lite .tmvb-smoke { filter: none; }
  .tmvb-explosion.is-lite .tmvb-shockwave { box-shadow: 0 0 14px rgba(255,90,20,.85), inset 0 0 10px rgba(255,255,255,.45); }
}
/* Owner 2026-10-17 "боксы надо ещё облегчить когда жму открыть все то тормозит, а должно круто плавно", "если бегущие огоньки
   сильно грузят, то можно их убрать": on phones everything that moves during REVEAL ALL moves on the GPU only (transform and
   opacity) - the crate's shake and the blast pop without filters, the crate frame changes colour without transitions, and the
   frame bulbs stay lit without chasing; a win still flashes them (opacity). Same sequence, same timing. */
@media (max-width: 1023px), (pointer: coarse) {
  .tmcrv-boxvault .tmvb-box.is-opening .tmvb-crate { animation-name: tmcrvCrateShakeLite; }
  .tmcrv-boxvault .tmvb-box.is-blast { animation: tmcrvBoxPopLite .42s ease-out; }
  .tmcrv-boxvault .tmvb-box { transition: transform .18s ease, opacity .18s ease !important; }
}
@keyframes tmcrvCrateShakeLite {
  0%,100% { transform: translate3d(0,0,0) rotateZ(0) scale(1.04); }
  20% { transform: translate3d(-4px,2px,0) rotateZ(-2.5deg) scale(1.08); }
  45% { transform: translate3d(3px,-3px,0) rotateZ(2.3deg) scale(1.11); }
  70% { transform: translate3d(5px,1px,0) rotateZ(-1.5deg) scale(1.07); }
}
@keyframes tmcrvBoxPopLite { 0% { transform: scale(1.08); } 100% { transform: scale(1); } }
/* Owner 2026-10-18: the crate has weight. Before the blast it no longer buzzes (four stacked 0.1 s jitters): it rocks like a heavy
   crate with the pressure building inside, a little further each swing, and its lid rises slowly, then the blast. */
.tmcrv-boxvault .tmvb-box.is-igniting { animation:none; }
.tmcrv-boxvault .tmvb-box.is-opening .tmvb-luxe-box,
.tmcrv-boxvault .tmvb-box.is-opening .tmvb-luxe-aura { animation:none; }
.tmcrv-boxvault .tmvb-box.is-opening .tmvb-crate { animation:tmcrvCrateRock .64s linear both; }
.tmcrv-boxvault .tmvb-box.is-opening .tmvb-luxe-gem { animation:tmcrvGemSwell .32s ease-in-out infinite alternate; }
.tmcrv-boxvault .tmvb-luxe-lid { transition:transform .62s cubic-bezier(.5,0,.3,1), box-shadow .62s ease-in; }
@keyframes tmcrvCrateRock{
  0%{ transform:translate3d(0,0,0) rotateZ(0) scale(1.03); animation-timing-function:cubic-bezier(.45,0,.55,1); }
  16%{ transform:translate3d(-3px,1px,0) rotateZ(-2deg) scale(1.05); animation-timing-function:cubic-bezier(.45,0,.55,1); }
  38%{ transform:translate3d(3px,0,0) rotateZ(2.6deg) scale(1.07); animation-timing-function:cubic-bezier(.45,0,.55,1); }
  60%{ transform:translate3d(-4px,2px,0) rotateZ(-3.4deg) scale(1.1); animation-timing-function:cubic-bezier(.45,0,.55,1); }
  82%{ transform:translate3d(4px,-1px,0) rotateZ(4deg) scale(1.13); animation-timing-function:cubic-bezier(.45,0,.55,1); }
  100%{ transform:translate3d(0,-4px,0) rotateZ(0) scale(1.15); }
}
@keyframes tmcrvGemSwell{ from{ transform:scale(1); filter:brightness(1); } to{ transform:scale(1.2); filter:brightness(1.7); } }
@media (prefers-reduced-motion:reduce){
  .tmcrv-boxvault .tmvb-box.is-opening .tmvb-crate, .tmcrv-boxvault .tmvb-box.is-opening .tmvb-luxe-gem{ animation:none; }
  .tmcrv-boxvault .tmvb-luxe-lid{ transition:none; }
}
/* the Mystery Box explosions' own layer (tmc-reveal-box-skin.js): fixed over the viewport, contained, never catches taps */
.tmvb-fx-host { position: fixed; inset: 0; z-index: 100000; pointer-events: none; contain: strict; }
.tmcrv-result-report button[data-result-page]:active, .tmcrv-summary .tmcrv-result-links a:active { transform: translateY(1px); }
.tmcrv-result-report :focus-visible { outline: 3px solid #ffd45f; outline-offset: 3px; }
@media(max-width:600px) { .tmcrv-result-rows li { grid-template-columns: minmax(0,1fr); gap: 4px; } .tmcrv-result-rows li > span { text-align: left; } .tmcrv-summary .tmcrv-result-links a { flex: 1; } }

/* The box reveal shares the cabinet skin, but its title and plain result markup
   need their own space instead of the standalone game's overlaid HUD/prize art. */
.tmcrv-wrap[data-skin="box"] .tmcrv-head {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) 44px;
  grid-template-areas: "title sound" "hud hud";
  align-items: center;
  gap: 10px 12px !important;
  padding: 12px !important;
  min-width: 0;
  box-sizing: border-box;
}
.tmcrv-wrap[data-skin="box"] .tmcrv-title {
  grid-area: title;
  min-width: 0;
  max-width: 100%;
  text-align: center;
}
.tmcrv-wrap[data-skin="box"] .tmcrv-wordart-text {
  display: block;
  font-size: clamp(18px, 5.5vw, 36px) !important;
  line-height: 1.1 !important;
  letter-spacing: .6px !important;
  white-space: normal;
  overflow-wrap: anywhere;
  background-clip: text;
  -webkit-background-clip: text;
}
.tmcrv-wrap[data-skin="box"] .tmcrv-hud {
  grid-area: hud;
  position: static !important;
  transform: none !important;
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px !important;
  min-width: 0;
  max-width: 100%;
}
.tmcrv-wrap[data-skin="box"] .tmcrv-hud-chip { min-width: 0; }
.tmcrv-wrap[data-skin="box"] .tmcrv-sound {
  grid-area: sound;
  position: static !important;
  width: 44px !important;
  height: 44px !important;
  min-width: 44px !important;
}
.tmcrv-wrap[data-skin="box"] .tmvb-box.is-opened .tmvb-box-result {
  inset: 22px 5px 5px !important;
  min-height: 0 !important;
  place-items: center !important;
  align-content: center;
  gap: 4px;
}
.tmcrv-wrap[data-skin="box"] .tmvb-box-result b {
  max-width: 100%;
  line-height: 1.2;
  overflow-wrap: anywhere;
}

/* Owner 2026-10-17 game chrome: ("убери эти кнопки ... оставшиеся 2 равномерно и супер красиво", "название игры сделай прозрачным на шапку равномерно красиво")
   - the WordArt title is gold letters only: a later `background:` shorthand reset background-clip, which painted the gradient as a box;
   - on phones the title and its tag sit centred in the header, the sound button keeps its corner;
   - the controls are exactly two (drop one / reveal all): one row, equal width and height. */
.tmcrv-wrap .tmcrv-wordart-text{
  -webkit-background-clip:text !important; background-clip:text !important;
  color:transparent !important; -webkit-text-fill-color:transparent;
  background-color:transparent !important; box-shadow:none !important; border:0 !important;
}
.tmcrv-wrap .tmcrv-controls{
  display:grid !important; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:12px !important;
  align-items:stretch; justify-items:stretch; width:100%; max-width:560px; margin-left:auto; margin-right:auto;
}
.tmcrv-wrap .tmcrv-controls .tmcrv-btn{
  display:flex; align-items:center; justify-content:center; gap:8px;
  width:100%; min-width:0 !important; min-height:58px; margin:0 !important;
  padding:12px 14px 14px !important; border-radius:999px;
  font-size:clamp(14px, 3.4vw, 18px) !important; font-weight:900; letter-spacing:1.6px !important;
  line-height:1.05; white-space:nowrap; text-align:center;
}
.tmcrv-wrap .tmcrv-controls .tmcrv-btn [data-hook="tmcrv-revealall-count"]:empty{ display:none; }
.tmcrv-wrap .tmcrv-controls .tmcrv-btn [data-hook="tmcrv-revealall-count"]{
  display:inline-flex; align-items:center; justify-content:center; min-width:30px; height:26px; padding:0 8px;
  border-radius:999px; background:rgba(18,13,5,.78); color:#ffe9a0; font-size:13px; letter-spacing:.5px; text-shadow:none;
}
/* header, every width: the title and its tag centred on top, the three HUD counters in one even row under it,
   the sound button in its corner (before, the counters were laid over the title on desktop) */
.tmcrv-wrap[data-skin] .tmcrv-head{
  position:relative; display:grid !important;
  grid-template-columns:minmax(0, 1fr) !important;
  grid-template-areas: "title" "hud" !important;
  justify-items:stretch; align-items:center; gap:12px !important;
}
.tmcrv-wrap[data-skin] .tmcrv-title{
  grid-area:title; display:flex !important; flex-direction:column; align-items:center; justify-content:center; gap:6px;
  text-align:center !important; min-width:0 !important; max-width:100%; padding:0 64px;
}
.tmcrv-wrap[data-skin] .tmcrv-wordart-text{
  display:block; text-align:center; white-space:nowrap !important; max-width:100%;
  font-size:clamp(34px, 4.6vw, 64px) !important; letter-spacing:3px !important; line-height:1 !important;
}
.tmcrv-wrap[data-skin] .tmcrv-title-sub{ margin:0 auto !important; }
.tmcrv-wrap[data-skin] .tmcrv-hud{
  grid-area:hud; position:static !important; transform:none !important; inset:auto !important;
  display:grid !important; grid-template-columns:repeat(3, minmax(0, 1fr)) !important; gap:10px !important;
  width:100%; max-width:720px; margin:0 auto; justify-content:stretch;
}
.tmcrv-wrap[data-skin] .tmcrv-hud-chip{ display:flex !important; min-width:0 !important; width:auto !important; position:static !important; }
.tmcrv-wrap[data-skin] .tmcrv-sound{ position:absolute !important; top:12px !important; right:12px !important; bottom:auto !important; left:auto !important; margin:0 !important; }
@media (max-width:760px){
  .tmcrv-wrap[data-skin] .tmcrv-head{ gap:9px !important; }
  .tmcrv-wrap[data-skin] .tmcrv-title{ padding:0 46px; gap:4px; }
  .tmcrv-wrap[data-skin] .tmcrv-wordart-text{ font-size:clamp(24px, 8vw, 44px) !important; letter-spacing:1.5px !important; }
  .tmcrv-wrap[data-skin] .tmcrv-hud{ gap:6px !important; }
  .tmcrv-wrap[data-skin] .tmcrv-sound{ top:10px !important; right:10px !important; }
  /* the longest name (MYSTERY BOX) gets a smaller size so it never clips */
  .tmcrv-wrap[data-skin="box"] .tmcrv-wordart-text{ font-size:clamp(20px, 6vw, 38px) !important; letter-spacing:1px !important; }
  .tmcrv-wrap[data-skin="box"] .tmcrv-title{ padding:0 42px; }
  .tmcrv-wrap .tmcrv-controls{ gap:10px !important; }
  .tmcrv-wrap .tmcrv-controls .tmcrv-btn{ min-height:54px; padding:11px 8px 13px !important; letter-spacing:1px !important; }
}

/* Owner 2026-10-17: PLAY AGAIN! over the board after a winning batch (with the voice). Never clickable. Sized from the
   board's own width (container units), never the viewport, so it always fits; straight, letters fly in one by one with a
   small spring, then the word lifts away and fades. */
.tmcrv-playagain{
  position:absolute; inset:0; z-index:500; display:grid; place-items:center; pointer-events:none; overflow:hidden;
  container-type:inline-size;
  /* a dark ribbon behind the word so the board's plaques never show through the letters, plus the gold flare */
  background:
    radial-gradient(circle at 50% 50%, rgba(255,212,95,.3) 0, rgba(255,140,0,.08) 30%, transparent 60%),
    linear-gradient(180deg, transparent 34%, rgba(5,6,12,.72) 42%, rgba(5,6,12,.72) 58%, transparent 66%);
  animation:tmcrvPlayAgainFlare 2.8s ease-out forwards;
}
.tmcrv-playagain-word{
  display:flex; flex-wrap:wrap; justify-content:center; align-items:center; row-gap:.1em; max-width:92%; text-align:center;
  font-size:clamp(24px, 7vw, 64px); font-size:clamp(24px, 10.5cqw, 92px);
  font-size:clamp(22px, max(6cqw, min(10.5cqw, calc(140cqw / var(--len, 11)))), 92px); line-height:1; letter-spacing:.02em;
  animation:tmcrvPlayAgainOut 2.8s cubic-bezier(.5,0,.75,0) forwards;
}
.tmcrv-playagain-letter{
  display:inline-block;
  font-family:'TMC Exo', 'Exo 2', inherit; font-weight:900; text-transform:uppercase;
  background:linear-gradient(180deg, #fffef1 0%, #fff2a6 24%, #ffd45f 46%, #e58d08 70%, #7a3600 100%);
  -webkit-background-clip:text; background-clip:text; color:transparent; -webkit-text-fill-color:transparent;
  -webkit-text-stroke:.03em rgba(83,44,0,.95);
  filter:drop-shadow(0 .04em 0 #3a1a00) drop-shadow(0 0 .2em rgba(255,212,95,.7)) drop-shadow(0 .16em .2em rgba(0,0,0,.65));
  animation:tmcrvLetterIn .6s cubic-bezier(.2,1.45,.42,1) both;
  animation-delay:calc(var(--i, 0) * 45ms);
}
.tmcrv-callout-chunk{ display:inline-flex; white-space:nowrap; }
.tmcrv-callout-space{ display:inline-block; width:.28em; }
/* the prize name: same gold letters, a green-gold glow; it does not lift away - it flies into the WON counter (JS) */
.tmcrv-callout--prize .tmcrv-playagain-word{ animation:none; }
.tmcrv-callout--prize .tmcrv-playagain-letter{
  background:linear-gradient(180deg, #ffffff 0%, #fff6c8 22%, #ffe27a 44%, #f0a91a 70%, #8a4a00 100%);
  -webkit-background-clip:text; background-clip:text;
  filter:drop-shadow(0 .04em 0 #3a1a00) drop-shadow(0 0 .24em rgba(75,227,143,.55)) drop-shadow(0 .16em .2em rgba(0,0,0,.65));
}
.tmcrv-callout--prize.is-flying{ overflow:visible; background:none; animation:none; z-index:600; }
.tmcrv-hud-chip.is-crediting{ animation:tmcrvChipPop .8s cubic-bezier(.2,1.4,.4,1); }
@keyframes tmcrvChipPop{ 0%{ transform:scale(1); } 30%{ transform:scale(1.14); box-shadow:0 0 26px rgba(75,227,143,.75); border-color:rgba(75,227,143,.9); } 100%{ transform:scale(1); } }
@media (prefers-reduced-motion:reduce){ .tmcrv-hud-chip.is-crediting{ animation:none; } }
@keyframes tmcrvLetterIn{ 0%{ opacity:0; transform:translateY(80%) scale(.35); } 55%{ opacity:1; } 100%{ opacity:1; transform:none; } }
@keyframes tmcrvPlayAgainOut{ 0%, 74%{ opacity:1; transform:none; } 100%{ opacity:0; transform:translateY(-40%) scale(1.1); } }
@keyframes tmcrvPlayAgainFlare{ 0%{ opacity:0; } 16%{ opacity:1; } 74%{ opacity:.85; } 100%{ opacity:0; } }
.tmcrv-playagain.is-reduced .tmcrv-playagain-letter{ animation:none; }
.tmcrv-playagain.is-reduced .tmcrv-playagain-word{ animation-name:tmcrvPlayAgainFade; animation-timing-function:ease; }
@keyframes tmcrvPlayAgainFade{ 0%{ opacity:0; } 15%{ opacity:1; } 80%{ opacity:1; } 100%{ opacity:0; } }
@media (prefers-reduced-motion:reduce){
  .tmcrv-playagain-letter{ animation:none !important; }
  .tmcrv-playagain-word{ animation-name:tmcrvPlayAgainFade !important; transform:none !important; }
}

/* Owner 2026-10-17: in Mystery Box a box you can open looks tappable, and the tapped box flashes as it blows open. */
.tmcrv-wrap.tmcrv-has-pending[data-busy="0"] .tmvb-box:not(.is-opened):not(.is-opening){ cursor:pointer; }
@media (hover:hover){
  .tmcrv-wrap.tmcrv-has-pending[data-busy="0"] .tmvb-box:not(.is-opened):not(.is-opening):hover{ filter:brightness(1.15) drop-shadow(0 0 14px rgba(255,212,95,.45)); }
}
.tmvb-box.is-blast{ animation:tmcrvBoxBlast .42s ease-out; }
@keyframes tmcrvBoxBlast{ 0%{ filter:brightness(2.4) saturate(1.4); } 100%{ filter:none; } }
@media (prefers-reduced-motion:reduce){ .tmvb-box.is-blast{ animation:none; } }

/* Owner 2026-10-17 (Mystery Box on a phone): the crate fills its cell, the prize reads large inside an opened cell, a fresh
   set of crates drops in when all are open; the header counters are large and readable in every game. */
.tmcrv-boxvault-grid{ grid-template-columns:repeat(4, minmax(0, 1fr)) !important; }
.tmcrv-boxvault-grid .tmvb-box{ padding:2px !important; container-type:inline-size; min-width:0 !important; }
.tmcrv-boxvault-grid .tmvb-box .tmvb-luxe-crate{ width:100% !important; height:100% !important; }
.tmcrv-boxvault-grid .tmvb-luxe-box{ scale:1.04; } /* owner: a little smaller than 1.3, a margin around the crate */
.tmcrv-boxvault-grid .tmvb-box.is-opened .tmvb-box-result{ display:grid; place-items:center; align-content:center; gap:.2em; padding:4px; }
.tmcrv-boxvault-grid .tmvb-box-result b{ font-size:clamp(16px, 21cqw, 46px) !important; line-height:1 !important; font-weight:900; letter-spacing:.01em; }
.tmcrv-boxvault-grid .tmvb-box-result span{ font-size:clamp(9px, 10cqw, 18px) !important; margin-top:0 !important; letter-spacing:.12em; text-transform:uppercase; }
.tmcrv-boxvault-grid .tmvb-box.is-opened.is-win .tmvb-box-result b{ color:#ffe27a; text-shadow:0 0 12px rgba(255,212,95,.8), 0 2px 0 #5a2c00; }
.tmcrv-boxvault-grid .tmvb-box.is-opened:not(.is-win) .tmvb-box-result b{ color:#aeb8ca; }
/* Owner 2026-10-18: the fresh set of crates drops in with gravity: each falls (slow at first, then faster), lands with a squash,
   rebounds a little and settles, losing energy at every bounce. */
.tmcrv-boxvault-grid.is-refilling .tmvb-box{ animation:tmcrvBoxRefill .85s linear both; animation-delay:calc(var(--refill-i, 0) * 55ms); }
@keyframes tmcrvBoxRefill{
  0%{ opacity:0; transform:translateY(-44px) scale(.62); animation-timing-function:cubic-bezier(.55,.05,.85,.4); }
  12%{ opacity:1; }
  50%{ opacity:1; transform:translateY(0) scale(1.05,.93); animation-timing-function:cubic-bezier(.15,.6,.35,1); }
  66%{ transform:translateY(-10px) scale(.99,1.02); animation-timing-function:cubic-bezier(.65,0,.85,.4); }
  80%{ transform:translateY(0) scale(1.02,.98); animation-timing-function:cubic-bezier(.15,.6,.35,1); }
  89%{ transform:translateY(-3px); animation-timing-function:cubic-bezier(.65,0,.85,.4); }
  96%{ transform:translateY(0); animation-timing-function:ease-out; }
  100%{ opacity:1; transform:none; }
}
@media (prefers-reduced-motion:reduce){ .tmcrv-boxvault-grid.is-refilling .tmvb-box{ animation:none; } }
@media (max-width:760px){
  .tmcrv-wrap[data-skin] .tmcrv-hud-chip{ font-size:11px !important; letter-spacing:.08em !important; padding:8px 6px !important; gap:2px !important; }
  .tmcrv-wrap[data-skin] .tmcrv-hud-chip b{ font-size:clamp(18px, 5.6vw, 24px) !important; line-height:1.05 !important; }
  .tmcrv-boxvault-grid{ grid-template-columns:repeat(3, minmax(0, 1fr)) !important; gap:8px !important; padding:4px !important; }
}
/* the theme paints <strong> dark blue: the ticket number in the result card must stay readable on the dark card */
.tmcrv-summary .tmcrv-result-rows li strong{ color:#ffffff !important; font-weight:800; }

/* Plinko in-board plaques on phones: labels and ladder rows sized from the board width, one line each
   ("WINNI NGS", "PRIZE S", "NO / WIN" used to wrap). */
.tmcpl-scene{ container-type:inline-size; }
.tmcpl-lbl{ font-size:clamp(6px, 2.05cqw, 10px) !important; letter-spacing:.07em !important; white-space:nowrap; overflow:hidden; text-overflow:clip; }
.tmcpl-val{ font-size:clamp(11px, 4.4cqw, 22px) !important; white-space:nowrap; }
.tmcpl-plq{ padding:clamp(4px, 1.2cqw, 8px) clamp(4px, 1.4cqw, 9px) !important; }
.tmcpl-lad-row{ font-size:clamp(8px, 2.5cqw, 12px) !important; white-space:nowrap; padding:2px clamp(3px, 1cqw, 6px) !important; }

/* Owner 2026-10-17 "сделай их эффектными крутыми как в казино автоматах" - decoration only, no logic.
   1. (removed 2026-10-18, owner: "эти лампочки убери на всех играх") the chasing marquee bulbs around the game frame */
/* 2. a win: rotating light rays behind the prize name and a fountain of gold coins (the prize call-out stays on top) */
.tmcrv-winfx{ position:absolute; inset:0; z-index:450; pointer-events:none; overflow:hidden; container-type:inline-size; }
.tmcrv-winfx-rays{
  position:absolute; left:50%; top:50%; width:170cqw; height:170cqw; margin:-85cqw 0 0 -85cqw; border-radius:50%;
  background:repeating-conic-gradient(from 0deg, rgba(255,226,140,0) 0deg 9deg, rgba(255,226,140,.3) 9deg 15deg);
  -webkit-mask:radial-gradient(circle, #000 0 16%, rgba(0,0,0,.55) 36%, transparent 60%);
  mask:radial-gradient(circle, #000 0 16%, rgba(0,0,0,.55) 36%, transparent 60%);
  animation:tmcrvRaysSpin 2.4s linear forwards;
}
@keyframes tmcrvRaysSpin{ 0%{ opacity:0; transform:rotate(0deg) scale(.6); } 15%{ opacity:1; } 75%{ opacity:.9; } 100%{ opacity:0; transform:rotate(80deg) scale(1.1); } }
.tmcrv-winfx-coin{
  position:absolute; left:50%; top:50%;
  width:calc(6cqw * var(--s, 1)); height:calc(6cqw * var(--s, 1)); margin:calc(-3cqw * var(--s, 1)) 0 0 calc(-3cqw * var(--s, 1));
  border-radius:50%;
  background:radial-gradient(circle at 35% 30%, #fff8c8 0 12%, #ffd45f 30%, #c98a12 62%, #7a4a06 100%);
  box-shadow:inset 0 0 0 calc(.5cqw * var(--s, 1)) rgba(255,240,180,.55), 0 0 10px rgba(255,200,60,.6);
  animation:tmcrvCoinBurst 1.8s cubic-bezier(.2,.7,.3,1) var(--d, 0ms) both;
}
/* owner 2026-10-17: a coin always carries a pound sign, never a star or a blank face */
/* the coin flips in 3D: its pound sign is on the face only, never seen mirrored from behind */
.tmcrv-winfx-coin{ transform-style:preserve-3d; }
.tmcrv-winfx-coin::after{ content:"\00a3"; position:absolute; inset:0; display:grid; place-items:center; backface-visibility:hidden; -webkit-backface-visibility:hidden;
  font:900 calc(3.9cqw * var(--s, 1))/1 Georgia, 'Times New Roman', serif; color:#8a5606; text-shadow:0 1px 0 rgba(255,244,200,.75); }
@keyframes tmcrvCoinBurst{
  0%{ opacity:0; transform:translate(0, 0) scale(.3) rotateY(0deg); }
  12%{ opacity:1; }
  55%{ opacity:1; transform:translate(var(--x), var(--y)) scale(1) rotateY(540deg); }
  100%{ opacity:0; transform:translate(var(--x), calc(var(--y) + var(--fall))) scale(.9) rotateY(900deg); }
}
/* 3. a light glint sweeping over the drop button while drops are waiting */
.tmcrv-wrap.tmcrv-has-pending[data-busy="0"] .tmcrv-controls .tmcrv-btn-drop::after{
  content:""; position:absolute; top:0; bottom:0; left:0; width:260%; pointer-events:none;
  background:linear-gradient(105deg, transparent 38%, rgba(255,255,255,.6) 50%, transparent 62%);
  animation:tmcrvGlint 2.6s ease-in-out infinite;
}
/* The band is a 260% wide layer slid across the button by transform, clipped to the pill: the old background-position sweep
   (130% to -30% of the same 260% image) is exactly this, but could not run on the compositor. */
.tmcrv-wrap.tmcrv-has-pending[data-busy="0"] .tmcrv-controls .tmcrv-btn-drop{ overflow:hidden; }
@keyframes tmcrvGlint{ 0%, 35%{ transform:translateX(-80%); } 75%, 100%{ transform:translateX(18.4615%); } }
@media (prefers-reduced-motion:reduce){
  .tmcrv-controls .tmcrv-btn-drop::after{ animation:none !important; }
}
.tmcrv-summary .tmcrv-result-report [data-result-group="wins"] .tmcrv-result-rows li span{ color:#4be38f !important; }
.tmcrv-summary .tmcrv-result-report [data-result-group="non_winners"] .tmcrv-result-rows li span{ color:#b6c3d8 !important; }
/* the game name in the header: sized from the header's own width and the name's length (--tl), so it never clips */
.tmcrv-wrap[data-skin] .tmcrv-head{ container-type:inline-size; }
.tmcrv-wrap[data-skin] .tmcrv-head .tmcrv-wordart-text{ font-size:clamp(20px, min(9cqw, calc(140cqw / var(--tl, 9))), 64px) !important; }
.tmcrv-wrap[data-skin="box"] .tmcrv-head .tmcrv-wordart-text{ font-size:clamp(18px, min(8cqw, calc(130cqw / var(--tl, 11))), 56px) !important; }
@media (max-width:760px){ .tmcrv-wrap[data-skin] .tmcrv-title, .tmcrv-wrap[data-skin="box"] .tmcrv-title{ padding:0 44px !important; } }
/* Pusher in-board plaque labels on one line */
.tmcpu-lbl{ white-space:nowrap; letter-spacing:.06em !important; overflow:hidden; }

/* owner 2026-10-18: a card without a title starts with its ticket list, no empty band above it */
.tmcrv-result-report > section:first-child { margin-top: 0; }
