:root{color-scheme:dark;--night:#131320;--panel:#1B1B2E;--text:#E8E4D8;--gold:#D9A94C;--bright:#F0CE7E;--muted:#b5adbe;--red:#C93A2E;--serif:"Hiragino Mincho ProN","Yu Mincho",serif;--sans:"Hiragino Kaku Gothic ProN","Yu Gothic",sans-serif}
*{box-sizing:border-box}html,body{margin:0;width:100%;min-height:100%;background:var(--night)}body{font-family:var(--sans);color:var(--text);overscroll-behavior:none}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation}button:disabled{cursor:wait;opacity:.55}button:focus-visible,canvas:focus-visible{outline:2px solid var(--bright);outline-offset:4px}button:active:not(:disabled){transform:scale(.97)}[hidden]{display:none!important}
.game-shell{width:min(1200px,100%);height:100svh;min-height:560px;max-height:1050px;margin:0 auto;display:flex;flex-direction:column;padding:0 max(24px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(24px,env(safe-area-inset-left))}
.masthead{height:92px;flex:none;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;gap:16px;align-items:center}.crest{font-size:44px;line-height:1;color:var(--gold);font-family:Georgia,serif;transform:rotate(-25deg)}h1{font:600 26px/1.3 var(--serif);letter-spacing:.16em;margin:0}.brand p{font:12px/1.5 var(--serif);letter-spacing:.38em;margin:5px 0 0;color:var(--muted)}.edition{font-size:12px;text-align:right;line-height:1.8;letter-spacing:.04em;color:var(--muted)}.edition span{display:block;letter-spacing:.22em;color:var(--gold)}
.arena{position:relative;flex:1;min-height:320px;isolation:isolate;background:var(--night);border:1px solid #d9a94c25;overflow:hidden}canvas{display:block;width:100%;height:100%;touch-action:none;user-select:none;-webkit-user-select:none;outline-offset:-4px!important}.hud{position:absolute;left:24px;right:24px;top:20px;display:grid;grid-template-columns:1fr 1fr 1fr;align-items:start;pointer-events:none}.label{display:block;color:var(--muted);font-size:12px;letter-spacing:.15em;margin-bottom:8px}.vitality{padding-top:4px}#health{display:flex;gap:10px}#health i{display:block;width:15px;height:15px;background:var(--gold);transform:rotate(45deg);border:1px solid var(--bright);transition:opacity .15s}#health i.lost{opacity:.2;background:none}.score-box{text-align:center}#score{font:36px/1 Georgia,serif;font-variant-numeric:tabular-nums;letter-spacing:.03em}.pause{pointer-events:auto;justify-self:end;background:#131320b0;border:1px solid #d9a94c50;border-radius:50%;width:48px;height:48px;display:grid;place-items:center}.pause svg{width:22px;height:22px;fill:none;stroke:var(--text);stroke-width:2;stroke-linecap:round}.pause:hover{border-color:var(--gold)}
.chain{position:absolute;top:106px;left:24px;pointer-events:none;color:var(--bright);min-width:72px}.chain strong{font:30px/1 Georgia,serif;margin-right:6px}.chain span{font:12px var(--serif)}.chain-meter{height:2px;background:#d9a94c25;margin-top:10px;width:82px}.chain-meter i{display:block;width:100%;height:100%;background:var(--gold);transform-origin:left}.arena-tip{position:absolute;bottom:16px;left:12px;right:12px;text-align:center;font-size:14px;pointer-events:none;color:var(--text);text-shadow:0 2px 6px var(--night);margin:0;line-height:1.7}
.overlay{position:absolute;inset:0;display:grid;place-items:center;padding:20px;background:#131320b5;backdrop-filter:blur(3px)}.panel{width:min(420px,100%);text-align:center;padding:20px 20px 24px;background:linear-gradient(180deg,#13132010,#131320ed 55%,#131320f5);position:relative}.eyebrow{color:var(--gold);font:13px/1.8 var(--serif);letter-spacing:.28em;margin:0 0 4px}.intro-art{height:170px;position:relative;display:grid;place-items:center}.intro-art img{position:relative;height:184px;width:184px;object-fit:contain;z-index:1;filter:drop-shadow(0 8px 8px #0006)}.moon-ring{position:absolute;width:138px;height:138px;border-radius:50%;border:1px solid #d9a94c65;box-shadow:0 0 35px #d9a94c0a}.moon-ring:after{content:"";position:absolute;inset:-8px;border:1px solid #d9a94c20;border-radius:50%}h2{font:600 clamp(28px,4vw,40px)/1.4 var(--serif);letter-spacing:.12em;margin:12px 0 14px}.small-only{display:none}.instructions{font-size:15px;line-height:1.9;color:var(--text);margin:0 0 20px}.primary{min-height:52px;width:min(290px,100%);background:#232130;border:1px solid var(--gold);box-shadow:0 4px 14px #0003,inset 0 1px #f0ce7e30;color:var(--bright);font:600 17px/1.4 var(--serif);letter-spacing:.12em;padding:12px 16px;transition:background .16s,transform .09s}.primary:hover:not(:disabled){background:#332d32}.alternative{font-size:12px;line-height:1.8;color:var(--muted);margin:12px 0 0}#load-error{font-size:14px;line-height:1.7;color:var(--bright)}.result-score{display:block;font:64px/1.1 Georgia,serif;font-variant-numeric:tabular-nums;color:var(--bright);margin:8px 0 24px}.result-stats{display:flex;justify-content:space-between;gap:8px;border-top:1px solid #d9a94c30;padding:18px 0 24px}.result-stats p{margin:0;flex:1}.result-stats span{display:block;font-size:12px;color:var(--muted);margin-bottom:6px}.result-stats strong{font:24px Georgia,serif;font-variant-numeric:tabular-nums}.pause-panel{padding-block:44px}
.corner{position:absolute;pointer-events:none;width:20px;height:20px;border-color:var(--gold);border-style:solid;opacity:.65}.tl{left:0;top:0;border-width:1px 0 0 1px}.tr{right:0;top:0;border-width:1px 1px 0 0}.bl{left:0;bottom:0;border-width:0 0 1px 1px}.br{right:0;bottom:0;border-width:0 1px 1px 0}.controls{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:64px;flex:none}.control-help{font-size:12px;line-height:1.7;color:var(--muted);margin:0}.gesture{font-size:20px;color:var(--gold);margin-right:8px}.settings{display:flex;gap:8px;flex:none}.settings button{background:none;border:0;min-height:48px;padding:8px;color:var(--muted);font-size:12px}.settings button:hover,.settings button[aria-pressed=true]{color:var(--bright)}.credit{margin:0 0 2px;font-size:10px;color:var(--muted);text-align:center;line-height:1.7}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
@media(max-width:600px){.game-shell{padding-inline:max(12px,env(safe-area-inset-left));min-height:600px}.masthead{height:76px}.brand{gap:8px}.crest{font-size:32px}h1{font-size:22px}.edition{font-size:10px}.hud{left:16px;right:16px;top:16px}.chain{left:16px;top:92px}#score{font-size:30px}.controls{gap:4px;min-height:72px;align-items:center;flex-wrap:wrap;justify-content:center;padding:4px 0}.control-help{text-align:center;flex-basis:100%}.settings{margin-top:-8px}.settings button{min-height:36px}.desktop-help{display:none}.panel{padding:12px}.intro-art{height:155px}.intro-art img{width:166px;height:166px}h2{font-size:32px}.instructions{font-size:14px}.arena-tip{font-size:12px}.result-score{font-size:54px}}
@media(max-height:640px) and (min-width:601px){.game-shell{min-height:420px}.masthead{height:64px}.arena{min-height:250px}.controls{min-height:48px}.intro-art{position:absolute;left:-90px;top:30px;height:180px;opacity:.8}.intro-art img{height:180px;width:180px}.panel{margin-left:100px;max-width:380px}h2{font-size:28px;margin:6px 0}.eyebrow{font-size:12px}.instructions{margin-bottom:12px}.alternative{margin-top:8px}.result-score{font-size:40px;margin:4px 0 12px}.result-stats{padding:12px 0}.hud{top:12px}.credit{display:none}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important}}
/* Keep the HUD outside the playable canvas so spawns and the character never overlap it. */
canvas{height:calc(100% - 86px);margin-top:86px}
.game-shell{min-height:min(560px,100svh)}
.settings button{min-height:48px}
@media(max-width:600px){.game-shell{min-height:min(600px,100svh)}.arena{min-height:0}.controls{min-height:76px}}
@media(max-height:640px) and (min-width:601px){
 .game-shell{min-height:min(320px,100svh)}.masthead{height:52px}.arena{min-height:0}.overlay{padding:4px}
 .panel{padding:8px 16px}.pause-panel{padding:20px}.intro-art{top:10px}
 .instructions{font-size:13px;line-height:1.7;margin-bottom:8px}.alternative{font-size:11px;line-height:1.5;margin-top:6px}
 .primary{min-height:48px;padding:8px}.result-stats{padding:8px 0}.result-score{font-size:32px;margin:4px 0 8px}
 .result-stats strong{font-size:20px}.result-panel h2{font-size:24px}.result-panel .eyebrow{display:none}
 canvas{height:calc(100% - 64px);margin-top:64px}.hud{top:8px}.label{margin-bottom:4px}#score{font-size:28px}
 .chain{top:76px}.arena-tip{bottom:6px;font-size:11px}
}
@media(max-width:600px) and (max-height:700px){
 .masthead{height:64px}.overlay{padding:8px}.panel{padding:8px}.intro-art{height:100px}.intro-art img{width:112px;height:112px}
 .moon-ring{width:88px;height:88px}h2{font-size:24px;line-height:1.4;margin:6px 0 10px}.eyebrow{font-size:11px}
 .instructions{font-size:13px;line-height:1.7;margin-bottom:12px}.alternative{font-size:11px;line-height:1.6;margin-top:8px}
 .primary{min-height:48px;padding:8px}.result-score{font-size:40px;margin:8px 0 16px}.result-stats{padding:12px 0 16px}
}
