{/* fixed sections: flexShrink: 0 */}
{/* filling section: flex: 1, minHeight: 0 */}
```
Cards that scroll internally: `display: flex, flexDirection: column, minHeight: 0` + inner `overflowY: auto, flex: 1, minHeight: 0`
### File browser paths (per role)
- `team`: `/Clients/{Co}/Projects/{Proj}/{Task}` (real path)
- `client`: `/{Co}/Projects/{Proj}/{Task}` (virtual — no `/Clients/` prefix)
- `external`: `/Projects/{Proj}/{Task}` (virtual)
## Empty states
Use `.card-empty-center` class for all "No …" messages inside cards.
## Key files
- `layout.md` — visual spec, always check before building new UI
- `src/index.css` — global tokens and shared classes
- `src/components/SortTh.jsx` — sortable table header
- `src/components/StatusBadge.jsx` — status tags
- `src/lib/popupStyles.js` — modal overlay/surface styles
- `api/filebrowser.js` — file browser API (Vercel serverless)
- `supabase/functions/fbq-proxy/` — Supabase edge function for FileBrowser Quantum