body{margin:0;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#172026;background:#f8fafc}button,input,select,textarea{font:inherit}button:disabled{cursor:not-allowed;opacity:.55}#app{display:grid;gap:16px;max-width:1280px;margin:0 auto;padding:24px}#index-view{display:grid;gap:16px}#index-columns{display:grid;grid-template-columns:minmax(320px,420px) 1fr;gap:16px;align-items:start}.pane{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;align-content:start;min-width:0}#config-pane{position:sticky;top:24px}.pane-title{margin:0;padding-bottom:4px;color:#4d5d68;font-size:.8125rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;border-bottom:1px solid #d6dde3}.pending-apply-banner{margin-bottom:12px;padding:10px 14px;border:1px solid #c53030;border-radius:6px;background:#fff5f5;color:#9b2c2c;font-size:.9rem;font-weight:700}.pending-apply-banner[hidden]{display:none}.pending-apply-banner-text{display:block}.status-monitor{--status-monitor-user-local: #1864ab;--status-monitor-user-server: #1c7ed6;--status-monitor-ai-server: #b34700;--status-monitor-ai-local: #e8590c;display:grid;gap:6px;min-width:0;padding:10px 12px;border:1px solid #d6dde3;border-radius:6px;background:#fff}.status-monitor-legend{display:flex;flex-wrap:wrap;align-items:center;gap:2px 8px;min-width:0;font-size:.6875rem;line-height:1.4}.status-monitor-legend-item{display:inline-flex;flex:0 0 auto;align-items:center;gap:4px;color:#6b7780;white-space:nowrap}.status-monitor-legend-item[data-on=true]{color:#172026;font-weight:600}.status-monitor-legend-swatch{box-sizing:border-box;width:8px;height:8px;border:1px solid var(--status-monitor-lane-color);border-radius:2px;background:transparent}.status-monitor-legend-item[data-on=true] .status-monitor-legend-swatch{background:var(--status-monitor-lane-color);box-shadow:0 0 4px var(--status-monitor-lane-color)}.status-monitor-legend-state{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;border:0;clip-path:inset(50%);white-space:nowrap}.status-monitor-window-hint{flex:0 0 auto;margin-left:auto;color:#6b7780;font-variant-numeric:tabular-nums}.status-monitor-lanes{display:block;width:100%;height:12px;overflow:hidden;border-radius:2px}.status-monitor-lane-track{fill:#eef1f4}.status-monitor-lane-grid{stroke:#fff;stroke-width:1}.status-monitor-lane-segment{fill:var(--status-monitor-lane-color)}.status-monitor [data-lane=local-userAudio]{--status-monitor-lane-color: var(--status-monitor-user-local)}.status-monitor [data-lane=server-userSpeech]{--status-monitor-lane-color: var(--status-monitor-user-server)}.status-monitor [data-lane=server-aiAudio]{--status-monitor-lane-color: var(--status-monitor-ai-server)}.status-monitor [data-lane=local-aiPlayback]{--status-monitor-lane-color: var(--status-monitor-ai-local)}@media(max-width:860px){#index-columns{grid-template-columns:1fr}#config-pane{position:static}}.tab-nav{display:flex;gap:8px;border-bottom:1px solid #d6dde3}.tab-nav a{display:inline-flex;align-items:center;min-height:44px;padding:0 12px;border-bottom:2px solid transparent;color:#4d5d68;text-decoration:none}.tab-nav a.active{border-bottom-color:#175cd3;color:#172026;font-weight:700}.header,.session-panel,.plugin-switch-panel,.mic-select,.source-list,.text-input,.transcript,.event-log,.e2e-tab{display:flex;flex-wrap:wrap;align-items:center;gap:12px;min-width:0;padding:16px;border:1px solid #d6dde3;border-radius:8px;background:#fff}.header h1,.session-panel h2,.plugin-switch-panel h2,.mic-select h2,.source-list h2,.transcript h2,.e2e-tab h1{margin:0;font-size:1rem}.collapsible-summary{display:flex;align-items:center;gap:8px;cursor:pointer;list-style:none}.collapsible-summary::-webkit-details-marker{display:none}.collapsible-summary:before{flex:0 0 auto;color:#596772;content:"▶";font-size:.75em}details[open]>.collapsible-summary:before{content:"▼"}.collapsible-summary:focus-visible{outline:2px solid #175cd3;outline-offset:3px;border-radius:2px}.collapsible-summary-section{color:#172026;font-size:1rem;font-weight:700}.collapsible-heading{margin:0;font-size:inherit;font-weight:inherit}.collapsible-summary-subsection{padding:6px 8px;border-left:2px solid #dbe2e8;color:#4d5d68;font-size:.875rem;font-weight:700}.api-key-field,.persist-field,.source-mute,.modality-option,.e2e-field{display:inline-flex;align-items:center;gap:6px}.api-key-field input{min-width:260px}.status-badge,.insecure-badge{display:inline-flex;align-items:center;min-height:1.5rem;padding:0 8px;border-radius:999px;font-size:.75rem;font-weight:700}.status-badge{color:#26323a;background:#e7edf2}.status-connected{color:#0f4f2a;background:#dff4e8}.status-error{color:#7d1520;background:#fde2e5}.insecure-badge{color:#fff;background:#b4232f}.source-list,.text-input,.transcript,.event-log{align-items:stretch;flex-direction:column}.text-input-box{min-height:3rem;resize:vertical}.text-input-selected{color:#596772;font-size:.875rem}.text-input-notes{display:grid;gap:4px}.text-input-notes:empty{display:none}.text-input-note{margin:0;color:#596772;font-size:.875rem}.text-pending-list{display:grid;gap:6px;margin:0;padding-left:20px}.text-pending-item{color:#697783}.text-pending-rejected{color:#8a1f2d;text-decoration:line-through}.source-list-items{container-type:inline-size;display:grid;gap:8px}.source-row{display:grid;grid-template-columns:minmax(120px,1fr) minmax(120px,1fr) auto minmax(132px,auto) auto auto auto auto;align-items:center;gap:8px;padding:8px;border:1px solid #dbe2e8;border-radius:6px}.source-ptt{display:grid;gap:4px;min-width:132px}.source-ptt-button{min-height:44px;border:1px solid #175cd3;border-radius:6px;color:#124aa8;background:#eef4ff;cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none;transition:color .15s ease,background-color .15s ease,border-color .15s ease}.source-ptt-button:not(:disabled):hover{background:#dbe8ff}.source-ptt-button:disabled{cursor:not-allowed}.source-ptt-button:focus-visible{outline:3px solid #84adf5;outline-offset:2px}.source-ptt-button-pressed,.source-ptt-button-pressed:not(:disabled):hover{border-color:#8a1f2d;color:#fff;background:#b4232f}.source-ptt-rejected{color:#8a1f2d;font-size:.75rem;font-weight:700;line-height:1.35}.source-ptt-rejected[hidden]{display:none}@media(prefers-reduced-motion:reduce){.source-ptt-button{transition:none}}@container (max-width: 760px){.source-row{grid-template-columns:repeat(2,minmax(0,1fr))}.source-mute,.source-ptt{grid-column:1 / -1}.source-ptt{min-width:0}.source-row>button{min-height:44px}}.plugin-switch-panel{align-items:stretch;flex-direction:column}.plugin-switch-panel>details,.session-panel>details{min-width:0}.plugin-switch-body,.session-panel-body{display:flex;flex-direction:column;gap:12px;min-width:0;margin-top:12px}.plugin-switch-row{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;padding:8px;border:1px solid #dbe2e8;border-radius:6px}.plugin-switch-row.is-dirty{background:#fffbeb;box-shadow:inset 3px 0 #d97706}.plugin-switch-dirty-badge{display:inline-block;align-self:start;margin-top:4px;padding:2px 6px;border:1px solid #d97706;border-radius:4px;background:#fef3c7;color:#92400e;font-size:.75rem;font-weight:700}.plugin-switch-dirty-badge[hidden]{display:none}.plugin-switch-row>label{font-weight:700}.plugin-switch-row>button{justify-self:start}.plugin-switch-panel-disabled{color:#697783;background:#f3f5f7}.plugin-switch-panel fieldset{margin:0;border:0;padding:0}.plugin-switch-panel fieldset p{margin:0}.plugin-switch-config,.config-schema-form{display:grid;gap:8px}.config-schema-field{display:grid;grid-template-columns:minmax(90px,1fr) auto minmax(100px,2fr);align-items:center;gap:6px;min-width:0}.config-schema-field>datalist{display:none}.config-schema-label{font-size:.875rem;min-width:0;overflow-wrap:anywhere}.config-schema-input{min-width:0;max-width:100%;box-sizing:border-box}.config-schema-presence{display:inline-flex;align-items:center;gap:4px;font-size:.75rem}.session-panel{align-items:stretch;flex-direction:column}.session-current{max-width:100%;max-height:12rem;margin:0;overflow:auto;white-space:pre-wrap;color:#596772;font-size:.75rem}.session-pipeline-mode{color:#596772;font-size:.8rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.session-update-form{display:grid;gap:8px}.session-update-fieldset{display:grid;gap:8px;margin:0;padding:8px;border:1px solid #dbe2e8;border-radius:6px}.session-update-form.is-dirty .session-update-fieldset{background:#fffbeb;box-shadow:inset 3px 0 #d97706}.session-update-dirty-badge{display:inline-block;align-self:start;margin-top:4px;padding:2px 6px;border:1px solid #d97706;border-radius:4px;background:#fef3c7;color:#92400e;font-size:.75rem;font-weight:700}.session-update-dirty-badge[hidden]{display:none}.session-update-fieldset>legend{padding:0 4px;font-size:.875rem;font-weight:700}.session-update-fieldset>button{justify-self:start}.session-update-group{display:grid;gap:6px;margin:0;padding:8px;border:1px solid #e4e9ee;border-radius:6px}.session-update-group>legend{padding:0 4px;color:#4d5d68;font-size:.8125rem;font-weight:700}.session-update-field{display:grid;grid-template-columns:minmax(110px,1fr) minmax(0,1fr);align-items:center;gap:6px}.session-update-label{font-size:.875rem}.session-update-check{display:inline-flex;align-items:center;gap:6px;font-size:.875rem}.session-update-instructions{min-height:4rem;resize:vertical}.session-update-textarea{box-sizing:border-box;width:100%;min-height:80px;resize:vertical;font-family:monospace;font-size:12px}.session-update-error{margin:4px 0 0;color:#c00;font-size:12px}.session-update-hint{margin:4px 0 0;color:#666}.session-update-note{margin:0;color:#697783;font-size:.875rem}.plugin-switch-status{color:#596772;font-size:.875rem}.plugin-switch-banner{display:grid;gap:4px;padding:10px 12px;border:1px solid #d6a800;border-radius:6px;color:#4a3600;background:#fff4c2}.plugin-switch-banner-entries{font-size:.875rem}.source-name{font-weight:700}.source-input{color:#596772}.transcript-list{display:grid;gap:8px;max-height:24rem;margin:0;padding:0;overflow-y:auto;list-style:none}.transcript-entry{padding:8px;border:1px solid #dbe2e8;border-radius:6px;overflow-wrap:anywhere}.transcript-response{background:#f6f8fb}.transcript-rejected{color:#7b8790;text-decoration:line-through}.transcript-retrieve-truncated{margin:4px 0 8px;padding:4px 12px;font-size:.9em;background:#f6f8fb;border:1px solid #dbe2e8;border-radius:4px;cursor:pointer}.transcript-retrieve-truncated:hover{background:#e6ecf2}.transcript-marker{display:flex;align-items:center;gap:8px;color:#175cd3;font-size:.875rem;font-weight:700}.transcript-marker:before,.transcript-marker:after{flex:1;border-top:1px solid #84adf5;content:""}.transcript-placeholder{margin:0;color:#697783}.event-log summary{cursor:pointer;font-weight:700}.event-log-list{display:grid;gap:8px;max-height:24rem;overflow-y:auto}.event-log-filters{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center;margin:4px 0 8px;font-size:.8125rem}.event-log-filters-label{color:#596772;font-weight:600}.event-log-filter{display:inline-flex;align-items:center;gap:4px;cursor:pointer}.event-log-filter input[type=checkbox]{min-height:auto;margin:0}.event-log-filter-bulk{padding:2px 8px;font-size:.75rem;border:1px solid #dbe2e8;border-radius:4px;background:#f6f8fb;cursor:pointer}.event-log-filter-bulk:hover{background:#e8edf3}.event-log-entry{margin:0;padding:8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;border:1px solid #dbe2e8;border-radius:6px;background:#f6f8fb;font-size:.8125rem;cursor:pointer}.event-log-entry.is-expanded{overflow:visible;white-space:pre-wrap;word-break:break-all}.event-log-entry.is-error{background:#fdecec;border-color:#f2b8a2}.e2e-tab,.e2e-field{align-items:stretch;flex-direction:column}.e2e-field select,.e2e-field input{min-height:2.5rem}.e2e-field input[type=checkbox],.e2e-scenario-option input[type=checkbox]{min-height:auto}.e2e-actions{display:flex;flex-wrap:wrap;gap:8px}.e2e-actions button{min-height:44px}.e2e-results{min-height:6rem;border:1px solid #dbe2e8;border-radius:6px;background:#f6f8fb}.e2e-warning{margin:0;padding:8px 10px;border:1px solid #f2b8a2;border-radius:6px;color:#7a2e0e;background:#fff3ed}.e2e-scenario-picker,.e2e-case-list{display:grid;gap:6px;margin:0;padding:0;list-style:none}.e2e-scenario-picker{max-height:16rem;overflow:auto;border:1px solid #dbe2e8;border-radius:6px;background:#fff}.e2e-scenario-option label{display:flex;gap:8px;align-items:flex-start;padding:8px 10px}.e2e-case-list{padding:10px}
