:root{--bg:#16111f;--fg:#f4ecff;--muted:#c9bddf;--accent:#ffcf4a;--on-accent:#1a1020;--hero:#3d9bff;--enemy:#ff4d4d;--heal:#6fdc8c;--overlay:#0a0610cc;--stone:#2c2342;--stone-lo:#1d1630;--edge:#07050c;--trim:#b8923f;--trim-hi:#ffdd7a;--bevel-hi:#ffffff29;--bevel-lo:#00000080;--well:#110c1b;--gold-btn:linear-gradient(#ffd75e, #e2a62b);--gold-trim:#7a5513;--star:#f2c14e;--star-ink:#9a6a0c;--r:3px;--frame:inset 0 0 0 2px var(--trim), inset 4px 4px 0 0 var(--bevel-hi), inset -4px -4px 0 0 var(--bevel-lo), 0 3px 0 var(--edge);--frame-pressed:inset 0 0 0 2px var(--trim), inset 4px 4px 0 0 var(--bevel-lo), inset -4px -4px 0 0 var(--bevel-hi);--glow:0 0 0 2px var(--trim-hi), 0 0 14px #ffcf4a8c;--mark-move:#fff;--mark-range:#ff6a3c;--mark-blocked:#6b3a8c;--mark-threat:#ff2d55;--paper:#efe3c4;--paper-lo:#dccb9f;--paper-hi:#fff7de;--paper-edge:#5a3d1c;--ink:#2b1f12;--ink-muted:#655134;--focus:#9e2c0c;--hp:#4fbf5a;--mp:#4a8fe0;--ct:#e8b030;--heal-ink:#1f7a3a;--strike:#120a1acc;--strike-dmg:#ffb8cf;--tap:48px;--gap:8px;--slot-w:440px;--font:"Alegreya Sans", system-ui, sans-serif;--font-px:"Cinzel", var(--font);--fs-sm:14px;--fs:16px;--fs-lg:20px;--fs-xl:32px}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--fg);font:var(--fs)/1.3 var(--font);font-variant-ligatures:none;margin:0}body{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:none;overflow:hidden}#app{position:fixed;inset:0}.board{width:100%;height:100%;image-rendering:pixelated;display:block;position:absolute;inset:0}.gi{fill:currentColor;flex:none;width:1.4em;height:1.4em}.dialog{border:2px solid var(--paper-edge);border-radius:var(--r);color:var(--ink);background:linear-gradient(var(--paper-hi), var(--paper));box-shadow:inset 0 0 0 2px var(--paper-hi), 0 3px 0 #00000073}.dialog button:not(.primary){color:var(--ink);background:linear-gradient(var(--paper-hi), var(--paper-lo));border-color:var(--paper-edge);box-shadow:inset 0 0 0 1px var(--paper-hi), 0 2px 0 #0000004d}.dialog button:not(.primary):not(:disabled):active{box-shadow:inset 0 2px #0003}.dialog button[aria-pressed=true]:not(.primary){box-shadow:inset 0 0 0 3px var(--focus);font-weight:800}.dialog button:focus-visible{outline-color:var(--focus)}button{font:700 var(--fs-sm)/1.1 var(--font);color:var(--fg);min-height:var(--tap);min-width:var(--tap);border-radius:var(--r);border:2px solid var(--edge);background:linear-gradient(var(--stone), var(--stone-lo));box-shadow:var(--frame);cursor:pointer;touch-action:manipulation;justify-content:center;align-items:center;gap:6px;display:inline-flex}@media (hover:hover){button:not(:disabled):hover{filter:brightness(1.18)}}button:not(:disabled):active{box-shadow:var(--frame-pressed);transform:translateY(2px)}button:disabled{filter:grayscale(.85)brightness(.65);cursor:default}button:focus-visible{outline:3px solid var(--focus);outline-offset:3px}button[aria-pressed=true]{box-shadow:var(--frame), var(--glow)}button.primary{background:var(--gold-btn);color:var(--on-accent);font:400 var(--fs-lg)/1 var(--font-px);box-shadow:inset 0 0 0 2px var(--gold-trim), inset 4px 4px 0 0 #ffffff59, inset -4px -4px 0 0 #00000040, 0 3px 0 var(--edge);flex:1}button.primary:not(:disabled):active{box-shadow:inset 0 0 0 2px var(--gold-trim), inset 4px 4px 0 0 #00000040, inset -4px -4px 0 0 #ffffff59}button.secondary{padding:0 14px}button.icon{font-size:var(--fs-lg);padding:0}button[hidden]{display:none}.hud{pointer-events:none;font-size:var(--fs);position:absolute;inset:0}.panel{pointer-events:auto;color:var(--ink);border-radius:var(--r);background:linear-gradient(var(--paper), var(--paper-lo));border:2px solid var(--paper-edge);box-shadow:inset 0 0 0 2px var(--paper-hi), 0 3px 0 #00000073;margin:0;padding:8px 12px;position:absolute}.panel[hidden]{display:none}.tile-info{font-size:var(--fs-sm);top:12px;left:12px}.queue{gap:3px;width:230px;padding:6px;list-style:none;display:grid;top:56px;left:12px}.queue.short li:nth-child(n+6){display:none}.queue.preview li:nth-child(n){display:flex}.queue-target{color:var(--focus);margin-left:auto;font-weight:700}.queue-title{font:400 var(--fs-sm)/1 var(--font-px);color:var(--ink-muted);padding:2px 4px 4px}.queue-row{font-size:var(--fs-sm);border-left:5px solid var(--side);align-items:center;gap:8px;padding:2px 6px;display:flex}.queue-row.hero{--side:var(--hero)}.queue-row.enemy{--side:var(--enemy)}.queue-row.now{background:#ffffff73;font-weight:700}.queue-row.charge{color:var(--ink-muted);font-style:italic}.queue-row.pending{box-shadow:inset 0 0 0 2px var(--focus);color:var(--ink);font-style:normal;font-weight:700}.queue-row .portrait{width:24px;height:32px}.help{text-align:center;max-width:760px;font-size:var(--fs-sm);top:12px;left:50%;transform:translate(-50%)}.help:empty{display:none}.banner{font:400 var(--fs-lg)/1 var(--font-px);padding:8px 28px;top:64px;left:50%;transform:translate(-50%)}.tools{pointer-events:auto;z-index:2;position:absolute;top:12px;right:12px}.tools .burger{background:linear-gradient(var(--paper), var(--paper-lo));border-color:var(--paper-edge);color:var(--ink);box-shadow:inset 0 0 0 2px var(--paper-hi), 0 3px 0 #00000073}.tools .burger[aria-expanded=true]{box-shadow:inset 0 0 0 2px var(--paper-hi), inset 0 3px 0 #0003;transform:translateY(2px)}.burger-bars,.burger-bars:before,.burger-bars:after{background:currentColor;border-radius:1px;width:22px;height:3px;display:block}.burger-bars{position:relative}.burger-bars:before,.burger-bars:after{content:"";position:absolute;left:0}.burger-bars:before{top:-7px}.burger-bars:after{top:7px}.tools-menu{top:calc(var(--tap) + 8px);transform-origin:top;width:320px;padding:6px;animation:90ms ease-out menu-in;right:0}.tools-menu .item{font:400 var(--fs)/1 var(--font-px);min-height:38px}@media (hover:hover){.tools-menu .item:hover{filter:none;background:#ffffff80}}.tool-label{white-space:nowrap;align-items:center;gap:10px;margin-right:16px;display:flex}.tool-glyph{width:22px;color:var(--ink-muted);font-size:var(--fs-lg);justify-content:center;display:inline-flex}.tools-menu [aria-checked=true] .tool-label:after{content:"✓";color:var(--focus);font-weight:700}.fps{pointer-events:none;white-space:pre;text-align:right;color:var(--fg);border-radius:var(--r);background:#0a06108c;padding:4px 8px;font:12px/1.35 ui-monospace,Consolas,monospace;position:absolute;top:72px;right:12px}.fps[hidden]{display:none}.commands{min-width:220px;padding:6px;display:grid}.commands .item{white-space:nowrap}.abilities{width:300px;padding:6px}.confirm{width:420px}.confirm strong{font:400 var(--fs-lg)/1.2 var(--font-px)}.confirm p{font-size:var(--fs-sm);margin:6px 0 0}.yes-no{gap:6px;margin-top:10px;display:flex}.panel .item{width:100%;min-height:40px;box-shadow:none;color:var(--ink);font:700 var(--fs-lg)/1 var(--font-px);text-shadow:0 1px #fff8e1e6,0 2px 3px #3c280f59;background:0 0;border:none;justify-content:space-between;padding:4px 10px 4px 28px;position:relative}.panel .item.focus{background:#ffffff80}.panel .item.focus:before{content:"▶";color:var(--focus);animation:.6s step-end infinite nudge;position:absolute;left:8px}.commands:not([hidden]),.confirm:not([hidden]){animation:90ms ease-out menu-in}.abilities{--slide:-24px}.abilities.from-right{--slide:24px}.abilities:not([hidden]){animation:.11s ease-out menu-in-side}.banner:not([hidden]){animation:.12s ease-out banner-in}@keyframes menu-in{0%{opacity:0;transform:scaleY(.8)}}@keyframes menu-in-side{0%{opacity:0;transform:translateX(var(--slide))}}@keyframes banner-in{0%{opacity:0;transform:translate(-50%)scaleX(.2)}}@keyframes nudge{50%{transform:translate(3px)}}@media (prefers-reduced-motion:reduce){.commands,.confirm,.abilities,.banner,.tools-menu,.panel .item.focus:before{animation:none!important}}.panel .item:disabled{filter:none;opacity:.45}.panel .item:not(:disabled):active{box-shadow:none;transform:none}.item-cost{font:400 var(--fs-sm)/1 var(--font);color:var(--ink-muted)}.active-slot,.target-slot{width:var(--slot-w);pointer-events:none;position:absolute;bottom:12px}.active-slot{left:12px}.target-slot{right:12px}.unit-panel{border-left:8px solid var(--side);gap:12px;display:flex;position:relative}.unit-panel.hero{--side:var(--hero)}.unit-panel.enemy{--side:var(--enemy)}.portrait{object-fit:cover;background:var(--paper-hi);border:2px solid var(--paper-edge);flex:none;width:72px;height:96px}.portrait.tinted{filter:sepia(.4)hue-rotate(220deg)saturate(2)brightness(1.1)}.portrait.gem{background:radial-gradient(circle,#bff7ff,#2bb8d6 60%,#0c4a5a)}.unit-body{flex:1;align-content:start;gap:4px;display:grid}.unit-name{font:400 var(--fs-lg)/1.1 var(--font-px);align-items:baseline;gap:8px;display:flex}.unit-side{font:400 var(--fs-sm)/1 var(--font);color:var(--ink-muted)}.unit-note{font-size:var(--fs-sm);color:var(--ink-muted);margin:0}.gauge{font-size:var(--fs-sm);grid-template-columns:40px 1fr 64px;align-items:center;gap:8px;display:grid}.gauge-label{font-weight:700}.gauge-bar{background:var(--well);border:1px solid var(--paper-edge);height:10px;position:relative}.gauge-bar i{height:100%;display:block}.gauge-change{position:absolute;top:0;bottom:0}.gauge-change.loss{background:repeating-linear-gradient(135deg, var(--enemy) 0 3px, var(--well) 3px 6px);animation:1s steps(2,jump-none) infinite loss-blink}.gauge-change.gain{background:repeating-linear-gradient(135deg, var(--heal) 0 3px, var(--well) 3px 6px)}@keyframes loss-blink{50%{opacity:.35}}@media (prefers-reduced-motion:reduce){.gauge-change{animation:none}}.target-slot .unit-panel{border-left:2px solid var(--paper-edge);border-right:8px solid var(--side);flex-direction:row-reverse}.strikes{bottom:12px;left:calc(var(--slot-w) + 24px);right:calc(var(--slot-w) + 24px);pointer-events:none;align-content:end;justify-items:end;gap:4px;display:grid;position:absolute}.strike{max-width:100%;color:var(--fg);background:var(--strike);border-left:4px solid var(--strike-dmg);clip-path:polygon(0 0,calc(100% - 20px) 0,100% 50%,calc(100% - 20px) 100%,0 100%);padding:4px 30px 5px 14px}.strike.gain{border-left-color:var(--heal)}.strike.ally{border-left-color:var(--accent)}.strike-main{white-space:nowrap;align-items:baseline;gap:10px;display:flex}.strike-hp{font:700 var(--fs-sm)/1 var(--font);color:var(--muted)}.strike-pts{font:400 var(--fs-xl)/1 var(--font-px);color:var(--strike-dmg);font-variant-numeric:tabular-nums}.strike.gain .strike-pts{color:var(--heal)}.strike-pts small{font:700 var(--fs-sm)/1 var(--font);margin-left:4px}.strike-hit{font:400 var(--fs-lg)/1 var(--font-px);margin-left:auto}.strike-info{font-size:var(--fs-sm);color:var(--muted)}.strike.ally .strike-info{color:var(--accent);font-weight:700}.strike-more{font-size:var(--fs-sm);color:var(--fg);background:var(--strike);margin:0;padding:2px 10px}.gauge.hp i{background:var(--hp)}.gauge.mp i{background:var(--mp)}.gauge.ct i{background:var(--ct)}.gauge-num{text-align:right;font-variant-numeric:tabular-nums}.floats{pointer-events:none;position:absolute;inset:0;overflow:hidden}.float{font:400 26px/1 var(--font-px);text-shadow:0 2px #000,2px 0 #000,-2px 0 #000,0 -2px #000;animation:1.5s linear forwards pop;position:absolute;transform:translate(-50%,-50%)}.float.dmg{color:#ffd0c4}.float.big{color:#ffb199;font-size:38px}.float.miss{color:var(--muted)}.float.heal{color:var(--heal)}@keyframes pop{0%{opacity:0;transform:translate(-50%,-50%)scale(.6)}8%{opacity:1;transform:translate(-50%,-140%)scale(1.15)}16%{transform:translate(-50%,-90%)scale(1)}22%{transform:translate(-50%,-110%)}28%,75%{opacity:1;transform:translate(-50%,-100%)}to{opacity:0;transform:translate(-50%,-130%)}}@media (prefers-reduced-motion:reduce){.float{animation-duration:1.6s;animation-timing-function:step-end}}.overlay{background:var(--overlay);z-index:10;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.dialog{width:min(460px,100%);max-height:90dvh;padding:14px 18px 18px;overflow:auto}.dialog-head{justify-content:space-between;align-items:center;gap:var(--gap);display:flex}.dialog h2,.dialog h3{font-family:var(--font-px);margin:0}.dialog h2{font-size:24px}.dialog h3{font-size:var(--fs);color:var(--focus);margin:16px 0 8px}.dialog p,.dialog .keys dd,.dialog .choice-label,.dialog .title-sub,.dialog .party-class,.dialog .party-more,.dialog .party-bench,.dialog .dev-num{color:var(--ink-muted)}.dialog .sw{border-color:var(--ink)}.kbd .dialog .hint,.dialog .hint{color:var(--ink-muted);border-color:var(--ink-muted)}.dialog .primary{width:100%}.legend{gap:6px;margin:0 0 8px;padding:0;list-style:none;display:grid}.legend li{align-items:center;gap:8px;display:flex}.sw{border:1px solid var(--fg);flex:none;width:20px;height:20px}.sw.move{background:var(--mark-move)}.sw.range{background:var(--mark-range)}.sw.blocked{background:var(--mark-blocked)}.sw.threat{background:var(--mark-threat)}.menu-actions{gap:var(--gap);flex-wrap:wrap;margin-top:16px;display:flex}.menu-actions button{flex:40%}.commands,.abilities,.confirm{z-index:1}.choice{margin:0 0 10px}.choice-label{font-size:var(--fs-sm);color:var(--muted);margin-bottom:4px;display:block}.choice-row{flex-wrap:wrap;gap:6px;display:flex}.choice-row button{flex:1;min-width:64px}.hint{display:none}.kbd .hint{color:var(--muted);border:1px solid var(--muted);border-radius:2px;padding:2px 4px;font:700 11px/1 system-ui,sans-serif;display:inline-block}.kbd .primary .hint{color:var(--on-accent);border-color:var(--on-accent)}.kbd .panel .hint{color:var(--ink-muted);border-color:var(--ink-muted);margin-left:8px}.keys{font-size:var(--fs-sm);grid-template-columns:auto 1fr;gap:4px 12px;margin:0 0 12px;display:grid}.keys dt{white-space:nowrap;font-weight:800}.keys dd{color:var(--muted);margin:0}.slider{margin:0 0 14px;display:block}.slider-row{align-items:center;gap:12px;display:flex}.slider input{min-height:var(--tap);accent-color:var(--focus);cursor:pointer;flex:1;margin:0}.slider input:focus-visible{outline:3px solid var(--focus);outline-offset:3px}.slider-value{text-align:right;min-width:4ch;font:400 var(--fs-lg)/1 var(--font-px);color:var(--ink)}.dialog.menu{grid-template-rows:auto 1fr auto;width:min(1400px,92vw);height:min(760px,90dvh);display:grid}.menu-layout{grid-template-columns:240px 1fr;gap:24px;min-height:0;margin-top:12px;display:grid}.menu-nav{border-right:2px solid var(--paper-lo);margin:0;padding-right:24px}.menu-nav .choice-label{display:none}.menu-nav .choice-row{flex-flow:column}.menu-nav .choice-row button{font:400 var(--fs)/1 var(--font-px);flex:none;justify-content:flex-start;padding:0 16px}.menu-body{min-height:0;padding-right:8px;overflow:auto}.menu-section h3{font-size:var(--fs-lg);margin-top:0}.menu-section .legend{margin-bottom:20px}.menu-section .choice,.menu-section .slider{max-width:560px}.dialog.menu .menu-actions button{flex:20%}@media (width<=600px){.menu-layout{grid-template-columns:1fr}.menu-nav{border-right:none;border-bottom:2px solid var(--paper-lo);padding:0 0 8px}.menu-nav .choice-row{flex-flow:wrap}}.dialog.dev{width:min(980px,100%)}.dev-teams{gap:var(--gap);grid-template-columns:repeat(auto-fit,minmax(300px,1fr));display:grid}.dev-list{margin:0 0 var(--gap);gap:var(--gap);padding:0;list-style:none;display:grid}.dev-unit{border:1px solid var(--paper-edge);border-radius:var(--r);background:var(--paper-hi);padding:var(--gap);gap:6px;display:grid}.dev-line{flex-wrap:wrap;align-items:end;gap:6px;display:flex}.dev-line select,.dev-line input[type=text]{min-width:0;min-height:36px;font:inherit;color:var(--ink);border:1px solid var(--paper-edge);border-radius:var(--r);background:#fff;flex:1;padding:0 8px}.dev-num{font-size:var(--fs-sm);color:var(--muted);gap:2px;display:grid}.dev-num input{width:84px;min-height:32px;font:inherit;color:var(--ink);border:1px solid var(--paper-edge);border-radius:var(--r);background:#fff;padding:0 6px}.dev-skills summary{cursor:pointer;color:var(--focus);font-size:var(--fs-sm)}.dev-skills{font-size:var(--fs-sm)}.dev-check{color:var(--ink);align-items:center;gap:4px;margin:2px 10px 2px 0;display:inline-flex}.dialog .dev-issues{color:var(--focus);margin:var(--gap) 0}.dialog .dev-msg{color:var(--focus);min-height:1em}.talk-overlay{background:#0a061459;align-content:end;place-items:end center;gap:12px;padding-bottom:24px}.talk-title{font:400 var(--fs-lg)/1 var(--font-px);color:var(--ink);justify-self:center;padding:8px 28px;animation:.16s ease-out banner-in;position:static}.panel.talk{text-align:left;width:min(860px,100%);min-height:132px;color:var(--ink);align-items:flex-start;gap:16px;padding:14px 40px 14px 14px;animation:.12s ease-out menu-in;display:flex;position:relative}.talk-face .portrait{width:72px;height:96px}.talk-body{flex:1;gap:6px;display:grid}.talk-name{font:400 var(--fs-lg)/1 var(--font-px);color:var(--focus)}.talk-text{font:400 var(--fs-lg)/1.35 var(--font);min-height:3.6em;margin:0}.talk-next{color:var(--focus);visibility:hidden;position:absolute;bottom:10px;right:16px}.talk.done .talk-next{visibility:visible;animation:.6s step-end infinite nudge}@media (prefers-reduced-motion:reduce){.talk-title,.panel.talk,.talk.done .talk-next{animation:none}}.camp-list{flex-direction:column}.camp-list>button{text-align:left;flex:none;width:100%;padding:10px 14px}.dialog .mvp{color:var(--gold-trim);margin:2px 0 10px;font-weight:700}.dialog .learned{color:var(--focus);margin:2px 0;font-weight:700}.dialog.title{text-align:center;width:min(460px,100%)}.dialog.title h2{letter-spacing:1px;font-size:38px}.title-sub{margin:4px 0 14px}.continue-where{font:400 var(--fs) var(--font);opacity:.8;margin-left:8px}.dialog.title .legend{text-align:left}.main-title .dialog.title{box-shadow:none;background:0 0;border:none;width:min(520px,100%);overflow:visible}.main-title .dialog-head{justify-content:center}.main-title .dialog.title h2{color:var(--paper-hi);letter-spacing:2px;text-shadow:0 4px 0 var(--edge), 0 0 28px #ffcf4a8c;margin:0 0 4px;font-size:64px;line-height:1.05;animation:.6s ease-out title-in}.main-title .title-sub,.main-title .title-foot{color:var(--paper-hi);text-shadow:0 2px 0 var(--edge), 0 0 8px var(--edge)}.main-title .title-foot{font-size:var(--fs-sm);opacity:.85;margin:14px 0 0}.main-title .title-lang{min-height:32px;font-size:var(--fs-sm);vertical-align:middle;padding:0 12px}.dialog.dev>.menu-actions,.dialog.dev .menu-actions:last-child{background:var(--paper);border-top:2px solid var(--paper-edge);padding:8px 0;position:sticky;bottom:-18px}.main-title .menu-actions{background:linear-gradient(var(--paper-hi), var(--paper));border:2px solid var(--paper-edge);border-radius:var(--r);box-shadow:inset 0 0 0 2px var(--paper-hi), 0 3px 0 #00000073;padding:12px}@keyframes title-in{0%{opacity:0;transform:translateY(-12px)scale(.96)}}@media (prefers-reduced-motion:reduce){.main-title .dialog.title h2{animation:none}}.dialog a{color:var(--focus)}.title-overlay{background:radial-gradient(ellipse at 50% 50%, transparent 25%, var(--overlay) 85%)}:is(body:has(.title-overlay) .hud,body:has(.title-overlay) .fps),:is(body:has(.talk-overlay) .hud,body:has(.talk-overlay) .fps),:is(body:has(.result-overlay) .hud,body:has(.result-overlay) .fps){visibility:hidden}.confetti{pointer-events:none;z-index:9;position:fixed;inset:0;overflow:hidden}.confetti i{width:8px;height:12px;animation:linear forwards fall;position:absolute;top:-12px}@keyframes fall{to{transform:translateY(105vh)rotate(540deg)}}.world{background:radial-gradient(ellipse at 50% 40%, var(--paper-hi), var(--paper) 55%, var(--paper-lo));position:fixed;inset:0;overflow:hidden}.world-map{position:absolute;inset:64px 4% 120px}.world-svg,.world-art{width:100%;height:100%;position:absolute;inset:0}.world-map{border:4px double var(--paper-edge);box-shadow:0 0 0 3px var(--paper-lo), 0 6px 18px #00000059;overflow:hidden}.world-art .sea{fill:#24505f}.world-art .grain{fill:#000;opacity:.22}.world-art .shallow{fill:none;stroke:#4d8a95;stroke-width:22px;vector-effect:non-scaling-stroke;opacity:.75}.world-art .land{fill:#b8b483;stroke:#3d3423;stroke-width:1.5px;vector-effect:non-scaling-stroke}.world-art .plain{fill:#cdbf7c;opacity:.8}.world-art .wood{fill:#5d7a3c;opacity:.55}.world-art .ash{fill:#8f877b;opacity:.75}.world-art .highland{fill:#9c8460;opacity:.65}.world-art .snowfield{fill:#eef1ee;opacity:.7}.world-art .river{fill:none;stroke:#3f7d97;stroke-width:3px;vector-effect:non-scaling-stroke;stroke-linecap:round}.world-art .lake{fill:#2f6478;stroke:#3d3423;stroke-width:1.2px;vector-effect:non-scaling-stroke}.world-art .pine{fill:#2f5a2c;stroke:#1e3519;stroke-width:.6px;vector-effect:non-scaling-stroke}.world-art .leaf{fill:#4c7a34;stroke:#1e3519;stroke-width:.6px;vector-effect:non-scaling-stroke}.world-art .trunk{stroke:#4a3520;stroke-width:1.4px;vector-effect:non-scaling-stroke}.world-art .rock{fill:#8a6f4d;stroke:#3d3423;stroke-width:.8px;vector-effect:non-scaling-stroke}.world-art .shade{fill:#5e4a33}.world-art .snow{fill:#f4f6f4}.world-compass{pointer-events:none;width:84px;height:84px;position:absolute;bottom:2%;left:1.5%}.world-icon{pointer-events:none;filter:drop-shadow(0 2px #00000059);width:30px;height:30px;position:absolute;transform:translate(10px,-110%)}.world-icon path{stroke:#3d3423;stroke-width:1.6px;stroke-linejoin:round;fill:none}.world-icon .wall{fill:#e6d6a8}.world-icon .roof{stroke:#8e3b24;stroke-width:3px}.world-icon .stone{fill:#a39c8e}.world-icon .door{fill:#2c2418}.world-icon .flame{fill:#e8a33a}.world-compass circle{fill:none;stroke:#e9dcae;stroke-width:1.5px;opacity:.8}.world-compass .star{fill:#e9dcae;stroke:#3d3423;stroke-width:1.5px}.world-compass .star-shade{fill:#9c8a5c}.world-compass text{fill:#e9dcae;font:700 12px var(--font)}.world-title{background:var(--paper);color:var(--ink);border:3px double var(--paper-edge);font:400 clamp(16px, 2.2vw, 28px) var(--font-px);letter-spacing:.12em;pointer-events:none;padding:6px 16px;position:absolute;top:3%;left:2%;box-shadow:0 3px #0000004d}.world-art .road{fill:none;stroke:var(--paper-edge);stroke-width:3px;stroke-dasharray:2 6;vector-effect:non-scaling-stroke;stroke-linecap:round}.world-art .road.walked{stroke:#8e3b24;stroke-dasharray:none;stroke-linejoin:round}.world-node{border:3px solid var(--paper-edge);cursor:pointer;width:22px;min-width:0;height:22px;min-height:0;padding:0;position:absolute;transform:translate(-50%,-50%);box-shadow:0 2px #00000059}.world-node.battle{background:#c0412b;border-radius:3px;transform:translate(-50%,-50%)rotate(45deg)}.world-node.story{background:#3d6fb0;border-radius:50%}.world-node.done{border-color:#e2b23a}.world-node:disabled{filter:none;cursor:default;background:#6f6656;border-color:#4a4235}.world-node.here{outline:3px solid var(--focus);outline-offset:4px}.world-token{transition:left var(--walk-ms) ease-in-out, top var(--walk-ms) ease-in-out;pointer-events:none;animation:1s ease-in-out infinite bob;position:absolute;transform:translate(-50%,-110%)}.world-token .portrait{border-radius:6px;width:44px;height:58px;box-shadow:0 3px #00000059}@keyframes bob{50%{margin-top:-4px}}.world-head{color:var(--ink);font:400 var(--fs-lg)/1 var(--font-px);padding:8px 14px;position:absolute;top:12px;left:12px}.world-panel{width:min(360px,100% - 48px);color:var(--ink);gap:6px;padding:12px 14px;display:grid;position:absolute;bottom:24px;right:24px}.world-place{font:400 var(--fs-lg)/1.2 var(--font-px)}.world-kind{color:var(--ink-muted);font-size:var(--fs-sm);margin:0}.world-actions{flex-wrap:wrap;gap:8px;display:flex}.world-actions .item{flex:28%;justify-content:center;padding-left:28px}.world-help{color:var(--ink-muted);font-size:var(--fs-sm);margin:0;padding:8px 12px;position:absolute;bottom:24px;left:12px}@media (prefers-reduced-motion:reduce){.world-token{transition:none;animation:none}}.talk-overlay.dark{background:radial-gradient(circle at 50% 30%,#5aaaff47,#0000 40%),#08050ef5;align-content:center;place-items:center;animation:4s ease-in-out infinite beacon}.talk-overlay.dark .panel.talk{box-shadow:none;color:var(--paper);text-align:center;background:0 0;border:none;min-height:0;padding:0 24px}.talk-overlay.dark .talk-text{max-width:34em;margin:0 auto;font-size:24px;line-height:1.5}.talk-overlay.dark .talk-next{color:var(--paper)}@keyframes beacon{50%{background-color:#08050ee6}}.overlay.create{background:#08050eb3}.create-panel{width:min(720px,100%);max-height:92dvh;color:var(--ink);gap:10px;padding:18px 22px;display:grid;position:relative;overflow:auto}.create-panel h2{font:400 28px/1.1 var(--font-px);margin:0}.create-name{font-weight:700}.create-panel input{font:400 var(--fs-lg)/1.2 var(--font);border:2px solid var(--paper-edge);background:var(--paper-hi);color:var(--ink);border-radius:4px;padding:8px 10px}.create-cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.create-card{background:var(--paper-hi);color:var(--ink);border:2px solid var(--paper-edge);box-shadow:none;justify-items:center;gap:6px;padding:10px 6px;display:grid}.create-card[aria-pressed=true]{outline:3px solid var(--focus);outline-offset:2px;background:#fff}.create-card .portrait{width:72px;height:96px}.create-sheet{gap:4px;min-height:9em;display:grid}.create-role{margin:0;font-weight:700}.create-stats{color:var(--ink-muted);font-variant-numeric:tabular-nums;margin:0}.create-skills{font-size:var(--fs-sm);gap:2px;margin:0;padding-left:18px;display:grid}.create-warn{color:var(--focus);min-height:1.2em;margin:0}@media (width<=600px){.create-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (prefers-reduced-motion:reduce){.talk-overlay.dark{animation:none}}.talk-overlay.dark .panel.talk:focus-visible{outline:none}.announce{z-index:15;pointer-events:none;font:400 30px/1.2 var(--font-px);color:var(--paper-hi);text-align:center;white-space:nowrap;text-overflow:ellipsis;text-shadow:0 2px #000;background:linear-gradient(90deg,#0000,#140c1ee0 15% 85%,#0000);max-width:92vw;padding:14px 36px;animation:2.2s ease-out forwards announce;position:fixed;top:38%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}@keyframes announce{0%{opacity:0;transform:translate(-50%,-50%)scaleX(.3)}12%{opacity:1;transform:translate(-50%,-50%)scaleX(1)}80%{opacity:1}to{opacity:0}}@media (prefers-reduced-motion:reduce){.announce{animation:none}}.tile-info:empty{display:none}.dialog.party{width:min(560px,100%)}.party-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.party-card{align-items:center;gap:12px;display:flex}.party-list .party-card{cursor:pointer;border-radius:var(--r);padding:4px}.party-list .party-card:hover,.party-list .party-card:focus-visible{outline:2px solid var(--focus);background:#ffffff8c}.party-card .portrait{width:48px;height:64px}.party-stats,.party-skills{font-size:var(--fs-sm);margin:2px 0 0}.party-stats{font-variant-numeric:tabular-nums}.world-tag{white-space:nowrap;font:400 var(--fs-sm)/1.2 var(--font-px);color:var(--paper-hi);background:#140c1ecc;border-radius:3px;padding:2px 8px;position:absolute;top:calc(100% + 26px);left:50%;transform:translate(-50%)}.talk-face.pop{animation:.22s ease-out face-pop}@keyframes face-pop{0%{opacity:.4;transform:translateY(6px)scale(.92)}}.fade-out{z-index:9;pointer-events:none;background:#08050e;animation:.3s ease-in forwards fade-in;position:fixed;inset:0}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){.talk-face.pop,.fade-out{animation:none}}.talk-keys{font-size:var(--fs-sm);color:var(--ink-muted);position:absolute;bottom:8px;right:40px}.talk-overlay.dark .talk-keys{color:var(--paper-lo);bottom:-28px;right:50%;transform:translate(50%)}
