:root{color-scheme:light dark;--font-ui: -apple-system, system-ui, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--font-content: "Source Serif 4", Georgia, serif;--font-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;--bg: light-dark(#f7f7f5, #111317);--surface: light-dark(#ffffff, #1a1d22);--sunken: light-dark(#f4f4f1, #13161a);--border: light-dark(#e6e6e2, #2a2e35);--border-strong: light-dark(#d6d6d1, #3a3f47);--divider: light-dark(#efefec, #262a31);--track: light-dark(#e4e4e0, #262a31);--track-soft: light-dark(#f2f2ef, #22262d);--text: light-dark(#16181d, #e8eaed);--muted: light-dark(#5f646d, #9aa0a8);--faint: light-dark(#9a9ea6, #6b7079);--accent: light-dark(#2f62e0, #7aa2ff);--on-accent: light-dark(#ffffff, #0d1630);--accent-tint: light-dark(#eef2fd, #1b2a4a);--accent-line: light-dark(#c9d6f7, #33497a);--accent-ink: light-dark(#1f47b8, #a9c1ff);--young: light-dark(#a9bcf0, #3a5596);--success: light-dark(#2f855a, #3fb950);--warn: light-dark(#c08a1e, #d3a23f);--danger: light-dark(#b42318, #ff8a80);--hover: light-dark(rgb(22 24 29 / .05), rgb(255 255 255 / .06));--shadow: light-dark(rgb(22 24 29 / .06), rgb(0 0 0 / .35));--overlay: light-dark(rgb(22 24 29 / .4), rgb(0 0 0 / .6));--segment-bg: light-dark(#f0f0ec, #23272e);--segment-on: light-dark(#ffffff, #353a43);--switch-off: light-dark(#e0e0db, #3a3f47);--g1-bg: light-dark(#fcebe5, #3a2119);--g1-fg: light-dark(#a3320a, #ffb49a);--g1-line: light-dark(#d9622b, #e07a4c);--g2-bg: light-dark(#fbf1de, #352a15);--g2-fg: light-dark(#845508, #f2c77a);--g2-line: light-dark(#c08a1e, #d3a23f);--g3-bg: light-dark(#e2f2e8, #17311f);--g3-fg: light-dark(#1c6541, #8fdda9);--g3-line: light-dark(#3e9a68, #3fb950);--g4-bg: light-dark(#e7edfc, #1b2a4a);--g4-fg: light-dark(#1f45aa, #a9c1ff);--g4-line: var(--accent);--heat-0: light-dark(#efefeb, #22262d);--heat-1: light-dark(#c9d6f7, #1e3260);--heat-2: light-dark(#94aeee, #2d4c93);--heat-3: light-dark(#5a84e6, #4c72cf);--heat-4: light-dark(#2f62e0, #7aa2ff);--gutter: 16px;--control-h: 56px}:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{color-scheme:dark}*,*:before,*:after{box-sizing:border-box}[hidden]{display:none!important}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;min-height:100dvh;font:16px/1.4 var(--font-ui);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}h1,h2,h3,p,ol,ul{margin:0}button,input,select,textarea{font:inherit;color:inherit}button{appearance:none;margin:0;padding:0;border:0;background:none;cursor:pointer}a{color:var(--accent)}code{font-family:var(--font-mono)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.icon{flex:none;stroke-width:1.8}.muted{color:var(--muted)}kbd{display:none;font:600 11px var(--font-mono);border:1px solid currentColor;border-radius:5px;padding:1px 5px;opacity:.7}@media(hover:hover)and (pointer:fine)and (min-width:720px){kbd{display:inline-block}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:44px;padding:0 18px;border:1px solid var(--border-strong);border-radius:14px;background:var(--surface);color:var(--text);font-size:16px;font-weight:600;text-decoration:none;transition:background-color .15s,filter .15s}.btn:disabled{opacity:.45;cursor:default}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.btn-primary kbd{border-color:transparent;background:color-mix(in srgb,currentColor 18%,transparent);opacity:1}.btn-danger{background:var(--danger);border-color:var(--danger);color:var(--on-accent)}.btn-lg{min-height:56px;padding:0 28px;border-radius:16px;font-size:17px}.btn-block{width:100%}.btn-small{padding:0 12px;border-radius:10px;font-size:14px}.btn:active:not(:disabled),.grade-btn:active{transform:scale(.98)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:44px;height:44px;padding:0 11px;border-radius:12px;color:var(--text);font-size:14px;font-weight:500;text-decoration:none}.icon-btn:disabled{opacity:.35;cursor:default}.icon-btn-label{display:none}@media(min-width:720px){.icon-btn-label{display:inline}}.link-btn{padding:0 4px;color:var(--accent);font-weight:600}@media(hover:hover){.btn:hover:not(:disabled),.icon-btn:hover:not(:disabled),a.row:hover,button.row:hover,summary.row:hover{background-color:var(--hover)}.btn-primary:hover:not(:disabled),.btn-danger:hover:not(:disabled){background-color:var(--accent);filter:brightness(1.08)}.btn-danger:hover:not(:disabled){background-color:var(--danger)}.grade-btn:hover{filter:brightness(.97) saturate(1.15)}.segmented button:hover:not([aria-pressed=true]){color:var(--text)}.link-btn:hover{text-decoration:underline}}.page{width:100%;max-width:calc(680px + 2 * var(--gutter));margin:0 auto;padding:calc(env(safe-area-inset-top) + 8px) max(var(--gutter),env(safe-area-inset-right)) calc(env(safe-area-inset-bottom) + 32px) max(var(--gutter),env(safe-area-inset-left));display:flex;flex-direction:column;gap:22px}.page-wide{max-width:calc(920px + 2 * var(--gutter));gap:14px}@media(min-width:720px){.page{padding-top:28px;gap:28px}.page-wide{gap:18px}}.page-head{display:flex;align-items:center;gap:4px;margin-left:-8px}.page-head h1{font-size:22px;font-weight:700;letter-spacing:-.3px}.page-head .icon-btn{color:var(--text)}@media(min-width:720px){.page-head .icon-btn{color:var(--muted);padding:0 10px 0 6px}.page-head h1{font-size:24px}}.group{display:flex;flex-direction:column;gap:6px;min-width:0}.group-title{padding:0 6px;font-size:13px;font-weight:600;color:var(--muted)}.deck-group-name{text-transform:capitalize}.group-note{padding:0 6px;font-size:13px;line-height:1.4;color:var(--muted)}.group-note:empty{display:none}.group-caption{padding:0 6px 2px;font-size:13px;line-height:1.4;color:var(--muted);overflow-wrap:anywhere}.list{background:var(--surface);border:1px solid var(--border);border-radius:14px;overflow:hidden}.list>:not(:first-child){border-top:1px solid var(--divider)}.row{display:flex;align-items:center;gap:12px;width:100%;min-height:56px;padding:8px 12px 8px 16px;color:inherit;font-size:16px;text-align:left;text-decoration:none}button.row,a.row,summary.row{cursor:pointer}.row-text{flex:1;min-width:0;display:flex;flex-direction:column}.row-title{font-size:16px;font-weight:500;overflow-wrap:anywhere}.row-sub{font-size:13px;color:var(--muted)}.row-action{min-height:48px;padding:0 16px;gap:8px;color:var(--accent);font-weight:500}.row-danger{color:var(--danger)}.row-stack{flex-direction:column;align-items:stretch;gap:10px;padding:14px 16px 16px}.row-line{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.row .icon-chevron{color:var(--faint);stroke-width:2}.row-status{display:flex;align-items:center;gap:4px;flex:none;font-size:13px;font-weight:500;color:var(--muted)}.row-status .icon{color:var(--success);stroke-width:2.4}.pill{flex:none;padding:3px 9px;border:1px solid transparent;border-radius:999px;font-size:13px;font-weight:600;white-space:nowrap}.pill-due{background:var(--accent);color:var(--on-accent)}.pill-new{border-color:var(--accent-line);color:var(--accent)}.pill-tint{padding:3px 8px;background:var(--accent-tint);color:var(--accent);font-size:12px}.panel{display:flex;flex-direction:column;gap:12px;min-width:0;padding:16px;background:var(--surface);border:1px solid var(--border);border-radius:16px}.panel-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:13px;color:var(--muted)}.panel-head h2{font-size:15px;font-weight:600;color:var(--text)}.notice{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;padding:10px 12px 10px 16px;border:1px solid var(--border);border-radius:14px;background:var(--surface);font-size:14px;color:var(--muted)}.notice>:first-child{flex:1 1 180px}.notice-warn{border-color:transparent;background:var(--g2-bg);color:var(--g2-fg)}.notice-error{border-color:transparent;background:var(--g1-bg);color:var(--g1-fg)}.done-badge{flex:none;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--g3-bg);color:var(--g3-fg)}.done-badge .icon{stroke-width:2.4}.app-bar{display:flex;align-items:center;justify-content:space-between;margin:0 -4px 0 4px}.brand{display:flex;align-items:center;font-size:17px;font-weight:700;letter-spacing:-.2px}.app-nav{display:flex;gap:2px}@media(min-width:720px){.app-nav{gap:4px}}.sync-dot{display:grid;place-items:center start;width:44px;height:44px;padding:0 0 0 7px}.sync-dot:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--success)}.sync-dot[data-state=syncing]:before{background:var(--accent);animation:pulse .9s ease-in-out infinite alternate}.sync-dot[data-state=warn]:before{background:var(--warn)}.sync-dot[data-state=error]:before{background:var(--danger)}.sync-dot[data-state=offline]:before,.sync-dot[data-state=never]:before{background:var(--faint)}@keyframes pulse{to{opacity:.25}}.hero{display:flex;flex-direction:column;gap:4px;padding:6px 4px 0}.hero-text{display:flex;flex-direction:column;gap:4px}.hero-date{font-size:14px;font-weight:500;color:var(--muted)}.hero-count{display:flex;align-items:baseline;gap:10px;margin-top:6px;font-size:20px;font-weight:600}.hero-number{font-size:clamp(52px,14vw,64px);font-weight:700;letter-spacing:-2px;line-height:1}.hero-sub{margin-top:4px;font-size:15px;color:var(--muted)}.hero>.btn{margin-top:18px}.caught-up{display:flex;align-items:center;gap:12px;margin-top:10px}.caught-up h1{font-size:30px;font-weight:700;letter-spacing:-.6px}.coming-up{margin-top:16px;gap:10px;padding:14px 16px 12px}.coming-up .panel-head span:first-child{font-weight:600;color:var(--text)}.mini-bars,.mini-labels{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.mini-bars{align-items:end;height:54px}.mini-bars>span{min-height:3px;border-radius:4px;background:var(--young)}.mini-bars>span:first-child{background:var(--accent)}.mini-labels{font-size:11px;text-align:center;color:var(--muted)}@media(min-width:720px){.hero{flex-direction:row;align-items:center;justify-content:space-between;gap:24px;padding:28px;background:var(--surface);border:1px solid var(--border);border-radius:20px}.hero>.btn{margin-top:0;padding:0 28px;min-height:52px;border-radius:14px;font-size:16px}.hero-number{font-size:56px}.hero-done{flex-direction:column;align-items:stretch;gap:4px}}.resume-banner{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:12px 12px 12px 16px;border-radius:16px;background:var(--accent-tint)}.resume-text{flex:1 1 160px;display:flex;flex-direction:column;font-size:14px;color:var(--muted)}.resume-text strong{font-size:16px;font-weight:600;color:var(--text)}.resume-actions{display:flex;gap:8px}.deck-groups{display:flex;flex-direction:column;gap:18px}@media(min-width:720px){.deck-groups{display:block;columns:2;column-gap:20px}.deck-groups>*{break-inside:avoid;margin-bottom:20px}}.deck-repo-name{display:flex;align-items:baseline;gap:8px;padding:0 6px;font:12px var(--font-mono);color:var(--muted)}.deck-repo-tag{padding:1px 7px;border:1px solid var(--border-strong);border-radius:999px;font:11px var(--font-ui)}.empty{display:flex;flex-direction:column;gap:10px;padding:24px 4px}.empty h1{font-size:26px;font-weight:700;letter-spacing:-.4px}.empty p{color:var(--muted)}.empty p.sync-status-error{color:var(--danger)}.empty-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.drill{display:flex;flex-direction:column;width:100%;max-width:calc(680px + 2 * var(--gutter));height:100dvh;margin:0 auto;padding:calc(env(safe-area-inset-top) + 6px) 0 calc(env(safe-area-inset-bottom) + 16px);overflow:hidden}.drill-bar{display:flex;align-items:center;gap:8px;padding:0 8px}.progress{flex:1;display:flex;align-items:center;gap:10px;min-width:0}.progress-bar{flex:1;height:4px;border-radius:2px;background:var(--track);overflow:hidden}.progress-fill{height:100%;background:var(--accent);transition:width .3s ease}.progress-count{font-size:13px;font-weight:600;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}.drill-bar kbd{color:var(--muted);border-color:var(--border-strong);opacity:1}.write-error{margin:8px var(--gutter) 0}.card-container{flex:1;min-height:0;display:flex;position:relative;margin:12px var(--gutter) 16px;touch-action:pan-y}.card-container.card-fits{touch-action:none}.card-container.revealable{cursor:pointer}.card-container:before{content:"";position:absolute;inset:0;border:1px solid var(--border);border-radius:22px;background:var(--surface);transform:scale(.95);opacity:0;transition:opacity .15s;pointer-events:none}.card-container:has(.swipe-hint:not([hidden])):before{opacity:.7}.card{position:relative;flex:1;min-width:0;display:flex;flex-direction:column;gap:12px;padding:18px 22px 22px;background:var(--surface);border:1px solid var(--border);border-radius:22px;box-shadow:0 1px 2px var(--shadow),0 8px 24px var(--shadow)}.card-header{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:22px}.card-deck{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;color:var(--muted)}.card-tools{display:flex;align-items:center;gap:6px;flex:none}.card-edit{height:36px;min-width:36px;margin:-8px -10px -8px 0;padding:0 8px;border-radius:10px;color:var(--muted);font-size:13px}.card-edit kbd{margin-left:2px}.card-content{flex:1;min-height:0;display:flex;flex-direction:column;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.card-content>:first-child{margin-top:auto}.card-content>:last-child{margin-bottom:auto}.card-content .answer{margin-top:16px;padding-top:16px;border-top:1px solid var(--divider);visibility:hidden}.card-content.revealed .answer{visibility:visible}.card-content .extra{margin-top:14px;padding-top:12px;border-top-style:dashed;color:var(--muted)}.card-content .extra .rich-text{font:clamp(15px,13px + .6vw,17px) / 1.5 var(--font-ui)}.swipe-hint{position:absolute;z-index:2;top:12px;left:50%;translate:-50% 0;rotate:-4deg;padding:4px 12px;border:2px solid var(--g1-line);border-radius:10px;background:var(--g1-bg);color:var(--g1-fg);font-size:15px;font-weight:700;white-space:nowrap;pointer-events:none;opacity:0}.swipe-hint-positive{border-color:var(--g3-line);background:var(--g3-bg);color:var(--g3-fg)}.revealable .swipe-hint{border-color:var(--accent);background:var(--accent-tint);color:var(--accent-ink)}.card-container:not(.revealable) .swipe-hint-positive:after{content:" · " attr(data-good)}.card-container:not(.revealable) .swipe-hint:not(.swipe-hint-positive):after{content:" · " attr(data-forgot)}.controls{display:flex;flex-direction:column;gap:10px;padding:0 var(--gutter)}.reveal-btn{width:100%;height:var(--control-h)}.grades{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.grade-btn{min-width:0;height:var(--control-h);display:flex;align-items:center;justify-content:center;gap:10px;padding:0 4px;border-radius:14px}.grade-btn[data-grade="1"]{background:var(--g1-bg);color:var(--g1-fg)}.grade-btn[data-grade="2"]{background:var(--g2-bg);color:var(--g2-fg)}.grade-btn[data-grade="3"]{background:var(--g3-bg);color:var(--g3-fg)}.grade-btn[data-grade="4"]{background:var(--g4-bg);color:var(--g4-fg)}.grade-text{display:flex;flex-direction:column;align-items:center;gap:1px;min-width:0}.grade-label{font-size:15px;font-weight:600}.interval-preview{font-size:12px;font-weight:500;opacity:.8}.controls-hint{height:20px;font-size:13px;line-height:20px;text-align:center;color:var(--muted)}.hint-good,.hint-forgot,.hint-reveal{display:none}.drill:has(.swipe-hint:not([hidden])) .hint-idle{display:none}.drill:has(.revealable .swipe-hint:not([hidden])) .hint-reveal,.drill:has(.card-container:not(.revealable) .swipe-hint-positive:not([hidden])) .hint-good,.drill:has(.card-container:not(.revealable) .swipe-hint:not(.swipe-hint-positive):not([hidden])) .hint-forgot{display:inline}.drill:has(.swipe-hint-positive:not([hidden])) .grade-btn:not([data-grade="3"]),.drill:has(.swipe-hint:not(.swipe-hint-positive):not([hidden])) .grade-btn:not([data-grade="1"]){opacity:.4}.drill:has(.swipe-hint-positive:not([hidden])) .grade-btn[data-grade="3"]{box-shadow:inset 0 0 0 2px var(--g3-line)}.drill:has(.swipe-hint:not(.swipe-hint-positive):not([hidden])) .grade-btn[data-grade="1"]{box-shadow:inset 0 0 0 2px var(--g1-line)}@media(hover:hover)and (pointer:fine){.drill{--control-h: 60px;padding-top:20px;padding-bottom:36px}.drill-bar{gap:14px}.card-container{margin:24px var(--gutter) 20px}.card{padding:22px 32px 32px;gap:20px}.grades{gap:10px}.grade-text{align-items:flex-start}.controls-hint{display:none}}.finished{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:24px var(--gutter)}.finished-body{width:100%;max-width:400px;display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center}.finished h1{font-size:30px;font-weight:700;letter-spacing:-.6px}.finished .summary{font-size:15px;color:var(--muted)}.finished .list{width:100%;margin-top:8px;text-align:left}.finished .row{min-height:48px}.finished .btn{margin-top:12px}.grade-dot{width:10px;height:10px;border-radius:3px}.row-icon{flex:none;display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:var(--accent-tint);color:var(--accent)}.inbox-title{flex:none;font-size:15px;font-weight:700}.card-source{min-width:0;display:flex;flex-direction:column;gap:1px}.card-path{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:11px/1.4 var(--font-mono);color:var(--faint)}.draft-meta{display:flex;flex-wrap:wrap;gap:6px}.draft-tag{padding:2px 8px;border-color:var(--border-strong);color:var(--muted);font-size:12px;font-weight:500}.inbox-actions{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.7fr) minmax(0,1fr);gap:8px}.inbox-btn{min-width:0;height:var(--control-h);display:flex;align-items:center;justify-content:center;gap:8px;padding:0 6px;border:1px solid transparent;border-radius:14px;font-size:15px;font-weight:600}.inbox-btn .icon{stroke-width:2.2}.inbox-btn[data-action=discard]{background:var(--g1-bg);color:var(--g1-fg)}.inbox-btn[data-action=skip]{background:var(--surface);border-color:var(--border-strong);color:var(--muted)}.inbox-btn[data-action=keep]{background:var(--g3-bg);color:var(--g3-fg)}.inbox-btn:active{transform:scale(.98)}@media(hover:hover){.inbox-btn:hover{filter:brightness(.97) saturate(1.15)}}.inbox .card-container .swipe-hint:after{content:none}.hint-keep,.hint-discard{display:none}.inbox:has(.swipe-hint-positive:not([hidden])) .hint-keep,.inbox:has(.swipe-hint:not(.swipe-hint-positive):not([hidden])) .hint-discard{display:inline}.inbox:has(.swipe-hint-positive:not([hidden])) .inbox-btn:not([data-action=keep]),.inbox:has(.swipe-hint:not(.swipe-hint-positive):not([hidden])) .inbox-btn:not([data-action=discard]){opacity:.4}.inbox:has(.swipe-hint-positive:not([hidden])) .inbox-btn[data-action=keep]{box-shadow:inset 0 0 0 2px var(--g3-line)}.inbox:has(.swipe-hint:not(.swipe-hint-positive):not([hidden])) .inbox-btn[data-action=discard]{box-shadow:inset 0 0 0 2px var(--g1-line)}.decision-dot{width:10px;height:10px;border-radius:3px;background:var(--faint)}.decision-dot[data-decision=keep]{background:var(--g3-line)}.decision-dot[data-decision=discard]{background:var(--g1-line)}.decision-dot[data-decision=edit]{background:var(--accent)}.finished-actions{display:flex;gap:8px;width:100%;margin-top:12px}.finished-actions .btn{flex:1;margin-top:0}.inbox-finished .summary code{font-size:.9em}.rich-text{font-family:var(--font-content);font-size:clamp(20px,15px + 2.6vw,28px);line-height:1.5;overflow-wrap:break-word}.rich-text>*+*{margin-top:.6em}.rich-text ul,.rich-text ol{padding-left:1.2em}.rich-text img{display:block;max-width:100%;height:auto;margin-inline:auto;border-radius:8px}.rich-text audio{display:block;width:100%}.rich-text blockquote{margin:0;padding:.1em .8em;border-left:3px solid var(--border-strong);color:var(--muted)}.rich-text code{padding:.1em .35em;border-radius:6px;background:var(--track-soft);font-size:.72em}.rich-text pre{margin:0;padding:14px;overflow-x:auto;border:1px solid var(--divider);border-radius:12px;background:var(--sunken);font:max(13px,.54em) / 1.6 var(--font-mono)}.rich-text pre code,.rich-text pre code.hljs{padding:0;background:none;font-size:inherit}.rich-text table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font:max(14px,.6em) / 1.45 var(--font-ui)}.rich-text th,.rich-text td{padding:10px 12px;border-bottom:1px solid var(--divider);text-align:left;vertical-align:top}.rich-text th{padding-block:8px;border-color:var(--border);font-size:.82em;font-weight:600;color:var(--muted)}.rich-text :is(th,td):first-child{padding-left:0}.rich-text tbody tr:last-child td{border-bottom:0}.rich-text .katex{font-size:1.05em}.rich-text .katex-display{margin:0;overflow-x:auto;overflow-y:hidden}.cloze-slot .cloze-reveal,.revealed .cloze-slot .cloze{display:none}.revealed .cloze-slot .cloze-reveal{display:inline}.rich-text .cloze{display:inline-block;width:4.8em;height:1.2em;vertical-align:-.24em;overflow:hidden;border:1.5px dashed var(--accent-line);border-radius:8px;background:var(--accent-tint);color:transparent}.rich-text .cloze-reveal{padding:1px 6px;border-radius:6px;background:var(--accent-tint);color:var(--accent-ink);font-weight:600;-webkit-box-decoration-break:clone;box-decoration-break:clone}.tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.stat-box{gap:0;padding:14px 16px}.stat-value,.big-number{font-size:28px;font-weight:700;letter-spacing:-.6px}.stat-label{font-size:13px;color:var(--muted)}.stats-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:14px}@media(min-width:720px){.tiles{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.stat-box{padding:16px 18px}.stat-value,.big-number{font-size:30px}}@media(min-width:900px){.stats-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);grid-template-areas:"ret fc" "mat fc" "gr act" "lee lee";gap:12px}.stats-grid .panel{padding:18px}.retention{grid-area:ret}.maturity{grid-area:mat}.forecast{grid-area:fc}.grades-panel{grid-area:gr}.activity{grid-area:act}.leeches{grid-area:lee}}.meter{position:relative;height:8px;border-radius:4px;background:var(--track)}.meter-fill{height:100%;border-radius:4px;background:var(--accent)}.meter-target{position:absolute;top:-4px;width:2px;height:16px;margin-left:-1px;border-radius:1px;background:var(--text)}.maturity-bar-container{display:flex;gap:2px;height:10px;border-radius:5px;overflow:hidden}.maturity-bar{flex-basis:0}.maturity-new{background:var(--track)}.maturity-young{background:var(--young)}.maturity-mature{background:var(--accent)}.maturity-legend{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;font-size:13px}.legend-item{display:flex;flex-direction:column}.legend-item strong{font-size:17px;font-weight:600}.legend-key{display:flex;align-items:center;gap:5px;color:var(--muted)}.legend-dot{width:8px;height:8px;border-radius:2px}.forecast-chart{--chart-h: 88px;display:grid;grid-template-columns:repeat(14,minmax(0,1fr));gap:4px;align-items:end}.forecast-bar-wrapper{display:flex;flex-direction:column;gap:4px;min-width:0}.forecast-bar{height:max(2px,calc(var(--h) * var(--chart-h)));border-radius:3px 3px 1px 1px;background:var(--young)}.forecast-bar.is-today{background:var(--accent)}.forecast-bar.is-zero{background:var(--track)}.forecast-bar-value,.forecast-bar-label{display:none;overflow:hidden;font-size:11px;text-align:center;white-space:nowrap;color:var(--muted);font-variant-numeric:tabular-nums}.forecast-axis{display:flex;justify-content:space-between;font-size:11px;color:var(--muted)}@media(min-width:900px){.forecast-chart{--chart-h: 150px;flex:1;gap:6px}.forecast-bar-value,.forecast-bar-label{display:block}.forecast-axis{display:none}}.grade-bars{display:grid;grid-template-columns:52px minmax(0,1fr) 28px;gap:8px 10px;align-items:center;font-size:13px}.grade-row{display:contents}.grade-row .grade-label{color:var(--muted)}.grade-bar-track{height:8px;border-radius:4px;background:var(--track-soft)}.grade-bar{height:100%;border-radius:4px}.grade-count{text-align:right;font-variant-numeric:tabular-nums}.grade-forgot{background:var(--g1-line)}.grade-hard{background:var(--g2-line)}.grade-good{background:var(--g3-line)}.grade-easy{background:var(--g4-line)}.heatmap-grid{display:grid;grid-template-rows:repeat(7,18px);grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:4px}.heatmap-cell{border-radius:4px;background:var(--heat-0)}.heat-1{background:var(--heat-1)}.heat-2{background:var(--heat-2)}.heat-3{background:var(--heat-3)}.heat-4{background:var(--heat-4)}.heat-empty{background:transparent}.heat-old,.wide-only{display:none}@media(min-width:900px){.heatmap-grid{grid-template-rows:repeat(7,12px);gap:3px}.heatmap-cell{border-radius:3px}.heat-old{display:block}.wide-only{display:inline}.narrow-only{display:none}}.stats-empty,.leech-empty,.leech-intro,.leech-note{font-size:14px;line-height:1.45;color:var(--muted)}.leech-note:empty{display:none}.leech-card{min-height:64px;padding-right:8px}.leech-text{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;font-size:15px}.leech-meta{font-size:12px;color:var(--muted)}.welcome-view{gap:16px}.welcome-hero{display:flex;flex-direction:column;gap:10px;padding:8px 4px 6px}.welcome-hero h1{font-size:clamp(26px,7vw,34px);font-weight:700;letter-spacing:-.6px;line-height:1.15;text-wrap:balance}.welcome-hero p{font-size:16px;line-height:1.5;color:var(--muted)}.welcome-path h2{font-size:17px;font-weight:700}.welcome-path-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.welcome-copy{font-size:15px;line-height:1.45;color:var(--muted)}#path-demo{background:var(--accent-tint);border-color:var(--accent-line)}#path-demo .btn{border-color:var(--accent);color:var(--accent-ink)}.welcome-steps{display:flex;flex-direction:column;gap:16px;padding:0;list-style:none;counter-reset:step}.welcome-steps li{display:flex;flex-direction:column;gap:8px;counter-increment:step}.welcome-step-title{display:flex;align-items:center;gap:10px;font-size:15px;font-weight:600}.welcome-step-title:before{content:counter(step);flex:none;display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--accent);color:var(--on-accent);font-size:13px;font-weight:700}.welcome-hint{font-size:13px;line-height:1.4;color:var(--muted)}.welcome-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px}.welcome-actions .link-btn{min-height:44px;font-size:15px}.welcome-footer{display:flex;flex-direction:column;gap:4px;padding:4px 6px;font-size:13px;line-height:1.5;color:var(--muted)}.welcome-footer code{font-size:.95em}@media(min-width:720px){.welcome-view{gap:18px}.welcome-hero{padding:12px 4px 10px}.welcome-path{padding:20px 22px}.welcome-path .btn-block{align-self:flex-start;width:auto;min-width:260px}}:root.demo{--demo-bar-h: 36px}.demo-bar{position:sticky;top:0;z-index:50;display:flex;align-items:center;justify-content:center;gap:12px;min-height:calc(var(--demo-bar-h) + env(safe-area-inset-top));padding:env(safe-area-inset-top) var(--gutter) 0;border-bottom:1px solid light-dark(transparent,var(--border));background:light-dark(var(--text),var(--surface));color:light-dark(var(--bg),var(--text));font-size:13px;white-space:nowrap}.demo-bar a{color:inherit;font-weight:600;text-underline-offset:2px}.demo-bar-detail{opacity:.75}@media(max-width:359px){.demo-bar-detail{display:none}}:root.demo .page{padding-top:8px}:root.demo .drill{height:calc(100dvh - var(--demo-bar-h) - env(safe-area-inset-top))}:root.demo .finished{min-height:calc(100dvh - var(--demo-bar-h) - env(safe-area-inset-top))}@media(min-width:720px){:root.demo .page{padding-top:24px}}.account{min-height:64px}.avatar{flex:none;display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:var(--text);color:var(--bg);font-size:15px;font-weight:700}.disclosure>summary{list-style:none}.disclosure>summary::-webkit-details-marker{display:none}.disclosure>summary .icon-chevron{margin-left:auto;transition:rotate .15s}.disclosure[open]>summary .icon-chevron{rotate:90deg}.disclosure-body{display:flex;flex-direction:column;gap:12px;padding:4px 16px 16px}.field-group,.auth-panel label{display:flex;flex-direction:column;gap:6px;font-size:14px;font-weight:500;color:var(--muted)}.field-group>label{color:inherit}.input,.auth-panel input,.auth-panel select,.collection-add input,.capture-deck,.capture-path{width:100%;min-width:0;min-height:44px;padding:0 12px;border:1px solid var(--border-strong);border-radius:10px;background:var(--surface);color:var(--text);font-size:16px}.auth-link,.pat-help-link{font-size:14px}.auth-signin{display:flex;flex-direction:column;gap:10px}.auth-note{font-size:14px;color:var(--muted)}.auth-status{padding:6px 6px 0;font-size:13px;color:var(--muted)}.auth-status:empty{display:none}.auth-status-error{color:var(--danger)}.stepper{flex:none;display:flex;align-items:center;overflow:hidden;border:1px solid var(--border-strong);border-radius:10px}.stepper button{width:44px;height:44px;background:var(--sunken);font-size:18px;font-weight:500}.stepper input{width:48px;height:44px;padding:0;border:0;background:var(--surface);text-align:center;font-weight:600;-moz-appearance:textfield;appearance:textfield}.stepper input::-webkit-inner-spin-button,.stepper input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.segmented{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:4px;padding:3px;border-radius:10px;background:var(--segment-bg)}.segmented button{min-height:40px;padding:0 4px;border-radius:8px;color:var(--muted);font-size:14px;font-weight:500}.segmented button[aria-pressed=true]{background:var(--segment-on);color:var(--text);font-weight:600;box-shadow:0 1px 2px var(--shadow)}.theme-row .row-text{flex:none}.theme-row .segmented{flex:1 1 auto;max-width:220px;margin-left:auto}.switch{position:relative;flex:none;width:50px;height:30px;padding:3px;border-radius:15px;background:var(--switch-off);transition:background-color .15s}.switch:before{content:"";display:block;width:24px;height:24px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #0003;transition:transform .15s}.switch:after{content:"";position:absolute;inset:-7px}.switch[aria-checked=true]{background:var(--accent)}.switch[aria-checked=true]:before{transform:translate(20px)}.collection-key{font:500 15px var(--font-mono)}.collection-tag{display:block}.collection-tag:first-letter{text-transform:uppercase}.collection-add{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:12px 16px 16px}.collection-add input{font-family:var(--font-mono);font-size:15px}.collection-error{padding:0 6px;font-size:13px;color:var(--danger)}.collection-empty{padding:14px 16px;color:var(--muted)}.settings-footer{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;font-size:12px;color:var(--faint)}.settings-version{font-family:var(--font-mono)}.editor-backdrop{position:fixed;inset:0;z-index:100;display:flex;align-items:flex-end;justify-content:center;background:var(--overlay)}.editor-sheet{display:flex;flex-direction:column;gap:12px;width:100%;max-width:640px;max-height:92dvh;overflow-y:auto;padding:16px var(--gutter) calc(env(safe-area-inset-bottom) + 16px);border-radius:22px 22px 0 0;background:var(--surface);box-shadow:0 -8px 40px var(--shadow)}@media(min-width:720px){.editor-backdrop{align-items:center;padding:24px}.editor-sheet{padding:20px;border:1px solid var(--border);border-radius:22px}}.editor-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.editor-title{min-width:0}.editor-title h3{font-size:17px;font-weight:700}.editor-path{margin-top:2px;font:12px var(--font-mono);color:var(--muted);overflow-wrap:anywhere}.editor-close{margin:-8px -10px 0 0;color:var(--muted)}.editor-text{width:100%;padding:12px;border:1px solid var(--border-strong);border-radius:12px;background:var(--sunken);font:14px/1.6 var(--font-mono);resize:vertical}.editor-text::placeholder{color:var(--faint)}.editor-keep{display:flex;align-items:flex-start;gap:10px;margin-top:10px;font-size:14px;line-height:1.4;color:var(--muted);cursor:pointer}.editor-keep input{flex:none;width:18px;height:18px;margin:1px 0 0;accent-color:var(--accent)}.editor-status{font-size:14px;color:var(--muted)}.editor-error{font-size:14px;line-height:1.5;color:var(--danger)}.editor-actions{display:flex;justify-content:flex-end;gap:8px}.capture-target{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}.capture-deck,.capture-path{flex:1 1 140px;font-size:15px}.capture-path{font-family:var(--font-mono)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
