:root{--tile: min(9vmin, 64px);--gap: 2px;--bg0: #0b1408;--bg1: #16240f;--panel: rgba(24, 38, 17, .92);--panel-edge: #3c512c;--moss: #2f4621;--moss-alt: #36501f;--bark: #5a4630;--bark-edge: #6f593c;--gold: #e8c878;--gold-2: #f5e3b0;--teal: #3fd6c2;--teal-dim: #2a8f84;--danger: #e25844;--danger-2: #ff7a5c;--amber: #f0a830;--violet: #b08cff;--green: #7ed47e;--mana: #7fc8ff;--ink: #e9e4d6;--ink-dim: #b3ac95;--font-display: "Grenze Gotisch", serif;--font-ui: "Oswald", sans-serif;--font-flavor: "Special Elite", monospace}*{box-sizing:border-box}html,body{margin:0;padding:0}body{min-height:100vh;min-height:100dvh;background:radial-gradient(120vmax 80vmax at 50% -20%,rgba(63,214,194,.06),transparent 55%),radial-gradient(90vmax 70vmax at 80% 110%,rgba(232,200,120,.05),transparent 60%),linear-gradient(180deg,var(--bg1),var(--bg0) 70%);color:var(--ink);font-family:var(--font-ui);overflow-x:hidden;-webkit-tap-highlight-color:transparent;user-select:none}.hidden{display:none!important}#vignette{position:fixed;inset:0;pointer-events:none;z-index:1;background:linear-gradient(112deg,transparent 18%,rgba(245,227,176,.045) 24%,transparent 31%,transparent 55%,rgba(245,227,176,.035) 62%,transparent 70%),radial-gradient(140% 110% at 50% 45%,transparent 58%,rgba(4,8,3,.5) 100%)}#hud{position:relative;z-index:2;min-height:100dvh;display:grid;grid-template-columns:auto minmax(250px,310px);grid-template-areas:"board panel" "abil  end" "hint  hint";justify-content:center;align-content:center;align-items:start;gap:14px;padding:calc(10px + env(safe-area-inset-top)) calc(12px + env(safe-area-inset-right)) calc(12px + env(safe-area-inset-bottom)) calc(12px + env(safe-area-inset-left))}#hud.busy #board-wrap,#hud.busy #abilities,#hud.busy #hero-panel{pointer-events:none}#hud.busy #abilities .ability{filter:saturate(.8) brightness(.92)}#board-wrap{grid-area:board;position:relative}#hero-panel{grid-area:panel}#abilities{grid-area:abil}#end-turn{grid-area:end}#keys-hint{grid-area:hint}#board{position:relative;display:grid;grid-template-columns:repeat(8,var(--tile));grid-template-rows:repeat(8,var(--tile));gap:var(--gap);padding:8px;background:linear-gradient(160deg,#4d3b27,#3a2c1c);border:2px solid var(--bark-edge);border-radius:12px;box-shadow:0 14px 40px #0000008c,inset 0 0 0 1px #0006}.cell{position:relative;border-radius:4px;background:linear-gradient(160deg,var(--moss),#283c1c);box-shadow:inset 0 0 0 1px #0000002e}.cell.alt{background:linear-gradient(160deg,var(--moss-alt),#2c4220)}.cell.tree{background:linear-gradient(160deg,#233517,#1b2a12);box-shadow:inset 0 0 0 1px #00000059}.pine{position:absolute;inset:0;display:grid;place-items:center;font-size:calc(var(--tile) * .62);line-height:1;transform:rotate(var(--rot, 0deg)) scale(var(--sc, 1));filter:drop-shadow(0 3px 3px rgba(0,0,0,.6)) saturate(1.1);pointer-events:none}.shrub{position:absolute;inset:0;display:grid;place-items:center;font-size:calc(var(--tile) * .5);line-height:1;transform:rotate(var(--rot, 0deg)) scale(var(--sc, 1));filter:drop-shadow(0 2px 2px rgba(0,0,0,.55)) saturate(1.15);pointer-events:none}.shrub:after{content:"🌿";position:absolute;right:6%;bottom:2%;font-size:55%;transform:scaleX(-1) rotate(14deg);opacity:.85}.cell.thicket{background:linear-gradient(160deg,#28411a,#1d3013);box-shadow:inset 0 0 0 1px #0000004d,inset 0 0 8px #0a1806cc}.cell.bramble{background:linear-gradient(160deg,#3a2a14,#2d1c0e);box-shadow:inset 0 0 0 1px #e2584473,inset 0 0 10px #aa281c4d}.cell.bramble .shrub{filter:drop-shadow(0 2px 2px rgba(0,0,0,.55)) sepia(.55) hue-rotate(-48deg) saturate(2.1) brightness(.92)}.cell.bramble:after{content:"";position:absolute;inset:0;border-radius:4px;pointer-events:none;background:linear-gradient(52deg,transparent 44%,rgba(226,88,68,.5) 47%,rgba(226,88,68,.5) 50%,transparent 53%),linear-gradient(-50deg,transparent 46%,rgba(255,122,92,.42) 49%,rgba(255,122,92,.42) 51%,transparent 54%)}.cell.berry{background:linear-gradient(160deg,#2c4720,#223818);box-shadow:inset 0 0 0 1px #8a93ef59}.cell.berry:after{content:"";position:absolute;inset:0;border-radius:4px;pointer-events:none;background:radial-gradient(circle at 28% 30%,#8a93ef 0 7%,transparent 8%),radial-gradient(circle at 68% 24%,#7d86e8 0 6%,transparent 7%),radial-gradient(circle at 40% 72%,#98a0f5 0 6.5%,transparent 7.5%),radial-gradient(circle at 76% 64%,#6f78e0 0 5.5%,transparent 6.5%)}.move-cost{position:absolute;top:2px;right:2px;z-index:3;font-size:11px;font-weight:700;line-height:1.35;padding:0 4px;border-radius:7px;color:var(--amber);background:#080e06d9;border:1px solid rgba(240,168,48,.5);pointer-events:none;white-space:nowrap}.cell.valid{cursor:pointer;background-image:linear-gradient(#3fd6c22e,#3fd6c22e);box-shadow:inset 0 0 0 2px var(--teal),0 0 10px #3fd6c259}.cell.valid:hover{background-image:linear-gradient(#3fd6c24d,#3fd6c24d);box-shadow:inset 0 0 0 2px var(--teal),0 0 16px #3fd6c299}.cell.aoe{animation:aoePulse .7s ease-in-out infinite}.cell.armed{box-shadow:inset 0 0 0 3px var(--gold),0 0 14px #e8c87899}@keyframes aoePulse{0%,to{box-shadow:inset 0 0 0 2px var(--teal),0 0 8px #3fd6c266}50%{box-shadow:inset 0 0 0 3px #8df0e2,0 0 20px #3fd6c2cc}}.entities{position:absolute;inset:0;pointer-events:none;z-index:5}.token{position:absolute;left:0;top:0;display:grid;place-items:center;transition:transform .22s cubic-bezier(.2,.8,.3,1.15);will-change:transform}.token .ring{position:absolute;inset:0;border-radius:50%;border:3px solid var(--ring-c, var(--ink-dim));background:radial-gradient(circle at 35% 30%,#ffffff24,#00000059);box-shadow:0 3px 8px #0000008c,0 0 10px var(--ring-glow, transparent)}.token .glyph{position:relative;font-size:calc(var(--tile) * .42);line-height:1;filter:drop-shadow(0 2px 2px rgba(0,0,0,.6))}.token.hero{z-index:7}.token.hero.spearmaster{--ring-c: var(--gold);--ring-glow: rgba(232, 200, 120, .5)}.token.hero.lightning_mage{--ring-c: var(--teal);--ring-glow: rgba(63, 214, 194, .5)}.token.enemy.boar{--ring-c: #a4543a;--ring-glow: rgba(164, 84, 58, .45)}.token.enemy.goblin{--ring-c: #7da14b;--ring-glow: rgba(125, 161, 75, .4)}.token.enemy.treefolk{--ring-c: #4f8a3d;--ring-glow: rgba(126, 212, 126, .45)}.token.enemy.treefolk .glyph{font-size:calc(var(--tile) * .52)}.token.enemy.witch{--ring-c: #9b6dd6;--ring-glow: rgba(155, 109, 214, .5)}.token.enemy.imp{--ring-c: #c4596f;--ring-glow: rgba(196, 89, 111, .4)}.token.enemy.imp .glyph{font-size:calc(var(--tile) * .3)}.token.enemy .glyph{font-size:calc(var(--tile) * .4)}.token .hpbar{position:absolute;left:6%;right:6%;bottom:-7px;height:4px;border-radius:2px;background:#000000a6;overflow:hidden}.token .hpbar i{display:block;height:100%;background:linear-gradient(90deg,var(--green),#bfe07a);transition:width .25s ease}.token.enemy .hpbar i{background:linear-gradient(90deg,var(--danger),var(--amber))}.token .chip-slot{position:absolute;top:-12px;left:50%;transform:translate(-50%);white-space:nowrap}.mini-chip{font-size:11px;font-weight:600;padding:0 5px;border-radius:8px;background:#080e06d9;border:1px solid rgba(233,228,214,.25)}.mini-chip.block-chip{color:var(--teal);border-color:var(--teal-dim)}.chip-winded{color:var(--ink-dim)}.token.dodge .ring{animation:dodgeRing .85s ease-out}@keyframes dodgeRing{0%{box-shadow:0 0 #3fd6c2e6}to{box-shadow:0 0 0 26px #3fd6c200}}#overlays{position:absolute;inset:0;pointer-events:none;z-index:2}.ov{position:absolute;border-radius:4px}.ov-line{background:#e246326b;box-shadow:inset 0 0 0 2px #ff6e54e6,0 0 12px #e2463280;animation:lockPulse .9s ease-in-out infinite}@keyframes lockPulse{0%,to{background-color:#e2463257}50%{background-color:#ff5a408c}}.ov-arrow{width:var(--sz, 24px);height:var(--sz, 24px);background:var(--danger-2);clip-path:polygon(0% 12%,100% 50%,0% 88%,22% 50%);filter:drop-shadow(0 0 6px rgba(255,110,84,.9));animation:lockPulse .9s ease-in-out infinite;border-radius:0}.ov-swoop{background:#b08cff52;box-shadow:inset 0 0 0 2px #b08cffcc;animation:lockPulse .9s ease-in-out infinite}.ov-swoop-arrow.ov-arrow{background:var(--violet)}.ov-beam{height:3px;border-radius:2px;transform-origin:0 50%;background:linear-gradient(90deg,#ff6e5414,#ff6e54cc);box-shadow:0 0 8px #e246328c;animation:beamPulse .9s ease-in-out infinite}.ov-beam.swoop{background:linear-gradient(90deg,#b08cff14,#b08cffcc);box-shadow:0 0 8px #b08cff80}@keyframes beamPulse{0%,to{opacity:.55}50%{opacity:1}}.ov-strike{background:radial-gradient(circle,#f0a8306b,#f0a8301a);box-shadow:inset 0 0 0 1px #f0a8308c;animation:strikePulse 1.4s ease-in-out infinite}@keyframes strikePulse{0%,to{opacity:.75}50%{opacity:1}}.ov-threat{height:3px;border-radius:2px;transform-origin:0 50%;background:linear-gradient(90deg,#f0a8300d,#f0a830d9)}.ov-threat:after{content:"";position:absolute;right:-1px;top:50%;width:7px;height:7px;border-top:3px solid var(--amber);border-right:3px solid var(--amber);transform:translateY(-50%) rotate(45deg)}.ov-move{box-shadow:inset 0 0 0 2px #e9e4d629;background:#e9e4d60d}.ov.trail{background:linear-gradient(120deg,#ff7a5c00,#ff8c5ab3,#78462866);box-shadow:0 0 14px #e25844b3;opacity:0;animation:trailA .55s ease-out forwards}@keyframes trailA{0%{opacity:0;transform:scale(.7)}25%{opacity:1;transform:scale(1.06)}to{opacity:0;transform:scale(1)}}#legend{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:8px;font-size:12px;color:var(--ink-dim);letter-spacing:.03em}#legend .lg{display:inline-flex;align-items:center;gap:5px}#legend .lg i{width:11px;height:11px;border-radius:3px;display:inline-block}#legend .lg-line i{background:#e24632d9;box-shadow:0 0 6px #e2463299}#legend .lg-line{color:var(--danger-2);font-weight:600}#legend .lg-strike i{background:#f0a830cc}#legend .lg-valid i{background:#3fd6c2cc}#legend .lg-thicket i{background:#2f5520;box-shadow:inset 0 0 0 1px #7ed47e80}.panel{background:var(--panel);border:1px solid var(--panel-edge);border-radius:12px;padding:14px;box-shadow:0 10px 30px #00000073;display:flex;flex-direction:column;gap:10px}.stat-label{font-size:12px;font-weight:700;letter-spacing:.12em;color:var(--ink-dim);min-width:64px}.hp-row,.time-row,.mana-row,.exert-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.hp-row .stat-label{font-family:var(--font-display);font-size:18px;letter-spacing:.04em;color:var(--gold-2);min-width:0;flex-basis:100%}.bar{position:relative;flex:1;height:18px;min-width:110px;border-radius:9px;background:#0000008c;overflow:hidden;box-shadow:inset 0 1px 3px #0009}.bar i{position:absolute;inset:0 auto 0 0;display:block;border-radius:9px;transition:width .3s ease}.bar.hp i{background:linear-gradient(90deg,#d8554a,#e88a4a)}.bar b{position:absolute;inset:0;display:grid;place-items:center;font-size:12px;font-weight:700;text-shadow:0 1px 2px #000}.block-badge{font-weight:700;font-size:13px;color:var(--ink-dim);padding:2px 8px;border-radius:9px;background:#0006;border:1px solid transparent}.block-badge.on{color:var(--teal);border-color:var(--teal-dim);box-shadow:0 0 8px #3fd6c24d}.silver-badge{font-weight:700;font-size:13px;color:var(--gold);padding:2px 8px;border-radius:9px;background:#0006;border:1px solid rgba(232,200,120,.4);white-space:nowrap}.gear-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.gear-chips{display:inline-flex;gap:6px;flex-wrap:wrap;flex:1}.trinket-chip{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:600;padding:3px 9px;border-radius:9px;color:var(--gold-2);background:#00000073;border:1px solid rgba(232,200,120,.35);cursor:help}.trinket-chip i{font-style:normal}.pips{display:inline-flex;gap:5px;flex-wrap:wrap}.pip{width:20px;height:20px;border-radius:50%;background:#243419;box-shadow:inset 0 1px 3px #000000b3,inset 0 0 0 1px #0006}.pip.on{background:radial-gradient(circle at 35% 30%,#ffe9b0,var(--amber));box-shadow:0 0 9px #f0a830bf,inset 0 0 0 1px #78460080}.pip{position:relative}.pip.on:before,.pip.on:after{content:"";position:absolute;left:50%;top:50%;width:2px;border-radius:1px;background:#6b4308;transform-origin:50% 100%;pointer-events:none}.pip.on:before{height:7px;transform:translate(-50%,-100%) rotate(0)}.pip.on:after{height:5px;transform:translate(-50%,-100%) rotate(120deg)}.time-num,.mana-num{font-size:15px;color:var(--ink-dim)}.crystals{display:inline-flex;gap:4px}.crystal{font-size:18px;color:#2b3f4a;text-shadow:none;transition:color .2s}.crystal.on{color:var(--mana);text-shadow:0 0 8px rgba(127,200,255,.8)}.exert-track{display:inline-flex;gap:2px;flex:1;justify-content:space-between}.notch{display:inline-flex;flex-direction:column;align-items:center;gap:3px;min-width:36px}.notch i{width:13px;height:13px;border-radius:50%;background:#2c3d20;box-shadow:inset 0 1px 2px #0009}.notch label{font-size:9px;letter-spacing:.04em;color:var(--ink-dim)}.notch.lit i{background:radial-gradient(circle at 35% 30%,#ead9ff,var(--violet));box-shadow:0 0 8px #b08cffcc}.notch.lit label{color:var(--violet);font-weight:700}.notch.spent i{background:#17200f;box-shadow:inset 0 1px 3px #000c}.notch.spent label{opacity:.45;text-decoration:line-through}.class-exert{display:flex;align-items:center;justify-content:center;gap:8px;min-height:44px;font-family:var(--font-ui);font-weight:700;font-size:14px;letter-spacing:.1em;color:#f0e8ff;background:linear-gradient(180deg,#3d2c5e,#2a1e44);border:1px solid var(--violet);border-radius:10px;cursor:pointer;transition:box-shadow .15s,transform .1s}.class-exert:hover:not(:disabled){box-shadow:0 0 14px #b08cff80;transform:translateY(-1px)}.class-exert.selected{box-shadow:0 0 0 2px var(--violet),0 0 18px #b08cff99}.class-exert:disabled{opacity:.4;cursor:default}.class-exert .ce-bolt{font-size:17px}.class-exert .ce-cost{font-size:11px;color:var(--violet);font-weight:600}.ce-text{font-family:var(--font-flavor);font-size:11px;color:var(--ink-dim);line-height:1.4}#abilities{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;align-items:stretch;max-width:calc(var(--tile) * 8 + 32px)}.ability{position:relative;display:flex;align-items:center;gap:8px;min-height:48px;min-width:44px;padding:6px 12px;font-family:var(--font-ui);color:var(--ink);background:linear-gradient(180deg,#263a18,#1a2a12);border:1px solid #486232;border-radius:10px;cursor:pointer;transition:transform .1s,box-shadow .15s,opacity .15s}.ability:hover{transform:translateY(-1px);box-shadow:0 4px 12px #0006,0 0 8px #3fd6c22e}.ability.selected{border-color:var(--teal);box-shadow:0 0 0 2px var(--teal),0 0 18px #3fd6c28c;background:linear-gradient(180deg,#2c4a26,#1d3318)}.ability.unaffordable{opacity:.45;filter:saturate(.55)}.ab-icon{font-size:22px;filter:drop-shadow(0 2px 2px rgba(0,0,0,.5))}.ab-main{display:flex;flex-direction:column;align-items:flex-start;gap:2px}.ab-name{font-weight:600;font-size:14px;letter-spacing:.04em;line-height:1}.ab-chips{display:inline-flex;gap:4px}.ab-tier{font-style:normal;margin-left:5px;font-size:11px;letter-spacing:.14em;color:var(--gold);text-shadow:0 0 6px rgba(232,200,120,.6)}.chip{font-size:11px;font-weight:700;padding:1px 6px;border-radius:8px;background:#0000008c;line-height:1.5}.chip-time{color:var(--amber)}.chip-mana{color:var(--mana)}.chip-dmg{color:var(--danger-2)}.chip-block{color:var(--teal)}.exert-toggle{display:grid;place-items:center;width:28px;height:28px;margin-left:2px;font-size:14px;border-radius:50%;background:#241a3a;border:1px solid #4c3a78;cursor:pointer;transition:box-shadow .15s,background .15s}.exert-toggle:hover{box-shadow:0 0 8px #b08cff80}.exert-toggle.armed{background:linear-gradient(180deg,#5b3fa0,#3d2c5e);border-color:var(--violet);box-shadow:0 0 10px #b08cffcc}.exert-toggle.disabled{opacity:.35;cursor:default;box-shadow:none}.items-group{display:inline-flex;gap:6px;align-items:center;padding:2px 2px 2px 10px;margin-left:4px;border-left:1px dashed rgba(232,200,120,.35)}.item-btn{display:grid;place-items:center;width:48px;height:48px;min-width:44px;min-height:44px;font-size:21px;background:linear-gradient(180deg,#2e4054e6,#182432f2);border:1px solid #4e7e9c;border-radius:12px 12px 10px 10px;cursor:pointer;box-shadow:inset 0 1px #ffffff2e,0 3px 8px #0006;transition:transform .1s,box-shadow .15s,opacity .15s}.item-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 0 12px #7fc8ff66}.item-btn:disabled{opacity:.45;cursor:default}.item-btn .it-icon{filter:drop-shadow(0 2px 2px rgba(0,0,0,.5))}#end-turn{align-self:center;justify-self:stretch;min-height:52px;min-width:130px;padding:8px 18px;font-family:var(--font-display);font-size:21px;letter-spacing:.08em;color:#2b1f0c;background:linear-gradient(180deg,var(--gold-2),var(--gold) 60%,#c9a35a);border:1px solid #8a6f3c;border-radius:12px;cursor:pointer;box-shadow:0 5px 16px #00000073,inset 0 1px #ffffff80;transition:transform .1s,filter .15s}#end-turn:hover:not(:disabled){transform:translateY(-1px);filter:brightness(1.06)}#end-turn:disabled{opacity:.45;cursor:default}#keys-hint{text-align:center;font-size:12px;letter-spacing:.05em;color:var(--ink-dim)}#forecast{position:fixed;right:calc(16px + env(safe-area-inset-right));bottom:calc(16px + env(safe-area-inset-bottom));z-index:40;min-width:210px;max-width:300px;padding:10px 12px;background:#0e160af5;border:1px solid var(--teal-dim);border-radius:10px;box-shadow:0 10px 28px #0009,0 0 14px #3fd6c233;font-size:13px;pointer-events:none;animation:fcIn .12s ease-out}@keyframes fcIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.fc-head{font-family:var(--font-display);font-size:17px;color:var(--gold-2);display:flex;align-items:center;gap:8px;margin-bottom:6px}.fc-exerted{font-family:var(--font-ui);font-size:11px;font-weight:700;color:var(--violet);border:1px solid var(--violet);border-radius:8px;padding:0 6px}.fc-row{display:flex;align-items:baseline;gap:8px;padding:2px 0;border-top:1px solid rgba(233,228,214,.08)}.fc-name{flex:1;font-weight:600}.fc-dmg{color:var(--danger-2);font-weight:700}.fc-crit{color:var(--gold);font-size:11px}.fc-kill{color:var(--gold-2);font-size:15px;text-shadow:0 0 8px rgba(245,227,176,.8)}.fc-note{color:var(--teal);padding-top:3px}.fc-hint{margin-top:6px;font-size:10px;color:var(--ink-dim);letter-spacing:.06em}#turn-banner{position:fixed;top:16%;left:50%;transform:translate(-50%);z-index:55;padding:8px 26px;font-family:var(--font-display);font-size:clamp(22px,4.5vmin,34px);letter-spacing:.06em;color:var(--gold-2);background:#0a1007e0;border:1px solid var(--gold);border-radius:12px;text-shadow:0 2px 4px #000;pointer-events:none;white-space:nowrap}#turn-banner.show{animation:bannerIn 1.5s ease forwards}#turn-banner.warn{color:var(--danger-2);border-color:var(--danger)}#turn-banner.good{color:var(--teal);border-color:var(--teal-dim)}#turn-banner.gold{color:var(--gold-2);border-color:var(--gold)}#turn-banner.enemy{color:var(--danger-2);border-color:var(--danger);background:#1a0a07e6}#turn-banner.wane{color:var(--green);border-color:var(--green);background:#081206eb;text-shadow:0 0 16px rgba(126,212,126,.5),0 2px 4px #000}@keyframes bannerIn{0%{opacity:0;transform:translate(-50%) translateY(-12px) scale(.92)}12%,78%{opacity:1;transform:translate(-50%) translateY(0) scale(1)}to{opacity:0;transform:translate(-50%) translateY(8px) scale(.98)}}#floaters{position:fixed;inset:0;pointer-events:none;z-index:70}.floater{position:absolute;font-family:var(--font-ui);font-weight:700;font-size:20px;text-shadow:0 2px 3px rgba(0,0,0,.9),0 0 8px rgba(0,0,0,.6);animation:floatUp 1.35s ease-out forwards;white-space:nowrap}@keyframes floatUp{0%{opacity:0;transform:translate(-50%,8px)}12%{opacity:1}75%{opacity:1}to{opacity:0;transform:translate(-50%,-48px)}}.floater.dmg{color:var(--danger-2)}.floater.crit{color:var(--gold-2);font-size:31px;font-family:var(--font-display);text-shadow:0 0 14px rgba(245,227,176,.9),0 2px 3px #000;animation:critUp 1.35s ease-out forwards}@keyframes critUp{0%{opacity:0;transform:translate(-50%,8px) scale(.6)}14%{opacity:1;transform:translate(-50%,-4px) scale(1.25)}30%{transform:translate(-50%,-10px) scale(1)}75%{opacity:1}to{opacity:0;transform:translate(-50%,-54px) scale(1)}}.floater.block{color:var(--teal)}.floater.heal{color:var(--green)}.floater.time{color:var(--amber)}.floater.exert{color:var(--violet)}.floater.mana{color:var(--mana)}.floater.info{color:var(--ink)}#flash{position:fixed;inset:0;pointer-events:none;z-index:65;opacity:0;background:#f5e3b000}#flash.on{animation:flashA .4s ease-out}#flash.on.gold{background:#f5e3b047}#flash.on.teal{background:#3fd6c242}#flash.on.green{background:#7ed47e38}@keyframes flashA{0%{opacity:1}to{opacity:0}}#redpulse{position:fixed;inset:0;pointer-events:none;z-index:64;opacity:0;box-shadow:inset 0 0 18vmin #c8281ebf}#redpulse.on{animation:redA .5s ease-out}@keyframes redA{0%{opacity:1}to{opacity:0}}#board-wrap.shake{animation:shakeA .42s ease}@keyframes shakeA{0%,to{transform:translate(0)}20%{transform:translate(-6px,2px)}40%{transform:translate(5px,-3px)}60%{transform:translate(-4px,-2px)}80%{transform:translate(3px,2px)}}.burst{position:absolute;width:0;height:0}.burst .bring{position:absolute;left:0;top:0;width:10px;height:10px;margin:-5px 0 0 -5px;border-radius:50%;border:3px solid var(--gold);animation:bringA .6s ease-out forwards}@keyframes bringA{0%{transform:scale(.4);opacity:1}to{transform:scale(6);opacity:0}}.burst .spark{position:absolute;left:-3px;top:-3px;width:7px;height:7px;border-radius:50%;background:radial-gradient(circle,#fff3cf,var(--amber));transform:rotate(var(--a)) translate(4px);animation:sparkA .7s ease-out forwards}@keyframes sparkA{0%{transform:rotate(var(--a)) translate(4px);opacity:1}to{transform:rotate(var(--a)) translate(46px);opacity:0}}.dodge-pop{position:absolute;transform:translate(-50%,-100%);font-family:var(--font-display);font-size:clamp(30px,6vmin,46px);color:var(--teal);letter-spacing:.08em;text-shadow:0 0 18px rgba(63,214,194,.9),0 3px 4px #000;animation:dodgeA .95s cubic-bezier(.2,.9,.3,1.2) forwards}@keyframes dodgeA{0%{opacity:0;transform:translate(-50%,-80%) scale(.5) rotate(-6deg)}20%{opacity:1;transform:translate(-50%,-110%) scale(1.18) rotate(2deg)}40%{transform:translate(-50%,-115%) scale(1) rotate(0)}80%{opacity:1}to{opacity:0;transform:translate(-50%,-150%) scale(1)}}.ping{position:absolute;width:var(--psz, 56px);height:var(--psz, 56px);transform:translate(-50%,-50%);pointer-events:none}.ping-bramble:before{content:"";position:absolute;inset:8%;border-radius:6px;box-shadow:inset 0 0 0 2px #e25844b3,inset 0 0 12px #e2584466;animation:pingFade .55s ease-out forwards}.ping-bramble .slash{--ra: 40deg;position:absolute;left:50%;top:50%;width:72%;height:3px;border-radius:2px;background:linear-gradient(90deg,transparent,var(--danger-2),transparent);box-shadow:0 0 8px #e25844cc;transform:translate(-50%,-50%) rotate(var(--ra)) scaleX(0);animation:slashA .45s ease-out forwards}.ping-bramble .slash.s2{--ra: -48deg;animation-delay:.1s}@keyframes slashA{0%{transform:translate(-50%,-50%) rotate(var(--ra)) scaleX(0);opacity:0}30%{opacity:1}60%{transform:translate(-50%,-50%) rotate(var(--ra)) scaleX(1.05);opacity:1}to{transform:translate(-50%,-50%) rotate(var(--ra)) scaleX(1);opacity:0}}@keyframes pingFade{0%{opacity:1}to{opacity:0}}.ping .ping-glyph{position:absolute;left:50%;top:50%;font-size:calc(var(--psz, 56px) * .38);transform:translate(-50%,-50%);animation:pingGlyph .8s ease-out forwards}@keyframes pingGlyph{0%{opacity:0;transform:translate(-50%,-50%) scale(.5)}25%{opacity:1;transform:translate(-50%,-50%) scale(1.2)}to{opacity:0;transform:translate(-50%,-85%) scale(1)}}.ping-berry .pp{position:absolute;left:50%;top:50%;width:9px;height:9px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#c9cfff,#6f78e0);box-shadow:0 0 8px #8a93efcc;animation:berryPop .7s ease-out forwards}.ping-berry .pp:nth-child(1){--dx: -16px;--dy: -20px}.ping-berry .pp:nth-child(2){--dx: 16px;--dy: -14px;animation-delay:.06s}.ping-berry .pp:nth-child(3){--dx: 0px;--dy: -26px;animation-delay:.12s}@keyframes berryPop{0%{transform:translate(-50%,-50%);opacity:0}20%{opacity:1}to{transform:translate(calc(-50% + var(--dx, 0px)),calc(-50% + var(--dy, -20px))) scale(.6);opacity:0}}#tooltip{position:fixed;z-index:95;max-width:250px;padding:9px 11px;display:flex;flex-direction:column;gap:4px;background:#0c1309f7;border:1px solid var(--panel-edge);border-radius:9px;box-shadow:0 8px 24px #0009;font-size:12px;line-height:1.45;pointer-events:none}.tt-name{font-family:var(--font-display);font-size:16px;color:var(--gold-2)}.tt-cost{color:var(--amber);font-weight:600}.tt-text{color:var(--ink)}.tt-intent{color:var(--danger-2)}.tt-exert{color:var(--violet)}.tt-warn{color:var(--danger-2);font-weight:700;letter-spacing:.04em}.tt-heal{color:var(--green)}.tt-tier{font-style:normal;color:var(--gold);font-size:12px;letter-spacing:.1em}#mute-btn{position:fixed;top:calc(10px + env(safe-area-inset-top));right:calc(10px + env(safe-area-inset-right));z-index:85;width:44px;height:44px;display:grid;place-items:center;font-size:19px;background:#14200de6;border:1px solid var(--panel-edge);border-radius:50%;cursor:pointer;transition:box-shadow .15s}#mute-btn:hover{box-shadow:0 0 10px #3fd6c266}#screens{position:fixed;inset:0;z-index:80;pointer-events:none}.screen{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:calc(20px + env(safe-area-inset-top)) 20px calc(24px + env(safe-area-inset-bottom));overflow-y:auto;pointer-events:auto;background:radial-gradient(100vmax 70vmax at 50% 115%,rgba(232,160,60,.07),transparent 55%),radial-gradient(120% 100% at 50% 40%,#0a1107f0,#050904fb)}.game-title{margin:0;font-family:var(--font-display);font-weight:700;font-size:clamp(42px,9vw,88px);line-height:.95;text-align:center;letter-spacing:.04em;color:var(--gold-2);text-shadow:0 0 34px rgba(232,200,120,.35),0 0 80px rgba(63,214,194,.18),0 4px 0 rgba(0,0,0,.55)}.title-sub{margin:0;font-family:var(--font-flavor);font-size:14px;color:var(--ink-dim)}.title-hint{margin:0;font-size:13px;letter-spacing:.18em;color:var(--teal);animation:hintPulse 2s ease-in-out infinite}@keyframes hintPulse{0%,to{opacity:.6}50%{opacity:1}}.screen-head{margin:0;font-family:var(--font-display);font-size:clamp(34px,7vw,62px);letter-spacing:.05em;text-align:center;color:var(--ink);text-shadow:0 4px 0 rgba(0,0,0,.5)}.screen-head.gold{color:var(--gold-2);text-shadow:0 0 30px rgba(232,200,120,.4),0 4px 0 rgba(0,0,0,.5)}.screen-head.red{color:var(--danger-2);text-shadow:0 0 30px rgba(226,88,68,.4),0 4px 0 rgba(0,0,0,.5)}.flavor{margin:0;max-width:460px;text-align:center;font-family:var(--font-flavor);font-size:14px;color:var(--ink-dim);line-height:1.6}.btn{min-height:50px;padding:10px 34px;font-family:var(--font-display);font-size:22px;letter-spacing:.08em;color:#2b1f0c;background:linear-gradient(180deg,var(--gold-2),var(--gold) 60%,#c9a35a);border:1px solid #8a6f3c;border-radius:12px;cursor:pointer;box-shadow:0 6px 18px #00000080,inset 0 1px #ffffff80;transition:transform .1s,filter .15s}.btn:hover{transform:translateY(-2px);filter:brightness(1.07)}.hero-cards{display:flex;flex-wrap:wrap;gap:20px;justify-content:center}.hero-card{width:min(330px,92vw);display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:18px;text-align:left;font-family:var(--font-ui);color:var(--ink);background:linear-gradient(170deg,#223417f2,#14200df2);border:1px solid var(--panel-edge);border-radius:14px;cursor:pointer;transition:transform .15s,box-shadow .2s,border-color .2s}.hero-card:hover{transform:translateY(-4px);border-color:var(--accent, var(--gold));box-shadow:0 14px 34px #0000008c,0 0 22px var(--accent-glow, rgba(232, 200, 120, .3))}.hero-card.spearmaster{--accent: var(--gold);--accent-glow: rgba(232, 200, 120, .35)}.hero-card.lightning_mage{--accent: var(--teal);--accent-glow: rgba(63, 214, 194, .35)}.hc-icon{font-size:38px;filter:drop-shadow(0 3px 3px rgba(0,0,0,.6))}.hc-name{font-family:var(--font-display);font-size:27px;color:var(--accent, var(--gold));line-height:1}.hc-tag{font-family:var(--font-flavor);font-size:12px;color:var(--ink-dim)}.hc-stats{display:flex;gap:7px;flex-wrap:wrap}.hc-stat{font-size:13px;font-weight:700;padding:2px 9px;border-radius:9px;background:#00000073;border:1px solid rgba(233,228,214,.14)}.hc-loadout{display:flex;flex-direction:column;gap:3px;width:100%;padding-top:4px;border-top:1px solid rgba(233,228,214,.1)}.hc-ab{font-size:13px;display:flex;justify-content:space-between;gap:8px}.hc-ab i{font-style:normal;color:var(--amber);font-size:11px}.hc-exert{font-size:12px;color:var(--violet);line-height:1.45;padding-top:4px;border-top:1px solid rgba(176,140,255,.2)}.campfire{font-size:44px;animation:fireFlick 1.6s ease-in-out infinite;filter:drop-shadow(0 0 22px rgba(240,140,40,.65))}@keyframes fireFlick{0%,to{transform:scale(1) rotate(-1.5deg)}30%{transform:scale(1.07) rotate(1deg)}60%{transform:scale(.97) rotate(-.5deg)}}.respite-status{margin:0;font-size:14px;color:var(--ink-dim)}.respite-label{margin:0;font-size:12px;letter-spacing:.16em;color:var(--ink-dim);text-transform:uppercase}.draft-cards{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;max-width:900px}.draft-card{width:min(200px,44vw);display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:13px;text-align:left;font-family:var(--font-ui);color:var(--ink);background:linear-gradient(170deg,#223417f2,#14200df2);border:1px solid var(--panel-edge);border-radius:12px;cursor:pointer;transition:transform .12s,box-shadow .18s,border-color .18s}.draft-card:hover{transform:translateY(-3px);border-color:var(--gold)}.draft-card.picked{border-color:var(--teal);box-shadow:0 0 0 2px var(--teal),0 0 20px #3fd6c266;transform:translateY(-3px)}.draft-card.skip{opacity:.85}.dc-icon{font-size:26px}.dc-name{font-family:var(--font-display);font-size:19px;color:var(--gold-2);line-height:1}.dc-chips{display:flex;gap:4px}.dc-text{font-size:12px;line-height:1.45;color:var(--ink)}.dc-exert{font-size:11px;line-height:1.4;color:var(--violet)}.recover-row{display:flex;gap:14px}.rec-btn{display:flex;flex-direction:column;align-items:center;gap:3px;min-width:150px;min-height:56px;padding:9px 18px;font-family:var(--font-ui);font-weight:700;font-size:16px;letter-spacing:.1em;color:var(--ink);background:#14200df2;border:1px solid var(--panel-edge);border-radius:12px;cursor:pointer;transition:border-color .15s,box-shadow .15s}.rec-btn small{font-size:11px;font-weight:400;color:var(--ink-dim);letter-spacing:.03em}.rec-btn.sel{border-color:var(--gold);box-shadow:0 0 0 2px var(--gold),0 0 16px #e8c87859}.rec-btn.sel[data-r=exertion]{border-color:var(--violet);box-shadow:0 0 0 2px var(--violet),0 0 16px #b08cff66}#screen-respite,#screen-merchant{justify-content:flex-start}.respite-sec{display:flex;flex-direction:column;align-items:center;gap:10px;width:100%}.upg-cards{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;max-width:900px}.upg-card{position:relative;width:min(200px,44vw);min-height:44px;display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:13px;text-align:left;font-family:var(--font-ui);color:var(--ink);background:linear-gradient(170deg,#223417f2,#14200df2);border:1px solid var(--panel-edge);border-radius:12px;cursor:pointer;transition:transform .12s,box-shadow .18s,border-color .18s}.upg-card:hover:not(.maxed){transform:translateY(-3px);border-color:var(--gold)}.upg-card.picked{border-color:var(--gold);box-shadow:0 0 0 2px var(--gold),0 0 20px #e8c87866;transform:translateY(-3px)}.upg-card.skip{opacity:.85}.upg-card.maxed{opacity:.55;cursor:default}.tier-pips{font-size:15px;color:var(--gold);letter-spacing:.18em;text-shadow:0 0 8px rgba(232,200,120,.5)}.tier-pips i{font-style:normal;color:#e9e4d640;text-shadow:none}.upg-max{font-size:11px;font-weight:700;letter-spacing:.14em;color:var(--gold-2)}.upg-panel{display:flex;align-items:stretch;gap:12px;width:min(92vw,620px);padding:12px 14px;background:#14200df2;border:1px solid var(--gold);border-radius:12px;box-shadow:0 0 18px #e8c87833;animation:fcIn .12s ease-out}.upg-col{flex:1;display:flex;flex-direction:column;gap:4px}.upg-col p{margin:0;font-size:13px;line-height:1.45;color:var(--ink)}.upg-col.next p{color:var(--gold-2)}.upg-tag{font-size:11px;font-weight:700;letter-spacing:.14em;color:var(--ink-dim)}.upg-col.next .upg-tag{color:var(--gold)}.upg-arrow{align-self:center;font-size:19px;color:var(--gold)}.upg-none{margin:0;font-family:var(--font-flavor);font-size:13px;color:var(--ink-dim)}.stats-card{min-width:min(330px,88vw);padding:14px 18px;display:flex;flex-direction:column;gap:8px;background:#14200df2;border:1px solid var(--panel-edge);border-radius:12px}.st-row{display:flex;justify-content:space-between;gap:18px;font-size:15px}.st-row span{color:var(--ink-dim)}.st-row b{color:var(--gold-2)}#screen-merchant{background:radial-gradient(80vmax 55vmax at 50% 0%,rgba(255,170,70,.12),transparent 55%),radial-gradient(100vmax 70vmax at 50% 115%,rgba(232,160,60,.1),transparent 55%),radial-gradient(120% 100% at 50% 40%,#100d06f0,#070603fb)}.merchant-head{display:flex;align-items:center;gap:16px}.lantern{font-size:34px;transform-origin:50% -10%;animation:lanternSway 2.6s ease-in-out infinite;filter:drop-shadow(0 0 16px rgba(255,170,70,.8))}.lantern.flip{animation-delay:-1.3s}@keyframes lanternSway{0%,to{transform:rotate(-5deg)}50%{transform:rotate(5deg)}}.m-silver{display:flex;align-items:baseline;gap:10px;padding:6px 18px;border-radius:12px;background:#1a1408e6;border:1px solid var(--gold);box-shadow:0 0 16px #e8c87840}.m-silver span{font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-dim)}.m-silver b{font-family:var(--font-display);font-size:clamp(24px,5vmin,34px);color:var(--gold-2);text-shadow:0 0 14px rgba(232,200,120,.5)}.m-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,220px));gap:12px;justify-content:center;width:100%;max-width:980px}.m-card{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-height:44px;padding:13px;text-align:left;font-family:var(--font-ui);color:var(--ink);border-radius:12px;cursor:pointer;transition:transform .12s,box-shadow .18s,border-color .18s}.m-card.vial{background:linear-gradient(170deg,#1c2a38f2,#101a26f2);border:1px solid #4e7e9c}.m-card.trinket{background:linear-gradient(170deg,#342816f2,#22190cf2);border:1px solid #8a6f3c}.m-card.scroll{background:linear-gradient(170deg,#2e281cf2,#1e1a10f2);border:1px dashed #a08c5a}.m-card:hover:not(.sold):not(.cant){transform:translateY(-3px);box-shadow:0 8px 20px #00000080,0 0 14px #ffaa4640}.m-card.cant{opacity:.55;filter:saturate(.6);cursor:not-allowed}.m-card.sold{opacity:.5;cursor:default}.m-icon{font-size:26px;filter:drop-shadow(0 2px 3px rgba(0,0,0,.6))}.m-name{font-family:var(--font-display);font-size:19px;color:var(--gold-2);line-height:1}.m-sub{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-dim)}.m-text{font-size:12px;line-height:1.45;color:var(--ink)}.coin-chip{margin-top:auto;font-size:13px;font-weight:700;padding:2px 10px;border-radius:10px;color:#2b1f0c;background:linear-gradient(180deg,var(--gold-2),var(--gold));border:1px solid #8a6f3c;box-shadow:inset 0 1px #ffffff80}.m-card.cant .coin-chip{background:#00000080;color:var(--danger-2);border-color:var(--danger);box-shadow:none}.m-card.sold .coin-chip{visibility:hidden}.m-ribbon{position:absolute;right:8px;top:10px;font-size:11px;font-weight:700;letter-spacing:.2em;color:var(--danger-2);border:2px solid var(--danger);border-radius:6px;padding:1px 7px;transform:rotate(8deg);background:#0a0604cc}.m-card.deny{animation:denyShake .4s ease}@keyframes denyShake{0%,to{transform:translate(0)}25%{transform:translate(-5px)}50%{transform:translate(4px)}75%{transform:translate(-3px)}}.m-leave{margin-top:6px}@media(max-width:760px),(orientation:portrait)and (max-width:900px){:root{--tile: min(calc((94vw - 16px - 7 * var(--gap)) / 8), 58px)}#hud{grid-template-columns:1fr;grid-template-areas:"panel" "board" "abil" "end" "hint";justify-items:center;align-content:start;gap:10px}#hero-panel{width:min(94vw,460px);padding:10px 12px;gap:7px}#abilities{max-width:94vw}.ability{min-height:44px;padding:5px 10px}#end-turn{width:min(94vw,460px)}.notch{min-width:30px}.notch label{font-size:8px}#forecast{right:auto;bottom:auto;left:50%;top:calc(8px + env(safe-area-inset-top));transform:translate(-50%);max-width:94vw;min-width:230px}#turn-banner{top:24%}#keys-hint{display:none}.item-btn{width:46px;height:46px}.upg-panel{flex-direction:column}.upg-arrow{transform:rotate(90deg)}.m-grid{grid-template-columns:minmax(0,420px)}.merchant-head .screen-head{font-size:clamp(26px,7vw,40px)}}@media(orientation:portrait){.m-grid{grid-template-columns:minmax(0,420px)}}@media(max-height:560px)and (orientation:landscape){:root{--tile: min(8.4vmin, 52px)}#hud{gap:8px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important}.cell.aoe{box-shadow:inset 0 0 0 3px #8df0e2,0 0 14px #3fd6c2b3}#turn-banner.show{opacity:1;animation:none}}
