/* GoMySeo — animations discrètes de l'accueil (désactivées si « réduire les animations » est demandé). */
/* Titre : les mots apparaissent un à un, du flou vers le net */
.fx-w { display: inline-block; opacity: 0; transform: translateY(.45em); filter: blur(10px); animation: fxw .85s cubic-bezier(.2,.7,.2,1) forwards; animation-delay: calc(var(--i) * 75ms + 120ms); }
@keyframes fxw { to { opacity: 1; transform: none; filter: blur(0); } }
/* Lueur orange qui suit le curseur dans la zone du titre */
.fx-spot { position: relative; }
.fx-spot::before { content: ''; position: absolute; inset: 0; pointer-events: none; background: radial-gradient(460px circle at var(--mx, 50%) var(--my, 30%), rgba(249,115,22,.11), transparent 62%); opacity: 0; transition: opacity .5s; z-index: 0; }
.fx-spot:hover::before { opacity: 1; }
/* Apparition au défilement, par vagues */
.fx-on .fx-r { opacity: 0; transform: translateY(26px); transition: opacity .8s ease, transform .9s cubic-bezier(.2,.7,.2,1); transition-delay: calc(var(--d, 0) * 90ms); }
.fx-on .fx-r.in { opacity: 1; transform: none; }
/* Courbes qui se tracent */
.fx-on svg polyline.fx-draw { stroke-dasharray: 1; stroke-dashoffset: 1; }
.fx-on svg polyline.fx-draw.in { animation: fxdraw 1.7s cubic-bezier(.4,0,.2,1) forwards; }
.fx-on svg polygon.fx-fill { opacity: 0; transition: opacity 1.2s ease .5s; }
.fx-on svg polygon.fx-fill.in { opacity: 1; }
@keyframes fxdraw { to { stroke-dashoffset: 0; } }
/* Cartes : halo qui suit la souris */
.fx-card::after { content: ''; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; background: radial-gradient(280px circle at var(--mx, 50%) var(--my, 50%), rgba(249,115,22,.13), transparent 65%); opacity: 0; transition: opacity .25s; }
.fx-card:hover::after { opacity: 1; }
/* Boutons principaux : léger effet d'aimant */
.fx-mag { transition: transform .25s cubic-bezier(.2,.7,.2,1), background .12s; will-change: transform; }
@media (prefers-reduced-motion: reduce) { .fx-w, .fx-on .fx-r, .fx-on svg polyline.fx-draw, .fx-on svg polygon.fx-fill { animation: none !important; transition: none !important; opacity: 1 !important; transform: none !important; filter: none !important; stroke-dasharray: none !important; stroke-dashoffset: 0 !important; } }
