*{box-sizing:border-box}html{color-scheme:dark}body{margin:0;background:#111523;color:#e5e6f0;font-family:'Courier New',monospace;min-height:100dvh}button{font:700 12px 'Courier New',monospace;cursor:pointer;color:inherit;background:#242b40;border:1px solid #404962;border-radius:4px;touch-action:manipulation}button:hover{background:#3a4560}button:focus-visible,summary:focus-visible{outline:3px solid #ffe17b;outline-offset:3px}main{max-width:1100px;margin:auto;padding:18px 24px 24px}header{display:flex;justify-content:space-between;align-items:center;gap:15px;margin:0 auto 14px;max-width:960px}header>div{display:flex;align-items:baseline;gap:14px}header b{font-size:18px;letter-spacing:-.7px}header span{font-size:12px;letter-spacing:3px;color:#aab6d8}nav{display:flex;gap:7px}nav button{padding:9px 12px}#cabinet{position:relative;aspect-ratio:4/3;max-width:min(960px,calc((100dvh - 195px) * 4 / 3));margin:auto;background:#000;border:4px solid #030510;box-shadow:0 0 0 1px #4b5370,0 16px 50px #0008}canvas{display:block;width:100%;height:100%;image-rendering:pixelated;image-rendering:crisp-edges;outline:none;touch-action:none}#overlay{position:absolute;inset:0;background:#121f47c4;display:grid;place-items:center;text-align:center}#overlay.hidden{display:none}.menu{width:92%;text-shadow:2px 2px #050713}.edition{font-size:clamp(9px,1.2vw,13px);letter-spacing:1px;color:#bddaf4}h1{font-size:clamp(38px,6vw,76px);font-weight:900;line-height:.88;margin:24px 0 16px;color:#ffd66c;text-shadow:3px 3px #9c4936,6px 6px #151b32;letter-spacing:-4px}h1 span{display:block;color:#fff8dc}.ribbon{font-size:clamp(13px,2vw,21px);color:#b6f382;margin-bottom:20px}.menu p{font-size:clamp(12px,1.7vw,17px);line-height:1.6;margin:15px 0 20px}.menu button{font-size:clamp(14px,2vw,21px);color:#1d2840;background:#fff0b0;border:3px solid #fff6d4;border-radius:0;padding:12px 25px;box-shadow:4px 4px #0a1027;letter-spacing:2px}.menu button:hover{background:#c1ee94}.menu #menuHint{font-size:clamp(10px,1.1vw,13px);color:#c0cbea;margin:22px 0 0}#toast{position:absolute;bottom:14%;left:50%;transform:translateX(-50%);background:#142142ec;color:#ffe591;border:2px solid #93a4c9;padding:12px 18px;white-space:nowrap;font-size:14px;text-align:center;opacity:0;transition:opacity .15s;pointer-events:none}#toast.show{opacity:1}.information{display:flex;justify-content:space-between;gap:20px;align-items:center;max-width:960px;margin:14px auto 0}.information p{font:14px/1.4 Arial,sans-serif;color:#abb9d1;margin:0}.information button{flex-shrink:0;padding:9px 12px;font-size:11px}footer{max-width:960px;margin:17px auto 0;display:flex;justify-content:space-between;gap:16px;color:#8795af;font-size:10px;line-height:1.9}kbd{background:#252d42;padding:3px 5px;color:#becbe2;border-radius:2px;font-family:inherit;margin-left:8px}kbd:first-child{margin:0}details{max-width:960px;margin:14px auto 0;color:#74829b;font-size:12px}details p{font:14px/1.55 Arial,sans-serif}details a{color:#b7ccea}.touch{display:none;max-width:960px;margin:15px auto 0;align-items:center;justify-content:space-between;touch-action:none;user-select:none;-webkit-user-select:none}.dpad{display:flex;gap:8px}.dpad button{height:65px;width:65px;font-size:23px}.face{display:flex;gap:9px;align-items:center}.face button{height:64px;width:64px;border-radius:50%;font:bold 22px Arial;box-shadow:0 4px #040713;touch-action:none}.face small{display:block;font:9px 'Courier New';margin-top:3px}.face .run{background:#46895a}.face .spin{background:#b75a63;transform:translateY(-13px)}.face .jump{background:#c29b3f}.touch button.pressed{filter:brightness(1.4);box-shadow:none}@media(pointer:coarse){.touch{display:flex}footer{display:none}#cabinet{max-width:960px}}@media(max-width:600px){main{padding:12px 10px}header>div{display:block}header b{font-size:14px}header span{display:block;font-size:9px;margin-top:3px}nav button{padding:8px;font-size:10px}h1{margin:16px 0 12px}.ribbon{margin-bottom:12px}.menu p{margin:10px 0 14px}.menu #menuHint{font-size:9px;margin-top:16px}.menu button{padding:10px 17px}.information{gap:10px}.information p{font-size:12px}.information button{font-size:9px;padding:8px}.face button{height:56px;width:56px}.dpad button{width:53px;height:61px}.face{gap:6px}#toast{font-size:11px;padding:8px 12px}details{font-size:11px}}@media(max-height:550px) and (orientation:landscape){main{padding:0}header{position:fixed;right:6px;top:5px;z-index:9}header>div{display:none}nav button{font-size:9px;padding:6px;background:#18243ac9}#cabinet{max-width:calc(100dvh * 4 / 3);height:100dvh;border:0}.information,footer,details{display:none}.touch{position:fixed;inset:auto 12px 14px;margin:0;max-width:none;pointer-events:none;z-index:8}.touch button{pointer-events:auto;opacity:.65}.menu h1{font-size:46px;margin:16px 0 10px}.menu p{font-size:13px;margin:10px 0}.edition{font-size:10px}.ribbon{font-size:14px;margin-bottom:12px}.menu #menuHint{margin-top:13px}.menu button{font-size:15px;padding:10px 18px}} 

.smw-title{width: min(90%,424px);height:auto;image-rendering:pixelated;display:block;margin:auto}header b{font-size:15px}#runStats{color:#d1d9ef;white-space:nowrap}footer{flex-wrap:wrap} .menu h1:has(.smw-title){margin:18px 0 16px;text-shadow:none}@media(max-width:600px){header b{font-size:12px}.smw-title{width:75%}}

body{background:#191425}header b{font-size:17px;color:#ffe8a6}header span{font-size:11px;letter-spacing:1px}.menu h1{font-size:clamp(28px,5vw,64px);letter-spacing:-2px;line-height:1;margin:14px 0 10px;color:#ffcb73}.menu h1 span{font-size:.60em;letter-spacing:-1px;color:#b9ed80;margin-top:5px}.ribbon{font-size:clamp(10px,1.3vw,15px);margin:8px 0;color:#edc6ff}.edition{font-size:12px}#overlay{background:#211733da}.menu p{margin:10px 0;font-size:14px}.menu #menuHint{margin-top:14px}#characterSelect{display:flex;justify-content:center;gap:12px;margin:14px 0}#characterSelect[hidden]{display:none}#characterSelect button{display:flex;align-items:center;gap:9px;padding:6px 12px;background:#292439;color:#c6bfd3;border:2px solid #655776;box-shadow:none;font-size:12px;letter-spacing:0}#characterSelect button[aria-pressed=true]{border-color:#ffdf7e;color:#fff5d1;background:#484026}.portrait{display:block;width:40px;height:50px;background:url(assets/red-reference.png) 0 0/160px 100px;image-rendering:pixelated}.portrait.green{background-position:0 -50px}.menu>#play{font-size:17px;padding:10px 24px}#toast{font-size:12px;max-width:95%;white-space:normal;bottom:16%}@media(max-width:600px){header b{font-size:13px}header span{font-size:9px}.edition{font-size:9px}.menu h1{margin:6px 0;font-size:32px}.menu p{font-size:11px;margin:6px 0}.ribbon{font-size:9px}#characterSelect{gap:8px;margin:8px 0}#characterSelect button{font-size:9px;padding:3px 6px;gap:5px}.portrait{width:32px;height:40px;background-size:128px 80px}.portrait.green{background-position:0 -40px}.menu>#play{font-size:13px;padding:8px 18px}.menu #menuHint{margin-top:8px;font-size:8px}}@media(max-height:550px) and (orientation:landscape){.menu h1{font-size:30px;margin:4px 0}.portrait{width:32px;height:40px;background-size:128px 80px}.portrait.green{background-position:0 -40px}#characterSelect{margin:6px 0}.menu>#play{padding:6px 16px}.menu p{margin:4px 0}}

.portrait{background-image:url(assets/red-reference.png);background-size:65px 65px;background-position:center 20%;border-radius:5px}.portrait.green{background-image:url(assets/green-reference.png);background-size:65px 65px;background-position:center 20%}

.portrait,.portrait.green{background-image:url(assets/explorer-reference.png);background-size:154px 115px;background-position:51% 51%;}.portrait.green{filter:hue-rotate(75deg)}

canvas.portrait,canvas.portrait.green{width:32px;height:48px;background:none;filter:none;image-rendering:pixelated;}button:disabled{opacity:.6;cursor:wait}
body{background:#1c101f}header b{color:#ffd5af}#cabinet{max-width:min(960px,calc((100dvh - 225px) * 4 / 3));border-color:#190d23}.missionbar{display:flex;justify-content:space-between;gap:12px;max-width:960px;margin:0 auto 10px;font-size:12px;color:#ddc1e4;line-height:1.3}.missionbar #trackName{font-size:11px;color:#b9a1c5}#overlay{background:#20102eea;overflow:auto}.menu{padding:12px 0}.menu h1{font-size:clamp(28px,4.5vw,60px);margin:10px 0}.menu h1 span{font-size:1.25em;line-height:.85;color:#ffb783}.menu p{max-width:590px;margin:10px auto;font-size:14px;line-height:1.45}.ribbon{font-size:12px;letter-spacing:0}#menuText strong{color:#c3fbff}#levelGrid{display:grid;grid-template-columns:1fr 1fr;gap:6px;max-width:560px;margin:12px auto}#levelGrid[hidden]{display:none}#levelGrid button{font-size:11px;letter-spacing:0;padding:10px 6px;box-shadow:none;background:#382441;color:#fce3c7;border:1px solid #89658e}#levelGrid button:disabled{opacity:.4;cursor:default}.information p{color:#dcc1d6}#toast{bottom:10%;font-size:12px;background:#2c183bec;border-color:#cc8c9c}.volume{display:flex;align-items:center;gap:8px;font-size:12px}.volume input{width:95px;accent-color:#e7ad75}.face .fart{background:#728e3b}.face .pee{background:#b99725}.dpad{flex-wrap:wrap;width:128px}.dpad [data-key=down]{height:35px;width:118px;font-size:17px}.face{display:grid;grid-template-columns:repeat(3,52px);gap:8px}.face button{width:52px;height:52px}.face .spin{transform:none}.face .jump{grid-column:3}.face small{font-size:9px}.touch .dpad button{width:55px;height:55px}.touch .dpad [data-key=down]{width:118px;height:30px}.menu h1{letter-spacing:-1px}header nav{flex-wrap:wrap}button:disabled{cursor:default}
@media(max-width:600px){header{gap:8px;align-items:start}header b{font-size:13px}header span{font-size:8px}nav{gap:4px}nav button{font-size:9px;padding:7px}#fullscreen{display:none}.missionbar{display:block;font-size:10px}.missionbar #trackName{display:block;font-size:9px;margin-top:4px}#cabinet{max-width:none}.menu h1{font-size:30px}.menu p{font-size:11px;max-width:92%}.ribbon{font-size:9px}.edition{font-size:9px}.menu{padding:10px 0}#characterSelect{margin:7px 0}.menu #menuHint{font-size:9px;max-width:95%}#levelGrid{gap:4px}#levelGrid button{font-size:9px;padding:7px 3px}.information p{font-size:12px}footer{font-size:10px}.face{grid-template-columns:repeat(3,48px);gap:6px}.face button{width:48px;height:48px}.dpad{width:116px}.touch .dpad button{width:51px;height:53px}.touch .dpad [data-key=down]{width:110px}.touch{margin:11px auto}.information{align-items:flex-start}}
@media(max-height:550px) and (orientation:landscape){.missionbar{display:none}#cabinet{max-width:calc(100dvh * 4 / 3)}.menu h1{font-size:25px}.menu p{font-size:11px;max-width:420px}#characterSelect{margin:5px 0}.portrait{height:32px!important;width:22px!important}.touch .face{grid-template-columns:repeat(3,42px)}.touch .face button{width:42px;height:42px}header{max-width:none}#characterSelect button{font-size:10px}.menu #menuHint{font-size:9px}.ribbon{font-size:9px}}

.enemy-guide{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:20px 0}.enemy-guide>div{display:grid;grid-template-columns:50px 1fr;column-gap:10px;padding:10px;border:1px solid #513752;background:#27172f}.enemy-guide canvas{width:48px;height:48px;grid-row:span 2}.enemy-guide b{font-size:13px;color:#f3d6c6;align-self:end}.enemy-guide span{font:12px/1.4 Arial,sans-serif;color:#bfa8c8}@media(max-width:600px){.enemy-guide{grid-template-columns:1fr 1fr;gap:6px}.enemy-guide>div{grid-template-columns:36px 1fr;padding:6px;column-gap:6px}.enemy-guide canvas{width:34px;height:34px}.enemy-guide b{font-size:11px}.enemy-guide span{font-size:11px}}

/* Death feedback stays above the active landing area. */
#toast.death-toast{top:19%;bottom:auto;padding:8px 14px;max-width:85%;pointer-events:none}

/* Keep every notification above the playfield, clear of jumps and landing cues. */
#toast,#toast.death-toast{top:calc(10.7143% + 8px);bottom:auto;left:50%;max-width:85%;padding:7px 12px;z-index:5;font-size:11px;pointer-events:none}

.menu #titleMusic{display:block;margin:10px auto 0;padding:6px 12px;font-size:11px;letter-spacing:0;background:#382441;color:#fce3c7;border:1px solid #89658e;box-shadow:none}.menu #titleMusic[hidden]{display:none}

/* Keep the original portrait size; allow its hover particles to fly above the card. */
.portrait-stage{position:relative;display:block;flex:none;width:32px;height:48px;pointer-events:none}
.portrait-stage .portrait-fx{position:absolute;left:-100%;top:-100%;width:300%;height:250%;max-width:none;pointer-events:none;z-index:1}
@media(max-height:550px) and (orientation:landscape){.portrait-stage{width:22px;height:32px}}

/* Fullscreen contains only the game, sized to fit without stretching or cropping. */
#cabinet:is(:fullscreen,.is-fullscreen){--play-width:min(100vw,calc(100dvh * 4 / 3));--play-height:min(100dvh,calc(100vw * 3 / 4));width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;box-shadow:none;aspect-ratio:auto;background:#000;display:grid;place-items:center;overflow:hidden}
#cabinet::backdrop{background:#000}
#cabinet:is(:fullscreen,.is-fullscreen)>#game{width:var(--play-width);height:var(--play-height)}
#cabinet:is(:fullscreen,.is-fullscreen)>#overlay{inset:auto;left:50%;top:50%;transform:translate(-50%,-50%);width:var(--play-width);height:var(--play-height)}
#cabinet:is(:fullscreen,.is-fullscreen)>#toast{top:calc((100dvh - var(--play-height)) / 2 + var(--play-height) * .107143 + 8px);max-width:calc(var(--play-width) * .85)}

body.game-fullscreen{overflow:hidden}
body.game-fullscreen main>:not(#cabinet){display:none!important}
#cabinet.is-fullscreen{position:fixed;inset:0;z-index:1000}

/* HUD text uses a screen-resolution backing surface, separate from pixel art. */
#hud{position:absolute;inset:0;margin:auto;width:100%;height:100%;image-rendering:auto;pointer-events:none}
#cabinet:is(:fullscreen,.is-fullscreen)>#hud{width:var(--play-width);height:var(--play-height)}

/* Native screen-resolution output; only legacy terrain uses nearest-neighbor sampling. */
#game,canvas.portrait,canvas.portrait.green,.enemy-guide canvas.hd-sprite{image-rendering:auto}
/* The guide doubles as a preview of each creature's actual animation rig. */
.enemy-guide [data-sprite]:focus-visible{outline:2px solid #ffeaa1;outline-offset:3px}
.enemy-guide [data-sprite]:hover,.enemy-guide [data-sprite]:focus-visible{background:#35203f}

/* Scale every fullscreen menu with the letterboxed playfield, not the window.
   Container units follow both native fullscreen and the expanded fallback. */
#cabinet:is(:fullscreen,.is-fullscreen)>#overlay{container-type:size}
#cabinet:is(:fullscreen,.is-fullscreen) .menu{width:90%;padding:2cqw 0;text-shadow:.2cqw .2cqw #050713}
#cabinet:is(:fullscreen,.is-fullscreen) .edition{font-size:max(.75rem,1.5cqw);letter-spacing:.125cqw}
#cabinet:is(:fullscreen,.is-fullscreen) .menu h1{font-size:max(1.75rem,5.5cqw);line-height:1.05;margin:1.5cqw auto;letter-spacing:-.125cqw;text-shadow:.35cqw .35cqw #9c4936,.65cqw .65cqw #151b32;overflow-wrap:break-word}
#cabinet:is(:fullscreen,.is-fullscreen) .menu h1 span{margin-top:.65cqw;letter-spacing:inherit}
#cabinet:is(:fullscreen,.is-fullscreen) .ribbon{font-size:max(.75rem,1.5cqw);margin:1cqw auto}
#cabinet:is(:fullscreen,.is-fullscreen) .menu p{font-size:max(.875rem,1.8cqw);line-height:1.45;max-width:78cqw;margin:1.5cqw auto}
#cabinet:is(:fullscreen,.is-fullscreen) .menu #menuHint{font-size:max(.75rem,1.5cqw);line-height:1.5;max-width:82cqw;margin:2cqw auto 0}
#cabinet:is(:fullscreen,.is-fullscreen) .menu>#play{font-size:max(1rem,2.2cqw);padding:1.3cqw 3cqw;border-width:.35cqw;letter-spacing:.25cqw;box-shadow:.5cqw .5cqw #0a1027}
#cabinet:is(:fullscreen,.is-fullscreen) #characterSelect{gap:1.5cqw;margin:1.75cqw auto}
#cabinet:is(:fullscreen,.is-fullscreen) #characterSelect button{font-size:max(.75rem,1.5cqw);gap:1cqw;padding:.75cqw 1.5cqw;border-width:.25cqw}
#cabinet:is(:fullscreen,.is-fullscreen) .portrait-stage{width:4cqw;height:6cqw}
#cabinet:is(:fullscreen,.is-fullscreen) canvas.portrait{width:4cqw!important;height:6cqw!important}
#cabinet:is(:fullscreen,.is-fullscreen) #levelGrid{max-width:78cqw;gap:.75cqw;margin:1.5cqw auto}
#cabinet:is(:fullscreen,.is-fullscreen) #levelGrid button{font-size:max(.75rem,1.4cqw);padding:1.25cqw .75cqw}
#cabinet:is(:fullscreen,.is-fullscreen) .menu #titleMusic{font-size:max(.75rem,1.4cqw);padding:.75cqw 1.5cqw;margin:1.25cqw auto 0}

/* Glossy game notifications, anchored below the HUD in both display modes. */
#toast,#toast.death-toast{
 --toast-accent:#d8b1ff;--toast-soft:#aa69f733;
 display:flex;align-items:center;gap:.5em;isolation:isolate;overflow:hidden;
 width:max-content;max-width:85%;padding:.35em .7em .35em .4em;
 border:1px solid #bfa4d78c;border-radius:.8em;
 background:linear-gradient(115deg,#503763f5,#20182ff5 70%);
 color:#fff5e5;font:700 clamp(11px,1.25vw,14px)/1.3 Arial,sans-serif;
 letter-spacing:.025em;text-shadow:0 1px 2px #0008;
 box-shadow:inset 0 1px 0 #ffffff33,inset 0 -2px 0 #120a2688,0 5px 18px #08041166,0 0 12px var(--toast-soft);
 transform:translateX(-50%);transition:opacity .3s ease;
}
#toast[data-tone=success]{--toast-accent:#b0f5c0;--toast-soft:#7ce9a033;border-color:#a4d6b48c;background:linear-gradient(115deg,#304d49f5,#1e2633f5 70%)}
#toast[data-tone=warning]{--toast-accent:#ffd291;--toast-soft:#e8b05c33;border-color:#dbb3878c;background:linear-gradient(115deg,#634532f5,#2e2032f5 70%)}
#toast[data-tone=power]{--toast-accent:#e6b0ff;--toast-soft:#ce6bff44}
#toast[data-tone=death]{--toast-accent:#ffb6c5;--toast-soft:#ff698c33;border-color:#de8d9f8c;background:linear-gradient(115deg,#633047f5,#2d192df5 70%)}
#toast .toast-icon{display:grid;place-items:center;flex:0 0 1.4em;height:1.4em;border:1px solid #ffffff44;border-radius:.48em;background:linear-gradient(145deg,#ffffff33,#ffffff08);color:var(--toast-accent);box-shadow:inset 0 1px #ffffff44;font-size:1em;line-height:1}
#toast .toast-message{min-width:0;overflow-wrap:anywhere;text-align:left}
#toast.show{opacity:1;transform:translateX(-50%)}
#cabinet:is(:fullscreen,.is-fullscreen)>#toast{font-size:clamp(12px,calc(var(--play-width) * .013),18px)}
@media(prefers-reduced-motion:reduce){#toast,#toast.death-toast{transition:opacity .15s;transform:translateX(-50%)}}

/* Short menu copy leaves room for the title, explorer choice and primary action. */
.menu .edition:empty,.menu .ribbon:empty,.menu #menuText:empty,.menu #menuHint:empty,#hint:empty{display:none}
.information:has(#hint:empty){justify-content:flex-end}
.menu #menuText{max-width:36em}

/* Visible title credits use readable links without exposing the full URLs. */
.menu #titleCredits{max-width:95%;margin:14px auto 0;color:#dac9e5;font:14px/1.6 Arial,sans-serif;text-shadow:0 1px 2px #08040d}
#titleCredits a{color:#ffdc9f;text-decoration:underline;text-underline-offset:3px}
#titleCredits a:hover{color:#fff3d5}
#titleCredits a:focus-visible{outline:2px solid #ffe19e;outline-offset:3px;border-radius:2px}
#titleCredits>span:last-child{white-space:nowrap}
.menu #titleCredits[hidden]{display:none}
#cabinet:is(:fullscreen,.is-fullscreen) .menu #titleCredits{font-size:max(.875rem,1.55cqw);margin-top:1.5cqw}
@media(max-width:600px){.menu #titleCredits{font-size:12px;margin-top:9px}#titleCredits .credit-divider{display:block;height:0;overflow:hidden}}

/* Boss cues and transient notifications occupy separate rows. */
#cabinet.boss-hud-active>#toast{top:calc(26.8% + 6px)}
#cabinet.boss-hud-active:is(:fullscreen,.is-fullscreen)>#toast{top:calc((100dvh - var(--play-height)) / 2 + var(--play-height) * .268 + 6px)}

#cabinet.is-paused:has(#overlay.hidden)::after{content:'PAUSED · ESC / ENTER TO RESUME';position:absolute;right:10px;bottom:8px;z-index:4;padding:5px 9px;border-radius:6px;background:#171223d9;color:#ffedcd;font:700 11px Arial,sans-serif;pointer-events:none}
#cabinet.is-paused #toast{visibility:hidden}
