/* 
Theme Name: Hello Elementor Child
Theme URI: https://github.com/elementor/hello-theme-child/
Description: Hello Elementor Child is a child theme of Hello Elementor, created by Elementor team
Author: Elementor Team
Author URI: https://elementor.com/
Template: hello-elementor
Version: 2.0.1
Text Domain: hello-elementor-child
License: GNU General Public License v3 or later.
License URI: https://www.gnu.org/licenses/gpl-3.0.html
Tags: flexible-header, custom-colors, custom-menu, custom-logo, editor-style, featured-images, rtl-language-support, threaded-comments, translation-ready
*/

body {
  border: 1px solid #323232;
  box-sizing: border-box;
}

html.lenis,
html.lenis body {
  height: auto;
}
.lenis.lenis-smooth {
  scroll-behavior: auto !important;
}
.lenis.lenis-smooth [data-lenis-prevent] {
  overscroll-behavior: contain;
}
.lenis.lenis-stopped {
  overflow: hidden;
}

/*-----------------------------------
SCROLLBAR
-----------------------------------*/
/* Scrollbar général */
::-webkit-scrollbar {
  width: 15px;
  background: #232323; 
}

/* Le rail (background du scroll) */
::-webkit-scrollbar-track {
  background: #232323;
}

/* Le "thumb" (partie mobile) */
::-webkit-scrollbar-thumb {
  background: #FFFBEF;
  border: 2px solid #323232;
  min-height: 24px;
  transition: background 0.3s;
  box-shadow: 0 1px 2px rgba(0,0,0,0.04);
}

/* Survol : thumb plus foncé */
::-webkit-scrollbar-thumb:hover {
  background: #DDD9C3;  
}

/* Firefox (scrollbar moderne, pas tous navigateurs) */
html {
  scrollbar-width: thin;
  scrollbar-color: #FFFBEF #232323;
}


/*-----------------------------------
HOLO
-----------------------------------*/

.holo .elementor-button-link,
.holo .elementor-icon {
  position: relative;
  z-index: 1;
  border: 2px solid #323232 !important;
  border-radius: 999px !important;

  overflow: visible;
  transition: border-color .3s;
}


/* Bordure holo 2px : "anneau" par double overlay */
.holo .elementor-button-link::before,
.holo .elementor-icon::before {
  content: "";
  position: absolute;
  inset: -2px; /* +2px autour = épaisseur du border */
  border-radius: inherit;
  z-index: 2;
  pointer-events: none;
  opacity: 0;
  background: linear-gradient(90deg, #C2F3F0 0%, #F8BAD1 40%, #D1C0F4 65%, #9EB1F3 80%, #C2F3F0 100%);
  background-size: 400% 400%;
  animation: AnimateBorder 3s linear infinite;
  transition: opacity 0.3s;
}

.holo .elementor-button-link::after,
.holo .elementor-icon::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  z-index: 3;
  pointer-events: none;
  opacity: 0;
  background: #000; /* la couleur du fond autour du bouton, adapte si besoin ! */
  transition: opacity 0.3s;
}

.holo .elementor-button-link:hover,
.holo:hover .elementor-icon {
  border-color: transparent !important;
}

.holo .elementor-button-link:hover::before,
.holo:hover .elementor-icon::before {
  opacity: 1;
}
.holo .elementor-button-link:hover::after,
.holo:hover .elementor-icon::after {
  opacity: 1;
}

/* Pour que le contenu reste au-dessus de l’anneau */
.holo .elementor-button-content-wrapper,
.holo .elementor-button-text {
  position: relative;
  z-index: 4;
  background: transparent !important;
  border-radius: inherit;
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100%;
}

.holo svg {
  fill: #323232;
  transition: fill 0.3s, transform 0.4s cubic-bezier(.4,2,.4,1);
}
.holo .elementor-button-link:hover svg,
.holo:hover .elementor-icon svg {
  fill: #C2F3F0;
  transform: scale(1.10);
	    z-index: 10;
}

/* Gradient animation */
@keyframes AnimateBorder {
  0% {background-position: 0% 50%;}
  50% {background-position: 100% 50%;}
  100% {background-position: 0% 50%;}
}

