/* First Laughter Underline — zero-JS, opt-in, a11y-first
 * Scope: .first-laughter
 * Motif: warm wavy underline that lifts slightly on hover/focus, honoring reduced motion.
 * Ethics/A11y: no tracking; keyboard-visible focus; high contrast; print-safe; forced-colors fallback.
 */

.first-laughter {
  --fl-ink: hsl(31 95% 45%);       /* orange laugh */
  --fl-ink-contr: hsl(31 90% 20%); /* darker for HC contexts */
}

.first-laughter a {
  color: inherit;
  text-decoration-line: underline;
  text-decoration-thickness: .11em;
  text-underline-offset: .22em;
  text-decoration-style: wavy;
  text-decoration-color: var(--fl-ink);
  outline: none; /* use focus-visible below */
}

.first-laughter a:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: .18rem;
  text-decoration-color: var(--fl-ink);
}

@media (prefers-reduced-motion: no-preference) {
  .first-laughter a:hover,
  .first-laughter a:focus-visible {
    text-underline-offset: .3em;
  }
}

/* High contrast/forced colors: keep underline visible */
@media (forced-colors: active) {
  .first-laughter a {
    forced-color-adjust: none;
    color: CanvasText;
    text-decoration-color: CanvasText;
    text-decoration-style: solid;
    text-decoration-thickness: from-font;
  }
  .first-laughter a:focus-visible { outline-color: CanvasText; }
}

/* Print: solid underline for crispness */
@media print {
  .first-laughter a {
    text-decoration-style: solid;
    text-decoration-thickness: from-font;
  }
}
