diff --git a/internal/design/time-display.md b/internal/design/time-display.md
new file mode 100644
index 00000000..2a990e5c
--- /dev/null
+++ b/internal/design/time-display.md
@@ -0,0 +1,521 @@
+---
+status: draft
+date: 2025-02-04
+---
+
+# Time Display
+
+Displays current time, duration, or remaining time.
+
+## Problem
+
+Video players need to display time:
+
+1. **Current playback position** — updates continuously
+2. **Total duration** — static once source loads
+3. **Remaining time** — duration minus current, often with negative sign
+
+Requirements:
+
+- Digital format: `1:30:45` or `5:30`
+- Conditional hour display (hide when duration < 1 hour)
+- Proper accessibility (screen readers need human-readable time, not "1:30")
+- Composable for common patterns like `1:30 / 5:00`
+
+## Anatomy
+
+### React
+
+```tsx
+import { Time } from '@videojs/react';
+
+// Standalone
+
+
+// Composed
+
+
+
+
+
+```
+
+### HTML
+
+```ts
+import '@videojs/html/ui/time';
+```
+
+```html
+
+
+
+
+
+
+
+
+
+```
+
+## Examples
+
+### Current Time Only
+
+```tsx
+
+```
+
+### Current / Duration
+
+```tsx
+
+
+
+
+
+```
+
+### Remaining Time
+
+```tsx
+
+// Renders: -4:30
+```
+
+### Custom Separator
+
+```tsx
+
+
+ of
+
+
+// Renders: 1:30 of 5:00
+```
+
+### Custom Negative Sign
+
+```tsx
+
+// Renders: −4:30 (using proper minus sign U+2212)
+```
+
+## Parts
+
+### Group
+
+Container for composed time displays. Renders a `` element.
+
+**Why a component?**
+
+- **Semantic structure** — Clear boundary around related time displays
+- **Future API surface** — Room to add formatting options (e.g., `hoursDisplay`) that apply to all children
+- **Styling container** — Provides a target for layout and theming
+
+#### Props
+
+| Prop | Type | Default | Description |
+| -------- | ------------------ | ------- | ---------------------- |
+| `render` | `RenderProp` | — | Custom render element. |
+
+#### Data Attributes
+
+| Attribute | Description |
+| --------- | ----------- |
+| — | None currently. |
+
+#### Renders
+
+```html
+
+```
+
+---
+
+### Value
+
+Displays a formatted time value. Works standalone or within Group.
+
+#### Props
+
+| Prop | Type | Default | Description |
+| --------------- | ------------------------------------------ | ----------- | ------------------------------ |
+| `type` | `'current' \| 'duration' \| 'remaining'` | `'current'` | Which time to display. |
+| `negativeSign` | `string` | `'-'` | Symbol for remaining time. |
+| `label` | `string` | Auto | Custom aria-label. |
+| `render` | `RenderProp` | — | Custom render element. |
+
+#### State
+
+| Property | Type | Description |
+| ---------- | ---------- | ------------------------------------------------- |
+| `type` | `TimeType` | `'current'`, `'duration'`, or `'remaining'` |
+| `seconds` | `number` | Raw value in seconds. |
+| `text` | `string` | Formatted display text (`1:30`). |
+| `phrase` | `string` | Human-readable phrase (`1 minute, 30 seconds`). |
+| `datetime` | `string` | ISO 8601 duration (`PT1M30S`). |
+
+#### Data Attributes
+
+| Attribute | Description |
+| ------------ | ---------------------------------------- |
+| `data-type` | `current`, `duration`, or `remaining`. |
+
+#### Renders
+
+**React** — Uses `