/* Référencement — V2 Algo Data. Rédaction par panel de trois rédactions jugées (30/10/2026), objets de
   section repris de V1 (rf-scene méthode/geo, gabarit C gp-chiffre) ; objet animé propre au haut de page. Hérite
   des jetons et composants de ad-referencement-v1.css (--rf-azur, .gp-chiffre, .rf-scene, .rf-cms…). */
main.rf-v2 .gp-sec { padding:clamp(56px,6vw,94px) 0; }
main.rf-v2 .rf-cta { margin-top:24px; }
/* Objets animés de la V2 (30/10/2026) — construits avec les skills animate, emil-design-eng et fixing-motion-performance.
   Animation CSS (fluide pendant le chargement), transform et opacity seulement (clip-path pour le reçu, admis).
   Un court script (fin de src/referencement-v2.src.html) pose .rf-pret puis .rf-joue à l'entrée dans l'écran, et
   met en pause hors de l'écran. Sans script ou avec « réduire les animations » : image fixe lisible (état final). */
main.rf-v2 .rf-anim.rf-pret * { animation-duration:var(--cycle); animation-iteration-count:infinite; animation-fill-mode:both;
  animation-timing-function:cubic-bezier(0.77,0,0.175,1); animation-play-state:paused; }
main.rf-v2 .rf-anim.rf-pret.rf-joue * { animation-play-state:running; }

/* --- 1. Haut de page « deux recherches », version réaliste (30/10/2026, « rendre whaoo ») ---
   Objet posé sur la table de la photo (inclinaison, ombre portée, respiration), pointeur qui clique le champ,
   curseur de frappe, vrais résultats fictifs (exemple.fr), le site poussé qui tombe hors de la liste. */
main.rf-v2 .rf-hero3 { position:relative; perspective:1400px; }
main.rf-v2 .rf-ombre { position:absolute; left:6%; right:6%; bottom:-30px; height:52px; z-index:0; display:none;
  background:radial-gradient(closest-side, rgba(4,7,11,.62), rgba(4,7,11,0)); }
