<!-- source-hash: 4a819f268fa72ed0c9baa868c023b47f -->
Renders a stripped-chrome video player card for entity references within the chat interface, delegating entirely to `<EntityVideoSection>` to maintain visual parity with detail pages.

## Key Components

### `ChatVideoEntityCardProps`
| Prop | Type | Description |
|------|------|-------------|
| `chatRef` | `ChatRef` | Entity reference containing `metadata` fields for video URL routing |

### `ChatVideoEntityCard`
Main export. Extracts video-related fields from `chatRef.metadata` and passes them directly to `<EntityVideoSection>`. Intentionally omits `videoSummary`, `videoBites`, and header chrome (title, date, Ask button) to preserve chat panel density — those affordances are handled by the host's inline pill.

### `readString(value)`
Internal guard that returns `null` for any non-string or empty-string value, preventing invalid URLs from reaching the player.

## Metadata Fields Read

| Field | Passed As |
|-------|-----------|
| `metadata.videoUrl` | `mainVideoUrl` |
| `metadata.youtubeUrl` | `youtubeUrl` |
| `metadata.videoPoster` | `mainVideoPoster` |
| `metadata.highlightVideoUrl` | `highlightVideoUrl` |
| `metadata.highlightVideoPoster` | `highlightVideoThumbnail` |

## Usage Example

```typescript
// Host dispatch — only routed here when at least one video URL is present
<ChatVideoEntityCard
  chatRef={{
    title: "Q3 Investor Update",
    metadata: {
      youtubeUrl: "https://www.youtube.com/watch?v=abc123",
      highlightVideoUrl: "https://stream.mux.com/highlight.m3u8",
      highlightVideoPoster: "https://cdn.example.com/poster.jpg",
    },
  }}
/>
```

> **Activation contract:** The host must only render this card when at least one of `metadata.videoUrl`, `youtubeUrl`, or `highlightVideoUrl` is a non-empty string. URL sanitization is handled inside `<Video>` — no additional validation is required at the call site.