:root{--bg:#0b1120;--panel:#0f172a;--panel-2:#111c34;--border:#1f2a44;--text:#e5e7eb;--text-dim:#94a3b8;--accent:#f97316;--accent-dim:#fb923c;--ok:#22c55e;--err:#ef4444;color:var(--text);background:var(--bg);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:radial-gradient(1200px 600px at 80% -10%, #f9731614, transparent 60%), radial-gradient(900px 600px at -10% 110%, #3b82f614, transparent 60%), var(--bg);font-size:14px;line-height:1.5}button,input,textarea,select{font:inherit;color:inherit}a{color:var(--accent-dim);text-decoration:none}a:hover{text-decoration:underline}.btn{background:var(--panel);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:6px;padding:6px 12px;transition:all .15s}.btn:hover{border-color:var(--accent)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);color:#0b1120;border-color:var(--accent);font-weight:600}.btn-primary:hover{background:var(--accent-dim)}input[type=text],input[type=password],textarea,select{background:var(--panel-2);border:1px solid var(--border);border-radius:6px;width:100%;padding:8px 10px}input:focus,textarea:focus,select:focus{border-color:var(--accent);outline:none}textarea{resize:vertical;min-height:60px;font-family:ui-monospace,SFMono-Regular,monospace}.layout{grid-template:"topbar topbar"56px"sidebar main"1fr/280px 1fr;height:100vh;display:grid}.topbar{border-bottom:1px solid var(--border);background:var(--panel);grid-area:topbar;justify-content:space-between;align-items:center;padding:0 16px;display:flex}.topbar .brand{letter-spacing:-.02em;font-size:16px;font-weight:700}.topbar .brand .v{color:var(--text-dim);margin-left:6px;font-size:12px;font-weight:400}.topbar .right{color:var(--text-dim);align-items:center;gap:10px;font-size:12px;display:flex}.dot{border-radius:50%;width:8px;height:8px;margin-right:4px;display:inline-block}.dot.ok{background:var(--ok)}.dot.err{background:var(--err)}.sidebar{border-right:1px solid var(--border);background:var(--panel);flex-direction:column;grid-area:sidebar;gap:8px;padding:12px;display:flex;overflow-y:auto}.sidebar h3{text-transform:uppercase;color:var(--text-dim);letter-spacing:.08em;margin:12px 4px 4px;font-size:11px}.session-item{cursor:pointer;border:1px solid #0000;border-radius:6px;justify-content:space-between;align-items:center;padding:8px 10px;display:flex}.session-item:hover{background:var(--panel-2)}.session-item.active{background:var(--panel-2);border-color:var(--border)}.session-item .name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.session-item .del{color:var(--text-dim);border-radius:4px;padding:2px 6px;font-size:12px}.session-item .del:hover{color:var(--err);background:#ef444414}.main{flex-direction:column;grid-area:main;min-width:0;min-height:0;display:flex}.chat-area{flex-direction:column;flex:1;gap:14px;width:100%;max-width:920px;margin:0 auto;padding:20px;display:flex;overflow-y:auto}.msg{flex-direction:column;gap:4px;display:flex}.msg .role{color:var(--text-dim);text-transform:uppercase;letter-spacing:.06em;font-size:11px}.msg .bubble{border:1px solid var(--border);background:var(--panel);word-wrap:break-word;border-radius:10px;max-width:100%;padding:10px 14px}.msg.user .bubble{background:var(--panel-2);border-color:var(--accent)}.msg.assistant .bubble{background:var(--panel)}.msg .bubble pre{border:1px solid var(--border);background:#0a0f1f;border-radius:6px;padding:10px;font-size:12px;overflow-x:auto}.msg .bubble code{font-family:ui-monospace,SFMono-Regular,monospace;font-size:12.5px}.msg .bubble p{margin:6px 0}.msg .bubble ul,.msg .bubble ol{margin:6px 0;padding-left:22px}.msg .bubble h1,.msg .bubble h2,.msg .bubble h3{margin:10px 0 6px}.composer{border-top:1px solid var(--border);background:var(--panel);padding:12px 16px}.composer .row{align-items:flex-end;gap:8px;max-width:920px;margin:0 auto;display:flex}.composer textarea{flex:1}.composer .controls{flex-wrap:wrap;align-items:center;gap:8px;max-width:920px;margin:8px auto 0;display:flex}.composer select{width:auto;min-width:240px}.composer label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em;font-size:11px}.empty{height:100%;color:var(--text-dim);flex-direction:column;justify-content:center;align-items:center;gap:16px;display:flex}.empty .logo{color:var(--accent);font-family:ui-monospace,monospace;font-size:48px;font-weight:700}.empty h2{color:var(--text);margin:0;font-weight:500}.empty p{text-align:center;max-width:480px;margin:0}.modal-bg{z-index:50;background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--panel);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:10px;width:420px;max-width:90vw;padding:20px;display:flex}.modal h3{margin:0}.modal .row{justify-content:flex-end;gap:8px;display:flex}.spinner{border:2px solid var(--text-dim);border-top-color:var(--accent);border-radius:50%;width:10px;height:10px;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.api-bar{background:var(--panel);border:1px solid var(--border);border-radius:6px;align-items:center;gap:6px;padding:6px 10px;font-size:11px;display:flex}.api-bar input{padding:4px 6px;font-size:11px}
