:root{--color-bg: #f0f2f5;--color-surface: #ffffff;--color-surface-alt: #f6f8fa;--color-border: #d0d7de;--sidebar-bg: #1a1f2e;--sidebar-text: #c9d1d9;--sidebar-accent: #58a6ff;--sidebar-hover: #2a3142;--sidebar-width: 280px;--accent: #0969da;--accent-hover: #0860ca;--accent-light: #ddf4ff;--msg-user-bg: #0969da;--msg-user-text: #ffffff;--msg-bot-bg: #f6f8fa;--msg-bot-text: #24292f;--msg-bot-border: #d0d7de;--text-primary: #24292f;--text-secondary: #57606a;--text-muted: #8c959f;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .08);--shadow-md: 0 4px 12px rgba(0, 0, 0, .12);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .16);--transition: .2s ease;font-family:Segoe UI,Hiragino Sans,Meiryo,system-ui,sans-serif;font-size:15px;line-height:1.6}[data-theme=dark]{--color-bg: #0d1117;--color-surface: #161b22;--color-surface-alt: #21262d;--color-border: #30363d;--sidebar-bg: #0d1117;--sidebar-text: #c9d1d9;--sidebar-accent: #58a6ff;--sidebar-hover: #161b22;--accent: #58a6ff;--accent-hover: #79b8ff;--accent-light: #1c2e4a;--msg-user-bg: #1f6feb;--msg-user-text: #ffffff;--msg-bot-bg: #21262d;--msg-bot-text: #c9d1d9;--msg-bot-border: #30363d;--text-primary: #e6edf3;--text-secondary: #8b949e;--text-muted: #6e7681;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .5)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#app{height:100%;width:100%}body{background:var(--color-bg);color:var(--text-primary);-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1a1f2e,#0d1117 60%,#0f3460);padding:24px}.auth-card{background:var(--color-surface);border-radius:16px;box-shadow:var(--shadow-lg);padding:48px 40px;width:100%;max-width:480px;position:relative}.auth-logo{display:flex;align-items:center;gap:10px;margin-bottom:32px}.auth-logo svg{color:var(--accent)}.auth-logo-text{font-size:20px;font-weight:700;color:var(--text-primary);letter-spacing:-.3px}.auth-title{font-size:26px;font-weight:700;color:var(--text-primary);margin-bottom:8px;letter-spacing:-.5px}.auth-subtitle{color:var(--text-secondary);margin-bottom:32px;font-size:14px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 20px;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:background var(--transition),opacity var(--transition),transform var(--transition);border:none;outline:none;text-decoration:none}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-primary{background:var(--accent);color:#fff;width:100%;padding:13px 20px;font-size:15px;border-radius:10px}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-ghost{background:transparent;color:var(--text-secondary)}.btn-ghost:hover:not(:disabled){background:var(--color-surface-alt);color:var(--text-primary)}.input{width:100%;padding:10px 14px;border:1.5px solid var(--color-border);border-radius:8px;font-size:14px;color:var(--text-primary);background:var(--color-surface);transition:border-color var(--transition),box-shadow var(--transition);outline:none}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #0969da1f}.input::placeholder{color:var(--text-muted)}.spinner{width:20px;height:20px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.typing-indicator{display:flex;align-items:center;gap:4px;padding:12px 16px}.typing-indicator span{width:8px;height:8px;border-radius:50%;background:var(--text-muted);animation:bounce 1.2s ease-in-out infinite}.typing-indicator span:nth-child(2){animation-delay:.2s}.typing-indicator span:nth-child(3){animation-delay:.4s}@keyframes bounce{0%,80%,to{transform:translateY(0);opacity:.4}40%{transform:translateY(-6px);opacity:1}}
