/* ============================================================
   Simohweb - CSS Animations Premium v2.0
   ============================================================ */

/* Cursor typing */
.sw-cursor {
  display: inline-block;
  color: var(--evo-orange);
  animation: sw-blink 0.8s step-end infinite;
  font-weight: 300;
  margin-left: 2px;
}
@keyframes sw-blink { 0%,100% { opacity:1 } 50% { opacity:0 } }

/* ---- Scroll Reveal ---- */
.sw-reveal-init {
  opacity: 0;
  transform: translateY(40px) scale(0.97);
  transition: opacity 0.7s cubic-bezier(.4,0,.2,1),
              transform 0.7s cubic-bezier(.4,0,.2,1);
}
.sw-revealed {
  opacity: 1 !important;
  transform: none !important;
}

/* ---- Header scroll ---- */
.evo-header {
  transition: transform 0.35s ease, background 0.3s ease, box-shadow 0.3s ease;
}
.evo-header--scrolled {
  background: rgba(6,27,46,0.98) !important;
  box-shadow: 0 4px 30px rgba(0,0,0,0.3);
}
.evo-header--hidden {
  transform: translateY(-100%);
}

/* ---- Hero entrance ---- */
.evo-hero__badge   { animation: sw-fadedown 0.7s ease both; }
.evo-hero__title   { animation: sw-fadeup 0.8s ease 0.15s both; }
.evo-hero__lead    { animation: sw-fadeup 0.8s ease 0.3s both; }
.evo-hero__cta     { animation: sw-fadeup 0.8s ease 0.45s both; }
.evo-hero__visual  { animation: sw-fadein 1s ease 0.5s both; }
.evo-hero-card     { animation: sw-popin 0.6s cubic-bezier(.4,0,.2,1) both; }
.evo-hero-card:nth-child(1) { animation-delay: 0.7s; }
.evo-hero-card:nth-child(2) { animation-delay: 0.9s; }
.evo-hero-card:nth-child(3) { animation-delay: 1.1s; }

@keyframes sw-fadedown {
  from { opacity:0; transform:translateY(-20px); }
  to   { opacity:1; transform:translateY(0); }
}
@keyframes sw-fadeup {
  from { opacity:0; transform:translateY(30px); }
  to   { opacity:1; transform:translateY(0); }
}
@keyframes sw-fadein {
  from { opacity:0; } to { opacity:1; }
}
@keyframes sw-popin {
  from { opacity:0; transform:scale(0.8) translateY(20px); }
  to   { opacity:1; transform:scale(1) translateY(0); }
}

/* ---- Floating animation hero visual ---- */
.evo-hero__visual svg,
.evo-hero__visual img {
  animation: sw-float 5s ease-in-out infinite;
}
@keyframes sw-float {
  0%,100% { transform: translateY(0px); }
  50%      { transform: translateY(-14px); }
}

/* ---- Glow pulsant sur les boutons CTA ---- */
.evo-btn--primary {
  position: relative;
  overflow: hidden;
}
.evo-btn--primary::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: rgba(255,255,255,0.15);
  opacity: 0;
  transition: opacity 0.3s;
}
.evo-btn--primary:hover::after { opacity: 1; }

.evo-btn--primary::before {
  content: '';
  position: absolute;
  top: 50%; left: 50%;
  width: 0; height: 0;
  background: rgba(255,255,255,0.3);
  border-radius: 50%;
  transform: translate(-50%, -50%);
  transition: width 0.5s ease, height 0.5s ease, opacity 0.5s ease;
  opacity: 0;
}
.evo-btn--primary:active::before {
  width: 300px; height: 300px; opacity: 0;
}

/* ---- Shimmer sur les cartes service ---- */
.evo-service-card {
  position: relative;
  overflow: hidden;
}
.evo-service-card::after {
  content: '';
  position: absolute;
  top: -50%; left: -100%;
  width: 60%;
  height: 200%;
  background: linear-gradient(105deg, transparent 40%, rgba(255,255,255,0.06) 50%, transparent 60%);
  transition: left 0.6s ease;
}
.evo-service-card:hover::after { left: 150%; }

