:root{--font:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--paper:#f9f9f9;--surface:#fff;--surface-2:#f9f9f9;--ink:#181d27;--ink-2:#414651;--ink-3:#535862;--muted:#717680;--placeholder:#a4a7ae;--line:#e9eaeb;--line-strong:#d5d7da;--accent:#6841c6;--accent-hover:#7b55d9;--accent-active:#5730b8;--accent-ink:#6941c6;--accent-soft:#f9f5ff;--accent-ring:#6841c633;--success:#079455;--success-soft:#ecfdf3;--warn:#b54708;--warn-soft:#fffaeb;--danger:#d92d20;--danger-soft:#fef3f2;--blue:#175cd3;--blue-soft:#eff8ff;--radius-sm:6px;--radius:8px;--radius-md:12px;--radius-lg:20px;--shadow-xs:0 1px 2px #00000008;--control-h:44px}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#0b1220;--surface:#0b1220;--surface-2:#101826;--ink:#e5e7eb;--ink-2:#c2c7d0;--ink-3:#9aa3af;--muted:#9aa3af;--placeholder:#8b93a3;--line:#1f2530;--line-strong:#2f3541;--accent:#6841c6;--accent-hover:#7b55d9;--accent-active:#5730b8;--accent-ink:#9e8cf2;--accent-soft:#1a1330;--success:#34d399;--success-soft:#073b2a;--warn:#fbbf24;--warn-soft:#3a2c16;--danger:#f87171;--danger-soft:#3b0a0a;--blue:#60a5fa;--blue-soft:#0b2942;--shadow-xs:none}}:root[data-theme=dark]{--paper:#0b1220;--surface:#0b1220;--surface-2:#101826;--ink:#e5e7eb;--ink-2:#c2c7d0;--ink-3:#9aa3af;--muted:#9aa3af;--placeholder:#8b93a3;--line:#1f2530;--line-strong:#2f3541;--accent:#6841c6;--accent-hover:#7b55d9;--accent-active:#5730b8;--accent-ink:#9e8cf2;--accent-soft:#1a1330;--success:#34d399;--success-soft:#073b2a;--warn:#fbbf24;--warn-soft:#3a2c16;--danger:#f87171;--danger-soft:#3b0a0a;--blue:#60a5fa;--blue-soft:#0b2942;--shadow-xs:none}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--paper);color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.5}button,input,textarea{font:inherit;color:inherit}h1,h2,h3{letter-spacing:-.01em;margin:0;font-weight:600}.muted{color:var(--muted)}.small{font-size:13px}.tiny{font-size:12px}.ellipsis{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.pad{padding:8px 12px}.centered{place-items:center;height:100%;display:grid}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn{height:var(--control-h);border:1px solid var(--line-strong);background:var(--surface);border-radius:var(--radius);cursor:pointer;justify-content:center;align-items:center;gap:8px;padding:0 16px;font-size:14px;font-weight:600;transition:background .2s,border-color .2s,color .2s;display:inline-flex}.btn:hover{background:var(--surface-2)}.btn:disabled{opacity:.5;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn.primary:active:not(:disabled){background:var(--accent-active)}.btn.ghost{color:var(--ink-2);background:0 0;border-color:#0000}.btn.ghost:hover{background:var(--surface-2)}.btn.block{width:100%}.btn.sm{height:36px;padding:0 12px;font-size:13px}.icon-btn{cursor:pointer;border-radius:var(--radius-sm);color:var(--muted);background:0 0;border:0;align-items:center;padding:6px 8px;display:inline-flex}.icon-btn:hover{background:var(--surface-2);color:var(--ink-2)}.chip{border:1px solid var(--line-strong);background:var(--surface);cursor:pointer;height:28px;color:var(--muted);border-radius:999px;padding:0 12px;font-size:12px;font-weight:600}.chip.active{background:var(--accent-soft);color:var(--accent-ink);border-color:#0000}.lang-row{gap:6px;display:flex}.field{color:var(--ink-2);gap:6px;font-size:14px;font-weight:500;display:grid}.field input{height:var(--control-h);border:1px solid var(--line-strong);background:var(--surface);border-radius:var(--radius);color:var(--ink);padding:0 14px;font-size:14px;transition:border-color .2s,box-shadow .2s}.field input::placeholder{color:var(--placeholder)}.field input:hover{border-color:var(--accent)}.field input:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-ring);outline:none}.error-text{color:var(--danger);font-size:13px}.brand{align-items:center;gap:10px;min-width:0;display:flex}.brand-name{color:var(--ink);font-size:16px;font-weight:700;line-height:1.3}.brand-sub{color:var(--muted);font-size:12px}.school-logo{border-radius:var(--radius-sm);flex:none;display:block}.auth-wrap{min-height:100%;display:flex}.auth-left{background:var(--surface);flex:1;justify-content:center;align-items:center;padding:40px;display:flex}.auth-form{flex-direction:column;gap:16px;width:100%;max-width:360px;display:flex}.auth-mobile-brand{align-items:center;gap:10px;margin-bottom:8px;font-size:18px;font-weight:700;display:none}.auth-title{color:var(--ink);font-size:28px;font-weight:700;line-height:1.2}.auth-subtitle{color:var(--muted);margin:-8px 0 8px;font-size:14px}.password-wrap{align-items:center;display:flex;position:relative}.password-wrap input{width:100%;padding-right:42px}.eye-btn{cursor:pointer;color:var(--muted);background:0 0;border:0;border-radius:4px;align-items:center;padding:4px;display:flex;position:absolute;right:10px}.eye-btn:hover{color:var(--ink)}.auth-options{color:var(--ink-2);justify-content:space-between;align-items:center;gap:12px;font-size:13px;display:flex}.checkbox{cursor:pointer;align-items:center;gap:6px;display:flex}.checkbox input{accent-color:var(--accent);width:15px;height:15px}.error-box{background:var(--danger-soft);color:var(--danger);border:1px solid var(--danger);border-radius:var(--radius-sm);text-align:center;padding:10px;font-size:14px}.auth-right{color:#fff;text-align:center;background:#6c2bd9;flex-direction:column;flex:1;justify-content:center;align-items:center;padding:40px;display:flex;position:relative}.auth-brand{justify-items:center;gap:8px;display:grid}.auth-brand .school-logo{border-radius:16px;margin-bottom:8px}.auth-brand h2{color:#fff;font-size:24px;font-weight:600}.auth-brand p{opacity:.9;margin:0;font-size:14px}.auth-tagline{max-width:360px;opacity:.8!important}.lang-switch{gap:8px;display:flex;position:absolute;top:20px;right:20px}.lang-btn{border-radius:var(--radius);color:#fff;cursor:pointer;background:#ffffff26;border:0;padding:5px 9px;font-size:13px;font-weight:500;transition:all .2s}.lang-btn:hover{background:#ffffff4d}.lang-btn.active{color:#6c2bd9;background:#fff;font-weight:600}@media (width<=768px){.auth-wrap{flex-direction:column}.auth-left{flex:none;min-height:100vh;padding:28px 20px}.auth-right{display:none}.auth-mobile-brand{display:flex}}.layout{grid-template-columns:292px 1fr;height:100%;display:grid}.sidebar{background:var(--surface);border-right:1px solid var(--line);flex-direction:column;gap:20px;min-height:0;padding:20px 16px;display:flex}.section-title{color:var(--muted);padding:0 4px;font-size:12px;font-weight:700;line-height:1.5}.conv-list{scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;flex-direction:column;flex:1;gap:2px;min-height:80px;display:flex;overflow-y:auto}.conv-list::-webkit-scrollbar{width:6px}.conv-list::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:3px}.conv-item{border-radius:var(--radius-sm);align-items:center;transition:background .2s;display:flex}.conv-item:hover{background:var(--surface-2)}.conv-item.active{background:var(--accent-soft)}.conv-item.active .conv-open{color:var(--accent-ink)}.conv-open{text-align:left;cursor:pointer;border-radius:var(--radius-sm);min-width:0;height:40px;color:var(--ink-2);background:0 0;border:0;flex:1;align-items:center;gap:8px;padding:8px 12px;font-size:14px;font-weight:600;display:flex}.conv-open .ellipsis{flex:1}.conv-item .icon-btn{opacity:0}.conv-item:hover .icon-btn,.conv-item.active .icon-btn{opacity:1}.integration{border-radius:var(--radius);text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:10px;width:100%;min-height:48px;padding:6px 10px;display:flex}.integration:hover{background:var(--surface-2)}.integration-icon{border-radius:var(--radius-sm);background:var(--surface-2);flex:none;place-items:center;width:32px;height:32px;font-size:15px;display:grid}.integration-icon.lg{border-radius:var(--radius);width:44px;height:44px;font-size:22px}.integration.planned .integration-icon{opacity:.55}.integration-body{flex:1;min-width:0;line-height:1.3;display:grid}.integration-name{color:var(--ink);font-size:14px;font-weight:600}.integration.planned .integration-name{color:var(--muted)}.integration-detail{color:var(--muted);font-size:11.5px}.status-pill{white-space:nowrap;border-radius:999px;flex:none;padding:2px 8px;font-size:11px;font-weight:600}.status-pill.connected{background:var(--success-soft);color:var(--success)}.status-pill.demo{background:var(--blue-soft);color:var(--blue)}.status-pill.planned{background:var(--surface-2);color:var(--muted);border:1px solid var(--line)}.sidebar-footer{gap:12px;display:grid}.profile-card{border-radius:var(--radius);background:var(--surface-2);align-items:center;gap:10px;padding:12px;display:flex}.avatar{background:var(--line);width:40px;height:40px;color:var(--ink-3);border-radius:50%;flex:none;place-items:center;font-weight:700;display:grid}.profile-name{color:var(--ink);font-size:14px;font-weight:600}.profile-sub{color:var(--muted);font-size:12px}.profile-card .icon-btn{margin-left:auto}.footer-row{justify-content:space-between;align-items:center;gap:8px;display:flex}.main{flex-direction:column;min-width:0;min-height:0;display:flex}.topbar{background:var(--surface);border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:16px 20px;display:flex}.topbar h1{font-size:24px;line-height:1.33}.topbar .brand-sub{font-size:14px}.menu-btn{font-size:20px;display:none}.backdrop{display:none}.role-badge{background:var(--success);color:#fff;border-radius:999px;padding:4px 8px;font-size:12px;font-weight:600}.topbar-actions{align-items:center;gap:10px;margin-left:auto;display:flex}.btn.active{border-color:var(--accent);color:var(--accent-ink);background:var(--accent-soft)}.count-badge{background:var(--accent);color:#fff;border-radius:999px;place-items:center;min-width:20px;height:20px;padding:0 6px;font-size:11px;font-weight:700;display:inline-grid}.count-badge.neutral{background:var(--surface-2);color:var(--ink-2);border:1px solid var(--line)}.menu{position:relative}.dropdown{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);z-index:30;gap:2px;width:380px;max-height:60vh;padding:8px;display:grid;position:absolute;top:calc(100% + 8px);right:0;overflow-y:auto;box-shadow:0 8px 24px #0000001f}.dropdown-title{color:var(--muted);padding:6px 10px 8px;font-size:12px;font-weight:700}.dropdown-item{text-align:left;border-radius:var(--radius);cursor:pointer;background:0 0;border:0;align-items:center;gap:10px;width:100%;min-height:48px;padding:8px 10px;display:flex}.dropdown-item:hover{background:var(--surface-2)}.dropdown-body{flex:1;min-width:0;line-height:1.3;display:grid}.dropdown-name{color:var(--ink);font-size:14px;font-weight:600}.dropdown-sub{color:var(--muted);font-size:12px}.dot-status{background:var(--line-strong);border-radius:50%;flex:none;width:8px;height:8px}.dot-status.success{background:var(--success)}.dot-status.error{background:var(--danger)}.dot-status.running{background:var(--accent);animation:1.2s ease-in-out infinite pulse}.dot-status.paused{background:var(--warn)}.modal-backdrop{z-index:40;background:#0b122073;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.modal-card.narrow{width:min(520px,100%)}.card-section{flex-wrap:wrap;align-items:center;gap:10px;padding:0 24px 14px;display:flex}.provides{columns:2;color:var(--ink-2);margin:0;padding-left:18px;font-size:14px}.provides li{break-inside:avoid;margin:2px 0}.modal-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);flex-direction:column;width:min(1040px,100%);max-height:calc(100vh - 48px);display:flex;overflow:hidden;box-shadow:0 20px 60px #00000040}.modal-head{align-items:flex-start;gap:12px;padding:20px 24px 12px;display:flex}.modal-head h2{font-size:20px;line-height:1.3}.modal-head code{font-family:var(--mono);background:var(--surface-2);border-radius:4px;padding:1px 6px;font-size:12px}.job-meta{grid-template-columns:repeat(3,auto) 1fr;align-items:end;gap:24px;padding:0 24px 12px;font-size:14px;display:grid}.meta-label{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:2px;font-size:11.5px;font-weight:600}.switch{color:var(--ink-2);cursor:pointer;justify-self:end;align-items:center;gap:8px;font-size:13px;font-weight:600;display:flex}.switch input{appearance:none;background:var(--line-strong);cursor:pointer;border-radius:999px;width:36px;height:20px;transition:background .2s;position:relative}.switch input:after{content:"";background:#fff;border-radius:50%;width:16px;height:16px;transition:left .2s;position:absolute;top:2px;left:2px}.switch input:checked{background:var(--accent)}.switch input:checked:after{left:18px}.job-prompt{padding:0 24px 12px}.job-actions{border-bottom:1px solid var(--line);gap:8px;padding:0 24px 16px;display:flex}.job-body{flex:1;grid-template-columns:240px 1fr;min-height:0;display:grid}.run-list{border-right:1px solid var(--line);align-content:start;gap:4px;padding:16px;display:grid;overflow-y:auto}.run-item{text-align:left;border-radius:var(--radius-sm);cursor:pointer;color:var(--ink-2);background:0 0;border:0;align-items:center;gap:8px;padding:8px 10px;font-size:13px;display:flex}.run-item:hover{background:var(--surface-2)}.run-item.active{background:var(--accent-soft);color:var(--accent-ink);font-weight:600}.report{align-content:start;gap:12px;min-width:0;padding:16px 24px 24px;display:grid;overflow-y:auto}.report-head{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.report-body{font-size:14px}.status-pill.error{background:var(--danger-soft);color:var(--danger)}@media (width<=960px){.job-body{grid-template-columns:1fr}.run-list{border-right:0;border-bottom:1px solid var(--line);max-height:160px}.job-meta{grid-template-columns:1fr 1fr}.dropdown{width:min(380px,100vw - 24px)}}.chip-status{gap:8px}.chip-status.good{background:var(--success-soft);color:var(--success);border-color:#0000}.chip-status.bad{background:var(--danger-soft);color:var(--danger);border-color:#0000}.dot-status.idle{background:var(--line-strong)}.banner{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;padding:10px 20px;font-size:14px;display:flex}.banner.warn{background:var(--warn-soft);color:var(--warn)}.banner.info{background:var(--blue-soft);color:var(--blue)}.status-grid{grid-template-columns:1fr 1fr;gap:12px 24px;font-size:14px;display:grid}.tabs{border-bottom:1px solid var(--line);gap:4px;padding:0 24px 12px;display:flex}.tab{border-radius:var(--radius);color:var(--muted);cursor:pointer;background:0 0;border:0;padding:8px 12px;font-size:13px;font-weight:600}.tab.active{background:var(--accent-soft);color:var(--accent-ink)}.card-section.column{gap:12px;padding-top:14px;display:grid}.card-section.column>*{min-width:0}.field select{height:var(--control-h);border:1px solid var(--line-strong);background:var(--surface);border-radius:var(--radius);color:var(--ink);padding:0 12px;font-size:14px}.ok-text{color:var(--success);font-size:13px}a.btn{text-decoration:none}.kpi-strip{background:var(--paper);border-bottom:1px solid var(--line);grid-template-columns:repeat(5,minmax(0,1fr));gap:16px;padding:16px 20px;display:grid}.kpi-strip.skeleton{min-height:120px}.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);min-width:0;min-height:104px;box-shadow:var(--shadow-xs);flex-direction:column;justify-content:space-between;padding:16px 20px;display:flex}.kpi h3{color:var(--ink-2);white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:500;overflow:hidden}.kpi-value{color:var(--ink);font-variant-numeric:tabular-nums;margin-top:8px;font-size:24px;font-weight:700;line-height:1.2}.kpi-sub{color:var(--muted);margin-top:4px;font-size:12px}.kpi.warn{background:var(--warn-soft);border-color:#0000}.kpi.warn .kpi-value,.kpi.warn h3{color:var(--warn)}.kpi.good .kpi-value{color:var(--success)}.thread{flex-direction:column;flex:1;gap:20px;padding:20px;display:flex;overflow-y:auto}.thread.empty{place-items:center;display:grid}.empty-state{text-align:center;gap:12px;max-width:680px;display:grid}.empty-state h2{font-size:24px;line-height:1.33}.suggestions{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:8px;display:flex}.suggestion{border:1px solid var(--line-strong);background:var(--surface);border-radius:var(--radius);cursor:pointer;color:var(--ink-2);text-align:left;padding:10px 14px;font-size:14px;font-weight:500;transition:all .2s}.suggestion:hover{border-color:var(--accent);color:var(--accent-ink);background:var(--accent-soft)}.msg{gap:6px;width:100%;max-width:840px;display:grid}.msg.user{justify-self:end;max-width:640px}.msg.assistant{justify-self:start}.msg-meta{color:var(--muted);align-items:baseline;gap:8px;padding:0 4px;font-size:12px;font-weight:600;display:flex}.msg.user .msg-meta{justify-content:flex-end}.bubble{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);min-width:0;box-shadow:var(--shadow-xs);padding:14px 18px}.msg.user .bubble{background:var(--accent);border-color:var(--accent);color:#fff}.user-text{white-space:pre-wrap;word-break:break-word}.msg-foot{font-family:var(--mono);gap:12px;padding:0 4px;display:flex}.tool-chips{flex-wrap:wrap;gap:6px;padding:0 2px;display:flex}.tool-chip{background:var(--surface-2);color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:4px 10px;font-size:12px;font-weight:600}.tool-chip.ok{background:var(--blue-soft);color:var(--blue);border-color:#0000}.tool-chip.fail{background:var(--danger-soft);color:var(--danger);border-color:#0000}.tool-chip.running{background:var(--accent-soft);color:var(--accent-ink);border-color:#0000;animation:1.2s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.45}}.thinking{align-items:center;gap:6px;display:flex}.dot{background:var(--accent);border-radius:50%;width:7px;height:7px;animation:1.1s ease-in-out infinite bounce}.dot:nth-child(2){animation-delay:.15s}.dot:nth-child(3){animation-delay:.3s}@keyframes bounce{0%,80%,to{opacity:.5;transform:translateY(0)}40%{opacity:1;transform:translateY(-4px)}}@media (prefers-reduced-motion:reduce){.dot,.tool-chip.running{animation:none}}.md{font-size:14px;overflow-x:auto}.md>:first-child{margin-top:0}.md>:last-child{margin-bottom:0}.md p{margin:0 0 8px}.md ul,.md ol{margin:4px 0 8px;padding-left:22px}.md li{margin:2px 0}.md table{border-collapse:separate;border-spacing:0;font-variant-numeric:tabular-nums;border:1px solid var(--line);border-radius:var(--radius);margin:8px 0 10px;font-size:13.5px;overflow:hidden}.md th,.md td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:8px 12px}.md tr:last-child td{border-bottom:0}.md th{background:var(--surface-2);color:var(--ink-3);font-size:12px;font-weight:600}.md code{font-family:var(--mono);background:var(--surface-2);border-radius:4px;padding:1px 5px;font-size:.9em}.md strong{font-weight:700}.composer{border-top:1px solid var(--line);background:var(--surface);align-items:flex-end;gap:10px;padding:16px 20px 20px;display:flex}.composer textarea{resize:none;min-height:var(--control-h);border:1px solid var(--line-strong);background:var(--surface);border-radius:var(--radius);max-height:160px;color:var(--ink);flex:1;padding:11px 14px;font-size:14px;line-height:1.45;transition:border-color .2s,box-shadow .2s}.composer textarea::placeholder{color:var(--placeholder)}.composer textarea:hover{border-color:var(--accent)}.composer textarea:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-ring);outline:none}@media (width<=960px){.layout{grid-template-columns:1fr}.sidebar{z-index:20;border-radius:0 var(--radius-md) var(--radius-md) 0;width:292px;transition:transform .25s;position:fixed;inset:0 auto 0 0;transform:translate(-100%)}.layout.sidebar-open .sidebar{transform:translate(0)}.layout.sidebar-open .backdrop{z-index:10;background:#00000059;display:block;position:fixed;inset:0}.menu-btn{display:inline-flex}.topbar h1{font-size:18px}.kpi-strip{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:12px}.kpi{min-height:88px;padding:12px 14px}.kpi:last-child{grid-column:span 2}.thread{padding:14px 12px}.composer{padding:10px 12px 14px}.msg.user{max-width:92%}}
