:root{--bg: #f4f2ed;--surface: #ffffff;--surface-2: #efece4;--surface-3: #e3ded3;--border: rgba(20, 33, 61, .1);--border-strong: rgba(20, 33, 61, .18);--text: #14213d;--dim: #5a6478;--faint: #6a7383;--accent: #14213d;--accent-ink: #f4f2ed;--accent-soft: rgba(20, 33, 61, .09);--gold: #d9a441;--good: #2e8b57;--good-soft: rgba(46, 139, 87, .13);--info: #8a6414;--info-soft: rgba(217, 164, 65, .2);--warn: #a3470b;--warn-soft: rgba(180, 83, 14, .14);--danger: #c2333c;--danger-soft: rgba(194, 51, 60, .12);--r-lg: 18px;--r: 13px;--r-sm: 10px;--shadow: 0 1px 2px rgba(20, 33, 61, .05), 0 8px 24px -14px rgba(20, 33, 61, .3);--shadow-lift: 0 12px 40px -12px rgba(20, 33, 61, .38);--nav-h: 60px;--gutter: 16px;--maxw: 640px;--c: var(--accent)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #0e1526;--surface: #141c31;--surface-2: #1c2740;--surface-3: #27334f;--border: rgba(244, 242, 237, .1);--border-strong: rgba(244, 242, 237, .2);--text: #eceff6;--dim: #a0aac0;--faint: #7f8aa3;--accent: #9db0e0;--accent-ink: #0e1526;--accent-soft: rgba(157, 176, 224, .16);--gold: #d9a441;--good: #4ccf8f;--good-soft: rgba(76, 207, 143, .15);--info: #e7c579;--info-soft: rgba(231, 197, 121, .16);--warn: #e39a4a;--warn-soft: rgba(227, 154, 74, .16);--danger: #ff8189;--danger-soft: rgba(255, 129, 137, .14);--shadow: 0 1px 2px rgba(0, 0, 0, .45);--shadow-lift: 0 18px 50px -18px rgba(0, 0, 0, .8)}}:root[data-theme=dark]{--bg: #0e1526;--surface: #141c31;--surface-2: #1c2740;--surface-3: #27334f;--border: rgba(244, 242, 237, .1);--border-strong: rgba(244, 242, 237, .2);--text: #eceff6;--dim: #a0aac0;--faint: #7f8aa3;--accent: #9db0e0;--accent-ink: #0e1526;--accent-soft: rgba(157, 176, 224, .16);--gold: #d9a441;--good: #4ccf8f;--good-soft: rgba(76, 207, 143, .15);--info: #e7c579;--info-soft: rgba(231, 197, 121, .16);--warn: #e39a4a;--warn-soft: rgba(227, 154, 74, .16);--danger: #ff8189;--danger-soft: rgba(255, 129, 137, .14);--shadow: 0 1px 2px rgba(0, 0, 0, .45);--shadow-lift: 0 18px 50px -18px rgba(0, 0, 0, .8)}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:15px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;-webkit-font-smoothing:antialiased;overflow:hidden}button,input,select,textarea{font-family:inherit;color:inherit;-webkit-tap-highlight-color:transparent}button{touch-action:manipulation;cursor:pointer}button:disabled{cursor:default}h1,h2,h3{margin:0;font-weight:640;letter-spacing:-.012em}h1{font-size:24px;font-weight:700;letter-spacing:-.02em}h2{font-size:16px}h3{font-size:14px}p{margin:0}a{color:var(--accent)}::selection{background:var(--accent-soft)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.muted{color:var(--dim)}.small{font-size:13px}.tiny{font-size:12px}.block{display:block}.grow{flex:1;min-width:0}.gap-top{margin-top:12px}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.85em}.fine{color:var(--dim);font-size:13px}.ok-text{color:var(--good);font-size:13.5px}.warn-text{color:var(--warn);font-size:13.5px}.ic{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}.ic.filled{fill:currentColor}.ic-inline{width:15px;height:15px;vertical-align:-3px}.app{height:100%;display:flex;flex-direction:column-reverse}.main{flex:1;min-height:0;position:relative}.tab-pane{height:100%}.tab-pane[hidden]{display:none}.screen{height:100%;overflow-y:auto;overscroll-behavior-y:contain}.screen-body{max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter) 24px;animation:rise .2s ease both}@keyframes rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.shell-top{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:saturate(1.4) blur(12px);-webkit-backdrop-filter:saturate(1.4) blur(12px)}header.top{display:flex;align-items:center;gap:10px;max-width:var(--maxw);margin:0 auto;padding:calc(14px + env(safe-area-inset-top)) var(--gutter) 12px}header.top .titles{min-width:0;flex:1}header.top .title{font-size:21px;font-weight:700;letter-spacing:-.02em}header.top .sub{color:var(--dim);font-size:12.5px;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hbtn{position:relative;flex:0 0 auto;min-width:42px;height:42px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--text);box-shadow:var(--shadow)}.hbtn:active{transform:scale(.94)}.hbtn.wide{padding:0 5px 0 12px}.hbtn.refresh:active .ic{transform:rotate(180deg);transition:transform .3s ease}.toast{position:absolute;left:50%;top:calc(64px + env(safe-area-inset-top));z-index:30;transform:translate(-50%);width:max-content;max-width:calc(100% - 32px);padding:10px 16px;border-radius:999px;background:var(--text);color:var(--bg);font-size:13.5px;font-weight:550;box-shadow:var(--shadow-lift);animation:toast .2s ease}@keyframes toast{0%{opacity:0;transform:translate(-50%,-6px)}to{opacity:1;transform:translate(-50%)}}.stack>*+*{margin-top:12px}nav.tabs{z-index:40;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:2px;padding:6px 6px env(safe-area-inset-bottom);background:color-mix(in srgb,var(--surface) 92%,transparent);backdrop-filter:saturate(1.5) blur(14px);-webkit-backdrop-filter:saturate(1.5) blur(14px);border-top:1px solid var(--border)}nav.tabs button{min-height:48px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:4px 0 5px;border:0;border-radius:var(--r-sm);background:none;color:var(--faint);font-size:10.5px;font-weight:550;letter-spacing:.01em;white-space:nowrap}nav.tabs button .ico{display:grid;place-items:center;width:min(40px,100%);height:26px;border-radius:999px;transition:background .18s ease,color .18s ease}nav.tabs button.active{color:var(--accent)}nav.tabs button.active .ico{background:var(--accent-soft)}nav.tabs .brand{display:none}@media(min-width:900px){:root{--sidebar: 232px}.app{flex-direction:row}header.top{max-width:none;padding:22px 28px 14px}header.top .title{font-size:24px}.screen-body{max-width:none;padding:0 28px 32px}nav.tabs{width:var(--sidebar);flex:none;grid-template-columns:1fr;grid-auto-rows:max-content;align-content:start;gap:3px;padding:18px 12px calc(18px + env(safe-area-inset-bottom));border-top:0;border-right:1px solid var(--border);background:var(--surface)}nav.tabs .brand{display:flex;align-items:center;gap:9px;padding:4px 12px 18px;font-size:15px;font-weight:680;letter-spacing:-.015em}nav.tabs .brand img{width:26px;height:26px;border-radius:7px}nav.tabs button{flex-direction:row;justify-content:flex-start;gap:12px;min-height:44px;padding:0 12px;border-radius:var(--r);font-size:14px;font-weight:560}nav.tabs button:hover{background:var(--surface-2);color:var(--text)}nav.tabs button .ico{width:24px;height:24px;border-radius:var(--r-sm)}nav.tabs button.active{background:var(--accent-soft)}nav.tabs button.active .ico{background:none}.stack{columns:340px;column-gap:16px}.stack>*{break-inside:avoid;margin:0 0 16px}.stack>*+*{margin-top:0}}.card{display:block;width:100%;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:16px;box-shadow:var(--shadow);text-align:left}.card.flush{padding:4px 16px}.card-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:12px}.card-head h2{flex:1;min-width:0}.card-head .side{color:var(--dim);font-size:12.5px;white-space:nowrap}.link{color:var(--accent);font-size:13px;font-weight:550;background:none;border:0;padding:0;white-space:nowrap;align-self:center}.link:disabled{color:var(--faint)}.section-title{color:var(--dim);font-size:12.5px;font-weight:620;letter-spacing:-.005em;margin:18px 2px 6px}.empty{color:var(--dim);font-size:13.5px;padding:6px 0 2px}.hint{color:var(--dim);font-size:13px;margin-top:10px}.card-head+.hint,.card>.hint:first-child{margin-top:0;margin-bottom:12px}.note{margin-top:6px;color:var(--dim);font-size:12.5px}.note.warn{color:var(--warn)}.item{display:flex;align-items:flex-start;gap:12px;padding:12px 0;border-top:1px solid var(--border)}.item:first-child{border-top:0}.item .body{flex:1;min-width:0}.item .body .t{font-weight:560;line-height:1.35;word-break:break-word}.item .meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:5px;color:var(--dim);font-size:12.5px}.item .track{margin-top:9px}.item-ico{flex:none;width:34px;height:34px;display:grid;place-items:center;border-radius:var(--r-sm);background:var(--accent-soft);color:var(--accent)}.item-ico.gold{background:var(--info-soft);color:var(--info)}.row-card{display:flex;align-items:center;gap:12px;color:inherit}.pill{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;padding:3px 9px;border-radius:999px;background:var(--surface-2);color:var(--dim);font-size:11.5px;font-weight:550;white-space:nowrap}.dot{display:inline-block;width:7px;height:7px;margin-right:6px;vertical-align:1px;border-radius:50%;background:var(--c)}.pill.late{background:var(--danger-soft);color:var(--danger)}.pill.soon{background:var(--warn-soft);color:var(--warn)}.pill.ok{background:var(--accent-soft);color:var(--accent)}.pill.good{background:var(--good-soft);color:var(--good)}.pill.subj{background:color-mix(in srgb,var(--c) 14%,transparent);color:var(--text);font-weight:620}.pill.reason.review{background:var(--good-soft);color:var(--good)}.pill.reason.retry{background:var(--danger-soft);color:var(--danger)}.pill.reason.practice{background:var(--info-soft);color:var(--info)}.legend{display:flex;flex-wrap:wrap;gap:6px}.swatch{display:inline-block;flex:none;width:10px;height:10px;border-radius:3px;background:var(--c)}.icon-btn{flex:0 0 auto;position:relative;width:36px;height:36px;display:grid;place-items:center;border:0;border-radius:50%;background:none;color:var(--faint)}.icon-btn:hover{background:var(--surface-2);color:var(--text)}.icon-btn.on{color:var(--gold)}.icon-btn.on.warn{color:var(--danger)}.icon-btn:before{content:"";position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:44px;padding:10px 16px;border:1px solid var(--border-strong);border-radius:var(--r);background:var(--surface);color:var(--text);font-size:14.5px;font-weight:570;transition:transform .06s ease,background .15s ease,opacity .15s ease}.btn:active:not(:disabled){transform:scale(.985)}.btn:disabled{opacity:.45}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn.subtle{background:var(--surface-2);border-color:transparent}.btn.ghost{background:none;border-color:transparent;color:var(--dim)}.btn.danger{color:var(--danger);border-color:var(--danger-soft);background:none}.btn.primary.danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn.small{min-height:36px;padding:7px 12px;font-size:13px;border-radius:var(--r-sm)}.btn.block{width:100%}.btn.big{min-height:50px;font-size:15.5px}.row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:4px}.row.center{justify-content:center}.seg{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:3px;padding:3px;background:var(--surface-2);border-radius:var(--r)}.seg button{min-height:38px;border:0;border-radius:var(--r-sm);background:none;color:var(--dim);font-size:13.5px;font-weight:570}.seg button.active{background:var(--surface);color:var(--text);box-shadow:var(--shadow)}.seg.mini{flex:none;width:92px;padding:2px;gap:2px}.seg.mini button{min-height:30px;font-size:12px}.chips{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none}.chips::-webkit-scrollbar{display:none}.chip-btn{flex:0 0 auto;min-height:38px;padding:7px 12px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface);color:var(--dim);font-size:13px;font-weight:570;white-space:nowrap}.chip-btn.active{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.chip-btn .dot{margin-right:5px}.track{display:block;height:7px;border-radius:999px;background:var(--surface-3);overflow:hidden;margin-top:8px}.track>i{display:block;height:100%;border-radius:999px;background:var(--accent);transition:width .35s ease}.track-label{margin-top:10px;color:var(--dim);font-size:12.5px}.feed-wrap{position:relative;height:100%;display:flex;flex-direction:column}.feed-top{display:flex;align-items:center;gap:10px;width:100%;max-width:calc(var(--maxw) + var(--gutter) * 2);margin:0 auto;padding:calc(10px + env(safe-area-inset-top)) var(--gutter) 8px}.feed-header{display:none!important}@media(min-width:900px){.feed-header{display:flex!important;width:100%}.feed-top{max-width:none;padding:0 28px 10px}.slide{padding:4px 28px 20px}}.subject-strip{flex:1;min-width:0;padding-right:20px;mask-image:linear-gradient(90deg,#000 88%,transparent);-webkit-mask-image:linear-gradient(90deg,#000 88%,transparent)}.streak{display:inline-flex;align-items:center;gap:3px;font-size:13.5px;font-weight:650;color:var(--faint);font-variant-numeric:tabular-nums}.streak .ic{width:17px;height:17px}.streak.lit{color:var(--text)}.streak.lit .ic{color:var(--gold);fill:var(--gold)}.ring{--p: 0;width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--accent) calc(var(--p) * 360deg),var(--surface-3) 0)}.ring span{width:25px;height:25px;border-radius:50%;background:var(--surface);display:grid;place-items:center;font-size:11px;font-weight:700;font-variant-numeric:tabular-nums}.feed{flex:1;min-height:0;overflow-y:auto;scroll-snap-type:y mandatory;overscroll-behavior-y:contain;scrollbar-width:none}.feed::-webkit-scrollbar{display:none}.slide{height:100%;scroll-snap-align:start;scroll-snap-stop:always;padding:4px var(--gutter) 12px;display:flex}.empty-feed{flex:1;display:grid;place-content:center;text-align:center;gap:14px;padding:24px;color:var(--dim)}.feed-card{position:relative;flex:1;min-height:0;width:100%;max-width:var(--maxw);margin:0 auto;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow);overflow:hidden}.feed-card:before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:var(--c);opacity:.9}.fc-head{display:flex;align-items:flex-start;gap:8px;padding:14px 10px 10px 16px;border-bottom:1px solid var(--border)}.fc-titles{flex:1;min-width:0}.fc-pills{display:flex;flex-wrap:wrap;gap:5px}.fc-topic{margin-top:6px;color:var(--dim);font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fc-actions{display:flex;gap:0;margin-top:-3px}.card-scroll{flex:1;min-height:0;overflow-y:auto;overscroll-behavior-y:auto;padding:0 16px;display:flex;flex-direction:column}.card-body{width:100%;margin:auto 0;display:flex;flex-direction:column;gap:12px;padding:16px 0}.fc-foot{display:flex;align-items:center;gap:10px;min-height:52px;padding:8px 10px 8px 16px;border-top:1px solid var(--border)}.prov{flex:1;min-width:0;display:flex;align-items:center;gap:5px;border:0;background:none;padding:4px 0;text-align:left;font-size:12px;color:var(--faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.prov-prescribed,.prov-syllabus,.prov-exam-format{color:var(--good)}.next-btn{position:relative;animation:rise .25s ease}.xp-pop{position:absolute;left:50%;top:-20px;transform:translate(-50%);color:var(--info);font-size:12px;font-weight:750;white-space:nowrap;animation:floatup 1.4s ease forwards;pointer-events:none}@keyframes floatup{0%{opacity:1;transform:translate(-50%,6px)}to{opacity:0;transform:translate(-50%,-14px)}}.prompt{font-size:18px;font-weight:620;line-height:1.42;letter-spacing:-.01em}.prompt.big{font-size:21px}.prompt .para,.body .para,.answer .para{display:block;height:.6em}.kicker{color:var(--dim);font-size:11.5px;font-weight:680;text-transform:uppercase;letter-spacing:.07em}.title{font-size:19px;font-weight:700;letter-spacing:-.015em}.card-body .body{font-size:15px;color:var(--text)}.bullets,.dos,.donts{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px;font-size:14.5px}.bullets li,.dos li,.donts li{padding-left:22px;position:relative}.bullets li:before{content:"";position:absolute;left:7px;top:9px;width:6px;height:6px;border-radius:50%;background:var(--c)}.dos li:before{content:"✓";position:absolute;left:3px;color:var(--good);font-weight:800}.donts li:before{content:"✕";position:absolute;left:3px;color:var(--danger);font-weight:800}.explain,.example,.model,.final-answer,.stage,.keypoints,.quick-check{background:var(--surface-2);border-radius:var(--r);padding:12px 14px;font-size:14.5px}.explain-title{display:block;color:var(--dim);font-size:11px;font-weight:680;text-transform:uppercase;letter-spacing:.07em;margin-bottom:4px}.final-answer{background:var(--accent-soft);font-weight:650;font-size:15.5px}.reveal{display:flex;flex-direction:column;gap:10px;animation:rise .22s ease}.frac{display:inline-flex;flex-direction:column;align-items:stretch;vertical-align:middle;text-align:center;margin:.1em .14em;line-height:1.2;font-size:.94em}.frac>.fn{padding:0 .18em .1em}.frac>.fd{padding:.1em .18em 0;border-top:max(2px,.1em) solid currentColor}.frac .frac{font-size:.9em}.flip{width:100%;min-height:168px;padding:24px 18px;display:grid;place-items:center;text-align:center;border:1px dashed var(--border-strong);border-radius:var(--r);background:var(--surface-2);color:var(--text);transition:transform .12s ease}.flip:active{transform:scale(.99)}.flip.is-flipped{min-height:0;padding:16px;border-style:solid;border-color:var(--border);cursor:default}.flip-front{display:flex;flex-direction:column;gap:12px;align-items:center;width:100%}.tap-hint{font-size:12px;font-weight:600;color:var(--faint);text-transform:uppercase;letter-spacing:.07em}.answer{font-size:17px;font-weight:650;text-align:center;padding:14px;border-radius:var(--r);background:var(--accent-soft)}.options{display:flex;flex-direction:column;gap:8px}.option{display:flex;gap:12px;align-items:center;width:100%;text-align:left;min-height:50px;padding:10px 12px;border:1px solid var(--border-strong);border-radius:var(--r);background:var(--surface);color:var(--text);font-size:14.5px;transition:background .15s ease,border-color .15s ease,opacity .2s ease,transform .06s ease}.option:hover:not(:disabled){background:var(--surface-2)}.option:active:not(:disabled){transform:scale(.985)}.options.compact .option{min-height:44px}.opt-key{flex:none;width:26px;height:26px;border-radius:8px;display:grid;place-items:center;font-size:12px;font-weight:700;background:var(--surface-2);color:var(--dim)}.option.right{border-color:var(--good);background:var(--good-soft)}.option.right .opt-key{background:var(--good);color:#fff}.option.wrong{border-color:var(--danger);background:var(--danger-soft);animation:shake .28s}.option.wrong .opt-key{background:var(--danger);color:#fff}.option.dim{opacity:.5}@keyframes shake{25%{transform:translate(-4px)}75%{transform:translate(4px)}}.verdict{font-weight:700;font-size:15.5px}.verdict.ok{color:var(--good)}.verdict.no{color:var(--danger)}.answer-input{width:100%;min-height:44px;padding:10px 12px;border:1px solid var(--border-strong);border-radius:var(--r);background:var(--surface);color:var(--text);font-size:15px;resize:vertical}.answer-input:focus{outline:2px solid var(--accent);outline-offset:0}.answer-input.single{font-size:16px}.answer-input:disabled{background:var(--surface-2)}.cloze{font-size:17px;line-height:2.2;font-weight:560}.blank{margin:0 3px;padding:0 6px;max-width:70vw;border:0;border-bottom:2px solid var(--accent);border-radius:6px 6px 0 0;background:var(--surface-2);color:var(--text);text-align:center;font-weight:650;font-size:16px}.blank-chip{margin:0 3px;padding:0 8px;min-width:60px;line-height:1.6;border:0;border-bottom:2px dashed var(--accent);border-radius:6px 6px 0 0;background:var(--surface-2);color:var(--text);font-weight:650}.blank-chip.filled{border-bottom-style:solid}.blank.right,.blank-chip.right{border-color:var(--good);color:var(--good)}.blank.wrong,.blank-chip.wrong{border-color:var(--danger);color:var(--danger)}.choice-chips{display:flex;flex-wrap:wrap;gap:8px}.choice{min-height:38px;padding:7px 12px;border:1px solid var(--border-strong);border-radius:var(--r-sm);background:var(--surface);font-size:14px;font-weight:570}.choice:disabled{opacity:.35}.build-line{min-height:54px;padding:8px;display:flex;flex-wrap:wrap;gap:6px;align-items:center;border:1px dashed var(--border-strong);border-radius:var(--r);background:var(--surface-2)}.build-line.right{border:1px solid var(--good);background:var(--good-soft)}.build-line.wrong{border:1px solid var(--danger);background:var(--danger-soft)}.tiles{display:flex;flex-wrap:wrap;gap:8px}.tile{min-height:38px;padding:7px 12px;border:1px solid var(--border-strong);border-radius:var(--r-sm);background:var(--surface);font-weight:570;font-size:14.5px;box-shadow:var(--shadow);transition:transform .06s ease,opacity .2s ease}.tile:active:not(:disabled){transform:scale(.95)}.tile:disabled:not(.placed){opacity:.25;box-shadow:none}.tile.placed{box-shadow:none}.tile-n{font-size:11px;color:var(--faint);margin-right:6px}.steps{margin:0;padding:0;list-style:none;counter-reset:step;display:flex;flex-direction:column;gap:8px}.step{counter-increment:step;position:relative;padding:10px 12px 10px 42px;background:var(--surface-2);border-radius:var(--r);animation:rise .22s ease;font-size:14.5px}.step:before{content:counter(step);position:absolute;left:11px;top:10px;width:22px;height:22px;border-radius:50%;background:var(--accent);color:var(--accent-ink);font-size:12px;font-weight:700;display:grid;place-items:center}.why{color:var(--dim);font-size:13px;margin-top:4px}.essay-prompt{font-style:italic;font-weight:560}.stage ul,.keypoints ul{margin:4px 0 0;padding-left:18px}.keypoints li.hit{color:var(--good)}.keypoints li.miss{color:var(--dim)}.grade-bar{display:flex;flex-direction:column;gap:8px;margin-top:2px}.grade-prompt{font-size:12.5px;color:var(--dim);font-weight:620}.grade-buttons{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.grade{min-height:44px;padding:8px 6px;border:1px solid var(--border-strong);border-radius:var(--r);background:var(--surface);font-weight:620;font-size:13.5px;display:inline-flex;align-items:center;justify-content:center;gap:7px}.grade:before{content:"";width:9px;height:9px;border-radius:50%;flex:none}.grade.g0:before{background:var(--danger)}.grade.g1:before{background:var(--gold)}.grade.g2:before{background:var(--good)}.grade.g0:hover{background:var(--danger-soft)}.grade.g1:hover{background:var(--info-soft)}.grade.g2:hover{background:var(--good-soft)}.grade:disabled{opacity:.5}.grade-done{color:var(--dim);font-size:13px;text-align:center;padding:4px}.milestone{justify-content:center}.milestone:before{background:var(--gold)}.milestone-body{max-width:420px;margin:auto;padding:24px;text-align:center;display:flex;flex-direction:column;gap:10px;align-items:center}.milestone-body h2{font-size:21px;font-weight:700}.milestone-icon{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;margin-bottom:4px;animation:pop .4s cubic-bezier(.2,1.5,.4,1)}.milestone-icon .ic{width:30px;height:30px;stroke-width:2}.milestone-icon.good{background:var(--good-soft);color:var(--good)}.milestone-icon.gold{background:var(--info-soft);color:var(--info)}.milestone-icon.accent{background:var(--accent-soft);color:var(--accent)}@keyframes pop{0%{transform:scale(.4);opacity:0}}.modal-back{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:flex;align-items:flex-end;justify-content:center;background:#090d1280;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:fade .15s ease}@keyframes fade{0%{opacity:0}to{opacity:1}}.modal{width:100%;max-width:520px;max-height:90dvh;display:flex;flex-direction:column;background:var(--surface);border-radius:22px 22px 0 0;box-shadow:var(--shadow-lift);animation:sheet .22s cubic-bezier(.2,.9,.3,1);overflow:hidden}@keyframes sheet{0%{transform:translateY(24px)}to{transform:none}}.modal .grab{flex:none;width:38px;height:4px;margin:9px auto 2px;border-radius:999px;background:var(--surface-3)}.modal .sheet-body{flex:1 1 auto;overflow-y:auto;padding:10px var(--gutter) 4px}.modal .sheet-body h2{margin-bottom:10px}.modal .sheet-foot{flex:none;display:flex;gap:8px;padding:12px var(--gutter) calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--border)}.modal .sheet-foot .btn{flex:1}@media(min-width:560px){.modal-back{align-items:center;padding:20px}.modal{border-radius:20px;max-height:84dvh}.modal .grab{display:none}.modal .sheet-body{padding-top:18px}}.info p{margin:6px 0;font-size:14px}.path{margin:0 0 4px;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px;font-size:14px}.path li{display:flex;gap:10px}.path b{flex:none;width:76px;color:var(--dim);font-weight:600;font-size:12.5px;padding-top:1px}.flag-reasons{display:flex;flex-direction:column;gap:8px;margin-top:12px}.subject-card{padding:0;overflow:hidden}.subject-head{width:100%;display:flex;align-items:center;gap:12px;padding:14px 16px;border:0;background:none;text-align:left;color:inherit}.subject-head .swatch{width:12px;height:12px}.subject-name{font-weight:650}.chev{color:var(--faint);transition:transform .18s ease;display:grid}.chev.open{transform:rotate(90deg)}.subject-detail{padding:0 16px 14px;display:flex;flex-direction:column;gap:8px;align-items:flex-start}.subject-detail>.btn{margin:4px 0 2px}.topic-list{width:100%}.subject-detail .note{margin-top:4px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.stat{padding:12px 8px;border-radius:var(--r);background:var(--surface-2);text-align:center}.stat b{display:block;font-size:19px;font-weight:680;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.stat b small{font-size:13px;color:var(--dim);font-weight:600}.stat span{display:block;margin-top:2px;color:var(--dim);font-size:11.5px;line-height:1.3}.level-row{margin-top:14px}.week{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;height:120px}.week-col{display:flex;flex-direction:column;align-items:center;gap:5px;min-height:0}.week-col small{color:var(--faint);font-size:11.5px}.week-track{position:relative;flex:1;width:100%;display:flex;justify-content:center;align-items:flex-end}.week-bar{width:100%;max-width:26px;min-height:3px;border-radius:6px 6px 3px 3px;background:var(--accent);opacity:.85}.week-bar.met{background:var(--gold);opacity:1}.week-goal{position:absolute;left:0;right:0;border-top:1px dashed var(--border-strong)}.subject-row{width:100%;display:flex;align-items:center;gap:10px;padding:8px 0;border:0;background:none;color:inherit;text-align:left}.subject-row .nm{flex:0 0 auto;width:118px;display:flex;align-items:center;gap:8px;font-size:14px;font-weight:560;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.subject-row .track-wrap{flex:1}.subject-row .track-wrap .track{margin:0}.subject-row .val{flex:0 0 auto;width:44px;text-align:right;color:var(--dim);font-size:12.5px;font-variant-numeric:tabular-nums}.pick-list{margin:0 -4px}.pick-row{display:flex;align-items:center;gap:8px;border-top:1px solid var(--border)}.pick-row .pick-main{flex:1;min-width:0}.pick-row:first-child{border-top:0}.pick-main{width:100%;min-height:50px;display:flex;align-items:center;gap:12px;padding:8px 4px;border:0;background:none;color:inherit;text-align:left;font-size:14.5px}.pick-main+.pick-main{border-top:1px solid var(--border)}.pick-name{flex:1;min-width:0;font-weight:560}.pick-main .swatch{width:12px;height:12px;margin:0 6px 0 4px}.tick{flex:none;width:24px;height:24px;border-radius:50%;border:2px solid var(--border-strong);display:grid;place-items:center;color:var(--accent-ink)}.tick .ic{width:15px;height:15px;stroke-width:2.4}.pick-row.on .tick,.pick-main.on .tick{background:var(--accent);border-color:var(--accent)}.goal-n{width:36px;font-size:18px;font-weight:700;font-variant-numeric:tabular-nums}.onboarding{height:100%;overflow-y:auto;background:var(--bg)}.ob-step{max-width:520px;margin:0 auto;padding:calc(28px + env(safe-area-inset-top)) var(--gutter) 32px;display:flex;flex-direction:column;gap:14px;animation:rise .25s ease both}.ob-step.hero{min-height:100%;justify-content:center}.ob-step.hero h1{font-size:30px;line-height:1.15}.logo{width:60px;height:60px;border-radius:16px;box-shadow:var(--shadow)}.vis{margin:0}.vis-graph svg{width:100%;max-width:420px;display:block;margin:0 auto;background:var(--surface-2);border-radius:var(--r)}.vis-graph .grid line{stroke:var(--border)}.vis-graph .axes line{stroke:var(--border-strong);stroke-width:1.3}.vis-graph .curve{fill:none;stroke:var(--c);stroke-width:2.4;stroke-linejoin:round}.vis-graph .curve.thin{stroke-width:1.6;stroke-dasharray:4 3}.vis-graph .curve.dashed{stroke:var(--gold);stroke-dasharray:6 4}.vis-graph .pt circle{fill:var(--gold);stroke:var(--surface);stroke-width:1.5}.vis-graph .pt text,.axis-label{fill:var(--text);font-size:10px;font-weight:600}.vis figcaption{text-align:center;font-size:12.5px;color:var(--dim);margin-top:6px}.vis-table{overflow-x:auto}.vis-table table{width:100%;border-collapse:collapse;font-size:13.5px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r);overflow:hidden}.vis-table th,.vis-table td{padding:7px 10px;text-align:left;border-bottom:1px solid var(--border)}.vis-table th{background:var(--surface-2);color:var(--dim);font-size:11.5px;font-weight:650;text-transform:uppercase;letter-spacing:.05em}.vis-table td.num{text-align:right;font-variant-numeric:tabular-nums}.vis-table tr.total td{border-top:2px solid var(--border-strong);font-weight:700}.vis-table tr.hl td{background:var(--info-soft);font-weight:650}.table-title{text-align:left!important;font-weight:650;color:var(--text)!important;margin:0 0 6px!important;font-size:13.5px!important}.vis-note{color:var(--dim);font-size:12.5px;margin-top:6px}.vis-structure svg{display:block;margin:0 auto;width:100%}.vis-structure .bond{stroke:var(--text);stroke-width:2}.vis-structure .atom circle{fill:var(--surface)}.vis-structure .atom text{fill:var(--text);font-size:15px;font-weight:700}.vis-structure .atom-O text{fill:var(--danger)}.vis-structure .atom-N text{fill:var(--accent)}.vis-structure .atom-H text{fill:var(--dim);font-weight:500}.bar-row{display:grid;grid-template-columns:90px 1fr 50px;gap:8px;align-items:center;font-size:13px;margin:4px 0}.bar-track{height:7px;border-radius:999px;background:var(--surface-3);overflow:hidden}.bar-fill{display:block;height:100%;background:var(--c)}.vis-flow{display:flex;flex-direction:column;gap:6px}.flow-step{padding:8px 12px;border-radius:var(--r-sm);background:var(--surface-2)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
