/* Servolution — CSS effets visuels visibles */
.slv-fx-reveal {
  opacity: 0;
  transform: translateY(60px) scale(0.96);
  transition: opacity .85s cubic-bezier(.2,.7,.2,1), transform .85s cubic-bezier(.2,.7,.2,1);
  transition-delay: var(--slv-fx-delay, 0ms);
  will-change: opacity, transform;
}
.slv-fx-reveal.slv-fx-in {
  opacity: 1;
  transform: translateY(0) scale(1);
}

/* CTA glow + bounce hover */
.slv-fx-glow {
  position: relative;
  overflow: hidden;
  transition: transform .22s cubic-bezier(.2,.8,.2,1), box-shadow .22s, filter .22s !important;
}
.slv-fx-glow::after {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at center, rgba(255,255,255,0.5) 0%, transparent 65%);
  opacity: 0;
  transform: scale(0.4);
  transition: opacity .35s, transform .55s;
  pointer-events: none;
  border-radius: inherit;
}
.slv-fx-glow:hover {
  transform: translateY(-4px) scale(1.04) !important;
  box-shadow: 0 22px 50px rgba(214,90,31,0.5), 0 0 0 4px rgba(214,90,31,0.18) !important;
  filter: saturate(1.1);
}
.slv-fx-glow:hover::after {
  opacity: 1;
  transform: scale(1.5);
}
.slv-fx-glow:active { transform: translateY(-1px) scale(1.02) !important; }

/* Gradient text animé pour kickers */
.kicker, .slv-mosaic-v4 .kicker, .pq-hero .kicker {
  background: linear-gradient(90deg, #d65a1f 0%, #f59e3a 50%, #d65a1f 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  background-size: 200% auto;
  animation: slvFxKickerSlide 6s linear infinite;
}
@keyframes slvFxKickerSlide {
  0% { background-position: 0% center; }
  100% { background-position: 200% center; }
}

/* Marquee infinite scroll */
.slv-marquee {
  overflow: hidden;
  white-space: nowrap;
  position: relative;
  padding: 28px 0;
}
.slv-marquee::before, .slv-marquee::after {
  content: "";
  position: absolute;
  top: 0; bottom: 0; width: 80px;
  z-index: 2;
}
.slv-marquee::before { left: 0; background: linear-gradient(90deg, #fff 0%, transparent 100%); }
.slv-marquee::after { right: 0; background: linear-gradient(-90deg, #fff 0%, transparent 100%); }
.slv-marquee-inner {
  display: inline-flex;
  gap: 40px;
  animation: slvFxMarquee 32s linear infinite;
}
@keyframes slvFxMarquee {
  0% { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}

/* PULSE notification dots */
.slv-fx-pulse {
  position: relative;
}
.slv-fx-pulse::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: rgba(214,90,31,0.4);
  animation: slvFxPulse 2s ease-out infinite;
}
@keyframes slvFxPulse {
  0% { transform: scale(1); opacity: 1; }
  100% { transform: scale(1.4); opacity: 0; }
}

/* Hero photo Ken Burns subtle zoom */
.slv-hero-home::before,
.pq-hero::before,
.loc-hero::before,
.slv-pg-hero::before {
  animation: slvFxKenBurns 22s ease-in-out infinite alternate;
}
@keyframes slvFxKenBurns {
  0% { transform: scale(1) translateY(0); }
  100% { transform: scale(1.08) translateY(-3%); }
}

/* Number count-up has visual "tick" */
.m-divider .m-meta strong, .loc-stats .stat strong {
  display: inline-block;
  transition: transform .1s ease-out;
}

/* Respect prefers-reduced-motion */
@media (prefers-reduced-motion: reduce) {
  .slv-fx-reveal { opacity: 1; transform: none; transition: none; }
  .slv-fx-glow, .slv-fx-glow:hover { transform: none !important; transition: none !important; }
  .kicker { animation: none; -webkit-text-fill-color: initial; color: #d65a1f; }
  .slv-marquee-inner { animation: none; }
  .slv-hero-home::before, .pq-hero::before, .loc-hero::before, .slv-pg-hero::before { animation: none; }
}

/* Focus ring brand (remplace l'outline bleu navigateur) */
a.cta, .btn-primary, .cta-primary, a.slv-cta, .loc-cta a, .pq-cta a, .pq-cta-final a.cta, .art-cta a,
.slv-fx-glow, button, input[type=submit] {
  outline: none;
}
a.cta:focus-visible, .btn-primary:focus-visible, .cta-primary:focus-visible, a.slv-cta:focus-visible,
.loc-cta a:focus-visible, .pq-cta a:focus-visible, .pq-cta-final a.cta:focus-visible, .art-cta a:focus-visible,
.slv-fx-glow:focus-visible, button:focus-visible, input[type=submit]:focus-visible {
  outline: 3px solid rgba(214,90,31,0.5);
  outline-offset: 3px;
}
/* Fix le effect glow qui ajoutait un double-ring sur focus */
.slv-fx-glow:focus:not(:focus-visible) { outline: none; box-shadow: inherit; }
/* Surcharger les outlines bleus que les navigateurs ajoutent autour des CTA fortement stylés */
.slv-hero-home a, .pq-hero a, .ck-hero a, .loc-hero a {
  outline: none !important;
}
.slv-hero-home a:focus-visible, .pq-hero a:focus-visible, .ck-hero a:focus-visible, .loc-hero a:focus-visible {
  outline: 3px solid rgba(255,255,255,0.7) !important;
  outline-offset: 4px;
}
