.session-bar{align-items:center;gap:.85rem;max-width:44rem;margin:-.5rem auto 1rem;display:flex}.session-progress{background:var(--surface-3);border-radius:999px;flex:1;height:.5rem;overflow:hidden}.session-progress .fill{background:linear-gradient(90deg, var(--accent), var(--accent-2));height:100%;transition:width .25s var(--ease-out);border-radius:999px}.session-count{min-width:4.5rem;color:var(--muted);font-variant-numeric:tabular-nums;text-align:right;font-size:.86rem}.session-bar .icon-btn:disabled{opacity:.35;cursor:default}.help-btn{font-weight:850}@media (hover:none){.help-btn{display:none}}.shortcut-list{gap:.5rem;display:grid}.shortcut-list>div{grid-template-columns:4.5rem 1fr;align-items:center;gap:.75rem;display:grid}.shortcut-list dt kbd{opacity:1;font-size:.78rem;display:inline-block}.shortcut-list dd{color:var(--text-2);margin:0;font-size:.93rem}.review{flex-direction:column;max-width:44rem;margin:0 auto;display:flex}.answer-box.card{text-align:center;flex-direction:column;align-items:center;margin-bottom:1rem;padding:1.4rem 1.25rem 1.6rem;animation:.15s ease-out fade-in;display:flex}.answer-box .kind{margin-bottom:1rem}.answer-box>.plain{width:100%;font-family:var(--font-target);justify-content:center;align-items:center;padding-bottom:.4rem;font-size:clamp(2.6rem,2rem + 3vw,3.6rem);line-height:1.3;display:flex}.answer-box a.plain{color:var(--text)}.answer-box>.plain .side{flex:1;justify-content:flex-end;font-size:1rem;display:flex}.answer-box>.plain .spacer{flex:1}.answer-box .kanji-keyword{font-family:var(--font);letter-spacing:-.02em;font-size:clamp(1.6rem,1.3rem + 1.4vw,2.1rem);font-weight:850}.answer-box .single-character{font-size:clamp(6rem,4rem + 8vw,9rem);line-height:1.1}.english-front{text-align:left;width:100%;font-size:1.12rem}.card-sentence{margin-top:.6rem}.card-sentence .sentence{font-family:var(--font-target);font-size:1.5rem;line-height:2.15}@media (width<=47.99rem){.card-sentence .sentence{line-height:2}}.also-written{color:var(--muted);margin-top:-.2rem;font-size:.9rem}.also-written .jp{color:var(--text);font-family:var(--font-target);font-size:1.05rem}.confusable{color:var(--muted);margin-top:.9rem;font-size:.9rem}.confusable a{font-family:var(--font-target);font-size:1.05rem}.confusable a:hover{text-underline-offset:3px;text-decoration:underline}.sentence-actions{justify-content:center;align-items:center;gap:.9rem;margin-top:.5rem;display:flex}.sentence-actions:empty{display:none}.sentence-actions .icon-link{width:2rem;height:2rem}.sentence-actions .another-sentence:disabled{opacity:.5}.sentence-translation-line+.sentence-actions{margin-top:1rem}.card-sentence .sentence .target{color:var(--accent-text);margin:0 .15rem;font-weight:800}.sentence-translation-line{color:var(--muted);margin-top:.15rem}.sentence-translation{transition:filter .15s}.edit-translation{color:var(--accent-text);vertical-align:-.1em;cursor:pointer;background:0 0;border:0;border-radius:6px;margin-left:.35rem;padding:.15rem;display:inline-flex;position:relative}@media (pointer:coarse){.edit-translation:after{content:"";position:absolute;inset:-.25rem -.55rem}}.blur{filter:blur(.35em);cursor:pointer}.review-reveal{animation:.2s ease-out rise-in}.revisited{display:contents}.revisited .answer-box.card,.revisited .review-reveal,.revisited .kanji-hero,.revisited .kanji-figure,.revisited .layer-swap,.revisited .grade{animation:none}.review-reveal>.result{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow);margin-bottom:1rem;padding:1.3rem 1.4rem}.kanji-hero{text-align:left;justify-content:center;align-items:center;gap:1.25rem;width:100%;display:flex}.kanji-hero .kanji-figure{flex:none;width:min(9.5rem,36vw);margin:0}.kanji-hero svg.kanji{border-radius:13px;padding:.6rem}.kanji-hero-glyph{font-family:var(--font-jp);font-size:5.5rem;line-height:1.1}.kanji-hero>.kanji-keyword{overflow-wrap:anywhere;min-width:0}.kanji-hero-figure{flex:none;position:relative}.kanji-cover{z-index:1;border-radius:inherit;border:1.5px solid transparent;transition:border-color .15s,box-shadow .15s;position:absolute;inset:0}.kanji-hero-figure .kanji-cover{border-radius:13px}.compare-label{color:var(--faint);letter-spacing:.07em;text-transform:uppercase;font-size:.72rem;font-weight:850}.drawing-surface .replay,.kanji-hero .replay{z-index:2;width:1.75rem;height:1.75rem;bottom:.45rem;right:.45rem}.part-of-deck{color:var(--muted);text-align:center;margin:.25rem 0 1rem;font-size:.9rem}.drawing-container{flex-direction:column;align-items:center;gap:.6rem;margin:0 0 1rem;display:flex}.drawing-surface{aspect-ratio:1;border:1px solid var(--border);background-color:var(--canvas-bg);background-image:linear-gradient(to right, transparent calc(50% - .5px), var(--border) calc(50% - .5px), var(--border) calc(50% + .5px), transparent calc(50% + .5px)), linear-gradient(to bottom, transparent calc(50% - .5px), var(--border) calc(50% - .5px), var(--border) calc(50% + .5px), transparent calc(50% + .5px));width:min(22rem,100%);box-shadow:var(--shadow);border-radius:18px;position:relative}.drawing-canvas{z-index:1;border-radius:inherit;touch-action:none;cursor:crosshair;width:100%;height:100%;position:absolute;inset:0}.drawing-surface .kanji-figure{max-width:none;position:absolute;inset:0}.drawing-surface svg.kanji{border-radius:inherit;background:0 0;border:none;width:100%;height:100%;padding:6%}.drawing-surface svg.kanji>path{stroke:color-mix(in srgb, var(--kanji-ink) 28%, var(--canvas-bg))}.drawing-surface svg.kanji .ghost path{stroke:color-mix(in srgb, var(--kanji-ink) 7%, var(--canvas-bg))}.canvas-glyph{color:color-mix(in srgb, var(--kanji-ink) 28%, var(--canvas-bg));font-family:var(--font-target);pointer-events:none;-webkit-user-select:none;user-select:none;place-items:center;font-size:min(15rem,62vw);line-height:1;display:grid;position:absolute;inset:0}.drawing-surface.answer-only .canvas-glyph{color:var(--kanji-ink)}.drawing-canvas{transition:opacity .25s ease-out}.drawing-surface.answer-only .drawing-canvas{opacity:0;pointer-events:none}.drawing-surface.answer-only svg.kanji>path{stroke:var(--kanji-ink)}.drawing-surface .layer-swap{z-index:2;border:1px solid var(--border-strong);background:var(--surface);width:1.75rem;height:1.75rem;color:var(--text);font-family:var(--font);cursor:pointer;border-radius:50%;place-items:center;padding:0;font-size:.85rem;font-weight:700;line-height:1;transition:transform .12s;display:grid;position:absolute;bottom:.45rem;left:.45rem}.drawing-surface .layer-swap:hover{transform:scale(1.07)}.kanji-practice{grid-template-rows:1fr auto;justify-items:center;row-gap:.5rem;width:100%;margin-top:1rem;display:grid}.kanji-practice .drawing-container{grid-template-rows:auto 1fr;justify-items:center;width:100%;margin:0;display:grid}.answer-box.kanji-card{margin-bottom:.75rem;padding:1rem 1rem 1.1rem}.review-reveal>.result.kanji{padding:1rem 1.15rem}.answer-box>.kanji-figure{width:min(22rem,100%);max-width:none}.answer-box.kanji-card .kind{margin-bottom:.6rem}.review-reveal>.result.kanji .kanji-used>a{gap:.45rem;padding:.25rem .7rem .25rem .45rem}.review-reveal>.result.kanji .kanji-used .spelling{font-size:1.3rem}.review-reveal>.result.kanji .kanji-used .description{font-size:.85rem}.review-reveal>.result.kanji .subsection-label{margin:1rem 0 .45rem}.review-reveal>.result.kanji>.subsection-label:first-child,.review-reveal>.result.kanji>.kanji-mnemonic:first-child>.subsection-label{margin-top:0}.kanji-practice{--fold:.32s cubic-bezier(.2, 0, 0, 1);transition:grid-template-rows var(--fold), row-gap var(--fold), margin-top var(--fold)}.kanji-practice .drawing-container{transition:grid-template-rows var(--fold), row-gap var(--fold)}.kanji-practice .drawing-surface{transition:width var(--fold)}.kanji-practice .drawing-canvas{transition:opacity var(--fold)}.kanji-practice .tracing-label,.kanji-practice .drawing-controls{min-height:0;max-height:100%;transition:opacity var(--fold), visibility var(--fold);overflow:hidden}.kanji-practice.revealed{grid-template-rows:0fr auto;row-gap:0;margin-top:.4rem}.kanji-practice.revealed .drawing-surface{width:min(22rem,100%,36svh)}.kanji-practice.revealed .tracing-label,.kanji-practice.folded .drawing-controls{opacity:0;visibility:hidden}.kanji-practice.folded .drawing-container{grid-template-rows:auto 0fr;row-gap:0}:where(.kanji-practice .drawing-surface) :is(.kanji-figure,.layer-swap){animation:.32s cubic-bezier(.2,0,0,1) fade-in}:where(.answer-box:has(.kanji-practice))+.review-reveal{animation:.32s cubic-bezier(.2,0,0,1) fade-in}.tracing-label{align-items:center;gap:.75rem;display:flex}.tracing-label .link{letter-spacing:0;text-transform:none;font-size:.75rem}.drawing-controls{gap:.5rem;width:min(22rem,100%);display:flex}.drawing-controls button,.ai-actions button,.ai-form button{border:1px solid var(--border-strong);background:var(--surface);height:2.3rem;color:var(--text);cursor:pointer;border-radius:10px;padding:0 .9rem;font-size:.88rem;font-weight:750;transition:background .15s}.drawing-controls button{flex:1}.drawing-controls button:hover:not(:disabled),.ai-actions button:hover:not(:disabled),.ai-form button:hover:not(:disabled){background:var(--surface-2)}.drawing-controls button:disabled,.ai-actions button:disabled,.ai-form button:disabled{opacity:.5;cursor:default}.dock{z-index:30;padding:.75rem 1rem calc(.75rem + env(safe-area-inset-bottom));border-top:1px solid var(--border);background:var(--bg);position:fixed;bottom:0;left:0;right:0;box-shadow:0 -6px 24px rgba(17,24,39,.06)}.dock-inner{flex-direction:column;gap:.5rem;max-width:44rem;margin:0 auto;display:flex}.dock-main{align-items:stretch;gap:.5rem;display:flex}.dock .icon-btn.more{border-color:var(--border);background:var(--surface);width:2.8rem;height:auto}.dock .icon-btn.more.open{background:var(--surface-2);color:var(--text)}.btn.reveal{flex:1;gap:.8rem}.grade-row{flex:1;gap:.5rem;display:grid}.grade-row.two{grid-template-columns:1fr 1fr}.grade-row.five{grid-template-columns:repeat(5,1fr)}.grade{cursor:pointer;border:1px solid transparent;border-radius:15px;flex-direction:column;justify-content:center;align-items:center;gap:.2rem;min-height:3.4rem;padding:.45rem .3rem;font-size:.97rem;font-weight:800;transition:box-shadow .15s,transform 60ms;animation:.15s ease-out both fade-in;display:flex}.grade:active:not(:disabled){transform:scale(.98)}.grade:disabled{opacity:.6;cursor:default}.grade.fail{border-color:color-mix(in srgb, var(--danger) 30%, var(--surface));background:color-mix(in srgb, var(--danger) 13%, var(--surface));color:var(--danger)}.grade.hard{border-color:color-mix(in srgb, var(--warning) 30%, var(--surface));background:color-mix(in srgb, var(--warning) 13%, var(--surface));color:var(--warning)}.grade.good{border-color:color-mix(in srgb, var(--success) 30%, var(--surface));background:color-mix(in srgb, var(--success) 13%, var(--surface));color:var(--success)}.grade.easy{border-color:color-mix(in srgb, var(--info) 30%, var(--surface));background:color-mix(in srgb, var(--info) 13%, var(--surface));color:var(--info)}.grade.neutral{border-color:var(--border);background:var(--surface);color:var(--text-2)}.grade:hover:not(:disabled){box-shadow:inset 0 0 0 100px color-mix(in srgb, currentColor 7%, transparent)}.grade.focused,.grade.focused:hover:not(:disabled){box-shadow:0 0 0 2px var(--bg), 0 0 0 4px currentColor}.grade-label{line-height:1.2}.grade-caption{opacity:.85;font-size:.72rem;font-weight:750;line-height:1.3}.dock-spacer{height:6rem}.dock-spacer.tall{height:7.5rem}@media (width<=47.99rem){.grade-row.five{grid-template-columns:repeat(6,1fr)}.grade-row.five>:nth-child(-n+2){grid-column:span 3}.grade-row.five>:nth-child(n+3){grid-column:span 2}.grade{min-height:3.1rem}.dock-spacer.tall{height:10.5rem}}.empty-state.done{max-width:32rem;margin:2.5rem auto;padding:2.2rem 1.6rem}.done-mark{background:var(--success-soft);width:3.6rem;height:3.6rem;color:var(--success);border-radius:50%;place-items:center;margin:0 0 .5rem;display:grid}.sentence-hidden{color:var(--muted);text-align:center;margin:.4rem 0 0;font-size:.9rem}.translation-modal{color:var(--text);text-align:start}.translation-modal .hint{margin:.5rem 0 0}.translation-sentence{font-family:var(--font-target);margin:0 0 .75rem;font-size:1.15rem}