:root{color-scheme:dark;--white:#fff6e8;--muted:#d1d7d1;--ink:#172c30;--pink:#edb5ba;--gold:#f7dda6}*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;overflow:hidden}body{font-family:"Yu Gothic UI",Meiryo,sans-serif;color:var(--white);background:var(--ink)}button,select{font:inherit}button{cursor:pointer;min-height:44px;transition:background .15s,transform .15s}button:active{transform:translateY(1px)}button:focus-visible,select:focus-visible,canvas:focus-visible{outline:2px solid var(--gold);outline-offset:3px}button:disabled{opacity:.45;cursor:default}button,select{-webkit-tap-highlight-color:transparent}button:hover{filter:brightness(1.1)}[hidden]{display:none!important}#app{position:relative;width:100%;height:100%;height:100dvh;isolation:isolate}#world{display:block;width:100%;height:100%;outline:0;touch-action:none}.vignette{position:absolute;inset:0;pointer-events:none;background:linear-gradient(#10272f4a,transparent 22%,transparent 70%,#10272f75)}.topbar{position:absolute;inset:0 0 auto;display:flex;align-items:center;justify-content:space-between;padding:24px 34px;z-index:12;pointer-events:none}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--white);text-shadow:0 1px 5px #142e37;pointer-events:auto;font-size:12px;letter-spacing:2px}.brand small{display:block;font:8px Arial,sans-serif;letter-spacing:2px;margin-top:6px}.seal{font:28px "Yu Mincho",serif;color:var(--pink);border:1px solid #ffcbd078;padding:3px 8px;background:#1e34378a}.top-actions{display:flex;gap:7px;pointer-events:auto}.top-actions button{background:#183036ef;border:1px solid #e1ddce55;color:var(--white);border-radius:5px;padding:8px 15px;font-size:11px}.overlay{position:absolute;inset:0;z-index:10;display:flex;align-items:center;padding:100px 8% 60px;background:linear-gradient(90deg,#132b32f5 0%,#132b32e0 27%,#17313a7a 53%,#17313a00 80%);overflow:auto}.menu-card{width:min(450px,48%);flex-shrink:0;padding:8px 0}.eyebrow{font-size:11px;letter-spacing:3px;color:var(--pink);line-height:1.8;margin:0 0 20px}h1,h2,.scene-caption strong{font-family:"Yu Mincho","MS PMincho",serif;font-weight:500}h1{font-size:25px;letter-spacing:2px;line-height:1.5;margin:0}h1>span{display:block;font-size:21px;font-family:Georgia,serif;letter-spacing:3px}.number{font-size:80px;line-height:1.1;margin-left:6px;font-style:italic;color:var(--gold)}.title-rule{height:1px;background:linear-gradient(90deg,#ead5a6,transparent);width:200px;margin:16px 0 20px}.menu-card h2{font-size:26px;letter-spacing:3px;margin:0 0 16px}.lead{color:var(--muted);font-size:12px;line-height:2.1;margin:0 0 18px}.badges{display:flex;flex-wrap:wrap;gap:7px;font-size:9px;color:var(--gold);margin:18px 0 25px}.badges span{border:1px solid #e5d4ac50;border-radius:30px;padding:5px 10px}.options{display:flex;gap:20px;margin-bottom:19px}.options label{font-size:10px;color:var(--muted);display:flex;flex-direction:column;gap:8px;flex:1}.options select{min-height:44px;padding:8px 10px;background:#162b30;color:var(--white);border:1px solid #b7c1b65a;border-radius:4px}.primary{width:100%;background:var(--pink);border:1px solid #f9d1cb;border-radius:5px;padding:15px 22px;color:#29282e;font-size:14px;font-weight:bold;letter-spacing:2px;display:flex;justify-content:space-between;align-items:center}.text-button{display:block;margin:8px auto 0;background:none;border:0;color:var(--muted);font-size:11px}.prototype{font-size:9px;color:#bbc6bf;text-align:center;margin:6px 0 0}#help{padding:10px 0;font-size:11px;line-height:1.9;color:var(--muted)}.scene-caption{position:absolute;bottom:100px;right:6%;text-align:right;text-shadow:0 2px 8px #102b38}.scene-caption>span{font-size:9px;letter-spacing:2px;color:var(--gold)}.scene-caption strong{display:block;font-size:34px;line-height:1.7;letter-spacing:4px;margin-top:10px}.scene-caption p{font-size:11px;letter-spacing:2px}.center{justify-content:center;background:#132832dd;backdrop-filter:blur(7px);padding:90px 20px 35px}.dialog{width:min(390px,100%);border:1px solid #82958b66;border-radius:12px;padding:32px;background:#192e32ed;text-align:center}.dialog h2{font-size:30px;letter-spacing:3px}.dialog p{font-size:12px;line-height:1.9;color:var(--muted)}.secondary{width:100%;margin-top:10px;background:transparent;color:var(--muted);border:1px solid #84988c70;border-radius:5px;padding:12px;font-size:12px}#hud{position:absolute;inset:0;pointer-events:none}.player-card,.enemy-card,.score-card{position:absolute;top:106px;background:#172d34ed;border:1px solid #d5d0b44a;border-radius:7px;padding:13px 16px;box-shadow:0 5px 20px #17343225}.player-card{left:30px;width:214px}.player-card p,.enemy-card p{margin:0 0 8px;font-size:12px;letter-spacing:2px}.player-card p span{font-size:8px;color:var(--muted);margin-left:12px}#hearts{color:#f8b9c7;font-size:18px;letter-spacing:2px}.barrier-status{display:flex;gap:8px;align-items:center;font-size:10px;margin-top:12px}.meter{height:4px;background:#687b7d;flex:1}.meter i{display:block;background:var(--gold);height:100%;width:100%}.barrier-status b{font-weight:400;min-width:36px;color:var(--gold)}.enemy-card{left:50%;transform:translateX(-50%);width:min(350px,32%)}.enemy-card p span{display:block;letter-spacing:0;font-size:10px;color:var(--muted);margin-top:7px}.enemy-meter{height:5px;background:#617777}.enemy-meter i{display:block;height:100%;width:100%;background:#96deed}.score-card{right:30px;text-align:right}.score-card>span{font:12px Consolas,monospace;color:var(--muted)}.score-card strong{display:block;font:27px Consolas,monospace;color:var(--gold);margin:4px 0}.score-card small{font-size:9px;color:var(--muted)}#crosshair{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:28px;height:28px;border:1px solid #ffffffa0;border-radius:50%;color:white;text-shadow:0 1px 3px #18343d}#crosshair i{position:absolute;left:12px;top:12px;width:3px;height:3px;background:white;border-radius:50%}#crosshair span{position:absolute;top:34px;left:50%;transform:translateX(-50%);white-space:nowrap;font-size:9px;letter-spacing:1px;background:#193139eb;padding:3px 7px;border-radius:3px}#crosshair.locked{border-color:#ffe3a6;box-shadow:0 0 10px #ffefb350;color:#ffe3a6}#enemy-marker{position:absolute;transform:translate(-50%,-100%);font-size:10px;color:white;text-shadow:0 2px 3px #173840}#enemy-marker span{display:block;text-align:center;color:#f9dda9}#notice{position:absolute;top:29%;left:50%;transform:translateX(-50%);font-size:12px;color:var(--white);background:#18333bed;border:1px solid #e2dcc05c;border-radius:30px;padding:9px 19px;white-space:nowrap;opacity:0;transition:opacity .2s}#notice.show{opacity:1}#recenter{position:absolute;right:30px;bottom:90px;pointer-events:auto;border:1px solid #e5d9bc66;background:#173039e9;color:var(--white);padding:10px 15px;border-radius:5px;font-size:11px}.desktop-guide{position:absolute;bottom:52px;left:30px;display:flex;gap:18px;padding:10px 14px;background:#1a3038eb;border-radius:6px;font-size:10px;color:var(--muted)}kbd{font:9px Consolas,monospace;border:1px solid #dce1d26b;border-radius:3px;padding:3px;color:var(--white);margin-right:4px}footer{position:absolute;bottom:0;left:0;right:0;z-index:12;display:flex;justify-content:space-between;padding:12px 30px;color:#f0e9d8;background:#15313ae9;font-size:8px;letter-spacing:1px;pointer-events:none}.result-card{display:grid;grid-template-columns:1fr 1fr;max-width:850px;width:100%;background:#1a3035;border:1px solid #b8bda066;border-radius:12px;overflow:hidden;box-shadow:0 20px 80px #10283380}.result-card img{width:100%;height:100%;object-fit:cover;min-height:340px}.result-body{padding:28px}.result-body h2{font-size:32px;margin:10px 0}.result-body>p:not(.eyebrow){font-size:11px;color:var(--muted);line-height:1.9}.results{display:grid;grid-template-columns:1fr 1fr;gap:18px;padding:20px 0;margin:20px 0;border-block:1px solid #7c918451}.results span{font-size:10px;color:var(--muted)}.results b{display:block;font:22px Consolas,monospace;margin-top:7px;color:var(--gold)}#touch{display:none}body.playing footer{display:none}body.playing .topbar{padding-block:15px}body.playing .brand{font-size:10px}body.playing .desktop-guide{bottom:20px}.result-card.lost{max-width:420px;grid-template-columns:1fr}.result-card.lost img{display:none}
@media(max-height:760px) and (min-width:801px){.overlay{padding-block:85px 45px}.menu-card .eyebrow{margin-bottom:9px}.number{font-size:59px}.title-rule{margin:8px 0 10px}.menu-card h2{font-size:23px;margin-bottom:8px}.lead{margin-bottom:10px}.badges{margin:10px 0 15px}.options{margin-bottom:13px}.scene-caption{bottom:65px}}
@media(pointer:coarse),(max-width:800px){.desktop-guide{display:none}#touch{display:block;position:absolute;inset:0;pointer-events:none}#stick{position:absolute;bottom:max(25px,env(safe-area-inset-bottom));left:25px;width:112px;height:112px;border-radius:50%;border:1px solid #ffffff80;background:#1c353bd9;pointer-events:auto;touch-action:none;display:grid;place-items:center}#stick-knob{width:48px;height:48px;border-radius:50%;background:#efd6baa8;border:1px solid #fff2d8;pointer-events:none}#stick small{position:absolute;bottom:5px;font-size:9px;color:var(--white);pointer-events:none}.touch-right{position:absolute;right:18px;bottom:max(27px,env(safe-area-inset-bottom));text-align:right}.touch-right>span{font-size:8px;color:white;text-shadow:0 1px 4px #18303c}.touch-right>div{display:flex;gap:10px;margin-top:10px}.touch-right button{pointer-events:auto;touch-action:none;width:70px;height:70px;border-radius:50%;border:1px solid #eeddbac0;background:#243e48ee;color:var(--white);font-size:12px}.touch-right button span{display:block;font-size:7px;letter-spacing:1px;margin-top:5px}.touch-right #barrier{background:#a84d66ef}.touch-right #barrier:disabled{opacity:.65}#recenter{bottom:135px;right:22px;font-size:10px;padding:7px 12px}#recenter kbd{display:none}}
@media(max-width:800px){.topbar{padding:14px 16px}.brand{font-size:10px;letter-spacing:1px}.brand small{font-size:6px;letter-spacing:1px}.seal{font-size:22px}.top-actions{gap:4px}.top-actions button{font-size:10px;padding:6px 9px}.overlay{padding:86px 25px 40px;align-items:flex-start;background:linear-gradient(90deg,#142d34f0,#173138dc 65%,#1831389a)}.menu-card{width:100%;max-width:420px;margin:auto}.menu-card .eyebrow{margin-bottom:9px}h1{font-size:22px}.number{font-size:56px}.title-rule{margin:8px 0 12px}.menu-card h2{font-size:23px}.lead{font-size:11px;line-height:1.9}.scene-caption{display:none}.badges{margin:14px 0 18px}footer{padding:9px 15px;font-size:7px;letter-spacing:0}footer span{display:none}.player-card{top:78px;left:12px;width:155px;padding:10px}.player-card p{font-size:10px;margin-bottom:5px}.player-card p span{display:none}#hearts{font-size:14px;letter-spacing:0}.barrier-status{font-size:9px;gap:5px;margin-top:9px}.enemy-card{top:182px;left:12px;transform:none;width:210px;padding:10px}.enemy-card p{font-size:10px}.enemy-card p span{font-size:9px}.score-card{top:78px;right:12px;padding:10px}.score-card strong{font-size:23px}.score-card small{font-size:8px}#notice{top:40%;font-size:10px;max-width:90%;white-space:normal;text-align:center}.center{align-items:center;padding:80px 15px 20px}.result-card{grid-template-columns:1fr;max-width:420px;margin:auto}.result-card img{height:170px;min-height:0;object-position:50% 38%}.result-body{padding:18px}.result-body .eyebrow{margin-bottom:6px}.result-body h2{font-size:26px;margin:5px 0}.results{gap:10px;margin:10px 0;padding:12px 0}.results b{font-size:18px}.result-body .primary{padding:12px}.result-body>p{margin:8px 0}}
@media(max-height:500px) and (orientation:landscape){.topbar{padding:7px 15px!important}.brand .seal{font-size:20px}.overlay{padding-top:68px;padding-bottom:20px}.menu-card{max-width:540px}.menu-card .eyebrow,.menu-card .badges,.menu-card .lead,.prototype{display:none}.menu-card h1{font-size:20px;display:flex;gap:14px;align-items:center}.menu-card h1>span{display:inline;font-size:14px}.number{font-size:35px}.title-rule{margin:6px 0}.menu-card h2{font-size:20px;margin-bottom:10px}.options{margin-bottom:10px;gap:12px}.options label{flex-direction:row;align-items:center;white-space:nowrap}.options select{min-height:40px;width:100%}.primary{min-height:44px;padding:11px 20px}.text-button{min-height:35px;margin-top:0}.scene-caption{display:none}.player-card{top:65px;left:12px;width:165px;padding:8px}.enemy-card{top:65px;left:50%;transform:translateX(-50%);width:230px;padding:9px}.score-card{top:65px;right:12px;padding:8px}.score-card strong{font-size:21px}.player-card p{font-size:10px}#hearts{font-size:13px}.player-card p span{display:none}.barrier-status{margin-top:7px}.score-card small{font-size:8px}#notice{top:43%;font-size:10px}#stick{height:90px;width:90px;bottom:14px;left:20px}.touch-right{bottom:14px}.touch-right button{width:60px;height:60px}#recenter{bottom:112px;right:20px;min-height:44px}.result-card{max-width:740px;grid-template-columns:.75fr 1fr}.result-card img{height:100%;min-height:270px}.result-body{padding:14px 22px}.result-body h2{font-size:24px}.result-body .eyebrow{display:none}.results{margin:8px 0;padding:8px 0;gap:8px}.results b{font-size:16px}.result-body .secondary{padding:6px;min-height:44px}.result-body .award{margin:6px 0}.center{padding-top:62px;padding-bottom:12px}.dialog{padding:16px 25px}.dialog h2{margin:8px}.dialog .eyebrow{margin:0}footer{font-size:7px;padding:7px 15px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}

.center{align-items:flex-start}.dialog,.result-card{margin:auto}
@media(max-width:420px){.brand>span:last-child{display:none}}
@media(max-width:640px) and (orientation:landscape){.player-card{width:140px}.enemy-card{width:180px}.score-card{width:120px}.barrier-status{gap:4px}}
.girls-portrait{display:block;width:min(36vw,480px);height:auto;margin:0 0 20px auto;border-radius:46% 46% 12px 12px;border:1px solid #f6dfbe75;box-shadow:0 18px 70px #132b3255}.scene-caption{bottom:65px}.scene-caption strong{font-size:23px;line-height:1.4;margin-top:9px}.scene-caption p{margin-top:10px}.result-card img{object-fit:contain;background:#ead6c4}
@media(max-height:800px){.girls-portrait{width:min(32vw,46vh);margin-bottom:12px}.scene-caption strong{font-size:20px}}
.girls-portrait{width:min(24vw,280px)}
@media(max-height:650px){.girls-portrait{width:min(20vw,25vh)}}
#flight-readout{position:absolute;left:50%;bottom:70px;transform:translateX(-50%);font:11px Consolas,monospace;letter-spacing:1px;background:#102b36dc;border:1px solid #c4e9f060;padding:9px 14px;border-radius:5px;white-space:nowrap;color:#d5faff}#lock{position:absolute;right:30px;bottom:145px;pointer-events:auto;background:#173039eb;border:1px solid #f1d29380;border-radius:5px;color:#ffe6b5;padding:8px 14px;font-size:11px}#crosshair.hit{border-color:white;box-shadow:0 0 16px #fff1a4;transform:translate(-50%,-50%) scale(1.2)}body.boosting #flight-readout{border-color:#b8f5ff;color:white;box-shadow:0 0 20px #75d6ff44}body.boosting .vignette{background:radial-gradient(ellipse,transparent 40%,#9ad8ee33 80%,#cff7ff55)}
@media(pointer:coarse),(max-width:800px){.touch-right>div{display:grid;grid-template-columns:repeat(2,62px);gap:8px}.touch-right button{width:62px;height:62px;font-size:11px}.touch-right #boost{background:#2a6a86ed}.touch-right>span{display:none}.touch-right{right:15px}#lock{bottom:220px;right:15px;min-height:44px}#recenter{bottom:170px;right:15px}#flight-readout{bottom:182px;font-size:9px;left:15px;transform:none;padding:7px 9px}}
@media(max-height:500px) and (orientation:landscape){.touch-right>div{grid-template-columns:repeat(2,52px);gap:6px}.touch-right button{width:52px;height:52px;font-size:10px}#lock{bottom:170px}#recenter{bottom:120px}#flight-readout{bottom:122px;left:20px}body.playing .desktop-guide{font-size:8px;gap:9px}}
@media(prefers-reduced-motion:reduce){body.boosting .vignette{background:none}#crosshair.hit{transform:translate(-50%,-50%)}}
#spirit-panel{position:absolute;left:30px;top:242px;width:214px;background:#172d34ed;border:1px solid #edc68780;border-radius:6px;padding:10px 12px;display:flex;align-items:center;gap:9px;font-size:10px;color:#ffe4a1}#spirit-panel b{font-size:9px;min-width:62px;text-align:right}#spirit-fill{width:0;background:#ffdf79;height:100%}#special{pointer-events:auto;position:absolute;right:30px;bottom:202px;width:115px;padding:10px;color:#fff0c4;background:#403348ed;border:1px solid #f0cf8399;border-radius:9px;font-size:13px}#special span{display:block;font-size:8px;margin-top:5px}#special.ready{background:#b9527bed;border-color:#ffe4a2;box-shadow:0 0 20px #f9cf774d}#boss-callout{position:absolute;top:225px;left:50%;transform:translateX(-50%);text-align:center;padding:9px 16px;max-width:420px;width:max-content;background:#14303bd9;border:1px solid #a2d5e777;border-radius:7px;color:#e0f4ff}#boss-callout strong{display:block;font-size:15px;letter-spacing:1px}#boss-callout span{display:block;margin-top:5px;font-size:11px}#boss-timer{display:block;font-size:12px;margin-top:4px;color:#f8dda4}#boss-callout.warning{border-color:#8ce8ff;background:#16394fe8}#boss-callout.opening{border-color:#ffe58c;color:#ffeaa5;background:#463525e6}#opening-status{position:absolute;top:183px;left:50%;transform:translateX(-50%);width:min(350px,32%);font-size:10px;color:#ffe5a3;background:#173038d9;padding:7px 12px;border-radius:5px}#opening-status .meter{margin-top:5px}#opening-fill{background:#ffe395}
@media(max-width:800px){#spirit-panel{top:139px;left:12px;width:155px;padding:7px;gap:5px;font-size:9px}#spirit-panel b{min-width:50px;font-size:8px}#opening-status{top:250px;left:12px;width:210px;transform:none;padding:6px 9px;font-size:9px}#boss-callout{top:300px;width:90%;max-width:370px;padding:7px 10px}#boss-callout strong{font-size:13px}#boss-callout span{font-size:10px}#special{right:15px;bottom:175px;width:132px;height:44px;min-height:44px;padding:5px;font-size:12px}#special span{font-size:7px;margin-top:2px}#lock{bottom:280px}#recenter{bottom:230px}}
@media(pointer:coarse) and (min-width:801px){#special{right:15px;bottom:175px;width:132px;height:44px;padding:4px}#lock{bottom:280px}#recenter{bottom:230px}}
@media(max-height:500px) and (orientation:landscape){#spirit-panel{top:145px;left:12px;width:140px;padding:6px}#opening-status{top:145px;left:50%;transform:translateX(-50%);width:230px;font-size:8px;padding:5px 9px}#boss-callout{top:184px;width:250px;padding:5px 8px}#boss-callout strong{font-size:11px}#boss-callout span{font-size:9px}#boss-timer{font-size:10px}#special{right:15px;bottom:134px;width:110px;height:44px}#lock{bottom:235px}#recenter{bottom:185px}}
