@font-face{font-family:Noto Sans JP;src:url(/fonts/NotoSansJP.woff2)format("woff2");font-weight:100 900;font-display:swap;unicode-range:U+3001-3002,U+300C-300D,U+3041-3094,U+30A1-30FC}@font-face{font-family:Noto Serif JP;src:url(/fonts/NotoSerifJP.woff2)format("woff2");font-weight:200 900;font-display:swap;unicode-range:U+3001-3002,U+300C-300D,U+3041-3094,U+30A1-30FC}@font-face{font-family:Klee One;src:url(/fonts/KleeOne-Regular.woff2)format("woff2");font-weight:400;font-display:swap;unicode-range:U+3001-3002,U+300C-300D,U+3041-3094,U+30A1-30FC}@font-face{font-family:Klee One;src:url(/fonts/KleeOne-SemiBold.woff2)format("woff2");font-weight:600;font-display:swap;unicode-range:U+3001-3002,U+300C-300D,U+3041-3094,U+30A1-30FC}@font-face{font-family:Zen Maru Gothic;src:url(/fonts/ZenMaruGothic-Regular.woff2)format("woff2");font-weight:400;font-display:swap;unicode-range:U+3001-3002,U+300C-300D,U+3041-3094,U+30A1-30FC}@font-face{font-family:Zen Maru Gothic;src:url(/fonts/ZenMaruGothic-Bold.woff2)format("woff2");font-weight:700;font-display:swap;unicode-range:U+3001-3002,U+300C-300D,U+3041-3094,U+30A1-30FC}:root{color:var(--text);background:var(--page);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--page:var(--lightningcss-light,#ebe9e3)var(--lightningcss-dark,#121211);--surface:var(--lightningcss-light,#f4f3ef)var(--lightningcss-dark,#262624);--card:var(--lightningcss-light,#fff)var(--lightningcss-dark,#1c1c1a);--text:var(--lightningcss-light,#1f1e1c)var(--lightningcss-dark,#ecebe7);--muted:var(--lightningcss-light,#686762)var(--lightningcss-dark,#b2afa7);--border:var(--lightningcss-light,#c9c6be)var(--lightningcss-dark,#53514b);--accent:var(--lightningcss-light,#2a5db0)var(--lightningcss-dark,#8db4f5);--accent-bg:var(--lightningcss-light,#e8eef9)var(--lightningcss-dark,#1e2a40);--danger:var(--lightningcss-light,#b42318)var(--lightningcss-dark,#f2938a);--danger-bg:var(--lightningcss-light,#fbe9e7)var(--lightningcss-dark,#3a1e1b);--success:var(--lightningcss-light,#1f7a3d)var(--lightningcss-dark,#7dcf95);--warning:var(--lightningcss-light,#8a5300)var(--lightningcss-dark,#e9b45a);--warning-bg:var(--lightningcss-light,#fbf1d9)var(--lightningcss-dark,#3a2e14);--font-kana:"Noto Sans JP","Hiragino Sans",sans-serif;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}body{background:var(--page);color:var(--text);margin:0;font-size:16px;line-height:1.5}button,input,select{font:inherit}button,select{color:var(--text);background:var(--card);border:1px solid var(--border);border-radius:8px;min-height:44px;padding:9px 15px}button{cursor:pointer}@media (hover:hover){button:hover:not(:disabled):not(.primary,.single-kana){border-color:var(--accent);background:var(--accent-bg)}}button:disabled{cursor:default;opacity:.55}button.primary{background:var(--accent);color:var(--card);border-color:var(--accent);font-weight:650}button.quiet{background:0 0;border-color:#0000}button.danger{color:var(--danger)}input[type=checkbox]{width:20px;height:20px;accent-color:var(--accent)}a{color:var(--accent)}:focus-visible{outline:3px solid var(--accent);outline-offset:3px}:lang(ja){font-family:var(--font-kana)}h1,h2,h3,p{margin:0 0 16px}h1{letter-spacing:-.03em;font-size:30px}h2{letter-spacing:-.02em;font-size:22px}h3{font-size:18px}ul{padding-left:24px}small{font-size:13px}kbd{border:1px solid var(--border);border-radius:4px;margin-left:6px;padding:2px 5px;font:12px ui-monospace,monospace}button,summary{-webkit-tap-highlight-color:transparent}summary{cursor:pointer;min-height:44px;padding:10px 0;font-weight:600}label{align-items:center;gap:10px;min-height:44px;display:flex}[hidden]{display:none!important}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.muted{color:var(--muted)}.row{align-items:center;gap:10px;display:flex}.wrap{flex-wrap:wrap}.eyebrow{letter-spacing:.09em;text-transform:uppercase;color:var(--muted);font-size:12px;font-weight:650}.card{background:var(--card);border:1px solid var(--border);border-radius:14px;margin:24px 0;padding:24px}.notice{background:var(--warning-bg);color:var(--warning);border:1px solid var(--border);border-radius:8px;flex-wrap:wrap;align-items:center;gap:12px;margin:10px 16px;padding:14px 20px;display:flex}.notice p{margin:0}.notice button{margin-left:auto}.notice.fatal{color:var(--danger);background:var(--danger-bg)}.app-shell{min-height:var(--viewport-height,100svh);background:var(--surface);flex-direction:column;display:flex}.topbar{min-height:104px;padding:16px max(24px,env(safe-area-inset-left));border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:18px;display:flex}.brand{text-align:left;background:0 0;border:0;align-items:center;gap:10px;padding:0 12px 0 0;display:flex}.brand-text{display:grid}.brand-name{letter-spacing:-.04em;color:var(--text);font-size:30px;font-weight:700;line-height:1.1}.brand-tagline{color:var(--muted);font-size:15px;line-height:1.3}@media (width<=660px){.brand-tagline{display:none}}.segmented{border:1px solid var(--border);border-radius:9px;gap:0;display:flex;overflow:hidden}.segmented button{background:0 0;border:0;border-radius:0}.segmented button.chosen{background:var(--card);box-shadow:inset 0 -3px var(--accent);font-weight:650}.selection-chip{background:0 0;border-radius:24px;font-size:14px}.menu-button{min-width:44px;margin-left:auto}.save-warning{color:var(--danger);background:var(--danger-bg)}.screen{width:100%;max-width:1080px;margin:0 auto;padding:32px 40px 64px}[tabindex="-1"]:focus{outline:none}.practice-screen{flex-direction:column;flex:1;display:flex}.practice-stage{text-align:center;flex-direction:column;flex:1;min-height:450px;padding:24px 8%;display:flex;position:relative}.start-gate{max-width:500px;margin:auto;padding:30px 0}.welcome-kana{color:var(--accent);letter-spacing:.12em;margin-bottom:24px;font-size:92px;font-weight:400;display:block}.start-gate h1{font-size:30px}.start-gate p{color:var(--muted)}.single-mode{flex-direction:column;flex:1;justify-content:center;align-items:center;display:flex}.single-kana{font-family:var(--font-kana);color:var(--text);background:0 0;border:0;min-height:0;padding:0 20px;font-size:clamp(100px,14vw,190px);line-height:1.35}.font-mincho{--font-kana:"Noto Serif JP",serif}.font-handwritten{--font-kana:"Klee One",serif}.font-rounded{--font-kana:"Zen Maru Gothic",sans-serif}.trail{color:var(--muted);justify-content:center;gap:22px;min-height:36px;margin-bottom:20px;display:flex}.trail>span{font-size:24px}.trail small{margin-left:3px;font:12px system-ui}.missed{color:var(--danger)}.hint{min-height:27px;color:var(--accent);margin:4px 0 12px;font:18px ui-monospace,monospace}.answer-area{min-height:80px;margin:20px auto 0;position:relative}.typed{min-height:36px;margin:0;font-size:24px}.input-caret{color:var(--border)}.practice-stage:has(.practice-input:focus) .input-caret{color:var(--accent)}.feedback{border-radius:8px;padding:10px 14px}.feedback.wrong{background:var(--danger-bg);color:var(--danger)}.practice-input{opacity:.01;color:#0000;caret-color:#0000;background:0 0;border:0;width:2px;height:30px;padding:0;font-size:20px;position:absolute;bottom:70px;left:50%}.practice-input:focus{outline:none}.flow-mode{text-align:left;padding:18px 0;overflow:hidden}.flow-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.word-credit{color:var(--muted);font-size:12px}.flow-line{flex-wrap:wrap;align-content:start;gap:20px 28px;margin-bottom:28px;line-height:1.8;display:flex}.flow-line.future{color:var(--muted)}.word{white-space:nowrap;flex-direction:column;gap:0;font-size:38px;display:flex}.word small{color:var(--accent);font:14px ui-monospace,monospace}.word .passed:not(.finalized,.missed,.unconfirmed){opacity:.5}.word .finalized{color:var(--success)}.word .missed{color:var(--danger);text-decoration:underline}.word .unconfirmed{color:var(--muted);-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.word .caret{border-bottom:3px solid var(--accent)}.line-summaries{border-top:1px solid var(--border);padding-top:12px;font-size:14px}.line-summaries:empty{border:0;padding:0}.drill-banner{background:var(--accent-bg);flex-wrap:wrap;align-items:center;gap:14px;padding:12px 24px;font-size:14px;display:flex}.drill-banner button{margin-left:auto}.install-tip{background:var(--accent-bg);align-items:center;gap:12px;padding:14px 24px;font-size:14px;display:flex}.install-tip span{flex:1}.notice.update-prompt,.offline-ready{z-index:1;top:max(8px,env(safe-area-inset-top));margin:0 auto;position:fixed;left:0;right:0;box-shadow:0 8px 30px #0004}.notice.update-prompt{width:min(560px,100% - 16px)}.offline-ready{width:fit-content;max-width:calc(100% - 16px);color:var(--muted);background:var(--card);border:1px solid var(--border);pointer-events:none;border-radius:8px;padding:10px 20px;font-size:13px}dialog{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:16px;width:min(560px,100vw - 32px);max-height:calc(100dvh - 48px);padding:24px;box-shadow:0 12px 60px #0004}dialog.wide{width:min(960px,100vw - 32px)}dialog::backdrop{background:#14141270}.sheet-heading{justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;display:flex}.sheet-heading h2{margin:0}.close{background:0 0;border:0;min-width:44px;padding:8px}.sheet-footer{background:var(--surface);text-align:right;margin-top:14px;padding:18px 0 0;position:sticky;bottom:-24px}.menu-list{flex-direction:column;gap:8px;display:flex}.menu-list button{text-align:left;background:var(--card)}.kana-grids{grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));gap:30px;display:grid}.script-grid h2{margin-top:20px}.script-grid h3{margin:16px 0 4px;font-size:16px}.kana-grid{border-collapse:separate;border-spacing:4px;table-layout:fixed;text-align:center;width:100%;font-size:13px}.kana-grid th,.kana-grid td{padding:0}.kana-grid th button{background:0 0;border-color:#0000;width:100%;min-width:44px;padding:4px;font-size:13px}.kana-grid th button[aria-checked=true],.group-toggle[aria-checked=true]{color:var(--accent);background:var(--accent-bg)}[aria-checked=mixed]{box-shadow:inset 0 -3px var(--accent)}.kana-cell{border:1px solid var(--border);background:var(--card);border-bottom-width:4px;border-radius:7px;flex-direction:column;justify-content:center;align-items:center;width:100%;min-width:44px;min-height:64px;padding:5px 2px;display:flex}.kana-cell span{font-size:22px}.kana-cell small{color:var(--muted);font-size:10px}.kana-cell.selected{border-color:var(--accent);background:var(--accent-bg)}.kana-cell.weak{border-bottom-color:var(--danger)}.kana-cell.shaky{border-bottom-color:var(--warning)}.kana-cell.solid{border-bottom-color:var(--success)}.group-toggle{margin:5px 0;font-size:13px}.grid-scroll{max-width:100%;overflow:auto}.legend{color:var(--muted);margin-top:20px;font-size:12px}.legend .weak{color:var(--danger)}.legend .shaky{color:var(--warning)}.legend .solid{color:var(--success)}.stats-columns{grid-template-columns:1fr 1fr;gap:24px;display:grid}.stats-columns .card{margin:0}.readings{margin:0;padding:0;list-style:none}.readings li{border-bottom:1px solid var(--border);align-items:center;gap:16px;padding:9px 0;display:flex}.readings li>span:last-child{color:var(--muted);margin-left:auto}.readings span:lang(ja){font-size:23px}.history-chart{width:100%;max-height:230px;margin-bottom:10px}.chart-axis{stroke:var(--border);fill:none}.chart-accuracy{stroke:var(--accent);stroke-width:2px;fill:none}.chart-rate{stroke:var(--success);stroke-width:2px;stroke-dasharray:6 4;fill:none}.chart-dot{fill:var(--accent)}.history-chart text{fill:var(--muted);font-size:12px}.history-chart+p{color:var(--muted);font-size:13px}table{border-collapse:collapse;width:100%;font-size:14px}th,td{text-align:left;border-bottom:1px solid var(--border);padding:12px 8px}.drill-card{background:var(--accent-bg)}.summary-numbers{justify-content:space-between;gap:20px;margin:30px 0;display:flex}.summary-numbers strong{font-size:30px}.summary-numbers small{color:var(--muted);font-size:12px;font-weight:400;display:block}.summary-kana{font-size:30px}.settings-section{background:var(--card);border:1px solid var(--border);border-radius:12px;margin:24px 0;padding:24px}.settings-section label{justify-content:space-between}.settings-section select{min-width:160px}@media (width<=600px),(height<=500px){.topbar{padding:8px max(10px,env(safe-area-inset-left));gap:6px;min-height:60px}.topbar>*{flex-shrink:0}.brand{flex-wrap:wrap;flex:0 auto;align-content:flex-start;gap:0 5px;min-width:44px;height:44px;padding:0;overflow:hidden}.brand img{width:42px;height:44px;padding:4px 3px}.brand-name{letter-spacing:-1px;padding-right:2px;font-size:18px;line-height:44px}.brand-tagline{display:none}.segmented button{padding:8px 10px;font-size:14px}.selection-chip{white-space:nowrap;padding:8px;font-size:12px}.save-warning span{display:none}.save-warning{padding:8px}.menu-button{min-width:44px;padding:8px;font-size:20px}.practice-stage{min-height:180px;padding:14px 20px}.start-gate{padding:18px 0}.welcome-kana{margin-bottom:18px;font-size:68px}.start-gate h1{font-size:25px}.start-gate p{font-size:14px}.single-kana{font-size:clamp(76px,22vw,120px)}.trail{gap:15px;min-height:25px;margin-bottom:10px}.trail>span{font-size:19px}.hint{margin:0;font-size:16px}.answer-area{min-height:60px;margin-top:12px;font-size:14px}.typed{font-size:20px}.flow-mode{padding:8px 0}.flow-line{gap:12px 18px;margin-bottom:20px}.word{font-size:28px}.screen{padding:24px 18px 40px}.screen h1{font-size:27px}.card{margin:20px 0;padding:18px}.stats-columns{grid-template-columns:1fr;gap:20px}.install-tip{flex-wrap:wrap;padding:10px 14px;font-size:12px}.install-tip span{flex-basis:100%}.drill-banner{gap:6px;padding:10px 14px;font-size:12px}.drill-banner span{display:none}dialog,dialog.wide{width:100%;max-width:100%;max-height:90dvh;padding:20px 16px calc(20px + env(safe-area-inset-bottom));border-radius:16px 16px 0 0;margin:auto 0 0}.sheet-footer{bottom:-20px}.kana-grids{grid-template-columns:1fr}.kana-grid{border-spacing:2px}.kana-cell{min-width:44px}.notice{margin:8px;padding:10px 14px;font-size:13px}.summary-numbers{gap:14px}.summary-numbers strong{font-size:25px}}@media (height<=500px){.practice-stage{min-height:150px;padding:8px 20px}.single-mode{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-content:center;display:grid}.single-mode .trail{grid-area:1/1/4;justify-content:flex-end;gap:9px;margin:0}.single-mode .trail>span:nth-last-child(n+4){display:none}.single-kana{grid-area:2/2;font-size:80px}.single-mode .hint{grid-area:3/2}.answer-area{min-height:44px;margin-top:0}.welcome-kana{display:none}.start-gate{padding:8px}.start-gate h1{margin-bottom:6px;font-size:22px}.start-gate p{margin-bottom:4px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.flow-scroll{scroll-behavior:auto;max-height:min(42vh,340px);overflow:hidden}@media (width<=600px),(height<=500px){.flow-scroll{max-height:calc(var(--viewport-height,100svh) - 270px);min-height:90px}}.practice-input[readonly]{pointer-events:none}.keyboard-open .practice-stage{padding-bottom:88px}.keyboard-open .install-tip{display:none}.keyboard-open .single-kana{font-size:clamp(56px,calc((var(--viewport-height) - 300px)*.55),100px)}.keyboard-open .single-mode .empty-hint{display:none}.keyboard-open .answer-area{min-height:52px;margin-top:4px}.keyboard-open .trail{margin-bottom:4px}.settings-section.svelte-1v8xn86{gap:1rem;display:grid}.settings-section.svelte-1v8xn86,.file-picker.svelte-1v8xn86{grid-template-columns:minmax(0,1fr)}.setting-row.svelte-1v8xn86{justify-content:space-between;align-items:center;gap:1rem;min-height:44px;display:flex}.setting-row.svelte-1v8xn86 input:where(.svelte-1v8xn86){width:24px;height:24px}.file-picker.svelte-1v8xn86{gap:.5rem;display:grid}input[type=file].svelte-1v8xn86{max-width:100%}.backup-name.svelte-1v8xn86,details.svelte-1v8xn86 p:where(.svelte-1v8xn86){overflow-wrap:anywhere}.backup-name.svelte-1v8xn86{font-weight:600}dialog.svelte-1v8xn86{border:1px solid var(--border);border-radius:14px;max-width:min(30rem,100vw - 2rem);padding:1.5rem}dialog.svelte-1v8xn86>:where(.svelte-1v8xn86)+:where(.svelte-1v8xn86){margin-top:1rem}dialog.svelte-1v8xn86::backdrop{background:#00000073}.recovery.svelte-1hycl64{gap:1rem;max-width:36rem;margin:2rem auto;display:grid}.recovery.svelte-1hycl64 details:where(.svelte-1hycl64) p:where(.svelte-1hycl64){overflow-wrap:anywhere}.credits-section.svelte-1e7w7c5{gap:1rem;display:grid}pre.svelte-1e7w7c5{white-space:pre-wrap;overflow-wrap:anywhere;font-size:.85rem}.digest.svelte-1e7w7c5{overflow-wrap:anywhere}li.svelte-1e7w7c5+li:where(.svelte-1e7w7c5){margin-top:.5rem}.debug-panel.svelte-15bq692{border:1px solid;margin:1rem;padding:1rem}pre.svelte-15bq692{white-space:pre-wrap;overflow-wrap:anywhere;max-height:15rem;overflow:auto}
