:root{--bg:#fff;--surface:#f7f6fb;--surface-2:#efedf6;--border:#e6e3ef;--border-strong:#cec9de;--text:#17151f;--text-muted:#6a6580;--text-subtle:#9c98ad;--primary:#7c3aed;--primary-hover:#6d28d9;--primary-soft:#f3efff;--primary-contrast:#fff;--danger:#d92d20;--danger-soft:#fef3f2;--known:#15803d;--status-new:#2563eb;--status-done:#16a34a;--status-partial:#d97706;--status-overdue:#dc2626;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--radius-full:999px;--shadow-sm:0 1px 2px #1c14360f, 0 1px 3px #1c14361a;--shadow-md:0 4px 12px #1c143614, 0 2px 4px #1c14360f;--font-sans:"Noto Sans KR", system-ui, -apple-system, "Segoe UI", "Malgun Gothic", sans-serif;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.5rem;--focus-ring:0 0 0 3px #7c3aed59;--paper-margin-y:15mm;--paper-margin-x:14mm;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:var(--font-sans);color:var(--text);background:var(--bg)}:root[data-theme=dark]{--bg:#121019;--surface:#1a1726;--surface-2:#262234;--border:#2f2a3d;--border-strong:#423a54;--text:#eae7f2;--text-muted:#a09aae;--text-subtle:#736d80;--primary:#a78bfa;--primary-hover:#c4b5fd;--primary-soft:#a78bfa29;--primary-contrast:#1a1726;--danger:#f87171;--danger-soft:#f8717124;--known:var(--status-done);--status-new:#3b82f6;--status-done:#22c55e;--status-partial:#f59e0b;--status-overdue:#ef4444;--shadow-sm:0 1px 2px #0000004d, 0 1px 3px #00000059;--shadow-md:0 6px 16px #0006, 0 2px 6px #0000004d;--focus-ring:0 0 0 3px #a78bfa66;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=dark] .set-row{background:var(--surface)}:root[data-theme=dark] .review-flip{border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text)}@media (hover:hover){:root[data-theme=dark] .review-flip:hover:not(:disabled){background:var(--surface)}}:root[data-theme=dark] .btn-known{background:var(--status-done);color:#fff;box-shadow:var(--shadow-sm);border:none}@media (hover:hover){:root[data-theme=dark] .btn-known:hover{background:#12833c}}:root[data-theme=dark] .btn-unknown{border:1px solid var(--border-strong);background:var(--bg);color:var(--text)}@media (hover:hover){:root[data-theme=dark] .btn-unknown:hover{background:var(--surface)}}*{box-sizing:border-box}body{-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;letter-spacing:-.01em;margin:0;line-height:1.6}button{font:inherit;cursor:pointer;touch-action:manipulation;transition:background-color .12s,border-color .12s,color .12s,box-shadow .12s,opacity .12s}input,textarea,select{font:inherit}:where(button,a,label,input,textarea,select,[role=option],[tabindex]){-webkit-tap-highlight-color:transparent}::selection{background:var(--primary-soft);color:var(--text)}:root[data-theme=dark] ::selection{color:#fff;background:#a78bfa73}.sel{min-width:0;position:relative}.sel-btn{align-items:center;gap:var(--space-2);border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text);font:inherit;font-size:var(--text-sm);text-align:left;cursor:pointer;border-radius:8px;padding:.625rem .75rem;display:flex}.sel.open .sel-btn,.sel-btn:focus-visible{border-color:var(--primary)}.sel-btn:disabled{opacity:.6;cursor:default}.sel-value{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.sel-value.sel-empty{color:var(--text-subtle)}.sel-chev{color:var(--text-subtle);flex:none;transition:transform .15s}.sel.open .sel-chev{transform:rotate(180deg)}.sel-list{z-index:30;min-width:100%;max-height:15rem;padding:var(--space-1);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg);box-shadow:var(--shadow-md);margin:0;list-style:none;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto}.sel-list.up{top:auto;bottom:calc(100% + 4px)}.sel-opt{align-items:center;gap:var(--space-2);border-radius:var(--radius-sm);font-size:var(--text-sm);color:var(--text);cursor:pointer;padding:.5rem .625rem;line-height:1.4;display:flex}.sel-opt-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.sel-opt.active{background:var(--primary-soft)}.sel-opt.selected{color:var(--primary);font-weight:600}.sel-check{color:var(--primary);flex:none}.sel-star{color:#eab308;flex:none;align-items:center;display:inline-flex}:where(button,a,input,textarea,select,[tabindex]):focus-visible{box-shadow:var(--focus-ring);outline:none}.boot{min-height:100dvh;color:var(--text-muted);place-items:center;display:grid}.auth-page{background:var(--surface);place-items:center;min-height:100dvh;padding:1rem;display:grid}.auth-card{width:100%;max-width:22rem;padding:var(--space-6);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg);box-shadow:var(--shadow-md);gap:var(--space-4);flex-direction:column;display:flex}.auth-title{margin:0;font-size:1.5rem}.auth-subtitle{color:var(--text-muted);margin:-.75rem 0 .5rem;font-size:.875rem}.field{flex-direction:column;gap:.375rem;display:flex}.field-label{font-size:.875rem;font-weight:600}.field input,.password-row input{border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text);border-radius:8px;padding:.625rem .75rem}.field input:focus-visible,.password-row input:focus-visible{border-color:var(--primary)}.field .sel{width:100%}.password-row{gap:.5rem;display:flex}.password-toggle{border:1px solid var(--border);background:var(--surface);color:var(--text-muted);border-radius:8px;flex-shrink:0;padding:0 .75rem;font-size:.8125rem}input[type=checkbox],input[type=radio]{accent-color:var(--primary)}.checkbox-row{cursor:pointer;align-items:center;gap:.5rem;font-size:.875rem;display:flex}.auth-error{border-radius:var(--radius-md);background:var(--danger-soft);color:var(--danger);margin:0;padding:.625rem .75rem;font-size:.875rem}.btn-primary{padding:var(--space-3);border-radius:var(--radius-md);background:var(--primary);color:var(--primary-contrast);box-shadow:var(--shadow-sm);border:none;font-weight:600}@media (hover:hover){.btn-primary:hover:not(:disabled){background:var(--primary-hover)}}.btn-primary:disabled{opacity:.6;cursor:default}.auth-form{gap:var(--space-4);flex-direction:column;display:flex}.btn-google{padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg);color:var(--text);justify-content:center;align-items:center;gap:.625rem;font-weight:600;display:flex}@media (hover:hover){.btn-google:hover:not(:disabled){background:var(--surface)}}.btn-google:disabled{opacity:.6;cursor:default}.btn-google-icon{flex-shrink:0;width:18px;height:18px}.auth-divider{color:var(--text-muted);align-items:center;gap:.75rem;font-size:.8125rem;display:flex}.auth-divider:before,.auth-divider:after{content:"";background:var(--border);flex:1;height:1px}.auth-links{justify-content:space-between;gap:1rem;font-size:.875rem;display:flex}.auth-links a{color:var(--primary)}.auth-hint{color:var(--text-muted);margin:0;font-size:.8125rem;line-height:1.6}.auth-legal{color:var(--text-muted);text-align:center;margin:0;font-size:.75rem;line-height:1.6}.auth-legal a{color:var(--text-muted);text-decoration:underline}.landing{background:var(--bg);min-height:100dvh}.landing-inner,.landing-hero,.landing-topbar{max-width:68rem;margin:0 auto;padding-inline:1.25rem}.landing-topbar{justify-content:space-between;align-items:center;padding-block:1.25rem;display:flex}.landing-brand{color:var(--text);letter-spacing:-.01em;white-space:nowrap;align-items:center;gap:.4rem;font-size:1rem;font-weight:700;text-decoration:none;display:inline-flex}.landing-brand img{display:block}@media (hover:hover){.landing-brand:hover{color:var(--primary)}}.landing-topbar-auth{align-items:center;gap:.25rem;display:flex}.landing-topbar-auth a{border-radius:var(--radius-md);color:var(--text-muted);padding:.5rem .75rem;font-size:.9375rem;font-weight:600}.landing-topbar-auth a:first-child{color:var(--primary)}@media (hover:hover){.landing-topbar-auth a:hover{background:var(--surface)}}.landing-hero{gap:2.5rem;padding-block:2.5rem 4rem;display:grid}.landing-hero h1{letter-spacing:-.015em;word-break:keep-all;margin:0;font-size:2.125rem;line-height:1.3}.landing-lead{color:var(--text-muted);word-break:keep-all;text-wrap:pretty;margin:1.25rem 0 0;font-size:1.0625rem;line-height:1.8}.landing-lead strong{color:var(--text)}.landing-lead-sub{margin-top:.75rem;font-size:.9375rem}.landing-maker{border-left:2px solid var(--border-strong);color:var(--text-muted);word-break:keep-all;text-wrap:pretty;margin:1.75rem 0 0;padding-left:.875rem;font-size:.9375rem;line-height:1.7}.landing-cta{margin-top:1.75rem;display:flex}.landing-btn{border-radius:var(--radius-md);justify-content:center;align-items:center;min-width:11rem;padding:.875rem 1.75rem;font-weight:600;display:inline-flex}.landing-free{color:var(--text-subtle);margin:.875rem 0 0;font-size:.8125rem}.shot{justify-self:center;width:100%;margin:0}.shot img,.shot svg{border:1px solid var(--border);background:var(--bg);border-radius:14px;width:100%;height:auto;display:block;box-shadow:0 8px 28px #1c143612}.shot-hero{max-width:23rem}.shot-spotlight{max-width:22rem}.shot-tall,.shot-medium{max-width:19rem}.shot-inline{max-width:13rem;margin:1rem auto 0}.shot-inline img,.shot-inline svg{box-shadow:none;border-radius:10px}.mock{width:100%;height:auto;font-family:var(--font-sans);display:block}.m-page{fill:var(--bg)}.m-card,.m-sheet{fill:var(--bg);stroke:var(--border)}.m-sheet{fill:var(--surface)}.m-row,.m-input,.m-chip,.m-well,.m-seg,.m-menu{fill:var(--bg);stroke:var(--border)}.m-well{fill:var(--surface)}.m-menu{fill:var(--bg);stroke:var(--border-strong)}.m-soft,.m-seg-on{fill:var(--primary-soft);stroke:none}.m-seg-on{stroke:var(--primary)}.m-primary{fill:var(--primary)}.m-title{fill:var(--text)}.m-muted{fill:var(--text-muted)}.m-subtle{fill:var(--text-subtle)}.m-accent{fill:var(--primary)}.m-on-primary{fill:var(--primary-contrast)}.m-sun,.m-req{fill:var(--danger)}.m-brand{fill:var(--primary);font-size:13px;font-weight:700}.m-bold{font-weight:700}.m-9{font-size:9px}.m-10{font-size:10px}.m-11{font-size:11px}.m-12{font-size:12px}.m-13{font-size:13px}.m-14{font-size:14px}.m-15{font-size:15px}.m-16{font-size:16px}.m-17{font-size:17px}.m-19{font-size:19px}.m-icon line{stroke:var(--text);stroke-width:1.6px;stroke-linecap:round}.m-strike,.m-mini-strike{stroke:var(--text-subtle);stroke-width:1px}.m-check{fill:none;stroke:var(--primary-contrast);stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round}.m-today-ring{fill:var(--primary-soft);stroke:var(--primary)}.m-dot{fill:var(--text-subtle)}.m-dot-on{fill:var(--primary)}.m-check-off{fill:none;stroke:var(--border-strong);stroke-width:1.4px}.m-check-on{fill:var(--primary)}.m-pill-on{fill:none;stroke:var(--primary);stroke-width:1.4px}.m-pill-off{fill:none;stroke:var(--border);stroke-width:1.4px}.m-track{fill:var(--surface-2)}.m-track-on,.m-knob{fill:var(--primary)}.m-grid{stroke:var(--border);stroke-width:1px}.m-window{fill:var(--status-partial);opacity:.14}.m-window-edge{stroke:var(--primary);stroke-width:1px;stroke-dasharray:3 3}.m-area{fill:var(--primary);opacity:.22}.m-area-line{fill:none;stroke:var(--primary);stroke-width:1.6px;stroke-linejoin:round}.m-cell-dim{fill:var(--surface)}.m-cell-today{fill:none;stroke:var(--primary);stroke-width:1.5px}.m-dot-done{fill:var(--status-done)}.m-dot-todo{fill:var(--status-partial)}.m-mini-done{fill:var(--status-done)}.m-mini-todo{fill:var(--surface-2)}.m-mini-no{fill:var(--text-muted);font-size:6px;font-weight:700}.m-mini-line{stroke:var(--text-muted);stroke-width:3px;stroke-linecap:round;opacity:.5}.m-mini-line-done{stroke:var(--text-subtle);stroke-width:3px;stroke-linecap:round;opacity:.35}.m-tab-rail{stroke:var(--border);stroke-width:1px}.m-tab-on{stroke:var(--primary);stroke-width:2px}.m-cal{fill:none;stroke:var(--text-muted);stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.m-cal-on{stroke:var(--primary)}.m-blank{stroke:var(--border);stroke-width:2px;stroke-linecap:round;stroke-dasharray:6 6}.m-tally-bad{fill:var(--danger-soft)}.m-bad{fill:var(--danger)}.m-btn-unknown{fill:none;stroke:var(--border-strong)}.m-btn-known{fill:var(--known);stroke:none}.m-on-known{fill:#fff}.m-gear{fill:var(--bg);stroke:var(--primary)}.m-play{fill:var(--bg);stroke:var(--border)}.m-play-icon{fill:var(--primary)}.landing-why{background:var(--primary-soft);padding-block:3.5rem}.landing-why-block+.landing-why-block{border-top:1px solid var(--border);margin-top:3.5rem;padding-top:3rem}.landing-why h2{word-break:keep-all;margin:0 0 1.25rem;font-size:1.5rem}.landing-why p{max-width:42rem;color:var(--text-muted);word-break:keep-all;text-wrap:pretty;margin:.875rem 0;line-height:1.85}.landing-why strong{color:var(--text)}.spacing{margin:2.5rem 0 0}.spacing-track{height:3.25rem;margin-inline:1.25rem;position:relative}.spacing-line{background:var(--border-strong);border-radius:2px;height:2px;position:absolute;top:.5rem;left:0;right:0}.spacing-stop{flex-direction:column;align-items:center;gap:.5rem;display:flex;position:absolute;top:0;transform:translate(-50%)}.spacing-dot{background:var(--primary);width:11px;height:11px;box-shadow:0 0 0 4px var(--bg);border-radius:50%}.spacing-no{color:var(--text-muted);white-space:nowrap;font-size:.75rem}.spacing figcaption{color:var(--text-subtle);justify-content:space-between;margin-top:.5rem;font-size:.75rem;display:flex}.landing-more{max-width:42rem;margin-top:2.5rem}.landing-more summary{cursor:pointer;color:var(--primary);font-size:.875rem;font-weight:600}.landing-more-body{padding:var(--space-5);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg);margin-top:1rem}.landing-more-body p{margin:.875rem 0;font-size:.9375rem}.landing-more-body p:first-child{margin-top:0}.landing-split{gap:2.5rem;display:grid}.landing-split-text h2{word-break:keep-all;margin:0 0 1rem;font-size:1.5rem;line-height:1.4}.landing-split-text p{color:var(--text-muted);word-break:keep-all;text-wrap:pretty;margin:.875rem 0;line-height:1.8}.landing-split-text strong{color:var(--text)}.landing-spotlight{padding-block:4rem}.landing-eyebrow{border-radius:var(--radius-full);background:var(--primary-soft);color:var(--primary);margin-bottom:.75rem;padding:.25rem .625rem;font-size:.75rem;font-weight:700;display:inline-block}.landing-spotlight h2{font-size:1.75rem}.landing-annotations{flex-wrap:wrap;gap:.5rem;margin:1.5rem 0 0;padding:0;list-style:none;display:flex}.landing-annotations li{border:1px dashed var(--border-strong);border-radius:var(--radius-full);color:var(--text-muted);padding:.375rem .75rem;font-size:.8125rem}.landing-feature{border-top:1px solid var(--border);padding-block:3.5rem}.landing-feature-alt{background:var(--surface);border-top-color:#0000}.landing-hint{padding:var(--space-4);border-left:3px solid var(--primary);border-radius:0 var(--radius-md) var(--radius-md) 0;background:var(--primary-soft);font-size:.9375rem}.landing-legend{color:var(--text-muted);flex-wrap:wrap;gap:1rem;margin:1.5rem 0 0;padding:0;font-size:.8125rem;list-style:none;display:flex}.landing-legend li{align-items:center;gap:.375rem;display:flex}.landing-legend .dot{border-radius:50%;width:9px;height:9px}.dot-today{background:var(--primary)}.dot-upcoming{background:var(--status-partial)}.landing-practice{border-top:1px solid var(--border);padding-block:3.5rem}.landing-practice h2{word-break:keep-all;margin:0 0 .75rem;font-size:1.5rem}.landing-practice-lead{max-width:40rem;color:var(--text-muted);word-break:keep-all;text-wrap:pretty;margin:0 0 2rem;line-height:1.8}.landing-cards{gap:1rem;display:grid}.landing-cards article{padding:var(--space-5);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg)}.landing-cards h3{margin:0 0 .5rem;font-size:1rem}.landing-tag{border-radius:var(--radius-full);background:var(--surface-2);color:var(--text-muted);margin-bottom:.75rem;padding:.125rem .5rem;font-size:.75rem;display:inline-block}.landing-cards p{color:var(--text-muted);word-break:keep-all;text-wrap:pretty;margin:0;font-size:.9375rem;line-height:1.7}.landing-steps{border-top:1px solid var(--border);padding-block:3.5rem}.landing-steps h2{word-break:keep-all;margin:0 0 2rem;font-size:1.5rem}.landing-steps ol{gap:1.5rem;margin:0;padding:0;list-style:none;display:grid}.landing-steps li{padding-left:3.25rem;position:relative}.landing-steps li:before{content:"";background:var(--border);width:1px;position:absolute;top:2.25rem;bottom:-1.5rem;left:1.0625rem}.landing-steps li:last-child:before{display:none}.landing-step-no{background:var(--primary-soft);width:2.125rem;height:2.125rem;color:var(--primary);border-radius:50%;justify-content:center;align-items:center;font-size:.8125rem;font-weight:700;display:inline-flex;position:absolute;top:0;left:0}.landing-steps h3{margin:.25rem 0 .375rem;font-size:1rem}.landing-steps p{color:var(--text-muted);word-break:keep-all;margin:0;font-size:.9375rem;line-height:1.7}.landing-final{background:var(--primary-soft);text-align:center;padding-block:4rem}.landing-final h2{word-break:keep-all;margin:0;font-size:1.625rem;line-height:1.45}.landing-final p{color:var(--text-muted);word-break:keep-all;text-wrap:pretty;margin:1rem 0 2rem;line-height:1.8}.landing-btn-final{background:var(--primary);color:var(--primary-contrast)}.landing-btn-final:hover{background:var(--primary-hover)}.landing-footer{border-top:1px solid var(--border);color:var(--text-muted);padding-block:2rem 3rem;font-size:.8125rem}.landing-footer p{margin:0}.landing-footer nav{flex-wrap:wrap;gap:1rem;margin-top:.5rem;display:flex}.landing-footer a{color:var(--text-muted);text-decoration:underline}.curve{margin:1.5rem 0}.curve svg{width:100%;height:auto;overflow:visible}.curve-axis{stroke:var(--border-strong);stroke-width:1px}.curve-plot{fill:var(--surface);stroke:var(--border);stroke-width:1px}.curve-area{fill:url(#curve-fill);stroke:none}.curve-fill-top{stop-color:var(--primary);stop-opacity:.22}.curve-fill-bottom{stop-color:var(--primary);stop-opacity:.02}.curve-decay{fill:none;stroke:var(--text-muted);stroke-width:2px;stroke-dasharray:5 5;opacity:.75}.curve-review{fill:none;stroke:var(--primary);stroke-width:2.5px;stroke-linecap:round}.curve-mark{stroke:var(--border);stroke-width:1px;stroke-dasharray:3 4}.curve-dot{fill:var(--primary)}.curve-label,.curve-note{fill:var(--text-muted);font-size:12px}.curve-note-review{fill:var(--primary);font-weight:600}@media (width>=60rem){.landing-hero{grid-template-columns:43fr 57fr;align-items:center;gap:3.5rem;padding-block:4rem 5.5rem}.landing-hero h1{font-size:2.75rem}.shot-hero{max-width:26rem}.landing-split{grid-template-columns:1fr 1fr;align-items:center;gap:4rem}.landing-split-reverse .landing-split-text{order:2}.landing-spotlight{padding-block:5.5rem}.landing-spotlight h2{font-size:2rem}.shot-spotlight{max-width:25rem}.landing-feature-alt .landing-split{grid-template-columns:55fr 45fr}.shot-tall{max-width:24rem}.landing-cards{grid-template-columns:repeat(3,minmax(0,1fr))}.landing-steps ol{grid-template-columns:repeat(3,minmax(0,1fr));gap:2rem}.landing-steps li{padding-left:0}.landing-steps li:before{width:auto;height:1px;inset:1.0625rem -2rem auto 2.75rem}.landing-step-no{margin-bottom:.75rem;position:static}.landing-final h2{font-size:2rem}}@media (width<=40rem){.landing-hero h1{font-size:1.75rem}.landing-cta .landing-btn{width:100%}.landing-why h2,.landing-split-text h2,.landing-practice h2,.landing-steps h2{font-size:1.3125rem}.landing-spotlight h2{font-size:1.4375rem}.landing-final h2{font-size:1.375rem}.landing-why p,.landing-split-text p{font-size:.9375rem;line-height:1.75}.spacing-unit{display:none}.spacing-no{font-size:.6875rem}.spacing-track{margin-inline:.75rem}.curve-label,.curve-note{font-size:20px}.curve-review{stroke-width:3.5px}.curve-decay{stroke-width:3px;stroke-dasharray:7 6}.curve-dot{r:6}}.update-banner{z-index:60;padding:.625rem 1rem;padding-top:max(.625rem, env(safe-area-inset-top));background:var(--primary);color:var(--primary-contrast);box-shadow:var(--shadow-md);justify-content:center;align-items:center;gap:.75rem;font-size:.875rem;display:flex;position:fixed;top:0;left:0;right:0}.update-banner-text{font-weight:600}.update-banner-apply{border-radius:var(--radius-full);color:inherit;cursor:pointer;background:0 0;border:1px solid;padding:.25rem .75rem;font-size:.8125rem;font-weight:700}@media (hover:hover){.update-banner-apply:hover{background:#ffffff2e}}.update-banner-close{color:inherit;cursor:pointer;opacity:.8;background:0 0;border:none;padding:.25rem .5rem;font-size:.875rem;line-height:1;position:absolute;right:.5rem}.legal-page{min-height:100dvh;padding:var(--space-6) 1rem;background:var(--surface)}.legal-doc{max-width:40rem;padding:var(--space-6);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg);margin:0 auto;line-height:1.75}.legal-doc h1{margin:0;font-size:1.375rem}.legal-doc h2{margin:2rem 0 .5rem;font-size:1rem}.legal-doc p,.legal-doc ul{margin:.5rem 0;font-size:.9375rem}.legal-doc ul{padding-left:1.25rem}.legal-doc a{color:var(--primary)}.legal-date{color:var(--text-muted);font-size:.8125rem!important}.legal-back{border-top:1px solid var(--border);margin-top:2rem;padding-top:1rem;font-size:.875rem}.shell{flex-direction:column;min-height:100dvh;display:flex}.shell-header{justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border);background:color-mix(in srgb, var(--bg) 85%, transparent);-webkit-backdrop-filter:saturate(180%)blur(8px);backdrop-filter:saturate(180%)blur(8px);z-index:10;display:flex;position:sticky;top:0}.shell-nav-wrap{align-items:center;min-width:0;display:flex;position:relative}.shell-nav{gap:.25rem;display:flex}.shell-brand{margin-right:var(--space-3);color:var(--text);letter-spacing:-.01em;white-space:nowrap;align-items:center;gap:.4rem;font-size:.9375rem;font-weight:700;text-decoration:none;display:inline-flex}.shell-brand img{display:block}@media (hover:hover){.shell-brand:hover{color:var(--primary)}}@media (width>=641px) and (width<=860px){.shell-brand span{display:none}.shell-brand{margin-right:var(--space-2)}}.nav-toggle{border:1px solid var(--border);border-radius:var(--radius-md);width:2rem;height:2rem;color:var(--text-muted);background:0 0;place-items:center;padding:0;font-size:1.125rem;line-height:1;display:none}.nav-toggle[aria-expanded=true]{background:var(--surface);color:var(--text)}@media (hover:hover){.nav-toggle:hover{background:var(--surface);color:var(--text)}}.nav-link{color:var(--text-muted);white-space:nowrap;border-radius:6px;padding:.375rem .75rem;font-size:.9375rem;text-decoration:none}@media (hover:hover){.nav-link:hover{background:var(--surface)}}.nav-link.active{background:var(--primary-soft);color:var(--primary);font-weight:600}.shell-account{flex:none;align-items:center;gap:.75rem;display:flex;position:relative}.account-btn{border:1px solid var(--border);border-radius:var(--radius-full);width:2rem;height:2rem;color:var(--text-muted);background:0 0;place-items:center;padding:0;font-size:1.125rem;line-height:1;display:grid}.account-btn[aria-expanded=true]{background:var(--surface);color:var(--text)}@media (hover:hover){.account-btn:hover{background:var(--surface);color:var(--text)}}.account-menu{z-index:20;min-width:12rem;max-width:80vw;padding:var(--space-2);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg);box-shadow:var(--shadow-md);flex-direction:column;gap:.25rem;display:flex;position:absolute;top:calc(100% + .5rem);right:0}.account-menu-email{padding:var(--space-2);color:var(--text-muted);font-size:var(--text-xs);word-break:break-all;border-bottom:1px solid var(--border);margin-bottom:.25rem}.account-menu-row{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-2);font-size:var(--text-sm);color:var(--text);display:flex}.account-menu-voices{gap:var(--space-2);padding:var(--space-2);border-top:1px solid var(--border);flex-direction:column;margin-top:.25rem;display:flex}.account-menu-label{font-size:var(--text-xs);color:var(--text-muted);font-weight:600}.account-menu-voices .setplayer-voice{flex-direction:column;align-items:stretch;gap:.25rem;display:flex}.account-menu-voices .setplayer-voice .sel{max-width:100%}.account-menu-item{text-align:left;width:100%;padding:var(--space-2);border-radius:var(--radius-sm);color:var(--text);font-size:var(--text-sm);background:0 0;border:none}@media (hover:hover){.account-menu-item:hover{background:var(--surface)}}.btn-ghost{border:1px solid var(--border);color:var(--text-muted);background:0 0;border-radius:6px;padding:.375rem .625rem;font-size:.8125rem}@media (hover:hover){.btn-ghost:hover{background:var(--surface)}}.theme-toggle{background:0 0;border:none;flex:none;padding:0;line-height:0}.theme-toggle-track{border-radius:var(--radius-full);background:var(--surface-2);border:1px solid var(--border);justify-content:space-between;align-items:center;width:3.25rem;height:1.625rem;padding:0 .3125rem;display:inline-flex;position:relative}.theme-toggle-icon{z-index:1;font-size:.75rem;line-height:1}.theme-toggle-thumb{border-radius:var(--radius-full);background:var(--bg);width:1.25rem;height:1.25rem;box-shadow:var(--shadow-sm);transition:left .16s;position:absolute;top:50%;left:.1875rem;transform:translateY(-50%)}.theme-toggle.on .theme-toggle-thumb{left:calc(100% - 1.4375rem)}.shell-main{flex:1;padding:1rem}@media (width<=640px){.nav-toggle{display:grid}.shell-brand{margin-left:var(--space-2);margin-right:0}.shell-nav{z-index:20;min-width:12rem;padding:var(--space-2);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg);box-shadow:var(--shadow-md);flex-direction:column;gap:.25rem;position:absolute;top:calc(100% + .5rem);left:0}.shell-nav:not(.open){display:none}.shell-nav .nav-link{padding:.5rem .625rem}}.calendar-page{flex-direction:column;gap:.75rem;display:flex}.cal-header{justify-content:space-between;align-items:center;gap:1rem;display:flex}.cal-nav{align-items:center;gap:.5rem;display:flex}.cal-title{text-align:center;min-width:7rem;margin:0;font-size:1.125rem}.cal-nav .btn-ghost{padding:.25rem .625rem;font-size:1.125rem;line-height:1}.cal-actions{align-items:center;gap:.375rem;display:flex}.cal-actions .btn-ghost{border:none}.cal-toggle{color:var(--text-muted);place-items:center;padding:.375rem;line-height:1;display:grid}.cal-toggle.active{background:var(--primary-soft);color:var(--primary)}.week-strip{grid-template-columns:repeat(7,1fr);gap:.25rem;display:grid}.week-day{border-radius:var(--radius-full);color:var(--text);cursor:pointer;background:0 0;border:1.5px solid #0000;flex-direction:column;align-items:center;gap:.375rem;padding:.75rem .25rem;display:flex}@media (hover:hover){.week-day:hover{background:var(--surface)}}.week-day.today{border-color:var(--border-strong)}.week-day.selected{border-color:var(--primary);background:var(--primary-soft)}.week-dow{color:var(--text-muted);font-size:.75rem;font-weight:600}.week-date{font-size:1.0625rem;font-weight:600}.week-day.today .week-date,.week-day.selected .week-date{color:var(--primary);font-weight:700}.week-dot{background:0 0;border-radius:50%;width:.375rem;height:.375rem}.week-dot.has{background:var(--text-subtle)}.week-day.selected .week-dot.has{background:var(--primary)}.cal-weekdays{grid-template-columns:repeat(7,1fr);display:grid}.cal-weekday{text-align:center;color:var(--text-muted);padding:.25rem;font-size:.8125rem;font-weight:600}.cal-weekday.sun{color:var(--status-overdue)}.cal-weekday.sat{color:var(--status-new)}.cal-grid{border-top:1px solid var(--border);border-left:1px solid var(--border);grid-template-columns:repeat(7,1fr);display:grid}.cal-cell{border-right:1px solid var(--border);border-bottom:1px solid var(--border);cursor:pointer;flex-direction:column;gap:.125rem;min-height:8.5rem;padding:.25rem;display:flex;overflow:hidden}@media (hover:hover){.cal-cell:hover{background:var(--surface)}}.cal-cell.out{background:var(--surface);color:var(--text-muted)}@media (hover:hover){.cal-cell.selected:hover{background:var(--primary-soft)}}.cal-cell.today{outline:2px solid var(--primary);outline-offset:-2px}.cal-cell.selected{background:var(--primary-soft)}.cal-daynum{justify-content:space-between;align-items:center;font-size:.8125rem;font-weight:600;display:flex}.cal-dot{border-radius:50%;width:.5rem;height:.5rem}.dot-new{background:var(--status-new)}.dot-done{background:var(--status-done)}.dot-partial{background:var(--status-partial)}.dot-overdue{background:var(--status-overdue)}.cal-lines{flex-direction:column;gap:1px;min-width:0;margin:0;padding:0;list-style:none;display:flex}.cal-line{align-items:center;gap:.25rem;min-width:0;font-size:.75rem;line-height:1.4;display:flex}.cal-badge{border:1px solid var(--border-strong);border-radius:var(--radius-full);width:1rem;height:1rem;color:var(--text-muted);background:0 0;flex:none;place-items:center;padding:0;font-size:.625rem;font-weight:700;line-height:1;display:grid}.cal-setname{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.st-new .cal-badge{background:var(--status-new);color:#fff;border-color:#0000}.st-new .cal-setname{color:var(--status-new)}.st-upcoming .cal-badge{background:var(--text-subtle);color:#fff;border-color:#0000}.st-overdue .cal-badge{background:var(--status-overdue);color:#fff;border-color:#0000}.st-overdue .cal-setname{color:var(--status-overdue)}.st-done .cal-badge{background:var(--status-done);color:#fff;border-color:#0000}.st-done .cal-setname{color:var(--text-subtle);text-decoration:line-through}.cal-more{color:var(--text-muted);background:0 0;border:none;padding:0;font-size:.6875rem;text-decoration:underline}.cal-loading{text-align:center;color:var(--text-muted);font-size:.875rem}.cal-empty{max-width:26rem;margin:var(--space-6) auto;padding:var(--space-6) var(--space-5);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg);box-shadow:var(--shadow-md);text-align:center}.cal-empty-title{margin:0 0 var(--space-3);letter-spacing:-.01em;font-size:1.25rem}.cal-empty-text{margin:0 0 var(--space-5);color:var(--text-muted);word-break:keep-all;font-size:.9375rem;line-height:1.6}.cal-empty-cta{padding-left:var(--space-6);padding-right:var(--space-6);text-decoration:none;display:inline-block}.day-page{gap:var(--space-3);flex-direction:column;max-width:42rem;margin:0 auto;display:flex}.day-back{align-self:flex-start}.day-detail{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg);box-shadow:var(--shadow-sm);padding:var(--space-4);gap:var(--space-4);flex-direction:column;display:flex}.day-detail-head{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.day-detail-date{font-size:var(--text-lg)}.day-section-head{justify-content:space-between;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2);display:flex}.day-section-head h3{font-size:var(--text-sm);color:var(--text-muted);margin:0;font-weight:600}.day-section-head .btn-ghost{text-decoration:none}.day-empty{padding:var(--space-3);border:1px dashed var(--border);border-radius:var(--radius-md);color:var(--text-subtle);font-size:var(--text-sm);text-align:center;margin:0}.day-shift-wrap{justify-content:flex-end;align-items:center;gap:var(--space-2);margin-top:var(--space-3);display:flex}.day-shift{font-size:var(--text-xs);padding:var(--space-1) var(--space-3)}.day-shift-error{color:var(--danger,#d33);font-size:var(--text-sm)}.day-list{gap:var(--space-1);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.day-item{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-2);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg);display:flex}.day-item-body{flex-direction:column;flex:auto;min-width:0;display:flex}.day-item-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text);flex:auto;font-weight:500;text-decoration:none;overflow:hidden}@media (hover:hover){a.day-item-name:hover{color:var(--primary);text-decoration:underline}}.day-item-meta{color:var(--text-muted);font-size:var(--text-sm);flex:none}.day-item-sub{font-size:var(--text-xs);color:var(--text-muted)}.day-stamp{width:1.125rem;height:1.125rem;accent-color:var(--primary);flex:none}.day-stamp.readonly{border:1.5px solid var(--border-strong);border-radius:var(--radius-full);color:#fff;background:0 0;place-items:center;font-size:.75rem;font-weight:700;line-height:1;display:grid}.day-stamp.readonly.done{background:var(--primary);border-color:#0000}.day-open{flex:none}.day-item.day-rev.st-overdue{border-color:color-mix(in srgb, var(--status-overdue) 40%, var(--border))}.day-item.day-rev.st-overdue .day-item-sub{color:var(--status-overdue)}.day-item.day-rev.st-done .day-item-name{color:var(--text-muted);text-decoration:line-through}@media (width<=560px){.cal-cell{gap:0;min-height:5.5rem;padding:.125rem}.cal-daynum{font-size:.6875rem}.cal-line{gap:.1875rem;font-size:.625rem}.cal-badge{width:.8125rem;height:.8125rem;font-size:.5rem}.cal-setname{max-width:4em}.cal-weekday{font-size:.6875rem}.calendar.selecting .cal-cell{min-height:2.75rem}.calendar.selecting .cal-lines{display:none}.calendar.selecting .cal-daynum{flex-direction:column;align-items:center;gap:.125rem}}.register{flex-direction:column;gap:1rem;max-width:56rem;margin:0 auto;display:flex}.register-title{margin:0}.register-head{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.register-plan-btn{border:1px solid var(--primary);border-radius:var(--radius-md);background:var(--primary-soft);color:var(--primary-hover);padding:var(--space-1) var(--space-3);font-size:var(--text-sm);cursor:pointer;font-weight:600}@media (hover:hover){.register-plan-btn:hover{background:var(--primary);color:#fff}}.register-meta{flex-wrap:wrap;gap:1rem;display:flex}.register-meta .field{flex:12rem}.register-date-field{flex:none}.register input[type=text],.register input[type=date]{border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text);border-radius:8px;padding:.5rem .625rem}.register input:focus-visible,.bulk-input:focus-visible{border-color:var(--primary)}.register-modes{border-bottom:1px solid var(--border);gap:.25rem;display:flex}.mode-tab{color:var(--text-muted);background:0 0;border:none;border-bottom:2px solid #0000;padding:.5rem .875rem;font-size:.9375rem}.mode-tab.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}.card-rows{flex-direction:column;gap:.5rem;display:flex}.card-row{align-items:stretch;gap:.375rem;display:flex}.card-row-inputs{flex-direction:row;flex:1;gap:.5rem;min-width:0;display:flex}.card-row-inputs input{flex:1 1 0;min-width:0}@media (width<=560px){.card-row-inputs{flex-direction:column;gap:.25rem}}.card-remove{border-radius:var(--radius-full);width:1.75rem;height:1.75rem;color:var(--text-subtle);background:0 0;border:none;flex:none;align-self:center;place-items:center;padding:0;font-size:1.125rem;line-height:1;display:grid}@media (hover:hover){.card-remove:hover:not(:disabled){background:var(--danger-soft);color:var(--danger)}}.card-remove:disabled{opacity:.3;cursor:default}.card-add{align-self:flex-start}.bulk{flex-direction:column;gap:.75rem;display:flex}.bulk-delimiters{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.delimiter-opt{cursor:pointer;align-items:center;gap:.25rem;font-size:.875rem;display:inline-flex}.bulk-input{border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text);font:inherit;resize:vertical;border-radius:8px;padding:.625rem .75rem}.bulk-preview{border:1px solid var(--border);background:var(--surface);border-radius:8px;max-height:20rem;padding:.5rem .75rem;overflow-y:auto}.bulk-preview-head{color:var(--text-muted);margin-bottom:.375rem;font-size:.8125rem}.preview-card{border-top:1px solid var(--border);flex-direction:column;padding:.25rem 0;display:flex}.preview-term{font-weight:600}.preview-meaning{color:var(--text-muted);font-size:.9375rem}.preview-empty{color:var(--status-overdue);font-size:.8125rem;font-style:normal}.register-actions{justify-content:flex-end;gap:.5rem;padding-top:.5rem;display:flex}.register-actions .btn-ghost{padding:.75rem 1rem}.register-actions .btn-primary{min-width:8rem}.review{gap:var(--space-3);flex-direction:column;max-width:34rem;margin:0 auto;display:flex}.review-top{align-items:center;gap:var(--space-2);display:flex}.review-top .review-round{margin-left:auto}.review-round{font-size:var(--text-sm);color:var(--text-muted)}.review-progress{border-radius:var(--radius-full);background:var(--surface-2);height:.5rem;overflow:hidden}.review-progress-bar{border-radius:var(--radius-full);background:var(--primary);height:100%;transition:width .25s}.review-banner{padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);background:var(--primary-soft);color:var(--primary);font-size:var(--text-sm);text-align:center;font-weight:600}.review-browse{justify-content:center;align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.review-browse-tag{font-size:var(--text-sm);color:var(--text-muted)}.review-card{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg);min-height:16rem;box-shadow:var(--shadow-md);padding:var(--space-6);cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:manipulation;place-items:center;padding-block:3.25rem;transition:box-shadow .12s,border-color .12s;display:grid;position:relative}@media (hover:hover){.review-card:hover{border-color:var(--border-strong)}}.review-card.flipped{cursor:default;background:var(--surface)}.review-face{align-items:center;gap:var(--space-3);text-align:center;flex-direction:column;width:100%;padding-inline:1.75rem;display:flex}.review-settings .review-setting-row{justify-content:space-between;align-items:center;gap:var(--space-3);margin-bottom:var(--space-3);display:flex}.review-gear{font-size:1rem;line-height:1}.seg{border:1px solid var(--border);border-radius:var(--radius-full);background:var(--surface);padding:2px;display:flex}.seg>button{border-radius:var(--radius-full);color:var(--text-muted);font-size:var(--text-xs);background:0 0;border:none;padding:.25rem .75rem}.seg>button.active{background:var(--primary);color:var(--primary-contrast);font-weight:600}.set-rowseg{flex:none}.set-rowseg>button{padding:.125rem .5rem}.review-meaning{word-break:keep-all;color:color-mix(in srgb, var(--text) 72%, var(--bg));font-size:1.5rem;font-weight:600}.review-term{word-break:break-word;color:color-mix(in srgb, var(--text) 72%, var(--bg));font-size:1.5rem;font-weight:600}.review-meaning.small,.review-term.small{font-size:var(--text-base);color:var(--text-muted);font-weight:500}.review-meaning.answer,.review-term.answer{color:var(--primary);font-size:2rem;font-weight:700}.review-hint{font-size:var(--text-xs);color:var(--text-subtle)}.review-memo{margin-top:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);background:var(--bg);border:1px solid var(--border);font-size:var(--text-sm);color:var(--text-muted);white-space:pre-wrap;text-align:left;overflow-wrap:anywhere;word-break:break-word;width:100%;max-height:30vh;overflow-y:auto}.review-actions{gap:var(--space-2);display:flex}.review-actions>button{padding:var(--space-3);border-radius:var(--radius-md);font-weight:600;font-size:var(--text-base);flex:1}.review-regrade>button{transition:opacity .12s,box-shadow .12s}.picked-mark{vertical-align:-.12em;width:1em;height:1em;margin-right:.35em}.review-actions.review-regrade>button.picked{box-shadow:0 0 0 2px var(--primary);border-color:var(--primary)}.review-actions.review-regrade>button.unpicked{opacity:.45;box-shadow:none}@media (hover:hover){.review-regrade>button.unpicked:hover{opacity:.8}}.review-flip{border:1px solid var(--primary);color:var(--primary);box-shadow:none;background:0 0;flex:1}@media (hover:hover){.review-flip:hover:not(:disabled){background:var(--primary-soft)}}.btn-known{color:#fff;box-shadow:var(--shadow-sm);background:#15803d;border:none}@media (hover:hover){.btn-known:hover{background:#166534}}.btn-unknown{border:1px solid var(--border-strong);color:var(--text-muted);background:0 0}@media (hover:hover){.btn-unknown:hover{background:var(--surface)}}@media (width>=768px){.review{max-width:46rem}.review-card{min-height:24rem}.review-meaning,.review-term{font-size:1.75rem}.review-meaning.answer,.review-term.answer{font-size:2.5rem}.review-actions>button{padding:var(--space-4);font-size:var(--text-lg)}}.review-done{align-items:center;gap:var(--space-3);text-align:center;flex-direction:column;max-width:26rem;margin:2rem auto 0;display:flex}.review-done h2{margin:0}.stamp{width:5rem;height:5rem;color:var(--primary-contrast);background:var(--primary);box-shadow:var(--shadow-md);border-radius:50%;place-items:center;display:grid}.review-done-cycle{color:var(--text-muted);font-size:var(--text-sm);margin:0}.review-done-next{font-size:var(--text-base);margin:0}.review-done .btn-primary{margin-top:var(--space-2);min-width:12rem}.sets{gap:var(--space-3);flex-direction:column;max-width:48rem;margin:0 auto;display:flex}.sets-top{gap:var(--space-2);align-items:center;display:flex}.sets-search{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:var(--text);flex:1;padding:.5rem .75rem}.sets-search:focus-visible{border-color:var(--primary)}.sets-actions{gap:var(--space-2);display:flex}.sets-actions .btn-ghost{white-space:nowrap;text-decoration:none}.sets-filters{gap:var(--space-2);flex-wrap:wrap;display:flex}.chip{border:1px solid var(--border);border-radius:var(--radius-full);background:var(--surface);color:var(--text-muted);font-size:var(--text-sm);padding:.3125rem .75rem}.chip.active{border-color:var(--primary);color:var(--primary);background:var(--primary-soft);font-weight:600}.chip-count{opacity:.8;font-variant-numeric:tabular-nums}.sets-empty{padding:var(--space-6);text-align:center;color:var(--text-subtle)}.set-list{gap:var(--space-3);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.set-row{gap:var(--space-3);padding:var(--space-4);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg);cursor:pointer;flex-direction:column;transition:border-color .12s,box-shadow .12s,transform .12s;display:flex}@media (hover:hover){.set-row:hover{border-color:color-mix(in srgb, var(--primary) 35%, var(--border));box-shadow:var(--shadow-md);transform:translateY(-1px)}}.set-row-head{align-items:center;gap:var(--space-2);display:flex}.set-name{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;font-weight:600;overflow:hidden}.set-practice{border:1px solid var(--border-strong);border-radius:var(--radius-full);color:var(--text-muted);font-size:var(--text-xs);white-space:nowrap;background:0 0;flex:none;padding:.0625rem .5rem}@media (hover:hover){.set-practice:hover{border-color:var(--primary);color:var(--primary)}}.set-star{color:var(--text-subtle);cursor:pointer;background:0 0;border:none;flex:none;align-items:center;padding:.125rem;display:inline-flex}.set-star.on{color:#eab308}.set-star-static{cursor:default}@media (hover:hover){button.set-star:hover{color:#eab308}}.chip-star{align-items:center;gap:.25rem;display:inline-flex}.chip-star.active{color:#a16207;background:#eab30824;border-color:#eab308}.set-restart{border:1px solid var(--border-strong);border-radius:var(--radius-full);color:var(--text-muted);font-size:var(--text-xs);white-space:nowrap;background:0 0;flex:none;padding:.0625rem .5rem}@media (hover:hover){.set-restart:hover{border-color:var(--status-new);color:var(--status-new)}}.modal-desc{font-size:var(--text-sm);color:var(--text-muted);line-height:1.5}.modal.modal-wide{width:100%;max-width:56rem}@media (width<=480px){.modal-backdrop{padding:var(--space-2)}.modal{padding:var(--space-4) var(--space-3)}.wizard{padding:var(--space-3)}}.plan-apply{gap:var(--space-2);display:flex}.plan-apply .btn-ghost{flex:1}.plan-apply-col{flex-direction:column}.plan-apply-opt{width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--border-strong);border-radius:var(--radius-md);background:var(--bg);color:var(--text);text-align:left;cursor:pointer;flex-direction:column;align-items:flex-start;gap:2px;display:flex}@media (hover:hover){.plan-apply-opt:hover:not(:disabled){border-color:var(--primary)}}.plan-apply-opt:disabled{opacity:.5;cursor:default}.plan-apply-opt small{color:var(--text-subtle);font-size:var(--text-xs)}.setedit-practice{align-self:flex-start}.set-listen{border:1px solid var(--border);border-radius:var(--radius-full);background:var(--surface);width:1.75rem;height:1.75rem;color:var(--text-muted);flex:none;place-items:center;font-size:.7rem;line-height:1;display:grid}@media (hover:hover){.set-listen:hover{color:var(--primary);border-color:var(--primary)}}.set-listen.playing{color:var(--primary);border-color:var(--primary);background:var(--primary-soft)}.set-badge{border-radius:var(--radius-full);font-size:var(--text-xs);flex:none;padding:.125rem .5rem;font-weight:600}.b-in-progress{background:var(--primary-soft);color:var(--primary)}.b-completed{background:color-mix(in srgb, var(--status-done) 20%, transparent);color:var(--status-done)}.b-overdue{background:color-mix(in srgb, var(--status-overdue) 20%, transparent);color:var(--status-overdue)}.set-progress{align-items:center;gap:var(--space-3);display:flex}.set-timeline{gap:.25rem;display:flex}.tl-cell{border-radius:var(--radius-full);border:1px solid var(--border-strong);width:1.375rem;height:1.375rem;color:var(--text-subtle);background:0 0;place-items:center;font-size:.6875rem;font-weight:700;display:grid}.tl-done{background:var(--primary);color:#fff;border-color:#0000}.tl-current{background:var(--status-new);color:#fff;border-color:#0000}.tl-overdue{background:var(--status-overdue);color:#fff;border-color:#0000}.tl-upcoming{background:0 0}.set-meta{padding-top:var(--space-3);border-top:1px solid var(--border);font-size:var(--text-xs);color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:.375rem;display:flex}.set-meta>span:nth-child(2n){color:var(--text-subtle)}.set-weak{border:1px solid var(--border-strong);border-radius:var(--radius-full);color:var(--text-muted);font-size:var(--text-xs);background:0 0;padding:.0625rem .5rem}@media (hover:hover){.set-weak:hover{border-color:var(--status-overdue);color:var(--status-overdue)}}.sets-bottom{padding-top:var(--space-2);justify-content:center;display:flex}.sets-bottom .btn-primary{text-align:center;min-width:14rem;text-decoration:none}.sets-fab{right:max(var(--space-4), env(safe-area-inset-right));bottom:max(var(--space-5), env(safe-area-inset-bottom));z-index:40;border-radius:var(--radius-full);background:var(--primary);color:#fff;width:3.5rem;height:3.5rem;box-shadow:var(--shadow-md);justify-content:center;align-items:center;font-size:2rem;line-height:1;text-decoration:none;transition:background .15s,transform .15s;display:flex;position:fixed}@media (hover:hover){.sets-fab:hover{background:var(--primary-hover)}}.sets-fab:active{transform:scale(.94)}.sets-fab span{margin-top:-2px}.hl-swatch.hl-yellow{background:#fde047}.hl-swatch.hl-green{background:#86efac}.hl-swatch.hl-purple{background:#d8b4fe}mark.hl-yellow{background:#fde04766}mark.hl-green{background:#86efac61}mark.hl-purple{background:#d8b4fe6b}mark[class^=hl-]{color:inherit;border-radius:3px;padding:0 1px}.ul-line{text-underline-offset:3px;text-decoration-line:underline;text-decoration-thickness:2px}.hl-empty{color:var(--text-subtle);font-style:italic}.hl-toolbar{align-items:center;gap:var(--space-2);padding:var(--space-1) 0;flex-wrap:wrap;display:flex}.hl-toolbar.static{margin-top:var(--space-2)}.hl-group{align-items:center;gap:var(--space-1);display:inline-flex}.hl-group-label{font-size:var(--text-xs);color:var(--text-muted);margin-right:2px}.hl-underline-btn{border:1px solid var(--border-strong);border-radius:var(--radius-full);color:var(--text-muted);font-size:var(--text-xs);background:0 0;padding:.125rem .625rem;line-height:1.4}@media (hover:hover){.hl-underline-btn:hover:not(:disabled){color:var(--text)}}.hl-underline-btn:disabled{opacity:.35;cursor:default}.hl-swatch{border-radius:var(--radius-full);border:1px solid #00000040;width:1.5rem;height:1.5rem;padding:0}@media (hover:hover){.hl-swatch:hover:not(:disabled){transform:scale(1.1)}}.hl-swatch:disabled{opacity:.35;cursor:default}.hl-erase{border:1px solid var(--border-strong);border-radius:var(--radius-full);color:var(--text-muted);font-size:var(--text-xs);background:0 0;padding:.125rem .625rem}.hl-erase:disabled{opacity:.35;cursor:default}.setedit,.cardpage{gap:var(--space-3);flex-direction:column;max-width:56rem;margin:0 auto;display:flex}.setedit-head{justify-content:space-between;align-items:center;display:flex}.setedit-title{align-items:center;gap:.375rem;margin:0;display:flex}.setedit-title-edit{color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;flex:none;place-items:center;padding:.25rem;display:grid}@media (hover:hover){.setedit-title-edit:hover{color:var(--text);background:var(--surface-2,#7f7f7f1f)}}.setedit-title-input{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface,transparent);width:100%;color:inherit;margin:0;padding:.125rem .375rem;font-size:1.5rem;font-weight:700}.setedit-sub{color:var(--text-muted);font-size:var(--text-sm);margin:0}.btn-danger{border:1px solid color-mix(in srgb, var(--danger) 50%, transparent);border-radius:var(--radius-md);color:var(--danger);font-size:var(--text-sm);background:0 0;padding:.375rem .75rem}@media (hover:hover){.btn-danger:hover{background:var(--danger-soft)}}.cardedit-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.cardedit-row{gap:var(--space-2);padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);display:flex}.cardedit-num{width:1.5rem;color:var(--text-subtle);font-size:var(--text-xs);flex:none;padding-top:.5rem;font-weight:700}.cardedit-drag{width:1.75rem;color:var(--text-subtle);cursor:grab;touch-action:none;background:0 0;border:none;flex:none;align-self:stretch;place-items:center;padding:0;display:grid}.cardedit-drag:active{cursor:grabbing}.cardedit-item.dragging{opacity:.55}.cardedit-item.dragging .cardedit-row{border-color:var(--primary)}.cardedit-add{margin-top:var(--space-2);border:1px dashed var(--border-strong);border-radius:var(--radius-lg);width:100%;padding:var(--space-3);color:var(--text-muted)}.cardedit-body{gap:var(--space-2);flex-direction:column;flex:auto;min-width:0;display:flex}.cardedit-fields{gap:var(--space-2);display:flex}.cardedit-fields>*{flex:1 1 0;min-width:0}.cardedit-fields-stack{flex-direction:column}.cardedit-text{border-radius:var(--radius-md);background:var(--bg);cursor:text;word-break:break-word;border:1px solid #0000;min-height:2.25rem;padding:.5rem .625rem}@media (hover:hover){.cardedit-text:hover{border-color:var(--border)}}.cardedit-input{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg);width:100%;color:var(--text);padding:.5rem .625rem}.cardedit-input:focus-visible{border-color:var(--primary)}.cardedit-area{font:inherit;white-space:pre-wrap;resize:vertical;field-sizing:content;min-height:2.5rem;line-height:1.4}.cardedit-memo{border:1px dashed var(--border-strong);border-radius:var(--radius-md);width:100%;color:var(--text-muted);font-size:var(--text-sm);background:0 0;padding:.375rem .625rem}.cardedit-addmemo{color:var(--text-subtle);font-size:var(--text-xs);background:0 0;border:none;align-self:flex-start;padding:0;text-decoration:underline}.cardedit-actions{flex-direction:column;flex:none;align-items:center;gap:.25rem;display:flex;position:relative}.cardedit-menu-btn{font-size:1.125rem}.cardedit-menu{z-index:20;min-width:11rem;padding:var(--space-2);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg);box-shadow:var(--shadow-md);flex-direction:column;gap:.125rem;display:flex;position:absolute;top:calc(100% + .25rem);right:0}.cardedit-menu-item{text-align:left;width:100%;padding:var(--space-2);border-radius:var(--radius-sm);color:var(--text);font-size:var(--text-sm);white-space:nowrap;background:0 0;border:none}@media (hover:hover){.cardedit-menu-item:hover:not(:disabled){background:var(--surface)}}.cardedit-menu-item:disabled{opacity:.35;cursor:default}.cardedit-menu-danger{color:var(--danger)}@media (hover:hover){.cardedit-menu-danger:hover:not(:disabled){background:var(--danger-soft)}}.cardedit-icon{border-radius:var(--radius-full);width:1.75rem;height:1.75rem;color:var(--text-subtle);background:0 0;border:none;place-items:center;padding:0;display:grid}@media (hover:hover){.cardedit-icon:hover:not(:disabled){background:var(--surface-2);color:var(--text)}}.cardedit-icon:disabled{opacity:.3;cursor:default}.cardedit-move{gap:.125rem;display:flex}.cardedit-move .cardedit-icon{font-size:.75rem}.cardedit-mode{border:1px solid var(--border);border-radius:var(--radius-full);background:var(--bg);color:var(--text-muted);font-size:var(--text-xs);white-space:nowrap;align-items:center;gap:.25rem;padding:.2rem .5rem;font-weight:600;display:inline-flex}@media (hover:hover){.cardedit-mode:hover{border-color:var(--primary);color:var(--primary)}}.cardedit-mode.editing{background:var(--primary-soft);border-color:var(--primary);color:var(--primary)}.bulk-note{font-size:var(--text-xs);color:var(--text-subtle);margin:0}.bulk-diff{gap:var(--space-2);flex-wrap:wrap;display:flex}.diff-chip{border:1px solid var(--border);border-radius:var(--radius-full);background:var(--surface);color:var(--text-muted);font-size:var(--text-xs);font-variant-numeric:tabular-nums;padding:.125rem .625rem}.diff-chip.up{border-color:color-mix(in srgb, var(--primary) 45%, transparent);color:var(--primary)}.diff-chip.ins{border-color:color-mix(in srgb, var(--status-done) 45%, transparent);color:var(--status-done)}.diff-chip.del{border-color:color-mix(in srgb, var(--status-overdue) 45%, transparent);color:var(--status-overdue)}.field-labelrow{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.field-action{color:var(--text-subtle);font-size:var(--text-xs);background:0 0;border:none;padding:0}.field-action-edit{align-items:center;gap:.25rem;display:inline-flex}@media (hover:hover){.field-action:hover{color:var(--primary)}}.field-hint{color:var(--text-subtle);font-size:var(--text-xs);margin:0}.cardpage-preview{padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg);font-size:var(--text-lg);word-break:break-word;cursor:text}.review-speak,.review-edit{top:var(--space-2);border:1px solid var(--border);border-radius:var(--radius-full);background:var(--bg);width:2rem;height:2rem;color:var(--text-muted);z-index:2;place-items:center;display:grid;position:absolute}.review-speak{left:var(--space-2)}.review-edit{right:var(--space-2)}@media (hover:hover){.review-speak:hover,.review-edit:hover{color:var(--primary);border-color:var(--primary)}}.review-speak.speaking{color:var(--primary);border-color:var(--primary);background:var(--primary-soft)}.setplayer{margin:var(--space-3) 0 var(--space-4)}.setplayer-controls{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.setplayer-now{margin:var(--space-2) 0 0;color:var(--text-muted);font-size:.85rem}.setplayer-voicebtn{padding-block:.35rem}.setplayer-voices{margin-top:var(--space-3);padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);gap:var(--space-3);flex-wrap:wrap;align-items:center;display:flex}.setplayer-voice{align-items:center;gap:var(--space-2);display:flex}.setplayer-voice .sel{flex:1;max-width:14rem}.setplayer-hint{font-size:var(--text-xs);color:var(--text-subtle);flex-basis:100%;margin:0}.practice-title{font-size:var(--text-lg);margin:0 0 var(--space-4)}.practice-settings{margin-bottom:var(--space-4)}.practice-projectrow{align-items:center;gap:var(--space-2);margin-bottom:var(--space-4);display:flex}.practice-project{align-items:center;gap:var(--space-2);flex:1;min-width:0;display:flex}.practice-gear{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg);width:2.25rem;height:2.25rem;color:var(--text-muted);flex:none;place-items:center;display:grid;position:relative}@media (hover:hover){.practice-gear:hover{border-color:var(--border-strong);color:var(--text)}}.practice-gear.alert:after{content:"";border-radius:var(--radius-full);background:var(--primary);width:6px;height:6px;position:absolute;top:5px;right:5px}.practice-projectrow:has(.practice-bubble){margin-bottom:calc(var(--space-4) + 2.4rem)}.practice-gearwrap{flex:none;position:relative}.practice-bubble{z-index:5;border:1px dashed color-mix(in srgb, var(--primary) 45%, transparent);border-radius:var(--radius-md);background:var(--primary-soft);color:var(--primary-hover);font-size:var(--text-xs);white-space:nowrap;padding:.4rem .7rem;font-weight:600;position:absolute;top:calc(100% + 9px);right:0}.practice-bubble:before,.practice-bubble:after{content:"";border-style:solid;border-color:transparent transparent color-mix(in srgb, var(--primary) 45%, transparent) transparent;position:absolute}.practice-bubble:before{border-width:0 6px 6px;top:-6px;right:calc(1.125rem - 6px)}.practice-bubble:after{border-width:0 5px 5px;border-bottom-color:var(--primary-soft);top:-5px;right:calc(1.125rem - 5px)}.btn-primary.muted{border:1px solid var(--border-strong);color:var(--text-muted);box-shadow:none;background:0 0}@media (hover:hover){.btn-primary.muted:hover:not(:disabled){background:var(--surface-2);color:var(--text)}}.langgroup+.langgroup{margin-top:var(--space-4)}.langgroup-head{align-items:center;gap:var(--space-2);display:flex}.langgroup-label{min-width:2.5rem;font-size:var(--text-sm);font-weight:600}.langgroup-head .sel{flex:1;min-width:0}.langgroup-sub{margin:var(--space-2) 0 0 calc(2.5rem + var(--space-2));padding-left:var(--space-3);border-left:2px solid var(--border)}.langgroup-sub .setplayer-voice{align-items:center;gap:var(--space-2);margin:0;display:flex}.langgroup-sub .setplayer-voice .sel{flex:1;min-width:0;max-width:none}.voicegroup{margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--border)}.voicegroup-head{margin-bottom:var(--space-2);font-size:var(--text-sm);font-weight:600}.voicegroup .setplayer-voice{align-items:center;gap:var(--space-2);margin:0 0 var(--space-2);display:flex}.voicegroup .setplayer-voice .field-label{min-width:4rem}.voicegroup .setplayer-voice .sel{flex:1;min-width:0;max-width:none}.voice-try{border:1px solid var(--border-strong);border-radius:var(--radius-md);background:var(--bg);width:2rem;height:2rem;color:var(--text-muted);cursor:pointer;flex:none;justify-content:center;align-items:center;font-size:.7rem;line-height:1;display:inline-flex}@media (hover:hover){.voice-try:hover{color:var(--primary);border-color:var(--primary)}}.voice-try.speaking{color:var(--primary);border-color:var(--primary);background:var(--primary-soft)}.practice-stickybar{z-index:9;background:color-mix(in srgb, var(--bg) 92%, transparent);-webkit-backdrop-filter:saturate(180%)blur(8px);backdrop-filter:saturate(180%)blur(8px);border-bottom:1px solid var(--border);position:fixed;left:0;right:0}.practice-stickybar-inner{align-items:center;gap:var(--space-3);padding:var(--space-2) 1rem;flex-wrap:wrap;display:flex}.seg-sm button{font-size:var(--text-xs);padding:.25rem .55rem}.practice-card-title{font-size:var(--text-sm);margin:0;font-weight:600}.practice-line{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.practice-line+.practice-line{margin-top:var(--space-3)}.practice-line-label{font-size:var(--text-sm);color:var(--text-muted);flex:0 0 3rem}.practice-langsel{min-width:7rem}.practice-play{margin-top:var(--space-4)}.practice-play-head{justify-content:space-between;align-items:center;gap:var(--space-3);margin-bottom:var(--space-3);display:flex}.practice-setlist{margin-top:0}.practice-setrow{justify-content:space-between;align-items:center;gap:var(--space-3);cursor:default;flex-direction:row;display:flex}.practice-setrow .set-name{text-align:left;flex:auto}.practice-setrow .set-listen{flex:none}.modal-backdrop{padding:var(--space-4);z-index:50;background:#0009;place-items:center;display:grid;position:fixed;inset:0}.modal{width:100%;max-width:24rem;max-height:90vh;padding:var(--space-5);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-md);overflow-y:auto}.modal h3{margin:0 0 var(--space-2)}.modal-head{justify-content:space-between;align-items:flex-start;gap:var(--space-3);display:flex}.modal-head-bare{margin-bottom:calc(-1 * var(--space-2));justify-content:flex-end}.modal-close{border-radius:var(--radius-full);width:1.75rem;height:1.75rem;color:var(--text-subtle);background:0 0;border:none;flex-shrink:0;place-items:center;margin:-.25rem -.25rem 0 0;font-size:.875rem;line-height:1;display:grid}@media (hover:hover){.modal-close:hover{background:var(--surface-2);color:var(--text)}}.modal p{margin:0 0 var(--space-4);color:var(--text-muted);font-size:var(--text-sm)}.modal-actions{justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-5);display:flex}@media (width<=560px){.cardedit-fields{flex-direction:column}}.placeholder{text-align:center;color:var(--text-muted);padding:2rem 1rem}.placeholder h2{color:var(--text);margin:0 0 .25rem}.placeholder-note{margin:0;font-size:.875rem}.placeholder-params{background:var(--surface);text-align:left;border-radius:8px;flex-direction:column;gap:.25rem;margin:1rem 0 0;padding:.75rem 1rem;font-size:.8125rem;display:inline-flex}.placeholder-params>div{gap:.5rem;display:flex}.placeholder-params dt{color:var(--text-muted);font-family:ui-monospace,monospace}.placeholder-params dd{color:var(--text);margin:0;font-family:ui-monospace,monospace}.print-title{margin:0 0 var(--space-4);font-size:1.25rem}.print-row{align-items:center;gap:var(--space-2);margin-bottom:var(--space-3);flex-wrap:wrap;min-width:0;display:flex}.print-label{min-width:4.5rem;color:var(--text-muted);white-space:nowrap;flex:none;font-size:.875rem}.print-threshold{min-width:4rem;color:var(--text);flex:none;font-size:.875rem}.print-chips{gap:var(--space-2);display:flex}.print-select{flex:12rem;min-width:0;max-width:24rem}.print-slider,.wizard-range{appearance:none;border-radius:var(--radius-full);background:var(--surface-2);cursor:pointer;height:6px}.print-slider{flex:1;min-width:8rem;max-width:20rem}.wizard-range{width:100%}.print-slider::-webkit-slider-thumb{appearance:none;background:var(--primary);width:18px;height:18px;box-shadow:none;border:none;border-radius:50%}.wizard-range::-webkit-slider-thumb{appearance:none;background:var(--primary);width:18px;height:18px;box-shadow:none;border:none;border-radius:50%}.print-slider::-moz-range-thumb{background:var(--primary);border:none;border-radius:50%;width:18px;height:18px}.wizard-range::-moz-range-thumb{background:var(--primary);border:none;border-radius:50%;width:18px;height:18px}.print-slider::-moz-range-track{border-radius:var(--radius-full);background:var(--surface-2);height:6px}.wizard-range::-moz-range-track{border-radius:var(--radius-full);background:var(--surface-2);height:6px}.print-board{margin-top:var(--space-4);border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden}.print-board-bar{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap;display:flex}.print-board-all{align-items:center;gap:var(--space-1);color:var(--text-muted);cursor:pointer;white-space:nowrap;font-size:.875rem;display:inline-flex}.print-board-count{color:var(--text-muted);white-space:nowrap;font-size:.875rem}.print-board-count strong{color:var(--primary)}.print-board-right{align-items:center;gap:var(--space-3);margin-left:auto;display:inline-flex}.print-board-pages{color:var(--text-muted);white-space:nowrap;font-size:.875rem}.print-board-pages strong{color:var(--text)}.print-board-print{padding:var(--space-2) var(--space-3);font-size:.875rem}.print-search-input{min-width:8rem;max-width:20rem;padding:var(--space-2) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg);color:var(--text);flex:1;font-size:.875rem}.print-search-input:focus{border-color:var(--primary);box-shadow:var(--focus-ring);outline:none}.print-search-hint{color:var(--text-muted);white-space:nowrap;font-size:.8125rem}.print-board-empty{padding:var(--space-5);text-align:center;color:var(--text-muted)}.print-board-scroll{max-height:24rem;overflow-y:auto}.print-board-table{border-collapse:collapse;width:100%;font-size:.875rem}.print-board-table thead th{z-index:1;padding:var(--space-2) var(--space-3);text-align:left;color:var(--text-muted);background:var(--surface-2);border-bottom:1px solid var(--border);font-weight:600;position:sticky;top:0}.print-board-table td{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border);vertical-align:middle}.print-board-table tbody tr:last-child td{border-bottom:none}.print-board-table .col-check{text-align:center;width:2.5rem}.print-board-table .col-wrong{text-align:center;width:3.5rem}.print-board-table .col-term{color:var(--text);font-weight:500}.print-board-table .col-meaning{color:var(--text-muted)}.wrong-badge{border-radius:var(--radius-full);background:var(--danger-soft);min-width:1.5rem;color:var(--danger);padding:.0625rem .375rem;font-size:.75rem;font-weight:600;display:inline-block}.wrong-zero{color:var(--text-subtle)}.print-paper{margin:var(--space-5) auto;padding:var(--paper-margin-y) var(--paper-margin-x);color:#111;border:1px solid var(--border-strong);border-radius:var(--radius-sm);width:210mm;max-width:100%;height:297mm;box-shadow:var(--shadow-md);background:#fff;flex-direction:column;display:flex;overflow:hidden}.print-paper-head{justify-content:space-between;align-items:baseline;gap:var(--space-3);padding-bottom:var(--space-2);margin-bottom:var(--space-4);border-bottom:1px solid #999;font-size:.875rem;display:flex}.print-items{flex-direction:column;flex:1;min-height:0;margin:0;padding-left:1.75rem;display:flex}.print-item{flex:0 0 calc(100% / var(--per-page,14));break-inside:avoid;flex-direction:column;min-height:0;display:flex}.print-item-meaning{font-size:.95rem;line-height:1.35}.print-item-blank{border-bottom:1px solid #333;flex:1;min-height:5mm;margin-bottom:2mm}@media print{@page{size:A4;margin:15mm 14mm}body{background:#fff}.print-config,.shell-header{display:none!important}.shell-main{padding:0}.print-paper{width:auto;max-width:none;height:267mm;box-shadow:none;break-after:page;border:none;border-radius:0;margin:0;padding:0}.print-paper:last-child{break-after:auto}}.print-pick-actions{gap:var(--space-2);margin-top:var(--space-3);display:flex}.review-tally{margin-bottom:var(--space-2);justify-content:space-between;align-items:center;display:flex}.tally{border-radius:var(--radius-full);font-size:var(--text-xs);padding:.125rem .5rem;font-weight:600}.tally-unknown{background:var(--danger-soft);color:var(--danger)}.tally-known{background:var(--primary-soft);color:var(--primary)}.hl-toolbar{touch-action:manipulation;-webkit-user-select:none;user-select:none}.projects{gap:var(--space-4);flex-direction:column;display:flex}.projects-head{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.projects-title{font-size:var(--text-lg,1.125rem);margin:0}.projects-head .btn-primary{text-decoration:none}.project-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.project-row{align-items:center;gap:var(--space-2);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);padding:var(--space-2) var(--space-3);display:flex}.project-open{justify-content:space-between;align-items:baseline;gap:var(--space-3);padding:var(--space-2) 0;cursor:pointer;text-align:left;color:var(--text);font:inherit;background:0 0;border:none;flex:auto;display:flex}.project-name{font-weight:600}.project-count{color:var(--text-muted);font-size:var(--text-sm);flex:none}.project-name-input{min-width:0;padding:var(--space-2);border:1px solid var(--border-strong);border-radius:var(--radius-sm);font:inherit;background:var(--bg);color:var(--text);flex:auto}.project-row-actions{align-items:center;gap:var(--space-1);flex:none;display:flex;position:relative}.sets-projects{gap:var(--space-2);flex-wrap:wrap;display:flex}.set-project{color:var(--primary-hover);font-weight:600}.btn-ghost.active{background:var(--primary-soft);border-color:var(--primary);color:var(--primary-hover)}.set-check{width:1.1rem;height:1.1rem;accent-color:var(--primary);cursor:pointer;flex:none}.set-row.selected{border-color:var(--primary);background:var(--primary-soft)}.sets-selectall{align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-1) 0;color:var(--text-muted);font-size:var(--text-sm);cursor:pointer;display:flex}.sets-movebar{bottom:var(--space-2);align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border:1px solid var(--border-strong);border-radius:var(--radius-md);background:color-mix(in srgb, var(--text) 7%, var(--bg));box-shadow:var(--shadow-md);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);flex-wrap:wrap;display:flex;position:sticky}.sets-movebar-count{font-weight:700}.sets-movebar-select,.sets-projectfilter{align-items:center;gap:var(--space-2);display:flex}.sets-listhead{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.sets-sort{align-items:center;gap:var(--space-2);margin-left:auto;display:flex}.sets-movebar-select .sel,.setedit-project .sel,.sets-projectfilter .sel,.sets-sort .sel,.practice-project .sel{flex:1;min-width:0;max-width:20rem}.setedit-project{align-items:center;gap:var(--space-2);display:flex}.wizard{border:1px solid var(--border);background:var(--surface);border-radius:var(--radius-lg);padding:var(--space-4);margin-bottom:var(--space-5);gap:var(--space-4);flex-direction:column;display:flex}.wizard-title{font-size:var(--text-lg);margin:0}.wizard-sub{margin:calc(-1 * var(--space-3)) 0 0;color:var(--text-muted);font-size:var(--text-sm)}.wizard-q{gap:var(--space-2);flex-direction:column;display:flex}.wizard-days{gap:var(--space-2);justify-content:flex-start;display:flex}.wizard-day{aspect-ratio:1;border-radius:var(--radius-full);border:1px solid var(--border-strong);background:var(--bg);min-width:0;max-width:2.6rem;color:var(--text-subtle);font-size:var(--text-sm);cursor:pointer;flex:1}.wizard-day.on{border-color:var(--primary);background:var(--primary-soft);color:var(--primary-hover);font-weight:600}.wizard-opts{gap:var(--space-2);flex-wrap:wrap;display:flex}.wizard-opt{min-width:5.5rem;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);border:1px solid var(--border-strong);background:var(--bg);color:var(--text);cursor:pointer;flex-direction:column;flex:1 1 0;align-items:center;gap:2px;display:flex}.wizard-opt.on{border-color:var(--primary);background:var(--primary-soft);color:var(--primary-hover);font-weight:600}.wizard-opt-hint{color:var(--text-subtle);font-size:var(--text-xs);font-weight:400}.wizard-opt.on .wizard-opt-hint{color:var(--primary-hover)}.wizard-sublabel{margin-top:var(--space-2)}.wizard-day:disabled{opacity:.35;cursor:not-allowed}.wizard-warns{gap:var(--space-2);margin-top:var(--space-3);flex-direction:column;display:flex}.wizard-warn-card{border-radius:var(--radius-md);border-left:3px solid var(--border);background:var(--surface-subtle,var(--primary-soft));padding:var(--space-2) var(--space-3)}.wizard-warn-block{border-left-color:var(--status-overdue)}.wizard-warn-warn{border-left-color:#d97706}.wizard-warn-info{border-left-color:var(--primary)}.wizard-warn-title{font-size:var(--text-sm);margin:0;font-weight:600}.wizard-warn-detail{margin:var(--space-1) 0 0;font-size:var(--text-xs);color:var(--text-subtle)}.wizard-warn-actions{gap:var(--space-2);margin-top:var(--space-2);flex-wrap:wrap;display:flex}.wizard-warn-actions .btn-ghost{font-size:var(--text-xs);padding:2px var(--space-2)}.wizard-warn-more{color:var(--text-subtle);font-size:var(--text-xs);cursor:pointer;background:0 0;border:0;align-self:flex-start;padding:0;text-decoration:underline}.wizard-preview{border-radius:var(--radius-md);background:var(--primary-soft);padding:var(--space-3);text-align:center}.wizard-chart{margin:var(--space-3) 0 0}.wizard-chart-body{align-items:stretch;gap:var(--space-2);display:flex}.wizard-chart-yaxis{color:var(--text-subtle);flex-direction:column;justify-content:space-between;align-items:flex-end;min-width:1.1rem;font-size:10px;line-height:1;display:flex}.wizard-chart-plot{background:var(--bg);border-left:1px solid var(--border);border-bottom:1px solid var(--border);flex:1;position:relative}:root{--chart-reg:217, 119, 6}:root[data-theme=dark]{--chart-reg:245, 176, 65}.wizard-chart-reg{background:rgba(var(--chart-reg), .13);border-right:1px dashed rgba(var(--chart-reg), .65);height:100%;position:absolute;top:0;left:0}.wizard-chart-plot svg{z-index:1;background:0 0;display:block;position:relative}.wizard-chart-legend{z-index:2;border-radius:var(--radius-sm);background:color-mix(in srgb, var(--bg) 80%, transparent);color:var(--text-muted);pointer-events:none;align-items:center;gap:2px;padding:1px 4px;font-size:10px;line-height:1.2;display:flex;position:absolute;top:3px;right:4px}.wizard-chart-area{fill:color-mix(in srgb, var(--primary) 18%, transparent)}.wizard-chart-line{stroke:var(--primary);stroke-width:1.5px;vector-effect:non-scaling-stroke}.wizard-chart-xrow{gap:var(--space-2);display:flex}.wizard-chart-xspacer{min-width:1.1rem}.wizard-chart-xaxis{height:1rem;color:var(--text-subtle);flex:1;font-size:9px;position:relative}.wizard-chart-xaxis span{white-space:nowrap;position:absolute;top:2px;transform:translate(-50%)}.wizard-chart-regtick{color:rgb(var(--chart-reg));font-weight:600}.wizard-chart-stats{margin:var(--space-2) 0 0;font-size:var(--text-sm);color:var(--text);text-align:center}.wizard-chart-stats strong{color:var(--primary)}.wizard-chart-cap{margin:var(--space-1) 0 0;font-size:var(--text-xs);color:var(--text-muted)}.wizard-chart-swatch{background:rgba(var(--chart-reg), .13);border:1px dashed rgba(var(--chart-reg), .65);vertical-align:-1px;border-radius:2px;width:.7rem;height:.7rem;margin-right:2px;display:inline-block}.wizard-preview-main{font-size:var(--text-base);color:var(--text)}.wizard-preview-main strong{color:var(--primary-hover)}.wizard-preview-sub{margin-top:var(--space-1);font-size:var(--text-xs);color:var(--text-muted)}.project-add-set{padding:var(--space-1) var(--space-2);font-size:var(--text-sm);white-space:nowrap}.print-paper-area.only-print{display:none}@media print{.print-paper-area.only-print{display:block}}.board-head{align-items:center;gap:var(--space-2);display:flex}.board-play.playing{border-color:var(--primary);color:var(--primary);font-weight:600}.print-board-table tr.is-playing{background:var(--primary-soft)}.board-actions{justify-content:flex-end;align-items:center;gap:var(--space-2);margin-top:var(--space-5);margin-bottom:var(--space-2);flex-wrap:wrap;display:flex}.board-actions+.print-board{margin-top:0}.board-modes button{font-size:var(--text-xs);padding:.25rem .5rem}.board-sort{min-width:8.5rem}.board-btn{border:1px solid var(--primary);border-radius:var(--radius-md);background:var(--bg);color:var(--primary);font-size:var(--text-sm);white-space:nowrap;align-items:center;padding:.4375rem .75rem;font-weight:600;display:inline-flex}@media (hover:hover){.board-btn:hover:not(:disabled){background:var(--primary-soft)}}.board-btn:disabled{border-color:var(--border);color:var(--text-subtle);opacity:.7;cursor:default}.board-pages{border-radius:var(--radius-full);background:var(--surface);color:var(--text-muted);font-size:var(--text-xs);font-variant-numeric:tabular-nums;margin-left:.375rem;padding:.0625rem .375rem}.board-play.playing{background:var(--danger);border-color:var(--danger);color:#fff}.print-board-table .col-star{text-align:center;width:2.5rem}.print-board-table .col-star .set-star{padding:0}@media (width<=480px){.print-board-scroll{overflow-x:auto}.print-board-table td,.print-board-table thead th{padding:var(--space-2) var(--space-2)}.print-board-table .col-term,.print-board-table .col-meaning{overflow-wrap:anywhere;word-break:break-word}.print-board-table .col-check{width:2rem}.print-board-table .col-wrong{width:2.75rem;padding-inline:var(--space-1)}.print-board-table .col-star{width:2.25rem;padding-inline:var(--space-1)}}.review-star{top:var(--space-2);left:calc(var(--space-2) + 2.5rem);border:1px solid var(--border);border-radius:var(--radius-full);background:var(--bg);width:2rem;height:2rem;color:var(--text-subtle);z-index:2;place-items:center;display:grid;position:absolute}.review-star.on{color:#eab308;border-color:#eab308}@media (hover:hover){.review-star:hover{color:#eab308;border-color:#eab308}}
