:root{--bg:#ece6dc;--ink:#2a211b;--soft:#6b5d52;--line:#c9bba9;--accent:#d8402f;--accent-ink:#fff8f0;--ov-bg:#000000b8;--ov-ink:#f3eedc;box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);padding-left:env(safe-area-inset-left,0px);padding-right:env(safe-area-inset-right,0px)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#15110e;--ink:#ece4d8;--soft:#a8998b;--line:#3a3029;--accent:#ff6a52;--accent-ink:#1a0f0b}}:root[data-theme=dark]{--bg:#15110e;--ink:#ece4d8;--soft:#a8998b;--line:#3a3029;--accent:#ff6a52;--accent-ink:#1a0f0b}*,:before,:after{box-sizing:inherit}body{background:var(--bg);color:var(--ink);-webkit-tap-highlight-color:transparent;margin:0;font-family:DotGothic16,Hiragino Sans,Yu Gothic,system-ui,sans-serif}main{max-width:980px;margin:0 auto;padding:16px 16px 28px}header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:12px;display:flex}h1{letter-spacing:.04em;margin:0;font-size:clamp(22px,4vw,34px);font-weight:400}.hint{color:var(--soft);margin:0;font-size:14px}.sound{font:inherit;border:2px solid var(--line);color:var(--ink);cursor:pointer;background:0 0;border-radius:6px;padding:4px 10px;font-size:14px}.sound:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.stage{border:3px solid var(--line);background:#000;border-radius:6px;position:relative;overflow:hidden}canvas{width:100%;height:auto;image-rendering:pixelated;display:block}.overlay{text-align:center;background:var(--ov-bg);color:var(--ov-ink);flex-direction:column;justify-content:safe center;align-items:center;gap:10px;padding:16px;display:flex;position:absolute;inset:0;overflow-y:auto}.overlay[hidden]{display:none}.overlay h2{color:var(--accent);margin:0;font-size:clamp(22px,5vw,40px);font-weight:400}.overlay p{white-space:pre-line;max-width:34em;margin:0;font-size:clamp(12px,2.2vw,15px);line-height:1.7}.overlay button{font:inherit;border:2px solid var(--accent);background:var(--accent);color:var(--accent-ink);cursor:pointer;border-radius:6px;margin-top:6px;padding:10px 22px;font-size:18px}.overlay button:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.overlay .dev{color:var(--ov-ink);opacity:.8;cursor:pointer;align-items:center;gap:6px;font-size:14px;display:flex}.pad,.only-touch{display:none}@media (pointer:coarse){.hint,.only-key{display:none}.only-touch{display:inline}.pad{touch-action:manipulation;grid-template-columns:1fr 1fr;grid-template-areas:"move act""pause act";align-items:start;gap:10px 16px;margin-top:14px;display:grid}.pad-move,.pad-act{grid-template-columns:1fr 1fr;gap:8px;display:grid}.pad-move{grid-area:move}.pad-act{grid-area:act}.pad-pause{grid-area:pause}.pad button{min-height:52px;font:inherit;border:2px solid var(--line);color:var(--ink);touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;background:0 0;border-radius:8px;padding:0 4px;font-size:16px}.pad button.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.pad .pad-pause{min-height:44px;font-size:14px}}@media (pointer:coarse) and (orientation:landscape){:root{--side:120px;--pad-x:12px}main{max-width:none;padding:8px var(--pad-x);gap:8px var(--pad-x);min-height:calc(100dvh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));grid-template:"move stage sound""move stage pause""move stage act"1fr/1fr auto 1fr;align-content:center;display:grid}.pad button{white-space:nowrap;font-size:13px}header,.pad{display:contents}h1{display:none}.sound{grid-area:sound;min-height:44px}.stage{grid-area:stage;align-self:start}.stage canvas{width:min(calc((100vh - 22px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px)) * 1.6), calc(100vw - 2 * var(--side) - 4 * var(--pad-x) - 6px - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px)));width:min(calc((100dvh - 22px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px)) * 1.6), calc(100vw - 2 * var(--side) - 4 * var(--pad-x) - 6px - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px)))}.pad-move,.pad-act{align-self:end}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
