/** * Asterion Bricks — Utilities (minimalist) * * Loaded after tokens.css. Holds the small set of helper classes Bricks * Builder cannot easily provide on its own (skip link, screen-reader-only * text, focus ring). Everything else — section padding, container widths, * button design, card styles — is set inside Bricks via tokens. */ /* === A11y skip link — first focusable element on every page === */ .av-skip-link { position: absolute; top: -40px; left: 0; padding: var(--space-3) var(--space-4); background: var(--color-brand-navy); color: var(--color-text-on-dark); font-size: var(--text-body-sm); font-weight: var(--font-weight-semibold); text-decoration: none; z-index: var(--z-toast); border-bottom-right-radius: var(--radius-md); } .av-skip-link:focus, .av-skip-link:focus-visible { top: 0; } /* === Visually hidden — readable by screen readers, hidden visually === */ .av-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; } /* === Focus visible — keyboard accessibility on every focusable element === */ :focus { outline: none; } :focus-visible { outline: var(--focus-ring-width, 2px) solid var(--focus-ring-color, var(--color-info)); outline-offset: var(--focus-ring-offset, 2px); } /* === Touch target minimum (WCAG AA / Apple HIG) === */ .av-tap-target { min-width: var(--tap-target-min, 44px); min-height: var(--tap-target-min, 44px); } /* === Reduced motion — respect user preference === */ @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; } }