:root{color-scheme:dark;--bg:#12111a;--panel:#1b1925;--panel-2:#242131;--text:#f8f5ff;--muted:#aaa1bc;--accent:#c084fc;--accent-2:#f5a5c9;--line:#332d43;--safe:#8ee6bb;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}*{box-sizing:border-box}html,body{height:100%;margin:0;background:var(--bg);color:var(--text)}body{overflow:hidden;background:radial-gradient(circle at 70% -10%,#31233f 0,transparent 42%),var(--bg)}button,textarea{font:inherit}.app-shell{height:100dvh;max-width:760px;margin:auto;display:flex;flex-direction:column;overflow:hidden}.topbar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:calc(14px + env(safe-area-inset-top)) 16px 14px;border-bottom:1px solid var(--line);background:#12111add;backdrop-filter:blur(18px);z-index:2}.brand,.connection{display:flex;align-items:center;gap:10px}.brand strong{display:block;font-size:15px}.subtitle{display:block;color:var(--muted);font-size:11px;margin-top:2px}.assistant-avatar,.message-avatar{display:grid;place-items:center;border-radius:50%;background:linear-gradient(145deg,var(--accent-2),var(--accent));color:#30173c;box-shadow:0 0 22px #d18bf84d}.assistant-avatar{width:36px;height:36px;font-size:19px}.connection{color:var(--muted);font-size:11px;white-space:nowrap}.status-dot{width:8px;height:8px;border-radius:50%;background:#777}.status-dot.is-online{background:var(--safe);box-shadow:0 0 9px var(--safe)}.status-dot.is-pending{background:#f5c27d;animation:pulse 1.2s infinite}.icon-button,.round-button,.voice-button,.send-button{border:0;cursor:pointer;color:var(--text);display:grid;place-items:center}.icon-button{width:30px;height:30px;border-radius:10px;background:var(--panel-2);color:var(--accent-2)}.chat{flex:1;overflow-y:auto;padding:20px 16px 12px;scroll-behavior:smooth}.day-divider{text-align:center;color:#736982;font-size:11px;margin:0 auto 20px}.day-divider span{background:var(--bg);padding:0 10px}.message{display:flex;gap:9px;max-width:92%;margin:0 0 16px}.message-avatar{width:26px;height:26px;flex:0 0 auto;font-size:13px}.bubble{background:var(--panel);border:1px solid var(--line);border-radius:4px 17px 17px 17px;padding:11px 13px;color:#ece6f5;box-shadow:0 8px 22px #0000001c}.bubble p{margin:0;line-height:1.5;font-size:14px}.bubble time{display:block;text-align:right;color:#81768f;font-size:10px;margin-top:6px}.user-message{margin-left:auto;justify-content:flex-end}.user-message .bubble{background:#593c75;border-color:#79549b;border-radius:17px 4px 17px 17px}.typing{display:flex;align-items:center;gap:4px;color:var(--muted);font-size:11px;margin:4px 0 0 35px}.typing span{width:5px;height:5px;border-radius:50%;background:var(--accent);animation:bounce 1s infinite}.typing span:nth-child(2){animation-delay:.15s}.typing span:nth-child(3){animation-delay:.3s}.typing em{font-style:normal;margin-left:5px}.composer{display:flex;align-items:flex-end;gap:8px;padding:10px 12px 8px;border-top:1px solid var(--line);background:#171520f2;backdrop-filter:blur(18px)}textarea{flex:1;min-height:42px;max-height:130px;resize:none;border:1px solid var(--line);border-radius:16px;background:#211d2c;color:var(--text);padding:11px 13px;outline:none;line-height:1.3}textarea:focus{border-color:#8d5bb5;box-shadow:0 0 0 3px #c084fc1c}textarea::placeholder{color:#776d86}.round-button,.voice-button,.send-button{width:40px;height:40px;border-radius:50%;flex:0 0 auto}.round-button{background:transparent;color:var(--muted);font-size:24px}.voice-button{background:#2b2437;color:var(--accent-2)}.voice-button.is-recording{animation:recording 1s infinite;background:#713e5c}.mic-icon{font-size:13px}.send-button{background:linear-gradient(145deg,var(--accent),#8b5cc7);color:#24152d;font-size:18px}.network-note{text-align:center;color:#6f667c;font-size:10px;margin:0;padding:0 12px calc(8px + env(safe-area-inset-bottom));background:#171520f2}.network-icon{color:var(--safe);font-size:15px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.enter{animation:enter .35s ease both}@keyframes enter{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes bounce{0%,60%,100%{transform:translateY(0);opacity:.5}30%{transform:translateY(-4px);opacity:1}}@keyframes pulse{50%{opacity:.35}}@keyframes recording{50%{box-shadow:0 0 0 7px #f5a5c933}}@media(min-width:600px){.topbar{padding-left:24px;padding-right:24px}.chat{padding-left:24px;padding-right:24px}.composer{padding-left:24px;padding-right:24px}}
