@font-face{font-family:Toshiba;src:url('assets/fonts/ToshibaSat-8x16.woff') format('woff');font-weight:400;font-style:normal;font-display:swap}
:root{--retro:Toshiba,monospace;--cream:#fffae9;--ink:#142c27;--yellow:#ffcf3d;font-family:var(--retro)}
body{background:var(--cream);color:var(--ink);font-family:var(--retro);font-size:16px}button,input,a{font:inherit}
/* Desktop: game sits at 80% width, centered. Mobile stays edge-to-edge. */
main{width:80%;max-width:1280px;margin-inline:auto}.masthead{display:none}
@media(max-width:650px){main{width:100%;max-width:none}}.arcade{border:0;box-shadow:none}.screen{max-height:none!important;container-type:inline-size;background:var(--cream)}
.screen *{font-family:var(--retro)}.screen:is([data-flow=start],[data-flow=intro]) .hud,.screen:is([data-flow=start],[data-flow=intro]) .power-hud,.screen[data-flow=intro] .hud,.screen[data-flow=intro] .power-hud{visibility:hidden}
.screen:is([data-flow=start],[data-flow=intro]) .overlay{background:transparent}.screen:is([data-flow=start],[data-flow=intro]) .start-card{position:absolute;inset:0;margin:0;padding:0;display:flex;align-items:center;flex-direction:column}.screen:is([data-flow=start],[data-flow=intro]) .chapter{position:absolute;top:12%;font-size:clamp(16px,2.1cqw,32px);letter-spacing:0;color:#111;display:block}.screen:is([data-flow=start],[data-flow=intro]) h1{position:absolute;top:27%;margin:0;text-shadow:none}.screen:is([data-flow=start],[data-flow=intro]) .logo-title .logo-crop{width:clamp(270px,49cqw,780px)}.screen:is([data-flow=start],[data-flow=intro]) .logo-crop img{width:100%;transform:none;margin:0}.screen:is([data-flow=start],[data-flow=intro]) .hero-subtitle,.screen:is([data-flow=start],[data-flow=intro]) .intro,.screen:is([data-flow=start],[data-flow=intro]) .enter-hint{display:none}
.name-entry{display:none}.screen:is([data-flow=start],[data-flow=intro]) .name-entry{position:absolute;top:60%;display:flex;gap:8px;align-items:center;font-size:clamp(16px,1.8cqw,28px);color:#101c13}.name-entry input{width:15ch;min-width:0;padding:4px 0;border:0;border-bottom:2px solid #225f17;background:transparent;border-radius:0;color:#225f17;font-size:inherit;outline-offset:4px;text-transform:uppercase}.name-entry input::placeholder{color:#225f17;opacity:1}.screen:is([data-flow=start],[data-flow=intro]) #play{position:absolute;top:70%;width:32%;min-width:245px;min-height:48px;padding:12px 14px;font-size:clamp(16px,1.7cqw,26px)}
.play-btn,.retro-button{background:var(--yellow);color:#15190a;border:2px solid #272614;border-radius:0;box-shadow:4px 4px #86581f;font-family:var(--retro);font-weight:400;letter-spacing:0}.play-btn:hover,.retro-button:hover{background:#ffdf66;transform:translateY(-1px)}
.hud{filter:none;color:#111;text-shadow:none;font-family:var(--retro)}.hud small{font-size:clamp(12px,1.4cqw,20px);color:inherit;letter-spacing:0;font-family:var(--retro)}.hud span{font-size:clamp(20px,2.5cqw,38px);font-weight:400;letter-spacing:0}.hud i{font-size:.7em;color:inherit}.hud[data-theme=night]{color:#fffbe5}.power-hud{font-family:var(--retro)}
.toolbar,.control-strip,.touch-controls{background:#f2edda;color:var(--ink)}.mission strong,.control,.icon-btn{color:var(--ink)}.eyebrow{color:#29531e;border-color:#9caf88}.control-tip{color:#426244}.power-guide,.enemies,footer{padding-left:24px;padding-right:24px}.power-guide{align-items:start}.power-guide-intro{align-items:flex-start}.power-guide>div:not(.power-guide-intro){display:grid;grid-template-columns:auto 1fr;column-gap:10px;align-content:start}.power-guide>div:not(.power-guide-intro)>.power-icon{grid-row:1/3;float:none;margin:0}.power-guide>div:not(.power-guide-intro)>h2{margin-top:0}@media(min-width:1001px){.power-guide{grid-template-columns:repeat(3,1fr)}.power-guide-intro{grid-column:1/-1}}@media(min-width:1350px){.power-guide{grid-template-columns:repeat(4,auto);justify-content:space-between}.power-guide-intro{grid-column:auto}}.enemy,.boss-guide{background:#eff0d6;border-color:#9bad7d}.enemy p,.power-guide p,footer{color:#45563b}.section-heading h2,.roster-stage,.enemy h4,.power-guide h2{color:#203b21}.enemy-art{background:transparent}
@media(max-width:650px){.screen{aspect-ratio:4/3}.screen:is([data-flow=start],[data-flow=intro]) .chapter{top:10%;font-size:16px}.screen:is([data-flow=start],[data-flow=intro]) h1{top:25%}.screen:is([data-flow=start],[data-flow=intro]) .logo-title .logo-crop{width:70cqw}.screen:is([data-flow=start],[data-flow=intro]) .name-entry{top:56%;font-size:18px}.screen:is([data-flow=start],[data-flow=intro]) #play{top:69%;width:70%;font-size:18px}.hud{gap:20px;padding:14px}.hud .hud-last{display:flex}.hud small{font-size:11px}.hud span{font-size:22px}.hud i{font-size:14px}.mission strong{font-size:14px}}
:root{color-scheme:light}[hidden]{display:none!important}.screen[data-flow=result] .power-hud,.screen[data-flow=leaderboard] .hud,.screen[data-flow=leaderboard] .power-hud,.screen[data-flow=result] .boss-hud,.screen[data-flow=leaderboard] .boss-hud,.screen:is([data-flow=start],[data-flow=intro]) .level-progress,.screen[data-flow=result] .level-progress,.screen[data-flow=leaderboard] .level-progress{display:none}.screen[data-flow=result] .hud{z-index:4;inset:6% 5% auto;color:#fffde9}.screen[data-flow=result]:has([data-outcome=won]) .hud{color:#132b24}
.result-panel{position:absolute;inset:5% 3%;background:#1b2e2e;color:#fffde9;border:2px solid #102525;box-shadow:6px 6px #000;overflow:hidden}.result-panel[data-outcome=won]{background:#fffa39;color:#14231b}.result-content{position:absolute;inset:27% 4% auto;text-align:center}.result-content p{margin:0 0 2.7%;font-size:clamp(15px,2cqw,28px)}.gold-title{color:#ffde38;font-size:clamp(36px,7.6cqw,112px);line-height:1.05;letter-spacing:-.025em;font-weight:400;margin:3% 0 5%;transform:skewX(-7deg);text-shadow:1px 2px #e6b329,2px 4px #d2a023,3px 6px #b98520,4px 8px #98641d,5px 10px #76451a}.result-panel[data-outcome=won] .gold-title{color:#e78721;text-shadow:1px 2px #d0771c,2px 4px #b36118,3px 6px #954e18,4px 8px #743d13}.result-content #result-copy{font-size:clamp(15px,1.9cqw,28px)}.result-content #result-stats{font-size:clamp(12px,1.4cqw,21px)}.result-enemy{position:absolute;bottom:6%;left:10%;width:auto;height:18%;max-width:23%;object-fit:contain;image-rendering:pixelated;animation:patrol 7s linear infinite alternate}.text-button{background:none;border:0;padding:8px;color:inherit;text-decoration:underline;text-underline-offset:5px;cursor:pointer}.result-panel>.text-button{position:absolute;right:3%;bottom:4%;font-size:clamp(13px,1.5cqw,22px)}#result-countdown{display:block;margin-top:8px;font-size:.75em;opacity:.65;text-decoration:none}.weather{position:absolute;inset:-40%;pointer-events:none;background-image:repeating-linear-gradient(115deg,transparent 0 100px,#55899580 101px 103px,transparent 104px 210px);background-size:210px 140px;mask-image:repeating-linear-gradient(transparent 0 90px,black 91px 114px,transparent 115px 220px);animation:rain 4s linear infinite;opacity:.3}.result-panel[data-outcome=won] .weather{opacity:.7;background-image:linear-gradient(#5fbf35 0 0),linear-gradient(#e87616 0 0),linear-gradient(#e87616 0 0),linear-gradient(#5fbf35 0 0);background-size:7px 14px,14px 7px,7px 15px,9px 10px;background-position:10px 20px,170px 80px,280px 130px,370px 50px;background-repeat:repeat;mask-image:repeating-linear-gradient(black 0 20px,transparent 21px 100px);animation:confetti 9s linear infinite}
.leaderboard{position:absolute;inset:0;text-align:center;padding:3% 15% 0;color:#102526}.leaderboard .gold-title{font-size:clamp(36px,6.4cqw,94px);margin:0 0 3%}.final-score{font-size:clamp(15px,1.9cqw,28px);margin:0 0 2px;font-weight:400}.final-score strong{font-weight:400}#share-score{font-size:clamp(22px,2.2cqw,34px);font-weight:700;line-height:1.1;margin-top:10px;padding:14px 32px;min-height:60px;width:min(100%,420px);border-width:3px;box-shadow:6px 6px #86581f}#score-list{list-style:none;padding:0;margin:2% 0 1%;min-height:14cqw;display:flex;flex-direction:column;gap:1cqw;font-size:clamp(15px,1.8cqw,26px)}#score-list li{display:flex;gap:15px;align-items:baseline;position:relative;line-height:1.3}#score-list .rank{min-width:1.5ch;width:auto;text-align:left;font-variant-numeric:tabular-nums}#score-list .player{max-width:55%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}#score-list .dots{flex:1;border-bottom:3px dotted #21382f;opacity:.7}#score-list .current{color:#fffbe8;text-shadow:1px 2px #163536}#score-list .current:before,#score-list .current:after{content:'';position:absolute;width:32px;height:32px;top:-4px;background:url('assets/final/coin.gif') center/contain no-repeat;image-rendering:pixelated}#score-list .current:before{left:-44px}#score-list .current:after{right:-44px}#board-status{font-size:clamp(11px,1.1cqw,16px);margin:1% 0;min-height:1em}.board-actions{display:flex;gap:3%;justify-content:center;margin-top:3%}.retro-button{display:inline-flex;align-items:center;justify-content:center;padding:12px 20px;text-decoration:none;min-height:44px}.board-actions>*{flex:1;font-size:clamp(14px,1.65cqw,24px);padding:10px;white-space:nowrap}.font-credit{font-size:12px;text-align:center;padding:10px;color:#526344}.font-credit a{color:inherit}.screen[data-flow=game] .start-card{background:#162b2def;border:2px solid #a8b491;padding:26px}.screen[data-flow=game] .start-card *{font-family:var(--retro)}
#share-dialog{color:#173126;background:#fffae9;border:3px solid #173126;box-shadow:8px 8px #1119;width:min(600px,94vw);max-height:94dvh;padding:24px;font-family:var(--retro)}#share-dialog::backdrop{background:#0a1e25bb}#share-close{float:right}#share-title{font-size:30px}#share-preview{display:block;width:min(300px,70%);margin:auto;image-rendering:pixelated}#share-status{line-height:1.4}#share-caption{font:16px var(--retro);background:#fffef5;color:#173126;width:100%;resize:vertical;border:1px solid #869b77;padding:10px}.share-actions{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px;font-size:16px}
@keyframes rain{to{transform:translate(-60px,140px)}}@keyframes confetti{to{transform:translate(20px,100px)}}@keyframes patrol{0%,45%{transform:translateX(0) scaleX(1)}49%{transform:translateX(150px) scaleX(1)}50%{transform:translateX(150px) scaleX(-1)}100%{transform:translateX(0) scaleX(-1)}}
@media(max-width:650px){.leaderboard{padding:5% 8% 0}.leaderboard .gold-title{font-size:8.3cqw}.final-score{font-size:15px}#final-name{display:none}#score-list{min-height:27cqw;gap:1.8cqw;font-size:16px;margin:3% 4% 1%}#score-list li{gap:8px}#score-list .current:before,#score-list .current:after{width:20px;height:20px;top:0}#score-list .current:before{left:-26px}#score-list .current:after{right:-26px}.board-actions{gap:10px;margin-top:3%}.board-actions>*{font-size:13px;white-space:normal;line-height:1.2;padding:6px}.result-content{inset:29% 4% auto}.result-content .gold-title{font-size:9cqw;margin:6% 0 8%}.result-content #result-copy{font-size:15px}.result-content #result-stats{font-size:11px}.result-panel>.text-button{font-size:12px}.screen[data-flow=result] .hud{inset:5% 3% auto}.hud{gap:18px}.share-actions{font-size:14px}.retro-button{padding:10px}.screen[data-flow=game] .start-card{max-width:90%;padding:16px}}
@media(prefers-reduced-motion:reduce){.weather,.result-enemy{animation:none!important}.weather{opacity:.1}#score-list .current:before,#score-list .current:after{background-image:none}}
.screen:is([data-flow=start],[data-flow=intro]) .chapter{background:none;padding:0;font-weight:400}.hud small{font-weight:400}.power-guide-intro strong,.boss-guide h3{color:#233d20}.screen[data-flow=intro] .toast,.screen[data-flow=result] .toast,.screen[data-flow=leaderboard] .toast{display:none}.screen:is([data-flow=start],[data-flow=intro]) .start-card{margin-top:0}
.weather,.result-panel[data-outcome=won] .weather{inset:0;background:none;mask-image:none;animation:none;opacity:.55}.weather i{position:absolute;top:-24px;width:2px;height:20px;background:#50899a;opacity:.45;animation:rain-drop 2s linear infinite;transform:rotate(24deg)}.result-panel[data-outcome=won] .weather i{width:6px;height:12px;background:#50bc35;opacity:1;animation-name:confetti-drop}.result-panel[data-outcome=won] .weather i:nth-child(even){width:12px;height:6px;background:#e2760d}@keyframes rain-drop{to{translate:-100px 600px}}@keyframes confetti-drop{to{translate:var(--drift) 600px;rotate:180deg}}
@media(max-width:650px){.leaderboard{padding:4% 8% 0}.leaderboard .gold-title{font-size:8cqw;margin-bottom:3%}.final-score{font-size:13px}#share-score{font-size:20px;padding:12px 18px;min-height:52px;width:90%}#score-list{gap:3px;font-size:13px;min-height:26cqw;margin-top:2%;line-height:1.1}.board-actions{margin-top:2%}.board-actions>*{font-size:12px;min-height:36px}#board-status{font-size:10px;margin:1% 0}.result-content #result-copy{font-size:14px}}
@media(prefers-reduced-motion:reduce){.weather i{animation:none!important;display:none}}
.arcade:has(.screen[data-flow=leaderboard]) .control-strip,.arcade:has(.screen[data-flow=leaderboard]) .touch-controls,.arcade:has(.screen[data-flow=result]) .touch-controls{display:none}
@media(max-width:650px){.screen[data-flow=leaderboard]{aspect-ratio:1}.screen[data-flow=leaderboard] canvas{object-fit:fill}.screen:is([data-flow=start],[data-flow=intro]) .name-entry{gap:6px;font-size:17px}.screen:is([data-flow=start],[data-flow=intro]) .chapter{font-size:14px}.board-actions>*{min-height:42px}}

#name-error{position:absolute;top:100%;left:0;right:0;margin-top:4px;font-size:clamp(11px,1.1cqw,16px);color:#8a260f;text-align:center;white-space:nowrap}.name-entry input[aria-invalid=true]{border-bottom-color:#a12c12}.screen[data-flow=intro] #play,.screen[data-flow=intro] .name-entry input{opacity:1}.screen[data-flow=intro] .name-entry input{cursor:default}
@media(max-width:650px){.screen:is([data-flow=start],[data-flow=intro]){aspect-ratio:1}.screen:is([data-flow=start],[data-flow=intro]) canvas{object-fit:fill}.screen:is([data-flow=start],[data-flow=intro]) #play{top:71%}}

/* Original title artwork and the final scoreboard composition. */
.gold-title.art-title,.art-title{transform:none;text-shadow:none;letter-spacing:0;line-height:1}
.headline-art{display:block;width:100%;height:auto;overflow:hidden}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.leaderboard{padding:3.5% 22% 0;display:flex;flex-direction:column;align-items:center}
.leaderboard .art-title{width:100%;margin:0 0 3.5%}
.final-score{font-size:clamp(13px,1.65cqw,26px)}
#retry-run{font-size:clamp(12px,1.3cqw,21px);padding:4px 10px;margin-top:2px}
#score-list{width:100%;min-height:0;height:15.5cqw;gap:1cqw;margin:2% 0 2%;font-size:clamp(14px,1.6cqw,25px)}
#score-list li{gap:10px;line-height:1.2}
.board-feedback{width:100%}.board-feedback:has(.sr-only):has(#name-correction[hidden]):has(#retry-save[hidden]){height:0}
.board-actions{width:100%;margin-top:2%;gap:14px}
.board-actions>*{font-size:clamp(12px,1.15cqw,18px);min-height:38px;padding:9px 10px;white-space:normal;line-height:1.1;text-transform:uppercase}
#share-score{font-size:clamp(15px,1.35cqw,22px);font-weight:700;min-height:42px;width:52%;margin-top:13px;padding:10px 14px;border-width:2px;box-shadow:4px 4px #86581f}
.result-content .art-title{width:86%;margin:4% auto 5%}
.result-content:has(.art-title){inset:27% 4% auto}
.overlay[data-mode=level-complete]{background:#10252365}
.screen[data-flow=game] .overlay[data-mode=level-complete] .start-card{width:52%;max-width:780px;min-height:65%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4% 3%;background:#fffb38;border:2px solid #24220f;box-shadow:5px 5px #111;color:#161f14}
.overlay[data-mode=level-complete] .chapter{display:block;background:none;padding:0;color:inherit;font-size:clamp(11px,1.15cqw,18px);letter-spacing:0;margin:0 0 3%}
.overlay[data-mode=level-complete] #overlay-title{width:100%;margin:0 0 5%}
.overlay[data-mode=level-complete] .hero-subtitle{color:inherit;font-size:clamp(12px,1.2cqw,19px);font-weight:400;letter-spacing:0;text-shadow:none;text-decoration:underline;text-underline-offset:4px;margin:0 0 5%}
.overlay[data-mode=level-complete] .intro{color:inherit;text-transform:uppercase;font-size:clamp(10px,1cqw,16px);font-weight:400;text-shadow:none;line-height:1.45;margin:0 0 5%;max-width:none}
.stage-register{font-size:clamp(11px,1.05cqw,17px);color:inherit;text-decoration:underline;text-underline-offset:3px;margin-bottom:10px}
.overlay[data-mode=level-complete] #play{font-size:clamp(12px,1.15cqw,18px);padding:10px 26px;min-height:40px}
.overlay[data-mode=level-complete] .enter-hint{display:none}
@media(max-width:650px){
 .screen[data-flow=leaderboard]{aspect-ratio:4/5}
 .leaderboard{padding:6% 9% 0}
 .leaderboard .art-title{margin-bottom:5%}
 .final-score{font-size:15px}
 #retry-run{font-size:14px;padding:7px}
 #score-list{height:43cqw;font-size:15px;gap:3.7cqw;margin:4% 4% 3%;width:92%}
 #score-list .dots{border-bottom-width:2px}
 .board-actions{margin-top:2%;gap:9px}
 .board-actions>*{font-size:12px;min-height:44px;padding:7px}
 #share-score{width:70%;font-size:16px;min-height:44px;margin-top:13px;padding:8px}
 .screen[data-flow=game] .overlay[data-mode=level-complete] .start-card{width:88%;min-height:72%;padding:5%}
 .overlay[data-mode=level-complete] .intro{font-size:11px}
 .overlay[data-mode=level-complete] .hero-subtitle{font-size:13px}
 .overlay[data-mode=level-complete] .stage-register{font-size:12px}
}

#name-correction{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px;font-size:clamp(11px,1.1cqw,16px)}#name-correction[hidden]{display:none}#result-name{max-width:15ch;padding:4px;border:2px solid #225f17;background:#fffde9;color:#102526;font:inherit}#result-name[aria-invalid=true]{border-color:#a12c12}#result-name-error{width:100%;color:#8a260f}
