:root{--frost-bg: #f0f4f8;--frost-surface: #ffffff;--frost-card: #f7f9fc;--frost-border: rgba(0, 60, 120, .1);--frost-border-hover: rgba(0, 60, 120, .2);--frost-accent: #0284c7;--frost-accent-hover: #0369a1;--frost-accent-glow: rgba(2, 132, 199, .1);--frost-text: #1e293b;--frost-text-secondary: #64748b;--frost-text-muted: #94a3b8;--frost-danger: #dc2626;--frost-danger-hover: #b91c1c;--frost-success: #16a34a;--frost-user-bubble: linear-gradient(135deg, #0284c7 0%, #0369a1 100%);--frost-glass: rgba(255, 255, 255, .85);--frost-glass-border: rgba(0, 60, 120, .06)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif;background:var(--frost-bg);color:var(--frost-text);height:100vh;overflow:hidden}#root{height:100vh}.login-page{display:flex;align-items:center;justify-content:center;height:100vh;background:linear-gradient(160deg,#e0ecf5,#f0f4f8,#dce8f3 60%,#eaf1f8);position:relative;overflow:hidden}.login-page:before{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(ellipse at 30% 20%,rgba(2,132,199,.08) 0%,transparent 50%),radial-gradient(ellipse at 70% 80%,rgba(2,132,199,.05) 0%,transparent 50%);animation:aurora 20s ease-in-out infinite alternate}@keyframes aurora{0%{transform:translate(0) rotate(0)}to{transform:translate(-2%,-2%) rotate(3deg)}}.login-card{background:var(--frost-glass);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--frost-border);border-radius:16px;padding:44px 40px;width:380px;text-align:center;position:relative;z-index:1;box-shadow:0 8px 32px #00285014,0 1px 3px #0000000a}.login-card h1{font-size:26px;font-weight:700;color:var(--frost-accent);margin-bottom:6px;letter-spacing:-.5px}.login-card .subtitle{color:var(--frost-text-secondary);margin-bottom:28px;font-size:14px}.login-card form{display:flex;flex-direction:column;gap:14px}.login-card input{padding:12px 16px;border:1px solid var(--frost-border);border-radius:10px;background:#f8fafc;color:var(--frost-text);font-size:15px;outline:none;transition:border-color .2s,box-shadow .2s}.login-card input:focus{border-color:var(--frost-accent);box-shadow:0 0 0 3px var(--frost-accent-glow)}.login-card input::placeholder{color:var(--frost-text-muted)}.login-card button{padding:12px;border:none;border-radius:10px;background:linear-gradient(135deg,var(--frost-accent) 0%,#0369a1 100%);color:#fff;font-size:15px;font-weight:600;cursor:pointer;transition:all .2s;margin-top:4px}.login-card button:hover{background:linear-gradient(135deg,var(--frost-accent-hover) 0%,#075985 100%);box-shadow:0 4px 16px #0284c740}.login-card button:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}.error{color:var(--frost-danger);font-size:13px;text-align:left;padding:8px 12px;background:#dc26260d;border-radius:8px;border:1px solid rgba(220,38,38,.12)}.switch-mode{margin-top:20px;color:var(--frost-text-secondary);cursor:pointer;font-size:13px;transition:color .2s}.switch-mode:hover{color:var(--frost-accent)}.chat-layout{display:flex;height:100vh;background:var(--frost-bg)}.sidebar{width:272px;background:var(--frost-surface);border-right:1px solid var(--frost-border);display:flex;flex-direction:column;transition:margin-left .3s cubic-bezier(.4,0,.2,1)}.sidebar:not(.open){margin-left:-272px}.sidebar-header{padding:18px 16px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--frost-border)}.logo{font-size:17px;font-weight:700;color:var(--frost-accent);letter-spacing:-.3px}.new-chat-btn{padding:7px 14px;border:1px solid var(--frost-border);border-radius:8px;background:transparent;color:var(--frost-text);cursor:pointer;font-size:13px;transition:all .2s}.new-chat-btn:hover{background:var(--frost-accent-glow);border-color:var(--frost-border-hover)}.search-box{padding:10px 12px;display:flex;gap:6px;border-bottom:1px solid var(--frost-border)}.search-box input{flex:1;padding:8px 12px;border:1px solid var(--frost-border);border-radius:8px;background:#f8fafc;color:var(--frost-text);font-size:13px;outline:none;transition:border-color .2s}.search-box input:focus{border-color:var(--frost-accent)}.search-box input::placeholder{color:var(--frost-text-muted)}.search-box button{padding:8px 12px;border:1px solid var(--frost-border);border-radius:8px;background:transparent;color:var(--frost-text-secondary);cursor:pointer;font-size:13px;transition:all .2s}.search-box button:hover{background:var(--frost-accent-glow)}.search-box button:disabled{opacity:.4;cursor:not-allowed}.session-list{flex:1;overflow-y:auto;padding:8px}.session-item{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-radius:8px;cursor:pointer;margin-bottom:2px;transition:background .15s}.session-item:hover{background:#0284c70d}.session-item.active{background:var(--frost-accent-glow);border:1px solid var(--frost-border-hover)}.session-title{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13.5px;color:var(--frost-text)}.session-item.active .session-title{color:var(--frost-accent);font-weight:500}.delete-btn{background:none;border:none;color:var(--frost-text-muted);cursor:pointer;font-size:18px;padding:0 4px;opacity:0;transition:all .2s}.session-item:hover .delete-btn{opacity:1}.delete-btn:hover{color:var(--frost-danger)}.sidebar-footer{padding:14px 16px;border-top:1px solid var(--frost-border);display:flex;align-items:center;justify-content:space-between}.username{font-size:13px;color:var(--frost-text-secondary)}.logout-btn{padding:5px 14px;border:1px solid var(--frost-border);border-radius:8px;background:transparent;color:var(--frost-text-secondary);cursor:pointer;font-size:13px;transition:all .2s}.logout-btn:hover{background:#dc26260d;border-color:#dc262626;color:var(--frost-danger)}.chat-main{flex:1;display:flex;flex-direction:column;min-width:0;background:var(--frost-bg)}.chat-header{padding:12px 16px;border-bottom:1px solid var(--frost-border);display:flex;align-items:center;gap:12px;background:var(--frost-surface)}.chat-header>span:first-of-type{font-weight:600;font-size:15px;color:var(--frost-text)}.toggle-sidebar{background:none;border:none;color:var(--frost-text-secondary);font-size:20px;cursor:pointer;padding:4px 8px;border-radius:6px;transition:all .15s}.toggle-sidebar:hover{background:var(--frost-accent-glow);color:var(--frost-accent)}.gw-status{margin-left:auto;font-size:12px;padding:4px 10px;border-radius:12px;font-weight:500}.gw-status.online{color:var(--frost-success);background:#16a34a14;border:1px solid rgba(22,163,74,.15)}.gw-status.offline{color:var(--frost-danger);background:#dc26260f;border:1px solid rgba(220,38,38,.12)}.messages{flex:1;overflow-y:auto;padding:24px 20px;display:flex;flex-direction:column;gap:18px}.empty-state{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--frost-text-muted)}.empty-state h2{color:var(--frost-accent);margin-bottom:8px;font-size:22px;font-weight:600}.empty-state p{font-size:14px}.message{display:flex}.message.user{justify-content:flex-end}.message.assistant{justify-content:flex-start}.message.system{justify-content:center}.message-bubble{max-width:72%;padding:12px 16px;border-radius:14px;line-height:1.65;font-size:14.5px;word-break:break-word}.message.user .message-bubble{background:var(--frost-user-bubble);border-bottom-right-radius:4px;color:#fff;box-shadow:0 2px 8px #0284c733}.message.assistant .message-bubble{background:var(--frost-surface);border:1px solid var(--frost-border);border-bottom-left-radius:4px;box-shadow:0 1px 4px #0000000a}.message.system .message-bubble{background:#dc26260a;color:var(--frost-danger);font-size:13px;border:1px solid rgba(220,38,38,.1);border-radius:8px;padding:8px 14px}.message-bubble pre{background:#f1f5f9;padding:14px;border-radius:10px;overflow-x:auto;margin:10px 0;border:1px solid var(--frost-border)}.message-bubble code{font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:13px}.message-bubble :not(pre)>code{background:#0284c714;padding:2px 6px;border-radius:4px;font-size:13px;color:var(--frost-accent)}.message-bubble p{margin-bottom:8px}.message-bubble p:last-child{margin-bottom:0}.message-bubble ul,.message-bubble ol{padding-left:20px;margin:6px 0}.message-bubble li{margin-bottom:4px}.message-bubble a{color:var(--frost-accent);text-decoration:none}.message-bubble a:hover{text-decoration:underline}.message.assistant .message-bubble:empty:after{content:"";display:inline-block;width:6px;height:6px;background:var(--frost-accent);border-radius:50%;animation:pulse 1.2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:.3}50%{opacity:1}}.input-area{padding:16px 20px;border-top:1px solid var(--frost-border);display:flex;gap:10px;background:var(--frost-surface)}.input-area textarea{flex:1;padding:12px 16px;border:1px solid var(--frost-border);border-radius:10px;background:#f8fafc;color:var(--frost-text);font-size:14.5px;font-family:inherit;resize:none;outline:none;min-height:44px;max-height:120px;transition:border-color .2s,box-shadow .2s}.input-area textarea:focus{border-color:var(--frost-accent);box-shadow:0 0 0 3px var(--frost-accent-glow)}.input-area textarea::placeholder{color:var(--frost-text-muted)}.input-area button:not(.mic-btn){padding:12px 24px;border:none;border-radius:10px;background:linear-gradient(135deg,var(--frost-accent) 0%,#0369a1 100%);color:#fff;font-size:14.5px;font-weight:600;cursor:pointer;white-space:nowrap;transition:all .2s}.input-area button:not(.mic-btn):hover{box-shadow:0 4px 16px #0284c740}.input-area button:not(.mic-btn):disabled{opacity:.4;cursor:not-allowed;box-shadow:none}.input-area .abort-btn{background:linear-gradient(135deg,var(--frost-danger) 0%,#b91c1c 100%)}.input-area .abort-btn:hover{box-shadow:0 4px 16px #dc262640}.mic-btn{width:44px;height:44px;border:1px solid var(--frost-border);border-radius:50%;background:#f8fafc;color:var(--frost-text-secondary);font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .25s cubic-bezier(.4,0,.2,1);flex-shrink:0}.mic-btn:hover{background:var(--frost-accent-glow);border-color:var(--frost-accent);color:var(--frost-accent);transform:scale(1.08)}.mic-btn:disabled{opacity:.4;cursor:not-allowed}.recording-overlay{display:flex;align-items:center;gap:14px;padding:16px 20px;border-top:1px solid rgba(220,38,38,.15);background:linear-gradient(135deg,#dc26260a,#dc262614);animation:rec-fade-in .25s ease-out}@keyframes rec-fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.rec-indicator{width:10px;height:10px;border-radius:50%;background:var(--frost-danger);flex-shrink:0;animation:rec-blink 1s ease-in-out infinite}@keyframes rec-blink{0%,to{opacity:1}50%{opacity:.3}}.rec-waveform{flex:1;display:flex;align-items:center;justify-content:center;gap:3px;height:36px}.rec-waveform-bar{width:3px;border-radius:2px;background:var(--frost-danger);opacity:.6;animation:rec-wave 1.2s ease-in-out infinite}@keyframes rec-wave{0%,to{transform:scaleY(.4)}50%{transform:scaleY(1)}}.rec-timer{font-size:15px;font-weight:600;color:var(--frost-danger);font-variant-numeric:tabular-nums;min-width:48px;text-align:center;flex-shrink:0}.rec-cancel-btn{padding:8px 16px;border:1px solid var(--frost-border);border-radius:20px;background:var(--frost-surface);color:var(--frost-text-secondary);font-size:13px;cursor:pointer;transition:all .2s;flex-shrink:0}.rec-cancel-btn:hover{background:#dc26260f;color:var(--frost-danger);border-color:#dc262633}.rec-send-btn{width:44px;height:44px;border-radius:50%;border:none;background:var(--frost-danger);color:#fff;font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .2s;box-shadow:0 2px 8px #dc26264d;animation:rec-btn-pulse 2s ease-in-out infinite}@keyframes rec-btn-pulse{0%,to{box-shadow:0 2px 8px #dc26264d}50%{box-shadow:0 2px 16px #dc262680}}.rec-send-btn:hover{transform:scale(1.08);background:var(--frost-danger-hover)}.tts-btn{display:inline-flex;align-items:center;justify-content:center;margin-top:8px;padding:4px 10px;border:1px solid var(--frost-border);border-radius:6px;background:transparent;color:var(--frost-text-secondary);font-size:14px;cursor:pointer;transition:all .2s}.tts-btn:hover{background:var(--frost-accent-glow);color:var(--frost-accent)}.tts-btn:disabled{opacity:.4;cursor:not-allowed}.tts-control-bar{display:flex;align-items:center;gap:10px;padding:8px 16px;background:linear-gradient(135deg,#f0f9ff,#e0f2fe);border-top:1px solid var(--frost-border)}.tts-ctrl-btn{width:32px;height:32px;border:1px solid var(--frost-border);border-radius:50%;background:#fff;color:var(--frost-accent);font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.tts-ctrl-btn:hover{background:var(--frost-accent);color:#fff}.tts-stop-btn{color:var(--frost-danger)}.tts-stop-btn:hover{background:var(--frost-danger);color:#fff}.tts-ctrl-label{font-size:13px;color:var(--frost-text-secondary);flex:1}.voice-bubble{display:flex;align-items:center;gap:10px;min-width:200px;flex-wrap:wrap}.voice-play-btn{width:36px;height:36px;border-radius:50%;border:none;background:#fff3;color:#fff;font-size:13px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .2s;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.voice-play-btn:hover{background:#ffffff59;transform:scale(1.1)}.voice-bars{display:flex;align-items:center;gap:2.5px;height:28px;flex:1}.voice-bar{width:3px;border-radius:2px;background:#ffffff8c;transition:height .15s ease}.voice-duration{font-size:12px;color:#fffc;flex-shrink:0;font-variant-numeric:tabular-nums}.voice-transcribing{font-size:12px;color:#ffffffb3;width:100%;margin-top:6px;display:flex;align-items:center;gap:6px}.voice-transcribing:before{content:"";width:6px;height:6px;border-radius:50%;background:#ffffffb3;animation:pulse 1.2s ease-in-out infinite}.voice-text{width:100%;margin-top:8px;font-size:13px;color:#ffffffe6;border-top:1px solid rgba(255,255,255,.15);padding-top:8px;line-height:1.5}.message.assistant .voice-bubble .voice-play-btn{background:#0284c71f;color:var(--frost-accent)}.message.assistant .voice-bubble .voice-play-btn:hover{background:#0284c733}.message.assistant .voice-bubble .voice-bar{background:#0284c759}.message.assistant .voice-bubble .voice-duration{color:var(--frost-text-secondary)}.message.assistant .voice-bubble .voice-transcribing{color:var(--frost-text-muted)}.message.assistant .voice-bubble .voice-transcribing:before{background:var(--frost-text-muted)}.message.assistant .voice-bubble .voice-text{color:var(--frost-text);border-top-color:var(--frost-border)}::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#003c781f;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#003c7833}::selection{background:#0284c733;color:#1e293b}@media(max-width:768px){.sidebar{position:fixed;top:0;left:0;width:100%;height:100vh;z-index:100;transition:transform .3s cubic-bezier(.4,0,.2,1)}.sidebar:not(.open){margin-left:0;transform:translate(-100%)}.sidebar.open{transform:translate(0)}.sidebar-backdrop{display:block;position:fixed;top:0;left:0;width:100%;height:100%;background:#0000004d;z-index:99;animation:fade-in .2s ease-out}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.login-card{width:calc(100% - 32px);max-width:380px;padding:32px 24px}.login-card h1{font-size:22px}.chat-header{padding:10px 12px;gap:8px}.chat-header>span:first-of-type{font-size:14px}.gw-status{font-size:11px;padding:3px 8px}.messages{padding:16px 12px;gap:14px}.message-bubble{max-width:88%;padding:10px 14px;font-size:14px;border-radius:12px}.message-bubble pre{padding:10px;font-size:12px}.message-bubble code{font-size:12px}.empty-state h2{font-size:18px}.empty-state p{font-size:13px}.input-area{padding:10px 12px;gap:8px}.input-area textarea{padding:10px 12px;font-size:14px;min-height:40px;border-radius:20px}.input-area button:not(.mic-btn){padding:10px 16px;font-size:14px;border-radius:20px}.mic-btn{width:40px;height:40px;font-size:16px}.recording-overlay{padding:10px 12px;gap:10px}.rec-waveform{height:30px}.rec-timer{font-size:14px;min-width:40px}.rec-cancel-btn{padding:6px 12px;font-size:12px}.rec-send-btn{width:40px;height:40px;font-size:18px}.voice-bubble{min-width:150px}.voice-play-btn{width:32px;height:32px}.tts-btn{padding:4px 8px;font-size:13px}}@media(max-width:380px){.login-card{padding:24px 16px}.login-card h1{font-size:20px}.login-card input{padding:10px 12px;font-size:14px}.login-card button{padding:10px;font-size:14px}.messages{padding:12px 8px}.message-bubble{max-width:92%;padding:8px 12px;font-size:13.5px}.input-area{padding:8px;gap:6px}.input-area textarea{padding:8px 12px}.input-area button:not(.mic-btn){padding:8px 12px;font-size:13px}.recording-overlay{padding:8px;gap:8px}.rec-cancel-btn{padding:5px 10px}}
