:root{--bg:#0b1017;--bg-raised:#111a26;--bg-input:#0e1620;--border:#1e2c3d;--text:#e8eef6;--text-muted:#8fa1b8;--accent:#45c6ff;--accent-dim:#1a3a4d;--amber:#ffb454;--danger:#ff6b6b;--radius:12px}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-family:Segoe UI Variable,Segoe UI,system-ui,-apple-system,sans-serif;font-size:16px;line-height:1.55}.shell{flex-direction:column;max-width:1040px;height:100dvh;margin:0 auto;padding:0 20px;display:flex}.topbar{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:18px 4px 14px;display:flex}.topbar .callsign{letter-spacing:.14em;color:var(--accent);font-size:20px;font-weight:700}.topbar .status{background:var(--accent);width:9px;height:9px;box-shadow:0 0 8px var(--accent);border-radius:50%}.topbar .tagline{color:var(--text-muted);font-size:13px}.topbar .spacer{flex:1}.topbar button{border:1px solid var(--border);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:8px;padding:6px 12px;font-size:13px}.topbar button:hover{color:var(--text);border-color:var(--text-muted)}.messages{flex-direction:column;flex:1;gap:18px;padding:24px 4px;display:flex;overflow-y:auto}.msg{border-radius:var(--radius);white-space:pre-wrap;word-wrap:break-word;max-width:76ch;padding:12px 16px}.msg.user{background:var(--accent-dim);border:1px solid #235066;align-self:flex-end}.msg.assistant{background:var(--bg-raised);border:1px solid var(--border);align-self:flex-start}.msg.error{border:1px solid var(--danger);color:var(--danger);background:0 0;align-self:flex-start;font-size:14px}.memory-chips{flex-wrap:wrap;align-self:flex-start;gap:6px;max-width:76ch;display:flex}.memory-chips .chip{color:var(--text-muted);border:1px solid var(--border);border-radius:999px;padding:3px 10px;font-size:12px}.memory-chips .chip .entity{color:var(--amber)}.thinking{color:var(--text-muted);align-self:flex-start;padding:4px 2px;font-size:14px}.thinking:after{content:"";animation:1.4s steps(4,end) infinite dots}@keyframes dots{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}}.composer{border-top:1px solid var(--border);gap:10px;padding:14px 0 18px;display:flex}.composer textarea{resize:none;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);font:inherit;flex:1;min-height:52px;max-height:180px;padding:12px 14px}.composer textarea:focus{border-color:var(--accent);outline:none}.composer button{background:var(--accent);color:#06131c;border-radius:var(--radius);cursor:pointer;border:none;padding:0 22px;font-size:15px;font-weight:600}.composer button:disabled{opacity:.4;cursor:default}.empty{color:var(--text-muted);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;display:flex}.empty .big{letter-spacing:.1em;color:var(--text);font-size:26px;font-weight:600}.login-wrap{justify-content:center;align-items:center;height:100dvh;display:flex}.login-card{background:var(--bg-raised);border:1px solid var(--border);border-radius:16px;flex-direction:column;gap:16px;width:min(400px,90vw);padding:36px 32px;display:flex}.login-card h1{letter-spacing:.14em;color:var(--accent);font-size:22px}.login-card p{color:var(--text-muted);font-size:14px}.login-card input{background:var(--bg-input);border:1px solid var(--border);color:var(--text);font:inherit;border-radius:10px;padding:12px 14px}.login-card input:focus{border-color:var(--accent);outline:none}.login-card button{background:var(--accent);color:#06131c;cursor:pointer;border:none;border-radius:10px;padding:12px;font-size:15px;font-weight:600}.login-card .error{color:var(--danger);font-size:14px}
