/* ─── Skip-links (multi-target bypass block · .hzo-skip-links) ─────────────
   ADDITIVE to the single, always-loaded .hzo-skip-link (components/_base/
   skip-link.css, PRESERVE-6). That base sheet owns the reveal-on-focus PILL
   (clip-hidden → brand pill on :focus, --z-toast, reduced-motion kill). Per the
   §6 / G2 coupling rule the reveal MUST live in an always-loaded sheet — it does
   (_base), so a page that never enqueues THIS sheet still reveals every link.

   This sheet adds ONLY the group concerns the single link can't express:
     • the wrapper (position:fixed children, so it takes no layout space),
     • RTL-safe position modifiers (logical inset props override the base's
       physical `left`),
     • the `always` persistent-bar mode (kiosk / forced-colors),
     • print + forced-colors handling.
   Each child KEEPS the base .hzo-skip-link class, so the pill, z-index, focus
   ring, and reduced-motion behavior are inherited — never re-declared here. */

/* Group wrapper — the .hzo-skip-link children are position:fixed (base sheet),
   so the wrapper contributes no box; display:contents keeps it out of flow while
   the descendant position modifiers below still match. */
.hzo-skip-links {
    display: contents;
}

/* ── Position (logical, RTL-safe). Overrides the base's physical `left: 8px`;
      `top` is unchanged (block-start is top in both writing directions). ── */
.hzo-skip-links--start .hzo-skip-link {
    left: auto;
    inset-inline-start: var(--space-sm);
}
.hzo-skip-links--end .hzo-skip-link {
    left: auto;
    inset-inline-start: auto;
    inset-inline-end: var(--space-sm);
}
.hzo-skip-links--center .hzo-skip-link {
    left: auto;
    inset-inline-start: 50%;
    transform: translate(-50%, -150%);
}
/* Higher specificity than the base `.hzo-skip-link:focus` rule, so the centered
   pill reveals in place instead of snapping to the base's translateY(0). */
.hzo-skip-links--center .hzo-skip-link:focus {
    transform: translate(-50%, 0);
}

/* ── `always` mode — a persistent visible bar (kiosk / high-contrast setups).
      Children drop out of the fixed/clip reveal and flow inline in the bar. ── */
.hzo-skip-links--always {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-sm);
    padding: var(--space-sm);
    background: var(--brand);
}
.hzo-skip-links--always .hzo-skip-link {
    position: static;
    inset: auto;
    transform: none;
}

/* ── Environment: navigation chrome is useless on paper; hide when printed.
      (Not reveal-hidden content — G13 force-reveal does not apply.) ── */
@media print {
    .hzo-skip-links,
    .hzo-skip-links .hzo-skip-link {
        display: none !important;
    }
}

/* Forced-colors: the revealed pill uses system colors and keeps a real outline
   (box-shadow rings are dropped in High-Contrast — §12.2). The base already
   supplies the outline; pin the fill to system colors so the bar mode survives. */
@media (forced-colors: active) {
    .hzo-skip-links--always {
        background: Canvas;
    }
    .hzo-skip-links .hzo-skip-link {
        outline: 1px solid CanvasText;
    }
}

/* Defensive reduced-motion kill (the base already zeroes the .hzo-skip-link
   transition; this keeps the centered-reveal transform instant if a future base
   edit ever animates transform under reduce). */
@media (prefers-reduced-motion: reduce) {
    .hzo-skip-links .hzo-skip-link {
        transition: none;
    }
}
