/* Base */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body { margin: 0; font-family: var(--font); font-size: var(--fs-body); line-height: 1.6; color: var(--text); background: var(--paper); -webkit-font-smoothing: antialiased; overflow-x: clip; }
img, svg, video { display: block; max-width: 100%; }
img { height: auto; }
a { color: inherit; text-underline-offset: 0.18em; }
p, ul, ol, dl, figure, blockquote { margin: 0; }
:where(ul[class], ol[class]) { list-style: none; padding: 0; }
h1, h2, h3, h4 { margin: 0; font-family: var(--font-display); color: var(--ink); line-height: 0.92; letter-spacing: -0.01em; }
h1, h2 { font-weight: 800; text-transform: uppercase; }
h1 { font-size: var(--fs-h1); }
h2 { font-size: var(--fs-h2); }
h3 { font-size: var(--fs-h3); font-weight: 700; line-height: 1.1; letter-spacing: 0; }
/* Mot mis en avant : surligneur arrondi */
h1 em, h2 em { font-style: normal; color: var(--blue); }
strong { font-weight: 700; color: var(--ink); }
sup { font-size: 0.6em; line-height: 0; vertical-align: super; }
button, input, select, textarea { font: inherit; color: inherit; }
:focus-visible { outline: 3px solid var(--sun); outline-offset: 3px; border-radius: 6px; }
::selection { background: var(--sun); color: var(--navy); }

.icon { width: 1.2em; height: 1.2em; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; flex: none; }
.skip-link { position: absolute; left: 12px; top: -60px; z-index: 100; background: var(--sun); color: var(--navy); padding: 10px 16px; border-radius: 999px; font-weight: 700; }
.skip-link:focus { top: 12px; }
.visually-hidden { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* Contenus manquants : à remplacer avant mise en ligne */
.placeholder { display: inline; background: #FFF4CC; color: #6A4B00; outline: 2px dashed #D9A300; outline-offset: 1px; padding: 0.05em 0.4em; border-radius: 6px; font-size: 0.92em; font-family: var(--font); text-transform: none; letter-spacing: 0; }
div.placeholder, p.placeholder, figure.placeholder { display: block; padding: 0.9em 1.1em; }
.to-validate { background: #E3F7EA; color: #145A32; outline: 2px dashed #3BA56A; padding: 0.1em 0.45em; border-radius: 6px; font-size: 0.78em; font-family: var(--font); white-space: nowrap; text-transform: none; letter-spacing: 0; font-weight: 600; }

/* Apparitions au défilement : rebond léger */
.js [data-reveal] { opacity: 0; transform: translateY(32px) scale(0.98); transition: opacity 0.6s var(--ease-out), transform 0.8s var(--ease); }
.js [data-reveal].is-visible { opacity: 1; transform: none; }
.js [data-reveal="fade"] { transform: none; }
@media (prefers-reduced-motion: reduce) { .js [data-reveal] { opacity: 1; transform: none; transition: none; } }
