:root{--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 20px;--s-6: 24px;--s-7: 28px;--s-8: 32px;--s-10: 40px;--s-12: 48px;--s-16: 64px;--s-20: 80px;--r-xs: 6px;--r-sm: 9px;--r-md: 14px;--r-lg: 20px;--r-xl: 26px;--r-2xl: 34px;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-display: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--ease: cubic-bezier(.32, .72, 0, 1);--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--t-instant: 80ms;--t-fast: .14s;--t-base: .24s;--t-slow: .42s;--t-xslow: .7s;--blue: #3FAEC4;--blue-strong: #2B8DA6;--blue-soft: rgba(63, 174, 196, .14);--teal: #52C8D7;--orange: #E8915F;--orange-strong: #D2703A;--orange-soft: rgba(232, 145, 95, .16);--gradient-brand: linear-gradient(135deg, #5BB6BC 0%, #D3D4B9 50%, #E89B6C 100%)}[data-theme=light]{--bg: #DCEFEC;--bg-elev: rgba(255, 255, 255, .88);--glass-bar: rgba(255, 255, 255, .55);--glass-pane: rgba(255, 255, 255, .46);--glass-control: rgba(255, 255, 255, .55);--glass-border: rgba(255, 255, 255, .75);--glass-border-subtle: rgba(255, 255, 255, .5);--surface: rgba(255, 255, 255, .68);--surface-2: rgba(255, 255, 255, .42);--surface-hover: rgba(255, 255, 255, .82);--border: rgba(255, 255, 255, .72);--border-strong: rgba(150, 195, 198, .55);--text: #1B2526;--text-soft: #3C4748;--text-muted: #7C8A8B;--shadow-xs: 0 1px 2px rgba(40,70,72,.05);--shadow-sm: 0 1px 2px rgba(40,70,72,.05), 0 2px 6px rgba(40,70,72,.05);--shadow-md: 0 6px 22px rgba(40,70,72,.09), 0 2px 6px rgba(40,70,72,.05);--shadow-lg: 0 24px 60px rgba(40,70,72,.14), 0 6px 16px rgba(40,70,72,.07);--good: #1F9E5A;--warn: #C2870E;--err: #DB4A4A;--skeleton: linear-gradient(90deg, rgba(255,255,255,.4) 0%, rgba(255,255,255,.78) 50%, rgba(255,255,255,.4) 100%)}[data-theme=dark]{--bg: #0C1116;--bg-elev: rgba(22, 29, 36, .82);--glass-bar: rgba(16, 22, 28, .66);--glass-pane: rgba(18, 24, 31, .6);--glass-control: rgba(24, 31, 39, .62);--glass-border: rgba(255, 255, 255, .1);--glass-border-subtle: rgba(255, 255, 255, .06);--surface: rgba(28, 36, 44, .66);--surface-2: rgba(34, 43, 52, .55);--surface-hover: rgba(42, 53, 63, .72);--border: rgba(255, 255, 255, .1);--border-strong: rgba(255, 255, 255, .18);--text: #EDF3F2;--text-soft: #C4D0CF;--text-muted: #7E8E8E;--shadow-xs: 0 1px 2px rgba(0,0,0,.35);--shadow-sm: 0 1px 2px rgba(0,0,0,.35);--shadow-md: 0 6px 18px rgba(0,0,0,.45);--shadow-lg: 0 28px 64px rgba(0,0,0,.6), 0 6px 16px rgba(0,0,0,.45);--good: #4ADE80;--warn: #F5B53E;--err: #F87171;--skeleton: linear-gradient(90deg, rgba(34,43,52,.6) 0%, rgba(48,60,70,.6) 50%, rgba(34,43,52,.6) 100%)}*,*:before,*:after{box-sizing:border-box}html,body{height:100%}body{margin:0;font-family:var(--font-sans);font-feature-settings:"cv11","ss01","ss03";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--bg);color:var(--text);overflow:hidden;transition:background var(--t-slow) var(--ease),color var(--t-slow) var(--ease)}::selection{background:var(--blue-soft);color:var(--text)}button,input,select,textarea{font:inherit;color:inherit}.use-logo{width:1em;height:1em;display:inline-block}[data-theme=light] body,[data-theme=dark] body{background:var(--bg)}#app{display:grid;grid-template-rows:56px 1fr;height:100vh;opacity:0;transition:opacity var(--t-slow) var(--ease) .25s}#app.visible{opacity:1}.topbar{display:flex;align-items:center;padding:0 var(--s-5);gap:var(--s-3);background:var(--glass-bar);backdrop-filter:blur(22px) saturate(1.5);-webkit-backdrop-filter:blur(22px) saturate(1.5);border-bottom:1px solid var(--glass-border)}.topbar .brand{display:flex;align-items:center;gap:var(--s-2);font-family:var(--font-mono);font-weight:500;font-size:15px;letter-spacing:.01em;color:var(--text)}.topbar .brand .mark{width:22px;height:22px}.topbar .spacer{flex:1}.pdf-tag{font-family:var(--font-mono);font-size:12.5px;color:var(--text-soft);padding:5px 14px;border-radius:100px;background:var(--glass-control);border:1px solid var(--glass-border);box-shadow:var(--shadow-sm),inset 0 1px #fff6;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:none}.status-pill{display:none;align-items:center;gap:6px;padding:5px 12px;background:var(--glass-control);border:1px solid var(--glass-border);border-radius:100px;font-size:12px;font-family:var(--font-mono);color:var(--text-soft);box-shadow:var(--shadow-sm);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.status-dot{width:6px;height:6px;border-radius:50%;background:var(--text-muted)}.status-dot.ok{background:var(--good);box-shadow:0 0 8px var(--good)}.status-dot.busy{background:var(--warn);animation:pulse 1.2s ease-in-out infinite}.status-dot.err{background:var(--err)}.status-dot.streaming{background:var(--blue);animation:pulse .8s ease-in-out infinite}@keyframes pulse{50%{opacity:.35}}.icon-btn{width:34px;height:34px;padding:0;background:transparent;color:var(--text-soft);border:1px solid transparent;border-radius:50%;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:all var(--t-fast) var(--ease)}.icon-btn:hover{background:var(--glass-control);color:var(--text);border-color:var(--glass-border);box-shadow:var(--shadow-sm)}.icon-btn:active{transform:scale(.94)}.icon-btn svg{width:18px;height:18px}main{display:grid;grid-template-columns:1fr 460px;gap:var(--s-4);padding:var(--s-4);overflow:hidden;background:transparent}.loading{color:var(--text-muted);font-size:13px;display:inline-flex;align-items:center;gap:var(--s-2)}.spinner{width:14px;height:14px;border:2px solid var(--border-strong);border-top-color:var(--text);border-radius:50%;animation:spin .8s linear infinite}.streaming-cursor:after{content:"▎";color:var(--blue);animation:blink .9s steps(2) infinite;margin-left:1px}@keyframes blink{0%,50%{opacity:1}51%,to{opacity:0}}.skeleton{background:var(--skeleton);background-size:200% 100%;animation:shimmer 1.6s ease-in-out infinite;border-radius:var(--r-sm)}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-line{height:12px;margin-bottom:8px}.skeleton-line.s-90{width:90%}.skeleton-line.s-80{width:80%}.skeleton-line.s-60{width:60%}.empty{text-align:center;color:var(--text-muted);padding:var(--s-10) var(--s-4);font-size:14px;line-height:1.6}.empty .ico{width:56px;height:56px;margin:0 auto var(--s-4);background:var(--surface-2);border-radius:var(--r-lg);display:flex;align-items:center;justify-content:center;color:var(--text-soft)}.empty .ico svg{width:24px;height:24px}.empty strong{display:block;color:var(--text-soft);margin-bottom:4px;font-weight:600}#splash{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:flex;align-items:center;justify-content:center;pointer-events:auto;background:var(--bg);transition:opacity .42s var(--ease),visibility .42s var(--ease)}#splash.gone{opacity:0;visibility:hidden;pointer-events:none}html.splash-seen #splash{display:none}[data-theme=light] #splash,[data-theme=dark] #splash{background:var(--bg)}.splash-pill{position:relative;font-family:var(--font-mono);font-size:28px;font-weight:500;letter-spacing:.01em;color:var(--text);background:var(--glass-bar);border:1px solid var(--glass-border);border-radius:100px;padding:20px 56px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);box-shadow:var(--shadow-lg),inset 0 1px #fff9;animation:pill-rise .7s cubic-bezier(.16,1,.3,1);transition:transform var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease)}.splash-pill:hover{transform:translateY(-2px) scale(1.02);box-shadow:var(--shadow-lg),0 0 0 6px #52c8d71a,inset 0 1px #fff9}.splash-pill:active{transform:scale(.98)}.splash-pill:focus-visible{outline:none;box-shadow:var(--shadow-lg),0 0 0 4px #52c8d766,inset 0 1px #fff9}@keyframes pill-rise{0%{opacity:0;transform:translateY(10px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}.splash-pill:after{content:"";position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;border-radius:inherit;border:2px solid var(--teal);opacity:0;pointer-events:none}.splash-pill.pop{animation:pill-pop .42s var(--ease-out) forwards}.splash-pill.pop:after{animation:pill-burst .52s var(--ease-out) forwards}@keyframes pill-pop{0%{transform:scale(1)}30%{transform:scale(1.06)}to{transform:scale(.72);opacity:0}}@keyframes pill-burst{0%{opacity:.55;transform:scale(1)}to{opacity:0;transform:scale(1.5)}}@media (prefers-reduced-motion: reduce){.splash-pill,.splash-pill.pop{animation:none}.splash-pill.pop:after{animation:none}}#onboarding{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;display:flex;align-items:center;justify-content:center;padding:var(--s-8);background:transparent;transition:opacity var(--t-slow) var(--ease),visibility var(--t-slow) var(--ease)}#onboarding.hidden{opacity:0;visibility:hidden;pointer-events:none}.onboarding-bg{display:none}.onboarding-shell{position:relative;z-index:1;width:100%;display:flex;align-items:center;justify-content:center}.onboarding-card{position:relative;width:100%;max-width:1040px;background:var(--glass-pane);border:1px solid var(--glass-border);border-radius:var(--r-2xl);box-shadow:var(--shadow-lg),inset 0 1px #ffffff73;backdrop-filter:blur(28px) saturate(1.5);-webkit-backdrop-filter:blur(28px) saturate(1.5);padding:56px 60px;overflow:hidden;animation:card-rise .6s var(--ease-out);transition:max-width var(--t-slow) var(--ease)}@keyframes card-rise{0%{opacity:0;transform:translateY(14px) scale(.99)}to{opacity:1;transform:translateY(0) scale(1)}}#onboarding .theme-toggle-pill{position:absolute;top:22px;right:24px;z-index:3}.step{animation:step-fade .42s var(--ease-out)}@keyframes step-fade{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.step-1{display:grid;grid-template-columns:1.15fr .85fr;gap:var(--s-12);align-items:stretch}.step-2,#onboarding[data-step="2"] .step-1{display:none}#onboarding[data-step="2"] .step-2{display:block}#onboarding[data-step="2"] .onboarding-card{max-width:600px}.onboarding-brand{display:flex;align-items:center;gap:var(--s-2);margin-bottom:var(--s-8)}.onboarding-brand .mark{width:24px;height:24px}.onboarding-brand .name{font-family:var(--font-mono);font-weight:500;font-size:15px;letter-spacing:.01em;color:var(--text-soft)}.onboarding-h1{font-family:var(--font-display);font-weight:500;font-size:44px;line-height:1.12;letter-spacing:-.01em;margin:0 0 var(--s-4);color:var(--text)}.onboarding-h1 .u{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:5px;text-decoration-color:var(--teal)}.onboarding-h1 em{font-style:normal}.onboarding-lede{color:var(--text-soft);font-size:14px;line-height:1.65;margin:0;max-width:46ch}.feature-list{margin:var(--s-8) 0 0;padding:0;list-style:none}.feature-list li{display:flex;gap:var(--s-3);align-items:flex-start;padding:var(--s-3) 0;animation:slide-in .5s var(--ease-out) backwards}.feature-list li:nth-child(1){animation-delay:80ms}.feature-list li:nth-child(2){animation-delay:.15s}.feature-list li:nth-child(3){animation-delay:.22s}.feature-list li:nth-child(4){animation-delay:.29s}@keyframes slide-in{0%{opacity:0;transform:translate(-6px)}to{opacity:1;transform:translate(0)}}.feature-list .ico{width:30px;height:30px;flex-shrink:0;background:var(--glass-control);border:1px solid var(--glass-border);border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;color:var(--text-soft);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.feature-list .ico svg{width:14px;height:14px}.feature-list .text strong{display:block;font-weight:600;font-size:13px;color:var(--text);margin-bottom:1px}.feature-list .text span{display:block;color:var(--text-muted);font-size:12px;line-height:1.5}.step1-aside{display:flex;flex-direction:column;justify-content:space-between}.onboard-chart{flex:1;display:flex;align-items:center;justify-content:center;color:var(--text-muted);opacity:0;animation:chart-in .9s var(--ease-out) .25s forwards}@keyframes chart-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.onboard-chart svg{width:100%;max-width:360px;height:auto}.chart-line{stroke-dasharray:460;stroke-dashoffset:460;animation:draw-line 1.4s var(--ease-out) .4s forwards}@keyframes draw-line{to{stroke-dashoffset:0}}.step1-cta{display:flex;justify-content:flex-end;margin-top:var(--s-6)}.step2-content{text-align:left;margin-bottom:var(--s-6)}.step2-content .onboarding-h1{font-size:34px;line-height:1.1;margin-bottom:var(--s-5)}.setup-heading{font-family:var(--font-display);font-size:15px;font-weight:500;letter-spacing:-.01em;margin:0 0 4px;color:var(--text)}.setup-sub{font-size:13px;color:var(--text-muted);margin:0;line-height:1.5}.setup-form{display:block}.field{margin-bottom:var(--s-3)}.field-label{display:block;font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);margin-bottom:var(--s-2);padding-left:var(--s-3)}.field-input,.field-select{width:100%;background:var(--glass-control);border:1px solid var(--glass-border);border-radius:100px;padding:13px var(--s-5);font-size:14px;color:var(--text);box-shadow:var(--shadow-sm),inset 0 1px #ffffff80;transition:box-shadow var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease),transform var(--t-fast) var(--ease);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.field-select{padding-right:40px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%235B6B6B' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-color:var(--glass-control);background-repeat:no-repeat;background-position:right 16px center;background-size:12px}[data-theme=dark] .field-select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23A6B6B5' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-color:var(--glass-control);background-repeat:no-repeat;background-position:right 16px center;background-size:12px}.field-input:hover,.field-select:hover{transform:translateY(-1px)}.field-input:focus,.field-select:focus{outline:none;border-color:#52c8d799;box-shadow:0 0 0 4px #52c8d729,var(--shadow-sm)}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-3)}.field-help{color:var(--text-muted);font-size:12px;margin-top:var(--s-2);line-height:1.5;padding-left:var(--s-3)}.field-help a{color:var(--blue);text-decoration:none}.field-help a:hover{text-decoration:underline}[data-theme=dark] .field-input,[data-theme=dark] .field-select{background:var(--glass-control);box-shadow:var(--shadow-sm),inset 0 1px #ffffff0f}.onboarding-footer-row{margin-top:var(--s-5);display:flex;align-items:center}.step2-back{font-size:13px;color:var(--text-muted);display:inline-flex;align-items:center;gap:6px;background:transparent;border:none;cursor:pointer;padding:var(--s-2) 0;transition:color var(--t-fast) var(--ease)}.step2-back:hover{color:var(--text)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);font-family:var(--font-mono);padding:var(--s-3) var(--s-5);border-radius:100px;font-size:13.5px;font-weight:500;cursor:pointer;border:1px solid transparent;transition:transform var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease),background var(--t-fast) var(--ease),color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}.btn-primary{background:linear-gradient(135deg,#fffffff5,#fffc);color:var(--text);border-color:var(--glass-border);box-shadow:var(--shadow-md),inset 0 1px #ffffffe6;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.btn-primary:hover{transform:translateY(-1px);box-shadow:var(--shadow-lg),inset 0 1px #ffffffe6}.btn-primary:active{transform:translateY(0)}.btn-primary:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:var(--shadow-sm)}[data-theme=dark] .btn-primary{background:linear-gradient(135deg,#f4f8f7f2,#d6e0dfdb);color:#16201f}.btn-secondary{background:var(--glass-control);color:var(--text-soft);border-color:var(--glass-border);box-shadow:var(--shadow-sm),inset 0 1px #fff6;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.btn-secondary:hover{color:var(--text);transform:translateY(-1px)}.btn-ghost{background:transparent;color:var(--text-muted);border:none;padding:var(--s-2) var(--s-3)}.btn-ghost:hover{color:var(--text);background:var(--surface-2);border-radius:100px}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-ghost:disabled:hover{color:var(--text-muted);background:transparent}.btn-accent{background:var(--blue);color:#fff;border-color:var(--blue);box-shadow:var(--shadow-sm)}.btn-accent:hover{background:var(--blue-strong);transform:translateY(-1px)}.btn .ico,.btn svg{width:16px;height:16px}.btn-cta{padding:13px 26px;font-size:14px;font-weight:500}.btn-block{width:100%;margin-top:var(--s-2)}.btn-cta .arrow{transition:transform var(--t-base) var(--ease);display:inline-block}.btn-cta:hover .arrow{transform:translate(4px)}.theme-toggle-pill{background:var(--glass-control);border:1px solid var(--glass-border);border-radius:100px;padding:4px 4px 4px var(--s-3);display:inline-flex;align-items:center;gap:var(--s-2);cursor:pointer;font-size:12px;font-family:var(--font-mono);color:var(--text-soft);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:var(--shadow-sm);transition:background var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease),transform var(--t-fast) var(--ease)}.theme-toggle-pill:hover{transform:translateY(-1px)}.theme-toggle-pill .switch{width:22px;height:22px;border-radius:50%;background:var(--text);display:flex;align-items:center;justify-content:center;color:var(--bg);transition:background var(--t-base) var(--ease)}.theme-toggle-pill .switch svg{width:12px;height:12px}@media (max-width: 880px){.onboarding-card{padding:40px 32px}.step-1{grid-template-columns:1fr;gap:var(--s-6)}.step1-aside{flex-direction:column-reverse;gap:var(--s-5)}.onboard-chart{max-width:100%}.step1-cta{justify-content:flex-start}.onboarding-h1{font-size:36px}}.pdf-pane{display:grid;grid-template-rows:auto auto 1fr auto auto;background:var(--glass-pane);border:1px solid var(--glass-border);border-radius:var(--r-xl);box-shadow:var(--shadow-md),inset 0 1px #ffffff59;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);overflow:hidden;position:relative}.pdf-controls{display:flex;align-items:center;gap:var(--s-2);padding:var(--s-3) var(--s-4);background:transparent;border-bottom:1px solid var(--glass-border-subtle)}.nav-btn{background:var(--glass-control);color:var(--text-soft);border:1px solid var(--glass-border);border-radius:100px;padding:6px var(--s-3);cursor:pointer;font-family:var(--font-mono);font-size:12.5px;font-weight:500;display:inline-flex;align-items:center;gap:6px;box-shadow:var(--shadow-sm);transition:all var(--t-fast) var(--ease)}.nav-btn:hover:not(:disabled){color:var(--text);transform:translateY(-1px);box-shadow:var(--shadow-md)}.nav-btn:disabled{opacity:.35;cursor:not-allowed;box-shadow:none}.nav-btn svg{width:14px;height:14px}.page-indicator{font-variant-numeric:tabular-nums;font-family:var(--font-mono);color:var(--text-soft);font-size:12.5px;padding:0 var(--s-3);min-width:90px;text-align:center}.review-chip{display:none;padding:3px 10px;background:var(--orange-soft);color:var(--orange);border-radius:100px;font-size:11px;font-weight:600;letter-spacing:.02em}.review-chip.shown{display:inline-block}.progress-bar{height:2px;background:var(--surface-2)}.progress-bar:after{content:"";display:block;height:100%;width:var(--progress, 0%);background:var(--gradient-brand);transition:width var(--t-base) var(--ease);border-radius:0 2px 2px 0}.canvas-wrap{overflow:auto;padding:var(--s-6) var(--s-8) var(--s-12);scroll-behavior:smooth}.zoom-controls{display:inline-flex;align-items:center;gap:2px;background:var(--glass-control);border:1px solid var(--glass-border);border-radius:100px;padding:2px;box-shadow:var(--shadow-sm);margin:0 var(--s-1)}.zoom-btn{border:none;background:transparent;cursor:pointer;font-family:var(--font-mono);font-size:14px;line-height:1;color:var(--text-soft);min-width:24px;height:22px;border-radius:100px;display:inline-flex;align-items:center;justify-content:center;transition:background var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}.zoom-btn:hover:not(:disabled){background:var(--surface-2);color:var(--text)}.zoom-btn:disabled{opacity:.4;cursor:default}.zoom-btn.zoom-val{font-size:11.5px;min-width:46px;font-variant-numeric:tabular-nums}.pages-stack{display:flex;flex-direction:column;align-items:center;gap:var(--s-6)}.page-container{position:relative;line-height:1;border-radius:var(--r-lg);overflow:hidden;background:#fff;box-shadow:var(--shadow-lg);scroll-margin-top:24px;transition:outline-color var(--t-base) var(--ease),transform var(--t-base) var(--ease)}.page-container.current{outline:2px solid var(--blue);outline-offset:6px}.page-container canvas{display:block;max-width:100%}.page-container.placeholder:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,var(--surface-2) 0%,var(--surface-hover) 50%,var(--surface-2) 100%);background-size:200% 100%;animation:shimmer 1.6s linear infinite;opacity:.3}@keyframes shimmer{to{background-position:-200% 0}}#cropBtn.active{background:var(--text);color:var(--bg);border-color:var(--text)}.crop-mode .pdf-pane,.crop-mode .pdf-pane *{cursor:crosshair!important}.crop-mode .textLayer{pointer-events:none!important}.crop-mode .textLayer ::selection{background:transparent}.crop-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#0000001f;cursor:crosshair;z-index:5}.crop-rect{position:absolute;border:1.5px solid var(--blue);background:#4a9eff2e;box-shadow:0 0 0 9999px #00000059;pointer-events:none}.crop-hint{position:absolute;top:12px;left:50%;transform:translate(-50%);background:var(--text);color:var(--bg);padding:6px 12px;border-radius:100px;font-size:12px;font-weight:500;white-space:nowrap;pointer-events:none;box-shadow:var(--shadow-md);z-index:6}.note-pin{position:absolute;width:190px;transform:translate(-4px,-4px);background:#fbeada;border:1px solid var(--orange);border-radius:var(--r-sm);box-shadow:var(--shadow-md);z-index:4;overflow:hidden}.note-head{display:flex;align-items:center;justify-content:space-between;padding:3px 6px;cursor:default}.note-drag{cursor:grab;color:var(--orange-strong);font-size:12px;line-height:1;-webkit-user-select:none;user-select:none;padding:2px 4px}.note-drag:active{cursor:grabbing}.note-del{background:none;border:none;cursor:pointer;color:var(--orange-strong);font-size:15px;line-height:1;padding:0 3px;opacity:.7}.note-del:hover{opacity:1}.note-body{display:block;width:100%;background:transparent;border:none;outline:none;resize:vertical;font-size:12.5px;line-height:1.4;color:#3a2a18;padding:0 8px 8px;box-sizing:border-box;font-family:inherit;min-height:44px}.note-body::placeholder{color:#3a2a1873}.crop-mode .note-pin{pointer-events:none;opacity:.5}.textLayer{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;line-height:1}.textLayer>span{color:transparent;position:absolute;white-space:pre;cursor:text;transform-origin:0% 0%}.textLayer ::selection{background:#4a9eff80;color:transparent}#askSelection{position:fixed;z-index:100;display:none;align-items:center;gap:6px;background:var(--text);color:var(--bg);border:none;border-radius:100px;padding:8px 16px;cursor:pointer;font-weight:500;font-size:13px;box-shadow:var(--shadow-lg);animation:pop .22s var(--ease-out)}#askSelection svg{width:12px;height:12px}@keyframes pop{0%{opacity:0;transform:translateY(4px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}#askSelection:hover{background:var(--blue);color:#fff}#askSelection.loading{background:var(--blue);color:#fff;cursor:progress;pointer-events:none}#askSelection.loading svg{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.thumb-strip{display:flex;gap:6px;padding:var(--s-3) var(--s-5);border-top:1px solid var(--glass-border-subtle);background:var(--glass-control);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);overflow-x:auto;scroll-behavior:smooth;position:relative}.thumb-strip::-webkit-scrollbar{height:6px}.thumb-strip .thumb{flex-shrink:0;width:60px;height:42px;background:var(--surface);border:1.5px solid var(--border);border-radius:var(--r-sm);cursor:pointer;position:relative;display:flex;align-items:flex-end;justify-content:center;padding-bottom:3px;font-size:10px;font-weight:600;color:var(--text-muted);font-variant-numeric:tabular-nums;transition:all var(--t-fast) var(--ease);overflow:hidden;background-size:cover;background-position:center top}.thumb-strip .thumb:hover{border-color:var(--border-strong);transform:translateY(-1px)}.thumb-strip .thumb.active{border-color:var(--blue);color:var(--text);transform:translateY(-2px) scale(1.05);box-shadow:var(--shadow-md)}.thumb-strip .thumb.has-preview{color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.5)}.thumb-strip .thumb.has-preview:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,transparent 50%,rgba(0,0,0,.6) 100%)}.thumb-strip .thumb.has-preview span{position:relative;z-index:1}.thumb-strip .thumb.weak{border-color:var(--orange)}.thumb-strip .thumb.weak:after{content:"";position:absolute;top:2px;right:2px;width:6px;height:6px;border-radius:50%;background:var(--orange)}.thumb-strip .thumb .thumb-bm-tint{display:none}.thumb-strip .thumb.bookmarked{box-shadow:inset 0 0 0 3px var(--orange)}.thumb-strip .thumb.active.bookmarked{box-shadow:var(--shadow-md),inset 0 0 0 3px var(--orange)}.side-pane{display:flex;flex-direction:column;background:var(--glass-pane);backdrop-filter:blur(22px) saturate(1.5);-webkit-backdrop-filter:blur(22px) saturate(1.5);border:1px solid var(--glass-border);border-radius:var(--r-xl);box-shadow:var(--shadow-md),inset 0 1px #ffffff59;overflow:hidden}.tabs{position:relative;display:flex;flex-wrap:wrap;justify-content:center;padding:var(--s-3) 16px;gap:8px;border-bottom:1px solid var(--glass-border-subtle);background:transparent}.tab{padding:var(--s-2) var(--s-3);border-radius:100px;background:var(--glass-control);border:1px solid var(--glass-border);box-shadow:var(--shadow-sm);color:var(--text-soft);font-family:var(--font-mono);font-size:12.5px;font-weight:500;cursor:pointer;position:relative;transition:all var(--t-fast) var(--ease);display:inline-flex;align-items:center;gap:6px}.tab svg{width:14px;height:14px}.tab:hover{color:var(--text);transform:translateY(-1px)}.tab.active{color:var(--text);background:linear-gradient(135deg,#fffffff2,#ffffffc7);border-color:var(--glass-border);box-shadow:var(--shadow-md),inset 0 1px #ffffffe6}[data-theme=dark] .tab.active{background:linear-gradient(135deg,#f4f8f7f2,#d6e0dfd9);color:#16201f}.tab-indicator{display:none}.tab-content{flex:1;overflow-y:auto;padding:var(--s-5);display:none;animation:fade-up .28s var(--ease-out)}@keyframes fade-up{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.tab-content.active{display:block}.tutor-tab.tab-content{display:none;padding:0;flex-direction:column;height:100%;overflow:hidden}.tutor-tab.tab-content.active{display:flex}.tutor-scroll{flex:1;overflow-y:auto;padding:var(--s-5) var(--s-5) var(--s-4)}.katex-display{overflow-x:auto;overflow-y:hidden}.tutor-explanation{font-size:15px;line-height:1.65;color:var(--text-soft)}.tutor-explanation p{margin:0 0 var(--s-3)}.tutor-explanation p:last-child{margin-bottom:0}.tutor-explanation strong{color:var(--text);font-weight:600}.tutor-explanation h3{font-family:var(--font-display);font-weight:600;font-size:16px;color:var(--text);margin:var(--s-5) 0 var(--s-2);letter-spacing:-.01em}.tutor-explanation code{background:var(--surface-2);padding:1px 6px;border-radius:4px;font-size:13px;font-family:var(--font-mono);color:var(--text)}.voice-bar{margin-top:var(--s-5);padding-top:var(--s-4);border-top:1px solid var(--border);display:flex;align-items:center;gap:var(--s-2)}.voice-btn{background:transparent;border:1px solid var(--border);border-radius:100px;padding:6px var(--s-3);color:var(--text-soft);font-size:12px;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:all var(--t-fast) var(--ease)}.voice-btn:hover:not(:disabled){border-color:var(--text);color:var(--text)}.voice-btn:disabled{opacity:.4;cursor:not-allowed}.voice-btn svg{width:12px;height:12px}.auto-label{margin-left:auto;display:inline-flex;align-items:center;gap:6px;color:var(--text-muted);cursor:pointer;-webkit-user-select:none;user-select:none;font-family:var(--font-mono);font-size:13.5px;font-weight:500;padding:var(--s-2) var(--s-3);border-radius:100px;border:1px solid transparent;transition:all var(--t-fast) var(--ease)}.auto-label:hover{color:var(--text);background:var(--surface-2)}.auto-label:has(input:checked){color:var(--blue);background:var(--blue-soft)}.auto-label .check,.auto-label .check .box{width:14px;height:14px}.auto-label .check input:checked+.box{background:var(--blue);border-color:var(--blue)}.check{position:relative;width:16px;height:16px}.check input{position:absolute;opacity:0;top:0;right:0;bottom:0;left:0;cursor:pointer;margin:0}.check .box{width:16px;height:16px;border-radius:4px;border:1.5px solid var(--border-strong);background:var(--bg);transition:all var(--t-fast) var(--ease);display:flex;align-items:center;justify-content:center}.check input:checked+.box{background:var(--text);border-color:var(--text)}.check input:checked+.box:after{content:"";width:8px;height:4px;border-left:2px solid var(--bg);border-bottom:2px solid var(--bg);transform:rotate(-45deg) translate(1px,-1px)}.weak-card{margin-top:var(--s-5);padding:var(--s-4);background:var(--orange-soft);border-radius:var(--r-md);font-size:13px}.weak-card h4{margin:0 0 var(--s-2);color:var(--orange);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.weak-card ul{margin:0;padding-left:18px;color:var(--text-soft)}.weak-card li{margin-bottom:2px}.chat-messages{display:flex;flex-direction:column;gap:var(--s-3);margin-top:var(--s-5)}.chat-messages:not(:empty){padding-top:var(--s-4);border-top:1px dashed var(--border)}.msg{padding:var(--s-3) var(--s-4);border-radius:var(--r-md);font-size:14px;line-height:1.55;max-width:88%;word-wrap:break-word;white-space:pre-wrap;animation:msg-in .28s var(--ease-out)}@keyframes msg-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.msg.user{background:#3faec429;color:var(--text);align-self:flex-end;border-bottom-right-radius:4px}[data-theme=dark] .msg.user{background:#ffffff1a}.msg.ai{background:var(--surface-2);color:var(--text);border-bottom-left-radius:4px}.composer{display:flex;gap:6px;align-items:flex-end;background:var(--glass-bar);border:1px solid var(--glass-border);border-radius:var(--r-xl);padding:var(--s-2);margin:var(--s-3) var(--s-5) var(--s-5);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 2px 12px #0000000d,inset 0 1px #fffffff2;transition:border-color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease)}.composer:focus-within{border-color:#52c8d78c;box-shadow:0 0 0 4px #52c8d71f,0 2px 12px #0000000d}.composer textarea{flex:1;background:transparent;border:none;padding:6px var(--s-2);resize:none;font-size:14px;outline:none;max-height:120px}.composer textarea::placeholder{color:var(--text-muted);font-style:italic}.composer .mic-btn,.composer .send-btn{border-radius:var(--r-md);cursor:pointer;border:none;padding:8px 10px;display:inline-flex;align-items:center;justify-content:center;transition:all var(--t-fast) var(--ease)}.composer .mic-btn{background:transparent;color:var(--text-soft)}.composer .mic-btn:hover{background:var(--surface-hover);color:var(--text)}.composer .mic-btn.recording{background:var(--err);color:#fff;animation:pulse-bg 1s ease-in-out infinite}@keyframes pulse-bg{0%,to{box-shadow:0 0 #f8717180}50%{box-shadow:0 0 0 6px #f8717100}}.composer .send-btn{background:var(--text);color:var(--bg);padding:8px 14px;font-weight:500;font-size:13px}.composer .send-btn:hover{transform:translateY(-1px)}.composer .mic-btn svg,.composer .send-btn svg{width:16px;height:16px}.tab.tab-icon-only{padding:7px}.tab.tab-icon-only svg{width:17px;height:17px}.bm-subtabs{display:flex;gap:6px;margin-bottom:var(--s-4)}.bm-subtab{flex:1;padding:var(--s-2) var(--s-3);border-radius:100px;background:var(--surface-2);border:1px solid var(--glass-border-subtle);color:var(--text-soft);font-family:var(--font-mono);font-size:12.5px;font-weight:500;cursor:pointer;transition:all var(--t-fast) var(--ease)}.bm-subtab:hover{color:var(--text)}.bm-subtab.active{color:var(--text);background:var(--blue-soft);border-color:transparent}.bm-list{display:flex;flex-direction:column;gap:6px}.bm-toggle{display:flex;align-items:center;justify-content:center;padding:var(--s-2) var(--s-3);margin-bottom:var(--s-2);border-radius:var(--r-md);background:var(--surface-2);border:1px dashed var(--border);color:var(--text-soft);font-size:13px;font-weight:500;cursor:pointer;transition:all var(--t-fast) var(--ease)}.bm-toggle:hover:not(:disabled){color:var(--text);border-color:var(--border-strong)}.bm-toggle:disabled{opacity:.4;cursor:not-allowed}.bm-toggle.active{color:var(--blue);background:var(--blue-soft);border-style:solid;border-color:transparent}.bm-row{display:flex;align-items:center;gap:var(--s-2);padding:var(--s-3);border-radius:var(--r-md);background:var(--surface-2);cursor:pointer;font-size:13.5px;color:var(--text);transition:all var(--t-fast) var(--ease)}.bm-row:hover{background:var(--surface-hover);transform:translate(2px)}.bm-row-flag{width:13px;height:13px;color:var(--blue);flex-shrink:0}.bm-note-row{flex-direction:column;align-items:flex-start;gap:3px}.bm-note-page{font-family:var(--font-mono);font-size:11px;font-weight:600;color:var(--blue);text-transform:uppercase;letter-spacing:.04em}.bm-note-snippet{color:var(--text-soft);line-height:1.4}.bm-empty{padding:var(--s-5) var(--s-3);text-align:center;color:var(--text-muted);font-size:13px;line-height:1.5}.owner-tag{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;background:var(--blue-soft);border:1px solid transparent;border-radius:100px;color:var(--blue);font-size:12px;font-weight:600;font-variant-numeric:tabular-nums}.owner-tag svg{width:12px;height:12px}#shareBackdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#0000008c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:0;pointer-events:none;transition:opacity var(--t-base) var(--ease)}#shareBackdrop.open{opacity:1;pointer-events:auto}#newClassBackdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#0000008c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:0;pointer-events:none;transition:opacity var(--t-base) var(--ease)}#newClassBackdrop.open{opacity:1;pointer-events:auto}#newClassModal{z-index:51}#analyticsBackdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#0000008c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:0;pointer-events:none;transition:opacity var(--t-base) var(--ease)}#analyticsBackdrop.open{opacity:1;pointer-events:auto}#analyticsModal.analytics-modal{z-index:51;width:min(720px,94vw)}.share-modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-45%) scale(.96);width:min(560px,92vw);max-height:90vh;background:var(--bg-elev);backdrop-filter:blur(28px) saturate(1.5);-webkit-backdrop-filter:blur(28px) saturate(1.5);border:1px solid var(--glass-border);border-radius:var(--r-xl);box-shadow:var(--shadow-lg);z-index:41;opacity:0;pointer-events:none;transition:opacity var(--t-base) var(--ease),transform var(--t-base) var(--ease-spring);display:flex;flex-direction:column;overflow:hidden}.share-modal.open{opacity:1;pointer-events:auto;transform:translate(-50%,-50%) scale(1)}.share-modal .field-input,.share-modal .field-select{background:var(--glass-control);box-shadow:var(--shadow-sm),inset 0 1px #ffffff80}[data-theme=dark] .share-modal .field-input,[data-theme=dark] .share-modal .field-select{box-shadow:var(--shadow-sm),inset 0 1px #ffffff0f}.share-head{padding:var(--s-6) var(--s-6) var(--s-3);position:relative;border-bottom:1px solid var(--border)}.share-body{padding:var(--s-4) var(--s-6);overflow-y:auto}.share-foot{padding:var(--s-4) var(--s-6) var(--s-5);border-top:1px solid var(--border);display:flex;gap:var(--s-3);align-items:center;justify-content:flex-end}.share-link-box{display:flex;align-items:center;gap:var(--s-2);padding:var(--s-3) var(--s-3) var(--s-3) var(--s-4);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);font-family:var(--font-mono, ui-monospace, monospace);font-size:13px;color:var(--text)}.share-meta{display:flex;gap:var(--s-3);justify-content:space-between;font-size:12px;color:var(--text-muted);margin-top:var(--s-3)}.share-meta .row{display:flex;gap:4px;align-items:center}.share-meta code{background:var(--surface-2);padding:1px 6px;border-radius:4px;font-size:11px;color:var(--text-soft)}.account-btn{background:transparent;border:1px solid var(--border);border-radius:100px;cursor:pointer;padding:4px;min-width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;color:var(--text-soft);transition:all var(--t-fast) var(--ease)}.account-btn:hover{color:var(--text);border-color:var(--text-soft)}.account-btn svg{width:16px;height:16px}.account-btn.signed-in{background:var(--blue-soft);border-color:transparent;color:var(--blue);font-size:11px;font-weight:700;letter-spacing:.02em}.account-btn.signed-in:hover{transform:scale(1.05)}.ai-budget-bar{margin-top:var(--s-3)}.ai-budget-bar-track{height:6px;border-radius:100px;background:var(--surface-2);overflow:hidden}.ai-budget-bar-fill{height:100%;border-radius:100px;background:var(--gradient-brand);transition:width var(--t-fast) var(--ease)}.ai-budget-bar-fill.low{background:var(--orange)}.ai-budget-bar-label{margin-top:6px;font-size:11.5px;color:var(--text-muted);font-family:var(--font-mono)}.warmup-card{margin-top:var(--s-5);padding:var(--s-4);background:linear-gradient(135deg,var(--blue-soft),transparent 70%);border:1px solid var(--blue);border-radius:var(--r-md);text-align:left}.warmup-eyebrow{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--blue);margin-bottom:var(--s-2)}.warmup-text{font-size:14px;line-height:1.5;color:var(--text);margin-bottom:var(--s-3)}.warmup-list{display:flex;flex-wrap:wrap;gap:6px}.warmup-chip{display:inline-block;font-size:11px;padding:3px 9px;border-radius:100px;border:1px solid var(--border);background:var(--surface);color:var(--text-soft)}.warmup-chip.introduced{border-color:var(--text-muted);color:var(--text-muted)}.warmup-chip.practiced{border-color:var(--blue);color:var(--blue)}.warmup-chip.mastered{border-color:var(--good);color:var(--good)}.account-card{display:flex;align-items:center;gap:var(--s-4);padding:var(--s-4);background:var(--surface-2);border-radius:var(--r-md);margin-top:var(--s-3)}.account-avatar{width:56px;height:56px;flex-shrink:0;border-radius:50%;background:var(--blue-soft);color:var(--blue);font-weight:700;font-size:22px;display:flex;align-items:center;justify-content:center}.account-info{flex:1;min-width:0}.account-name{font-weight:600;font-size:15px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-email{font-size:13px;color:var(--text-muted);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-plan{display:inline-block;margin-top:6px;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;padding:2px 8px;border-radius:100px;background:var(--blue-soft);color:var(--blue)}.account-section{margin-top:var(--s-5)}.account-section-title{display:flex;justify-content:space-between;align-items:center;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);margin-bottom:var(--s-2)}.my-deck-row{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-3) var(--s-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);cursor:pointer;transition:all var(--t-fast) var(--ease);margin-bottom:6px}.my-deck-row:hover{border-color:var(--border-strong);background:var(--surface-hover)}.my-deck-row .name{flex:1;min-width:0;font-size:14px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.my-deck-row .meta{font-size:11px;color:var(--text-muted);font-variant-numeric:tabular-nums;white-space:nowrap}.lib-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s-3);margin-bottom:6px;cursor:pointer;transition:all var(--t-fast) var(--ease)}.lib-row[data-orphan=true]{cursor:not-allowed;opacity:.6}.lib-row:not([data-orphan=true]):hover{border-color:var(--border-strong);background:var(--surface-hover)}.lib-row-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-2)}.lib-row .name{flex:1;min-width:0;font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lib-row .when{font-size:10px;color:var(--text-muted);font-variant-numeric:tabular-nums;white-space:nowrap}.lib-row-meta{font-size:11px;color:var(--text-muted);margin-top:2px}.lib-row-pills{display:flex;gap:4px;flex-wrap:wrap;margin-top:6px}.lib-pill{font-size:9px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:2px 6px;border-radius:100px;background:var(--surface-2);color:var(--text-muted)}.lib-pill.mastered{background:#4ade802e;color:var(--good)}.lib-pill.practiced{background:var(--blue-soft);color:var(--blue)}.lib-pill.introduced{background:var(--surface-2);color:var(--text-muted)}.lib-pill.owner{background:var(--orange-soft);color:var(--orange)}.lib-pill.orphan{background:var(--surface-2);color:var(--err)}.class-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s-3);margin-bottom:6px;cursor:pointer;transition:all var(--t-fast) var(--ease);display:flex;align-items:center;gap:var(--s-3)}.class-row:hover{border-color:var(--border-strong);background:var(--surface-hover)}.class-row .head{flex:1;min-width:0}.class-row .name{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.class-row .meta{font-size:11px;color:var(--text-muted);margin-top:2px}.class-role-chip{font-size:9px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:2px 7px;border-radius:100px}.class-role-chip.owner{background:var(--orange-soft);color:var(--orange)}.class-role-chip.student{background:var(--blue-soft);color:var(--blue)}.cd-section{margin-top:var(--s-4)}.cd-section-title{font-size:11px;letter-spacing:.06em;text-transform:uppercase;font-weight:700;color:var(--text-muted);margin-bottom:var(--s-2);display:flex;align-items:center;justify-content:space-between}.cd-joincode{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;background:var(--surface-2);border-radius:var(--r-md);font-family:var(--font-mono);font-size:13px;letter-spacing:.05em}.cd-joincode button{font-size:10px;padding:3px 8px;border-radius:6px;background:var(--surface);border:1px solid var(--border);color:var(--text);cursor:pointer}.cd-row{display:flex;align-items:center;gap:var(--s-2);padding:var(--s-2) var(--s-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-sm);margin-bottom:4px;font-size:13px}.cd-row .name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.cd-row .meta{font-size:11px;color:var(--text-muted);white-space:nowrap}.cd-row .actions{display:flex;gap:4px}.cd-row button{font-size:11px;padding:4px 8px;border-radius:6px;background:var(--surface-2);border:1px solid var(--border);color:var(--text);cursor:pointer}.cd-row button:hover{border-color:var(--text-muted)}.cd-row button.danger{color:var(--err)}.cd-empty{padding:var(--s-4);text-align:center;font-size:12px;color:var(--text-muted);background:var(--surface-2);border-radius:var(--r-md)}.my-deck-row{position:relative}.my-deck-row .add-to-class-btn{position:absolute;right:var(--s-2);top:50%;transform:translateY(-50%);font-size:10px;padding:3px 8px;border-radius:6px;background:var(--surface-2);border:1px solid var(--border);color:var(--text);cursor:pointer;opacity:0;transition:opacity var(--t-fast)}.my-deck-row:hover .add-to-class-btn{opacity:1}.my-deck-row .add-to-class-btn:hover{border-color:var(--text-muted)}#settingsBackdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;background:#0006;opacity:0;pointer-events:none;transition:opacity var(--t-base) var(--ease)}#settingsBackdrop.open{opacity:1;pointer-events:auto}#settingsDrawer{position:fixed;top:0;right:0;bottom:0;margin:20px;width:min(440px,90vw);background:var(--bg-elev);backdrop-filter:blur(28px) saturate(1.5);-webkit-backdrop-filter:blur(28px) saturate(1.5);border-left:1px solid var(--glass-border);border-radius:var(--r-lg);overflow:hidden;z-index:21;transform:translate(calc(100% + 20px));transition:transform var(--t-slow) var(--ease-spring);display:flex;flex-direction:column;box-shadow:var(--shadow-lg)}#settingsDrawer.open{transform:translate(0)}.drawer-head{padding:var(--s-5) var(--s-6);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.drawer-head h2{font-family:var(--font-display);font-weight:600;font-size:20px;margin:0;letter-spacing:-.015em}.drawer-body{flex:1;overflow-y:auto;padding:var(--s-5) var(--s-6)}.drawer-section{margin-bottom:var(--s-6)}.drawer-section-title{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);margin-bottom:var(--s-3)}.system-prompt-area{width:100%;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s-3);font-family:var(--font-mono);font-size:12px;min-height:200px;resize:vertical;outline:none;color:var(--text-soft)}.system-prompt-area:focus{border-color:var(--blue)}.theme-switch{display:flex;gap:var(--s-2)}.theme-option{flex:1;padding:var(--s-3);background:var(--surface-2);border:1.5px solid var(--border);border-radius:var(--r-md);cursor:pointer;text-align:center;font-size:13px;font-weight:500;transition:all var(--t-fast) var(--ease);display:flex;align-items:center;justify-content:center;gap:6px}.theme-option.active{border-color:var(--text);background:var(--surface)}.theme-option:hover:not(.active){border-color:var(--border-strong)}.theme-option svg{width:14px;height:14px}[data-theme=light] #settingsDrawer .field-input,[data-theme=light] #settingsDrawer .field-select{background:var(--glass-control);box-shadow:var(--shadow-sm),inset 0 1px #ffffff80}[data-theme=light] #settingsDrawer .field-select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%235B6B6B' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-color:var(--glass-control);background-repeat:no-repeat;background-position:right 16px center;background-size:12px}.quiz-empty{text-align:center;color:var(--text-muted);padding:var(--s-10) var(--s-4);font-size:14px;line-height:1.6}.quiz-empty .ico{width:56px;height:56px;margin:0 auto var(--s-4);background:var(--surface-2);border-radius:var(--r-lg);display:flex;align-items:center;justify-content:center;color:var(--text-soft)}.quiz-empty .ico svg{width:26px;height:26px}.quiz-flow{display:flex;flex-direction:column;gap:var(--s-4);height:100%}.quiz-progress{display:flex;gap:6px;align-items:center}.quiz-dot{flex:1;height:4px;background:var(--surface-2);border-radius:100px;transition:background var(--t-base) var(--ease)}.quiz-dot.done{background:var(--good)}.quiz-dot.current{background:var(--text)}.quiz-dot.wrong{background:var(--err)}.quiz-dot.partial{background:var(--warn)}.quiz-meta{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}.quiz-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--s-5);animation:card-in var(--t-slow) var(--ease-out)}@keyframes card-in{0%{opacity:0;transform:translate(30px) scale(.98)}to{opacity:1;transform:translate(0) scale(1)}}.quiz-card.exit{animation:card-out var(--t-base) var(--ease) forwards}@keyframes card-out{to{opacity:0;transform:translate(-30px) scale(.98)}}.quiz-card .q-label{font-family:var(--font-display);font-weight:700;font-size:13px;letter-spacing:.04em;color:var(--blue);margin-bottom:var(--s-2)}.quiz-card .q-text{font-size:16px;line-height:1.5;font-weight:500;color:var(--text);margin-bottom:var(--s-4)}.quiz-card textarea{width:100%;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s-3);font-size:14px;line-height:1.55;resize:vertical;min-height:84px;outline:none;transition:border-color var(--t-fast) var(--ease)}.quiz-card textarea:focus{border-color:var(--blue)}.quiz-card .actions{margin-top:var(--s-3);display:flex;gap:var(--s-2)}.quiz-feedback{margin-top:var(--s-4);padding:var(--s-4);background:var(--surface-2);border-radius:var(--r-md);font-size:13px;line-height:1.55;white-space:pre-wrap;border-left:3px solid var(--border-strong);animation:fade-up var(--t-base) var(--ease-out)}.quiz-feedback.correct{border-left-color:var(--good)}.quiz-feedback.partial{border-left-color:var(--warn)}.quiz-feedback.wrong{border-left-color:var(--err)}.quiz-feedback .verdict{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;margin-bottom:4px}.quiz-feedback.correct .verdict{color:var(--good)}.quiz-feedback.partial .verdict{color:var(--warn)}.quiz-feedback.wrong .verdict{color:var(--err)}.quiz-results{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--s-6);animation:card-in var(--t-slow) var(--ease-out)}.quiz-results .score{font-family:var(--font-display);font-weight:600;font-size:48px;line-height:1;letter-spacing:-.03em;color:var(--text);margin-bottom:var(--s-3)}.quiz-results .score-of{color:var(--text-muted);font-size:24px}.quiz-results .tagline{font-size:14px;color:var(--text-soft);margin-bottom:var(--s-5)}.quiz-results .miss-list{margin:0 0 var(--s-5);padding:0;list-style:none;display:flex;flex-direction:column;gap:var(--s-2)}.quiz-results .miss-item{padding:var(--s-3);background:var(--orange-soft);border-radius:var(--r-sm);font-size:13px}.quiz-results .miss-item .concept{font-weight:600;color:var(--orange);margin-bottom:2px}.quiz-results .actions{display:flex;gap:var(--s-2)}.guide-shell{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--s-6);margin-top:var(--s-4);animation:card-in var(--t-slow) var(--ease-out)}.guide-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s-3);margin-bottom:var(--s-5);padding-bottom:var(--s-5);border-bottom:1px dashed var(--border)}.stat .val{font-family:var(--font-display);font-weight:600;font-size:22px;letter-spacing:-.02em;color:var(--text);line-height:1}.stat .lab{font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);margin-top:4px}.guide-body{font-size:14px;line-height:1.65;color:var(--text-soft)}.guide-body h3{font-family:var(--font-display);font-weight:600;font-size:17px;color:var(--text);margin:var(--s-5) 0 var(--s-2);letter-spacing:-.01em;display:flex;align-items:center;gap:8px}.guide-body h3:before{content:"";width:4px;height:16px;background:var(--blue);border-radius:2px}.guide-body h3:first-child{margin-top:0}.guide-body h4{font-weight:600;color:var(--text);margin:var(--s-3) 0 var(--s-1);font-size:14px}.guide-body strong{color:var(--text);font-weight:600}.guide-body ul,.guide-body ol{padding-left:var(--s-5);margin:var(--s-2) 0}.guide-body li{margin-bottom:4px}.guide-actions{display:flex;gap:var(--s-2);margin-top:var(--s-5);padding-top:var(--s-4);border-top:1px dashed var(--border)}.msg.teach-back{background:linear-gradient(135deg,var(--blue-soft),var(--orange-soft));border:1px solid var(--blue);position:relative}.msg.teach-back .tb-label{font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--blue);margin-bottom:4px}.msg.teach-back .tb-hint{font-size:12px;color:var(--text-muted);margin-top:6px}.msg.teach-back-feedback{border-left:3px solid var(--border-strong)}.msg.teach-back-feedback.correct{border-left-color:var(--good)}.msg.teach-back-feedback.partial{border-left-color:var(--warn)}.msg.teach-back-feedback.wrong{border-left-color:var(--err)}.msg.teach-back-feedback .tb-verdict{display:inline-block;font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:2px 8px;border-radius:100px;background:var(--surface-2);color:var(--text-soft);margin-bottom:6px}.msg.teach-back-feedback.correct .tb-verdict{background:var(--good);color:#fff}.msg.teach-back-feedback.partial .tb-verdict{background:var(--warn);color:#fff}.msg.teach-back-feedback.wrong .tb-verdict{background:var(--err);color:#fff}.progress-summary{display:flex;gap:var(--s-5);align-items:center;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--s-5);margin-bottom:var(--s-5)}.progress-donut{position:relative;flex-shrink:0;width:110px;height:110px}.progress-donut svg{transform:rotate(-90deg);display:block}.donut-track{stroke:var(--border)}.donut-arc-introduced{stroke:var(--text-muted);transition:stroke-dashoffset .6s var(--ease)}.donut-arc-practiced{stroke:var(--blue);transition:stroke-dashoffset .6s var(--ease)}.donut-arc-mastered{stroke:var(--good);transition:stroke-dashoffset .6s var(--ease)}.donut-center{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.donut-center .big{font-family:var(--font-display);font-weight:600;font-size:28px;line-height:1;letter-spacing:-.02em}.donut-center .small{font-size:11px;color:var(--text-muted);margin-top:2px}.progress-stats{flex:1;display:flex;flex-direction:column;gap:6px}.stat-line{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-soft)}.stat-line strong{margin-left:auto;font-weight:600;color:var(--text);font-variant-numeric:tabular-nums}.stat-line .dot{width:8px;height:8px;border-radius:50%}.stat-line .dot-mastered{background:var(--good)}.stat-line .dot-practiced{background:var(--blue)}.stat-line .dot-introduced{background:var(--text-muted)}.stat-line .dot-mistake{background:var(--err)}.progress-focus{background:linear-gradient(135deg,var(--blue-soft),transparent);border:1px solid var(--blue);border-radius:var(--r-md);padding:var(--s-4);margin-bottom:var(--s-5)}.progress-focus .focus-label{font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--blue);margin-bottom:6px;display:flex;align-items:center;gap:6px}.progress-focus .focus-label svg{width:12px;height:12px}.progress-focus .focus-text{font-size:14px;line-height:1.5;color:var(--text);margin-bottom:var(--s-3)}.progress-focus .focus-text strong{color:var(--text)}.progress-actions{display:flex;gap:var(--s-2);margin-bottom:var(--s-5)}.progress-actions .btn{flex:1}.progress-filters{display:flex;gap:6px;margin-bottom:var(--s-3);overflow-x:auto;padding-bottom:4px}.filter-chip{background:transparent;color:var(--text-muted);border:1px solid var(--border);border-radius:100px;padding:4px 12px;font-size:12px;font-weight:500;cursor:pointer;white-space:nowrap;transition:all var(--t-fast) var(--ease)}.filter-chip:hover{color:var(--text);border-color:var(--border-strong)}.filter-chip.active{background:var(--text);color:var(--bg);border-color:var(--text)}.concept-list{display:flex;flex-direction:column;gap:var(--s-2)}.concept-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s-3) var(--s-4);display:flex;align-items:center;gap:var(--s-3);cursor:pointer;transition:all var(--t-fast) var(--ease)}.concept-row:hover{border-color:var(--border-strong);background:var(--surface-hover)}.concept-row .name{flex:1;font-size:14px;font-weight:500;color:var(--text)}.concept-row .meta{font-size:11px;color:var(--text-muted);font-variant-numeric:tabular-nums}.concept-row.expanded .concept-detail{display:block}.concept-detail{display:none;margin-top:var(--s-3);padding-top:var(--s-3);border-top:1px solid var(--border);font-size:13px;color:var(--text-soft);line-height:1.55;width:100%}.concept-detail .row{display:flex;gap:var(--s-2);font-size:12px;color:var(--text-muted);margin-bottom:4px}.concept-detail .row .k{width:90px;flex-shrink:0}.progress-empty{text-align:center;padding:var(--s-8) var(--s-4);color:var(--text-muted);font-size:13px}.prereq-chip{display:inline-block;margin:2px 4px 2px 0;font-size:11px;padding:2px 8px;border-radius:100px;cursor:pointer;border:1px solid var(--border);background:var(--surface-2);color:var(--text-soft);transition:all var(--t-fast) var(--ease)}.prereq-chip:hover{border-color:var(--text);color:var(--text)}.prereq-chip.introduced{border-color:var(--text-muted)}.prereq-chip.practiced{border-color:var(--blue);color:var(--blue)}.prereq-chip.mastered{border-color:var(--good);color:var(--good)}.weak-card li{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.mastery-chip{display:inline-block;font-size:9px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:1px 6px;border-radius:100px}.mastery-chip.introduced{background:var(--surface-2);color:var(--text-muted)}.mastery-chip.practiced{background:var(--blue-soft);color:var(--blue)}.mastery-chip.mastered{background:#4ade8026;color:var(--good)}.error-chip{font-size:9px;font-weight:600;padding:1px 6px;border-radius:100px;background:var(--orange-soft);color:var(--orange)}#diagBackdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#0000008c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:0;pointer-events:none;transition:opacity var(--t-base) var(--ease)}#diagBackdrop.open{opacity:1;pointer-events:auto}.diag-modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-45%) scale(.96);width:min(560px,92vw);max-height:90vh;background:var(--bg-elev);backdrop-filter:blur(28px) saturate(1.5);-webkit-backdrop-filter:blur(28px) saturate(1.5);border:1px solid var(--glass-border);border-radius:var(--r-xl);box-shadow:var(--shadow-lg);z-index:41;opacity:0;pointer-events:none;transition:opacity var(--t-base) var(--ease),transform var(--t-base) var(--ease-spring);display:flex;flex-direction:column;overflow:hidden}.diag-modal.open{opacity:1;pointer-events:auto;transform:translate(-50%,-50%) scale(1)}.diag-head{padding:var(--s-6) var(--s-6) var(--s-4)}.diag-eyebrow{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--blue);margin-bottom:var(--s-3)}.diag-eyebrow .dot{width:6px;height:6px;border-radius:50%;background:var(--blue);box-shadow:0 0 6px var(--blue)}.diag-title{font-family:var(--font-display);font-weight:600;font-size:26px;letter-spacing:-.02em;margin:0 0 8px}.diag-sub{margin:0;color:var(--text-muted);font-size:14px;line-height:1.5}.diag-body{padding:0 var(--s-6) var(--s-4);overflow-y:auto}.diag-question{margin-top:var(--s-5)}.diag-q-label{font-size:13px;font-weight:600;color:var(--text);margin-bottom:var(--s-3)}.diag-options{display:flex;flex-direction:column;gap:var(--s-2)}.diag-opt{background:var(--surface-2);border:1.5px solid var(--border);border-radius:var(--r-md);padding:var(--s-3) var(--s-4);text-align:left;cursor:pointer;font:inherit;color:inherit;transition:all var(--t-fast) var(--ease);display:flex;flex-direction:column;gap:2px}.diag-opt:hover{border-color:var(--border-strong);background:var(--surface-hover)}.diag-opt.selected{border-color:var(--text);background:var(--surface)}.diag-opt strong{font-size:14px;font-weight:600;color:var(--text)}.diag-opt span{font-size:12px;color:var(--text-muted);line-height:1.4}.diag-foot{padding:var(--s-4) var(--s-6) var(--s-5);border-top:1px solid var(--border);display:flex;gap:var(--s-3);align-items:center;justify-content:flex-end}.an-section+.an-section{margin-top:var(--s-4)}.an-section{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s-3)}.an-title{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);margin-bottom:var(--s-3)}.an-empty{color:var(--text-soft);font-size:12px;padding:var(--s-2) 0}.an-slide-row{display:grid;grid-template-columns:28px 1fr 70px;align-items:center;gap:var(--s-2);font-size:12px;padding:4px 0}.an-slide-num{text-align:right;color:var(--text-muted);font-variant-numeric:tabular-nums}.an-bar-wrap{height:8px;background:var(--surface-2);border-radius:100px;overflow:hidden}.an-bar{height:100%;background:linear-gradient(90deg,var(--blue),var(--blue-strong));border-radius:100px}.an-counts{color:var(--text-soft);text-align:right;white-space:nowrap}.an-miss-row{display:flex;align-items:center;justify-content:space-between;gap:var(--s-2);padding:8px 0;border-bottom:1px solid var(--border)}.an-miss-row:last-child{border-bottom:none}.an-miss-concept{font-size:13px;font-weight:600;color:var(--text)}.an-miss-meta{font-size:11px;color:var(--text-soft);white-space:nowrap}.an-errkind-row{display:flex;align-items:center;justify-content:space-between;padding:6px 0;border-bottom:1px solid var(--border);font-size:12px}.an-errkind-row:last-child{border-bottom:none}.an-quiz-summary{display:flex;gap:var(--s-4)}.an-stat{display:flex;flex-direction:column;align-items:flex-start;gap:2px}.an-stat strong{font-size:20px;color:var(--text);font-variant-numeric:tabular-nums}.an-stat span{font-size:11px;color:var(--text-muted)}.an-event-row{display:grid;grid-template-columns:8px 1fr auto;align-items:start;gap:var(--s-2);padding:6px 0;border-bottom:1px solid var(--border);font-size:12px}.an-event-row:last-child{border-bottom:none}.an-dot{width:6px;height:6px;border-radius:100px;background:var(--text-muted);margin-top:5px}.an-dot.opened{background:var(--orange)}.an-dot.question{background:var(--blue)}.an-dot.quiz{background:var(--blue-strong)}.an-dot.other{background:var(--text-muted)}.an-event-text{color:var(--text-soft);line-height:1.4}.an-event-text strong{color:var(--text);font-weight:600}.an-event-ago{color:var(--text-muted);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:10px}.an-verdict{font-weight:600;text-transform:capitalize}.an-verdict.correct{color:var(--good)}.an-verdict.partial{color:var(--orange)}.an-verdict.wrong{color:var(--err)}.analytics-wrap{padding:var(--s-4);display:flex;flex-direction:column;gap:var(--s-4)}.analytics-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-3);flex-wrap:wrap}.analytics-head h3{margin:0;font-size:15px}.analytics-head .meta{color:var(--text-muted);font-size:12px}.analytics-head button{font-size:11px;padding:6px 10px;border-radius:8px;background:var(--surface-2);border:1px solid var(--border);color:var(--text);cursor:pointer}.analytics-head button:hover{border-color:var(--text-muted)}.kpi-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-2)}.kpi-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:var(--s-3)}.kpi-card .label{font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}.kpi-card .value{font-size:22px;font-weight:700;color:var(--text);margin-top:4px;font-variant-numeric:tabular-nums}.kpi-card .sub{font-size:11px;color:var(--text-soft);margin-top:2px}.analytics-section{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:var(--s-3)}.analytics-section h4{margin:0 0 var(--s-3);font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted)}.analytics-section .empty-line{color:var(--text-soft);font-size:12px}.slide-bars{display:flex;flex-direction:column;gap:6px;max-height:220px;overflow-y:auto}.slide-bar-row{display:grid;grid-template-columns:40px 1fr 28px;align-items:center;gap:var(--s-2);font-size:11px;color:var(--text-soft)}.slide-bar-row .slide-num{text-align:right;color:var(--text-muted)}.slide-bar-track{height:8px;background:var(--surface-2);border-radius:100px;overflow:hidden}.slide-bar-fill{height:100%;background:linear-gradient(90deg,var(--blue),var(--blue-strong));border-radius:100px}.slide-bar-row .slide-count{font-variant-numeric:tabular-nums;color:var(--text);font-weight:600}.miss-row{display:flex;align-items:center;justify-content:space-between;gap:var(--s-2);padding:8px 0;border-bottom:1px solid var(--border)}.miss-row:last-child{border-bottom:none}.miss-row .concept{font-size:13px;color:var(--text);font-weight:600}.miss-row .stats{display:flex;gap:6px;align-items:center;font-size:11px;color:var(--text-soft)}.miss-pill{font-size:10px;padding:2px 6px;border-radius:100px;background:var(--surface-2);color:var(--text-muted);font-weight:600}.miss-pill.mistakes{background:var(--orange-soft);color:var(--orange)}.miss-pill.attempts{background:var(--blue-soft);color:var(--blue)}.errkind-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px}.errkind-card{background:var(--surface-2);border-radius:10px;padding:8px 10px}.errkind-card .name{font-size:10px;letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted);font-weight:600}.errkind-card .count{font-size:16px;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}.activity-list{display:flex;flex-direction:column;gap:6px;max-height:280px;overflow-y:auto}.activity-row{display:grid;grid-template-columns:14px 1fr auto;align-items:start;gap:8px;padding:6px 0;border-bottom:1px solid var(--border);font-size:11px}.activity-row:last-child{border-bottom:none}.activity-dot{width:6px;height:6px;border-radius:100px;background:var(--text-muted);margin-top:6px}.activity-dot.opened{background:var(--orange)}.activity-dot.question{background:var(--blue)}.activity-dot.teach{background:var(--good)}.activity-dot.mastery{background:var(--orange-strong)}.activity-dot.quiz{background:var(--blue-strong)}.activity-text{color:var(--text-soft);line-height:1.4}.activity-text strong{color:var(--text);font-weight:600}.activity-when{color:var(--text-muted);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:10px}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:100px;border:2px solid var(--bg)}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}button:focus-visible,[role=button]:focus-visible{outline:2px solid var(--blue);outline-offset:2px}@media (max-width: 980px){main{grid-template-columns:1fr 380px}}#libraryBackdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;background:#0006;opacity:0;pointer-events:none;transition:opacity var(--t-base) var(--ease)}#libraryBackdrop.open{opacity:1;pointer-events:auto}#libraryDrawer{position:fixed;top:0;left:0;bottom:0;margin:20px;width:min(360px,88vw);background:var(--bg-elev);backdrop-filter:blur(28px) saturate(1.5);-webkit-backdrop-filter:blur(28px) saturate(1.5);border-right:1px solid var(--glass-border);border-radius:var(--r-lg);overflow:hidden;z-index:21;transform:translate(calc(-100% - 20px));transition:transform var(--t-slow) var(--ease-spring);display:flex;flex-direction:column;box-shadow:var(--shadow-lg)}#libraryDrawer.open{transform:translate(0)}#libraryDrawer .drawer-head{padding:var(--s-5) var(--s-5);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:var(--s-3)}#libraryDrawer .drawer-head svg.lib-title-icon{width:18px;height:18px;color:var(--text-muted);flex-shrink:0}#libraryDrawer .drawer-head h2{font-family:var(--font-display);font-weight:600;font-size:18px;margin:0;letter-spacing:-.015em;flex:1}#libraryDrawer .drawer-head .icon-btn{margin-left:auto}#libraryDrawer .drawer-body{flex:1;overflow-y:auto;padding:var(--s-3) 0}.lib-section{margin-bottom:var(--s-2)}.lib-section-title{font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);padding:var(--s-4) var(--s-5) var(--s-2)}.lib-deck-row{width:100%;background:transparent;border:none;display:flex;align-items:center;gap:var(--s-3);padding:var(--s-3) var(--s-5);cursor:pointer;text-align:left;transition:background var(--t-fast) var(--ease);border-radius:0}.lib-deck-row:hover{background:var(--surface-hover)}.lib-deck-row:active{background:var(--surface-2)}.lib-deck-row.lib-local{cursor:pointer;opacity:1}.lib-deck-row.lib-local:hover{background:var(--surface-hover)}.lib-deck-icon{width:34px;height:34px;flex-shrink:0;background:var(--surface-2);border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;color:var(--text-muted)}.lib-deck-icon svg{width:16px;height:16px}.lib-deck-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.lib-deck-name{font-size:14px;font-weight:500;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lib-deck-meta{font-size:12px;color:var(--text-muted)}.lib-deck-arrow{width:14px;height:14px;color:var(--text-muted);flex-shrink:0;opacity:0;transition:opacity var(--t-fast) var(--ease)}.lib-deck-row:hover .lib-deck-arrow{opacity:1}.lib-deck-delete{flex:none;width:22px;height:22px;padding:0;display:inline-flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:var(--r-xs);color:var(--text-muted);opacity:0;cursor:pointer;transition:opacity var(--t-fast) var(--ease),background var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}.lib-deck-delete svg{width:12px;height:12px}.lib-deck-row:hover .lib-deck-delete{opacity:1}.lib-deck-delete:hover{background:var(--surface-hover);color:var(--err)}.lib-deck-delete:disabled{opacity:.5;cursor:default}.lib-spinner{display:flex;justify-content:center;padding:var(--s-7)}.lib-notice{padding:var(--s-4) var(--s-5);font-size:13px;color:var(--text-muted);line-height:1.5}.lib-notice.lib-err{color:var(--err)}.lib-notice.lib-sign-in-hint{border-top:1px solid var(--border);margin-top:var(--s-2);padding-top:var(--s-4)}#libraryEmpty{display:none;padding:var(--s-5);text-align:center}#libraryEmpty svg{width:40px;height:40px;color:var(--border-strong);margin:0 auto var(--s-3);display:block}#libraryEmpty p{font-size:13px;color:var(--text-muted);line-height:1.5;margin:0}#libraryAuthNotice{display:none;padding:var(--s-5);text-align:center}#libraryAuthNotice p{font-size:13px;color:var(--text-muted);line-height:1.5;margin:0 0 var(--s-3)}.doc-tabs{display:none;align-items:stretch;gap:2px;padding:0;height:30px;background:transparent;border-bottom:1px solid var(--glass-border-subtle);overflow-x:auto;overflow-y:hidden;scrollbar-width:thin}.doc-tabs::-webkit-scrollbar{height:4px}.doc-tabs::-webkit-scrollbar-thumb{background:var(--glass-border);border-radius:4px}.doc-tab{display:inline-flex;align-items:center;gap:6px;padding:0 var(--s-2) 0 var(--s-3);max-width:200px;border-radius:var(--r-sm) var(--r-sm) 0 0;font-family:var(--font-mono);font-size:12px;color:var(--text-muted);cursor:pointer;white-space:nowrap;transition:color var(--t-fast) var(--ease),background var(--t-fast) var(--ease)}.doc-tab:hover{color:var(--text-soft);background:var(--glass-control)}.doc-tab.active{color:var(--text);background:linear-gradient(135deg,#fffffff2,#ffffffc7);box-shadow:var(--shadow-sm),inset 0 1px #ffffffe6}[data-theme=dark] .doc-tab.active{background:linear-gradient(135deg,#3faec452,#2b8da638);color:var(--text)}.doc-tab-icon{width:12px;height:12px;flex:none;color:var(--text-muted)}.doc-tab.active .doc-tab-icon{color:var(--blue)}[data-theme=dark] .doc-tab.active .doc-tab-icon{color:var(--blue-strong)}.doc-tab-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.doc-tab-close{flex:none;width:16px;height:16px;padding:0;display:inline-flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:4px;color:var(--text-muted);opacity:0;cursor:pointer;transition:opacity var(--t-fast) var(--ease),background var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}.doc-tab-close svg{width:10px;height:10px}.doc-tab:hover .doc-tab-close,.doc-tab.active .doc-tab-close{opacity:1}.doc-tab-close:hover{background:var(--surface-hover);color:var(--err)}
