:root{font-family:"Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;color:#fff3dc;background:#0d1625;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;touch-action:none;user-select:none}button:focus-visible,a:focus-visible{outline:3px solid #7ae1df;outline-offset:4px}[hidden]{display:none!important}#game-shell{position:relative;width:100%;height:100svh;min-height:520px;overflow:hidden;background:#162337;isolation:isolate}#stage{display:block;width:100%;height:100%;touch-action:none}.shade{position:absolute;inset:0;pointer-events:none;background:linear-gradient(#080f2366,transparent 27%,transparent 75%,#050c20a8);z-index:1}.topbar{position:absolute;top:max(22px,env(safe-area-inset-top));left:32px;right:32px;display:flex;align-items:center;justify-content:space-between;z-index:3}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:inherit;font-family:"Yu Mincho",serif;font-size:25px;letter-spacing:3px;font-weight:800;text-shadow:0 2px 12px #0007}.seal{display:grid;place-items:center;font-size:26px;border:1px solid #f8bc8b;background:#b95035b8;transform:rotate(-5deg);width:44px;height:48px}.brand small{display:block;font:10px sans-serif;letter-spacing:3px;margin-top:3px;color:#eac7a6}.chapter{text-align:center;font-size:11px;letter-spacing:5px;color:#e5c1a1}.chapter span{display:block;font-size:16px;letter-spacing:3px;margin-top:7px;color:#fff2dc}.top-actions{display:flex;gap:8px}.top-actions button{border:1px solid #f7e6cd4a;background:#1823359c;border-radius:7px;min-width:46px;height:39px;padding:0 12px;font-size:12px;backdrop-filter:blur(10px)}.start-panel{position:absolute;z-index:4;top:50%;left:max(7vw,32px);transform:translateY(-40%);width:385px;padding:26px 30px 25px;background:linear-gradient(115deg,#101e34ee,#152437c9);border-left:2px solid #dc9464;box-shadow:0 12px 60px #040d2133;backdrop-filter:blur(6px)}.kicker{font-size:11px;letter-spacing:3px;color:#e7b384}h1{font-family:"Yu Mincho",serif;font-size:52px;letter-spacing:2px;margin:18px 0 10px;white-space:nowrap;font-weight:900}h1 span{font-style:italic;font-family:Georgia,serif;font-size:25px;color:#d99970;margin:0 11px}.tagline{font-family:"Yu Mincho",serif;font-size:24px;line-height:1.7;margin:0 0 13px;letter-spacing:3px}.intro{font-size:14px;line-height:1.9;color:#d4d6d7;margin:0 0 24px}.primary{width:100%;padding:15px 14px;border:1px solid #f8ca91;background:linear-gradient(110deg,#f0bc77,#df9965);color:#252839;font-size:17px;font-weight:800;letter-spacing:3px;border-radius:4px;box-shadow:0 4px 15px #070c1933}.primary:disabled{opacity:.6;cursor:wait}.start-controls{display:grid;grid-template-columns:1fr 1fr;gap:11px 8px;margin-top:21px;font-size:11px;color:#d6d2ca}.start-controls span{white-space:nowrap}kbd{font:11px monospace;background:#ffffff12;border:1px solid #ffffff30;border-radius:3px;padding:3px 5px;margin-right:4px}.touch-note{font-size:11px;color:#a8b3c1;margin:16px 0 0}.hud{position:absolute;z-index:3;top:104px;left:34px;right:34px;display:flex;justify-content:space-between;align-items:center;pointer-events:none}.life>span,.objective>span{font-size:11px;letter-spacing:2px;color:#e4d0b6}.life #health{display:flex;gap:5px;margin-top:8px}.life i{width:24px;height:8px;border-radius:2px;background:#66d9d5;box-shadow:0 0 10px #5be7d530}.life i.empty{background:#d2c9b32b;box-shadow:none}.objective{text-align:right;display:flex;align-items:center;gap:12px}.objective strong{font:32px Georgia,serif;color:#ffdeb0}.boss-hud{position:absolute;top:103px;left:50%;transform:translateX(-50%);width:min(35%,380px);z-index:3}.boss-hud>div:first-child{display:flex;gap:12px;align-items:center;margin-bottom:7px;font-size:16px;letter-spacing:3px}.boss-hud small{font-size:10px;color:#dab7b9;letter-spacing:2px}.boss-track{height:7px;background:#321e3999;border:1px solid #f1b8aa66}.boss-track i{height:100%;display:block;background:linear-gradient(90deg,#ba5c70,#ef987a)}.combo{position:absolute;left:35px;top:166px;color:#ffc680;z-index:3;pointer-events:none}.combo strong{font:italic 42px Georgia,serif;margin-right:8px}.combo span{font-size:13px}.instruction{position:absolute;left:50%;bottom:38px;transform:translateX(-50%);z-index:3;text-align:center;padding:10px 18px;background:#102034ba;border:1px solid #e2bc8035;font-size:13px;white-space:nowrap;pointer-events:none}.bottom-guide{position:absolute;bottom:13px;width:100%;text-align:center;z-index:3;font-size:11px;letter-spacing:.5px;color:#e7d4b8a6;pointer-events:none}.controls{position:absolute;inset:0;pointer-events:none;z-index:5;display:none}.movement,.actions{position:absolute;bottom:max(25px,env(safe-area-inset-bottom));display:flex;gap:9px;align-items:end}.movement{left:19px}.actions{right:19px}.controls button{pointer-events:auto;border:1px solid #fff0cc60;background:#18273bbb;border-radius:50%;width:59px;height:59px;font-size:23px;box-shadow:0 3px 12px #060d2633}.controls button:active,.controls button.held{background:#587e8aaa}.controls small{font-size:9px;display:block;margin-top:2px;color:#ecd7bc}.controls .slash{background:#c47447d9;width:69px;height:69px;border-color:#ffc47f}.controls .dash{width:51px;height:51px;font-size:20px}.modal{position:absolute;inset:0;background:#071426b0;backdrop-filter:blur(9px);z-index:10;display:grid;place-items:center;padding:24px}.modal-card{text-align:center;width:min(360px,100%);padding:30px;background:#162438ef;border:1px solid #d4b28455;box-shadow:0 15px 80px #0005}.modal h2{font-family:"Yu Mincho",serif;font-size:35px;margin:18px 0;color:#ffe2b5}.modal p{font-size:14px;line-height:1.8;color:#d1d3d2;margin:0 0 25px}.secondary{background:none;border:0;font-size:13px;text-decoration:underline;margin-top:17px;color:#c5c9ce}.playing .start-panel{display:none}#load-error{color:#ffbeab;font-size:13px;line-height:1.7}
@media(pointer:coarse),(max-width:650px){.controls{display:block}.bottom-guide{display:none}.instruction{bottom:116px;max-width:calc(100% - 30px);white-space:normal;width:max-content;font-size:11px}.start-controls{display:none}.touch-note{font-size:12px}}
@media(max-width:650px){#game-shell{min-height:480px}.topbar{left:17px;right:17px;top:18px}.brand{font-size:20px;gap:8px}.brand small{font-size:8px}.seal{width:34px;height:40px;font-size:23px}.chapter{display:none}.top-actions button{font-size:11px;padding:0 9px;min-width:38px}.start-panel{left:20px;top:45%;width:calc(100% - 40px);max-width:340px;padding:22px 24px;transform:translateY(-40%)}h1{font-size:42px}.tagline{font-size:21px}.intro{margin-bottom:18px}.hud{left:18px;right:18px;top:87px}.life i{width:17px;height:7px}.life #health{gap:3px}.boss-hud{top:142px;width:calc(100% - 38px)}.combo{top:135px;left:19px}.boss-hud:not([hidden])~.combo{top:186px}.actions{gap:7px;right:12px}.movement{left:12px;gap:7px}.controls button{width:49px;height:49px}.controls .slash{width:59px;height:59px}.controls .dash{width:43px;height:43px}.bottom-guide{display:none}}
@media(max-height:540px){.topbar{top:12px}.brand{font-size:18px}.seal{height:33px;width:32px}.hud{top:68px}.boss-hud{top:68px}.start-panel{top:54%;padding:16px 22px;width:350px}h1{font-size:36px;margin:10px 0}.tagline{font-size:19px;line-height:1.4}.intro{font-size:12px;margin-bottom:13px}.start-controls,.touch-note{display:none}.chapter{font-size:10px}.chapter span{font-size:13px}.combo{top:112px}.instruction{bottom:100px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

/* Keep touch labels on one line inside compact controls. */
.controls button{padding:0}.controls small{white-space:nowrap;line-height:1.2}
