/**
 * Comm360 — Texte animé. Styles des fragments produits par le découpage.
 * Le moteur ajoute la classe « comm360-text » sur l'élément de texte.
 *
 * vertical-align:top neutralise le décalage de ligne de base que provoquent
 * les inline-block avec overflow:hidden (sinon le line-height « saute »).
 * Aucune marge/padding ajoutée : la hauteur des fragments = celle de la ligne,
 * donc le line-height de l'élément est conservé.
 */
.comm360-text .c360t-w,
.comm360-text .c360t-c,
.comm360-text .c360t-cw {
  display: inline-block;
  vertical-align: top;
}

.comm360-text .c360t-cw { white-space: nowrap; }

.comm360-text .c360t-wi,
.comm360-text .c360t-ci {
  display: inline-block;
  will-change: transform, opacity, filter;
}

/* Masque pour les effets de glissement. */
.comm360-text .is-mask { overflow: hidden; }

/* Conteneur de flux : rétablit un contexte bloc à white-space normal pour que
   les fragments inline-block se disposent comme du texte, même si l'élément
   parent est en Flexbox (cas des éléments atomiques Elementor V4). */
.comm360-text .c360t-flow {
  display: block;
  white-space: normal;
}

/* Surligneur : chaque ligne est un bloc inline (largeur = texte), avec une
   barre de couleur posée par-dessus qui se rétracte pour révéler le texte. */
.comm360-text .comm360-hl-line {
  display: inline-block;
  position: relative;
  margin: -0.055em 0;
}

.comm360-text .comm360-hl-bar {
  position: absolute;
  inset: -0.055em 0;
  z-index: 1;
  pointer-events: none;
}

@media (prefers-reduced-motion: reduce) {
  .comm360-text .is-mask { overflow: visible; }
  .comm360-text .c360t-wi,
  .comm360-text .c360t-ci {
    transform: none !important;
    opacity: 1 !important;
    filter: none !important;
  }
}
