:root{--bg: #f4f5f7;--card: #ffffff;--ink: #1f2933;--ink-soft: #52606d;--muted: #9aa5b1;--line: #e4e7eb;--accent: #2563eb;--accent-ink: #ffffff;--ok: #15803d;--ok-bg: #e7f6ec;--bad: #b91c1c;--bad-bg: #fdeaea;--radius: 14px;--tap: 56px;--maxw: 560px;--furi-scale: 1;font-synthesis:none}*{box-sizing:border-box}.small-kana{font-size:.78em}html,body,#root{margin:0;height:100%}body{background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Hiragino Sans,Noto Sans JP,Meiryo,sans-serif;-webkit-text-size-adjust:100%}#root{display:flex;justify-content:center}.screen{width:100%;max-width:var(--maxw);padding:16px 16px calc(96px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:16px;overflow-y:auto}.app-head{display:flex;align-items:center;justify-content:space-between}.app-head h1{font-size:22px;margin:0}.sub-head{display:flex;align-items:center;gap:8px}.sub-head h2{margin:0;font-size:18px}.toggle{display:inline-flex;align-items:center;gap:8px;font-size:14px;color:var(--ink-soft)}.toggle input{width:22px;height:22px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px}.level-card+.level-card{margin-top:12px}.level-head{display:flex;justify-content:space-between;align-items:baseline}.level-name{font-size:18px;font-weight:700}.level-pct{font-size:22px;font-weight:800;color:var(--accent)}.readiness-bar{height:10px;background:var(--line);border-radius:999px;overflow:hidden;margin:10px 0 14px}.readiness-fill{height:100%;background:var(--accent)}.cat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(86px,1fr));gap:8px}.cat{display:flex;flex-direction:column;background:var(--bg);border-radius:10px;padding:8px;text-align:center}.cat-name{font-size:12px;color:var(--ink-soft)}.cat-pct{font-size:18px;font-weight:700}.cat-sub{font-size:11px;color:var(--muted)}.tabbar{position:fixed;left:50%;transform:translate(-50%);bottom:0;width:100%;max-width:var(--maxw);display:flex;background:var(--card);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);z-index:20}.tabbar-btn{flex:1;border:none;background:none;padding:10px 0 12px;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:12px;color:var(--muted);cursor:pointer}.tabbar-btn.active{color:var(--accent)}.tabbar-icon{font-size:20px}.dashboard,.learn{padding-bottom:calc(80px + env(safe-area-inset-bottom))}.prompt-instruction{margin:10px 0 0;font-size:13px;color:var(--ink-soft);text-align:center;line-height:1.45}.btn-exit{border:none;background:none;color:var(--muted);font-size:18px;line-height:1;padding:0 8px 0 0;cursor:pointer}.kana-matrix{display:flex;flex-direction:column;gap:12px}.kana-script .seg-btn{font-size:13px}.kana-overlays{display:flex;gap:8px;flex-wrap:wrap}.overlay-chip{border:1px solid var(--line);background:var(--card);color:var(--ink-soft);border-radius:999px;padding:7px 12px;font-size:13px;cursor:pointer}.overlay-chip.on{border-color:var(--accent);background:var(--accent);color:#fff}.kana-section-h{margin:6px 0 0;font-size:14px;color:var(--ink-soft)}.kana-grid{display:grid;gap:4px}.kana-cell{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:50px;border-radius:8px}.kana-cell.filled{background:var(--card);border:1px solid var(--line)}.kana-cell.empty{background:transparent}.kana-cell.head{min-height:22px;font-size:12px;font-weight:700;color:var(--accent);text-transform:uppercase}.kana-cell.rowlabel{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase}.kana-ch{font-size:22px;line-height:1.1}.kana-ro{font-size:10px;color:var(--muted)}.learn-levels{flex-wrap:wrap}.learn-toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.learn-count{margin:2px 0 4px}.learn-search{width:100%;min-height:46px;border:1.5px solid var(--line);border-radius:12px;padding:0 14px;font-size:16px}.learn-list{display:flex;flex-direction:column;gap:8px}.learn-row{display:block;width:100%;text-align:left;font-size:inherit;font-family:inherit;-moz-appearance:none;appearance:none;-webkit-appearance:none;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px;cursor:pointer;-webkit-tap-highlight-color:transparent}.learn-row.open{border-color:var(--accent)}.learn-row-head{display:flex;align-items:center;gap:10px}.learn-jp{font-size:20px;flex:1}.learn-jp ruby rt{font-size:calc(.45em * var(--furi-scale));color:var(--ink-soft)}.big-kana{font-size:26px}.learn-pattern{font-size:18px}.learn-en{font-size:14px;color:var(--ink-soft);text-align:right;flex-shrink:0;max-width:40%}.learn-chevron{flex-shrink:0;color:var(--muted);font-size:18px;line-height:1;transition:transform .18s ease;margin-left:2px}.learn-row.open .learn-chevron{transform:rotate(90deg);color:var(--accent)}.learn-detail{margin-top:10px;border-top:1px solid var(--line);padding-top:10px}.detail-rows{display:flex;flex-direction:column;gap:6px}.detail-row{display:flex;gap:10px;align-items:baseline}.detail-k{flex:0 0 82px;font-size:11px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em;padding-top:2px}.detail-row ruby rt{font-size:calc(.45em * var(--furi-scale));color:var(--ink-soft)}.mastery-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.mastery-dot.unseen{background:var(--line)}.mastery-dot.learning{background:#f59e0b}.mastery-dot.mastered{background:#22c55e}.practice-bar{width:100%;padding:10px 16px;background:var(--accent);color:#fff;border:none;border-radius:12px;font-size:15px;font-weight:600;cursor:pointer;text-align:left}.topic-chips{display:flex;flex-wrap:wrap;gap:6px;padding:4px 0}.topic-chip{padding:4px 10px;border-radius:20px;border:1.5px solid var(--line);background:transparent;font-size:13px;cursor:pointer;color:var(--ink-soft);white-space:nowrap}.topic-chip.active{border-color:var(--accent);color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,transparent);font-weight:600}.kanji-related{align-items:flex-start}.related-vocab-list{display:flex;flex-direction:column;gap:5px}.related-vocab-item{display:flex;align-items:baseline;gap:6px;font-size:16px}.related-vocab-en{font-size:13px;color:var(--ink-soft)}.verb-class-head{display:flex;align-items:center;justify-content:space-between;padding:10px 4px 4px;font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft)}.verb-class-count{background:var(--line);border-radius:10px;padding:1px 8px;font-size:12px}.grammar-pattern-large{font-size:18px;font-weight:600}.grammar-structure{font-family:monospace;font-size:13px;color:var(--accent)}.grammar-en{color:var(--ink-soft);font-style:italic}.today-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.today-stat{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 6px;text-align:center}.today-num{display:block;font-size:22px;font-weight:800;color:var(--accent)}.today-label{font-size:11px;color:var(--ink-soft)}.calibrate-card{display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:left;cursor:pointer;width:100%}.calibrate-text{display:flex;flex-direction:column;gap:2px}.calibrate-text strong{font-size:15px}.calibrate-text span{font-size:12px;color:var(--ink-soft)}.calibrate-go{font-size:20px;color:var(--accent)}.climb-card{display:flex;flex-direction:column;gap:12px}.climb-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.climb-head h2{margin:0;font-size:18px}.seg.small{gap:6px;flex:0 1 auto}.seg.small .seg-btn{min-height:38px;min-width:48px;padding:0 10px;font-size:14px}.climb-sub{margin:0;font-size:13px;color:var(--ink-soft)}.climb-status .climb-line{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px}.climb-pct{font-size:20px;font-weight:700;color:var(--accent)}.mix-preview{display:flex;gap:12px}.mix-row{flex:1;display:flex;flex-direction:column;align-items:center;background:var(--bg);border-radius:10px;padding:10px}.mix-num{font-size:24px;font-weight:800}.mix-label{font-size:12px;color:var(--ink-soft);text-align:center}.weak h2{font-size:15px;margin:0 0 8px}.weak-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.weak-list li{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:14px}.weak-key{font-weight:600}.weak-meta{font-size:12px;color:var(--muted);text-align:right}.module-list{display:flex;flex-direction:column;gap:12px}.module-card{display:flex;flex-direction:column;align-items:flex-start;gap:4px;text-align:left;cursor:pointer}.module-name{font-size:18px;font-weight:700}.module-sub{font-size:13px;color:var(--ink-soft)}.module-count{font-size:12px;color:var(--muted)}.setup-step h3{font-size:15px;margin:0 0 8px}.seg{display:flex;gap:8px;flex-wrap:wrap}.seg-btn{flex:1 1 0;min-height:var(--tap);min-width:72px;border:1px solid var(--line);background:var(--card);border-radius:12px;font-size:15px;font-weight:600;color:var(--ink);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.seg-btn.active{border-color:var(--accent);background:var(--accent);color:var(--accent-ink)}.seg-count{font-size:12px;font-weight:500;opacity:.85}.slider{width:100%;height:40px}.slider-scale{display:flex;justify-content:space-between;font-size:12px;color:var(--muted)}.hint{font-size:13px;color:var(--ink-soft)}.hint.center{text-align:center}.btn{min-height:var(--tap);padding:0 18px;border-radius:12px;border:1px solid var(--line);background:var(--card);color:var(--ink);font-size:16px;font-weight:600;cursor:pointer}.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.btn.big{width:100%;min-height:60px;font-size:18px}.btn.link{border:none;background:none;color:var(--accent);padding:8px 4px;min-height:auto}.btn:disabled{opacity:.5}.sticky{position:fixed;left:50%;transform:translate(-50%);bottom:calc(16px + env(safe-area-inset-bottom));width:min(calc(100% - 32px),calc(var(--maxw) - 32px));z-index:5;box-shadow:0 6px 20px #0000001f}.runner{gap:14px;padding-bottom:calc(16px + env(safe-area-inset-bottom))}.runner-head,.runner .prompt-card{flex:0 0 auto}.runner-head{display:flex;flex-direction:column;gap:8px}.runner-progress{display:flex;justify-content:space-between;font-size:14px;color:var(--ink-soft)}.runner-title{font-weight:600}.runner-bar{height:6px;background:var(--line);border-radius:999px;overflow:hidden}.runner-bar-fill{height:100%;background:var(--accent);transition:width .2s ease}.badges{display:flex;gap:8px;margin-bottom:12px}.badge{font-size:12px;font-weight:700;background:var(--accent);color:#fff;padding:3px 8px;border-radius:999px}.badge.muted{background:var(--bg);color:var(--ink-soft)}.prompt-card{text-align:center}.prompt{font-size:34px;line-height:1.5;word-break:break-word}.prompt ruby rt{font-size:calc(.42em * var(--furi-scale));color:var(--ink-soft)}.choices{display:flex;flex-direction:column;gap:14px;flex:1 1 auto;justify-content:space-evenly}.runner.answered .choices{flex:0 0 auto;justify-content:flex-start}.choice{min-height:60px;border:1.5px solid var(--line);background:var(--card);border-radius:14px;font-size:19px;line-height:1.35;letter-spacing:.01em;padding:14px 18px;color:var(--ink);cursor:pointer;transition:border-color .12s ease,background .12s ease,transform .06s ease}.choice:active{transform:scale(.99)}@media (hover: hover){.choice:not(:disabled):hover{border-color:var(--accent)}}.choice ruby rt{font-size:calc(.45em * var(--furi-scale));color:var(--ink-soft)}.choice.correct{border-color:var(--ok);background:var(--ok-bg);color:var(--ok)}.choice.wrong{border-color:var(--bad);background:var(--bad-bg);color:var(--bad)}.choice.dim{opacity:.5}.typed{display:flex;flex-direction:column;gap:10px;flex:0 0 auto}.typed-input{min-height:60px;border:1.5px solid var(--line);border-radius:12px;font-size:24px;text-align:center;padding:8px}.typed-input.correct{border-color:var(--ok);background:var(--ok-bg)}.typed-input.wrong{border-color:var(--bad);background:var(--bad-bg)}.feedback{border-radius:var(--radius);border:1px solid var(--line);padding:14px}.feedback.ok{background:var(--ok-bg);border-color:#b7e3c4}.feedback.bad{background:var(--bad-bg);border-color:#f3c2c2}.feedback-head{font-weight:800;margin-bottom:10px}.feedback.ok .feedback-head{color:var(--ok)}.feedback.bad .feedback-head{color:var(--bad)}.reveal{margin:0 0 14px;display:flex;flex-direction:column;gap:6px}.reveal-row{display:flex;gap:10px;align-items:baseline;background:#fff9;border-radius:8px;padding:6px 10px}.reveal-row dt{flex:0 0 92px;font-size:12px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.03em}.reveal-row dd{margin:0;font-size:18px}.reveal ruby rt{font-size:calc(.45em * var(--furi-scale));color:var(--ink-soft)}.score-card{text-align:center}.score-big{font-size:56px;font-weight:800;color:var(--accent)}.score-sub{color:var(--ink-soft)}.change h3{margin:0 0 8px;font-size:15px}.change ul{margin:0;padding-left:18px;font-size:18px;display:flex;flex-direction:column;gap:4px}.change.up h3{color:var(--ok)}.change.down h3{color:var(--bad)}.summary-actions{display:flex;gap:10px}.summary-actions .btn{flex:1}.empty{align-items:center;text-align:center;padding-top:60px}.login,.splash{align-items:center;text-align:center;gap:24px}.splash{justify-content:center;min-height:70vh}.login-hero{margin-top:48px;display:flex;flex-direction:column;align-items:center;gap:6px}.login-logo{width:96px;height:84px;border-radius:22px;background:var(--ink);color:#fff;font-size:40px;white-space:nowrap;display:flex;align-items:center;justify-content:center;letter-spacing:-1px}.login-hero h1{margin:8px 0 0;font-size:26px}.login-tag{color:var(--ink-soft);margin:0}.login-actions{width:100%;display:flex;flex-direction:column;align-items:center;gap:14px;margin-top:12px}.google-btn-host{min-height:44px;display:flex;justify-content:center}.google-unconfigured{text-align:left}.google-unconfigured strong{display:block;margin-bottom:4px}.guest-btn{max-width:320px}.small-print{max-width:320px;font-size:12px}.head-right{display:flex;align-items:center;gap:14px}.avatar-btn{position:relative;border:none;background:none;padding:0;cursor:pointer;line-height:0}.avatar{width:36px;height:36px;border-radius:50%;object-fit:cover;background:var(--line)}.avatar.fallback{display:inline-flex;align-items:center;justify-content:center;font-size:16px;font-weight:700;color:#fff;background:var(--accent);line-height:1}.avatar.lg{width:64px;height:64px}.avatar.lg.fallback{font-size:28px}.sync-dot{position:absolute;right:-2px;top:-2px;width:11px;height:11px;border-radius:50%;border:2px solid var(--bg);background:var(--muted);z-index:2}.sync-dot.synced{background:var(--ok)}.sync-dot.syncing{background:var(--accent)}.sync-dot.offline,.sync-dot.error{background:#d97706}.identity{display:flex;align-items:center;gap:14px}.identity-name{font-size:18px;font-weight:700}.identity-email{font-size:13px;color:var(--ink-soft)}.sync-line{font-size:12px;margin-top:4px;color:var(--muted)}.sync-line.synced{color:var(--ok)}.sync-line.offline,.sync-line.error{color:#b45309}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.stat{text-align:center;padding:12px 6px}.stat-num{font-size:24px;font-weight:800;color:var(--accent)}.stat-label{font-size:11px;color:var(--ink-soft)}.readiness-summary h3,.settings-block h3,.data-block h3{margin:0 0 12px;font-size:15px}.readiness-row{display:flex;align-items:center;gap:10px;margin-bottom:8px;font-size:14px}.readiness-row>span:first-child{width:28px;font-weight:600}.readiness-bar.mini{flex:1;height:8px;margin:0}.readiness-num{width:40px;text-align:right;color:var(--ink-soft)}.settings-block,.data-block{display:flex;flex-direction:column;gap:12px}.toggle.row,.setting-row{display:flex;align-items:center;justify-content:space-between}.data-block .btn{width:100%}.btn.danger-outline{color:var(--bad);border-color:#f3c2c2}.sign-out{width:100%}
