/* Traitement commun des CTA : surface sombre et volet rouge qui monte depuis le bas. */
:root {
  --spo-cta-ink: #11171a;
  --spo-cta-red: #d92f32;
}

.site-theme .btn-primary,
.site-theme .cta-button,
.site-theme button.cta,
.btn-primary,
.cta-button,
button.cta,
#formModal form button[type="submit"],
#contactModal form button[type="submit"],
.site-menu__contact,
.site-theme .mobile-sticky-cta {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  color: #fff !important;
  background: var(--spo-cta-ink) !important;
  background-image: none !important;
  border-color: rgba(255,255,255,.24) !important;
  box-shadow: 0 12px 28px rgba(13,20,22,.2) !important;
  transition: color .3s ease, border-color .3s ease, box-shadow .3s ease, transform .3s ease;
}

.site-theme .btn-primary::before,
.site-theme .cta-button::before,
.site-theme button.cta::before,
.btn-primary::before,
.cta-button::before,
button.cta::before,
#formModal form button[type="submit"]::before,
#contactModal form button[type="submit"]::before,
.site-menu__contact::before,
.site-theme .mobile-sticky-cta::before {
  position: absolute;
  z-index: -1;
  inset: 0;
  content: "";
  background: var(--spo-cta-red);
  transform: scaleY(0);
  transform-origin: bottom;
  transition: transform .42s cubic-bezier(.2,.75,.25,1);
}

.site-theme .btn-primary:hover,
.site-theme .btn-primary:focus-visible,
.site-theme .cta-button:hover,
.site-theme .cta-button:focus-visible,
.site-theme button.cta:hover,
.site-theme button.cta:focus-visible,
.btn-primary:hover,
.btn-primary:focus-visible,
.cta-button:hover,
.cta-button:focus-visible,
button.cta:hover,
button.cta:focus-visible,
#formModal form button[type="submit"]:hover,
#formModal form button[type="submit"]:focus-visible,
#contactModal form button[type="submit"]:hover,
#contactModal form button[type="submit"]:focus-visible,
.site-menu__contact:hover,
.site-menu__contact:focus-visible,
.site-theme .mobile-sticky-cta:hover,
.site-theme .mobile-sticky-cta:focus-visible {
  color: #fff !important;
  background: var(--spo-cta-ink) !important;
  background-image: none !important;
  border-color: var(--spo-cta-red) !important;
  box-shadow: 0 15px 34px rgba(13,20,22,.28) !important;
  transform: translateY(-1px);
  outline-offset: 3px;
}

.site-theme .btn-primary:hover::before,
.site-theme .btn-primary:focus-visible::before,
.site-theme .cta-button:hover::before,
.site-theme .cta-button:focus-visible::before,
.site-theme button.cta:hover::before,
.site-theme button.cta:focus-visible::before,
.btn-primary:hover::before,
.btn-primary:focus-visible::before,
.cta-button:hover::before,
.cta-button:focus-visible::before,
button.cta:hover::before,
button.cta:focus-visible::before,
#formModal form button[type="submit"]:hover::before,
#formModal form button[type="submit"]:focus-visible::before,
#contactModal form button[type="submit"]:hover::before,
#contactModal form button[type="submit"]:focus-visible::before,
.site-menu__contact:hover::before,
.site-menu__contact:focus-visible::before,
.site-theme .mobile-sticky-cta:hover::before,
.site-theme .mobile-sticky-cta:focus-visible::before {
  transform: scaleY(1);
}

