@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff)format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff)format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff)format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff)format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-latin-600-normal-BgSNZQsw.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-600-normal-DWFSQ4vo.woff)format("woff")}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--desk:#1b1a17;--card:#2a2824;--tint:#33302b;--field:#221f1c;--rule:#3b3833;--ink:#efe6d0;--soft:#a39a86;--print:#e38a5c;--print-text:#1b1a17;--punch:#efe6d0;--punch-text:#1b1a17;--slot:#efe6d014;--danger:#ff8f80;--good:#7fd49a;--clip:14px;--radius:4px;--sans:"IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--mono:"IBM Plex Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--c-new:#3987e5;--c-learn:#d95926;--c-due:#7fd49a;--c-again:#ff8f80;--c-hard:#c98500;--c-good:#7fd49a;--c-easy:#3987e5;font:14px/1.4 var(--sans);color:var(--ink);background:var(--desk);-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}html,body{height:100%}body{background:var(--desk)}h1,h2,h3{margin:0;font-weight:600}a{color:var(--print)}kbd{font:500 9.5px var(--mono);color:var(--soft);border:1px solid var(--rule);border-radius:3px;padding:0 4px}::selection{background:color-mix(in srgb, var(--print) 40%, transparent)}.card{background:var(--card);clip-path:polygon(var(--clip) 0, 100% 0, 100% 100%, 0 100%, 0 var(--clip));padding:14px 16px}.label{font:500 10.5px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--print)}.label.soft{color:var(--soft)}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.muted{color:var(--soft)}.hint{color:var(--soft);margin:0;font-size:12.5px}.error-text{color:var(--danger);margin:0;font-size:13px}.success-text{color:var(--good);margin:0;font-size:13px}.slot{background:var(--slot);border-radius:1.5px;flex:none;width:5px;height:11px;display:inline-block}.slot.small{width:4px;height:9px}.q-new{background:var(--c-new)}.q-learn{background:var(--c-learn)}.q-due{background:var(--c-due)}.g-1{background:var(--c-again)}.g-2{background:var(--c-hard)}.g-3{background:var(--c-good)}.g-4{background:var(--c-easy)}.p-fill{background:var(--print)}.strip{grid-template-columns:repeat(var(--n,40), minmax(0, 6px));gap:2px;display:grid}.strip .slot{width:auto;height:12px}.btn{font:500 12px var(--mono);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;background:var(--field);color:var(--ink);border:1px solid var(--rule);border-radius:var(--radius);white-space:nowrap;padding:6px 12px}.btn:hover:not(:disabled){background:var(--tint)}.btn:disabled{opacity:.5;cursor:default}.btn.primary{background:var(--punch);color:var(--punch-text);border-color:var(--punch)}.btn.primary:hover:not(:disabled){background:var(--punch);filter:brightness(1.08)}.btn.ghost{color:var(--soft);background:0 0;border-color:#0000}.btn.ghost:hover:not(:disabled){background:var(--tint);color:var(--ink)}.btn.danger{color:var(--danger)}.btn kbd{color:inherit;opacity:.6;border-color:currentColor;margin-left:8px}.action{font:500 12px var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--print);cursor:pointer;background:0 0;border:0;padding:0;text-decoration:none}.icon-btn{color:var(--soft);cursor:pointer;border-radius:var(--radius);background:0 0;border:0;padding:2px 6px;font-size:14px}.icon-btn:hover{background:var(--tint);color:var(--ink)}input[type=password],input[type=number],input[type=text]{font:inherit;color:var(--ink);background:var(--field);border:1px solid var(--rule);border-radius:var(--radius);padding:6px 8px}input:focus-visible,.btn:focus-visible,.tab:focus-visible,.swatch:focus-visible,.action:focus-visible{border-color:var(--print);outline:2px solid color-mix(in srgb, var(--print) 40%, transparent);outline-offset:-1px}input[type=range]{accent-color:var(--print);width:100%}.form{gap:12px;display:grid}.form label{color:var(--soft);gap:5px;font-size:13px;display:grid}.form .actions{align-items:center;gap:8px;display:flex}.spacer{flex:1}.shell{max-width:760px;margin:0 auto;padding:0 16px 28px}.tabs{align-items:flex-end;gap:2px;height:46px;display:flex}.tabs .wordmark{align-self:center;margin-right:auto}.tab{font:500 11px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--soft);border-radius:6px 6px 0 0;padding:9px 14px 10px;text-decoration:none}.tab:hover{color:var(--ink)}.tab.on{background:var(--card);color:var(--ink)}.tabs .btn{align-self:center;margin-left:10px}.stack{flex-direction:column;gap:12px;display:flex}.footer{text-align:center;color:var(--soft);opacity:.8;margin-top:24px;font-size:12px}.wordmark{letter-spacing:-.025em;color:var(--ink);align-items:center;gap:6px;font-weight:600;line-height:1;display:inline-flex}.mark{flex:none}.today{gap:12px;display:grid}.today .hero{align-items:flex-end;gap:24px;display:flex}.today .big{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:40px;font-weight:600;line-height:1}.today .stat{gap:2px;display:grid}.today .stat .v{font:500 18px var(--mono);font-variant-numeric:tabular-nums}.ledger{margin:6px 0 0;padding:0;list-style:none}.ledger li{border-top:1px dashed var(--rule);grid-template-columns:minmax(0,1fr) 52px 52px 52px 28px;align-items:center;gap:6px;padding:7px 0;display:grid}.ledger li.head{border-top:0;padding:0 0 4px}.ledger li.head span{font:500 9.5px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--soft);text-align:right;justify-content:flex-end;align-items:center;gap:4px;display:inline-flex}.ledger .name{align-items:center;gap:4px;min-width:0;display:flex}.ledger .name a{color:var(--ink);white-space:nowrap;text-overflow:ellipsis;font-weight:500;text-decoration:none;overflow:hidden}.ledger .name a:hover{color:var(--print)}.ledger .twisty{width:16px;color:var(--soft);cursor:pointer;background:0 0;border:0;flex:none;padding:0;font-size:10px}.ledger .count{font:500 13px var(--mono);text-align:right;font-variant-numeric:tabular-nums}.ledger .count.zero{color:var(--soft);opacity:.55}.ledger .opts{text-align:right}.empty-state{justify-items:start;gap:10px;display:grid}.empty-state p{color:var(--soft);margin:0}.import-card{gap:8px;display:grid}.import-card .row{align-items:baseline;gap:8px;display:flex}.import-card.error .label{color:var(--danger)}.drop-overlay{border:2px dashed var(--print);font:500 12px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--print);pointer-events:none;background:color-mix(in srgb, var(--desk) 88%, transparent);border-radius:8px;place-items:center;display:grid;position:fixed;inset:12px}.setting-row{border-top:1px dashed var(--rule);grid-template-columns:110px 1fr;align-items:center;gap:12px;padding:8px 0;display:grid}.setting-row:first-of-type{border-top:0}.swatches{flex-wrap:wrap;gap:6px;display:flex}.swatch{cursor:pointer;outline-offset:2px;border:0;border-radius:2px;outline:1.5px solid #0000;width:12px;height:26px;padding:0;position:relative}.swatch[aria-checked=true]{outline-color:var(--ink)}.group-title{margin-top:10px}.dialog{color:var(--ink);background:0 0;border:0;width:min(400px,100vw - 32px);padding:0}.dialog::backdrop{background:#00000080}.dialog .card{gap:12px;display:grid}.login{place-items:center;min-height:100dvh;padding:24px 16px;display:grid}.login-card{gap:12px;width:min(320px,100%);padding:24px 20px 20px;display:grid}.login-card .wordmark{justify-self:center}.login-card .tagline{text-align:center;margin-top:-4px}.login-card .btn{padding:9px 12px}.study{flex-direction:column;max-width:860px;height:100dvh;margin:0 auto;padding:0 16px 16px;display:flex}.study-bar{flex:none;align-items:center;gap:12px;height:46px;display:flex}.study-deck{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-weight:600;overflow:hidden}.counts{font:500 12.5px var(--mono);font-variant-numeric:tabular-nums;gap:10px;display:inline-flex}.counts span{align-items:center;gap:4px;display:inline-flex}.counts .active{text-underline-offset:4px;text-decoration:underline}.study-card{flex-direction:column;flex:1;min-height:0;padding:0;display:flex}.study-card>.strip{padding:14px 16px 0}.card-frame{background:var(--card);border:0;flex:1;width:100%;min-height:0;display:block}.answer-row{flex:none;justify-content:center;padding:12px 16px 16px;display:flex}.answer-row .show{min-width:220px;padding:10px 18px}.grades{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;width:100%;display:grid}.grade{text-align:left;cursor:pointer;background:var(--field);color:var(--ink);border:1px solid var(--rule);border-radius:var(--radius);grid-template-columns:auto 1fr auto;align-items:center;gap:1px 8px;padding:7px 10px;display:grid}.grade:hover:not(:disabled){background:var(--tint)}.grade:disabled{opacity:.5;cursor:default}.grade .slot{grid-row:span 2;height:22px}.grade b{font:500 11.5px var(--mono);letter-spacing:.08em;text-transform:uppercase}.grade em{font:500 11px var(--mono);color:var(--soft);grid-column:2;font-style:normal}.grade kbd{grid-area:1/3/span 2}.done{text-align:center;flex:1;place-content:center;justify-items:center;gap:10px;padding:24px 16px;display:grid}.done .big{font-size:22px;font-weight:600}.done p{color:var(--soft);max-width:36ch;margin:0}@media (width<=560px){.grades{grid-template-columns:repeat(2,minmax(0,1fr))}.grade kbd,.btn kbd{display:none}.ledger li{grid-template-columns:minmax(0,1fr) 40px 40px 40px 24px}.today .hero{gap:16px}.setting-row{grid-template-columns:1fr;gap:6px}.tab{padding:9px 10px 10px}}
