:root{--accent:#4f46e5;--accent-hover:#4338ca;--accent-secondary:#ff7e5f;--color-success:#10b981;--color-danger:#ef4444;--color-info:#3b82f6;--color-warning:#f59e0b;--chrome-bg:#fdfdfcd9;--chrome-border:#0000000f;--chrome-text:#1e293b;--chrome-text-muted:#64748b;--chrome-text-dim:#94a3b8;--chrome-input-bg:#00000008;--chrome-input-focus:#4f46e526;--wb-bg:#faf9f6;--wb-grid-line:#ef444429;--wb-text:#0f172a;--wb-text-muted:#475569;--font-sans:"Inter", system-ui, -apple-system, sans-serif;--font-mono:"Fira Code", "Menlo", monospace;--ease-out-expo:cubic-bezier(.16, 1, .3, 1);--transition-smooth:.35s var(--ease-out-expo);--header-h:52px;--vocal-h:64px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;font-size:16px}body{font-family:var(--font-sans);background:var(--wb-bg);color:var(--chrome-text);-webkit-font-smoothing:antialiased;width:100vw;height:100dvh;overflow:hidden}.app-shell{background:var(--chrome-bg);flex-direction:column;width:100%;height:100%;display:flex;position:relative;overflow:hidden}.settings-drawer{z-index:1000;transition:transform var(--transition-smooth);background:var(--chrome-bg);-webkit-backdrop-filter:blur(24px);border:1px solid var(--chrome-border);border-top:none;border-radius:0 0 20px 20px;flex-direction:column;gap:1rem;padding:1.25rem;display:flex;position:fixed;top:0;left:0;right:0;box-shadow:0 16px 48px #00000014}.settings-drawer.collapsed-drawer{transform:translateY(-100%)}.drawer-header{border-bottom:1px solid var(--chrome-border);justify-content:space-between;align-items:center;padding-bottom:.5rem;display:flex}.drawer-header h4{color:var(--accent);text-transform:uppercase;letter-spacing:.05em;font-size:.85rem;font-weight:600}.btn-close-drawer{color:var(--chrome-text-muted);cursor:pointer;background:0 0;border:none;padding:4px;font-size:1.5rem;line-height:1;transition:color .15s}.btn-close-drawer:hover{color:var(--color-danger)}.drawer-body{flex-direction:column;gap:.85rem;display:flex}.input-group{flex-direction:column;gap:.3rem;display:flex}.input-group label{text-transform:uppercase;color:var(--chrome-text-dim);letter-spacing:.06em;font-size:.65rem;font-weight:600}.input-group input,.input-group select{background:var(--chrome-input-bg);border:1px solid var(--chrome-border);color:var(--chrome-text);font-size:.85rem;font-family:var(--font-sans);border-radius:10px;outline:none;padding:.6rem .85rem;transition:border-color .15s}.input-group input:focus,.input-group select:focus{border-color:var(--accent)}.drawer-actions{justify-content:space-between;align-items:center;gap:.75rem;margin-top:.25rem;display:flex}.btn{cursor:pointer;font-size:.85rem;font-weight:600;font-family:var(--font-sans);border:none;border-radius:12px;justify-content:center;align-items:center;gap:.4rem;padding:.6rem 1.25rem;transition:transform .15s,box-shadow .15s,background-color .15s;display:inline-flex}.btn-primary{background:linear-gradient(135deg, var(--accent) 0%, var(--accent-secondary) 100%);color:#fff;box-shadow:0 4px 16px #f9731633}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 6px 20px #f973164d}.btn-secondary{background:var(--chrome-input-bg);border:1px solid var(--chrome-border);color:var(--chrome-text)}.btn-secondary:hover{background:#ffffff1a}.status-badge{background:var(--chrome-input-bg);border:1px solid var(--chrome-border);border-radius:20px;align-items:center;gap:.45rem;padding:.45rem .85rem;font-size:.75rem;font-weight:600;display:flex}.status-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.status-disconnected .status-dot{background:var(--chrome-text-dim)}.status-connecting .status-dot{background:var(--accent);animation:1s infinite alternate pulse-dot}.status-connected .status-dot{background:var(--color-success);box-shadow:0 0 8px var(--color-success)}@keyframes pulse-dot{0%{opacity:.3}to{opacity:1}}.app-header{z-index:100;height:var(--header-h);min-height:var(--header-h);background:var(--chrome-bg);-webkit-backdrop-filter:blur(20px);border-bottom:1px solid var(--chrome-border);transition:transform var(--transition-smooth);justify-content:space-between;align-items:center;padding:0 16px;display:flex;position:sticky;top:0}.app-header.header-hidden{transform:translateY(-100%)}.header-left,.header-right{align-items:center;gap:.5rem;display:flex}.btn-icon{width:36px;height:36px;color:var(--chrome-text-muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:10px;justify-content:center;align-items:center;transition:all .15s;display:flex}.btn-icon:hover{border-color:var(--chrome-border);color:var(--chrome-text);background:#ffffff0d}.app-title{align-items:center;gap:.4rem;display:flex}.title-text{color:var(--chrome-text);letter-spacing:-.01em;font-size:.95rem;font-weight:800}.title-badge{text-transform:uppercase;letter-spacing:.08em;background:linear-gradient(135deg, var(--accent), var(--accent-secondary));color:#fff;border-radius:4px;padding:2px 6px;font-size:.55rem;font-weight:800}.header-center{text-align:center;flex:1;justify-content:center;align-items:center;padding:0 .5rem;display:flex;overflow:hidden}.session-mode-badge{text-transform:uppercase;letter-spacing:.08em;color:var(--accent);white-space:nowrap;background:#f973161f;border:1px solid #f9731640;border-radius:12px;padding:3px 10px;font-size:.68rem;font-weight:700}.step-progress{color:#60a5fa;white-space:nowrap;background:#60a5fa1a;border:1px solid #60a5fa33;border-radius:12px;padding:3px 10px;font-size:.68rem;font-weight:700}.whiteboard{background:var(--wb-bg);scroll-behavior:smooth;-webkit-overflow-scrolling:touch;background-image:radial-gradient(at 50% 0,#4f46e506,#0000 70%);flex-direction:column;flex:1;scroll-padding-bottom:156px;display:flex;position:relative;overflow:hidden auto;box-shadow:inset 0 8px 16px #00000005}.whiteboard::-webkit-scrollbar{width:5px}.whiteboard::-webkit-scrollbar-track{background:0 0}.whiteboard::-webkit-scrollbar-thumb{background:#ebdcb9;border-radius:3px}.wb-welcome{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:.7rem;min-height:auto;padding:1.25rem 1.25rem 1.5rem;display:flex}.welcome-icon{filter:drop-shadow(0 4px 12px #f9731626);font-size:2.6rem;animation:4s ease-in-out infinite float}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.wb-welcome h1{color:var(--wb-text);letter-spacing:-.02em;font-size:1.4rem;font-weight:800}.wb-welcome p{color:var(--wb-text-muted);max-width:340px;font-size:.9rem;line-height:1.5}.welcome-hints{flex-wrap:wrap;justify-content:center;gap:.5rem;margin-top:.25rem;display:flex}.hint-chip.chip-disabled{opacity:.4;pointer-events:none}.hint-chip{color:var(--wb-text-muted);cursor:pointer;-webkit-user-select:none;user-select:none;background:#f1f0ec;border:1px solid #0000000d;border-radius:24px;padding:.6rem 1rem;font-size:.8rem;font-weight:500;transition:all .2s cubic-bezier(.16,1,.3,1)}.hint-chip:hover{border-color:var(--accent);color:var(--accent);background:#4f46e50d;transform:translateY(-1px)}.hint-chip:active{transform:scale(.97)}.wb-lines{flex-direction:column;padding:16px 0 156px;display:flex}.wb-line{min-height:38px;animation:wb-line-appear .3s var(--ease-out-expo) forwards;align-items:stretch;display:flex}@keyframes wb-line-appear{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.wb-line-num{width:28px;min-width:28px;font-family:var(--font-mono);color:var(--chrome-text-dim);text-align:right;-webkit-user-select:none;user-select:none;border-right:1.5px solid var(--wb-grid-line);background:#faf9f666;flex-shrink:0;padding:10px 7px 10px 0;font-size:.66rem;font-weight:500;line-height:1.65}.wb-block{align-items:stretch}.wb-block-body{background:var(--wb-bg);border:1px solid #0f172a14;border-radius:14px;flex:1;min-width:0;margin:8px 14px 8px 4px;overflow:hidden;box-shadow:0 6px 22px #0f172a0f}.wb-block-canvas{width:100%;height:300px;display:block}.wb-line-content{min-width:0;font-family:var(--font-sans);color:var(--wb-text);word-break:break-word;overflow-wrap:anywhere;flex:1;padding:10px 14px 10px 12px;font-size:.96rem;line-height:1.65}.wb-formula .wb-line-content,.wb-title .wb-line-content{word-break:normal;overflow-wrap:normal;overflow-x:auto}.wb-formula .katex-display{margin:0}.wb-title .wb-line-content{color:var(--chrome-text);padding-top:18px;padding-bottom:12px;font-size:1.25rem;font-weight:800}.wb-section-header .wb-line-content{color:var(--wb-text-muted);text-transform:uppercase;letter-spacing:.05em;padding-top:14px;padding-bottom:4px;font-size:.85rem;font-weight:700}.wb-step-header .wb-line-content{text-transform:uppercase;letter-spacing:.05em;color:var(--accent-hover);padding-top:12px;padding-bottom:4px;font-size:.8rem;font-weight:700}.wb-separator{min-height:20px}.wb-separator .wb-line-content{border-bottom:1px dashed #e5dec999;height:10px;margin:0 24px;padding:0}.wb-separator .wb-line-num{border-right:1.5px solid var(--wb-grid-line)}.wb-formula .wb-line-content,.wb-note .wb-line-content,.wb-student .wb-line-content,.wb-student-pending .wb-line-content{margin:3px 12px 3px 2px;padding:7px 14px}.wb-quiz .wb-line-content{background:#f6f7ff;border:1px solid #4f46e51a;border-radius:14px;margin:8px 12px 8px 4px;padding:12px 14px}.wb-formula .wb-line-content{color:#1e1b4b;border-left:3px solid #4f46e552;font-size:1.06rem}.wb-note .wb-line-content{color:#7c4a03;background:#f59e0b21;border-radius:7px;font-size:.92rem}.wb-student .wb-line-content{color:#1d4ed8;border-left:3px solid #1d4ed880;font-weight:500}.wb-student .wb-line-num{color:#93c5fd}.wb-student-pending .wb-line-content{color:#b45309;border-left:3px dashed #ff7e5f8c;min-height:44px}.wb-cursor-blink{font-family:var(--font-mono);color:var(--accent);margin-left:4px;font-size:1.15rem;animation:1s step-start infinite cursor-blink;display:inline-block}@keyframes cursor-blink{0%,to{opacity:1}50%{opacity:0}}.graph-inline-wrapper{background:var(--wb-bg);border:1px solid #0f172a14;border-radius:14px;margin:12px 16px 12px 50px;overflow:hidden;box-shadow:0 6px 22px #0f172a0f}.graph-controls-mini{background:#4f46e50d;border-bottom:1px solid #0f172a12;align-items:center;gap:.3rem;padding:8px 12px;display:flex}.btn-tool{color:#5c626a;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;width:32px;height:32px;font-size:.9rem;transition:all .15s;display:flex}.btn-tool:hover{color:var(--wb-text);background:#0000000a}.btn-tool.active{background:var(--accent);color:#fff;border-color:var(--accent)}.tool-sep{color:#0f172a26;margin:0 4px;font-size:.8rem}.graph-controls-mini{flex-wrap:wrap}.coord-input{min-width:70px;height:32px;color:var(--wb-text);background:#fffdfa;border:1px solid #ebdcb9;border-radius:8px;flex:90px;padding:0 10px;font-family:Fira Code,monospace;font-size:.85rem}.coord-input:focus{border-color:var(--accent);outline:none}.coord-input.input-error{border-color:var(--color-danger);background:#fef2f2}.canvas-wrapper{background:#fffdfa;width:100%;height:300px;position:relative}#graphCanvas{width:100%;height:100%;display:block}.graph-legend{background:#fffdfaf5;border:1px solid #ebdcb9b3;border-radius:10px;flex-direction:column;gap:.3rem;padding:.5rem .75rem;font-size:.68rem;display:flex;position:absolute;top:10px;left:10px;box-shadow:0 4px 12px #0000000a}.legend-item{align-items:center;gap:.4rem;display:flex}.legend-color{border-radius:2px;width:12px;height:4px}.legend-text{font-family:var(--font-mono);color:var(--wb-text);font-weight:500}.graph-coords{font-family:var(--font-mono);color:var(--wb-text-muted);background:#fffdfad9;border:1px solid #ebdcb980;border-radius:6px;padding:3px 8px;font-size:.68rem;position:absolute;bottom:10px;right:10px}.wb-scan .wb-line-content{box-shadow:none;background:0 0;border:none;padding:8px 4px}.wb-scan-img{border:3px solid #fff;border-radius:14px;max-width:85%;max-height:280px;box-shadow:0 8px 24px #0000001f}.wb-quiz .wb-line-content{color:#1e1b4b;background:#fff;border:1px solid #8b5cf626;border-left:4px solid #8b5cf6}.wb-quiz-question{color:#1e1b4b;margin-bottom:10px;font-size:.95rem;font-weight:700}.wb-quiz-opts{counter-reset:option;flex-direction:column;gap:6px;margin-bottom:10px;display:flex}.wb-quiz-opt{color:#4a4e54;text-align:left;font-size:.85rem;font-family:var(--font-sans);cursor:pointer;background:#fbfbfe;border:1px solid #ebdcb9;border-radius:10px;padding:.65rem .95rem;font-weight:500;transition:all .2s cubic-bezier(.16,1,.3,1)}.wb-quiz-opt:hover:not(:disabled){color:#4c1d95;background:#f5f0ff;border-color:#8b5cf6}.wb-quiz-opt.correct{color:#14532d;background:#f0fdf4;border-color:#22c55e}.wb-quiz-opt.incorrect{color:#7f1d1d;background:#fff1f2;border-color:#ef4444}.wb-quiz-opt:disabled{cursor:default}.wb-quiz-explanation{color:#6b21a8;background:#faf5ff;border:1px solid #8b5cf61a;border-radius:8px;margin-top:6px;padding:8px 12px;font-size:.8rem;line-height:1.45;display:none}.wb-bottom-spacer{min-height:calc(var(--vocal-h) + 40px);flex-shrink:0}.math-keyboard{bottom:var(--vocal-h);z-index:310;background:var(--chrome-bg);-webkit-backdrop-filter:blur(24px);border-top:1px solid var(--chrome-border);animation:kb-slide-up .25s var(--ease-out-expo);flex-direction:column;gap:8px;padding:8px 12px;display:flex;position:fixed;left:0;right:0;box-shadow:0 -8px 32px #00000008}@keyframes kb-slide-up{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}.math-kb-symbols{grid-template-columns:repeat(6,1fr);gap:4px;display:grid}.math-sym-btn{height:34px;color:var(--chrome-text);font-size:.92rem;font-family:var(--font-mono);cursor:pointer;background:#00000008;border:1px solid #0000000a;border-radius:8px;justify-content:center;align-items:center;transition:all .15s;display:flex}.math-sym-btn:active{transform:scale(.92)}.math-sym-btn.btn-num{color:var(--chrome-text);background:#00000009;border-color:#00000005}.math-sym-btn.btn-num:hover{background:#00000012}.math-sym-btn.btn-fn{color:var(--accent);font-family:var(--font-sans);background:#4f46e50a;border-color:#4f46e508;font-weight:600}.math-sym-btn.btn-fn:hover{background:#4f46e517;border-color:#4f46e533}.math-sym-btn.btn-op{color:var(--accent-secondary);background:#ff7e5f0a;border-color:#ff7e5f08}.math-sym-btn.btn-op:hover{background:#ff7e5f17;border-color:#ff7e5f40}.math-sym-del{color:#ef4444;background:#ef444408;border-color:#ef44441f}.math-sym-del:hover{color:#dc2626;background:#ef444414;border-color:#ef44444d}.math-kb-input-row{align-items:center;gap:10px;display:flex}.math-input{color:var(--chrome-text);font-size:.95rem;font-family:var(--font-mono);background:#00000005;border:1px solid #0000000f;border-radius:14px;outline:none;flex:1;padding:.65rem 1rem;transition:border-color .15s,box-shadow .15s}.math-input:focus{border-color:var(--accent);box-shadow:0 0 0 2px #4f46e51f}.math-input::placeholder{color:var(--chrome-text-dim)}.btn-math-submit{background:var(--accent);color:#fff;cursor:pointer;white-space:nowrap;border:none;border-radius:14px;flex-shrink:0;padding:.65rem 1.25rem;font-size:.85rem;font-weight:700;transition:all .15s}.btn-math-submit:hover{background:var(--accent-hover);transform:translateY(-1px)}.btn-math-toggle{flex-shrink:0;margin-right:4px;font-size:1.1rem}.vocal-bar{height:var(--vocal-h);z-index:300;background:var(--chrome-bg);-webkit-backdrop-filter:blur(20px);border-top:1px solid var(--chrome-border);align-items:center;gap:.75rem;padding:0 16px;display:flex;position:fixed;bottom:0;left:0;right:0}.vocal-left{flex-shrink:0;align-items:center;gap:.5rem;display:flex}.btn-mic{width:44px;height:44px;color:var(--chrome-text-muted);cursor:pointer;background:#fff;border:1px solid #00000014;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;transition:all .2s cubic-bezier(.16,1,.3,1);display:flex;box-shadow:0 3px 10px #0000000d}.btn-mic .mic-icon{width:22px;height:22px;transition:transform .2s}.btn-mic:not(:disabled):hover{color:var(--chrome-text);background:#f1f5f9;transform:scale(1.05)}.btn-mic.active{background:linear-gradient(135deg, var(--accent), var(--accent-secondary));color:#fff;border-color:#0000;animation:2s ease-in-out infinite mic-pulse;box-shadow:0 0 20px #4f46e566}.btn-mic.active .mic-icon{transform:scale(1.08)}@keyframes mic-pulse{0%,to{box-shadow:0 0 12px #4f46e559}50%{box-shadow:0 0 24px #ff7e5f8c}}.btn-mic:disabled{opacity:.2;cursor:not-allowed}.viz-canvas{background:#00000008;border:1px solid #0000000a;border-radius:8px}.vocal-form{background:#fff;border:1px solid #ebdcb9;border-radius:24px;flex:1;align-items:center;gap:6px;padding:.3rem .4rem .3rem .85rem;transition:all .2s cubic-bezier(.16,1,.3,1);display:flex;box-shadow:0 2px 8px #0000000a}.vocal-form:focus-within{border-color:var(--accent);box-shadow:0 4px 12px #f9731614,0 0 0 2px #f973161a}.vocal-form input{color:#1f2229;font-size:.9rem;font-family:var(--font-sans);background:0 0;border:none;outline:none;flex:1;width:100%}.vocal-form input::placeholder{color:#a19c8f}.btn-send{color:#a19c8f;cursor:pointer;background:0 0;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;transition:all .15s;display:flex}.btn-send:not(:disabled):hover{background:var(--accent);color:#fff;transform:scale(1.05)}.btn-send:disabled{opacity:.3;cursor:not-allowed}.btn-scan{width:44px;height:44px;color:var(--chrome-text-muted);cursor:pointer;background:#ffffff0d;border:1px solid #ffffff1a;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:1.25rem;transition:all .2s;display:flex;box-shadow:0 2px 8px #0003}.btn-scan:hover{border-color:var(--accent);color:var(--accent);background:#f973161a;transform:scale(1.05)}.welcome-start-action{flex-direction:column;align-items:center;gap:.6rem;width:100%;max-width:380px;margin:.9rem 0 .6rem;display:flex}.welcome-start-action .btn-large.is-disabled,.welcome-start-action .btn-large:disabled{opacity:.45;cursor:not-allowed;box-shadow:none;filter:grayscale(.3)}@keyframes serie-flash{0%,to{transform:scale(1)}30%{transform:scale(1.04)}}.serie-pick-flash{animation:.45s ease-in-out 2 serie-flash}.serie-pick-flash .serie-label{color:var(--accent)}.welcome-start-action .btn-large{border-radius:16px;justify-content:center;align-items:center;gap:.5rem;width:100%;padding:.8rem 1.5rem;font-size:.95rem;font-weight:700;transition:all .3s;display:flex;box-shadow:0 4px 16px #4f46e533}.btn-listening-pulse{animation:listening-glow 1.5s infinite alternate var(--ease-out-expo);border:1.5px solid var(--accent)!important;color:var(--accent)!important;background:linear-gradient(135deg,#4f46e50d,#ff7e5f0d)!important}@keyframes listening-glow{0%{transform:scale(1);box-shadow:0 4px 10px #4f46e514}to{transform:scale(1.02);box-shadow:0 4px 20px #4f46e538,0 0 0 4px #4f46e50f}}.welcome-api-key-group{background:#fff;border:1px solid #0000000d;border-radius:18px;flex-direction:column;gap:.5rem;width:100%;padding:1.25rem;display:flex;box-shadow:0 4px 12px #00000005}.welcome-api-key-group label{color:var(--chrome-text-muted);text-transform:uppercase;letter-spacing:.05em;align-self:flex-start;font-size:.7rem;font-weight:700}.welcome-api-key-group input{background:#00000005;border:1px solid #0000000f;border-radius:12px;outline:none;width:100%;padding:.7rem 1rem;font-size:.9rem;transition:all .2s}.welcome-api-key-group input:focus{border-color:var(--accent);background:#fff;box-shadow:0 0 0 2px #4f46e51a}.welcome-help-link{color:var(--accent);align-self:flex-start;margin-top:.15rem;font-size:.75rem;font-weight:600;text-decoration:none}.welcome-help-link:hover{color:var(--accent-hover);text-decoration:underline}.hidden{display:none!important}.katex{font-size:1.08em}.katex-display{margin:.6em 0}@media (width>=640px){.wb-lines{padding:16px 0}.wb-line-num{width:26px;min-width:26px;padding:12px 6px 12px 0;font-size:.66rem}.wb-line-content{padding:10px 12px;font-size:1rem}.canvas-wrapper{height:360px}.wb-scan-img{max-width:60%}}@media (width>=1024px){.whiteboard{border-left:1px solid #e5dec980;border-right:1px solid #e5dec980;max-width:800px;margin:0 auto;box-shadow:0 0 48px #0000000d}.vocal-bar,.math-keyboard{border-left:1px solid var(--chrome-border);border-right:1px solid var(--chrome-border);border-radius:24px 24px 0 0;max-width:800px;left:50%;transform:translate(-50%)}.canvas-wrapper{height:420px}}.conn-banner{z-index:1000;color:#fff;text-align:center;animation:banner-slide-down .3s var(--ease-out-expo,ease-out);justify-content:center;align-items:center;gap:.75rem;padding:.6rem 1rem;font-size:.9rem;font-weight:600;display:flex;position:fixed;top:0;left:0;right:0;box-shadow:0 2px 12px #00000026}.conn-banner.hidden{display:none}.conn-banner-reconnecting{background:linear-gradient(135deg, var(--accent), var(--accent-secondary))}.conn-banner-offline{background:var(--color-danger)}.conn-banner-msg{line-height:1.3}.conn-banner-retry{color:#fff;cursor:pointer;background:#ffffff1f;border:1.5px solid #ffffffd9;border-radius:999px;padding:.25rem .85rem;font-size:.85rem;font-weight:600;transition:background .15s}.conn-banner-retry:hover{background:#ffffff47}@keyframes banner-slide-down{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}.toast-host{z-index:1001;pointer-events:none;flex-direction:column;align-items:center;gap:.5rem;width:min(92vw,440px);display:flex;position:fixed;bottom:5.5rem;left:50%;transform:translate(-50%)}.toast{pointer-events:auto;color:#fff;opacity:0;background:#1f2937;border-radius:14px;width:100%;padding:.7rem 1rem;font-size:.88rem;font-weight:500;transition:opacity .25s,transform .25s;transform:translateY(12px);box-shadow:0 8px 24px #00000038}.toast-show{opacity:1;transform:translateY(0)}.toast-error{background:var(--color-danger)}.toast-success{background:var(--color-success)}.toast-info{background:#1f2937}.welcome-start-hint{color:var(--text-muted,#6b7280);text-align:center;margin-top:.6rem;font-size:.82rem}@media (prefers-reduced-motion:reduce){.conn-banner{animation:none}.toast{transition:opacity .15s;transform:none}.toast-show{transform:none}}#debugPanel{z-index:2000;color:#e5e7eb;background:#111827f5;border:1px solid #ffffff1f;border-radius:12px;flex-direction:column;width:min(92vw,420px);max-height:45vh;font-family:Fira Code,ui-monospace,monospace;font-size:11px;display:flex;position:fixed;bottom:12px;right:12px;overflow:hidden;box-shadow:0 12px 40px #0006}#debugPanel .dbg-head{background:#7c3aed40;border-bottom:1px solid #ffffff1f;justify-content:space-between;align-items:center;padding:6px 10px;display:flex}#debugPanel .dbg-actions{gap:6px;display:flex}#debugPanel button{color:#e5e7eb;cursor:pointer;background:#ffffff1f;border:none;border-radius:6px;padding:2px 8px;font-size:11px}#debugPanel button:hover{background:#ffffff3d}#debugPanel .dbg-log{padding:6px 10px;overflow-y:auto}#debugPanel .dbg-row{white-space:pre-wrap;word-break:break-word;padding:1px 0;line-height:1.4}#debugPanel .dbg-row-err{color:#fca5a5}.tutor-caption{z-index:60;color:#f3f4f6;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);width:min(92vw,720px);max-height:30vh;animation:caption-in .25s var(--ease-out-expo,ease-out);background:#111827eb;border-radius:14px;align-items:flex-start;gap:.5rem;padding:.7rem 1rem;font-size:.95rem;line-height:1.5;transition:opacity .3s;display:flex;position:fixed;bottom:92px;left:50%;overflow-y:auto;transform:translate(-50%);box-shadow:0 8px 28px #00000047}.tutor-caption.hidden{opacity:0;pointer-events:none;display:none}.tutor-caption .caption-label{opacity:.8;flex:none}.tutor-caption .caption-text{flex:auto}.tutor-caption .katex{color:#fff}@keyframes caption-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}@media (width<=640px){.tutor-caption{max-height:26vh;font-size:.88rem;bottom:84px}}@media (prefers-reduced-motion:reduce){.tutor-caption{animation:none}}.wb-overlay{pointer-events:none;z-index:3;position:absolute;top:0;left:0;overflow:visible}.wb-arrow{fill:none;stroke:var(--accent);stroke-width:2.5px;marker-end:url(#wbah);stroke-dasharray:700;stroke-dashoffset:700px;animation:.6s ease-out forwards wb-draw}.wb-arrow-ok{stroke:var(--color-success);marker-end:url(#wbahok)}@keyframes wb-draw{to{stroke-dashoffset:0}}.wb-arrow-label{color:var(--accent);z-index:4;pointer-events:none;white-space:nowrap;background:#fff;border:1px solid #4f46e540;border-radius:8px;padding:1px 7px;font-size:.72rem;font-weight:700;position:absolute;transform:translate(-50%,-50%)}.wb-hl{border-radius:5px}.wb-hl-rect{fill:#fde04773;stroke:#f59e0b;stroke-width:2px;animation:1.2s ease-in-out infinite alternate wb-pulse}@keyframes wb-pulse{0%{fill:#fde04740}to{fill:#fde04799}}.wb-line.wb-dim{opacity:.3;transition:opacity .3s}.wb-mark{fill:none;stroke:var(--accent);stroke-width:2.5px;pointer-events:none}.wb-mark-strike{stroke:#ef4444}.wb-mark-label{color:var(--accent);pointer-events:none;background:#0009;border-radius:4px;padding:1px 5px;font-size:.75rem;position:absolute}.wb-pen{fill:none;stroke:#1d4ed8;stroke-width:3px;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}@media (prefers-reduced-motion:reduce){.wb-arrow{stroke-dashoffset:0;animation:none}.wb-hl-rect{animation:none}}.current-task{z-index:55;color:#fff;width:min(94vw,720px);animation:task-in .2s var(--ease-out-expo,ease-out);background:linear-gradient(135deg,#4f46e5f2,#6366f1f2);border-radius:12px;align-items:baseline;gap:.4rem;padding:.45rem .75rem;font-size:.85rem;line-height:1.3;display:flex;position:fixed;bottom:78px;left:50%;transform:translate(-50%);box-shadow:0 6px 18px #4f46e538}.current-task.hidden{display:none}.current-task-label{opacity:.9;flex:none;font-size:.8rem;font-weight:800}.current-task-text{-webkit-line-clamp:2;-webkit-box-orient:vertical;flex:auto;display:-webkit-box;overflow:hidden}.current-task .katex{color:#fff}@keyframes task-in{0%{opacity:0;transform:translate(-50%,10px)}to{opacity:1;transform:translate(-50%)}}.btn-aide{cursor:pointer;background:0 0;border:none;border-radius:10px;padding:.25rem .35rem;font-size:1.15rem;line-height:1;position:relative}.btn-aide:hover{background:#0000000d}.btn-aide.active{background:var(--accent);color:#fff}.btn-aide.hidden{display:none}#whiteboard.pen-active{touch-action:none}.aide-count{background:var(--color-warning,#f59e0b);color:#fff;border-radius:9px;justify-content:center;align-items:center;min-width:16px;height:16px;padding:0 4px;font-size:.62rem;font-weight:800;display:flex;position:absolute;top:-2px;right:-4px}.aide-count.hidden{display:none}.aide-pulse{animation:1.5s aide-pulse}@keyframes aide-pulse{0%,to{transform:scale(1)}30%{transform:scale(1.25)}}.aide-drawer{z-index:1000;border-radius:16px;flex-direction:column;width:min(92vw,360px);max-height:70vh;animation:.2s task-in;display:flex;position:fixed;top:54px;right:10px;overflow:hidden}.aide-drawer.hidden{display:none}.aide-body{flex-direction:column;gap:.5rem;padding:.5rem .9rem 1rem;display:flex;overflow-y:auto}.aide-item{border-left:4px solid var(--color-warning,#f59e0b);color:#1f2937;background:#fffbeb;border-radius:10px;padding:.6rem .8rem;font-size:.9rem;line-height:1.45}@media (prefers-reduced-motion:reduce){.current-task,.aide-drawer,.aide-pulse{animation:none}}@supports (padding:env(safe-area-inset-bottom)){.vocal-bar{height:calc(var(--vocal-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom)}.current-task{bottom:calc(84px + env(safe-area-inset-bottom))}.tutor-caption{bottom:calc(92px + env(safe-area-inset-bottom))}.wb-lines{padding-bottom:calc(156px + env(safe-area-inset-bottom))}.whiteboard{scroll-padding-bottom:calc(156px + env(safe-area-inset-bottom))}}.btn-mic,.btn-send,.btn-scan{min-width:44px;min-height:44px}.math-sym-btn{min-height:44px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:8px}.btn-mic.mic-blocked{opacity:.6;position:relative}.btn-mic.mic-blocked:after{content:"";border-radius:inherit;box-shadow:inset 0 0 0 2px var(--color-danger);position:absolute;inset:0}.serie-pick{flex-wrap:wrap;justify-content:center;align-items:center;gap:.4rem;margin-bottom:.9rem;display:flex}.serie-label{color:var(--chrome-text-muted,#64748b);margin-right:.2rem;font-size:.82rem;font-weight:600}.serie-chip{border:1.5px solid var(--chrome-border,#e5e7eb);min-width:44px;min-height:36px;color:var(--chrome-text,#1e293b);cursor:pointer;background:#fff;border-radius:999px;padding:.3rem .7rem;font-size:.85rem;font-weight:700;transition:all .15s}.serie-chip:hover{border-color:var(--accent);color:var(--accent)}.serie-chip.active{background:linear-gradient(135deg, var(--accent), var(--accent-secondary));color:#fff;border-color:#0000}
