.progress{display:flex;flex-direction:column;gap:12px;padding:16px;background:var(--surface-1);border:1px solid var(--border);border-radius:16px}.progress-steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;list-style:none;margin:0;padding:0}.progress-steps li{margin:0;height:4px;position:relative}.progress-steps i{position:absolute;inset:0;background:var(--border-control);border-radius:2px;overflow:hidden}.progress-steps .is-done i{background:var(--text)}.progress-steps .is-current i{background:var(--border-control)}.progress-steps .is-current i:after{content:"";position:absolute;inset:0;background:var(--accent-text);transform-origin:left;animation:progress-run 1.4s var(--ease) infinite}.progress.is-failed .progress-steps i{background:var(--danger-text)}.progress-bar{height:6px;border-radius:3px;background:var(--border);overflow:hidden}.progress-bar b{display:block;height:100%;background:var(--accent-text);transform-origin:left;transition:transform var(--dur-flip) var(--ease)}.progress-bar b.is-indeterminate{width:35%;transform:none!important;animation:progress-slide 1.6s var(--ease) infinite}.progress.is-done .progress-bar b{background:var(--text)}.progress.is-failed .progress-bar{opacity:.4}.progress-label{margin:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px}.progress-label strong{animation:progress-breathe 2.2s ease-in-out infinite}.progress.is-done .progress-label strong,.progress.is-failed .progress-label strong{animation:none}@keyframes progress-run{0%{transform:scaleX(0)}70%{transform:scaleX(1);opacity:1}to{transform:scaleX(1);opacity:0}}@keyframes progress-slide{0%{transform:translate(-100%)}to{transform:translate(290%)}}@keyframes progress-breathe{0%,to{opacity:1}50%{opacity:.62}}@media(prefers-reduced-motion:reduce){.progress-steps .is-current i:after{animation:none;transform:scaleX(1)}.progress-bar b.is-indeterminate{animation:none;width:100%;opacity:.45}.progress-label strong{animation:none}.progress-bar b{transition:none}}:root{color-scheme:dark;--bg: #0A0A0A;--surface-1: #141414;--surface-2: #1C1C1C;--surface-3: #262626;--scrim: rgba(0, 0, 0, .72);--text: #F5F5F5;--text-2: #B3B3B3;--text-3: #8C8C8C;--accent-text: #FF4D5E;--accent-fill: #C8102E;--on-accent: #FFFFFF;--danger-text: #FF6B78;--border: #2E2E2E;--border-control: #6E6E6E;--focus-ring: #FFFFFF;--font-sans: -apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display", "Helvetica Neue", Arial, sans-serif;--font-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;--fs-display: 32px;--lh-display: 36px;--fw-display: 700;--ls-display: -.02em;--fs-h1: 24px;--lh-h1: 30px;--fw-h1: 700;--ls-h1: -.01em;--fs-h2: 20px;--lh-h2: 26px;--fw-h2: 600;--fs-title: 17px;--lh-title: 24px;--fw-title: 600;--fs-body: 16px;--lh-body: 24px;--fw-body: 400;--fs-small: 14px;--lh-small: 20px;--fs-caption: 13px;--lh-caption: 18px;--ls-caption: .06em;--fs-term: 28px;--lh-term: 34px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--sp-7: 48px;--gutter: 16px;--r-sm: 8px;--r-md: 12px;--r-lg: 16px;--r-pill: 999px;--touch-min: 48px;--grade-h: 56px;--tabbar-h: 56px;--icon: 24px;--icon-stroke: 1.75;--dur-tap: .12s;--dur-ui: .18s;--dur-flip: .24s;--ease: cubic-bezier(.2, 0, 0, 1)}@media(prefers-reduced-motion:reduce){:root{--dur-tap: 0ms;--dur-ui: 80ms;--dur-flip: 80ms}}*,*:before,*:after{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);margin:0}body{font:var(--fw-body) var(--fs-body)/var(--lh-body) var(--font-sans);-webkit-text-size-adjust:100%}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.safe-top{padding-top:max(var(--tg-content-safe-area-inset-top, 0px),env(safe-area-inset-top))}.safe-bottom{padding-bottom:max(var(--tg-content-safe-area-inset-bottom, 0px),env(safe-area-inset-bottom))}:root{--ease-out: cubic-bezier(.2, 0, 0, 1);--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-soft: cubic-bezier(.25, 1, .5, 1);--dur-exit: .15s;--dur-count: .4s;--dur-draw: .32s;--stagger: 36ms}@keyframes screen-in-fwd{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:none}}@keyframes screen-in-back{0%{opacity:0;transform:translate(-24px)}to{opacity:1;transform:none}}@keyframes tab-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.enter-fwd{animation:screen-in-fwd var(--dur-ui) var(--ease-out) both}.enter-back{animation:screen-in-back var(--dur-ui) var(--ease-out) both}.enter-tab{animation:tab-in var(--dur-ui) var(--ease-out) both}@keyframes fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.stagger>*{animation:fade-up var(--dur-ui) var(--ease-out) both;animation-delay:calc(var(--i, 0) * var(--stagger))}.press{transition:transform var(--dur-tap) var(--ease-out),background-color var(--dur-tap) var(--ease-out)}.press:active{transform:scale(.98);background-color:var(--surface-3)}.press.primary:active{background-color:#a60d26}.flip{perspective:1000px}.flip-inner{position:relative;transform-style:preserve-3d;transition:transform var(--dur-flip) var(--ease-out)}.flip.is-flipped .flip-inner{transform:rotateY(180deg)}.flip-face{backface-visibility:hidden;-webkit-backface-visibility:hidden}.flip-back{position:absolute;inset:0;transform:rotateY(180deg)}@keyframes card-out{to{opacity:0;transform:translate(-32px) scale(.98)}}@keyframes card-in{0%{opacity:0;transform:translate(32px) scale(.98)}to{opacity:1;transform:none}}.card-out{animation:card-out var(--dur-exit) var(--ease-in) both}.card-in{animation:card-in var(--dur-flip) var(--ease-out) both}.progress i{transform-origin:left center;transition:transform var(--dur-flip) var(--ease-soft)}@keyframes sheet-in{0%{transform:translateY(100%)}to{transform:none}}@keyframes sheet-out{to{transform:translateY(100%)}}@keyframes scrim-in{0%{opacity:0}to{opacity:1}}.sheet.enter{animation:sheet-in .24s var(--ease-soft) both}.sheet.leave{animation:sheet-out var(--dur-exit) var(--ease-in) both}.scrim.enter{animation:scrim-in var(--dur-ui) var(--ease-out) both}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes toast-out{to{opacity:0;transform:translateY(8px)}}.toast.enter{animation:toast-in var(--dur-ui) var(--ease-out) both}.toast.leave{animation:toast-out var(--dur-exit) var(--ease-in) both}@keyframes draw{0%{stroke-dashoffset:var(--len, 100)}to{stroke-dashoffset:0}}.draw{stroke-dasharray:var(--len, 100);animation:draw var(--dur-draw) var(--ease-soft) both}@keyframes tag-in{0%{opacity:0;transform:translate(-12px) skew(-12deg)}to{opacity:1;transform:skew(-12deg)}}.slant.enter{animation:tag-in .22s var(--ease-out) .12s both}.skel{position:relative;overflow:hidden;background:var(--surface-1)}.skel:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.06),transparent);animation:shimmer 1.4s linear infinite}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}@media(prefers-reduced-motion:reduce){.enter-fwd,.enter-back,.enter-tab,.stagger>*,.card-in,.toast.enter,.slant.enter,.sheet.enter{animation:fade-only 80ms linear both;animation-delay:0ms}.card-out,.toast.leave,.sheet.leave{animation:fade-out-only 80ms linear both}.flip-inner{transition:none}.flip.is-flipped .flip-inner{transform:none}.flip.is-flipped .flip-face.flip-front{display:none}.flip-back{position:static;transform:none}.press:active{transform:none}.draw{animation:none;stroke-dasharray:none}.progress i{transition:none}.skel:after{animation:none}}@keyframes fade-only{0%{opacity:0}to{opacity:1}}@keyframes fade-out-only{to{opacity:0}}*{box-sizing:border-box}button,input,select{font:inherit;color:inherit}button{cursor:pointer;background:none}button:disabled{cursor:default;opacity:.5}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}body{overflow-x:hidden}p{margin:0 0 12px;overflow-wrap:anywhere}h1,h2{margin:0;overflow-wrap:anywhere}h1{font-size:24px;line-height:30px}h2{font-size:20px;line-height:26px;margin-bottom:12px}small,.small{font-size:14px;line-height:20px;color:var(--text-2)}.muted{color:var(--text-2)}.label{font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3)}.app{max-width:640px;margin:0 auto;padding-left:max(var(--safe-left,0px),env(safe-area-inset-left));padding-right:max(var(--safe-right,0px),env(safe-area-inset-right));min-height:100dvh}.app>header{display:flex;align-items:center;gap:12px;padding:calc(16px + max(var(--safe-top,0px),env(safe-area-inset-top))) 16px 16px}.app>main{display:flex;flex-direction:column;gap:24px;padding:8px 16px calc(88px + max(var(--safe-bottom,0px),env(safe-area-inset-bottom)));min-width:0}.icon{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;flex:none}.icon-btn{border:0;min-width:48px;min-height:48px;display:grid;place-items:center}.btn{width:100%;min-height:48px;border:1px solid var(--border-control);border-radius:12px;font-weight:600;display:flex;align-items:center;justify-content:center;gap:8px;padding:12px 16px;text-align:center;line-height:24px}.btn.primary{background:var(--accent-fill);border-color:var(--accent-fill);color:var(--on-accent)}.btn.danger{border-color:var(--danger-text);color:var(--danger-text)}.btn.ghost{border-color:transparent}.card,.tile,.flash{background:var(--surface-1);border:1px solid var(--border);border-radius:16px;padding:16px}.list{background:var(--surface-1);border:1px solid var(--border);border-radius:16px;overflow:hidden}.li{border:0;border-top:1px solid var(--border);width:100%;min-height:64px;padding:12px;display:flex;align-items:center;gap:12px;text-align:left}.li:first-child{border-top:0}.rowtext{min-width:0;flex:1;display:flex;flex-direction:column;gap:4px}.rowtext>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.badge{font-size:13px;line-height:18px;font-weight:600;padding:2px 8px;border-radius:999px;border:1px solid var(--border-control);color:var(--text-2);white-space:nowrap;width:fit-content}.hero{text-align:center}.big{font-size:72px;line-height:80px;letter-spacing:-.04em;font-weight:700}.hero p{margin-top:8px}.slant{display:inline-block;background:var(--accent-fill);color:var(--on-accent);font-weight:700;font-size:14px;padding:2px 14px;transform:skew(-12deg)}.slant>span{display:inline-block;transform:skew(12deg)}nav{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:640px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));background:var(--bg);border-top:1px solid var(--border);padding-bottom:max(var(--safe-bottom,0px),env(safe-area-inset-bottom));z-index:5}.tab{border:0;position:relative;min-height:56px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:13px;font-weight:600;color:var(--text-3)}.tab.on{color:var(--text)}.tab.on:before{content:"";position:absolute;top:0;width:28px;height:2px;background:var(--accent-text)}.tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.tile{min-height:155px;text-align:left;display:flex;flex-direction:column;gap:12px;overflow-wrap:anywhere}.tile.selected{border-color:var(--border-control)}.tile.unsorted{border-style:dashed}.banner{border:1px solid var(--danger-text);border-radius:12px;padding:16px;background:var(--surface-1);display:flex;flex-direction:column;gap:12px}.banner>.icon{color:var(--danger-text)}.empty{text-align:center;display:flex;flex-direction:column;align-items:center;padding:32px 8px;gap:12px}.empty p{color:var(--text-2)}.skeletons{display:grid;gap:16px}.skeletons>.skel{height:100px;border-radius:12px}.skeletons>.skel:first-child{height:180px}.review-app>main{padding-bottom:max(24px,var(--safe-bottom,0px));min-height:calc(100dvh - 96px)}.review-progress{display:flex;gap:16px;align-items:center}.review-progress progress{flex:1;height:4px;accent-color:var(--text)}.review-app .flip{flex:1}.flip-inner{height:100%;min-height:390px}.flash{width:100%;height:100%;min-height:390px;display:flex;flex-direction:column;gap:24px;align-items:flex-start;justify-content:center;text-align:left;padding:24px}.flash img{max-height:220px;object-fit:contain}.term{font:600 28px/34px var(--font-mono);overflow-wrap:anywhere;max-width:100%}.flash p{font-size:20px;line-height:30px}.grades{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.grade{white-space:nowrap;font-size:clamp(13px,3.9vw,15px);height:56px;padding:0 2px;line-height:20px;border:1px solid var(--border-control);border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;font-weight:600}.grade small{font-size:13px;line-height:16px;color:var(--text-3);font-weight:400}.grade.forgot{color:var(--accent-text);border-color:var(--accent-text)}input:not([type=checkbox]),select{width:100%;min-width:0;min-height:48px;border:1px solid var(--border-control);border-radius:12px;background:var(--surface-1);padding:10px 12px}input::placeholder{color:var(--text-3)}label{display:flex;flex-direction:column;gap:8px}.search-field{flex-direction:row;align-items:center;background:var(--surface-1);border:1px solid var(--border-control);border-radius:12px;padding-left:12px}.search-field input{border:0}.search-row{width:100%;min-height:80px;border:0;border-top:1px solid var(--border);padding:16px;text-align:left}.search-row p{margin-top:8px;color:var(--text-2)}mark{background:#f5f5f52e;color:var(--text);font-weight:700;text-decoration:underline;text-decoration-color:var(--accent-text);text-underline-offset:3px}.seg{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--border-control);border-radius:12px;overflow:hidden}.seg button{border:0;min-height:48px;padding:8px;font-weight:600}.seg button[aria-pressed=true]{background:var(--text);color:var(--bg)}.chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}.chip{min-height:44px;padding:8px 16px;border:1px solid var(--border-control);border-radius:999px;display:flex;align-items:center;gap:12px}.toggle-row{flex-direction:row;align-items:center;min-height:48px;justify-content:space-between;gap:16px}.toggle-row input{min-width:44px;min-height:44px;accent-color:var(--text)}dl{margin:0}dt{font-family:var(--font-mono);font-weight:600}dd{margin:8px 0 24px}li{margin-bottom:12px}ul{padding-left:20px}details{border-top:1px solid var(--border);padding:8px 0}summary{min-height:48px;cursor:pointer;padding:12px 0;overflow-wrap:anywhere}details p{margin-top:12px}.visual-row{display:flex;gap:16px;align-items:flex-start;width:100%;border:1px solid var(--border);border-radius:12px;text-align:left;padding:12px;background:var(--surface-1);margin-bottom:12px}.visual-row img,.visual-row .image-skeleton{width:72px;height:72px;flex:none;object-fit:cover;border-radius:8px}.visual-row>span{display:flex;flex-direction:column;gap:4px;min-width:0}.visual-row>span>span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;color:var(--text-2)}img{width:100%;max-width:100%;border-radius:12px}.table-scroll{overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:12px;border-bottom:1px solid var(--border);overflow-wrap:anywhere}.stats>div{display:flex;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid var(--border);padding:12px 0}.stats dt{font-family:var(--font-sans);font-weight:400}.stats dd{margin:0}.scrim{position:fixed;inset:0;background:var(--scrim);display:flex;align-items:flex-end;z-index:20}.sheet{max-height:90dvh;overflow:auto;width:100%;max-width:640px;margin:auto auto 0;background:var(--surface-2);padding:24px 16px calc(16px + max(var(--safe-bottom,0px),env(safe-area-inset-bottom)));border-radius:16px 16px 0 0;display:flex;flex-direction:column;gap:16px}.toast{position:fixed;bottom:24px;left:16px;right:16px;background:var(--surface-2);border:1px solid var(--border-control);border-radius:12px;padding:16px;text-align:center;z-index:10}.formula{max-width:100%}.formula.block{display:block;overflow-x:auto;overflow-y:hidden;padding:12px 0}.formula small{display:block}.formula code{overflow-wrap:anywhere}.formula .katex{font-size:1.1em}.image-skeleton{height:180px}.app{overflow-x:clip}.flip-back{visibility:hidden}.is-flipped .flip-back{visibility:visible}.is-flipped .flip-front{visibility:hidden}.quota{display:flex;gap:12px;align-items:center;flex-wrap:wrap;font-size:14px;color:var(--text-2)}.quota-dots{display:flex;gap:8px}.quota-dots i{width:10px;height:10px;border:1px solid var(--border-control);border-radius:50%}.quota-dots i.used{background:var(--text);border-color:var(--text)}.quota.exhausted .quota-dots i.used{background:var(--accent-text);border-color:var(--accent-text)}.limit-ring{width:72px;height:72px;color:var(--accent-text);margin:0 auto}.limit-ring circle{fill:none;stroke:currentColor;stroke-width:4;stroke-dasharray:45 10}.limit{text-align:center}.limit .list{text-align:left}.limit .list p{padding:16px;margin:0;display:flex;gap:12px}.review-app>main{height:calc(var(--viewport,100dvh) - 112px);min-height:0}.review-app .flip,.review-app .flip-inner,.review-app .flash{min-height:0}.flash{overflow:auto}.flash img{max-height:40%;min-height:0;flex-shrink:1;object-fit:contain}.review-progress,.grades,.review-app main>.btn{flex-shrink:0}.file-input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.upload-secondary-btn{background:none;color:var(--text);font-weight:600}.upload-fallback{margin:0;color:var(--text-2);font-size:14px;text-align:center}.hl{color:var(--text);background:linear-gradient(to top,rgba(255,77,94,.32) 0 60%,transparent 60%);text-decoration:none;padding:0 .04em}.empty img{width:200px;height:140px;object-fit:contain}.credits-screen{position:fixed;inset:0;z-index:10;background:var(--bg);padding:12px 16px calc(16px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:12px}.credits-view{overflow:auto;overscroll-behavior:none;flex:1;padding-top:0;scrollbar-width:none;-webkit-mask-image:linear-gradient(to bottom,transparent,black 24px,black calc(100% - 28px),transparent);mask-image:linear-gradient(to bottom,transparent,black 24px,black calc(100% - 28px),transparent)}.paper{position:relative;margin-top:220px;margin-bottom:40px;background-color:#edeae0;background-image:repeating-linear-gradient(135deg,transparent 0 9px,rgba(20,17,15,.045) 9px 10px);color:#14110f;border:5px double #14110F;padding:22px 18px 28px;font:16px/1.5 Georgia,Times New Roman,serif;min-height:400px}.paper h2{font:700 19px/1.3 Georgia,Times New Roman,serif;padding-right:42px}.paper .emblem{position:absolute;right:12px;top:10px;width:42px;height:52px}.paper ol{padding-left:30px}.paper li{padding:3px 0}.stamp{position:relative;right:auto;top:auto;margin:22px 8px 14px auto;width:58%;min-width:145px;max-width:72%;transform:rotate(-9deg);color:#c8102e;border:3px solid #C8102E;padding:10px 16px;text-align:center;font:700 20px/1.2 Georgia,serif;mix-blend-mode:multiply}.stamp i{display:block;border-top:2px solid;margin:6px 0}.stamp i{display:block;border-top:1px solid;margin:2px 0}.signatures{display:grid;gap:12px;margin-top:22px}.signature-row{display:grid;grid-template-columns:minmax(58px,72px) minmax(0,1fr) 49px;align-items:end;gap:4px;min-height:56px;border-bottom:1px solid #14110F;padding-bottom:2px}.signature-row img{width:100%;height:48px;object-fit:contain;mix-blend-mode:multiply;transform-origin:left bottom}.signature-row span{font:14px Georgia,serif;white-space:nowrap}.signature-row b{font:700 16px/20px Georgia,serif;text-align:right;white-space:nowrap}.aliases i{font-size:.88em}.signature-row.is-writing img{animation:sig-write .85s steps(18,end) both}.stamp.is-stamped{animation:stamp-hit .26s cubic-bezier(.2,.8,.25,1) both}.credits-close{min-height:48px;border:1px solid var(--border-control);border-radius:12px}.egg-scrim{position:fixed;inset:0;z-index:30;background:var(--scrim);display:grid;place-items:center;animation:fade-only .18s var(--ease)}.egg-scrim img{width:100%;max-width:600px;border-radius:0}@media(prefers-reduced-motion:reduce){.egg-scrim{animation:none}}@keyframes stamp-hit{0%{opacity:0;transform:scale(1.7) rotate(-9deg)}70%{opacity:1;transform:scale(.95) rotate(-9deg)}to{opacity:1;transform:scale(1) rotate(-9deg)}}@keyframes sig-write{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}@media(prefers-reduced-motion:reduce){.signature-row img,.stamp,.stamp *{animation:none!important;clip-path:none!important}}.banner.offline{background-image:none;padding-right:16px}.banner.offline .icon{display:block}.offline-art{display:block;width:72px;height:52px;object-fit:contain}.credits-toolbar{height:48px;flex:none;display:grid;grid-template-columns:1fr auto 1fr;align-items:center}.credits-toolbar button{min-height:44px;border:0;padding:0 8px}.credits-toolbar button:last-child{text-align:right}.credits-toolbar strong{font-size:16px}.credits-view{min-height:0}.paper{margin-top:220px}.review-mode{margin-bottom:0}.quiz-question{display:flex;flex-direction:column;gap:16px;min-width:0}.quiz-question h2{margin:0;font-size:14px;line-height:20px;color:var(--text-2)}.quiz-options{display:grid;gap:10px}.quiz-option{width:100%;min-height:56px;border:1px solid var(--border-control);border-radius:12px;padding:12px 14px;display:flex;align-items:center;gap:12px;text-align:left;background:var(--surface-1);line-height:24px;overflow-wrap:anywhere}.quiz-option-text{min-width:0;flex:1}.quiz-letter{width:28px;height:28px;border:1px solid var(--border-control);border-radius:50%;display:grid;place-items:center;flex:none;font-weight:700;font-size:13px}.quiz-option.correct{background:var(--surface-1);border-color:var(--text)}.quiz-option.incorrect{color:var(--accent-text);border-color:var(--accent-text)}.quiz-option.muted{opacity:.5}.quiz-option.correct .icon{color:var(--text)}.quiz-option.incorrect .icon{color:var(--accent-text)}.quiz-result{display:flex;flex-direction:column;gap:4px;padding:12px 14px;border:1px solid var(--border);border-radius:12px;background:var(--surface-1)}.quiz-result small{color:var(--text-2)}@media(prefers-reduced-motion:reduce){.quiz-option,.quiz-result{transition:none}}.onboarding{gap:16px!important}.onboarding-art{display:block;width:min(100%,320px);height:180px;object-fit:contain;margin:0 auto}.onboarding-lead{font-size:18px;line-height:28px}.onboarding-list,.onboarding-steps{margin:0;padding-left:24px}.onboarding-list li,.onboarding-steps li{margin-bottom:10px}.onboarding-limit{font-weight:700}.terms{border-top:1px solid var(--border);padding-top:18px}.terms h2{font-size:18px}.terms p{font-size:13px;line-height:20px}.onboarding>.small{font-size:13px;text-align:center}.feedback textarea{width:100%;min-height:180px;resize:vertical;border:1px solid var(--border-control);border-radius:12px;background:var(--surface-1);padding:12px;line-height:24px}.feedback-counter{font-size:13px;color:var(--text-2);text-align:right}.feedback{gap:16px!important}.more-extras{position:fixed;left:50%;bottom:calc(72px + env(safe-area-inset-bottom));transform:translate(-50%);width:min(608px,calc(100% - 32px));display:grid;gap:8px;z-index:4}.extra-sheet{position:fixed;inset:0;z-index:10;background:var(--bg);overflow:auto;padding:16px 16px calc(96px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:16px}.extra-sheet>.terms{max-width:640px;margin:0 auto}.terms{border:1px solid var(--border);border-radius:12px;background:var(--surface-1)}.terms>summary{min-height:48px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;font-weight:600;cursor:pointer;list-style:none}.terms>summary::-webkit-details-marker{display:none}.terms>summary:after{content:"";width:10px;height:10px;border-right:2px solid var(--text-2);border-bottom:2px solid var(--text-2);transform:rotate(45deg);transition:transform var(--dur-ui) var(--ease);flex:none;margin-right:4px}.terms[open]>summary:after{transform:rotate(-135deg)}.terms>summary:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;border-radius:12px}.terms-body{padding:0 16px 8px}.terms-body p{font-size:14px;line-height:21px;color:var(--text-2);margin:0 0 12px}@media(prefers-reduced-motion:reduce){.terms>summary:after{transition:none}}.formula-trigger{cursor:zoom-in;min-height:48px;outline-offset:4px}.formula-sheet{gap:20px}.formula-sheet-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.formula-sheet-head h2{margin:0}.formula-large{width:100%;min-width:0;overflow-x:auto;overflow-y:hidden;padding:16px 0;background:var(--surface-1);border:1px solid var(--border);border-radius:12px}.formula-large .formula{display:block;width:max-content;min-width:100%;padding:0 16px;text-align:center}.formula-large .katex{font-size:clamp(1.25em,5vw,2em)}.formula-source{gap:8px}.formula-source textarea{width:100%;min-height:96px;resize:vertical;font:14px/20px var(--font-mono);background:var(--surface-1);border:1px solid var(--border-control);border-radius:12px;padding:12px;color:var(--text);overflow-wrap:normal;white-space:pre;overflow:auto}.formula-scrim,.formula-scrim .formula-sheet{animation:none}@media(prefers-reduced-motion:no-preference){.formula-scrim{animation:scrim-in var(--dur-ui) var(--ease-out) both}.formula-scrim .formula-sheet{animation:sheet-in .24s var(--ease-soft) both}}@media(prefers-reduced-motion:reduce){.formula-scrim,.formula-scrim .formula-sheet{animation:none!important}}button,a,summary,[role=button],[tabindex]{touch-action:manipulation;-webkit-tap-highlight-color:transparent}summary:focus-visible,a:focus-visible,[role=button]:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;border-radius:8px}h1,h2,.empty p,.hero p{text-wrap:balance}p,.rowtext>span,.search-row p{text-wrap:pretty}.big,.badge,.grade small,.stats dd,.review-progress,.tab{font-variant-numeric:tabular-nums}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}button:disabled,.btn:disabled{opacity:.62}@media(forced-colors:active){.btn.primary,.tab.on:before{forced-color-adjust:none;border:1px solid CanvasText}}@media(hover:hover){.li:hover,.tile:hover,.search-row:hover{background-color:var(--surface-2)}}@font-face{font-family:Jost;src:url(/fonts/Jost-VF.ttf) format("truetype");font-weight:100 900;font-style:normal;font-display:swap}:root{--font-display:"Jost",var(--font-sans)}.app>header h1{font-family:var(--font-display);font-weight:300;font-size:34px;line-height:40px;letter-spacing:-.015em}h2{font-family:var(--font-display);font-weight:600;letter-spacing:.005em}.big{font-family:var(--font-display);font-weight:300;font-size:96px;line-height:96px;letter-spacing:-.03em}#onboarding-title{font-family:var(--font-display);font-weight:300;letter-spacing:-.01em}.hero p{font-family:var(--font-display);font-weight:500;font-size:18px;line-height:26px}.label{font-family:var(--font-display);font-weight:500;letter-spacing:.12em}.btn{font-family:var(--font-display);font-weight:600;font-size:17px;letter-spacing:.03em}.btn.primary{font-weight:700}.slant{font-family:var(--font-display);font-weight:700;letter-spacing:.04em}.tab{font-family:var(--font-display);font-weight:500;letter-spacing:.02em}.tab.on{font-weight:700}.grade{font-family:var(--font-display);font-weight:600}.badge{font-family:var(--font-display);font-weight:600;letter-spacing:.02em}.more-extras{bottom:calc(73px + max(var(--safe-bottom,0px),env(safe-area-inset-bottom)))}main[data-screen=more]{gap:8px}main[data-screen=more] .btn,.more-extras .btn{justify-content:space-between;text-align:left;background:var(--surface-1);border-color:var(--border);padding:12px 16px;min-height:56px}main[data-screen=more] .btn:after,.more-extras .btn:after{content:"";width:9px;height:9px;border-right:1.75px solid var(--text-3);border-top:1.75px solid var(--text-3);transform:rotate(45deg);flex:none;margin-right:4px}main[data-screen=more] .btn.ghost{background:transparent;border-color:transparent;color:var(--text-2)}.search-empty{padding-top:56px;color:var(--text-3)}.search-empty .icon{width:32px;height:32px}.toggle-row input[type=checkbox]{appearance:none;-webkit-appearance:none;min-width:52px;min-height:44px;width:52px;height:44px;background:transparent;border:0;position:relative;flex:none;margin:0}.toggle-row input[type=checkbox]:before{content:"";position:absolute;left:0;top:6px;width:52px;height:32px;box-sizing:border-box;border-radius:999px;background:var(--surface-3);border:1px solid var(--border-control);transition:background-color var(--dur-tap,.12s) var(--ease-out)}.toggle-row input[type=checkbox]:after{content:"";position:absolute;top:10px;left:4px;width:24px;height:24px;border-radius:50%;background:var(--text-2);transition:transform var(--dur-tap,.12s) var(--ease-out),background-color var(--dur-tap,.12s) var(--ease-out)}.toggle-row input[type=checkbox]:checked:before{background:var(--text);border-color:var(--text)}.toggle-row input[type=checkbox]:checked:after{transform:translate(20px);background:var(--bg)}.toggle-row input[type=checkbox]:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;border-radius:999px}@media(prefers-reduced-motion:reduce){.toggle-row input[type=checkbox]:before,.toggle-row input[type=checkbox]:after{transition:none}}@media(forced-colors:active){.toggle-row input[type=checkbox]{appearance:auto;-webkit-appearance:auto}.toggle-row input[type=checkbox]:before,.toggle-row input[type=checkbox]:after{display:none}}.enter-fwd,.enter-back,.enter-tab{animation-fill-mode:backwards}.app:has(.scrim)>nav{pointer-events:none}@keyframes p5-sweep{0%{transform:translate(var(--from)) skew(var(--sk))}to{transform:translate(var(--to)) skew(var(--sk))}}@keyframes p5-in-r{0%{opacity:0;transform:translate(-36px) skew(-6deg)}to{opacity:1;transform:none}}@keyframes p5-in-l{0%{opacity:0;transform:translate(36px) skew(6deg)}to{opacity:1;transform:none}}@keyframes p5-mark{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.p5-wipe{position:fixed;inset:0;z-index:15;pointer-events:none;overflow:hidden}.p5-r,.p5-l{--from:-80vw;--to:170vw;--sk:-18deg}.p5-wipe.p5-r{transform:scaleX(-1)}.p5-wipe i{position:absolute;top:-8%;bottom:-8%;left:0;transform:translate(var(--from)) skew(var(--sk));animation:p5-sweep var(--d,.36s) cubic-bezier(.7,0,.2,1) var(--dl,0ms) both}.p5-wipe .p5-black{left:0;width:36vw;background:var(--bg);--dl:70ms;--d:.38s}.p5-wipe .p5-gray{left:14vw;width:26vw;background:var(--surface-3);--dl:50ms;--d:.37s}.p5-wipe .p5-dark{left:22vw;width:22vw;background:#a60d26;--dl:35ms;--d:.36s}.p5-wipe .p5-red{left:30vw;width:30vw;background:var(--accent-fill);--dl:15ms;--d:.35s}.p5-wipe .p5-white{left:54vw;width:3vw;background:var(--text);--dl:10ms;--d:345ms}.p5-wipe .p5-pink{left:58vw;width:8vw;background:var(--accent-text);--dl:0ms;--d:.34s}.enter-p5.p5-r{animation:p5-in-l .26s var(--ease-out) .2s backwards}.enter-p5.p5-l{animation:p5-in-r .26s var(--ease-out) .2s backwards}.tab.on:before{transform-origin:center;animation:p5-mark .24s var(--ease-out) .12s both}@media(prefers-reduced-motion:reduce){.p5-wipe{display:none}.enter-p5.p5-r,.enter-p5.p5-l{animation:fade-only 80ms linear both}.tab.on:before{animation:none}}.title-p5.p5-r{animation:p5-in-l .24s var(--ease-out) .3s backwards}.title-p5.p5-l{animation:p5-in-r .24s var(--ease-out) .3s backwards}nav{isolation:isolate}.tab{z-index:1}.tab.on:before{content:none}.tab span{line-height:16px}.tab{letter-spacing:0}.tab-lens{position:absolute;left:0;top:1px;width:25%;height:54px;transform:translate(calc(var(--i,0) * 100%));transition:transform .32s cubic-bezier(.2,.9,.3,1.04),opacity .16s linear;pointer-events:none;z-index:0}.tab-lens:before{content:"";position:absolute;inset:0 3px;border-radius:16px;background:var(--surface-2);border:1px solid var(--border);transition:transform .16s var(--ease-out),border-color .16s var(--ease-out)}.tab-lens:after{content:"";position:absolute;top:0;left:50%;width:24px;margin-left:-12px;height:2px;border-radius:0 0 2px 2px;background:var(--accent-text)}.tab-lens.grab:before{transform:scale(1.08);border-color:var(--border-control)}.tab-lens.off{opacity:0}@media(prefers-reduced-motion:reduce){.title-p5.p5-r,.title-p5.p5-l{animation:fade-only 80ms linear both}.tab-lens,.tab-lens:before{transition:none}}main[data-screen=today]{gap:16px}main[data-screen=today]>.label{margin:-8px 0 -4px}.dash{display:flex;align-items:center;gap:16px;min-width:0}.dash .big{font-family:var(--font-display);font-weight:300;font-size:72px;line-height:72px;letter-spacing:-.03em;flex:none}.dash-r{display:flex;flex-direction:column;gap:6px;min-width:0}.dash-t{margin:0;font:600 17px/22px var(--font-display)}.dash-m{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.dash-m .slant{font-size:13px;line-height:20px}.stats-wrap{margin-right:-16px}.carousel{overflow:hidden;touch-action:pan-y;user-select:none;-webkit-user-select:none}.carousel .track{display:flex;gap:8px;will-change:transform}.carousel .track.animate{transition:transform .24s var(--ease-out)}.carousel .slide{flex:0 0 calc(100% - 26px);min-width:0;transition:opacity .24s var(--ease-out);position:relative}.carousel .slide:not(.active){opacity:.45}.carousel .slide:not(.active):after{content:"";position:absolute;inset:0;border-radius:16px;background:linear-gradient(to right,#0a0a0a26,#0a0a0a8c);pointer-events:none}.statcard{height:214px;background:var(--surface-1);border:1px solid var(--border);border-radius:16px;padding:14px 16px;overflow:hidden;display:flex;flex-direction:column}.statcard-h{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:10px}.statcard-h h3{margin:0;font:600 16px/22px var(--font-display);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.statcard-h span{font:500 12px/16px var(--font-display);color:var(--text-3);white-space:nowrap}.stats-wrap .dots{display:flex;justify-content:center;gap:6px;margin:10px 16px 0 0}.stats-wrap .dots span{width:4px;height:4px;border-radius:2px;background:var(--text-3);opacity:.6;transition:width .24s var(--ease-out),opacity .24s var(--ease-out)}.stats-wrap .dots span.on{width:14px;background:var(--text);opacity:1}.carousel:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px;border-radius:16px}.cal-days,.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.cal-days{text-align:center;font:500 11px/14px var(--font-display);color:var(--text-3);margin-bottom:4px}.cal i,.cal b{height:20px;border-radius:4px;background:#f5f5f5}.cal b{background:none}.cal i.l1{background:#f9c3c9}.cal i.l2{background:#ff8794}.cal i.l3{background:var(--accent-text)}.cal i.l4{background:#e8102f}.cal i.today{outline:2px solid var(--text);outline-offset:1.5px}.cal-foot{display:flex;justify-content:space-between;gap:8px;margin-top:auto;padding-top:8px;font:500 12px/16px var(--font-display);color:var(--text-3)}.big3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:4px}.big3 b{display:block;font:300 40px/44px var(--font-display);letter-spacing:-.02em}.big3 b small{font:600 15px/1 var(--font-display);vertical-align:16px;margin-left:1px;color:inherit}.big3 span{font-size:14px;line-height:18px;color:var(--text-2)}.streakline{display:flex;gap:4px;margin-top:auto}.streakline i{flex:1;height:6px;border-radius:3px;background:#e8102f}.streakline i.off{background:#f5f5f5}.weak .li{min-height:56px;padding:8px 14px}.weak-q{font:600 15px/20px var(--font-mono)}.weak-n{font:600 13px/18px var(--font-display);color:var(--accent-text);white-space:nowrap;flex:none}.upload-secondary>.btn.primary{background:none;border-color:var(--border-control);color:var(--text);font-weight:600}@media(prefers-reduced-motion:reduce){.carousel .track.animate,.carousel .slide,.stats-wrap .dots span{transition:none}}.tut{position:fixed;inset:0;z-index:40}.tut-hole{position:fixed;border-radius:16px;box-shadow:0 0 0 200vmax #050505bd;outline:1.5px solid rgba(245,245,245,.35);outline-offset:0;transition:top .28s var(--ease-out),left .28s var(--ease-out),width .28s var(--ease-out),height .28s var(--ease-out);pointer-events:none}.tut-tip{position:fixed;left:16px;right:16px;max-width:608px;margin:0 auto;background:var(--surface-2);border:1px solid var(--border-control);border-radius:16px;padding:14px 16px 16px;display:flex;flex-direction:column;gap:8px;animation:tut-in .22s var(--ease-out) both}.tut-tip h2{margin:0;font:600 20px/26px var(--font-display)}.tut-tip p{margin:0;color:var(--text-2);font-size:15px;line-height:22px}.tut-head{display:flex;justify-content:space-between;align-items:center}.tut-count{font:500 13px/18px var(--font-display);letter-spacing:.08em;color:var(--text-3)}.tut-skip{border:0;background:none;color:var(--text-2);font:500 15px/20px var(--font-display);min-height:44px;min-width:44px;padding:0 4px}.tut-dots{display:flex;gap:6px;margin:2px 0 4px}.tut-dots span{width:4px;height:4px;border-radius:2px;background:var(--text-3);opacity:.6}.tut-dots span.on{width:14px;background:var(--text);opacity:1}.tut-finger{position:fixed;width:28px;height:28px;border-radius:50%;background:#f5f5f58c;box-shadow:0 0 0 6px #f5f5f51f;pointer-events:none}.tut-finger.swipe{animation:tut-swipe 1.8s var(--ease-out) .4s 3}.tut-finger.hold{animation:tut-hold 2.4s var(--ease-out) .4s 3}@keyframes tut-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes tut-swipe{0%{opacity:0;transform:translate(0)}15%{opacity:1;transform:translate(0)}70%{opacity:1;transform:translate(var(--span))}to{opacity:0;transform:translate(var(--span))}}@keyframes tut-hold{0%{opacity:0;transform:translate(0) scale(1)}12%{opacity:1;transform:translate(0) scale(1)}30%{transform:translate(0) scale(.82)}75%{opacity:1;transform:translate(var(--span)) scale(.82)}to{opacity:0;transform:translate(var(--span)) scale(1)}}@media(prefers-reduced-motion:reduce){.tut-hole{transition:none}.tut-tip{animation:none}.tut-finger{animation:none;opacity:.55}}
