@font-face{font-family:Cinzel Decorative;font-weight:900;font-display:swap;src:url(/fonts/cinzel-decorative-latin-900-normal.woff2) format("woff2")}@font-face{font-family:Cinzel;font-weight:600;font-display:swap;src:url(/fonts/cinzel-latin-600-normal.woff2) format("woff2")}:root{--bg: #15130f;--panel: #221f19;--border: #4a4232;--text: #e8dfc8;--muted: #9a8f78;--accent: #d9a441;--good: #7fbf5a;--bad: #d0604d;font-family:system-ui,sans-serif;color:var(--text);background:var(--bg)}*{box-sizing:border-box}body{margin:0;min-height:100vh}h1,h2{margin:0 0 8px;font-weight:600}h2{font-size:15px;color:var(--accent)}ul,ol{margin:0 0 16px;padding:0;list-style:none}ol{list-style:decimal inside}button,input,select{font:inherit;color:var(--text);background:#2e2a22;border:1px solid var(--border);border-radius:4px;padding:6px 10px}button{cursor:pointer}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.4;cursor:not-allowed}.hidden{display:none!important}.muted{color:var(--muted);font-weight:400}.error{color:var(--bad);min-height:1.2em}.gold{color:#f0c94a;font-weight:400}.game{display:grid;gap:8px;padding:8px;height:100vh;grid-template-columns:210px 1fr 290px;grid-template-rows:1fr 120px;grid-template-areas:"skills actions inventory" "chat chat inventory"}.panel{background:var(--panel);border:1px solid var(--border);border-radius:6px;padding:12px;overflow:auto}.skills{grid-area:skills}.actions{grid-area:actions}.inventory{grid-area:inventory}.chat{grid-area:chat;display:flex;flex-direction:column}.skills li{display:flex;justify-content:space-between;padding:6px 8px;border-radius:4px;cursor:pointer}.skills li:hover,.skills li.selected{background:#322c22}.skills li.busy:after{content:"●";color:var(--good);margin-left:6px}.skills ol li{cursor:default;display:list-item;padding:2px 0}.xpbar{position:relative;height:18px;background:#12100c;border-radius:4px;margin-bottom:16px;overflow:hidden}.xpbar div{height:100%;background:#3f6b2f}.xpbar span{position:absolute;top:0;right:0;bottom:0;left:0;text-align:center;font-size:12px;line-height:18px}.action-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px}.action{border:1px solid var(--border);border-radius:6px;padding:10px;display:flex;flex-direction:column;gap:6px}.action.locked{opacity:.5}.action.active{border-color:var(--good)}.action .meta{font-size:12px;color:var(--muted)}.action .progress{height:6px;background:#12100c;border-radius:3px;overflow:hidden}.action .progress div{height:100%;width:0;background:var(--good)}.inventory li{display:flex;justify-content:space-between;align-items:center;gap:6px;padding:4px 0}.inventory li button{padding:2px 8px;font-size:12px}#chat-log{flex:1;overflow-y:auto;font-size:14px;margin-bottom:8px}#chat-log .from{color:var(--accent)}#chat-input{width:100%}#toasts{position:fixed;bottom:16px;right:16px;display:flex;flex-direction:column;gap:6px}.toast{background:#2e2a22;border:1px solid var(--border);padding:8px 12px;border-radius:4px;animation:fade 4s forwards}.toast.bad{border-color:var(--bad)}@keyframes fade{0%,80%{opacity:1}to{opacity:0}}@media(max-width:800px){.game{height:auto;grid-template-columns:1fr;grid-template-rows:auto;grid-template-areas:"actions" "skills" "inventory" "chat"}.chat{height:240px}}.skills h3{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:12px 8px 4px}.skills li .lvl{color:var(--muted)}.bar{position:relative;height:16px;background:#12100c;border-radius:4px;overflow:hidden;margin:4px 0 10px}.bar>div{height:100%;background:#3f6b2f;transition:width .2s}.bar.hp>div{background:#9b3a2e}.bar.monster>div{background:#6b3f8f}.bar.step>div{background:var(--accent);transition:none}.bar>span{position:absolute;top:0;right:0;bottom:0;left:0;text-align:center;font-size:11px;line-height:16px}.class-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}.class-card{border:1px solid var(--border);border-radius:6px;padding:12px;display:flex;flex-direction:column;gap:6px}.class-card p{margin:0;font-size:13px;color:var(--muted)}.abilities{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;margin:8px 0 14px}.ability{border:1px solid var(--border);border-radius:6px;text-align:center;padding:6px 0}.ability b{display:block;font-size:18px}.ability small{color:var(--muted);text-transform:uppercase;font-size:11px}.stats{display:flex;flex-wrap:wrap;gap:6px 18px;margin-bottom:12px}.stats span b{color:var(--accent)}.equip-row{display:flex;justify-content:space-between;align-items:center;padding:4px 0;border-bottom:1px solid #2e2a22}.feature{margin:4px 0;font-size:13px}.feature.locked{opacity:.45}.credit{margin-top:18px;font-size:11px;color:var(--muted)}.credit p{margin:4px 0}.slot-pips{letter-spacing:2px;color:#7aa7d9}.areas{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;margin-bottom:14px}.area{border:1px solid var(--border);border-radius:6px;padding:10px;display:flex;flex-direction:column;gap:4px}.area.active{border-color:var(--good)}.area p{margin:0;font-size:12px;color:var(--muted)}.fight{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:8px}.log{font-size:13px;max-height:170px;overflow-y:auto;border-top:1px solid var(--border);padding-top:6px}.log div{padding:1px 0}.log .hit{color:#e8dfc8}.log .crit{color:#ffcf5a;font-weight:600}.log .miss{color:var(--muted)}.log .hurt{color:#e08870}.log .heal{color:#8fd18a}.log .loot{color:#f0c94a}.log .level{color:#7fc6ff;font-weight:600}.log .bad{color:var(--bad);font-weight:600}.inventory li{flex-wrap:wrap}.inventory li.bank-row{flex-wrap:nowrap;padding:3px 0;gap:6px}.inventory li.bank-row .item-name{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.inventory li.bank-row button{padding:1px 6px;font-size:11px;white-space:nowrap}.inventory li.bank-row .item-buttons{flex-shrink:0;gap:4px}.inventory .item-name{flex:1 1 100%}.gear-summary{display:flex;flex-wrap:wrap;gap:6px 14px;margin:4px 0 8px}.gear-chip{display:inline-flex;align-items:center;gap:2px;font-size:13px}.leaderboard-box summary{font-size:15px}.inventory .item-desc{flex:1 1 100%;font-size:11px;color:var(--muted)}.inventory .item-buttons{display:flex;gap:6px;margin-left:auto}.inventory .qty{color:var(--accent);font-weight:600}.inventory li.bank-filter{justify-content:space-between;font-size:12px;border-bottom:none;padding-bottom:0}.inventory li.bank-group{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);border-bottom:1px solid var(--border);padding:10px 0 2px}.area.locked{opacity:.5;border-style:dashed}.area.cleared strong{color:var(--good)}.area .buttons{display:flex;gap:6px}.area .buttons button{flex:1}h3.chapter{font-size:13px;color:var(--text);margin:14px 0 6px}.goal{border:1px solid #5a4a7a;background:#241f30;border-radius:6px;padding:6px 10px;font-size:13px}.difficulty{font-size:11px;font-weight:600;padding:1px 6px;border-radius:3px;vertical-align:middle}.difficulty.easy{background:#2f4a25;color:#a8e08c}.difficulty.medium{background:#4a4225;color:#f0d27a}.difficulty.hard{background:#4a2525;color:#f09a8c}.class-card.sealed{opacity:.6;border-style:dashed;text-align:center;align-items:center}.class-card .emblem{font-size:36px;line-height:1.2}.bar.done>div{background:#b8902f}button.retire{border-color:var(--accent);color:#ffd98a;margin-bottom:8px}.donate-row{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}.donate-row input{width:160px}.shop-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:6px;padding:0;list-style:none}.shop-grid li{display:flex;flex-wrap:wrap;gap:4px;align-items:center;border:1px solid #2e2a22;border-radius:6px;padding:6px 8px}.shop-grid .item-name{flex:1 1 100%}.shop-grid .item-desc{flex:1 1 100%;font-size:11px;color:var(--muted)}.shop-grid button{padding:1px 8px;font-size:12px}.shop-grid li.locked{opacity:.45}.town-columns{display:grid;grid-template-columns:2fr 1fr;gap:16px;align-items:start}@media(max-width:900px){.town-columns{grid-template-columns:1fr}}.camp-line{font-size:12px;color:var(--muted);margin:6px 0}.camp-line b{color:#8fd18a}.locked-tag{font-size:11px;color:var(--accent)}#chat-log .system{color:#f0c94a;font-style:italic}.rarity-uncommon{color:#7fd17a}.rarity-rare{color:#6fa8ff}.rarity-very-rare{color:#c58bff}.rarity-legendary{color:#ffa94d;font-weight:600}.log .magic{color:#ffa94d;font-weight:700;text-shadow:0 0 6px rgba(255,169,77,.4)}.equip-row .item-desc{font-size:11px;color:var(--muted)}.icon{display:inline-flex;width:1.3em;height:1.3em;vertical-align:-.3em;margin-right:6px;flex-shrink:0;color:var(--text)}.icon:empty{display:none}.icon svg{width:100%;height:100%}.icon-md{width:28px;height:28px;margin-right:4px}.icon-lg{width:26px;height:26px;vertical-align:-.45em}.icon-xl{width:64px;height:64px;margin:4px auto}.icon.emblem{color:#6f6656}.icon.emblem-inline{color:var(--accent);margin:0 4px}.skills li .icon{color:var(--accent)}.combatant{display:flex;gap:10px;align-items:center}.combatant>div{flex:1}.icon.portrait{width:56px;height:56px;padding:6px;border:1px solid var(--border);border-radius:8px;background:#17140f;margin:0}.icon.portrait.boss{border-color:#ffa94d;box-shadow:0 0 10px #ffa94d59}.foe-icons{display:flex;flex-wrap:wrap;gap:4px;margin:2px 0}.foe-icons .icon{color:#d9c9a8}.action strong .icon{width:22px;height:22px}.scene{position:relative;overflow:hidden;background:#0d0b09}.scene-svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block}.card-scene{height:64px;margin:-10px -10px 8px;border-radius:6px 6px 0 0}.area.locked .card-scene{filter:grayscale(1) brightness(.5)}.login{position:relative;overflow:hidden;min-height:100vh;display:flex;flex-direction:column;align-items:center;background:radial-gradient(ellipse at 50% 85%,rgba(255,140,50,.16),transparent 45%),linear-gradient(#070b09,#13211a 55%,#1f3328)}.login-scene{position:absolute;left:0;right:0;bottom:0;height:55vh;z-index:0;-webkit-mask-image:linear-gradient(to bottom,transparent,#000 35%);mask-image:linear-gradient(to bottom,transparent,#000 35%)}.login>:not(.login-scene){position:relative;z-index:1}.login-main{display:flex;flex-direction:column;align-items:center;gap:10px;padding:9vh 16px 0;width:100%;max-width:760px}.login .logo-wrap{margin:0;width:min(720px,100%);line-height:0}.login .logo{width:100%;height:auto;overflow:visible}.logo-flame{transform-box:fill-box;transform-origin:50% 100%;animation:flame-flicker 2.6s ease-in-out infinite}@keyframes flame-flicker{0%,to{transform:scale(1)}30%{transform:scale(.97,1.05)}55%{transform:scale(1.03,.97)}80%{transform:scale(.99,1.03)}}.reduce-motion .logo-flame{animation:none}.login .tagline{text-align:center;margin:-18px 0 10px;color:#e8cfa0;font-family:Cinzel,serif;font-weight:600;font-size:17px;letter-spacing:.1em;text-shadow:0 1px 2px #000}.login-card{background:#140e08d1;border:1px solid #5a4630;border-radius:10px;padding:16px 18px 10px;width:min(460px,100%);box-shadow:0 10px 40px #0000008c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.login-card label{display:block;font-weight:600;color:#ffd98a;margin-bottom:8px}.login-row{display:flex;gap:8px}.login-row input{flex:1;min-width:0;font-size:16px;padding:10px 12px}.login-row button{font-size:16px;padding:10px 22px}.login-card details{margin-top:8px;font-size:13px;color:var(--muted)}.login-card details summary{cursor:pointer}.login-card details input{width:100%;margin-top:6px;box-sizing:border-box}.login-card .error{margin:6px 0 0;min-height:0}.login-note{margin:8px 0 0;font-size:12px;color:var(--muted)}.login-status span+span:before{content:" · "}.login-status{margin:4px 0 0;padding:4px 10px;border-radius:6px;background:#00000073;min-height:1.2em;font-size:13px;color:#cfe3c0;text-align:center;text-shadow:0 1px 2px #000}.login-features{list-style:none;padding:0;margin:6px 0 0;display:flex;flex-wrap:wrap;justify-content:center;gap:8px}.login-features li{display:flex;flex-direction:column;align-items:center;padding:6px 12px;border-radius:8px;background:#0c100de0;border:1px solid rgba(255,217,138,.15);font-size:12px}.login-features b{color:#ffd98a;font-size:14px}.login-features span{color:#c8b89a}.login-party{display:flex;align-items:flex-end;justify-content:center;gap:4px;margin-top:auto;padding-bottom:6vh}.login-party .hero-sprite{--cell: 210px}.login-party .face-left{transform:scaleX(-1)}.login-fire{width:72px;height:auto;image-rendering:pixelated;margin:0 6px 6px;filter:drop-shadow(0 0 18px rgba(255,150,50,.8))}.login-foot{position:absolute!important;bottom:8px;left:0;right:0;display:flex;justify-content:center;align-items:center;gap:16px;flex-wrap:wrap;font-size:11px;color:#e8cfa099}.login-foot select{font-size:12px;background:#1a1610;color:#e8cfa0;border:1px solid #5a4630;border-radius:4px;padding:2px 4px}@media(max-height:760px),(max-width:600px){.login-party{display:none}.login-main{padding-top:5vh;padding-bottom:60px}}.particles{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.particles span{position:absolute;width:var(--size);height:var(--size);border-radius:50%;opacity:0;animation:rise linear infinite}.particles-embers span{background:#ffb347;box-shadow:0 0 6px #ff7a1c}.particles-sparks span{background:#ff6aa8;box-shadow:0 0 8px #ff2a6a}.particles-spores span{background:#b5e07a;box-shadow:0 0 6px #8fd14a;animation-name:drift}.particles-fireflies span{background:#f4f0a0;box-shadow:0 0 8px #e8e060;animation-name:wander}.particles-dust span{background:#d8c8a8;opacity:.3;animation-name:drift}.particles-bubbles span{background:transparent;border:1px solid #9fe6f0;animation-name:rise}.particles-snow span{background:#fff;animation-name:fall}@keyframes rise{0%{transform:translateY(30px);opacity:0}15%{opacity:.9}to{transform:translate(var(--drift),-160px);opacity:0}}@keyframes fall{0%{transform:translateY(-60px);opacity:0}10%{opacity:.9}to{transform:translate(var(--drift),220px);opacity:.2}}@keyframes drift{0%{transform:translate(-20px);opacity:0}30%{opacity:.6}to{transform:translate(calc(var(--drift) * 2 + 40px),-30px);opacity:0}}@keyframes wander{0%,to{transform:translate(0);opacity:0}25%{opacity:1}50%{transform:translate(var(--drift),-20px);opacity:.4}75%{opacity:1}}.stage{position:relative;height:210px;margin:-12px -12px 12px;border-bottom:1px solid var(--border);border-radius:6px 6px 0 0;overflow:hidden}.stage-scene{position:absolute;top:0;right:0;bottom:0;left:0}.actors{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;grid-template-columns:1fr auto 1fr;align-items:end;padding:0 6% 18px}.phase.camp{align-self:end;display:flex;flex-direction:column;align-items:center;gap:4px;letter-spacing:0;font-size:13px}.phase.camp .node-sprite{animation:flicker .9s ease-in-out infinite alternate}.phase{align-self:center;font-weight:700;color:#ffd98a;text-shadow:0 0 8px #000,0 1px 2px #000;letter-spacing:.1em}.actor{display:flex;flex-direction:column;align-items:center;gap:4px;justify-self:center;width:170px}.actor.empty{visibility:hidden}.actor-name{font-size:12px;font-weight:600;text-shadow:0 1px 3px #000,0 0 6px #000;white-space:nowrap}.actor .icon.portrait{width:82px;height:82px;padding:10px;border-radius:50%;border:2px solid #8a7a5a;background:radial-gradient(circle at 50% 35%,#3a3226,#15110c);box-shadow:0 6px 14px #0009;margin:0;color:#f0e2c0}.actor.foe .icon.portrait{border-color:#7a4a4a;color:#f0c8b8}.actor.foe .portrait{animation:bob 3.2s ease-in-out infinite}.actor.boss .icon.portrait{border-color:#ffa94d;animation:bob 3.2s ease-in-out infinite,boss-glow 2s ease-in-out infinite}.actor.boss .sprite{animation:bob 3.2s ease-in-out infinite,boss-aura 2s ease-in-out infinite}.actor.you.low .icon.portrait{border-color:var(--bad);animation:low-pulse 1s ease-in-out infinite}.actor.gone{animation:gone-fade .5s ease-in 1.8s forwards}@keyframes gone-fade{to{opacity:0;transform:translateY(20px)}}.actor.entering{animation:enter .6s ease-out}.hpbar{position:relative;width:150px;height:12px;background:#000000b3;border:1px solid rgba(255,255,255,.15);border-radius:6px;overflow:hidden}.hpbar .fill,.hpbar .ghost{position:absolute;left:0;top:0;bottom:0}.hpbar .ghost{background:#f0d080;transition:width .9s ease-in .25s}.hpbar .fill{background:linear-gradient(#c94a3a,#8a2a20);transition:width .25s ease-out}.hpbar.foe .fill{background:linear-gradient(#9a5ac9,#5a2a8a)}.hpbar span{position:absolute;top:0;right:0;bottom:0;left:0;font-size:9px;line-height:12px;text-align:center;text-shadow:0 1px 1px #000}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}@keyframes boss-glow{0%,to{box-shadow:0 0 10px #ffa94d66,0 6px 14px #0009}50%{box-shadow:0 0 24px #ffa94dcc,0 6px 14px #0009}}@keyframes boss-aura{0%,to{filter:drop-shadow(0 0 4px rgba(255,169,77,.5)) drop-shadow(0 6px 4px rgba(0,0,0,.6))}50%{filter:drop-shadow(0 0 12px rgba(255,169,77,.9)) drop-shadow(0 6px 4px rgba(0,0,0,.6))}}@keyframes low-pulse{50%{box-shadow:0 0 16px #d0604de6}}@keyframes enter{0%{transform:translate(60px) scale(.8);opacity:0}to{transform:none;opacity:1}}.actor.hit .portrait{animation:hit .35s}.actor.hit-hard .portrait{animation:hit-hard .5s}.actor.dodge .portrait{animation:dodge .4s}.actor.lunge-right .portrait{animation:lunge-right .4s}.actor.lunge-left .portrait{animation:lunge-left .4s}.actor.cast .icon.portrait{animation:cast .5s}.actor.healed .icon.portrait{animation:healed .6s}.actor.burn .icon.portrait{animation:burn .7s}.actor.zap .icon.portrait{animation:zap .6s}.actor.dying,.actor.gone.dying{animation:dying 1.1s forwards}.actor.cast .sprite{animation:cast-sprite .5s}.actor.healed .sprite{animation:healed-sprite .6s}.actor.burn .sprite{animation:burn-sprite .7s}.actor.zap .sprite{animation:zap-sprite .6s}.actor.you.low .sprite{animation:low-sprite 1s ease-in-out infinite}@keyframes cast-sprite{40%{filter:drop-shadow(0 0 10px #9ad0ff) brightness(1.2)}}@keyframes healed-sprite{40%{filter:drop-shadow(0 0 10px #7fd17a) brightness(1.3)}}@keyframes burn-sprite{30%{filter:drop-shadow(0 0 12px #ff7a1c) brightness(1.5) sepia(.6)}}@keyframes zap-sprite{30%{filter:drop-shadow(0 0 10px #c58bff) brightness(1.6) hue-rotate(40deg)}}@keyframes low-sprite{50%{filter:drop-shadow(0 0 8px rgba(208,96,77,.9))}}@keyframes hit{30%{transform:translate(-6px);filter:brightness(1.8) saturate(.4)}60%{transform:translate(5px)}}@keyframes hit-hard{20%{transform:translate(-10px) rotate(-6deg);filter:brightness(2.2)}50%{transform:translate(8px) rotate(4deg)}}@keyframes dodge{50%{transform:translate(-14px) translateY(-6px);opacity:.6}}@keyframes lunge-right{40%{transform:translate(40px) scale(1.08)}}@keyframes lunge-left{40%{transform:translate(-40px) scale(1.08)}}@keyframes cast{40%{box-shadow:0 0 26px #9ad0ff,0 0 8px #fff;transform:scale(1.06)}}@keyframes healed{40%{box-shadow:0 0 26px #7fd17a;filter:brightness(1.3)}}@keyframes burn{30%{box-shadow:0 0 30px #ff7a1c,inset 0 0 20px #ff4a1c;filter:brightness(1.5) sepia(.6)}}@keyframes zap{30%{box-shadow:0 0 26px #c58bff;filter:brightness(1.6) hue-rotate(40deg)}}@keyframes dying{30%{transform:translateY(-6px) rotate(-8deg);filter:brightness(2)}to{transform:translateY(30px) rotate(20deg) scale(.6);opacity:0;filter:grayscale(1)}}.stage.shake{animation:shake .35s}.stage.defeat-flash:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(transparent 30%,#a0000099);animation:flash .9s forwards}@keyframes shake{25%{transform:translate(4px,-2px)}50%{transform:translate(-4px,2px)}75%{transform:translate(2px,1px)}}@keyframes flash{0%{opacity:1}to{opacity:0}}.sprite{image-rendering:pixelated;flex-shrink:0}.hero-sprite{--cell: 192px;width:var(--cell);height:var(--cell);background-repeat:no-repeat;background-size:calc(var(--cols) * var(--cell)) calc(var(--rows) * var(--cell));margin:calc(var(--cell) * -.3) calc(var(--cell) * -.15) calc(var(--cell) * -.26);filter:drop-shadow(0 4px 3px rgba(0,0,0,.55))}.monster-sprite{height:auto;filter:drop-shadow(0 6px 4px rgba(0,0,0,.6))}.monster-sprite.small{width:72px}.monster-sprite.large{width:96px}.monster-sprite.huge{width:128px}.workbench{position:relative;height:160px;margin:0 0 12px;border:1px solid var(--border);border-radius:6px;overflow:hidden;display:flex;align-items:flex-end;justify-content:center}.workbench .scene{position:absolute;top:0;right:0;bottom:0;left:0}.bench-actors{position:absolute;bottom:0;left:50%;transform:translate(-70%);display:flex;justify-content:center}.workbench .hero-sprite{position:relative;z-index:1;--cell: 200px;margin-bottom:calc(var(--cell) * -.2)}.node{position:absolute;z-index:0;line-height:0}.node-sprite{image-rendering:pixelated;filter:drop-shadow(0 3px 2px rgba(0,0,0,.5))}.node.struck{animation:struck .18s}@keyframes struck{30%{transform:translate(2px,1px);filter:brightness(1.35)}70%{transform:translate(-1px)}}.node.lit .node-sprite{animation:flicker .9s ease-in-out infinite alternate}@keyframes flicker{0%{filter:drop-shadow(0 0 4px rgba(255,140,30,.5)) brightness(1)}to{filter:drop-shadow(0 0 10px rgba(255,160,40,.8)) brightness(1.12)}}.node .ripple{position:absolute;left:62%;top:30%;width:26px;height:8px;border:2px solid rgba(190,225,255,.7);border-radius:50%;opacity:0}.working .node .ripple{animation:ripple 1.6s ease-out infinite}@keyframes ripple{0%{transform:scale(.3);opacity:.9}to{transform:scale(1.6);opacity:0}}.debris{position:absolute;width:4px;height:4px;z-index:2;pointer-events:none;animation:debris .55s ease-out forwards}@keyframes debris{0%{transform:translate(0);opacity:1}60%{transform:translate(var(--dx),var(--dy));opacity:1}to{transform:translate(calc(var(--dx) * 1.3),calc(var(--dy) * -.2 + 20px));opacity:0}}.workbench .caption{position:absolute;left:10px;top:8px;font-size:13px;font-weight:600;text-shadow:0 1px 3px #000,0 0 6px #000}.fx-layer{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.float{position:absolute;transform:translate(-50%);font-weight:800;font-size:20px;white-space:nowrap;text-shadow:0 2px 0 #000,0 0 6px #000;animation:float-up 1.3s ease-out forwards}.float.dmg{color:#fff1d0}.float.hurt{color:#ff8a70}.float.crit{color:#ffd34a;font-size:26px}.float.heal{color:#8fe08a}.float.miss{color:#b8b0a0;font-size:15px;font-style:italic}@keyframes float-up{0%{opacity:0;transform:translate(-50%,10px) scale(.7)}15%{opacity:1;transform:translate(-50%) scale(1.15)}30%{transform:translate(-50%,-6px) scale(1)}to{opacity:0;transform:translate(-50%,-60px)}}.d20{position:absolute;width:34px;height:34px;display:grid;place-items:center;font-weight:800;font-size:14px;color:#1a1408;background:#e8dcc0;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);animation:roll 1.2s ease-out forwards}.d20.hit{background:#f0e2c0}.d20.miss{background:#8a8270}.d20.nat20{background:#ffd34a;box-shadow:0 0 12px #ffd34a}.d20.nat1{background:#d0604d;color:#fff}@keyframes roll{0%{transform:rotate(-200deg) scale(.3);opacity:0}30%{transform:rotate(15deg) scale(1.15);opacity:1}45%{transform:rotate(0) scale(1)}85%{opacity:1}to{opacity:0;transform:translateY(-10px)}}#fx-global{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:50;display:flex;flex-direction:column;align-items:center;padding-top:70px;gap:8px}.banner{--banner-color: #ffd98a;font-size:30px;font-weight:800;letter-spacing:.04em;color:var(--banner-color);padding:10px 28px;background:linear-gradient(90deg,transparent,rgba(20,14,8,.92) 20%,rgba(20,14,8,.92) 80%,transparent);text-shadow:0 0 18px var(--banner-color),0 2px 0 #000;animation:banner 2.6s ease-out forwards}.banner.skill{font-size:20px;--banner-color: #9fd0ff}.banner.magic{font-size:26px}.banner.scenario{--banner-color: #ffd34a}@keyframes banner{0%{opacity:0;transform:scale(.6)}12%{opacity:1;transform:scale(1.08)}20%{transform:scale(1)}80%{opacity:1}to{opacity:0;transform:translateY(-20px)}}.pop{position:fixed;transform:translate(-50%);display:flex;align-items:center;font-weight:800;color:#ffe9a8;text-shadow:0 1px 2px #000;animation:float-up 1.2s ease-out forwards}.pop .icon{width:22px;height:22px}.toast{animation:toast-in .25s ease-out,fade 4s forwards}@keyframes toast-in{0%{transform:translate(30px);opacity:0}}button{transition:border-color .15s,transform .1s}button:active:not(:disabled){transform:scale(.96)}.reduce-motion *,.reduce-motion *:before,.reduce-motion *:after{animation:none!important;transition:none!important}.reduce-motion .particles{display:none}@media(max-width:800px){.stage{height:180px}.actor{width:120px}.actor .icon.portrait{width:62px;height:62px}.hero-sprite{--cell: 150px}.monster-sprite.small{width:56px}.monster-sprite.large{width:76px}.monster-sprite.huge{width:100px}.hpbar{width:110px}}.guide{border:1px solid var(--accent);background:linear-gradient(135deg,#d9a44129,#d9a4410a);border-radius:8px;padding:10px 14px;margin-bottom:12px}.guide-head{display:flex;justify-content:space-between;align-items:baseline}.guide-head strong{color:#ffd98a}.guide p{margin:6px 0 8px}.guide-buttons{display:flex;gap:10px;align-items:center;flex-wrap:wrap}button.primary{background:#6b4a1a;border-color:var(--accent);color:#fff3d8;font-weight:600;padding:7px 14px}button.primary:hover{background:#7d5820}button.link{background:none;border:none;color:var(--muted);text-decoration:underline;padding:0;font-size:12px}details.section{border-top:1px solid #2e2a22;padding:6px 0}details.section>summary{cursor:pointer;color:var(--accent);font-weight:600;font-size:15px;padding:4px 0;list-style:none}details.section>summary:before{content:"▸ ";color:var(--muted)}details.section[open]>summary:before{content:"▾ "}.panel-head{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:4px}.icon-btn{background:none;border:1px solid transparent;padding:0 3px;font-size:15px;line-height:1.2}.icon-btn:hover{border-color:var(--border)}.head-buttons{display:flex;flex-shrink:0;gap:2px}.icon-btn.off{opacity:.35;text-decoration:line-through}.skill-bonus{margin:-4px 0 12px;font-size:13px}.skill-bonus b{color:var(--accent)}.pop.bonus{color:#ffd34a;font-size:18px;text-shadow:0 0 8px rgba(255,211,74,.6),0 1px 2px #000}.settings-dialog{background:var(--panel, #1d1a15);color:inherit;border:1px solid var(--accent);border-radius:10px;padding:18px 22px;width:min(420px,calc(100vw - 32px))}.settings-dialog::backdrop{background:#0009}.settings-dialog h2{margin:0 0 6px}.settings-dialog h3{margin:14px 0 6px;font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.setting{display:grid;grid-template-columns:110px 1fr 44px;align-items:center;gap:10px;margin:8px 0}.setting.check{grid-template-columns:auto 1fr}.setting.check small{grid-column:2}.setting select{grid-column:2 / span 2;background:#17140f;color:inherit;border:1px solid var(--border);border-radius:4px;padding:4px 6px}.setting input[type=range]{width:100%;accent-color:var(--accent)}.setting-value{text-align:right;font-variant-numeric:tabular-nums;color:var(--muted)}.settings-dialog .small{font-size:12px}.dialog-buttons{display:flex;justify-content:flex-end;margin-top:10px}.gear-link{margin:6px 0 4px}.gear-slot{margin-top:10px}.gear-slot h3{margin:0 0 4px;font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.gear-row{display:grid;grid-template-columns:1fr auto auto auto;align-items:center;gap:10px;padding:6px 8px;border:1px solid #2e2a22;border-radius:6px;margin-bottom:4px}.gear-row.worn{background:#d9a44112;border-color:#4a3f2a;grid-template-columns:1fr auto}.gear-row.best{border-color:var(--good);box-shadow:0 0 0 1px #7fd17a40 inset}.gear-row.unusable{opacity:.55}.gear-row .item-desc{font-size:11px;color:var(--muted)}.delta{font-size:12px;font-weight:700;margin-right:6px;white-space:nowrap}.delta.up{color:var(--good)}.delta.down{color:var(--bad)}.best-tag{font-size:11px;font-weight:700;color:#0f1a0e;background:var(--good);border-radius:10px;padding:1px 8px}.small{font-size:12px}.bounties{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:6px}.bounty{display:flex;flex-direction:column;gap:6px;border:1px solid var(--border);border-radius:6px;padding:8px 10px;background:#00000026}.bounty.done{border-color:var(--good);box-shadow:0 0 0 1px #7fd17a40 inset}.bounty.claimed{opacity:.55}.bounty-actions{display:flex;gap:14px;align-items:center;margin-bottom:10px}@media(max-width:900px){.bounties{grid-template-columns:1fr}}.siege-card{border:1px solid #a8422a;border-radius:8px;padding:10px 12px;margin-bottom:12px;background:linear-gradient(135deg,#a8422a2e,#0000001a)}.siege-head{display:flex;gap:12px;align-items:center}.siege-head h2{margin:0 0 4px;color:#ffb38a}.siege-head p{margin:0 0 6px;font-size:13px}.siege-row{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:6px 0}.siege-card ol{margin:4px 0 0;padding-left:0;list-style:none;display:flex;flex-wrap:wrap;gap:4px 16px;font-size:12px;color:var(--muted)}.abyss-card{border:1px solid #6b4fa0;border-radius:8px;padding:10px 12px;margin-bottom:12px;background:linear-gradient(135deg,#6b4fa033,#00000026)}.abyss-head{display:flex;gap:12px;align-items:center}.abyss-head .icon{width:48px;height:48px;flex:none}.abyss-head h2{margin:0 0 4px;color:#c9a8ff}.abyss-head p{margin:0 0 6px;font-size:13px}.abyss-card h3{margin:8px 0 4px;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.abyss-card ol{margin:0;padding-left:0;list-style:none;display:flex;flex-wrap:wrap;gap:4px 16px;font-size:12px;color:var(--muted)}.abyss-go{display:flex;gap:6px;align-items:center}.siege-quiet{font-size:12px}.titles{margin:-4px 0 8px;color:#ffcf6e;font-size:13px;font-weight:600}.command-toggle{display:block;font-size:13px;margin:6px 0;cursor:pointer}.command-bar{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:4px 0}.command-bar button{padding:8px 6px;font-weight:600}.command-bar button.queued{outline:2px solid var(--accent)}.command-bar button.urgent:not(.queued){border-color:#ff6a4a;animation:urgent .6s ease-in-out infinite alternate}@keyframes urgent{to{box-shadow:0 0 14px #ff6a4ab3}}.command-status{display:block;color:var(--muted)}.command-status.urgent{color:#ff8a6a;font-weight:700}.stage .telegraph{position:absolute;left:50%;top:10px;transform:translate(-50%);font-weight:800;font-size:18px;color:#ff8a6a;text-shadow:0 0 10px #000,0 2px 0 #000;animation:urgent-text .6s ease-in-out infinite alternate;pointer-events:none}@keyframes urgent-text{to{transform:translate(-50%) scale(1.12)}}.actor.you{position:relative}.actor .pet-sprite{position:absolute;left:6px;top:46px;width:32px;height:32px;image-rendering:pixelated;animation:bob 2.4s ease-in-out infinite;pointer-events:none}.pet-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-bottom:14px}.pet-card{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px;border:1px solid var(--border);border-radius:8px;text-align:center;background:#00000026}.pet-card .pet-sprite{width:64px;height:64px;image-rendering:pixelated}.pet-card.active{border-color:#f0c94a;box-shadow:0 0 10px #f0c94a40}.pet-card.locked{opacity:.55}.pet-card small{font-size:11px;line-height:1.3}.pet-unknown{width:64px;height:64px;display:grid;place-items:center;font-size:28px;color:var(--muted);border:1px dashed var(--border);border-radius:50%}.achievement{padding:6px 0;border-bottom:1px solid var(--border)}.achievement.done strong{color:#f0c94a}.achievement-head{display:flex;justify-content:space-between;gap:8px}.achievement .bar{margin-top:4px}.achievement-reward{display:inline-block;margin:2px 8px 0 0;font-size:11px;color:#f0c94a}.loadout{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap}.loadout-side{flex:1 1 280px;min-width:0}.loadout-side h3{margin:10px 0 4px}.doll-frame{position:relative;flex:none;padding:14px;border-radius:10px;background:radial-gradient(circle at 50% 40%,#3a3226,#1a1611 70%);border:2px solid #5a4630;box-shadow:inset 0 0 0 2px #0e0b08,inset 0 0 24px #000000b3,0 6px 16px #00000080}.doll{position:relative;z-index:1;display:grid;gap:10px 22px;grid-template-columns:repeat(3,58px);grid-template-rows:repeat(4,58px);grid-template-areas:". head ." "cloak neck ." "weapon armor shield" "ring belt ."}.doll-frame .doll-hero{position:absolute;z-index:0;left:50%;top:50%;margin:0;transform:translate(-50%,-54%);opacity:.2;filter:grayscale(.4);pointer-events:none;--cell: 330px}.doll-slot,.bank-slot{position:relative;display:grid;place-items:center;cursor:pointer;border-radius:6px;background:linear-gradient(#2a241c,#1b1712);border:2px solid #4a3c2a;box-shadow:inset 0 2px 4px #0009,inset 0 -1px #ffdca00f}.doll-slot:hover,.bank-slot:hover{border-color:#8a6a3a}.doll-slot.selected,.bank-slot.selected{border-color:#f0c94a;box-shadow:0 0 0 1px #f0c94a,inset 0 2px 4px #0009}.doll-slot .icon{width:40px;height:40px}.doll-slot .slot-ghost{opacity:.18}.doll-up{position:absolute;top:1px;right:4px;font-size:12px;color:#7fd45a;text-shadow:0 1px 2px #000}.rarity-uncommon{border-color:#3f8a3a}.rarity-rare{border-color:#3a6ac8}.rarity-very-rare{border-color:#8a4ac8}.rarity-legendary{border-color:#d08a2a}.doll-stats{margin-top:0}.inventory li.bank-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(44px,1fr));gap:4px;padding:6px 0;border-bottom:none}.bank-slot{aspect-ratio:1}.bank-slot .icon{width:70%;height:70%}.bank-slot .stack{position:absolute;right:3px;bottom:1px;font-size:11px;font-weight:700;color:#ffe08a;text-shadow:1px 1px 0 #000,-1px -1px 0 #000,1px -1px 0 #000,-1px 1px 0 #000}.bank-slot .worn-badge{position:absolute;left:3px;top:1px;font-size:9px;font-weight:700;color:#9ad0ff;text-shadow:1px 1px 0 #000}.inventory li.bank-detail{display:flex;flex-direction:column;align-items:stretch;gap:3px;margin-top:6px;padding:8px;border:1px solid #5a4630;border-radius:6px;background:#00000040}.bank-detail-head{display:flex;align-items:center;gap:6px;font-weight:600}.bank-detail-head .qty{margin-left:auto;white-space:nowrap}.bank-detail .item-buttons{margin:4px 0 0;flex-wrap:wrap}.daily-dialog{width:min(560px,calc(100vw - 32px))}.daily-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:10px 0 14px}.daily-day{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 6px;text-align:center;border-radius:8px;border:2px solid #4a3c2a;background:linear-gradient(#2a241c,#1b1712)}.daily-day span{font-size:22px}.daily-day small{font-size:11px;color:var(--muted);line-height:1.25}.daily-day.big{grid-column:span 2;border-color:#8a4ac8}.daily-day.today{border-color:#f0c94a;box-shadow:0 0 12px #f0c94a59;animation:daily-pulse 1.6s ease-in-out infinite}.daily-day.done{opacity:.45}.daily-day.done span:after{content:" ✓";font-size:14px;color:#7fd45a}@keyframes daily-pulse{50%{box-shadow:0 0 20px #f0c94a99}}.reduce-motion .daily-day.today{animation:none}#daily-toggle.ready{animation:daily-pulse 1.6s ease-in-out infinite;border-radius:6px}#chat-form{display:flex;gap:6px}#chat-channel{flex:none}#chat-log .tag{color:#9ad0ff}#chat-log .channel{color:#7fd45a}#chat-log .guild{color:#c8f0b0}.guild-create{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0 12px}.guild-create input{flex:1 1 160px}.guild-create .guild-tag-input{flex:0 0 70px;text-transform:uppercase}.guild-row{display:flex;align-items:center;gap:10px;padding:6px 0;border-bottom:1px solid var(--border)}.guild-row>span:first-child{flex:1 1 auto;min-width:0}.guild-goal{margin:8px 0 12px}.guild-tiers{display:flex;flex-direction:column;gap:2px;font-size:12px}.guild-tiers .reached{color:#7fd45a}@media(max-width:800px){.game{grid-template-columns:minmax(0,1fr);grid-template-areas:"skills" "actions" "inventory" "chat";gap:8px;padding:8px}.game>.panel{min-width:0}.panel.skills{position:sticky;top:0;z-index:30;padding:6px 8px 4px;overflow:visible;box-shadow:0 6px 14px #00000073}.skills .panel-head{flex-wrap:nowrap;margin:0 0 4px;font-size:14px}#nav{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding-bottom:2px}#nav::-webkit-scrollbar{display:none}#nav h3{display:none}#nav li{flex:none;flex-direction:column;align-items:center;justify-content:center;gap:1px;min-width:64px;padding:5px 6px;font-size:11px;text-align:center}#nav li>span:first-child{display:flex;flex-direction:column;align-items:center;gap:2px;white-space:nowrap}#nav li .icon{width:22px;height:22px;margin:0}#nav li .lvl{font-size:10px}#nav li.busy:after{position:absolute;margin:0;transform:translate(22px,-14px);font-size:9px}#nav li{position:relative}.leaderboard-box{display:none}.inventory h2{cursor:pointer;margin:0}.inventory h2:after{content:" ▾";color:var(--muted)}.inventory.open h2:after{content:" ▴"}.inventory:not(.open) #inventory{display:none}.chat{height:auto}#chat-log{max-height:130px}#toasts{left:12px;right:12px;bottom:12px}.siege-row{flex-wrap:wrap}.abyss-go{margin-left:auto}.siege-head p,.abyss-head p{font-size:12px}}.away-dialog{width:min(520px,calc(100vw - 32px))}.away-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px;margin:10px 0}.away-tile{display:flex;flex-direction:column;align-items:center;padding:8px;border-radius:8px;border:1px solid #4a3c2a;background:linear-gradient(#2a241c,#1b1712)}.away-tile b{font-size:20px;color:#ffd98a}.away-tile small{color:var(--muted);font-size:11px}.away-skills{display:flex;flex-wrap:wrap;gap:4px 14px;margin:8px 0;font-size:13px}.away-skill .icon{width:18px;height:18px;color:var(--accent);vertical-align:-4px}.away-items{display:grid;grid-template-columns:repeat(auto-fill,44px);gap:4px;margin-bottom:10px}.away-items .bank-slot{width:44px;height:44px}.bar.paragon>div{background:linear-gradient(90deg,#8a4ac8,#d08a2a)}.rank-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}.rank-board{border:1px solid var(--border);border-radius:8px;padding:10px 12px;background:#00000026}.rank-board h3{margin:0;color:#ffd98a}.rank-board ol{list-style:none;margin:8px 0 0;padding:0}.rank-board li{display:flex;gap:8px;align-items:baseline;padding:3px 0;border-bottom:1px solid #2e2a22}.rank-board li.me,.rank-board li.me .who{color:#ffd98a;font-weight:600}.rank-n{width:22px;color:var(--muted);text-align:right}.rank-board .who{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rank-v{color:var(--accent);white-space:nowrap}.rank-board li:nth-child(1) .rank-n{color:#f0c94a}.rank-board li:nth-child(2) .rank-n{color:#c8d0d8}.rank-board li:nth-child(3) .rank-n{color:#d08a4a}.who.clickable{cursor:pointer}.who.clickable:hover{text-decoration:underline}.profile-dialog{width:min(480px,calc(100vw - 32px))}.profile-head{display:flex;align-items:center;gap:12px}.profile-head h2{margin:0}.profile-head p{margin:2px 0 0}.profile-head .pet-sprite{margin-left:auto;width:48px;height:48px;image-rendering:pixelated}.profile-dialog .titles{color:#f0c94a;font-size:13px}.reconnect{position:fixed;top:0;left:50%;transform:translate(-50%);z-index:100;padding:6px 16px;border-radius:0 0 8px 8px;background:#6b2a1a;color:#ffe0c8;border:1px solid var(--bad);border-top:none;font-size:13px;animation:daily-pulse 1.6s ease-in-out infinite}.merchant{border:1px solid #5a4a2a;border-radius:8px;padding:8px 10px;margin-bottom:12px;background:linear-gradient(180deg,rgba(120,80,30,.18),transparent)}.merchant h3{margin:0 0 4px;color:var(--accent)}.merchant.locked{opacity:.6}.merchant li.sold{opacity:.55}.shop-filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:6px;font-size:13px}.shop-tabs{display:flex;flex-wrap:wrap;gap:4px}.shop-tabs button{padding:2px 10px;font-size:12px}.shop-tabs button.active{border-color:var(--accent);color:var(--accent)}.cmp{font-size:11px;padding:0 6px;border-radius:8px;border:1px solid currentColor}.cmp-better{color:#7fd17a}.cmp-worse{color:#e07a6a}.cmp-same{color:var(--muted)}.cmp-cannot{color:#a08a6a;opacity:.8}.new-tag{margin-left:6px;font-size:10px;text-transform:uppercase;color:#ffcf5a;border:1px solid #ffcf5a;border-radius:6px;padding:0 4px}.market-sell{border:1px solid #2e2a22;border-radius:8px;padding:8px 10px;margin-bottom:10px}.market-sell h3{margin:0 0 6px}.market-sell-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.market-sell-row select{flex:1 1 200px;min-width:0}.market-qty{width:80px}.market-price{width:110px}.market-search{flex:1 1 160px;min-width:0}.gear-actions{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