/* ---- Ligne animee sous les liens nav ---- */
.evo-nav__item {
  position: relative;
}
.evo-nav__item::after {
  content: '';
  position: absolute;
  bottom: -4px; left: 50%;
  width: 0;
  height: 2px;
  background: var(--evo-orange);
  border-radius: 2px;
  transition: width 0.3s ease, left 0.3s ease;
}
.evo-nav__item:hover::after,
.evo-nav__item.current-menu-item::after {
  width: 100%;
  left: 0;
}

/* ---- Compteurs gros chiffres ---- */
.evo-testi__score,
[data-countup] {
  font-variant-numeric: tabular-nums;
}

/* ---- Badge hero pulsation ---- */
.evo-hero__badge {
  position: relative;
}
.evo-hero__badge::before {
  content: '';
  position: absolute;
  inset: -2px;
  border-radius: inherit;
  border: 1px solid rgba(255,122,26,0.5);
  animation: sw-pulse-ring 2s ease infinite;
}
@keyframes sw-pulse-ring {
  0%   { opacity: 1; transform: scale(1); }
  100% { opacity: 0; transform: scale(1.15); }
}

/* ---- Particles ---- */
.evo-hero canvas {
  position: absolute !important;
  inset: 0 !important;
  pointer-events: none !important;
  z-index: 1 !important;
}
.evo-hero > * { position: relative; z-index: 2; }

/* ---- Temoignages apparition decalee ---- */
.evo-testi__card {
  transition: transform 0.4s cubic-bezier(.4,0,.2,1),
              box-shadow 0.4s ease;
}
.evo-testi__card:hover {
  transform: translateY(-8px) scale(1.01);
  box-shadow: 0 20px 60px rgba(6,27,46,0.2);
}

/* ---- Steps numerotes ---- */
.evo-step__num {
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.evo-step:hover .evo-step__num {
  transform: scale(1.15) rotate(5deg);
  box-shadow: 0 8px 30px rgba(255,122,26,0.5);
}

/* ---- CTA Band glow continu ---- */
.evo-ctaband {
  position: relative;
  overflow: hidden;
}
.evo-ctaband::before {
  content: '';
  position: absolute;
  top: -50%;
  left: -50%;
  width: 200%;
  height: 200%;
  background: radial-gradient(circle, rgba(255,255,255,0.06) 0%, transparent 60%);
  animation: sw-ctarotate 8s linear infinite;
}
@keyframes sw-ctarotate {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

/* ---- Footer entree ---- */
.evo-footer {
  position: relative;
}
.evo-footer__grid > * {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.6s ease, transform 0.6s ease;
}
.evo-footer.sw-revealed .evo-footer__grid > * {
  opacity: 1;
  transform: none;
}
.evo-footer__grid > *:nth-child(1) { transition-delay: 0s; }
.evo-footer__grid > *:nth-child(2) { transition-delay: 0.1s; }
.evo-footer__grid > *:nth-child(3) { transition-delay: 0.2s; }
.evo-footer__grid > *:nth-child(4) { transition-delay: 0.3s; }
.evo-footer__grid > *:nth-child(5) { transition-delay: 0.4s; }

/* ---- Zones map hover ---- */
.evo-znet__city {
  transition: transform 0.3s ease;
}
.evo-znet__city:hover { transform: scale(1.12); }
.evo-znet__hub-core {
  animation: sw-hubpulse 2.5s ease infinite;
}
@keyframes sw-hubpulse {
  0%,100% { transform: scale(1); opacity:1; }
  50%      { transform: scale(1.2); opacity:0.8; }
}

/* ---- Mobile: desactiver animations lourdes ---- */
@media (max-width: 768px) {
  .evo-hero canvas { display: none; }
  .sw-reveal-init  { opacity:1; transform:none; transition:none; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    transition-duration: 0.001ms !important;
  }
}
