*,:after,:before{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:#f4f5f7;color:#1a1a1a;line-height:1.5}main{min-height:100vh;justify-content:center;padding:2rem 1rem}.chat,main{display:flex}.chat{width:100%;max-width:640px;flex-direction:column;gap:1rem}.chat-header h1{margin:0;font-size:1.5rem;font-weight:600}.subtitle{margin:.25rem 0 0;font-size:.875rem;color:#666}.tts-debug-badge{margin:.25rem 0 0;font-size:.75rem;color:#999;font-family:monospace}.speak-toggle{display:flex;align-items:center;gap:.5rem;margin-top:.75rem;font-size:.875rem;color:#444;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.speak-toggle input{width:1rem;height:1rem;cursor:pointer}.audio-unavailable{font-size:.75rem;color:#888;font-style:italic}.voice-controls{display:flex;flex-direction:column;gap:.5rem}.voice-buttons{display:flex;gap:.5rem;flex-wrap:wrap}.record-btn{padding:.5rem 1rem;border:1px solid #ccc;border-radius:8px;background:#fff;font-size:.875rem;font-weight:500;cursor:pointer}.record-btn:disabled{opacity:.5;cursor:not-allowed}.record-btn:not(:disabled):hover{background:#f5f5f5}.record-btn-stop:not(:disabled){border-color:#b91c1c;color:#b91c1c}.record-btn-stop:not(:disabled):hover{background:#fef2f2}.recording-status{margin:0;font-size:.8125rem;color:#666}.stt-preview{margin:0;font-size:.8125rem;color:#444;font-style:italic}.tool-activity{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:.5rem .75rem;font-size:.8125rem}.tool-activity summary{cursor:pointer;font-weight:600;color:#444}.tool-session-flags{margin:.5rem 0 0;color:#666;font-size:.75rem}.tool-activity-list{list-style:none;margin:.75rem 0 0;padding:0;display:flex;flex-direction:column;gap:.5rem}.tool-card{border-radius:8px;padding:.5rem .625rem;border:1px solid #e8e8e8}.tool-card-fetch{background:#f0f7ff;border-color:#c7ddf5}.tool-card-action{background:#f7f5f0;border-color:#e5dfd0}.tool-card-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.25rem}.tool-badge{font-size:.625rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:.125rem .375rem;border-radius:4px;background:#fff;color:#555}.tool-label{font-weight:600;color:#333}.tool-summary{margin:0 0 .375rem;color:#444}.tool-details{margin:0;display:grid;grid-gap:.25rem;gap:.25rem}.tool-detail-row{display:grid;grid-template-columns:7rem 1fr;grid-gap:.5rem;gap:.5rem;font-size:.75rem}.tool-detail-row dt{color:#888;margin:0}.tool-detail-row dd{margin:0;color:#222;word-break:break-word}.tool-raw{margin-top:.375rem;font-size:.6875rem}.tool-raw pre{margin:.25rem 0 0;padding:.5rem;background:#fafafa;border-radius:4px;overflow-x:auto;max-height:120px}.transcript{flex:1 1;gap:.75rem;background:#fff;border:1px solid #e0e0e0;border-radius:12px;padding:1rem;min-height:360px;max-height:60vh;overflow-y:auto}.message,.transcript{display:flex;flex-direction:column}.message{gap:.25rem;max-width:85%}.message-user{align-self:flex-end}.message-assistant{align-self:flex-start}.message-label{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:#888}.message-user .message-label{text-align:right}.message p{margin:0;padding:.625rem .875rem;border-radius:10px;font-size:.9375rem}.message-user p{background:#2563eb;color:#fff;border-bottom-right-radius:2px}.message-assistant p{background:#f0f0f0;color:#1a1a1a;border-bottom-left-radius:2px}.typing{color:#888;font-style:italic}.error{margin:0;padding:.5rem .75rem;background:#fef2f2;color:#b91c1c;border-radius:8px;font-size:.875rem}.input-row{display:flex;gap:.5rem}.input-row input{flex:1 1;padding:.625rem .875rem;border:1px solid #ccc;border-radius:8px;font-size:1rem}.input-row input:focus{outline:2px solid #2563eb;outline-offset:1px;border-color:#2563eb}.input-row button{padding:.625rem 1.25rem;background:#2563eb;color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:500;cursor:pointer}.input-row button:disabled{opacity:.5;cursor:not-allowed}.input-row button:not(:disabled):hover{background:#1d4ed8}.session-review{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:.5rem .75rem;font-size:.8125rem}.session-review summary{cursor:pointer;font-weight:600;color:#444}.session-review-section{margin-top:.75rem}.session-review-heading{margin:0 0 .5rem;font-size:.8125rem;font-weight:600;color:#333}.session-review-summary{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));grid-gap:.375rem .75rem;gap:.375rem .75rem;margin:0}.session-review-summary dt{font-size:.6875rem;color:#888;text-transform:uppercase;letter-spacing:.03em}.session-review-summary dd{margin:0;font-size:.8125rem;word-break:break-all}.session-review-flags{margin:.5rem 0 0;font-size:.75rem;color:#666}.latency-turns{display:flex;flex-direction:column;gap:.875rem}.latency-turn{border:1px solid #ebebeb;border-radius:6px;padding:.5rem .625rem;background:#fafafa}.latency-turn-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.5rem}.latency-turn-label{font-size:.75rem;font-weight:600;color:#333}.latency-turn-perceived{font-size:.75rem;color:#2563eb;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.latency-bar{display:flex;height:18px;border-radius:4px;overflow:hidden;background:#e5e7eb;margin-bottom:.5rem;gap:1px}.latency-bar-segment{min-width:2px;transition:opacity .15s}.latency-bar-segment--stt{background:#3b82f6}.latency-bar-segment--chat{background:#10b981}.latency-bar-segment--tts{background:#8b5cf6}.latency-bar-segment--play{background:#6b7280}.latency-bar-segment--dominant{filter:brightness(1.1);outline:2px solid #f59e0b;outline-offset:-1px}.latency-legend{display:flex;flex-wrap:wrap;gap:.375rem .75rem;margin-bottom:.5rem}.latency-legend-item{display:flex;align-items:center;gap:.3rem;font-size:.6875rem;color:#555}.latency-legend-dot{width:10px;height:10px;border-radius:2px;flex-shrink:0}.latency-detail{display:grid;grid-template-columns:1fr 1fr;grid-gap:.2rem .75rem;gap:.2rem .75rem;font-size:.6875rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.latency-detail dt{color:#888}.latency-detail dd{margin:0;color:#222}.latency-detail dd.latency-dominant{color:#d97706;font-weight:600}.latency-tool-list{margin:0;padding:0;list-style:none;font-size:.6875rem;color:#555}.latency-no-data{font-size:.75rem;color:#aaa;font-style:italic}.session-timeline{list-style:none;margin:0;padding:0;max-height:200px;overflow-y:auto;display:flex;flex-direction:column;gap:.375rem}.session-timeline-item{display:flex;gap:.5rem;font-size:.75rem;line-height:1.4;padding:.375rem .5rem;border-radius:6px;background:#f8f8f8}.session-timeline-time{flex-shrink:0;color:#888;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.session-eval-controls{display:flex;flex-direction:column;gap:.625rem}.session-eval-controls label{display:flex;flex-direction:column;gap:.25rem;font-size:.75rem;color:#444}.session-eval-controls select,.session-eval-notes textarea{font-size:.8125rem;padding:.375rem .5rem;border:1px solid #ccc;border-radius:6px;font-family:inherit}.session-eval-tags{border:none;margin:0;padding:0}.session-eval-tags legend{font-size:.75rem;color:#444;margin-bottom:.375rem}.session-eval-tag-list{display:flex;flex-wrap:wrap;gap:.375rem .75rem}.session-eval-tag{display:flex;align-items:center;gap:.25rem;font-size:.6875rem;color:#555;cursor:pointer}.session-export-btn{margin-top:.75rem;padding:.5rem 1rem;background:#fff;border:1px solid #ccc;border-radius:8px;font-size:.8125rem;font-weight:500;cursor:pointer}.session-export-btn:hover{background:#f5f5f5}