Framework-agnostic CSS and markup patterns — the shell, Seldon and Case all build from these,
whatever they're written in. Every component meets WCAG AA and ships its accessibility requirements
inline. Load freeside.css then freeside-components.css.
Anatomy is always label → control → hint or error. A placeholder is never a label.
Required is marked in text, not colour. Errors are announced in text and wired with aria-describedby.
Status is never colour alone — every state carries an icon and a text label.
Live regions (aria-live="polite") announce agent updates.
seldon-v3 re-scored the network an hour ago.When Case finds an opportunity it'll appear here for your approval.
Trap focus while open, close on Esc, return focus to the trigger, and label the dialog
with aria-labelledby. Never put a destructive action behind a hover-only affordance.
Tables use real <th> headers with scope, numerics are mono and
right-aligned with tabular figures, and sortable headers expose aria-sort.
| Location | Status | Intent | |||
|---|---|---|---|---|---|
| Aaron Boudreau | Toronto | Contacted | 0.42 | ||
| Abel Isaacs | Greater London | High intent | 0.91 | ||
| Adele Ferrari | Bologna | Lapsed | 0.18 |
Mobile-first, and an admin approving a proposal in a taxi is a first-class case. Targets grow to 44px on touch, inputs are 16px (or iOS zooms the page), hover-only actions are banned, and the page must reflow at 320px with no horizontal scroll. Full rules: DESIGN_SYSTEM.md §13. Narrow this window to see it.
md (768px)Sidebar → .fs-bottombar (≤5 items, thumb-reachable) or an
off-canvas drawer. The cockpit demo does exactly this.
Modal → bottom sheet with a safe-area inset; drawer → full width;
toasts span the viewport. Add .fs-modal--static only for docs previews.
Either scroll inside .fs-table-wrap (+ .fs-scroll-hint)
or stack with .fs-table--cards and a data-label per cell. Never shrink the type.
One column, full-width controls, actions stacked with the primary last (nearest the thumb), labels above the field.
| Name | Location | Status | Intent |
|---|---|---|---|
| Abel Isaacs | Greater London | High intent | 0.91 |
| Adele Ferrari | Bologna | Lapsed | 0.18 |
Bottom bar and action bar both pad with
env(safe-area-inset-bottom), and layouts use dvh — never vh.