/* =========================================================
   REFONTE « luxe sobre » — accueil (07/11/2026)
   Chargé après styles.css ; tout est préfixé .rf (classe sur <body>).
   Retirer la classe .rf du <body> ou ce fichier rétablit l'ancien rendu.
   Aucun texte ni image modifié : dispositions, effets et animations seulement.
   ========================================================= */
.rf{--ease:cubic-bezier(.22,.61,.36,1);--ease-out:cubic-bezier(.16,1,.3,1)}

/* ---------- Apparitions : plus lentes, plus amples ---------- */
.rf .reveal{transform:translateY(26px);transition:opacity .9s ease,transform 1s var(--ease-out)}
.rf .reveal.in{opacity:1;transform:none}
.rf .reveal.stagger{transform:translateY(18px)}
.rf .stagger.in>*{animation-duration:.9s;animation-timing-function:var(--ease-out)}
.rf .stagger.in>*:nth-child(1){animation-delay:.04s}
.rf .stagger.in>*:nth-child(2){animation-delay:.12s}
.rf .stagger.in>*:nth-child(3){animation-delay:.20s}
.rf .stagger.in>*:nth-child(4){animation-delay:.28s}
.rf .stagger.in>*:nth-child(5){animation-delay:.36s}
.rf .stagger.in>*:nth-child(n+6){animation-delay:.44s}

/* ---------- En-tête : se rétracte, se masque en descente ---------- */
.rf header{transition:background .3s ease,box-shadow .3s ease,border-color .3s ease,transform .6s var(--ease)}
.rf .nav{transition:height .4s var(--ease)}
.rf .brand-logo{transition:height .4s var(--ease)}
@media (min-width:1141px){
  .rf header.scrolled .nav{height:62px}
  .rf header.scrolled .brand-logo{height:38px}
  .rf header.hdr-hide:not(:focus-within){transform:translateY(-102%)}
}

