/* * Global element baseline, layered on top of the design tokens. Kept * deliberately small: it sets the document background, default text * colour/typography, a token-driven focus ring, and selection colour. * Component-scoped styles still own everything else. * * The focus-ring rule uses :where() so its specificity is zero and any * component that defines its own focus treatment wins without !important. */ body { margin: 0; background: var(--color-bg); color: var(--color-text); font-family: var(--font-sans); font-size: var(--text-base); line-height: var(--leading-normal); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } :where(*):focus-visible { outline: 2px solid var(--color-focus); outline-offset: 2px; } ::selection { background: var(--color-accent-subtle); } /* * Visually-hidden content that stays available to assistive tech. Use * for labels/announcements a sighted user gets from layout or icons. */ .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; } /* * Skip link: visually hidden until focused, then slides into the * top-left so a keyboard user can jump straight to the main content. * Each layout renders one as its first focusable element, targeting a * `tabindex="-1"` main region. */ .skip-link { position: absolute; left: var(--space-2); top: -4rem; z-index: 100; padding: var(--space-2) var(--space-3); background: var(--color-surface-overlay); color: var(--color-text); border: 1px solid var(--color-border); border-radius: var(--radius-sm); transition: top 120ms ease; } .skip-link:focus-visible { top: var(--space-2); }