@font-face{font-family:Pixelify Sans;font-style:normal;font-weight:400 700;font-display:swap;src:url(../media/99c6cdb74b1a9f21-s.3-72worm-ib39.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Pixelify Sans;font-style:normal;font-weight:400 700;font-display:swap;src:url(../media/9b2952c75e1b82c6-s.3_mjd9z78cbbb.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Pixelify Sans;font-style:normal;font-weight:400 700;font-display:swap;src:url(../media/01d67e7cc17e7674-s.p.0wyelkczeev99.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Pixelify Sans Fallback;src:local(Arial);ascent-override:81.7%;descent-override:24.87%;line-gap-override:0.0%;size-adjust:112.61%}.pixelify_sans_c4b70e32-module__NHBfVG__className{font-family:Pixelify Sans,Pixelify Sans Fallback;font-style:normal}.pixelify_sans_c4b70e32-module__NHBfVG__variable{--font-display:"Pixelify Sans", "Pixelify Sans Fallback"}
@font-face{font-family:Silkscreen;font-style:normal;font-weight:700;font-display:swap;src:url(../media/9a82a02b3825653d-s.28_7y_h231w8p.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Silkscreen;font-style:normal;font-weight:700;font-display:swap;src:url(../media/8ec783ae88469012-s.p.3owr7cxy7kxtq.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Silkscreen Fallback;src:local(Arial);ascent-override:68.84%;descent-override:16.71%;line-gap-override:0.0%;size-adjust:149.62%}.silkscreen_5a6cb1c-module__oDKs-q__className{font-family:Silkscreen,Silkscreen Fallback;font-style:normal;font-weight:700}.silkscreen_5a6cb1c-module__oDKs-q__variable{--font-logo:"Silkscreen", "Silkscreen Fallback"}
@font-face{font-family:VT323;font-style:normal;font-weight:400;font-display:swap;src:url(../media/42b07301cbfb88de-s.3fm2o_8g5wbt2.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:VT323;font-style:normal;font-weight:400;font-display:swap;src:url(../media/674d141a92451548-s.2t0y5ugd5ycxx.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:VT323;font-style:normal;font-weight:400;font-display:swap;src:url(../media/0c8c4ded07fff55c-s.p.0bh8ttrlmx6iv.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:VT323 Fallback;src:local(Arial);ascent-override:89.16%;descent-override:22.29%;line-gap-override:0.0%;size-adjust:89.73%}.vt323_345ab9a4-module__PrkGka__className{font-family:VT323,VT323 Fallback;font-style:normal;font-weight:400}.vt323_345ab9a4-module__PrkGka__variable{--font-body:"VT323", "VT323 Fallback"}
:root{--night:#0d1024;--navy:#1b2150;--navy-2:#2a3270;--ink:#1a0f14;--parch:#f3e6c4;--parch-2:#e6d2a3;--parch-edge:#b98f55;--gold:#f2b94b;--gold-2:#c98a26;--orange:#e8892c;--text:#2b1a14;--muted:#7a5c44;--px:4px}*{box-sizing:border-box}html,body{height:100%;margin:0}body{background:var(--night);color:var(--parch);font-family:var(--font-body), ui-monospace, monospace;-webkit-font-smoothing:none;font-size:22px;line-height:1.15;overflow-x:hidden}button{font:inherit;color:inherit;cursor:pointer}img{image-rendering:pixelated}.sr-only{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}:focus-visible{outline:3px dashed var(--gold);outline-offset:3px}.game{isolation:isolate;flex-direction:column;min-height:100dvh;display:flex;position:relative}.scene{z-index:-2;image-rendering:pixelated;background:url(/scenes/spell-shop.webp) 50%/cover no-repeat;position:fixed;inset:0}.scene:after{content:"";background:linear-gradient(#0d10248c,#0d1024bf);transition:background .6s;position:absolute;inset:0}.game[data-screen=title] .scene:after{background:radial-gradient(at 50% 60%,#0d102459,#0d1024eb 75%)}.is-lite .scene{background-image:url(/scenes/spell-shop-lite.webp)}.motes{z-index:-1;pointer-events:none;background-image:radial-gradient(2px 2px at 10% 20%, var(--gold), transparent), radial-gradient(2px 2px at 30% 70%, #fff6d5, transparent), radial-gradient(3px 3px at 55% 35%, var(--gold), transparent), radial-gradient(2px 2px at 75% 80%, #fff6d5, transparent), radial-gradient(2px 2px at 90% 15%, var(--gold), transparent);opacity:.7;background-size:420px 420px;animation:24s linear infinite drift;position:fixed;inset:-50% 0 0}@keyframes drift{to{transform:translateY(420px)}}.chonk{--s:3;width:calc(67px * var(--s));height:calc(95px * var(--s));background:url(/sprites/chonk-idle.png) 0 0 / calc(268px * var(--s)) 100% no-repeat;image-rendering:pixelated;filter:drop-shadow(0 calc(2px * var(--s)) 0 #00000059);animation:1s steps(4,end) infinite idle}@keyframes idle{to{background-position-x:calc(-268px * var(--s))}}.panel{background:var(--parch);color:var(--text);border:var(--px) solid var(--ink);box-shadow:inset 0 0 0 var(--px) var(--parch-2), inset 0 0 0 calc(var(--px) * 2) var(--parch-edge), 0 var(--px) 0 var(--ink), 0 calc(var(--px) * 3) 0 #00000059;clip-path:polygon(var(--px) 0, calc(100% - var(--px)) 0, calc(100% - var(--px)) var(--px), 100% var(--px), 100% calc(100% - var(--px)), calc(100% - var(--px)) calc(100% - var(--px)), calc(100% - var(--px)) 100%, var(--px) 100%, var(--px) calc(100% - var(--px)), 0 calc(100% - var(--px)), 0 var(--px), var(--px) var(--px));padding:20px;position:relative}.panel-title{background:var(--navy);color:var(--gold);font-family:var(--font-display), sans-serif;letter-spacing:.04em;border-bottom:var(--px) solid var(--ink);margin:-20px -20px 16px;padding:10px 20px 8px;font-size:22px}.btn{font-family:var(--font-display), sans-serif;background:var(--orange);color:var(--ink);border:var(--px) solid var(--ink);box-shadow:inset 0 calc(var(--px) * -1) 0 #b0601a, inset 0 var(--px) 0 #f8b46a;padding:10px 18px;font-size:18px;transition:transform 80ms}.btn:hover{background:#f29a40}.btn:active{box-shadow:inset 0 var(--px) 0 #b0601a;transform:translateY(2px)}.btn:disabled{color:#5d4c3a;cursor:not-allowed;box-shadow:none;background:#b8a888}.btn--wide{width:100%}.title-screen{text-align:center;background:0 0;border:0;flex:1;align-content:center;place-items:center;gap:18px;padding:40px 16px;display:grid}.title-logo{font-family:var(--font-logo), var(--font-display), sans-serif;letter-spacing:.08em;color:var(--gold);text-shadow:0 5px 0 var(--gold-2), 0 9px 0 var(--ink), 0 0 40px #f2b94b59;margin:0 -.08em 0 0;font-size:clamp(52px,12vw,124px);font-weight:700;line-height:1}.title-logo-small{letter-spacing:.3em;color:var(--parch);text-shadow:0 3px 0 var(--ink);font-size:.2em;font-weight:500;font-family:var(--font-display), sans-serif;margin-bottom:.4em;display:block}.title-press{font-family:var(--font-display), sans-serif;color:var(--parch);text-shadow:0 3px 0 var(--ink);font-size:26px;animation:1.1s steps(2,jump-none) infinite blink}@keyframes blink{50%{opacity:0}}.title-foot{color:#f3e6c499;font-size:18px;position:fixed;bottom:14px;left:0;right:0}.hud{justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex}.hud-title{font-family:var(--font-display), sans-serif;color:var(--gold);text-shadow:0 3px 0 var(--ink);font-size:28px}.hud-back,.hud-satchel{background:var(--navy);color:var(--parch);border:var(--px) solid var(--ink);font-family:var(--font-display), sans-serif;box-shadow:inset 0 var(--px) 0 var(--navy-2);padding:6px 14px;font-size:18px}.hud-back:hover,.hud-satchel:hover{background:var(--navy-2)}.hud-count{background:var(--orange);min-width:1.6em;color:var(--ink);text-align:center;margin-left:6px;padding:0 4px;display:inline-block}.stage{flex:1;place-items:center;padding:8px 16px 32px;display:grid}.menu-wrap{flex-wrap:wrap;justify-content:center;align-items:flex-end;gap:24px;display:flex}.menu{flex-direction:column;gap:4px;width:min(420px,100%);display:flex}.menu-item{text-align:left;color:var(--text);background:0 0;border:0;grid-template-columns:20px 1fr;padding:10px 8px;display:grid}.menu-cursor{color:var(--orange);opacity:0;grid-row:span 2;padding-top:4px;font-size:16px}.menu-label{font-family:var(--font-display), sans-serif;font-size:26px}.menu-hint{color:var(--muted);font-size:20px}.menu-item:hover,.menu-item:focus-visible{background:var(--parch-2);outline:none}.menu-item:hover .menu-cursor,.menu-item:focus-visible .menu-cursor{opacity:1;animation:.6s steps(2,end) infinite nudge}@keyframes nudge{50%{transform:translate(3px)}}.menu-lite{border:2px dashed var(--parch-edge);color:var(--muted);background:0 0;align-self:flex-start;margin-top:10px;padding:4px 10px;font-size:18px}.shop{grid-template-columns:minmax(280px,400px) 1fr;align-items:center;gap:24px;width:min(1240px,100%);display:grid}.shop--open{grid-template-columns:minmax(260px,360px) minmax(240px,1fr) minmax(300px,400px)}.shop-grid{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.slot{aspect-ratio:1;border:var(--px) solid var(--parch-edge);box-shadow:inset 0 calc(var(--px) * -1) 0 var(--parch-2);background:#fbf3dd;place-items:center;padding:10px;transition:transform .12s;display:grid;position:relative}.slot:hover{border-color:var(--gold-2);transform:translateY(-2px)}.slot--active{border-color:var(--orange);box-shadow:0 0 0 2px var(--ink), inset 0 0 0 2px #fff;background:radial-gradient(circle,#fff6dc 0%,#f6dfa6 100%)}.slot--empty{box-shadow:none;background:#d9c79d;border-color:#c4ad7c}.slot-lock{font-family:var(--font-display), sans-serif;color:#b39a68;font-size:22px}.slot-icon{object-fit:contain;width:78%;height:78%}.slot-icon--pixel{image-rendering:pixelated}.shopkeeper{flex-direction:column;align-items:center;gap:12px;animation:.2s fade;display:flex}.shopkeeper-line{width:min(460px,100%)}.shopkeeper-line .dialog-text{min-height:0;margin-bottom:0}.turntable{perspective:1400px;cursor:grab;touch-action:pan-y;-webkit-user-select:none;user-select:none;place-items:center;height:min(62vh,560px);animation:.2s fade;display:grid;position:relative}.turntable:active{cursor:grabbing}.turntable:before{content:"";pointer-events:none;background:radial-gradient(closest-side,#ffd68c61,#ffbe641f 60%,#0000);position:absolute;inset:4% 0 0}.is-lite .turntable:before{background:radial-gradient(closest-side,#ffd68c4d,#0000)}.turntable-spin{width:100%;height:88%;transform-style:preserve-3d;will-change:transform;position:relative}.turntable-face{object-fit:contain;backface-visibility:hidden;filter:drop-shadow(0 10px 14px #00000073);width:100%;height:100%;position:absolute;inset:0}.turntable-face--back{transform:rotateY(180deg)}.turntable-shadow{background:radial-gradient(closest-side,#0000008c,#0000);border-radius:50%;width:50%;height:18px;position:absolute;bottom:2%;left:25%}.slot-tag{background:var(--navy);color:var(--gold);padding:2px 4px;font-size:14px;line-height:1;position:absolute;top:3px;left:3px}.slot-stars{color:var(--gold-2);letter-spacing:1px;font-size:14px;position:absolute;bottom:2px;left:4px}.shop-foot{color:var(--muted);margin:14px 0 0;font-size:18px}.shop-detail{animation:.22s cubic-bezier(.2,.8,.2,1) slide}.detail-name{font-family:var(--font-display), sans-serif;margin:0;font-size:30px;line-height:1}.detail-stars{color:var(--gold-2);letter-spacing:2px;margin:2px 0 0}.detail-lore{margin:16px 0}.detail-stats{border:2px solid var(--parch-edge);background:#fbf3dd;gap:4px;margin:0 0 16px;padding:10px 12px;list-style:none;display:grid}.detail-stats li:before{content:"✦ ";color:var(--gold-2)}.swatch{align-items:center;gap:6px;display:inline-flex}.swatch-dot{border:2px solid var(--ink);width:14px;height:14px}.detail-sizes{flex-wrap:wrap;gap:8px;margin-bottom:18px;display:flex}.size{min-width:48px;color:var(--text);border:var(--px) solid var(--parch-edge);background:#fbf3dd;padding:6px 10px}.size--on{background:var(--navy);color:var(--gold);border-color:var(--ink)}.detail-buy{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.detail-price{font-family:var(--font-body), monospace;align-items:center;gap:8px;font-size:34px;display:inline-flex}.coin{background:var(--gold);width:18px;height:18px;box-shadow:inset -3px -3px 0 var(--gold-2), 0 0 0 2px var(--ink);clip-path:polygon(25% 0,75% 0,100% 25%,100% 75%,75% 100%,25% 100%,0 75%,0 25%);display:inline-block}.ask{align-items:flex-end;gap:12px;width:min(900px,100%);display:flex}.ask-chonk{flex:none}.dialog{cursor:default;flex:1}.dialog-name{background:var(--navy);color:var(--gold);font-family:var(--font-display), sans-serif;border:var(--px) solid var(--ink);margin:0;padding:2px 12px;display:inline-block}.dialog-text{min-height:4.6em;margin:14px 0 16px;font-size:26px}.dialog-caret{animation:.7s steps(2,jump-none) infinite blink}.dialog-choices{gap:4px;display:grid}.choice{text-align:left;color:var(--text);background:0 0;border:0;padding:6px 8px;font-size:22px}.choice:hover,.choice:focus-visible{background:var(--parch-2);color:var(--ink);outline:none}.choice--soft{color:var(--muted)}.quests{width:min(640px,100%)}.quest-list{gap:12px;margin:0;padding:0;list-style:none;display:grid}.quest{border:var(--px) solid var(--parch-edge);background:#fbf3dd;padding:12px 14px}.quest-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.quest h3{font-family:var(--font-display), sans-serif;margin:0;font-size:24px}.quest p{margin:6px 0 0}.quest-badge{background:var(--navy);color:var(--gold);padding:2px 8px;font-size:16px}.quest--live .quest-badge{background:var(--orange);color:var(--ink)}.quest--locked{opacity:.65}.quest--locked .quest-badge{color:var(--parch);background:#8d7b5e}.quest-reward{color:var(--gold-2)}.quest-form{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.quest-form input{min-width:180px;font:inherit;color:var(--text);border:var(--px) solid var(--parch-edge);background:#fff;flex:1;padding:6px 10px}.quest-done{color:var(--navy-2)}.satchel-backdrop{z-index:10;background:#0d102499;justify-content:flex-end;padding:16px;animation:.16s fade;display:flex;position:fixed;inset:0}@keyframes fade{0%{opacity:0}}.satchel{align-self:flex-start;width:min(400px,100%);animation:.22s cubic-bezier(.2,.8,.2,1) slide}@keyframes slide{0%{opacity:0;transform:translate(24px)}}.satchel-head{justify-content:space-between;align-items:flex-start;display:flex}.satchel-head .panel-title{flex:1}.icon-btn{color:var(--gold);background:0 0;border:0;font-size:22px;position:absolute;top:6px;right:12px}.satchel-empty{color:var(--muted)}.satchel-error{color:#a3352b;margin:0 0 10px}.satchel-lines{gap:10px;margin:0;padding:0;list-style:none;display:grid}.satchel-line{grid-template-columns:52px 1fr auto;align-items:center;gap:10px;display:grid}.satchel-line img{object-fit:contain;border:2px solid var(--parch-edge);background:#fbf3dd;width:52px;height:52px}.satchel-line p{margin:0}.muted{color:var(--muted)}.qty{align-items:center;gap:6px;display:flex}.qty button{background:var(--parch-2);border:2px solid var(--parch-edge);width:28px;height:28px;color:var(--text);padding:0}.satchel-foot{border-top:2px dashed var(--parch-edge);justify-content:space-between;align-items:center;margin:16px 0 12px;padding-top:12px;display:flex}@media (max-width:1000px) and (min-width:761px){.shop--open{grid-template-columns:minmax(240px,320px) 1fr}.shop--open .turntable{grid-area:1/2}.shop--open .shop-detail{grid-column:1/-1}}@media (max-width:760px){body{font-size:20px}.shop,.shop--open{grid-template-columns:1fr}.turntable{height:52vh}.shopkeeper-chonk{--s:2.5!important}.menu-chonk{--s:2!important}.ask{flex-direction:column;align-items:center}.ask-chonk{margin-bottom:-8px;--s:2.5!important}.dialog{width:100%}.dialog-text{font-size:22px}.title-chonk{--s:3!important}}.is-lite .chonk{filter:none;animation-duration:1.6s}.is-lite .slot,.is-lite .btn{transition:none}@media (prefers-reduced-motion:reduce){.chonk,.title-press,.motes,.dialog-caret,.menu-cursor{animation:none!important}}
