:root{color-scheme:dark;--bg:#090b0e;--line:#2a2e33;--text:#eaece9;--muted:#949b9f;--gold:#f2ce61;font-family:Inter,"Segoe UI","Noto Sans JP","Yu Gothic UI",sans-serif;font-synthesis:none}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);font-size:16px}
button,input{font:inherit;-webkit-tap-highlight-color:transparent}
button{cursor:pointer;border:1px solid var(--line);background:#191d22;color:var(--text);border-radius:6px;min-height:40px;padding:9px 12px;font-size:14px;touch-action:manipulation}
button:hover{border-color:#767569;background:#25292d}
button:disabled{cursor:default;opacity:.4}
button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--gold);outline-offset:4px}
[hidden]{display:none!important}
.workspace{width:100%}
.stage{position:relative;background:#000;height:100svh;min-height:0;overflow:hidden;isolation:isolate}
.stage canvas{display:block;width:100%;height:100%;outline:none;touch-action:manipulation}
.language-switch{position:absolute;z-index:5;top:max(14px,env(safe-area-inset-top));right:max(14px,env(safe-area-inset-right));display:flex;gap:4px;padding:4px;border:1px solid #d1b97540;border-radius:7px;background:#070a0db8;backdrop-filter:blur(8px)}
.language-switch button{min-height:28px;padding:4px 8px;border:0;background:transparent;color:#9ca3a5;font:600 11px/1 ui-monospace,monospace;letter-spacing:.08em}
.language-switch button{background:#d1b975;color:#17150e}
.performance{display:block;color:#9fa69f;font-size:12px;margin-bottom:8px}
.eyebrow{color:#c4b680;font-family:ui-monospace,monospace;font-size:11px;letter-spacing:.22em;text-shadow:0 1px 8px #000}
.start-screen{position:absolute;z-index:2;top:12%;left:50%;width:min(650px,90%);transform:translateX(-50%);padding:26px 24px;text-align:center;pointer-events:none}
.start-screen{background:radial-gradient(ellipse,#080c12b8,transparent 72%)}
.start-screen h2{margin:12px 0 14px;font-size:clamp(40px,7vw,82px);font-weight:700;letter-spacing:.12em;line-height:1.15;text-shadow:0 2px 34px #000,0 0 48px #f5ce6819}
.start-message{font-size:14px;letter-spacing:.2em;color:#d3d8d5;margin:0 0 25px}
.start-button{pointer-events:auto;border-color:#d1b97580;background:#0e141cd9;color:#ffe3a1;padding:13px 24px;letter-spacing:.16em;font-size:13px;box-shadow:0 0 32px #f2ce610b}
.start-button:hover{background:#332d1de8;border-color:#f2ce61}
.tap-hint{display:block;margin-top:10px;font-size:11px;color:#b2bcbf;letter-spacing:.08em}
.start-help{font-size:11px;color:#a9b4b8;line-height:1.8;margin:24px 0 0}
.start-help p{margin:5px 0}
.start-help span{padding:0 9px;color:#706f62}
.result{position:absolute;z-index:2;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:32px;padding:24px;text-align:center;pointer-events:none;color:#f5f3ec;text-shadow:0 2px 4px #000,0 0 24px #000c}
/* A soft, edge-free veil over the whole scene, never a bordered result card. */
.result::before{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(ellipse at center,#03060999, #03060940 48%,transparent 85%)}
.result h2{margin:0;padding-left:.13em;font-size:clamp(34px,6.5vw,94px);line-height:1.12;font-weight:700;letter-spacing:.13em;white-space:nowrap}
.result-score-line{display:flex;flex-direction:column;align-items:center;gap:8px;margin:0;max-width:100%}
.result-label{color:#d9c792;font-size:12px;font-weight:500;letter-spacing:.3em;padding-left:.3em}
.result strong{display:block;max-width:100%;font-size:clamp(44px,7vw,96px);line-height:1.05;font-weight:300;font-variant-numeric:lining-nums tabular-nums;letter-spacing:.025em;overflow-wrap:anywhere}
.result-message{margin:0;color:#a8ffc1;font-size:clamp(16px,2.4vw,28px);font-weight:600;letter-spacing:.06em;text-shadow:0 0 24px #35ff7a88}
.stage.game-clear .result::before{background:radial-gradient(ellipse at center,#082a1899,#03090655 50%,transparent 85%)}
.stage.game-clear .result h2{color:#b8ffca;text-shadow:0 0 34px #42ff7c80,0 2px 4px #000}
.result-retry,.result-retry:hover{position:absolute;inset:0;width:100%;height:100%;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;pointer-events:auto}
.result-retry:focus-visible{outline:2px solid #d9c79280;outline-offset:-10px}
.stage-bottom{position:absolute;bottom:0;left:0;right:0;padding:55px 28px 24px;background:linear-gradient(transparent,rgba(4,6,8,.9));pointer-events:none}
.stage-bottom button{pointer-events:auto}
.music-controls{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:12px;font-size:11px;color:#a5b3bb}
.music-controls button{font-size:11px;min-height:30px;padding:5px 9px}
.music-controls input{width:90px;accent-color:#a9c4d3;pointer-events:auto}
.music-controls label{font-size:11px}
.transport{display:flex;gap:10px;align-items:center}
.primary{background:var(--gold);color:#19180f;border-color:var(--gold);font-weight:650;min-width:150px}
.primary:hover{background:#ffe18a;border-color:#ffe18a}
.subtle{background:#11161bcc;color:#bcc1b9}
.touch-controls{display:none}
.impact{position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 120px #df70445e;opacity:0}
.error{position:absolute;z-index:4;inset:30% 10% auto;background:#321c1c;padding:30px;color:#ffe4cf;line-height:1.7;border:1px solid #c77d5d}
.feedback{font-size:12px;color:#e1c97b;margin:8px 0 0}
.feedback:empty{display:none}
@media(max-width:700px){
  .language-switch{top:max(10px,env(safe-area-inset-top));right:max(10px,env(safe-area-inset-right))}
  .start-screen{top:12%;padding:18px 6px}.start-screen h2{font-size:clamp(33px,9vw,62px)}.start-message{font-size:12px;margin-bottom:20px}.start-help{max-width:280px;margin:18px auto 0}
  .start-button{font-size:11px;padding:12px 16px}.result{gap:28px;padding:18px}.result h2{font-size:clamp(29px,8vw,56px);letter-spacing:.1em;padding-left:.1em}
  .stage-bottom{padding:40px 18px 16px;padding-bottom:max(16px,env(safe-area-inset-bottom))}
  .transport .primary{flex:1}
  .touch-controls{display:flex;justify-content:space-between;align-items:center;margin-top:12px;gap:15px}.touch-controls button{width:70px;height:44px;font-size:23px;background:#1a1e21ba}
  .music-controls{gap:7px;margin-bottom:9px}
}
@media(pointer:coarse) and (min-width:701px){
  .touch-controls{display:flex;justify-content:space-between;align-items:center;margin-top:12px}.touch-controls button{width:80px;font-size:23px}
}
@media(max-height:740px) and (max-width:700px){
  .start-screen{top:14%;padding:12px 6px}.start-screen>.eyebrow{display:none}.start-screen h2{font-size:32px}.start-message{margin-bottom:12px}
  .result{gap:24px}
}
@media(max-height:600px) and (min-width:701px){
  .start-screen{top:12%;padding:12px}.start-screen h2{font-size:42px;margin:8px 0}.start-screen>.eyebrow{display:none}.start-message{margin-bottom:12px}.start-help{margin-top:14px}
  .result{gap:20px}
  .stage-bottom{padding-top:20px;padding-bottom:12px}.music-controls{margin-bottom:6px}
}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
