*{box-sizing:border-box}body{margin:0;font-family:system-ui,sans-serif;background:#0f1115;color:#e8e8e8}.login{max-width:320px;margin:15vh auto;display:flex;flex-direction:column;gap:16px}.login form{display:flex;flex-direction:column;gap:8px}input,button{padding:10px;border-radius:8px;border:1px solid #333;background:#1a1d24;color:inherit;font-size:14px}button{background:#2563eb;border:none;cursor:pointer}button:disabled{opacity:.6}.error{color:#f87171}.chat{display:flex;flex-direction:column;height:100vh;max-width:720px;margin:0 auto}.chat header{padding:12px;border-bottom:1px solid #262a33;font-weight:600;display:flex;align-items:center;justify-content:space-between;gap:8px}.session-controls{display:flex;gap:8px;align-items:center;font-weight:400}.session-controls select{max-width:220px;padding:6px 8px;border-radius:8px;border:1px solid #333;background:#1a1d24;color:inherit;font-size:13px}.session-controls button{padding:6px 10px;font-size:13px;background:#1f2430;border:1px solid #333}.messages{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:8px}.msg{padding:10px 12px;border-radius:10px;max-width:80%;white-space:pre-wrap}.msg.user{align-self:flex-end;background:#2563eb}.msg.assistant{align-self:flex-start;background:#1f2430}.msg.system{align-self:center;background:none;color:#9ca3af;font-size:13px}.msg.thinking{align-self:flex-start}.dots{display:inline-flex;gap:3px;margin-left:6px}.dots i{width:5px;height:5px;border-radius:50%;background:#9ca3af;animation:dot-pulse 1.2s infinite ease-in-out}.dots i:nth-child(2){animation-delay:.2s}.dots i:nth-child(3){animation-delay:.4s}@keyframes dot-pulse{0%,80%,to{opacity:.25;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}.msg.confirm{align-self:flex-start;background:#3b2f13;border:1px solid #a16207}.msg.result{align-self:flex-start;background:#12291a;border:1px solid #15803d}.confirm-buttons{display:flex;gap:8px;margin-top:8px}.confirm-buttons .danger{background:#b91c1c}.composer{display:flex;gap:8px;padding:12px;border-top:1px solid #262a33}.composer input{flex:1}
