:root{--bg-0:#0b1220;--bg-1:#0f172a;--bg-2:#131c31;--surface:#1a2236;--surface-2:#232c45;--border:#2a3550;--border-strong:#3a4866;--text:#e6ecf5;--text-dim:#a8b3c7;--text-mute:#7c8aa6;--primary:#4f8cff;--primary-hover:#629bff;--primary-soft:#1e3a8a40;--success:#34d399;--warning:#fbbf24;--danger:#f87171;--user-bubble:linear-gradient(135deg,#2a4eb8,#3b5fd9);--assistant-bubble:#1a2236;--shadow-sm:0 1px 2px rgba(0,0,0,0.25);--shadow-md:0 4px 12px rgba(0,0,0,0.35);--shadow-lg:0 8px 32px rgba(0,0,0,0.45);--radius-sm:6px;--radius:10px;--radius-lg:14px;--radius-xl:18px;--transition:160ms cubic-bezier(0.4,0,0.2,1)}*{box-sizing:border-box}body,html{margin:0;padding:0;background:radial-gradient(circle at top,#14213d 0,var(--bg-0) 60%);color:var(--text);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;font-feature-settings:"cv02","cv03","cv04","cv11";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100dvh}button{font-family:inherit}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--primary);outline-offset:2px}input,textarea{font-family:inherit}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:8px;border:2px solid transparent;background-clip:padding-box}::-webkit-scrollbar-thumb:hover{background:var(--border-strong);background-clip:padding-box;border:2px solid transparent}@keyframes shimmer{0%{transform:translateX(-100%)}to{transform:translateX(100%)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse-ring{0%{box-shadow:0 0 0 0 rgba(220,38,38,.55)}70%{box-shadow:0 0 0 12px rgba(220,38,38,0)}to{box-shadow:0 0 0 0 rgba(220,38,38,0)}}.app-shell{height:100dvh;display:flex;flex-direction:column;overflow:hidden}.app-header{justify-content:space-between;padding:12px 20px;background:linear-gradient(180deg,rgba(26,34,54,.92),rgba(15,23,42,.78));border-bottom:1px solid var(--border);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.app-header,.app-header__brand{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.app-header__title{font-size:16px;font-weight:600;letter-spacing:-.01em;background:linear-gradient(135deg,#ffffff,#c7d4f0);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.app-header__user{display:flex;align-items:center;gap:10px}.app-header__email{font-size:12px;color:var(--text-mute);max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 14px;font-size:13px;font-weight:500;border-radius:var(--radius);border:1px solid transparent;cursor:pointer;transition:background var(--transition),border-color var(--transition),transform var(--transition),opacity var(--transition);white-space:nowrap}.btn:disabled{cursor:not-allowed;opacity:.5}.btn-ghost{background:transparent;border-color:var(--border);color:var(--text-dim)}.btn-ghost:hover:not(:disabled){background:var(--surface);border-color:var(--border-strong);color:var(--text)}.btn-primary{background:linear-gradient(180deg,var(--primary),#3b6fdb);color:#fff;box-shadow:0 1px 0 rgba(255,255,255,.08) inset,var(--shadow-sm)}.btn-primary:hover:not(:disabled){background:linear-gradient(180deg,var(--primary-hover),#4f7ee5)}.btn-success{background:linear-gradient(180deg,#10b981,#059669);color:#fff}.btn-success:hover:not(:disabled){filter:brightness(1.08)}.btn-danger{background:transparent;border-color:rgba(220,38,38,.5);color:var(--danger)}.btn-danger:hover:not(:disabled){background:rgba(220,38,38,.1);border-color:var(--danger)}.chat-shell{flex:1 1;display:flex;flex-direction:column;width:100%;max-width:980px;margin:0 auto;padding:0 20px;min-height:0}.chat-stream{flex:1 1;overflow-y:auto;padding:20px 4px;min-height:0;scroll-behavior:smooth}.message-row{display:flex;margin-bottom:14px;animation:fadeInUp .22s ease-out}.message-bubble{max-width:86%;padding:12px 16px;border-radius:var(--radius-lg);font-size:14.5px;line-height:1.55;box-shadow:var(--shadow-sm);word-wrap:break-word}.message-bubble--user{background:var(--user-bubble);color:#ffffff;border-bottom-right-radius:4px}.message-bubble--assistant{background:var(--assistant-bubble);border:1px solid var(--border);border-bottom-left-radius:4px}.message-bubble--error{background:linear-gradient(135deg,#7f1d1d,#991b1b);border:1px solid rgba(248,113,113,.3)}.composer{border-top:1px solid var(--border);padding:14px 0 18px;gap:10px;background:linear-gradient(180deg,transparent,rgba(11,18,32,.4))}.composer,.composer-card{display:flex;flex-direction:column}.composer-card{gap:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);box-shadow:var(--shadow-md);transition:border-color var(--transition),box-shadow var(--transition)}.composer-card:focus-within{border-color:var(--primary);box-shadow:0 0 0 4px rgba(79,140,255,.15),var(--shadow-md)}.composer-textarea{width:100%;min-height:64px;max-height:320px;padding:14px 18px;font-size:16px;line-height:1.55;background:transparent;border:none;color:var(--text);resize:none;outline:none}.composer-textarea::placeholder{color:var(--text-mute)}.composer-toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px 10px;border-top:1px solid rgba(255,255,255,.04)}.composer-tools{display:flex;gap:6px;flex-wrap:wrap}.tool-button{display:inline-flex;align-items:center;gap:6px;padding:8px 12px;background:transparent;border:1px solid transparent;border-radius:var(--radius);color:var(--text-dim);font-size:13px;font-weight:500;cursor:pointer;transition:background var(--transition),color var(--transition),border-color var(--transition)}.tool-button:hover:not(:disabled){background:var(--surface-2);color:var(--text);border-color:var(--border)}.tool-button:disabled{cursor:not-allowed;opacity:.45}.tool-button--recording{background:rgba(220,38,38,.15);color:#fecaca;border-color:rgba(220,38,38,.5);animation:pulse-ring 1.6s infinite}.send-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 18px;font-size:14px;font-weight:600;border-radius:var(--radius);border:none;background:linear-gradient(180deg,var(--primary),#3b6fdb);color:#fff;cursor:pointer;transition:filter var(--transition),opacity var(--transition),transform var(--transition);box-shadow:var(--shadow-sm)}.send-button:hover:not(:disabled){filter:brightness(1.1)}.send-button:active:not(:disabled){transform:scale(.97)}.send-button:disabled{background:var(--surface-2);color:var(--text-mute);cursor:not-allowed}.image-preview{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--surface-2);border-bottom:1px solid var(--border);border-top-left-radius:var(--radius-xl);border-top-right-radius:var(--radius-xl)}.image-preview img{height:56px;width:56px;object-fit:cover;border-radius:var(--radius-sm);border:1px solid var(--border)}.image-preview__meta{flex:1 1;font-size:13px;color:var(--text-dim)}.dropzone-overlay{position:absolute;inset:0;border-radius:var(--radius-xl);background:rgba(79,140,255,.08);border:2px dashed var(--primary);display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--primary);pointer-events:none;z-index:5}.transcript{margin:0 12px;padding:8px 12px;color:var(--text-dim);background:var(--surface-2);border-radius:var(--radius);border:1px solid var(--border)}.parsing-hint,.transcript{font-size:13px;font-style:italic}.parsing-hint{color:var(--text-mute);padding:10px 14px;display:inline-flex;align-items:center;gap:8px}.parsing-hint:before{content:"";width:12px;height:12px;border:2px solid var(--text-mute);border-top:2px solid transparent;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.cancel-bar{display:flex;justify-content:flex-end}