:root{--canvas: #f4f3ef;--canvas-deep: #eceae4;--workspace: #faf9f6;--surface: #ffffff;--surface-muted: #f7f6f3;--surface-raised: #ffffff;--ink: #202427;--ink-soft: #4a4f55;--ink-muted: #747a80;--ink-faint: #9ca1a6;--line: #dfddd7;--line-soft: #ebe9e3;--line-strong: #cbc8bf;--brand: #202427;--brand-hover: #34393e;--brand-soft: #efeee9;--mint: #557064;--mint-soft: #edf3ec;--sand: #8b7547;--danger: #b42318;--success: #16735f;--shadow-low: 0 1px 2px rgba(32, 36, 39, .04);--shadow-panel: 0 10px 30px rgba(32, 36, 39, .06);--shadow-shell: 0 24px 60px rgba(32, 36, 39, .08);--radius-xs: 4px;--radius-sm: 7px;--radius-md: 10px;--radius-lg: 16px;--ease: cubic-bezier(.16, 1, .3, 1);--sidebar-width: 308px;font-synthesis:none}*{box-sizing:border-box}html{background:var(--canvas);scroll-behavior:smooth}body,html{margin:0;padding:0;min-height:100%;color:var(--ink);font-family:IBM Plex Sans,Segoe UI Variable,Segoe UI,system-ui,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{background:var(--canvas)}button{border:0;touch-action:manipulation}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid rgba(32,36,39,.16);outline-offset:2px}@keyframes rise-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse-dot{0%,to{opacity:.35;transform:translateY(0)}50%{opacity:1;transform:translateY(-3px)}}@keyframes soft-float{0%,to{transform:translateZ(0)}50%{transform:translate3d(0,-8px,0)}}.login-shell{min-height:100dvh;display:grid;place-items:center;padding:28px;background:var(--canvas)}.login-card{width:min(100%,920px);display:grid;grid-template-columns:minmax(320px,.8fr) minmax(320px,1.2fr);border:1px solid rgba(184,195,212,.78);border-radius:12px;background:#fff;box-shadow:var(--shadow-shell);overflow:hidden;animation:rise-in .32s var(--ease) both}.login-panel{padding:34px;background:#fff}.login-visual{position:relative;min-height:460px;display:grid;align-content:end;padding:34px;border-left:1px solid var(--line);background:var(--surface-muted);overflow:hidden}.login-visual img{position:absolute;width:760px;max-width:none;right:-250px;top:52px;opacity:.72;filter:none}.login-visual-copy{position:relative;display:grid;gap:8px;padding:18px;border:1px solid rgba(216,224,236,.9);border-radius:var(--radius-md);background:#fff}.login-visual-copy span{color:var(--mint);font-size:12px;font-weight:800;text-transform:uppercase}.login-visual-copy strong{max-width:280px;color:var(--ink);font-size:20px;line-height:1.2}.login-brand,.brand-lockup{display:flex;align-items:center;gap:12px}.login-brand{margin-bottom:36px}.brand-mark{width:40px;height:40px;display:grid;place-items:center;border-radius:10px;background:#152238;box-shadow:none;overflow:hidden}.brand-mark img{width:100%;height:100%;display:block}.brand-name{color:var(--ink);font-size:14px;font-weight:700;line-height:1.1}.brand-meta{margin-top:3px;color:var(--ink-muted);font-size:12px;font-weight:600}.login-panel h1{max-width:330px;margin:0 0 28px;color:var(--ink);font-size:28px;font-weight:700;line-height:1.12;text-wrap:balance}.login-panel label{display:grid;gap:8px;margin-bottom:16px}.login-panel span{color:var(--ink-soft);font-size:13px;font-weight:750}.login-panel input{width:100%;height:46px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);padding:0 13px;background:#fff;color:var(--ink);transition:border-color .17s var(--ease),box-shadow .17s var(--ease)}.login-panel input:focus{border-color:var(--brand);box-shadow:inset 0 -2px 0 var(--brand)}.login-error,.error-msg{color:var(--danger);font-size:13px;font-weight:650}.login-error{margin:2px 0 16px}.login-submit{width:100%;height:46px;border-radius:var(--radius-sm);background:var(--brand);color:#fff;font-size:14px;font-weight:700;cursor:pointer;box-shadow:none;transition:background .17s var(--ease),transform .17s var(--ease),box-shadow .17s var(--ease)}.login-submit:hover:not(:disabled){background:var(--brand-hover);transform:translateY(-1px)}.login-submit:active:not(:disabled){transform:translateY(0)}.login-submit:disabled{opacity:.55;cursor:not-allowed}.app-container{position:relative;display:grid;grid-template-columns:var(--sidebar-width) minmax(0,1fr);height:100dvh;background:var(--canvas);overflow:hidden}.sidebar,.main-area{position:relative;z-index:1}.sidebar{min-width:0;display:flex;flex-direction:column;gap:18px;padding:18px 16px;border-right:1px solid var(--line);background:#faf9f6;overflow-y:auto}.sidebar-brand{padding:2px 4px 18px;border-bottom:1px solid var(--line-soft)}.brand-lockup{min-height:44px}.new-chat-btn,.tool-item,.card-btn,.input-icon-btn,.send-btn,.nav-btn,.icon-btn,.remove-file{cursor:pointer;transition:background .17s var(--ease),border-color .17s var(--ease),color .17s var(--ease),transform .17s var(--ease),box-shadow .17s var(--ease)}.new-chat-btn{width:100%;min-height:42px;display:flex;align-items:center;justify-content:center;gap:9px;border-radius:var(--radius-sm);background:var(--brand);color:#fff;font-size:14px;font-weight:700;box-shadow:none}.new-chat-btn:hover{background:var(--brand-hover);transform:translateY(-1px)}.new-chat-btn:active,.tool-item:active,.card-btn:active,.nav-btn:active,.input-icon-btn:active,.send-btn:active,.remove-file:active{transform:scale(.985)}.sidebar-section{display:grid;gap:8px}.section-label,.card-header{color:var(--ink-muted);font-size:11px;font-weight:700;text-transform:uppercase}.chats-list,.tools-list{display:grid;gap:4px}.chat-item,.tool-item{min-height:38px;display:flex;align-items:center;gap:8px;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--ink-soft)}.chat-item{padding:0 7px 0 10px}.tool-item{width:100%;justify-content:flex-start;padding:0 10px;font-size:13px;font-weight:700}.chat-item:hover,.tool-item:hover{background:#fff;color:var(--ink)}.chat-item.active{border-color:var(--line-strong);background:var(--brand-soft);color:var(--ink);box-shadow:var(--shadow-low)}.chat-name-wrapper{min-width:0;flex:1}.chat-name{display:block;overflow:hidden;color:inherit;font-size:13px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.chat-actions{display:flex;gap:3px;opacity:0;transform:translate(4px);transition:opacity .17s var(--ease),transform .17s var(--ease)}.chat-item:hover .chat-actions,.chat-item.active .chat-actions{opacity:1;transform:translate(0)}.icon-btn{width:28px;height:28px;display:grid;place-items:center;border:1px solid transparent;border-radius:var(--radius-xs);background:transparent;color:var(--ink-muted);padding:0}.icon-btn:hover{border-color:var(--line);background:#fff;color:var(--ink)}.icon-btn.delete:hover{color:var(--danger)}.chat-rename-input{width:100%;min-width:0;height:30px;border:1px solid var(--brand);border-radius:var(--radius-xs);padding:0 8px;background:#fff;color:var(--ink)}.rubric-card{margin-top:auto;display:grid;gap:10px;padding-top:16px;border-top:1px solid var(--line-soft)}.card-content{display:grid;gap:9px}.rubric-file{overflow:hidden;color:var(--ink-soft);font-size:13px;line-height:1.4;text-overflow:ellipsis;white-space:nowrap}.card-btn{width:100%;height:34px;border:1px solid var(--line);border-radius:var(--radius-sm);background:#fff;color:var(--ink);font-size:13px;font-weight:750}.card-btn:hover{border-color:var(--line-strong);background:var(--surface-muted)}.card-upload{display:block}.card-upload input{display:none}.upload-placeholder{min-height:118px;display:grid;place-items:center;gap:8px;border:1px dashed var(--line-strong);border-radius:var(--radius-md);background:#fff;color:var(--ink-muted);font-size:13px;font-weight:700;transition:background .17s var(--ease),border-color .17s var(--ease),color .17s var(--ease)}.card-upload:hover .upload-placeholder{border-color:var(--brand);background:var(--brand-soft);color:var(--ink)}.main-area{min-width:0;min-height:0;display:grid;grid-template-rows:66px minmax(0,1fr);overflow:hidden}.top-nav{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 26px;border-bottom:1px solid rgba(216,224,236,.9);background:#faf9f6}.nav-title{min-width:0;margin:0;overflow:hidden;color:var(--ink);font-size:16px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.nav-actions{display:flex;align-items:center;gap:8px}.nav-btn{min-width:40px;height:40px;display:grid;place-items:center;border:1px solid var(--line);border-radius:var(--radius-sm);background:#fff;color:var(--ink-soft);padding:0 10px}.nav-btn:hover{border-color:var(--line-strong);background:#fff;color:var(--ink);box-shadow:var(--shadow-low)}.nav-btn.text-btn{width:auto;padding:0 14px;font-size:13px;font-weight:700}.chat-area{min-height:0;display:grid;grid-template-rows:minmax(0,1fr) auto;overflow:hidden}.messages-wrapper{height:100%;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-gutter:stable;padding:24px clamp(18px,4vw,48px);scroll-padding-bottom:28px}.messages-list{width:min(100%,1120px);min-width:0;margin:0 auto;display:grid;gap:24px;padding-bottom:14px}.conversation-item{min-width:0;display:grid;gap:12px;animation:rise-in .23s var(--ease) both}.prompt-row{min-width:0;display:grid;grid-template-columns:106px minmax(0,1fr);gap:14px;align-items:start}.message-meta{padding-top:10px;color:var(--ink-muted);font-family:IBM Plex Mono,ui-monospace,monospace;font-size:11px;line-height:1.4}.message-meta span{display:block;color:var(--ink-soft);font-family:IBM Plex Sans,system-ui,sans-serif;font-weight:700}.message-meta time{color:var(--ink-faint)}.message{min-width:0;max-width:100%;overflow:hidden;border:1px solid var(--line);border-radius:var(--radius-md);line-height:1.58;overflow-wrap:anywhere;word-break:break-word}.message p{margin:0}.user-msg{justify-self:start;width:min(100%,800px);padding:13px 15px;background:#fff;color:var(--ink);box-shadow:var(--shadow-low)}.msg-label{color:var(--ink-soft);font-weight:800}.response-panel{position:relative;min-width:0;width:100%;overflow:hidden;border:1px solid var(--line);border-left:3px solid var(--brand);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-panel)}.response-panel:before{display:none}.response-header,.response-body,.loading-copy{position:relative}.response-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 18px;border-bottom:1px solid var(--line-soft);background:#fff}.response-kicker{margin-bottom:3px;color:var(--brand);font-size:11px;font-weight:700;text-transform:uppercase}.response-header h2{margin:0;color:var(--ink);font-size:16px;font-weight:700}.model-chip{flex:0 0 auto;max-width:190px;overflow:hidden;border:1px solid var(--line);border-radius:999px;padding:6px 10px;background:var(--brand-soft);color:var(--ink-soft);font-family:IBM Plex Mono,ui-monospace,monospace;font-size:11px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.response-body{min-width:0;padding:18px}.loading-panel .response-header{border-bottom:0}.loading-copy{margin:0;padding:0 20px 20px;color:var(--ink-muted);font-size:14px}.thinking-indicator{display:flex;gap:5px}.thinking-indicator span{width:7px;height:7px;border-radius:50%;background:var(--brand);animation:pulse-dot .9s var(--ease) infinite}.thinking-indicator span:nth-child(2){animation-delay:.12s}.thinking-indicator span:nth-child(3){animation-delay:.24s}.markdown-content{max-width:100%;color:var(--ink);font-size:14px;line-height:1.66;overflow-wrap:anywhere;word-break:break-word}.markdown-content>*:last-child{margin-bottom:0}.markdown-content h1,.markdown-content h2,.markdown-content h3{margin:24px 0 10px;color:var(--ink);line-height:1.22;font-weight:800;text-wrap:balance}.markdown-content h1:first-child,.markdown-content h2:first-child,.markdown-content h3:first-child{margin-top:0}.markdown-content p,.markdown-content ul,.markdown-content ol{margin:0 0 14px}.markdown-content ul,.markdown-content ol{padding-left:22px}.markdown-content li+li{margin-top:5px}.markdown-content strong{color:var(--ink);font-weight:800}.markdown-content pre{max-width:100%;overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius-md);padding:12px;background:var(--surface-muted)}.markdown-content code{font-family:IBM Plex Mono,ui-monospace,monospace;white-space:pre-wrap}.markdown-content table{display:block;max-width:100%;margin:0 0 16px;overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius-md);border-spacing:0;border-collapse:separate;background:#fff;font-size:13px;white-space:normal;box-shadow:var(--shadow-low)}.markdown-content th,.markdown-content td{min-width:128px;padding:11px 12px;border-right:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);text-align:left;vertical-align:top}.markdown-content th{background:#eef2f8;color:var(--ink);font-weight:800}.markdown-content td{color:var(--ink-soft)}.markdown-content tr:last-child td{border-bottom:0}.markdown-content th:last-child,.markdown-content td:last-child{border-right:0}.msg-attachment,.msg-attachment-preview{margin-top:10px}.msg-attachment{color:var(--ink-muted);font-size:12px;font-weight:650}.attachment-thumbnail,.preview-thumbnail{display:block;max-width:240px;max-height:150px;border:1px solid var(--line);border-radius:var(--radius-md);object-fit:cover}.welcome-state{width:min(100%,880px);margin:5vh auto 0;padding:0 4px 32px;animation:rise-in .28s var(--ease) both}.welcome-asset{width:min(100%,420px);margin-bottom:22px;border:1px solid var(--line);border-radius:12px;box-shadow:none;overflow:hidden}.welcome-asset img{display:block;width:100%}.welcome-title{max-width:620px;color:var(--ink);font-size:38px;font-weight:700;line-height:1.12;text-wrap:balance}.welcome-subtitle{margin-top:16px;max-width:540px;color:var(--ink-soft);font-size:15px;line-height:1.6}.chat-input-area{border-top:1px solid var(--line);background:#faf9f6;box-shadow:none;padding:14px clamp(18px,4vw,56px) 18px}.chat-input-area>*{width:min(100%,1120px);margin-left:auto;margin-right:auto}.error-msg{margin-bottom:10px}.file-preview-list{display:grid;gap:8px;margin-bottom:10px}.file-preview{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:var(--radius-md);background:#fff;box-shadow:none}.file-preview-image{flex:0 0 auto}.file-preview-info{min-width:0;flex:1;display:flex;align-items:center;justify-content:space-between;gap:12px}.file-preview-name{overflow:hidden;color:var(--ink-soft);font-size:13px;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.remove-file{width:28px;height:28px;display:grid;place-items:center;border:1px solid var(--line);border-radius:var(--radius-xs);background:#fff;color:var(--ink-muted);padding:0;font-weight:800}.remove-file:hover{border-color:#ffd5d2;background:#fff1f0;color:var(--danger)}.student-name-row{margin-bottom:10px}.student-name-input,.message-input{width:100%;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:#fff;color:var(--ink);color-scheme:light;transition:border-color .17s var(--ease),box-shadow .17s var(--ease)}.student-name-input{height:40px;padding:0 12px}.student-name-input:focus,.message-input:focus{border-color:var(--brand);box-shadow:inset 0 -2px 0 var(--brand)}.input-form{display:grid;grid-template-columns:46px minmax(0,1fr) 46px;align-items:center;gap:10px}.input-icon-btn,.send-btn{width:46px;height:46px;display:grid;place-items:center;border-radius:var(--radius-sm);padding:0}.input-icon-btn{border:1px solid var(--line);background:#fff;color:var(--ink-soft)}.input-icon-btn:hover{border-color:var(--line-strong);background:var(--surface-muted);color:var(--ink)}.message-input{height:46px;padding:0 14px;font-size:15px}.message-input::placeholder,.login-panel input::placeholder{color:var(--ink-faint)}.send-btn{background:var(--brand);color:#fff;box-shadow:none}.send-btn:hover:not(:disabled){background:var(--brand-hover);transform:translateY(-1px)}.send-btn:disabled,.input-icon-btn:disabled,.student-name-input:disabled,.message-input:disabled{opacity:.48;cursor:not-allowed}.messages-wrapper::-webkit-scrollbar,.sidebar::-webkit-scrollbar,.markdown-content table::-webkit-scrollbar,.markdown-content pre::-webkit-scrollbar{width:10px;height:10px}.messages-wrapper::-webkit-scrollbar-track,.sidebar::-webkit-scrollbar-track,.markdown-content table::-webkit-scrollbar-track,.markdown-content pre::-webkit-scrollbar-track{background:transparent}.messages-wrapper::-webkit-scrollbar-thumb,.sidebar::-webkit-scrollbar-thumb,.markdown-content table::-webkit-scrollbar-thumb,.markdown-content pre::-webkit-scrollbar-thumb{border:3px solid transparent;border-radius:999px;background:#4050644d;background-clip:content-box}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}@media (max-width: 980px){.login-card{grid-template-columns:1fr}.login-visual{min-height:300px;border-left:0;border-top:1px solid var(--line)}.login-visual img{width:620px;right:-180px;top:24px}}@media (max-width: 900px){.app-container{grid-template-columns:1fr}.sidebar{display:none}.main-area{grid-template-rows:60px minmax(0,1fr)}.top-nav{padding:0 14px}.messages-wrapper,.chat-input-area{padding-left:14px;padding-right:14px}.prompt-row{grid-template-columns:1fr;gap:6px}.message-meta{display:flex;gap:8px;padding-top:0}.welcome-title{font-size:34px}}@media (max-width: 620px){.login-shell{padding:16px}.login-card{border-radius:18px}.login-panel{padding:24px}.login-visual{display:none}.login-panel h1{font-size:29px}.nav-btn.text-btn{display:none}.response-header{align-items:flex-start;flex-direction:column}.model-chip{max-width:100%}.welcome-state{margin-top:28px}.welcome-asset{margin-bottom:22px}.welcome-title{font-size:30px}.input-form{grid-template-columns:42px minmax(0,1fr) 42px;gap:8px}.input-icon-btn,.send-btn{width:42px;height:42px}}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{min-height:100%;width:100%}body{background:#f4f3ef;color:#202427;font-family:IBM Plex Sans,Segoe UI Variable,Segoe UI,system-ui,sans-serif}button,input,select,textarea{font:inherit}button{border:none}
