:root{--bg:#0d1117;--panel:#11161d;--panel-2:#161c25;--border:#232c38;--text:#d6dde6;--muted:#8893a0;--accent:#5b8db8;--accent-dim:#2b3f52;--danger:#c2554d;--user:#1b2733}*{box-sizing:border-box}body,html{margin:0;padding:0;height:100%}body{background:var(--bg);color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px}a{color:var(--accent)}.shell{display:flex;height:100vh}.sidebar{width:260px;flex-shrink:0;background:var(--panel);border-right:1px solid var(--border);display:flex;flex-direction:column}.brand{padding:16px;border-bottom:1px solid var(--border)}.brand h1{font-size:14px;margin:0;letter-spacing:.5px}.brand .sub{color:var(--muted);font-size:11px;margin-top:3px}.side-section{padding:12px 16px}.side-section .label{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.6px;margin-bottom:8px}.ws{padding:7px 9px;border-radius:6px;cursor:pointer;color:var(--text);margin-bottom:2px;font-size:13px}.ws:hover{background:var(--panel-2)}.ws.active{background:var(--accent-dim)}.side-foot{margin-top:auto;padding:12px 16px;border-top:1px solid var(--border);color:var(--muted);font-size:12px}.main{flex:1 1;display:flex;flex-direction:column;min-width:0}.topbar{padding:10px 18px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:14px}.badge{font-size:11px;color:var(--accent);border:1px solid var(--accent-dim);border-radius:999px;padding:3px 10px}.spacer{flex:1 1}button,input,select,textarea{font-family:inherit;font-size:13px}input[type=password],input[type=text],select,textarea{background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:8px 10px;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--accent)}button{background:var(--accent-dim);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:8px 14px;cursor:pointer}button:hover{border-color:var(--accent)}button.ghost{background:transparent}.messages{flex:1 1;overflow-y:auto;padding:22px 18px}.msg{max-width:760px;margin:0 auto 16px}.msg .role{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.6px;margin-bottom:5px}.msg .bubble{white-space:pre-wrap;line-height:1.55}.msg.user .bubble{background:var(--user);border:1px solid var(--border);border-radius:8px;padding:11px 13px}.empty{color:var(--muted);text-align:center;margin-top:18vh}.composer{border-top:1px solid var(--border);padding:14px 18px}.composer .row{max-width:760px;margin:0 auto;display:flex;gap:10px;align-items:flex-end}.composer textarea{flex:1 1;resize:none;min-height:44px;max-height:200px}.err{color:var(--danger);font-size:12px;max-width:760px;margin:6px auto 0}.login-wrap{height:100vh;display:flex;align-items:center;justify-content:center}.login-card{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:28px;width:320px}.login-card h1{font-size:16px;margin:0 0 4px}.login-card .sub{color:var(--muted);font-size:12px;margin-bottom:20px}.login-card label{display:block;color:var(--muted);font-size:12px;margin:12px 0 5px}.login-card input{width:100%}.login-card button{width:100%;margin-top:20px}