.app-shell{--vn-bg:#f8f8f6;--vn-bg-side:#f0efeb;--vn-bg-elev:#fff;--vn-bg-hover:#ecebe5;--vn-bg-card:#fff;--vn-line:#d9d8d1;--vn-line-soft:#e7e6e0;--vn-ink:#1a1c1b;--vn-ink-mid:#565956;--vn-ink-muted:#80847f;--vn-ink-faint:#b1b4ae;--vn-accent:#2f6f6c;--vn-accent-soft:#2f6f6c1f;--vn-accent-bg:#d9eae8;--vn-pos-noun:#6b46c1;--vn-pos-verb:#2f6f6c;--vn-pos-adj:#b86e1d;--vn-pos-adv:#2956a8;--vn-pos-phrase:#b14a3f;--vn-due:#b86e1d;--vn-serif:"Source Serif 4","Crimson Pro",Georgia,serif;--vn-mono:"JetBrains Mono","SF Mono",ui-monospace,monospace;--vn-sans:"Inter","Noto Sans JP",system-ui,sans-serif;--vn-accent-deep:#2f6f6c38;--vn-bad:#b14a3f;--vn-bad-soft:#b14a3f1a;--vn-good:#5e9a6e;--vn-progress:#b86e1d;--vn-brand-pale:#5fa8a4;--vn-brand-warn:#c4881a}.app-shell.vn-page,.app-shell .vn-page{background:var(--vn-bg);color:var(--vn-ink);font-family:var(--vn-sans)}.app-shell .vn-page-shell{width:min(100%,1080px);margin:0 auto}.app-shell .vn-page-header{justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:28px;display:flex}.app-shell .vn-page-kicker{font-family:var(--vn-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--vn-ink-faint);margin-bottom:8px;font-size:10px;font-weight:600}.app-shell .vn-page-title{font-family:var(--vn-serif);color:var(--vn-ink);margin:0;font-size:30px;font-weight:600;line-height:1.1}.app-shell .vn-page-subtitle{max-width:620px;color:var(--vn-ink-muted);margin-top:8px;font-size:13px;line-height:1.6}.app-shell .vn-card-panel{background:var(--vn-bg-card);border:1px solid var(--vn-line);box-shadow:none;border-radius:8px}.app-shell .vn-icon-tile{background:var(--vn-accent-soft);color:var(--vn-accent);border-radius:8px;justify-content:center;align-items:center;display:inline-flex}.app-shell .vn-muted{color:var(--vn-ink-muted)}.app-shell.vn-surface-scope .rounded-3xl,.app-shell.vn-surface-scope .rounded-2xl,.app-shell.vn-surface-scope .rounded-xl{border-radius:8px!important}.app-shell.vn-surface-scope :is(.bg-white,.bg-white\/70,.dark\:bg-zinc-900,.dark\:bg-zinc-900\/40){background:var(--vn-bg-card)!important}.app-shell.vn-surface-scope :is(.border-zinc-200,.dark\:border-zinc-700,.dark\:border-zinc-800){border-color:var(--vn-line)!important}.dark .app-shell{--vn-bg:var(--background);--vn-bg-side:#1e1f21;--vn-bg-elev:#1e1f21;--vn-bg-hover:#2f3236;--vn-bg-card:#1e1f21;--vn-line:#2f3236;--vn-line-soft:#1c1c20;--vn-ink:#ecf0ee;--vn-ink-mid:#a6ada9;--vn-ink-muted:#757a76;--vn-ink-faint:#4a4f4c;--vn-accent:#7dd3c8;--vn-accent-soft:#7dd3c824;--vn-accent-bg:#1c2c2a;--vn-pos-noun:#c2a9f5;--vn-pos-verb:#7dd3c8;--vn-pos-adj:#f0b975;--vn-pos-adv:#8eb8ff;--vn-pos-phrase:#d48179;--vn-due:#f5b562;--vn-accent-deep:#7dd3c847;--vn-bad:#f0857d;--vn-bad-soft:#f0857d1f;--vn-good:#7fbf95;--vn-progress:#d6a154;--vn-brand-pale:#1e3d3b;--vn-brand-warn:#d4922a}.app-shell .vn-sidebar{background:var(--vn-bg-side);border-right:1px solid var(--vn-line);flex-direction:column;gap:22px;height:100%;padding:22px 18px;display:flex;overflow-y:auto}.app-shell .vn-sidebar__sections{flex-direction:column;flex:auto;gap:22px;min-height:0;display:flex}.app-shell .vn-brand{align-items:center;gap:12px;display:flex}.app-shell .vn-brand__ring{flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;display:flex;position:relative}.app-shell .vn-brand__ring .vn-brand__mark{background:var(--vn-accent);color:#fff;width:32px;height:32px;font-family:var(--vn-serif);border-radius:8px;place-items:center;font-size:18px;font-style:italic;font-weight:700;transition:transform .15s,box-shadow .15s,filter .15s;display:grid;position:absolute;top:2px;left:2px;overflow:hidden}.app-shell .vn-brand__fill{background:var(--vn-accent);pointer-events:none;transform-origin:bottom;will-change:height,transform;border-radius:0 0 6px 6px;transition:height .7s cubic-bezier(.34,1.3,.64,1);position:absolute;bottom:0;left:0;right:0;box-shadow:inset 0 -1px #ffffff4d}.app-shell .vn-brand__fill--overdraft{background:var(--vn-bad);box-shadow:inset 0 -1px #ffffff40}.app-shell .vn-brand__fill.is-dropping{animation:.8s cubic-bezier(.34,1.56,.64,1) vn-brand-splash}@keyframes vn-brand-splash{0%{transform:translateY(0)scaleY(1)}25%{transform:translateY(-5px)scaleY(1.1)}50%{transform:translateY(3px)scaleY(.88)}75%{transform:translateY(-2px)scaleY(1.05)}to{transform:translateY(0)scaleY(1)}}.app-shell .vn-brand__mark.is-partial,.app-shell .vn-header__brand-mark.is-partial{background:var(--vn-brand-pale)}.app-shell .vn-brand__mark.is-overdraft,.app-shell .vn-header__brand-mark.is-overdraft{background:var(--vn-brand-warn)}.app-shell .vn-brand__mark.is-dropping,.app-shell .vn-header__brand-mark.is-dropping{animation:.85s cubic-bezier(.34,1.56,.64,1) vn-mark-drop}@keyframes vn-mark-drop{0%{transform:scale(1)rotate(0)}20%{transform:scale(1.22)rotate(-10deg)}42%{transform:scale(1.08)rotate(6deg)}62%{transform:scale(1.04)rotate(-3deg)}80%{transform:scale(1.01)rotate(1deg)}to{transform:scale(1)rotate(0)}}.app-shell .vn-brand__char{z-index:1;pointer-events:none;position:relative}.app-shell .vn-brand__name{font-family:var(--vn-serif);letter-spacing:-.01em;color:var(--vn-ink);font-size:18px;font-weight:600;line-height:1.2}.app-shell .vn-brand__name em{color:var(--vn-accent);font-style:italic;font-weight:500}.app-shell .vn-brand__ring button.vn-brand__mark{cursor:pointer;border:none}.app-shell .vn-brand__ring button.vn-brand__mark:hover,.app-shell .vn-brand__ring button.vn-brand__mark:focus-visible{filter:brightness(1.08);box-shadow:0 0 0 3px var(--vn-accent-soft),0 6px 16px #0000002e;outline:none;transform:scale(1.06)}.app-shell .vn-brand__subtitle{color:var(--vn-ink-muted);margin-top:2px;font-size:11.5px}.app-shell .vn-search{background:var(--vn-bg-elev);border:1px solid var(--vn-line);border-radius:8px;align-items:center;gap:10px;padding:8px 12px;display:flex}.app-shell .vn-search input{color:var(--vn-ink);font:inherit;background:0 0;border:none;outline:none;flex:1;min-width:0;font-size:13px}.app-shell .vn-search input::placeholder{color:var(--vn-ink-faint)}.app-shell .vn-search__icon{color:var(--vn-ink-muted);flex-shrink:0}.app-shell .vn-search__clear{cursor:pointer;color:var(--vn-ink-muted);background:0 0;border:none;border-radius:3px;place-items:center;padding:2px;display:grid}.app-shell .vn-search__clear:hover{color:var(--vn-ink)}.app-shell .vn-section{flex-direction:column;gap:2px;display:flex}.app-shell .vn-section__label{text-transform:uppercase;letter-spacing:.1em;color:var(--vn-ink-faint);justify-content:space-between;align-items:center;padding:4px 10px 8px;font-size:11px;font-weight:600;display:flex}.app-shell .vn-section__action{cursor:pointer;color:var(--vn-ink-faint);background:0 0;border:none;border-radius:4px;place-items:center;padding:2px;display:grid}.app-shell .vn-section__action:hover{background:var(--vn-bg-hover);color:var(--vn-ink)}.app-shell .vn-row{cursor:pointer;color:var(--vn-ink-mid);text-align:left;background:0 0;border:none;border-radius:6px;align-items:center;gap:10px;width:100%;padding:8px 10px;font-family:inherit;font-size:13.5px;transition:background .1s,color .1s;display:flex;position:relative}.app-shell .vn-row:hover{background:var(--vn-bg-hover);color:var(--vn-ink)}.app-shell .vn-row.is-active{background:var(--vn-accent-bg);color:var(--vn-ink)}.app-shell .vn-row.is-drop-target{background:var(--vn-accent-bg);color:var(--vn-ink);outline:2px dashed var(--vn-accent);outline-offset:-2px}.app-shell .vn-row.is-drop-target .vn-row__icon{color:var(--vn-accent)}.app-shell .vn-drag-handle{width:18px;height:18px;color:var(--vn-ink-faint);cursor:grab;touch-action:none;border-radius:5px;flex-shrink:0;place-items:center;display:grid}.app-shell .vn-drag-handle:hover,.app-shell .vn-drag-handle:focus-visible{background:var(--vn-bg-hover);color:var(--vn-ink);outline:none}.app-shell .vn-drag-handle[draggable=false]{cursor:default;opacity:.55}.app-shell .vn-drag-handle[draggable=true]:active{cursor:grabbing}.app-shell .vn-row-a.is-dragging,.app-shell .vn-stash-row.is-dragging,.app-shell .vn-card.is-dragging{opacity:.45;transition:opacity .1s,transform .1s;transform:scale(.985)}.app-shell .vn-row-a.is-drop-target,.app-shell .vn-stash-row.is-drop-target{background:var(--vn-accent-soft);border-bottom-color:#0000;position:relative}.app-shell .vn-row-a.is-drop-target:before,.app-shell .vn-row-a.is-drop-target:after,.app-shell .vn-stash-row.is-drop-target:before,.app-shell .vn-stash-row.is-drop-target:after{content:"";background:var(--vn-accent);border-radius:999px;height:2px;position:absolute;left:12px;right:12px}.app-shell .vn-row-a.is-drop-target--before:before,.app-shell .vn-stash-row.is-drop-target--before:before{top:-1px}.app-shell .vn-row-a.is-drop-target--after:after,.app-shell .vn-stash-row.is-drop-target--after:after{bottom:-1px}.app-shell .vn-row-a__drag-cell{justify-content:center;align-items:center;display:flex}.app-shell .vn-list__drop-tail{height:8px}.app-shell .vn-row__icon{color:var(--vn-ink-muted);flex-shrink:0;place-items:center;display:grid}.app-shell .vn-row.is-active .vn-row__icon{color:var(--vn-accent)}.app-shell .vn-row__name{text-overflow:ellipsis;white-space:nowrap;flex:1;font-weight:500;overflow:hidden}.app-shell .vn-row__count{color:var(--vn-ink-faint);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:11.5px}.app-shell .vn-row.is-active .vn-row__count{color:var(--vn-accent);font-weight:600}.app-shell .vn-row__edit{flex-shrink:0;gap:2px;display:none}.app-shell .vn-row:hover .vn-row__edit,.app-shell .vn-row:focus-within .vn-row__edit{display:flex}.app-shell .vn-row__edit-btn{cursor:pointer;color:var(--vn-ink-faint);background:0 0;border:none;border-radius:3px;place-items:center;padding:3px;display:grid}.app-shell .vn-row__edit-btn:hover{background:var(--vn-bg-elev);color:var(--vn-ink)}.app-shell .vn-row__edit-btn.is-danger:hover{color:var(--vn-pos-phrase)}.app-shell .vn-empty{color:var(--vn-ink-faint);text-align:center;border:1px dashed var(--vn-line-soft);border-radius:6px;padding:12px 10px;font-size:12px;font-style:italic}.app-shell .vn-pos-tag{font-family:var(--vn-mono);color:var(--vn-ink-muted);flex-shrink:0;font-size:10.5px;font-style:italic}.app-shell .vn-pos-tag[data-pos=noun]{color:var(--vn-pos-noun)}.app-shell .vn-pos-tag[data-pos=verb]{color:var(--vn-pos-verb)}.app-shell .vn-pos-tag[data-pos=adjective]{color:var(--vn-pos-adj)}.app-shell .vn-pos-tag[data-pos=adverb]{color:var(--vn-pos-adv)}.app-shell .vn-pos-tag[data-pos=phrase],.app-shell .vn-pos-tag[data-pos=phrasal_verb],.app-shell .vn-pos-tag[data-pos=idiom]{color:var(--vn-pos-phrase)}.app-shell .vn-mastery{background:var(--vn-line);border-radius:2px;width:32px;height:3px;overflow:hidden}.app-shell .vn-mastery__fill{background:var(--vn-accent);height:100%}.app-shell .vn-top{border-bottom:1px solid var(--vn-line-soft);grid-template-columns:1fr auto 1fr;align-items:center;gap:18px;padding:14px 22px;display:grid}.app-shell .vn-crumbs{font-family:var(--vn-mono);color:var(--vn-ink-muted);white-space:nowrap;align-items:center;min-width:0;font-size:12px;display:flex;overflow:hidden}.app-shell .vn-crumbs__sep{color:var(--vn-ink-faint);flex-shrink:0;margin:0 6px}.app-shell .vn-crumbs__active{color:var(--vn-ink)}.app-shell .vn-crumbs__trigger{cursor:pointer;color:var(--vn-ink-mid);font:inherit;background:0 0;border:none;border-radius:4px;flex-shrink:0;align-items:center;gap:2px;padding:2px 4px;display:inline-flex}.app-shell .vn-crumbs__trigger:hover{background:var(--vn-bg-hover);color:var(--vn-ink)}.app-shell .vn-crumbs__group{flex:auto;min-width:0}.app-shell .vn-crumbs__group-text{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}@media (min-width:768px){.app-shell .vn-crumbs__group{cursor:default}.app-shell .vn-crumbs__group:hover{color:var(--vn-ink);background:0 0}}.app-shell .vn-crumbs__panel{border:1px solid var(--vn-line);cursor:pointer;color:var(--vn-ink-mid);background:0 0;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;margin-right:8px;padding:4px 6px;transition:background .1s,color .1s,border-color .1s}.app-shell .vn-crumbs__panel:hover{background:var(--vn-bg-hover);color:var(--vn-ink);border-color:var(--vn-ink-faint)}.app-shell .vn-seg{background:var(--vn-bg-elev);border:1px solid var(--vn-line);border-radius:6px;justify-self:center;padding:2px;display:inline-flex}.app-shell .vn-seg__btn{cursor:pointer;font:inherit;color:var(--vn-ink-muted);background:0 0;border:none;border-radius:4px;align-items:center;gap:6px;padding:5px 14px;font-size:12.5px;font-weight:500;display:inline-flex}.app-shell .vn-seg__btn.is-on{background:var(--vn-bg-hover);color:var(--vn-ink)}.app-shell .vn-seg__count{font-family:var(--vn-mono);color:var(--vn-ink-faint);background:var(--vn-bg);border-radius:3px;padding:1px 5px;font-size:10px}.app-shell .vn-top-actions{justify-self:end;align-items:center;gap:8px;display:inline-flex}.app-shell .vn-btn-ghost{background:var(--vn-bg-elev);border:1px solid var(--vn-line);color:var(--vn-ink-mid);cursor:pointer;font:inherit;border-radius:5px;align-items:center;gap:6px;padding:6px 11px;font-size:12.5px;display:inline-flex}.app-shell .vn-btn-ghost:hover:not(:disabled){background:var(--vn-bg-hover);color:var(--vn-ink)}.app-shell .vn-btn-ghost.is-on{background:var(--vn-accent-bg);border-color:var(--vn-accent-soft);color:var(--vn-accent)}.app-shell .vn-btn-ghost:disabled{opacity:.5;cursor:not-allowed}.app-shell .vn-meta{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;padding:16px 22px 8px;display:flex}.app-shell .vn-meta__count-big{font-family:var(--vn-mono);color:var(--vn-ink);letter-spacing:-.02em;font-size:22px;font-weight:600}.app-shell .vn-meta__count-label{color:var(--vn-ink-mid);margin-left:6px;font-size:12.5px}.app-shell .vn-meta__dim{color:var(--vn-ink-faint);margin-left:8px;font-size:12px}.app-shell .vn-meta__actions{flex-wrap:wrap;flex:auto;justify-content:space-between;align-items:center;gap:8px;min-width:0;display:flex}.app-shell .vn-meta__actions-group{flex-wrap:wrap;align-items:center;gap:8px;display:inline-flex}.app-shell .vn-meta__actions-group--left{justify-content:flex-start}.app-shell .vn-meta__actions-group--right{justify-content:flex-end;margin-left:auto}.app-shell .vn-list{flex-direction:column;display:flex}.app-shell .vn-list__head{font-family:var(--vn-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--vn-ink-faint);border-bottom:1px solid var(--vn-line);grid-template-columns:18px 24px minmax(200px,1.5fr) minmax(120px,1.8fr) auto;gap:8px;padding:8px 12px;font-size:10px;display:grid}.app-shell .vn-list__head-action{justify-content:flex-end;align-items:center;min-width:28px;display:flex}.app-shell .workspace-list{border-top:1px solid var(--vn-line);flex-direction:column;display:flex}.app-shell .workspace-list__head{font-family:var(--vn-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--vn-ink-faint);border-bottom:1px solid var(--vn-line);grid-template-columns:minmax(200px,1.4fr) minmax(120px,.7fr) minmax(130px,.7fr) minmax(130px,.7fr) minmax(70px,.4fr) auto;gap:16px;padding:8px 12px;font-size:10px;display:grid}.app-shell .workspace-row{border-bottom:1px solid var(--vn-line-soft);grid-template-columns:minmax(200px,1.4fr) minmax(120px,.7fr) minmax(130px,.7fr) minmax(130px,.7fr) minmax(70px,.4fr) auto;align-items:center;gap:16px;padding:12px;display:grid}.app-shell .workspace-row__file{align-items:center;gap:12px;min-width:0;display:flex}.app-shell .workspace-row__icon{background:var(--vn-accent-soft);width:32px;height:32px;color:var(--vn-accent);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.app-shell .workspace-row__name{text-overflow:ellipsis;white-space:nowrap;color:var(--vn-ink);font-size:14px;font-weight:650;overflow:hidden}.app-shell .workspace-row__meta,.app-shell .workspace-row__text{color:var(--vn-ink-muted);font-size:12.5px}.app-shell .workspace-empty{min-height:220px;color:var(--vn-ink-muted);border-bottom:1px solid var(--vn-line-soft);justify-content:center;align-items:center;gap:8px;font-size:13px;display:flex}.app-shell .request-badge{font-family:var(--vn-mono);letter-spacing:.04em;border:1px solid var(--vn-line);color:var(--vn-ink-muted);background:var(--vn-bg-elev);white-space:nowrap;border-radius:999px;align-items:center;padding:2px 8px;font-size:10.5px;display:inline-flex}.app-shell .request-badge--ok{color:#15803d;background:#f0fdf4;border-color:#bbf7d0}.app-shell .request-badge--err{color:#b91c1c;background:#fef2f2;border-color:#fecaca}.app-shell .request-badge--warn{color:#b45309;background:#fffbeb;border-color:#fde68a}.app-shell .request-badge--info{color:#1d4ed8;background:#eff6ff;border-color:#bfdbfe}@media (max-width:767px){.app-shell .workspace-list__head{display:none}.app-shell .workspace-row{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:10px}.app-shell .workspace-row__text{grid-column:1/-1;padding-left:44px}.app-shell .workspace-row>.vn-btn{grid-area:1/2}}.app-shell .vn-row-a{border-bottom:1px solid var(--vn-line-soft);cursor:pointer;text-align:left;width:100%;font:inherit;color:inherit;background:0 0;border-top:none;border-left:none;border-right:none;grid-template-columns:18px 24px minmax(200px,1.5fr) minmax(120px,1.8fr) auto;align-items:center;gap:8px;padding:10px 12px;transition:background .1s;display:grid}.app-shell .vn-row-a.is-expanded{grid-template-columns:18px 24px 1fr auto}.app-shell .vn-row-a__meta{opacity:.6;transition:opacity .12s}.app-shell .vn-row-a:hover .vn-row-a__meta,.app-shell .vn-row-a.is-expanded .vn-row-a__meta,.app-shell .vn-row-a:focus-within .vn-row-a__meta{opacity:1}.app-shell .vn-row-a.is-expanded .vn-row-a__meaning{display:none}.app-shell .vn-row-a:hover{background:var(--vn-bg-hover)}.app-shell .vn-row-a.is-expanded{background:var(--vn-bg-elev);border-bottom-color:#0000}.app-shell .vn-row-a__word{align-items:baseline;gap:6px;min-width:0;display:flex}.app-shell .vn-row-a__word-text{color:var(--vn-ink);letter-spacing:-.01em;white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:500;overflow:hidden}.app-shell .vn-row-a__ipa{font-family:var(--vn-mono);color:var(--vn-ink-faint);white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.app-shell .vn-row-a__meaning{color:var(--vn-ink-mid);white-space:nowrap;text-overflow:ellipsis;font-size:13px;overflow:hidden}.app-shell .vn-row-a__meta{color:var(--vn-ink-muted);justify-content:flex-end;align-items:center;gap:8px;display:flex}.app-shell .vn-play-btn{border:1px solid var(--vn-line);width:22px;height:22px;color:var(--vn-ink-muted);cursor:pointer;background:0 0;border-radius:50%;flex-shrink:0;place-items:center;display:grid}.app-shell .vn-play-btn:hover:not(:disabled){background:var(--vn-bg-hover);color:var(--vn-ink);border-color:var(--vn-ink-muted)}.app-shell .vn-play-btn:disabled{opacity:.5;cursor:wait}.app-shell .vn-more-btn{cursor:pointer;color:var(--vn-ink-muted);background:0 0;border:none;border-radius:3px;place-items:center;padding:3px;display:grid}.app-shell .vn-more-btn:hover{background:var(--vn-bg-hover);color:var(--vn-ink)}.app-shell .vn-more-btn--danger:hover{color:var(--vn-pos-phrase)}.app-shell .vn-chev{color:var(--vn-ink-faint);transition:transform .15s;display:inline-flex}.app-shell .vn-chev.is-open{transform:rotate(180deg)}.app-shell .vn-expand{background:var(--vn-bg-elev);border-bottom:1px solid var(--vn-line-soft);transform-origin:top;padding:4px 12px 18px 40px;animation:.16s cubic-bezier(.2,.8,.2,1) vn-expand-in}@keyframes vn-expand-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.app-shell .vn-row-a.is-expanded{animation:.14s ease-out vn-row-expand}@keyframes vn-row-expand{0%{background:0 0}to{background:var(--vn-bg-elev)}}@media (prefers-reduced-motion:reduce){.app-shell .vn-expand,.app-shell .vn-row-a.is-expanded{animation:none}}.app-shell .vn-expand__grid{flex-direction:column;gap:14px;display:flex}.app-shell .vn-sense{grid-template-columns:24px 1fr;gap:4px;display:grid}.app-shell .vn-sense--with-image{grid-template-columns:200px 24px 1fr;align-items:start;gap:14px}.app-shell .vn-sense__image{aspect-ratio:16/9;border:1px solid var(--vn-line);background:var(--vn-bg);border-radius:8px;width:200px;overflow:hidden}.app-shell .vn-sense__image img{object-fit:cover;width:100%;height:100%;display:block}.app-shell .vn-sense__image--placeholder{border-style:dashed;border-color:var(--vn-line-soft);opacity:.45;background:0 0}.app-shell .vn-expand__grid--per-sense{gap:18px}.app-shell .vn-sense__num{font-family:var(--vn-mono);color:var(--vn-ink-faint);padding-top:3px;font-size:11px}.app-shell .vn-sense__body{flex-direction:column;gap:4px;min-width:0;display:flex}.app-shell .vn-sense__main{color:var(--vn-ink);align-items:baseline;gap:4px;font-size:14px;font-weight:500;display:flex}.app-shell .vn-sense__pos{flex-shrink:0}.app-shell .vn-sense__detail{color:var(--vn-ink-muted);margin-bottom:6px;font-size:12.5px}.app-shell .vn-example{border-top:1px solid var(--vn-line-soft);grid-template-columns:22px 1fr;gap:8px;padding:8px 0;display:grid}.app-shell .vn-example:first-of-type{border-top:1px dashed var(--vn-line)}.app-shell .vn-play-mini{border:1px solid var(--vn-line);width:18px;height:18px;color:var(--vn-ink-muted);cursor:pointer;background:0 0;border-radius:50%;flex-shrink:0;place-items:center;margin-top:1px;display:grid}.app-shell .vn-example__content{flex-direction:column;gap:2px;min-width:0;display:flex}.app-shell .vn-example__en{color:var(--vn-ink);font-size:13.5px;line-height:1.55}.app-shell .vn-example__en strong,.app-shell .vn-example__en b{background:var(--vn-accent-soft);color:var(--vn-accent);border-radius:2px;padding:1px 3px;font-weight:500}.app-shell .vn-example__ja{color:var(--vn-ink-muted);font-size:12.5px;line-height:1.55}.app-shell .vn-expand__actions{border-top:1px dashed var(--vn-line);justify-content:flex-end;gap:4px;margin-top:12px;padding-top:10px;display:flex}.app-shell .vn-icon-btn{cursor:pointer;color:var(--vn-ink-muted);background:0 0;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;padding:6px;transition:background .1s,color .1s,border-color .1s;display:inline-flex}.app-shell .vn-icon-btn:hover{background:var(--vn-bg-hover);color:var(--vn-ink);border-color:var(--vn-line)}.app-shell .vn-icon-btn.is-danger:hover{color:var(--vn-pos-phrase);border-color:color-mix(in oklab,var(--vn-pos-phrase)35%,transparent)}.app-shell .vn-btn-tiny{cursor:pointer;font:inherit;font-size:11.5px;font-family:var(--vn-mono);color:var(--vn-ink-muted);background:0 0;border:none;border-radius:3px;align-items:center;gap:5px;padding:4px 8px;display:inline-flex}.app-shell .vn-btn-tiny:hover{background:var(--vn-bg-hover);color:var(--vn-ink)}.app-shell .vn-btn-tiny.is-danger:hover{color:var(--vn-pos-phrase)}.app-shell .vn-example__next{border:1px solid var(--vn-line);color:var(--vn-ink-muted);cursor:pointer;font:inherit;font-size:10.5px;font-family:var(--vn-mono);background:0 0;border-radius:999px;align-self:flex-start;align-items:center;gap:4px;margin-top:6px;padding:2px 8px 2px 6px;display:inline-flex}.app-shell .vn-example__next:hover{background:var(--vn-bg-hover);color:var(--vn-ink);border-color:var(--vn-ink-faint)}.app-shell .vn-empty-list{text-align:center;color:var(--vn-ink-muted);padding:48px 22px;font-size:13px}@media (max-width:768px){.app-shell .vn-list__head{display:none}.app-shell .vn-row-a{grid-template-rows:auto auto;grid-template-columns:18px 24px 1fr auto;row-gap:4px}.app-shell .vn-row-a__drag-cell{grid-area:1/1/3/2;align-self:center}.app-shell .vn-play-btn{grid-area:1/2/3/3;align-self:center}.app-shell .vn-row-a__meta{grid-area:1/4/3/5;align-self:center}.app-shell .vn-row-a__meaning{white-space:normal;grid-column:3/4}.app-shell .vn-row-a.is-expanded{grid-template-rows:auto;grid-template-columns:18px 24px 1fr auto}.app-shell .vn-row-a__word{flex-wrap:nowrap;overflow:hidden}.app-shell .vn-row-a__word-text{flex-shrink:0}.app-shell .vn-pos-tag{flex-shrink:1;min-width:0;overflow:hidden}.app-shell .vn-row-a__ipa{flex-shrink:2;min-width:0}}.app-shell .vn-view-toggle{background:var(--vn-bg-elev);border:1px solid var(--vn-line);border-radius:5px;padding:2px;display:inline-flex}.app-shell .vn-view-toggle button{cursor:pointer;color:var(--vn-ink-muted);background:0 0;border:none;border-radius:3px;place-items:center;padding:5px 8px;display:grid}.app-shell .vn-view-toggle button.is-on{background:var(--vn-bg-hover);color:var(--vn-ink)}.app-shell .vn-cards{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;padding:4px 0 16px;display:grid}.app-shell .vn-card{background:var(--vn-bg-elev);border:1px solid var(--vn-line);border-radius:10px;flex-direction:column;gap:6px;padding:14px 14px 12px;animation:.16s ease-out vn-expand-in;display:flex}.app-shell .vn-card__head{justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:0;display:flex}.app-shell .vn-card__word{flex-wrap:wrap;align-items:baseline;gap:8px;min-width:0;display:flex}.app-shell .vn-card__word-text{color:var(--vn-ink);letter-spacing:-.01em;font-size:17px;font-weight:600}.app-shell .vn-card__ipa{color:var(--vn-ink-faint);font-size:11.5px;font-family:var(--vn-mono);margin-top:0;line-height:1.2}.app-shell .vn-card__actions{flex-shrink:0;gap:4px;display:flex}.app-shell .vn-card__sense{border-top:1px dashed var(--vn-line);padding-top:6px}.app-shell .vn-card__sense:first-of-type{border-top:1px dashed var(--vn-line)}.app-shell .vn-card__sense-head{align-items:baseline;gap:6px;margin-bottom:2px;display:flex}.app-shell .vn-card__sense-num{font-family:var(--vn-mono);color:var(--vn-ink-faint);flex-shrink:0;font-size:11px}.app-shell .vn-card__foot{border-top:1px dashed var(--vn-line);justify-content:space-between;align-items:center;margin-top:auto;padding-top:8px;display:flex}.app-shell .vn-card__foot .vn-mastery{width:80px}.app-shell .vn-card__due{font-family:var(--vn-mono);color:var(--vn-ink-muted);font-size:10.5px}.app-shell .vn-card--stash{border-left:3px solid var(--vn-accent)}.app-shell .vn-card__stash-en{color:var(--vn-ink);font-size:15px;line-height:1.55}.app-shell .vn-card__stash-ja{color:var(--vn-ink-mid);font-size:13px;line-height:1.55}.app-shell .quest-section{flex-direction:column;gap:12px;display:flex}.app-shell .quest-section__header{justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.app-shell .quest-section__title{color:var(--vn-ink);font-family:var(--vn-serif);margin:0;font-size:22px;font-weight:600;line-height:1.15}.app-shell .quest-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;display:grid}.app-shell .quest-grid--practice{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.app-shell .quest-card-flip{aspect-ratio:16/9;perspective:1200px;width:100%;position:relative}.app-shell .quest-card-flip__inner{width:100%;height:100%;transform-style:preserve-3d;transition:transform .5s;position:relative}.app-shell .quest-card-flip__inner--flipped{transform:rotateY(180deg)}.app-shell .quest-card-flip__face{backface-visibility:hidden;position:absolute;inset:0}.app-shell .quest-card-flip__face--back{transform:rotateY(180deg)}.app-shell .quest-card{background:var(--vn-bg-card);border:1px solid var(--vn-line);color:var(--vn-ink);box-shadow:none;border-radius:8px;flex-direction:column;gap:8px;transition:border-color .12s;display:flex}.app-shell .quest-card-flip:hover .quest-card{border-color:var(--vn-accent)}.app-shell .quest-card--compact{min-height:190px}.app-shell .quest-card__body{z-index:1;flex-direction:column;flex:auto;gap:8px;min-height:0;padding:12px 14px 0;display:flex;position:relative;overflow:hidden}.app-shell .quest-card__head{flex-direction:column;gap:4px;display:flex}.app-shell .quest-card__badge,.app-shell .quest-card__hint,.app-shell .quest-stat__label{color:var(--vn-ink-faint);font-family:var(--vn-mono);letter-spacing:.08em;text-transform:uppercase;font-size:10.5px;font-weight:600}.app-shell .quest-card__title{color:var(--vn-ink);margin:0;font-size:17px;font-weight:650;line-height:1.25}.app-shell .quest-card__summary{color:var(--vn-ink-muted);margin:0;font-size:13px;line-height:1.55}.app-shell .quest-card__objective{border-top:1px dashed var(--vn-line);color:var(--vn-ink-mid);align-items:flex-start;gap:8px;margin:auto 0 0;padding-top:8px;font-size:12.5px;line-height:1.45;display:flex}.app-shell .quest-card__objective svg{color:var(--vn-accent);flex:none;margin-top:2px}.app-shell .quest-card__footer{z-index:1;border-top:1px solid var(--vn-line-soft);justify-content:space-between;align-items:center;gap:12px;margin-top:auto;padding:8px 14px;display:flex;position:relative}.app-shell .quest-card__image-button{z-index:2;border:1px solid var(--vn-line);background:var(--vn-bg-card);width:32px;height:32px;color:var(--vn-ink-muted);border-radius:8px;place-items:center;display:grid;position:absolute;top:12px;right:12px}.app-shell .quest-card__image-button:hover{background:var(--vn-bg-hover);color:var(--vn-ink)}.app-shell .quest-mode__title{align-items:center;gap:10px;display:flex}.app-shell .quest-mode__title h3{margin:0;font-size:15px;font-weight:650}.app-shell .quest-mode__icon{width:32px;height:32px}.app-shell .quest-stat{background:var(--vn-bg-card);border:1px solid var(--vn-line);color:var(--vn-ink);border-radius:8px;align-items:center;gap:8px;min-height:34px;padding:6px 10px;font-size:13px;font-weight:650;display:inline-flex}.app-shell .quest-stat svg{color:var(--vn-accent)}.app-shell .quest-history__stats{gap:8px;margin:auto 0 0;display:grid}.app-shell .quest-history__stats div{border-top:1px dashed var(--vn-line);justify-content:space-between;align-items:center;padding-top:8px;display:flex}.app-shell .quest-history__stats dt{color:var(--vn-ink-muted);font-size:12px}.app-shell .quest-history__stats dd{color:var(--vn-ink);margin:0;font-size:13px;font-weight:650}.app-shell .quest-resume{background:var(--vn-bg-card);border:1px solid var(--vn-line);border-left:3px solid var(--vn-accent);border-radius:8px;justify-content:space-between;align-items:center;gap:16px;padding:16px;display:flex}.app-shell .quest-resume__copy{min-width:0}.app-shell .quest-resume h2{color:var(--vn-ink);margin:0;font-size:17px;font-weight:650;line-height:1.25}.app-shell .quest-resume p:not(.vn-page-kicker){color:var(--vn-ink-muted);margin:6px 0 0;font-size:13px;line-height:1.45}.app-shell .quest-resume__bar{background:var(--vn-bg-hover);border-radius:999px;width:min(360px,100%);height:6px;margin-top:12px;overflow:hidden}.app-shell .quest-resume__bar span{background:var(--vn-accent);height:100%;display:block}@media (max-width:640px){.app-shell .quest-section__header,.app-shell .quest-resume{flex-direction:column;align-items:stretch}.app-shell .quest-grid{grid-template-columns:1fr}}.app-shell .shunkan-unit-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px;padding-top:16px}.app-shell .shunkan-unit-card{min-height:260px;position:relative}.app-shell .shunkan-unit-card.is-examples-hidden{min-height:0}.app-shell .shunkan-unit-card__rail{border-top-left-radius:inherit;border-bottom-left-radius:inherit;pointer-events:none;background:0 0;width:3px;position:absolute;top:0;bottom:0;left:0}.app-shell .shunkan-unit-card__rail.is-progress{background:var(--vn-progress)}.app-shell .shunkan-unit-card__rail.is-cleared{background:var(--vn-good,#7fbf95)}.app-shell .shunkan-unit-card.is-cleared{background:color-mix(in srgb,var(--vn-good,#7fbf95)6%,var(--vn-bg-card))}.app-shell .shunkan-unit-card__favorite.is-on{color:#d99a1c}.app-shell .shunkan-unit-card__target{color:var(--vn-ink);margin:0 84px 4px 0;font-size:22px;font-weight:650;line-height:1.18}.app-shell .shunkan-unit-card__meaning{color:var(--vn-ink-mid);margin:0 0 16px;font-size:13px;line-height:1.5}.app-shell .shunkan-unit-card__example{border:1px dashed var(--vn-line);background:var(--vn-bg-card);color:var(--vn-ink-mid);border-radius:8px;margin-bottom:14px;padding:12px;font-size:13px;line-height:1.55}.app-shell .shunkan-unit-card__status{border:1px solid var(--vn-line);color:var(--vn-ink-muted);font-family:var(--vn-mono);text-transform:uppercase;border-radius:999px;align-items:center;gap:4px;padding:3px 7px;font-size:10px;font-weight:600;display:inline-flex}.app-shell .shunkan-unit-card__status.is-cleared{border-color:color-mix(in oklab,var(--vn-accent)32%,var(--vn-line));color:var(--vn-accent)}.app-shell .shunkan-unit-card__status.is-progress{border-color:color-mix(in oklab,var(--vn-due)32%,var(--vn-line));color:var(--vn-due)}.app-shell .shunkan-unit-card__practice{color:var(--vn-accent)}.app-shell .shunkan-course-top{grid-template-columns:minmax(180px,1fr) minmax(0,auto)}.app-shell .shunkan-filter-seg{scrollbar-width:none;max-width:min(52vw,640px);overflow-x:auto}.app-shell .shunkan-filter-seg::-webkit-scrollbar{display:none}@media (max-width:900px){.app-shell .shunkan-course-top{grid-template-columns:1fr;align-items:start}.app-shell .shunkan-course-top .shunkan-filter-seg{grid-area:2/1;justify-self:stretch;max-width:none}}@media (max-width:640px){.app-shell .shunkan-unit-grid{grid-template-columns:minmax(0,1fr)}.app-shell .shunkan-unit-card__target{font-size:19px}}.app-shell .shunkan-top__actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.app-shell .shunkan-filter-row{scrollbar-width:none;padding:0 20px 10px;overflow-x:auto}.app-shell .shunkan-filter-row::-webkit-scrollbar{display:none}.app-shell .sh-summary{border:1px solid var(--vn-line);background:var(--vn-bg-elev);border-radius:12px;grid-template-rows:auto auto;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:6px 24px;margin:18px 0 14px;padding:20px 22px;display:grid}.app-shell .sh-summary__body{grid-area:1/1;min-width:0}.app-shell .sh-summary__actions{flex-wrap:wrap;grid-area:1/2;justify-content:flex-end;align-items:center;gap:8px;display:flex}.app-shell .sh-summary__hint{font-family:var(--vn-mono);color:var(--vn-ink-faint);grid-area:2/1/auto/-1;font-size:11.5px}.app-shell .sh-summary__title{font-family:var(--vn-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--vn-ink-faint);margin-bottom:4px;font-size:10.5px}.app-shell .sh-summary__title--good{color:var(--vn-good)}.app-shell .sh-summary__heading{font-family:var(--vn-serif,"Source Serif 4",Georgia,serif);letter-spacing:-.01em;color:var(--vn-ink);margin-bottom:10px;font-size:22px;font-weight:600}.app-shell .sh-summary__body--complete,.app-shell .sh-summary--complete .sh-summary__body{color:var(--vn-ink)}.app-shell .sh-summary__body p,.app-shell .sh-summary p.sh-summary__body{color:var(--vn-ink-muted);margin:0 0 10px;font-size:13px}.app-shell .sh-stats{flex-wrap:wrap;align-items:center;gap:14px;margin-bottom:10px;display:flex}.app-shell .sh-stat{color:var(--vn-ink-mid);align-items:center;gap:6px;font-size:12.5px;display:inline-flex}.app-shell .sh-stat--muted,.app-shell .sh-stat--muted .sh-stat__num{color:var(--vn-ink-faint)}.app-shell .sh-stat__num{font-family:var(--vn-mono);color:var(--vn-ink);margin-right:2px;font-size:13px;font-weight:600}.app-shell .sh-stat__dot{background:var(--vn-ink-faint);border-radius:50%;width:8px;height:8px}.app-shell .sh-stat__dot--new{background:var(--vn-accent)}.app-shell .sh-stat__dot--prog{background:var(--vn-progress)}.app-shell .sh-stat__dot--clear{background:var(--vn-good)}.app-shell .sh-stat__dot--fav{background:#d99a1c}.app-shell .sh-progress{background:var(--vn-bg-hover);border-radius:4px;max-width:480px;height:5px;position:relative;overflow:hidden}.app-shell .sh-progress__bar{height:100%;position:absolute;top:0;left:0}.app-shell .sh-progress__bar--clear{background:var(--vn-good);z-index:2}.app-shell .sh-progress__bar--prog{background:var(--vn-progress);z-index:1;left:0}.app-shell .sh-summary--empty{text-align:center;padding:32px 22px;display:block}.app-shell .sh-summary__empty-label{font-family:var(--vn-mono);letter-spacing:.14em;color:var(--vn-ink-faint);margin-bottom:12px;font-size:10.5px}.app-shell .sh-summary__empty-title{font-family:var(--vn-serif,"Source Serif 4",Georgia,serif);color:var(--vn-ink);margin:0 0 8px;font-size:20px;font-weight:600}.app-shell .sh-summary__empty-body{color:var(--vn-ink-muted);max-width:520px;margin:0 auto 18px;font-size:13.5px;line-height:1.55}.app-shell .sh-summary__empty-actions{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.app-shell .sh-mode{flex-wrap:wrap;align-items:center;gap:10px;margin:6px 0 14px;display:flex}.app-shell .sh-mode__label{font-family:var(--vn-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--vn-ink-faint);font-size:10.5px}.app-shell .sh-mode__hint{color:var(--vn-ink-muted);font-size:12px}.app-shell .shunkan-unit-card__example--masked{border:1px dashed var(--vn-line);width:100%;color:var(--vn-ink-muted);cursor:pointer;text-align:left;background:0 0;align-items:center;gap:10px;display:flex}.app-shell .shunkan-unit-card__example--masked:hover{border-color:var(--vn-accent);color:var(--vn-ink)}.app-shell .shunkan-unit-card__example-reveal{font-family:var(--vn-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--vn-accent);margin-left:auto;font-size:10.5px}@media (max-width:640px){.app-shell .sh-summary{grid-template-columns:minmax(0,1fr);padding:16px 18px}.app-shell .sh-summary__body{grid-column:1}.app-shell .sh-summary__actions{grid-area:2/1;justify-content:stretch}.app-shell .sh-summary__actions .vn-btn--primary{flex:1}.app-shell .sh-summary__hint{grid-row:3}.app-shell .sh-summary__heading{font-size:18px}}.app-shell .vn-flash-stage{flex:1;justify-content:center;align-items:center;padding:24px;display:flex}.app-shell .vn-flash-wrap{flex-direction:column;gap:18px;width:100%;max-width:560px;display:flex}.app-shell .vn-flash-progress{font-family:var(--vn-mono);color:var(--vn-ink-muted);align-items:center;gap:12px;font-size:11px;display:flex}.app-shell .vn-flash-progress__bar{background:var(--vn-line);border-radius:2px;flex:1;height:2px;overflow:hidden}.app-shell .vn-flash-progress__bar>div{background:var(--vn-accent);height:100%;transition:width .2s}.app-shell .vn-flash-card{perspective:1400px;cursor:pointer;width:100%;height:360px;position:relative}.app-shell .vn-flash-face{background:var(--vn-bg-elev);border:1px solid var(--vn-line);backface-visibility:hidden;border-radius:16px;flex-direction:column;gap:14px;padding:40px 32px 32px;transition:transform .5s;display:flex;position:absolute;inset:0;box-shadow:0 12px 40px #00000014}.dark .app-shell .vn-flash-face{box-shadow:0 12px 40px #00000073}.app-shell .vn-flash-face--front{text-align:center;justify-content:center;align-items:center}.app-shell .vn-flash-face--back{justify-content:center;transform:rotateY(180deg)}.app-shell .vn-flash-card.is-flipped .vn-flash-face--front{transform:rotateY(180deg)}.app-shell .vn-flash-card.is-flipped .vn-flash-face--back{transform:rotateY(360deg)}.app-shell .vn-flash-card.is-sliding-out{animation:.3s ease-in forwards vn-flash-slide-out}.app-shell .vn-flash-card.is-sliding-in{animation:.3s ease-out forwards vn-flash-slide-in}@keyframes vn-flash-slide-out{0%{opacity:1;transform:translate(0)rotateY(0)}to{opacity:0;transform:translate(-100%)rotateY(0)}}@keyframes vn-flash-slide-in{0%{opacity:0;transform:translate(100%)rotateY(0)}to{opacity:1;transform:translate(0)rotateY(0)}}.app-shell .vn-flash-card.is-sliding-out .vn-flash-face--front,.app-shell .vn-flash-card.is-sliding-in .vn-flash-face--front,.app-shell .vn-flash-card.is-sliding-out .vn-flash-face--back,.app-shell .vn-flash-card.is-sliding-in .vn-flash-face--back{transition:none}.app-shell .vn-flash__pos{font-family:var(--vn-mono);color:var(--vn-accent);text-transform:lowercase;letter-spacing:.04em;font-size:11px;font-style:italic;position:absolute;top:18px;left:24px}.app-shell .vn-flash-mode{font-family:var(--vn-mono);color:var(--vn-ink-muted);background:var(--vn-bg-elev);border:1px solid var(--vn-line);white-space:nowrap;border-radius:999px;padding:4px 10px;font-size:11px}.app-shell .vn-flash__word{letter-spacing:-.02em;color:var(--vn-ink);font-size:36px;font-weight:600}.app-shell .vn-flash__ipa{color:var(--vn-ink-muted);font-size:14px;font-family:var(--vn-mono)}.app-shell .vn-flash__hint{text-align:center;font-family:var(--vn-mono);color:var(--vn-ink-faint);text-transform:uppercase;letter-spacing:.1em;font-size:10.5px;position:absolute;bottom:16px;left:0;right:0}.app-shell .vn-flash-sense+.vn-flash-sense{border-top:1px dashed var(--vn-line);margin-top:14px;padding-top:14px}.app-shell .vn-flash-controls{grid-template-columns:1fr 1fr;gap:10px;display:grid}.app-shell .vn-flash-grade{background:var(--vn-bg-elev);border:1px solid var(--vn-line);cursor:pointer;font:inherit;color:var(--vn-ink-mid);border-radius:10px;padding:14px 16px;font-size:14px;font-weight:600;transition:border-color .15s,color .15s,background .15s,filter .15s}.app-shell .vn-flash-grade:disabled{opacity:.5;cursor:not-allowed}.app-shell .vn-flash-grade.is-bad{background:var(--vn-bg-elev);color:#dc2626;border-color:#fecaca}.app-shell .vn-flash-grade.is-bad:hover:not(:disabled){background:#fef2f2;border-color:#fca5a5}.app-shell .vn-flash-grade.is-ok{background:var(--vn-accent);color:#fff;border-color:var(--vn-accent)}.app-shell .vn-flash-grade.is-ok:hover:not(:disabled){filter:brightness(.92)}.dark .app-shell .vn-flash-grade.is-bad{background:var(--vn-bg-elev);color:#f87171;border-color:#f871714d}.dark .app-shell .vn-flash-grade.is-bad:hover:not(:disabled){background:#f8717114;border-color:#f8717180}.app-shell .vn-flash-grade.is-easy:hover:not(:disabled){border-color:var(--vn-pos-adj);color:var(--vn-pos-adj)}.app-shell .vn-flash-nav{font-family:var(--vn-mono);color:var(--vn-ink-muted);justify-content:space-between;font-size:11px;display:flex}.app-shell .vn-flash-nav button{cursor:pointer;color:inherit;font:inherit;background:0 0;border:none;padding:4px 8px}.app-shell .vn-flash-nav button:hover{color:var(--vn-ink)}.app-shell .vn-flash-bar{border-bottom:1px solid var(--vn-line-soft);align-items:center;gap:16px;padding:14px 22px;display:flex}.app-shell .vn-flash-bar .vn-flash-progress{margin:0}.app-shell .vn-flash-empty{text-align:center;color:var(--vn-ink-muted);flex-direction:column;align-items:center;gap:14px;margin:auto;display:flex}.app-shell .vn-flash__question,.app-shell .vn-flash__answer{letter-spacing:-.02em;color:var(--vn-ink);text-align:center;word-break:break-word;max-width:100%;font-size:28px;font-weight:600;line-height:1.4}.app-shell .vn-flash__question--sentence{letter-spacing:-.01em;font-size:22px;line-height:1.6}@media (max-width:640px){.app-shell .vn-flash__question,.app-shell .vn-flash__answer{font-size:22px}.app-shell .vn-flash__question--sentence{font-size:18px}}.app-shell .vn-flash__highlight{color:var(--vn-accent);background:var(--vn-accent-soft);border-radius:4px;padding:2px 8px;font-weight:700}.app-shell .vn-flash__mask{background:var(--vn-accent);color:var(--vn-accent);-webkit-user-select:none;user-select:none;letter-spacing:2px;border-radius:4px;min-width:2em;padding:2px 8px;display:inline-block}.app-shell .vn-flash__word-info{border-top:1px dashed var(--vn-line);text-align:left;flex-direction:column;gap:6px;width:100%;margin-top:14px;padding-top:12px;display:flex}.app-shell .vn-flash__example{color:var(--vn-ink-mid);font-size:14px;font-style:italic;line-height:1.55}.app-shell .vn-flash__translation{color:var(--vn-ink-muted);font-size:13px;line-height:1.5}.app-shell .vn-flash__cloze-word{color:var(--vn-ink);font-size:15px;font-weight:600;line-height:1.4}.app-shell .vn-flash__cloze-pos{color:var(--vn-ink-muted);margin-left:6px;font-size:12px;font-style:italic;font-weight:400}.app-shell .vn-flash-face .vn-play-btn{width:32px;height:32px;margin-top:14px}.app-shell .vn-play-btn.is-playing{color:var(--vn-accent);border-color:var(--vn-accent);animation:1.2s ease-in-out infinite vn-audio-pulse}@keyframes vn-audio-pulse{0%,to{opacity:1;box-shadow:0 0 0 0 var(--vn-accent-soft)}50%{opacity:.75;box-shadow:0 0 0 4px var(--vn-accent-soft)}}.app-shell.vn-dialog-shell,.app-shell .vn-dialog-shell{background:var(--vn-bg-elev);color:var(--vn-ink);border:1px solid var(--vn-line);border-radius:12px;flex-direction:column;width:100%;max-width:640px;max-height:calc(100vh - 2rem);display:flex;overflow:hidden;box-shadow:0 24px 64px #0000002e}.app-shell .vn-dialog-shell__header{border-bottom:1px solid var(--vn-line-soft);flex-shrink:0;justify-content:space-between;align-items:center;padding:14px 18px;display:flex}.app-shell .vn-dialog-shell__title{color:var(--vn-ink);letter-spacing:-.01em;margin:0;font-size:15px;font-weight:600}.app-shell .vn-dialog-shell__actions{align-items:center;gap:4px;display:inline-flex}.app-shell .vn-dialog-shell__body{flex-direction:column;flex:1;gap:16px;padding:18px;display:flex;overflow-y:auto}.app-shell .vn-dialog-shell__footer{border-top:1px solid var(--vn-line-soft);background:var(--vn-bg);flex-shrink:0;justify-content:flex-end;align-items:center;gap:8px;padding:12px 18px;display:flex}.app-shell .vn-detail__head{flex-direction:column;gap:4px;display:flex}.app-shell .vn-detail__word-line{flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.app-shell .vn-detail__word{color:var(--vn-ink);letter-spacing:-.02em;font-size:24px;font-weight:700}.app-shell .vn-detail__ipa{font-family:var(--vn-mono);color:var(--vn-ink-muted);font-size:13px}.app-shell .vn-detail__label{font-family:var(--vn-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--vn-ink-faint);margin-bottom:4px;font-size:10px}.app-shell .vn-detail__meaning{color:var(--vn-ink);margin:0;font-size:14.5px}.app-shell .vn-detail__detail{color:var(--vn-ink-mid);margin:0;font-size:13px;line-height:1.6}.app-shell .vn-detail__examples{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.app-shell .vn-detail__example{background:var(--vn-bg);border:1px solid var(--vn-line-soft);border-radius:8px;padding:10px 12px}.app-shell .vn-detail__nav{z-index:55;color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0006;border:none;border-radius:999px;place-items:center;width:44px;height:44px;transition:background .15s,opacity .15s;display:grid;position:fixed;top:50%;transform:translateY(-50%)}.app-shell .vn-detail__nav:hover:not(:disabled){background:#0000008c}.app-shell .vn-detail__nav:disabled{opacity:.3;cursor:not-allowed}.app-shell .vn-detail__nav--prev{left:16px}.app-shell .vn-detail__nav--next{right:16px}.app-shell .vn-form-field{flex-direction:column;gap:6px;display:flex}.app-shell .vn-form-field--inline{grid-template-columns:minmax(104px,136px) minmax(0,1fr);align-items:center;column-gap:12px;display:grid}.app-shell .vn-form-field label{font-family:var(--vn-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--vn-ink-faint);font-size:10px}.app-shell .vn-form-field--inline label{margin:0;line-height:1.2}.app-shell .vn-input,.app-shell .vn-textarea{background:var(--vn-bg);border:1px solid var(--vn-line);color:var(--vn-ink);font:inherit;border-radius:8px;outline:none;padding:8px 10px;font-size:13.5px;transition:border-color .15s,box-shadow .15s}.app-shell .vn-input:focus,.app-shell .vn-textarea:focus{border-color:var(--vn-accent);box-shadow:0 0 0 3px var(--vn-accent-soft)}.app-shell .vn-textarea{resize:vertical;min-height:80px;line-height:1.55}.app-shell .vn-btn{background:var(--vn-bg-elev);border:1px solid var(--vn-line);color:var(--vn-ink-mid);cursor:pointer;font:inherit;border-radius:8px;align-items:center;gap:6px;padding:8px 14px;font-size:13px;transition:background .1s,color .1s,border-color .1s;display:inline-flex}.app-shell .vn-btn:hover:not(:disabled){background:var(--vn-bg-hover);color:var(--vn-ink)}.app-shell .vn-btn--primary{background:var(--vn-accent);color:#fff;border-color:var(--vn-accent)}.app-shell .vn-btn--primary:hover:not(:disabled){filter:brightness(1.05)}.app-shell .vn-btn:disabled{opacity:.5;cursor:not-allowed}@media (max-width:520px){.app-shell .vn-form-field--inline{grid-template-columns:1fr;align-items:stretch;row-gap:6px}}.app-shell .vn-expand__layout{flex-direction:column;gap:14px;display:flex}@media (min-width:900px){.app-shell .vn-expand__layout--with-image{flex-direction:row;align-items:flex-start;gap:20px}.app-shell .vn-expand__layout--with-image .vn-entry-image,.app-shell .vn-expand__layout--with-image .vn-carousel{flex-shrink:0;width:200px;margin-top:0}.app-shell .vn-expand__layout--with-image .vn-expand__grid{flex:1;min-width:0}}.app-shell .vn-carousel{margin-top:12px;position:relative}.app-shell .vn-carousel .vn-entry-image{margin-top:0}.app-shell .vn-carousel__controls{opacity:0;pointer-events:none;justify-content:space-between;align-items:center;padding:0 6px;transition:opacity .15s;display:flex;position:absolute;inset:0}.app-shell .vn-carousel:hover .vn-carousel__controls{opacity:1;pointer-events:auto}.app-shell .vn-carousel__btn{cursor:pointer;color:#ffffffd9;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#00000061;border:none;border-radius:50%;flex-shrink:0;place-items:center;width:20px;height:20px;transition:background .12s;display:grid}.app-shell .vn-carousel__btn:hover{color:#fff;background:#0009}.app-shell .vn-carousel__indicator{font-family:var(--vn-mono);color:#ffffffbf;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);pointer-events:none;background:#00000059;border-radius:999px;padding:1px 5px;font-size:9px;line-height:1.5;position:absolute;bottom:6px;right:7px}.app-shell .vn-crumbs__vocab-mid,.app-shell .vn-crumbs__vocab-short{display:none}@media (max-width:640px){.app-shell .vn-crumbs__vocab-full{display:none}.app-shell .vn-crumbs__vocab-mid{display:inline}}@media (max-width:480px){.app-shell .vn-crumbs__vocab-mid{display:none}.app-shell .vn-crumbs__vocab-short{display:inline}}.app-shell .vn-entry-image{border:1px solid var(--vn-line);background:var(--vn-bg);aspect-ratio:16/9;border-radius:8px;margin-top:12px;position:relative;overflow:hidden}.app-shell .vn-entry-image img{object-fit:cover;width:100%;height:100%;display:block}.app-shell .vn-entry-image--card{aspect-ratio:4/3;max-width:100%;margin-top:10px}.app-shell .vn-entry-image__status{background:var(--vn-bg-hover);color:var(--vn-ink-muted);font-family:var(--vn-mono);text-transform:uppercase;letter-spacing:.06em;place-items:center;font-size:11px;display:grid;position:absolute;inset:0}.app-shell .vn-stash-list{flex-direction:column;display:flex}.app-shell .vn-stash-list__head{grid-template-columns:18px 24px minmax(200px,1.4fr) minmax(120px,1fr) auto}.app-shell .vn-stash-row{border-bottom:1px solid var(--vn-line-soft);cursor:default;grid-template-columns:18px 24px minmax(200px,1.4fr) minmax(120px,1fr) auto;align-items:start;gap:8px;padding:12px;display:grid}.app-shell .vn-stash-row:hover{background:var(--vn-bg-hover)}.app-shell .vn-stash-row__en{color:var(--vn-ink);font-size:13.5px;line-height:1.55}.app-shell .vn-stash-row__en strong,.app-shell .vn-stash-row__en b{background:var(--vn-accent-soft);color:var(--vn-accent);border-radius:2px;padding:1px 3px;font-weight:500}.app-shell .vn-stash-row__ja{color:var(--vn-ink-mid);font-size:13px;line-height:1.55}@media (max-width:768px){.app-shell .vn-stash-list__head{display:none}.app-shell .vn-stash-row{grid-template-rows:auto auto auto;grid-template-columns:18px 24px minmax(0,1fr) auto;row-gap:6px}.app-shell .vn-stash-row .vn-row-a__drag-cell{grid-area:1/1/4/2;align-self:center}.app-shell .vn-stash-row .vn-play-btn{grid-area:1/2/4/3;align-self:center}.app-shell .vn-stash-row__en,.app-shell .vn-stash-row__ja{overflow-wrap:anywhere;grid-column:3/5;min-width:0}.app-shell .vn-stash-row .vn-row-a__meta{grid-area:3/3/4/5;justify-self:end}}.app-shell .vn-composer{padding:12px 0 max(.5rem,env(safe-area-inset-bottom));background:linear-gradient(to bottom,transparent 0%,var(--vn-bg)30%,var(--vn-bg)100%);z-index:10;margin-top:auto;position:sticky;bottom:0}.app-shell .vn-composer__inner{max-width:768px;margin:0 auto;position:relative}.app-shell .vn-composer-box{background:var(--vn-bg-elev);border:1px solid var(--vn-line);border-radius:12px;align-items:center;gap:8px;padding:6px 10px;transition:border-color .15s,box-shadow .15s;display:flex;box-shadow:0 8px 24px #0000001f,0 2px 6px #0000000f}.app-shell .vn-composer-box:has(textarea[style*="height: 30"]){align-items:center}.dark .app-shell .vn-composer-box{box-shadow:0 8px 24px #00000073,0 2px 6px #00000040}.app-shell .vn-composer-box:focus-within{border-color:var(--vn-accent);box-shadow:0 6px 24px #0000001f}.app-shell .vn-composer-box.is-disabled{opacity:.7;pointer-events:none}.app-shell .vn-composer-box__action{background:var(--vn-bg-hover);border:1px solid var(--vn-line);width:30px;height:30px;color:var(--vn-ink-mid);cursor:pointer;border-radius:8px;flex-shrink:0;place-items:center;transition:background .15s,color .15s;display:grid}.app-shell .vn-composer-box__action:hover:not(:disabled){background:var(--vn-accent-bg);color:var(--vn-accent);border-color:var(--vn-accent)}.app-shell .vn-composer-box__action:disabled{opacity:.5;cursor:not-allowed}.app-shell .vn-composer-box__send{background:var(--vn-accent);color:#fff;border-color:var(--vn-accent)}.app-shell .vn-composer-box__send:hover:not(:disabled){filter:brightness(1.05);background:var(--vn-accent);color:#fff}.app-shell .vn-composer-box__send:disabled{background:var(--vn-bg-hover);color:var(--vn-ink-faint);border-color:var(--vn-line);filter:none}.app-shell .vn-composer-box textarea{box-sizing:border-box;color:var(--vn-ink);font:inherit;resize:none;scrollbar-width:thin;background:0 0;border:none;outline:none;flex:1;min-width:0;min-height:30px;max-height:200px;padding:5px 4px;font-size:13.5px;line-height:20px;overflow-y:hidden}.app-shell .vn-composer-box textarea::placeholder{color:var(--vn-ink-faint)}.app-shell .vn-suggest{background:var(--vn-bg-elev);border:1px solid var(--vn-line);z-index:20;border-radius:8px;max-height:420px;margin:0 0 6px;padding:4px;list-style:none;position:absolute;bottom:100%;left:0;right:0;overflow-y:auto;box-shadow:0 8px 24px #00000029}.app-shell .vn-suggest__item{cursor:pointer;color:var(--vn-ink);border-radius:6px;align-items:baseline;gap:8px;padding:6px 10px;font-size:13px;display:flex}.app-shell .vn-suggest__item.is-active,.app-shell .vn-suggest__item:hover{background:var(--vn-accent-bg);color:var(--vn-ink)}.app-shell .vn-suggest__match strong{color:var(--vn-accent);font-weight:600}.app-shell .vn-suggest__meaning{color:var(--vn-ink-muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.app-shell .vn-suggest__loading{color:var(--vn-ink-muted);align-items:center;gap:8px;padding:8px 10px;font-size:13px;display:flex}.app-shell .vn-extractor-menu{background:var(--vn-bg-elev);border:1px solid var(--vn-line);z-index:21;border-radius:8px;width:240px;margin-bottom:6px;padding:4px;position:absolute;bottom:100%;left:0;box-shadow:0 8px 24px #00000029}.app-shell .vn-extractor-menu button{cursor:pointer;width:100%;font:inherit;color:var(--vn-ink);text-align:left;background:0 0;border:none;border-radius:6px;align-items:center;gap:10px;padding:8px 10px;font-size:13px;display:flex}.app-shell .vn-extractor-menu button:hover{background:var(--vn-bg-hover)}.app-shell .vn-pagination{border-top:1px dashed var(--vn-line);font-family:var(--vn-mono);color:var(--vn-ink-muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:8px;padding:14px 4px;font-size:11px;display:flex}.app-shell .vn-pagination__summary{letter-spacing:.04em}.app-shell .vn-pagination__controls{align-items:center;gap:6px;display:inline-flex}.app-shell .vn-pagination__btn{background:var(--vn-bg-elev);border:1px solid var(--vn-line);color:var(--vn-ink-mid);cursor:pointer;border-radius:6px;place-items:center;padding:6px;transition:background .1s,color .1s,border-color .1s;display:grid}.app-shell .vn-pagination__btn:hover:not(:disabled){background:var(--vn-bg-hover);color:var(--vn-ink);border-color:var(--vn-ink-faint)}.app-shell .vn-pagination__btn:disabled{opacity:.4;cursor:not-allowed}.app-shell .vn-pagination__page{color:var(--vn-ink);font-variant-numeric:tabular-nums;padding:0 6px}.app-shell .vn-pagination__sep{color:var(--vn-ink-faint);margin:0 2px}.app-shell .vn-sidebar,.app-shell .vn-main-scroll{scrollbar-gutter:stable}.app-shell aside[class*="hidden md:flex"][class*=flex-col][class*=border-r]{color:var(--vn-ink);background:var(--vn-bg-side)!important;border-right-color:var(--vn-line)!important}.app-shell aside[class*="hidden md:flex"][class*=flex-col][class*=border-r] h2{font-family:var(--vn-serif);letter-spacing:-.01em!important;color:var(--vn-ink)!important;font-size:18px!important;font-weight:600!important}.app-shell aside[class*="hidden md:flex"][class*=flex-col][class*=border-r] p{color:var(--vn-ink-muted)!important}.app-shell .vn-header__brand{cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;margin-right:2px;padding:0;animation:.15s .28s both vn-header-brand-appear;display:inline-flex;position:relative}@keyframes vn-header-brand-appear{0%{opacity:0}to{opacity:1}}.app-shell .vn-header__brand-mark{background:var(--vn-accent);color:#fff;width:32px;height:32px;font-family:var(--vn-serif);border-radius:8px;place-items:center;font-size:18px;font-style:italic;font-weight:700;transition:transform .15s,box-shadow .15s,filter .15s;display:grid;position:absolute;top:2px;left:2px;overflow:hidden}.app-shell .vn-header__brand:hover .vn-header__brand-mark,.app-shell .vn-header__brand:focus-visible .vn-header__brand-mark{filter:brightness(1.08);box-shadow:0 0 0 3px var(--vn-accent-soft),0 6px 16px #0000002e;transform:scale(1.06)}.app-shell .vn-usage{border-top:1px solid var(--vn-line-soft);padding:8px 4px 0}.app-shell .vn-usage--bottom{margin-top:auto}.app-shell .vn-usage__label{font-family:var(--vn-mono);color:var(--vn-ink-muted);margin-bottom:6px;font-size:10.5px}.app-shell .vn-usage__bar{background:var(--vn-line);border-radius:2px;height:3px;overflow:hidden}.app-shell .vn-usage__bar>div{background:var(--vn-accent);height:100%;transition:width .2s,background .2s}.app-shell .vn-usage[data-overdraft] .vn-usage__label{color:var(--vn-pos-phrase)}.app-shell .vn-usage[data-overdraft] .vn-usage__bar>div{background:var(--vn-pos-phrase);width:100%!important}.app-shell .vn-usage__cta{background:var(--vn-accent-soft);color:var(--vn-accent);text-align:center;border-radius:6px;margin-top:6px;padding:4px 8px;font-size:10.5px;font-weight:600;text-decoration:none;transition:background .15s,filter .15s;display:block}.app-shell .vn-usage__cta:hover{filter:brightness(1.05);background:var(--vn-accent-deep)}.app-shell .drill-root{background:var(--vn-bg);width:100%;height:100%;color:var(--vn-ink);font-family:var(--vn-sans);flex-direction:column;flex:auto;min-height:0;display:flex;position:relative;overflow:hidden}.app-shell .drill-root:before{content:"";color:var(--vn-ink-faint);opacity:.06;pointer-events:none;background-image:radial-gradient(currentColor .6px,#0000 .6px);background-size:18px 18px;position:absolute;inset:0}.app-shell .drill-bar{border-bottom:1px solid var(--vn-line-soft);background:var(--vn-bg);z-index:1;grid-template-columns:auto 1fr auto;align-items:center;gap:18px;padding:14px 22px;display:grid;position:relative}.app-shell .drill-bar .left,.app-shell .drill-bar .right{align-items:center;gap:10px;display:flex}.app-shell .drill-bar .right{justify-content:flex-end}.app-shell .drill-back{cursor:pointer;width:26px;height:26px;color:var(--vn-ink-mid);background:0 0;border:1px solid #0000;border-radius:6px;place-items:center;display:grid}.app-shell .drill-back:hover{background:var(--vn-bg-hover);color:var(--vn-ink);border-color:var(--vn-line)}.app-shell .drill-crumbs{font-family:var(--vn-mono);color:var(--vn-ink-muted);letter-spacing:-.01em;align-items:center;gap:6px;font-size:11.5px;display:flex}.app-shell .drill-crumbs .sep{color:var(--vn-ink-faint)}.app-shell .drill-crumbs .active{color:var(--vn-ink)}.app-shell .drill-mode-pill{font-family:var(--vn-mono);color:var(--vn-ink-mid);border:1px solid var(--vn-line);white-space:nowrap;background:var(--vn-bg-elev);border-radius:999px;align-items:center;gap:7px;padding:4px 10px;font-size:11px;display:inline-flex}.app-shell .drill-mode-pill .num{letter-spacing:.08em;color:var(--vn-accent);font-size:9.5px}.app-shell .drill-mode-pill .dot{background:var(--vn-accent);border-radius:50%;width:4px;height:4px;display:inline-block}.app-shell .drill-progress{font-family:var(--vn-mono);color:var(--vn-ink-muted);white-space:nowrap;flex-wrap:nowrap;justify-content:center;align-items:center;gap:10px;min-width:0;font-size:11px;display:flex}.app-shell .drill-progress .frac{color:var(--vn-ink);white-space:nowrap}.app-shell .drill-progress .bar{background:var(--vn-line);border-radius:2px;flex-shrink:0;width:140px;height:3px;overflow:hidden}.app-shell .drill-progress .bar>div{background:var(--vn-accent);height:100%;transition:width .2s}.app-shell .drill-progress .pct{color:var(--vn-ink-faint);text-align:right;width:32px}.app-shell .drill-pause{border:1px solid var(--vn-line);color:var(--vn-ink-mid);cursor:pointer;font:inherit;font-size:11.5px;font-family:var(--vn-mono);background:0 0;border-radius:5px;align-items:center;gap:5px;padding:5px 9px;display:inline-flex}.app-shell .drill-pause:hover{background:var(--vn-bg-hover);color:var(--vn-ink)}.app-shell .drill-stage{z-index:1;flex:1;grid-template-rows:1fr auto;min-height:0;padding:32px 24px 24px;display:grid;position:relative}.app-shell .drill-wrap{flex-direction:column;align-self:center;gap:22px;width:100%;max-width:620px;margin:0 auto;display:flex}.app-shell .drill-card{cursor:pointer;perspective:1600px;width:100%;min-height:360px;position:relative}.app-shell .drill-card .drill-face{background:var(--vn-bg-elev);border:1px solid var(--vn-line);box-shadow:0 1px 0 var(--vn-line-soft)inset,0 24px 60px -32px #00000073;backface-visibility:hidden;border-radius:14px;flex-direction:column;padding:28px 28px 22px;transition:transform .55s cubic-bezier(.4,0,.2,1);display:flex;position:absolute;inset:0;overflow:hidden}.dark .app-shell .drill-card .drill-face{box-shadow:0 1px 0 var(--vn-line-soft)inset,0 24px 60px -32px #0009}.app-shell .drill-card .drill-face--back,.app-shell .drill-card.is-flipped .drill-face--front{transform:rotateY(180deg)}.app-shell .drill-card.is-flipped .drill-face--back{transform:rotateY(360deg)}.app-shell .drill-card.is-sliding-out{animation:.28s ease-in forwards drill-slide-out}.app-shell .drill-card.is-sliding-in{animation:.28s ease-out forwards drill-slide-in}.app-shell .drill-card.is-sliding-out-right{animation-name:drill-slide-out-right}.app-shell .drill-card.is-sliding-out-left{animation-name:drill-slide-out-left}.app-shell .drill-card.is-sliding-out .drill-face,.app-shell .drill-card.is-sliding-in .drill-face{transition:none}@keyframes drill-slide-out{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(-40px)}}@keyframes drill-slide-out-left{0%{opacity:1;transform:translate(0)rotate(0)}to{opacity:0;transform:translate(-120px)rotate(-8deg)}}@keyframes drill-slide-out-right{0%{opacity:1;transform:translate(0)rotate(0)}to{opacity:0;transform:translate(120px)rotate(8deg)}}@keyframes drill-slide-in{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:translate(0)}}.app-shell .drill-card .swipe-cue{z-index:3;pointer-events:none;font-family:var(--vn-mono);letter-spacing:.08em;text-transform:uppercase;opacity:0;background:color-mix(in oklab,var(--vn-bg-elev)78%,transparent);border:2px solid;border-radius:8px;padding:6px 12px;font-size:13px;font-weight:700;position:absolute;top:22px;transform:rotate(-8deg)scale(.96);box-shadow:0 10px 24px #0000001f}.app-shell .drill-card .swipe-cue--again{color:var(--vn-bad);opacity:var(--swipe-left-opacity,0);left:22px}.app-shell .drill-card .swipe-cue--good{color:var(--vn-accent);opacity:var(--swipe-right-opacity,0);right:22px;transform:rotate(8deg)scale(.96)}.app-shell .drill-card .corner{font-family:var(--vn-mono);color:var(--vn-ink-faint);letter-spacing:.06em;text-transform:lowercase;justify-content:space-between;align-items:center;margin-bottom:6px;font-size:10.5px;display:flex}.app-shell .drill-card .corner .face-tag{align-items:center;gap:6px;display:inline-flex}.app-shell .drill-card .corner .face-tag .swatch{background:var(--vn-ink-faint);border-radius:50%;width:5px;height:5px}.app-shell .drill-card .corner .face-tag.back .swatch{background:var(--vn-accent)}.app-shell .drill-card .corner .pos{font-family:var(--vn-mono);letter-spacing:0;background:var(--vn-bg-hover);border-radius:3px;padding:2px 7px;font-size:10.5px;font-style:italic}.app-shell .pos[data-pos=noun]{color:var(--vn-pos-noun)}.app-shell .pos[data-pos=verb]{color:var(--vn-pos-verb)}.app-shell .pos[data-pos=adjective],.app-shell .pos[data-pos=adj]{color:var(--vn-pos-adj)}.app-shell .pos[data-pos=adverb],.app-shell .pos[data-pos=adv]{color:var(--vn-pos-adv)}.app-shell .pos[data-pos=phrase]{color:var(--vn-pos-phrase)}.app-shell .pos[data-pos=example],.app-shell .pos[data-pos=definition],.app-shell .pos[data-pos=cloze],.app-shell .pos[data-pos=composition]{color:var(--vn-ink-mid)}.app-shell .drill-card .body{flex-direction:column;flex:1;justify-content:center;gap:14px;padding:14px 4px;display:flex}.app-shell .drill-card .body.front{text-align:center;align-items:center}.app-shell .drill-card .q-label{font-family:var(--vn-mono);color:var(--vn-ink-muted);text-transform:lowercase;letter-spacing:.06em;align-items:center;gap:6px;font-size:10.5px;display:inline-flex}.app-shell .drill-card .q-label:before{content:"";opacity:.5;background:currentColor;width:14px;height:1px;display:inline-block}.app-shell .drill-card .headword{font-family:var(--vn-sans);letter-spacing:-.025em;color:var(--vn-ink);text-wrap:balance;font-size:42px;font-weight:600;line-height:1.1}.app-shell .drill-card .headword.ja{font-family:var(--vn-sans);letter-spacing:.005em;font-size:30px;font-weight:500;line-height:1.45}.app-shell .drill-card .headword.sentence{font-family:var(--vn-sans);letter-spacing:-.005em;text-wrap:pretty;text-align:left;font-size:26px;font-weight:500;line-height:1.45}.app-shell .drill-card .body.front .headword.sentence{text-align:center}.app-shell .drill-card .headword.definition{font-family:var(--vn-sans);color:var(--vn-ink);text-wrap:pretty;font-size:24px;font-style:italic;font-weight:500;line-height:1.45}.app-shell .drill-card .headword.sentence b,.app-shell .drill-card .headword.sentence strong{color:var(--vn-accent);background:var(--vn-accent-soft);border-radius:4px;padding:1px 6px;font-style:normal;font-weight:700}.app-shell .drill-card .ipa{font-family:var(--vn-mono);color:var(--vn-ink-muted);letter-spacing:-.01em;font-size:14px}.app-shell .play-pill{border:1px solid var(--vn-line);color:var(--vn-ink-mid);font-family:var(--vn-mono);cursor:pointer;background:0 0;border-radius:999px;align-self:flex-start;align-items:center;gap:8px;padding:6px 12px 6px 8px;font-size:11px;display:inline-flex}.app-shell .play-pill:hover{background:var(--vn-bg-hover);color:var(--vn-ink);border-color:var(--vn-ink-muted)}.app-shell .play-pill .ico{background:var(--vn-accent-soft);width:22px;height:22px;color:var(--vn-accent);border-radius:50%;place-items:center;display:grid}.app-shell .play-pill.playing .ico{background:var(--vn-accent);color:var(--vn-bg)}.app-shell .play-pill.playing .wave{display:inline-flex}.app-shell .play-pill .wave{align-items:flex-end;gap:2px;height:10px;margin-left:2px;display:none}.app-shell .play-pill .wave i{background:var(--vn-accent);border-radius:1px;width:2px;animation:.9s ease-in-out infinite drill-wave;display:inline-block}.app-shell .play-pill .wave i:first-child{height:40%;animation-delay:-.6s}.app-shell .play-pill .wave i:nth-child(2){height:80%;animation-delay:-.3s}.app-shell .play-pill .wave i:nth-child(3){height:60%;animation-delay:-.15s}.app-shell .play-pill .wave i:nth-child(4){height:90%}@keyframes drill-wave{0%,to{transform:scaleY(.4)}50%{transform:scaleY(1)}}.app-shell .drill-card .extras{border-top:1px dashed var(--vn-line);flex-direction:column;gap:6px;margin-top:14px;padding-top:12px;display:flex}.app-shell .drill-card .extras .extras-label{font-family:var(--vn-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--vn-ink-faint);margin-bottom:2px;font-size:9.5px}.app-shell .drill-card .extras .ex-en{font-family:var(--vn-sans);color:var(--vn-ink-mid);font-size:15px;font-style:normal;line-height:1.55}.app-shell .drill-card .extras .ex-en b{background:var(--vn-accent-soft);color:var(--vn-accent);border-radius:3px;padding:1px 4px;font-style:normal;font-weight:600}.app-shell .drill-card .extras .ex-ja{color:var(--vn-ink-muted);font-size:13px;line-height:1.55}.app-shell .drill-card .extras .row{align-items:flex-start;gap:10px;display:flex}.app-shell .drill-card .extras .play-mini{background:var(--vn-bg);border:1px solid var(--vn-line);width:22px;height:22px;color:var(--vn-ink-mid);cursor:pointer;border-radius:50%;flex-shrink:0;place-items:center;margin-top:2px;display:grid}.app-shell .drill-card .cloze-blank{background:var(--vn-ink-mid);color:var(--vn-ink-mid);-webkit-user-select:none;user-select:none;vertical-align:baseline;border-radius:4px;margin:0 2px;padding:2px 10px;display:inline-block}.app-shell .drill-card .cloze-fill{background:var(--vn-accent-soft);color:var(--vn-accent);box-shadow:inset 0 0 0 1px var(--vn-accent-deep);border-radius:4px;padding:2px 10px;font-weight:700}.app-shell .drill-card .tap-hint{text-align:center;font-family:var(--vn-mono);color:var(--vn-ink-faint);letter-spacing:.04em;pointer-events:none;justify-content:center;align-items:center;gap:6px;font-size:10.5px;display:inline-flex;position:absolute;bottom:14px;left:0;right:0}.app-shell .drill-card .tap-hint kbd{border:1px solid var(--vn-line);font-family:var(--vn-mono);color:var(--vn-ink-muted);background:var(--vn-bg);border-radius:3px;padding:1px 5px;font-size:10px}.app-shell .judge{grid-template-columns:1fr 1fr;gap:12px;display:grid}.app-shell .judge-btn{background:var(--vn-bg-elev);border:1px solid var(--vn-line);font-family:var(--vn-sans);letter-spacing:-.005em;cursor:pointer;color:var(--vn-ink);border-radius:12px;justify-content:space-between;align-items:center;gap:12px;padding:16px 18px;font-size:15px;font-weight:600;transition:transform 80ms,background .15s,border-color .15s;display:flex;position:relative}.app-shell .judge-btn:active{transform:translateY(1px)}.app-shell .judge-btn .key{font-family:var(--vn-mono);border:1px solid var(--vn-line);color:var(--vn-ink-muted);background:var(--vn-bg);border-radius:4px;padding:2px 5px;font-size:10px}.app-shell .judge-btn .ival{font-family:var(--vn-mono);color:var(--vn-ink-faint);letter-spacing:.04em;font-size:10px}.app-shell .judge-btn .label-row{flex-direction:column;align-items:flex-start;gap:2px;display:flex}.app-shell .judge-btn.again{color:var(--vn-bad);border-color:color-mix(in oklab,var(--vn-bad)35%,var(--vn-line))}.app-shell .judge-btn.again:hover:not(:disabled){background:var(--vn-bad-soft)}.app-shell .judge-btn.again .key{color:var(--vn-bad);border-color:color-mix(in oklab,var(--vn-bad)30%,var(--vn-line))}.app-shell .judge-btn.good{color:var(--vn-bg);background:var(--vn-accent);border-color:var(--vn-accent)}.app-shell .judge-btn.good .ival{color:#00000080}.app-shell .judge-btn.good .key{color:var(--vn-bg);background:#0000002e;border-color:#00000026}.app-shell .judge-btn.good:hover:not(:disabled){filter:brightness(1.05)}.app-shell .judge-btn:disabled{opacity:.55;cursor:not-allowed;filter:grayscale(.4)}.app-shell .foot-hints{font-family:var(--vn-mono);color:var(--vn-ink-faint);justify-content:space-between;align-items:center;padding:0 4px;font-size:10.5px;display:flex}.app-shell .foot-hints .hl{color:var(--vn-ink-muted)}.app-shell .foot-hints .dot{vertical-align:middle;background:currentColor;border-radius:50%;width:3px;height:3px;margin:0 6px;display:inline-block}.app-shell .drill-root.shunkan .headword.sentence{font-family:var(--vn-sans);font-weight:500}.app-shell .drill-root.shunkan .extras .ex-en{font-family:var(--vn-mono);color:var(--vn-ink-mid);font-size:13.5px;font-style:normal}.app-shell .drill-card .reveal{animation:.36s ease-out both drill-reveal}@keyframes drill-reveal{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media (max-width:640px){.app-shell .drill-bar{gap:10px;padding:12px 14px}.app-shell .drill-mode-pill{display:none}.app-shell .drill-progress .bar{width:80px}.app-shell .drill-stage{padding:20px 16px 16px}.app-shell .drill-wrap{gap:18px;max-width:none}.app-shell .drill-card{min-height:320px;padding:24px 20px 18px}.app-shell .drill-card[data-swipe-ready=true]{touch-action:pan-y}.app-shell .drill-card.is-swipe-active .drill-face{box-shadow:0 1px 0 var(--vn-line-soft)inset,0 28px 70px -34px #0000008c}.app-shell .drill-card .headword{font-size:34px}.app-shell .drill-card .headword.ja{font-size:24px}.app-shell .drill-card .headword.sentence{font-size:22px}.app-shell .drill-card .headword.definition{font-size:19px}.app-shell .foot-hints,.app-shell .drill-pause .label{display:none}}html.dark .app-shell{--vn-bg:var(--background);--vn-bg-side:#1e1f21;--vn-bg-elev:#1e1f21;--vn-bg-hover:#2f3236;--vn-bg-card:#1e1f21;--vn-line:#2f3236;--vn-line-soft:#1c1c20;--vn-ink:#ecf0ee;--vn-ink-mid:#a6ada9;--vn-ink-muted:#757a76;--vn-ink-faint:#4a4f4c;--vn-accent:#7dd3c8;--vn-accent-soft:#7dd3c824;--vn-accent-bg:#1c2c2a}.app-shell .se-shell{grid-template-columns:minmax(0,1fr);gap:18px;display:grid}@media (min-width:1024px){.app-shell .se-shell{grid-template-columns:220px minmax(0,1fr);gap:20px}}.app-shell .se-side{background:var(--vn-bg-side);border:1px solid var(--vn-line);border-radius:10px;flex-direction:column;align-self:start;gap:2px;padding:16px 12px;display:flex;position:sticky;top:24px}.app-shell .se-side__label{font-family:var(--vn-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--vn-ink-faint);padding:6px 10px;font-size:10px;font-weight:600}.app-shell .se-side__item{height:36px;color:var(--vn-ink-mid);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;grid-template-columns:18px minmax(0,1fr);align-items:center;gap:10px;width:100%;padding:0 10px;font-size:13.5px;font-weight:500;display:grid}.app-shell .se-side__item:hover{background:var(--vn-bg-hover);color:var(--vn-ink)}.app-shell .se-side__item.is-active{background:var(--vn-accent-bg);color:var(--vn-ink);font-weight:600}.app-shell .se-side__item-glyph{color:var(--vn-ink-faint);place-items:center;display:grid}.app-shell .se-side__item.is-active .se-side__item-glyph{color:var(--vn-accent)}.app-shell .se-side__item--danger,.app-shell .se-side__item--danger:hover{color:var(--vn-bad)}.app-shell .se-side__item--danger.is-active{background:color-mix(in oklab,var(--vn-bg-elev)80%,var(--vn-bad)20%);color:var(--vn-bad)}.app-shell .se-side__item--danger.is-active .se-side__item-glyph{color:var(--vn-bad)}.app-shell .se-main{min-width:0}.app-shell .se-card{border:1px solid var(--vn-line);background:var(--vn-bg-elev);border-radius:9px;margin-bottom:14px;overflow:hidden}.app-shell .se-card.is-danger{border-color:color-mix(in oklab,var(--vn-bad)32%,transparent);background:color-mix(in oklab,var(--vn-bg-elev)86%,var(--vn-bad)14%)}html.dark .app-shell .se-card.is-danger{background:color-mix(in oklab,var(--vn-bg-elev)70%,var(--vn-bad)30%)}.app-shell .se-card__head{justify-content:space-between;align-items:baseline;gap:12px;padding:14px 18px 8px;display:flex}.app-shell .se-card__title{font-family:var(--vn-serif);letter-spacing:-.005em;color:var(--vn-ink);margin:0;font-size:17px;font-weight:600}.app-shell .se-card.is-danger .se-card__title{color:var(--vn-bad)}.app-shell .se-card__sub{color:var(--vn-ink-muted);margin:2px 0 0;font-size:12px}.app-shell .se-row{border-top:1px solid var(--vn-line-soft);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:18px;padding:14px 18px;display:grid}.app-shell .se-row--stacked{grid-template-columns:minmax(0,1fr)}.app-shell .se-row__label{color:var(--vn-ink);font-size:14px;font-weight:500}.app-shell .se-row__hint{color:var(--vn-ink-muted);margin-top:3px;font-size:12px;line-height:1.5}.app-shell .se-row__value{font-family:var(--vn-mono);color:var(--vn-ink-mid);font-size:12.5px}.app-shell .se-row__control{align-items:center;gap:8px;display:inline-flex}.app-shell .se-toggle{background:var(--vn-line);border:1px solid var(--vn-line);cursor:pointer;border-radius:999px;flex-shrink:0;width:42px;height:24px;padding:0;transition:background .15s;position:relative}.app-shell .se-toggle:after{content:"";background:#fff;border-radius:50%;width:18px;height:18px;transition:left .15s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #00000029}.app-shell .se-toggle.is-on{background:var(--vn-accent);border-color:var(--vn-accent)}.app-shell .se-toggle.is-on:after{left:calc(100% - 20px)}html.dark .app-shell .se-toggle.is-on:after{background:#0a1413}.app-shell .se-toggle:disabled{opacity:.5;cursor:not-allowed}.app-shell .se-seg{background:var(--vn-bg);border:1px solid var(--vn-line);border-radius:6px;gap:1px;padding:2px;display:inline-flex}.app-shell .se-seg button{color:var(--vn-ink-muted);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:4px;align-items:center;gap:6px;height:26px;padding:5px 12px;font-size:12.5px;font-weight:500;display:inline-flex}.app-shell .se-seg button:hover{color:var(--vn-ink)}.app-shell .se-seg button.is-on{background:var(--vn-bg-elev);color:var(--vn-ink);font-weight:600;box-shadow:0 1px 2px #0000000a}.app-shell .se-stepper{border:1px solid var(--vn-line);background:var(--vn-bg-elev);border-radius:6px;align-items:center;display:inline-flex;overflow:hidden}.app-shell .se-stepper button{width:30px;height:32px;color:var(--vn-ink-mid);cursor:pointer;background:0 0;border:0;place-items:center;font-size:15px;display:grid}.app-shell .se-stepper button:hover{background:var(--vn-bg-hover)}.app-shell .se-stepper button:disabled{opacity:.4;cursor:not-allowed}.app-shell .se-stepper__val{font-family:var(--vn-mono);text-align:center;min-width:36px;color:var(--vn-ink);border-left:1px solid var(--vn-line-soft);border-right:1px solid var(--vn-line-soft);place-items:center;height:32px;padding:0 12px;font-size:13px;display:grid}.app-shell .se-select{border:1px solid var(--vn-line);background:var(--vn-bg-elev);color:var(--vn-ink);text-align:left;cursor:pointer;border-radius:6px;justify-content:space-between;align-items:center;gap:8px;min-width:160px;padding:7px 11px;font-size:13px;display:inline-flex}.app-shell .se-select:hover{background:var(--vn-bg-hover)}.app-shell .se-select:after{content:"▾";font-family:var(--vn-mono);color:var(--vn-ink-faint);font-size:10px}.app-shell .se-pill{height:22px;font-family:var(--vn-mono);letter-spacing:.04em;border:1px solid var(--vn-line);background:var(--vn-bg);color:var(--vn-ink-mid);border-radius:5px;align-items:center;padding:0 10px;font-size:11px;font-weight:600;display:inline-flex}.app-shell .se-pill--accent{background:var(--vn-accent-bg);color:var(--vn-accent);border-color:#0000}.app-shell .se-pill--due{background:color-mix(in oklab,var(--vn-bg-elev)80%,var(--vn-due)20%);color:var(--vn-due);border-color:#0000}.app-shell .se-mob-nav{scrollbar-width:none;gap:6px;padding-bottom:4px;display:flex;overflow-x:auto}@media (min-width:1024px){.app-shell .se-mob-nav{display:none}}.app-shell .se-mob-nav::-webkit-scrollbar{display:none}.app-shell .se-mob-nav button{border:1px solid var(--vn-line);background:var(--vn-bg-elev);color:var(--vn-ink-muted);cursor:pointer;white-space:nowrap;border-radius:999px;flex-shrink:0;padding:6px 12px;font-size:12.5px;font-weight:600}.app-shell .se-mob-nav button.is-on{background:var(--vn-ink);color:var(--vn-bg);border-color:var(--vn-ink)}.app-shell .se-mob-nav button.is-on.is-danger{background:var(--vn-bad);border-color:var(--vn-bad);color:#fff}.app-shell .se-mob-nav button.is-danger{color:var(--vn-bad)}
