@font-face{font-family:Inter Variable;src:url(./inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2-variations");font-weight:100 900;font-display:swap}:root{--bg:#f8fafc;--surface:#fff;--surface-2:#f1f5f9;--text:#0f172a;--muted:#64748b;--line:#e2e8f0;--accent:oklch(44% .118 24);--accent-hover:oklch(55% .125 25);--accent-ink:#fff;--accent-soft:oklch(94.5% .022 25);--panel:oklch(44% .118 24);--ok:#15803d;--hard:#b45309;--again:#b91c1c;--mark:oklch(79% .075 25);--shadow-sm:0 2px 6px #0f172a14;--shadow-lg:0 8px 15px #0f172a14, 0 3px 6px #0f172a14;--sans:"Inter Variable", Inter, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--display:"Cabinet Grotesk", var(--sans);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0f172a;--surface:#1e293b;--surface-2:#273449;--text:#f1f5f9;--muted:#94a3b8;--line:#334155;--accent:oklch(79% .075 25);--accent-hover:oklch(88% .045 25);--accent-ink:#0f172a;--accent-soft:oklch(31% .085 24/.6);--panel:oklch(38% .105 24);--ok:#4ade80;--hard:#fbbf24;--again:#f87171;--mark:oklch(55% .125 25);--shadow-sm:0 2px 6px #0000004d;--shadow-lg:0 8px 15px #00000059;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);font:16px/1.5 var(--sans);-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0}a{color:var(--accent);text-decoration:none}h1,h2,h3{font-family:var(--display);color:var(--text);margin:0 0 .4em;font-weight:800;line-height:1.15}h1{font-size:2rem}h2{font-size:1.375rem}h3{font-size:1.25rem;font-weight:700}.app{max-width:760px;margin:0 auto;padding:0 16px 64px}.top{border-bottom:1px solid var(--line);background:color-mix(in srgb, var(--bg) 85%, transparent);-webkit-backdrop-filter:blur(8px);z-index:5;align-items:center;gap:12px;margin-bottom:20px;padding:14px 0;display:flex;position:sticky;top:0}.brand{font-family:var(--display);color:var(--text);font-size:1.375rem;font-weight:800}.top nav{gap:4px;margin-left:auto;display:flex}.top nav a{color:var(--muted);letter-spacing:-.01em;border-radius:6px;padding:6px 10px;font-size:.95rem;font-weight:500}.top nav a:hover{color:var(--text)}.top nav a.active{color:var(--accent);background:var(--accent-soft)}.stack>*+*{margin-top:24px}.card{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-sm);border-radius:16px;padding:18px}.card+.card{margin-top:10px}.hero p{margin:0 0 14px}.card.hero{background-color:var(--panel);color:#fff;box-shadow:var(--shadow-lg);background-image:linear-gradient(#ffffff1a 1px,#0000 1px),linear-gradient(90deg,#ffffff1a 1px,#0000 1px);background-position:-1px -1px;background-size:64px 64px;border:0;border-bottom-right-radius:48px;padding:22px 20px;position:relative;overflow:hidden}.card.hero h1,.card.hero a{color:#fff}.card.hero a:not(.button){text-underline-offset:3px;text-decoration:underline}.card.hero .muted{color:#ffffffbf}.card.hero .button.primary{color:oklch(44% .118 24);background:#fff;border-color:#fff}.card.hero .button.primary:hover{background:oklch(97.5% .01 25)}.row{align-items:center;gap:8px;display:flex}.row.wrap{flex-wrap:wrap}.spacer{flex:1}.grow{flex-direction:column;flex:1;min-width:0;display:flex}.muted{color:var(--muted)}.small{font-size:.85rem}.note{background:var(--accent-soft);border-radius:8px;padding:8px 12px}.error-text{color:var(--again);margin:8px 0 0}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.empty{color:var(--muted);text-align:center;padding:40px 0}button,.button{font:inherit;border:1px solid var(--line);background:var(--surface);color:var(--text);cursor:pointer;white-space:nowrap;letter-spacing:-.015em;border-radius:6px;justify-content:center;align-items:center;gap:6px;min-height:40px;padding:9px 16px;font-size:.95rem;font-weight:600;display:inline-flex}button:hover:not(:disabled),.button:hover{background:var(--surface-2)}button:focus-visible,.button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button:disabled{opacity:.6;cursor:default}.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);box-shadow:var(--shadow-sm)}.primary:hover:not(:disabled),.button.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.ghost{background:0 0}.ghost:hover:not(:disabled){background:var(--surface-2)}button.small,.button.small{min-height:32px;padding:4px 10px;font-size:.85rem}button.link{min-height:0;color:var(--accent);text-align:left;white-space:normal;background:0 0;border:0;padding:0;font-size:.9rem}.segmented{border:1px solid var(--line);border-radius:6px;flex-wrap:wrap;display:inline-flex;overflow:hidden}.segmented button{background:0 0;border:0;border-radius:0;min-height:36px}.segmented button.on{background:var(--accent);color:var(--accent-ink)}.search{width:100%;font:inherit;border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:6px;padding:10px 12px}.list{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-sm);border-radius:16px;overflow:hidden}.list-item{color:var(--text);border-top:1px solid var(--line);align-items:center;gap:12px;padding:12px 14px;display:flex}.list-item:first-child{border-top:0}.list-item:hover{background:var(--surface-2)}.badge{text-align:center;background:var(--accent-soft);min-width:44px;color:var(--accent);border-radius:8px;padding:4px 6px;font-size:.75rem;font-weight:700}.ref{color:var(--accent);font-variant-numeric:tabular-nums;min-width:52px;font-size:.8rem;font-weight:600}details{margin-top:10px}details summary{cursor:pointer;letter-spacing:-.01em;padding:8px 2px;font-weight:600}details .list{margin-top:4px}.pips{align-items:center;gap:4px;display:inline-flex}.pip-bar{background:var(--surface-2);border-radius:3px;width:40px;height:6px;display:inline-block;overflow:hidden}.pip-bar span{background:var(--ok);height:100%;display:block}.pip-whole{color:var(--ok);font-size:.8rem}.bar{background:var(--surface-2);border-radius:3px;height:6px;margin:8px 0 12px;overflow:hidden}.bar span{background:var(--accent);height:100%;display:block}.course-head{align-items:baseline;gap:8px;display:flex}.course-head a{color:var(--text);flex:1}.course-head h3{margin:0}.tiles{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px;display:grid}.tile{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-sm);color:var(--text);border-radius:16px;flex-direction:column;gap:4px;padding:14px;display:flex}.tile strong{font-family:var(--display);font-size:1.15rem;font-weight:700}.tile:hover{border-color:var(--mark)}.tile span{color:var(--muted);font-size:.85rem}.crumbs{font-size:.9rem}.prompt{align-items:baseline;gap:10px;margin-bottom:12px;font-weight:600;display:flex}.prompt.big{font-family:var(--display);font-size:1.375rem;font-weight:700;line-height:1.25}.unit-text,.drill-text{font-family:var(--sans);margin:0 0 10px;font-size:1.2rem;line-height:1.75}.mark{font:inherit;color:inherit;white-space:normal;text-align:left;border:0;border-bottom:2px solid var(--mark);background:0 0;border-radius:0;min-height:0;padding:0;display:inline}.mark:hover{background:var(--accent-soft)}.pager{justify-content:space-between;font-size:.95rem;display:flex}.sheet-backdrop{z-index:20;background:#00000059;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{background:var(--surface);border-top:4px solid var(--accent);border-radius:20px 20px 0 0;width:100%;max-width:760px;max-height:80vh;padding:16px 16px 28px;overflow:auto;box-shadow:0 -8px 30px #0003}.sheet-head{align-items:flex-start;gap:8px;display:flex}.sheet-head q{font-family:var(--display);flex:1;font-size:1.25rem;font-weight:700}.parallel,.hymn{margin:8px 0}.hymn{color:var(--muted)}.passage{border-top:1px solid var(--line);margin-top:10px;padding-top:10px}.passage-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.verses{font-family:var(--sans);margin:6px 0 0}.verses sup{color:var(--muted);font-family:var(--sans);margin-right:2px;font-size:.65em}.verses.clamp{max-height:14em;overflow:auto}.harmony{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-sm);border-radius:16px;overflow:hidden}.h-row{grid-template-columns:repeat(var(--cols), minmax(0, 1fr));border-top:1px solid var(--line);gap:4px 12px;padding:8px 12px;display:grid}.h-head{text-transform:uppercase;letter-spacing:.05em;background:var(--surface-2);border-top:0;font-size:.75rem;font-weight:700}.h-cell{color:var(--text);font-family:var(--sans);display:block}.h-chip{background:var(--accent-soft);white-space:nowrap;border-radius:6px;margin:0 4px 4px 0;padding:1px 6px;font-size:.8rem;display:inline-block}.h-meta{flex-wrap:wrap;grid-column:1/-1;gap:2px 12px;font-size:.8rem;display:flex}.h-meta button.link{font-size:.8rem}.hymn-cell{color:var(--muted)}@media (width<=719px){.harmony-decalogue .h-row{grid-template-columns:repeat(calc(var(--cols) - 1), minmax(0, 1fr))}.harmony-decalogue .h-first{grid-column:1/-1}.harmony-decalogue .h-head .h-first,.harmony-decalogue .h-head>div:first-child{display:none}}@media (width>=720px){.harmony-decalogue .h-chip{white-space:normal}}.session-bar{color:var(--muted);justify-content:space-between;margin-bottom:14px;font-size:.9rem;display:flex}.drill{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-sm);border-radius:16px;padding:18px 16px;position:relative}.stage-label{color:var(--muted);margin-bottom:8px;font-size:.85rem}.chunk+.chunk:before{content:""}.reading .chunk:nth-child(2n){background:var(--surface-2);border-radius:4px}.w.context{color:var(--muted)}.w.ghost{color:var(--line)}.w.ok{color:var(--text)}.w.slip{color:var(--hard)}.w.revealed{color:var(--again)}.w.blank .blank-bar{vertical-align:-.1em;border-bottom:2px solid var(--line);height:.9em;display:inline-block}.w.current{background:var(--accent-soft);outline:2px solid var(--accent);outline-offset:1px;border-radius:4px}.w.current.struck{animation:.25s shake}.w.current.ghost{color:var(--muted)}.buffer{color:var(--accent)}@keyframes shake{0%,to{transform:none}33%{transform:translate(-3px)}66%{transform:translate(3px)}}.key-capture{opacity:0;width:1px;height:1px;font-size:16px;position:absolute;bottom:0;left:0}.progress-text{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.85rem}.results{flex-direction:column;gap:6px;margin:8px 0 14px;display:flex}.result{align-items:baseline;gap:8px;font-size:.95rem;display:flex}.result .dot{border-radius:50%;flex:none;width:10px;height:10px}.result-text{font-family:var(--sans);flex:1}.result-grade{font-size:.8rem;font-weight:600}.g1 .dot{background:var(--again)}.g1 .result-grade{color:var(--again)}.g2 .dot{background:var(--hard)}.g2 .result-grade{color:var(--hard)}.g3 .dot,.g4 .dot{background:var(--ok)}.g3 .result-grade,.g4 .result-grade{color:var(--ok)}.sources{padding-left:18px;font-size:.9rem}.sources li{margin-bottom:6px}code{background:var(--surface-2);border-radius:4px;padding:1px 5px}.hero-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.streak{white-space:nowrap;border:1px solid #ffffff59;border-radius:999px;align-items:center;gap:4px;padding:3px 10px 3px 8px;font-size:.85rem;font-weight:600;display:inline-flex}.card.hero a.streak{text-decoration:none}.streak .flame{opacity:.7;width:15px;height:15px}.streak.done{background:#fff;border-color:#fff}.card.hero .streak.done{color:oklch(44% .118 24)}.streak.done .flame{opacity:1;color:#ea580c}.memory-aid{font-family:var(--sans);background:var(--surface-2);border-radius:8px;margin:0 0 12px;padding:8px 12px}.memory-label{margin-bottom:6px;font-weight:600;display:block}.memory-input{width:100%;font:1rem/1.4 var(--sans);color:var(--text);background:var(--bg);border:1px solid var(--line);resize:vertical;border-radius:8px;padding:8px 10px}.heard{font-family:var(--sans);border-left:3px solid var(--accent);margin:0 0 12px;padding:4px 10px}.w.ghost-strong{color:var(--muted)}button.result-grade{cursor:pointer;font:inherit;background:0 0;border:1px solid #0000;border-radius:6px;padding:2px 6px;font-size:.8rem;font-weight:600}button.result-grade:hover,button.result-grade:focus-visible{border-color:var(--line)}.stat-tiles{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;display:grid}.stat-tile{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-sm);border-radius:16px;padding:12px 14px}.stat-value{font:800 2rem/1.1 var(--display);font-variant-numeric:tabular-nums}.stat-label{margin-bottom:2px;font-size:.9rem}.heatmap{grid-template-rows:repeat(7,1fr);grid-auto-columns:1fr;grid-auto-flow:column;gap:2px;max-width:100%;margin:8px 0;display:grid}.hm{aspect-ratio:1;background:var(--surface-2);border-radius:2px}.hm.future{background:0 0}.hm.l1{background:color-mix(in srgb, var(--accent) 30%, var(--surface-2))}.hm.l2{background:color-mix(in srgb, var(--accent) 52%, var(--surface-2))}.hm.l3{background:color-mix(in srgb, var(--accent) 76%, var(--surface-2))}.hm.l4{background:var(--accent)}.forecast{grid-template-columns:repeat(14,1fr);gap:2px;height:120px;margin:8px 0;display:grid}.fc-col{grid-template-rows:auto 1fr auto;place-items:end center;min-width:0;display:grid}.fc-bar{background:var(--accent);border-radius:4px 4px 0 0;align-self:end;width:70%;max-width:22px;min-height:0}.fc-n,.fc-day{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.7rem}.doc-table{border-collapse:collapse;width:100%;font-size:.9rem}.doc-table th,.doc-table td{text-align:left;border-bottom:1px solid var(--line);padding:6px 4px}.doc-table td+td,.doc-table th+th{text-align:right;font-variant-numeric:tabular-nums}@media (width<=480px){.top{flex-wrap:wrap;gap:4px 8px}.top nav{gap:0}.top nav a{padding:6px 7px;font-size:.9rem}.brand{font-size:1.05rem}}.fc-day.today{color:var(--text);font-weight:700}label.row+label.row{margin-top:10px}.app-foot{color:var(--muted);justify-content:center;gap:8px;margin-top:40px;font-size:.85rem;display:flex}.app-foot a{color:var(--muted)}.passage .brown{margin-top:4px;display:inline-block}.reading ul{margin:0;padding-left:1.1em}.reading li{margin:0 0 6px}.reminder-error{color:var(--again)}select{font:inherit;border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:6px;min-height:40px;padding:9px 12px;font-size:.95rem}.stack-sm>*+*{margin-top:10px}.stack-sm h3{margin:0}.grow-input{flex:1;min-width:0}.suggestions{gap:6px;display:grid}button.suggestion{white-space:normal;text-align:left;letter-spacing:0;justify-content:space-between;font-weight:400}.suggestion strong{font-weight:600}.suggestion .plus{color:var(--accent);font-size:1.25rem;font-weight:600;line-height:1}
