:root{--bg-primary: #0a0e14;--bg-secondary: #111820;--bg-tertiary: #1a2230;--bg-input: #0d1219;--bg-hover: #1e2a3a;--border: rgba(255, 255, 255, .08);--border-hover: rgba(255, 255, 255, .15);--text-primary: #e8ecf1;--text-secondary: #8b95a5;--text-muted: #5a6577;--accent: #2563eb;--accent-hover: #3b82f6;--accent-soft: rgba(37, 99, 235, .15);--green: #16a34a;--green-soft: rgba(22, 163, 74, .15);--red: #dc2626;--amber: #f59e0b;--amber-soft: rgba(245, 158, 11, .15);--purple: #8b5cf6;--purple-soft: rgba(139, 92, 246, .15);--radius: 12px;--radius-sm: 8px;--radius-xs: 6px}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%;width:100%;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,Roboto,sans-serif;font-size:14px;line-height:1.5;background:var(--bg-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}input,textarea{font-family:inherit;font-size:inherit;color:inherit;border:none;outline:none;background:none}input::-webkit-calendar-picker-indicator,textarea::-webkit-calendar-picker-indicator{display:none}input[type=text]::-webkit-contacts-auto-fill-button,input[type=text]::-webkit-credentials-auto-fill-button{display:none!important}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#ffffff14;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#ffffff26}.login-gate{height:100%;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#0a0e14,#111820,#0a0e14);padding:20px}.login-card{display:flex;flex-direction:column;align-items:center;gap:24px;max-width:320px;width:100%}.login-logo{display:flex;flex-direction:column;align-items:center;gap:4px;margin-bottom:16px}.login-logo-gradient{font-size:36px;font-weight:700;background:linear-gradient(135deg,var(--accent),#7c3aed);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.login-logo-sub{font-size:14px;color:var(--text-muted);font-weight:400}.login-btn-wrap{min-height:44px;display:flex;align-items:center;justify-content:center}.login-error{color:var(--red);font-size:13px;text-align:center;padding:8px 16px;background:#dc26261a;border-radius:var(--radius-sm)}.login-footer{color:var(--text-muted);font-size:12px;text-align:center}.chat-panel{display:flex;flex-direction:column;height:100%;min-height:0;overflow:clip}.chat-messages{flex:1 1 auto;min-height:0;overflow-y:auto;padding:20px 20px 12px;display:flex;flex-direction:column;gap:16px}.msg-row{display:flex;gap:10px;align-items:flex-start;max-width:100%}.msg-row.user{flex-direction:row-reverse}.msg-avatar{flex:0 0 auto}.avatar{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}.avatar-bot{background:linear-gradient(135deg,var(--accent),#7c3aed);color:#fff}.avatar-user{background:var(--bg-tertiary);color:var(--text-secondary)}.msg-bubble{max-width:80%;padding:10px 14px;border-radius:16px;font-size:14px;line-height:1.55;word-break:break-word}.msg-row.assistant .msg-bubble{background:var(--bg-secondary);border:1px solid var(--border);border-radius:16px 16px 16px 4px}.msg-row.user .msg-bubble{background:var(--accent);color:#fff;border-radius:16px 16px 4px}.msg-row.system .msg-bubble{background:var(--amber-soft);color:var(--amber);border-radius:var(--radius-sm);font-size:13px;max-width:90%}.msg-bubble p{margin:0}.msg-bubble p+p{margin-top:8px}.msg-bubble ul,.msg-bubble ol{margin:6px 0;padding-left:20px}.msg-bubble li{margin:2px 0}.msg-bubble strong{font-weight:600}.msg-bubble em{font-style:italic;color:var(--text-secondary)}.msg-bubble code{background:#ffffff14;padding:1px 5px;border-radius:4px;font-size:13px;font-family:SF Mono,Fira Code,monospace}.msg-bubble h2,.msg-bubble h3{font-size:14px;font-weight:600;margin:8px 0 4px}.msg-bubble h2:first-child,.msg-bubble h3:first-child{margin-top:0}.msg-bubble.typing{display:flex;gap:4px;padding:14px 18px}.dot{width:6px;height:6px;border-radius:50%;background:var(--text-muted);animation:bounce 1.4s infinite both}.dot:nth-child(2){animation-delay:.16s}.dot:nth-child(3){animation-delay:.32s}@keyframes bounce{0%,80%,to{transform:translateY(0)}40%{transform:translateY(-6px)}}.tool-calls{margin-top:8px;border-top:1px solid var(--border);padding-top:6px}.tool-calls-toggle{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-muted);padding:3px 0}.tool-calls-toggle:hover{color:var(--text-secondary)}.tool-calls-detail{margin-top:6px;display:flex;flex-direction:column;gap:4px}.tool-call-item{font-size:12px;padding:4px 8px;background:#ffffff08;border-radius:var(--radius-xs)}.tool-call-name{color:var(--accent);font-family:SF Mono,monospace}.tool-call-skill{margin-left:6px;color:var(--text-muted);font-size:11px}.tool-call-result{margin-top:2px;color:var(--text-secondary);font-size:11px;white-space:pre-wrap}.verification-banner{display:flex;align-items:center;gap:8px;padding:8px 20px;background:var(--amber-soft);color:var(--amber);font-size:12px;font-weight:500;flex:0 0 auto}.chat-input-dock{flex:0 0 auto;padding:12px 20px 20px}.chat-input-wrap{display:flex;align-items:flex-end;gap:8px;background:var(--bg-input);border:1px solid var(--border);border-radius:20px;padding:6px 6px 6px 14px;transition:border-color .2s}.chat-input-wrap:focus-within{border-color:var(--accent)}.chat-input{flex:1;resize:none;min-height:24px;max-height:120px;padding:4px 0;line-height:1.4;background:transparent}.chat-input::placeholder{color:var(--text-muted)}.chat-input:disabled{opacity:.5}.call-fab{flex:0 0 auto;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--green);background:#16a34a1f;transition:all .2s}.call-fab:hover{background:#16a34a40;transform:scale(1.08)}.call-fab:active{transform:scale(.95)}.voice-btn{flex:0 0 auto;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--text-muted);transition:all .2s}.voice-btn:hover{color:var(--text-primary);background:var(--bg-tertiary)}.voice-btn.listening{color:#fff;background:var(--red);animation:pulse 1.5s infinite}@keyframes pulse{0%,to{box-shadow:0 0 #dc262666}50%{box-shadow:0 0 0 8px #dc262600}}.send-btn{flex:0 0 auto;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--accent);color:#fff;transition:all .15s}.send-btn:hover:not(:disabled){background:var(--accent-hover)}.send-btn:disabled{opacity:.3;cursor:default}.plugin-panel{height:100%;width:100%;display:flex;flex-direction:column}.plugin-panel iframe{border:none;width:100%;flex:1;min-height:0}.plugin-locked{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:12px;color:var(--text-muted)}.plugin-locked svg{opacity:.4}.plugin-locked p{font-size:13px}.voice-overlay{position:fixed;inset:0;z-index:100;display:flex;flex-direction:column;background:linear-gradient(180deg,#0a0e14,#111820,#0a0e14);color:var(--text-primary)}.voice-header{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;padding-top:max(12px,env(safe-area-inset-top))}.voice-status{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:500;color:var(--text-secondary)}.voice-indicator{width:10px;height:10px;border-radius:50%;background:var(--text-muted)}.voice-indicator.connecting{background:var(--amber);animation:pulse-glow 1.5s ease-in-out infinite}.voice-indicator.connected{background:var(--green);box-shadow:0 0 8px #16a34a99}.voice-indicator.error{background:var(--red)}.voice-close{width:32px;height:32px;border-radius:50%;background:#ffffff14;color:var(--text-secondary);font-size:16px;display:flex;align-items:center;justify-content:center;transition:background .15s}.voice-close:hover{background:#ffffff26}.voice-visualizer{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px 20px}.voice-orb{position:relative;width:120px;height:120px;display:flex;align-items:center;justify-content:center}.orb-core{width:60px;height:60px;border-radius:50%;background:linear-gradient(135deg,var(--accent),#7c3aed);box-shadow:0 0 30px #2563eb4d;transition:transform .3s,box-shadow .3s}.voice-orb.active .orb-core{box-shadow:0 0 40px #2563eb80}.voice-orb.listening .orb-core{transform:scale(1.15);box-shadow:0 0 50px #2563eb99}.orb-ring{position:absolute;border-radius:50%;border:1px solid rgba(37,99,235,.15);animation:orb-pulse 3s ease-in-out infinite}.orb-ring:nth-child(1){width:90px;height:90px;animation-delay:0s}.orb-ring:nth-child(2){width:120px;height:120px;animation-delay:.5s}.voice-orb.active .orb-ring{border-color:#2563eb40}.voice-connecting-text,.voice-error-text{margin-top:16px;font-size:13px;color:var(--text-muted)}.voice-error-text{color:var(--red)}.voice-transcript{flex:1;overflow-y:auto;padding:16px 20px;display:flex;flex-direction:column;gap:8px;mask-image:linear-gradient(transparent 0%,black 5%,black 95%,transparent 100%);-webkit-mask-image:linear-gradient(transparent 0%,black 5%,black 95%,transparent 100%)}.transcript-line{display:flex;gap:8px;font-size:14px;line-height:1.5;animation:fade-in .2s ease}.transcript-role{flex:0 0 auto;font-size:10px;font-weight:700;letter-spacing:.5px;padding-top:3px;min-width:28px}.transcript-line.user .transcript-role{color:#a78bfa}.transcript-line.ai .transcript-role{color:#38bdf8}.transcript-line.tool .transcript-role{color:#facc15}.transcript-line.tool .transcript-text{color:var(--text-muted);font-style:italic;font-size:12px}.transcript-text{color:var(--text-primary)}.transcript-line.partial .transcript-text{color:var(--text-secondary)}.voice-controls{flex:0 0 auto;display:flex;justify-content:center;padding:20px;padding-bottom:max(20px,env(safe-area-inset-bottom))}.hangup-btn{display:flex;align-items:center;gap:8px;padding:14px 32px;border-radius:999px;background:var(--red);color:#fff;font-size:15px;font-weight:600;transition:transform .15s,background .15s}.hangup-btn:hover{transform:scale(1.03)}.hangup-btn:active{transform:scale(.97)}.hangup-btn svg{width:20px;height:20px}@keyframes orb-pulse{0%,to{transform:scale(1);opacity:.4}50%{transform:scale(1.1);opacity:.15}}@keyframes pulse-glow{0%,to{opacity:1}50%{opacity:.4}}@keyframes fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.app{display:flex;flex-direction:column;height:100%;overflow:hidden}.app-header{flex:0 0 auto;display:flex;align-items:center;gap:16px;padding:0 20px;height:48px;background:#0d1219f2;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);z-index:10}.app-logo{display:flex;align-items:baseline;gap:8px}.logo-gradient{font-size:18px;font-weight:700;background:linear-gradient(135deg,var(--accent),#7c3aed);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.logo-version{font-size:10px;color:var(--text-muted);opacity:.5}.logo-subtitle{font-size:12px;color:var(--text-muted);font-weight:400}.header-status{display:flex;align-items:center;gap:6px;margin-left:auto}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--text-muted)}.status-dot.verified{background:var(--green);box-shadow:0 0 6px #16a34a80}.status-dot.pending{background:var(--amber)}.status-dot.failed{background:var(--red)}.status-text{font-size:12px;color:var(--text-secondary)}.mobile-tabs{display:none;gap:2px;margin-left:16px}.mobile-tabs button{font-size:12px;font-weight:500;padding:4px 12px;border-radius:6px;color:var(--text-muted);transition:all .15s}.mobile-tabs button.active{background:var(--accent-soft);color:var(--accent)}.mobile-tabs button:hover:not(.active){color:var(--text-primary)}.app-main{flex:1 1 auto;display:flex;min-height:0;overflow:hidden}.panel-chat{flex:1 1 50%;min-width:0;min-height:0;display:flex;flex-direction:column}.panel-divider{flex:0 0 1px;background:var(--border)}.panel-ui{flex:1 1 50%;min-width:0;min-height:0;background:var(--bg-primary)}.connection-error{display:flex;align-items:center;justify-content:center;height:100%;padding:40px}.error-card{text-align:center;max-width:400px}.error-card h2{font-size:18px;font-weight:600;margin-bottom:8px}.error-card p{color:var(--text-secondary);font-size:13px;margin-bottom:16px}.error-card code{display:block;background:var(--bg-secondary);padding:8px 12px;border-radius:var(--radius-sm);font-size:12px;color:var(--amber);margin-bottom:16px}.retry-btn{padding:8px 20px;background:var(--accent);color:#fff;border-radius:var(--radius-sm);font-size:13px;font-weight:500;transition:background .15s}.retry-btn:hover{background:var(--accent-hover)}@media(max-width:768px){.mobile-tabs{display:flex}.logo-subtitle,.panel-divider{display:none}.panel-chat,.panel-ui{flex:1 1 100%}.mobile-hidden{display:none}.mobile-visible{display:flex}}
