: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:#3faec424;--teal:#52c8d7;--orange:#e8915f;--orange-strong:#d2703a;--orange-soft:#e8915f29;--gradient-brand:linear-gradient(135deg, #5bb6bc 0%, #d3d4b9 50%, #e89b6c 100%)}[data-theme=light]{--bg:#dcefec;--bg-elev:#fffffff5;--glass-bar:#ffffffbd;--glass-pane:#ffffffad;--glass-control:#ffffffb8;--glass-border:#ffffffbf;--glass-border-subtle:#ffffff80;--surface:#fffc;--surface-2:#ffffff6b;--surface-hover:#ffffffd1;--border:#ffffffb8;--border-strong:#96c3c68c;--text:#1b2526;--text-soft:#3c4748;--text-muted:#7c8a8b;--shadow-xs:0 1px 2px #2846480d;--shadow-sm:0 1px 2px #2846480d, 0 2px 6px #2846480d;--shadow-md:0 6px 22px #28464817, 0 2px 6px #2846480d;--shadow-lg:0 24px 60px #28464824, 0 6px 16px #28464812;--good:#1f9e5a;--warn:#c2870e;--err:#db4a4a;--skeleton:linear-gradient(90deg, #fff6 0%, #ffffffc7 50%, #fff6 100%)}[data-theme=dark]{--bg:#0c1116;--bg-elev:#161d24f5;--glass-bar:#10161cd6;--glass-pane:#12181fcc;--glass-control:#181f27cc;--glass-border:#ffffff1a;--glass-border-subtle:#ffffff0f;--surface:#1c242ccc;--surface-2:#222b348c;--surface-hover:#2a353fb8;--border:#ffffff1a;--border-strong:#ffffff2e;--text:#edf3f2;--text-soft:#c4d0cf;--text-muted:#7e8e8e;--shadow-xs:0 1px 2px #00000059;--shadow-sm:0 1px 2px #00000059;--shadow-md:0 6px 18px #00000073;--shadow-lg:0 28px 64px #0009, 0 6px 16px #00000073;--good:#4ade80;--warn:#f5b53e;--err:#f87171;--skeleton:linear-gradient(90deg, #222b3499 0%, #303c4699 50%, #222b3499 100%)}*,:before,:after{box-sizing:border-box}html,body{height:100%}body{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);transition:background var(--t-slow) var(--ease), color var(--t-slow) var(--ease);margin:0;overflow:hidden}::selection{background:var(--blue-soft);color:var(--text)}button,input,select,textarea{font:inherit;color:inherit}[data-theme=light] body,[data-theme=dark] body{background:var(--bg)}#app{opacity:0;height:100vh;transition:opacity var(--t-slow) var(--ease) .25s;grid-template-rows:56px 1fr;display:grid;position:relative;overflow:clip}#app.visible{opacity:1}.topbar{padding:0 var(--s-5);align-items:center;gap:var(--s-3);background:var(--glass-bar);-webkit-backdrop-filter:blur(22px)saturate(1.5);border-bottom:1px solid var(--glass-border);display:flex}.topbar .brand{align-items:center;gap:var(--s-2);font-family:var(--font-mono);letter-spacing:.01em;color:var(--text);font-size:15px;font-weight:500;display:flex}.topbar .brand .mark{width:22px;height:22px}.topbar .spacer{flex:1}.pdf-tag{font-family:var(--font-mono);color:var(--text-soft);background:var(--glass-control);border:1px solid var(--glass-border);box-shadow:var(--shadow-sm), inset 0 1px 0 #fff6;-webkit-backdrop-filter:blur(8px);text-overflow:ellipsis;white-space:nowrap;border-radius:100px;max-width:300px;padding:5px 14px;font-size:12.5px;display:none;overflow:hidden}.status-pill{background:var(--glass-control);border:1px solid var(--glass-border);font-size:12px;font-family:var(--font-mono);color:var(--text-soft);box-shadow:var(--shadow-sm);-webkit-backdrop-filter:blur(8px);border-radius:100px;align-items:center;gap:6px;padding:5px 12px;display:none}.status-dot{background:var(--text-muted);border-radius:50%;width:6px;height:6px}.status-dot.ok{background:var(--good);box-shadow:0 0 8px var(--good)}.status-dot.busy{background:var(--warn);animation:1.2s ease-in-out infinite pulse}.status-dot.err{background:var(--err)}.status-dot.streaming{background:var(--blue);animation:.8s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.35}}.icon-btn{width:34px;height:34px;color:var(--text-soft);cursor:pointer;transition:all var(--t-fast) var(--ease);background:0 0;border:1px solid #0000;border-radius:50%;justify-content:center;align-items:center;padding:0;display:inline-flex}.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{gap:var(--s-4);padding:var(--s-4);background:0 0;grid-template-columns:1fr 460px;display:grid;overflow:hidden}.loading{color:var(--text-muted);align-items:center;gap:var(--s-2);font-size:13px;display:inline-flex}.spinner{border:2px solid var(--border-strong);border-top-color:var(--text);border-radius:50%;width:14px;height:14px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.streaming-cursor:after{content:"▎";color:var(--blue);margin-left:1px;animation:.9s steps(2,end) infinite blink}@keyframes blink{0%,50%{opacity:1}51%,to{opacity:0}}.skeleton{background:var(--skeleton);border-radius:var(--r-sm);background-size:200% 100%;animation:1.6s ease-in-out infinite shimmer}@keyframes shimmer{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);color:var(--text-soft);justify-content:center;align-items:center;display:flex}.empty .ico svg{width:24px;height:24px}.empty strong{color:var(--text-soft);margin-bottom:4px;font-weight:600;display:block}#splash{z-index:200;pointer-events:auto;background:var(--bg);transition:opacity .42s var(--ease), visibility .42s var(--ease);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}#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{font-family:var(--font-mono);letter-spacing:.01em;color:var(--text);background:var(--glass-bar);border:1px solid var(--glass-border);cursor:pointer;appearance:none;-webkit-backdrop-filter:blur(20px)saturate(1.4);box-shadow:var(--shadow-lg), inset 0 1px 0 #fff9;transition:transform var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease);border-radius:100px;padding:20px 56px;font-size:28px;font-weight:500;animation:.7s cubic-bezier(.16,1,.3,1) pill-rise;position:relative}.splash-pill:hover{box-shadow:var(--shadow-lg), 0 0 0 6px #52c8d71a, inset 0 1px 0 #fff9;transform:translateY(-2px)scale(1.02)}.splash-pill:active{transform:scale(.98)}.splash-pill:focus-visible{box-shadow:var(--shadow-lg), 0 0 0 4px #52c8d766, inset 0 1px 0 #fff9;outline:none}@keyframes pill-rise{0%{opacity:0;transform:translateY(10px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}.splash-pill:after{content:"";border-radius:inherit;border:2px solid var(--teal);opacity:0;pointer-events:none;position:absolute;inset:-1px}.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{opacity:0;transform:scale(.72)}}@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,.splash-pill.pop:after{animation:none}}#onboarding{z-index:10;padding:var(--s-8);transition:opacity var(--t-slow) var(--ease), visibility var(--t-slow) var(--ease);background:0 0;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}#onboarding.hidden{opacity:0;visibility:hidden;pointer-events:none}.onboarding-bg{display:none}.onboarding-shell{z-index:1;justify-content:center;align-items:center;width:100%;display:flex;position:relative}.onboarding-card{background:var(--glass-pane);border:1px solid var(--glass-border);border-radius:var(--r-2xl);width:100%;max-width:1040px;box-shadow:var(--shadow-lg), inset 0 1px 0 #ffffff73;-webkit-backdrop-filter:blur(28px)saturate(1.5);animation:card-rise .6s var(--ease-out);transition:max-width var(--t-slow) var(--ease);padding:56px 60px;position:relative;overflow:hidden}@keyframes card-rise{0%{opacity:0;transform:translateY(14px)scale(.99)}to{opacity:1;transform:translateY(0)scale(1)}}#onboarding .theme-toggle-pill{z-index:3;position:absolute;top:22px;right:24px}.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{gap:var(--s-12);grid-template-columns:1.15fr .85fr;align-items:stretch;display:grid}.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{align-items:center;gap:var(--s-2);margin-bottom:var(--s-8);display:flex}.onboarding-brand .mark{width:24px;height:24px}.onboarding-brand .name{font-family:var(--font-mono);letter-spacing:.01em;color:var(--text-soft);font-size:15px;font-weight:500}.onboarding-h1{font-family:var(--font-display);letter-spacing:-.01em;margin:0 0 var(--s-4);color:var(--text);font-size:44px;font-weight:500;line-height:1.12}.onboarding-h1 .u{text-underline-offset:5px;text-decoration:underline;text-decoration-thickness:2px;-webkit-text-decoration-color:var(--teal);text-decoration-color:var(--teal)}.onboarding-h1 em{font-style:normal}.onboarding-lede{color:var(--text-soft);max-width:46ch;margin:0;font-size:14px;line-height:1.65}.feature-list{margin:var(--s-8) 0 0;padding:0;list-style:none}.feature-list li{gap:var(--s-3);padding:var(--s-3) 0;animation:slide-in .5s var(--ease-out) backwards;align-items:flex-start;display:flex}.feature-list li:first-child{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{background:var(--glass-control);border:1px solid var(--glass-border);border-radius:var(--r-sm);width:30px;height:30px;color:var(--text-soft);-webkit-backdrop-filter:blur(4px);flex-shrink:0;justify-content:center;align-items:center;display:flex}.feature-list .ico svg{width:14px;height:14px}.feature-list .text strong{color:var(--text);margin-bottom:1px;font-size:13px;font-weight:600;display:block}.feature-list .text span{color:var(--text-muted);font-size:12px;line-height:1.5;display:block}.step1-aside{flex-direction:column;justify-content:space-between;display:flex}.onboard-chart{color:var(--text-muted);opacity:0;animation:chart-in .9s var(--ease-out) .25s forwards;flex:1;justify-content:center;align-items:center;display:flex}@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:460px;animation:draw-line 1.4s var(--ease-out) .4s forwards}@keyframes draw-line{to{stroke-dashoffset:0}}.step1-cta{margin-top:var(--s-6);justify-content:flex-end;display:flex}.step2-content{text-align:left;margin-bottom:var(--s-6)}.step2-content .onboarding-h1{margin-bottom:var(--s-5);font-size:34px;line-height:1.1}.setup-heading{font-family:var(--font-display);letter-spacing:-.01em;color:var(--text);margin:0 0 4px;font-size:15px;font-weight:500}.setup-sub{color:var(--text-muted);margin:0;font-size:13px;line-height:1.5}.setup-form{display:block}.field{margin-bottom:var(--s-3)}.field-label{font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);margin-bottom:var(--s-2);padding-left:var(--s-3);font-size:11px;font-weight:500;display:block}.field-input,.field-select{background:var(--glass-control);border:1px solid var(--glass-border);width:100%;padding:13px var(--s-5);color:var(--text);box-shadow:var(--shadow-sm), inset 0 1px 0 #ffffff80;transition:box-shadow var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease), transform var(--t-fast) var(--ease);cursor:pointer;appearance:none;border-radius:100px;font-size:14px}.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-position:right 16px center;background-repeat:no-repeat;background-size:12px;padding-right:40px}[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-position:right 16px center;background-repeat:no-repeat;background-size:12px}.field-input:hover,.field-select:hover{transform:translateY(-1px)}.field-input:focus,.field-select:focus{box-shadow:0 0 0 4px #52c8d729, var(--shadow-sm);border-color:#52c8d799;outline:none}.field-row{gap:var(--s-3);grid-template-columns:1fr 1fr;display:grid}.field-help{color:var(--text-muted);margin-top:var(--s-2);padding-left:var(--s-3);font-size:12px;line-height:1.5}.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 0 #ffffff0f}.onboarding-footer-row{margin-top:var(--s-5);align-items:center;display:flex}.step2-back{color:var(--text-muted);cursor:pointer;padding:var(--s-2) 0;transition:color var(--t-fast) var(--ease);background:0 0;border:none;align-items:center;gap:6px;font-size:13px;display:inline-flex}.step2-back:hover{color:var(--text)}.btn{justify-content:center;align-items:center;gap:var(--s-2);font-family:var(--font-mono);padding:var(--s-3) var(--s-5);cursor:pointer;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);border:1px solid #0000;border-radius:100px;font-size:13.5px;font-weight:500;display:inline-flex}.btn-primary{color:var(--text);border-color:var(--glass-border);box-shadow:var(--shadow-md), inset 0 1px 0 #ffffffe6;-webkit-backdrop-filter:blur(8px);background:linear-gradient(135deg,#fffffff5,#fffc)}.btn-primary:hover{box-shadow:var(--shadow-lg), inset 0 1px 0 #ffffffe6;transform:translateY(-1px)}.btn-primary:active{transform:translateY(0)}.btn-primary:disabled{opacity:.45;cursor:not-allowed;box-shadow:var(--shadow-sm);transform:none}[data-theme=dark] .btn-primary{color:#16201f;background:linear-gradient(135deg,#f4f8f7f2,#d6e0dfdb)}.btn-secondary{background:var(--glass-control);color:var(--text-soft);border-color:var(--glass-border);box-shadow:var(--shadow-sm), inset 0 1px 0 #fff6;-webkit-backdrop-filter:blur(8px)}.btn-secondary:hover{color:var(--text);transform:translateY(-1px)}.btn-ghost{color:var(--text-muted);padding:var(--s-2) var(--s-3);background:0 0;border:none}.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:0 0}.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);padding:4px 4px 4px var(--s-3);align-items:center;gap:var(--s-2);cursor:pointer;font-size:12px;font-family:var(--font-mono);color:var(--text-soft);-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);border-radius:100px;display:inline-flex}.theme-toggle-pill:hover{transform:translateY(-1px)}.theme-toggle-pill .switch{background:var(--text);width:22px;height:22px;color:var(--bg);transition:background var(--t-base) var(--ease);border-radius:50%;justify-content:center;align-items:center;display:flex}.theme-toggle-pill .switch svg{width:12px;height:12px}@media (width<=880px){.onboarding-card{padding:40px 32px}.step-1{gap:var(--s-6);grid-template-columns:1fr}.step1-aside{gap:var(--s-5);flex-direction:column-reverse}.onboard-chart{max-width:100%}.step1-cta{justify-content:flex-start}.onboarding-h1{font-size:36px}}.pdf-pane{background:var(--glass-pane);border:1px solid var(--glass-border);border-radius:var(--r-xl);box-shadow:var(--shadow-md), inset 0 1px 0 #ffffff59;-webkit-backdrop-filter:blur(20px)saturate(1.4);grid-template-rows:auto auto 1fr auto auto;grid-template-columns:minmax(0,1fr);display:grid;position:relative;overflow:hidden}.pdf-controls{align-items:center;gap:var(--s-2);padding:var(--s-3) var(--s-4);border-bottom:1px solid var(--glass-border-subtle);background:0 0;flex-wrap:wrap;display:flex}.nav-btn{background:var(--glass-control);color:var(--text-soft);border:1px solid var(--glass-border);padding:6px var(--s-3);cursor:pointer;font-family:var(--font-mono);box-shadow:var(--shadow-sm);transition:all var(--t-fast) var(--ease);border-radius:100px;align-items:center;gap:6px;font-size:12.5px;font-weight:500;display:inline-flex}.nav-btn:hover:not(:disabled){color:var(--text);box-shadow:var(--shadow-md);transform:translateY(-1px)}.nav-btn:disabled{opacity:.35;cursor:not-allowed;box-shadow:none}.pdf-controls .btn-icon{border-radius:100px;flex-shrink:0;padding:6px}.pdf-controls .btn-icon svg{width:15px;height:15px}.pdf-controls .btn-icon.active{color:var(--orange);background:var(--orange-soft)}.pdf-controls .btn-icon.active:hover{color:var(--orange-strong);background:var(--orange-soft)}.nav-btn svg{width:14px;height:14px}.page-indicator{font-variant-numeric:tabular-nums;font-family:var(--font-mono);color:var(--text-soft);padding:0 var(--s-3);text-align:center;min-width:90px;font-size:12.5px}.review-chip{background:var(--orange-soft);color:var(--orange);letter-spacing:.02em;border-radius:100px;padding:3px 10px;font-size:11px;font-weight:600;display:none}.review-chip.shown{display:inline-block}.progress-bar{background:var(--surface-2);height:2px}.progress-bar:after{content:"";height:100%;width:var(--progress,0%);background:var(--gradient-brand);transition:width var(--t-base) var(--ease);border-radius:0 2px 2px 0;display:block}.canvas-wrap{padding:var(--s-6) var(--s-8) var(--s-12);scroll-behavior:smooth;scrollbar-gutter:stable;overscroll-behavior:contain;overflow:auto}.page-container canvas.hires-layer{pointer-events:none;width:100%;max-width:none;height:100%;position:absolute;top:0;left:0}.canvas-wrap.zoomed-in .page-container,.canvas-wrap.zoomed-in .textLayer{cursor:grab}.canvas-wrap.zoomed-in .textLayer>span{cursor:text}.canvas-wrap.space-pan,.canvas-wrap.space-pan *{cursor:grab!important}.canvas-wrap.panning,.canvas-wrap.panning *{cursor:grabbing!important;-webkit-user-select:none!important;user-select:none!important}.zoom-controls{background:var(--glass-control);border:1px solid var(--glass-border);box-shadow:var(--shadow-sm);margin:0 var(--s-1);border-radius:100px;align-items:center;gap:2px;padding:2px;display:inline-flex}.zoom-btn{cursor:pointer;font-family:var(--font-mono);color:var(--text-soft);min-width:24px;height:22px;transition:background var(--t-fast) var(--ease), color var(--t-fast) var(--ease);background:0 0;border:none;border-radius:100px;justify-content:center;align-items:center;font-size:14px;line-height:1;display:inline-flex}.zoom-btn:hover:not(:disabled){background:var(--surface-2);color:var(--text)}.zoom-btn:disabled{opacity:.4;cursor:default}.zoom-btn.zoom-val{font-variant-numeric:tabular-nums;min-width:46px;font-size:11.5px}.pages-stack{align-items:flex-start;gap:var(--s-6);flex-direction:column;width:max-content;min-width:100%;display:flex}.page-container{border-radius:var(--r-lg);box-shadow:var(--shadow-lg);transition:outline-color var(--t-base) var(--ease), transform var(--t-base) var(--ease);background:#fff;margin-inline:auto;scroll-margin-top:24px;line-height:1;position:relative;overflow:hidden}.page-container.current{outline:2px solid var(--blue);outline-offset:6px}.page-container canvas{max-width:100%;display:block}.page-container.placeholder:before{content:"";background:linear-gradient(90deg, var(--surface-2) 0%, var(--surface-hover) 50%, var(--surface-2) 100%);opacity:.3;background-size:200% 100%;animation:1.6s linear infinite shimmer;position:absolute;inset: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:0 0}.crop-overlay{cursor:crosshair;z-index:5;background:#0000001f;position:absolute;inset:0}.crop-rect{border:1.5px solid var(--blue);pointer-events:none;background:#4a9eff2e;position:absolute;box-shadow:0 0 0 9999px #00000059}.crop-hint{background:var(--text);color:var(--bg);white-space:nowrap;pointer-events:none;box-shadow:var(--shadow-md);z-index:6;border-radius:100px;padding:6px 12px;font-size:12px;font-weight:500;position:absolute;top:12px;left:50%;transform:translate(-50%)}.note-pin{border:1px solid var(--orange);border-radius:var(--r-sm);width:190px;box-shadow:var(--shadow-md);z-index:4;background:#fbeada;position:absolute;overflow:hidden;transform:translate(-4px,-4px)}.note-head{cursor:default;justify-content:space-between;align-items:center;padding:3px 6px;display:flex}.note-drag{cursor:grab;color:var(--orange-strong);-webkit-user-select:none;user-select:none;padding:2px 4px;font-size:12px;line-height:1}.note-drag:active{cursor:grabbing}.note-del{cursor:pointer;color:var(--orange-strong);opacity:.7;background:0 0;border:none;padding:0 3px;font-size:15px;line-height:1}.note-del:hover{opacity:1}.note-body{resize:vertical;color:#3a2a18;box-sizing:border-box;background:0 0;border:none;outline:none;width:100%;min-height:44px;padding:0 8px 8px;font-family:inherit;font-size:12.5px;line-height:1.4;display:block}.note-body::placeholder{color:#3a2a1873}.crop-mode .note-pin{pointer-events:none;opacity:.5}.note-pin.flash{animation:note-flash 1.4s var(--ease)}@keyframes note-flash{0%,to{box-shadow:var(--shadow-md)}15%,55%{box-shadow:var(--shadow-md), 0 0 0 3px var(--blue)}}.textLayer{line-height:1;position:absolute;inset:0;overflow:hidden}.textLayer>span{color:#0000;white-space:pre;cursor:text;transform-origin:0 0;position:absolute}.textLayer ::selection{color:#0000;background:#4a9eff80}#selectionBar{z-index:100;background:var(--text);color:var(--bg);box-shadow:var(--shadow-lg);-webkit-user-select:none;user-select:none;border-radius:100px;align-items:center;gap:2px;padding:3px;display:none;position:fixed}#selectionBar.shown{animation:pop .2s var(--ease-out);display:inline-flex}@keyframes pop{0%{opacity:0;transform:translateY(4px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}.sel-btn{color:inherit;white-space:nowrap;cursor:pointer;transition:background var(--t-fast) var(--ease), color var(--t-fast) var(--ease);background:0 0;border:none;border-radius:100px;align-items:center;gap:6px;padding:7px 12px;font-family:inherit;font-size:12.5px;font-weight:500;display:inline-flex}.sel-btn svg{flex-shrink:0;width:13px;height:13px}.sel-btn:hover{background:var(--blue);color:#fff}.sel-btn:active{transform:translateY(.5px)}.sel-sep{opacity:.18;background:currentColor;flex-shrink:0;width:1px;height:16px}@media (width<=560px){.sel-btn span{display:none}.sel-btn{padding:8px 10px}}.thumb-strip{padding:var(--s-3) var(--s-5);border-top:1px solid var(--glass-border-subtle);background:var(--glass-control);-webkit-backdrop-filter:blur(12px);scroll-behavior:smooth;gap:6px;display:flex;position:relative;overflow-x:auto}.thumb-strip::-webkit-scrollbar{height:6px}.thumb-strip .thumb{background:var(--surface);border:1.5px solid var(--border);border-radius:var(--r-sm);cursor:pointer;width:60px;height:42px;color:var(--text-muted);font-variant-numeric:tabular-nums;transition:all var(--t-fast) var(--ease);background-position:top;background-size:cover;flex-shrink:0;justify-content:center;align-items:flex-end;padding-bottom:3px;font-size:10px;font-weight:600;display:flex;position:relative;overflow:hidden}.thumb-strip .thumb:hover{border-color:var(--border-strong);transform:translateY(-1px)}.thumb-strip .thumb.active{border-color:var(--blue);color:var(--text);box-shadow:var(--shadow-md);transform:translateY(-2px)scale(1.05)}.thumb-strip .thumb.has-preview{color:#fff;text-shadow:0 1px 2px #00000080}.thumb-strip .thumb.has-preview:before{content:"";background:linear-gradient(#0000 50%,#0009 100%);position:absolute;inset:0}.thumb-strip .thumb.has-preview span{z-index:1;position:relative}.thumb-strip .thumb.weak{border-color:var(--orange)}.thumb-strip .thumb.weak:after{content:"";background:var(--orange);border-radius:50%;width:6px;height:6px;position:absolute;top:2px;right:2px}.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{background:var(--glass-pane);-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 0 #ffffff59;flex-direction:column;display:flex;overflow:hidden}.tabs{padding:var(--s-3) 16px;border-bottom:1px solid var(--glass-border-subtle);background:0 0;flex-wrap:wrap;justify-content:center;gap:8px;display:flex;position:relative}.tab{padding:var(--s-2) var(--s-3);background:var(--glass-control);border:1px solid var(--glass-border);box-shadow:var(--shadow-sm);color:var(--text-soft);font-family:var(--font-mono);cursor:pointer;transition:all var(--t-fast) var(--ease);border-radius:100px;align-items:center;gap:6px;font-size:12.5px;font-weight:500;display:inline-flex;position:relative}.tab svg{width:14px;height:14px}.tab:hover{color:var(--text);transform:translateY(-1px)}.tab.active{color:var(--text);border-color:var(--glass-border);box-shadow:var(--shadow-md), inset 0 1px 0 #ffffffe6;background:linear-gradient(135deg,#fffffff2,#ffffffc7)}[data-theme=dark] .tab.active{color:#16201f;background:linear-gradient(135deg,#f4f8f7f2,#d6e0dfd9)}.tab-indicator{display:none}.tab-content{padding:var(--s-5);animation:fade-up .28s var(--ease-out);flex:1;display:none;overflow-y:auto}@keyframes fade-up{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.tab-content.active{display:block}.tutor-tab.tab-content{flex-direction:column;height:100%;padding:0;display:none;overflow:hidden}.tutor-tab.tab-content.active{display:flex}.tutor-scroll{padding:var(--s-5) var(--s-5) var(--s-4);flex:1;overflow-y:auto}.katex-display{overflow:auto hidden}.katex{position:relative}.tutor-explanation{color:var(--text-soft);font-size:15px;line-height:1.65}.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);color:var(--text);margin:var(--s-5) 0 var(--s-2);letter-spacing:-.01em;font-size:16px;font-weight:600}.tutor-explanation code{background:var(--surface-2);font-size:13px;font-family:var(--font-mono);color:var(--text);border-radius:4px;padding:1px 6px}.voice-bar{margin-top:var(--s-5);padding-top:var(--s-4);border-top:1px solid var(--border);align-items:center;gap:var(--s-2);display:flex}.voice-btn{border:1px solid var(--border);padding:6px var(--s-3);color:var(--text-soft);cursor:pointer;transition:all var(--t-fast) var(--ease);background:0 0;border-radius:100px;align-items:center;gap:6px;font-size:12px;font-weight:500;display:inline-flex}.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{color:var(--text-muted);cursor:pointer;-webkit-user-select:none;user-select:none;font-family:var(--font-mono);padding:var(--s-2) var(--s-3);transition:all var(--t-fast) var(--ease);border:1px solid #0000;border-radius:100px;align-items:center;gap:6px;margin-left:auto;font-size:13.5px;font-weight:500;display:inline-flex}.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{width:16px;height:16px;position:relative}.check input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.check .box{border:1.5px solid var(--border-strong);background:var(--bg);width:16px;height:16px;transition:all var(--t-fast) var(--ease);border-radius:4px;justify-content:center;align-items:center;display:flex}.check input:checked+.box{background:var(--text);border-color:var(--text)}.check input:checked+.box:after{content:"";border-left:2px solid var(--bg);border-bottom:2px solid var(--bg);width:8px;height:4px;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);letter-spacing:.08em;text-transform:uppercase;font-size:11px;font-weight:700}.weak-card ul{color:var(--text-soft);margin:0;padding-left:18px}.weak-card li{margin-bottom:2px}.chat-messages{gap:var(--s-3);margin-top:var(--s-5);flex-direction:column;display:flex}.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);word-wrap:break-word;white-space:pre-wrap;max-width:88%;animation:msg-in .28s var(--ease-out);font-size:14px;line-height:1.55}@keyframes msg-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.msg.user{color:var(--text);background:#3faec429;border-bottom-right-radius:4px;align-self:flex-end}[data-theme=dark] .msg.user{background:#ffffff1a}.msg.ai{background:var(--surface-2);color:var(--text);white-space:normal;border-bottom-left-radius:4px}.msg.ai>:first-child{margin-top:0}.msg.ai>:last-child{margin-bottom:0}.msg.ai p{margin:0 0 .6em}.msg.ai ul,.msg.ai ol{margin:.3em 0 .6em;padding-left:1.4em}.msg.ai li{margin:.2em 0}.msg.ai li>p{margin:0}.msg.ai li>ul,.msg.ai li>ol{margin:.2em 0}.msg.ai h1,.msg.ai h2,.msg.ai h3,.msg.ai h4{margin:.8em 0 .4em;font-size:1em;line-height:1.35}.msg.ai pre{white-space:pre-wrap}.composer-dock{margin:var(--s-3) var(--s-5) var(--s-5)}.composer-attachments{padding:0 var(--s-2) var(--s-2);flex-wrap:wrap;gap:6px;display:flex}.att-chip{background:var(--blue-soft);max-width:100%;color:var(--text);transition:border-color var(--t-fast) var(--ease);border:1px solid #0000;border-radius:100px;align-items:center;gap:6px;padding:4px 6px 4px 8px;font-size:12px;display:inline-flex}.att-chip.just-added{animation:att-pop .32s var(--ease-spring)}@keyframes att-pop{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.att-chip .att-ico{width:11px;height:11px;color:var(--blue);flex-shrink:0}.att-chip .att-thumb{object-fit:cover;width:28px;height:20px;box-shadow:0 0 0 1px var(--glass-border-subtle);background:#fff;border-radius:4px;flex-shrink:0}.att-label{text-overflow:ellipsis;white-space:nowrap;max-width:190px;overflow:hidden}.att-remove{cursor:pointer;color:var(--text-muted);transition:color var(--t-fast) var(--ease);background:0 0;border:none;border-radius:100px;flex-shrink:0;padding:0 2px;font-size:15px;line-height:1}.att-remove:hover{color:var(--text)}.msg-atts{flex-wrap:wrap;gap:6px;margin-bottom:6px;display:flex}.msg-att-crop img{background:#fff;border-radius:6px;max-width:160px;max-height:110px;display:block;box-shadow:0 0 0 1px #0000001f}.msg-att-text{opacity:.85;border-left:2px solid var(--blue);padding-left:8px;font-style:italic}.msg-body{white-space:pre-wrap}.chat-tail-spacer{pointer-events:none;flex-shrink:0;height:0}.composer{background:var(--glass-bar);border:1px solid var(--glass-border);border-radius:var(--r-xl);padding:var(--s-2);-webkit-backdrop-filter:blur(10px);transition:border-color var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease);align-items:flex-end;gap:6px;display:flex;box-shadow:0 2px 12px #0000000d,inset 0 1px #fffffff2}.composer:focus-within{border-color:#52c8d78c;box-shadow:0 0 0 4px #52c8d71f,0 2px 12px #0000000d}.composer textarea{padding:6px var(--s-2);resize:none;background:0 0;border:none;outline:none;flex:1;max-height:120px;font-size:14px}.composer textarea::placeholder{color:var(--text-muted);font-style:italic}.composer .mic-btn,.composer .send-btn{border-radius:var(--r-md);cursor:pointer;transition:all var(--t-fast) var(--ease);border:none;justify-content:center;align-items:center;padding:8px 10px;display:inline-flex}.composer .mic-btn{color:var(--text-soft);background:0 0}.composer .mic-btn:hover{background:var(--surface-hover);color:var(--text)}.composer .mic-btn.recording{background:var(--err);color:#fff;animation:1s ease-in-out infinite pulse-bg}@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-size:13px;font-weight:500}.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-head{padding:0 var(--s-1) var(--s-3);margin-bottom:var(--s-3);border-bottom:1px solid var(--glass-border-subtle);flex-direction:column;gap:2px;display:flex}.bm-doc{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:500;overflow:hidden}.bm-count{font-family:var(--font-mono);color:var(--text-muted);letter-spacing:.02em;font-size:11px}.bm-subtabs{margin-bottom:var(--s-4);gap:6px;display:flex}.bm-subtab{padding:var(--s-2) var(--s-3);background:var(--surface-2);border:1px solid var(--glass-border-subtle);color:var(--text-soft);font-family:var(--font-mono);cursor:pointer;transition:all var(--t-fast) var(--ease);border-radius:100px;flex:1;font-size:12.5px;font-weight:500}.bm-subtab:hover{color:var(--text)}.bm-subtab.active{color:var(--text);background:var(--blue-soft);border-color:#0000}.bm-list{flex-direction:column;gap:6px;display:flex}.bm-row{align-items:flex-start;gap:var(--s-2);padding:var(--s-3);border-radius:var(--r-md);background:var(--surface-2);cursor:pointer;color:var(--text);transition:background var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease), transform var(--t-fast) var(--ease);border-left:2px solid #0000;font-size:13.5px;display:flex}.bm-row:hover{background:var(--surface-hover);transform:translate(2px)}.bm-row.current{border-left-color:var(--blue);background:var(--surface-hover)}.bm-row-ico{flex-shrink:0;width:13px;height:13px;margin-top:1px}.bm-row-bookmark .bm-row-ico{color:var(--orange)}.bm-row-note .bm-row-ico{color:var(--blue)}.bm-row-main{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.bm-row-page{font-family:var(--font-mono);color:var(--text-soft);text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:600}.bm-row-bookmark .bm-row-page{color:var(--orange-strong)}.bm-row-note .bm-row-page{color:var(--blue)}.bm-note-snippet{color:var(--text-soft);word-break:break-word;line-height:1.4}.bm-note-empty{color:var(--text-muted);font-style:italic}.bm-row-del{cursor:pointer;color:var(--text-muted);opacity:0;transition:opacity var(--t-fast) var(--ease), color var(--t-fast) var(--ease);background:0 0;border:none;border-radius:100px;flex-shrink:0;padding:0 2px;font-size:15px;line-height:1}.bm-row:hover .bm-row-del,.bm-row:focus-within .bm-row-del,.bm-row-del.armed{opacity:1}.bm-row-del:hover{color:var(--text)}.bm-row-del.armed{font-family:var(--font-mono);color:var(--orange-strong);background:var(--surface-hover);padding:2px 6px;font-size:11px;font-weight:600}.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{background:var(--blue-soft);color:var(--blue);font-variant-numeric:tabular-nums;border:1px solid #0000;border-radius:100px;align-items:center;gap:6px;padding:4px 10px;font-size:12px;font-weight:600;display:inline-flex}.owner-tag svg{width:12px;height:12px}#shareBackdrop,#authBackdrop{z-index:40;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:0;pointer-events:none;transition:opacity var(--t-base) var(--ease);background:#0000008c;position:fixed;inset:0}#shareBackdrop.open,#authBackdrop.open{opacity:1;pointer-events:auto}#newClassBackdrop{z-index:50;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:0;pointer-events:none;transition:opacity var(--t-base) var(--ease);background:#0000008c;position:fixed;inset:0}#newClassBackdrop.open{opacity:1;pointer-events:auto}#newClassModal{z-index:51}#analyticsBackdrop{z-index:50;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:0;pointer-events:none;transition:opacity var(--t-base) var(--ease);background:#0000008c;position:fixed;inset:0}#analyticsBackdrop.open{opacity:1;pointer-events:auto}#analyticsModal.analytics-modal{z-index:51;width:min(720px,94vw)}.share-modal{background:var(--bg-elev);-webkit-backdrop-filter:blur(28px)saturate(1.5);border:1px solid var(--glass-border);border-radius:var(--r-xl);width:min(560px,92vw);max-height:90vh;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);flex-direction:column;display:flex;position:fixed;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-45%)scale(.96)}.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 0 #ffffff80}[data-theme=dark] .share-modal .field-input,[data-theme=dark] .share-modal .field-select{box-shadow:var(--shadow-sm), inset 0 1px 0 #ffffff0f}.share-head{padding:var(--s-6) var(--s-6) var(--s-3);border-bottom:1px solid var(--border);position:relative}.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);gap:var(--s-3);justify-content:flex-end;align-items:center;display:flex}.share-link-box{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);color:var(--text);font-size:13px;display:flex}.share-meta{gap:var(--s-3);color:var(--text-muted);margin-top:var(--s-3);justify-content:space-between;font-size:12px;display:flex}.share-meta .row{align-items:center;gap:4px;display:flex}.share-meta code{background:var(--surface-2);color:var(--text-soft);border-radius:4px;padding:1px 6px;font-size:11px}.account-btn{border:1px solid var(--border);cursor:pointer;min-width:32px;height:32px;color:var(--text-soft);transition:all var(--t-fast) var(--ease);background:0 0;border-radius:100px;justify-content:center;align-items:center;padding:4px;display:inline-flex}.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);color:var(--blue);letter-spacing:.02em;border-color:#0000;font-size:11px;font-weight:700}.account-btn.signed-in:hover{transform:scale(1.05)}.ai-budget-bar{margin-top:var(--s-3)}.ai-budget-bar-track{background:var(--surface-2);border-radius:100px;height:6px;overflow:hidden}.ai-budget-bar-fill{background:var(--gradient-brand);height:100%;transition:width var(--t-fast) var(--ease);border-radius:100px}.ai-budget-bar-fill.low{background:var(--orange)}.ai-budget-bar-label{color:var(--text-muted);font-size:11.5px;font-family:var(--font-mono);margin-top:6px}.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{letter-spacing:.08em;text-transform:uppercase;color:var(--blue);margin-bottom:var(--s-2);align-items:center;gap:6px;font-size:11px;font-weight:600;display:inline-flex}.warmup-text{color:var(--text);margin-bottom:var(--s-3);font-size:14px;line-height:1.5}.warmup-list{flex-wrap:wrap;gap:6px;display:flex}.warmup-chip{border:1px solid var(--border);background:var(--surface);color:var(--text-soft);border-radius:100px;padding:3px 9px;font-size:11px;display:inline-block}.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{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);display:flex}.account-avatar{background:var(--blue-soft);width:56px;height:56px;color:var(--blue);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:22px;font-weight:700;display:flex}.account-info{flex:1;min-width:0}.account-name{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:600;overflow:hidden}.account-email{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:13px;overflow:hidden}.account-plan{letter-spacing:.06em;text-transform:uppercase;background:var(--blue-soft);color:var(--blue);border-radius:100px;margin-top:6px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-block}.account-section{margin-top:var(--s-5)}.account-section-title{letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);margin-bottom:var(--s-2);justify-content:space-between;align-items:center;font-size:11px;font-weight:700;display:flex}.lib-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s-3);cursor:pointer;transition:all var(--t-fast) var(--ease);margin-bottom:6px}.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{justify-content:space-between;align-items:baseline;gap:var(--s-2);display:flex}.lib-row .name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:14px;font-weight:600;overflow:hidden}.lib-row .when{color:var(--text-muted);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:10px}.lib-row-meta{color:var(--text-muted);margin-top:2px;font-size:11px}.lib-row-pills{flex-wrap:wrap;gap:4px;margin-top:6px;display:flex}.lib-pill{letter-spacing:.08em;text-transform:uppercase;background:var(--surface-2);color:var(--text-muted);border-radius:100px;padding:2px 6px;font-size:9px;font-weight:700}.lib-pill.mastered{color:var(--good);background:#4ade802e}.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)}.lib-row .add-to-class-btn{letter-spacing:.06em;background:var(--surface-2);border:1px solid var(--border);color:var(--text-soft);cursor:pointer;vertical-align:middle;transition:color var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);border-radius:100px;margin-left:2px;padding:2px 7px;font-size:9px;font-weight:700}.lib-row .add-to-class-btn:hover{color:var(--text);border-color:var(--border-strong)}.class-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s-3);cursor:pointer;transition:all var(--t-fast) var(--ease);align-items:center;gap:var(--s-3);margin-bottom:6px;display:flex}.class-row:hover{border-color:var(--border-strong);background:var(--surface-hover)}.class-row .head{flex:1;min-width:0}.class-row .name{text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:600;overflow:hidden}.class-row .meta{color:var(--text-muted);margin-top:2px;font-size:11px}.class-role-chip{letter-spacing:.08em;text-transform:uppercase;border-radius:100px;padding:2px 7px;font-size:9px;font-weight:700}.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{letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);margin-bottom:var(--s-2);justify-content:space-between;align-items:center;font-size:11px;font-weight:700;display:flex}.cd-joincode{background:var(--surface-2);border-radius:var(--r-md);font-family:var(--font-mono);letter-spacing:.05em;align-items:center;gap:6px;padding:6px 10px;font-size:13px;display:inline-flex}.cd-joincode button{background:var(--surface);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:6px;padding:3px 8px;font-size:10px}.cd-row{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;display:flex}.cd-row .name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:500;overflow:hidden}.cd-row .meta{color:var(--text-muted);white-space:nowrap;font-size:11px}.cd-row .actions{gap:4px;display:flex}.cd-row button{background:var(--surface-2);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:6px;padding:4px 8px;font-size:11px}.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;color:var(--text-muted);background:var(--surface-2);border-radius:var(--r-md);font-size:12px}#settingsBackdrop{z-index:20;opacity:0;pointer-events:none;transition:opacity var(--t-base) var(--ease);background:#0006;position:fixed;inset:0}#settingsBackdrop.open{opacity:1;pointer-events:auto}#settingsDrawer{background:var(--bg-elev);-webkit-backdrop-filter:blur(28px)saturate(1.5);border-left:1px solid var(--glass-border);border-radius:var(--r-lg);z-index:21;width:min(440px,90vw);transition:transform var(--t-slow) var(--ease-spring);box-shadow:var(--shadow-lg);flex-direction:column;margin:20px;display:flex;position:fixed;top:0;bottom:0;right:0;overflow:hidden;transform:translate(calc(100% + 20px))}#settingsDrawer.open{transform:translate(0)}.drawer-head{padding:var(--s-5) var(--s-6);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;display:flex}.drawer-head h2{font-family:var(--font-display);letter-spacing:-.015em;margin:0;font-size:20px;font-weight:600}.drawer-body{padding:var(--s-5) var(--s-6);flex:1;overflow-y:auto}.drawer-section{margin-bottom:var(--s-6)}.drawer-section-title{letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);margin-bottom:var(--s-3);font-size:11px;font-weight:700}.theme-switch{gap:var(--s-2);display:flex}.theme-option{padding:var(--s-3);background:var(--surface-2);border:1.5px solid var(--border);border-radius:var(--r-md);cursor:pointer;text-align:center;transition:all var(--t-fast) var(--ease);flex:1;justify-content:center;align-items:center;gap:6px;font-size:13px;font-weight:500;display:flex}.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 0 #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-position:right 16px center;background-repeat:no-repeat;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);color:var(--text-soft);justify-content:center;align-items:center;display:flex}.quiz-empty .ico svg{width:26px;height:26px}.quiz-flow{gap:var(--s-4);flex-direction:column;height:100%;display:flex}.quiz-progress{align-items:center;gap:6px;display:flex}.quiz-dot{background:var(--surface-2);height:4px;transition:background var(--t-base) var(--ease);border-radius:100px;flex:1}.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{letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);font-size:11px;font-weight:600}.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);letter-spacing:.04em;color:var(--blue);margin-bottom:var(--s-2);font-size:13px;font-weight:700}.quiz-card .q-text{color:var(--text);margin-bottom:var(--s-4);font-size:16px;font-weight:500;line-height:1.5}.quiz-card textarea{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);width:100%;padding:var(--s-3);resize:vertical;min-height:84px;transition:border-color var(--t-fast) var(--ease);outline:none;font-size:14px;line-height:1.55}.quiz-card textarea:focus{border-color:var(--blue)}.quiz-card .actions{margin-top:var(--s-3);gap:var(--s-2);display:flex}.quiz-feedback{margin-top:var(--s-4);padding:var(--s-4);background:var(--surface-2);border-radius:var(--r-md);white-space:pre-wrap;border-left:3px solid var(--border-strong);animation:fade-up var(--t-base) var(--ease-out);font-size:13px;line-height:1.55}.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{letter-spacing:.08em;text-transform:uppercase;margin-bottom:4px;font-size:11px;font-weight:700}.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);letter-spacing:-.03em;color:var(--text);margin-bottom:var(--s-3);font-size:48px;font-weight:600;line-height:1}.quiz-results .score-of{color:var(--text-muted);font-size:24px}.quiz-results .tagline{color:var(--text-soft);margin-bottom:var(--s-5);font-size:14px}.quiz-results .miss-list{margin:0 0 var(--s-5);gap:var(--s-2);flex-direction:column;padding:0;list-style:none;display:flex}.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{color:var(--orange);margin-bottom:2px;font-weight:600}.quiz-results .actions{gap:var(--s-2);display:flex}.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{gap:var(--s-3);margin-bottom:var(--s-5);padding-bottom:var(--s-5);border-bottom:1px dashed var(--border);grid-template-columns:repeat(3,1fr);display:grid}.stat .val{font-family:var(--font-display);letter-spacing:-.02em;color:var(--text);font-size:22px;font-weight:600;line-height:1}.stat .lab{letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);margin-top:4px;font-size:10px;font-weight:600}.guide-body{color:var(--text-soft);font-size:14px;line-height:1.65}.guide-body h3{font-family:var(--font-display);color:var(--text);margin:var(--s-5) 0 var(--s-2);letter-spacing:-.01em;align-items:center;gap:8px;font-size:17px;font-weight:600;display:flex}.guide-body h3:before{content:"";background:var(--blue);border-radius:2px;width:4px;height:16px}.guide-body h3:first-child{margin-top:0}.guide-body h4{color:var(--text);margin:var(--s-3) 0 var(--s-1);font-size:14px;font-weight:600}.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{gap:var(--s-2);margin-top:var(--s-5);padding-top:var(--s-4);border-top:1px dashed var(--border);flex-wrap:wrap;display:flex}.guide-quizlet-hint{margin-top:var(--s-2);color:var(--text-muted);font-size:12.5px;line-height:1.5}.guide-quizlet-hint b{color:var(--text);font-weight:600}.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{letter-spacing:.1em;text-transform:uppercase;color:var(--blue);margin-bottom:4px;font-size:10px;font-weight:700}.msg.teach-back .tb-hint{color:var(--text-muted);margin-top:6px;font-size:12px}.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{letter-spacing:.1em;text-transform:uppercase;background:var(--surface-2);color:var(--text-soft);border-radius:100px;margin-bottom:6px;padding:2px 8px;font-size:10px;font-weight:700;display:inline-block}.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{gap:var(--s-5);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--s-5);margin-bottom:var(--s-5);align-items:center;display:flex}.progress-donut{flex-shrink:0;width:110px;height:110px;position:relative}.progress-donut svg{display:block;transform:rotate(-90deg)}.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{text-align:center;flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.donut-center .big{font-family:var(--font-display);letter-spacing:-.02em;font-size:28px;font-weight:600;line-height:1}.donut-center .small{color:var(--text-muted);margin-top:2px;font-size:11px}.progress-stats{flex-direction:column;flex:1;gap:6px;display:flex}.stat-line{color:var(--text-soft);align-items:center;gap:8px;font-size:13px;display:flex}.stat-line strong{color:var(--text);font-variant-numeric:tabular-nums;margin-left:auto;font-weight:600}.stat-line .dot{border-radius:50%;width:8px;height:8px}.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{letter-spacing:.08em;text-transform:uppercase;color:var(--blue);align-items:center;gap:6px;margin-bottom:6px;font-size:10px;font-weight:700;display:flex}.progress-focus .focus-label svg{width:12px;height:12px}.progress-focus .focus-text{color:var(--text);margin-bottom:var(--s-3);font-size:14px;line-height:1.5}.progress-focus .focus-text strong{color:var(--text)}.progress-actions{gap:var(--s-2);margin-bottom:var(--s-5);display:flex}.progress-actions .btn{flex:1}.progress-filters{margin-bottom:var(--s-3);gap:6px;padding-bottom:4px;display:flex;overflow-x:auto}.filter-chip{color:var(--text-muted);border:1px solid var(--border);cursor:pointer;white-space:nowrap;transition:all var(--t-fast) var(--ease);background:0 0;border-radius:100px;padding:4px 12px;font-size:12px;font-weight:500}.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{gap:var(--s-2);flex-direction:column;display:flex}.concept-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s-3) var(--s-4);align-items:center;gap:var(--s-3);cursor:pointer;transition:all var(--t-fast) var(--ease);display:flex}.concept-row:hover{border-color:var(--border-strong);background:var(--surface-hover)}.concept-row .name{color:var(--text);flex:1;font-size:14px;font-weight:500}.concept-row .meta{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:11px}.concept-row.expanded .concept-detail{display:block}.concept-detail{margin-top:var(--s-3);padding-top:var(--s-3);border-top:1px solid var(--border);color:var(--text-soft);width:100%;font-size:13px;line-height:1.55;display:none}.concept-detail .row{gap:var(--s-2);color:var(--text-muted);margin-bottom:4px;font-size:12px;display:flex}.concept-detail .row .k{flex-shrink:0;width:90px}.progress-empty{text-align:center;padding:var(--s-8) var(--s-4);color:var(--text-muted);font-size:13px}.prereq-chip{cursor:pointer;border:1px solid var(--border);background:var(--surface-2);color:var(--text-soft);transition:all var(--t-fast) var(--ease);border-radius:100px;margin:2px 4px 2px 0;padding:2px 8px;font-size:11px;display:inline-block}.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{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.mastery-chip{letter-spacing:.08em;text-transform:uppercase;border-radius:100px;padding:1px 6px;font-size:9px;font-weight:700;display:inline-block}.mastery-chip.introduced{background:var(--surface-2);color:var(--text-muted)}.mastery-chip.practiced{background:var(--blue-soft);color:var(--blue)}.mastery-chip.mastered{color:var(--good);background:#4ade8026}.error-chip{background:var(--orange-soft);color:var(--orange);border-radius:100px;padding:1px 6px;font-size:9px;font-weight:600}#diagBackdrop{z-index:40;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:0;pointer-events:none;transition:opacity var(--t-base) var(--ease);background:#0000008c;position:fixed;inset:0}#diagBackdrop.open{opacity:1;pointer-events:auto}.diag-modal{background:var(--bg-elev);-webkit-backdrop-filter:blur(28px)saturate(1.5);border:1px solid var(--glass-border);border-radius:var(--r-xl);width:min(560px,92vw);max-height:90vh;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);flex-direction:column;display:flex;position:fixed;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-45%)scale(.96)}.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{letter-spacing:.08em;text-transform:uppercase;color:var(--blue);margin-bottom:var(--s-3);align-items:center;gap:6px;font-size:11px;font-weight:600;display:inline-flex}.diag-eyebrow .dot{background:var(--blue);width:6px;height:6px;box-shadow:0 0 6px var(--blue);border-radius:50%}.diag-title{font-family:var(--font-display);letter-spacing:-.02em;margin:0 0 8px;font-size:26px;font-weight:600}.diag-sub{color:var(--text-muted);margin:0;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{color:var(--text);margin-bottom:var(--s-3);font-size:13px;font-weight:600}.diag-options{gap:var(--s-2);flex-direction:column;display:flex}.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);flex-direction:column;gap:2px;display:flex}.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{color:var(--text);font-size:14px;font-weight:600}.diag-opt span{color:var(--text-muted);font-size:12px;line-height:1.4}.diag-foot{padding:var(--s-4) var(--s-6) var(--s-5);border-top:1px solid var(--border);gap:var(--s-3);justify-content:flex-end;align-items:center;display:flex}.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{letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);margin-bottom:var(--s-3);font-size:11px;font-weight:700}.an-empty{color:var(--text-soft);padding:var(--s-2) 0;font-size:12px}.an-slide-row{align-items:center;gap:var(--s-2);grid-template-columns:28px 1fr 70px;padding:4px 0;font-size:12px;display:grid}.an-slide-num{text-align:right;color:var(--text-muted);font-variant-numeric:tabular-nums}.an-bar-wrap{background:var(--surface-2);border-radius:100px;height:8px;overflow:hidden}.an-bar{background:linear-gradient(90deg, var(--blue), var(--blue-strong));border-radius:100px;height:100%}.an-counts{color:var(--text-soft);text-align:right;white-space:nowrap}.an-miss-row{justify-content:space-between;align-items:center;gap:var(--s-2);border-bottom:1px solid var(--border);padding:8px 0;display:flex}.an-miss-row:last-child{border-bottom:none}.an-miss-concept{color:var(--text);font-size:13px;font-weight:600}.an-miss-meta{color:var(--text-soft);white-space:nowrap;font-size:11px}.an-errkind-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:6px 0;font-size:12px;display:flex}.an-errkind-row:last-child{border-bottom:none}.an-quiz-summary{gap:var(--s-4);display:flex}.an-stat{flex-direction:column;align-items:flex-start;gap:2px;display:flex}.an-stat strong{color:var(--text);font-variant-numeric:tabular-nums;font-size:20px}.an-stat span{color:var(--text-muted);font-size:11px}.an-event-row{align-items:start;gap:var(--s-2);border-bottom:1px solid var(--border);grid-template-columns:8px 1fr auto;padding:6px 0;font-size:12px;display:grid}.an-event-row:last-child{border-bottom:none}.an-dot{background:var(--text-muted);border-radius:100px;width:6px;height:6px;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{text-transform:capitalize;font-weight:600}.an-verdict.correct{color:var(--good)}.an-verdict.partial{color:var(--orange)}.an-verdict.wrong{color:var(--err)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-strong);border:2px solid var(--bg);border-radius:100px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}button:focus-visible,[role=button]:focus-visible{outline:2px solid var(--blue);outline-offset:2px}@media (width<=980px){main{grid-template-columns:1fr 380px}}#libraryBackdrop{z-index:20;opacity:0;pointer-events:none;transition:opacity var(--t-base) var(--ease);background:#0006;position:fixed;inset:0}#libraryBackdrop.open{opacity:1;pointer-events:auto}#libraryDrawer{background:var(--bg-elev);-webkit-backdrop-filter:blur(28px)saturate(1.5);border-right:1px solid var(--glass-border);border-radius:var(--r-lg);z-index:21;width:min(360px,88vw);transition:transform var(--t-slow) var(--ease-spring);box-shadow:var(--shadow-lg);flex-direction:column;margin:20px;display:flex;position:fixed;top:0;bottom:0;left:0;overflow:hidden;transform:translate(calc(-100% - 20px))}#libraryDrawer.open{transform:translate(0)}#libraryDrawer .drawer-head{padding:var(--s-5) var(--s-5);border-bottom:1px solid var(--border);align-items:center;gap:var(--s-3);display:flex}#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);letter-spacing:-.015em;flex:1;margin:0;font-size:18px;font-weight:600}#libraryDrawer .drawer-head .icon-btn{margin-left:auto}#libraryDrawer .drawer-body{padding:var(--s-3) 0;flex:1;overflow-y:auto}.lib-section{margin-bottom:var(--s-2)}.lib-section-title{letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);padding:var(--s-4) var(--s-5) var(--s-2);font-size:11px;font-weight:700}.lib-deck-row{align-items:center;gap:var(--s-3);width:100%;padding:var(--s-3) var(--s-5);cursor:pointer;text-align:left;transition:background var(--t-fast) var(--ease);background:0 0;border:none;border-radius:0;display:flex}.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{background:var(--surface-2);border-radius:var(--r-sm);width:34px;height:34px;color:var(--text-muted);flex-shrink:0;justify-content:center;align-items:center;display:flex}.lib-deck-icon svg{width:16px;height:16px}.lib-deck-info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.lib-deck-name{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:500;overflow:hidden}.lib-deck-meta{color:var(--text-muted);font-size:12px}.lib-deck-arrow{width:14px;height:14px;color:var(--text-muted);opacity:0;transition:opacity var(--t-fast) var(--ease);flex-shrink:0}.lib-deck-row:hover .lib-deck-arrow{opacity:1}.lib-deck-delete{border-radius:var(--r-xs);width:22px;height:22px;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);background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.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{padding:var(--s-7);justify-content:center;display:flex}.lib-notice{padding:var(--s-4) var(--s-5);color:var(--text-muted);font-size:13px;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{padding:var(--s-5);text-align:center;display:none}#libraryEmpty svg{width:40px;height:40px;color:var(--border-strong);margin:0 auto var(--s-3);display:block}#libraryEmpty p{color:var(--text-muted);margin:0;font-size:13px;line-height:1.5}#libraryAuthNotice{padding:var(--s-5);text-align:center;display:none}#libraryAuthNotice p{color:var(--text-muted);margin:0 0 var(--s-3);font-size:13px;line-height:1.5}.doc-tabs{border-bottom:1px solid var(--glass-border-subtle);scrollbar-width:thin;background:0 0;align-items:stretch;gap:2px;height:30px;padding:0;display:none;overflow:auto hidden}.doc-tabs::-webkit-scrollbar{height:4px}.doc-tabs::-webkit-scrollbar-thumb{background:var(--glass-border);border-radius:4px}.doc-tab{padding:0 var(--s-2) 0 var(--s-3);border-radius:var(--r-sm) var(--r-sm) 0 0;max-width:200px;font-family:var(--font-mono);color:var(--text-muted);cursor:pointer;white-space:nowrap;transition:color var(--t-fast) var(--ease), background var(--t-fast) var(--ease);align-items:center;gap:6px;font-size:12px;display:inline-flex}.doc-tab:hover{color:var(--text-soft);background:var(--glass-control)}.doc-tab.active{color:var(--text);box-shadow:var(--shadow-sm), inset 0 1px 0 #ffffffe6;background:linear-gradient(135deg,#fffffff2,#ffffffc7)}[data-theme=dark] .doc-tab.active{color:var(--text);background:linear-gradient(135deg,#3faec452,#2b8da638)}.doc-tab-icon{width:12px;height:12px;color:var(--text-muted);flex:none}.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{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.doc-tab-close{width:16px;height:16px;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);background:0 0;border:none;border-radius:4px;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.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)}
