body { font-family: Arial, sans-serif; margin: 24px; color: #222; } header { margin-bottom: 16px; } .controls { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-bottom: 12px; } .channel-dropdown { position: relative; min-width: 220px; flex: 0 1 260px; } .channel-dropdown summary { list-style: none; cursor: pointer; border: 1px solid #ccc; border-radius: 4px; padding: 6px 8px; background: #fff; color: #222; display: inline-flex; align-items: center; min-height: 32px; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .channel-dropdown summary::-webkit-details-marker { display: none; } .channel-dropdown[open] summary { border-bottom-left-radius: 0; border-bottom-right-radius: 0; } .channel-options { margin-top: 4px; padding: 8px; border: 1px solid #ccc; border-radius: 0 0 4px 4px; background: #fff; max-height: 240px; overflow-y: auto; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.12); min-width: 220px; width: max(220px, 100%); } .channel-option { display: flex; align-items: center; gap: 6px; margin-bottom: 6px; font-size: 12px; } .channel-option:last-child { margin-bottom: 0; } input, select, button { padding: 6px 8px; } .muted { color: #666; font-size: 12px; } #results .item { border-bottom: 1px solid #ddd; padding: 12px 0; } .summary-row { display: flex; gap: 16px; flex-wrap: wrap; align-items: flex-start; margin-top: 12px; } .summary-left { flex: 0 1 280px; max-width: 360px; } .summary-right { flex: 1 1 0%; min-width: 0; background: #f5f5f5; padding: 12px; border-radius: 8px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08); } #metrics { margin-top: 12px; display: flex; flex-direction: column; gap: 8px; } #metricsStatus { min-height: 16px; } #metricsContent { display: flex; flex-direction: column; gap: 6px; } #frequencyChart { margin-top: 8px; } #frequencyChart svg { max-width: 100%; } #frequencyChart .axis path, #frequencyChart .axis line { stroke: #ccc; } #frequencyChart .freq-layer rect { stroke: #fff; stroke-width: 0.5px; } .freq-legend { margin-top: 8px; display: flex; flex-wrap: wrap; gap: 8px; font-size: 12px; color: #444; } .freq-legend-item { display: flex; align-items: center; gap: 6px; } .freq-legend-swatch { width: 12px; height: 12px; border-radius: 2px; display: inline-block; } .transcript { background: #fafafa; padding: 8px; margin-top: 6px; max-height: 200px; overflow-y: auto; } .highlight-list { display: flex; flex-direction: column; gap: 8px; max-height: none; overflow: visible; } .highlight-row { padding: 4px 0; border-bottom: 1px solid #ececec; cursor: pointer; transition: background 0.2s; } .highlight-row:hover { background: #f0f7ff; } .highlight-row:last-child { border-bottom: none; } .transcript-wrapper { margin-top: 8px; } .pager { margin-top: 12px; display: flex; gap: 8px; } mark { background: #ffe58a; padding: 0 2px; } .badge-row { margin-top: 6px; display: flex; gap: 4px; flex-wrap: wrap; } .badge { background: #0b6efd; color: #fff; border-radius: 999px; padding: 2px 8px; font-size: 12px; } .transcript-toggle { margin-top: 8px; padding: 6px 12px; background: #f0f0f0; border: 1px solid #ccc; border-radius: 4px; cursor: pointer; font-size: 13px; color: #0366d6; transition: background 0.2s; } .transcript-toggle:hover { background: #e8e8e8; } .transcript-toggle:disabled { cursor: not-allowed; color: #999; } .full-transcript { margin-top: 12px; padding: 12px; background: #fafafa; border: 1px solid #e1e1e1; border-radius: 4px; max-height: 400px; overflow-y: auto; } .transcript-segment { margin-bottom: 12px; padding-bottom: 8px; border-bottom: 1px solid #ececec; transition: background 0.3s, padding 0.3s; border-radius: 4px; } .transcript-segment:last-child { border-bottom: none; margin-bottom: 0; } .transcript-segment.focused { background: #fff3cd; padding: 8px; border: 2px solid #ffc107; animation: pulse-highlight 1s ease-in-out; } @keyframes pulse-highlight { 0%, 100% { background: #fff3cd; } 50% { background: #ffe69c; } } .timestamp-link { display: inline-block; color: #0366d6; text-decoration: none; font-weight: bold; font-size: 11px; font-family: monospace; margin-right: 8px; padding: 2px 6px; background: #e8f4ff; border-radius: 3px; transition: background 0.2s; } .timestamp-link:hover { background: #cce5ff; text-decoration: underline; } .transcript-text { color: #333; line-height: 1.5; } .transcript-header { font-weight: bold; margin-bottom: 8px; color: #444; display: flex; align-items: center; justify-content: space-between; } .transcript-close { cursor: pointer; color: #666; font-size: 18px; padding: 0 4px; } .transcript-close:hover { color: #000; } .loading-text { color: #666; font-style: italic; }