:root{--bg-0: #120a18;--bg-1: #1b0f24;--surface: rgba(28, 18, 38, .72);--surface-2: rgba(255, 255, 255, .04);--border: rgba(255, 255, 255, .09);--border-strong: rgba(255, 255, 255, .16);--text: #f4eef9;--muted: #a99bbd;--accent: #ff5d8f;--accent-2: #c14bff;--accent-grad: linear-gradient(135deg, #ff5d8f, #c14bff);--user-bubble: linear-gradient(135deg, #ff5d8f, #c14bff);--assistant-bubble: rgba(255, 255, 255, .06);--ok: #43d9a3;--radius: 18px;--shadow: 0 18px 50px rgba(0, 0, 0, .45);font-family:Plus Jakarta Sans,Segoe UI,system-ui,sans-serif}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{color:var(--text);background:radial-gradient(1100px 640px at 12% 4%,rgba(193,75,255,.2),transparent 55%),radial-gradient(900px 540px at 92% 96%,rgba(255,93,143,.18),transparent 58%),linear-gradient(160deg,var(--bg-0),var(--bg-1));-webkit-font-smoothing:antialiased}#root{display:flex;justify-content:center;padding:18px}.shell{width:min(1160px,100%);height:calc(100dvh - 36px);display:grid;grid-template-columns:300px 1fr;gap:16px}.side{border:1px solid var(--border);background:var(--surface);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-radius:24px;box-shadow:var(--shadow);padding:18px 14px;display:flex;flex-direction:column;gap:14px;min-height:0}.brand{display:flex;align-items:center;gap:12px;padding:4px 6px 0}.logo{width:40px;height:40px;border-radius:13px;background:var(--accent-grad);display:grid;place-items:center;box-shadow:0 8px 22px #c14bff73;flex-shrink:0}.logo svg{width:22px;height:22px;fill:#fff}.brand-text{display:flex;flex-direction:column;gap:2px}.brand-text h1{font-size:1.18rem;font-weight:800;letter-spacing:-.01em}.presence{display:inline-flex;align-items:center;gap:6px;font-size:.74rem;color:var(--muted)}.presence i{width:7px;height:7px;border-radius:50%;background:var(--muted)}.presence.ok i{background:var(--ok);box-shadow:0 0 8px #43d9a3e6}.side-close{margin-left:auto;display:none;background:none;border:none;color:var(--muted);font-size:1rem;cursor:pointer;padding:6px}.side-label{font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);padding:0 8px}.char-list{display:flex;flex-direction:column;gap:6px;overflow-y:auto;padding:2px;margin:-2px}.char-card{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border:1px solid transparent;background:transparent;color:inherit;border-radius:16px;padding:9px 10px;cursor:pointer;transition:background .18s ease,border-color .18s ease,transform .06s ease;font-family:inherit}.char-card:hover{background:var(--surface-2)}.char-card:active{transform:scale(.99)}.char-card.active{background:#ff5d8f1f;border-color:#ff5d8f73}.char-thumb{width:46px;height:46px;border-radius:50%;overflow:hidden;flex-shrink:0;background:var(--accent-grad);display:grid;place-items:center}.char-thumb img{width:100%;height:100%;object-fit:cover;object-position:top center}.char-thumb-fallback{font-weight:800;color:#fff;font-size:1.05rem}.char-meta{display:flex;flex-direction:column;gap:2px;min-width:0}.char-name{font-weight:700;font-size:.92rem}.char-tag{font-size:.74rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.char-card.active .char-tag{color:#f0c4d8}.empty-note{color:var(--muted);font-size:.8rem;padding:8px}.main{border:1px solid var(--border);background:var(--surface);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-radius:24px;box-shadow:var(--shadow);display:grid;grid-template-rows:auto 1fr auto;min-height:0;overflow:hidden}.topbar{display:flex;align-items:center;gap:12px;padding:13px 18px;border-bottom:1px solid var(--border);background:#0000002e}.menu-btn{display:none;background:none;border:none;color:var(--text);cursor:pointer;padding:4px}.menu-btn svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}.peer{display:flex;align-items:center;gap:12px;min-width:0}.peer-avatar{position:relative;width:42px;height:42px;border-radius:50%;overflow:visible;background:var(--accent-grad);display:grid;place-items:center;flex-shrink:0}.peer-avatar img{width:42px;height:42px;border-radius:50%;object-fit:cover;object-position:top center}.peer-avatar>span{font-weight:800;color:#fff}.peer-dot{position:absolute;right:-1px;bottom:-1px;width:12px;height:12px;border-radius:50%;background:var(--ok);border:2px solid #1b0f24}.peer-name{font-weight:700;font-size:.98rem}.peer-status{font-size:.76rem;color:var(--muted)}#messages{padding:22px 20px;overflow-y:auto;display:flex;flex-direction:column;gap:12px}.welcome{margin:auto;text-align:center;display:flex;flex-direction:column;align-items:center;gap:12px;max-width:340px;padding:24px 12px}.welcome-portrait{width:104px;height:104px;border-radius:50%;object-fit:cover;object-position:top center;border:2px solid rgba(255,255,255,.14);box-shadow:0 12px 30px #0006}.welcome h2{font-size:1.3rem;font-weight:800}.welcome p{color:var(--muted);font-size:.9rem;line-height:1.6}.row{display:flex;gap:10px;max-width:82%;animation:lift .22s ease-out}@keyframes lift{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.row.user{align-self:flex-end;flex-direction:row-reverse}.avatar{width:34px;height:34px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.68rem;overflow:hidden;align-self:flex-end}.row.user .avatar{background:#ffffff1a;color:var(--text)}.row.assistant .avatar{background:var(--accent-grad);color:#fff}.avatar img{width:100%;height:100%;object-fit:cover;object-position:top center;display:block}.bubble{border-radius:20px;padding:11px 15px;line-height:1.6;font-size:.94rem;word-break:break-word;white-space:pre-wrap;max-width:calc(100% - 44px)}.row.user .bubble{background:var(--user-bubble);color:#fff;border-bottom-right-radius:6px}.row.assistant .bubble{background:var(--assistant-bubble);border:1px solid var(--border);border-bottom-left-radius:6px}.bubble code{font-family:SF Mono,ui-monospace,monospace;background:#00000059;padding:2px 5px;border-radius:5px;font-size:.85em}.bubble pre{margin:8px 0;padding:10px;border-radius:12px;border:1px solid var(--border);background:#0006;overflow-x:auto;white-space:pre}.bubble pre code{background:transparent;padding:0}.cursor{width:7px;height:1em;display:inline-block;background:var(--accent);border-radius:2px;vertical-align:text-bottom;margin-left:1px;animation:blink .9s step-end infinite}@keyframes blink{50%{opacity:0}}.typing{display:inline-flex;gap:5px;padding:3px 0}.typing i{width:8px;height:8px;border-radius:50%;background:var(--muted);animation:bounce 1.3s infinite ease-in-out}.typing i:nth-child(2){animation-delay:.16s}.typing i:nth-child(3){animation-delay:.32s}@keyframes bounce{0%,80%,to{transform:translateY(0);opacity:.5}40%{transform:translateY(-5px);opacity:1}}.input{border-top:1px solid var(--border);padding:14px 16px calc(14px + env(safe-area-inset-bottom));background:#0003}.input-row{display:flex;gap:10px;align-items:flex-end;background:#ffffff0d;border:1px solid var(--border);border-radius:18px;padding:6px 6px 6px 14px;transition:border-color .18s ease,box-shadow .18s ease}.input-row:focus-within{border-color:#ff5d8f99;box-shadow:0 0 0 3px #ff5d8f1f}.input textarea{flex:1;border:none;background:transparent;color:var(--text);font-family:inherit;font-size:.95rem;padding:8px 0;line-height:1.5;resize:none;outline:none;max-height:160px}.input textarea::placeholder{color:var(--muted)}.input button{width:42px;height:42px;border:none;border-radius:13px;background:var(--accent-grad);cursor:pointer;flex-shrink:0;display:grid;place-items:center;transition:transform .08s ease,opacity .18s ease}.input button svg{width:20px;height:20px;fill:#fff}.input button:hover:not(:disabled){transform:scale(1.05)}.input button:disabled{opacity:.4;cursor:not-allowed}.scrim{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;z-index:5}@media (max-width: 860px){#root{padding:0}.shell{width:100%;height:100dvh;grid-template-columns:1fr;gap:0}.main{border-radius:0;border:none}.side{position:fixed;z-index:6;top:0;left:0;height:100dvh;width:290px;border-radius:0 24px 24px 0;transform:translate(-105%);transition:transform .26s ease}.side.open{transform:translate(0)}.side-close{display:block}.menu-btn{display:grid;place-items:center}.nav-open .scrim{display:block}.row{max-width:88%}}