.site-theme .mobile-sticky-cta > *,
.site-menu__contact > * { position: relative; z-index: 1; }
.site-theme .mobile-sticky-cta__label { color: #fff !important; }

/* Les CTA inline des cartes de la page d’accueil reprennent le volet rouge. */
.site-theme .mini-site-links .method-link,
.mini-site-links .method-link {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  background: var(--spo-cta-ink) !important;
  background-image: none !important;
  color: #fff !important;
  border-color: rgba(255,255,255,.24) !important;
}
.site-theme .mini-site-links .method-link::before,
.mini-site-links .method-link::before {
  position: absolute;
  z-index: -1;
  inset: 0;
  content: "";
  background: var(--spo-cta-red);
  transform: scaleY(0);
  transform-origin: bottom;
  transition: transform .42s cubic-bezier(.2,.75,.25,1);
}
.site-theme .mini-site-links .method-link {
  z-index: 0;
}
.site-theme .mini-site-links .method-link::before,
.mini-site-links .method-link::before {
  z-index: -1;
}
.site-theme .mini-site-links .method-card-link:hover .method-link,
.site-theme .mini-site-links .method-card-link:focus-visible .method-link,
.mini-site-links .method-card-link:hover .method-link,
.mini-site-links .method-card-link:focus-visible .method-link {
  background: var(--spo-cta-ink) !important;
  background-image: none !important;
  color: #fff !important;
  border-color: var(--spo-cta-red) !important;
}
.site-theme .mini-site-links .method-card-link:hover .method-link::before,
.site-theme .mini-site-links .method-card-link:focus-visible .method-link::before,
.mini-site-links .method-card-link:hover .method-link::before,
.mini-site-links .method-card-link:focus-visible .method-link::before {
  transform: scaleY(1);
}

/* Les animations déjà présentes sur le hero montent elles aussi depuis le bas. */
.hero-bottom-action::before,
.hero-service-link::before { transform-origin: bottom !important; }

@media (prefers-reduced-motion: reduce) {
  .site-theme .btn-primary,
  .site-theme .cta-button,
  .site-theme button.cta,
  .btn-primary,
  .cta-button,
  button.cta,
  #formModal form button[type="submit"],
  #contactModal form button[type="submit"],
  .site-menu__contact,
  .site-theme .mobile-sticky-cta,
  .site-theme .mini-site-links .method-link,
  .mini-site-links .method-link,
  .site-theme .btn-primary::before,
  .site-theme .cta-button::before,
  .site-theme button.cta::before,
  .btn-primary::before,
  .cta-button::before,
  button.cta::before,
  #formModal form button[type="submit"]::before,
  #contactModal form button[type="submit"]::before,
  .site-menu__contact::before,
  .site-theme .mobile-sticky-cta::before,
  .site-theme .mini-site-links .method-link::before,
  .mini-site-links .method-link::before {
    transition-duration: .01ms !important;
  }
}

/* Le carré animé reprend le bleu du symbole infini ; le CTA conserve son fond rouge. */
.hero-service-link:hover .hero-service-link__arrow,
.hero-service-link:focus-visible .hero-service-link__arrow {
  border-color: var(--spo-infinity-blue, #087fc4) !important;
  background: var(--spo-infinity-blue, #087fc4) !important;
  color: #fff !important;
}

/* CTA secondaires ciblés : même montée rouge, sans changer leur implantation. */
.site-theme .payment-cta-rise,
.payment-cta-rise,
.cta-red-rise,
.site-theme .footer-legal a,
.site-theme .footer-legal .footer-cookie-link,
.footer-legal a,
.footer-legal .footer-cookie-link,
.site-theme #back-to-top,
#back-to-top,
.site-theme #avis-google .trust-card:first-child .btn-secondary,
.site-theme #avis-google .trust-card:last-child .btn-secondary {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  transition: color .42s cubic-bezier(.2,.75,.25,1), border-color .42s ease,
    box-shadow .42s ease, transform .42s cubic-bezier(.2,.75,.25,1);
}

.site-theme .payment-cta-rise::before,
.payment-cta-rise::before,
.cta-red-rise::before,
.site-theme .footer-legal a::before,
.site-theme .footer-legal .footer-cookie-link::before,
.footer-legal a::before,
.footer-legal .footer-cookie-link::before,
.site-theme #back-to-top::before,
#back-to-top::before,
.site-theme #avis-google .trust-card:first-child .btn-secondary::before,
.site-theme #avis-google .trust-card:last-child .btn-secondary::before {
  position: absolute;
  z-index: -1;
  inset: 0;
  content: "";
  border-radius: inherit;
  background: var(--spo-cta-red);
  transform: scaleY(0);
  transform-origin: bottom;
  transition: transform .48s cubic-bezier(.2,.75,.25,1);
}

.site-theme .payment-cta-rise:hover,
.site-theme .payment-cta-rise:focus-visible,
.payment-cta-rise:hover,
.payment-cta-rise:focus-visible,
.cta-red-rise:hover,
.cta-red-rise:focus-visible,
.site-theme .footer-legal a:hover,
.site-theme .footer-legal a:focus-visible,
.site-theme .footer-legal .footer-cookie-link:hover,
.site-theme .footer-legal .footer-cookie-link:focus-visible,
.footer-legal a:hover,
.footer-legal a:focus-visible,
.footer-legal .footer-cookie-link:hover,
.footer-legal .footer-cookie-link:focus-visible,
.site-theme #back-to-top:hover,
.site-theme #back-to-top:focus-visible,
#back-to-top:hover,
#back-to-top:focus-visible,
.site-theme #avis-google .trust-card:first-child .btn-secondary:hover,
.site-theme #avis-google .trust-card:first-child .btn-secondary:focus-visible,
.site-theme #avis-google .trust-card:last-child .btn-secondary:hover,
.site-theme #avis-google .trust-card:last-child .btn-secondary:focus-visible {
  color: #fff !important;
  border-color: var(--spo-cta-red) !important;
  box-shadow: 0 12px 28px rgba(13,20,22,.2);
  transform: translateY(-1px);
  outline-offset: 3px;
}

