/* ─── Live-Region Announcer (.hzo-announcer-region) ────────────────────────
   The two aria-live regions (polite + assertive) that hzo.announce() writes
   into. They must be in the accessibility tree at ALL times — so they are
   hidden with the CLIP technique, NEVER display:none / visibility:hidden /
   [hidden], which drop the node from the a11y tree and kill announcements
   (WCAG 4.1.3). Zero-size, non-interactive, never focusable.

   forced-colors safe by construction: clipped (not opacity/visibility-hidden),
   so `forced-colors: active` cannot surface it (avoids the §12.2 opacity trap).
   No motion ships (SR text injection only) → no transition to kill and nothing
   is ever motion-hidden, so no prefers-reduced-motion block is needed. Needs no
   z-index (clip-hidden, zero-size); the optional toast:true delegate resolves
   to --z-toast inside toast.css, never here. */
.hzo-announcer-region {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    border: 0;
    overflow: hidden;
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    white-space: nowrap;
    -webkit-user-select: none;
    user-select: none;
    pointer-events: none;
}

/* Page-level [hzo_announce config="true"] node: sets JS defaults, emits no UI.
   NOT a live region, so display:none is safe (and correct — never announced). */
.hzo-announcer-config {
    display: none !important;
}

/* Optional [hzo_announce] click trigger. Unstyled by default — it is an author
   affordance that composes inline; add .hzo-btn* (or your own classes) via the
   shortcode `class` attribute when a visible button is wanted. */
.hzo-announce-trigger {
    font: inherit;
    color: inherit;
}
