:root{--bg:#f6f6f4;--surface:#fff;--surface-raised:#fff;--surface-sunken:#ececeb;--surface-inverse:#1c1c1a;--text:#1c1c1a;--muted:#6b6b64;--text-inverse:#fff;--accent:#2f6f4f;--accent-hover:#275c42;--accent-ink:#fff;--border:#dcdcd4;--border-strong:#8b8b83;--success:#2f6f4f;--success-soft:#eaf3ee;--danger:#b23b3b;--danger-soft:#f8ecec;--warning:#8a6d1f;--warning-soft:#f6efdc;--scrim:#1c1c1a59;--radius-sm:.25rem;--radius-md:.4rem;--radius-lg:.5rem;--radius-xl:.6rem;--radius-pill:999px;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-7:2rem;--space-8:3rem;--text-xs:.75rem;--text-sm:.85rem;--text-md:1rem;--text-lg:1.15rem;--text-xl:1.35rem;--text-2xl:1.5rem;--text-3xl:2.2rem;--shadow-sm:0 1px 2px #1c1c1a0f;--shadow-md:0 4px 12px #1c1c1a1a;--transition-fast:.12s ease;--transition:.2s ease;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,sans-serif}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#15161a;--surface:#1d1e23;--surface-raised:#25262c;--surface-sunken:#101116;--surface-inverse:#f6f6f4;--text:#e9e9e4;--muted:#a3a39c;--text-inverse:#15161a;--accent:#5aa87d;--accent-hover:#6bb98d;--accent-ink:#0d1a13;--border:#35363d;--border-strong:#7c7d86;--success:#5aa87d;--success-soft:#16261d;--danger:#e88a85;--danger-soft:#2d1b1b;--warning:#d9b866;--warning-soft:#2a2416;--scrim:#0009;--shadow-sm:0 1px 2px #0006;--shadow-md:0 4px 12px #00000080;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#15161a;--surface:#1d1e23;--surface-raised:#25262c;--surface-sunken:#101116;--surface-inverse:#f6f6f4;--text:#e9e9e4;--muted:#a3a39c;--text-inverse:#15161a;--accent:#5aa87d;--accent-hover:#6bb98d;--accent-ink:#0d1a13;--border:#35363d;--border-strong:#7c7d86;--success:#5aa87d;--success-soft:#16261d;--danger:#e88a85;--danger-soft:#2d1b1b;--warning:#d9b866;--warning-soft:#2a2416;--scrim:#0009;--shadow-sm:0 1px 2px #0006;--shadow-md:0 4px 12px #00000080;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}body{background:var(--bg);margin:0}.centered{min-height:100vh;padding:var(--space-6);place-items:center;display:grid}.page{width:100%;max-width:60rem;padding:var(--space-6);margin:0 auto}.topbar{margin-bottom:var(--space-6);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem 1rem;display:flex}.topbar-title{flex:min(20rem,100%);min-width:0}.topbar h1{margin:0;font-size:1.25rem}.topbar-right{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);width:min(24rem,100%);padding:var(--space-6);flex-direction:column;gap:.4rem;display:flex}.page .card{width:100%}.card h1,.card h2{font-size:var(--text-lg);margin:0 0 .75rem}label{font-size:var(--text-sm);color:var(--muted)}input{font:inherit;border:1px solid var(--border-strong);border-radius:var(--radius-md);background:var(--surface);margin-bottom:var(--space-2);padding:.55rem .7rem}input:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}button{font:inherit;border:1px solid var(--border-strong);border-radius:var(--radius-md);color:var(--text);cursor:pointer;white-space:nowrap;background:0 0;padding:.55rem .9rem}button:hover:not(:disabled){border-color:var(--muted)}button:disabled{opacity:.6;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}button.primary:hover:not(:disabled){border-color:var(--accent)}button.secondary{color:var(--text);border-color:var(--border-strong);background:0 0}button.ghost{color:var(--muted);background:0 0;border-color:#0000}button.ghost:hover:not(:disabled){border-color:var(--border);color:var(--text)}.hint{font-size:var(--text-sm);color:var(--muted);margin:.3rem 0 0}.error{font-size:var(--text-sm);color:var(--danger);margin:.3rem 0}a{color:var(--accent)}.page section{margin-bottom:var(--space-7)}.page h2{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 .6rem;font-size:.8rem}.new-course{gap:var(--space-2);margin-bottom:var(--space-7);flex-wrap:wrap;display:flex}.new-course input{flex:12rem;min-width:0;margin-bottom:0}.course-list{gap:var(--space-2);margin:0;padding:0;list-style:none;display:grid}.course-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:.85rem 1rem}.course-title{font-weight:600;text-decoration:none}.course-title:hover{text-decoration:underline}.editor{max-width:68rem}.back{font-size:var(--text-sm);margin-bottom:var(--space-1);text-decoration:none;display:inline-block}.title-input{font-size:var(--text-xl);background:0 0;border-color:#0000;width:min(28rem,60vw);margin:0 0 0 -.4rem;padding:.2rem .4rem;font-weight:600;display:block}.title-input:hover{border-color:var(--border)}.save-status{color:var(--muted);white-space:nowrap;font-size:.8rem}.save-saving,.save-dirty{color:var(--muted)}.save-error{color:var(--danger)}.keys{margin:0 0 .75rem}kbd{font:inherit;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);border-bottom-width:2px;padding:0 .3rem;font-size:.78rem}.grid{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);overflow:hidden}.grid-head,.grid-row{grid-template-columns:1fr 1fr 11rem 6rem 2.25rem;align-items:center;display:grid}.grid-head{z-index:1;background:var(--bg);border-bottom:1px solid var(--border);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--muted);position:sticky;top:0}.grid-head>*{padding:.5rem .7rem}.grid-row+.grid-row,.grid-row{border-top:1px solid var(--border)}.grid-row:first-of-type{border-top:none}.cell{font:inherit;background:0 0;border:none;border-radius:0;min-width:0;margin:0;padding:.5rem .7rem}input.cell:focus{outline:2px solid var(--accent);outline-offset:-2px;background:var(--surface)}.media-cell{border-left:1px solid var(--border);align-items:center;gap:.3rem;min-height:2.4rem;padding:.3rem .4rem;display:flex}.media-cell.drop-over{outline:2px dashed var(--accent);outline-offset:-3px}.mini{font-size:var(--text-xs);border-radius:var(--radius-sm);white-space:nowrap;color:var(--muted);background:0 0;border-color:#0000;padding:.25rem .45rem}.mini:hover:not(:disabled){border-color:var(--border);color:var(--text)}.mini.ghost{color:var(--muted);background:0 0;padding:.1rem .25rem;font-size:.95rem}.mini.ghost:hover{color:var(--danger)}.mini.danger{background:var(--danger);border-color:var(--danger);color:var(--accent-ink)}.audio-player{max-width:8.5rem;height:1.75rem}.thumb{object-fit:cover;border-radius:var(--radius-sm);border:1px solid var(--border);width:2.75rem;height:2rem}.media-error{color:var(--danger);font-size:.7rem}.row-delete{color:var(--muted);opacity:0;background:0 0;border:none;border-radius:0;padding:0;font-size:1.1rem;line-height:1}.grid-row:hover .row-delete,.row-delete:focus-visible{opacity:1}.row-delete:hover{color:var(--danger)}.grid-actions{align-items:center;gap:var(--space-3);margin-top:var(--space-3);display:flex}.grid-actions .hint{margin:0}.modal-backdrop{background:var(--scrim);padding:var(--space-6);z-index:10;place-items:center;display:grid;position:fixed;inset:0}.modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);padding:var(--space-6);width:min(38rem,100%);max-height:88vh;overflow-y:auto}.modal h2{font-size:var(--text-lg);margin:0 0 .35rem}.import-text{font:inherit;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:var(--text-sm);border:1px solid var(--border-strong);border-radius:var(--radius-md);resize:vertical;width:100%;margin:.5rem 0 .75rem;padding:.6rem .7rem}.separators{align-items:center;gap:var(--space-3);border:none;flex-wrap:wrap;margin:0 0 .75rem;padding:0;display:flex}.separators legend{margin-bottom:.35rem;padding:0}.sep{font-size:var(--text-sm);color:var(--text);cursor:pointer;align-items:center;gap:.3rem;display:flex}.custom-sep{width:5rem;margin:0;padding:.25rem .4rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8rem}.preview{border:1px solid var(--border);border-radius:var(--radius-md);margin-bottom:var(--space-4);overflow:hidden}.preview-head,.preview-row{gap:var(--space-2);font-size:var(--text-sm);grid-template-columns:1fr 1fr;padding:.35rem .6rem;display:grid}.preview-head{background:var(--bg);border-bottom:1px solid var(--border);text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-size:.72rem}.preview-row+.preview-row{border-top:1px solid var(--border)}.preview-row span{overflow-wrap:anywhere}.preview .hint{margin:0;padding:.35rem .6rem}.hint.warn{color:var(--warning)}.modal-actions{justify-content:flex-end;gap:var(--space-2);display:flex}.button-link{font:inherit;border:1px solid var(--border-strong);border-radius:var(--radius-md);color:var(--text);white-space:nowrap;background:0 0;padding:.55rem .9rem;text-decoration:none;display:inline-block}.button-link:hover{border-color:var(--muted)}.button-link.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.button-link.secondary{color:var(--text);border-color:var(--border-strong);background:0 0}.button-link.disabled{opacity:.45;pointer-events:none}.badge{text-transform:uppercase;letter-spacing:.06em;border-radius:var(--radius-sm);background:var(--accent);color:var(--accent-ink);padding:.15rem .4rem;font-size:.7rem;display:inline-block}.course-card{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem 1rem;display:flex}.course-card>div{flex:12rem;min-width:0}.stats{gap:var(--space-2);grid-template-columns:repeat(4,1fr);margin:0 0 1.5rem;padding:0;list-style:none;display:grid}@media (width<=34rem){.stats{grid-template-columns:repeat(2,1fr)}}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);min-width:6rem;padding:.6rem 1rem}.stat-value{font-size:var(--text-2xl);font-weight:600;display:block}.stat-label{color:var(--muted);font-size:.78rem}.detail-row .cell{overflow-wrap:anywhere;padding:.5rem .7rem}.danger-zone{margin-top:var(--space-7)}.link-danger{color:var(--danger);font-size:var(--text-sm);cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.review{max-width:34rem}.review-head{align-items:center;gap:.9rem;margin-bottom:2.5rem;display:flex}.review-head .back{margin:0}.progress{appearance:none;border-radius:var(--radius-pill);background:var(--border);border:0;flex:1;height:.35rem;overflow:hidden}.progress::-webkit-progress-bar{background:var(--border);border-radius:inherit}.progress::-webkit-progress-value{background:var(--accent);border-radius:inherit;transition:width var(--transition)}.progress::-moz-progress-bar{background:var(--accent);border-radius:inherit;transition:width var(--transition)}.cue{text-align:center;margin-bottom:var(--space-7);align-items:center;gap:var(--space-3);flex-direction:column;justify-content:center;min-height:8rem;display:flex}.cue-text{font-size:var(--text-3xl);overflow-wrap:anywhere;margin:0}.cue-image{border-radius:var(--radius-lg);border:1px solid var(--border);max-width:100%;max-height:12rem}.options{gap:var(--space-2);margin:0;padding:0;list-style:none;display:grid}.option{text-align:left;background:var(--surface);width:100%;color:var(--text);border:1px solid var(--border-strong);padding:.7rem .9rem}.option:hover:not(:disabled){border-color:var(--accent)}.option kbd{margin-right:.5rem}.option.chosen{border-color:var(--accent)}.option.right{border-color:var(--accent);background:var(--success-soft)}.option.wrong{border-color:var(--danger);background:var(--danger-soft)}.option:disabled{opacity:1;cursor:default}.typed input{width:100%;font-size:var(--text-lg);margin:0;padding:.7rem .9rem}.verdict{margin-top:var(--space-6);padding-top:var(--space-5);border-top:1px solid var(--border)}.verdict-line{margin:0 0 .75rem;font-size:1.05rem}.verdict.ok .verdict-line strong{color:var(--accent)}.verdict.no .verdict-line strong{color:var(--danger)}.grades{grid-template-columns:repeat(4,1fr);gap:.4rem;display:grid}.grade{background:var(--surface);color:var(--text);border:1px solid var(--border-strong);font-size:var(--text-sm);padding:.5rem .3rem}.grade.suggested{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.grade kbd{width:fit-content;margin:0 auto .2rem;display:block}.summary{text-align:center;width:min(28rem,100%)}.score{margin:.25rem 0;font-size:2.6rem;font-weight:600}.missed{text-align:left;border-top:1px solid var(--border);margin:1.25rem 0 0;padding:0;list-style:none}.missed li{justify-content:space-between;gap:var(--space-4);border-bottom:1px solid var(--border);padding:.45rem 0;font-size:.9rem;display:flex}.summary-actions{gap:var(--space-2);margin-top:var(--space-6);justify-content:center;display:flex}.settings{max-width:34rem}.settings-card{width:100%;margin-bottom:var(--space-4)}.settings-card h2{margin-bottom:var(--space-3)}.settings-card input[type=number]{width:7rem}.settings-card .hint{margin:0 0 1rem}.form-actions{align-items:center;gap:var(--space-3);display:flex}.settings-link{text-decoration:none}.settings-link:hover{text-decoration:underline}.sep.checkbox{margin-top:var(--space-1)}.modal label{margin-top:var(--space-2);display:block}.meter{appearance:none;background:var(--surface-sunken);border-radius:var(--radius-pill);border:0;width:100%;display:block;overflow:hidden}.meter-md{height:.5rem}.meter-sm{height:.3rem}.meter::-webkit-progress-bar{background:var(--surface-sunken);border-radius:inherit}.meter::-webkit-progress-value{background:var(--success);border-radius:inherit;transition:width var(--transition)}.meter::-moz-progress-bar{background:var(--success);border-radius:inherit;transition:width var(--transition)}.course-progress{margin-bottom:var(--space-6)}.course-progress-head{margin-bottom:var(--space-1);justify-content:space-between;display:flex}.detail-row{grid-template-columns:1fr 1fr 5rem 6rem}.detail-row.no-media{grid-template-columns:1fr 1fr 6rem}.course-card-link{min-width:0;color:inherit;flex:12rem;text-decoration:none;display:block}.course-card-link .course-title{display:block}.course-card-link .hint{margin-bottom:var(--space-2);display:block}.course-card-link:hover .course-title{text-decoration:underline}.course-card-action{flex:none}.streak{align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--muted);display:flex}.streak-days{white-space:nowrap}.goal-ring{appearance:none;background:var(--surface-sunken);border-radius:var(--radius-pill);border:0;width:3.5rem;height:.3rem;display:block;overflow:hidden}.goal-ring::-webkit-progress-bar{background:var(--surface-sunken);border-radius:inherit}.goal-ring::-webkit-progress-value{background:var(--muted);border-radius:inherit;transition:width var(--transition)}.goal-ring::-moz-progress-bar{background:var(--muted);border-radius:inherit;transition:width var(--transition)}.goal-ring.met::-webkit-progress-value{background:var(--success)}.goal-ring.met::-moz-progress-bar{background:var(--success)}.goal-count{white-space:nowrap;margin:0}.level-head{align-items:center;gap:var(--space-2);padding:var(--space-2) .7rem;background:var(--bg);border-top:1px solid var(--border);border-bottom:1px solid var(--border);cursor:grab;display:flex}.level-head.drop-over{outline:2px dashed var(--accent);outline-offset:-3px}.level-group:first-child>.level-head{border-top:none}.level-toggle{font-size:var(--text-xs);padding:0 var(--space-1)}.level-name{font:inherit;font-weight:600;font-size:var(--text-sm);background:0 0;border-color:#0000;flex:8rem;min-width:0;margin:0;padding:.15rem .3rem}.level-name:hover,.level-name:focus{border-color:var(--border);background:var(--surface)}.level-count{white-space:nowrap;margin:0}.alt-strip{border-top:1px solid var(--border);padding:.2rem .7rem}.alt-toggle{font-size:var(--text-xs);padding:.1rem var(--space-1)}.alt-editor{align-items:center;gap:var(--space-2);padding:var(--space-2) 0 var(--space-1);flex-wrap:wrap;display:flex}.alt-input{font:inherit;font-size:var(--text-sm);flex:14rem;min-width:0;margin:0;padding:.3rem .5rem}.alt-preview{gap:var(--space-1);flex-wrap:wrap;display:flex}.alt-chip{font-size:var(--text-xs);border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--surface);color:var(--muted);padding:.1rem .4rem}.mem{margin:var(--space-2) 0}.mem-text{text-align:left;background:var(--surface-sunken);width:100%;color:var(--text);font-size:var(--text-sm);padding:var(--space-2) var(--space-3);border-color:#0000;display:block}.mem-text:hover{border-color:var(--border)}.mem-input{width:100%;font-size:var(--text-sm);margin:0}.add-mem{font-size:var(--text-xs);margin-bottom:var(--space-2)}.sort-row{gap:var(--space-2);margin-bottom:var(--space-4);display:flex}.sort-row .mini.chosen{border-color:var(--accent);color:var(--text)}.course-card-link .hint+.hint{margin-top:0}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,[tabindex]:focus-visible,.course-card-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.shortcut-heading{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:var(--space-4) 0 var(--space-2)}.shortcuts{gap:var(--space-2);margin:0;padding:0;list-style:none;display:grid}.shortcuts li{gap:var(--space-3);font-size:var(--text-sm);grid-template-columns:9rem 1fr;align-items:baseline;display:grid}.shortcuts kbd{justify-self:start}.empty{align-items:flex-start;gap:var(--space-3);padding:var(--space-4) 0;flex-direction:column;display:flex}.empty .hint{max-width:34rem;margin:0}
