Accessibility
AuraGlass ships focus, contrast, reduced-motion, keyboard, and provider guidance for accessible glassmorphism UI.
#Contrast
Glass UI fails fastest when text sits over unpredictable content. Use tinted surfaces, borders, and scrims to separate text from gradients, images, video, and charts. The goal is readable material, not maximum transparency.
Check every state, not just the default card: hover, active, selected, disabled, danger, warning, success, loading, and empty states. Dense data components should prioritize legibility over dramatic translucency.
#Focus and Keyboard
AuraGlass components should preserve visible focus rings and predictable keyboard order. Do not remove outlines in app CSS. For command palettes, drawers, dialogs, menus, and popovers, make sure focus moves into the surface when it opens and returns to the trigger when it closes.
Compound components should be used with their documented parents. Wrapping children in unrelated containers can break roving focus, labels, described-by relationships, or keyboard navigation. When customizing markup, keep labels and aria relationships attached to the interactive control.
#Reduced Motion in Accessible UI
Respect `prefers-reduced-motion` for background shimmer, parallax, springy transitions, counters, visualizers, and WebGL camera movement. Reduced motion should preserve meaning through stable state changes rather than continuous movement.
Media, canvas, realtime, and 3D surfaces should pause when hidden, stop decorative loops when reduced motion is enabled, and provide static fallbacks. A product can still feel premium without requiring constant animation.
@media (prefers-reduced-motion: reduce) {
.app-shell * {
animation-duration: 1ms;
animation-iteration-count: 1;
scroll-behavior: auto;
transition-duration: 1ms;
}
}#Screen Readers and Labels
Glass surfaces are visual, but semantics still come from real HTML. Use headings for sections, labels for form controls, button text or aria labels for icon-only buttons, and live regions only when updates are important enough to interrupt.
Do not describe the visual material as the accessible name. A screen reader user needs to hear “Open billing drawer,” “Search commands,” or “Pause media,” not “glass button.”