Accessibility
Accessibility overrides exact visual imitation whenever the two conflict. This is a stated design principle, not an afterthought.
Baseline, built into components
- Semantic HTML first. Use real
button,nav,table,labelelements before ARIA - Every interactive element is keyboard-operable and shows a visible focus ring (
:focus-visible) - Icon-only controls (IconButton, close buttons) require an explicit
aria-labelat the type level - Overlays (Dialog, Drawer, AlertDialog, Menu) trap and restore focus and close on Escape via Base UI
FormFieldwiresaria-describedbyanddata-invalidautomatically between label, description, error, and control- Color never carries meaning alone. Status uses icon + label + color together (see
StatusIndicator)
Reduced motion & transparency
prefers-reduced-motion: reduce zeroes every Fuji transition duration globally. No per-component opt-out is needed. prefers-reduced-transparency: reduce flattens the glass theme to opaque surfaces (see Theming).
Contrast
Text tokens (foreground, foreground-muted, foreground-subtle) are tuned per theme to meet WCAG AA (4.5:1) against their paired surface. Glass in particular uses high-contrast white text over its translucent panels rather than the low-contrast text common in glassmorphism references.
RTL
Layout uses logical Tailwind utilities where direction matters (flex and grid gap rather than hardcoded left/right margins in most places), so most components adapt to a dir="rtl" ancestor without extra work. Directional icon affordances such as Breadcrumb and Carousel chevrons currently render left-to-right and are not yet mirrored under RTL.
