:root{color-scheme:light;--paper: #F7F4EE;--surface: #FFFFFF;--surface-2: #F1EDE5;--ink: #1B1B1F;--ink-2: #4A4844;--muted: #6E6A63;--line: #E4DFD5;--line-2: #D6D0C4;--primary: #1F3864;--primary-ink: #FFFFFF;--primary-soft: #E7ECF5;--accent: #7B2D26;--accent-soft: #F3E6E4;--success: #2F5D50;--success-soft: #E3EEEA;--warn: #B7791F;--warn-soft: #F7EEDC;--danger: #A23B32;--danger-soft: #F6E3E1;--info-bg: #EEF1F6;--info-ink: #3A4A63;--shadow: 0 10px 30px rgba(20, 20, 30, .12);--serif: "Newsreader", "Iowan Old Style", Palatino, Georgia, "Times New Roman", serif;--sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;--mono: ui-monospace, SFMono-Regular, Menlo, monospace;--r-sm: 6px;--r-md: 10px;--r-lg: 14px;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 24px;--s-6: 32px;--s-7: 48px;--max-w: 1040px;--header-h: 56px;--tabbar-h: 60px;--focus: 0 0 0 2px var(--paper), 0 0 0 4px var(--primary)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--paper: #141519;--surface: #1C1E24;--surface-2: #24272F;--ink: #ECE9E2;--ink-2: #C9C5BC;--muted: #9C978E;--line: #2E313A;--line-2: #3A3E49;--primary: #9DB3E6;--primary-ink: #101828;--primary-soft: #232A38;--accent: #D98078;--accent-soft: #33221F;--success: #7FB8A3;--success-soft: #1E2E29;--warn: #E0A94A;--warn-soft: #33291A;--danger: #E07B72;--danger-soft: #35201E;--info-bg: #232A38;--info-ink: #B7C5E6;--shadow: 0 10px 30px rgba(0, 0, 0, .5)}}:root[data-theme=dark]{color-scheme:dark;--paper: #141519;--surface: #1C1E24;--surface-2: #24272F;--ink: #ECE9E2;--ink-2: #C9C5BC;--muted: #9C978E;--line: #2E313A;--line-2: #3A3E49;--primary: #9DB3E6;--primary-ink: #101828;--primary-soft: #232A38;--accent: #D98078;--accent-soft: #33221F;--success: #7FB8A3;--success-soft: #1E2E29;--warn: #E0A94A;--warn-soft: #33291A;--danger: #E07B72;--danger-soft: #35201E;--info-bg: #232A38;--info-ink: #B7C5E6;--shadow: 0 10px 30px rgba(0, 0, 0, .5)}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--paper);color:var(--ink);font:400 .9375rem/1.5 var(--sans);-webkit-font-smoothing:antialiased}h1,h2,h3,h4{margin:0;font-weight:600;line-height:1.25}h1{font-family:var(--serif);font-size:1.75rem;font-weight:500;letter-spacing:-.01em}h2{font-family:var(--serif);font-size:1.375rem;font-weight:500}h3{font-size:1rem}h4{font-size:.75rem;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-weight:600}p{margin:0 0 var(--s-3)}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}img{max-width:100%;display:block}:focus-visible{outline:none;box-shadow:var(--focus);border-radius:var(--r-sm)}[hidden]{display:none!important}.serif{font-family:var(--serif)}.muted{color:var(--muted)}.small{font-size:.8125rem}.tiny{font-size:.75rem}.mono{font-family:var(--mono)}.row{display:flex;align-items:center;gap:var(--s-2);flex-wrap:wrap}.stack{display:flex;flex-direction:column;gap:var(--s-3)}.grow{flex:1}.right{margin-left:auto}.center{text-align:center}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.container{max-width:var(--max-w);margin:0 auto;padding:0 var(--s-4)}.page{padding:var(--s-5) 0 calc(var(--tabbar-h) + var(--s-6))}@media(min-width:800px){.page{padding-bottom:var(--s-7)}}.two-col{display:grid;grid-template-columns:1fr;gap:var(--s-4)}@media(min-width:900px){.two-col{grid-template-columns:2fr 1fr;align-items:start}.two-col>aside{position:sticky;top:calc(var(--header-h) + var(--s-4))}}.grid-2{display:grid;grid-template-columns:1fr;gap:var(--s-3)}@media(min-width:640px){.grid-2{grid-template-columns:1fr 1fr}}.grid-3{display:grid;grid-template-columns:1fr;gap:var(--s-3)}@media(min-width:640px){.grid-3{grid-template-columns:repeat(3,1fr)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);min-height:40px;padding:0 var(--s-4);border-radius:var(--r-sm);border:1px solid var(--line-2);background:var(--surface);color:var(--ink);font-weight:500;font-size:.875rem;white-space:nowrap;text-decoration:none;transition:background .12s,border-color .12s,opacity .12s}.btn:hover{background:var(--surface-2);text-decoration:none}.btn:disabled,.btn[aria-disabled=true]{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--primary);color:var(--primary-ink);border-color:var(--primary)}.btn-primary:hover{background:color-mix(in srgb,var(--primary) 88%,black)}.btn-ghost{background:transparent;border-color:transparent}.btn-ghost:hover{background:var(--surface-2)}.btn-danger{color:var(--danger);border-color:var(--danger);background:transparent}.btn-danger:hover{background:var(--danger-soft)}.btn-sm{min-height:32px;padding:0 var(--s-3);font-size:.8125rem}.btn-block{width:100%}.btn .spinner{width:14px;height:14px;border-width:2px}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:0 12px;border-radius:999px;border:1px solid var(--line-2);background:var(--surface);font-size:.8125rem;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.chip:hover{border-color:var(--accent)}.chip .n{opacity:.55;font-size:.7rem}.chip[aria-pressed=true]{background:var(--primary);color:var(--primary-ink);border-color:var(--primary)}.chip.chip-theme[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#fff}.tag{display:inline-block;padding:1px 8px;border-radius:999px;font-size:.7rem;line-height:1.6;background:var(--surface-2);color:var(--ink-2);white-space:nowrap}.tag-theme{background:var(--accent-soft);color:var(--accent)}.tag-device{background:var(--info-bg);color:var(--info-ink)}.tag-success{background:var(--success-soft);color:var(--success)}.tag-warn{background:var(--warn-soft);color:var(--warn)}.tag-danger{background:var(--danger-soft);color:var(--danger)}.tag-primary{background:var(--primary-soft);color:var(--primary)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--s-4)}.card-pad-lg{padding:var(--s-5)}.card-title{font-size:.75rem;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-weight:600;margin-bottom:var(--s-3)}.card-link{display:block;color:inherit;transition:border-color .12s}.card-link:hover{border-color:var(--primary);text-decoration:none}.quote{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--primary);border-radius:var(--r-md);padding:var(--s-3) var(--s-4)}.quote.is-known{border-left-color:var(--success);opacity:.6}.quote-text{font-family:var(--serif);font-size:1.125rem;line-height:1.35;margin-bottom:6px}.quote-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:.75rem;color:var(--muted)}.quote-speaker{font-weight:600;color:var(--accent)}.quote-analysis{font-size:.875rem;color:var(--ink-2);border-top:1px dashed var(--line);padding-top:8px;margin-top:8px}.quote-foot{display:flex;align-items:center;gap:var(--s-2);margin-top:8px;font-size:.75rem;color:var(--muted)}.quote-display{font-family:var(--serif);font-size:1.5rem;line-height:1.4;text-align:center;margin:var(--s-3) 0 var(--s-4)}@media(min-width:640px){.quote-display{font-size:1.75rem}}.unit-heading{font-size:.75rem;font-weight:700;color:var(--muted);letter-spacing:.07em;text-transform:uppercase;margin:var(--s-5) 0 var(--s-2)}.strength{display:inline-flex;gap:3px;vertical-align:middle}.strength i{width:7px;height:7px;border-radius:50%;background:var(--line-2)}.strength[data-level=learning] i:nth-child(1){background:var(--warn)}.strength[data-level=familiar] i:nth-child(-n+2){background:var(--primary)}.strength[data-level=strong] i{background:var(--success)}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:var(--s-4)}.field>label{font-size:.8125rem;font-weight:500;color:var(--ink-2)}.field .hint{font-size:.75rem;color:var(--muted)}.field .error{font-size:.75rem;color:var(--danger)}.input,.textarea,.select{width:100%;min-height:40px;padding:8px 12px;border:1px solid var(--line-2);border-radius:var(--r-sm);background:var(--surface);color:var(--ink)}.input:focus,.textarea:focus,.select:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft);outline:none}.textarea{min-height:120px;resize:vertical;line-height:1.55}.input[aria-invalid=true],.textarea[aria-invalid=true]{border-color:var(--danger)}.search{flex:1;min-width:180px}.form-error{color:var(--danger);font-size:.8125rem;min-height:1.2em}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:var(--s-4);overflow-x:auto}.tab{padding:10px 14px;border:0;background:none;color:var(--muted);font-weight:500;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}.tab[aria-selected=true]{color:var(--ink);border-bottom-color:var(--primary)}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--s-3);flex-wrap:wrap;margin-bottom:var(--s-5)}.page-header .sub{color:var(--muted);margin:4px 0 0}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:var(--s-3)}.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--s-3) var(--s-4)}.stat b{display:block;font-family:var(--serif);font-size:1.75rem;font-weight:500;color:var(--primary);line-height:1.1}.stat span{font-size:.75rem;color:var(--muted)}.bar{display:flex;align-items:center;gap:var(--s-2);font-size:.8125rem}.bar .label{flex:1 1 160px;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar .track{flex:3 1 120px;height:8px;border-radius:4px;background:var(--surface-2);overflow:hidden}.bar .fill{height:100%;background:var(--success);border-radius:4px;transition:width .3s}.bar .val{flex:0 0 40px;text-align:right;color:var(--muted);font-variant-numeric:tabular-nums}@media(max-width:480px){.bar .label{flex-basis:110px;max-width:150px}}.rate{display:flex;gap:var(--s-2);justify-content:center;flex-wrap:wrap}.rate .btn{min-width:100px}.rate-got{color:var(--success);border-color:var(--success)}.rate-got:hover{background:var(--success-soft)}.rate-partly{color:var(--warn);border-color:var(--warn)}.rate-partly:hover{background:var(--warn-soft)}.rate-missed{color:var(--danger);border-color:var(--danger)}.rate-missed:hover{background:var(--danger-soft)}.compare{display:grid;grid-template-columns:1fr;gap:var(--s-3)}@media(min-width:720px){.compare{grid-template-columns:1fr 1fr}}.panel{background:var(--surface-2);border-radius:var(--r-md);padding:var(--s-4);font-size:.9375rem;line-height:1.55}.panel h4{margin-bottom:var(--s-2)}.flash{perspective:1200px}.flash-inner{position:relative;min-height:220px;transition:transform .45s;transform-style:preserve-3d}.flash.is-flipped .flash-inner{transform:rotateY(180deg)}.flash-face{position:absolute;inset:0;backface-visibility:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--s-5);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg)}.flash-back{transform:rotateY(180deg)}.cloze{font-family:var(--serif);font-size:1.375rem;line-height:1.9;text-align:center}.cloze input{font:inherit;font-size:1.125rem;width:8ch;min-width:6ch;padding:0 6px;border:0;border-bottom:2px solid var(--primary);background:transparent;text-align:center;color:var(--ink)}.cloze input:focus{outline:none;border-bottom-color:var(--accent)}.cloze input.ok{border-bottom-color:var(--success);color:var(--success)}.cloze input.bad{border-bottom-color:var(--danger);color:var(--danger)}.overlay{position:fixed;inset:0;background:#0a0a0f73;display:flex;align-items:center;justify-content:center;padding:var(--s-4);z-index:50}.modal{background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow);width:100%;max-width:480px;max-height:90vh;overflow:auto;padding:var(--s-5)}.modal h2{margin-bottom:var(--s-3)}.modal-actions{display:flex;gap:var(--s-2);justify-content:flex-end;margin-top:var(--s-4);flex-wrap:wrap}@media(max-width:640px){.overlay.sheet{align-items:flex-end;padding:0}.overlay.sheet .modal{border-radius:var(--r-lg) var(--r-lg) 0 0;max-width:none;padding-bottom:calc(var(--s-5) + env(safe-area-inset-bottom))}}.toasts{position:fixed;left:50%;bottom:calc(var(--tabbar-h) + var(--s-3));transform:translate(-50%);display:flex;flex-direction:column;gap:var(--s-2);z-index:60;width:min(92vw,420px)}@media(min-width:800px){.toasts{bottom:var(--s-5)}}.toast{background:var(--ink);color:var(--paper);padding:10px 14px;border-radius:var(--r-md);box-shadow:var(--shadow);font-size:.875rem}.toast-danger{background:var(--danger);color:#fff}.toast-success{background:var(--success);color:#fff}.empty{text-align:center;padding:var(--s-6) var(--s-4);color:var(--muted)}.empty h3{color:var(--ink);margin-bottom:var(--s-2)}.spinner{width:22px;height:22px;border:3px solid var(--line-2);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.loading{display:flex;justify-content:center;padding:var(--s-6)}.kbd{font-family:var(--mono);font-size:.75rem;padding:1px 6px;border:1px solid var(--line-2);border-bottom-width:2px;border-radius:4px;background:var(--surface-2)}.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface)}table.table{width:100%;border-collapse:collapse;font-size:.875rem}.table th,.table td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap}.table th{font-size:.7rem;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-weight:600}.table tr:last-child td{border-bottom:0}.table tr.click{cursor:pointer}.table tr.click:hover{background:var(--surface-2)}.code{font-family:var(--mono);font-size:1.25rem;letter-spacing:.12em;padding:10px 16px;background:var(--surface-2);border-radius:var(--r-sm);display:inline-block;-webkit-user-select:all;user-select:all}.callout{border-left:3px solid var(--primary);background:var(--primary-soft);padding:var(--s-3) var(--s-4);border-radius:0 var(--r-sm) var(--r-sm) 0;font-size:.875rem}.callout-warn{border-left-color:var(--warn);background:var(--warn-soft)}.shell-header{position:sticky;top:0;z-index:40;height:var(--header-h);background:color-mix(in srgb,var(--paper) 88%,transparent);-webkit-backdrop-filter:saturate(1.4) blur(10px);backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--line)}.shell-header .container{height:100%;display:flex;align-items:center;gap:var(--s-4)}.wordmark{font-family:var(--serif);font-weight:600;font-size:1.25rem;color:var(--ink);letter-spacing:-.01em;display:inline-flex;align-items:center;gap:8px}.wordmark:hover{text-decoration:none}.wordmark .mark{width:24px;height:24px;border-radius:6px;background:var(--primary);color:var(--primary-ink);display:inline-flex;align-items:center;justify-content:center;font-family:var(--serif);font-size:18px;line-height:1;padding-top:6px}.nav{display:none;gap:2px}@media(min-width:800px){.nav{display:flex}}.nav a{padding:6px 10px;border-radius:var(--r-sm);color:var(--ink-2);font-size:.875rem;font-weight:500}.nav a:hover{background:var(--surface-2);text-decoration:none}.nav a[aria-current=page]{background:var(--primary-soft);color:var(--primary)}.avatar{width:32px;height:32px;border-radius:50%;background:var(--accent);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:600;font-size:.8125rem;border:0}.menu{position:absolute;right:0;top:calc(100% + 6px);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow);min-width:200px;padding:6px;z-index:45}.menu a,.menu button{display:block;width:100%;text-align:left;padding:8px 10px;border-radius:var(--r-sm);border:0;background:none;color:var(--ink);font-size:.875rem}.menu a:hover,.menu button:hover{background:var(--surface-2);text-decoration:none}.menu .who{padding:8px 10px 6px;font-size:.75rem;color:var(--muted);border-bottom:1px solid var(--line);margin-bottom:4px}.tabbar{position:fixed;left:0;right:0;bottom:0;height:calc(var(--tabbar-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--surface);border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(5,1fr);z-index:40}@media(min-width:800px){.tabbar{display:none}}.tabbar a,.tabbar button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--muted);font-size:.65rem;font-weight:500;border:0;background:none;text-decoration:none}.tabbar a[aria-current=page]{color:var(--primary)}.tabbar svg{width:22px;height:22px}
