:root{--bg:#0b0f17;--surface:#151b27;--surface-2:#1d2535;--border:#2c3850;--text:#e8ecf4;--muted:#8a94a8;--accent:#c58cff;--hero:#3d8bff;--enemy:#d8434b;--good:#4fd06b;--bad:#ff6b6b;--energy:#5fb6ff;--move:#3d8bff;--gold:#f2c94c;--el-fire:#ff7a2f;--el-ice:#7fd4ff;--el-arcane:#b46bff;--el-force:#d9d9d9;--el-shield:#f5d76e;--el-teleport:#8f7bff;--el-neutral:#9aa4b8;--radius:8px;--font:system-ui, -apple-system, "Segoe UI", sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--font);font-size:14px}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}kbd{opacity:.7;border:1px solid;border-radius:3px;margin-left:6px;padding:0 4px;font-size:11px}.muted{color:var(--muted)}.battle{grid-template-rows:auto 1fr auto;height:100%;display:grid}.top-bar{grid-template-columns:minmax(240px,320px) 1fr auto;gap:12px;padding:10px 12px;display:grid}.top-actions{align-items:flex-start;gap:8px;display:flex}.top-actions button,.result-actions button{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);padding:6px 12px}.battle-main{grid-template-columns:1fr 320px;gap:12px;min-height:0;padding:0 12px;display:grid}.board-column{flex-direction:column;min-width:0;min-height:0;display:flex;position:relative}.board-host{border-radius:var(--radius);flex:1;min-height:240px;overflow:hidden}.side-column{flex-direction:column;gap:12px;min-height:0;display:flex}.help{color:var(--muted);padding:6px 2px;font-size:12px}.notice{border:1px solid var(--bad);border-radius:var(--radius);pointer-events:none;background:#3a1d24;padding:6px 12px;position:absolute;top:12px;left:50%;transform:translate(-50%)}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px}.panel-title{margin-bottom:6px;font-weight:800}.turn-panel{text-align:center}.turn-title{font-size:18px;font-weight:800}.scenario-name{color:var(--muted);margin-bottom:4px;font-size:12px}.objective{color:var(--gold);font-weight:600}.objective-completed{color:var(--good)}.objective-failed{color:var(--bad)}.bar{grid-template-columns:84px 1fr auto;align-items:center;gap:8px;margin:3px 0;display:grid}.bar-label{color:var(--muted);font-size:12px}.bar-track{background:#0d1119;border-radius:5px;height:10px;overflow:hidden}.bar-fill{height:100%;display:block}.bar-hp .bar-fill{background:var(--good)}.bar-energy .bar-fill{background:var(--energy)}.bar-move .bar-fill{background:var(--move)}.bar-value{font-variant-numeric:tabular-nums;text-align:right;min-width:42px;font-size:12px}.statuses{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.status-chip{color:#ffd28a;background:#3b2a12;border-radius:4px;padding:1px 6px;font-size:11px}.enemy-panel{max-height:45%;overflow:auto}.enemy-row{border-left:3px solid var(--enemy);background:var(--surface-2);cursor:default;border-radius:6px;margin-bottom:6px;padding:6px}.enemy-row:hover{outline:1px solid var(--enemy)}.enemy-name{font-weight:700}.enemy-intent{color:#ffb3b8;margin-top:2px;font-size:12px}.log-panel{flex-direction:column;flex:1;min-height:0;display:flex}.log{flex:1;font-size:12px;overflow:auto}.log-line{padding:1px 0}.tone-good{color:var(--good)}.tone-bad{color:var(--bad)}.tone-turn{color:var(--gold);margin-top:4px;font-weight:700}.hand-bar{grid-template-columns:72px 1fr auto 72px;align-items:end;gap:12px;padding:10px 12px 12px;display:grid}.pile{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;justify-content:center;align-items:center;height:96px;display:flex}.pile-count{font-size:22px;font-weight:800}.pile-label{color:var(--muted);font-size:11px}.hand{flex-wrap:nowrap;justify-content:safe center;gap:8px;min-width:0;padding:14px 8px 4px;display:flex;overflow:auto visible}.card{text-align:left;background:var(--surface-2);border:2px solid var(--border);border-top:6px solid var(--el-neutral);border-radius:var(--radius);flex-direction:column;flex:none;gap:4px;width:150px;min-height:170px;padding:10px 10px 8px;transition:transform 80ms ease-out;display:flex;position:relative}.card:hover{transform:translateY(-6px)}.card.is-selected{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent);transform:translateY(-12px)}.card.is-unplayable{opacity:.45}.card[data-element=FIRE]{border-top-color:var(--el-fire)}.card[data-element=ICE]{border-top-color:var(--el-ice)}.card[data-element=ARCANE]{border-top-color:var(--el-arcane)}.card[data-element=FORCE]{border-top-color:var(--el-force)}.card[data-element=SHIELD]{border-top-color:var(--el-shield)}.card[data-element=TELEPORT]{border-top-color:var(--el-teleport)}.card-cost{background:var(--energy);color:#04121f;border-radius:50%;place-items:center;width:28px;height:28px;font-weight:900;display:grid;position:absolute;top:-12px;left:-8px}.card-hotkey{color:var(--muted);font-size:11px;position:absolute;top:4px;right:8px}.card-name{margin-top:4px;font-size:15px;font-weight:800}.card-meta{color:var(--muted);font-size:11px}.card-text{font-size:12px;line-height:1.3}.end-turn-box{flex-direction:column;align-items:stretch;gap:8px;display:flex}.energy-pips{justify-content:center;gap:6px;display:flex}.pip{border:1px solid var(--energy);background:#1b2433;width:16px;height:16px;transform:rotate(45deg)}.pip.on{background:var(--energy)}.end-turn{border:1px solid var(--hero);border-radius:var(--radius);background:#1d3b63;padding:14px 18px;font-weight:800}.hand-bar{position:relative}.draw-feedback{color:#d8b8ff;pointer-events:none;font-size:12px;animation:.65s ease-out forwards draw-feedback;position:absolute;top:-12px;left:50%}.hand-bar[aria-busy=true] .card:disabled{opacity:.8;cursor:wait}@keyframes draw-feedback{0%{opacity:0;transform:translate(-50%,8px)}20%{opacity:1}to{opacity:0;transform:translate(-50%,-10px)}}@media (prefers-reduced-motion:reduce){.draw-feedback{animation:.65s linear forwards draw-feedback-still}}@keyframes draw-feedback-still{0%,70%{opacity:1}to{opacity:0}}.visual-qa{z-index:30;background:#17172a;border-bottom:1px solid #73608c;flex-wrap:wrap;align-items:center;gap:8px;padding:5px 10px;font-size:11px;display:flex;position:fixed;inset:0 0 auto}.visual-qa select,.visual-qa button{color:#ece3ff;background:#29263b;border:1px solid #706582;padding:3px}body:has(.visual-qa) #root{padding-top:62px}.result-overlay{z-index:10;background:#0009;place-items:center;display:grid;position:fixed;inset:0}.result-card{background:var(--surface);border:2px solid var(--border);text-align:center;border-radius:12px;min-width:320px;padding:24px 32px}.result-card.won{border-color:var(--good)}.result-card.lost{border-color:var(--bad)}.result-card h2{margin:0 0 8px;font-size:32px}.result-actions{justify-content:center;gap:12px;margin-top:16px;display:flex}@media (width<=1100px){.battle-main{grid-template-rows:1fr auto;grid-template-columns:1fr}.side-column{flex-direction:row;max-height:112px}.side-column>.panel{flex:1;min-width:0;max-height:112px;overflow:auto}.top-bar{grid-template-columns:minmax(220px,1fr) 1fr auto}.top-actions{flex-direction:column}.hand-bar{grid-template-columns:60px 1fr auto 60px;gap:8px}.card{width:128px;min-height:150px;padding:8px 8px 6px}.card-text{font-size:11px}.end-turn{padding:12px 10px}}@media (width>=900px) and (width<=1100px) and (height<=900px){.battle-main{grid-template-rows:1fr;grid-template-columns:minmax(0,1fr) 230px}.side-column{flex-direction:column;max-height:none}.side-column>.panel{flex:initial;max-height:none}.side-column>.enemy-panel{max-height:58%}.side-column>.log-panel{flex:1}}@media (width<=700px){.top-bar{grid-template-columns:1fr 1fr}.top-actions{flex-direction:row;grid-column:span 2}}.run-progress.tier-elite .run-step{color:var(--gold)}.run-progress.tier-boss .run-step{color:var(--bad)}.run-progress{flex-direction:column;align-items:center;gap:1px;margin-top:2px;font-size:11px;display:flex}.run-step{letter-spacing:1px;text-transform:uppercase;color:var(--muted)}.run-focus{color:var(--text);opacity:.85;text-align:center;max-width:460px}.reward-card{max-width:min(720px,100vw - 32px)}.reward-options{flex-wrap:wrap;justify-content:center;gap:18px;margin:14px 0 10px;display:flex}.reward-option{border:1px solid #0000;border-radius:10px;flex-direction:column;align-items:center;gap:8px;padding:8px;display:flex}.reward-option.is-chosen{border-color:var(--gold);background:color-mix(in srgb, var(--gold) 10%, transparent)}.reward-rarity{letter-spacing:1px;text-transform:uppercase;color:var(--muted);font-size:11px}.reward-rarity.rarity-uncommon{color:var(--el-ice)}.reward-rarity.rarity-rare{color:var(--gold)}.reward-stat{width:154px;height:190px;color:var(--text);background:linear-gradient(130deg,#1e2832,#070d16 65%);border:1px solid #9a8358;border-radius:7px 7px 3px 3px;flex-direction:column;justify-content:center;align-items:center;gap:6px;display:flex}.reward-stat.is-selected{outline:2px solid var(--gold)}.reward-stat-value{color:var(--good);font-size:40px;font-weight:800}.reward-stat-label{font-weight:700}.reward-stat-text{color:var(--muted);font-size:12px}.reward-confirm:disabled{opacity:.45;cursor:not-allowed}.battle .reward-option .card,.battle .reward-option .card:hover,.battle .reward-option .card.is-selected{transform:none}.battle .reward-option .card-hotkey{display:none}:root{--rpg-scroll-track:#0b1724;--rpg-scroll-thumb:#677b84;--rpg-scroll-hover:#c6ad73}*{scrollbar-width:thin;scrollbar-color:var(--rpg-scroll-thumb) var(--rpg-scroll-track)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--rpg-scroll-track);border-radius:8px}::-webkit-scrollbar-thumb{background:var(--rpg-scroll-thumb);border:2px solid var(--rpg-scroll-track);border-radius:8px}::-webkit-scrollbar-thumb:hover{background:var(--rpg-scroll-hover)}::-webkit-scrollbar-corner{background:var(--rpg-scroll-track)}.rpg-scroll-y{overflow:hidden auto}.rpg-scroll-x{overflow:auto hidden}.rpg-scroll-panel{overscroll-behavior:contain;scrollbar-gutter:stable}@media (forced-colors:active){*{scrollbar-color:auto}}.battle{--scene-glow:#78644f;--scene-accent:#b19770;background:radial-gradient(at 50% 44%,#36465166,#0000 58%),radial-gradient(at 7% 64%,#b4793520,#0000 25%),linear-gradient(#080d16,#101b27 55%,#060910)}.battle[data-theme=sanctuary]{--scene-glow:#4f7a95;--scene-accent:#9fbdc2;background:radial-gradient(at 50% 44%,#376a7d55,#0000 63%),radial-gradient(at 10% 60%,#428ebc18,#0000 30%),linear-gradient(#090e1b,#10202c 55%,#070b13)}.battle[data-theme=fracture]{--scene-glow:#61566f;--scene-accent:#a89a9d;background:radial-gradient(at 50% 44%,#42435455,#0000 59%),linear-gradient(#070810,#11121e 55%,#05080d)}.battle .panel{border-color:color-mix(in srgb, var(--scene-accent) 48%, transparent);background:linear-gradient(135deg,#121b26ee,#060c14ef);box-shadow:0 8px 23px #0008,inset 0 0 0 3px #a9956410}.battle .hero-panel{border-left:2px solid #ac9666}.battle .hero-portrait{background:#0a1624;box-shadow:inset 0 0 18px #000}.character-portrait-art{width:100%;height:100%;display:block}.battle .hero-portrait svg{width:100%;height:100%}.game-icon{vertical-align:-3px;flex:none;width:15px;height:15px;display:inline-block}.battle .bar-label{color:#bca987;font-size:0}.battle .bar-label .game-icon{width:13px;height:13px}.battle .bar-hp .game-icon{color:#c99388}.battle .bar-energy .game-icon{color:#9bcddd}.battle .objective .game-icon{width:13px;height:13px}.battle .enemy-row{padding-left:29px;position:relative}.enemy-portrait{background:#101722;border:1px solid #6d727b;width:20px;height:25px;position:absolute;top:6px;left:3px;overflow:hidden}.battle .enemy-name{letter-spacing:.1px;font-family:Georgia,serif}.battle .enemy-name .muted{font-family:var(--font);letter-spacing:0}.battle .pile>.game-icon{color:#a9b9c5;width:23px;height:23px;margin-bottom:4px}.battle .card{border-color:var(--card-tone,#b69d68);background:linear-gradient(135deg,#34342d,#17202b 18%,#080f18 65%);box-shadow:0 7px 14px #000b,inset 0 0 0 2px #0a1019,inset 0 0 0 3px #8e7c4c66}.battle .card:before{content:"";pointer-events:none;background:linear-gradient(130deg,#fff0cd10,#0000 25% 80%,#e4d6a408);border:1px solid #d6c39122;border-radius:4px;position:absolute;inset:3px}.battle .card[data-family=fire]{background:linear-gradient(130deg,#674334,#282323 20%,#0d1119 65%)}.battle .card[data-family=ice]{background:linear-gradient(130deg,#43626e,#1b2934 20%,#0b121c 65%)}.battle .card[data-family=movement]{background:linear-gradient(130deg,#3f5472,#22263b 20%,#0b101b 65%)}.battle .card[data-family=defense]{background:linear-gradient(130deg,#6b5a36,#282a2b 20%,#0b1019 65%)}.battle .card-art{border-bottom-color:var(--card-tone);box-shadow:inset 0 0 14px #0008}.battle .card-art svg{transition:transform .15s,filter .15s}.battle .card-name{letter-spacing:.15px;color:#ece0c5;text-shadow:0 1px 2px #000;font-size:14px}.battle .card-rarity-slot{pointer-events:none;background:#0c1420;border:1px solid #a7987266;width:6px;height:6px;position:absolute;bottom:3px;left:calc(50% - 3px);transform:rotate(45deg)}.battle .card-meta{font-size:8.5px;line-height:1.3}.battle .card-meta .game-icon{vertical-align:-2px;width:10px;height:10px;color:var(--card-tone);margin-right:3px}.battle .card-text{padding-bottom:3px}.battle .hand .card:nth-child(n){transform:rotate(var(--card-tilt,0deg))}.battle .hand .card:hover,.battle .hand .card:focus-visible{z-index:4;box-shadow:0 9px 20px #000d, 0 0 12px color-mix(in srgb, var(--card-tone) 30%, transparent);transform:translateY(-9px)scale(1.025)}.battle .hand .card:hover .card-art svg,.battle .hand .card:focus-visible .card-art svg{filter:brightness(1.1);transform:scale(1.055)}.battle .hand .card.is-selected{border-color:var(--card-tone);box-shadow:0 0 0 2px var(--card-tone), 0 0 18px color-mix(in srgb, var(--card-tone) 28%, transparent);z-index:5;transform:translateY(-13px)scale(1.02)}@media (width>=1200px){.battle .hand:has(.card:nth-child(7)) .card+.card{margin-left:-12px}}@media (width<=760px){.battle .hand-bar>.pile:last-child>.game-icon{width:12px;height:12px;margin:0}}@media (prefers-reduced-motion:reduce){.battle .card-art svg{transition:none}.battle .hand .card:hover,.battle .hand .card:focus-visible,.battle .hand .card.is-selected{transform:none}.battle .hand .card:hover .card-art svg,.battle .hand .card:focus-visible .card-art svg{filter:none;transform:none}}.painted-scenery{pointer-events:none;opacity:.86;background-position:50%;background-size:cover;position:absolute;inset:0}.painted-scenery:after{content:"";background:linear-gradient(#03081066,#0000 30%,#02050c22 65%,#02050cd9),radial-gradient(#0000 34%,#03060b44);position:absolute;inset:0}.painted-portrait{background:radial-gradient(at 50% 25%,#45607a,#09111b 75%);width:100%;height:100%;position:relative;overflow:hidden}.painted-portrait img{width:225%;max-width:none;height:auto;position:absolute;top:-10%;left:-59%}.portrait-orc_warrior img{width:250%;top:-5%;left:-100%}.portrait-shadow_wolf img{width:330%;top:-32%;left:-225%}.portrait-dark_shaman img{width:230%;top:-22%;left:-72%}.portrait-stone_brute img{width:230%;top:-10%;left:-84%}.painted-card-art{object-fit:cover;width:100%;height:100%;transition:transform .16s;display:block}.battle .card{background:linear-gradient(110deg,#514430,#101722 14%,#070d16 82%,#443925);border:1px solid #af9863;border-radius:8px 8px 5px 5px;box-shadow:0 6px 15px #000c,inset 0 0 0 2px #0a0e16,inset 0 0 0 3px #b79b6355}.battle .card:before{border-color:#d9ba7644}.battle .card-art{border:1px solid #c3a46988;border-bottom:0;border-radius:4px 4px 0 0;width:calc(100% - 6px);margin:3px 3px 0}.battle .card-name{color:#f2e4c4;background:linear-gradient(90deg,#13161d,#29251e 48%,#11141b);border-top:1px solid #d1b67999;border-bottom:1px solid #8c734c88;margin:0 3px;padding:3px 1px}.battle .card-cost{text-shadow:0 1px 3px #031423;background:radial-gradient(circle at 34% 23%,#d9f9ff 0%,#569bc1 18%,#1c4b73 46%,#0a1c36 75%);border:2px solid #c5b07c;border-radius:50% 50% 43% 43%;box-shadow:0 1px 5px #000,inset 0 0 0 1px #cbe9ff88}.battle .card-meta{color:#baa889;margin-top:4px}.battle .card-text{color:#d8d9dc;line-height:1.3}.battle .card-rarity-slot{background:linear-gradient(130deg,#6b634d,#111a23 55%);border-color:#b9a36f}.battle .hand .card:hover .painted-card-art,.battle .hand .card:focus-visible .painted-card-art{transform:scale(1.035)}.battle .panel{background:linear-gradient(120deg,#161d26f2,#070c14f5);border-top-color:#c0a66c99;box-shadow:0 5px 18px #000b,inset 0 0 0 3px #c5a56412}.battle .bar-fill{box-shadow:inset 0 1px 1px #fff5,inset 0 -2px 3px #0008}.battle .pile{background:linear-gradient(135deg,#34342f,#0e1723 25%,#080e17 78%,#3b3327);border-color:#a9915e99}.battle .turn-panel{width:min(560px,100%);box-shadow:none;background:linear-gradient(90deg,#0000,#0a111be8 18%,#111d2be8 50%,#0a111be8 82%,#0000);border:0;place-self:start center;padding:7px 18px 9px;position:relative}.battle .turn-panel:before{content:"";pointer-events:none;border-top:1px solid #c5a86b66;border-bottom:1px solid #c5a86b44;position:absolute;inset:3px 9%}.battle .turn-title,.battle .scenario-name,.battle .objective{position:relative}.battle .card-art{flex-basis:84px;height:84px}.battle .card-summary{color:#d8d9dc;text-align:center;min-height:2.45em;max-height:2.45em;font-size:9.5px;line-height:1.22;display:block;overflow:hidden}.battle .card-text,.tactical-overview{display:none}@media (width>=1600px){.tactical-overview{z-index:2;color:#e5dbc4;pointer-events:auto;background:linear-gradient(145deg,#090f19e8,#101a25e8);border:1px solid #a8906255;width:178px;padding:8px;display:block;position:absolute;top:132px;right:26px;box-shadow:0 8px 24px #0009,inset 0 0 0 2px #05091088}.battle:has(.enemy-panel[data-enemies="3"]) .tactical-overview{top:178px}.battle:has(.enemy-panel[data-enemies="4"]) .tactical-overview{top:202px}.tactical-overview-title{color:#d9c491;letter-spacing:.7px;text-align:center;margin-bottom:6px;font:11px Georgia,serif}.tactical-map{background:#050a11;border:1px solid #82919a55;gap:2px;padding:4px;display:grid}.tactical-map-cell{aspect-ratio:1.65;background:linear-gradient(135deg,#394854,#202d39);border:1px solid #75818b45;position:relative}.tactical-map-cell.terrain-fire{background:#71341f}.tactical-map-cell.terrain-ice{background:#28627c}.tactical-map-cell.terrain-blocked{background:#070b10}.tactical-map-cell.terrain-objective{background:#584a2e}.tactical-map-cell.has-obstacle{box-shadow:inset 0 0 0 2px #b4b6b4}.tactical-map-cell i,.tactical-map-legend i{background:#63c9f6;border:1px solid #f0e5cc;border-radius:50%;width:6px;height:6px;position:absolute;inset:2px auto auto 50%;transform:translate(-50%);box-shadow:0 0 5px}.tactical-map-cell.unit-enemy i,.tactical-map-legend .unit-enemy{color:#d95d55;background:#d95d55}.tactical-map-cell.unit-objective i,.tactical-map-legend .unit-objective{color:#f0ca6d;background:#f0ca6d}.tactical-map-legend{justify-content:center;gap:8px;margin-top:6px;font-size:8px;display:flex}.tactical-map-legend span{align-items:center;gap:3px;display:inline-flex}.tactical-map-legend i{width:5px;height:5px;position:static;inset:auto;transform:none}}@media (width>=1500px) and (height>=850px){.battle .card-art{flex-basis:104px;height:104px}}@media (prefers-reduced-motion:reduce){.painted-card-art{transition:none}.battle .hand .card:hover .painted-card-art,.battle .hand .card:focus-visible .painted-card-art{transform:none}}.menu.is-committing{pointer-events:none;animation:menu-commit var(--intro-commit) var(--ease-exit) forwards}.menu.is-committing :is(.menu-header,.menu-section-title,.campaign-path,.campaign-hero:not(.is-chosen),.mode-card:not(.is-chosen)){opacity:.3;transition:opacity var(--motion-fast) var(--ease-exit), transform var(--motion-fast) var(--ease-exit);transform:scale(.98)}.menu .is-chosen{border-color:var(--gold);animation:menu-chosen var(--intro-commit) var(--ease-enter) both}@keyframes menu-chosen{40%{box-shadow:0 0 0 1px var(--gold), 0 0 30px color-mix(in srgb, var(--gold) 45%, transparent);transform:scale(1.025)}to{box-shadow:0 0 0 1px var(--gold), 0 0 16px color-mix(in srgb, var(--gold) 25%, transparent);transform:scale(1.015)}}@keyframes menu-commit{0%,45%{opacity:1}to{opacity:0}}.battle-veil{z-index:30;pointer-events:none;background:var(--bg);animation:battle-veil var(--intro-veil) var(--ease-enter) both;position:absolute;inset:0}@keyframes battle-veil{0%{opacity:1}to{opacity:0}}.battle .painted-scenery,.battle .battle-scenery{transform-origin:50% 42%;animation:scene-enter var(--intro-scene) var(--ease-enter) both}@keyframes scene-enter{0%{opacity:0;transform:scale(1.03)}}.battle[data-intro=running][data-intro-variant=full] :is(.hero-panel,.turn-panel,.enemy-panel,.tactical-overview,.battle-utilities,.hand-bar .pile,.end-turn-box){opacity:0}.battle[data-intro-variant=full][data-reveal~=hud] :is(.hero-panel,.turn-panel,.enemy-panel,.tactical-overview,.battle-utilities,.hand-bar .pile,.end-turn-box){animation-duration:var(--motion-emphasis);animation-timing-function:var(--ease-enter);animation-fill-mode:both}.battle[data-intro-variant=full][data-reveal~=hud] .hero-panel{animation-name:hud-from-top-left}.battle[data-intro-variant=full][data-reveal~=hud] .turn-panel{animation-name:hud-from-top;animation-delay:var(--stagger-hud)}.battle[data-intro-variant=full][data-reveal~=hud] .enemy-panel{animation-name:hud-from-top-right;animation-delay:calc(var(--stagger-hud) * 2)}.battle[data-intro-variant=full][data-reveal~=hud] .tactical-overview{animation-name:hud-from-top-right;animation-delay:calc(var(--stagger-hud) * 3)}.battle[data-intro-variant=full][data-reveal~=hud] .battle-utilities{animation-name:hud-from-bottom;animation-delay:calc(var(--stagger-hud) * 3)}.battle[data-intro-variant=full][data-reveal~=hud] .hand-bar .pile{animation-name:hud-from-bottom;animation-delay:calc(var(--stagger-hud) * 2)}.battle[data-intro-variant=full][data-reveal~=hud] .end-turn-box{animation-name:hud-from-bottom-right;animation-delay:calc(var(--stagger-hud) * 4)}@keyframes hud-from-top-left{0%{opacity:0;transform:translate(-28px,-18px)}to{opacity:1;transform:none}}@keyframes hud-from-top-right{0%{opacity:0;transform:translate(28px,-18px)}to{opacity:1;transform:none}}@keyframes hud-from-top{0%{opacity:0;transform:translateY(-24px)}to{opacity:1;transform:none}}@keyframes hud-from-bottom{0%{opacity:0;transform:translateY(32px)}to{opacity:1;transform:none}}@keyframes hud-from-bottom-right{0%{opacity:0;transform:translate(24px,28px)}to{opacity:1;transform:none}}.battle[data-intro=running] .objective{opacity:0}.battle[data-reveal~=objective] .objective{animation:objective-reveal var(--motion-emphasis) var(--ease-enter) both}.battle[data-reveal~=objective] .objective+.objective{animation-delay:var(--stagger-hud)}.battle[data-reveal~=objective] .objective .game-icon{animation:objective-icon var(--motion-normal) var(--ease-impact) both}@keyframes objective-reveal{0%{opacity:.2;clip-path:inset(0 100% 0 0)}to{opacity:1;clip-path:inset(0)}}@keyframes objective-icon{0%{opacity:0;transform:scale(.6)}}.battle[data-intro=running] .hand .card,.battle[data-intro=running] .hand .card:nth-child(odd),.battle[data-intro=running] .hand .card:nth-child(2n){animation-delay:var(--deal-delay,0s);animation-fill-mode:backwards}.turn-banner{z-index:12;pointer-events:none;animation:turn-banner var(--turn-banner) linear both;background:radial-gradient(#04080fcc,#0000 72%);justify-items:center;gap:6px;padding:10px 56px;display:grid;position:absolute;top:40%;left:50%;transform:translate(-50%,-50%)}.turn-banner:before,.turn-banner:after{content:"";background:linear-gradient(90deg, transparent, var(--hud-gold,#c5b180), transparent);height:1px;animation:turn-banner-rule var(--turn-banner) linear both;position:absolute;left:8%;right:8%}.turn-banner:before{top:0}.turn-banner:after{bottom:0}.turn-banner-title{letter-spacing:.16em;text-transform:uppercase;color:#f3e6c4;text-shadow:0 2px 10px #000, 0 0 26px color-mix(in srgb, var(--gold) 35%, transparent);font:38px Georgia,serif}.turn-banner-sub{letter-spacing:.28em;text-transform:uppercase;color:var(--hud-gold,#c5b180);font-size:11px}.turn-banner[data-faction=enemy] .turn-banner-title{color:#f1c4b8;text-shadow:0 2px 10px #000, 0 0 26px color-mix(in srgb, var(--enemy) 45%, transparent)}.turn-banner[data-faction=enemy] .turn-banner-sub{color:#d99a8c}.turn-banner[data-faction=enemy]:before,.turn-banner[data-faction=enemy]:after{background:linear-gradient(90deg, transparent, var(--enemy), transparent)}@keyframes turn-banner{0%{opacity:0;animation-timing-function:var(--ease-enter);transform:translate(-50%,-50%)scale(1.05)}24%{opacity:1;transform:translate(-50%,-50%)scale(1)}76%{opacity:1;animation-timing-function:var(--ease-exit);transform:translate(-50%,-50%)}to{opacity:0;transform:translate(-50%,-56%)}}@keyframes turn-banner-rule{0%{animation-timing-function:var(--ease-enter);transform:scaleX(0)}34%,to{transform:scaleX(1)}}@media (prefers-reduced-motion:reduce){.menu.is-committing{animation-duration:var(--motion-fast)}.menu.is-committing :is(.menu-header,.menu-section-title,.campaign-path,.campaign-hero,.mode-card){transform:none}.menu .is-chosen{animation:none}.battle .painted-scenery,.battle .battle-scenery,.battle[data-intro-variant=full][data-reveal~=hud] :is(.hero-panel,.turn-panel,.enemy-panel,.tactical-overview,.battle-utilities,.hand-bar .pile,.end-turn-box),.battle[data-reveal~=objective] .objective{animation-name:motion-fade;animation-duration:var(--motion-fast);animation-delay:0s}.battle[data-reveal~=objective] .objective .game-icon,.turn-banner:before,.turn-banner:after{animation:none}.turn-banner{animation-name:turn-banner-fade;animation-duration:var(--motion-cinematic)}}@keyframes motion-fade{0%{opacity:0}to{opacity:1}}@keyframes turn-banner-fade{0%,to{opacity:0}20%,75%{opacity:1}}.pile-dialog{color:#eadcbb;background:#0d1825;border:1px solid #a99462;width:min(420px,90dvw);max-height:80dvh;overflow:auto}.pile-dialog::backdrop{background:#030812bb}.pile-dialog button,.cancel-action,.confirm-action{color:#eadcbb;background:#142b40;border:1px solid #9e855d;min-height:44px;padding:6px 12px}.account-chip{color:#eadcbb;white-space:nowrap;background:#09101a99;border:1px solid #eadcbb40;border-radius:999px;align-items:center;gap:8px;min-height:36px;padding:0 12px;font-size:13px;font-weight:600;display:inline-flex}.menu-header .account-chip{align-self:center;margin-left:auto}.menu-header .account-chip+.menu-nav-champions{margin-left:0}button.account-chip:hover{border-color:#eadcbb99}.account-chip.is-disabled{color:#eadcbb80;border-style:dashed}.account-dot{background:#8a94a8;border-radius:50%;width:8px;height:8px}.account-chip.is-ready .account-dot{background:#9fe0a8;box-shadow:0 0 6px #9fe0a8}.account-chip.is-offline .account-dot{background:#f2b8a8}.account-chip.is-connecting .account-dot,.account-chip.is-needs_import .account-dot{background:#7fb8ff;animation:1s ease-in-out infinite alternate account-pulse}@keyframes account-pulse{to{opacity:.3}}.account-dialog{border-radius:10px;width:min(440px,100vw - 32px);padding:20px 22px}.account-dialog h2{color:#f4e7c6;margin:0 0 8px;font:600 22px/1.2 Georgia,serif}.account-dialog p{color:#b9ab8b;margin:0 0 12px}.account-tabs{grid-template-columns:1fr 1fr;gap:6px;margin-bottom:12px;display:grid}.account-tabs button[aria-selected=true]{color:#fff3d0;background:linear-gradient(#46628c8c,#182840bf);border-color:#7fb8ff}.account-form{gap:10px;margin-bottom:10px;display:grid}.account-form label{letter-spacing:.1em;text-transform:uppercase;color:#b9ab8b;gap:4px;font-size:12px;display:grid}.account-form input{min-height:44px;font:inherit;letter-spacing:0;text-transform:none;color:#eadcbb;background:#040910d9;border:1px solid #9e855d80;border-radius:8px;padding:0 12px;font-size:16px}.account-form input:focus-visible{outline-offset:1px;outline:2px solid #fff6dc}.account-note{font-size:12px}.account-error{color:#ff9a8a!important}.turnstile-slot{min-height:65px}.recovery-code{letter-spacing:.08em;text-align:center;color:#f4e7c6;-webkit-user-select:all;user-select:all;background:#040910d9;border:1px dashed #d6b86a;border-radius:8px;margin:0 0 14px;padding:12px;font:700 18px/1.3 ui-monospace,monospace;display:block}.import-summary{color:#eadcbb;margin:0 0 12px;padding-left:18px}.cloud-banner{z-index:60;top:max(8px, env(safe-area-inset-top));color:#eadcbb;background:#0d1825f2;border:1px solid #7fb8ff80;border-radius:999px;align-items:center;gap:10px;max-width:calc(100vw - 24px);padding:6px 8px 6px 12px;font-size:13px;display:flex;position:fixed;left:50%;translate:-50%;box-shadow:0 8px 24px #000a}.cloud-banner.is-error{border-color:#e46a5f}.cloud-banner .game-icon{color:#7fb8ff;flex:0 0 16px;width:16px;height:16px}.cloud-banner.is-error .game-icon{color:#ff9a8a}.cloud-banner button{color:#eadcbb;background:#142b40;border:1px solid #9e855d;border-radius:999px;min-height:32px;padding:0 10px}.cloud-sync{color:#7fb8ff;font-size:13px}@media (orientation:landscape) and (height<=500px){.menu-header .account-chip{min-height:32px;font-size:12px}}@media (prefers-reduced-motion:reduce){.account-dot{animation:none!important}}.account-chip,.menu-header .account-chip{min-height:44px}.account-premium.account-dialog{color:#eadcbb;background:linear-gradient(135deg,#152638,#060d17 70%);border:1px solid #ad8b4f;border-radius:5px;width:min(900px,100vw - 32px);max-width:none;max-height:calc(100dvh - 32px);padding:0;overflow:auto;box-shadow:0 0 0 4px #070d14,0 0 0 5px #ad8b4f55,0 25px 80px #000d,inset 0 0 28px #78baf00a}.account-premium[open]{grid-template-columns:36% 64%;display:grid}.account-premium::backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#020711d9}.account-art{background:radial-gradient(at 50% 35%,#4683a855,#04101b55 65%),url(/art/checkpoint05/environments/sanctuary.webp) 50%/cover;border-right:1px solid #b99a5b66;min-height:480px;position:relative;overflow:hidden}.account-art:after{content:"";pointer-events:none;background:linear-gradient(#0000 25%,#030913 95%);position:absolute;inset:0}.account-art img{object-fit:contain;width:115%;height:82%;position:absolute;top:0;left:-8%}.account-art>div:last-child{z-index:1;position:absolute;bottom:30px;left:24px;right:16px}.account-art span,.account-eyebrow{color:#c9ab6a;letter-spacing:.14em;text-transform:uppercase;font-size:11px;font-weight:700}.account-art h2{margin:12px 0;font-size:30px}.account-art p{font-size:13px;line-height:1.6}.account-art-rune{z-index:1;color:#8fd6fa;font-size:28px;position:absolute;top:24px;left:24px}.account-content{min-width:0;padding:26px 32px}.account-content h2{margin:14px 0 16px;font-size:28px}.account-content p{line-height:1.5}.account-heading{justify-content:space-between;align-items:center;gap:12px;display:flex}.account-premium button{cursor:pointer;color:#e8dcb9;border-radius:3px;min-height:44px;font:600 14px/1.2 Georgia,serif}.account-heading button{background:#060f19;border:1px solid #ba995c66;width:44px;font:24px/1 sans-serif}.account-premium button:disabled{opacity:.45;cursor:default}.account-premium :is(button,input):focus-visible{outline-offset:3px;outline:2px solid #99dcff}.account-primary,.account-secondary{background:linear-gradient(#22516c,#102438);border:1px solid #b89a57;width:100%;padding:12px 18px;box-shadow:inset 0 0 0 3px #080e1755,0 3px 10px #0005}.account-secondary{background:linear-gradient(#1b2837,#0b1421);border-color:#9d804a99}.account-primary:hover:not(:disabled),.account-secondary:hover:not(:disabled){filter:brightness(1.15);border-color:#f3d494}.account-entry-actions{gap:12px;margin:24px 0 18px;display:grid}.account-link{text-underline-offset:4px;background:0 0;border:0;text-decoration:underline;color:#a6d7f1!important}.account-form fieldset{border:0;gap:10px;min-width:0;margin:0;padding:0;display:grid}.account-form label{letter-spacing:.04em;text-transform:none;font-size:13px}.account-form input{box-sizing:border-box;border-radius:3px;width:100%}.account-form .account-note{margin:-4px 0 0;font-size:12px}.account-password{display:flex;position:relative}.account-password input{padding-right:84px}.account-password button{color:#a6d7f1;background:0 0;border:0;width:80px;font:12px sans-serif;position:absolute;top:0;bottom:0;right:0}.account-form-nav{flex-wrap:wrap;justify-content:space-between;gap:8px;display:flex}.account-ack{color:#eadcbb;align-items:center;gap:10px;min-height:44px;margin:16px 0;font-size:14px;display:flex}.account-ack input{accent-color:#81c6ea;flex:0 0 22px;width:22px;height:22px}.account-premium .recovery-code{letter-spacing:.04em;overflow-wrap:anywhere;border:1px solid #bca466;border-radius:3px;margin:24px 0 16px;padding:18px 8px;font-size:clamp(14px,2.3vw,19px);box-shadow:inset 0 0 18px #56bfff17}.account-copy-feedback{color:#a4dbb3;min-height:18px;margin-top:6px;font-size:12px;display:block}.account-identity{background:#050f1bd9;border:1px solid #b99a5b55;align-items:center;gap:16px;margin:20px 0;padding:18px;display:flex}.account-identity>span{color:#88d9fb;font-size:32px}.account-identity strong{overflow-wrap:anywhere;font:24px Georgia,serif;display:block}.account-identity small{color:#a2c9de;margin-top:6px;display:block}.account-content .account-error{background:#421c2466;border-left:2px solid #df8977;margin-top:14px;padding:10px;font-size:13px}.cloud-banner button{min-height:44px}@media (orientation:landscape) and (height<=500px){.account-premium.account-dialog{width:min(850px,100vw - 24px);max-height:calc(100dvh - 20px)}.account-premium[open]{grid-template-columns:29% 71%}.account-art{height:calc(100dvh - 24px);min-height:320px;position:sticky;top:0}.account-art h2{font-size:23px}.account-art>div:last-child{bottom:16px;left:16px}.account-content{padding:14px 22px}.account-content h2{margin:8px 0 10px;font-size:23px}.account-entry-actions{gap:8px;margin:12px 0}.account-heading{min-height:44px}.account-premium .recovery-code{margin:12px 0}}@media (width<=550px) and (orientation:portrait){.account-premium[open]{grid-template-columns:1fr}.account-art{display:none}.account-content{padding:20px}}@media (prefers-reduced-motion:no-preference){.account-premium[open]{animation:.18s ease-out account-arrival}@keyframes account-arrival{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}}.account-premium.account-dialog[open]{overflow:hidden}.account-premium .account-content{box-sizing:border-box;overscroll-behavior:contain;max-height:calc(100dvh - 32px);overflow-y:auto}.account-premium.account-dialog .account-primary{background:linear-gradient(#22516c,#102438);border-color:#b89a57}.account-premium.account-dialog .account-secondary{background:linear-gradient(#1b2837,#0b1421);border-color:#9d804a99}.account-premium.account-dialog .account-link,.account-premium.account-dialog .account-password button{background:0 0;border:0}@media (orientation:landscape) and (height<=500px){.account-premium .account-content{max-height:calc(100dvh - 20px)}}.account-premium .account-heading{z-index:2;background:#0c1622;position:sticky;top:0}.account-premium .account-content{scroll-padding:54px 0 14px}@media (orientation:landscape) and (height<=500px){.account-premium .account-art{min-height:0}}@media (height<=260px){.account-premium .account-art>div:last-child{display:none}}.account-bootstrap{box-sizing:border-box;color:#eadcbb;text-align:center;background:linear-gradient(#040c15dd,#040c15f2),url(/art/checkpoint05/environments/sanctuary.webp) 50%/cover;place-items:center;min-height:100dvh;padding:24px;display:grid}.account-bootstrap>div{background:#0b1626c9;border:1px solid #ad8b4f66;padding:28px;box-shadow:inset 0 0 0 4px #02091155}.account-bootstrap h1{font:28px Georgia,serif}.account-bootstrap p{color:#a6c7dd}.account-loading-rune{color:#8fdbff;margin:20px;font-size:48px;display:block}@media (orientation:landscape) and (height<=500px){.account-bootstrap>div{padding:16px}.account-loading-rune{margin:6px}}.onboarding-dialog{border-radius:10px;width:min(760px,100vw - 32px);max-height:calc(100dvh - 24px);padding:18px 20px;overflow-y:auto}.onboarding-dialog[open]{display:block}.onboarding-dialog h2{color:#f4e7c6;margin:2px 0 6px;font:600 22px/1.2 Georgia,serif}.onboarding-dialog p{color:#b9ab8b;margin:0 0 10px;font-size:13px;line-height:1.4}.onboarding-dialog button{align-self:auto}.onb-eyebrow{letter-spacing:.12em;text-transform:uppercase;color:#d8b56a;font-size:11px}.onb-cards{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px;margin:10px 0 14px;display:grid}.onb-card{text-align:left;color:inherit;background:#142030d9;border:1px solid #a9946273;border-radius:8px;grid-template-columns:64px 1fr;align-items:start;gap:10px;padding:10px;display:grid}button.onb-card{cursor:pointer}button.onb-card:hover,button.onb-card:focus-visible{border-color:#d8b56a}.onb-card.is-selected{border-color:#8fd28a;box-shadow:0 0 0 2px #8fd28a59}.onb-portrait{object-fit:cover;object-position:top;border-radius:6px;width:64px;height:64px}.onb-card-text{flex-direction:column;gap:3px;min-width:0;display:flex}.onb-name{color:#fff3d0;font:600 17px/1.1 Georgia,serif}.onb-role{color:#d8b56a;font-size:11px}.onb-tagline{color:#b9ab8b;font-size:12px}.onb-identity,.ch-identity{flex-wrap:wrap;gap:4px;margin:2px 0;display:flex}.onb-identity em,.ch-identity em{color:#eadcbb;background:#7fb8ff24;border:1px solid #7fb8ff59;border-radius:999px;padding:1px 7px;font-size:11px;font-style:normal}.onb-confirm{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;margin:8px 0 10px;display:grid}.onb-deck h3{color:#f4e7c6;margin:0 0 6px;font-size:13px}.onb-deck ul{grid-template-columns:1fr 1fr;gap:2px 10px;margin:0;padding:0;font-size:12px;list-style:none;display:grid}.onb-note{font-size:12px}.ch-requirement{color:#f4e7c6;background:#3a16168c;border:1px solid #e46a5f73;border-radius:6px;margin:6px 0 0;padding:6px 10px;font-size:13px}.ch-badge.is-unlocked{color:#cfe4ff}.guest-gate-benefits{color:#eadcbb;margin:4px 0 14px;padding-left:18px;font-size:13px;line-height:1.5}.account-notice{cursor:default}@media (height<=430px){.onboarding-dialog{padding:12px 14px}.onboarding-dialog h2{font-size:18px}.onb-cards{gap:6px;margin:6px 0 8px}.onb-card{grid-template-columns:48px 1fr;gap:8px;padding:7px}.onb-portrait{width:48px;height:48px}.onb-tagline{display:none}}@media (width<=760px){.onb-confirm{grid-template-columns:1fr}}.onb-signin{margin-right:auto}.guest-gate[open]{max-height:calc(100dvh - 24px);display:block;overflow-y:auto}.guest-gate .guest-gate-benefits{flex-shrink:0;min-height:auto;overflow:visible}@media (height<=430px){.guest-gate{padding:12px 16px}.guest-gate h2{margin-bottom:4px;font-size:18px}.guest-gate p{margin-bottom:6px}.guest-gate .guest-gate-benefits{margin:2px 0 8px;font-size:12px;line-height:1.35}.guest-gate .account-entry-actions{gap:6px}.guest-gate .account-entry-actions button{min-height:36px;padding-block:6px}}.onboarding-dialog{background:radial-gradient(at 50% 0,#243b55 0%,#101a29 48%,#080e17 100%);border:1px solid #bd9953;width:min(1040px,100vw - 32px);padding:28px;box-shadow:inset 0 0 0 5px #0b1422,inset 0 0 0 6px #bd995333,0 24px 90px #000b}.onboarding-dialog::backdrop{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#020812da}.onboarding-dialog h2{font-size:clamp(24px,3vw,38px)}.onboarding-dialog>p{max-width:740px}.onb-cards{gap:18px;padding:8px 4px}.onb-card{isolation:isolate;background:linear-gradient(145deg,#20364b,#0a1421);border-color:#af945e88;border-radius:4px;flex-direction:column;gap:0;min-width:0;padding:0;transition:transform .22s,border-color .22s,box-shadow .22s;display:flex;position:relative;overflow:hidden;box-shadow:inset 0 0 0 3px #0004,0 10px 22px #0007}.onb-portrait{object-fit:contain;object-position:center;background:radial-gradient(#54749a44,#0000 70%);border-radius:0;width:100%;height:240px}.onb-card-text{box-sizing:border-box;background:linear-gradient(#0c1722dd,#0a111d);gap:6px;width:100%;padding:15px}.onb-name{font-size:25px}.onb-role{font-size:13px}.onb-tagline{line-height:1.4;display:block}.onb-card.is-selected{border-color:#bceeff;transform:translateY(-4px);box-shadow:0 0 0 1px #cba653,0 0 26px #58c9ff55,inset 0 0 25px #77bfff22}.onb-card.is-selected:after{content:"";pointer-events:none;border:2px solid #8cdcff66;animation:2.8s ease-in-out infinite onb-aura;position:absolute;inset:0}.onb-selected{color:#bcefff;letter-spacing:.09em;text-transform:uppercase;font-size:11px}.onb-card:focus-visible,.onboarding-dialog button:focus-visible{outline-offset:3px;outline:3px solid #b6e8ff}.onboarding-dialog button{min-height:44px}.onb-confirm .onb-card{max-width:360px}.onb-deck{background:#050c1680;border:1px solid #ac905544;border-radius:4px;padding:16px}.onb-deck li{color:#cad9e8;padding-block:3px}.onb-deck b{color:#d7b979}.onb-unlock[open]{animation:.35s ease-out onb-reveal}.onb-unlock .onb-portrait{background:radial-gradient(#d4ae5544,#0000 68%)}.onb-preserved{background:#173d3344;border:1px solid #8bbfb055;padding:10px 12px;color:#d7f3df!important}.guest-gate{background:radial-gradient(at top,#253b50,#0b1420 70%);border-color:#bc9957}.guest-gate-benefits li{margin-block:6px}@keyframes onb-aura{50%{opacity:.4}}@keyframes onb-reveal{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@media (height<=500px) and (width>=600px){.onboarding-dialog{padding:16px}.onboarding-dialog h2{font-size:24px}.onb-cards{scroll-snap-type:x mandatory;gap:12px;padding:6px 4px 12px;display:flex;overflow-x:auto}.onb-cards .onb-card{scroll-snap-align:center;flex-direction:row;flex:0 0 min(460px,82vw);align-items:center;min-height:175px}.onb-portrait{flex-shrink:0;width:38%;height:175px}.onb-card-text{padding:12px}.onb-name{font-size:22px}.onb-tagline{display:block}.onb-confirm{grid-template-columns:1fr 1fr}.onb-confirm .onb-card{flex-direction:row}.onb-confirm .onb-portrait{height:170px}}@media (width<=599px){.onboarding-dialog{padding:18px}.onb-portrait{height:190px}}@media (prefers-reduced-motion:reduce){.onb-card,.onb-unlock[open]{transition:none;animation:none}.onb-card.is-selected:after{animation:none}}
