// Page-level layout: header + main + footer in a flex column so the // footer sticks to the viewport bottom even when the main content is // short. Driven on the host so it covers the whole document. :host { display: flex; flex-direction: column; min-height: 100vh; } // Skip-link (WCAG 2.4.1 "Bypass Blocks"). Hidden by default, fully // visible and focusable when reached via Tab from the address bar. // Plain CSS rather than the `sr-only` Tailwind utilities so the // visual state on focus is as predictable as possible across themes. .skip-link { position: absolute; top: -40px; left: 0.75rem; z-index: 50; padding: 0.5rem 0.75rem; background: #1d4ed8; color: #fff; border-radius: 0.25rem; text-decoration: none; transition: top 0.15s ease-out; &:focus, &:focus-visible { top: 0.5rem; outline: 2px solid #93c5fd; outline-offset: 2px; } }