# Canvas Feature
**Purpose**: Infinite zoomable/pannable workspace where krates live. Starts empty.
**Layout**:
- Full‑viewport `position: fixed; inset: 0` with background `#0b0e13`.
- Two CSS grid overlays (fine `34px` rgba(125,145,175,.04), coarse `170px` rgba(125,145,175,.075)).
- World layer: `
` sized `12000×8000px`, transformed via `translate(camX, camY) scale(zoom)`; all krates/windows are absolutely positioned children.
- Top bar (`height ~56px`, `z-index:10`).
- Bottom hint bar (`right:18px; bottom:18px`).
- Zoom pill (`left:18px; bottom:18px`).
- Minimap (`right:18px; bottom:64px; width:180px; height:120px`).
**Navigation**:
- Scroll wheel → pan.
- Ctrl/⌘ + scroll → zoom.
- Space + drag → pan (global capture, works even when a shell has focus).
- Click empty canvas → open Spotlight.
- Typing any key (when no input focused) → open Spotlight pre‑seeded with that character.
**LOD**:
- `zoom > 0.5` normal view (krates expanded, windows visible).
- `zoom < 0.4` collapsed view (krates become 230 px overview cards, windows hidden).
- Hysteresis: collapse @0.4, expand @0.5.
**Camera fly**: on programmatic open, animate to center krate with `zoom:0.92` using `transform .52s cubic‑bezier(.22,.8,.28,1)`.