*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}:root{--primary: #6c5ce7;--primary-dark: #5a4bd1;--primary-light: #a29bfe;--primary-ink: #4036a8;--primary-glow: rgba(108, 92, 231, .35);--accent: #ff9f43;--accent-deep: #f0932b;--accent-ink: #9a5410;--accent-glow: rgba(255, 159, 67, .4);--bg: #eef0fb;--bg-dark: #1e1e2e;--surface: rgba(255, 255, 255, .62);--surface-strong: rgba(255, 255, 255, .82);--surface-alt: rgba(255, 255, 255, .45);--surface-frost-tint: rgba(243, 241, 254, .55);--surface-solid: #ffffff;--glass-border: rgba(255, 255, 255, .65);--glass-highlight: rgba(255, 255, 255, .85);--glass-border-soft: rgba(108, 92, 231, .14);--border: rgba(108, 92, 231, .14);--text: #1f2233;--text-muted: #4a4f63;--text-on-violet: #ffffff;--danger: #d63031;--danger-ink: #b02324;--success: #00b894;--success-ink: #0a7d63;--warn: #f0932b;--radius: 18px;--radius-sm: 12px;--radius-pill: 999px;--blur: 20px;--blur-strong: 30px;--blur-sm: 12px;--shadow: 0 4px 20px rgba(60, 50, 130, .1), 0 1px 2px rgba(60, 50, 130, .06);--shadow-lg: 0 12px 40px rgba(60, 50, 130, .16);--inset-top: inset 0 1px 0 rgba(255, 255, 255, .75);--ring: 0 0 0 3px rgba(108, 92, 231, .45);--sat: 1.5}html,body,#root{height:100%;width:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:var(--bg);color:var(--text);line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.chat-page:before,.login-page:before{content:"";position:fixed;top:-10%;right:-10%;bottom:-10%;left:-10%;z-index:-1;pointer-events:none;background:radial-gradient(46% 50% at 15% 18%,rgba(108,92,231,.8) 0%,transparent 60%),radial-gradient(44% 48% at 85% 14%,rgba(162,155,254,.72) 0%,transparent 62%),radial-gradient(54% 56% at 82% 86%,rgba(0,184,148,.34) 0%,transparent 60%),radial-gradient(48% 52% at 16% 90%,rgba(255,159,67,.46) 0%,transparent 60%),linear-gradient(135deg,#ece7ff,#e2ebfb,#e9efff);background-color:var(--bg);filter:saturate(1.18);animation:aurora-drift 26s ease-in-out infinite alternate}@keyframes aurora-drift{0%{transform:translateZ(0) scale(1)}50%{transform:translate3d(-1.5%,1.2%,0) scale(1.05)}to{transform:translate3d(1.2%,-1%,0) scale(1.03)}}*{scrollbar-width:thin;scrollbar-color:rgba(108,92,231,.3) transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background:#6c5ce747;border-radius:999px;border:2px solid transparent;background-clip:padding-box}*::-webkit-scrollbar-thumb:hover{background:#6c5ce773;background-clip:padding-box}.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--bg);padding:1rem}.login-card{position:relative;background:var(--surface-strong);-webkit-backdrop-filter:blur(var(--blur)) saturate(var(--sat));backdrop-filter:blur(var(--blur)) saturate(var(--sat));border:1px solid var(--glass-border);border-radius:var(--radius);box-shadow:var(--shadow-lg),var(--inset-top),inset 0 -1px #6c5ce70d;padding:2.5rem;width:100%;max-width:420px}.login-card:before{content:"";position:absolute;inset:0 0 auto 0;height:1px;border-radius:inherit;pointer-events:none;background:linear-gradient(90deg,transparent,var(--glass-highlight) 18%,var(--glass-highlight) 82%,transparent)}.login-header{text-align:center;margin-bottom:2rem}.login-header h1{font-size:1.8rem;font-weight:700;color:var(--primary);margin-bottom:.25rem}.login-header p{color:var(--text-muted);font-size:.9rem}.login-form{display:flex;flex-direction:column;gap:1rem}.login-error{background:#d630311a;color:var(--danger-ink);border:1px solid rgba(214,48,49,.25);padding:.75rem 1rem;border-radius:var(--radius-sm);font-size:.9rem;text-align:center}.form-group{display:flex;flex-direction:column;gap:.35rem}.form-group label{font-weight:600;font-size:.85rem;color:var(--text-muted)}.form-group input{padding:.75rem 1rem;background:var(--surface-strong);-webkit-backdrop-filter:blur(var(--blur));backdrop-filter:blur(var(--blur));border:1px solid var(--glass-border);border-radius:var(--radius-sm);color:var(--text);font-family:inherit;font-size:1rem;transition:border-color .18s ease,box-shadow .25s ease;outline:none}.form-group input:focus{border-color:var(--primary-light);box-shadow:var(--ring)}.login-button{padding:.85rem;background:var(--primary);color:var(--text-on-violet);border:1px solid var(--primary);border-radius:var(--radius-sm);font-size:1rem;font-weight:600;cursor:pointer;box-shadow:0 4px 14px var(--primary-glow),var(--inset-top);transition:background .2s ease,box-shadow .25s ease,transform .15s ease;margin-top:.5rem}.login-button:hover:not(:disabled){background:var(--primary-dark);transform:translateY(-1px)}.login-button:focus-visible{outline:none;box-shadow:var(--ring),0 4px 14px var(--primary-glow)}.login-button:disabled{opacity:.5;cursor:not-allowed}.login-hint{margin-top:1.5rem;text-align:center;font-size:.8rem;color:var(--text-muted);padding-top:1rem;border-top:1px solid var(--glass-border-soft)}.chat-page{display:flex;height:100vh;overflow:hidden}.book-pane iframe{width:100%;flex:1;background:var(--surface-solid);border:none;box-shadow:inset 0 0 0 1px var(--glass-border-soft),var(--shadow)}.chat-header{position:relative;display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;border-bottom:1px solid var(--glass-border);background:var(--surface-alt);-webkit-backdrop-filter:blur(var(--blur)) saturate(var(--sat));backdrop-filter:blur(var(--blur)) saturate(var(--sat));box-shadow:var(--inset-top);flex-shrink:0}.chat-header:before{content:"";position:absolute;inset:0 0 auto 0;height:1px;pointer-events:none;background:linear-gradient(90deg,transparent,var(--glass-highlight) 18%,var(--glass-highlight) 82%,transparent)}.chat-header-left h2{font-size:1.15rem;color:var(--primary)}.user-badge{font-size:.75rem;color:var(--text-muted)}.chat-header-right{display:flex;gap:.5rem}.btn-secondary{padding:.4rem .75rem;background:var(--surface-alt);-webkit-backdrop-filter:blur(var(--blur-sm));backdrop-filter:blur(var(--blur-sm));border:1px solid var(--glass-border);border-radius:var(--radius-sm);color:var(--text-muted);font-size:.8rem;font-weight:600;cursor:pointer;box-shadow:var(--inset-top);transition:background .18s ease,border-color .18s ease,box-shadow .25s ease,transform .15s ease,color .15s ease}.btn-secondary:hover{transform:translateY(-1px);border-color:var(--glass-highlight);color:var(--primary-dark);box-shadow:var(--shadow),var(--inset-top)}.btn-secondary:active{transform:translateY(0);box-shadow:var(--inset-top)}.btn-secondary:focus-visible{outline:none;box-shadow:var(--ring),var(--inset-top)}.chat-messages{flex:1;overflow-y:auto;padding:1rem;display:flex;flex-direction:column;gap:1rem;background:var(--surface-strong)}.chat-welcome{text-align:center;padding:3rem 1.5rem;color:var(--text-muted);max-width:46rem;margin-inline:auto}.chat-welcome .chip-row{justify-content:center}.chat-welcome h3{display:inline-flex;align-items:center;gap:.5rem;font-size:1.3rem;color:var(--text);margin-bottom:.5rem}.chat-welcome h3 .app-icon,.chat-welcome h3 svg{color:var(--accent)}.chat-welcome-hint{margin-top:1rem;font-size:.85rem;font-style:italic}.chat-message{display:flex;gap:.75rem;width:100%;max-width:46rem;margin-inline:auto;animation:msg-in .25s ease-out both}@keyframes msg-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.user-message{flex-direction:row-reverse}.assistant-message{flex-direction:row}.message-avatar{font-size:1.4rem;flex-shrink:0;width:36px;height:36px;display:flex;align-items:center;justify-content:center}.message-content{position:relative;max-width:100%}.assistant-message .message-content{flex:1;max-width:100%;padding:0}.user-message .message-content{max-width:85%;padding:.6rem 1rem;background:var(--primary);color:var(--text-on-violet);border-radius:var(--radius);box-shadow:0 4px 14px var(--primary-glow),var(--inset-top)}.message-role{font-size:.7rem;font-weight:700;text-transform:uppercase;color:var(--text-muted);margin-bottom:.25rem}.user-message .message-role{color:#ffffffeb;text-align:right}.message-text{font-size:.95rem;line-height:1.65;white-space:pre-wrap;word-break:break-word}.citation-link{display:inline;background:var(--surface-frost-tint);color:var(--primary-ink);border:1px solid var(--glass-border-soft);padding:1px 6px;border-radius:var(--radius-sm);text-decoration:none;font-size:.85rem;font-weight:600;transition:background .18s ease,color .15s ease,box-shadow .2s ease;cursor:pointer}.citation-link:hover{background:#6c5ce729;color:var(--primary-dark);text-decoration:underline}.citation-link:focus-visible{outline:none;box-shadow:var(--ring)}.message-sources{margin-top:.75rem;padding-top:.5rem;border-top:1px solid var(--glass-border-soft)}.message-sources summary{cursor:pointer;font-size:.8rem;color:var(--text-muted);font-weight:600}.message-sources ul{list-style:none;margin-top:.5rem;display:flex;flex-direction:column;gap:.35rem}.message-sources li{font-size:.8rem}.source-link{color:var(--primary-dark);text-decoration:none}.source-link:hover{text-decoration:underline}.source-score{color:var(--text-muted);font-size:.75rem}.chat-input-area{position:relative;padding:.75rem 1rem;border-top:1px solid var(--glass-border);background:var(--surface-alt);-webkit-backdrop-filter:blur(var(--blur)) saturate(var(--sat));backdrop-filter:blur(var(--blur)) saturate(var(--sat));box-shadow:var(--inset-top);flex-shrink:0}.chat-input-inner{display:flex;gap:.5rem;width:100%;max-width:46rem;margin:0 auto}.chat-input-area textarea{flex:1;resize:none;padding:.65rem 1rem;background:var(--surface-strong);-webkit-backdrop-filter:blur(var(--blur));backdrop-filter:blur(var(--blur));border:1px solid rgba(108,92,231,.3);border-radius:var(--radius-sm);color:var(--text);font-size:.95rem;font-family:inherit;outline:none;transition:border-color .18s ease,box-shadow .25s ease;line-height:1.5}.chat-input-area textarea:focus{border-color:var(--primary);box-shadow:var(--ring)}.btn-send{width:48px;height:48px;background:var(--primary);color:var(--text-on-violet);border:1px solid var(--primary);border-radius:var(--radius-sm);font-size:1.3rem;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 14px var(--primary-glow),var(--inset-top);transition:background .2s ease,box-shadow .25s ease,transform .15s ease;flex-shrink:0}.btn-send:hover:not(:disabled){background:var(--primary-dark);transform:translateY(-1px);box-shadow:0 4px 16px var(--accent-glow),var(--inset-top)}.btn-send:focus-visible{outline:none;box-shadow:var(--ring),0 4px 14px var(--primary-glow)}.btn-send:disabled{opacity:.5;cursor:not-allowed}.typing-indicator{display:flex;gap:4px;padding:4px 0}.typing-indicator span{width:8px;height:8px;border-radius:50%;background:var(--primary);animation:typing 1.4s infinite ease-in-out}.typing-indicator span:nth-child(2){animation-delay:.2s}.typing-indicator span:nth-child(3){animation-delay:.4s}@keyframes typing{0%,60%,to{transform:translateY(0);opacity:.4}30%{transform:translateY(-6px);opacity:1}}.book-pane-toolbar{display:flex;align-items:center;padding:.5rem 1rem;border-bottom:1px solid var(--glass-border-soft);background:var(--surface-solid);flex-shrink:0}.btn-back-catalog{background:var(--surface-alt);-webkit-backdrop-filter:blur(var(--blur-sm));backdrop-filter:blur(var(--blur-sm));border:1px solid var(--glass-border);color:var(--primary-dark);padding:.35rem .75rem;border-radius:var(--radius-sm);font-size:.85rem;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:6px;box-shadow:var(--inset-top);transition:background .18s ease,border-color .18s ease,color .15s ease,box-shadow .25s ease,transform .15s ease}.btn-back-catalog:hover{transform:translateY(-1px);background:var(--primary);color:var(--text-on-violet);border-color:var(--primary);box-shadow:0 4px 14px var(--primary-glow),var(--inset-top)}.btn-back-catalog:focus-visible{outline:none;box-shadow:var(--ring),var(--inset-top)}.book-catalog{flex:1;overflow-y:auto;padding:2rem;background:transparent}.catalog-header{text-align:center;margin-bottom:2rem;background:var(--surface-strong);-webkit-backdrop-filter:blur(var(--blur)) saturate(var(--sat));backdrop-filter:blur(var(--blur)) saturate(var(--sat));border:1px solid var(--glass-border);border-radius:var(--radius);box-shadow:var(--shadow),var(--inset-top);padding:1.5rem 1.75rem;max-width:700px;margin-left:auto;margin-right:auto}.catalog-header h2{font-size:1.75rem;color:var(--text);margin-bottom:.5rem}.catalog-subtitle{color:var(--text-muted);font-size:.95rem;max-width:500px;margin:0 auto}.catalog-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:1rem;color:var(--text-muted)}.catalog-spinner{width:40px;height:40px;border:3px solid var(--glass-border-soft);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.catalog-books{display:flex;flex-direction:column;gap:1.5rem;max-width:700px;margin:0 auto}.catalog-book{position:relative;background:var(--surface-strong);-webkit-backdrop-filter:blur(var(--blur)) saturate(var(--sat));backdrop-filter:blur(var(--blur)) saturate(var(--sat));border:1px solid var(--glass-border);border-radius:var(--radius);box-shadow:var(--shadow),var(--inset-top),inset 0 -1px #6c5ce70d;overflow:hidden;transition:box-shadow .25s ease,transform .2s ease}.catalog-book:before{content:"";position:absolute;inset:0 0 auto 0;height:1px;border-radius:inherit;pointer-events:none;z-index:1;background:linear-gradient(90deg,transparent,var(--glass-highlight) 18%,var(--glass-highlight) 82%,transparent)}.catalog-book:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}.catalog-book-header{padding:1.25rem 1.5rem;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .2s ease}.catalog-book-header:hover{background:var(--surface-frost-tint)}.catalog-book-info h3{font-size:1.15rem;color:var(--text);display:flex;align-items:center;gap:.5rem}.catalog-expand-icon{font-size:.9rem;color:var(--primary);width:1rem;display:inline-flex;align-items:center;justify-content:center;transition:transform .2s ease,color .15s ease}.catalog-book-desc{margin-top:.5rem;font-size:.875rem;color:var(--text-muted);line-height:1.5}.catalog-book-stats{display:inline-block;margin-top:.5rem;font-size:.75rem;font-weight:600;color:var(--primary-ink);background:var(--surface-frost-tint);border:1px solid var(--glass-border-soft);padding:.2rem .6rem;border-radius:var(--radius-pill)}.catalog-chapters{border-top:1px solid var(--glass-border-soft);padding:1rem 1.5rem 1.5rem}.catalog-section{margin-bottom:1rem}.catalog-section:last-child{margin-bottom:0}.catalog-section-title{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:.5rem;padding-bottom:.25rem;border-bottom:1px solid var(--glass-border-soft)}.catalog-chapter-list{list-style:none;display:flex;flex-direction:column;gap:2px}.catalog-chapter-link{display:flex;align-items:center;gap:.5rem;width:100%;padding:.4rem .75rem;background:none;border:none;border-radius:var(--radius-sm);text-align:left;font-size:.85rem;color:var(--text);cursor:pointer;transition:background .15s ease,color .15s ease;line-height:1.4}.catalog-chapter-link:hover{background:var(--surface-frost-tint);color:var(--primary-ink)}.catalog-chapter-link:focus-visible{outline:none;box-shadow:var(--ring)}.catalog-chapter-icon{flex-shrink:0;font-size:.9rem;color:var(--primary-dark)}.tutor-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;padding:8px 16px;background:var(--surface-alt);-webkit-backdrop-filter:blur(var(--blur-sm)) saturate(var(--sat));backdrop-filter:blur(var(--blur-sm)) saturate(var(--sat));border-bottom:1px solid var(--glass-border-soft)}.toolbar-label{font-size:12px;color:var(--text-muted);margin-right:4px}.mode-group,.action-group{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.mode-btn{background:var(--surface-alt);-webkit-backdrop-filter:blur(var(--blur-sm));backdrop-filter:blur(var(--blur-sm));border:1px solid var(--glass-border);color:var(--text-muted);border-radius:var(--radius-pill);padding:4px 12px;font-size:12px;font-weight:600;cursor:pointer;box-shadow:var(--inset-top);transition:background .18s ease,border-color .18s ease,color .15s ease,box-shadow .25s ease,transform .15s ease}.mode-btn:hover{transform:translateY(-1px);border-color:var(--glass-highlight);color:var(--primary-ink);box-shadow:var(--shadow),var(--inset-top)}.mode-btn:focus-visible{outline:none;box-shadow:var(--ring),var(--inset-top)}.mode-btn.active{background:var(--primary);border-color:var(--primary);color:var(--text-on-violet);box-shadow:0 4px 14px var(--primary-glow),var(--inset-top)}.mode-btn.active:hover{background:var(--primary-dark);color:var(--text-on-violet)}.action-btn{background:var(--surface-alt);-webkit-backdrop-filter:blur(var(--blur-sm));backdrop-filter:blur(var(--blur-sm));border:1px solid var(--glass-border);color:var(--text);border-radius:var(--radius-sm);padding:5px 10px;font-size:12px;font-weight:600;cursor:pointer;box-shadow:var(--inset-top);transition:background .18s ease,border-color .18s ease,color .15s ease,box-shadow .25s ease,transform .15s ease}.action-btn:hover:not(:disabled){transform:translateY(-1px);border-color:var(--primary);color:var(--primary-dark);background:var(--surface-frost-tint);box-shadow:var(--shadow),var(--inset-top)}.action-btn:focus-visible{outline:none;box-shadow:var(--ring),var(--inset-top)}.action-btn:disabled{opacity:.5;cursor:not-allowed}.action-btn .app-icon,.action-btn svg{color:var(--primary-dark)}.chip-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.chip{background:var(--surface-frost-tint);-webkit-backdrop-filter:blur(var(--blur-sm));backdrop-filter:blur(var(--blur-sm));border:1px solid var(--glass-border-soft);color:var(--primary-ink);border-radius:var(--radius-pill);padding:6px 14px;font-size:13px;cursor:pointer;text-align:left;box-shadow:var(--inset-top);transition:background .18s ease,color .15s ease,border-color .18s ease,transform .15s ease,box-shadow .25s ease}.chip:hover{transform:translateY(-1px);background:var(--primary);color:var(--text-on-violet);border-color:var(--primary);box-shadow:0 4px 14px var(--primary-glow),var(--inset-top)}.chip:focus-visible{outline:none;box-shadow:var(--ring)}.chip-sm{font-size:12px;padding:4px 10px}.message-action-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.stream-caret{display:inline-block;margin-left:1px;color:var(--accent);animation:blink 1s steps(2,start) infinite}@keyframes blink{to{visibility:hidden}}.message-widget{margin-top:12px}.widget{position:relative;background:var(--surface-strong);-webkit-backdrop-filter:blur(var(--blur)) saturate(var(--sat));backdrop-filter:blur(var(--blur)) saturate(var(--sat));border:1px solid var(--glass-border);border-radius:var(--radius);box-shadow:var(--shadow),var(--inset-top),inset 0 -1px #6c5ce70d;padding:14px 16px;margin-top:8px}.widget:before{content:"";position:absolute;inset:0 0 auto 0;height:1px;border-radius:inherit;pointer-events:none;background:linear-gradient(90deg,transparent,var(--glass-highlight) 18%,var(--glass-highlight) 82%,transparent)}.widget-label{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--primary-ink);margin-bottom:10px}.widget-sub{font-size:12px;color:var(--text-muted)}.widget-actions-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px}.widget-cite{margin-top:10px;font-size:12px;color:var(--text-muted)}.quiz-question{padding:10px 0;border-top:1px solid var(--glass-border-soft)}.quiz-question:first-of-type{border-top:none}.quiz-q-text{font-weight:600;margin-bottom:8px}.quiz-options{display:flex;flex-direction:column;gap:6px}.quiz-option{display:flex;align-items:center;gap:8px;padding:8px 10px;background:var(--surface-alt);-webkit-backdrop-filter:blur(var(--blur-sm));backdrop-filter:blur(var(--blur-sm));border:1px solid var(--glass-border);border-radius:var(--radius-sm);color:var(--text);cursor:pointer;box-shadow:var(--inset-top);transition:background .18s ease,border-color .18s ease,color .15s ease,transform .15s ease}.quiz-option:hover{transform:translateY(-1px);border-color:var(--primary-light)}.quiz-option:focus-within{outline:none;box-shadow:var(--ring)}.quiz-option.selected{border-color:var(--primary);background:var(--surface-frost-tint)}.quiz-option.correct{border-color:var(--success);background:#00b8941f;color:var(--success-ink)}.quiz-option.correct:before{content:"✓";font-weight:700;color:var(--success-ink)}.quiz-option.wrong{border-color:var(--danger);background:#d630311a;color:var(--danger-ink)}.quiz-option.wrong:before{content:"✕";font-weight:700;color:var(--danger-ink)}.quiz-option input{accent-color:var(--primary)}.quiz-explanation{margin-top:8px;font-size:13px;color:var(--text-muted);background:var(--surface-alt);border-left:3px solid var(--primary-light);padding:8px 10px;border-radius:0 var(--radius-sm) var(--radius-sm) 0}.quiz-submit{margin-top:12px}.btn-primary{background:var(--primary);color:var(--text-on-violet);border:1px solid var(--primary);border-radius:var(--radius-sm);padding:9px 16px;font-weight:600;cursor:pointer;box-shadow:0 4px 14px var(--primary-glow),var(--inset-top);transition:background .2s ease,box-shadow .25s ease,transform .15s ease}.btn-primary:hover:not(:disabled){background:var(--primary-dark);transform:translateY(-1px)}.btn-primary:focus-visible{outline:none;box-shadow:var(--ring),0 4px 14px var(--primary-glow)}.btn-primary:disabled{opacity:.55;cursor:not-allowed}.widget-quiz-result{display:flex;align-items:center;gap:16px}.score-ring{flex:0 0 auto;width:64px;height:64px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;color:var(--text-on-violet);background:var(--primary);box-shadow:0 4px 14px var(--primary-glow),var(--inset-top);animation:ring-in .4s ease-out both}@keyframes ring-in{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.tone-good .score-ring{background:var(--success);box-shadow:0 4px 14px #00b89459,var(--inset-top)}.tone-ok .score-ring{background:var(--warn);color:var(--text);box-shadow:0 4px 14px var(--accent-glow),var(--inset-top)}.tone-low .score-ring{background:var(--danger);box-shadow:0 4px 14px #d6303159,var(--inset-top)}.score-detail{flex:1}.bar{margin-top:6px;height:8px;background:var(--glass-border-soft);border-radius:var(--radius-pill);overflow:hidden}.bar-fill{height:100%;background:var(--primary);border-radius:var(--radius-pill);animation:bar-grow .4s ease-out both;transform-origin:left center}@keyframes bar-grow{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.flashcard{perspective:1000px;cursor:pointer;height:140px}.flashcard-inner{position:relative;width:100%;height:100%;transition:transform .5s;transform-style:preserve-3d}.flashcard.flipped .flashcard-inner{transform:rotateY(180deg)}.flashcard-face{position:absolute;top:0;right:0;bottom:0;left:0;backface-visibility:hidden;display:flex;align-items:center;justify-content:center;text-align:center;padding:16px;border-radius:var(--radius);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(var(--blur)) saturate(var(--sat));backdrop-filter:blur(var(--blur)) saturate(var(--sat));box-shadow:var(--shadow),var(--inset-top)}.flashcard-front{background:var(--surface-strong);color:var(--text);font-weight:600}.flashcard-back{background:var(--surface-frost-tint);color:var(--text);transform:rotateY(180deg);font-size:14px}.flashcard-nav{display:flex;align-items:center;justify-content:space-between;margin-top:10px}.flashcard-count{font-size:12px;color:var(--text-muted)}.summary-overview{margin:0 0 8px;font-size:14px}.summary-points{margin:0;padding-left:20px}.summary-points li{margin:4px 0;font-size:14px}.path-module{border-top:1px solid var(--glass-border-soft);padding:8px 0}.path-module:first-of-type{border-top:none}.path-module>summary{cursor:pointer;font-weight:600;list-style:none}.path-count{font-weight:400;color:var(--text-muted);font-size:12px}.path-desc{font-size:12px;color:var(--text-muted);margin:6px 0}.path-lessons{margin:6px 0 0;padding-left:22px}.path-lessons li{margin:2px 0}.path-lesson{border:none;background:none;color:var(--primary-dark);cursor:pointer;padding:2px 0;font-size:13px;text-align:left}.path-lesson:hover{text-decoration:underline}.progress-stats{display:flex;gap:12px;margin-bottom:12px}.stat{position:relative;flex:1;background:var(--surface-alt);-webkit-backdrop-filter:blur(var(--blur-sm)) saturate(var(--sat));backdrop-filter:blur(var(--blur-sm)) saturate(var(--sat));border:1px solid var(--glass-border);border-radius:var(--radius-sm);padding:10px;text-align:center;box-shadow:var(--inset-top)}.stat-num{font-size:22px;font-weight:700;color:var(--primary-ink);font-variant-numeric:tabular-nums}.stat-cap{font-size:11px;color:var(--text-muted)}.progress-topic-row{display:flex;align-items:center;gap:10px;padding:4px 0}.pt-name{flex:0 0 40%;font-size:13px;text-transform:capitalize;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pt-bar{position:relative;flex:1;height:16px;background:var(--glass-border-soft);border-radius:var(--radius-pill);overflow:hidden;display:flex;align-items:center}.pt-fill{height:100%;background:var(--success);border-radius:var(--radius-pill);animation:bar-grow .4s ease-out both;transform-origin:left center}.pt-fill.weak{background:var(--warn)}.pt-pct{position:absolute;right:8px;font-size:11px;font-weight:600;color:var(--text)}.pt-unquizzed{flex:1;font-size:12px;color:var(--text-muted)}.progress-note{margin:12px 0 0;font-size:14px;background:var(--surface-frost-tint);border-radius:var(--radius-sm);padding:10px 12px}.message-text .md-p{margin:0 0 8px}.message-text .md-p:last-child{margin-bottom:0}.message-text .md-h{margin:10px 0 6px;font-weight:700;line-height:1.3}.message-text .md-ul,.message-text .md-ol{margin:4px 0 8px;padding-left:22px}.message-text .md-ul li,.message-text .md-ol li{margin:2px 0}.message-text code{background:var(--surface-alt);border:1px solid var(--glass-border-soft);border-radius:4px;padding:1px 5px;font-size:.88em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.app-icon{object-fit:contain;vertical-align:middle;flex:0 0 auto}.action-btn,.widget-label,.chip,.catalog-header h2,.btn-secondary,.message-sources summary{display:inline-flex;align-items:center;gap:6px}.widget-label .app-icon{margin-top:-1px}.header-logo{height:30px;width:auto;object-fit:contain;display:block}.login-logo{width:240px;height:auto;max-width:80%;object-fit:contain;margin:0 auto 6px;display:block}.path-intro{margin:0 0 10px;font-size:14px}.path-steps{list-style:decimal}.path-steps>li{margin:8px 0}.path-lesson-book{color:var(--text-muted);font-weight:400;font-size:12px}.path-why{font-size:12px;color:var(--text-muted);margin:2px 0 0 2px}.monk-avatar{width:36px;height:36px;border-radius:50%;object-fit:cover;display:block;border:1px solid var(--glass-highlight);box-shadow:0 2px 8px var(--primary-glow)}@supports not ((backdrop-filter: blur(2px)) or (-webkit-backdrop-filter: blur(2px))){:root{--surface: rgba(255, 255, 255, .94);--surface-strong: rgba(255, 255, 255, .97);--surface-alt: rgba(255, 255, 255, .9);--surface-frost-tint: rgba(243, 241, 254, .95)}.chat-page:before,.login-page:before{animation:none}}@media (prefers-reduced-motion: reduce){.chat-page:before,.login-page:before{animation:none}*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}.flashcard-inner{transition:none}}:root{--shell-ease: cubic-bezier(.22, 1, .36, 1);--shell-dur: .34s}.app-shell{position:relative;z-index:1;display:flex;flex:1;height:100%;width:100%;min-width:0;overflow:hidden}.sessions-sidebar,.chat-pane,.library-rail{transition:flex-basis var(--shell-dur) var(--shell-ease);min-width:0}.chat-pane{flex:1 1 0;min-width:320px;display:flex;flex-direction:column;background:var(--surface);-webkit-backdrop-filter:blur(var(--blur-strong)) saturate(var(--sat));backdrop-filter:blur(var(--blur-strong)) saturate(var(--sat));border-left:1px solid var(--glass-border);border-right:1px solid var(--glass-border);box-shadow:var(--inset-top);overflow:hidden}.chat-messages{min-height:0}.sessions-sidebar{flex:0 0 264px;display:flex;flex-direction:column;background:var(--surface-strong);-webkit-backdrop-filter:blur(var(--blur-strong)) saturate(var(--sat));backdrop-filter:blur(var(--blur-strong)) saturate(var(--sat));box-shadow:var(--inset-top);overflow:hidden}.sessions-header{display:flex;flex-direction:column;gap:8px;padding:.7rem .7rem .65rem;border-bottom:1px solid var(--glass-border-soft);flex-shrink:0}.sessions-header-row{display:flex;align-items:center;gap:8px}.btn-sidebar-toggle{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:1px solid var(--glass-border);border-radius:var(--radius-sm);background:var(--surface-alt);color:var(--text-muted);cursor:pointer;box-shadow:var(--inset-top);transition:color .15s ease,background .15s ease}.btn-sidebar-toggle:hover{color:var(--primary-ink);background:var(--surface-frost-tint)}.btn-sidebar-toggle:focus-visible{outline:none;box-shadow:var(--ring)}.sessions-title{font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);flex:1}.btn-new-chat{display:inline-flex;align-items:center;justify-content:center;gap:6px;width:100%;padding:.5rem .7rem;background:var(--primary);color:var(--text-on-violet);border:1px solid var(--primary);border-radius:var(--radius-sm);font-size:.8rem;font-weight:600;cursor:pointer;box-shadow:0 4px 14px var(--primary-glow),var(--inset-top);transition:background .2s ease,transform .15s ease,box-shadow .25s ease}.btn-new-chat:hover{background:var(--primary-dark);transform:translateY(-1px)}.btn-new-chat:focus-visible{outline:none;box-shadow:var(--ring),0 4px 14px var(--primary-glow)}.sessions-sidebar.collapsed{flex-basis:54px}.sessions-sidebar.collapsed .sessions-title,.sessions-sidebar.collapsed .sessions-list,.sessions-sidebar.collapsed .btn-new-chat-label{display:none}.sessions-sidebar.collapsed .sessions-header{padding:.6rem .3rem;align-items:center}.sessions-sidebar.collapsed .sessions-header-row{justify-content:center}.sessions-sidebar.collapsed .btn-new-chat{padding:.5rem}.sessions-header-row{justify-content:space-between}.sidebar-logo{width:126px;height:auto;max-width:100%;object-fit:contain;display:block}.sidebar-header-spacer{flex:0 0 auto;width:30px;height:1px}.sessions-sidebar.collapsed .sidebar-header-spacer{display:none}.sessions-footer{flex-shrink:0;padding:.6rem .7rem;border-top:1px solid var(--glass-border-soft)}.btn-sidebar-logout{display:inline-flex;align-items:center;gap:8px;width:100%;padding:.5rem .7rem;border:1px solid var(--glass-border);border-radius:var(--radius-sm);background:var(--surface-alt);color:var(--text-muted);font-size:.85rem;font-weight:600;cursor:pointer;box-shadow:var(--inset-top);transition:color .15s ease,background .15s ease,transform .15s ease}.btn-sidebar-logout:hover{color:var(--danger-ink);transform:translateY(-1px)}.btn-sidebar-logout:focus-visible{outline:none;box-shadow:var(--ring)}.sessions-sidebar.collapsed .sidebar-logo,.sessions-sidebar.collapsed .sidebar-logout-label{display:none}.sessions-sidebar.collapsed .sessions-footer{padding:.5rem .25rem}.sessions-sidebar.collapsed .btn-sidebar-logout{justify-content:center;padding:.45rem}.sidebar-modes{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}.sidebar-section-label{font-size:.7rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted)}.sessions-sidebar.collapsed .sidebar-modes,.chat-topbar{display:none}.chat-actions-bar{padding:0 1rem .7rem;background:var(--surface-alt);-webkit-backdrop-filter:blur(var(--blur)) saturate(var(--sat));backdrop-filter:blur(var(--blur)) saturate(var(--sat));flex-shrink:0}.chat-actions-inner{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;width:100%;max-width:46rem;margin:0 auto}.sessions-list{flex:1;overflow-y:auto;padding:.5rem;display:flex;flex-direction:column;gap:2px}.sessions-empty{padding:1rem .75rem;font-size:.8rem;color:var(--text-muted);text-align:center}.session-item{position:relative;display:flex;align-items:center;gap:.4rem;width:100%;padding:.5rem .55rem;border:1px solid transparent;border-radius:var(--radius-sm);background:none;color:var(--text);font-size:.85rem;text-align:left;cursor:pointer;line-height:1.35;transition:background .15s ease,color .15s ease,border-color .15s ease}.session-item:hover{background:var(--surface-frost-tint)}.session-item:focus-visible{outline:none;box-shadow:var(--ring)}.session-item.is-active{background:var(--surface-frost-tint);border-color:var(--glass-border-soft);color:var(--primary-ink);font-weight:600;box-shadow:inset 3px 0 0 var(--primary)}.session-icon{flex-shrink:0;color:var(--text-muted);display:inline-flex}.session-item.is-active .session-icon{color:var(--primary-ink)}.session-title{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-affordances{display:inline-flex;gap:1px;opacity:0;transition:opacity .15s ease}.session-item:hover .session-affordances,.session-item:focus-within .session-affordances,.session-item.is-active .session-affordances{opacity:1}.btn-session-rename,.btn-session-delete{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border:none;border-radius:6px;background:none;color:var(--text-muted);cursor:pointer;transition:background .15s ease,color .15s ease}.btn-session-rename:hover{background:var(--surface-strong);color:var(--primary-ink)}.btn-session-delete:hover{background:#d630311f;color:var(--danger-ink)}.btn-session-rename:focus-visible,.btn-session-delete:focus-visible{outline:none;box-shadow:var(--ring)}.session-rename-input{flex:1;font:inherit;padding:2px 6px;background:var(--surface-solid);border:1px solid var(--primary-light);border-radius:6px;color:var(--text);outline:none}.session-rename-input:focus{box-shadow:var(--ring)}.library-rail{flex:0 0 50px;position:relative;display:flex;flex-direction:column;background:var(--surface-strong);-webkit-backdrop-filter:blur(var(--blur)) saturate(var(--sat));backdrop-filter:blur(var(--blur)) saturate(var(--sat));box-shadow:var(--inset-top);overflow:hidden}.rail-topbar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:.55rem .7rem;border-bottom:1px solid var(--glass-border-soft);flex-shrink:0}.rail-logo{height:24px;width:auto;object-fit:contain;display:block}.btn-rail-logout{display:inline-flex;align-items:center;gap:6px;padding:.4rem .7rem;border:1px solid var(--glass-border);border-radius:var(--radius-sm);background:var(--surface-alt);color:var(--text-muted);font-size:.8rem;font-weight:600;cursor:pointer;box-shadow:var(--inset-top);transition:color .15s ease,background .15s ease,transform .15s ease}.btn-rail-logout:hover{color:var(--danger-ink);transform:translateY(-1px)}.btn-rail-logout:focus-visible{outline:none;box-shadow:var(--ring)}.library-rail.collapsed .rail-topbar{flex-direction:column;padding:.5rem .25rem;gap:6px;justify-content:center}.library-rail.collapsed .rail-logo,.library-rail.collapsed .rail-logout-label{display:none}.library-rail.collapsed .btn-rail-logout{padding:.45rem}.rail-handle{display:flex;flex-direction:column;align-items:center;gap:12px;width:100%;flex:1;padding:16px 0;border:none;background:transparent;color:var(--primary-ink);cursor:pointer;transition:background .18s ease,box-shadow .18s ease}.rail-label{writing-mode:vertical-rl;text-orientation:mixed;transform:rotate(180deg);font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--primary-ink)}.library-rail.collapsed .rail-handle:hover,.library-rail.collapsed .rail-handle:focus-visible{background:var(--surface-frost-tint);box-shadow:inset 3px 0 0 var(--primary),-8px 0 24px -8px var(--primary-glow);outline:none}.library-rail.collapsed .rail-panel{display:none}.library-rail.expanded{flex:0 1 clamp(420px,60%,980px);max-width:980px;min-width:0}.library-rail.expanded .rail-handle{display:none}.rail-panel{display:flex;flex-direction:column;flex:1;width:100%;min-width:0;min-height:0}.rail-panel-header{display:flex;align-items:center;gap:8px;padding:.5rem .7rem;border-bottom:1px solid var(--glass-border-soft);background:var(--surface-alt);-webkit-backdrop-filter:blur(var(--blur)) saturate(var(--sat));backdrop-filter:blur(var(--blur)) saturate(var(--sat));box-shadow:var(--inset-top);flex-shrink:0}.btn-rail-collapse{display:inline-flex;align-items:center;gap:6px;padding:.4rem .7rem;border:1px solid var(--glass-border);border-radius:var(--radius-sm);background:var(--surface-alt);color:var(--primary-ink);font-size:.8rem;font-weight:600;cursor:pointer;box-shadow:var(--inset-top);transition:background .18s ease,color .15s ease,transform .15s ease}.btn-rail-collapse:hover{transform:translateY(-1px);border-color:var(--glass-highlight)}.btn-rail-collapse:focus-visible{outline:none;box-shadow:var(--ring),var(--inset-top)}.rail-panel-body{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.rail-panel-body .book-catalog{flex:1;min-height:0}.rail-panel-body iframe{width:100%;flex:1;background:var(--surface-solid);border:none;box-shadow:inset 0 0 0 1px var(--glass-border-soft),var(--shadow)}.btn-hamburger{display:none}.sidebar-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:39;background:#1f223352;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}@media (max-width: 768px){.btn-hamburger{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;margin-right:6px;border:1px solid var(--glass-border);border-radius:var(--radius-sm);background:var(--surface-alt);color:var(--primary-ink);cursor:pointer;box-shadow:var(--inset-top)}.sessions-sidebar{position:fixed;inset:0 auto 0 0;z-index:40;flex-basis:min(284px,84vw);width:min(284px,84vw);transform:translate(-100%);transition:transform var(--shell-dur) var(--shell-ease);box-shadow:var(--shadow-lg)}.sessions-sidebar.drawer-open{transform:translate(0)}.btn-sidebar-toggle{display:none}.sessions-sidebar.collapsed{flex-basis:min(284px,84vw)}.sessions-sidebar.collapsed .sessions-list{display:flex}.sessions-sidebar.collapsed .btn-new-chat-label,.sessions-sidebar.collapsed .sidebar-logout-label{display:inline}.sessions-sidebar.collapsed .sidebar-logo{display:block}.sessions-sidebar.collapsed .sidebar-modes{display:flex}.sessions-sidebar.collapsed .btn-new-chat{padding:.5rem .7rem}.chat-topbar{display:flex;align-items:center;padding:.5rem .75rem;border-bottom:1px solid var(--glass-border-soft);background:var(--surface-alt);flex-shrink:0}.chat-pane{min-width:0;border-left:none;border-right:none}.library-rail{flex-basis:44px}.library-rail.expanded{position:fixed;top:0;right:0;bottom:0;left:0;z-index:45;flex-basis:100%;max-width:100%}}@media (prefers-reduced-motion: reduce){.sessions-sidebar,.chat-pane,.library-rail{transition:none!important}}
