:root{--ink: #1f2933;--muted: #6b7280;--line: #e5e7eb;--brand: #1d4ed8;--brand-dark: #1e40af;--bg: #f6f8fb;--danger: #b91c1c;--danger-bg: #fef2f2;--danger-line: #fecaca;--warn-bg: #fffbeb;--warn-line: #fde68a;--ok: #047857}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.55;font-size:15px}.header{background:#fff;border-bottom:1px solid var(--line);padding:12px 24px;display:flex;align-items:center;gap:22px;flex-wrap:wrap}.header-logos{display:flex;align-items:center;gap:18px}.header-logos img{height:44px;width:auto;object-fit:contain}.header-title h1{margin:0;font-size:17px;font-weight:650}.header-title p{margin:2px 0 0;font-size:13px;color:var(--muted)}.page{max-width:880px;margin:22px auto 48px;padding:0 16px}.page-wide{max-width:1100px}.card{background:#fff;border:1px solid var(--line);border-radius:10px;padding:20px;margin-bottom:18px}.card-narrow{max-width:460px;margin-left:auto;margin-right:auto}.card-danger{border-color:var(--danger-line);background:var(--danger-bg)}.card h2{margin:0 0 6px;font-size:18px}.section-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap}.hint{color:var(--muted);font-size:14px}.small{font-size:12.5px}.banner{border-radius:8px;padding:12px 14px;margin-bottom:16px;font-size:14px}.banner-danger{background:var(--danger-bg);border:1px solid var(--danger-line);color:var(--danger)}.banner-warn{background:var(--warn-bg);border:1px solid var(--warn-line);color:#92400e}.notice{background:var(--warn-bg);border:1px solid var(--warn-line);color:#92400e;border-radius:8px;padding:10px 12px;font-size:13.5px;margin-bottom:14px}.error{color:var(--danger);font-size:13.5px}.form{display:flex;flex-direction:column;gap:14px;margin-top:16px}.form label{display:flex;flex-direction:column;gap:5px;font-size:13.5px;font-weight:550}input[type=text],input[type=password],input[type=number],input[type=time]{padding:10px 12px;border:1px solid var(--line);border-radius:7px;font-size:14px;font-family:inherit;background:#fff;color:var(--ink)}input:focus{outline:2px solid rgba(29,78,216,.35);outline-offset:1px;border-color:var(--brand)}button{padding:10px 18px;border:0;border-radius:7px;background:var(--brand);color:#fff;font-size:14px;font-family:inherit;font-weight:550;cursor:pointer}button:hover:not(:disabled){background:var(--brand-dark)}button:disabled{opacity:.5;cursor:not-allowed}.btn-danger{background:var(--danger)}.btn-danger:hover:not(:disabled){background:#991b1b}.inline-field{display:flex;flex-direction:column;gap:4px;font-size:12.5px;font-weight:550;color:var(--muted)}.chat-meta{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;padding-bottom:12px;border-bottom:1px solid var(--line);font-size:14px}.chat-meta-right{display:flex;align-items:center;gap:12px}.panel-link{font-size:13px;color:var(--brand);text-decoration:none;border:1px solid var(--line);border-radius:999px;padding:3px 11px;white-space:nowrap}.panel-link:hover{border-color:var(--brand);background:#eff6ff}.quota{font-size:13px;color:var(--ok);background:#ecfdf5;border:1px solid #a7f3d0;border-radius:999px;padding:3px 11px;white-space:nowrap}.quota-empty{color:var(--danger);background:var(--danger-bg);border-color:var(--danger-line)}.chat{margin-top:14px;border:1px solid var(--line);border-radius:9px;overflow:hidden;background:#fcfcfd}.chat-history{height:52vh;min-height:300px;overflow-y:auto;padding:16px}.chat-empty{color:var(--muted);font-size:14px;text-align:center;padding:34px 16px}.bubble{margin-bottom:16px;max-width:88%}.bubble-user{margin-left:auto}.bubble-who{font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:4px}.bubble-user .bubble-who{text-align:right}.bubble-text,.bubble .md{background:#fff;border:1px solid var(--line);border-radius:10px;padding:11px 14px;margin:0}.bubble-user .bubble-text{background:var(--brand);border-color:var(--brand);color:#fff}.chat-input{display:flex;gap:8px;padding:11px;border-top:1px solid var(--line);background:#fff}.chat-input input{flex:1}.typing{display:flex;gap:5px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:15px 14px;margin:0;width:fit-content}.typing span{width:7px;height:7px;border-radius:50%;background:#9ca3af;animation:blink 1.3s infinite}.typing span:nth-child(2){animation-delay:.2s}.typing span:nth-child(3){animation-delay:.4s}@keyframes blink{0%,60%,to{opacity:.25}30%{opacity:1}}.md p{margin:0 0 9px}.md p:last-child{margin-bottom:0}.md ul,.md ol{margin:0 0 9px;padding-left:20px}.md li{margin-bottom:4px}.md li:last-child{margin-bottom:0}.md-heading{font-weight:650}.md code{background:#f1f5f9;border-radius:4px;padding:1px 5px;font-size:13px;font-family:ui-monospace,Cascadia Code,Consolas,monospace}.exam-row{display:flex;align-items:flex-end;gap:14px;flex-wrap:wrap;margin-top:14px}.status-pill{font-size:12.5px;font-weight:650;letter-spacing:.04em;border-radius:999px;padding:6px 14px}.status-pill.on{background:var(--danger);color:#fff}.status-pill.off{background:#e5e7eb;color:#374151}.filters{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;margin:14px 0 16px}.logs{max-height:55vh;overflow-y:auto;border:1px solid var(--line);border-radius:8px;padding:12px;background:#fcfcfd}.log{padding:10px 12px;border-radius:8px;margin-bottom:10px;background:#fff;border:1px solid var(--line)}.log-user{border-left:3px solid var(--brand)}.log-assistant{border-left:3px solid #9ca3af}.log-head{font-size:12.5px;color:var(--muted);margin-bottom:6px}.log-text{margin:0}.tag{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;border-radius:4px;padding:1px 6px;margin-left:8px}.tag-user{background:#dbeafe;color:#1e40af}.tag-assistant{background:#f3f4f6;color:#4b5563}.table-scroll{overflow-x:auto}.table{width:100%;border-collapse:collapse;font-size:14px;margin-top:10px}.table th,.table td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line)}.table th{font-size:12.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}@media (max-width: 640px){.header{padding:10px 14px;gap:14px}.header-logos img{height:34px}.bubble{max-width:100%}}
