/* HowiePulse - MB Pizza LLC · shared site layer v1.0 (release 2.8.19): legal footer + login notice + accessibility helpers.
   Loaded after hub-theme.css on every page. Uses ONLY the --hp-* theme tokens (no hard-coded colours), so it needs no generated
   dark twins. Plain text on the page background: no tinted boxes, no logo. */

.hp-sr { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

/* Skip link: off-screen until it gets keyboard focus (WCAG 2.4.1) */
.hp-skip { position: absolute; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden; }
.hp-skip:focus, .hp-skip:focus-visible { position: fixed; left: .75rem; top: .75rem; width: auto; height: auto; overflow: visible; z-index: 100000;
  padding: .55rem .9rem; background: var(--hp-bg); color: var(--hp-text); border: 2px solid var(--hp-text); border-radius: 8px;
  font: 700 .85rem/1.2 Montserrat, system-ui, sans-serif; text-decoration: underline; outline: 2px solid var(--hp-text); outline-offset: 2px; }
[data-hp-skip-target]:focus { outline: none; }

/* Focus indicators (WCAG 2.4.7 / 1.4.11). :where() = zero specificity, so every existing focus style still wins. */
:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible { outline: 2px solid var(--hp-text); outline-offset: 2px; }
/* Filter date inputs: Chrome's calendar button inside the field takes focus without the field matching :focus, so ring the
   field whenever anything inside its label has focus */
.hub-filters input[type=date]:focus, .hub-filters label:focus-within > input[type=date], .hub-filters select:focus-visible { outline: 2px solid var(--hp-text) !important; outline-offset: 1px; }
[data-hp-scroll]:focus-visible { outline: 2px solid var(--hp-text) !important; outline-offset: 2px; }
@media screen { html[data-theme="dark"] .brand-link:focus-visible .hp-logo { outline-color: var(--hp-text); } }

/* Legal footer line (all pages) */
.hp-legal-foot { margin: 1.1rem auto 1.3rem; padding: 0 1rem; max-width: 1100px; text-align: center; font: 500 .72rem/1.5 Montserrat, system-ui, sans-serif;
  color: var(--hp-muted); letter-spacing: .01em; text-transform: none; }
.hp-legal-foot a { color: var(--hp-text); text-decoration: underline; }
html[data-hp-page=login] body, html[data-hp-page=register] body { flex-direction: column; }
html[data-hp-page=login] .hp-legal-foot, html[data-hp-page=register] .hp-legal-foot { margin-bottom: 0; }

/* Login / Request access notice (plain muted text inside the card) */
.hp-legal-note { margin: 1rem 0 0; font-size: .72rem; line-height: 1.45; font-weight: 500; color: var(--hp-muted); text-align: left; }
.hp-legal-note b { color: var(--hp-text); }
.hp-legal-note a { color: var(--hp-text); text-decoration: underline; }

/* Reduced motion (WCAG 2.3.3): follow the device setting */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
}
