/* Movemint — scroll animation layer */

/* ---- fixed navbar ---- */
.navbar-no-shadow {
  position: fixed !important;
  top: 0; left: 0; right: 0;
  z-index: 9998;
  width: 100%;
}
body { padding-top: 90px; }

/* ---- hide Webflow badge ---- */
.w-webflow-badge { display: none !important; }

/* ---- language switcher (FR | EN) ---- */
#mv-lang {
  display: flex; align-items: center; gap: 4px;
  font-size: 13px; font-weight: 600; font-family: Inter, sans-serif;
  margin-left: 12px;
}
#mv-lang button {
  border: none; background: none; cursor: pointer; padding: 4px 8px;
  border-radius: 4px; font-size: 13px; font-weight: 600;
  color: #6b7280; transition: all .2s;
}
#mv-lang button.mv-lang-active { background: #10b486; color: #fff; }
#mv-lang .mv-lang-sep { color: #d1d5db; }

/* ---- scroll progress bar ---- */
#mv-pb {
  position: fixed; top: 0; left: 0; height: 3px; width: 0%; z-index: 9999;
  background: linear-gradient(90deg, #10b486, #5b49e9);
  border-radius: 0 2px 2px 0; pointer-events: none;
}

/* ---- hero heading: keyframe (plays reliably on page load) ---- */
@keyframes mv-hero-fade-up {
  from { opacity: 0; transform: translateY(36px); }
  to   { opacity: 1; transform: none; }
}
.mv-hero-in {
  animation: mv-hero-fade-up .9s cubic-bezier(.34,1.25,.64,1) .15s both;
}

/* ---- "moving" gradient shimmer (.mv-shine = pre-baked variant, e.g. FR page,
       avoids the literal substring "moving" that scroll-fx.js would re-wrap) ---- */
.mv-moving, .mv-shine {
  display: inline-block;
  background: linear-gradient(90deg, #5b49e9 0%, #10b486 50%, #5b49e9 100%);
  background-size: 200% auto;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  animation: mv-shimmer 2.8s linear infinite;
}
@keyframes mv-shimmer {
  from { background-position: 0% center; }
  to   { background-position: -200% center; }
}

/* ---- below-fold IO animations ---- */
body .mv-hide {
  opacity: 0;
  transform: translateY(22px);
  transition:
    opacity   .65s cubic-bezier(.22,.61,.36,1) var(--mv-d,0s),
    transform .75s cubic-bezier(.34,1.4,.64,1) var(--mv-d,0s);
  will-change: opacity, transform;
}
body .mv-hide.mv-left  { transform: translateX(-30px); }
body .mv-hide.mv-right { transform: translateX(30px); }
body .mv-hide.mv-show  { opacity: 1; transform: none; }

/* ---- reduced motion ---- */
@media (prefers-reduced-motion: reduce) {
  .mv-hero-in { animation: none !important; }
  .mv-moving, .mv-shine { animation: none !important; background: none !important; -webkit-text-fill-color: inherit !important; }
  body .mv-hide { opacity: 1 !important; transform: none !important; transition: none !important; }
  img.image-4, img.image-6 { transform: none !important; }
  #mv-pb { display: none; }
}
