:root{--ink:#2a1a10;--paper:#fffdf8;--wall-1:#f6dcac;--wall-2:#e4b06c;--wood-1:#e2ad66;--wood-2:#cf9450;--wood-3:#b7793a;--wood-dark:#3b2416;--indigo:#25365c;--gold:#f6b81a;--ok:#1b8a43;--ng:#c62d22;--hold:#a66f00;--blue:#1f6fe0;--muted:#6b5640;--safe-t:env(safe-area-inset-top,0px);--safe-b:env(safe-area-inset-bottom,0px);--stage-h:172px;--frame:9px;--pad-x:12px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body{background:var(--wood-2);color:var(--ink);-webkit-text-size-adjust:100%;overscroll-behavior:none;margin:0;font-family:system-ui,-apple-system,Hiragino Sans,Hiragino Kaku Gothic ProN,Noto Sans JP,sans-serif}body.playing{position:fixed;inset:0;overflow:hidden}button,a{touch-action:manipulation;-webkit-tap-highlight-color:transparent}button{font:inherit;min-height:48px;color:var(--ink);background:linear-gradient(#fff,#f1ebe2);border:2px solid #c9b79c;border-radius:12px;justify-content:center;align-items:center;gap:4px;padding:6px 8px;font-weight:700;display:inline-flex;box-shadow:0 3px #a08868}button:active{transform:translateY(2px);box-shadow:0 1px #a08868}button.primary{background:linear-gradient(#3b88f0, var(--blue));color:#fff;border-color:#1554ad;box-shadow:0 3px #10418a}button.big{width:100%;min-height:56px;font-size:19px}button:disabled{opacity:.5}button .ic{font-size:1.15em;line-height:1}[hidden]{display:none!important}.screen{flex-direction:column;max-width:520px;min-height:100dvh;margin:0 auto;display:flex}.stage{background:radial-gradient(120px 60px at 18% 62%, #ffe9aa8c, transparent 70%), radial-gradient(140px 70px at 82% 64%, #ffe9aa80, transparent 70%), linear-gradient(var(--wall-1), var(--wall-2));padding-top:var(--safe-t);flex:none;position:relative;overflow:hidden}.noren{height:calc(46% + var(--safe-t));background-color:var(--indigo);background-image:repeating-linear-gradient(90deg,#0000 0 calc(25% - 2px),#00000059 calc(25% - 2px) 25%),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='20' viewBox='0 0 40 20'%3E%3Cg fill='none' stroke='%23ffffff' stroke-opacity='0.22' stroke-width='1.6'%3E%3Cpath d='M0 20a20 20 0 0 1 40 0M6 20a14 14 0 0 1 28 0M12 20a8 8 0 0 1 16 0M-20 10a20 20 0 0 1 40 0M20 10a20 20 0 0 1 40 0'/%3E%3C/g%3E%3C/svg%3E");border-bottom:4px solid #1a2744;position:absolute;top:0;left:0;right:0;box-shadow:0 4px 10px #00000026}.counter{padding:10px var(--pad-x) calc(10px + var(--safe-b));background:repeating-linear-gradient(176deg, #78461414 0 2px, transparent 2px 9px), repeating-linear-gradient(183deg, #fff0d21f 0 1px, transparent 1px 13px), linear-gradient(var(--wood-1), var(--wood-2) 60%, var(--wood-3));border-top:6px solid #f0c27f;flex-direction:column;flex:1;display:flex;position:relative;box-shadow:inset 0 3px #ffffff59,0 -6px 12px #0000002e}.taisho{position:relative}.taisho svg{width:100%;height:100%;display:block}.taisho.tai-anim[data-expr=call] svg{animation:.32s cubic-bezier(.2,1.6,.4,1) tai-call}.taisho.tai-anim[data-expr=happy] svg{animation:.42s ease-out tai-jump}.taisho.tai-anim[data-expr=oops] svg{animation:.32s ease-in-out tai-shake}.taisho.tai-anim[data-expr=hmm] svg{transform-origin:50% 100%;animation:.36s ease-out tai-tilt}.taisho.tai-anim[data-expr=read] svg{animation:.32s ease-out tai-call}@keyframes tai-call{0%{transform:translateY(10px)scale(.94)}to{transform:none}}@keyframes tai-jump{0%,to{transform:none}35%{transform:translateY(-12px)}65%{transform:translateY(2px)}}@keyframes tai-shake{0%,to{transform:none}25%{transform:translate(-5px)}50%{transform:translate(5px)}75%{transform:translate(-3px)}}@keyframes tai-tilt{0%{transform:rotate(0)}60%{transform:rotate(-6deg)}to{transform:rotate(-4deg)}}.bubble{background:var(--paper);border:3px solid var(--ink);text-align:center;border-radius:18px;flex-direction:column;justify-content:center;align-items:center;padding:6px 10px;line-height:1.2;display:flex;position:relative;box-shadow:0 3px #0000002e}.bubble:before{content:"";background:var(--paper);border-left:3px solid var(--ink);border-bottom:3px solid var(--ink);width:16px;height:16px;margin-top:-8px;position:absolute;top:50%;left:-12px;transform:rotate(45deg)}.bubble .fish{letter-spacing:.02em;color:var(--ink);text-shadow:2px 2px #f8d36a;white-space:nowrap;font-size:clamp(26px,8.4vw,44px);font-weight:900;transform:rotate(-3deg)}.bubble .fish.long{font-size:clamp(22px,6.6vw,36px)}.bubble .fish.xlong{font-size:clamp(18px,5.2vw,30px)}.bubble .hint{color:var(--muted);white-space:nowrap;font-size:12px;font-weight:700}.bubble.say .fish{color:var(--ok);text-shadow:2px 2px #c8efcf}.bubble.say-ng .fish{color:var(--ng);text-shadow:2px 2px #f6d0cb}.bubble.q-in{animation:.26s cubic-bezier(.2,1.6,.4,1) both bubble-in}@keyframes bubble-in{0%{opacity:0;transform:scale(.6)rotate(-6deg)}to{opacity:1;transform:none}}#screen-play{height:100dvh;min-height:0}#screen-play .counter{flex:none}.stage-play{min-height:calc(var(--stage-h) + var(--safe-t));padding:calc(6px + var(--safe-t)) 8px 0;flex:auto;grid-template:"kifuda timer""taisho bubble"minmax(0,1fr)/50% 50%;display:grid}.stage-play .kifuda{grid-area:kifuda;place-self:start}.stage-play .timer{grid-area:timer;place-self:start end}.stage-play .taisho{grid-area:taisho;align-self:stretch;min-height:0;margin-bottom:-10px}.stage-play .taisho svg{max-height:300px}.stage-play .bubble{grid-area:bubble;align-self:center;min-height:64px;margin:0 0 12px 12px}.kifuda{z-index:1;background:linear-gradient(#4a2e1c, var(--wood-dark));color:#fff;border:3px solid #c48a4c;border-radius:6px;grid-template-columns:auto auto auto auto auto auto;align-items:baseline;gap:0 6px;padding:5px 10px;font-size:12px;font-weight:700;display:grid;position:relative;box-shadow:0 3px 6px #0000004d}.kifuda b{color:#ffd84d;font-variant-numeric:tabular-nums;text-align:right;font-size:24px;line-height:1.1}.kifuda b.bump{animation:.3s ease-out bump;display:inline-block}@keyframes bump{0%{transform:scale(1.6)}to{transform:scale(1)}}.timer{z-index:1;width:62px;height:62px;position:relative}.timer svg{width:100%;height:100%;transform:rotate(-90deg)}.timer .ring-bg{fill:#1d1d1d;stroke:#4a4a4a;stroke-width:7px}.timer .ring{fill:none;stroke:var(--gold);stroke-width:7px;stroke-linecap:round;stroke-dasharray:169.65;stroke-dashoffset:0}.timer-num{color:#fff;flex-direction:column;justify-content:center;align-items:center;line-height:1;display:flex;position:absolute;inset:0}.timer-num b{font-variant-numeric:tabular-nums;font-size:24px}.timer-num small{font-size:10px;font-weight:700}.timer.hurry .ring{stroke:#ff4a3d}.timer.hurry{animation:1s ease-in-out infinite pulse}@keyframes pulse{50%{transform:scale(1.08)}}.board-frame{padding:var(--frame);background:linear-gradient(135deg,#f5d29b,#dca763 60%,#c98f4c);border:2px solid #9b6630;border-radius:14px;align-self:center;box-shadow:0 6px #8f5a28,0 10px 18px #00000040}.board{width:min(calc(100vw - 2 * var(--pad-x) - 2 * var(--frame) - 4px), calc(100vh - var(--stage-h) - var(--safe-t) - var(--safe-b) - 150px), 440px);width:min(calc(100vw - 2 * var(--pad-x) - 2 * var(--frame) - 4px), calc(100dvh - var(--stage-h) - var(--safe-t) - var(--safe-b) - 150px), 440px);aspect-ratio:1;border-radius:8px;min-width:200px;position:relative}.board canvas{background:var(--paper);touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;border-radius:8px;width:100%;height:100%;display:block;box-shadow:inset 0 0 0 1px #0000001f,inset 0 2px 8px #00000014}.board.ok canvas{box-shadow:0 0 0 4px #1b8a4399}.board.ng canvas{animation:.32s ease-in-out shake;box-shadow:0 0 0 4px #c62d2280}.board.hold canvas{box-shadow:0 0 0 4px #a66f0073}@keyframes shake{0%,to{transform:none}20%{transform:translate(-8px)}40%{transform:translate(7px)}60%{transform:translate(-5px)}80%{transform:translate(3px)}}.fx{pointer-events:none;opacity:0;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.fx-stamp{aspect-ratio:1;color:#d4342a;letter-spacing:.04em;background:#fffdf8bf;border:7px solid #d4342a;border-radius:50%;justify-content:center;align-items:center;width:46%;font-family:Hiragino Mincho ProN,Yu Mincho,Noto Serif JP,serif;font-size:clamp(26px,9vw,44px);font-weight:900;display:flex;transform:rotate(-14deg)}.board.ok .fx{animation:.52s ease-out forwards stamp}@keyframes stamp{0%{opacity:0;transform:scale(1.8)}30%{opacity:1;transform:scale(.95)}45%{transform:scale(1.03)}80%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1)}}.read-panel{background:repeating-linear-gradient(178deg,#7846141a 0 2px,#0000 2px 10px),linear-gradient(#f3d6a3,#e2b673);border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:10px;display:flex;position:absolute;inset:0;box-shadow:inset 0 0 0 3px #9b6630}.read-panel.q-in{animation:.28s cubic-bezier(.2,1.5,.4,1) both read-in}@keyframes read-in{0%{opacity:0;transform:translateY(-30px)rotate(-4deg)}to{opacity:1;transform:none}}.read-kanji{color:var(--ink);text-shadow:0 2px #ffffff80;font-family:Hiragino Mincho ProN,Yu Mincho,Noto Serif JP,serif;font-size:min(36vw,150px);font-weight:900;line-height:1.05}.read-ask{color:var(--muted);font-size:13px;font-weight:700}.read-choices{grid-template-columns:repeat(3,1fr);gap:6px;width:100%;display:grid}.read-choices button{background:linear-gradient(#fffaf0,#f3e3c6);min-height:52px;padding:4px 2px;font-size:18px}.read-choices button.is-answer{border-color:var(--ok);color:var(--ok);background:#e3f5e8}.read-choices button.is-miss{border-color:var(--ng);color:var(--ng);background:#fde8e5}.feedback{text-align:center;min-height:22px;color:var(--ink);text-shadow:0 1px #fff6;margin:8px 0 6px;font-size:14px;font-weight:800}.feedback.wrong{color:#a3170e}.feedback.uncertain{color:#7a4d00}.feedback.correct{color:#0f6630}.feedback.info{color:#4a3420;font-weight:600}.actions{grid-template-columns:.72fr 1fr 1fr 1.25fr;gap:6px;margin-top:auto;display:grid}.actions button{white-space:nowrap;min-height:52px;padding:4px 3px;font-size:14px}.actions button.judge{font-size:17px}.actions button.skip{min-height:44px;box-shadow:none;color:#4a3420;background:#ffffff59;border:2px dashed #3b241673;align-self:center;font-size:12px;font-weight:700}#screen-play.mode-read #undoBtn,#screen-play.mode-read #clearBtn,#screen-play.mode-read #judgeBtn{visibility:hidden}.stage-title,.stage-result{height:calc(210px + var(--safe-t));justify-content:center;align-items:flex-end;gap:0;padding:0 12px;display:flex}.stage-title .taisho,.stage-result .taisho{flex:none;width:200px;height:170px;margin-bottom:-12px}.stage-title .bubble,.stage-result .bubble{white-space:nowrap;margin:0 0 40px 6px;padding:10px 12px;font-size:clamp(14px,4.4vw,20px);font-weight:900}.stage-title .bubble small,.stage-result .bubble small{color:var(--muted);font-size:13px}.title-board,.result-board{background:var(--paper);border:3px solid var(--wood-dark);border-radius:12px;flex-direction:column;gap:10px;padding:14px;display:flex;box-shadow:0 5px #8f5a28}h1{flex-direction:column;margin:0;line-height:1.05;display:flex}h1 .t-small{color:var(--muted);font-size:18px}h1 .t-big{transform-origin:0;text-shadow:2px 2px #f8d36a;font-size:34px;font-weight:900;transform:rotate(-2deg)}.lead{margin:0;font-size:15px;line-height:1.6}.best-box{color:var(--muted);font-size:14px}.best-box b{color:var(--ink);font-size:18px}.howto{color:#3b2416;margin:12px 0 0;padding-left:18px;font-size:13px;line-height:1.7}.links{margin:8px 0 0;font-size:13px}.links a,.credit a{color:#3b2416}.credit{color:#4a3420;margin-top:14px;font-size:11px;line-height:1.5}.eyebrow{color:var(--muted);letter-spacing:.1em;margin:0;font-size:13px;font-weight:700}.score{align-items:baseline;gap:6px;margin:0;display:flex}.score b{font-variant-numeric:tabular-nums;font-size:72px;line-height:1}.score span{font-size:20px;font-weight:700}.sub{margin:0;font-size:16px}.sub b{font-size:24px}.newbest{color:var(--ng);margin:0;font-size:18px;font-weight:900;animation:.5s ease-out bump}.qlist{flex-wrap:wrap;gap:6px;margin:12px 0 0;padding:0;list-style:none;display:flex}.qlist li{background:var(--paper);border:2px solid #c9b79c;border-radius:10px;padding:3px 8px;font-size:13px;font-weight:700}.qlist li b{margin-right:4px;font-size:18px}.qlist li.correct{border-color:#1b8a4399}.qlist li.wrong{color:var(--ng)}.qlist li.skipped,.qlist li.timeout{color:var(--muted)}.qlist li small{border:1px solid;border-radius:4px;padding:0 3px;font-size:11px}.result-actions{gap:10px;margin-top:14px;display:grid}.overlay{z-index:10;touch-action:none;background:#25365cd1;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}#countNum{color:#fff;text-shadow:4px 4px 0 var(--gold);font-variant-numeric:tabular-nums;font-size:130px;font-weight:900}#countNum.tick{animation:.7s ease-out count}@keyframes count{0%{opacity:0;transform:scale(1.7)}30%{opacity:1}to{opacity:1;transform:scale(1)}}.overlay.pause>div{text-align:center;background:var(--paper);border:3px solid var(--wood-dark);border-radius:14px;gap:10px;width:min(80vw,320px);padding:18px;display:grid}.overlay.pause p{margin:0 0 6px;font-size:22px;font-weight:900}@media (height>=760px){:root{--stage-h:230px}.stage-play{grid-template:"kifuda timer""bubble bubble""taisho taisho"minmax(0,1fr)/1fr 1fr}.stage-play .bubble{justify-self:center;margin:4px 0 10px;padding:8px 22px}.stage-play .bubble:before{margin:0 0 0 -8px;top:auto;bottom:-11px;left:50%;transform:rotate(-45deg)}.stage-play .taisho{margin-top:-6px}}@media (height<=640px){:root{--stage-h:84px;--frame:6px;--pad-x:8px}.stage-play{min-height:calc(var(--stage-h) + var(--safe-t));padding-top:calc(4px + var(--safe-t));flex:auto;grid-template:"kifuda taisho bubble timer"1fr/64px 72px 1fr 52px;align-items:center;column-gap:4px}.stage-play .kifuda{grid-template-columns:auto auto;align-self:center}.stage-play .timer{align-self:center}.stage-play .taisho{align-self:end;height:84px;margin:0;overflow:hidden}.stage-play .taisho svg{width:auto;height:116px;max-height:none;margin:-6px 0 0 -14px}.stage-play .bubble{border-radius:14px;align-self:center;min-height:0;margin:0 0 0 10px;padding:4px 6px;overflow:hidden}.stage-play .bubble .fish{font-size:clamp(18px,6.2vw,26px)}.stage-play .bubble .fish.long{font-size:clamp(16px,5vw,22px)}.stage-play .bubble .fish.xlong{font-size:clamp(13px,3.9vw,18px)}.stage-play .bubble .hint{font-size:10px}.kifuda{gap:0 3px;padding:4px 5px;font-size:10px}.kifuda b{font-size:18px}.timer{width:50px;height:50px}.timer-num b{font-size:19px}.counter{border-top-width:4px;padding-top:6px}.feedback{min-height:19px;margin:4px 0 3px;font-size:13px}.actions button{min-height:48px;font-size:13px}.actions button.judge{font-size:15px}.board{width:min(calc(100vw - 2 * var(--pad-x) - 2 * var(--frame) - 4px), calc(100vh - var(--stage-h) - var(--safe-t) - var(--safe-b) - 118px), 440px);width:min(calc(100vw - 2 * var(--pad-x) - 2 * var(--frame) - 4px), calc(100dvh - var(--stage-h) - var(--safe-t) - var(--safe-b) - 118px), 440px)}.read-kanji{font-size:min(30vw,110px)}.read-choices button{min-height:46px}.stage-title,.stage-result{height:calc(150px + var(--safe-t))}.stage-title .taisho,.stage-result .taisho{width:150px;height:128px}.stage-title .bubble,.stage-result .bubble{margin-bottom:26px;font-size:clamp(13px,4.2vw,17px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation-duration:1ms!important;animation-iteration-count:1!important}.taisho.tai-anim svg,.bubble.q-in,.read-panel.q-in,.board.ng canvas,.kifuda b.bump,.newbest,#countNum.tick,.timer.hurry{animation:none!important}.board.ok .fx{opacity:1;animation:none}button:active{transform:none}}@media (width<=340px){.actions button .ic{display:none}.actions button{font-size:12px}.actions button.skip{font-size:11px}.stage-play .bubble .h-long{display:none}}.kifuda .no-label{opacity:.85;font-size:10px}.kifuda b.no-val{color:#fff;font-size:15px}.board.timeout canvas{filter:grayscale(.4);box-shadow:0 0 0 4px #7878788c}.score span#resTotal{color:var(--muted);font-size:28px;font-weight:900}.qlist li .no{min-width:1.4em;color:var(--muted);font-size:11px;display:inline-block}.timer-num b{font-size:20px}.dev-badge{z-index:20;color:#fff;pointer-events:none;background:#000000a6;border-radius:6px;padding:2px 6px;font-size:10px;position:fixed;bottom:4px;left:4px}@media (height<=640px){.kifuda b.no-val{font-size:12px}.timer-num b{font-size:16px}}.kifuda span,.kifuda b{white-space:nowrap}.newbest{transform-origin:0}@media (height<=640px){.stage-play{grid-template-columns:82px 64px 1fr 50px}.stage-play .kifuda{grid-template-columns:auto auto;gap:0 4px;padding:3px 6px}.stage-play .kifuda span{font-size:9px}.stage-play .kifuda b{font-size:15px;line-height:1.05}.stage-play .kifuda b.no-val{font-size:11px}}@media (width<=340px) and (height<=640px){.stage-play{grid-template-columns:76px 56px 1fr 48px}}body.rhythm{--lane-h:92px;--judge-x:18%}#r-play{height:100dvh;min-height:0}.r-stage{min-height:calc(120px + var(--safe-t));padding:calc(6px + var(--safe-t)) 8px 0;flex:auto;grid-template:"kifuda kifuda""progress progress""taisho bubble"minmax(0,1fr)/44% 56%;display:grid}.r-kifuda{grid-area:kifuda;grid-template-columns:auto auto auto auto;place-self:start;margin-right:44px}.r-kifuda b{min-width:2.4em;margin-right:6px}.r-progress{z-index:1;background:#00000059;border-radius:99px;grid-area:progress;place-self:start stretch;height:8px;margin:6px 44px 0 2px;overflow:hidden}.r-progress div{background:var(--gold);width:0;height:100%}.r-stage .taisho{grid-area:taisho;align-self:end;height:100%;min-height:0;max-height:260px;margin-bottom:-8px}.r-stage .taisho svg{transform-origin:50% 100%}.r-bubble{grid-area:bubble;align-self:center;min-height:70px;margin:0 0 10px 12px}.r-bubble .big{font-size:clamp(34px,11vw,56px);font-weight:900;line-height:1.05}.r-bubble .big.kanji{font-family:Hiragino Mincho ProN,Yu Mincho,Noto Serif JP,serif}.r-bubble .hint{font-size:12px}.r-pause{right:8px;top:calc(6px + var(--safe-t));z-index:2;border-radius:50%;width:34px;min-height:34px;padding:0;font-size:14px;position:absolute}.r-lane{height:var(--lane-h);background:linear-gradient(#5b4636,#3b2a1f);border-top:3px solid #2a1a10;border-bottom:3px solid #2a1a10;flex:none;position:relative;overflow:hidden}.r-lane-belt{background:repeating-linear-gradient(90deg,#c9c3b6 0 22px,#b7b0a2 22px 24px);border-radius:6px;position:absolute;inset:14px 0;box-shadow:inset 0 3px 6px #00000059}.r-judge{top:50%;left:var(--judge-x);background:#ffffff1f;border:5px solid #fff;border-radius:50%;width:78px;height:78px;margin:-39px 0 0 -39px;position:absolute;box-shadow:0 0 0 4px #2a1a1099,inset 0 0 0 3px #2a1a1059}.r-judge.beat{box-shadow:0 0 0 4px #f6b81ae6,0 0 18px #f6b81ab3,inset 0 0 0 3px #2a1a1059}.r-notes{pointer-events:none;position:absolute;inset:0}.r-note{text-align:center;background:radial-gradient(circle at 50% 45%, #fff 0 52%, #e9e2d3 53% 60%, var(--plate,#3d6db5) 61% 100%);will-change:transform;border-radius:50%;justify-content:center;align-items:center;width:66px;height:66px;margin:-33px 0 0 -33px;display:flex;position:absolute;top:50%;left:0;box-shadow:0 3px 4px #00000059}.r-note.read{--plate:#c8323f}.r-note.fish{--plate:#2f6fb8}.r-note span{color:var(--ink);font-weight:900;line-height:1}.r-note.read span{font-family:Hiragino Mincho ProN,Yu Mincho,Noto Serif JP,serif;font-size:28px}.r-note.fish span{letter-spacing:-.02em;font-size:14px}.r-note.done{opacity:0;transition:opacity .16s,transform .16s}.r-note.next{box-shadow:0 0 0 3px #f6b81a,0 3px 4px #00000059}.r-grade{left:calc(var(--judge-x) + 46px);letter-spacing:.04em;pointer-events:none;white-space:nowrap;text-shadow:0 2px #00000080;opacity:0;font-size:22px;font-weight:900;position:absolute;top:50%;transform:translateY(-50%)}.r-grade.show{transform-origin:0;animation:.52s ease-out forwards grade-pop}.r-grade{background:#2a1a108c;border-radius:8px;padding:2px 8px}.r-grade.PERFECT{color:#ffd84d}.r-grade.GOOD{color:#8be28b}.r-grade.OK{color:#9fd3ff}.r-grade.MISS{color:#ff8a80}@keyframes grade-pop{0%{opacity:0;transform:translate(-8px,-50%)scale(.7)}20%{opacity:1;transform:translateY(-50%)scale(1.15)}70%{opacity:1;transform:translateY(-50%)scale(1)}to{opacity:0;transform:translate(6px,-50%)}}body.rhythm{--r-reserve:318px;--r-board:min(calc(100vw - 2 * var(--pad-x) - 2 * var(--frame) - 4px), calc(100dvh - var(--r-reserve) - var(--safe-t) - var(--safe-b)), 380px);--r-actions:52px}.r-counter{flex:none;padding-top:8px}.r-input{height:calc(var(--r-board) + 2 * var(--frame) + 4px + var(--r-actions) + 8px);position:relative}.r-answers,.r-write{position:absolute;inset:0}.r-answers{flex-direction:column;justify-content:center;gap:8px;display:flex}.r-write{visibility:hidden;flex-direction:column;align-items:center;gap:8px;display:flex}.r-input.mode-write .r-write{visibility:visible}.r-input.mode-write .r-answers{visibility:hidden}.r-board{width:var(--r-board)}.r-board-frame{align-self:center}.r-write-actions{grid-template-columns:1fr 1fr 1.3fr;gap:6px;width:100%;display:grid}.r-write-actions button{min-height:var(--r-actions);white-space:nowrap;font-size:14px}.r-write-cue{pointer-events:none;white-space:nowrap;color:#fff;opacity:0;background:#2a1a10bf;border-radius:99px;padding:2px 12px;font-size:15px;font-weight:900;transition:opacity .12s;position:absolute;top:8px;left:50%;transform:translate(-50%)}.r-write-cue.on{opacity:1}.r-write-cue.go{background:#1b8a43}.r-write-cue.hurry{background:#c62d22}.r-board.ng canvas{animation:.32s ease-in-out shake;box-shadow:0 0 0 4px #c62d2280}.r-board.hold canvas{box-shadow:0 0 0 4px #a66f0073}.r-board.ok canvas{box-shadow:0 0 0 4px #1b8a4399}.r-board.ok .fx{animation:.52s ease-out forwards stamp}.r-note.write{box-sizing:border-box;background:linear-gradient(90deg,#fffdf6,#f1e6cf);border:4px solid #3a7d44;border-radius:30px;justify-content:flex-start;gap:6px;width:auto;height:60px;margin:-30px 0 0 -30px;padding:0 12px 0 8px}.r-note.write:after{content:"";width:var(--tail,0px);background:repeating-linear-gradient(90deg,#c62d2259 0 8px,#0000 8px 14px);border-radius:0 16px 16px 0;position:absolute;top:6px;bottom:6px;left:100%}.r-note.write .w-mark{color:#fff;background:#3a7d44;border-radius:50%;justify-content:center;align-items:center;width:38px;height:38px;font-family:Hiragino Mincho ProN,Yu Mincho,serif;font-size:20px;display:inline-flex}.r-note.write span.w-yomi{font-size:16px}.r-kinds{color:var(--muted);margin:0;font-size:13px;font-weight:700}.r-ask{text-align:center;color:#3b2416;margin:0;font-size:15px;font-weight:900}.r-ask b{font-size:26px}.r-choices{gap:8px;display:grid}.r-choices.read{grid-template-columns:repeat(3,1fr)}.r-choices.fish{grid-template-columns:repeat(2,1fr)}.r-choices button{touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.r-choices.read button{background:linear-gradient(#fffaf0,#f3e3c6);min-height:92px;font-size:24px;font-weight:900}.r-choices.fish button{background:linear-gradient(#fffdf6,#efe6d2);flex-direction:column;min-height:132px;padding:6px}.r-choices.fish button svg{width:100%;height:auto;max-height:112px}.r-choices button.hit{border-color:var(--ok);box-shadow:0 0 0 3px #1b8a4380}.r-choices button.miss{border-color:var(--ng);box-shadow:0 0 0 3px #c62d2280}.r-choices button:active{transform:translateY(2px)scale(.98)}.r-wait{text-align:center;color:#3b2416;font-weight:800}.r-counts{border-collapse:collapse;font-weight:800}.r-counts td{padding:2px 10px 2px 0}.r-counts td.n{text-align:right;font-variant-numeric:tabular-nums}.r-calib{padding-top:calc(16px + var(--safe-t))}.r-calib-beat{border:4px solid var(--wood-dark);background:#e6dccb;border-radius:50%;width:80px;height:80px;margin:6px auto}.r-calib-beat.on{background:var(--gold)}.r-calib-tap{width:100%;min-height:120px;font-size:26px}.r-calib-row{justify-content:center;align-items:center;gap:10px;display:flex}.r-calib-val b{font-variant-numeric:tabular-nums;font-size:22px}.r-calib-msg{text-align:center;min-height:1.4em;margin:0;font-weight:800}.sound-note{color:var(--muted);margin:0;font-size:12px}@media (height<=640px){body.rhythm{--lane-h:78px}.r-stage{min-height:calc(96px + var(--safe-t));grid-template-columns:40% 60%}.r-stage .taisho svg{max-height:120px}.r-bubble{min-height:0;padding:4px 8px}.r-bubble .big{font-size:clamp(26px,8vw,36px)}.r-judge{width:66px;height:66px;margin:-33px 0 0 -33px}.r-note{width:56px;height:56px;margin:-28px 0 0 -28px}.r-note.read span{font-size:24px}.r-note.fish span{font-size:12px}body.rhythm{--r-reserve:262px;--r-actions:46px}.r-note.write{height:50px;margin-top:-25px}.r-note.write .w-mark{width:32px;height:32px;font-size:17px}.r-choices.read button{min-height:80px;font-size:21px}.r-choices.fish button{min-height:116px}.r-choices.fish button svg{max-height:96px}}@media (prefers-reduced-motion:reduce){.r-grade.show{opacity:1;animation:none}.r-note.done{transition:none}}.r-kinds{grid-template-columns:repeat(3,1fr);gap:6px;margin:4px 0 2px;display:grid}.r-kind{background:#f3e3c6;border-radius:10px;flex-direction:column;padding:4px 8px;display:flex}.r-kind span{color:var(--muted);font-size:12px;font-weight:800}.r-kind b{font-variant-numeric:tabular-nums;font-size:24px}.r-counts{font-size:13px}.r-share{border:3px solid var(--wood-dark);background:#fffdf8e6;border-radius:12px;gap:8px;margin-top:12px;padding:10px;display:grid}.r-share-title{text-align:center;margin:0;font-weight:900}.r-share-row{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.r-share-row button{white-space:nowrap;min-height:48px;padding:4px 2px;font-size:13px}.r-share-msg{text-align:center;color:#1b6b36;word-break:break-all;min-height:1.3em;margin:0;font-size:13px;font-weight:700}.r-share-msg.err{color:var(--ng)}.r-legal{text-align:center;margin-top:10px}.r-volume{align-items:center;gap:8px;font-weight:800;display:flex}.r-volume input[type=range]{accent-color:#3b2416;flex:1;min-width:0;height:32px}.r-mute{white-space:nowrap;min-height:44px;padding:4px 10px;font-size:13px}.r-mute[aria-pressed=true]{background:#e9e2d6}.r-mute-play{right:48px!important}.r-imgview>div{text-align:center;background:var(--paper);border:3px solid var(--wood-dark);border-radius:14px;gap:8px;width:min(92vw,420px);max-height:92vh;padding:12px;display:grid;overflow:auto}.r-imgview img{-webkit-touch-callout:default;-webkit-user-select:auto;user-select:auto;border-radius:8px;width:100%;height:auto;box-shadow:0 2px 8px #00000040}.r-imgdl{background:var(--blue);color:#fff;border-radius:12px;justify-content:center;align-items:center;min-height:48px;font-weight:800;text-decoration:none;display:inline-flex}.stage-result .bubble{white-space:normal;max-width:calc(100% - 150px);font-size:clamp(14px,4.2vw,18px);line-height:1.35}.stage-result .bubble small{margin-top:2px;display:block}.r-share-row button.suggest{border-color:var(--blue);box-shadow:0 0 0 3px #1f6fe059}.r-share-msg a{color:var(--blue);font-weight:900}.r-levels{padding-top:calc(10px + var(--safe-t))}.r-levels .title-board{gap:10px}.r-levels-title{font-size:clamp(28px,9vw,40px)!important}.r-level-summary{text-align:center;flex-wrap:wrap;justify-content:center;gap:2px 14px;margin:0;font-size:14px;font-weight:700;display:flex}.r-level-summary span{white-space:nowrap}.r-level-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.r-level{text-align:left;border-radius:12px;justify-items:start;gap:2px;min-height:92px;padding:8px 10px;font-size:13px;line-height:1.25;display:grid;position:relative}.r-level .lv-head{flex-wrap:wrap;align-items:baseline;gap:6px;width:100%;display:flex}.r-level .lv-no b{font-variant-numeric:tabular-nums;font-size:24px}.r-level .lv-tier{color:#1b6b36;background:#e9f3e6;border-radius:99px;padding:1px 6px;font-size:11px;font-weight:900}.r-level .lv-tier[data-tier=intermediate]{color:#1f4f9e;background:#e6eefb}.r-level .lv-tier[data-tier=advanced]{color:#9a4b00;background:#fbeee0}.r-level .lv-tier[data-tier=expert]{color:#a3221a;background:#f7e3e3}.r-level .lv-now{color:#fff;background:var(--ng);border-radius:99px;padding:1px 6px;font-size:11px;font-weight:900}.r-level .lv-chars{letter-spacing:.04em;word-break:break-all;font-family:Hiragino Mincho ProN,Yu Mincho,Noto Serif JP,serif;font-size:22px;font-weight:700}.r-level .lv-state{flex-wrap:wrap;align-items:baseline;gap:6px;font-size:12px;font-weight:800;display:flex}.r-level .lv-state small{color:var(--muted);font-weight:700}.r-level.cleared{background:#fff8e3;border-color:#c99a1a}.r-level.cleared .lv-state{color:#8a6a00}.r-level.current{box-shadow:0 0 0 3px #c62d2273}.r-level.locked,.r-level:disabled{opacity:1;cursor:not-allowed;color:#8a8178;background:repeating-linear-gradient(135deg,#ece7df 0 10px,#e4ded4 10px 20px);border-style:dashed}.r-level.locked .lv-chars{opacity:.5}.r-level.locked .lv-tier{filter:grayscale()}@media (width<=340px){.r-level-list{grid-template-columns:1fr}}.r-level-tag{right:90px;top:calc(10px + var(--safe-t));z-index:2;color:#fff;background:#00000073;border-radius:99px;padding:2px 8px;font-size:12px;font-weight:900;position:absolute}.r-res-level{color:var(--ink);letter-spacing:0}.r-level-box{text-align:center;background:#f3e3c6;border-radius:10px;gap:2px;margin-top:6px;padding:6px;display:grid}.r-correct{margin:0;font-size:15px;font-weight:800}.r-correct b{font-variant-numeric:tabular-nums;font-size:22px}.r-correct[data-ok=true] b{color:#1b6b36}.r-perfect-all{color:#8a6a00;margin:0;font-size:17px;font-weight:900}.r-unlock{margin:0;font-size:14px;font-weight:800}.r-unlock small{color:var(--muted);font-size:12px;font-weight:700;display:block}.r-unlock[data-state=new]{color:var(--ng);font-size:20px}.r-level-box.celebrate{background:linear-gradient(90deg,#fff1c2,#ffe08a,#fff1c2);animation:.9s ease-out r-unlock}@keyframes r-unlock{0%{transform:scale(.85);box-shadow:0 0 #f6b81ae6}45%{transform:scale(1.06);box-shadow:0 0 0 10px #f6b81a40}to{transform:scale(1);box-shadow:0 0 #f6b81a00}}@media (prefers-reduced-motion:reduce){.r-level-box.celebrate{animation:none}}.r-level-box.perfect{background:linear-gradient(100deg,#fff4c9 0%,#ffd965 35%,#fff8dc 50%,#ffd965 65%,#fff4c9 100%) 0 0/250% 100%;animation:.9s ease-out r-perfect-in,2.4s linear .9s infinite r-perfect-shine;box-shadow:0 0 0 3px #e2a800,0 4px 14px #e2a80073}.r-level-box.perfect .r-perfect-all{text-shadow:0 1px #fff;font-size:20px}@keyframes r-perfect-in{0%{transform:scale(.8)rotate(-2deg)}50%{transform:scale(1.08)rotate(1deg)}to{transform:scale(1)rotate(0)}}@keyframes r-perfect-shine{0%{background-position:100% 0}to{background-position:-150% 0}}@media (prefers-reduced-motion:reduce){.r-level-box.perfect{animation:none}}.r-level.perfect .lv-state{color:#b07d00}
