/* ALL-IN DUEL V1.1 — one static backdrop; Result presentation card faces. */
.ponder-all-in-duel{--duel-cyan:#00e7ff;--duel-opponent:#ff435b;--duel-purple:#8a4dff;--duel-magenta:#ff2bd6;position:absolute;inset:0;container:duel-stage / size;z-index:24000;overflow:hidden;isolation:isolate;background:rgba(2,7,13,.88);backdrop-filter:blur(3px);color:#e5f4f6;font-family:var(--font-display,'Rajdhani'),sans-serif;animation:duel-enter 400ms ease-out both;pointer-events:auto;touch-action:none}
.duel-grid{position:absolute;inset:0;pointer-events:none;opacity:.16;background-image:linear-gradient(rgba(83,179,192,.34) 1px,transparent 1px),linear-gradient(90deg,rgba(83,179,192,.34) 1px,transparent 1px);background-size:48px 48px;mask-image:radial-gradient(ellipse,#000,transparent 88%)}
/* The body-owned action HUD is at 66, outside the stage's isolated context.
   Raise this context only during Duel; real reconnect notices remain above at 180/221. */
body.ponder-duel-active #stage{z-index:67}
.duel-background-visualizer{position:absolute;left:0;width:100%;z-index:0;pointer-events:none;mix-blend-mode:normal;mask-image:linear-gradient(to right,transparent 0%,transparent 15%,rgba(0,0,0,.25) 30%,rgba(0,0,0,.8) 45%,#000 50%,rgba(0,0,0,.8) 55%,rgba(0,0,0,.25) 70%,transparent 85%,transparent 100%);-webkit-mask-image:linear-gradient(to right,transparent 0%,transparent 15%,rgba(0,0,0,.25) 30%,rgba(0,0,0,.8) 45%,#000 50%,rgba(0,0,0,.8) 55%,rgba(0,0,0,.25) 70%,transparent 85%,transparent 100%)}
.duel-equity-gauge{position:absolute;left:20%;width:60%;top:calc(47% + 7.8cqw * 3.86 / 2.64 / 2 + 1.2cqh);height:5cqh;pointer-events:none}.duel-equity-gauge[hidden]{display:none}
.duel-gauge-track{position:absolute;inset:0 1.5cqw;display:flex;flex-flow:row nowrap;gap:.35cqw}
.duel-gauge-cell{flex:1 1 0;width:0;min-width:0;height:100%;box-sizing:border-box;pointer-events:none;border:0;color:color-mix(in srgb,var(--duel-cell-color) var(--duel-cell-level,88%),#02070d);background-color:currentColor;background-image:none;box-shadow:0 0 .65cqh color-mix(in srgb,currentColor 60%,transparent),0 0 1.1cqh color-mix(in srgb,currentColor 24%,transparent);transition:color 160ms ease}
.duel-gauge-cell.is-cyan{--duel-cell-color:var(--duel-cyan)}.duel-gauge-cell.is-red{--duel-cell-color:var(--duel-opponent)}
.duel-gauge-bracket{position:absolute;top:-.55cqh;bottom:-.55cqh;width:.8cqw;box-sizing:border-box;border-block:2px solid;pointer-events:none;color:color-mix(in srgb,var(--duel-cell-color) var(--duel-cell-level,16%),#02070d);filter:drop-shadow(0 0 .35cqh currentColor);transition:color 160ms ease}.duel-bracket-left{left:0;--duel-cell-color:var(--duel-cyan);border-left:2px solid}.duel-bracket-right{right:0;--duel-cell-color:var(--duel-opponent);border-right:2px solid}
.ponder-all-in-duel.has-gauge-impact{animation:duel-enter 400ms ease-out both,duel-gauge-impact 600ms ease-out}
.duel-player{--duel-hole-unit:calc((20cqw - .33cqw) / 7.32);--duel-hand-height:calc(var(--duel-hole-unit)*5.34);position:absolute;width:40%;height:calc(var(--duel-hand-height) + 10cqh);animation:duel-enter 400ms ease-out both}
.duel-cyan{bottom:6%;left:3%;color:var(--duel-cyan)}.duel-red{top:6%;right:3%;color:var(--duel-opponent)}
.duel-identity{position:absolute;left:0;top:3cqh;width:24cqw;display:flex;align-items:baseline;gap:clamp(4px,.8cqw,10px);min-width:0}
.duel-red .duel-identity{left:auto;right:0;top:calc(var(--duel-hand-height) + 5cqh);justify-content:flex-end}
.duel-name{font-size:clamp(14px,2cqw,26px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#e0e9ed;max-width:72%}.duel-position{font-size:clamp(11px,1.4cqw,17px);letter-spacing:.1em}.duel-cover{font-size:10px;letter-spacing:.15em;opacity:.65}
.duel-hole-cards{position:absolute;left:0;bottom:0;display:flex;gap:.33cqw}.duel-equity{position:absolute;right:0;bottom:0;width:16cqw;height:var(--duel-hand-height);display:flex;flex-direction:column;justify-content:center}.duel-equity-reading{display:flex;align-items:baseline;font-size:clamp(28px,4.6cqw,64px);font-weight:600;line-height:1;font-variant-numeric:tabular-nums;white-space:nowrap;text-shadow:0 0 .25em color-mix(in srgb,currentColor 24%,transparent)}.duel-equity-value{font-size:1em;transition:opacity 120ms}.duel-equity-percent{font-size:.54em;margin-left:.04em;opacity:.9}.duel-equity-percent[hidden]{display:none}.duel-equity-label{order:-1;font-size:10px;letter-spacing:.2em;opacity:.85;margin-bottom:5px}
.duel-red .duel-hole-cards{left:auto;right:0;top:0;bottom:auto}.duel-red .duel-equity{right:auto;left:0;top:auto;bottom:10cqh;height:auto;align-items:flex-end}
.duel-red .duel-equity-label{order:1;margin:5px 0 0}
.duel-equity-reading{--duel-equity-color:var(--duel-cyan);text-shadow:none}
.duel-red .duel-equity-reading{--duel-equity-color:var(--duel-opponent)}
.duel-equity-reading :is(.duel-equity-value,.duel-equity-percent){color:var(--duel-equity-color);text-shadow:0 0 .08em currentColor,0 0 .28em color-mix(in srgb,currentColor var(--duel-equity-glow,50%),transparent),0 0 .48em color-mix(in srgb,currentColor 28%,transparent)}
.duel-equity-reading[data-equity-light="bright"] :is(.duel-equity-value,.duel-equity-percent){animation:duel-equity-text-glow 4800ms ease-in-out infinite}
.duel-equity-reading[data-equity-light="dark"] :is(.duel-equity-value,.duel-equity-percent){animation:duel-equity-text-dark 2800ms ease-in-out infinite}
.duel-equity-reading[data-equity-light="none"] :is(.duel-equity-value,.duel-equity-percent){text-shadow:none}
/* Keep the glow shape constant; opacity breathes smoothly without shadow-list steps. */
@keyframes duel-equity-text-glow{0%,100%{opacity:.82}50%{opacity:1}}
@keyframes duel-equity-text-dark{0%,100%{color:var(--duel-equity-color);text-shadow:0 0 .08em color-mix(in srgb,currentColor 45%,transparent)}50%{color:color-mix(in srgb,var(--duel-equity-color) 32%,#02070d);text-shadow:0 0 .02em color-mix(in srgb,currentColor 10%,transparent)}}
@media(prefers-reduced-motion:reduce){.duel-equity-reading :is(.duel-equity-value,.duel-equity-percent){animation:none!important;transition:none!important}}
.duel-cyan .duel-equity{height:auto;top:10cqh;bottom:auto}
.duel-player,.duel-board,.duel-outs{z-index:2}
.duel-hole-cards>.card-ui{transition:opacity 280ms ease}.is-duel-loser .duel-hole-cards>.card-ui{opacity:.25;filter:grayscale(.65)}
.duel-status-tag{--status-color:var(--duel-cyan);position:absolute;right:1%;bottom:-4px;width:48%;height:clamp(19px,2.7cqw,32px);z-index:3;display:flex;align-items:center;justify-content:center;padding-left:12%;box-sizing:border-box;color:var(--status-color);pointer-events:none;filter:drop-shadow(0 0 3px color-mix(in srgb,var(--status-color) 30%,transparent))}
.duel-red .duel-status-tag{--status-color:var(--duel-opponent)}.duel-status-tag svg{position:absolute;inset:0;width:100%;height:100%;fill:#000;stroke:var(--status-color);stroke-width:1.5;vector-effect:non-scaling-stroke}
.duel-status-tag .duel-status-slash{fill:none}.duel-status-slash-1{stroke-width:7;stroke:var(--status-color)}.duel-status-slash-2{stroke-width:4.5;stroke:color-mix(in srgb,var(--status-color) 65%,#000)}.duel-status-slash-3{stroke-width:2.5;stroke:color-mix(in srgb,var(--status-color) 35%,#000)}
.duel-status-label{position:relative;padding-right:7%;font-size:clamp(10px,1.35cqw,18px);font-weight:800;font-style:italic;letter-spacing:.1em;line-height:1;color:var(--status-color);text-shadow:0 0 4px color-mix(in srgb,var(--status-color) 25%,transparent)}
.duel-win-result{--duel-win-entry-x:36px;position:absolute;top:calc(100% + .8cqh);left:-.6cqw;width:clamp(150px,22cqw,300px);box-sizing:border-box;padding:clamp(7px,1.1cqh,11px) clamp(13px,1.7cqw,24px);pointer-events:none;color:var(--duel-cyan);animation:duel-win-result-in 360ms cubic-bezier(.16,1,.3,1) both;isolation:isolate}
.duel-win-outline{position:absolute;inset:0;width:100%;height:100%;overflow:visible;z-index:-1;fill:none;stroke:currentColor;stroke-width:1;vector-effect:non-scaling-stroke}
.duel-win-surface{fill:rgba(2,10,19,.92)}.duel-win-accent{stroke:currentColor;opacity:.75}.duel-win-circuit{stroke-width:2;opacity:.8}
.duel-win{display:block;font-size:clamp(25px,3.2cqw,36px);line-height:.95;font-weight:700;letter-spacing:.1em;text-shadow:0 0 8px color-mix(in srgb,currentColor 30%,transparent)}
.duel-win-pot{display:flex;align-items:baseline;gap:.55em;white-space:nowrap;margin-top:3px;line-height:1.1}
.duel-win-pot-label{font-size:clamp(10px,1cqw,14px);letter-spacing:.14em;color:#dde9ef}.duel-win-pot-value{font-size:clamp(17px,1.8cqw,26px);font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:.06em}
.duel-red .duel-win-result{--duel-win-entry-x:-36px;color:var(--duel-opponent);left:auto;right:-.6cqw;top:auto;bottom:calc(100% + .8cqh);display:flex;flex-direction:column}
.duel-red .duel-win-outline{transform:scaleY(-1)}.duel-red .duel-win{order:1}.duel-red .duel-win-pot{order:0;margin:0 0 3px}
.duel-win-result.is-restored{animation:none}.is-exiting .duel-win-result{animation:duel-win-result-out 180ms ease-in both}
@keyframes duel-win-result-in{from{opacity:0;transform:translateX(var(--duel-win-entry-x))}to{opacity:1;transform:translateX(0)}}
@keyframes duel-win-result-out{from{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-12px)}}
@keyframes duel-win-result-fade-in{from{opacity:0}to{opacity:1}}@keyframes duel-win-result-fade-out{to{opacity:0}}
@container duel-stage (max-height:450px){.duel-win-result{padding:4px 13px}.duel-win{font-size:25px}.duel-win-pot-value{font-size:17px}.duel-win-pot-label{font-size:10px}}
.duel-result-wave{position:absolute;inset:0;z-index:1;pointer-events:none;overflow:hidden}.duel-wave-cyan{--duel-led-x:13%;--duel-led-y:calc(94% - (20cqw - .33cqw)*5.34/7.32/2);color:var(--duel-cyan)}.duel-wave-red{--duel-led-x:87%;--duel-led-y:calc(6% + (20cqw - .33cqw)*5.34/7.32/2);color:var(--duel-opponent)}
/* Two circular pulses share the winning hand's origin at the public river face. */
.duel-result-wave::before,.duel-result-wave::after{content:"";position:absolute;left:var(--duel-led-x);top:var(--duel-led-y);width:max(110cqw,110cqh);height:max(110cqw,110cqh);box-sizing:border-box;border:12cqh solid currentColor;border-radius:50%;box-shadow:0 0 1.3cqh color-mix(in srgb,currentColor 50%,transparent);opacity:0;animation:duel-win-wave 1700ms cubic-bezier(.25,.35,.4,1) both}
.duel-result-wave::after{border-width:10.4cqh;animation-delay:160ms}
.ponder-all-in-duel.has-river-flash::after{content:"";position:absolute;inset:0;z-index:4;pointer-events:none;background:#e6fbff;opacity:0;animation:duel-river-flash 450ms ease-out both}
/* Match the game's hero-card and board-card em ratios at the Duel's own sizes. */
.ponder-all-in-duel .card-ui{box-sizing:border-box;margin:0;flex:none;transform:none}.duel-hole-cards .card-ui{font-size:var(--duel-hole-unit);width:3.66em;height:5.34em;border-radius:.28em}.duel-hole-cards .card-rank{font-size:1.78em;top:.26em;left:.30em}.duel-hole-cards .card-suit{font-size:2.74em;top:60%}
.duel-board{--duel-card-w:7.8cqw;position:absolute;left:50%;top:47%;transform:translate(-50%,-50%);display:grid;grid-template-columns:repeat(5,var(--duel-card-w));gap:1.1cqw}
.duel-card{position:relative;width:var(--duel-card-w);height:calc(var(--duel-card-w)*3.86 / 2.64);perspective:800px}
.duel-card .card-ui{font-size:calc(var(--duel-card-w) / 2.64);width:100%;height:100%}.duel-card .card-rank{font-size:1.26em;top:.29em;left:.32em}.duel-card .card-suit{font-size:1.92em;top:60%}
.duel-outs{--duel-outs-offset:12px;position:absolute;width:44cqw;pointer-events:none;animation:duel-outs-in 300ms ease-out both}.duel-outs.is-leaving{animation:duel-outs-out var(--duel-outs-exit,240ms) ease-in both}.duel-outs.duel-outs-restored{animation:none}.duel-outs-cyan{left:27%;bottom:7%;color:var(--duel-cyan)}.duel-outs-red{--duel-outs-offset:-12px;right:27%;top:7%;color:var(--duel-opponent);text-align:right}
.duel-outs{--duel-out-width:min(3.1cqw,calc((44cqw - var(--duel-group-gap,0px) - .3cqw*(var(--duel-outs-count) - 1))/var(--duel-outs-count)))}.duel-outs-groups{display:flex;align-items:flex-start;gap:var(--duel-group-gap,0px)}.duel-outs-group{position:relative;min-width:0}.duel-outs-label{height:12px;font-size:10px;font-weight:600;line-height:12px;letter-spacing:.14em;margin-bottom:2px}.duel-outs-chop .duel-outs-label{color:#e4c889}.duel-outs-cards{display:flex;gap:.3cqw}.duel-outs-red .duel-outs-groups,.duel-outs-red .duel-outs-cards{justify-content:flex-end}
.duel-outs-red .duel-outs-group{display:flex;flex-direction:column-reverse}.duel-outs-red .duel-outs-label{margin:2px 0 0}
/* Result faces fill existing Duel slots; frame, card backs and motion stay owned here. */
.ponder-all-in-duel .duel-playing-card{position:relative;display:block;padding:0;overflow:hidden}
.ponder-all-in-duel .duel-playing-card>.result-v2-playing-card{border-radius:inherit}
/* Miniatures use the same face proportions as the hero hand, including type. */
.duel-out-card{position:relative;font-size:calc(var(--duel-out-width) / 3.66);width:3.66em;height:5.34em;flex:none}.duel-out-card>.card-ui{font-size:inherit;width:100%;height:100%;border-radius:.28em}.duel-out-card .card-rank{font-size:1.78em;top:.26em;left:.30em}.duel-out-card .card-suit{font-size:2.74em;top:60%}.duel-out-card.is-chop>.card-ui{border-color:#e4c889}
.duel-card-face,.duel-card-back{position:absolute!important;inset:0;backface-visibility:hidden}.duel-card-face{height:100%}.duel-card-back{background-color:#122734}
/* Lift the supplied back image's black floor to the Result face's dark grey.
   Screen blending preserves the owl and its highlights without changing the asset. */
.ponder-all-in-duel .duel-card .card-ui.duel-card-back{background-color:#0a121a!important;background-blend-mode:screen}
.duel-card.is-arriving{animation:duel-arrive var(--duel-arrival) ease-out var(--duel-age) both}.duel-card.is-arriving .duel-card-face{animation:duel-front var(--duel-flip) ease-in-out calc(var(--duel-flip-at) + var(--duel-age)) both}.duel-card.is-arriving .duel-card-back{animation:duel-back var(--duel-flip) ease-in-out calc(var(--duel-flip-at) + var(--duel-age)) both}
.duel-card.is-revealed,.duel-card.is-revealed .duel-card-face{animation:none;transform:none;opacity:1}.duel-card.is-revealed .duel-card-back{display:none}
/* Only the live river lifts toward the viewer, then strikes back into its slot.
   Independent scale/translate preserve the existing downward arrival motion. */
.duel-card.is-arriving.is-river-card{z-index:3;animation:duel-arrive var(--duel-arrival) ease-out var(--duel-age) both,duel-river-slam var(--duel-flip) linear calc(var(--duel-flip-at) + var(--duel-age)) both;transform-origin:center}
.duel-card.is-arriving.is-river-card.is-revealed{animation:none;scale:1;translate:0 0;box-shadow:none}
@keyframes duel-river-slam{0%{scale:1;translate:0 0;box-shadow:none}32%{scale:1.45;translate:0 -14%;box-shadow:0 0 24px rgba(157,238,255,.3)}62%{scale:1.45;translate:0 -14%;box-shadow:0 0 30px rgba(157,238,255,.4)}84%{scale:.94;translate:0 5%;box-shadow:0 0 16px rgba(157,238,255,.25)}93%{scale:1.06;translate:0 -2%}100%{scale:1;translate:0 0;box-shadow:none}}
.duel-motion-v2.has-river-impact:not(.is-exiting){--duel-impact-distance:clamp(6px,1.15cqw,16px);animation:duel-river-impact 520ms ease-out both}
@keyframes duel-river-impact{0%,100%{translate:0 0;rotate:0deg}8%{translate:calc(-1*var(--duel-impact-distance)) calc(.5*var(--duel-impact-distance));rotate:-.35deg}21%{translate:var(--duel-impact-distance) calc(-.6*var(--duel-impact-distance));rotate:.35deg}36%{translate:calc(-.7*var(--duel-impact-distance)) calc(.35*var(--duel-impact-distance));rotate:-.2deg}53%{translate:calc(.55*var(--duel-impact-distance)) calc(-.25*var(--duel-impact-distance));rotate:.15deg}72%{translate:calc(-.3*var(--duel-impact-distance)) calc(.15*var(--duel-impact-distance));rotate:-.08deg}87%{translate:calc(.15*var(--duel-impact-distance)) 0;rotate:.04deg}}
/* The top (third) card leads the fan; the second follows, exposing the first.
   DOM order and the final canonical board positions never change. */
.duel-card.is-arriving.is-flop-stack{z-index:calc(3 + var(--duel-flop-index));animation:duel-arrive var(--duel-arrival) ease-out var(--duel-age) both,duel-flop-spread var(--duel-fan) linear calc(var(--duel-fan-at) + var(--duel-age)) both}
.duel-card.is-arriving.is-flop-stack[data-index="1"]{animation-name:duel-arrive,duel-flop-middle}
.duel-card.is-arriving.is-flop-stack:not(.is-revealed){will-change:translate}
/* Carry the middle card under the top card, leaving it at slot two as the top passes. */
@keyframes duel-flop-spread{from{translate:calc(-1 * var(--duel-flop-index) * (var(--duel-card-w) + 1.1cqw)) 0}to{translate:0 0}}
@keyframes duel-flop-middle{0%{translate:calc(-1 * (var(--duel-card-w) + 1.1cqw)) 0}50%,100%{translate:0 0}}
.duel-card.is-arriving.is-flop-stack.is-revealed{animation:none;translate:0 0}
@media(prefers-reduced-motion:reduce){.duel-card.is-arriving.is-river-card{animation:none;scale:1;translate:0 0;box-shadow:none}}
.ponder-all-in-duel.is-exiting{animation:duel-exit 500ms ease-out both}.ponder-all-in-duel.duel-restored:not(.is-exiting),.duel-restored .duel-player{animation:none}
.ponder-all-in-duel.duel-restored.has-gauge-impact:not(.is-exiting){animation:duel-gauge-impact 600ms ease-out}
body.ponder-duel-active .ponder-all-in-heartbeat{visibility:hidden!important}
@keyframes duel-enter{from{opacity:0}to{opacity:1}}@keyframes duel-exit{to{opacity:0}}@keyframes duel-arrive{from{opacity:0;transform:translateY(-28px)}to{opacity:1;transform:translateY(0)}}@keyframes duel-front{from{transform:rotateY(-180deg)}to{transform:rotateY(0)}}@keyframes duel-back{from{transform:rotateY(0)}to{transform:rotateY(180deg)}}
@keyframes duel-outs-in{from{opacity:0;transform:translateY(var(--duel-outs-offset))}to{opacity:1;transform:translateY(0)}}@keyframes duel-outs-out{from{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(var(--duel-outs-offset))}}
@keyframes duel-win-wave{0%{transform:translate(-50%,-50%) scale(.025);opacity:0}12%{opacity:.32}40%{opacity:.22}75%{opacity:.07}100%{transform:translate(-50%,-50%) scale(1);opacity:0}}
@keyframes duel-gauge-impact{0%,100%{translate:0 0}10%{translate:-6px 2px}22%{translate:6px -2px}36%{translate:-5px 1px}50%{translate:4px -1px}65%{translate:-3px 1px}80%{translate:2px 0}92%{translate:-1px 0}}
@keyframes duel-river-flash{0%,15%{opacity:.42}100%{opacity:0}}
@keyframes duel-win-in{from{opacity:0;transform:translate(-50%,6px)}to{opacity:1;transform:translate(-50%,0)}}
@container duel-stage (max-height:450px){.duel-name{font-size:12px}.duel-position{font-size:9px}.duel-cover{font-size:7px}.duel-equity-label{font-size:8px}}
/* Short landscape uses the actual stage, including space lost to browser chrome.
   Keep board/hand geometry; release space between equity, outs and final result. */
@container duel-stage (max-height:360px){
 .duel-equity-reading{font-size:clamp(22px,4.6cqw,64px)}
 .duel-cyan .duel-equity{top:9cqh}.duel-red .duel-equity{bottom:9cqh}
 .duel-equity-label{margin-bottom:3px}.duel-red .duel-equity-label{margin:3px 0 0}
 .duel-outs-label{height:10px;line-height:10px}
 .duel-win-result{padding:3px 12px}.duel-win{font-size:22px}
 .duel-win-pot-value{font-size:16px}.duel-win-pot-label{font-size:9px}
}
@media(prefers-reduced-motion:reduce){.ponder-all-in-duel,.ponder-all-in-duel *{animation:none!important;transition:none!important}.duel-card-face{transform:none!important}.duel-card-back{display:none}}
@media(prefers-reduced-motion:reduce){.duel-win-result:not(.is-restored){animation:duel-win-result-fade-in 120ms ease-out both!important}.is-exiting .duel-win-result{animation:duel-win-result-fade-out 120ms ease-in both!important}}
@media(prefers-reduced-motion:reduce){.ponder-all-in-duel.has-river-flash::after{animation:none!important;opacity:0}}
/* Backdrop grid and river flash stay disabled; WIN waves have their own cue. */
.duel-grid,.ponder-all-in-duel.has-river-flash::after{display:none;animation:none}

/* Cyber V2: two asymmetric, decorative corner clusters. No pixel DOM or JS loop. */
.duel-cyber-layer{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none;color:var(--duel-cyan)}
.duel-cyber-layer *{pointer-events:none}
.duel-cyber-cluster{position:absolute;top:0;left:0;width:34%;height:48%}
.duel-cyber-lower{position:absolute;right:0;bottom:0;width:38%;height:29%}
.duel-radial-hud{position:absolute;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgba(2,4,10,.28) 38%,transparent 66%)}
.duel-radial-top{width:min(29cqw,48cqh);left:-3.5cqw;top:-9cqh}
.duel-radial-bottom{width:min(25cqw,38cqh);right:3cqw;bottom:-9cqh}
.duel-hud-arc{position:absolute;inset:0;border-radius:50%;display:block}
.duel-hud-ticks{opacity:.62;background:repeating-conic-gradient(from 12deg,currentColor 0deg .7deg,transparent .7deg 3deg);mask-image:radial-gradient(circle,transparent 63%,#000 63.5% 69%,transparent 69.5%);animation:duel-hud-rotate 56s linear infinite}
.duel-hud-segments{inset:8%;opacity:.8;background:conic-gradient(from 10deg,transparent 0deg 15deg,var(--duel-cyan) 15deg 48deg,transparent 48deg 62deg,var(--duel-purple) 62deg 80deg,transparent 80deg 104deg,var(--duel-cyan) 104deg 139deg,transparent 139deg 187deg,var(--duel-magenta) 187deg 205deg,transparent 205deg 228deg,var(--duel-cyan) 228deg 264deg,transparent 264deg 315deg,var(--duel-purple) 315deg 335deg,transparent 335deg);mask-image:radial-gradient(circle,transparent 61%,#000 61.7% 64%,transparent 64.7%)}
.duel-hud-inner{inset:17%;opacity:.55;background:repeating-conic-gradient(from 34deg,var(--duel-cyan) 0deg 24deg,transparent 24deg 40deg,var(--duel-magenta) 40deg 53deg,transparent 53deg 74deg);mask-image:radial-gradient(circle,transparent 60%,#000 60.5% 61.5%,transparent 62% 66%,#000 66.5% 67.5%,transparent 68%)}
.duel-hud-crosshair{position:absolute;inset:26%;opacity:.28;background:linear-gradient(transparent calc(50% - .5px),currentColor 50%,transparent calc(50% + .5px)),linear-gradient(90deg,transparent calc(50% - .5px),currentColor 50%,transparent calc(50% + .5px));border:1px solid color-mix(in srgb,var(--duel-purple) 46%,transparent);border-radius:50%}
.duel-radial-bottom .duel-hud-ticks{animation-direction:reverse}
.duel-hud-brand{position:absolute;top:49%;left:53%;transform:translate(-50%,-50%);font-size:clamp(15px,2.1cqw,32px);font-weight:700;letter-spacing:.12em;font-style:italic;text-shadow:0 0 10px color-mix(in srgb,var(--duel-cyan) 35%,transparent);text-align:center;white-space:nowrap}
.duel-hud-brand small{display:block;margin-top:1.2cqh;font:500 clamp(6px,.62cqw,9px)/1.9 monospace;letter-spacing:.2em;font-style:normal;color:rgba(200,230,240,.48);text-shadow:none}
.duel-hud-symbol{position:absolute;inset:34%;display:flex;align-items:center;justify-content:center;flex-direction:column;color:var(--duel-cyan);opacity:.65}
.duel-hud-symbol small{position:absolute;bottom:3%;font:500 clamp(5px,.48cqw,8px)/1.5 monospace;letter-spacing:.14em;white-space:nowrap;color:rgba(200,230,240,.5)}
.duel-pixel-matrix{position:absolute;inset:0;color:var(--duel-cyan);opacity:.36;background-image:linear-gradient(90deg,#02040a 65%,transparent 65%),linear-gradient(#02040a 65%,transparent 65%),linear-gradient(135deg,var(--duel-cyan),var(--duel-cyan) 30%,var(--duel-purple) 64%,var(--duel-magenta));background-size:9px 9px,9px 9px,100% 100%;clip-path:polygon(0 0,100% 0,100% 10%,83% 10%,83% 28%,68% 28%,68% 51%,45% 51%,45% 75%,14% 75%,14% 100%,0 100%);mask-image:radial-gradient(ellipse at 8% 0%,transparent 23%,#000 48%,transparent 79%)}
.duel-pixel-matrix::after{content:"";position:absolute;top:8%;right:15%;width:4px;height:4px;background:var(--duel-magenta);box-shadow:-18px 9px 0 var(--duel-cyan),9px 27px 0 var(--duel-magenta),-27px 36px 0 var(--duel-purple);animation:duel-node-wake 1200ms ease-out 300ms both}
.duel-cyber-lower .duel-pixel-matrix{transform:rotate(180deg);opacity:.28;mask-image:linear-gradient(135deg,transparent 10%,#000 55%,transparent 83%)}
.duel-circuit-traces{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke-width:.8;stroke-linejoin:bevel}
.duel-circuit-traces path,.duel-circuit-traces circle{vector-effect:non-scaling-stroke}
.duel-trace-cyan{stroke:var(--duel-cyan);opacity:.42}.duel-trace-magenta{stroke:var(--duel-magenta);opacity:.55}.duel-trace-purple{stroke:var(--duel-purple);opacity:.4}
.duel-trace-hot{stroke-width:2;filter:drop-shadow(0 0 3px var(--duel-magenta))}
.duel-system-tag,.duel-system-header{position:absolute;font:500 clamp(5px,.55cqw,8px)/1.9 monospace;letter-spacing:.24em;color:rgba(200,230,240,.43)}
.duel-cyber-cluster .duel-system-tag{left:3.7cqw;top:35cqh;border-left:1px solid rgba(0,231,255,.4);padding-left:.8cqw}
.duel-cyber-lower .duel-system-tag{right:2.8cqw;bottom:5cqh;color:color-mix(in srgb,var(--duel-cyan) 48%,transparent)}
.duel-system-header{top:6cqh;left:34cqw;color:color-mix(in srgb,var(--duel-cyan) 48%,transparent)}
.duel-cyber-scanline{position:absolute;inset:0;opacity:.02;background:repeating-linear-gradient(transparent 0 3px,#bdefff 3px 4px);mask-image:linear-gradient(90deg,#000,transparent 28% 70%,#000)}
.duel-equity-gauge{z-index:2}
.duel-equity-gauge::after{content:"";position:absolute;left:1.5cqw;right:1.5cqw;top:calc(100% + .7cqh);height:.5cqh;opacity:.23;background:repeating-linear-gradient(90deg,var(--duel-cyan) 0 1px,transparent 1px 5%)}
.duel-hole-cards::after{content:"";position:absolute;inset:-.6cqh;opacity:.5;pointer-events:none;background:linear-gradient(currentColor,currentColor) top left/6px 1px,linear-gradient(currentColor,currentColor) top left/1px 6px,linear-gradient(currentColor,currentColor) bottom right/6px 1px,linear-gradient(currentColor,currentColor) bottom right/1px 6px;background-repeat:no-repeat}
.duel-hole-cards .card-ui{border-color:color-mix(in srgb,currentColor 48%,#172434)}
.duel-board::after{content:"";position:absolute;inset:-.9cqh -1cqw;border-block:1px solid rgba(0,231,255,.12);pointer-events:none;z-index:-1;background:linear-gradient(90deg,transparent,rgba(0,231,255,.025),transparent)}
.duel-outs-group::before{content:"";position:absolute;inset:-.7cqh -.45cqw;z-index:-1;background:linear-gradient(90deg,rgba(0,231,255,.035),transparent),repeating-linear-gradient(transparent 0 5px,rgba(0,231,255,.035) 5px 6px);border-top:1px solid color-mix(in srgb,currentColor 32%,transparent);border-bottom:1px solid color-mix(in srgb,currentColor 15%,transparent);pointer-events:none}
.duel-outs-chop{color:#e4c889}
.duel-out-card::after{content:"";position:absolute;left:-2px;top:-2px;width:4px;height:4px;border-top:1px solid currentColor;border-left:1px solid currentColor;opacity:.4;pointer-events:none}
@keyframes duel-hud-rotate{to{transform:rotate(360deg)}}
@keyframes duel-node-wake{0%{opacity:0}35%{opacity:1}100%{opacity:.45}}
@container duel-stage (max-height:450px){
 .duel-cyber-layer{opacity:.7}.duel-pixel-matrix{background-size:8px 8px,8px 8px,100% 100%}
 .duel-hud-inner,.duel-system-tag,.duel-system-header{display:none}
 .duel-hud-brand{font-size:clamp(12px,2.1cqw,18px)}.duel-hud-brand small{font-size:5px}
 .duel-outs-label{font-size:8px;letter-spacing:.08em}.duel-out-card::after{opacity:.25}
}
@media(prefers-reduced-motion:reduce){.duel-cyber-layer *,.duel-cyber-layer ::after{animation:none!important}.duel-pixel-matrix::after{opacity:.45}}

/* Motion V2 entry with the original continuous rings and community-card flips.
   All geometry (including the short-stage hotfix) stays owned above. */
.duel-motion-v2{background:transparent;backdrop-filter:none}
.duel-motion-v2:not(.is-exiting),.duel-motion-v2 .duel-player{animation:none;translate:none}
.duel-mode-backdrop{position:absolute;inset:0;z-index:-1;background:rgba(2,7,13,.65);backdrop-filter:blur(3px);pointer-events:none;opacity:1;transition:opacity 360ms ease-out}
.duel-motion-v2 .duel-equity-gauge{z-index:2}
.duel-allin-call{position:absolute;left:50%;top:40%;z-index:5;color:#fff;font-size:clamp(20px,3cqw,40px);font-weight:900;-webkit-text-stroke:.025em currentColor;letter-spacing:.18em;white-space:nowrap;text-shadow:0 0 2px var(--duel-cyan),0 0 7px rgba(0,231,255,.9),0 0 16px rgba(0,231,255,.55);transform:translate(-50%,-50%);pointer-events:none;animation:duel-call-in 2200ms linear both,duel-call-flicker 2200ms steps(1,end) both}
.duel-allin-call[hidden]{display:none}
body.ponder-duel-active #actions,body.ponder-duel-active #actions *,body.ponder-duel-active .turn-highlight{animation-play-state:paused!important;pointer-events:none!important}
.duel-motion-v2 .duel-cyber-layer{transition:opacity 380ms ease-out}
.duel-motion-v2.is-intro:not(.has-mode-shift) .duel-mode-backdrop,
.duel-motion-v2.is-intro:not(.has-hud) .duel-cyber-layer,
.duel-motion-v2.is-intro:not(.has-entry-board) .duel-board,
.duel-motion-v2.is-intro:not(.has-entry-players) .duel-identity,
.duel-motion-v2.is-intro:not(.has-entry-hand-frame) .duel-hole-cards,
.duel-motion-v2.is-intro:not(.has-entry-tags) .duel-status-tag,
.duel-motion-v2.is-intro:not(.has-entry-gauge) .duel-equity-gauge,
.duel-motion-v2.is-intro:not(.has-entry-equity) .duel-equity-reading,
.duel-motion-v2.is-intro:not(.has-entry-equity) .duel-equity-label{opacity:0}
.duel-motion-v2 .duel-identity,.duel-motion-v2 .duel-hole-cards,.duel-motion-v2 .duel-status-tag{transition:opacity 180ms ease-out}
.duel-motion-v2.is-intro:not(.has-entry-board-face) .duel-card .duel-card-face,
.duel-motion-v2.is-intro:not(.has-entry-hands) .duel-hole-cards .card-rank,
.duel-motion-v2.is-intro:not(.has-entry-hands) .duel-hole-cards .card-suit,
.duel-motion-v2.is-intro:not(.has-entry-hands) .duel-hole-cards .duel-playing-card svg{opacity:0}
.duel-motion-v2.is-intro .duel-card-face,.duel-motion-v2.is-intro .duel-hole-cards .card-rank,.duel-motion-v2.is-intro .duel-hole-cards .card-suit,.duel-motion-v2.is-intro .duel-hole-cards .duel-playing-card svg{transition:opacity 160ms ease-out}
.duel-motion-v2 .duel-card::before{content:"";position:absolute;inset:-1px;border:1px solid rgba(0,231,255,.35);border-top-color:rgba(138,77,255,.35);border-radius:.5cqw;pointer-events:none;opacity:0}
.duel-motion-v2.is-intro.has-entry-board .duel-card::before,.duel-motion-v2 .duel-card.is-arriving::before{opacity:1}
.duel-motion-v2 .duel-hole-cards::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,transparent 42%,rgba(0,231,255,.6) 49%,rgba(230,255,255,.8) 50%,transparent 56%) 120% 0/200% 100% no-repeat;opacity:0;transform:none}
/* Move the band across the full pair, rather than scaling it only to center. */
.duel-motion-v2.is-intro.has-entry-hand-frame .duel-hole-cards::after{animation:duel-hand-scan 480ms linear both}
.duel-motion-v2.is-intro.has-entry-gauge .duel-gauge-cell{animation:duel-cell-boot 150ms ease-out var(--duel-boot-delay,0ms) both;transform-origin:center}
.duel-motion-v2.is-intro.has-entry-equity .duel-equity-reading,.duel-motion-v2.is-intro.has-entry-equity .duel-equity-label{transition:opacity 180ms ease-out}
.duel-motion-v2 .duel-card.is-revealed .duel-card-face{animation:none;opacity:1}
.duel-motion-v2 .duel-card.is-revealed::after{animation:none;opacity:0}
.duel-motion-label{position:absolute;left:2cqw;bottom:calc(100% + .45cqh);font:500 clamp(5px,.65cqw,8px)/1 monospace;letter-spacing:.1em;color:var(--duel-cyan);opacity:0;pointer-events:none}
.is-recalculating .duel-motion-label{opacity:.7}
.duel-motion-v2 .duel-gauge-track::after{content:"";position:absolute;left:var(--duel-boundary,50%);top:-5%;height:110%;width:2px;pointer-events:none;background:#edffff;opacity:0;transform:translateX(-50%);box-shadow:0 0 5px rgba(0,231,255,.7)}
.duel-motion-v2 .has-boundary-pulse .duel-gauge-track::after{animation:duel-boundary-pulse 260ms ease-out both}
.duel-motion-v2 .has-card-impact::after{content:"";position:absolute;inset:-.5cqh -.4cqw;border:1px solid rgba(0,231,255,.6);pointer-events:none;animation:duel-boundary-pulse 230ms ease-out both}
.duel-motion-v2 .has-number-pulse{animation:duel-number-pulse 260ms ease-out both}
.duel-motion-v2.has-equity-swing[data-leading="cyan"] .duel-cyan .duel-hole-cards,
.duel-motion-v2.has-equity-swing[data-leading="red"] .duel-red .duel-hole-cards{animation:duel-number-pulse 260ms ease-out both}
.duel-motion-v2.has-equity-swing[data-leading="cyan"] .duel-red,.duel-motion-v2.has-equity-swing[data-leading="red"] .duel-cyan{opacity:.7}
.duel-motion-v2.has-equity-swing[data-leading="cyan"] .duel-radial-bottom .duel-hud-segments,
.duel-motion-v2.has-equity-swing[data-leading="red"] .duel-radial-top .duel-hud-segments{animation:duel-boundary-pulse 400ms ease-out both}
.duel-motion-v2 .duel-outs-cards{position:relative}
.duel-motion-v2 .duel-out-card.is-outs-added{animation:duel-out-add 220ms ease-out both}
.duel-motion-v2 .duel-out-card.is-outs-removed{position:absolute;left:var(--duel-out-left,0px);top:var(--duel-out-top,0px);animation:duel-out-remove 200ms ease-out both}
.duel-motion-v2 .duel-outs-chop,.duel-motion-v2 .duel-outs-chop .duel-outs-label{color:var(--duel-purple)}
.duel-motion-v2 .duel-out-card.is-chop>.card-ui{border-color:var(--duel-purple)}
.duel-motion-v2 .is-duel-loser{opacity:.78;filter:brightness(.8)}
.duel-motion-v2 .is-duel-loser .duel-hole-cards>.card-ui{opacity:1;filter:none}
.duel-motion-v2 .has-winner-pulse .duel-hole-cards,.duel-motion-v2 .has-winner-pulse .duel-status-tag{animation:duel-number-pulse 240ms ease-out both}
@keyframes duel-call-in{from{transform:translate(-50%,-50%) scale(1)}to{transform:translate(-50%,-50%) scale(1.14)}}
/* Three brief, shallow dips within the finite CALL hold; no continuous strobe. */
@keyframes duel-call-flicker{0%,20%,60%,89%,100%{opacity:1}14%{opacity:.68}55%{opacity:.74}84%{opacity:.78}}
@keyframes duel-hand-scan{0%{opacity:0;background-position:120% 0}12%{opacity:1}85%{opacity:.6}100%{opacity:0;background-position:-20% 0}}
@keyframes duel-cell-boot{from{opacity:0;transform:scaleY(.3)}to{opacity:1;transform:scaleY(1)}}
@keyframes duel-boundary-pulse{0%,100%{opacity:0}25%{opacity:.9}65%{opacity:.35}}
@keyframes duel-number-pulse{0%,100%{opacity:1;transform:scale(1)}40%{opacity:.8;transform:scale(1.025)}}
@keyframes duel-out-add{from{opacity:0;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}
@keyframes duel-out-remove{0%{opacity:.55}100%{opacity:0;transform:translateY(3px)}}
@media(prefers-reduced-motion:reduce){
 .duel-motion-v2 .duel-allin-call{animation:duel-win-result-fade-in 120ms ease-out both!important}
 .duel-motion-v2.has-mode-shift .duel-allin-call{opacity:0;animation:none!important}
 .duel-motion-v2 .duel-card::after,.duel-motion-v2 .duel-hole-cards::after,.duel-motion-v2 .duel-gauge-track::after{animation:none!important;opacity:0}
 .duel-motion-v2 .duel-mode-backdrop{transition:none}
}
/* Some archive records have no settlement delta; keep their absent value hidden. */
.duel-win-pot[hidden]{display:none!important}
