@font-face{font-family:Fraunces;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/fraunces-vietnamese-400-normal-CvGt0Ybw.woff2) format("woff2"),url(/assets/fraunces-vietnamese-400-normal-B65MOf9T.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/fraunces-latin-ext-400-normal-D8gbi3Gu.woff2) format("woff2"),url(/assets/fraunces-latin-ext-400-normal-UihxqfOe.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/fraunces-latin-400-normal-6IfK1voy.woff2) format("woff2"),url(/assets/fraunces-latin-400-normal-NUPT2cO8.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/fraunces-vietnamese-600-normal-BjlAJixd.woff2) format("woff2"),url(/assets/fraunces-vietnamese-600-normal-DlAl5EAR.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/fraunces-latin-ext-600-normal-BtzmzP0X.woff2) format("woff2"),url(/assets/fraunces-latin-ext-600-normal-B0Dy4lqi.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/fraunces-latin-600-normal-BFCDtZfi.woff2) format("woff2"),url(/assets/fraunces-latin-600-normal-DL5QCzvS.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Instrument Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/assets/instrument-sans-latin-ext-wght-normal-B5bTHO_g.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/assets/instrument-sans-latin-wght-normal-BbzFLZTg.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2) format("woff2"),url(/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-cyrillic-ext-600-normal-V-xxqcpd.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-600-normal-9HEixskS.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-cyrillic-600-normal-CTOM6hUh.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-600-normal-fLZuRloM.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-vietnamese-600-normal-D2EvbN8M.woff2) format("woff2"),url(/assets/ibm-plex-mono-vietnamese-600-normal-iLQfcSjf.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-latin-ext-600-normal-D38SheWl.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-ext-600-normal-DmB0ttJJ.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-latin-600-normal-BgSNZQsw.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-600-normal-DWFSQ4vo.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--ink: #0b1220;--ink-2: #0e1728;--surface: #121c30;--surface-2: #182440;--line: rgba(141, 162, 191, .16);--bone: #e9eef6;--slate: #8da2bf;--scrub: #4fd1b5;--scrub-deep: #2ca58c;--plasma: #f4c95d;--alert: #f0647a;--iris: #9d8cff;--moss: #8fc97e;--sky: #6cb8f0;--scrub-ink: #06231c;--shadow: 0 18px 50px -12px rgba(0, 0, 0, .55);--radius: 18px;--radius-sm: 12px;--font-display: "Fraunces", "Georgia", serif;--font-body: "Instrument Sans Variable", "Instrument Sans", system-ui, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, monospace;--safe-bottom: env(safe-area-inset-bottom, 0px)}:root[data-theme=light]{--ink: #f4f2ec;--ink-2: #ece9e1;--surface: #ffffff;--surface-2: #f0ede6;--line: rgba(28, 43, 66, .12);--bone: #16233a;--slate: #5b6d87;--scrub: #0f9d84;--scrub-deep: #0b7d69;--plasma: #b98718;--alert: #d43f5e;--iris: #6d59e6;--moss: #4e9440;--sky: #2277c4;--scrub-ink: #ffffff;--shadow: 0 14px 40px -14px rgba(28, 43, 66, .25)}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--ink);color:var(--bone);font-family:var(--font-body);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}h1,h2,h3{font-family:var(--font-display);font-weight:560;letter-spacing:-.01em;margin:0}p{margin:0}button{font:inherit;color:inherit;background:none;border:none;padding:0;cursor:pointer}input,textarea,select{font:inherit}a{color:var(--scrub);text-decoration:none}:focus-visible{outline:2px solid var(--scrub);outline-offset:2px;border-radius:4px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.shell{min-height:100%;display:flex;flex-direction:column;max-width:720px;margin:0 auto}.shell-main{flex:1;padding:20px 20px calc(96px + var(--safe-bottom))}@media(min-width:900px){.shell{max-width:1040px;flex-direction:row;gap:32px;padding:0 24px}.shell-main{padding:32px 0 48px}}.tabbar{position:fixed;bottom:0;left:0;right:0;z-index:40;display:flex;justify-content:space-around;padding:8px 12px calc(10px + var(--safe-bottom));background:color-mix(in srgb,var(--ink) 82%,transparent);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border-top:1px solid var(--line)}.tabbar button{display:flex;flex-direction:column;align-items:center;gap:3px;font-size:11px;color:var(--slate);min-width:62px;padding:4px 6px;border-radius:10px;transition:color .15s}.tabbar button.active{color:var(--scrub)}@media(min-width:900px){.tabbar{position:sticky;top:0;align-self:flex-start;flex-direction:column;justify-content:flex-start;gap:6px;width:200px;height:100vh;padding:28px 12px;background:none;backdrop-filter:none;border-top:none;border-right:1px solid var(--line)}.tabbar .brand{margin-bottom:22px}.tabbar button{flex-direction:row;gap:12px;font-size:15px;width:100%;justify-content:flex-start;padding:10px 14px}.tabbar button.active{background:color-mix(in srgb,var(--scrub) 12%,transparent)}}.brand{font-family:var(--font-display);font-weight:640;font-size:22px;letter-spacing:.02em;color:var(--bone);display:none}@media(min-width:900px){.brand{display:block}}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:13px 22px;border-radius:999px;font-weight:600;font-size:16px;transition:transform .12s,opacity .15s,background .15s;user-select:none}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn-primary{background:var(--scrub);color:var(--scrub-ink)}.btn-primary:not(:disabled):hover{background:color-mix(in srgb,var(--scrub) 88%,white)}.btn-ghost{background:color-mix(in srgb,var(--slate) 14%,transparent);color:var(--bone)}.btn-danger{background:color-mix(in srgb,var(--alert) 16%,transparent);color:var(--alert)}.btn-block{width:100%}.btn-sm{padding:8px 14px;font-size:14px}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.field label{font-size:13px;font-weight:600;color:var(--slate);text-transform:uppercase;letter-spacing:.06em}.input,textarea.input,select.input{width:100%;background:var(--ink-2);color:var(--bone);border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px 14px;transition:border-color .15s}.input:focus{outline:none;border-color:var(--scrub)}textarea.input{resize:vertical;min-height:96px;line-height:1.55}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.muted{color:var(--slate)}.small{font-size:13px}.row{display:flex;align-items:center;gap:10px}.row-between{display:flex;align-items:center;justify-content:space-between;gap:10px}.stack{display:flex;flex-direction:column;gap:12px}.screen-title{font-size:30px;margin-bottom:4px}.screen-sub{color:var(--slate);margin-bottom:22px}.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:999px;font-size:13px;font-weight:600;background:color-mix(in srgb,var(--slate) 14%,transparent);color:var(--slate)}.chip.on{background:color-mix(in srgb,var(--scrub) 16%,transparent);color:var(--scrub)}.dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.c-scrub{color:var(--scrub)}.bg-scrub{background:var(--scrub)}.c-plasma{color:var(--plasma)}.bg-plasma{background:var(--plasma)}.c-alert{color:var(--alert)}.bg-alert{background:var(--alert)}.c-iris{color:var(--iris)}.bg-iris{background:var(--iris)}.c-moss{color:var(--moss)}.bg-moss{background:var(--moss)}.c-sky{color:var(--sky)}.bg-sky{background:var(--sky)}.hero-count{font-family:var(--font-display);font-size:clamp(72px,22vw,120px);font-weight:620;line-height:.95;letter-spacing:-.03em}.hero-label{color:var(--slate);font-size:15px;margin-top:2px}.ecg-wrap{margin:18px 0 6px}.ecg-line{stroke:var(--scrub);fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.ecg-line.flat{stroke:var(--slate);opacity:.6}.ecg-draw{stroke-dasharray:1200;stroke-dashoffset:1200;animation:ecg-draw 1.6s ease-out forwards}@keyframes ecg-draw{to{stroke-dashoffset:0}}.ecg-caption{display:flex;justify-content:space-between;font-family:var(--font-mono);font-size:12px;color:var(--slate)}.review-screen{min-height:100dvh;display:flex;flex-direction:column;max-width:640px;margin:0 auto;padding:16px 20px calc(16px + var(--safe-bottom))}.review-top{display:flex;align-items:center;gap:14px;margin-bottom:10px}.review-progress{flex:1;height:4px;border-radius:4px;background:color-mix(in srgb,var(--slate) 18%,transparent);overflow:hidden}.review-progress>div{height:100%;background:var(--scrub);border-radius:4px;transition:width .35s cubic-bezier(.3,.9,.3,1)}.review-beat{width:26px;height:26px;color:var(--scrub);transition:transform .12s}.review-beat.pulse{animation:beat .5s cubic-bezier(.2,.9,.3,1.4)}@keyframes beat{0%{transform:scale(1)}30%{transform:scale(1.45)}60%{transform:scale(.92)}to{transform:scale(1)}}.review-card{flex:1;display:flex;flex-direction:column;justify-content:center;gap:18px;padding:12px 0;overflow-y:auto}.review-face{font-size:21px;line-height:1.55;white-space:pre-wrap;overflow-wrap:break-word}.review-face img{max-width:100%;border-radius:var(--radius-sm)}.review-divider{border:none;border-top:1px solid var(--line);margin:4px 0}.review-answer{color:var(--scrub);animation:fade-up .28s ease-out}@keyframes fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.cloze-hole{display:inline-block;min-width:64px;padding:0 10px;border-radius:8px;background:color-mix(in srgb,var(--plasma) 18%,transparent);color:var(--plasma);font-weight:600;text-align:center}.cloze-answer{color:var(--plasma);font-weight:650;border-bottom:2px solid var(--plasma);animation:fade-up .28s ease-out}.review-tap{padding:15px;text-align:center;color:var(--slate);border:1px dashed var(--line);border-radius:var(--radius);font-size:15px}.grade-row{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.grade-btn{display:flex;flex-direction:column;align-items:center;gap:2px;padding:12px 4px 10px;border-radius:var(--radius-sm);font-weight:700;font-size:15px;transition:transform .1s}.grade-btn:active{transform:scale(.95)}.grade-btn .ivl{font-family:var(--font-mono);font-size:11px;font-weight:400;opacity:.75}.grade-again{background:color-mix(in srgb,var(--alert) 16%,transparent);color:var(--alert)}.grade-hard{background:color-mix(in srgb,var(--plasma) 15%,transparent);color:var(--plasma)}.grade-good{background:color-mix(in srgb,var(--scrub) 15%,transparent);color:var(--scrub)}.grade-easy{background:color-mix(in srgb,var(--sky) 15%,transparent);color:var(--sky)}.qcm-option{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:13px 16px;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--surface);font-size:16px;transition:border-color .12s,background .12s}.qcm-option.selected{border-color:var(--sky);background:color-mix(in srgb,var(--sky) 10%,transparent)}.qcm-option.correct{border-color:var(--scrub);background:color-mix(in srgb,var(--scrub) 12%,transparent)}.qcm-option.wrong{border-color:var(--alert);background:color-mix(in srgb,var(--alert) 12%,transparent)}.occlusion-stage{position:relative;border-radius:var(--radius-sm);overflow:hidden;touch-action:none}.occlusion-stage img{display:block;width:100%}.occlusion-stage svg{position:absolute;inset:0;width:100%;height:100%}.mask-rect{fill:color-mix(in srgb,var(--slate) 75%,var(--ink));stroke:var(--slate);stroke-width:.4;rx:1.2}.mask-rect.target{fill:color-mix(in srgb,var(--plasma) 80%,var(--ink));stroke:var(--plasma)}.mask-rect.editing{fill:color-mix(in srgb,var(--plasma) 40%,transparent);stroke:var(--plasma);stroke-width:.6}.list-item{display:flex;align-items:center;gap:14px;width:100%;text-align:left;padding:16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);transition:transform .12s}.list-item:active{transform:scale(.985)}.list-item .grow{flex:1;min-width:0}.list-item .title{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-preview{font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fab{position:fixed;right:20px;bottom:calc(92px + var(--safe-bottom));z-index:30;width:58px;height:58px;border-radius:50%;background:var(--scrub);color:var(--scrub-ink);display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow);transition:transform .12s}.fab:active{transform:scale(.92)}@media(min-width:900px){.fab{bottom:32px}}.stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.stat-tile .v{font-family:var(--font-display);font-size:34px;font-weight:600;line-height:1.1}.stat-tile .l{color:var(--slate);font-size:13px}.heatmap{display:grid;grid-auto-flow:column;grid-template-rows:repeat(7,1fr);gap:3px;overflow-x:auto;padding-bottom:6px}.heatmap .cell{width:11px;height:11px;border-radius:3px;background:color-mix(in srgb,var(--slate) 12%,transparent)}.heatmap .cell[data-level="1"]{background:color-mix(in srgb,var(--scrub) 30%,transparent)}.heatmap .cell[data-level="2"]{background:color-mix(in srgb,var(--scrub) 55%,transparent)}.heatmap .cell[data-level="3"]{background:color-mix(in srgb,var(--scrub) 80%,transparent)}.heatmap .cell[data-level="4"]{background:var(--scrub)}.forecast{display:flex;align-items:flex-end;gap:5px;height:90px}.forecast .bar{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;height:100%;justify-content:flex-end;font-family:var(--font-mono);font-size:10px;color:var(--slate)}.forecast .bar>i{display:block;width:100%;border-radius:4px 4px 2px 2px;background:color-mix(in srgb,var(--scrub) 55%,transparent)}.sheet-backdrop{position:fixed;inset:0;z-index:60;background:#04081099;backdrop-filter:blur(4px);display:flex;align-items:flex-end;justify-content:center;animation:fade .18s ease-out}@keyframes fade{0%{opacity:0}}.sheet{width:100%;max-width:640px;max-height:88dvh;overflow-y:auto;background:var(--surface);border-radius:22px 22px 0 0;padding:10px 20px calc(24px + var(--safe-bottom));animation:slide-up .24s cubic-bezier(.3,.9,.3,1)}@keyframes slide-up{0%{transform:translateY(40px);opacity:.5}}.sheet-grip{width:40px;height:4px;border-radius:4px;background:var(--line);margin:4px auto 16px}@media(min-width:900px){.sheet-backdrop{align-items:center}.sheet{border-radius:22px}}.toast-host{position:fixed;bottom:calc(104px + var(--safe-bottom));left:0;right:0;z-index:90;display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none;padding:0 20px}.toast{pointer-events:auto;max-width:480px;background:var(--surface);color:var(--bone);border:1px solid var(--line);border-radius:999px;box-shadow:var(--shadow);padding:11px 20px;font-size:14.5px;animation:slide-up .22s cubic-bezier(.3,.9,.3,1)}.toast.warn{border-color:color-mix(in srgb,var(--plasma) 50%,transparent)}.toast.error{border-color:color-mix(in srgb,var(--alert) 50%,transparent)}.auth-screen{min-height:100dvh;display:flex;flex-direction:column;justify-content:center;max-width:420px;margin:0 auto;padding:32px 24px}.auth-logo{font-family:var(--font-display);font-size:44px;font-weight:640;letter-spacing:.02em;margin-bottom:2px}.auth-tag{color:var(--slate);margin-bottom:28px}.empty{text-align:center;color:var(--slate);padding:44px 20px;border:1px dashed var(--line);border-radius:var(--radius)}.spin{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.seg{display:flex;background:var(--ink-2);border:1px solid var(--line);border-radius:999px;padding:3px;gap:2px}.seg button{flex:1;padding:8px 12px;border-radius:999px;font-size:14px;font-weight:600;color:var(--slate)}.seg button.on{background:var(--scrub);color:var(--scrub-ink)}.src-ai,.src-ai-edited{background:color-mix(in srgb,var(--iris) 16%,transparent);color:var(--iris)}.src-import{background:color-mix(in srgb,var(--slate) 14%,transparent);color:var(--slate)}.src-shared{background:color-mix(in srgb,var(--sky) 16%,transparent);color:var(--sky)}.src-flag{background:color-mix(in srgb,var(--plasma) 16%,transparent);color:var(--plasma)}.ai-panel{margin:4px 0 16px;border-color:color-mix(in srgb,var(--iris) 30%,var(--line))}.ai-panel .chip:not(:disabled):hover{background:color-mix(in srgb,var(--iris) 18%,transparent);color:var(--iris)}.ai-panel .chip:disabled{opacity:.45;cursor:not-allowed}.ai-proposal{margin-top:12px;padding:14px;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--iris) 8%,transparent);border:1px dashed color-mix(in srgb,var(--iris) 45%,transparent);animation:fade-up .25s ease-out}.review-tool{display:inline-flex;padding:4px;border-radius:8px}.review-tool:disabled{opacity:.3}.review-tool.on{color:var(--plasma)}.type-tiles{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.type-tile{display:flex;flex-direction:column;align-items:flex-start;gap:8px;text-align:left;padding:14px;border-radius:var(--radius);border:1.5px solid var(--line);background:var(--surface);transition:border-color .15s,transform .12s,background .15s}.type-tile:active{transform:scale(.98)}.type-tile .t{font-weight:650;font-size:15px}.type-tile .d{color:var(--slate);font-size:12.5px;line-height:1.35}.type-tile.on{border-color:var(--tile);background:color-mix(in srgb,var(--tile) 9%,var(--surface))}.type-tile .card-glyph{width:34px;height:34px}.card-glyph{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:9px;flex-shrink:0;background:color-mix(in srgb,var(--tile) 16%,transparent);color:var(--tile)}.type-basic{--tile: var(--sky)}.type-cloze{--tile: var(--plasma)}.type-qcm{--tile: var(--moss)}.type-occlusion{--tile: var(--iris)}.review-crumb{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--slate);margin-bottom:10px;min-height:20px}.review-stage{flex:1;display:flex;flex-direction:column;justify-content:center;gap:18px;padding:22px 20px;margin-bottom:14px;border-radius:22px;background:var(--surface);border:1px solid var(--line);border-left:5px solid var(--subject, var(--scrub));box-shadow:0 1px color-mix(in srgb,var(--subject, var(--scrub)) 25%,transparent) inset;overflow-y:auto;cursor:pointer;animation:stage-in .28s cubic-bezier(.3,.9,.3,1)}@keyframes stage-in{0%{opacity:0;transform:translateY(10px) scale(.985)}}.review-stage.revealed{cursor:default}.grade-row .grade-btn{padding:14px 4px 11px;font-size:15.5px}.grade-btn .key{font-family:var(--font-mono);font-size:10px;opacity:.5;display:none}@media(min-width:900px){.grade-btn .key{display:block}}.end-hero{font-family:var(--font-display);font-size:84px;font-weight:620;line-height:1;letter-spacing:-.03em;color:var(--scrub)}.end-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;width:100%;max-width:420px}.end-grid .card{padding:12px 8px;text-align:center}.end-grid .v{font-family:var(--font-display);font-size:24px;font-weight:600}.end-grid .l{font-size:12px;color:var(--slate)}.subject-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}.subject-chips .chip{gap:6px;background:color-mix(in srgb,var(--c) 14%,transparent);color:var(--c)}.empty-illu{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;padding:36px 20px;border:1px dashed var(--line);border-radius:var(--radius);color:var(--slate)}.empty-illu svg{width:120px;height:84px}.empty-illu .t{color:var(--bone);font-family:var(--font-display);font-size:20px}.onboard-backdrop{position:fixed;inset:0;z-index:80;background:color-mix(in srgb,var(--ink) 92%,transparent);backdrop-filter:blur(10px);display:flex;align-items:center;justify-content:center;padding:24px}.onboard{width:100%;max-width:420px;text-align:center}.onboard .step{font-family:var(--font-mono);font-size:12px;color:var(--slate);letter-spacing:.1em;margin-bottom:14px}.onboard h2{font-size:30px;margin-bottom:10px}.onboard p{color:var(--slate);font-size:16px;line-height:1.55;margin-bottom:26px}.onboard .art{height:140px;display:flex;align-items:center;justify-content:center;margin-bottom:18px}.onboard .dots{display:flex;justify-content:center;gap:6px;margin:18px 0 0}.onboard .dots i{width:6px;height:6px;border-radius:50%;background:var(--line)}.onboard .dots i.on{background:var(--scrub)}.preview-label{font-size:12px;font-weight:600;color:var(--slate);text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px}.preview-stage{padding:16px 18px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--line);border-left:5px solid var(--subject, var(--scrub));margin-bottom:18px}.preview-stage .review-face{font-size:17px}
