:root{
  --bg:#f7f8fb;--panel:#fff;--panel2:#f2f4f8;--text:#1f2937;--muted:#6b7280;--line:#e5e7eb;
  --brand:#5b5bd6;--brand2:#7777e9;--success:#22a06b;--shadow:0 18px 45px rgba(31,41,55,.08);
}
body.dark{--bg:#111318;--panel:#181b22;--panel2:#20242d;--text:#f3f4f6;--muted:#9ca3af;--line:#2d323d;--shadow:0 18px 45px rgba(0,0,0,.24)}
*{box-sizing:border-box}html,body{height:100%;margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--text)}
button,input,select,textarea{font:inherit}.app-shell{height:100%;display:grid;grid-template-columns:290px 1fr;overflow:hidden}.sidebar{background:var(--panel);border-right:1px solid var(--line);padding:20px 16px;display:flex;flex-direction:column;gap:18px;overflow:auto}.brand{display:flex;align-items:center;gap:11px}.brand-mark{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:linear-gradient(135deg,var(--brand),#9090ff);color:#fff;font-weight:800;font-size:20px;box-shadow:0 8px 20px rgba(91,91,214,.25)}.brand strong{display:block;font-size:17px}.brand span{display:block;font-size:11px;color:var(--muted);margin-top:2px}.new-chat,.primary{border:0;border-radius:12px;background:var(--brand);color:white;font-weight:700;padding:12px 14px;cursor:pointer}.new-chat:hover,.primary:hover{background:var(--brand2)}.selector-card{border:1px solid var(--line);border-radius:16px;padding:13px;background:var(--panel2)}label{font-size:11px;color:var(--muted);font-weight:800;text-transform:uppercase;letter-spacing:.05em;display:block;margin:3px 0 8px}label span{font-weight:500;text-transform:none;letter-spacing:0}.class-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:14px}.class-btn{border:1px solid var(--line);background:var(--panel);color:var(--text);border-radius:9px;padding:8px 0;cursor:pointer;font-weight:700}.class-btn.active{background:var(--brand);color:#fff;border-color:var(--brand)}select,input,.selector-card input{width:100%;border:1px solid var(--line);border-radius:9px;background:var(--panel);color:var(--text);padding:10px;outline:none;margin-bottom:13px}.side-section{display:grid;gap:5px}.side-heading{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:800;margin:2px 8px 5px}.side-btn{border:0;background:transparent;color:var(--text);padding:10px 9px;text-align:left;border-radius:9px;cursor:pointer}.side-btn:hover,.side-btn.active{background:var(--panel2);color:var(--brand);font-weight:700}.progress-card{margin-top:auto;border:1px solid var(--line);border-radius:14px;padding:13px}.progress-top,.xp-row{display:flex;justify-content:space-between;gap:10px;font-size:12px}.xp-row{margin-top:13px;color:var(--muted)}.xp-bar{height:6px;background:var(--panel2);border-radius:10px;overflow:hidden;margin-top:7px}.xp-bar i{display:block;height:100%;width:0;background:var(--brand);transition:.4s}.sidebar-foot{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:11px}.sidebar-foot button{border:0;background:transparent;color:var(--muted);margin-right:auto;cursor:pointer}.status-dot{width:7px;height:7px;border-radius:50%;background:#f59e0b}.status-dot.on{background:var(--success)}
.main{min-width:0;min-height:0;height:100%;display:grid;grid-template-rows:64px minmax(0,1fr) auto;background:var(--bg);overflow:hidden;position:relative}.topbar{display:flex;align-items:center;justify-content:space-between;padding:0 28px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--panel) 88%, transparent);backdrop-filter:blur(10px)}.mobile-menu{display:none}.context-pill{font-size:13px;color:var(--muted)}.context-pill b{margin-left:8px;background:#ececff;color:#5454c7;padding:5px 9px;border-radius:999px;font-size:11px}.top-actions{display:flex;align-items:center;gap:10px}.ghost{border:1px solid var(--line);background:var(--panel);color:var(--text);padding:9px 12px;border-radius:10px;cursor:pointer}.avatar{width:36px;height:36px;border:0;border-radius:50%;background:#252938;color:white;font-weight:800;cursor:pointer}.chat{min-height:0;overflow-y:auto;overflow-x:hidden;padding:34px 22px;overscroll-behavior:contain;scrollbar-gutter:stable} .chat::-webkit-scrollbar{width:10px}.chat::-webkit-scrollbar-track{background:transparent}.chat::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--muted) 35%,transparent);border-radius:999px;border:3px solid transparent;background-clip:padding-box}.chat::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--muted) 55%,transparent);border:3px solid transparent;background-clip:padding-box}.welcome{max-width:780px;margin:8vh auto 0;text-align:center}.spark{width:54px;height:54px;border-radius:18px;background:#ececff;color:var(--brand);display:grid;place-items:center;margin:0 auto 16px;font-size:25px}.welcome h1{font-size:32px;margin:0 0 9px;letter-spacing:-.03em}.welcome>p{color:var(--muted);max-width:610px;margin:0 auto;line-height:1.6}.starter-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:27px}.starter{border:1px solid var(--line);background:var(--panel);border-radius:14px;padding:15px;display:grid;grid-template-columns:38px 1fr;grid-template-rows:auto auto;text-align:left;cursor:pointer;box-shadow:0 5px 16px rgba(0,0,0,.02)}.starter:hover{border-color:#c8c8f7;transform:translateY(-1px)}.starter span{grid-row:1/3;font-size:22px}.starter b{font-size:13px}.starter small{color:var(--muted);margin-top:3px}.tip{font-size:11px;color:var(--muted);margin-top:18px}.messages{max-width:820px;margin:0 auto;display:grid;gap:22px}.msg{display:grid;grid-template-columns:34px minmax(0,1fr);gap:12px}.msg.user{grid-template-columns:minmax(0,1fr);justify-items:end}.msg.user .bubble{background:var(--brand);color:white;max-width:78%;border-radius:17px 17px 4px 17px;padding:12px 15px}.bot-icon{width:34px;height:34px;border-radius:11px;background:#ececff;color:var(--brand);display:grid;place-items:center;font-weight:900}.bubble{line-height:1.6;font-size:14px;min-width:0}.bubble h1,.bubble h2,.bubble h3{margin:.25em 0 .5em}.bubble h3{font-size:17px}.bubble p{margin:.5em 0}.bubble ul,.bubble ol{padding-left:20px}.bubble code{background:var(--panel2);padding:2px 5px;border-radius:5px}.message-tools{display:flex;gap:7px;margin-top:8px}.message-tools button{font-size:11px;border:1px solid var(--line);background:var(--panel);color:var(--muted);padding:5px 8px;border-radius:8px;cursor:pointer}.typing{display:flex;gap:5px;align-items:center;height:30px}.typing i{width:6px;height:6px;background:var(--muted);border-radius:50%;animation:bounce 1s infinite}.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}@keyframes bounce{0%,60%,100%{transform:translateY(0)}30%{transform:translateY(-5px)}}
.scroll-latest{position:absolute;right:28px;bottom:112px;z-index:5;width:38px;height:38px;border-radius:50%;border:1px solid var(--line);background:var(--panel);color:var(--text);box-shadow:var(--shadow);cursor:pointer;display:none;place-items:center;font-size:18px}.scroll-latest.show{display:grid}.scroll-latest:hover{color:var(--brand);border-color:#c9c9f4}
.composer-wrap{padding:8px 22px 14px;background:linear-gradient(180deg,transparent,var(--bg) 30%)}.tool-chips{max-width:820px;margin:0 auto 8px;display:flex;gap:6px;overflow:auto}.chip{white-space:nowrap;border:1px solid var(--line);background:var(--panel);color:var(--muted);font-size:11px;padding:7px 9px;border-radius:999px;cursor:pointer}.chip:hover{color:var(--brand);border-color:#c9c9f4}.composer{max-width:820px;margin:0 auto;background:var(--panel);border:1px solid var(--line);border-radius:17px;box-shadow:var(--shadow);display:flex;align-items:flex-end;padding:8px 8px 8px 14px}.composer textarea{resize:none;border:0;outline:none;background:transparent;color:var(--text);width:100%;max-height:150px;line-height:1.5;padding:6px 2px}.composer-actions{display:flex;align-items:center;gap:6px}.icon-btn,.send{width:36px;height:36px;border-radius:11px;border:0;cursor:pointer}.icon-btn{background:transparent}.send{background:var(--brand);color:white;font-size:18px}.disclaimer{text-align:center;color:var(--muted);font-size:9px;margin-top:7px}
.dialog{border:0;background:transparent;padding:0}.dialog::backdrop{background:rgba(10,13,20,.55);backdrop-filter:blur(3px)}.dialog-card{position:relative;width:min(560px,calc(100vw - 28px));max-height:85vh;overflow:auto;background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:20px;padding:24px;box-shadow:0 30px 80px rgba(0,0,0,.24)}.close{position:absolute;right:14px;top:12px;border:0;background:transparent;color:var(--muted);font-size:25px;cursor:pointer}.visual-card textarea{width:100%;border:1px solid var(--line);background:var(--panel2);color:var(--text);border-radius:12px;padding:12px;resize:vertical;margin:10px 0}.visual-output{margin-top:15px;min-height:250px;border:1px dashed var(--line);border-radius:14px;background:var(--panel2);display:grid;place-items:center;text-align:center;overflow:hidden;color:var(--muted)}.visual-output span{font-size:35px;display:block}.visual-output img{width:100%;display:block}.quiz-q{font-size:21px;font-weight:800;margin:20px 0}.quiz-option{width:100%;border:1px solid var(--line);background:var(--panel2);color:var(--text);border-radius:12px;text-align:left;padding:12px;margin:5px 0;cursor:pointer}.quiz-option:hover{border-color:#bbbbed}.quiz-score{text-align:center;padding:25px 0}.quiz-score .big{font-size:52px;font-weight:900;color:var(--brand)}
@media(max-width:850px){.app-shell{grid-template-columns:1fr}.sidebar{position:fixed;z-index:20;left:0;top:0;bottom:0;width:290px;transform:translateX(-105%);transition:.25s;box-shadow:var(--shadow)}.sidebar.open{transform:translateX(0)}.mobile-menu{display:block;border:0;background:transparent;color:var(--text);font-size:20px}.topbar{padding:0 15px}.ghost{display:none}.chat{padding:22px 14px}.composer-wrap{padding:7px 12px 10px}.scroll-latest{right:16px;bottom:105px}.welcome{margin-top:4vh}.welcome h1{font-size:27px}}
@media(max-width:560px){.starter-grid{grid-template-columns:1fr}.welcome h1{font-size:24px}.msg.user .bubble{max-width:90%}.context-pill{font-size:11px}}

/* Interactive controls added in the controls-fix build */
.send.stop{background:#ef4444;color:#fff;font-size:15px}.send.stop:hover{background:#dc2626}.send.stopping{opacity:.7;cursor:wait}.stopped-note{margin-top:9px;color:var(--muted);font-size:11px;font-style:italic}.quiz-loading{padding:28px 4px 18px;text-align:center}.quiz-loading .quiz-spinner{width:34px;height:34px;border:3px solid var(--line);border-top-color:var(--brand);border-radius:50%;margin:0 auto 14px;animation:spin .8s linear infinite}.quiz-loading h2{margin:0 0 8px}.quiz-loading p{margin:0;color:var(--muted);line-height:1.5}.quiz-context{color:var(--muted);font-size:12px;margin:0 32px 8px 0}.quiz-progress{color:var(--muted);font-size:12px}.quiz-feedback{margin-top:14px;border:1px solid var(--line);background:var(--panel2);border-radius:12px;padding:12px;line-height:1.5}.quiz-feedback.correct{border-color:color-mix(in srgb,var(--success) 42%,var(--line))}.quiz-feedback.wrong{border-color:color-mix(in srgb,#ef4444 42%,var(--line))}.quiz-feedback .primary{margin-top:10px;padding:9px 13px}.quiz-option.correct{border-color:var(--success);background:color-mix(in srgb,var(--success) 10%,var(--panel2))}.quiz-option.wrong{border-color:#ef4444;background:color-mix(in srgb,#ef4444 8%,var(--panel2))}.quiz-option:disabled{cursor:default;opacity:.92}.quiz-error{text-align:center;padding:24px 4px}.quiz-error p{color:var(--muted);line-height:1.5}.profile-card{width:min(620px,calc(100vw - 28px))}.profile-head{display:flex;align-items:center;gap:14px;margin-bottom:22px;padding-right:35px}.profile-head h2{margin:0 0 4px}.profile-head p{margin:0;color:var(--muted);font-size:12px;line-height:1.5}.profile-avatar{width:54px;height:54px;flex:0 0 54px;border-radius:16px;display:grid;place-items:center;background:var(--brand);color:#fff;font-size:19px;font-weight:900}.profile-card>input{width:100%;border:1px solid var(--line);border-radius:10px;background:var(--panel2);color:var(--text);padding:11px;margin:0 0 16px;outline:none}.profile-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:4px 0 18px}.profile-stats>div{border:1px solid var(--line);border-radius:12px;background:var(--panel2);padding:12px}.profile-stats span{display:block;color:var(--muted);font-size:11px;margin-bottom:5px}.profile-stats strong{font-size:14px}.profile-save{width:100%}.profile-note{min-height:18px;text-align:center;color:var(--success);font-size:11px;margin-top:7px}@keyframes spin{to{transform:rotate(360deg)}}
@media(max-width:560px){.profile-stats{grid-template-columns:1fr}}

.verified-pill{display:inline-flex;align-items:center;margin-left:8px;padding:3px 8px;border-radius:999px;font-size:11px;font-weight:700;background:rgba(46,160,67,.12);color:#247b39;vertical-align:middle}
body.dark .verified-pill{background:rgba(73,194,96,.15);color:#70d683}


/* Math typesetting (KaTeX) */
.bubble .katex {
  font-size: 1.06em;
}
.bubble .katex-display {
  margin: .75rem 0;
  padding: .35rem .1rem;
  overflow-x: auto;
  overflow-y: hidden;
  max-width: 100%;
}
.bubble .katex-display > .katex {
  white-space: nowrap;
}
.bubble hr {
  border: 0;
  border-top: 1px solid var(--border, #e4e7ec);
  margin: 1rem 0;
}
.bubble h4 {
  margin: 1rem 0 .45rem;
  font-size: 1rem;
}
