/* ONE MORE STEP — original arcade-immersion layer.
   Goal: continuous match presence + anticipation/impact rhythm without copying third-party assets/code. */

.arcadeLiveStage{position:relative;margin:8px 0 10px;border:1px solid #d8e0e520;border-radius:15px;overflow:hidden;background:#05090e;box-shadow:inset 0 0 40px #0008,0 14px 34px #0005}
.arcadeLiveStage[hidden]{display:none!important}
.arcadeLiveStage:before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 50% 24%,#b8d0ba12,transparent 46%),linear-gradient(180deg,#ffffff04,transparent 40%);pointer-events:none;z-index:2}
.arcadeLiveStage svg{display:block;width:100%;height:auto;aspect-ratio:2/1}
.arcadePitchBase{fill:#08130f}
.arcadePitchLine{fill:none;stroke:#dbe9df2f;stroke-width:1}
.arcadePitchBand{fill:#dfe9df06}
.arcadeGoal{fill:none;stroke:#eef3f3a6;stroke-width:1.4;stroke-linecap:round}
.arcadeBall{fill:#f1f2ee;stroke:#151b1d;stroke-width:1.2;filter:drop-shadow(0 2px 3px #000a);animation:omsLiveBall 1.9s ease-in-out infinite alternate}
.arcadeActor{stroke:#f3f5f1b8;stroke-width:1.35;filter:drop-shadow(0 3px 4px #0009);transform-box:fill-box;transform-origin:center}
.arcadeActor.self{stroke:#f5e7a5;stroke-width:2;animation:omsLiveSelf 1.45s ease-in-out infinite alternate}
.arcadeActor.team{fill:var(--home-kit,#8899a8);animation:omsLiveDrift 1.8s ease-in-out infinite alternate}
.arcadeActor.opp{fill:var(--away-kit,#7c625a);animation:omsLiveDriftOpp 2.05s ease-in-out infinite alternate}
.arcadeFocusRing{fill:none;stroke:#d9c27a88;stroke-width:1;animation:omsFocusPulse 1.15s ease-out infinite}
.arcadeBroadcastBar{position:absolute;left:10px;right:10px;top:9px;display:flex;justify-content:space-between;align-items:center;z-index:3;font-size:9px;font-weight:800;letter-spacing:.14em;color:#d9e1dcaa;pointer-events:none}
.arcadeBroadcastBar b{font-size:10px;color:#f0e5c6;letter-spacing:.06em}
.arcadeLiveStage[data-phase="defence"]{box-shadow:inset 0 0 42px #30111622,0 14px 34px #0005}
.arcadeLiveStage[data-tier="gold"]{border-color:#cdb66d55}
.arcadeLiveStage[data-tier="rainbow"]{border-color:#b7bfd055}
.arcadeLiveStage.choiceCommitted{animation:omsChoiceCommit 220ms cubic-bezier(.2,.8,.25,1) both}
@keyframes omsLiveSelf{from{transform:translateY(1px) scale(.98)}to{transform:translateY(-1px) scale(1.03)}}
@keyframes omsLiveDrift{from{transform:translate(-1.2px,.8px)}to{transform:translate(1.2px,-.8px)}}
@keyframes omsLiveDriftOpp{from{transform:translate(1px,-.6px)}to{transform:translate(-1px,.7px)}}
@keyframes omsLiveBall{from{transform:translate(-1px,.5px) scale(.97)}to{transform:translate(1px,-.6px) scale(1.04)}}
@keyframes omsFocusPulse{0%{opacity:.55;transform:scale(.82)}100%{opacity:0;transform:scale(1.45)}}
@keyframes omsChoiceCommit{0%{transform:scale(1);filter:brightness(1)}45%{transform:scale(.992);filter:brightness(1.18)}100%{transform:scale(1);filter:brightness(1)}}

/* Result camera: quiet setup, chase, impact, then settle. */
.renewalResult .goalCutinInner{will-change:transform,filter}
.renewalResult[data-tempo="quick"] .goalCutinInner{animation:omsArcadeCameraQuick var(--hit) cubic-bezier(.2,.72,.2,1) both}
.renewalResult[data-tempo="flow"] .goalCutinInner{animation:omsArcadeCameraFlow var(--hit) cubic-bezier(.18,.78,.16,1) both}
.renewalResult[data-tempo="impact"] .goalCutinInner{animation:omsArcadeCameraImpact var(--hit) cubic-bezier(.12,.78,.16,1) both}
.renewalResult[data-tier="rainbow"] .goalCutinInner{animation:omsArcadeCameraRainbow var(--hit) cubic-bezier(.12,.76,.12,1) both}
@keyframes omsArcadeCameraQuick{0%{transform:scale(.995)}65%{transform:scale(1.012)}100%{transform:scale(1)}}
@keyframes omsArcadeCameraFlow{0%{transform:scale(.99)}22%{transform:scale(.994)}72%{transform:scale(1.025)}100%{transform:scale(1.004)}}
@keyframes omsArcadeCameraImpact{0%{transform:scale(.985)}18%{transform:scale(.988)}70%{transform:scale(1.035)}78%{transform:scale(1.052)}100%{transform:scale(1.008)}}
@keyframes omsArcadeCameraRainbow{0%{transform:scale(.975)}20%{transform:scale(.98)}67%{transform:scale(1.035)}76%{transform:scale(1.065)}100%{transform:scale(1.01)}}
.renewalResult[data-result-phase="result"] .goalCutinInner{filter:brightness(1.035)}
.renewalResult[data-kind="goal"][data-result-phase="result"] .footballCinema:before,
.renewalResult[data-kind="save"][data-result-phase="result"] .footballCinema:before,
.renewalResult[data-kind="block"][data-result-phase="result"] .footballCinema:before{content:"";position:absolute;inset:0;border-radius:12px;box-shadow:inset 0 0 0 1px #ffffff10,inset 0 0 60px #d8bd7810;pointer-events:none}

/* 2D goal mouth only: posts + crossbar, no net depth. */
.renewalResult .recoveredNet{filter:none!important}
.renewalResult .recoveredNet path{fill:none!important;stroke:#edf2efb8!important;stroke-width:1.25!important}

@media(prefers-reduced-motion:reduce){
  .arcadeActor,.arcadeBall,.arcadeFocusRing,.arcadeLiveStage.choiceCommitted,
  .renewalResult .goalCutinInner{animation:none!important}
}

/* Motion does not launch immediately: short readable anticipation before the burst. */
.omsRecovered .cinemaTravel,.omsRecovered .recoveredTrail,.omsRecovered .cinemaSpin{
  animation-delay:var(--motion-delay,0ms)!important;
}


/* ARCADE RESULT READABILITY — action is understood from motion, not role labels. */
.omsRecovered .cinemaActor[data-active="true"] .actorSignal{transform-box:fill-box;transform-origin:center;animation:omsActorSignal .52s ease-out infinite alternate}
.omsRecovered[data-outcome="keeper-catch"] .cinemaActor[data-active="true"] .actorSignal,
.omsRecovered[data-outcome="keeper-parry"] .cinemaActor[data-active="true"] .actorSignal,
.renewalResult[data-action-role="keeper-save"] .cinemaActor[data-active="true"] .actorSignal{stroke:#bdeaff!important;animation:omsKeeperSignal .42s ease-out infinite alternate}
.renewalResult[data-action-role="blocker"] .cinemaActor[data-active="true"] .actorSignal{stroke:#ffe5a3!important;animation:omsBlockSignal .32s ease-out infinite alternate}
.renewalResult[data-action-role="interceptor"] .cinemaActor[data-active="true"] .actorSignal{stroke:#c7ffd8!important;animation:omsCutSignal .48s linear infinite}
.renewalResult[data-action-role="finisher"] .cinemaActor[data-active="true"] .actorSignal{stroke:#fff0a8!important;animation:omsFinishSignal .4s ease-out infinite alternate}
@keyframes omsActorSignal{from{opacity:.38;transform:scale(.92)}to{opacity:.9;transform:scale(1.06)}}
@keyframes omsKeeperSignal{from{opacity:.35;transform:scale(.86)}to{opacity:1;transform:scale(1.16)}}
@keyframes omsBlockSignal{from{opacity:.38;transform:scale(.92) rotate(-5deg)}to{opacity:1;transform:scale(1.12) rotate(5deg)}}
@keyframes omsCutSignal{from{opacity:.35;transform:rotate(0deg) scale(.98)}to{opacity:.9;transform:rotate(25deg) scale(1.08)}}
@keyframes omsFinishSignal{from{opacity:.45;transform:scale(.88)}to{opacity:1;transform:scale(1.13)}}

/* The match choices belong to the live pitch, not to a questionnaire. */
#match:not(.hidden) .arcadeLiveStage + #matchChoices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:-2px;padding:0 4px 4px}
#match:not(.hidden) .arcadeLiveStage + #matchChoices button{position:relative;min-height:54px;margin:0;padding:12px 10px 10px 42px;border-radius:10px;background:#070d13e8!important;border:1px solid #d8e0e523!important;color:#eef2ef!important;box-shadow:inset 0 1px #ffffff08,0 8px 20px #0005;text-align:left;font-size:13px}
#match:not(.hidden) .arcadeLiveStage + #matchChoices button:before{content:attr(data-icon);position:absolute;left:12px;top:50%;transform:translateY(-50%);font-size:21px;font-weight:900;color:#d9c47d}
#match:not(.hidden) .arcadeLiveStage + #matchChoices button.rainbowChoice{border-color:#d7d9ee88!important;box-shadow:inset 0 0 22px #9cb7ff18,0 0 22px #c7a6ff22}
#match:not(.hidden) .arcadeLiveStage + #matchChoices button.chanceChoice{border-color:#d8ba6688!important;box-shadow:inset 0 0 20px #e6c55d14,0 0 18px #d8b75b1c}

/* Goal euphoria: instant full-screen reward without lengthening control lock. */
.renewalResult.arcadeGoalPunch:before{content:"";position:absolute;inset:0;z-index:20;pointer-events:none;background:radial-gradient(circle at 50% 42%,#fff 0 3%,#ffe99a99 8%,transparent 44%);animation:omsGoalFlash .7s ease-out both}
.renewalResult.arcadeGoalPunch .goalCutinInner{animation:omsGoalKick .72s cubic-bezier(.12,.78,.14,1) both!important}
.renewalResult.arcadeGoalPunch .goalWord{animation:omsGoalWordPunch .62s cubic-bezier(.1,.9,.18,1.22) both!important}
.renewalResult.arcadeGoalPunch .goalScore{animation:omsScorePunch .5s .12s cubic-bezier(.1,.9,.18,1.15) both!important}
.renewalResult[data-goal-weight="clutch"].arcadeGoalPunch:before,
.renewalResult[data-goal-weight="super"].arcadeGoalPunch:before{background:radial-gradient(circle at 50% 42%,#fff 0 4%,#ffd86cb8 10%,transparent 52%)}
.renewalResult[data-goal-weight="rainbow"].arcadeGoalPunch:before{background:conic-gradient(from 0deg at 50% 42%,#ff8fba66,#ffd98077,#a9f2bf77,#a7ddff77,#c8afff77,#ff8fba66);animation:omsRainbowBurst .92s ease-out both}
@keyframes omsGoalFlash{0%{opacity:0;transform:scale(.72)}10%{opacity:1}100%{opacity:0;transform:scale(1.35)}}
@keyframes omsRainbowBurst{0%{opacity:0;transform:scale(.55) rotate(-18deg)}18%{opacity:.95}100%{opacity:0;transform:scale(1.45) rotate(22deg)}}
@keyframes omsGoalKick{0%{transform:scale(.985)}18%{transform:scale(1.055)}28%{transform:translateX(-5px) scale(1.035)}37%{transform:translateX(4px) scale(1.03)}100%{transform:scale(1.005)}}
@keyframes omsGoalWordPunch{0%{opacity:0;transform:scale(2.6)}28%{opacity:1;transform:scale(.88)}52%{transform:scale(1.08)}100%{opacity:1;transform:scale(1)}}
@keyframes omsScorePunch{0%{opacity:0;transform:scale(.7)}55%{opacity:1;transform:scale(1.16)}100%{opacity:1;transform:scale(1)}}

@media(max-width:520px){
 #match:not(.hidden) .arcadeLiveStage + #matchChoices{grid-template-columns:1fr 1fr}
 #match:not(.hidden) .arcadeLiveStage + #matchChoices button{font-size:12px;min-height:50px;padding-left:38px}
}


/* Replay hook: compact post-match grade + collectible career moment, no extra screen. */
.arcadeMatchReward{display:grid;grid-template-columns:auto 64px 1fr;align-items:center;gap:10px;margin:12px 0 4px;padding:12px 14px;border:1px solid #ffffff18;border-radius:12px;background:#050a10;box-shadow:inset 0 1px #ffffff08}
.arcadeMatchReward span{font-size:9px;letter-spacing:.16em;color:#aab7bd}
.arcadeMatchReward strong{font-size:32px;line-height:1;text-align:center;color:#f1df9a;text-shadow:0 0 18px #d7b75b33}
.arcadeMatchReward small{justify-self:end;text-align:right;font-size:10px;letter-spacing:.08em;color:#d9e1dd}
.arcadeMatchReward.newMoment{border-color:#dcc16a66;box-shadow:inset 0 0 24px #d8b85912,0 0 24px #d8b85912;animation:omsMomentReveal .72s cubic-bezier(.15,.8,.2,1) both}
.arcadeMatchReward.newMoment small{color:#ffeaa7;font-weight:800}
@keyframes omsMomentReveal{0%{opacity:0;transform:translateY(8px) scale(.98)}55%{opacity:1;transform:translateY(-2px) scale(1.015)}100%{opacity:1;transform:none}}


/* TACTICAL LIVE STAGE V2 — the user intervenes inside a moving match, not a menu. */
.arcadeOptionLane{stroke:#dbe8df24;stroke-width:1.2;stroke-dasharray:4 7;animation:omsLaneBreath 1.5s ease-in-out infinite alternate}
.arcadeThreatLane{stroke:#f2d98f45;stroke-width:1.6;stroke-dasharray:7 7;animation:omsThreatMove 1.15s linear infinite}
.arcadeThreatLane.danger{stroke:#f1a0a060}
.arcadePressureLine{stroke:#ffffff22;stroke-width:1;stroke-dasharray:2 5}
.arcadePressureHalo{fill:none;stroke:#d8e0da18;stroke-width:1;animation:omsPressurePulse 1.15s ease-out infinite}
.arcadeActionRing{fill:none;stroke:#f3dda2aa;stroke-width:1.2;animation:omsActionRing .92s ease-out infinite}
.arcadeCommitRoute{fill:none;stroke:#f5dfa0;stroke-width:2.8;stroke-linecap:round;stroke-dasharray:8 7;animation:omsCommitRoute .42s cubic-bezier(.17,.82,.2,1) both}
.arcadePulseBar{position:absolute;left:12px;right:12px;bottom:7px;z-index:4;display:grid;grid-template-columns:repeat(5,1fr);gap:4px;height:3px;pointer-events:none}
.arcadePulseBar i{display:block;border-radius:999px;background:#ffffff14;transition:background .18s,transform .18s}
.arcadeLiveStage[data-zone="1"] .arcadePulseBar i:nth-child(-n+2),
.arcadeLiveStage[data-zone="2"] .arcadePulseBar i:nth-child(-n+3),
.arcadeLiveStage[data-zone="3"] .arcadePulseBar i:nth-child(-n+4),
.arcadeLiveStage[data-zone="4"] .arcadePulseBar i{background:#d7c47f66}
.arcadeLiveStage[data-phase="defence"][data-threat="3"] .arcadePulseBar i:nth-last-child(-n+2),
.arcadeLiveStage[data-phase="defence"][data-threat="4"] .arcadePulseBar i{background:#cf78785f}
.arcadeLiveStage[data-tension="high"]{border-color:#d8c17166;box-shadow:inset 0 0 55px #5d461522,0 14px 36px #0007}
.arcadeLiveStage[data-tension="high"] .arcadeBroadcastBar b{animation:omsScoreTension .72s ease-in-out infinite alternate}
.arcadeLiveStage[data-tier="gold"] .arcadeFocusRing{stroke:#e9cc73}
.arcadeLiveStage[data-tier="rainbow"] .arcadeFocusRing{stroke:#e8e5ff;filter:drop-shadow(0 0 5px #b8b9ff66)}
.arcadeLiveStage[data-intent="pass"] .laneOne,
.arcadeLiveStage[data-intent="pass"] .laneTwo{stroke:#e5d38d88;stroke-width:2}
.arcadeLiveStage[data-intent="swipeShot"] .arcadeThreatLane,
.arcadeLiveStage[data-intent="waitStrike"] .arcadeThreatLane{stroke:#ffe39fa8;stroke-width:2.2}
.arcadeLiveStage[data-intent="react"] .arcadePressureLine,
.arcadeLiveStage[data-intent="slide"] .arcadePressureLine{stroke:#c2f1d0a0;stroke-width:2}
@keyframes omsLaneBreath{from{opacity:.34}to{opacity:.7}}
@keyframes omsThreatMove{to{stroke-dashoffset:-28}}
@keyframes omsPressurePulse{0%{opacity:.25;transform:scale(.82);transform-origin:center}100%{opacity:0;transform:scale(1.45);transform-origin:center}}
@keyframes omsActionRing{0%{opacity:.7;transform:scale(.86);transform-origin:center}100%{opacity:0;transform:scale(1.42);transform-origin:center}}
@keyframes omsCommitRoute{0%{opacity:0;stroke-dashoffset:45}25%{opacity:1}100%{opacity:0;stroke-dashoffset:0}}
@keyframes omsScoreTension{from{transform:scale(1)}to{transform:scale(1.07)}}

/* Skill identity must be seen in the action itself. */
.omsRecovered[data-skill-rarity="blue"] .recoveredTrail{filter:drop-shadow(0 0 3px #a9d8ff66)}
.omsRecovered[data-skill-rarity="red"] .recoveredTrail{filter:drop-shadow(0 0 4px #ffb0a066)}
.omsRecovered[data-skill-rarity="gold"] .recoveredTrail{filter:drop-shadow(0 0 6px #ffd87388)}
.omsRecovered[data-skill-rarity="rainbow"] .recoveredTrail{filter:drop-shadow(0 0 8px #d6c6ffbb)}
.omsRecovered[data-skill-rarity="gold"] .cinemaActor[data-active="true"],
.omsRecovered[data-skill-rarity="rainbow"] .cinemaActor[data-active="true"]{filter:drop-shadow(0 0 7px #ffe79c55)}
.renewalResult[data-action-role="keeper-save"] .omsMotionImpact{stroke:#c9efff!important}
.renewalResult[data-action-role="blocker"] .omsMotionImpact{stroke:#ffe4a1!important}
.renewalResult[data-action-role="interceptor"] .omsMotionImpact{stroke:#c7f5d0!important}


/* GOAL NET PHYSICS V1 — flat 2D net with a visible strike, stretch and settle. */
.renewalResult .goalFrame{stroke:#edf2efc7!important;stroke-width:1.35!important}
.renewalResult .goalNetMesh{opacity:.25;transform-box:fill-box;transform-origin:center}
.renewalResult .goalNetStrand{fill:none!important;stroke:#edf2ef54!important;stroke-width:.7!important}
.renewalResult .recoveredNet.omsNetHit[data-goal="opponent"] .goalNetMesh{
  animation:omsNetPunchDown 760ms cubic-bezier(.12,.76,.18,1) var(--net-hit-delay,var(--motion-delay,0ms)) both;
}
.renewalResult .recoveredNet.omsNetHit[data-goal="own"] .goalNetMesh{
  animation:omsNetPunchUp 760ms cubic-bezier(.12,.76,.18,1) var(--net-hit-delay,var(--motion-delay,0ms)) both;
}
.renewalResult .recoveredNet.omsNetHit .netV0{animation:omsNetStrandA 720ms ease-out var(--net-hit-delay,var(--motion-delay,0ms)) both}
.renewalResult .recoveredNet.omsNetHit .netV1{animation:omsNetStrandB 760ms ease-out calc(var(--net-hit-delay,var(--motion-delay,0ms)) + 24ms) both}
.renewalResult .recoveredNet.omsNetHit .netV2{animation:omsNetStrandA 700ms ease-out calc(var(--net-hit-delay,var(--motion-delay,0ms)) + 46ms) both}
.renewalResult .recoveredNet.omsNetHit .netV3{animation:omsNetStrandB 780ms ease-out calc(var(--net-hit-delay,var(--motion-delay,0ms)) + 65ms) both}
.renewalResult .recoveredNet.omsNetHit .netH0{animation:omsNetStrandB 690ms ease-out calc(var(--net-hit-delay,var(--motion-delay,0ms)) + 18ms) both}
.renewalResult .recoveredNet.omsNetHit .netH1{animation:omsNetStrandA 740ms ease-out calc(var(--net-hit-delay,var(--motion-delay,0ms)) + 38ms) both}
.renewalResult .recoveredNet.omsNetHit .netH2{animation:omsNetStrandB 710ms ease-out calc(var(--net-hit-delay,var(--motion-delay,0ms)) + 56ms) both}
@keyframes omsNetPunchDown{
  0%{opacity:.24;transform:translateY(0) scaleY(1)}
  10%{opacity:.76;transform:translateY(10px) scaleY(1.22)}
  34%{transform:translateY(-3px) scaleY(.94)}
  58%{transform:translateY(2px) scaleY(1.05)}
  100%{opacity:.3;transform:translateY(0) scaleY(1)}
}
@keyframes omsNetPunchUp{
  0%{opacity:.24;transform:translateY(0) scaleY(1)}
  10%{opacity:.76;transform:translateY(-10px) scaleY(1.22)}
  34%{transform:translateY(3px) scaleY(.94)}
  58%{transform:translateY(-2px) scaleY(1.05)}
  100%{opacity:.3;transform:translateY(0) scaleY(1)}
}
@keyframes omsNetStrandA{
  0%{stroke-opacity:.28}
  10%{stroke-opacity:.95;stroke-width:1.5}
  100%{stroke-opacity:.34;stroke-width:.7}
}
@keyframes omsNetStrandB{
  0%{stroke-opacity:.22}
  13%{stroke-opacity:.82;stroke-width:1.25}
  100%{stroke-opacity:.3;stroke-width:.7}
}

/* Decisive actions must hit emotionally, not just finish an animation. */
.renewalResult.arcadeActionPunch:after{
  content:"";position:absolute;inset:0;z-index:19;pointer-events:none;opacity:0;
  background:radial-gradient(circle at 50% 46%,#fff8 0 3%,transparent 35%);
  animation:omsActionFlash .46s ease-out both;
}
.renewalResult[data-impact-kind="save"].arcadeActionPunch:after{background:radial-gradient(circle at 50% 46%,#d7f3ff9a 0 4%,transparent 40%)}
.renewalResult[data-impact-kind="block"].arcadeActionPunch:after{background:radial-gradient(circle at 50% 46%,#ffe8a58a 0 4%,transparent 38%)}
.renewalResult[data-impact-kind="intercept"].arcadeActionPunch:after{background:radial-gradient(circle at 50% 46%,#c8f6d18a 0 4%,transparent 38%)}
.renewalResult.arcadeActionPunch .goalCutinInner{animation:omsDefenceKick .46s cubic-bezier(.16,.84,.22,1) both!important}
.renewalResult.arcadeActionPunch .goalWord{animation:omsDefenceWord .44s cubic-bezier(.1,.9,.18,1.18) both!important}
@keyframes omsActionFlash{0%{opacity:0;transform:scale(.82)}18%{opacity:1}100%{opacity:0;transform:scale(1.24)}}
@keyframes omsDefenceKick{0%{transform:scale(.995)}30%{transform:scale(1.028)}42%{transform:translateX(-3px) scale(1.018)}56%{transform:translateX(2px) scale(1.014)}100%{transform:scale(1)}}
@keyframes omsDefenceWord{0%{opacity:0;transform:scale(1.8)}34%{opacity:1;transform:scale(.93)}66%{transform:scale(1.06)}100%{opacity:1;transform:scale(1)}}


/* MATCH HEAT LAYER — pressure rises before decisive moments, then releases on impact. */
.arcadeLiveStage:after{content:"";position:absolute;inset:0;pointer-events:none;z-index:2;opacity:calc(var(--match-heat,0)*.55);background:radial-gradient(circle at 50% 45%,transparent 42%,#d7bc6420 74%,#d7bc6438 100%);transition:opacity .2s ease}
.arcadeLiveStage[data-decision="critical"]{animation:omsCriticalStage 1.05s ease-in-out infinite alternate}
.arcadeLiveStage[data-decision="critical"] .arcadeBroadcastBar span:first-child{color:#f0d889}
.arcadeLiveStage[data-decision="critical"] .arcadePulseBar i{transform:scaleY(1.7)}
@keyframes omsCriticalStage{from{box-shadow:inset 0 0 48px #6b4c1518,0 14px 34px #0006}to{box-shadow:inset 0 0 74px #b4872328,0 18px 40px #0008}}


/* Critical intervention choices: emphasis without adding explanatory text. */
.arcadeLiveStage[data-decision="critical"] + #matchChoices button{
  border-color:#d8be6f55!important;
  box-shadow:inset 0 0 18px #d8be6f0c,0 8px 22px #0006;
}
.arcadeLiveStage[data-decision="critical"] + #matchChoices button:active{
  transform:scale(.975);
  box-shadow:inset 0 0 24px #f0d88922,0 3px 10px #0007;
}


/* COMBO ESCALATION V1 — success must feel like accumulating attack pressure. */
#comboHud{position:relative;min-height:18px;transition:transform .18s ease,filter .18s ease,letter-spacing .18s ease}
#comboHud[data-count="2"]{letter-spacing:.08em}
#comboHud[data-count="3"]{letter-spacing:.12em}
#comboHud[data-count="4"],#comboHud[data-count="5"]{letter-spacing:.16em;text-shadow:0 0 12px #e0b95e55}
#comboHud[data-count="6"]{letter-spacing:.2em;text-shadow:0 0 16px #d7c5ff88}
#comboHud.comboPulse{animation:omsComboPulse .44s cubic-bezier(.12,.82,.18,1) both}
#comboHud.comboPulse:after{content:"";position:absolute;left:50%;top:50%;width:18px;height:18px;border:1px solid #e6d18888;border-radius:50%;transform:translate(-50%,-50%);animation:omsComboRing .42s ease-out both;pointer-events:none}
#comboHud[data-tier="gold"].comboPulse:after{border-color:#f1d36dbb}
#comboHud[data-tier="rainbow"].comboPulse:after{border-color:#d9c7ffcc;box-shadow:0 0 12px #aab7ff66}
@keyframes omsComboPulse{0%{transform:scale(.92);filter:brightness(.9)}42%{transform:scale(1.14);filter:brightness(1.35)}100%{transform:scale(1);filter:brightness(1)}}
@keyframes omsComboRing{0%{opacity:.9;transform:translate(-50%,-50%) scale(.5)}100%{opacity:0;transform:translate(-50%,-50%) scale(2.4)}}

/* CHANCE progression: stronger live-stage tension when the chain has earned a finish. */
.arcadeLiveStage[data-combo="2"],.arcadeLiveStage[data-combo="3"]{border-color:#d4c27c38}
.arcadeLiveStage[data-combo="4"],.arcadeLiveStage[data-combo="5"]{border-color:#e3c65e66;box-shadow:inset 0 0 62px #9b7b1e18,0 14px 38px #0007}
.arcadeLiveStage[data-combo="6"]{border-color:#d5caff7a;box-shadow:inset 0 0 70px #7d66b71f,0 16px 42px #0008}


/* The remembered sequence is more important than another paragraph. */
.arcadeBestPlay{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  margin:7px 0 3px;padding:9px 11px;border-radius:10px;
  border:1px solid #ffffff10;background:#050a0f;
}
.arcadeBestPlay span{
  flex:0 0 auto;font:800 8px/1 -apple-system,BlinkMacSystemFont,"SF Pro Text","Hiragino Sans",sans-serif;
  letter-spacing:.14em;color:#86939c;
}
.arcadeBestPlay strong{
  min-width:0;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  font:800 10px/1.2 -apple-system,BlinkMacSystemFont,"SF Pro Text","Hiragino Sans",sans-serif;
  letter-spacing:.05em;color:#e8ddb9;
}


/* CINEMATIC CAMERA RHYTHM V1 — viewpoint rhythm follows football meaning. */
.renewalResult .recoveredCinema .cinemaWorld{transform-box:fill-box;transform-origin:center;will-change:transform}
.renewalResult .recoveredCinema[data-camera-mode="finish"] .cinemaWorld{animation:omsCameraFinish var(--motion-duration,1100ms) cubic-bezier(.16,.82,.18,1) both}
.renewalResult .recoveredCinema[data-camera-mode="save"] .cinemaWorld{animation:omsCameraSave var(--motion-duration,1100ms) cubic-bezier(.18,.78,.22,1) both}
.renewalResult .recoveredCinema[data-camera-mode="block"] .cinemaWorld{animation:omsCameraBlock var(--motion-duration,1000ms) ease-out both}
.renewalResult .recoveredCinema[data-camera-mode="cut"] .cinemaWorld{animation:omsCameraCut var(--motion-duration,980ms) cubic-bezier(.2,.72,.22,1) both}
.renewalResult .recoveredCinema[data-camera-mode="transition"] .cinemaWorld{animation:omsCameraTransition var(--motion-duration,960ms) ease-in-out both}
.renewalResult .recoveredCinema[data-camera-mode="duel"] .cinemaWorld{animation:omsCameraDuel var(--motion-duration,980ms) ease-in-out both}
@keyframes omsCameraFinish{0%{transform:scale(.985)}20%{transform:scale(.99)}72%{transform:scale(1.018)}86%{transform:scale(1.045)}100%{transform:scale(1.026)}}
@keyframes omsCameraSave{0%{transform:translateY(2px) scale(.99)}62%{transform:translateY(0) scale(1.015)}78%{transform:translateY(4px) scale(1.045)}100%{transform:translateY(1px) scale(1.02)}}
@keyframes omsCameraBlock{0%{transform:translateX(0) scale(1)}70%{transform:translateX(0) scale(1.01)}78%{transform:translateX(-4px) scale(1.025)}86%{transform:translateX(3px) scale(1.02)}100%{transform:none}}
@keyframes omsCameraCut{0%{transform:translateX(5px) scale(.99)}48%{transform:translateX(2px) scale(1)}74%{transform:translateX(-3px) scale(1.028)}100%{transform:translateX(0) scale(1.015)}}
@keyframes omsCameraTransition{0%{transform:scale(.985)}55%{transform:scale(1)}100%{transform:scale(1.012)}}
@keyframes omsCameraDuel{0%{transform:scale(1)}38%{transform:scale(1.018)}62%{transform:scale(.995)}100%{transform:scale(1.015)}}

/* Afterglow leaves a readable emotional beat without adding another screen. */
.renewalResult[data-goal-weight="chain"] .goalWord,
.renewalResult[data-goal-weight="clutch"] .goalWord,
.renewalResult[data-goal-weight="rainbow"] .goalWord{text-shadow:0 0 18px #fff4bf7a,0 8px 30px #000d}
.renewalResult[data-goal-weight="chain"] .goalScore,
.renewalResult[data-goal-weight="clutch"] .goalScore{filter:drop-shadow(0 0 8px #e3c66f66)}
@media(prefers-reduced-motion:reduce){
 .renewalResult .recoveredCinema .cinemaWorld{animation:none!important}
}
