@import url("https://fonts.googleapis.com/css2?family=Libre+Baskerville:ital,wght@0,400;0,700;1,400&family=Special+Elite&display=swap");*{box-sizing:border-box;margin:0;padding:0}:root{--background:#f9f7f2;--background-warm:#f5f2eb;--surface:#ffffff;--text-primary:#2d2a26;--text-secondary:#6b6560;--text-muted:#9a958e;--accent:#8b7355;--accent-hover:#6d5a44;--border:#e8e4dc;--border-light:#f0ece4;--shadow:rgba(45,42,38,0.08);--shadow-strong:rgba(45,42,38,0.15)}body,html{font-family:Libre Baskerville,Georgia,Times New Roman,serif;background:var(--background);color:var(--text-primary);overflow:hidden;position:fixed;width:100%}#root,body,html{height:100%}.container{height:100vh;display:flex;flex-direction:column;background:var(--background)}.main{position:relative}.chat-panel,.main{flex:1 1;display:flex;overflow:hidden;background:var(--background)}.chat-panel{flex-direction:column;transition:padding-right .3s ease}.chat-panel-with-trace{padding-right:420px}.panel-header{padding:0 2rem;background:var(--background);display:flex;justify-content:space-between;align-items:center;height:60px;box-sizing:border-box;flex-shrink:0;border-bottom:1px solid var(--border-light)}.panel-header h2{font-size:.9rem;font-weight:400;color:var(--text-secondary);letter-spacing:.05em;text-transform:uppercase}.messages{flex:1 1;overflow-y:auto;padding:3rem 2rem;display:flex;flex-direction:column;gap:2.5rem;background:var(--background);max-width:800px;margin:0 auto;width:100%}.messages-empty{justify-content:center;align-items:center}.message{max-width:100%;padding:0;word-wrap:break-word;white-space:pre-wrap;line-height:1.8;font-size:1.05rem;border-radius:0;background:transparent}.message.user{align-self:flex-end;text-align:right;color:var(--text-secondary);font-style:italic;padding-right:1.5rem;border-right:2px solid var(--accent);max-width:85%}.message.assistant{align-self:flex-start;font-family:Special Elite,Courier New,monospace;color:var(--text-primary);letter-spacing:.02em;line-height:2.2;padding-left:0;max-width:50%}.message-images{margin-top:1.5rem;display:flex;flex-direction:column;gap:1rem}.message-image{max-width:100%;border-radius:4px;border:1px solid var(--border);box-shadow:0 4px 12px var(--shadow)}.input-area{padding:1.5rem 2rem 2rem;background:var(--background);max-width:800px;margin:0 auto;width:100%}.input-form{display:flex;gap:1rem;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:.5rem;box-shadow:0 2px 8px var(--shadow);transition:all .2s}.input-form:focus-within{border-color:var(--accent);box-shadow:0 4px 16px var(--shadow-strong)}.input-field{flex:1 1;padding:1rem 1.25rem;border:none;font-size:1rem;font-family:Libre Baskerville,Georgia,serif;background:transparent;color:var(--text-primary)}.input-field:focus{outline:none}.input-field::placeholder{color:var(--text-muted);font-style:italic}.send-button{padding:1rem 1.75rem;background:var(--accent);color:var(--surface);border:none;border-radius:8px;font-size:.9rem;font-weight:500;font-family:Libre Baskerville,Georgia,serif;cursor:pointer;transition:all .2s;letter-spacing:.05em}.send-button:hover:not(:disabled){background:var(--accent-hover)}.send-button:disabled{background:var(--border);color:var(--text-muted);cursor:not-allowed}.empty-state{flex:1 1;display:flex;align-items:center;justify-content:center;padding:3rem}.empty-state-logo{opacity:.12;width:auto;height:auto;max-width:50%;object-fit:contain;filter:sepia(20%)}.error-message{background:#fef2f2;color:#991b1b;padding:1rem 1.25rem;border-radius:8px;margin-bottom:1rem;border:1px solid #fee2e2;font-size:.9rem}.trace-panel{position:fixed;top:0;right:0;bottom:0;width:420px;background:var(--surface);border-left:1px solid var(--border);display:flex;flex-direction:column;transform:translateX(100%);transition:transform .3s ease;z-index:100;box-shadow:-4px 0 24px var(--shadow)}.trace-panel-visible{transform:translateX(0)}.trace-panel .panel-header{background:var(--surface);border-bottom:1px solid var(--border)}.trace-list{flex:1 1;overflow-y:auto;padding:1.5rem;background:var(--background-warm)}.trace-event{padding:1rem;margin-bottom:1rem;border-radius:8px;border-left:3px solid var(--border);background:var(--surface);box-shadow:0 1px 4px var(--shadow)}.trace-event.USER{border-left-color:var(--accent)}.trace-event.ASSISTANT{border-left-color:#5a9}.trace-event.TOOL_CALL{border-left-color:#d4a574}.trace-event.TOOL_RESULT{border-left-color:#7eb8b8}.trace-event.ERROR{border-left-color:#c97a7a;background:#fef8f8}.trace-event.LLM_PROMPT{border-left-color:#9b8bb8;background:#faf8fd}.trace-event.CONFIG{border-left-color:#7b9b6b;background:#f8fdf6}.trace-event.IMAGE{border-left-color:#6b8b9b;background:#f6fafc}.trace-event.THINKING{border-left-color:#b88b9b;background:#fdf6f8}.trace-header{display:flex;align-items:center;gap:.5rem;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:.25rem;margin:-.25rem -.25rem .25rem;border-radius:4px;transition:background .15s;cursor:pointer;flex-wrap:wrap;overflow:hidden}.trace-header:hover{background:var(--background)}.trace-expand-icon{font-size:.65rem;color:var(--text-muted);width:12px;display:inline-block}.trace-step{font-size:.7rem;color:var(--text-muted);letter-spacing:.08em}.trace-badge,.trace-step{font-weight:600;text-transform:uppercase;font-family:system-ui,sans-serif}.trace-badge{font-size:.6rem;padding:.2rem .5rem;border-radius:4px;letter-spacing:.05em}.trace-badge.USER{background:var(--accent);color:white}.trace-badge.ASSISTANT{background:#5a9;color:white}.trace-badge.TOOL_CALL{background:#d4a574;color:white}.trace-badge.TOOL_RESULT{background:#7eb8b8;color:white}.trace-badge.ERROR{background:#c97a7a;color:white}.trace-badge.LLM_PROMPT{background:#9b8bb8;color:white}.trace-badge.CONFIG{background:#7b9b6b;color:white}.trace-badge.IMAGE{background:#6b8b9b;color:white}.trace-badge.THINKING{background:#b88b9b;color:white}.trace-copy-button{margin-left:auto;padding:.25rem .5rem;background:transparent;border:1px solid var(--border);border-radius:4px;font-size:.85rem;cursor:pointer;color:var(--text-muted);transition:all .15s;line-height:1}.trace-copy-button:hover{background:var(--background);border-color:var(--text-muted);color:var(--text-secondary)}.trace-content{font-size:.85rem;color:var(--text-secondary);margin-bottom:.5rem;line-height:1.5;font-family:system-ui,sans-serif}.trace-data{background:var(--background);border:1px solid var(--border);border-radius:6px;padding:.75rem;font-family:SF Mono,Monaco,Cascadia Code,Courier New,monospace;font-size:.75rem;overflow-x:auto;color:var(--text-secondary);line-height:1.6}.trace-data,.trace-data pre{white-space:pre-wrap;word-wrap:break-word}.trace-data pre{margin:0;font-family:inherit;font-size:inherit;line-height:1.5}.tts-toggle-button{display:flex;align-items:center;justify-content:center;width:36px;height:36px;background:var(--surface);color:var(--text-muted);border:1px solid var(--border);border-radius:6px;font-size:1.1rem;cursor:pointer;transition:all .2s}.tts-toggle-button:hover{background:var(--background);border-color:var(--accent);color:var(--accent)}.tts-toggle-button.tts-enabled{background:var(--accent);border-color:var(--accent);color:white}.tts-toggle-button.tts-enabled:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:white}.tts-play-button{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;margin-left:.75rem;margin-top:.5rem;background:transparent;color:var(--text-muted);border:1px solid var(--border);border-radius:50%;font-size:.85rem;cursor:pointer;transition:all .2s;opacity:.6;vertical-align:middle}.tts-play-button:hover{opacity:1;background:var(--background);border-color:var(--accent);color:var(--accent)}.tts-play-button.playing{opacity:1;background:var(--accent);border-color:var(--accent);color:white;animation:pulse 1.5s infinite}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.mic-button{display:flex;align-items:center;justify-content:center;width:44px;height:44px;background:var(--surface);color:var(--text-muted);border:1px solid var(--border);border-radius:50%;font-size:1.2rem;cursor:pointer;transition:all .2s;flex-shrink:0}.mic-button:hover:not(:disabled){background:var(--background);border-color:var(--accent);color:var(--accent)}.mic-button:disabled{opacity:.5;cursor:not-allowed}.mic-button.recording{background:#dc2626;border-color:#dc2626;color:white;animation:pulse 1s infinite}.mic-button.transcribing{background:var(--accent);border-color:var(--accent);color:white;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.trace-toggle-button{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:var(--surface);color:var(--text-secondary);border:1px solid var(--border);border-radius:6px;font-size:.8rem;font-weight:500;font-family:system-ui,sans-serif;cursor:pointer;transition:all .2s}.trace-toggle-button:hover{background:var(--background);border-color:var(--accent);color:var(--accent)}.trace-close-button{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:transparent;color:var(--text-muted);border:none;font-size:1.25rem;cursor:pointer;transition:all .2s;border-radius:4px}.trace-close-button:hover{color:var(--text-primary);background:var(--background)}.messages::-webkit-scrollbar,.trace-list::-webkit-scrollbar{width:6px}.messages::-webkit-scrollbar-track,.trace-list::-webkit-scrollbar-track{background:transparent}.messages::-webkit-scrollbar-thumb,.trace-list::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.messages::-webkit-scrollbar-thumb:hover,.trace-list::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.header-actions{display:flex;align-items:center;gap:1rem}.user-name{font-size:.85rem;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.logout-button,.user-name{color:var(--text-muted);font-family:system-ui,sans-serif}.logout-button{padding:.5rem 1rem;background:transparent;text-decoration:none;border:1px solid var(--border);border-radius:6px;font-size:.8rem;font-weight:500;transition:all .2s}.logout-button:hover{background:var(--background-warm);color:var(--text-secondary);border-color:var(--text-muted)}.auth-loading,.auth-screen{flex:1 1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;text-align:center;background:var(--background);min-height:100vh}.auth-loading p,.auth-screen p{color:var(--text-muted);font-size:1rem;margin-top:1.5rem;font-style:italic}.login-button{display:inline-block;margin-top:2rem;padding:1rem 2.5rem;background:var(--accent);color:var(--surface);text-decoration:none;border-radius:8px;font-size:1rem;font-weight:500;font-family:Libre Baskerville,Georgia,serif;transition:all .2s;box-shadow:0 4px 12px var(--shadow)}.login-button:hover{background:var(--accent-hover);transform:translateY(-2px);box-shadow:0 6px 16px var(--shadow-strong)}@media (max-width:768px){body,html{position:fixed;overflow:hidden;height:100%;width:100%}.container{height:100dvh;height:100vh;display:flex}.container,.main{overflow:hidden;flex-direction:column}.main{gap:0;flex:1 1;min-height:0}.chat-panel,.chat-panel-with-trace{min-width:unset;flex:1 1;height:100%;display:flex;flex-direction:column;min-height:0;padding-right:0}.messages{padding:1.5rem 1.25rem;gap:2rem;flex:1 1;min-height:0;overflow-y:auto}.message{font-size:.95rem;line-height:1.7}.message.assistant{line-height:1.9;max-width:85%}.input-area{padding:1rem 1.25rem max(1rem,env(safe-area-inset-bottom));flex-shrink:0}.input-form{padding:.375rem}.input-field{padding:.875rem 1rem;font-size:16px}.send-button{padding:.875rem 1.25rem;font-size:.85rem}.trace-panel{width:100%;left:0;z-index:200}.panel-header{padding:1rem 1.25rem}.user-name{display:none}.header-actions{gap:.5rem}}@media (max-width:480px){.message.user{max-width:90%;padding-right:1rem}.input-field{font-size:16px}}