/* The game surface carries the action. Help stays optional; animation conveys state. */
.mini-lobby .mini-art{position:relative;inset:auto;aspect-ratio:16/9;border-radius:12px;pointer-events:none}
.game-focus .map-choice{position:sticky;bottom:88px;z-index:3}
.map-svg .route-travel{fill:none;stroke:#fbeab6;stroke-width:5;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1;animation:route-progress .38s ease-out forwards}
@keyframes route-progress{to{stroke-dashoffset:0}}
.game-focus{max-width:860px;margin:auto}.game-focus .page-head{margin-bottom:16px}.game-focus>.panel{margin-top:16px}
.ready-portraits{display:flex;flex-wrap:wrap;justify-content:center;gap:14px;margin:24px 0 10px}.ready-person{position:relative;opacity:.55;transition:opacity .2s}.ready-person .portrait{width:55px;border-radius:50%;filter:saturate(.6)}.ready-person.is-ready{opacity:1}.ready-person.is-ready .portrait{border-color:#bfdda5;filter:none;box-shadow:0 0 16px #a5cb6b33}.ready-check{position:absolute;right:-4px;bottom:2px;width:23px;height:23px;border-radius:50%;background:#accb8e;color:#182519;text-align:center;font-weight:bold;border:2px solid #172321}
.mini-lobby{max-width:650px;margin:auto;text-align:center}.mini-lobby .mini-rules{max-width:520px;margin:14px auto 22px}.stake-options{display:flex;gap:12px;align-items:center;justify-content:center;margin:18px 0}.stake-options select{width:auto;min-width:70px}.stake-options label{margin:0}
.mini-countdown{position:fixed;inset:0;z-index:40;display:grid;place-content:center;text-align:center;pointer-events:auto;background:#08130ecf;backdrop-filter:blur(5px);color:#f3dcaa}.mini-countdown strong{font:90px Georgia;text-shadow:0 0 45px #d4b774}.mini-countdown span{font-size:.8rem;letter-spacing:.25em}
.battle-actions{margin:0 0 12px;background:linear-gradient(135deg,#25352a,#13231e);border-color:#8b7549}.action-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;margin:12px 0 0}.action-tab{min-height:46px;background:#11211b;border-color:#5c644b}.action-tab.chosen,.ability-card.chosen{border-color:#ffe1a3;box-shadow:inset 0 0 20px #c9ac4b26,0 0 10px #d9c17b18}
.ability-deck{display:flex;gap:10px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;padding:12px 3px 8px;scrollbar-width:thin;scrollbar-color:#aa905a #15231c}.ability-card{position:relative;flex:0 0 126px;scroll-snap-align:start;min-height:146px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;border:1px solid #a28752;border-radius:12px 12px 5px 5px;background:radial-gradient(ellipse at 50% 15%,#68744444,transparent 70%),linear-gradient(140deg,#24342a,#0c1714);box-shadow:inset 0 0 0 3px #0b151980;padding:12px 8px;white-space:normal}.ability-card strong{font:600 .85rem Georgia;line-height:1.2}.ability-card small{font-size:.68rem;color:#b9c8bd}.ability-card:disabled{opacity:.4}.ability-sigil{font-size:35px;color:#edce87;text-shadow:0 0 15px #c5a65866}.ability-sigil.effect-fire{color:#f7a76c}.ability-sigil.effect-frost{color:#a1dbf3}.ability-sigil.effect-nature,.ability-sigil.effect-heal{color:#b3d7a2}.ability-sigil.effect-shadow{color:#bdacd7}.ability-card .item-art{width:58px;height:58px}
.action-preview{display:flex;gap:10px;align-items:start;margin:10px 0;padding:12px;border-left:2px solid #c8a86b;background:#0d1819aa}.action-preview>div{flex:1}.action-preview strong{color:#e9d2a6}.action-preview p{font-size:.82rem;line-height:1.45;margin:5px 0 0}.action-preview button{min-width:44px;min-height:44px}
.combatant.active{border-color:#e8c98e;animation:actor-glow 1.9s ease-in-out infinite}.combatant.target-eligible{cursor:crosshair;animation:target-glow 1.6s ease-in-out infinite;border-color:#aac79c}.combatant.target-muted{opacity:.34;filter:saturate(.35);cursor:default}.combatant.active.target-muted{opacity:.6}.combatant.card-arriving{animation:card-arrive 380ms cubic-bezier(.2,.8,.2,1) var(--arrive-delay) both}.battle-stage{overflow:hidden}.game-focus .battle-board{gap:8px}.game-focus .combatant{min-height:125px}.game-focus .combatant b{font-size:.78rem}.game-focus .combatant small{font-size:.67rem}.game-focus .enemy-board{max-height:360px}.combatant .portrait{pointer-events:none}
.battle-record{margin-top:14px;padding:12px 18px;background:#12201c99;border:1px solid #384a3a;border-radius:9px}.battle-record summary{padding:0;font-size:.8rem}.battle-caption:empty{display:none}
.battle-won .combatant[data-side=enemy]{opacity:.2;filter:grayscale(1)}.victory-burst{position:absolute;inset:0;z-index:5;display:grid;place-content:center;text-align:center;pointer-events:none;background:radial-gradient(ellipse,#d0b56d20,transparent 65%);animation:victory-reveal 1.65s ease-out both}.victory-burst span{font-size:90px;color:#e8cc85;text-shadow:0 0 65px #eac57e}.victory-burst strong{font:700 42px Georgia;letter-spacing:.18em;color:#fff1cf;text-shadow:0 3px 16px #090e09}.battle-reward{max-width:650px;margin:auto;text-align:center;padding:35px 22px;background:radial-gradient(ellipse at 50% 0,#b09a5826,transparent 65%),#13221d;border:1px solid #a98f56;border-radius:16px}.battle-reward>.sigil{font-size:55px;color:#ebd19c}.battle-reward .loot{justify-content:center;margin:24px 0}.battle-reward h2{font-size:2rem}.battle-reward .loot-item{animation:reward-appear .4s ease-out both}.battle-reward .primary{margin-top:10px}
.scene-ghost{position:fixed!important;z-index:20;pointer-events:none!important;margin:0!important;overflow:hidden;max-height:110vh;contain:paint}.scene-ghost *{pointer-events:none!important;animation:none!important}.node.departing{animation:destination-glow .38s ease-in both}.travel-active .map-svg{filter:drop-shadow(0 0 5px #b79752)}.scene-arrival{animation:reward-appear .4s ease-out}
@keyframes actor-glow{50%{box-shadow:0 0 0 2px #e1c389,0 0 22px #dfb76a50}}
@keyframes target-glow{50%{box-shadow:0 0 0 1px #c7e5ac,0 0 16px #94b85f50;filter:brightness(1.12)}}
@keyframes card-arrive{from{opacity:0;transform:translateY(20px) rotate(-3deg) scale(.92)}to{opacity:1;transform:none}}
@keyframes victory-reveal{0%{opacity:0;transform:scale(.85)}25%,72%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(1.05)}}
@keyframes reward-appear{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}
@keyframes destination-glow{to{box-shadow:0 0 28px #f1d48e;filter:brightness(1.4);transform:scale(1.08)}}
@media(max-width:650px){.action-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}.game-focus .battle-board{grid-template-columns:repeat(var(--mobile-fighters,3),minmax(0,1fr))}.game-focus .combatant{padding:8px 4px}.game-focus .combatant b{font-size:.7rem}.game-focus .combatant small{font-size:.6rem}.ability-card{flex-basis:120px;min-height:134px}.ready-person .portrait{width:45px}.ready-portraits{gap:10px}.game-focus .enemy-board{max-height:310px}.battle-reward{padding:25px 15px}.battle-actions .row.between strong{font-size:.9rem}}
.reduce-motion .combatant,.reduce-motion .victory-burst,.reduce-motion .loot-item,.reduce-motion .node,.reduce-motion .scene-arrival{animation:none!important}
@media(prefers-reduced-motion:reduce){.combatant,.victory-burst,.loot-item,.node,.scene-arrival{animation:none!important}}
@media(max-width:650px){.game-focus:has(.battle-stage) .page-head{margin-bottom:12px}.game-focus:has(.battle-stage) .page-head h1{font-size:1.65rem}.game-focus:has(.battle-stage) .page-head .eyebrow{margin-bottom:6px}.action-tabs{grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}.battle-actions .action-tab{padding:7px 3px;font-size:.65rem;min-height:48px;overflow-wrap:anywhere}.ability-card{flex-basis:112px;min-height:112px;gap:5px}.ability-sigil{font-size:28px}.action-preview{padding:9px;margin:7px 0}.action-preview p{font-size:.76rem}.action-preview .text-button{min-width:32px;padding:4px}.game-focus .combatant .portrait{width:min(74px,100%)}.game-focus .map-choice{padding:12px;margin-bottom:0}}
