: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}}