.site-theme .payment-cta-rise:hover::before,
.site-theme .payment-cta-rise:focus-visible::before,
.payment-cta-rise:hover::before,
.payment-cta-rise:focus-visible::before,
.cta-red-rise:hover::before,
.cta-red-rise:focus-visible::before,
.site-theme .footer-legal a:hover::before,
.site-theme .footer-legal a:focus-visible::before,
.site-theme .footer-legal .footer-cookie-link:hover::before,
.site-theme .footer-legal .footer-cookie-link:focus-visible::before,
.footer-legal a:hover::before,
.footer-legal a:focus-visible::before,
.footer-legal .footer-cookie-link:hover::before,
.footer-legal .footer-cookie-link:focus-visible::before,
.site-theme #back-to-top:hover::before,
.site-theme #back-to-top:focus-visible::before,
#back-to-top:hover::before,
#back-to-top:focus-visible::before,
.site-theme #avis-google .trust-card:first-child .btn-secondary:hover::before,
.site-theme #avis-google .trust-card:first-child .btn-secondary:focus-visible::before,
.site-theme #avis-google .trust-card:last-child .btn-secondary:hover::before,
.site-theme #avis-google .trust-card:last-child .btn-secondary:focus-visible::before {
  transform: scaleY(1);
}

@media (prefers-reduced-motion: reduce) {
  .cta-red-rise,
  .cta-red-rise::before { transition-duration: .01ms !important; }
}

.site-theme #back-to-top,
#back-to-top { position: fixed !important; display: grid; z-index: 1200; }

@media (prefers-reduced-motion: reduce) {
  .payment-cta-rise,
  .payment-cta-rise::before,
  .footer-legal a,
  .footer-legal a::before,
  .footer-legal .footer-cookie-link,
  .footer-legal .footer-cookie-link::before,
  #back-to-top,
  #back-to-top::before,
  #avis-google .trust-card .btn-secondary,
  #avis-google .trust-card .btn-secondary::before {
    transition-duration: .01ms !important;
  }
}

