Completes DESIGN_RULES §1 so the rest of the Mappe shared components have a full token
substrate:
- Add --radius-sm/md/full and --shadow-sm/md as first-class :root tokens in layout.css.
Radius is theme-invariant; --shadow-sm/md get distinct, stronger dark values in BOTH
dark blocks (the @media and [data-theme='dark'] selectors stay in sync) because the
light navy-on-sand shadow is invisible on dark surfaces.
- Add $lib/shared/avatarPalette.ts: the canonical 10-color person/avatar palette as a
single exported constant (single source of truth for <Avatar>, issue #855). Three §5
hues failed the >=4.5:1 white-initials contrast floor and ship as AA-darkened variants
(sage #527e61, amber #a46800, sand #897239); the bright hues stay the decorative
tag-dot colors in layout.css. Guarded by avatarPalette.spec.ts (length, hex, distinct,
WCAG AA).
Tag-sand naming and the theme storage key were already correct in layout.css/app.html;
this only closed the remaining token gaps. No consumer rewiring (deferred to #855).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>