/* Base — psy-child. Reset, typo, body, link, animations, helpers. */

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }

body {
	margin: 0;
	background: var(--color-bg);
	color: var(--color-ink);
	font-family: var(--font-body);
	font-size: 17px;
	line-height: 1.65;
	-webkit-font-smoothing: antialiased;
}

@media (max-width: 620px) {
	body { font-size: 16px; }
}

a {
	color: inherit;
	text-decoration: none;
}

h1, h2, h3 {
	font-family: var(--font-display);
	font-weight: 500;
	color: var(--color-primary);
	margin: 0;
	line-height: 1.15;
}

img { max-width: 100%; height: auto; }

.wrap {
	max-width: var(--maxw);
	margin: 0 auto;
	padding: 0 24px;
}

/* Focus visible WCAG */
:focus-visible {
	outline: 2px solid var(--color-accent-soft);
	outline-offset: 2px;
	border-radius: 2px;
}

/* Animations (respect prefers-reduced-motion) */
@keyframes psy-up {
	from { opacity: 0; transform: translateY(14px); }
	to   { opacity: 1; transform: none; }
}
.anim { opacity: 0; animation: psy-up .7s cubic-bezier(.2,.7,.2,1) forwards; }
.d1 { animation-delay: .05s; }
.d2 { animation-delay: .16s; }
.d3 { animation-delay: .28s; }
.d4 { animation-delay: .40s; }
@media (prefers-reduced-motion: reduce) {
	.anim { animation: none; opacity: 1; }
	/* Modernisation v0.17 : pas de lift au survol si motion réduit. */
	.hm-step, .hm-art, .pcard, .btn { transition: none; }
	.hm-step:hover, .hm-art:hover, .pcard:hover, .pcard:focus-visible { transform: none; }
}