/* Applique un holo à l’intérieur de l’icon SVG */
.holo-icon .elementor-icon svg path {
  fill: transparent !important;
  /* Applique un gradient en fond et clip sur le shape */
  background: linear-gradient(90deg, #C2F3F0, #F8BAD1, #D1C0F4, #9EB1F3, #C2F3F0);
  background-size: 200% 200%;
  background-position: 0% 50%;
  -webkit-background-clip: text;
  background-clip: text;
  /* Pour Safari : */
  -webkit-text-fill-color: transparent;
  transition: background-position 1s cubic-bezier(.53,.07,.1,.92);
}

.holo-icon .elementor-icon:hover svg path {
  background-position: 100% 50%;
  transition: background-position 1s cubic-bezier(.53,.07,.1,.92);
  /* Option : scale up */
  transform: scale(1.08);
}

/* Holo underline texte */
/* ---- HOLO UNDERLINE ADAPTÉ ELEMENTOR ---- */

/* Applique le style sur le a interne */
.holo-underline-btn--fill .elementor-button {
  position: relative;
  display: inline-block;
  padding-bottom: 8px !important;
  text-decoration: none;
  background: none !important;
  border: none !important;
  box-shadow: none !important;
}

/* Texte */
.holo-underline-btn--fill .elementor-button-text {
  font-size: 1rem;
  font-weight: bold;
  color: #FFFBEF;
  letter-spacing: 0.04em;
  position: relative;
  z-index: 2;
}

/* Barre grise sous le texte */
.holo-underline-btn--fill .elementor-button::after {
  content: '';
  display: block;
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 2px;
  width: 100%;
  background: #323232;
  z-index: 1;
  border-radius: 2px;
  pointer-events: none;
}

/* Barre HOLO animée */
.holo-underline-btn--fill .elementor-button::before {
  content: '';
  display: block;
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 2px;
  width: 0%;
  background: linear-gradient(90deg, #C2F3F0 0%, #F8BAD1 40%, #D1C0F4 65%, #9EB1F3 80%, #C2F3F0 100%);
  background-size: 300% 100%;
  background-position: 100% 50%;
  border-radius: 2px;
  z-index: 2;
  pointer-events: none;
  transition:
    width 0.5s cubic-bezier(.76,0,.24,1),
    background-position 1.3s linear;
}

/* Hover : la barre HOLO se remplit et s’anime */
.holo-underline-btn--fill .elementor-button:hover::before,
.holo-underline-btn--fill .elementor-button:focus::before {
  width: 100%;
  background-position: 0% 50%;
  animation: holo-bar-anim 2.2s linear infinite;
}

/* Animation gradient holo */
@keyframes holo-bar-anim {
  0%   { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}



/*-----------------------------------
 MARQUEE
-----------------------------------*/

.marquee {
  display: flex;
  overflow: hidden;
  user-select: none;
  gap: 1rem;
  padding-top: 1.5rem;
  padding-bottom: 1.5rem;
  /* No fixed height */
}

.marquee__group {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2rem;
  min-width: 100%;
  animation: scroll 45s linear infinite;
  color: #323232;
  font-size: 2rem;
}

.marquee__group span {
  font-size: 6rem;
  font-family: "CitizenGrotesk-Poster", Sans-serif;   
  color: var(--e-global-color-primary);
  white-space: nowrap;
  line-height: 1.05;
  display: inline-block;
  padding: 0 0.2em;
}

@media only screen and (max-width: 1024px) {
  .marquee__group span {
    font-size: 5vh;
  }
  .marquee {
    padding-top: 0.7rem;
    padding-bottom: 0.7rem;
  }
}

@keyframes scroll {
  from {
    transform: translateX(0);
  }
  to {
    transform: translateX(calc(-100% - 1rem));
  }
}

/*-----------------------------------
 REVEAL
-----------------------------------*/
/* Effet Reveal Classique Premium */
.reveal {
  opacity: 0;
  transform: translateY(40px) scale(0.96);
  transition:
    opacity 0.6s cubic-bezier(.65,.05,.36,1),
    transform 0.6s cubic-bezier(.65,.05,.36,1);
  will-change: opacity, transform;
}
.reveal.active {
  opacity: 1 !important;
  transform: translateY(0) scale(1) !important;
}

/* Animation texte mot à mot (Splitting.js, sans blur) */
.scroll-reveal-text .word {
  display: inline-block;
  opacity: 0;
  visibility: hidden;
  transform: translateY(22px) scale(0.98);
  transition:
    opacity 0.38s cubic-bezier(.65,.05,.36,1),
    transform 0.54s cubic-bezier(.65,.05,.36,1);
  transition-delay: calc(var(--word-index) * 70ms);
	margin-right: 0.08em;
}
.scroll-reveal-text.splitted.visible .word {
  opacity: 1;
  visibility: visible;
  transform: translateY(0) scale(1);
}

/* AFTER REVEAL BUTTON */
.after-reveal {
  opacity: 0;
  transform: translateY(14px) scale(0.97);
  transition:
    opacity 0.5s cubic-bezier(.53,.07,.1,.92),
    transform 0.48s cubic-bezier(.65,.05,.36,1);
  pointer-events: none;
  will-change: opacity, transform;
}
.after-reveal.visible {
  opacity: 1;
  transform: translateY(0) scale(1);
  pointer-events: auto;
}

/* Délai classes (optionnelles) */
.delay-1 { transition-delay: 0.10s !important; }
.delay-2 { transition-delay: 0.18s !important; }
.delay-3 { transition-delay: 0.26s !important; }
.delay-4 { transition-delay: 0.34s !important; }
.delay-5 { transition-delay: 0.42s !important; }
.delay-6 { transition-delay: 0.50s !important; }

/* Masque les reveals hors du slick courant */
.slick-slide:not(.slick-current) .reveal.active {
  opacity: 0 !important;
  transform: translateY(40px) scale(0.96) !important;
}



/* Elementor éditeur */
body.elementor-editor-active .reveal {
  opacity: 1 !important;
  transform: none !important;
  animation: none !important;
  transition: none !important;
  pointer-events: auto !important;
}

/* ========== STRUCTURE SPLIT TABS (DROITE) ========== */
.split-panel__tab {
  cursor: pointer;
  transition: color 0.3s;
  position: relative;
  z-index: 2;
  opacity: 1;
  display: block;
}
.split-panel__tab.is-active {
  display: none !important;
}

.split-tab-content {
  opacity: 0;
  pointer-events: none;
  display: none;
  transition: opacity 0.3s, transform 0.3s;
  transform: translateY(30px);
}
.split-tab-content.is-active {
  opacity: 1;
  pointer-events: auto;
  display: block;
  transform: translateY(0);
}
.split-tab-content.is-fading-out {
  opacity: 0;
  pointer-events: none;
  /* display reste block jusqu'à la fin de la transition JS */
}


.service-children-pills {
  --service-color: #272727;
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-start;
  align-items: center;
  gap: 8px 10px;
  margin: 12px 0 0;
  max-width: 100%;
  min-width: 0;
  box-sizing: border-box;
}

.service-children-pill,
.service-children-pill:link,
.service-children-pill:visited,
.service-children-pill:hover,
.service-children-pill:focus,
.service-children-pill:active {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--service-color);
  color: #121211 !important;
  text-decoration: none !important;
  border-radius: 22px;
  padding: 8px 22px;
  margin: 0;
  white-space: nowrap;
  word-break: normal;
  hyphens: none;
  box-sizing: border-box;
  line-height: 1;
  font-size: 0.8rem;
  font-weight: 600;
  letter-spacing: 0;
  text-transform: none;
  box-shadow: none;
  transition: background 0.2s ease, color 0.2s ease, opacity 0.2s ease;
}

.service-children-pill:hover,
.service-children-pill:focus {
  opacity: 0.9;
}

/* ===== BLOC "+X" POUR LES TAGS SUPPLÉMENTAIRES ===== */
.service-tags .service-tag-more {
  background: #272727;
  color: var(--service-color, #FFFBEF);
  display: flex;
  align-items: center;
  border-radius: 22px;
  padding: 8px 22px;
  margin: 0;
  white-space: normal;
  word-break: break-word;
  hyphens: none;
  transition: background 0.2s, color 0.2s;
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
}

/* ===== SERVICES ASSOCIES / BADGES RECTANGULAIRES ===== */
.project-services {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 14px;
  margin: 18px 0 22px;
  max-width: 100%;
}

.project-services .service-tag,
.project-services .service-tag:link,
.project-services .service-tag:visited,
.project-services .service-tag:hover,
.project-services .service-tag:focus,
.project-services .service-tag:active {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 8px 12px;
  background: var(--service-color, #444);
  color: #121211 !important;
  text-decoration: none !important;
  border-radius: 0;
  line-height: 1;
  font-size: 13px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0;
  box-sizing: border-box;
  transition: opacity 0.2s ease, transform 0.2s ease;
}

.project-services .service-tag:hover,
.project-services .service-tag:focus {
  opacity: 0.92;
  transform: translateY(-1px);
}

.project-services .service-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 0;
}

.project-services .service-icon img {
  width: 13px;
  height: 13px;
  object-fit: contain;
  display: block;
}

.project-services .service-label {
  display: inline-block;
  line-height: 1;
}
