/*
 * Weclim — utilities.css
 * Utilitaires génériques réutilisables partout (reset de base + helpers d'accessibilité
 * et de mise en page). Volontairement minimal : ce thème n'a pas de vocabulaire d'utility
 * classes façon Tailwind — la quasi-totalité du CSS du site est du composant nommé
 * (weclim-*, ds-*, entry-*, page-*...), qui vit dans components.css.
 *
 * Chargé après tokens (theme.json), avant components.css.
 */

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; color: var(--wp--preset--color--ink); background: var(--wp--preset--color--paper); font: 400 16px/1.58 var(--wp--preset--font-family--sans); -webkit-font-smoothing: antialiased; }
img { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-underline-offset: .18em; }
a:hover { color: var(--wp--preset--color--ink-soft); }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }

.wrap { width: var(--wp--custom--wrap); margin-inline: auto; }
.screen-reader-text { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.skip-link { position: fixed; z-index: 200; top: 12px; left: 12px; transform: translateY(-180%); padding: .7rem .95rem; border-radius: 7px; color: var(--wp--preset--color--paper); background: var(--wp--preset--color--ink); font-weight: 700; text-decoration: none; transition: transform .2s ease; }
.skip-link:focus { transform: translateY(0); outline: 3px solid var(--wp--preset--color--orange); outline-offset: 2px; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
}