main.rf-v2 .rf-hero-anim { --cycle:12s; --pas:54px; position:relative; z-index:1; padding:16px; }
main.rf-v2 .rf-anim__champ { position:relative; display:flex; align-items:center; gap:10px; height:44px; padding:0 14px; border-radius:10px;
  background:rgba(255,255,255,.08); box-shadow:inset 0 0 0 1px rgba(255,255,255,.2); font-size:14px; color:#fff; }
main.rf-v2 .rf-anim__champ i { color:var(--rf-azur-nuit); }
main.rf-v2 .rf-hero-anim .rf-anim__champ::after { content:""; position:absolute; inset:-1px; border-radius:11px; box-shadow:0 0 0 2px var(--rf-azur-nuit); opacity:0; }
main.rf-v2 .rf-anim__q { display:grid; white-space:pre; }
main.rf-v2 .rf-anim__q > span { grid-area:1/1; }
main.rf-v2 .rf-anim__q > span > span { position:relative; }
main.rf-v2 .rf-hero-anim .rf-anim__q > span > span::after { content:""; position:absolute; top:1px; bottom:1px; right:-2px; width:1.5px; background:#fff; opacity:0; }
main.rf-v2 .rf-hero-anim .qa { opacity:0; visibility:hidden; }
main.rf-v2 .rf-anim__liste { position:relative; height:calc(var(--pas) * 4 - 8px); margin-top:12px; overflow:hidden; }
main.rf-v2 .rf-ligne { position:absolute; inset:0 0 auto; height:calc(var(--pas) - 8px); padding:0 12px; border-radius:9px;
  background:rgba(255,255,255,.06); display:flex; align-items:center; gap:11px; }
main.rf-v2 .rf-fav { flex:none; width:26px; height:26px; display:grid; place-items:center; border-radius:7px; background:var(--c);
  font:700 12px/1 var(--gp-titre); font-style:normal; color:#10151c; }
main.rf-v2 .rf-tx { display:flex; flex-direction:column; gap:3px; min-width:0; }
main.rf-v2 .rf-tx b { font:600 13px/1.2 var(--gp-titre); color:rgba(255,255,255,.88); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
main.rf-v2 .rf-tx small { font-size:12px; line-height:1.2; color:rgba(255,255,255,.56); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
main.rf-v2 .rf-ligne--vous { z-index:2; background:rgba(156,193,255,.2); box-shadow:inset 0 0 0 1px rgba(156,193,255,.55); }
main.rf-v2 .rf-ligne--vous b { color:#fff; } main.rf-v2 .rf-ligne--vous small { color:var(--rf-azur-nuit); }
main.rf-v2 .rf-curseur { position:absolute; left:calc(100% - 96px); top:28px; z-index:4; width:16px; height:22px; opacity:0;
  filter:drop-shadow(0 2px 3px rgba(0,0,0,.45)); }
/* image fixe (sans script, ou « réduire les animations ») : trois concurrents au-dessus du site, atténué en bas */
main.rf-v2 .la1, main.rf-v2 .la2, main.rf-v2 .la3, main.rf-v2 .lb4 { opacity:0; }
main.rf-v2 .lb3 { transform:translateY(0); } main.rf-v2 .lb2 { transform:translateY(var(--pas)); } main.rf-v2 .lb1 { transform:translateY(calc(var(--pas) * 2)); }
main.rf-v2 .rf-ligne--vous { transform:translateY(calc(var(--pas) * 3)); opacity:.55; }
/* chorégraphie (12 s) */
main.rf-v2 .rf-hero-anim.rf-pret .qa > span { animation-name:rfCarA; animation-delay:calc(var(--i) * 110ms); }
main.rf-v2 .rf-hero-anim.rf-pret .qb > span { animation-name:rfCarB; animation-delay:calc(var(--i) * 45ms); }
main.rf-v2 .rf-hero-anim.rf-pret .qa { animation-name:rfQa; }
main.rf-v2 .rf-hero-anim.rf-pret .qb { animation-name:rfQb; }
main.rf-v2 .rf-hero-anim.rf-pret .qa > span::after { animation:rfCaA var(--cycle) linear infinite both paused; animation-delay:calc(var(--i) * 110ms); }
main.rf-v2 .rf-hero-anim.rf-pret .qa > span:last-child::after { animation-name:rfCaAfin; }
main.rf-v2 .rf-hero-anim.rf-pret .qb > span::after { animation:rfCaB var(--cycle) linear infinite both paused; animation-delay:calc(var(--i) * 45ms); }
main.rf-v2 .rf-hero-anim.rf-pret .qb > span:last-child::after { animation-name:rfCaBfin; }
main.rf-v2 .rf-hero-anim.rf-pret .rf-anim__champ::after { animation:rfFocus var(--cycle) cubic-bezier(0.23,1,0.32,1) infinite both paused; }
main.rf-v2 .rf-hero-anim.rf-pret.rf-joue .rf-anim__q > span > span::after,
main.rf-v2 .rf-hero-anim.rf-pret.rf-joue .rf-anim__champ::after { animation-play-state:running; }
main.rf-v2 .rf-hero-anim.rf-pret .rf-curseur { animation-name:rfCurseur; }
main.rf-v2 .rf-hero-anim.rf-pret .la1 { animation-name:rfLa1; } main.rf-v2 .rf-hero-anim.rf-pret .la2 { animation-name:rfLa2; } main.rf-v2 .rf-hero-anim.rf-pret .la3 { animation-name:rfLa3; }
main.rf-v2 .rf-hero-anim.rf-pret .lb1 { animation-name:rfLb1; } main.rf-v2 .rf-hero-anim.rf-pret .lb2 { animation-name:rfLb2; }
main.rf-v2 .rf-hero-anim.rf-pret .lb3 { animation-name:rfLb3; } main.rf-v2 .rf-hero-anim.rf-pret .lb4 { animation-name:rfLb4; }
main.rf-v2 .rf-hero-anim.rf-pret .rf-ligne--vous { animation-name:rfVous; }
@keyframes rfCarA { 0%, 5.5% { opacity:0; } 5.8%, 100% { opacity:1; } }
@keyframes rfQa { 0%, 31.5% { opacity:1; visibility:visible; animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 33%, 100% { opacity:0; visibility:hidden; } }
@keyframes rfCarB { 0%, 36% { opacity:0; } 36.3%, 100% { opacity:1; } }
@keyframes rfQb { 0%, 95% { opacity:1; animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 97%, 100% { opacity:0; } }
@keyframes rfCaA { 0%, 5.5% { opacity:0; } 5.6%, 6.4% { opacity:1; } 6.5%, 100% { opacity:0; } }
@keyframes rfCaAfin { 0%, 5.5% { opacity:0; } 5.6%, 25% { opacity:1; } 25.1%, 100% { opacity:0; } }
@keyframes rfCaB { 0%, 36% { opacity:0; } 36.05%, 36.4% { opacity:1; } 36.45%, 100% { opacity:0; } }
@keyframes rfCaBfin { 0%, 36% { opacity:0; } 36.05%, 82% { opacity:1; } 82.1%, 100% { opacity:0; } }
@keyframes rfFocus { 0%, 4.4% { opacity:0; } 5.2%, 95% { opacity:1; } 97%, 100% { opacity:0; } }
@keyframes rfCurseur {
  0%, 0.5% { opacity:0; transform:translate(10px, 200px) scale(1); }
  1.5% { opacity:1; transform:translate(10px, 200px) scale(1); animation-timing-function:cubic-bezier(0.77,0,0.175,1); }
  4% { opacity:1; transform:translate(0, 0) scale(1); animation-timing-function:cubic-bezier(0.23,1,0.32,1); }
  4.4% { opacity:1; transform:translate(0, 0) scale(.86); animation-timing-function:cubic-bezier(0.23,1,0.32,1); }
  5.2%, 22% { opacity:1; transform:translate(0, 0) scale(1); animation-timing-function:cubic-bezier(0.77,0,0.175,1); }
  25%, 28% { opacity:1; transform:translate(-150px, 76px) scale(1); animation-timing-function:cubic-bezier(0.77,0,0.175,1); }
  30.5% { opacity:1; transform:translate(0, 0) scale(1); animation-timing-function:cubic-bezier(0.23,1,0.32,1); }
  30.9% { opacity:1; transform:translate(0, 0) scale(.86); animation-timing-function:cubic-bezier(0.23,1,0.32,1); }
  31.6%, 46% { opacity:1; transform:translate(0, 0) scale(1); animation-timing-function:cubic-bezier(0.77,0,0.175,1); }
  50%, 93% { opacity:1; transform:translate(-110px, 168px) scale(1); animation-timing-function:cubic-bezier(0.23,1,0.32,1); }
  96%, 100% { opacity:0; transform:translate(-110px, 168px) scale(1); }
}
@keyframes rfVous {
  0%, 12% { opacity:0; transform:translateY(-6px) scale(.97); animation-timing-function:cubic-bezier(0.23,1,0.32,1); }
  15%, 50% { opacity:1; transform:translateY(0) scale(1) rotate(0); }
  53%, 54% { opacity:1; transform:translateY(var(--pas)) scale(1) rotate(0); }
  57%, 58% { opacity:1; transform:translateY(calc(var(--pas) * 2)) scale(1) rotate(0); }
  61%, 62% { opacity:1; transform:translateY(calc(var(--pas) * 3)) scale(1) rotate(0); }
  67%, 100% { opacity:0; transform:translateY(calc(var(--pas) * 4.4)) scale(.98) rotate(5deg); }
}
@keyframes rfLa1 { 0%, 13.0% { opacity:0; transform:translateY(calc(var(--pas) * 1 - 6px)); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 16.0%, 31% { opacity:1; transform:translateY(var(--pas)); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 34%, 100% { opacity:0; transform:translateY(var(--pas)); } }
@keyframes rfLa2 { 0%, 13.6% { opacity:0; transform:translateY(calc(var(--pas) * 2 - 6px)); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 16.6%, 31% { opacity:1; transform:translateY(calc(var(--pas) * 2)); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 34%, 100% { opacity:0; transform:translateY(calc(var(--pas) * 2)); } }
@keyframes rfLa3 { 0%, 14.2% { opacity:0; transform:translateY(calc(var(--pas) * 3 - 6px)); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 17.2%, 31% { opacity:1; transform:translateY(calc(var(--pas) * 3)); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 34%, 100% { opacity:0; transform:translateY(calc(var(--pas) * 3)); } }
@keyframes rfLb1 { 0%, 50% { opacity:0; transform:translateY(calc(var(--pas) * -1)); animation-timing-function:cubic-bezier(0.77,0,0.175,1); } 53%, 54% { opacity:1; transform:translateY(0); } 57%, 58% { opacity:1; transform:translateY(var(--pas)); } 61%, 62% { opacity:1; transform:translateY(calc(var(--pas) * 2)); } 65%, 95% { opacity:1; transform:translateY(calc(var(--pas) * 3)); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 97%, 100% { opacity:0; transform:translateY(calc(var(--pas) * 3)); } }
@keyframes rfLb2 { 0%, 54% { opacity:0; transform:translateY(calc(var(--pas) * -1)); animation-timing-function:cubic-bezier(0.77,0,0.175,1); } 57%, 58% { opacity:1; transform:translateY(0); } 61%, 62% { opacity:1; transform:translateY(var(--pas)); } 65%, 95% { opacity:1; transform:translateY(calc(var(--pas) * 2)); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 97%, 100% { opacity:0; transform:translateY(calc(var(--pas) * 2)); } }
@keyframes rfLb3 { 0%, 58% { opacity:0; transform:translateY(calc(var(--pas) * -1)); animation-timing-function:cubic-bezier(0.77,0,0.175,1); } 61%, 62% { opacity:1; transform:translateY(0); } 65%, 95% { opacity:1; transform:translateY(var(--pas)); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 97%, 100% { opacity:0; transform:translateY(var(--pas)); } }
@keyframes rfLb4 { 0%, 62% { opacity:0; transform:translateY(calc(var(--pas) * -1)); animation-timing-function:cubic-bezier(0.77,0,0.175,1); } 65%, 95% { opacity:1; transform:translateY(0); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 97%, 100% { opacity:0; transform:translateY(0); } }
/* Pose sur la table (une fois) puis respiration lente ; l'ombre reste au sol (elle compense le mouvement). */
@media (prefers-reduced-motion: no-preference) {
  main.rf-v2 .rf-hero3 { animation:rfPose 900ms cubic-bezier(0.23,1,0.32,1) both, rfFlotte 7s 900ms ease-in-out infinite; }
  main.rf-v2 .rf-ombre { animation:rfOmbrePose 900ms cubic-bezier(0.23,1,0.32,1) both, rfOmbre 7s 900ms ease-in-out infinite; }
}
@keyframes rfPose { from { opacity:0; transform:translateY(18px); } to { opacity:1; transform:translateY(0); } }
@keyframes rfFlotte { 0%, 100% { transform:translateY(0); } 50% { transform:translateY(-5px); } }
@keyframes rfOmbrePose { from { opacity:0; transform:translateY(-18px) scaleX(.9); } to { opacity:1; transform:translateY(0) scaleX(1); } }
@keyframes rfOmbre { 0%, 100% { opacity:1; transform:translateY(0) scaleX(1); } 50% { opacity:.78; transform:translateY(5px) scaleX(.95); } }
/* Sur la table à partir de 1 200 px (photo cadrée large, images/referencement-v2/heros-*.webp) : inclinaison et ombre ;
   dessous, l'objet passe sous le texte, à plat (disposition tablette du squelette). */
@media (min-width:1200px) {
  main.rf-v2 .gp-hero__scene { right:calc(20vw + 24px - max(0px, (100vw - 1264px) / 2)); width:clamp(320px, 28vw, 420px); }
  main.rf-v2 .rf-hero3 > .card { transform:rotateX(7deg) rotateY(-8deg); transform-origin:50% 100%; }
  main.rf-v2 .rf-ombre { display:block; }
}
@media (max-width:440px) {
  main.rf-v2 .rf-curseur { display:none; }
}

/* --- 2. Méthode : la page auditée, corrigée, puis le reçu de suivi (papier sur sable) --- */
main.rf-v2 .rf-meth { --cycle:10s; width:100%; max-width:540px; margin:0 auto; }
main.rf-v2 .rf-meth__etapes { display:flex; justify-content:center; gap:32px; font:600 13px/1 var(--gp-titre); color:var(--gp-doux); }
main.rf-v2 .rf-meth__etapes span { position:relative; padding-bottom:9px; }
main.rf-v2 .rf-meth__etapes span::after { content:""; position:absolute; left:0; right:0; bottom:0; height:2px; border-radius:2px;
  background:var(--rf-azur); transform-origin:left; }
main.rf-v2 .rf-meth__scene { position:relative; height:268px; margin-top:22px; }
main.rf-v2 .rf-page { position:absolute; left:calc(50% - 230px); top:0; width:330px; height:244px; padding:18px; border-radius:12px; overflow:hidden;
  background:#fff; box-shadow:0 0 0 1px rgba(var(--rf-ombre),.06), -8px 16px 30px -16px rgba(var(--rf-ombre),.28); }
main.rf-v2 .rf-page .b { display:block; height:8px; margin-top:10px; border-radius:4px; background:#e6e9ef; }
main.rf-v2 .rf-page .b-nav { margin-top:0; height:10px; background:#eef1f5; }
main.rf-v2 .rf-page .b-titre { margin-top:20px; height:16px; width:62%; background:#d9dee6; }
main.rf-v2 .rf-page .b-l1 { width:92%; } main.rf-v2 .rf-page .b-l2 { width:84%; } main.rf-v2 .rf-page .b-l3 { width:70%; }
main.rf-v2 .rf-page .b-img { margin-top:18px; height:70px; width:46%; border-radius:6px; background:#e9edf3; }
main.rf-v2 .rf-scan { position:absolute; left:0; right:0; top:0; height:2px; background:var(--rf-azur); opacity:0; }
main.rf-v2 .rf-pt { position:absolute; width:20px; height:20px; }
main.rf-v2 .rf-pt.p1 { top:13px; left:78%; } main.rf-v2 .rf-pt.p2 { top:52px; left:64%; }
main.rf-v2 .rf-pt.p3 { top:104px; left:74%; } main.rf-v2 .rf-pt.p4 { top:170px; left:40%; }
main.rf-v2 .rf-pt .a, main.rf-v2 .rf-pt .c { position:absolute; inset:0; border-radius:50%; }
main.rf-v2 .rf-pt .a { background:#fff3c4; box-shadow:inset 0 0 0 2px rgba(92,68,0,.5); opacity:0; }
main.rf-v2 .rf-pt .c { display:grid; place-items:center; background:var(--rf-azur); color:#fff; font-size:12px; font-style:normal; }
main.rf-v2 .rf-recu { position:absolute; left:calc(50% + 72px); top:58px; width:168px; padding:14px 14px 18px; border-radius:4px 4px 0 0;
  background:#fff; transform:rotate(-1.5deg); box-shadow:0 0 0 1px rgba(var(--rf-ombre),.06), -8px 18px 30px -14px rgba(var(--rf-ombre),.3); }
main.rf-v2 .rf-recu::after { content:""; position:absolute; left:0; right:0; top:100%; height:8px;
  background:radial-gradient(circle at 7px 0, #fff 5px, transparent 5.5px) 0 0/14px 8px repeat-x; }
main.rf-v2 .rf-recu .r { display:block; height:6px; margin-top:9px; border-radius:3px; background:#e6e9ef; }
main.rf-v2 .rf-recu .r1 { margin-top:0; width:58%; height:8px; background:#cfd6e0; }
main.rf-v2 .rf-recu .r2 { width:90%; } main.rf-v2 .rf-recu .r3 { width:74%; } main.rf-v2 .rf-recu .r4 { width:84%; }
main.rf-v2 .rf-recu .rs { width:70%; height:9px; margin-top:12px; background:rgba(255,218,26,.6); }
main.rf-v2 .rf-recu .r5 { width:46%; }
main.rf-v2 .rf-meth.rf-pret .rf-meth__etapes span::after { animation:rfE1 var(--cycle) cubic-bezier(0.23,1,0.32,1) infinite both paused; }
main.rf-v2 .rf-meth.rf-pret .rf-meth__etapes .e2::after { animation-name:rfE2; }
main.rf-v2 .rf-meth.rf-pret .rf-meth__etapes .e3::after { animation-name:rfE3; }
main.rf-v2 .rf-meth.rf-pret.rf-joue .rf-meth__etapes span::after { animation-play-state:running; }
main.rf-v2 .rf-meth.rf-pret .rf-scan { animation-name:rfScan; }
main.rf-v2 .rf-meth.rf-pret .rf-recu { animation-name:rfRecu; }
@keyframes rfE1 { 0%, 3% { transform:scaleX(0); } 6%, 96% { transform:scaleX(1); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 98%, 100% { transform:scaleX(0); } }
@keyframes rfE2 { 0%, 33% { transform:scaleX(0); } 36%, 96% { transform:scaleX(1); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 98%, 100% { transform:scaleX(0); } }
@keyframes rfE3 { 0%, 56% { transform:scaleX(0); } 59%, 96% { transform:scaleX(1); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 98%, 100% { transform:scaleX(0); } }
@keyframes rfScan { 0%, 6% { opacity:0; transform:translateY(0); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 7% { opacity:1; transform:translateY(6px); animation-timing-function:linear; } 29% { opacity:1; transform:translateY(236px); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 31%, 100% { opacity:0; transform:translateY(244px); } }
main.rf-v2 .rf-meth.rf-pret .p1 .a { animation-name:rfPa1; } main.rf-v2 .rf-meth.rf-pret .p1 .c { animation-name:rfPc1; }
@keyframes rfPa1 { 0%, 9.0% { opacity:0; transform:scale(.9); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 11.5%, 38% { opacity:1; transform:scale(1); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 41%, 100% { opacity:0; transform:scale(1); } }
@keyframes rfPc1 { 0%, 38% { opacity:0; transform:scale(.9); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 41%, 96% { opacity:1; transform:scale(1); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 98%, 100% { opacity:0; transform:scale(1); } }
main.rf-v2 .rf-meth.rf-pret .p2 .a { animation-name:rfPa2; } main.rf-v2 .rf-meth.rf-pret .p2 .c { animation-name:rfPc2; }
@keyframes rfPa2 { 0%, 12.0% { opacity:0; transform:scale(.9); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 14.5%, 42% { opacity:1; transform:scale(1); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 45%, 100% { opacity:0; transform:scale(1); } }
@keyframes rfPc2 { 0%, 42% { opacity:0; transform:scale(.9); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 45%, 96% { opacity:1; transform:scale(1); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 98%, 100% { opacity:0; transform:scale(1); } }
main.rf-v2 .rf-meth.rf-pret .p3 .a { animation-name:rfPa3; } main.rf-v2 .rf-meth.rf-pret .p3 .c { animation-name:rfPc3; }
@keyframes rfPa3 { 0%, 16.5% { opacity:0; transform:scale(.9); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 19.0%, 46% { opacity:1; transform:scale(1); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 49%, 100% { opacity:0; transform:scale(1); } }
@keyframes rfPc3 { 0%, 46% { opacity:0; transform:scale(.9); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 49%, 96% { opacity:1; transform:scale(1); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 98%, 100% { opacity:0; transform:scale(1); } }
main.rf-v2 .rf-meth.rf-pret .p4 .a { animation-name:rfPa4; } main.rf-v2 .rf-meth.rf-pret .p4 .c { animation-name:rfPc4; }
@keyframes rfPa4 { 0%, 22.0% { opacity:0; transform:scale(.9); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 24.5%, 50% { opacity:1; transform:scale(1); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 53%, 100% { opacity:0; transform:scale(1); } }
@keyframes rfPc4 { 0%, 50% { opacity:0; transform:scale(.9); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 53%, 96% { opacity:1; transform:scale(1); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 98%, 100% { opacity:0; transform:scale(1); } }
@keyframes rfRecu { 0%, 60% { opacity:1; clip-path:inset(0 0 100% 0); transform:rotate(-1.5deg); animation-timing-function:linear; } 71%, 96% { opacity:1; clip-path:inset(0 0 -12px 0); transform:rotate(-1.5deg); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 98%, 100% { opacity:0; clip-path:inset(0 0 -12px 0); transform:rotate(-1.5deg); } }
main.rf-v2 .rf-recu { clip-path:inset(0 0 -12px 0); }

/* --- 3. SEO et moteurs d'IA : une question, deux réponses, le même site (papier sur neige) --- */
main.rf-v2 .rf-geo2 { --cycle:11s; width:100%; max-width:560px; margin:0 auto; }
main.rf-v2 .rf-geo2 .rf-anim__champ { background:#fff; color:var(--gp-texte);
  box-shadow:0 0 0 1px rgba(var(--rf-ombre),.08), -8px 16px 30px -16px rgba(var(--rf-ombre),.24); }
main.rf-v2 .rf-geo2 .rf-anim__champ i { color:var(--rf-azur); }
main.rf-v2 .rf-geo2__vues { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; margin-top:14px; }
main.rf-v2 .rf-vue { position:relative; min-height:178px; padding:46px 16px 16px; border-radius:12px; background:#fff;
  box-shadow:0 0 0 1px rgba(var(--rf-ombre),.08), -8px 16px 30px -16px rgba(var(--rf-ombre),.24); }
main.rf-v2 .rf-vue__ic { position:absolute; top:14px; left:16px; width:24px; height:24px; display:grid; place-items:center;
  border-radius:7px; background:var(--gp-sable); color:var(--rf-azur); font-size:13px; }
main.rf-v2 .rf-gl { height:34px; margin-top:8px; padding:0 12px; border-radius:8px; background:#f2f4f7;
  display:flex; flex-direction:column; justify-content:center; gap:6px; }
main.rf-v2 .rf-gl:first-of-type { margin-top:0; }
main.rf-v2 .rf-gl .t { display:block; height:6px; width:70%; border-radius:3px; background:#d9dee6; }
main.rf-v2 .rf-gl .u { display:block; height:5px; width:36%; border-radius:3px; background:#e6e9ef; }
main.rf-v2 .rf-gl.g3 .t { width:58%; }
main.rf-v2 .rf-gl--vous { background:rgba(30,79,209,.07); box-shadow:inset 0 0 0 1px rgba(30,79,209,.35); font:600 13px/1 var(--gp-titre); color:var(--rf-azur); }
main.rf-v2 .rf-ia { display:block; height:7px; margin-top:10px; border-radius:4px; background:#dfe4ec; }
main.rf-v2 .rf-ia.i1 { margin-top:2px; width:94%; } main.rf-v2 .rf-ia.i2 { width:86%; } main.rf-v2 .rf-ia.i3 { width:96%; } main.rf-v2 .rf-ia.i4 { width:58%; }
main.rf-v2 .rf-source { display:inline-flex; margin-top:16px; padding:4px 10px; border-radius:99px; background:rgba(30,79,209,.08);
  box-shadow:inset 0 0 0 1px rgba(30,79,209,.35); font:600 12px/1.2 var(--gp-titre); color:var(--rf-azur); }
main.rf-v2 .rf-geo2.rf-pret .qg > span { animation-name:rfCarG; animation-delay:calc(var(--i) * 45ms); }
main.rf-v2 .rf-geo2.rf-pret .qg { animation-name:rfQg; }
main.rf-v2 .rf-geo2.rf-pret .g1 { animation-name:rfG1; } main.rf-v2 .rf-geo2.rf-pret .g2 { animation-name:rfG2; } main.rf-v2 .rf-geo2.rf-pret .g3 { animation-name:rfG3; }
main.rf-v2 .rf-geo2.rf-pret .i1 { animation-name:rfI1; } main.rf-v2 .rf-geo2.rf-pret .i2 { animation-name:rfI2; }
main.rf-v2 .rf-geo2.rf-pret .i3 { animation-name:rfI3; } main.rf-v2 .rf-geo2.rf-pret .i4 { animation-name:rfI4; }
main.rf-v2 .rf-geo2.rf-pret .rf-source { animation-name:rfSrc; }
@keyframes rfCarG { 0%, 5% { opacity:0; } 5.4%, 100% { opacity:1; } }
@keyframes rfQg { 0%, 95% { opacity:1; animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 97%, 100% { opacity:0; } }
@keyframes rfG1 { 0%, 19.0% { opacity:0; transform:translateY(-6px); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 22.0%, 95% { opacity:1; transform:translateY(0); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 97%, 100% { opacity:0; transform:translateY(0); } }
@keyframes rfG2 { 0%, 19.7% { opacity:0; transform:translateY(-6px); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 22.7%, 95% { opacity:1; transform:translateY(0); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 97%, 100% { opacity:0; transform:translateY(0); } }
@keyframes rfG3 { 0%, 20.4% { opacity:0; transform:translateY(-6px); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 23.4%, 95% { opacity:1; transform:translateY(0); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 97%, 100% { opacity:0; transform:translateY(0); } }
@keyframes rfI1 { 0%, 23% { opacity:1; clip-path:inset(0 100% 0 0); animation-timing-function:linear; } 27%, 95% { opacity:1; clip-path:inset(0 0 0 0); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 97%, 100% { opacity:0; clip-path:inset(0 0 0 0); } }
@keyframes rfI2 { 0%, 26% { opacity:1; clip-path:inset(0 100% 0 0); animation-timing-function:linear; } 30%, 95% { opacity:1; clip-path:inset(0 0 0 0); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 97%, 100% { opacity:0; clip-path:inset(0 0 0 0); } }
@keyframes rfI3 { 0%, 29% { opacity:1; clip-path:inset(0 100% 0 0); animation-timing-function:linear; } 33%, 95% { opacity:1; clip-path:inset(0 0 0 0); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 97%, 100% { opacity:0; clip-path:inset(0 0 0 0); } }
@keyframes rfI4 { 0%, 32% { opacity:1; clip-path:inset(0 100% 0 0); animation-timing-function:linear; } 36%, 95% { opacity:1; clip-path:inset(0 0 0 0); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 97%, 100% { opacity:0; clip-path:inset(0 0 0 0); } }
@keyframes rfSrc { 0%, 39% { opacity:0; transform:scale(.95); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 42%, 95% { opacity:1; transform:scale(1); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 97%, 100% { opacity:0; transform:scale(1); } }

/* --- 4. Notre différence (gabarit C) : l'objet discret qui documente « Web-ADNS » (verre sur encre) --- */
main.rf-v2 .rf-tete { --cycle:8s; margin-top:24px; }
main.rf-v2 .rf-tete__pastilles { display:flex; flex-wrap:wrap; gap:6px; }
main.rf-v2 .rf-tete__pastilles span { padding:4px 9px; border-radius:99px; background:rgba(156,193,255,.14);
  box-shadow:inset 0 0 0 1px rgba(156,193,255,.4); font:600 12px/1.2 var(--gp-titre); color:var(--rf-azur-nuit); }
main.rf-v2 .rf-tete__pile { position:relative; height:150px; margin-top:18px; }
main.rf-v2 .rf-mini { position:absolute; width:156px; height:108px; padding:13px; border-radius:8px; background:#1b2430;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.16), -6px 10px 18px -8px rgba(0,0,0,.55); }
main.rf-v2 .rf-mini.m1 { left:0; top:42px; } main.rf-v2 .rf-mini.m2 { left:92px; top:28px; }
main.rf-v2 .rf-mini.m3 { left:184px; top:14px; } main.rf-v2 .rf-mini.m4 { left:276px; top:0; }
main.rf-v2 .rf-mini .h { position:relative; display:block; height:10px; border-radius:3px; background:rgba(255,255,255,.18); }
main.rf-v2 .rf-mini .h::after { content:""; position:absolute; inset:0; border-radius:3px; background:var(--rf-azur-nuit); }
main.rf-v2 .rf-mini .l { display:block; height:5px; width:80%; margin-top:9px; border-radius:3px; background:rgba(255,255,255,.12); }
main.rf-v2 .rf-mini .l2 { width:56%; }
main.rf-v2 .rf-tete.rf-pret .rf-mini .h::after { animation:rfH var(--cycle) cubic-bezier(0.23,1,0.32,1) infinite both paused; }
main.rf-v2 .rf-tete.rf-pret.rf-joue .rf-mini .h::after { animation-play-state:running; }
main.rf-v2 .rf-tete.rf-pret .rf-mini { animation-name:rfMini; }
main.rf-v2 .rf-tete.rf-pret .t1 { animation-name:rfT1; } main.rf-v2 .rf-tete.rf-pret .t2 { animation-name:rfT2; } main.rf-v2 .rf-tete.rf-pret .t3 { animation-name:rfT3; }
@keyframes rfH { 0%, 26% { opacity:0; } 30%, 95% { opacity:1; } 97%, 100% { opacity:0; } }
@keyframes rfMini { 0%, 25% { transform:translateY(0); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 28% { transform:translateY(-3px); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 34%, 100% { transform:translateY(0); } }
@keyframes rfT1 { 0%, 4.0% { opacity:0; transform:translateY(-6px); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 7.0%, 22% { opacity:1; transform:translateY(0); animation-timing-function:cubic-bezier(0.77,0,0.175,1); } 24% { opacity:1; transform:translateY(4px); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 27%, 95% { opacity:1; transform:translateY(0); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 97%, 100% { opacity:0; transform:translateY(0); } }
@keyframes rfT2 { 0%, 4.6% { opacity:0; transform:translateY(-6px); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 7.6%, 22% { opacity:1; transform:translateY(0); animation-timing-function:cubic-bezier(0.77,0,0.175,1); } 24% { opacity:1; transform:translateY(4px); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 27%, 95% { opacity:1; transform:translateY(0); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 97%, 100% { opacity:0; transform:translateY(0); } }
@keyframes rfT3 { 0%, 5.2% { opacity:0; transform:translateY(-6px); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 8.2%, 22% { opacity:1; transform:translateY(0); animation-timing-function:cubic-bezier(0.77,0,0.175,1); } 24% { opacity:1; transform:translateY(4px); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 27%, 95% { opacity:1; transform:translateY(0); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 97%, 100% { opacity:0; transform:translateY(0); } }

/* Placement seulement (permis, §6 bis) : objet du haut de page centré en hauteur sur le bloc de texte. */
@media(min-width:1024px){
 main.rf-v2 .gp-hero__scene { top:300px; }
}
@media(max-width:1023px){
 }
@media(max-width:640px){
 main.rf-v2 .rf-geo2__vues { grid-template-columns:minmax(0,1fr); }
 main.rf-v2 .rf-meth__scene { height:330px; }
 main.rf-v2 .rf-page { left:0; width:min(330px, 86%); }
 main.rf-v2 .rf-recu { left:auto; right:0; top:120px; width:150px; }
}

main.rf-v2 .rf-v2-method { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:26px; margin-top:42px; list-style:none; margin-left:0; padding:0; }
main.rf-v2 .rf-v2-method li { padding-top:22px; border-top:2px solid var(--rf-azur); }
main.rf-v2 .rf-v2-method span { font-size:12px; color:var(--rf-azur); font-weight:800; }
main.rf-v2 .rf-v2-method h3 { margin-top:12px; font-size:clamp(20px,2vw,25px); }
main.rf-v2 .rf-v2-method p { margin-top:12px; line-height:1.7; }
main.rf-v2 .rf-faq__l { max-width:900px; }
main.rf-v2 .gp-fin { min-height:520px; }

/* Haut de page, hauteur et typographie héritées intégralement de ad-referencement-v1.css (même produit) :
   aucune surcharge ici (§6bis — une nouvelle version ne s'empile pas sur la précédente). */
@media(max-width:1023px){
 main.rf-v2 .gp-hero__t { width:100%; }
 main.rf-v2 .rf-v2-method { grid-template-columns:1fr; gap:24px; }
}
@media(max-width:760px){
 main.rf-v2 .gp-hero__scene { margin-top:28px; }
 }

/* La règle commune .gp2 .gp-chiffre span (légende sous le chiffre) atteignait aussi le span.ad-insec que la typographie pose
   autour de « Web-ADNS » ou « Algo Data » : en bloc et en 16 px, il cassait le chiffre et les légendes. On le rend au texte qui le contient. */
main.rf-v2 .gp-chiffre .ad-insec { display:inline; margin:0; max-width:none; font:inherit; color:inherit; }


/* ===== Composition (30/10/2026, retour d'Antoine « composition gravement à désirer ») =====
   Squelette des pages témoins (Lead-ADNS, Mail-ADNS) : chaque section illustrée en texte + grand panneau (gp-cas, côtés
   alternés), panneau clair teinté (gabarit A) ou photo de détail avec un objet en coin (gabarit B), bande de preuve au grand
   chiffre (gabarit C), FAQ en deux colonnes. Classes calquées sur ad-lead-v1.css, jetons encre et azur. */
main.rf-v2 .rf-cas { margin-top:0; }
main.rf-v2 .rf-cas h2 { margin-top:14px; font-size:clamp(30px,3.2vw,44px); line-height:1.04; }
main.rf-v2 .rf-cas .gp-cas__t p.rf-chap { margin-top:18px; font-size:18px; line-height:1.55; color:var(--gp-texte); }
main.rf-v2 .rf-cas .rf-cms { margin-top:22px; }
main.rf-v2 .pan.rf-clair { aspect-ratio:auto; overflow:hidden; border-radius:14px; display:grid; place-items:center; padding:clamp(26px,3.4vw,52px) clamp(18px,2.6vw,40px);
  background:radial-gradient(ellipse 70% 80% at 92% 0%,rgba(255,255,255,.95),rgba(255,255,255,0) 60%),#e4eaf5; box-shadow:inset 0 0 0 1px rgba(var(--rf-ombre),.08); }
main.rf-v2 .gp-sable .pan.rf-clair { background:radial-gradient(ellipse 70% 80% at 92% 0%,rgba(255,255,255,.92),rgba(255,255,255,0) 60%),#f3f6fb; }
main.rf-v2 .pan.rf-photo { aspect-ratio:1 / 1; background:var(--gp-encre); border-radius:14px; }
main.rf-v2 .rf-photo .rf-ph { position:absolute; inset:0; }
main.rf-v2 .rf-photo .rf-ph > img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:40% 60%; }
main.rf-v2 .rf-photo .rf-ph::after { content:""; position:absolute; inset:0; pointer-events:none; background:linear-gradient(200deg,rgba(var(--rf-ombre),.4) 0%,rgba(var(--rf-ombre),0) 45%); }
main.rf-v2 .rf-photo .rf-ph__obj { position:absolute; z-index:2; right:6%; top:6%; width:min(290px,58%); }
/* méthode : les trois temps en liste verticale à côté du panneau */
main.rf-v2 .rf-cas .rf-v2-method { grid-template-columns:minmax(0,1fr); gap:0; margin-top:26px; }
main.rf-v2 .rf-cas .rf-v2-method li { padding:16px 0; border-top:1px solid var(--gp-filet); }
main.rf-v2 .rf-cas .rf-v2-method h3 { margin-top:6px; font-size:20px; }
main.rf-v2 .rf-cas .rf-v2-method p { margin-top:8px; font-size:15px; line-height:1.6; }
/* bande de preuve (gabarit C) : un grand chiffre, et l'objet Web-ADNS dans un cadre de verre */
main.rf-v2 .rf-c { display:grid; grid-template-columns:minmax(0,486fr) minmax(0,612fr); column-gap:var(--gp-gap); align-items:center; margin-top:clamp(48px,6vw,80px); }
main.rf-v2 .rf-c .gp-chiffre { margin-top:0; border-left:0; padding-left:0; }
main.rf-v2 .rf-c .gp-chiffre b { color:var(--rf-azur-nuit); }
main.rf-v2 .rf-c__obj { padding:clamp(22px,3vw,36px); border-radius:14px; background:rgba(255,255,255,.04); box-shadow:inset 0 0 0 1px rgba(255,255,255,.12); }
main.rf-v2 .rf-c__lib { max-width:34em; font-size:16px; line-height:1.55; color:rgba(255,255,255,.78); }
main.rf-v2 .rf-c__lib b { display:block; margin-bottom:6px; font:600 22px/1.2 var(--gp-titre); color:#fff; }
/* FAQ en deux colonnes, comme Lead-ADNS */
main.rf-v2 .rf-faq { display:grid; grid-template-columns:minmax(0,420fr) minmax(0,700fr); column-gap:var(--gp-gap); align-items:start; }
main.rf-v2 .rf-faq h2 { margin-top:14px; font-size:clamp(30px,3.3vw,46px); line-height:1.02; }
main.rf-v2 .rf-faq .rf-faq__l { margin-top:0; max-width:none; }

/* --- Objet « deux vocabulaires » (photo de l'enjeu) : la recherche du client et le titre de la page ne se rejoignent pas --- */
main.rf-v2 .rf-mots { --cycle:7s; padding:14px; }
main.rf-v2 .rf-mots__q, main.rf-v2 .rf-mots__p { display:flex; align-items:center; gap:9px; padding:9px 12px; border-radius:9px; font-size:13px; color:#fff;
  background:rgba(255,255,255,.08); box-shadow:inset 0 0 0 1px rgba(255,255,255,.18); }
main.rf-v2 .rf-mots__q i { color:var(--rf-azur-nuit); }
main.rf-v2 .rf-mots__p { background:rgba(255,255,255,.04); } main.rf-v2 .rf-mots__p i { color:rgba(255,255,255,.7); }
main.rf-v2 .rf-mots__lien { position:relative; height:46px; }
main.rf-v2 .rf-mots__lien i { position:absolute; left:28px; height:36%; border-left:2px dotted rgba(156,193,255,.85); }
main.rf-v2 .rf-mots__lien .a { top:0; transform-origin:top; }
main.rf-v2 .rf-mots__lien .b { bottom:0; transform-origin:bottom; border-left-color:rgba(255,255,255,.45); }
main.rf-v2 .rf-mots.rf-pret .rf-mots__q { animation-name:rfMq; } main.rf-v2 .rf-mots.rf-pret .rf-mots__p { animation-name:rfMp; }
main.rf-v2 .rf-mots.rf-pret .rf-mots__lien .a, main.rf-v2 .rf-mots.rf-pret .rf-mots__lien .b { animation-name:rfMl; }
@keyframes rfMq { 0%, 4% { opacity:0; transform:translateY(-6px); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 10%, 93% { opacity:1; transform:translateY(0); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 97%, 100% { opacity:0; transform:translateY(0); } }
@keyframes rfMp { 0%, 10% { opacity:0; transform:translateY(6px); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 16%, 93% { opacity:1; transform:translateY(0); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 97%, 100% { opacity:0; transform:translateY(0); } }
@keyframes rfMl { 0%, 20% { opacity:1; transform:scaleY(0); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 34%, 93% { opacity:1; transform:scaleY(1); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 97%, 100% { opacity:0; transform:scaleY(1); } }

/* --- Objet « socles » (votre site reste où il est) : la page et ses corrections restent, l'outil qui la publie change --- */
main.rf-v2 .rf-socles { --cycle:10s; width:100%; max-width:440px; margin:0 auto; }
main.rf-v2 .rf-nav { border-radius:12px; overflow:hidden; background:#fff; box-shadow:0 0 0 1px rgba(var(--rf-ombre),.08), -8px 16px 30px -16px rgba(var(--rf-ombre),.28); }
main.rf-v2 .rf-nav__barre { display:flex; align-items:center; gap:6px; height:36px; padding:0 12px; background:#f2f4f7; border-bottom:1px solid var(--gp-filet); }
main.rf-v2 .rf-nav__barre i { width:9px; height:9px; border-radius:50%; background:#d5dbe4; }
main.rf-v2 .rf-nav__barre span { margin-left:10px; padding:3px 12px; border-radius:99px; background:#fff; box-shadow:inset 0 0 0 1px var(--gp-filet); font-size:12px; color:var(--gp-discret); }
main.rf-v2 .rf-nav__page { position:relative; height:206px; padding:18px; }
main.rf-v2 .rf-nav__page .b { display:block; height:8px; margin-top:10px; border-radius:4px; background:#e6e9ef; }
main.rf-v2 .rf-nav__page .b-nav { margin-top:0; height:10px; background:#eef1f5; }
main.rf-v2 .rf-nav__page .b-titre { margin-top:20px; height:16px; width:58%; background:#d9dee6; }
main.rf-v2 .rf-nav__page .b-l1 { width:90%; } main.rf-v2 .rf-nav__page .b-l2 { width:76%; }
main.rf-v2 .rf-nav__page .b-img { margin-top:18px; height:64px; width:44%; border-radius:6px; background:#e9edf3; }
main.rf-v2 .rf-ok { position:absolute; width:22px; height:22px; display:grid; place-items:center; border-radius:50%; background:var(--rf-azur); color:#fff; font-size:12px; }
main.rf-v2 .rf-ok.o1 { top:12px; left:76%; } main.rf-v2 .rf-ok.o2 { top:52px; left:60%; } main.rf-v2 .rf-ok.o3 { top:128px; left:40%; }
main.rf-v2 .rf-socle { display:grid; place-items:center; width:84%; height:48px; margin:14px auto 0; border-radius:10px;
  background:linear-gradient(#fff,#eef2f8); box-shadow:0 0 0 1px rgba(var(--rf-ombre),.08), 0 12px 22px -14px rgba(var(--rf-ombre),.4); }
main.rf-v2 .rf-socle span { grid-area:1/1; font:600 14px/1 var(--gp-titre); color:var(--gp-texte); }
main.rf-v2 .rf-socle .s2, main.rf-v2 .rf-socle .s3, main.rf-v2 .rf-socle .s4 { opacity:0; }
main.rf-v2 .rf-socles.rf-pret .s1 { animation-name:rfS1; } main.rf-v2 .rf-socles.rf-pret .s2 { animation-name:rfS2; }
main.rf-v2 .rf-socles.rf-pret .s3 { animation-name:rfS3; } main.rf-v2 .rf-socles.rf-pret .s4 { animation-name:rfS4; }
main.rf-v2 .rf-socles.rf-pret .rf-nav { animation-name:rfNav; } main.rf-v2 .rf-socles.rf-pret .rf-ok { animation-name:rfOk; }
@keyframes rfS1 { 0%, 22% { opacity:1; transform:translateY(0); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 25%, 97% { opacity:0; transform:translateY(-8px); } 97.01% { opacity:0; transform:translateY(8px); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 100% { opacity:1; transform:translateY(0); } }
@keyframes rfS2 { 0%, 24.5% { opacity:0; transform:translateY(8px); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 28%, 47% { opacity:1; transform:translateY(0); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 50%, 100% { opacity:0; transform:translateY(-8px); } }
@keyframes rfS3 { 0%, 49.5% { opacity:0; transform:translateY(8px); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 53%, 72% { opacity:1; transform:translateY(0); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 75%, 100% { opacity:0; transform:translateY(-8px); } }
@keyframes rfS4 { 0%, 74.5% { opacity:0; transform:translateY(8px); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 78%, 97% { opacity:1; transform:translateY(0); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 100%, 100% { opacity:0; transform:translateY(-8px); } }
@keyframes rfNav { 0%, 22% { transform:translateY(0); } 23.5% { transform:translateY(-3px); } 26%, 47% { transform:translateY(0); } 48.5% { transform:translateY(-3px); }
  51%, 72% { transform:translateY(0); } 73.5% { transform:translateY(-3px); } 76%, 97% { transform:translateY(0); } 98.5% { transform:translateY(-3px); } 100% { transform:translateY(0); } }
@keyframes rfOk { 0%, 24% { transform:scale(1); } 26% { transform:scale(1.14); } 28%, 49% { transform:scale(1); } 51% { transform:scale(1.14); }
  53%, 74% { transform:scale(1); } 76% { transform:scale(1.14); } 78%, 100% { transform:scale(1); } }
@media (max-width:1023px) {
  main.rf-v2 .rf-c, main.rf-v2 .rf-faq { grid-template-columns:minmax(0,1fr); }
  main.rf-v2 .rf-c { row-gap:32px; }
  main.rf-v2 .rf-faq .rf-faq__l { margin-top:28px; }
  main.rf-v2 .pan.rf-photo, main.rf-v2 .pan.rf-clair { width:100%; max-width:612px; }
}
@media (max-width:520px) {
  main.rf-v2 .rf-tete__pile { height:130px; }
  main.rf-v2 .rf-mini { width:120px; height:86px; }
  main.rf-v2 .rf-mini.m2 { left:60px; } main.rf-v2 .rf-mini.m3 { left:120px; } main.rf-v2 .rf-mini.m4 { left:180px; }
}
main.rf-v2 .rf-mots__q span, main.rf-v2 .rf-mots__p span { white-space:nowrap; }
@media (max-width:640px) {
  main.rf-v2 .rf-photo .rf-ph__obj { width:min(290px,78%); right:5%; top:5%; }
}

/* Photo du haut de page propre à la V2 (30/10/2026) : même plan que la V1, cadré plus large — personnage au cinquième droit,
   long plateau libre — pour que l'objet reste posé sur la table entre le texte et le personnage dès 1 024 px. */
main.rf-v2 .gp-photo { background-image:url(/images/referencement-v2/heros-1920.webp); }
@media (max-width:760px) { main.rf-v2 .gp-photo { background-image:url(/images/referencement-v2/heros-900.webp); } }
/* Plage en fin de feuille (§9) : colonne de texte un peu plus étroite entre 1 024 et 1 439 px pour laisser la table à l'objet. */
@media (min-width:1024px) and (max-width:1679px) { main.rf-v2 .gp-hero__t { width:min(620px, 48%); } }
/* Entre 1 024 et 1 199 px, la table libre est trop courte pour une carte lisible : disposition tablette du squelette (l'objet sous le texte). */
@media (min-width:1024px) and (max-width:1199px) {
  main.rf-v2 .gp-hero { height:auto; padding-bottom:56px; }
  main.rf-v2 .gp-hero__scene { position:relative; top:auto; right:auto; width:auto; max-width:420px; margin-top:36px; transform:none; }
}

/* ===== V3 (30/10/2026) : rédactionnel ChatGPT dans la composition V2 ===== */
main.rf-v3 .rf-lien-cas { margin-top:20px; font-size:16px; font-weight:600; }
main.rf-v3 .rf-lien-cas a { display:inline-flex; align-items:center; gap:8px; min-height:44px; color:var(--rf-azur); text-underline-offset:5px; }
/* bande sombre « Pourquoi Algo Data » en texte + panneau de verre */
main.rf-v3 .rf-preuves .gp-cas__t p { color:rgba(255,255,255,.78); }
main.rf-v3 .rf-preuves .gp-cas__t p.rf-chap { color:#fff; }
main.rf-v2 .pan.rf-verre-pan { aspect-ratio:auto; overflow:hidden; border-radius:14px; padding:clamp(24px,3vw,40px);
  background:rgba(255,255,255,.04); box-shadow:inset 0 0 0 1px rgba(255,255,255,.12); }
/* objet « publication » : les réglages se posent, puis la même mécanique s'applique par vagues à une mosaïque de pages */
main.rf-v2 .rf-pub { --cycle:8s; }
main.rf-v2 .rf-pub__grille { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); gap:5px; margin-top:20px; }
main.rf-v2 .rf-pub__grille i { position:relative; aspect-ratio:4 / 3; border-radius:4px;
  background:linear-gradient(rgba(255,255,255,.22),rgba(255,255,255,.22)) top/100% 3px no-repeat, rgba(255,255,255,.05); }
main.rf-v2 .rf-pub__grille i::after { content:""; position:absolute; inset:0; border-radius:4px;
  background:linear-gradient(var(--rf-azur-nuit),var(--rf-azur-nuit)) top/100% 3px no-repeat, rgba(156,193,255,.14);
  box-shadow:inset 0 0 0 1px rgba(156,193,255,.35); }
main.rf-v2 .rf-pub.rf-pret .t1 { animation-name:rfT1; } main.rf-v2 .rf-pub.rf-pret .t2 { animation-name:rfT2; } main.rf-v2 .rf-pub.rf-pret .t3 { animation-name:rfT3; }
main.rf-v2 .rf-pub.rf-pret .rf-pub__grille i { animation-name:rfTuile; animation-delay:calc(var(--d) * 60ms); }
main.rf-v2 .rf-pub.rf-pret .rf-pub__grille i::after { animation:rfTuileAllume var(--cycle) cubic-bezier(0.23,1,0.32,1) infinite both paused; animation-delay:calc(var(--d) * 60ms); }
main.rf-v2 .rf-pub.rf-pret.rf-joue .rf-pub__grille i::after { animation-play-state:running; }
@keyframes rfTuile { 0%, 25% { transform:scale(1); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 28% { transform:scale(1.08); animation-timing-function:cubic-bezier(0.23,1,0.32,1); } 32%, 100% { transform:scale(1); } }
@keyframes rfTuileAllume { 0%, 25% { opacity:0; } 28%, 93% { opacity:1; } 97%, 100% { opacity:0; } }
@media (max-width:520px) { main.rf-v2 .rf-pub__grille { gap:4px; } }
