@import "https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&display=swap";:root{--color-primary:#2563eb;--color-primary-hover:#1d4ed8;--color-primary-soft:#eff6ff;--color-accent:#f59e0b;--color-accent-soft:#fffbeb;--color-success:#10b981;--color-success-soft:#ecfdf5;--color-error:#ef4444;--color-error-hover:#dc2626;--color-error-soft:#fef2f2;--color-bg:#f5f5f0;--color-surface:#fff;--color-text:#1c1917;--color-text-secondary:#57534e;--color-text-muted:#a8a29e;--color-border:#e7e5e4;--color-border-hover:#d6d3d1;--color-code-bg:#1e1e2e;--color-reasoning:#a8a29e;--color-gradient-start:#2563eb;--color-gradient-end:#7c3aed;--shadow-sm:0 1px 4px #0000000a;--shadow-md:0 2px 12px #00000014;--shadow-lg:0 8px 24px #0000001f;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--space-8:32px;--space-12:48px;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:18px;--radius-full:50%;--font-sans:"Inter",system-ui,-apple-system,sans-serif;--font-serif:"Instrument Serif",Georgia,"Times New Roman",serif;--font-mono:"SF Mono","JetBrains Mono","Fira Code",monospace}.dark{--color-primary:#3b82f6;--color-primary-hover:#2563eb;--color-primary-soft:#3b82f626;--color-accent:#fbbf24;--color-accent-soft:#fbbf2426;--color-success:#34d399;--color-success-soft:#34d3991f;--color-error:#f87171;--color-error-hover:#ef4444;--color-error-soft:#f871711f;--color-bg:#0c0a09;--color-surface:#1c1917;--color-text:#f5f5f4;--color-text-secondary:#a8a29e;--color-text-muted:#78716c;--color-border:#292524;--color-border-hover:#44403c;--color-code-bg:#1e1e2e;--color-reasoning:#78716c;--color-gradient-start:#3b82f6;--color-gradient-end:#8b5cf6;--shadow-sm:0 1px 4px #0000004d;--shadow-md:0 2px 12px #0006;--shadow-lg:0 8px 24px #00000080;--lightningcss-light: ;--lightningcss-dark:initial;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}html,body{overscroll-behavior:none;height:100%;margin:0;padding:0;overflow:hidden}body{background-color:var(--color-bg);color:var(--color-text);font-family:var(--font-sans)}.sitor-logo-brain{fill:var(--color-bg)}.roadmap-sidebar{border-left:1px solid var(--color-border);background:var(--color-bg);scrollbar-width:thin;scrollbar-color:var(--color-border-hover)transparent;width:320px;height:100vh;flex-shrink:0;height:100dvh;padding:20px 16px;overflow-y:auto}.roadmap-sidebar::-webkit-scrollbar{width:4px}.roadmap-sidebar::-webkit-scrollbar-thumb{background:var(--color-border-hover);border-radius:2px}.roadmap-sidebar::-webkit-scrollbar-track{background:0 0}.sidebar-header{margin-bottom:20px}.sidebar-title{font-family:var(--font-serif);color:var(--color-text);margin-bottom:8px;font-size:17px;font-style:italic;font-weight:400}.sidebar-progress-label{color:var(--color-text-muted);margin-bottom:6px;font-size:12px}.sidebar-progress-bar{background:var(--color-border);border-radius:2px;height:4px;overflow:hidden}.sidebar-progress-fill{background:var(--color-success);border-radius:2px;height:100%;transition:width .3s ease-out}.sidebar-nodes{flex-direction:column;display:flex}.sidebar-node-row{gap:10px;min-height:40px;display:flex}.sidebar-node-track{flex-direction:column;flex-shrink:0;align-items:center;width:18px;display:flex}.sidebar-node-dot{border-radius:var(--radius-full);flex-shrink:0;justify-content:center;align-items:center;width:18px;height:18px;font-size:10px;font-weight:700;display:flex}.sidebar-node-dot--pending{background:var(--color-border);color:var(--color-text-muted)}.sidebar-node-dot--active{background:var(--color-accent);color:#fff;animation:1.5s ease-in-out infinite sidebar-dot-pulse}@keyframes sidebar-dot-pulse{0%,to{box-shadow:0 0 #f59e0b66}50%{box-shadow:0 0 0 4px #f59e0b00}}.sidebar-node-dot--mastered{background:var(--color-success);color:#fff}.sidebar-node-dot--locked{border:1.5px dashed var(--color-border-hover);color:var(--color-text-muted);background:0 0}.sidebar-node-line{flex:1;width:2px;min-height:16px}.sidebar-node-line--completed{background:var(--color-success)}.sidebar-node-line--active{background:var(--color-accent)}.sidebar-node-line--default{background:var(--color-border)}.sidebar-node-info{flex:1;align-items:baseline;gap:6px;min-width:0;padding:0 0 12px;display:flex}.sidebar-node-title{color:var(--color-text);font-size:13px;font-weight:500;line-height:18px}.sidebar-node-title--locked{color:var(--color-text-muted)}.sidebar-node-score{flex-shrink:0;font-size:11px;font-weight:600}.sidebar-node-score--high{color:var(--color-success)}.sidebar-node-score--mid{color:var(--color-accent)}.sidebar-node-score--low{color:var(--color-error)}.sidebar-node-row--clickable{cursor:pointer;border-radius:var(--radius-sm);transition:background-color .15s}.sidebar-node-row--clickable:hover{background:var(--color-surface)}.sidebar-sheet-overlay,.sidebar-sheet-handle{display:none}@media (max-width:768px){.roadmap-sidebar--desktop{display:none}.sidebar-sheet-overlay{z-index:100;background:#0006;animation:.2s ease-out sidebar-overlay-in;display:block;position:fixed;top:0;bottom:0;left:0;right:0}.sidebar-sheet{background:var(--color-surface);z-index:101;border-radius:16px 16px 0 0;max-height:70vh;padding:12px 16px 20px;animation:.25s ease-out sidebar-sheet-up;position:fixed;bottom:0;left:0;right:0;overflow-y:auto}.sidebar-sheet-handle{background:var(--color-border-hover);border-radius:2px;width:36px;height:4px;margin:0 auto 12px;display:block}@keyframes sidebar-overlay-in{0%{opacity:0}to{opacity:1}}@keyframes sidebar-sheet-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}}@media (max-width:768px) and (orientation:landscape){.sidebar-sheet{max-height:50vh}}.memory-panel{flex-direction:column;height:100%;display:flex;overflow:hidden}.memory-panel-header{align-items:center;gap:var(--space-2);padding:var(--space-3);border-bottom:1px solid var(--color-border);flex-shrink:0;display:flex}.memory-panel-back{border-radius:var(--radius-sm);width:28px;height:28px;color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;transition:color .15s,background-color .15s;display:flex}.memory-panel-back:hover{color:var(--color-text);background:var(--color-surface)}.memory-panel-title{font-family:var(--font-serif);color:var(--color-text);font-size:17px;font-style:italic;font-weight:400}.memory-panel-list{padding:var(--space-2)var(--space-3);flex:1;overflow-y:auto}.memory-panel-list::-webkit-scrollbar{width:4px}.memory-panel-list::-webkit-scrollbar-thumb{background:var(--color-border-hover);border-radius:2px}.memory-panel-empty{padding:var(--space-8)var(--space-4);color:var(--color-text-muted);text-align:center;flex-direction:column;justify-content:center;align-items:center;display:flex}.memory-panel-empty-icon{margin-bottom:var(--space-3);opacity:.4}.memory-panel-empty p{margin:0;font-size:13px;line-height:1.5}.memory-group{margin-bottom:var(--space-4)}.memory-group-header{align-items:center;gap:var(--space-2);padding:var(--space-1)0;margin-bottom:var(--space-1);display:flex}.memory-type-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.memory-type-dot--background{background:var(--color-text-secondary)}.memory-type-dot--strength{background:var(--color-success)}.memory-type-dot--weakness{background:var(--color-error)}.memory-type-dot--misconception{background:var(--color-accent)}.memory-type-dot--preference{background:var(--color-text-muted)}.memory-group-label{color:var(--color-text-secondary);font-size:12px;font-weight:600}.memory-group-count{color:var(--color-text-muted);margin-left:auto;font-size:11px}.memory-item{align-items:flex-start;gap:var(--space-2);padding:var(--space-2);border-radius:var(--radius-sm);transition:background-color .12s;display:flex}.memory-item:hover{background:var(--color-surface)}.memory-item-content{flex:1;min-width:0}.memory-item-desc{color:var(--color-text);font-size:13px;line-height:1.4;display:block}.memory-item-evidence{color:var(--color-text-muted);margin-top:2px;font-size:12px;font-style:italic;line-height:1.4;display:block}.memory-item-delete{border-radius:var(--radius-sm);color:var(--color-text-muted);cursor:pointer;opacity:0;background:0 0;border:none;flex-shrink:0;margin-top:2px;padding:2px;transition:opacity .15s,color .12s,background-color .12s;display:flex}.memory-item:hover .memory-item-delete{opacity:1}.memory-item-delete:hover{color:var(--color-error);background:var(--color-error-soft)}@media (max-width:768px){.memory-item .memory-item-delete{opacity:1}.memory-panel-list{padding:var(--space-2)}}.session-sidebar--desktop{border-right:1px solid var(--color-border);background:var(--color-bg);width:260px;height:100vh;flex-direction:column;flex-shrink:0;height:100dvh;transition:width .2s ease-out;display:flex}.session-sidebar--desktop.session-sidebar--collapsed{width:52px;overflow:hidden}@media (max-width:768px){.session-sidebar--desktop{display:none}}.session-sidebar--mobile{background:var(--color-bg);z-index:201;flex-direction:column;width:280px;max-width:80vw;animation:.25s ease-out session-sidebar-slide-in;display:flex;position:fixed;top:0;bottom:0;left:0}@keyframes session-sidebar-slide-in{0%{transform:translate(-100%)}to{transform:translate(0)}}.session-sidebar-overlay{z-index:200;background:#0006;animation:.2s ease-out session-sidebar-fade-in;position:fixed;top:0;bottom:0;left:0;right:0}@keyframes session-sidebar-fade-in{0%{opacity:0}to{opacity:1}}@media (min-width:769px){.session-sidebar--mobile,.session-sidebar-overlay{display:none}}.session-sidebar-top{padding:var(--space-3);flex-shrink:0}.session-sidebar-top-row{align-items:center;gap:var(--space-2);margin-bottom:var(--space-3);display:flex}.session-sidebar-logo{border-radius:var(--radius-sm);width:28px;height:28px;color:var(--color-text);background:0 0;flex-shrink:0;justify-content:center;align-items:center;font-size:16px;font-weight:700;display:flex;position:relative;top:-2px}.session-sidebar-logo--clickable{cursor:pointer;border:none;padding:0;transition:transform .15s}.session-sidebar-logo--clickable:hover{transform:scale(1.08)}.session-sidebar-brand{font-family:var(--font-serif);color:var(--color-text);flex:1;min-width:0;font-size:17px;font-style:italic;font-weight:400}.session-sidebar-collapse-btn{border-radius:var(--radius-sm);width:28px;height:28px;color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;margin-left:auto;transition:color .15s,background-color .15s;display:flex}.session-sidebar-collapse-btn:hover{color:var(--color-text);background:var(--color-surface)}@media (max-width:768px){.session-sidebar-collapse-btn{display:none}}.session-sidebar-new-btn{justify-content:center;align-items:center;gap:var(--space-2);width:100%;padding:var(--space-2)var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-secondary);cursor:pointer;background:0 0;font-size:13px;font-weight:500;transition:all .15s;display:flex}.session-sidebar-new-btn:hover:not(:disabled){background:var(--color-surface);border-color:var(--color-border-hover);color:var(--color-text)}.session-sidebar-new-btn:disabled{opacity:.6;cursor:not-allowed}.session-sidebar-spinner{animation:.8s linear infinite sidebar-spin}@keyframes sidebar-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.session-sidebar--collapsed .session-sidebar-new-btn{padding:var(--space-2);border-radius:var(--radius-sm);width:28px;height:28px;color:var(--color-text-muted);border-style:solid;border-color:#0000;margin:0 auto}.session-sidebar--collapsed .session-sidebar-new-btn:hover{background:var(--color-surface);color:var(--color-text)}.session-sidebar--collapsed .session-sidebar-top{align-items:center;gap:var(--space-2);flex-direction:column;display:flex}.session-sidebar--collapsed .session-sidebar-logo{margin-bottom:0}.session-sidebar-list{padding:var(--space-2)var(--space-2);flex:1;overflow-y:auto}.session-sidebar-list::-webkit-scrollbar{width:4px}.session-sidebar-list::-webkit-scrollbar-thumb{background:var(--color-border-hover);border-radius:2px}.session-sidebar-list::-webkit-scrollbar-track{background:0 0}.session-sidebar-item{align-items:center;gap:var(--space-2);padding:var(--space-2)var(--space-2);border-radius:var(--radius-sm);cursor:pointer;transition:background-color .12s;display:flex;position:relative}.session-sidebar-item:hover{background:var(--color-surface)}.session-sidebar-item--active{background:var(--color-surface);border-left:2px solid var(--color-text)}.session-sidebar-item--active:hover{background:var(--color-surface)}.session-sidebar-item-icon{color:var(--color-text-muted);flex-shrink:0}.session-sidebar-item--active .session-sidebar-item-icon{color:var(--color-text)}.session-sidebar-item-title{min-width:0;color:var(--color-text);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:13px;line-height:1.4;overflow:hidden}.session-sidebar-item--active .session-sidebar-item-title{font-weight:600}.session-sidebar-item-delete{border-radius:var(--radius-sm);color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:2px;transition:color .12s,background-color .12s;display:none}.session-sidebar-item:hover .session-sidebar-item-delete{display:flex}.session-sidebar-item-delete:hover{color:var(--color-error);background:var(--color-error-soft)}.session-sidebar-bottom{padding:var(--space-2)var(--space-3);border-top:1px solid var(--color-border);flex-shrink:0}.session-sidebar-bottom--collapsed{padding:var(--space-2);justify-content:center;display:flex}.session-sidebar-profile-btn{align-items:center;gap:var(--space-2);width:100%;padding:var(--space-2);border-radius:var(--radius-sm);color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;font-size:13px;transition:color .15s,background-color .15s;display:flex}.session-sidebar-profile-btn:hover{color:var(--color-text);background:var(--color-surface)}.session-sidebar-profile-btn--icon{justify-content:center;width:28px;height:28px;padding:0}.dark .session-sidebar-new-btn:hover,.dark .session-sidebar-item:hover{background:var(--color-surface)}.sitor-loading-breathing .sitor-loading-body{animation:1.2s ease-in-out infinite brain-breathe}.sitor-ray-breathe{animation:1.2s ease-in-out infinite ray-breathe}@keyframes brain-breathe{0%,to{opacity:.65}50%{opacity:1}}@keyframes ray-breathe{0%,to{opacity:0}50%{opacity:1}}.toaster-container{z-index:9999;pointer-events:none;flex-direction:column;align-items:center;gap:8px;display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.toast-item{background:var(--color-surface,#fff);border:1px solid var(--color-border,#e7e5e4);pointer-events:auto;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:12px;align-items:flex-start;gap:10px;min-width:200px;max-width:calc(100vw - 32px);padding:12px 16px;display:flex;box-shadow:0 4px 16px #0000001a}.toast-item--success{border-color:var(--color-success);background:var(--color-success-soft,#ecfdf5)}.toast-item--error{border-color:var(--color-error);background:var(--color-error-soft,#fef2f2)}.toast-item--warning{border-color:var(--color-accent);background:var(--color-accent-soft,#fffbeb)}.toast-item--info{border-color:var(--color-primary);background:var(--color-primary-soft,#eff6ff)}.toast-icon{flex-shrink:0;align-items:center;margin-top:1px;display:flex}.toast-content{flex-direction:column;gap:2px;min-width:0;display:flex}.toast-message{color:var(--color-text,#1c1917);font-size:14px;font-weight:500;line-height:1.4}.toast-description{color:var(--color-text-secondary,#57534e);font-size:13px;line-height:1.4}.chat-layout{font-family:var(--font-sans);background:var(--color-surface);overscroll-behavior:none;display:flex;position:fixed;top:0;bottom:0;left:0;right:0;overflow:hidden}.chat-main{flex-direction:column;flex:1;min-width:0;display:flex;overflow:hidden}.chat-header{padding:var(--space-3)var(--space-6);padding-top:calc(var(--space-3) + env(safe-area-inset-top));border-bottom:1px solid var(--color-border);background:var(--color-surface);flex-shrink:0;align-items:center;gap:10px;display:flex}.chat-header-hamburger{border-radius:var(--radius-sm);width:32px;height:32px;color:var(--color-text-secondary);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:color .15s,background .15s;display:none}.chat-header-hamburger:hover{color:var(--color-text);background:var(--color-bg)}@media (max-width:768px){.chat-header-hamburger{display:flex}}.chat-header-info{flex:1;min-width:0}.chat-header-title{font-family:var(--font-serif);letter-spacing:0;text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:6px;margin:0;font-size:17px;font-style:italic;font-weight:400;display:flex;overflow:hidden}.chat-header-subtitle{color:var(--color-text-muted);margin:0;font-size:12px;line-height:1.3}.chat-header-settings-wrap{flex-shrink:0;margin-left:auto;position:relative}.chat-header-settings-btn{border-radius:var(--radius-sm);width:32px;height:32px;color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0;transition:color .15s,background .15s;display:flex}.chat-header-settings-btn:hover{color:var(--color-text);background:var(--color-bg)}.chat-header-settings-dropdown{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);min-width:160px;max-width:calc(100vw - 32px);box-shadow:var(--shadow-lg);z-index:100;padding:4px;animation:.12s ease-out settings-dropdown-in;position:absolute;top:calc(100% + 6px);right:0}@media (max-width:768px){.chat-header-settings-dropdown{right:var(--space-2)}}@keyframes settings-dropdown-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.chat-header-settings-item{border-radius:var(--radius-sm);width:100%;color:var(--color-text);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:8px;padding:8px 12px;font-size:13px;font-weight:500;transition:background .1s;display:flex}.chat-header-settings-item:hover{background:var(--color-bg)}.chat-header-settings-item--danger{color:var(--color-error)}.chat-header-settings-item--danger:hover{background:var(--color-error-soft)}.chat-header-settings-icon{flex-shrink:0;justify-content:center;align-items:center;width:18px;font-size:14px;display:flex}.chat-header-settings-divider{background:var(--color-border);height:1px;margin:4px 8px}.chat-header-roadmap-btn{display:none}@media (max-width:768px){.chat-header-roadmap-btn{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text-secondary);cursor:pointer;flex-shrink:0;align-items:center;gap:4px;padding:6px 10px;font-size:12px;font-weight:500;transition:all .15s;display:inline-flex}.chat-header-roadmap-btn:hover{background:var(--color-bg);border-color:var(--color-border-hover)}.chat-header-roadmap-label{font-size:12px}}.chat-header-progress{flex-shrink:0;align-items:center;gap:8px;display:flex}.chat-header-progress-text{color:var(--color-text-secondary);white-space:nowrap;font-size:12px;font-weight:500}.chat-message-list{padding:var(--space-6)var(--space-6)var(--space-2);flex:1;min-height:0;overflow:hidden}.chat-message-list>div{overflow-x:hidden!important}.chat-message-list::-webkit-scrollbar{width:4px}.chat-message-list::-webkit-scrollbar-thumb{background:var(--color-border-hover);border-radius:2px}.chat-message-list::-webkit-scrollbar-track{background:0 0}.chat-message-inner{gap:var(--space-4);flex-direction:column;max-width:760px;min-height:100%;margin:0 auto;display:flex}.chat-input-wrapper{padding:var(--space-3)var(--space-6)20px;padding-bottom:calc(20px + env(safe-area-inset-bottom));background:var(--color-surface);flex-shrink:0;overflow-x:hidden}.chat-input-card{border:1px solid var(--color-border);border-radius:var(--radius-lg);max-width:760px;box-shadow:var(--shadow-sm);background:var(--color-surface);margin:0 auto;transition:border-color .15s,box-shadow .15s;overflow:hidden}.chat-input-card:focus-within{border-color:var(--color-text);box-shadow:0 0 0 2px #1c19170d}.chat-input-textarea{box-sizing:border-box;width:100%;padding:14px var(--space-4)var(--space-1);resize:none;color:var(--color-text);background:0 0;border:none;outline:none;min-height:44px;max-height:160px;font-family:inherit;font-size:15px;line-height:1.6;display:block;overflow-y:auto}.chat-input-textarea::placeholder{color:var(--color-text-muted)}.chat-input-textarea:disabled{opacity:.5}.chat-input-toolbar{justify-content:space-between;align-items:center;padding:6px 10px 10px;display:flex}.chat-input-toolbar-left,.chat-input-toolbar-right{align-items:center;gap:var(--space-1);display:flex}.chat-suggest-button{border-radius:var(--radius-full);cursor:pointer;width:32px;height:32px;color:var(--color-text-muted);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:color .15s,background-color .15s;display:flex}.chat-suggest-button:hover:not(:disabled){color:var(--color-accent);background:var(--color-accent-soft)}.chat-suggest-button:disabled{cursor:not-allowed}.chat-suggest-button--loading{color:var(--color-accent);animation:1.5s linear infinite suggest-spin,1.2s ease-in-out infinite suggest-pulse;position:relative}.chat-suggest-button--loading:before{content:"";border-radius:var(--radius-full);background:var(--color-accent);opacity:0;pointer-events:none;animation:1.5s ease-out infinite suggest-wave;position:absolute;top:-2px;bottom:-2px;left:-2px;right:-2px}.chat-suggest-button--loading:after{content:"";border-radius:var(--radius-full);background:var(--color-accent);opacity:0;pointer-events:none;animation:1.5s ease-out .5s infinite suggest-wave;position:absolute;top:-2px;bottom:-2px;left:-2px;right:-2px}@keyframes suggest-spin{to{transform:rotate(360deg)}}@keyframes suggest-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}@keyframes suggest-wave{0%{opacity:.35;transform:scale(1)}to{opacity:0;transform:scale(1.45)}}.chat-mic-button{border-radius:var(--radius-full);cursor:pointer;width:32px;height:32px;color:var(--color-text-muted);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:color .15s,background-color .15s;display:flex}.chat-mic-button:hover:not(:disabled){color:var(--color-text);background:var(--color-bg)}.chat-mic-button:disabled{opacity:.4;cursor:not-allowed}.chat-mic-button--recording{color:var(--color-error);background:var(--color-error-soft);animation:1.5s ease-in-out infinite mic-pulse}.chat-mic-button--recording:hover{color:var(--color-error);background:var(--color-error-soft)}@keyframes mic-pulse{0%,to{box-shadow:0 0 #ef44444d}50%{box-shadow:0 0 0 6px #ef444400}}.chat-mic-button--transcribing{color:var(--color-text-muted)}.chat-mic-spinner{animation:.8s linear infinite mic-spin}@keyframes mic-spin{to{transform:rotate(360deg)}}.chat-send-button{width:var(--space-8);height:var(--space-8);border-radius:var(--radius-full);cursor:pointer;background-color:var(--color-text);color:var(--color-surface);border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:background-color .15s,transform .1s;display:flex}.chat-send-button:hover:not(:disabled){background-color:var(--color-text);transform:scale(1.05)}.chat-send-button:disabled{background-color:var(--color-border-hover);cursor:not-allowed;transform:none}.chat-user-bubble-row{align-items:flex-end;gap:var(--space-1);flex-direction:column;display:flex}.chat-user-bubble-group{align-items:center;gap:var(--space-1);max-width:80%;display:flex}.chat-user-delete-button{border-radius:var(--radius-sm);width:28px;height:28px;color:var(--color-text-muted);cursor:pointer;opacity:0;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:opacity .15s,color .15s,background .15s;display:flex}.chat-user-bubble-group:hover .chat-user-delete-button{opacity:1}.chat-user-delete-button:hover{color:var(--color-error);background:var(--color-error-soft)}.chat-user-bubble{padding:10px var(--space-4);border-radius:var(--radius-xl);color:#fff;white-space:pre-wrap;word-break:break-word;cursor:pointer;background-color:#78716c;font-size:15px;line-height:1.6;transition:opacity .15s}.chat-user-bubble:hover{opacity:.9}.chat-user-quote{opacity:.85;-webkit-line-clamp:3;background:#ffffff1a;border-left:2px solid #ffffff4d;border-radius:0 6px 6px 0;-webkit-box-orient:vertical;margin-bottom:8px;padding:6px 10px;font-size:13px;line-height:1.5;display:-webkit-box;overflow:hidden}.dark .chat-user-bubble{color:#f5f5f4;background-color:#44403c}.chat-assistant-message{color:var(--color-text);font-size:15px;line-height:1.6}.chat-tool-indicator{padding:6px var(--space-3);margin:var(--space-2)0;border-radius:var(--radius-sm);background-color:var(--color-bg);border:1px solid var(--color-border);color:var(--color-text-secondary);align-items:center;gap:6px;font-size:13px;display:inline-flex}.chat-tool-dot{border-radius:var(--radius-full);width:6px;height:6px}.chat-tool-dot--success{background-color:var(--color-success)}.chat-tool-dot--running{background-color:var(--color-accent);animation:1s ease-in-out infinite tool-dot-pulse}@keyframes tool-dot-pulse{0%,to{opacity:1}50%{opacity:.3}}.chat-tool-dot--default{background-color:var(--color-text-muted)}.chat-tool-name{font-weight:500}.chat-tool-running-label{opacity:.6}.chat-reasoning{margin:var(--space-2)0;color:var(--color-reasoning);font-size:13px}.chat-reasoning summary{cursor:pointer;-webkit-user-select:none;user-select:none}.chat-reasoning-content{padding:var(--space-2)0;white-space:pre-wrap;font-style:italic}.chat-scroll-bottom{border-radius:var(--radius-full);border:1px solid var(--color-border);background:var(--color-surface);width:36px;height:36px;box-shadow:var(--shadow-md);cursor:pointer;color:var(--color-text-secondary);z-index:10;justify-content:center;align-items:center;transition:background-color .15s,box-shadow .15s;display:flex;position:sticky;bottom:12px;left:50%;transform:translate(-50%)}.chat-scroll-bottom:hover{background:var(--color-bg);box-shadow:var(--shadow-lg)}.chat-stop-button{width:var(--space-8);height:var(--space-8);border-radius:var(--radius-full);cursor:pointer;background-color:var(--color-text);color:var(--color-surface);border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:background-color .15s,transform .1s;display:flex}.chat-stop-button:hover{background-color:var(--color-error);transform:scale(1.05)}.chat-message-actions{align-items:center;gap:var(--space-2);margin-top:var(--space-2);opacity:0;height:28px;transition:opacity .15s ease-out;display:flex}.chat-assistant-message:hover .chat-message-actions,.chat-message-actions:focus-within{opacity:1}.chat-copy-button,.chat-retry-button{border-radius:var(--radius-sm);color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;align-items:center;gap:4px;padding:4px 8px;font-size:12px;transition:color .15s,background-color .15s;display:inline-flex}.chat-feedback-button{border-radius:var(--radius-sm);color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;align-items:center;padding:4px;transition:color .15s,background-color .15s;display:inline-flex}.chat-feedback-button:hover{color:var(--color-text-secondary);background:var(--color-bg)}.chat-feedback-button--active{color:var(--color-text)}.chat-feedback-button--active:hover{color:var(--color-text-secondary)}.chat-copy-button:hover,.chat-retry-button:hover{color:var(--color-text-secondary);background:var(--color-bg)}.chat-copy-label{font-size:12px}.chat-message-time{color:var(--color-text-muted);flex-shrink:0;font-size:11px}.chat-message-time--user{color:var(--color-text-muted);padding-right:var(--space-1);font-size:11px}.chat-user-edit-card{border-radius:var(--radius-md);background:#78716c;border:none;max-width:80%;overflow:hidden}.chat-user-edit-textarea{box-sizing:border-box;width:100%;padding:10px var(--space-3);resize:none;color:#fff;background:0 0;border:none;outline:none;min-height:44px;max-height:120px;font-family:inherit;font-size:15px;line-height:1.6;display:block}.chat-user-edit-textarea::placeholder{color:#ffffff80}.chat-user-edit-actions{justify-content:flex-end;gap:var(--space-1);padding:4px 8px 8px;display:flex}.chat-user-edit-cancel,.chat-user-edit-save{border-radius:var(--radius-sm);cursor:pointer;border:none;justify-content:center;align-items:center;width:28px;height:28px;transition:all .15s;display:flex}.chat-user-edit-cancel{color:#ffffff80;background:0 0}.chat-user-edit-cancel:hover{color:#fff}.chat-user-edit-save{color:#78716c;background:#fff}.chat-user-edit-save:hover{opacity:.85}.chat-image-part{margin:var(--space-2)0}.chat-image{border-radius:var(--radius-md);border:1px solid var(--color-border);object-fit:contain;max-width:100%;max-height:400px}.chat-file-part{padding:var(--space-2)var(--space-3);border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text-secondary);margin:var(--space-2)0;align-items:center;gap:6px;font-size:13px;display:inline-flex}.chat-file-name{color:var(--color-text);font-weight:500}.chat-file-size{color:var(--color-text-muted);font-size:12px}.chat-highlight-flash{animation:1.5s ease-out highlight-flash}@keyframes highlight-flash{0%{background-color:var(--color-accent-soft,#f59e0b26)}to{background-color:#0000}}.chat-error-message{border-left:3px solid var(--color-error);padding-left:var(--space-3);background:var(--color-error-soft);border-radius:0 var(--radius-md)var(--radius-md)0;padding:var(--space-3)}.chat-error-message .chat-message-actions{opacity:1}.chat-empty-state{min-height:300px;padding:var(--space-8)var(--space-4);text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;display:flex}.chat-empty-logo{margin-bottom:var(--space-4);color:var(--color-text)}.chat-empty-title{margin:0 0 var(--space-2);font-family:var(--font-serif);color:var(--color-text);font-size:26px;font-style:italic;font-weight:400}.chat-empty-subtitle{margin:0 0 var(--space-4);color:var(--color-text-muted);font-size:15px}.chat-how-it-works{align-items:flex-start;gap:var(--space-6);margin-bottom:var(--space-6);max-width:480px;display:flex}.chat-how-step{align-items:center;gap:var(--space-1);text-align:center;flex-direction:column;flex:1;display:flex}.chat-how-step-icon{color:var(--color-text);margin-bottom:2px;font-size:20px;font-weight:600}.chat-how-step-title{color:var(--color-text);font-size:15px;font-weight:600;line-height:1.3}.chat-how-step-desc{color:var(--color-text-muted);white-space:nowrap;margin-top:2px;font-size:12px;line-height:1.4}.chat-starter-grid{gap:var(--space-3);grid-template-columns:repeat(2,1fr);width:100%;max-width:480px;display:grid}.chat-starter-card{padding:var(--space-3)var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);cursor:pointer;text-align:left;font-size:14px;font-weight:500;transition:all .15s ease-out}.chat-starter-card:hover{border-color:var(--color-border-hover);background:var(--color-bg)}@media (max-width:768px){.chat-header{padding:var(--space-2)var(--space-3)}.chat-message-inner{max-width:100%;padding:0 var(--space-2)}.chat-input-card{border-radius:var(--radius-md);max-width:100%}.chat-user-bubble{max-width:90%}.chat-input-wrapper{padding:var(--space-2)var(--space-3)12px}.chat-empty-state{padding:var(--space-4)var(--space-4)var(--space-2);padding-top:var(--space-6);justify-content:flex-start;gap:0}.chat-empty-logo{margin-bottom:var(--space-2)}.chat-empty-logo svg{width:40px;height:40px}.chat-empty-title{margin-bottom:var(--space-1);font-size:19px}.chat-empty-subtitle{margin-bottom:var(--space-3);font-size:13px}.chat-how-it-works{gap:var(--space-2);margin-bottom:var(--space-3)}.chat-how-step-icon{font-size:16px}.chat-how-step-title{font-size:13px}.chat-how-step-desc{white-space:normal;font-size:11px}.chat-starter-grid{gap:var(--space-2);grid-template-columns:repeat(2,1fr)}.chat-starter-card{padding:var(--space-2)var(--space-3);font-size:13px}.chat-message-actions{opacity:1;gap:var(--space-1);height:auto}.chat-user-delete-button{opacity:1;min-width:36px;min-height:36px}.chat-user-bubble-group{max-width:90%}.chat-copy-button,.chat-retry-button{min-width:36px;min-height:36px;padding:8px}.chat-copy-label{display:none}.chat-retry-button{font-size:0}.chat-retry-button svg{font-size:initial}.chat-feedback-button{min-width:36px;min-height:36px;padding:8px}.chat-user-edit-cancel,.chat-user-edit-save{width:36px;height:36px}.chat-assistant-message{font-size:14px}.chat-empty-subtitle{font-size:13px}}.confirm-modal-overlay{z-index:1000;background:#0006;justify-content:center;align-items:center;animation:.15s ease-out confirm-fade-in;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}@keyframes confirm-fade-in{0%{opacity:0}to{opacity:1}}.confirm-modal{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:var(--space-6);width:calc(100vw - 32px);max-width:360px;animation:.15s ease-out confirm-scale-in}@keyframes confirm-scale-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.confirm-modal-title{margin:0 0 var(--space-2);color:var(--color-text);font-size:16px;font-weight:600}.confirm-modal-message{margin:0 0 var(--space-6);color:var(--color-text-secondary);font-size:14px;line-height:1.5}.confirm-modal-actions{justify-content:flex-end;gap:var(--space-2);display:flex}.confirm-modal-cancel{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text-secondary);cursor:pointer;padding:8px 16px;font-size:14px;font-weight:500;transition:all .15s}.confirm-modal-cancel:hover{background:var(--color-bg);border-color:var(--color-border-hover)}.confirm-modal-confirm{border-radius:var(--radius-sm);background:var(--color-text);color:var(--color-surface);cursor:pointer;border:none;padding:8px 16px;font-size:14px;font-weight:500;transition:all .15s}.confirm-modal-confirm:hover{opacity:.85}.confirm-modal-confirm--destructive{background:var(--color-error)}.confirm-modal-confirm--destructive:hover{background:var(--color-error-hover)}.confirm-modal-confirm:disabled{opacity:.5;cursor:not-allowed}.feedback-modal{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:var(--space-4);width:calc(100vw - 32px);max-width:400px;animation:.15s ease-out confirm-scale-in}.feedback-modal-title{margin:0 0 var(--space-4);color:var(--color-text);font-size:16px;font-weight:600}.feedback-modal-categories{margin-bottom:var(--space-4);flex-wrap:wrap;gap:8px;display:flex}.feedback-category-chip{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-secondary);cursor:pointer;border-radius:20px;padding:6px 14px;font-size:13px;font-weight:500;transition:all .15s ease-out}.feedback-category-chip:hover{border-color:var(--color-border-hover);background:var(--color-bg)}.feedback-category-chip--active{border-color:var(--color-error);background:var(--color-error-soft);color:var(--color-error)}.feedback-modal-textarea{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);width:100%;color:var(--color-text);font-family:var(--font-sans);resize:vertical;margin-bottom:var(--space-4);box-sizing:border-box;padding:10px 12px;font-size:14px;line-height:1.5;transition:border-color .15s}.feedback-modal-textarea:focus{border-color:var(--color-text);outline:none}.feedback-modal-textarea::placeholder{color:var(--color-text-muted)}.feedback-modal-actions{justify-content:flex-end;gap:var(--space-2);display:flex}.chat-selection-toolbar{background:var(--color-surface);border:1px solid var(--color-border);box-shadow:var(--shadow-md);pointer-events:auto;border-radius:20px;padding:2px 4px;animation:.15s cubic-bezier(.16,1,.3,1) forwards selection-toolbar-in}@keyframes selection-toolbar-in{0%{opacity:0;transform:translate(-50%)scale(.9)}to{opacity:1;transform:translate(-50%)scale(1)}}.chat-selection-toolbar-btn{color:var(--color-text-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:16px;align-items:center;gap:4px;padding:5px 10px;font-size:12px;font-weight:500;transition:color .15s,background .15s;display:inline-flex}.chat-selection-toolbar-btn:hover{background:var(--color-bg)}.chat-quote-bar{align-items:flex-start;gap:var(--space-2);margin:10px var(--space-4)0;padding:8px var(--space-3);border-left:3px solid var(--color-text);background:var(--color-bg);border-radius:0 var(--radius-sm)var(--radius-sm)0;animation:.15s ease-out quote-bar-in;display:flex}@keyframes quote-bar-in{0%{opacity:0;max-height:0;margin-top:0;padding-top:0;padding-bottom:0}to{opacity:1;max-height:60px}}.chat-quote-bar-text{color:var(--color-text-secondary);-webkit-line-clamp:2;text-overflow:ellipsis;-webkit-box-orient:vertical;flex:1;font-size:13px;line-height:1.4;display:-webkit-box;overflow:hidden}.chat-quote-bar-close{border-radius:var(--radius-full);width:20px;height:20px;color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:color .15s,background .15s;display:flex}.chat-quote-bar-close:hover{color:var(--color-text);background:#0000000f}.messages-loading{gap:var(--space-4);padding:var(--space-6)0;flex-direction:column;width:100%;max-width:760px;margin:0 auto;animation:.3s ease-out messages-loading-fade-in;display:flex}@keyframes messages-loading-fade-in{0%{opacity:0}to{opacity:1}}.messages-loading__row{gap:var(--space-2);flex-direction:column;display:flex}.messages-loading__row--user{align-items:flex-end}.messages-loading__row--assistant{align-items:flex-start}.messages-loading__bubble{border-radius:12px;animation:1.5s ease-in-out infinite skeleton-pulse}.messages-loading__bubble--user{background:var(--color-border);width:200px;height:40px}.messages-loading__bubble--assistant{background:var(--color-border);height:16px}.messages-loading__bubble--long{width:85%}.messages-loading__bubble--medium{width:60%}.messages-loading__bubble--short{width:35%}@keyframes skeleton-pulse{0%,to{opacity:.4}50%{opacity:.8}}.chat-loading-screen{background:var(--color-bg,#fafaf9);flex-direction:column;justify-content:center;align-items:center;gap:16px;min-height:100vh;display:flex}.chat-loading-logo{color:var(--color-text,#1c1917);opacity:.3;animation:1.2s ease-in-out infinite loading-pulse}.chat-loading-tagline{font-family:var(--font-serif);color:var(--color-text-muted,#a8a29e);opacity:.6;margin:0;font-size:16px;font-style:italic}@keyframes loading-pulse{0%,to{opacity:.15;transform:scale(1)}50%{opacity:.4;transform:scale(1.05)}}.chat-loading-error{color:var(--color-text-secondary,#57534e);margin:0;font-size:14px}.chat-loading-retry{border:1px solid var(--color-border,#e7e5e4);background:var(--color-surface,#fff);color:var(--color-text,#1c1917);cursor:pointer;border-radius:12px;padding:8px 20px;font-size:14px;font-weight:500;transition:all .15s ease-out}.chat-loading-retry:hover{border-color:var(--color-border-hover,#d6d3d1);transform:translateY(-1px);box-shadow:0 1px 4px #0000000a}.streaming-markdown.is-streaming>:last-child:after{content:"▍";color:var(--color-text-muted);margin-left:1px;font-weight:400;animation:.7s ease-in-out infinite cursor-pulse;display:inline}.streaming-markdown.is-streaming:empty:after{content:"▍";color:var(--color-text-muted);animation:.7s ease-in-out infinite cursor-pulse;display:inline-block}@keyframes cursor-pulse{0%,to{opacity:1}50%{opacity:.2}}.streaming-markdown p,.streaming-markdown pre,.streaming-markdown ul,.streaming-markdown ol,.streaming-markdown blockquote,.streaming-markdown table,.streaming-markdown hr{animation:.15s ease-out content-fade-in}@keyframes content-fade-in{0%{opacity:.6;transform:translateY(1px)}to{opacity:1;transform:translateY(0)}}.streaming-markdown.is-streaming [data-word]{animation:.25s ease-out both word-fade-in;display:inline}@keyframes word-fade-in{0%{opacity:0;filter:blur(2px)}to{opacity:1;filter:blur()}}.streaming-dots{align-items:center;gap:4px;padding:8px 0;display:flex}.streaming-dot{background:var(--color-text-muted);border-radius:50%;width:6px;height:6px;animation:.6s infinite alternate dot-bounce}.streaming-dot:nth-child(2){animation-delay:.2s}.streaming-dot:nth-child(3){animation-delay:.4s}@keyframes dot-bounce{0%{opacity:1;transform:translateY(0)}to{opacity:.3;transform:translateY(-6px)}}.code-block-wrapper{border-radius:8px;margin:12px 0;overflow:hidden}.code-block-wrapper pre{-webkit-overflow-scrolling:touch;overflow-x:auto}.code-block-header{background:var(--color-code-bg);justify-content:space-between;align-items:center;padding:6px 16px;font-size:12px;display:flex}.code-block-lang{color:#6c7086;font-family:var(--font-mono);text-transform:lowercase}.code-block-copy{color:#6c7086;cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;gap:4px;padding:2px 6px;font-size:12px;transition:color .15s,background-color .15s;display:inline-flex}.code-block-copy:hover{color:#cdd6f4;background:#ffffff14}.streaming-markdown pre code{font-family:var(--font-mono)}.hljs-keyword{color:#cba6f7}.hljs-string{color:#a6e3a1}.hljs-number{color:#fab387}.hljs-function,.hljs-title{color:#89b4fa}.hljs-params{color:#cdd6f4}.hljs-comment{color:#6c7086;font-style:italic}.hljs-built_in{color:#f38ba8}.hljs-literal{color:#fab387}.hljs-type{color:#f9e2af}.hljs-attr{color:#89dceb}.hljs-variable{color:#cdd6f4}.hljs-operator{color:#89dceb}.hljs-punctuation{color:#9399b2}.hljs-property{color:#89dceb}.hljs-regexp{color:#f5c2e7}.hljs-meta{color:#f9e2af}.hljs-selector-tag{color:#cba6f7}.hljs-selector-class{color:#89b4fa}.hljs-selector-id{color:#fab387}.hljs-tag,.hljs-name{color:#cba6f7}.hljs-attribute{color:#89b4fa}@media (max-width:768px){.code-block-header{padding:6px 12px}.streaming-markdown pre code{font-size:12px}.code-block-wrapper{margin:8px 0}.code-block-wrapper pre,.streaming-markdown pre{-webkit-overflow-scrolling:touch;word-break:normal;white-space:pre;max-width:100%;overflow-x:auto}}.roadmap-card{margin:var(--space-3)0;padding:var(--space-4);border-radius:var(--radius-md);border:none;border-left:3px solid var(--color-border-hover);background:var(--color-bg)}.roadmap-header{font-family:var(--font-serif);color:var(--color-text);margin-bottom:var(--space-3);font-size:17px;font-style:italic;font-weight:400}.roadmap-nodes{flex-direction:column;gap:0;display:flex}.roadmap-node-row{align-items:flex-start;gap:var(--space-3);display:flex}.roadmap-node-track{flex-direction:column;flex-shrink:0;align-items:center;width:24px;display:flex}.roadmap-node-dot{border-radius:var(--radius-full);border:2px solid var(--color-border);flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;font-size:10px;transition:all .2s ease-out;display:flex}.roadmap-node-dot--active{border-color:var(--color-accent);background:var(--color-accent-soft);animation:2s ease-in-out infinite node-pulse}.roadmap-node-dot--mastered{border-color:var(--color-success);background:var(--color-success);color:#fff}.roadmap-node-dot--locked{opacity:.5;border-style:dashed}.roadmap-node-dot--pending{border-color:var(--color-border)}.roadmap-node-line{flex-shrink:0;width:2px;height:20px}.roadmap-node-line--completed{background:var(--color-success)}.roadmap-node-line--active{background:var(--color-accent);background-image:repeating-linear-gradient(0deg,var(--color-accent),var(--color-accent)4px,transparent 4px,transparent 8px)}.roadmap-node-line--default{background:var(--color-border);background-image:repeating-linear-gradient(0deg,var(--color-border),var(--color-border)4px,transparent 4px,transparent 8px)}.roadmap-node-content{padding:var(--space-1)0 var(--space-3);flex:1;min-width:0}.roadmap-node-title{color:var(--color-text);font-size:14px;font-weight:500;line-height:1.4}.roadmap-node-title--locked{color:var(--color-text-muted)}.roadmap-node-desc{color:var(--color-text-secondary);margin-top:2px;font-size:13px;line-height:1.4}.roadmap-node-score{padding:var(--space-1)0;flex-shrink:0;font-size:12px;font-weight:500}.roadmap-node-score--high{color:var(--color-success)}.roadmap-node-score--mid{color:var(--color-accent)}.roadmap-node-score--low{color:var(--color-error)}@keyframes node-pulse{0%,to{box-shadow:0 0 #f59e0b4d}50%{box-shadow:0 0 0 4px #f59e0b00}}.mastery-card{margin:var(--space-3)0;padding:var(--space-4);border-radius:var(--radius-md);border:none;border-left:3px solid var(--color-success);background:var(--color-bg)}.mastery-card:has(.mastery-badge--failed){border-left-color:var(--color-error)}.mastery-header{margin-bottom:var(--space-3);justify-content:space-between;align-items:center;display:flex}.mastery-node-name{font-family:var(--font-serif);color:var(--color-text);font-size:17px;font-style:italic;font-weight:400}.mastery-badge{padding:2px var(--space-2);border-radius:var(--radius-sm);font-size:12px;font-weight:500}.mastery-badge--passed{background:var(--color-success-soft);color:var(--color-success)}.mastery-badge--failed{background:var(--color-error-soft);color:var(--color-error)}.mastery-badge--glow{animation:1.5s ease-out mastery-glow}@keyframes mastery-glow{0%{box-shadow:0 0 8px 2px #10b98180}to{box-shadow:0 0 #10b98100}}.mastery-score-bar{margin-bottom:var(--space-3)}.mastery-score-label{color:var(--color-text-secondary);margin-bottom:var(--space-1);justify-content:space-between;font-size:13px;display:flex}.mastery-score-track{background:var(--color-border);border-radius:4px;height:8px;overflow:hidden}.mastery-score-fill{border-radius:4px;height:100%;transition:width .6s cubic-bezier(.34,1.56,.64,1)}.mastery-score-fill--high{background:var(--color-success)}.mastery-score-fill--mid{background:var(--color-accent)}.mastery-score-fill--low{background:var(--color-error)}.mastery-criteria{gap:var(--space-2);margin-bottom:var(--space-3);flex-direction:column;display:flex}.mastery-criterion{align-items:center;gap:var(--space-2);font-size:13px;display:flex}.mastery-criterion-name{color:var(--color-text-secondary);flex:1;min-width:0}.mastery-criterion-score{text-align:right;flex-shrink:0;width:36px;font-weight:500}.mastery-criterion-bar{background:var(--color-border);border-radius:2px;flex-shrink:0;width:80px;height:4px;overflow:hidden}.mastery-criterion-fill{border-radius:2px;height:100%;transition:width .4s ease-out}.mastery-summary{color:var(--color-text);margin-bottom:var(--space-2);font-size:14px;line-height:1.6}.mastery-recommendations{color:var(--color-text-secondary);font-size:13px;line-height:1.5}.mastery-recommendations ul{margin:var(--space-1)0 0;padding-left:var(--space-4);list-style-type:disc}.mastery-recommendations li{margin-bottom:2px}.quiz-card{margin:var(--space-3)0;padding:var(--space-4);border-radius:var(--radius-md);border:none;border-left:3px solid var(--color-border-hover);background:var(--color-bg)}.quiz-header{font-family:var(--font-serif);color:var(--color-text);margin-bottom:var(--space-3);font-size:17px;font-style:italic;font-weight:400}.quiz-question-block{margin-bottom:var(--space-4)}.quiz-question-block:last-child{margin-bottom:0}.quiz-question-number{color:var(--color-text-secondary);margin-right:var(--space-1);font-weight:600}.quiz-question-text{color:var(--color-text);margin-bottom:var(--space-2);font-size:14px;font-weight:500;line-height:1.5}.quiz-options{gap:var(--space-2);flex-direction:column;display:flex}.quiz-option{align-items:flex-start;gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface);cursor:pointer;color:var(--color-text);-webkit-user-select:none;user-select:none;font-size:14px;line-height:1.5;transition:all .15s ease-out;display:flex}.quiz-option:hover:not(.quiz-option--disabled){background:var(--color-bg);border-color:var(--color-border-hover)}.quiz-option--selected{border-color:var(--color-text);background:var(--color-bg)}.quiz-option--disabled{cursor:default;opacity:.7}.quiz-option-id{color:var(--color-text-secondary);flex-shrink:0;min-width:20px;font-weight:500}.quiz-option-text{flex:1}.quiz-card--submitted{opacity:.75}.quiz-card--submitted .quiz-option{pointer-events:none}.quiz-submit-button{width:100%;margin-top:var(--space-3);padding:var(--space-2)var(--space-4);border-radius:var(--radius-md);background:var(--color-text);color:var(--color-surface);cursor:pointer;border:none;font-size:14px;font-weight:500;transition:all .15s ease-out;display:block}.quiz-submit-button:hover:not(:disabled){opacity:.85}.quiz-submit-button:disabled{background:var(--color-border);color:var(--color-text-muted);cursor:not-allowed}.quiz-interleaving-tag{border-radius:var(--radius-sm);background:var(--color-accent-soft);color:var(--color-accent);margin-bottom:var(--space-3);padding:2px 8px;font-size:12px;font-weight:500;display:inline-block}.self-assess-card{margin:var(--space-3)0;padding:var(--space-4);border-radius:var(--radius-md);border:none;border-left:3px solid var(--color-border-hover);background:var(--color-bg)}.self-assess-card--submitted{opacity:.75}.self-assess-title{font-family:var(--font-serif);color:var(--color-text);margin-bottom:var(--space-2);font-size:17px;font-style:italic;font-weight:400}.self-assess-prompt{color:var(--color-text-secondary);margin-bottom:var(--space-3);font-size:14px;line-height:1.5}.self-assess-levels{gap:var(--space-2);margin-bottom:var(--space-2);flex-wrap:wrap;display:flex}.self-assess-level{min-width:56px;padding:var(--space-3)var(--space-1);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);cursor:pointer;flex-direction:column;flex:1;align-items:center;gap:4px;transition:all .15s ease-out;display:flex}.self-assess-level:hover:not(.self-assess-level--disabled){background:var(--color-bg);border-color:var(--color-border-hover)}.self-assess-level--selected{border-color:var(--color-text);background:var(--color-bg)}.self-assess-level--disabled{cursor:default;opacity:.7}.self-assess-level-number{color:var(--color-text);font-size:18px;font-weight:600}.self-assess-level-label{color:var(--color-text-secondary);text-align:center;font-size:11px;line-height:1.3}.self-assess-submit{width:100%;margin-top:var(--space-3);padding:var(--space-2)var(--space-4);border-radius:var(--radius-md);background:var(--color-text);color:var(--color-surface);cursor:pointer;border:none;font-size:14px;font-weight:500;transition:all .15s ease-out;display:block}.self-assess-submit:hover{opacity:.85}.progress-card{margin:var(--space-3)0;align-items:center;gap:6px var(--space-2);padding:var(--space-2)var(--space-3);border-radius:var(--radius-sm);border:none;border-left:3px solid var(--color-text-muted);background:var(--color-bg);color:var(--color-text-secondary);flex-wrap:wrap;font-size:13px;animation:.2s ease-out content-fade-in;display:flex}.progress-status-dot{border-radius:var(--radius-full);flex-shrink:0;width:8px;height:8px}.progress-status-dot--mastered{background:var(--color-success)}.progress-status-dot--active{background:var(--color-accent)}.progress-status-dot--pending{background:var(--color-text-muted)}.progress-node-name{color:var(--color-text);font-weight:600}.progress-status-label{color:var(--color-text-secondary)}.progress-unlocked{width:100%;color:var(--color-text-muted);padding-left:16px;font-size:12px}.question-card{margin:var(--space-3)0;border-radius:var(--radius-md);background:var(--color-bg);border:none;animation:.2s ease-out content-fade-in;display:flex;overflow:hidden}.question-card__accent{background:var(--color-accent);flex-shrink:0;width:3px}.question-card__body{padding:var(--space-3)var(--space-4);flex:1;min-width:0}.question-card__question{color:var(--color-text);margin-bottom:var(--space-3);font-size:14px;font-weight:500;line-height:1.6}.question-card__submit{width:100%;margin-top:var(--space-3);padding:var(--space-2)var(--space-4);border-radius:var(--radius-md);background:var(--color-text);color:var(--color-surface);cursor:pointer;border:none;font-size:14px;font-weight:500;transition:all .15s ease-out;display:block}.question-card__submit:hover{opacity:.85}.question-card__answered{margin-top:var(--space-2);padding:var(--space-2)var(--space-3);border-radius:var(--radius-md);background:var(--color-bg);color:var(--color-text-secondary);white-space:pre-wrap;font-size:14px;font-weight:500;line-height:1.5}.question-card__waiting{margin-top:var(--space-2);padding:var(--space-1)0;align-items:center;gap:4px;display:flex}.question-card__dot{border-radius:var(--radius-full);background:var(--color-text-muted);width:6px;height:6px;animation:1.2s ease-in-out infinite question-dot-bounce}.question-card__dot:nth-child(2){animation-delay:.15s}.question-card__dot:nth-child(3){animation-delay:.3s}@keyframes question-dot-bounce{0%,60%,to{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}.question-card--submitted{opacity:.75}.question-card--submitted .quiz-option,.question-card--submitted .self-assess-level{pointer-events:none}.search-card{margin:var(--space-3)0;border-radius:var(--radius-md);border:none;border-left:3px solid var(--color-text-muted);background:var(--color-bg);overflow:hidden}.search-card-header{align-items:center;gap:var(--space-2);width:100%;padding:var(--space-3)var(--space-4);cursor:pointer;font-family:inherit;font-size:inherit;-webkit-appearance:none;-moz-appearance:none;appearance:none;text-align:left;border-radius:inherit;background:0 0;border:none;outline:none;transition:background-color .12s;display:flex}.search-card-header:hover{background:#00000005}.dark .search-card-header:hover{background:#ffffff08}.search-card-header:focus-visible{outline:none}.search-card-icon{color:var(--color-text-muted);flex-shrink:0}.search-card-query{color:var(--color-text);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:13px;font-weight:500;overflow:hidden}.search-card-sources{flex-shrink:0;align-items:center;gap:0;margin-left:auto;display:flex}.search-card-source-icon{border-radius:var(--radius-full);border:1.5px solid var(--color-bg);background:var(--color-surface);width:16px;height:16px;margin-left:-5px;position:relative}.search-card-source-icon:first-child{margin-left:0}.search-card-count{color:var(--color-text-muted);margin-left:var(--space-2);flex-shrink:0;font-size:12px}.search-card-chevron{color:var(--color-text-muted);flex-shrink:0;transition:transform .15s}.search-card-error{color:var(--color-error);flex-shrink:0;align-items:center;gap:4px;margin-left:auto;font-size:12px;display:flex}.search-card-searching{flex-shrink:0;align-items:center;gap:3px;display:flex}.search-card-dot{border-radius:var(--radius-full);background:var(--color-text-muted);width:4px;height:4px;animation:1.2s ease-in-out infinite search-dot-pulse}.search-card-dot:nth-child(2){animation-delay:.15s}.search-card-dot:nth-child(3){animation-delay:.3s}@keyframes search-dot-pulse{0%,60%,to{opacity:.3}30%{opacity:1}}.search-card-knowledge{padding:var(--space-3)var(--space-4);color:var(--color-text-secondary);border-bottom:1px solid var(--color-border);font-size:13px;line-height:1.5}.search-card-results{flex-direction:column;display:flex}.search-result-item{padding:var(--space-3)var(--space-4);border-bottom:1px solid var(--color-border);text-decoration:none;transition:background-color .12s;display:block}.search-result-item:last-child{border-bottom:none}.search-result-item:hover{background:var(--color-surface)}.search-result-meta{align-items:center;gap:var(--space-1);margin-bottom:4px;display:flex}.search-result-favicon{border-radius:2px;flex-shrink:0;width:14px;height:14px}.search-result-domain{color:var(--color-text-muted);font-size:12px}.search-result-external{color:var(--color-text-muted);opacity:0;flex-shrink:0;transition:opacity .12s}.search-result-item:hover .search-result-external{opacity:1}.search-result-title{color:var(--color-primary);margin-bottom:2px;font-size:14px;font-weight:500;line-height:1.4}.search-result-snippet{color:var(--color-text-secondary);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:13px;line-height:1.5;display:-webkit-box;overflow:hidden}.webpage-card{align-items:center;gap:var(--space-2);margin:var(--space-2)0;padding:var(--space-2)var(--space-3);border-radius:var(--radius-sm);background:var(--color-bg);display:flex}.webpage-card-icon{color:var(--color-text-muted);flex-shrink:0}.webpage-card-url{align-items:center;gap:var(--space-1);color:var(--color-primary);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:13px;text-decoration:none;transition:color .12s;display:flex;overflow:hidden}.webpage-card-url:hover{color:var(--color-primary-hover)}.webpage-card-external{opacity:.6;flex-shrink:0}.webpage-card-loading{flex-shrink:0;align-items:center;gap:3px;margin-left:auto;display:flex}.webpage-card-status{flex-shrink:0;align-items:center;gap:3px;margin-left:auto;font-size:12px;display:flex}.webpage-card-status--success{color:var(--color-success)}.webpage-card-status--error{color:var(--color-error)}.roadmap-streaming-placeholder{padding:var(--space-1)0}@media (max-width:768px){.roadmap-card,.mastery-card,.quiz-card,.question-card,.search-card,.webpage-card{box-sizing:border-box;width:100%}.mastery-criterion-bar{width:48px}.mastery-criterion-score{width:30px}.self-assess-level{min-width:44px;padding:var(--space-2)2px}.self-assess-level-number{font-size:16px}.self-assess-level-label{font-size:10px}}.login-page{background:var(--color-bg,#fafaf9);min-height:100vh;background-image:url("data:image/svg+xml,%3Csvg viewBox=%270 0 256 256%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cfilter id=%27n%27%3E%3CfeTurbulence type=%27fractalNoise%27 baseFrequency=%270.9%27 numOctaves=%274%27 stitchTiles=%27stitch%27/%3E%3C/filter%3E%3Crect width=%27100%25%27 height=%27100%25%27 filter=%27url%28%23n%29%27 opacity=%270.025%27/%3E%3C/svg%3E");justify-content:center;align-items:center;min-height:100dvh;display:flex}.login-canvas{width:100%;max-width:440px;padding:48px 24px}.login-brand-mark{text-align:center;color:var(--color-text,#1c1917);margin-bottom:20px}.login-tagline{font-family:var(--font-serif);color:var(--color-text,#1c1917);text-align:center;letter-spacing:-.3px;margin:0 0 16px;font-size:32px;font-style:italic;font-weight:400;line-height:1.3}.login-value-props{color:var(--color-text-muted,#a8a29e);text-align:center;letter-spacing:.3px;margin:0 0 28px;font-size:13px;line-height:1.6}.login-prop{white-space:nowrap}.login-dot{opacity:.5;margin:0 8px;display:inline-block}.login-divider{background:var(--color-border,#e7e5e4);transform-origin:50%;max-width:80px;height:1px;margin:0 auto 28px}.login-form-title{color:var(--color-text,#1c1917);text-align:center;letter-spacing:-.2px;margin:0 0 20px;font-size:15px;font-weight:600}.login-form{flex-direction:column;gap:12px;display:flex}.login-field{position:relative}.login-input{border:1px solid var(--color-border,#e7e5e4);background:var(--color-surface,#fff);width:100%;color:var(--color-text,#1c1917);box-sizing:border-box;border-radius:12px;outline:none;padding:14px 16px;font-size:15px;transition:border-color .2s,box-shadow .2s}.login-input:focus{border-color:var(--color-text,#1c1917);box-shadow:0 0 0 2px #1c19170f}.login-input::placeholder{color:var(--color-text-muted,#a8a29e)}.login-error{color:var(--color-error,#ef4444);text-align:left;padding:0 4px;font-size:13px}.login-submit{width:100%;color:var(--color-surface,#fff);background:var(--color-text,#1c1917);cursor:pointer;letter-spacing:-.2px;border:none;border-radius:12px;margin-top:4px;padding:14px;font-size:15px;font-weight:600;transition:opacity .15s,transform .1s}.login-submit:hover:not(:disabled){opacity:.85}.login-submit:active:not(:disabled){transform:scale(.99)}.login-submit:disabled{opacity:.7;cursor:not-allowed}.login-spinner{vertical-align:middle;border:2px solid #ffffff4d;border-top-color:currentColor;border-radius:50%;width:16px;height:16px;animation:.6s linear infinite login-spin;display:inline-block}@keyframes login-spin{to{transform:rotate(360deg)}}.dark .login-submit{background:var(--color-surface,#fff);color:var(--color-text,#1c1917)}.login-forgot-link{width:-moz-fit-content;width:fit-content;color:var(--color-text-muted,#a8a29e);cursor:pointer;background:0 0;border:none;margin-left:auto;padding:0 4px;font-size:13px;transition:color .15s;display:block}.login-forgot-link:hover{color:var(--color-text-secondary,#57534e)}.login-link{width:-moz-fit-content;width:fit-content;color:var(--color-text-secondary,#57534e);cursor:pointer;background:0 0;border:none;margin:20px auto 0;padding:4px;font-size:13px;transition:color .15s;display:block}.login-link:hover{color:var(--color-text,#1c1917)}.login-heading{color:var(--color-text,#1c1917);text-align:center;margin:0 0 8px;font-size:20px;font-weight:700}.login-body-text{color:var(--color-text-secondary,#57534e);text-align:center;margin:0 0 24px;font-size:14px;line-height:1.6}@media (max-width:768px){.login-canvas{padding:40px 20px}.login-brand-mark{margin-bottom:16px}.login-brand-mark svg{width:48px;height:48px}.login-tagline{font-size:26px}.login-value-props{font-size:12px}}