/* SHIFT gambling-first presentation layer — 1.4.0 candidate.
   Visual-only overrides: money hierarchy, reward feedback and premium casino framing. */
:root{
  --casino-gold:#f6d37c;
  --casino-gold-2:#fff0b0;
  --casino-emerald:#bff56f;
  --casino-emerald-deep:#17351d;
  --casino-red:#ff6c63;
  --casino-panel:rgba(6,7,9,.88);
  --casino-line:rgba(246,211,124,.30);
}

.game{
  background:
    radial-gradient(ellipse at 50% 8%,rgba(201,145,46,.16),transparent 44%),
    linear-gradient(180deg,#080806 0%,#040506 58%,#020203 100%);
}
.game::after{
  content:"";
  position:absolute;
  z-index:3;
  inset:0;
  pointer-events:none;
  box-shadow:
    inset 0 0 0 1px rgba(246,211,124,.08),
    inset 0 0 110px rgba(0,0,0,.54),
    inset 0 -120px 150px rgba(0,0,0,.32);
}
.hero{display:none!important}

.topbar{
  padding:max(18px,env(safe-area-inset-top)) 28px 0;
}
.brand{gap:13px}
.mark{
  border-color:rgba(246,211,124,.35);
  background:linear-gradient(180deg,rgba(246,211,124,.09),rgba(255,255,255,.02));
  box-shadow:0 0 24px rgba(246,211,124,.10) inset,0 8px 30px rgba(0,0,0,.28);
}
.mark::before,.mark::after{
  background:var(--casino-gold-2);
  box-shadow:0 0 10px rgba(246,211,124,.48);
}
.brand b{
  color:#fff7df;
  letter-spacing:.30em;
  text-shadow:0 0 18px rgba(246,211,124,.12);
}
.brand small{color:#a99f8d}
.balance{
  border-color:rgba(246,211,124,.26);
  background:linear-gradient(180deg,rgba(12,12,10,.88),rgba(3,4,5,.88));
  box-shadow:0 12px 44px rgba(0,0,0,.36),inset 0 0 0 1px rgba(255,255,255,.015);
}
.balance small{color:#a99f8d}
.balance strong{color:#fff7df;font-size:16px}
.icon-btn{border-color:rgba(246,211,124,.22);background:rgba(5,6,7,.86)}

.stage-meta{top:84px;width:min(760px,88vw)}
.eyebrow{
  color:#e3c47a;
  letter-spacing:.34em;
  font-weight:700;
}
.world-title{
  color:#fff2c7;
  font-family:Georgia,"Times New Roman",serif;
  font-size:clamp(34px,4.35vw,58px);
  font-weight:500;
  letter-spacing:-.035em;
  text-shadow:0 0 22px rgba(246,211,124,.15),0 14px 44px rgba(0,0,0,.8);
}
.world-sub{color:#c7bda9;font-size:12px;letter-spacing:.055em}
.progress i{background:rgba(246,211,124,.14)}
.progress i::before{background:linear-gradient(90deg,#c9a557,#fff0a9)}
.progress i.active{box-shadow:0 0 16px rgba(246,211,124,.32)}

.game.world-art-ready .world-plate{
  filter:saturate(.86) contrast(1.13) brightness(.66) sepia(.06);
}
.game.world-art-ready.stage-2 .world-plate{
  filter:saturate(.95) contrast(1.16) brightness(.69) sepia(.12);
}
.game.world-art-ready.stage-3 .world-plate{
  filter:saturate(1.02) contrast(1.18) brightness(.62) sepia(.04);
}

.game.world-art-ready .gate-zone{
  top:57.5%;
  width:min(1040px,76vw);
  gap:clamp(12px,1.6vw,24px);
}
.game.world-art-ready .gate{
  height:clamp(300px,52vh,445px);
  border-radius:150px 150px 24px 24px;
  filter:drop-shadow(0 28px 54px rgba(0,0,0,.44));
}
.game.world-art-ready .gate::before,
.game.world-art-ready .gate::after{opacity:.36}
.game.world-art-ready .gate .arch{
  inset:0 3%;
  border:1px solid rgba(246,211,124,.18);
  background:linear-gradient(180deg,rgba(255,255,255,.03),transparent 22%,rgba(0,0,0,.18));
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,.02),
    inset 0 -35px 70px rgba(0,0,0,.22),
    0 0 0 1px rgba(0,0,0,.55);
}
.game.world-art-ready .gate .arch::before{
  opacity:.15;
  background:
    radial-gradient(ellipse at 50% 54%,var(--gate-light),transparent 55%),
    linear-gradient(180deg,rgba(255,255,255,.03),transparent 38%);
  box-shadow:inset 0 0 70px rgba(0,0,0,.32),0 0 36px var(--gate-glow);
}
.game.world-art-ready .gate:not(:disabled):hover{
  transform:translateY(-10px) scale(1.018);
  filter:drop-shadow(0 34px 64px rgba(0,0,0,.50)) brightness(1.06);
}
.game.world-art-ready .gate:not(:disabled):hover .arch{
  border-color:rgba(255,239,184,.34);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.035),0 0 42px var(--gate-glow);
}
.game.world-art-ready .gate-copy{
  bottom:14%;
  padding:18px 10px 15px;
  background:radial-gradient(ellipse at 50% 48%,rgba(0,0,0,.72),rgba(0,0,0,.30) 48%,transparent 72%);
}
.gate-name{
  color:#f1e8d5;
  font-size:10px;
  letter-spacing:.24em;
  font-weight:750;
}
.chance{
  color:#fff9e8;
  font-size:clamp(42px,4.4vw,60px);
  text-shadow:0 0 16px var(--gate-glow),0 10px 34px rgba(0,0,0,.72);
}
.gate-label{
  color:#b7ac99;
  text-transform:uppercase;
  letter-spacing:.14em;
  font-size:8px;
}
.gate-win{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:126px;
  padding:7px 12px;
  margin-top:6px;
  border:1px solid rgba(246,211,124,.23);
  border-radius:10px;
  background:linear-gradient(180deg,rgba(13,13,10,.86),rgba(3,4,5,.86));
  color:#fff0b0;
  font-size:17px;
  font-weight:820;
  letter-spacing:.02em;
  box-shadow:0 0 22px rgba(246,211,124,.09),inset 0 0 18px rgba(255,255,255,.02);
}
.gate-win::before{content:"●";font-size:8px;margin-right:8px;color:#f2c55c;text-shadow:0 0 8px #f2c55c}
.gate-floor{color:#8f8a80;font-size:8px;margin-top:7px}
.game.world-art-ready .gate[data-p=".8"] .gate-win{border-color:rgba(126,232,255,.22)}
.game.world-art-ready .gate[data-p=".6"] .gate-win{border-color:rgba(255,213,103,.34);box-shadow:0 0 26px rgba(255,195,61,.11)}
.game.world-art-ready .gate[data-p=".4"] .gate-win{border-color:rgba(255,96,160,.30);box-shadow:0 0 28px rgba(255,61,133,.10)}

.game.in-round .hint{display:none}

.status-strip{
  bottom:118px;
  gap:0;
  padding:0;
  overflow:hidden;
  border-color:rgba(246,211,124,.24);
  border-radius:17px;
  background:linear-gradient(180deg,rgba(13,12,10,.91),rgba(5,6,7,.94));
  box-shadow:0 18px 60px rgba(0,0,0,.38),inset 0 0 0 1px rgba(255,255,255,.018);
}
.stat{
  min-width:138px;
  padding:11px 17px;
  border-right:1px solid rgba(246,211,124,.11);
}
.stat:last-child{border-right:0}
.stat.primary{background:linear-gradient(180deg,rgba(246,211,124,.09),rgba(246,211,124,.035))}
.stat small{color:#9f9788;font-size:8px;letter-spacing:.18em}
.stat strong{color:#fff7df;font-size:16px}

.dock{
  width:min(1120px,calc(100vw - 28px));
  min-height:88px;
  border-color:rgba(246,211,124,.26);
  border-radius:22px;
  background:linear-gradient(180deg,rgba(10,11,12,.96),rgba(3,4,5,.97));
  box-shadow:
    0 26px 90px rgba(0,0,0,.58),
    inset 0 1px 0 rgba(255,255,255,.025),
    inset 0 0 38px rgba(246,211,124,.025);
}
.bet-step,.chip,.mode button,.cashout{
  border-color:rgba(246,211,124,.16);
}
.bet-label small{color:#9f9788}
.bet-label strong{color:#fff5d4}
.mode{
  border-color:rgba(246,211,124,.18);
  background:rgba(0,0,0,.34);
}
.mode button{color:#978f82}
.mode button.active{
  background:linear-gradient(180deg,rgba(255,96,82,.15),rgba(255,60,54,.07));
  color:#fff0ec;
  box-shadow:inset 0 0 0 1px rgba(255,112,101,.12);
}
.mode button[data-mode="half"].active{
  background:linear-gradient(180deg,rgba(246,211,124,.12),rgba(246,211,124,.04));
  color:#fff1c7;
}
.mode button small{color:#a89f91}

.cashout{
  min-width:260px;
  height:58px;
  padding:0 28px;
  border:1px solid rgba(208,255,133,.34);
  border-radius:15px;
  background:
    linear-gradient(180deg,rgba(90,134,46,.25),rgba(21,52,25,.68)),
    radial-gradient(circle at 50% 0,rgba(235,255,172,.16),transparent 54%);
  color:#f0ffc6;
  font-size:15px;
  font-weight:850;
  letter-spacing:.01em;
  text-shadow:0 1px 10px rgba(205,255,125,.18);
  box-shadow:
    0 0 0 1px rgba(246,211,124,.10),
    inset 0 0 26px rgba(195,255,112,.08),
    0 0 28px rgba(147,214,83,.11);
  transition:.2s ease;
}
.cashout::before{content:"◆";margin-right:10px;color:#d8ef82;font-size:10px}
.cashout:not(:disabled):hover{
  transform:translateY(-2px) scale(1.015);
  background:linear-gradient(180deg,rgba(114,168,58,.34),rgba(24,64,30,.76));
  box-shadow:0 0 0 1px rgba(246,211,124,.16),inset 0 0 34px rgba(212,255,132,.12),0 0 42px rgba(171,235,96,.20);
}

.win-meter{
  position:absolute;
  z-index:24;
  left:50%;
  bottom:194px;
  transform:translateX(-50%);
  min-width:330px;
  padding:10px 20px 11px;
  border:1px solid rgba(246,211,124,.36);
  border-radius:17px;
  background:
    linear-gradient(180deg,rgba(18,15,9,.94),rgba(6,7,8,.96)),
    radial-gradient(circle at 50% 0,rgba(246,211,124,.16),transparent 64%);
  text-align:center;
  box-shadow:0 18px 60px rgba(0,0,0,.48),0 0 34px rgba(246,211,124,.09);
  backdrop-filter:blur(18px);
  pointer-events:none;
}
.win-meter small{
  display:block;
  color:#c5aa65;
  font-size:8px;
  letter-spacing:.26em;
  text-transform:uppercase;
}
.win-meter strong{
  display:block;
  color:#fff1bd;
  font-family:Georgia,"Times New Roman",serif;
  font-size:32px;
  line-height:1;
  margin-top:4px;
  letter-spacing:.01em;
  font-variant-numeric:tabular-nums;
  text-shadow:0 0 22px rgba(246,211,124,.22);
}
.win-meter span{
  display:inline-block;
  margin-top:5px;
  color:#c9ff9a;
  font-size:10px;
  font-weight:800;
  letter-spacing:.06em;
}
.game.recent-win .win-meter{
  animation:win-meter-pop .82s cubic-bezier(.16,.82,.2,1);
  box-shadow:0 18px 60px rgba(0,0,0,.48),0 0 54px rgba(246,211,124,.22);
}
.game.recent-win .cashout{animation:collect-pulse .86s ease-out}

.coin-rain{
  position:absolute;
  z-index:62;
  inset:0;
  overflow:hidden;
  pointer-events:none;
}
.coin-rain i{
  position:absolute;
  left:50%;
  top:42%;
  width:16px;
  height:16px;
  border-radius:50%;
  background:radial-gradient(circle at 34% 30%,#fff4bd 0 10%,#f8cb54 26%,#a56b12 72%,#4d2d05 100%);
  border:1px solid rgba(255,241,173,.75);
  box-shadow:0 0 12px rgba(255,205,74,.32);
  opacity:0;
  transform:translate(-50%,-50%) scale(.7);
  animation:coin-flight var(--dur,1.05s) cubic-bezier(.12,.66,.22,1) var(--delay,0s) forwards;
}
.coin-rain i::after{
  content:"";
  position:absolute;
  inset:4px;
  border:1px solid rgba(110,65,5,.38);
  border-radius:50%;
}
@keyframes coin-flight{
  0%{opacity:0;transform:translate(-50%,-50%) translate(0,0) rotate(0) scale(.55)}
  10%{opacity:1}
  70%{opacity:1}
  100%{opacity:0;transform:translate(-50%,-50%) translate(var(--x),var(--y)) rotate(var(--r)) scale(1.05)}
}
@keyframes win-meter-pop{
  0%{transform:translateX(-50%) scale(.86);filter:brightness(1.9)}
  55%{transform:translateX(-50%) scale(1.045)}
  100%{transform:translateX(-50%) scale(1);filter:none}
}
@keyframes collect-pulse{
  0%{filter:brightness(1)}
  40%{filter:brightness(1.45)}
  100%{filter:brightness(1)}
}

.result-burst{
  top:45%;
  min-width:300px;
}
.result-burst small{
  color:#f4ddb0;
  letter-spacing:.22em;
  font-weight:750;
}
.result-burst strong{
  color:#fff0a7;
  font-size:clamp(54px,7.5vw,96px);
  letter-spacing:-.025em;
  text-shadow:0 0 28px rgba(246,211,124,.28),0 14px 70px rgba(0,0,0,.9);
}
.result-burst.win strong{color:#fff0a7}
.result-burst.lose strong{color:#ffb2aa;font-size:clamp(42px,5.8vw,72px)}
.game.outcome-hold .scene{transition:filter .26s ease}
.game.outcome-hold.outcome-win .scene{filter:brightness(.82) saturate(1.08)}
.game.outcome-hold.outcome-lose .scene{filter:brightness(.62) saturate(.72)}
.game.outcome-hold.outcome-win .result-burst strong{text-shadow:0 0 18px rgba(255,250,196,.62),0 0 62px rgba(246,211,124,.34),0 18px 80px rgba(0,0,0,.94)}
.game.outcome-hold.outcome-lose .result-burst strong{text-shadow:0 0 20px rgba(255,96,82,.34),0 18px 80px rgba(0,0,0,.95)}

.flash{background:radial-gradient(circle at center,rgba(255,240,180,.74),rgba(246,211,124,.11) 20%,transparent 58%)}

.modal{background:rgba(2,2,2,.64)}
.card{
  border-color:rgba(246,211,124,.26);
  background:linear-gradient(180deg,rgba(19,17,12,.98),rgba(5,6,7,.99));
  box-shadow:0 34px 120px rgba(0,0,0,.66),0 0 42px rgba(246,211,124,.07);
}
.card .kicker{color:#b9a56e}
.card h2{color:#fff0c0}
.settlement div{background:rgba(246,211,124,.045)}
.modal-actions .again{
  background:linear-gradient(180deg,#fff1b4,#e5c76f);
  color:#161108;
}

.demo-note{color:#70695e}

@media (max-width:1024px){
  .game.world-art-ready .gate-zone{width:90vw}
  .cashout{min-width:220px}
}

@media (max-width:760px){
  .topbar{padding:max(11px,env(safe-area-inset-top)) 11px 0}
  .brand small{display:none}
  .stage-meta{top:70px;width:94vw}
  .world-title{font-size:29px}
  .world-sub{font-size:9px}
  .game.world-art-ready .gate-zone{top:45.5%;width:99vw}
  .game.world-art-ready .gate{height:37vh;min-height:224px}
  .game.world-art-ready .gate-copy{bottom:13%;padding:8px 0}
  .gate-name{font-size:7px;letter-spacing:.13em}
  .chance{font-size:31px}
  .gate-label{font-size:6px;margin-top:5px}
  .gate-win{min-width:0;padding:4px 6px;font-size:11px;border-radius:7px}
  .gate-win::before{font-size:5px;margin-right:4px}
  .gate-floor{font-size:6px;margin-top:4px}
  .win-meter{
    bottom:206px;
    min-width:min(286px,88vw);
    padding:7px 12px 8px;
    border-radius:13px;
  }
  .win-meter small{font-size:6px}
  .win-meter strong{font-size:24px}
  .win-meter span{font-size:8px;margin-top:3px}
  .status-strip{
    bottom:127px;
    width:calc(100vw - 20px);
  }
  .stat{min-width:0;flex:1;padding:7px 8px}
  .stat small{font-size:6px}
  .stat strong{font-size:12px}
  .dock{
    width:calc(100vw - 14px);
    min-height:105px;
    padding:7px;
    border-radius:18px;
  }
  .play-actions{gap:6px}
  .mode button{height:45px}
  .cashout{
    min-width:0;
    width:100%;
    height:46px;
    padding:0 12px;
    font-size:12px;
  }
  .cashout::before{margin-right:6px}
  .result-burst{top:42%}
  .result-burst strong{font-size:44px}
  .result-burst.lose strong{font-size:36px}
}

@media (max-width:760px) and (max-height:640px){
  .win-meter{bottom:184px}
  .status-strip{bottom:117px}
  .game.world-art-ready .gate-zone{top:43%}
}

@media (prefers-reduced-motion:reduce){
  .coin-rain{display:none!important}
  .game.recent-win .win-meter,.game.recent-win .cashout{animation:none!important}
}

/* Reward escalation: slot-like intensity only during wins, never as the idle visual language. */
.coin-rain i.gem{
  width:18px;height:18px;border-radius:3px;
  background:linear-gradient(135deg,#f7f2ff 0 18%,#b995ff 19% 46%,#7c4ddb 47% 72%,#f7d8ff 73%);
  border:1px solid rgba(255,255,255,.82);
  box-shadow:0 0 16px rgba(191,135,255,.48);
}
.coin-rain i.spark{
  width:8px;height:26px;border:0;border-radius:999px;
  background:linear-gradient(180deg,rgba(255,255,255,.98),#ffd96d 45%,rgba(255,191,55,.05));
  box-shadow:0 0 18px rgba(255,222,120,.78);
}
.game.reward-2 .flash{
  filter:brightness(1.14) saturate(1.08);
}
.game.reward-2 .win-meter{
  box-shadow:0 18px 60px rgba(0,0,0,.48),0 0 68px rgba(246,211,124,.27);
}
.game.reward-3 .flash{
  filter:brightness(1.32) saturate(1.14);
}
.game.reward-3 .scene{
  filter:brightness(1.12) saturate(1.07);
  transition:filter .22s ease;
}
.game.reward-3 .win-meter{
  transform:translateX(-50%) scale(1.045);
  border-color:rgba(255,237,166,.62);
  box-shadow:0 18px 60px rgba(0,0,0,.48),0 0 92px rgba(246,211,124,.38);
}
.game.reward-3 .result-burst strong{
  font-size:clamp(62px,8.4vw,112px);
  text-shadow:0 0 38px rgba(255,232,139,.42),0 18px 90px rgba(0,0,0,.94);
}
@media (max-width:760px){
  .game.reward-3 .result-burst strong{font-size:52px}
}

/* Decision clarity: collect is the guaranteed value, gates show incremental upside and actual downside. */
.cashout{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;column-gap:6px;line-height:1.05}
.cashout::after{
  content:"ГАРАНТИРОВАНО";
  flex-basis:100%;
  margin-top:4px;
  color:rgba(233,255,192,.68);
  font-size:7px;
  letter-spacing:.20em;
  font-weight:700;
}
.game.in-round .gate-label{
  color:#ddc885;
  font-weight:760;
  letter-spacing:.09em;
}
.game.in-round .gate-floor{
  color:#b6a99a;
  background:rgba(0,0,0,.26);
  border-radius:6px;
  padding:3px 6px;
}
@media (max-width:760px){
  .cashout::after{font-size:6px;margin-top:3px}
  .game.in-round .gate-label{font-size:5.8px;letter-spacing:.04em}
  .game.in-round .gate-floor{font-size:5.6px;padding:2px 3px}
}
/* Luxury World 01 — production environment alignment.
   The physical portals are baked into the plate; live HTML remains settlement-authoritative. */
.game.luxury-world.world-art-ready .world-plate{
  top:50%;
  width:100vw;
  height:auto;
  max-width:none;
  opacity:.98;
  object-fit:contain;
  object-position:50% 50%;
  filter:saturate(.98) contrast(1.08) brightness(.90);
  -webkit-mask-image:linear-gradient(180deg,transparent 0,#000 7%,#000 92%,transparent 100%);
  mask-image:linear-gradient(180deg,transparent 0,#000 7%,#000 92%,transparent 100%);
}
.game.luxury-world.world-art-ready.stage-2 .world-plate{
  opacity:.97;
  filter:saturate(1.02) contrast(1.10) brightness(.86) sepia(.035);
  transform:translate(-50%,-50%) scale(1.018);
}
.game.luxury-world.world-art-ready.stage-3 .world-plate{
  opacity:.95;
  filter:saturate(1.06) contrast(1.12) brightness(.79);
  transform:translate(-50%,-50%) scale(1.035);
}
.game.luxury-world.world-art-ready .gate-zone{
  top:52%;
  width:min(1500px,87vw);
  gap:clamp(12px,1.4vw,22px);
}
.game.luxury-world.world-art-ready .gate{
  height:clamp(340px,58vh,520px);
}
.game.luxury-world.world-art-ready .gate-copy{
  bottom:13%;
  padding:16px 8px 14px;
}
.game.luxury-world.world-art-ready .risk-dot{top:15.5%}
.game.luxury-world.world-art-ready .gate .arch{inset:1% 2%}
.game.luxury-world.world-art-ready .gate .arch::before{inset:8% 8% 6%}
.game.luxury-world.world-art-ready .portal{inset:13% 14% 8%}
.game.luxury-world.world-art-ready .gate-zone.resolving .gate.selected,
.game.luxury-world.world-art-ready.target-0 .gate-zone.resolving .gate.selected,
.game.luxury-world.world-art-ready.target-2 .gate-zone.resolving .gate.selected{
  transform:translateY(-1vh) scale(1.035);
}
.game.luxury-world.world-art-ready .gate-zone.resolving .gate.selected.commit,
.game.luxury-world.world-art-ready.target-0 .gate-zone.resolving .gate.selected.commit,
.game.luxury-world.world-art-ready.target-2 .gate-zone.resolving .gate.selected.commit{
  transform:translateY(-1.8vh) scale(1.06);
}
@media (max-width:760px){
  .game.luxury-world.world-art-ready .world-plate{
    top:43.5%;
    width:126vw;
    height:auto;
    max-width:none;
    object-fit:contain;
    opacity:.98;
    -webkit-mask-image:linear-gradient(180deg,transparent 0,#000 8%,#000 89%,transparent 100%);
    mask-image:linear-gradient(180deg,transparent 0,#000 8%,#000 89%,transparent 100%);
  }
  .game.luxury-world.world-art-ready.stage-2 .world-plate{
    transform:translate(-50%,-50%) scale(1.01);
  }
  .game.luxury-world.world-art-ready.stage-3 .world-plate{
    transform:translate(-50%,-50%) scale(1.02);
  }
  .game.luxury-world.world-art-ready .gate-zone{
    top:46%;
    width:99vw;
    gap:2px;
  }
  .game.luxury-world.world-art-ready .gate{
    height:39vh;
    min-height:236px;
  }
  .game.luxury-world.world-art-ready .gate-copy{
    bottom:11%;
    padding:7px 0 6px;
  }
  .game.luxury-world.world-art-ready .risk-dot{top:11.5%}
  .game.luxury-world.world-art-ready .portal{inset:12% 14% 7%}
}
@media (max-width:760px) and (max-height:640px){
  .game.luxury-world.world-art-ready .world-plate{top:41.5%;width:123vw}
  .game.luxury-world.world-art-ready .gate-zone{top:43.5%}
  .game.luxury-world.world-art-ready .gate{height:37vh;min-height:210px}
}


/* Anticipation + next-choice momentum — 1.7.0 candidate.
   Adds sensory cadence only; outcome, RTP and settlement timing remain unchanged. */
.game.resolving .gate.selected.anticipation-step-1 .portal{
  --beat-bright:1.18;
  animation:anticipation-light-pulse .16s ease-out both;
}
.game.resolving .gate.selected.anticipation-step-2 .portal{
  --beat-bright:1.34;
  animation:anticipation-light-pulse .17s ease-out both;
}
.game.resolving .gate.selected.anticipation-step-3 .portal{
  --beat-bright:1.58;
  animation:anticipation-light-pulse .18s ease-out both;
}
.game.anticipation-step-2 .gate.selected .arch{
  filter:brightness(1.06) saturate(1.04);
}
.game.anticipation-step-3 .gate.selected .arch{
  filter:brightness(1.12) saturate(1.08);
}
.game.decision-ready .gate:not(:disabled) .gate-win{
  animation:next-choice-glint .72s ease-out 1 both;
}
.game.decision-ready .gate:nth-child(1) .gate-win{animation-delay:.04s}
.game.decision-ready .gate:nth-child(2) .gate-win{animation-delay:.16s}
.game.decision-ready .gate:nth-child(3) .gate-win{animation-delay:.28s}
.game.decision-ready .cashout{
  animation:collect-invite .88s ease-out .10s 1 both;
}
.game.decision-ready .progress i.active{
  animation:decision-progress-pulse .82s ease-out .08s 1 both;
}
@keyframes anticipation-light-pulse{
  0%{filter:brightness(1) saturate(1)}
  48%{filter:brightness(var(--beat-bright,1.25)) saturate(1.16)}
  100%{filter:brightness(1.04) saturate(1.03)}
}
@keyframes next-choice-glint{
  0%{filter:brightness(1);transform:translateY(0)}
  42%{filter:brightness(1.48);transform:translateY(-2px)}
  100%{filter:brightness(1);transform:translateY(0)}
}
@keyframes collect-invite{
  0%{filter:brightness(1);transform:translateY(0)}
  42%{filter:brightness(1.34);transform:translateY(-1px) scale(1.012)}
  100%{filter:brightness(1);transform:translateY(0) scale(1)}
}
@keyframes decision-progress-pulse{
  0%{filter:brightness(1)}
  48%{filter:brightness(1.9)}
  100%{filter:brightness(1)}
}
@media (prefers-reduced-motion:reduce){
  .game.resolving .gate.selected .portal,
  .game.decision-ready .gate .gate-win,
  .game.decision-ready .cashout,
  .game.decision-ready .progress i.active{animation:none!important}
}


/* One-tap replay receipt — 1.8.0 candidate.
   Settlement stays visible without blocking the three gates or creating a hidden rebet. */
.round-receipt{
  position:absolute;
  z-index:24;
  left:50%;
  bottom:194px;
  transform:translateX(-50%);
  width:min(540px,calc(100vw - 28px));
  min-height:58px;
  display:grid;
  grid-template-columns:auto auto 1fr;
  align-items:center;
  gap:14px;
  padding:9px 14px;
  border:1px solid rgba(215,255,156,.28);
  border-radius:16px;
  background:
    linear-gradient(180deg,rgba(13,16,10,.95),rgba(5,7,7,.96)),
    radial-gradient(circle at 18% 0,rgba(215,255,156,.10),transparent 58%);
  box-shadow:0 18px 58px rgba(0,0,0,.42),0 0 32px rgba(178,238,100,.08);
  backdrop-filter:blur(18px);
  pointer-events:none;
  animation:round-receipt-in .42s cubic-bezier(.16,.82,.2,1);
}
.round-receipt.negative{
  border-color:rgba(255,133,121,.22);
  background:linear-gradient(180deg,rgba(18,11,10,.95),rgba(6,6,7,.96));
  box-shadow:0 18px 58px rgba(0,0,0,.42),0 0 24px rgba(255,106,94,.06);
}
.round-receipt-value small{
  display:block;
  color:#a8a08e;
  font-size:7px;
  letter-spacing:.20em;
  text-transform:uppercase;
}
.round-receipt-value strong{
  display:block;
  margin-top:2px;
  color:#f1ffd0;
  font-family:Georgia,"Times New Roman",serif;
  font-size:22px;
  line-height:1;
  font-variant-numeric:tabular-nums;
}
.round-receipt-net{
  color:#c9ff9a;
  font-size:11px;
  font-weight:850;
  letter-spacing:.05em;
  white-space:nowrap;
}
.round-receipt.negative .round-receipt-net{color:#ffb3ab}
.round-receipt-next{
  justify-self:end;
  color:#a9a394;
  font-size:8px;
  letter-spacing:.06em;
  text-align:right;
  text-transform:uppercase;
}
.round-receipt-next b{color:#fff0bd;font-size:10px}
.game.round-settled:not(.in-round):not(.resolving) .gate:not(:disabled) .gate-win{
  box-shadow:0 0 28px rgba(246,211,124,.13),inset 0 0 18px rgba(255,255,255,.02);
}
@keyframes round-receipt-in{
  0%{opacity:0;transform:translateX(-50%) translateY(8px) scale(.97)}
  100%{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}
}
@media (max-width:760px){
  .round-receipt{
    bottom:205px;
    width:calc(100vw - 18px);
    min-height:50px;
    grid-template-columns:auto auto 1fr;
    gap:8px;
    padding:7px 9px;
    border-radius:13px;
  }
  .round-receipt-value strong{font-size:17px}
  .round-receipt-net{font-size:9px}
  .round-receipt-next{font-size:6px;letter-spacing:.035em}
  .round-receipt-next b{font-size:8px}
}
@media (max-width:760px) and (max-height:640px){
  .round-receipt{bottom:183px}
}
@media (prefers-reduced-motion:reduce){
  .round-receipt{animation:none!important}
}


/* Commercial vertical-slice tactility pass.
   Equal presentation across all risk tiers: no outcome or recommendation cue. */
.game.luxury-world.world-art-ready:not(.in-round):not(.resolving) .scene::before{
  content:"";
  position:absolute;
  z-index:2;
  inset:10% -18% 9%;
  pointer-events:none;
  background:radial-gradient(ellipse at 50% 48%,rgba(255,239,181,.075) 0,rgba(255,221,137,.04) 29%,rgba(255,255,255,.018) 47%,transparent 70%);
  mix-blend-mode:screen;
  filter:blur(12px);
  opacity:.3;
  animation:choice-room-breathe 5.8s ease-in-out infinite;
}
.game:not(.in-round):not(.resolving) .gate:not(:disabled) .arch::before{
  animation:choice-gate-breathe 5.8s ease-in-out infinite;
}
.game:not(.in-round):not(.resolving) .gate:not(:disabled) .gate-win{
  position:relative;
  overflow:hidden;
}
.game:not(.in-round):not(.resolving) .gate:not(:disabled) .gate-win::after{
  content:"";
  position:absolute;
  top:-40%;
  bottom:-40%;
  left:-45%;
  width:28%;
  transform:skewX(-18deg);
  background:linear-gradient(90deg,transparent,rgba(255,248,209,.42),transparent);
  opacity:0;
  animation:payout-sheen 5.8s ease-in-out infinite;
  pointer-events:none;
}
.game .gate:not(:disabled) .gate-copy{
  transition:opacity .35s ease,transform .32s cubic-bezier(.16,.82,.2,1),filter .24s ease;
}
.game .gate:not(:disabled):hover .gate-copy{
  transform:translateY(-4px);
  filter:brightness(1.09);
}
.game .gate:not(:disabled):active{
  transform:translateY(-2px) scale(.992);
  filter:brightness(1.16) saturate(1.06);
}
.game.world-art-ready .gate:not(:disabled):active .portal{
  opacity:.38;
  transform:scaleX(.28) scaleY(.99);
}

.game.recent-win .coin-rain::before,
.game.recent-win .coin-rain::after{
  content:"";
  position:absolute;
  left:50%;
  top:44%;
  transform:translate(-50%,-50%);
  border-radius:50%;
  pointer-events:none;
  mix-blend-mode:screen;
}
.game.recent-win .coin-rain::before{
  width:min(46vw,620px);
  height:min(46vw,620px);
  background:radial-gradient(circle,rgba(255,242,173,.24) 0 9%,rgba(255,213,96,.13) 20%,rgba(255,255,255,.045) 38%,transparent 66%);
  filter:blur(2px);
  animation:reward-halo 1.05s cubic-bezier(.12,.72,.18,1) both;
}
.game.recent-win .coin-rain::after{
  width:min(25vw,350px);
  height:min(25vw,350px);
  border:1px solid rgba(255,239,167,.58);
  box-shadow:0 0 34px rgba(255,211,93,.28),inset 0 0 34px rgba(255,236,174,.12);
  animation:reward-ring .92s cubic-bezier(.12,.72,.18,1) .05s both;
}
.game.reward-2 .coin-rain::before{filter:brightness(1.15) saturate(1.08)}
.game.reward-3 .coin-rain::before{filter:brightness(1.3) saturate(1.12)}
.game.reward-3 .coin-rain::after{
  border-width:2px;
  box-shadow:0 0 52px rgba(255,218,101,.42),inset 0 0 48px rgba(255,242,184,.17);
}

@keyframes choice-room-breathe{
  0%,100%{transform:scale(.98);opacity:.22}
  48%{transform:scale(1.035);opacity:.46}
}
@keyframes choice-gate-breathe{
  0%,72%,100%{opacity:.15;filter:brightness(1)}
  84%{opacity:.23;filter:brightness(1.16) saturate(1.05)}
  92%{opacity:.18;filter:brightness(1.05)}
}
@keyframes payout-sheen{
  0%,72%{left:-45%;opacity:0}
  80%{opacity:.8}
  92%{left:120%;opacity:.12}
  100%{left:120%;opacity:0}
}
@keyframes reward-halo{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.28)}
  34%{opacity:1}
  100%{opacity:0;transform:translate(-50%,-50%) scale(1.18)}
}
@keyframes reward-ring{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.55)}
  22%{opacity:1}
  100%{opacity:0;transform:translate(-50%,-50%) scale(1.75)}
}
@media (max-width:760px){
  .game.luxury-world.world-art-ready:not(.in-round):not(.resolving) .scene::before{inset:13% -40% 18%;opacity:.26}
  .game .gate:not(:disabled):hover .gate-copy{transform:none;filter:none}
  .game.recent-win .coin-rain::before{width:92vw;height:92vw;top:42%}
  .game.recent-win .coin-rain::after{width:56vw;height:56vw;top:42%}
}
@media (prefers-reduced-motion:reduce){
  .game.luxury-world.world-art-ready:not(.in-round):not(.resolving) .scene::before,
  .game:not(.in-round):not(.resolving) .gate .arch::before,
  .game:not(.in-round):not(.resolving) .gate .gate-win::after,
  .game.recent-win .coin-rain::before,
  .game.recent-win .coin-rain::after{
    animation:none!important;
    display:none!important;
  }
}


/* Post-win decision hierarchy: make the signature press-your-luck choice
   feel deliberate without changing any amounts, probabilities or actions. */
.game.in-round .mode{
  gap:4px;
  padding:4px;
  border-color:rgba(246,211,124,.24);
  background:linear-gradient(180deg,rgba(11,10,9,.72),rgba(0,0,0,.48));
}
.game.in-round .mode button{
  position:relative;
  min-height:50px;
  border:1px solid transparent;
  padding:0 14px;
  font-weight:760;
  letter-spacing:.045em;
  transition:background .22s ease,border-color .22s ease,color .22s ease,box-shadow .22s ease,transform .18s ease;
}
.game.in-round .mode button[data-mode="all"]{
  color:#e8c7c1;
  border-color:rgba(255,108,99,.15);
  background:linear-gradient(180deg,rgba(121,33,29,.08),rgba(45,10,9,.11));
}
.game.in-round .mode button[data-mode="half"]{
  color:#e7d6aa;
  border-color:rgba(246,211,124,.14);
  background:linear-gradient(180deg,rgba(110,83,30,.07),rgba(39,28,8,.10));
}
.game.in-round .mode button.active[data-mode="all"]{
  color:#fff2ef;
  border-color:rgba(255,124,112,.42);
  background:linear-gradient(180deg,rgba(161,50,42,.21),rgba(67,18,15,.24));
  box-shadow:inset 0 0 24px rgba(255,88,74,.06),0 0 18px rgba(255,82,70,.05);
}
.game.in-round .mode button.active[data-mode="half"]{
  color:#fff3cf;
  border-color:rgba(246,211,124,.40);
  background:linear-gradient(180deg,rgba(145,105,31,.18),rgba(60,40,8,.20));
  box-shadow:inset 0 0 24px rgba(246,211,124,.06),0 0 18px rgba(246,211,124,.05);
}
.game.in-round .mode button:not(:disabled):active{transform:scale(.985)}
.game.in-round .mode button small{
  margin-top:3px;
  color:#c9c0b0;
  font-size:8px;
  letter-spacing:.055em;
}
.game.in-round .mode button.active small{color:#fff0c7}
.game.decision-ready .dock{
  border-color:rgba(246,211,124,.34);
  box-shadow:
    0 26px 90px rgba(0,0,0,.58),
    inset 0 1px 0 rgba(255,255,255,.025),
    inset 0 0 46px rgba(246,211,124,.035),
    0 0 34px rgba(246,211,124,.035);
}
@media (max-width:760px){
  .game.in-round .dock{min-height:114px}
  .game.in-round .mode button{
    height:49px;
    min-height:49px;
    padding:0 5px;
    font-size:8.5px;
  }
  .game.in-round .mode button small{
    font-size:7.2px;
    letter-spacing:.025em;
  }
  .game.in-round .cashout{height:44px;font-size:11px}
}


/* First-impression cinematic vitality.
   Make the pre-wager/replay room feel alive without steering risk selection:
   every gate receives equal energy while keeping its existing color identity. */
.game.luxury-world.world-art-ready:not(.in-round):not(.resolving) .world-plate{
  filter:saturate(1.08) contrast(1.08) brightness(.98) sepia(.02);
}
.game.luxury-world.world-art-ready:not(.in-round):not(.resolving) .scene::before{
  inset:8% -16% 8%;
  opacity:.54;
  filter:blur(10px);
  background:
    radial-gradient(ellipse at 27% 54%,rgba(91,226,255,.15) 0 7%,rgba(62,180,219,.065) 22%,transparent 43%),
    radial-gradient(ellipse at 51% 53%,rgba(255,220,126,.15) 0 7%,rgba(224,170,68,.065) 22%,transparent 43%),
    radial-gradient(ellipse at 74% 54%,rgba(255,110,178,.15) 0 7%,rgba(205,59,129,.065) 22%,transparent 43%),
    radial-gradient(ellipse at 50% 45%,rgba(255,239,181,.09) 0,rgba(255,221,137,.035) 31%,transparent 68%);
}
.game.luxury-world.world-art-ready:not(.in-round):not(.resolving) .gate:not(:disabled){
  filter:
    drop-shadow(0 28px 54px rgba(0,0,0,.42))
    drop-shadow(0 0 18px var(--gate-glow));
}
.game.luxury-world.world-art-ready:not(.in-round):not(.resolving) .gate:not(:disabled) .arch::before{
  opacity:.20;
  box-shadow:
    inset 0 0 70px rgba(0,0,0,.28),
    0 0 44px var(--gate-glow);
}
.game.luxury-world.world-art-ready:not(.in-round):not(.resolving) .gate:not(:disabled) .portal{
  opacity:.10;
  transform:scaleX(.18) scaleY(.95);
  filter:saturate(1.08) brightness(1.06);
  animation:choice-portal-breathe 5.8s ease-in-out infinite;
}
@keyframes choice-portal-breathe{
  0%,70%,100%{opacity:.09;transform:scaleX(.16) scaleY(.94);filter:saturate(1.04) brightness(1.02)}
  84%{opacity:.17;transform:scaleX(.23) scaleY(.98);filter:saturate(1.15) brightness(1.16)}
  92%{opacity:.12;transform:scaleX(.19) scaleY(.96);filter:saturate(1.09) brightness(1.07)}
}
@media (max-width:760px){
  .game.luxury-world.world-art-ready:not(.in-round):not(.resolving) .world-plate{
    filter:saturate(1.12) contrast(1.05) brightness(1.02) sepia(.015);
  }
  .game.luxury-world.world-art-ready:not(.in-round):not(.resolving) .scene::before{
    inset:11% -38% 15%;
    opacity:.72;
    filter:blur(8px);
  }
  .game.luxury-world.world-art-ready:not(.in-round):not(.resolving) .gate:not(:disabled){
    filter:
      drop-shadow(0 18px 34px rgba(0,0,0,.40))
      drop-shadow(0 0 15px var(--gate-glow));
  }
  .game.luxury-world.world-art-ready:not(.in-round):not(.resolving) .gate:not(:disabled) .portal{
    opacity:.13;
  }
}
@media (prefers-reduced-motion:reduce){
  .game.luxury-world.world-art-ready:not(.in-round):not(.resolving) .gate:not(:disabled) .portal{
    animation:none!important;
    opacity:.11;
    transform:scaleX(.18) scaleY(.95);
  }
}


/* Monetary loss theater.
   Make failure read as a money event while keeping saved value explicit. */
.game.loss-full .flash{
  background:radial-gradient(circle at center,rgba(255,111,94,.42),rgba(89,9,8,.16) 28%,transparent 62%);
}
.game.loss-saved .flash{
  background:radial-gradient(circle at center,rgba(255,188,105,.34),rgba(94,28,9,.13) 28%,transparent 62%);
}
.game.loss-full .result-burst strong,
.game.loss-saved .result-burst strong{
  color:#ffaaa1;
  font-variant-numeric:tabular-nums;
  text-shadow:0 0 34px rgba(255,92,76,.28),0 14px 70px rgba(0,0,0,.92);
}
.game.loss-saved .result-burst strong{
  color:#ffc18b;
  text-shadow:0 0 34px rgba(255,165,82,.24),0 14px 70px rgba(0,0,0,.92);
}
.game.loss-saved .result-burst small{color:#ffd19a}
@media (max-width:760px){
  .game.loss-full .result-burst strong,
  .game.loss-saved .result-burst strong{font-size:42px}
}


/* Risk-scaled win payoff.
   Outcome presentation follows actual gain relative to the accepted wager,
   while later stages keep a minimum escalation floor. Math is unchanged. */
.game.reward-2 .coin-rain::before{
  width:min(52vw,680px);
  height:min(52vw,680px);
  filter:blur(2px) brightness(1.20) saturate(1.10);
}
.game.reward-2 .coin-rain::after{
  width:min(29vw,395px);
  height:min(29vw,395px);
  box-shadow:
    0 0 46px rgba(255,216,96,.34),
    inset 0 0 42px rgba(255,240,178,.13);
}
.game.reward-3 .coin-rain::before{
  width:min(60vw,780px);
  height:min(60vw,780px);
  filter:blur(2px) brightness(1.38) saturate(1.16);
}
.game.reward-3 .coin-rain::after{
  width:min(35vw,470px);
  height:min(35vw,470px);
  border-width:2px;
  box-shadow:
    0 0 74px rgba(255,218,101,.52),
    inset 0 0 62px rgba(255,245,194,.22);
}
.game.reward-2 .result-burst.win strong{
  font-size:clamp(60px,8.2vw,104px);
  text-shadow:
    0 0 36px rgba(255,221,118,.38),
    0 14px 76px rgba(0,0,0,.92);
  animation:reward-number-medium .48s cubic-bezier(.14,.74,.18,1) both;
}
.game.reward-3 .result-burst.win strong{
  font-size:clamp(66px,9vw,116px);
  text-shadow:
    0 0 48px rgba(255,226,126,.52),
    0 0 92px rgba(255,190,73,.18),
    0 16px 82px rgba(0,0,0,.94);
  animation:reward-number-big .58s cubic-bezier(.12,.76,.18,1) both;
}
.game.reward-2 .result-burst small{color:#ffe7ad}
.game.reward-3 .result-burst small{color:#fff0bd}
@keyframes reward-number-medium{
  0%{transform:scale(.94);filter:brightness(1.46)}
  46%{transform:scale(1.045);filter:brightness(1.16)}
  100%{transform:scale(1);filter:none}
}
@keyframes reward-number-big{
  0%{transform:scale(.90);filter:brightness(1.72)}
  42%{transform:scale(1.075);filter:brightness(1.28)}
  72%{transform:scale(.99);filter:brightness(1.08)}
  100%{transform:scale(1);filter:none}
}
@media (max-width:760px){
  .game.reward-2 .coin-rain::before{width:104vw;height:104vw}
  .game.reward-3 .coin-rain::before{width:118vw;height:118vw}
  .game.reward-2 .coin-rain::after{width:64vw;height:64vw}
  .game.reward-3 .coin-rain::after{width:76vw;height:76vw}
  .game.reward-2 .result-burst.win strong{font-size:clamp(44px,15vw,64px)}
  .game.reward-3 .result-burst.win strong{font-size:clamp(48px,16vw,70px)}
}
@media (prefers-reduced-motion:reduce){
  .game.reward-2 .result-burst.win strong,
  .game.reward-3 .result-burst.win strong{animation:none!important}
}


/* Replay-ready momentum.
   Settlement never auto-bets: all available gates wake together once, then
   return to the normal equal-strength idle breathe until the next manual tap. */
.game.round-settled:not(.in-round):not(.resolving) .gate:not(:disabled) .arch::before{
  animation:
    replay-arch-return .72s cubic-bezier(.16,.78,.18,1) 1,
    choice-gate-breathe 5.8s ease-in-out .72s infinite;
}
.game.round-settled:not(.in-round):not(.resolving) .gate:not(:disabled) .gate-copy{
  animation:replay-copy-return .58s cubic-bezier(.16,.78,.18,1) 1;
}
.game.round-settled:not(.in-round):not(.resolving) .gate:not(:disabled) .gate-win{
  animation:replay-value-return .68s ease-out .04s 1;
}
@keyframes replay-arch-return{
  0%{opacity:.05;filter:brightness(.82) saturate(.90)}
  46%{opacity:.31;filter:brightness(1.26) saturate(1.08)}
  100%{opacity:.15;filter:brightness(1) saturate(1)}
}
@keyframes replay-copy-return{
  0%{opacity:.46;transform:translateY(5px)}
  58%{opacity:1;transform:translateY(-1px)}
  100%{opacity:1;transform:translateY(0)}
}
@keyframes replay-value-return{
  0%{filter:brightness(.88);transform:scale(.965)}
  46%{filter:brightness(1.32);transform:scale(1.03)}
  100%{filter:brightness(1);transform:scale(1)}
}
@media (prefers-reduced-motion:reduce){
  .game.round-settled .gate .arch::before,
  .game.round-settled .gate .gate-copy,
  .game.round-settled .gate .gate-win{animation:none!important}
}


/* Loss money-state consistency.
   During a confirmed saved-loss peak the persistent money meter switches from
   the stale pre-risk win to the amount that actually remains protected. */
.win-meter.protected{
  border-color:rgba(255,190,104,.42);
  background:
    linear-gradient(180deg,rgba(24,15,8,.95),rgba(7,7,8,.97)),
    radial-gradient(circle at 50% 0,rgba(255,178,82,.14),transparent 64%);
  box-shadow:0 18px 60px rgba(0,0,0,.50),0 0 34px rgba(255,157,72,.10);
}
.win-meter.protected small{color:#d4a868}
.win-meter.protected strong{
  color:#ffd09a;
  text-shadow:0 0 22px rgba(255,153,73,.20);
}
.win-meter.protected span{color:#efc58f}
