@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@500;600;700;800;900&family=IBM+Plex+Mono:wght@400;500;600;700&family=Noto+Sans+JP:wght@400;500;600;700;800;900&display=swap');
:root{--bg:#111b1a;--panel:#182320;--line:#334138;--muted:#8c9c90;--text:#e7eddf;--lime:#d8f582;--orange:#ffa653;--mono:'IBM Plex Mono',monospace;--display:'Barlow Condensed',Impact,sans-serif;--body:'Noto Sans JP',sans-serif;color-scheme:dark}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--body);font-size:16px}body::before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.07;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.95' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23fff' filter='url(%23n)' opacity='.6' d='M0 0h160v160H0z'/%3E%3C/svg%3E")}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:disabled{cursor:default;opacity:.38}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:2px solid var(--lime);outline-offset:5px}button,button svg{transition:color .2s,background .2s,transform .2s}.app{max-width:1440px;margin:auto;padding:0 48px}.masthead{height:108px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:24px}.brand{display:flex;gap:12px;align-items:center;color:var(--text);text-decoration:none;font-family:var(--display);font-size:31px;font-weight:800;letter-spacing:1px}.brand-mark{background:var(--lime);color:var(--bg);font-family:var(--display);font-style:italic;font-size:34px;width:38px;height:38px;display:grid;place-items:center;line-height:1;clip-path:polygon(0 0,100% 0,100% 77%,77% 100%,0 100%)}.brand-farmer{font-family:var(--mono);font-size:21px;letter-spacing:-1.3px;color:var(--lime);margin-left:8px;font-weight:500}.header-tag{color:var(--muted);font-family:var(--mono);font-size:12px;letter-spacing:1.8px}.header-tag span{margin-left:14px;border:1px solid var(--line);padding:5px 7px;font-size:12px}.header-actions{display:flex;gap:10px}.icon-button{background:none;border:1px solid var(--line);height:38px;display:flex;align-items:center;gap:9px;padding:0 12px;color:var(--muted);font-family:var(--mono);font-size:12px}.icon-button:hover{background:#27352b;color:var(--lime)}.icon-button svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linejoin:round;stroke-linecap:round}.icon-button.square{padding:0;width:38px;justify-content:center}.game-layout{display:grid;grid-template-columns:minmax(180px,1fr) minmax(380px,560px) minmax(180px,1fr);gap:36px;align-items:start;padding:32px 0 28px}.left-rail,.right-rail{padding-top:7px}.eyebrow{color:var(--lime);font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.8px;display:flex;align-items:center;gap:8px}.small-square{height:6px;width:6px;background:var(--lime)}h1{font-size:38px;letter-spacing:-1.7px;line-height:1.55;font-weight:800;margin:24px 0 17px}h1 span{color:var(--lime)}.mission-copy{color:#a7b5a8;font-size:14px;line-height:2.05;margin:0;white-space:nowrap}.mission-path{margin:32px 0 34px;display:flex;flex-direction:column;gap:0}.phase{position:relative;display:flex;align-items:center;gap:13px;padding:12px 0;color:#758a7b}.phase>span{font-family:var(--mono);font-size:12px;border:1px solid #344638;background:var(--bg);width:29px;height:29px;display:grid;place-items:center;flex-shrink:0;z-index:1}.phase:not(:last-child)::after{content:"";position:absolute;height:25px;width:1px;background:var(--line);left:14px;top:45px}.phase>div{font-size:14px;font-weight:600;line-height:1.2}.phase small{display:block;font:11px var(--mono);letter-spacing:1px;margin-top:6px}.phase i{height:4px;width:4px;background:currentColor;margin-left:auto;margin-right:4px;opacity:.3}.phase.active{color:var(--lime)}.phase.active>span{background:#34442b;border-color:#6d8149;color:var(--lime)}.phase.active i{opacity:1}.controls{padding-top:23px;border-top:1px solid var(--line)}h2{font:500 12px var(--mono);letter-spacing:.9px;margin:0;color:#b9c8b7}.control-row{display:flex;align-items:center;gap:15px;margin:22px 0}.control-row>span{font-size:14px}.control-row small{font-size:12px;color:var(--muted)}.keys{display:flex;flex-direction:column;align-items:center;gap:4px}.keys>div{display:flex;gap:4px}kbd{font:12px var(--mono);border:1px solid #41533f;border-bottom:3px solid #41533f;min-width:24px;height:25px;padding:3px 5px;text-align:center;display:inline-flex;align-items:center;justify-content:center;border-radius:3px;background:#202d23;color:#c7d8bd}.control-line{display:flex;align-items:center;gap:10px;margin:13px 0;font-size:12px;color:#a7b6a6;white-space:nowrap}.control-line>kbd{min-width:50px}.control-line b{font:12px var(--mono);color:var(--lime)}.touch-note{font-size:12px;line-height:1.8;color:var(--muted);margin:17px 0 0}.left-bottom{font:10px var(--mono);letter-spacing:1px;color:#78917a;margin-top:30px;display:flex;align-items:center;gap:9px}.tiny-cross{font-size:20px;font-weight:400}.arcade{border:1px solid #4b5f44;box-shadow:0 16px 60px #0005,0 0 0 5px #080f0d55;background:#0e1b11;position:relative;min-width:0}.scoreboard{height:74px;display:flex;justify-content:space-between;align-items:center;padding:0 20px;background:#202b20;border-bottom:1px solid #596844;font-family:var(--mono)}.scoreboard>div>span{display:block;font-size:10px;letter-spacing:1.8px;color:#a9b49a;margin-bottom:4px}.scoreboard strong{font-size:25px;letter-spacing:1px;font-weight:500}.timer-block{text-align:center}.timer-block strong{font-size:33px;color:var(--lime);letter-spacing:-1.5px}.timer-block strong span{font-size:19px;color:#a8be75}.timer-block.urgent strong,.timer-block.urgent strong span{color:var(--orange)}.life-block{text-align:right}.life-block strong{font-size:17px;letter-spacing:1px;color:var(--lime)}.screen{position:relative;aspect-ratio:4/5;overflow:hidden;background:#314529;isolation:isolate}#game{display:block;width:100%;height:100%;image-rendering:pixelated;outline-offset:-3px;touch-action:none;user-select:none}.scanlines{position:absolute;inset:0;background:repeating-linear-gradient(0deg,#0000 0px,#0000 2px,#0002 3px);pointer-events:none;opacity:.35;z-index:2}.field-label{position:absolute;left:15px;right:15px;top:14px;display:flex;justify-content:space-between;pointer-events:none;font:10px var(--mono);letter-spacing:.6px;color:#d2e6a4;text-shadow:0 1px 3px #000;background:#14220b70;padding:5px 7px;z-index:3}.field-label span:last-child{color:#e2f8b9}.overlay{position:absolute;inset:0;z-index:5;display:flex;align-items:flex-start;justify-content:center;overflow-y:auto;background:linear-gradient(#08160812,#0b1b0d80 38%,#102515a8 80%,#10211344)}.overlay[hidden]{display:none}.start-card{text-align:center;width:100%;padding:30px 24px;margin:auto;flex-shrink:0}.edition{font:10px var(--mono);letter-spacing:2.6px;color:#d7e6af;margin-bottom:19px}.game-title{display:flex;align-items:center;flex-direction:column;filter:drop-shadow(0 6px 0 #203416);line-height:.8;transform:skewX(-7deg)}.game-title>span{font:900 clamp(64px,7.4vw,108px)/.8 var(--display);letter-spacing:-1px;color:#ecf5ce;text-shadow:3px 0 #ecf5ce}.game-title>em{font:700 clamp(35px,4.8vw,60px)/1 var(--mono);font-style:normal;letter-spacing:-5px;color:var(--lime);margin-top:2px}.start-description{font-size:16px;color:#e3eccf;font-weight:600;letter-spacing:3px;margin:26px 0}.start-rule{display:flex;align-items:center;justify-content:center;gap:14px;font:10px var(--mono);color:#c2d6a7;letter-spacing:.3px}.start-rule i{width:3px;height:3px;background:#86a169}.start-button{display:flex;align-items:center;justify-content:center;gap:38px;color:#1b3019;background:var(--lime);border:1px solid #ebffb7;border-bottom:4px solid #81984b;padding:15px 29px;min-width:232px;margin:29px auto 14px;font-size:17px;font-weight:800;letter-spacing:3px;box-shadow:0 5px 24px #08120450}.start-button:hover{background:#edffb7;transform:translateY(-2px)}.start-button:active{transform:translateY(1px)}.start-button svg{width:17px;height:17px;fill:currentColor}.enter-note{font:10px var(--mono);color:#afc391;letter-spacing:1.8px}.game-toolbar{height:48px;display:flex;justify-content:space-between;align-items:center;background:#1b291d;padding:0 15px;border-top:1px solid #596844;font:11px var(--mono);color:#d2dfb8;gap:5px}.weapon-current{display:flex;gap:8px;align-items:center;min-width:0}.live-dot{width:5px;height:5px;background:var(--lime)}#weapon-level{color:var(--lime);background:#334629;padding:2px 5px;white-space:nowrap}.toolbar-right{display:flex;align-items:center;height:100%;gap:6px}.toolbar-right button{background:none;color:#becdaa;border:0;height:32px;padding:5px 8px;font:11px var(--mono)}.toolbar-right button:hover:not(:disabled){color:var(--lime);background:#34452a}.toolbar-right b{color:var(--lime);font-weight:500}.toolbar-right svg{stroke:currentColor;stroke-width:2;width:17px;height:17px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:4px}.section-heading>span{font:12px var(--mono);color:#8c9f80}.record{border-bottom:1px solid var(--line);padding-bottom:26px}.record>strong{font:500 38px var(--mono);display:block;color:var(--lime);letter-spacing:1px;margin:13px 0 5px}.record-caption{font-size:12px;color:var(--muted)}.arsenal{padding-top:26px}.arsenal>p{font-size:12px;color:var(--muted);margin:12px 0 17px}.weapon-list{display:flex;flex-direction:column;gap:4px}.weapon-row{display:flex;align-items:center;gap:11px;padding:8px 7px;border:1px solid transparent;transition:background .2s,border-color .2s}.weapon-row.active{background:#283923;border-color:#647d44}.weapon-row canvas{width:28px;height:28px;image-rendering:pixelated;flex-shrink:0}.weapon-row>div{display:flex;flex-direction:column;gap:2px}.weapon-row strong{font-size:13px;font-weight:500;color:#c9d5bd}.weapon-row small{font:10px var(--mono);letter-spacing:.4px;color:#8a9c80}.weapon-row>span{font:10px var(--mono);color:#78906c;margin-left:auto}.boss-card{border:1px solid #465035;background:#1d271c;padding:14px;margin-top:23px;position:relative;overflow:hidden}.boss-card::after{content:"";position:absolute;right:-20px;top:10px;bottom:10px;width:1px;background:#62723d;transform:rotate(40deg)}.boss-card .section-heading h2{font-size:11px;color:#b9c896}.warning-mark{border:1px solid #8b7844;width:17px;height:17px;display:grid;place-items:center;color:#e0b261!important}.boss-card canvas{display:block;width:100%;height:94px;object-fit:contain;image-rendering:pixelated}.boss-caption{display:flex;flex-direction:column;gap:4px;text-align:center}.boss-caption strong{font-size:13px;font-weight:600}.boss-caption>span{font:9px var(--mono);letter-spacing:1.8px;color:#abb782}footer{border-top:1px solid var(--line);padding:21px 0 28px;display:flex;justify-content:space-between;font:10px var(--mono);letter-spacing:1.1px;color:#6f8577}footer i{font-style:normal;color:#42584a;margin:0 12px}.boss-hud{position:absolute;left:20px;right:20px;top:49px;z-index:4;color:#ffd08a;font:10px var(--mono);text-shadow:0 1px 3px #000}.boss-hud[hidden]{display:none}.boss-hud>div:first-child{display:flex;justify-content:space-between;margin-bottom:6px}.boss-track{height:7px;background:#291b18;border:1px solid #9f6542;padding:1px}.boss-track i{height:100%;width:100%;display:block;background:#ff9a57;transition:width .1s}.announcement{position:absolute;left:0;right:0;top:32%;z-index:4;text-align:center;font:800 35px var(--display);letter-spacing:4px;color:#f2fbb1;text-shadow:0 3px #304122;pointer-events:none}.announcement small{display:block;font:12px var(--body);letter-spacing:2px;margin-top:6px}.announcement.warning{color:#ffd083;background:#221d10bb;padding:17px 0;border-top:1px solid #bc8b33;border-bottom:1px solid #bc8b33}.weapon-toast{position:absolute;bottom:42px;left:50%;transform:translateX(-50%);background:#14220de6;border:1px solid #b0d16e;padding:9px 17px;color:#e4ffb3;white-space:nowrap;font:12px var(--mono);z-index:4;opacity:0;transition:opacity .2s;pointer-events:none}.weapon-toast.show{opacity:1}.result-title{font:800 60px/1 var(--display);letter-spacing:2px;color:var(--lime);margin:12px 0 18px}.result-subtitle{font-size:16px;line-height:1.8;color:#d6e3bd;margin-bottom:21px}.result-score{font:500 47px var(--mono);color:#effccf}.result-score-label{font:11px var(--mono);color:#a2b883;letter-spacing:2px;margin:6px 0 20px}.result-stats{display:flex;justify-content:center;gap:24px;font-size:12px;color:#b3c598}.result-stats b{display:block;font:500 22px var(--mono);color:#e0efc0;margin-top:5px}.result-new{font:12px var(--mono);color:var(--orange);margin-bottom:12px}.pause-title{font:800 70px var(--display);letter-spacing:4px;color:var(--lime)}.pause-copy{font-size:14px;color:#b7c9a1;line-height:1.9}.secondary-button{background:none;border:0;border-bottom:1px solid #5e7848;color:#bed1a4;font-size:13px;margin-top:13px;padding:7px 10px}.screen:fullscreen{height:100dvh;width:auto;aspect-ratio:4/5;margin:auto;background:#172313}.arcade:fullscreen{height:100dvh;width:min(100vw,calc((100dvh - 122px)*.8));margin:auto}.arcade:fullscreen .screen{height:calc(100dvh - 122px);width:100%}.arcade:fullscreen::backdrop{background:#060d08}.mobile-hint{display:none}
@media(min-width:1450px){.game-layout{grid-template-columns:1fr 560px 1fr;gap:50px}.left-rail{padding-right:8px}.right-rail{padding-left:8px}}
@media(max-width:1200px){.app{padding:0 28px}.game-layout{gap:22px;grid-template-columns:190px minmax(350px,1fr) 186px}.header-tag{display:none}h1{font-size:34px}.mission-copy{font-size:12px}.game-title>span{font-size:86px}.game-title>em{font-size:48px}.control-line{font-size:11px}.control-line>kbd{min-width:43px}.control-row{gap:10px}.left-bottom{font-size:9px}.scoreboard{padding:0 14px}.scoreboard strong{font-size:23px}.timer-block strong{font-size:30px}.life-block strong{font-size:14px}}
@media(max-width:1000px){.game-layout{grid-template-columns:minmax(350px,550px) 210px;justify-content:center;gap:28px}.left-rail{display:none}.app{max-width:860px}.masthead{height:84px}.game-title>span{font-size:100px}.game-title>em{font-size:56px}footer span:last-child{display:none}}
@media(max-width:720px){.app{padding:0 16px;max-width:560px}.masthead{height:74px;gap:8px}.brand{font-size:26px;gap:8px}.brand-mark{height:32px;width:32px;font-size:29px}.brand-farmer{font-size:18px;margin-left:5px}.header-actions{gap:6px}.icon-button{padding:0 9px;border-color:#344536;width:34px;height:34px}.icon-button span{display:none}.icon-button.square{width:34px}.game-layout{display:flex;flex-direction:column;padding-top:20px;gap:24px}.arcade{width:100%}.right-rail{width:100%;display:grid;grid-template-columns:1fr 1fr;gap:18px}.record{grid-column:1/-1;display:flex;align-items:center;gap:14px;padding-bottom:18px;flex-wrap:wrap}.record .section-heading{margin-right:auto}.record .section-heading>span{display:none}.record>strong{font-size:25px;margin:0}.record-caption{font-size:10px}.arsenal{padding:0;grid-column:1/-1}.weapon-list{display:grid;grid-template-columns:1fr 1fr;column-gap:12px}.arsenal>p{margin:10px 0}.boss-card{display:none}.weapon-row{padding:6px}.weapon-row strong{font-size:13px}.weapon-row small{font-size:10px}.game-title>span{font-size:clamp(70px,20vw,108px)}.game-title>em{font-size:clamp(38px,11vw,60px)}.scoreboard{height:64px;padding:0 13px}.scoreboard>div>span{font-size:9px}.scoreboard strong{font-size:23px}.timer-block strong{font-size:29px}.life-block strong{font-size:14px}.start-card{padding:25px 12px}.edition{font-size:9px;letter-spacing:2px}.start-description{font-size:14px;margin:22px 0}.start-rule{font-size:9px;gap:12px}.start-button{margin-top:23px;padding:12px 24px;min-width:220px}.enter-note{font-size:9px;letter-spacing:1px}.game-toolbar{padding:0 8px;font-size:10px}.weapon-current{gap:5px}.toolbar-right{gap:0}.toolbar-right button{padding:5px 7px}.field-label{font-size:8px;left:9px;right:9px;top:9px}.result-title{font-size:48px}.result-score{font-size:36px}.result-stats{gap:18px}.result-stats b{font-size:18px}footer{font-size:9px;padding-top:18px}.announcement{font-size:28px}.boss-hud{left:12px;right:12px;top:41px;font-size:9px}.record-caption{display:none}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto;transition:none!important}.scanlines{display:none}}

/* Keep the complete playfield within ordinary laptop viewports. */
.input-note{font-size:12px;color:#b7cda0;margin:15px 0 0}.mobile-note{display:none}
.boss-hud{pointer-events:none}#game{-webkit-touch-callout:none}
@media(min-width:1001px){.masthead{height:86px}.game-layout{grid-template-columns:minmax(180px,220px) minmax(360px,min(560px,calc((100dvh - 292px)*.8))) minmax(180px,220px);justify-content:center;padding:25px 0 24px}.scoreboard{height:64px}.game-toolbar{height:44px}.left-rail,.right-rail{padding-top:5px}.mission-path{margin:22px 0}.controls{padding-top:18px}.left-bottom{margin-top:20px}.record{padding-bottom:20px}.arsenal{padding-top:20px}.weapon-row{padding:6px 7px}.weapon-row strong{font-size:14px}.boss-card{margin-top:16px}.boss-card canvas{height:76px}.game-title>span{font-size:clamp(68px,6.9vw,98px)}.game-title>em{font-size:50px}}
@media(min-width:721px) and (max-width:1000px){.game-layout{grid-template-columns:minmax(350px,min(550px,calc((100dvh - 260px)*.8))) 190px;gap:22px}.scoreboard{height:64px}.game-title>span{font-size:84px}.game-title>em{font-size:46px}.boss-card canvas{height:75px}}
@media(max-width:720px){.mobile-note{display:inline}.desktop-note{display:none}.input-note{font-size:11px;margin-top:13px}.screen{aspect-ratio:4/5}.start-description{letter-spacing:2px}}
@media(max-height:820px) and (min-width:1001px){.left-rail h1{font-size:30px;margin-top:20px}.mission-copy{font-size:12px}.phase{padding:9px 0}.phase small{font-size:10px}.mission-path{margin:20px 0}.control-row{margin:16px 0}.control-line{margin:10px 0}.left-bottom{display:none}.record>strong{font-size:30px}.record{padding-bottom:16px}.arsenal{padding-top:18px}.arsenal>p{margin-bottom:12px}.weapon-row{padding:4px}.weapon-row strong{font-size:13px}.weapon-list{gap:2px}.boss-card{margin-top:15px;padding:12px}.boss-card canvas{height:59px}.boss-caption>span{display:none}.edition{margin-bottom:13px}.start-description{margin:20px 0}.start-button{margin-top:22px}.input-note{margin-top:12px}}