/* ---------- Hero immersif plein écran (desktop) ---------- */
@keyframes rfLine{from{opacity:0;transform:translateY(34px);clip-path:inset(0 0 100% 0)}to{opacity:1;transform:none;clip-path:inset(0 0 -10% 0)}}
@keyframes rfUp{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
@keyframes rfCue{0%{transform:scaleY(0);transform-origin:top}45%{transform:scaleY(1);transform-origin:top}55%{transform:scaleY(1);transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}
.rf .hero-copy>*{animation:rfUp .9s var(--ease-out) backwards}
.rf .hero-copy>.eyebrow{animation-delay:.15s}
.rf .hero-copy>h1{animation:rfLine 1.1s var(--ease-out) backwards .3s}
.rf .hero-copy>.sub{animation-delay:.55s}
.rf .hero-copy>.hero-actions{animation-delay:.7s}
.rf .hero-copy>.hero-awards{animation-delay:.85s}
@media (min-width:981px){
  .rf .hero-home .hero-media{width:100%;top:-70px;transform:translate3d(0,var(--py,0px),0);will-change:transform}
  .rf .hero-home .hero-media img{object-position:center 58%}
  .rf .hero-home .hero-media::after{background:
    linear-gradient(90deg,rgba(7,13,24,.94) 0%,rgba(7,13,24,.7) 28%,rgba(7,13,24,.12) 62%,rgba(7,13,24,0) 100%),
    linear-gradient(180deg,rgba(7,13,24,.6) 0%,rgba(7,13,24,0) 24%,rgba(7,13,24,0) 52%,rgba(7,13,24,.9) 100%)}
  /* Hauteur minimale de 800px et grand dégagement sous l'en-tête : le bloc de texte ne colle plus au menu,
     même sur un écran de portable peu haut. */
  .rf .hero-home .hero-inner{min-height:max(800px,100svh);justify-content:flex-end;padding-top:220px;padding-bottom:5.5rem}
  .rf .hero-home h1{font-size:clamp(2.1rem,4.1vw,3.7rem);font-weight:800;max-width:17ch;line-height:1.04;letter-spacing:-.022em;margin-top:1.1rem}
  .rf .hero-home .hero-copy{max-width:640px}
  .rf .hero-home p.sub{font-size:1.06rem;max-width:44ch;margin-top:1.4rem}
  .rf .hero-home .hero-inner::after{content:"";position:absolute;left:50%;bottom:1.4rem;width:1px;height:50px;background:linear-gradient(180deg,var(--brand-light),transparent);animation:rfCue 2.6s var(--ease) 2 1.8s}
}
@media (min-width:1280px){
  .rf .hero-awards{position:absolute;right:0;bottom:5.5rem;align-items:flex-end;margin:0}
}
.rf .hero-award{background:rgba(7,13,24,.5);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}

/* ---------- Bandeau des 3 marques : colonnes séparées par des filets ---------- */
/* Nouvelle proposition : les trois marques sont présentées en vitrine centrée (logo sur plaque blanche,
   texte dessous, filets verticaux qui s'estompent), puis les preuves forment un unique cartouche
   « fiche technique » aux chiffres centrés. Plus de grille de tuiles ni de bandeau collé en 5 colonnes. */
@media (min-width:981px){
  .rf .brand-rail{margin-top:0;padding:3.6rem 0 1rem;background:linear-gradient(180deg,#070D18 0%,var(--bg-alt) 100%);border-top:0}
  .rf .rail-grid{gap:0}
  .rf .brand-tile{position:relative;flex-direction:column;align-items:center;text-align:center;gap:1.1rem;background:transparent;border:0;border-radius:0;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;padding:.4rem 2rem 1rem}
  .rf .brand-tile+.brand-tile::before{content:"";position:absolute;left:0;top:8%;bottom:8%;width:1px;background:linear-gradient(180deg,transparent,rgba(255,255,255,.16),transparent)}
  .rf .brand-tile:hover,.rf .brand-tile:focus-visible{transform:none;border-color:transparent}
  .rf .brand-tile .plate{width:min(260px,100%);height:92px;padding:12px 18px;border-radius:16px;box-shadow:0 18px 40px -18px rgba(0,0,0,.7);transition:transform .7s var(--ease),box-shadow .7s var(--ease)}
  .rf .brand-tile .plate img{max-height:64px}
  .rf .brand-tile:hover .plate,.rf .brand-tile:focus-visible .plate{transform:translateY(-4px);box-shadow:0 26px 48px -18px rgba(0,0,0,.8),0 0 0 1px rgba(62,134,196,.5)}
  .rf .brand-tile .txt{font-size:.9rem}
  .rf .brand-tile .txt b{font-size:1.02rem;margin-bottom:.25rem}
}

/* ---------- Preuves : cartouche unique aux chiffres centrés ---------- */
.rf .hero-stats{background:var(--bg-alt);border:0;padding:1.6rem 0 4rem}
.rf .stats-grid{width:calc(100% - 44px);max-width:calc(var(--maxw) - 44px);padding-inline:0;background:linear-gradient(180deg,rgba(255,255,255,.045),rgba(255,255,255,.015));border:1px solid rgba(255,255,255,.1);border-radius:22px;box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 30px 60px -34px rgba(0,0,0,.7);overflow:hidden}
.rf .stats-grid .proof-item,.rf .stats-grid .proof-item:first-child{padding:1.9rem 1.2rem;align-items:center;text-align:center;border-left-color:rgba(255,255,255,.08)}
.rf .stats-grid .proof-item:first-child{border-left:0}
.rf .proof-item .k{justify-content:center;font-size:clamp(1.4rem,2.05vw,1.85rem);letter-spacing:-.02em}
@media (min-width:981px){.rf .proof-item .k:not(.k-sm){white-space:nowrap}}
.rf .proof-item .k.k-sm{font-size:1.08rem;line-height:1.25;max-width:15ch}
.rf .proof-item .l{margin-top:.45rem;line-height:1.5}
@media (max-width:980px){.rf .hero-stats{padding:1rem 0 2.6rem}}
@media (max-width:640px){.rf .proof-item .k{font-size:1.5rem}.rf .stats-grid .proof-item,.rf .stats-grid .proof-item:first-child{padding:1.3rem .9rem}}

/* ---------- Services : grille éditoriale numérotée ---------- */
.rf .svc-grid{counter-reset:svc;gap:18px}
.rf .svc-card{counter-increment:svc;padding:2.1rem 1.9rem 1.9rem;display:flex;flex-direction:column;border-radius:18px;background-color:var(--surface);transition:transform .7s var(--ease),border-color .5s ease,background-color .5s ease}
.rf .svc-card::before{content:counter(svc,decimal-leading-zero);position:absolute;top:1.5rem;right:1.7rem;font-family:var(--font-mono);font-size:.72rem;letter-spacing:.14em;color:rgba(255,255,255,.28);transition:color .4s ease}
.rf .svc-card:hover::before{color:var(--brand-light)}
.rf .svc-card .tag{align-self:flex-start;margin-top:auto}
.rf .svc-card p{margin-bottom:1rem}
.rf .svc-card:hover{background-color:#16233b;background-image:radial-gradient(420px circle at var(--mx,50%) var(--my,0%),rgba(62,134,196,.14),transparent 62%)}
.rf .svc-card::after{height:2px}
/* 6 cartes de même taille : 3 colonnes (PC), 2 (tablette), 1 (mobile) — repris de styles.css */

/* ---------- Engagements ---------- */
.rf .commit{background:linear-gradient(180deg,#0B2233,#091623)}
.rf .commit-item{padding-top:.9rem;border-top:1px solid rgba(255,255,255,.1)}
.rf .commit-list{gap:22px 30px}

/* ---------- Visite vidéo ---------- */
.rf #visite-video .video-card{border-radius:20px;transition:transform .8s var(--ease)}
.rf #visite-video .video-block:hover .video-card{transform:translateY(-4px)}

/* ---------- Toit ouvrant : le texte chevauche l'image ---------- */
@media (min-width:981px){
  .rf .dgs-grid{grid-template-columns:1.15fr 1fr}
  .rf .dgs-media{min-height:620px;overflow:hidden;border-radius:22px}
  .rf .dgs-media img{border-radius:22px;transition:transform 1.4s var(--ease)}
  .rf .dgs-grid:hover .dgs-media img{transform:scale(1.03)}
  .rf .dgs-body{position:relative;z-index:2;margin-left:-110px;padding:3.2rem 3rem;background:rgba(10,18,32,.9);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid rgba(255,255,255,.09);border-radius:22px;box-shadow:0 40px 80px -30px rgba(0,0,0,.75)}
}

/* ---------- Avis : carrousel à aimantation sur mobile/tablette ---------- */
.rf .rev-grid{column-gap:22px}
.rf .rev-card{border-radius:18px;padding:1.9rem}
@media (max-width:980px){
  .rf .rev-grid{columns:auto;display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;margin-inline:-22px;padding-inline:22px;padding-bottom:.6rem;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .rf .rev-grid::-webkit-scrollbar{display:none}
  .rf .rev-card{flex:0 0 min(84%,380px);margin:0;scroll-snap-align:start}
}

/* ---------- Distinction & certifications ---------- */
.rf .award-badge{transition:transform 1s var(--ease)}
.rf .award-inner:hover .award-badge{transform:translateY(-6px) rotate(-1.5deg)}
.rf .audit-card{border-radius:20px;transition:transform .7s var(--ease),border-color .5s ease}
.rf .audit-card:hover{transform:translateY(-4px);border-color:rgba(62,134,196,.4)}

/* ---------- FAQ : titre fixe à gauche, questions numérotées à droite ---------- */
.rf .faq-grid{counter-reset:faq}
.rf .faq-item{counter-increment:faq}
.rf .faq-item summary{justify-content:flex-start}
.rf .faq-item summary::before{content:counter(faq,decimal-leading-zero);font-family:var(--font-mono);font-size:.72rem;letter-spacing:.12em;color:var(--muted);margin-right:1.3rem;flex:0 0 auto;transition:color .3s ease}
.rf .faq-item[open] summary::before,.rf .faq-item summary:hover::before{color:var(--brand-light)}
.rf .faq-item summary .ico{margin-left:auto}
.rf .faq-item .ans{padding-left:calc(1.3rem + 1.6em)}
@media (min-width:981px){
  .rf .faq>.wrap{display:grid;grid-template-columns:5fr 7fr;gap:clamp(2rem,6vw,5.5rem);align-items:start}
  .rf .faq .block-head{position:sticky;top:calc(var(--hdr-h,80px) + 30px);text-align:left!important;margin:0!important}
  .rf .faq .block-head .eyebrow{justify-content:flex-start!important}
  .rf .faq-grid{max-width:none;margin:0}
}

/* ---------- Contact ---------- */
.rf .contact{position:relative;overflow:hidden}
.rf .contact::before{content:"";position:absolute;left:-15%;bottom:-45%;width:720px;height:720px;border-radius:50%;background:radial-gradient(circle,rgba(27,63,114,.22),transparent 68%);pointer-events:none}
.rf .contact .wrap{position:relative}
.rf .contact h2{font-size:clamp(2.1rem,4.4vw,3.3rem)}
.rf .info-card{border-radius:20px}

/* ---------- Boutons : effet magnétique (piloté par JS, pointeur fin) ---------- */
.rf .btn.is-mag{transition:transform .25s var(--ease-out),background .3s ease,border-color .3s ease,box-shadow .35s var(--ease),color .3s ease}

@media (prefers-reduced-motion:reduce){
  .rf .reveal,.rf .reveal.stagger{opacity:1;transform:none;transition:none}
  .rf .hero-copy>*,.rf .hero-copy>h1,.rf .stagger.in>*{animation:none}
  .rf .hero-home .hero-inner::after{animation:none;opacity:0}
  .rf .hero-home .hero-media{transform:none}
  .rf header{transition:none}
  .rf header.hdr-hide{transform:none!important}
}

/* =========================================================
   PAGES INTERNES (atelier, certifications, services, blog, articles…)
   Même langage que l'accueil : air, mouvement lent, cartes uniformes.
   ========================================================= */
@view-transition{navigation:auto}
::view-transition-old(root),::view-transition-new(root){animation-duration:.32s;animation-timing-function:cubic-bezier(.22,.61,.36,1)}
header{view-transition-name:site-header}
::view-transition-group(site-header){animation-duration:0s}

/* Hero « hero-page » (atelier, DGS, certifications, visite, accès) : panneau image à droite conservé (images portrait) */
@media (min-width:981px){
  .rf .hero-page .hero-media{top:-60px;transform:translate3d(0,var(--py,0px),0);will-change:transform}
  .rf .hero-page .hero-inner{min-height:max(580px,70svh);padding-top:190px;padding-bottom:4rem;justify-content:flex-end}
  .rf .hero-page h1{font-size:clamp(1.9rem,3.4vw,3.1rem);font-weight:800;line-height:1.06;letter-spacing:-.02em}
  .rf .hero-page .hero-copy{max-width:640px}
}
.rf .hero-page .ph-lead{max-width:52ch}
.rf .hero-page .crumbs{margin-bottom:1.3rem}

/* Hero « page-hero » (services, blog, articles, légales) */
.rf .page-hero .ph-bg{top:-60px;bottom:0;transform:translate3d(0,var(--py,0px),0);will-change:transform}
.rf .page-hero .ph-inner{padding-top:clamp(3.4rem,8vw,6.2rem);padding-bottom:clamp(3.4rem,8vw,6rem);animation:none}
.rf .page-hero .ph-inner>*{animation:rfUp .9s var(--ease-out) backwards}
.rf .page-hero .crumbs{animation-delay:.1s}
.rf .page-hero h1{animation:rfLine 1.1s var(--ease-out) backwards .25s;letter-spacing:-.02em;font-weight:800}
.rf .page-hero .ph-lead{animation-delay:.5s;line-height:1.65}
.rf .page-hero .byline{animation-delay:.65s}
@media (min-width:981px){.rf .page-hero{padding-top:92px}}
@media (max-width:980px){.rf .page-hero .ph-bg{transform:none;top:0}}

/* Cartes des pages internes : même finition que les services */
.rf .col-card,.rf .post-card,.rf .case-card,.rf .gallery figure,.rf .brand-card,.rf .real-item{border-radius:18px}
.rf .col-card,.rf .case-card,.rf .post-card{transition:transform .7s var(--ease),border-color .5s ease,background-color .5s ease,box-shadow .5s ease}
.rf .col-card:hover,.rf .case-card:hover{transform:translateY(-4px);border-color:rgba(62,134,196,.35)}
.rf .col-card:hover,.rf .case-card:hover,.rf .post-card:hover{background-image:radial-gradient(420px circle at var(--mx,50%) var(--my,0%),rgba(62,134,196,.13),transparent 62%)}
.rf .post-card:hover{transform:translateY(-5px)}
.rf .post-card img,.rf .case-card img{transition:transform 1.2s var(--ease)}
.rf .post-card:hover img,.rf .case-card:hover img{transform:scale(1.04)}
.rf .post-card,.rf .case-card{isolation:isolate}
.rf .post-card .pc-link{transition:letter-spacing .4s var(--ease),color .3s ease}
.rf .post-card:hover .pc-link{letter-spacing:.14em;color:#fff}
.rf .post-grid,.rf .cols3,.rf .case-grid{gap:20px}
.rf .gallery{gap:18px}
.rf .gallery img{transition:transform 1.2s var(--ease)}

/* Bandeau d'appel à l'action */
.rf .cta-band{background:linear-gradient(180deg,#0B2233,#091623)}
.rf .cta-band .wrap{padding-block:clamp(2.8rem,6vw,4.2rem)}
.rf .cta-band h2{font-size:clamp(1.5rem,3vw,2.2rem);letter-spacing:-.022em}

/* Texte courant : lecture plus confortable */
.rf .prose{line-height:1.78}
.rf .prose h2{letter-spacing:-.025em;margin-top:2.8rem}
.rf .article-illu{border-radius:20px;box-shadow:0 30px 60px -34px rgba(0,0,0,.75)}
.rf .seealso{padding-top:1.8rem}
.rf .seealso a{transition:color .25s ease,letter-spacing .35s var(--ease)}
.rf .seealso a:hover{text-decoration:none;color:#fff}

/* Barre de progression de lecture (articles de blog, injectée par JS) */
.rf-progress{position:fixed;left:0;top:0;height:2px;width:100%;z-index:80;background:linear-gradient(90deg,var(--brand),var(--brand-light));transform:scaleX(0);transform-origin:left;pointer-events:none}
@media (prefers-reduced-motion:reduce){
  .rf .page-hero .ph-inner>*,.rf .page-hero h1{animation:none}
  .rf .hero-page .hero-media,.rf .page-hero .ph-bg{transform:none}
  .rf-progress{display:none}
}

/* 08/11/2026 (soir) — Audit n°31 : surtitre, « toutes marques » et fil d'Ariane plus lisibles sur la photo */
.rf .hero-home .eyebrow{color:#BFE0FF;text-shadow:0 1px 8px rgba(4,10,18,.85)}
.rf .page-hero .crumbs,.rf .hero-page .crumbs{color:#B8C4D4}
/* Audit n°41 : carrousel des avis atteignable au clavier */
.rf .rev-grid:focus-visible{outline-offset:-2px}