/* Les liens juridiques gardent leur contraste au repos, puis passent au rouge au survol. */
.site-theme .footer-legal a,
.site-theme .footer-legal .footer-cookie-link,
.footer-legal a,
.footer-legal .footer-cookie-link { color: #fff; }

/* Le bouton de remontée garde sa forme ronde et reçoit le rouge par le bas. */
.site-theme #back-to-top::before,
#back-to-top::before { border-radius: 999px; }

/* Les trois carrés sous le hero reprennent le bleu des flèches latérales à l’activation. */
.hero-bottom-action:hover .hero-bottom-action__square,
.hero-bottom-action:focus-visible .hero-bottom-action__square,
.hero-bottom-action:active .hero-bottom-action__square {
  background-color: var(--spo-infinity-blue, #087fc4) !important;
  border-color: var(--spo-infinity-blue, #087fc4) !important;
  color: #fff;
}

/* Repère de marque discret dans l’espace du menu et flèches vectorielles plus nettes. */
.site-menu__mark {
  display: grid;
  place-items: center;
  margin: auto;
  min-height: 42px;
  flex: 0 0 42px;
}
.site-menu__mark img { display: block; width: 42px; height: 42px; object-fit: contain; opacity: .82; }
.site-menu__footer { margin-top: 0; padding-top: 0; }
.site-menu__arrow {
  display: grid;
  width: 30px;
  height: 30px;
  place-items: center;
  border: 1px solid rgba(217,47,50,.3);
  border-radius: 50%;
  color: var(--spo-cta-red, #d92f32);
  font-size: 0;
  transition: transform .3s cubic-bezier(.2,.75,.25,1), background-color .3s ease,
    border-color .3s ease, color .3s ease;
}
.site-menu__arrow svg { width: 17px; height: 17px; }
.site-menu__arrow path { fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.site-menu__links a:hover .site-menu__arrow,
.site-menu__links a:focus-visible .site-menu__arrow {
  border-color: var(--spo-cta-red, #d92f32);
  background: rgba(217,47,50,.1);
  color: var(--spo-cta-red, #d92f32);
}

@media (max-width: 720px) {
  .site-menu__mark { min-height: 34px; flex-basis: 34px; }
  .site-menu__mark img { width: 34px; height: 34px; }
  .site-menu__footer { gap: 14px; }
}

/* Harmonisation de l’ancienne section de méthode avec les couleurs de l’infini. */
.site-theme #method.section-contrast::before {
  background:
    radial-gradient(760px 460px at 8% 12%, rgba(8,127,196,.28), transparent 62%),
    radial-gradient(760px 460px at 92% 88%, rgba(57,167,124,.22), transparent 60%),
    linear-gradient(145deg, rgba(8,24,37,.98), rgba(15,31,40,.96)) !important;
}
.site-theme #method .method-title__part:nth-child(1) { color: #78cafa !important; }
.site-theme #method .method-title__part:nth-child(2) { color: #75d2a5 !important; }
.site-theme #method .method-title__part:nth-child(3) { color: #f0784b !important; }
.site-theme #method .method-title__part + .method-title__part::before {
  color: #d92f32;
  opacity: .95;
}
.site-theme #method .method-card {
  background: rgba(255,255,255,.085) !important;
  border-color: rgba(255,255,255,.17) !important;
  box-shadow: 0 18px 54px rgba(0,0,0,.22) !important;
}
.site-theme #method .method-card:hover,
.site-theme #method .method-card:focus-visible {
  background: rgba(255,255,255,.12) !important;
  border-color: rgba(8,127,196,.52) !important;
}
.site-theme #method .method-step {
  color: #fff !important;
  background: rgba(8,127,196,.2) !important;
  border-color: rgba(120,202,250,.38) !important;
}
.site-theme #method .method-card:nth-child(2) .method-step {
  background: rgba(57,167,124,.2) !important;
  border-color: rgba(117,210,165,.4) !important;
}
.site-theme #method .method-card:nth-child(3) .method-step {
  background: rgba(217,47,50,.2) !important;
  border-color: rgba(240,120,75,.42) !important;
}
.site-theme #method .method-link {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  color: #fff !important;
  background: #11171a !important;
  background-image: none !important;
  border-color: rgba(255,255,255,.28) !important;
  transition: color .42s cubic-bezier(.2,.75,.25,1), border-color .42s ease,
    box-shadow .42s ease, transform .42s cubic-bezier(.2,.75,.25,1);
}
.site-theme #method .method-link::before {
  position: absolute;
  z-index: -1;
  inset: 0;
  content: "";
  background: #d92f32;
  transform: scaleY(0);
  transform-origin: bottom;
  transition: transform .48s cubic-bezier(.2,.75,.25,1);
}
.site-theme #method .method-link:hover,
.site-theme #method .method-link:focus-visible,
.site-theme #method .method-card-link:hover .method-link,
.site-theme #method .method-card-link:focus-visible .method-link {
  color: #fff !important;
  background: #11171a !important;
  background-image: none !important;
  border-color: #d92f32 !important;
  box-shadow: 0 12px 28px rgba(13,20,22,.2) !important;
}
.site-theme #method .method-link:hover::before,
.site-theme #method .method-link:focus-visible::before,
.site-theme #method .method-card-link:hover .method-link::before,
.site-theme #method .method-card-link:focus-visible .method-link::before {
  transform: scaleY(1);
}
.site-theme #method .method-link,
.site-theme #method .method-link::before {
  transition-duration: .48s;
}
@media (prefers-reduced-motion: reduce) {
  .site-theme #method .method-link,
  .site-theme #method .method-link::before { transition-duration: .01ms !important; }
}

/* Badges Devis / Règlement / Données : trois repères, trois accents de la charte. */
.site-theme #confiance .trust-card:nth-child(1) .trust-icon {
  color: #087fc4;
  background: rgba(8,127,196,.12);
  border-color: rgba(8,127,196,.3);
}
.site-theme #confiance .trust-card:nth-child(2) .trust-icon {
  color: #278d63;
  background: rgba(57,167,124,.13);
  border-color: rgba(57,167,124,.32);
}
.site-theme #confiance .trust-card:nth-child(3) .trust-icon {
  color: #d92f32;
  background: rgba(217,47,50,.1);
  border-color: rgba(217,47,50,.28);
}

/* Les trois actions de la section Avis Google partagent le même survol montant. */
#avis-google .trust-grid--three .trust-card .cta-red-rise {
  position: relative;
  isolation: isolate;
  overflow: hidden;
}

/* Le CTA flottant reste ancré à l’écran sur mobile malgré son habillage partagé. */
@media (max-width: 900px) {
  .site-theme .mobile-sticky-cta {
    position: fixed !important;
    left: max(12px, env(safe-area-inset-left));
    right: max(12px, env(safe-area-inset-right));
    bottom: max(12px, env(safe-area-inset-bottom));
    z-index: 1100;
  }
}
