:root{color-scheme:light;--ink:#193d35;--muted:#657970;--paper:#f8f2df;--red:#df4d33;--green:#244f43;--line:#c8cfb9;--gold:#efc66b}
*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;background:var(--paper);color:var(--ink);font-family:"Microsoft YaHei","PingFang SC",sans-serif}button,select,input{font:inherit}button{cursor:pointer;touch-action:manipulation;color:inherit;border:1px solid var(--ink);user-select:none;transition:transform .12s,background .12s}button:active,button.held{transform:translateY(2px)}button:focus-visible,a:focus-visible,select:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:3px solid #ce442c;outline-offset:3px}a{color:inherit}.sr-only{position:absolute;overflow:hidden;width:1px;height:1px;clip-path:inset(50%)}
/* A printed adventure cover; the game uses the same paper, ink and signal red. */
.landing{max-width:1400px;margin:auto;padding:27px 5vw 18px}.landing-nav{display:flex;justify-content:space-between;align-items:center;padding-bottom:24px;border-bottom:1px solid var(--line)}.brand{font-weight:900;text-decoration:none;display:flex;align-items:center;gap:10px;font-size:19px;letter-spacing:1px}.brand>span{color:var(--red);font-size:27px}.brand small{font-family:Georgia,serif;font-size:9px;letter-spacing:1.5px;margin-left:8px;color:var(--muted)}.issue{font-size:11px;letter-spacing:2px;color:var(--muted)}.landing-grid{display:grid;grid-template-columns:1fr 1.1fr;gap:36px;align-items:center;padding:36px 0 26px}.landing-copy{padding:15px 0}.landing-kicker{display:flex;align-items:center;gap:9px;font-size:12px;font-weight:700;letter-spacing:3px;margin:0 0 20px}.landing-kicker>span{width:7px;height:7px;border-radius:50%;background:var(--red);box-shadow:0 0 0 4px #df4d3312}.landing-copy h1{position:relative;width:max-content;margin:0;font-family:"STKaiti","KaiTi","Microsoft YaHei",sans-serif;font-size:clamp(65px,6.7vw,100px);font-weight:900;line-height:1.12;letter-spacing:-4px}.landing-copy h1 em{font-style:normal;color:var(--red)}.title-star{position:absolute;top:22px;right:-71px;font-size:57px;color:var(--gold);transform:rotate(12deg)}.landing-description{font-size:14px;line-height:1.9;color:#5a6d60;margin:24px 0}.launch{display:flex;align-items:center;justify-content:space-between;gap:66px;min-height:66px;padding:14px 25px;background:var(--red);border:0;color:#fff8e7;font-size:22px;font-weight:800;box-shadow:5px 5px 0 var(--ink);border-radius:3px}.launch span{font-size:30px;font-weight:400}.launch:hover{background:#c83e28;transform:translateY(-2px)}.landing-hint{font-size:11px;letter-spacing:1px;margin:17px 0 0;color:var(--muted)}.landing-stats{display:flex;gap:24px;align-items:center;margin-top:28px}.landing-stats>div{display:flex;align-items:center;gap:10px}.landing-stats strong{font:700 35px Georgia,serif}.landing-stats span{font-size:10px;color:var(--muted);line-height:1.6;max-width:75px}.landing-stats i{font-size:18px;color:#bac3ac;font-style:normal}
.landing-poster{position:relative;isolation:isolate;aspect-ratio:1.03;background:#214d41;border-radius:3px 70px 3px 3px;overflow:hidden;border:1px solid #153c32;box-shadow:10px 10px 0 #dedec5;background-image:repeating-linear-gradient(0deg,transparent 0,transparent 5px,#122f2510 5px,#122f2510 6px)}.landing-poster:after{content:"";position:absolute;z-index:-1;width:110%;height:28%;bottom:5%;left:-5%;background:#ebc469;transform:rotate(-9deg);border-top:5px solid #f5e4aa}.poster-orbit{position:absolute;z-index:-1;width:78%;aspect-ratio:1;top:18%;left:13%;border-radius:50%;background:#90aa72;border:22px solid #4f7151;box-shadow:0 0 0 1px #b6bf82,0 0 0 30px #315a43}.poster-heading{position:absolute;top:27px;left:29px;color:#e6e5c9;font-size:11px;line-height:1.8;letter-spacing:2px}.poster-heading b{color:#fff8df;font-size:16px;letter-spacing:1px}.landing-poster canvas{position:absolute;inset:4% 0 0;width:100%;height:100%;object-fit:contain}.poster-stamp{position:absolute;right:12px;bottom:73px;display:flex;flex-direction:column;gap:3px;transform:rotate(-9deg);background:var(--red);color:#fff3d4;padding:11px 14px;border:2px solid #f5dda5;box-shadow:3px 3px 0 #173f32;font-size:9px;text-align:center}.poster-stamp strong{font-size:22px;letter-spacing:2px}.poster-stamp span{font-size:8px}.poster-caption{position:absolute;bottom:0;left:0;right:0;display:flex;justify-content:space-between;gap:12px;padding:20px 22px;background:#193d35;color:#e6e5c9;font-size:9px;letter-spacing:1px}.poster-caption b{font-family:Georgia,serif;color:#efcc78}.landing-guide{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:19px 0;gap:25px}.landing-guide>div{display:flex;align-items:center;gap:14px}.landing-guide>div+div{padding-left:25px;border-left:1px solid var(--line)}.landing-guide>div>span{font:italic 26px Georgia,serif;color:#9ba98c}.landing-guide p{margin:0}.landing-guide b{font-size:12px}.landing-guide small{display:block;font-size:10px;margin-top:6px;color:var(--muted)}.landing-footer{text-align:center;font-size:10px;color:#89917e;letter-spacing:2px;margin:17px 0 0}
/* The two rosters scroll independently; settings float above the arena. */
body.in-game{height:100dvh;overflow:hidden}main{max-width:1540px;height:100dvh;margin:auto;padding:14px 22px 12px;display:flex;flex-direction:column}main>header{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:12px;flex:none}.game-brand{display:flex;gap:11px;align-items:center}.game-brand>span{font-size:36px;color:var(--red)}.eyebrow{font-size:10px;letter-spacing:2px;margin:0 0 3px;color:var(--muted)}main h1{font-size:22px;margin:0;line-height:1.3}main h1 b{font-weight:900}.header-tip{font-size:11px;color:var(--muted);margin:0}.header-tip span{margin:0 9px;color:var(--red)}.arcade{position:relative;display:grid;grid-template-columns:154px minmax(0,1fr) 154px;grid-template-rows:auto auto minmax(0,1fr) auto;flex:1;min-height:0;border:1.5px solid var(--ink);border-radius:13px;background:#fbf6e8;box-shadow:0 5px 0 #d4d9c2;overflow:hidden}.hero-picker,.enemy-picker{min-height:0;overflow:auto;overscroll-behavior:contain;padding:10px;background:#e9edda;scrollbar-width:thin;scrollbar-color:#8caa86 transparent}.hero-picker{grid-column:1;grid-row:1/-1;border-right:1px solid #bac9ae}.enemy-picker{grid-column:3;grid-row:1/-1;border-left:1px solid #bac9ae;background:#e3e8d4}.picker-label{font-size:12px;font-weight:800;padding:2px 0 9px;white-space:nowrap}.picker-label small{display:block;font-size:9px;font-weight:400;color:var(--muted);margin-top:5px}#hero-options,#enemy-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}#hero-options button,#enemy-options button{display:flex;flex-direction:column;align-items:center;min-width:0;padding:1px 2px 6px;border:1px solid #c3cdb5;background:#f9f5e7;border-radius:6px;font-size:10px;font-weight:700}#hero-options button:hover,#enemy-options button:hover{background:#f6e6bc;border-color:#9cae8b}#hero-options button[aria-pressed=true],#enemy-options button[aria-pressed=true]{background:#ffe2ae;border:2px solid #d65335;box-shadow:0 2px 0 #bf6545}#hero-options canvas,#enemy-options canvas{display:block;width:100%;height:auto;max-width:100%}#hero-options canvas{aspect-ratio:14/13}#enemy-options canvas{aspect-ratio:1}#enemy-toggle{display:none}.selection-panel{grid-column:2;grid-row:1;min-width:0;z-index:7}.weather-controls{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 14px;background:#fbf6e8;border-bottom:1px solid #d6ddc9;font-size:11px}.weather-controls label{display:flex;align-items:center;gap:8px}.weather-controls select{font:inherit;min-height:29px;border:1px solid #c1ccb2;border-radius:5px;background:#f3f0e1;padding:2px 8px;max-width:120px}#weather-current{font-size:10px;color:var(--muted)}.music-options{font-size:12px;line-height:1.65}.music-options:not([open]){display:none}.music-options[open]{position:absolute;top:10px;right:165px;z-index:10;background:#fff9e8;border:2px solid var(--ink);border-radius:10px;box-shadow:0 8px 25px #152d3540;width:min(430px,calc(100% - 190px));max-height:calc(100% - var(--controls-height,130px) - 20px);overflow:auto;overscroll-behavior:contain;padding:14px 18px}.music-options summary{font-size:13px;font-weight:800;cursor:pointer}.music-options p{margin:9px 0;color:#526c5c}.music-options a{color:#285e50}.music-options select,.music-options input{max-width:100%;font:inherit}.music-options select{display:block;margin-top:5px;width:100%;padding:7px;border:1px solid #8ba58a;border-radius:5px;background:#f5f0df}.audio-file{display:block;margin-top:12px}.audio-file input{display:block;margin-top:6px;font-size:11px}#theme-player iframe{display:block;width:100%;height:175px;border:0;border-radius:8px;margin:8px 0}.statusbar{grid-column:2;grid-row:2;display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--green);color:#fff8e9;padding:10px 16px}.statusbar>div{display:flex;align-items:center;gap:10px}.status-label{font-size:9px;letter-spacing:1px;color:#d6e2c5}#health{font-size:21px;letter-spacing:2px;white-space:nowrap;color:#ffb19a}.statusbar .mission{font-size:10px;color:#d9e3c9}.mission b{font-size:13px;color:#ffe1a0}#score{font-size:21px;white-space:nowrap}#score small{font-size:12px;color:#d6dfc7;font-weight:400}.stage{grid-column:2;grid-row:3;min-height:0;min-width:0;position:relative;isolation:isolate;line-height:0;background:#dce4cc}#game{display:block;width:100%;height:100%;object-fit:contain}.message{position:absolute;inset:50% auto auto 50%;transform:translate(-50%,-50%);width:340px;max-width:88%;background:#fff9ebf5;border:1.5px solid var(--ink);border-radius:12px;box-shadow:0 5px 0 #284a3933;padding:18px 25px;text-align:center;line-height:1.6}.message h2{font-size:22px;margin:0 0 7px}.message p{font-size:11px;color:#596c60;margin:0 0 14px}.message-icon,.corner-note{display:none}.primary{padding:9px 24px;font-weight:800;font-size:15px;color:#fff8e8;background:var(--red);border-radius:5px;box-shadow:0 3px 0 #8d3a2a}.primary span{margin-left:15px}.controls{grid-column:2;grid-row:4;min-width:0;display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:8px;padding:12px 14px 10px;background:#fbf6e8;border-top:2px solid var(--ink)}.movement{display:contents}.controls button{border-radius:7px;touch-action:none}.movement button,.fire,.attack{width:100%;min-width:0;height:68px;min-height:68px;font-size:18px;font-weight:800;border:1px solid #6e8a6c;box-shadow:0 3px 0 #b8c5a4}.movement button{background:#e6ead7;font-size:27px;line-height:1}.movement small,.fire small,.attack small{display:block;font-size:9px;font-weight:500;line-height:1.4;margin-top:5px}.fire,.weapon{grid-column:span 2}.fire{background:var(--red);color:#fff9e7;border-color:#a7402b;box-shadow:0 3px 0 #9f4934;padding:7px}.attack{background:#dfebd0;padding:7px 2px}.weapon{background:#f5d89a}.attack.long-label,.fire.long-label{font-size:16px}.attack.cooling{background:#e2e1d2;color:#52684e}.fire.cooling{background:#b36d54}.control-options{grid-column:1/-1;display:flex;align-items:center;justify-content:flex-end;gap:13px;margin-top:3px}.sound,.music-settings,.restart{background:none;border:0;min-height:32px;font-size:11px;padding:3px 8px;box-shadow:none}.sound{margin-right:auto;text-align:left;display:flex;gap:9px;align-items:center}.sound span{font-weight:700}.sound small{font-size:9px;font-weight:400;color:var(--muted)}.sound[aria-pressed=true] span{color:#2a6c44}.music-settings{border:1px solid #bdcbb1!important;background:#eaf0dc}.restart{font-size:17px;display:flex;align-items:center;gap:5px}.restart span{font-size:10px}footer{display:flex;justify-content:space-between;gap:14px;font-size:9px;line-height:1.6;color:var(--muted);margin:10px 2px 0}footer b{color:var(--ink);margin-right:8px}footer i{font-style:normal;margin:0 6px}
@media(max-width:1100px){.landing{padding-left:5vw;padding-right:5vw}.landing-grid{gap:24px}.title-star{right:-55px;font-size:45px}.landing-copy h1{font-size:76px}.poster-heading{left:20px;top:20px}.poster-heading b{font-size:13px}.poster-stamp{bottom:58px;right:10px;padding:8px}.poster-stamp strong{font-size:18px}.poster-caption{padding:16px;font-size:8px}.arcade{grid-template-columns:132px minmax(0,1fr) 132px}.music-options[open]{right:143px}.statusbar .mission{display:none}main{padding:10px 14px}.controls{gap:7px;padding:10px}.attack.long-label,.fire.long-label{font-size:14px}}
@media(max-width:1000px){.arcade{grid-template-columns:68px minmax(0,1fr) 30px}.hero-picker{padding:5px}#hero-options{grid-template-columns:1fr;gap:6px}.hero-picker .picker-label{font-size:10px}.hero-picker .picker-label small{display:none}#hero-options button{font-size:9px}#enemy-toggle{display:block;grid-column:3;grid-row:1/4;border:0;border-left:1px solid #aabc9a;border-radius:0;writing-mode:vertical-rl;background:#e3e8d4;font-size:12px;padding:3px}.enemy-picker{display:none;position:absolute;top:0;right:30px;bottom:var(--controls-height,150px);width:164px;z-index:8;box-shadow:-5px 0 15px #193d3530;border:1.5px solid var(--ink)}.enemies-open .enemy-picker{display:block}.controls{grid-column:2/4}.music-options[open]{right:39px;width:min(430px,calc(100% - 85px))}}
@media(max-width:700px){.landing{padding:19px 22px 20px}.landing-nav{padding-bottom:17px}.brand{font-size:16px;gap:7px}.brand small{font-size:7px;margin-left:1px;letter-spacing:.5px}.issue{display:none}.landing-grid{grid-template-columns:1fr;padding:27px 0 24px;gap:25px}.landing-copy{padding:0}.landing-kicker{font-size:10px;letter-spacing:2px;margin-bottom:15px}.landing-copy h1{font-size:68px;letter-spacing:-3px;line-height:1.1}.landing-copy h1 br{display:block}.title-star{display:none}.landing-description{font-size:12px;line-height:1.8;margin:16px 0}.launch{width:100%;min-height:57px;padding:10px 22px;font-size:20px}.landing-hint{font-size:10px;margin-top:14px}.landing-stats{margin-top:19px;gap:25px}.landing-stats strong{font-size:30px}.landing-stats span{max-width:none;font-size:9px}.landing-poster{aspect-ratio:1.16;border-top-right-radius:48px;max-width:500px;width:100%;justify-self:center;box-shadow:6px 6px 0 #dedec5}.poster-heading{font-size:9px;top:16px;left:18px}.poster-heading b{font-size:12px}.poster-stamp{bottom:54px;right:10px}.poster-caption{padding:14px}.landing-guide{grid-template-columns:1fr;gap:17px;padding:20px 0}.landing-guide>div+div{padding:0;border:0}.landing-guide>div>span{font-size:24px}.landing-guide b{font-size:12px}.landing-guide small{font-size:10px;margin-top:3px}.landing-footer{font-size:9px;letter-spacing:1px}main{padding:8px}main>header{margin-bottom:8px;gap:8px}.game-brand{gap:7px}.game-brand>span{font-size:27px}.eyebrow{font-size:8px;letter-spacing:1px}main h1{font-size:18px}.header-tip{display:none}.arcade{border-radius:9px;grid-template-columns:60px minmax(0,1fr) 28px}.hero-picker{padding:4px}.enemy-picker{right:28px;width:158px}.controls{grid-template-columns:repeat(4,minmax(0,1fr));padding:8px;gap:7px}.movement button,.fire,.attack{height:58px;min-height:58px;font-size:16px}.movement button{font-size:25px}.movement small,.fire small,.attack small{font-size:8px;margin-top:4px}.attack.long-label,.fire.long-label{font-size:14px}.control-options{justify-content:space-between;gap:3px;margin-top:2px}.sound{display:block;margin-right:0;padding:3px;font-size:9px;max-width:45%;min-height:32px}.sound small{display:block;font-size:8px;margin-top:2px}.music-settings{font-size:10px;padding:4px 6px}.restart{padding:3px;font-size:16px}.restart span{font-size:9px}.statusbar{padding:7px 8px;gap:4px}.statusbar>div{gap:4px}.status-label{font-size:8px;letter-spacing:0}#health{font-size:14px;letter-spacing:0}#score{font-size:18px}#score small{font-size:10px}.weather-controls{padding:5px 7px;font-size:10px;gap:4px}.weather-controls label{gap:4px}.weather-controls select{min-height:27px;max-width:78px;padding:2px 3px}#weather-current{font-size:9px}.message{padding:11px 13px;max-width:90%}.message h2{font-size:17px;margin-bottom:5px}.message p{font-size:10px;margin-bottom:9px}.primary{padding:8px 17px;font-size:13px}.music-options[open]{right:34px;top:6px;width:calc(100% - 69px);padding:10px;max-height:calc(100% - var(--controls-height,190px) - 12px);font-size:10px}.music-options summary{font-size:11px}.music-options select{font-size:10px}#theme-player iframe{height:175px}.music-options input{font-size:9px}footer{display:none}}
@media(max-width:380px){.landing{padding:17px 18px}.landing-copy h1{font-size:57px}.landing-stats{gap:15px}.landing-stats>div{gap:6px}.landing-stats span{font-size:8px}.brand small{font-size:6px}.poster-stamp strong{font-size:16px}.poster-stamp span{font-size:7px}.poster-heading b{font-size:11px}.statusbar .score .status-label{display:none}.message p{display:none}.message h2{font-size:15px}.primary{font-size:12px;padding:7px 13px}.attack.long-label,.fire.long-label{font-size:12px}.controls{padding:7px 6px;gap:6px}.restart span{font-size:8px}.sound{font-size:8px}.sound small{font-size:7px}.music-settings{font-size:9px;padding:4px}.movement small,.fire small,.attack small{font-size:7px}#weather-current{font-size:8px}}
@media(max-height:600px) and (min-width:701px){main{padding:5px 8px}main>header{margin-bottom:5px}.eyebrow{display:none}main h1{font-size:18px}.game-brand>span{font-size:24px}.controls{padding:7px;gap:5px}.movement button,.fire,.attack{height:48px;min-height:48px}.control-options{margin-top:0}.statusbar{padding:5px 10px}.weather-controls{padding:3px 10px}.message{padding:8px 15px}.message p{display:none}footer{display:none}}
@media(max-height:470px) and (max-width:700px){.controls{grid-template-columns:repeat(8,minmax(0,1fr));padding:5px;gap:4px}.movement button,.fire,.attack{height:47px;min-height:47px;font-size:12px}.movement small{font-size:6px}.fire.long-label,.attack.long-label{font-size:10px}.message p{display:none}.message{padding:6px 10px}.message h2{font-size:14px}.primary{padding:5px 12px}.weather-controls{padding:2px 5px}.weather-controls select{min-height:23px}.statusbar{padding:4px 7px}.control-options{margin-top:0}.sound{display:flex;max-width:none;gap:5px}.sound small{margin:0}}
@media(prefers-reduced-motion:reduce){button{transition:none}.launch:hover{transform:none}}
@media(max-height:470px) and (min-width:550px){.landing{padding:12px 22px}.landing-nav{padding-bottom:10px}.landing-grid{grid-template-columns:1fr 1fr;padding:18px 0;gap:25px}.landing-copy{padding:0}.landing-kicker{font-size:9px;margin-bottom:10px}.landing-copy h1{font-size:46px;line-height:1.02;letter-spacing:-2px}.landing-description{font-size:10px;line-height:1.6;margin:12px 0}.launch{min-height:44px;font-size:16px;padding:6px 16px;gap:15px}.launch span{font-size:24px}.landing-hint{font-size:8px;margin-top:10px}.landing-stats{margin-top:12px;gap:18px}.landing-stats strong{font-size:24px}.landing-stats span{font-size:8px}.landing-poster{aspect-ratio:.96}.poster-heading{font-size:8px;left:13px;top:13px}.poster-heading b{font-size:10px}.poster-stamp{padding:5px;bottom:42px}.poster-stamp strong{font-size:14px}.poster-caption{padding:11px;font-size:7px}.landing-guide{grid-template-columns:repeat(3,1fr);gap:15px;padding:14px 0}.landing-guide>div{gap:8px}.landing-guide b{font-size:10px}.landing-guide small{font-size:8px}}
.music-volume{display:flex;align-items:center;gap:10px;margin:10px 0}.music-volume input{flex:1;min-width:0;accent-color:var(--red)}#music-toggle{padding:6px 12px;border-radius:5px;background:#e6ecd7;font-size:11px}
